|
|
|
|
|
DISEÑO DE UNA ARQUITECTURA BASADA EN
MICROPROCESADOR |
|
|
|
Julio Esteban Fernández Juárez |
|
Antonio Ortiz Pineda |
|
Miguel Ángel Rojas Gómez |
|
|
|
|
|
Objetivos del proyecto |
|
Diseño del h/w en el que se apoya un
microprocesador en un sistema |
|
|
|
Implementación del diseño sobre una plataforma
reconfigurable (FPGA) |
|
|
|
Programación de un ejemplo práctico (juego
Galaxy Invader) para mostrar la funcionalidad del sistema |
|
|
|
|
|
Descripción de la arquitectura |
|
Controlador del sistema |
|
Controlador de interrupciones |
|
Módulo VGA |
|
Interfaz PS/2 estándar |
|
Códec de sonido |
|
Generador de números aleatorios (LFSR) |
|
Microcontrolador 8031 |
|
Módulo de memoria SRAM |
|
|
|
|
|
|
|
Hardware |
|
Placa de prototipado XS40-010XL Board 1.2 |
|
XC4010XL FPGA de 400 CLBs (20.000 puertas) |
|
Códec Stereo de 20 bits |
|
Puerto de entrada y salida STEREO |
|
Puerto Paralelo |
|
Puerto PS/2 para teclado y ratón |
|
Puerto Monitor VGA |
|
Tres pulsadores |
|
Tres bancos de LEDS de 7 segmentos |
|
Un banco
de LEDS de barras |
|
Switches DIP |
|
Microcontrolador 8031 |
|
Banco de memoria SRAM de 32 Kb |
|
|
|
|
|
|
|
|
|
Software |
|
Xilinx Foundation F3.1i |
|
Paquete de herramientas orientadas a la síntesis
de sistemas H/W de alto nivel |
|
Incluye: editor de esquemáticos, editor de
lenguaje de descripción h/w, simulador (funcional y de tiempos) y
herramientas de síntesis de diseños |
|
Simulador ModelSIM SE-EE 5.4 |
|
Xstools (Gxsport,Gxsload) |
|
Ensamblador cruzado ASM51 |
|
Emulador 8051 1.0 de TS-Controls |
|
|
|
|
|
|
Controlador de interrupciones |
|
|
|
|
|
|
|
Generador de números aleatorios (LFSR) |
|
|
|
|
Información de recursos utilizados |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Problemas encontrados |
|
VGA y microprocesador comparten líneas de acceso
a la memoria |
|
Mecanismo de arbitraje para permitir acceso
concurrente (capacidad de dormir 8031) |
|
Falta recursos estructurales |
|
Optimizaciones máximas en área(LUTs y
Tri-States) |
|
Incapacidad de cambiar la frecuencia de reloj |
|
Optimizaciones en velocidad (segmentación) |
|
Falta de pines disponibles en la placa |
|
Necesario uso de interconexión manual (INT) |
|
|
|
|
|
|
Descripción de la aplicación programada |
|
Clónico del Galaxy Invader 1000 |
|
Juego de marcianitos |
|
Objetivo: Conseguir el mayor número de puntos |
|
Destrucción de las naves alienígenas |
|
Múltiples niveles de dificultad |
|
Sonido de eventos |
|
Aleatoriedad |
|
Presentación (c/ banda sonora y efectos) |
|
|
|
|
|
|
Arquitectura de los chips de la familia 8051 |
|
Máquina de 8 bits |
|
Tamaño máximo de programa de 64 Kb |
|
4 bancos de registros (R0-R7) |
|
Tipos de direccionamientos |
|
Implícito, Indirecto, Directo e Inmediato |
|
Bytes o Bits |
|
Repertorio de instrucciones completo aunque
restringido |
|
Memoria interna y memoria externa |
|
|
|
|
|
|
|
|
|
|
|
|
Problemas encontrados |
|
Concurrencia en el acceso a memoria externa
(mantenimiento de frames) |
|
Mecanismo de arbitraje para dormir al micro e
aislarlo del exterior (interrupciones) |
|
Problemas de rendimiento del microprocesador |
|
Acceso directo a la memoria de VGA sin pasar por
su controlador |
|
Falta de espacio en memoria interna |
|
Acceso más lento en memoria externa (sonidos
principalmente) |
|
|
|