9-01 extras-1, 2層目のVHDL化

extras-2層目はカーネルが3x3になる

 extras-1層の出力はextras-2層に入力されます。図9-08は2層目のタイミングのイメージを示します。

 extras-2層目の入力は256ch、出力は512chになります。この層はカーネルが
3x3になります。この層では1つの乗算器で出力を128ch、4並列で計512ch計算します。


図9-08 extras-2層目のタイミングのイメージ


●128ch×4並列なので出力512ch

 図9-08の上段はoutCh0,1,2,...127を計算するようすです。これら出力128chは1個の乗算器で「逐次的に」計算されます。したがって1画素の計算にかかる期間は90ns x 256 x
128 = 2949.12usになります。

 この層の入力は19x19画素ですが、出力は
10x10画素になります(その手法は後述)。したがって2949.12us x 10 = 29.4912msで1ライン計算しますが、同図右にあるように「休み期間」が25.8048msあるので計55.296msで1ライン、1画面10ラインなので27.648ms x 10 = 552.96msで1画面の計算が終わります。(*1)

 「outCh128 to outCh255」、「outCh256 to outCh383」、「outCh384 to outCh511」もそれぞれ1つの乗算器で計算されます。乗算器(ビットシフト型)が4個並列で128chづつ計算するので出力は512chになります(入力は256ch)。

*1)実際は55.296 * 9 + 29.4912 = 527.1552msで1画面計算。518.4msより少し長くなる

●extras-1層目の出力がextras-2層目の入力になる

 extras-1層目のシミュレーション結果relu.outの名前を変えてex2.inとし、それがextras-2層目の入力になります。図9-09のようにRAM_X1_0〜3(入力バッファ、
4ラインぶん、カーネルが3x3なので)にex2.inの内容が書き込まれます。

 conv_ex2は入力バッファからの画像を処理してRAM_X2_0〜1(出力バッファ、
2ラインぶん、次層はカーネルが1x1なので)に書き込みます。1ライン10画素なのでアドレスは16、出力512chなのでデータ幅は8bit x 512 = 4096bitになります(extras層は1画素8ビット)。


図9-09 extras-2層目のブロック図


次のページへ



目次へ戻る