コラム143 推論結果をVGAに重ね書きさせる仕組み

 この写真ではCMOSカメラの動画をVGAに映しつつ推論を行い、その結果をVGAに上書きしています。本コラムではディープラーニング回路からの推論結果をVGAの動画上に重ね書きする仕組みを解説します。


●0から9までの数字をかたどった薄い板

 図14-20のように薄い板を10枚重ねるイメージを考えます。各板の白い部分は”1”、黒い部分を”0”とします。アドレスは横が5ビット(0〜27)、縦も5ビット(0〜27)なのでアドレス幅10ビット、データ幅1ビットのROMと考えることが出来ます。



  図14‐20 薄いROMを重ねるイメージ


●数字パターンを格納するROM

 
そしてこれら10枚を重ねると、図14-21のようなアドレス幅10ビット、データ幅1ビットのROMとなります(*1)。

(*1)アーカイブ内のROM_PAT.vhdがそれにあたる。EXCEL+VBAを活用して生成した。


  図14-21 28×28×10ビット


●ROMデータ10ビットからその数字に対応するビットを取り出す

 ROMの読み出し方は図14‐22のようになります。アドレスはHCO28とSHCO28を連結します(ここ参照)。
 読み出された10ビットのデータはセレクタに入り、ANS_to_VGA(生成方は図14-23)で1ビットだけ取り出されます。
 セレクタの出力が0だったたらVGAに「真っ黒」を送ります(0x00)。セレクタの出力が1だったたらVGAに「真っ白」を送ります(0xFF)。これでVGAに推論結果を映すことができます。
 VGAは偶数フレームのときはCMOSカメラからの動画、奇数フレームのときに推論結果を表示します(ここ参照)。


  図14-22 数字パターンを選んで表示


●推論結果により数字方向の切り替え

 ディープラーニングから水平同期期間(32us)のたびに推論結果が送られてくるのでRAMに書き込みます(*2)。書き込みアドレスは図14-23のようにVCO17とHCO28を連結して作ります(ここ参照)。
 RAMの読み出しアドレスは同図のようにVCO17とSVCO29を連結して作ります(ここ参照)。読み出しデータはセレクタの選択信号ANS_to_VGAとなります。

(*2)実際はディープラーニング回路をクロック96MHzで動かすので、1回の推論に10kサイクル/96MHz = 104usかかる。32usで入ってくると間に合わないので4倍ゆっくり入力する。したがって全画面推論するのに4フレームかかる。



  図14-23 推論結果をいったんRAMに書き込んで読み出す


目次へ戻る