Menu
Coddy logo textTech

Ritardi nei gate

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

Nella lezione precedente, abbiamo visto i ritardi generali, usati così: #10 a = b;. Aspettano prima di eseguire un'istruzione.

In questa lezione trattiamo i ritardi dei gate, specifici delle primitive gate integrate come and, or e not. Un ritardo del gate modella quanto tempo impiega un gate hardware a produrre un'uscita dopo che i suoi ingressi cambiano.

Nei componenti hardware reali, 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 una primitiva gate
ScopoAttendere prima di eseguireModellare il tempo di propagazione del gate

Sintassi:

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

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

Esempio semplice

and #5 (out, a, b);

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

Ritardo del gate 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)
Valore del ritardo in unità di tempoBasato sulla direttiva timescale
Tutti gli ingressi influiscono sull'uscitaQualsiasi modifica a un ingresso attiva 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