FPGA のリソースはデータビット幅の違いでどのように変わるのか (2)


こんにちは、ドルフィンシステムの笹生です。

さて今回は前回の続きとしまして、FPGA のリソースはデータビット幅の違いでどのように変わるのか」の第2弾をお送りします。

今回は「除算」と「CORDICに関してビット幅と FPGA リソース消費量の関係を検証してみたいと思います。前回同様 LabVIEW FPGA を使い、ターゲットは FlexRIO 7951R (Virtex5 LX30) で確認をしました。



除算回路のリソースはビット幅でどう変わるか


除算回路として以下のような実装をしてみました。



除算期の入力側の Input A/B それぞれのビット幅を 8,16,,,64 bit 8bit づつ変更してコンパイルをし、使用したリソースを比較してみます。

Resouce
ベース
Div FIX8
Div FIX16
Div FIX24
Div FIX32
Div FIX40
Div FIX48
Div FIX56
Div FIX64
Total Slice
696
737
854
870
1031
1105
1131
1204
1336
Slice Register
1414
1601
1775
1997
2266
2596
2929
3311
3716
Slice LUT
1316
1453
1617
1835
2114
2535
2941
3413
3923
Block RAM
0
0
0
0
0
0
0
0
0
DSP 48s
0
0
0
0
0
0
0
0
0
レジスタ消費
0
187
361
583
852
1182
1515
1897
2302
LUT消費
0
137
301
519
798
1219
1625
2097
2607

ベースの列は、LabVIEW FPGA で最初から使用されているリソースです。
レジスタ消費と LUT 消費をグラフにすると以下のようになりました。



やや緩い放物線でリソース消費量は増加しているようです。
恐らく回路的にビット幅の 2乗でリソースを消費するところがあるからだと推測します。
ちなみに除算回路はエンベデッドの DSP 回路、ブロックRAM は使用しませんでした。

CORDIC 回路のリソースはビット幅でどう変わるか

CORDIC 回路として以下のような実装をしてみました。



ここで CORDIC アルゴリズムについて簡単に説明をしたいと思います。
CORDIC とは COordinate Rotation DIgital Computer の略称で、日本語に訳すのであれば座標回転のデジタル的な計算手法とでも訳せましょうか。
主に三角関数や、双曲線、対数などの計算を反復的かつ簡便にハードウェアに適用できるアルゴリズムです。
参考:Wikipedia CORDIC

今回はそのうち、直交座標から極座標への変換をするものを選びビット幅対リソースを比較してみました。

Resouce
ベース
CORDIC FIX8
CORDIC FIX16
CORDIC FIX24
CORDIC FIX32
CORDIC FIX40
CORDIC FIX48
CORDIC FIX56
CORDIC FIX64
Total Slice
696
785
995
1283
1568
2088
2825
3428
4094
Slice Register
1414
1846
2594
3730
5250
7167
9423
12065
15089
Slice LUT
1316
1744
2506
3661
5162
7197
9506
12202
15366
Block RAM
0
0
0
0
0
0
0
0
0
DSP 48s
0
0
1
2
4
10
11
12
14
レジスタ消費
0
432
1180
2316
3836
5753
8009
10651
13675
LUT消費
0
428
1190
2345
3846
5881
8190
10886
14050
DSP消費
0
0
1
2
4
10
11
12
14

CORDIC についてもレジスタとLUT の消費量をグラフにしてみました。




CORDIC も比較的緩い放物線のようにビット幅に対してリソースの消費量が増加しています。
LUT とレジスタに加えて CORDIC ではビット幅が 8bit 以外は DSP も消費しており、以下のようなグラフになりました。




DSP 回路の消費に関しては 32bit より多いと消費量がぐっと増えます。

まとめ

今回は「除算」と「CORDIC」に関してビット幅に対しての FPGA リソース消費量を比較してみました。
LUT とレジスタはどちらも緩い放物線(二乗カーブ)に近い増加をしています。
DSP を使用する CORDIC 32bit を境に DSP 消費量が跳ね上がります。
これはそもそもFPGA に実装されている DSP 回路の入力ビット幅の制限があるため一定のビット幅以上で消費量が跳ね上がると推測されます。
次回は無線信号処理でも頻繁に使用される FIRフィルタ」と「FFT」について調査したいと思います。



0 件のコメント :

コメントを投稿