こんにちは、ドルフィンシステムの笹生です。
さて今回も続きとしまして、「FPGA のリソースはデータビット幅の違いでどのように変わるのか」の第3弾をお送りします。
今回はもう少しアプリケーションに近い「FIRフィルタ」と「FFT」に関してビット幅と FPGA リソース消費量の関係を検証してみたいと思います。今回は LabVIEW FPGA を使い、ターゲットは FlexRIO 7976R (Kintex7 410T) で確認をしました。
FIR フィルタのリソースはビット幅でどう変わるか
FIR フィルタの回路として以下のような実装をしてみました。
FIR フィルタの入力ビット幅を 8,16,,,40 bit に 8bit づつ変更してコンパイルをし、使用したリソースを比較してみます。
Resouce
|
ベース
|
FIR FIX8
|
FIR
FIX16
|
FIR
FIX24
|
FIR
FIX32
|
FIR
FIX40
|
Total
Slice
|
20889
|
20920
|
21146
|
20423
|
20647
|
21554
|
Slice
Register
|
50640
|
51086
|
51406
|
51726
|
52059
|
52347
|
Slice
LUT
|
54107
|
54256
|
54340
|
54405
|
54615
|
54823
|
Block
RAM
|
116
|
116
|
116
|
116
|
116
|
116
|
DSP 48s
|
0
|
11
|
11
|
11
|
23
|
23
|
レジスタ消費
|
0
|
446
|
766
|
1086
|
1419
|
1707
|
LUT消費
|
0
|
149
|
233
|
298
|
508
|
716
|
BRAM消費
|
0
|
0
|
0
|
0
|
0
|
0
|
DSP消費
|
0
|
11
|
11
|
11
|
23
|
23
|
ベースの列は、LabVIEW FPGA で最初から使用されているリソースです。
レジスタ消費と LUT 消費をグラフにすると以下のようになりました。
縦軸のオーダーが違いすぎるので別グラフにしましたが、DSP消費は以下のようになりました。
レジスタ消費、LUT 消費はおおむねリニアに増えていきます。
ただ、これは FIR のタップ係数のビット幅が 16bit
固定だからかもしれません。
タップ係数も変動させるのであれば前回の除算器同様に放物線状に増加する傾向があるかもしれません。
DSP 消費は 24bit と32bit で明確に差がありますが、これは
DSP 回路の入力ビット幅の制限があるため一定のビット幅以上で消費量が跳ね上がるのが理由だと推測されます。
FFT のリソースはビット幅でどう変わるか
FIR フィルタの回路として以下のような実装をしてみました。
FFTの入力ビット幅を 実部、虚部 8,16,,,32 bit に 8bit づつ変更してコンパイルをし、使用したリソースを比較してみます。
Resouce
|
ベース
|
FFT FIX8
|
FFT
FIX16
|
FFT
FIX24
|
FFT
FIX32
|
Total
Slice
|
20889
|
21368
|
21206
|
22050
|
22104
|
Slice
Register
|
50640
|
53572
|
55060
|
56788
|
58540
|
Slice
LUT
|
54107
|
55857
|
56642
|
57665
|
58544
|
Block
RAM
|
116
|
119
|
119
|
121
|
122
|
DSP 48s
|
0
|
12
|
12
|
24
|
24
|
レジスタ消費
|
0
|
2932
|
4420
|
6148
|
7900
|
LUT消費
|
0
|
1750
|
2535
|
3558
|
4437
|
BRAM消費
|
0
|
3
|
3
|
5
|
6
|
DSP消費
|
0
|
12
|
12
|
24
|
24
|
一言 FFT といっても設定パラメータによって機能などが変化するため、上記の結果がすべてではありません。
今回は 1024ポイントの FFT で、パイプライン設定をしたストリーム信号をリアルタイムで処理できるタイプの設定にしました。
レジスタ消費と LUT 消費をグラフにすると以下のようになりました。
FFT では BRAM(メモリ) も DSP も消費します。以下のようになりました。
FFT でもレジスタ消費、LUT 消費はおおむねリニアに増えていきます。
DSP 消費は 16bit と24bit で明確に差がありますが、これは
DSP 回路の入力ビット幅の制限があるため一定のビット幅以上で消費量が跳ね上がるのが理由だと推測されます。
BRAM のほうはこれだけ見ますとほぼリニアのような増え方です。
まとめ
3回にわたって、ビット幅によって使用リソースの変化がどのようになるのかを調査してみました。
回路によっては、ビット幅に比例しているものもあれば、放物線的に増えるものもあり、アプリケーションよりの FIR フィルタや FFT では割とリニアに対応していることがわかりました。
実際のところ実装後にビット幅を変更することはかなり難しい部分も多いので、実装前の見積もり段階である程度ビット幅によるリソース消費量はどのような感じかつかんでおくと後で困ることは少ないのではないかと思います。
0 件のコメント :
コメントを投稿