Conception de décodeur
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 85 sur 90.
Défi
Un décodeur prend un nombre binaire en entrée et active exactement une sortie basée sur ce nombre. La sortie qui s'active est appelée "one-hot" car un seul bit est chaud (1), et tous les autres sont froids (0).
Table de Vérité (Décodeur 2-vers-4)
| Entrée (in) | out0 | out1 | out2 | out3 |
|---|---|---|---|---|
| 00 | 1 | 0 | 0 | 0 |
| 01 | 0 | 1 | 0 | 0 |
| 10 | 0 | 0 | 1 | 0 |
| 11 | 0 | 0 | 0 | 1 |
Interface du Module
| Port | Direction | Largeur | Description |
|---|---|---|---|
in | input | 2 bits | Entrée binaire (0 à 3) |
out0 | output | 1 bit | Actif quand in = 00 |
out1 | output | 1 bit | Actif quand in = 01 |
out2 | output | 1 bit | Actif quand in = 10 |
out3 | output | 1 bit | Actif quand in = 11 |
Votre tâche est de compléter le module ci-dessous en utilisant une instruction case.
Ce qu'il faut faire :
- Quand
in = 2'b00,out0 = 1, tous les autres à 0 - Quand
in = 2'b01,out1 = 1, tous les autres à 0 - Quand
in = 2'b10,out2 = 1, tous les autres à 0 - Quand
in = 2'b11,out3 = 1, tous les autres à 0
Essayez vous-même
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: Ajouter un bloc always @(*) avec case (in)
// 2'b00: out0=1, les autres 0
// 2'b01: out1=1, les autres 0
// 2'b10: out2=1, les autres 0
// 2'b11: out3=1, les autres 0
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