Entiers et Réels
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 8 sur 90.
En plus de wire et reg, Verilog possède d'autres types de données pour les nombres avec des objectifs différents.
Integer
integer est une variable à usage général pour le comptage et les calculs.
- La taille par défaut est de 32 bits
- Signé (peut stocker des nombres négatifs)
- Utilisé principalement dans les bancs de test et les boucles for
Déclaration d'un entier :
integer i; // variable signée 32 bits
integer count; // Peut stocker des nombres négatifsUtilisation de integer :
integer i;
initial begin
i = 0; // Commence à 0
i = i + 1; // Incrémente
i = -5; // Peut stocker des valeurs négatives
$display("i = %d", i); // Affiche : i = -5
endRéel
real est destiné aux nombres à virgule flottante (nombres avec des décimales).
- Stocke des valeurs fractionnaires
- Utilisé dans les testbenches pour les calculs
- Ne peut pas être synthétisé vers le matériel
Déclaration d'un réel :
real pi; // Variable à virgule flottante
real voltage;Utilisation de real :
real pi;
initial begin
pi = 3.14159; // Valeur décimale
pi = 22.0 / 7.0; // Résultat de la division
$display("pi = %f", pi); // Affiche : pi = 3.142857
endOù les utiliser
Dans les bancs d'essai (testbenches) : Les entiers et les réels sont couramment utilisés pour les compteurs de boucles, les calculs et la vérification des valeurs attendues. Ils rendent le code de test plus facile à écrire et à comprendre.
En matériel : Ces types ne sont généralement pas synthétisables — ce qui signifie qu'ils ne peuvent pas être transformés en circuits réels. Pour le matériel destiné à un FPGA ou à une puce, utilisez plutôt reg et wire.
Défi
Complétez le code pour faire fonctionner le banc d'essai (testbench).
Ce qu'il faut faire :
- Déclarez un entier appelé i (pour le compteur de boucle)
- Déclarez un réel appelé value (pour le calcul)
Aide-mémoire
integer – variable signée 32 bits pour le comptage/les calculs (bancs d'essai, boucles) :
integer i;
integer count;
initial begin
i = 0;
i = i + 1;
i = -5; // can store negatives
endreal – variable à virgule flottante pour les valeurs fractionnaires (bancs d'essai uniquement, non synthétisable) :
real pi;
initial begin
pi = 3.14159;
pi = 22.0 / 7.0;
$display("pi = %f", pi);
endLes deux integer et real sont utilisés uniquement dans les bancs d'essai. Pour le matériel synthétisable, utilisez reg et wire.
Essayez vous-même
module test;
// Déclarer un entier appelé i
// Déclarer un réel appelé value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$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'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