论文部分内容阅读
【摘 要】基于积分级联梳状(CIC)滤波器的工作原理,应用verilog HDL语言及Quartus II软件,通过引入分频器可以分别实现多级CIC抽取滤波器和多级CIC插值滤波器的功能,且能改变CIC滤波器的抽取率和插值率。并对仿真结果进行分析,验证了该设计方法的可靠性和可行性。
【关键词】CIC;分频器;FPGA;Quartus II
在数字信号处理中,随着采样速率的不断提高,采样之后的数据流速率会变的很高,这就会导致在后面的信号处理中的速度跟不上数据流速率。实现采样后速率的改变(抽取与内插)的关键问题是怎样实现一个满足抽取或内插(抗混叠)要求的数字滤波器。该滤波器性能的好坏直接影响采样后速率变换的效果及实时处理能力。积分级联梳状(CIC)滤波器就是一种被广泛应用于软件无线电中实现抽取或插值的滤波器。由于它结构简单,没有乘法器,只有加法器、积分器和寄存器,因此在高速率不宜进行过多乘法运算的系统中,相对于普通的FIR滤波器来说具有较大的优势。本文介绍的设计方法可以方便的实现CIC抽取滤波器与插值滤波器之间的转换,并能根据要求改变相应的抽取速率和插值速率。
一、 CIC滤波器的结构和工作原理
CIC滤波器是一种基于零极点相抵消的FIR滤波器,由图可知它包括三个基本组成部分:积分器、抽取器和梳状滤波器,如图1-1和图1-2所示,积分部分的积分器是单极点的IIR滤波器,并且反馈系数为1,也可看成是累加器,根据Z變化,积分器的传输函数为,梳状滤波器是一个对称的FIR滤波器。其传输函数为,式中,D是设计参数,称为微分延迟,则一个多级CIC滤波器的传递函数为。
二、 CIC滤波器的设计方案
设计的CIC滤波器原理方框图,它包含分频器fre_div,CIC抽取滤波器cic_cq,CIC插值滤波器cic_cz三个部分,通过控制分频器的E端口,可控制CIC抽取滤波器和CIC插值滤波器的选取,当E=1’b1时,CIC抽取滤波器选通;当E=1’b0时,CIC插值滤波器选通。x_in是数据输入端口,clk,clk1是CIC滤波器的时钟输入端口,en是控制CIC滤波器的选通端口,y_out是CIC抽取滤波器的输出端口,yz_out是CIC插值滤波器的输出端口 。
三、程序设计
该程序使用verilogHDL语言实现一个3级、抽取率为2和插值率为2的8位CIC抽取滤波器。
分频器模块部分程序如下:
…………..
assign clkk=clock,
clk11=cnt[0];
always@(posedge clock)
begin
if(E==1'b0)
en0<=1’b0;
else
en0<=1’b1;
end
………….
通过改变clkk,clk11的赋值就可以改变CIC抽取滤波器与CIC插值滤波器的抽取率和插值率。
CIC抽取滤波器模块的部分程序如下:
…………….
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//积分滤波
……………………..
c1<={c1[7:0],i3_out3};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
y_out<=c3[7:0]-c3[15:8];//梳状滤波
…………………….
CIC插值滤波器模块的部分程序如下:
…………..
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//积分滤波
…………….
if(clk1==1'b1)
temp<=8'b0;//2倍插值
else
temp<=i3_out3;
c1<={c1[7:0],temp};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
yz_out<=c3[7:0]-c3[15:8];//梳状滤波
四、仿真结果及分析
源程序经过Quartus II和Modelsim完成综合、仿真,波形变化情况是当E为高电平时,选通的是CIC抽取滤波器,在经过15个时钟后抽取滤波器才开始抽取,这是由于添加了中间寄存器造成的。当E为低电平时,选通的是CIC插值滤波器,经过19个时钟后,插值滤波器才开始输出2倍过采样输出,这是由于添加了中间寄存器造成的。
五、结束语
经过对仿真结果的分析,验证了该设计方法的有效性。基于FPGA进行电路设计,在同一模块中可方便的实现两种不同功能的滤波器之间的转换,大大减少了开发成本和缩短了开发时间,设计人员可以根据需要来修改程序,极大的提高了设计的灵活性和通用性。
参考文献:
[1]马建国,孟宪元.FPGA现代数字系统设计.北京:清华大学出版社,2010.4.
[2]姜宇柏,黄志强,等.通信收发信机的Verilog实现与仿真,北京:机械工业出版社,2006.10.
[3]洗进,等.Verilog HDL数字控制系统设计实例,北京:中国水利水电出版社,2007.
【关键词】CIC;分频器;FPGA;Quartus II
在数字信号处理中,随着采样速率的不断提高,采样之后的数据流速率会变的很高,这就会导致在后面的信号处理中的速度跟不上数据流速率。实现采样后速率的改变(抽取与内插)的关键问题是怎样实现一个满足抽取或内插(抗混叠)要求的数字滤波器。该滤波器性能的好坏直接影响采样后速率变换的效果及实时处理能力。积分级联梳状(CIC)滤波器就是一种被广泛应用于软件无线电中实现抽取或插值的滤波器。由于它结构简单,没有乘法器,只有加法器、积分器和寄存器,因此在高速率不宜进行过多乘法运算的系统中,相对于普通的FIR滤波器来说具有较大的优势。本文介绍的设计方法可以方便的实现CIC抽取滤波器与插值滤波器之间的转换,并能根据要求改变相应的抽取速率和插值速率。
一、 CIC滤波器的结构和工作原理
CIC滤波器是一种基于零极点相抵消的FIR滤波器,由图可知它包括三个基本组成部分:积分器、抽取器和梳状滤波器,如图1-1和图1-2所示,积分部分的积分器是单极点的IIR滤波器,并且反馈系数为1,也可看成是累加器,根据Z變化,积分器的传输函数为,梳状滤波器是一个对称的FIR滤波器。其传输函数为,式中,D是设计参数,称为微分延迟,则一个多级CIC滤波器的传递函数为。
二、 CIC滤波器的设计方案
设计的CIC滤波器原理方框图,它包含分频器fre_div,CIC抽取滤波器cic_cq,CIC插值滤波器cic_cz三个部分,通过控制分频器的E端口,可控制CIC抽取滤波器和CIC插值滤波器的选取,当E=1’b1时,CIC抽取滤波器选通;当E=1’b0时,CIC插值滤波器选通。x_in是数据输入端口,clk,clk1是CIC滤波器的时钟输入端口,en是控制CIC滤波器的选通端口,y_out是CIC抽取滤波器的输出端口,yz_out是CIC插值滤波器的输出端口 。
三、程序设计
该程序使用verilogHDL语言实现一个3级、抽取率为2和插值率为2的8位CIC抽取滤波器。
分频器模块部分程序如下:
…………..
assign clkk=clock,
clk11=cnt[0];
always@(posedge clock)
begin
if(E==1'b0)
en0<=1’b0;
else
en0<=1’b1;
end
………….
通过改变clkk,clk11的赋值就可以改变CIC抽取滤波器与CIC插值滤波器的抽取率和插值率。
CIC抽取滤波器模块的部分程序如下:
…………….
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//积分滤波
……………………..
c1<={c1[7:0],i3_out3};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
y_out<=c3[7:0]-c3[15:8];//梳状滤波
…………………….
CIC插值滤波器模块的部分程序如下:
…………..
i1<={i1[7:0],x_in};
i2<={i2[7:0],i1_out1};
i3<={i3[7:0],i2_out2};
i1_out1<=i1[15:8]+i1[7:0];
i2_out2<=i2[15:8]+i2[7:0];
i3_out3<=i3[15:8]+i3[7:0];//积分滤波
…………….
if(clk1==1'b1)
temp<=8'b0;//2倍插值
else
temp<=i3_out3;
c1<={c1[7:0],temp};
c2<={c2[7:0],c1_out1};
c3<={c3[7:0],c2_out2};
c1_out1<=c1[7:0]-c1[15:8];
c2_out2<=c2[7:0]-c2[15:8];
yz_out<=c3[7:0]-c3[15:8];//梳状滤波
四、仿真结果及分析
源程序经过Quartus II和Modelsim完成综合、仿真,波形变化情况是当E为高电平时,选通的是CIC抽取滤波器,在经过15个时钟后抽取滤波器才开始抽取,这是由于添加了中间寄存器造成的。当E为低电平时,选通的是CIC插值滤波器,经过19个时钟后,插值滤波器才开始输出2倍过采样输出,这是由于添加了中间寄存器造成的。
五、结束语
经过对仿真结果的分析,验证了该设计方法的有效性。基于FPGA进行电路设计,在同一模块中可方便的实现两种不同功能的滤波器之间的转换,大大减少了开发成本和缩短了开发时间,设计人员可以根据需要来修改程序,极大的提高了设计的灵活性和通用性。
参考文献:
[1]马建国,孟宪元.FPGA现代数字系统设计.北京:清华大学出版社,2010.4.
[2]姜宇柏,黄志强,等.通信收发信机的Verilog实现与仿真,北京:机械工业出版社,2006.10.
[3]洗进,等.Verilog HDL数字控制系统设计实例,北京:中国水利水电出版社,2007.