- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGACIC滤波器设计与仿真
基于FPGACIC滤波器设计与仿真
【摘 要】基于积分级联梳状(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==1b0)
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==1b1)
temp=8b0;//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
文档评论(0)