PCI Express* 用のインテル® Stratix® 10 HタイルおよびLタイル Avalon® メモリー・マップド・ハードIPユーザーガイド

ID 683667
日付 6/03/2020
Public
ドキュメント目次

7.2.2.1. 読み出しDMA内部Descriptor Controllerレジスター

図 57. 読み出しDMAおよび書き込みDMA内部Descriptor Controllerレジスターのアドレスオフセット

内部Read DMA Descriptorレジスターは、次の情報を提供します。

  • ホストメモリー内のディスクリプター・テーブルの元の位置
  • 内部Endpoint読み出しコントローラーFIFOメモリー内のディスクリプター・テーブルの必要な位置
  • テーブルサイズ。最大サイズは128エントリーで、各エントリーは32バイトです。メモリー所要量は4096 KBです。
  • DMAディスクリプターの完了を追跡するための追加フィールド

内部を選択すると、このレジスターはRead Descriptor Controller Slaveを介してアクセスされます。外部でインスタンス化されたDescriptor Controllerを選択すると、このレジスターはBAR0を介してアクセスされます。Endpoint読み出しコントローラーFIFOはオフセット0x0000にあります。

次の表は、内部Read DMA Descriptor Controllerのレジスターおよびそのオフセットを示しています。このレジスターは、Read Descriptor Controller Slaveを介してアクセスされます。外部でインスタンス化されたDMA Descriptor Controllerを選択すると、このレジスターはユーザー定義のBARを介してアクセスされます。ソフトウェアは、Read DMA Descriptor Controllerのベースアドレス RdDC_SLV_ADDR にアドレスオフセットを追加する必要があります。内部Descriptor Controllerを選択すると、このレジスターはBAR0を介してアクセスされます。Read DMA Descriptor Controllerレジスターは、オフセット0x0000から始まります。

表 70.  読み出しDMA Descriptor Controllerレジスター

アドレスオフセット

レジスター

アクセス

説明

リセット値

0x0000

Read Status and Descriptor Base (Low)

RW

PCIe* システムメモリーの読み出しステータスおよびディスクリプター・テーブルのベースアドレスの下位32ビットを指定します。このアドレスは32バイト境界にある必要があります。

Unknown

0x0004

Read Status and Descriptor Base (High)

RW

PCIe* システムメモリーの読み出しステータスおよびディスクリプター・テーブルのベースアドレスの上位32ビットを指定します。

Unknown

0x0008

Read Descriptor FIFO Base (Low)

RW

エンドポイント・メモリー内の読み出しディスクリプターFIFOのベースアドレスの下位32ビットを指定します。アドレスは、Read Data MoverのAvalon-MM Master Portから見た、Descriptor ControllerのRead Descriptor TableのAvalon-MM Slave PortのAvalon-MMアドレスである必要があります。

Unknown

0x000C

Read Descriptor FIFO Base (High)

RW

エンドポイントAvalon-MMメモリー内の読み出しディスクリプターFIFOのベースアドレスの上位32ビットを指定します。これは、Read Data MoverのAvalon-MM Master Portから見た、ディスクリプター・コントローラーのRead Descriptor TableのAvalon-MM Slave PortのAvalon-MMアドレスである必要があります。

Unknown

0x0010

RD_DMA_LAST_PTR

RW

[31:8]: 予約済み

[7:0]: DescriptorID

読み出されると、要求された最後のディスクリプターのIDを返します。DMAがリセットされている場合、値0xFFを返します。

書き込まれると、要求された最後のディスクリプターのIDを指定します。読み出された値および書き込まれた値の違いは、処理されるディスクリプターの数です。

例えば、値が4の場合、最後に要求されたディスクリプターは4です。さらに5つのディスクリプターを指定するには、ソフトウェアは RD_DMA_LAST_PTR レジスターに9を書き込む必要があります。DMAはさらに5つのディスクリプターを実行します。

読み出しDMAですべてのディスクリプターの Update ビットを記録するには、このレジスターをプログラムして一度に1つのディスクリプターを転送するか、または RD_CONTROL レジスターの Update ビットを設定します。

ディスクリプターIDは、RD_TABLE_SIZE に到達した後に、ループして0に戻ります。

RD_TABLE_SIZE - RD_DMA_LAST_PTR よりも多くのポインターを処理する場合は、2つの手順を実行する必要があります。まず、RD_TABLE_SIZE と同じ値を書き込むことにより RD_TABLE_SIZE までのポインターを処理し、それが完了するのを待ちます。次に、残りのディスクリプターの数を RD_DMA_LAST_PTR に書き込みます。

[31:8]: Unknown

[7:0]:0xFF

0x0014 RD_TABLE_SIZE

RW

[31:7]: 予約済み

[6:0]: Size -1

このレジスターは、128エントリーのデフォルトサイズよりも小さいテーブルサイズを提供します。小さいサイズはメモリーを節約します。このレジスターを目的の値-1でプログラムします。

この値は、最後の Descriptor ID を指定します。

[31:7]: Unknown

[6:0]: 0x7F

0x0018 RD_CONTROL

RW

[31:1]: 予約済み

[0]: Update

ディスクリプターの処理状況のレポート方法を制御します。Update ビットが設定されている場合、処理されたすべてのディスクリプターのステータスを返します。設定されていない場合、RD_DMA_LAST_PTR レジスターの最新のエントリーのステータスを返信します。

デフォルト値は0です。

[31:1]: Unknown

[0]: 0x0