12. クワッド SPI フラッシュ・コント ローラ November 2012 cv_54012-1.2 cv_54012-1.2 ハード・プロセッサ・システム(HPS)は、シリアル NOR フラッシュデ・バイスに アクセスするためにクワッドのシリアル・ペリフェラル・インタフェース(SPI)フ ラッシュ・メモリ・コントローラを提供しています。クワッド SPI フラッシュ・コ ントローラが同様に高性能デュアルおよびクワッド SPI フラッシュ・デバイスの標 準的な SPI フラッシュ・デバイスをサポートしています。クワッド SPI フラッシュ・ コントローラは Cadence® Quad SPI Flash Controller(QSPI_FLASH_CTRL)に基づいてい ます。 クワッド SPI フラッシュ・コントローラの特長 クワッド SPI フラッシュ・コントローラは、次の機能をサポートします。 ■ シングル、デュアル、およびクワッドの I/O コマンド ■ 最大 108 MHz までのデバイスの周波数 ■ ダイレクト・アクセスと間接アクセス・モード ■ インダイレクトの転送のための外部ダイレクト・メモリ・アクセス(DMA)コン トローラのサポート ■ 設定可能な極性、位相、および遅延 ■ プログラマブル書き込み保護された地域 ■ インダイレクトの転送のためのエラー訂正コード(ECC)のロジックを持つロー カル・バッファリング ■ 最大 4 つのデバイス ■ eXecute-In-Place (XIP)フラッシュ・デバイス © 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. ISO 9001:2008 Registered Portions © 2011 Cadence Design Systems, Inc. Used with permission. All rights reserved worldwide. Cadence and the Cadence logo are registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective holders. Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Subscribe 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのブロック図とシステム統合 12–2 クワッド SPI フラッシュ・コントローラのブロック図とシステム 統合 図 12–1 には、クワッド SPI フラッシュ・コントローラのブロック図を示します。 図 12‒1. クワッド SPI フラッシュ・コントローラのブロック図 Quad SPI Flash Controller DMA Controller DMA Peripheral Request Interface DMA Peripheral Request Controller SPI PHY System Manager ECC Signals SRAM Indirect Access Controller Direct Access Controller Data Slave Interface TX FIFO Flash Command Generator RX FIFO SPI Flash Device Interface Data Slave Controller L3 Interconnect STIG CSRs SPI Control Logic Register Slave Interface L4 Peripheral Bus クワッド SPI コントローラには、以下のブロックおよびインタフェースで構成され ています。 ■ レジスタ・スレーブ・インタフェース — コントロール・レジスタとステータス・ レジスタ(CSR)にアクセスを提供するスレーブ・インタフェース ■ データ・スレーブ・コントローラ — 次の機能を提供するスレーブ・インタフェー スおよびコントローラ ■ レベル 3(L3)インタコネクトへ(またはレベル 3(L3)インタコネクトから) データ転送を実行する機能 ■ 着信アクセスを検証する機能 ■ バイトまたはハーフ・ワードのリオーダリングを実行する機能 ■ 書込み保護を実行する機能 ■ 直接と間接コントローラに転送要求を転送する機能 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–3 ■ ダイレクト・アクセス・コントローラ — フラッシュ・メモリへのメモリ・マップ されたスレーブのダイレクト・アクセスを提供する。 ■ 間接アクセス・コントローラ — ローカル・バッファリングおよびソフトウェア転 送要求を介して、フラッシュ・メモリへの高性能のアクセスを提供する。 ■ Software Triggered Instruction Generator(STIG)— フラッシュ・コマンド・レジスタ (flashcmd)を介してフラッシュ・コマンドを生成し、フラッシュ・メモリへの 低レベル・アクセスを提供する。 ■ フラッシュ・コマンドのジェネレータ — 直接およびインダイレクトのアクセ ス・コントローラまたは STIG からの命令に基づいてフラッシュ・コマンドとア ドレスの命令を生成する。 ■ DMA ペリフェラル・リクエスト・コントローラ — 外部 DMA コントローラと通信す るための DMA のペリフェラル・リクエスト・インタフェースへの要求を発行す る。 ■ SPI PHY— 外部 SPI フラッシュ・デバイスにデータやコマンドをシリアルに転送し ます。 クワッド SPI フラッシュ・コントローラの機能説明 この項では、クワッド SPI フラッシュ・コントローラの機能を説明します。 概要 1 この項で使用される用語は、次の項で詳細に定義されます。 クワッド SPI フラッシュ・コントローラは、動作モードを選択し、データ転送用の データ・スレーブ・インタフェースを設定するレジスタのスレーブ・インタフェー スを使用しています。クワッド SPI フラッシュ・コントローラは直接および間接ア クセスのためにデータ・スレーブ・インタフェースを使用しています。また、STIG 動作および SPI レガシー・モード・アクセスのためにレジスタ・スレーブ・インタ フェースを使用しています。 データ・スレーブへのアクセスは、直接または間接的にアクセス・コントローラに 転送されます。アクセス・アドレスが設定されたインダイレクト・アドレスの範囲 内にある場合、アクセスが間接アクセス・コントローラに送信されます。 データ・スレーブ・インタフェース クワッド SPI フラッシュ・コントローラは、直接、間接、および SPI のレガシー・ モードのアクセスのためのデータ・スレーブ・インタフェースを使用しています。 これらのモードについて詳しくは、次の各項を参照してください。 データ・スレーブは 32 ビット幅です。バイト、ハーフワード、およびワード・アク セスは許可されています。 ライト・アクセスの場合は、のみインクリメントバーストがサポートされており、 サイズのみ 1、4、8、16 の転送。リード・アクセスの場合は、すべてのバーストタ イプとサイズがサポートされています。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–4 レジスタ・スレーブ・インタフェース クワッド SPI フラッシュ・コントローラは、クワッド SPI コンフィギュレーション・ レジスタを介しクワッド SPI コントローラを設定するために、そして STIG で flashcmd レジスタを介してソフトウェア・コントロールの下でフラッシュ・メモリ にアクセスするために、レジスタのスレーブ・インタフェースを使用しています。 ダイレクト・アクセス・モード ダイレクト・アクセス・モードで、データ・スレーブへのアクセスは、フラッシュ・ メモリにコマンドを読み出しまたは書き込みがトリガされます。ダイレクト・アク セス・モードを使用するには、クワッド SPI コンフィギュレーション・レジスタ (cfg))のイネーブル・ダイレクト・アクセス・コントローラ・ビット(endiracc)) でダイレクト・アクセス・コントローラをイネーブルします。 外部マスタ(例えばプロセッサ)は、データのスレーブ・インタフェースにリード またはライトとダイレクト・アクセス・コントローラをトリガします。データ・ス レーブには、フラッシュ・デバイスに 1 MB のウィンドウを公開しています。フラッ シュ・デバイス内の任意の 1 MB の位置にこのウィンドウをリマッピングすることが できます。 図 12–2 は、リマッピングの例を示しています。 図 12‒2. データ・スレーブのリマッピングの例 Offsets 0x01000000 0x00300000 Map to Offset 0x00200000 Data Slave Access 0x00200000 0x00100000 1 MB Address Range Data Slave Map to Offset 0 0x00000000 16-MB Flash Memory フラッシュ・デバイスの他の 1 MB の領域にアクセスするためのデータ・スレーブを リマッピングするには、アドレス・リマッピングは cfg レジスタのイネーブル AHB アドレス・リマッピング・フィールド(enahbremap)にリマッピングできます。す べての着信データ・スレーブはリマッピング・アドレス・レジスタ(remapaddr)に 指定されたオフセットのリマッピングをアクセスします。 着信アドレスの 20 個の LSB は 1 MB の領域をアクセスするために使用され、上位 ビットは無視されます。 1 クワッド SPI コントローラは接続されたフラッシュ・メモリ・スペースの外にあるア クセスに対して任意のエラー・ステータスを発行しません。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–5 間接アクセス・モード 間接アクセス・モードで、フラッシュ・データは一時的に SRAM のクワッド SPI コ ントローラ内にバッファされています。ソフトウェアは、レジスタ・スレーブ・イ ンタフェースを介して間接アクセスをコントロールおよびトリガします。コント ローラは、データ・スレーブ・インタフェースを介してデータを転送します。 インダイレクト・リード動作 インダイレクトのリード動作では、フラッシュ・メモリからデータを読み出し、 SRAM にデータを配置し、データ・スレーブ・インタフェースを介して外部マスタに データを転送します。インダイレクト・リード動作は、以下のレジスタによって制 御されます。 ■ Indirect read transfer register (indrd) ■ Indirect read transfer watermark register (indrdwater) ■ Indirect read transfer start address register (indrdstaddr) ■ Indirect read transfer number bytes register (indrdcnt) ■ Indirect address trigger register (indaddrtrig) これらのレジスタは、インダイレクトのリード動作を発行する前に設定する必要が あります。開始アドレスは indrdstaddr レジスタで定義されると、フェッチされる バイト数の合計が indircnt レジスタで指定されている必要があります。indrd レジ スタのスタート・インダイレクト・リード・ビット(start)に 1 を書き込むと、返 されたデータを SRAM に移入するために、フラッシュ・メモリからのインダイレク トのリード動作をトリガーします。 SRAM にフラッシュ・デバイスからデータを読み込むには、外部マスタは、データ・ スレーブ・インタフェースに 32 ビット・リード・トランザクションを発行します。 リード・アクセスのアドレスはインダイレクト・アドレスの範囲内になければなり ません。indaddrtrig レジスタを通じてインダイレクト・アドレスを設定することが できます。外部マスタがインダイレクト転送の最後のワードになるまで 32 ビット・ リードをみ発行することができます。最後のリードに転送を完了するために外部マ スタが 32 ビット、16 ビット、または 8 ビット・リードを発行することができます。 最後の転送で読み出すデータが 4 バイト未満の場合、外部マスタは 32 ビット・リー ドを発行して、クワッド SPI コントローラはゼロで応答データの上位ビットをパッ ドします。 要求されたデータは、データ・スレーブ・リードがクワッド SPI コントローラに よって受信された時点で、SRAM 内に存在すると仮定すると、データは、SRAM から フェッチされ、リード・バーストに対する応答は最小レイテンシで実現されます。 要求されたデータは、直ちに SRAM 内存在しない場合、データが SRAM にフラッ シュ・メモリから読み込まれるまで、データ・スレーブ・インタフェースは待ち状 態になります。外部マスタでデータが SRAM から読み出された後は、クワッド SPI コントローラは SRAM に関連付けられたリソースを解放します。SRAM がフルになっ た場合、SPI インタフェースは SRAM 内でスペースが使用可能になるまでバックプ レッシャされています。クワッド SPI コントローラは、現在のリード・バーストを 完了して、SRAM を解放するまで待って、前のバーストが終了されたアドレスで新し いリード・バーストを発行します。 また、プロセッサは、SRAM からデータをフェッチするときを制御する SRAM フィ ル・レジスタ(sramfill)の SRAM フィル・レベルを使用することができます。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–6 もうひとつの代替は、indrdwater レジスタに設定する SRAM フィル・レベルの ウォーターマークを使用することです。SRAM のフィル・レベルがウォーターマー ク・レベルを通過すると、インダイレクト転送のウォーターマーク割り込みが発生 します。indrdwater レジスタにゼロを書き込むことによって、ウォーターマーク機 能をディセーブルできます。 クワッド SPI コントローラによって読み込まれ、SRAM に配置されたデータの最後の バイトは、ウォーターマーク・レベルがゼロより大きい場合、インダイレクト転送 のウォーターマーク割り込みが実際の SRAM フィル・レベルがウォーターマークを 上回っていない場合でも発生します。 リード・アクセスのアドレスが間接トリガー・アドレスの範囲外である場合、次の いずれかのアクションが発生します。 ■ ダイレクト・アクセス・モードがイネーブルされる場合、読み出しはダイレク ト・アクセス・モードを使用します。 ■ ダイレクト・アクセス・モードがイネーブルされる場合、スレーブがマスタを要 求しにエラーを返します。 indrd レジスタのキャンセル・インダイレクト・リード・ビット(cancel)を 1 に設 定することでインダイレクトの動作を取り消すことができます。詳細について は、12–17 ページの「インダイレクト・リード動作」に参照してください。 間接ライト動作 インダイレクトのライト動作は SRAM からフラッシュ・メモリにデータをプログラ ムします。インダイレクトのライト動作は、以下のレジスタによって制御されます。 ■ Indirect write transfer register (indwr) ■ Indirect write transfer watermark register (indwrwater) ■ Indirect write transfer start address register (indwrstaddr) ■ Indirect write transfer number bytes register (indwrcnt) ■ indaddrtrig レジスタ これらのレジスタは、インダイレクトのライト動作を発行する前に設定する必要が あります。開始アドレスは indwrstaddr レジスタで定義される必要があります。ま た、書き込まれるバイトの総数は indwrcnt レジスタで指定されている必要がありま す。indwr レジスタのスタート・インダイレクトのライト・ビット(start)は、フ ラッシュ・メモリに SRAM からのインダイレクトのライト動作をトリガします。 フラッシュ・デバイスに SRAM からのデータを書き込むために、外部マスタはデー タ・スレーブに 32 ビットのライト・トランザクションを発行します。ライト・アク セスのアドレスはインダイレクト・アドレスの範囲内になければなりません。 indaddrtrig レジスタを通じてインダイレクト・アドレスを設定することができま す。外部マスタはインダイレクト転送の最後のワードまで 32 ビット・ライトを発行 することができます。最後のライトでは、外部マスタは転送を完了するために 32 ビット、16 ビット、または 8 ビット・ライトを発行することができます。最後の転 送に書き込むデータは 4 バイト未満の場合、外部マスタは 32 ビット・ライトを発行 することができます・そして、クワッド SPI コントローラは余分なバイトを破棄し ます。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–7 SRAM のサイズは、クワッド SPI コントローラが外部マスタから受信できるデータの 量を制限することができます。SRAM がライト・アクセスの時点でフルになっていな い場合、データは最小レイテンシで SRAM にプッシュされます。外部マスタが SRAM が受け可能なより多くの SRAM にデータをプッシュすると、クワッド SPI コント ローラはウェイト・ステートとの外部マスタをバックプレッシャーします。SRAM の リソースがフラッシュ・メモリに SRAM からのデータをプッシュすることで解放さ れたときに、SRAM は外部マスタからのデータを受信するができます。SRAM はフ ラッシュ・ページのサイズより大きい、または同じバイト数がある場合、または SRAM が現在のインダイレクト転送のすべての残りのバイトを保持する場合、クワッ ド SPI コントローラはフラッシュ・メモリへのライト動作を開始します。 また、SRAM に多くのデータを書き込むタイミングを制御するために、sramfill レ ジスタ内のプロセッサは SRAM のフィル・レベルを使用することができます。 また、indwrwater レジスタで SRAM のフィル・レベルのウォーターマークを設定す ることができます。SRAM のフィル・レベルがウォーターマーク・レベル以下にある 場合、インダイレクト転送ウォーターマーク割り込みは SRAM にデータの次のペー ジを書き込むようにソフトウェアに指示するために生成されます。SRAM がデータの フル・フラッシュ・ページが含まれているときだけクワッド SPI コントローラがフ ラッシュ・メモリに non-end-of-data ライトを開始するので、システムのストールを 回避するために、ウォーターマーク・レベルの値を 1 より大きいフラッシュ・ペー ジに設定する必要があります。indwrwater レジスタにゼロを入力することによって、 ウォーターマーク機能をディセーブルことができます。 ライト・アクセスのアドレスがインダイレクト・トリガ・アドレスの範囲外である 場合、次のいずれかのことが発生します。 ■ ダイレクト・アクセス・モードがイネーブルされると、書き込みは、ダイレク ト・アクセス・モードを使用します。 ■ ダイレクト・アクセス・モードがディセーブルされる場合、スレーブが要求マス タにエラーを返します。 indwr レジスタのキャンセル・インダイレクト・ライト・ビット(cancel)を 1 に設 定することにより、インダイレクトの動作を取り消すことができます。 詳細については、12–18 ページの「間接ライト動作」に参照してください。 連続読み出しと書き込み 短い連続で indrd または indwr レジスタの start ビットを 2 回トリガすることによ り、一度に 2 つのインダイレクト動作をトリガすることが可能である。最初の動作 の進行中に第二動作がトリガされることがあります。例えば、インダイレクトのラ イト動作の進行中に、ソフトウェアは動作をインダイレクト・リードまたはライト をトリガすることができます。ソフトウェアは、各転送動作をトリガする前に対応 するスタート・レジスタとカウント・レジスタを正しく設定する必要があります。 このアプローチは、第 1 回目のインダイレクト動作の完了および第 2 回目動作のス タートとの間の短いターンアラウンド・タイムを可能にします。2 つの動作以上を キューにするとインダイレクト・リードのリジェクト割り込みを生成します。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–8 ローカル・メモリ・バッファ SRAM のローカル・メモリ・バッファは、128 経由の 32 ビット(総数 512 バイト) のメモリでであり、ECC のためのサポートが含まれています。ECC ロジックは、シン グル・ビットの訂正可能なエラーが検出されたとき(また補正されたとき)、および ダブル・ビット訂正不可能なエラーが検出されたときにシステム・マネージャに通 知するために出力を提供します。ECC ロジックは、テストのために、シングルおよび ダブル・ビット・エラーの注入を可能にします。 f 詳細は、「Cyclone V デバイス・ハンドブック Volume 3」の「 System Manager」の章を 参照してください。 SRAM は 2 つのパーティションがあります:インダイレクトのリード動作のための上 部パーティション、およびインダイレクトのライト動作のための下部パーティショ ン。パーティションのサイズは、32 ビットのワード・サイズに基づいて SRAM の パーティション・レジスタ(srampart)で指定されています。たとえば、ストレー ジの 4 バイトを指定するには、値の 1 を入力してください。インダイレクトのリー ド・パーティションのサイズ・フィールド(ADDR)に書き込まれた値は、インダイ レクト・リードの動作用に予約されたエントリの数を定義します。例えば、32 (0x20)の値を入力して、128 エントリ SRAM をリードの使用率に 32 エントリ (25%)、そしてライトの使用率に 96 エントリ(75%)にパーティションします。 DMA のペリフェラル・リクエスト・コントローラ バースト・リクエストで指定されたバイト数によってバイトの総数を分割すること、 そしてシングル要求でバイト数で残りを分割することにより、DMA のペリフェラ ル・リクエスト・コントローラは DMA バーストとシングル要求の数に転送される データの総量を分割します。 DMA のペリフェラル・リクエスト・インタフェースは 2 つがあります:インダイレ クト・リード用とインダイレクト・ライト用です。DMA のペリフェラル・リクエス ト・コントローラは 2 つの DMA リクエストのタイプ(シングルまたはバースト)を 外部 DMA に発行できます。シングルまたはバースト・リクエストのためのバイト数 は、DMA ペリフェラル・レジスタ(dmaper )のシングル・バイト(numsglreqbytes)およびバースト・バイト (numburstreqbytes)フィールドの数で指定されています。バースト・リクエストで 指定されたバイト数によってバイトの総数を分割すること、そしてシングル要求で バイト数で残りを分割することにより、DMA のペリフェラル・リクエスト・コント ローラは DMA バーストとシングル要求の数に転送されるデータの総量を分割しま す。 1 DMA コントローラをプログラミングする場合、バースト・リクエスト・サイズは急 速にオーバーフローまたはアンダーフロー状態にならないようにクワッド SPI コン トローラで設定されたバースト・リクエストサイズと一致する必要があります。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–9 インダイレクト・リードの場合、データがフラッシュ・メモリーから検索され、そ して SRAM に書き込まれた後、DMA のペリフェラル・リクエスト・コントローラは 単に DMA リクエストを発行します。発行されるレートでは、DMA 要求がウォーター マーク・レベルによって異なります。indrdwater レジスタは、DMA のペリフェラ ル・リクエスト・コントローラが DMA 要求を発行することができるバイト数で最小 のフィル・レベルを定義します。この数値が高いほど、外部 DMA がデータを移動す る前に、より多くのデータが SRAM 内にバッファリングされている必要があります。 SRAM のフィル・レベルがウォーターマーク・レベルを通過すると、転送ウォーター マーク達成割り込みが生成されます。 例えば、以下の条件を考慮してください。 ■ 間接モードを使用する読み込まれるデータの総量は 256 バイト ■ SRAM のウォーターマーク・レベルが 128 バイトに設定されている ■ ソフトウェアは、64 バイトまでのバースト・タイプの転送サイズを設定する これらの条件下で、DMA のペリフェラル・リクエスト・コントローラは SRAM フィ ル・レベルが 128 バイト(ウォーターマーク・レベル)を渡す最初の DMA バース ト・リクエストを発行します。バースト・タイプの要求を実行するための SRAM 内 に十分なデータがある限り、DMA ペリフェラル・リクエスト・コントローラが連続 した DMA バースト・リクエストをトリガします。この例で、DMA のペリフェラル・ リクエスト・コントローラは 128 バイトの合計を転送するには、少なくとも 2 つの 連続した DMA バースト・リクエストを発行できます。SRAM 内に十分なデータがあ る場合、DMA のペリフェラル・リクエスト・コントローラは第 3 目の DMA バースト を直ちに要求します。それ以外の場合、DMA のペリフェラル・リクエスト・コント ローラーは、SRAM フィル・レベルが次のバースト・リクエストを引き起こすために 再びウォーターマーク・レベルを超えるまで待ちます。ウォーターマーク・レベル がトリガされると、全体のトランザクションを完了するために、第 3 および第 4 の バースト・リクエストを実行するための SRAM 内の十分なデータがあります。 インダイレクト・ライトでは、全てのインダイレクト・ライト・トランスファーが 最後まで転送がトリガーし続き、その直後に DMA のペリフェラル・リクエスト・コ ントローラーは DMA リクエストを発行します。DMA 要求が発行されるレートでは、 ウォーターマーク・レベルによって異なります。indwrwater レジスタは、コント ローラが最初の DMA バーストまたはシングル・リクエストを発行できるバイト数で 最大フィル・レベルを定義します。SRAM のフィル・レベルがウォーターマーク・レ ベル以下になると、転送ウォーターマーク達成割り込みが生成されます。SRAM での データの一つのフラッシュ・ページがある場合、クワッド SPI コントローラは SRAM からフラッシュ・メモリにライト動作を開始します。 ソフトウェアは、CFG レジスタの endma フィールドで DMA のペリフェラル・リクエ スト・インタフェースをイネーブルすることができます。DMA 以外のマスタはイン ダイレクトの動作のためのデータ転送を実行する場合、DMA のペリフェラル・リク エスト・インタフェースをイネーブルする必要があります。デフォルトでは、イン ダイレクトのウォーターマーク・レジスタはゼロに設定され、その DMA のペリフェ ラル・リクエスト・コントローラは、すぐに DMA リクエストを発行できることを意 味します。 「Cyclone V デバイス・ハンドブック f HPS の DMA コントローラについて詳しくは、 Volume 3」の「 DMA Controller」の章を参照してください。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–10 STIG 動作 STIG は、ソフトウェアのフラッシュ・デバイス・レジスタにダイレクト・アクセス するためのメソッドを提供します。flashcmd レジスタは、フラッシュ・デバイスに 対して発行されるコマンドを定義するには、次のパラメータを使用します。 ■ Instruction opcode ■ Number of address bytes ■ Number of dummy bytes ■ Number of write data bytes ■ Write data ■ Number of read data bytes アドレスがフラッシュ・コマンド・アドレス・レジスタ(flashcmdaddr)によって 指定されます。これらの設定が指定されていると、そのソフトウェアは、flashcmd レジスタのコマンド・フィールド(execcmd)を実行し、flashcmd レジスタのコマ ンド実行ステータス・ビット(cmdexecstat)をポーリングすることにより、その完 了を待って、コマンドをトリガすることができます。最大 8 つのデータ・バイトは、 コマンドごとにフラッシュ・コマンド・リード・データ下位(flashcmdrddatalo) およびフラッシュ・コマンド・リード・データ上位(flashcmdrddataup)レジスタ から読み出し、またはコマンドごとにフラッシュ・コマンド・データ下位 (flashcmdwrdatalo)およびフラッシュ・コマンド・ライト・データ上位 (flashcmdwrdataup)レジスタに書き込むことがあります。 STIG を通じて発行されたコマンドは、他のすべてのリード・アクセスよりも高い優 先順位を持っているため、ダイレクトまたはインダイレクトのコントローラによっ て要求されるすべてのリード・コマンドを中断します。しかし、STIG は、ダイレク トまたはインダイレクトのアクセス・コントローラを介して発行されている可能性 があり、ライト・シーケンスが中断されることはありません。これらのケースでは、 動作が完了したことを示す flashcmd レジスタの cmdexecstat ビットのために長い時 間がかかる場合があります。 1 アルテラは、フラッシュ・デバイスのレジスタにアクセスし、消去動作を実行する ために STIG の代わりに SPI のレガシー・モードを使用することを推奨します。 SPI レガシー・モード SPI のレガシー・モードで、ソフトウェアがダイレクト、インダイレクト、および STIG コントローラをバイパスして、直接的に内部 TX FIFO および RX FIFO バッファに アクセスすることができます。ソフトウェアは、レガシー・モードがイネーブルさ れる一方、データ・スレーブによって任意のアドレスに任意の値を書き込むことに より、TX FIFO および RX FIFO バッファにアクセスします。cfg レジスタのレガシー IP モード・イネーブル・ビット(enlegacyip)を使用してレガシー・モードをイネー ブルすることができます。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–11 レガシー・モードでは、ユーザーがフラッシュ・デバイスに任意のフラッシュ命令 を発行することができますが、効果的に FIFO バッファのフィル・レベルを管理する ために多いソフトウェアのオーバーヘッドを課しています。チップ・セレクトがイ ネーブルされるときに、レガシー SPI モードは本質的に双方向で、データが連続的 に両方向に転送されます。ドライバがフラッシュ・デバイスからデータを読み込む 必要がある場合、ダミー・データはチップ・セレクトがアクティブのまま(またラ イト・トランザクションに対しても同じ)に書き込まれる必要があります。 たとえば、3 つのアドレス・バイトを持つフラッシュ・デバイスに 4 バイトの基本的 なリードを実行するために、ソフトウェアは TX FIFO バッファに 8 バイトの合計を書 き込むする必要があります。最初のバイトは命令オペコードとなり、次の 3 バイト はアドレスであります。そして、最後の 4 バイトは、リード・データがリターンさ れている間、チップ・セレクトがアクティブに保証するためのダミー・データです。 同様に、8 バイトは、TX FIFO バッファに書き込まれているため、ソフトウェアは、 RX FIFO バッファにリターンされる 8 バイトを想定する必要があります。この最初の 4 バイトは、最終の 4 バイトにデバイスから読み出されたデータを保持させておいて 廃棄されます。 それぞれの TX FIFO および RX FIFO バッファは 4 バイトの深さがあるので、ソフト ウェアは、TX FIFO バッファがアンダーフローしないように、そして RX FIFO バッ ファがオーバーフローしないように FIFO バッファのレベルを維持することが必要で す。割り込みは、フィル・レベルが TX スレッショルド・レジスタ(txtresh)およ び RX スレッショルド・レジスタ(rxtresh)を使用して構成可能なウォーターマー ク・レベルを達成することを示すために用意されています。 フラッシュ・デバイスのコンフィギュレーション リード・アクセスおよびライト・アクセスで、ソフトウェアはデバイス・リード命 令レジスタ(devrd)およびデバイス・ライト命令レジスタ(devwr)を初期化する 必要があります。これらのレジスタは、命令タイプと同様に使用される命令オペ コードを初期化するためのフィールドが含まれております。また、アドレスとデー タ転送のために、シングル、デュアル、またはクワッドのピンを使用する命令も含 まれています。クワッド SPI コントローラがリセット状態から動作可能なことを確 認するには、オペコード・レジスタはシングル I/O フラッシュ・デバイスに準拠する オペコードにリセットします。 クワッド SPI フラッシュ・コントローラは、リードおよびライトの両方の命令転送 幅を設定する devrd レジスタの命令転送幅フィールド(instwidth)を使用します。 devwr レジスタには instwidth フィールドはありません。アドレスとデータ・タイプ が指示タイプに基づくので、命令のタイプはデュアルまたはクワッド・モードに設 定されている場合、両方のレジスタのアドレス転送幅(addrwidth)およびデータ転 送幅(datawidth)フィールドが冗長化されています。したがって、ソフトウェア は、オペコード、アドレス、およびデータが 2 つまたは 4 つのレーン上で送信され、 もっとまれなフラッシュ命令をサポートすることができます。ほとんどの命令では、 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–12 オペコードは、デュアルとクワッド命令でもフラッシュ・デバイスにシリアルで送 信されています。2 つまたは 4 つのレーン上にオペコードを送信可能な命令をサポー トするフラッシュ・デバイスの一つは、Micron N25Q128 です。参考のために、 表 12–1 には、ソフトウェアが Micron N25Q128 デバイスにサポートされた個々の特定 のリードおよびライト命令のクワッド SPI コントローラの構成する方法を示します。 表 12‒1. Micron N25Q128 デバイス用のクワッド SPI コンフィギュレーション オペコー ドで使用 するレー ン 命令 アドレ スを送信 するレー ン データ を送信す るレーン instwidth の値 addrwidth の値 datawidth の値 リード命令 Read 1 1 1 0 0 0 Fast read 1 1 1 0 0 0 Dual output fast read (DOFR) 1 1 2 0 0 1 Dual I/O fast read (DIOFR) 1 2 2 0 1 1 Quad output fast read (QOFR) 1 1 4 0 0 2 Quad I/O fast read (QIOFR) 1 4 4 0 2 2 Dual command fast read (DCFR) 2 2 2 1 任意の値 任意の値 Quad command fast read (QCFR) 4 4 4 2 任意の値 任意の値 Page program 1 1 1 0 0 0 Dual input fast program (DIFP) 1 1 2 0 0 1 Dual input extended fast program (DIEFP) 1 2 2 0 1 1 Quad input fast program (QIFP) 1 1 4 0 0 2 Quad input extended fast program (QIEFP) 1 4 4 0 2 2 Dual command fast program (DCFP) 2 2 2 1 任意の値 任意の値 Quad command fast program (QCFP) 4 4 4 2 任意の値 任意の値 ライト、英霊 XIP モード フラッシュ・デバイスが XIP モードをサポートすると、クワッド SPI コントローラも XIP モードをサポートしています。フラッシュ・デバイスに応じて、XIP のモードで は、コマンド・オーバーヘッドを低減し、読み出し専用モードでのフラッシュ・デ バイスを置きます。 クワッド SPI コントローラはモード・ビットを送信することによって、XIP モードを 開始するには、フラッシュ・デバイスに指示する必要があります。cfg レジスタの enter XIP mode on next read bit (enterxipnextrd)は 1 に設定される場合、クワッド SPI コントローラとフラッシュ・デバイスは、次の読み出し命令に XIP モードを開始 することができます。cfg レジスタの enter XIP mode immediately bit(enterxipimm)は 1 に設定される場合、クワッド SPI コントローラおよびフラッシュ・デバイスは直ち に XIP・モードを開始します。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–13 CFG レジスタの enterxipnextrd または enterxipimm ビットを 0 に設定すると、ク ワッド SPI コントローラおよびフラッシュ・デバイスは次の読み出し命令での XIP モードを終了します。 詳細については、12–19 ページの「XIP モードの動作」を参照してください。 ライト保護 フラッシュ・デバイスの特定の領域の書き込みを保護するためにコントローラをプ ログラムすることができます。保護された領域は、開始と終了のブロックで指定さ れたブロックの集合として定義されます。保護されたフラッシュ領域のメモリに書 き込むと、エラーが生成され、割り込みをトリガします。 device size register(devsz)の bytes per block field(bytespersubsector)の数を介して ブロックごとのバイト数を指定することにより、ブロック・サイズを定義します。 lower write protection register(lowwrprot)は保護された領域内の最初のフラッシュ・ ブロックを指定します。upper write protection register(uppwrprot)は保護された領域 の最後のフラッシュ・ブロックを指定します。 ライト・プロテクトは、write protection register(wrprot)の write protection enable bit (en)は、保護をイネーブルとディセーブルします。wrprot レジスタの write protection inversion bit(inv)は lowwrprt と uppwrprt で指定された領域が保護されず に、その領域外のすべてのフラッシュ・メモリが保護されているので、保護の定義 を反転させます。 データ・スレーブのシーケンシャル・アクセスの検出 クワッド SPI フラッシュ・コントローラは、以前のアクセスと現在のアクセスを比 較することによって、データのスレーブ・インタフェースにシーケンシャル・アク セスを検出します。以下の条件を満たす場合、シーケンシャル・アクセスとなりま す。 ■ 現在のアクセスのアドレスはシーケンシャルに前のアクセスのアドレスが続きま す。 ■ 現在のアクセスの方向は(リードまたはライト)は前回のアクセスと同じです。 ■ 現在のアクセスのサイズ(バイト、ハーフワード、またはワード)は、以前のア クセスと同じです。 シーケンシャルではないアクセスが検出された場合、フラッシュ・デバイスへの シーケンシャル・アクセスが終了し、新たなシーケンシャル・アクセスが開始され ます。アルテラは、シーケンシャルにデータのスレーブにアクセスすることを推奨 します。シーケンシャル・アクセスは、より少ないコマンド・オーバーヘッドがあ るので、データのスループットを増加することができます。 クロック クワッド SPI コントローラに 2 つのクロック入力(l4_mp_clk と qspi_clk)と 1 つ のクロック出力(sclk_out)があります。クワッド SPI フラッシュ・コントローラ は、クロック・データ・スレーブ転送およびレジスタ・スレーブ・アクセスをク ロックするために l4_mp_clk を使用します。qspi_clk クロックはクワッド SPI コン トローラ用のレファランス・クロックであり、データをシリアライズして外部の SPI インタフェースを駆動するために使用されています。sclk_out クロックが接続され たフラッシュ・デバイス用のクロック・ソースです。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–14 qspi_clk クロックは l4_mp_clk の 2 倍 より大きくなければなりません。sclk_out ク ロックは cfg レジスタの the baud rate divisor field(bauddiv)による qspi_clk クロッ クを分周することによって導出されます。 f 詳細については、「Cyclone V デバイス・ハンドブック Volume 3」の「 Clock Manager」 の章を参照してください。 リセット クワッド SPI コントローラへの入力として single reset signal(qspi_flash_rst_n)が 提供されています。リセット・マネージャはコールドまたはウォーム・リセット時 に信号を駆動します。 f 詳細については、「Cyclone V デバイス・ハンドブック Volume 3」の「 Reset Manager 」 の章を参照してください。 割り込み すべての割り込み要因は、シングル・レベル・センシティブの active-high interrupt (qspi_intr_in)を作成するために結合されます。ソフトウェアは、interrupt status register(irqstat)を読み込むことにより、割り込みの原因を判別することができま す。デフォルトの設定では、ソフトウェアが割り込みステータ・スレジスタに書き 込む場合、割り込みソースがクリアされます。割り込みは、interrupt mask register (irqmask)を介して個別にマスクできます。表 12–2 には、irqstat レジスタの割り 込みソースが一覧表示されます。 表 12‒2. irqstat レジスタでの割り込みソース 割り込みソース アンダーフローが検出される 説明 0 の場合、何アンダーフローが検出されていません。 1 の場合、データはスレーブ・ライト・データが遅 すぎるが供給されています。要求されたライト動作 維持するための供給されているデータ・スレーブ・ ライト・データが遅すぎると、この状況が発生する 可能性があります。 このビットは、システム・リ セットによってのみリセットされ、レジスタに書き 込まれている場合にのみゼロにクリアされます。 コントローラは、トリガされたインダイレクト動作 を完了しています。 インダイレクト動作が完了され る コントローラは、トリガされたインダイレクト動作 を完了しています。 インダイレクト・リード・リ ジェクト インダイレクト動作が要求されましたが、2 つのイ ンダイレクトの動作は、キューに既に実行されてい るので、受け入れられません 保護された領域のライト攻撃 保護された領域へのライトが試みと拒否されまし た。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラの機能説明 12–15 表 12‒2. irqstat レジスタでの割り込みソース 割り込みソース 説明 不正なデータ・スレーブ・アク セスが検出される 不正なデータ・スレーブ・アクセスが検出されまし た。データ・スレーブのラッピング・バーストとス プリットのリトライ・アクセスは、この割り込みが 発生することがあります。これは通常、FPGA ファ ブリック内のソフト・マスタがサポートされていな い方法で HPS をアクセスしようとしている指標で す。 転送透ウォーターマークは達成 される インダイレクト転送ウォーターマーク・レベルに達 成しました。 オーバーフローが受信される この条件は、レガシー SPI モードにのみ発生しま す。0 のとき、オーバーフローが検出されていませ んが、1 のとき、RX FIFO バッファへのオーバーフ ローが発生しました。このビットは、システム・リ セットによってのみリセットされ、このレジスタの 書き込みの場合にのみゼロにクリアされます。レジ スタが読み出されるときに RX FIFO バッファへの新 しいライトが同時に発生した場合、このフラグが 1 に設定されたままです。 TX FIFO がフルではない この条件は、レガシー SPI モードで発生します。0 の場合、TX FIFO バッファはフルですが、1 の場合、 TX FIFO バッファはフルではありません。 TX FIFO がフル この条件は、レガシー SPI モードで発生します。0 の場合、TX FIFO バッファはフルではありませんが、 1 の場合、TX FIFO バッファはフルです。 RX FIFO が空ではない この条件は、レガシー SPI モードで発生します。0 の場合、RX FIFO バッファが空ですが、1 の場合、RX FIFO バッファが空ではありません。 RX FIFO がフル この条件は、レガシー SPI モードで発生します。0 の場合、RX FIFO バッファはフルではありませんが、 1 の場合、RX FIFO バッファはフルです。 イダイレクト・リード・パー ティションオーバーフロー SRAM のインダイレクト・リード・パーティション が完全かつ即時にインダイレクトの動作を完了でき ません。 インタフェース信号 クワッド SPI コントローラは最大 4 外部クワッド SPI フラッシュ・デバイスをコント ロールするように 4 チップ・セレクト出力を提供します。デバイスがシングル、 デュアル、またはクアッド動作モードで使用されることに応じて、出力は、異なる 目的を果たします。表 12–3 は、各動作モードのクワッド SPI コントローラ・インタ フェース信号の I/O ピンの使用を示しています。 表 12‒3. インタフェース信号 信号 data[0] 2012 年 11 月 Altera Corporation モード 入力 / 出力 機能 シングル 出力 データ出力 0 デュアル、または クアッド 双方向 データ I/O 0 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル 12–16 表 12‒3. インタフェース信号 信号 data[1] data[2] data[3] モード 入力 / 出力 シングル 入力 データ出力 0 デュアル、または クアッド 双方向 データ I/O 1 シングル、または デュアル 出力 アクティブ Low ライト保護 クアッド 双方向 データ I/O 2 シングル、デュア ル、またはクアッ ド 双方向 データ I/O 3 アクティブ Low スレーブ・セレクト 0 ss_n[0] ss_n[1] ss_n[2] ss_n[3] 機能 シングル、デュア ル、またはクアッ ド アクティブ Low スレーブ・セレクト 1 出力 sclk アクティブ Low スレーブ・セレクト 2 アクティブ Low スレーブ・セレクト 3 シリアル・クロック クワッド SPI フラッシュ・コントローラのプログラミング・モデ ル この項では、クワッド SPI コントローラ用のプログラミング・モデルについて説明 します。 クワッド SPI フラッシュ・コントローラの設定 次のステップでは、クワッド SPI コントローラの設定方法について説明します。 1. 保留中の動作が完了するまで待ちます。 2. cfg レジスタのクワッド SPI イネーブル・フィールド(en)を備えたクワッド SPI コントローラをディセーブルします。 3. ダイレクトおよびインダイレクトのライトとリードに使用する命令タイプを持つ devrd レジスタの instwidth フィールドを更新します。 4. devrd レジスタの mode bit enable bit(enmodebits)がイネーブルされる場合、 モード・レジスタ(modebit)を更新します。 5. 必要に応じ devsz レジスタを更新します。このレジスタの一部またはすべてが初 期化後にアップデートされている可能性があります。アドレス・バイト数のリー ドおよびライトを実行するために必要なキー・コンフィギュレーションです。 ページあたりのバイト数は、すべてのライトを実行するために必要です。ライト の保護機能を使用する場合、デバイスのブロックごとのバイト数のみ必要となり ます。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル 12–17 6. device delay register(delay)を更新します。このレジスタで、各フラッシュ・ア クセスした後にチップ・セレクトの駆動される方法を調整することができます。 各デバイスは、異なるタイミング要件があるかもしれません。シリアル・クロッ ク周波数が増加すると、これらのタイミング要件がより重要になります。このレ ジスタで指定された番号は qspi_clk クロックの周期に基づいています。 たとえば、それがディアサートされた後にセレクト・スレーブがリアサートされ る前に、一部のデバイスは 50 ns の最小時間を必要としています。デバイスが 100 MHz で動作している場合、クロック周期は 10 ns であるので、また 40 ns が必 要です。qspi_clk クロックが 400 MHz(2.5 ns の周期)で実行されている場合、 delay レジスタのチップ・セレクト・ディアサート・フィールド(nss)に少なく とも 16 値を指定します。 7. 必要に応じ remapaddr レジスタを更新します。このレジスタは、ダイレクト・ア クセス・モードに影響を与えます。 8. アップライト保護レジスタ(wrprot、lowwrprot、および uppwrprot)を設定お よびイネーブルすると、保護を作成するときに必要です。 9. irqmask レジスタで必要な割り込みをイネーブルします。 10. cfg レジスタの bauddiv フィールドを設定して、ターゲット・デバイスの必要な クロック周波数を定義します。 11. 必要に応じて read data capture register(rddatacap)を更新します。このレジスタ は、リード・データがキャプチャされるときに遅延され、デバイスからクワッド SPI コントローラへのリード・データパスが長いとき、またはデバイスのクロッ ク周波数が高い場合に役立ちます。 12. cfg レジスタの en フィールドとのクワッド SPI コントローラををイネーブルしま す。 インダイレクト・リード動作 次のステップでは、DMA をディセーブルされるインダイレクト・リード動作のため のクワッド SPI コントローラを設定するための一般的なソフトウェア・フローを説 明します。 1. 12–16 ページの「クワッド SPI フラッシュ・コントローラの設定」で説明するス テップを実行します。 2. indrdstaddr レジスタ内のフラッシュ・メモリのスタート・アドレスを設定しま す。 3. indrdcnt レジスタに転送されるバイト数を設定します。 4. indaddrtrig レジスタにインダイレクト転送のトリガ・アドレスを設定します。 5. irqmask レジスタを介して必要な割り込みを設定します。 6. ウォーターマーク・レベルが使用されている場合、indrdwater レジスタを経由し て SRAM のウォーターマーク・レベルを設定します。 7. indrd レジスタの start フィールドを 1 に設定することにより、インダイレクト のリード動作を開始します。 8. SRAM 内の十分なデータが存在するを決定するために、ウォーターマーク・レベ ル割り込みを使用するか、または sramfill レジスタの SRAM フィル・レベルを ポーリングします。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル 12–18 9. SRAM をアクセスするためのインダイレクト・アドレスにリード・トランザク ションを発行します。もっとリード・トランザクションがインダイレクト・リー ド転送を完了するために必要な場合、ステップ 8 を繰り返します。 10. インダイレクト・リード動作が完成したを断定するためにインダイレクトの完了 割り込みを使用するか、あるいは indrd レジスタの indirect completion status bit (ind_ops_done_status)によってインダイレクト・リード動作の完成ステータス を使用します。 次のステップでは、DMA がイネーブルされるインダイレクトのリード動作用のク ワッド SPI コントローラを設定するための一般的なソフトウェア・フローを説明し ます。 1. 12–16 ページの「クワッド SPI フラッシュ・コントローラの設定」で説明するス テップを実行します。 2. indrdstaddr レジスタ内のフラッシュ・メモリのスタート・アドレスを設定しま す。 3. indrdcnt レジスタに転送されるバイト数を設定します。 4. indaddrtrig レジスタにインダイレクト転送のトリガ・アドレスを設定します。 5. dmaper レジスタのシングルおよびバースト・タイプ DMA 転送バイト数を設定し ます。 6. 必要に応じて DMA 要求が発行されるレートを制御するためにレジスタ indrdwater の SRAM ウォーターマーク・レベルを設定します。 7. indrd レジスタの start フィールドを 1 に設定することにより、インダイレクト のリード・アクセスを開始します。 8. インダイレクト・リード動作が完成したを断定するためにインダイレクトの完了 割り込みを使用するか、あるいは indrd レジスタの ind_ops_done_status によっ てインダイレクト・リード動作の完成ステータスを使用します。 間接ライト動作 次のステップでは、DMA がディセーブルされるインダイレクトのリード動作用のク ワッド SPI コントローラを設定するための一般的なソフトウェア・フローを説明し ます。 1. 12–16 ページの「クワッド SPI フラッシュ・コントローラの設定」で説明するス テップを実行します。 2. indwrstaddr レジスタ内のフラッシュ・メモリのスタート・アドレスを設定しま す。 3. indwrcnt レジスタに転送されるバイト数を設定します。 4. indaddrtrig レジスタにインダイレクト転送のトリガ・アドレスを設定します。 5. irqmask レジスタを介して必要な割り込みを設定します。 6. 必要に応じて DMA 要求が発行されるレートをコントロールするために indwrwater レジスタの SRAM のウォーターマーク・レベルを設定します。値の セットは、1 つのフラッシュ・ページより大きくなければなりません。詳細につ いては、12–6 ページの「間接ライト動作」を参照してください。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル 12–19 7. indwr レジスタの start フィールドを 1 に設定することにより、インダイレクト のライト動作を開始します。 8. SRAM 内で十分なスペースがあることを判断するには、ウォーターマーク・レベ ル割り込みを使用するか、または sramfill レジスタの SRAM フィル・レベルを ポーリングします。 9. SRAM へのデータの一つのフラッシュ・ページを書き込むためのインダイレク ト・アドレスにライト・トランザクションを発行します。もっとライト・トラン ザクションはインダイレクト・ライト転送を完了するために必要な場合、ステッ プ 8 を繰り返します。最終のライトは 1 ページ未満のデータになる場合がありま す。 次のステップでは、DMA がイネーブルされるインダイレクト・ライト動作用にク ワッド SPI コントローラを設定するための一般的なソフトウェア・フローを説明し ます。 1. 12–16 ページの「クワッド SPI フラッシュ・コントローラの設定」で説明するス テップを実行します。 2. indwrstaddr レジスタ内のフラッシュ・メモリのスタート・アドレスを設定しま す。 3. indwrcnt レジスタに転送されるバイト数を設定します。 4. indaddrtrig レジスタにインダイレクト転送のトリガ・アドレスを設定します。 5. dmaper レジスタのシングルおよびバースト・タイプ DMA 転送バイト数を設定し ます。必要に応じて DMA 要求が発行されるレートをコントロールするための indwrwater レジスタの SRAM のウォーターマーク・レベルを設定します。値の セットは、1 つのフラッシュ・ページより大きくなければなりません。詳細につ いては、12–6 ページの「間接ライト動作」を参照してください。 6. indwr レジスタの start フィールドを 1 に設定することにより、インダイレクト のライト動作を開始します。 7. インダイレクト・ライト動作が完成したを断定するためにインダイレクトの完了 割り込みを使用するか、あるいは indwr レジスタの ind_ops_done_status によっ てインダイレクト・ライト動作の完成ステータスを使用します。 XIP モードの動作 この項では、XIP モードの入出力について説明します。XIP のモードはほとんどの SPI フラッシュ・デバイスでサポートされています。ただし、フラッシュ・デバイス・ メーカーは、一貫性のある標準的なアプローチを使用しないでください。ほとんど のフラッシュ・デバイス・メーカーは、アドレス・バイトの直後にデバイスに送信 されるシグネチャ・ビットを使用します。一部のデバイスでは、XIP モードをイネー ブルにするためにシグネチャ・ビットを使用し、フラッシュ・デバイス・コンフィ ギュレーションのレジスタ・ライトを必要としています。 XIP モードの実行 次の項では、ソフトウェアがフラッシュ・デバイスの様々なタイプの XIP モードに 入るためのステップについて説明します。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 12–20 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル Basic-XIP のためのサポート付きの Micron クワッド SPI フラッシュ・デバイス Basic-XIP のサポート付きの Micron クワッド SPI フラッシュ・デバイス内の XIP モー ドに入るには、次のステップを実行します。 1. 終了時に値を復元する場合、モード・ビットの値を保存します。 2. フラッシュ・デバイスにリード・アクセスまたはライト・アクセスが送信されな いように、ダイレクト・アクセス・コントローラおよびインダイレクト・アクセ ス・コントローラをディセーブルします。 3. modebit レジスタの XIP モード・ビットを 0x80 に設定します。 4. cfg レジスタの enterxipnextrd ビットを 1 に設定することによって、クワッド SPI コントローラの XIP モードををイネーブルします。 5. 必要に応じて、ダイレクト・アクセス・コントローラおよびインダイレクト・ア クセス・コントローラをリイネーブルします。 Basic-XIP のためのサポートなしの Micron クワッド SPI フラッシュ・デバイス Basic-XIP のサポートなしで Micron クワッド SPI フラッシュ・デバイス内の XIP モー ドを開始するには、次のステップを実行します。 1. 終了時に値を復元する場合、モード・ビットの値を保存します。 2. フラッシュ・デバイスにリード・アクセスまたはライト・アクセスが送信されな いように、ダイレクト・アクセス・コントローラおよびインダイレクト・アクセ ス・コントローラをディセーブルします。 3. 不揮発性コンフィギュレーション・レジスタ(VCR)のビット 3 を 1 に設定する ことにより、 フラッシュ・デバイスで XIP モードがイネーブルされることを確 認します。VCR のライト・コマンドを発行する flashcmd レジスタを使用します。 4. modebit レジスタの XIP のモード・ビットを 0x00 に設定します。 5. cfg レジスタの enterxipnextrd ビットを 1 に設定することによって、クワッド SPI コントローラの XIP モードををイネーブルします。 6. 必要に応じて、ダイレクト・アクセス・コントローラおよびインダイレクト・ア クセス・コントローラをリイネーブルします。 Winbond クワッド SPI フラッシュ・デバイス Winbond クワッド SPI フラッシュ・デバイスの XIP モードを開始するには、次のス テップを実行します。 1. 終了時に値を復元する場合、モード・ビットの値を保存します。 2. フラッシュ・デバイスにリード・アクセスまたはライト・アクセスが送信されな いように、ダイレクト・アクセス・コントローラおよびインダイレクト・アクセ ス・コントローラをディセーブルします。 3. modebit レジスタの XIP のモード・ビットを 0x20 に設定します。 4. cfg レジスタの enterxipnextrd ビットを 1 に設定することによって、クワッド SPI コントローラの XIP モードををイネーブルします。 5. 必要に応じて、ダイレクト・アクセス・コントローラおよびインダイレクト・ア クセス・コントローラをリイネーブルします。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのプログラミング・モデル 12–21 Spansion クワッド SPI フラッシュ・デバイス XIP モード Spansion のクワッド SPI フラッシュ・デバイスを開始するには、次のス テップを実行します。 1. 終了時に値を復元する場合、モード・ビットの値を保存します。 2. フラッシュ・デバイスにリード・アクセスまたはライト・アクセスが送信されな いように、ダイレクト・アクセス・コントローラおよびインダイレクト・アクセ ス・コントローラをディセーブルします。 3. modebit レジスタの XIP のモード・ビットを 0xA0 に設定します。 4. cfg レジスタの enterxipnextrd ビットを 1 に設定することによって、クワッド SPI コントローラの XIP モードををイネーブルします。 5. 必要に応じて、ダイレクト・アクセス・コントローラおよびインダイレクト・ア クセス・コントローラをリイネーブルします。 XIP モードの終了 XIP モードを終了するには、次のステップを実行します。 1. ダイレクト・アクセス・コントローラおよびインダイレクト・アクセス・コント ローラを使用不可に新しい読み出しを保障しない、またはフラッシュ・デバイス に送信されるアクセスを記述するためのをディセーブルします。 2. フラッシュ・デバイスおよびメーカーによって、XIP モードに入る前の値にモー ド・ビットを復元します。 3. cfg レジスタの enterxipnextrd ビットを 0 に設定します。 フラッシュ・デバイスは、内部の XIP モード状態をイネーブルする前に、リード命 令を受けなければなりません。このように、次のリード命令が処理されるまで、XIP モードは内部的にアクティブなままとなります。任意のリード・シーケンスの終点 の前にその XIP のモードがディセーブルすることを確認してください。 パワー・オン・リセットでの XIP モード いくつかのフラッシュ・デバイスは、フラッシュ・デバイスがパワー・オン・リ セット(POR)ソフトウェアの介入なしでの XIP モードを入力する不揮発性コンフィ ギュレーションの設定として XIP をイネーブルにすることができます。XIP をイネー ブルにしたフラッシュ・デバイス XIP のリード動作でのみアクセスすることができ るため、ソフトウェアはフラッシュ・ステータス・レジスタ・リードを通して POR の XIP ステートを検出することはできません。デバイスが POR 時の XIP モードに開 始することがわかっている場合、最初のブート・ソフトウェアは modebit レジスタ を設定し、cfg レジスタの enterxipimm のビットは 1 に設定してください。 デバイスが POR 時 XIP モードを開始するかどうかを事前に知らない場合、XIP モー ド終了コマンドは flashcmd レジスタを介して最初のブート・ソフトウェアを発行し て、12–19 ページの「XIP モードの実行」でのステップに従ってください。XIP モード のエントリとエクスィットはデバイスによって異なりますので、ソフトウェアは、 デバイスのモード・ビットの要件を認識する必要があります。 2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 12 章 : クワッド SPI フラッシュ・コントローラ クワッド SPI フラッシュ・コントローラのアドレス・マップおよびレジスタの定義 12–22 クワッド SPI フラッシュ・コントローラのアドレス・マップおよ びレジスタの定義 f アドレス・マップとレジスタ定義は、このハンドブックのボリュームに hps.html ファイルに格納されています。ファイルを開くためにリンクをクリックしてくださ い。 モジュールの説明とベース・アドレスを表示しするために、次のモジュール・イン スタンスのリンクをスクロールおよびクリックします。 ■ qspiregs ■ qspidata 次に、レジスタとフィールドの説明を表示するには、レジスタ名をスクロールとク リックします。レジスタ・アドレスは、各モジュール・インスタンスのベース・ア ドレスへの相対的なオフセットです。 f すべてのモジュールのベース・アドレスも X に記載されています。すべてのモジュー ルのベース・アドレスは、「Cyclone V デバイス・ハンドブック Volume 3」の「 Introduction to the Hard Processor System」にもリストされています。 改訂履歴 表 12–4 に、本資料の改訂履歴を示します。 表 12‒4. 改訂履歴 日付 バージョン 変更内容 2012 年 11 月 1.2 マイナーな更新。 2012 年 5 月 1.1 ブロック図とシステム統合、機能説明、プログラミング・モデル、およびアドレ ス・マップとレジスタ定義セクションを追加します。 2012 年 1 月 1.0 初版。 Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation