Repaso - Diseño de ALU
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 57 de 90.
Desafío
Una ALU (Unidad Aritmética y Lógica) es un circuito digital que recibe dos entradas, realiza una operación con ellas y produce una salida. Realiza operaciones aritméticas y lógicas sobre dos entradas según una señal de selección. La señal select elige una operación que ejecutar.
Cómo funciona
| select | Operación | Salida |
|---|---|---|
2'b00 | Suma | a + b |
2'b01 | Resta | a - b |
2'b10 | AND bit a bit | a & b |
2'b11 | OR bit a bit | a | b |
Construye una ALU sencilla usando una instrucción case.
Qué hacer:
- Crea un módulo llamado
alu - Añade las entradas:
a(4 bits),b(4 bits),select(2 bits) - Añade la salida:
result(4 bits, de tipo reg) - Añade un bloque
always @(*) - Dentro, añade una instrucción
case (select) - Añade cuatro casos para
2'b00,2'b01,2'b10,2'b11 - Añade un caso
defaultpara establecerresult = 0 - Cierra con
endcaseyendmodule
Pruébalo tú mismo
// TODO: Crear module alu
// TODO: Añadir inputs (a, b, select)
// TODO: Añadir output (result)
// TODO: Añadir bloque always @(*)
// TODO: Añadir case (select)
// TODO: Añadir case 2'b00: result = a + b;
// TODO: Añadir case 2'b01: result = a - b;
// TODO: Añadir case 2'b10: result = a & b;
// TODO: Añadir case 2'b11: result = a | b;
// TODO: Añadir default: result = 0;
// TODO: Añadir endcase
// TODO: Añadir endmoduleTodas las lecciones de Fundamentos
1Introducción
Qué es VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: 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 condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online