Menu
Coddy logo textTech

Diseño de Mux 4 a 1

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 65 de 90.

challenge icon

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 es in0
  • Cuando sel = 2'b01, la salida es in1
  • Cuando sel = 2'b10, la salida es in2
  • Cuando sel = 2'b11, la salida es in3

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

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = 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:

  1. Crea un módulo llamado mux4to1
  2. Añade la entrada in0 (1 bit)
  3. Añade la entrada in1 (1 bit)
  4. Añade la entrada in2 (1 bit)
  5. Añade la entrada in3 (1 bit)
  6. Añade la entrada sel (2 bits)
  7. Añade la salida out (1 bit, tipo reg)
  8. Añade un bloque always @(*)
  9. Dentro, añade una sentencia if-else comprobando sel:
    • Si sel == 2'b00, establece out = in0
    • Si no, si sel == 2'b01, establece out = in1
    • Si no, si sel == 2'b10, establece out = in2
    • Si no, establece out = in3
  10. 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: Endmodule

Todas las lecciones de Fundamentos