CIC 데시 메이션 필터 사용시 FIR 필터 보상기


답변:


3

귀하의 질문에 대한 단일 답변은 없습니다 : 필터 설계 문제와 마찬가지로 요구 사항에 따라 다릅니다. Wikipedia 페이지 에서 잘 설명했듯이 CIC (cascaded-integrator-comb) 필터는 여러 쌍의 적분기와 빗 단계 (따라서 이름)로 구성됩니다. 각 적분기-콤브 스테이지에는 박스 카 필터와 동일한 집계 임펄스 응답이 있습니다 (즉, 직사각형 주파수 응답이있는 것). boxcar의 주파수 (크기) 응답은 sinc 함수와 유사한 모양을 갖기 때문에 전체 CIC 구조는 일부 power 에서 가져온 sinc 함수처럼 보이는 크기 응답을 갖습니다 . 여기서 은 적분기-콤브 스테이지 수입니다.NNN

그러나 응용 분야별 요구 사항에 따라 조정할 수있는 손잡이는 많지 않습니다. CIC 구조의 데시 메이션 / 보간 비율, 콤 딜레이 및 스테이지 수를 조정할 수는 있지만 여전히 이상적이지 않은 sinc와 같은 주파수 응답에 붙어 있습니다. 주엽은 상대적으로 높은 측엽을 가지고 있습니다. 따라서 CIC 다음에 전체 응답을 "정리"하는 다른 필터가 따르는 것이 일반적입니다.

문지름 : CIC를 적용한 후에 적용하는 보상 필터에서 필요한 사항은 애플리케이션에서 정의합니다. 실제로 중요한 것은 전체 캐스케이드의 응답으로 응용 프로그램의 요구에 따라 제한됩니다. "가장 적합한"특정 필터는 없습니다.


"직사각형 주파수 응답을 가진 것"을 쓴 곳, "사각형 임펄스 응답을 가진 것"을 의미하지 않습니까?
nibot

네 말이 맞아. 실수를 지적 해 주셔서 감사합니다.
Jason R

4

비슷한 질문 https://dsp.stackexchange.com/a/1551/306 이 있었고 다음은 다른 게시물의 답변 중 일부입니다.

일반적으로, CIC 필터를 보상하기 위해 CIC 필터 응답의 역이 보상 필터를 생성하는데 사용될 수있다. CIC의 응답은 2입니다

H(ω)=|sin(ωD/2)sin(ωM/2)|N

여기서 D는 미분 지연, M은 데시 메이션 비율, N은 필터 차수 (캐스케이드 필터 수)입니다. 역은 다음과 같이 지정할 수 있습니다

H(ω)=|sin(ωM/2)sin(ωD/2)|N

보상 필터의 주파수 응답이 확보되면 원하는 FIR 필터의 길이를 간단히 선택할 수 있습니다. FIR의 길이는 응용 프로그램에 따라 다릅니다. FIR 필터가 길수록 보상이 더 좋습니다.

다음은이 직선 보정의 도표입니다.

다음은 주파수 응답 및 플롯을 생성하는 Python 코드입니다.

numpy 가져 오기 sin, abs, pi import pylab에서 np를 np로 가져 오기

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')

참조 알테라, "이해 CIC 보상 필터를" 다른 접근법과를 들면, 근사 1 .sinc1

1 Altera, "CIC 보상 필터 이해"

2 R. Lyons, "디지털 신호 처리에 대한 이해", 2nd ed., Prentice Hall, Upper Saddle River, New Jersey, 2004


보상 필터에서 원하는 주파수 응답을 보여 주지만이 응답에 가까운 필터를 생성하는 필터 계수를 어떻게 얻습니까? 나는 그것이 질문이하는 것이라고 생각한다.
nibot

0

ISOP (Interpolated Second Order Polynomial)는 종종 CIC 통과 대역 드룹의 보상에 사용됩니다.

이 필터의 Matlab 응답은 다음을 사용하여 표시 할 수 있습니다.

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

요구 사항에 맞는 알파를 선택하는 것은 까다로운 부분입니다. 최악의 사전 성형품 무차별 시뮬레이션으로 0.001 씩 0에서 0.5로 반복하여 알파를 찾아 최고의 처짐 보정을 제공합니다. 통과 대역의 가장자리에서 최소 오차로 최상의 처짐 보정을 정의합니다.

효율성을 위해이 필터는 일반적으로 낮은 데이터 속도, 보간을위한 CIC 및 데시 메이션을위한 CIC 후에 배치됩니다.


이 보상 방법에 대한 다른 해석 / 설명은 dsp.stackexchange.com/questions/19584/… 를 참조하십시오 .
Dan Boschen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.