1 / 39

Filtros adaptativos Implementación en DSP

Filtros adaptativos Implementación en DSP. Laboratorio DSP y FPGA ITBA 2010. Algoritmo LMS. Algoritmo LMS. Salida del filtro:. Error en la estimación:. Adaptación de los coeficientes:. Valores anteriores de la entrada:. Coeficientes del filtro:. Posibles aplicaciones.

Download Presentation

Filtros adaptativos Implementación en DSP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Filtros adaptativosImplementació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 Sistema desconocido + - Filtro adaptativo

  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 OUT R IN L + Filtro adaptativo - RUIDO BLANCO OUT L DSP56002

  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 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) w2(n) x(n-2) x(n-3) w3(n) x0: y0: x1: a: r0 r4 r5

  10. Algoritmo LMS X Y 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) w2(n) x(n-2) x(n-3) w3(n) e(n) x0: y0: x1: a: r0 r4 r5

  11. Algoritmo LMS X Y 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) w2(n) x(n-2) x(n-3) w3(n) e(n) x0: mu y0: x1: a: r0 r4 r5

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

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

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

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

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

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

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

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

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

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

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

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

  24. Algoritmo LMS X Y 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,ax:(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) w2(n) x(n-2) x(n-3) w3(n) e(n).mu x0: x(n-2) y0: w2(n) x1: a: w2(n) r4 r0 r5

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

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

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

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

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

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

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

  32. Algoritmo LMS X Y 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,ax:(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) w2(n+1) x(n-2) x(n-3) w3(n+1) e(n).mu x0: x(n-1) y0: w1(n+1) x1: a: w0(n+1) r4 r0 r5 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. S + N ? S N’ 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).

  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.

More Related