Domanda

Il seguente è un codice 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

Che cosa significa il 5 # e # 100 rappresentano? Sono quei numeri di riga? C'è qualcosa di sbagliato in questo codice?

È stato utile?

Soluzione

Non è codice "ModelSim" più di quanto una cosa è il codice "Visual Studio". E ' Verilog .

Il # gettone significa un ritardo nella nanosecondi.

Quindi, che cosa questo significa codice è:

  • A t = 0, insieme a tutti i tb_in_top 0 di.
  • A t = 5 ns, insieme tb_in_top al valore binario a 4 bit 0000.
  • A t = 10 ns, insieme tb_in_top al valore binario a 4 bit 0001.
  • A t = 15 ns, insieme tb_in_top al valore binario a 4 bit 0010.
  • A t = 20 ns, insieme tb_in_top al valore binario a 4 bit 0011.

(... continuate a contare fino, incrementando tb_in_top da 1 ogni 5 ns ...)

  • A t = 80 ns, insieme tb_in_top al valore binario a 4 bit 1111.
  • A t = 180 ns, terminare la simulazione.

Sì, Verilog ha loop for, e sì, che dovrebbe essere uno.

Addendum

Il ciclo for sarà simile:

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

Infine, si noti che Verilog che utilizza l'operazione # di ritardo non può essere sintetizzato alla logica; può essere utilizzato solo per la simulazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top