Você está na página 1de 16

DISEO DE UN MICROPROCESADOR EN VHDL

ADIEL ARGUELLES PADILA LUIS F. HUERTAS SANCHEZ JUAN DAVID CANTILLO LIZANYURI QUINTERO SILVA

DOCENTE: ING. JIOVANI SALAS JIMENEZ

UNIVERSIDAD DEL MAGDALENA FACULTAD DE INGENIERIA PROGRAMA DE INGENIERIA ELECTRONICA

SANTA MARTA D.T.C.H SEPTIEMBRE DE 2013

RESUMEN

Este laboratorio se realiz con el fin de implementar el leguaje VHDL en el diseo de un microprocesador, memorias, ALU. Teniendo en cuenta el lenguaje VHDL para formar un diseo de hardware integrado con funciones similares a las de un microcontrolador, adems poder hacer este diseo sintetizable para poder ser probado en una FPGA dependiendo de las instrucciones asignadas ser el lmite de uso de este diseo.

INTRODUCCION A medida en que el tiempo va pasando la tecnologa avanza, en este caso se trata de la parte esencial de la gran mayora de los avances el microprocesador el cual es el circuito integrado central y ms complejo de un sistema informtico para el funcionamiento de este, se vale de distintos recursos como lo son memorias ya sea de datos (RAM) o de programa (ROM), adems de contadores, ALU, entre otros todo esto unido forma un sistema de procesamiento de instrucciones segn sea el uso requerido.

OBJETIVO GENERAL

Disear e implementar lenguaje VHDL en un microprocesador que tuviese como entradas instrucciones de 14 bits que fuese capaz de realizar 16 instrucciones de manera sencilla.

OBJETIVOS ESPEIFICOS

Poder controlar de manera precisa la informacin dada por la instruccin que entra al microprocesador Lograr implementar los conocimientos de circuitos secuenciales y combinacionales para poder realizar el diseo de todos los elementos de lo que consta el microprocesador. Manejar los datos de tal manera que se usen para poder realizar procesos complejos con las instrucciones proporcionadas.

MARCO TEORICO

ALU La unidad aritmtico lgica, tambin conocida como ALU, es un circuito digital que calcula operaciones aritmticas (como suma, resta, multiplicacin, etc.) y operaciones lgicas (si, y, o, no), entre dos nmeros. REGISTROS Es una memoria de alta velocidad y poca capacidad, integrada en el microprocesador, que permite guardar transitoriamente y acceder a valores muy usados, generalmente en operaciones matemticas. CONTADOR DE PROGRAMA Parte del secuenciador de instrucciones en algunas computadoras, es un registro del procesador de un computador que indica la posicin donde est el procesador en su secuencia de instrucciones. MEMORIA DE PROGRAMA Memoria de programa se almacenen todas las instrucciones del programa de control. Como ste siempre es el mismo, debe estar grabado de forma permanente. MEMORA DE DATOS Los datos que manejas los programas varan continuamente, y esto exige que la memoria que los contiene debe ser de lectura y escritura, por lo que la memoria RAM esttica (SRAM) es la ms adecuada, aunque sea voltil. PILA Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. INSTRUCCIONES En arquitectura computacional, RISC (del ingls Reduced Instruction Set Computer, en espaol Computador con Conjunto de Instrucciones Reducidas) es un tipo de diseo de CPU generalmente utilizado en microprocesadores o microcontroladores con las siguientes caractersticas fundamentales: 1. Instrucciones de tamao fijo y presentado en un reducido nmero de formatos. 2. Slo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

Descripcin del Diseo

Este diseo de un microprocesador consta de varias partes esenciales la A.L.U (Unidad Aritmtico Lgica), Unidad de control, Registros. Por otra parte se incluyen tambin varios componentes adicionales a este laboratorio como memoria de programa, contador de programa, stack-pointer, memoria de datos, pila. Este conjunto de componentes corresponde ms a la estructura de un microcontrolador, va a ser basado en lenguaje VHDL, implementado en Xilinx ISE basndose en el diagrama de bloques Fig.1 se tiene en cuenta cada bloque funcional.

Fig.1

Para la descripcin de diseo se debe tener presente las siguientes pautas: Todos los registros de datos deben ser de 8 bits. El conjunto de instrucciones debe ser mnimo de 16 instrucciones (tipo RISC). La memoria de programas consta de palabras de 14 bits. Siempre que dos componentes intenten escribir al bus compartido deben hacerlo a travs de un buffer tri-state o un multiplexor. Los datos de entrada son almacenados en el registro temporal ENTRADA despus de que el usuario presione un interruptor que funciona como ENTER. El reloj del Micros y de la mquina de estados es de 50MHz. El banco de registros tiene la lnea de habilitacin de escritura y lectura compartida para los cuatro registros, la seleccin del registro se hace por medio de la direccin.

Adems de las pautas se tiene como gua 16 instrucciones tipo RISC las cuales son los lmites de lo que podr realizar nuestro microprocesador:
CONJUNTO DE INSTRUCCIONES GRUPO 3 Y GRUPO 4
CDIGO

operacin

Indicadores a los que afectan

ADD SUB AND XOR DEC INV SRL SRR LDA LDB CLR SPC JMP BRNZ BRC BRV

0100 0101 0110 0111 0000 0001 0010 0011 1000 1001 1010 1011 1100 1101 1110 1111

A+B AB A "y" B A "o" B A-1

Z (resultado nulo), C (acarreo) y V (desbordamiento) Z (resultado nulo), C (acarreo) y V (desbordamiento) Z (resultado nulo) Z (resultado nulo) Z (resultado nulo) Z (resultado nulo) Z (resultado nulo), C (acarreo) Z (resultado nulo), C (acarreo) No afectan a ninguno No afectan a ninguno C (acarreo) No afectan a ninguno Ninguno Ninguno Ninguno Ninguno

A
A A memoria (DIR) A memoria (DIR) B 0 memoria (DIR); 0 B; 0 C PC + 2 memoria (DIR) DIR DIR DIR DIR

PC (incondicional) PC si N = 0 PC si C = 1 PC si V = 1

Componentes del Microcontrolador

Unidad de Control: Esta parte del microcontrolador es la ms importante, dado a que en esta seccin es donde se procesan las instrucciones que entrega la memoria de programa Fig.2

Fig.2

La unidad de control toma el cdigo de la instruccin y lo procesa dependiendo lo que la misma indique teniendo asi las siguientes salidas: T: Seleccionador de operacin de la A.L.U de 3bits. E_R.E: Habilitador de los registros especficos. E: Habilitador de la pila EPC-2: Habilitador de la suma de la direccin de programa ms 2. DIR: La direccin de los registros de la memoria de datos de 4 bits. W/R: Seleccionador del estado de los registros ya sea lectura o escritura. S: Seleccionador del multiplexor de la entrada de la carga paralela del contador de programa. SALT: Direccin de la instruccin al presentarse un salto es de 5 bits. EP_C: Habilitador del contador de programa. La unidad de control tambin presenta unas entradas: INST_P: Cdigo de la instruccin de 14 bits. CLR: Limpiar. c, z, v: Bit bandera indicadores de las operaciones de las A.L.U. Las tareas de la unidad de control son dependientes de la instruccin, segn sea variaran las salidas. Para cada instruccin se tiene la Tab.1 que indica los bits que se activan. INST ADD SUB AND XOR DEC INV SRL SRR LDA LDB CLR SPC JMP BRNZ BRC VARIABLES Representa A+B los bits que controla es (T, W/R, DIR) Representa A-B los bits que controla es (T, W/R, DIR) Representa A AND B los bits que controla es (T, W/R, DIR) Representa A XOR B los bits que controla es (T, W/R, DIR) Representa A-1 los bits que controla es (T, W/R, DIR) Representa NOT(A) los bits que controla es (T, W/R, DIR) Representa A los bits que controla es (T, W/R, DIR) Representa A los bits que controla es (T, W/R, DIR) Representa carga de un numero al registro A los bits que controla ( W/R, DIR, E_R.E) Representa carga de un numero al registro B los bits que controla ( W/R, DIR, E_R.E) Representa la limpieza de un registro los bits que controla son (CLR, DIR) Da la orden de saltarse dos instrucciones controla los bits(E, S) Da la orden de un salto hacia cualquier direccin de una instruccin los bits que controla (S,SALT,E) Da la orden de salto siempre y cuando el bit de entrada Z sea 0 los bits que controla (SALT,E,EP_C) Da la orden de salto siempre y cuando el bit de entrada C sea 1 los bits

BRV

que controla (SALT,E,EP_C) Da la orden de salto siempre y cuando el bit de entrada V sea 1 los bits que controla (SALT,E,EP_C)

A.L.U (UNIDAD ARITMETICO LOGICA)

Es el sistema que se encarga de las operaciones entre registros, como lo son operaciones aritmticas y lgicas Fig.3.

Fig.3 La ALU consta internamente de un multiplexor que escoge la salida de la operacin seleccionada dada por el bit de entrada T, adems cuenta con bloques de suma, resta, decremento en 1, operaciones lgicas como AND, XOR, INV y de corrimiento a la derecha y a la izquierda en proporciones de bits. Adems cuenta con unos registros banderas c, v, z bits de estadolos cuales indican Tab.2.

BITS c v z

Descripcin El bit de estado c toma valor de 1 cuando la operacin de la ALU genera un acarreo El bit de estado v toma valor de 1 cuando la operacin de la ALU genera un desbordamiento en el resultado El bit de estado z toma valor de 1 cuando el resultado de la operacin en la ALU es 0 Tab.2

Segn el seleccionador de operacin T se tiene que Tab.3 T 0100 0101 0110 0111 OPERACION ADD-SUMA SUB-RESTA AND XOR

0000 0001 0010 0011 Tab.3 MEMORIA DE PROGRAMA

DEC INV SRL SRR

En este bloque Fig.4 es donde se aloja el conjunto de instrucciones las cuales forman el programa a ejecutar por el microprocesador.

Fig.4 Dichas instrucciones constan de palabras de 14 bits lo cual este bloque solo tendr una entrada la cual ser la salida del contador de programa. En nuestro diseo Fig.4 este bloque cuenta internamente con el stack pointer y registros de 14 bits que son habilitados con un Enable que en esencia es el decodificador es decir el stack pointer.

Fig.4

MEMORIA DE DATOS En este bloque se almacenan los datos a ser asignado a las variables dado en que en nuestras condiciones de diseo no se cuenta con herramientas perifricas como teclados

u otros dispositivos Fig.5. Este bloque cuenta con un bus de datos de entrada D1, tambin con un bus de datos de salida D2, adems con un bus de direcciones DIR una entrada de borrado y uno de escritura y lectura W/R.

Fig.5 El modo de funcionamiento es similar al de la memoria de programa con la diferencia que en este si se tendr en cuenta la entrada de datos y la entrada de escritura y lectura Fig.6.

Fig.6.

PILA

Este bloque Fig.7es muy importante l momento de presentarse una instruccin de salto de tal modo que al presentarse este, se guarda la direccin de la instruccin que le sigue y al terminar dicha subrutina o el programa ella saca el primer valor guardado Pila en Hardware Aunque podra ser costoso en cuanto a recursos, este diseo nos permite obtener los llamados a subrutinas a mayor velocidad y diseo, en comparacin que una pila diseada en software. Cuando usamos la implementacin en hardware todas las posiciones de la pila se convierten en un contador de programa.

Pila en Software Para implementar una pila mediante software, tomamos una seccin de la memoria principal del sistema, pasa asi destinarla al uso de la pila. Implementando la pila mediante software podemos obtener un gran tamao, ya que los recursos en la memoria principal suelen ser grandes. El acceso a la pila en lectura y escritura puede ser lento, debido a que la memoria principal tiene un tiempo de acceso muy grande.

Las seales de control de la PILA implementada por nosotros constan de: Dos buses de datos en el cual se pone la direccin a la cual deber saltar el procesador, o cuando se ejecutan brincos condicionales o incondicionales en el programa. Un bus de salida, por el cual sale la direccin del contador de programa, el cual es dirigido por el registro PC+2 hacia la memoria del programa. Y asi leer la siguiente instruccin a ejecutar.

Fig.7

Contador de Programa El contador diseado, es en esencia un contador de 5 bits Fig.8 con una entrada de carga paralela (C_P) la cual es activada con un enable (E_P_C) que deja pasar lo que se encuentra en la carga paralela, la salida de este bloque es el nmero de direccin que entra en la memoria de programa.

Fig.8

REGISTROS ESPECIFICOS

Estos registros Fig.9 son los de uso constante dado a que toda operacin con la ALU deben primero poder guardarse ah y luego ser utilizados. Adems tienen un funcionamiento similar a las memorias de datos y de programa, consta de una entrada de datos, una entrada de direccin y dos salidas de datos, dependiendo la direccin se guardaran datos en un registro A o B dado a que comparten la entrada de datos.

Fig.9

SUGERENCIAS

Para poder seguir desarrollando y avanzando en este proyecto se hara necesario poder implementar este diseo en una FPGA. Tener en cuenta la posibilidad de usar otro tipo de perifricos para poder ingresar nosotros mismos las instrucciones segn sea la necesidad, al igual que los datos a utilizar. Se hace necesario aumentar el nmero de instrucciones para realizar aplicaciones de mayor complejidad y as poder utilizar perifricos como visualizadores, motores entre otros y hasta conversores anlogo digital.

CONCLUSIN Es posible implementar el lenguaje VHDL en el diseo de microprocesadores y microcontroladores. La importancia de la cantidad de informacin dada en una instruccin. El uso de instrucciones tipo RISC para disear programas de baja, media y alta complejidad diseando as segn las condiciones que se nos presenten. Se pudo dar cuenta que el lenguaje que se maneja para crear un microprocesador es abstracto, debido a las intensas intrusiones que se deben tener para poderse ejecutar los procesos necesarios. Para poder tener una comprensin clara del funcionamiento, se debe tener un previo diagrama de bloque que permita identificar cada uno de sus componentes, como la unidad de control, la memoria del programa, la ALU, la memoria de datos, etc. La experiencia con el programar no es muy grata para el grupo, por su alta complejidad del cdigo, pero si queda claro que este proceso que se hizo fue de gran ayuda e importancia para entender las funcionalidades del microprocesador dndolos la base para trabajar temas que se darn ms adelante, como el microcontrolador.

BIBLIOGRAFIA

Arquitectura de Computadoras, M. Morris Mano

WEBGRAFIA

http://es.wikipedia.org/wiki/Unidad_aritm%C3%A9tico_l%C3%B3gica http://es.wikipedia.org/wiki/Registro http://es.wikipedia.org/wiki/Contador_de_programa http://es.wikipedia.org/wiki/Reduced_instruction_set_computing http://www.unicrom.com/Tut_PICs2.asp http://es.wikipedia.org/wiki/Pila_(inform%C3%A1tica)

Você também pode gostar