●画像を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個をピンポンモードで使う
次のページへ
目次へ戻る
|