Está en la página 1de 170

UNIVERSIDAD PONTIFICIA COMILLAS

ESCUELA TCNICA SUPERIOR DE INGENIERA (ICAI)


INGENIERO EN AUTOMTICA Y ELECTRNICA INDUSTRIAL

PROYECTO FIN DE CARRERA

Microprocesador sintetizable en FPGA

AUTOR:

lvaro Padierna Daz MADRID, Jun/2009

ESTE PROYECTO CONTIENE LOS SIGUIENTES DOCUMENTOS

DOCUMENTO N 1, MEMORIA 1.1 Memoria 1.2 Estudio Econmico 1.3 Manual del Usuario 1.4 Cdigo 1.5 Datasheets

pg. 1 a 755 pg. 76 a 77 pg. 78 a 101 pg. 102 a 103 pg. 154 a 197

75 pginas 2 pginas 24 pginas 2 pginas 26 pginas

DOCUMENTO N 2, PLANOS 2.1 Lista de planos 2.2 Planos

pg. 1 pg. 2 a 4

1 pgina 3 pginas

DOCUMENTO N 3, PLIEGO DE CONDICIONES 3.1 Generales y Econmicas pg. 2 a 4 3.2 Tcnicas y Particulares pg. 7 a 7

3 pginas 3 pginas

DOCUMENTO N 4, PRESUPUESTO 4.1 Mediciones 4.2 Precios Unitarios 4.3 Sumas Parciales 4.4 Presupuesto General

pg. 2 a 3 pg. 4 pg. 5 pg. 6

2 pginas 1 pgina 1 pgina 1 pgina

Autorizada la entrega del proyecto Microprocesador sintetizable en FPGA Realizado por: lvaro Padierna Daz V B del director de proyecto

Firmado: Jose Daniel Muoz Fraz Fecha: ....../............/...... V B del Coordinador de Proyectos

Firmado: lvaro Snchez Miralles Fecha: ....../............/......

UNIVERSIDAD PONTIFICIA COMILLAS


ESCUELA TCNICA SUPERIOR DE INGENIERA (ICAI)
INGENIERO EN AUTOMTICA Y ELECTRNICA INDUSTRIAL

PROYECTO FIN DE CARRERA

Microprocesador sintetizable en FPGA

AUTOR:

lvaro Padierna Daz MADRID, Jun/2009

Resumen

MICROPROCESADOR SINTETIZABLE EN FPGA


Autor: Padierna Daz, lvaro. Director: Muoz Frias, Jos Daniel. Entidad colaboradora: EADS-Astrium-Crisa.

RESUMEN DEL PROYECTO

a integracin de microprocesadores en FPGAs es una estrategia muy potente en el mundo de la electrnica digital. Siendo posible integrar sistemas mixtos en

los que se combinen procesador y lgica convencional, agilizando las tareas y ahorrando espacio, bien escaso en los sistemas embarcados en satlites. En el mercado hay disponible una gama moderadamente amplia de dispositivos, entre los que se pueden encontrar tanto dispositivos de cdigo abierto, como dispositivos de cdigo propietario. Sin embargo, por sus caractersticas, ninguno est optimizado

para labores de control de flujo. El objetivo del presente proyecto es disear un microprocesador altamente especializado en ejecutar, de la forma ms eficiente posible, tareas de control de flujo. De este modo se logra cubrir los requerimientos especficos de este tipo de tareas, evitando el derroche innecesario de las celdas lgicas de la FPGA Tras el anlisis detenido de los procesos que pueden tener lugar en una rutina de control de flujo (a partir de una rutina tipo proporcionada por EADS-AstriumCrisa) se desarroll un softcore con las siguientes caractersticas: 1) Banco de 16 registros de propsito general, en el que el registro 0 se siempre alberga el valor cero. 2) Memoria de programa, con capacidad de referenciar hasta 65.536 instrucciones, se trata de una memoria tipo Hard program code storage, en la que el cdigo se encuentra sintetizado en lgica de puertas, sacrificando la reprogramabilidad en pos de una mayor robustez frente a la corrupcin de los datos debida a la radiacin. 3) El micro tiene una capacidad de direccionamiento de memoria de 16 bits, por medio de la cual es posible manipular, adems de la propia memoria, diversos elementos internos de la mquina. De este modo se obtiene una alta flexibilidad, siendo posible agregar o quitar perifricos con solo modificar el mapeado de memoria. Los elementos actualmente integrados en el micro son:

Resumen

a) Interfaz con el bus APB: Se trata del elemento encargado de llevar el peso de la comunicacin del micro con el exterior. Se trata de un maestro del bus AMBA 3 APB, con capacidad de soportar esperas y operaciones errneas en el bus. b) Soporte para 16 interrupciones: El dispositivo es capaz de soportar hasta 16 secuencias de interrupcin con prioridad fija y sin anidamiento ni almacenamiento del contexto (Tarea que, por razones de optimizacin, queda a cargo del programador sobre aquellos registros que sean manipulados en el proceso). Las diferentes rutinas son despertadas por un flanco de subida en el puerto de entrada destinado a tal efecto. El circuito ha sido diseado para que el nmero de interrupciones que puedan ser gestionadas pueda ser ampliado de forma casi inmediata en caso de ser necesario c) Un timer interno: Asociado a una instruccin de salto condicional, permite la ejecucin de retardos, muy comunes en operaciones de control de flujo. En lo referente al juego de instrucciones, se ha tomado un juego de instrucciones reducido, optimizado para la labor a la que est especializado el procesador, as las instrucciones disponibles son: 4) Operaciones aritmticas: Tipo suma y resta en complemento a dos bien entre dos registros, bien entre un registro y un inmediato. 5) Operaciones lgicas: Instrucciones AND, OR y XOR bit a bit entre registros o entre registro e inmediato 6) Operaciones de comparacin: Compara dos registros o un registro y un inmediato. Tambin se engloba en este grupo la verificacin de un bit en concreto de una palabra almacenada en un registro 7) Operaciones de manejo de memoria: Permiten mover informacin entre memoria y registros as como cargar inmediatos en un registro dado o copiar su contenido en otro registro. 8) Instrucciones de salto: Se trata de instrucciones de salto a una determinada posicin de la memoria de programa, bien de forma condicional (asociado al resultado de una instruccin de comparacin previa o al estado de un indicador interno como el estado del timer o el testigo de error del maestro del bus APB) o bien incondicionales.

lvaro Padierna Daz

Resumen

Figura 1: Diagrama de bloques del micro.

Tests Para verificar el buen funcionamiento de todas las partes del equipo, se dividi el micro en bloques funcionales, hacindolos funcionar en rutinas automticas de verificacin denominadas test benches, en las que los bloques son sometidos a todas las combinaciones de entradas posibles, de modo que quede probado su buen funcionamiento en cualquier caso posible. Estas rutinas de test son extensivas a los bloques superiores, formados por combinacin de bloques ms simples, hasta llegar al nivel superior, es decir, el propio procesador, para cuya verificacin se recurri a un programa de autotest, obtenindose resultados satisfactorios. Conclusiones Tras finalizar el presente proyecto se ha obtenido un microprocesador altamente especializado, con una gran eficiencia en lo que a lgica empleada se refiere y con una gran escalabilidad para trabajar con diferentes anchos de palabra, nmero de interrupciones etc. as como para la incorporacin de nuevos perifricos mediante el direccionamiento en memoria. As pues, se concluye el presente proyecto con la satisfaccin de haber realizado un dispositivo funcional y con un gran potencial de aplicacin sobre equipos reales.

lvaro Padierna Daz

Abstract

MICROPROCESSOR SYNTETISIZED IN FPGA


Author: Padierna Daz, Alvaro. Director: Muoz Frias, Jose Daniel. Partner: EADS-Astrium-Crisa.

PROJECT SUMMARY

that combine microprocessor and conventional logic , speeding up the tasks and saving space, scarce in the systems aboard satellites.. There is a moderately wide range of devices in the market, that range from open source code to propietary code devices. However none are optimized for work flow control (flags handling, continuous jump secuences, mathematical operations limited to the management of loops, etc). The objective of this project is to design a microprocessor specialized for processing work flow control routines the most efficient way possible. This way we can cover the requirements for this type of task, avoiding unnecessary waste of logic cells in the FPGA. After the careful analysis of the processes that can take place in a routine of flow control (from a routine "type" by EADS-Astrium-Crisa) a softcore with the following characteristics was developed: 1) Bank of 16 general purpose registers where the register 0 has always a value of zero. 2) The chip has a memory addressing capability of 16 bits, by which you can manipulate, in addition to the memory, various internal elements of the machine. Thus giving a high flexibility, being possible to add or remove peripherals with just changing the mapping of memory. The elements currently included in the micro are: a) APB bus Interface: It is the element responsible for carrying the micro communication with the outside world. This is a Master AMBA 3 APB bus, capable of supporting wrong operations and waits on the bus.

he integration of microprocessors in FPGAs is a very powerful strategy in the world of digital electronics. Being possible to integrate mixed systems

Abstract

IIII

b) Support for 16 interrupts: The device is capable of supporting up to 16 interrupt sequences with a fixed priority without embedding and storage of the context (a task which, for optimization, is left to the programmer to decide how those records are handled in the process) . The different routines are awakened by a rising edge in the entry port designated for that effect. This element has been designed so that the number of interruptions that can be managed, can be expanded almost immediately if necessary c) An internal timer: Associated to a conditional jump instruction, allows the implementation delays, common operations in flow control. 3) Program memory with capacity to refer up to 65,536 instructionsng, this is a "Hard program code storage" memory type, in which the code is synthesized into logic gates, sacrificing the option for reprogramming the device towards a greater robustness against data corruption due to radiation. Regarding the set of instructions, it takes a small set of instructions optimized for the kind of work that the equipment is specialized for, the avaible instructions are: 1) Arithmetic operations: addition and subtraction in two's complement notation between registers or between a register and inmediate data. 2) Logical operations: Instructions AND, OR and XOR bit to bit between registers or between a register and immediate data. 3) Comparison operations: Compares two registers or a register and immediate data. Also the verification of a specific bit of a word stored in a register is part of this group of operations. 4) Memory management operations: they allow you to move information between registers and memory, along with loading inmediate data in a given register or copy a register's contents into another one. 5) Jump instructions: Instructions to jump into a determined position of the program memory, either conditional (associated to the result of a previous comparison instruction or the state of an internal indicator like a timer or an error flag in the APB Bus Master) or unconditional.

lvaro Padierna Daz

Abstract

IIII

Figure 2: Microprocessor block diagram.

Tests To verify the proper functioning of all parts of the system, it was divided into micro functional blocks, making them operate in automatic verification routines called "test benches," in which the blocks are subjected to all possible combinations of inputs, so the proper functioning of the module is proved for every possible case, independently of any particular case. These test routines are extended to the upper blocks, formed by combining the simpler blocks until you reach the top level, the processor itself, for its verification an autotest program was used, obtaining satisfactory results. Conclusions Upon completion of this project we have obtained a highly specialized microprocessor, with a high efficiency as far as logic is concerned and high flexibility to work with different word widths, number of breaks and so on. as well as for adding new peripherals by memory addressing. Thus, this project is concluded to the satisfaction of having carried out a functional device with a great potential for application on real equipment.

lvaro Padierna Daz

A mis padres, por todo

MEMORIA

Diseo de un microprocesador sintetizable en FPGA

iii}

ndice general
MEMORIA.......................................................................................................................................I 1 INTRODUCCIN................................................................................................................. 1 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.4 1.5 1.6 2 POR QU USAR UN MICROCONTROLADOR EN UNA FPGA? ............................................ 1 ESTADO DEL ARTE .......................................................................................................... 2 Core ABC de Actel .................................................................................................... 3 Core 8051 de Actel.................................................................................................... 4 PicoBlaze de Xilinx ................................................................................................... 5 MicroBlaze de Xilinx................................................................................................. 6 Nios de Altera............................................................................................................ 7 LEON de la ESA........................................................................................................ 7 MOTIVACIN DEL PROYECTO.......................................................................................... 9 OBJETIVOS .................................................................................................................... 10 METODOLOGA / SOLUCIN DESARROLLADA................................................................ 10 RECURSOS / HERRAMIENTAS EMPLEADAS ..................................................................... 10

ESTUDIO PRELIMINAR.................................................................................................. 11 2.1 2.1.1 2.1.2 ANLISIS PREVIO .......................................................................................................... 11 Eleccin del dispositivo........................................................................................... 11 Caractersticas de la familia RTAX 2000/4000....................................................... 11
Las celdas lgicas........................................................................................................14 Topologa de la memoria.............................................................................................17

2.1.2.1 2.1.2.2

2.1.3 2.1.4

Caractersticas de la familia ProASIC.................................................................... 19 Topologa de la memoria ........................................................................................ 21


Lectura sncrona ..........................................................................................................21 Lectura asncrona ........................................................................................................22 Escritura sncrona........................................................................................................23 Escritura asncrona ......................................................................................................23

2.1.4.1 2.1.4.2 2.1.4.3 2.1.4.4

2.1.5 2.2

Conclusin .............................................................................................................. 24 ESTUDIO DEL CDIGO TIPO........................................................................................ 25

EN BASE A ESTO, SE TOMAN LAS SIGUIENTES DECISIONES DE CARA A LA ESPECIFICACIN DE LA


ARQUITECTURA........................................................................................................................... 26

2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5

EL PROTOCOLO APB..................................................................................................... 27 Seales del bus APB................................................................................................ 27 Maniobra de escritura con espera y sin error......................................................... 28 Maniobra de lectura con espera y sin error............................................................ 28 Maniobra de escritura con error ............................................................................ 29 Maniobra de lectura con error................................................................................ 29

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

iiii

2.3.6 3

Diagrama de fases del protocolo APB .................................................................... 30

ARQUITECTURA DEL MICROPROCESADOR .......................................................... 31 3.1 3.2 3.2.1 ESPECIFICACIN DE LA ARQUITECTURA ........................................................................ 31 EL JUEGO DE INSTRUCCIONES ....................................................................................... 33 Las instrucciones de movimiento de datos .............................................................. 33
Instrucciones movrm y movmr....................................................................................35 Instruccin movir ........................................................................................................36 Instruccin movrr ........................................................................................................37 Las instruccines cmp puramente comparativas..........................................................38 La instruccin cmpbit..................................................................................................38 3.2.1.1 3.2.1.2 3.2.1.3

3.2.2

Las instrucciones de comparacin .......................................................................... 37

3.2.2.1 3.2.2.2

3.2.3 3.2.4 3.2.5

Las instrucciones aritmticas.................................................................................. 38 Las instrucciones lgicas ........................................................................................ 39 Las instrucciones de salto ....................................................................................... 39
La instruccin Jmpt .....................................................................................................40 La instruccin Jmpf .....................................................................................................40 La instruccin Jmpuc...................................................................................................40 La instruccin Jmpsig..................................................................................................40 La instruccin End ......................................................................................................40

3.2.5.1 3.2.5.2 3.2.5.3 3.2.5.4 3.2.5.5

IMPLANTACIN............................................................................................................... 42 4.1 4.2 VISIN GENERAL .......................................................................................................... 42 LA ALU ....................................................................................................................... 43

Figura 4-2: Esquema funcional del ALU .............................................................................. 43 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 El bloque sumador .................................................................................................. 44 El bloque restador................................................................................................... 44 El bloque comparador............................................................................................. 44 El bloque lgico ...................................................................................................... 45 El bloque flag state ............................................................................................. 45 EL CONTROL ................................................................................................................. 46 Mapeo de memoria.................................................................................................. 47 Gestin de los punteros de interrupcin ................................................................. 48 Gestin de las interrupciones.................................................................................. 50 Gestin de los parmetros del timer ....................................................................... 52 Gestin del timer ..................................................................................................... 53 El watchdog............................................................................................................. 55

Manejo del contador de programa (fetch)............................................................................. 57 4.3.7 4.3.8 4.4 Decodificacin de la instruccin............................................................................. 59 La memoria del programa ...................................................................................... 60 EL MAESTRO DE APB ................................................................................................... 62

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

ivi}

RESULTADOS/EXPERIMENTOS................................................................................... 63 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.2 5.3 5.4 5.5 TEST BENCH DEL MAESTRO DE APB ............................................................................. 64 Operacin de escritura (sin error).......................................................................... 64 Operacin de escritura (con error)......................................................................... 65 Operacin de lectura (sin error) ............................................................................. 65 Operacin de lectura (con error)............................................................................ 66 TEST BENCH DEL BANCO DE REGISTROS ........................................................................ 67 TEST BENCH DEL BLOQUE SUMADOR ............................................................................ 68 TEST BENCH DEL BLOQUE RESTADOR ........................................................................... 68 TEST BENCH DEL BLOQUE COMPARADOR ...................................................................... 69

6 7

CONCLUSIONES ............................................................................................................... 73 FUTUROS DESARROLLOS............................................................................................. 74

BIBLIOGRAFA........................................................................................................................... 75 ESTUDIO ECONMICO............................................................................................................ 76 MANUAL DE USUARIO............................................................................................................. 78 INTRODUCCIN ........................................................................................................................... 81 Por qu usar un microcontrolador en una FPGA? ............................................................. 81 DESCRIPCIN DEL DISPOSITIVO ................................................................................................... 82 PUERTOS ..................................................................................................................................... 84 LISTA DE INSTRUCCIONES FUNCIONES ...................................................................................... 86 LISTA DE INSTRUCCIONES CDIFICACIN ................................................................................ 91 MAPEO DE MEMORIA................................................................................................................... 94 EL INTERFAZ APB....................................................................................................................... 96 Seales del bus APB .............................................................................................................. 96 Maniobra de escritura con espera y sin error....................................................................... 97 Maniobra de lectura con espera y sin error.......................................................................... 97 Maniobra de escritura con error........................................................................................... 98 Maniobra de lectura con error.............................................................................................. 98 Diagrama de fases del protocolo APB .................................................................................. 99 CDIGO FUENTE..................................................................................................................... 102 8 CDIGO VHDL................................................................................................................ 103

DATASHEETS............................................................................................................................ 104 9 POASIC.............................................................................................................................. 106

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

vi}

10

RTAX.................................................................................................................................. 115

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

vii}

ndice de figuras
FIGURA 1: DIAGRAMA DE BLOQUES DEL MICRO................................................................................ III FIGURE 2: MICROPROCESSOR BLOCK DIAGRAM................................................................................ III FIGURA 1-1: DIAGRAMA ESQUEMTICO DEL CORE ABC DE ACTEL. ................................................. 3 FIGURA 1-2: ESQUEMA DEL CORE8051 Y SU INTERFAZ SFR.............................................................. 4 FIGURA 1-3: DIAGRAMA DE BLOQUES DEL PICOBLAZE ..................................................................... 6 FIGURA 1-4: DIAGRAMA DE BLOQUES DEL LEON3 ........................................................................... 7 FIGURA 2-1:ESTRUCTURA DE LAS FPGA'S DE LA FAMILIA RTAX DE ACTEL .................................. 12 FIGURA 2-2: MODULO DE MEMORIA DEL RTAX-S/SL (ACTEL)....................................................... 13 FIGURA 2-3: CELDA C ...................................................................................................................... 14 FIGURA 2-4: CELDA R ..................................................................................................................... 15 FIGURA 2-5: DETALLE DE LAS CONEXIONES DIRECTAS ENTRE CELDAS LGICAS. ............................ 15 FIGURA 2-6: EVOLUCIN TEMPORAL DE LS SEALES EN UN FLIP-FLOP FORMADO POR CELDAS R ... 16 FIGURA 2-7: EVOLUCIN DE LAS FORMAS DE ONDA EN OPERACIONES DE LECTURA Y ESCRITURA ... 17 FIGURA 2-8: ORGANIZACIN INTERNA DE LA PFGA PROASIC ....................................................... 19 FIGURA 2-9: CELDA LGICA PROASIC ........................................................................................... 20 FIGURA 2-10: OPERACIN DE LECTURA SNCRONA DE LA MEMORIA SRAM.................................... 21 FIGURA 2-11: LECTURA ASNCRONA DE LA MEMORIA SRAM ......................................................... 22 FIGURA 2-12ESCRITURA SNCRONA SOBRE LA MEMORIA SRAM..................................................... 23 FIGURA 2-13: ESCRITURA ASNCRONA SOBRE LA MEMORIA SRAM ................................................ 24 FIGURA 2-14: OPERACIN DE ESCRITURA EN UN ESCLAVO APB...................................................... 28 FIGURA 2-15: OPERACIN DE LECTURA DE UN ESCLAVO APB......................................................... 28 FIGURA 2-16: OPERACIN DE ESCRITURA ERRONEA EN UN ESCLAVO APB...................................... 29 FIGURA 2-17: OPERACIN DE LECTURA ERRONEA EN UN ESCLAVO APB......................................... 29 FIGURA 2-18: DIAGRAMA DE FASES DEL PROTOCOLO APB ............................................................. 30 FIGURA 4-1: ORGANIZACIN GENERAL DEL MICRO ......................................................................... 42 FIGURA 4-2: ESQUEMA FUNCIONAL DEL ALU ................................................................................. 43 FIGURA 4-3: DIAGRAMA FUNCIONAL DEL CONTROL. ....................................................................... 46 FIGURA 4-4 DIAGRAMA DE FLUJO DE LA GESTIN DE INTERRUPCIONES........................................... 51 FIGURA 4-5 :DIAGRAMA DE FLUJO DEL FUNCIONAMIENTO DEL TIMER............................................. 53 FIGURA 4-6: DIAGRAMA DE FLUGO DEL PROCESO DE FECH ............................................................. 57 FIGURA 4-7: DIAGRAMA DE ESTADOS DEL MAESTRO DE APB ......................................................... 62

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

viii

FIGURA 5-1: ESQUEMA DEL PROCESO DE TEST................................................................................. 63 FIGURA 5-2: SEALES CORRESPONDIENTE A LA ESCRITURA EN UN ESCLAVO DE APB..................... 64 FIGURA 5-3: SEALES CORRESPONDIENTE A LA ESCRITURA ERRONEA EN UN ESCLAVO DE APB ..... 65 FIGURA 5-4:: SEALES CORRESPONDIENTES A LA LECTURA DE UN ESCLAVO DE APB ..................... 65 FIGURA 5-5: SEALES CORRESPONDIENTES A LA LECTURA ERRONEA DE UN ESCLAVO DE APB ...... 66 FIGURA 5-6: VISIN GENERAL DEL PROCESO DE TEST DEL BANCO DE REGISTROS............................ 67 FIGURA 5-7: DETALLE DEL PROCESO DE ESCRITURA EN EL BANCO DE REGISTROS. .......................... 67 FIGURA 5-8: DETALLE DEL PROCESO DE RECTURA DE LOS REGISTROS............................................. 67 FIGURA 5-9: DETALLE DEL PROCESO DE TEST DEL BLOQUE SUMADOR. ........................................... 68 FIGURA 5-10: DETALLE DEL PROCESO DE TEST DEL BLOQUE RESTADOR.......................................... 68 FIGURA 5-11: DETALLE DEL PROCESO DE TEST DEL BLOQUE COMPARADOR. ................................... 69 FIGURA 7-1: INTERFAZ DE LEON .................................................................................................... 74 FIGURA 0-1: INTERFAZ DEL CORE .................................................................................................... 84 FIGURA 0-2: OPERACIN DE ESCRITURA EN UN ESCLAVO APB. ...................................................... 97 FIGURA 0-3: OPERACIN DE LECTURA DE UN ESCLAVO APB........................................................... 98 FIGURA 0-4: OPERACIN DE ESCRITURA ERRONEA EN UN ESCLAVO APB........................................ 98 FIGURA 0-5: OPERACIN DE LECTURA ERRONEA EN UN ESCLAVO APB........................................... 99 FIGURA 0-6: DIAGRAMA DE FASES DEL PROTOCOLO APB ............................................................... 99

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

viii

ndice de tablas
TABLA 1-1: SOFTCORES DISPONIBLES EN EL MERCADO ..................................................................... 2 TABLA 1-2: SOFTWARE EMPLEADO EN EL PROYECTO. ..................................................................... 10 TABLA 2-1: NMERO DE CELDAS LGICAS EN LOS DISPOSITIVOS DE LA FAMILIA RTAX DE ACTEL 12 TABLA 2-2: ORGANIZACIN DE LA MEMORIA EN LAS FPGA'S DE LA FAMILIA RTAX DE ACTEL..... 13 TABLA 2-3: TIEMPOS ASOCIADOS A LA FIGURA PREVIA EN EL PEOR CASO POSIBLE.......................... 16 TABLA 2-4: TIEMPO ASOCIADOS A LA LECTURA Y ESCRITURA EN RAM ........................................... 18 TABLA 2-5: CONFIGURACIN DE LA MEMORIA EN UNA PASTILLA PROASIC EN FUNCIN DEL
DISPOSITIVO ........................................................................................................................... 19

TABLA 2-6: RETARDOS DE DIFERENTES CIRCUITOS LGICOS. .......................................................... 20 TABLA 2-7: SEALES QUE INTERVIENEN EN LA OPERACIN DE LA MORIA SRAM ........................... 21 TABLA 2-8:RETARDOS ASOCIADOS A LA LECTURA SNCRONA DE LA SRAM ................................... 22 TABLA 2-9: RETARDOS ASOCIADOS A LA LECTURA ASNCRONA DE LA SRAM ................................ 22 TABLA 2-10: RETARDOS ASOCIADOS A LA ESCRITURA SNCRONA DE LA SRAM ............................. 23 TABLA 2-11: RETARDOS ASOCIADOS A LA ESCRITURA ASNCRONA DE LA SRAM ........................... 24 TABLA 3-1: JUEGO DE INSTRUCCIONES DE MOVIMIENTO DE DATOS ................................................. 33 TABLA 3-2: JUEGO DE INSTRUCCIONES DE COMPARACIN ENTRE REGISTROS................................. 33 TABLA 3-3: JUEGO DE INSTRUCCIONES DE COMPARACIN ENTRE REGISTRO E INMEDIATO. ............ 34 TABLA 3-4: : JUEGO DE INSTRUCCIONES DE OPERACIONES ARITMTICAS ENTRE REGISTROS .......... 34 TABLA 3-5: JUEGO DE INSTRUCCIONES DE OPERACIONES ARITMTICAS ENTRE REGISTRO E
INMEDIATO ............................................................................................................................. 34

TABLA 3-6: JUEGO DE INSTRUCCIONES DE OPERACIONES LGICAS ENTRE REGISTROS .................... 34 TABLA 3-7: JUEGO DE INSTRUCCIONES DE OPERACIONES LGICAS ENTRE REGISTRO E INMEDIATO 35 TABLA 3-8: JUEGO DE INSTRUCCIONES DE SALTO. ........................................................................... 35 TABLA 4-1: OBTENCIN DE LOS RESULTADOS DE LA COMPARACIN ............................................... 44 TABLA 4-2: MAPEADO DE LA MEMORIA ........................................................................................... 47 TABLA 4-3: ZONA DE MEMORIA RESERVADA PARA LOS PUNTEROS A INTERRUPCIONES................... 48 TABLA 4-4: ORGANIZACIN DEL AREA DE MEMORIA DEDICADA A LOS PARMETROS DEL TIMER. .. 52 TABLA 4-5: ORGANIZACIN DEL AREA DE MEMORIA DEDICADA A LOS PARMETROS DEL
WATCHDOG. ........................................................................................................................... 56

TABLA 4-6: TIPOS FORMATOS DE INSTRUCCIN ............................................................................... 59 TABLA 0-1: FUNCIONES DE LOS PUESTOS DEL MICRO. ..................................................................... 85 TABLA 0-2: INSTRUCCIONES DE MANEJO DE MEMORIA. ................................................................... 86

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

ixi}

TABLA 0-3: INSTRUCCIONES DE COMPARACIN ENTRE REGISTROS.................................................. 87 TABLA 0-4: INSTRUCCIONES DE COMPARACIN ENTRE REGISTRO E INMEDIATO .............................. 88 TABLA 0-5: INSTRUCCIONES ARITMTICAS ENTRE REGISTROS ......................................................... 89 TABLA 0-6: INSTRUCCIONES ARITMTICAS ENTRE REGISTRO E INMEDIATO ..................................... 89 TABLA 0-7: INSTRUCCIONES LGICAS ENTRE REGISTROS ................................................................ 89 TABLA 0-8: INSTRUCCIONES LGICAS ENTRE REGISTRO E INMEDIATO............................................. 90 TABLA 0-9: INSTRUCCIONES DE SALTO ............................................................................................ 90 TABLA 0-10: JUEGO DE INSTRUCCIONES DE MOVIMIENTO DE DATOS ............................................... 91 TABLA 0-11: JUEGO DE INSTRUCCIONES DE COMPARACIN ENTRE REGISTROS............................... 91 TABLA 0-12: JUEGO DE INSTRUCCIONES DE COMPARACIN ENTRE REGISTRO E INMEDIATO. .......... 92 TABLA 0-13: : JUEGO DE INSTRUCCIONES DE OPERACIONES ARITMTICAS ENTRE REGISTROS ........ 92 TABLA 0-14: JUEGO DE INSTRUCCIONES DE OPERACIONES ARITMTICAS ENTRE REGISTRO E
INMEDIATO ............................................................................................................................. 92

TABLA 0-15: JUEGO DE INSTRUCCIONES DE OPERACIONES LGICAS ENTRE REGISTROS .................. 92 TABLA 0-16: JUEGO DE INSTRUCCIONES DE OPERACIONES LGICAS ENTRE REGISTRO E INMEDIATO ............................................................................................................................................... 93 TABLA 0-17: JUEGO DE INSTRUCCIONES DE SALTO. ......................................................................... 93 TABLA 0-18: MAPEADO DE LA MEMORIA ......................................................................................... 94 TABLA 0-19: ORGANIZACIN DEL AREA DE MEMORIA DEDICADA A LOS PARMETROS DEL TIMERY
DEL WATCHDOG. .................................................................................................................... 94

TABLA 0-20: ZONA DE MEMORIA RESERVADA PARA LOS PUNTEROS A INTERRUPCIONES................. 95

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

1i}

1 INTRODUCCIN

1.1 Por qu usar un microcontrolador en una FPGA?


Tanto los microcontroladores como las FPGAs son capaces de implementar prcticamente cualquier funcin lgica. Sin embargo, cada uno tiene ventajas particulares en coste, rendimiento y facilidad de uso. Los microcontroladores se ajustan muy bien a tareas de control, adaptndose especialmente bien a los cambios de especificaciones. La programacin de secuencias de control o de mquinas de estado por medio de cdigo ensamblador es, por lo general, ms sencillo que la creacin de stas directamente en la propia FPGA. Los microcontroladores suelen tener limitado su rendimiento. Cada instruccin se ejecuta de forma secuencial, por lo que a medida que la aplicacin presenta mayor complejidad, el nmero de instrucciones necesarias crece, en detrimento del rendimiento del sistema. Sin embargo, mientras que el cdigo entre dentro de la memoria del micro, no se presentarn ms inconvenientes. Por otro lado, La implantacin del algoritmo directamente en la FPGA, siendo posible llevar a cabo el algoritmo de manera secuencial o en paralelo, consumindo una mayor cantidad de recursos de la FPGA a medida que se incrementa la complejidad de la aplicacin. Un softcore (micro sintetizable en una FPGA) auna lo mejor de estos dos mundos. As es posible ejecutar rutinas en el micro, mientras que ciertos procesos que necesitan respuestas rpidas o procesos paralelizados se ejecutan en hardware en la FPGA de forma externa al microprocesador.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

2i}

1.2 Estado del arte


Prcticamente todos los fabricantes de FPGAs proporcionan microprocesadores sintetizables n estas. Sin embargo, tal y como se ver a continuacin, bien por ser demasiado limitados, bien por estar sobredimensionados para esta aplicacin en concreto, no se ajustan a las especificaciones. A continuacin se ilustra una tabla resumen con los principales softcores existentes actualmente.

Procesador

Desarrollador

Cdigo abierto?

Soporte para bus

Notas

TSK3000A

Altium

No Sin regalas

Wishbone

32-bits

arquitectura

Harvard.

Incorpora multiplicador, divisor... 8-bits 64-bits 32-bits 8-bits 32-bits

TSK51/52 OpenSPARC T1 MicroBlaze PicoBlaze Nios, Nios II Mico32 LEON 3

Altium Sun Xilinx Xilinx Altera Lattice ESA

No - Sin regalas Si No Si No Si Si

Wishbone / 8051 No PLB, OPB, FSL, LMB No Avalon Wishbone AMBA

32-bits 32-bits; Especfico para ASIC,

OpenRISC

OpenCores

Si

Wishbone

Altera, Xilinx

AEMB

Shawn Tan Virginia CCM Lab Jan Gray Zylin AS Tech

Si

Wishbone

OpenFire

Si

OPB, FSL

32-bits

xr16 ZPU

No Si

XSOC abstract bus Wishbone

16-bits 16/32 bits

Tabla 1-1: Softcores disponibles en el mercado

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

3i}

1.2.1

Core ABC de Actel

Este micro proporciona interfaz con el bus APB. Presenta una estructura tipo Harvard en la que la memoria de programa queda sintetizada por medio de celdas lgicas (Hard program code storage) o mdulos de memoria interna de la propia FPGA (Soft program code storage). El micro queda constituido por seis bloques principales: Bloque de instrucciones. el cual contiene la memoria de programa as como el procedimiento de Fetch Secuenciador. Se trata del bloque que, a partir de la instruccin controla el funcionamiento de los diferentes elementos del micro. Alu y flags Bloque de almacenamiento. Comprende la RAM, los registros, la pila etc. Controlador del bus APB. Contenedor de la mquina de estados encargada de llevar a cabo las tareas de lectura y escritura en los esclavos del bus APB

En la Figura 1-1 puede apreciarse un diagrama funcional del micro.

Figura 1-1: Diagrama esquemtico del Core ABC de Actel.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

4i}

El micro permite configurar los siguientes parmetros: Ancho del bus de direcciones de APB Ancho de la memoria de programa o Permite determinar el nmero mximo de instruccines que podr presentar el cdigo ejecutable, siendo este un nmero comprendido entre 2 y 4,096 instrucciones. Nmero de puertos de entrada salida Nmero de flags de entrada/salida Tamao de la pila El inconveniente de este dispositivo es que presenta un nmero excesivamente alto de instrucciones, las cuales como se ver ms adelante, en su grn mayora no sern utilizadas para las aplicaciones en las que se desea trabajar, por lo cual se generar un gasto infructuoso de puertas lgicas en la FPGA. As mismo, tampoco es de cdigo abierto, por lo que una vez elegidos los parmetros de configuracin, lo que se nos proporciona es el micro en lgica de puertas y no es VHDL, lo que hace que sea dificil poder exportarlo a otras plataformas de otros fabricantes. 1.2.2 Core 8051 de Actel

Se trata de un procesador monociclo de 8 bits. Soporta hasta 13 interrupciones (con cuatro niveles de prioridad), est provisto de UART, dos contadores/timers y cuatro puertos de 8 bits de entrada/salida. Posee interfaz con el bus SFR con capacidad de direccionamiento de hasta 101 esclavos.

Figura 1-2: Esquema del Core8051 y su interfaz SFR

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

5i}

En general, las principales pegas de este micro es que no dispone de interfaz con el bus APB. La segunda gran pega es el ancho de palabra con el que trabaja el micro, pues con un ancho de palabra de solo 8 bits, las posibilidades del mismo se ven limitadas por debajo de los requerimientos. 1.2.3 PicoBlaze de Xilinx

Se trata de un Softcore de 8 bits desarrollado por Xilinxs, el cual presenta las siguientes caractersticas. 16 Registros de propsito general Alu con flags de zero y acarreo hasta 256 puertos de entrada/salida (sin soporte a bus) 64 bits de RAM Soporte de interrupciones (respuesta en 5 ciclos de reloj)

El equipo incorpora un juego de instrucciones reducido el cual comprende: Instrucciones de control de programa Instrucciones Lgicas (AND, OR, XOR) Instrucciones aritmticas (Suma y resta) Instrucciones de desplazamiento Instrucciones de Entrada/Salida Instrucciones relacionadas con interrupcines

En general, aunque este micro presenta buenas caractersticas de consumo de area, con un juego de instrucciones muy similar al necesario en la aplicacin de la que trata el presente proyecto, el problema es que peca por defecto, siendo muy limitado en determinados aspectos, como la ausencia de bus, poca capacidad de direccionamiento, limitado ancho de palabra, etc.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

6i}

Figura 1-3: Diagrama de bloques del PicoBlaze

1.2.4

MicroBlaze de Xilinx

Se trata de un micro de 32 bits con tres etapas de pipeline. Incorpora 87 instrucciones, 32 registros de propsito general y soporte para buses PLB, OPB, FSL y LMB El pipeline supone ciertos problemas con el cdigo lleno de saltos de los programas de control de flujo, y aunque el microprocesador incorpora delay slots, el consumo de area que este supone en una aplicacin con mltiples saltos no supone una ventaja. MicroBlaze utiliza el estndar CoreConnect de IBM, para conectar diferentes elementos en un circuito integrado. Un aspecto interesante es que CoreConnect permite reducir la carga capacitiva del bus, repartindola entre varios buses. As, se consiguen mayores rendimientos, dado que los retardos de pistas globales son muy importantes en FPGAs. La contrapartida a esto es un mayor consumo del cableado interno de la FPGA El MicroBlaze contiene una lnea de interrupciones, la cual al ser activada hace que el procesador ejecute una rutina de manejo de interrupciones correspondiente. En el caso de que el sistema necesite manejar ms de una interrupcin, ser necesaria la utilizacin de un perifrico especfico, que se encarga de multiplexar e identificar las diferentes fuentes de interrupcin.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

7i}

En general se trata de una mquina muy completa, sin embargo su consumo de celdas lgicas la hace desaconsejable. 1.2.5 Nios de Altera

Nios es Un softcore de 32 bits desarrollado por Altera para FPGAs de Altera, presentando un amplio abanico de capacidades que le hacen apto para aplicaciones desde control hasta DSP. Nios es comparable con MicroBlaze en cuanto a segmento de mercado, sin embargo, al contrario que este, tiene licencias de sntesis a terceras compaias (Synopsis). 1.2.6 LEON de la ESA

Se trata de un procesador de 32 bits desarrollado por la ESA, disponible en modo tolerante a fallos para aplicaciones aeroespaciales y de defensa, encontrndose disponible bajo licencia GNU PLD. La arquitectura del LEON3 est basada en el SPARC V8 implementando un pipeline de 7 etapas para datos e instucciones por separado, as como, de forma opcional, una unidad de punto flotante con capacidad para trabajar en simple y doble precisin. Incorpora interfaz con el bus AMBA AHB y es capaz de alcanzar una frecuencia de funcionamiento de hasta 140 MHz.

Figura 1-4: Diagrama de bloques del LEON3

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

8i}

El equipo proporciona inmuidad ante SEU (Single Event Upset), aspecto fundamental en aplicaciones espaciales debido a los altos niveles de radiacin (e incluso en aplicaciones terrestres con las nuevas tecnologas de (45-65 nm). En general, este dispositivo est orientado a funciones de tratamiento digital de la seal y, aunque es una mquina muy configurable, no encaja con los requerimientos de la aplicacin objetivo, ocupando un area excesiva para el rendimiento que se necesita en nuestra aplicacin. 1.2.7 Conclusiones

Tras un anlisis de los dispositivos actualmente existente en el mercado del que se han mostrado los ms destacados, se concluye que ninguno se ajusta exactamente a los requerimientos exigidos por una aplicaciin de control de flujo. A continuacin se enumeran los principales

inconvenientes: Arquitecturas demasiado complejas, con pipelines y/o juegos de instrucciones demasiado extensos. Redundando en un consumo de rea de la FPGA prescindible. Algunos micros estn demasiado especializados en un modelo o fabricante de FPGAs, no siendo exportables de forma sencilla a otros dispositivos. Rigidez para modificar el ancho de palabra, el nmero de interrupciones o los perifricos que incorpora, dificultando su adaptabilidad a aplicaciones particulares. Uso de buses distintos del AMBA (usado en Crisa) o sin soporte para buses. En definitiva, es necesario desarrollar un microprocesador que se ajuste a los requerimientos, supliendo todas las carencias detectadas en los actuales softcores.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

9i}

1.3 Motivacin del proyecto


La electrnica destinada a aplicaciones aeroespaciales se ve sometida a ambientes hostiles con niveles de radiacin electromagntica mucho mayores de los que sufrira en aplicaciones terrestres, que adems, al considerar la criticidad de las funciones desempeadas por estos elementos, puede conllevar prdidas de millones de euros. Para garantizar el buen funcionamiento de los dispositivos, la mayora de las misiones espaciales usan chips protegidos contra la radiacin denominados "Radhard. Estos Chips tienen caractersticas que los hacen especialmente resistentes a la radiacin csmica; contienen transistores adicionales que necesitan ms energa para encenderse y apagarse, de modo que la radiacin csmica no puede provocar su conmutacin tan fcilmente, por lo que son capaces de funcionar de forma correcta cuando otros chips se veran fuertemente afectados por la radiacin. Sin embargo, los chips "Rad-hard tienen sus contrapartidas, son caros, consumen ms potencia y son lentos hasta 10 veces ms lentos que un microprocesador equivalente en los modernos computadores personales de consumo. Adems, los microprocesadores pueden no presentar las caractersticas que ms se ajustan a la aplicacin requerida, quedando sobredimensionados, con el consiguiente desperdicio de recursos. Tal y como se ha visto en el punto 1.2 actualmente existen microprocesadores sintetizables en FPGAs, los cuales permiten la posibilidad de aprovechar el chip para llevar a cabo otras funciones lgicas adicionales en paralelo evitando de este modo consumo de tiempo de proceso. Sin embargo, dichos procesadores presentan caractersticas genricas, lo cual hace que no se ajusten fielmente a las caractersticas requeridas por la aplicacin, suponiendo un mal aprovechamiento de los recursos (area de la FPGA). Es pues, el objetivo del presente proyecto, dadas unas especificaciones iniciales, desarrollar un microprocesador sintetizable en una FPGA resistente a radiacin de modo que se ajuste fielmente a las exigencias de un tipo de cdigo (labores de control de flujo), evitando cualquier sobredimensionamiento.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

10i

1.4 Objetivos
Tal y como se ha comentado de forma previa, El objetivo del presente proyecto es desarrollar un microprocesador sintetizable en las FPGAs Proasic y RTAX de Actel para aplicaciones espaciales. Se deber hacer un estudio del cdigo para identificar los requerimientos de instrucciones, interrupciones si fueran necesarias, interfaz, uso de timers, etc. Una vez que se encuentren bien definidas los requerimientos se deber plantear un modelo de arquitectura que posteriormente ser implementado por medio del lenguaje VHDL. Finalmente se deber disponer de un bloque el cual pueda ser incorporado a un diseo, siendo capaz de interactuar de forma activa con el mismo con la finalidad de que este pueda ser sintetizado en una FPGA formando parte del equipo electrnico embarcado en un satlite, lanzador, etc.

1.5 Metodologa / Solucin desarrollada


En primera instancia se estudiarn las necesidades de la aplicacin a la que va destinado el microprocesador as como las caractersticas particulares de las familias de FPGAs de Actel a fin de encontrar aspectos aprovechables para el diseo del microprocesador. Posteriormente, se proceder a la codificacin y depuracin del hardware. A tal efecto, se subdividir el diseo en bloques simples, los cuales sern comprobados de forma independiente, para su posterior interconexin y comprobacin hasta alcanzar el nivel correspondiente al microprocesador completo.

1.6 Recursos / herramientas empleadas


Para el desarrollo del proyecto se emplearan las herramientas que figuran en la siguiente tabla:
Software HDS Designer Modelsim Funcin Diseo Simulacin Tabla 1-2: Software empleado en el proyecto.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

11i

2 ESTUDIO PRELIMINAR

2.1 Anlisis previo

2.1.1

Eleccin del dispositivo

La eleccin de las FPGAs sobre las que ser implantado el microprocesador es un aspecto impuesto de antemano. Al tratarse de dispositivos destinados a aplicaciones espaciales, estos deben de ser capaces de trabajar en entornos con altos niveles de radiacin electromagnticas. Dentro de este selecto grupo, las normas de la agencia espacial europea limitan el abanico de dispositivos disponibles a aquellos de empresas europeas o con foundrys en territorio europeo. As pues, las FPGAs a las que el microprocesador ir destinado de forma principal son las de la familia RTAX 2000/4000 y ProASIC de Actel (Aunque por su concepcin, deber ser facilmente exportable a otras plataformas).

Debido a que el microprocesador est destinado a implantarse sobre una familia concreta de FPGAs, es de recibo aprovechar los recursos que dichos dispositivos proporcionan a fin de optimizar lo mximo posible el diseo. A continuacin se enumeran los aspectos caractersticos de interes de las FPGAs a emplear: 2.1.2 Caractersticas de la familia RTAX 2000/4000

A nivel de chip, el dispositivo est organizado en varias celdas interconectadas. Cada una de dichas celdas se puede subdividir a su vez en 336 clusters y cuatro mdulos de SRAM (176 clusters y tres mdulos de SRAM en el caso del RTAX250S/SL) [vease Figura 2-1]

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

12i

Figura 2-1:Estructura de las FPGA's de la familia RTAX de Actel

Dispositivo RTAX250S/SL RTAX1000S/SL RTAX2000S/SL RTAX4000S

Nmero de celdas 4 celdas 9 celdas 16 celdas 30 celdas

Tabla 2-1: Nmero de celdas lgicas en los dispositivos de la familia RTAX de Actel

La arquitectura del RTAX-S/SL proporciona mdulos de RAM de alta velocidad. Adems, cada mdulo de 4.608 bits contiene su propio controlador de FIFO para generar el direccionamiento interno y los flags (FULL, EMPTY, AFULL, AEMPTY). Cada bloque de memoria funciona de forma sncrona, pudiendo alcanzar una frecuencia de funcionamiento mxima de 500 MHz. Puesto que es posible que las acciones de lectura y escritura tengan lugar de forma asncrona, el bloque de memoria est protegido para prevenir metaestabilidad adems de overflow y underflow. A continuacin se muestra un diagrama de la estructura de puertos de un bloque de memoria.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

13i

Figura 2-2: Modulo de memoria del RTAX-s/SL (Actel)

Cada bloque de memoria de 4.608 bits puede organizarse de diferentes formas en funcin del ancho de palabra 128x36, 256x18, 512x9, 1kx4, 2kx2, or 4kx1 pudiendo conectarse en cascada para generar tamaos mayores. A continuacin se muestra una tabla resumen con dicho aspecto:

Ancho de palabra

Posiciones de memoria

Bus de direcciones

Bus de datos

1 2 4 9 18 36

4,096 2,048 1,024 512 256 128

RA/WA[11:0] RA/WA[10:0] RA/WA[9:0] RA/WA[8:0] RA/WA[7:0] RA/WA[6:0]

RD/WD[0] RD/WD[1:0] RD/WD[3:0] RD/WD[8:0] RD/WD[17:0] RD/WD[35:0]

Tabla 2-2: Organizacin de la memoria en las FPGA's de la familia RTAX de Actel

Adems, al disponer de puertos de lectura y escritura independientes en cada bloque, es posible simultanear las operaciones de lectura y escritura.

Tal y como se coment previamente, cada celda de la FPGA se subdivide en clusters, los cuales estn formados por dos tipos posibles de celdas lgicas: Celdas tipo C [Figura 2-3] y celdas tipo R [Figura 2-4]

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

14i

2.1.2.1 Las celdas lgicas Existen dos tipos de celdas lgicas en esta familia de FPGAs con funciones bien definidas. El primer tipo son las celdas lgicas tipo C, las cuales estn destinadas a actuar configurando elementos de lgica combinacional. Se trata de una extensin de la implementacin de las celdas lgicas tipo C de la familia A54SX-A, donde el principal aadido es la incorporacin de una cadena de acarreo, util en la implementacin de funciones aritmticas. Las principales caractersticas de las celdas tipo C son: Inversor (DB) que puede usarse para elaborar la seal complementaria de cualquier seal de entrada. Entrada y salida de acarreo (propagacin en menos de 0.1 ns). Hardwired con la celda lgica precendente, para facilitar la sntesis de funciones lgicas complejas.

Figura 2-3: Celda C

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

15i

En lo referente a las celdas tipo R, estas estn especializadas en la implementacin de elementos de lgica secuencial. Se trata de una mejora de las celdas tipo R de la familia A54SX-A, incorporando entradas de reloj adicionales as como presets y clears globales. Las principales caractersticas de las celdas tipo R se enumeran a continuacin: Conexin directa con el Mdulo lgico tipo C precedente, proporcionando conexiones con un retardo menor de 0.1 ns. Posibilidad de uso como Flip-Flop en solitario, controlada por una celda tipo C o por mdulos de entrada/salida. Clear asncrono independiente.

Figura 2-4: Celda R

Figura 2-5: Detalle de las conexiones directas entre celdas lgicas.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

16i

En la Figura 2-6 y en la Tabla 2-3 se muestra la evolucin temporal as como los tiempos en el peor caso posible para la operacin con Flip-Flops sintetizados por medio de celdas lgicas tipo R.

Figura 2-6: Evolucin temporal de ls seales en un Flip-Flop formado por celdas R

Tabla 2-3: Tiempos asociados a la figura previa en el peor caso posible.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

17i

2.1.2.2 Topologa de la memoria Tal y como se coment, La FPGA incorpora mdulos de memoria RAM, a contiuacin se analizarn sus caractersticas (Figura 2-7).

Figura 2-7: Evolucin de las formas de onda en operaciones de lectura y escritura

En la Tabla 2-4 se indican los tiempos asociados, en el peor caso posible, a las operaciones de escritura y lectura mostradas en la figura anterior.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

18i

Tabla 2-4: Tiempo asociados a la lectura y escritura en Ram

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

19i

2.1.3

Caractersticas de la familia ProASIC

Los dispositivos ProASIC disponen de dos bloques de memoria SRAM de dos puertos (uno de lectura y otro de escritura), ubicados en la parte superior e inferior del dispositivo, que pueden actuar bien como fifo, bien como RAM.

Figura 2-8: Organizacin interna de la PFGA ProASIC

Cada bloque de memoria puede ser utilizado de forma independiente o como parte de un conjunto de ellos para obtener bloques de memoria mayores. En la siguiente tabla se ilustran el nmero de celdas de memoria (256x9) en funcin del dispositivo.
Banco de memorias Dispositivo APA075 APA 150 APA300 APA450 APA600 APA750 APA1000 inferior 0 0 16 24 28 32 44 superior 12 16 16 24 28 32 44 Mximo ancho D 256 256 256 256 256 256 256 W 108 144 144 216 252 288 396 Mxima profundidad D 1536 2048 2048 3072 3584 4096 5632 W 9 9 9 9 9 9 9

Tabla 2-5: Configuracin de la memoria en una pastilla ProASIC en funcin del dispositivo

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

20i

En lo referente a las celdas lgicas, estas presentan interruptores con memoria flash para proporcionar reprogramabilidad y no volatilidad del circuito. Cada celda lgica presenta tres entradas (las cuales pueden o no ser invertidas) y una nica salida. Pudiendo actuar como una funcin lgica de hasta tres entradas en si misma. As mismo, tambin es posible su configuracin como flip-flop, empleando una celda lgica completa para cada uno.

Figura 2-9: Celda lgica ProASIC

En la Tabla 2-6 se muestran los retardos generados por diferentes circuitos lgicos sintetizados con celdas lgicas en una FPGA de la familia ProASIC. Los retardos se muestran para el peor caso posible

Tabla 2-6: Retardos de diferentes circuitos lgicos.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

21i

2.1.4

Topologa de la memoria

La memoria Ram integrada en el dispositivo puede ser usada de forma sncrona o asncrona. En la

Tabla 2-7: Seales que intervienen en la operacin de la moria SRAM

2.1.4.1 Lectura sncrona En la Figura 2-10 se muestra la evolucin de las seales durante una operacin de lectura sncrona de un banco de memoria SRAM mientras que en la Tabla 2-8 se muestran los retardos correspondientes.

Figura 2-10: Operacin de lectura sncrona de la memoria SRAM

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

22i

Tabla 2-8:Retardos asociados a la lectura sncrona de la SRAM

2.1.4.2 Lectura asncrona Por otro lado, tambien es posible llevar a cabo la lectura de forma asncrona del banco de memoria SRAM, en la Figura 2-11 se muestra la evolucin de las seales, mientras que en la Tabla 2-9 se muestran los retardos asociados.

Figura 2-11: Lectura asncrona de la memoria SRAM

Tabla 2-9: Retardos asociados a la lectura asncrona de la SRAM

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

23i

2.1.4.3 Escritura sncrona En el caso de la escritura sncrona, esta solo toma un ciclo de reloj en llevarse a cabo, en la siguiente figura se muestra la evolucn de las seanles as como los retardos asociads en la Tabla 2-10

Figura 2-12Escritura sncrona sobre la memoria SRAM

Tabla 2-10: Retardos asociados a la escritura sncrona de la SRAM

2.1.4.4 Escritura asncrona Finalmente se muestra el caso de la escritura sobre la SRAM en modo asncrono

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

24i

Figura 2-13: Escritura asncrona sobre la memoria SRAM

Tabla 2-11: Retardos asociados a la escritura asncrona de la SRAM

2.1.5

Conclusin

Tras este anlisis se determina la notable diferencia de velocidad entre la gestin de datos por medio del acceso a la memoria RAM del propio dispositivo y el uso de registros dedicados. As pues ser recomendable, en la medida de lo posible, realizar todos los procesos posibles por medio del uso de registros, destinndose un rol de respaldo a la RAM (funcionamiento tipo carga-almacenamiento). As mismo, se disponen de datos significativos sobre las velocidades mximas de trabajo, siendo posible la estimacin del mnimo ciclo de reloj del microprocesador. Para ms informacin sobre las FPGAs, remitase a la web del fabricante: http://www.actel.com/

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

25i

2.2 Estudio del cdigo tipo


Dado que se trata de un softcore a medida es necesario el estudio del tipo de cdigo al que va a ir enfocado, as pues, a continuacin se muestra un ejemplo, en forma de pseudocdigo, de una etapa del mismo.
OPERATIONS if CS = OFF set DANS.EN = T end if set CS = STANDBY if FLAG:FDIR = T set FLAG:FDIR = F set S.BSOC.TRIP = F set S.ACCOC.TRIP = F set S.ND.TRIP = F set S.CD.TRIP = F end if set FDIR.EN = T set NTFC.LOOP.EN = P.NTFC.LOOP.EN set MTFC.LOOP.EN = F set CTFC.LOOP.EN = F set AN.I = 0 set MH.I = 0 set CTFC.DR = 0 set NTFC.DR = P.NTFC:DR set MTFC.DR = 0 set AN.I = P.AN.I.PROFILE (0) set BS.MODE = P.BS.MODE set AN.EN = F for n = 0 to 4 if BS.MODE[n] = T BS.COUNT = BS.COUNT + 1 end if end loop set NFV.EN = F set CTFC.EN = F set MTFC.EN = F set NTFC.EN = P.NTFC:EN if P.NS = CONFIGURE null else if P.NS = MANUAL null else if P.NS = STARTUP or P.NS = DISCHARGE or P.NS = THRUST ACC.MODE = ACC AN.MODE = AN else if P.NS = SHORTCLEAR null else null end if [120] 60 MANUAL [300] CONFIGURE [200] DELAY (ms) 240 NEXT STATE [ST ID]

STARTUP [400] SHORTCLEAR [700]

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

26i

En el fragmento de cdigo previamente mostrado se pueden destacar los siguientes aspectos: Uso intensivo de flags tanto en verificacin de su estado, como en asignacin Existencia de operaciones artmticas limitadas practicamente a la gestion de bucles y contadores. Aparicin de retardos de duraciones variables a lo largo del cdigo. El cdigo se divide en etapas. o Cada etapa es un bucle infinito en si misma o Bajo ciertas condiciones, se realiza el cambio de etapa, es decir, salto a otro de los bucles infinitos. Existe un uso intensivo de interrupciones (con un nmero elevado de rutinas de interrupcin). Adicionalmente son requisitos: Toda la comunicacin debe realizarse por medio del bus APB El ancho de los parmeros es variable, pudiendo ser: o Flags o palabras ente 8 y 16-bits en complemento a 2 En base a esto, se toman las siguientes decisiones de cara a la especificacin de la arquitectura. El interfaz APB estar mapeado en memoria as como los parmetros de timers, interrupciones, etc. para flexibilizar el sistema de cara a posibles ampliaciones. El ancho de palabra del micro ser de 16 bits Se incorporar un alu capaz de hacer sumas y restas en complemento a 2 as como de llevar a cabo comparaciones, operaciones lgicas bit a bit y de verificar el estado de un bit en concreto dentro de la palabra.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

27i

2.3 El protocolo APB


El protocolo APB (Advanced Peripheral Bus) es parte de la familia de protocolos de AMBA 3. Se trata de un interfaz de bajo coste, optimizado para un consumo mnimo de energa as como el area de puertas empleada. El APB es un protocolo no pipelinezado, todas las transiciones en las seales tienen lugar ante un flanco ascendente de reloj, para facilitar su integracin en cualquier diseo. Toda transferencia toma al menos dos ciclos (pudiendo ser ms en caso aadir estados de espera) 2.3.1 Seales del bus APB

Las seales relacionadas con el bus APB suelen referirse con la letra P como prefijo. Son las siguientes: PADDR. Bus de direcciones APB PSEL. Seal de seleccin del esclavo x APB. PENABLE. Seal de habilitacin. Se usa para sincronizar la transferencia. PWRITE. A nivel alto indica acceso de escritura, a nivel bajo acceso de lectura. PRDATA. Bus de datos en transferencias de lectura. PWDATA. Bus de datos en transferencias de escritura. PREADY. Indica cuando se ha completado la operacin de lectura o escritura. PSLVERR. En estado activo, indica que algn error ha sucedido durante la transferencia.

El protocolo, en la versin de AMBA 3 incorpora cobertura de errorres y espera. As pues, una instruccin de lectura o escritura en un escavo APB se da de la siguiente forma:

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

28i

2.3.2

Operacin de escritura con espera y sin error

Figura 2-14: Operacin de escritura en un esclavo APB.

La transferencia se inicia con la activacin tras un flanco de subida de reloj, de la seales PSEL y PWRITE. As mismo, en PADDR, se transmite la direccin del esclavo objetivo y en PWDATA el dato a ser escrito. La segunda fase se alcanza cuando se activa la seal PENABLE, Permanecindose en este estado hasta la activacin de PREADY, momento en el que finaliza la operacin, tal y como se detalla en la Figura 2-14. De esta forma es posible trabajar con esclavos que requieran de varios ciclos de reloj para responder. 2.3.3 Operacin de lectura con espera y sin error

En el caso de la operacin de lectura, todo el protocolo es idntico con la salvedad de que la seal PWRITE se fija a 0 y el valor de PWDATA carece de relevancia. As mismo, el valor de PRDATA es fijado por el esclavo, como se aprecia en la Figura 2-15.

Figura 2-15: Operacin de lectura de un esclavo APB.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

29i

2.3.4

Operacin de escritura con error

En el caso de la operacin de escritura erronea, toda la operacin es idntica de la de escritura exitosa, con la salvedad de que en este caso, al mismo tiempo que el esclabo fija la seal PREADY a 1, tambien fija a 1 la sean PSLVERR, como indicacin de que algo ha fallado durante la operacin, tal y como se aprecia en la Figura 2-16.

Figura 2-16: Operacin de escritura erronea en un esclavo APB

2.3.5

Operacin de lectura con error

Finalmente, en el caso de las operaciones de lectura con error, las seales son la conjuncin de la operacin de lectura previamente explicada (2.3.3) con la operacin con indicacin de error del punto anterior, tal y como se puede observar en la Figura 2-17.

Figura 2-17: Operacin de lectura erronea en un esclavo APB

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

30i

2.3.6

Diagrama de fases del protocolo APB

Es posible representar las fases del protocolo ABP de una forma esquemtica por medio del diagrama mostrado en la Figura 2-18

Figura 2-18: Diagrama de fases del protocolo APB

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

31i

3 ARQUITECTURA DEL MICROPROCESADOR

3.1 Especificacin de la arquitectura


El core responde a las caractersticas de un microprocesador tipo RISC con una arquitectura Harvard, es decir, con memorias independientes para el cdigo de programa y los datos. El circuito trabaja con un ancho de palabra de 16 bits, siendo este tambien el ancho de palabra del contador de programa. Se establecen un total de 16 registros, dentro de los cuales, el registro n0 se encuentra de forma permanente con el valor 0 almacenado en el. Cualquier escritura sobre dicho registro es ignorada. El microprocesador trabaja con instrucciones rpidas, las cuales en su mayoria toman tan solo un ciclo de reloj para su ejecucin. Es pues que se podra considerar un microprocesador monociclo pero con modificaciones. Dichas excepciones se dan en las operaciones de acceso a memoria, las cuales dependiendo de si trabajan sobre memoria RAM, bus APB u otro elemento pueden tomar dos o ms ciclos de reloj. El equipo presenta una mecnica de funcionamiento tipo carga-

almacenamiento; todas las operaciones aritmticas, lgicas, comparaciones, etc tienen lugar entre registros o entre registros e inmediatos. Por tanto, para operar con parmetros almacenados en memoria, primero ser necesario hacer una copia desde la RAM al banco de registros, para posteriormente llevar a cabo la operacin deseada. Tambien se dispone de soporte para interrupciones. Es posible gestionar hasta 16 interrupciones, con prioridad fija (siendo la interrupcin 0 la menos prioritaria y la 15 la ms prioritaria) y sin que exista anidamiento de estas. Tampoco se contempla el almacenamiento del contexto, delegndose esta tarea al

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

32i

programador. De este modo se logra almacenar solamente los registros que sean utilizados por la rutina de interrupcin, agilizando el funcionamiento del equipo. Los punteros asociados a las rutinas de interrupcin as como las flags que las habilitan se encuentran mapeados en memoria, por lo que tanto la lectura como la escritura de sus parmetros se llevan a cabo del mismo modo que si se efectuara sobre la memoria propiamente dicha. Se dispone de un timer interno, (vease el apartado 4.3.5) cuyo estado nicamente es accesible como llave para la instruccin de salto condicional asociado a una seal interna (jmpsig.). Este elemento tambien se encuentra mapeado en memoria, por lo que cualquier manipulacin del mismo se lleva a cabo por medio de las instrucciones de manejo de datos movmr y movrm (vease el apartado 3.2) Se dispone de interfaz con el bus AMBA 3 APB, con soporte de errores y espera. En caso de error, este es verificable por la instruccin de salto condicional jmsig segn se explic en el punto 2.3. En el caso de que durante una operacin sobre el bus APB se detecte algn error, se activar un indicador de fallo en el bus APB (el cual permanecer en dicho estado hasta la siguiente operacin de lectura o escritura en el bus APB) la cual es accesible por la instruccin de salto condicional jmpsig. De este modo, es posible detectar y repetir operaciones fallidas si fuera necesario. Tambien se implementa un watchdog. Dicho dispositivo se inicializa deshabilitado, siendo necesaria su activacin por parte del programador si es necesario. Una vez encendido actua como un timer, con la salvedad de que si el contador llega a cero, el puerto de salida del micro watchdog_state pasa a estado activo. El objetivo de esto es permitir reiniciar, no solo el procesador, si no tambien elementos externos ligados al micro.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

33i

3.2 El juego de instrucciones


El micro dispone de un juego reducido de instrucciones las cuales se ilustran agrupadas en familias a continuacin para, posteriormente ser explicadas de forma detallada.

Cdigo de operacin 6 bits Movrm Movmr Movir Movrr 4 bits N Reg N Reg N Reg N Reg N Reg 4 bits

Argumentos 12 bits Mem addr Mem addr inmediato

Tabla 3-1: Juego de instrucciones de movimiento de datos

Cdigo de operacin 6 bits Cmpgt_rr Cmpge_rr Cmpeq_rr Cmple_rr Cmplt_rr Cmpbit_rr 4 bits N Reg N Reg N Reg N Reg N Reg N Reg 4 bits N Reg N Reg N Reg N Reg N Reg N Reg

Argumentos 12 bits

Tabla 3-2: Juego de instrucciones de comparacin entre registros.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

34i

Cdigo de operacin 6 bits Cmpgt_ri Cmpge_ri Cmpeq_ri Cmple_ri Cmplt_ri Cmpbit_ri 4 bits N Reg N Reg N Reg N Reg N Reg N Reg

Argumentos 16 bits Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato

Tabla 3-3: Juego de instrucciones de comparacin entre registro e inmediato.


Cdigo de operacin 6 bits Addrr Subrr 4 bits N Reg N Reg 4 bits N Reg N Reg Argumentos 4 bits N Reg N Reg 8 bits

Tabla 3-4: : Juego de instrucciones de operaciones aritmticas entre registros


Cdigo de operacin 6 bits Addri Subri 4 bits N Reg N Reg Argumentos 16 bits inmediato inmediato

Tabla 3-5: Juego de instrucciones de operaciones aritmticas entre registro e inmediato


Cdigo de operacin 6 bits And_rr Or_rr Xor_rr 4 bits N Reg N Reg N Reg 4 bits N Reg N Reg N Reg Argumentos 4 bits N Reg N Reg N Reg 8 bits

Tabla 3-6: Juego de instrucciones de operaciones lgicas entre registros

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

35i

Cdigo de operacin 6 bits And_ri Or_ri Xor_ri 4 bits N Reg N Reg N Reg

Argumentos 16 bits Inmediato Inmediato inmediato

Tabla 3-7: Juego de instrucciones de operaciones lgicas entre registro e inmediato


Cdigo de operacin 6 bits Jmpt Jmpf Jmpuc Jmpsig End 4 bits Argumentos 16 bits PC PC PC PC

Tabla 3-8: Juego de instrucciones de salto.

3.2.1

Las instrucciones de movimiento de datos

Este tipo de instrucciones son las encargadas de copiar las palabras entre memoria y registros o entre registros. Se trata del nico grupo de instrucciones que tienen acceso a la lectura y a la escritura de memoria. Las instrucciones de movimiento de datos se subdividen en: 3.2.1.1 Instrucciones movrm y movmr Estas instrucciones presentan el siguiente formato:

Mov**

N Reg

Mem addr

Donde Mem addr tiene 16 bits de ancho e indica la posicin de memoria origen/destino, mientras que N Reg toma 4 bits y seala el registro del que se

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

36i

tomarn daros (movrm) o del cual se extraern datos para su escritura en memoria (movrm). En lo referente a la duracin de la instruccin, sta depende de la zona de memoria a la que se acceda (vease 4.3.1 Mapeo de memoria): Si el acceso se realiza sobre las areas de datos de los timer o de los punteros asociados a las interrupciones, la operacin es inmediata, durando la instruccin solo un ciclo de reloj. En el caso de que la escritura se lleve a cabo sobre la memoria RAM, la operacin de lectura tomar dos ciclos de reloj, mientras que la operacin de escritura se completar en solo uno. Si por el contrario, la operacin se lleva a cabo sobre el bus APB, el nmero de ciclos de reloj necesarios pueden variar considerablemente en funcin de los estados de espera (vease el punto 2.3 El protocolo APB). La instrucin lanza la orden de lectura o escritura sobre la memoria proporcionando la direccin de lectura (extraida de la instruccin) y conmutando los multiplexores de acceso al banco de registros de la forma adecuada. Es deber del programador conocer el segmento de memoria sobre el que se debe escribir para actuar sobre el elemento deseado (RAM, bus APB, timer....). 3.2.1.2 Instruccin movir Esta instruccin presenta el formato:

N Reg

Inmediato

Donde Inmediato es una palabra de 16 bits de ancho, mientras que N Reg toma 4 bits y seala el registro en el cual escribir el inmediato. En este caso, se vuelca el contenido del campo Inmediato sobre el registro, perdindose cualquier informacin alacenada en ste de forma previa. Es necesario tener presente que cualquier escritura sobre el registro cero ser ignorada.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

37i

Toda la instruccin necesita un tiempo muy corto para completar su escritura; pues solo hay que conmutar el multiplexor que selecciona el valor de entrada del banco de registros y almacenarlo en el mismo, por lo que con un solo ciclo de reloj, la operacin se completa. 3.2.1.3 Instruccin movrr Esta instruccin se limita a copiar el contenido de un registro a otro, siendo de la forma:

N Reg#1

N Reg#2

En este caso, el contenido del registro #1 se copia sobre el registro #2 necesitndose para completarse la instruccin tan solo un ciclo de reloj. De nuevo es importante tener presentes las consideraciones comentadas en el epgrafe anterior.

3.2.2

Las instrucciones de comparacin

Estas instrucciones comparan bien un registro con un inmediato, bien con un registro. Siendo la instruccin de la forma:

N Reg N Reg N Reg

Inmediato

En lo referente a la duracin de la instruccin, la instruccin movmr toma un nico ciclo de reloj. El resultado de la comparacin no est accesible para su manipulacin con los registros o memoria, si no que se presenta en un flag especfico en la forma de true/false, el cual es empleado por las instrucciones de salto (vease el punto 3.2.5).

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

38i

Es posible dividir esta familia de instrucciones en dos grandes grupos: 3.2.2.1 Las instruccines cmp puramente comparativas En funcin de la instruccin, se activar la seal de comparacin cuando el registro sea estrictamente mayor (gt) ,mayor o igual(ge), igual(eq), menor o igual(le) o estrictamente menor (lt) 3.2.2.2 La instruccin cmpbit En este caso, no se trata de una instruccin de comparacin estrictamente hablando, aunque su funcin es similar. Esta instruccin verifica el estado concreto de un bit dentro el registro, siendo de gran utilidad para verificar el estado de un flag dentro de una palabra. El nmero del bit a verificar viene determinado por los cuatro bits menos significativos del inmediato o del registro complementario (en funcin del formato de la instruccin). El estado del bit en cuestin se fija como resultado de la instruccin de comparacin, siendo accesible tan solo por una instruccin de salto condicional. 3.2.3 Las instrucciones aritmticas

Este conjunto de instrucciones realizan operaciones aritmticas (suma o resta) sobre los operandos suministrados. Pudiendo presentar estas dos configuraciones:
N Reg N Reg#1 N Reg#2 Inmediato N Reg#3

En el caso de la instruccin con registro e inmediato, el resultado de la operacin se escribe sobre el propio registro, perdindose el valor anterior. Esta instruccin presenta su principal aplicacin en bucles for, en los que el contador se incrementa peridicamente con un valor fijo. En el otro formato de instruccin, el contenido del registro#2 se suma o resta al contenido del registro#1, almacenndose el resultado sobre el registro marcado como #3.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

39i

En lo respectivo al tiempo de ejecucin, estas instrucciones son lo suficientemente simples como para poder llevarse a cabo en un nico ciclo de reloj.

3.2.4

Las instrucciones lgicas

Estas instrucciones efectuan una operacin lgica AND, OR, XOR bit a bit sobre los operandos. As pues pueden presentar los siguientes formatos:

N Reg N Reg#1 N Reg#2

Inmediato N Reg#3

Del mismo modo que sucedia con las instrucciones aritmticas, en el caso de la instruccin con registro e inmediato, el resultado de la operacin se escribe sobre el propio registro En el otro formato de instruccin, el contenido del registro#2 se suma o resta al contenido del registro#1, almacenndose el resultado sobre el registro marcado como #3. En lo referente al tiempo necesario para completar la operacin, estas instrucciones son lo suficientemente simples como para poder llevarse a cabo en un nico ciclo de reloj. 3.2.5 Las instrucciones de salto

En este caso, a tenor del resultado de una instruccin de comparacin previa (vease apartado 3.2.2), del estado del timer del resultado de una manipulacin previa del bus APB, se efectua, en caso de que la condicin se cumpla, un salto a la direccin de memoria de programa indicada por el puntero incluido en la instruccin. En caso contrario, el contador de programa se incrementa normalmente. Esta familia de instrucciones presenta el siguiente formato:
Puntero

Dentro de la familia existen diversas instrucciones:

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

40i

3.2.5.1 La instruccin Jmpt En esta clase de instruccin, el salto se produce si la ltima instruccin de comparacin efectuada dio un resultado de verdadero 3.2.5.2 La instruccin Jmpf Se trata de la anttesis de la instruccin previa, en este caso el salto se produce si la ltima instruccin de comparacin efectuada dio un resultado de falso 3.2.5.3 La instruccin Jmpuc En este caso, el salto se da siempre, con independencia de cualquier comparacin previa. 3.2.5.4 La instruccin Jmpsig En este caso el salto viene asociado a una seal interna del microprocesador. Existen dos casos contemplados: Timer interno: En este caso, el salto queda supeditado a la finalizacin o no de la cuenta por parte del timer interno Transferencia erronea del bus APB: En este caso, el salto tiene lugar en funcin del estado del testigo APB_fault, es decir, de la correcta finalizacin o no de la ltima operacin sobre el bus APB. Cual de estas dos alternativas es empleada es determinado por medio del bit n19 (a 0 para el estado del timer y a 1 para la seal de error del bus APB), mientras que el estado en el que produce el salto queda fijado por el estado del bit n18. 3.2.5.5 La instruccin End Aunque no se trata estrictamente de una operacin de salto del mismo modo que las anteriores, se engloba dentro del mismo grupo. Esta instruccin se ejecuta para finalizar una rutina de interrupcin y provoca la devolucin del control a la rutina principal.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

41i

3.2.5.6 La instruccin nula Aunque no es estrictamente una instruccin, se tratar igualmente. Esta instruccin (la cual se corresponde con todos los bits de la palabra de instruccin a cero) no desencadena ninguna accin en el procesador ms all del normal incremento en el contador de programa. Se trata de una instruccin no funcional pero imprescindible para cubrir todo el espacio de direccionamiento de memoria no ocupado por ninguna instruccin.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

42i

4 IMPLANTACIN

4.1 Visin general


En la Figura 4-1 se puede apreciar una visin general de la organizacin del micro. Se dispone de dos bancos de registros con escritura simultanea que operan sobre la ALU (en el caso del operando B, este puede ser tambien un inmediato). La memoria RAM se encuentra externalizada, mientras que el bus APB posee un bloque dedicado a su gestin.
p_mux 10 alu_result memory_dout : (15:0) inmediate : (15:0) opa

reg_din reg_waddr reg_wenable reg_din reg_waddr reg_wenable clk rst_n

pfc_memory regs U_2 din w_addr w_enable clk reset_n g_word_width = 16 g_n_regs = 16 pfc_memory regs U_3 reg_din reg_waddr reg_wenable clk rst_n din w_addr w_enable clk reset_n g_word_width = 16 g_n_regs = 16 ( integer ) ( integer ) dout r_addr ( integer ) ( integer ) opcode : (5:0) p_mux_opb7 regb 13 regb_addr inmediate : (15:0) mux_opb dout r_addr opa rega_addr pfc_alu alu2 U_4 opa result cmp_result alu_result cmp_result

reg_din_mux

opb

alu_opcode

opb rst_n rst_n g_word_width = 16 ( integer )

pfc_core core_control2 U_5 opa memory_dout : (15:0) memory_din : (15:0) memory_dout : (15:0) rega_addr : (3:0) regb_addr : (3:0) mux_opb ram_dout ram_din ram_dout : (15:0) ram_din : (15:0) ram_dout : (15:0) ram_din : (15:0) reg_din_mux : (1:0) reg_waddr : (3:0) reg_wenable opcode : (5:0) ram_enable ram_rw cmp_result inmediate : (15:0)

rega_addr regb_addr mux_opb reg_din_mux reg_waddr reg_wenable opcode : (5:0) cmp_result inmediate : (15:0)

ram_enable ram_rw

ram_enable ram_rw

ram_addr p_ram_ready 1

ram_addr : (13:0)

ram_addr : (13:0)

ram_ready

ram_ready

watchdog_state

watchdog_state

pfc_apb apb_mstr U_1 paddr prdata pwdata psel penable pready pslverr pwrite clk rst_n paddr prdata pwdata psel penable pready pslverr pwrite addr apb_addr : (13:0) apb_addr : (13:0)

wdata rdata start_wr start_rd

apb_wdata : (15:0) apb_rdata : (15:0) apb_start_wr apb_start_rd

apb_wdata : (15:0) apb_rdata : (15:0) apb_start_wr apb_start_rd

ready clk rst_n apb_fault

apb_ready apb_fault

apb_ready apb_fault

g_apbbusaddr_width = 14 g_word_width = 16 interrupt_vector

( integer ) ( integer ) interrupt_vector : (15:0) clk rst_n clk rst_n

clk rst_n

G G

Figura 4-1: Organizacin general del micro

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

43i

4.2 LA ALU
La alu procesa, en funcin del estado actual de los operandos, todas las funciones en paralelo, poniendo en la salida tan solo el resultado correspondiente con el actual opcode, tal y como se aprecia en el siguiente diagrama funcional (se dispone de un esquema ms detallado en el tomo de planos):
alu_opcode opa opb rst_n pfc_common add_c2 U_0 opa opb a b s add_result opa p_mux1 2

result cmp_result

rst_n

rst_n g_nbit_a = 16 g_nbit_b = 16 pfc_common sub_c2 U_1 ( integer ) -- nbit b >= nbit a ( integer ) -- nbit b >= nbit a

opa opb

a b

sub_result

rst_n

rst_n g_wide = 16 pfc_common comp2v_c2 U_2 ( integer )

opa opb opb

a a_max a_min

over under

comp_over comp_under

rst_n

rst_n g_wide = 16 pfc_common logic U_3

( integer )

opa opb

a b

s operation

logic_result logic_operation

rst_n

rst_n g_nbit = 16 pfc_common flag_state U_4 ( integer ) --n_bit_a=n_bit_b

opa opb

opa opb

flagstate

flag_state_result

rst_n

rst_n g_word_width = 16 ( integer ) rst_n

Figura 4-2: Esquema funcional del ALU El motivo de esto es la reduccin de la lgica empleada en el manejo de las instrucciones y por tanto, del area ocupada por la unidad. El incremento en el nmero de conmutaciones de puertas al funcionar simultneamente los cinco bloques se consideran un mal necesario.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

44i

A continuacin se pormenorizan los diferentes bloques integrados en el ALU. 4.2.1 El bloque sumador

Este bloque realiza, de forma asncrona, la suma de los operandos A y B. El ancho de los operandos viene determinado por genricos, por lo que se trata de un bloque muy flexible en su implantacin, pudiendo adaptarse con solo modificar el valor del genrico correspondiente a cualquier ancho de palabra. Una ventaja evidente de dicha flexibilidad viene dada en las simulaciones, en las que fijando un ancho de palabra menor, es posible realizar una simulacin de todos los casos posibles con un menor nmero de operaciones. 4.2.2 El bloque restador

Este bloque es el complementario del bloque sumador, presentando grandes similitudes con el mismo. Obviamente, en este caso, la operacin aritmtica efectuada es la resta, pero por lo demas, es idntico, incluido el ancho variable de palabra, gestionado por valores genricos. 4.2.3 El bloque comparador

Este bloque, compara internamente el valor de la entrada (OPA) con otros dos parmetros denominados como lmite superior y lmite inferior (Ambos conectados con el operando OPB). En el caso de que el parmetro de entrada sea mayor que el valor mximo, se activa la seal over, mientras que si se encuentra por debajo del valor mnimo, se activa la seal Under. As, por medio de operaciones combinacionales es posible obtener todo el espectro de comparaciones:
over AND (NOT under) NOT under (Not over) AND (NOT under) NOT over under AND (NOT over) Estrictamente mayor Mayor o igual Igual Menor o igual Estrictamente menor

Tabla 4-1: Obtencin de los resultados de la comparacin

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

45i

4.2.4

El bloque lgico

Este bloque proporciona el resultado de realizar la operacin lgica indicada bit a bit entre los operandos OPA y OPB. La operacin a realizar es suministrada por el proceso p_mux en funcin del opcode. 4.2.5 El bloque flag state

Este bloque est fuertemente orientado a la verificacin de flags. Toma el operando OPA (Considerado como array de flags) y los cuatro bits menos significativos de OPB, dando como resultado el estado del bit de OPA indicado por los cuatro bits menos significativos de OPB

OPA

OPB (3 downto 0)

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

46i

4.3 Circuito de control


En el bloque de control se integran tanto los procesos de Fetch y la decodicifacin de las instrucciones como la gestin de las interrupciones, el watchdog, as como la gestin del timer interno y el multiplexado del acceso a memoria. En la siguiente figura se muestra un diagrama funcional de la organizacin del bloque de control (se dispone de un esquema ms detallado en el tomo de planos):

memory_dout memory_din p_mem_mux 1 p_timer_parameters 5 timer_di n timer_dout ram_dout ram_din timer_addr timer_write timer_read top_value preescale start_timer clk rst_n pfc_timers timer U_0 top_value preesc ale start clk rst_n g_timer_width = 16 g_preescale_width = 16 ( integer ) ( integer ) done p_fetch 2

mem_addr mem_wri te mem_read

p_decod 3

timer_state

next_op

ram_enable ram_rw

timer_data_ready

ram_addr ram_ready watchdog_data watchdog_addr

pfc_timers watchdog U_3 watchdog_data watchdog_addr watchdog_state watchdog_state pc _jump jump rega_addr

c lk rst_n apb_addr

clk rst_n

regb_addr mux_opb

reg_din_mux reg_waddr reg_wenable interrupt_din interrupt_dout interrupt_addr interrupt_wri te interrupt_read pfc_core prog_mem U_1 pc ins tructuc tion interrupt_vector g_instruction_width = 26 g_nbit_pc = 16 ( integer ) ( integer ) interruption_end mem_ready apb_fault pc i nstructuction cmp_result p_interrupt_handle 4 interruption_pc interruption_start interruption_end

apb_wdata apb_rdata apb_start_wr apb_start_rd apb_ready

inmediate

opcode

interrupt_data_ready

c lk rs t_n

Figura 4-3: Diagrama funcional del control.

A continuacin se detallan cada uno de los diferentes procesos que tienen lugar en el control del micro.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

47i

4.3.1

Mapeo de memoria

Tanto la escritura en el bus APB como el manejo de los punteros asociados a las interrupciones, los parmetros del timer y la propia memoria se llevan a cabo de forma transparente para el usuario por medio de la escritura en diferentes sectores de la memoria. A tal efecto, la escritura de la memoria queda segmentada de la siguiente forma:

Direccin 0x FFFF 0x F000 0x BFFF 0x B000 0x 7FFF 0x 7000 0x 3FFF 0x3000

Contenido Ram

Maestro de APB

Interrupciones

Timer y watchdog

Tabla 4-2: Mapeado de la memoria

La razn de este mapeo de memoria es, por un lado la posibilidad de manejar diversos dispositivos del micro de una forma sencilla, sin tener que incrementar el nmero de instrucciones del mismo, as como la posibilidad de ampliar el nmero de elementos gestionados desde el micro de una forma sencilla y casi inmediata modificando tan solo el multiplexado del acceso a memoria sin necesidad de efectuar modificaciones adicionales el la estructura del propio micro.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

48i

4.3.2

Gestin de los punteros de interrupcin

Tal y como Se aprecia en la Tabla 4-2 los punteros asociados a las diferentes interrupciones se encuentran almacenados en memoria, siendo posible tanto su lectura como su estructura por medio de las instrucciones de acceso a memoria.

Direccin 0x 7FFF 0x 7011 0x 7010 0x 700F 0x 700E 0x 700D 0x 700C 0x 700B 0x 700A 0x 7009 0x 7008 0x 7007 0x 7006 0x 7005 0x 7004 0x 7003 0x 7002 0x 7001 0x7000

Contenido

Sin uso

Flags de enable de las interrupciones. Puntero asociado a la interrupcin n15 Puntero asociado a la interrupcin n14 Puntero asociado a la interrupcin n13 Puntero asociado a la interrupcin n12 Puntero asociado a la interrupcin n11 Puntero asociado a la interrupcin n10 Puntero asociado a la interrupcin n9 Puntero asociado a la interrupcin n8 Puntero asociado a la interrupcin n7 Puntero asociado a la interrupcin n6 Puntero asociado a la interrupcin n5 Puntero asociado a la interrupcin n4 Puntero asociado a la interrupcin n3 Puntero asociado a la interrupcin n2 Puntero asociado a la interrupcin n1 Puntero asociado a la interrupcin n 0

Tabla 4-3: Zona de memoria reservada para los punteros a interrupciones.

El nmero de la interrupcin queda determinado por los cuatro bits menos significativos de la direccin. As pues, por ejemplo, para acceder al puntero

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

49i

asociado a la interrupcin n3 del micro se deber ejecutar una instruccin de lectura o escritura sobre la direccin 0x7003 de memoria.

En lo referente a la habilitacin de las interrupciones, tras la ejecucin del reset, todas las interrupciones comienzan deshabilitadas como una medida de seguridad, siendo necesario fijar su estado de habilitadas o deshabilitadas escribiendo sobre la posicin 0x7010 de memoria. As pues, escribiendo doble dicha posicin la palabra 1000000000000101 quedarn activadas las interrupciones nmero 0, 2 y 15. Este tipo de habilitacin permite el activado o desactivado de varias interrupciones de una forma rpida al hacerse de manera simultanea. As mismo permite trabajar con una parte de las interrupciones, pues es posible que no siempre se necesiten las 16 interrupciones en una aplicacin o momento dado.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

50i

4.3.3

Gestin de las interrupciones

La gestin de las interrupciones parte de los puntos siguientes: No anidamiento de interrupciones. No almacenamiento del contexto. Interrupciones con prioridad fija.

Al no almacenar el contexto, delegndose esta tarea sobre el programador se permite agilizar el proceso de transicin entre el funcionamiento normal y las interrupciones, almacenando solo los registros que sean utilizados. Cuando se detecta un flanco de subida en uno o varios de los bits del vector de interrupcin, el evento es almacenado de forma interna, de esta forma es posible tener constancia de cualquier interrupcin, aunque estas se produzcan de forma simultnea o mientras que se encuentra otra rutina de interrupcin activa. Si el procesador no se encuentra funcionando en modo interrupcin y hay alguna solicitud de interrupcin activada en el registro interno, se entra en el modo interrupcin, enviando un pulso al proceso de Fetch para indicarle que se debe conmutar el contador de programa al asociado a la interrupcin (proporcionado por el bloque encargado de gestionar las interrupciones) tan pronto como sea posible. En el caso de que existan varias solicitudas de interrupcin activas simultneamente, la resolucin de cual debe lanzarse se toma por medio de una prioridad fija, en la cual la interrupcin nmero 0 tiene el nivel ms bajo de prioridad, mientras que la interrupcin nmero 15 presenta el nivel ms alto de prioridad. Cuando se ejecuta la instruccin end, el control se devuelve a la rutina principal, saliendose del modo interrupcin y bajando el indicador de la interrupcin que acaba de finalizar. Para mayor claridad, en la siguiente figura se ilustra el diagrama de flujo de la gestin de interrupciones:

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

51i

Flanco en el vector de interrupcin

Registrado de la interrupcin

Hay una solicitud de interrupcin activa?

No

Si Pc_interrup<=Pc asociado cmp_stack<=cmp_result Lanzar pulso en Interrup_start Activar la seal que indica que una interrupcin se encuentra activa

Espera hasta que se active la seal interrup_end

Desactivar la seal que indica que una interrupcin se encuentra inactiva

Figura 4-4 Diagrama de flujo de la gestin de interrupciones.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

52i

4.3.4

Gestin de los parmetros del timer

Dentro del rea de memoria reservada para el timer, sta queda determinada de acuerdo a la siguiente tabla:

Direccin 0x 7FFF 0x 7003 0x 7002 0x 7001 0x7000

Contenido

Sin uso por parte del timer

Valor del preescalado Valor final del contador Arranque del timer

Tabla 4-4: Organizacin del area de memoria dedicada a los parmetros del Timer.

As pues, para la escritura o lectura del preescalado y el valor final de la cuenta del timer no es necesario ms que el acceso a su posicin de memoria asociada. Un caso peculiar es la direccin 0x7000, en la cual, un acceso en modo escritura genera un pulso en la seal de Start del timer produciendo como consecuencia, el arranque del timer, independientemente del valor escrito en el.

En lo referente a los valores iniciales, tras el reset, tanto el preescalado como la cuenta final quedan inicializados a cero.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

53i

4.3.5

Gestin del timer

En la Figura 4-5, se muestra en forma de diagrama de flujo el funcionamiento interno del bloque de timer.

Start timer

Carga del valor final y el preescalado

Timer_state<=0

Nuevo ciclo de reloj

No Preescalado==0?

Si

Preescalado-1

Preescalado=preescalado inicial Cuenta-1

Cuenta==0?

timer._state<=1

Espera

Figura 4-5 :Diagrama de flujo del funcionamiento del timer

Ante un flanco en la seal Start timer desencadenado por la escritura en la parte baja del rea de datos del timer tal y como se coment en el apartado 4.3.4 produce que se almacenen internamente los valores de preescalado y valor final de la cuenta igualando los parmetros internos asociados a estos.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

54i

Cuando el valor de preescalado difiere de uno, con cada flanco de reloj se reduce el valor interno del preescalado en una unidad. En el momento en el que el preescalado se iguala a cero es el valor de la cuenta interna el que se ve reducido en uno. Este proceso se repite hasta el momento en que dicha cuenta llegue a cero, en el cual todo el timer se detiene y el bit que indica el estado del bit pasa a valer 1.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

55i

4.3.6

El watchdog

El watchdog es una pieza de hardware que produce el reseteo del micro cuando juzga que el sistema no est funcionando de forma correcta. La idea remanente es la de una cuenta atras, que en el momento en el que alcanza el valor cero, genera una seal que resetea el sistema. As pues, el sistema debe patear periodicamente el watchdog a fn de reiniciar la cuenta y que esta nunca llegue a cero. Es importante resear el tipo de errores que cubre el watchdog, pues este no es capaz de detectar absolutamente todos los fallos posibles. Es posible, en ambientes hostiles (o incluso en ambientes convencionales aunque con menor frecuencia), que se produzcan errores en los datos almacenados en memoria, en registros, un salto en el contador de programa, etc. La funcin del Watchdog es que en caso de que el sistema entre en una dinmica de funcionamiento erronea, en la cual el sistema entre en un bucle infinito, por ejemplo. El watchdog obligue al sistema a volver a la situacin de funcionamiento seguro. Hay que tener presente que hay ciertas situaciones erroneas que el sistema no cubre, como por ejemplo bucles infinitos en los que el sistema patee continuamente el watchdog. Para acotar aun ms estos casos, es comn la modificacin del watchdog para que no solo se active transcurrido un cierto periodo de tiempo sin ser pateado, si no tambien por ser pateado demasiado rpido. Sin embargo, esta estrategia requiere un profundo conocimiento de los tiempos por parte del programador, convirtiendose en una medida virtualmente inviable en el caso de sistemas con soporte de interrupciones o instrucciones con duraciones indefinidas como es el caso. El sistema escogido consiste en un bloque tipo timer (4.3.5) con ciertas

modificaciones que le hacen inicializar desactivado, siendo necesario liberar el watchdog en un momento dado. En caso contrario, la seal watchdog_state permanecer a nivel bajo indefinidamente sin necesidad de patear el dispositivo.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

56i

En el micro, los parmetros del watchdog son accesibles mediante escritura en memoria, encontrndose mapeados del siguiente modo:

Direccin 0x 7FFF 0x 7020 0x 7012 0x 7011 0x7010 0x 7F002 0x7000

Contenido

Sin uso

Valor del preescalado del watchdog Valor final del contador del watchdog restart del watchdog

Area utilizada por el timer

Tabla 4-5: Organizacin del area de memoria dedicada a los parmetros del watchdog.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

57i

Manejo del contador de programa (fetch) El proceso de Fetch tiene lugar de forma sncrona con cada ciclo de reloj. Para evitar cortar procesos en curso, se ejecuta el algoritmo solamente cuando la seal next_op se encuentre activa, la cual es un indicador de que el procesador est preparado para ejecutar una nueva instruccin en el siguiente ciclo de reloj. En la Figura 4-6 se muestra un diagrama de flujo ilustrativo del proceso.

Next_op=1 & clk=1

Si

Orden de salto solicitada?

No

PC=PC de salto

PC+1

Si

Interrupcin solicitada?

No

PC_bufer=PC PC=PC de interrupcin

Si

Fin de la interrupcin?

No

PC= PC_bufer

Figura 4-6: Diagrama de flugo del proceso de Fech

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

58i

En el proceso normal de fetch, con cada ciclo de reloj el contador de programa se ve incrementado en una unidad. La excepcin a dicha norma se produce al ejecutarse operaciones que requieren de varios ciclos de reloj para su realizacin, como es el caso de la lectura de la memoria o las operaciones en las cuales interviene el bus APB. En este caso la activacin de la seal mem_ready (y como consecuencia de esta next_op) por parte del decodificador produce el incremento del contador de programa. En el caso de las instrucciones de salto, estas activan una seal jump as como un puntero contenido en estas. El proceso fetch, en el momento de incrementar el contador de programa, al registrar la seal jump en estado activo actualiza el PC al valor indicado por el puntero de la instruccin de salto en lugar de incrementarlo. En lo respectivo al tratamiento de las interrupciones, ante un flanco de subida en la seal Start_interruption se activa una seal interna del proceso fetch que reserva la entrada en la interrupcin. El propsito de esta seal es esperar a que se complete la instruccin en curso, evitando que no se completen instrucciones lentas como la lectura desde memoria. Una vez que se entra en la interrupcin, el actual contador de programa es almacenado en un buffer, mientras que el PC es actualizado con el puntero asociado a dicha interrupcin. Una vez concluida la interrupcin, el PC es actualizado con el valor almacenado en el buffer.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

59i

4.3.7

Decodificacin de la instruccin

La decodificacin de la instruccin se realiza por medio de una instruccin case, en la que se asignan las seales que comandan la ALU, la gestin de memoria, etc. La distribucin de los operandos de las instrucciones est ideada para minimizar el rea de la FPGA ocupada por el proceso. Estando las instrucciones divididas en los siguientes grupos:
Cdigo de operacin N Reg N Reg N Reg N Reg N Reg N Reg PC N Reg Argumentos Mem addr inmediato

Tabla 4-6: Tipos formatos de instruccin

En primer lugar, el rea destinada al cdigo de operacin queda dividida en dos subsecciones de tres bits cada una. En la primera se recoge el tipo de instruccin; operaciones de salto, aritmticas, etc. Las cuales presentan formatos similares. El segundo campo Clasifica el tipo de instruccin (suma, resta...). Los bits del 19 al 16 almacenan la direccin del registro del primer operando. Mientras que los bits menos significativos varian los operandos contenidos en ellos. En general, el mantener los operandos en posiciones fijas en diferentes tipos de instrucciones, as como agrupar operaciones de un mismo tipo con un nmero limitado del cdigo de operacin permite una reduccin sustancial del area producto de la sntesis del cdigo.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

60i

4.3.8

La memoria de programa

La memoria de programa se encuentra sintetizada en lgica de puertas (Hard program code storage). De este modo, a costa de sacrificar la reprogramabilidad del dispositivo, es posible aumentar la robustez frente a la corrupcin de los datos debida a la radiacin. El cdigo se encuentra en un paquete de vhdl, definido como un vector de vectores del siguiente modo:
package program_code is constant c_n_instructions : integer := 100;

type ROM_anio_type is array (natural range <>) of std_logic_vector(25 downto 0); constant ROM_anio: ROM_anio_type(0 to c_n_instructions-1) := ( c_opcode_movir c_opcode_movir c_opcode_addrr & x"3" & x"0003", & x"4" & x"0004", & x"4" & x"3" & x"5" & x"00", --movir R3 #3 --movir R4 #4 --addrr R3 R4 R5 --cmpgt R4 R3 --movir R6 #xA --movir R6 #x4001 --jmpt #x0000

c_opcode_cmpgt_rr & x"4" & x"3" & x"000", c_opcode_movir c_opcode_movrm c_opcode_jmpt (others =>'0'), c_opcode_movir c_opcode_movrm c_opcode_movir c_opcode_movrm c_opcode_movrm c_opcode_jmps c_opcode_end (others =>'0'), (others =>'0'), ); end program_code; & x"6" & x"000A", & x"6" & x"0001", & x"6" & x"0002", & x"6" & x"0002", & x"0" & x"0000", & x"0" & x"000F", & x"00000", & x"6" & x"000A", & x"6" & "0100" & x"001", & x"0" & x"0000",

--movir R6 #xA --movir R6 #x0001 --movir R6 #x2 --movir R6 #x0002 -movir R0 #x0000 --start timer --jmps #x000F --end

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

61i

El proceso encargado de gestionar la memoria de programa actua de forma asncrona, asignando a la salida el elemento del vector correspondiente al actual valor del contador de programa. A continuacin se muestra el segmento de cdigo encargado de llevar a cabo dicha tarea:
architecture rtl of prog_mem is begin p_opcode_dec: process (pc) begin if (conv_integer(pc)< c_n_instructions) then instructuction else instructuction end if; end process p_opcode_dec; end architecture rtl; <= (others => '0'); <= ROM_anio(conv_integer(unsigned(pc)));

En el caso de que el PC exceda el valor del parmetro c_n_instructions (valor ms all del vector de instrucciones), el bloque devuelve una instruccin nula. esto es una medida de proteccin para minimizar en lo posible la carga lgica del sistema.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

62i

4.4 El maestro de APB


Se ha implementado un maestro de APB que cubre tanto la existencia de estados de espera como la posibilidad de maniobras erroneas en el bus APB. La mquina de estados encargada de llevar el peso de la operacin en el bus es la siguiente
Post Actions: APB master

s_w ait
1 2 read APB

write APB

start_wr='1'

start_rd='1'

s_w setup
paddr<=addr; pwrite<='1'; psel<='1'; pwdata<=wdata;

s_rsetup

paddr<=addr; pwrite<='0'; psel<='1';

s_w access

s_raccess

paddr<=addr; pwrite<='1'; psel<='1'; penable<='1'; pwdata<=wdata; pready='1' s_wait

paddr<=addr; pwrite<='0'; psel<='1'; penable<='1';

pready='1' s_wait

Figura 4-7: Diagrama de estados del maestro de APB

La mquina permanece en espera hasta que recibe la orden de iniciar la operacin de lectura o de escritura. Es en este momento cuando pasa a la fase de setup (Figura 2-18) para acto seguido pasar a la fase de adquisicin, en la cual permanecer hasta que la seal pready notifique de que la operacin ha concluido. La gestin de errores se lleva a cabo de forma paralela, actualizando el estado de la seal APB_fault cada vez que se concluye una operacin de transmisin de datos y conservando dicho estado hasta la siguiente transferencia de modo que pueda ser accesible por la operacin de salto condidional jmpsig. (siendo posible repetir operaciones de transferencia fallidas).

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

63i

5 RESULTADOS/EXPERIMENTOS
Para la elaboracin de las pruebas sobre el sistema se realizaron test benchs individuales sobre cada uno de los bloques funcionales en que se divide el sistema, haciendo posible el estudio de casos particulares e incrementando la facilidad de depuracin.. En cada test bench se estimula al bloque con todo el rango de entradas razonables, verificando de forma automtica que los resultados proporcionados son los correctos. En caso contrario el sistema envia un mensaje de error e indica el instante en el que se ha producido. De esta forma es posible verificar un amplio abanico de casos que con una simple verificacin visual serian imposibles de abarcar.
Rutina de test Estmulos Bloque VHDL

Respuesta

Figura 5-1: Esquema del proceso de test.

A continuacin se muestran los resultados de las simulaciones sobre los bloques del sistema as como una breve descripcin de la rutina de test.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

64i

5.1 Test bench del maestro de APB


Para el test del maestro de APB se estableci un primer proceso que ordene al maestro que comience los procedimientos de lectura o escritura y otro proceso que actue como esclavo del bus APB. As pues, los resultados son los siguientes: 5.1.1 Operacin de escritura (sin error)

De acuerdo al estandar AMBA 3 APB, se contempla que la escritura en el bus no tiene porque producirse de forma inmediata, si no que se debe esperar a que el exclavo manifieste que la escritura se ha producido, poniendo en alto la seal pready. En la siguiente figura se puede apreciar la evolucin de las seales durante la maniobra de escritura.

Figura 5-2: Seales correspondiente a la escritura en un esclavo de APB

Se aprecia como tras la orden start_wr, se pasa a la primera fase de escritura con el paso a estado activo de las seales pwrite y psel, en el siguiente ciclo de reloj se hace lo propio con la seal penable permaneciendo en este estado hasta recibir la confirmacin de que la operacin ha concluido con la transicin de la seal pready a estado activo, de acuerdo con la especificacin AMBA.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

65i

5.1.2

Operacin de escritura (con error)

El interfaz APB tambien debe ser capaz de soportar operaciones erroneas de escritura. en la siguiente figura se muestra un detalle de dicho caso.

Figura 5-3: Seales correspondiente a la escritura erronea en un esclavo de APB

Se observa como la operacin transcurre de modo similar a la de escritura sin error, con la salvedad de que en este caso, al mismo tiempo que la seal pready, el esclavo activa la seal pslverr indicado que ha tenido lugar un error. Este hito se ve reflejado en la seal apb_fault la cual se activa permaneciendo en dicho estado hasta la siguiente operacin sobre el bus. 5.1.3 Operacin de lectura (sin error)

En la siguiente figura se muestra el resultado de llevar a cabo una operacin de escritura (iniciada por la seal start_rd).

Figura 5-4:: Seales correspondientes a la lectura de un esclavo de APB

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

66i

5.1.4

Operacin de lectura (con error)

En el caso de una operacin de lectura erronea se obtienen resultados anlogos representados en la siguiente figura.

Figura 5-5: Seales correspondientes a la lectura erronea de un esclavo de APB

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

67i

5.2 Test bench del banco de registros


En el caso del banco de registros se procede a bombardear el bloque con diferentes datos de entrada y direcciones, dando la orden de almacenamiento nicamente cuando la direccin de escritura y el dato de entrada coinciden. Tras la fase de escritura se procede a la fase de lectura y verificacin, en la que se barren los registros, comprobando que el dato almacenado en su interior se corresponde con el que deberia. En la siguiente figura se muestra una visin general de este proceso.

Figura 5-6: Visin general del proceso de test del banco de registros.

A continuacin se muestra un detalle del proceso de escritura:

Figura 5-7: Detalle del proceso de escritura en el banco de registros.

Y en la siguiente figura se aprecia el proceso de lectura:

Figura 5-8: Detalle del proceso de rectura de los registros.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

68i

5.3 Test bench del bloque sumador


Para verificar el correcto funcionamiento del bloque se generan todas las combinaciones de entradas posibles para los operandos del bloque para, en paralelo, mediante otro proceso, verificar que el resultado de la suma se ha efectuado de forma correcta. Puesto que el nmero de combinaciones posibles para dos operandos de 16 bits es exageradamente grande, dando lugar a tests con una duracin excesivamente larga. Para solventar este problema, es cuando el uso de genricos revela su potencial. Al tratarse de un bloque en el que todos los anchos de palabra se encuentran determinados a varables genricas, es posible obtener un bloque anlogo pero con menor ancho de palabras y por tanto, un tiempo de simulacin menor. En este caso particular, se ha llevado a cabo en test para palabras de un ancho de 4 bits, obteniendose el resultado que se observa en la siguiente figura.

Figura 5-9: Detalle del proceso de test del bloque sumador.

Por motivos obvios, no se ilustra la simulacin al completo si no solo un detalle de la misma.

5.4 Test bench del bloque restador


El proceso anteriormente comentado para el caso del bloque sumador se repite de forma idntica en el caso del bloque restador, como se aprecia a continuacin:

Figura 5-10: Detalle del proceso de test del bloque restador.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

69i

5.5 Test bench del bloque comparador


En este caso se sigue la tnica de las simulaciones sobre los bloques sumador y restador. Se somete a un bloque comparador con ancho de palabra limitado a un tren de seales que cubre todas las combinaciones posibles, verificndose para cada caso que las seales de salida que se corresponden con el valor esperado. En la Figura 5-11 se muestra un instante de la rutina de test:

Figura 5-11: Detalle del proceso de test del bloque comparador.

Se aprecia como los valores max, min y a evolucionan de forma independiente. Max y min crean una ventana de valores entre los cuales, a da lugar al estado inactivo de las seales over y under, las cuales se activan cuando a se posiciona por encima o por debado de dicha ventana respectivamente.

5.6 Test del micro completo


Para verificar el equipo en conjunto no es posible estimular el bloque nicamente con seales externas, si no que es necesario recurrir a un programa de autotest. Dicho programa ejecuta diversas instrucciones. Si el programa se ha ejecutado de forma correcta, proporciona al final un valor numrico dado va APB, como resultado de efectuar las operaciones matemticas, lgicas, saltos, etc. Para verificar las interrupciones, de forma externa se fuerza al sistema a entrar en diversas rutinas de interrupcin, comprobando que el resultado proporcionado es correcto. Finalmente, se fuerza al sistema a entrar en un bucle infinito a fin de comprobar el buen funcionamiento del watchdog.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

70i

--Start-up c_opcode_jmpnc & x"0" & x"0014", --jmpnc #0011

--/////////////////////////////////////////////////////////////////////// -Interruption 0

--/////////////////////////////////////////////////////////////////////// c_opcode_cmpeq_ri & x"F" & x"0003", --cmp R16 #3 c_opcode_jmpf c_opcode_movrm c_opcode_end & x"0" & x"0004", --jmpf #x0004 & x"F" & x"8003", --movir R3 #x8003 (escritura en APB) & x"00000", --end

--/////////////////////////////////////////////////////////////////////// -Interruption 1

--/////////////////////////////////////////////////////////////////////// --carga del contexto c_opcode_movrm c_opcode_movrm & x"1" & "1100" & x"001", --movrm R2 #xC001 & x"2" & "1100" & x"002", --movrm R2 #xC002

--Carga de un valor en un esclavo c_opcode_movir c_opcode_movir c_opcode_and_ri c_opcode_or_ri c_opcode_and_rr & x"1" & x"0F33", & x"2" & x"FFFF", & x"2" & x"000E", & x"2" & x"0001", & x"1"&x"2"&x"1"&x"00", --movir R1 #3 --movir R2 #FFFF --and_ri R2 #000E --or_ri R2 #0001 --and_rr R1R1R1 --bitstate R1 #2 --jmpf #x000E --movrm R1 #x8003 (APB write)

c_opcode_cmpbit_ri& x"1" & x"0002", c_opcode_jmpf c_opcode_movrm & x"0" & x"000E", & x"1" & x"8003",

--Si la operacin es fallida, se repite c_opcode_jmp_s &1100" & x"000D", --jmpsig APB #x000D

--Recuperacion del conexto c_opcode_movmr c_opcode_movmr c_opcode_end & x"1" & "1100" & x"001", --movmr R1 #xC001 & x"2" & "1100" & x"002", --movmr R2 #xC002 & x"00000", --end

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

71i

--/////////////////////////////////////////////////////////////////////// -Interruption 1

--/////////////////////////////////////////////////////////////////////// --Bucle infinito c_opcode_jmpuc & x"0" & x"0013" --jmpuc #x0013

--/////////////////////////////////////////////////////////////////////// -Initialitation state

--/////////////////////////////////////////////////////////////////////// --Carga del puntero a la interrupcin 0 c_opcode_movir c_opcode_movir & x"1" & x"0F33", & x"2" & x"FFFF", --movir R1 #3 --movir R2 #FFFF

--Carga del puntero a la interrupcin 1 c_opcode_movir c_opcode_movrm --Lectura de APB c_opcode_movmr & x"1" & x"8003", --movmr R1 #x8003 (APB read) --cmpeq_ri R1, #3 & x"1" & x"0005", --movir R1 #x5

& x"1" & "0100" & x"001", --movir R1 #x4001

c_opcode_cmpeq_ri & x"1" & x"0003", --Bucle for c_opcode_movir c_opcode_movir c_opcode_addri c_opcode_subrr c_opcode_movrr & x"4" & x"0000", & x"5" & x"0001", & x"5" & x"0002", & x"4"&x5&x"4"&x"00", & x"4"& x"F"&x"000",

--movir R4 #0000 --movir R5 #0001 --movir R5 #0001 --subrr R4 R5 R4 --movir R4 #0000 --bitstate R1 #2 --jmpt #x000F

c_opcode_cmplt_ri & x"F" & x"0003", c_opcode_jmpt & x"0" & x"000F",

--Bucle de retardo (usando el timer) c_opcode_movir c_opcode_movrm c_opcode_movir c_opcode_movrm c_opcode_movrm & x"6" & x"000A", & x"6" & x"0001", & x"6" & x"0002", & x"6" & x"0002", & x"0" & x"0000", --movir R6 #xA --movir R6 #x0001 --movir R6 #x2 --movir R6 #x0002 --movir R0 #x0000 --start timer

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

72i

c_opcode_jmps --bucle infinito c_opcode_jmpnc

& x"0" & x"00026",

--jmps #x00026

& x"0" & x"0018",

--jmpnc #x0018

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

73i

6 CONCLUSIONES

Una vez concluido el presente proyecto de forma satisfactoria, se ha obtenido un bloque exportable a diversos diseos con interfaz APB para realizar tareas de control de flujo. Se ha generado un procesador a medida, destinado a cubrir con un alto aprovechamiento de los recursos una tarea muy concreta la cual no se veia completamente satisfecha hasta el momento. Es un aspecto enormemente esperanzador la certeza de que este proyecto no est destinado a morir en una estantera, si no que ser implantado en equipos reales destinados al sector aeroespacial, evolucionando y con toda seguridad, cumpliendo con las espectativas y la gran responsabilidad que esto supone. .

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

74i

7 FUTUROS DESARROLLOS
Una vez concluido el diseo bsico, se abren una serie de posibles mejoras y aadidos. A continuacin se enumeran algunos de ellos: Creacin de un compilador que sirva de interfaz con la creacin del cdigo del dispositivo, automatizando las tareas y facilitando la labor al programador, as como permitiendo automatizar labores como variar el ancho de palabra, nmero de interrupciones soportadas, etc.

Figura 7-1: Interfaz de LEON

Flexibilizar la sintesis, usando secuencias generate y ampliando el nmero de instrucciones, sintetizando el circuito unicamente cuando este sea necesario. Esto permite la incorporacin de nuevas instrucciones, pero empleando en la sntesis unicamente los procesos que vayan a ser utilizados, convirtiendo el sistema en una herramienta muchsimo ms flexible.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

75i

BIBLIOGRAFA
[1] [2] [3] Wakerly. Diseo digital principios y prcticas. Ed: Prentice Hall Peter J. Ashenden the VHDL Cookbook Ed: University of Adelaide Volnei A.Pedroni Circuit.Design.with.VHDL.(2004).Ed: MIT Press

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

76i

ESTUDIO ECONMICO

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

77i

A pesar de la existencia en el mercado de diversos softcores, la pretensin generalista de los mismos hace que no sean todo lo eficientes que sera deseable a la hora de trabajar con aplicaciones especficas.

Este es el caso de los equipos dedicados a tareas de control de flujo, en los que el proceso se limita a la lectura de parmetros (temperaturas, estado de flags, etc.) y actuar en consecuencia, enviando comandos a diversos elementos del sistema.

Estos equipos presentan peculiaridades como un nmero alto de rutinas urgentes o interrupciones (atendiendo al incremento de cierta temperatura por encima de los lmites de seguridad) que no pueden ser cubiertas por los micros disponibles. Tambien suelen presentar una serie de rutinas simples, que pueden ser gestionadas con un nmero limitado de comandos, por lo que los micros convencionales se antojan sobredimensionados, desembocando en un desperdicio de los escasos recursos disponibles en una FPGA.

Es pues que es necesario el desarrollo de herramientas especializadas en tareas concretas que lleven a cabo su cometido de forma rpida y eficiente con un consumo minimizado de los recursos disponibles.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

78i

MANUAL DE USUARIO

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

79i

PFC0809 RISC Microprocessor Manual de Referencia

PFC0809 Rev. 2 5/2009

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

80i

Organizacin del documento


Introduccin.........................................................................................................81 Por qu usar un microcontrolador en una FPGA?.......................................81 Descripcin del dispositivo................................................................................82 Puertos..................................................................................................................84 Lista de instrucciones Funciones....................................................................86 Lista de instrucciones Cdificacin...............................................................91 Mapeo de memoria.............................................................................................94 El interfaz APB.....................................................................................................96 Seales del bus APB................................................................................96 Operacin de escritura con espera y sin error.....................................97 Operacin de lectura con espera y sin error........................................97 Operacin de escritura con error...........................................................98 Operacin de lectura con error..............................................................98 Diagrama de fases del protocolo APB..................................................99

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

81i

Introduccin
Esta gua contiene informacin detallada sobre las instrucciones soportadas por el PFC0809. Un breve ejemplo de cada una de ellas as como sus efectos sobre el cdigo. Por qu usar un microcontrolador en una FPGA? Tanto los microcontroladores como las FPGAs son capaces de implementar prcticamente cualquier funcin lgica. Sin embargo, cada uno tiene ventajas particulares en coste, rendimiento y facilidad de uso. Los microcontroladores se ajustan muy bien a tareas de control, adaptndose especialmente bien a los cambios de funcionamiento. La programacin de secuencias de control o de mquinas de estado por medio de cdigo ensamblador es, por lo general, ms sencillo que la creacin de estas directamente en la propia FPGA. Los microcontroladores suelen tener limitado su rendimiento. Cada instruccin se ejecuta de forma secuencial, por lo que a medida que la aplicacin presenta mayor complejidad, el nmero de instrucciones necesarias crece, en detrimento del rendimiento del sistema, sin embargo, mientras que el cdigo entre dentro de la memoria del micro, no se presentarn ms inconvenientes. Sin embargo, La implantacin del algoritmo directamente en la FPGA, siendo posible llevar a cabo el algoritmo de manera secuencial o en paralelo, consumiendo una mayor cantidad de recursos de la FPGA a medida que se incrementa la complejidad de la aplicacin. Un softcore (Micro sintetizable en una FPGA) ana lo mejor de estos dos mundos. As es posible ejecutar rutinas en el micro, mientras que ciertos procesos que necesitan respuestas rpidas o procesos paralelizados se ejecutan en la FPGA de forma externa al microprocesador.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

82i

1
Descripcin del dispositivo
El dispositivo responde a las caractersticas de un microprocesador tipo RISC con una arquitectura Harvard, es decir, con memorias independientes para el cdigo de programa y las variables. El equipo trabaja con un ancho de palabra de 16 bits, siendo este tambien el ancho de palabra del contador de programa. Se establecen un total de 16 registros, dentro de los cuales, el registro n0 se encuentra de forma permanente con el valor 0 almacenado en el. Cualquier escritura sobre dicho registro es ignorada. El microprocesador trabaja con instrucciones rpidas, las cuales en su mayoria toman tan solo un ciclo de reloj para su ejecucin. Es pues que se podra considerar un microprocesador monociclo pero con modificaciones. Dichas excepciones se dan en las operaciones de acceso a memoria, las cuales dependiendo de si trabajan sobre memoria RAM, bus APB u otro elemento pueden tomar dos o ms ciclos de reloj. El equipo presenta una mecnica de funcionamiento tipo cargaalmacenamiento; todas las operaciones aritmticas, lgicas, comparaciones, etc tienen lugar entre registros o entre registros e inmediatos. Por tanto, para operar con parmetros almacenados en memoria, primero ser necesario hacer una copia desde la RAM al banco de registros, para posteriormente llevar a cabo la operacin deseada. Tambien se dispone de soporte para interrupciones. Esposible gestionar hasta 16 interrupciones, con prioridad fija (siendo la interrupcin 0 la menos prioritaria y la 15 la ms prioritaria) y sin que exista anidamiento de estas. Tampoco se contempla el almacenamiento del contexto, delegndose esta tarea al programador. De este modo se logra almacenar solamente los registros que sean utilizados por la rutina de interrupcin, agilizando el funcionamiento del equipo.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

83i

Los punteros asociados a las rutinas de interrupcin as como las flags que las habilitan se encuentran mapeados en memoria, por lo que tanto la lectura como la escritura de sus parmetros se llevan a cabo del mismo modo que si se efectuara sobre la memoria propiamente dicha. Se dispone de un timer interno, (vease el apartado 4.3.5) cuyo estado nicamente es accesible como llave para la instruccin de salto condicional asociado a una seal interna (jmpsig). Este elemento tambien se encuentra mapeado en memoria, por lo que cualquier manipulacin de los mismos se lleva a cabo por medio de las instrucciones de manejo de datos movmr y movrm (vease el apartado 3.2) Se dispone de interfaz con el bus AMBA 3 APB, con soporte de errores y espera. En caso de error, ste es verificable por la instruccin de salto condicional jmsig segn se explic en el punto 2.3. En el caso de que durante una operacin sobre el bus APB se detecte algn error, se activar un indicador de fallo en el bus APB (el cual permanecer en dicho estado hasta la siguiente operacin de lectura o escritura en el bus APB) La cual es accesible por la instruccin de salto condicional jmpsig. De este modo, es posible detectar y repetir operaciones fallidas si fuera necesario. Tambien se implementa un watchdog. Dicho dispositivo se inicializa deshabilitado, siendo necesaria su activacin por parte del programador si es necesario. Una vez encendido actua como un timer, con la salvedad de que si el contador llega a cero, el puerto de salida del micro watchdog_state pasa a estado activo. El objetivo de esto es permitir reiniciar, no solo el procesador, si no tambien elementos externos ligados al micro.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

84i

2
Puertos
El micro dispone de los siguientes puertos

Figura 0-1: Interfaz del core

Nombre clk rst_n ram_dout ram_din ram_enable ram_rw ram_addr paddr prdata pwdata psel penable

Funcin Seal de reloj Reset asncrono Datos procedente de la memoria RAM Datos destinados a ser almacenados en la memoria RAM Seal que habilita la lectura o la escritura de la memoria RAM Seal que habilita o la escritura de la memoria RAM Direccin destino de la memoria RAM Direccin destino del bus APB Dato leido del bus APB Dato escrito en el bus APB Seleccin del esclavo del bus APB Enable del bus APB

Tipo input input input output output output output output input output output output

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

85i

pready

Seal que indica que se ha completado con xito la operacin en curso sobre el bus APB

input

pslverr

Seal que indica que se ha producido un error de cualquier tipo en la operacin sobre el bus APB

input

pwrite

Seal que indica que se realiza una operacin de escritura sobre el bus APB

output

interrupt_vector

Vector en el que cada bit est vinculado a una interrupcin. Un flanco de subida da paso a la rutina de interrupcin vinculada (necesario que las interrupciones se encuentren habilitadas)

input

watchdog_state

Testigo del estado interno del watchdog. Su activacin no tiene otros efectos internos al microprocesador, siendo necesaria su conexin externa al reset sncrono para que se produzca el reinicio del mismo. Tabla 0-1: Funciones de los puestos del micro.

output

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

86i

3
Lista de instrucciones Funciones
Este captulo proporciona, de forma concisa, una lista de las instrucciones del micro. Las instrucciones se encuentran agrupadas de acuerdo a su funcin.
Mnemonicos Movrm R1,#addr Descripcin Desplaza el dato contenido en R1 a la direccin de memoria sealada por #addr Movmr R1,#addr Desplaza el dato contenido en la direccin de memoria sealada por #addr al registro R1 Movir R1,#inmediato Movrr R1,R2 Carga en el registro R1 el valor de #inmediato. Copia el contenido del registro R1 al registro R2 Tabla 0-2: Instrucciones de manejo de memoria. Ciclos nc

nc 1 1

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

87i

Mnemonicos Cmpgt_rr R1,R2

Descripcin Compara los registros R1 y R2, si R1 es mayor, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False.

Ciclos

Cmpge_rr R1,R2

Compara los registros R1 y R2, si R1 es mayor o igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. 1

Cmpeq_rr R1,R2

Compara los registros R1 y R2, si R1 es igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. 1

Cmple_rr R1,R2

Compara los registros R1 y R2, si R1 es menor o igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. 1

Cmplt_rr R1,R2

Compara los registros R1 y R2, si R1 es menor, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. 1

Cmpbit_rr R1,N

Se fija a la salida del ALU el estado del bit del registro R1 indicado por N que podr ser usado en posteriores 1 saltos condicionales. Tabla 0-3: Instrucciones de comparacin entre registros

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

88i

Mnemonicos Cmpgt_ri R1,#inmediato

Descripcin Compara los registros R1 y R2, si R1 es mayor, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False.

Ciclos

Cmpge_ri R1,#inmediato

Compara los registros R1 y R2, si R1 es mayor o igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos 1

condicionales, en caso contrario la salida se fija en False. Cmpeq_ri R1,#inmediato Compara los registros R1 y R2, si R1 es igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. Cmple_ri R1,#inmediato Compara los registros R1 y R2, si R1 es menor o igual, a la salida del Alu se activa un true que podr ser usado en posteriores saltos 1 1

condicionales, en caso contrario la salida se fija en False. Cmplt_ri R1,#inmediato Compara los registros R1 y R2, si R1 es menor, a la salida del Alu se activa un true que podr ser usado en posteriores saltos condicionales, en caso contrario la salida se fija en False. Cmpbit_ri R1,#inmediato Se fija a la salida del ALU el estado del bit del registro R1 indicado por N que podr ser usado en 1 posteriores saltos condicionales. Tabla 0-4: Instrucciones de comparacin entre registro e inmediato 1

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

89i

Mnemonicos Addrr R1,R2,R3

Descripcin Suma el contenido de R2 a R1 almacenando el resultado en R3

Ciclos 1

Subrr R1,R2,R3

Resta el contenido de R2 a R1 almacenando el resultado en R3 Tabla 0-5: Instrucciones aritmticas entre registros

Mnemonicos Addri R1,#inmediato

Descripcin Suma el contenido de #inmediato y R2 almacenando el resultado en R1 (sobreescritura)

Ciclos 1

Subri R1,#inmediato

Resta el contenido de #inmediato a R1 almacenando el resultado en R1 (sobreescritura)

Tabla 0-6: Instrucciones aritmticas entre registro e inmediato

Mnemonicos And_rr R1,R2,R3

Descripcin Hace un AND bit a bit del contenido de R1 y R2 almacenando el resultado en R3

Ciclos 1

Or_rr R1,R2,R3

Hace un OR bit a bit del contenido de R1 y R2 almacenando el resultado en R3

Xor_rr R1,R2,R3

Hace un XOR bit a bit del contenido de R1 y R2 almacenando el resultado en R3 Tabla 0-7: Instrucciones lgicas entre registros

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

90i

Mnemonicos And_ri R1,#inmediato

Descripcin Hace un AND bit a bit del contenido de R1 e #inmediato almacenando el resultado en

Ciclos

R1 1

(sobreescritura) Or_ri R1,#inmediato Hace un OR bit a bit del contenido de R1 #inmediato almacenando el resultado en e R1 1

(sobreescritura) Xor_ri R1,#inmediato Hace un XOR bit a bit del contenido de R1 #inmediato almacenando el resultado en e R1 1

(sobreescritura) Tabla 0-8: Instrucciones lgicas entre registro e inmediato

Mnemonicos Jmpt #addr

Descripcin Si el resultado de la ltima instruccin de

Ciclos

comparacin de como resultado un True, carga #addr en el contador de programa. En caso contrario 1 incrementa este en uno.

Requiere una comparacin previa. Jmpf #addr Si el resultado de la ltima instruccin de

comparacin de como resultado un False, carga #addr en el contador de programa. En caso contrario 1 incrementa este en uno.

Requiere una comparacin previa. Jmpuc #addr Jmpsig #addr Carga #addr en el contador de programa Si el timer ha terminado su cuenta atrs, carga #addr en el contador de programa. En caso contrario 1 incrementa este en uno. Tabla 0-9: Instrucciones de salto 1

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

91i

4
Lista de instrucciones Cdificacin
En este captulo se muestra el cdigo mquina asociado a cada funcin tal y como debe ser escrito para su correcta interpretacin por el dispositivo. Los mnemnicos correspondientes a cada instruccin se encuentran almacenados en el paquete pfc_core.opcodes siendo suficiente para indicar de que operacin se trata el comando c_opcode[mnemnico] tal y como se ver ms adelante
Cdigo de operacin 6 bits Movrm Movmr Movir Movrr 4 bits N Reg N Reg N Reg N Reg N Reg 4 bits Argumentos 12 bits Mem addr Mem addr inmediato

Tabla 0-10: Juego de instrucciones de movimiento de datos


Cdigo de operacin 6 bits Cmpgt_rr Cmpge_rr Cmpeq_rr Cmple_rr Cmplt_rr Cmpbit_rr 4 bits N Reg N Reg N Reg N Reg N Reg N Reg 4 bits N Reg N Reg N Reg N Reg N Reg N Reg Argumentos 12 bits

Tabla 0-11: Juego de instrucciones de comparacin entre registros.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

92i

Cdigo de operacin 6 bits Cmpgt_ri Cmpge_ri Cmpeq_ri Cmple_ri Cmplt_ri Cmpbit_ri 4 bits N Reg N Reg N Reg N Reg N Reg N Reg

Argumentos 16 bits Inmediato Inmediato Inmediato Inmediato Inmediato Inmediato

Tabla 0-12: Juego de instrucciones de comparacin entre registro e inmediato.


Cdigo de operacin 6 bits Addrr Subrr 4 bits N Reg N Reg 4 bits N Reg N Reg Argumentos 4 bits N Reg N Reg 8 bits

Tabla 0-13: : Juego de instrucciones de operaciones aritmticas entre registros


Cdigo de operacin 6 bits Addri Subri 4 bits N Reg N Reg Argumentos 16 bits inmediato inmediato

Tabla 0-14: Juego de instrucciones de operaciones aritmticas entre registro e inmediato


Cdigo de operacin 6 bits And_rr Or_rr Xor_rr 4 bits N Reg N Reg N Reg 4 bits N Reg N Reg N Reg Argumentos 4 bits N Reg N Reg N Reg 8 bits

Tabla 0-15: Juego de instrucciones de operaciones lgicas entre registros

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

93i

Cdigo de operacin 6 bits And_ri Or_ri Xor_ri 4 bits N Reg N Reg N Reg

Argumentos 16 bits Inmediato Inmediato inmediato

Tabla 0-16: Juego de instrucciones de operaciones lgicas entre registro e inmediato


Cdigo de operacin 6 bits Jmpt Jmpf Jmpuc Jmpsig End 4 bits Argumentos 16 bits PC PC PC PC

Tabla 0-17: Juego de instrucciones de salto.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

94i

6
Mapeo de memoria
La memoria queda mapeada del siguiente modo:
Direccin 0x FFFF Ram 0x F000 0x BFFF Maestro de APB 0x B000 0x 7FFF Interrupciones 0x 7000 0x 3FFF Timer y watchdog 0x3000 Contenido

Tabla 0-18: Mapeado de la memoria

Dentro de cada uno de los slots previamente mostrados, la memoria queda mapeada en funcin del elemento asignado, as pues, en el caso del segmento destinado al timer y al watchdog, los parmetros quedan posicionados en las siguientes direcciones:
Direccin 0x 7FFF 0x 7020 0x 7012 0x 7011 0x7010 0x 7002 0x 7001 0x7000 Valor del preescalado del watchdog Valor final del contador del watchdog restart del watchdog Sin uso Valor del preescalado Valor final del contador Arranque del timer Sin uso Contenido

Tabla 0-19: Organizacin del area de memoria dedicada a los parmetros del Timery del watchdog.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

95i

Por otro lado, en el segmento de memoria destinado al manejo de los punteros asociados a las rutinas de interrupcin, as como los flags que habilitan a stas, se encuentra mapeado de la siguiente forma:
Direccin 0x 7FFF 0x 7011 0x 7010 0x 700F 0x 700E 0x 700D 0x 700C 0x 700B 0x 700A 0x 7009 0x 7008 0x 7007 0x 7006 0x 7005 0x 7004 0x 7003 0x 7002 0x 7001 0x7000 Flags de enable de las interrupciones. Puntero asociado a la interrupcin n15 Puntero asociado a la interrupcin n14 Puntero asociado a la interrupcin n13 Puntero asociado a la interrupcin n12 Puntero asociado a la interrupcin n11 Puntero asociado a la interrupcin n10 Puntero asociado a la interrupcin n9 Puntero asociado a la interrupcin n8 Puntero asociado a la interrupcin n7 Puntero asociado a la interrupcin n6 Puntero asociado a la interrupcin n5 Puntero asociado a la interrupcin n4 Puntero asociado a la interrupcin n3 Puntero asociado a la interrupcin n2 Puntero asociado a la interrupcin n1 Puntero asociado a la interrupcin n 0 Sin uso Contenido

Tabla 0-20: Zona de memoria reservada para los punteros a interrupciones.

En lo referente a las zonas de memoria mapeadas para su uso como memoria RAM y como interfaz con el bus APB, de los 16 bits de direccionamiento, los 14 menos significativos corresponden de forma directa con la direccin en RAM o en el bus APB.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

96i

7
El interfaz APB
El protocolo APB (Advanced Peripheral Bus) es parte de la familia de protocolos de AMBA 3. Se trata de un interfaz de bajo coste, optimizado para un consumo mnimo de energa as como el area de puertas empleada. El APB es un protocolo no pipelinezado, todas las transiciones en las seales tienen lugar ante un flanco ascendente de reloj, para facilitar su integracin en cualquier diseo. Toda transferencia toma al menos dos ciclos (pudiendo ser ms en caso aadir estados de espera) Seales del bus APB Las seales relacionadas con el bus APB suelen referirse con la letra P como prefijo. Son las siguientes: PADDR. Bus de direcciones APB PSEL. Seal de seleccin del esclavo x APB. PENABLE. Seal de habilitacin. Se usa para sincronizar la transferencia. PWRITE. A nivel alto indica acceso de escritura, a nivel bajo acceso de lectura. PRDATA. Bus de datos en transferencias de lectura. PWDATA. Bus de datos en transferencias de escritura. PREADY. Indica cuando se ha completado la operacin de lectura o escritura. PSLVERR. En estado activo, indica que algn error ha sucedido durante la transferencia.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

97i

El protocolo, en la versin de AMBA 3 incorpora cobertura de errorres y espera. As pues, una instruccin de lectura o escritura en un escavo APB se da de la siguiente forma:

Operacin de escritura con espera y sin error

Figura 0-2: Operacin de escritura en un esclavo APB.

La transferencia se inicia con la activacin tras un flanco de subida de reloj, de la seales PSEL y PWRITE. As mismo, en PADDR, se transmite la direccin del esclavo objetivo y en PWDATA el dato a ser escrito. La segunda fase se alcanza cuando se activa la seal PENABLE, Permanecindose en este estado hasta la activacin de PREADY, momento en el que finaliza la operacin, tal y como se detalla en la Figura 2-14. De esta forma es posible trabajar con esclavos que requieran de varios ciclos de reloj para responder. Operacin de lectura con espera y sin error En el caso de la operacin de lectura, todo el protocolo es idntico con la salvedad de que la seal PWRITE se fija a 0 y el valor de PWDATA carece de relevancia. As mismo, el valor de PRDATA es fijado por el esclavo, como se aprecia en la Figura 2-15.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

98i

Figura 0-3: Operacin de lectura de un esclavo APB.

Operacin de escritura con error En el caso de la operacin de escritura erronea, toda la operacin es idntica de la de escritura exitosa, con la salvedad de que en este caso, al mismo tiempo que el esclabo fija la seal PREADY a 1, tambien fija a 1 la sean PSLVERR, como indicacin de que algo ha fallado durante la maniobra, tal y como se aprecia en la Figura 2-16.

Figura 0-4: Operacin de escritura erronea en un esclavo APB

Operacin de lectura con error Finalmente, en el caso de las operaciones de lectura con error, las seales son la conjuncin de la operacin de lectura previamente explicada (2.3.3) con la maniobra con indicacin de error del punto anterior, tal y como se puede observar en la Figura 2-17.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

99i

Figura 0-5: Operacin de lectura erronea en un esclavo APB

Diagrama de fases del protocolo APB En genera, es posible representar las fases del protocolo ABP de una forma esquemtica por medio del diagrama mostrado en la Figura 2-18

Figura 0-6: Diagrama de fases del protocolo APB

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

100

8
Interrupciones
El dispositivo es capaz de gestionar hasta 16 interrupciones sin que exista anidamiento entre las mismas ni almacenamiento del contexto. As pues, recae sobre el programador la responsabilidad de almacenar el contenido de los registros que vayan a ser manipulados durante la interrupcin. De este modo, se logra acelerar la transicin entre la rutina principal y la de interrupcin, reducindola al mnimo imprescindible.

El estado de las instrucciones tras el start-up reset es desactivado, por motivos de seguridad. Para su uso, el programa deber acceder a las direcciones indicadas en la Tabla 0-20 para cargar las direcciones de memoria de las rutinas de interrupcin as como para activar los flags que habilitan las interrupciones.

La activacin de la secuencia de interrupcin tiene lugar cuando es detectado un flanco ascendente en alguno de los bits del vector de interrupcin. A partir de ese instante, la rutina de interrupcin se activar tan pronto como sea posible. En el caso de que varias interrupciones hayan solicitado ser activadas al mismo tiempo, se entrar a la rutina ms prioritaria, dentro de una prioridad fija (la rutina n0 es la menos prioritaria mientras que la n15 es la ms prioritaria) permaneciendo las demas interrupciones a la espera hasta que sta finalice. Para finalizar la rutina de interrupcin, basta con ejecutar la instruccin End (Tabla 0-9), la cual devuelve el control al proceso principal. Recurdese que el programador debe devolver a su posicin original los registros almacenados en memoria al comienzo de la interrupcin.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

101

9
Formato del cdigo
Al trabajar con cdigo sintetizado en lgica de puertas, el programa debe ser expresado como cdigo VHDL con el siguiente formato:
library ieee; use ieee.std_logic_1164.all; library pfc_core; use pfc_core.opcodes.all; --*********************************************************************** package program_code is constant c_n_instructions : integer := 20;

type ROM_anio_type is array (natural range <>) of std_logic_vector(25 downto 0); constant ROM_anio: ROM_anio_type(0 to c_n_instructions-1) := ( c_opcode_movir & x"3" & x"0003", c_opcode_movir & x"4" & x"0004", c_opcode_addrr & x"4" & x"3" & x"5" & x"00", c_opcode_cmpgt & x"4" & x"3" & x"000", c_opcode_movir & x"6" & x"000A", c_opcode_movrm & x"6" & "0100" & x"001", c_opcode_jmpt (others =>'0'), (others =>'0'), (others =>'0'), c_opcode_movir & x"6" & x"000A", c_opcode_movrm & x"6" & x"0001", c_opcode_movir & x"6" & x"0002", c_opcode_movrm & x"6" & x"0002", c_opcode_movrm & x"0" & x"0000", --movir R6 #xA --movir R6 #x0001 --movir R6 #x2 --movir R6 #x0002 --movir R0 #x0000 --start timer c_opcode_jmps & x"0" & x"000F", --jmps #x000F --end & x"0" & x"0000", --movir R3 #3 --movir R4 #4 --addrr R3 R4 R5 --cmpgt R4 R3 --movir R6 #xA --movir R6 #x4001 --jmpt #x0000

c_opcode_end & x"00000", (others =>'0'), (others =>'0'), (others =>'0' ); end program_code;

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

102

CDIGO FUENTE

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

103

8 CDIGO VHDL

Dada la amplia cantidad de cdigo generado en este proyecto y a fin de evitar incluir numerosas pginas con cdigo de forma totalmente prescindible, se hace necesaria la inclusin del mismo en un cd adjunto, el cual puede encontrarse al final del presente volumen.

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

104

DATASHEETS

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

105

En las siguientes pginas se muestran de forma breve algunas caractersticas de las familias de FPGAS RTAX y ProAsic, para ms detalles, remitase al fabricante www.actel.com

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

106

POASIC

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

107

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

108

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

109

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

110

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

111

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

112

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

113

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

114

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

115

10 RTAX

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

116

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

117

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

118

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

119

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

120

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

121

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

122

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

123

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

124

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

125

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

126

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

127

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

128

lvaro Padierna Daz

Diseo de un microprocesador sintetizable en FPGA

129

lvaro Padierna Daz

PLANOS

Diseo de un microprocesador sintetizable en FPGA

1i}

ndice de planos
Plano n 1: Diagrama esquemtico del core. Plano n 2: Diagrama esquemtico de la ALU. Plano n 3: Diagrama esquemtico del control.

lvaro Padierna Daz

Microprocesador sintetizable en FPGA

Microprocesador sintetizable en FPGA

PLIEGO DE CONDICIONES

Microprocesador sintetizable en FPGA

ndice
PLIEGO DE CONDICIONES ....................................................................................................... 0 1 PLIEGO DE CONDICIONES GENERALES Y ECONMICAS ................................... 2 1.1 1.2 2 CONDICIONES GENERALES .............................................................................................. 2 CONDICIONES ECONMICAS ........................................................................................... 4

PLIEGO DE CONDICIONES TCNICAS Y PARTICULARES.................................... 5 2.1 2.2 2.2.1 2.2.2 2.3 2.4 2.5 2.6 EQUIPO ELECTRNICO .................................................................................................... 5 PLACA DEL CIRCUITO DE ALIMENTACIN ....................................................................... 6 Soporte ...................................................................................................................... 6 Pistas......................................................................................................................... 6 NORMAS DE CALIDAD ..................................................................................................... 7 NORMAS DE SEGURIDAD E HIGIENE ................................................................................ 7 VIDA TIL DEL EQUIPO ................................................................................................... 7 OTROS CRITERIOS DE DISEO .......................................................................................... 7

Microprocesador sintetizable en FPGA

1 PLIEGO DE CONDICIONES GENERALES Y ECONMICAS

1.1 Condiciones generales


Las condiciones y clusulas que se establecen en este documento son de obligado cumplimiento por las partes contratantes. I. Tanto el administrador como el cliente se comprometen desde la fecha de la firma del contrato a llevar a cabo lo que se estipule. II. Ante cualquier reclamacin o discrepancia en lo concerniente al cumplimiento de lo pactado por cualquiera de las partes, una vez agotada toda va de entendimiento, se tramitar el asunto por la va de lo legal. El dictamen o sentencia que se dicte ser de obligado cumplimiento para las dos partes. III. Al firmarse el contrato, el suministrador se compromete a facilitar toda la informacin necesaria para la instalacin y buen funcionamiento del equipo, siempre que sea requerido para ello. IV. As mismo, el cliente entregar al suministrador todas las caractersticas distintivas del equipo comprado y aquellas otras que considere oportunas para el necesario conocimiento de la misma a efectos del diseo del presente equipo. V. El plazo de entrega ser de nueve meses, a partir de la fecha de la firma del contrato, pudiendo ampliarse en tres meses. Cualquier modificacin de los plazos deber contar con el acuerdo de las dos partes.

Microprocesador sintetizable en FPGA

VI. En caso de retrasos imputables al suministrador, se considerar una indemnizacin del 1 % del valor estipulado por semana de retraso. VII. Existir un plazo de garanta de un ao a partir de la entrega del sistema. Dicha garanta quedar sin efecto si se demostrase que el sistema ha estado sometido a manipulacin o uso indebido. VIII. Cumplido dicho plazo de garanta, el suministrador queda obligado a la reparacin del sistema durante un plazo de cinco aos, fuera del cual quedar a su propio criterio atender la peticin del cliente. IX. En ningn momento tendr el suministrador obligacin alguna frente a desperfectos o averas por uso indebido por personas no autorizadas por el suministrador.

Microprocesador sintetizable en FPGA

1.2 Condiciones econmicas


Las condiciones econmicas a tener en cuenta son: I. Los precios indicados en este proyecto son firmes y sin revisin por ningn concepto, siempre y cuando se acepten dentro del periodo de validez del presupuesto que se fija hasta Diciembre de 2001. II. El pago se realizar como sigue: o 75% a la firma del contrato. o 25% en el momento de entrega. III. La forma de pago ser al contado mediante cheque nominativo o mediante transferencia bancaria. En ningn caso se aceptarn letras de cambio. IV. El suministrador se har cargo de los gastos de embalaje y del transporte, dentro de la ciudad donde se encuentre la instalacin. En caso de ser necesario transporte interurbano, el gasto correr por cuenta del cliente. En todo caso, el responsable de los posibles desperfectos ocasionados por el transporte ser el suministrador.

V. Durante el plazo de garanta, la totalidad de los gastos originados por las reparaciones corrern por cuenta del suministrador. VI. Fuera de dicho plazo y durante los siguientes cinco aos, los costes sern fijados mediante acuerdo por ambas partes. Pasados 5 aos, stos los fijar exclusivamente el suministrador.

Microprocesador sintetizable en FPGA

2 PLIEGO DE CONDICIONES TCNICAS Y PARTICULARES

2.1 Equipo electrnico


El equipo sobre el que se implemente el diseo habr de ser un FPGA; ste habr de contar con las siguientes caractersticas: I. El equipo informtico debe estar homologado conforme a la normativa de la Agencia Espacial Europea (ESA) para funcionar en aplicaciones espaciales. II. El cdigo debe instalarse conforme a las indicaciones del fabricante, manteniendo las condiciones de humedad y temperatura entre los lmites marcados.

III. Los programas informticos empleados han de contar con la licencia preceptiva y cumplir con las condiciones de la misma. En caso de usar programas de licencia GNU, se debern respetar las condiciones de la misma. .

Microprocesador sintetizable en FPGA

2.2 Placa del circuito de alimentacin


2.2.1 Soporte

El tipo de soporte aislante utilizado en las placas de circuito ser de fibra de vidrio, con las caractersticas siguientes (recomendadas): Resistencia superficial en M< 105. Resistencia volumtrica en M<107. Constante dielctrica (a f=1 MHz) 0,25. Temperatura mxima de trabajo 125C. Temperatura mxima de soldadura (mx. 20 seg.) 260C.

El espesor de las placas ser de 1,6 mm (valor normalizado). Las placas sern de una ms caras, fabricadas por el mtodo sustractivo basado en mscaras. Debern acompaarse de un esquema que contenga los taladros a realizar, as como la colocacin exacta de los componentes. 2.2.2 Pistas

El diseo se realizar teniendo en cuenta las recomendaciones para equipos de alta frecuencia y de telecomunicaciones que dicta la normativa Europea en cuanto a: Compatibilidad electromagntica (89/36/EEC). Niveles de tensin (73/23/EEC).

Asimismo, se realizarn las pistas con el siguiente grosor recomendado:

Microprocesador sintetizable en FPGA

2.3 Normas de calidad


Los sistemas se disearn de forma que cumplan las normas UNE CEI y EN aplicables a este tipo de productos.

2.4 Normas de seguridad e higiene


El proyecto cumplir con la Ley 31/95 de Prevencin de Riesgos Laborales.

2.5 Vida til del equipo


Los sistemas se disearn para una vida til en uso continuo no inferior a diez aos.

2.6 Otros criterios de diseo


Se emplearn componentes normalizados para los circuitos electrnicos considerando los mrgenes de seguridad necesarios para trabajar en entornos de alta radiacin.

PRESUPUESTO

Microprocesador sintetizable en FPGA

ndice

PRESUPUESTO ............................................................................................................................. 0 1 2 3 4 MEDICIONES....................................................................................................................... 2 PRECIOS UNITARIOS........................................................................................................ 4 SUMAS PARCIALES ........................................................................................................... 5 PRESUPUESTO GENERAL ............................................................................................... 6

Microprocesador sintetizable en FPGA

1 MEDICIONES

En este captulo se indican las diferentes partes que integran el proyecto, agrupadas en distintas partidas, definiendo los presupuestos de cada una de ellas, as como el presupuesto total. A la hora de detallar los conceptos que se vern incluidos en el presupuesto final correspondiente al presente proyecto, se han seguido las premisas que se exponen a continuacin: I. Los precios de los componentes detallados corresponden al importe pagado en su fecha de compra, y pueden no coincidir con el importe de compra en caso de requerirse una reproduccin del proyecto, en cuyo caso el presente presupuesto podr ser revisado y actualizado.

II.

Se incluyen los costes correspondientes al equipo informtico y al software utilizado en el desarrollo del proyecto.

III.

El presupuesto final incluye la totalidad de los componentes empleados en el proyecto que constituye el concepto global desarrollado, pero la mano de obra incluida se corresponde nicamente con la empleada por el proyectista encargado de la parte del concepto global desarrollada en el presente proyecto.

Microprocesador sintetizable en FPGA

Las partidas correspondientes a recursos humanos se encuentran a continuacin, en la Tabla 1-1

Concepto Estudio y auditoria Horas de ingeniera Elaboracin de documentacin

Nmero de Horas
75 350

50

Tabla 1-1: Medios de los recursos humanos

En la Tabla 1-2 se hace referencia a las unidades de cada unos de los materiales que componen el proyecto.

Concepto PC Procesador Intel Core 2 Duo 2.10 Ghz Memoria RAM 2 Gb Disco duro 250 Gb Blue-ray Disc Drive WLAN 802.11 a/b/g/n Tarjeta nVIDIA GeForce 8600 GS GPU Microsoft Windows Vista Home Premium 32 bits Paquete Office 2003 HDL designer Modelsim Licencia 1 ao Licencia 1 ao
Tabla 1-2: Recursos de los medios materiales

Cantidad 1 unidad

1 licencia 1 licencia

Microprocesador sintetizable en FPGA

2 PRECIOS UNITARIOS
Los precios unitarios de las partidas de los recursos humanos son:

Concepto Estudio y auditoria Horas de ingeniera Elaboracin de documentacin

Precio (/hora)
45

30

20

Tabla 2-1: Precio unitario de los recursos humanos

Los precios unitarios de los materiales son:

Concepto PC Procesador Intel Core 2 Duo 2.10 Ghz Memoria RAM 2 Gb Disco duro 250 Gb Blue-ray Disc Drive WLAN 802.11 a/b/g/n Tarjeta nVIDIA GeForce 8600 GS GPU Microsoft Windows Vista Home Premium 32 bits Paquete Office 2003 HDL designer Modelsim Licencia 1 ao Licencia 1 ao
Tabla 2-2: Precio unitario de los medios materiales

Precio (/ud.) 1200/5 =240 (amortizacin correspondiente al periodo)

6000 1000

Microprocesador sintetizable en FPGA

3 SUMAS PARCIALES

Las sumas parciales de los recursos humanos y de materiales son:

Concepto

Nmero de horas

Precio (/hora)

Precio Total ()

Estudio y auditoria Horas de ingeniera Elaboracin de documentacin


Total de RR. HH.

75 350

45 30

3375 10500

50

20

100

13975

Tabla 3-1: Sumas parciales de los recursos humanos.

Concepto PC Procesador Intel Core 2 Duo 2.10 Ghz Memoria RAM 2 Gb Disco duro 250 Gb Blue-ray Disc Drive WLAN 802.11 a/b/g/n Tarjeta nVIDIA GeForce 8600 GS GPU Microsoft Windows Vista Home Premium 32 bits Paquete Office 2003 HDL designer Modelsim Licencia 1 ao Licencia 1 ao

Uds. 1

Precio (/ud.) 240

Precio Total () 240

1 1

6000 1000

6000 1000 7240

Total de equipos y componentes


Tabla 3-2: Sumas parciales de los materiales

Microprocesador sintetizable en FPGA

4 PRESUPUESTO GENERAL

El presupuesto general del proyecto es el siguiente

Partida Total de Recursos Humanos Total de equipos y componentes Total de presupuesto 16 % IVA Total de presupuesto general

Importe () 13975 7240 21215 3 394.4

24 609.4

Tabla 4-1: Precio unitario de los recursos humanos

También podría gustarte