Aşağıda CIC telafisi ele alınmaktadır ve genel bir "bozulma" tekniği değildir. Ancak, değişken olmayan "distorsiyonu" telafi etmek için basit bir yöntemdir. Frekans cevabı biliniyorsa, frekansın tersi telafi etmek için kullanılabilir. Az karmaşıklık nedeniyle zayıf bir filtrenin kullanılabileceği CIC filtresi gibi örnekler daha sonra sinyal zincirinde telafi edilir. Bu örnekte frekans yanıtı bilinmekte ve tersi kullanılabilmektedir. Çok oranlı filtrelerde, yalnızca ara vermeden sonra "kullanılabilir" spektrumu kullanmak istediğinizi unutmayın.
Genel olarak, bir CIC filtresini telafi etmek için telafi filtresini üretmek üzere CIC filtrelerinin yanıtının tersi kullanılabilir. CIC'nin yanıtı vardır (bakınız referans [r2] veya [r3])
'H( ω ) = ∣||s i n ( ω D / 2 )s i n ( ω M/ 2)|||N-
D'nin farklı gecikme olduğu durumda, M, decimation hızıdır ve N, filtre sırasıdır (basamaklı filtre sayısı). Tersi olarak belirtilebilir
'H( ω ) = ∣||s i n ( ω M/ 2)s i n ( ω D / 2 )|||N-
Telafi filtresinin frekans cevabını aldıktan sonra, istediğimiz FIR filtresinin uzunluğunu seçebiliriz. FIR uzunluğu uygulamaya özgüdür. Açıkçası FIR filtresi ne kadar uzun olursa o kadar iyi telafi edilir.
Aşağıdakiler, bu düz ileri tazminatın çizimleridir.
Frekans cevapları ve grafikleri oluşturmak için Python kodu aşağıdadır.
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')
s i n c- 1
[r1] Altera, "CIC telafi filtrelerini anlama"
[r2] R. Lyons, "Dijital Sinyal İşlemeyi Anlamak", 2. Baskı, Prentice Hall, Yukarı Eyer Nehri, New Jersey, 2004
[r3] R. Lyons, "Basamaklı Entegratör Tarak Filtrelerini Anlama"