学****笔记: CIC filter及其matlab实现
References:
[1] Understanding cascaded integrator-comb filters – By Richard Lyons, Courtesy of Embedded Systems Programming URL: .com/articles/
[2] Example of Cascaded Integrator Comb filter in Matlab
[3] Digital Signal Processing – Principles, Algorithms and Applications , John G. Proakis, Dimitris G. Manolakis
CIC数字滤波器是窄带低通滤波器的高计算效率的实现形式,常常被嵌入到现代通信系统的抽取和插值模块的硬件实现中。
CIC filter 应用
CIC滤波器非常适合用作抽取之前的抗混迭滤波和插值之后的抗镜像滤波。这两种应用都跟very high-data-rate滤波有关,例如现代无线系统中硬件正交调制和解调,以及delta-sigma A/D 和 D/A 转换器。
Figure 1: CIC filter applications
因为CIC滤波器的幅频响应包络象sin(x)/x,通常在CIC滤波器之前或者之后都有一个high-performance linear-phase lowpass tapped-delay-line FIR filters, 用于补偿CIC滤波器不够平坦的通带。
CIC滤波器不需要乘法运算,易于硬件实现。
抽取CIC滤波器只不过是滑动平均滤波器的一个非常高效的迭代实现,有NR taps, 其输出再进行 R 抽取 . 同样,插值CIC滤波器在每两个输入采样之间插入R -1个0,然后通过一个NR -tap的工作在输出采样率ƒs ,out 的滑动平均滤波器。对于高采样率转换率的抽取和插值来说,Figure 1所示的级联形式的计算量大大低于单一FIR滤波器的计算量。
Recursive running-sum filter
Figure 2: D-point averaging filters
Figure 2a是标准的D-point moving-average 处理,需要D-1次加法运算和1次乘法运算。时域表达式:
Equation 1
z域表达式:
Equation 2
z域传递函数:
Equation 3
Figure 2b: 迭代running-sum filter,等价于figure 2a.
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)]
Equation 4
z域传递函数:
Equation 5
Equation 3 和 Equation 5 本质是一样的。Equation 3 是非递归表达式,equation 5是递归表达式。不考虑delay length D的话,递归形式只需要一个加法和一个减法运算。
例子:figure 1a的matlab实现,滑动平均滤波器,忽略scale factor
% Moving Average filter
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);
% transfer function of Moving Average filter
hF = fft(hn,1024);
plot([-512:511]/1024, abs(fftshift(hF)));
xlabel(’Normalized frequency’)
ylabel(’Amplitude’)
title(’frequency response of Moving average filter’)
Figure 1c的matlab实现
% Implementing Cascaded Integrator Comb filter with the
% comb s
CIC滤波器学习笔记 来自淘豆网www.taodocs.com转载请标明出处.