原创 将Matlab的fdatool生成的Coefficients导出到Altera FIR Megaco

2011-4-6 10:04 10468 5 10 分类: FPGA/CPLD

575097b9-30b6-41b0-8e24-621c05c4ce86.jpg今天和列位交流一下fdatool和FIR MegaCore的一个使用技巧的问题(和这些软件有关的基本概念不在此赘述)。首先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生成的滤波器。


FDATool的介绍


  FDATool(Filter Design&Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB 6.O以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。


  FDATool。界面总共分两大部分,一部分是Design Filter。在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的 FIR滤波器。  


  Design Method(设计方法)选项,包括IIR滤波器的Butterwotth(巴特沃思)法、Chebyshev  Type I(切比雪夫I型)法、Chebyshev Type II(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、 Window(窗函数)法。


  Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order="N-1")。如果选择Minimum Order,则MATLAB根据所选择的滤波器类型自动使用最小阶数。


  Frequency Specifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定。例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2 (通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数


  Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass (通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。


 简要流程如下:


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


 


b2ceab4a-2e21-4548-9315-5d6bfdc25792.jpg


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


5c5efa3e-ed0c-49db-a668-46599348f066.jpg


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


24640c26-d109-466f-904b-781158b13c35.jpg


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


2ed5818c-8e14-46f8-8a05-25024e0ab374.jpg


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


e0b0be38-461b-48c0-9a2f-9a0ab7086652.jpg


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


b8161fe7-73de-4c9a-b8ef-2ddc51dd6f5a.jpg


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


29e954bb-a519-47cd-9f91-03270efd3711.jpg


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


0f9dbc0a-d1e2-494a-806f-d355ab46adcf.jpg


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


940667bf-1d74-40b0-9d31-3d1bec6c690b.jpg


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

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户377235 2014-11-5 15:35

以变量形式导入工作区,然后写入txt文件就行

用户433836 2013-3-14 15:30

去掉所有的注释信息,每行一个系数,不要有多余空格。fcf文件可以导入

用户377235 2013-3-14 11:47

我按照上述方法试了,apply时提示错误:does not contain valid coefficient set information。是什么原因呢,求解

用户377235 2012-7-13 16:51

我试了,还是有错误

用户414301 2012-5-10 19:23

fcf文件不能导入到quartus中呀,求帮助
相关推荐阅读
FPGADeveloper 2017-04-11 12:03
界面好像比较清爽
界面好像比较清爽,试用下 ...
FPGADeveloper 2015-11-19 17:24
评论:@emesjx's Blog 博客中提到的“高速LVDS接口信号完整性处理实例”
学习看看...
FPGADeveloper 2015-01-02 17:16
2015年FPGA雏鹰培训计划
 ...
FPGADeveloper 2015-01-02 11:05
2015 新年新开始~
2015 新年新开始~...
FPGADeveloper 2014-09-12 23:28
AD DA 测试
AD DA       测试条件           ...
FPGADeveloper 2014-06-13 16:45
5位创始人讲述创业失败的教训
  失败,这是围绕在创业者身上很常见的事情,它常让创业者在很长一段时间内灰心失望。         但是总有一些创业者勇敢的面对失败,从而最后取得成功。我们采访了5位成功的创始...
EE直播间
更多
我要评论
5
5
关闭 站长推荐上一条 /3 下一条