4 To 1 Mux Design
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 65 de 90.
Desafío
Multiplexor de 4 a 1
El multiplexor de 4 a 1 tiene cuatro entradas de datos (in0, in1, in2, in3), dos bits de selección (sel[1:0]) y un output (out). Los dos bits de selección eligen qué entrada pasa al output:
- Cuando
sel = 2'b00, el output esin0 - Cuando
sel = 2'b01, el output esin1 - Cuando
sel = 2'b10, el output esin2 - Cuando
sel = 2'b11, el output esin3
Construirás este multiplexor de dos maneras: primero usando instrucciones if-else y después, en la siguiente lección, usando una instrucción case. Ambos métodos funcionan, pero case suele ser más claro cuando tienes muchas opciones.
Un multiplexor de 4 a 1 selecciona una de cuatro entradas y la pasa al output según una señal de selección de 2 bits.
Tabla de verdad
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Cuando sel es 00, el output sigue a in0. Cuando sel es 01, el output sigue a in1. Cuando sel es 10, el output sigue a in2. Cuando sel es 11, el output sigue a in3.
Qué hacer:
- Create un módulo named
mux4to1 - Add input
in0(1 bit) - Add input
in1(1 bit) - Add input
in2(1 bit) - Add input
in3(1 bit) - Add input
sel(2 bits) - Add output
out(1 bit, typereg) - Add un bloque
always @(*) - Dentro, Add una instrucción
if-elseque compruebesel:- If
sel == 2'b00, estableceout = in0 - Else if
sel == 2'b01, estableceout = in1 - Else if
sel == 2'b10, estableceout = in2 - Else, establece
out = in3
- If
- Cierra con
endmodule
Pruébalo tú mismo
// Paso 1: Crear módulo llamado mux4to1
// Paso 2: Añadir entrada in0
// Paso 3: Añadir entrada in1
// Paso 4: Añadir entrada in2
// Paso 5: Añadir entrada in3
// Paso 6: Añadir entrada sel (2 bits)
// Paso 7: Añadir salida out (tipo reg)
// Paso 8: Añadir bloque always @(*)
// Paso 9: Añadir sentencia if-else
// si sel == 2'b00, out = in0
// else if sel == 2'b01, out = in1
// else if sel == 2'b10, out = in2
// else, out = in3
// Paso 10: EndmoduleTodas las lecciones de Fundamentos
1Introducción
Qué es VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operators 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 LogicPractica por tu cuenta: Compilador de Verilog online