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を実行
次のページへ
目次へ戻る |