8-04 vgg-5, 6, 7層目のVHDL化(続き)
●Relu_XXは4chぶん多重化されているので分離する
図8‐71はModelSimシミュレーションのようすです。積和演算→ビット削減→ReLuの結果、Relu_00〜63という信号になります。そこまでは64個の信号ですが、同図ではRelu_56を23.04us毎にデマルチプレクスして3つの信号reg_56_0〜3に分解しています。
このように処理するので、出力の1画素を計算するのにかかる時間は 90ns x
256 x 4 = 92.16us になります。 |
図8‐71 Relu_56の値 0, 2, 0, 4 がそれぞれreg_56_0, 1, 2, 3に渡される
●6層目の出力がバッファに書かれるようす(env内)
そして1ラインは75画素なので 92.16us x 75 = 6.912ms で1ライン計算します。図8‐72のReluWrSelは出力ラインバッファ(4個)の切り替え信号で、6.912ms周期で切り替わっています。 |
図8‐72 出力1ライン計算に6.912ms
●relu.outに出力が書かれている
6層目も出力はテキストファイルに落とされます。図8‐73はrelu.outの最後の部分、75×75画素なので1画面で5625行、また出力は256チャネルなのでビット幅は
5bit x 256 = 1280bit になります。これをVBAで256個のCSVファイルに分割してPythonの結果と比較します。 |
図8-73 relu.outに6層目の結果が書かれる
●バッチファイルでまとめて比較する
CSVファイルが256個もあるので、前層までと同様にバッチファイルによって比較します。その結果は図8-74のようになり、全てのチャネルがピタリ一致しています。 |
図8-74 コマンドプロンプトでtest6.batを走らせる
次のページへ
目次へ戻る |