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層目のブロック図
次のページへ
目次へ戻る |