You are on page 1of 19

Universidad de Alcal Ingeniera Electrnica Diseo de Circuitos y Sistemas Electrnicos

Estudio del Mdulo DSP48A de la familia Spartan-3A DSP de Xilinx


Marcelo Salazar Arcucci 13 de abril de 2009

ndice

1. Introduccin
1.1. 1.2. Origen del DSP48A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos que utilizan el DSP48A . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2 5

2. Arquitectura interna del DSP48A


2.1. 2.2. Lista de puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modos de operacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
7 9

3. Instanciacin del mdulo DSP48A 4. Aplicaciones


4.1. 4.2. 4.3. 4.4. Formacin de multiplicadores de elevados bits . . . . . . . . . . . . . . . . . . . . . . Multiplicacin de nmeros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circular barrel shifter Filtros FIR 4.4.1. 4.4.2. 4.4.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9 11
11 12 14 16 16 17 17

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Filtros FIR bsico

Filtros FIR multicanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtros FIR simtricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. Conclusiones

18

1.

Introduccin
Este documento estudia el mdulo DSP48A de la familia Spartan-3A-DSP de Xilinx. En la seccin

1.1 se estudia el origen de dicho mdulo, se muestra la arquitectura interna simplicada del mismo y se hace una comparacin con otros mdulos de Xilinx. A continuacin se describen las FPGAs comerciales que utilizan el DSP48A y una tarjeta de desarrollo para aplicaciones que requieren procesamiento de seal. La seccin 2 estudia el mdulo DSP48A por dentro, su puertos disponibles y los diferentes modos de operacin que dispone. Una de las seccines ms interesantes, la nmero 4, describe las diferentes aplicaciones de dicho mdulo. La seccin 3 describe las maneras de instanciar el componentes DSP48A. Para terminar, se hace una breve conclusin sobre el dispositivo bajo estudio y su posible evolucin a medio y largo plazo.

1.1.

Origen del DSP48A

Los algoritmos de DSP estn basados en combinaciones de sumas y multiplicaciones (MAC, multiply & acumulates). Las primeras FPGAs implementaban estos algoritmos mediante los multiplicadores basados en las LUTs que incorporaban los CLBs. En la gura 1 se puede ver la evolucin de los mdulos de DSP de las familias de FPGA de Xilinx (Virtex y Spartan). Hace aos Xilinx sac al mercado la familia Virtex-II que incorpora un multiplicador dedicado de 18 bits con salida de 36 bits llamado MULT18x18S (ver gura 2). Esta combinacin incrementa notablemente la velocidad de las multiplicaciones comparada con la familia anterior basada en LUTs. La familias de bajo coste de Spartan, 3A y 3E, se basan en las primeras versiones de la Virtex, e incorporan multiplicadores dedicados de 18 bits con resultados de 36 bits llamados MULT18x18SIO (ver gura 3). Puede alcanzar una frecuencia de trabajo superior a 240 Mhz. La Virtex-4 incorpora un nuevo bloque de DSP que es capaz de multiplicar y sumar en el msmo mdulo (ver gura 4); se le llam DSP48 debido a su precisin de salida de 48 bits. Adems del sumador, se podan realizar restas y operaciones de rotacin para facilitar funciones de escalado de los resultados. Se incorporaron registros intercalados entre las operaciones para implementar una estructura pipeline y lograr una frecuencia de trabajo superior a 400 Mhz. Con la llegada de la Virtex-5 se introdujo el mdulo DSP48E (Enhanced), que est basado en el DSP48 de la Virtex-4. El bloque sumador se modic para convertirse en un bloque multifuncin ALU; entre otras cosas, se soporta deteccin de saturacin, overow y under-ow (ver gura 5). El comportamiento de sta ALU se puede modicar en tiempo de ejecucin mediante cdigos a la entrada del mismo. El DSP48E puede alcanzar frecuencias de trabajo superiores a 450 Mhz. La familia Spartan 3A-DSP incorpora el mdulo DSP48A, que est basado en el DSP48 de la Virtex-4. El mdulo DSP48A soporta completamente las operaciones MAC (pre-adder, multiplier, add-accumulate) (ver gura 6). Estos mdulos de DSP dedicados tienen la mejor relacin coste/MAC de las FPGAs. En la tabla 1 puede verse una comparativa entre los diferentes mdulos DSP48 de las familias de Xilinx.

Virtex-II

Virtex-4
DSP48

Figura 1: Evolucin de los mdulos de DSP en las distintas familias de FPGAs de Xilinx.

MULT18x18S
B
18

X
18

REG
A REG
CE D Q

Figura 2: Esquema simplicado del Multiplicador de 18x18 bits que incorpora la Virtex-II Figura 3: Esquema simplicado del Multiplicador de 18x18 bits que incorpora la Spartan3A/3E

OPMODE Controls Behavior P A:B A B C Zero PCIN P


UG073_c1_04_070904

OPMODE, CARRYINSEL, CIN, and SUBTRACT Control Behavior

Figura 4: Esquema simplicado del mdulo DSP48 que incorpora la Virtex-4


Table 1-3:

OIS81x81TLUM

S81x81TLUM
Spartan 3A/3E Spartan 3A-DSP
DSP48A
36

Virtex-5
DSP48E

BCOUT

MULT18x18SIO

B REG 18
CE

0 1

M REG
CE D Q

36

18

CE D Q

BCIN

Chapter 1: DSP48E Description and Specifics

OPMODE Controls Behavior P A:B A X B All 1 Y P

P
All 0 PCIN P Z OPMODE, CARRYINSEL, and ALUMODE Control Behavior

UG193_c1_05_032806

Figure 1-5:

Simplified DSP Slice Operation

Figura 5: Esquema simplicado del mdulo DSP48E Slice Attributes DSP48E que incorpora la Virtex-5
The synthesis attributes for the DSP48E slice are described in this section. The attributes call out pipeline registers in the control and datapaths. The value of the attribute sets the number of pipeline registers. See Table 1-3.

Attribute Setting Description Attribute Name Settings (Default) Attribute Description

Register Control Attributes AREG

ACASCREG

0, 1, 2 (1) 0, 1, 2 (1)

Selects number of A input registers In conjunction with AREG, selects number of A input registers on A cascade path, ACOUT. Must be equal to or one less than AREG value. AREG is 0: ACASCREG must be 0 AREG is 1: ACASCREG must be 1

CARRYOUT C P PCIN Zero Z

P D:A:B concat D B A P X OPMODE, CARRYIN Controls Behavior

Zero

OPMODE Controls Behavior

CARRYIN

ug431_ch1_04_012307

Figura 6: Esquema simplicado del DSP48A que incorpora la Spartan 3A-DSP

Funcin
Multiplicador Pre-sumador

DSP48
18x18 no

DSP48E
25x18 no

DSP48A
18x18 si

Benecios
se reducen los recursos necesarios para algoritmos de DSP reduccin del camino crtico para ltros FIR

Entradas en cascada

permite conectar en cascada los mdulos para ltros grandes

Salidas en cascada

si

si

si

permite conectar en cascada los mdulos para ltros grandes

Entrada dedicada C

no

si

si

permite

realizar

operaciones

matemticas con 3 entradas Entradas de sumador Modo dinmico 3x48 bits si 3x48 bits si 2x48 bits si soporte para suma y acumulacin soporte ejecucin Funciones lgicas ALU Deteccin de patrones no no si si no no simular a la ALU de un para mltiples opera-

ciones congurables en tiempo de

deteccin de saturacin, overow y otros

Soporte de multiples ALU

no

si

no

permite mltiples ALU

realizar

en

paralelo con la

operaciones

Seales de carry

carry in

carry in-out

carry in-out

carry

rpido,

til

para

inter-

conectar DSPs

Tabla 1: Comparativa entre los distintos mdulos DSP48 de las FPGAs de Xilinx

Integrated 48-bit post adder Integrated 18-bit pre-adder for symmetric FIR filters Independent routing 250 MHz operation Internal output register 250 MHz operation

1.2.

Improved block RAM


Dispositivos que utilizan el DSP48A

En la gura 7 se muestran los dos dispositivos de la familia Spartan 3A-DSP que incorporan el mdulo DSP48A. Como se ha comentado antes, es una familia de bajo coste que incorpora altas prestaciones en su mdulo de DSP. A fecha de escribir ste documento el dispositivo XC3SD1800A ronda los 43 euros y el XC3SD3400A alrededor de 66 euros segn el distribuidor que se ha consultado [9]. Debido a la gran cantidad de elementos internos que incorporan, nicamente se suministran en encapsulado BGA, por lo que se requiere de maquinaria especial para soldarlos en un PCB.

Spartan-3 Generation Resources

Table 1-3 through Table 1-7 show the number of resources available in each member of the Spartan-3A DSP, Spartan-3AN, Spartan-3A, Spartan-3E, and Spartan-3 platforms. Note: By convention, 1K bits is equivalent to 1,024 bits.

Table 1-3:

Summary of Spartan-3A DSP FPGA Attributes


System Gates CLB Array Block Equivalent (One CLB = Four Slices) Distributed RAM Logic RAM Bits Total Total Bits Cells Rows Columns CLBs Slices 37,440 53,712 88 104 48 58 4,160 5,968 16,640 23,872 260K 373K 1,512K 2,268K Maximum Maximum Differential User I/O I/O Pairs 519 469 227 213

Device

DSP48As DCMs

XC3SD1800A XC3SD3400A

1800K 3400K

84 126

8 8

Table 1-4:
Device

Summary of Spartan-3AN FPGA Attributes

Maximum Equivalent Figura 7: Dispositivos de la Distributed Block 3A DSP y sus caractersticas familia Spartan Dedicated In-System Maximum System Differential DCMs RAM Logic CLBs Slices Flash bits User I/O Multipliers RAM Bits Gates I/O Pairs Bits Cells Cada dispositivo de los mostrados en la tabla anterior, tiene diferentes distribuciones de los mdulos XC3S50AN 50K 1,584 176 704 11K 54K 3 2 108 50 1M DSP48A. En la gura 8 puede verse la distribucin del XC3SD1800A, en la que se puede apreciar que XC3S200AN 200K 4,032 448 1,792 28K 288K 16 4 195 90 4M tiene 4 columnas de elementos DSP48A, sumando un total de 84. El XC3SD3400A (gura 9) tiene 5
Chapter 1: XtremeDSP Design Considerations
R

XC3S400AN 400K 8,064 896 3,584 56K 360K columnas de elementos DSP48A y suma un total de 126.
R

20 20 32
X0Y25

4 8 8
X1Y25

Number of DSP48A Slices per Spartan-3A DSP Device

311

142

4M

XC3S700AN

700K

13,248
X1Y21

1472

5,888

92K 176K

360K 576K

372 502
X2Y25

165
X3Y25

8M
X4Y25

XC3S1400AN X0Y21 1400K


X0Y20

X3Y21 11,264 25,344X2Y21 2816

227

16M

X1Y20

X2Y20

X3Y20

X0Y24

X1Y24

X2Y24

X3Y24

X4Y24

. .

32

X0Y12

X0Y11

X0Y10

X0Y9

. . .
X0Y1

. . . . . . . . . . . .
X1Y1

. . . . . . . . . . . .
X2Y1

. .
X3Y12

www.xilinx.com

X3Y11

X3Y10

X3Y9

. . .
X3Y1

. . . . . . . . . . . . . . . X4Y14 X0Y14Spartan-3 Generation FPGA User Guide . . . UG331 (v1.5) January 21, 2009 . . . X4Y13 X0Y13 . . . . . . X4Y12 X0Y12 . . . . . . X4Y11 X0Y11 . . . . . . . . . . . . . . . . . .
X0Y1 X1Y1 X2Y1 X3Y1 X4Y1

X0Y0

X1Y0

X2Y0

X3Y0

X0Y0

X1Y0

X2Y0

X3Y0

X4Y0

Figura 8: Distribucin de mdulos DSP48A en el dispositivo XC3SD1800A, en la que se


ug431_ch1_01_110207

Notes: 1. Gray positions are populated with DSP48As. 2. Clear positions do not contain DSP48As. DSP48A carry chains are also broken in these positions. There are continuous carry chains from X0Y0 to X0Y9, and then from X0Y12 to X0Y21 and from X3Y12 to X3Y21.

Figura 9: Distribucin de mdulos DSP48A en el dispositivo XC3SD3400A, en la que se


ug431_ch1_02_110207

Notes: 1. Gray positions are populated with DSP48As. 2. Clear positions do not contain DSP48As. DSP48A carry chains are also broken in these positions. There are continuous carry chains from X0Y0 to X0Y11, and then from X0Y14 to X0Y25 and from X4Y0 to X4Y11 and from X4Y14 to X4Y25.

Figure 1-1:

DSP48A Layout for the XC3SD1800A FPGA

Figure 1-2:

DSP48A Layout for the XC3SD3400A FPGA

puede apreciar que estn distribuidos en 4 columnas

puede apreciar que estn distribuidos en 5 columnas

En la gura 10 puede verse en detalle la ubicacin de los distintos mdulos (DSP48A, BRAM, DCM y CLBs) dentro de una FPGA de la Familia Spartan 3A-DSP. Cmo es lgico, el DSP48A esta ubicado en un lugar estratgico rodeado de CLBs y memoria RAM para realizar operaciones de DSP y acceder rpidamente a los puertos de entrada salida (IOBs). En comparacin con la anterior familia Virtex II, se dispone de recursos de interconexin independientes lo cual permite doblar el ancho de banda disponible entre los distintos elementos.
14 www.xilinx.com XtremeDSP DSP48A for Spartan-3A DSP FPGAs UG431 (v1.3) July 15, 2008
XtremeDSP DSP48A for Spartan-3A DSP FPGAs UG431 (v1.3) July 15, 2008 www.xilinx.com 15

En la gura 11 se muestra una foto de la tarjeta de evaluacin ampliamente utilizada Xtreme DSP Starter Platform que incorpora el dispositivo XC3SD1800A. El precio de sta tarjeta es de alrededor

Introduction and Ordering Information

IOBs
CLB

DCM

IOBs
Figura 10: Detalle de la ubicacin de los mdulos DSP48A en una FPGA de Xilinx (esquina superior derecha)
DCM

CLBs

Block RAM / DSP48A Slice

IOBs

DCM

275 euros. Dispone de conectores homologados para conectar diferentes AFE's (analog front end), tales como interfaces de radio, video y sonido, entre otros.

IOBs

IOBs

DSP48A Slice

Block RAM

DS610-1_01_031207

Notes:
1. The XC3SD1800A and XC3SD3400A have two DCMs on both the left and right sides, as well as the two DCMs at the top and bottom of the devices. The two DCMs on the left and right of the chips are in the middle of the outer Block RAM/DSP48A columns of the 4 or 5 columns in the selected device, as shown in the diagram above. 2. A detailed diagram of the DSP48A can be found in UG431: XtremeDSP DSP48A for Spartan-3A DSP FPGAs User Guide.

Figure 1: Spartan-3A DSP Family Architecture

able 2: Available User I/Os and Differential (Diff) I/O Pairs


Device User
309 (60) 309 (60)

CS484 CSG484 Diff


140 (78) 140 (78)

FG676 FGG676 User


519 (110) 469 (60)

Diff
227 (131) 213 (117)

XC3SD1800A

XC3SD3400A

otes:
The number shown in bold indicates the maximum number of I/O and input-only pins. The number shown in (italics) indicates the number of input-only pins. The differential (Diff) input-only pin count includes both differential pairs on input-only pins and differential pairs on I/O pins within I/O banks that are restricted to differential inputs.

S610-1 (v2.1) June 2, 2008 www.xilinx.com 5 roduct Specification Figura 11: Tarjeta de desarrollo que incorpora una Spartan-3A-DSP XC3SD1800A

2.

Arquitectura interna del DSP48A


Cada DSP48A tiene un pre-sumador, que acepta a su entrada 18 bits en complemento a dos, y

genera a la salida resultados de 18 bits tambin en complemento a dos. A continuacin del pre-sumador, se encuentra el multiplicador con dos entradas de complemento a dos de 18 bits, que genera a su salida resultados de 36 bits en complemento a dos, y que extendiendo el signo se convierte en 48 bits. Seguido del multiplicador, se encuentra otro sumador que opera en 48 bits complemento a dos. A continuacin se destacan las caractersticas ms importantes del mdulo DSP48A:

Multiplicador dedicado de 18x18 bits con salida de 36 bits extendiendo el signo a 48. Arquitectura pipeline para funcionar por encima de los 250 Mhz. Acumulador de 48 bits con salida registrada para realimentacin del mismo. Integracin de multiplicador y sumador para rapidez en operaciones. Pre-sumador de 18 bits para implementacin eciente de ltros simtricos. Posibilidad de conectar mdulos en cascada para mltiples operaciones.

2.1.

Lista de puertos
R

Chapter la gura 12 se muestran los componentes internos del mdulo DSP48A. En la tabla 2 se explican 1: XtremeDSP Design Considerations En
cada uno de los puertos del DSP48A y en la tabla 3 se detalla el registro de conguracin OPMODE.

BCOUT D:A:B Concatenated D REG D


18 48

CARRYOUT

PCOUT

Carry Cascade

Pre-Adder
B0 REG +/-

48

B1 REG
18 18

B
18

M REG

18

A0 REG A
18

A1 REG

18

X
36

Post-Adder/ Subtracter
48

P REG +/-

+
48 48

C REG C
48

Dedicated C-Port

Z
0

48

48

opmode[6] BCIN

opmode[4] PCIN

opmode[5] CARRYIN

opmode[1:0] opmode[3:2] opmode[7]


UG431_c1_03_032207

Figure 1-5: Notes:


1. 2. 3. 4.

A DSP48A Slice

Figura 12: Slice del DSP48A

The 18-bit A, B, and D bus are concatenated in the following order: D[11:0], A[17:0], B[17:0]. The X and Z multiplexers are 48-bit designs. Selecting any of the 36-bit inputs provides a 48-bit sign-extended output. 7 The multiplier outputs a 36-bit result. The multiply-accumulate path for P is through the Z multiplexer. The P feedback through the X multiplexer enables accumulation of P cascade when the multiplier is not used.

Nombre Direccin Tamao Funcin Puertos de datos


A IN 18 Entrada al multiplicador, pos-sumador/restador, se congura con OPMODE[3:0] B IN 18 Entrada MODE[4] C D Carry IN P Carry OUT IN IN IN OUT OUT 48 18 1 48 1 Entrada al pos-sumador/restador Entrada al pre-sumador/restador Entrada de carry externo hacia el pos-sumador/restador Salida de datos primaria Salida de carry del pos-sumador/restador al multiplicador, pre-sumador/restador, pos-

sumador/restador, se congura con OPMODE[1:0] y OP-

Puertos de control
CLK OPMODE IN IN

1 8

Entrada de reloj Entrada de control para seleccionar la operacin aritmtica

Puertos en cascada
PCIN BCIN IN IN

48 18

Entrada en cascada conectada al pos-sumador/restador Entrada alternativa a B, conectada al pre-sumador/restador, multiplicador, pos-sumador/restador

PCOUT BCOUT

OUT OUT

48 18

Salida en cascada del puerto P, al PCIN de otro DSP48A Salida en cascada del puerto B, al B/BCIN de otro DSP48A

Puertos de Reset y Habilitacin


RST{x} CE{x} IN IN 1 1

Reset de registros A, B, C, D, M, P, carry-in y OPmode Habilitacin de reg. A, B, C, D, M, P, carry-in y OPmode

Tabla 2: Lista de puertos disponibles del DSP48A

Nombre
OPMODE[1:0]

Funcin
Multiplexor X (entrada al pos-sumador/restador) 0: ceros (deshabilitacin del pos-sumador/restador) 1: salida del multiplicador 2: seal P (acumulador) 3: seales D, B, A concatenadas Multiplexor Z (entrada al pos-sumador/restador) 0: ceros (deshabilitacin del pos-sumador/restador, propagacin del multiplicador) 1: seal PCIN 2: seal P (acumulador) 3: entrada C Uso del pre-sumador/restador

OPMODE[3:2]

OPMODE[4]

0: propagar la entrada directamente al multiplicador 1: sumar o restar B y D; aplicar el resultado al multiplicador.

OPMODE[5]

Forzado del carry-in Conguracin del pre-sumador/restador

OPMODE[6]

0: acta como sumador 1: acta como restador Conguracin del pos-sumador/restador

OPMODE[7]

0: acta como sumador 1: acta como restador

Tabla 3: Descripcin del registro de conguracin OPMODE 8

A travs de los atributos del DSP48A es posible congurar el registro de las entradas, resultados de operaciones internas o salidas. Como puede verse en la gura 12, los registros disponibles son: A0REG, A1REG, B0REG, B1REG, CREG, DREG, MREG, PREG y CARRYINREG.

2.2.

Modos de operacin

El mdulo DSP48A puede dividirse en tres bloques bsicos:

pre-sumador/restador multiplicador pos-sumador/restador

De acuerdo a la gura 6 que muestra el modelo simplicado, podemos plantear la ecuacin 1 que describe el funcionamiento genrico. Para una descripcin ms detallada de los modos de funcionamiento consultar la referencia del fabricante [1].

P = C (A (D B) + CARRY IN )

(1)

A partir de sta ecuacin, se derivan muchas otras. En la tabla 4 se describen los modos ms importantes de funcionamiento.

Modo
Multiplicador Pre-sumador/Multiplicador Pre-sumador/Sumador en cascada Pre-sumador/Multiplicador/Sumador en cascada Pre-sumador/Multiplicador/Sumador realimentado Sumador de 48 bits con C Pre-sumador/Multiplicador/Sumador con C Pre-sumador/Sumador de 48 bits

Ecuacin
(A B + CARRY IN ) (A (D B) + CARRY IN ) P CIN D : A : (D B) + CARRY IN P CIN (A (D B) + CARRY IN ) P (A (D B) + CARRY IN ) C D : A : B + CARRY IN C (A (D B) + CARRY IN ) C D : A : (D B) + CARRY IN

Tabla 4: Principales modos de funcionamiento del DSP48A

3.

Instanciacin del mdulo DSP48A


Cada DSP48A puede entenderse como un bloque con puertos de entrada de datos, puertos de

conguracin y puertos con salida de datos. La primitiva de ste componentes es la mostrada en la gura 13. Para hacer uso del DSP48A es necesario instanciar el componente en el diseo. La instanciacin es una instruccin concurrente disponible en VHDL para reutilizar entidades de diseo ya denidas e interconectarlas con nuestro diseo. A continuacin puede verse el cdigo VHDL necesario para instanciar el componente, asignar los puertos de entrada-salida y congurar ciertos bits para denir su modo de funcionamiento.

Chapter 1: XtremeDSP Design Considerations

DSP48A Slice Primitive


Figure 1-3 shows the DSP48A slice primitive.
18 18 18 48 18 48 48

A[17:0] B[17:0] D[17:0] C[47:0] CLK CARRYIN

BCOUT[17:0] PCOUT[47:0] P[47:0]

CARRYOUT

OPMODE[7:0] RSTA RSTB RSTM RSTP DSP48A RSTC RSTD RSTCARRYIN RSTOPMODE CEA CEB CEM CEP CEC CED CECARRYIN CEOPMODE

48

PCIN[47:0]
UG431_c1_01_032007

Figure 1-3:

DSP48A Slice Primitive

Table 1-2 lists the available ports in the DSP48A slice primitive. DSP48A Figura 13: Primitiva del mdulo Table 1-2: DSP48A Slice Port List and Definitions Size Function

Signal Name Direction

1 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

Data Ports

DSP48A_inst : DSP48A 18-bit data input to multiplier, pre-adder/subtracter and, perhaps, a post18 generic map Input ( adder/subtracter depending on the value of OPMODE[4]. It should also be A0REG => 1 , Enable=1/d i s a b l e=0 f i r s t st age A input p i p e l i n e r e g i s t e r noted that the DSP48A UNISIM component uses this input when cascading A1REG => 1 , Enable=1/d i s a b l e=0 second stage A input p i p e l i n e r e g i s t e r the BCOUT from an adjacent DSP48A. The tools will then translate BCOUT B0REG => 1 , Enable=1/d i s a b l e=0 f i r s t st age B input p i p e l i n e r e g i s t e r cascade to the BCIN input and set the B_INPUT attribute for B1REG => 1 , Enable=1/d i s a b l e=0 second stage A input p i p e l i n e r e g i s t e r implementation. CARRYINREG => 1 , Enable=1/d i s a b l e=0 f i r s t st age A input p i p e l i n e r e g i s t e r CARRYINSELREG => "CARRYIN" , Specify carry in source , "CARRYIN" or "OPMODE5" CREG => 1 , Enable=1/d i s a b l e=0 C input p i p e l i n e r e g i s t e r DREG => 1 , Enable=1/d i s a b l e=0 D pre adder input p i p e l i n e r e g i s t e r MREG => 1 , Enable=1/d i s a b l e=0 M p i p e l i n e r e g i s t e r OPMODEREG => 1 , Enable=1/d i s a b l e=0 OPMODE DSP48A for Spartan-3A DSP FPGAs 16 www.xilinx.com XtremeDSP input p i p e l i n e r e g i s t e r PREG => 1 , Enable=1/d i s a b l e=0 P output p i p eUG431 (v1.3) i July 15, 2008 line reg ster RSTTYPE => "SYNC" ) Specify r e s e t type , "SYNC" or "ASYNC" port map ( BCOUT => BCOUT, 18 b i t B port cascade output CARRYOUT => CARRYOUT, 1 b i t carry output P => P , 48 b i t output PCOUT => PCOUT, 48 b i t cascade output A => A, 18 b i t A data input B => B, 18 b i t B data input C => C, 48 b i t C data input CARRYIN => CARRYIN, 1 b i t carry input s i g n a l CEA => CEA, 1 b i t a c t i v e high c l o c k enable input f o r A input r e g i s t e r s CEB => CEB, 1 b i t a c t i v e high c l o c k enable input f o r B input r e g i s t e r s CEC => CEC, 1 b i t a c t i v e high c l o c k enable input f o r C input r e g i s t e r s CECARRYIN => CECARRYIN, 1 b i t a c t i v e high c l o c k enable input f o r CARRYIN r e g i s t e r s CED => CED, 1 b i t a c t i v e high c l o c k enable input f o r D input r e g i s t e r s CEM => CEM, 1 b i t a c t i v e high c l o c k enable input f o r m u l t i p l i e r r e g i s t e r s CECTRL => CECTRL, 1 b i t a c t i v e high c l o c k enable input f o r OPMODE and carry r e g i s t e r s CEM => CEM, 1 b i t a c t i v e high c l o c k enable input f o r m u l t i p l i e r r e g i s t e r s CEOPMODE => CEOPMODE, 1 b i t a c t i v e high c l o c k enable input f o r OPMODE r e g i s t e r s CEP => CEP, 1 b i t a c t i v e high c l o c k enable input f o r P output r e g i s t e r s CLK => CLK, Clock input D => D, 18 b i t B pre adder data input OPMODE => OPMODE, 8 b i t operation mode input PCIN => PCIN , 48 b i t P cascade input RSTA => RSTA, 1 b i t r e s e t input f o r A input p i p e l i n e r e g i s t e r s RSTB => RSTB, 1 b i t r e s e t input f o r B input p i p e l i n e r e g i s t e r s RSTC => RSTC, 1 b i t r e s e t input f o r C input p i p e l i n e r e g i s t e r s RSTCARRYIN => RSTCARRYIN, 1 b i t r e s e t input f o r CARRYIN input p i p e l i n e r e g i s t e r s RSTD => RSTD, 1 b i t r e s e t input f o r D input p i p e l i n e r e g i s t e r s RSTM => RSTM, 1 b i t r e s e t input f o r M p i p e l i n e r e g i s t e r s RSTOPMODE => RSTOPMODE, 1 b i t r e s e t input f o r OPMODE input p i p e l i n e r e g i s t e r s RSTP => RSTP 1 b i t r e s e t input f o r P p i p e l i n e r e g i s t e r s ) ;
B

A Xilinx HDL Language Template , version 9.2 i or post adder/subtracter depending on Input 18 18-bit data input to multiplier the value of OPMODE[3:0].

DSP48A: DSP Function Block Spartan 3A DSP

10

Forming Larger Multipliers

CARRYIN

4.

Aplicaciones

OPMODE[5] D Q

Carry Input (CIN) to Post-Adder/Subtracter

RSTCARRYIN CE A continuacin se va explicar una de las partes ms importantes del documento, en la que se

muestran las aplicaciones directas del DSP48A.


Figure 1-13:

CLK
RST
UG431_c1_12_011007

Carry Input Logic Feeding the Post-Adder/Subtracter

4.1.

input CARRYIN (CARRYINSEL is equal to 0) is driven from the carry-out of the upstream DSP48A block. The second input OPMODE[5] can be driven from general logic. This option muchos bits; es a carry function based on user problema A menudo es necesario disponer de multiplicadores deallows implementation ofposible resolver este logic, or from implementations residing entirely inside DSP48A blocks. It can be optionally registered to match the pipeline delay of continuacin sumando cada una dividiendo la multiplicacin en varias multiplicaciones pequeas y a the MREG when used. This register delay is controlled by the CARRYINREG configuration bit.

Figure 1-13 bits Formacin de multiplicadores de elevados shows two inputs, selected by the CARRYINSEL programming bit. The first

de los trminos que se obtienen. Recordando el algoritmo bsico que se ensea a los alumnos de primaria (ver gura 14), podemos aplicar ste mismo principio a nmeros ms grandes realizando las

Forming Larger Multipliers

multiplicaciones bsicas con el multiplicador de 18x18 bits del DSP48A para conseguir un multiplicador de 35x35 bits (gura 15).

Figure 1-14 illustrates the formation of a 35 x 35-bit multiplication from smaller 18 x 18-bit multipliers. The notation 0,B[16:0] denotes B has a leading zero followed by 17 bits, forming a positive two's complement number.

AU = A[34:17] BU = B[34:17]

AL = 0,A[16:0] BL = 0,B[16:0]

123 456
offset 1 pos. offset 2 pos.

Sign Extend 36 Bits of '0'

BL * AL = 34 bits [33:17] [16:0]


17-Bit Offset

738 + 615492- 56088

Sign Extend 18 Bits of A[34] Sign Extend 18 Bits of B[34]

BL * AU = 35 bits [34:17] [16:0] BU * AL = 35 bits [34:17] [16:0]

[35:18] P[69:52]

BU * AU = 36 bits [17:0] P[51:34] P[33:17]

34-Bit Offset

P[16:0]
UG431_c1_13_112706

Figura 14: Algoritmo bsico para mutiplicar nmeros decimales


Figure 1-14:

Figura 15: Multiplicador de 35x35 bits a partir


When separating two's complement numbers into two parts,del the most-significant part de multiplicadores de 18x18 bits only DSP48A carries the original sign. The least-significant part must have a forced zero in the sign position meaning they are positive operands. While it seems logical to separate a positive number into the sum of two positive numbers, it can be counter intuitive to separate a negative number into a negative most-significant part and a positive least-significant part.

35x35-Bit Multiplication from 18x18-bit Multipliers

Puede verse que para conseguir el resultado de 70 bits, primero se multiplica la parte baja de ambos nmeros (AL

BL ).

A continuacin se obtienen los trminos cruzados (AL

XtremeDSP DSP48A for Spartan-3A DSP FPGAs UG431 (v1.3) July 15, 2008

www.xilinx.com

los desplaza 17 bits a la izquierda. Luego se obtiene el ltimo termino

BU y AU BL ) y se (AU BU ) desplazado 34 bits.

31

Finalmente se sman todos los productos obtenidos dando el resultado esperado. En la gura 16 se muestra la implementacin propuesta de un multiplicador de 35x35 bits con estructura pipeline de 6 etapas, en la cual se ingresan nuevos operandos y se obtienen nuevos resultados en cada ciclo de reloj. En la misma puede apreciarse que es necesario introducir registros en las etapas de entrada y salida para alinear los datos y que las operaciones se realicen correctamente.

11

Slice 4 A[34:17]

Z -3
18 48 48 48

P[69:34]

C port Slice 3 0,A[16:0] B[34:17]


18 48 18

48

Right wire shift by 17 bits in fabric 48

P[33:17]

C port Slice 2 A[34:17]


18 48

48 48

C port Slice 1 0,A[16:0] 0,B[16:0]


18 48 18

48

Right wire shift by 17 bits in fabric

Z -3
48

P[16:0]

C port zero

Figura 16: Implementacin de multiplicador de 35x35 bits con estructura pipeline

4.2.

Multiplicacin de nmeros complejos

La multiplicacin de nmeros complejos es una de las operaciones ms importantes que se pueden realizar con FPGAs. Como es sabido, para realizar esta operacin, los nmeros complejos, estos deben estar en la forma rectangular, debiendo multiplicar cada una de sus componentes entre s. En las ecuaciones 2 y 3 se muestran cada una de estas componentes en la ecuacin resultante. Dicha operacin requiere realizar cuatro multiplicaciones y dos sumas/restas.

a = a.real + a.imag i b = b.real + b.imag i p = a b = p.real + p.imag i p.real = a.real b.real a.imag b.imag p.imag = a.real b.imag + a.imag b.real

(2)

(3)

En la gura 17 puede verse las ecuaciones 2 y 3 propuestas de manera grca mostrando la relacin entre los distintos operandos, las operaciones a realizar y el orden en que deben llevarse a cabo las mismas. Para entender como debe realizarse sta operacin a una FPGA, puede verse la implementacin propuesta en la gura 18 que muestra las operaciones a realizar en cada uno de los slices del mdulo DSP48A. En dicha gura se muestra una estructura pipeline de 4 etapas, en la cual es posible introducir nuevos operandos y extraer nuevos resultados en cada ciclo de reloj.

12

real imag
b

real imag

X X X X

real imag

Figura 17: Algoritmo bsico para multiplicar nmeros complejos


R

DSP48A Slice Functional Use Models

Slice 4
A_imag 18 B_imag 18

The two input registers to the left align operands with the first output register below and avoid fabric. The benefit is increased performance and lower power.

_
48 48

P_real

Slice 3
A_real 18 B_real 18

48

+
48

Slice 2
A_imag 18 B_real 18

+
48

48

P_imag

Slice 1
A_real 18 B_imag 18 Zero Sign Extended from 36 Bits to 48 Bits

48

48

ug431_c1_22_112706

Figure 1-21:
(versin con 4 multiplicadores)

Pipelined, Complex, 18 x 18 Multiply

Figura 18: Implementacin de multiplicador de nmeros complejos con estructura pipeline de 4 etapas

Note: The real and the imaginary computations are functionally similar using different input data. The real output subtracts the multiplied terms, and the imaginary output adds the multiplied terms.

Fully Pipelined, Complex, 18 x 18 MACC Use Model


The differences between complex multiply and complex MACC implementations using 13 several DSP48A slices is illustrated in the next set of equations. As shown, the addition and subtraction of the terms only occur after the desired number of MACC operations. For N Cycles:

a.img

pcout

b.real b.img

pcin m p p.real

En el caso en que sea necesario ahorrar recursos, puede implementarse la versin con 3 multiplicadores que hace uso del pre-sumador. Factoreando las expresiones 2 c 3 se puede obtener un trmino y comn que puede ser calculado con un slo multiplicador (vase las ecuaciones 4 y 5). En la gura 19 m p puede verse implementada la versin con 3 multiplicadores y estructura pipeline de 6 etapas que es capaz de trabajar hasta 250 Mhz y sacar un nuevo resultado en cada ciclo de reloj. ug431_ch2_08_040907

p.img

Figure 2-8:

Three Multiplier Complex Version


(4)

This implementation suffers from the fact that the shared term generated by the upper DSP48A is required to be routed the C-port of the lower DSP48A rather than using the to PCIN port. Also, the MREG is not used in the upper DSP48A. The lack of pipelining reduces the speed of the three multiplier complex version using the DSP48A from 250 MHz to something greater than 200 MHz. If this performance is not acceptable, a fully p.img = (a.real a.img) b.img +(b.real + b.img) a.img pipelined version can be implemented as in Figure 2-9.

p.real = (a.real a.img) b.img +(b.real b.img) a.real

(5)

a.real a.img m p b.real b.img c


z -2 z -2 z -2

p.real m c p.img p

z -2

m
Figure 2-9: Fully Pipelined Version

p
ug431_ch2_09_040907

Figura 19: Implementacin de multiplicador de nmeros complejos con estructura pipeline de 6 etapas (versin con presumadores y 3 multiplicadores)

Note that the input setup time to the pre-adder without using input registers is less than 2 ns. In many cases, this setup time is sufficiently low to meet a 250 MHz clock rate without using input registers, which gives some flexibility in pipelining complex circuits that use the pre-adder.

4.3.

Circular barrel shifter

Un barrel shifter es un circuito digital que permite realizar operaciones de desplazamiento de tantos bits como se quieran en un slo ciclo de reloj. Una de las aplicaciones donde ms se utiliza, es en las operaciones de coma otante, donde los nmeros deben estar alineados antes de realizar las sumas o restas. La implementacin ms comn suele ser realizada mediante una secuencia de multiplexores (ver gura 20). En la tabla 5 puede verse la tabla de verdad, en la que se muestra la relacin entre las

www.xilinx.com entradas y las salidas del circuito propuesto. Como XtremeDSP DSP48A tabla, nicamente se implementa puede verse en la for Spartan-3A DSP FPGAs
el desplazamiento a izquierdas.

UG431 (v1.3) July 15, 2008

IN
I3
D

SEL
I1 I0
A

OUT
O3
D C B A

I2
C

S1 0 0 1 1

S0 0 1 0 1

O2
C B A

O1
B A

O0
A

0 0

0 0 0

Tabla 5: Tabla de verdad del barrel-shifter

14

I0 I1 I2 I3 0

0 0 1 0 0 1 O0 O1 O2 O3

S(0)

S(1)

Figura 20: Implementacin de un barrel-shifter basado en multiplexores

El circuito propuesto basado en multiplexores consume muchos recursos en una FPGA; es por ello que los diseadores de Xilinx propusieron en su da realizar un barrel-shifter basado en multiplicador utilizando un mdulo DSP48A que rotaba a izquierdas en un solo ciclo de reloj. Pronto surgi la necesidad de rotar a derechas, y adems, que los bits que salgan por un extremo pudiesen entrar por el contrario; le llamaron circular barrel-shifter y su implementacin puede verse en la gura 21. Para entender mejor el funcionamiento de ste desplazador circular, puede verse la gura 22 en la que se explica paso a paso su modo de funcionamiento. En un primer paso se coloca el nmero que se quiere desplazar, que en nuestro caso es el junto con el nmero de bits que se quiere desplazar (n a izquierdas  13 1 bits el dato introducido en

0x8002

A y lo almacenar en el registro PREG1 (0x8002000).

= 13). En el slice inferior de la gura 21 se rotar

En la siguiente etapa, el dato del registro PREG1 es siempre rotado a derechas 17 posiciones (mediante cableado) para no perder los bits ms signicativos (los que estn por encima del bit 17) y as dar como resultado

0x0400.
n bits el dato introducido dando como
Para nalizar el proceso de rotacin circular, se suma el nmero previamente

De manera paralela, el slice 2 (gura 21) rotar a izquierdas resultado deseado, estn

0x10004000.

rotado del slice 2 junto con el desplazado 17 bits mediante cableado dando como resultado el nmero

0x4400. En la gura 22 se puede observar que el resultado anterior es correcto ya que los bits desplazados 13 posiciones tal como indica n.

La implementacin propuesta est basada en una estructura pipeline de 4 etapas, que permite introducir nuevos datos y extraer resultados en cada ciclo de reloj.

Slice 2
A[17:0] 18

+
48 48 Right wire shift by 17 bits 48

AR[17:0] PREG2 = right shifted by 17 PREG1+ n bit left shifted A[17:0]


Note: The 17-bit shift must be done in fabric, as noted in Figure 1-18.

Slice 1
A[0,17:1] 18 2n 18 Zero

+
48 PREG1 = [000..., 000..., 12 36 18 n + 1 zeros zeros A17:1, ...000] 17-bit n A zeros

Figura 21: Implementacin de un circular barrel-shifter con el mdulo DSP48A

15

hexa
bit 17 bit 17 bit 0

binary
bit 0

A[17:0] PREG1 = A[0,17:1]*2n


(n=13)

08002 8002000 000400 10004000 10004400

001000000000000010

PREG1 * 2-17 wire shift" A[17:0] * 2n


(n=13)

PREG1 * 2-17 + A[17:0]*2n


(n=13)

000100010000000000

Figura 22: Ejemplo de implementacin del circular barrel-shifter con el mdulo DSP48A

4.4.

Filtros FIR

La aplicacin ms importante del DSP48A es el diseo de ltros, ya que se utiliza ampliamente en sectores de comunicaciones almbricas/inalambricas, procesamiento de imgenes, vdeo y sonido, entre otros.

4.4.1. Filtros FIR bsico


En la ecuacin 6 se dene el ltro FIR bsico mediante su expresin matemtica. Los trminos de la ecuacin denen las muestras de entrada (x), las muestras de salida (y ) y sus coecientes (h). El valor de

corresponde con un instante de tiempo de tiempo de las muestras de entrada y salida.

k=N 1

y(n) =
k=0

h(k)x(n k)

(6)

Los principales componentes para implementar un ltro FIR son: sumadores, multiplicadores, elementos de almacenamiento y retardo. El mdulo DSP48A es ideal para realizar este tipo de clculos, ya que dispone de todos los elementos anteriormente descritos. Cada slice realiza la multiplicacin de la muestra por el coeciente correspondiente. Las salidas de los multiplicadores son sumados en forma de cascada (ver gura 23). El elemento

Z 1

representa un

retardo. Las muestras retardadas son cableadas a una de las entradas de los multiplicadores. Los coecientes (h(0) ,h(1) ,...,h(N 1) ) obtenidos de memorias RAM, ROM o registros, son cableados a las otras entradas de los multiplicadores. Finalmente la salida por las muestras en los instantes debidos.

Y(n)

es la suma de los coecientes multiplicados

16

FIR Filters
through individual ROMs, RAMs, registers, or constants. Y(n) is merely the summation of a set of input samples, and in time, multiplied by their respective coefficients. through individual ROMs, RAMs, registers, or constants. Y(n) is merely the summation of a set of input samples, and in time, multiplied by their respective coefficients.
Z-1 Z-1 Z-1 Z-1

x(n)

Z-1

x(n)
h(0)

Z-1

Z-1

Z-1

Z-1

Z-1

h(1)

h(2)

h(3)

h(4)

h(N-1)

h(0)

h(1)

h(2)

h(3)

h(4)

h(N-1)
y(n)

y(n)

ug431_c1_14_112706

+
ug431_c1_14_112706

Figure 1-15: Conventional Tapped Delay Line FIR Filter

Figure Conventional Tapped Delay Multichannel FIR Filters 1-15: Figura 23: Filtro FIR bsicoLine FIR Filter

4.4.2.

baseband signalcommon example of a multichannel filter is a radio receiver digital down converter. A is applied to a matched low-pass filter M(z) to reduce the data rate from the input sample rate to the bit rate. The resulting in-phase 1-16 shows the block diagram. A digitized Equation 1-5 shows the equation, and Figure and quadrature components are each processed un the same filter radiotherefore,como be processed byto single, the24 en el from Un ejemplo puede basebandreceptor applied to a matched low-pass filter M(z) a la gura data rate que ser by signal is de and, digital could el mostrado en reduce multichannella seal en cuadratura the bit rate.un DDS1 y posteriormente se le aplica un ltro filter running at rate the sample rate. the input sampletwiceto mediante The resulting in-phase and quadrature components primero se demodula are each processed= optimizacin podra ser utilizar un mismo ltro para ambos processed by x(n) by the same filter and, therefore, could beEquation 1-5 a single, paso bajo a ambos canales. Una posible xI(n) + jxQ(n) multichannel filter running at twice the sample rate.
de datos, y en los que se requiere aplicar el mismo ltrado en cada uno de estos. canales trabajando al doble de frecuencia, con lo que se ahorran recursos hardware.

Los ltros multicanal son ampliamente utilizados en sistemas donde existen varios ujos continuos

Multichannel filters are used to filter multiple data streams of input signals. The channels Multichannel FIR Filters can either use the same set of coefficients or different coefficients. Filtros FIR Multichannel filters are used to filter multiple data streams of input signals. The channels multicanal A common example of a multichannel filter is a radio receiver digital down converter. can either use the same Figure 1-16 shows the block coefficients. Equation 1-5 shows the equation, andset of coefficients or differentdiagram. A digitized

x(n) = xI(n) + jxQ(n)

Equation 1-5
I

v(n)

xl(n)

M(z)

v(n)

xQ(n)

xl(n)

M(z)

M(z) Q M(z)

xQ(n)

Direct Digital Synthesizer (DDS)


ug431_c1_15_112706

Figure 1-16:

Direct Digital Synthesizer (DDS) Software-Defined Radio Digital Down

Converter
ug431_c1_15_112706

Figure 1-16: Software-Defined Radio Digital Down Converter video stream. Typical video components are red, green, and blue (RGB) or luma, chroma red, and chroma blue (YCrCb). The different video components can have the same Some video applications use multi-channel implementations for multiple components of a coefficient sets or different Typical video for each channel by green, changing the 4.4.3. Filtros FIR video stream.coefficient sets components are red,simply and blue (RGB) or luma, chroma simtricos coefficient ROM structure. red, and chroma blue (YCrCb). The different video components can have the same coefficient sets or different coefficient sets for each channel by simply changing the El mdulo DSP48A incluye un pre-sumador antes del multiplicador que es ampliamente utilizado coefficient ROM structure.
en ltros simtricos, ya que reduce signicativamente la potencia consumida, aumenta la densidad y la complejidad de los diseos. Un ltro simtrico se caracteriza porque los coecientes del mismo son simtricos. Por ejemplo un ltro simtrico que contiene un nmero par de coecientes (ver gura 25) tendra unos coecientes de la siguiente forma c0 , c1 , c2 , c1 , c0 ]. En XtremeDSP DSP48A for Spartan-3A [DSP FPGAs, c2www.xilinx.com el caso de un ltro simtrico que contiene un nmero 33 impar 2008 UG431 (v1.3) July 15, de coecientes (ver gura 26) tendra unos coecientes de la siguiente forma [ c0 , c1 , c2 , c3 , c2 ,

FiguraSome video applications use multi-channel implementations for multiple components of a 24: Ejemplo de un receptor de radio en el que se puede aplicar un ltro FIR multicanal

c1 , c0 ]. Ambos tipos Spartan-3Apuede ser ecientemente implementados XtremeDSP DSP48A for de ltros DSP FPGAs www.xilinx.com
UG431 (v1.3) July 15, 2008
Si un ltro de desde

en el DSP48A.

33

hasta

N etapas tiene coecientes simtricos, el nmero de multiplicadores puede ser reducido ( N + 1). Esto es posible debido a que la ecuacin 7 que es la original del ltro se puede 2

Direct Digital Synthesizer, es un mtodo para crear formas de onda peridicas mediante una memoria RAM, un

contador para direccionarla y un oscilador para controlar la frecuencia de incremento de dicho contador.

17

0
rounding constant

rounding constant
R

dout
UG431_ch2_03_040907

Symmetric FIR Filters Figure 2-3: Figure 2-3 illustrates the basic even tap Symmetric FIR filter architecture.
Dly Dly Dly Dly

Basic Even Tap Symmetric FIR Filter Architecture

The odd tap implementation is shown in Figure 2-4.

Dly

Dly

Dly

din

Dly

Dly

Dly

Dly

din

Dly

Dly

Dly

Dly

Coef

Coef

Coef

Coef 0

Coef

Coef

Coef

Coef

0
rounding constant

rounding constant

rounding constant

dout
UG431_ch2_03_040907

ounding constant
Figure 2-4: Basic Odd Tap Symmetric FIR Filter Architecture

dout
ug431_ch2_04_040907

Figure 2-3:

Basic Even Tap Symmetric FIR Filter Architecture

Figura 25:odd tap implementation issimtrico2-4. The Filtro FIR shown in Figure con nmero par de etapas
Dly Dly Dly

Figura 26: the symmetric FIR implementation, the FIR filter nmero Filtro FIR filter simtrico con requires an additional set of For impar de delay memories which transfer data from back to front. etapas

Pipelining the Reverse Delay Cascade


din

Dly

Dly

Dly

Dly

The reverse delay cascade is similar to the forward delay cascade, but pipeline balancing

has a special issue when pipelining the reverse delay cascade. For the forward case, factorear y convertir en la optimizada como la mostrada en la ecuacinpipeline registers to match the pipeline registers inserted into the adder it is 8. easy to add

Coef

Coef

Coef

Coef

cascade. The additional pipeline register can be folded into a block RAM output register, or a SLICE FF can be used with LUTRAM memories or SRLs. These registers are also required for full speed operation. For the reverse cascade, however, a delay must be removed. For

dout = dly[0] c0 + dly[1] c1 + dly[2] c2 + dly[3] c1 + dly[4] c0 0


rounding constant

(7)
49

ounding constant
Figure 2-4:

XtremeDSP DSP48A for Spartan-3A DSP FPGAs UG431 (v1.3) July 15, 2008

www.xilinx.com

dout

dout = (dly[0] + dly[4] ) c0 + (dly[1] + dly[3] ) c1 + dly[2] c2


ug431_ch2_04_040907

(8)

Basic Odd Tap Symmetric FIR Filter Architecture

Para delay memories which transfer data from back to front. la implementacin de los ltros simtricos, se requieren elementos de memoria con retardo adicionales para transferir las muestras desde el nal hasta el comienzo del ltro (vase las guras 25 Pipelining the Reverse Delay Cascade y 26) The reverse delay cascade is similar to the forward delay cascade, but pipeline balancing
has a special issue when pipelining the reverse delay cascade. For the forward case, it is easy to add pipeline registers to match the pipeline registers inserted into the adder cascade. The additional pipeline register can be folded into a block RAM output register, or a SLICE FF can be used with LUTRAM memories or SRLs. These registers are also required for full speed operation. For the reverse cascade, however, a delay must be removed. For

For the symmetric FIR filter implementation, the FIR filter requires an additional set of

5.

Conclusiones

XtremeDSP DSP48A for Spartan-3A DSP FPGAs UG431 (v1.3) July 15, 2008

www.xilinx.com

49

El DSP48A es un mdulo muy potente para la realizacin de diversas operaciones matemticas,

las ms importantes, la suma y la multiplicacin de nmeros. La disponibilidad de ste mdulo permite desarrollar prototipos de muchas aplicaciones donde la frecuencia de trabajo y el ancho de palabra son factores crticos. Sin embargo, aun se sigue trabajando en la optimizacin de este tipo de mdulos para aumentar el rango de dichos parmetros, ofrecer mayor escala de integracin, menor consumo, menor coste y nuevas funcionalidades. Como sucesor del mdulo DSP48A, se encuentra el DSP48A1 perteneciente a la familia Spartan-6 de Xilinx y que est a punto de salir al mercado. Principalmente se le destaca por estar ms optimizado en el clculo de las operaciones y consumir menos potencia.

18

Referencias
[1] XtremeDSP DSP48A for Spartan-3A DSP FPGAs

www.xilinx.com/support/documentation/user_guides/ug431.pdf
[2] Spartan-3A DSP FPGA Family Data Sheet

http://www.xilinx.com/support/documentation/data_sheets/ds610.pdf
[3] Spartan-3A Libraries Guide for HDL Designs

http://toolbox.xilinx.com/docsan/xilinx9/books/docs/s3adl/s3adl.pdf
[4] XtremeDSP for Virtex-4 FPGA

http://www.xilinx.com/bvdocs/userguides/ug073.pdf
[5] Virtex-5 Family Overview

http://www.xilinx.com/support/documentation/data_sheets/ds100.pdf
[6] Spartan-6 Family Overview

http://www.xilinx.com/publications/prod_mktg/Spartan6_Overview.pdf
[7] Virtex-6 Family Overview

http://www.xilinx.com/publications/prod_mktg/Virtex6_Overview.pdf
[8] Evolution of XtremeDSP Features in Xilinx FPGAs Speedway Design Workshop, Silica - Avnet [9] Digikey Distribuidor internacional de componentes electrnicos.

http://www.digikey.es

19