11‐03 6層目のRAMアクセス(読み方/書き方)

●128個のデータを6層目が読む

 5層目の出力は図11‐20のようなRAMに書き込まれ、
6層目はこのRAMからデータを順番に読み出します。

図11-20 RAM_X5に6層目の入力。128アドレスに x 5bitデータ

●データ128個を重み係数128個と積和

 図11‐21のRAM_X5_RD_ADDRは図11‐20のRAMのアドレスで、まずアドレス0からデータX0、次にアドレス1からデータX1、その後X2, X3... X127と読み出して積和演算器に送ります。

 その下のW6Addr(6:0)は重み係数のアドレスで、このROMのアドレス0〜127まで、左端の列W0,0 W1,0 W2,0... W127,0 が読み出されます。それらが上記の
128個のデータと積和され、最初の積和結果mac0になります。

 その下の(縮小)ではW6DataSel(5:0)が0から1になり、そこではROMの隣の列W0,1 W1,1, W2,1... W127,1が読み出されます。それらが上記の128個のデータと積和され、それが次の積和結果mac1になります。
 同様にROM_W6_ADDR(12:7)が0〜42まで繰り返され、積和結果mac0〜42までが得られます。

図11-21 データRAMと重み係数ROMのアクセス

●フレーム単位で同期をとってパイプライン動作

 6層目は積和演算器1個で積和結果mac0〜42が得られます。その期間は同図のように 10ns x 128 x 43 =
55.04usとなります。そして同図の下の方、ReluWrNのタイミング1280nsで43回、休み時間込み320usで判定回路(judge.vhd)に送られます。したがって判定結果の周期はCNN1ブロックの周期320usと同じになります。

次のページへ

目次へ戻る