👌

FPGA Trion T120 評価ボードを弄る プロジェクト作成〜LED点滅まで

2022/07/21に公開約3,500字

はじめに

使用する Efinix社の FPGA評価ボード

https://www.efinixinc.com/products-devkits-triont120bga576.html

ソースコード

https://github.com/koutakimura0510/ProjectFolder/tree/master/Efinix/TrionT120/LedBlinkSw

開発環境の Efinity にも慣れるためにも伝統のLチカをやっていきますが、単純なLチカだと味気ないので、付属のスライドスイッチ・タクトスイッチの状態で点灯パターンを変更するようにします。
スイッチは非同期なのでチャタリング除去、メタ・ステーブル対策を施します。


プロジェクトの作成

初なので、プロジェクトの作成からメモしていきます。
Efinity 起動から、File -> Create Project をクリックします。
表示ウィンドウの内容に沿って指定していきます。

  • Name: LedBlinkSw
  • Location: 作業ディレクトリのパスを指定
  • Family: Trion
  • Device: T120F576

タブの Design をクリックし言語の選択をします。

  • Default Version: Verilog SystemVerilog2009

あとのタブはデフォルト設定で使用しますので、OK でプロジェクト作成を行います。


Designファイルの作成

ウィンドウ内左のプロジェクトツリーから、Design を右クリックし add を選択しソースファイルを追加していきます。
新規ファイル作成時に create を選択しても良いですが、カレントディレクトリにファイルが追加されていきますので、自身で src ディレクトリなど作成し管理したほうが良いと思います。


SDC・XDCファイル・ピンアサインの作成

Xilinx の FPGA は XDC ファイルにピンアサインを記述していきますが、Efinix の場合は ピンアサインは GUI で設定、タイミング成約は CUI で設定していきます。
(.isf や outflow の出力結果から CUI でも操作は可能ですが今回は GUI で行います)
Design ファイルの時と同じように、プロジェクトツリーから Constraint を右クリックし、add 又は create でファイルを追加します。ファイルの拡張子は .sdc .xdc どちらでも良いです。

作成後下記のように記述します。
外部発振器の 40MHz の PLL入力ピンを使用します。

# OSC Input 40.000MHz
create_clock -name iOscClk -period 25.00 -waveform {0 5} [get_ports iOscClk]

次に、Tools -> Open Interface Designer から ピン設定を行います。
Design Explorer リストの GPIO と表示されているところを右クリックします。
create Block と create Bus が選択できるので、create Block を一回、create Bus を三回実行します。

create Bus 実行時に Bus 幅を選択するので使用する GPIO の幅に応じて記入します。
今回は下記のように、それぞれ作成しました。

  • Name=iUserPushSw MSB=3 LSB=0 Mode=input I/O Standerd=3.3V LVTTL/LVCMOS
  • Name=iUserDipSw MSB=3 LSB=0 Mode=input I/O Standerd=3.3V LVTTL/LVCMOS
  • Name=iUserLed MSB=7 LSB=0 Mode=output I/O Standerd=3.3V LVTTL/LVCMOS

プルアップ設定など色々できますが、今回は何も設定せずに next 連打の Finishにします。

create Block には発振器の GPIO 設定を行います。下記の様に設定を行います。
(書くのが疲れました)

GPIO:Instance View から 回路図のデータシートと照らし合わせて、Package Pin から 使用するポート番号を指定していきます。
iOscClk の部分で P19 と選択すると、後の設定項目は自動で入力されます。
また、この画面はデフォルトで表示されていないので、下記画像の左上あたりにある
四角の中央辺りに矢印が伸びているマークをクリックすると、表示が切り替わります。

設定が完了したらウィンドウタブから、check Design を行います。設定が間違っていたらエラーを表示してくれます。check が通れば Ctrl + S で保存し終了します。


論理合成とボード書き込み

設定が完了したので、Synthesize を行っていきます。
dashborad のネジのマークから、左から順番にクリックして実行するだけです。
記述や、xdc とピン設定の相違が違っていたら console やファイルにエラーを出力してくれます。

合成が完了したら、Tools -> Open Programmer を選択しウィンドウを表示させ、binファイルを書き込み終了です。


実際に使ってみて

駆け足、かつ穴が空いた記事になりましたが自身で記事を書くと手順が多いことに気が付きます。
(手順が多くて途中で書くのを辞めたくなるレベルです)

慣れている方からすれば何のことはないですが、初学者からすると凄く敷居が高く感じられます。
一応データシートはありますが、Efinity は日が浅い開発環境なので、Xilinx や Intel ほど情報はありません。この記事が少しでも役に立てば良いと思います。

Discussion

ログインするとコメントできます