"Procesador Embebido
Microblaze para FPGAs"
Estanislao Aguayo, Becario de Investigacin.
Departamento de Tecnologa de Computadores,
Escuela Politcnica Superior. UAM.
Sumario
Introduccion Microblaze Soft processor
- Soft vs Hard processors Arquitectura Interna
- Soft processor en una FPGA Pipeline
Registros internos
Repertorio de instrucciones
Interrupciones y excepciones
IP cores para Microblaze Configuraciones de buses
Estndar Core Connect de IBM para Memoria
Microblaze
Para OPB (On(On--Chip peripheral bus)
Otros IP interesantes Microblaze vs Otros sitemas
Crea tus propios cores y sus drivers Velocidad
Consumo
Tiempo de desarrollo y/o modificacion
del diseo
Microblaze; Desarrollo de aplicaciones con
EDK 6.1
Cadena dediseo y montaje
Cadena de simulacin Referencias
Debugging
"Procesador Embebido Microblaze" E.
Aguayo UAM
Sumario
Introduccion Microblaze Soft processor
Arquitectura Interna
- Soft vs Hard processors Pipeline
Registros internos
- Soft processor en una FPGA
Repertorio de instrucciones
Interrupciones y excepciones
Configuraciones de buses
Memoria
IP cores para Microblaze
Estndar Core Connect de IBM para Microblaze
Para OPB (On
(On--Chip peripheral bus)
Microblaze vs Otros sitemas
Otros IP interesantes
Velocidad
Crea tus propios cores y sus drivers
Espacio
Consumo
Tiempo de desarrollo y/o modificacion del diseo
Microblaze; Desarrollo de aplicaciones con EDK 6.1
Cadena dediseo y montaje
Cadena de simulacin Referencias
Debugging
"Procesador Embebido Microblaze" E.
Aguayo UAM
Soft vs Hard processors
Hard Processor; El procesador
es un circuito VLSI, con un diseo
a nivel de transistor optimizado
para ejecutar instrucciones en el
mnimo tiempo posible.
Ejemplos;
Power PC en
una Virtex II
pro, 8086,
Soft Processor; El procesador se Pentium
implementa simulando su architecture Behavioral of procesador is
comportamiento con un lenguaje
de programacin (HDL en el caso If Ins_Entrada = Instruccin_Suma then
de Microblaze) 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
Xilinx lo vende como un IP core.
RAM ALU
HDL
Unidad de
Puertas Lgicas Control
FPGA Procesador
Registros
Multiplexores Internos
FPGA => entre 432 (Spartan II 15K) hasta 125.136 (Virtex II Pro 125) celdas lgicas
MicroBlaze Soft Processor => alrededor de 1000 celdas lgicas (dependiendo de la FPGA)
"Procesador Embebido Microblaze" E.
Aguayo UAM
Sumario
Introduccion Microblaze Soft processor
- FPGA?
- Soft vs Hard processors Arquitectura Interna
- Soft processor en una FPGA
- Ventajas de una FPGA: Conectividad, distribucin de tareas Pipeline
HW-
HW-SW
Registros internos
Repertorio de instrucciones
Interrupciones y excepciones
IP cores para Microblaze (Equipamiento opcional) Configuraciones de buses
Estndar Core Connect de IBM para Microblaze
Para OPB (On
(On--Chip peripheral bus) Memoria
Otros IP interesantes
Crea tus propios cores y sus drivers
Microblaze vs Otros sistemas (Prestaciones)
Velocidad
Espacio
Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de
conduccion)
conduccion) Consumo
Cadena dediseo y montaje Tiempo de desarrollo y/o modificacin del diseo
Cadena de simulacin
Fpgas que soportan Microblaze
Debugging
Ejemplo de Aplicacin de Microblaze
Referencias
"Procesador Embebido Microblaze" E.
Aguayo UAM
Arquitectura Interna
Arquitectura interna tipo Harvard
32x32bits registros internos
Buses
diseados
para
soportar
CoreConnect
de IBM
"Procesador Embebido Microblaze" E.
Aguayo UAM
Pipeline
Solucin arquitectnica para maximizar throughput (# datos procesados por
segundo)
Decodificacin
Recepcin
Ejecucin
Todos los riesgos del pipeline son tratados por HW (Flush
(Flush automtico)
Posibilidad de especificar el uso del pipeline en el cdigo de la
instruccin.(Tcnica Delay Slots,
Slots, para reducir la penalizacin por salto)
"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 propsito
general.
Gran capacidad de direccionamiento de
memoria.
2 registros de propsito especifico
PC
MSR (Machine
(Machine Status Register);
Register); Acarreo,
Mascara de interrupciones, Configuracin 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
lgicas, aritmticas, 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 wake-
wake-up
Pila de direcciones implementada por
software.
"Procesador Embebido Microblaze" E.
Aguayo UAM
Configuraciones de buses
Memoria RAM interna de la FPGA
Datos
Externa a travs del OPB y el controlador
del dispositivo externo.
Buses del procesador
Memoria RAM interna de la FPGA
Instrucciones
Externa a travs del OPB y el
controlador del dispositivo
externo.
"Procesador Embebido Microblaze" E.
Aguayo UAM
Configuraciones de buses
El tamao del bus de datos es dinmicamente
ajustable
Solo con el protocolo Legacy_devices
No es el ms optimizado para FPGAs,
FPGAs, porque requiere
retransmisiones por parte del master para perifricos
mas pequeos, consumiendo muchos ciclos de reloj.
El ms optimizado es Byte_enables, con instrucciones
separadas para escribir Bytes,Half_Words y Words,
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 Read Data Sterring
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 tcnicas Write Data Sterring
Read_Sterring y
Write_Sterring
Latencia de acceso a
memoria interna 2 ciclos
"Procesador Embebido Microblaze" E.
Aguayo UAM
Memoria
Externa
Memoria Externa; acceso a travs
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
Microblaze Soft processor (Equipamiento de serie)
Introduccion
Arquitectura Interna
- Qu es una FPGA? Pipeline
- Soft vs Hard processors Registros internos
- Soft processor en una FPGA Repertorio de instrucciones
- Ventajas de una FPGA: Conectividad, distribucin de tareas Interrupciones y excepciones
HW-
HW-SW Configuraciones de buses
Memoria
Microblaze vs Otros sitemas (Prestaciones)
Velocidad
IP cores para Microblaze Espacio
Consumo
Estndar Core Connect de Tiempo de desarrollo y/o modificacion del diseo
IBM para Microblaze
Para OPB (On
(On--Chip peripheral Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de
bus) conduccion)
conduccion)
Cadena dediseo y montaje
Otros IP interesantes
Cadena de simulacin
Debugging
Crea tus propios cores y sus
drivers
Fpgas que soportan Microblaze
Ejemplo de Aplicacin de Microblaze
Referencias
"Procesador Embebido Microblaze" E.
Aguayo UAM
Arquitectura Core Connect de IBM para
Microblaze
Desarrollada para conectar
diferentes mdulos integrados en
un mismo chip por IBM.
Xilinx lo ha tomado como
estndar
Ahorra tiempo de
diseo(Implementacion,
diseo(Implementacion,
simulacion )
Portabilidad a nuestro diseo
OPB (On
(On--chip peripheral bus)
Bus sncrono de 32 bits para datos
e instrucciones por lneas
separadas (64 bits en total).
Permite la seleccin del tamao
del bus dinmicamente
Soporta varios Masters,
Masters, protocolo
Byte enable y bus parking
Se le pueden aadir perifricos sin
cambiar I/Os
I/Os gracias a su
arquitectura con multiplexacin
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
diseos. (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
JTAG-
JTAG-UART(Joint test Action Group Universal,
estndar IEEE1149)
"Procesador Embebido Microblaze" E.
Aguayo UAM
Otros IP interesantes
Decodificador Viterbi para correccin 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 Xilinx ayuda con el IPIF,
PLB 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
Microblaze Soft processor (Equipamiento de serie)
Introduccion
Arquitectura Interna
- FPGA? Pipeline
- Soft vs Hard processors Registros internos
- Soft processor en una FPGA Repertorio de instrucciones
- Ventajas de una FPGA: Conectividad, distribucin de tareas Interrupciones y excepciones
HW-
HW-SW Configuraciones de buses
Memoria
Microblaze vs Otros sistemas
IP cores para Microblaze (Equipamiento opcional)
Estndar Core Connect de IBM para Microblaze Velocidad
Para OPB (On
(On--Chip peripheral bus)
Otros IP interesantes Consumo
Crea tus propios cores y sus drivers
Tiempo de desarrollo y/o
modificacin del diseo
Microblaze; Desarrollo de aplicaciones con EDK 6.1 (Manual de
conduccion)
conduccion)
Cadena dediseo y montaje
Cadena de simulacin
Debugging 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 modificacin del diseo
Ejemplo de
comparacin;
implementacin del
procesador
paralelo TOTEM
diseado para
hacer
multiplicaciones de
matices
"Procesador Embebido Microblaze" E.
Aguayo UAM
Sumario
Microblaze Soft processor (Equipamiento de serie)
Introduccion
Arquitectura Interna
- FPGA? Pipeline
- Soft vs Hard processors Registros internos
- Soft processor en una FPGA Repertorio de instrucciones
- Ventajas de una FPGA: Conectividad, distribucin de tareas Interrupciones y excepciones
HW-
HW-SW Configuraciones de buses
Memoria
IP cores para Microblaze (Equipamiento opcional) Microblaze vs Otros sistemas (Prestaciones)
Estndar Core Connect de IBM para Microblaze Velocidad
Para OPB (On
(On--Chip peripheral bus) Espacio
Otros IP interesantes Consumo
Crea tus propios cores y sus drivers Tiempo de desarrollo y/o modificacin del diseo
Microblaze; Desarrollo de
aplicaciones con EDK 6.1
Cadena de diseo y montaje
Cadena de simulacin Fpgas que soportan Microblaze
Ejemplo de Aplicacin de Microblaze
Debugging
Referencias
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system hardware
BEGINmicroblaze
PARAMETERINSTANCE=microblaze_0
Descripcin del Hardware, el archivo .MHS PARAMETERHW_VER=2.00.a
PARAMETERC_DEBUG_ENABLED=1
Perifricos PARAMETERC_NUMBER_OF_PC_BRK=8
PARAMETERC_NUMBER_OF_RD_ADDR_BRK=1
Configuracin de buses de Microblaze PARAMETERC_NUMBER_OF_WR_ADDR_BRK=1
PARAMETERC_USE_ICACHE=1
Conexiones internas del sistema PARAMETERC_CACHE_BYTE_SIZE=8192
Distribucin de la memoria PARAMETERC_USE_DCACHE=0
PARAMETERC_ICACHE_BASEADDR=0x14000000
Configuracin de los perifricos y versin de PARAMETERC_ICACHE_HIGHADDR=0x16003fff
PARAMETERC_ADDR_TAG_BITS=13
los mismos (aunque se puede hacer en un BUS_INTERFACEDLMB=dlmb
archivo aparte .MPD y cargarlo a PlatGen)
PlatGen) 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
XPS dentro de EDK 6.1 ofrece un PORTDBG_TDO=DBG_TDO_s
PORTDBG_UPDATE=DBG_UPDATE_s
tutorial para crear este archivo. END
Solo tres comandos de asignacin; BEGINopb_v20
PARAMETERINSTANCE=mb_opb
BUS_INTERFACE PARAMETERHW_VER=1.10.b
PARAMETERC_EXT_RESET_HIGH=0
PARAMETER (Hardware) PORTSYS_Rst=sys_rst_s
PORTOPB_Clk=sys_clk_s
PORT END
HDL (VHDL o Verilog) compilable
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system hardware
Distribucin de la memoria en un sistema Microblaze
Direccin 0x0000 0000
Memoria de sistema
El bit 24 define direcciones en --- Espacios
el chip (si es cero) o fuera del huecos en el
chip (si es uno) espacio de
direccionamiento
Direccin dispositivos
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system hardware
Descripcin del
archivo .MPD
(Microprocessor
Peripheral Description)
Description)
Cualquier parmetro
dentro del archivo .MPD
ser reescrito si esta
especificado en el .MHS
Facilita el intercambio
de IP cores
Descarga al archivo
.MHS de informacin
especifica de los IP.
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system hardware
Xilinxs Platform Generator;
Generator; Coge el archivo .MHS y genera archivos para
implementacin (.ngc
(.ngc datos de diseo lgico y constricciones), traduccin a HDL (
.v o .vhd
.vhd),
), sntesis (.prj
(.prj para ISE) y BlockRAM Memory Map (.bmm
(.bmm))
PlatGen necesita cargar los directorios de los IP utilizados
en el diseo.
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system software
Descripcin del
software, el archivo
.MSS
Parmetros de los
drivers
Especificacin libreras
utilizadas
Archivos de sistema
Creado para el
generador de libreras
LibGen en EDK 6.1
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system software
Xilinxs LibGen coge el archivo .MSS, .MHS (dependencia harware-
harware-software) y la
libreras especificadas en el MSS y comprueba errores sintcticos
sintcticos genera un rbol
de directorios con los ficheros necesarios para la implementacin
implementacin en la FPGA.
El compilador se encargara de generar el fichero con el cdigo y las
funciones integradas, utilizando los drivers de cada perifrico.
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo y montaje: Microblaze
system software
Crea tus propias libreras para LibGen
El archivo MLD esta
asociado a uno o
varios .h
Necesitaremos los archivos MLD
(Microprocessor Library
Definition, para la definicin de
datos)) y Tcl (Tool Comand
Language, para la generacin de
datos, aunque no es necesario)
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de diseo 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 diseo y montaje: Microblaze
system software
Cdigo C en nuestro sistema Microblaze
Compilacin sencilla con mb_gcc, un
compilador GNU [Link]: file format elf32-microblaze
Disassembly of section .text:
#include "xgpio.h"
00000000 <_start>:
#include "xparameters.h"
0: b8000018 bri 24
void my_sleep(unsigned int seconds){
// 18 <_start1>
int i = 0;
4: 80000000 or r0, r0, r0
unsigned int delay = 13000000;
8: b0007fff imm 32767
for (i=0;i<(seconds*delay);i++){}
c: b808ffff brai -1
}
10: b0007fff imm 32767
main(){
14: b808ffff brai -1
XGpio leds;
XGpio dips;
00000018 <_start1>:
int j,k = 0;
18: 21a01228 addi r13, r0, 4648
//initialize leds
// 1228 <_SDA_BASE_>
XGpio_Initialize(&leds, XPAR_LEDS_4BIT_DEVICE_ID);
1c: 20401160 addi r2, r0, 4448
XGpio_SetDataDirection(&leds, 0x00000000);
// 1160 <_SDA2_BASE_>
//initialize GPIO used as an input for the DIP switch
20: 20201478 addi r1, r0, 5240
XGpio_Initialize(&dips, XPAR_DIPS_8BIT_DEVICE_ID);
24: 20c001f4 addi r6, r0, 500
XGpio_SetDataDirection(&dips, 0x000000F1);
// 1f4 <_exception_handler>
xil_printf("The dIP Switch will set the delay in seconds\n");
28: d8c10000 sw r6, r1, r0
while(1){
2c: c4e10000 lhu r7, r1, r0
j=(j+1)%16;
30: f4e0000a shi r7, r0, 10
//Write the value of j to the LED
34: f4c0000e shi r6, r0, 14
XGpio_DiscreteWrite(&leds, ~j);
38: 20c001fc addi r6, r0, 508
//Read the value from the DIP switch
// 1fc <_interrupt_handler>
k = XGpio_DiscreteRead(&dips);
3c: d8c10000 sw r6, r1, r0
xil_printf("Count = %d, DIP= %d \n\r" ,j,k);
40: c4e10000 lhu r7, r1, r0
my_sleep(k);
44: f4e00012 shi r7, r0, 18
} "Procesador Embebido Microblaze" 48:
E. f4c00016 shi r6, r0, 22
}
Aguayo UAM 4c: b9f40028 brlid r15, 40
Cadena de diseo y montaje: Microblaze
system software
Mapeo de nuestro cdigo 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
compilacin
"Procesador Embebido Microblaze" E.
Aguayo UAM
Cadena de simulacin
SimGen es capaz de generar un modelo
en VHDL de nuestro sistema.
Solo tendremos que crear un testbench
para nuestro sistema
Esta opcin puede ser poco produceente
por ejemplo al usar UARTs
Necesitaremos Modelsim u otro simulador
de HDL para realizar la simulacin
"Procesador Embebido Microblaze" E.
Aguayo UAM
Debugging
XMD sirve a GDB
(debugger de GNU) a
travs 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 perifricos
XMD incluido en EDK 6.1
"Procesador Embebido Microblaze" E.
Aguayo UAM
Ejemplo de Aplicacin de Microblaze
RTOS (Real Time
Operating System)
Sierra16 de RealFast
Parte del SO Semaforos,
Semaforos,
implementado en Priorizacion,
Priorizacion, timers.
timers.
hardware para
ahorrar espacio de
memoria
Accesibilida en Monitor para
paralelo por hardware dubugging,
dubugging, accesos a
a recursos 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
Systmes Logiques,
Logiques, Ecole Polytechnique Fdrale de
Lausanne
Mary Jane Irwin,
Irwin, CSE 597D Embedded Systems Desing, Desing,
Pennsylvania State University.
University.
Configuracion de FPGAs xilinx,
xilinx, Sergio Lopez-
Lopez-Buedo.
Buedo.
Introduccion a los circuitos VLSI, Eduardo Boemo.
[Link]
"Procesador Embebido Microblaze" E.
Aguayo UAM