FPGA 学习小组
直播中

李恬恬

7年用户 143经验值
私信 关注

如何利用FPGA实现32阶FIR数字滤波器硬件电路?

随着软件无线电的发展,对于滤波器的处理速度要求越来越高。

回帖(3)

张小林

2019-10-18 15:33:24
传统的FIR滤波器一般采用通用DSP处理器,但是DSP处理器采用的是串行运算,而FPGA是现场可编程阵列,可以实现专用集成电路,另外还可以采用纯并行结构及考虑流水线结构,因此在处理速度上可以明显高于DSP处理器。本文采用并行分布式算法在FPGA上设计并实现了高速处理的32阶FIR低通滤波器,在此过程中利用Matlab的数值计算与分析功能来提高设计效率。

在数字信号处理中,数字滤波器的应用是极其广泛和重要的单元。与模拟滤波器相比,数字滤波器可以克服模拟滤波器所无法克服的电压漂移,温度漂移以及噪声等问题。数字滤波器根据冲击响应函数的特性,可以分为IIR滤波器和FIR滤波器两种。由于FIR滤波器只有零点、系统稳定等诸多优点。

1 FlR低通滤波器的窗函数实现

理想的滤波器频率响应中傅里叶反变换ha(n)一定是无限长的序列,而且是非因果的,而实际要设计的滤波器h(n)是有限长的,因此要用有限长来逼近无限长的,其方法就是用一个有限长度的窗口函数序列ω(n)来截取,即:



常见的窗函数有矩形窗、巴特利特窗、汉宁窗、哈明窗、布莱克曼窗、凯泽窗。其中,凯泽窗提供了可变的过渡带宽。本文采用凯泽窗对FIR滤波器进行设计,其窗函数表达式为:



I0[·]为第一类变形零阶贝赛尔函数,形状参数β为依赖于滤波器阶数M的参数,用来调整主瓣宽度与旁瓣衰减,选择M可产生各种过渡带宽和接近最优的阻带衰减。给定通带截止频率ωp,阻带起始频率ωs,阻带衰减As,凯泽窗设计中有经典公式可供使用,如下:



过渡带宽:

滤波器阶数:

形状参数:



假设低通数字滤波器设计指标如下:



采用上面介绍的凯泽窗,利用Matlab编程计算得到32阶FIR低通滤波器参数如下:



32阶FIR低通滤波器幅频特性图如图1所示。





上述求得的系数是浮点型的,而在FPGA设计中使用的数据是定点型的,所以在设计滤波器之前要将系数转化为定点型,即系数的量化。为了兼顾精度和所占用的资源,本文的系数用12位二进制来量化,得到的整数系数结果如下:




举报

吴觅

2019-10-18 15:33:28
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李建宁

2019-10-18 15:33:30
4 结 语

本设计选用Stratix系列芯片,最大处理速度可以达到200 MHz以上。本文没有考虑线性相位的滤波器对称性,在考虑线性相位的基础之上结合一些其他算法可以降低器件数量和进一步提高处理速度。由于FPGA器件的可编程特性,在本设计中可以修改滤波器参数,得到高速处理的高通或者带通数字滤波器,具有一定实用价值。另外,本文利用QuartusⅡ与Matlab联合仿真,极大地提高了FPGA的设计效率。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分