Opérateurs de comparaison
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 21 sur 90.
Les opérateurs de comparaison comparent deux valeurs et renvoient soit 1 (vrai) soit 0 (faux).
Opérateurs de comparaison disponibles
| Opérateur | Signification |
|---|---|
== | Égal à |
!= | Différent de |
> | Supérieur à |
< | Inférieur à |
>= | Supérieur ou égal à |
<= | Inférieur ou égal à |
Exemple de code
module comparison_demo;
reg [3:0] a, b;
reg result;
initial begin
a = 5;
b = 3;
result = (a == b);
$display("5 == 3 : %d", result); // 0 (faux)
result = (a != b);
$display("5 != 3 : %d", result); // 1 (vrai)
result = (a > b);
$display("5 > 3 : %d", result); // 1 (vrai)
result = (a < b);
$display("5 < 3 : %d", result); // 0 (faux)
result = (a >= 5);
$display("5 >= 5 : %d", result); // 1 (vrai)
result = (a <= 3);
$display("5 <= 3 : %d", result); // 0 (faux)
$finish;
end
endmoduleSortie :
5 == 3 : 0
5 != 3 : 1
5 > 3 : 1
5 < 3 : 0
5 >= 5 : 1
5 <= 3 : 0Utilisation des comparaisons dans les conditions
Les comparaisons sont souvent utilisées dans les instructions if :
if (count == 10)
$display("Reached maximum");
if (value > threshold)
$display("Value is too high");Notes importantes
- Les résultats de comparaison sont des valeurs de 1 bit (0 ou 1)
- Les comparaisons fonctionnent avec n'importe quelle largeur de bits
- Soyez prudent avec
==et!=lorsque les signaux contiennent X ou Z (ils retourneront X)
Défi
Écrivez les expressions de comparaison correctes pour chaque tâche.
Ce qu'il faut faire :
- Vérifiez si
aest égal àbet stockez le résultat danseq - Vérifiez si
aest supérieur àbet stockez le résultat dansgt - Vérifiez si
aest inférieur ou égal àbet stockez le résultat dansle
Aide-mémoire
Les opérateurs de comparaison en Verilog comparent deux valeurs et renvoient 1 (vrai) ou 0 (faux).
| Opérateur | Signification |
|---|---|
== | Égal à |
!= | Différent de |
> | Supérieur à |
< | Inférieur à |
>= | Supérieur ou égal à |
<= | Inférieur ou égal à |
Les comparaisons sont couramment utilisées dans les instructions if :
if (count == 10)
$display("Reached maximum");
if (value > threshold)
$display("Value is too high");Remarque : Les résultats sont des valeurs de 1 bit. L'utilisation de == ou != avec des signaux contenant X ou Z renverra X.
Essayez vous-même
module comparison_challenge;
reg [3:0] a, b;
reg eq, gt, le;
initial begin
a = 4'd7;
b = 4'd7;
eq = ______; // a est égal à b
gt = ______; // a est supérieur à b
le = ______; // a est inférieur ou égal à b
$display("a = %d, b = %d", a, b);
$display("a == b : %d", eq);
$display("a > b : %d", gt);
$display("a <= b : %d", le);
$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