8-03 vgg-3, 4層目のVHDL化(続き)
●4層目のシミュレーション用プロジェクト
vgg-4層目のModelSim(シミュレータ)プロジェクトのアーカイブを解凍すると図8‐56のような構成になっています。出力が128チャネルですが1個の積和演算器で2チャネルを受け持つのでdotpro_W4_xxは64個になります。また乗算器はビットシフト型です。
この層はプーリング(pooling_lay4)があり、それ用のメモリ(SRAM256x640_pool)が1個必要になります。 |
![](zu8-56.jpg)
図8-56 vgg-4層目のツリー構造
●ラインの周期は倍になるがライン数が半分になる
3層目の出力はここに示すように23.04us x 150 = 3.456msで1ラインぶんの演算が終わります。図8‐57を見るとLay2NextWrSel(4層目の入力ラインバッファの切り替え信号)が3.456msで切り替わっています。
4層目の出力にはプーリングがあるので、46.08us x 75 = 3.456msで1ライン計算しますが、ここの右下のように無効ラインの期間が入るので、その倍の6.912msで1ライン出力されます。図8‐57を見るとReluWrSel(出力ラインバッファの切り替え信号)が6.912msで切り替わっています。
プーリングにより75ラインになるので1画面の処理は6.912ms x 75 = 518.4msとなり、結局1,2,3層と同じになります。 |
![](lay4sim01.gif)
図8-57 入力1ラインの周期と出力1ラインの周期
●relu.outに出力が書かれている
4層目も出力はテキストファイルに落とされます。relu.outを見るとデータ幅は5
x 128 = 640bitになっています。またプーリングで75×75画素になっているので、1画面で5625行になります。前層までと同様にEXCELのVBAでデータを並び替え、Pythonの結果と比較します。 |
![](lay4sim02.gif)
図8-58 75x75 = 5625行、各行データ幅は640ビット
●バッチファイルでまとめて比較する
CSVファイルが128個もあるので、前層までと同様にバッチファイルによって比較します。その結果は図8-59のようになり、全てのチャネルがピタリ一致しています。 |
![](lay4sim03.gif)
図8-59 コマンドプロンプトでtest4.batを走らせる
最初のページへ
目次へ戻る |