Ao dizimar um sinal de banda estreita com um filtro CIC (Cascadeed Integrator-Comb) , qual filtro FIR é mais adequado para compensar a resposta de frequência CIC?
Ao dizimar um sinal de banda estreita com um filtro CIC (Cascadeed Integrator-Comb) , qual filtro FIR é mais adequado para compensar a resposta de frequência CIC?
Respostas:
Não há uma resposta única para sua pergunta: como em qualquer problema de projeto de filtro, isso depende de seus requisitos. Conforme descrito muito bem na página da Wikipedia , os filtros CIC (cascaded-integrator-comb) consistem em vários pares de estágios de integrador e pente (daí o nome). Cada estágio do integrador-pente possui uma resposta de impulso agregada equivalente a um filtro de vagão (por exemplo, um com uma resposta de freqüência retangular). A resposta de frequência (magnitude) de um vagão coberto tem uma forma semelhante a uma função sinc, de modo que a estrutura geral do CIC terá uma resposta de magnitude que se parece com uma função sinc levada a alguma potência , onde N é o número de estágios integrador-pente.
Entretanto, não há muitos botões para você ajustar com base em requisitos específicos de aplicativos. Você pode ajustar a taxa de dizimação / interpolação da estrutura do CIC, o atraso do pente e o número de estágios, mas ainda está com a resposta de frequência do tipo sinc, que não é particularmente ideal, pois não é plana na lóbulo principal e possui lóbulos laterais relativamente altos. Portanto, é típico que um CIC seja seguido por outro filtro que "limpe" a resposta geral.
O problema: o que você precisa de qualquer filtro de compensação que você colocar após o CIC será definido pelo seu aplicativo. O que é realmente importante é a resposta da cascata geral, que você restringiria com base nas necessidades do seu aplicativo. Não há filtro específico que seja "mais adequado".
Havia uma pergunta semelhante, https://dsp.stackexchange.com/a/1551/306 , e o seguinte é um subconjunto da resposta da outra postagem.
Geralmente, para compensar um filtro CIC, o inverso da resposta dos filtros CIC pode ser usado para gerar o filtro de compensação. A CIC tem uma resposta de 2
Onde D é o atraso diferenciado, M é a taxa de dizimação e N é a ordem dos filtros (número de filtros em cascata). O inverso pode ser especificado como
Uma vez que tenhamos a resposta de frequência do filtro de compensação, podemos simplesmente escolher o comprimento do filtro FIR que desejamos. O comprimento do FIR é específico da aplicação. Obviamente, quanto mais tempo o filtro FIR, melhor a compensação.
A seguir, são apresentados gráficos dessa compensação direta.
A seguir, é apresentado o código Python para criar as respostas e gráficos de frequência.
importar numpy como np de numpy importar sin, abs, pi importar 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')
1 Altera, "Entendendo os filtros de compensação CIC"
2 R. Lyons, "Understanding Digital Signal Processing", 2ª ed., Prentice Hall, Upper Saddle River, Nova Jersey, 2004
Os ISOP (Polinômios Interpolados de Segunda Ordem) são frequentemente usados para compensar a queda da banda passante CIC.
A resposta do Matlab desse filtro pode ser mostrada usando:
alpha = 0.01 ;
b = [1, alpha, -alpha] ;
h = mfilt.firsrc(1,1,b)
freqz( b )
Escolher o alfa para seus requisitos é a parte complicada. No pior dos casos, simulações de força bruta da pré-forma, repetindo de 0 a 0,5 em incrementos de 0,001, encontrando o alfa que resulta na melhor compensação de inclinação. Definindo a melhor compensação de inclinação como um erro mínimo na borda da sua faixa de passagem.
Por questões de eficiência, esse filtro é normalmente colocado na taxa de dados mais baixa, antes do CIC para interpolação e depois do CIC para dizimação.