Récapitulatif - Conception d'ALU
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 57 sur 90.
Défi
Une ALU (Arithmetic Logic Unit - Unité Arithmétique et Logique) est un circuit numérique qui prend deux entrées, effectue une opération sur celles-ci et produit une sortie. Elle réalise des opérations arithmétiques et logiques sur deux entrées en fonction d'un signal de sélection. Le signal select choisit une opération à exécuter.
Comment ça fonctionne
| select | Opération | Sortie |
|---|---|---|
2'b00 | Addition | a + b |
2'b01 | Soustraction | a - b |
2'b10 | ET bit à bit (Bitwise AND) | a & b |
2'b11 | OU bit à bit (Bitwise OR) | a | b |
Construisez une ALU simple en utilisant une instruction case.
Ce qu'il faut faire :
- Créez un module nommé
alu - Ajoutez les entrées :
a(4 bits),b(4 bits),select(2 bits) - Ajoutez la sortie :
result(4 bits, type reg) - Ajoutez un bloc
always @(*) - À l'intérieur, ajoutez une instruction
case (select) - Ajoutez quatre cas pour
2'b00,2'b01,2'b10,2'b11 - Ajoutez un cas
defaultpour définirresult = 0 - Terminez avec
endcaseetendmodule
Essayez vous-même
// TODO: Créer le module alu
// TODO: Ajouter les entrées (a, b, select)
// TODO: Ajouter la sortie (result)
// TODO: Ajouter le bloc always @(*)
// TODO: Ajouter case (select)
// TODO: Ajouter case 2'b00: result = a + b;
// TODO: Ajouter case 2'b01: result = a - b;
// TODO: Ajouter case 2'b10: result = a & b;
// TODO: Ajouter case 2'b11: result = a | b;
// TODO: Ajouter default: result = 0;
// TODO: Ajouter endcase
// TODO: Ajouter 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