方法简介
用matlab设计滤波器后,可以用fvtool来看滤波器的频响,比如根据滤波器的系数:
fircoe = [0.018641, 0.018275,-0.020377,-0.071243,-0.049673,...
0.094562, 0.28841, 0.37949, 0.28841, 0.094562,-0.049673,...
-0.071243,-0.020377, 0.018275, 0.018641];
fvtool(fircoe);
实验验证
用Fdatool工具生成低通滤波器
1、点击“文件-导出”,导出滤波器系数
滤波器系数为:
Num = [0.189743041992188 0.00287628173828125 -0.0145111083984375 -0.0372161865234375 -0.0569534301757813 -0.0644531250000000 -0.0534057617187500 -0.0215911865234375 0.0274047851562500 0.0844116210937500 0.137962341308594 0.176025390625000 0.189590454101563 0.176025390625000 0.137962341308594 0.0844116210937500 0.0274047851562500 -0.0215911865234375 -0.0534057617187500 -0.0644531250000000 -0.0569534301757813 -0.0372161865234375 -0.0145111083984375 0.00287628173828125 0.189743041992188]
根据滤波器系数
fvtool(Num);
2、保存为16进制数,用于verilog fir的设计
导出的16进制数为:
根据16进制数画滤波器
A = [hex2dec('6126'),hex2dec('0179'),hex2dec('F892'),hex2dec('ECF2'),hex2dec('E2D7'),hex2dec('DF00'),hex2dec('E4A8'),hex2dec('F4F2'),hex2dec('0E08'),hex2dec('2B38'),...
hex2dec('46A3'),hex2dec('5A20'),hex2dec('6112')]
B = fliplr(A(1:12))
data = [A,B]
for i=1:length(data)
if(data(i) > 2^16/2-1)%8位宽的数据有符号数据取值范围[-128,127],(2^8/2-1=127),根据实际位宽修改
data(i) = data(i) - 2^16;
else
data(i) = data(i);
end
end
fircoe = data./65536
fvtool(fircoe);