■論理シミュレーション

 このアーカイブを解凍してModelSimで開きます(その使い方はここ参照)。コンパイル(compile all)の後、
 do run.do
 このコマンドでシミュレーションがスタートし、77usで自動的にストップします。


●並列動作のようすを波形で確認

 do wave.do
 上記コマンドを実行すると図3-08のように波形が現れます。MatRomData_00〜49は各重みROMからの出力です。このように
50個のROMが同時に読み出され、並列に演算されます。


  図3-08 重みROMデータが50個同時に読み出される

●1層目の演算結果の確認

 図3-09のZ_WR_DATA00〜49を見てみましょう。13us付近で現れる値がdotpro_sigmoid_00〜49内で行われた演算結果になります。
 同図とこのEXCELのz1の行を見比べると、演算結果が
ピタリ一致していることが分かります。

  図3-09 13us付近から1層目の結果

●1層目の結果をRAMに書いて2層目に渡す

 図3-10はZ_WR_DATA00〜49をマルチプレクサで多重化し、RAM_Z1に書き込む部分です。dotpro_sigmoid_00〜49の内部では並列に演算が行われますが、その結果はこのように1サイクル毎ずらしながらRAMに書き込まれます。

  図3-10 RAMには1個づつ書く

 図3-11はRAM_Z1への書き込みが終わる部分です。1層目の演算結果z1は50個なので、ここで50サイクル時間がかかります。

  図3-11 RAMに50個書くのに50サイクル


次のページへ


目次へ戻る