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 de reg, Verilog possède d’autres types de données numériques destinés à différentes utilisations.
Entier
integer est une variable à usage général qui sert aux comptages et aux calculs.
- La taille par défaut est de 32 bits
- Signé (peut stocker des nombres négatifs)
- Utilisé principalement dans les bancs d’essai et les boucles for
Déclarer un entier :
integer i; // Variable signée sur 32 bits
integer count; // Peut stocker des nombres négatifsUtilisation d’un entier :
integer i;
initial begin
i = 0; // Commence à 0
i = i + 1; // Incrémente
i = -5; // Peut stocker une valeur négative
$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 effectuer des 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 facilitent l’écriture et la compréhension du code de test.
En matériel : le type real n’est pas synthétisable, ce qui signifie qu’il ne peut pas être transformé en circuit réel. Le type integer peut être synthétisé et est souvent utilisé comme compteur de boucle, mais pour les signaux du matériel destiné à un FPGA ou à une puce, utilisez reg et wire.
Défi
Complète le code pour faire fonctionner le banc de test.
À faire :
- Déclare un entier appelé i (pour le compteur de boucle)
- Déclare un réel appelé value (pour le calcul)
Essayez vous-même
module test;
// Déclare un entier nommé i
// Déclare un nombre réel nommé 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