Использование провода внутри всегда блока?

Могу ли я использовать провод внутри всегда блока? Например:

        wire [3:0]a;
        assign a=3;

        always @(c)
           begin
                d=a+c;
           end

Он был скомпилирован без каких-либо ошибок. Почему?


person aditya3524    schedule 28.02.2013    source источник


Ответы (1)


Да, вы можете использовать значение провода внутри всегда блока, вы просто не можете присвоить значение проводу в всегда или в начальном блоке.

Единственная реальная разница между wire и reg — это синтаксис для присвоения значений.

В приведенном выше примере d также мог быть создан как проводник, это эквивалентно:

reg [3:0] answer_reg;
always @* begin
  answer_reg = a + c;
end

wire [3:0] answer_wire;
assign answer_wire = a + c;
person Morgan    schedule 28.02.2013
comment
О каком оборудовании идет речь? Как и в приведенном выше примере, d — это сумматор, который получает один вход как c, а другой как «a», который является константой. Итак, будет ли «а» проводом, подключенным к Vdd и gnd, образуя 3? - person aditya3524; 28.02.2013
comment
Да, фактически, логика постоянного шаблона 4'b0011 может быть представлена ​​как GND GND VDD VDD. wire vs reg имеет очень мало общего с аппаратным обеспечением, на самом деле это оптимизация симулятора. - person Morgan; 28.02.2013