• No se han encontrado resultados

INTRODUCCIÓN AL DISEÑO FPGA-DSP. Cristian Sisterna, MSc UNSJ-C7T

N/A
N/A
Protected

Academic year: 2021

Share "INTRODUCCIÓN AL DISEÑO FPGA-DSP. Cristian Sisterna, MSc UNSJ-C7T"

Copied!
50
0
0

Texto completo

(1)

I

NTRODUCCIÓN AL DISEÑO

FPGA-DSP

Cristian Sisterna, MSc UNSJ-C7T

(2)

AGENDA

 Introducción

 Bloques DSPs en Xilinx FPGAs  MatLab/Simulink

 Simulink

 Xilinx System Generator

 Ejemplo de Diseño con SysGen

C. Sisterna

2

(3)

A

LGORITMOS

DSP

S

C. Sisterna

3

(4)

A

LGORITMOS

DSP

S

–D

ÓNDE

I

MPLEMENTARLOS

?

C. Sisterna 4 ICTP 2012

Algoritmo

DSP

Procesadores

DSP (AMD, TI)

FPGAs

(5)

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)

(6)

DSP B

LOCKS

(7)

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

(8)

X

ILINX

DSP48 S

LICE

C. Sisterna

8

(9)

X

ILINX

DSP48 T

ILE

C. Sisterna 9 ICTP 2012 Un DSP48 Tile consiste de dos DSP48 Slices

(10)

B

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.

(11)

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

(12)

DSP48E – V

IRTEX

5/6

C. Sisterna

12

(13)

DSP48 – FPGA V

ISTA

I

NTERNA

1

C. Sisterna 13 ICTP 2012 Bloques DSP48 CLB

(14)

DSP48 – FPGA V

ISTA

I

NTERNA

2

C. Sisterna

14

(15)

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

(16)

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

(17)

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 In

X

X

+

+

Reg Reg 500 MHz 500 MHz 1 clock cycle 1 clock cycle

= 500 MSPS

= 500 MSPS

Data Out Data Out FPGA

FPGA –– 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 C1C1

X

X

C0C0 C2C2

X

X

C3C3

X

X

C255C255

X

X

Re g Re g Re g Re g Re g Re g Reg Re g

(18)

R

AZÓN

2

LPF

Filtro Multi Canal

80MHz Samples ch1 ch2 ch3 ch4 LPF LPF LPF LPF 20MHz Samples

(19)

R

AZÓN

3

×

×

×

×

+ + + + + +

×

+ + D Q

×

×

+ + + + D Q Parallel Semi-Parallel Serial Optimización? Velocidad Area

(20)

I

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 g

(21)

I

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ón

(22)

M

AT

L

AB

- S

IMULINK

(23)

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

(24)

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

(25)

S

YSTEM

G

ENERATOR

(26)

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

(27)

S

YSTEM

G

ENERATOR

- S

IMULINK

C. Sisterna

27

(28)

S

YSTEM

G

ENERATOR

- S

IMULINK

 Librería de funciones:

C. Sisterna

28

(29)

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

(30)

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

(31)

S

YS

G

EN

– S

IMULINK

– E/S

DEL

FPGA

C. Sisterna 31 ICTP 2012 FPGA Entrada al FPGA Salida del FPGA

(32)

S

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

(33)

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

(34)

S

YS

G

EN

: B

LOQUE

G

ATEWAY

I

N

C. Sisterna

34

(35)

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

(36)

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

(37)

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

(38)

S

YS

G

EN

– E

JEMPLO

C

ONFIGURACION

C. Sisterna

38

(39)

E

JEMPLO DE

D

ISEÑO

(40)

C

REANDO UN

D

ISEÑO CON

S

YS

G

EN

C. Sisterna

40

(41)

C

REANDO UN

D

ISEÑO CON

S

YS

G

EN

C. Sisterna

41

(42)

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

(43)

S

IMULACIÓN EN

S

IMULINK

C. Sisterna

43

(44)

B

LOQUE

S

YSTEM

G

ENERATOR

C. Sisterna

44

(45)

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.v

(46)

P

ROYECTO

FPGA C

READO POR

S

YS

G

EN

C. Sisterna

46

(47)

V

ISTA DEL

FIR I

MPLEMENTADO EN EL

FPGA

C. Sisterna

47

(48)

FIR- S

IMULACIÓN EN

M

ODEL

S

IM

C. Sisterna

48

(49)

E

JEMPLO DE

D

ISEÑO

C. Sisterna

49

(50)

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

Referencias

Documento similar

Debido a su papel fundamental en aplicaciones DSP, muchos dispositivos FPGA de alto rendimiento han incorporado celdas especiales para procesamiento digital de la señal destinadas

Therefore, the rebuilding technique is more appropriate for custom hardware (FPGA or ASIC) implementation than for digital signal processor (DSP) or microcontroller, as in

Cohen (Cohen, 1991) decided to include of a force to oblige the active contour to expand and to contract in the absence of other type of forces in or- der to solve some of the

The proposed architecture has been implemented in a Xilinx Zynq Ultrascale+ MPSoC platform (XCZU9EG-2FFVB1156E FPGA with a grade speed of -2) at a work frequency of

OmpSs@FPGA Ecosystem: Integrating FPGA compilation into OmpSs.. OmpSs@FPGA

This Makefile target specifies to our OmpSs@FPGA toolchain the compilation flag --to step=design, which will make the compilation to stop after the Vivado HLS project and the

generate memory copies inside the accelerator, however the Runtime will copy the data to accesible FPGA memory.. FPGA Blocking:

This project has required extensive work in many different areas, such as hardware implementation over an FPGA using Verilog, assembler programming for RISC-V, Zephyr OS