I
NTRODUCCIÓN AL DISEÑO
FPGA-DSP
Cristian Sisterna, MSc UNSJ-C7T
AGENDA
Introducción
Bloques DSPs en Xilinx FPGAs MatLab/Simulink
Simulink
Xilinx System Generator
Ejemplo de Diseño con SysGen
C. Sisterna
2
A
LGORITMOS
DSP
S
C. Sisterna
3
A
LGORITMOS
DSP
S
–D
ÓNDE
I
MPLEMENTARLOS
?
C. Sisterna 4 ICTP 2012Algoritmo
DSP
Procesadores
DSP (AMD, TI)
FPGAs
F
LUJO DE
D
ISEÑO
S
IMULINK
-FPGA
C. Sisterna 5 ICTP 2012 Desarrollo en Simulink Bloques DSP SysGen Generación del VHDL o Verilog ISE (Xilinx) Síntesis y P&R Download al FPGA Generación de Test Bench Verificación ModelSim Xlx DSP Toolset Xlx CoreGen System Generator Simulación Entorno ModelSim/ISE Entorno ISE Entorno MatLab Simulación en Simulink (opcional)DSP B
LOCKS
X
ILINX
FPGA – B
LOQUE
DSP48
Desde un punto de vista simple el DSP48 puede
multiplicar dos números de 18 bits (18x18) y
acumular el resultado en un ACC de 48 bits. Todo expresado en complemento a dos.
C. Sisterna
7
ICTP 2012
X
ILINX
DSP48 S
LICE
C. Sisterna
8
X
ILINX
DSP48 T
ILE
C. Sisterna 9 ICTP 2012 Un DSP48 Tile consiste de dos DSP48 SlicesB
LOQUE
DSP48 - R
EGISTROS
Existen diferentes opciones del uso de los registros disponibles en el DSP48
C. Sisterna
10
ICTP 2012
Los registros pueden tener n = 0, 1 o 2 para las entradas del multiplicador.
X
ILINX
FPGA – B
LOQUE
DSP48
El bloque DSP48 es parte del los bloques prediseñados
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 implementación en silicio muy eficiente.
Bloques DSP48E pueden fácilmente conectarse con
sus bloques DSP48 vecinos. Pudiendo formar una cascada de bloques DSP48.
C. Sisterna
11
DSP48E – V
IRTEX
5/6
C. Sisterna
12
DSP48 – FPGA V
ISTA
I
NTERNA
1
C. Sisterna 13 ICTP 2012 Bloques DSP48 CLBDSP48 – FPGA V
ISTA
I
NTERNA
2
C. Sisterna
14
DSP MAC L
IMITES
• Procesamiento sequencial
processing limita max. frec. dato salida
– MAC tiempo compartida – Reloj de alta frecuencia
complica la performance
• Filtro FIR de 256 Tap
– 256 multiplica y acumula
(MAC) operaciones por dato muestreado
– Una salida cada 256 ciclos de reloj Reg Data In Loop Algorithm 256 times Data Out MAC unit
FPGA MAC
S
• Procesamiento paralelo
maximiza frecuencia dato de salida
– Soporta cualquier nivel de paralelismo
• Filtro FIR de 256 Taps
– 256 multiplica y acumula (MAC) operaciones por dato muestreado
– One output every clock cycle
• Flexible architecture
– Bloques DSP, Bloques de
Memoria, Registros,
Controladores de Reloj, etc.
Data Out
....
C0 C1 C2 C255
Reg0 Reg1 Reg2 Reg255
Data In
All 256 MAC operations in one clock cycle
R
AZÓN
1
Data Out Data Out MAC Unit MAC Unit Coeficientes Coeficientes Procesador Procesador DSP DSP --Secuencial Secuencial 1 GHz 1 GHz 256 clock cycles 256 clock cycles= 4 MSPS
= 4 MSPS
256 256 ciclos ciclos de de reloj reloj Data In Data InX
X
+
+
Reg Reg 500 MHz 500 MHz 1 clock cycle 1 clock cycle= 500 MSPS
= 500 MSPS
Data Out Data Out FPGAFPGA –– ImplementaciónImplementación en
en ParaleloParalelo
256
256 operacionesoperaciones en 1
en 1 ciclociclo de de relojreloj Data In Data In
X
X
+
+
C0 C0 C1C1X
X
C0C0 C2C2X
X
C3C3X
X
…C255C255X
X
Re g Re g Re g Re g Re g Re g Reg Re gR
AZÓN
2
LPF
Filtro Multi Canal
80MHz Samples ch1 ch2 ch3 ch4 LPF LPF LPF LPF 20MHz Samples
R
AZÓN
3
×
×
×
×
+ + + + + +×
+ + D Q×
×
+ + + + D Q Parallel Semi-Parallel Serial Optimización? Velocidad AreaI
MPORTANCIA
B
LOQUE
DSP
EN
FPGA
Ruteo
Ruteo y y LocaciónLocación puedepuede reducir
reducir PerformancePerformance
Multiplicación
Multiplicación y Suma y Suma ParalelaParalela en FPGA sin en FPGA sin BloqueBloque DSPDSP
Data In Data In X X
+
+
C0 C0 C1C1 XXC0C0 C2C2 XX C3C3 XX+
+
+
+
X X C4 C4 C5C5 XXC0C0 C6C6 XX C7C7 XX C30C30 XX C31C31 XX+
+
+
+
+
+
+
+
Data Out Data Out+
+
+
+
Sumadores Lóógica Sumadores Implementados en Lóógica Latencia Variable Re g Re g RegReg Reg Re g Re g Re g Reg Re g Re g Re g Re g Re g Re g Re g Reg Re gI
MPORTANCIA
B
LOQUE
DSP
EN
FPGA
Data In Data In X X+
+
X X+
+
X X+
+
Data Out Data Out X X+
+
X X+
+
X X+
+
X X+
+
X X+
+
X X+
+
C0 C0 C1C1 C2C2 C3C3 C4C4 C5C5 C6C6 C7C7 C30C30 C31C31 XX+
+
Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g Re g RegReg RegReg ggReRe RegReg RegReg MultiplicaciónM
AT
L
AB
- S
IMULINK
M
AT
L
AB
- S
IMULINK
El entorno MatLab/Simulik es un entorno gráfico para
la modelación y simulación de sistemas dinámicos.
Soporta:
Sistemas lineales y no lineales, modelados en tiempo
continuo, tiempo discreto (muestras) o un híbrido de los dos.
C. Sisterna
23
M
AT
L
AB
– S
IMULINK
(
CONT
.)
Editor gráfico de bloques
Simulador controlado por evento(s) (event driven)
Puede modelar/simular paralelismo
Una extensa librería de funciones con parámetros variables:
Bloques matemáticos de Simulink
Bloques de fuentes de señal y absorción de señal Bloques: DSPs Comunicaciones C. Sisterna 24 ICTP 2012
S
YSTEM
G
ENERATOR
S
YSTEM
G
ENERATOR
- S
IMULINK
Flujo de diseño integrado a Simulink, generando
directamente el archivo de programación .bit
Integra:
MatLab, Simulink
HDL Síntesis
Librerías de DSP
Herramientas de implementación del FPGA
Simulación en doble precisión y punto fijo
Abstracción Aritmética
Punto-fijo arbitrario, incluyendo cuantización y overflow
System Generator es un ‘Blockset’ dentro del entorno
Simulink
C. Sisterna
26
S
YSTEM
G
ENERATOR
- S
IMULINK
C. Sisterna
27
S
YSTEM
G
ENERATOR
- S
IMULINK
Librería de funciones:C. Sisterna
28
S
YS
G
EN
: P
RINCIPALES
B
LOQUES
Elementos básicos: contadores,
retardos, lógica 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
C. Sisterna
29
S
YS
G
EN
-S
IMULINK
: G
ENERACIÓN
A
RCHIVOS
Generación del código VHDL y Verilog para:
Virtex-7, Virtex-6, Virtex-5, Virtex-4, Spartan-7, Spartan-6, Spartan-3E
Mapeo y expansión del hardware respectivo a cada
bloque
Preservación de la jerarquía del modelo una vez
generados los códigos VHDL y Verilog
Utilización de IP cores de CoreGen Generación automática de:
Un proyecto ISE
Archivo de restricciones (constraint file *.ucf)
Archivo de simulación Test Bench y script *.do (ModelSim)
C. Sisterna
30
S
YS
G
EN
– S
IMULINK
– E/S
DEL
FPGA
C. Sisterna 31 ICTP 2012 FPGA Entrada al FPGA Salida del FPGAS
YS
G
EN
IN/OUT
Simulink usa ‘double’ para representar números en
simulación. A double es un número en punto flotante en complemento a dos de 64 bits.
TODOS los bloques de Xilinx usan representación en
n-bits en punto fijo (complemento a dos es opcional).
Por ello se usa un bloque para la conversión de datos
desde Simulink a un bloque de Xilinx, llamado
Gateway In. Y otro bloque para la conversión desde un bloque de Xilinx a Simulink, llamado Gateway Out.
C. Sisterna
32
S
YS
G
EN
: B
LOQUE
G
ATEWAY
I
N
Controla la conversión desde un número representado
en double, entero o punto fijo a un número booleano de N-bits, que puede ser con signo (complemento a dos) o sin signo punto fijo (unsigned fixed-point)
Presenta la opción de manejar los extra bits durante la
conversión
Este bloque define cuales van a ser las entradas del
diseño codificado en HDL por SysGen
Define los estímulos en caso de que la opción de
‘Create Testbench’ haya sido seleccionada
C. Sisterna
33
S
YS
G
EN
: B
LOQUE
G
ATEWAY
I
N
C. Sisterna
34
S
YS
G
EN
: B
LOQUE
G
ATEWAY
O
UT
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
C. Sisterna
35
S
YS
G
EN
: T
IPOS DE
D
ATOS
FIX: tipo de dato fijo, es un
número representado en complemento a dos
UFIX: es un número
representado sin signo
C. Sisterna
36
ICTP 2012
S
YS
G
EN
: T
IPOS DE
D
ATOS
Boolean: pueda tomar
valores ‘1’ o ‘0’. Se usa para controlar señales como
LOAD, CS, RESET, etc.
C. Sisterna
37
S
YS
G
EN
– E
JEMPLO
C
ONFIGURACION
C. Sisterna
38
E
JEMPLO DE
D
ISEÑO
C
REANDO UN
D
ISEÑO CON
S
YS
G
EN
C. Sisterna
40
C
REANDO UN
D
ISEÑO CON
S
YS
G
EN
C. Sisterna
41
E
JEMPLO DE
D
ISEÑO
: FIR
C. Sisterna ICTP 2012 42
Gateway In/OUT: interface entre SysGen y Simulink
Simulink Fuente de Senal Simulink Graficos de Senal
S
IMULACIÓN EN
S
IMULINK
C. Sisterna
43
B
LOQUE
S
YSTEM
G
ENERATOR
C. Sisterna
44
S
YS
G
EN
- A
RCHIVOS
G
ENERADOS
Archivos de Diseño C. Sisterna 45 ICTP 2012 Archivos de Simulación Archivos de Proyecto .vhd o .v .edn o .ngc .xcf .ise .tcl .do .dat _tb.vhd o _tb.vP
ROYECTO
FPGA C
READO POR
S
YS
G
EN
C. Sisterna
46
V
ISTA DEL
FIR I
MPLEMENTADO EN EL
FPGA
C. Sisterna
47
FIR- S
IMULACIÓN EN
M
ODEL
S
IM
C. Sisterna
48
E
JEMPLO DE
D
ISEÑO
C. Sisterna
49
C. Sisterna 50 ICTP 2012 Contacto: [email protected] [email protected]
Mas información (notas de aplicación, notas técnicas, etc):
http://www.c7t-hdl.com
Blog