インテルのみ表示可能 — GUID: nik1410905619848
Ixiasoft
7.1.1. レジスターアクセスの定義
7.1.2. PCIコンフィグレーション・ヘッダー・レジスター
7.1.3. PCI Express機能構造
7.1.4. インテル定義のVSEC Capabilityヘッダー
7.1.5. Uncorrectable Internal Error Status (修正不可能な内部エラーステータス) レジスター
7.1.6. Uncorrectable Internal Error Mask (修正不可能な内部エラーマスク) レジスター
7.1.7. Correctable Internal Error Status (修正可能な内部エラーステータス) レジスター
7.1.8. Correctable Internal Error Mask (修正可能な内部エラーマスク) レジスター
10.5.1. ebfm_barwrプロシージャー
10.5.2. ebfm_barwr_immプロシージャー
10.5.3. ebfm_barrd_waitプロシージャー
10.5.4. ebfm_barrd_nowtプロシージャー
10.5.5. ebfm_cfgwr_imm_waitプロシージャー
10.5.6. ebfm_cfgwr_imm_nowtプロシージャー
10.5.7. ebfm_cfgrd_waitプロシージャー
10.5.8. ebfm_cfgrd_nowtプロシージャー
10.5.9. BFMコンフィグレーション・プロシージャー
10.5.10. BFM共有メモリー・アクセス・プロシージャー
10.5.11. BFMログおよびメッセージ・プロシージャー
10.5.12. Verilog HDL Formattingファンクション
インテルのみ表示可能 — GUID: nik1410905619848
Ixiasoft
8.3. 同時読み書きDMA用のソフトウェア・プログラム
次の手順をプログラムして、同時DMA転送を実装します。
- ReadおよびWrite DMAディスクリプター・テーブル用に、 PCIe* システムメモリーを割り当てます。例えば、各テーブルが最大128個の8 DWORDディスクリプターおよび128個の1 DWORDステータスエントリーをサポートする場合、合計1152 DWORDになります。ReadおよびWrite DMAディスクリプター・テーブルの合計メモリーは、2304 DWORDです。
- PCIe* システムメモリーを割り当て、Read Data Moverが読み出すデータで初期化します。
- Write Data Moverが書き込む PCIe* システムメモリーを割り当てます。
- 読み出しDMAディスクリプター・テーブルのすべてのディスクリプターを作成します。DMA Descriptor IDs を0から最大127まで順番に割り当てます。読み出しDMAの場合、ソースアドレスは手順2で割り当てられたメモリー空間です。送信先アドレスは、Read Data Moverモジュールが書き込むAvalon‑MMアドレスです。DMAの長さをDWORDで指定します。各ディスクリプターは連続したメモリーを転送します。Read DMAのベースアドレスが0であると想定すると、次の割り当ては読み出しディスクリプターの構築を示しています。
- RD_LOW_SRC_ADDR = 0x0000 (PCIeシステムメモリー内の読み出しディスクリプター・テーブルのベースアドレス。)
- RD_HIGH_SRC_ADDR = 0x0004
- RD_CTRL_LOW_DEST_ADDR 0x0008
- RD_CTRL_HIGH_DEST_ADDR = 0x000C
- RD_DMA_LAST_PTR = 0x0010
RD_DMA_LAST_PTR レジスターに書き込むと、動作が開始します。 - Write DMAの場合、ソースアドレスはWrite Data Moverモジュールが読み出すAvalon‑MMアドレスです。送信先アドレスは、手順3で割り当てられた PCIe* システムメモリー空間です。DMAサイズをDWORDで指定します。Write Data Moverの0x100のベースアドレスを想定すると、次の割り当ては書き込みディスクリプターの構築を示しています。
- WD_LOW_SRC_ADDR = 0x0100 ( PCIe* システムメモリー内の書き込みディスクリプター・テーブルのベースアドレス。)
- WD_HIGH_SRC_ADDR = 0x0104
- WD_CTRL_LOW_DEST_ADDR 0x0108
- WD_CTRL_HIGH_DEST_ADDR = 0x010C
- WD_DMA_LAST_PTR = 0x0110
WD_DMA_LAST_PTR レジスターに書き込むと、動作が開始します。 - スループットを向上させるために、Read DMAモジュールは、動作を開始する前にディスクリプター・テーブルをAvalon-MMメモリーにコピーします。Descriptor Table Base (Low) および (High) レジスターに書き込むことにより、メモリーアドレスを指定します。
- 完了したそれぞれの WD_DMA_LAST_PTR または RD_DMA_LAST_PTR に対して、MSI割り込みが送信されます。この完了により、Update ビットが更新されます。その後、ホスト・ソフトウェアは Update ビットを読み出して、どのDMA動作が完了したかを決定します。
注: 読み出しDMAの転送サイズが読み出し要求の最大サイズより大きい場合、Read DMAは複数の読み出し要求を作成します。例えば、読み出し要求の最大サイズが512バイトの場合、Read Data Moverは、4 KBの読み出し要求を8つの異なるタグを持つ8つの要求に分割します。Read Completionは任意の順序で戻ることができます。Read Data MoverのAvalon-MMマスターポートは、Read Completionで受信したデータを、Completionを受信したのと同じ順序でタグに基づいて、 Avalon® -MMメモリーの正しい位置に書き込みます。この順序は必ずしもアドレスの昇順ではありません。データムーバーには、内部の並び替えバッファーは含まれていません。システムが順不同の読み出し完了を許可している場合、最新のエントリーの状況は最新のものであり、他の完了よりも時系列的に早くなる可能性があります。