コラム21 VHDLファイルの自動生成(重みROM、画像ROM、バイアスROM)
重みROM (ROM_W1.vhd)の下にはリスト2‐06のように50個ものROM (ROM_W1_00〜49)があり、それぞれ784個の固有のデータを持っています。それらをEXCEL表からVHDLファイルにコピペするのは大変なので、EXCEL+VBAで自動生成させます。
■EXCELファイルからVBAを実行する方法
このEXCELファイルをダウンロードし、適当なディレクトリにコピーしてから開きましょう。これはディープラーニングの推論をPythonから移植したものであり、2枚目のシートでは行列W1(1層目の重みの行列)のデータが張り付けてあります(図2‐35)。 |
図2‐35 EXCELの2枚目のシート、行列W1。要素数は784×50ある
●重み行列のデータが膨大で手作業ではやってられない
各列に784個のデータがあり、それらを格納するROMをVHDLで記述します。例えば1列目はリスト2‐09のようなVHDLファイルになります。
データ幅9ビット、アドレス幅10ビットのROMのひな型VHDLを作り、ROMデータをEXCELからコピペ(2進数化してから)すれば良いのですが、いかんせん50列もあるため、その作業を50回も続けると疲れてミスを犯しそうです。 |
リスト2‐09 このようなROMファイルを50個作る!手作業では大変・・・
●EXCELの開発ツールを有効にする
そこでVBA (Visual Basic for Application)という機能を使います。まずは図2‐36のようにEXCELの「ファイル」→「オプション」→「ユーザー設定」から「開発」をチェックしましょう。 |
図2‐36 EXCELでVBAを使うための設定
すると図2‐37のように「開発」タブが現れるのでクリックし、左のVisual Basicをクリックします。 |
図2‐37 開発タブからVisual Basic
●VBAマクロを開いて走らせる
左枠のVBA ProjectからModule1をダブルクリックすると図2‐38のようにSub makeTextW1から始まるVBAマクロが現れます。 |
図2‐38 Module1をダブルクリック
あらかじめこのアーカイブを解凍し、図2‐39のようにvbaoutputフォルダをEXCELファイルと同じディレクトリにコピーします。
その後マクロ実行ボタン(三角マーク)をクリックすると図2‐40のようなダイアログが現れます。 |
図2‐39 vbaoutputフォルダをEXCELと同じディレクトリに置く
図2‐40 VBAマクロを実行するとTEXTファイルが生成される
vbaoutputフォルダの中にdata00.txt〜data49.txtというテキストファイルができています。それぞれ固有の値がEXCELから転写されています(図2‐41はdata00.txt)。 |
図2‐41 自動生成されたdata00.txt
次のページへ
目次へ戻る
|