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?
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