Bloc Initial
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 47 sur 90.
Le Verilog possède deux blocs procéduraux : initial (s'exécute une seule fois) et always (s'exécute en continu). Abordons maintenant le bloc initial.
Qu'est-ce qu'un bloc Initial ?
Le bloc initial s'exécute une seule fois au début de la simulation (temps 0). Lorsqu'il se termine, il ne s'exécute plus.
Il est principalement utilisé dans les bancs de test pour :
- Définir les valeurs initiales
- Générer des signaux de test
- Afficher des messages
- Démarrer la simulation
Syntaxe
initial begin
// Les instructions s'exécutent une seule fois, en séquence
endExemple de base
initial begin
$display("Simulation started");
$display("This runs once");
$finish;
endSortie :
Simulation started
This runs onceUtilisation du bloc initial pour les signaux de test
initial begin
a = 0;
#10 a = 1;
#10 a = 0;
#10 $finish;
endCeci modifie a aux instants : 0, 10 et 20.
Initial vs Always
initial | always | |
|---|---|---|
| Exécution | Une seule fois | En continu (indéfiniment) |
| Utilisation pour | Bancs de test, initialisation | Matériel (bascules, compteurs) |
| Synthétisable ? | Non (simulation uniquement) | Oui (avec liste de sensibilité) |
Notes importantes
- Les blocs
initialne sont pas synthétisables — ils ne peuvent pas être transformés en matériel - Utilisez
initialuniquement dans les testbenches - Sans
$finish, la simulation s'exécutera indéfiniment (aucune horloge pour l'arrêter)
Défi
Ajoutez le bloc initial manquant qui définit a à 0, puis après 10 unités de temps définit a à 1.
Ce qu'il faut faire :
- Ajoutez
initial beginetend - Définissez
a = 0 - Attendez
#10 - Définissez
a = 1 - Ajoutez $finish pour terminer la simulation
Aide-mémoire
Le bloc initial s'exécute une seule fois au temps de simulation 0. Utilisé uniquement dans les bancs d'essai (non synthétisable).
initial begin
a = 0; // défini au temps 0
#10 a = 1; // défini au temps 10
#10 a = 0; // défini au temps 20
$finish; // fin de la simulation
endSans $finish, la simulation s'exécute indéfiniment.
initial | always | |
|---|---|---|
| Exécutions | Une seule fois | En continu |
| Utilisation pour | Bancs d'essai | Matériel |
| Synthétisable ? | Non | Oui |
Essayez vous-même
module test;
reg a;
// À FAIRE : Ajouter un bloc initial ici
// Définir a = 0
// Attendre #10
// Définir a = 1
// Ajouter $finish; pour terminer la simulation
endmoduleCette 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'ALU2Types 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