Vous êtes sur la page 1sur 23

"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 executable.elf: 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.
www.xilinx.com

"Procesador Embebido Microblaze" E.


Aguayo UAM