Вопрос

Ниже приведен некоторый код 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, который использует # операция задержки времени не может быть синтезирована для логики; Это может быть использовано только для моделирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top