アプリケーションノート : Spartan-3E および Virtex-5 FPGA XAPP951 (v1.3) 2010 年 9 月 23 日 SPI シリアルフラッシュを使用したザイリンクス FPGA のコンフィギュレーション著者 : Stephanie Tapp 概要 このアプリケーションノートでは Virtex -5 および Spartan -3E FPGA ファミリに導入されている SPI ( シリアルペリフェラルインターフェイス ) コンフィギュレーションモードについて説明します ここでは FPGA を SPI シリアルフラッシュデバイスからコンフィギュレーションするために必要な接続について解説し SPI モードのコンフィギュレーションフローを示します また SPI シリアルフラッシュからコンフィギュレーションする際の特別な注意事項および ISE Design Suite impact による SPI 経由の直接プログラミングソリューションについても説明します 注記 : インシステム SPI による直接プログラミングをサポートするのは ISE Suite impact のバージョン 11.4 までで このアプリケーションノートのスクリーンショットは このバージョンのものです 新規デザインには impact のインシステム SPI 間接プログラミングソリューションの使用を推奨します このソリューションでは 1 つの JTAG 接続を使用し FPGA のコンフィギュレーションおよびフラッシュの間接プログラムの両方を実行します 詳細は impact ヘルプ (http://japan.xilinx.com/support/ documentation/sw_manuals/xilinx11/isehelp_start.htm) の 間接プログラムの概要 - SPI または BPI フラッシュメモリ を参照してください ここで述べる基本原則は Extended Spartan-3A ファミリの外部 SPI フラッシュコンフィギュレーションモードにも適用され ほとんど相違点はありません Extended Spartan-3A ファミリの SPI コンフィギュレーションモードに特有の詳細情報および要件は Spartan-3 ジェネレーションコンフィギュレーションガイド (UG332) を参照してください はじめに ザイリンクス FPGA は CMOS コンフィギャラブルラッチ (CCL) ベースであり 電源投入時にコンフィギュレーションする必要があります 従来 ザイリンクス FPGA のコンフィギュレーションには IEEE 1149.1 規格 (JTAG) インターフェイス マイクロプロセッサ またはザイリンクス PROM (Platform Flash PROM) が使用されてきました 現在はこれらに加え SPI シリアルフラッシュへの直接コンフィギュレーションインターフェイスが利用できます Virtex-5 および Spartan-3E FPGA における SPI シリアルフラッシュメモリの直接コンフィギュレーションインターフェイスにより ザイリンクスデバイスを使用する設計者にとって利用可能なコンフィギュレーションソリューションが拡張します このアプリケーションノートでは このコンフィギュレーションインターフェイスに焦点を当てて解説します SPI シリアルフラッシュメモリは コンフィギュレーション後に簡単にアクセスでき かつ FPGA にランダムアクセスの不揮発性のデータストレージを提供できるため 広く使用されています また SPI シリアルフラッシュメモリを備えるシステムの場合 同じメモリデバイスから FPGA をコンフィギュレーションできることによる利点が生じます SPI プロトコルには ベンダー間でいくつかの相違点があります ここでは 一部ベンダー間の相違点と コンフィギュレーションのために FPGA と SPI シリアルフラッシュメモリ間に必要な接続についても重点的に説明します また ISE ソフトウェアツールを使用した SPI 用の PROM ファイルの作成および選択したベンダーのプロトタイピング用のプログラミング方法を示します ザイリンクスは SPI シリアルフラッシュメモリを提供していないため Numonyx 社などのサードパーティベンダーから購入する必要があります Copyright 2006 2010 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners. XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 1
SPI の基本 SPI の基本 SPI シリアルフラッシュメモリは 4 線式の同期シリアルデータバスである SPI ( シリアルペリフェラルインターフェイス ) を使用します このシリアルデータリンクは マイクロコントローラーとそのペリフェラルを接続するシリアル通信インターフェイスとして開発され エンベデッド市場や民生機器市場で普及しているインターフェイスです 現在では ザイリンクス FPGA のコンフィギュレーションにも使用できます SPI システムは通常 マスターデバイスとスレーブデバイスで構成されます ( 図 1) この 4 信号インターフェイスを使用してザイリンクス FPGA を SPI シリアルフラッシュからコンフィギュレーションする場合 FPGA がマスターデバイスとなり SPI シリアルフラッシュがスレーブデバイスとなります X-Ref Target - Figure 1 Xilinx FPGA Master Device SCK MOSI MISO SS SPI Serial Flash Slave Device X951_01_1115006 図 1 : SPI コンフィギュレーションモードの基本ブロック図 マスターの FPGA デバイスが SCK クロック信号を介してタイミングを制御します セレクト信号 SS が Low になると MOSI 信号上でデータが FPGA マスターからクロック出力され SPI シリアルフラッシュスレーブに入力されます そして 同じクロックサイクル中に MISO 信号を使用して SPI シリアルフラッシュスレーブからデータがクロック出力され FPGA マスターに入力されます データは あるクロックエッジでデバイスから出力され 同じ周期の次の逆エッジでデバイスに入力されます これら 4 つの信号インターフェイスに加えて プログラム中およびコンフィギュレーション中に適宜制御される必要のある書き込み禁止信号やホールド信号など SPI シリアルフラッシュのベンダーごとに独自の制御信号があります ( 特定の制御信号の詳細は 該当するベンダーの SPI シリアルフラッシュメモリデータシートを参照 ) 表 1 は FPGA と SPI インターフェイス間の接続の相互参照表です 表 1 : SPI シリアルフラッシュインターフェイス接続とピン名 SPI 信号 SPI シリアルフラッシュピン (1) FPGA 接続 (Spartan-3E/Virtex-5 FPGA) 信号の説明 汎用 SPI 信号 MOSI D MOSI マスター出力スレーブ入力は 実行する命令の指定またはスレーブデバイスへのデータ送信のために マスターによって使用される MISO Q DIN/D_IN マスター入力スレーブ出力は スレーブデバイスから転送されたデータの収集のために マスターによって使用される SS S CSO_B/FCS_B (2) スレーブセレクトはアクティブ Low 信号 High 駆 動によって スレーブデバイスの選択が解除され MISO が高インピーダンスになる SCK C CCLK シリアルクロックは シリアルインターフェイスの タイミングを提供する その他のベンダー固有 SPI 制御信号 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 2
SPI シリアルフラッシュからの FPGA のコンフィギュレーション 表 1 : SPI シリアルフラッシュインターフェイス接続とピン名 ( 続き ) SPI 信号 SPI シリアルフラッシュピン (1) FPGA 接続 (Spartan-3E/Virtex-5 FPGA) 信号の説明 書き込み禁止 W FPGA のコンフィギュレーションには不要だが SPI シリアルフラッシュをプログラムまたは消去する場合は High になっている必要がある FPGA ユーザー I/O へ接続可能 ( オプション ) 選択したエリアを命令のプログラムまたは消去から保護する ホールド HOLD FPGA のコンフィギュレーションには不要だが FPGA のコンフィギュレーション中および SPI シリアルフラッシュのプログラム / 消去中には High になっている必要がある FPGA ユーザー I/O へ接続可能 ( オプション ) デバイスの選択を解除せずに デバイスとのすべてのシリアル通信を一時停止するために使用する 注記 : 1. 汎用 SPI シリアルフラッシュのピン名は 最も一般的なベンダーピン名で記載されています 各ベンダーで使用される SPI 制御信号のサブセットは異なることがあります 特定のピンの情報および説明は ベンダーのデータシートを参照してください 2. CSO_B 信号は Spartan-3E FPGA で FCS_B 信号は Virtex-5 FPGA でそれぞれ コンフィギュレーションのために SPI シリアルフラッシュとインターフェイスするために使用されます Virtex-5 FPGA の CSO_B 信号は SPI シリアルフラッシュ上のチップセレクトを制御するのではなく 高度なデイジーチェーンに使用されます SPI シリアルフラッシュからの FPGA のコンフィギュレーション Spartan-3E FPGA および Virtex-5 FPGA は 1 つの SPI シリアルフラッシュメモリからコンフィギュレーションできます 表 2 に これらの FPGA の一般的なコンフィギュレーション集積度の要件を示します 表 2 : 一般的なコンフィギュレーションビット要件 FPGA コンフィギュレーションビット ( デバイス当たり ) 必要な最小 SPI シリアルフラッシュ容量 Spartan-3E ファミリ XC3S100E 581,344 1Mb XC3S250E 1,353,728 2Mb XC3S500E 2,270,208 4Mb XC3S1200E 3,837,184 4Mb XC3S1600E 5,969,696 8Mb Virtex-5 ファミリ XC5VLX30 8,374,016 8Mb XC5VLX50 12,556,672 16Mb XC5VLX85 21,845,632 32Mb XC5VLX110 29,124,608 32Mb XC5VLX155 41,048,064 64Mb XC5VLX220 53,139,456 64Mb XC5VLX330 79,704,832 128Mb XC5VLX20T 6,251,200 8Mb XC5VLX30T 9,371,136 16Mb XC5VLX50T 14,052,352 16Mb XC5VLX85T 23,341,312 32Mb XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 3
SPI シリアルフラッシュからの FPGA のコンフィギュレーション 表 2 : 一般的なコンフィギュレーションビット要件 ( 続き ) 注記 : FPGA コンフィギュレーションビット ( デバイス当たり ) 必要な最小 SPI シリアルフラッシュ容量 XC5VLX110T 31,118,848 32Mb XC5VLX155T 43,042,304 64Mb XC5VLX220T 55,133,696 64Mb XC5VLX330T 82,696,192 128Mb XC5VSX35T 13,349,120 16Mb XC5VSX50T 20,019,328 32Mb XC5VSX95T 35,716,096 64Mb XC5VSX240T 79,610,368 128Mb XC5VFX30T 13,517,056 16Mb XC5VFX70T 27,025,408 32Mb XC5VFX100T 39,389,696 64Mb XC5VFX130T 49,234,944 64Mb XC5VFX200T 70,856,704 128Mb XC5VTX150T 43,278,464 64Mb XC5VTX240T 65,755,648 128Mb 1. 複数の FPGA コンフィギュレーションビットストリームを保存する デイジーチェーン接続されたアプリケーションやエンベデッド MicroBlaze プロセッサまたは PowerPC プロセッサ用のコードなど追加のユーザーデータを保存するアプリケーションには より大容量の SPI シリアルフラッシュデバイスを使用できます 1 つのフラッシュによる複数の Spartan-3E FPGA のデイジーチェーン接続は ステッピング 1 以降でのみサポートされています 5 ページの図 2 に Virtex-5 FPGA がマスターで Numonyx 社製の SPI シリアルフラッシュがスレーブの場合の詳細な SPI コンフィギュレーション設定を示します この図には SPI シリアルフラッシュから FPGA へのコンフィギュレーション接続が記載されています プログラムおよびザイリンクスケーブルが使用するコンフィギュレーションヘッダーの情報は SPI プログラムのためのハードウェアおよび接続 を参照してください 6 ページの図 3 に Spartan-3E FPGA がマスターで Numonyx 社製の SPI シリアルフラッシュがスレーブの場合の詳細な SPI コンフィギュレーション設定を示します この図には SPI シリアルフラッシュから FPGA へのコンフィギュレーション接続が記載されています プログラムおよびザイリンクスケーブルが使用するコンフィギュレーションヘッダーの情報は SPI プログラムのためのハードウェアおよび接続 を参照してください 2 ページの SPI の基本 で説明した SPI シリアルフラッシュインターフェイス信号のほかにも データ転送の正常な開始と停止に影響を与える FPGA コンフィギュレーション信号があります これらの FPGA 信号とその説明を 7 ページの表 3 に示し その図を図 2 および図 3 に示します XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 4
SPI シリアルフラッシュからの FPGA のコンフィギュレーション X-Ref Target - Figure 2 Ribbon Cable Header for FPGA JTAG Configuration Ribbon Cable Header for SPI Direct Programming (6) TDI TDO TCK TMS NC NC V REF (+3.3V) MOSI MISO SCK SS NC NC V REF (+3.3V) +2.5V +3.3V +1.0V +3.3V +3.3V Mode Selection (SPI) SPI Variant Select (Read 0X03) 0 0 1 1 0 '1' TMS TCK TDO TDI M2 M1 M0 FS2 FS1 FS0 VCCAUX (1) HSWAPEN (4) VCCO_2 Virtex-5 FPGA VCC_CONFIG (2) VCCINT MOSI D_IN FCS_B CCLK (7) INIT_B DONE PROG_B (3) 4.7 kω 4.7 kω +3.3V 4.7 kω +3.3V 330Ω +3.3V 4.7 kω +3.3V VCC D Q S C W (5) HOLD (5) GND Numonyx M25Pxx SPI Flash GND Jumper 注記 : 1. VCCO_2 は SPI コンフィギュレーションデュアルモードピン (MOSI FCS_B および FS[2:0]) に電源を供給します 2. VCC_CONFIG (Vcco_0) はコンフィギュレーション出力電源電圧で 専用コンフィギュレーションピン (TMS TCK TDO TDI M[2:0] HSWAPEN PROG_B DONE INIT_B CCLK および D_IN) に電源を供給します 3. PROG_B は SPI シリアルフラッシュの直接プログラミング中 Low に保持する必要があります FPGA をリコンフィギュレーションする場合 外部ロジックを使用してこれを Low から High に駆動できます 4. HSWAPEN を Low に駆動すると I/O でプルアップ抵抗が有効になります このピンの詳細とオプションは 7 ページの表 3 および [ 参照 2] を参照してください 5. SPI シリアルフラッシュをプログラムするときは 制御信号を適切に駆動する必要があります SPI シリアルフラッシュのプログラム中は W および HOLD などの信号を High ( 非アクティブ ) に保持する必要があります 詳細は ベンダーのデータシートを参照してください 6. ケーブル信号の相互参照表は 13 ページの表 5 を参照してください 7. 注意 : CCLK のボードレイアウトには注意が必要です Virtex-5 FPGA は 内部生成された CCLK 信号を FPGA CCLK 出力ピンに駆動します FPGA の内部コンフィギュレーションロジックは FPGA ピンで CCLK 信号によってクロックされるため CCLK ピンでノイズが発生すると FPGA コンフィギュレーションに影響を与える可能性があります CCLK デザインのガイドラインおよび詳細は [ 参照 3] の コンフィギュレーションクロック (CCLK) のボードレイアウト を参照してください 図 2 : Numonyx 社の SPI シリアルフラッシュから Virtex-5 FPGA に接続したコンフィギュレーション図 ( 読み出しコマンド 0x03 の例 ) X951_02_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 5
SPI シリアルフラッシュからの FPGA のコンフィギュレーション X-Ref Target - Figure 3 Ribbon Cable Header for FPGA JTAG Configuration Ribbon Cable Header for SPI Direct Programming (7) TDI TDO TCK TMS NC NC MOSI MISO SCK SS NC NC V REF (+2.5V) V REF (+3.3V) +2.5V +3.3V +1.2V +3.3V +3.3V Mode Selection (SPI) SPI Variant Select (Read 0X03) 0 0 1 1 0 '1' TMS TCK TDO TDI M2 (6) M1 M0 VS2 VS1 VS0 VCCAUX (1) HSWAP (4) VCCO_2 (2) MOSI DIN CSO_B CCLK (8) Spartan-3E FPGA GND VCCO_0 (2) VCCINT INIT_B DONE PROG_B (3) 4.7 kω +3.3V 4.7 kω 4.7 kω +2.5V 330Ω +2.5V 4.7 kω Jumper +3.3V VCC D Q S C W (5) HOLD (5) GND Numonyx M25Pxx SPI Flash 注記 : 1. VCCAUX は 専用の Spartan-3E FPGA コンフィギュレーションピン (TMS TDI TDO PROG_B および DONE) に電源を供給します 2. VCCO_2 は Spartan-3E FPGA コンフィギュレーション デュアルモードピン (M[2:0] VS[2:0] INIT_B CCLK CSO_B DIN および MOSI) に電圧を供給します また VCCO_0 はデュアルモードピンの HSWAP に電源を供給します 3. PROG_B は SPI シリアルフラッシュの直接プログラミング中 Low に保持する必要があります FPGA をリコンフィギュレーションする場合 外部ロジックを使用してこれを Low から High に駆動できます 4. HSWAP を Low に駆動すると I/O でプルアップ抵抗が有効になります 7 ページの表 3 を参照してください 5. SPI シリアルフラッシュをプログラムするときは 制御信号を適切に駆動する必要があります SPI シリアルフラッシュのプログラム中は W および HOLD などの信号を High ( 非アクティブ ) に保持する必要があります 詳細は ベンダーのデータシートを参照してください 6. デュアルコンフィギュレーションモードの用途では JTAG コンフィギュレーションモードのために M2 信号を High に保持するオプションを持つことを推奨します 7. ケーブル信号の相互参照表は 13 ページの表 5 を参照してください 8. 注意 : CCLK のボードレイアウトには注意が必要です Spartan-3E FPGA は 内部生成された CCLK 信号を FPGA CCLK 出力ピンに駆動します FPGA の内部コンフィギュレーションロジックは FPGA ピンで CCLK 信号によってクロックされるため CCLK ピンでノイズが発生すると FPGA コンフィギュレーションに影響を与える可能性があります CCLK デザインのガイドラインおよび詳細は [ 参照 5] の コンフィギュレーションクロック : CCLK を参照してください 図 3 : Numonyx 社の SPI シリアルフラッシュから Spartan-3E FPGA に接続したコンフィギュレーション図 ( 読み出しコマンド 0x03 の例 ) X951_03_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 6
SPI シリアルフラッシュからの FPGA のコンフィギュレーション 表 3 : FPGA SPI コンフィギュレーション信号の名前と説明 Spartan-3E/ Virtex-5 FPGA ピン名 コンフィギュレーション中の FPGA の方向 説明 コンフィギュレーション中 コンフィギュレーション後 Spartan-3E Virtex-5 デバイスデバイス PROG_B 入力 FPGA のプログラム アクティブ Low Low にアサートされると コンフィギュレーションメモリをクリアし DONE ピンと INIT_B ピンをリセットして FPGA のコンフィギュレーションプロセスを強制的に再開する 外付けの 4.7k プルアップ抵抗が必要 適切なプルアッ INIT_B オープンドレイン双方向 I/O プ電圧は該当する FPGA データシートを参照 外部から駆動する場合 オープンドレインまたはオープンコレクタドライバーを使用 初期化インジケーター アクティブ Low コンフィギュレーション開始時 メモリ初期化のクリアプロセス中は Low になる メモリのクリア終了時 モードセレクトピンおよび変数セレクトピンがサンプルされるときにリリース デイジーチェーンのアプリケーションでは V CCO_2 への外付け 4.7k プルアップ抵抗が必要 コンフィギュレーションを開始するには High にする必要がある コンフィギュレーション中はアクティブ 電源投入後 SPI シリアルフラッシュが起動するまで >2ms 必要な場合 フラッシュが使用可能になるまで Low に保持 コンフィギュレーション中に CRC エラーが検出されると FPGA は INIT_B を Low に駆動 専用 FPGA を再プログラムするには PROG_B を Low に駆動した後にリリース PROG_B を保持し FPGA I/O ピンを強制的に高インピーダンスにすると SPI シリアルフラッシュピンへの直接プログラミングアクセスが可能になる ユーザー I/O アプリケーションで未使用の場合は High に駆動 専用 M[2:0] 入力 モードセレクト FPGA の コンフィギュレーション モードを選択 VS[2:0]/ FS[2:0] 入力 変数セレクト 付属する SPI シリアルフラッシュとの通信方法を指定 SPI モード M2=0 M1=0 M0=1 INIT_B が High になるとサンプルされる 有効な設定オプションは表 4 を参照 INIT_B が High になり サンプルされる時点で有効な設定の必要がある ユーザー I/O 専用 ユーザー I/O ユーザー I/O XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 7
SPI シリアルフラッシュからの FPGA のコンフィギュレーション 表 3 : FPGA SPI コンフィギュレーション信号の名前と説明 ( 続き ) Spartan-3E/ Virtex-5 FPGA ピン名 コンフィギュレーション中の FPGA の方向 説明 コンフィギュレーション中 コンフィギュレーション後 Spartan-3E デバイス Virtex-5 デバイス CSO_B/ FCS_B (1) 出力 チップセレクト出力 アクティブ Low SPI シリアルフラッシュのチップセレクト入力に接続 HSWAP/HSWAPEN=1 の場合は 4.7k プルアップ抵抗に接続 適切なプルアップ電圧は 該当する FPGA データシートを参照 SPI シリアルフラッシュを無効にし MOSI DIN CCLK ピンをユーザー I/O として再使用するには コンフィギュレーション後に CSO_B を High に駆動 オプションで このピンと MOSI DIN および CCLK を再利用して SPI シリアルフラッシュとの通信を継続できる SPI シリアルフラッシュを無効にし このピンをユーザー I/O として再使用するには コンフィギュレーション後に FCS_B を High に駆動 D_IN および CCLK はコンフィギュレーション専用ピンのため ユーザー I/O としてのリコンフィギュレーションは不可 STARTUP_VIRT EX5 プリミティブを使用すると コンフィギュレーション後にピンにアクセスできる CCLK 出力 コンフィギュレーションクロック FPGA 内部オシレーターで生成 周波数は ConfigRate ビットストリームジェネレーターオプションによって制御 CCLK PCB トレースが長い または複数の接続がある場合 シグナルインテグリティを維持するためにこの出力を終端 SPI シリアルフラッシュのクロック入力を駆動 ユーザー I/O 専用 MOSI 出力 シリアルデータ出力 FPGA は SPI シリアルフラッシュ読み出しコマンドと開始アドレスをフラッシュシリアルデータ入力に送信 DIN/ D_IN 入力 シリアルデータ入力 FPGA は フラッシュシリ アルデータ出力からシリ アルデータを受信 ユーザー I/O ユーザー I/O ユーザー I/O 専用 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 8
SPI シリアルフラッシュからの FPGA のコンフィギュレーション 表 3 : FPGA SPI コンフィギュレーション信号の名前と説明 ( 続き ) Spartan-3E/ Virtex-5 FPGA ピン名 DONE オープンドレイン双方向 I/O FPGA コンフィギュレーション完了 コンフィギュレーション中は Low FPGA のコンフィギュレーションが正常に完了すると High になる 外付けの 330 プルアップ抵抗が必要 適切なプルアップ電圧は 該当する FPGA データシートを参照 Low は FPGA のコンフィギュレーションが未完了であることを示す DOUT 出力 シリアルデータ出力 アクティブに駆動 FPGA が 1 つのアプリケーションでは未使用 デイジーチェーンコンフィギュレーションの場合 チェーン内の次の FPGA の DIN/D_IN 入力に接続 これにより ダウンストリーム FPGA はスレーブシリアルモードになる HSWAP/ HSWAPEN コンフィギュレーション中の FPGA の方向 入力 説明 ユーザー I/O プルアップ制御 コンフィギュレーション中に Low の場合 全 I/O ピンに対する各 I/O バンクの V CCO 入力へのプルアップ抵抗を有効にする 0 : コンフィギュレーション中 プルアップ 1 : プルアップなし コンフィギュレーション中 コンフィギュレーション中 有効なロジックレベルで駆動 コンフィギュレーション後 Spartan-3E デバイス 外部プルアップ抵抗を介して High にプルアップ High の場合 FPGA が正常にコンフィギュレーションされたことを示す ユーザー I/O ユーザー I/O 注記 : 1. SPI ISP プログラムの場合 CSO_B は Spartan-3E FPGA で FCS_B は Virtex-5 FPGA で使用されます Virtex-5 FPGA では CSO_B 信号は高度なデイジーチェーン機能のために使用され SPI ISP プログラムには使用されません 詳細は FPGA データシートまたは FPGA コンフィギュレーションガイドを参照してください 専用 専用 Virtex-5 デバイス 図 4 は ザイリンクス FPGA の SPI コンフィギュレーションモードの大まかなタイミング図を示しています SPI インターフェイスのこの一般的なタイミング図は 新しい SPI 直接インターフェイスをサポートするザイリンクス FPGA ファミリに適用されます XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 9
SPI シリアルフラッシュからの FPGA のコンフィギュレーション X-Ref Target - Figure 4 PROG_B INIT_B (4) M[2:0] (1)(4) < 0 : 0 : 1 > VS[2:0]/FS[2:0] < 1 : 1 : 1 > User I/O CSO_B/FCS_B User I/O CCLK (3)............... MOSI 8-bit Read Operation 0x0B 24-bit Address 0x000000 1 Dummy Byte (2) User I/O Valid Bitstream DIN/D_IN (4) Header + Sync Word + Data DONE 注記 : 1. VS[2:0]/FS[2:0] の設定は 使用する SPI ベンダーによって異なることがあります 選択については 7 ページの表 3 を参照してください 2. 発行される MOSI ダミーバイト数は 変数セレクト (VS[2:0]/FS[2:0]) オプションによって異なります 11 ページの表 4 を参照してください 3. デフォルトのスタートアップシーケンスを示しています 4. Virtex-5 FPGA では これらの信号はコンフィギュレーション専用であるため コンフィギュレーション後にユーザー I/O として使用できません Spartan-3E FPGA では コンフィギュレーション後にユーザー I/O として使用できます 図 4 : FAST READ に対する SPI コンフィギュレーションフロー (0x0B) 電源投入時または PROG_B ピンが Low にパルスされると FPGA で初期化シーケンスが開始し 内部 FPGA コンフィギュレーションメモリがクリアされます このシーケンスの最初に DONE ピンと INIT_B ピンが共に Low になります 初期化が完了すると INIT_B ピンが High になり モードセレクトピンおよび変数セレクトピン (VS[2:0] または FS[2:0]) がサンプルされます SPI コンフィギュレーションモードおよび FPGA 内部クロックを有効にするには モードピンを M[2:0]=<0:0:1> に設定する必要があります SPI モードの場合 FPGA は変数セレクトピンをサンプルして 発行する SPI コマンドシーケンスを決定します サンプリングが正常に行われるには 初期化後に INIT_B 信号がリリースされた時点で モードピンと変数セレクトピンが適切なロジックレベルである必要があります 表 4 に Spartan-3E および Virtex-5 デバイスで使用可能な変数セレクトコードを示します X951_04_120406 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 10
SPI シリアルフラッシュコンフィギュレーションにおける電源投入時の留意点 表 4 : 変数セレクト (VS[2:0] または FS[2:0]) ピンコード VS[2:0]/FS[2:0] (1) SPI シリアルフラッシュコマンド (2) アドレスサイズダミーバイト (2) <1:1:1> FAST READ (0x0B) 24 ビット 1 バイト <1:0:1> READ (0x03) 24 ビット 0 バイト <1:1:0> READ ARRAY (0xE8) 24 ビット 4 バイト 注記 : 1. 変数セレクトピンは Spartan-3E FPGA では VS[2:0] と表記され Virtex-5 FPGA では FS[2:0] と表記されます この表には 最も一般的な読み出しコマンドを記載しています 読み出しコマンドオプションの完全なリストは FPGA のデータシートまたはコンフィギュレーションガイドを参照してください 2. SPI シリアルフラッシュコマンドおよびダミーバイトは 変数によって異なります サポートされる読み出しコマンドは SPI シリアルフラッシュベンダーの該当するデータシートを参照してください 変数セレクトピンによって SPI コマンドセットが選択されると FPGA は CSO_B セレクト信号を Low に駆動し FPGA の CCLK ピンを介して SPI シリアルフラッシュのクロッキングを開始します 次に FPGA は 8 ビットの読み出しコマンド 24 ビットの開始アドレス 0x00_0000 およびターゲットコマンドセットに適切な数のダミーバイトを順に送信します FPGA は 必要数のコンフィギュレーションビットが読み出されるまで アドレス 0 から SPI フラッシュアレイを読み出します メモリデバイスから有効なビットストリームが読み出されると DONE 信号がリリースされ FPGA のコンフィギュレーションが正常に完了したことを示します コンフィギュレーションが適切に完了すると FPGA の SPI ピンはすべてユーザー I/O として使用可能になります コンフィギュレーション中に使用される FPGA 信号は 7 ページの表 3 に示されています SPI モードで FPGA をコンフィギュレーションする場合 正常なコンフィギュレーションを行うには この表の記載に従って信号が接続されている必要があります SPI シリアルフラッシュコンフィギュレーションにおける電源投入時の留意点 電源投入時 FPGA と SPI シリアルフラッシュの間に競合状態が発生することがあります FPGA のパワーオンリセットシーケンスが完了した後 FPGA はビットストリームを取得するため SPI シリアルフラッシュに読み出しコマンドを送信します 一方 SPI シリアルフラッシュはそれ自体のパワーオンリセットシーケンスが完了するまで 読み出しコマンドを受信できません SPI シリアルフラッシュへの 3.3V 電源が FPGA 電源よりも後に投入される特定の条件下では 競合状態が発生し SPI シリアルフラッシュが読み出しコマンドを受信できないことがあります FPGA が読み出しコマンドを送信する前に SPI シリアルフラッシュが読み出しコマンドを受信可能な状態になるように システムを設計する必要があります 注記 : 詳細は [ 参照 4] の 3.3V 電源がシーケンスの最後にある場合の電源投入時 を参照してください 電源投入時の留意事項の詳細および電源投入コンフィギュレーションを正常に行うための注意事項は [ 参照 3] を参照してください XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 11
SPI シリアルフラッシュのプログラムオプション SPI シリアルフラッシュのプログラムオプション 従来のコンフィギュレーションメモリと同様に SPI シリアルフラッシュメモリにはコンフィギュレーションデータをロードする必要があります SPI シリアルフラッシュメモリのプログラム用インターフェイスは 1 つですが このインターフェイスにデータを受け渡す方法は複数あります SPI インターフェイスを介して SPI シリアルフラッシュをプログラムするには 主に次の 3 つの方法があります サードパーティプログラマ ( オフボードプログラミング ) 間接インシステムプログラミング (JTAG ツールベンダーまたはカスタムソリューション ) 直接インシステムプログラミング (SPI へ直接接続 ) 製品プログラムは通常 サードパーティプログラマまたは JTAG ツールベンダーを介して行われ 量産向けギャングプログラミングを提供している販売代理店も数多くあります プロトタイピングには ザイリンクス ISE 開発ソフトウェアツールに含まれる impact ソフトウェアと ザイリンクスパラレルケーブルまたはプラットフォームケーブル USB と併用することで選択した SPI シリアルフラッシュメモリを直接プログラムできます (21 ページの表 7) ただし 標準の JTAG インターフェイスでインシステムプログラム可能なザイリンクスプラットフォームフラッシュ PROM ([ 参照 4]) とは異なり SPI フラッシュデバイスの場合 ザイリンクスのソフトウェアおよびケーブルを使用して SPI を介した直接インシステムプログラミングを行うには 追加のケーブルコネクタが必要です (5 ページの図 2) 次のセクションでは プロトタイプデザイン向け SPI シリアルフラッシュの直接的インシステムプログラミングに必要なハードウェア接続について説明します また SPI 用のファイル生成および選択した SPI シリアルフラッシュメモリをプログラムするためのザイリンクスのソフトウェアツールフローについても説明します SPI シリアルフラッシュでインシステムプログラミングを適切に実行するには 次が必要です ザイリンクスケーブル ( パラレルケーブル IV またはプラットフォームケーブル USB) ボード上にケーブルコネクタ 適切にインストールされたザイリンクス ISE 8.2i ソフトウェア ( またはそれ以降 11.4 がサポートされる最後のバージョンで このアプリケーションノートも 11.4 について説明する ) SPI プログラムのためのハードウェアおよび接続 記載されているザイリンクスケーブルは 従来からサポートしているモード (IEEE 1149.1 規格 IEEE 1532 規格 スレーブシリアル およびスレーブ SelectMAP) に加え 直接 SPI インターフェイスによる SIP シリアルフラッシュのプログラムをサポートします これらのケーブルはすべて 標準の 14 ピンリボンケーブルを使用します リボンケーブルは 接続が容易で 高速でプログラミングする際の信号品質が高いため フライングリードよりも適しています SPI シリアルフラッシュのインシステムプログラミングを実行するには リボンケーブルコネクタがボードに含まれる必要があります 既存のケーブルポッドラベルには新しくサポートされたこのプログラムモードが反映されていないため 5 ページの図 2 のピン配置と表 5 の相互参照に示すとおりに 信号が正しく接続されていることが重要です XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 12
SPI シリアルフラッシュのプログラムオプション 表 5 : SPI プログラムモード向けダウンロードヘッダー信号の説明 リボンケーブル番号 SPI プログラムモード JTAG/ スレーブシリアルのコンフィギュレーションモード信号の相互参照 種類 SPI ヘッダーの用途 2 V REF V REF 入力 目標基準電圧 JTAG スレーブシリアル または SPI インターフェイスとして動作するターゲットシステム上の電圧バスに接続する 目標基準電圧には制限が必要で V REF ピンに直列接続された限流抵抗は付けないようにする 4 SS TMS/PROG 出力 チップセレクト (S) デバイスが命令を受け入れるようにするために 使用 6 SCK TCK/CCLK 出力 SPI クロック (C) SPI フラッシュメモリクロックは シリアルイン ターフェイスのタイミングを与え ザイリンクスケーブルによって生 成される 8 MISO TDO/DONE 入力 シリアルデータ出力 (Q) デバイスからデータをシリアル出力するた めに使用 10 MOSI TDI/DIN 出力 シリアルデータ入力 (D) デバイスにデータをシリアル入力するため に使用 デバイスは この信号から命令 アドレス およびプログラ ムされるデータを受け取る 12 N/C N/C - 予約済み このピンは ザイリンクスの診断機能のために予約されて いるため ターゲット回路に接続しない 14 - /INIT BIDIR - 1 3 5 7 9 11 13 - GND GND デジタルグランド SPI シリアルフラッシュに送信され FPGA CCLK ピンに現れる信号の品質を保つには ケーブルコネクタおよび SPI シリアルフラッシュの電源投入時の留意事項に従うだけでなく SPI シリアルフラッシュの V CC が印加電圧と一致し CCLK トレースが短くなるようにする必要があります 最後に SPI シリアルフラッシュのプログラム中は MOSI MISO SCK および SS 信号を駆動する FPGA ピンが高インピーダンスの必要があります これらの入力を高インピーダンスにすることで SPI シリアルフラッシュを直接プログラムする際に FPGA による競合が発生することを回避できます FPGA の SPI 信号を高インピーダンスにするには いくつかの方法があります FPGA の PROG_B ピンを Low に保持し すべての I/O ピンをトライステートにする FPGA のモードピンを JTAG モード (M[2:0] = <1:0:1>) に変更し PROG_B をパルスすると すべての FPGA I/O が強制的に高インピーダンスになる ザイリンクス ISE impact を使用して付属する SPI シリアルフラッシュをプログラムする場合は 機能している FPGA アプリケーション内から MOSI MISO SCK および SS 信号をトライステートにする XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 13
SPI ファイルの準備とプログラムのためのソフトウェアフロー SPI ファイルの準備とプログラムのためのソフトウェアフロー SPI PROM ファイルの準備 このセクションでは SPI シリアルフラッシュ用の PROM ファイルを作成する際のガイドラインおよびソフトウェアフローを説明します FPGA ビットストリームを SPI 用の PROM ファイルに変換する前に ビットストリームが bitgen -g StartupClk:Cclk オプションを使用して生成されたことを確認します このオプションにより スタートアップシーケンスが内部 FPGA クロックに同期し FPGA が正常に機能します ザイリンクス ISE ソフトウェアツールの PROMGen または impact は FPGA ビットストリームから SPI 用の PROM ファイルを生成します SPI シリアルフラッシュは データバイトの MSB からシリアル出力しますが ザイリンクス PROM は LSB から出力します SPI 用の PROM ファイルは 標準のザイリンクス PROM ファイルからの各バイト内でビット反転させたものです ISE PROMGen コマンドラインソフトウェアを使用した SPI PROM ファイルの準備 ザイリンクス ISE PROMGen ソフトウェアは FPGA ビットストリーム (.bit) ファイルを入力とし 適切なオプションを使用して SPI シリアルフラッシュのデータアレイ用のメモリイメージファイルを生成します 出力されたメモリイメージファイルの形式は PROMGen ソフトウェアのコマンドラインオプションで選択されます 標準的なファイル形式には Intel Hex (.mcs) Motorola Hex (.exo) があります ISE PROMGen ソフトウェアユーティリティは コマンドラインから簡単に実行できます (SPI PROM ファイルの生成に使用する ISE PROMGen ソフトウェアオプションは 14 ページの表 6 を参照 ) 次に 64 メガビット (8,192 キロバイト ) の SPI シリアルフラッシュ用の MCS ファイルを生成するための PROMGen ソフトウェアコマンドラインの例を示します promgen -spi -p mcs -o spi_flash.mcs -s 8192 -u 0 design.bit -spi オプションは SPI PROM ファイル内のビット順を正しくするために必要です - p mcs オプションは Intel Hex (.mcs) 出力ファイル形式を指定します -o spi_flash.mcs は 出力を spi_flash.mcs ファイルに指定します -s 8192 は PROM ファイルのイメージサイズを 8,192 キロバイトに指定します -u 0 オプションは アドレス 0 からデータを開始し 上方向にデータアレイに格納するよう指定します design.bit は 入力ビットストリームファイルです 表 6 に PROMGen オプションとその機能を示します 表 6 : PROMGen SPI PROM ファイルオプションの例 PROMGen オプション -spi -p < 形式 > -s < サイズ > -u < アドレス > 内容 FPGA を SPI シリアルフラッシュデバイスからコンフィギュレーションするために必要な正しいビット順を維持するために使用 PROM 出力ファイルの形式 一般的な PROM ファイル形式としては Intel Hex (.mcs) Motorola Hex (.exo) がある PROM サイズをキロバイト単位で指定 このオプションの PROM サイズは 2 のべき乗である必要があり デフォルト設定は 64 キロバイト 指定された開始アドレスから上方向に.bit ファイルをロードする このオプションは 入力ビットストリームファイルの直前に指定 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 14
SPI ファイルの準備とプログラムのためのソフトウェアフロー ISE impact グラフィカルソフトウェアを使用した SPI PROM ファイルの準備 ISE impact 8.2i ( またはそれ以降 ) のソフトウェアでは 直感的なグラフィカルユーザーインターフェイスで PROM ファイルのフォーマットおよびインシステムプログラミングを行うことができます PROMGen ファイルのフォーマット機能は impact ソフトウェアの段階的なウィザードで提供されます ウィザードでは 出力 PROM ファイルオプションおよび入力ビットストリームを順に選択します impact で PROM ファイルを生成するには 最後の手順が必須です impact ソフトウェアでは ザイリンクス FPGA ビットストリームから SPI PROM ファイルを単純なプロセスで生成できます 既定の順序で表示されるダイアログボックス ( すなわちウィザード ) は PROM ファイル生成プロセスのほとんどの手順を誘導します 次のセクションでは impact 11.4 ソフトウェアを使用して 64Mb SPI シリアルフラッシュ向けに MCS ファイル形式で SPI 用の PROM ファイルを生成する場合について説明します このプロセスでは FPGA ビットストリームファイルの design.bit を入力として spi_flash.mcs という名前の PROM ファイルを生成します 手順 1 : PROM ファイル生成用プロジェクトの新規作成 impact ソフトウェアを起動すると [impact Project] ダイアログボックスが開きます ( 図 5) [create a new project (.ipf)] を選択します オプションとして [Browse] をクリックしてプロジェクトの位置を指定します その後 [OK] をクリックして手順 2 に進みます X-Ref Target - Figure 5 図 5 : PROM ファイル生成用プロジェクトの新規作成 X951_05_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 15
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 2 : PROM ファイルの準備の選択 ウィザードの 1 ページ目には 作成可能なプロジェクトタイプが表示されます ( 図 6) [Prepare a PROM File] を選択し [OK] をクリックして手順 3 に進みます X-Ref Target - Figure 6 図 6 : PROM ファイルの準備の選択 X951_06_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 16
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 3 : [Select Storage Target] オプションの指定 3 番目の手順では ストレージタイプを指定します ( 図 7) [SPI Flash] [Configure Single FPGA] を選択し 左側パネルの右側にある緑色の矢印をクリックして手順 4 に進みます X-Ref Target - Figure 7 図 7 : [Select Storage Target] オプションの指定 X951_07_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 17
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 4 : SPI PROM の容量の指定 4 番目の手順では SPI フラッシュの容量を指定します [Storage Device (bits)] で SPI PROM の容量を 64M ( ビット ) に選択します 次に [Add Storage Device] をクリックします 図 8 に適切な設定を示します 中央パネルの右側にある緑色の矢印をクリックして手順 5 に進みます X-Ref Target - Figure 8 図 8 : SPI PROM の容量の指定 X951_08_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 18
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 5 : デバイスフォーマットプロパティの指定 5 番目の手順では SPI デバイスファイルフォーマットのプロパティを指定します [Output File Name] および [Output File Location] をクリックし 任意の名前を入力して新しい PROM ファイルを生成する位置を選択します 図 9 の例では その他のオプションはデフォルトのままになっています [OK] をクリックして手順 6 に進みます X-Ref Target - Figure 9 図 9 : デバイスフォーマットプロパティの指定 X951_09_072410 手順 6 : デバイスファイルを SPI PROM ファイルに追加する際の自動通知 impact プロジェクトウィザードが完了すると 指定したパラメーターで特定の PROM ファイルを生成するよう impact SPI PROM 生成プロジェクトが設定されます この段階では PROM ファイルのメモリイメージは空です この手順では FPGA ビットストリームを PROM ファイルメモリイメージに追加します これは impact プロジェクトウィザードの完了後すぐに開始します このとき 次に SPI PROM メモリイメージにデバイスファイルを追加することを示す自動通知が表示されます [Add Device] 通知ダイアログボックス ( 図 10) で [OK] をクリックして手順 7 に進みます X-Ref Target - Figure 10 X951_10_072410 図 10 : [Add Device] 通知ダイアログボックス XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 19
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 7 : SPI PROM メモリイメージに追加する FPGA ビットストリームファイルを選択 [Add Device] の通知の後 SPI PROM メモリイメージに追加する FPGA ビットストリーム (.bit) ファイルを選択するためのダイアログボックスが自動的に開きます ( 図 11) ここで SPI PROM に書き込む FPGA ビットストリームファイルを選択します このダイアログボックスで [Open] をクリックすると 選択した FPGA ビットストリームが SPI PROM メモリイメージに追加されます ここでは Revision 0 に別のデバイスファイルを追加するか尋ねられたら [No] をクリックし [OK] をクリックして続行します 注記 : この例では 1 つの FPGA をターゲットとする場合のフローを説明しています FPGA デイジーチェーンをターゲットにする場合 チェーン内の各 FPGA に対してデバイスファイルを追加することになります これで SPI PROM ファイルの生成準備用の自動 impact プロセスは完了です 手順 8 に進み SPI PROM ファイルを生成します X-Ref Target - Figure 11 手順 8 : impact のファイル生成処理 図 11 : [Add Device] ファイル選択ダイアログボックス X951_11_072410 最後となる 8 番目の手順では PROM ファイルを生成します [impact Processes] パネルの [Generate File] をダブルクリックします (21 ページの図 12) これが起動すると ファイル生成処理が開始されて impact は指定された SPI PROM ファイルを生成します SPI PROM ファイルの生成が正常に完了すると impact では [PROM File Generation Succeeded] というメッセージが表示されます ファイル生成処理が完了したすると 生成された spi_flash.mcs ファイルが指定した位置に入ります この spi_flash.mcs ファイルは サポートされている任意のプログラムソリューションで SPI PROM をプログラムするために使用できます FPGA ビットストリームデザインを変更した場合は SPI PROM ファイルを素早く再生成できるよう impact の SPI PROM 生成プロジェクトを毎回保存してください SPI PROM ファイルを生成するには 保存した impact プロジェクトを開き [Generate File] を起動します impact は 変更後の FPGA ビットストリームファイルが元のビットストリームファイルと同じ位置にあるものとして 新しいビットストリームファイルから変更後の SPI PROM ファイルを生成します XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 20
SPI ファイルの準備とプログラムのためのソフトウェアフロー impact GUI インターフェイスの使用時にプロジェクトがロードされない場合 SPI 用の PROM ファイルを新たに作成するたびに ウィザードの手順に従うよう誘導されます X-Ref Target - Figure 12 図 12 : [Generate File] X951_12_072410 ISE impact ソフトウェアを使用した SPI PROM のインシステムプログラム プロトタイプアプリケーションでは ISE impact 8.2i ( またはそれ以降 ) ソフトウェアを使用して 指定した SPI PROM ファイルから生成されたメモリイメージで SPI シリアルフラッシュデバイスのインシステムプログラミングが可能です (SPI PROM ファイルの生成手順は 14 ページの SPI PROM ファイルの準備 を参照 ) 表 7 に impact で直接プログラム可能な 推奨する SPI シリアルフラッシュを示します 表 7 : impact による SPI シリアルフラッシュプログラム機能 SPI シリアルフラッシュベンダー ファミリ (1) Numonyx M25P M25PE M45PE Atmel AT45DB 注記 : 1. 各リリースでサポートされている SPI シリアルフラッシュの詳細は 該当するソフトウェアバージョンの impact ヘルプマニュアル を参照してください impact ソフトウェアは SPI PROM を単純なプロセスでプログラムできます 既定の順で表示されるダイアログボックス ( つまりウィザード ) は impact プログラムプロセスのほとんどの手順を誘導します XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 21
SPI ファイルの準備とプログラムのためのソフトウェアフロー 次のセクションでは M25P64 (64Mb) Numonyx SPI PROM をインシステムプログラムする場合の impact 11.4 ソフトウェアのプロセスを示します このプロセスでは SPI PROM ファイルである spi_flash.mcs (14 ページの SPI PROM ファイルの準備 で生成 ) を入力として SPI PROM を消去して PROM ファイルの内容を SPI シリアルフラッシュデバイスにプログラムした後 SPI PROM の内容を指定された SPI PROM ファイルの内容に対して検証します 手順 1 : 直接インシステムプログラミング用プロジェクトの新規作成 impact ソフトウェアを起動すると [impact Project] ダイアログボックスが開きます (15 ページの図 5) [create a new project (.ipf)] を選択します オプションとして [Browse] をクリックしてプロジェクトの位置を指定します その後 [OK] をクリックして手順 2 に進みます 手順 2 : 直接 SPI コンフィギュレーションモードを使用したデバイスのコンフィギュレーション 2 番目の手順は impact プロジェクトウィザードで開始します ウィザードの 1 ページ目には 作成可能なプロジェクトタイプが表示されます ( 図 13) [Configure devices] を選択します 次に そのドロップダウンリストから [using Direct SPI Configuration mode] を選択します [OK] をクリックして 新規プロジェクトのセットアッププロセスを完了します このプロセスが完了すると impact は SPI バスへの直接ケーブル接続を使用して SPI シリアルフラッシュメモリのインシステムプログラミング実行するモードに設定されます X-Ref Target - Figure 13 X951_13_072410 図 13 : 直接 SPI コンフィギュレーションモードを使用したデバイスのコンフィギュレーション XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 22
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 3 : SPI PROM ファイルの追加 新規プロジェクトウィザードを完了後 [Direct SPI] ウンドウで右クリックして [Add SPI Device] を選択します SPI シリアルフラッシュデバイスにプログラムする SPI PROM ファイルを選択するためのダイアログボックスが開きます ( 図 14) spi_flash.mcs ファイルを選択して [Open] をクリックします X-Ref Target - Figure 14 図 14 : SPI PROM ファイルの追加 手順 4 : Numonyx M25P64 デバイスの製品番号の選択 X951_14_072410 ロードする SPI PROM ファイルを選択すると [Select Device Part Name] ダイアログボックスが表示されます ( 図 15) 4 番目の手順では このダイアログボックスで SPI PROM のターゲットタイプを指定します ここでは使用するターゲット SPI PROM として Numonyx の製品番号 M25P64 を選択します [OK] をクリックして SPI PROM のプログラムのセットアップを完了します X-Ref Target - Figure 15 図 15 : [Select Device Part Name] ダイアログボックス X951_15_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 23
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 5 : (impact 10.1 またはそれ以降 ) デバイスプログラムプロパティの設定 impact では [Device Programming Properties] ダイアログボックスが表示されます ( 図 16) ここでは [Operation] [Program] を起動した際に実行される追加機能を設定します [Device Programming Properties] ダイアログボックスで [Verify] および [Erase Before Programming] の両方をオンにすることを推奨します [OK] をクリックして プログラムプロパティを保存します X-Ref Target - Figure 16 手順 6 : インシステムプログラミング向けのハードウェア要件の指定 X951_19_072410 図 16 : (impact 10.1 またはそれ以降 ) デバイスプログラムプロパティの指定 6 番目の手順では SPI PROM のインシステムプログラミングのハードウェア要件を指定します 適切なザイリンクスケーブル接続 : ザイリンクスケーブルは コンピューターおよびターゲットとする SPI PROM の SPI バスに適切に接続されている必要があります ( ザイリンクスケーブルからターゲット SPI PROM の SPI バスへのハードウェア接続は 5 ページの図 2 を参照 ) ケーブルの電源 : ザイリンクスパラレルケーブル IV を使用する場合 ケーブルに電源が供給されている必要があります ターゲットシステムの電源 : SPI PROM を含むターゲットシステムにも電源が供給されている必要があります SPI プログラムプロセス中はターゲット FPGA 信号を分離 : ターゲット FPGA ( および SPI PROM マスターデバイスとなり得る SPI バス上のその他のデバイス ) は その SPI ピンが高インピーダンス状態に維持されるモードにする必要があります FPGA SPI ピンを高インピーダンス状態にする方法は 12 ページの SPI プログラムのためのハードウェアおよび接続 で説明されています 一般的な方法としては FPGA PROG_B ピンを Low に維持します インシステムプログラミングケーブルとの競合を回避するため SPI PROM プログラムプロセスの残りの間は FPGA SPI ピンを高インピーダンス状態に維持する必要があります XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 24
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 7 : impact プログラム処理の呼び出し 7 番目の手順では 選択した SPI PROM ファイルの内容でターゲットの SPI PROM をプログラムします [impact] ウィンドウの [SPI PROM] アイコンで左クリックしてこれを選択した状態にします ( 選択されているアイコンは 緑色で表示される ) [impact Processes] パネルの [Program] をダブルクリックし プログラムを開始します ( 図 17) X-Ref Target - Figure 17 図 17 : プログラムの処理 X951_16_072410 XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 25
SPI ファイルの準備とプログラムのためのソフトウェアフロー 手順 8 : (impact 9.2.04i またはそれ以降 ) impact プログラムプロパティの選択 [Program] を実行すると [Programming Properties] ダイアログボックスが開きます ( 図 18) 8 番目の手順では 適切なプログラムプロパティが選択されていることを確認します [Verify] および [Erase Before Programming] の両方がオンであることを確認し SPI PROM が適切にプログラムされるようにします [OK] をクリックして 消去 プログラム および検証処理を開始します X-Ref Target - Figure 18 図 18 : [Programming Properties] ダイアログボックス X951_17_072410 プログラム処理の最初に impact はコンピューターに装着されているケーブルを自動的に接続します 次に impact によるインシステム消去 プログラム および検証処理の進捗状況を示す [Progress Dialog] ダイアログボックスが表示されます ( 図 19) SPI PROM のサイズ SPI PROM ファイルイメージのサイズ ケーブルコンフィギュレーションの速度に応じて プログラム処理の完了には数秒 ~ 数分かかります X-Ref Target - Figure 19 X951_18_072410 図 19 : [Progress] ダイアログボックス プログラム処理が正常に完了すると impact で [Program Succeeded] というメッセージが表示されます XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 26
まとめ SPI PROM ファイルを変更した場合は SPI PROM を素早く再プログラムできるよう impact の直接 SPI コンフィギュレーションモードプロジェクトを毎回保存してください SPI PROM を再プログラムするには 保存した impact プロジェクトを再び開き [Program] を起動して [Erase] および [Verify Programming Properties] が選択されていることを確認し [OK] をクリックします impact は 変更後の SPI PROM ファイルが元の SPI PROM ファイルと同じ位置にあるものとして SPI PROM を再プログラムします まとめ 新しいザイリンクス FPGA ファミリに SPI インターフェイスが追加されたことにより 複数のベンダーが提供する省スペースの SPI PROM がコンフィギュレーションに使用できるようになりました ボード上に SPI PROM を既に備えているシステムでは 1 つのメモリソースで既存のユーザーデータだけでなく コンフィギュレーションデータも保存できます 参考資料 デバイス ザイリンクスの文書 1. Virtex-5 関連資料 2. DS202 : Viretx-5 データシート : DC 特性およびスイッチ特性 3. UG191 : Virtex-5 コンフィギュレーションガイド 4. DS312 : Spartan-3E FPGA ファミリデータシート 5. UG332 : Spartan-3 ジェネレーションコンフィギュレーションガイド ソフトウェア ザイリンクス PROMGen および impact ソフトウェアは ザイリンクス ISE Foundation ソフトウェア またはダウンロードで入手可能なザイリンクス ISE WebPACK ソフトウェアパッケージと共に入手できます ISE Foundation ソフトウェア http://japan.xilinx.com/ise/logic_design_prod/foundation.htm ISE WebPACK ソフトウェア http://japan.xilinx.com/ise/logic_design_prod/webpack.htm ザイリンクス ISE ソフトウェアのマニュアルは 次から入手できます http://japan.xilinx.com/support/software_manuals.htm ハードウェア ザイリンクスケーブルに関する情報は 次のザイリンクスコンフィギュレーションソリューションウェブサイトにあります http://japan.xilinx.com/products/design_resources/config_sol/ サポートされるザイリンクスケーブルは ISE impact 8.2i ( またはそれ以降 ) ソフトウェアのマニュアルを参照してください XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 27
改訂履歴 改訂履歴 次の表に この文書の改訂履歴を示します 日付バージョン改訂内容 2006 年 12 月 13 日 2007 年 10 月 3 日 2007 年 11 月 20 日 2009 年 1 月 29 日 2010 年 9 月 23 日 1.0 初版リリース 1.1 文書テンプレートを更新 図 2 と図 3 に CCLK レイアウトに関する注意メモを追加 1.1.1 URL を更新 1.2 ソフトウェアフローを impact 10.1 について更新 STMicrosystems を Numonyx に更新 表 3 の DONE プルアップ値の記述を更新 1.3 ソフトウェアフローを impact 11.4 ( 直接インシステム SPI プログラムをサポートする最後のバージョン ) に対応して更新 変更された画面をすべて更新後のバージョンに差し替え ( 図 5 ~ 図 19) 表 2 : 最新の Virtex-5 デバイスをすべて含むよう更新 図 2 および図 3 : DONE のプルアップ抵抗を 300 から 330 に変更 表 3 : 特定のプルアップ電圧を削除し デバイスデータシートを参照して変更 コンフィギュレーションピンのユーザー I/O としての再利用について D_IN および CCLK は専用のコンフィギュレーションピンであって再利用できないという記述に変更 全体をとおして ファイル名 spi_prom.mcs および bitfile.bit を spi_flash.mcs および design.bit にそれぞれ変更 Notice of Disclaimer Xilinx is disclosing this Application Note to you AS-IS with no warranty of any kind. This Application Note is one possible implementation of this feature, application, or standard, and is subject to change without further notice from Xilinx. You are responsible for obtaining any rights you may require in connection with your use or implementation of this Application Note. XILINX MAKES NO REPRESENTATIONS OR WARRANTIES, WHETHER EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL XILINX BE LIABLE FOR ANY LOSS OF DATA, LOST PROFITS, OR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, OR INDIRECT DAMAGES ARISING FROM YOUR USE OF THIS APPLICATION NOTE. 本資料は英語版 (v1.3) を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては 必ず最新英語版をご参照ください この資料に関するフィードバックおよびリンクなどの問題につきましては jpn_trans_feedback@xilinx.com までお知らせください いただきましたご意見を参考に早急に対応させていただきます なお このメールアドレスへのお問い合わせは受け付けておりません あらかじめご了承ください XAPP951 (v1.3) 2010 年 9 月 23 日 japan.xilinx.com 28