La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Filtros adaptativos Implementación en DSP

Presentaciones similares


Presentación del tema: "Filtros adaptativos Implementación en DSP"— Transcripción de la presentación:

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

2 Algoritmo LMS

3 Algoritmo LMS Salida del filtro: Error en la estimación:
Adaptación de los coeficientes: Valores anteriores de la entrada: Coeficientes del filtro:

4 Posibles aplicaciones
System identification / modelado adaptativo Cancelación de ruido Ecualización adaptativa Control de eco Beamforming

5 Ejemplo: system identification
Filtro adaptativo Sistema desconocido - +

6 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

7 Ejemplo con DSP56002 Sistema desconocido + Filtro adaptativo -
OUT L OUT R IN L RUIDO BLANCO + -

8 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 Adaptación de los coeficientes:

9 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: x0: y0: a:

10 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n) x0: y0: a:

11 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n) x0: mu y0: a:

12 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n) x0: mu y0: a: e(n).mu

13 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: mu y0: a: e(n).mu

14 Algoritmo LMS X Y r0 r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n) y0: a: w0(n)

15 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 r0 r4 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n) y0: a: w0(n)

16 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 r0 r4 x(n-1) w1(n) x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n) y0: a: w0(n)+mu.x(n).e(n)

17 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 r4 x(n-1) w1(n) r0 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: a: w0(n)+mu.x(n).e(n)

18 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n) 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 x(n-1) w1(n) r0 r4 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: w1(n) a: w0(n)+mu.x(n).e(n)

19 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) 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 x(n-1) w1(n) r0 r4 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: w1(n) a: w0(n)+mu.x(n).e(n)

20 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 r5 x(n-1) w1(n) r0 r4 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: w1(n) a: w0(n)+mu.x(n).e(n)

21 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 r5 x(n-1) w1(n) r0 r4 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: w1(n) a: w1(n)

22 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 r5 x(n-1) w1(n) r0 r4 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-1) y0: w1(n) a: w1(n)

23 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 r5 x(n-1) w1(n) x(n-2) w2(n) r0 r4 x(n-3) w3(n) x1: e(n).mu x0: x(n-2) y0: w2(n) a: w1(n)+mu.x(n-1).e(n)

24 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 x(n-1) w1(n+1) r5 x(n-2) w2(n) r0 r4 x(n-3) w3(n) x1: e(n).mu x0: x(n-2) y0: w2(n) a: w2(n)

25 Algoritmo LMS X Y r0 r4 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) 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 x(n-1) w1(n+1) r5 x(n-2) w2(n) x(n-3) w3(n) x1: e(n).mu x0: x(n-3) y0: w3(n) a: w2(n)+mu.x(n-2).e(n)

26 Algoritmo LMS X Y r0 r4 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) 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 x(n-1) w1(n+1) x(n-2) w2(n+1) r5 x(n-3) w3(n) x1: e(n).mu x0: x(n-3) y0: w3(n) a: w3(n)

27 Algoritmo LMS X Y move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a move a,x1
x(n) w0(n+1) 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 r0 r4 x(n-1) w1(n+1) x(n-2) w2(n+1) r5 x(n-3) w3(n) x1: e(n).mu x0: x(n) y0: w0(n+1) a: w3(n)+mu.x(n-3).e(n)

28 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) 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 r0 r4 x(n-1) w1(n+1) x(n-2) w2(n+1) x(n-3) w3(n+1) x1: e(n).mu x0: x(n) y0: w0(n+1) a: w0(n+1)

29 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) 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 r0 r4 x(n-1) w1(n+1) x(n-2) w2(n+1) x(n-3) w3(n+1) x1: e(n).mu x0: x(n) y0: w0(n+1) a: w0(n+1) Quedaron actualizados todos los coeficientes w

30 Algoritmo LMS X Y r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) w0(n+1) r5 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 r4 x(n-1) w1(n+1) x(n-2) w2(n+1) r0 x(n-3) w3(n+1) x1: e(n).mu x0: x(n-1) y0: w0(n+1) a: w0(n+1) NOTA: n0 = -2

31 Algoritmo LMS X Y r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) r4 w0(n+1) r5 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 x(n-1) w1(n+1) x(n-2) w2(n+1) r0 x(n-3) w3(n+1) x1: e(n).mu x0: x(n-1) y0: w1(n+1) a: w0(n+1)

32 Algoritmo LMS X Y r4 r5 move X:ErrorN,x1 move #mu,x0 mpy x0,x1,a
x(n) r4 w0(n+1) r5 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 x(n-1) w1(n+1) x(n-2) w2(n+1) r0 x(n-3) w3(n+1) x1: e(n).mu x0: x(n-1) y0: w1(n+1) a: w0(n+1) La próxima muestra x(n+1) pisa a x(n-3)

33 Salida del filtro 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 Este es el algoritmo del FIR

34 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

35 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

36 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

37 Trabajo práctico ? Parte B) Cancelación adaptativa de ruido
Se 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 ?

38 Algoritmo LMS - origen Según el método de steepest-descent
Usamos los estimadores instantáneos:

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


Descargar ppt "Filtros adaptativos Implementación en DSP"

Presentaciones similares


Anuncios Google