EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在Vivado调用fir滤波器时,我们会遇到需要填充滤波器抽头系数的问题,手工计算又不现实,所以在此向大家介绍一个生成系数的工具。 , t, P! ^) L: K" _
首先,我们打开matlab软件,在命令窗口输入fdatool并回车,就会弹出滤波器设计工具。 & p* k1 n& |4 P( C9 q
, t3 {/ m* d, {3 Y7 O, P6 ^
在图中第一个红色框内,我们根据自己需要选择低通或者高通,第二个框,在fir的设计方法中,我们也是可以根据自己需要进行选择,在此,比如我选择窗函数。 & w8 A6 N- S# c2 n! K/ w
- \" v, {2 O& f0 P; Q- S I( o
在窗函数中,我们选择合适的窗口。 ! G" @0 d% i7 ], q
% ~4 X2 t0 Q' J3 k4 e- g' e v% J
; s# L( |- ?, h. Z, _
对于计算阶数大家可以根据需要进行选择,默认是最小,但是有时候滤波效果不是很好,所以我们可以自定义。
9 J x+ a' |5 G/ p8 g6 ^4 d. K1 ^4 h6 q" S
2 U: |+ L: n, O" z* W* {+ t" N
' r2 E( `- |, ]0 e3 U% e; O
8 n: t3 ?' O" J' x# G- b
+ h/ H( ]8 C. J O3 p5 W ~( E v/ [; Z+ n
1 O) Z4 w8 B/ }6 K# h+ c$ _- C
/ n& \7 s+ n$ X8 S5 ~* ^1 T; u
0 n1 ]6 b. A+ f, D h- ?
- Y1 b0 ~, A; A4 _* s" K
- O, X( o9 V1 O# s( |- p自定义时选择第一个选项,计算阶数越大,运算量越大,最后仿真时等待的时间可能更久,这个大家自行均衡。 " g7 O4 d6 \" g1 ?2 f2 X
. t5 O4 B: j% y6 \9 ~
1 k% G6 Y& N) E+ X' B* ]$ ^
( v$ g! I4 Q* {/ h, F
4 `) t B0 C9 s, |* @/ x" E7 m3 [6 k, v1 J
' A T8 y3 b- t9 ~
0 A6 `$ x( k0 m接下来是频率设置,units是频率单位,根据自己波形的频率进行设置合适的单位。Fs为采样频率,在满足奈奎斯特采样定律的情况下设置合适的频率。Fpass为通带频率,指的是滤波器允许通过的频率范围。Fstop为截止频率,指的是滤波器需要抑制的频率范围。 - I, x, u1 h! m1 F
Apass表示通带衰减,指的是滤波器在通带内的衰减量。Astop表示阻带内的衰减量。
6 N5 P) \0 { x1 a* U" G
' b1 o* Q+ B6 z
; ~7 e/ @1 s) V
; T o) E3 w# W y' B
在此,给大家一个示例,窗函数我选择的是汉明窗,采样频率为10MHz,截止频率为4MHz。计算阶数为20。大家可以看一下效果图,还是比较理想的。 & w$ U$ d7 Y: }( G g2 y
5 ?6 ` j2 q: |# y# l8 \ m5 H
+ `" y' ?; ?$ F" X2 f2 y2 g3 z
5 h9 D- s g, ?9 q! n2 E
在左边窗口,我们选择第三个选项,然后选择Fixed-point。然后我们就可以输出我们的抽头系数了。 ) D) y" p8 S% i& a. j( _
2 O/ H R4 n' \' H
, ~" F0 j' R% F* Z' L
$ }' H5 n K# d( o6 G+ m- y
大家可以直接输出数据,然后在IP核配置界面直接填充,不过在此为了减少麻烦,我直接输出XILINX的coe文件,在配置时,用文件直接来填充。 ) t" c+ ~/ R! Y$ Z! ^) @5 Q
/ d# C! E) b. E3 ^# f, ^
8 z; }8 Z! _2 l/ ]- ? |