AMD(Xilinx)のFPGA用のプログラマー
まとめ
- このスクラップは、記事としてまとめる前に、雑多に書き連ねたものです。
- FPGAのプログラマーとは、FPGAにコンフィギュレーションするツール(ハードウェア・ソフトウェア)です。
- AMDはVivado 2022.1あたりから、FTDI FT232H/FT2232H/FT4232Hで自作のコンフィギュレーション回路を作れるようになりました。
- program_ftdiを実行することで、Vivadoから認識・コンフィギュレーション・ILAでの利用等ができるようになります。
はじめに
AMD(Xilinx)のFPGA用のコンフィギュレーションツール
昔はPlatform Cable USB IIとかが使用されていました。これは結構高額(現在は5〜6万円)なので、それより安価なDigilentの互換ツールが使用されたりしていました(1万円程度かな)。
が、Vivado 2022.1あたりから、FTDI FT232H/FT2232H/FT4232Hを使用して自作のコンフィギュレーション回路を作りVivadoから認識できるようになりました。
ここ2年くらいFT2232Hでこの機能を使用していますが、Vivadoからの認識も問題なく、これに起因した不安定さはなさそうな印象です。純正ツール(Platform Cable USB II)と書き込み等の動作速度を比べたことはありませんが、Spartan 7で使用している感じでは、さほど遅くはない印象です。ILA等の機能も使用できています。
FTDIデバイスによるAMD(Xilinx)のFPGA用コンフィギュレーションツールの回路構成
program_ftdiを使用してAMD(Xilinx)のFPGA用のコンフィギュレーションツールを構成するには、以下が必要です。
- FTDI FT232H、FT2232H、FT4232Hのうちのいずれかを使用
- FTx232Hに外付けのEEPROM(93C56/93C66等)を接続(93C46は対応できるかどうか不明)
- FTx232HのチャンネルAのMPSSEのJTAG接続に従いFPGAのJTAGピンに接続
- FTx232HとFPGAのJTAGピンを直接接続する場合(レベルシフターを使用しない場合)、FPGAのJTAGピンのあるバンクのVCCIOは(FTx232Hに合わせて))3.3Vとする
例えばFT2232Hには2つのポートがあり、チャンネルAでもチャンネルBでもMPSSEを使用できますが、program_ftdiで設定してコンフィギュレーションツールから使用できるのは、チャンネルAだけです。
Vivadoなどから接続すると、FTx232HのチャンネルAは(おそらく)MPSSEモードに遷移します。
MPSSEではADBUS[4:7]、ACBUS[0:7]はGPIOなのですが、Vivadoなどから使用するとGPIOピンの入出力方向や出力値の設定が上書きされているようです。FTx232Hでは入力ピンは75kΩでプルアップされますので、そのラインをドライブするデバイスがないラインにはHが出力されます。チャンネルAをFPGAのJTAG機能専用で使用する場合には問題になりませんが、別の機能と切り替えて使用する場合(例えばSync FIFOとの切り替え等)には問題になる場合がありますので注意が必要です。
FTx232Hが現在どのモードなのか(MPSSEなのかSync FIFOなのか等)をFTx232Hのピンの状態から知ることはできないため、別の機能と切り替えて使用する場合にはプロトコルを工夫する必要がありそうです。
FTDIデバイスによるAMD(Xilinx)のFPGA用コンフィギュレーションツールのソフトウェア
FT2232H/FT4232HのチャンネルA以外の設定
VivadoのドキュメントのUG908の「Vivado ハードウェア マネージャーでの FTDI デバイスのプログラムのサポート」には、「注記: program_ftdi ユーティリティは、Channel A を USB-to-JTAG インターフェイスとして使用するように設定します。FT4232H のように複数のチャネルを持つデバイスの場合、これらのチャネルはデフォルトの RS232 UART モードに設定されます。デフォルトの RS232 UART モードを使用しない場合は、FTDI が提供する FT_PROG EEPROM ユーティリティを使用すると、AMD JTAG ソフトウェア ツールで FTDI デバイスを認識する機能への影響なしに、未使用チャネルのポート設定を変更できます。」と書かれていて、FT_Progを使用すると、チャンネルA以外のポートの設定を変えられるように読めるのですが、FT_Progを使用すると、VivadoがJTAGプログラマーとして認識するための設定も上書きされてしまうようで、自分の手元の環境ではVivadoから認識できなくなります(FT2232Hで検証)。