다음은 CIC 보상을 다루며 일반적인 "왜곡"기술이 아닙니다. 그러나 그것은 변하지 않는 "왜곡"을 "보상"하는 간단한 방법입니다. 주파수 응답이 알려진 경우 주파수의 역을 사용하여 보상 할 수 있습니다. 복잡성이 감소하여 불량한 필터를 사용할 수있는 CIC 필터와 같은 예는 나중에 신호 체인에서 보상됩니다. 이 예에서는 주파수 응답을 알고 역수를 사용할 수 있습니다. 다중 속도 필터에서는 데시 메이션 후 "사용 가능한"스펙트럼 만 사용하려고합니다.
일반적으로, CIC 필터를 보상하기 위해 CIC 필터 응답의 역이 보상 필터를 생성하는데 사용될 수있다. CIC의 응답은 다음과 같습니다 (참조 [r2] 또는 [r3] 참조)
H(ω)=∣∣∣sin(ωD/2)sin(ωM/2)∣∣∣N
여기서 D는 미분 지연, M은 데시 메이션 비율, N은 필터 차수 (캐스케이드 필터 수)입니다. 역은 다음과 같이 지정할 수 있습니다
H(ω)=∣∣∣sin(ωM/2)sin(ωD/2)∣∣∣N
보상 필터의 주파수 응답이 확보되면 원하는 FIR 필터의 길이를 간단히 선택할 수 있습니다. FIR의 길이는 응용 프로그램에 따라 다릅니다. FIR 필터가 길수록 보상이 더 좋습니다.
다음은이 직선 보정의 도표입니다.
다음은 주파수 응답 및 플롯을 생성하는 Python 코드입니다.
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')
다른 접근법과 근사값 은 [r1]을 참조하십시오 .sinc−1
[r1] Altera, "CIC 보상 필터 이해"
[r2] R. Lyons, "디지털 신호 처리 이해하기", 2nd ed., Prentice Hall, Upper Saddle River, 2004, 뉴저지
[r3] R. Lyons, "캐스케이드 인티 그레이터 콤 필터 이해"