6‐05 1層目のRAMアクセス(HDL、続き)
●タイムチャートを見てHDL化
図6‐40はRAM_X0のリードアドレスを生成する部分です。
この
タイムチャートのように KernelHは012 012 012 012 012 012...と遷移し、
KernelVは
000 111 222 000 111 222...と遷移するのでcount9との関係性によりHDLでは同図のように生成されます。
また
RAM_X0_RD_ADDR
の下位5ビットはKernelH+CnnPixCount、上位5ビットはKernelV+CnnLineCountで生成されます。HDL化すると同図のようになります。
図6-40
この
タイムチャートをHDL化(gts_timing.vhd)
●RAM_X0の読出しデータが1層目に行く
1層目の入力が入るRAMはLineOut_Ctrl.vhdにあります(CNN推論回路の外側)。アドレスRAM_X0_RD_ADDRは共通、読み出しデータはRAM_X0_RD_DATA_0〜1です。
ピンポンモード
でRAM_X0_RD_SELにより切り替えられ、
RAM_X0_RD_DATA
になります(図6‐41)。
同図のようにRAM_X0_RD_DATAは、ts_r_8bit/ts_g_8bit/ts_b_8bitの3つの信号に分けられます(*1)
(*1)RGB565フォーマットなので、下位ビットを0で埋めて8ビットにする
図6-41 バッファが2つ。書いていない方から読みだす(LineOut_Ctrl.vhd)
●入力4チャネルがミックスされて積和演算器に
ts_r_8bit/ts_g_8bit/ts_b_8bitは1層目(conv_layer1.vhd)に入力されます(名前がpix_r/pix_g/pix_bに変わる)。そして図6‐42のようにin1ChSelにより選択されて
pix_rgb
となります(*2)。
(*2)in1ChSelが"11"のときはデータを0でマスクする(
この
タイムチャートの上の方、dummy 0 data)。1層目の入力はRGBの3チャネル+ダミー1チャネル=4チャネルになる
pix_rgbは同図のようにdotpro_00〜15に入力されます。
dotpro
は積和演算器で、出力が16chなので16個で並列演算します。
図6‐42 出力16chなので積和演算器16個(conv_layer1.vhd)
●積和後の処理
積和演算器の出力mac_00〜15はバイアスと加算され、ビット削減、ReLUを施されて2層目に出力されます(
ここ
参照)。
次のページへ
目次へ戻る