1、利用matlab中的fdatool工具箱生成所需的浮点滤波器
2、导出该滤波器的matlab函数
function Hd = Lp_fs144_fp4p85_fs5p4
%LP_FS144_FP4P85_FS5P4 Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB® 9.3 and DSP System Toolbox 9.5.
% Generated on: 24-Jul-2019 10:34:35
% Equiripple Lowpass filter designed using the FIRPM function.
% All frequency values are in kHz.
Fs = 144; % Sampling Frequency
Fpass = 4.85; % Passband Frequency
Fstop = 5.4; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 3.1622776602e-05; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
% Calculate the coefficients using the FIRPM function.
b = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);
% [EOF]
3、利用下面的程序将滤波器的系数由浮点型转化为定点
%% 低通滤波16bit量化
Hd = Lp_fs144_fp4p85_fs5p4; %直接引用第二步中生成的matlab函数
hd_144k_4k85_5k5 = Hd.Numerator;
Lowpass_bit = 15;
Lowpass_bitV = Lowpass_bit - ceil(log2(max(abs(hd_144k_4k85_5k5))));
Lowpass_fix = round(2.^Lowpass_bitV*hd_144k_4k85_5k5); %生成的定点数据,可直接用于quartus中滤波器系数导入