8-04 vgg-5, 6, 7層目のVHDL化
●5層目は出力256chで32並列
図8‐61にvgg-5層目のタイミングのイメージを示します。
5層目の入力は128chですが、出力は256chになります。前層までと同じように、入力は逐次処理、出力は並列処理としますが、ここでは32並列にします。
すなわち1つの乗算器で出力を8ch計算することになり、そうすれば図8‐61の左にあるようにoutCh0,1,2,... 7の1ラインが6.912msで計算でき、1画面が518.4msで計算できます。このように1画面計算にかかる時間を各層そろえてパイプライン化に備えます。 |
図8-61 vgg-5層目のタイミングのイメージ
●8ch×32並列なので出力256ch
図8‐61の上段はoutCh0,1,2,... 7を計算するようすです。これら出力8chは1個の乗算器で「逐次的に」計算されます。したがって1画素の計算にかかる期間は90ns
x 128 x 8 = 92.16usになります。1ライン75画素なので92.16us x 75 = 6.912msで1ラインの計算、1画面75ラインなので6.912ms x 75 = 518.4msで1画面の計算が終わります。
1つの乗算器で8chぶん計算するため、outCh0の1画素、outCh1の1画素、outCh2の1画素、...
outCh7の1画素をそれぞれ別のタイミング(11520nsおき)にラッチして取り出し、更にもう一度ラッチしてタイミングを揃えます(図8‐61の右の方にある「outCh
0,0 to 7,0」)。
乗算器(ビットシフト型)が32個並列で8chづつ計算するので出力は256chになります(入力は128ch)。画素数は入力と一緒で75×75です。 |
●4層目の出力が5層目の入力になる
4層目のシミュレーション結果relu.outの名前を変えてlay5.inとし、それが5層目の入力になります。図8‐62のようにRAM_X1_0〜3(入力バッファ、4ラインぶん)にlay5.inの内容が書き込まれます。
conv_layer5は入力バッファからの画像を処理してRAM_X2_0〜3(出力バッファ、4ラインぶん)に書き込みます。1ライン75画素なのでアドレスは128、出力256chなのでデータ幅は5bit
x 256 = 1280bitになります。 |
図8-62 5層目のブロック図
次のページへ
目次へ戻る |