Вопрос
Ниже приведен некоторый код ModelIm:
begin
tb_in_top = 0;
#5 tb_in_top = 4'b0000;#5 tb_in_top = 4'b0001;
#5 tb_in_top = 4'b0010;#5 tb_in_top = 4'b0011;
#5 tb_in_top = 4'b0100;#5 tb_in_top = 4'b0101;
#5 tb_in_top = 4'b0110;#5 tb_in_top = 4'b0111;
#5 tb_in_top = 4'b1000;#5 tb_in_top = 4'b1001;
#5 tb_in_top = 4'b1010;#5 tb_in_top = 4'b1011;
#5 tb_in_top = 4'b1100;#5 tb_in_top = 4'b1101;
#5 tb_in_top = 4'b1110;#5 tb_in_top = 4'b1111;
#100 $finish;
end
Что представляет # 5 и # 100? Эти номера линии? Есть что-то не так с этим кодом?
Решение
Это не код «Modelim». Это Верилог.
То #
токен означает задержку в наносекундах.
Так что означает этот код:
- При t = 0 установите tb_in_top на все 0.
- При t = 5 нс установите tb_in_top в 4-битное двоичное значение 0000.
- При t = 10 нс установите tb_in_top в 4-битное двоичное значение 0001.
- При t = 15 нс установите Tb_in_top в 4-битное двоичное значение 0010.
- При t = 20 нс установите tb_in_top в 4-битное двоичное значение 0011.
(... продолжайте подсчитывать, увеличивая TB_in_top на 1 каждые 5 нс ...)
- При t = 80 нс установите TB_in_top в 4-битное двоичное значение 1111.
- При t = 180 нс, закончите симуляцию.
Да, verilog имеет for
Петли, и да, это должно быть один.
Приложение
То for
петля будет выглядеть так:
integer index;
reg [3:0] tb_in_top;
begin
tb_in_top = 0;
for(index = 0; index < 16; index = index + 1)
begin
#5 tb_in_top = tb_in_top + 4'h1;
end
#100 $finish;
end
Наконец, обратите внимание, что Verilog, который использует #
операция задержки времени не может быть синтезирована для логики; Это может быть использовано только для моделирования.
Не связан с StackOverflow