introducciÓn al diseÑo fpga-dspindico.ictp.it/event/a11204/session/8/contribution/5/...flujo de...
TRANSCRIPT
INTRODUCCIÓN AL DISEÑOFPGA-DSP
Cristian Sisterna, MScUNSJ-C7T
AGENDA
Introducción
Bloques DSPs en Xilinx FPGAs
MatLab/Simulink
Simulink
Xilinx System Generator
Ejemplo de Diseño con SysGen
C. Sisterna
2
ICTP 2012
ALGORITMOS DSPS
C. Sisterna
3
ICTP 2012
ALGORITMOS DSPS–DÓNDE IMPLEMENTARLOS?
C. Sisterna
4
ICTP 2012
AlgoritmoDSP
ProcesadoresDSP (AMD, TI) FPGAs
Simulink +FPGA
FLUJO DE DISEÑO SIMULINK-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 alFPGA
Generación de Test Bench
VerificaciónModelSim
Xlx DSP Toolset
Xlx CoreGen
SystemGenerator
SimulaciónEntorno
ModelSim/ISE
EntornoISE
EntornoMatLab
Simulación en Simulink (opcional)
DSP BLOCKS
Xilinx FPGAs
XILINX FPGA – BLOQUE 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
Nota: Dos DSP48 slices componen lo que se llama un Xtreme DSP Tile
XILINX DSP48 SLICE
C. Sisterna
8
ICTP 2012
XILINX DSP48 TILE
C. Sisterna
9
ICTP 2012
Un DSP48 Tile consiste de dos DSP48
Slices
BLOQUE DSP48 - REGISTROS
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. Los registros pueden tener m = 0 o 1.
XILINX FPGA – BLOQUE 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
ICTP 2012
DSP48E – VIRTEX 5/6
C. Sisterna
12
ICTP 2012
DSP48 – FPGA VISTA INTERNA 1
C. Sisterna
13
ICTP 2012
BloquesDSP48
CLB
DSP48 – FPGA VISTA INTERNA 2
C. Sisterna
14
ICTP 2012
DSP MAC LIMITES
• Procesamiento sequencialprocessing 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 datomuestreado
– Una salida cada 256 ciclos de reloj
RegData In
Loop Algorithm256 times
Data Out
MAC unit
FPGA MACS
• Procesamiento paralelomaximiza frecuencia datode salida– Soporta cualquier nivel de
paralelismo• Filtro FIR de 256 Taps
– 256 multiplica y acumula(MAC) operaciones pordato 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 Reg255Data In
All 256 MAC operations in one clock cycle
RAZÓN 1
Data OutData Out
MAC UnitMAC UnitCoeficientesCoeficientes
ProcesadorProcesador DSP DSP --SecuencialSecuencial
1 GHz1 GHz256 clock cycles256 clock cycles = 4 MSPS= 4 MSPS
256 256 ciclosciclos de de
relojreloj
Data InData In
XX
++RegReg
500 MHz500 MHz1 clock cycle1 clock cycle
= 500 MSPS= 500 MSPS
Data OutData Out
FPGA FPGA –– ImplementaciónImplementaciónen en ParaleloParalelo
256 256 operacionesoperacionesen 1 en 1 ciclociclo de de relojreloj
Data InData In
XX
++
C0C0 C0C0XXC1C1 XXC2C2 XXC3C3 XXC255C255…
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
RAZÓN 2
LPF
Filtro Multi Canal
80MHzSamples
ch1ch2ch3ch4
LPF
LPF
LPF
LPF
20MHzSamples
RAZÓN 3
×
×
×
× +
+
+
+
+
+ ×
+
+D Q
×
×
+
+
+
+D Q
Parallel Semi-Parallel
Serial
Optimización?Velocidad Area
IMPORTANCIA BLOQUE DSP EN FPGA
RuteoRuteo y y LocaciónLocación puedepuedereducirreducir PerformancePerformance
MultiplicaciónMultiplicación y Suma y Suma ParalelaParalela en FPGA sin en FPGA sin BloqueBloque DSPDSP
Data InData In
XX
++
C0C0 C0C0XXC1C1 XXC2C2 XXC3C3
++++
XXC4C4 C0C0XXC5C5 XXC6C6 XXC7C7 XXC30C30 XXC31C31
++++ ++++
Data OutData Out
++++Sumadores
Lóógica
SumadoresImplementados en Lóógica
LatenciaVariable
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
IMPORTANCIA BLOQUE DSP EN FPGA
Data InData In
XX
++
XX
++
XX
++
Data OutData Out
XX
++
XX
++
XX
++
XX
++
XX
++
XX
++
C0C0 C1C1 C2C2 C3C3 C5C5 C6C6 C7C7 C30C30 C31C31C4C4 XX
++
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
Reg
MultiplicaciónMultiplicación y Suma y Suma ParalelaParalela en FPGA con en FPGA con BloqueBloque DSPDSP
MATLAB - SIMULINK
Introducción
MATLAB - SIMULINK
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
ICTP 2012
MATLAB – SIMULINK (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 SimulinkBloques de fuentes de señal y absorción de señalBloques: DSPsComunicaciones
C. Sisterna
24
ICTP 2012
SYSTEM GENERATOR
Xilinx DSP Toolkit
SYSTEM GENERATOR - SIMULINK
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
ICTP 2012
SYSTEM GENERATOR - SIMULINK
C. Sisterna
27
ICTP 2012
SYSTEM GENERATOR - SIMULINK
Librería de funciones:
C. Sisterna
28
ICTP 2012
SYSGEN: PRINCIPALES BLOQUES
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
ICTP 2012
SYSGEN-SIMULINK: GENERACIÓN ARCHIVOS
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
ICTP 2012
SYSGEN – SIMULINK – E/S DEL FPGA
C. Sisterna
31
ICTP 2012
FPGA
Entrada al FPGA
Salida del FPGA
SYSGEN 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
ICTP 2012
SYSGEN: BLOQUE GATEWAY IN
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
ICTP 2012
SYSGEN: BLOQUE GATEWAY IN
C. Sisterna
34
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
C. Sisterna
35
ICTP 2012
SYSGEN: TIPOS DE DATOS
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
FIX UFIX
SYSGEN: TIPOS DE DATOS
Boolean: pueda tomarvalores ‘1’ o ‘0’. Se usa paracontrolar señales comoLOAD, CS, RESET, etc.
C. Sisterna
37
ICTP 2012
SYSGEN – EJEMPLO CONFIGURACION
C. Sisterna
38
ICTP 2012
EJEMPLO DE DISEÑO
Flujo de Diseño Simulink/SysGen/ISE/ModelSim
CREANDO UN DISEÑO CON SYSGEN
C. Sisterna
40
ICTP 2012
CREANDO UN DISEÑO CON SYSGEN
C. Sisterna
41
ICTP 2012
EJEMPLO DE DISEÑO: FIR
C. Sisterna 42
ICTP 2012
Gateway In/OUT: interface entre SysGen y Simulink
SimulinkFuente
de Senal
SimulinkGraficosde Senal
Lógica a implementar en el FPGA
SIMULACIÓN EN SIMULINK
C. Sisterna
43
ICTP 2012
BLOQUE SYSTEM GENERATOR
C. Sisterna
44
ICTP 2012
SYSGEN - ARCHIVOS GENERADOS
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.v
PROYECTO FPGA CREADO POR SYSGEN
C. Sisterna
46
ICTP 2012
VISTA DEL FIR IMPLEMENTADO EN EL FPGA
C. Sisterna
47
ICTP 2012
FIR- SIMULACIÓN EN MODELSIM
C. Sisterna
48
ICTP 2012
EJEMPLO DE DISEÑO
C. Sisterna
49
ICTP 2012
C. Sisterna
50
ICTP 2012
Contacto:[email protected]@c7t-hdl.com
Mas información (notas de aplicación, notas técnicas, etc): http://www.c7t-hdl.com
Bloghttp://hdl-fpga.blogspot.com.ar/