6-06 畳み込みの回路図とタイムチャート

●全体のブロック図

 図6-32はVHDL化した際のブロック図です。「
画像ROM」にはあらかじめパディングを施された30×30の画素データが入っています。

 そして画像ROMのリードアドレスを図6-30にならって生成すれば、im2col関数と同じ順番で画素が出てきます。
そうして得られた画素データとフィルタ係数との
積和演算を行います。

 その後は
バイアス加算→Reluと施し、最後に演算結果を「画像RAM」に書き込んで畳み込み1層目は終了です。

  図6-32 ROMから読んで演算してRAMに書いて終わり


■回路設計なのでまずは回路図から始める

 VHDL化は第1部と同じ手順で進めます。まずは@回路図を描き、Aタイムチャートを書きます。なお@とAは同時進行的に進めたり、Aを先に行う場合もあります。


●リードアドレス生成回路

 畳み込み1層目は図6-32のようなブロックに分かれますが、まず最初に「
リードアドレス生成回路」を考えます。図6-33にそのブロックの回路図とタイムチャートを示します。

 3×3画素を順次読み出し、フィルタ係数9個と乗算する必要がありますが、そのタイミングを発生するのがCO9です。

 また3×3のエリアを水平方向に28回動かす必要もあります。そのタイミングはHCO28で発生します。

 さらにそのエリアを垂直方向に28回動かす必要もあります。そのタイミングはVCO28で発生します。

 BaseAddrはこのように遷移するのでHCO28とVCO28の組み合わせで生成できます。

 Offsetはこれなので図6-33(a)の吹き出しのようにエンコードします。

 BaseAddrとOffsetを加算します。また加算による遅延の伝播を断ち切るため、DF/FでラッチしてX_RD_ADDRとします。





  図6-33 リードアドレス生成回路の回路図とタイムチャート


●画像1枚の処理に9×28×28=7056サイクル

 図6-33(b)はリードアドレス生成回路のタイムチャートです。CLKは100MHz(周期10ns)とします。
 1回の積和に9サイクル、それを横方向に28回、さらに縦方向に28回行うので画像一枚の処理にかかる時間は70.56us(7056サイクル)です。


次のページへ


目次へ戻る