Download Procesador Embebido Microblaze para FPGAs
Document related concepts
no text concepts found
Transcript
"Procesador Embebido Microblaze para FPGAs" Estanislao Aguayo, Becario de Investigación. Departamento de Tecnología de Computadores, Escuela Politécnica Superior. UAM. Sumario Introduccion - Soft vs Hard processors - Soft processor en una FPGA IP cores para Microblaze • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze; Desarrollo de aplicaciones con EDK 6.1 • Cadena dediseño y montaje • Cadena de simulación • Debugging Microblaze Soft processor • Arquitectura Interna • Pipeline • Registros internos Repertorio de instrucciones • • • Interrupciones y excepciones Configuraciones de buses Memoria Microblaze vs Otros sitemas • Velocidad • Consumo • Tiempo de desarrollo y/o modificacion del diseño Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Sumario Introduccion - Soft vs Hard processors - Soft processor en una FPGA IP cores para Microblaze • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze; Desarrollo de aplicaciones con EDK 6.1 • Cadena dediseño y montaje • Cadena de simulación • Debugging Microblaze Soft processor • Arquitectura Interna • Pipeline • • • • • Registros internos Repertorio de instrucciones Interrupciones y excepciones Configuraciones de buses Memoria Microblaze vs Otros sitemas • Velocidad • Espacio • Consumo • Tiempo de desarrollo y/o modificacion del diseño Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Soft vs Hard processors Hard Processor; El procesador es un circuito VLSI, con un diseño a nivel de transistor optimizado para ejecutar instrucciones en el mínimo tiempo posible. Soft Processor; El procesador se implementa simulando su comportamiento con un lenguaje de programación (HDL en el caso de Microblaze) Ejemplos; Power PC en una Virtex II pro, 8086, Pentium… architecture Behavioral of procesador is … If Ins_Entrada = Instrucción_Suma then Acumulador <= Dato1 + Dato2 Endif; … "Procesador Embebido Microblaze" E. Aguayo UAM Soft processor en una FPGA Microblaze es un soft processor descrito en VHDL. VHDL describe la arquitectura que compone el procesador dentro de la FPGA, Microblaze utiliza Puertas Lógicas Multiplexores ALU ┌──────┘└─────┐ RAM ↑↑↑↑↑ HDL ↑↑↑↑↑ FPGA ┌──────┘└─────┐ Xilinx lo vende como un IP core. Unidad de Control Registros Internos … … Procesador FPGA => entre 432 (Spartan II 15K) hasta 125.136 (Virtex II Pro 125) celdas lógicas MicroBlaze Soft Processor => alrededor de 1000 celdas lógicas (dependiendo de la FPGA) "Procesador Embebido Microblaze" E. Aguayo UAM Sumario Introduccion ¿FPGA? Soft vs Hard processors Soft processor en una FPGA Ventajas de una FPGA: Conectividad, distribución de tareas HWHW-SW IP cores para Microblaze (Equipamiento opcional) • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze vs Otros sistemas (Prestaciones) • Velocidad • Espacio • Consumo • Tiempo de desarrollo y/o modificación del diseño Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de conduccion) conduccion) • Cadena dediseño y montaje • Cadena de simulación • Debugging Microblaze Soft processor • Arquitectura Interna • Pipeline • Registros internos • Repertorio de instrucciones • Interrupciones y excepciones • Configuraciones de buses • Memoria Fpga´s que soportan Microblaze Ejemplo de Aplicación de Microblaze Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Arquitectura Interna Arquitectura interna tipo Harvard 32x32bits registros internos Buses diseñados para soportar CoreConnect de IBM "Procesador Embebido Microblaze" E. Aguayo UAM Pipeline Solución arquitectónica para maximizar throughput (# datos procesados por segundo) Decodificación Recepción Ejecución Todos los riesgos del pipeline son tratados por HW (Flush (Flush automático) Posibilidad de especificar el uso del pipeline en el código de la instrucción.(Técnica Delay Slots, , para reducir la penalización por salto) Slots "Procesador Embebido Microblaze" E. Aguayo UAM Pipeline Fetch "Procesador Embebido Microblaze" E. Aguayo UAM Pipeline Decode "Procesador Embebido Microblaze" E. Aguayo UAM Pipeline Execute "Procesador Embebido Microblaze" E. Aguayo UAM Registros internos 32x32bit registros internos de propósito general. • Gran capacidad de direccionamiento de memoria. 2 registros de propósito especifico • PC • MSR (Machine (Machine Status Register); Register); Acarreo, Mascara de interrupciones, Configuración de buses… No hay registros de estado de programa • Cambios de contexto ineficientes "Procesador Embebido Microblaze" E. Aguayo UAM Repertorio de instrucciones Procesador tipo RISC (Reduced (Reduced Instruction Set Computer) Computer) Las instrucciones operan con los registros internos o con valores inmediatos. 87 instrucciones para realizar operaciones lógicas, aritméticas, comparaciones (3 ciclos si salta + 2 para rellenar el pipeline), pipeline), accesos a memoria… "Procesador Embebido Microblaze" E. Aguayo UAM Repertorio de instrucciones Cuestiones sobre el repertorio de instrucciones Instrucciones de 32bits; • • • • Espacio de memoria Ancho de banda de la memoria Mas bits, mas potencia consumida Code density ¿Cuanto de amigo en nuestro compilador? • Uso del pipeline • Instrucciones con carga de valor inmediato "Procesador Embebido Microblaze" E. Aguayo UAM Interrupciones y excepciones El procesador tiene un puerto de interrupciones. • 4 ciclos de reloj de latencia • Disparada por nivel o flanco Microblaze soporta excepciones En ambos casos se modifica el contenido de PC a un valor prefijado y se almacena el antiguo valor en un GPR. "Procesador Embebido Microblaze" E. Aguayo UAM Interrupciones y excepciones Si hay diferentes prioridades de interrupciones, necesitaremos un IP. • • • Aumento de la latencia de interrupciones Manejo de interrupciones “torpe” No hay interrupciones tipo wakewake-up Pila de direcciones implementada por software. "Procesador Embebido Microblaze" E. Aguayo UAM Configuraciones de buses Memoria RAM interna de la FPGA Datos Buses del procesador Externa a través del OPB y el controlador del dispositivo externo. Memoria RAM interna de la FPGA Instrucciones Externa a través del OPB y el controlador del dispositivo externo. "Procesador Embebido Microblaze" E. Aguayo UAM Configuraciones de buses El tamaño del bus de datos es dinámicamente ajustable • Solo con el protocolo “Legacy_devices” • No es el más optimizado para FPGA´s, FPGA´s, porque requiere retransmisiones por parte del master para periféricos mas pequeños, consumiendo muchos ciclos de reloj. • El más optimizado es “Byte_enables”, con instrucciones separadas para escribir Bytes,Half_Word´s y Word´s, para manejar el bus, incluidas en el repertorio de instrucciones. El de instrucciones no soporta este modo. El bus de instrucciones tiene el puerto de escritura implementado, para conservar consistencia con el de datos. "Procesador Embebido Microblaze" E. Aguayo UAM Memoria Interna Acceso directo del procesador a los Bloques de RAM interna de la FPGA. Memoria interna de la FPGA • Configurable para la anchura de bus deseada, pero con las técnicas “Read_Sterring” y “Write_Sterring” Read Data Sterring Write Data Sterring Latencia de acceso a memoria interna 2 ciclos "Procesador Embebido Microblaze" E. Aguayo UAM Memoria Externa Memoria Externa; acceso a través del OPB. Latencia de acceso a memoria externa 3 ciclos de reloj si no hay ciclos de arbitrio para el OPB. "Procesador Embebido Microblaze" E. Aguayo UAM Sumario Introduccion ¿Qué es una FPGA? Soft vs Hard processors Soft processor en una FPGA Ventajas de una FPGA: Conectividad, distribución de tareas HWHW-SW Microblaze Soft processor (Equipamiento de serie) • Arquitectura Interna • Pipeline • Registros internos • Repertorio de instrucciones • Interrupciones y excepciones • Configuraciones de buses • Memoria IP cores para Microblaze • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze vs Otros sitemas (Prestaciones) • Velocidad • Espacio • Consumo • Tiempo de desarrollo y/o modificacion del diseño Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de conduccion) conduccion) • Cadena dediseño y montaje • Cadena de simulación • Debugging Fpga´s que soportan Microblaze Ejemplo de Aplicación de Microblaze Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Arquitectura Core Connect de IBM para Microblaze Desarrollada para conectar diferentes módulos integrados en un mismo chip por IBM. Xilinx lo ha tomado como estándar • • Ahorra tiempo de diseño(Implementacion, diseño(Implementacion, simulacion …) Portabilidad a nuestro diseño OPB (On (On--chip peripheral bus) • • • • Bus síncrono de 32 bits para datos e instrucciones por líneas separadas (64 bits en total). Permite la selección del tamaño del bus dinámicamente Soporta varios Masters, Masters, protocolo Byte enable y bus parking Se le pueden añadir periféricos sin cambiar I/O´s I/O´s gracias a su arquitectura con multiplexación distribuida. "Procesador Embebido Microblaze" E. Aguayo UAM IP cores para OPB (On-Chip peripheral bus) Desarrollados por Xilinx para utilizar toda la potencia de microblaze y facilitar diseños. (IP cores muy estudiados, configurables y con diagramas de tiempos muy detallados.) • EMC (Controlador de memoria externa) • Controlador de interrupciones • UART (Receptor/Transmisor asincrono universal, para comunicaciones serie) • GPIO(Entrada/Salida GPIO(Entrada/Salida de proposiyo general) • Timer/ Timer/Counter • JTAGJTAG-UART(Joint test Action Group Universal, estándar IEEE1149) "Procesador Embebido Microblaze" E. Aguayo UAM Otros IP interesantes Decodificador Viterbi para corrección de errores 10 Gigabit Media Access Controller Controlador Ethernet 10/100 Procesador Bluetooth Interfaz PCI, I2C, DDR RAM DSP, filtros digitales, FFT (hasta 1024 puntos) Interfaces para procesadores externos Microcontroladores (Como el 8051) … "Procesador Embebido Microblaze" E. Aguayo UAM Crea tus propios cores y sus drivers Para OPB o para PLB Xilinx ayuda con el IPIF, un modulo para conectar tu core con el OPB. Para crear masters y esclavos Driver "Procesador Embebido Microblaze" E. Aguayo UAM Crea tus propios cores y sus drivers "Procesador Embebido Microblaze" E. Aguayo UAM Sumario Introduccion ¿FPGA? Soft vs Hard processors Soft processor en una FPGA Ventajas de una FPGA: Conectividad, distribución de tareas HWHW-SW IP cores para Microblaze (Equipamiento opcional) • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de conduccion) conduccion) • Cadena dediseño y montaje • Cadena de simulación • Debugging Microblaze Soft processor (Equipamiento de serie) • Arquitectura Interna • Pipeline • Registros internos • Repertorio de instrucciones • Interrupciones y excepciones • Configuraciones de buses • Memoria Microblaze vs Otros sistemas • Velocidad • Consumo • Tiempo de desarrollo y/o modificación del diseño Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Velocidad 8051 50 MHz: 0.5 D-MIPS Pentium IV 2.8 GHz: 5340 D-MIPS MicroBlaze en Vitex II Pro a 150 MHz: 125 D_MIPS "Procesador Embebido Microblaze" E. Aguayo UAM Consumo ? 8051 Alrededor de 200 mW Spartan IIE 300K 800mW (Microblaze IP core) P IV 2.8 GHz alrededor de 60 W "Procesador Embebido Microblaze" E. Aguayo UAM Tiempo de desarrollo y/o modificación del diseño Ejemplo de comparación; implementación del procesador paralelo TOTEM diseñado para hacer multiplicaciones de matices "Procesador Embebido Microblaze" E. Aguayo UAM Sumario Introduccion ¿FPGA? Soft vs Hard processors Soft processor en una FPGA Ventajas de una FPGA: Conectividad, distribución de tareas HWHW-SW IP cores para Microblaze (Equipamiento opcional) • Estándar Core Connect de IBM para Microblaze • Para OPB (On (On--Chip peripheral bus) • Otros IP interesantes • Crea tus propios cores y sus drivers Microblaze; Desarrollo de aplicaciones con EDK 6.1 • Cadena de diseño y montaje • Cadena de simulación • Debugging Microblaze Soft processor (Equipamiento de serie) • Arquitectura Interna • Pipeline • Registros internos • Repertorio de instrucciones • Interrupciones y excepciones • Configuraciones de buses • Memoria Microblaze vs Otros sistemas (Prestaciones) • Velocidad • Espacio • Consumo • Tiempo de desarrollo y/o modificación del diseño Fpga´s que soportan Microblaze Ejemplo de Aplicación de Microblaze Referencias "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system hardware Descripción del Hardware, el archivo .MHS • • • • • Periféricos Configuración de buses de Microblaze Conexiones internas del sistema Distribución de la memoria Configuración de los periféricos y versión de los mismos (aunque se puede hacer en un archivo aparte .MPD y cargarlo a PlatGen) PlatGen) XPS dentro de EDK 6.1 ofrece un tutorial para crear este archivo. Solo tres comandos de asignación; • • • BUS_INTERFACE PARAMETER (Hardware) PORT BEGINmicroblaze PARAMETERINSTANCE=microblaze_0 PARAMETERHW_VER=2.00.a PARAMETERC_DEBUG_ENABLED=1 PARAMETERC_NUMBER_OF_PC_BRK=8 PARAMETERC_NUMBER_OF_RD_ADDR_BRK=1 PARAMETERC_NUMBER_OF_WR_ADDR_BRK=1 PARAMETERC_USE_ICACHE=1 PARAMETERC_CACHE_BYTE_SIZE=8192 PARAMETERC_USE_DCACHE=0 PARAMETERC_ICACHE_BASEADDR=0x14000000 PARAMETERC_ICACHE_HIGHADDR=0x16003fff PARAMETERC_ADDR_TAG_BITS=13 BUS_INTERFACEDLMB=dlmb BUS_INTERFACEILMB=ilmb BUS_INTERFACEDOPB=mb_opb BUS_INTERFACEIOPB=mb_opb PORTCLK=sys_clk_s PORTDBG_CAPTURE=DBG_CAPTURE_s PORTDBG_CLK=DBG_CLK_s PORTDBG_REG_EN=DBG_REG_EN_s PORTDBG_TDI=DBG_TDI_s PORTDBG_TDO=DBG_TDO_s PORTDBG_UPDATE=DBG_UPDATE_s END BEGINopb_v20 PARAMETERINSTANCE=mb_opb PARAMETERHW_VER=1.10.b PARAMETERC_EXT_RESET_HIGH=0 PORTSYS_Rst=sys_rst_s PORTOPB_Clk=sys_clk_s END HDL (VHDL o Verilog) compilable "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system hardware Distribución de la memoria en un sistema Microblaze Memoria de sistema El bit 24 define direcciones en el chip (si es cero) o fuera del chip (si es uno) ┌──────┘└─────┐ Dirección 0x0000 0000 Dirección dispositivos "Procesador Embebido Microblaze" E. Aguayo UAM ←--- Espacios huecos en el espacio de direccionamiento Cadena de diseño y montaje: Microblaze system hardware Descripción del archivo .MPD (Microprocessor Peripheral Description) Description) • Cualquier parámetro dentro del archivo .MPD será reescrito si esta especificado en el .MHS • Facilita el intercambio de IP cores • Descarga al archivo .MHS de información especifica de los IP. "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system hardware Xilinx´s Platform Generator; Generator; Coge el archivo .MHS y genera archivos para implementación (.ngc (.ngc datos de diseño lógico y constricciones), traducción a HDL ( .v o .vhd ), síntesis (.prj .vhd), (.prj para ISE) y BlockRAM Memory Map (.bmm (.bmm)) PlatGen necesita cargar los directorios de los IP utilizados en el diseño. "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system software Descripción del software, el archivo .MSS • Parámetros de los drivers • Especificación librerías utilizadas • Archivos de sistema Creado para el generador de librerías LibGen en EDK 6.1 "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system software Xilinx´s LibGen coge el archivo .MSS, .MHS (dependencia harwareharware-software) y la librerías especificadas en el MSS y comprueba errores sintácticos sintácticos genera un árbol de directorios con los ficheros necesarios para la implementación implementación en la FPGA. El compilador se encargara de generar el fichero con el código y las funciones integradas, utilizando los drivers de cada periférico. "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system software Crea tus propias librerías para LibGen El archivo MLD esta asociado a uno o varios .h Necesitaremos los archivos MLD (Microprocessor Library Definition, para la definición de datos)) y Tcl (Tool Comand Language, para la generación de datos, aunque no es necesario) "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system software Crea tus propios drivers El archivo .MDD servirá a LibGen configurar los drivers, junto con los archivos fuentes del mismo. "Procesador Embebido Microblaze" E. Aguayo UAM Cadena de diseño y montaje: Microblaze system software Código C en nuestro sistema Microblaze Compilación sencilla con mb_gcc, un compilador GNU executable.elf: file format elf32-microblaze Disassembly of section .text: #include "xgpio.h" #include "xparameters.h" void my_sleep(unsigned int seconds){ int i = 0; unsigned int delay = 13000000; for (i=0;i<(seconds*delay);i++){} } main(){ XGpio leds; XGpio dips; int j,k = 0; //initialize leds XGpio_Initialize(&leds, XPAR_LEDS_4BIT_DEVICE_ID); XGpio_SetDataDirection(&leds, 0x00000000); //initialize GPIO used as an input for the DIP switch XGpio_Initialize(&dips, XPAR_DIPS_8BIT_DEVICE_ID); XGpio_SetDataDirection(&dips, 0x000000F1); xil_printf("The dIP Switch will set the delay in seconds\n"); while(1){ j=(j+1)%16; //Write the value of j to the LED XGpio_DiscreteWrite(&leds, ~j); //Read the value from the DIP switch k = XGpio_DiscreteRead(&dips); xil_printf("Count = %d, DIP= %d \n\r" ,j,k); my_sleep(k); } "Procesador Embebido } Aguayo 00000000 <_start>: 0: b8000018 // 18 <_start1> 4: 80000000 8: b0007fff c: b808ffff 10: b0007fff 14: b808ffff bri 24 or imm brai imm brai r0, r0, r0 32767 -1 32767 -1 00000018 <_start1>: 18: 21a01228 addi // 1228 <_SDA_BASE_> 1c: 20401160 addi // 1160 <_SDA2_BASE_> 20: 20201478 addi 24: 20c001f4 addi // 1f4 <_exception_handler> 28: d8c10000 sw 2c: c4e10000 lhu 30: f4e0000a shi 34: f4c0000e shi 38: 20c001fc addi // 1fc <_interrupt_handler> 3c: d8c10000 sw 40: c4e10000 lhu 44: f4e00012 shi Microblaze" 48: E. f4c00016 shi 4c: b9f40028 brlid UAM Cadena de diseño y montaje: Microblaze system software Mapeo de nuestro código por el compilador Un Linker Script define el origen y la longitud de la memoria local y de la externa, para datos e instrucciones Varias opciones de compilación "Procesador Embebido Microblaze" E. Aguayo UAM r13, r0, 4648 r2, r0, 4448 r1, r0, 5240 r6, r0, 500 r6, r1, r0 r7, r1, r0 r7, r0, 10 r6, r0, 14 r6, r0, 508 r6, r1, r0 r7, r1, r0 r7, r0, 18 r6, r0, 22 r15, 40 Cadena de simulación SimGen es capaz de generar un modelo en VHDL de nuestro sistema. Solo tendremos que crear un testbench para nuestro sistema Esta opción puede ser poco produceente por ejemplo al usar UART´s Necesitaremos Modelsim u otro simulador de HDL para realizar la simulación "Procesador Embebido Microblaze" E. Aguayo UAM Debugging XMD sirve a GDB (debugger de GNU) a través de TCP/IP Opciones del debugging indicadas antes de compilar Varios modos para XMD y Microblaze de conectar Modo simulador de instrucciones solo para el procesador, sin periféricos XMD incluido en EDK 6.1 "Procesador Embebido Microblaze" E. Aguayo UAM Ejemplo de Aplicación de Microblaze RTOS (Real Time Operating System) Sierra16 de RealFast Parte del SO implementado en hardware para ahorrar espacio de memoria Semaforos, Semaforos, Priorizacion, Priorizacion, timers. timers. Accesibilida en paralelo por hardware a recursos Monitor para dubugging, dubugging, accesos a memoria en procesadores paralelos. "Procesador Embebido Microblaze" E. Aguayo UAM Referencias Get RealFast RTOS with Xilinx FPGAs by Tommy Klevin, Klevin, Product Manager, RealFast SoftTOTEM: : SoftTOTEM AN FPGA IMPLEMENTATION OF THE TOTEM PARALLEL PROCESSOR Stephanie McBader, McBader, Luca Clementel, Clementel, Alvise Sartori, Sartori, Andrea Boni and Peter Lee Reconfigurable computing, computing, Eduardo Sanchez Laboratoire de Systèmes Logiques, Logiques, Ecole Polytechnique Fédérale de Lausanne Mary Jane Irwin, Irwin, CSE 597D Embedded Systems Desing, Desing, Pennsylvania State University. University. Configuracion de FPGA´s xilinx, xilinx, Sergio LopezLopez-Buedo. Buedo. Introduccion a los circuitos VLSI, Eduardo Boemo. www.xilinx.com "Procesador Embebido Microblaze" E. Aguayo UAM