作为一个基础薄弱的小白第一次实现FPGA数字滤波器,实在是走了很多弯路,特此记录下来,希望能帮助到有需要的朋友们
用到的软件版本:MATLAB R2023a;Vivado 2017.4
参考教程:
matlab与FPGA数字滤波器设计(1)——通过matlab的fdatool工具箱设计FIR数字滤波器
MATLAB设计FIR滤波器
打开MATLAB
打开Matlab,打开滤波器设计工具
打开之后的界面如下,这里要注意,需要在MATLAB中安装DSP System Toolbox这个APP,否则左侧那一列工具栏中只会显示三个按键
这一点我本人找了很久才在MATLAB文档中发现,可见检索能力亟待提高
还有一点,在MATLAB中下载APP时遇到 限制下载访问权限 的问题时,先将MATLAB关掉,然后以管理员身份运行MATLAB,这样就可以下载了,至少这一方法对我的电脑和MATLA版本是有效的
文档链接:滤波器设计工具简介- MATLAB & Simulink Example- MathWorks 中国
在文档中 量化滤波器 一节有讲到上述内容
设计滤波器
设计所需的滤波器,这里设置的参数如图所示,设置完成后点击 设计滤波器
参数量化
接着切换到参数量化选项,将滤波器算法改为定点,这时又会出现如下报错,按照提示安装Fixed-Point Designer APP就好了
安装好以后回到参数量化界面作如下设置,由于分子字长16就是默认值,工具箱会认为我们没有做设置,所以底部的应用按钮是灰色的无法点击。将分子字长随便改变一下就好了,比如先改为15再改回16,这样应用按钮就可以点击了,点击应用
这时的幅值响应如下图所示
导出参数
点击左上角的文件 --> 导出,在弹出的小窗口中点击导出,这样就导出了一个名为Num的数组
点击目标 --> XILINX系数(.COE)文件
设置文件名称,最好不要有中文和特殊字符
导出的参数共有100个,这样设计出来的是对称结构的FIR滤波器,第1个参数和第100个一样,第2个参数和第99个一样,以此类推