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"を検索して置き換え

最初のページへ

目次へ戻る