Menu
CoddyTech

Ritardi nei gate

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 68 di 90.

Nella lezione precedente abbiamo trattato i ritardi generali, usati come #10 a = b;. Attendeno prima di eseguire un'istruzione.

In questa lezione esaminiamo i ritardi delle porte, specifici delle primitive di porta integrate come and, or e not. Un ritardo di porta modella il tempo che una porta hardware impiega per produrre un’uscita dopo che i suoi ingressi cambiano.

Nell’hardware reale, le porte non rispondono istantaneamente. C’è un piccolo ritardo. Quando usi le primitive di porta integrate, puoi aggiungere un ritardo per simulare il tempo di propagazione della porta. L’uscita cambia solo dopo il ritardo specificato.

Differenza tra ritardo generale e ritardo del gate

 Ritardo generaleRitardo del gate
Sintassi#10 a = b;and #5 (out, a, b);
Posizione# prima di un'istruzione# all'interno di un gate primitivo
ScopoAttendere prima dell'esecuzioneModellare il tempo di propagazione del gate

Sintassi:

gate_type #(delay) (output, input1, input2, ...);

#(delay) specifica quante unità di tempo impiega la porta a rispondere.

Esempio semplice

and #5 (out, a, b);

Questa porta AND impiega 5 unità di tempo per modificare la propria uscita dopo una variazione di a o b.

Ritardo della porta con più ingressi

nand #8 (out, a, b, c, d);   // NAND a 4 ingressi con un ritardo di 8 unità di tempo

Regole importanti

RegolaSpiegazione
Il ritardo viene dopo il nome della porta logicaand #5 (out, a, b)
Il valore del ritardo è espresso in unità di tempoIn base alla direttiva timescale
Tutti gli ingressi influiscono sull'uscitaUna variazione su qualsiasi ingresso può modificare l'uscita, ma solo dopo il ritardo
Non sintetizzabileI ritardi delle porte logiche servono solo per la simulazione
challenge icon

Sfida

Aggiungi i ritardi mancanti delle porte a questo modulo. Usa ritardi diversi per ciascuna porta.

Cosa fare:

  1. Porta AND: ritardo di 5 unità di tempo
  2. Porta OR: ritardo di 3 unità di tempo
  3. Porta NOT: ritardo di 2 unità di tempo

Provalo tu

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Aggiungi una porta AND con un ritardo di 5 unità di tempo (ingressi a, b)
  
  // TODO: Aggiungi una porta OR con un ritardo di 3 unità di tempo (ingressi a, b)
  
  // TODO: Aggiungi una porta NOT con un ritardo di 2 unità di tempo (ingresso a)
  

  initial begin
    $monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b", 
              $time, a, b, and_out, or_out, not_out);
    
    a = 1; b = 1;
    #10 $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online