Cómo crear un filtro de compensación de distorsión


11

Estoy creando un canalizador que consiste en un mezclador complejo, un decimador CIC y un filtro de compensación / decimación FIR. El filtro FIR final puede, si es importante, implementarse como más de un filtro.

Mi pregunta es, ¿cómo diseño un filtro de modo que compense la respuesta de frecuencia muy plana del filtro CIC? ¿Crea la respuesta de frecuencia que desea calculando el recíproco de la respuesta del CIC y luego la ejecuta a través de una FFT inversa para obtener la respuesta al impulso?

Como puede ver, aunque mi problema particular se refiere a los filtros CIC, mi pregunta es realmente acerca de cómo crear cualquier tipo de filtro de compensación de distorsión.

Gracias por tu tiempo.


3
Un filtro cuyo propósito es compensar la distorsión anteriormente en el sistema de comunicación a menudo se llama ecualizador ; eso puede darle más información para leer mientras tanto. Los tipos comunes son el ecualizador de forzamiento cero (que no es lo que desea si el sistema que está compensando tiene ceros en su respuesta de frecuencia) y el ecualizador de mínimo error cuadrático medio (MMSE).
Jason R

@JasonR Estoy familiarizado con los ecualizadores adaptativos MMSE en el contexto de los ecualizadores dirigidos a la decisión de compensación de canales, pero dudo que eso sea lo que quisiste decir. ¿Entrenarías el ecualizador de alguna manera? Supongo que el quid es cómo se determina cuál es el error.
Jim Clay

MMSE solo se refiere al criterio por el que se esfuerza el ecualizador; Puede ser adaptativo o no adaptativo. Si conoce la función de transferencia del sistema para compensar, y la función de autocorrelación de cualquier ruido aditivo, y ambos son invariables en el tiempo, entonces puede derivar "el" ecualizador MMSE, que se solucionará con el tiempo. Las soluciones adaptativas se pueden usar cuando esa información no se conoce con precisión o cambia con el tiempo (lo cual es bastante común).
Jason R

Los filtros adaptativos a menudo incluyen un modo de entrenamiento donde se transmiten varios símbolos conocidos a través del sistema, lo que permite que el receptor permita que su filtro converja en un buen conjunto de coeficientes. Después del entrenamiento, también es común ingresar a una fase de seguimiento, donde la operación dirigida por la decisión se usa para actualizaciones continuas de los grifos del filtro. Como alternativa, en un régimen donde SNR e ISI son "lo suficientemente buenos", el modo dirigido por la decisión podría usarse desde el principio como un esquema de adquisición ciega, saltando la fase de entrenamiento.
Jason R

Encontrar material de lectura sobre este tema que sea matemáticamente accesible es algo difícil. Me gusta la teoría del filtro adaptativo de Haykin , pero se necesita un poco de esfuerzo para cortar las matemáticas (y se necesita un fondo sólido de álgebra lineal). Es bastante complicado que si no lo usa con regularidad, primero tendrá que repasar los temas de procesamiento de señales estadísticas.
Jason R

Respuestas:


9

Lo siguiente aborda la compensación CIC y no es una técnica general de "distorsión". Pero es un método directo para "compensar" la "distorsión" no variable. Si se conoce la respuesta de frecuencia, se puede usar el inverso de la frecuencia para compensar. Ejemplos como el filtro CIC, donde se podría usar un filtro deficiente debido a la complejidad reducida, se compensan más adelante con la cadena de señal. En este ejemplo, la respuesta de frecuencia se conoce y se puede usar el inverso. Tenga en cuenta que con los filtros de velocidad múltiple solo desea utilizar el espectro "utilizable" después de la aniquilación.

En general, para compensar un filtro CIC, se puede usar el inverso de la respuesta de los filtros CIC para generar el filtro de compensación. El CIC tiene una respuesta de (ver referencia [r2] o [r3])

H(ω)=|sin(ωD/2)sin(ωM/2)|N

Donde D es el retardo diferenciado, M es la tasa de diezmado y N es el orden del filtro (número de filtros en cascada). El inverso se puede especificar como

H(ω)=|sin(ωM/2)sin(ωD/2)|N

Una vez que tenemos la respuesta de frecuencia del filtro de compensación, simplemente podemos elegir la longitud del filtro FIR que deseamos. La longitud del FIR es específica de la aplicación. Obviamente, cuanto más largo sea el filtro FIR, mejor será la compensación.

Las siguientes son tramas de esta compensación directa.

El siguiente es el código de Python para crear las respuestas de frecuencia y los gráficos.

import numpy as np
from numpy import sin, abs, pi
import pylab

D = 1; M = 7; N = 3

Hfunc = lambda w : abs( (sin((w*M)/2)) / (sin((w*D)/2.)) )**N
HfuncC = lambda w : abs( (sin((w*D)/2.)) / (sin((w*M)/2.)) )**N

w = np.arange(1024) * pi/1024

G = (M*D)**N
H = np.array(map(Hfunc, w))
Hc = np.array(map(HfuncC, w))
# only use the inverse (compensation) roughly to the first null.
Hc[int(1024*pi/M/2):] = 1e-8
plot(w, 20*log10(H/G))
plot(w, 20*log10(Hc*G))
grid('on')

Ver [r1] para otros enfoques y aproximación .sinc1

[r1] Altera, "Comprender los filtros de compensación CIC"

[r2] R. Lyons, "Comprender el procesamiento de señales digitales", 2ª ed., Prentice Hall, Upper Saddle River, Nueva Jersey, 2004

[r3] R. Lyons, "Comprender los filtros de peine integradores en cascada"


La referencia 1 es excelente, pero usa una terminología diferente (M = retraso de etapa, donde usó D. R = Tasa de reducción, donde usó M), por lo que me tomó un tiempo ver el error: usa WM / 2, Altera especifica pi F / R. Después de una trama rápida de Excel, creo que la versión de Altera es la correcta.
Alan Campbell

@AlanCampbell Si traza las ecuaciones anteriores (que hice en el fragmento de código) verá que no hay ningún error. Lo que no mencioné explícitamente en las ecuaciones es la ganancia . Observe que en el fragmento de código elimino la ganancia. Si ejecuta el fragmento de código y lo modifica M=8y N=9crea los mismos gráficos que la referencia 1. Usé la nomenclatura más cercana a la referencia 2.
Christopher Felton

2

Creo que la respuesta de Christopher es buena. Pensé que agregaría uno para nosotros los tipos perezosos / tramposos.

Mientras cavaba alrededor de la herramienta fdatool (Herramienta de diseño y análisis de filtros) de Matlab, descubrí que puede diseñar y modelar tanto filtros CIC como sincrónicos inversos, donde el filtro sintético inverso es el filtro de compensación de distorsión del CIC.

Para generar el filtro CIC, vaya directamente a la página "Crear un filtro de velocidad múltiple" (botón a la izquierda en la versión R2011b) y especifique el filtro CIC. Luego puede configurar todos los parámetros que desee, como las tasas de interpolación / diezmado, el número de cascadas (Matlab lo llama "secciones"), etc.

Para crear el filtro de sinc inverso, vaya a la página "Filtro de diseño" (la página predeterminada de la herramienta cuando se inicia) y especifique "Inverse Sinc Lowpass" en el menú desplegable Lowpass. Luego puede configurar los diversos parámetros para ello. Tiene un par de parámetros únicos en la parte Opciones del cuadro de diálogo, incluida "p", que corresponde al número de cascadas (exponente sinc).

Sin embargo, el diseño del filtro sinc inverso no era completamente satisfactorio, ya que hacerlo bien parecía menos una instancia de hacer las matemáticas que averiguar dónde estaba mi banda de paso, qué era la caída del CIC en ese punto y luego diseñar un filtro que canceló aproximadamente fuera de esa caída. Como mi filtro CIC tenía cuatro cascadas, habría pensado que necesitaría establecer "p" en cuatro, pero se compensó demasiado cuando lo hice. Terminé dejando "p" en 1, el valor predeterminado.

La herramienta realmente brilló cuando guardé ambos filtros en mi sesión, y luego fui al administrador de filtros y los conecté en cascada para ver la respuesta de frecuencia general. Esto fue muy útil y fácil de hacer.


0

Sin duplicar la respuesta aquí, vea

Cómo hacer un filtro de compensación CIC

que muestra una solución muy simple de 3 toques para la compensación CIC.

Esto es específico para CIC o se requiere cualquier aplicación para un Sinc inverso (como antes de la conversión D / A).

Para compensar cualquier distorsión transversal general (la que podría replicarse con un filtro transversal en lugar de la distorsión de ruido dinámico), tomaría el enfoque de usar las ecuaciones de Wiener Hopf para crear un filtro de compensación usando el enfoque de error de mínimo cuadrado, idealmente usando una secuencia de entrenamiento si está disponible para comparar la respuesta deseada con la real y entrenar el ecualizador. Para ver una aplicación que muestra esto con el código fuente utilizado, consulte:

Respuesta de frecuencia del altavoz compensador en una señal de audio

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.