Compensador de filtro FIR cuando se usa un filtro de decimación CIC


Respuestas:


3

No hay una respuesta única a su pregunta: como con cualquier problema de diseño de filtro, depende de sus requisitos. Como se describe bastante bien en la página de Wikipedia , los filtros CIC (cascaded-integrator-comb) consisten en una serie de pares de etapas integrador y comb (de ahí el nombre). Cada etapa integrador-peine tiene una respuesta de impulso agregada que es equivalente a un filtro de vagón (es decir, uno con una respuesta de frecuencia rectangular). La respuesta de frecuencia (magnitud) de un vagón tiene una forma que se asemeja a una función sinc, por lo que la estructura CIC general tendrá una respuesta de magnitud que se parece a una función sinc llevada a cierta potencia , donde es el número de etapas de peine integrador.Nnortenorte

Sin embargo, no hay muchos mandos para ajustar en función de los requisitos específicos de la aplicación. Puede ajustar la relación de diezmado / interpolación de la estructura CIC, el retardo de peine y el número de etapas, pero todavía está atascado con la respuesta de frecuencia tipo sinc, que no es particularmente ideal, ya que no es plana en todo el lóbulo principal y tiene lóbulos laterales relativamente altos. Por lo tanto, es típico que un CIC sea seguido por otro filtro que "limpie" la respuesta general.

El problema: lo que necesita de cualquier filtro de compensación que ponga después de que el CIC será definido por su aplicación. Lo realmente importante es la respuesta de la cascada general, que restringiría en función de las necesidades de su aplicación. No hay un filtro específico que sea "más adecuado".


Cuando escribió "uno con una respuesta de frecuencia rectangular", ¿no quiere decir "uno con una respuesta de impulso rectangular ?
nibot

Sí tienes razón. Gracias por señalar el error.
Jason R

4

Hubo una pregunta similar, /signals//a/1551/306 , y la siguiente es un subconjunto de la respuesta de la otra publicació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 2

H(ω)=El |syonorte(ωre/ /2)syonorte(ωMETRO/ /2)El |norte

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(ω)=El |syonorte(ωMETRO/ /2)syonorte(ωre/ /2)El |norte

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.

importar numpy como np de 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')

syonorteC-1

1 Altera, "Comprender los filtros de compensación CIC"

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


Muestra la respuesta de frecuencia que se desea en el filtro de compensación ... pero ¿cómo se obtienen los coeficientes de filtro que producen un filtro que se aproxima a esta respuesta? Creo que esa es la pregunta.
nibot

0

Los ISOP (polinomios de segundo orden interpolados) se utilizan a menudo para compensar la caída de la banda de paso CIC.

La respuesta de Matlab de este filtro se puede mostrar usando:

alpha = 0.01 ;
b     = [1, alpha, -alpha] ; 
h     = mfilt.firsrc(1,1,b)
freqz( b )

Elegir el alfa para sus requisitos es la parte difícil. En el peor de los casos, simulaciones de fuerza bruta de preformas, haciendo un bucle de 0 a 0.5 en incrementos de 0.001 para encontrar el alfa que resulta en la mejor compensación de caída Definir la mejor compensación de caída como un error mínimo en el borde de su banda de paso.

Para mayor eficiencia, este filtro normalmente se coloca a la velocidad de datos más baja, antes del CIC para la interpolación y después del CIC para la aniquilación.


Consulte Ver dsp.stackexchange.com/questions/19584/… para obtener otra interpretación / explicación de este enfoque de compensación.
Dan Boschen
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.