Práctica 5 · Unidad de Control: decodificación de instrucciones
viernes 23 de octubre · 16:00–17:40 · en 62 días
GUÍA 23-10-26 Laboratorio de Arquitecturas Computacionales
LA116 · viernes 23/10/2026 · 16:00-17:40 · Sesión 11
Práctica 5 · Unidad de Control: decodificación de instrucciones
OBJETIVO DE LA PRÁCTICA
Descripción en Verilog de la Unidad de Control de un procesador RISC-V de 32 bits.
LOS CAMPOS DE LA INSTRUCCIÓN
- opcode: bits 6 a 0 — identifica la familia de la instrucción.
- rd: bits 11 a 7 — registro destino.
- funct3: bits 14 a 12 — refina la operación.
- rs1: bits 19 a 15 — primer registro fuente.
- rs2: bits 24 a 20 — segundo registro fuente.
- funct7: bits 31 a 25 — distingue, por ejemplo, ADD de SUB.
LA REGULARIDAD QUE IMPORTA
rs1, rs2 y rd ocupan siempre las mismas posiciones en todos los formatos. Eso permite leer el banco de registros en paralelo con la decodificación, sin esperar a saber qué instrucción es. Es una decisión de diseño del repertorio con consecuencia directa en el hardware.
GENERACIÓN DEL INMEDIATO
Cada formato arma el inmediato con bits en posiciones distintas y todos extienden el signo a 32 bits.
- Tipo I: bits 31 a 20.
- Tipo S: bits 31 a 25 y 11 a 7 concatenados.
- Tipo B: bits reordenados, con el bit 0 implícito en cero.
- Tipo U: bits 31 a 12 en la parte alta, ceros abajo.
- Tipo J: bits reordenados, con el bit 0 implícito en cero.
El reordenamiento de B y J parece arbitrario y no lo es: está diseñado para que el mayor número de bits del inmediato caiga siempre en la misma posición, lo que reduce el hardware del generador. Vale la pena tabular los cinco formatos antes de escribir el código.
ESTRUCTURA DEL DECODIFICADOR
Un always @(*) con case sobre opcode que fija todas las señales de control. Asignar valores por defecto al inicio del bloque y luego sobrescribir: así ninguna ruta deja señales sin asignar y no se infieren latches.
PARA LA PRÓXIMA SESIÓN
Las señales de control completas y la entrega de la Práctica 5.
Nada anotado en esta sesión todavía.