Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo...

56
Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea Implementación de Filtros FIR sobre FPGA Disertante: David M. Caruso Centro de Micro y Nano-Electrónica del Bicentenario INTI-CMNB UTN-FRA

Transcript of Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo...

Page 1: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Implementación de Filtros FIR sobre FPGA

Disertante:David M. CarusoCentro de Micro y Nano-Electrónica del BicentenarioINTI-CMNBUTN-FRA

Page 2: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Temario

Implementación de Filtros FIR sobre FPGA

➔ Introducción a las FPGA

➔ Flujo de diseño con FPGA

➔ Introducción a Síntesis

➔ Topologías e Implementación de filtros FIR

➔ Detalles para la Implementación

Page 3: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

¿Qué es una FPGA?

Introducción a las FPGA

● Son circuitos integrados (re)configurables

● Poseen Lógica combinacional (re)configurables

● Poseen Registros (Flip-Flops) (re)configurables

● Poseen un sistema de interconexión (re)configurable

● Poseen entradas/salidas flexibles y (re)configurables

FPGA: Field Programmable Gate Array

Page 4: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Arquitectura básica de una FPGA

Introducción a las FPGA

Page 5: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Logic Cell

Logic Cell de Xilinx

Introducción a las FPGA

Page 6: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Slice

Slice de Xilinx

Introducción a las FPGA

Page 7: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

DSP Blocks (Primitiva/Macro)

● Son bloques con funciones lógicas listos para usar

● Tienen alta performance● Es posible combinarlos para realizar funciones complejas● Usos:

Contadores Multiplicadores Sumadores MACs Barrel Shifters Etc

Virtex 6 DSP48E1

Introducción a las FPGA

Page 8: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Clock Management

Las señales de clock se rutean en forma separada

Las FPGA poseen Digital Clock Managers (DCMs) que generan y controlan las señales de clock

Cada DCM tiene un PLL y permite sintetizar varias frecuencias

Introducción a las FPGA

Page 9: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

¿Por qué FPGA?

“Fábricas” de hardware Permite la creación de lógica dedicada con mínimas restricciones de diseño

Bloques configurables Contiene miles de unidades básicas programables prefabricadas de distinto tipo

Interconexiones configurables La estructura de interconexión es distribuida y flexible. Es “barato” interconectar

Introducción a las FPGA

Page 10: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

¿Por qué FPGA?

Alto paralelismo Alto throughput sin alto clocking.

Terreno medio entre ASIC y CPLD Compromiso entre complejidad y costo

Bajo costo de diseño Bajo tiempo de desarrollo, fácil prototipado y validación

Amplio espectro de aplicaciones Compite en muchos campos

ASIC y silicio a medida

Digital Signal Processing

Microcontroladores embebidos

Capa física de sistemas de comunicaciones

Reconfigurable Computing

Introducción a las FPGA

Page 11: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Principios de diseño

Jerarquía Divide y conquista

Simplificación del problema

Regularidad Dividir en bloques idénticos

Modularidad Definición robusta de todos los componentes

Permite interfaces sencillas

Flujo de diseño con FPGA

Page 12: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Ciclo básico de desarrollo

EdiciónVHDL, Verilog

AutomatizadorGNU Make

CompiladorGHDL

TestbenchGHDL

Forma de OndaGTKWave

Post-procesoGCC y Perl

Error

Nocumple

Bibliotecasy Cores

Síntesisxst/map/par

Bitstream

FPGA

Ok!

Flujo de diseño con FPGA

Page 13: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Filtro FIR

Introducción a Síntesis

y n=∑k=0

N

h k x n−k

Características:

● No poseen polos en su transferencia

● Su transferencia no puede ser derivada de un filtro analógico

● Son inherentemente estables

● Pueden ser diseñados para tener fase lineal o fase lineal generalizada

● Son de fácil implementación

y n=h0 x nh 1 x n−1h2 x n−2...h N−1 x n−N−1

Convolución discreta

Donde: h(0); h(1) ..; h(N-1) son los coeficientes o “TAPS”

Page 14: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Ejemplo de elaboración Filtro FIR

Introducción a Síntesis

# Low Pass FilterBands=2Taps=7

BandStartType=passRipple=0.7Start=0End=0.28BandEnd

BandStartType=stopAttenuation=20Start=0.4End=0.5BandEnd

Pretenciones

TAPS: {-15;-30;54;127;54;-30;-15}

Q● Windowed Sinc● Moving Average● Parks- McClellan

Elaboración coeficientes

Page 15: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Arquitecturas Generales: Forma Directa

Topologías de filtros FIR

X

Z−1

X

Z−1

X

Z−1

X

Z−1

X

Z−1

X

Z−1

+ + + + +

X

+

h0 h1 h2 h3 h4 h5 h6

x[n]

y[n]

Línea de delay

Multiplicadores

Acumulación

Diseño según: Divide y Conquistarás

Page 16: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Elementos básicos para forma Directa: Delay-IN

Topologías de filtros FIR

Z−1 Z−1 Z−1x[n]

x[n] x[n­1] x[n­2] x[n­N]

Configurable(LONG)

● La entrada rst_i garantiza un estado en el tiempo t=0● La señal ena_i permite realizar el shifteo a un múltiplo de la frecuencia de clk_i.● DLI_BIT: define la resolución de la entrada

Page 17: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Arquitecturas Generales: Forma Transpuesta

Topologías de filtros FIR

X X X X X X Xh1h2h3h4h5h6

x[n]

h0

Z−1+

y[n]Z−1 + Z−1

+ Z−1+ Z−1

+ Z−1+

Multiplicadores

Acumulación& Delay

Agrega un efecto tipo Pipeline. Mejora el timing del filtro.

y 6 =x [0]∗h6x [1]∗h5x [2]∗h4x [3]∗h3x [4 ]∗h2x [5 ]∗h1x [6 ]∗h0

Page 18: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Elementos básicos: Delay-Out

Topologías de filtros FIR

Z−1+

y[n]Z−1

+ Z−1+

x [n]∗h0 x [n]∗h1 x [n]∗h2 x [n]∗hN−1

Page 19: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Listado de topologías a implementar

Topologías de filtros FIR

➔ MAC Paralelo➔ Codificación CSD➔ Optimización por Sub-Expresiones

Todas las topologías presentan 4 versiones: Forma Directa Forma Inversa Forma Directa Optimizada por Simetría Forma Inversa Optimizada por Simetría

Page 20: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

MAC Paralelo Directo

Topologías de filtros FIR

Z−1 Z−1 Z−1 Z−1 Z−1 Z−1

+ + + + + +

x[n]

y[n]

● Implementación sencilla

● Requiere tantos multiplicadores como coeficientes tenga el filtro

● Entrega una muestra a la salida por cada ciclo de clock.

X X X X X X Xh1h2h3h4h5h6 h0

Page 21: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

MAC Paralelo Directo Optimizado por Simetría

Topologías de filtros FIR

Z−1 Z−1 Z−1x[n]

Z−1 Z−1 Z−1

+ + +

y[n]

X X X Xh3h4=h2h5=h1h6=h0

+ ++ +

Page 22: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: Paralelos Directos

Topologías de filtros FIR

La reducción por simetría consigue disminuir la cantidad de multiplicadores por HardwareAumenta el consumo de LUTsAumenta la frecuencia máxima de operación

Page 23: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

MAC Paralelo Inverso

Topologías de filtros FIR

X X X X X X Xh1h2h3h4h5h6

x[n]

h0

Z−1+

y[n]Z−1 + Z−1

+ Z−1+ Z−1

+ Z−1+

Características similares al MAC Paralelo Directo, salvo el pipeline implícito.

Page 24: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

MAC Paralelo Inverso Optimizado por Simetría

Topologías de filtros FIR

X

Z−1

X X X

+

h3h4=h2h5=h1h6=h0

y[n]

Z−1

Z−1 +

+

+

Z−1+

Z−1+ Z−1

x[n]

El mezclado de las señales es simplemente un conexionado

Page 25: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: Paralelos Transpuestos

Topologías de filtros FIR

La reducción por simetría no consigue mejoras significativas, porque el sintetizador ya hizo el trabajo!Se puede ver como el pipeline intrínseco aumenta la frecuencia de operaciónEl consumo de Slices es bajo por que el DSP48 absorbe las MACs. Es mejor que PMACD/SPMACD!

Page 26: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Reducción de multiplicadores

Topologías de filtros FIR

X

Motivos:

● Es un recurso limitado en las FPGA

● Posee una latencia que limita la máxima frecuencia de operación.

● Utilizando LUTs y estados de pipeline se pueden conseguir resultados mejores

Se pretende reducir los multiplicadores a CERO!

Page 27: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Reducción de multiplicadores

Topologías de filtros FIR

>>2

>>4 +

1100 110000

11000000

11110000

X1100 11110000

10100

Bondades de la aritmética binaria

12 x 20 = 240

1100x 10100 0 0 1100 0 1100 11110000

<<2

<<4

Page 28: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Codificación: Canonic Signed Digit

Topologías de filtros FIR

Busca reducir la cantidad de sumadores y desplazamientos => Reduce la cantidad de unos

Para esto requiere:

● Base trinaria: [-1;0;1]● No pueden existir 2 elementos distintos de cero consecutivos

Por ejemplo:

-15 = 1 1 1 1 0 0 0 0 -15 =0 0 0 -1 0 0 0 1 CSD

Se reducen 2 elementos no nulos

donde N: bits de cuantización

Se obtiene: (N+1)/2 elementos distintos de cero como máximo

Page 29: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Ejemplo CSD

Topologías de filtros FIR

h Complemento a 2 Elementos no nulos

-15 1 1 1 1 0 0 0 1 5

-30 1 1 1 0 0 0 1 0 4

54 0 0 1 1 0 1 1 0 4

127 0 1 1 1 1 1 1 1 7

54 0 1 1 0 0 0 0 1 4

-30 1 1 1 0 0 0 1 0 4

-15 1 1 1 1 0 0 0 1 5

Implementación directa(sumadores de 2 ent)

4

3

3

6

3

3

4

Total: 26 Sumadores

Page 30: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Ejemplo CSD

Topologías de filtros FIR

h Complemento a 2 CSD

-15 1 1 1 1 0 0 0 1 0 0 0 -1 0 0 0 1

-30 1 1 1 0 0 0 1 0 0 0 -1 0 0 0 1 0

54 0 0 1 1 0 1 1 0 0 1 0 0 -1 0 -1 0

127 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 -1

54 0 1 1 0 0 0 0 1 0 1 0 0 -1 0 -1 0

-30 1 1 1 0 0 0 1 0 0 0 -1 0 0 0 1 0

-15 1 1 1 1 0 0 0 1 0 0 0 -1 0 0 0 1

Implementación directa(sumadores de 2 ent)

1

1

2

1

2

1

1

Total: 9 Sumadores

Page 31: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

CSD Directo Normal/Optimizado por Simetría

Topologías de filtros FIR

4>> +

xd_r[n]

­xd_r[n]h0= h6

3>>6

>>

+

­xd_r[n­2]

­xd_r[n­2]

xd_r[n­2]

h2= h4

-15 = 0 0 0 -1 0 0 0 1

54= 0 1 0 0 -1 0 -1 0

7>> +

xd_r[n­3]

­xd_r[n­3]h3

127= 1 0 0 0 0 0 0 -1

Multiplicador CSD

Acumulación

x[n]

2>>5

>>

+xd_r[n­1]

xd_r[n­1]

h1= h5

-30 = 0 0 -1 0 0 0 1 0

1>>

y[n]

Delay-IN

Page 32: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: CSD Directo

Topologías de filtros FIR

No hay consumo de DSP48Hay mayor consumo de hardware en generalLas frecuencias de operación son mayoresLa optimización por simetría consigue mejores resultados

El Hardware generado depende demasiado de los valores de los coeficientes. Es difícil comparar con arquitectura MAC Paralelo.

Page 33: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

CSD Inverso Normal/Optimizado por Simetría

Topologías de filtros FIR

4>> +

x[n]

­x[n]h0= h6

3>>6

>>

+

­x[n]

­x[n]

x[n]

h2= h4

-15 = 0 0 0 -1 0 0 0 1

54= 0 1 0 0 -1 0 -1 0

7>> +

x[n]

­x[n]

h3

127= 1 0 0 0 0 0 0 -1

Multiplicador CSD

AcumulaciónDelay

x[n]

2>>5

>>

+x[n]

x[n]

h1= h5

-30 = 0 0 -1 0 0 0 1 0

1>>

y[n]

Page 34: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: CSD Inverso

Topologías de filtros FIR

No hay consumo de DSP48Hay mayor consumo de hardware en generalLa frecuencia de operación siempre es mejor que en los casos directosLa optimización por simetría NO consigue grandes cambios Sintetizador

Page 35: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones Comunes

Topologías de filtros FIR

Busca las operaciones que se repiten y las calcula una sola vez

hk

hq

Operación en común

Reducción

hk

hq

Sub-ExpresiónComún

Cuidado con el timingde las sub-expresiones!

Page 36: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Mecanismo de búsqueda de Sub-Expresiones*

Topologías de filtros FIR

0 0 0 ­1 0 0 0 1

0 0 ­1 0 0 0 1 0

0 1 0 0 ­1 0 ­1 0

1 0 0 0 0 0 0 ­1

0 1 0 0 ­1 0 ­1 0

0 0 ­1 0 0 0 1 0

0 0 0 ­1 0 0 0 1

x2[0]=x1[0] + (x1[­1]<<1)

Por definición la primera expresión común es la señal de entrada. Por lo tanto:

x1[0]=x[0]

Luego de la tabla de coeficientes del filtro en CSD, se buscan los elementos repetidos

x1[0]

x1[­1]

x1[­2]

x1[­3]

x1[­4]

x1[­5]

x1[­6]

* Nota: Subexpression Sharing in Filters Using Canonic Signed Digit Multipliers, R.Hartley,

<< 0<< 1<< 2<< 3<< 4<< 5<< 6<< 7

Desplazamiento temporal

Desplazamiento Espacial

x2

Page 37: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Mecanismo de búsqueda de Sub-Expresiones*

Topologías de filtros FIR

0 0 0 ­2 0 0 0 2

0 0 0 0 0 0 0 0

0 2 0 0 ­1 0 ­1 0

0 0 0 0 0 0 0 ­2

0 1 0 0 ­1 0 0 0

0 0 ­1 0 0 0 1 0

0 0 0 ­1 0 0 0 1

x3[0]=x1[0] – (x1[0] << 4)

Las sub-expresiones conseguidas son reemplazadas en la tabla y se vuelve a buscar otra más

Page 38: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Mecanismo de búsqueda de Sub-Expresiones

Topologías de filtros FIR

0 0 0 ­2 0 0 0 2

0 0 0 0 0 0 0 0

0 2 0 0 ­1 0 ­1 0

0 0 0 0 0 0 0 ­2

0 1 0 0 ­1 0 0 0

0 0 0 0 0 0 3 0

0 0 0 0 0 0 0 3

h

h

h

h

h

h

h

0

1

2

3

4

5

6

Por último se obtiene la tabla con las sub-expresiones. Cada línea representa un coeficiente

El mecanismo simplificó h1

Page 39: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Implementación con Optimización por Sub-Expresiones

Topologías de filtros FIR

x[n]

+

+

Generador desub-expresiones

x1

x1[−1]

x1[0]

x1[0]

−x1[0]

x2

x3

1>>

1>>

x2[0]=x1[0] + (x1[­1]<<1)

x3[0]=x1[0] ­ (x1[0]<<4)

x1[0]=x[0]

Es necesario x1[-1]

Se debe garantizar que x1[0], x2[0] y x3[0] estén sincronizados

Page 40: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones Directo

Topologías de filtros FIR

Generador de Sub-Expresiones

x[n]Línea de Delay*

(x1,x2,x3)

Cálculo coeficientes +

* La linea de Delay es independiente para cada sub-expresión

y[n]

Page 41: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones y por simetría

Topologías de filtros FIR

0 0 0 ­2 0 0 0 2

0 0 0 0 0 0 0 0

0 2 0 0 ­1 0 ­1 0

0 0 0 0 0 0 0 ­2

0 1 0 0 ­1 0 0 0

0 0 0 0 0 0 3 0

0 0 0 0 0 0 0 3

h

h

h

h

h

h

h

0

1

2

3

4

5

6

Las Sub-Expresiones rompen la Simetría!Se necesita otro método

h0≠h6

h1≠h5

h2≠h4

Page 42: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones y por simetría

Topologías de filtros FIR

0 0 0 ­1 0 0 0 1

0 0 ­1 0 0 0 1 0

0 1 0 0 ­1 0 ­1 0

1 0 0 0 0 0 0 ­1

0 1 0 0 ­1 0 ­1 0

0 0 ­1 0 0 0 1 0

0 0 0 ­1 0 0 0 1

Las sub-expresiones deben tomarse en un mismo estado temporal o coeficiente

x1= xx2= x1 – (x1 << 4)

h

h

h

h

h

h

h

0

1

2

3

4

5

6

Page 43: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones y por simetría

Topologías de filtros FIR

0 0 0 0 0 0 0 2

0 0 0 0 0 0 2 0

0 1 0 0 ­1 0 ­1 0

1 0 0 0 0 0 0 ­1

0 1 0 0 ­1 0 ­1 0

0 0 0 0 0 0 2 0

0 0 0 0 0 0 0 2

h

h

h

h

h

h

h

0

1

2

3

4

5

6

Luego se implementa como cualquier otro filtro simétrico

Page 44: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: Sub-Expresiones Directo

Topologías de filtros FIR

Se consiguen pequeñas mejoras en el consumo de hardware respecto a CSD directoLa optimización por simetría sigue dando resultado

Page 45: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Optimización por Sub-Expresiones Inverso

Topologías de filtros FIR

Generador de Sub-Expresiones

x[n]

Línea de DelayAcumulación

(x1,x2,x3)Cálculo coeficientes

y[n]

Sólo tiene una línea de demora!Sólo tiene una línea de demora!

Page 46: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Síntesis en FPGA de los filtros: Sub-Expresiones Inverso

Topologías de filtros FIR

Se consiguen pequeñas mejoras en el consumo de hardware respecto a CSD inversaLa optimización por simetría da una mejora

Page 47: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Concepto de Re-timing

Detalles para la Implementación

Consiste en introducir estados de pipeline en el dispositivo, pero la ubicación de los mismos es controlada por el sintetizador.

FIRx[n] y[n]

x[n]

Z−1 Z−1 Z−1 Z−1

y[n]FIR

Sintetizador

El punto óptimo se consigue cuando se parte al circuito con tantos pipeline hasta que la demora es la del sistema indivisible más lento

Intenta mejorar, de forma automática, el timing de un dispositivo en una FPGA

Page 48: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Pipeline

Z−1 Z−1 Z−1x[n] Configurable

(LONG)

Detalles para la Implementación

Se puede agregar tanto a la entrada como a la salida del filtro

Page 49: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Resultados de la implemenación en CSD y SS Inverso

Consigue una mejora significativa de velocidad, pero a costa de agregar hardware (pipeline) y latencia

Detalles para la Implementación

Page 50: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Sistema de numeración y tamaños de señales

Es necesario que las señales intermedias tengan un tamaño para contener los resultados parciales de los productos

Detalles para la Implementación

AQ16

X

BQ16

CQ32

El doble de Tamaño

Si se usa un sistema de numeración en punto fijo como: 1.X. El resultado queda auto-contenido en la misma representación

AQ1.15

X

BQ1.15

CQ1.15

El mismo tamaño!Pero truncando

Page 51: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Overflow y Ajuste de Salida

Detalles para la Implementación

Se puede usar lógica saturada en los sumadores para evitar el desborde

+

sat8b

24018

255

Introduce Ruido

A veces es necesario ajustar el tamaño de la salida del filtro a un tamaño similar al de la entrada. Se puede redondear o truncar.

Introduce Ruido

+y[n]

Xh0

R/T

Q1.31 Q1.15

DAC

Page 52: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Resumen

Implementación de filtros FIR en FPGA

● Las FPGA son una herramienta muy poderosa para el procesamiento de señales digitales

● La Cuantización de los coeficientes, puede traer problemas

● Las arquitecturas de filtros FIR tipo inversa son las más adecuadas para el trabajo con FPGA

● La técnica de re-timing es útil para aumentar el rendimiento del filtro

● Debe considerarse muy bien los tamaños de las señales intermedias

● La optimización de los multiplicadores tiene grandes beneficios: Reducción del consumo de primitivas/macrosAumento de la frecuencia de operación por reducción de la latencia

Page 53: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Referencias

Implementación de filtros FIR en FPGA

● Desarrollo con FPGAs en GNU/Linux, Ing. S. Tropea, Ing. D. Brengi e Ing. R. Melo, SASE 2011I

● Implementación de DSP en FPGAs, Ing. M. Cervetto, Ing. E. Marchi, SASE 2012

●Subexpression Sharing in Filters Using Canonic Signed Digit Multipliers, R.Hartley, in IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS­11: ANALOG AND DIGITAL SIGNAL PROCESSING,VOL. 43, OCTOBER 1996 , pp 677­688

●FPGA Implementation of High Speed FIR Filters Using Add and Shift Method, S. Mirzaei, A. Hosangadi and R. Kastner, University of California, Santa Barbara, IEEE 2006

Page 54: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

¿Dudas?

¿Consultas?

Page 55: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

INTI - PTM

Av. Gral. Paz 5445 (1650) San MartínBuenos Aires, Argentina(11) 4724-6315{david,salvador}@inti.gob.ar

http://utic.inti.gob.ar/http://fpgalibre.sf.net/

Agosto de 2013

¡Muchas gracias!

Implementación de Filtros FIR en FPGA

Page 56: Implementación de Filtros FIR - sase.com.ar · Title: FPGAA bajo GNU/Linux Author: Rodrigo Melo Created Date: 8/15/2013 1:41:46 PM

Copyright © 2013 INTI, David M. Caruso, Salvador E. Tropea

Licencia de la presentación

http://creativecommons.org/licenses/by­nd/2.5/ar/

Atribución-SinDerivadas 2.5 Argentina

copiar, distribuir, exhibir, y ejecutar la obra

Usted es libre de:Usted es libre de:

Atribución. Usted debe atribuir la obra en la forma especificada por el autor o el licenciante.

Bajo las siguientes condiciones:Bajo las siguientes condiciones:

Sin Obras Derivadas. Usted no puede alterar, transformar o crear sobre esta obra.

Implementación de filtros FIR en FPGA