4 To 1 Mux Design
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 65 sur 90.
Défi
Multiplexeur 4 vers 1
Le multiplexeur 4 vers 1 possède quatre entrées de données (in0, in1, in2, in3), deux bits de sélection (sel[1:0]) et une sortie (out). Les deux bits de sélection choisissent quelle entrée est transmise à la sortie :
- Lorsque
sel = 2'b00, la sortie estin0 - Lorsque
sel = 2'b01, la sortie estin1 - Lorsque
sel = 2'b10, la sortie estin2 - Lorsque
sel = 2'b11, la sortie estin3
Tu vas construire ce multiplexeur de deux façons : d’abord à l’aide d’instructions if-else, puis dans la leçon suivante à l’aide d’une instruction case. Les deux méthodes fonctionnent, mais case est souvent plus claire lorsque tu as de nombreux choix.
Un multiplexeur 4 vers 1 sélectionne l’une des quatre entrées et la transmet à la sortie en fonction d’un signal de sélection de 2 bits.
Table de vérité
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Lorsque sel vaut 00, la sortie suit in0. Lorsque sel vaut 01, la sortie suit in1. Lorsque sel vaut 10, la sortie suit in2. Lorsque sel vaut 11, la sortie suit in3.
À faire :
- Create un module nommé
mux4to1 - Add l’entrée
in0(1 bit) - Add l’entrée
in1(1 bit) - Add l’entrée
in2(1 bit) - Add l’entrée
in3(1 bit) - Add l’entrée
sel(2 bits) - Add la sortie
out(1 bit, typereg) - Add un bloc
always @(*) - À l’intérieur, Add une instruction
if-elsequi vérifiesel:- If
sel == 2'b00, définirout = in0 - Else if
sel == 2'b01, définirout = in1 - Else if
sel == 2'b10, définirout = in2 - Else, définir
out = in3
- If
- Terminer avec
endmodule
Essayez vous-même
// Étape 1 : Créer le module nommé mux4to1
// Étape 2 : Ajouter l'entrée in0
// Étape 3 : Ajouter l'entrée in1
// Étape 4 : Ajouter l'entrée in2
// Étape 5 : Ajouter l'entrée in3
// Étape 6 : Ajouter l'entrée sel (2 bits)
// Étape 7 : Ajouter la sortie out (type reg)
// Étape 8 : Ajouter le bloc always @(*)
// Étape 9 : Ajouter l'instruction if-else
// si sel == 2'b00, out = in0
// sinon si sel == 2'b01, out = in1
// sinon si sel == 2'b10, out = in2
// sinon, out = in3
// Étape 10 : EndmoduleToutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne