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.
Entier
integer est une variable polyvalente utilisée 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éclarer un entier :
integer i; // variable signée 32 bits
integer count; // Peut stocker des nombres négatifsUtilisation d’un entier :
integer i;
initial begin
i = 0; // Commence à 0
i = i + 1; // Compte vers le haut
i = -5; // Peut stocker des négatifs
$display("i = %d", i); // Affiche : i = -5
endRéel
real sert à représenter les nombres à virgule flottante (les nombres avec des décimales).
- Stocke des valeurs fractionnaires
- Utilisé dans les bancs de test pour les calculs
- Ne peut pas être synthétisé en matériel
Déclarer 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 de test : Les entiers et les nombres 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.
Dans le 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 de test.
À faire :
- Déclarez un entier appelé i (pour le compteur de boucle)
- Déclarez un réel appelé value (pour le calcul)
Essayez vous-même
module test;
// Déclare un entier appelé i
// Déclare 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 VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une 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 RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne