●画像を8枚ぶん送り込む部分

前節までは画像データはは1枚ぶん用意しましたが、本節では
8枚ぶん用意し、それらを順次パイプラインに送り込んで処理します。

 図3-42(a)は画像データを発生する部分です。784進カウンタをCLKでカウントアップする部分は前節までと一緒です。それに加えて8進カウンタを設け、3層目の終了を示す信号W3DONEでカウントアップさせPictureNを生成します。

 画像ROM内には8枚の画像データがあり、
PictureNが各画像を選択するアドレス、CO784が各画素を読み出すアドレスになります。


  図3-42(a) 8枚の画像データを次々と送り出す


 図3-42(b)にタイムチャートを示します。W3DONEの周期は11usです。PictureNは画像番号で、0〜7までカウントアップします。各画像の画素数は784なので後半の300サイクル余りは無効データが出てきます。


  図3-42(b) 8枚の画像データを次々と送り出す


●1、2、3層がパイプラインで並列動作する

 図3-43(a)は全体の構成です。前節までは1層目から3層目は順番に動作していましたが、本節では同時に動作します。(*2)

(*2)前節までは積和演算などを並列化したが、「層単位」では逐次処理だった。本節ではパイプライン化により、層単位でも並列処理させる。


  図3-43(a) 層単位でも並列動作する


 図3-43(b)にタイムチャートを示します。3層目が一番遅いのでその演算周期(11us)で各画像の推論を行います。1層目と2層目の後半百数十サイクルはWaitingになります。


  図3-43(b) 層単位でも並列動作する


●書き込みと読み出しを同時に行うための工夫

 ところで図3-43(a)のRAM_Z1やRAM_Z2は、
書き込みと読み出しを同時に行います。したがって読み出し中にデータが上書きされないような工夫が必要になります。

 そこでRAM_Z1の内部に図3-44のように2個のRAMを設け、それらを
「ピンポンモード」で使用します。W3DONEの周期でH/LとトグルするODD信号を生成し、それでセレクタを切り替えます。同図のような使い方をすれば読み出し中にデータが上書きされることはありません。



  図3-44 RAM2個をピンポンモードで使う


次のページへ


目次へ戻る