Directive Timescale
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 70 sur 90.
La directive timescale définit l'unité de temps et la précision de temps pour la simulation. Elle indique au simulateur comment interpréter les valeurs de délai comme #10.
Dans les leçons précédentes, nous avons utilisé des délais comme #10 sans spécifier ce que « 10 » signifie. S'agit-il de 10 nanosecondes ? 10 picosecondes ? La directive timescale répond à cette question.
Syntaxe :
`timescale time_unit / time_precision| Partie | Signification | Exemple |
|---|---|---|
time_unit | L'unité de base pour les délais | 1ns |
time_precision | Le degré de précision de la simulation | 1ps |
L'accent grave ` avant timescale signifie qu'il s'agit d'une directive de compilation.
Exemple
`timescale 1ns / 1pstime_unit = 1ns→#10signifie 10 nanosecondestime_precision = 1ps→ La simulation arrondit à la picoseconde la plus proche
Valeurs de timescale courantes
| Unité de temps | Précision | Cas d'utilisation |
|---|---|---|
1ns / 1ns | Nanoseconde | Simulations simples |
1ns / 1ps | Picoseconde | Plus précis |
1ps / 1ps | Picoseconde | Conceptions haute vitesse |
1us / 1ns | Microseconde | Simulations lentes |
Comment cela affecte les délais
`timescale 1ns / 1ps
initial begin
#10 a = 1; // Attend 10 nanosecondes
endSans timescale, certains simulateurs supposent une valeur par défaut (souvent 1ns). Il est préférable de toujours la spécifier.
Règles importantes
| Règle | Explication |
|---|---|
| Doit être en dehors des modules | Placé avant toute définition de module |
| Symbole d'accent grave (backtick) | `timescale et non 'timescale |
| Unité de temps ≥ précision de temps | 1ns / 1ps est correct, 1ps / 1ns ne l'est pas |
| Affecte tous les délais dans le fichier | Délais généraux, délais de porte, délais d'assignation |
Défi
À faire :
Ajoutez la directive timescale manquante pour que les délais représentent 10ns, 20ns et 30ns.
Aide-mémoire
La directive `timescale définit l'unité de temps et la précision temporelle pour la simulation. Elle doit être placée avant toute définition de module.
`timescale time_unit / time_precision`timescale 1ns / 1ps
initial begin
#10 a = 1; // Attend 10 nanosecondes
endtime_unit— l'unité de base pour les délais (ex. :#10= 10ns)time_precision— la précision avec laquelle la simulation arrondit (doit être ≤ à l'unité de temps)
| Échelle de temps | Cas d'utilisation |
|---|---|
1ns / 1ns | Simulations simples |
1ns / 1ps | Plus précis |
1ps / 1ps | Conceptions à haute vitesse |
1us / 1ns | Simulations lentes |
Essayez vous-même
// À FAIRE : Ajouter la directive d'échelle de temps (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$finish;
end
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'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