天天看点

Matlab 生成fir滤波器抽头系数

1、 打开 MATLAB 软件,在命令窗口输入 fdatool 并回车,就会弹出滤波器设计工具

Matlab 生成fir滤波器抽头系数

2、 FIR滤波器设计方法有多种,,最常用的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用窗函数设计法,达到所期望的频率响应,与其它方法相比往往阶数会更多;设置频率响应的参数,包括采样频率Fs、通带频率Fpass和阻带频率Fstop

按照实验的要求,在响应类型 Response Type 中选择低通 Lowpass;设计方法 Design Method 中选择 FIR,并且选择用窗函数法 Window 进行 FIR 数字滤波器的设计。在 Filter Order 中选择 Specify order,在这里输入 9,注意这里输入的数值是所要设计的滤波器的阶数减 1。 在 Options 中勾选 Scale Passhand, 并将 Window 选为 Hamming。在 Frequency Specifications 中单位选择 HZ,采样频率 Fs 输入值为 100,截止频率 Fc 中输入值为 10。点击 Design Filter 即可设计出所需的滤波器。

Matlab 生成fir滤波器抽头系数

 3.在 FDATool 工具界面中,点击 File 选择 Export,在弹出窗口中点击 Export,即可在 MATLAB 中生成所设计的滤波器的抽头系数。 

Matlab 生成fir滤波器抽头系数
Matlab 生成fir滤波器抽头系数

这里分出来一小部分空间,引用点别人的内容来简单介绍下上述几个参数的意思:

Response Type:选择FIR滤波器的类型:低通、高通、带通和带阻等。在DDC/DUC模块设计中,抽取和内插需要使用Halfband Lowpass类型,而channel filter需要使用Raised-cosine类型。

Design Method:FIR滤波器设计方法有多种,最常用的是窗函数设计法(Window)、等波纹设计法(Equiripple)和最小二乘法(Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗,但是实际应用中却很少使用,因为如果采用窗函数设计法,达到所期望的频率响应,与其它方法相比往往阶数会更多;而且窗函数设计法一般只参照通频带wp、抑制频带ws和理想增益来设计滤波器,但是实际应用中通频带和抑制带的波纹也是需要考虑的,那在这种情况下,采用等波纹设计法就非常适用了。

Filter Order:设置滤波器的阶数,这个选项直接影响滤波器的性能,阶数越高,性能越好,但是相应在FPGA实现耗用的资源需要增多。在这个设置中提供2个选项:Specify order和Minimum order,Specify order是工程师自己确定滤波器的阶数,Minimum order是让工具自动确定达到期望的频率相应所需要的最小阶数,因此具体选择哪个选项得视实际情况而定了。

density factor:这个参数控制了频率网的密度。提高这个参数的值可以使设计出的滤波器更加接近理想的频率响应,但这样会增加滤波的计算量。因为滤波器设计要求频率网上每个频点都要满足理想滤波器的指标规格,频率网越密,设计出的滤波器公式越复杂。

Frequency Specification:设置频率响应的参数,包括采样频率Fs、通带频率Fpass和阻带频率Fstop。

magnitude specifications:定义幅值衰减,单位是db,分贝。Apass表示通带衰减,Astop表示阻带衰减。Apass/Astop = 20*log10(输出/输入)。

用等波纹最佳逼近法设计的滤波器,其通带和阻带均为等波纹特性,且通带最大衰减和阻带最小衰减可以分别控制,所以其指标均匀分布,没有资源浪费,所以阶数低得多。

http://www.elecfans.com/d/700098.html

4.因为 FPGA 并不支持浮点数的运算,所以需要对抽头系数进行量化处理。在 FDATool 界面中,首先点击按钮

Matlab 生成fir滤波器抽头系数

,在 Filter arithmetic 中选择 Fixed-point, Number word length 中可以输入的是字长,当输入 8 时,点击 Apply,可以看到有较大的偏差。所以将数值改为 16

Matlab 生成fir滤波器抽头系数

5.7、其次,点击 Target,在下拉菜单中选择 XILINX coefficient(.COE) file 即可生成。 

以.COE 文件形式保存的经过量化的滤波器系数,当滤波器的阶数较高时可以在 vivado 中 

通过 ROM 的 IP 核读入,本次实验的滤波器阶数比较少,所以可以直接将结果复制到滤波器 

的 verilog 程序中。

继续阅读