FC2カウンター FPGAの部屋 2018年08月10日
FC2ブログ

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

FPGAの部屋

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

Kerasで学習した重みとバイアスを使用した白線間走行用CNNのVivado プロジェクト1

だいぶ前になってしまったが、”Kerasで学習した重みとバイアスを使用した白線間走行用CNNをIPにする2”で、”カーブ、直線用白線間走行用畳み込みニューラルネットワーク13(AXI4 Stream版CNN IP 1)”の curve_conv_nn2_axis3 プロジェクトを利用して、curve_conv_nn2_axis3_k プロジェクトを作成し、Export RTLでIP 化を行った。

今回は、そのIP を使用して、”カーブ、直線用白線間走行用畳み込みニューラルネットワーク15(Vivadoプロジェクト)”のVivado プロジェクトをバージョン 2018.2 に変更し、curve_conv_nn2_axis3 を”Kerasで学習した重みとバイアスを使用した白線間走行用CNNをIPにする2”で作成したIP と交換して、ZYBO_0_182_9_k フォルダに保存した。

ZYBO_0_182_9_k フォルダのVivado 2018.2 プロジェクトを示す。
keras_curve_line_14_1808010.png

、”カーブ、直線用白線間走行用畳み込みニューラルネットワーク15(Vivadoプロジェクト)”のVivado プロジェクトと同じだが、もう一度、ブロックデザイン、Address Editor を示す。
keras_curve_line_15_1808010.png
keras_curve_line_16_1808010.png

keras_curve_line_18_1808010.png

camera_module のブロックデザインを示す。
keras_curve_line_17_1808010.png

論理合成、インプリメンテーション、ビットストリームの生成を行った。結果を示す。
keras_curve_line_19_1808010.png

タイミングエラーが出ている。
Open Implemented Design を開いて、原因を見てみよう。
keras_curve_line_20_1808010.png

やはり、curve_conv_nn2_axi3 IP でタイミングエラーが出ている。

もう一度、”Kerasで学習した重みとバイアスを使用した白線間走行用CNNをIPにする2”に戻って、Uncertainty を 2 ns に設定して、C コードの合成を行った。結果を示す。
keras_curve_line_21_1808010.png
keras_curve_line_22_1808010.png

Estimated は9.634 ns で前よりも悪くなっているが、Vivado での解析結果を見ないと何とも言えない。
Latency は、178833 クロックが 194745 クロックに延びているが、まだ、1.95 ms なので問題ない。
リソース使用量はFF と LUT が多少増えている。

Export RTLで IP 化を行った。結果を示す。
keras_curve_line_23_1808010.png

CP achiveved post-implementation が 7.937 ns になった。これで大丈夫だろう?

Vivadoプロジェクトで、curve_conv_nn2_axi3 IP を入れ替えて、もう一度、論理合成、インプリメンテーション、ビットストリームの生成を行った。結果を示す。
keras_curve_line_24_1808010.png

今度はタイミング制約を満足している。
  1. 2018年08月10日 06:47 |
  2. TensorFlow, Keras
  3. | トラックバック:0
  4. | コメント:0