Menu
Coddy logo textTech

Délais de porte

Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 68 sur 90.

Dans la leçon précédente, nous avons abordé les délais généraux utilisés comme #10 a = b; — ils attendent avant d'exécuter une instruction.

Dans cette leçon, nous abordons les délais de porte, qui sont spécifiques aux primitives de porte intégrées comme and, or et not. Un délai de porte modélise le temps qu'une porte matérielle met pour produire une sortie après que ses entrées ont changé.

Dans le matériel réel, les portes ne répondent pas instantanément — il y a un léger délai. Lorsque vous utilisez des primitives de porte intégrées, vous pouvez ajouter un délai pour simuler le temps de propagation de la porte. La sortie ne change qu'après le délai spécifié.

Différence entre le délai général et le délai de porte

 Délai généralDélai de porte
Syntaxe#10 a = b;and #5 (out, a, b);
Position# avant une instruction# à l'intérieur d'une primitive de porte
ObjectifAttendre avant l'exécutionModéliser le temps de propagation de la porte

Syntaxe :

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

Le #(delay) spécifie le nombre d'unités de temps que la porte met pour répondre.

Exemple simple

and #5 (out, a, b);

Cette porte ET prend 5 unités de temps pour changer sa sortie après que a ou b change.

Délai de porte avec entrées multiples

nand #8 (out, a, b, c, d);   // NAND à 4 entrées avec un délai de 8 unités de temps

Règles importantes

RègleExplication
Le délai vient après le nom de la porteand #5 (out, a, b)
Valeur du délai en unités de tempsBasé sur la directive timescale
Toutes les entrées affectent la sortieTout changement d'entrée déclenche le délai
Non synthétisableLes délais de porte sont uniquement pour la simulation
challenge icon

Défi

Ajoutez les délais de porte manquants à ce module. Utilisez des délais différents pour chaque porte.

Ce qu'il faut faire :

  1. Porte AND : délai de 5 unités de temps
  2. Porte OR : délai de 3 unités de temps
  3. Porte NOT : délai de 2 unités de temps

Aide-mémoire

Les délais de porte modélisent le temps de propagation dans les primitives de porte intégrées.

Syntaxe :

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

Exemples :

and  #5 (out, a, b);         // porte ET, délai de 5 unités de temps
or   #3 (out, a, b);         // porte OU, délai de 3 unités de temps
not  #2 (out, a);            // porte NON, délai de 2 unités de temps
nand #8 (out, a, b, c, d);   // NAND à 4 entrées, délai de 8 unités de temps

Points clés :

  • # vient après le nom de la porte, avant la liste des ports
  • Tout changement d'entrée déclenche le délai avant la mise à jour de la sortie
  • Les délais de porte sont uniquement destinés à la simulation — non synthétisables

Essayez vous-même

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Ajouter une porte ET avec un délai de 5 unités de temps (entrées a, b)
  
  // TODO: Ajouter une porte OU avec un délai de 3 unités de temps (entrées a, b)
  
  // TODO: Ajouter une porte NON avec un délai de 2 unités de temps (entrée 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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux