REPORTE DE CÓDIGO FASE 3: INSTRUCCIONES TIPO J - AlexDominguez18/MIPS_32_BITS GitHub Wiki

INSTRUCCIONES TIPO J

Esta tercer fase se centra en las instrucciones de tipo J, es decir, las instrucciones de bifurcación, mejor conocidas como salto, o "Jump" es por esto mismo que se les denomina "Instrucciones de tipo J".

¿Qué es una bifurcación?

Una bifurcación se puede ver como un salto incondicional, es decir, la instrucción obliga a la máquina a seguir siempre el salto. Para distinguir entre saltos condicionales e incondicionales, el nombre MIPS para este tipo de instrucción es jump.

instruccion j

La instrucción de bifurcación jump es de tipo J y su modo de direccionamiento es pseudo- directo.

Muchos lenguajes de programación tienen una sentencia alternativa case o switch, que permite al programador seleccionar entre las alternativas, dependiendo de un único valor.

Una forma de realizar switch es a través de una secuencia de pruebas condicionales, convirtiendo la sentencia switch en una cadena de sentencias if-then-else. Estas alternativas muchas veces son codificadas como una tabla de direcciones, llamada tabla de direcciones de saltos, para que el programa solo necesite acceder a la tabla y luego saltar a la secuencia adecuada.

Para permitir este tipo de funcion, MIPS incluye una instrucción denominada jump register (jr), que significa un salto incondicional a la dirección especificada en el registro.

instruccion jump


OBJETIVO

El objetivo de esta fase es lograr implementar los módulos del MIPS necesarios para poder llevar a cabo la ejecución de las instrucciones de Tipo J.

El modelo en el cual nos basaremos para llevar a cabo esta fase es la siguiente imagen: J

DESARROLLO

Shift Left 2

Este módulo ya se había agregado anteriormente, que hace un recorrimiento de dos bits a la izquierda, solo que en esta ocasión la entrada es de 26 bits y como salida 28 bits una vez hecho el recorrimiento.

Shift Left 2

Concatenación

Se concatenó la instrucción [27:0] y el PC + 4 [31_28] dentro del Buffer 2

Concatenación

Mux

Para esta fase también agregamos otro Mux el cuál tiene como señal del control Jump, que este indica si se va a realizar la instrucción J o no

Mux_Jump

Unidad de Control

Se agregó la instrucción J al Control en donde no importa lo que tenga en las señales, solo el Jump debe 1 para poder realizar esta instrucción.

Unidad de Control_J


Pruebas del funcionamiento de la tercera fase:

Una vez realizados los módulos necesarios para llevar a cabo la ejecución de las instrucciones tipo J. Se procedió a verificar que funcionara.

Se realizarán las siguientes 7 operaciones:

  • Addi $8, $0, #1337
  • J 12
  • Addi $8, $8, #-724
  • J 18
  • Addi $8, $8, #-7
  • J 6
  • Sw $8, $0,

Se esperan los siguientes resultados:

ResultadoFase3

RESULTADOS OBTENIDOS:

Se obtuvieron los siguientes resultados en la simulación wave

Resultado Fase 3 wave

Además de obtener la simulación esperada, se guardó correctamente el valor indicado en la memoria de datos.

Resultado Fase 3 Memoria