XilinxのFPGAへ書き込み!専用ケーブル無しでUSB経由にトライ

本サイトはアフィリエイト広告を利用しています。
FPGA

基本的にXilinxのFPGAを書き込むには専用で高価なケーブルが必要です。

但し、評価ボードの中には特殊な書き込み方法で専用ケーブルが無しで対応できます。

かなり特殊ですがUSBケーブル1本で書き込む方法を試してみました。

 

スポンサーリンク

XilinxのFPGAへ書き込み!専用ケーブル無しでUSB経由にトライ

XilinxのFPGAへ書き込む専用ケーブルは非常に高価です。

Xilinxの純正のプラットフォームケーブル(HW-USB-II-G)だと$200以上します。

準メーカであるDiligentのケーブル(JTAG-HS2)でも$60程度します。

 

Xilinxの評価ボードのDiligent製のArty *7などは専用ケーブルは無しでUSBから書き込めます。

(※専用のUSB変換JTAG回路・ICを使用しているためです)

但し、3rdパーティのFPGAボードは専用のJTAG書き込みかROMの書き込みが必要です。

 

専用のJTAG-USBケーブルについては下記をご参考ください。(リンク先はこちら)

XilinxをJTAG-USBケーブルで書き込み!JTAG-HS2を試してみた
JTAG-HS2を使ってXilinxのFPGAにプログラムを書き込んでみました。 従来の純正のダウンロードケーブルより、小型で非常に使いやすいです。 JTAG-USBケーブルを使ったFPGAへの書き込み方法を分かりやすく紹介します。

 

筆者が所持している評価ボードも面白い方法でFPGAのROMを書き込めました。

(使用しているのはSpartan7搭載の「spartan edge accelerator board」です)

少し特殊ですがUSB1本でコンフィグROMに書き込めた方法について紹介していきます。

 

特殊なFPGAのROM書き込み方法について下記動画でもまとめています。

一連の流れが分かると思いますので是非一緒にご覧ください

 

各評価ボードでコンフィグROMに書き込む方法は様々です

FPGAの各評価ボードでコンフィグROMに直接書き込む方法は違ってきます。

詳細は各評価ボードのマニュアルを参考ください。あくまで今回は一例です。

 

「Spartan Edge Accelerator Board」は下記記事で紹介しています。(リンク先はこちら)

XilinxのFPGAの評価ボードを購入してみた。Spartan7に入門!
XilinxのFPGA評価ボードを購入して動かしてみました。 最新のSpartan-7が搭載されて、カメラやHDMIと多くのIFと接続できるボードです。 開発環境の構築からFPGAの書き込み方法まで分かりやすく紹介します。

 

USB経由でFPGAのコンフィグROMに書き込む

USB1本でFPGAのコンフィグROMを書き込む方法について概要を紹介します。

 

Spartan Edge Accelerator Boardでの書き込み概要

今回の評価ボードではUSB(TypeC)の先にUSBシリアル変換ICのCP2102がいます。

CP2102の先にマイコンのESP32が存在しておりFPGAのコンフィグROMを書き込めます。

(※USBからはROMのデータは送りません。ESP32に書き込む指令をするだけです)

 

コンフィグROMは裏面にあり、FPGAとESP32の両方からSPI接続されています。

コンフィグROMのメーカー・型式はWinbond製「W25Q32JVZPIG」です。

容量は32Mbit(4MB)となっています。

 

実際どのようにデータを送り込むかというと、MicroSDカードを利用します。

ESP32にはmicroSDカードが接続されています。

SDカードにFPGAのプログラムを入れることでESP32がROMに書き込みます。

 

コンパイルしてビットストリームファイル(.bit)を用意する

ROMのデータを作成しておく必要があります。

コンパイル時にデフォルトで作成されるビットストリームファイル(.bit)で大丈夫です。

 

今回筆者は下記記事で紹介したHDMIディスプレイに画像出力するROMデータを使います。

特に指定は無く、各自好きなROMデータを使えば大丈夫です

FPGAでHDMIから画像出力!フリーのIPを使ってみた
フリーのIPを使ってFPGAから画像出力してみました。 HDMIコネクタ接続のディスプレイにカラーバーを表示させています。 IPの入手方法からピンの設定まで分かりやすく手順を紹介します。

 

ビットストリームファイル(.bit)はプロジェクトのファイルの中に作成されます。

プロジェクトのフォルダ内の「~プロジェクト名~.runs」→「impl_1」のフォルダにあります。

何処か任意の箇所にコピーしておくと良いです。

 

ESP32経由でプログラムファイルを書き込む指令をする

USBからESP32に指令するためにソフト環境を整えます。

手順の詳細に関しては「Spartan Edge Accelerator Board」の公式Wikiを参考ください。

Spartan Edge Accelerator Board | Seeed Studio Wiki
Spartan_Edge_Accelerator_Board

この記事ではあくまで概要のみ紹介しています。

 

ESP32でROMを書き込むライブラリを入手する

公式Wikiだと「Download the ESP32 Boot Library」の箇所です。

ESP32でROMを書き込むライブラリを入手します。(GitHubのリンク先はこちらです)

「↓Code」→「Download ZIP」からダウンロード可能です。

 

Arduino IDEでESP32を書き込めるように設定する

ESP32にはソフト「Arduino IDE」を介して指令するのでインストールします。

(ダウンロードのリンク先はこちらです。)

インストールしたらFPGAの評価ボードのWikiに従い、ESP32を使えるように設定します。

 

あとはシリアルポートの選択、ボーレートを「115200」に設定しておきます。

 

MicroSDカードにROMデータ入れておく

MicroSDに「overlay」のフォルダを作り、その中にビットストリームファイル(.bit)を入れます。

その際、名前を「default.bit」変更しておきます。

ESP32に繋がっているMicroSDカードコネクタに挿しておきます。

 

後WikiによるとボードのDIPSWのNo5を「Slave」に切り替えておいた方が良いということです。

(筆者の環境では「JTAG」でも「Slave」でも書き換わりました)

 

Arduino IDEでROMデータを書き込む

あとはFPGAに電源を入れて、Arduino IDEから書き込むだけです。

今回はダウンロードした「examples」にある「01LoadDefaultBitstream」を使用しています。

「スケッチ」から「マイコンボードに書き込む」を選択します。

 

動画でも説明していましたが評価ボードの「Boot」スイッチを1秒以上押します。

ESP32をブートローダモードにすると、ROMに書き込みが始まります。

 

その後はコンフィグROM書き込みが終わると無事FPGAが動作します。

電源OFF→ONしてもSDカードに書き込んだROMデータが動作します。

(SDカード内のROMデータさえ変えるだけで、FPGAの書き込みデータが変わります)

 

コンフィグROMに書き込むテスト動画

動画で見るとUSB1本でコンフィグROMに書き込む様子が分かりやすいと思います。

冒頭でも紹介しましたが、ぜひ一緒にご覧ください。

 

ESP32のログ

実際にテストした際のログを下記に貼り付けておきます。

ROMの32Mbit(4MB)に書き込まれている様子が分かります。

 

まとめ

今回はUSB1本でXilinxのFPGAへ書き込む方法に関して紹介させていただきました。

記事をまとめますと下記になります。

XilinxのFPGAへ書き込む専用ケーブルは高価
評価ボードによってはコンフィグROMに直接書き込む方法が提供されている
専用ケーブルと比べて手順が必要ですが、FPGAに十分に書き込めます。

 

効率的にFPGAデバッグ作業進めたい方は専用ケーブル(JTAG-HS2)を購入してもOKです。

予算的に厳しい方はROMに直接書き込む方法でも大丈夫です。

ぜひ皆さまもXilinxの評価ボードを購入してFPGAを始めてみて下さい。

XilinxのFPGAの評価ボードを購入してみた。Spartan7に入門!
XilinxのFPGA評価ボードを購入して動かしてみました。 最新のSpartan-7が搭載されて、カメラやHDMIと多くのIFと接続できるボードです。 開発環境の構築からFPGAの書き込み方法まで分かりやすく紹介します。

コメント

  1. 朝田御飯 より:

    詳しい記事、ありがとうございます。
    記事の通りにしたらFPGAを動かすことが出来ました。
    不思議なのですが、一回目記事通りにFPGAに書き込んだ後、次からはArduino IDEを使わずにmicroSDのbitファイルを置き換えて評価ボードに挿すだけでFPGAがbitファイルの通りに動いでくれます。