Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

39
Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010

Transcript of Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Page 1: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Filtros adaptativosImplementación en DSP

Laboratorio DSP y FPGAITBA 2010

Page 2: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

Page 3: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

( ) ( ) ( )y n n n Tw x

( ) ( ) ( )e n d n y n

( 1) ( ) ( ) ( )n n n e n w w x

Salida del filtro:

Error en la estimación:

Adaptación de los coeficientes:

( ) ( ), ( 1), ( 2),..., ( 1)n x n x n x n x n N x

0 1 2 1( ) ( ), ( ), ( ),..., ( )Nn w n w n w n w nw

Valores anteriores de la entrada:

Coeficientes del filtro:

( ) ( ) ( )iy n w n x n i N -1

i=0

Page 4: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Posibles aplicaciones

• System identification / modelado adaptativo

• Cancelación de ruido

• Ecualización adaptativa

• Control de eco

• Beamforming

• …

Page 5: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Ejemplo: system identification

( )y n

( )e n( )x n ( )d n

Filtro adaptativo

Sistema desconocido

-

+

Page 6: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Simulación en MATLAB

• Inventamos un sistema desconocido

• Hacemos pasar ruido blanco por el sistema desconocido

• Adaptamos el filtro muestra a muestra

• Graficamos el error en el tiempo

• Ver simulación

Page 7: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Ejemplo con DSP56002

Filtro adaptativo ( )e n

Sistema desconocido

( )x n

( )d n

DSP56002OUT L

OUT R IN L

RUIDO BLANCO

( )y n +

-

Page 8: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

( 1) ( ) ( ) ( )n n n e n w w xAdaptación de los coeficientes: move X:ErrorN,x1

move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

Page 9: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n) w0(n)

x(n-1)

x(n-2)

x(n-3)

w1(n)

w2(n)

w3(n)

Page 10: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n)

w0(n)

w1(n)

w2(n)

w3(n)

Page 11: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n) mu

w0(n)

w1(n)

w2(n)

w3(n)

Page 12: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n) mu

e(n).mu

w0(n)

w1(n)

w2(n)

w3(n)

Page 13: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n)

x(n-1)

x(n-2)

x(n-3)

mu

e(n).mu

e(n).mu

w0(n)

w1(n)

w2(n)

w3(n)

Page 14: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4 r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu x(n)

w0(n)

w0(n)

w1(n)

w2(n)

w3(n)

Page 15: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r0 r4

r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu x(n)

w0(n)

w0(n)

w1(n)

w2(n)

w3(n)

Page 16: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu x(n)

w0(n)+mu.x(n).e(n)

r0 r4

w0(n)

w1(n)

w2(n)

w3(n)

Page 17: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n)+mu.x(n).e(n)

r0

r4

w0(n)

w1(n)

w2(n)

w3(n)

x(n-1)

Page 18: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n)+mu.x(n).e(n)

r4

w0(n)

w1(n)

w2(n)

w3(n)

x(n-1)

r0

w1(n)

Page 19: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r5x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n)+mu.x(n).e(n)

w0(n+1)

w1(n)

w2(n)

w3(n)

x(n-1)

r0

w1(n)

r4

Page 20: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

r5

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n)+mu.x(n).e(n)

w0(n+1)

w1(n)

w2(n)

w3(n)

x(n-1)

r0

w1(n)

r4

Page 21: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w1(n)

w0(n+1)

w1(n)

w2(n)

w3(n)

x(n-1)

r0

w1(n)

r4

r5

Page 22: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w1(n)

w0(n+1)

w1(n)

w2(n)

w3(n)

x(n-1)

r0

w1(n)

r4

r5

Page 23: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w1(n)+mu.x(n-1).e(n)

w0(n+1)

w1(n)

w2(n)

w3(n)

x(n-2) w2(n)

r5

r0 r4

Page 24: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w2(n)

w0(n+1)

w1(n+1)

w2(n)

w3(n)

x(n-2)

r0

w2(n)

r4

r5

Page 25: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w2(n)+mu.x(n-2).e(n)

w0(n+1)

w1(n+1)

w2(n)

w3(n)

x(n-3) w3(n)

r5

r0 r4

Page 26: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w3(n)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n)

x(n-3)

r0

w3(n)

r4

r5

Page 27: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w1(n+1)

w2(n+1)

w3(n)

x(n) w0(n+1)

r5

r0 r4

w3(n)+mu.x(n-3).e(n)

Page 28: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n+1)

x(n)

r0

w0(n+1)

r4

r5

Page 29: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n+1)

x(n)

r0

w0(n+1)

r4

r5

Quedaron actualizados todos los coeficientes w

Page 30: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n+1)

x(n-1) w0(n+1)

r4

r5

r0

NOTA: n0 = -2

Page 31: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n+1)

x(n-1) w1(n+1)

r5r4

r0

Page 32: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS

move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1

move x:(r0)+,x0 y:(r4)+,a do #ntaps,_coefupdate macr x0,x1,a x:(r0)+,x0 y:(r4)+,y0 tfr y0,a a,y:(r5)+

_coefupdate move x:(r0)+n0,x0 y:(r4)-,y0

a:

x1: x0: y0:

X Y

x(n)

x(n-1)

x(n-2)

x(n-3)

e(n).mu

w0(n+1)

w0(n+1)

w1(n+1)

w2(n+1)

w3(n+1)

x(n-1) w1(n+1)

r5

r0

r4

La próxima muestra x(n+1) pisa a x(n-3)

Page 33: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Salida del filtro

move X:EntradaN,x0

clr a x0,x:(r0)+ y:(r4)+,y0

rep #ntaps-1 mac x0,y0,a x:(r0)+,x0 y:(r4)+,y0

macr x0,y0,a

( ) ( ) ( )y n n nw xSalida del filtro:

Este es el algoritmo del FIR

Page 34: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Código assembler

• Código canal derecho y canal izquierdo

• Generación de ruido blanco

• Problema con saturación por nivel del ruido

• Problema con delay / Línea de retardo

Page 35: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Pruebas

• Simulación

• Pruebas con loop cerrado (cable)

• Ver señal de error en el osciloscopio

• Modificar mu y verificar convergencia

• Pruebas con parlante y micrófono

Page 36: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Trabajo práctico

• Parte A) Algoritmo NLMS

– En LMS convergencia y estabilidad dependen de mu– Efecto de la potencia de x(n)

– Normalización con la potencia de la señal

2( 1) ( ) ( ) ( )

( )x

n n n e nn

w w x

2 2 2( ) ( 1) (1 )x xn n x

Page 37: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Trabajo práctico

• Parte B) Cancelación adaptativa de ruidoSe desea eliminar la interferencia (N) presente en una señal (S + N).

Se cuenta con una señal de referencia (N´) que está correlacionada (en forma desconocida) con el ruido que contamina la señal de interés (S).

S + N

N’

S?

Page 38: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Algoritmo LMS - origen

( 1) ( ) 2 ( )[ ( ) ( ) ( )]n n n d n n n Tw w x x w

Según el método de steepest-descent

( 1) ( ) ( ( ))

( ( )) 2 2 ( )

n n J n

J n n

dx x

w w w

w p R w

Usamos los estimadores instantáneos:

( ) ( )

( ) ( )

d n n

n n

dx

Tx

p x

R x x

( 1) ( ) ´ ( ) ( )n n n e n w w x

Page 39: Filtros adaptativos Implementación en DSP Laboratorio DSP y FPGA ITBA 2010.

Referencias

• Farhang, Boroujeny. Adaptive filters – Theory and applications.• Haykin. Adaptive filter theory.• Widrow, Stearns. Adaptive signal processing.