Está en la página 1de 15

LABORATORIO IX

UN SIMPLE PROCESADOR

La figura 1 muestra un sistema digital simple que contiene un nmero de


registros de 9 bit, un multiplexor, una unidad sumadora/restadora y una unidad
de control (mquina de estado finito). El dato es ingresado a este sistema
mediante la entrada DIN de 9 bit, este dato puede ser cargado atreves del
multiplexor que maneja registros de 9 bit, adentro de varios registros como son
R0.R7 y A. el multiplexor tambin permite que los datos sean transferidos
desde un registro a otro, los cables de salida del multiplexor son comnmente
llamados BUS en la figura porque este trmino es frecuentemente usado para
el camino de comunicacin que permite mover el dato que se encuentre en el a
otra localizacin en el sistema.

La adicin o sustraccin es desarrollada usando el multiplexor poniendo


primero un numero de 9 bit en el BUS y moviendo este nmero al registro A.
cuando esto es hecho, el segundo bit es puesto en el BUS y el
sumador/restador desarrolla la opcin requerida para despus colocar el
resultado en el registro G. el dato en G puede ser transferido a uno de los otros
registros como sea requerido.
Figura. 1 Sistema digital

El sistema puede desarrollar diferentes operaciones en cada pulso de reloj, que


se rige por la unidad de control. Esta unidad determina cuando un dato
particular es puesto adentro del BUS y controla cuales registros son los que
sern cargados con este dato. Por ejemplo, si la unidad de control establece
las seales R0out y Ain, entonces el multiplexor tomara el contenido del
registro R0 lo pondr adentro del BUS y este dato ser cargado en el siguiente
ciclo de reloj en el registro A. un sistema como este es frecuentemente llamado
procesador. Este ejecuta operaciones especficas en forma de instrucciones.

La tabla 1 lista las instrucciones que el procesador debe manejar para este
ejercicio, la columna de la izquierda muestra el nombre de la instruccin y su
operador, el significado de la sintaxis RX <-[RY] es que el contenido del registro
RY es cargado al registro RX. La instruccin mv (move) permite que el dato
sea copiado desde un registro hacia otro. Para la instruccin mvi (move
inmediate) la expresin RX<-D indica que la constante de 9 bit D es cargada
dentro del registro RX.
Tabla 1 tabla de instrucciones de procesador

Cada instruccin puede ser codificada y guardada en un registro, para este


caso le llamaremos IR el cual tiene un ancho de 9 bit y el formato a usar es el
siguiente: IIIXXXYYY, donde III representa la instruccin, XXX proporciona el
registro RX y YYY el registro RY. A pesar que solo son necesarios 2 bit para
codificar las instrucciones, se estn usando 3 bit porque otras instrucciones
sern agregadas en las siguientes partes del ejercicio. Por lo tanto IR debe ser
conectado a los 9 bits del registro de entrada DIN como se indica en la figura 1.
Par la instruccin mvi el campo YYY no tiene significado, y el dato intermedio
#D tiene que ser suministrado en los 9 bit de entradas de DIN despus de la
instruccin mvi la palabra es guardada en el registro IR.

Algunas instrucciones, como la adiccin o sustraccin, toman ms que un ciclo


completo de reloj, porque mltiples transferencias deben de darse atreves del
BUS. La mquina de estado finito en la unidad de control pasa atreves de estas
instrucciones asegurando que las seales de control necesarias en los
sucesivos ciclos de reloj sean las adecuadas mientras la instruccin es
completada, el procesador inicia ejecutando la instruccin en la entrada DIN
cuando la seal RUN es afirmada y el procesador afirma con la salida DONE
cuando la instruccin es completada. La tabla 2 indica las seales de control
que deben ser establecidas en cada tiempo para implementar las instrucciones
en la tabla 1. Notar que la nica seal de control establecida en el tiempo 0 es
IRin, por lo tanto este tiempo no es mostrado en la tabla.
Tabla 2 seales de control establecidas en cada tiempo de instruccin

Parte I

Disee e implemente el procesador mostrado en la figura 1 usando un cdigo


VHDL como sigue:

1. Crear un nuevo proyecto de QUARTUS II para este ejercicio.


2. Crear el archivo VHDL requerido, incluir el archivo en el proyecto y
compilar el circuito. Un seudocdigo sugerido de este cogido VHDL es
mostrado en las partes a y b de la figura 2, y algunos entidades de
subcircuitos que pueden ser usadas en este cdigo aparecen en la figura
2c.
3. Use una simulacin para verificar que el cdigo es correcto, un ejemplo
de salida producida para un diseo correcto es mostrado en la figura 3.
Este muestra el valor (040) hexadecimal siendo cargado en el registro IR
desde DIN en el tiempo de 30ns, este patrn (los bit ms a la izquierda
de DIN son conectados a IR) representa la instruccin mvi R0, #D,
cuando el valor de D=5 es cargado en R0 en el borde del reloj a 50ns.
La simulacin muestra entonces la instruccin mv R1, R0 a 90ns, add
RO, R1 a 110 ns y sub R0, R0 a 190 ns. Notar que la salida de la
simulacin muestra DIN como un numero hexadecimal de 3 dgitos y
muestra el contenido de IR como un numero octal de 3 dgitos.
4. Crear un nuevo proyecto de QUARTUS II el cual ser usado para la
implementacin del circuito en la tarjeta DE0 de altera, este proyecto
debera consistir en una entidad de alto nivel que contiene las entradas
apropiadas u puertos de salidas de la tarjeta. Establecer su procesador
en esta entidad top level, usar los switch SW8..SW0 para manejar la
entrada DIN del procesador y usar el SW9 para manejar la entrada RUN,
tambin usar el botn KEY0 para un reset negado, y KEY para el reloj.
Conectar el BUS del procesador a los Led LEDG8...LEDG0 y conectar la
seal DONDE al LEDG9.
5. Agregar al proyecto la lista de pines necesarios para la tarjeta DE0,
compilar el circuito y descargar en la FPGA.
6. Probar la funcionalidad del diseo usando los switches y observando los
LEDS. observar el comportamiento del circuito es fcil usando la entrada
de reloj la cual permite ver el desarrollo de las instrucciones.

2 c a) Gua de cdigo VHDL para el procesador


2 cb) Gua de cdigo VHDL para el procesador
2 cc) Entidades de subcircuitos para ser usados en el procesador

Figura. 2 Simulacin del procesador

Cdigo VHDL parte I


Parte II

En esta parte se va a disear el circuito descrito en la figura 4, en el cual un


mdulo de memoria y un contador son conectados al procesador de la parte I,
el contador es usado para leer el contenido de sucesivas direcciones en
memoria, y este dato es proporcionado al procesador como una como una
instruccin de paso. Para simplificar el diseo y probar este circuito se usan
seales de reloj separadas, Pclock y Mclock para el procesador y la memoria.
Figura. 3 Conectando el procesador a una memoria y un contador

1. Crear un Nuevo proyecto de QUARTUS II que ser usado para probar


el circuito.
2. Generar una entidad de alto nivel VHDL que inicialice el procesador,
memoria y contador. Usar el QUARTUS II para crear un mdulo de
memoria desde la librera de altera de mdulos parametrizables
(LMPs). El modulo correcto LMP es encontrado dentro de la categora
de compilador de memoria y es llamada ROM: 1-PORT. Siga las
instrucciones provedas por el programa para crear una memoria que
tiene 9 bit de ancho de lectura y 32 palabras de profundidad. La
pgina 3 del men de ayuda es mostrada en la figura 5. Avanzar a la
pgina siguiente y deseleccionar la configuracin llamada q puerto
de salida debajo de la categora which ports should be registered.
Esta memoria tiene solo un puerto de lectura, y no tiene puerto de
escritura, este tipo de memoria es llamada memoria sncrona de solo
lectura (ROM sncrona). Notar que la memoria incluye un registro
para cargas sncronas de direcciones. Este registro es requerido junto
con el diseo de las fuentes de memoria en el Cyclone III FPGA.

Para poner las instrucciones del procesador dentro de la memoria, se


necesita especificar un valor inicial que debe ser guardado en
memoria una vez el circuito haya sido programado dentro del chip
FPGA. Esto puede ser realizado dicindole al asistente que inicialice la
memoria usando los contenidos de una memoria de inicializacin
(MIF). La ventana apropiada del MegaWizard Plug-In Manager tool
es mostrada en la figura 6. Aqu se ha especificado un archivo
llamado inst_mem.mif el cual ha sido creado en el directorio que
contiene el proyecto de QUARTUS II. Crear el archivo MIF (clic en
nuevo memory file).
3. Use una simulacion funcional para probar el circuito, asegrese que
el dato es ledo apropiadamente de la ROM y ejecutado por el
procesador.
4. Asegrese que el proyecto incluya los nombres de puertos necesarios
y localizaciones, asignaciones para implementar el circuito en la
tarjeta DE0. Usar SW9 para manejar el procesador con la entrada
RUN, use KEY0 para el RESETN, KEY1 para MClock, y use KEY2 para
PClock. Conectar el BUS del procesador a los LEDG8...LEDG0 Y la
seal Done a LEDG9.
5. Compilar el circuito y descargarlo en la FPGA.
6. Probar la funcionalidad del circuito usando los Switch y observando
los LEDs. Los pasos del circuito son controlables atreves de la entrada
de reloj por lo que es fcilmente realizable una observacin de la
ejecucin del circuito.

Figura. 4 configuracin ROM 1-PORT


Figura. 5 Especificando un archivo de inicializacin de memoria