物理制約ファイル(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;
1行目の「IO_LOC "clk" 52;」を例にとると、Verilogで定義した"clk"を実装したいFPGAのピン番号“52”に割り当てています。
図1はTang Nano 9Kのピン配置を示します。赤枠で囲んだ部分のピンにLEDドットマトリクスが接続されます。また、基板の上側についているUSB-Cコネクターの両脇にある2つの白いボタンの内、右側にあるのがリセットボタン(rst)で、左側にあるボタンがbtn[0]になります。
図2は、LEDドットマトリクスに推論させたい手書き文字を表示させたものです。
図3は推論した結果です。
FPGA上での推論の流れは本連載の第1回を御覧ください。
いかがでしたでしょうか。次回はFPGA上での学習にチャレンジします。お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.