39
XAPP1233 (v1.0) 2015 5 29 japan .xilinx.com 1 本資料は表記のバージ ョ ンの英語版を翻訳し たもので、内容に相違が生じ る場合には原文を優先し ます。 資料によっては英語版の更新に対応していないものがあります。 日本 語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。 概要 このアプリケーション ノ ー ト では、 UltraScale™ FPGA のマスター シリアル ペリフェラル インターフェイス (SPI)4 ビッ データパス (x4 またはクワッド ) コンフィギュレーション モードについて説明します。 x4 モード を推奨し ますが、 必要 に応じて、 x4 モードから 1 ビッ トのデータパス (x1) モードおよび 2 ビッ トのデータパス (x2) モー ド に簡単に変更で き ま す。 こ のアプ リ ケーシ ョ ン ノ ー ト では、 デザ イ ンのデザ イ ンの最初の起動段階で SPI コンフィギュレーションとコンフィ ギュレーション デバッグを問題なく完了させるために役立つマスター SPI コ ン フ ィ ギ ュ レーシ ョ ンの基本について説明 します。 こ こ では、Vivado® Design Suite 統合設計環境 (IDE) やコマンド ラインから使用できる Tcl フローを使用して、SPI コンフィ ギュレーションのビットストリームを生成し、このビットストリームを SPI メモリ デバイスにプログラムする手順につい ても説明します。 SPI メモリ デバイスとマスター SPI x4 に必要な FPGA 間の接続サンプル一式も提供されます。 はじめに UltraScale FPGA のマスター SPI コンフィギュレーション モードでは、 ピン数の少ないコンフィギュレーション オプシ ョ ンが可能です。 UltraScale FPGA は、 コンフィギュレーション バンク (バンク 0) 4 つの専用データピンがあるため、 ク ワッド SPI フ ラ ッ シ ュ 規格に準拠す る ク ワ ッ ド SPI シ リ アル NOR フラッシュ デバイスを介して中速のコンフィギュレー シ ョ ンに対応でき ます。 ザ イ リ ン ク ス では、 ボー ド を x4 幅向けにレイアウト して、 コンフィギュレーション時間を x1 マスター SPI 4 分の 1 短縮する こ と を推奨し ます。 SPI x4 のすべてのピンは専用のバンク 0 にあるため、 x4 の利用によってユーザー I/O ピンが さらに使用されることはありません。 x1 幅および x2 幅がサポート されており、 このアプリケーション ノ ー ト で示す よ う x4 のケースから簡単に変更できます。 UltraScale FPGA では、 2 つの ク ワ ッ ド SPI を並列に使用す る こ と で よ り 高速な コ ンフィギュレーションを可能にするマスター SPI デュアル クワッド モード も導入しています。 デュアル クワッド SPI ン フ ィ ギ ュ レーシ ョ ンの詳細は、 こ のアプ リ ケーシ ョ ン ノー ト では扱いません。 x8 モー ド の詳細は、 『UltraScale アーキテ クチャ コンフィギュレーション ユーザー ガイド』 (UG570) [参照 1] を参照してください。 フラッシュのインシステム プログラムは、 Vivado Design Suite で可能です。 Vivado Design Suite は、 間接プ ロ グ ラ ム と 呼ば れ る よ う に、UltraScale FPGA のコンフィギュレーション ビットストリームを JTAG を経由で SPI フラッシュにプログラム できます。 Vivado Design Suite は、 最大の UltraScale FPGA のビ ッ ト ス ト リ ームを複数個格納するのに十分な容量の メ モ リ で広範な SPI フ ラ ッ シ ュ集積度をサポー ト し ます。 コ ン フ ィ ギ ュ レーシ ョ ン後は、 追加の格納領域に イ ン ターコ ネ ク ト ジッ クに追加されたエンベデッ ド SPI コント ローラーを介してアクセスできます。 1 に、 間接プ ロ グ ラ ム フローとコン フィギュレーション シーケンスの概略図を示します。 アプリケーション ノート : UltraScale FPGA XAPP1233 (v1.0) 2015 5 29 UltraScale FPGA での SPI コンフィギュ レーションおよびフラッシュ プログ ラミング 著者 : Matt NielsonRyan Rumsey

:UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  1

本資料は表記のバージ ョ ンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用としてご使用の上、 最新情報につきましては、 必ず最新英語版をご参照く ださい。

概要このアプリ ケーシ ョ ン ノートでは、UltraScale™ FPGA のマスター シ リ アル ペリ フェラル インターフェイス (SPI)、 4 ビット データパス (x4 またはクワッ ド ) コンフ ィギュレーシ ョ ン モードについて説明します。 x4 モードを推奨しますが、 必要に応じて、 x4 モードから 1 ビッ トのデータパス (x1) モードおよび 2 ビッ トのデータパス (x2) モードに簡単に変更できます。 このアプリ ケーシ ョ ン ノートでは、デザインのデザインの 初の起動段階で SPI コンフ ィギュレーシ ョ ンと コンフ ィギュレーシ ョ ン デバッグを問題な く完了させるために役立つマスター SPI コンフ ィギュレーシ ョ ンの基本について説明します。

こ こでは、Vivado® Design Suite 統合設計環境 (IDE) やコマンド ラインから使用できる Tcl フローを使用して、SPI コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成し、 このビッ ト ス ト リームを SPI メモ リ デバイスにプログラムする手順についても説明します。 SPI メモ リ デバイス とマスター SPI x4 に必要な FPGA 間の接続サンプル一式も提供されます。

はじめにUltraScale FPGA のマスター SPI コンフ ィギュレーシ ョ ン モードでは、 ピン数の少ないコンフ ィギュレーシ ョ ン オプシ ョンが可能です。 UltraScale FPGA は、 コンフ ィギュレーシ ョ ン バンク (バンク 0) に 4 つの専用データピンがあるため、 クワ ッ ド SPI フラ ッシュ規格に準拠するクワッ ド SPI シ リ アル NOR フラ ッシュ デバイスを介して中速のコンフ ィギュレーシ ョ ンに対応できます。

ザイ リ ンクスでは、 ボードを x4 幅向けにレイアウ ト して、 コンフ ィギュレーシ ョ ン時間を x1 マスター SPI の 4 分の 1 に短縮するこ とを推奨します。 SPI x4 のすべてのピンは専用のバンク 0 にあるため、 x4 の利用によってユーザー I/O ピンがさ らに使用されるこ とはあ り ません。 x1 幅および x2 幅がサポート されており、 このアプリ ケーシ ョ ン ノートで示すよ うに x4 のケースから簡単に変更できます。UltraScale FPGA では、2 つのクワ ッ ド SPI を並列に使用するこ とでよ り高速なコンフ ィギュレーシ ョ ンを可能にするマスター SPI デュアル クワ ッ ド モード も導入しています。 デュアル クワ ッ ド SPI コンフ ィギュレーシ ョ ンの詳細は、 このアプリ ケーシ ョ ン ノートでは扱いません。 x8 モードの詳細は、『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] を参照してください。

フラ ッシュのインシステム プログラムは、 Vivado Design Suite で可能です。 Vivado Design Suite は、間接プログラムと呼ばれるよ うに、UltraScale FPGA のコンフ ィギュレーシ ョ ン ビッ ト ス ト リームを JTAG を経由で SPI フラ ッシュにプログラムできます。 Vivado Design Suite は、 大の UltraScale FPGA のビッ ト ス ト リームを複数個格納するのに十分な容量のメモ リで広範な SPI フラ ッシュ集積度をサポート します。 コンフ ィギュレーシ ョ ン後は、追加の格納領域にインターコネク ト ロジッ クに追加されたエンベデッ ド SPI コン ト ローラーを介してアクセスできます。図 1 に、間接プログラム フローと コンフ ィギュレーシ ョ ン シーケンスの概略図を示します。

アプリケーシ ョ ン ノート : UltraScale FPGA

XAPP1233 (v1.0) 2015 年 5 月 29 日

UltraScale FPGA での SPI コンフ ィギュレーシ ョ ンおよびフラッシュ  プログラ ミング著者 : Matt Nielson、 Ryan Rumsey

Page 2: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

はじめに

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  2

プロセス フローの概要を次に示します。

1. SPI フラ ッシュはボード上にあ り、 ターゲッ ト FPGA のコンフ ィギュレーシ ョ ン インターフェイス と直接接続されています。 このボードは、 ザイ リ ンクス プラ ッ ト フォーム ケーブル USB II または Digilent プログラ ミ ング モジュールなどのプログラ ミ ング ケーブルを介してローカル ワークステーシ ョ ンに接続されます。

2. Vivado Design Suite は、 ローカル ワークステーシ ョ ンにインス トールされており、 間接プログラム ビッ ト ス ト リームを含みます。 SPI フラ ッシュへプログラムされる 終的なビッ ト ス ト リームにもアクセスできます。

3. Vivado Design Suite のハードウェア マネージャーを用いて、 ターゲッ トの UltraScale FPGA を間接プログラム ビッ トス ト リームでコンフ ィギュレーシ ョ ンします。 その後、 Vivado Design Suite で、 間接プログラム ビッ ト ス ト リームを通じて、 JTAG 接続を介し SPI フラ ッシュをターゲッ ト ビッ ト ス ト リームでプログラムします。

4. これで、 SPI フラ ッシュがターゲッ ト ビッ ト ス ト リームによってプログラムされたので、 UltraScale FPGA は、PROGRAM_B のアサート後に SPI フラ ッシュから直接コンフ ィギュレーシ ョ ンされます。 あるいは、マスター SPI コンフ ィギュレーシ ョ ン モードに合わせてモード ピンを設定している場合は、 電源を入れ直します。

UltraScale FPGA は、SPI fast read コマンドおよび SPI quad output fast read コマンドをサポートするシ リ アル NOR フラ ッシュメモ リからデバイス自身をコンフ ィギュレーシ ョ ンできます。 このコンフ ィギュレーシ ョ ン モードは、 ユーザー I/O ピンを必要とせずに、シンプルで信頼できるコンフ ィギュレーシ ョ ン ソ リ ューシ ョ ンです。このモードは x4 幅のコンフ ィギュレーシ ョ ン インターフェイスであるため、中速のコンフ ィギュレーシ ョ ンに対応できます。 コンフ ィギュレーシ ョ ン時間の短縮が必要な場合は、 スレーブ SelectMAP (x8、 x16、 x32)、 マスター BPI (x16)、 マスター SPI x8 (2 つの SPI フラ ッシュデバイスを並列に使用) など、ほかのコンフ ィギュレーシ ョ ン オプシ ョ ンを検討してください。これらのコンフ ィギュレーシ ョ ン モードの詳細は、 『UltraScale FPGA の BPI コンフ ィギュレーシ ョ ンおよびフラ ッシュ プログラム』 (XAPP1220) [参照 2] または『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] を参照してください。コンフ ィギュレーシ ョ ン時間計算の詳細は、 「付録」 を参照して ください。

X-Ref Target - Figure 1

図 1 : Vivado SPI フラッシュのプログラ ミング フローおよびコンフ ィギュレーシ ョ ン フロー

Page 3: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI の基本

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  3

SPI フラ ッシュから UltraScale FPGA をコンフ ィギュレーシ ョ ンするために必要な大まかな手順は次のとおりです。

1. SPI とマスター SPI クワ ッ ド コンフ ィギュレーシ ョ ンの基本を理解する - 「SPI の基本」。

2. SPI フラ ッシュを介して FPGA コンフ ィギュレーシ ョ ン用にボードをレイアウ トする - 「マスター SPI コンフ ィギュレーシ ョ ン用のボード レイアウ ト 」。

3. Vivado Design Suite によ り、 ターゲッ ト ビッ ト ス ト リームを (.bin ファ イルと して) 準備する - 「マスター SPI コンフ ィギュレーシ ョ ン ファ イル」。

4. Vivado Design Suite ハードウェア マネージャーを使用して、 NOR フラ ッシュをシステム内でプログラムする - 「SPIフラ ッシュのプログラム」。

5. シ リアル NOR フラ ッシュからターゲッ ト FPGA をコンフ ィギュレーシ ョ ンする - 「ターゲッ ト FPGA のコンフ ィギュレーシ ョ ン」。

これらの手順の説明がこのアプリ ケーシ ョ ン ノートの主要部分です。 「付録」 には次の追加事項が記載されています。

1. プログラム時間

2. コンフ ィギュレーシ ョ ン時間

3. SPI フラ ッシュの選択

4. マスター SPI x1、 x2、 および x8

5. SPI コンフ ィギュレーシ ョ ンの生成に関する制約 : IDE フロー

6. デバッグと ト ラブルシュートのガイ ド ライン

SPI の基本UltraScale FPGA でのマスター SPI コンフ ィギュレーシ ョ ンに使用される SPI 規格およびクワッ ド SPI 規格のサブセッ ト を基本的な理解は、正常なコンフ ィギュレーシ ョ ンを確実に行う こ と と、考えられるコンフ ィギュレーシ ョ ン エラーの ト ラブルシュートに役立ちます。

実際の SPI 規格は、 メモ リやセンサーと通信するためのエンベデッ ド システムでよ く使用されるシンプルなチップ間データ リ ン クです。 このアプ リ ケーシ ョ ン ノー ト で x1 幅と呼ばれる元の形式では、 SPI は、 マスター出力、 スレーブ入力(MOSI) ラインを介してマスターからコマンドおよびアドレスを送信し、 マスター入力、 スレーブ出力 (MISO) ラインを介してデータを受信する全二重モードで動作します。 データは SPI ク ロ ッ ク (SCLK) 信号と同期しており、 スレーブ デバイスは SPI セレク ト (SS#) 信号を介して選択されます。 図 2 に、 SPI マスターと SPI スレーブ間の x1 インターフェイスを示します。

SPI フラ ッシュには上記に示したピン以外にもいくつかのピンがあ り、 特別な機能を制御するために使用できます。 これらのピンは SPI フラ ッシュ ベンダーによって異なり ますが、共通する 2 つの特殊機能ピンと してホールド ピンおよび書き込み禁止ピンがあ り ます。 ホールド ピンおよび書き込み禁止ピンは、 表 1 に示すよ うに、 SPI x4 モードでは追加のデータピンと して機能します。 この表は、 データ ピン、 ならびにさまざまなベンダーで一般的に使用されている名前をま とめたものです。

X-Ref Target - Figure 2

図 2 : SPI マスター /スレーブのインターフェイス

Page 4: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI の基本

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  4

表 1 :  SPI フラッシュのデータ  ピン

SPI 信号名UltraScale FPGA のピン名 (UltraScale FPGA の信号名)

N25Q256A(1) のピン名

その他の一般的な名前

ピンの機能

SCLK CCLK (CCLK) C SCK、 CLK マスターによってスレーブまで駆動される同期クロ ッ ク。

SS# RDWR_FCS_B (FCS_B) S# CS# アクティブ Low のスレーブ セレク ト。

MOSI D00_MOSI (D00_MOSI) DQ0 SI、 IO0、 SIO0、 DI マスター出力、 スレーブ入力。x2 および x4 出力モードでは LSB データ ビッ ト と して使用。

MISO D01_DIN (D01_DIN) DQ1 SI、 IO1、 SIO1、 DO マスター入力、 スレーブ出力。

W# D02 (D02) DQ2 WP#、 IO2、 SIO2 書き込み禁止。 x4 モードでデータ ピンと して使用。

HOLD# D03 (D03) DQ3 HOLD#、 IO3、 SIO3 デバイスの選択を解除せずにホールド /ポーズ。 x4 モードでは MSB データ ビッ ト と して使用。

注記 :1. Micron 社のシ リアル NOR フラ ッシュ メモ リです [参照 3]。

Page 5: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI の基本

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  5

スレーブのアドレス 0 に有効な UltraScale FPGA コンフ ィギュレーシ ョ ン ビッ ト ス ト リームがある場合、 図 3 の波形は、そのスレーブによって返された同期ワードの 初の数ビッ ト までの fast read コマンド (0Bh) を示します。 この read コマンドは、スレーブ セレク ト ラインがマスターによってディアサート されるまで続行されます。データは常に 上位ビッ ト をから送信されます。

図 3 について説明します。

• ク ロ ッ ク a = 24 ビッ トのアドレス指定の場合は 32 サイクル、 32 ビッ トのアドレス指定 fast read コマンドの場合は 40サイクルです。

• ク ロ ッ ク b = fast read コマンドの場合、 クロ ッ ク a + SPI フラ ッシュによるダ ミー サイクル出力の数です。

• ク ロ ッ ク c = ク ロ ッ ク b + ビッ ト ス ト リーム ヘッダー バイ トの数です。 ビッ ト ス ト リーム ヘッダーは、 0xFF と、write_bitstream によって同期ワードの前にビッ ト ス ト リームに挿入された 32 ビッ ト アドレス幅の検出ワードのバイト数です。

クワッ ド  SPI フラ ッシュ

x1 幅でのスループッ ト を向上するため、 メモ リ ベンダーは、 2 本の追加ラインをデータに使用するクワ ッ ド SPI モードを提供しています。UltraScale FPGA コンフ ィギュレーシ ョ ン ロジッ クは、MOSI ラインを介して x1 幅でコマンドおよびデータを送出できます。 その後、 MOSI ラインと MISO ラインおよび 2 本の追加データ ラ インを使用して、 x4 幅でデータを受信します。 図 4 にこのインターフェイスを示します。 この図では、 マスターと スレーブのピン名を変更して、 UltraScaleFPGA および N25Q256A の名前に対応させています。

X-Ref Target - Figure 3

図 3 : マスター SPI の x1 0Bh コマンド

X-Ref Target - Figure 4

図 4 : クワッ ド  (x4) SPI マスター /スレーブのインターフェイス

Page 6: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI の基本

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  6

図 5 に、 quad output fast read コマンド (6Bh) および quad output fast read (32 ビッ ト アド レス) コマンド (6Ch) を示します。fast read コマンドの場合と同様に、 コマンドおよびアドレスは D00_MOSI (D[00]) ラインを介して送信されますが、データは D[03:00] ラインを介して受信されます。 データは常に D[03] で MSB から送信されます。

UltraScale FPGA のマスター SPI コンフ ィギュレーシ ョ ン

UltraScale FPGA は、 マスター SPI のコンフ ィギュレーシ ョ ン モードに設定した場合、 接続されている SPI フラ ッシュ デバイスから FPGA 自身をコンフ ィギュレーシ ョ ンできます。 UltraScale FPGA が送信するのは、 表 2 に示す SPI fast read コマンドおよび SPI output fast read コマンドのみです。

UltraScale FPGA の電源投入後または PROGRAM_B パルス と INIT_B のリ リース後、 FPGA コンフ ィギュレーシ ョ ン モード ピンをマスター SPI のコンフ ィギュレーシ ョ ン モード (M[2:0] = 001) に設定されていれば、FPGA はフラ ッシュ チップセレク ト ピン (FCS_B) をアサート して、 SPI fast read コマンド (0Bh) を D00_MOSI に駆動出力します。 図 3 に波形を示します。

UltraScale FPGA コンフ ィギュレーシ ョ ンに使用されるすべての SPI コマンドでは、 SPI コマンドのコマンド部とアドレス部が常に MOSI を介して x1 幅で送信されます。 データはコマンドに合わせて適宜 x1、 x2、 または x4 幅でリードバッ ク されます。 MOSI ラ インはディアサート され、 後のアドレス ビッ トの送信後にフロート状態にできます。 x2 幅および x4幅の場合は、 このラインは read コマンドの 下位ビッ ト D00 と して使用されます。

X-Ref Target - Figure 5

図 5 : マスター SPI の x4 6Bh/6Ch コマンド

表 2 :  SPI コマンド

SPI コマンド オペコード

Fast read 0Bh

Dual output fast read 3Bh

Quad output fast read 6Bh

Fast read (32 ビッ ト アドレス) 0Ch

Dual output fast read (32 ビッ ト アドレス) 3Ch

Quad output fast read (32 ビッ ト アドレス) 6Ch

Page 7: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI の基本

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  7

UltraScale FPGA マスター SPI コンフ ィギュレーシ ョ ン  シーケンス

コンフ ィ ギュレーシ ョ ン モード ピンをマスター SPI のコンフ ィ ギュレーシ ョ ン モード (M[2:0] = 001) に設定する と、FPGA の電源投入後または PROGRAM_B のディアサート後に、 UltraScale FPGA はマスター SPI のコンフ ィギュレーシ ョン シーケンスを開始します。 このシーケンスは、 図 3 に示すよ うに、 fast read コマンドを駆動出力するコンフ ィギュレーシ ョ ン ロジッ クから必ず始ま り ます。

1. fast read コマンド (0Bh) を駆動します。

2. 3 つのアドレス バイ ト と して 0 を送信します。

3. D00_MOSI ピンの駆動を停止します。

4. FCS_B のアサート状態を維持して、 ク ロ ッ ク CCLK を供給し続けます。

5. D01_DIN のデータをスキャンして、 同期ワード (0xAA995566 の 32 ビッ ト パターン) の有無を調べます。

6. 後続のデータを 32 ビッ ト ワード と して同期ワードに揃えます。

7. FPGA コンフ ィギュレーシ ョ ン パケッ トおよびコマンド と して各 32 ビッ ト ワードの処理を開始します。

8. 次のいずれかの状況が起こるまで FCS_B アサート状態を維持します。

° コンフ ィギュレーシ ョ ン コマンドが、 新しい SPI コマンドを発行よ う コンフ ィギュレーシ ョ ン ロジッ クに命令した

° デバイス ID エラーが発生した

° 巡回冗長検査 (CRC) エラーが発生した

° コンフ ィギュレーシ ョ ンが完了した

たとえば、 同期ワードの読み取り完了後に、 エンベデッ ド FPGA コンフ ィギュレーシ ョ ン コマンドを実行する と、 FPGAコンフ ィギュレーシ ョ ン ロジッ クは、 ビッ ト ス ト リームに指定したアド レスで 4 バイ トの quad output fast read コマンド(6Ch) を発行できます。 このアドレスが 16MB (0x01000000) であった場合、 FPGA は FCS_B をディアサート してから再アサート し、 D00_MOSI で 0x6C の後に 0x01000000 を送信します。 コンフ ィギュレーシ ョ ン ロジッ クは、 FCS_B のアサート状態を維持しつつ、D[03:00] を読み出します。FPGA コンフ ィギュレーシ ョ ン ロジッ クは、入力データを再度スキャンして同期ワードの有無を調べます。 同期ワード検出後の動作は、 エンベデッ ド SPI コマンドをスキップする以外は前述した内容と同様です。

注記 : UltraScale FPGA コンフ ィギュレーシ ョ ン ロジッ クは同期ワードの有無をスキャンしてデータの位置を 32 ビッ ト境界に揃えるため、 SPI フラ ッシュが使用するダ ミー サイクルの数は、 マスター SPI のコンフ ィギュレーシ ョ ンでは重要ではあ り ません。 コンフ ィギュレーシ ョ ン ロジッ クは、 データの位置を揃えるためにダ ミー ビッ トの数を数えて必要はなく、 むしろ同期ワードでのラ ッチに依存します。

Page 8: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  8

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウトSPI インターフェイスは高性能インターフェイスではあ り ませんが、シグナル インテグ リティの問題やボード レイアウ ト上の決定によってクロ ッ ク レートが制限されたり、CCLK ライン上での反射のよ うな信号上の問題につながらないよ うに注意する必要があ り ます。

Kintex UltraScale FPGA KCU105 評価キッ ト [参照 4] は、マスター SPI x4 コンフ ィギュレーシ ョ ンに関してよい指針を示します。 このボードには、 マスター SPI x8 モードを実現する 2 つの N25Q256A デバイスがあ り ます。 ただし、 このアプ リケーシ ョ ン ノート で扱うのはマスター SPI x4 モードで使用される 1 個の SPI フラ ッシュ (U35) のみですが、 これと同じセッ ト アップを必要に応じて x1 モードや x2 モードに使用できます。

マスター SPI x4 用のボード レイアウ トは、前世代のマスター x1/x2 レイアウ ト要件と非常に似ています。x4 幅では 2 つの追加信号が必要です。 これらの信号はこのボード上では High に接続されているこ とがあ り、 7 シ リーズ FPGA のコンフ ィギュレーシ ョ ン レイアウ トでは FPGA に接続されません。 (D[03:02] を SPI フラ ッシュに接続する ) これらの追加信号、 ならびにマスター SPI x4 コンフ ィギュレーシ ョ ンに必要な残りの接続を図 6 に示します。 表 3 では、 SPI コンフ ィギュレーシ ョ ン特有のこれらの信号について説明します。

X-Ref Target - Figure 6

図 6 : マスター SPI x4 コンフ ィギュレーシ ョ ンのインターフェイス

Page 9: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  9

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

POR_OVERRIDE N/A

入力

(専用)

パワーオン リセッ ト遅延の無効化

x4 コンフ ィギュレーシ ョンでは、通常は GND 接続を推奨します。 このオプシ ョ ンによって短縮される 時 間 は、 UltraScaleFPGA のコ ンフ ィ ギ ュレーシ ョ ンに必要な合計時間に対して短いものです。

TPOR (電源投入から INIT_B の立ち上がり まで) をデータシートに記載された値まで短縮します。 [参照 5][参照 6]。TPOR を短縮する必要がある場合は、 このピンを VCCINT に直接接続します (ただしコンフ ィギュレーシ ョ ン データ ソースの電源投入タ イ ミ ングが短縮した遅延時間をサポー ト している必要がある )。標準の POR 遅延でよければ、 GNDに接続します。

注意 : コ ンフ ィ ギュ レーシ ョ ン

前およびコンフ ィ ギュレーシ ョ

ン中は、このピンをフロートにし

ないでください。必ず VCCINT または GND に接続して く ださい。

VCCO_0 には接続しないで く だ

さい。

VBATT N/A

N/A

(電源電圧)

バッ クアップ バッテ リの電源電圧

揮発性のキー メモ リ領域に格納されている復号化キーを使用する必要がない場合は、 GND またはVCCAUX に接続して く ださ い。 こ の ア プ リ ケ ーシ ョ ンでは暗号化を扱わないため、図 6 では VBATTを GND に接続しています。

AES 復号化キーを格納する、 FPGAの内部揮発性メモ リ のバッ クアップ バッテ リの電源です。。ビッ ト スト リームを暗号化した場合、 FPGAの電源がオフの間、復号化キーを格納した揮発性メモ リ の内容を保持するためにこのピンをバッ クアップ バッテ リに接続する必要があ ります。

M[2:0] 0

入力

(専用)

コンフ ィ ギュレーシ ョン モード

マスター SPI コンフ ィギュレーシ ョ ンの場合は、1k (またはよ り強い) 抵抗を GND または VCCO_0に接続して 001 に設定します。

コンフ ィギュレーシ ョ ン モードを指定します。各モード ピンを直接、または 1kの抵抗を介して VCCO_0 または GND に接続します。

TCK 0

入力

(専用)

IEEE Standard for Test Access Port and Boundary-Scan Architecture (IEEE Std 1149.1) (JTAG) テス ト ク ロ ッ ク

JTAG ケーブル ヘッダーに接続して 10k 抵抗にプルアップします。SPI フラ ッシュの Vivado ツール間接プログラムで必須です。

JTAG チェーン上のすべてのデバイスに対するクロ ッ クです。ザイ リン ク ス ケーブル ヘッダーの TCKピンに接続します。ク リ ティカルなクロ ッ ク信号であるため、複数のデバイスを JTAG チェーンで接続する場合は、 必要に応じてケーブルヘッダーのこの信号をバッ ファーし て く だ さい。 TCK 信号をバッファーする場合は、バッファー入力を外部の弱いプルアップ抵抗 (たとえば、10k) に接続し、ケーブルを接続していない場合も有効な Highを維持するよ うにします。

Page 10: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  10

TMS 0

入力

(専用)

JTAG テス ト モード セレク ト

JTAG ケーブル ヘッダーに接続して 10k 抵抗にプルアップします。SPI フラ ッシュの Vivado ツール間接プログラムで必須です。

JTAG チェーン上のすべてのデバイスに対するモード セレク ト信号です。 ザイ リ ンクス ケーブル ヘッダーの TMS ピンに接続します。 複数のデバイスを JTAG チェーンで接続する場合は、必要に応じてケーブル ヘッ ダーのこの信号をバッファーして ください。 TMS 信号をバッファーする場合は、バッファー入力を外部の弱いプルアップ抵抗 (たとえば、10k) に接続して、ケーブルを接続していない場合も有効な High を維持するよ うにします。

TDI 0

入力

(専用)

JTAG テス ト データ入力

JTAG ケーブル ヘッダーに接続して 10k 抵抗にプルアップします。SPI フラ ッシュの Vivado ツール間接プログラムで必須です。

JTAG チェーンのシ リ アル データ入力です。デバイスが 1 つしかない場合、または JTAG チェーンの 初のデバイスの場合は、ザイ リ ンクスケーブル ヘッダーの TDI ピンに接続します。 それ以外の場合 (FPGAが JTAG チェーンの 初のデバイスでない場合) は、 JTAG スキャンチェーンの上位 JTAG デバイスのTDO ピンに接続して ください。

TDO 0

出力

(専用)

JTAG テス ト データ出力

JTAG ケーブル ヘッダーに接続します。 SPI フラ ッシュの Vivado ツール間接プログラムで必須です。

JTAG チェーンのシ リ アル データ出力です。デバイスが 1 つしかない場合、または JTAG チェーンの 後のデバイスの場合は、ザイ リ ンクスケーブル ヘッダーの TDO ピンに接続します。それ以外の場合 (JTAGチェーンの 後の FPGA デバイスでない場合) は、 JTAG スキ ャ ンチェーンの下位 JTAG デバイスのTDI ピンに接続してください。

PROGRAM_B 0

入力

(専用)

プログラム (負論理) 4.7k 以下の抵抗を介して VCCO_0 にプルア ッ プし ます。 通常はオープンのプッシュボタンを GNDに接続してコンフ ィ ギュレーシ ョ ンの手動リ セット を有効にし、 コンフ ィギュレーシ ョ ンに使用する と きに役立つよ う にします。

コンフ ィギュレーシ ョ ン ロジッ クに対する、 ア ク テ ィ ブ Low の リセッ ト信号です。 この信号を Lowにする と FPGA コンフ ィギュレーシ ョ ンがク リ アされ、 新しいコンフ ィギュレーシ ョ ン シーケンスが開始します。コンフ ィギュレーシ ョンの リ セッ ト は立ち下が りエッジで始ま り、コンフ ィギュレーシ ョ ン(すなわちプログラム) シーケンスが次の立ち上が りエッジで始ま ります。 安定した High 入力とするため、4.7k 以下の外付けプルアップ抵抗を介して VCCO_0 に接続してください。

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン  (続き)

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

Page 11: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  11

INIT_B 0

双方向、 オープンドレイン

(専用)

初期化 (負論理) 4.7k の抵抗を介して VCCO_0 に接続します。KCU105 ボードに使用しているよ うな 2 色 LED を追加する と、 DONE ピンと共にコンフ ィ ギュレーシ ョ ン ステータスを視覚的にすばやく確認できます。 LED は必須ではあ りませんが、 追加しない場合は、 コンフ ィ ギュレーシ ョ ンに使用する と きにこのピンを容易にプローブできる よ う にして ください。

アクティブ Low の FPGA 初期化ピンまたはコンフ ィ ギュレーシ ョ ンエラー信号です。FPGA がコンフ ィギュレーシ ョ ン リ セッ ト状態にある場合や、コンフ ィギュレーシ ョ ンメ モ リ を初期化 ( ク リ ア) 中の場合、またはコンフ ィギュレーシ ョ ンエラーを検出した場合に、このピンを Low に駆動します。VCCINT が電源 が 供 給 さ れ て い な い 場 合、INIT_B は Low に駆動し ません。FPGA の初期化プロセスが完了する と、 INIT_B はハイ インピーダンス とな り ます。 この時点で INIT_Bが High になるよ うに外部プルアップ抵抗を接続してください。電源投入時に INIT_B を外部から Low に保持する と、初期化プロセスが完了した後も コンフ ィ ギュレーシ ョ ンシーケンスの開始を遅らせる こ とができます。 初期化プロセス完了後、INIT_B 入力で High が検出される と FPGA は M[2:0] ピンの設定に従って残 り の コ ン フ ィ ギ ュ レーシ ョ ン シーケンスを実行し ます。コンフ ィギュレーシ ョ ン完了後は、FPGA がコンフ ィ ギュ レーシ ョ ンエラーを検出したかど う かを示す目的で INIT_B をオプシ ョ ンで使用できます。4.7k のプルアップ抵抗を介して VCCO_0 に接続し、Lowから High へ確実に遷移するよ うにしてください。

DONE 0

双方向

(専用)

コンフ ィギュレーシ ョン完了

アクテ ィブなプルアップまたはプルダウンしないでください。

DONE がアサー ト されると導通する LED を追加するか、 容易にアクセス可能なテス ト ポイン ト を追加 し て、 コ ン フ ィ ギ ュレーシ ョ ンに使用する とき に役立つ よ う に し ます。

DONE ピンが High になる と、 コンフ ィギュレーシ ョ ン シーケンスが完了したこ とを表します。デフォルト では、 DONE 出力はオープン ドレ インです。 DONE にはデフォルト で約 10k の内部プルアップ抵抗があ り ます。外付け抵抗回路は必須ではあ り ません。使用する場合は4.7 の抵抗を推奨します。

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン  (続き)

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

Page 12: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  12

CCLK 0

入力または出力

(専用)

コンフ ィギュレーシ ョン ク ロ ッ ク

SPI コンフ ィギュレーシ ョ ンで必須です。FPGA から SPI フ ラ ッシュまでのこの接続上で信号品質が低いと、 コンフ ィ ギュレーシ ョ ン速度に悪影響を及ぼすか、 正常な コ ン フ ィ ギ ュ レーシ ョ ンが妨げられる こ とがあ り ます。 ザイ リ ン クスは、 SPI フ ラ ッ シュ をFPGA 近 く に配置し て、データ ピンと極めて近い長さに整合させる こ と を推奨しています。また、この信号は コ ン フ ィ ギ ュレーシ ョ ンに使用する ときに、 フラ ッシュ デバイスの近くでプローブできる よ う にする こ と を推奨します。

デフォル ト では、 FPGA コンフ ィギュレーシ ョ ン シーケンスが同期で実行されます。FPGA がコンフ ィギュレーシ ョ ン ク ロ ッ ク ソース とな り、CCLK を出力と して駆動します。CCLK はク リティカルなクロ ック信号のため、 シグナル インテグリティが重要です。

PUDC_B 0

入力

(専用)

コンフ ィギュレーシ ョン中のプルアップ (負論理)

コンフ ィ ギュレーシ ョ ン中の SelectIO™ イ ン ターフェイス ピンのステート要件に従って、直接または1k以下の抵抗を介してVCCO_0 あるいは GND に接続します。

このアクティブ Low 入力は、 電源投入後およびコ ン フ ィ ギ ュ レーシ ョ ン時に SelectIO インターフェイス ピンの内部プルアップ抵抗を有効にします。 Low にする と、 各SelectIO インターフェ イス ピンの内部プルアップ抵抗が有効にな ります。 High にする と、 各 SelectIOインターフェイス ピンの内部プルア ッ プ抵抗が無効にな り ま す。PUDC_B は直接、 または 1k 以下の抵抗を介して VCCO_0 あるいはGND に接続してください。

RDWR_FCS_B 0

出力

(専用)

アクティブ Low のフラ ッシュ チップ セレクト (FCS_B)

SPI コンフ ィギュレーシ ョ ンで必須です。 SPI フラ ッシュ チップ セレク トピンに接続して、4.7k 以下の抵抗を介 し てプルアップし ます。 コンフ ィギュレーシ ョ ンに使用する と きに容易にプローブできるポイン ト がある ことを確認してください。

コンフ ィ ギュレーシ ョ ンで使用する SPI フラ ッシュ デバイスを有効化するアクティブ Low のチップ セレク ト出力です。 フラ ッシュ デバイスのチップ セレク ト入力に接続する と共に、4.7k 以下の外付けプルアップ抵抗 (2.4k を推奨) を介して VCCO_0 にも接続します。

D00_MOSI 0

双方向

(専用)

SPI x1 シ リ アル データ出力、 SPI x2/x4/x8 データ ピン 0 (D00_MOSI)

SPI コンフ ィギュレーシ ョ ンで必須です。 SPI フラ ッシュのシ リアル データ入力 (DQ0/D/SI/IO0) ピンに接続します。コンフ ィ ギュレーシ ョ ンに使用する と きに容易にプローブできるポイン ト がある こ と を確認して ください。

すべての SPI 幅を対象に SPI ( スレーブ) フラ ッシュ デバイスにコマン ド を送信する ための出力です。 SPI コマン ドおよびア ド レスは、 コンフ ィ ギュレーシ ョ ン中は常にこのピンを介してスレーブにx1 幅で送信されます。 x2、 x4、 および x8 幅では、 これは 下位データ ビッ ト と して使用される多目的ピンです。

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン  (続き)

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

Page 13: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  13

D01_DIN 0

入力

(専用)

SPI x1 シ リ アル データ入力 (DIN)、SPI x2/x4/x8データ ピン 1 (D01)

SPI コンフ ィギュレーシ ョ ンで必須です。SPI フラ ッシュのシ リ アル データ出力 (DQ1/Q/SO/IO1) ピンに接続し ます。コンフ ィ ギュレーシ ョ ンに容易に使用する と きにプローブでき るポイン トがある こ と を確認して ください。

x1 モードでは、 スレーブからシ リアル データを受信するデータ入力です。 x2、 x4、 および x8 モードでデータ入力ビッ ト 1 です。デフォルトでは、DIN からのデータが CCLKの立ち上が りエッジでキャプチャされます。

D02 0

入力

(専用)

SPI x4/x8 のデータ ビッ ト 2

必須ではあ り ませんが、非常に推奨されています。 4.7k の抵抗を介して VCCO_0 にプルアップします。 これを SPI フラ ッシュのデータ ビッ ト 2 ピン (DQ2/W#/WP#/IO2) に接続します。

x4 および x8 モードで SPI データを受信するデータ入力です。このピンは一般に SPI フラ ッシュ デバイスの書き込み禁止ピン と して使用されるため、x4 または x8 モードで動作しない場合は、プルアップして正しい SPI 機能を確保して ください。

D03 0

入力

(専用)

SPI x4/x8 のデータ ビッ ト 3

必須ではあ り ませんが、大いに推奨します。4.7kの抵抗を介し て VCCO_0にプルアップします。 SPIフラ ッシュのクワッ ドデータ ビッ ト 3 出力 (DQ3/HOLD#/IO3) ピンに接続します。

x4 および x8 モードで SPI データを受信するデータ入力です。このピンは一般に SPI フラ ッシュ デバイスのホールドまたはリセッ ト ピンとして使用されるため、 x4 または x8モードで動作しない場合は、 プルアップして正しい SPI 機能を確保してください。

CFGBVS 0

入力

(専用)

コンフ ィ ギュレーシ ョン バンク電圧の選択

こ のアプ リ ケーシ ョ ンノー ト と 同様に 1.8V のSPI フ ラ ッ シュを使用する場合は、 GND に直接接続します。

コンフ ィ ギュレーシ ョ ン専用バンク 0、 およびバンク 65 のコンフ ィギュレーシ ョ ン ピンについて I/O電圧の動作範囲と電圧の許容範囲を決定します。 CFGBVS は、 すべての UltraScale FPGA で常に専用バンク 0 の動作電圧を選択し、 コンフ ィ ギュレーシ ョ ン中は多目的バンク 65 の動作電圧を選択します。CFGBVS はバン ク電圧の要件に従って High または Low に接続してください。バンク 0 の VCCO_0 電源が 2.5V または 3.3V の場合は、このピンを High (つま り VCCO_0) に接続する必要があ り ます。バンク 0の VCCO_0 が 1.8V 以下の場合にのみ、 Low (つま りGND) に接続します。 バンク 65 をコンフ ィギュレーシ ョ ンで使用する場合、電圧はバンク 0 と同じにする必要があ り ます。

注意 : デバイ スの損傷を防ぐた

め、 このピンは必ず VCCO_0 また

は GND のいずれかに正し く接続

してください。

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン  (続き)

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

Page 14: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン用のボード  レイアウト

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  14

EMCCLK 65

入力

(多機能)

外部マスター コンフ ィギュレーシ ョ ン ク ロ ッ ク

コンフ ィ ギュレーシ ョ ンク ロ ッ クの 高速度が必要な場合は推奨し ます。詳細は、 「コ ン フ ィ ギ ュレーシ ョ ン ク ロ ッ クの大周波数」 を参照して ください。 そ うでない場合、こ のアプ リ ケーシ ョ ンノー ト での場合と同様にこの入力は未接続のままでかまいません。

マス ター モード で内部コ ンフ ィギュレーシ ョ ン オシレーターの代わりにコンフ ィギュレーシ ョ ン ロジッ クのク ロ ッ ク ソース となるオプシ ョ ンの外部クロ ッ ク入力です。FPGA は内部コ ン フ ィ ギ ュ レーシ ョ ン エンジンを駆動する ク ロ ック ソース と し て、 内部オシレーターの代わ り に EMCCLK に切 り替える こ とができます。 EMCCLKの周波数はビッ ト ス ト リーム設定で分周でき、 マスター CCLK 信号と して出力できます。

表 3 :  マスター SPI x4 コンフ ィギュレーシ ョ ン  ピン  (続き)

ピン名バンク/方向 (タイプ)

コンフ ィギュレーシ ョ ン機能

SPIx4 の推奨事項 説明

Page 15: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン  ファイル

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  15

マスター SPI コンフ ィギュレーシ ョ ン  ファイルこのセクシ ョ ンでは、UltraScale FPGA マスター SPI コンフ ィギュレーシ ョ ンに使用するさまざまなコンフ ィギュレーシ ョン ファ イルの概要を説明し、 これらのファイルの生成に利用するツールについてまとめています。 ファ イルの作成手順については、 以降のセクシ ョ ンで説明します。

SPI x4 プログラ ミング ファイル

UltraScale FPGA Bitstream (.bit)

FPGA コンフ ィギュレーシ ョ ンに使用されるデフォルトのバイナリ ビッ ト ス ト リームです。 このビッ ト ス ト リームには、メ タデータを含むヘッダーがあ り ます。 メ タデータは、ビッ ト ス ト リームを用いた作業時にツールによって使用されます。JTAG を介して FPGA をコンフ ィギュレーシ ョ ンする場合、 この情報は Vivado ツールで削除されます。

UltraScale FPGA Bitstream (.bin)

FPGA ビッ ト ス ト リームのバージ ョ ンの 1 つで、 コンフ ィギュレーシ ョ ン データのみが含まれており、 .bit ファ イルに存在する メ タデータは削除されています。 このファイルを使用するこ とによ り、 x1、 x2、および x4 幅の SPI フラ ッシュをVivado ツールでプログラムできます。

UltraScale FPGA Intel HEX (.mcs)

16 進数表記のプログラ ミ ング ビッ ト ス ト リームを含む ASCII テキス ト ファ イル形式で、 アドレス指定情報とデータ サイズ情報が追加されています。 MCS はマスター SPI x8 および BPI プログラムでは 必須ですが、 SPI x1、 x2、 および x4 ではオプシ ョ ンであ り、 このアプリ ケーシ ョ ン ノートでは説明対象外です。 必要な場合は write_cfgmem Tcl コマンドを使用して生成できます。 詳細は、 Vivado ツールの Tcl コンソールで次のコマンドを実行してください。

write_cfgmem -help

マスター SPI コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成する前に、 SPI コンフ ィギュレーシ ョ ン固有のいくつかのプロパティを有効にする必要があ り ます。 これらの設定には、 次が含まれます。

BITSTREAM.CONFIG.CONFIGRATEBITSTREAM.CONFIG.SPI_32BIT_ADDRBITSTREAM.CONFIG.SPI_BUSWIDTHBITSTREAM.CONFIG.SPI_FALL_EDGECONFIG_VOLTAGECFGBVSBITSTREAM.GENERAL.COMPRESSBITSTREAM.CONFIG.EXTMASTERCCLK_EN

Page 16: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン  ファイル

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  16

BITSTREAM.CONFIG.CONFIGRATE

(Configuration rate (MHz) : 3、 6、 9、 12、 22、 33、 ...)

マスター モードのコンフ ィギュレーシ ョ ンで EMCCLK を有効にしていない場合は、 CCLK の公称周波数を設定します。可能な値のリ ス ト を取得するには、Vivado ツールでターゲッ ト FPGA の合成済みデザインまたはインプリ メン ト済みデザインを開いて、 次のコマンドを実行します。

list_property_value BITSTREAM.CONFIG.CONFIGRATE [current_design]

推奨設定 : 33

注記 : このアプリ ケーシ ョ ン ノートでは、一般的に安全なコンフ ィギュレーシ ョ ン レート と して 33 を選択します。SPI レイアウ ト を適切に考慮したほとんどのデザインは、はるかに高いコンフ ィギュレーシ ョ ン レートで実行できます。 大許容コンフ ィギュレーシ ョ ン レートの計算方法については、 「コンフ ィギュレーシ ョ ン ク ロ ッ クの 大周波数」 を参照してください。 CCLK ラインにシグナル インテグ リティの問題がある と、 小周波数の場合でもエラーが発生する可能性があるこ とにも注意してください。 たとえば、 CCLK の配線が SPI フラ ッシュの C ピンでの反射につながる場合には、 二重クロ ッ クが生じるこ とがあ り ます。

BITSTREAM.CONFIG.SPI_32BIT_ADDR

(Enable SPI 32-bit address style : NO、 YES)

SPI コンフ ィギュレーシ ョ ン ロジッ クに命令して、表 2 に示す 4 バイ トのアドレス指定コマンドを発行します。SPI フラ ッシュの集積度が 256Mb 以上の場合は YES に設定します。

推奨設定 :

• フラ ッシュの集積度が 128Mb を超える場合は YES

• 集積度が 128Mb 以下の場合は NO

BITSTREAM.CONFIG.SPI_BUSWIDTH

(Bus width : None、 1、 2、 4、 8)

SPI データを SPI フラ ッシュから読み出すと きのデータ幅を設定します。 UltraScale FPGA SPI コンフ ィギュレーシ ョ ンの場合は、 このアプリ ケーシ ョ ン ノートで推奨しているよ うに 4 に設定します。 コンフ ィギュレーシ ョ ンに使用する際は 1 に設定するのと便利です。

推奨設定 : 4

BITSTREAM.CONFIG.SPI_FALL_EDGE

(Enables the FPGA to use a falling edge clock for the SPI data capture : NO、 YES)

SPI フラ ッシュ デバイスは、 立ち下がりエッジでデータを出力します。 通常、 FPGA は CCLK の立ち上がりエッジでこのデータにクロ ッ クを供給します。 これを YES に設定する と、読み出しデータが次のエッジでクロ ッ ク供給の対象になるためにタイ ミ ング マージンが向上して、 よ り高速の CCLK レートが可能になり ます。

推奨設定 : Yes

CONFIG_VOLTAGE

(Configuration voltage : 1.5、 1.8、 2.5、 3.3)

コンフ ィ ギュ レーシ ョ ンに使用する電圧をツールに通知し ます。 コンフ ィ ギュ レーシ ョ ン バン ク (バン ク 0 およびEMCCLK を使用する場合はバンク 65) で使用する電圧をこの値に設定します。 このアプ リ ケーシ ョ ン ノートでは 1.8V の電圧を想定しているため 1.8 に設定します。

推奨設定 : ターゲッ ト ボードでのコンフ ィギュレーシ ョ ン電圧と一致する必要があ り ます。

Page 17: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン  ファイル

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  17

CFGBVS

(Configuration bank voltage selection : GND、 VCCO)

CFGBVS ピンを駆動する電圧をツールに通知します。このアプ リ ケーシ ョ ン ノート と同様に 1.8V を使用し、かつバンク 65も 1.8V の場合、 またはバンクからのコンフ ィギュレーシ ョ ン ピン (EMCCLK など) をまったく使用しない場合は、 これをGND に設定できます。詳細は、『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] の「コンフ ィギュレーシ ョ ン バンク電圧の選択」 を参照してください。

推奨設定 : CFGBVS ピンでの実際の接続と一致させる必要があ り ます。

BITSTREAM.GENERAL.COMPRESS

(Enable bitstream compression : TRUE、 FALSE)

コンフ ィギュレーシ ョ ン中に FPGA によって解凍できるやり方で生成済みのビッ ト ス ト リームを圧縮するよ う ツールに通知します。 ザイ リ ンクスでは、 これを有効にしてコンフ ィギュレーシ ョ ン時間と SPI のプログラム時間を短縮するこ とを推奨します。ただし、必要な格納容量を計算する場合は、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リーム サイズに依存しないよ うにして ください。 小さなデザイン変更によって圧縮率が大き く変わるこ とがあ り ます。 必要な格納容量を計算する場合は、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) の 「UltraScale FPGA のビッ ト ス トリーム長」 の表を参照して ください。

推奨設定 : Yes

BITSTREAM.CONFIG.EXTMASTERCCLK_EN

(Enable external configuration clock and set divide value : DISABLE、 DIV-1、 DIV-2、 DIV-3、 DIV-4、 ...)

コンフ ィギュレーシ ョ ンに命令して、 コンフ ィギュレーシ ョ ン プロセスの早期に EMCCLK ピンを CCLK のソースと して使用するよ う切り替えます。 これによ り、 かな り高いコンフ ィギュレーシ ョ ン レート を有効にできますが、 EMCCLK ピンをバンク 65 から使用するこ とが必要です。 コンフ ィギュレーシ ョ ン レートの向上については、 「コンフ ィギュレーシ ョン時間」 および 「コンフ ィギュレーシ ョ ン ク ロ ッ クの 大周波数」 を参照して ください。 追加の DIV 値を使用できます。ターゲッ トにする FPGA の全リ ス ト を取得するには、Vivado ツールでターゲッ ト FPGA の合成済みデザインまたはインプリ メン ト済みデザインを開いて、 次のコマンドを実行します。

list_property_value BITSTREAM.CONFIG.EXTMASTERCCLK_EN [current_design]

推奨設定 : 可能な 高速のコンフ ィギュレーシ ョ ン レートが必要な場合は DIV-1 (または該当する分周値)、 そ うでない場合は DISABLE。

これらのプロパティはデザイン上の制約で設定されます。 これらは XDC 制約ファイルで設定するか、 Tcl コマンドを使用して実行時に指定できます。 Vivado IDE では、 [Bitstream Settings] での選択に基づいて、 制約が自動的に設定されます。 推奨方法は、 次に示す推奨制約をデザイン制約ファイルに追加し、 制約ファイルを介して設定を追加する方法です。

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]set_property CONFIG_VOLTAGE 1.8 [current_design]set_property CFGBVS GND [current_design]set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design]

Page 18: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン  ファイル

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  18

ビッ トス ト リームの生成 : Vivado Design Suite IDE の例

Vivado ツール デザインでプロジェ ク ト モードに基づいて次の IDE フローを使用し、 マスター SPI x4 コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成します。

1. 「SPI x4 プログラ ミ ング ファ イル」 からデザインの制約ファイルに推奨の制約を追加します。 この手順は、 理想的には合成およびインプリ メンテーシ ョ ンの前に実行します。 合成およびインプリ メンテーシ ョ ンの後に制約を追加すると、 これらの run は、 制約ファ イルの保存時に期限切れとマーク されます。 変更された制約 (またはデザイン ファ イル) がほかにない場合は、 「SPI コンフ ィギュレーシ ョ ンの生成に関する制約 : IDE フロー」 で説明したよ うに、 [ForceUp-to-Date] オプシ ョ ンを使用して run を安全に 新状態に変更するよ う強制できます。

2. 図 7 に示すよ うに、 Flow Navigator で [Program and Debug] の [Bitstream Settings] をク リ ッ ク します。

3. [Project Settings] ダイアログ ボッ クスで、 -bin_file を選択します。 これによ り、 write_bitstream コマンドが命令され、SPI フラ ッシュをプログラムするためのヘッダーのないビッ ト ス ト リームが生成されます。 [OK] をク リ ッ ク して、 この変更を確定します。

4. Flow Navigator で、 [Program and Debug] の下にある [Generate Bitstream] をク リ ッ クするか、 [Flow] → [Generate Bitstream] をク リ ッ ク します。

X-Ref Target - Figure 7

図 7 : Flow Navigator

Page 19: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

マスター SPI コンフ ィギュレーシ ョ ン  ファイル

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  19

これによ り、 [Generate Bitstream] フローが起動します。完了後、 エラーが検出されなかった場合、 SPI のプログラムに使用できるビッ ト ス ト リームは次の場所にあ り ます。

<Project_Dir>\<Project_Name>.runs\impl_1\

以前に -bin_file オプシ ョ ンを選択していたため、 ビッ ト ス ト リームは標準の .bit ファ イルのほかに .bin 拡張子の付いた BIN ファイルと して生成されました。 .bin ファ イルは、 「SPI プログラ ミ ング ファ イルの生成」 で SPI フラ ッシュをプログラムするために使用します。

ビッ トス ト リームの生成 : Vivado ツール Tcl バッチ ファイルの例

前のセクシ ョ ンで説明した IDE フローの代替手段と して、プロジェク ト以外の Vivado ツール フローで使用できる Tcl バッチ ファ イルをこ こに示します。 このフローを正常に実行するには、事前にチェッ クポイン ト を作成しておく必要があ り ます。 次のスク リプ トでは、 スク リプ トの実行元である現在のディ レク ト リのサブディ レク ト リにチェッ クポイン トが保存される と しています。

## Non-project Tcl flow to generate a BIN file used for SPI flash# programming# NOTE: write_checkpoint must have been run prior to running this scriptopen_checkpoint {post_route.dcp}set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design]set_property CONFIG_VOLTAGE 1.8 [current_design]set_property CFGBVS GND [current_design]set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

X-Ref Target - Figure 8

図 8 : Flow Navigator

Page 20: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI プログラ ミング ファイルの生成

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  20

set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design]write_bitstream -verbose -force -bin_file spi_programming.bit

SPI プログラ ミング ファイルの生成Vivado Design Suite をオプシ ョ ンで使用して、 SPI フラ ッシュをプログラムするための MCS ファ イルを生成できます。 SPIx8 では 2 つの異なるプログラム ファ イルが必要なのでこれは必須です。 ただし、 SPI x1、 x2、 または x4 では MCS ファ イルは必ずしも必要ではないため、 このアプリ ケーシ ョ ン ノートでは、 前のセクシ ョ ンで作成した .bin ファ イルを使用して SPI フラ ッシュをプログラムします。

SPI フラッシュのプログラムVivado Design Suite は、 SPI コン ト ローラーを内蔵しているターゲッ ト FPGA に間接プログラム ビッ ト ス ト リームをダウンロード して、FPGA に接続している SPI フラ ッシュをプログラムできます。Vivado ツールは JTAG ケーブルを介して SPIコン ト ローラーと通信して、プログラ ミ ング ファ イルを SPI フラ ッシュに転送します。 このインシステム プログラム機能によ り、 プロ ト タイプ段階における反復作業を要するデザインのテス トやデバッグを可能にしますが、 量産品のプログラムを目的と したものではあ り ません。量産品のプログラムには、 BPM Microsystems 社または Data I/O 社が提供するプログラ ミ ング ソ リ ューシ ョ ンを使用してください。

SPI フラッシュのプログラム : Vivado Design Suite IDE の例

Vivado IDE による SPI フラ ッシュのプログラムは、 前述したビッ ト ス ト リーム生成フローの一部と して実行するか、 プロジェク ト を開かずに実行するこ とができます。 Vivado ツールにインプリ メン ト済みのデザインが現在読み込まれていない場合、 Vivado ツールはハード ウェア マネージャー フローで開く こ とができます。 プロジェク ト を開かずにハード ウェアマネージャー フローで直接開いた場合は、 Flow Navigator が表示されませんが、 それ以外は次の手順となり ます。

1. ボードが接続されていて、プログラム ケーブルが接続されているこ とを確認します。ターゲッ ト ボードの電源をオンにします。

Page 21: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI フラ ッシュのプログラム

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  21

2. 図 9 に示すよ うに、 [Program and Debug] の下にある [Open Hardware Manager] をク リ ッ ク して、Vivado ツールのハードウェア マネージャーを開きます。 または、 [Flow] → [Open Hardware Manager] をク リ ッ ク します。

X-Ref Target - Figure 9

図 9 : [Open Hardware Manager] の選択

Page 22: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI フラ ッシュのプログラム

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  22

3. 図 10 に示すよ うに、 [Hardware Manager] の [Open target] リ ンクをク リ ッ ク し、 [Auto Connect] をク リ ッ ク して、ハードウェア ターゲッ ト を開いて接続します。

注記 : Vivado Design Suite を実行しているワークステーシ ョ ンにターゲッ トの UltraScale FPGA を接続していて、 ケーブルが適切に接続され、 ボードに電源が供給されている場合、 この手順を実行する と ターゲッ トに自動的に接続されます。 hw_server を実行していて、 プログラ ミ ング ケーブルを介してターゲッ ト ボードに物理的に接続されている別のワークステーシ ョ ンにリモート接続するこ と も可能です。 このフローが必要な場合または自動接続がエラーになる場合、 詳細は 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参照 7] の 「新しいハードウェア ターゲッ ト を開く」 を参照してください。

4. 図 11 に示すよ うに、 [Hardware Manager] でターゲッ ト FPGA を右ク リ ッ ク して [Add Configuration Memory Device] ダイアログを起動します。

X-Ref Target - Figure 10

図 10 : [Hardware Manager]

X-Ref Target - Figure 11

図 11 : [Add Configuration Memory Device]

Page 23: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI フラ ッシュのプログラム

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  23

5. [Add Configuration Memory Device] ダイアログ ボッ クスで、 リ ス トから適切な SPI フラ ッシュを選択します。 図 12 に示すよ うに、 フ ィルター オプシ ョ ンと検索フ ィールドの両方を使用する と、 検索を大幅に簡略化して、 オプシ ョ ンを絞り込むこ とができます。 [OK] をク リ ッ ク します。

注記 : SPI の幅が x1、 x2、 または x4 の場合は、 末尾が 「-x1_x2_x4」 (または 「-x1」 や 「-x1_x2」 の場合もあ り ) で、 末尾が 「-x1_x2_x4_x8」 ではない SPI フラ ッシュ デバイスを使用します。 後者はマスター SPI x8 コンフ ィギュレーシ ョン モードの場合専用です。

6. 次に表示される [Add Configuration Memory Device Completed] ダイアログ ボッ クスで [OK] をク リ ッ ク し、 この段階でコンフ ィギュレーシ ョ ン メモ リ デバイスをプログラムします。

7. [Program Configuration Memory Device] ダイアログ ボッ クスで、[Configuration file] の右にある参照ボタンをク リ ッ ク して、 以前作成した .bin ファ イルを選択します。 デフォル トでは、 .bin ファ イルは次のサブディ レク ト リ内にあるimpl_1 プロジェク ト ディ レク ト リにあ り ます。

<Project_Dir>\<Project_Name>.runs\impl_1\

注記 : このアプリ ケーシ ョ ン ノートでは、Vivado ツールのプロジェク ト サブディレク ト リの場所を <Project_Dir>、プロジェク ト名を <Project_Name> と表記します。

8. ボードで必要な場合は、 [State of non-config mem I/O pins] を変更します。 これによ り、 プログラ ミ ング ビッ ト ス ト リームを読み込んでいる と きにコンフ ィギュレーシ ョ ン ピンの内部終端が指定されます。 このオプシ ョ ンは、 SPI フラ ッシュのプログラムに適切な BITSTREAM.CONFIG.UNUSEDPIN 設定を持つプログラ ミ ング ファ イルを使用するよ うVivado ツールに命令します。 たとえば、 ボードの電源投入時にはプルアップしてはならない非コンフ ィギュレーシ ョン ピンにペリ フェラルを接続しているボードの場合 (かつ、 通常のデザインではこれらの信号のプルダウンがあるか、これらのピンを常に能動的に駆動している場合) は、 [Pull-down] を選択できます。 これによ り、一時的なプログラ ミ ング ビッ ト ス ト リームには、 すべての SelectIO インターフェイス ピンに内部プルダウンが付きます。

X-Ref Target - Figure 12

図 12 : [Add Configuration Memory Device]

Page 24: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI フラ ッシュのプログラム

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  24

9. デザイン要件に応じて [Program Operations] を設定し、 終了したら [OK] をク リ ッ ク します (図 13)。

° [Address Range] : セクターを過不足なく消去して対象範囲をプログラ ミ ング ファ イルのサイズ ([Configuration FileOnly]) にするか、 SPI フラ ッシュ デバイス全体 ([Entire Configuration Memory Device]) にするかを指定します。

° [Erase] : [Address Range] で示されている とおりにセクターまたはデバイス全体を消去します。

° [Blank Check] : [Address Range] で示されるセクターが空白であるかど うかをチェッ ク します。

° [Program] : [Configuration file] のファイルを使用して SPI デバイスをプログラムします。

° [Verify] : プログラム内容を リードバッ ク、 [Configuration file] のファイルと一致するこ とを検証します。

プログラムは [OK] をク リ ッ クする とすぐに始ま り ます。 [Programming Configuration Memory Device] ダイアログ ボッ クスの内容が読み込まれ、 [Program Operations] で選択したさまざまなプログラム動作の進捗が表示されます。 消去時間は SPIフラ ッシュの既存の内容に応じて大き く変動する可能性があるため、 消去動作のステータスは予測されません。 プログラミ ングは低速プロセスであ り、いくつかの要因によって完了するまで多少時間がかかり ます。予測については、「プログラム時間」 を参照して ください。

X-Ref Target - Figure 13

図 13 : [Program Configuration Memory Device]

Page 25: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

SPI フラ ッシュのプログラム

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  25

SPI フラッシュのプログラム : Vivado ツール Tcl バッチ ファイルの例前のセクシ ョ ンで説明した IDE フローの代替手段と して、 非プロジェク トの Vivado ツール フローと組み合わせて使用できる Tcl バッチ ファ イルをこ こに示します。 このフローを正常に実行するには、 事前に.bin ファ イルを作成しておく必要があ り ます。次の Tcl スク リプ ト を program_spi.tcl と して保存するか、Vivado ツールでソースを記述する と きに必要に応じて命令を調整します。

# Simple Vivado script to program a SPI flash## The board should be connected via a programming cable and powered prior to# running.The programming file is specified by the variable# "programming_files" in this example## Run this script from a Vivado command prompt:# vivado -mode batch -source program_spi.tcl

open_hwconnect_hw_server -url localhost:3121current_hw_target [get_hw_targets]open_hw_target

# Set the current Xilinx FPGA device.If more than one FPGA is in the JTAG# chain, you may need to use the get_hw_devices command to help set the proper# one with the current_hw_target command current_hw_device [lindex [get_hw_devices] 0]

# Set my_mem_device variable for the SPI flash device get_cfgmem_parts can be# used to find the supported flash.See "help get_cfgmem_parts" in the Vivado# Tcl Console when in the Hardware Manager for options which can help narrow# the search.UG908 also lists supported SPI flash devices.Be sure to use the# parts ending with _x1_x2_x4 for width x1, x2, and x4 and parts ending with# _x1_x2_x4_x8 for Dual Quad SPI (x8 width).set my_mem_device [lindex [get_cfgmem_parts {n25q256-1.8v-spi-x1_x2_x4}] 0]

# Set a variable to point the to BIN file to programset programming_files {top.bin}

# Create a hardware configuration memory object and associate it with the# hardware device.Also, set a variable with which to point to this objectset my_hw_cfgmem [create_hw_cfgmem -hw_device \[lindex [get_hw_devices] 0] -mem_dev $my_mem_device]

# Set the address range used for erasing to the size of the programming fileset_property PROGRAM.ADDRESS_RANGE {use_file} $my_hw_cfgmem

# Set the programming file to program into the SPI flashset_property PROGRAM.FILES $programming_files $my_hw_cfgmem

# Set the termination of unused pins when programming the SPI flashset_property PROGRAM.UNUSED_PIN_TERMINATION {pull-none} $my_hw_cfgmem

# Configure the hardware device with the programming bitstreamprogram_hw_devices [lindex [get_hw_devices] 0]# Set programming options# Do not perform a blank check, but erase, program and verifyset_property PROGRAM.BLANK_CHECK 0 $my_hw_cfgmemset_property PROGRAM.ERASE 1 $my_hw_cfgmemset_property PROGRAM.CFG_PROGRAM 1 $my_hw_cfgmemset_property PROGRAM.VERIFY 1 $my_hw_cfgmem

# Now program the partprogram_hw_cfgmem -hw_cfgmem $my_hw_cfgmem

Page 26: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

ターゲッ ト  FPGA のコンフ ィギュレーシ ョ ン

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  26

ターゲッ ト  FPGA のコンフ ィギュレーシ ョ ンSPI フラ ッシュのプログラムが正常に完了したら、 ボードの電源を入れ直すか、 PROGRAM_B をアサートおよびディアサート して、 FPGA のコンフ ィギュレーシ ョ ンを開始します。 コンフ ィギュレーシ ョ ンの開始から終了までの合計時間は、Vivado ツールの calc_config_time オプシ ョ ンを使用して計算できます。 詳細は、 「コンフ ィギュレーシ ョ ン時間」 を参照して ください。

付録

プログラム時間

KCU105 ボードで N25QU256A の内容を消去、 プログラム、 および検証する時間の測定には、 Vivado Design Suite 2014.4 を使用しました。 これらの時間は、 解凍状態の XCKU040 ビッ ト ス ト リーム (約 128Mb) を対象に、 ボードのエンベデッ ドUSB ケーブルを 15MHz で使用して得られました (表 4)。 これらの値は、 参照用であ り保証された値ではあ り ません。

UltraScale FPGA コンフ ィギュレーシ ョ ンのほかのサイズについては、『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ンユーザー ガイ ド』 (UG570) [参照 1] の 「デバイスのリ ソース と コンフ ィギュレーシ ョ ン ビッ ト ス ト リームの長さ」 を参照して ください。

コンフ ィギュレーシ ョ ン時間

コンフ ィギュレーシ ョ ン時間は、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リーム サイズをコンフ ィギュレーシ ョ ン レート とコンフ ィギュレーシ ョ ン幅の積で割った値です。 ただし、 起動オプシ ョ ン MATCH_CYCLE または LCK_CYCLE の設定など別の要因もいくつかあ り ます。 これらのオプシ ョ ンによ り、 デザイン内部のクロ ッ ク管理回路がロッ クまで待機する分だけコンフ ィギュレーシ ョ ン ク ロ ッ ク サイクル数が増加し、その数は変動します。次の式では、 これらの設定値が確定していないものと されます。 ほかの要因はすべて軽微であ り、 一次概算では無視できます。

T = コンフ ィギュレーシ ョ ン時間 (秒)

S = ビッ ト ス ト リーム サイズ (ビッ ト )

CR = コンフ ィギュレーシ ョ ン ク ロ ッ クの周波数 (Hz)

W = データ バス幅 (ビッ ト )

式 1

内部のコンフ ィギュレーシ ョ ン ク ロ ッ ク ソースを使用して CCLK を駆動する場合は、 クロ ッ ク耐性を考慮する必要があり ます。 UltraScale FPGA の場合は、 この耐性パラ メーター FMCCKTOL が UltraScale のデータシートに記載されています。したがって、 コンフ ィギュレーシ ョ ン時間の範囲は次のとおりです。

式 2

表 4 :  プログラム時間

動作 時間 (秒)

消去 (1) 163

プログラム 223

検証 62

注記 :1. 消去の対象となる事前プログラム済みの内容に基づいて、

消去時間は大幅に変動する可能性があ り ます。

T SCR W ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐=

S1 FMCCKTOL+ CR W‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ T S

1 FMCCKTOL– CR W‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

Page 27: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  27

コンフ ィギュレーシ ョ ン クロックの最大周波数

次のパラ メーターは、マスター SPI コンフ ィギュレーシ ョ ンで利用可能な 大のコンフ ィギュレーシ ョ ン ク ロ ッ クを求める計算を記述するのに役立ちます。

FCCLK,MAX : コンフ ィギュレーシ ョ ン  クロックの最大周波数

マスター SPI モードでは、 FPGA が CCLK ピンを通じてコンフ ィギュレーシ ョ ン ク ロ ッ クを供給します。 このクロ ッ クのソースは、内部クロ ッ ク ソース と EMCCLK ピンのどちらでもかまいません。 EMCCLK を使用するのは、許容範囲の狭いソースで駆動できる という点では大きな強みですが、 バンク 65 から追加のピンを使用する必要があ り ます。 EMCCLK クロ ッ ク ピンを介して外部クロ ッ ク ソースを使用する場合は、DIV-1 や DIV-2 など、DISABLED 以外のいずれかの値にプロパティを設定して ください。 2 番目のオプシ ョ ンは、 EMCCLK でク ロ ッ クを 2 分周します。 EMCCLK を有効にする使用可能な別の除算オプシ ョ ンは、 インプリ メ ン ト済みまたは合成済みのデザインを開き、 次の Tcl コマンドを実行する とわかり ます。

list_property_value BITSTREAM.CONFIG.EXTMASTERCCLK_EN [current_design]

CR : コンフ ィギュレーシ ョ ン レートの設定

内部クロ ッ ク ソースを使用している場合は、Vivado ツールでインプリ メン ト済みのデザインを開き、次のコマンドを実行する と可能なコンフ ィギュレーシ ョ ン レートがわかり ます。

list_property_value BITSTREAM.CONFIG.CONFIGRATE [current_design]

TSPITCO : SPI クロック  Low から出力の有効化まで

これは、 CCLK の立ち下がりエッジ後にデータを有効にするために SPI フラ ッシュが必要とする時間です。 、 ベンダーのデータシートでは、 タイ ミ ング パラ メーター名に tCLQV または tV のシンボル名が記載されている場合があ り ます。 この例では、 N25Q256A11ESF40x の tCLQV の値と して 5ns が使用されます [参照 3]。

TSPIDCC : FPGA データのセッ トアップ タイム

これはデータ ピンが必要なセッ ト アップ タイムで、 ク ロ ッ ク エッジを基準にしています。 デフォルトでは立ち上がり クロ ッ ク エッジを使用しますが、データは立ち下がりエッジで SPI フラ ッシュから出力されるため、動作周期が大幅に制限されます。 UltraScale FPGA には、 立ち下がりエッジに切り替えるオプシ ョ ン (BITSTREAM.CONFIG.SPI_FALL_EDGE) があ り ます。 このセクシ ョ ンでの式および例では、 このオプシ ョ ンを YES に設定しているものとみなします。

FCCLK,MAX = コンフ ィギュレーシ ョ ン ク ロ ッ クの 大周波数

TSPITCO = フラ ッシュのクロ ッ クが Low の状態からデータが有効になるまでの時間

TSPIDCC = FPGA のデータ セッ ト アップ タイム

式 3

TSPITCO = 5ns (10pF 負荷の場合、 N25Q256A11ESF40x のデータシート よ り [参照 3])

TSPIDCC = 3ns (Kintex UltraScale FPGA データシート (DS892) よ り [参照 5])

FCCLK,MAX 125MHz

ただし、 内部オシレーターを使用して CCLK を駆動する場合は、 FMCCKTOL の許容範囲を考慮する必要があ り ます。 したがって、 大コンフ ィギュレーシ ョ ン レートは、許容範囲から判断して可能な 大の周波数で FCCLK,MAX を超えないようにします。

式 4

FMCCKTOL が ±35% である とする と、 大コンフ ィギュレーシ ョ ン レートは次のとおりです。

CR 125MHz/1.35

CR 92.5MHz

FCCLK ,MAX1

TSPITCO TSPIDCC+ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

CRFCCLK ,MAX

1 FMCCKTOL+ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

Page 28: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  28

BITSTREAM.CONFIG.CONFIGRATE プロパティの 大値を調べるには、合成済みデザインまたはインプリ メン ト済みデザインを開き、 次のコマンドを実行します。

list_property_value BITSTREAM.CONFIG.CONFIGRATE [current_design]

このコマンドを実行する と、 内部オシレーターを使用した可能な 大のコンフ ィギュレーシ ョ ン レートが 90 であるこ とがわかり ます。

注記 :式 4 から SPI フラ ッシュが安全に動作でき、 その上ビッ ト ス ト リームを確実に送信できる 大周波数を計算して ください。SPI フラ ッシュは、ク ロ ッ クの立ち下がりエッジでデータを送信します。UltraScale FPGA は、デフォルトでクロ ックの立ち上がりエッジでデータをキャプチャします。式 4 が成立にするには、立ち下がりエッジでのデータ キャプチャを有効にする SPI フラ ッシュのコンフ ィギュレーシ ョ ン設定を YES に設定する必要があ り ます (BITSTREAM.CONFIG.SPI_FALL_EDGE YES)。 この設定手順については、 「ビッ ト ス ト リームの生成 : Vivado Design SuiteIDE の例」 または 「ビッ ト ス ト リームの生成 : Vivado ツール Tcl バッチ ファ イルの例」 を参照してください。

SPI フラッシュの選択

SPI フラ ッシュ デバイスを選択する場合には、 次に示すいくつかの要因を考慮するこ とが必要です。

• 格納容量 : 必要 小限の集積度は、 常に FPGA コンフ ィギュレーシ ョ ン ビッ ト ス ト リームのサイズです。 ビッ ト ス トリーム サイズのリ ス トについては、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] の 「デバイスのリ ソース と コンフ ィギュレーシ ョ ン ビッ ト ス ト リームの長さ」 を参照してください。 複数のビッ ト ス ト リームが必要なデザインでは、 ビ ッ ト ス ト リームのサイズ分をそれに応じて増加します。 Vivado DesignSuite ではビッ ト ス ト リームの圧縮が可能ですが、ザイ リ ンクスでは、 終的に必要な格納容量を決定する と きに実測圧縮比に依存しないこ とを推奨します。 圧縮比はビルド間で大き く変わる可能性があるためです。

• データ バス幅 : UltraScale FPGA では、 x4 コンフ ィギュレーシ ョ ンをサポートするデバイスを常に選択してください。これは、 マスター SPI コンフ ィギュレーシ ョ ンに必要な D[03:00] データ ラインがバンク 0 専用であ り、 ユーザー I/Oと しては使用できないためです。 UltraScale FPGA をサポート対象と している (すべてではないと しても ) ほとんどのSPI フラ ッシュ デバイスはクワ ッ ド SPI をサポート しますが、 32 ビッ ト アドレスの quad output fast read (6Bh) コマンドおよび quad output fast read (6Ch) コマンドがサポート されているこ とをも う一度確認してください。

• 性能 : 必要なデータ ピン D[03:00] はすべて専用であるため、 マスター SPI コンフ ィギュレーシ ョ ンに x4 を使用するこ とを推奨します。 よ り高い周波数も必要な場合は、 SPI フラ ッシュのデータシートに記載のクロ ッ ク Low からデータ有効までのタイ ミ ング パラ メーターに注意してください。 この値と UltraScale FPGA での D[03:00] セッ ト アップ タイムが相まって、 SPI フラ ッシュによってサポート されている 大周波数とは対照的に、 高い CCLK 周波数での制限要因になる可能性があ り ます。 可能な 大のコンフ ィギュレーシ ョ ン レートが必要な場合は、 EMCCLK をク ロ ッ ク入力 と し て使用する こ と も不可欠です。 「SPI x4 プロ グ ラ ミ ング フ ァ イル」 で説明し た よ う に、BITSTREAM.CONFIG.SPI_FALL_EDGE を YES に設定してください。詳細は、「コンフ ィギュレーシ ョ ン時間」 を参照して ください。

注記 : コンフ ィギュレーシ ョ ン レート を高くする場合は、 EMCCLK の使用を強く推奨します。

• I/O 電圧 : ほとんどすべての UltraScale FPGA は、 3.3V で SPI x4 でのコンフ ィギュレーシ ョ ンが可能です。 ただし、 ほかのボードではコンフ ィギュレーシ ョ ン バンクで 1.8V が必要になる可能性があ り ます。 サポート されている SPI フラ ッシュ デバイスの多くは 1.8V タイプが供給されています。一部の SPI フラ ッシュデバイスは 1.8V で FPGA と インターフェイスできるにもかかわらず、 3.3V の VCC 動作オプシ ョ ンを備えているこ とがあ り ます。 これらのデバイスは、 このモードで動作させる と、 ク ロ ッ ク Low からデータ有効まの時間が長くなるこ とが考えられます。 CCLK レート を高くする必要がある場合は、 この点を考慮に入れてください。

• パッケージ タイプ : ユーザーのニーズに対応する多様なパッケージがあ り ます。 Vivado Design Suite はパッケージを区別せず、 検証には通常 SOIC16 パッケージを使用します。 このパッケージはピンのプローブが容易なため、 デバッグが必要な場合に便利です。 ボード要件やフラ ッシュの入手しやすさによ り、 ほかのパッケージが必要な場合は、 デバッグが必要になる状況に備えて、 CCLK、 FCS_B、 D00_MOSI、 および D01_DIN ピンをプローブできるこ とを確認しておきます。 BGA パッケージを使用する場合は、 パッケージの下にビアを設ける とプローブ ポイン ト と して使用しやすくな り ます。

マスター SPI x1、 x2、 および x8

SPI x4 に必要な 4 つのデータ ピン D[03:00] が専用バンク 0 にあるため、 ザイ リ ンクスはマスター SPI を x4 幅で使用するこ とを推奨します。UltraScale FPGA は SPI データ バス幅と して x1 または x2 もサポート しており、必要に応じて使用できます。 ただし、 未使用の D01 ピンおよび D02 ピンをユーザー I/O と しては利用できないため、 これらのピンはやはり SPIフラ ッシュに接続するこ とを推奨します。

Page 29: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  29

よ り高いスループッ トが求められる場合、デュアル クワ ッ ド SPI モード (x8) が必要になる可能性があ り ます。また、CCLKを駆動してコンフ ィギュレーシ ョ ン ク ロ ッ ク レート を高くするために、 EMCCLK が必要になる場合もあ り ます。

マスター SPI x1 および x2

x1 および x2 では、 ボード上から 2 つの信号を削減できますが、 データ ピン D[03:00] はバンク 0 にあ り、 コンフ ィギュレーシ ョ ン専用であるためデザインで使用できる I/O ピンの数は増えるこ とはあ り ません。 x4 ではなく x1 および x2 を使用する場合は、 このアプリ ケーシ ョ ン ノートで説明してきた手順をこれらの幅に応用できます。 D[03:02] の信号を接続する必要はあ り ません。 ただし、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] の「UltraScale FPGA SPI x1/x2 コンフ ィギュレーシ ョ ン インターフェイス」 の図に示すよ うに、 これらの信号を VCCO_0 にプルアップするのがよいと考えられます。 ボードを x4 に合わせて作成した場合、 x1 モードおよび x2 モードは引き続き使用できます。

マスター SPI X8

UltraScale FPGA で使用できる x8 マスター SPI コンフ ィギュレーシ ョ ン モードは、コンフ ィギュレーシ ョ ン時間を x4 幅の半分にができます。 このためには、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) の 「マスター SPI コンフ ィギュレーシ ョ ン モード」 の章で説明しているよ うに、 バンク 65 からの追加ピンが 5 つ必要です。

Page 30: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  30

SPI コンフ ィギュレーシ ョ ンの生成に関する制約 : IDE フロー

Vivado ツール デザインでプロジェ ク ト モードに基づいて次の IDE フローを使用し、 マスター SPI x4 コンフ ィギュレーシ ョ ンのビッ ト ス ト リームを生成します。 このモードでは、 前述したよ うに、 選択した IDE オプシ ョ ンによって制約が自動的に設定されます。

注記 :次の手順を実行する前に、 Flow Navigator → [Implementation] → [Open Implemented Design] をク リ ッ ク して、 インプリ メン ト済みのデザインを開いておいてください。

1. 図 14 に示すよ うに、 Flow Navigator で、 [Program and Debug] の下にある [Bitstream Settings] をク リ ッ ク します。

X-Ref Target - Figure 14

図 14 : Flow Navigator

Page 31: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  31

2. 図 15 に示すよ うに、 [Project Settings] ダイアログ ボッ クスの [Bitstream] ページで [-bin_file] をオンにします。

3. 図 16 に示すよ うに、 同じ [Project Settings] ダイアログ ボッ クスで、 [Configure additional bitstream settings] リ ンクをクリ ッ ク します (この リ ンクは、 プロジェク トで合成済みまたはインプ リ メ ン ト済みのデザインが開かれている場合にのみ利用可能)。

X-Ref Target - Figure 15

図 15 : ‐bin_file の有効化

X-Ref Target - Figure 16

図 16 : [Configure additional bitstream settings]

Page 32: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  32

4. 開いた [Edit Device Properties] ダイアログ ボッ クスの [General] ページに表示される次のプロパティを有効にします (図 17)。

° Enable Bitstream Compression : TRUE

注記 : ビッ ト ス ト リームの圧縮はオプシ ョ ンですが、プログラム時間を短縮する場合があるので推奨します。ただし、SPI の集積度またはコンフ ィギュレーシ ョ ン時間を計算する場合は、 圧縮比に依存しないよ うにして ください。 圧縮比は、 デザイン インプリ メンテーシ ョ ン run ごとにビルド間で大き く変わるこ とがあるためです。

X-Ref Target - Figure 17

図 17 : [Edit Device Properties] ダイアログ ボックスの [General] ページ

Page 33: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  33

5. [Edit Device Properties] ダイアログ ボッ クスで [Configuration] ページを選択し、 [Configuration Setup] セクシ ョ ンの下にあるオプシ ョ ンを次のよ うに選択します (図 18)。

° Configuration Rate (MHz) : 33

° Configuration Voltage : 1.8

° Configuration Bank Voltage Selection : GND

注記 :図 18 に示すよ うに、コンフ ィギュレーシ ョ ン電圧をボードのコンフ ィギュレーシ ョ ン電圧 (バンク 0 の電圧) に一致するよ う設定します。前述の設定は KCU105 ボード用であ り、 さまざまなボード コンフ ィギュレーシ ョ ンに合わせて調整が必要になる場合があ り ます。

6. 同じページで、 [SPI Configuration] セクシ ョ ンまで下にスクロールして、 次のよ うに選択します (図 19)。

° Enable SPI 32-bit address style : YES

° Bus width : 4

° Enable the FPGA to use a falling edge clock for SPI data capture : YES

X-Ref Target - Figure 18

図 18 : [Edit Device Properties] ダイアログ ボックスの [Configuration] ページ 1

Page 34: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  34

7. [Edit Device Properties] ダイアログ ボッ クスで [OK] をク リ ッ ク し、変更したビッ ト ス ト リーム設定を確定します。ツーバーの [Save] をク リ ッ ク して CTRL + S を入力するか、 [File] メニューで [Save Constraints] を選択して、 生成した制約ファイルを保存します。

8. 制約ファイルを保存する と、 2 つのダイアログ ボッ クスが表示されるこ とがあ り ます。 初は [Out of Date Design] ダイアログ ボッ クスで、制約ファイルを保存する とデザインが期限切れになり、 インプリ メンテーシ ョ ンまたは合成を再実行する必要があるか、デザイン run を強制的に 新の状態にする必要があるこ とを示すものです。ビッ ト ス ト リーム生成に必要な制約以外の制約が変更されていない場合、この段階では [Force Up-to-Date] を選択するのが適しています。 これを図 20 に示します。 [OK] をク リ ッ ク してこの 初のメ ッセージを閉じます。

X-Ref Target - Figure 19

図 19 : [Edit Device Properties] ダイアログ ボックスの [Configuration] ページ 2

X-Ref Target - Figure 20

図 20 : [Out of Date Design]

Page 35: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  35

9. 2 番目と して [Save Constraints] ダイアログが表示される場合があ り ます (図 21)。 既存のファイルで生成したばかりの制約を保存するか、 新しいファイルを作成します。 この例では、 config.xdc と呼ばれる新しいファイルが作成されます。 新規制約ファイルを作成するか、 既存のファイルを選択したら、 [OK] をク リ ッ ク します。

Vivado IDE でこれらの設定を行う と、マスター SPI コンフ ィギュレーシ ョ ン ビッ ト ス ト リーム生成に必要な制約が生成されます。 制約を保存する と、 指定した制約ファ イルに制約が書き込まれます。 生成した制約は、 Tcl コンソールに次のよ うに表示できます。

set_property BITSTREAM.GENERAL.COMPRESS TRUE [get_designs synth_1]set_property BITSTREAM.CONFIG.CONFIGRATE 33 [get_designs synth_1]set_property CONFIG_VOLTAGE 1.8 [get_designs synth_1]set_property CFGBVS GND [get_designs synth_1]set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [get_designs synth_1]set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [get_designs synth_1]set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [get_designs synth_1]

10. 上記で変更した制約はビッ ト ス ト リーム生成に対してのみ影響するので、 合成およびインプリ メンテーシ ョ ンを 新の状態に強制的に変更します (図 22)。結果を表示するウ ィンド ウで [Design Runs] を選択します。合成 run のステータスが期限切れであるこ とを示している場合は、 合成 run を右ク リ ッ ク して、 [Force Up-to-Date] をク リ ッ ク します。 インプリ メンテーシ ョ ン run のステータスだけが期限切れであるこ とを示している場合は、インプリ メンテーシ ョ ン runを右ク リ ッ ク して、 [Force Up-to-Date] をク リ ッ ク します。

X-Ref Target - Figure 21

図 21 : [Save Constraints]

Page 36: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  36

デバッグと ト ラブルシュートのガイ ド ライン

コンフ ィギュレーシ ョ ンの問題には、 初からはすぐに区別できないさまざまな原因が存在している可能性があ り ます。マスター SPI コンフ ィギュレーシ ョ ンのエラーに関する ト ラブルシュートについて、 根本原因と可能なソ リ ューシ ョ ンを絞り込むのに役立ついくつかの一般的なデバッグ手順の概要を次のセクシ ョ ンに示します。

レイアウトの検証

• JTAG の TCK 信号と FPGA の CCLK 信号のシグナル インテグ リティが維持されているこ とが非常に重要です。 長い接続はできるだけ使用しないでください。 接続が長いと、 望まし くないノ イズや電圧波形の反射が発生し、 FPGA のシグナル インテグ リ テ ィ を低下させるこ とがあ り ます。 その他の参考情報については、 『UltraScale アーキテクチャPCB デザイン ユーザー ガイ ド』 (UG583) [参照 8] の 「単方向のトポグラフ ィ と終端」 を参照して ください。

• マスター SPI x4 の回路図を調べて、 接続が正しいかど うか確認します。

• CCLK、 FCS_B、 および D00_MOSI ラインを調べます。 電源投入後または PROGRAM_B パルスの後に、 FCS_B の立ち下がりエッジで ト リガーして、 波形がマスター SPI x1 0Bh コマンド と一致しているこ とを確認して ください。

適切なファイル生成

• ビッ ト ス ト リームの設定で EMCCLK オプシ ョ ンが有効になっている場合は、I/O 規格が定義されているこ とを確認します。 EMCCLK は多目的ピンであるため、 デフォル トでは I/O 規格は未定義です。 EMCCLK を使用するためのオプシ ョ ンは 2 つあり ます。

° XDC デザイン制約ファイルに次のプロパティを含めます。

set_property CONFIG_VOLTAGE 1.8 [current_design]

° EMCCLK を入力と してデザイン含めて使用し、 その I/O 規格を制約ファイル内で定義するこ とで、 EMCCLK をデザインにインスタンシエート します。

X-Ref Target - Figure 22

図 22 : [Force Up‐to‐Date]

Page 37: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

付録

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  37

• コンフ ィギュレーシ ョ ンとプログラムをさ らに高速化するには、 ビッ ト ス ト リーム圧縮の設定を使用します。 ト ラブルシュート目的の場合は、 (たとえば、 1 つの LED 単純に切り替える ) シンプルなビッ ト ス ト リームを使用するこ とによ り、 圧縮比を高く してプログラム時間を短縮できます。

• ConfigRate オプシ ョ ンは、 ターゲッ ト フラ ッシュおよび FPGA でサポート される 大周波数を超えないよ うにします。FPGA の CCLK 耐性については、該当する UltraScale デバイスのデータシートで、FMCCKTOL タイ ミ ング パラ メーターを参照して ください。 デバッグ時は、 コンフ ィギュレーシ ョ ン レート を算出された 大周波数よ り低くするか、デフォル ト値のままにしておく こ とを検討して ください。 大コンフ ィギュレーシ ョ ン レート の計算方法については、 「コンフ ィギュレーシ ョ ン ク ロ ッ クの 大周波数」 を参照してください。

• Vivado Design Suite を使用して、 ビッ ト ス ト リームを (.bin ファ イルと して) 準備します。

° JTAG を読み込むこ とによってビッ ト ス ト リーム (.bit) ファ イルをテス ト して、 コンフ ィギュレーシ ョ ンが予想どおりに動作するこ とを検証します。

° 動作が異なる場合は、 バイナリ ビッ ト ス ト リーム (.bin) ファ イルがビッ ト ス ト リームと同時に生成されたこ とを確認します。

Vivado ツールの間接プログラム

• Vivado Design Suite が SPI フラ ッシュの ID を読み出すこ とができたこ とを確認します。次の 2 つの一般的なエラーは、接続の問題または電源の問題を示しています。

Mfg ID : 00 Memory Type : 00 Memory Capacity : 00Mfg ID : FF Memory Type : FF Memory Capacity : FF

• 消去、 プログラム、 および検証動作を有効にします。

• 正しいビッ ト ス ト リームがプログラムされたこ とを確認します。

• 間接プログラムの 大ケーブル速度を超えないよ うにします。

• JTAG チェーンのインテグ リティが良好であるこ とを確認します。

° FPGA の IDCODE の基本動作を実行し、 接続状態を確認します。

° FPGA 内に簡単なビッ ト ス ト リームをプログラムします。

Page 39: :UtlraScael FPGA UltraScale FPGA での SPI...SPI の基本 XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com 4 表 1: SPI フラッシュのデータ ピン SPI 信号名 UltraScale

参考資料

XAPP1233 (v1.0) 2015 年 5 月 29 日 japan.xilinx.com  39

参考資料1. 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570 : 英語版、 日本語版)

2. 『UltraScale FPGA の BPI コンフ ィギュレーシ ョ ンおよびフラ ッシュ プログラム』 (XAPP1220 : 英語版、 日本語版)

3. Micron 社のシ リ アル NOR フラ ッシュ メモ リwww.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_256mb_1_8v_65nm.pdf

4. Kintex UltraScale FPGA KCU105 評価キッ ト japan.xilinx.com/products/boards-and-kits/kcu105.html

5. 『Kintex UltraScale FPGA データシート : DC 特性および AC スイ ッチ特性』 (DS892 : 英語版、 日本語版)

6. 『Virtex UltraScale FPGA データシート : DC 特性および AC スイ ッチ特性』 (DS893 : 英語版、 日本語版)

7. 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908 : 英語版、 日本語版)

8. 『UltraScale アーキテクチャ PCB デザイン ユーザー ガイ ド』 (UG583 : 英語版、 日本語版)

改訂履歴次の表に、 この文書の改訂履歴を示します。

法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、法人その他の団体の場合には 「貴社」。以下同じ ) に開示

される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。適用される法律

が許容する 大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供され、 ザイ リ ンク

スは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれらに限られません)、 すべ

ての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、本情報 (貴殿または貴社による本情報の使用を含む

) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わない (契約上、 不法行為上 (過失の場合を

含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害には、 直接、 間接、 特別、 付随的、 結果的な損

失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の損失、 その他あらゆる種類の損失や損害を含みます)が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能であったり、 ザイ リ ンクスがそれらの可能性について助言を受

けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品

仕様のアップデート を貴殿または貴社に知らせる義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生

産、 変更、 頒布、 または公に展示してはな り ません。 一定の製品は、 ザイ リ ン ク スの限定的保証の諸条件に従 う こ と と なるので、

http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照してください。 IP コアは、ザイ リ ンクスが貴殿または貴社に

付与したライセンスに含まれる保証と補助的条件に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェ

イルセーフの動作を要求するアプ リ ケーシ ョ ンに使用するために、 設計された り意図された り していません。 そのよ う な重大なアプ リ

ケ ー シ ョ ン に ザ イ リ ン ク ス の 製 品 を 使 用 す る 場 合 の リ ス ク と 責 任 は、 貴 殿 ま た は 貴 社 が 単 独 で 負 う も の で す。

http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照してください。

© Copyright 2015 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれるその

他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの右下

にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。いただきましたご意見を参考に早急に

対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受け付けており ません。 あらかじめご了承ください。

日付 バージョ ン 内容

2015 年 5 月 29 日 1.0 初版