983[FPGA]Efinix TrionでLチカ
秋月で結構安く買えるFPGA Trion T8を触ってみました。
秋月電子:T8F81 DIP化モジュールキット
※チップへの書き込みは、FT232HLが必要です。秋月であれば下記になります。
FT232HL ハイスピードUSBシリアル変換モジュール
目標
ツールの初期セットアップと使い方を覚えてボード上のLEDをLチカさせる
概要
秋月のボードにはTrion T8シリーズ(T8F81C2X)が乗っています。
TrionはEfinix社のローエンドに分類されるFPGAで、結構お安く買えます。
関連ソフトセットアップ
開発環境を準備します。
まず、下記でユーザー登録をします。
https://www.efinixinc.com/support/account.php?do=create
必要なソフトは下記からダウンロードします。
ダウンロードの際に、Free Efinity License申請も必要です。申請は即通ります。
https://www.efinixinc.com/support/efinity.php
- Efinity IDE Full Release 2024.2.294
特にこれといって選ぶ選択肢もなくそのままインストール。 - Efinity Patch efinity-2024.2.294.4.15-windows-x64-patch
展開して「run.bat」を実行。
動かす
基本的には秋月のチュートリアルを参考にLチカしてみます。
プロジェクトの作成
まずはプロジェクトを作成します。
Fileメニュ→Create Project...を選びます。
次に、Project名(Projectタブ:Name)を変更します。
また、DeviceがT8F81、Timing ModelがC2となっていることを確認してください。
ソースコードの作成
Projectタブ→Designを右クリック→Createを選択し、その次のウィンドウでファイル名(elchika_top)を指定し、OKします。
その後、「File:elchika_top.v(default)」をダブルクリックすることで、編集ペインが開きます。
ちなみにデフォルトパスにインストールした場合、プロジェクトフォルダは
c:\Efinity\2024.2\project\elchika
に作られ、今作成したソースファイルはそのフォルダに配置されます。
編集ペインを使用して、下記ソースを貼り付けます。貼り付けた後は保存アイコンから保存を忘れずに。
elchika_top.v
module elchika_top(
input CLK,
output LED
);
reg [21:0] counter;
always @(posedge CLK)
counter<=counter+1;
assign LED=counter[21];
endmodule
論理合成、制約、配置配線
論理合成(Synthesis)
まず、Fileメニュー→Edit Project→Designタブで、Top Moduleをelchika_topに変更します。
次に、dashboardのStart Synthesisボタンを押します。
Consoleにエラー(赤字)が出ていないことを確認してください。これで、論理合成は終わりました。
また、ResultタブのInterfaceにUnassinged Core Pinsが赤字で出ていますが、まだ端子配置制約をしていないので無視します。
TimingのWorst Negative Slackも赤字(マイナス)になっていてタイミングが満たせていなさそうですが、さすがに22ビットカウンタが25MHzで動かないとは思えないので今のところ無視します。おそらくクロック周波数の制約を与えていないからと思われます。
端子配置制約(Build Interface)
画面上部中央のボタンからInterface Designerを起動します。
Interface Designerが起動したら、
GPIOを右クリック→Create Blockを選択します
次に出てくるウィンドウで、
Instance NameとPin Nameを「CLK」、Connection Typeを「gclk」と設定します。それ以外は変更不要と思いますが、画像と設定値を比べてください。
同様に、もう一度Create Blockを選択し、
Instance NameとPin Nameを「LED」、Modeを「output」と設定します。画像と同様になっていることを確認してください。
上記二つの端子を設定したら、左上のボタンを押してGPIO Resource Assignerを開きます。
クロック入力(CLK)は回路図より、GPIOL_16_CLK2に接続されているため、GPIOL_16を選択します。
LED出力はボード周辺に出ている端子であればどこでもよいのですが、配線のしやすさを考えて、VIOの隣にあるGPIOR_03端子とします。DIP変換基板でのGPIOと実端子との割り当ては下図のようになっています。
そのため、GPIO Resource Assignerを下記の通り設定します。Resource列を設定すると、ほかの列も自動で入力されます。
入力が完了したら、左上の保存アイコンから保存し、GPIO Resource Assignerウィンドウを閉じます。
配置配線(Place and Route)
dashboardのStart Placementボタンを押します。Placementが終わると、その右隣のStart Routing、Generate Bistreamに自動的に進みます。
画像のように、4つに緑色のチェックマークがつけば完了です。
チップにダウンロード
ここまでの工程で作成したデータを、実際のチップにダウンロードします。
Efinixには純正のJTAGケーブルはないらしく、FT232などを使用するのが推奨の方法のようです。
ここでは、秋月のFT232HL ハイスピードUSBシリアル変換モジュールを使用します。
注意として、通常のFT232HL用のドライバではなく、Zadigドライバというものを使用する必要があります。通常のFT232HLドライバとは異なるため、ほかにもFT232HLを使用している場合は、書き込み用の専用環境を用意したほうが良いです。
FT232HLドライバの変更
まず、Zadig USB driverを下記からダウンロードします。
Zadig
次に、FT232HLを接続して(この時、trionボードへの接続は不要。接続してあってもよい)、Zadigを起動します。
Zadigが起動したら、Optionメニューで「List All Devices」を選択します。
ウィンドウ上部にUSBデバイスが選択できるようになるので、「USB<->Serial Converter」を選択します。
次に、Driverを「libusb-win32(v1.4.0.0)」を選択し、「Replace Driver」を押すとドライバがさし変わります(数分かかります)。
これで、ドライバーの変更は完了です。
ちなみにもとに戻す場合は、デバイスドライバーからドライバの削除を行わないとだめなようです。
接続
FT232HLとtrionボードを下図のように接続します。
ここでは抵抗内蔵LEDを使用しているため、LEDを直接接続していますが、抵抗を内蔵していない場合、IO電圧を3.3Vとして適切な抵抗を直列にいれてください。
ダウンロード
画面上部のOpen Programmerボタンを押し、Programmerを開きます
Programmerが開いたら、USB Targetで「USB<-->Serial Converter」が選ばれているのを確認し、Programing Modelを「JTAG」に変更し、Bitstream fileに先ほど作成されたbitストリームファイルを設定します。デフォルトでは、画像記載のパスになります。
このあと、右側のStart Programボタンを押すと、FPGAにビットストリームがダウンロードされて動き出します。
ダウンロード(補足)
前述のダウンロード方法では、FPGAに直接ダウンロードされ、電源を切るとコンフィグ内容が消去されます。
電源を切っても保持されるようにするには、SPI flashに書き込み、電源投入時に自動的に読み込まれるようにしなければなりません。そのためには下記の方法でSPI flashに書き込みます。
Programming Modeを「SPI Active using JTAG Bridge(new)」
Auto configure~のBitstream Fileを「C:\Efinity\2024.2\pgm\fli\trion\u00000000_t8.bit」(詳細不明ですが固定でこうなるらしい)、ImageのBitstream fileはに先ほど作成されたbitストリームファイルを設定し、Start Programボタンを押すと、SPI Flashにダウンロードされます。
ウィンドウ下のConsoleに、「JTAG2SPI programming...done」と表示されたらSPI flashに書き込みが完了していますので、一旦USBケーブルを抜いてさしなおす(FPGAに電源再投入する)と、自動でSPI flashからダウンロードされてFPGAが動き出します。
動いた!
LEDが点滅するのがわかります。
25MHzを22bitのカウンタで分周しているため、(2^22)/25000000≒0.17秒周期で点滅します。
最後に
最も単純な動かし方をしてみました。trion T8には他にもいろいろ機能があるようなので、そちらの使い方も調べてみたいと思います。
FT232のドライバの差し替えが別用途にも使っている場合には不便だと思います。
チップ単価はFPGAにしてはかなり安いと思うので、使い道は色々ありそうに思います。
参考資料
投稿者の人気記事

-
lyricalmagical
さんが
2025/04/07
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する