- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
32阶FIR滤波器的FPGA实现随着软件无线电的发展。对于滤波器的处理速度要求越来越高。传统的FIR滤波器一般采用通用DSP处理器,但是DSP处理器采用的是串行运算,而FPGA是现场可编程阵列,可以实现专用集成电路,另外还可以采用纯并行结构及考虑流水线结构,因此在处理速度上可以明显高于DSP处理器。本文采用并行分布式算法在FPGA上设计并实现了高速处理的32阶FIR低通滤波器,在此过程中利用Matlab的数值计算与分析功能来提高设计效率。
1 FlR低通滤波器的窗函数实现??? 理想的滤波器频率响应中傅里叶反变换ha(n)一定是无限长的序列,而且是非因果的,而实际要设计的滤波器h(n)是有限长的,因此要用有限长来逼近无限长的,其方法就是用一个有限长度的窗口函数序列ω(n)来截取,即:??? ??? 常见的窗函数有矩形窗、巴特利特窗、汉宁窗、哈明窗、布莱克曼窗、凯泽窗。其中,凯泽窗提供了可变的过渡带宽。本文采用凯泽窗对FIR滤波器进行设计,其窗函数表达式为:??? ??? I0[?]为第一类变形零阶贝赛尔函数,形状参数β为依赖于滤波器阶数M的参数,用来调整主瓣宽度与旁瓣衰减,选择M可产生各种过渡带宽和接近最优的阻带衰减。给定通带截止频率ωp,阻带起始频率ωs,阻带衰减As,凯泽窗设计中有经典公式可供使用,如下:??? 过渡带宽:??? ??? 滤波器阶数:???
假设低通数字滤波器设计指标如下:
???
采用上面介绍的凯泽窗,利用Matlab编程计算得到32阶FIR低通滤波器参数如下:
??? ??? 32阶FIR低通滤波器幅频特性图如图1所示。
??? 上述求得的系数是浮点型的,而在FPGA设计中使用的数据是定点型的,所以在设计滤波器之前要将系数转化为定点型,即系数的量化。在本文中采用数字信号处理(DSP)技术中的Q值法对系数进行量化。为了兼顾精度和所占用的资源,本文的系数用12位二进制来量化,得到的整数系数结果如下:
2 并行分布式算法原理及FPGA设计??? 32阶FIR滤波器的差分方程表达式为:
??? ??? 式中:x(n)为输入;y(n)为输出;h(n)为滤波器系数。??? 设x(n)用二进制可表示为:
??? ??? 其中,最高位为符号位。则式(7)可写为:
??? 式(10)为并行分布式算法,由上可以看出并行分布式算法是将滤波器表达式重新排列,分别加权求和。与传统算法最大的不同之处是在FPGA设计过程中以查找表代替乘法器,即根据输入数据的不同,将对应的滤波器系数预先求和保存在ROM中,也就是将每一项的乘法求和通过并行结构查表寻值完成,提高运行速度。??? 具体FPGA实现时,首先将12位的输人数据并行输入到12列32位移位寄存器分别寄存,然后以寄存器中的值为地址,对应于查找表的结果,按照式(10),每列进行相应二次幂加权,最后各列累加,在第32个数据完全输入之后得到正确的滤波器输出。由于输入数据的延迟,在此之前滤波器输出会延迟或者产生不正确的结果,可以在实现过程中加入控制信号进行输出控制。由于查找表的规模是随着地址的增加呈指数增加的,可以将32位的查找表划分为四个8位的查找表,从而降低对ROM的需求。??? 在本设计中可采用多级流水线技术,也就是将在明显制约系统速度的长路径上插入几级寄存器,虽然流水线会影响器件资源的使用量,但它降低了寄存器间的传播时延,允许维持高的系统时钟速率。
3 FPGA仿真与验证??? 由于直接将大量数据进行硬件仿真验证很不方便,因此利用Matlab产生一个采样频率为100 MHz,频率分别为1 MHz与30 MHz的两个正弦信号相加后,作为输入信号。同样,浮点变为定点,将此信号进行12位量化,并将负数转化为补码形式,按照一定格式保存为.vec文件,导入到Quartus中进行仿真,时序功能仿真结果如图2所示。
??? 其中,clk为时钟信号,x_in为滤波器输入信号,y为滤波器输出信号。图2并不能很直观地看出并行分布式算法产生的滤波效果,可以将Quartus中.vwf文件转化为.tbl文件,在Matlab中按照一定形式编程可以得到时域及频域波形图,如图3,图4所示。
??? 图3,图4中,软件仿真是直接在Matlab中用输入信号与滤波系数卷积得到的,在时域波形中软件仿真输出信号与理想信号相比有一定时间延迟,而Quartus仿真与软件仿真结果中幅度的差别是由于硬件输入量化产生的。??? 从时域或者频域波形图可以看出,频率为30 MHz的信号被滤除掉,只有频率为1 MHz的信号通过滤波器,达到了滤波的目的。
4 结 语??? 本设计选用Stratix系列芯片,最大处理速度可以达到200 MHz以上。本文没有考虑线性相位的滤波
文档评论(0)