Diseñar e implementar un microprocesador de 8 bits con memoria y visualización en leds utilizando VHDL.
1. Formulación del problema
En la práctica de la microelectrónica en la universidad francisco de paula Santander es importante que el estudiante este bien familiarizado con el Lenguaje de Descripción de hardware VHDL( hardware description language), y a través del semestre se adquieren herramientas para no solo manejar el sistema y las tarjetas de adquisición de datos sino también para realizar algunas aplicaciones más complejas que requieran de la capacidad del estudiante de crear procesos que incluyan el uso de la unidad Aritmetico-Logica ALU, registros, maquinas de estado y sistemas RTL, entre otros sistemas que se simulan en el ámbito del laboratorio, pero la mejor manera de poner en práctica dichos conocimientos es realizando una aplicación que requiera reunir estos componentes en un único proceso o sistema.
El uso de los microprocesadores esta en este momento focalizado en casi todos los ámbitos de la vida que cuente o requiera realizar operaciones ya sean lógicas, matemáticas, desplazamientos como los procesos de lavadoras, secadoras, microondas o cualquier tipo de electrodoméstico que haga uso de secuencias programas de control y más complejas como las millones de operaciones que debe realizar un sistema de alto rendimiento, celulares, palm y por supuesto computadoras.
Pero para los estudiantes de microelectrónica es importante conocer el uso y aplicación de los microprocesadores pero es mas importante implementar un sistema básico como es un microprocesador de 8 bits en Lenguaje de Descripción de hardware VHDL( hardware description language), haciendo uso de los conocimientos adquiridos durante el semestre en el manejo y la implementación de diferentes aplicaciones como lo son registros universales, banco de registros o memoria, registros desplazadores, registro sumador y restador registro de operaciones lógicas y otros componentes que no solo sirven para que el estudiante desarrolle habilidades y destrezas en el uso de esta herramienta de software sino también para que se prepare un camino que tenga como objetivo el desarrollo y puesta en práctica de un microprocesador de 8 bits que realice como mínimo cuatro o cinco de las operaciones básicas de un microprocesador y que use como interfaz una tarjeta de adquisición de datos y periféricos de entrada y salida.
2. JustificaciónLos microprocesadores pueden ser de uso o propósito general, es decir, que permiten ser manipulados para realizar cualquier tarea dentro del rango de operación del microprocesador o de las cantidad de instrucciones y capacidad de
ejecución del sistema y de propósito especifico o aplicaciones especificas que son llamados también sistemas embebidos que son los que se realizan para una tarea única y determinada por el programador estos últimos además de que pueden ser bastante complejos generalmente se caracterizan por tener un gran valor comercial; pero para conocer mas a fondo no solo la capacidad sino también la cantidad de instrucciones de un microprocesador es importante partir desde la esencia o el inicio del sistema y que mejor forma de realizar esta labor si no es diseñando un sistema que cumpla con los requerimientos mínimos para un microprocesador que son ALU registros, contador, unidad central de proceso.
El desarrollo de este sistema también permite al estudiante introducirse en el mundo de los programadores y desarrolladores de sistemas complejos como son los microprocesadores ya que estos realizan funciones que se puede simular en menor escala con un sistema de VHDL.
3. Objetivo general y específicos
Objetivo general
Diseño e implementación un microprocesador de 8 bits tipo Von Neuman, cuya estructura responde a la realización de operaciones lógicas y matemáticas.
Objetivos específicos
• Orientación, organización y documentación del proyecto.
• Establecimiento de un set de instrucciones para el microprocesador.
• Diseño e implementación, utilizando la herramienta de xilinx ISE Foundation, cada uno de los módulos de la estructura. (Diseño Comportamental con VHDL)
• Implementación del Top Level asociando los módulos desarrollados durante las prácticas.
• Programar una aplicación sencilla en el microprocesador desarrollado durante el semestre.
• Obtener las conclusiones a que diera lugar el trabajo.
4. Marco referencial
Antecedentes
- Simulación de un procesador de 8 bits con Lenguaje de Descripción de Hardware VHDL mediante metodologías de diseño descendente
Descripción: Este documento presenta una visión del diseño descendente de un sistema digital, usando el lenguaje VHDL (VHSIC Hardware Description Language). Se examinan las diferentes etapas de diseño descendente, el cual parte de unos requerimientos específicos de alto nivel que deben ser cumplidos por el sistema para conseguir un óptimo desempeño. El sistema diseñado es un procesador de ocho bits.
Presentado por: Luis Eduardo Abad Quintero
Marco teórico y conceptual
Si se requiere tener una estructura fundamental común, los microprocesadores cuentan con un ciclo de desarrollo general, este ciclo muestra los avances de la ingeniería para maximizar la posibilidad de realizar un sistema efectivo y confiable Cada ciclo de desarrollo se identifica mediante un bloque con una actividad dominante y el resultado primario de cada fase se presenta en la salida del bloque, cada resultado debe estar representado por documentación que describa el sistema en esa etapa en la figura1. Se muestra el ciclo de desarrollo de cualquier sistema embebido
Figura 1. Ciclos de desarrollo de un sistema
En la figura 1., se presentan las fases que ocurren por separado o en paralelo pero solo una a la vez y en secuencia , a continuación se presentan la descripción de las fases que son necesarias para este procedimiento.
Análisis de requerimientos
Este análisis presenta un examen a detalle de las necesidades del usuario final, es decir, el problema por resolver. En esta etapa interviene todos aquellos que necesitan del sistema y lo que quieren que hagan y esto último son el punto de inicio del sistema para la posible reactivación para las demás etapas.
Especificaciones
Se basan en los requerimientos funciones, operaciones y la interacción con el usuario. Estas se definen y se simulan para probarlo directamente.
Arquitectura del sistema
Partes que fueron realizadas por los programadores
Esta se realizo usando los programas ise fundation de xilinx y la fpga
Esto hace referencia a las especificaciones de software y hardware, es este caso especialmente software; en esta etapa se define que tipo se va a utilizar y cada elemento se describe por separado.
Diseño de hardware
Durante este paso se definen las funciones y la interfaz de entrada y salida: las primeras en forma general y la segunda de manera específica. Esta fase incluye el nombre de señales, funciones, y características así como diagramas de bloques del sistema. Implementación del hardware
En esta etapa se eligen los dispositivos que van a integrar el sistema, también se llevan a cabo un análisis de tiempo así como diagramas esquemáticos y diagramas de tiempo. Todo esto permite la construcción de un prototipo.
Pruebas de hardware
Esta etapa consiste en realizar pruebas individuales a los dispositivos para determinar sus especificaciones y el tiempo que precisan a fin de ejecutar un proceso.
Diseño de software
Se diseña la ejecución del flujo de datos y se implementan las funciones y procedimientos de cada módulo para que interactúen. Lo anterior permite jerarquizar el funcionamiento de los módulos que componen al sistema.
Implementación del software
Consiste en definir los algoritmos a detalle y las estructuras de datos que se van a desarrollar; además, el software se diseña de modo que pueda corren en otras aplicaciones. Todos los errores detectados se corrigen en este momento.
Pruebas de software
Los módulos programados en la eta de implementación del software se prueban de forma individual mediante la simulación.
Factores que se deben considerar para el diseño de un sistema embebido
Como puede advertirse en el diseño de sistemas embebidos hay que considerar diferentes factores:- Las dimensiones de la memoria de acceso rápido RAM, esta debe ser
suficiente para soportar las variables globales y locales.- Es deseable que tenga velocidad para ejecutar el software en tiempo real- El tamaño de los datos de 8, 16, 32 bits, deben coincidir con los datos que
se van a procesar- Las operaciones numéricas y lógicas.
Figura 2. Diagrama de bloques
SALIDA DE DATOS
MAR REGIS
UNIDAD DE
CONTROL
GEN TIME
EN
TRA
DA D
ATOS
Diseño de un microprocesador en VHDL
Figura 3. Entidad del microprocesador
Como se pudo apreciar antes, los sistemas embebidos tienen una infinidad de aplicaciones, estos dispositivos realizan, operaciones y controlan otros dispositivos para lo cual reciben información y dan ordenes a fin de que los elementos trabajen.
El diseño de los microprocesadores se facilita gracias a la diversidad de herramientas que hay en la actualidad, el VHDL es una herramienta muy poderosa debido a su flexibilidad y a la capacidad de simulación en tiempo real del sistema.
Como se puede observar de todo las fases del diseño del sistema de microprocesadores solo se centra el diseño en el software.
El diagrama de bloques del procesador que se diseño se muestra en la figura 2. Cabe mencionar que entre sus principales características se encuentraBus de direcciones de 8 bits, bus de datos de 5 bits, 1 línea de interrupción. El microprocesador que se diseño consta de 6 bloques.
A continuación se muestran las funciones y bloques de un tipo de microprocesador y se muestra paso a paso los componentes que utilizamos en el micro-procesador
Contador de programas (PC) Registro general Unidad de control Registro MAR Memoria
Divisor de frecuencia ALU (Unidad Aritmética y Lógica) Unidad de Control
Figura4. Microprocesador con lineas de conexión entre fuentes
En general este microprocesador realiza cada una de las funciones de la ALU, que son generadas a través del bus de direcciones que permite la puesta en marcha del contador que sirve para generar los datos de direcciones para reorganizar los datos de memoria y que estos salgan al dato b, para que con el dato a y la instrucción de operación se realice para finalmente mostrar los resultados en los leds.
CONTADOR DE PROGRAMAS
Un contador de programa (PC) es un registro de 3 bits que contiene la dirección del siguiente registro donde se encuentra la dirección de la instrucción que se buscará en la memoria para su ejecución. El contador de programa genera direcciones diferentes, es decir, 16 direcciones únicas, a las cuales el micro-procesador debe habilitar cada una de ellas.
El bus de direcciones es unidireccional y sólo permite salidas del micro-procesador hacia los diferentes dispositivos. Cada vez que se ejecuta una instrucción, el contador se incrementa.
Figura 5. Entidad contador de programas
El contador de programa se inicializa cuando el “bus_uc” entrega la palabra de control que permite que los datos del contador se generen.
REGISTRO MAR
El registro permite que las direcciones generadas por el contador de programa salgan con el objeto de leer o escribir un dato, según el valor de la señal R/W. Además de que validad a la memoria para que realice dicha operación
Figura 6. Entidad registro MAR
Cuando sin importar que datos se quiera obtener de la memoria ram el mar permite direccionar este dato calor siempre y cuando este disponible en la memoria
ALU(Unidad Aritmética y Lógica)
La unidad aritmética y lógica es una función multioperacional digital de lógica combinacional. Puede realizar un conjunto de operaciones aritmética básica y otro de operaciones lógicas.
En este componente también utilizamos banderas como:
Acarreo (C): este bit (bit 0) del registro de códigos de condición se coloca en “1” si después de la ejecución de ciertas instrucciones hay un acarreo del bit más significativo de la operación que se está ejecutando; de otra manera se coloca en “0”.
Sobreflujo (V): este bit (bit 3) del registro de códigos de condición se pone en “1” cuando un sobreflujo en complemento a 2 resulta de una operación aritmética; se coloca en “0” si el sobreflujo no ocurre en ese tiempo.
Cero (Z): este bit (bit 2) del registro de códigos de condición se coloca en “1” si el resultado de la operación lógica o aritmética es cero.
Negativo(N): este bit (bit 1) del registro de códigos de condición se coloca en “1” si el bit 4 del resultado de una operación lógica o aritmética es igual a “1”, de lo contrario se coloca en “0”.
Figura 7. Entidad ALU
La ALU como se decia anteriormente realiza operaciones aritmeticologicas basicas sumar, resta, and, y or en secuencia segunel dato que provenga del bus de direcciones.
UNIDAD DE CONTROL
La unidad de control (CU) sincroniza cada una de las acciones realizadas por el micro-procesador; asimismo, determina en que tiempo, hacia donde se mandan los datos o de donde vienen, decodifica y revisa que se ejecute.
Figura 8. Entidad unidad de control
MEMORIA
La memoria mem, es la que registra los datos con el cual se va a realizar la operación en la alu, además esta muestra el dato después de que se habilita en el registro mar.
Figura 9. Entidad memoria
DIVISOR DE FRECUENCIA
Es uno de los bloques más importantes ya que este es el que genera los tiempos de ejecución y va directo a la unidad de control. El divisor de frecuencia permite generar tiempos de 1 segundo y también permite que los datos de contador de programa se generen de forma adecuada.
Figura 10. Entidad registro divisor de frecuencia
Ver en anexo programa en VHDL
INSTRUCCION BITDIR DESCRIPCION DIRA+B ADD CARGA DATOS EN A 000A-B SUBB 001AND AANDB 010OR AORB 111OPERACION DIRECCIONAMIENTO
A+B CARGA SUMA 10100A-B CARGA RESTA 10001AND CARGA AND 10110OR CARGA OR 10010
M b CARGA DATO EN B X1XXXXOP RTDO MUESTRA RESULTADO
TABLA1. INSTRUCCIONES
ASIGNACION DE PINES
ENTRADAS SALIDAS ASIGNACION PINES
E6 4 7 D6C5 6 9 E7C6 8 11 D7C7 10 13 D8C8 12 15 D10C9 14 17 B4A3 16 19 B5A4 18 21 B6A5 20 VCC 3B7 22 TIERRA 1B8 24
TABLA3. ASIGANCION DE PINES
DISEÑO METODOLÓGICO DEFINITIVO
ESQUEMA TEMÁTICO DE LOS ALCANCES TÉCNICOS
ACTIVIDADES Y METODOLOGÍA
Para cumplir con los objetivos propuestos se llevó a cabo las siguientes
actividades y metodologías:
Se recolectó la información necesaria respecto al diseño e implementación del
microprocesador.
Actividad: la información que se requería para la metodología de
diseño y arquitectura se obtuvo a través de las clases y de los
laboratorios. con base al diseño e implementación de una interfaz
grafica, de acuerdo a los sistemas de control y automatización.
Metodología: Se fueron implementado una a una las fuentes que se
hacen necesarias para organizar y redireccionar los elementos del
microprocesador.
Se diseñó una interfaz gráfica óptima y sencilla, para el desarrollo de l micro
procesador.
Actividad: Se diseñó una interfaz grafica que es de fácil manejo
Metodología: Se desarrolló a través de la información adquirida por
los libros y el profesor y el uso de la arquitectura Von Newman
cumpliendo con todos los requisitos planteados, y se hicieron
exposiciones y foros en internet para promulgar los beneficios.
5. Cronograma
ACTIVIDADSEMANA
1 2 3 4 5 6 7 8 9 10 11 12
Diseño y simulación ALU
Diseño y simulación contador
Diseño y simulación mem y mar.
Diseño y simulación contador
Diseño y simulación divisor de frec.
Diseño y simulación unidad de control
Unificación del las fuentes
pruebas
Entrega de proyecto final
Tabla 3. Cronograma de actividades
Bibliografía
MAXINE, David, El arte de programar sistemas digitales
webgrafia
http://pci.unalmzl.edu.co/Tesis/luiseduardoabad.pdf
http://www.iberchip.net/IX/Articles/POST-123.pdf
↑ «The Intel 4004: A testimonial from Federico Faggin, its designer, on the first
microprocessor's thirtieth birthday». Faggin's own 4004 website.
↑ «Lista Top500 de noviembre de 2002». Top500.
↑ «Molibdenita, ¿adiós al silicio?». MuyComputer.com.
↑ http://www.profesorbot.com/curiosidad/nobel-de-fisica-grafeno/
↑ «Core 2 Extreme: 3,66 GHz And FSB 1333 - Review Tom's Hardware : THG Tuning Test:
Core 2 Extreme vs. Athlon 64 FX-62»