HTLAB.NET Efinix ダウンロードケーブル
Trion FPGA コンフィギュレーション方法 を踏まえて、作成した Efinix ダウンロードケーブルを紹介します。
ダウンロードケーブルの使用方法から解説します。
作り方についてはページ下部をご覧ください。
必要なファイルのダウンロード
GitHubを使用して開発をしているため、以下に置いてあります。
上記リンクからリポジトリにあるファイルを一式ダウンロードしておきます。
このようにクリックするとGitが無くてもZIP形式でダウンロードできます。
その場合は解凍してわかりやすいディレクトリに置いてください。
ドライバのインストール方法(Windows)
Efinix ダウンロードケーブルをコンピュータと接続し、ドライバのインストールを行います。
デバイスマネージャーを開くと「ほかのデバイス」に「HTLAB.NET Efinix Download Cable」というデバイスが複数見えると思います。
(それ以外の場所に見える場合は、既に別のドライバが当たっている可能性があるので、後述の通りアンインストールします)
表示されている「HTLAB.NET Efinix Download Cable」全てに対してドライバをインストールします。
右クリックで「ドライバーの更新」を開きます。
「コンピューターを参照してドライバーを検索(R)」をクリックし、ダウンロードしたGitHubのリポジトリ内、Driverフォルダを指定して次に進みます。
(サブフォルダーを検索する(I)にチェックを入れてください)
ドライバのインストールが終わるまで待ちます。
全ての「HTLAB.NET Efinix Download Cable」デバイスに対して繰り返しドライバのインストールを行います。
このように、「libusb-win32 devices」が増えます。
これでドライバのインストールが完了しました。
もし、ドライバのインストールがうまくいかない場合は、Zadigを使用してインストールを行います。
「libusb-win32」のドライバをインストールします。
ドライバのアンインストール方法(Windows)
何らかの理由でドライバを削除する場合や、別のドライバが当たってしまっている場合の対処法です。
デバイスを探し、右クリック、「デバイスのアンインストール(U)」を選択します。
必ず、「このデバイスのドライバーを削除しようとしました。」にチェックを入れて、アンインストールボタンをクリックします。
全ての「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」をダブルクリックで実行します。
管理者権限が要求されるので、変更を許可して進むと、このような表示になりパッチが完了します。
バッチファイルの詳細
詳しくはバッチファイルをテキストエディタで見てもらえればわかります。
行っていることは単純です。
- 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」が見えると思います。
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ボード側)
リボンケーブルを使用する都合上、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のようです)
- AliExpress - AK-C-C15 1PCS 26*71*100mm hot selling electronics enclosure ...
- AliExpress - AK-C-C15 4Pcs 26*71*100mm hot selling electronics enclosure ...
- AliExpress - AK-C-C15 4 pieces a lot 26*71*100mm aluminum project box ...
- AliExpress - AK-C-C15 4Pieces extrusion aluminum tool box 26*71*100mm ...
持ち運び用ケース
R36Sゲームコンソール向けのキャリングケースを流用しています。
15cm * 10cm * 4cm とのサイズ表記がある無地の黒のケースです。
- AliExpress - Portable Game Case for Miyoo Mini Plus M17 R36S R35S ...
- AliExpress - Protect Game Storage Case for Miyoo Mini Plus M17 R36S R35S ...
ダウンロードケーブルの作り方(ハンダ付け・組み立て)
ダウンロードケーブルの作り方(設定・動作確認)