はじめに
このページではVerilog HDLによるFPGAへの回路構築をGowinで行うまでの手順について説明します.
環境
- IDE: Gowin EDA Ver. 1.9.8.11 Education
- 言語: Verilog HDL
- 実機: Tang Nano 9K
プロジェクトの新規作成
はじめにGowin EDAを起動します.下にあるアイコンをクリックしますと起動します.
Gowin EDAが起動されると下のようなウィンドウが開かれます.Quick Startの中にある「New Project」を選択してください.
ここでは選択することはありませんのでそのまま「OK」を押してください.
次にプロジェクト名とプロジェクトを保存する場所を決めます.下の図のようにプロジェクト名をNameに,保存する場所をCreate inにそれぞれ記入してください.ここではプロジェクト名を「TurnOnLedWithSwitch」としました.記入しましたら「Next」を押してください.
次にターゲットデバイスを選択します.Seriesとして「GW1NR」を選択すると候補がGW1NR-9しかないはずです.それを選択して「Next」を押してください.
プロジェクトの指定が終わりましたので「Finish」を押してください.これでプロジェクトが作成されるはずです.
Verilog HDLの記述
ではVerilog HDLを記述していきましょう.まずはファイルの追加です.下の図のように「File」→「New」を選択します.
次に下の図のように「Verilog File」を選択し,「OK」ボタンを押します.
最後にファイル名を追加します.ここでは「TurnOnLedWithSwitch」としました.このファイル名がモジュール名にもなります.入力後,「OK」ボタンを押してください.
下に示すようにコードを記述します.
module TurnOnLedWithSwitch(iSw, oLed); input [1:0]iSw; output [2:0]oLed; assign oLed[1:0] = iSw[1:0]; assign oLed[2] = iSw==2'b00 ? 1'b0:1'b1; endmodule
上記のコードでは次のような動作をする回路ができます.
- S1(iSw[0])が押されたらLED1(oLed[0])が点灯,押されていなかったらLED1が消灯
- S2(iSw[1])が押されていたらLED2(oLed[1])が点灯,押されていなかったらLED1が消灯
- S1とS2の両方が押されていたらLED3(oLed[2])が点灯,そうでなければLED3が消灯
上記コードを記述後に保存をしたのち,下の図に示すブロックのようなマークのアイコンを押すとシンセサイズが行われます.うまくいくと,図の下側にあるようにGowinSynthesis finishと表示されるはずです.もし表示されないようであれば,エラーが表示されます.エラーをクリックするとエラーのあるコードの場所にカーソルが移動しますので,メッセージを読んで修正をしてください.
UCFファイルの作成
UCFファイルにはVerilog HDLで作成した回路をターゲットデバイスへフィッティングするときに必要となる情報を記述します.具体的には以下のことが書かれます.
- ポートとFPGAの端子番号を結びつけるための記述
- 端子の種類
- プルアップ/プルダウン/なし
- IOの電圧
2について補足します.HighとLowを表す時,例えば3.3VでHighとする場合や1.8VでHighとする場合など,その基準を決めるために種類を設定できます.
では,UCFファイルを追加しましょう.まずは先ほどのVerilogファイルと同様に,「File」→「New File」を選択します.
次に「Physical Constraints File」を選択し「OK」を押します.
ファイル名の入力と拡張子の選択をします.下のようにしてください.最後に「OK」ボタンを押してください.
UCFファイルを追加した後,再度synthesisをしてください.そして,下の図のように「FloorPlanner」を押してください.
FloorPlannerが開かれましたら,まずは下のタブにある「I/O Constraints」を開きます.そうすると,今回の回路で用いた5個の端子が現れるはずです.LocationにはFPGAの端子版後を記します.各端子に接続されたデバイスはこちらに表でまとめてあります.この表の中からスイッチとLEDが接続されたFPGAの端子の番号を探してきて記述します.IO TypeにはHighの基準を示します.今回は「LVCMOS33」を選択します.これはHighを3.3Vとするものです.最後にPull Modeはすべて「NONE」にします.これはその名のとおり,プルアップするかしないかを決めるものです.最後に左上にある「Save」ボタンを押してください.
再びGowin EDAのウィンドウに戻ってください.そうすると,下の図のようにUCFファイルが編集されたため,リロードしてよいか聞かれると思いますので,「Reload」ボタンを押してください.
では配置配線を含めてすべての処理を行い,ダウンロードファイルを生成しましょう.下の図のように「Run All」を押してください.
ダウンロード
では実機へダウンロードしましょう.パソコンと実機をUSBケーブルで接続した後,下の図のように「Programmer」を押します.
別ウィンドウでプログラマが立ち上がるはずです.そうしましたら,下の図のようにProgram/Configureを押してください.なおSeries,Device,Operationsが下の図のようになっているか,念のため確認してください.特にOperationsがSRAM Programになっていないとあらぬ動きをすることがあります.
これで実機が動作し始めるはずです.S1を押すと一番上のLEDが光り,S2を押すと2番目のLEDが光り,S1とS2をともに押すと3番目のLEDが光るはずです.