EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在Vivado调用fir滤波器时,我们会遇到需要填充滤波器抽头系数的问题,手工计算又不现实,所以在此向大家介绍一个生成系数的工具。
, x) R1 g, y6 m0 Q, d
首先,我们打开matlab软件,在命令窗口输入fdatool并回车,就会弹出滤波器设计工具。
- O) N9 e+ ^; y( s, U& c
3 y4 J8 U6 v X" A: j
在图中第一个红色框内,我们根据自己需要选择低通或者高通,第二个框,在fir的设计方法中,我们也是可以根据自己需要进行选择,在此,比如我选择窗函数。
* ~! G9 k1 @, ^7 S9 b
$ U' ]: w5 v$ k6 }
在窗函数中,我们选择合适的窗口。
2 e( X5 c [" Z( {+ n# |
) s. z% u1 V6 |5 J" W7 K
" H$ T9 A- o6 A# x7 J
对于计算阶数大家可以根据需要进行选择,默认是最小,但是有时候滤波效果不是很好,所以我们可以自定义。
* i2 G C- Y7 x' M2 l. m5 Q4 P8 d. ?/ g+ e4 h
% H- ~8 U6 B: V$ u
. U$ K% W: i8 W0 v
1 J+ C7 ~( M& t5 f$ P# O- o( t8 K0 u1 i: k5 r; T4 c# P
T5 u1 O, X1 p
& l$ m' U1 X! B5 `& K0 t( \: i' _5 S. D2 x4 l
1 [0 z4 S$ I8 u% \3 `) K; z- Y
1 y/ ]. {6 G- b. Z5 B$ C; k% B$ g
* @! R# m. ~. ? F自定义时选择第一个选项,计算阶数越大,运算量越大,最后仿真时等待的时间可能更久,这个大家自行均衡。 , e9 p- _( Y9 l6 W/ t
) M6 P4 L+ s+ |3 i
- [6 @! R' n( E# r2 @
) `# k, P: l% y5 C) Y
+ z; M2 a5 c' Q k% a; Y0 k( a' R! c2 S5 ?
8 y4 B, y3 z9 u9 w" K* P
4 Q4 N# N! m8 q6 t接下来是频率设置,units是频率单位,根据自己波形的频率进行设置合适的单位。Fs为采样频率,在满足奈奎斯特采样定律的情况下设置合适的频率。Fpass为通带频率,指的是滤波器允许通过的频率范围。Fstop为截止频率,指的是滤波器需要抑制的频率范围。
: Z7 e( K0 X) c' E
Apass表示通带衰减,指的是滤波器在通带内的衰减量。Astop表示阻带内的衰减量。 * @* t) Z8 k( a0 c
8 k: q! T- j9 o2 c0 m
! h3 f) J/ F: L; T
. a5 W+ W- v( ?2 z
在此,给大家一个示例,窗函数我选择的是汉明窗,采样频率为10MHz,截止频率为4MHz。计算阶数为20。大家可以看一下效果图,还是比较理想的。
! v2 q9 r/ e9 ^8 d7 i& {# e
* H2 _" f) k& V6 a! ~ [
3 u8 x8 J+ F$ M
1 d, J0 q- D2 U' I
在左边窗口,我们选择第三个选项,然后选择Fixed-point。然后我们就可以输出我们的抽头系数了。 ; U9 B* Z& c5 e0 k8 G
7 f3 a& b& j: W" j. ^
9 @1 C" L ~8 q6 b
0 L w4 Y4 h0 W+ [8 o
大家可以直接输出数据,然后在IP核配置界面直接填充,不过在此为了减少麻烦,我直接输出XILINX的coe文件,在配置时,用文件直接来填充。
$ I5 |2 }. l3 C9 ^5 O4 k. f* W& z' W7 |' J) {
/ a& Y" J: c0 m! F$ I; g
|