Frage
Hier finden Sie einige ModelSim Code:
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
Was bedeutet die # 5 und # 100 darstellen? Sind diese Zeilennummern? Gibt es etwas falsch mit diesem Code?
Lösung
Es ist nicht "ModelSim" Code nicht mehr als etwas "Visual Studio" -Code ist. Es ist Verilog .
Die #
Token bedeutet eine Verzögerung in ns.
Also, was dieser Code Mittel ist:
- Bei t = 0, Satz tb_in_top auf alle 0en.
- Bei t = 5 ns, Satz tb_in_top an die 4-Bit-Binärwert 0000.
- Bei t = 10 ns, Satz tb_in_top an den 4-Bit-Binärwert 0001.
- Bei t = 15 ns, Satz tb_in_top an den 4-Bit-Binärwert 0010.
- Bei t = 20 ns, Satz tb_in_top an den 4-Bit-Binärwert 0011.
(... halte Zählen, Erhöhen tb_in_top um 1 alle 5 ns ...)
- Bei t = 80 ns, Satz tb_in_top an den 4-Bit-Binärwert 1111.
- Bei t 180 ns =, um die Simulation beenden.
Ja, Verilog hat for
Schleifen und ja, das sollte man sein.
Nachtrag
Die for
Schleife würde wie folgt aussehen:
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
Schließlich ist zu beachten, dass Verilog, die den #
Zeitverzögerungsbetrieb verwendet, kann nicht auf Logik synthetisiert werden; es kann nur für die Simulation verwendet werden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow