FC2カウンター FPGAの部屋 HLSストリームのマックス・プーリング層2(Export RTLまで)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

HLSストリームのマックス・プーリング層2(Export RTLまで)

”HLSストリームのマックス・プーリング層1(C ソースコード)”の続き。

前回はマックス・プーリング層の C ソースコードを公開した。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行う。

まずは、C シミュレーションからやってみよう。
hls_max_pooling_1_180427.png

Error Count = 0 なので、2 つの任意精度固定小数点データ型のマックス・プーリングの計算が合った。

マックス・プーリング層の出力の max_pooling_output.h の浮動小数点数の結果の一部を示す。
hls_max_pooling_2_180427.png

マックス・プーリング層の出力の max_pooling_output.h の任意精度固定小数点数の結果の一部を示す。
hls_max_pooling_3_180427.png

C コードの合成を行った。
hls_max_pooling_4_180427.png

Estmated は 7.60 ns で問題ない。Latency は 318 クロックだった。入力数は、52 x 6 = 312 なので、ほぼ 1 クロックで 1 データを処理できていることが分かる。
リソース使用量は、FF が 509 個で、LUT は、614 個だった。

C/RTL 協調シミュレーションを行った。
hls_max_pooling_5_180427.png

Latency は 323 クロックだった。

C/RTL 協調シミュレーション波形を示す。
hls_max_pooling_6_180427.png

ins_V_read がほぼ 1 になっていて、スループットが高いのが分かる。
出力の outs_V_write は 3 つの塊が合って、1 クロックごとに 1 と 0 を繰り返している。これは、2 x 2 のマックス・プーリングで 2 データに 1 回しか結果が出ないからだ。

Export RTL を行った。
なお、Vivado synthesis, place and route にチェックを入れている。
hls_max_pooling_7_180427.png

CP achieved post-implementation は 7.398 ns で問題なさそうだ。
  1. 2018年04月27日 04:46 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/4147-1aebbd96
この記事にトラックバックする(FC2ブログユーザー)