модельный исходный код - PullRequest
       11

модельный исходный код

1 голос
/ 11 сентября 2010

Ниже приведен код некоторых моделей:

 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? Это номера строк? Что-то не так с этим кодом?

1 Ответ

8 голосов
/ 11 сентября 2010

Это не код "ModelSim", как код Visual Studio. Это Verilog .

Маркер # означает задержку в наносекундах.

Итак, что означает этот код:

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

...