FPGA(FIR)数字信号处理

(1)滤波器系数设计:

在MATLAB中输入fdatool即可打开滤波器设计工具,如图所示。里面可以设置滤波器的类型,采样频率,截止频率等。

实现FIR滤波器的过程其实就是实现卷积的过程:

x(n)是待滤波信号,h(n)是滤波器系数,卷积的过程就是一个乘、累加的过程。

(2)程序编写:

Verilog编写:

用FPGA实现FIR滤波器的主要分成三级流水线,第一级、将输入信号延时,这样才能将信号和滤波器系数相乘。第二级、将输入信号和系数相乘。第三级、将乘积进行累加得到结果。

Verilog在FPGA内部编写fir滤波器很大的一个缺点是只能实现阶数较少的滤波器,否则会造成资源占用过多。所以针对多阶数FIR滤波器采用IP核的方式来实现。

IP核方式实现FIR滤波器:

实际硬件电路测试:

Rtl视图:

通过AD将数字信号输出给FPGA,并将FPGA处理转换之后的数据通过DA模块输出,观察经过FIR滤波器之后的信号。

频率500KHz

频率600KHz

频率1MHz

经验分享 程序员 微信小程序 职场和发展