Qu'est-ce que les délais
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 67 sur 90.
En Verilog, les delays contrôlent le moment où une instruction s'exécute ou lorsqu'un signal change. Ils sont utilisés pour modéliser le comportement temporel du matériel réel.
Pourquoi les délais sont nécessaires
Le matériel réel a besoin de temps pour que les signaux se propagent à travers les fils et les portes logiques. Les délais vous permettent de simuler ce comportement temporel.
- En simulation, sans délais, tout se produit au temps 0
- Les délais vous permettent d'espacer les événements dans le temps
- Ils aident à tester les conceptions sensibles au chronométrage comme les horloges et les machines d'état
Types de délais
| Type de délai | Objectif |
|---|---|
| Gate Delays | Délai à travers les portes logiques |
| Assignment Delays | Délai lors de l'assignation de valeurs |
| Timescale Directive | Définit les unités de temps pour la simulation |
Syntaxe de base
Un délai s'écrit avec un # suivi d'un nombre :
#10 clk = ~clk; // Attendre 10 unités de temps, puis basculer l'horloge
#5 a = b; // Attendre 5 unités de temps, puis assigner a = bLe nombre après # est le nombre de time units à attendre.
Exemple simple
initial begin
a = 0;
#10 a = 1; // Après 10 unités de temps, a devient 1
#5 a = 0; // Après encore 5 unités de temps, a devient 0
endChronologie :
- Time 0:
a = 0 - Time 10:
a = 1 - Time 15:
a = 0
Delays in Always Blocks
always #5 clk = ~clk; // Bascule l'horloge toutes les 5 unités de tempsCela crée un signal d'horloge continu (en supposant que clk a d'abord été initialisé à 0 dans un bloc initial — sinon ~x reste x).
Règles importantes
| Règle | Explication |
|---|---|
Symbole # | Marque un délai |
Nombre après # | Nombre d'unités de temps à attendre |
| Les délais sont cumulatifs | #10 puis #20 attend un total de 30 |
| Non synthétisable | Les délais sont uniquement pour la simulation |
Défi
Ce qu'il faut faire :
Ajoutez les délais manquants pour que ce code affiche les messages aux instants 0, 10, 25 et 40.
Essayez vous-même
module delay_challenge;
initial begin
$display("Time %0t: Start", $time);
// TODO: Ajouter un délai pour atteindre le temps 10
$display("Time %0t: After first delay", $time);
// TODO: Ajouter un délai pour atteindre le temps 25
$display("Time %0t: After second delay", $time);
// TODO: Ajouter un délai pour atteindre le temps 40
$display("Time %0t: End", $time);
$finish;
end
endmodule
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
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU13Temporisation et Délais
Qu'est-ce que les délaisDélais de porteDélais d'affectationDirective TimescaleGénération d'horlogeRécapitulatif - Contrôle de la temporisation2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états