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 generale | Ritardo del gate | |
|---|---|---|
| Sintassi | #10 a = b; | and #5 (out, a, b); |
| Posizione | # prima di un'istruzione | # all'interno di un gate primitivo |
| Scopo | Attendere prima dell'esecuzione | Modellare 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 tempoRegole importanti
| Regola | Spiegazione |
|---|---|
| Il ritardo viene dopo il nome della porta logica | and #5 (out, a, b) |
| Il valore del ritardo è espresso in unità di tempo | In base alla direttiva timescale |
| Tutti gli ingressi influiscono sull'uscita | Una variazione su qualsiasi ingresso può modificare l'uscita, ma solo dopo il ritardo |
| Non sintetizzabile | I ritardi delle porte logiche servono solo per la simulazione |
Sfida
Aggiungi i ritardi mancanti delle porte a questo modulo. Usa ritardi diversi per ciascuna porta.
Cosa fare:
- Porta AND: ritardo di 5 unità di tempo
- Porta OR: ritardo di 3 unità di tempo
- 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
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU13Tempi e ritardi
Cosa sono i ritardiRitardi nei gateRitardi nelle assegnazioniDirettiva timescaleGenerazione del clockRiepilogo - Controllo dei tempi5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online