インテルのみ表示可能 — GUID: lpz1521727528292
Ixiasoft
インテルのみ表示可能 — GUID: lpz1521727528292
Ixiasoft
B.5.2.2.1. 間接読み出し動作
間接読み出し動作では、フラッシュメモリーからデータを読み出し、データをSRAMに配置後、データ・スレーブ・インターフェイスを介してデータを外部マスターに転送します。次のレジスターにより、間接読み出し動作を制御します。
- Indirect Read Transfer (indrd) レジスター
- Indirect Read Transfer Watermark (indrdwater) レジスター
- Indirect Read Transfer Start Address (indrdstaddr) レジスター
- Indirect Read Transfer Number Bytes (indrdcnt) レジスター
- Indirect Address Trigger (indaddrtrig) レジスター
これらのレジスターは、間接読み出し操作を発行する前にコンフィグレーションする必要があります。開始アドレスは、indrdstaddrレジスターで定義する必要があります。また、フェッチされる合計バイト数は、indircntレジスターで指定されます。indrdレジスターのStart Indirect Read (start) ビットに1を書き込むと、フラッシュメモリーからの間接読み出し操作がトリガーされ、返されたデータはSRAMに配置されます。
フラッシュデバイスからSRAMにデータを読み込む際に、外部マスターは32ビットの読み出しトランザクションをデータ・スレーブ・インターフェイスに発行します。読み出しアクセスのアドレスは、間接アドレスの範囲内にする必要があります。間接アドレスは、indaddrtrigレジスターを介してコンフィグレーションすることができます。外部マスターでは、間接転送の最後のワードまで32ビットの読み出しを発行することができます。最後の読み出しでは、外部マスターは32ビット、16ビット、または8ビットの読み出しを発行して転送を完了することができます。最後の転送で読み出すデータが4バイト未満の場合でも、外部マスターでは32ビットの読み出しを発行することができます。この場合、Quad SPIコントローラーは、応答データの上位ビットを0でパディングします。
Quad SPIコントローラーがデータスレーブ読み出しを受信した際に、要求されているデータがSRAMにある場合は、データがSRAMからフェッチされ、読み出しバーストへの応答は最小のレイテンシーで実現します。要求されているデータがSRAMにまだ存在しない場合は、データがフラッシュメモリーからSRAMに読み込まれるまで、データ・スレーブ・インターフェイスは待機状態になります。外部マスターによってSRAMからデータが読み出されると、Quad SPIコントローラーはSRAM内の関連するリソースを解放します。SRAMがフルの場合、SPIインターフェイス上の読み出しは、SRAMでスペースが利用可能になるまでバックプレッシャーされます。Quad SPIコントローラーは現在の読み出しバーストを完了させ、SRAMが解放されるまで待機後、前のバーストが終了したアドレスで新しい読み出しバーストを発行します。
プロセッサーでSRAM Fill (sramfill) レジスターのSRAMフィルレベルを使用し、SRAMからデータをフェッチするタイミングを制御することも可能です。
もしくは、indrdwaterレジスターでSRAMのフィル・レベル・ウォーターマークをコンフィグレーションすることも可能です。SRAMのフィルレベルがウォーターマーク・レベルを超えると、間接転送ウォーターマーク割り込みが生成されます。このウォーターマークの機能は、すべて0の値をindrdwaterレジスターに書き込むことで無効にすることができます。
Quad SPIコントローラーによって読み出されてSRAMに配置されるデータの最後のバイトでは、ウォーターマーク・レベルが0よりも大きい場合、実際のSRAMのフィルレベルがウォーターマークを超えていない場合でも、間接転送ウォーターマーク割り込みが生成されます。
読み出しアクセスのアドレスが間接トリガーアドレスの範囲外にある場合は、次のいずれかの動作が発生します。
- ダイレクト・アクセス・モードが有効になっている場合は、その読み出しではダイレクト・アクセス・モードを使用します。
- ダイレクト・アクセス・モードが無効になっている場合は、スレーブは要求元のマスターにエラーを返します。
間接動作は、indrdレジスターのCancel Indirect Read (cancel) ビットを1に設定することでキャンセルすることができます。詳細は、「間接読み出し動作」のセクションを参照してください。