HTLAB.NET Efinix ダウンロードケーブル

Efinix Download Cable 001 Efinix Download Cable 002

Trion FPGA コンフィギュレーション方法 を踏まえて、作成した Efinix ダウンロードケーブルを紹介します。

ダウンロードケーブルの使用方法から解説します。

作り方についてはページ下部をご覧ください。

 

必要なファイルのダウンロード

GitHubを使用して開発をしているため、以下に置いてあります。

 

 

上記リンクからリポジトリにあるファイルを一式ダウンロードしておきます。

 

Efinix Download Cable 003

このようにクリックするとGitが無くてもZIP形式でダウンロードできます。

その場合は解凍してわかりやすいディレクトリに置いてください。

 

ドライバのインストール方法(Windows)

Efinix ダウンロードケーブルをコンピュータと接続し、ドライバのインストールを行います。

デバイスマネージャーを開くと「ほかのデバイス」に「HTLAB.NET Efinix Download Cable」というデバイスが複数見えると思います。

(それ以外の場所に見える場合は、既に別のドライバが当たっている可能性があるので、後述の通りアンインストールします)

Efinix Download Cable Windows Driver Install 01

表示されている「HTLAB.NET Efinix Download Cable」全てに対してドライバをインストールします。

右クリックで「ドライバーの更新」を開きます。

 

Efinix Download Cable Windows Driver Install 02 Efinix Download Cable Windows Driver Install 03

「コンピューターを参照してドライバーを検索(R)」をクリックし、ダウンロードしたGitHubのリポジトリ内、Driverフォルダを指定して次に進みます。

(サブフォルダーを検索する(I)にチェックを入れてください)

 

Efinix Download Cable Windows Driver Install 04 Efinix Download Cable Windows Driver Install 05

ドライバのインストールが終わるまで待ちます。

全ての「HTLAB.NET Efinix Download Cable」デバイスに対して繰り返しドライバのインストールを行います。

 

Efinix Download Cable Windows Driver Install 06

このように、「libusb-win32 devices」が増えます。

これでドライバのインストールが完了しました。

 

もし、ドライバのインストールがうまくいかない場合は、Zadigを使用してインストールを行います。

Efinix Download Cable Windows Driver Install 07

「libusb-win32」のドライバをインストールします。

 

ドライバのアンインストール方法(Windows)

何らかの理由でドライバを削除する場合や、別のドライバが当たってしまっている場合の対処法です。

 

Efinix Download Cable Windows Driver Uninstall 01

デバイスを探し、右クリック、「デバイスのアンインストール(U)」を選択します。

 

Efinix Download Cable Windows Driver Uninstall 02

必ず、「このデバイスのドライバーを削除しようとしました。」にチェックを入れて、アンインストールボタンをクリックします。

全ての「HTLAB.NET Efinix Download Cable」デバイスに対して繰り返し実行します。

次回、接続しなおしたときには、ドライバが適用されていない状態になっているはずです。

(注意:Zadigを使用してドライバを USB Serial (CDC) に変更しても、FTDI社のドライバに変更したことにはなりません。必ずアンインストールしましょう)

 

パッチの適用方法(Windows)

次に Efinity IDE にパッチを適用します。

パッチを適用しないと Efinity IDE でダウンロードケーブルが認識されませんので、必ずパッチを当てる必要があります。

パッチを当てる前に Efinity IDE は必ず終了させておきます。

 

WinMergeのインストール

バッチファイル中で、WinMerge(内のPatchコマンド)を使用します。

WinMergeダウンロードしてインストールしておきます。

この例では、2024-01-27リリースの WinMerge-2.16.38-x64-Setup.exe を64bit環境下で使用しています。

インストール時には「プラグイン」にチェックが入っていることを必ず確認してください。

「標準インストール」で進めれば基本的に問題はありません。

インストールしておくだけで特別操作は必要ありません。

 

(注意!)WinMerge 2.16.31時点でApplyPatchプラグインのアップデートが行われているため、Patchコマンドの場所が変更になっています。

そのため、WinMerge 2.16.30までのバージョンを使用している場合は、バッチファイル中のパスを変更する必要があります。

32bit環境でも同様にパス変更が必要と思われます。

 

~WinMerge 2.16.30 : C:\Program Files\WinMerge\Commands\GnuWin32\bin\patch.exe

WinMerge 2.16.31~ : C:\Program Files\WinMerge\Commands\msys2\usr\bin\patch.exe

WinMerge 2.16.31以降のバージョンを使用している場合は対応の必要はありません。

 

パッチの実行

ダウンロードしたGitHubのリポジトリ内、Efinity_Patchフォルダを開きます。

バージョンごとにパッチファイルが分かれているため、対象のバージョンのフォルダ(Efinity_IDE~フォルダ)を開きます。

 

Windowsのみ、スタンドアロンのプログラマーが存在します。

インストール先が異なるため、パッチを別に(Programmer~フォルダ)を用意してあります。

 

フォルダ内「Windows_Apply_Patch_WinMerge.bat」をダブルクリックで実行します。

 

Efinix Download Cable Windows Patch 01

管理者権限が要求されるので、変更を許可して進むと、このような表示になりパッチが完了します。

 

バッチファイルの詳細

詳しくはバッチファイルをテキストエディタで見てもらえればわかります。

行っていることは単純です。

 

  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft232.json
  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft2232.json
  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft4232.json

以上のファイルは新規にコピーを行っています。

 

  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\usb_resolver.py

以上のファイルはパッチを当てています。

バックアップファイルは「C:\Efinity\(バージョン)\pgm\bin\efx_pgm\usb_resolver.py.orig」にあります。

 

パッチのアンインストール

  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft232.json
  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft2232.json
  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\efx_hw_common\boards\htlab_download_cable_ft4232.json
  • C:\Efinity\(バージョン)\pgm\bin\efx_pgm\usb_resolver.py

上記4ファイルを削除します。

その後、「C:\Efinity\(バージョン)\pgm\bin\efx_pgm\usb_resolver.py.orig」を「C:\Efinity\(バージョン)\pgm\bin\efx_pgm\usb_resolver.py」に名前変更します。

 

 

Efinix ダウンロードケーブルの使用方法

ドライバのインストールと、パッチがうまくいっていれば、プログラマーから「HTLAB.NET Efinix Download Cable」が見えると思います。

 

Efinix Download Cable 004

SPI ActiveモードとJTAGモードを簡単にテストしていますが、SPI ActiveモードからJTAGモードへの切り替えがうまくいかない場合がありました。

エラーが出る場合は、一度プログラマーを開き直してみてください。

「TARGET」LEDはターゲットボードからVCCIOが供給されているかを表示します。

USBから電源が供給されていないと動作しないので、必ずUSBを接続した状態にしてください。

USBから電源が供給され、なおかつターゲットボードからVCCIOが供給されることで、初めて「TARGET」LEDが点灯します。

「ACTIVE」LEDは通信線のクロックで駆動されるLEDで、書き込み等の処理を行っている場合に点灯します。

プログラマーを開いた際に、ダウンロードケーブルが認識されているとJTAGモードで使用可能かチェックされるようで、JTAG側の「ACTIVE」LEDが一瞬点灯します。

ターゲットボードの電源が入っている状態であればJTAGモードが使用可能と認識され、JTAGモードが選択された状態になるようです。

それ以外の場合は、SPI Activeモードに変更されます。

 

推奨ピン配置(ターゲットFPGAボード側)

https://github.com/htlabnet/Efinix_Download_Cable/blob/master/Document/Recommended_SPI_JTAG_Header_Pin_Assignment.md

リボンケーブルを使用する都合上、Altera FPGAボード等のように切り欠きが外側を向いている方が使いやすいと思います。

2.54mmピッチの10ピンボックスヘッダを使用します。

SPIヘッダーまたは、JTAGヘッダーのいずれかを実装する必要があります。

SPIヘッダーの場合はフラッシュと並列に接続されているため書き込み動作のみ対応します。

JTAGヘッダーはデバッグにも使用できますが、SPIフラッシュに直接書き込むことはできないため、デザインをパススルーするように構成する必要があります。

ボードに空きスペースがある場合は、ヘッダを2つ取り付けることをお勧めします。

 

SPIヘッダーピン配置(ターゲットFPGAボード側)

ピン 名前 I/O 概要
1 CCK 入力 SPI_SCLK, プログラマー側からのクロック入力端子
2 CRESET_N 入力 リセット入力端子
3 CDI0 入力 SPI_MOSI, プログラマー側からのデータ入力端子
4 CDONE 出力 コンフィギュレーション完了信号出力端子
5 CDI1 出力 SPI_MISO, プログラマー側へのデータ出力端子
6 HOLD 入力 HOLD, もし SPI Active Quad (x4) モードを使用する場合は CDI3 にも接続
7 SS_N 入力 SPI_SS, プログラマー側からのセレクト入力端子
8 VCCIO 電源 VCCIO依存(1.8V~3.3V)一般的には3.3Vの電源
9 FTDI_RST 入力 FTDI他、バス占拠デバイスがある場合に接続、ない場合はN.C.
10 GND 電源 GND

VCCIOピンはプログラマー側にI/O電圧を知らせるためにあります。(1.8V から 3.3V)

「Titanium Ti60 F225 Development Board」の回路図を見ると、実際にレベル変換を行っていることがわかります。

FTDI_RST ピンは、ボード内蔵プログラマー(FTDI)を無効にするために使用されるようです。

FTDI_RST を LOW に設定すると、ボード上のFTDIチップがリセット状態になり、SPIバスがハイインピーダンスで開放されます。

 

JTAGヘッダーピン配置(ターゲットFPGAボード側)

ピン 名前 I/O 概要
1 TDO 出力 JTAG通信線
2 VCCIO 電源 VCCIO依存(1.8V~3.3V)一般的には3.3Vの電源
3 TCK 入力 JTAG通信線
4 TDI 入力 JTAG通信線
5 TMS 入力 JTAG通信線
6 FTDI_RST 入力 FTDI他、バス占拠デバイスがある場合に接続、ない場合はN.C.
7 SS_N 入力 SPI_SS, プログラマー側からのセレクト入力端子
8 CRESET_N 入力 リセット入力端子
9 GND 電源 GND
10 GND 電源 GND

T4 ~ T20 FPGA では、モード制御に SS_N および CRESET_N ピン制御が必要です。

ボードに FTDI チップがある場合は、SPIヘッダーと同じように FTDI_RST を配線する必要があります。

 

FTDIデバイスを載せない場合でも、他にSPIバスを使用するデバイスが繋がる場合、FTDI_RSTはバス開放のために配線しないといけません。

実際の結線方法に関しては、 Trion FPGA コンフィギュレーション方法 ページの下部「Trionボードの作成方法」セクションに記載しています。

 

ダウンロードケーブルの作り方(基板の発注:PCBA)

 

その他用意する部品

輸送時の曲がり防止等を考え、表面実装以外の部品は自分で実装するようにしています。

 

DIP部品(FT2232H_Efinix_Download_Cable_Ver1.0)

「FT2232H_Efinix_Download_Cable_Ver1.0」では、以下の部品が必要です。

 

 

DIP部品(FT2232H_Mini_Module_Efinix_Download_Cable_Ver1.0)

「FT2232H_Mini_Module_Efinix_Download_Cable_Ver1.0」では、以下の部品が必要です。

 

デジグネーター 概要 個数 入手先
CN2, CN3 FT2232H Mini Module 1 DigiKey - FT2232H MINI MODULE
RS - FTDI Chip 開発ボード FT2232H MINI MODULE
Mouser - FT2232H MINI MODULE
LED1, LED2 SSF-LXH240IGD, MHK2396EGBTD ... 2 LCSC - MEIHUA MHK2396EGBTD
DigiKey - SSF-LXH240IGD
DigiKey - 5530112F
DigiKey - WP934MD/LILGD
P1, P2 IDC Connector 10P Right-Angle 2 DigiKey - SBH11-PBPC-D05-RA-BK
DigiKey - 30310-5002HB
LCSC - BOOMELE(Boom Precision Elec) 2.54-2*5P
LCSC - HCTL HC-JN254-2-05-W
LCSC - XFCN BH254R-10P
秋月電子通商 - BH-10RG
U8 IC Socket 8 Pin 1 DigiKey - 4808-3004-CP
DigiKey - 110-87-308-41-001101
LCSC - CONNFLY Elec DS1009-08AT1NX-0A2
LCSC - ZHOURI IC-8P
秋月電子通商 - ICソケット ( 8P)
秋月電子通商 - 丸ピンICソケット ( 8P)
U8 93LC46B-I/P 1 DigiKey - 93LC46B-I/P
Mouser - 93LC46B-I/P
秋月電子通商 - MicroWire シリアルEEPROM 93AA46C-I/P

FT2232Hで使用可能なEEPROMは16bitのワードサイズで3.3Vで駆動可能なものに限ります。

つまり、 93AA46B-I/P, 93LC46B-I/P, 93AA46C-I/P に限られ、93C46B-I/P等では3.3V駆動ができないため使用できません。

 

リボンケーブル

ピン配置がわかりやすいように4mm幅のテプラでシールを作成しました。

テプラ単体では4mm幅テープには2行表示ができず、パソコンと接続可能なもの(「テプラ」PRO SR5900P)を使用。

TEPRA Label Editor SPC10ソフトウェアでシールデザインをしました。

 

USBケーブル

通常はBタイプのUSBケーブルです。

FT2232H Mini Module を使用するものには、miniBのUSBケーブルを用意してください。

 

アルミニウムケース(SZOMK AK-C-C15)

SZOMK 社の AK-C-C15 アルミニウムケースを前提に設計しています。

付属している金属パネルは使用しません。

固定ネジはたぶんM2.5です。図面にも表記がなく実測です。(下穴は2.0mmのようです)

 

持ち運び用ケース

R36Sゲームコンソール向けのキャリングケースを流用しています。

15cm * 10cm * 4cm とのサイズ表記がある無地の黒のケースです。

 

ダウンロードケーブルの作り方(ハンダ付け・組み立て)

 

ダウンロードケーブルの作り方(設定・動作確認)