首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

利用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滤波器的系数:[[wysiwyg_imageupload:596:]]                            这样直接复制这些已经按verilog语法参数格式的滤波器系数语句,粘贴到verilog源程序中,就可以了。大大提高了设计效率。转载自http://blog.sina.com.cn/s/blog_6fe0d70d0100vval.html
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表