欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于FPGA的高速FIR数字滤波器设计

时间:2011-04-24  作者:秩名
3.用MATLAB设计FIR滤波器

MATLAB中的FDATOOL是一个功能强大的设计、分析滤波器的工具。通过设置相关参数,从MATLAB工作空间导出滤波器,直接指定滤波器系数,可以快速设计出FIR或者IIR数字滤波器。FDATOOL同时提供了滤波器分析工具,例如级数图、相位响应图和零极点图[4]。

本设计实现的是高速FIR低通滤波器对语音信号进行滤波。语音信号的频率范围是100-4500Hz,因此FIR滤波器的采样频率定为9000Hz,低通滤波器的截止频率定为4000Hz,选择汉明窗函数,阻带最小衰减-53dB,阶数为8,输入数据宽度8位,输出数据宽度10位,滤波器幅频响应波形如图1所示。

图1 MATLAB中的波形

参数设定后生成的滤波器系数如下:

h(0)=h(7)=-0.       h(1)=h(6)=0.

h(2)=h(5)=-0.1180504784h(3)=h(4)=0.598387897

4.FIR滤波器的FPGA实现

4.1 系数的量化处理

由MATLAB求出的系数可以看到,滤波器的系数是用浮点数表示并且有正负,但FPGA是定点数运算,这就涉及到浮点数到定点数的转化和负数的处理。本文是将表中的系数同时乘以1024即倍,将结果量化成整数,并用11位的二进制补码表示如下:

h(0)= h(7)=11111111101h(1)= h(6)=

h(2)= h(5)=11110000111h(3)= h(4)=

其中,最高位为符号位,负数用1表示,正数用0表示。这样,量化编码解决了定点数问题,补码解决了系数的正负数问题。需要注意的是:最后的输出结果相应地要除以1024。

4.2 本设计的实现

本设计所使用器件是Xilinx的Virtex-Ⅱ系列xc2vp30型号的芯片,EDA工具是Xilinx ISE 8.2i和Modelsim XE6.1。科技论文。本文的8阶FIR滤波器采用DA算法及其串-并结构实现,框图如图2所示。

图2 滤波器结构框图

采样数据为正数,因此输入数据宽度定为8位原码,查找表求和后输出数据有正有负,因此宽度定为20位补码,最高位为符号位,这是根据输出的数据范围确定的,将输出结果除以1024即取20位的高10位作为最后的输出。采用DA算法查找表结构的滤波器,实际上都是系数在作算术运算,输入的8位采样值并没有参加运算,只是起到了作为查找表地址的作用,因此整个过程是补码运算完成的。

从图2可知:移位寄存器组将采样值进行循环,每个时钟周期循环一次,始终保持8个采样值在寄存器组中,同时每个时钟周期将8个采样值的相同位分别送给8组RAM1和RAM2作为地址,共需16个RAM。8组RAM将输出值送入加法器求和,求和后再与位权相乘,最后再次求和即为输出值。需要注意的是:本文中,从加法器输出的补码与位权相乘,VHDL程序是通过移位操作实现的。

5、设计的时序仿真及资源的使用

5.1 综合报告分析

综合是FPGA设计流程中的重要环节,综合结果的优劣直接影响布局布线结果的最终效能。使设计占用芯片的面积最小,工作频率最快,这是评定综合器优劣的两个重要指标。本设计使用的综合工具是XST,经过综合后的资源使用和时序报告如下:

Device utilizationsummary:

Selected Device :2vp30ff896-6

Number ofSlices:204out of 13696 1%

Number of Slice FlipFlops: 208out of 27392 0%

Number of 4 input LUTs:361out of 27392 1%

Number of bondedIOBs:19out of 556 3%

Number ofGCLKs: 1 outof 16 6%

Number used as logic: 353

Number used as Shiftregisters: 8

Number ofIOs:19

Timing Summary:

Speed Grade: -6

Minimum period: 3.293ns(Maximum Frequency: 303.674MHz)

Minimum input arrivaltime before clock: 1.716ns

Maximum output requiredtime after clock: 14.179ns

Maximum combinationalpath delay: No path found

经布局布线后资源使用报告如下:

Device Utilization Summary:

Number ofBUFGMUXs1out of 16 6%

Number of ExternalIOBs 19out of 556 3%

Number of LOCedIOBs 0out of 19 0%

Number ofSLICEs245out of 13696 1%

从以上数据可以看出,采用DA算法不仅节省了资源并且提高了工作速度。最高工作频率可以达到303.674MHz,完全满足采样率要求。此外,当阶数高时,由于FIR滤波器的系数是对称的,可利用这一特性来改进,以达到减少资源使用的目的。串行DA算法减少了资源的使用,但不能提高速度,并行DA算法提高了速度,但是以增加资源为代价的。面积和速度这两个要求贯穿FPGA设计的始终,它们是设计效果的终极评定标准,因此要考虑各方面因素,在面积和速度达到最佳平衡[5]。

5.2时序仿真

将器件延时信息考虑进去,本设计在ModelSim中的布局布线后的仿真结果如图3所示。

图3 ModelSim时序仿真图

从图中可以看出,第三个周期开始,每个时钟周期滤波器完成一次处理,输出一次数据。证明了使用DA并行算法的高效性,适合对于速度要求高的系统。取8个采样输入数据进行验证:=212、=159、=101、=255、=79、=0、=162、=226。将这8个数据和生成的8个滤波器浮点系数带入公式(1)中,计算可得:,其它结果可用同样的方法得到。对于用原始公式(1)计算的结果与ModelSim仿真结果(为193)的误差是由于以下两点产生的,其一,在对滤波器的系数由浮点数到定点数的转化时进行尾数舍入引起的,其二,在对输出结果取高10位时截尾操作引起的,经验证是在允许范围内的。科技论文。

6、结论

以上以DA算法为基础的滤波器设计必将在实际中得到广泛应用,FPGA技术也将在数字信号处理方面发挥更大的作用。本文的设计正是对该算法的改进,通过串行和并行结构完成了高速滤波器的设计,并证明了这种方法的可行性和高效性。滤波器的工作速度与阶数无关,而取决于输入数据的位宽,串行结构在节约资源的同时并不能提高滤波器的速度,而并行结构正好弥补了串行结构这方面的不足,采用多位同时处理的方式极大地提高了效率,使计算速度可以从根本上翻倍,进而适应数字信号实时处理的要求。


参考文献:
[1] 李明纬,等.应用分布式算法在FPGA平台实现FIR低通滤波器.中国集成电路.2007,(02):49-52.
[2] 程佩青.数字信号处理教程.北京: 清华大学出版社,2001.
[3] Uwe Meyer-Baese.数字信号处理的FPGA实现.(,刘陵).北京:清华大学出版社,2006.
[4] 张明照,等.应用MATLAB实现信号分析和处理.北京:科学出版社,2005.
[5] 王诚,等.Xilinx ISE使用祥解.北京:人民邮电出版社,2005.
 

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于FPGA的B超数字图像实时采集系统
下一篇论文:基于GDI+儿童生长监测图绘制的设计
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文