工具:
matlab filterdesigner 工具箱
vivado FIR IP核
实现:
1.matlab设计与测试
先用matlab设计目标滤波器,得到滤波器的抽头系数。
如图,根据需求选择 低通/高通/带通/带阻。
由于vivado用的是FIR IP核,所以设计方法选择FIR,FIR中有多种选项,根据需求选择即可。
滤波器阶数,可以指定阶数也可以选择最小阶(这里最小阶应该是指保证性能的情况下的最小阶数)。阶数越高性能越好,耗用资源越多。
频率设定:pass 和stop就是过渡带的起始点,而Fs很重要,硬性要求是要大于两倍的max(Fpass ,Fstop),但是根据测试的结果,Fs只做到上述最低要求的话(刚好等于两倍或者略大一点),有时根本滤不了目标信号。所以要在仿真中调试Fs得到理想结果。
赋值设定:Apass一般不用改,就是允许通过的信号的强度;Astop可以根据需求改,会影响滤波效果与占用资源的大小。
设置完滤波器参数后,修改滤波器算法为定点,并根据需求改字长。
随后生成滤波器函数用于在matlab中调用:
便可进行仿真,测试。
2.vivado功能性仿真
在matlab工具箱中生成抽头系数的coe文件。
在IP核中,在cofficient file中选择生成的coe文件,其他不用修改,filter type选择单时钟即可,
在时钟这块修改频率Fs,与matlab工具箱中设置的Fs大小一致。
implement 按照图中设置,确定符号类型和数据位宽。
即可完成fir ip核的设置,接口信号也简单,就是输入信号和输出信号,时钟与Fs频率保持一致。
测试结果:
sin a : 3Mhz
sin b:4Mhz
sin ab : 1MHz,7MHz。
fir 输出:1MHz