Pregunta

El siguiente es un código ModelSim:

 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

¿Qué significa el # 5 y # 100 representan? Son aquellos números de línea? ¿Hay algo malo con este código?

¿Fue útil?

Solución

No es código "ModelSim" más de lo que algo es "Visual Studio" código. Es Verilog .

El # contador significa un retraso en nanosegundos.

Entonces, ¿qué significa que el código es:

  • En t = 0, conjunto tb_in_top a los 0 de.
  • a T = 5 ns, juego de tb_in_top al valor binario de 4 bits 0000.
  • a T = 10 ns, juego de tb_in_top al valor binario de 4 bits 0001.
  • a T = 15 ns, juego de tb_in_top al valor binario de 4 bits 0010.
  • a T = 20 ns, juego de tb_in_top al valor binario de 4 bits 0011.

(... seguir contando hacia arriba, incrementando tb_in_top 1 por cada 5 ns ...)

  • a T = 80 ns, juego de tb_in_top al valor binario de 4 bits 1111.
  • A t = 180 ns, terminar la simulación.

Sí, Verilog tiene bucles for, y sí, que debe ser uno.

Addendum

El bucle for se vería así:

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

Finalmente, nota que Verilog que utiliza la operación # de retardo de tiempo no puede ser sintetizado a la lógica; que sólo puede ser utilizado para la simulación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top