Récapitulatif - Défi sur les opérateurs
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 29 sur 90.
Défi
Complétez le code en écrivant les expressions correctes pour chaque tâche. Ce défi couvre tous les opérateurs de ce chapitre.
Ce qu'il faut faire :
- Logique : Vérifiez si
value1etvalue2sont tous deux non nuls, et stockez le résultat danslogic_out - Réduction : Vérifiez si tous les bits de
vectorsont à 1, et stockez le résultat dansreduction_out - Décalage : Décalez
datavers la gauche de 2 bits, et stockez le résultat dansshift_out - Concaténation : Combinez
highetlowen une valeur de 8 bits, et stockez le résultat dansconcat_out - Conditionnel : Stockez la plus grande valeur entre `a` et `b` dans
cond_out
Essayez vous-même
module operator_challenge;
reg [3:0] value1, value2;
reg logic_out;
reg [3:0] vector;
reg reduction_out;
reg [7:0] data;
reg [7:0] shift_out;
reg [3:0] high, low;
reg [7:0] concat_out;
reg [3:0] a, b;
reg [3:0] cond_out;
initial begin
// Logique
value1 = 4'd6;
value2 = 4'd0;
logic_out = ______; // Vérifier si value1 et value2 sont tous deux non nuls
// Réduction
vector = 4'b1111;
reduction_out = ______; // Check if all bits of vector are 1
// Shift
data = 8'b00001111;
shift_out = ______; // Décaler data vers la gauche de 2 bits
// Concaténation
high = 4'b1010;
low = 4'b1100;
concat_out = ______; // Combiner high et low en une valeur de 8 bits
// Conditionnel
a = 4'd7;
b = 4'd12;
cond_out = ______; // Stocker la plus grande valeur entre `a` et `b`
$display("6 && 0 = %d", logic_out);
$display("&4'b1111 = %d", reduction_out);
$display("00001111 << 2 = %b", shift_out);
$display("{1010, 1100} = %b", concat_out);
$display("max(7, 12) = %d", cond_out);
$finish;
end
endmoduleToutes 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