introducciÓn al diseÑo fpga-dspindico.ictp.it/event/a11204/session/8/contribution/5/...flujo de...

Post on 31-Dec-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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:cristian@unsj.edu.arcristian@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/

top related