CIC 滤波器
% 多速率信号处理过程的关键是设计满足要求的抗混叠滤波器:
% 第一:滤波器在有用信号频段内的纹波系数满足要求;
% 第二:抽取或内插处理后,在有用信号频段内不产生频谱混叠;
% 第三:滤波器占用硬件资源少且运算速度快。
%
% CIC(积分梳状)滤波器及半带滤波器因为具有速度快、占用资源少等特点,
% 在多速率信号处理中得到了广泛的应用。
% CIC滤波器的结构简单,没有乘法器,只有加法器、积分器和寄存器,
% 适合于工作在高采样率条件下,而且CIC滤波器是一种基于零点相消的FIR滤波器,
% 已经被证明是在高速抽取或者插值系统中非常有效的单元。
CIC 滤波器——不同长度的单级CIC滤波器的频谱特性
%
% E6_3_SigCIC.m
% 用matlab仿真不同长度的单级CIC滤波器的频谱特性
%
M = 2; %滤波器长度
b = ones(1,M);
delta = [1,zeros(1,1023)];
s = filter(b,1,delta); %求取滤波器冲激响应
Spec = 20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec2 = Spec-max(Spec);
f = 0:length(Spec)-1;
f = 2*f/(length(Spec)-1); %对频率轴进行归一化处理
M=5; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s=filter(b,1,delta); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec5=Spec-max(Spec);
M=7; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s=filter(b,1,delta); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec7=Spec-max(Spec);
M=8; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s=filter(b,1,delta); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec8=Spec-max(Spec);
% plot(f,Spec2,f,Spec5,f,Spec7,f,Spec8);axis([0 1 -50 0]);grid;
% xlabel('归一化频率');ylabel('幅度(dB)');
% legend('M=2','M=5','M=7','M=8');
% grid;
plot(f,Spec2,'-',f,Spec5,'.',f,Spec8,'--');
axis([0 1 -50 0]);
xlabel('归一化频率');
ylabel('幅度(dB)');
legend('M=2','M=5','M=8');
title('不同长度的单级CIC滤波器的频谱特性','fontsize',10);
grid on;
上图中 横坐标为归一化频率,数值1相当于数据速率的一半。当滤波器的长度M远大于1时,第一旁瓣电平相对于主瓣电平的差值几乎是固定的13.46dB。显然,这样小的阻带衰减远不能满足较高的滤波要求。解决该问题的方法是对滤波器进行级联,每增加一级滤波器,则旁瓣电平衰减增加13.46dB。采用5级CIC滤波器级联,则旁瓣电平衰减变为67.3dB。增加滤波器级联数目虽然可以解决旁瓣电平衰减减小的问题,但是会带来其他不利影响。