Вы находитесь на странице: 1из 50

INTRODUCCIN AL DISEO

FPGA-DSP

Cristian Sisterna, MSc


UNSJ-C7T
AGENDA

Introduccin

Bloques DSPs en Xilinx FPGAs

MatLab/Simulink

Simulink

Xilinx System Generator

Ejemplo de Diseo con SysGen

2
C. Sisterna
ICTP 2012
ALGORITMOS DSPS

C. Sisterna ICTP 2012


ALGORITMOS DSPSDNDE IMPLEMENTARLOS?

Algoritmo
DSP

Procesadores
FPGAs
DSP (AMD, TI)

Simulink +FPGA
4

C. Sisterna ICTP 2012


FLUJO DE DISEO SIMULINK-FPGA
Desarrollo en
System Simulink Entorno
Generator MatLab
Bloques DSP
Xlx DSP Toolset SysGen Simulacin
Entorno
Simulacin en ModelSim/ISE
Simulink (opcional)

Generacin del Generacin de


Xlx CoreGen VHDL o Verilog Test Bench

ISE (Xilinx)
Sntesis y P&R Verificacin
Entorno ModelSim
ISE
Download al
FPGA
5

C. Sisterna ICTP 2012


DSP BLOCKS

Xilinx FPGAs
XILINX FPGA BLOQUE DSP48

Desde un punto de vista simple el DSP48 puede


multiplicar dos nmeros de 18 bits (18x18) y
acumular el resultado en un ACC de 48 bits. Todo
expresado en complemento a dos.

Nota: Dos DSP48 slices componen lo que se llama un Xtreme DSP Tile 7

C. Sisterna ICTP 2012


XILINX DSP48 SLICE

C. Sisterna ICTP 2012


XILINX DSP48 TILE

Un DSP48 Tile
consiste de
dos DSP48
Slices

C. Sisterna ICTP 2012


BLOQUE DSP48 - REGISTROS
Existen diferentes opciones del uso de los registros
disponibles en el DSP48

Los registros pueden tener n = 0, 1 o 2 para las


entradas del multiplicador.
Los registros pueden tener m = 0 o 1.
10

C. Sisterna ICTP 2012


XILINX FPGA BLOQUE DSP48

El bloque DSP48 es parte del los bloques prediseados


ASMBLs (Application Specific Modular Blocks).
El bloque DSP48 casi no usa el ruteo del FPGA, solo
entrada y salidas. Ello implica: bajo consumo de
potencia, muy alta frecuencia de trabajo y una
implementacin en silicio muy eficiente.
Bloques DSP48E pueden fcilmente conectarse con
sus bloques DSP48 vecinos. Pudiendo formar una
cascada de bloques DSP48.

11

C. Sisterna ICTP 2012


DSP48E VIRTEX 5/6

12

C. Sisterna ICTP 2012


DSP48 FPGA VISTA INTERNA 1

CLB

Bloques
DSP48

13

C. Sisterna ICTP 2012


DSP48 FPGA VISTA INTERNA 2

14

C. Sisterna ICTP 2012


DSP MAC LIMITES

Procesamiento sequencial
processing limita max. frec.
dato salida
Data In
MAC tiempo compartida Reg
Reloj de alta frecuencia
complica la performance
Loop
Filtro FIR de 256 Tap Algorithm MAC
256 times unit
256 multiplica y acumula
(MAC) operaciones por dato Data Out
muestreado
Una salida cada 256 ciclos de
reloj
FPGA MACS
Procesamiento paralelo
maximiza frecuencia dato
de salida
Soporta cualquier nivel de
paralelismo Data In
Reg0 Reg1 Reg2 Reg255

Filtro FIR de 256 Taps


256 multiplica y acumula C0 C1 C2 .... C255
(MAC) operaciones por
dato muestreado
One output every clock All 256 MAC
operations in one
cycle clock cycle
Data Out

Flexible architecture
Bloques DSP, Bloques de
Memoria, Registros,
Controladores de Reloj, etc.
RAZN 1

Procesador DSP - FPGA Implementacin


Secuencial en Paralelo
Data In

Reg
Reg

Reg

Reg
Data In
Coeficientes
X C0
X C1
X
C0 C2
X C3
X C255 X
MAC Unit

256
+ +
ciclos de 256 operaciones
Reg
reloj en 1 ciclo de reloj
Data Out
Data Out

1 GHz 500 MHz


256 clock cycles = 4 MSPS = 500 MSPS
1 clock cycle
RAZN 2

20MHz
LPF ch1 80MHz
Samples
Samples

LPF ch2
LPF
LPF ch3
Filtro Multi Canal
LPF ch4
RAZN 3

Parallel Semi- Serial


Parallel
+

+
+ +
+ DQ
+
+ DQ

+
+
+ +

Velocidad Optimizacin? Area


IMPORTANCIA BLOQUE DSP EN FPGA

Multiplicacin y Suma Paralela en FPGA sin Bloque DSP

Data In
Reg

Reg
Reg

Reg

Reg
Reg

Reg

Reg

Reg
C0
X C1
X
C0 C2
X C3
X C4 X C5 C0 C6
X X C7
X C30
X C31
X
+ + + + +
+ +
Sumadores
Implementados en
+ Latencia
Variable
L
gica +
Data Out
Ruteo y Locacin puede
reducir Performance
IMPORTANCIA BLOQUE DSP EN FPGA

Multiplicacin y Suma Paralela en FPGA con Bloque DSP

Data In

Reg

Reg
Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg

Reg
Reg

Reg
C0 X C1
X C2 X C3 X C4 X C5
X C6 X C7
X C30
X C31 X

+ + + + Reg + + + + + +
Reg
Reg

Reg

Reg

Reg
Reg

Reg
Reg
Data Out
MATLAB - SIMULINK

Introduccin
MATLAB - SIMULINK

El entorno MatLab/Simulik es un entorno grfico para


la modelacin y simulacin de sistemas dinmicos.

Soporta:
Sistemas lineales y no lineales, modelados en tiempo
continuo, tiempo discreto (muestras) o un hbrido de los
dos.

23

C. Sisterna ICTP 2012


MATLAB SIMULINK (CONT.)

Editor grfico de bloques


Simulador controlado por evento(s) (event driven)
Puede modelar/simular paralelismo
Una extensa librera de funciones con parmetros
variables:
Bloques matemticos de Simulink
Bloques de fuentes de seal y absorcin de seal

Bloques:

DSPs

Comunicaciones

24

C. Sisterna ICTP 2012


SYSTEM GENERATOR

Xilinx DSP Toolkit


SYSTEM GENERATOR - SIMULINK
Flujo de diseo integrado a Simulink, generando
directamente el archivo de programacin .bit
Integra:
MatLab, Simulink
HDL Sntesis
Libreras de DSP
Herramientas de implementacin del FPGA
Simulacin en doble precisin y punto fijo
Abstraccin Aritmtica
Punto-fijo arbitrario, incluyendo cuantizacin y overflow
System Generator es un Blockset dentro del entorno
Simulink
26

C. Sisterna ICTP 2012


SYSTEM GENERATOR - SIMULINK

27

C. Sisterna ICTP 2012


SYSTEM GENERATOR - SIMULINK
Librera de funciones:

28

C. Sisterna ICTP 2012


SYSGEN: PRINCIPALES BLOQUES

Elementos bsicos: contadores,


retardos, lgica binaria, etc.
Comunicaciones: ECC bloques,
Viterbi, Reed Solomon, etc.
Tipo de Datos: convertir, rotar,
concatenar, etc.
DSP: IIR, FIR, FFT, etc.
Math: multiplicar, acumular,
invertir, contadores, etc.
Memoria, dual port RAM, single
port RAM, ROM, FIFO.
Tools: ModelSim, Estimador de
Recursos, SysGen Token
29

C. Sisterna ICTP 2012


SYSGEN-SIMULINK: GENERACIN ARCHIVOS

Generacin del cdigo VHDL y Verilog para:


Virtex-7, Virtex-6, Virtex-5, Virtex-4, Spartan-7, Spartan-6,
Spartan-3E
Mapeo y expansin del hardware respectivo a cada
bloque
Preservacin de la jerarqua del modelo una vez
generados los cdigos VHDL y Verilog
Utilizacin de IP cores de CoreGen

Generacin automtica de:


Un proyecto ISE
Archivo de restricciones (constraint file *.ucf)
Archivo de simulacin Test Bench y script *.do (ModelSim)
30

C. Sisterna ICTP 2012


SYSGEN SIMULINK E/S DEL FPGA

Salida del
FPGA

Entrada al
FPGA
FPGA

31

C. Sisterna ICTP 2012


SYSGEN IN/OUT

Simulink usa double para representar nmeros en


simulacin. A double es un nmero en punto flotante
en complemento a dos de 64 bits.
TODOS los bloques de Xilinx usan representacin en
n-bits en punto fijo (complemento a dos es opcional).
Por ello se usa un bloque para la conversin de datos
desde Simulink a un bloque de Xilinx, llamado
Gateway In. Y otro bloque para la conversin desde
un bloque de Xilinx a Simulink, llamado Gateway Out.

32

C. Sisterna ICTP 2012


SYSGEN: BLOQUE GATEWAY IN

Controla la conversin desde un nmero representado


en double, entero o punto fijo a un nmero booleano
de N-bits, que puede ser con signo (complemento a
dos) o sin signo punto fijo (unsigned fixed-point)
Presenta la opcin de manejar los extra bits durante la
conversin
Este bloque define cuales van a ser las entradas del
diseo codificado en HDL por SysGen
Define los estmulos en caso de que la opcin de
Create Testbench haya sido seleccionada

33

C. Sisterna ICTP 2012


SYSGEN: BLOQUE GATEWAY IN

34

C. Sisterna ICTP 2012


SYSGEN: BLOQUE GATEWAY OUT

Convierte los datos de punto fijo de System


Generator a dato doble de Simulink
Define cuales van a ser los puertos de salida del
sistema codificado en HDL por System Generator

35

C. Sisterna ICTP 2012


SYSGEN: TIPOS DE DATOS

FIX: tipo de dato fijo, es un


FIX UFIX
nmero representado en
complemento a dos

UFIX: es un nmero
representado sin signo

36

C. Sisterna ICTP 2012


SYSGEN: TIPOS DE DATOS

Boolean: pueda tomar


valores 1 o 0. Se usa para
controlar seales como
LOAD, CS, RESET, etc.

37

C. Sisterna ICTP 2012


SYSGEN EJEMPLO CONFIGURACION

38

C. Sisterna ICTP 2012


EJEMPLO DE DISEO

Flujo de Diseo Simulink/SysGen/ISE/ModelSim


CREANDO UN DISEO CON SYSGEN

40

C. Sisterna ICTP 2012


CREANDO UN DISEO CON SYSGEN

41

C. Sisterna ICTP 2012


EJEMPLO DE DISEO: FIR
Gateway In/OUT: interface
entre SysGen y Simulink

Simulink
Graficos
de Senal

Simulink
Fuente
de Senal

Lgica a implementar en el FPGA


42
C. Sisterna ICTP 2012
SIMULACIN EN SIMULINK

43

C. Sisterna ICTP 2012


BLOQUE SYSTEM GENERATOR

44

C. Sisterna ICTP 2012


SYSGEN - ARCHIVOS GENERADOS

.vhd o .v
Archivos de Diseo .edn o .ngc
.xcf

.ise Archivos de Proyecto


.tcl

.do
Archivos de Simulacin .dat
_tb.vhd o _tb.v
45

C. Sisterna ICTP 2012


PROYECTO FPGA CREADO POR SYSGEN

46

C. Sisterna ICTP 2012


VISTA DEL FIR IMPLEMENTADO EN EL FPGA

47

C. Sisterna ICTP 2012


FIR- SIMULACIN EN MODELSIM

48

C. Sisterna ICTP 2012


EJEMPLO DE DISEO

49

C. Sisterna ICTP 2012


Contacto:
cristian@unsj.edu.ar
cristian@c7t-hdl.com
Mas informacin (notas de aplicacin, notas tcnicas, etc):
http://www.c7t-hdl.com
Blog
http://hdl-fpga.blogspot.com.ar/

50

C. Sisterna ICTP 2012

Вам также может понравиться