5‐02 各層間のRAMを考える

●層間のメモリは2種類ある

 このブロック図を見ると、画像メモリは4ラインぶん(黄色)と2フレームぶん(水色)の2種類あります。まずは黄色の部分について説明します。



カーネルサイズが3×3・・・ということは・・・

 このボード搭載のFPGA(5CSEMA5F31C6)には約
4Mb(500kB)の内部SRAMがあり、それを層間メモリとして使用します。
 ここで、本企画のCNNのカーネルサイズは
3×3だったことを思い出しましょう。それを図5‐04のように横にずらしながら畳み込みを行います。さしあたりは3行ぶんのメモリがあれば十分ということに気が付きます。

図5-04 3行ぶんあればどうにかなりそう

●3+1で4ラインぶんあればよい

 本企画は「リアルタイム画像処理」を目指すので、「
書きながら読む」工夫が必要になります。従って実際は図5-05のように1ライン増やして4ラインぶんの画像メモリを設けます。
 1層目の出力は16ch、データ幅は5ビット、CNN1ブロックの横一ラインは28画素なので、同図のようにビット幅が80、アドレスが28あるバッファが
4つあれば済みます。

図5‐05 書き方(W)を追いかける読み方(R)

●書いていないバッファを読めば安全に読める

 1ラインぶん余分に設けることにより「書きながら読む」ことができます。例えばバッファ3を書いているとき、はバッファ0,1,2を読みます。図5‐06のように書き方(W)を追いかけるように、読み方(R)は書いていない3ラインを読みます。

図5‐06 1ライン書く間、書いていない3ラインを読む

2層目も同様に4ラインのバッファ

 2層目の出力は32ch、データ幅は5ビット、CNN1ブロックの横一ラインは13画素なので、図5‐07のようにビット幅が160、アドレスが13あるバッファが4つあれば済みます。

図5‐07 2層目はチャネルが増えるが画素は減る


次のページへ


目次へ戻る