Core Contents

米国 Efinix 社製 FPGA スタータキット“ Xyloni ”入門[導入編] 開発ツールのセットアップと LED 点滅回路の RTL 論理設計

著者・講師:圓山 宗智/Munetomo Maruyama
企画編集・主催:ZEP エンジニアリング株式会社

CoreStaffONLINEで取扱いのある米国のFPGAメーカーのエフィニックス(Efinix)について FPGAスタータキット“Xyloni”の入門[導入編]として、Efinix社のコンパクトなTrion FPGAを搭載した超小型ボードXyloniを使って、開発環境のインストールから、簡単な論理回路の設計とFPGAへの実装までを具体的に解説いたします。

前半と後半に分けて解説していきます。

前半ではFPGAメーカーのEfinix社のご紹介から超小型開発ボード“Xyloni”について解説していきます。
〈コアスタッフ〉

Efinix_Xyloni入門_前編_TOP

目次

1 新たなる FPGAメーカ Efinix 社の登場

高性能で多機能なシステムを開発する場合、汎用マイコンを使って最近の高度化したAI処理などを実現するには性能が不足し、カスタマイズしたくなることがあります。

そのようなケースで、CPUを含むさまざまな論理回路を実現するために新規に SoC(System On a Chip)を開発しようとすると、膨大な開発費と工数がかかります。

また、さまざまなシステム開発の初期段階において実機による原理試作をしたい場合も、SoCを試作するにはやはり費用と工数が壁になります。

こうしたケースにおいては、FPGA(Field Programmable Gate Array)ほど手軽で柔軟なデバイスは他にありません。

FPGAの中では自分が設計した論理回路がそのまま動作しますので、自由気ままなハードウェア作りを楽しめます。

凝りに凝ったオリジナルRISC-V CPUコアを造る、超高速並列演算回路を組む、エッジAI処理を高速化する回路を組む、液晶ディスプレイを接続してグラフィック制御装置を造る、既存の汎用マイコンと組み合わせて機能拡張する、などなど無限の可能性が広がります。趣味で論理回路を自作して楽しむ場合も、FPGAはとても便利に使えます。

これまでのFPGAは、米Intel社(旧・米Altera 社) と米AMD社(旧・英 Xilinx社)の大手2社が有名でした。

大規模 FPGAから低コストFPGAまでの幅広い製品を展開しています。

こうした中、2012年に新たなFPGAメーカが誕生しました。

それが米Efinix社(図1)です。

Efinix社の汎用FPGA 製品は、現在2シリーズ展開されており、モバイルやIoT向けの小~中規模なTrion FPGAシリーズと、機械学習を含む高度なコンピューティング向けの中規模~大規模なTitanium FPGAシリーズがあります。

いずれも独自のQuantumファブリック技術により、従来のFPGA製品よりも、電力・性能・面積で大幅な改善を図っているようです。

さらに Efinix社は、最近幅広く使われるようになったオープンソース命令セットのRISC-Vを開発プラットフォームとして精力的に整備しており、無償でカスタマイズ可能なマイコンやプロセサをFPGA上で容易に実現できます。

Efinix社はこうしたアクティビティも楽しみなFPGAメーカだといえるでしょう。

Efinix社は、自社のFPGAブロックを、IPコア(Intellectual Property Core:回路部品) としてSoCベンダに供給するビジネスも展開しています。

SoCに、ハードで固定化した機能だけでなく、FPGAによるフレキシビリティも搭載することができ、応用の幅を従来以上に拡大できることになります。

ここで特徴的なのが、Efinix社は、他社とは異なり、製造するファウンドリのプロセスをカスタマイズすることなく標準 CMOSプロセスを使っている点です。

FPGAブロックが他のファウンドリのプロセスへの移植が容易と考えられるので、SoC設計者にとってファウンドリが固定されない点もメリットになっていくでしょう。

また、Efinix社にとっても、コストメリットがある生産工場に移りゆくことができると思われます。

ちなみに、半導体不足だった折、Efinix社の製品は、ファウンドリのカスタム工程を使わずに済んだので、生産が滞ることがなかったそうです。

そのFPGAで最も重要な要素が開発環境です。

Efinix社はFPGAの論理設計用の統合化開発環境Efinity IDEを無償で提供しています。

またFPGAにRISC-Vコアを搭載した場合のソフトウェア統合開発環境 Efinity RISC-V Embedded Software IDEも無償提供しています。

本稿では、Efinix社のコンパクトなTrion FPGAを搭載した超小型ボード Xyloniを使って、開発環境のインストールから、簡単な論理回路の設計とFPGAへの実装までを具体的に解説します。※1

EFINIXのロゴマーク
図1:Efinix社のロゴ

※1 本記事に記載されている社名および製品名は、一般に開発メーカーの登録商標または商標である。 本文中では TM、Âő、Âľ の各表示を明記していない。

2 Efinix社のFPGA技術と製品

2.1 ゲートと配線のバランスを最適化する基本技術「Quantum ファブリック」

Efinix社のFPGA製品のロジック・セルの基本構造は、独自技術Quantumファブリックをベースにしています。

Quantumファブリックの基本的な構成要素は、図2に示すようなXLR(eXchangeable Logic and Routing)セルです。

従来のFPGAの回路構造を図3に示します。

従来は、ロジック・セルとインターコネクト(配線スイッチ)が独立していました。

このため、ゲート量と配線量のバランスによってFPGA全体のリソース利用効率が悪くなるケースがありました。

特に論理規模が大きくなるほど、配線の割合が増えてしまい、ロジック・セルが余っているにもかかわらず、配線が混雑して配置配線が閉じなくなることがあり、FPGA活用時の悩みの種でした。

Efinix社のXLRセルは、LUT(LookUp Table)ベースのロジックセルおよび配線スイッチのいずれとしても機能します。

この構造により、ゲート過多の設計に対しても、配線過多の設計に対しても、ロジックと配線を柔軟に再構成し、インターコネクトの接続性を高めることができます。

また、XLRセルのロジック・セルは、複数の機能に変化(FPGA 製品シリーズに依存するが、例えば、単一のLUTを複数のLUT に分割したり、加算器にしたり、シフト・レジスタに設定するなど)できるので、より効率的に論理回路構造を構築することができます。

図2_EFINIX_Quantumファブリック
図2: Efinix 社 FPGA の回路構造:Quantumファブリック1
図3_EFINIXの従来FPGAの回路構造
図3: 従来 FPGA の回路構造1

結果として、Quantumファブリックは、(1) 面積を1/2~1/4に削減可能、(2) 消費電力を1/2以下に削減可能、(3) 100万LE(Logic Element)以上まで拡張可能、(4) 幅広なデータバスを構成可能、(5) データのパイプライン化が容易、(6) 全てCMOSパス・ゲートで実現しており、シリコン・プロセスに依存しない、といったメリットがあります。


※1 Efinix 社ホームページから引用。

2.2 小~中規模なTrion FPGA製品シリーズ

Trion製品シリーズは、モバイルや IoT 向けの小~中規模なFPGAで 40nmプロセスで製造されています。

Trion FPGA の内部構造を図4に示します。

プログラマブル・ロジックとルーティング配線はQuantumテクノロジをベースにファブリックとして構成され、内部に内蔵メモリや乗算ブロックを含み、その回りにI/Oインターフェースが配置されています。

図4_EFINIX_TrionFPGAのブロック
図4: Trion FPGAのブロック1

機能

T4

T8

T13

T20

T35

T55

T85

T120

ロジック・エレメント (LE)

3,888

7,384

12,828

19,728

31,680

54,195

84,096

112,128

マスク・プログラマブル
メモリ (MPM)

内蔵メモリ・ビット (kb)

77

123

727

1,044

1,475

2,765

4,055

5,407

18×18 乗算器

4

8

24

36

120

150

240

320

PLL

1

5

5

7

7

8

8

8

最大 GPIO 本数2

55

97

195

222

222

278

278

278

LVDS (TX, RX)

6, 6

13, 13

20, 26

20, 26

52, 52

52, 52

52, 52

DDR3, LPDDR3, LPDDR2
(1066 Mbps)

x16

x16

x32

x32

x32

MIPI DPHY (4 レーン)
内蔵 MIPI CSI-2 コントローラ

2 RX
2 TX

2 RX
2 TX

2 RX
2 TX

3 RX
3 TX

3 RX
3 TX

3 RX
3 TX

表1: Trion FPGAの製品ラインアップ

Trion 製品シリーズのラインアップを表1に示します。ロジック・エレメントの規模は、3,888個から112,128個まで用意されています。

I/Oインターフェースは一般的なLVTTLインターフェースに加え、以下のインターフェースをサポートしています。

  • MIPI: MIPI D-PHY(4 レーン) およびCSI-2 コントローラをハードIPとして実装。PHY当たり最大6Gbps。
  • LVDS: 最大 800Mbps をサポート。
  • DDR: DDR3、LPDDR3、およびLPDDR2をサポート。最大1,066MbpsのDDR 信号レート、最大51.2Gbpsの帯域幅で使用可能。DDR専用PHYおよびコントローラはハードIPとして実装。

Trionシリーズのうち小規模側の製品では、MPM(Mask Program Memory)をサポートしています。

FPGAのコンフィグレーション・データは通常、外部のシリアル・フラッシュ・メモリに記憶されますが、MPMではFPGA内部のオンチップ・マスクROMに記憶します。

FPGAのコストが低減し、かつ部品点数を削減できるので、低コスト化が要求される大量生産用途に活用できます。

TrionシリーズのパッケージはFBGAとLQFPで供給されています。

FBGAは、49ボールの 3mm □ (0.4mmピッチ) から 576 ボールの 16mm □ (0.65mm ピッチ) まで製品規模ごとに多くの種類がサポートされています。

LQFPは、144ピンの 20mm □ (0.5mm ピッチ) がT8とT20に用意されています。


※1 Efinix社ホームページから引用。
※2 MIPIおよびDDRインターフェースは専用のI/Oを使用するので、最大GPIO本数は、それらのインターフェースのI/O数を含まない。

2.3 中規模~大規模なTitanium FPGA製品

Titanium製品シリーズは、機械学習を含む高度なコンピューティング応用や高性能産業機器・通信機器向けの中規模~大規模なFPGAで16nmプロセスで製造されています。

Titanium FPGAの内部構造を図5に示します。

Titanium FPGAも、プログラマブル・ロジックとルーティング配線はQuantumテクノロジをベースにしています。

最大100万規模のLEと、大容量メモリ、およびAI 処理に最適化したDSPブロックを内蔵した高性能ファブリックを搭載し、その周囲にI/Oインターフェースが配置されています。さらにハード化されたRISC-Vコアを4個内蔵した製品も展開しています。

図5_EFINIX_TrionFPGAのブロック
図5: Titanium FPGA のブロック1

機能

Ti35

Ti60

Ti90

Ti120

Ti180

Ti240

Ti375

Ti550

Ti750

Ti1000

ロジック・
エレメント
(LE)

36,176

62,016

92,534

123,379

176,256

236,888

370,137

533,174

727,056

969,408

10K
メモリ・
ブロック
(Mb)

1.53

2.62

6.88

9.18

13.11

19.37

27.53

39.65

54.07

72.09

DSP
ブロック

93

160

336

448

640

946

1,344

1,936

2,640

3,520

PLL

4

4

10

10

10

10

10

10

10

10

GPIO

34

34

80

80

80

80

80

80

80

80

高速
I/O

146

146

232

232

232

172

172

268

268

268

DDR4,
LPDDR4

x32

x32

x32

x72

x72

2 x72

2 x72

2 x72

MIPI
D-PHY
2.5GHz

4 RX
4 TX

4 RX
4 TX

4 RX
4 TX

3 RX
3 TX

3 RX
3 TX

3 RX
3 TX

3 RX
3 TX

3 RX
3 TX

16Gbps
Serdes

x8

x8

x8

x12

x12

x16

x16

x16

25.8
Gbps
Serdes

x8

x8

x8

内蔵
ハード化
プロセサ

Quad
RISC-V

Quad
RISC-V

Quad
RISC-V

Quad
RISC-V

Quad
RISC-V

Quad
RISC-V

PCI
Express
Gen4
(16G)

1×4

1×4

1×4

2×4

2×4

2×8

2×8

2×8

表2: Titanium FPGAの製品ラインアップ1

Titanium 製品シリーズのラインアップを表2に示します。

ロジック・エレメントの規模は、36、176 個から 969,408個という大規模な数まで用意されています。

I/Oインターフェースは Trion シリーズに対し大幅に強化されており、DDR4/LPDDR4、高速SerDes、PCI Expressなどもサポートしています。 Ti180以上の製品にはハード化されたQuadコアのRISC-Vも内蔵しています。

Titanium シリーズのパッケージは、FBGA と WLCSP で供給されています。

FBGA は、100 ボールの 5.5mm□ (0.5mm ピッチ) から 1,156 ボールの 35mm □ (1.0mm ピッチ) まで製品規模ごとに多くの種類がサポートされています。

小型の WLCSP は、64ボールの 3.5mmx3。4mm(0.4mm ピッチ) がTi60に用意されています。


※1 Efinix社ホームページから引用。

3 Efinix 社のFPGA開発環境

FPGAで自分の論理回路を設計するとき、最も重要なのが開発環境です。

その使い勝手がそのままFPGAの良し悪しを決めると言っていいでしょう。

FPGAの論理設計向けとして、論理合成、配置配線、タイミング解析、コンフィグレーションまでのフローを一貫して開発できる統合化開発環境 Efinity IDE が無償て提供されています。

またFPGAにRISC-Vコアを搭載した場合のソフトウェア統合開発環境 Efinity RISC-V Embedded Software IDEも無償提供されています。

本稿では、これらの開発ツールのインストール方法から使い方まで詳細に説明します。

3.1 FPGA統合化開発環境 Efinity IDE

Efinix 社のFPGAでシステム開発する際に最も重要かつ基本となるツールが統合化開発環境Efinity IDEです。

無償で提供されており、論理シミュレーション、論理合成、配置配線、タイミング解析、コンフィグレーションまでのフローを一貫して実行します。

論理シミュレーションは、外部ツールを使います。デフォルトで無償のVerilog シミュレータIcarus Verilogをサポートします。

これ以外に、独Siemens社のModelSimや米Cadence社のNCSimもサポートしています。

Efinity IDEの画面の例を図6に示します。

図6_EFINIX_FPGA統合化開発環境Efinityの画面例
図 6: FPGA 統合化開発環境 Efinity の画面例

Efinix 社は、そのFPGAの中に組み込んで使える多くのIPコアも提供しています。

演算コア、内部バス、内部メモリ、外部メモリ・インターフェース、通信インターフェースなどがあります。

RISC-V SoCも提供されており、オリジナルのカスタム・マイコンとして仕立てることも容易になっています。

Efiniy IDEには多くの機能が搭載されています。その一部を以下に示します。

  • プロジェクト管理
  • Verilog HDL、SystemVerilog、および VHDL 言語をサポート
  • 無償の Icarus Verilog、または ModelSim や NCSim による論理シミュレーションをサポート
  • FPGA の外部とのインターフェース部(I/O 端子や PLL など)を定義するインターフェイス・デザイナ
  • 各設計フローの実行制御(論理合成、配置、配線、ビットストリーム生成)
  • デザイン階層、レポートファイル等のグラフィカル表示
  • フロアプラン・エディタ
  • タイミング解析ツール
  • デバッグのためのロジック・アナライザ機能
  • FPGA コンフィグレーション用のプログラマ機能

Efinix 社のFPGAを設計する際の考え方については少し注意が必要です。

従来のFPGAでは、最上位階層のRTL記述にFPGAの外部端子を含めて全て記述していました。

そのRTL記述にはI/Oバッファを想起させる記述を書き、その詳細属性(端子位置、ドライブ強度、プルアップ抵抗の有無など)は制約として個別に設定していました。

また内蔵PLLはIPブロックとして個別に定義して RTL記述内にインスタンス化していました。

一方、Efinity IDEの思想は従来とは異なり、外界とインターフェースするデバイス・インターフェースと内部ファブリック論理の部分を明確に分けて設計します。

デバイス・インターフェースには、入出力端子、PLL、ユーザ向けJTAGインターフェース(例えばRISC-Vのデバッガ・インターフェースになるもの)などが含まれます。

これらは、Efinity IDEのインターフェース・デザイナで定義し、デバイス・インターフェースと内部ファブリックの間に行き交う信号を定義します。

そしてユーザが設計する最上位階層のRTL記述の入出力信号としては、そのデバイス・インターフェースと内部ファブリックの間の信号を記述します。

すなわち、ユーザが記述する最上位階層のRTL記述よりもさらに上位階層にインターフェース・デザイナで定義した回路が存在することになります。

例えば、双方向の外部端子においては、ユーザが記述する最上位階層のRTL記述には、I/Oバッファからの入力信号、I/Oバッファへの出力信号、I/Oバッファの出力ドライブ制御信号(アウトプット・イネーブル)の3つの信号を記述する必要があります。

よって、論理シミュレーションの段階では、そのテストベンチ記述の中で、ユーザが書いた最上位階層のRTL記述をインスタンス化しますが、同時にそのテストベンチ内にはインターフェース・デザイナで定義した機能も盛り込む必要があります。

例えば、双方向の外部端子についてはその信号をテストベンチ内に定義し、出力ドライブ制御信号(アウトプット・イネーブル)によりドライブするかHi-Zにするかをテストベンチ内で制御させて検証する必要があります。

PLL が作るクロックのテスト・ベンチ内にモデルとして記述して論理シミュレーションを実行することになります。

この考え方には好き嫌いが出る面があるかもしれません。

しかし、FPGAの外界とのインターフェース部分を整理しながらまとめて一箇所で設計できるので、従来のFPGAのようにツールのあちこちで制約指定する必要がなく、見通しがよくなり間違いが起きにくい方法だといえるでしょう。

これらの設計方法の詳細は、本稿の設計事例の項で説明します。

3.2 RISC-V 統合化開発環境 Efinity RISC-V Embedded Software IDE

RISC-Vは命令セットがオープン化されたCPU アーキテクチャであり、誰もが自由に設計できます。

そのため、従来のARMのように1社にCPUが独占されることがなくなり、現在では多くの実装がカスタマイズ含め存在し、加速度的に普及が拡大しています。

Efinix 社も、CPUコアと周辺機能を含む IP としてSapphire RISC-V SoCを提供しています。

ブロック図を図7に示します。さまざまなカスタマイズをサポートするツールも用意されています。

このIPをFPGAに組み込むことで、好きな仕様のマイコンやシステム LSIを実現することができます。

図7_EFINIX_RISC-VSapphireSoCのブロック図
図7: RISC-V Sapphire SoC のブロック図1
図8_EFINIX_RISC-V統合化開発環境Efinity RISC-V_Embedded SoftwareIDE
図8: RISC-V 統合化開発環境 Efinity RISC-V Embedded Software IDE

このRISC-Vのソフトウェアを開発しデバッグするための統合化開発環境がEfinity RISC-V Embedded Software IDEで、これも無償提供されています。

画面の例を図8に示します。

C/C++言語のソース・コード編集から、プログラムのビルド、エミュレータによるシミュレーション、実機へのダウンロードとデバッグを行なえます。

内容としてはオープンなEclipseベースの統合開発環境に、GNUツール・チェーンと OpenOCDを統合したものであり、RISC-V向けとしてはとても標準的で実績があるものです。


※1 Efinix社ホームページから引用。

4 超小型開発ボード Xyloni

FPGAを手軽に使いたいときは、既成の評価用ボードを活用するのが便利です。

Efinix社もTrion FPGAとTitanium FPGAそれぞれが搭載された評価用ボードやI/O拡張ボードなどを多く準備しています。

その中で異彩を放つのがマッチ箱サイズのXyloniです。

ボード本体とその外箱をそれぞれ図9と図10に示します。

ボード・サイズはわずか50mm×33mmと小さく、趣味や簡単な実験など手軽に扱うことができます。

本稿では、Xyloniを使った設計事例を紹介します。

Xyloniの箱と基板(裏面)には、赤いアリさんのキャラクタが描かれていますが、調べてみると学名がSolenopsis xyloniというアリの仲間のようです。

基板の色と大きさになぞらえているのかもしれません。

図9_超小型開発ボードXyloniの外形
図9: 超小型開発ボード Xyloni の外形
図10_超小型開発ボードXyloniの外箱
図10: 超小型開発ボード Xyloni の外箱(一部加工)

4.1 Xyloni ボードの仕様概要

Xyloniボードは、Trion FPGAのT8を搭載しています。

パッケージは5mm □のFBGAで81ボール(0.5mmピッチ)あります。

ロジック・エレメントは 7,384個あり、77kbのメモリ、8個の乗算器 (18×18)、5個のPLLを内蔵しています。

趣味の電子工作や簡単な実験には十分な構成であり、またRISC-V SoCも搭載できるので、応用の幅はとても広いといえるでしょう。

図11にXyloniボードのブロック図を示します。

Xyloniボードの仕様概要は以下のとおりです。

  • Efinix Trion FPGA T8F81C2(81ボールFBGAパッケージ)
  • 128Mbit SPI NOR FLASH メモリ(FPGAのコンフィグレーション用)
  • USB コネクタ (mirco USB Type B) から、FPGAのコンフィグレーションやUART通信が可能
  • GPIO ヘダー 40ピン
  • PMOD 規格ヘダー 12 ピン(PMOD:米 Digilent 社が規定した低周波・少I/O本数のインターフェース)
  • マイクロ SD カード・スロット
  • ユーザ用 LED × 4個、ユーザ用プッシュ・スイッチ× 2個
  • 33.33MHz 発振器
  • I/O 電源電圧を USB 通信で設定可能(デフォルト 3.3V、他に2.5Vと1.8Vから選択可能)
図11_EFINIX_ Xyloniボードのブロック図
図 11: Xyloni ボードのブロック図1

4.2 Xyloni ボードのリソース

Xyloni ボードの部品配置について、表面を図12に、裏面を図13に示します。

ユーザ・インターフェースとして、表面にUSB コネクタ、コンフィグレーション用プッシュ・ボタン、ユーザ用プッシュ・ボタン(2個)、ユーザ用 LED(黄色× 4個)、裏面にSDカード・スロットが実装されています。

図12_EFINIX_Xyloni ボードの表面
図12: Xyloniボードの表面1
図12_EFINIX_Xyloni ボードの裏面
図13: Xyloniボードの裏面1

※1 Xyloni Development Kit User Guide から引用。

4.3 USBインターフェース

USBコネクタには、英 FTDI社のFT4232H-56Q(Hi-Speed Quad USB UART IC)が接続されており、下記4つのインターフェースを構成しています。

  • FTDI interface 0 = SPI
  • FTDI interface 1 = JTAG
  • FTDI interface 2 = UART
  • FTDI interface 3 = VCCIO 設定

FTDIの4つのUSBインターフェースそれぞれに対してPC上のUSBドライバが必要ですが、専用のlibusb-win32をインストールするのはInterface 0、1、3 のみです。

Interface 2はWindowsの標準ドライバを使います。

この件は、後述のツールのインストールの項で改めて説明します。

4.4 FPGA のコンフィグレーション

Xyloniボードの上でTrion T8 FPGAをコンフィグレーションする方法はいくつかありますが、Xyloniボードのデフォルトでは次の方法が取られます。

まず、PCからUSBを介してビット・ストリーム・データを送り、Xyloniボード上のSPI NOR FLASHメモリに書き込みます。

Trion T8 FPGAは、アクティブ・コンフィグレーション・モードに設定され、その起動時にNOR FLASHメモリを読み出して自分自身をコンフィグレーションします。

この他のコンフィグレーション方法としては、外部のマイコンなどからSPI 通信でコンフィグレーション・データを送信してもらうパッシブ・コンフィグレーション・モードと、JTAG端子からFPGAを直接コンフィグレーションするモードがあります。

Trion T8 FPGAのコンフィグレーションはCRESET信号をLowレベルからHighレベルに立ち上げると開始します。

Xyloniボード上ではCRESET信号はプルアップ抵抗とコンデンサによる簡単なパワーオン・リセット回路から生成されているので、SPI NOR FLASHメモリにコンフィグレーション・データが書かれた状態でXyloniボードのUSBケーブルから電源を印加すると、自動的にコンフィグレーションが始まります。

あるいは、ボード上のコンフィグレーション用プッシュ・ボタン CRSTを押すとCRESET信号がLowレベルになるので、Trion T8 FPGAをコンフィグレーション含めてリセットしたいときは CRSTボタンを押します。

SPI NOR FLASHメモリ内には複数のコンフィグレーション・データを格納でき、Trion T8 FPGAのCBSEL0端子とCBSEL1端子によって選択可能です。

詳細はXyloni Development Kit User Guide[20]を参照してください。

Xyloniボードのデフォルトでは、1種類のコンフィグレーション・データだけを選択する回路になっていますが、実験用としては問題にならないでしょう。

コンフィグレーションが完了するとCDONE端子(プルアップされたオープン・ドレイン端子)がHighレベルになり、ボード上のLED CDN(緑色)が点灯して、FPGA 内部のユーザ回路が動作開始します。

ただし、CDONEがHighレベルになってから実際のユーザ回路が動作可能になるまではtU SER(15us+CDONE端子のLowレベルからHighレベルまでの立上り時間) 以上待つ必要があります。

すなわち、この期間はユーザ回路をリセット状態にしておかなくてはなりません。

外部からリセット信号を入力する場合はCDONE信号がHighになった後もtU SERの期間はリセットをアサートし続けるようにしてください。

内部でリセット信号を生成する場合は、PLLのロック信号を使えますが、PLLがロックしてからtU SERの間は内部リセット信号をアサートし続ける回路が必要です。

この具体的な方法は後述する設計事例のところで説明します。

4.5 I/O 電源電圧の設定

Trion T8 FPGA(FBGA81ピン)のユーザ用I/O端子は、BANK1A、BANK1B、BANK2A、BANK2B の 4系統に分かれています。

このうちBANK1A、BANK1B の電源電圧は 3.3V 固定ですが、BANK2A、BANK2B の電源電圧は 3.3V、2.5V、1.8V のいずれかに設定できます。

デフォルトは 3.3V です。なお、BANK1Cもありますが、PLL 電源 (1.2V)用の1端子だけでユーザは使えません。

BANK2A、BANK2Bの電源電圧を変更するときは、PC上の Pythonスクリプトを起動してFTDI interface 3を介して設定できます。

詳細は、Xyloni Development Kit User Guide[20]を参照してください。

本稿ではデフォルトの 3.3Vのままで使います。

4.6 クロック発振器

Xyloniボード上には 33.33MHz のクロック発振器が搭載されています。

そのクロックはTrion T8 FPGAのPLLIN 端子(GPIOL_20)に接続されているので、内蔵PLLを使って好きな周波数のクロックを生成してFPGA内部で使うことができます。

4.7 I/O 信号のボード内結線

FPGAの各端子は、ボード上の各種リソースに接続されています。

クロック、LED、スイッチ関係の信号結線を表3に、基板両サイドのピンヘッダとの信号結線を表4と表5に、PMODピンヘッダとの信号結線を表6に、SDカード・スロットとの信号結線を表7にそれぞれ示します。

FPGA端子名には長い名前のものがありますが、ユーザ用の一般信号として扱う分には、最初のGPIOx_nnまでを見てFPGA開発環境の上で機能アサインすれば OKです。具体的なアサイン方法は設計事例の項で説明します。

端子の後半の名称はコンフィグレーション時に有効になる機能などです。

表3の中の LED3、LED4、BTN2 はピンヘッダ J2にも接続されていますので注意してください。

この3つとも、基板上でプルアップされており、起動時にすべてHighレベルにしておくことで、FPGAがアクティブ・コンフィグレーション・モードに設定されます。

表6に示すようにPMODのピンヘッダは14ピンありますが、市販のPMOD基板モジュールは12ピンです。

PMOS基板モジュールを差し込む時は、ピンヘッダJ3のうちPin1とPin2は空けて差し込むようにしてください。
〈圓山 宗智〉

種類

ボード上の
接続先

FPGA端子名

I/Oバンク

端子位置

備考

クロック

クロック発振器

GPIOL_20_PLLIN

BANK1B

C3

33.33MHz

 

ユーザ用 LED

LED1

GPIOL_21_NSTATUS

BANK1B

B3

High で点灯

LED2

GPIOR_37_TEST_N

BANK2B

J6

High で点灯

LED3

GPIOR_16_CTRL7_CBUS1

BANK2A

D7

High で点灯

LED4

GPIOR_17_CTRL6_CBUS2

BANK2A

D8

High で点灯

ユーザ用プッシュ・
ボタン

BTN1

GPIOR_02_RESERVED_OUT

BANK2A

C5

押すと Low

BTN2

GPIOR_15_CBUS0

BANK2A

C9

押すと Low

表3:I/O信号のボード内結線:クロック・LED・スイッチ

種類

ボード上の
接続先

FPGA端子名

I/Oバンク

端子位置

備考

 

 

 

 

 

 

ピン・ヘッダ J1

Pin 1

VBUS

 

 

5V

Pin 2

VCC

 

 

3.3V

Pin 3

GND

 

 

GND

Pin 4

GPIOR_20_CLK5

BANK2B

F8

 

Pin 5

GPIOR_21_CLK4_CBSEL1

BANK2B

E7

 

Pin 6

GPIOR_22_CTRL5

BANK2B

F7

 

Pin 7

GPIOR_23_CTRL4

BANK2B

E6

 

Pin 8

GPIOR_24

BANK2B

F6

 

Pin 9

GPIOR_25

BANK2B

F5

 

Pin 10

GPIOR_26_CBSEL0

BANK2B

G9

 

Pin 11

GPIOR_27

BANK2B

H9

 

Pin 12

GPIOR_28

BANK2B

J9

 

Pin 13

GPIOR_30

BANK2B

J8

 

Pin 14

GPIOR_31

BANK2B

G8

 

Pin 15

GPIOR_32

BANK2B

H8

 

Pin 16

GPIOR_34_CSI

BANK2B

J7

 

Pin 17

GPIOR_35_CSO

BANK2B

G6

 

Pin 18

GPIOR_36

BANK2B

H6

 

Pin 19

VCCIO2

 

 

BANK2B 用 I/O 電源

Pin 20

GND

 

 

GND

表4: I/O信号のボード内結線:ピン・ヘッダJ1

種類

ボード上の
接続先

FPGA端子名

I/Oバンク

端子位置

備考

 

ピン・ヘッダ J2

Pin 1

GND

 

 

GND

Pin 2

VCCIO1

 

 

BANK2A 用 I/O 電源

Pin 3

GPIOR_19_CLK6

BANK2A

E8

 

Pin 4

GPIOR_18_CLK7

BANK2A

D9

 

Pin 5

GPIOR_17_CTRL6_CBUS2

BANK2A

D8

 

Pin 6

GPIOR_16_CTRL7_CBUS1

BANK2A

D7

 

Pin 7

GPIOR_15_CBUS0

BANK2A

C9

 

Pin 8

GPIOR_14

BANK2A

B9

 

Pin 9

GPIOR_13

BANK2A

D6

 

Pin 10

GPIOR_12

BANK2A

C8

 

Pin 11

GPIOR_11

BANK2A

B8

 

Pin 12

GPIOR_10

BANK2A

A9

 

Pin 13

GPIOR_08

BANK2A

A8

 

Pin 14

GPIOR_07

BANK2A

C7

 

Pin 15

GPIOR_06

BANK2A

C6

 

Pin 16

GPIOR_05

BANK2A

B6

 

Pin 17

GPIOR_03

BANK2A

A6

 

Pin 18

GPIOR_01

BANK2A

B5

 

Pin 19

GPIOR_00

BANK2A

A5

 

Pin 20

VBUS

 

 

5V

表5: I/O 信号のボード内結線:ピン・ヘッダ J2

種類

ボード上の
接続先

FPGA端子名

I/Oバンク

端子位置

備考

 

 

 

 

PMOD ピン・ヘッダ J3

Pin 1

VBUS

 

 

5V

Pin 2

GPIOL_07_CDI6

BANK1A

G3

 

Pin 3 PMOD_A_IO0

GPIOL_12_CTRL0

BANK1A

G1

 

Pin 4 PMOD_A_IO1

GPIOL_13_CTRL1

BANK1A

F1

 

Pin 5 PMOD_A_IO2

GPIOL_14_CLK0

BANK1A

E2

 

Pin 6 PMOD_A_IO3

GPIOL_15_CLK1

BANK1A

E1

 

Pin 7 PMOD_A_IO4

GPIOL_16_CLK2

BANK1B

C2

 

Pin 8 PMOD_A_IO5

GPIOL_17_CLK3

BANK1B

D2

 

Pin 9 PMOD_A_IO6

GPIOL_19_CTRL3

BANK1B

D3

 

Pin 10 PMOD_A_IO7

GPIOL_18_CTRL2

BANK1B

E3

 

Pin 11 GND

GND

 

 

GND

Pin 12 GND

GND

 

 

GND

Pin 13 VCC

VCC

 

 

3.3V

Pin 14 VCC

VCC

 

 

3.3V

表6: I/O 信号のボード内結線:PMOD ピンヘッダ J3

種類

ボード上の
接続先

FPGA端子名

I/Oバンク

端子位置

備考

 

 

 

 

SD カード・スロット SD1

CD1 SD_DET

GPIOL_07_CDI6

BANK1A

G3

 

CD2 VCC

 

 

 

3.3V

G1 GND

 

 

 

GND

G2 GND

 

 

 

GND

G3 GND

 

 

 

GND

G4 GND

 

 

 

GND

T1

 

 

 

未接続

T2 SD_CS

GPIOL_00

BANK1A

G5

 

T3 SD_DI

GPIOL_03_CDI4

BANK1A

G4

 

T4 VCC

 

 

 

3.3V

T5 SD_SCLK

GPIOL_09_CDI2

BANK1A

J2

 

T6 GND

 

 

 

GND

T7 SD_DO

GPIOL_05_CDI5

BANK1A

J3

 

T8

 

 

 

未接続

表7: I/O 信号のボード内結線:SD カード・スロットSD1

以上、“ Xyloni ”入門[導入編]の前編をお送りいたしました。

後編ではFPGA統合化開発環境「Efinity」をインストールして、実践にうつっていきます!

後編にてご紹介していく内容は下記の予定です。

5 FPGA統合化開発環境Efinity のインストール(※後編にて公開予定)

6 Xyloni ボードでLチカBlinkLED を設計しよう(※後編にて公開予定)

7 FPGA統合環境Efinity でBlinkLED を実装しよう(※後編にて公開予定)

後編もよろしくお願いいたします!
〈コアスタッフ〉

♦ Efinix(エフィニックス)製品の購入こちらから

関連リンク

米国Efinix 社製FPGA スタータキット“ Xyloni ”入門[RISC-V 編]

参考文献

米国Efinix 社製FPGA スタータキット“ Xyloni ”入門[RISC-V 編]

[VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V 入門

[VOD/KIT]ARM Cortex-A9 & FPGA 内蔵SoC Zynq で初体験!オリジナル・プロセッサ開発入門

[VOD/KIT]Xilinx 製FPGA で始めるHDL 回路設計入門

[VOD/KIT]一緒に動かそう!L チカから始めるFPGA 開発【基礎編&実践編

オール・トランジスタ4 ビットCPU の製作とFPGA 開発[Vol.3 L チカで学ぶFPGA 開発体験]

[1] Efinix Inc., Efinix Trion FPGA Overview, TRION-OVERVIEW-3.1, 2023

[2] Efinix Inc., Trion FPGA Selector Guide, TRION-SELECTOR-3.2, 2023

[3] Efinix Inc., T8 Data Sheet, DST8-v5.0, Oct.2023

[4] Efinix Inc., t8_pinout-v3.3.xlsx, Rev3.3, Sep.2023

[5] Efinix Inc., AN006: Configuring Trion FPGAs, AN006-v5.9, Sep.2023

[6] Efinix Inc., AN023: Using the Trion Power Estimator, AN023-v1.3, Sep.2022

[7] Efinix Inc., AN042: Working with PLLs, AN042-v1.0, Mar.2022

[8] Efinix Inc., AN046: Reset Guidelines for Efinix FPGAs, AN046-v1.1, Nov.2022

[9] Efinix Inc., Efinity Software Installation User Guide, UG-EFN-INSTALL-v2.9, Ma.r2023

[10] Efinix Inc., Efinity Software User Guide, UG-EFN-SOFTWARE-v12.1, Aug.2023

[11] Efinix Inc., Efinity Trion Tutorial, UG-EFN-TUTORIAL-v7.0, Aug.2022

[12] Efinix Inc., Trion Interfaces User Guide, UG-TiINTF-v3.2, Oct.2023

[13] Efinix Inc., Quantum Trion Primitives User Guide, UG-EFN-PRIMITIVES-v4.5, Jun.2023

[14] Efinix Inc., Efinity Synthesis User Guide, UG-EFN-SYNTH-v3.7, Jun.2023

[15] Efinix Inc., Efinity Timing Closure User Guide, UG-EFN-TIMING-v4.0, Jun.2023

[16] Efinix Inc., Efinity Python API, UG-EFN-PYAPI-v6.1, October 2023

[17] Efinix Inc., Efinity Programmer User Guide, UG-EFN-PGM-v2.9, Jun.2023

[18] Efinix Inc., AN050: Managing Windows Drivers, AN050-v1.1, Jul.2023

[19] Efinix Inc., Xyloni Development Kit Overview, XYLONI-DK-OVERVIEW-1.0, 2020

[20] Efinix Inc., Xyloni Development Kit User Guide, XYLONI-DK-UG-v1.4, Nov.2022

[21] Efinix Inc., Xyloni Development Board Schematics and BOM, XYLONI-SCHE, V1.06, Mar.2018

[22] Efinix Inc., Sapphire RISC-V SoC Data Sheet, DS-SAPPHIRE-v3.3, Jul.2023

[23] Efinix Inc., Sapphire RISC-V SoC Hardware and Software User Guide, UG-RISCV-SAPPHIRE-v5.3,Aug.2023

本稿の執筆には,本ページに記載のEfinix社のFPGAに関する技術資料を参照しました。いずれも同社ホームページの Support Center(https://www.efinixinc.com/support/index.php) から入手できます。各資料のバージョンは 2023年10月時点のものであり、頻繁に更新されているので、最新版を参照するようにしてください。