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

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

16.5.7.3. 内部DMAコントローラーの受信シーケンス

内部DMAコントローラーを使用してデータを受信するには、次の手順を行います。
  1. ホストは、受信の記述子フィールド (DES0からDES3) を設定し、OWN (DES0 [31]) を1に設定します。
  2. ホストは、BIUのcmdレジスターにデータ読み出しコマンドを書き込みます。内部DMAコントローラーは、読み出しデータの転送を実行する必要があると判断します。
  3. ホストは、必要な受信しきい値レベルをfifothレジスターのrx_wmarkフィールドに設定します。
  4. 内部DMAコントローラー・エンジンは記述子をフェッチし、OWNビットを確認します。OWNビットが0に設定されている場合は、ホストが記述子を所有しています。その場合、内部DMAコントローラーは一時停止状態になり、Descriptor Unable割り込みをアサートします。ホストはその後、記述子のOWNビットを1に設定し、pldmndレジスターに任意の値を書き込むことで、DMAコントローラーを解放する必要があります。
  5. ホストは、記述子のベースアドレスをdbaddrレジスターに書き込む必要があります。
  6. 内部DMAコントローラーは、BIUからのエラーがなく、rintstsレジスターのCDビットが1に設定されるのを待機します。この状態は、転送が可能であることを示しています。
  7. 内部DMAコントローラー・エンジンは、BIUからのDMAインターフェイス要求を待機します。BIUは、各転送を小さなチャンクに分割します。各チャンクはDMAへの内部要求です。この要求は、受信しきい値の値に基づき生成されます。
  8. 内部DMAコントローラーは、FIFOバッファーからデータをフェッチし、データをシステムメモリーに転送します。
  9. データが複数の記述子にわたる場合、内部DMAコントローラーは次の記述子をフェッチし、次の記述子で動作を続行します。記述子のLast Descriptorビットは、データが複数の記述子に広がっているかを示します。
  10. データの受信が完了すると、riビットを1に設定することにより、ステータス情報がidstsレジスターで更新されます (有効になっている場合)。また、記述子のDES0フィールドを更新することにより、OWNビットがDMAコントローラーによって0に設定されます。