| 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.
 
  2/2   首页 上一页 1 2 |