matlab产生滤波系数,(转)利用matlab产生FPGA设计用滤波器系数的小技巧

用FPGA做数字信号处理时,经常会用到滤波器,而滤波器的系数经常是用MATLAB仿真产生的。通常在verilog文件中,我们会把滤波器的系数定义为参数,例如paramater

c0 =

8'h11。可是将MATLAB产生的系数加到verilog文件中确实一件很麻烦的事。不仅要进行格式转换,还要按照verilog参数定义的格式去写每一个语句,很是繁琐。特别是在调试滤波器的时候,经常会尝试不同滤波系数,对信号滤波的效果,这样当阶数比较高的时候,在verilog里修改系数就变长了一件很麻烦的事情。为了方便的修改verilog中定义的滤波器系数,可以利用matlab的输出功能,将每次产生的滤波器系数按照verilog中定义参数的格式将系数写入一文本文件中,这样每次修改系数只需要运行一下matlab程序,然后把产生的文件内容复制粘贴到你的.v文件中就可以了。

下面我把将MATLAB产生的滤波器系数写入文件部分代码简单说明一下:

%打开一个txt文件

fid =

fopen('mult_phase_filter_coe.txt','w');

%将产生的49个系数先转化为有符号二进制格式,即如果为负数则最高位取反,即加512

for i="1:49"

if(num(i)

< 0)

new_num(i) = num(i)

+512;????????%num是之前产生的滤波器系数

else

new_num(i) =

num(i);

end

%按verilog定义参数的格式写入txt文件

fprintf(fid,'parameter c%d = 9%ch%x;\n',i-1,39,new_num(i));

end

fprintf(fid,'\n');

fclose(fid);

下图为运行MATLAB程序后在txt文件中按照verilog语法产生的FIR滤波器的系数:

a4c26d1e5885305701be709a3d33442f.png

这样直接复制这些已经按verilog语法参数格式的滤波器系数语句,粘贴到verilog源程序中,就可以了。大大提高了设计效率。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值