CIC滤波器的设计与仿真

        CIC滤波器已经被证明是在高速抽取和插值系统中非常有效的单元,具有结构简单,易于工程实现的特点。CIC滤波器是数据通讯中的常用模块,一般用于数字下变频(DDC)和数字上变频(DUC)系统,随着数据传输率的增加,级联梳状滤波器(CIC)的应用变得尤为重要。.CIC滤波器的主要特点是,仅利用加法器、减法器和寄存器(无需乘法器),适合工作在高采样率。在数字下变频(DDC)中,CIC(级联积分梳状)滤波器起着重要的作用.它主要用于采样速率的抽取,同时具有低通滤波的作用。针对软件无线电中的多速率信号处理,结合二进制补码表示法,介绍了积分梳状滤波器的基本组成原理,以及决定滤波器性能的参数选择。本文在研究CIC滤波器基本原理的基础上,对其进行了FPGA仿真、综合,并最终应用在工程中,达到了设计要求。

CIC(Cascaded Integral Comb)抽取滤波器,最初由Hogenauer提出,因为它结构简单,而且实现时无需乘法器和系数的存储,所以作为一种简单有效的抽样率转换方法,CIC已被广泛应用于通信和信号处理领域。CIC抽取滤波器通常是由一个积分梳状滤波器和一个抽取滤波器级联组合而成,其中,级联的积分梳状滤波器又分为积分部分和梳状部分,其传输函数表达式分别为

    CIC滤波器的设计与仿真

整个滤波器的传输函数为

CIC滤波器的设计与仿真                                (1-3)

其中,M为抽取器的抽取倍数,R为梳状部分的差分延迟,一般取值为1或2,N为级联的级数,尺度因子1/MR用来归一化滤波器的直流增益。在实现时,通常将后M倍抽取器提到梳状滤波器之前,此时只有积分器工作在输入的高采样率上,而滤波器则工作在抽取之后的低采样率上,这样就大大减少了计算量。图1.1给出了CIC抽取滤波器的框图(R

CIC滤波器的设计与仿真

图1.2  低通滤波器极-零图

CIC滤波器的设计与仿真

图1.3  低通滤波器幅频特性

=1)。

该滤波器的幅频和相频响应如图1.5所示。可以看出单级CIC滤波器的旁瓣电平是比较大的,只比主瓣低13.46dB,这意味着阻带衰减很差,难以满足一般的应用需求。为了降低旁瓣电平,可以采用多级CIC滤波器级联的办法解决,M级CIC滤波器级联,其阻带衰减将变为Q*13.46dB。在数字下变频芯片HSP50214中使用5级CIC滤波器,用来实现整数倍抽取。

  CIC滤波器的设计与仿真

图1.5  CIC滤波器的幅频和相频响应

5级CIC滤波器级联后的频率响应如图1.6所示,可见旁瓣衰减已经大于60dB。

CIC滤波器的设计与仿真

图1.6  5级CIC级联滤波器频率响应

参数要求:

fp:通带截止频率;(1500HZ)

fs:阻带起始频率;(2000HZ)

Rp:通带内波动,即通带内容许的最大衰减;(3dB)

Rs:阻带内最小衰减;(50dB)

fN:采样频率;(8000HZ)

wp:通带截止角频率;(1500/4000)

ws:阻带起始角频率;(2000/4000)

 

本例中,首先在Filter Type中选择Lowpass(低通滤波器);在Design Method选项中选择FIR Equiripple,接着在Frequency Specifications选项中选取Units为Hz;指定Fs为8000Hz,Fpass为1500Hz,Fstop为2000Hz,Wpass为0.375dB,Wstop为0.5dB。设置完以后点击Design Filter即可得到所设计的FIR滤波器。通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。设计完成后将

CIC滤波器的设计与仿真

CIC滤波器的设计与仿真

CIC滤波器的设计与仿真

CIC滤波器的设计与仿真

CIC滤波器的设计与仿真

在MATLAB中,对各种滤波器的设计都有相应的计算振幅响应的函数也可以用来做滤波器的程序设计。

%积分梳状滤波器的设计

clear;

clc;

%积分滤波器的响应

 

b1=1;

a1=[1 -1];

% freqz(b1,a1,'whole');

CIC滤波器的设计与仿真

 

hold on;

%梳状滤波器的响应

D=9;

b2=[1 zeros(1,D-1) -1];

a2=1;

% freqz(b2,a2,'whole');

CIC滤波器的设计与仿真

 

%积分梳状滤波器响应

b3=b2;

a3=a1;

% freqz(b3/D,a3,'whole');

CIC滤波器的设计与仿真

%两只内插因子为9的CIC级联响应

b4=conv(b3,b3);

a4=conv(a3,a3);

% freqz(b4/D^2,a4,'whole');

CIC滤波器的设计与仿真

%三只内插因子为9的CIC级联响应

b5=conv(b4,b3);

a5=conv(a4,a3);

% freqz(b5/D^3,a5,'whole');

CIC滤波器的设计与仿真

%四只内插因子为9的CIC级联响应

b6=conv(b4,b4);

a6=conv(a4,a4);

freqz(b6/D^4,a6,'whole');

CIC滤波器的设计与仿真

%五只内插因子为9的CIC级联响应

b7=conv(b6,b3);

a7=conv(a6,a3);

freqz(b7/D^5,a7,'whole');

CIC滤波器的设计与仿真

 

在下面的程序代码中,实现了两路(I和Q)宽度为9位的数据的16倍内插,内插滤波器采用5级级联CIC滤波器,最后输出宽度截取[28..0]中的[28..21]共8位数据。消耗的资源为771个LC,速度可达30MHz以上。