2-02 2層目のEXCEL化

●2層目の重み係数とバイアスをコピペ

 図2‐21はballs_layer2.xlsm(2層目のEXCEL)のW2_Biasシートです。
 Pythonが生成した重み係数 w2_int.csvがコピペされています。バイアスb2_int.csvは148行目にコピペしますが、その下の行で1/8にされた後HDL化されます(この理由による)。

図2‐21 

 上図ように重み係数は8種類(+64, +32, +16, +4, -4, -16, -32, -64)しかありません。したがってそれらは3ビットにエンコードできます。また2の累乗なのでビットシフト乗算が出来ます(FPGA内乗算器の節約)。


●Visual Basic for Applicationウインドウ

 図2‐22のようにVBAからModule10を開きます。このマクロはW2_Biasシートの重み係数をエンコードして結合するものです。

図2‐22 

●ROMDATA(0)〜(35)が生成される

 マクロを実行するとvbaoutputディレクトリにdata00〜03.txtが生成されます(図2‐23)。W2_Biasシートの各セルがエンコードされて横一行になっています(*1)。

(*1)-64=100, -32=101, -16=110, -4=111, +4=000, +16=001, +32=010, +64=011と3ビットにエンコード。それを横一行なので3x32 = 96ビットになる。ROMDATAは0〜35まで(入力16ch/4 = 4ch, カーネル3x3なので4x9 = 36)

図2‐23 ビット幅96bit、アドレスは0〜35

●VBA2つでHDLファイル完成

 次にModule11を開いて実行します(図2‐24)。2層目はこれら2つのマクロのコンビネーションで係数ROMのHDLファイルを生成します。

図2‐24 もう一つVBAを実行

次のページへ

目次へ戻る