Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AUTOR:
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
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
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
AUTOR:
Resumen
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.
Resumen
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.
Abstract
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.
Abstract
IIII
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.
MEMORIA
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
2.1.5 2.2
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
iiii
2.3.6 3
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
3.2.2.1 3.2.2.2
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
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
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
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
vi}
10
RTAX.................................................................................................................................. 115
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
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
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
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
1i}
1 INTRODUCCIN
2i}
Procesador
Desarrollador
Cdigo abierto?
Notas
TSK3000A
Altium
No Sin regalas
Wishbone
32-bits
arquitectura
Harvard.
No - Sin regalas Si No Si No Si Si
OpenRISC
OpenCores
Si
Wishbone
Altera, Xilinx
AEMB
Si
Wishbone
OpenFire
Si
OPB, FSL
32-bits
xr16 ZPU
No Si
3i}
1.2.1
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
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.
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.
6i}
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.
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.
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.
9i}
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.
11i
2 ESTUDIO PRELIMINAR
2.1.1
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]
12i
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.
13i
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
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]
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.
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.
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.
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).
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.
18i
19i
2.1.3
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.
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
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.
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
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
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.
22i
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.
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
2.1.4.4 Escritura asncrona Finalmente se muestra el caso de la escritura sobre la SRAM en modo asncrono
24i
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/
25i
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.
27i
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:
28i
2.3.2
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.
29i
2.3.4
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.
2.3.5
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.
30i
2.3.6
Es posible representar las fases del protocolo ABP de una forma esquemtica por medio del diagrama mostrado en la Figura 2-18
31i
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
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.
33i
Cdigo de operacin 6 bits Movrm Movmr Movir Movrr 4 bits N Reg N Reg N Reg N Reg N Reg 4 bits
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
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
35i
Cdigo de operacin 6 bits And_ri Or_ri Xor_ri 4 bits N Reg N Reg N Reg
3.2.1
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
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.
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
Estas instrucciones comparan bien un registro con un inmediato, bien con un registro. Siendo la instruccin de la forma:
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).
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.
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
Estas instrucciones efectuan una operacin lgica AND, OR, XOR bit a bit sobre los operandos. As pues pueden presentar los siguientes formatos:
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
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.
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.
42i
4 IMPLANTACIN
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
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)
apb_ready apb_fault
apb_ready apb_fault
clk rst_n
G G
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
a a_max a_min
over under
comp_over comp_under
rst_n
( integer )
opa opb
a b
s operation
logic_result logic_operation
rst_n
opa opb
opa opb
flagstate
flag_state_result
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.
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
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)
46i
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
p_decod 3
timer_state
next_op
ram_enable ram_rw
timer_data_ready
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
inmediate
opcode
interrupt_data_ready
c lk rs t_n
A continuacin se detallan cada uno de los diferentes procesos que tienen lugar en el control del micro.
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:
Contenido Ram
Maestro de APB
Interrupciones
Timer y watchdog
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.
48i
4.3.2
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
El nmero de la interrupcin queda determinado por los cuatro bits menos significativos de la direccin. As pues, por ejemplo, para acceder al puntero
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.
50i
4.3.3
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:
51i
Registrado de la interrupcin
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
52i
4.3.4
Dentro del rea de memoria reservada para el timer, sta queda determinada de acuerdo a la siguiente tabla:
Contenido
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.
53i
4.3.5
En la Figura 4-5, se muestra en forma de diagrama de flujo el funcionamiento interno del bloque de timer.
Start timer
Timer_state<=0
No Preescalado==0?
Si
Preescalado-1
Cuenta==0?
timer._state<=1
Espera
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.
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.
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.
56i
En el micro, los parmetros del watchdog son accesibles mediante escritura en memoria, encontrndose mapeados del siguiente modo:
Contenido
Sin uso
Valor del preescalado del watchdog Valor final del contador del watchdog restart del watchdog
Tabla 4-5: Organizacin del area de memoria dedicada a los parmetros del watchdog.
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.
Si
No
PC=PC de salto
PC+1
Si
Interrupcin solicitada?
No
Si
Fin de la interrupcin?
No
PC= PC_bufer
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.
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
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.
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
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.
62i
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
s_w access
s_raccess
pready='1' s_wait
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).
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
A continuacin se muestran los resultados de las simulaciones sobre los bloques del sistema as como una breve descripcin de la rutina de test.
64i
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.
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.
65i
5.1.2
El interfaz APB tambien debe ser capaz de soportar operaciones erroneas de escritura. en la siguiente figura se muestra un detalle de dicho caso.
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).
66i
5.1.4
En el caso de una operacin de lectura erronea se obtienen resultados anlogos representados en la siguiente figura.
67i
Figura 5-6: Visin general del proceso de test del banco de registros.
68i
69i
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.
70i
--/////////////////////////////////////////////////////////////////////// -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
71i
--/////////////////////////////////////////////////////////////////////// -Interruption 1
--/////////////////////////////////////////////////////////////////////// --Bucle infinito c_opcode_jmpuc & x"0" & x"0013" --jmpuc #x0013
--/////////////////////////////////////////////////////////////////////// --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
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
72i
--jmps #x00026
--jmpnc #x0018
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. .
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.
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.
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
76i
ESTUDIO ECONMICO
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.
78i
MANUAL DE USUARIO
79i
80i
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.
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.
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.
84i
2
Puertos
El micro dispone de los siguientes puertos
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
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
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
87i
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
88i
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
89i
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
Ciclos 1
Subri R1,#inmediato
Ciclos 1
Or_rr R1,R2,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
90i
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
Ciclos
comparacin de como resultado un True, carga #addr en el contador de programa. En caso contrario 1 incrementa este en uno.
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
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
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
93i
Cdigo de operacin 6 bits And_ri Or_ri Xor_ri 4 bits N Reg N Reg N Reg
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
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.
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
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.
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.
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:
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.
98i
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.
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.
99i
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
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.
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;
102
CDIGO FUENTE
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.
104
DATASHEETS
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
106
POASIC
107
108
109
110
111
112
113
114
115
10 RTAX
116
117
118
119
120
121
122
123
124
125
126
127
128
129
PLANOS
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.
PLIEGO DE CONDICIONES
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
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.
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.
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. .
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).
PRESUPUESTO
ndice
PRESUPUESTO ............................................................................................................................. 0 1 2 3 4 MEDICIONES....................................................................................................................... 2 PRECIOS UNITARIOS........................................................................................................ 4 SUMAS PARCIALES ........................................................................................................... 5 PRESUPUESTO GENERAL ............................................................................................... 6
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.
Nmero de Horas
75 350
50
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
2 PRECIOS UNITARIOS
Los precios unitarios de las partidas de los recursos humanos son:
Precio (/hora)
45
30
20
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
6000 1000
3 SUMAS PARCIALES
Concepto
Nmero de horas
Precio (/hora)
Precio Total ()
75 350
45 30
3375 10500
50
20
100
13975
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
1 1
6000 1000
4 PRESUPUESTO GENERAL
Partida Total de Recursos Humanos Total de equipos y componentes Total de presupuesto 16 % IVA Total de presupuesto general
24 609.4