原创 基于FDAtool及Altera FPGA的FIR滤波器设计(zz)

2010-2-18 17:35 4137 3 5 分类: FPGA/CPLD

http://www.eieworld.com/html/EDA/FPGA/20090909/193.html


首先fdatool是Matlab自带的一个数字滤波器的设计分析软件,里面提供了丰富的参数供调整(具体的参阅Matlab的教材),大大降低了数字滤波器的设计难度,同时又可以设计出高质量的滤波器。fdatool虽然不是最好的滤波器设计软件,但是在Matlab响亮的名号下,得到了广泛的使用。FIR Megacore是Altera针对其主流FPGA推出的一款商业化的数字滤波器设计软件,可以直接生成HDL代码(可综合的,但是加密了),同时其结构针对Altera自己的FPGA做了各种各样的优化。尽管fdatool也可以生成可综合的HDL代码,但是没有针对FPGA的M4K、DSP Block做出相应的优化,所以性能和FIR Megacore生成的FIR滤波器有相当的差距。然而,FIR Megacore的滤波器设计工具相当的简单,只提供了窗函数法,用户只能定义有限的几个参数。而其他的设计方法,比如矩形系数更好的等纹波法则只能在fdatool里面找到。 所幸的是,FIR Megacore提供了滤波器的Coefficients导入的选项,可以使用第三方工具生成的Coefficients。这使得我们能够用FIR Megacore来实现fdatool生成的滤波器。简要流程如下:


Step-1:在Matlab的命令行上输入:fdatool,启动Filter Design & Analyze Tool;


点击看大图


Step-2:Filter Design & Analyze Tool(fdatool)的主界面;


点击看大图


Step-3:基于等纹波法设计一个FIR滤波器;


 点击看大图


Step-4:这个滤波器的幅频特性;


点击看大图


Step-5:在fdatool主界面的File菜单中选取Export...


点击看大图 


可以对系数先进行参数化,点击右下方的set quantization parameter按钮,设置参数化位数(可以通过Analysis->Filter coefficient查看系数,此时系数仍为小数),小数需要归一化为整数,可以再输入Xilinx和Altera的IP中,归一化即将生成的小数系数乘以2^8(归一化为8位系数,第九位可以是符号位)。


Step-6:在Export的对话框中,Export To选择Coefficient File(ASCII),Format选择Decimal;


Photobucket - Video and Image Hosting


Step-7:修改导出的fcf文件,把那些废话删掉(非常重要);


Photobucket - Video and Image Hosting 


Step-8:调用Altera FIR Megacore的,点击Parameters按钮;


Photobucket - Video and Image Hosting


 Step-9:在主界面中,我们可以看到一个默认的低通滤波器,不要管它,直接点击坐标图上面的那个Edit Coefficient Set按钮;


点击看大图 


Step-10:在Coefficients Generator Dialog窗口中,直接选取Imported Coeff Set,并输入刚才在Matlab中生成的fcf文件(再次强调把文件头尾的那些%打头的废话删掉)。搞定了,之后再按照需求做其他的设定和仿真就可以了。


点击看大图


文章评论2条评论)

登录后参与讨论

zhouzh8 2016-2-25 12:51

00,另外 const uint8 ConfigurationDescriptor[99]这个数组 //wLockDelay字段。时钟锁定延时的值 0x00 少了一个字节应该是0x00,0x00,由于少了一个0x00,所以调试不会成功,我加了一个0,数组长度改为[100]就可以了。

zhouzh8 2016-2-25 12:44

请问圈圈老师:我的只能收到端点0第一个包,之后就没有了,望指教 USB端点0输出中断 读端点0缓冲区8字节。 0x01 0x0B 0x01 0x00 0x01 0x00 0x00 0x00 USB标准输出请求:设置接口。 写端点0缓冲区0字节。 USB端点0输入中断。 USB端点2输出中断。 读端点2缓冲区44字节。 0x04 0x00 0x00 0x00 0xFD 0xFF 0xFF 0xFF 0x01 0x00 0xFD 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00 0xFF 0xFF 0x00 0x00 0x00 0x00 0xFF 0xFF USB端点0输出中断 读端点0缓冲区8字节。 0x01 0x0B 0x00 0x00 0x01 0x00 0x00 0x00 USB标准输出请求:设置接口。 写端点0缓冲区0字节。 USB端点0输入中断。 USB端点0输出中断 读端点0缓冲区8字节。 0x01 0x0B 0x01 0x00 0x01 0x00 0x00 0x00 USB标准输出请求:设置接口。 写端点0缓冲区0字节。 USB端点0输入中断。 USB端点0输出中断 读端点0缓冲区8字节。 0x01 0x0B 0x00 0x00 0x01 0x00 0x00 0x00 USB标准输出请求:设置接口。 写端点0缓冲区0字节。

ahuwy_719261138 2010-7-28 20:20

文件里的废话要全删掉了,而且结尾(结尾不能有回车符)也要删除,我也琢磨了好久,看了user_guide才看到的。 Do not insert additional carriage returns at the end of the file. The FIR Compiler interprets each carriage return as an extra coefficient with the value of the most recent past coefficient. The file should have a minimum of five non-zero coefficients.

yangc85 2010-5-22 09:47

我在用FIR Megacore提供的滤波器的Coefficients导入是为什么导入失败,提示 “the file does not contain valid coefficient set information”,不知道是什么原因,请指教(文件里的废话我全删掉了),不胜感谢!

penglijiang 2010-4-8 10:53

谢谢00,下来学习
相关推荐阅读
fstao_612486426 2010-08-30 14:31
MC8051 在Spartan-3A DSP Starter开发板上成功运行了
参考的http://blog.ednchina.com/tengjingshu/219308/message.aspx说明几点:1.生成mc8051_ram和mc8051_rom的的端口名字需要修改两...
fstao_612486426 2010-06-03 11:04
基于ARM的嵌入式系统中从串配置FPGA的实现(ZZ)
基于ARM的嵌入式系统中从串配置FPGA的实现朱伟,王广君 (中国地质大学信息工程学院,湖北 武汉430074)1 引言ARM(Advanced RISC Machines)既可以认为是一个公司。也可...
fstao_612486426 2010-01-10 15:43
STM32的USB例程修改步骤
以下是笔者将ST的Custom_HID例程修改为“自定义USB设备”例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。  一、usb_desc.c文件根据你...
fstao_612486426 2009-11-27 10:02
【概念理解】约束、时序分析的概念(ZZ)
很多人询问关于约束、时序分析的问题,比如:如何设置setup,hold时间?如何使用全局时钟和第二全局时钟(长线资源)?如何进行分组约束?如何约束某部分组合逻辑?如何通过约束保证异步时钟域之间的数据交...
fstao_612486426 2009-11-25 14:39
Windows主机端与自定义USB HID设备通信详解(ZZ)
说明: - 以下结论都是基于 Windows XP 系统所得出的,不保证在其他系统的适用性。 - 在此讨论的是 HID 自定义设备,对于标准设备,譬如 USB 鼠标和键盘,由于操作系统对其独占,许多操...
我要评论
2
3
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条