本篇的实验平台是quartus,想了解vivado开发环境可以了解下一篇文章。
本篇在B站有对应操作讲解视频: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
作者:FPGA小学生
QQ:2859340499(不懂可以咨询,也可下方留言,相关资料获取途径)
B站出处链接
出处: bilibili