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.
filters
fft
filter-design
Jim Clay
fuente
fuente
Respuestas:
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])
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
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.
Ver [r1] para otros enfoques y aproximación .sinc−1
[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"
fuente
M=8
yN=9
crea los mismos gráficos que la referencia 1. Usé la nomenclatura más cercana a la referencia 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.
fuente
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
fuente