Визуальная электроника

Инструкции постоянного присваивания

Постоянные присваивания обслуживают связи (тип данных wire). Они представляют структурную связность системы [являются проводниками]. Они используются:

  • При моделировании трехстабильных буферов.
  • При моделировании комбинационных схем.
  • За пределами процедурных блоков (always и initial).
  • Превалируют над любыми присваиваниями в процедурах.
  • Левое значение оператора должно быть проводникового типа.

Синтаксис: assign (strength, strength) #(delay) net = expression;

Пример ­ однобитовый сумматор

Verilog Code:
  1. module adder_using_assign ();
  2. reg a, b;
  3. wire sum, carry;
  4.  
  5. assign #5 {carry,sum} = a+b;
  6.  
  7. initial begin
  8. $monitor (" A = %b B = %b CARRY = %b SUM = %b",a,b,carry,sum);
  9. #10 a = 0;
  10. b = 0;
  11. #10 a = 1;
  12. #10 b = 1;
  13. #10 a = 0;
  14. #10 b = 0;
  15. #10 $finish;
  16. end
  17.  
  18. endmodule

Пример ­ трехстабильный буфер

Verilog Code:
  1. module tri_buf_using_assign();
  2. reg data_in, enable;
  3. wire pad;
  4.  
  5. assign pad = (enable) ? data_in : 1'bz;
  6.  
  7. initial begin
  8. $monitor ("TIME = %g ENABLE = %b DATA : %b PAD %b",
  9. $time, enable, data_in, pad);
  10. #1 enable = 0;
  11. #1 data_in = 1;
  12. #1 enable = 1;
  13. #1 data_in = 0;
  14. #1 enable = 0;
  15. #1 $finish;
  16. end
  17.  
  18. endmodule