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?

War es hilfreich?

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
scroll top