Diseño de Mux 4 a 1
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 una salida (out). Los dos bits de selección eligen qué entrada pasa a la salida:
- Cuando
sel = 2'b00, la salida esin0 - Cuando
sel = 2'b01, la salida esin1 - Cuando
sel = 2'b10, la salida esin2 - Cuando
sel = 2'b11, la salida esin3
Construirás este multiplexor de dos maneras: primero usando sentencias if-else, luego en la siguiente lección usando una sentencia case. Ambos métodos funcionan, pero case suele ser más limpio cuando tienes muchas opciones.
Un multiplexor de 4 a 1 selecciona una de cuatro entradas y la pasa a la salida basándose en 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, la salida sigue a in0. Cuando sel es 01, la salida sigue a in1. Cuando sel es 10, la salida sigue a in2. Cuando sel es 11, la salida sigue a in3.
Qué hacer:
- Crea un módulo llamado
mux4to1 - Añade la entrada
in0(1 bit) - Añade la entrada
in1(1 bit) - Añade la entrada
in2(1 bit) - Añade la entrada
in3(1 bit) - Añade la entrada
sel(2 bits) - Añade la salida
out(1 bit, tiporeg) - Añade un bloque
always @(*) - Dentro, añade una sentencia
if-elsecomprobandosel:- Si
sel == 2'b00, estableceout = in0 - Si no, si
sel == 2'b01, estableceout = in1 - Si no, si
sel == 2'b10, estableceout = in2 - Si no, establece
out = in3
- Si
- Cierra con
endmodule
Pruébalo tú mismo
// Paso 1: Crear el módulo llamado mux4to1
// Paso 2: Agregar entrada in0
// Paso 3: Agregar entrada in1
// Paso 4: Agregar entrada in2
// Paso 5: Agregar entrada in3
// Paso 6: Agregar entrada sel (2 bits)
// Paso 7: Agregar salida out (tipo reg)
// Paso 8: Agregar bloque always @(*)
// Paso 9: Agregar sentencia if-else
// si sel == 2'b00, out = in0
// si no, si sel == 2'b01, out = in1
// si no, si sel == 2'b10, out = in2
// si no, out = in3
// Paso 10: EndmoduleTodas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo