micro blaze

23
"Procesador Embebido "Procesador Embebido Microblaze para Microblaze para FPGAs FPGAs" Estanislao Aguayo, Becario de Investigación. Estanislao Aguayo, Becario de Investigación. Departamento de Tecnología de Computadores Departamento de Tecnología de Computadores, , Escuela Politécnica Superior Escuela Politécnica Superior. UAM. UAM. "Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAM Aguayo UAM Sumario Sumario Introduccion Introduccion - Soft Soft vs vs Hard Hard processors processors - Soft Soft processor processor en una FPGA en una FPGA Microblaze Microblaze Soft Soft processor processor Arquitectura Interna Arquitectura Interna Pipeline Pipeline Registros internos Registros internos Repertorio de instrucciones Repertorio de instrucciones Interrupciones y excepciones Interrupciones y excepciones Configuraciones de buses Configuraciones de buses Memoria Memoria Microblaze Microblaze vs vs Otros Otros sitemas sitemas Velocidad Velocidad Consumo Consumo Tiempo de desarrollo y/o Tiempo de desarrollo y/o modificacion modificacion del diseño del diseño IP IP cores cores para para Microblaze Microblaze Estándar Estándar Core Core Connect Connect de IBM para de IBM para Microblaze Microblaze Para OPB ( Para OPB (On On-Chip Chip peripheral peripheral bus) bus) Otros IP interesantes Otros IP interesantes Crea tus propios Crea tus propios cores cores y sus drivers y sus drivers Microblaze; Desarrollo de aplicaciones con Microblaze; Desarrollo de aplicaciones con EDK 6.1 EDK 6.1 Cadena Cadena dediseño dediseño y montaje y montaje Cadena de simulación Cadena de simulación Debugging Debugging Referencias Referencias

Upload: pikoroda

Post on 30-Dec-2015

38 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Micro Blaze

"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

Page 2: Micro Blaze

"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;…

Page 3: Micro Blaze

"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

Page 4: Micro Blaze

"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

Page 5: Micro Blaze

"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM

PipelinePipelineFetch

"Procesador Embebido Microblaze" E. "Procesador Embebido Microblaze" E. Aguayo UAMAguayo UAM

PipelinePipelineDecode

Page 6: Micro Blaze

"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

Page 7: Micro Blaze

"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

Page 8: Micro Blaze

"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.

Page 9: Micro Blaze

"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.

Page 10: Micro Blaze

"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.

Page 11: Micro Blaze

"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.

Page 12: Micro Blaze

"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)……

Page 13: Micro Blaze

"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

Page 14: Micro Blaze

"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

Page 15: Micro Blaze

"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

Page 16: Micro Blaze

"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

Page 17: Micro Blaze

"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)

Page 18: Micro Blaze

"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.

Page 19: Micro Blaze

"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.

Page 20: Micro Blaze

"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

Page 21: Micro Blaze

"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

Page 22: Micro Blaze

"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

Page 23: Micro Blaze

"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