CIC滤波器学习笔记.docx
《CIC滤波器学习笔记.docx》由会员分享,可在线阅读,更多相关《CIC滤波器学习笔记.docx(8页珍藏版)》请在冰豆网上搜索。
CIC滤波器学习笔记
学习笔记:
CICfilter及其matlab实现
References:
[1]Understandingcascadedintegrator-combfilters–ByRichardLyons,CourtesyofEmbeddedSystemsProgrammingURL:
.com/articles/article10028.html
[2]ExampleofCascadedIntegratorCombfilterinMatlab
[3]DigitalSignalProcessing–Principles,AlgorithmsandApplications,JohnG.Proakis,DimitrisG.Manolakis
CIC数字滤波器是窄带低通滤波器的高计算效率的实现形式,常常被嵌入到现代通信系统的抽取和插值模块的硬件实现中。
CICfilter应用
CIC滤波器非常适合用作抽取之前的抗混迭滤波和插值之后的抗镜像滤波。
这两种应用都跟veryhigh-data-rate滤波有关,例如现代无线系统中硬件正交调制和解调,以及delta-sigmaA/D和D/A转换器。
Figure1:
CICfilterapplications
因为CIC滤波器的幅频响应包络象sin(x)/x,通常在CIC滤波器之前或者之后都有一个high-performancelinear-phaselowpasstapped-delay-lineFIRfilters,用于补偿CIC滤波器不够平坦的通带。
CIC滤波器不需要乘法运算,易于硬件实现。
抽取CIC滤波器只不过是滑动平均滤波器的一个非常高效的迭代实现,有NRtaps,其输出再进行R抽取.同样,插值CIC滤波器在每两个输入采样之间插入R-1个0,然后通过一个NR-tap的工作在输出采样率?
s,out的滑动平均滤波器。
对于高采样率转换率的抽取和插值来说,Figure1所示的级联形式的计算量大大低于单一FIR滤波器的计算量。
Recursiverunning-sumfilter
Figure2:
D-pointaveragingfilters
Figure2a是标准的D-pointmoving-average处理,需要D-1次加法运算和1次乘法运算。
时域表达式:
Equation1
z域表达式:
Equation2
z域传递函数:
Equation3
Figure2b:
迭代running-sumfilter,等价于figure2a.
y(n)=1/D*[x(n)+x(n-1)+…+x(n-D+1)]
y(n-1)=1/D*[x(n-1)+x(n-2)+x(n-D+1)+x(n-D)]
y(n)–y(n-1)=1/D*[x(n)–x(n-D)]
Equation4
z域传递函数:
Equation5
Equation3和Equation5本质是一样的。
Equation3是非递归表达式,equation5是递归表达式。
不考虑delaylengthD的话,递归形式只需要一个加法和一个减法运算。
例子:
figure1a的matlab实现,滑动平均滤波器,忽略scalefactor
%MovingAveragefilter
N=10;%延时
xn=sin(2*pi*[0:
.1:
10]);%n=[0:
1:
100];sin(2*pi*f*t)=sin(2*pi*f*T*n)=>f=1Hz,fs=10Hz.
hn=ones(1,N);%脉冲响应
y1n=conv(xn,hn);
%transferfunctionofMovingAveragefilter
hF=fft(hn,1024);
plot([-512:
511]/1024,abs(fftshift(hF)));
xlabel(’Normalizedfrequency’)
ylabel(’Amplitude’)
title(’frequencyresponseofMovingaveragefilter’)
Figure1c的matlab实现
%ImplementingCascadedIntegratorCombfilterwiththe
%combsectionfollowingtheintegratorstage
N=10;
delayBuffer=zeros(1,N);
intOut=0;
xn=sin(2*pi*[0:
.1:
10]);
forii=1:
length(xn)
%combsection
combOut=xn(ii)–delayBuffer(end);
delayBuffer(2:
end)=delayBuffer(1:
end-1);
delayBuffer
(1)=xn(ii);
%integrator
intOut=intOut+combOut;
y2n(ii)=intOut;
end
err12=y1n(1:
length(xn))–y2n;
err12dB=10*log10(err12*err12′/length(err12))%identicaloutputs
closeall
先integrator后comb的实现
%ImplementingCascadedIntegratorCombfilterwiththe
%integratorsectionfollowingthecombstage
N=10;
delayBuffer=zeros(1,N);
intOut=0;
xn=sin(2*pi*[0:
.1:
10]);
forii=1:
length(xn)
%integrator
intOut=intOut+xn(ii);
%combsection
combOut=intOut–delayBuffer(end);
delayBuffer(2:
end)=delayBuffer(1:
end-1);
delayBuffer
(1)=intOut;
y3n(ii)=combOut;
end
err13=y1n(1:
length(xn))–y3n;
err13dB=10*log10(err13*err13′/length(err13))%identicaloutputs
CICfilterstructures
Figure2c:
theclassicformof1st-orderCICfilter,忽略figure2b中的1/D因子。
其中前馈部分称为combsection,其differentialdelay是D;反馈部分称为积分器。
差分方程:
Equation6
Equation7
Figure3:
Single-stageCICfiltertime-domainresponseswhenD=5
Figure2c这个1阶CIC滤波器看做是2部分的级联。
Figure3a是combstage的脉冲响应,figure3b是积分器的脉冲响应,figure3c是整个系统的脉冲响应。
系统的脉冲响应是一个矩形序列,等价于moving-averagefilter和recursiverunning-sumfilter的单位脉冲响应,仅仅相差一个常数的scalefactor。
Figure4:
Characteristicsofasingle-stageCICfilterwhenD=5
1阶CIC滤波器的频率响应,Equation7在单位圆上的z变换:
Equation8
Equation9
IfweignorethephasefactorinEquation9,thatratioofsin()termscanbeapproximatedbyasin(x)/xfunction.ThismeanstheCICfilter'sfrequencymagnituderesponseisapproximatelyequaltoasin(x)/xfunctioncenteredat0HzasweseeinFigure4a.(ThisiswhyCICfiltersaresometimescalledsincfilters.)
虽然在单位圆上有极点,但是CIC滤波器的系数都是1,滤波器系数没有量化误差,因此CIC滤波器并不存在通常滤波器因在单位圆上有极点而导致的风险。
虽然有递归,但是CIC滤波器是稳定的,线性相位的,有有限长度的脉冲响应。
在0Hz处(DC),CIC滤波器增益等于comb滤波器delayD.
CIC滤波器在抽取和插值中的应用
Figure5:
Single-stageCICfiltersusedindecimationandinterpolation
大多数的CIC滤波器的ratechangeR等于comb的差分延时D.
Figure6:
Magnituderesponseofa1st-order,D=8,decimatingCICfilter:
beforedecimation;aliasiingafterR=8decimation