FPGAの開発環境である「GOWIN EDA」はGOWINのWebサイトからダウンロードしてください。関連ドキュメントも同梱されていますので使い方はそれらを参照してください。なお、日本語のドキュメントもあります。
ログイン後のWebサイトのソフトウェアラインアップに「Education Edition」がありますので、それを選択してダウンロードしてください。以前は、使用しているPCのイーサーネットアダプターのMACアドレスを登録する必要があり煩わしかったのですが、ここ最近はそのようなことはないようです。GOWIN EDAは、Windows用とLinux用が用意されています。GOWIN EDAでは、ハードウェア記述言語としてVerilogHDLとVHDLが使用可能です。筆者はVerilogHDLを使っており、本連載でもVerilogHDLを使用します。
PCはWindows PCを使っています。バージョンはWindows 10 Pro、プロセッサはIntel Core i5-4310U、RAMは16GBで、一般的なソフトウェア開発に用いるPCと言っていいかと思います。今回の文字認識を行うニューラルネットワークの学習プログラムはC/C++言語で開発しています。C/C++言語のバージョンは「gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)」です。
アルファベットの大文字である「D」「C」「J」「M」を、PCのC言語で書いたプログラムで覚えこませます。これらの文字は5×5ドットの枠内で表現されています。
#### # # # # # # ### ##### # # # # ### #### # # # #### # # ## ## # # # # # # #
PCでは上記の4文字を学習し、プログラムで学習データをVerilogHDLの形式で出力します。それをFPGA開発環境で取り込んでFPGAに実装します。
FPGAに実装する前に、PC側で学習済みのニューラルネットワークによって正しく推論できるかを検証します。
リスト1は推論させる手書き文字のビット列の一例です。1の並びが文字のドットを表しています。
int input[25]={ -1, 1, 1, 1,-1, -1, 1,-1,-1,-1, -1, 1,-1,-1, 1, 1, 1,-1,-1, 1, -1, 1, 1, 1,-1 };
ちょっと見にくいので1のところだけ「#」に置き換えてみました。
### # # # ## # ###
これをPCで作成したプログラムで推論させると以下のようになります。学習した4文字のうち「D」と推論しました。
#### # # # # # # ###
Copyright © ITmedia, Inc. All Rights Reserved.