こんにちは、ドルフィンシステムの笹生です。
今回は「除算」と「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 で最初から使用されているリソースです。
やや緩い放物線でリソース消費量は増加しているようです。
恐らく回路的にビット幅の 2乗でリソースを消費するところがあるからだと推測します。
ちなみに除算回路はエンベデッドの DSP 回路、ブロックRAM は使用しませんでした。
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
も比較的緩い放物線のようにビット幅に対してリソースの消費量が増加しています。
DSP 回路の消費に関しては 32bit より多いと消費量がぐっと増えます。
まとめ
今回は「除算」と「CORDIC」に関してビット幅に対しての
FPGA リソース消費量を比較してみました。
LUT とレジスタはどちらも緩い放物線(二乗カーブ)に近い増加をしています。
DSP を使用する CORDIC は 32bit を境に DSP 消費量が跳ね上がります。
これはそもそもFPGA に実装されている DSP 回路の入力ビット幅の制限があるため一定のビット幅以上で消費量が跳ね上がると推測されます。
次回は無線信号処理でも頻繁に使用される 「FIRフィルタ」と「FFT」について調査したいと思います。
0 件のコメント :
コメントを投稿