書き込み方法
コンフィギュレーションとは
FPGAは、電源を落とすと書き込まれたデータが消えてしまいます。
そのため、FPGAを動作可能な状態にするには、電源投入後にJTAGインタフェースを通じてコンフィギュレーションデータを送り込むか、基板上のROM(不揮発性メモリ)にデータを書き込んでおかなければなりません。
それは、基板上に用意されたUSB-JTAG機能を使うことで、とても簡単に行えます。
- FPGAに書き込む場合は、所要時間が約3秒と短いのですが、電源を落とすとデータが消えてしまいます。
- ROMに書き込む場合は、所要時間が約30秒と長いのですが、電源を落としてもデータが消えません。
開発の初期や、頻繁にデザインを更新する場合はFPGAに書き込み、スタンドアローンで動作させたい場合にはROMに書き込むようにすると良いでしょう。
コンフィギュレーションのための準備
FPGAのコンフィギュレーションに必要なものは、以下の3つです。
- コンフィギュレーション・ツール SP6JTAGW(Windows版)、またはSP6JTAG(DOS版)
- 書き込みたいBitStreamファイル
- USBケーブル(A-MiniBタイプ)
書き込みを行う前に、まず、こちらのページからコンフィギュレーションツール「SP6JTAGW.LZH」をダウンロードして任意のフォルダに解凍してください。
それから、USBケーブルを使って本基板とパソコンを接続します。
以下、GUI版(SP6JTAGW)の使い方について説明します。
MSDOSプロンプト版(SP6JTAG)の使い方はこちらをご覧ください。
SP6JTAGWを使って、FPGAに書き込む方法
解凍したSP6JTAGW.LZHの中にあるsp6jtagw.exeを起動してください。
下記のアイコンです。必要に応じてデスクトップなどにショートカットを作成してください。
デバイスの認識
sp6jtagw.exeを起動すると、自動的にUSBが認識され、デバイスとボードが識別されます。
XC6SLX16が検出された場合はTKDN-SP6-16、
XC6SLX45が検出された場合はTKDN-SP6-45、
XC6SLX45Tが検出された場合はEXPARTAN-6Tと判断され、写真が表示されます。
デバイスとボードが識別されると、下の画面のような表示になります。
TKDN-SP6-16/45が検出された場合 (クリックで拡大) |
EXPARTAN-6Tが検出された場合 (クリックで拡大) |
書き込み方法
画面左上の「ファイル開く」ボタンを押し、開いたプルダウンメニューで「Open a new file」を選んでください。
ダイアログが開くので、書き込みたいBitStremファイルを指定してください。
そして、AUTOと書かれたボタンを押してください。
プログレスバーが動いて、XC6SLX16には約3秒、XC6SLX45とXC6SLX45Tには約10秒で書き込みできます。
便利なオプション
When fie updated, programming start automaticallyと書かれたチェックボックスをONにすると、FPGAへの書き込み動作をファイルが更新されるまで待ちます。
このオプションを使うと、論理合成が終了したときに自動的に書き込みが開始されますので、論理合成が終わるまでパソコンの前で待っている必要がなくなります。
SP6JTAGWを使って、SPI-ROMに書き込む方法
SP6JTAGWは、ATMEL、ST/Numonyx、SSTの各社のSPI ROMに書き込みを行うことができます。
SP6JTAGをSPI ROMモードにするには、Programming TargetのボタンをSPI ROM側にします。
このボタンをSPI ROM側にすると、自動的にFPGAに「USB-JTAG-SPIROM」といわれる一時デザインを書き込みます。この操作には約3秒または10秒かかります。
その後、検出されたSPI ROMの情報がメッセージウィンドウに表示されます。
※ 上の図のようにSPI ROMの情報が表示されたら、SPI ROMの書き込みモードに移行しています。
再びFPGA書き込みモードに戻すには、Programming TargetのボタンをFPGA側にしてください。
SPI ROMへ書き込むには、書き込みたいファイルを指定した後、書き込みボタンを押してください。
書き込み対象ファイルの拡張子は、*.bitまたは*.mcsです。
SP6JTAGWは、bitファイルを直接ROMに書き込めますので、わざわざMCSに変換する必要はありません。
プログレスバーが動き、SPI ROMへの書き込みとベリファイが行われます。
プログレスバーの右にある数字は、「現在の操作ページ/全ページ数」を表しています。
ROMに書き込まれたデータは、ツールを終了するか、Programming TargetのボタンをFPGA側に戻すと起動します。
そのほかに、本ツールではSPI ROMモードでは以下の操作が可能です。
SPI ROMのIDCODEを取得します。 |
|
SPI ROMの持つユニークな製造番号が存在すれば、それを取得します。 |
|
SPI ROMの先頭256バイトを読みだしてダンプします。 |
|
逐次セクタを消去しながら書き込みを行い、最後にベリファイを行います。 |
|
逐次セクタを消去しながら書き込みを行います。 |
|
ROMの内容とファイルの内容を照合します。 |
|
メモリアレイの全体を消去します。 |
|
ROMがブランクであるかどうかを調べます。 |
|
ROMの内容を読み出します。 |
|
現在の動作をキャンセルします |
重要なオプション
SPI ROMにBitSteamファイルを書き込む際には、Trim bitstream headder in SPI modeのチェックボックスをONにしてください。
このチェックボックスがOFFになっていると、ビットストリームのヘッダが削除されません。ビットストリームのヘッダは、デザインが行われた日付やファイル名が記録されているので、ROMに書き込まれていると便利なのですが、この状態ではSpartan-6はST社のROM(M25P32)からは起動できないという問題があります。これはSpartan-6の仕様です。
※ ATMELのROM(AT45DB161D)からは起動できます
そのため、ST社のROMが使われているボードでは、このチェックボックスはONにしてください。
BitStreamのヘッダが削除された状態で書き込まれ、起動できるようになります。
MS-DOSプロンプト版ソフトウェアの操作方法
MS-DOSプロンプト版はバッチファイルに組み込むことができるので、高度な自動化を達成したい方にお勧めです。
まず、任意のフォルダにsp6jtag.lzhを解凍してMS-DOSプロンプトでそのフォルダに移動します。
MS-DOSプロンプトで、
sp6jtag -detect
と入力すると、デバイスが認識されます。
FPGAへの書き込み方法
書き込みを行うには、
sp6jtag -auto ファイル名.bit
と入力します。
ファイル名には空白や日本語が入っても問題ありません。
XC6SLX16に対する書き込み所要時間は約3秒、XC6SLX45に対する書き込み所要時間は約10秒です。
SP6JTAGを使って、SPI ROMに書き込む方法
SP6JTAGでSPI ROMに書き込むには、-spiというオプションをつけます。
sp6jtag.exe -spi -auto ファイル名.bit
とすると、基板上のSPI ROMにそのBitSteramファイルを書き込めるようになります。
-autoオプションで書き込んだ場合は、書き込みとベリファイが行われます。
このとき、ISEが生成したbitファイルをそのまま書き込むことができます。
iMPACTを使ってMCSに変換する必要は全くありません。
トータルで29秒ほどです。
どうやってSPI ROMに書き込んでいるかというと、最初にFPGAに一時的なJTAG-SPIのデザインファイルを書き込んでいます。JTAG-SPIというのは、FPGAをJTAG経由のSPIライタにするデザインです。いったん、FPGAにJTAG-SPIのデザインをコンフィギュレーションしたあと、JTAGをFPGA内部との通信ポートとして使ってSPIのプロトコルを流し込んでいます。
消去方法
ROMの完全消去を行うには
sp6jtag.exe -spi -erase any
と入力します。
ベリファイ方法
ROMの内容とファイルの内容を照合するには
sp6jtag.exe -spi -verify ファイル名.bit
と入力します。
IDCODE(とセキュリティコードなど)読み出し
ATMEL社製SPI ROMには、セキュリティコードと呼ばれる一意なIDが設定されています。
そのIDCODEを読み出すには、
sp6jtag.exe -spi -getid any
と入力します。
先頭領域のメモリダンプ
SPI ROMの先頭領域には、BitStreamファイルのヘッダ部分が書き込まれています。その情報を見ることで、生成されたBitStreamファイル名や日付を確認することができます。
メモリダンプを行うには、
sp6jtag.exe -spi -dump any
と入力します。
他にも、リードバック、ブランクチェックなどができます。