"Procesador Embebido "Procesador Embebido Microblaze para Microblaze para FPGAsFPGAs""
Estanislao Aguayo, Becario de Investigación. Estanislao Aguayo, Becario de Investigación.
Departamento de Tecnología de ComputadoresDepartamento de Tecnología de Computadores, , Escuela Politécnica SuperiorEscuela Politécnica Superior.. UAM.UAM.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumarioIntroduccionIntroduccion-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA
Microblaze Microblaze SoftSoft processorprocessor•• Arquitectura InternaArquitectura Interna•• PipelinePipeline•• Registros internosRegistros internos
Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros Otros sitemassitemas•• VelocidadVelocidad•• ConsumoConsumo•• Tiempo de desarrollo y/o Tiempo de desarrollo y/o modificacionmodificacion
del diseñodel diseño
IP IP corescores para para MicroblazeMicroblaze•• Estándar Estándar CoreCore ConnectConnect de IBM para de IBM para
MicroblazeMicroblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Microblaze; Desarrollo de aplicaciones con Microblaze; Desarrollo de aplicaciones con EDK 6.1EDK 6.1
•• Cadena Cadena dediseñodediseño y montajey montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging
ReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumario
IntroduccionIntroduccion-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA
Microblaze Microblaze SoftSoft processorprocessor•• Arquitectura InternaArquitectura Interna
•• PipelinePipeline•• Registros internosRegistros internos•• Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros Otros sitemassitemas•• VelocidadVelocidad•• EspacioEspacio•• ConsumoConsumo•• Tiempo de desarrollo y/o Tiempo de desarrollo y/o modificacionmodificacion del diseñodel diseño
IP IP corescores para Microblazepara Microblaze•• Estándar Estándar CoreCore ConnectConnect de IBM para Microblazede IBM para Microblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Microblaze; Desarrollo de aplicaciones con EDK 6.1Microblaze; Desarrollo de aplicaciones con EDK 6.1•• Cadena Cadena dediseñodediseño y montajey montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging
ReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SoftSoft vsvs HardHard processorsprocessors
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.
Ejemplos;
Power PC en una Virtex II pro, 8086, Pentium…Soft Processor; El procesador se
implementa simulando su comportamiento con un lenguaje de programación (HDL en el caso de Microblaze)
architecture Behavioral of procesador is…If Ins_Entrada = Instrucción_Suma then
Acumulador <= Dato1 + Dato2Endif;…
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SoftSoft processorprocessor en una FPGAen una FPGAMicroblaze es un soft processor descrito en VHDL.
VHDL describe la arquitectura que compone el procesador dentro de la FPGA, Microblaze utiliza
Xilinx lo vende como un IP core.
FPGA┌──────┘└─────┐
RAM
Puertas Lógicas
Multiplexores
↑↑↑↑↑H
DL ↑↑↑↑↑
ALU
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. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumarioIntroduccionIntroduccion
-- ¿FPGA?¿FPGA?-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA-- Ventajas de una FPGA: Conectividad, distribución de tareas Ventajas de una FPGA: Conectividad, distribución de tareas
HWHW--SWSW
Microblaze Microblaze SoftSoft processorprocessor•• Arquitectura InternaArquitectura Interna•• PipelinePipeline•• Registros internosRegistros internos•• Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros sistemasOtros sistemas (Prestaciones)(Prestaciones)•• VelocidadVelocidad•• EspacioEspacio•• ConsumoConsumo•• Tiempo de desarrollo y/o modificación del diseñoTiempo de desarrollo y/o modificación del diseño
IP IP corescores para Microblazepara Microblaze (Equipamiento opcional)(Equipamiento opcional)•• Estándar Estándar CoreCore ConnectConnect de IBM para Microblazede IBM para Microblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Microblaze; Desarrollo de aplicaciones con EDK 6.1Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de (Manual de conduccionconduccion))
•• Cadena Cadena dediseñodediseño y montajey montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging Fpga´sFpga´s que soportan Microblazeque soportan Microblaze
Ejemplo de Aplicación de MicroblazeEjemplo de Aplicación de MicroblazeReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Arquitectura InternaArquitectura InternaArquitectura interna tipo Arquitectura interna tipo HarvardHarvard32x32bits registros internos32x32bits registros internos
Buses Buses diseñados diseñados para para soportar soportar CoreConnectCoreConnectde IBMde IBM
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
PipelinePipeline
Solución arquitectónica para maximizar Solución arquitectónica para maximizar throughputthroughput (# datos procesados por (# datos procesados por segundo)segundo)
Todos los riesgos del Todos los riesgos del pipelinepipeline son tratados por HW (son tratados por HW (FlushFlush automático)automático)Posibilidad de especificar el uso del Posibilidad de especificar el uso del pipelinepipeline en el código de la en el código de la instrucción.(Técnica instrucción.(Técnica DelayDelay SlotsSlots, para reducir la penalización por salto), para reducir la penalización por salto)
RecepciónDecodificación
Ejecución
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
PipelinePipelineFetch
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
PipelinePipelineDecode
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
PipelinePipelineExecute
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Registros internosRegistros internos32x32bit registros internos de propósito 32x32bit registros internos de propósito general. general. •• Gran capacidad de direccionamiento de Gran capacidad de direccionamiento de
memoria.memoria.2 registros de propósito especifico2 registros de propósito especifico•• PCPC•• MSR (MSR (MachineMachine Status Status RegisterRegister); Acarreo, ); Acarreo,
Mascara de interrupciones, Configuración de Mascara de interrupciones, Configuración de buses…buses…
No hay registros de estado de programaNo hay registros de estado de programa•• Cambios de contexto ineficientesCambios de contexto ineficientes
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Repertorio de instruccionesRepertorio de instruccionesProcesador tipo RISC (Procesador tipo RISC (ReducedReduced InstructionInstruction SetSetComputerComputer))Las instrucciones operan con los registros internos Las instrucciones operan con los registros internos o con valores inmediatos.o con valores inmediatos.
87 instrucciones para realizar operaciones 87 instrucciones para realizar operaciones lógicas, aritméticas, comparaciones (3 ciclos si lógicas, aritméticas, comparaciones (3 ciclos si salta + 2 para rellenar el salta + 2 para rellenar el pipelinepipeline), accesos a ), accesos a memoria…memoria…
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Repertorio de instruccionesRepertorio de instrucciones
Instrucciones de 32bits;Instrucciones de 32bits;•• Espacio de memoria Espacio de memoria •• Ancho de banda de la memoriaAncho de banda de la memoria•• Mas bits, mas potencia consumidaMas bits, mas potencia consumida•• CodeCode densitydensity
¿Cuanto de amigo en nuestro compilador?¿Cuanto de amigo en nuestro compilador?•• Uso del Uso del pipelinepipeline•• Instrucciones con carga de valor inmediatoInstrucciones con carga de valor inmediato
Cuestiones sobre el repertorio de instrucciones
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Interrupciones y excepcionesInterrupciones y excepciones
El procesador tiene un puerto de El procesador tiene un puerto de interrupciones.interrupciones.
•• 4 ciclos de reloj de latencia4 ciclos de reloj de latencia•• Disparada por nivel o flancoDisparada por nivel o flanco
Microblaze soporta excepcionesMicroblaze soporta excepcionesEn ambos casos se modifica el En ambos casos se modifica el contenido de PC a un valor prefijado contenido de PC a un valor prefijado y se almacena el antiguo valor en un y se almacena el antiguo valor en un GPR.GPR.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Interrupciones y excepcionesInterrupciones y excepciones
Si hay diferentes prioridades de Si hay diferentes prioridades de interrupciones, necesitaremos un IP.interrupciones, necesitaremos un IP.•• Aumento de la latencia de interrupcionesAumento de la latencia de interrupciones•• Manejo de interrupciones “torpe”Manejo de interrupciones “torpe”•• No hay interrupciones tipo No hay interrupciones tipo wakewake--upup
Pila de direcciones implementada por Pila de direcciones implementada por software.software.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Configuraciones de busesConfiguraciones de buses
Memoria RAM interna de la FPGABuses del procesador
Datos
InstruccionesExterna a través del OPB y el controlador del dispositivo externo.
Memoria RAM interna de la FPGA
Externa a través del OPB y el controlador del dispositivo externo.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Configuraciones de busesConfiguraciones de busesEl tamaño del bus de datos es dinámicamente El tamaño del bus de datos es dinámicamente ajustableajustable•• Solo con el protocolo “Legacy_devices”Solo con el protocolo “Legacy_devices”•• No es el más optimizado para No es el más optimizado para FPGA´sFPGA´s, porque requiere , porque requiere
retransmisiones por parte del master para periféricos retransmisiones por parte del master para periféricos mas pequeños, consumiendo muchos ciclos de reloj. mas pequeños, consumiendo muchos ciclos de reloj.
•• El más optimizado es “Byte_enables”, con instrucciones El más optimizado es “Byte_enables”, con instrucciones separadas para escribir Bytes,Half_Word´s y Word´s, separadas para escribir Bytes,Half_Word´s y Word´s, para manejar el bus, incluidas en el repertorio de para manejar el bus, incluidas en el repertorio de instrucciones.instrucciones.
El de instrucciones no soporta este modo.El de instrucciones no soporta este modo.El bus de instrucciones tiene el puerto de El bus de instrucciones tiene el puerto de escritura implementado, para conservar escritura implementado, para conservar consistencia con el de datos.consistencia con el de datos.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
MemoriaMemoriaInternaInterna
Acceso directo del Acceso directo del procesador a los Bloques procesador a los Bloques de RAM interna de la FPGA.de RAM interna de la FPGA.
Memoria interna de la Memoria interna de la FPGAFPGA•• Configurable para la Configurable para la
anchura de bus deseada, anchura de bus deseada, pero con las técnicas pero con las técnicas “Read_Sterring” y “Read_Sterring” y “Write_Sterring”“Write_Sterring”
Latencia de acceso a Latencia de acceso a memoria interna 2 ciclosmemoria interna 2 ciclos
Read Data Sterring
Write Data Sterring
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
MemoriaMemoriaExternaExterna
Memoria Externa; acceso a través Memoria Externa; acceso a través del OPB.del OPB.Latencia de acceso a memoria Latencia de acceso a memoria externa 3 ciclos de reloj si no hay externa 3 ciclos de reloj si no hay ciclos de arbitrio para el OPB.ciclos de arbitrio para el OPB.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumarioIntroduccionIntroduccion
-- ¿Qué es una FPGA?¿Qué es una FPGA?-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA-- Ventajas de una FPGA: Conectividad, distribución de tareas Ventajas de una FPGA: Conectividad, distribución de tareas
HWHW--SWSW
Microblaze Microblaze SoftSoft processorprocessor (Equipamiento de serie)(Equipamiento de serie)•• Arquitectura InternaArquitectura Interna•• PipelinePipeline•• Registros internosRegistros internos•• Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros Otros sitemassitemas (Prestaciones)(Prestaciones)•• VelocidadVelocidad•• EspacioEspacio•• ConsumoConsumo•• Tiempo de desarrollo y/o Tiempo de desarrollo y/o modificacionmodificacion del diseñodel diseño
IP IP corescores para Microblazepara Microblaze•• Estándar Estándar CoreCore ConnectConnect de de
IBM para MicroblazeIBM para Microblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral
bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus y sus
driversdrivers
Microblaze; Desarrollo de aplicaciones con EDK 6.1Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de (Manual de conduccionconduccion))
•• Cadena Cadena dediseñodediseño y montajey montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging
Fpga´sFpga´s que soportan Microblazeque soportan MicroblazeEjemplo de Aplicación de MicroblazeEjemplo de Aplicación de MicroblazeReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Arquitectura Arquitectura CoreCore ConnectConnect de IBM para de IBM para MicroblazeMicroblaze
Desarrollada para conectar Desarrollada para conectar diferentes módulos integrados en diferentes módulos integrados en un mismo chip por IBM.un mismo chip por IBM.XilinxXilinx lo ha tomado como lo ha tomado como estándarestándar•• Ahorra tiempo de Ahorra tiempo de
diseño(Implementaciondiseño(Implementacion, , simulacionsimulacion …) …)
•• Portabilidad a nuestro diseñoPortabilidad a nuestro diseñoOPB (OPB (OnOn--chip chip peripheralperipheral bus)bus)•• Bus Bus síncronosíncrono de 32 bits para datos de 32 bits para datos
e instrucciones por líneas e instrucciones por líneas separadas (64 bits en total).separadas (64 bits en total).
•• Permite la selección del tamaño Permite la selección del tamaño del bus dinámicamentedel bus dinámicamente
•• Soporta varios Soporta varios MastersMasters, protocolo , protocolo ByteByte enableenable y bus parkingy bus parking
•• Se le pueden añadir periféricos sin Se le pueden añadir periféricos sin cambiar I/cambiar I/O´sO´s gracias a su gracias a su arquitectura con arquitectura con multiplexaciónmultiplexacióndistribuida.distribuida.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
IP IP corescores para OPB (para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)
Desarrollados por Desarrollados por XilinxXilinx para utilizar toda para utilizar toda la potencia de la potencia de microblazemicroblaze y facilitar y facilitar diseños. (diseños. (IP IP corescores muy estudiados, configurables y con muy estudiados, configurables y con diagramas de tiempos muy detallados.)diagramas de tiempos muy detallados.)
•• EMC (Controlador de memoria externa)EMC (Controlador de memoria externa)•• Controlador de interrupcionesControlador de interrupciones•• UART (Receptor/Transmisor UART (Receptor/Transmisor asincronoasincrono
universal, para comunicaciones serie) universal, para comunicaciones serie) •• GPIO(EntradaGPIO(Entrada/Salida de /Salida de proposiyoproposiyo general)general)•• TimerTimer//CounterCounter•• JTAGJTAG--UART(JointUART(Joint testtest ActionAction GroupGroup Universal, Universal,
estándar IEEE1149)estándar IEEE1149)
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Otros IP interesantesOtros IP interesantes
Decodificador Decodificador ViterbiViterbi para corrección de para corrección de erroreserrores10 10 GigabitGigabit Media Access Media Access ControllerControllerControlador Controlador EthernetEthernet 10/100 10/100 Procesador Procesador BluetoothBluetoothInterfaz PCI, I2C, DDR RAMInterfaz PCI, I2C, DDR RAMDSP, filtros digitales, FFT (hasta 1024 DSP, filtros digitales, FFT (hasta 1024 puntos)puntos)Interfaces para procesadores externosInterfaces para procesadores externosMicrocontroladores (Como el 8051)Microcontroladores (Como el 8051)……
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Para OPB o para Para OPB o para PLBPLB
DriverDriver
Xilinx ayuda con el IPIF, un modulo para conectar tu core con el OPB.
Para crear masters y esclavos
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Crea tus propios Crea tus propios corescores y sus y sus driversdrivers
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumarioIntroduccionIntroduccion
-- ¿FPGA?¿FPGA?-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA-- Ventajas de una FPGA: Conectividad, distribución de tareas Ventajas de una FPGA: Conectividad, distribución de tareas
HWHW--SWSW
Microblaze Microblaze SoftSoft processorprocessor (Equipamiento de serie)(Equipamiento de serie)•• Arquitectura InternaArquitectura Interna•• PipelinePipeline•• Registros internosRegistros internos•• Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros sistemasOtros sistemas•• VelocidadVelocidad•• ConsumoConsumo•• Tiempo de desarrollo y/o Tiempo de desarrollo y/o
modificación del diseñomodificación del diseño
IP IP corescores para Microblazepara Microblaze (Equipamiento opcional)(Equipamiento opcional)•• Estándar Estándar CoreCore ConnectConnect de IBM para Microblazede IBM para Microblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Microblaze; Desarrollo de aplicaciones con EDK 6.1Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de (Manual de conduccionconduccion))
•• Cadena Cadena dediseñodediseño y montajey montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging ReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
VelocidadVelocidad
8051 50 8051 50 MHzMHz: 0.5 : 0.5 DD--MIPSMIPSPentium IV 2.8 Pentium IV 2.8 GHzGHz: 5340 D: 5340 D--MIPSMIPSMicroBlazeMicroBlaze en en VitexVitexII Pro a 150 II Pro a 150 MHzMHz: : 125 125 D_MIPSD_MIPS
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
ConsumoConsumo
8051 Alrededor de 8051 Alrededor de 200 200 mWmW
SpartanSpartan IIE 300K IIE 300K 800mW 800mW (Microblaze IP (Microblaze IP corecore))P IV 2.8 P IV 2.8 GHzGHzalrededor de 60 W alrededor de 60 W
?
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Tiempo de desarrollo y/o modificación del diseñoTiempo de desarrollo y/o modificación del diseño
Ejemplo de Ejemplo de comparación; comparación; implementación del implementación del procesador procesador paralelo TOTEM paralelo TOTEM diseñado para diseñado para hacer hacer multiplicaciones de multiplicaciones de maticesmatices
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
SumarioSumarioIntroduccionIntroduccion
-- ¿FPGA?¿FPGA?-- SoftSoft vsvs HardHard processorsprocessors-- SoftSoft processorprocessor en una FPGAen una FPGA-- Ventajas de una FPGA: Conectividad, distribución de tareas Ventajas de una FPGA: Conectividad, distribución de tareas
HWHW--SWSW
Microblaze Microblaze SoftSoft processorprocessor (Equipamiento de serie)(Equipamiento de serie)•• Arquitectura InternaArquitectura Interna•• PipelinePipeline•• Registros internosRegistros internos•• Repertorio de instruccionesRepertorio de instrucciones•• Interrupciones y excepcionesInterrupciones y excepciones•• Configuraciones de buses Configuraciones de buses •• MemoriaMemoria
Microblaze Microblaze vsvs Otros sistemasOtros sistemas (Prestaciones)(Prestaciones)•• VelocidadVelocidad•• EspacioEspacio•• ConsumoConsumo•• Tiempo de desarrollo y/o modificación del diseñoTiempo de desarrollo y/o modificación del diseño
IP IP corescores para Microblazepara Microblaze (Equipamiento opcional)(Equipamiento opcional)•• Estándar Estándar CoreCore ConnectConnect de IBM para Microblazede IBM para Microblaze•• Para OPB (Para OPB (OnOn--Chip Chip peripheralperipheral bus)bus)•• Otros IP interesantes Otros IP interesantes •• Crea tus propios Crea tus propios corescores y sus driversy sus drivers
Microblaze; Desarrollo de Microblaze; Desarrollo de aplicaciones con EDK 6.1aplicaciones con EDK 6.1•• Cadena de diseño y montajeCadena de diseño y montaje•• Cadena de simulaciónCadena de simulación•• DebuggingDebugging
Fpga´sFpga´s que soportan Microblazeque soportan MicroblazeEjemplo de Aplicación de MicroblazeEjemplo de Aplicación de MicroblazeReferenciasReferencias
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montajeCadena de diseño y montaje
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem hardwarehardware
Descripción del Hardware, el archivo .MHSDescripción del Hardware, el archivo .MHS•• PeriféricosPeriféricos•• Configuración de buses de MicroblazeConfiguración de buses de Microblaze•• Conexiones internas del sistemaConexiones internas del sistema•• Distribución de la memoriaDistribución de la memoria•• Configuración de los periféricos y versión de Configuración de los periféricos y versión de
los mismos (aunque se puede hacer en un los mismos (aunque se puede hacer en un archivo aparte .MPD y cargarlo a archivo aparte .MPD y cargarlo a PlatGenPlatGen))
XPS dentro de EDK 6.1 ofrece un XPS dentro de EDK 6.1 ofrece un tutorialtutorial para crear este archivo.para crear este archivo.Solo tres comandos de asignación; Solo tres comandos de asignación; •• BUS_INTERFACEBUS_INTERFACE•• PARAMETER (Hardware)PARAMETER (Hardware)•• PORTPORT
HDL (VHDL o Verilog) compilable
BEGIN microblaze PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 2.00.a PARAMETER C_DEBUG_ENABLED = 1 PARAMETER C_NUMBER_OF_PC_BRK = 8 PARAMETER C_NUMBER_OF_RD_ADDR_BRK = 1 PARAMETER C_NUMBER_OF_WR_ADDR_BRK = 1 PARAMETER C_USE_ICACHE = 1 PARAMETER C_CACHE_BYTE_SIZE = 8192 PARAMETER C_USE_DCACHE = 0 PARAMETER C_ICACHE_BASEADDR = 0x14000000 PARAMETER C_ICACHE_HIGHADDR = 0x16003fff PARAMETER C_ADDR_TAG_BITS = 13 BUS_INTERFACE DLMB = dlmb BUS_INTERFACE ILMB = ilmb BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb PORT CLK = sys_clk_s PORT DBG_CAPTURE = DBG_CAPTURE_s PORT DBG_CLK = DBG_CLK_s PORT DBG_REG_EN = DBG_REG_EN_s PORT DBG_TDI = DBG_TDI_s PORT DBG_TDO = DBG_TDO_s PORT DBG_UPDATE = DBG_UPDATE_sEND
BEGIN opb_v20 PARAMETER INSTANCE = mb_opb PARAMETER HW_VER = 1.10.b PARAMETER C_EXT_RESET_HIGH = 0 PORT SYS_Rst = sys_rst_s PORT OPB_Clk = sys_clk_sEND
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Cadena de diseño y montaje: MicroblazeMicroblazesystemsystem hardwarehardware
Distribución de la memoria en un sistema Microblaze
Dirección 0x0000 0000
Dirección dispositivos
┌──────┘└─────┐
Memoria de sistema
←--- Espacios huecos en el espacio de direccionamiento
El bit 24 define direcciones en el chip (si es cero) o fuera del chip (si es uno)
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem hardwarehardware
Descripción del Descripción del archivo .MPD archivo .MPD ((MicroprocessorMicroprocessorPeripheralPeripheral DescriptionDescription))•• Cualquier parámetro Cualquier parámetro
dentro del archivo .MPD dentro del archivo .MPD será reescrito si esta será reescrito si esta especificado en el .MHSespecificado en el .MHS
•• Facilita el intercambio Facilita el intercambio de IP de IP corescores
•• Descarga al archivo Descarga al archivo .MHS de información .MHS de información especifica de los IP.especifica de los IP.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem hardwarehardware
Xilinx´sXilinx´s PlatformPlatform GeneratorGenerator; Coge el archivo .MHS y genera archivos para ; Coge el archivo .MHS y genera archivos para implementación (.implementación (.ngcngc datos de diseño lógico y constricciones), traducción a HDL ( datos de diseño lógico y constricciones), traducción a HDL ( .v o ..v o .vhdvhd), síntesis (.), síntesis (.prjprj para ISE) y para ISE) y BlockRAMBlockRAM MemoryMemory MapMap (.(.bmmbmm))
PlatGenPlatGen necesita cargar los directorios de los IP utilizados necesita cargar los directorios de los IP utilizados en el diseño.en el diseño.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem softwaresoftware
Descripción del Descripción del software, el archivo software, el archivo .MSS .MSS •• Parámetros de los Parámetros de los
driversdrivers•• Especificación librerías Especificación librerías
utilizadasutilizadas•• Archivos de sistema Archivos de sistema
Creado para el Creado para el generador de librerías generador de librerías LibGen en EDK 6.1LibGen en EDK 6.1
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem softwaresoftware
Xilinx´sXilinx´s LibGen coge el archivo .MSS, .MHS (dependencia LibGen coge el archivo .MSS, .MHS (dependencia harwareharware--software) y la software) y la librerías especificadas en el MSS y comprueba errores sintácticolibrerías especificadas en el MSS y comprueba errores sintácticos genera un árbol s genera un árbol de directorios con los ficheros necesarios para la implementacióde directorios con los ficheros necesarios para la implementación en la FPGA.n en la FPGA.
El compilador se encargara de generar el fichero con el código yEl compilador se encargara de generar el fichero con el código y las las funciones integradas, utilizando los drivers de cada periférico.funciones integradas, utilizando los drivers de cada periférico.
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem softwaresoftware
Necesitaremos los archivos MLD (Microprocessor LibraryDefinition, para la definición de datos)) y Tcl (Tool ComandLanguage, para la generación de datos, aunque no es necesario)
El archivo MLD esta asociado a uno o varios .h
Crea tus propias librerías para LibGen
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem softwaresoftware
El archivo .MDD servirá a LibGen configurar los drivers, junto con los archivos fuentes del mismo.
Crea tus propios drivers
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Microblaze Cadena de diseño y montaje: Microblaze systemsystem softwaresoftware
Compilación sencilla con Compilación sencilla con mb_gccmb_gcc, un , un compilador GNUcompilador GNU
Código C en nuestro sistema Microblaze
#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 ledsXGpio_Initialize(&leds, XPAR_LEDS_4BIT_DEVICE_ID);XGpio_SetDataDirection(&leds, 0x00000000);//initialize GPIO used as an input for the DIP switchXGpio_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 LEDXGpio_DiscreteWrite(&leds, ~j);//Read the value from the DIP switchk = XGpio_DiscreteRead(&dips);xil_printf("Count = %d, DIP= %d \n\r" ,j,k);my_sleep(k);}
}
executable.elf: file format elf32-microblaze
Disassembly of section .text:
00000000 <_start>:0: b8000018 bri 24
// 18 <_start1>4: 80000000 or r0, r0, r08: b0007fff imm 32767c: b808ffff brai -1
10: b0007fff imm 3276714: b808ffff brai -1
00000018 <_start1>:18: 21a01228 addi r13, r0, 4648
// 1228 <_SDA_BASE_>1c: 20401160 addi r2, r0, 4448
// 1160 <_SDA2_BASE_>20: 20201478 addi r1, r0, 524024: 20c001f4 addi r6, r0, 500
// 1f4 <_exception_handler>28: d8c10000 sw r6, r1, r02c: c4e10000 lhu r7, r1, r030: f4e0000a shi r7, r0, 1034: f4c0000e shi r6, r0, 1438: 20c001fc addi r6, r0, 508
// 1fc <_interrupt_handler>3c: d8c10000 sw r6, r1, r040: c4e10000 lhu r7, r1, r044: f4e00012 shi r7, r0, 1848: f4c00016 shi r6, r0, 224c: b9f40028 brlid r15, 40
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de diseño y montaje: Cadena de diseño y montaje: MicroblazeMicroblazesystemsystem softwaresoftware
Un Un LinkerLinker ScriptScriptdefine el origen y define el origen y la longitud de la la longitud de la memoria local y de memoria local y de la externa, para la externa, para datos e datos e instruccionesinstruccionesVarias opciones de Varias opciones de compilacióncompilación
Mapeo de nuestro código por el compilador
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Cadena de simulaciónCadena de simulación
SimGenSimGen es capaz de generar un modelo es capaz de generar un modelo en VHDL de nuestro sistema.en VHDL de nuestro sistema.Solo tendremos que crear un Solo tendremos que crear un testbenchtestbenchpara nuestro sistemapara nuestro sistemaEsta opción puede ser poco Esta opción puede ser poco produceenteproduceentepor ejemplo al usar por ejemplo al usar UART´sUART´sNecesitaremos Necesitaremos ModelsimModelsim u otro simulador u otro simulador de HDL para realizar la simulación de HDL para realizar la simulación
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
DebuggingDebugging
XMD sirve a GDB XMD sirve a GDB ((debuggerdebugger de GNU) a de GNU) a través de TCP/IP través de TCP/IP Opciones del Opciones del debuggingdebuggingindicadas antes de indicadas antes de compilarcompilarVarios modos para XMD y Varios modos para XMD y Microblaze de conectarMicroblaze de conectarModo simulador de Modo simulador de instrucciones solo para el instrucciones solo para el procesador, sin periféricosprocesador, sin periféricosXMD incluido en EDK 6.1XMD incluido en EDK 6.1
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
Ejemplo de Aplicación de MicroblazeEjemplo de Aplicación de Microblaze
RTOS (Real Time Operating System) Sierra16 de RealFast
Monitor para Monitor para dubuggingdubugging, accesos a , accesos a memoria en memoria en procesadores procesadores paralelos.paralelos.
AccesibilidaAccesibilida en en paralelo por hardware paralelo por hardware a recursosa recursos
SemaforosSemaforos, , PriorizacionPriorizacion, , timerstimers..
Parte del SO Parte del SO implementado en implementado en hardware para hardware para ahorrar espacio de ahorrar espacio de memoriamemoria
"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM
ReferenciasReferencias
GetGet RealFastRealFast RTOS RTOS withwith XilinxXilinx FPGAsFPGAsby by TommyTommy KlevinKlevin, , ProductProduct Manager, Manager, RealFastRealFastSoftTOTEMSoftTOTEM: AN FPGA IMPLEMENTATION OF THE TOTEM : AN FPGA IMPLEMENTATION OF THE TOTEM PARALLEL PROCESSOR PARALLEL PROCESSOR StephanieStephanie McBaderMcBader, , LucaLucaClementelClementel, , AlviseAlvise SartoriSartori, Andrea , Andrea BoniBoni andand Peter LeePeter LeeReconfigurableReconfigurable computingcomputing, Eduardo , Eduardo SanchezSanchez LaboratoireLaboratoire de de SystèmesSystèmes LogiquesLogiques, , EcoleEcole PolytechniquePolytechnique FédéraleFédérale de de LausanneLausanneMaryMary Jane Jane IrwinIrwin, CSE 597D , CSE 597D EmbeddedEmbedded SystemsSystems DesingDesing, , PennsylvaniaPennsylvania StateState UniversityUniversity..ConfiguracionConfiguracion de FPGA´s de FPGA´s xilinxxilinx, Sergio , Sergio LopezLopez--BuedoBuedo..IntroduccionIntroduccion a los circuitos VLSI, Eduardo Boemo.a los circuitos VLSI, Eduardo Boemo.
www.xilinx.comwww.xilinx.com
Top Related