FC2カウンター FPGAの部屋 「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化7(C/RTL協調シミュレーション)

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

FPGAの部屋

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

「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化7(C/RTL協調シミュレーション)

”「ゼロから作るDeep Learning」の畳み込みニューラルネットワークのハードウェア化6(再度Vivado HLS )”の続き。

前回は、畳み込みニューラルネットワークをVivado HLS でハードウェア化することができた。今回は、HDLコードを見たり、C/RTL協調シミュレーションをしてみてから、IP化を行ってみよう。ただし、デフォルトのインターフェースのままでは、IP にしたときに使いにくいので、実際に使用する際にはAXI バスにする。

最初に生成されたHDLコードを見てみよう。VHDL コードを見る。トップファイルのmnist_conv_nn.vhd はメモリのインターフェースとなっている。
nn_fpga_ch7_33_170621.png

さて、次にC/RTL協調シミュレーションをやってみよう。ただし、100 回は長すぎるので、1 回だけやってみる。
nn_fpga_ch7_34_170621.png

C/RTL協調シミュレーションの結果を示す。
nn_fpga_ch7_35_170621.png

172089 クロックかかっている。

C/RTL協調シミュレーションの波形を示す。まずは全体の波形から。
nn_fpga_ch7_43_170621.png

入力の部分を拡大してみた。
nn_fpga_ch7_36_170621.png

更に拡大した。値を見ることができる。
nn_fpga_ch7_37_170621.png

出力部分を見た。答えの 6 以外はMSB のビットが立っているので、マイナスの値になっているのが分かる。
nn_fpga_ch7_38_170621.png

試しに、テストベンチの固定小数点の最大値を調べる関数にプリント文を追加して値を見ることにした。
nn_fpga_ch7_39_170621.png

そして、C シミュレーションを行った結果を示す。
nn_fpga_ch7_40_170621.png

やはり、6 だけプラスの値で、13.625 だった。分かりやすい結果となった。

次に、試しにIP 化を行ってみた。
インプリメントして、動作周波数が間に合うのか?を調べるために、Place and Route にチェックを入れた。
nn_fpga_ch7_41_170621.png

その結果、問題ないようだった。
nn_fpga_ch7_42_170621.png
  1. 2017年06月21日 05:11 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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