インテルのみ表示可能 — GUID: fkt1589498587678
Ixiasoft
インテルのみ表示可能 — GUID: fkt1589498587678
Ixiasoft
9.1. キュー・コントロール (QCSR)
QCSR スペースには、キュー・コントロールおよびステータス情報が含まれます。この 1 MB のレジスタースペースは、最大 2048 の H2D および 2048 の D2H キューをサポートでき、各キューには 256 バイトのレジスタースペースが割り当てられます。各機能に割り当てられるメモリースペースは、各機能がすべての DMA チャネルを割り当てるのに十分です。ただし、実際の数は、IP 生成時に入力されたパラメーターによって異なります。
アドレス [7:0] : キューのレジスター
アドレス [18:8]: キュー番号
アドレス [6:19]: 0'D2H: H2D
次のレジスターは、H2D/D2H キュー用に定義されています。H2DとD2Hのベース アドレスは異なりますが、レジスター (H2D と D2H) のアドレス オフセットは同じです。
レジスター名 | アドレスオフセット | アクセスタイプ | 詳細 |
---|---|---|---|
Q_CTRL | 8’h00 | 読出/書込 | コントロール・レジスター |
RESERVED | 8’h04 | 予約済み | |
Q_START_ADDR_L | 8’h08 | 読出/書込 | システムメモリー内のキュー・ベース・アドレスの下位 32 ビット。これは、ディスクリプターを含む 4KB ページのリンクリストの先頭です。 |
Q_START_ADDR_H | 8’h0C | 読出/書込 | システムメモリー内のキュー・ベース・アドレスの上位32ビット。これは、ディスクリプターを含む 4KB ページのリンクリストの先頭です。 |
Q_SIZE | 8’h10 | 読出/書込 | キュー内の最大エントリ数。 2の累乗のみ。 |
Q_TAIL_POINTER | 8’h14 | 読出/書込 | ホストメモリー内の最後の有効なディスクリプター・キュー エントリーへの現在のポインター。 |
Q_HEAD_POINTER | 8’h18 | 読み出し専用 | フェッチされた最後のディスクリプターへの現在のポインター。ディスクリプター・フェッチ エンジンによって更新されます。 |
Q_COMPLETED_POINTER | 8’h1C | 読み出し専用 | DMA が完了した後に最後に完了したポインター。ライトバックが無効になっている場合、ソフトウェアはこれをポーリングしてステータスを取得できます。 |
Q_CONSUMED_HEAD_ADDR_L | 8’h20 | 読出/書込 | リング消費ポインタが格納されているシステムアドレスの下位32ビット。このアドレスは、消費されたポインターの書き戻しに使用されます。 |
Q_CONSUMED_HEAD_ADDR_H | 8’h24 | 読出/書込 | リング消費ポインタが格納されるシステムアドレスの上位32ビット。このアドレスは、消費されたポインターの書き戻しに使用されます。 |
Q_BATCH_DELAY | 8’h28 | 読出/書込 | フェッチの効率を最大化するために、前のフェッチからの経過時間がこのレジスターの遅延値を超えるまで、ディスクリプターのフェッチを遅らせます。 |
RESERVED | 8’h2C | 予約済み | |
RESERVED | 18’h30 | 予約済み | |
RESERVED | 8’h34 | 予約済み | |
Q_DEBUG_STATUS_1 | 8’h38 | RO | 予約済み |
Q_DEBUG_STATUS_2 | 8’h3C | RO | 予約済み |
Q_DEBUG_STATUS_3 | 8’h40 | RO | 予約済み |
Q_PYLD_CNT | 8’h44 | 読出/書込 | 20 ビットのペイロード・カウント。 DMA ペイロード・サイズ (バイト単位) で、64 バイト アラインされている必要があります。最大 1 MB。20'h0 は 1 MB を示します。このレジスターに設定された値は、各チャネルのディスクリプターの PYLD_CNT フィールドに入力するためにホスト SW によって使用される値と同じでなければなりません。 D2H AVST 1 ポート・モードにのみ適用されます。他のすべてのモードでは未使用です。 |
Q_RESET | 8’h48 | 読出/書込 | このレジスターに 1'b1 を書き込むことでキューのリセットを要求し、リセットがハードウェアによって完了したときに 1'b0 の値をポーリングします。キューのリセットが完了すると、ハードウェアはこのビットをクリアします。 VF の FLR リセットが検出されると、同様のプロセスが発生します。 |
次のレジスターは、実装された H2D および D2H キューごとに定義されています。各 H2D/D2H の合計 QCSR アドレス空間は 256B で、8 ビットのアドレスが必要です。
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:10] | rsvd | 予約済み。 | ||
[9] | q_intr_en | 読出/書込 | 0 | 設定されている場合、完了時に MSI-X 割り込みを生成します。 |
[8] | q_wb_ja | 読出/書込 | 0 | 設定されている場合、完了時にライトバックを行います。 |
[7:1] | rsvd | 予約済み。 | ||
[0] | q_en | 読出/書込 | 0 | 有効。有効にすると、DMA は保留中のディスクリプターのフェッチと実行を開始します。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:0] | q_strt_addr_l | 読出/書込 | 0 | ソフトウェアがディスクリプター・リング・バッファーを割り当てた後、割り当てられた下位 32 ビット アドレスをこのレジスターに書き込みます。ディスクリプター・フェッチ・エンジンは、このアドレスと保留中のヘッド/テール ポインタを使用してディスクリプターをフェッチします。 |
ビット[31:0]: | フィールド名 | R/W | デフォルト | 説明 |
---|---|---|---|---|
[31:0] | q_strt_addr_h | 読出/書込 | 0 | ソフトウェアがディスクリプター・リング・バッファーを割り当てた後、割り当てられた上位 32 ビットアドレスをこのレジスターに書き込みます。ディスクリプター・フェッチ エンジンは、このアドレスと保留中のヘッド/テール ポインタを使用してディスクリプターをフェッチします。 |
ビット[31:0]: | フィールド名 | R/W | デフォルト | 説明 |
---|---|---|---|---|
[31:5] | rsvd | 予約済み。 | ||
[4:0] | q_size | 読出/書込 | 1 | ディスクリプター・リングのサイズ (2 の累乗、最大値 16)。単位はディスクリプターの数です。不正な値が書き込まれた場合、ハードウェアはデフォルトで値 1 を使用します。値 1 は、キュー サイズが 2 (2^1) であることを意味します。値は 16 (0x10) で、キュー サイズが 64K (2^16) であることを意味します。 |
ビット[31:0]: | フィールド名 | R/W | デフォルト | 説明 |
---|---|---|---|---|
[31:16] | rsvd | 予約済み。 | ||
[15:0] | q_tl_ptr | 読出/書込 | 0 | ソフトウェアは、ディスクリプター・バッファーに最後の有効なディスクリプターを設定した後、実行準備が整った最後の (テール) 有効なディスクリプターの位置をこのレジスターにプログラムします。 DMA ディスクリプター・エンジンは、バッファーからこの位置までのディスクリプターをフェッチします。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:16] | rsvd | 予約済み。 | ||
[15:0] | q_hd_ptr | 読出/書込 | 0 | DMA ディスクリプター・フェッチ エンジンは、ディスクリプター・バッファーからテール ポインターまでディスクリプターをフェッチした後、最後にフェッチしたディスクリプター位置でこのレジスターを更新します。フェッチエンジンは、ヘッド ポインターとテールポインターが等しくない場合にのみディスクリプターをフェッチします。 |
ビット[31:0]: | フィールド名 | R/W | デフォルト | 説明 |
---|---|---|---|---|
[31:16] | rsvd | 予約済み。 | ||
[15:0] | q_cml_ptr | 読出/書込 | 0 | このレジスターはハードウェアによって更新され、DMA が完了した最後のディスクリプター位置 (ポインタ) を格納します。これは、そのディスクリプターと以前のディスクリプターのすべてのデータが目的の宛先に到着したことを示します。ソフトウェアはこのレジスターをポーリングして、特定のキューの DMA のステータスを確認できます。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:0] | q_cnsm_hd_addr_l | 読出/書込 | 0 | ソフトウェアは、ライト・バック・ビットが有効なディスクリプターの DMA が完了した後にライトバックがターゲットとする下位 32 ビットアドレス位置を使用して、このレジスターをプログラムします。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:0] | q_cnsm_hd_addr_h | 読出/書込 | 0 | ソフトウェアは、一連のディスクリプターの DMA が完了した後にライトバックがターゲットとする上位 32 ビット アドレス位置を使用して、このレジスターをプログラムします。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:20] | rsvd | 予約済み。 | ||
[19:0] | q_batch_dscr_delay | 読出/書込 | 0 | ソフトウェアは、ディスクリプターのフェッチ間の時間でこのレジスターをプログラムします。各単位は 2ns です。 |
ビット[31:0]: | フィールド名 | 読出/書込 | デフォルト | 説明 |
---|---|---|---|---|
[31:20] | rsvd | 予約済み。 | ||
[19:0] | q_pyld_cnt | 読出/書込 | 0 | 20 ビットのペイロード・カウント。 DMA ペイロード・サイズ (バイト単位)。最大 1 MB。20'h0 は 1 MB を示します。この値は、ディスクリプターのペイロード・カウント フィールドに設定されている値と同じである必要があります。 D2H AVST 1 ポート・モードにのみ適用されます。他のすべてのモードでは未使用です。 |
ビット[31:0]: | フィールド名 | R/W | デフォルト | 説明 |
---|---|---|---|---|
[31:1] | rsvd | 予約済み。 | ||
[0] | q_reset | 読出/書込 | 0 | このレジスターに 1'b1 を書き込むことでキューのリセットを要求し、リセットがハードウェアによって完了したときに 1'b0 の値をポーリングします。キューのリセットが完了すると、ハードウェアはこのビットをクリアします。 |