検索
連載

FPGAに学習済みニューラルネットワークを実装して推論を実行するFPGAにニューラルネットワークを実装する(3)(3/3 ページ)

FPGAにニューラルネットワークを実装するプロセスを学ぶ本連載。第3回では、PC上で生成した学習済みニューラルネットワークをFPGAに実装して推論を実行する。

Share
Tweet
LINE
Hatena
前のページへ |       

物理制約ファイル

 物理制約ファイル(Physical Constraints File)とは、先に示したVerilogのモジュールの定義で設定した入出力ポートを実際のFPGAのピンに割り当てるファイルです。リスト4のneuro9k.vに対応する物理制約ファイルはリスト7のneuro9k.cstです。そのソースコードは、neuro9k.vと同じリポジトリにあります。

1: IO_LOC "clk"    52;
2: IO_LOC "rst"    4;
3: IO_LOC "btn[0]" 3;
4: IO_LOC "test2"  68;
5: IO_LOC "test1"  69;
6: IO_LOC "low"    81  
7:
8: IO_LOC "col[0]" 74;
9: IO_LOC "col[1]" 34;
10: IO_LOC "col[2]" 40;
11: IO_LOC "col[3]" 71;
12: IO_LOC "col[4]" 41;
13: IO_LOC "col[5]" 72;
14: IO_LOC "col[6]" 76;
15: IO_LOC "col[7]" 77;
16: 
17: IO_LOC "row[0]" 70;
18: IO_LOC "row[1]" 75;
19: IO_LOC "row[2]" 51;
20: IO_LOC "row[3]" 73;
21: IO_LOC "row[4]" 30;
22: IO_LOC "row[5]" 42;
23: IO_LOC "row[6]" 33;
24: IO_LOC "row[7]" 35;
リスト7 neuro9k.cstのソースコード

 1行目の「IO_LOC "clk" 52;」を例にとると、Verilogで定義した"clk"を実装したいFPGAのピン番号“52”に割り当てています。

 図1はTang Nano 9Kのピン配置を示します。赤枠で囲んだ部分のピンにLEDドットマトリクスが接続されます。また、基板の上側についているUSB-Cコネクターの両脇にある2つの白いボタンの内、右側にあるのがリセットボタン(rst)で、左側にあるボタンがbtn[0]になります。

「Tang Nano 9K」のピン配置
「Tang Nano 9K」のピン配置[クリックで拡大]

FPGAに実装したニューラルネットワークで推論を実行する

 図2は、LEDドットマトリクスに推論させたい手書き文字を表示させたものです。

LEDドットマトリクスに推論させたい文字を表示
LEDドットマトリクスに推論させたい文字を表示[クリックで拡大]

 図3は推論した結果です。

推論した結果
推論した結果[クリックで拡大]

 FPGA上での推論の流れは本連載の第1回を御覧ください。

おわりに

 いかがでしたでしょうか。次回はFPGA上での学習にチャレンジします。お楽しみに。

⇒MONOist編集部へのご意見はこちらまで

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る