2-01 1層目のEXCEL化(続き)
●係数ROMは手作業でHDL化するのは大変
各層の重み係数はハードウェアではROM(初期値付きのRAM)に置かれます。係数の数は非常に多く、一つ一つ手作業でROMのHDLファイルにコピペするわけにはいきません。
そこでEXCELの
VBA
(Visual Basic for Application)を使って、HDLファイルを自動生成します。
●VBA (Visual Basic for Applications)
ここからVBAを使用します。開発タブ→Visual Basicをクリック(*1)。
(*1)見つからない場合はファイル→オプション→リボンのユーザー設定から「開発」をチェック
図2‐06 VBAのスタート
●Visual Basic for Applicationウインドウ
図2‐07のようにVBAからModule12を開きます。このマクロはW1_Bias_binシートの重み係数をHDLの書式に変換するものです。
図2‐07 VBAマクロを開く
●ROMDATA(0)〜(26)が生成される
マクロを実行する前に、
これ
を展開してEXCELと同じ場所に
vbaoutputフォルダ
を置きます。実行すると、そのフォルダにdataUnified.txtが生成されます(図2‐08)。"ROMDATA"以後はW1_Bias_binシートの各行の2進数を一行に並べたものです。
図2-08 vbaoutputフォルダに生成される
●既存のHDLファイルを開いて変更
推論IP(
この章
でダウンロード)のw1romフォルダに
ROM_W1.vhd
があります。これは重み係数ROMファイルで、ROMのHDL記述はこのようになります(図2‐09)。
図2-09 ROMのVHDL記述
ROM_W1.vhdの最後の"end"の直前にdataUnified.txtをコピペします(既存のROMDATAと置き換える)。これで重み係数ROMのHDLの完成です(図2‐10)。
図2-10 ROMDATA(0〜26)の変更
●バイアスもVBAで生成
バイアスも同様に自動生成します。Module13を開いて実行します(図2‐11)。
図2‐11
マクロを実行するとvbaoutpuptディレクトリにdataB.txtが生成されます(図2‐12)。これを
conv_layer1.vhd
(1層目のトップモジュール、
この章
でダウンロード)のバイアス値と置き換えます。
図2-12 "BIAS"を検索して置き換え
最初のページへ
目次へ戻る