PCI Expressのマルチチャネル DMA インテル® FPGA IPユーザー ガイド

ID 683821
日付 4/20/2022
Public
ドキュメント目次

3.1.3. ディスクリプター

マルチチャネル DMA データ移動をサポートする DMA チャネルは、ディスクリプター・キューのペア (1 つの H2D ディスクリプター・キューと 1 つの D2H ディスクリプター・キュー) でコンフィグレーションされます。ディスクリプターは、4 KB ページ内で連続して配置されます。

各ディスクリプターのサイズは 32 バイトです。ディスクリプターは、ホストメモリー内の 4 KB ページのリンクリストに保持されます。 32 バイトのディスクリプターと 4 KB のページの場合、各ページには最大 128 個のディスクリプターが含まれます。 4 KB ページの最後のディスクリプターは「リンク・ディスクリプター」である必要があります。これは、リンクビットが 1 に設定された次の 4 KB ページへのリンクを含むディスクリプターです。リンクリストの最後のエントリは、4 KB ページのリンクリストを含む循環バッファーを実現するために、QCSR でプログラムされたベースアドレスを指すリンクである必要があります。次の図は、ディスクリプターの連結リストを示しています。

図 3. ディスクリプターのリンクリスト

ソフトウェアとハードウェアは、次の図に示すように、テール・インデックス・ポインター (Q_TAIL_POINTER) とヘッド インデックス・ポインター (Q_HEAD_POINTER) QCSR レジスターを使用して、ディスクリプターの通信と管理を行います。 ソフトウェアが最後の有効なディスクリプター・インデックスをQ_TAIL_POINTER レジスターに書き込むと、DMA が開始します。

図 4. ディスクリプター・リング・バッファー
表 16.  ソフトウェア・ディスクリプターの形式
フィールド名 説明
SRC_ADDR [63:0] 64

Link bit =0 の場合、このフィールドには送信元のアドレスが含まれます。

DMA によって読み出される割り当てられた送信バッファーの開始システムアドレスであり、64 バイトにアラインされている必要があります。

キューが H2D の場合、このフィールドにはホストメモリー内のアドレスが含まれます。キューが D2H の場合、これはデバイスメモリー内の AVMM アドレスです。

リンクビットが設定されている場合、これには、ディスクリプターを含むホストメモリー内の次の 4 KB ページのアドレスが含まれます。

1|127|64 64

Provided link=0の場合、このフィールドは次のことを意味します。

DMA によって書き込まれる割り当てられた受信バッファーの開始システムアドレスであり、64 バイトにアラインされている必要があります。

キューが D2H の場合、このフィールドにはホストメモリー内のアドレスが含まれます。キューが H2D の場合、これはデバイスメモリー内の AVMM アドレスです。

PYLD_CNT [147:128] 20

Provided link=0の場合、このフィールドは DMA ペイロード・サイズ (バイト単位) を意味します。最大 1 MB。20'h0 は 1 MB を示します。

1 ポート AVST モードの D2H キューの場合、このフィールドはキューのすべてのディスクリプターにわたって固定値であり、Q_PYLD_CNT (0x44) QCSR レジスターの値を反映する必要があります。

RSRVD [159:148] 12 予約済み。
DESC_IDX [175:160] 16

ソフトウェア・ドライバーによって割り当てられる、各ディスクリプターの一意の識別子です。ディスクリプターのデータ転送が完了すると、この値が Q_COMPLETED_POINTER レジスターに書き込まれます。

注: 最初のディスクリプター DESC_IDX 値は 0 ではなく 1 です。
MSIX_EN [176] 1 ディスクリプターごとに MSI-X を有効にします。
WB_EN [177] 1 ディスクリプターごとに書き戻しを有効にします。
RSRVD [191:178] 14 予約済み。
RX_PYLD_CNT [211:192] 20 D2H データ移動 (アップストリーム) の実際のペイロードを受信します。
RSRVD [221:212] 10 予約済み。
SOF [222] 1

Avalon-ST ストリーミングの SOF インジケーターです。

H2D ストリーミングでは、このビットにより、Avalon-ST ソース・インターフェイスがh2d_st_sof_o をアサートし、ファイル/パケットの開始を示します。

D2H ストリーミングでは、ユーザーロジックがファイル/パケットの開始を示す d2h_st_sof_i をアサートすると、MWr TLP によってこのビットが記述子自体に設定されます。

注: H2D ストリーミングでは、SOF と EOF の両方を同じディスクリプター(file size = payload count) に設定できます。または複数のディスクリプターページにまたがることができます。
注: D2H ストリーミングで、ユーザーロジックがアサートによってデータ転送を途中で終了した場合、 d2h_st_eof_i ディスクリプターのデータ移動の途中で次のファイル/パケットを開始すると、次のディスクリプターの SOF ビットが MWr TLP によって設定されます。
注: SOF ビットは、Avalon-ST インターフェイスを使用したファイルデータ転送を伴う DMA のオプション機能です。
EOF [223] 1

Avalon-ST ストリーミングの EOF インジケーター。

H2D ストリーミングでは、このビットにより、Avalon-ST Source インターフェイスがh2d_st_eof_o をアサートし、ファイル/パケットの終わりを示します。

D2H ストリーミングでは、このビットは、ユーザー ロジックがd2h_st_eof_iをアサートしてパケットの終了を示すときに、ライトバック (ライトバックが有効な場合) によってディスクリプタ自体に設定されます。

EOF ビットとともに、MWr TLP は最後のディスクリプターの実際の受信ペイロード カウント (RX_PYLD_CNT)) フィールドも更新します。

注: EOF ビットは、Avalon-ST インターフェイスを使用したファイルデータ転送を伴う DMA のオプション機能です。
RSRVD [253:224] 30 予約済み。
DESC_INVALID [254] 1 現在のディスクリプターの内容が有効か古いかを示します。
LINK [255] 1

Link =0

ディスクリプターには、送信元アドレス、宛先アドレス、および長さが含まれます。

Link = 1

ディスクリプターには、ディスクリプターを含むホストメモリー内の次の 4 KB ページのアドレスが含まれます。