首页 理论教育 FDATool生成FIR滤波器系数在VIVADO环境下的应用

FDATool生成FIR滤波器系数在VIVADO环境下的应用

时间:2026-01-26 理论教育 筱悦 版权反馈
【摘要】:MATLAB中有一个FDATool的工具,以图形化的方式供使用者产生所需的滤波器,然后将系数导出,这样我们在VIVADO中新建FIR IP核之后就可以直接导入抽头系数表,轻松实现FIR系数输入。图4.14设置滤波器参数滤波器系数量化。图4.16导出.COE系数文件图4.17导出滤波器系数

在定制滤波器IP核之前,需要产生FIR滤波器抽头系数,这个抽头系数的阶数是用户自己设定的,阶数越高代表滤波器乘累加运算越多,阶数大小的选择要看是否满足设计要求(例如衰减分贝是否满足要求)。同时,生成的滤波器抽头系数的值是由用户设计滤波器的各种参数确定的,如数据采样速率、通带截止频率、阻带起始频率(低通)、滤波器类型等。

这些抽头系数可以用MATLAB生成。MATLAB中有一个FDATool的工具,以图形化的方式供使用者产生所需的滤波器,然后将系数导出(以COE格式),这样我们在VIVADO中新建FIR IP核之后就可以直接导入抽头系数表,轻松实现FIR系数输入。

(1)在MATLAB命令窗口输入“fdatool”后回车,打开“Filter Designer & Analysis Tool”工具界面,如图4.12所示。

图示

图4.12 FDATool工具界面

点击左下角的“Set quantization parameter”,设置“Filter arithmetic”为“Fixed-point”(定点,由于有些FPGA中是不能直接对浮点数进行操作的,只能采用定点数进行数值运算),如图4.13所示。

图示

图4.13 设置“Fixed-point”

(2)点击左下角的Design filter,进入滤波器参数设置页面,在其中设置采样频率(Fs)、通带频率(Fpass)、阻带频率(Fstop)、通带衰减(Apass)以及阻带衰减(Astop)等参数,并点击最下面的“Design Filter”按钮生成滤波器系数,如图4.14所示。

图示

图4.14 设置滤波器参数(https://www.xing528.com)

(3)滤波器系数量化。一般量化位数为12~16,量化位数越低乘法器消耗的资源越少,但精度也越低,需要设计者权衡资源与精度。对于FIR Compiler,使用的是DSP48 slices,经测试14位输入时16位量化位数与16位量化位数消耗相同资源,应选择16位系数(之所示消耗相同的资源,是因为FPGA内部的DSP48E1硬核乘法器是25×18的,所以无论是16位还是14位都会占用一个DSP),如图4.15所示。

图示

图4.15 滤波器系数量化

(4)导出.COE文件。

点击【Targets】→【XILINX Coefficient(.COE)File】导出COE文件,如图4.16所示。此文件中的系数是以定点十六进制表示的,每个数据长度为16位(由Numerator word length决定),其为实际浮点数据左移17位(由Numerator frac.length决定)得到,例如实际浮点数据第一个系数为0.001,定点表示为0x0081((int)0.001 * 2 ^ 17 = 131= 0x0081,即0.001左移17位)。

也可以点击【File】→【Export】导出滤波器系数到MATLAB的工作区workspace,或者按快捷键【Ctrl+E】,这种方式导出的是实际浮点数据,如图4.17所示。

图示

图4.16 导出.COE系数文件

图示

图4.17 导出滤波器系数

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈