Filtros IIR en FPGA - sase.com.ar · Filtros IIR en FPGA Disertantes: Marcos Cervetto Ingeniero...

72
Filtros IIR en FPGA Disertantes: Marcos Cervetto Ingeniero Electrónico - UBA Laboratorio de Radiocomunicaciones - INTI Edgardo Marchi Ingeniero Electrónico - UBA Laboratorio de Radiocomunicaciones - INTI

Transcript of Filtros IIR en FPGA - sase.com.ar · Filtros IIR en FPGA Disertantes: Marcos Cervetto Ingeniero...

Filtros IIR en FPGADisertantes:Marcos CervettoIngeniero Electrónico - UBALaboratorio de Radiocomunicaciones - INTIEdgardo MarchiIngeniero Electrónico - UBALaboratorio de Radiocomunicaciones - INTI

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Introducción

Técnicas de diseño de IIR

¿Por qué?

El diseño de filtros analógicos es un tema ampliamente desarrollado y estudiado

Muchos métodos de diseño analógicos tienen fórmulas cerradas relativamente simples

La aplicación de estas fórmulas en forma directa al caso discreto no lleva a fórmulas cerradas simples

¿Por qué?

El diseño de filtros analógicos es un tema ampliamente desarrollado y estudiado

Muchos métodos de diseño analógicos tienen fórmulas cerradas relativamente simples

La aplicación de estas fórmulas en forma directa al caso discreto no lleva a fórmulas cerradas simples

Filtro analógicoFiltro analógico Filtro discretoFiltro discreto

Introducción

Técnicas de diseño de IIR

Indirecto

Método de invarianza al impulso

Transformación bilineal

Aproximación de derivadas

Directo

Diseño por la aproximación de Padé

Diseño por aproximación de mínimos cuadrados.

Introducción

Tipos clásicos de filtros IIR

Butterworth Chebyshev tipo I

Chebyshev tipo II Elíptico

Banda de paso

Plana(Óptimo) Equiripple Plana Equiripple

Banda de transición

Ancha Moderada Moderada Angosta

Banda de rechazo

Plana Plana Equiripple Equiripple

Orden* Alto Medio Medio Bajo

*En general, el orden del filtro para lograr especificación determinada

Introducción

Estructuras básicas

Nos restringimos a sistemas con transferencia:

Racional

Estable

Causal

De coeficientes reales

0

1

( )1

Mk

kkN

kk

k

b zH z

a z

-

=

-

=

=-

å

å0

1

( )1

Mk

kkN

kk

k

b zH z

a z

-

=

-

=

=-

å

å

Introducción

Estructuras básicas

Ejemplo

01 2

1 2

( )1

bH z

a z a z- -=- -

1 2 0[ ] [ 1] [ 2] [ ]y n a y n a y n b x n= - + - +

Introducción

Estructuras básicas

Ejemplo

3[ 1] [ ] [ ]

4y n y n x n+ = +

LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.numeric_std.ALL;

ENTITY iir ISPORT (x_in : IN STD_LOGIC_VECTOR(15 downto 0) ; -- Input y_out : OUT STD_LOGIC_VECTOR(15 downto 0); -- Result clk : IN STD_LOGIC; rst : IN STD_LOGIC );END iir;

ARCHITECTURE fpga OF iir ISSIGNAL x_u, y_u: signed(15 downto 0);BEGIN

PROCESS(clk, rst) -- Use FF for input and recursive part BEGIN if rst = '1' then y_u <= (others => '0'); elsif (clk = '1' and clk'event) then y_u <= x_u + y_u/4 + y_u/2; end if; end process;

x_u <= signed(x_in);y_out <= std_logic_vector(y_u); -- Connect y to output pins

END fpga;

Introducción

Estructuras básicas

1 0

[ ] [ ] [ ]N M

k kk k

y n a y n k b x n k= =

- - = -å å

0

1

( )1

Mk

kkN

kk

k

b zH z

a z

-

=

-

=

=-

å

å

Ecuación en diferencias

Transferencia

Introducción

Estructuras básicas

1 0

[ ] [ ] [ ]N M

k kk k

y n a y n k b x n k= =

- - = -å åForma directa I

Introducción

Estructuras básicas

Forma directa I

Se puede pensar como una sección todo cero (forward filter) seguida de una sección todo polo

No hay posibilidad de “overflow interno” en punto fijo si el resultado es válido. La mayoría de las estructuras IIR no poseen esta propiedad.

Tiene el doble de delays de los que son necesarios

Como todas las formas directas, es sensible a los errores introducidos por la cuantificación de los coeficientes

Es usado para implementaciones de 1er o 2do orden

Introducción

Estructuras básicas

Introducción

Estructuras básicas

Forma directa II ó canónica

Introducción

Estructuras básicas

BOOST ATTENUATION

BOOST:

>> Rango dinámico

ATTENUATION:

<< Rango dinámico

Introducción

Estructuras básicas

Forma directa II ó canónica

Se puede pensar como una sección todo polo (IIR) seguida de una sección todo cero (FIR)

Existe posibilidad de overflow

Es canónico. Tiene la mínima cantidad de delays

Como todas las formas directas, es sensible a los errores introducidos por el redondeo de los coeficientes

Su uso es limitado debido a que necesita acomodar mayor rango dinámico en la sección IIR

Introducción

Estructuras básicas

Formas traspuestasFórmula de ganancia de Mason

Introducción

Estructuras básicas

Recordando DF I

Introducción

Estructuras básicas

Aplicando Mason a DFI

Introducción

Estructuras básicas

Girando obtenemos Forma Directa I Traspuesta

Introducción

Estructuras básicas

Forma Directa II Traspuesta

Primero los ceros y depués los polos

Posee robustez numérica frente a overflow

Es canónico

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Introducción

Cuántización

Al cuantizar, hay que verificar que el filtro siga cumpliendo con las especificaciones

Analizar los efectos de la cuantización en forma general, es sumamente complejo. Hay resultados y principios generales que orientan el diseño

Cuantización

Cuantización de coeficientes

Cuantización aritmética

Introducción

Cuántización

Cuantización aritmética

Factores de interés:

Ancho de palabra

Wrapping / saturación

Truncado / redondeo

Escalado en diferentes etapas

Estabilidad: polos cercanos a la circunferencia unitaria

Introducción

Cuántización

Los polos y los ceros se desplazan de sus posiciones por efecto numérico. La respuesta en frecuencia varía.

Es conveniente analizar la sensibilidad a la cuantización de los coeficientes

0

1

( )1

Mk

kkN

kk

k

b zH z

a z

-

=

-

=

=-

å

å

Volvamos a nuestra querida transferencia

0

1

( )1

Mk

kk

Nk

kk

b zH z

a z

-

=

-

=

=-

å

å

Coeficientes reales

Coeficientes cuantizados

k k ka a a= + D

k k kb b b= + D

Cuantización de coeficientes

Introducción

Cuántización de coeficientes

1

1 1

( ) 1 (1 )NN

kk k

k k

D z a z p z- -

= =

= - = -å Õ 1

1 1

( ) 1 (1 )NN

kk k

k k

D z a z p z- -

= =

= - = -å Õ

k k kp p p= + D

1

Ni

i kk k

pp a

a=

¶D = D

¶å

Debemos relacionar con la el error de cuantización de cada coeficientes ipD kaD

1

1

( )

N kNi

i kNk

i lll i

pp a

p p

-

=

D = D-

åÕ

Para minimizar el efecto de la cuantización de los coeficientes, los polos (y los ceros)

deben ser distantes entre sí.

Para minimizar el efecto de la cuantización de los coeficientes, los polos (y los ceros)

deben ser distantes entre sí.

Introducción

Ciclos límite

En sistemas recursivos, las alinealidades debida a la aritmética de precisión finita a menudo causan oscilaciones, incluso para entrada nula

Ejemplo: 1 2[ ] [ ] [ [ 1]] [ [ 2]]y n x n Q a y n Q a y n= + - + -) ) )

1

30.110

4a = =

[ ] 0 0x n n= " ³

3[ 1] 0.110

4y - = =)

3[ 2] 1.010

4y - = - =)

[0] 0.110 0.110 1.010 1010y = ´ + ´)

[0] 0.100100 0.100100y = +)

3[0] 0.101 0.101 1.010

4y = + = = -)

3[1] 1.011 1.011 0.110

4y = + = =)

2

31.010

4a = - =

Calculando para n= 0...

Repitiendo el cálculo para n = 1...

Introducción

Cuántización de coeficientes

El efecto de la cuantización de los coeficientes debe tenerse siempre en cuenta, especialmente en IIR, al implementarlo con precisión finita

La estructura del filtro es clave

Se suele dividir un filtro de alto orden en un paralelo o una cascada de filtros de primer y segundo orden

En general, los polos (o ceros) complejos conjugados garantizan un alejamiento suficiente

El efecto de la cuantización de los coeficientes debe tenerse siempre en cuenta, especialmente en IIR, al implementarlo con precisión finita

La estructura del filtro es clave

Se suele dividir un filtro de alto orden en un paralelo o una cascada de filtros de primer y segundo orden

En general, los polos (o ceros) complejos conjugados garantizan un alejamiento suficiente

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Introducción

Estructuras avanzadas

Forma en cascada

1 2

1 2

1 1 * 1

1 1

1 1 * 1

1 1

(1 ) (1 )(1 )( )

(1 ) (1 )(1 )

M M

k k kk kN N

k k kk k

f z g z g zH z A

c z d z d z

- - -

= =

- - -

= =

- - -=

- - -

Õ Õ

Õ Õ

Descomposición en productos de primer orden y de segundo orden

1 22M M M= +1 22N N N= +

Introducción

Estructuras avanzadas

Forma en cascada

En la práctica se agrupan en factores de segundo orden, así:

1 20 1 2

1 21 1 2

( )1

SNk k k

k k k

b b z b zH z

a z a z

- -

- -=

+ +=

- -Õ

Cascada de Formas Directas II

Introducción

Estructuras avanzadas

Forma en paralelo

Descomposición en sumas de primer orden y de segundo orden

1 22N N N= +

pN M N= -

1 2 1

1 1 * 10 1 1

(1 )( )

1 (1 )(1 )

pN N Nk k k k

kk k kk k k

A B e zH z C z

c z d z d z

--

- - -= = =

-= + +

- - -å å å

10 1

1 20 1 1 2

( )1

p sN N

k k kk

k k k k

e e zH z C z

a z a z

--

- -= =

+= +

- -å å

En general, se agrupan en factores de segundo orden

Introducción

Estructuras avanzadas

Forma en paralelo

Introducción

Estructuras avanzadas

Cascada y paralelo

Permite independizar un grupo de polos (ceros) de otro

Al minimizar el orden de los subsistemas, se reduce la sensibilidad a la cuantización

Cascada es preferido cuando todas las secciones actúan sobre la misma banda

Paralelo es preferido cuando las secciones actúan en diferentes bandas (filtros multibanda)

En Paralelo no logramos independencia en el control sobre los ceros; dependen de H(z) en su totalidad

En el caso de buscar coeficientes variantes en el tiempo, es más fácil controlarlos

Permite independizar un grupo de polos (ceros) de otro

Al minimizar el orden de los subsistemas, se reduce la sensibilidad a la cuantización

Cascada es preferido cuando todas las secciones actúan sobre la misma banda

Paralelo es preferido cuando las secciones actúan en diferentes bandas (filtros multibanda)

En Paralelo no logramos independencia en el control sobre los ceros; dependen de H(z) en su totalidad

En el caso de buscar coeficientes variantes en el tiempo, es más fácil controlarlos

Polos en:

Introducción

Estructuras avanzadas

Análisis de sección de 2 polos

jz re f±=

1 1

1( )

(1 )(1 )j jH z

re z re zf f- - -=- -

2

1( )

(1 2 cos( ) )H z

r rf=

- +

Introducción

Estructuras avanzadas

Cuantización de 4 bits Cuantización de 7 bits

Introducción

Estructuras avanzadas

Forma acopladaForma acoplada

jz re f±=Polos en:

Misma transferencia

Mayor cantidad de multiplicadores

¿Cuál es la ventaja?

Misma transferencia

Mayor cantidad de multiplicadores

¿Cuál es la ventaja?

Introducción

Estructuras avanzadas

Cuantización de 4 bits Cuantización de 7 bits

Introducción

Resumen de estructuras

Forma Directa I y II (y traspuestos)

Paralelo y Cascada

BiQuad

Normal – cascada de sistemas de variable de estado de 1er o 2do orden

Paralelo normal

Lattice

Wave

General state space

...etc

Forma Directa I y II (y traspuestos)

Paralelo y Cascada

BiQuad

Normal – cascada de sistemas de variable de estado de 1er o 2do orden

Paralelo normal

Lattice

Wave

General state space

...etc

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Filtros IIR rápidos

Técnicas

Introducir pipelines en el feedback muy probablemente mueva los polos de lugar

Hay estrategias para incrementar el throughput que han sido estudiadas:

Look – ahead time domain interleaving

Clustered look – ahead pole/zero assignment

Scaterred look – ahead pole/zero assignment

Procesamiento paralelo

Implementación RNS

Introducir pipelines en el feedback muy probablemente mueva los polos de lugar

Hay estrategias para incrementar el throughput que han sido estudiadas:

Look – ahead time domain interleaving

Clustered look – ahead pole/zero assignment

Scaterred look – ahead pole/zero assignment

Procesamiento paralelo

Implementación RNS

No es tan sencillo usar pipelines como en FIREl problema básico surge porque:

Filtros IIR rápidos

Look – ahead Time Domain Interleaving

Considerando un sistema de 1er orden

[ ] [ 1] [ 1]y n ay n bx n= - + -[ ] [ 1] [ 1]y n ay n bx n= - + -

Filtros IIR rápidos

Look – ahead Time Domain Interleaving

Mirando “adelante” en el tiempo

[ 1] [ ] [ ]y n ay n bx n+ = +2[ 2] [ 1] [ 1] [ ] [ ] [ 1]y n ay n bx n a y n abx n bx n+ = + + + = + + +

1

0

[ ] [ ] [ 1 ]B

B k

k

y n B a y n a bx n B k-

=

+ = + + - -å

Filtros IIR rápidos

Look – ahead Time Domain InterleavingLIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.numeric_std.ALL;

ENTITY iir ISPORT (x_in : IN STD_LOGIC_VECTOR(15 downto 0) ; -- Input y_out : OUT STD_LOGIC_VECTOR(15 downto 0); -- Result clk : IN STD_LOGIC; rst : IN STD_LOGIC );END iir;

ARCHITECTURE fpga OF iir IS SIGNAL x_u, y_u, y_d: signed(15 downto 0); SIGNAL x3, sx, y9: signed(15 downto 0);BEGIN

PROCESS(clk, rst) -- Use FF for input and recursive part BEGIN if rst = '1' then y_u <= (others => '0'); if (clk = '1' and clk'event) then x3 <= x_u / 2 + x_u / 4; -- Compute x*3/4 sx <= x_u + x3; -- Sum of x element i.e. output FIR part y9 <= y_u / 2 + y_u / 16; -- Compute y*9/16 y_u <= sx + y9; --- Compute output end if;end process;

x_u <= signed(x_in); y_out <= std_logic_vector(y_u); -- Connect y to output pinsEND fpga;

3

4ab =

1b =

2 9

16a =

Filtros IIR rápidos

Look – ahead Time Domain Interleaving

Propiedades:

La sección forward puede usar pipeline para incrementar throughput

La sección feedback puede usar un multiplicador pipelined para el coeficiente

La ganancia en velocidad es a costa de muchos más recursos

Se incrementa el delay total del sistema

Propiedades:

La sección forward puede usar pipeline para incrementar throughput

La sección feedback puede usar un multiplicador pipelined para el coeficiente

La ganancia en velocidad es a costa de muchos más recursos

Se incrementa el delay total del sistema

Sa

Filtros IIR rápidos

Clustered look – ahead pole/zero assignment

Considerando el siguiente sistema

1 1 1 21 2 1 2 1 2

1 1( )

(1 )(1 ) 1 ( )H z

r z r z r r z r r z- - - -= =- - - + +

11 2

1 1 21 2 1 2 1 2

1 ( )( )

(1 ( ) )(1 ( ) )

r r zH z

r r z r r z r r z

-

- - -

+ +=

+ + - + +

11 2

1 2 1 2 2 31 2 1 2 1 2 1 2 1 2 1 2

1 ( )( )

1 ( ) ( ) ( ) ( )

r r zH z

r r z r r z r r z r r z r r r r z

-

- - - - -

+ +=

- + + + + - + + +

11 22 2 3

1 2 1 2 1 2 1 2

1 ( )( )

1 ( ( ) ) ( )

r r zH z

r r r r z r r r r z

-

- -

+ +=

+ - + + +

11 22 2 3

1 2 1 2 1 2 1 2

1 ( )( )

1 ( ( ) ) ( )

r r zH z

r r r r z r r r r z

-

- -

+ +=

+ - + + +

Agregando un par polo/cero:

Filtros IIR rápidos

Clustered look – ahead pole/zero assignment

1 2 1 1

1 1( )

1 1,25 0,375 (1 0,5 )(1 0,75 )H z

z z z z- - - -= =- + - -

1

2 3

1 1,25( )

1 1,1875 0,4688

zH z

z z

-

- -

+=

- +

Teniendo un sistema de segundo orden

Insertando un polo/cero en -(r1+r2)

La parte recursiva ahora puede ser implementada con una etapa adicional de pipeline

La aniquilación polo/cero tiene que ser perfecta o el sistema puede ser inestable

Pro

Contra

Filtros IIR rápidos

Scattered look – ahead pole/zero assignment

Introduce M-1 polos/ceros dentro de la circunferencia unitaria, por lo cual

no tiene problemas de estabilidad

Se introducen M-1 ceros y polos en:

2jMz rep

±=

Filtros IIR rápidos

Scattered look – ahead pole/zero assignment

1 2 1 1

1 1( )

1 1,25 0,375 (1 0,5 )(1 0,75 )H z

z z z z- - - -= =- + - -

Teniendo el mismo sistema de segundo orden

Insertando un polo/cero en 2

30.5j

z ep

±=

2

30.75j

z ep

±=y en

1 2

1( )

1 1,25 0,375H z

z z- -=- +

1 2 1 2

1 2 1 2

(1 0,5 0,25 )(1 0,75 0,5625 )

(1 0,5 0,25 )(1 0,75 0,5625 )

z z z z

z z z z

- - - -

- - - -

+ + + ++ + + +

1 2 3 4

3 6

1 1,25 1,1875 0,4687 0,1406( )

1 0,5469 0,0527

z z z zH z

z z

- - - -

- -

+ + + +=

- +

De esta forma, la parte recursiva puede contar con 2 etapas de pipeline

adicionales

Filtros IIR rápidos

Clustered look – ahead pole/zero assignment

Para un sistema de primer orden

1

1( )

1H z

az-=

-

11( ) 1H z az-= +

2 22 ( ) 1H z a z-= +

3 4 4

1( )

1H z

a z-=

-

3

11

1( ) ( )

1kk

H z H zaz-=

= =-Õ

1 2 2

4 4

(1 )(1 )( )

1

az a zH z

a z

- -

-

+ +=

-

Filtros IIR rápidos

Clustered/Scattered – ahead Time Domain Interleaving

Propiedades:

Permite eliminar términos de menor orden de la sección feedback

Scattered logra estabilidad

Clustered necesita una aniquilación polo/cero perfecta, si el polo cae por fuera del círculo unitario

En general a mayor grado de pipelining, mayor complejidad

Propiedades:

Permite eliminar términos de menor orden de la sección feedback

Scattered logra estabilidad

Clustered necesita una aniquilación polo/cero perfecta, si el polo cae por fuera del círculo unitario

En general a mayor grado de pipelining, mayor complejidad

Filtros IIR rápidos

Procesamiento paralelo

P caminos corriendo a 1/P veces las tasa de muestreo

Filtros IIR rápidos

Procesamiento paralelo

2[ 2] [ ] [ ] [ 1]y n a y n ax n x n+ = + + +

2[2 2] [2 ] [2 ] [2 1]y k a y k ax k x k+ = + + +2[2 1] [2 1] [2 1] [2 ]y k a y k ax k x k+ = - + - +

[ 2]y n + =

Look ahead

Separación en pares e impares

[ ] [ 1] [ 1]y n ay n x n= - + -

[ 2] [ 1] [ 1]y n ay n x n+ = + + +

Filtros IIR rápidos

Procesamiento paralelo

Cada rama corre a ½ de la tasa de muestreoCada rama corre a ½ de la tasa de muestreo

Filtros IIR rápidos

Procesamiento paralelo

Propiedades:

Cada camino IIR corre a 1/P veces la tasa de muestreo

Como a la salida y a la entrada se usan mux y demux respectivamente, es esperable que puedan ejecutarse a mayor frecuencia

Cada camino tiene P veces más tiempo para computar su salida

Usa muchos recursos a cambio de un gran aumento de un velocidad

Propiedades:

Cada camino IIR corre a 1/P veces la tasa de muestreo

Como a la salida y a la entrada se usan mux y demux respectivamente, es esperable que puedan ejecutarse a mayor frecuencia

Cada camino tiene P veces más tiempo para computar su salida

Usa muchos recursos a cambio de un gran aumento de un velocidad

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Filtros IIR rápidos

Sistema RNS

El primer documento conocido que menciona el Sistema Númerico de Residuos

(RNS) data de hace más de 1500 años. Sun Tzu, su autor, lo menciona en forma de

acertijo matemático, y dice más o menos esto:

Tenemos cosas de las cuales no sabemos su número,Si las contamos de a tres, nos sobran dosSi las contamos de a cinco, nos sobran tresSi las contamos de a siete, nos sobran dos¿Cuántas cosas tenemos?

Filtros IIR rápidos

Sistema RNS

En otras palabras, lo que nos pregunta el acertijo es:

¿Qué número produce los restos (residuos) 2, 3 y 2 cuando es

dividido por 3, 5 y 7 respectivamente?

¿Qué número produce los restos (residuos) 2, 3 y 2 cuando es

dividido por 3, 5 y 7 respectivamente?

En notación de residuos:

(7|5|3)(2 | 3 | 2)RNS

La respuesta fue dada en forma general por el Chinese Remainder Theorem

(Teorema del Resto Chino) en el año 1247, por un matemático chino, Qin Jiushao.

La solución general no es trivial; en este caso es 86.

La respuesta fue dada en forma general por el Chinese Remainder Theorem

(Teorema del Resto Chino) en el año 1247, por un matemático chino, Qin Jiushao.

La solución general no es trivial; en este caso es 86.

x =

Filtros IIR rápidos

Sistema RNS

¿De donde nace el interés por este problema?

- Un poco de historia: en los '50s fue redescubierto en el ámbito de la computación,

buscando un sistema aritmético veloz y tolerante a fallas

- RNS posee estas capacidades:

- En suma y producto, no posee propagación de carry. La propagación de

carry es el mayor factor limitante de la velocidad en estas operaciones

- La suma, resta y producto son completamente paralelizables

- Como las representaciones de los residuos no poseen peso, un error de

posición en un dígito, no afecta al resto de los dígitos

- Un poco de historia: en los '50s fue redescubierto en el ámbito de la computación,

buscando un sistema aritmético veloz y tolerante a fallas

- RNS posee estas capacidades:

- En suma y producto, no posee propagación de carry. La propagación de

carry es el mayor factor limitante de la velocidad en estas operaciones

- La suma, resta y producto son completamente paralelizables

- Como las representaciones de los residuos no poseen peso, un error de

posición en un dígito, no afecta al resto de los dígitos

Filtros IIR rápidos

Sistema RNS

Aplicaciones actuales

- Sistemas de alta velocidad

- Sistemas de comunicaciones

- Soluciones basadas en FPGAs

- Filtrado (FIR, IIR)

- Transformaciones lineales (o las que conlleven gran cantidad de productos y sumas)

- Sistemas adaptativos

- Criptografía

- Procesamiento de imágenes

- Procesamiento del habla

- Sistemas de alta velocidad

- Sistemas de comunicaciones

- Soluciones basadas en FPGAs

- Filtrado (FIR, IIR)

- Transformaciones lineales (o las que conlleven gran cantidad de productos y sumas)

- Sistemas adaptativos

- Criptografía

- Procesamiento de imágenes

- Procesamiento del habla

Filtros IIR rápidos

Sistema RNS

Definición: En un sistema RNS, un número es representado por una

lista de sus residuos con respecto a módulos primos entre sí

xk

1 1 0km m m- > > >L

Ejemplo: Suponemos el siguiente sistema RNS

(8 | 7 | 5 | 3)RNS

(8|7|5|3)21 (5 | 0 |1| 0)RNS=

(8|7|5|3)8 (0 |1| 3 | 2)RNS=

(8|7|5|3)64 (0 |1| 4 |1)RNS=

Definición: Se define rango dinámico a 1 2 1 0k kM m m mm- -= LEn este caso, M = 8 x 7 x 5 x 3 = 840

8 7 5 3( 21 | 21 | 21 | 21 )=

8 7 5 3( 8 | 8 | 8 | 8 )=

8 7 5 3( 64 | 64 | 64 | 64 )=

Filtros IIR rápidos

Sistema RNS

estos 840 valores pueden ser usados para representar números de

0 a 839, de -420 a 419, o de cualquier otro rango entero.

Debido a la igualdadi im m

x M x- = -

(8|7|5|3)(0 | 0 | 0 | 0)RNS representa 0 ó 840 ó...

(8|7|5|3)(1|1|1|1)RNS representa 1 ó 841 ó...

(8|7|5|3)(0 |1| 3 | 2)RNS representa 8 ó 848 ó...

(8|7|5|3)(2 | 0 | 0 | 2)RNS representa -70 ó 770 ó...

(8|7|5|3)(7 | 6 | 4 | 2)RNS representa -1 ó 839 ó...

(8|7|5|3)(6 | 0 | 0 |1)RNS representa 70 ó 910 ó...

Filtros IIR rápidos

Sistema RNS

Operaciones

(8|7|5|3)(5 | 5 | 0 | 2)RNS representa x=5

(8|7|5|3)(7 | 6 | 4 | 2)RNS representa y=-1

(8|7|5|3)(4 | 4 | 4 |1)RNS

(8|7|5|3)(6 | 6 |1| 0)RNS

(8|7|5|3)(3 | 2 | 0 |1)RNS

x+y:

x-y:

Suma

Resta

Multiplicación

xy:

(8|7|5|3)8 7 5 3( 5 7 | 5 6 | 0 4 | 2 2 )RNS+ + + +

(8|7|5|3)8 7 5 3( 5 7 | 5 6 | 0 4 | 2 2 )RNS- - - -

(8|7|5|3)8 7 5 3( 5 7 | 5 6 | 0 4 | 2 2 )RNS´ ´ ´ ´

Filtros IIR rápidos

Sistema RNS

Operaciones óptimas en RNS: suma, resta, multiplicación ---> ¡Filtros!

Operaciones difíciles en RNS: - Comparación de módulo

- Detección de signo

- Division

- Escalado, redondeo, truncado

- Detección de overflow

Filtros IIR rápidos

Sistema RNS

Para la misma performance, las implementaciones en RNS tienen menor consumo y menor área

Filtros IIR en FPGA

Agenda

Introducción

Estructuras básicas

Cuantización

Estructuras avanzadas

Filtros IIR rápidos

Sistema RNS

Resumen

Resumen

Comparativa IIR vs FIR

Ventajas:

Diseño estándar usando un prototipo analógico está muy bien estudiado

Filtros altamente selectivos pueden ser realizados con diseños de bajo orden y correr a altas tasas

Para el mismo esquema de tolerancia, los filtros IIR resultan más cortos que los FIR

Ventajas:

Diseño estándar usando un prototipo analógico está muy bien estudiado

Filtros altamente selectivos pueden ser realizados con diseños de bajo orden y correr a altas tasas

Para el mismo esquema de tolerancia, los filtros IIR resultan más cortos que los FIR

IIR

Resumen

Comparativa IIR vs FIR

Desventajas:

Fase no lineal

Para implementaciones enteras, puede haber ciclos límite

Los diseños multibanda son difíciles. Sólo se diseñan pasabajo, pasaalto o pasabanda

La realimentación puede introducir inestabilidad

Es difícil obtener diseños de muy alta velocidad, con alto grado de pipelining

Desventajas:

Fase no lineal

Para implementaciones enteras, puede haber ciclos límite

Los diseños multibanda son difíciles. Sólo se diseñan pasabajo, pasaalto o pasabanda

La realimentación puede introducir inestabilidad

Es difícil obtener diseños de muy alta velocidad, con alto grado de pipelining

IIR

Resumen

Comparativa IIR vs FIR

Ventajas:

Es sencillo lograr fase lineal

Los filtros multibanda son una realidad con FIR

Los filtros FIR no recursivos son siempre estables y no tienen ciclos límite

Es sencillo tener altas velocidades, con alto grado de pipelining

El redondeo aritmético tiene un impacto relativamente leve y el ruido de cuantización es bien definido

Ventajas:

Es sencillo lograr fase lineal

Los filtros multibanda son una realidad con FIR

Los filtros FIR no recursivos son siempre estables y no tienen ciclos límite

Es sencillo tener altas velocidades, con alto grado de pipelining

El redondeo aritmético tiene un impacto relativamente leve y el ruido de cuantización es bien definido

FIR

Resumen

Comparativa IIR vs FIR

Desventajas:

Se debe tener acceso a los algoritmos de Parks – McClellan para una implementación óptima

Filtros de alto orden requieren un alto esfuerzo de implementación

Filtros de alto orden requieren muchos coeficientes y muchos recursos

Desventajas:

Se debe tener acceso a los algoritmos de Parks – McClellan para una implementación óptima

Filtros de alto orden requieren un alto esfuerzo de implementación

Filtros de alto orden requieren muchos coeficientes y muchos recursos

FIR

Filtros IIR en FPGA

Bibliografía

Discrete-Time Signal Processing– A. Oppenheim, R. Schafer

Digital Signal Processing – J. Proakis, D. Manolakis

Digital signal processing with FPGA – Meyer-Baese

FIUBABuenos Aires, [email protected]@inti.gob.ar

Agosto de 2012