借助matlab生成Altera数字滤波器IP核方法 联系客服

发布时间 : 星期四 文章借助matlab生成Altera数字滤波器IP核方法更新完毕开始阅读49fb5b150b4e767f5acfcebf

数字滤波器生成方法

1. Matlab

输入fdatool,打开设置窗口,设置参数。

保存设计文件,后缀名.fda,下次使用时,可以用fdatool工具打开该文件 导出设置参数,先把系数导出到变量空间,file-improt-选择workspace,可以输入保存变量名如num。

也可以把设置保存为.m文件,在matlab编程中直接调用即可。 2. quartus生成IP核

把变量空间的变量num写到txt文件,要采用浮点数保存。

%滤波器的coe文件,由fdatool产生系数变量到变量空间再写到txt文件,送给QUARTUS IP核使用

fid=fopen('BANDPASS_FIR_COE.txt','w');

fprintf(fid,'%d\\n',BANDPASS_FIR);%设置书写格式5.0d表示长度5位十进制,0表示精度,补空格,有正负号显示。':'表示区隔 fclose(fid);

设置IP核直接导入txt文件即可。可以在time response& coefficient values看到浮点数对应的定点数。其实就是将浮点数放大到一定倍数然后取整得到。 3. 使用生成的数字滤波器在matlab中仿真。 利用其中的.m文件对matlab数组进行滤波。

假设需滤波的信号数组为input,滤波器导出的m文件为AD_AFT_FIR.m 则编程如下:

Hd = AD_AFT_FIR; %′?í¨??2¨

output = double(filter(Hd,input)); figure(2) plot(output)

4. Quartus结果与Matlab结果比较 先对matlab建立定点模型。

根据IP核中的定点模型的放大倍数,对num数组进行定点放大。假设IP核的放大倍数为c,则对num数组进行如下处理: a=num; a=a*c;

for i=1:length(a) if a(i)>=0

a(i)=floor(a(i)); else

a(i)=ceil(a(i)); end

得到的a与ip核的定点系数相等,(好像在最大值出两个相差了1.但是对滤波后的结果影响应该不大)

利用数组a,对输入信号input进行滤波 output= double(filter(a,1,input));

output应该和modelsim运行的结果一致