インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

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に設定することでキャンセルすることができます。詳細は、「間接読み出し動作」のセクションを参照してください。