Herramientas Personales

Modulo 4 y notas adicionales

por Ruiz de Clavijo, Paulino Última modificación 01/02/2011 14:09

Diseño de la unidad de control de Micro6. La unidad de control realiza 3 operaciones

  1. Búsqueda de la instrucción en memoria: Fetch.
  2. Decodificación de la instrucción
  3. Control de la ejecución de las instrucción: Execute

Micro6 tiene una arquitectura pipeline de dos fases: FETCH – (DEC Y EXEC). Para evitar problemas de dependencia en pipeline con la instrucción de salto se utiliza un protocolo handshake entre la parte de control y de fetch

Módulo 4a

Diseño del módulo de decodificación de la instrucción.

Cada instrucción de 32 bits es separada en campos de operación según el formato de instrucción. Se implementa como un bloque combinacional mediante una función VHDL.

Recursos:

Notas adicionales

  • Solo se completa un fichero de package donde se define una función para la decodificación que va a ser incluida dentro del código control.vhd que se diseña en el módulo 4b
  • ERROR EN EL DOCUMENTO:  AUNQUE EN EL PDF DEL MÓDULO 4A INDIQUE QUE memAddr es de tamaño 16 bits (15:0) REALMENTE ES DE TAMAÑO 12 (11:0)
  • IMPORTANTE: en el case_1 hay que incluir el valor de cFen e instructgroup para todas las instrucciones según una tabla que aparece al comenzar el case. En el código ya aparecen las instrucciones que son de tipo tanto de tipo G1 como de tipo G2 según el valor de storec y nosotros tenemos que incluir el resto. Es importante tener en cuenta que existen un conjunto de instrucciones de tipo G2 (INC,DEC,NOT,ZRO,CPR) que tenemos que incluir y que suelen pasar desapercibidas.

Módulo 4b

En este módulo se diseña el bloque principal de la unidad de control. El diseño del bloque de control de la ejecución de las instrucciones se implementa como una máquina de estados de Moore. Se van activando las señales de control adecuadas de la ruta de datos para la correcta ejecución de cada una de las instrucciones. Incluye:

  1. El bloque de decodificación mediante la función desarrollada en el módulo anterior.
  2. El bloque de chequeo de la condición de salto
  3. La máquina de estados compleja en la que el proceso de diseño consiste en descomponer en microoperaciones todas y cada una de las instrucciones
Ejemplo de instrucción:
ADD Ra,Rb,Rc	Rc←Ra+Rb
Microoperaciones Estado Señales de control
ACC ← Ra+Rb G2s1 ACCen, ALUsel=ADD
Rc ← ACC G2s2 RegFileWr, DATAsel=ACC

Recursos:

Notas adicionales

  • La FSM no habrá que diseñarla. Ya esta implementada en el código control.vhd
  • Hay que incluir y diseñar:
    • El bloque de decodificación (incluyendo la función creada en el módulo 4a)
    • El circuito de chequeo de condición de salto, puede implementarse tal y como comenta el documento PDF del módulo 4b, mediante un circuito combinacional a nivel de puertas o bien describiendo el comportamiento del bloque mediante un proceso.
  • HAY ERRORES EN EL CÓDIGO: El alias “cmask” se obtiene de l a instrucción en los bits que van del 6 al 1 y no del 26 al 21

Módulo 4c

En este módulo se diseña el bloque de búsqueda de la instrucción en memoria (FETCH) que es una máquina de estados con 3 estados:

  • Idle: Espera la activación de readInstr (mantiene vldInstr activa)
  • Read_memory: activas las señales para leer la instrucción de la memoria y la almacena en un registro interno. También mantiene desactivado vldInstr para indicarle al módulo control que no se ha completado aun la lectura.
  • Incrementa PC: para apuntar a la siguiente instrucción. También se activa vldInstr para indicarle al módulo de control que se ha completado el proceso de lectura de la memoria

Recursos:

Notas adicionales

  • En el documento PDF se menciona que el código control.vhd que se necesita para realizar la simulación incluye algún código extra para facilitar el debug del diseño de FETCH.
  • Sin embargo, el código que se va a usar es el que hemos generado nosotros mismos en el módulo 4b que no incluye este código extra.
Acciones de Documento