Arquitectura MicroMIPS en VHDL: Guia Pràctica de Components, Señals i Processos

Español2,92 KB

Pràctica VHDL del MicroMIPS

1) Llibreria

2) ENTITY MicroMIPS IS PORT (DATOS ENUNCIADO: señales sin vector, poner reset y clock); END MicroMIPS; (poner el END COMPONENT después)

3) ARCHITECTURE PRACTICA OF MicroMIPS IS

3.1) Component ALUMIPS

PORT (op1, op2, ALUControl de entrada, Z sin vector)

3.2) Component REGMIPS

PORT (añadir clk, reset y we3, todas IN sin vector)

3.3) Component UNIDADCONTROL

PORT (solo poner vector donde haya números)

3.4) Señales (sin IN ni OUT)

BEGIN

4) Valor de OPCODE y FUNCT (con lo que sale de Memoria Instr)

OPCODE <= MEMPROGDATA(31 DOWNTO 26);
FUNCT <= MEMPROGDATA(5 DOWNTO 0);

4.1) Operación AND entre Z y BRANCH

4.2) Ciclos de reloj: PCAUX <= SALIDAPC + 4;

4.3) Operación BTA (desplazada 2 a la izquierda)

DespBTA <= ExtSign(29 DOWNTO 0) & "00";
BTA <= DespBTA + PCAux;

4.4) Dato que entra en la memoria de datos desde el banco de registros

MemDataDataWrite <= RD2;

5) Multiplexores

PROCESS (cables que intervienen para el 0-1, nombre multiplexor SIN MUX)
BEGIN
CASE MULTI_SIN_MUX IS
WHEN '0' => MUXMULTI <= CABLE_QUE_DA_EL_0;
END CASE;
END PROCESS;

6) Entrada a PC con el multiplexor correspondiente

ENTRADAPC <= MUX____;

6.1) Proceso PC

PROCESS (NRst, Clk) -- lleva rst porque es asíncrono
BEGIN
if NRst = '0' then -- Reset activo bajo (enunciado)
salidaPC <= (OTHERS => '0');
elsif rising_edge(Clk) then
salidaPC <= entradaPC;
end if;
END PROCESS;

6.2) Entrada a la memoria de instrucciones

MemProgAddr <= salidaPC;

6.3) Extensión de cero

extcero <= "0000000000000000" & MemProgData(15 DOWNTO 0);

6.4) Extensión de signo (con el 15:0)

ExtSign <= MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15) & MemProgData(15 DOWNTO 0);

7) Seguir con los multiplexores

7.1) Señal que habilita escribir en memoria (vienen encima de la memoria de datos)

MemDataWE <= MemWRITE;

7.2) Entrada en memoria

MemDataAddr <= ResOut;

8) Port maps (parecido a los components)

Regs: RegMIPS PORT MAP ( );

Componente del RegMIPS => a lo que se corresponden en el dibujo (we3 es el palito de arriba).

ALU: ALUMIPS PORT MAP ( );
res => resOut;

UC: UnidadControl PORT MAP ( );
opcode => OPCODE

extcero => multiplexor del ext cero, algo como ExtCero2

Descargar

PDF Word HTML