Descargar la presentación
La descarga está en progreso. Por favor, espere
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.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.