10-01 conf-2, 3層目のVHDL化

●conf層は2層目から

 extras層が終わると次からはconf層に入ります。この図の右中段にあるようにconf-1層目は省略したのでconf-2層からになります。図10-01はその2層目のタイミングのイメージを示します。

 conf-2層目の入力は1024ch、出力は126chになります。この層はカーネルが
3x3になります。この層では1つの乗算器で出力を8ch、16並列で計126ch計算します。


図10-01 conf-2層目のタイミングのイメージ


●8ch×16並列で出力126ch(最後の1個は6ch)

 図10-01の上段はoutCh0,1,2,...7を計算するようすです。これら出力8chは1個の乗算器で「逐次的に」計算されます。したがって1画素の計算にかかる期間は90ns x 1024 x
8 = 737.28usになります。
 1ライン19画素なので737.28us x 19 =
14.00832mで1ライン計算しますが、同図右にあるように「休み期間」が13ms程度あるので計27.648msで1ライン、1画面19ラインなので27.648ms * 18 + 14.00832 = 511.6msで1画面の計算が終わります。

 「outCh8 to outCh15」, 「outCh16 to outCh31」, ... 「outCh120 to outCh125(これだけは6ch)」も1つの乗算器で計算されます。乗算器(ビットシフト型)が16個並列で8chづつ計算して出力は8x15 + 6 = 126chになります(入力は1024ch)。

●vgg-15層目の出力がconf-2層目の入力になる

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

 conv_conf2は入力バッファからの画像を処理してRAM_X2_0〜1(出力バッファ、
2ラインぶん、次は判定回路なので2つで十分)に書き込みます。1ライン19画素なのでアドレスは32、出力126chなのでデータ幅は12bit x 126 = 1512bitになります(この層は1画素12ビット)。


図10-02 conf-2層目のブロック図


次のページへ



目次へ戻る