はじめに

このページではVerilog HDLによるFPGAへの回路構築をGowinで行うまでの手順について説明します.

環境

  • IDE: Gowin EDA Ver. 1.9.8.11 Education
  • 言語: Verilog HDL
  • 実機: Tang Nano 9K

プロジェクトの新規作成

はじめにGowin EDAを起動します.下にあるアイコンをクリックしますと起動します.

HowToUseGowinEDA01

 

Gowin EDAが起動されると下のようなウィンドウが開かれます.Quick Startの中にある「New Project」を選択してください.

HowToUseGowinEDA02

 

ここでは選択することはありませんのでそのまま「OK」を押してください.

HowToUseGowinEDA03

 

次にプロジェクト名とプロジェクトを保存する場所を決めます.下の図のようにプロジェクト名をNameに,保存する場所をCreate inにそれぞれ記入してください.ここではプロジェクト名を「TurnOnLedWithSwitch」としました.記入しましたら「Next」を押してください.

HowToUseGowinEDA04

 

次にターゲットデバイスを選択します.Seriesとして「GW1NR」を選択すると候補がGW1NR-9しかないはずです.それを選択して「Next」を押してください.

HowToUseGowinEDA05

 

プロジェクトの指定が終わりましたので「Finish」を押してください.これでプロジェクトが作成されるはずです.

HowToUseGowinEDA06

Verilog HDLの記述

ではVerilog HDLを記述していきましょう.まずはファイルの追加です.下の図のように「File」→「New」を選択します.

HowToUseGowinEDA07

 

次に下の図のように「Verilog File」を選択し,「OK」ボタンを押します.

HowToUseGowinEDA08

 

最後にファイル名を追加します.ここでは「TurnOnLedWithSwitch」としました.このファイル名がモジュール名にもなります.入力後,「OK」ボタンを押してください.

HowToUseGowinEDA09

下に示すようにコードを記述します.

 

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と表示されるはずです.もし表示されないようであれば,エラーが表示されます.エラーをクリックするとエラーのあるコードの場所にカーソルが移動しますので,メッセージを読んで修正をしてください.

HowToUseGowinEDA10

UCFファイルの作成

UCFファイルにはVerilog HDLで作成した回路をターゲットデバイスへフィッティングするときに必要となる情報を記述します.具体的には以下のことが書かれます.

  1. ポートとFPGAの端子番号を結びつけるための記述
  2. 端子の種類
  3. プルアップ/プルダウン/なし
  4. IOの電圧

2について補足します.HighとLowを表す時,例えば3.3VでHighとする場合や1.8VでHighとする場合など,その基準を決めるために種類を設定できます.

では,UCFファイルを追加しましょう.まずは先ほどのVerilogファイルと同様に,「File」→「New File」を選択します.

HowToUseGowinEDA07

 

次に「Physical Constraints File」を選択し「OK」を押します.

HowToUseGowinEDA11

 

ファイル名の入力と拡張子の選択をします.下のようにしてください.最後に「OK」ボタンを押してください.

HowToUseGowinEDA12

 

UCFファイルを追加した後,再度synthesisをしてください.そして,下の図のように「FloorPlanner」を押してください.

HowToUseGowinEDA13

 

FloorPlannerが開かれましたら,まずは下のタブにある「I/O Constraints」を開きます.そうすると,今回の回路で用いた5個の端子が現れるはずです.LocationにはFPGAの端子版後を記します.各端子に接続されたデバイスはこちらに表でまとめてあります.この表の中からスイッチとLEDが接続されたFPGAの端子の番号を探してきて記述します.IO TypeにはHighの基準を示します.今回は「LVCMOS33」を選択します.これはHighを3.3Vとするものです.最後にPull Modeはすべて「NONE」にします.これはその名のとおり,プルアップするかしないかを決めるものです.最後に左上にある「Save」ボタンを押してください.

HowToUseGowinEDA14

 

再びGowin EDAのウィンドウに戻ってください.そうすると,下の図のようにUCFファイルが編集されたため,リロードしてよいか聞かれると思いますので,「Reload」ボタンを押してください.

HowToUseGowinEDA15

 

では配置配線を含めてすべての処理を行い,ダウンロードファイルを生成しましょう.下の図のように「Run All」を押してください.

HowToUseGowinEDA16

 

ダウンロード

では実機へダウンロードしましょう.パソコンと実機をUSBケーブルで接続した後,下の図のように「Programmer」を押します.

HowToUseGowinEDA17

 

別ウィンドウでプログラマが立ち上がるはずです.そうしましたら,下の図のようにProgram/Configureを押してください.なおSeries,Device,Operationsが下の図のようになっているか,念のため確認してください.特にOperationsがSRAM Programになっていないとあらぬ動きをすることがあります.

HowToUseGowinEDA18

 

これで実機が動作し始めるはずです.S1を押すと一番上のLEDが光り,S2を押すと2番目のLEDが光り,S1とS2をともに押すと3番目のLEDが光るはずです.