インテル® Stratix® 10コンフィグレーション・ユーザーガイド
バージョン情報
更新対象: |
---|
インテル® Quartus® Prime デザインスイート 19.4 |
1. インテル Stratix 10コンフィグレーション・ユーザーガイド
1.1. インテル Stratix 10デバイスのコンフィグレーションについて
すべての インテル® Stratix® 10デバイスには、FPGAコンフィグレーションとセキュリティーを管理するためのセキュア・デバイス・マネージャー (SDM) が搭載されています。 SDMは、デバイスのコンフィグレーションにおけるフェイルセーフを実現し、さらに強力な認証を備えたプログラム可能なセキュリティー・モードを提供します。前世代のFPGAファミリーには、デバイス・コンフィグレーションの管理に向けて固定ステートマシンが搭載されています。
インテル® Quartus® Prime開発ソフトウェアはまた、リモート攻撃と物理的攻撃の両方から機密データ、知的財産、およびデバイス自体を保護するための柔軟で堅牢なセキュリティー機能を提供します。コンフィグレーション・ビットストリーム認証は、ファームウェアとコンフィグレーション・ビットストリームが信頼できるソースからのものであることを保証します。暗号化は知的財産の盗難を防ぎます。また、 インテル® Quartus® Prime開発ソフトウェアはFPGAのビットストリームを圧縮することで、メモリー使用量を削減します。
インテルは、FPGAの観点からコンフィグレーション・スキームを説明します。 インテル® Stratix® 10デバイスはアクティブ・コンフィグレーション・スキームおよびパッシブ・コンフィグレーション・スキームをサポートしています。アクティブ・コンフィグレーション・スキームでは、FPGAはマスターとして機能し、外部メモリーはスレーブデバイスとして機能します。パッシブ・コンフィグレーション・スキームでは、外部ホストがマスターとして機能し、コンフィグレーションを制御します。FPGAはスレーブデバイスとして機能します。すべての インテル® Stratix® 10コンフィグレーション・スキームは、デザイン・セキュリティーおよびパーシャル・リコンフィグレーションをサポートします。すべての インテル® Stratix® 10アクティブ・コンフィグレーション・スキームは、クワッドSPIフラッシュメモリーを使用するリモート・システム・アップデート (RSU) をサポートします。パッシブ・コンフィグレーション・スキームでRSUを実装するには、外部コントローラーがコンフィグレーション・ビットストリームを格納および駆動する必要があります。
インテル® Stratix® 10デバイスは、以下のコンフィグレーション・スキームをサポートしています。
- Avalon® ストリーミング (Avalon -ST)
- JTAG
- プロトコル経由コンフィグレーション (CvP)
- アクティブシリアル (AS) NormalモードおよびFastモード
- Secure Digital and Multi Media Card (SD MMC)
コンフィグレーション・スキーム | データ幅 (ビット) | MSEL[2:0] | |
---|---|---|---|
パッシブ | Avalon® -ST | 32 | 000 |
16 | 101 | ||
8 | 110 | ||
JTAG | 1 | 111 | |
プロトコル経由コンフィグレーション (CvP) | ×1、×2、×4、×8、x16レーン |
0011 |
|
アクティブ | SD/MMC | 4/8 | 100 |
AS - Fastモード |
4 |
001 |
|
AS - Normalモード | 4 | 011 |
Avalon-ST
Avalon® -STコンフィグレーション・スキームは、パッシブ・ コンフィグレーション・スキームです。 Avalon® -STは、 インテル® Stratix® 10デバイスに対する最速のコンフィグレーション・スキームです。 Avalon® -STコンフィグレーションは、x8、x16、およびx32モードをサポートしています。x16およびx32ビット・モードは、コンフィグレーションに汎用I/O (GPIO) を使用します。x8ビット・モードは、専用のSDM I/Oピンを使用します。
Avalon® -STは、AVST_READYピンおよびAVST_VALIDピンを使用してバックプレッシャーをサポートします。入力ビットストリームを展開する時間は変動するため、 インテル® Stratix® 10デバイスへのデータ転送にはバックプレッシャーのサポートが必須となります。 Avalon® -STの詳細については、 Avalon® インターフェイスの仕様書を参照してください。
JTAG
インテル® Stratix® 10デバイスでは、専用のJTAGピンを使用するコンフィグレーションが可能です。JTAGポートは多くの便利なツールや機能へのシームレスなアクセスを提供します。 インテル® Stratix® 10のコンフィグレーション以外にも、JTAGポートはSignal Tapやシステム・コンソール・ツールでのデバッグに使用することができます。
JTAGポートの優先順位は最も高く、MSELピンの設定を上書きします。そのため、セキュリティー上の理由でJTAGをディスエーブルしない限り、MSELピンが異なるコンフィグレーション・スキームを指定している場合でも、JTAGを介して インテル® Stratix® 10デバイスをコンフィグレーションすることが可能です。
CvP
CvPは外部 PCIe* ホストデバイスをルートポートとして使用し、 PCIe* リンクを介して インテル® Stratix® 10デバイスをコンフィグレーションします。x16までの PCIe* リンクを指定可能です。通常、 PCIe* のリンク幅ではなく、ビットストリームの圧縮率とSDM入力バッファーのデータレートがコンフィグレーション・データ・レートを制限します。 インテル® Stratix® 10デバイスは、CvP初期化モードとCvP更新モードの2つのCvPモードをサポートします。
- CvPは、 PCIe* IPなどのI/OおよびハードIPブロックを内包するFPGAペリフェラル・イメージをコンフィグレーションします。CvPは、クワッドSPIメモリーをAS x4モードで使用し、FPGAファブリックをコンフィグレーションします。 PCIe* IPはペリフェラル・イメージであるため、 PCIe* リンク・トレーニングはコア・ファブリックがコンフィグレーションする前にCvP PCIe* IPの PCIe* リンクを確立します。
- ホストデバイスはCvP PCIe* リンクを使用し、コア・ファブリックのデザインをコンフィグレーションします。
CvP更新モードは、それまでのフルチップ・コンフィグレーションまたはCvP初期化コンフィグレーションですでに確立済みの PCIe* リンクを使用してFPGAコアイメージを更新します。 インテル® Stratix® 10がユーザーモードに入った後、CvP更新モードを使用してFPGAファブリックをリコンフィグレーションすることが可能です。このモードには次の利点があります。
- 異なるアルゴリズムを実行するためにコアの再プログラミングが可能
- リリースプロセスの一環として、標準アップデートに向けたメカニズムを提供
- 複雑なシステムの一部を構成するさまざまなコンポーネントに向けたコアの処理をカスタマイズ
CvP初期化モードとCvP更新モードの両方において、最大データレートは PCIe* の世代とレーンの数によって異なります。
インテル® Stratix® 10 SoCデバイスの場合、CvPはFPGA先行のコンフィグレーション・モードでのみサポートされています。
詳細については、 インテル® Stratix® 10 CvP (プロトコル経由コンフィグレーション) 実装ユーザーガイドを参照ください。
AS Normalモード
アクティブシリアル (AS) x4またはクワッドSPI (QSPI) は、3バイトおよび4バイトのアドレス指定が可能なフラッシュメモリーをサポートするアクティブ・コンフィグレーション・スキームです。電源投入時に、SDMはブートROMから起動します。ここでは3バイトのアドレス指定を使用してコンフィグレーション・ファームウェアをクワッドSPIフラッシュからロードします。コンフィグレーション・ファームウェアのロード後、クワッドSPIフラッシュは残りのコンフィグレーション・プロセスに4バイトのアドレス指定を使用して動作します。このモードは、次のサードパーティー製フラッシュデバイスに対するインテルのシリアル・フラッシュ・コンフィグレーション・メモリー・ソリューションをサポートします。
- Micron MT25QU128、MT25QU256、MT25QU512、MT25QU01G、MT25QU02G
- Macronix MX25U128、MX25U256、MX25U512、MX66U512、MX66U1G、MX66U2G
サポートされるフラッシュデバイスの完全なリストについては、Supported Flash Devices for Intel Stratix 10 Devicesを参照してください。
AS Fastモード
AS NormalモードとFastモードの唯一の違いは、そのスピードです。コンフィグレーションのタイミングが重要な場合は、AS Fastモードを使用します。このモードでは、コンフィグレーションを開始する前に10 msの遅延がありません。このモードを使用して、 PCIe* の100 msのパワーアップ要件、または厳格なタイミング要件をともなうシステムのパワーアップ要件を満たします。
AS Fastモードでのパワーオン・シーケンスにおいて、 インテル® Stratix® 10デバイスはリセット終了後すぐにフラッシュメモリーにアクセスするため、クワッドSPIフラッシュメモリーはSDMの前にリセットを終了する必要があります。電源は、 インテル® Stratix® 10デバイスと外部AS x4フラッシュデバイスに高速なランプアップを等しく提供可能でなければなりません。この要件を満たさない場合、SDMはメモリーが不明であることを報告し、コンフィグレーションは失敗します。
そのほかの詳細については、インテル Stratix 10デバイスファミリー・ピン接続ガイドラインおよびAN 692: インテルCyclone 10 GX、インテル Arria 10、およびインテルStratix 10デバイスの電源シーケンスについての考慮事項を参照してください。
SD/MMC
SD/MMCは、アクティブ・コンフィグレーション・スキームです。 インテル® Stratix® 10のSDMでは、SDカード、SDHC* (セキュアデジタル大容量) カード、SDXC* (セキュアデジタル拡張容量) カード、MMCカードおよびeMMCデバイスからコンフィグレーションを開始できます。このモードの利点は、コスト、容量、可用性、移植性、互換性です。 インテル® Stratix® 10デバイスのSDM I/Oコンフィグレーション・ピンは1.8ボルトで動作するため、SD/MMCデバイスの高電圧I/Oとのインターフェイスには、中間電圧レベルシフターが必要になる場合があります。
1.1.1. コンフィグレーションおよびコンフィグレーションに関連する信号
次の図は、コンフィグレーション・インターフェイスとコンフィグレーションに関連するデバイス機能を示しています。濃い青で示されているピンは専用のSDM I/Oを使用します。黒で示されているピンは汎用I/O (GPIO) を使用します。赤で示されているピンは専用のJTAG I/Oです。
SDM I/Oピンの機能は、 インテル® Quartus® Prime開発ソフトウェアのDevice > Configuration > Device and Pin Options ダイアログボックスを使用して指定します。
本ユーザーガイドでは、図に示されているほとんどのインターフェイスについて説明します。これらの機能についての詳細は、 インテル® Stratix® 10 CvP (プロトコル経由コンフィグレーション) 実装ユーザーガイドおよび インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
1.1.2. インテル Stratix 10デバイスのコンフィグレーションをサポートするインテル・ダウンロード・ケーブル
インテルは、PCB上の インテル® Stratix® 10デバイスへのデザインのダウンロードに向けて次のケーブルを提供しています。ダウンロード・ケーブルは、 インテル® Quartus® Primeのプログラマーを介して詳細なデバッグメッセージを提供することで、プロトタイピング作業を支援します。Signal Tapロジック・アナライザーやシステムコンソールのツールを使用する高度なデバッグには、インテル・ダウンロード・ケーブルを使用する必要があります。
ダウンロード・ケーブル | インテル® Stratix® 10デバイスのプロトコルサポート | PCBへのケーブル接続 |
---|---|---|
インテル®FPGAダウンロード・ケーブルII (旧USB-Blaster II) | JTAG、AS |
10ピンのメスプラグ 3M品番: 2510-6002UB |
インテルFPGAイーサネット・ケーブル (旧Ethernet Blaster II) | JTAG、AS | 10ピンのメスプラグ |
インテル® FPGA & SoC/製品/ダウンロード・ケーブルでは、ダウンロード・ケーブルに関する詳細情報が提供されており、上記の表に記載されているケーブルのユーザーガイドへのリンクがすべて含まれています。
1.2. インテル Stratix 10のコンフィグレーション・アーキテクチャー
セキュア・デバイス・マネージャー (SDM) は3重冗長プロセッサー・ベースのモジュールであり、 インテル® Stratix® 10デバイスのコンフィグレーションとセキュリティー機能を管理します。SDMは、すべての インテル® Stratix® 10 FPGAおよびSoCデバイスで利用可能です。
次のブロック図は、以下のブロックを含む インテル® Stratix® 10コンフィグレーション・アーキテクチャーの概要を表しています。
- SDM: SDMについての詳細は、以降の章で説明します。
- コンフィグレーション・ネットワーク: SDMは、この専用のパラレル・コンフィグレーション・ネットワークを使用して、コンフィグレーション・ビットストリームをローカル・セクター・マネージャー (LSM) に配信します。このネットワークにアクセスすることはできません。
- LSM: LSMはマイクロプロセッサーです。各コンフィグレーション・セクターに1つのLSMが含まれています。LSMはコンフィグレーション・ビットストリームを解析し、そのセクターのロジックエレメントをコンフィグレーションします。コンフィグレーション後、LSMは次の動作を実行します。
- セクターレベルでシングル・イベント・アップセット (SEU) をモニターします
- シングル・イベント・アップセット (SEU) への応答を処理します
- リアルタイムでハッシュまたは整合性のチェックを実行します
- 以下は、
インテル®
Stratix® 10バリアントに向けた特定のブロックです。
- SXデバイスには、FPGAロジックに加えてハード・プロセッサー・システム (HPS) が含まれています。
- MXデバイスには、FPGAロジックに加えて高帯域幅メモリー (HBM2) が含まれています。
-
GXデバイスには、FPGAロジックに加えてLタイルおよびHタイル・トランシーバーが含まれています。
-
TXデバイスには、FPGAロジックに加えてEタイルおよびHタイル・トランシーバーが含まれています。
1.2.1. セキュア・デバイス・マネージャー (SDM)
SDMは、ペリフェラル、暗号IPおよびセンサー、ブートROM、3重冗長ロックステップ・プロセッサー、および次のブロック図に示すその他のブロックで構成されています。SDMは次のセキュリティー機能を実行および管理します。
-
コンフィグレーション・ビットストリーム認証: 起動時の電源投入後、SDMの3重冗長ロックステップ・プロセッサーはブートROMからコードを実行します。ブートROMコードは、インテルが生成したコンフィグレーション・ファームウェアおよびコンフィグレーション・ビットストリームを認証し、コンフィグレーション・ビットストリームが信頼できるソースからのものであることを確認します。 インテル® Stratix® 10はすべて、認証をサポートしています。
- 暗号化: 暗号化は、コンフィグレーション・ビットストリームまたは機密データを不正な第三者アクセスから保護します。
- サイドチャネル攻撃からの保護: サイドチャネル攻撃からの保護は、非侵入型攻撃においてAESキーと機密データを保護します。
- 整合性チェック: 整合性チェックは、偶発的なイベントによりコンフィグレーション・ビットストリームが破損されていないことを確認します。認証を有効にしていなくても、この機能はアクティブです。
インテル® Stratix® 10 | 認証 | 高度なセキュリティー |
---|---|---|
GX | はい | 末尾が-ASのデバイス |
SX | はい | 末尾が-ASのデバイス |
MX | はい | 末尾が-ASのデバイス |
TX | はい | 末尾が-ASのデバイス |
DX | はい | はい |
SDMが制御するそのほかの機能の概要は次のとおりです。
-
電源管理ブロックは、-Vデバイスを選択した場合に外部PMBus電圧レギュレーターを介してSmartVID機能を有効にする電圧センサーと温度センサーで構成されています。
-
AESやSHAをはじめとするCryptoアクセラレーター・ブロックは、安全なコンフィグレーションとブートを実装します。
-
Key Vaultは、揮発性および不揮発性の暗号化キーストレージを提供します。潜在的なサイドチャネル攻撃を軽減するため、キーを使用する暗号機能は特別なハードウェア・ストレージ・メカニズムを必要とします。
-
ASおよびSD/MMCコンフィグレーション・フラッシュ・コントローラーは、専用のSDMピンを介してアクティブ・コンフィグレーション・スキームを有効にします。
-
x8 Avalon® -STコンフィグレーション・スキームはSDM I/Oピンを使用します。x16およびx32 Avalon® -STコンフィグレーション・スキームは、専用のSDM I/Oピンおよび兼用I/Oピンを使用します。詳細については、SDMピンのマッピングを参照ください。
-
インテル® Quartus® Prime開発ソフトウェアはコンフィグレーション・データを圧縮することで、コンフィグレーション・ファイル・サイズの縮小、より小さいメモリーサイズのサポート、そしてより高速なコンフィグレーションを可能にします。 インテル® Stratix® 10デバイスはすべて、コンフィグレーション・ビットストリームを圧縮します。この機能を無効にすることはできません。暗号化されたコンフィグレーション・ビットストリームを指定する場合、インテル® Quartus Prime開発ソフトウェア・プロ・エディションは、暗号化の前にコンフィグレーション・ビットストリームを圧縮します。
-
インテル® Stratix® 10デバイスに含まれている特定の PCIe* ブロックは、CvPをサポートします。
1.2.1.1. SDMファームウェアの更新
指定するコンフィグレーション・スキームに応じて、生成されるファイルは次の形式のいずれかになります。
- Raw Binary File (.rbf)
- Programmer Object File (.pof)
- JTAG Indirect Configuration (.jic)
- Raw Programming Data (.rpd)
- Jam*Standard Test and Programming Language (STAPL) STAPL (.jam)
- Jam* Byte Code (.jbc)
インテル® Quartus® Prime開発ソフトウェアの新しいバージョンには通常、ファームウェアに実装された新しいSDMの機能または更新されたSDMの機能が含まれます。コンフィグレーション・ビットストリームを再生成する際は、最新のファームウェアを含む最新バージョンのインテル Quartus Prime開発ソフトウェア・プロ・エディションを使用することをインテルでは推奨しています。新しいバージョンのインテル Quartus Prime開発ソフトウェア・プロ・エディションのファームウェアを使用するために.sofを再コンパイルする必要はありません。単に、新しいバージョンのProgramming File Generatorでコンフィグレーション・ビットストリームを再生成するだけです。
1.2.1.2. インテル Stratix 10 SoCデバイスのブート順序の指定
インテル® Stratix® 10 SoCデバイスでは、FPGA FirstまたはHard Processor System (HPS) Firstのオプションを選択し、コンフィグレーションの順序を指定できます。FPGA Firstオプションを選択すると、SDMはFPGAを完全にコンフィグレーションし、その後HPS SDRAMピンをコンフィグレーションしてHPSの第1ステージ・ブートローダー (FSBL) をロードし、HPSのリセットを解除します。このモードでは、HPSがリセットを終了する直前にファブリックが機能し始めます。このユーザーガイドは、FPGAが機能しているときの状態を定義しています。コンフィグレーションと初期化は完了します。
- 必要なSDMフラッシュメモリーの量を最小限に抑えます。
- HPSソフトウェアが稼働するまでに必要な時間を最小限にします。
- HPSの実行中にFPGAのリコンフィグレーションをサポートします。
コンフィグレーション順序の指定についての詳細は、Intel Stratix 10 SoC FPGA Boot User GuideのFPGA Configuration First ModeおよびHPS Boot First Modeの章を参照してください。
2. インテル Stratix 10のコンフィグレーションについての詳細
2.1. インテル Stratix 10コンフィグレーションのタイミング図
初期コンフィグレーションのタイミング
SDMは、 インテル® Stratix® 10デバイスのコンフィグレーションを駆動します。
図の最初のセクションは、通常のパワーオンリセット後の初期コンフィグレーションで想定されるタイミングを示しています。最初に、アプリケーション・ロジックはnCONFIG信号をLowに駆動します (POR)。nSTATUSは現在のコンフィグレーションの状態を反映するため、通常の条件下では、nSTATUSはnCONFIGに従います。nCONFIGは、nSTATUSと同じ値を持つ場合にのみ変化します。
エラーが発生すると、nSTATUSは約1 msの間Lowパルスを発し、デバイスがリコンフィグレーションを受け入れられる状態になるとHighをアサートします。
タイミング図の初期のコンフィグレーション部の番号は、次のイベントを表しています。
- SDMが起動し、MSEL信号をサンプリングして、指定されたFPGAコンフィグレーション・スキームを特定します。SDMは、電源を再投入するまでMSELピンを再度サンプリングすることはありません。
- nCONFIG信号がLowの場合、SDMは起動後にアイドルモードに入ります。
- 外部ホストがnCONFIG信号をHighに駆動すると、SDMはコンフィグレーションを開始します。SDMはnSTATUS信号をHighに駆動し、FPGAコンフィグレーションの開始を通知します。SDMは、ステップ1でMSELバスが指定したインターフェイスでコンフィグレーション・ビットストリームを受信します。この図は、AVST_READYおよびAVST_VALIDが持続してHighの状態を示しています。AVST_READYはディアサートすることがあります。その場合、AVST_VALIDを6サイクル以内にディアサートする必要があります。
- SDMはCONF_DONE信号をHighに駆動し、SDMがビットストリームを正常に受信したことを示します。
-
インテル®
Stratix® 10デバイスはINIT_DONEをアサートし、FPGAがユーザーモードに入ったことを示します。GPIOピンはハイ・インピーダンス状態を終了します。CONF_DONEのアサートからINIT_DONEのアサートまでの時間は変動します。FPGA Firstコンフィグレーションの場合、レジスターおよびステートマシンを含むFPGAファブリックの初期化後にINIT_DONEがアサートします。HPS Firstコンフィグレーションの場合、HPSアプリケーションがCONF_DONEとINIT_DONEの間の時間を制御します。INIT_DONEは、U-Bootやオペレーティング・システム (OS) などのHPSで実行されているソフトウェアがコンフィグレーションを開始し、FPGAがコンフィグレーションしてユーザーモードに入るまでアサートしません。
デバイス全体は同時にユーザーモードに入りません。インテルでは、デザインでのリセット・リリース・インテルFPGA IPの使用 で説明されている内容をデザインに含めることを要件にしています。リセット・リリース・インテルFPGA IPのnINIT_DONE出力を使用し、FPGAファブリック全体がユーザーモードになるまでアプリケーション・ロジックをリセット状態に保持します。このIPをデザインに含めないと、断続的なアプリケーション・ロジック・エラーが発生する可能性があります。
リコンフィグレーションのタイミング
タイミング図の2番目のイベントは、 インテル® Stratix® 10デバイスのリコンフィグレーションを表しています。MSEL設定を電源投入後に変更する場合、 インテル® Stratix® 10の電源を再投入する必要があります。電源を再投入することで、デバイスのリコンフィグレーション前にMSELピンのサンプリングをSDMに強制します。
タイミング図のリコンフィグレーション部の番号は、次のイベントを表しています。
- 外部ホストは、nCONFIG信号をLowに駆動します。
- SDMは、デバイス・クリーニングを開始します。
- SDMは、デバイス・クリーニングが完了するとnSTATUS信号をLowに駆動します。
- 外部ホストはnCONFIG信号をHighに駆動して、リコンフィグレーションを開始します。
- SDMはnSTATUS信号をHighに駆動し、デバイスがリコンフィグレーションに向けて準備が整っていることを知らせ、リコンフィグレーションを開始します。
コンフィグレーション・エラー
タイミング図のコンフィグレーション・エラー部の番号は、次のイベントを表しています。
- SDMはnSTATUS信号を1 ms -0.5 ms/+9.5 msの間Lowに駆動し、コンフィグレーション・エラーを示します。 インテル® Stratix® 10デバイスはCONF_DONEをアサートしません。これは、コンフィグレーションが正常に終了しなかったことを示します。
- SDMはエラー状態に入ります。エラー状態の間、nCONFIGはHighの状態になっています。アプリケーションはnCONFIGをHighからLowに駆動し、次にLowからHighに駆動してコンフィグレーションを再開する必要があります。
- SDMはアイドル状態に入ります。外部ホストはnCONFIGをディアサートします。nCONFIGでLowからHighの遷移を駆動することにより、デバイスのリコンフィグレーションに向けた準備が整います。デバイスのパワーダウン・シーケンスに従いデバイスの電源を再投入することも可能です。注: nCONFIG信号は、nSTATUSと同じ値を持つ場合にのみレベルの変更が可能です。この制約は、nSTATUS = 1の場合にnCONFIGは1から0に遷移できることを意味します。nSTATUS = 0の場合、nCONFIGは0から1に遷移できます。エラー報告を除いて、nSTATUSはnCONFIGに従ってのみ変化します。
電源供給のステータス
パワーオンリセット (POR) は、電源出力が推奨の動作範囲内になるまで インテル® Stratix® 10デバイスをリセット状態に維持します。tRAMP は、最大電源ランプタイムを定義します。PORがtRAMP タイムを満たさない場合、 インテル® Stratix® 10デバイスのI/Oピンとプログラミング・レジスターはトライステートを維持します。
PORの詳細については、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。tRAMP の詳細については、 インテル® Stratix® 10デバイス・データシートを参照してください。
2.2. コンフィグレーション・フローの図
この項では、 インテル® Stratix® 10デバイスのコンフィグレーション・フローについて説明します。
起動
- インテル® Stratix® 10の電源は、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドの インテル® Stratix® 10デバイスのパワーアップ・シーケンス要件の章で説明されているガイドラインに従い、電力を供給します。
- 電源が正しい動作電圧に達すると、デバイス全体のパワーオンリセット (POR) がアサートされます。外部電源のランプは、電源が動作電圧に達するまで最小ランプレートよりも遅くなってはいけません。
- コンフィグレーション中に、内部回路はSDM_IO0、SDM_IO8、SDM_IO16を内部でLowにプルダウンします。内部回路は残りのSDM_IOピンをウィークHighにプルアップします。
- 内部回路はPORの後、デバイスがユーザーモードになるまですべてのGPIOピンをウィークHighにプルアップします。
SDMのスタートアップ
- SDMは、起動時にMSELピンをサンプリングします。
- MSELがJTAGに設定されている場合、SDMはスタートアップ状態を維持します。
- SDMはオンチップブートROMに格納されたファームウェアを実行し、ホストが nCONFIGをHighに駆動するまでアイドル状態に入ります。ホストは、クロックがすべて安定するまでnCONFIGをHighに駆動しないでください。
アイドル
- SDMは、外部ホストがnCONFIGピンをLowからHighに駆動してコンフィグレーションを開始するまでアイドル状態を維持します。あるいは、SDMはエラー状態から脱した後にアイドル状態に入ります。
コンフィグレーションの開始
- SDMがコンフィグレーション開始要求 (nCONFIG = HIGH) を受信すると、SDMはnSTATUSピンをHighに駆動し、コンフィグレーションの開始を通知します。
- コンフィグレーション・データを受信すると、SDMは認証、復号、および復元を実行します。
- コンフィグレーション中およびユーザーモードでは、nCONFIGピンはHighに維持されます。ホストはコンフィグレーション・エラーがないかについて、nSTATUSピンを継続的に監視します。
コンフィグレーションの成功
- SDMはすべてのビットストリームを正常に受信すると、CONF_DONEピンをHighに駆動します。
- CONF_DONEピンは、ビットストリーム転送が成功したことを外部ホストに通知します。
コンフィグレーション・エラー
- nSTATUSピンのLowパルスは、コンフィグレーション・エラーを示します。
- エラーにはリコンフィグレーションが必要です。
- Lowパルスによってエラーが示されると、コンフィグレーションは停止します。nSTATUSピンはHighのままです。
- エラーに続きSDMは、外部ホストがnCONFIGをLowに駆動した後にnSTATUSをLowに駆動します。
- nSTATUSピンがコンフィグレーション前の初期のLow状態に回復した後、デバイスはアイドル状態になります 。
ユーザーモード
- SDMは、内部レジスターを初期化した後にINIT_DONEピンをHighに駆動し、GPIOピンをハイ・インピーダンス状態から解放します。デバイスはユーザーモードに入ります。デバイス全体は同時にユーザーモードに入りません。インテルでは、リセットリリースをデザインに含めることを要件にしています。リセット・リリース・インテルFPGA IPのnINIT_DONE出力を使用し、FPGAファブリック全体がユーザーモードになるまでアプリケーション・ロジックをリセット状態に保持します。このIPをデザインに含めない場合、断続的なアプリケーション・ロジック・エラーが発生する可能性があります。
- ユーザーモードでは、nCONFIGピンはHighに維持されます。
-
nCONFIGピンをLowからHighに駆動し、デバイスをリコンフィグレーションすることができます。
デバイス・クリーニング
- デバイスがクリーンの状態では、デザインの機能が停止します。
- デバイス・クリーニングはすべてのコンフィグレーション・データを消去します。
- インテル® Stratix® 10デバイスは、CONF_DONEおよびINIT_DONEをLowに駆動します。
- SDMはデバイス・クリーニングが完了すると、nSTATUSピンをLowに駆動します。
JTAGコンフィグレーション
2.3. HPS、 PCIe 、eSRAM、HBM2の追加クロック要件
- HBM2: pll_ref_clkおよびext_core_clk
- eSRAM: CLK_ESRAM_[0,1]pおよびCLK_ESRAM_[0,1]n
- HPS EMIF: pll_ref_clk
- LタイルおよびHタイル PCIe* チャネル: REFCLK_GXB
- Eタイル: REFCLK_GXE
2.4. インテル Stratix 10のコンフィグレーション・ピン
- 電源投入後、SDM I/Oピン0、8、16にはウィークプルダウンがあります。そのほかのすべてのSDM I/Oピンには、ウィークプルアップがあります。(これらの初期電圧レベルは、初期化中の正しい動作を保証します。例えば、 Avalon® -STコンフィグレーションのSDM_IO8は Avalon® -STのReady信号であり、デバイスがFPGAコンフィグレーション状態に達するまでアサートされてはいけません。)
- ブートROMはMSELをサンプリングして指定されたコンフィグレーション・スキームを特定し、そのコンフィグレーション・スキームに必要なピンを駆動します。指定されたコンフィグレーション・スキームに必要のないSDM I/Oピンは弱くプルアップされた状態で維持されます。
- SDM I/Oピンは約10 msでデザインが指定する状態になります。
- デバイス・クリーニング後、SDMはファームウェアからピン情報を読み取り、デザインで指定されているピンの状態を復元します。デバイスをリコンフィグレーションすると、SDMはデバイスの初期化時に更新されたピン情報を使用します。
2.4.1. SDMピンのマッピング
SDM I/Oピンは、コンフィグレーションおよび、電源管理やSEU検出などのその他の機能に使用することができます。SDM I/Oピンの機能を指定するには、 インテル® Quartus® Prime開発ソフトウェアのDevice > Configuration > Device and Pin Options ダイアログボックスを使用します。SDM入力信号にはすべて、シュミットトリガーが含まれています。SDM出力はすべて、オープンコレクターです。
Avalon® -ST x8およびAS x4における固定SDM I/Oピン割り当て
Avalon® -ST x8およびAS x4のコンフィグレーション・スキームでは、次の表に記載されている専用のSDM I/Oピンの割り当てを使用します。MSEL、AVSTx8_DATA0からAVSTx8_DATA8、およびAS x4にこの表の割り当てを使用します。
SDMピン | MSEL機能 | コンフィグレーション・ソースの機能 | |
---|---|---|---|
Avalon® -ST x8 | AS x4 | ||
SDM_IO0 | — | — | — |
SDM_IO1 | — | AVSTx8_DATA2 | AS_DATA1 |
SDM_IO2 | — | AVSTx8_DATA0 | AS_CLK |
SDM_IO3 | — | AVSTx8_DATA3 | AS_DATA2 |
SDM_IO4 | — | AVSTx8_DATA1 | AS_DATA0 |
SDM_IO5 | MSEL0 | — | AS_nCSO |
SDM_IO6 | — | AVSTx8_DATA4 | AS_DATA3 |
SDM_IO7 | MSEL1 | — | AS_nCS2 |
SDM_IO8 | — | AVST_READY | AS_nCS3 |
SDM_IO9 | MSEL2 | — | AS_nCS1 |
SDM_IO10 | — | AVSTx8_DATA7 | — |
SDM_IO11 | — | AVSTx8_VALID | — |
SDM_IO12 | — | — | — |
SDM_IO13 | — | AVSTx8_DATA5 | — |
SDM_IO14 | — | AVSTx8_CLK | — |
SDM_IO15 | — | AVSTx8_DATA6 | — |
SDM_IO16 | — | — | — |
2.4.2. MSELの設定
電源投入後、MSEL[2:0] ピンは インテル® Stratix® 10デバイスのコンフィグレーション・スキームを指定します。4.7 kΩ抵抗を使用し、お使いのコンフィグレーション・スキームのMSEL[2:0] 設定で要求されている内容に応じて、MSEL[2:0] ピンをVCCIO_SDMまでプルアップする、またはグランドにプルダウンします。
コンフィグレーション・スキーム | MSEL[2:0] |
---|---|
Avalon-ST (x32) | 000 |
Avalon-ST (x16) | 101 |
Avalon-ST (x8) | 110 |
AS (Fastモード – CvP向け)2 | 001 |
AS (Normalモード) | 011 |
SD/MMC x4/x8 | 100 |
JTAG only3 | 111 |
2.4.3. オプションのコンフィグレーション信号に向けたデバイス・コンフィグレーション・ピン
固定された割り当てのないデバイス・コンフィグレーション・ピン
信号名 | コンフィグレーション・スキーム | |||
---|---|---|---|---|
Avalon® -ST | AS x4 | |||
x8 | x16 | x32 | ||
PWRMGT_SCL |
SDM_IO0 |
SDM_IO0 SDM_IO14 |
SDM_IO0 SDM_IO14 |
SDM_IO0 SDM_IO14 |
PWRMGT_SDA |
SDM_IO12 SDM_IO16 |
SDM_IO11 SDM_IO12 SDM_IO16 |
SDM_IO11 SDM_IO12 SDM_IO16 |
SDM_IO11 SDM_IO12 SDM_IO16 |
PWRMGT_ALERT |
SDM_IO0 SDM_IO9 SDM_IO12 |
SDM_IO0 SDM_IO9 SDM_IO12 |
SDM_IO0 SDM_IO12 |
SDM_IO0 SDM_IO12 |
CONF_DONE |
SDM_IO0 SDM_IO5 SDM_IO12 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
INIT_DONE |
SDM_IO0 SDM_IO5 SDM_IO12 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
CVP_CONFDONE | サポートされていません | サポートされていません | サポートされていません |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SEU_ERROR |
SDM_IO0 SDM_IO5 SDM_IO7 SDM_IO9 SDM_IO12 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
HPS_COLD_nRESET |
SDM_IO0 SDM_IO5 SDM_IO7 SDM_IO9 SDM_IO12 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
Direct to Factory Image | 適用されません | 適用されません | 適用されません |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
DATA UNLOCK |
SDM_IO0 SDM_IO5 SDM_IO7 SDM_IO9 SDM_IO12 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO1 SDM_IO2 SDM_IO3 SDM_IO4 SDM_IO5 SDM_IO6 SDM_IO7 SDM_IO9 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
SDM_IO0 SDM_IO10 SDM_IO11 SDM_IO12 SDM_IO13 SDM_IO14 SDM_IO15 SDM_IO16 |
インテルでは、CONF_DONEピンおよびINIT_DONEピンをSDM I/Oピン0または16に割り当てることを推奨しています。これらのピンは弱い内部プルダウン抵抗を備えます。これらのピンを使用できない場合、外部の4.7 kΩプルダウン抵抗を含め、誤った信号を回避することをインテルでは推奨しています。
2.4.3.1. オプションのコンフィグレーション・ピンの指定
これらのコンフィグレーション・ピンを追加して割り当てるには、次の手順を実行します。
- Assignmentsメニューで、Deviceをクリックします。
- Device and Pin OptionsダイアログボックスでConfigurationカテゴリーを選択し、Configuration Pins Optionsをクリックします。
-
Configuration Pinウィンドウで、デザインに含めるコンフィグレーション・ピンをイネーブルにし、割り当てます。
- 確認のOKをクリックして、Configuration Pinダイアログボックスを閉じます。
2.4.3.2. 兼用ピンのイネーブル
- I/OバンクのVCCIOを1.8 Vに設定します
- これらのピンに1.8 V I/O Standardを割り当てます
これらの設定を兼用ピンに割り当てるには、次の手順を行います。
- Assignmentsメニューで、Deviceをクリックします。
- Device and Pin Optionsダイアログボックスで、Dual-Purpose Pinsカテゴリーを選択します。
-
Dual-purpose pinsテーブルのValue列でピン機能を設定します。
-
確認のOKをクリックして、Device and Pin Optionsを閉じます。
重要: Avalon® STコンフィグレーション・スキームを使用する場合、兼用 Avalon® STピンは次の制約をともないます。
- Avalon® -STインターフェイスをパーシャル・リコンフィグレーション (PR) に使用することはできません。
- HPSを含むデザインにおいて、 Avalon® -STピンをユーザーモードで使用することはできません。この制約は、HPSを含むデザインで Avalon® -STを兼用I/Oとして使用できないことを意味します。
2.4.3.3. コンフィグレーション・ピンのI/O Standard、ドライブ強度、およびIBISモデル
コンフィグレーション・ピンの機能 | 方向 | I/O Standard | ドライブ強度 (mA) | IBISモデル |
---|---|---|---|---|
TDO | 出力 | 1.8V LVCMOS | 8 | 18_io_d8s1_sdm_lvl |
TMS | 入力 | シュミットトリガー入力 | — | 18_in_sdm_lv |
TCK | 入力 | シュミットトリガー入力 | — | 18_in_sdm_lv |
TDI | 入力 | シュミットトリガー入力 | — | 18_in_sdm_lv |
nSTATUS | 出力 | 1.8V LVCMOS | 8 | 18_in_sdm_lv |
OSC_CLK_1 | 入力 | シュミットトリガー入力 | — | 18_in_sdm_lv |
nCONFIG | 入力 | シュミットトリガー入力 | — | 18_in_sdm_lv |
SDM_IO[16:0] | I/O | シュミットトリガー入力または1.8V LVCMOS | 8 |
入力: 18_in_sdm_lv 出力: 18_in_sdm_lv |
AVST_DATA[31:0]、AVST_CLK、AVST_VALID | I/O | シュミットトリガー入力または1.8V LVCMOS | 8 |
入力: 18_in_sdm_lv 出力: 18_in_sdm_lv |
IBISモデルは、IBIS Models for Intel DevicesのWebページよりダウンロードできます。現在のリリースでは、 インテル® Quartus® Prime開発ソフトウェアはコンフィグレーション・ピンに向けたIBISモデルの生成をサポートしていません。
未使用のSDMピン
インテル® Quartus® Prime開発ソフトウェアでは、未使用のSDMピンにその他の機能を指定可能です。
2.4.3.4. 電源管理およびSmartVIDに向けたSDM I/Oピン
インテルでは、Analog DevicesのLTM4677デュアル18Aまたはシングル36A μModule (パワーモジュール) レギュレータ、パワーシステム・マネージメント付きを使用し、PMBusを調整することを推奨しています。LTM4677デバイスは、 Device > Device and Pin Options > Power Management & VID > Slave device typeパラメーターのデフォルト設定です。異なるPMBusレギュレーターを使用する場合は、デフォルト設定をLTM4677からOtherに変更します。
ピンの割り当ておよびPMBusの設定に関する詳細は、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
2.4.3.5. パーシャル・リコンフィグレーション (PR) に向けたピンの指定
次の信号は、 インテル® Stratix® 10デバイスにおけるパーシャル・リコンフィグレーションを制御します。
- PR_REQUEST
- PR_READY
- PR_ERROR
- PR_DONE
これらのパーシャル・リコンフィグレーション信号は、Partial Reconfiguration External Configuration Controller Intel® FPGA IPに接続します。
2.5. コンフィグレーション・クロック
2.5.1. コンフィグレーション・クロック・ソースの設定
コンフィグレーション・クロック・ソースを選択するには、次の手順を実行します。
- OSC_CLK_1をクロックソースとして指定するには、Assignmentsメニューで、Deviceをクリックします。
- Device and Pin Optionsダイアログボックスで、Generalカテゴリーを選択します。
-
Configuration clock sourceドロップダウン・メニューからコンフィグレーション・クロック・ソースを指定します。
- 確認のOKをクリックして、Device and Pin Optionsを閉じます。
2.5.2. OSC_CLK_1クロック入力
OSC_CLK_1の要件
OSC_CLK_1入力クロックを外部クロックソースで駆動し、OSC_CLK_1を インテル® Quartus® Prime開発ソフトウェアで有効にする場合、デバイスはコンフィグレーション・ビットストリームの大部分を250 MHzでロードします。 インテル® Stratix® 10デバイスはOSC_CLK_1のほかに、170から230 MHzの周波数でコンフィグレーション・プロセスを実行する内部オシレーターを備えます。 インテル® Stratix® 10 デバイスは常にこの内部オシレーターを使用し、ビットストリームの最初のセクション (およそ200 KB) をロードします。残りのデバイス・コンフィグレーションに対しては、SDMはどちらのクロックソースでも使用することが可能です。内部オシレーターを使用する場合、OSC_CLK_1を未接続にしておくことができます。
コンフィグレーションのクロックソースとしてOSC_CLK_1を選択した場合、次の条件下ではデバイス・コンフィグレーションが成功しない可能性があります。
- OSC_CLK_1ピンの駆動に失敗した場合。
- 誤った周波数でOSC_CLK_1ピンを駆動している場合。OSC_CLK_1ピンを駆動するには、次のいずれかの入力リファレンス・クロック周波数を選択します。
- 25 MHz
- 100 MHz
- 125 MHz
インテル® Stratix® 10デバイスはOSC_CLK_1ソースクロックの周波数を逓倍し、コンフィグレーションに250 MHzのクロックを生成します。OSC_CLK_1ソースを使用することで、可能な限り最速のコンフィグレーションが実現できるようになります。 インテル® Quartus® Prime開発ソフトウェアを使用してこの周波数を設定する手順については、コンフィグレーション・クロック・ソースの設定を参照してください。
# EXTERNAL OSCILLATOR CLOCK VIA OSC_CLK_1 PIN set_global_assignment -name DEVICE_INITIALIZATION_CLOCK OSC_CLK_1_25MHZ set_global_assignment -name DEVICE_INITIALIZATION_CLOCK OSC_CLK_1_100MHZ set_global_assignment -name DEVICE_INITIALIZATION_CLOCK OSC_CLK_1_125MHZ
デバイスの電源を再投入せずにリコンフィグレーションする場合のコンフィグレーション・クロック要件
OSC_CLK_1をコンフィグレーションに指定し、 インテル® Stratix® 10デバイスの電源を切断することなくリコンフィグレーションを行う場合、デバイスはOSC_CLK_1でのみリコンフィグレーションできます。このシナリオでは、OSC_CLK_1はフリーランニングのクロックでなければなりません。
デバイスの電源を再投入してコンフィグレーションする場合のコンフィグレーション・クロック要件
電源を切断し、OSC_CLK_1をコンフィグレーションに指定する場合、 インテル® Stratix® 10デバイスは内部オシレーターを使用してビットストリームの最初のセクションをロードし、OSC_CLK_1を残りの部分に使用します。
3. インテル Stratix 10のコンフィグレーション・スキーム
3.1. Avalon–STコンフィグレーション
Avalon® -STのコンフィグレーション・スキームは、以前のデバイスファミリーで利用可能であったFPPモードに代わるものです。 Avalon® -STは、 インテル® Stratix® 10デバイスに向けた最速のコンフィグレーション・スキームです。このスキームは、マイクロプロセッサー、 MAX® II、 MAX® V、 インテル® MAX® 10などの外部ホストを使用してコンフィグレーションを駆動します。外部ホストは、フラッシュメモリーなどの外部ストレージからFPGAへのコンフィグレーション・データの転送を制御します。コンフィグレーション・プロセスを制御するロジックは外部ホストにあります。 MAX® II、 MAX® V、または インテル® MAX® 10デバイスのPFL II IPをホストとして使用しコンフィグレーション・データをフラッシュ・メモリー・デバイスから読み出し、 インテル® Stratix® 10デバイスをコンフィグレーションすることができます。 Avalon® -STコンフィグレーション・スキームは、 インテル® Stratix® 10デバイスではなく外部ホストがコンフィグレーションを制御するため、パッシブと呼ばれます。
プロトコル | データ幅 (ビット) | 最大クロックレート | 最大データレート | MSEL[2:0] |
---|---|---|---|---|
Avalon® -ST | 32 | 125 MHz | 4000 Mb | 000 |
16 | 125 MHz | 2000 Mb | 101 | |
8 | 125 MHz | 1000 Mb | 110 |
信号名 | ピンの種類 | 方向 | 電源供給元 |
---|---|---|---|
nSTATUS | SDM I/O | 出力 | VCCIO_SDM |
nCONFIG | SDM I/O | 入力 | VCCIO_SDM |
MSEL[2:0] | SDM I/O、兼用 | 入力 | VCCIO_SDM |
CONF_DONE 4 | SDM I/O | 出力 | VCCIO_SDM |
AVST_READY | SDM I/O | 出力 | VCCIO_SDM |
AVSTx8_DATA[7:0] | SDM I/O | 入力 | VCCIO_SDM |
AVSTx8_VALID | SDM I/O | 入力 | VCCIO_SDM |
AVSTx8_CLK | SDM I/O | 入力 | VCCIO_SDM |
AVST_DATA[31:0] | GPIO、兼用 | 入力 | VCCIO |
AVST_VALID | GPIO、兼用 | 入力 | VCCIO |
AVST_CLK | GPIO、兼用 | 入力 | VCCIO |
コンフィグレーション・タイミングの見積もりについては、 インテル® Stratix® 10デバイス・データシートを参照してください。
3.1.1. Avalon -STコンフィグレーション・スキームのハードウェア・コンポーネントとファイルの種類
次のコンポーネントを使用し、 Avalon® -STコンフィグレーション・スキームを実装することができます。
- PFL II IPおよび、コモン・フラッシュ・インターフェイス (CFI) フラッシュまたはクワッドSPIフラッシュメモリーを備えるCPLD
- 外部メモリーを備えるカスタムホスト (一般的にはマイクロプロセッサー)
- インテル® Quartus® PrimeのプログラマーをPCBに接続する インテル®FPGAダウンロード・ケーブルII
次のブロック図は、 Avalon® -STコンフィグレーション・スキームを使用する場合のコンポーネントとデザインフローを表しています。
プログラミング・ファイルの種類 | 拡張子 | 説明 |
---|---|---|
Programmer Object File | .pof |
.pofは、独自のインテルFPGAファイルタイプです。JTAGヘッダーを介してPFL II IPコアを使用し、.pofを外部CFIフラッシュまたはシリアル・フラッシュ・デバイスに書き込みます。 |
Raw Binary File | .rbf |
.rbfを Avalon® -STコンフィグレーション・スキームで使用することも可能です。CPUまたはマイクロコントローラーなどを外部ホストとして使用します。 コンフィグレーション・ビットストリームまたは.rbfファイル・ディレクトリーのデータは、サードパーティー製のプログラマーを介してフラッシュにプログラミングすることができます。その後、外部ホストを使用し、デバイスを Avalon® -STコンフィグレーション・スキームでコンフィグレーションすることができます。 |
サードパーティー製のマイクロプロセッサーを Avalon® -STコンフィグレーションに選択する場合のプロトコルの詳細に関しては、 Avalon® インターフェイスの仕様書の Avalon® ストリーミング・インターフェイスを参照してください。
3.1.2. Avalon-STデバイス・コンフィグレーションの有効化
デバイス・コンフィグレーションに Avalon® -STインターフェイスを指定するには、次の作業を行います。
- Assignmentsメニューで、Deviceをクリックします。
- Device and Pin Optionsダイアログボックスで、Configurationカテゴリーを選択します。
-
ConfigurationウィンドウのConfiguration schemeドロップダウン・リストで、適切な
Avalon®
-STバス幅を選択します。
- 確認のOKをクリックして、Device and Pin Optionsダイアログボックスを閉じます。
3.1.3. AVST_READY信号
インテル® Stratix® 10デバイスのコンフィグレーション・ファイルは、高度に圧縮が可能です。コンフィグレーション時にデバイス内のビットストリームを復元するには、データをさらに送信する前にホストが一時停止することが必要になります。 インテル® Stratix® 10デバイスは、データを受信する準備が整うとAVST_READY信号をアサートします。AVST_READY信号は、nSTATUSピンがHighの場合にのみ有効です。また、ホストはAVST_READY信号をモニターすることでバックプレッシャーを処理する必要があり、AVST_READY信号のアサート後に、任意のタイミングでAVST_VALID信号をアサートすることが可能です。ホストはコンフィグレーション中にAVST_READY信号を監視する必要があります。
インテル® Stratix® 10デバイスがホストに送信するAVST_READY信号は、AVSTx8_CLKまたはAVST_CLKに同期していません。 インテル® Stratix® 10デバイスを問題なくコンフィグレーションするには、ホストは次の制約に従う必要があります。
- ホストは、AVST_READY信号のディアサート後、6データワード以上を駆動してはいけません。これには2ステージ・レジスター・シンクロナイザーによる遅延が含まれます。
- ホストは2ステージ・レジスター・シンクロナイザーを使用して、AVST_READY信号をAVST_CLK信号に同期させる必要があります。以下は、2ステージ・レジスター・シンクロナイザーのレジスター転送レベル (RTL)
のコード例です。
always @(posedge avst_clk or negedge reset_n) begin if (~reset_n) begin fpga_avst_ready_reg1 <= 0; fpga_avst_ready_reg2 <= 0; else fpga_avst_ready_reg1 <= fpga_avst_ready; fpga_avst_ready_reg2 <= fpga_avst_ready_reg1; end end
上記例において- AVST_CLK信号は、PFL II IPまたは Avalon® -STコントローラー・ロジックのいずれかによって発生します。
- fpga_avst_readyは、 インテル® Stratix® 10デバイスからのAVST_READY信号です。
- fpga_avst_ready_reg2信号は、AVST_CLKに同期しているAVST_READY信号です。
AVST_CLK信号とAVST_DATA 信号は、ホストで適切に制約する必要があります。ホストと インテル® Stratix® 10デバイス間のこれらの信号でタイミング解析を実行し、Avalon-STコンフィグレーションのタイミング仕様が満たされていることを確認します。タイミング仕様については、 インテル® Stratix® 10デバイス・データシートのAvalon-STのコンフィグレーション・タイミングの章を参照してください。
オプションとして、CONF_DONE信号を監視し、フラッシュがすべてのデータをFPGAに送信したこと、またはコンフィグレーション・プロセスが完了したことを示すことができます。
PFL II IPコアをコンフィグレーション・ホストとして使用する場合、 インテル® Quartus® Prime開発ソフトウェアを使用し、PFL II IPコアを介してバイナリー・コンフィグレーション・データをフラッシュメモリーに格納することができます。
Avalon-STアダプターIPコアをコンフィグレーション・ホストの一部として使用する場合、Source Ready Latencyの値を1から6の間に設定します。
Avalon-ST x8コンフィグレーション・スキームは、SDMピンのみを使用します。Avalon-ST x16およびx32コンフィグレーション・スキームでは、コンフィグレーション後に汎用IOピンとして使用できる兼用I/Oピンのみを使用します。
3.1.4. RBFコンフィグレーション・ファイルの形式
.rbfファイルのデータは、リトル・エンディアン形式です。
ダブルワード = 01EE1B02 | |||
LSB: BYTE0 = 02 | BYTE1 = 1B | BYTE2 = EE | MSB: BYTE3 = 01 |
D[7:0] | D[15:8] | D[23:16] | D[31:24] |
0000 0010 | 0001 1011 | 1110 1110 | 0000 0001 |
WORD0 = 1B02 |
WORD1 = 01EE |
||
LSB: BYTE0 = 02 | MSB: BYTE1 = 1B | LSB: BYTE2 = EE | MSB: BYTE3 = 01 |
D[7:0] | D[15:8] | D[7:0] | D[15:8] |
0000 0010 | 0001 1011 | 1110 1110 | 0000 0001 |
3.1.5. Avalon-STシングルデバイス・コンフィグレーション
それぞれのピンの使用方法および要件の詳細については、 インテル® Stratix® 10デバイスファミリー・ピン接続ガイドラインを参照してください。
図に関する注記
- すべてのコンフィグレーション・スキームの正しい抵抗プルアップ値およびプルダウン値については、MSELの設定を参照してください。
- MSELピンは兼用です。電源投入後、これらのピンを他の機能に再割り当てすることができます。詳細については、兼用ピンのイネーブルを参照してください。
- 上の3つの図中のシンクロナイザーは、ホストがFPGAまたはCPLDであれば内部に存在する場合があります。ホストがマイクロプロセッサーの場合は、単体のシンクロナイザーを使用する必要があります。
3.1.6. Avalon -STコンフィグレーション・スキームに向けたデバッグ・ガイドライン
- Avalon® -STコンフィグレーション・スキームでは、フロー制御信号であるAVST_READYを監視する必要があります。AVST_READY信号は、デバイスがコンフィグレーション・データを受信できるかどうかを示します。
- コンフィグレーション・データが転送されていない際に、AVST_CLKおよびAVSTx8_CLKクロック信号を一時停止することはできません。 AVST_READYおよびAVST_VALIDがLowの場合、データは転送されません。AVST_CLKおよびAVSTx8_CLKクロック信号は、CONF_DONEがアサートされるまで継続して動作している必要があります。
デバッグに関するヒント
デバッグガイドの章のコンフィグレーション・デバッグ・チェックリストを確認後、 Avalon® -ST コンフィグレーション・スキームに関するこれらのデバッグのヒントを考慮します。
- AVST_VALIDは、SDMがAVST_READYをアサートした後にのみアサートします。
- AVST_VALIDは、AVST_DATAが有効な場合にのみアサートします。
- AVST_CLKクロック信号は、コンフィグレーションが完了するまで継続し、フリーランニングであることを確認します。AVST_CLKは、CONF_DONEのアサート後に停止可能です。初期化状態はAVST_CLK信号を必要としません。
- x8モードを使用している場合、このインターフェイスに専用のSDM_IOピンを使用していることを確認します (クロック、データ、ValidおよびReady)。
- x16またはx32モードを使用している場合、x16またはx32ピンが含まれるI/Oバンク (I/Oバンク3A) を1.8 Vで給電します。
- インテルQuartus Primeプロ・エディションのプロジェクトで適切な Avalon® -STコンフィグレーション・スキームが選択されていることを確認します。
- MSELピンがPCBでこのモードを反映していることを確認します。
- インテル® Stratix® 10デバイスの電源投入前にホストデバイスがコンフィグレーション・ピンを駆動しないことを確認します。
3.1.7. Avalon-ST x8におけるQSFの割り当て
これらの設定は、SDM_IOピンのほとんどを必要とする、PMBusスレーブモードで動作している インテル® Stratix® 10 SmartVIDデバイスに向けたものです。マスターモードにおけるPMBusの制約については、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
# Fitter Assignments # ================== set_global_assignment -name CONFIGURATION_VCCIO_LEVEL 1.8V # SDM IO Assignments # ================== set_global_assignment -name USE_PWRMGT_SCL SDM_IO0 set_global_assignment -name USE_PWRMGT_SDA SDM_IO12 set_global_assignment -name USE_PWRMGT_ALERT SDM_IO9 set_global_assignment -name USE_CONF_DONE SDM_IO16 set_global_assignment -name USE_SEU_ERROR SDM_IO5 # Configuration settings # ====================== # The following setting also supports Intel Stratix 10 devices set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "AVST X8" set_global_assignment -name USE_CONFIGURATION_DEVICE OFF set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ENABLE_ED_CRC_CHECK ON set_global_assignment -name MINIMUM_SEU_INTERVAL 479 # SmartVID feature PMBus settings [Slave mode settings only] # ========================================================== set_global_assignment -name VID_OPERATION_MODE "PMBUS SLAVE" set_global_assignment -name PWRMGT_DEVICE_ADDRESS_IN_PMBUS_SLAVE_MODE 3F
Assignments > Device > Device and Pin Options > Configuration > Configuration Pin Optionsを使用し、SDM_IOコンフィグレーション・ピンを設定することもできます。
3.1.8. Avalon-ST x16におけるQSFの割り当て
これらの設定は、SDM_IOピンのほとんどを必要とする、PMBusスレーブモードで動作している インテル® Stratix® 10 SmartVIDデバイスに向けたものです。マスターモードにおけるPMBusの制約については、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
# Fitter Assignments # ================== set_global_assignment -name CONFIGURATION_VCCIO_LEVEL 1.8V # SDM IO Assignments # ================== set_global_assignment -name USE_PWRMGT_SCL SDM_IO0 set_global_assignment -name USE_PWRMGT_SDA SDM_IO12 set_global_assignment -name USE_PWRMGT_ALERT SDM_IO9 set_global_assignment -name USE_CONF_DONE SDM_IO16 set_global_assignment -name USE_SEU_ERROR SDM_IO5 # Configuration settings # ====================== # # The following setting also supports Intel Stratix 10 devices set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "AVST X16" set_global_assignment -name USE_CONFIGURATION_DEVICE OFF set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ENABLE_ED_CRC_CHECK ON set_global_assignment -name MINIMUM_SEU_INTERVAL 479 # SmartVID feature PMBus settings [Slave mode settings only] # ========================================================== set_global_assignment -name VID_OPERATION_MODE "PMBUS SLAVE" set_global_assignment -name PWRMGT_DEVICE_ADDRESS_IN_PMBUS_SLAVE_MODE 3F
Assignments > Device > Device and Pin Options > Configuration > Configuration Pin Optionsを使用し、SDM_IOコンフィグレーション・ピンを設定することもできます。
3.1.9. Avalon-ST x32におけるQSFの割り当て
これらの設定は、SDM_IOピンのほとんどを必要とする、PMBusスレーブモードで動作している インテル® Stratix® 10 SmartVIDデバイスに向けたものです。マスターモードにおけるPMBusの制約については、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
# Fitter Assignments # ================== set_global_assignment -name CONFIGURATION_VCCIO_LEVEL 1.8V # SDM IO Assignments # ================== set_global_assignment -name USE_PWRMGT_SCL SDM_IO14 set_global_assignment -name USE_PWRMGT_SDA SDM_IO16 set_global_assignment -name USE_PWRMGT_ALERT SDM_IO12 set_global_assignment -name USE_CONF_DONE SDM_IO5 set_global_assignment -name USE_INIT_DONE SDM_IO0 set_global_assignment -name USE_SEU_ERROR SDM_IO1 # Configuration settings # ====================== # # The following setting also supports Intel Stratix 10 devices set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "AVST X32" set_global_assignment -name USE_CONFIGURATION_DEVICE OFF set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ENABLE_ED_CRC_CHECK ON set_global_assignment -name MINIMUM_SEU_INTERVAL 479 # SmartVID feature PMBus settings [Slave mode settings only] # ========================================================== set_global_assignment -name VID_OPERATION_MODE "PMBUS SLAVE" set_global_assignment -name PWRMGT_DEVICE_ADDRESS_IN_PMBUS_SLAVE_MODE 3F
Assignments > Device > Device and Pin Options > Configuration > Configuration Pin Optionsを使用し、SDM_IOコンフィグレーション・ピンを設定することもできます。
3.1.10. Avalon -STコンフィグレーション・スキームで使用するIP: インテルFPGAパラレル・フラッシュ・ローダーII IPコア
3.1.10.1. 機能の説明
パラレル・フラッシュ・ローダーIIインテルFPGA IP (PFL II) を MAX® II、 MAX® V、または インテル® MAX® 10デバイスなどの外部ホストとともに使用し、次のタスクを実行することが可能です。
- JTAGインターフェイスを使用したフラッシュ・メモリー・デバイスへのコンフィグレーション・データのプログラミング
- フラッシュ・メモリー・デバイスからの、 Avalon® -STコンフィグレーション・スキームでの インテル® Stratix® 10デバイスのコンフィグレーション
3.1.10.1.1. CFIフラッシュに向けた.pofの生成とプログラミング
インテル® Quartus® Prime開発ソフトウェアは、デザインのコンパイル時に.sofを生成します。.pofは、この.sofを使用して生成します。このプロセスには次の手順が含まれます。
- インテル® Quartus® PrimeのFile > Programming File Generatorを使用し、PFL II IPに向けた.pofの生成
- インテル® Quartus® Primeのプログラマーを使用し、 インテル® Stratix® 10デバイスの.pofをフラッシュデバイスに書き込み
PFL II IPコアは、より短時間でのコンフィグレーションの達成に向け、バースト読み出しモードでデュアル・フラッシュ・メモリー・デバイスをサポートします。同じデータバス、クロック、および制御信号を使用することで、2つのMT29EW CFIフラッシュ・メモリー・デバイスを並列にホストに接続することができます。FPGAのコンフィグレーション中、AVST_CLKの周波数はflash_clkの周波数に比べて4倍高速になります。
3.1.10.1.2. PFL II IPコアを使用したAvalon-STコンフィグレーションの制御
PFL II IPコアは、フラッシュ・メモリー・デバイスのプログラミングとFPGAコンフィグレーションのいずれか、またはその両方に使用することができます。以下の条件のいずれかがデザインにあてはまる場合、両方の機能を実行するには個別にPFL IIの機能を作成します。
- フラッシュデータ変更の頻度が低い場合。
- コンフィグレーション・ホストにアクセスするJTAGまたはインシステム・プログラミング (ISP) がある場合。
- インテル以外のFPGAデータでフラッシュ・メモリー・デバイスをプログラミングする場合 (ASSP用の初期化ストレージなど)。PFL II IPコアを使用し、以下の目的に対してフラッシュ・メモリー・デバイスをプログラミングすることが可能です。
- 初期化データの書き込み
- ホストロジックでの読み込みおよび初期化制御を実装するデザイン・ソース・コードの格納
3.1.10.1.3. PFL II IPコアとフラッシュアドレスのマッピング
3.1.10.1.4. フラッシュ.pofへの複数ページの実装
ページの合計数と各ページサイズは、フラッシュの集積度に依存します。デザインをページに格納するためのガイドラインを次に示します。
- 異なるFPGAチェーンのデザインは、異なるページにかならず保存します。
- 1つのFPGAチェーンの異なるデザインは、単一ページまたは複数ページに格納することが選択できます。
- FPGAチェーンのデザインを単一ページに格納する場合、デザインの順序はJTAGチェーンのデバイス順序と一致する必要があります。
生成された.sofを使用し、フラッシュ・メモリー・デバイスの.pofを作成します。.sofから.pofへの変換には、次のアドレスモードが利用可能です。
- Blockモード—ページの開始アドレスと終了アドレスを指定できます。
- Startモード—開始アドレスのみ指定できます。各ページの開始アドレスは、8 KB の境界上に配置する必要があります。最初の有効な開始アドレスが0×000000であれば、次の有効な開始アドレスは0×2000のインクリメントになります。
- Autoモード— インテル® Quartus® Prime開発ソフトウェアがページの開始アドレスを自動的に決定します。 インテル® Quartus® Prime開発ソフトウェアは、128 KBの境界上に各ページをアライメントします。最初の有効な開始アドレスが0x000000であれば、次の有効な開始アドレスは0x20000の倍数になります。
3.1.10.1.5. オプションビットの格納
オプションビットには次の情報が含まれます。
- 各ページの開始アドレス。
- フラッシュ・プログラミング用の.pofのバージョン。この値はすべてのページで同じです。
- 各ページのPage-Validビット。Page-Validビットは、開始アドレスのビット0です。PLF II IPコアは、ページのプログラミングが成功した後にこのビットを書き込みます。
Programming File Generatorダイアログボックスを使用して、オプションビットのStart addressを指定します。Programming File GeneratorダイアログボックスのConfiguration TabでAdd Deviceを使用し、フラッシュデバイスを指定します。次に、OPTIONSとEDITをクリックし、オプションビットのStart addressを指定します。このStart addressは、PFL II IPのパラメーターを指定する際にWhat is the byte address of the option bits, in hex?に指定するアドレスと一致する必要があります。
PFL II IPインテルFPGA IPのオプションビットは、パラメーター・エディターを使用して設定します。デフォルトでPFL II IPは、What operating mode will be used?パラメーターにFlash Programmingを表示します。このデフォルトの状態で、FPGA Configurationタブは表示されません。GeneralタブのWhat operating mode will be usedに、FPGA ConfigurationもしくはFlash Programming and FPGA Configurationを選択します。次の図は、FPGA Configurationオプションを示しています。
FPGA ConfigurationタブのWhat is the base address of the option bits, in hex?パラメーターに、オプションビットの16進数アドレスを指定します。
Programming File Generatorダイアログボックスを使用して、オプションビットのStart addressを指定します。Programming File GeneratorダイアログボックスのConfiguration TabでAdd Deviceを使用し、フラッシュデバイスを指定します。次に、OPTIONSとEDITをクリックし、オプションビットのStart addressを指定します。このStart addressは、PFL II IPのパラメーターを指定する際にWhat is the byte address of the option bits, in hex?に指定するアドレスと一致する必要があります。
インテル® Quartus® PrimeのProgramming File Generatorは、.sofを.pofに変換する際に.pofバージョンの情報を生成します。 インテル® Stratix® 10の.pofバージョンの値は、0x05です。次の表に、8ページすべてを使用する.pofのページレイアウト例を示します。この例では、.pofバージョンを0x80に格納します。
セクターオフセット | 値 |
---|---|
0x00–0x03 | ページ0開始アドレス |
0x04–0x07 | ページ0終了アドレス |
0x08–0x0B | ページ1開始アドレス |
0x0C–0x0F | ページ1終了アドレス |
0x10–0x13 | ページ2開始アドレス |
0x14–0x17 | ページ2終了アドレス |
0x18–0x1B | ページ3開始アドレス |
0x1C–0x1F | ページ3終了アドレス |
0x20–0x23 | ページ4開始アドレス |
0x24–0x27 | ページ4終了アドレス |
0x28–0x2B | ページ5開始アドレス |
0x2C–0x2F | ページ5終了アドレス |
0x30–0x33 | ページ6開始アドレス |
0x34–0x37 | ページ6終了アドレス |
0x38–0x3B | ページ7開始アドレス |
0x3C–0x3F | ページ7終了アドレス |
0x40–0x7F | 予約済み |
0x80 5 | .pofバージョン |
0x81-0xFF | 予約済み |
3.1.10.1.6. オプションビットの開始アドレスと終了アドレスの確認
次の表は、開始アドレスのビット・フィールドを示しています。
ビット | 幅 | 説明 |
---|---|---|
31:11 | 21 | アドレス指定可能な開始アドレス |
10:1 | 10 | 予約ビット |
0 | 1 | ページ有効ビット
|
ビット | 幅 | 説明 |
---|---|---|
31:0 | 32 | アドレス指定可能な終了アドレス |
アドレスを復元するには、次を実行します。
- 開始アドレス—13'b0000000000000をアドレス指定可能な開始アドレスに追加します
- 終了アドレス—2'b11をアドレス指定可能な終了アドレスに追加します
次の表に示す値の2つのページアドレスを備える.pofの場合
セクターオフセット | 値 |
---|---|
0x00 – 0x03 | 0x00004000 |
0x04 – 0x07 | 0x00196E30 |
0x08 – 0x0B | 0x001C0000 |
0x0C – 0x0F | 0x00352E30 |
ページ0の場合、開始アドレスビット [31:11] に13'b0000000000000を追加すると、結果は32'b00000000000000010000000000000000 = 0x10000になります。
終了アドレス0x00196E0に2'b11を追加すると、結果は26'b00011001011011100011000011 = 0x65B8C3になります。
ページ1の場合、開始アドレスに13'b0000000000000を追加すると、結果は32'b0000000000011100000000000000000000 = 0x700000になります。
終了アドレス0x00352E30に2’b11を追加すると、結果は32'b00000000110101001011100011000011 = 0xD4B8C3になります。
開始アドレスと終了アドレスは、.mapファイルで表示される各ページの開始アドレスと終了アドレスに関連付けられている必要があります。
3.1.10.1.7. CFIフラッシュ・メモリー・デバイスにおけるページモードとオプションビットの実装
次の図は、3ページを備える.pofのサンプルレイアウトを表しています。終了アドレスは、フラッシュ・メモリー・デバイスの集積度によって異なります。さまざまな集積度のデバイスについては、以下の集積度の違いによるCFIフラッシュ・メモリー・デバイスのバイトアドレス範囲の表を参照してください。メモリーでオプションビットはコンフィグレーション・データに続きます。
次の図は、単一ページにおけるオプションビットのレイアウトを表しています。開始アドレスは8 KBの境界にする必要があるため、ページ開始アドレスのビット0から12は0に設定され、オプションビットには格納されません。
CFIデバイス (メガビット) | アドレス範囲 |
---|---|
8 | 0x0000000–0x00FFFFF |
16 | 0x0000000–0x01FFFFF |
32 | 0x0000000–0x03FFFFF |
64 | 0x0000000–0x07FFFFF |
128 | 0x0000000–0x0FFFFFF |
256 | 0x0000000–0x1FFFFFF |
512 | 0x0000000–0x3FFFFFF |
1024 | 0x0000000–0x7FFFFFF |
3.1.10.2. PFL II IPコアの使用
3.1.10.2.1. .sofファイルから.pofファイルへの変換
- File > Programming File Generatorの順にクリックします。
- Device familyで、 インテル® Stratix® 10を選択します。
- Configuration modeで、使用する Avalon® -STコンフィグレーション・スキームを選択します。
- Output directoryでBrowseをクリックし、出力ファイル・ディレクトリーを選択します。
- Nameで、出力ファイルの名前を指定します。
- Output Filesタブで、生成するファイルのチェックボックスを有効にします。
-
生成するファイルのOutput directoryとNameを指定します。
図 28. Programming File GeneratorのOutput Filesタブ
-
コンフィグレーション・ビットストリームを含む.sofを指定するには、Input Filesタブで、Add Bitstreamをクリックします。
図 29. Input Filesタブ
- ローデータを含めるには、Add Raw Dataをクリックし、Hexadecimal (インテル・フォーマット) 出力ファイル (.hex) もしくはバイナリー (.bin) ファイルを指定します。この手順はオプションです。
- Configuration Deviceタブで、Add deviceをクリックします。Add Deviceダイアログボックスが表示されます。使用可能なパラレル・フラッシュ・デバイスのドロップダウン・リストから、お使いのフラッシュデバイスを選択します。
-
OPTIONS、Editの順にクリックします。Edit Partitionダイアログボックスで、フラッシュメモリーにあるOptionsのStart addressを指定します。このアドレスは、PFL II IPのパラメーターを指定する際にWhat is the byte address of the option bits, in hex?に指定したアドレスと一致する必要があります。オプション・ビット・セクターがコンフィグレーション・データ・ページと重複していないこと、および開始アドレスが8 KBの境界上にあることを確認してください。
図 30. Edit Partition:フラッシュデバイスのOPTIONS
-
フラッシュデバイスを選択した状態でAdd Partitionをクリックし、フラッシュメモリーのパーティションを指定します。
図 31. Add Flash DeviceおよびAdd Partition
- Nameで、パーティション名を選択します。
- Input Fileで、.sofを指定します。
- Pageドロップダウン・リストから、この.sofを書き込むページを選択します。
-
Address modeで、使用するアドレス指定モードを選択します。
次のモードが使用可能です。
- Auto—フラッシュデバイスにデータを格納するブロックをツールが自動的に割り当てます。
- Block—フラッシュのパーティションの開始アドレスと終了アドレスを指定します。
- Start—パーティションの開始アドレスを指定します。このツールは、入力データサイズに基づいてパーティションの終了アドレスを割り当てます。
- BlockおよびStartオプションには、アドレス情報を指定します。
3.1.10.2.2. 個別のPFL II機能の作成
- IP Catalogで、Parallel Flash Loader II Intel FPGA IPを検索します。
- GeneralタブのWhat operating mode will be usedで、Flash Programming Onlyを選択します。
- インテルでは、Set flash bus pins to tri-state when not in useをオンにすることを推奨しています。
- デザインに合わせてFlash Interface SettingsタブとFlash Programmingタブのパラメーターを設定します。
- フラッシュ・メモリー・デバイスの.pofをコンパイルおよび生成します。未使用のI/Oピンがすべてトライステートであることを確認してください。
- FPGAコンフィグレーションに向けて2番目のPFL IIインスタンスを作成するには、GeneralタブのWhat operating mode will be usedで、FPGA Configurationを選択します。
- PFL II IPのこのFlash Programming Onlyインスタンスを使用して、フラッシュデバイスにデータを書き込みます。
- フラッシュ・メモリー・デバイスをプログラミングする際はかならず、フラッシュ・メモリー・デバイスの.pofを使用してCPLDをプログラミングし、フラッシュ・メモリー・デバイスの内容を更新します。
-
コンフィグレーション・コントローラーが含まれているプロダクトデザインの.pofでホストを再度プログラミングします。
注: すべての未使用ピンはデフォルトでグランドに設定されています。ホストJTAGピンを介してコンフィグレーション・フラッシュ・メモリー・デバイスをプログラミングする場合、ホストとコンフィグレーション・フラッシュ・メモリー・デバイスに共通のFPGAコンフィグレーション・ピンをトライステートにする必要があります。PFL IIブロックのpfl_flash_access_request信号とpfl_flash_access_granted信号を使用し、正しいFPGAコンフィグレーション・ピンをトライステートにします。
3.1.10.2.3. CPLDとフラッシュ・メモリー・デバイスを連続してプログラミング
この手順は、CPLDをコンフィグレーションしてフラッシュ・メモリー・デバイスを書き込む一連の命令セットを インテル® Quartus® Primeプログラマーに提供します。
- Programmerを開き、Add FileをクリックしてCPLDの.pofを追加します。
- CPLD .pofを右クリックして、Attach Flash Deviceをクリックします。
- Flash Deviceメニューで、フラッシュ・メモリー・デバイスの適切な集積度を選択します。
- フラッシュ・メモリー・デバイスの集積度を右クリックし、Change Fileをクリックします。
- フラッシュ・メモリー・デバイスに生成された.pofを選択します。プログラマーは、フラッシュ・メモリー・デバイスの.pofをCPLDの.pofに追加します。
- チェーンにさらにデバイスがある場合は、このプロセスを繰り返します。
- 新しい.pofのProgram/Configure列ですべてのボックスをチェックし、StartをクリックしてCPLDとフラッシュ・メモリー・デバイスのプログラミングを開始します。
3.1.10.2.4. CPLDとフラッシュ・メモリー・デバイスを個別にプログラミング
CPLDとフラッシュ・メモリー・デバイスを個別にプログラミングするには、次の手順に従います。
- Programmerを開き、Add Fileをクリックします。
- Select Programming Fileで、対象とする.pofを追加してOKをクリックします。
- .pofのProgram/Configure列にあるボックスをチェックします。
- StartをクリックしてCPLDをプログラミングします。
-
プログラミング・プログレス・バーが100%に達したら、Auto Detectをクリックします。
例えば、MicronまたはMacronix製のデュアル・フラッシュ・デバイスを使用している場合、プログラマーのウィンドウにはセットアップのデュアルチェーンが表示されます。もしくは、フラッシュ・メモリー・デバイスをプログラマーに手動で追加することも可能です。CPLDの.pofを右クリックして、Attach Flash Deviceをクリックします。Select Flash Deviceダイアログボックスで、ご利用のデバイスを選択します。
-
フラッシュ・メモリー・デバイスの集積度を右クリックし、Change Fileをクリックします。
注: 複数のフラッシュデバイスを含むデザインの場合、すべてのデバイスの集積度の合計に等しい集積度を選択する必要があります。例えばデザインに512 MbのCFIフラッシュ・メモリー・デバイスが2つ含まれる場合、CFI 1 Gbitを選択します。
- フラッシュ・メモリー・デバイスに生成された.pofを選択します。プログラマーは、フラッシュ・メモリー・デバイスの.pofをCPLDの.pofに追加します。
-
追加された.pofのProgram/Configure列にあるボックスをチェックし、Startをクリックしてフラッシュ・メモリー・デバイスのプログラミングを開始します。
注: デザインにPFL II IPが含まれている場合、プログラマーでは、コンフィグレーション・データ・ページ、ユーザー・データ・ページ、およびオプション・ビット・セクターを別々にプログラミング、検証、消去、ブランクチェック、または検査することができます。フラッシュ・メモリー・デバイスの.pofを選択している場合、プログラマーはプログラミングの前にフラッシュ・メモリー・デバイスを消去します。プログラマーがフラッシュ・メモリー・デバイスの他のセクターを消去しないようにするには、ページ、.hexデータ、およびオプションビットのみを選択します。
3.1.10.2.5. 新しいCFIフラッシュ・メモリー・デバイスの定義
データベースに新しいCFIフラッシュ・メモリー・デバイスを追加する、またはデータベースのCFIフラッシュメモリーを更新するには、次の手順に従います。
-
プログラマー・ウィンドウのEditメニューで、Define New CFI Flash Deviceを選択します。次の表は、Define CFI Flash Deviceウィンドウで使用可能な3つの機能を示しています。
表 16. Define CFI Flash Device機能の説明 機能 説明 New 新しいインテルまたはAMDに互換性のあるCFIフラッシュ・メモリー・デバイスを、PFL II対応フラッシュのデータベースに追加します。 Edit PFL II対応フラッシュのデータベースで、新しく追加されたインテルまたはAMDに互換性のあるCFIフラッシュ・メモリー・デバイスのパラメーターを編集します。 Remove PFL II対応フラッシュのデータベースから、新しく追加されたインテルまたはAMDに互換性のあるCFIフラッシュ・メモリー・デバイスを削除します。 - 新しくCFIフラッシュ・メモリー・デバイスを追加する、または新規に追加されたCFIフラッシュ・メモリー・デバイスのパラメーターを編集するには、NewまたはEditを選択します。New CFI Flash Deviceダイアログボックスが表示されます。
-
New CFI Flash Deviceダイアログボックスで、新しいフラッシュ・メモリー・デバイスのパラメーターを指定または更新します。これらのパラメーターの値は、フラッシュ・メモリー・デバイス製造元のデータシートから入手可能です。
図 32. プログラマーのEditメニューでの新しいフラッシュデバイスの定義
表 17. 新しいCFIフラッシュデバイスのパラメーター設定 パラメーター 説明 CFI flash device name CFIフラッシュ名を定義します。 CFI flash device ID CFIフラッシュ識別子コードを指定します。 CFI flash manufacturer ID CFIフラッシュ・メーカーの識別番号を指定します。 CFI flash extended device ID CFIフラッシュ拡張デバイス識別子を指定します。AMDに互換性のあるCFIフラッシュ・メモリー・デバイスにのみ適用されます。 Flash device is Intel® compatible CFIフラッシュがインテルに互換性のある場合、このオプションをオンにします。 Typical word programming time µs単位での標準的なワード・プログラミング時間の値です。 Maximum word programming time µs単位での最大ワード・プログラミング時間の値です。 Typical buffer programming time µs単位での標準的なバッファー・プログラミング時間の値です。 Maximum buffer programming time µs単位での最大バッファー・プログラミング時間の値です。 注: ワード・プログラミング時間のパラメーターまたはバッファー・プログラミング時間のパラメーターのいずれか、またはその両方を指定する必要があります。両方のプログラミング時間のパラメーターをデフォルト値のゼロのままにしないでください。 - OKをクリックして、パラメーター設定を保存します。
- 新規CFIフラッシュ・メモリー・デバイスの追加、更新、または削除の後、OKをクリックします。
Windowsレジストリーにユーザーのフラッシュ情報は保存されます。そのため、インテルQuartus Primeプロ・エディション・プログラマーのDefine New CFI Flash Deviceウィンドウでパラメーターを保存するには、システム管理者権限が必要となります。
3.1.10.3. PFL IIのパラメーター
オプション | 値 | 説明 |
---|---|---|
What operating mode will be used? |
|
フラッシュ・プログラミングおよびFPGAコンフィグレーションをひとつのIPコアで制御するのか、またはこれらの機能を個々のブロックと機能で個別に制御するのかの動作モードを指定します。 |
What is the targeted flash? |
|
PFL II IPコアに接続するフラッシュ・メモリー・デバイスを指定します。 |
Set flash bus pins to tri-state when not in use |
|
PFL II IPコアがフラッシュメモリーへのアクセスを必要としない場合、PFL II IPコアがフラッシュ・メモリー・デバイスとインターフェイスするすべてのピンをトライステートにすることを可能にします。 |
オプション | 値 | 説明 |
---|---|---|
How many flash devices will be used? |
|
PFL II IPコアに接続するフラッシュ・メモリー・デバイスの数を指定します。 |
What's the largest flash device that will be used? |
|
FPGAコンフィグレーションにプログラミングまたは使用されるフラッシュ・メモリー・デバイスの集積度を指定します。PFL II IPコアに複数のフラッシュ・メモリー・デバイスが接続されている場合は、最大のフラッシュ・メモリー・デバイスの集積度を指定します。 デュアルCFIフラッシュの場合、2つのフラッシュメモリーの集積度の合計に相当する集積度を選択します。例えば512 MbのCFIフラッシュを2つ使用する場合、CFI 1 Gbitを選択する必要があります。 |
What is the flash interface data width |
|
フラッシュデータ幅をビット単位で指定します。フラッシュデータ幅は、使用するフラッシュ・メモリー・デバイスによって異なります。複数のフラッシュ・メモリー・デバイスをサポートするには、データ幅は接続されているすべてのフラッシュ・メモリー・デバイスで同一である必要があります。 2つのフラッシュメモリーのデータ幅の合計に相当するフラッシュデータ幅を選択します。例えばデュアル・ソリューションをターゲットにしている場合、各CFIフラッシュのデータ幅は16ビットであるため、32 bitsを選択する必要があります。 |
Allow user to control FLASH_NRESET pin |
|
PFL II IPコアにFLASH_NRESETピンを作成し、フラッシュ・メモリー・デバイスのリセットピンに接続します。Low信号はフラッシュ・メモリー・デバイスをリセットします。バーストモードでは、このピンはデフォルトで使用可能です。 Cypress GLフラッシュメモリーを使用する場合、このピンはフラッシュメモリーのRESETピンに接続します。 |
オプション | 値 | 説明 |
---|---|---|
Flash programming IP optimization target |
|
フラッシュ・プログラミングIPの最適化を指定します。PFL II IPコアをSpeedに対して最適化する場合、フラッシュのプログラミング時間は短縮されますが、IPコアはより多くのLEを使用します。PFL II IPコアをAreaに対して最適化する場合、IPコアのLEの使用量は少なくなりますが、フラッシュのプログラミング時間は長くなります。 |
Flash programming IP FIFO size |
|
フラッシュ・プログラミングIPの最適化にSpeedを選択した場合に、FIFOサイズを指定します。PFL II IPコアはLEをより多く使用し、フラッシュ・プログラミング時にデータをプログラミングするための一時的なストレージとしてFIFOを実装します。FIFOサイズが大きいほど、プログラミング時間は短くなります。 |
Add Block-CRC verification acceleration support |
|
検証を高速化するためのブロックを追加します。 |
オプション | 値 | 説明 |
---|---|---|
What is the external clock frequency? | 外部クロックの周波数を提供します。 | FPGAをコンフィグレーションするIPコアにユーザーが提供するクロック周波数を指定します。このクロック周波数は、FPGAがコンフィグレーションに使用できるクロック (AVST_CLK) の最大周波数の2倍を超えてはいけません。PFL II IPコアは、入力クロックの周波数を最大2で分周できます。 |
What is the flash access time? | フラッシュのデータシートに記載されているアクセス時間を提供します。 |
フラッシュアクセス時間を指定します。この情報は、フラッシュのデータシートから入手できます。インテルでは、フラッシュアクセス時間に必要とされている以上の時間を指定することを推奨しています。 CFIパラレルフラッシュの場合、単位はnsです。NANDフラッシュの場合、単位はμsです。NANDフラッシュはバイトではなくページを使用しているため、より長いアクセス時間が必要になります。このオプションは、クワッドSPIフラッシュでは無効になっています。 |
What is the byte address of the option bits, in hex? | オプションビットのバイトアドレスを提供します。 |
フラッシュメモリー内のオプションビット開始アドレスを指定します。開始アドレスは8 KBの境界上に位置している必要があります。このアドレスは、.sofを.pofに変換する際に指定するビット・セクター・アドレスと同じである必要があります。 詳細は、オプションビットの格納を参照してください。 |
Which FPGA configuration scheme will be used? |
|
Avalon® -STインターフェイスの幅を指定します。 |
What should occur on configuration failure? |
|
コンフィグレーションが成功しなかった場合のコンフィグレーション動作を指定します。
|
What is the byte address to retry from failure | — | Retry from fixed addressをコンフィグレーションが成功しなかった際のオプションに選択する場合、このオプションは、PFL II IPコアが読み出すフラッシュアドレスを指定します。 |
Include input to force reconfiguration |
|
オプションのpfl_nreconfigureリコンフィグレーション入力ピンを含め、FPGAのリコンフィグレーションを有効にします。 |
Enable watchdog timer on Remote System Update support |
|
リモート・システム・アップデート・サポートに向けてウォッチドッグ・タイマーを有効にします。このオプションをオンにすると、pfl_reset_watchdog入力ピンとpfl_watchdog_error出力ピンが有効になります。このオプションはまた、ウォッチドッグ・タイマーがタイムアウトするまでの期間を指定します。このウォッチドッグ・タイマーは、pfl_clk frequencyで動作します。 |
Time period before the watchdog timer times out | — | ウォッチドッグ・タイマーのタイムアウト期間を指定します。デフォルトのタイムアウト期間は100 msです。 |
Use advance read mode? |
|
このオプションは、FPGAコンフィグレーション中の読み出しプロセスの全体的なフラッシュアクセス時間を改善します。
|
Latency count |
|
Intel Burst modeのレイテンシー・カウントを指定します。 |
3.1.10.4. PFL II信号
ピン | 種類 | ウィークプルアップ | 機能 |
---|---|---|---|
pfl_nreset | 入力 | — | PFL II IPコアの非同期リセットです。FPGAコンフィグレーションを有効にするにはHighにプルアップします。FPGAコンフィグレーションを行わない場合は、PFL II IPコアを使用しない際にLowにプルダウンします。このピンは、PFL II IPのフラッシュ・プログラミング機能に影響しません。 |
pfl_flash_access_granted | 入力 | — | システムレベルの同期に使用されます。フラッシュへのアクセスを制御するプロセッサーまたはアービターがこの入力ピンを駆動します。PFL II IPコアの機能をフラッシュマスターとして使用するには、このピンをHighにプルアップします。pfl_flash_access_grantedピンをLowに駆動すると、JTAGインターフェイスがフラッシュおよびFPGAコンフィグレーションにアクセスできなくなります。 |
pfl_clk | 入力 | — | デバイスへのユーザー入力クロックです。これは、PFL II IPのConfigurationタブでWhat is the external clock frequency?パラメーターに指定する周波数です。この周波数は、コンフィグレーション中にFPGAに指定する最大DCLK周波数よりも高くすることはできません。フラッシュ・プログラミングにPFL II IPのみを使用している場合、このピンは使用できません。 |
fpga_pgm[] | 入力 | — | コンフィグレーションのページを決定します。フラッシュ・プログラミングにPFL II IPのみを使用している場合、このピンは使用できません。 |
fpga_conf_done | 入力 | 10 kΩプルアップ抵抗 | FPGAのCONF_DONEピンに接続します。コンフィグレーションが成功すると、FPGAはこのピンをHighにリリースします。FPGAコンフィグレーション中にこのピンはLowに保持されます。フラッシュ・プログラミングにPFL II IPのみを使用している場合、このピンは使用できません。 |
fpga_nstatus | 入力 | 10 kΩプルアップ抵抗 | FPGAのnSTATUSピンに接続します。このピンは、FPGAコンフィグレーションが開始する前にHighになっており、FPGAコンフィグレーション中はHighで維持する必要があります。コンフィグレーション・エラーが発生すると、FPGAはこのピンをLowにプルダウンし、PFL II IPコアはフラッシュ・メモリー・デバイスからのデータの読み出しを停止します。フラッシュ・プログラミングにPFL II IPのみを使用している場合、このピンは使用できません。 |
pfl_nreconfigure | 入力 | — |
Lowの場合、FPGAのリコンフィグレーションが開始されます。リコンフィグレーションの手動制御を実装するには、このピンをスイッチに接続します。この入力を使用してCPLDに独自のロジックを記述し、PFL II IPを介してリコンフィグレーションをトリガーできます。pfl_nreconfigureを使用してfpga_nconfig出力信号を駆動し、リコンフィグレーションを開始します。pfl_clkピンはこの信号を登録します。フラッシュ・プログラミングにPFL II IPのみを使用している場合、このピンは使用できません。 |
pfl_flash_access_request | 出力 | — | システムレベルの同期に使用されます。必要に応じて、このピンはプロセッサーまたはアービターに接続します。JTAGインターフェイスがフラッシュにアクセスする際、またはPFL II IPがFPGAをコンフィグレーションする際に、PFL II IPコアはこのピンをHighに駆動します。この出力ピンは、flash_noeピンおよびflash_nweピンと連携して機能します。 |
flash_addr[] | 出力 | — | フラッシュ・メモリー・アドレスです。アドレスバスの幅は、フラッシュ・メモリー・デバイスの集積度とflash_dataバスの幅に依存します。インテルでは、PFL IIでSet flash bus pins to tri-state when not in useのオプションをOnにすることを推奨しています。 |
flash_data[] | 入力または出力 (双方向ピン) | — | 8ビット、16ビット、または32ビットのデータを送受信するための双方向データバスです。インテルでは、PFL IIでSet flash bus pins to tri-state when not in useのオプションをOnにすることを推奨しています。 6 |
flash_nce[] | 出力 | — | フラッシュ・メモリー・デバイスのnCEピンに接続します。Low信号は、フラッシュ・メモリー・デバイスを有効にします。複数のフラッシュ・メモリー・デバイスをサポートする場合はこのピンを使用します。flash_nceピンは、接続されているすべてのフラッシュ・メモリー・デバイスのそれぞれのnCEピンに接続されます。このポートの幅は、チェーン内のフラッシュ・メモリー・デバイスの数によって異なります。 |
flash_nwe | 出力 | — | フラッシュ・メモリー・デバイスのnWEピンに接続します。Lowの場合、フラッシュ・メモリー・デバイスへの書き込み動作が有効になります。 |
flash_noe | 出力 | — | フラッシュ・メモリー・デバイスのnOEピンに接続します。Lowの場合、読み出し動作中のフラッシュ・メモリー・デバイスの出力が有効になります。 |
flash_clk | 出力 | — | バーストモードに使用されます。フラッシュ・メモリー・デバイスのCLK入力ピンに接続します。CLKのアクティブエッジにより、フラッシュ・メモリー・デバイスの内部アドレスカウンターが増加します。単一CFIフラッシュのバーストモードにおいて、flash_clk周波数はpfl_clk周波数の半分です。デュアルCFIフラッシュ・ソリューションの場合、flash_clk周波数はpfl_clk周波数の1/4で動作します。このピンはバーストモード専用です。バーストモードを使用しない場合、これらのピンをフラッシュ・メモリー・デバイスからホストに接続しないでください。 |
flash_nadv | 出力 | — | バーストモードに使用されます。フラッシュ・メモリー・デバイスのアドレス有効入力ピンに接続します。この信号を使用して開始アドレスをラッチします。このピンはバーストモード専用です。バーストモードを使用しない場合、これらのピンをフラッシュ・メモリー・デバイスからホストに接続しないでください。 |
flash_nreset | 出力 | — | フラッシュ・メモリー・デバイスのリセットピンに接続します。Low信号はフラッシュ・メモリー・デバイスをリセットします。 |
fpga_nconfig | オープンドレイン出力 | 10 kWプルアップ抵抗 | FPGAのnCONFIGピンに接続します。LowパルスはFPGAをリセットし、コンフィグレーションを開始します。これらのピンは、PFL II IPコアのフラッシュ・プログラミング・オプションでは使用できません。6 |
pfl_reset_watchdog | 入力 | — | ウォッチドッグ・タイマーがタイムアウトする前にウォッチドッグ・タイマーをリセットするスイッチ信号です。ウォッチドッグ・タイマーをリセットするには、少なくともpfl_clkクロックの2サイクルの間、この信号をHighまたはLowに保持します。 |
pfl_watchdog_error | 出力 | — | Highの場合、ウォッチドッグ・タイマーのエラー状態を示します。 |
3.2. ASコンフィグレーション
ASコンフィグレーション・スキームにおいて、 インテル® Stratix® 10デバイスのSDMブロックはコンフィグレーション・プロセスとインターフェイスを制御します。シリアル・フラッシュ・コンフィグレーション・デバイスはコンフィグレーション・データを格納します。ASコンフィグレーションでは、SDMが最初にブートROMで起動します。その後、SDMはAS x4フラッシュから初期コンフィグレーション・ファームウェアをロードします。コンフィグレーション・ファームウェアがロードされると、このファームウェアは、I/OコンフィグレーションやFPGAコアのコンフィグレーションを含む残りのコンフィグレーション・プロセスを制御します。HPSを含むデザインでは、初期コンフィグレーション後にHPSを使用してシリアル・フラッシュ・メモリーにアクセスできます。
ASコンフィグレーション・スキームは、AS x4 (4ビットデータ幅) モードのみをサポートします。
モード | データ幅 (ビット) | 最大クロックレート | 最大データレート | MSEL[2:0] | |
---|---|---|---|---|---|
アクティブ | アクティブシリアル (AS) |
4 |
133 MHz | 532 Mb |
Fastモード - 001 Normalモード - 011 |
コンフィグレーション機能 | ピンの種類 | 方向 | 電源供給元 |
---|---|---|---|
nSTATUS | SDM I/O | 出力 | VCCIO_SDM |
nCONFIG | SDM I/O | 入力 | VCCIO_SDM |
MSEL[2:0] | SDM I/O、兼用 | 入力 | VCCIO_SDM |
CONF_DONE | SDM I/O | 出力 | VCCIO_SDM |
AS_nCSO[3:0] | SDM I/O | 出力 | VCCIO_SDM |
AS_DATA[3:0] | SDM I/O | 双方向 | VCCIO_SDM |
AS_CLK | SDM I/O | 出力 | VCCIO_SDM |
AS x4コンフィグレーション・スキームにおけるMSELピンの機能
SDMは、電源投入直後にSDMのスタート状態でMSELピンをサンプリングします。SDMがMSELピンをサンプリングした後、MSELピンはアクティブLowのチップセレクトになります。1つのフラッシュデバイスを使用するAS x4デザインの場合、AS_nCSOはLowをアサートします。残りのチップ・セレクト・ピンのAS_nCS1からAS_nCS3はHighをディアサートします。
3.2.1. ASコンフィグレーション・スキームのハードウェア・コンポーネントとファイルの種類
次のコンポーネントを使用して、ASコンフィグレーション・スキームを実装します。
- クワッドSPIフラッシュメモリー
- インテル® Quartus® PrimeのプログラマーをPCBに接続する インテル®FPGAダウンロード・ケーブルII
次のブロック図は、ASコンフィグレーション・スキームを使用したコンポーネントとデザインフローを表しています。
.jicを使用するASプログラミングのほかに、プログラマーは、.pofを使用したクワッドSPIフラッシュの直接プログラミングをサポートしています。詳細は、インテルQuartus Primeまたはサードパーティー製のプログラマーを使用するASプログラミングに示されています。
プログラミング・ファイルの種類 | 拡張子 | 説明 |
---|---|---|
JTAG Indirect Configuration File | .jic |
.jicは、インテルFPGA JTAGピンを介してシリアル・フラッシュ・プログラミングを可能にします。このファイルタイプは、ASx4コンフィグレーションでのみ利用可能です。ASx4コンフィグレーション・スキームを使用して新しく実装されたボードには、初期のSDMファームウェア・プログラミングが必要です。ヘルパーSOFイメージは、必要なSDMファームウェアを提供します。 最初にJTAGケーブルを使用し、SDMのヘルパーSOFを インテル® Stratix® 10デバイスにロードします。その後、SDMはフラッシュデバイスに インテル® Stratix® 10デザインをロードできます。 |
3.2.2. ASシングルデバイスのコンフィグレーション
各ピンの使用方法および要件の詳細については、 インテル® Stratix® 10デバイスファミリー・ピン接続ガイドラインを参照してください。
3.2.3. 複数のシリアル・フラッシュ・デバイスを使用するAS
インテル® Stratix® 10デバイスは、ASコンフィグレーションに対して1つのAS x4フラッシュ・メモリー・デバイスをサポートし、HPSデータストレージでの使用に向けて最大3つのAS x4フラッシュメモリーをサポートします。MSELピンは兼用で、POR状態の間のみMSELとして動作します。FPGAデバイスがユーザーモードに入ると、MSELピンはチップ・セレクト・ピンとして使用することができます。コンフィグレーションのAS x4フラッシュメモリーおよびHPSのAS x4フラッシュメモリーに対する適切なチップ・セレクト・ピンの接続を確認する必要があります。各フラッシュデバイスには専用のAS_nCSOピンがありますが、他のピンを共有しています。
各ピンの使用方法および要件の詳細については、 インテル® Stratix® 10デバイスファミリー・ピン接続ガイドラインを参照してください。
次の表は、複数のフラッシュデバイスを使用する場合に、容量性負荷の値の範囲でサポートされる最大のAS_CLK周波数を示しています。最大のAS_CLK周波数は、クロックソースとしてOSC_CLK_1を使用するかオシレーターを使用するかによっても異なります。
容量性負荷 (pF) | サポートされる最大AS_CLK (MHz) | |
---|---|---|
OSC_CLK_1 (MHz) | 内部オシレーター (MHz) | |
10 | 133/125 | 115 |
19 | 108 | 115 |
30 | 100 | 77 |
37 | 80 | 77 |
80 | 50 | 58 |
140 | 25 | 25 |
3.2.4. ASコンフィグレーションのタイミング・パラメーター
3.2.5. 外部AS_DATAピンで許容される最大スキュー遅延に関するガイドライン
スキュー遅延には次の要素が含まれます。
- PCB上のボードトレース長の差による遅延
- フラッシュデバイスの容量性負荷
次の表に、AS_CLK周波数に応じた最大許容スキュー遅延を示します。インテルでは、IBISシミュレーションを実行し、スキュー遅延がこの表で指定されている最大遅延を超えないようにすることを推奨しています。
シンボル | 説明 | 周波数 | 最小 | 標準 | 最大 |
---|---|---|---|---|---|
Text_skew | 指定されたAS_CLK周波数に対するAS_DATAのスキュー遅延 | 133 MHz | — | — | 3.60 |
125 MHz | — | — | 4.00 | ||
115 MHz | — | — | 4.20 | ||
108 MHz | — | — | 4.60 | ||
100 MHz | — | — | 5.0 | ||
<100 MHz | — | — | 5.0 |
3.2.6. シリアル・フラッシュ・デバイスのプログラミング
シリアル・フラッシュ・デバイスのインシステムは、 インテル®FPGAダウンロード・ケーブル IIまたは インテル®FPGAイーサネット・ケーブルを使用してプログラミング可能です。
インシステム・プログラミング・オプションには、次の2つがあります。
- アクティブシリアル
- JTAG
3.2.6.1. ASインターフェイスを使用するシリアル・フラッシュ・デバイスのプログラミング
MSELをJTAGに設定する必要があります。MSELがJTAGに設定されると、SDMはAS_CLK、AS_DATA0からAS_DATA3、AS_nCS0からAS_nCS3のピンをトライステートにします。 インテル® Quartus® Primeのプログラマーは、ASヘッダーを介してフラッシュ・メモリー・デバイスをプログラミングします。汎用シリアル・フラッシュ・インターフェイス・インテルFPGA IPを使用してフラッシュメモリーに書き込む場合、フラッシュデバイスをGPIOに接続してフラッシュデバイスにアクセスする必要があります。
3.2.6.2. JTAGインターフェイスを使用するシリアル・フラッシュ・デバイスのプログラミング
インテル® Quartus® Primeのプログラマーは、JTAGインターフェイスを介してSDMデバイスに接続し、シリアル・フラッシュ・デバイスをプログラミングします。SDMはASプログラミングをエミュレーションします。
インテルでは、JTAGインターフェイスを使用し、今後ASモードでクワッドSPIフラッシュデバイスを使用できるように準備しておくことを推奨しています。
このコンフィグレーション・スキームには、次のステップが含まれます。
- インテル® Quartus® PrimeのプログラマーでJTAGプログラミング・モードを選択し、Startをクリックしてプログラミングを開始します。
- プログラマーは、JTAGヘッダー接続を使用して.jicコンフィグレーション・データをボードに駆動します。
- プログラマーはまず、コンフィグレーション・ファームウェアでSDMをコンフィグレーションします。次に、SDMはSDM_IOを使用してプログラマーからAS x4フラッシュデバイスにコンフィグレーション・データを駆動します。
- フラッシュデバイスのプログラミングが成功した後、 インテル® Stratix® 10デバイスをASモードで使用するには、MSELをAS FastモードまたはAS Normalモードのいずれかに設定し、デバイスの電源を再投入します。
3.2.7. シリアル・フラッシュ・メモリーのレイアウト
シリアル・フラッシュ・デバイスは、コンフィグレーション・データをセクションに格納します。
次の図は、シリアル・フラッシュ・デバイスにおけるHPS以外の インテル® Stratix® 10コンフィグレーション・データ・マッピングのセクションを示しています。HPSデバイスに向けたフラッシュメモリーのレイアウトについての詳細は、HPS Technical Reference ManualのIntel Stratix 10 SoC FPGA Bitstream Sectionsを参照してください。
サードパーティー製のプログラマーを使用して.rpdのプログラミングを行う場合、シリアル・フラッシュ・デバイスのアドレス0からコンフィグレーション・データが格納されていることを確認してください。.jicファイルまたは.pofファイルを使用する場合、 インテル® Stratix® 10のプログラマーは、シリアル・フラッシュ・デバイスのアドレス0からコンフィグレーション・データを自動的にプログラミングします。
インテルは現在、Supported Flash Devices for Intel Stratix 10に記載されているデバイスをサポートしています。
3.2.7.1. クワッドSPIフラッシュのバイトアドレス指定について
- Macronix MX66U 512 Mb、1 Gb (ギガビット)、2 Gb
- Macronix MX25U 128 Mb、256 Mb、512 Mb
- Micron MT25QU 128 Mb、256 Mb、512 Mb、1 Gb、2Gb
3.2.8. AS_CLK
インテル® Stratix® 10デバイスは、AS_CLKをシリアル・フラッシュ・デバイスに駆動します。OSC_CLK_1ピンを駆動する内部オシレーターまたは外部クロックは、AS_CLKを生成します。外部クロックソースを使用することで、AS_CLKをより高い周波数で動作させることが可能になります。25 MHz、100 MHz、または125 MHzのクロックをOSC_CLK_1ピンに供給する場合、AS_CLKは最大133 MHzで動作可能です。
アクティブ・シリアル・コンフィグレーション・ソフトウェアの設定 で説明されているとおり、AS_CLKピンに必要な最大周波数を インテル® Quartus® Prime開発ソフトウェアで設定します。AS_CLKピンは、選択した周波数以下で動作します。
コンフィグレーション・クロック・ソース | AS_CLKの周波数 (MHz) |
---|---|
内蔵オシレーター |
25 58 77 115 |
OSC_CLK_1 |
25 50 71.5 100 108 125 133 |
3.2.9. アクティブ・シリアル・コンフィグレーション・ソフトウェアの設定
ASコンフィグレーション・スキームのパラメーターを設定するには、次のステップを実行します。
- Assignmentsメニューで、Deviceをクリックします。
-
Device and Pin Optionsで、Configurationカテゴリーを選択します。
-
Configuration schemeドロップダウン・メニューから、Active Serial x4を選択します。
- Configuration device I/O voltageドロップダウン・リストから、Autoまたは1.8 Vを選択します。
- Active serial clock sourceドロップダウン・リストから、ASクロックの周波数を選択します。
-
Configuration schemeドロップダウン・メニューから、Active Serial x4を選択します。
- 確認のOKをクリックして、Device and Pin Optionsを閉じます。
3.2.10. インテル Quartus Primeのプログラミング手順
3.2.10.1. Programming File Generatorを使用するプログラミング・ファイルの生成
次の手順を実行し、必要なプログラミング・ファイルを生成します。
- File Programming File Generatorをクリックします。
- Device Familyに、 インテル® Stratix® 10を選択します。
- Configuration modeで、Active Serial x4を選択します。
- 生成するファイルのOutput directoryとNameを指定します。
-
Output directoryで、デザインに適したファイルの種類を選択します。ASスキームは、Programmer Object File (.pof)、JTAG Indirect Configuration File (.jic)、およびRaw Programming Data File (.rpd) のファイルタイプをサポートしています。
図 42. Programming File Generatorの出力ファイル
-
JTAG Indirect Configuration File (.jic) およびProgrammer Object File (.pof) には、Memory Map File (.map) をオンにすることができます。このオプションは、フラッシュ・メモリー・アドレスの位置を示します。
Input Filesタブが利用できる状態になります。
-
Input FilesタブでAdd Bitstreamをクリックし、お使いのコンフィグレーション・ビットストリームを検索します。
図 43. Programming File Generatorの入力ファイル
-
Configuration Deviceタブで、Add Deviceをクリックします。Configuration Deviceリストからフラッシュデバイスを選択する、もしくは使用可能なメニューオプションを使用してカスタムデバイスを定義することができます。カスタム・コンフィグレーション・デバイスの定義についての詳細は、インテルQuartus Primeプロ・エディションのユーザーガイド: プログラマーの、コンフィグレーション・デバイス・タブの設定 (プログラミング・ファイル・ジェネレーター) の章を参照してください。
図 44. Programming File Generatorの入力ファイル注: .rpd形式はフラッシュデバイスから独立しているため、.rpdファイルにフラッシュデバイスを指定する必要はありません。一方、.pofファイルおよび.jicファイルには、コンフィグレーション・デバイスに固有のプログラミング・データ、およびその他の必要なデータが追加されて含まれています。 インテル® Quartus® Primeのプログラマーは、この追加データを使用してコンフィグレーション・デバイスとの通信を確立し、プログラミング・データを書き込みます。
- Generateをクリックし、必要なプログラミング・ファイルを生成します。
3.2.10.2. シリアル・フラッシュ・デバイスへの.pofファイルのプログラミング
ASヘッダーを介して.pofをシリアル・フラッシュ・デバイスにプログラミングするには、次のステップを実行します。
- ProgrammerウィンドウでHardware Setupをクリックし、目的のダウンロード・ケーブルを選択します。
- ModeリストからActive Serial Programmingを選択します。
- 左側のペインのAuto Detectボタンをクリックします。
- プログラミングするデバイスを選択し、Add Fileをクリックします。
- 選択したデバイスにプログラミングする.pofを選択します。
- Startをクリックしてプログラミングを開始します。
3.2.10.3. シリアル・フラッシュ・デバイスへの.jicファイルのプログラミング
JTAGインターフェイスを介して.jicをシリアル・フラッシュ・デバイスにプログラミングするには、次のステップを実行します。
- ProgrammerウィンドウでHardware Setupをクリックし、目的のダウンロード・ケーブルを選択します。
- ModeリストからJTAGを選択します。
- プログラミングするデバイスを選択し、Add Fileをクリックします。
- 選択したデバイスにプログラミングする.jicを選択します。
- Startをクリックしてプログラミングを開始します。
3.2.11. ASコンフィグレーション・スキームに向けたデバッグ・ガイドライン
ASコンフィグレーション・スキームの動作はこれまでのデバイスファミリーと同様ですが、大きな違いが一点あります。ASモードを使用している インテル® Stratix® 10デバイスでは、CS0ピンに接続されたシリアル・フラッシュ・デバイス内のアドレス0、256k、512k、および768kからファームウェア・セクションのロードを試みます。
コンフィグレーション・ビットストリームに有効なイメージが含まれていない場合、SDMはnSTATUSをLowに駆動してエラーをアサートします。エラーからの回復は、JTAG経由でFPGAをリコンフィグレーションする、またはnCONFIGをLowに駆動することで可能です。
SDMは、MSELをJTAGに設定している場合のデバイス起動時にのみ、ASピンのAS_CLK、AS_DATA0からAS_DATA3、およびAS_nCS0からAS_nCS3をトライステートにします。MSELがAS FastまたはNormalモードである場合、SDMは インテル® Stratix® 10デバイスの電源が再投入されるまでASピンを駆動します。以前のデバイスファミリーとは異なり、デバイスがユーザーモードに入ってもASピンはトライステートになりません。
ASコンフィグレーション・スキームにはパワーオン要件があります。AS Fastモードを使用し、100 msの PCIe* リンク・トレーニング要件を考慮しない場合でも、VCCIO_SDM電源を18 ms以内にランプする必要があります。このランプアップ要件は、 インテル® Stratix® 10デバイスがAS x4デバイスのアクセスを開始する際に、AS x4デバイスが確実に動作電圧範囲内になるようにします。
AS Fastモードを使用している場合、 インテル® Stratix® 10デバイスに供給される電源はすべて、SDMがリセットから解放されるまでに推奨動作条件に完全にランプアップされている必要があります。CvPにおける PCIe* のパワーアップからアクティブまでの100 msの時間要件を満たすには、 インテル® Stratix® 10デバイスへのVCCIO_SDM電源が、10 ms以内に推奨される動作範囲になければなりません。
デバッグに関するヒント
ASコンフィグレーション・スキームのデバッグに関するヒントを次に示します。
- フラッシュ用にプログラミング・ファイルを生成する際、コンフィグレーション・イメージのブートアドレスが正しく定義されていることを確認してください。ASコンフィグレーションの場合、ブートアドレスはデフォルトで0になります。
- デザインが、AS Fastモードの電源ランプ要件を満たしていることを確認してください。Fastモードを使用している場合、VCCIO_SDMは18 ms以内でランプアップする必要があります。
- インテル® Stratix® 10デバイスがパワーオンリセットを抜け出る際に、フラッシュの電源が投入され、アクセスできる状態になっていることを確認します。
- コンフィグレーションに外部クロックソースを使用している場合は、OSC_CLK_1ピンが正しく供給されており、周波数がインテルQuartus Primeプロ・エディションのプロジェクトでOSC_CLK_1に設定した周波数と一致することを確認します。
- MSELピンが正しいASコンフィグレーション・スキームを反映していることを確認します。
- シリアル・フラッシュ・デバイス内のイメージの破損が原因でASコンフィグレーションに失敗し、再プログラミングで問題が解決しない場合、コンフィグレーションに使用しているコンポーネントに応じて2つの解決策があります。
- サードパーティー製のプログラマーを使用し、図 38 で示されているようにASもしくはJTAGヘッダーからフラッシュデバイスを直接コンフィグレーションしている場合、MSEL設定をJTAGに変更します。MSELをJTAGに設定することで、破損したイメージが電源投入時に自動的にロードされないようになります。次に、ASまたはJTAGヘッダーを介してクワッド・シリアル・フラッシュ内のイメージを更新します。
- 図 39 で示されているようにJTAGヘッダーを使用してフラッシュデバイスをプログラミングしている場合、nCONFIG信号をLowに強制します。nCONFIGがLowになると、クワッドSPIフラッシュデバイスからイメージはロードできません。次に、JTAGヘッダーを介してクアッド・シリアル・フラッシュ内のイメージを更新します。
- AS x4フラッシュメモリーを使用している場合は、AS Fastモードを使用していることを確認してください。100 msの PCIe* リンクアップを考慮しない場合でも、VCCIO_SDM電源を18 ms以内にランプする必要があります。このランプアップ要件は、 インテル® Stratix® 10デバイスがAS x4デバイスへのアクセスを開始する際に、AS x4デバイスが確実に動作電圧範囲内になるようにします。
- サードパーティー製のプログラマーを使用してクワッドSPIデバイスをプログラミングする場合は、.rpdのエンディアンを確認します。.rpdは、ビッグ・エンディアンで生成する必要があります。
3.2.12. ASにおけるQSFの割り当て
これらの設定は、SDM_IOピンのほとんどを必要とする、PMBusスレーブモードで動作している インテル® Stratix® 10 SmartVIDデバイスに向けたものです。マスターモードにおけるPMBusの制約については、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドを参照してください。
# Fitter Assignments # ================== set_global_assignment -name DEVICE 1SG280LU3F50E3VG set_global_assignment -name CONFIGURATION_VCCIO_LEVEL 1.8V # SDM IO Assignments # ================== set_global_assignment -name USE_PWRMGT_SCL SDM_IO14 set_global_assignment -name USE_PWRMGT_SDA SDM_IO11 set_global_assignment -name USE_PWRMGT_ALERT SDM_IO12 set_global_assignment -name USE_CONF_DONE SDM_IO16 set_global_assignment -name USE_INIT_DONE SDM_IO0 set_global_assignment -name USE_CVP_CONFDONE SDM_IO13 set_global_assignment -name USE_SEU_ERROR SDM_IO10 set_global_assignment -name SDM_DIRECT_TO_FACTORY_IMAGE SDM_IO15 # Configuration settings # ====================== # The following setting also supports Intel Stratix 10 devices set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "ACTIVE SERIAL X4" set_global_assignment -name USE_CONFIGURATION_DEVICE ON set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 256 set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ENABLE_ED_CRC_CHECK ON set_global_assignment -name MINIMUM_SEU_INTERVAL 479 # SmartVID feature PMBus settings [Slave mode settings only] # ========================================================== set_global_assignment -name VID_OPERATION_MODE "PMBUS SLAVE" set_global_assignment -name PWRMGT_DEVICE_ADDRESS_IN_PMBUS_SLAVE_MODE 3F
SDM_IOコンフィグレーション・ピンは、Assignments > Device > Device and Pin Options > Configuration > Configuration Pin Optionsを使用して設定することも可能です。
3.3. SD/MMCのコンフィグレーション
SDメモリーカードまたはMMCを使用するコンフィグレーション・スキームでは、メモリーカードにコンフィグレーション・データが保存されます。SDMは、メモリーカードとの接続にオンチップSDまたはMMCコントローラーを使用します。SDMブロックは、コンフィグレーション・プロセスに向けてメモリーカードからコンフィグレーション・データを読み取ります。SDとMMCを使用するコンフィグレーションは、x4 SDメモリーカードとx8 MMCをサポートしています。
モード | データ幅 (ビット) | 最大クロックレート | 最大データレート | MSEL[2:0] | |
---|---|---|---|---|---|
アクティブ | SD/MMC | 4または8 | 50 MHz | 400 Mb | 3'b100 |
コンフィグレーション機能 | 方向 | 電源供給元 | |
---|---|---|---|
nSTATUS | SDM I/O | 出力 | VCCIO_SDM |
nCONFIG | SDM I/O | 入力 | VCCIO_SDM |
MSEL[2:0] | SDM I/O、兼用 | 入力 | VCCIO_SDM |
SDMMC_CFG_CMD | GPIO | 出力 | VCCIO_SDM |
SDMMC_CFG_DATA[7:0] | GPIO | 双方向 | VCCIO_SDM |
SDMMC_CFG_CCLK | GPIO | 出力 | VCCIO_SDM |
3.3.1. SD/MMCシングルデバイスのコンフィグレーション
3.4. JTAGコンフィグレーション
JTAGチェーンのデバイス・プログラミングは、開発を行う際に理想的な方法です。JTAGチェーンのデバイス・コンフィグレーションは、JTAGピンを使用して インテル® Stratix® 10 FPGAを.sofファイルで直接コンフィグレーションします。JTAGデバイスチェーンを使用するコンフィグレーションでは、外部フラッシュメモリーをプログラミングする必要がないため、開発時間を短縮できます。イメージがクワッドSPIメモリーに保存されている場合、JTAGを使用して再プログラミングを行うことも可能です。クワッドSPIのコンテンツが破損している、もしくは無効な場合に、JTAGコンフィグレーション・スキームを使用してクワッドSPIメモリーを再プログラミングすることも可能です。
インテル® Quartus® Prime開発ソフトウェアは、FPGAのデザイン情報を含む.sofを生成します。.sofをJTAGプログラマーとともに使用し、 インテル® Stratix® 10デバイスをコンフィグレーションすることができます。 インテル®FPGAダウンロード・ケーブル IIおよび インテル®FPGAイーサネット・ケーブルはどちらも、1.8 VのVCCIO_SDM電源をサポートすることができます。あるいは、Jam*STAPL Format File (.jam) または Jam* Byte Code File (.jbc) をJTAGコンフィグレーションに使用することができます。
インテル® Stratix® 10デバイスは、自動的にコンフィグレーション・ビットストリームを圧縮します。 インテル® Stratix® 10デバイスで圧縮を無効にすることはできません。
モード | データ幅 (ビット) | 最大クロックレート | 最大データレート | MSEL[2:0] | |
---|---|---|---|---|---|
パッシブ | JTAG | 1 | 30 MHz | 30 Mb | 3'b111 |
コンフィグレーション機能 | ピンの種類 | 方向 | 電源供給元 |
---|---|---|---|
TCK | 固定 | 入力 | VCCIO_SDM |
TDI 7 | 固定 | 入力 | VCCIO_SDM |
TMS 7 | 固定 | 入力 | VCCIO_SDM |
TDO 7 | 固定 | 出力 | VCCIO_SDM |
nSTATUS | SDM I/O | 出力 | VCCIO_SDM |
nCONFIG | SDM I/O | 入力 | VCCIO_SDM |
MSEL[2:0] | SDM I/O、兼用 | 入力 | VCCIO_SDM |
3.4.1. JTAGコンフィグレーション・スキームのハードウェア・コンポーネントとファイルタイプ
次の図は、JTAGプログラミングを表しています。これは最も単純なデバイス・コンフィグレーション・スキームです。.sofファイルを.pofファイルに変換するために、File > Programming File Generatorを使用する必要はありません。
3.4.2. JTAGデバイスのコンフィグレーション
JTAGチェーン内の単一のデバイスをコンフィグレーションする際、プログラミング・ソフトウェアは他のデバイスをバイパスモードに設定します。バイパスモードのデバイスは、単一のバイパスレジスターを介してプログラミング・データをTDIピンからTDOピンに転送します。コンフィグレーション・データは、1クロックサイクル後にTDOピンで使用可能になります。
ダウンロード・ケーブルまたはマイクロプロセッサーを使用することで、JTAGを経由した インテル® Stratix® 10デバイスのコンフィグレーションが可能です。
3.4.2.1. ダウンロード・ケーブル接続を使用したJTAGシングルデバイスのコンフィグレーション
各ピンの使用方法および要件の詳細については、 インテル® Stratix® 10デバイスファミリー・ピン接続ガイドラインを参照してください。
3.4.2.2. マイクロプロセッサーを使用したJTAGシングルデバイスのコンフィグレーション
各ピンの使用方法および要件の詳細については、 インテル® Stratix® 10デバイスファミリー・ピン接続ガイドラインを参照してください。
3.4.3. JTAGマルチデバイス・コンフィグレーション
- JTAGに互換性のある1つのヘッダーがJTAGチェーン内の複数のデバイスに接続します。ダウンロード・ケーブルのドライブ能力が、JTAGチェーン内のデバイス数に対する唯一の制限です。
- 1つのJTAGチェーン内に4つ以上のデバイスが存在する場合、オンボードバッファーを使用してTCK、TDI、およびTMSピンをバッファーします。JTAGをサポートする他のインテルFPGAデバイスも、このチェーンに接続することが可能です。
3.4.3.1. ダウンロード・ケーブルを使用したJTAGマルチデバイスのコンフィグレーション
3.4.4. JTAGコンフィグレーション・スキームにおけるデバッグ・ガイドライン
JTAGコンフィグレーション・スキームは、他のすべてのコンフィグレーション・スキームを上書きします。セキュリティー機能によりJTAGインターフェイスが無効にされない限り、SDMは常にJTAGを介したコンフィグレーションを受け入れる準備ができています。JTAGは、破損したイメージを使用してコンフィグレーションを試みた際に、回復不能な状態となってしまっている可能性があるデバイスを回復する場合に特に役立ちます。
nCONFIGの立ち下がりエッジですべてのJTAGアクセスが終了し、デバイスはMSELが指定するブートソースに戻ります。nCONFIGは、JTAGコンフィグレーション中に安定している必要があります。JTAGコンフィグレーション中、nSTATUSはnCONFIGに従います。そのため、nSTATUSもまた安定している必要があります。
他のコンフィグレーション・スキームとは異なり、nSTATUSはJTAGコンフィグレーション中にエラーが発生してもアサートしません。インテルQuartus Primeプロ・エディションのプログラマーがエラー報告に生成するエラーメッセージを監視する必要があります。
デバッグに関するヒント
JTAGのデバッグに関するヒントを次に示します。
- JTAGピンの接続が正しいことを確認します。
- JTAGコンフィグレーションに成功しない場合は、FPGAが正常に起動してPORを終了していることを確認します。1つの方法に、nCONFIGとnSTATUS間のハンドシェイク動作を確認する方法があります。これは、nCONFIGをLowに駆動し、nSTATUSもまたLowになることを確認することで行います。
- nCONFIGピンがJTAGコンフィグレーション中にHighに維持されていることを確認します。
- デバイスがPOR状態を終了しているかどうかを判断するもう1つの方法は、 インテル® Quartus® Primeのプログラマーを使用してデバイスを検出することです。プログラマーが インテル® Stratix® 10デバイスを検出できる場合、デバイスはPOR状態を脱しています。
- インテル®FPGAダウンロード・ケーブルIIを使用している場合は、ケーブルクロック速度を6 MHzに下げます。
- JTAGチェーンに複数のデバイスがある場合は、他のデバイスをJTAGチェーンから切り離し、 インテル® Stratix® 10デバイス単独になるようにします。
-
OSC_CLK_1をコンフィグレーションのクロックソースとして指定する場合、OSC_CLK_1が インテル® Quartus® Prime開発ソフトウェアで指定した周波数で動作していることを確認します。
- 高帯域幅メモリー (HBM2) IPまたはトランシーバーを使用するIPが含まれるデザインの場合、デバイスのコンフィグレーションを開始する前に、フリーランニングで安定したリファレンス・クロックをデバイスに供給する必要があります。すべてのトランシーバー電源は、コンフィグレーションを開始する前に要求電圧に達している必要があります。
- ASまたは Avalon® -STインターフェイスを使用して初期のリコンフィグレーションを行い、PCBのMSEL設定がJTAGではない場合にJTAGインターフェイスをその後のリコンフィグレーションに使用する際は、.sofを インテル® Quartus® Primeプロジェクトで指定したファイル形式にする必要があります。例えば、ASコンフィグレーションに向けてMSELピンを最初にコンフィグレーションし、ASスキームを使用してコンフィグレーションを行い、その後、 Avalon® -STに向けて生成された.sofを使用してJTAGリコンフィグレーションを行うと、そのリコンフィグレーションは失敗します。
4. デザインでのリセット・リリース・インテルFPGA IPの使用
リセット・リリース・インテルFPGA IPは、 インテル® Quartus® Prime開発ソフトウェアで利用可能です。このIPは、単一の出力信号のnINIT_DONEで構成されます。nINIT_DONE信号は、INIT_DONEピンのコアバージョンであり、FPGA FirstおよびHPS Firstのコンフィグレーション・モード両方において同じ機能を備えます。インテルでは、nINIT_DONE信号がHighの間、またはINIT_DONEピンがLowの間、デザインをリセット状態に保持することを推奨しています。デザインでリセットリリースIPをインスタンス化すると、SDMはnINIT_DONE信号を駆動します。したがって、IPはFPGAファブリックのリソースを消費しませんが、ルーティング・リソースを必要とします。
リセット・リリース・インテルFPGA IPをデザインに含めない場合、この図で示されているように、INIT_DONE信号をリセットロジックへの入力として戻す必要があります。
4.1. リセットリリースIPの要件について
現在、クロック周波数、デバイスサイズ、およびデザインの複雑さは絶えず増しており、リセットからのリリースにおけるわずかな差によって起こり得る影響を考慮するリセット戦略が必要とされています。リセット・リリース・インテルFPGA IPは、デバイスが完全にユーザーモードになるまで制御回路をリセット状態に保持します。リセットリリースFPGA IPは、内部INIT_DONE信号の反転バージョンであるnINIT_DONEを生成し、デザインで使用します。
nINIT_DONEがアサートされると (Low)、すべてのロジックはユーザーモードになり、通常の動作を行います。nINIT_DONE信号は、次のいずれかの方法に使用できます。
- 外部リセットまたは内部リセットをゲーティングする
- トランシーバーおよびI/O PLLへのリセット入力をゲーティングする
- エンベデッド・メモリー・ブロック、ステートマシン、シフトレジスターなどのデザインブロックの書き込みイネーブルをゲーティングする
- デザインのレジスターリセット入力ポートを同期させて駆動する
4.2. SDM_IOピンへのINIT_DONEの割り当て
- インテル® Quartus® PrimeのAssignmentsメニューで、Device > Device and Pin Options > Configuration Pinを選択し、Use INIT_DONE出力をオンにします。
-
ドロップダウン・リストで、使用可能な任意のSDM_IOピンを選択します。
図 54. SDM_IOピンへのINIT_DONEの割り当て
4.3. デザインでのリセットリリースIPのインスタンス化
-
IPカタログで、検索ウィンドウにreset releaseと入力し、リセット・リリース・インテルFPGA IPを見つけます。
図 55. IPカタログでのリセット・リリース・インテルFPGA IP位置の特定
- Reset Release Intel FPGA IPをダブルクリックし、リセットリリースIPをデザインに追加します。
- New IP Variantダイアログボックスでお使いのIPのディレクトリーを検索し、リセットリリースIPのファイル名を指定します。次に、Createをクリックします。これにより、リセットリリースIPがプロジェクトに含まれます。
4.4. PLLリセット信号のゲーティング
以前のFPGAデバイスファミリーでは、PLLロック信号をデザインに頻繁に使用し、PLLがロックされるまでカスタムFPGAロジックをリセット状態に保持していました。より新しいインテルのデバイスファミリーでは、PLLのロック時間は初期化時間よりも短い場合があります。一部のケースでは、デバイスが初期化を完了する前にPLLがロックする場合があります。そのため、PLLのロック出力を使用して インテル® Stratix® 10デバイスでリセットを制御する場合、次の図で示されるように、nINIT_DONEでPLLリセット入力をゲーティングする必要があります。
もしくは、PLL_Lockをリセットシーケンスで使用している場合に、PLL_Lock出力をnINIT_DONE信号でゲーティングすることも1つの方法です (PLL_Lock && !nINIT_DONE)。
4.5. パーシャル・リコンフィグレーション (PR) 使用時のガイダンス
リセットリリースIPは、FPGAコアの完全なコンフィグレーションと、それに続いて行うFPGAコアの完全なリコンフィグレーションにおいてリセットを管理するためにのみ必要です。PRプロセス中の静的ペルソナとPRペルソナの通信を防ぐためにリセットリリースIPは必要ありません。PRの詳細については、 インテル® Quartus® Primeプロ・エディション ユーザーガイド: パーシャル・リコンフィグレーションを参照してください。
4.6. デバイス・コンフィグレーションについての詳細説明
コンフィグレーション中に、グローバル・コンフィグレーション制御信号はコア・ファブリックを凍結状態に保持し、電気的な競合を防ぎます。LSMは並行して動作し、非同期的にセクターの凍結解除を行います。セクター内で、LSMはLAB行とLAB内のレジスターの凍結を解除します。LSMはすべてのセクターで並行してファブリックを解凍するように機能しますが、同期はしていません。そのため、異なるセクターのロジック、または同じセクターの異なる行のロジックは、他のロジックが凍結された状態であっても動作を開始する場合があります。すべてのLSMがユーザーモードに入ると、INIT_DONEがアサートします。
以降の項では、デバイス・コンフィグレーションおよび初期化についてのより詳細な説明を提供します。また、リセットリリースIPを使用してファブリック全体がユーザーモードに入るまで インテル® Stratix® 10デバイスをリセットに保持しなかった場合に考えられる結果を示します。
4.6.1. デバイスの初期化
- 外部ホストは、nCONFIGをHighに駆動することにより、セキュア・デバイス・マネージャー (SDM) にコンフィグレーション要求を駆動します。SDMはアイドル状態を終了し、nSTATUSをHighに駆動することでコンフィグレーションの開始を通知し、コンフィグレーション・データを駆動します。
- SDMはCONF_DONEをアサートし、インテルFPGAがすべてのコンフィグレーション・データを正常に受信したことを示します。
- SDMはコンフィグレーション・ロジックを使用し、ファブリック内のゲーティングされていないクロックを開始します。インテルHyperflex™レジスターはデータのシフトを開始します。そのため、インテルHyperflexの初期条件はランダムになる場合があります。 インテル® Quartus® PrimeのConfigurationダイアログボックスにあるDisable Register Power-up Initialization設定を使用し、以下に説明されているように電源投入時のインテルHyperflexレジスターの初期化を無効にします。
- SDMはコンフィグレーション・ロジックを使用し、LAB、DSP、およびエンベデッド・メモリー・ブロック内のユーザーレジスターの有効化および初期化を行います。
- SDMはINIT_DONEを駆動し、デバイスがユーザーモードに完全に入ったことを示します。リセットリリースIPはnINIT_DONEをアサートします。インテルでは、nINIT_DONEを使用してリセットロジックをゲーティングすることを推奨しています。
- FPGAはユーザーモードに入り、動作準備が整います。
4.6.2. 電源投入時におけるレジスター初期化の回避
- Assignmentsメニューで、Device > Device and Pin Options > Configurationの順に選択します。
-
Configurationダイアログボックスで、Disable Register Power-up Initializationをオンにします。
図 58. 電源投入時におけるレジスター初期化の無効化
リセット終了時に、次のオプションのいずれかを使用してシステムリセットをゲーティングしない限り、初期条件のレジスターの値に依存することはできません。
- リセットリリースIPを含むデザインでは、nINIT_DONEをシステムリセットに配線する必要があります。
- リセットリリースIPを含まないデザインでは、INIT_DONEを外部ピンに配線し、INIT_DONEをシステムリセットへの入力としてFPGAに戻す必要があります。
4.6.3. エンベデッド・メモリー・ブロックの初期条件
4.6.4. ステートマシン・ロジックの保護
不適切なリセット戦略によってワンホットのステートマシンで不正な状態が発生すると考えられる例を次に示します。この例のデザインは、ステート・マシン・レジスターをリセットしません。ステートマシンのデザインは初期状態に入るレジスターに依存します。適切にリセットが行われなければ、このステートマシンはデバイスの一部がアクティブになると動作を開始します。INIT_DONEがアサートされる前に、ステートマシンに含まれる付近のロジックは凍結されています。
アクティブなセクションのレジスターBは動作しており、次のクロックサイクルでレジスターAの値を引き継ぎます。レジスターAは凍結レジスターの状態であり、クロックエッジに応答しません。レジスターAは現在の状態で維持されます。
ファブリック全体がユーザーモードになりました。ステートマシンは、ワンホットのステートマシンに2つの1がある不正な、もしくは不明な状態に入ります。この不正な状態を防ぐには、INIT_DONEがアサートされてファブリック全体がユーザーモードに入ったことを示すまで、リセットリリースIPを使用して回路をリセットの状態に保ちます。
5. リモート・システム・アップデート (RSU)
RSUは、すべての インテル® Stratix® 10デバイスで利用可能な専用のRSU回路を使用してデバイスのリコンフィグレーションを実装します。RSUには次の利点があります。
- 製品を回収することなく機能強化やバグ修正を実行するメカニズムを提供します。
- 市場投入までの時間を短縮します。
- 製品寿命が長くなります。
RSUとMailbox ClientインテルFPGA IPを使用して、コンフィグレーション・ビットストリームをAS x4フラッシュデバイスに書き込むことができます。その後Mailbox ClientインテルFPGA IPを使用し、更新されたイメージから再起動するようにSDMに指示することが可能です。複数のアプリケーション・イメージと単一のファクトリー・イメージをコンフィグレーション・デバイスに保存することができます。デザインでは、コンフィグレーション・デバイス内のアプリケーション・イメージのリモート・アップデートを管理します。
Mailbox ClientインテルFPGA IPへのコマンドにより、リコンフィグレーションが開始します。RSUは、リコンフィグレーション・プロセス中およびリコンフィグレーション・プロセス後にコンフィグレーション・エラーの検出を行います。アプリケーション・イメージ内のエラーが原因でリコンフィグレーションが妨げられる場合、コンフィグレーション回路はファクトリー・イメージに戻り、エラーステータス情報が提供されます。
この章では、アクティブ・コンフィグレーション・スキームに向けたリモート・システム・アップデートの実装について説明します。FPGAはRSUを駆動します。 インテル® Stratix® 10 SoCデバイスの場合、HPSでRSUプロセスを駆動できます。HPSを使用してRSUを駆動する方法に関しては、Intel Stratix 10 SoC Remote System Update (RSU) User Guideを参照してください。
パッシブ・コンフィグレーション・スキームの場合、 インテル® Stratix® 10デバイスではなく、外部ホストがリモート・システム・アップデートを実装します。パッシブ・コンフィグレーション・スキームにおけるリモート・システム・アップデートについての詳細は、以前のデバイスファミリーでのリモート・システム・アップデート実装の情報を提供するRemote Update Intel® FPGA IP User Guideを参照してください。
次の図は、一般的なリモート・システム・アップデート・プロセスの機能を表しています。
5.1. リモート・システム・アップデート機能の説明
5.1.1. RSUの用語集
用語 | 意味 |
---|---|
ファームウェア | SDMで実行されるファームウェアです。次の機能を含む多くの機能を実装します。
|
決定ファームウェア | 優先度が最も高いイメージを識別してロードするファームウェアです。決定ファームウェアは、このユーザーガイドの以前のバージョンでは静的ファームウェアと呼ばれていました。 インテル® Quartus® Prime開発ソフトウェアのバージョン19.1より、RSUを使用してこのファームウェアを更新できます。 |
決定ファームウェアのデータ | 決定ファームウェアのデータ構造には次の情報が含まれます。
|
コンフィグレーション・ポインター・ブロック (CPB) | 優先度順のアプリケーション・イメージ・アドレスのリストです。イメージを追加すると、そのイメージが最優先になります。 |
サブ・パーティション表 (SPT) | フラッシュストレージの管理を容易にするデータ構造です。 |
アプリケーション・イメージ | ご自身のデザインを実装するコンフィグレーション・ビットストリームです。このイメージには、SDMファームウェアが含まれています。 |
ファクトリー・イメージ | アプリケーション・イメージのロードの試みすべてに失敗した場合に、RSUがロードするフォールバック・コンフィグレーション・ビットストリームです。 |
初期のRSUフラッシュイメージ | ファクトリー・イメージ、アプリケーション・イメージ、決定ファームウェア、および関連するRSUデータ構造が含まれています。 |
ファクトリー・アップデート・イメージ | フラッシュ内のRSUに関連する次の内容を更新するイメージです。
|
5.1.2. ASコンフィグレーションを使用するリモート・システム・アップデート
ASコンフィグレーションを使用するリモート・システム・アップデートには、次のコンポーネントが含まれます。
- リモート・システム・アップデートのホストデザイン。このホストには、カスタムロジック、HPS、またはFPGA内の Nios® IIプロセッサーを使用することが可能です。
- 1つのファクトリー・イメージ
- イメージ保存用のフラッシュメモリー
- 少なくとも1つのアプリケーション・イメージ
- HPSをリモート・システム・アップデートのホストとして使用しないデザインの場合、次の図のように、Mailbox ClientインテルFPGA
IPが必要です。Mailbox Clientは、QSPI_READ、QSPI_WRITEなどのリモート・システム・アップデートの操作コマンドおよび応答を送受信します。オプションとして、Serial Flash Mailbox ClientインテルFPGA
IPを使用し、シリアルフラッシュに対するアプリケーション・イメージの書き換えなどのフラッシュ・トランザクションを実行することができます。
図 62. インテル® Stratix® 10 リモート・システム・アップデートのコンポーネント
インテル® Quartus® Prime開発ソフトウェアのバージョン19.2より、 Avalon® メモリーマップド (Avalon-MM) インターフェイスを介してSDMメールボックスにアクセスする次のメールボックス・クライアントIPに制約が適用されます。
- 温度センサー
- 電圧センサー
- チップID
- Serial Flash Mailbox Client
- Mailbox Client IP
- Advanced SEU Detection IP
- パーシャル・リコンフィグレーションIP
インテル® Quartus® Prime19.2以降のバージョンで作成した上記のSDMメールボックス・クライアントIPを含む.sofは、 インテル® Quartus® Prime開発ソフトウェア19.1以前のバージョンでのビットストリームの生成またはJTAGコンフィグレーションに使用することができません。ただし、 インテル® Quartus® Prime19.1以前のバージョンで作成された上記SDMメールボックス・クライアントIPを含む.sofは、バージョン19.2以降の インテル® Quartus® Prime開発ソフトウェアで使用することが可能です。
5.1.3. リモート・システム・アップデートのコンフィグレーション・イメージ
リモート・システム・アップデートを使用する インテル® Stratix® 10デバイスには、次のコンフィグレーション・イメージが必要です。
- ファクトリー・イメージ—このイメージには、次の機能を実装するためのロジックが含まれています。
- 新しいアプリケーション・イメージを取得するための、お使いのデザインに固有のロジック
- 特定のアプリケーション・イメージでのリコンフィグレーションを要求するための、お使いのデザインに固有のロジック
- フラッシュメモリー内のイメージストレージ
- アプリケーション・イメージ—カスタム・アプリケーションを実装するためのロジックが含まれています。アプリケーション・イメージはまた、新しいアプリケーション・イメージを取得し、そのイメージをフラッシュメモリーに保存するためのロジックを備えている必要があります。
お使いのフラッシュメモリーのストレージスペースに応じて、 インテル® Stratix® 10のリモート・システム・アップデートは、1つのファクトリー・イメージと最大507のアプリケーション・イメージをサポートします。Quartus Programming File Generatorは、最大7つのリモート・システム・アップデート・イメージのみをサポートします。ただし、ユーザーモードのデバイスでMailbox Client IPまたはSerial Flash Mailbox Client IPを使用し、イメージをさらに追加することが可能です。
5.1.4. リモート・システム・アップデートのコンフィグレーション・シーケンス
リコンフィグレーションの手順は、次のとおりです。
- デバイスがパワーオンリセット (POR) を終了した後、ブートROMは、アドレス0、256 K、512 K、または768 Kにあるコピーのうちの最初の有効な決定ファームウェアからフラッシュメモリーをロードし、SDMを初期化します。同じコンフィグレーション・ファームウェアが、これらの各位置に存在します。このファームウェアは、初期のRSUフラッシュイメージの一部です。初期のRSUフラッシュイメージをフラッシュにプログラミングする方法についての詳細な手順は、HPS以外でのリモート・システム・アップデート機能の実行に向けたガイドライン のステップ2を参照してください。
- オプションのDirect-To-Factoryピンは、SDMファームウェアがファクトリー・イメージまたはアプリケーション・イメージのどちらをロードするかを制御します。Direct-To-Factory入力は、任意の未使用SDMピンに割り当てることができます。このピンを割り当てない場合、SDMはアプリケーション・イメージをロードします。
- フラッシュデバイス内のコンフィグレーション・ポインター・ブロックは、アプリケーション・イメージへのポインターのリストを保持します。
- アプリケーション・イメージをロードする際、SDMはポインターブロックを逆の順序で走査します。SDMは最も優先順位の高いイメージをロードします。イメージのロードが完了すると、デバイスはユーザーモードに入ります。
- 最新の (優先順位が最も高い) イメージのロードが成功しなかった場合、SDMはリストにある次のアプリケーション・イメージのロードを試みます。いずれのアプリケーションも正常にロードされなかった場合、SDMはファクトリー・イメージをロードします。
- ファクトリー・イメージのロードに失敗した場合、JTAGインターフェイスを使用し、初期のRSUフラッシュイメージでクワッドSPIフラッシュを再プログラミングすることで回復できます。
5.1.5. 破損したイメージからのRSU回復
次の例は、破損したイメージからの回復を示しています。
複数の破損したイメージ
フラッシュメモリーに複数の破損したイメージが含まれている場合、RSU_STATUSは、失敗したイメージのうちで最も優先順位が高いイメージの状態のみを報告します。次の例は、その流れを示しています。
- フラッシュメモリーには、優先度順に次の4つのイメージが含まれています。
- アプリケーション・イメージ3 (最優先)
- アプリケーション・イメージ2
- アプリケーション・イメージ1
- アプリケーション・イメージ0 (優先順位は最も低い)
- アプリケーション・イメージ3、アプリケーション・イメージ2、アプリケーション・イメージ1が破損しています。
- RSU_STATUSには次の情報が含まれます。
- 現在のイメージ: アプリケーション・イメージ0
- Highest priority failing image、State、Version、Error location、Error detailsは、失敗したイメージのうち最も優先順位の高いアプリケーション・イメージ3の情報を記録します。
5.1.6. ファクトリー・アップデート・イメージでの更新
次のような理由により、更新が必要になる場合があります。
- ファームウェアに脆弱性がある場合
- ファームウェアまたはファクトリー・イメージにエラーがある場合
インテルでは、ファクトリー・イメージおよび、関連する決定ファームウェアと決定ファームウェア・データをリモートで更新する安全なソリューションを提供しています。更新プロセスでは重要なデータの複数のコピーが保存されるため、電源喪失が発生した場合や更新が中断された場合でも、デバイスは再起動して更新を続行することができます。電源が回復すると、更新は自動的に続行されます。更新を実行する手順は次のとおりです。
- Programming File Generatorを使用し、ファクトリー・アップデート・イメージを生成します。イメージには、新しいファクトリー・イメージ、決定ファームウェア、および決定ファームウェア・データが含まれます。
- ファクトリー・アップデート・イメージ (*.rpd) を、フラッシュデバイスの新しいセクター境界から始まる空いているパーティション・スロットにプログラミングします。
- リコンフィグレーションをトリガーし、ステップ2で指定した開始アドレスからアップデート・イメージをロードします。
-
更新されたイメージは次の操作を行います。
- フラッシュデバイス内の以前の決定ファームウェアと決定ファームウェア・データを消去し置き換えます。
- フラッシュデバイスに新しいファクトリー・イメージを再プログラミングします。
- アップデートが完了すると、更新されたイメージはCPBから削除され、アプリケーション・イメージ、またはアプリケーション・イメージが利用できない場合はファクトリー・イメージをロードします。
- アップデート・プロセスでアプリケーション・スロットを使用した場合は、アプリケーション・イメージ.rpdをアプリケーション・スロットとCPBに書き込み、アプリケーション・イメージを復元する必要があります。
5.2. HPS以外でのリモート・システム・アップデート機能の実行に向けたガイドライン
- ファクトリー・イメージまたはアプリケーション・イメージには、少なくともリモート・システム・アップデート・ホスト・コントローラーとMailbox ClientインテルFPGA IPを含める必要があります。
- カスタムロジック、 Nios® IIプロセッサー、またはJTAGとAvalonマスター間のブリッジIPのいずれかを、リモート・システム・アップデート・ホスト・コントローラーとして使用することができます。
- リモート・システム・アップデート・ホスト・コントローラーは、Mailbox ClientインテルFPGA IPを介してSDMとの間のコマンドおよび応答を送受信することで、リモート・システム・アップデートの機能を制御します。Mailbox Clientは、リモート・システム・アップデート・ホストとSDM間のメッセンジャーとして機能し、SDMへのコマンドおよびSDMからの応答を受け渡します。
- 事前に生成されている標準のリモート・システム・アップデート・イメージ・ファイルには、1つのファクトリー・イメージと、少なくとも1つのアプリケーション・イメージが含まれています。リモート・システム・アップデート・イメージは、フラッシュメモリーにプログラミングする必要があります。実際のアプリケーション・イメージの完成前は、ダミーのイメージを使用してRSU機能の開発を始めることができます。ユーザーモードでは、アプリケーション・イメージを追加しプログラミングすることができます。
- Programming File Generatorを使用する標準または単一のリモート・システム・アップデート・イメージ・ファイルの生成手順に関する詳細については、Programming File Generatorを使用するリモート・システム・アップデート・イメージ・ファイルの生成 を参照してください。
- リモート・システム・アップデートでは、AS x4コンフィグレーション・スキームを使用し、事前に生成されたリモート・システム・アップデート・イメージでFPGAをコンフィグレーションする必要があります。
- デバイスがファクトリー・イメージまたはアプリケーション・イメージのいずれかでユーザーモードに入ると、リモート・システム・アップグレード・ホストは次のリモート・システム・アップデートの操作ができるようになります。
- アプリケーション・イメージまたはファクトリー・イメージでのデバイスのリコンフィグレーション
- ファクトリー・イメージからアプリケーション・イメージへ、またはその逆
- アプリケーション・イメージから別のアプリケーション・イメージへ
- アプリケーション・イメージの消去
- アプリケーション・イメージの追加
- アプリケーション・イメージまたはファクトリー・イメージの更新
- アプリケーション・イメージまたはファクトリー・イメージでのデバイスのリコンフィグレーション
5.3. コマンドおよび応答
ブロック図
次の図は、 インテル® Stratix® 10デザインにおけるMailbox ClientインテルFPGA IPの役割を表しています。Mailbox Client IPは、SDMとの通信を可能にすることで、クワッドSPIフラッシュメモリーとシステムステータスにアクセスできるようになります。
Mailbox Clientの役割
ヘッダー | ビット | 説明 |
---|---|---|
Reserved | [31:28] | 予約済み |
ID | [27:24] | コマンドIDです。応答ヘッダーは、コマンドヘッダーで指定されているIDを返します。コマンドと応答を一致させるには、各コマンドに異なるIDを設定します。 |
0 | [23] | 予約済み |
Length | [22:12] | ヘッダーに続く引数のワード数です。指定されているコマンドに対して不正な引数のワード数が入力された場合、IPはエラーで応答します。 |
Reserved | [11] | 予約済み。0に設定する必要があります。 |
Command Code/Error Code | [10:0] |
Command Codeはコマンドを指定します。Error Codeはコマンドが成功したか失敗したかを示します。 コマンドヘッダーでは、これらのビットはコマンドコードを表します。応答ヘッダーでは、これらのビットはエラーコードを表します。 |
5.3.1. 操作コマンド
コマンド | コード (Hex) | コマンド長 8 | 応答長8 | 説明 | |||
---|---|---|---|---|---|---|---|
RSU_IMAGE_UPDATE | 5C | 2 | 0 |
ファクトリー・イメージまたはアプリケーション・イメージのいずれかのデータソースからリコンフィグレーションをトリガーします。 このコマンドは、フラッシュ内のリコンフィグレーション・データ・アドレスを指定する64ビットのオプションの引数を取ります。引数を指定しない場合、その値は0とみなされます。
デバイスがすでにコンフィグレーション・コマンドを処理している場合は、ゼロ以外の応答を返します。 |
|||
RSU_GET_SPT | 5A | 0 | 4 |
RSU_GET_SPTは、RSUが使用する2つのサブ・パーティション表 (SPT0およびSPT1) のクワッドSPIフラッシュの位置を取得します。 4ワードの応答には次の情報が含まれます。 |
|||
オフセット | 名称 | 説明 | |||||
0 | SPT0[63:32] | クワッドSPIフラッシュ内のSPT0のアドレス | |||||
1 | SPT0[31:0] | ||||||
2 | SPT1[63:32] | クワッドSPIフラッシュ内のSPT1のアドレス | |||||
3 | SPT1[31:0] | ||||||
CONFIG_STATUS | 4 | 0 | 6 |
最後のリコンフィグレーションの状態を報告します。このコマンドを使用し、コンフィグレーション中およびコンフィグレーション後のコンフィグレーション状態を確認することができます。応答には次の情報が含まれます。 |
|||
ワード | 要約 | 説明 | |||||
0 | 状態 | コンフィグレーションに関する最新のエラーについて説明します。コンフィグレーション・エラーがない場合は0を返します。 エラーフィールドには2つのフィールドがあります。
|
|||||
1 | バージョン | RSUデータ構造のバージョン | |||||
2 | ピンの状態 |
|
|||||
3 | ソフト機能の状態 | 各ソフト機能の値を含みます。SDMピンに機能を割り当てていない場合でも値は含まれます。
|
|||||
4 | エラー位置 | エラーの位置を含みます。エラーがなければ0を返します。 | |||||
5 | エラー詳細 | エラーの詳細を含みます。エラーがなければ0を返します。 | |||||
RSU_STATUS | 5B | 0 | 9 | 現在のリモート・システム・アップグレードの状態を報告します。このコマンドを使用し、コンフィグレーション中および完了後にコンフィグレーションの状態を確認できます。このコマンドは、次の応答を返します。 | |||
ワード | 要約 | 説明 | |||||
0-1 | 現在のイメージ | 現在実行中のアプリケーション・イメージのフラッシュオフセットです。 | |||||
2-3 | 失敗したイメージ |
失敗したイメージのうち、最も優先順位が高いアプリケーション・イメージのフラッシュオフセットです。フラッシュメモリーで複数のイメージが使用可能な場合、最初に失敗したイメージの値を格納します。すべてが0の値は、失敗したイメージがないことを示します。失敗したイメージがない場合、ステータス情報の残りのワードに有効な情報は格納されません。 注: ASx4において、リコンフィグレーションを行うnCONFIGの立ち上がりエッジはこのフィールドをクリアーしません。失敗したイメージに関する情報は、Mailbox Clientが新しいRSU_IMAGE_UPDATEコマンドを受信し、更新イメージで正常にコンフィグレーションが行われた場合にのみ更新されます。
|
|||||
4 | 状態 | 失敗したイメージの失敗コードです。 エラーフィールドには2つの部分があります。
|
|||||
5 | エラー報告とバージョン | インテルQuartus Prime開発ソフトウェア・プロ・エディションのバージョン19.4より、次のフィールドが含まれます。
|
|||||
6 | エラー位置 | 失敗したイメージのエラー位置を格納します。エラーがなければ0を返します。 | |||||
7 | エラー詳細 | 失敗したイメージのエラーの詳細を格納します。エラーがなければ0を返します。 | |||||
8 | 現在のイメージの再試行カウンター |
現在のイメージに対して行われた再試行回数のカウントです。最初はカウンターは0です。カウンターは最初の再試行後に1に設定され、2回目の再試行後に2に設定されます。 インテル® Quartus® Prime設定ファイル (.qsf) で再試行の最大数を指定します。コマンドは、set_global_assignment -name RSU_MAX_RETRY_COUNT 3です。MAX_RETRYカウンターの有効な値は1から3です。使用可能な再試行の実際の数は、MAX_RETRY -1です。 このフィールドは、インテルQuartus Prime開発ソフトウェア・プロ・エディションのバージョン19.3で追加されました。 |
|||||
QSPI_OPEN | 32 | 0 | 1 |
クワッドSPIへの排他的アクセスを要求します。SDMは、クワッドSPIが使用されておらず、SDMがデバイスをコンフィグレーションしていない場合に要求を受け入れます。SDMがアクセスを許可する場合はOKを返します。クワッドSPIフラッシュがビジーの場合はALT_SDM_MBOX_RESP_DEVICE_BUSYを返します。 注: SDMは、このメールボックスを使用してクライアントに排他的アクセスを許可します。アクティブなクライアントがQSPI_CLOSEコマンドを使用してアクセスを放棄するまで、他のクライアントはクワッドSPIにアクセスできません。
|
|||
QSPI_CLOSE | 33 | 0 | 1 | クワッドSPIインターフェイスへの排他的アクセスを閉じます。 | |||
QSPI_SET_CS | 34 | 1 | 1 | チップ・セレクト・ラインで接続されているクワッドSPIデバイスの1つを指定します。次に説明されているように、1ワードの引数を取ります。
このコマンドは、AS x4のコンフィグレーション・スキームではオプションです。他のすべてのコンフィグレーション・スキームには必要です。 SDM_IOピンを使用するQSPIフラッシュ・メモリー・デバイスへのアクセスは、AS x4コンフィグレーション・スキーム、JTAGコンフィグレーション、およびASx4コンフィグレーションにコンパイルされたデザインでのみ利用可能です。 Avalon® STコンフィグレーション・スキームでは、QSPIフラッシュメモリーをGPIOピンに接続する必要があります。 |
|||
QSPI_READ | 3A | 2 | N |
接続されているクワッドSPIデバイスを読み出します。最大の読み出しサイズは4キロバイト (KB) です。 2つの引数を取ります。
成功するとOKが返され、クワッドSPIデバイスから読み出されたデータが続きます。失敗応答はエラーコードを返します。 部分的に成功した読み出しの場合、QSPI_READは誤ってOKステータスを返す場合があります。 注: デバイス・コンフィグレーションの進行中に、QSPI_READコマンドを実行することはできません。
|
|||
QSPI_WRITE | 39 | 2+N | 0 | クワッドSPIデバイスにデータを書き込みます。3つの引数を取ります。
書き込みに成功すると、OK応答コードが返されます。 書き込みに向けてメモリーを準備する際に、インテルでは、このコマンドを発行する前にQSPI_ERASEコマンドを使用することを推奨しています。 注: デバイス・コンフィグレーションの進行中に、QSPI_WRITEコマンドを実行することはできません。
|
|||
QSPI_ERASE | 38 | 2 | 0 | クワッドSPIデバイスのセクターを消去します。2つの引数を取ります。
|
|||
QSPI_READ_DEVICE_REG | 35 | 2 | N | クワッドSPIデバイスからレジスターを読み出します。読み出しは最大8バイトです。次の2つの引数を取ります。
読み出しが成功すると、OK応答コードと、それに続いてデバイスから読み出されたデータが返されます。4バイトの倍数ではないデータは、次のワード境界までパディングされます。 |
|||
QSPI_WRITE_DEVICE_REG | 36 | 2+N | 0 | クワッドSPIのレジスターに書き込みます。書き込みは最大8バイトです。3つの引数を取ります。
セクターの消去またはサブセクターの消去を行う場合は、シリアル・フラッシュ・アドレスを最上位バイト (MSB) から最下位バイト (LSB) の順で以下の例のように指定する必要があります。 アドレス0x04FF0000にあるMicron 2 gigabit (Gb) フラッシュのセクターをQSPI_WRITE_DEVICE_REGコマンドを使用して消去するには、フラッシュアドレスをMSBからLSBの順で次のように書き込みます。 ヘッダー: 0x00003036 オペコード: 0x000000DC 書き込むバイト数: 0x00000004 フラッシュアドレス: 0x0000FF04 書き込みが成功すると、OK応答コードが返されます。このコマンドは、4バイトの倍数ではないデータを次のワード境界までパディングします。 |
|||
QSPI_SEND_DEVICE_OP | 37 | 1 | 0 | クワッドSPIにコマンドオペコードを送信します。1つの引数を取ります。
コマンドが成功すると、OK応答コードが返されます。 |
|||
RSU_NOTIFY | 5D | 1 | 0 |
RSU_STATUS応答にあるすべてのエラー情報をクリアーし、再試行カウンターをリセットします。1ワードの引数には次のフィールドがあります。
|
重大なエラーコード | エラーの種類 | 説明 |
---|---|---|
0xF001 | BITSTREAM_ERROR | 符号なしビットストリームが使用されている可能性があります。ビットストリームが正しいキーで署名されていることを確認します。 |
0xF002 | HARDWARE_ACCESS_FAILURE | PMBusに準拠する電圧レギュレーターとの通信エラーです。パワー・マネジメントとSmartVID (Smart Voltage Identification) のパラメーター設定および、PMBusインターフェイス接続を確認します。 |
0xF003 | BITSTREAM_CORRUPTION | ビットストリームが破損しています。コンフィグレーション・デバイスまたはフラッシュのビットストリームが破損していないことを確認します。 |
0xF004 | INTERNAL_ERROR |
この重大なエラーのコードは、次のエラーイベントを示している可能性があります。
|
0xF005 | DEVICE_ERROR |
SDMの内部デバイスエラーを示します。次のエラーが発生している可能性があります。
お住まいの地域のフィールド・アプリケーション・エンジニア (FAE) にお問い合わせください。もしくは、 My Intel サポートページでサービスリクエストを発行し、さらなるデバッグに向けたエラーログのキャプチャーに関してサポートを得ます。 |
0xF006 | HPS_WATCHDOG_TIMEOUT | HPSウォッチドッグのタイムアウト・エラーです。デザインがウォッチドッグ・タイマーを正しくリセットしていることを確認します。 |
0xF007 | INTERNAL_UNKNOWN_ERROR |
不明なタスクによる内部デバイスエラーを示します。 お住まいの地域のフィールド・アプリケーション・エンジニア (FAE) にお問い合わせください。もしくは、 My Intel サポートページでサービスリクエストを発行し、さらなるデバッグに向けたエラーログのキャプチャーに関してサポートを得ます。 |
軽微なエラーコード | エラーの種類 | 説明 |
---|---|---|
0xD001 | RSU_CMF_AUTH_ERR | ファームウェアの認証エラーです。 |
0xD002 | RSU_USER_AUTH_ERR | デザインの認証エラーです。 |
0xD003 | RSU_CMF_DESC_SHA_MISMATCH | SHAがファームウェアの記述子と一致しません。 |
0xD004 | RSU_POINTERS_NOT_FOUND_ERR | デバイスがパワーオンリセット (POR) を終了した後の最初のブートで、ブートROMからデータを読み出すことができません。 |
0xD005 | RSU_QSPI_REQ_CHANGE | RSUの初期化中にクワッドSPIフラッシュをコンフィグレーションできません。 |
0xD006 | RSU_FACTORY_IMAGE_FAILED | イメージのロードに失敗しました (ファクトリー・イメージも含む)。 |
0xD007 | RSU_CMF_TYPE_ERR | ファームウェアのバージョンが以前にロードされたバージョンと一致しません。 |
5.3.2. エラーコードの応答
値 (Hex) | エラーコードの応答 | 説明 |
---|---|---|
0 | OK |
コマンドが正常に完了したことを示します。 QSPI_READなどのコマンドが部分的に成功した際に、コマンドは誤ってOKステータスを返す場合があります。 |
1 | INVALID_COMMAND | コマンドの形式が正しくないことを示します。 |
2 | UNKNOWN_BR | コマンドコードが理解されていないことを示します。 |
3 | UNKNOWN | 現在ロードされているファームウェアがコマンドコードをデコーディングできないことを示します。 |
4 | INVALID_COMMAND_PARAMETERS | ヘッダー長または間接的な設定が有効ではありません。または、コマンドデータが無効です。 |
5 | COMMAND_INVALID_ON_SOURCE | 有効にされていないソースからのコマンドです。 |
6 | CLIENT_ID_NO_MATCH | クワッドSPIまたはSD MMCへのアクセスを要求しているクライアントIDが、排他的アクセスを持たないことを示します。 |
7 | INVALID_ADDRESS | アドレスが無効です。このエラーは、次のいずれかの状態を示しています。
|
8 | TIMEOUT | コマンドがタイムアウトになりました。 |
9 | HW_NOT_READY | ハードウェアの準備ができていません。初期化またはコンフィグレーションの問題を示している可能性があります。 |
100 | NOT_CONFIGURED | デバイスがコンフィグレーションされていないことを示します。 |
1FF | ALT_SDM_MBOX_RESP_DEVICE_BUSY | デバイスがビジーであることを示します。 |
2FF | ALT_SDM_MBOX_RESP_NO_VALID_RESP_AVAILABLE | 有効な応答がないことを示します。 |
3FF | ALT_SDM_MBOX_RESP_ERROR | 一般エラー |
5.4. クワッドSPIフラッシュのレイアウト
5.4.1. ハイレベルのフラッシュレイアウト
5.4.1.1. 標準 (RSU以外) のフラッシュレイアウト
標準 (RSU以外) のケースでは、フラッシュにはファームウェア・イメージが4つ、およびアプリケーション・イメージが含まれます。起こり得る破損に備え、ファームウェアには4つの冗長コピーがあります。ファームウェアには、フラッシュ内の最も優先順位の高いアプリケーション・イメージ位置へのポインターが含まれています。アプリケーション・イメージは通常、ファームウェアの4つのコピーの直後にありますが、インテルQuartus Prime プロ・エディションのツールはこの位置を必要としていません。
5.4.1.2. RSUフラッシュレイアウト – SDMの視点から
- 決定データ
- 1つのファクトリー・イメージ
- 2つのポインターブロック (CPB)
決定ファームウェア・データには、次のような基本設定が格納されます。
- クワッドSPIフラッシュメモリーに接続するクロックとピン
- SDMにファクトリー・イメージをロードするように強制するDirect to Factory Imageピン。このピンは、Assignments > Device > Device and Pin Options > Configuration > Configuration Pin Optionsのメニューで設定することができます。
ポインターブロックにはアプリケーション・イメージのリストが含まれています。これは、そのうちのいずれかが成功するまで試行されます。アプリケーション・イメージがいずれも成功しなかった場合、SDMはファクトリー・イメージをロードします。信頼性を確保するため、ポインターブロックにはメインコピーとバックアップ・コピーが含まれており、更新操作が失敗した場合に備えています。
ファクトリー・イメージとアプリケーション・イメージはどちらもファームウェアで始まります。最初に決定ファームウェアがファームウェアをロードします。次に、そのファームウェアは残りのイメージをロードします。上の図に、これらの実装についての詳細は示されていません。詳細に関しては、アプリケーション・イメージのレイアウトの章を参照してください。
5.4.1.3. RSUフラッシュレイアウト – ご自身の視点から
サブ・パーティション表 (SPT) はクワッドSPIフラッシュを管理します。HPSを含むデバイスの場合、HPSはSPTへのアクセスと読み出しを行い、それをSDMに報告することができます。
インテル® Quartus® PrimeのProgramming File Generatorは、初期の製造イメージを作成する際にSPTを作成します。信頼性のある動作を確保するために、Programming File Generatorは、サブ・パーティション表およびコンフィグレーション・ポインター・ブロックのコピーを2つ (SPT0およびSPT1、CPB0およびCPB1) 作成します。
フラッシュに保存される初期RSUイメージには、一般的に次のパーティションが含まれます。
サブ・パーティション名 | コンテンツ |
---|---|
BOOT_INFO | 決定ファームウェアと決定ファームウェア・データ |
FACTORY_IMAGE | ファクトリー・イメージ |
SPT0 | サブ・パーティション表0 |
SPT1 | サブ・パーティション表1 |
CPB0 | ポインターブロック0 |
CPB1 | ポインターブロック1 |
A1 (入力してください) | アプリケーション・イメージ 1 |
A2 (入力してください) | アプリケーション・イメージ 2 |
- 決定ファームウェア、決定ファームウェア・データ、およびファクトリー・イメージのアドレスを認識する必要はありません。
- サブ・パーティション表にアクセスできます。サブ・パーティション表は、リモート・システム・アップデートに必要なデータ構造へのアクセスを提供します。
5.4.2. クワッドSPIフラッシュレイアウトの詳細
5.4.2.1. RSUサブ・パーティションのレイアウト
フラッシュのサブ・パーティション・レイアウトの表は、RSUフラッシュイメージのレイアウトを示しています。
フラッシュオフセット | サイズ (バイト) | コンテンツ | サブ・パーティション名 |
---|---|---|---|
0 K | 256 K | 決定ファームウェア | BOOT_INFO |
256 K | 256 K | 決定ファームウェア | |
512 K | 256 K | 決定ファームウェア | |
768 K | 256 K | 決定ファームウェア | |
1M | 8 K + 24パッド | 決定ファームウェア・データ | |
1M+32 K | 32 K | SDMに予約済み | |
2M+64 K | 不定 | ファクトリー・イメージ | FACTORY_IMAGE |
Next | 4 K + 28 Kパッド | サブ・パーティション表 (コピー0) | SPT0 |
Next | 4 K + 28 Kパッド | サブ・パーティション表 (コピー1) | SPT1 |
Next | 4 K + 28 Kパッド | ポインターブロック (コピー0) | CPB0 |
Next | 4 K + 28 Kパッド | ポインターブロック (コピー1) | CPB1 |
Next | 不定 | アプリケーション・イメージ1 | 割り当ててください |
Next | 不定 | アプリケーション・イメージ2 | 割り当ててください |
インテル® Quartus® PrimeのProgramming File Generatorでは、多くのユーザー・パーティションを作成できます。これらのパーティションには、アプリケーション・イメージおよび、第2ステージ・ブートローダー (SSBL)、Linux*カーネル、Linux*ルート・ファイル・システムなどの他のファイルを含めることが可能です。
初期のフラッシュイメージを作成する際は、アプリケーション・イメージに最大7つのパーティションを作成できます。空のパーティションの作成に制限はありません。
5.4.2.2. サブ・パーティション表のレイアウト
次の表に、サブ・パーティション表の構造を示します。 インテル® Quartus® Prime開発ソフトウェアは、最大126のパーティションをサポートします。各サブ・パーティションの記述子は32バイトです。
オフセット | サイズ (バイト) | 説明 |
---|---|---|
0x000 | 4 | マジックナンバー0x57713427 |
0x004 | 4 | バージョン番号 (このドキュメントの場合は0) |
0x008 | 4 | エントリー数 |
0x00C | 20 | 予約済み |
0x020 | 32 | サブ・パーティション記述子1 |
0x040 | 32 | サブ・パーティション記述子2 |
0xFE0 | 32 | サブ・パーティション記述子126 |
各32バイトのサブ・パーティション記述子には、次の情報が含まれています。
オフセット | サイズ | 説明 |
---|---|---|
0x00 | 16 | Null文字列ターミネーターを含むサブ・パーティション名 |
0x10 | 8 | サブ・パーティションの開始オフセット |
0x18 | 4 | サブ・パーティションの長さ |
0x1C | 4 | サブ・パーティション・フラグ |
5.4.2.3. コンフィグレーション・ポインター・ブロックのレイアウト
コンフィグレーション・ポインター・ブロックには、アプリケーション・イメージのリストが含まれています。イメージの1つが成功する、もしくはすべてのイメージが失敗するまでSDMはイメージを順次試行します。構造には次の情報が含まれます。
オフセット | サイズ (バイト) | 説明 |
---|---|---|
0x00 | 4 | マジックナンバー0x57789609 |
0x04 | 4 | ポインター・ブロック・ヘッダーのサイズ (このドキュメントの場合は0x18) |
0x08 | 4 | ポインターブロックのサイズ (このドキュメントの場合は4096) |
0x0C | 4 | 予約済み |
0x10 | 4 | イメージポインターへのオフセット (IPTAB) |
0x14 | 4 | イメージ・ポインター・スロットの数 (NSLOTS) |
0x18 | — | 予約済み |
IPTAB | 8 | 最初 (優先順位が最下位) のイメージ・ポインター・スロット |
8 | 2番目の (優先順位が2番目に低い) イメージ・ポインター・スロット | |
8 | … | |
8 | 最後 (最優先) のイメージポインター |
コンフィグレーション・ポインター・ブロックには、最大508のアプリケーション・イメージ・ポインターを含めることができます。実際の数は、NSLOTSでリストされます。一般的なコンフィグレーション・ポインター・ブロックの更新手順では、新しいポインターを追加し、場合によっては古いポインターをクリアーします。通常、ポインターブロックの更新には追加エントリーを1つ使用します。そのため、ポインターブロックの消去が要求されるまでに、508のリモート・システム・アップデートを行うことができます。消去手順は、ポインターブロックの圧縮と呼ばれます。この手順は安全です。ポインターブロックには2つのコピーがあります。コピーは異なるフラッシュ消去セクターにあります。1つのコピーが更新されている間も、もう一方のコピーは依然として有効です。
5.4.2.4. アプリケーション・イメージ・リストの変更
SDMは、コンフィグレーション・ポインター・ブロックを使用して、アプリケーション・イメージの優先順位を特定します。
- セクター消去では、セクター・フラッシュ・ビットはすべて1’になります。
- プログラム操作では、1’を0’にすることのみ可能です。
- すべて1’ – エントリーは使用されていません。クライアントは、このエントリーへのポインターを書き込むことが可能です。これは、ポインターブロックでクワッドSPIの消去操作が発生した後の状態です。
- すべて0’ – エントリーは以前使用されており、その後キャンセルされています。
- 1'と0'の組み合わせ – アプリケーション・イメージへの有効なポインターです。
コンフィグレーション・ポインター・ブロックが消去されると、すべてのエントリーは未使用としてマークされます。リストにアプリケーション・イメージを追加する場合、クライアントは最初の未使用位置を特定し、その位置にアプリケーション・イメージ・アドレスを書き込みます。リストからアプリケーション・イメージを削除する場合、クライアントはポインター・ブロック・リストでアプリケーション・イメージ・アドレスを特定し、このアドレスを0に書き込みます。
コンフィグレーション・ポインター・ブロックに新しいアプリケーション・イメージ用のスペースがなくなった場合、クライアントは次の作業を完了することでポインターブロックを圧縮します。
- ポインターブロックの消去
- これまでの有効なエントリーをすべてコピー
- 新しいイメージの追加
HPSを使用してRSUを管理している場合、U-BootクライアントとLIBRSUクライアントはどちらも、ブロックの圧縮を実装します。FPGAロジックからRSUを駆動するデザインの場合、ポインターブロックの圧縮は、 Nios® IIコード、スクリプト言語、またはステートマシンなど、さまざまな方法で実装可能です。
ポインターブロックには使用可能なエントリーが最大508あるため、ポインターブロックの圧縮は頻繁には発生しません。
コンフィグレーション・ポインター・ブロックには、CPB0 (一次) とCPB1 (バックアップ) の2つがあります。ブロックが2つあることにより、それらのうちの1つを消去した直後に電源障害が発生した場合でも、アプリケーション・イメージのリストを保護することができます。詳細については、コンフィグレーション・ポインター・ブロックのレイアウトの内容を参照してください。圧縮する場合、クライアントは一次CPBを完全に圧縮 (消去および書き換え) します。一次CPBが有効になると、二次CPBを変更しても安全です。書き換え時、CPBの先頭のマジックナンバーは、CPBに書き込まれる最後のワードです。(この数値が書き込まれた後は、イメージ・ポインター・スロットの値のみを変更することができます。)
クライアントがアプリケーション・イメージをフラッシュに書き込むと、最初の署名ブロックのメイン・イメージ・ポインター内のポインターが、フラッシュ内の正しい位置を指すように更新されます。HPSを使用してRSUを管理している場合、U-BootクライアントとLIBRSUクライアントはどちらも、必要なポインターの更新を実装します。詳細については、アプリケーション・イメージのレイアウトの内容を参照してください。
5.4.2.5. アプリケーション・イメージのレイアウト
アプリケーション・イメージは、SDMファームウェアとコンフィグレーション・データで構成されます。コンフィグレーション・データは最大4つのセクションを含みます。SDMファームウェアにはこれらのセクションへのポインターが含まれています。次の表は、アプリケーション・イメージ内のセクション数とセクションポインターの位置を示しています。
デフォルトで、アドレスオフセット0x1FC0から始まるアプリケーション・イメージ * .rpdの最初の16バイトは0です。ただし、この16バイトを使用してバージョンIDを格納し、アプリケーション・イメージを識別することが可能です。このバージョンIDを提供することにより、フラッシュメモリーに格納されたイメージを後で確認することができるようになります。
オフセット | サイズ (バイト) | 説明 |
---|---|---|
0x1F00 | 4 | セクション数 |
… | ||
0x1F08 | 8 | 最初のセクションのアドレス |
0x1F10 | 8 | 2番目のセクションのアドレス |
0x1F18 | 8 | 3番目のセクションのアドレス |
0x1F20 | 8 | 4番目のセクションのアドレス |
… | ||
0x1FFC | 4 | 0x1000から0x1FFBのCRC32 |
セクションポインターは、フラッシュ内のFPGAイメージの実際の位置と一致する必要があります。この要件を満たすために、2つのオプションが使用可能です。
- クワッドSPIフラッシュメモリー内の実際の位置に一致するアプリケーション・イメージを生成することができます。システムによって更新のセットが異なる場合があるため、このオプションは実用的ではありません。
- アドレス0に位置していると仮定してアプリケーション・イメージを生成し、その後実際の位置に一致するようにポインターを更新することができます。
- INITIAL_ADDRESSをターゲットにするアプリケーション・イメージを作成します。
- アプリケーション・イメージのオフセット0xF100から32ビット値を読み取り、セクションの数を特定します。
-
<s>= 1 to number_of_sectionsの場合
- section_pointer = 0xF100 + (s * 8) から64ビットのセクションポインターを読み取ります
- section_pointerからINITIAL_ADDRESSを引きます
- NEW_ADDRESSをsection_pointerに加えます
- 更新されたsection_pointerを格納します
- アドレス0x1000から0x1FFBのCRC32を再計算します。新しい値をオフセット0x1FFCに格納します。CRC32の値は、次の手順を使用してデータのコピー上で計算する必要があります。
- 各バイトのビットを入れ替え、ビットが逆の順に発生するようにしてCRCを計算します
- 計算したCRC32の値のバイトを入れ替え、逆の順序で表示されるようにします
- CRC32の値の各バイトのビットを入れ替えます
- CRC32の値をフラッシュに書き込みます
HPSを使用してRSUを管理している場合、U-BootクライアントとLIBRSUクライアントはどちらも上記の手順を実装し、アドレス0をターゲットにしているアプリケーション・イメージを実際の目的のスロットアドレスに再配置します。
5.5. Programming File Generatorを使用するリモート・システム・アップデート・イメージ・ファイルの生成
5.5.1. 初期のRSUイメージの生成
次の手順に従い、初期のRSUイメージを生成します。
- FileメニューのProgramming File Generatorをクリックします。
- Device familyドロップダウン・リストから インテル® Stratix® 10を選択します。
- Configuration schemeドロップダウン・リストからコンフィグレーション・スキームを選択します。現行の インテル® Quartus® Primeは、Active Serial x4でのリモート・システム・アップデート機能のみをサポートしています。
- Output Filesタブで、出力ディレクトリーとファイル名を割り当てます。
-
出力ファイルタイプを選択します。
AS x4コンフィグレーション・モードには、次のファイルタイプを選択してください。
- JTAG Indirect Configuration File (.jic) /Programmer Object File (.pof)
- Memory Map File (.map)
- Raw Programming File (.rpd)
- Input FilesタブでAdd Bitstreamをクリックし、ファクトリー・イメージおよびアプリケーション・イメージの.sofファイルを選択してOpenをクリックします。
- Configuration DeviceタブのAdd Deviceをクリックし、お使いのフラッシュメモリーを選択してOKをクリックします。Programming File Generatorツールは自動的にフラッシュのパーティションを生成します。
- FACTORY_IMAGEパーティションを選択してEditをクリックします。
-
Edit
Partitionダイアログボックスで、入力ファイルのドロップダウン・リストから、使用するファクトリー・イメージの.sofファイルを選択し、OKをクリックします。
注: ファクトリー・イメージにページ0を割り当てる必要があります。インテルでは、Address Modeのデフォルト値であるAutoを変更せずに、 インテル® Quartus® Prime開発ソフトウェアを使用してFACTORY_IMAGEの開始アドレスを自動的に割り当てることを推奨しています。Address Modeドロップダウン・リストからBlockを選択し、FACTORY_IMAGEのEnd address値を設定します。Programming File Generatorは、BOOT_INFO、SPT0、SPT1、CPB0、およびCPB1を格納するための開始および終了フラッシュアドレスの予約および割り当てを行います。
- フラッシュメモリーを選択して、Add Partitionをクリックします。
- Add Partitionダイアログボックスで、Input fileドロップダウン・リストからアプリケーション・イメージの.sofファイルを選択し、ページ番号を割り当てます。
- 追加するアプリケーション・イメージにもこの手順を繰り返し、OKをクリックします。7つのアプリケーション・イメージに対して最大7つのパーティションを追加できます。page 1のアプリケーション・イメージの優先順位が最も高く、page 7は優先順位が最も低いアプリケーション・イメージです。
-
.jicファイルの場合
フラッシュローダーでSelectをクリックしてお使いのデバイスファミリーとデバイス名を選択後、OKをクリックします。
-
Generateをクリックして、リモート・システム・アップデートのプログラミング・ファイルを生成します。プログラミング・ファイルを生成後、フラッシュメモリーのプログラミングを開始します。
注:
生成される.jicファイルには、初期のフラッシュデータのみが含まれます。リモートホストが初期のフラッシュイメージを更新し、その後アプリケーションが検証操作を実行すると、この検証操作は失敗します。この検証操作では更新されたイメージを初期のフラッシュデータと比較しているため、検証が失敗します。更新されたフラッシュイメージを検証する場合は、更新されたイメージをフラッシュから読み戻し、それを必要な.rpdファイルと比較します。
プログラマーを使用してフラッシュのコンテンツを検証し、それを新しいフラッシュイメージの.rpdと比較することができます。
注: ファクトリー・イメージを更新する予定がある場合、インテルでは、ファクトリー・イメージの将来的な拡張に向けて余分に64 KBのスペースを確保しておくことを推奨しています。ファクトリー・イメージの更新に向けて追加のスペースを確保するには、次の手順を実行します。- FACTORY_IMAGEの既存のEND ADDRESSに64 KBを追加し、新しい終了アドレスを特定します。この終了アドレスは、.mapファイルで入手可能です。例えば現在の終了アドレスが0x00423FFであれば、新しい終了アドレスは0x00523FFになります。
- この手順を繰り返して、新しい.jicファイルを再生成します。Configuration DeviceタブでFACTORY_IMAGEパーティションを選択し、Editをクリックします。Edit PartitionダイアログボックスのAddress Modeドロップダウン・リストでBlockを選択し、FACTORY_IMAGEに新しいEnd address値を設定します。
- オプションで、Click File > Save As .. を使用し、コンフィグレーション・パラメーターを.pfg拡張子のファイルとして保存できます。.pfgファイルには、Programming File Generatorの設定が含まれます。.pfgを保存した後、このファイルを使用してプログラミング・ファイルを再生成できます。再生成には、次のコマンドを実行します。
quartus_pfg -c <configuration_file>.pfg
.pfgファイルは実際にはXMLファイルであり、これを編集して絶対ファイルパスを相対ファイルパスに置き換えることができます。その他の理由で.pfgファイルを編集することはできません。Programming File Generatorで.pfgを開き、編集することが可能です。
5.5.2. アプリケーション・イメージの生成
quartus_pfg -c fpga.sof application.rpd -o mode=ASX4 -o start_address=<address> -o bitswap=ON
もしくは、インテル Quartus Prime プロ・エディションのProgramming File Generatorを使用して次の手順を実行することで、.rpdイメージを生成することができます。
- FileメニューのProgramming File Generatorをクリックします。
- Device familyドロップダウン・リストから インテル® Stratix® 10を選択します。
- Configuration modeドロップダウン・リストからコンフィグレーション・モードを選択します。現行の インテル® Quartus® Primeは、Active Serial x4でのリモート・システム・アップデート機能のみをサポートしています。
- Output Filesタブで、出力ディレクトリーとファイル名を割り当てます。
-
出力ファイルタイプを選択します。
AS x4コンフィグレーション・モードには、次のファイルタイプを選択します。
- Raw Programming File (.rpd)
-
Edit…ボタンをクリックし、フラッシュメモリー内のイメージのStart addressを割り当てます。このStart addressは、フラッシュメモリー内のターゲットにするパーティションの開始アドレスと一致している必要があります。
図 70. フラッシュメモリーに格納されるアプリケーション.rpdに対するパラメーターの指定
- デフォルトにおいて、.rpdのファイルタイプはリトル・エンディアンです。リトル・エンディアンの形式をサポートしないサードパーティー製のプログラマーを使用している場合は、Bit swapをOnに設定し、.rpdファイルをビッグ・エンディアン形式で生成します。
-
Input Filesタブで、Add Bitstreamをクリックします。Files of typeをSRAM Object File (*.sof) に変更します。次に、アプリケーション・イメージの.sofファイルを選択してOpenをクリックします。
図 71. .sofファイルの指定
- Generateをクリックし、リモート・システム・アップデート・プログラミング・ファイルを生成します。これにより、フラッシュメモリーをプログラミングできるようになります。コンフィグレーションは、今後の使用に向けて.pfgファイルで保存することが可能です。
5.5.3. ファクトリー・アップデート・イメージの生成
quartus_pfg -c fpga.sof factory_update.rpd -o mode=ASX4 -o start_address=<address> -o bitswap=ON -o rsu_upgrade=ONもしくは、インテルQuartus Prime プロ・エディションのProgramming File Generatorを使用して、ファクトリー・アップデート・イメージ (.rpd) を生成することも可能です。このイメージは、決定ファームウェア、決定ファームウェア・データ、およびファクトリー・イメージの更新に使用することができます。
- FileメニューのProgramming File Generatorをクリックします。
- Device familyドロップダウン・リストから、 インテル® Stratix® 10を選択します。
- Configuration modeドロップダウン・リストからコンフィグレーション・モードを選択します。現行の インテル® Quartus® Primeは、Active Serial x4コンフィグレーション・モードでのRSU機能のみをサポートしています。
- Output Filesタブで、Output directoryとNameを割り当てます。
- .rpd出力ファイルタイプを選択します。
-
Edit…ボタンをクリックし、フラッシュメモリー内のアップデート・イメージのStart addressを割り当てます。このStart addressは、フラッシュメモリー内の未使用領域のセクター境界にする必要があります。
注: 未使用のスペースがない場合は、アプリケーション・イメージ1以外のアプリケーション・イメージ・スペースを使用できます。この場合、更新動作が完了した後、関連するアプリケーション・イメージ (.rpd) をアプリケーション・スロットに書き込み、アプリケーション・イメージを復元する必要があります。図 72. フラッシュメモリーに格納される単一の.rpdに対するパラメーターの指定
- デフォルトでは、.rpdのファイルタイプはリトル・エンディアンです。リトル・エンディアン形式をサポートしないサードパーティー製のプログラマーを使用する場合は、Bit swapをOnに設定し、ビッグ・エンディアン形式で.rpdファイルを生成します。
-
Input Filesタブで、Add Bitstreamをクリックします。必要に応じて、Files of typeをSRAM Object File (*.sof) に変更します。次に、ファクトリー・イメージの.sofファイルを選択してOpenをクリックします。
図 73. .sofファイルの指定
-
.sofを選択し、Propertiesをクリックします。Generate RSU factory
update imageをOnにします。Bootloaderパラメーターは、HPS第一ステージ・ブートローダー (FSBL)
のhexファイルを指定するためのものです。
注: Bootloaderパラメーターは、 インテル® Stratix® 10 SXデバイスに対してのみ指定する必要があります。図 74. リモート・システム・ファームウェア・アップグレードの有効化
- Generateをクリックし、RSUプログラミング・ファイルを生成します。これにより、 インテル® Stratix® 10ファームウェアの更新が可能になります。今後使用することを考慮し、コンフィグレーションを.pfgファイルで保存することができます。
5.5.4. クワッドSPI操作を実行するコマンドシーケンス
これらのコマンドの詳細については、表 35 を参照してください。
- AS x4インターフェイスへの排他的なアクセスを要求します (QSPI_OPEN)
- クワッドSPIフラッシュチップを指定します (QSPI_SET_CS*)。AS x4コンフィグレーション・スキームの場合、このコマンドはオプションです。他のコンフィグレーション・スキームの場合は必須です。
- 目的の操作を実行します。QSPI_READ、QSPI_WRITE、QSPI_ERASE、QSPI_READ_DEVICE_REG、QSPI_WRITE_DEVICE_REG、QSPI_SEND_DEVICE_OP、RSU_IMAGE_UPDATEの操作が可能です。
- AS x4インターフェイスへの排他的アクセスを閉じます (QSPI_CLOSE)。
5.6. FPGAコアからのリモート・システム・アップデート例
このセクションでは、完全なリモート・システム・アップデートの一例を示します。ここでは次の作業を実行します。
- ファクトリー・イメージと1つのアプリケーション・イメージのビットストリームが含まれる初期のリモート・システム・アップデート・イメージ (.jic) の作成。
- 初期リモート・システム・アップデート・イメージでのフラッシュメモリーのプログラミング。これによりデバイスがコンフィグレーションされます。
- アプリケーション・イメージまたはファクトリー・イメージでのデバイスのリコンフィグレーション。
- ユーザーモードでアプリケーション・イメージを追加するためのビットストリームを含む単一のリモート・システム・アップデート (.rpd) の作成。
- アプリケーション・イメージの追加。
- アプリケーション・イメージの削除。
5.6.1. 前提条件
- インテルQuartus Prime開発ソフトウェア・ プロ・エディション19.1以降のバージョンを使用する必要があります。
- この例を作成し、 インテル® Stratix® 10 SoC開発キットにダウンロードする必要があります。
- プラットフォーム・デザイナー・システムに示されているように、JTAG - Avalon® マスター間ブリッジに接続するMailbox ClientインテルFPGA IPをデザインに含める必要があります。JTAG - Avalon® マスター間ブリッジは、ファクトリー・イメージおよびアプリケーション・イメージのリモート・システム・アップデート・ホスト・コントローラーとして機能します。
- デザインにはまた、リセット・リリース・インテルFPGA IPが含まれている必要があります。このコンポーネントは、FPGAファブリック全体がユーザーモードに入るまでデザインをリセットに維持します。
- ninit_done_resetコンポーネントおよびreset_bridge_1コンポーネントは、2つのステージのリセット・シンクロナイザーを作成し、デバイス・コンフィグレーションが完了してデバイスがユーザーモードに入ると、Mailbox ClientインテルFPGA IPおよびJTAG - Avalonマスター間ブリッジインテルFPGA IPをリセットから解放します。
- リセットリリースIPからのninit_done出力信号は、ninit_done_reset in_resetピンに接続することでこのリセットをゲーティングします。
-
reset_inリセット・ブリッジ・インテルFPGA IPは、ユーザー・モード・リセットを提供します。このデザインにおいて、エクスポートされたresetpinはアプリケーション・ロジックに接続します。
図 75. リモート・システム・アップデート・デザイン例に必要な通信とホスト・コンポーネント
5.6.2. ファクトリー・イメージおよび1つのアプリケーション・イメージのビットストリームを含む初期フラッシュイメージの作成
- FileメニューのProgramming File Generatorをクリックします。
- Device familyドロップダウン・リストから インテル® Stratix® 10を選択します。
- Configuration modeドロップダウン・リストからコンフィグレーション・モードを選択します。現行の インテル® Quartus® Prime開発ソフトウェアは、Active Serial x4でのリモート・システム・アップデート機能のみをサポートしています。
- Output Filesタブで出力ディレクトリーとファイル名を割り当てます。
-
出力ファイルタイプを選択します。
アクティブシリアル (AS) x4コンフィグレーション・モードの場合、次のファイルタイプを選択します。
- JTAG Indirect Configuration File (.jic)
- Memory Map File (.map)
- Raw Programming File (.rpd)。.rpdファイルの生成はオプションです。
図 76. 初期フラッシュイメージの作成 -
Input FilesタブでAdd Bitstreamをクリックし、ファクトリー・イメージおよびアプリケーション・イメージの.sofファイルを選択してOpenをクリックします。
- Bitstream_1は、ファクトリー・イメージのビットストリームです。
- Bitstream_2 は、アプリケーション・イメージのビットストリームです。
図 77. 入力ファイルタブ: .sofの指定 - Configuration DeviceタブのAdd Deviceをクリックし、MT25QU02Gフラッシュメモリーを選択してOKをクリックします。 Programming File Generatorツールは自動的にフラッシュ・パーティションを生成します。
- FACTORY_IMAGEパーティションを選択してEditをクリックします。
- Edit PartitionダイアログボックスのInput fileドロップダウン・リストで、ファクトリー・イメージの.sofとしてBitstream_1を選択します。PageとAddress Modeには、デフォルト設定を維持します。OKをクリックします。
- MT25QU02Gフラッシュメモリーを選択して、Add Partitionをクリックします。
- Add PartitionダイアログボックスのInput fileドロップダウン・リストで、アプリケーション・イメージの.sofにBitstream_2を選択します。Page: 1を割り当てます。Address Modeには、デフォルト設定を維持します。OKをクリックします。
- Flash loaderでSelectをクリックします。Device familyリストから インテル® Stratix® 10を選択します。Device nameに1SX280LU2を選択します。OKをクリックします。
-
Generateをクリックしてリモート・システム・アップデート・プログラミング・ファイルを生成します。Programming File Generatorは次のファイルを生成します。
- Initial_RSU_Image.jic
- Initial_RSU_Image_jic.map
図 78. コンフィグレーション・タブ: デバイス、パーティション、フラッシュローダーの追加、および生成
BLOCK START ADDRESS END ADDRESS
BOOT_INFO 0x00000000 0x0010FFFF
FACTORY_IMAGE 0x00110000 0x002D3FFF
SPT0 0x002D4000 0x002DBFFF
SPT1 0x002DC000 0x002E3FFF
CPB0 0x002E4000 0x002EBFFF
CPB1 0x002EC000 0x002F3FFF
Application Image 0x002F4000 0x004B7FFF
Configuration device: 1SX280LU3S2
Configuration mode: Active Serial x4
Quad-Serial configuration device dummy clock cycle: 15
Notes:
- Data checksum for this conversion is 0xBFFB90A5
- All the addresses in this file are byte addresses
プログラミング・ファイルの生成後、フラッシュメモリーのプログラミングを行うことができます。
5.6.3. 初期リモート・システム・アップデート・イメージでのフラッシュメモリーのプログラミング
quartus_pgm -c 1 -m jtag -o "pvi;./output_file.jic
もしくは、 インテル® Quartus® Primeのプログラマーを使用し、次の作業を行うことで初期RSUアップデート・イメージをプログラミングすることも可能です。
- Programmerを開き、Add Fileをクリックします。生成された.jicファイル (output_file.jic) を選択し、Openをクリックします。
- 添付された.jicファイルのProgram/Configureをオンにします。
- 初期リモート・システム・アップデート・イメージでフラッシュメモリーのプログラミングを開始するには、Startをクリックします。
-
プログレスバーが100%に達するとコンフィグレーションは完了です。AS x4コンフィグレーション・スキームを使用して
インテル®
Stratix® 10デバイスをアプリケーション・イメージで自動的にコンフィグレーションするには、ボードを再起動します。
図 79. 初期RSUイメージでのフラッシュメモリーのプログラミング注: この例では、Direct to Factory Imageピンを割り当てていません。そのため、プログラマーはアプリケーション・イメージでデバイスをコンフィグレーションします。デザインでDirect to Factory Imageピンを使用しない場合は、アプリケーション・イメージがデフォルトのイメージになります。
-
次の例で示されるように、RSU_STATUSコマンドを使用して、プログラマーが使用しているビットストリーム・イメージを特定します。
- インテル® Quartus® Prime開発ソフトウェアで、Tools > System Debugging Tools > System Consoleを選択し、システムコンソールを起動します。
- Tcl Consoleペインでsource rsu1.tclと入力してTclスクリプトの例を開き、リモート・システム・アップデートのコマンドを実行します。rsu1.tcl.へのリンクに関しては、関連情報を参照してください。
- rsu_statusコマンドを入力し、現在のリモート・システム・アップデートの状態を報告します。現在実行しているイメージのアドレスは、リモート・システム・アップデート・ステータス・レポートから得ることができます。現在のイメージのアドレスは、.mapファイルで示されるアプリケーション・イメージの開始アドレスと一致する必要があります。
図 80. rsu1.tclで利用可能なTclコマンドの実行
5.6.4. アプリケーション・イメージまたはファクトリー・イメージでのデバイスのリコンフィグレーション
-
リモート・システム・アップデート・ホストはRSU_IMAGE_UPDATEコマンドを送信し、新しいアプリケーション・イメージまたはファクトリー・イメージへのリモート・システム・アップデートを実行します。
- 例えば、システムコンソールのTclコンソールで次のコマンドを入力し、ファクトリー・イメージへのリモート・システム・アップデートを実行します。
-
rsu_image_update 0x00110000
このコマンドは、ファクトリー・イメージでデバイスをリコンフィグレーションするコマンドです。アドレス0x00110000は、.mapファイルで示されるファクトリー・イメージの開始アドレスです。デバイスのリコンフィグレーションが正常に終了すると、JTAGホストは自動的にシステムコンソールから切断されます。次のコマンドを実行するには、システムコンソールを再起動してデバイスとの接続を再確立する必要があります。
-
rsu_image_update 0x002F4000
このコマンドは、アプリケーション・イメージでデバイスをリコンフィグレーションします。アドレス0x002F4000は、.mapファイルで示されるアプリケーション・イメージの開始アドレスです。
-
rsu_image_update 0x00110000
オプション: rsu_statusコマンドを使用してリモート・システム・アップデートの状態を取得し、デバイスが正常にリコンフィグレーションされたことを確認します。
- 例えば、システムコンソールのTclコンソールで次のコマンドを入力し、ファクトリー・イメージへのリモート・システム・アップデートを実行します。
-
システムコンソールのTclコンソールでrsu_statusと入力し、現在のイメージを確認します。次の図は、デバイスがファクトリー・イメージでリコンフィグレーションされていることを示しています。
図 81. rsu_statusコマンドでの現在のイメージの確認
$ source rsu1.tcl /channels/local/top/master_1 $ rsu_status current image address 0x00110000 first failing image address 0x00000000 failing code 0x00000000 error location 0x00000000 0x00000000
5.6.5. アプリケーション・イメージの追加
フラッシュメモリーにアプリケーション・イメージを追加するには、次の手順を実行します。
- QSPI_OPEN コマンドとQSPI_SET_CSコマンドをTclコンソールウィンドウで実行し、AS x4インターフェイスとフラッシュメモリーへの排他的なアクセスを設定します。これにより、QSPI_CLOSEコマンドを実行してアクセスを放棄するまで、AS x4インターフェイスおよびフラッシュへの排他的アクセスが得られます。QSPI_WRITEコマンドを使用して、新しいアプリケーション・イメージをフラッシュメモリーに書き込みます。
-
もしくは、rsu1.tclスクリプトには、新しいアプリケーション・イメージをフラッシュメモリーにプログラミングするprogram_flash関数があります。次のコマンドは、このタスクを実行します。
program_flash new_application_image.rpd 0x03FF0000 1024
program_flash関数は3つの引数を必要とします。
- フラッシュメモリーに書き込む.rpdファイル
- 開始アドレス
- QSPI_WRITEコマンドごとに書き込むワード数。QSPI_WRITEは、書き込み命令ごとに最大1024ワードをサポートします。
図 82. 新しいアプリケーション・イメージのプログラミング$ source rsu1.tcl /channels/local/top/master_1 $ program_flash new_application_image.rpd 0x03ff0000 1024 total number of words is 458752 total number of page is 448 total number of sector is 28 reading rpd is completed start erasing flash erasing flash is completed start writing flash writing flash is completed
- QSPI_WRITEコマンドを使用し、新しいアプリケーション・イメージの開始アドレスを、コンフィグレーション・ファームウェア・ポインター・ブロック (CPB) の新しいイメージ・ポインター・エントリーに書き込みます。書き込みを開始する前に、新しいイメージ・ポインター・エントリーの値が0xFFFFFFFFであることを確認してください。
CPB開始アドレス + 0x20 | 内容 | 値 |
---|---|---|
CPB0 + 0x20 = 0x002E4020 | 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) | 0x002F4000 |
CPB0 + 0x28 = 0x002E4028 | 次のイメージ・ポインター・エントリー | 0xFFFFFFFF |
CPB1 + 0x20 = 0x002EC020 | 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) | 0x002F4000 |
CPB1 + 0x28 = 0x002EC028 | 次のイメージ・ポインター・エントリー | 0xFFFFFFFF |
CPB開始アドレス + 0x20 | 内容 | 値 |
---|---|---|
CPB0 + 0x20 = 0x004A0020 | 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) | 0x004B0000 |
CPB0 + 0x28 = 0x004A0028 | 次のイメージ・ポインター・エントリー | 0xFFFFFFFF |
CPB1 + 0x20 = 0x004A8020 | 現在のアプリケーション・イメージ・ポインター・エントリー (優先順位が最も高い) | 0x004B0000 |
CPB1 + 0x28 = 0x002EC028 | 次のイメージ・ポインター・エントリー | 0xFFFFFFFF |
- 開始アドレス
- 読み出すワード数
$ qspi_read 0x002e4020 1 0x002f4000 $ qspi_read 0x002e4028 1 0xffffffff % qspi_read 0x002ec020 1 ISR is empty 0x002f40000 % qspi_read 0x002ec028 1 0xffffffff
- アドレス
- ワードの値
% qspi_write_one_word 0x002e4028 0x03ff0000 % qspi_write_one_word 0x002ec028 0x03ff
これにより、次のイメージ・ポインター・エントリーにQSPI_read関数を実施し、目的の新しいアプリケーション・イメージの開始アドレスが書き込まれているかを確認できます。
新しいイメージポインターに対する更新の確認
% qspi_read 0x002e4028 1 0x03ff0000 % qspi_read 0x002ec028 1 0x03ff0000
これで、ホスト・ソフトウェアはnCONFIGピンをアサートし、 インテル® Stratix® 10 FPGAを新しいアプリケーション・イメージでリコンフィグレーションできるようになります。もしくは、PCBの電源を再投入することでも可能です。リコンフィグレーション後は、現在のイメージアドレスを確認します。想定されるアドレスは、0x03ff0000です。新しいイメージを追加すると、アプリケーション・イメージ・リストには新しく追加されたイメージが含まれ、古いアプリケーション・イメージは2番目のイメージになります。新しく追加されたアプリケーション・イメージの優先順位が最も高くなります。
5.6.6. アプリケーション・イメージの削除
- QSPI_OPENコマンドとQSPI_SET_CSコマンドをTclコンソールウィンドウで実行し、AS x4インターフェイスとフラッシュメモリーへの排他的なアクセスを設定します。これにより、QSPI_CLOSEコマンドを実行してアクセスを放棄するまで、AS x4インターフェイスおよびフラッシュへの排他的なアクセスを取得します。フラッシュメモリーに新しいアプリケーション・イメージを書き込むには、QSPI_WRITEコマンドを使用します。
-
QSPI_WRITEコマンドを使用して、コンフィグレーション・ファームウェア・ポインター・ブロック (CPB0とCPB1) のイメージ・ポインター・エントリーに格納されているアプリケーション・イメージの開始アドレスに、0x00000000を書き込みます。
注: コンフィグレーション・ファームウェア・ポインター・ブロックおよびサブ・パーティション表を編集する際は、両方のコピー (コピー0とコピー1) を更新する必要があります。
- QSPI_ERASEコマンドを使用して、フラッシュメモリー内のアプリケーション・イメージのコンテンツを消去します。
-
新しいアプリケーション・イメージを削除するには、次または後続のイメージ・ポインター・エントリーに別の新しいアプリケーション・イメージを追加する、もしくは、デバイスがアプリケーション・イメージ・リスト内の前のアプリケーション・イメージまたは2番目のアプリケーション・イメージにフォールバックできるようにします。次の表は、CPB0およびCPB1のオフセット0x20および0x28のイメージ・ポインター・エントリーに対する正しいエントリーを示しています。
表 47. コンフィグレーション・ファームウェア・ポインター・ブロックの内容 CPB開始アドレス + 0x20 内容 値 CPB0 + 0x20 = 0x002E4020 古いアプリケーション・イメージ・ポインター・エントリー (優先順位は低い) 0x002F4000 CPB0 + 0x28 = 0x002E4028 現在または新しいアプリケーション・イメージ・ポインター・エントリー (最優先) 0x03FF0000 CPB1 + 0x20 = 0x002EC020 古いアプリケーション・イメージ・ポインター・エントリー (優先順位は低い) 0x002F4000 CPB1 + 0x28 = 0x002EC028 現在または新しいアプリケーション・イメージ・ポインター・エントリー (最優先) 0x03FF0000 図 85. 現在のCPB値の読み取り% qspi_read 0x002e4020 1 0x002f400 % qspi_read 0x002e4028 1 0x03ff0000 % qspi_read 0x002ec020 1 0x002f4000 % qspi_read 0x002ec028 1 ISR is empty 0x03ff0000
次の例に示すように、QSPI_write_one_word関数を使用して0x00000000に値を書き込むことで、現在または新しいアプリケーション・イメージ・アドレスのイメージ・ポインター・エントリーを削除できます。QSPI_write_one_word関数は、アドレスとデータの引数を取ります。フラッシュメモリーから削除したアプリケーションの内容は、かならず消去してください。
図 86. アプリケーション・イメージの削除% qspi_write_one_word 0x002e4028 0x00000000 % qspi_write_one_word 0x002ec028 0x00000000
CBP0およびCPB1のオフセット0x28のイメージ・ポインター・エントリーに対してQSPI_readを使用し、QSPI_write_one_wordコマンドが完了したことを確認することができます。
図 87. 書き込みの確認% qspi_read 0x002e4028 1 % qspi_read 0x002ec028 1
図 88. 書き込みの確認% qspi_read 0x004A0028 1 % qspi_read 0x004A8028 1
これにより、古いアプリケーション・イメージでデバイスをコンフィグレーションできます。デバイスを再起動する、またはホストがnCONFIGピンをアサートすると、この古いアプリケーション・イメージが最優先されるようになります。rsu_statusレポートを実行することで、現在のイメージアドレスの状態を確認することができます。
6. インテル Stratix 10のコンフィグレーション機能
6.1. デバイス・セキュリティー
インテル® Stratix® 10デバイスは、機密データと知的財産を保護する次の柔軟で堅牢なセキュリティー機能を提供します。
- ユーザーイメージの認証と暗号化
- 公開鍵ベースの認証
- 高度暗号化規格 (AES)-256暗号化
- JTAGのディスエーブル
- JTAGデバッグのディスエーブル/イネーブル
- サイドチャネル保護
- 物理的改ざん防止
6.2. プロトコル経由コンフィグレーション (CvP)
CvPコンフィグレーション・スキームは、ペリフェラルとコアロジックに別々のイメージを作成します。ペリフェラル・イメージをローカル・コンフィグレーション・デバイスに、そしてコアイメージをホストメモリーに保存することで、システムコストを低減し、独自のコアイメージに対するセキュリティーを強化することができます。CvPは、 PCI Express* ( PCIe* ) リンクを介してFPGAファブリックをコンフィグレーションします。CvPは、エンドポイントのバリアントでのみ利用可能です。
CvPコンフィグレーション・スキームは、次のモードをサポートしています。
- CvP初期化モード
CvP初期化モードでは、外部コンフィグレーション・デバイスがペリフェラル・イメージを保存し、アクティブシリアルx4 (Fastモード) コンフィグレーション・スキームを使用してFPGAにロードします。ホストメモリーはコアイメージを格納し、 PCIe* リンクを介してFPGAにロードします。
ペリフェラル・イメージのコンフィグレーションが完了すると、CONF_DONE信号はHighになり、FPGAは PCIe* リンク・トレーニングを開始します。 PCIe* リンク・トレーニングが完了すると、 PCIe* リンクはLTSSM (Link Training and Status State Machine) L0状態へと遷移し、 PCIe* の列挙に進みます。 PCIe* ホストは次に、 PCIe* リンクを介してコアをコンフィグレーションします。 PCIe* リファレンス・クロックは、リンク・トレーニングのリンクに対して動作している必要があります。
コアイメージのコンフィグレーションが完了すると、CvP_CONFDONEピンはHighになり (イネーブルされている場合)、FPGAが PCIe* リンクを介して完全なコンフィグレーション・ビットストリームを受信したことを示します。INIT_DONEは、コンフィグレーションが完了したことを示します。
- CvPアップデート・モード
CvPアップデート・モードはリコンフィグレーション・スキームであり、デバイスがユーザーモードに入った後に、更新されたビットストリームを PCIe* リンクを使用してターゲットにするデバイスに配信します。 PCIe* リンクを含むペリフェラル・イメージはアクティブに維持されるため、このリンクを使用してコア・ファブリックをリコンフィグレーションするCvPアップデートが可能になります。このモードにおいてFPGAデバイスは、外部ローカル・コンフィグレーション・デバイスからFPGAにフル・コンフィグレーション・イメージをロードすることで初期化します。または、CvP初期化後に初期化します。
CvPアップデートは、最初にCvP初期化または他のコンフィグレーション・スキームを使用してコンフィグレーションしたデバイスで行うことが可能です。
6.3. パーシャル・リコンフィグレーション
パーシャル・リコンフィグレーション (PR) では、FPGAの一部分の動的なリコンフィグレーションを行うと同時に、FPGAデザインのその他の部分の動作を継続させることが可能になります。デザインの領域には複数のペルソナを定義することができます。一方で、この領域以外のエリアの動作に影響を与えることはありません。この方法は、同じFPGAデバイスのリソースをタイムシェアリングする複数の機能を備えるシステムにおいて効果的です。PRは、より複雑なFPGAシステムの実装を可能にします。
7. インテル Stratix 10のデバッグガイド
7.1. コンフィグレーション・デバッグ・チェックリスト
確認項目 | 確認済み | ||
---|---|---|---|
1 | SDMデバッグ・ツールキットを使用し、Vcc、Vccp、Vccio_sdm、Vccpt、Vcceram、Vccadc電源が適切な範囲になっていることを確認。 | ☐ | |
2 | コンフィグレーション抵抗がすべて正しく接続されていることを確認 (MSEL、nCONFIG、nSTATUS、CONF_DONE、INIT_DONE)。 | ☐ | |
3 | 正しい電源投入および電源切断シーケンスに従っていることを確認。 | ☐ | |
4 | インテル® Quartus® PrimeコンパイルのQSFおよびFitterレポートを確認し、SDM I/Oの割り当てが正しいことを確認。 | ☐ | |
5 | SmartVIDデバイス (-V) の場合、PMBusピンがすべて インテル® Stratix® 10 デバイスに接続されていることを確認。 | ☐ | |
6 | SmartVID設定が、 インテル® Stratix® 10パワー・マネジメント・ユーザーガイドに示されている推奨事項に従っていることを確認。 | ☐ | |
7 | インテル® Stratix® 10 -Vデバイスに、VCCおよびVCCP用の独自の電圧レギュレーター・モジュールがあることを確認。 | ☐ | |
8 | コンフィグレーションの後、nCONFIG、nSTATUS、CONF_DONE、 INIT_DONEピンはHighになっているか。 SDMデバッグ・ツールキットを使用し、これらのレベルを判断します。 |
☐ | |
9 |
SDMは、ブートROMコードまたはコンフィグレーション・ファームウェアを動作しているか。 SDMデバッグ・ツールキットを使用してこれを確認します。 |
☐ | |
10 |
MSELピンはボード上で正しく接続されているか。 SDMデバッグ・ツールキットを使用してこれを確認します。 |
☐ | |
11 | トランシーバー、HBM2、 PCIe* 、またはEMIFを使用するデザインの場合、リファレンス・クロックはコンフィグレーションを開始する前に安定し、フリーランニングになっているか。 | ☐ | |
12 | リセットリリースIPがデザインに含まれているか。 | ☐ | |
13 | コンフィグレーション・エラーを回避するには、 インテル® Stratix® 10 -Vデバイスをコンフィグレーションする前に、PMBusレギュレーターのJTAGダウンロード・ケーブルを取り外すこと。 | ☐ | |
14 | SDMデバッグ・ツールキットが動作しない場合、オシロスコープを使用してnCONFIG、nSTATUS、CONF_DONE、INIT_DONEピンを確認し、 インテル® Stratix® 10 デバイスがPORを終了していることを確認。 | ☐ | |
15 | コンフィグレーション・クロック・ソースは適切に選択されているか。 内部オシレーターまたはOSC_CLK_1ピンを使用することができます。 |
☐ | |
16 | OSC_CLK_1ピンを駆動するデザインの場合、周波数は25、100、または125 MHzになっているか。 | ☐ | |
17 | インテル® Stratix® 10 SXパーツの場合、コンフィグレーションを開始する前にHPSおよびEMIF IOPLLが安定し、フリーランニングになっていることを確認。実際の周波数は、プラットフォーム・デザイナーで指定されている設定と一致する必要があります。 | ☐ | |
18 | インテル® Quartus® Prime開発ソフトウェアを使用し、PMBus電圧レギュレーター・モジュールに適切なスレーブアドレスが設定されているか。 | ☐ | |
19 | 3 VのI/0を使用するデザインの場合、コンフィグレーションを開始する前にトランシーバー・タイルの電源が投入されていることを確認。 | ☐ |
7.2. インテル Stratix 10コンフィグレーション・アーキテクチャーの概要
インテル® Stratix® 10デバイスは、新しいコンフィグレーション・アーキテクチャーを採用しています。専用のハード・プロセッサーであるSDM (セキュア・デバイス・マネージャー) は、デバイスのパワーオンリセットからデバイス・コンフィグレーションまでの全段階を制御および監視します。これは、ステートマシンがコンフィグレーションを制御する前世代のインテルFPGAデバイスファミリーのアーキテクチャーとは異なるコンフィグレーション・アーキテクチャーです。
インテル® Stratix® 10と前世代のデバイスファミリーでは、使用可能なコンフィグレーション・モード、コンフィグレーション・ピンの動作、および接続ガイドラインという点において注意すべき相違点があります。また、ビットストリームの形式も異なります。これらの相違点およびピンの動作について把握することは、コンフィグレーションにおける問題の理解やデバッグに役立ちます。
7.3. SDMデバッグ・ツールキットの概要
SDMデバッグ・ツールキットは、 インテル® Stratix® 10デバイスの現在のステータスへのアクセスを提供します。これらのコマンドを使用するには、アクセスするモジュールを含む有効なデザインをロードしている必要があります。SDMデバッグ・ツールキットには、次の4つのタブがあります。
Configuration Status
Read Configuration Statusオプションは、現在のMSELの値、コンフィグレーション・ピンの値、およびチップIDを提供します。状態、エラー位置およびエラーの詳細は、インテルの支援をともなうデバッグに役立ちます。Voltage Sensor
-
External ChannelウィンドウのReadオプションでは、利用可能なチャネルの電圧が読み取られます。Internal Power SuppliesウィンドウのReadオプションは、内部電源の値を提供します。図 90. 外部チャネルおよび内部電源の読み取り
電圧センサーの使用についての詳細は、 インテル® Stratix® 10アナログ-デジタル・コンバーター・ユーザーガイドの インテル® Stratix® 10の電圧センサーの内容を参照してください。
Temperature Sensor
- Readオプションは、 インテル® Stratix® 10デバイス、HSSIチャネル、UIB_TOP、UIB_BOTTOMの温度をセ氏で表示します。ユニバーサル・インターフェイス・バス (UIB) ブロックは、HBM2用の汎用SiPインターフェイスです。
HPS Reset Control
HPSをリセットするRelease HPS from ResetとHPS Cold Resetの2つのオプションを提供します。7.3.1. SDMデバッグ・ツールキットの使用
インテル® Stratix® 10 SDMデバッグ・ツールキットを使用するには、 インテル® Stratix® 10デバイスのコンフィグレーションに使用したものと同じバージョンの インテル® Quartus® Prime開発ソフトウェアでシステムコンソールを起動します。
次の作業を実行し、 インテル® Stratix® 10 SDMデバッグ・ツールキットについて把握します。
-
Nios® IIのコマンドシェルで、次のコマンドを入力します。
% system-console
- インテル® Stratix® 10 SDMデバッグ・ツールキットで、Launchをクリックします。
- インテル®FPGAダウンロード・ケーブルIIがPCに接続されていること、および10ピンのJTAGヘッダーが インテル® Stratix® 10デバイスに接続されていることを確認します。
- インテル® Stratix® 10 SDMデバッグ・ツールキットで、Refresh Connectionsをクリックします。Refresh Connectionsは、SDMデバッグ・ツールキットGUIのタブの上にあります。
-
Configuration Statusタブで、Read Configuration Statusをクリックします。次の図は、読み出しが成功した後のConfiguration Statusを示しています。
図 92. Read Configuration Statusコマンド
7.4. 前世代のデバイスファミリーのコンフィグレーション・ピンとの相違点
インテル® Stratix® 10のコンフィグレーション・ピンの動作は、以前のデバイスファミリーとは異なります。これらの相違点およびピンの動作について把握することは、コンフィグレーションにおける問題の理解やデバッグに役立ちます。
コンフィグレーション・ピンの名称 (インテル Stratix 10以前) | インテル® Stratix® 10でのピンの名称 | 備考 |
---|---|---|
TRST |
使用できません |
TMSリセットシーケンスを使用してください。5 TCKサイクルの間、TMSをHighで保持してください。 |
CLKUSR |
OSC_CLK_1 |
コンフィグレーション・スループットを250 MHzに増幅させる目的で供給可能な外部ソースです。トランシーバー、HPS、 PCIe* 、および高帯域幅メモリー (HBM2) を使用するには、この外部クロックが必要です。
インテルQuartus Prime開発ソフトウェア・プロ・エディションでのクロックソースおよび周波数の設定方法については、コンフィグレーション・クロック・ソースの設定を参照してください。 |
CRC_ERROR |
任意の未使用SDM_IO (SEU_ERROR) |
専用の配置位置はありません。SEU_ERRORという名称に変更されました。CONF_DONEがアサートされるまで無視してください。 |
CONF_DONE |
SDM_IO5、SDM_IO16 (CONF_DONE) |
単一の専用ピン位置はありません。オープンドレインではなくなりました。外部プルアップは必須ではありません。 |
DCLK (PS - FPP) |
AVST_CLK、AVSTx8_CLK |
x8モードでは、SDM_IO14に専用のクロック入力があります (AVSTx8_CLK)。他の Avalon® -STモードでは、AVST_CLKを使用してください。 AVST_CLKおよびAVSTx8_CLKはコンフィグレーション中に継続している必要があり、一時停止することはできません。 |
DCLK (AS) |
SDM_IO2 (AS_CLK) |
内部オシレーターをASモードで使用している場合、AS_CLKは、選択したAS_CLKに基づき57から133の範囲で動作します。OSC_CLK_1ピンに25 MHz、100 MHz、または125 MHzのクロックを供給する場合、AS_CLKは最大133 MHzで動作可能です。 |
DEV_OE |
使用できません |
|
DEV_CLRn |
使用できません |
|
INIT_DONE |
SDM_IO0 SDM_IO16 INIT_DONE |
オープンドレインではなくなりました。 |
MSEL[0] |
SDM_IO5 (MSEL[0]) |
SDMがMSELをサンプリングした後、このピンは選択したコンフィグレーション・モードに従って機能します。電源に直接は接続しないでください。必要に応じて、4.7 KΩのプルアップまたはプルダウンを使用してください。 |
MSEL[1] |
SDM_IO7 (MSEL[1]) |
SDMがMSELをサンプリングした後、このピンは選択したコンフィグレーション・モードに従って機能します。電源に直接は接続しないでください。必要に応じて、4.7 KΩのプルアップまたはプルダウンを使用してください。 |
MSEL[2] |
SDM_IO9 (MSEL[2]) |
SDMがMSELをサンプリングした後、このピンは選択したコンフィグレーション・モードに従って機能します。電源に直接は接続しないでください。必要に応じて、4.7KΩのプルアップまたはプルダウンを使用してください。 |
NSTATUS |
nSTATUS |
オープンドレインではなくなりました。インテルでは、VCCIO_SDMに対して10 KΩのプルアップを推奨しています。 |
NCE |
使用できません |
マルチデバイス・コンフィグレーションはサポートされていません。 |
NCEO |
使用できません |
マルチデバイス・コンフィグレーションはサポートされていません。 |
DATA[31:0] (PP32/PP16) |
AVST_DATA[31:0] |
Avalon® -ST x8はデータピンにSDMピンを使用します。 |
DATA[7:0] (PP8) |
SDM _IOピン (AVSTx8_DATAn) |
|
nCSO[2:0] |
SDMIO_8 (AS_nCSO3) SDMI_O7 (AS_nCSO2) SDMI_O9 (AS_nCSO1) SDM_IO5 (AS_nCSO0) |
インテル® Stratix® 10は、最大4つのカスケード接続されたASデバイスをサポートします。 |
nIO_PULLUP |
使用できません |
呼び出すにはJTAG命令を使用してください。 |
AS_DATA0_ASDO |
SDM_IO4 (AS_DATA0) |
|
AS_DATA[3:1] |
SDM_IO6 (AS_DATA3) SDM_IO3 (AS_DATA2) SDM_IO1 (AS_DATA1) |
以前のデバイスファミリーとは異なり、ASインターフェイスは電源投入時に自動的にトライステートにはなりません。MSELをJTAGに設定すると、SDMは、AS_CLK、AS_DATA0からAS_DATA3およびAS_nCS0からAS_nCS3、MSELピンをPORまで駆動します。 |
PR_REQUEST |
GPIO* |
専用の配置位置はありません。 |
PR_READY |
GPIO* |
専用の配置位置はありません。 |
PR_ERROR |
GPIO* |
専用の配置位置はありません。 |
PR_DONE |
GPIO* |
専用の配置位置はありません。 |
CVP_CONFDONE |
任意の未使用SDM_IO CVP_CONFDONE |
7.5. コンフィグレーション・ファイル形式の相違点
コンフィグレーション・ファイル形式に関する詳細情報は専有のものです。この項では、一般的な構造およびこれまでのデバイスファミリーとの相違点について説明します。
ファームウェア・セクションは、.sofファイルの一部ではありません。インテルQuartus Primeプロ・エディションのプログラマーは、.sofにファームウェアを追加します。プログラマーは、 インテル® Stratix® 10デバイスをコンフィグレーションする際、または.sofを別の形式に変換する際にファームウェアを追加します。プログラマーが追加するファームウェアのバージョンは、ご利用のプログラマーのバージョンによって異なります。
7.6. SEUについて
インテル® Quartus® Prime開発ソフトウェアは、SEUの影響、またはソフトエラーを検出および訂正し、SEUのデザインへの影響を特性評価するいくつかの機能を提供します。LSMファームウェアは、LSMごとにSEUのシングルビットのエラー訂正とマルチビットのエラー検出を提供します。さらに、一部のインテルFPGAには、エラーの検出と訂正に役立つ専用回路が含まれています。
SEUに関しては、 インテル® Stratix® 10 SEU (Single Event Upset) 緩和ユーザーガイドを参照してください。
7.7. 一意の64ビットのチップIDの読み取り
インテル® Stratix® 10デバイスのチップIDインテルFPGA IPは、一意の64ビットのチップIDを格納します。チップIDインテルFPGA IPが有効なクロック入力およびreadid信号を受信すると、チップIDがchip_id[63:0] 出力ポートで利用できるようになります。チップIDは、JTAGインターフェイスを使用して読み取ることが可能です。チップIDはデバッグに役立つ場合があります。チップIDの詳細については、Chip ID Intel® FPGA IP User Guideを参照してください。
7.8. Eタイル・トランシーバーでのコンフィグレーション失敗の可能性
- PRESERVE_UNUSED_XCVR_CHANNELを未使用のEタイル全体に割り当てている
- デザインが、このEタイルにリファレンス・クロックを提供していない
リファレンス・クロックは、擬似ランダムデータ信号を生成し、トランシーバーの経年劣化を防ぐために必要です。ネイティブPHY IP GUIを使用して、Eタイルで少なくとも1つのダミーチャネルをインスタンス化する必要があります。このチャネルには少なくとも1つのリファレンス・クロックを提供します。単一のEタイルに保存されているチャネルはすべて、同じリファレンス・クロックを使用できます。
デザインでEタイルの一部のチャネルを使用する場合、ピンごとのPRESERVE_UNUSED_XCVR_CHANNEL QSF割り当てを使用し、そのEタイルで使用するチャネルのみを保存できます。使用することのないチャネルには、ピンごとのPRESERVE_UNUSED_XCVR_CHANNEL QSF割り当てを追加しないでください。
PRESERVE_UNUSED_XCVR_CHANNEL QSF割り当ての例をいくつか次に示します。
#Global QSF assignment set_global_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON #Per-pin QSF assignment set_instance_assignment -name PRESERVE_UNUSED_XCVR_CHANNEL ON -to AA75
7.9. コンフィグレーション・ピンの動作の理解およびトラブルシューティング
コンフィグレーションが成功しない場合、通常は以下のいずれかの理由が考えられます。
- ホストがタイムアウトしている
- コンフィグレーション・データ・エラーが発生している
- 外部イベントがコンフィグレーションを中断している
- 内部エラーが発生している
以下は、コンフィグレーションが失敗する原因となる非常に一般的な理由です。
-
OSC_CLK_1周波数を確認してください。この周波数は、 インテル® Quartus® Prime開発ソフトウェアで指定した周波数およびボードのクロックソースと一致する必要があります。
- トランシーバー、 PCIe* 、またはHBM2を使用しているデザインの場合、フリーランニングのリファレンス・クロックが存在することを確認します。このリファレンス・クロックは、デバイスがユーザーモードに入るまで使用できる状態になければなりません。
- HPSおよび外部メモリー・インターフェイス (EMIF) を使用するデザインの場合、EMIFクロックが存在することを確認してください。
- SmartVID (-Vデバイス) を使用するデザインの場合、この機能がセットアップされており、正常に動作していることを確認してください。電圧レギュレーターがSmartVIDをサポートしていることを確認してください。
以下は、いずれのコンフィグレーション・モードにも適用されるデバッグについてのヒントです。
- OSC_CLK_1に関する問題を除外するには、 インテル® Quartus® PrimeでInternal Oscillatorオプションを選択します。
- IPを含まないシンプルなデザインで インテル® Stratix® 10デバイスをコンフィグレーションしてください。JTAG以外の方法でシンプルなデザインがコンフィグレーションできない場合、MSELピンをJTAGに設定し、JTAGでのコンフィグレーションを試みます。
以下の項では、コンフィグレーション・ピンの予期される動作について説明します。さらにこれらの項では、コンフィグレーション・エラーのデバッグに役立つヒントをいくつか提供します。特定のコンフィグレーション・スキームのデバッグについてのヒントは、各コンフィグレーション・スキームの個別のセクションを参照してください。
7.9.1. nCONFIG
- 初期コンフィグレーションの延期
- FPGAリコンフィグレーションの開始
コンフィグレーション・ソースは、nSTATUSが同じ値をもつ場合にのみ、nCONFIGピンの状態を変更することができます。 インテル® Stratix® 10デバイスの準備が整うと、デバイスはnCONFIGに従うようにnSTATUSを駆動します。
ホストはnCONFIGをLowに駆動し、デバイスのクリーニングを開始する必要があります。その後ホストはnCONFIGをディアサートしてコンフィグレーションを開始します。コンフィグレーション・サイクル中にホストがnCONFIGをLowに駆動すると、そのコンフィグレーション・サイクルは停止します。SDMは新しいコンフィグレーション・サイクルが開始するまで待機します。
デバッグに関するヒント
ホストは、nCONFIGを駆動します。nCONFIGがフローティングまたはLowで静止していないことを確認してください。nCONFIGはコンフィグレーション中、Highに維持する必要があります。
7.9.2. nSTATUS
nSTATUSには、次の2つの機能があります。
- nCONFIGへの肯定応答として動作します。
- エラー状態信号として動作します。nSTATUSを監視し、コンフィグレーションの失敗を確認することが重要です。
インテル® Stratix® 10デバイスは通常、エラーが発生した場合を除き、nCONFIGの値に従うようにnSTATUSの値を変更します。例えば、POR後、nCONFIGがアサートした後にnSTATUSがアサートします。ホストがnCONFIGをHighに駆動すると、 インテル® Stratix® 10デバイスはnSTATUSをHighに駆動します。
以前のデバイスファミリーでは、nSTATUSのディアサートはデバイスがコンフィグレーションに対して準備が整ったことを意味していました。 インテル® Stratix® 10デバイスにおいて Avalon® -STコンフィグレーション・スキームを使用している場合、 インテル® Stratix® 10デバイスがnSTATUSをHighに駆動した後にAVST_READY信号もモニターし、デバイスがコンフィグレーション・データを受け入れる準備が整っていることを特定する必要があります。
nSTATUSは、コンフィグレーション中にエラーが発生した場合にアサートします。パルスの範囲は0.5 msから10 msです。
nSTATUSのアサートは、データエラー検出と非同期です。 インテル® Stratix® 10デバイスは、auto-restart configuration after errorオプションをサポートしていません。
これまでのデバイスファミリーは、ウィーク内部プルアップを備えるオープンドレインとしてnSTATUSを実装していました。 インテル® Stratix® 10はnSTATUSをかならず駆動します。そのため、 インテル® Stratix® 10のnSTATUS信号と以前のデバイスファミリーからのnSTATUS信号を結びつけることはことはできません。
デバッグに関するヒント
nSTATUSがnCONFIGを認識していることを確認してください。nSTATUSがnCONFIGに従わない場合、FPGAはPORから抜け出ていない可能性があります。場合によっては、PCBを再起動する必要があります。
7.9.3. CONF_DONEとINIT_DONE
インテル® Stratix® 10デバイスの場合、CONF_DONEとINIT_DONEは多重化されたSDM_IOピンを共有します。これまでのデバイスファミリーは、ウィーク内部プルアップを備えたオープンドレインとしてCONF_DONEピンおよびINIT_DONEピンを実装していました。そのため、 インテル® Stratix® 10のCONF_DONE信号またはINIT_DONE信号と、前世代のデバイスファミリーからのnSTATUS信号を結びつけることはできません。これに従わない場合、CONF_DONEとINIT_DONEは、これまでのデバイスファミリーでの動作と同様に動作します。CONF_DONEおよびINIT_DONEをSDM_IO16およびSDM_IO0に割り当てる場合、ウィーク内部プルダウンはこれらのピンをパワーオンリセット時にLowにプルダウンします。 インテル® Quartus® Prime開発ソフトウェアまたは インテル® Quartus® Prime設定ファイル (.qsf) でこれらのピンを指定していることを確認します。CONF_DONEおよびINIT_DONEは、コンフィグレーション前とコンフィグレーション中にLowとなります。デバイスがコンフィグレーション・データの受信を終了すると、CONF_DONEがアサートされます。デバイスがユーザーモードに入ると、INIT_DONEがアサートされます。
CONF_DONEとINIT_DONEはオプションの信号です。これらのピンは、インテルQuartus Primeプロ・エディションのDevice and Pin Optionsメニューで定義する他の機能に使用することができます。
デバッグに関するヒント
ボードレベルの接続に相関するSDM_IOピンに、CONF_DONEおよびINIT_DONEピンを配置します。詳細については、SDMピンのマッピング および追加のコンフィグレーション・ピンの設定を参照してください。
7.9.4. SDM_IOピン
インテル® Stratix® 10デバイスには17のSDM_IOピンが含まれており、CONF_DONE、INIT_DONEなどの特定の機能を実装するために使用することが可能です。選択した機能は、GX、MX、TX、SXのデバイスファミリー・ピン接続ガイドラインに従う必要があります。コンフィグレーション・ビットストリームはSDM_IOピンのピン位置を制御します。
インテル® Stratix® 10の内部回路は、25 kΩ抵抗を介してSDM_IO0、SDM_IO8およびSDM_IO16をLowに弱くプルダウンします。 インテル® Stratix® 10の内部回路は、他のすべてのSDM_IOピンを電源投入時にHighに弱くプルアップします。
デバッグに関するヒント
インテルQuartus Primeプロ・エディションの設定およびFitterレポートを確認し、SDM_IOのコンフィグレーションがPCBデザインと一致していることを確認します。次のスクリーンショットは、これらの信号をコンフィグレーションする位置、およびSDM_IOピンの設定をFitterレポートで確認する方法を示しています。
インテルQuartus Prime開発ソフトウェア・プロ・エディションのバージョン18.1より、SDMデバッグ・ツールキットは、システムコンソールのTools > System Debugging Tools > System Console > Intel Stratix 10 Debug Toolkitから使用可能になりました。
8. インテル Stratix 10コンフィグレーション・ユーザーガイド・アーカイブ
IPコアのバージョン | ユーザーガイド |
---|---|
19.3 | Intel Stratix 10 Configuration User Guide |
19.2 | Intel Stratix 10 Configuration User Guide |
19.1 | Intel Stratix 10 Configuration User Guide |
18.1 | Intel Stratix 10 Configuration User Guide |
18.0 | Intel Stratix 10 Configuration User Guide |
17.1 | Intel Stratix 10 Configuration User Guide |
9. インテル Stratix 10コンフィグレーション・ユーザーガイド改訂履歴
ドキュメント・バージョン | インテル® Quartus® Primeのバージョン | 変更内容 |
---|---|---|
2019.12.16 | 19.4 | 次の内容を変更しました。
|
2019.10.07 | 19.3 | 次の内容を変更しました。
|
2019.09.30 | 19.3 | 次の内容を変更しました。
|
2019.07.19 | 19.2 | 次の内容を変更しました。
|
2019.07.08 | 19.2 | 次の内容を変更しました。
|
2019.04.10 | 19.1 | トランシーバーのリファレンス・クロックを更新しました。 |
2019.04.01 | 19.1 | 次の内容を追加、または改善しました。
次の訂正を行いました。
|
2018.11.02 | 18.1 | SDおよびMMCメモリーを除外するよう、図 39: フラッシュメモリーに格納されたイメージを使用してRSUを実装する インテル® Stratix® 10モジュールおよびインターフェイスを更新しました。このようなメモリータイプは、現行のリリースではサポートされていません。 |
2018.10.23 | 18.1 | Avalon® -STコンフィグレーションのタイミングの項の記述に次の内容を追加しました。 AVST_READY信号は、nSTATUSピンがHighである場合にのみ有効です。 |
2018.10.10 | 18.1 | 次の内容を変更しました。
|
2018.10.04 | 18.1 | 次の内容を変更しました。
|
2018.09.21 | 18.1 | 次の内容を変更しました。
|
2018.05.07 | 18.0 |
|