PCI Express 用のインテル® Stratix® 10 HタイルおよびLタイル Avalon メモリー・マップド・ハードIPユーザーガイド
バージョン情報
更新対象: |
---|
インテル® Quartus® Prime デザインスイート 20.1 |
この翻訳版は参照用であり、翻訳版と英語版の内容に相違がある場合は、英語版が優先されるものとします。翻訳版は、資料によっては英語版の更新に対応していない場合があります。最新情報につきましては、必ず英語版の最新資料をご確認ください。 |
1. 概要
このユーザーガイドは、インテル® Stratix® 10デバイスのHタイルおよびLタイルのバリアントに適用されます。
1.1. PCIeのAvalon-MMインターフェイス
インテルStratix 10 FPGAには、PCI Express Base Specification 3.0に準拠するPCI Express*用のコンフィグレーション可能な強化されたプロトコルスタックが含まれています。このIPコアは、以前の Avalon® Memory-Mapped (Avalon-MM) インターフェイスおよびAvalon-MMダイレクト・メモリー・アクセス (DMA) インターフェイスの機能を組み合わせたものです。 Arria® 10デバイス用のDMAバリアントを備えたAvalon-MMおよびAvalon-MMとして、インテルStratix 10に対して同じ機能をサポートします。
Avalon-MMインターフェイスを使用したPCI Express IPコアのハードIP は、PCIeプロトコルに関連する多くの煩雑さを排除します。すべてのTransaction Layer Packet (TLP) エンコードおよびデコードを処理し、デザインタスクを簡素化します。このIPコアには、オプションのReadおよびWrite Data Moverモジュールも含まれており、高性能DMAデザインの作成を容易にします。Avalon-MMインターフェイスとReadおよびWrite Data Moverモジュールの両方が、ソフトロジックで実装されています。
PCI Express IPコアのAvalon-MMインテルStratix 10 Hard IPは、Gen1、Gen2、Gen3のデータレートと、x1、x2、x4、およびx8のコンフィグレーションをサポートします。Gen1およびGen2のデータレートは、x16のコンフィグレーションでもサポートされています。
リンク帯域幅 | |||||
---|---|---|---|---|---|
×1 | ×2 | ×4 | ×8 | ×16 | |
PCI Express Gen1 (2.5 Gbps) |
2 |
4 |
8 |
16 |
32 |
PCI Express Gen2 (5.0 Gbps) |
4 |
8 |
16 |
32 |
64 |
PCI Express Gen3 (8.0 Gbps) |
7.87 |
15.75 |
31.5 |
63 |
現在のリリースでは使用できません。 |
1.2. フィーチャー
インテルQuartus® Primeプロ・エディション開発ソフトウェアの新しいフィーチャーは以下のとおりです。
- 最大Gen3 x8バリアントのProgrammer Objectファイル (*.pof) 生成のサポート
- 次の機能を含む、
PCIe*
Link Inspectorのサポートがあります。
- Configuration Spaceレジスターへの読み出しおよび書き込みアクセス
- LTSSM監視
- PLLロックおよびキャリブレーション・ステータスの監視
- PCSおよびPMAレジスターへの読み出しおよび書き込みアクセス
- 動的に生成されたデザイン例を使用してハードウェアでの PCIe* アクセスを示すLinux用のソフトウェア・アプリケーション
- インテルQuartus Primeプロ・エディションのIP CatalogからのスタンドアロンIPコアとしてのインスタンス化、およびPlatform Designerのインスタンス化のサポート
- 以前のデバイスファミリーに実装されていたAvalon-MMまたはAvalon-MM DMAの移行パス
- 標準のAvalon-MMマスターおよびスレーブ・インターフェイスには、次が含まれます。
- オプションのアドレス・マッピングを備えた高スループットのバーストAvalon-MMスレーブ
- バイトの粒度を備えたAvalon-MMスレーブは、単一のDWORDポートのサポートをイネーブルし、DWORD粒度は高スループット・ポートのサポートをイネーブルします。
- バイトイネーブルをサポートする1つ以上のBARに関連付けられた最大6つのAvalon-MMマスター
- 高性能のバーストAvalon-MMマスターポート
- 高スループット、バースト、
Avalon®
-MMマスターを備えたオプションのDMAデータムーバーのフィーチャーは、次のとおりです。
- Write Data Moverは、 PCIe* Memory Write (MemWr) Transaction Layer Packets (TLP) を使用して、データを PCIe* システムメモリーに移動させます。
- Read Data Moverは、PCIe Memory Read (MemRd) TLPを使用して、データをローカルメモリーに移動させます。
- 特定のアプリケーションに必要なフィーチャーを選択するためのモジュール式実装は、次のとおりです。
- DMAモジュールと高スループットのAvalon-MMスレーブおよびマスターの同時サポート
- Avalon-MMスレーブは、 PCI Express* 特定の知識がなくても、PCIeアドレス空間全体にアクセスできます。
- 256ビットおよび64ビットのアプリケーション・インターフェイス幅のサポート
- インテルStratix 10デバイスでは、LおよびHの両方のトランシーバー・タイルのPCIeハードIPで、Advanced Error Reportingが常にイネーブルになっています。
- インテルQuartus Primeプロ・エディションおよびPlatform Designer IP Catalogの両方で使用可能
- オプションの内部DMA Descriptorコントローラー
- FPGAファブリックがプログラムされる前にPCIe IPコアが動作を開始できるようにする、Autonomous Hard IPモード。このモードはデフォルトでイネーブルになっています。ディスエーブルすることはできません。
- -2スピードグレードのデバイスでは、最大250MHzで動作します。
1.3. リリース情報
項目 |
説明 |
---|---|
バージョン |
インテルQuartus Primeプロ・エディション18.0ソフトウェア |
リリース日 | 2018年5月 |
製品コード |
製品コードは不要です。 |
インテルは、このIPコアが以前のリリースに含まれていた場合、現在のバージョンのインテルQuartus Primeプロ・エディション開発ソフトウェアが以前のバージョンの各IPコアをコンパイルすることを検証します。インテルは、この検証の例外をインテルIP Release Noteでレポートするか、またはインテルQuartus Primeプロ・エディションのIP Updateツールで検証の例外を明確にします。インテルは、以前のリリースより古いIPコアバージョンでのコンパイルは検証しません。
1.4. デバイスファミリーのサポート
次の用語は、インテルFPGA IP コアのデバイスサポートのレベルを定義しています。
- Advance support - IPコアは、このデバイスファミリーのシミュレーションおよびコンパイルに使用可能です。タイミングモデルには、レイアウト後の情報に基づいた遅延についての初期の技術的評価が含まれています。このタイミングモデルは、シリコンのテストが実際のシリコンとタイミングモデルの相関を改善するため、変更される可能性があります。このIPコアは、システム・アーキテクチャーおよびリソース使用率の調査、シミュレーション、ピンアウト、システム・レイテンシーの評価、基本的なタイミング評価 (パイプライン・バジェット)、I/O転送ストラテジー (データパス幅、バースト深度、I/O規格のトレードオフ) に使用できます。
- Preliminary support - IPコアは、このデバイスファミリー用の暫定タイミングモデルで検証されます。IPコアはデバイスファミリーの機能要件をすべて満たしていますが、タイミング解析は実施中である場合があります。よって、量産デザインでの使用には注意が必要です。
- Final support - IPコアは、このデバイスファミリー用の最終タイミングモデルで検証されます。IPコアはデバイスファミリーの機能要件およびタイミング要件をすべて満たしており、量産デザインで使用可能です。
デバイスファミリー |
サポートのレベル |
---|---|
インテルStratix 10 |
暫定サポート |
その他のデバイスファミリー |
サポートなし その他のデバイスファミリーのサポート情報については、インテルWebサイト上の Intel PCI Express SolutionsのWebページを参照してください。 |
1.5. 推奨スピードグレード
レーンレート |
リンク幅 |
インターフェイス幅 |
アプリケーション・クロック周波数 (MHz) |
推奨スピードグレード |
---|---|---|---|---|
Gen1 |
x1、x2、x4、x8、x16 |
256ビット |
125 |
-1、-2 |
Gen2 |
x1、x2、x4、x8、 |
256ビット |
125 |
-1、-2 |
x16 |
256ビット |
250 | -1、-2 | |
Gen3 |
x1, x2, x4 |
256ビット |
125 |
-1、-2 |
x8 |
256ビット |
250 |
-1、-2 |
1.6. パフォーマンスおよびリソース使用率
Avalon-MMインテルStratix 10バリアントには、ソフトロジックで実装されたAvalon-MM DMAブリッジが含まれています。強化されたプロトコルスタックのフロントエンドとして動作します。次のリソース使用率の表は、Gen1 x1およびGen3 x8 Simple DMAの動的に生成されたデザイン例の結果を示しています。
結果は、インテルQuartus Primeプロ・エディション開発ソフトウェアの現在のバージョンのものです。M20Kメモリーブロックを除いて、数値は最も近い50に切り上げられます。
バリアント |
一般的なALM |
M20Kメモリーブロック1 |
ロジックレジスター |
|
---|---|---|---|---|
Gen1 x1 |
3,018 |
64 |
4,690 | |
Gen3 x8 | 15,976 | 69 | 32,393 |
1.7. トランシーバー・タイル
タイル | デバイスタイプ | チャネル・ケイパビリティー | チャネルハードIPアクセス | |
---|---|---|---|---|
チップ間 | バックプレーン | |||
Lタイル | GX | 26 Gbps (NRZ) | 12.5 Gbps (NRZ) | PCIe Gen3x16 |
Hタイル | GX | 28.3 Gbps (NRZ) | 28.3 Gbps (NRZ) | PCIe Gen3x16 |
Eタイル | GXE |
30 Gbps (NRZ)、 56 Gbps (PAM-4) |
30 Gbps (NRZ), 56 Gbps (PAM-4) |
100G Ethernet |
LタイルおよびHタイル
LおよびHの両方のトランシーバー・タイルには、4つのトランシーバー・バンクが含まれ、合計24のデュプレックス・チャネル、8つのATX PLL、8つのfPLL、8つのCMU PLL、1つのPCIeハードIPブロック、および関連する入力リファレンスおよびトランスミッター・クロック・ネットワークが含まれています。 LおよびHトランシーバー・タイルには、各チャネルに10GBASE-KR/40GBASE-KR4 FECブロックも含まれています。
Lタイルには、最大26 Gbpsチップ間または12.5 Gbpsバックプレーン・アプリケーションをサポートする、トランシーバー・チャネルがあります。Hタイルには、28 Gbpsアプリケーションをサポートするトランシーバー・チャネルがあります。Hタイルチャネルは、ギガビット対応のGPON (パッシブ・オプティカル・ネットワーク) の高速ロック時間をサポートします。
インテルStratix 10 GX/SXデバイスには、LタイルまたはHタイルが組み込まれています。パッケージの移行は、LタイルバリアントからHタイルバリアントへのインテルStratix 10 GX/SXで使用可能です。
Eタイル
Eタイルは、PAM-4シグナリングで56 Gbps、またはNRZシグナリングで最大30 Gbpsのバックプレーンをサポートするようにデザインされています。Eタイルには、 PCIe* ハードIPブロックは含まれていません。
1.8. PCI Express IPコア・パッケージのレイアウト
インテルStratix 10デバイスには、個別のトランシーバー・タイルに実装された高速トランシーバーがあります。トランシーバー・タイルは、デバイスの左側と右側にあります。
各24チャネル・トランシーバーのLまたはHタイルには、強化されたロジックで実装された1つのx16 PCIe IPコアが含まれています。次の図は、インテルStratix 10デバイス内のPCIe IPコアのレイアウトを示しています。LタイルおよびHタイルはどちらもオレンジ色です。Eタイルは緑色で示されています。
- インテルStratix 10移行デバイスには、インテルArria 10移行デバイスと一致する2つのLタイルが含まれています。
- インテルStratix 10 TXデバイスは、EタイルおよびHタイルの組み合わせを使用します。
- 5つのEタイルは、57.8G PAM-4および28.9G NRZバックプレーンをサポートします。
- 1つのHタイルは、最大28.3Gバックプレーンおよび最大Gen3 x16の PCIe* をサポートします。
- インテルStratix 10 TXデバイスは、EタイルおよびHタイルの組み合わせを使用します。
- 3つのEタイルは、57.8G PAM-4および28.9G NRZバックプレーンをサポートします。
- 1つのHタイルは、最大28.3Gバックプレーンおよび最大Gen3 x16の PCIe* をサポートします。
- インテルStratix 10 TXデバイスは、EタイルおよびHタイルの組み合わせを使用します。
- 1つのEタイルは、57.8G PAM-4および28.9G NRZバックプレーンをサポートします。
- 2つのHタイルは、最大28.3Gバックプレーンおよび最大Gen3 x16の PCIe* をサポートします。
1.9. チャネルの可用性
PCIeハードIPチャネルの制限
各LタイルまたはHタイルのトランシーバー・タイルには、1つのPCIeハードIPブロックが含まれています。次の表および図は、可能なPCIeハードIPチャネル・コンフィグレーション、使用できないチャネルの数、および他のプロトコルで使用可能なチャネルの数を示しています。例えば、PCIe x4バリアントは4つのチャネルを使用し、4つの追加チャネルは使用できません。
PCIeハードIPのコンフィグレーション | 使用できないチャネルの数 | 使用可能なチャネル |
---|---|---|
PCIe x1 | 7 | 16 |
PCIe x2 | 6 | 16 |
PCIe x4 | 4 | 16 |
PCIe x8 | 0 | 16 |
PCIe x16 | 0 | 8 |
次の表は、すべてのトランシーバー・チャネルを、使用可能なタイルのPCIeハードIPチャネルにマッピングしています。
タイル・チャネル・シーケンス | PCIeハードIPチャネル | I/Oバンク内のインデックス | 左下のタイルバンク番号 | 左上のタイルバンク番号 | 右下のタイルバンク番号 | 右上のタイルバンク番号 |
---|---|---|---|---|---|---|
23 | 該当なし | 5 | 1F | 1N | 4F | 4N |
22 | 該当なし | 4 | 1F | 1N | 4F | 4N |
21 | 該当なし | 3 | 1F | 1N | 4F | 4N |
20 | 該当なし | 2 | 1F | 1N | 4F | 4N |
19 | 該当なし | 1 | 1F | 1N | 4F | 4N |
18 | 該当なし | 0 | 1F | 1N | 4F | 4N |
17 | 該当なし | 5 | 1E | 1M | 4E | 4M |
16 | 該当なし | 4 | 1E | 1M | 4E | 4M |
15 | 15 | 3 | 1E | 1M | 4E | 4M |
14 | 14 | 2 | 1E | 1M | 4E | 4M |
13 | 13 | 1 | 1E | 1M | 4E | 4M |
12 | 12 | 0 | 1E | 1M | 4E | 4M |
11 | 11 | 5 | 1D | 1L | 4D | 4L |
10 | 10 | 4 | 1D | 1L | 4D | 4L |
9 | 9 | 3 | 1D | 1L | 4D | 4L |
8 | 8 | 2 | 1D | 1L | 4D | 4L |
7 | 7 | 1 | 1D | 1L | 4D | 4L |
6 | 6 | 0 | 1D | 1L | 4D | 4L |
5 | 5 | 5 | 1C | 1K | 4C | 4K |
4 | 4 | 4 | 1C | 1K | 4C | 4K |
3 | 3 | 3 | 1C | 1K | 4C | 4K |
2 | 2 | 2 | 1C | 1K | 4C | 4K |
1 | 1 | 1 | 1C | 1K | 4C | 4K |
0 | 0 | 0 | 1C | 1K | 4C | 4K |
PCIeソフトIPチャネルの使用
サードパーティー・ベンダーから入手可能なPCI ExpressソフトIP PIPE-PHYコアは、上記チャネル使用制限の対象ではありません。PCI ExpressのソフトIPコアの詳細については、 インテルFPGA > 製品 > Intellectual Property を参照してください。
2. クイック・スタート・ガイド
インテルQuartus Primeプロ・エディションを使用すると、 PCI Express* IPコア用のAvalon-MMインテルStratix 10ハードIPの簡単なDMAデザイン例を生成できます。生成されたデザイン例は、指定したパラメーターを反映しています。インテルQuartus Primeプロ・エディション開発ソフトウェア内でのシミュレーションおよびコンパイルに必要なファイルを自動的に作成します。コンパイル済みのデザインを、インテルStratix 10-GX Development Boardにダウンロードできます。カスタム・ハードウェアにダウンロードするには、 インテル® Quartus® Prime Settingsファイル (.qsf) を正しいピンの割り当てで更新します。
2.1. デザイン・コンポーネント
2.2. ディレクトリー構造
2.3. デザイン例の生成
- インテルQuartus Primeプロ・エディション開発ソフトウェアで、新しいプロジェクトを作成します (File > New Project Wizard)。
- Directory、Name、およびTop-Level Entityを指定します。
- Project Typeで、デフォルト値のEmpty projectを受け入れ、Nextをクリックします。
- Add FilesでNextをクリックします。
- Familyの下のFamily, Device & Board Settingsで、 Intel® Stratix® 10 (GX/SX/MX/TX) およびデザインのTarget Deviceを選択します。
- Finishをクリックします。
- IP Catalogで、Avalon-MM Intel® Stratix® 10 Hard IP for PCI Express* を配置および追加します。
- New IP VariantダイアログボックスでIPの名前を指定します。Createをクリックします。
- IP Settingsタブで、IPバリエーションのパラメーターを指定します。
-
Example Designsタブで、次の選択を行います。
-
Available Example Designsで、DMAを選択します。
注: DMAデザイン例は、 Avalon-MM Settingsタブで、Enable Avalon-MM DMAをオンにした場合にのみ使用可能です。注: Enable Avalon-MM DMAをオンにしない場合でも、PIOまたはSimple DMAのデザイン例を選択できます。
- Example Design Filesで、SimulationおよびSynthesisのオプションをオンにします。これらのシミュレーションまたは合成ファイルが必要ない場合は、対応するオプションをオフのままにすると、デザイン例の生成時間が大幅に短縮されます。
- Generated HDL Formatでは、現在のリリースではVerilogのみが使用可能です。
-
Target Development Kitでは、適切なオプションを選択します。
注: Noneを選択した場合、生成されたデザイン例は、上記の手順5で指定したデバイスをターゲットにします。ハードウェアでデザインをテストする場合は、.qsf ファイルで適切なピンの割り当てを行います。Pin Plannerツールを使用して、ピンの割り当てを行うこともできます。
-
Available Example Designsで、DMAを選択します。
-
Generate Example Designを選択し、シミュレーションしてハードウェアにダウンロードできるデザイン例を作成します。インテルStratix 10開発ボードのいずれか1つを選択すると、そのボード上のデバイスはデバイスが異なる場合、以前に
インテル®
Quartus® Primeプロジェクトで選択されたデバイスを上書きします。プロンプトでデザイン例のディレクトリーを指定するように求められたら、デフォルトのディレクトリー、
<example_design>/ pcie_s10_hip_avmm_bridge_0_example_designを受け入れるか、または別のディレクトリーを選択できます。
図 16. デザイン例のタブインテルStratix 10のデザイン例を生成すると、pcie_s10_hip_avmm_bridge_0_example_designディレクトリーに、recommended_pinassignments_s10.txt というファイルが作成されます。2
- Finishをクリックします。プロンプトが表示されたら .ip ファイルを保存できますが、デザイン例を使用できるようにする必要はありません。
- プロンプト、Recent changes have not been generated. Generate now? では、上記の手順9で指定したIPコア・バリエーションのシミュレーションおよび合成用のファイルを作成できます。生成したデザイン例のみを使用したい場合は、Noをクリックします。
- 既存のプロジェクトを閉じます。
- デザイン例のプロジェクトを開きます。
- デザイン例のプロジェクトをコンパイルして、完全なデザイン例用の .sof ファイルを生成します。このファイルは、ハードウェア検証を実行するために、ボードにダウンロードするものです。
- デザイン例のプロジェクトを閉じます。
2.4. デザイン例のシミュレーション
- テストベンチ・シミュレーション・ディレクトリーの pcie_example_design_tb を変更します。
- 選択したシミュレーターでシミュレーション・スクリプトを実行します。下の表を参照してください。
- 結果を分析します。
シミュレーター | 作業ディレクトリー | 説明 |
---|---|---|
ModelSim* | <example_design>/pcie_example_design_tb/pcie_example_design_tb/sim/mentor/ |
|
VCS* | <example_design>/pcie_example_design_tb/pcie_example_design_tb/sim/synopsys/vcs |
|
NCSim* | <example_design>/pcie_example_design_tb/pcie_example_design_tb/sim/cadence |
|
Xcelium* Parallel Simulator | <example_design>/pcie_example_design_tb/pcie_example_design_tb/sim/xcelium |
|
- DUT Endpointの非バーストAvalon-MMマスター・インターフェイスを使用して、エンドポイント・メモリーに書き込みます。
- DUT Endpointの非バーストAvalon-MMマスター・インターフェイスを使用して、エンドポイント・メモリーから読み出します。
- shmem_chk_ok タスクを使用してデータを検証します。
- ホストメモリー内の PCIe* アドレス空間へのMRd要求を実行するようDMAコントローラーに指示して、Endpoint DMAコントローラーに書き込みます。
- ホストメモリー内の PCIe* アドレス空間へのMWr要求を実行するようDMAコントローラーに指示して、Endpoint DMAコントローラーに書き込みます。このMWrは、前のMRdからのデータを使用します。
- shmem_chk_ok タスクを使用してデータを検証します。
エラーが発生しなかった場合、「Simulation stopped due to successful completion」とシミュレーションがレポートします。

2.5. デザイン例のコンパイルおよびデバイスのプログラム
- <project_dir>/pcie_s10_hip_avmm_bridge_0_example_design/ に移動し、pcie_example_design.qpf を開きます。
- Processingメニューで、Start Compilationをクリックします。
- デザインが正常にコンパイルされたら、Programmerを使用してターゲットデバイスをプログラムします。
2.6. Linuxカーネルドライバーのインストール
- 100回の書き込みおよび読み出しを実行する PCIe* リンクテスト
- メモリー空間DWORDの読み出しおよび書き込み3
- Configuration Space DWORD読み出しおよび書き込み
さらに、ドライバーを使用して、次のパラメーターの値を変更できます。
- 使用されているBAR
- 必要なデバイスのBDF (バス、デバイス、ファンクション) 番号を指定した、デバイス選択
次の手順を完了して、カーネルドライバーをインストールしてください。
- デザイン例生成ディレクトリーの下の ./software/kernel/linux に移動します。
-
install、load、および unload ファイル上の権限を変更します。
$ chmod 777 install load unload
-
ドライバーをインストールします。
$ sudo ./install
-
ドライバーのインストールを確認します。
$ lsmod | grep intel_fpga_pcie_drv予想される結果は次のとおりです。
intel_fpga_pcie_drv 17792 0
-
Linuxが
PCIe*
デザイン例を認識することを確認します。
$ lspci -d 1172:000 -v | grep intel_fpga_pcie_drv注: Vendor IDを変更した場合は、このコマンドでインテルのVendor IDを新しいVendor IDに置き換えます。予想される結果は次のとおりです。
Kernel driver in use: intel_fpga_pcie_drv
2.7. デザイン例アプリケーションの実行
- デザイン例ディレクトリーの下の ./software/user/example に移動します。
-
デザイン例のアプリケーションをコンパイルします。
$ make
-
テストを実行します。
$ sudo ./intel_fpga_pcie_link_test
手動または自動モードで インテル® FPGA IP PCIe* のリンクテストを実行することができます。
- 自動モードでは、アプリケーションが自動的にデバイスを選択します。テストでは、Vendor IDを照合して、BDFが最も低いインテルStratix 10 PCIe* デバイスを選択します。テストでは、使用可能な最も低いBARも選択されます。
- 手動モードでのテストは、バス、デバイス、ファンクション番号およびBARを問い合わせます。
インテルStratix 10 GX Development Kitでは、次のコマンドを入力してBDFを決定できます。$ lspci -d 1172
-
自動モードおよび手動モードのサンプルのトランスクリプトは次のとおりです。
Intel FPGA PCIe Link Test - Automatic Mode Version 2.0 0: Automatically select a device 1: Manually select a device *************************************************** >0 Opened a handle to BAR 0 of a device with BDF 0x100 *************************************************** 0: Link test - 100 writes and reads 1: Write memory space 2: Read memory space 3: Write configuration space 4: Read configuration space 5: Change BAR 6: Change device 7: Enable SR-IOV 8: Do a link test for every enabled virtual function belonging to the current device 9: Perform DMA 10: Quit program *************************************************** > 0 Doing 100 writes and 100 reads . . Number of write errors: 0 Number of read errors: 0 Number of DWORD mismatches: 0
Intel FPGA PCIe Link Test - Manual Mode Version 1.0 0: Automatically select a device 1: Manually select a device *************************************************** > 1 Enter bus number: > 1 Enter device number: > 0 Enter function number: > 0 BDF is 0x100 Enter BAR number (-1 for none): > 4 Opened a handle to BAR 4 of a device with BDF 0x100
3. インターフェイスの概要
- PCIe TLPを標準のメモリーマップド読み出しおよび書き込みに変換するAvalon®-MMインターフェイス
- 大きなデータブロックを転送するDMAインターフェイス注: DMA動作は、アプリケーション・インターフェイス幅が256ビットの場合にのみ使用できます。64ビットの場合は使用できません。IP Settings、System Settings、最後にApplication interface widthの順に選択して、インターフェイス幅を選択します。
- 1つまたは複数のPCIeリンクを介してデータを転送する標準PCIeシリアル・インターフェイス
- 割り込み、クロッキング、リセット、テスト用のシステム・インターフェイス
- ランタイム時にコンフィグレーション・スペース・レジスターの値を動的に変更するオプションのリコンフィグレーション・インターフェイス
- デバッグ用のオプションのステータス・インターフェイス
3.1. ディスクリプター・コントローラーが内部的にインスタンス化されている場合のAvalon-MM DMAインターフェイス
次の図は、ソフトロジックで実装されたAvalon-MM DMAブリッジを示しています。Avalon-STインターフェイスを介してPCIeのハードIPにインターフェイス接続します。
次の図では、 Avalon-ST接続と、BAR0非バーストマスターからDescriptor Controllerスレーブへの接続は、内部接続となっています。黒い破線はそれらの内部接続を示しています。Descriptor Controller Masterと非バーストスレーブ間の接続、およびRead DMA Data MasterとDescriptor Table Slave間の接続は、Platform Designer内で行われます。青い線はそれらの接続を示しています。
この図の中の番号は、DMA書き込みフローにおける次の手順を示しています。
- CPUは、Descriptor Controller Slave内のレジスターに書き込み、DMAを開始します。
- Descriptor Controllerは、Read Data Moverにディスクリプター・テーブルをフェッチするように指示します。
- Read Data Moverは、ディスクリプター・テーブルをPCIe Write Descriptor Table Slaveに転送します。
- Descriptor Controllerは、Write Data Moverにデータを転送するように指示します。
- Write Data Moverは、FPGAからシステムメモリーにデータを転送します。
- Write Data Moverは、done ビットを使用して、Descriptor Controllerにデータ転送の完了を通知します。
- Descriptor Controller Masterは、システムメモリー内のディスクリプター・テーブルのステータスを更新します。
- Descriptor Controller Masterは、MSI割り込みをホストに送信します。
この図の中の番号は、DMA読み出しフローにおける次の手順を示しています。
- CPUは、Descriptor Controller Slave内のレジスターに書き込み、DMAを開始します。
- Descriptor Controllerは、Read Data Moverにディスクリプター・テーブルをフェッチするように指示します。
- Read Data Moverは、ディスクリプター・テーブルをPCIe Read Descriptor Table Slaveに転送します。
- Descriptor Controllerは、Read Data Moverにデータを転送するように指示します。
- Read Data Moverは、FPGAからシステムメモリーにデータを転送します。
- Read Data Moverは、done ビットを使用して、Descriptor Controllerにデータ転送の完了を通知します。
- Descriptor Controller Masterは、システムメモリー内のディスクリプター・テーブルのステータスを更新します。
- Descriptor Controller Masterは、MSI割り込みをホストに送信します。
オプションのDescriptor Controllerがブリッジに含まれている場合、Avalon-MMブリッジには、DMA機能を実装するための次の Avalon® インターフェイスが含まれます。
- PCIe Read DMA Data Master (rd_dma): これは256ビット幅の書き込み専用Avalon-MMマスター・インターフェイスで、rd_dma* プリフィクスで最大16サイクルのバーストをサポートします。Read Data Moverは、このインターフェイスを使用して、 PCIe* システムのメモリー空間から読み出したデータブロックを高スループットで書き込みます。このインターフェイスは、ディスクリプターをReadおよびWrite Descriptorテーブルスレーブと Avalon® -MMに接続されているその他のスレーブ・インターフェイスに書き込みます。
- PCIe Write DMA Data Master (wr_dma): この読み出し専用インターフェイスは、データブロックをAvalon-MMドメインからPCIeシステムのメモリー空間に高スループットで転送します。バーストAvalon-MMマスター・インターフェイスで読み出しトランザクションを駆動します。また、Avalon-MM読み出しからのデータペイロードを使用して、PCIe Memory Write (Mwr) TLPを作成します。MWr TLPをハードIPに転送して、リンクで送信します。Write Data Moverモジュールは、転送を必要な数のAvalon-MMバースト読み出しトランザクションとPCIe MWr TLPに分解します。これは、wr_dma プリフィクスの256ビットのバーストAvalon-MMインターフェイスです。
- PCIe Read Descriptor Table Slave (rd_dts): 最大16サイクルの書き込みバーストをサポートする256ビットのAvalon-MMスレーブ・インターフェイスです。PCIe Read DMA Data Masterは、このテーブルにディスクリプターを書き込みます。Read Data Moverは通常、他のAvalon-MMスレーブにも接続するため、この接続はDMAブリッジの外部で行われます。このインターフェイスのプリフィクスは rd_dts です。
- PCIe Write Descriptor Table Slave (wr_dts): 最大16サイクルの書き込みバーストをサポートする256ビットのAvalon-MMスレーブ・インターフェイスです。PCIe Read DMA Data Masterは、このテーブルにディスクリプターを書き込みます。バースト・マスター・インターフェイスもPCIe Read Data Moverの送信先に接続する必要のある場合があるため、PCIe Read DMA Data Masterは、DMAブリッジの外部でこのインターフェイスに接続する必要があります。このインターフェイスのプリフィクスは wr_dts です。
- Descriptor Controller Master (DCM): 書き込み専用機能を備えた32ビットの非バーストAvalon-MMマスター・インターフェイスです。単一のDWORD DMAステータス情報をホストに送信する非バーストAvalon-MMスレーブを制御します。このインターフェイスのプリフィクスは wr_dcm および rd_dcm です。
- Descriptor Controller Slave (DCS): 読み出しおよび書き込みアクセスを備えた32ビットの非バーストAvalon-MMスレーブ・インターフェイスです。ホストは、Descriptor Controllerをプログラムするために、BAR0 Non-Bursting Avalon-MM Masterを介してこのインターフェイスにアクセスします。注: これは、Avalon-MM Bridgeのトップレベルのインターフェイスではありません。BAR0に接続するため、BAR0を使用して他のAvalon-MMスレーブ・インターフェイスにアクセスすることはできません。
3.2. ディスクリプター・コントローラーが外部的にインスタンス化されている場合のAvalon-MM DMAインターフェイス
外部DMAディスクリプター・コントローラーを使用すると、柔軟性が向上します。デザイン例のDMA Descriptor Controllerを修正するかまたは置き換えをして、システム要件を満たすことができます。次の理由により、DMA Descriptor Controllerの変更が必要になる場合があります。
- マルチチャネル動作を実装するため
- リンクリストとしてディスクリプターを実装する、またはカスタムDMAプログラミング・モデルを実装するため
- システム (ホスト側) メモリーではなく、ローカルメモリーからディスクリプターをフェッチするため
このバリアントに含まれるDMAロジックにインターフェイス接続するには、カスタムDMAディスクリプター・コントローラーが次の機能を実装する必要があります。
- PCIe Read DMA Data MoverおよびPCIe Write DMA Data Moverにディスクリプターを提供する必要があります。
- DMA Avalon-MM書き込み (wr_dcm) および読み出し (rd_dcm)マスターが提供するステータスを処理する必要があります。
次の図は、カスタム・ディスクリプター・コントローラーがPCIe Read DMAおよびWrite DMA Data Moverを駆動する場合のAvalon-MM DMA Bridgeを示しています。
このコンフィグレーションには、PCIe Read DMAおよびWrite DMA Data Moverが含まれます。カスタムDMAディスクリプター・コントローラーは、次のData Moverインターフェイスに接続する必要があります。
- PCIe Read DMA Control Sink: 160ビットのAvalon-STシンク・インターフェイスです。カスタムDMAディスクリプター・コントローラーは、このバス上のディスクリプター・テーブル・エントリーを駆動します。インターフェイスのプリフィクスは rd_ast_rx* です。
- PCIe Write DMA Control Sink: 160ビットのAvalon-STシンク・インターフェイスです。カスタムDMAディスクリプター・コントローラーは、このバス上の書き込みテーブルエントリーを駆動します。このインターフェイスのプリフィクスは wr_ast_rx* です。
- PCIe Read DMA Status Source: Read Data Moverは、このインターフェイス上のカスタムDMAディスクリプター・コントローラーにステータスをレポートします。このインターフェイスのプリフィクスは rd_ast_tx_* です。
- PCIe Write DMA Status Source: Write Data Moverは、このインターフェイス上のカスタムDMAディスクリプター・コントローラーにステータスをレポートします。このインターフェイスのプリフィクスは wr_ast_tx_* です。
3.3. その他のAvalon-MMインターフェイス
このバリアントは、PCIeリンクで交換されたTLP間をAvalon-MMドメインのメモリーマップド読み出しおよび書き込みに変換することにより、PCIe Protocolの煩雑さを解消します。次の図は、ブリッジがPCIe Read DMAおよびWrite DMA Data Moverをイネーブルしていない場合に使用可能な、Avalon-MM DMA Bridgeインターフェイスを示しています。
3.3.1. Avalon-MM Masterインターフェイス
サポートされている6つのBARのそれぞれに1つずつ、コンフィグレーション時に最大6つのAvalon-MM Masterインターフェイスをイネーブルできます。イネーブルされた各Avalon-MM Masterインターフェイスは、コンポーネントGUI内でバーストまたは非バーストに設定できます。バーストAvalon-MM Masterは高スループット転送用にデザインされており、アプリケーション・インターフェイスのデータバス幅は256ビットまたは64ビットのいずれかです。非バーストAvalon-MM Masterは、バイトイネーブル制御または32ビットのAvalon-MM Slaveの制御に細かい粒度を必要とする小さな転送用にデザインされています。このインターフェイスを構成する信号のプリフィクスは rxm_bar<bar_num>* です。
Avalon-MM Masterのタイプ | データバス幅 | 最大バーストサイズ | バイトイネーブルの粒度 | 最大の未処理の読み出し要求 |
---|---|---|---|---|
非バースト | 32ビット | 1サイクル | Byte | 1 |
バースト | 256ビット | 16サイクル | DWord4 |
32 |
バースト | 64ビット | 64サイクル | Byte | 16 |
3.3.2. Avalon-MM Slaveインターフェイス
Avalon-MM Slaveモジュールには、使用可能な2つのバージョンがあります。バーストAvalon-MM Slaveは高スループット転送用であり、アプリケーション・インターフェイスのデータバス幅は256ビットまたは64ビットのいずれかです。非バーストAvalon-MM Slaveは、バイトイネーブル制御に細かい粒度を必要とする小さな転送用です。非バーストAvalon-MM Slaveインターフェイスのプリフィクスは txs* です。バーストAvalon-MM Slaveインターフェイスのプリフィクスは hptxs_* です。
Avalon-MM Slaveのタイプ | データバス幅 | 最大バーストサイズ | バイトイネーブルの粒度 | 最大の未処理の読み出し要求 |
---|---|---|---|---|
非バースト | 32ビット | 1サイクル | Byte | 1 |
バースト | 256ビット | 16サイクル | DWord |
32 |
バースト | 64ビット | 64サイクル | Byte | 16 |
バーストAvalon-MM Slaveは、列挙後にシステム・ソフトウェアによって設定される最大ペイロードサイズおよび読み出し要求の最大サイズの値に従います。必要に応じて、1つのAvalon-MMバースト・トランザクションに対して複数のPCIe TLPを生成します。
バーストカウント | 最大ペイロードサイズまたは読み出し要求の最大サイズ | ||
---|---|---|---|
128バイト | 256バイト | 512バイト | |
1から4 | 1個のTLP | 1個のTLP | 1個のTLP |
5から8 | 2個のTLP | 1個のTLP | 1個のTLP |
9から12 | 3個のTLP | 2個のTLP | 1個のTLP |
13から16 | 4個のTLP | 2個のTLP | 1個のTLP |
3.3.3. Control Register Access (CRA) Avalon-MMスレーブ
このオプションの32ビットAvalon-MM Slaveは、Control および Status レジスターへのアクセスを提供します。Avalon-MMスレーブのアドレス・マッピングをイネーブルする場合、または割り込みが実装されている場合は、このインターフェイスをイネーブルする必要があります。
このインターフェイスのアドレスバス幅は15ビットに固定されています。このインターフェイスのプリフィクスは cra* です。
3.4. クロックおよびリセット
3.5. システム・インターフェイス
TXおよびRXシリアルデータ
この差動シリアル・インターフェイスは、Root PortとEndpoint間の物理リンクです。PCIe IPコアは、1、2、4、8、または16レーンをサポートします。 2.5 GT/sのGen1、5 GT/sのGen2、8 GT/sのGen3がサポートされています。各レーンには、TXおよびRXの差動ペアが含まれています。データは使用可能なすべてのレーンにストライプ化されます。
PIPE
PCIe IPコアとPHY間のパラレル・インターフェイスです。PIPEデータバスは32ビットです。各レーンには、4つの制御/データビットおよびその他の信号が含まれています。シリアル化される前にTLPデータを伝送します。シミュレーションでのみ使用でき、デバッグの可視性が向上します。
割り込み
Stratix® 10 Avalon-MM DMA Bridgeは、Interrupt Disable ビット、Configuration Space Command レジスターのビット[10] が1'b0に設定されている場合に、レガシー割り込みを生成できます。
Avalon-MM Bridgeは、トリガーイベントに応答してMSIを生成しません。ただし、Applicationは、Avalon-MMスレーブ・インターフェイスの1つによって、単一のDWORDメモリー書き込みであるMSI TLPを作成する場合があります。
MSIをトリガーするには、Applicationは、msi_intfc [79:64] ビットに示されたデータを使用して、msi_intfc [63:0] ビットに示されたアドレスへの書き込みを実行します。下位ビットは特定のMSI番号に置き換えられます。
Applicationは、単一のDWORDメモリー書き込みであるMSI-X TLPを実装することもできます。MSI-X Capability構造は、システムメモリーに格納されているMSI-Xテーブル構造およびMSI-Xペンディング・ビット・アレイ (PBA) 構造を指します。このスキームは、割り込みのすべての制御およびステータス情報を含むMSI機能構造とは異なります。
Hard IP Reconfiguration
このオプションの Avalon® -MMインターフェイスを使用すると、ランタイム時に読み出し専用のConfiguration Spaceレジスターの値を動的に更新できます。これは、コンポーネントGUI内で、Enable dynamic reconfiguration of PCIe read-only registers がイネーブルになっている場合に使用可能です。PCIe Link Inspectorがイネーブルになっている場合、Hard IP Reconfigurationインターフェイスを介したアクセスはサポートされません。Link InspectorはHard IP Reconfigurationインターフェイスを排他的に使用し、Link InspectorとIPの最上位にエクスポートされるHard IP Reconfigurationインターフェイスとの間のアービトレーションはありません。
ハードIPステータス
このオプションのインターフェイスには、デバッグに役立つ次の信号が含まれています。
- リンクステータス信号
- 割り込みステータス信号
- TXおよびRXパリティーエラー信号
- 修正可能なエラー信号および修正不可能なエラー信号
4. パラメーター
パラメーター |
値 |
説明 |
---|---|---|
Design Environment |
Standalone
System |
IPが存在する環境を識別します。
|
パラメーター |
値 |
説明 |
---|---|---|
Application Interface Type |
Avalon-MM |
アプリケーション層へのインターフェイスを選択します。 |
Application Interface Width |
256-bit 64-bit |
アプリケーション層へのインターフェイスの幅を選択します。 注: DMA動作は、このパラメーターが256-bitに設定されている場合にのみサポートされます。
|
Hard IP Mode |
Gen3x8, 256-bit interface, 250 MHz Gen3x4, 256-bit interface, 125 MHz Gen3x2, 256-bit interface, 125 MHz Gen3x1, 256-bit interface, 125 MHz Gen2x16, 256-bit interface, 250 MHz Gen2x8, 256-bit interface, 125 MHz Gen2x4, 256-bit interface, 125 MHz Gen2x2, 256-bit interface, 125 MHz Gen2x1, 256-bit interface, 125 MHz Gen1x16, 256-bit interface, 125 MHz Gen1x8, 256-bit interface, 125 MHz Gen1x4, 256-bit interface, 125 MHz Gen1x2, 256-bit interface, 125 MHz Gen1x1, 256-bit interface, 125 MHz 選択したApplication Interface Widthが64ビットの場合、使用可能なHard IP Modeのコンフィグレーションは次のとおりです。
|
次の要素を選択します。
FPGAファブリックに実装されたハードIPトランザクション層とアプリケーション層との間のデータ・インターフェイスの幅。 注: 選択したModeが選択したコンフィグレーションで使用できない場合、エラーメッセージがMessageペインに表示されます。
|
Port type |
Native Endpoint Root Port |
ポートタイプを指定します。 Endpointは、Type 0 Configuration Spaceにパラメーターを格納します。Root Portは、Type 1 Configuration Spaceにパラメーターを格納します。 Root Portテストベンチは、現在のリリースでは使用できません。Root Portを選択した場合は、独自のテストベンチを作成する必要があります。 |
4.1. Avalon-MMの設定
パラメーター | 値 | 説明 |
---|---|---|
Avalon-MM address width |
32-bit 64-bit |
Avalonアドレスドメイン内のAvalon-MMスレーブにアクセスするAvalon-MM RXマスターポートのアドレス幅を指定します。 Enable Avalon-MM DMAまたはEnable non-bursting Avalon-MM slave interface with individual byte access (TXS) を選択する場合、この値は64に設定する必要があります。 |
Enable Avalon-MM DMA | On/Off | Onの場合、IPコアにはRead DMAおよびWrite DMAデータムーバーが含まれます。 |
Instantiate internal descriptor controller | Enabled/Disabled |
Onの場合、ディスクリプター・コントローラーはAvalon-MM DMAブリッジに含まれています。Offの場合、必要に応じて、ディスクリプター・コントローラーを別個の外部コンポーネントとして含める必要があります。内部ディスクリプター・コントローラーは、Root Portモードをサポートしていません。 |
Enable control register access (CRA) Avalon-MM slave port | On/Off |
特別なスレーブポートを使用して、インターコネクト・ファブリックからAvalon-MMブリッジレジスターへの読み出しおよび書き込みアクセスを可能にします。このオプションは、Requester/Completerバリアントには必須で、Completer Onlyバリアントにはオプションです。このオプションをイネーブルすると、Completer-Onlyの単一のDWORDバリエーションを除き、Avalon-MMブリッジレジスターへの読み出しおよび書き込みアクセスが可能になります。 |
Export interrupt conduit interfaces | On/Off | Onの場合、IPコアは内部割り込み信号を最上位RTLモジュールにエクスポートします。エクスポートされた信号は、MSI、MSI-X、およびレガシー割り込みをサポートします。 |
Enable hard IP status bus when using the Avalon-MM interface | On/Off | このオプションをOnにすると、最上位のバリアントに、リンク・トレーニングやステータスなどのデバッグに役立つ信号、およびエラー信号が含まれます。次の信号が、最上位のバリアントに含まれています。
|
Enable non-bursting Avalon-MM Slave interface with individual byte access (TXS) | On/Off | Onの場合、非バーストAvalon-MMスレーブ・インターフェイスがイネーブルになります。このインターフェイスは、制御およびステータスレジスターへのアクセスなどの低帯域幅アプリケーションに適しています。 |
Address width of accessible PCIe memory space (TXS) | 22-64 | 必要なビット数を指定して、PCIeアドレス空間にアクセスします。 (このパラメーターは、TXSスレーブがイネーブルの場合にのみ表示されます。) |
Enable high performance bursting Avalon-MM Slave interface (HPTXS) | On/Off | Onの場合、高性能Avalon-MMスレーブ・インターフェイスがイネーブルになります。このインターフェイスは、データブロックの転送などの高帯域幅アプリケーションに適しています。 |
Enable mapping (HPTXS) | On/Off |
32ビットのAvalon-MMスレーブデバイスのアドレスマッピングにより、システム・ソフトウェアは、PCI Expressアドレスドメインで非連続アドレスページを指定できます。すべての高性能32ビットAvalon-MMスレーブデバイスは、64ビットPCI Expressアドレス空間にマッピングされます。コンポーネントGUI内のAvalon-MM Settingsタブでは、アドレス・マッピング・ページの数およびサイズを選択できます。 最大10のアドレス・マッピング・ページがサポートされます。最小ページサイズは4 KBで、最大ページサイズは4 GBです。 アドレスマッピングをイネーブルすると、スレーブ・アドレス・バスの幅が、アドレス・マッピング・ページに適合するのに必要な大きさになります。アドレスマッピングをディスエーブルすると、Avalon-MMスレーブ・アドレス・バスは64ビットに設定されます。Avalon-MMアドレスは、結果のPCIe TLPでそのまま使用されます。 |
Address width of accessible PCIe memory space (TXS) | 22-64 | 必要なビット数を指定して、PCIeアドレス空間にアクセスします。 (このパラメーターは、HPTXSスレーブがイネーブルの場合にのみ表示されます。) |
Number of address pages (HPTXS) | 1-512 pages | アドレス変換テーブルに使用可能なページ数を指定します。アドレスマッピングの詳細については、高性能Avalon-MM32ビットのスレーブモジュールのアドレスマッピングを参照してください。 |
4.2. ベース・アドレス・レジスター
パラメーター |
値 |
説明 |
---|---|---|
Type |
Disabled 64-bit prefetchable memory 32-bit non-prefetchable memory |
64ビットのプリフェッチ可能なメモリーを選択した場合、2つの連続するBARが結合されて、64ビットのプリフェッチ可能なBARが形成されます。より大きな番号のBARをDisabledに設定する必要があります。一般的なシステムでは、プリフェッチ不可の最大メモリーウィンドウは32ビットであるため、プリフェッチ不可の64ビットBARはサポートされていません。 プリフェッチ可能としてメモリーを定義することで、連続したデータを先にフェッチすることができます。メモリーのプリフェッチは、要求元が最初に要求されたデータよりも、より多くのデータを同じ領域から要求する場合に有利です。メモリーがプリフェッチ可能であることを指定する場合、メモリーに次の2つの属性が必要です。
注: 内部ディスクリプター・コントローラーがイネーブルの場合、BAR0は使用できません。
|
Size | 0-63 |
プラットフォーム・デザインは、マスターポートに接続されたスレーブのアドレス幅に基づいて、BARを自動的に決定します。 |
Enable burst capability for Avalon-MM Bar0-5 Master Port | On/Off | このBARに使用するAvalon-MMマスターのタイプを決定します。次の2つのタイプがあります。
|
4.3. デバイス識別レジスター
次の表は、 PCI* Configuration Header Space内の読み出し専用レジスターのデフォルト値を示しています。パラメーター・エディターを使用して、これらのレジスターの値を設定できます。ランタイム時に、オプションのHard IP Reconfigurationブロック信号を使用して、これらのレジスターの値を変更できます。
Hard IP Reconfigurationインターフェイスを使用してこれらのレジスターにアクセスするには、必ず次のフォーマットの hip_reconfig_address [20:0] に従ってください。詳細は、Hard IP Reconfigurationの項のHard IP Reconfiguration信号の表に指定されているとおりです。 下の表で指定されているアドレスオフセットを hip_reconfig_address [11:0] に使用し、PCIeスペースアクセス用に hip_reconfig_address [20] を1'b1に設定します。
レジスター名 |
デフォルト値 |
説明 |
---|---|---|
Vendor ID |
0x00001172 |
Vendor ID レジスターの読み出し専用値を設定します。このパラメーターは、PCI Express Base Specificationに従い、0xFFFFに設定することはできません。 アドレスオフセット: 0x000 |
Device ID |
0x00000000 |
Device ID レジスターの読み出し専用値を設定します。 アドレスオフセット: 0x000 |
Revision ID |
0x00000001 |
Revision ID レジスターの読み出し専用値を設定します。 アドレスオフセット: 0x008 |
Class code |
0x00000000 |
Class Code レジスターの読み出し専用値を設定します。 アドレスオフセット: 0x008 |
Subsystem Vendor ID |
0x00000000 |
PCI Type 0 Configuration Space内の Subsystem Vendor ID レジスターの読み出し専用値を設定します。このパラメーターは、PCI Express Base Specificationに従い、0xFFFFに設定することはできません。この値は、PCI-SIGによってデバイスメーカーに割り当てられます。この値は、Root Portのバリアントでのみ使用されます。 アドレスオフセット: 0x02C |
Subsystem Device ID |
0x00000000 |
PCI Type 0 Configuration Space内の Subsystem Device ID レジスターの読み出し専用値を設定します。この値は、Root Portのバリアントでのみ使用されます。 アドレスオフセット: 0x02C |
4.4. PCI ExpressおよびPCIケイパビリティーのパラメーター
4.4.1. デバイス・ケイパビリティー
パラメーター |
指定可能な値 |
デフォルト値 |
アドレス |
説明 |
---|---|---|---|---|
Maximum payload sizes supported |
128 bytes 256 bytes 512 bytes |
512バイト |
0x074 |
サポートされている最大ペイロードサイズを指定します。このパラメーターは、Device Capabilitiesレジスターの最大ペイロードサイズでサポートされているフィールドの読み出し専用値を設定します。 128バイトの読み出し要求サイズにより、一般的なシステムのレイテンシーが最も低くなります。 |
4.4.2. Link Capabilities
パラメーター |
値 |
説明 |
---|---|---|
Link port number (Root Port only) |
0x01 |
Link Capabilities レジスターのポート番号フィールドの読み出し専用値を設定します。このパラメーターはRoot Port専用です。変更はしないでください。 |
Slot clock configuration |
On/Off |
このオプションをOnにすると、システムがコネクターで提供するものと同じ物理リファレンス・クロックをEndpointが使用することを示します。Offの場合、IPコアはコネクター上のリファレンス・クロックの有無にかかわらず、独立したクロックを使用します。このパラメーターは、PCI Express Link Status レジスターのSlot Clock Configuration (ビット12) を設定します。 |
4.4.3. MSIおよびMSI-X Capabilities
パラメーター |
値 |
アドレス |
説明 |
---|---|---|---|
MSI messages requested |
1、2、4、8、16、32 |
0x050[31:16] |
アプリケーション層が要求できるメッセージの数を指定します。Message Control レジスターの Multiple Message Capable フィールドの値を設定します。 |
MSI-X Capabilities | |||
Implement MSI-X |
On/Off |
Onにすると、以下に示すパラメーターとともに、MSI-X機能構造が追加されます。 |
|
Bit Range | |||
Table size |
[10:0] |
0x068[26:16] |
システム・ソフトウェアはこのフィールドを読み出し、MSI-X Tableサイズである<n>を決定します。これは、<n–1>としてエンコードされます。例えば、戻り値2047は、テーブルサイズが2048であることを示しています。このフィールドは、MSI-X Capability Structure内の読み出し専用です。有効範囲は、0〜2047 (211) です。 |
Table offset |
[31:0] |
MSI-X Tableのベースを指します。Table BAR Indicator (BIR) の下位3ビットは、ソフトウェアによってゼロに設定され、64ビットのqwordにアライメントされたオフセットを形成します。このフィールドは読み出し専用です。 |
|
Table BAR indicator |
[2:0] |
メモリー空間にMSI-Xテーブルをマッピングするために、Configuration Space内の0x10から始まる機能のBARのどれを使用するかを指定します。このフィールドは読み出し専用です。有効範囲は0〜5です。 |
|
Pending bit array (PBA) offset |
[31:0] |
MSI-X PBAのベースを指す機能のベース・アドレス・レジスターの1つに含まれるアドレスからのオフセットとして使用されます。PBA BIRの下位3ビットは、ソフトウェアによってゼロに設定され、32ビットのqwordにアライメントされたオフセットを形成します。このフィールドは、MSI-X Capability Structure内では読み出し専用です。 5 |
|
Pending BAR indicator |
[2:0] |
Configuration Space内で0x10の開始に位置する、機能のBase Addressレジスターを指定します。これは、MSI-X PBAをメモリー空間にマッピングします。このフィールドは、MSI-X Capability Structureでは読み出し専用です。有効範囲は0〜5です。 |
4.4.4. スロット・ケイパビリティー
パラメーター |
値 |
説明 |
---|---|---|
Use Slot register |
On/Off |
このパラメーターは、Root Portモードでのみサポートされています。スロットがポートに実装されている場合、Root Portにはスロット・ケイパビリティーが必要です。スロットのステータスは、PCI Express Capabilities に記録されます。 スロットの特性を定義します。このオプションをオンにするには、 Enable slot capabilityを選択します。ビットの定義については、下の図を参照してください。 Avalon-MM DMAには適用されません。 |
Slot power scale |
0-3 |
Slot power limitに使用するスケールを指定します。次の係数が定義されています。
ハードウェアおよびファームウェアの初期化前のデフォルト値は、b'00です。このレジスターへ書き込むと、ポートが Set_Slot_Power_Limit Messageを送信する原因となります。 詳細については、PCI Express Base Specification Revisionの項6.9を参照してください。 |
Slot power limit |
0-255 |
Slot power scale valueと組み合わせて、スロットによって供給される電力の上限をワットで指定します。詳細については、PCI Express Base Specificationの項7.8.9を参照してください。 |
Slot number |
0-8191 |
スロット番号を指定します。 |
4.4.5. パワー・マネジメント
パラメーター |
値 |
説明 |
---|---|---|
Endpoint L0s acceptable latency |
Maximum of 64 ns Maximum of 128 ns Maximum of 256 ns Maximum of 512 ns Maximum of 1 us Maximum of 2 us Maximum of 4 us No limit |
このデザイン・パラメーターは、デバイスとルート・コンプレックス間の任意のリンクに対してL0sステートを終了する際に、デバイスが許容できる最大許容レイテンシーを指定します。これは、Device Capabilities Register (0x084) のEndpoint L0s許容レイテンシー・フィールドの読み出し専用値を設定します。 このEndpointは、L0sまたはL1ステートをサポートしていません。ただし、切り替えシステムでは、L0sおよびL1がイネーブルされたスイッチに接続されたリンクが存在する場合があります。このパラメーターは、システム・コンフィグレーション・ソフトウェアがシステム内のすべてのデバイスの許容レイテンシーおよび各リンクの終了待ち時間を読み出して、Active State Power Management (ASPM) をイネーブルできるリンクを判断できるように設定されています。この設定は、Root Portに対してはディスエーブルされています。 このパラメーターのデフォルト値は、64 nsです。この値は、ほとんどのデザインで安全な設定となります。 |
Endpoint L1 acceptable latency |
Maximum of 1 us Maximum of 2 us Maximum of 4 us Maximum of 8 us Maximum of 16 us Maximum of 32 us Maximum of 64 nsNo limit |
この値は、L1からL0ステートへの遷移において、Endpointが耐えられる許容レイテンシーを示しています。これは、Endpointの内部バッファリングの間接的な測定です。Device Capabilities Register のEndpoint L1許容レイテンシー・フィールドの読み出し専用値を設定します。 このEndpointは、L0sまたはL1ステートをサポートしていません。ただし、切り替えシステムでは、L0sおよびL1がイネーブルされたスイッチに接続されたリンクが存在する場合があります。このパラメーターは、システム・コンフィグレーション・ソフトウェアがシステム内のすべてのデバイスの許容レイテンシーおよび各リンクの終了待ち時間を読み出して、Active State Power Management (ASPM) をイネーブルできるリンクを判断できるように設定されています。この設定は、Root Portに対してはディスエーブルされています。 このパラメーターのデフォルト値は、1 µsです。この値は、ほとんどのデザインで安全な設定となります。 |
PCI Express* 用のインテルStratix 10 Avalon-STハードIPおよび PCI Express* 用のインテルStratix 10 Avalon-MMハードIPは、L1またはL2低電力ステートをサポートしていません。リンクがこのステートになった場合は、(例えば pin_perst をアサートすることによって) リセットを実行するとIPコアが低電力ステートを終了し、システムが回復します。
これらのIPコアは、ウェイクアップ・イベントをアップストリーム・デバイスに通知するメカニズムであるインバンドビーコンまたはサイドバンドWAKE#信号もサポートしていません。
4.4.6. Vendor Specific Extended Capability (VSEC)
パラメーター |
値 |
説明 |
---|---|---|
User ID register from the Vendor Specific Extended Capability |
カスタム値 |
Vendor Specific Extended Capabilityから16ビットのUser IDレジスターの読み出し専用値を設定します。このパラメーターはEndpointでのみ有効です。 |
4.5. コンフィグレーション、デバッグおよび拡張オプション
パラメーター |
値 |
説明 |
---|---|---|
Enable Hard IP dynamic reconfiguration of PCIe read-only registers |
On/Off |
Onにすると、ハードIPリコンフィグレーション・バスを使用して、ハードIP読み出し専用レジスターを動的にリコンフィグレーションできます。詳細については、Hard IP Reconfigurationインターフェイスを参照してください。 このパラメーターをOnにすると、hip_reconfig_clkポートがAvalon-MMハードIPコンポーネントのブロックシンボルに表示されます。System Contentsウィンドウで、クロックソースをこのhip_reconfig_clkポートに接続します。例えば、hip_reconfig_clkをエクスポートして、周波数が100〜125 MHzのボード上のフリーランニング・クロックで駆動できます。または、デザインにそのようなフリーランニング・クロックによって駆動されるクロックブリッジが含まれている場合、クロックブリッジのout_clkを使用して、hip_reconfig_clkを駆動できます。 |
Enable transceiver dynamic reconfiguration |
On/Off |
Onにすると、ソフトウェアがトランシーバー・レジスターの値を変更するために駆動できるAvalon-MMインターフェイスが提供されます。 このパラメーターをOnに設定すると、xcvr_reconfig_clk、reconfig_pll0_clk、およびreconfig_pll1_clkポートが、Avalon-MMハードIPコンポーネントのブロックシンボル上に表示されます。System Contentsウィンドウで、クロックソースをこれらのポートに接続します。例えば、これらのポートをエクスポートして、周波数が100〜125 MHzの範囲にあるボード上のフリーランニング・クロックでポートを駆動できます。または、デザインにそのようなフリーランニング・クロックによって駆動されるクロックブリッジが含まれている場合、クロックブリッジのout_clkを使用して、これらのポートを駆動できます。 |
Enable Native PHY, LCPLL, and fPLL ADME for Toolkit | On/Off | Onにすると、生成されたIPには、ダイナミック・リコンフィグレーション用にAvalon-MMスレーブ・インターフェイスに内部接続する、エンベデッドNative PHY Debug Master Endpoint (NPDME) が含まれます。NPDMEは、トランシーバー・リコンフィグレーション・スペースにアクセスできます。System Consoleを使用して、JTAG経由で特定のテストおよびデバッグ機能を実行できます。 |
Enable PCIe* Link Inspector |
On/Off |
Onにすると、 PCIe* Link Inspectorがイネーブルになります。このインターフェイスを使用して、物理層、データリンク層、トランザクション層で PCIe* リンクを監視します。Link Inspectorを使用して、一部のトランシーバー・レジスターをリコンフィグレーションすることもできます。このフィーチャーを使用するには、Enable transceiver dynamic reconfiguration、Enable dynamic reconfiguration of PCIe read-only registersおよびEnable Native PHY, LCPLL, and fPLL ADME for Toolkitをオンにする必要があります。 PCIe* Link Inspectorの使用の詳細については、付録のTroubleshooting and Observing Link Statusの中のLink Inspector Hardwareを参照してください。 |
Enable PCIe* Link Inspector AVMM Interface |
On/Off |
Onにすると、PCIe Link InspectorのAvalon-MMインターフェイスがエクスポートされます。さらに、JTAGから Avalon® Bridge IPへのインスタンス化は、デバッグ用のDesign Example生成に含まれています。 |
4.6. PHYの特性
パラメーター |
値 |
説明 |
---|---|---|
Gen2 TX de-emphasis |
3.5dB 6dB |
Gen2の送信ディエンファシスを指定します。インテルは、次の設定をお勧めします。
|
VCCR/VCCT supply voltage for the transceiver |
1_1V 1_0V |
ボードがトランシーバーに供給する電圧をレポートできるようにします。 |
4.7. デザイン例
パラメーター |
値 |
説明 |
---|---|---|
Available Example Designs |
DMA Simple DMA PIO |
DMAオプションを選択すると、生成されたデザイン例にダイレクト・メモリー・アクセス・アプリケーションが含まれます。このアプリケーションには、アップストリームおよびダウンストリームのトランザクションが含まれます。 DMAデザイン例では、Write Data Mover、Read Data Mover、およびカスタムDescriptor Controllerを使用します。Simple DMAデザイン例では、Write Data MoverおよびRead Data Moverを使用せず、標準のインテルDescriptor Controllerを使用します。 PIOオプションを選択すると、生成されたデザインには、ダウンストリーム・トランザクションのみを含むターゲット・アプリケーションが含まれます。 |
Simulation | On/Off | Onにすると、生成された出力にはシミュレーション・モデルが含まれます。 |
Synthesis | On/Off | Onにすると、生成された出力には合成モデルが含まれます。 |
Generated HDL format |
Verilog/VHDL |
現在のリリースではVerilog HDLのみが使用可能です。 |
Target Development Kit |
None Intel® Stratix® 10 H-Tile ES1 Development Kit Intel® Stratix® 10 L-Tile ES2 Development Kit |
適切な開発ボードを選択します。 いずれかの開発ボードを選択すると、システム生成により、選択したデバイスがその開発ボード上のデバイスで上書きされます。
注:
Noneを選択した場合、システム生成はピンの割り当てを行いません。.qsf ファイルで割り当てを行う必要があります。
|
5. IPコアを使用したデザイン
5.1. 生成
5.2. シミュレーション
インテルQuartus Primeプロ・エディション開発ソフトウェアは、パラメーター化された PCI Express* IPコアを生成する際に、オプションで機能シミュレーション・モデル、テストベンチ (またはデザイン例)、およびベンダー固有のシミュレーター・セットアップ・スクリプトを生成します。Endpointの場合、生成はRoot Port BFMを作成します。
インテルQuartus Primeプロ・エディションは、以下のシミュレーターをサポートしています。
ベンダー | シミュレーター | バージョン | プラットフォーム |
---|---|---|---|
Aldec | Active-HDL* | 10.3 | Windows |
Aldec | Riviera-PRO* | 2016.10 | Windows、Linux |
Cadence | Incisive Enterprise* (NCSim*) | 15.20 | Linux |
Cadence | Xcelium* Parallel Simulator | 17.04.014 | Linux |
Mentor Graphics | ModelSim PE* | 10.5c | Windows |
Mentor Graphics | ModelSim SE* | 10.5c | Windows、Linux |
Mentor Graphics | QuestaSim* | 10.5c | Windows、Linux |
Synopsys | VCS*/VCS MX* | 2016,06-SP-1 | Linux |
5.3. IPコア生成の出力 (インテルQuartus Primeプロ・エディション)
ファイル名 | 説明 |
---|---|
<your_ip>.ip | プロジェクトでのIPコアのパラメーター化を含むトップレベルのIPバリエーション・ファイルです。IPバリエーションがPlatform Designerシステムの一部の場合、パラメーター・エディターは .qsys ファイルを生成します。 |
<your_ip>.cmp | VHDL Component Declaration (.cmp) ファイルは、VHDLデザインファイルで使用する、ローカル・ジェネリックおよびポート定義を含むテキストファイルです。 |
<your_ip>_generation.rpt | IPまたはPlatform Designer生成のログファイルです。IP生成時のメッセージの要約を示します。 |
<your_ip>.qgsimc (Platform Designerシステムのみ) | .qsys および .ip.ファイルをPlatform DesignerシステムとIPコアの現在のパラメーター化と比較するシミュレーション・キャッシング・ファイルです。この比較により、Platform DesignerがHDLの再生成をスキップできるかどうかを決定します。 |
<your_ip>.qgsynth (Platform Designerシステムのみ) | .qsys および .ip ファイルをPlatform DesignerシステムとIPコアの現在のパラメーター化と比較する合成キャッシング・ファイルです。この比較により、Platform DesignerがHDLの再生成をスキップできるかどうかを決定します。 |
<your_ip>.csv | IPコンポーネントのアップグレード・ステータスに関する情報を含みます。 |
<your_ip>.bsf | Block Diagramファイル (.bdf) で使用するIPバリエーションの表記です。 |
<your_ip>.spd | シミュレーション・スクリプトの生成のために ip-make-simscript で必要な入力ファイルです。.spd ファイルは、シミュレーション向けに生成されるファイルのリスト、およびユーザーが初期化するメモリーの情報を含みます。 |
<your_ip>.ppf | Pin Plannerで使用するために作成するIPコンポーネントのポートおよびノードの割り当てを格納するPin Plannerファイル (.ppf) です。 |
<your_ip>_bb.v | ブラックボックスとして使用するために、emptyのモジュール宣言として使用する _bb.v (Verilog blackbox) ファイルです。 |
<your_ip>_inst.v or _inst.vhd | HDL例のテンプレート・インスタンスです。IPバリエーションのインスタンス化には、このファイル内容をコピーして、HDLファイルに貼り付けます。 |
<your_ip>.regmap | IPがレジスター情報を含む場合、 インテル® Quartus® Prime開発ソフトウェアは .regmap ファイルを生成します。.regmap ファイルは、マスターおよびスレーブ・インターフェイスのレジスターマップ情報を記述しています。このファイルは、システムに関するより詳細なレジスター情報を提供することで、.sopcinfo ファイルを補完します。このファイルにより、System Consoleでのレジスター・ディスプレイ・ビューおよびユーザーによるカスタマイズ可能な統計が可能になります。 |
<your_ip>.svd |
Platform Designerシステム内でHPSに接続されているペリフェラルのレジスターマップを、HPS System Debugツールで表示できるようにします。 合成中、 インテル® Quartus® Prime開発ソフトウェアは、デバッグセッションでSystem Consoleマスターが認識可能なスレーブ・インターフェイスの .svd ファイルを .sof ファイルに格納します。System Consoleはこのセクションを読み出し、これによりPlatform Designerがレジスターマップ情報を照会します。システムスレーブに対しては、Platform Designerは名前によりそのレジスターにアクセスします。 |
<your_ip>.v <your_ip>.vhd |
合成またはシミュレーション向けに各サブモジュールまたは子IPコアをインスタンス化するHDLファイルです。 |
mentor/ | ModelSim* シミュレーションの設定および実行のための msim_setup.tcl スクリプトを含みます。 |
aldec/ | シミュレーションの設定および実行のためのRiviera-PRO*スクリプトである rivierapro_setup.tcl を含みます。 |
/synopsys/vcs /synopsys/vcsmx |
VCS* シミュレーションの設定および実行のためのシェルスクリプトである vcs_setup.sh を含みます。 VCS* MXシミュレーションの設定および実行のためのシェルスクリプトである vcsmx_setup.sh および synopsys_sim.setup ファイルを含みます。 |
/cadence | NCSimシミュレーションの設定および実行を行うシェルスクリプトの ncsim_setup.sh およびそのほかのセットアップ・ファイルを含みます。 |
/xcelium | シミュレーションの設定および実行のための Xcelium* Parallelシミュレーター・シェル・スクリプトである xcelium_setup.sh およびその他の設定ファイルを含みます。 |
/submodules | IPコア・サブモジュールのHDLファイルを含みます。 |
<IP submodule>/ | Platform Designerは、Platform Designerが生成する各IPサブモジュール・ディレクトリーの /synth および /sim サブディレクトリーを生成します。 |
5.4. チャネルレイアウトおよびPLLの使用法
次の図は、インテルStratix 10 Avalon-MMハードIPコアのGen1、Gen2およびGen3、x1、x2、x4、x8およびx16のバリアントのチャネルレイアウトとPLLの使用法を示しています。不足しているバリアントGen3 x16は、別のインテルStratix 10 IPコア (インテルStratix 10 Avalon-MM Hard IP+ core) でサポートされていることに注意してください。Avalon-MM Hard IP+ coreの詳細については、https://www.intel.com/content/www/us/en/programmable/documentation/sox1520633403002.html を参照してください。
チャネルレイアウトは、アプリケーション層へのAvalon-STおよびAvalon-MMインターフェイスで同じです。
6. ブロックの説明
コンポーネントGUIでDMAブリッジの個々のオプションモジュールをイネーブルできます。次の制約が適用されます。
- PCIe Write DMAモジュールおよびInternal DMA Descriptor Controllerがイネーブルになっている場合は、PCIe Read DMAモジュールをイネーブルする必要があります。PCIe Read DMAは、ホストからディスクリプターをフェッチします。
- アドレスマッピングがイネーブルになっている場合は、Control Register Access (CRA) Avalon-MMのスレーブポートをイネーブルする必要があります。
- 内部DMA Descriptor Controllerをイネーブルすると、BAR0 Avalon-MMマスターは使用できなくなります。DMA Descriptor Controllerはこのインターフェイスを使用します。
6.1. インターフェイス
6.1.1. アプリケーション層へのインテルStratix 10 DMA Avalon-MM DMAインターフェイス
この項では、DMAの実装に必要なインターフェイスについて説明します。他のすべてのインターフェイスについては、次の項のアプリケーション層へのAvalon-MMインターフェイスで説明しています。
6.1.1.1. 内部的にインスタンス化された場合のDescriptor Controllerインターフェイス
Descriptor Controllerには、読み出しおよび書き込みディスクリプター・テーブルを格納する2つの128エントリーFIFOが含まれています。Descriptor Controllerは、ディスクリプターをRead DMAおよびWrite DMA Data Moverに転送します。
Data Moverは、完了状態をRead Descriptor ControllerおよびWrite Descriptor Controllerに送信します。Descriptor Controllerは、TXスレーブポートを使用して、ステータスおよびMSIをホストに転送します。
6.1.1.1.1. 読み出しデータムーバー
Read Dataモジュールは、メモリー読み出しTLPを送信します。高スループットのRead Masterポートを介して、コンプリーション・データを外部Avalon-MMインターフェイスに書き込みます。このデータムーバーは、IPコアがDMA Descriptor Controllerから受信するディスクリプターで動作します。
Read DMA Avalon-MM Masterインターフェイスは、次の機能を実行します。
1. ディスクリプター・コントローラーへのディスクリプター・テーブルの提供
Read Data Moverは、 PCIe* システムメモリーの読み出し要求を送信して、 PCIe* システムメモリーからディスクリプター・テーブルをフェッチします。次に、このモジュールは、このAvalon-MMインターフェイスを使用して、返されたディスクリプター・エントリーをDescriptor Controller FIFOに書き込みます。
2. Avalon-MMスペースにあるメモリーへのデータ書き込み
DMA Readが PCIe* システムメモリーのソースアドレスからのデータのフェッチを終了すると、Read Data Moverモジュールは、このインターフェイスを介してAvalon-MMアドレス空間の送信先アドレスにデータを書き込みます。
信号名 |
入力/出力 |
説明 |
---|---|---|
rd_dma_write_o |
出力 |
アサートされると、Read DMAモジュールが読み出し完了データをAvalon-MMアドレス空間のメモリー・コンポーネントに書き込む準備ができていることを示します。 |
rd_dma_address_o[63:0] |
出力 |
読み出し完了データのAvalon-MMアドレス空間の書き込みアドレスを指定します。 |
rd_dma_write_data_o[255:0] |
出力 |
Avalon-MMアドレス空間に書き込まれる読み出し完了データです。 |
rd_dma_burst_count_o[4:0] |
出力 |
バーストカウントを128ビットまたは256ビットワードで指定します。このバスは、256ビットのインターフェイスでは5ビットです。128ビットのインターフェイスでは6ビットです。 |
rd_dma_byte_enable_o[31:0] |
出力 |
有効なDWORDを指定します。 |
rd_dma_wait_request_i |
入力 |
アサートされると、メモリーがデータを受信する準備ができていないことを示します。 |
6.1.1.1.2. Read Descriptor Controller Avalon-MMマスター・インターフェイス
Read Descriptor Controller Avalon-MMマスター・インターフェイスは、非バーストAvalon-MMスレーブ・インターフェイスを駆動します。Read Descriptor Controllerは、このインターフェイスを使用して、MSIメッセージがイネーブルの場合PCIeドメインに、場合によってはMSIに、ディスクリプター・ステータスを書き込みます。このAvalon-MMマスター・インターフェイスは、内部的にインスタンス化されたDescriptor Controllerを備えたバリアントでのみ使用可能です。
デフォルトでは、MSI割り込みはイネーブルになっています。パラメーター・エディターのMSIタブで、Number of MSI messages requestedを指定します。MSI Capability Structureは、PCI Local Bus Specificationの項6.8.1 MSI Capability Structureで定義されています。
信号名 |
入力/出力 |
説明 |
---|---|---|
rd_dcm_address_o[63:0] |
出力 |
ディスクリプター・ステータス・テーブルまたはMSIアドレスを指定します。 |
rd_dcm_byte_enable_o[3:0] |
出力 |
有効なデータバイトを指定します。 |
rd_dcm_read_data_valid_i |
入力 |
アサートされると、読み出しデータが有効であることを示します。 |
rd_dcm_read_data_i[31:0] |
入力 |
アドレス指定されたディスクリプター・ステータスのテーブルエントリーの読み出しデータを指定します。 |
rd_dcm_read_o |
出力 |
アサートされると、読み出しトランザクションを示します。現在、これは書き込み専用インターフェイスであるため、この信号はアサートされません。 |
rd_dcm_wait_request_i |
入力 |
アサートされると、接続されているAvalon-MMスレーブ・インターフェイスがビジーで、トランザクションを受け入れることができないことを示します。 |
rd_dcm_write_data_o[31:0] |
出力 |
ディスクリプター・ステータスまたはMSIデータを指定します。 |
rd_dcm_write_o |
出力 |
アサートされると、書き込みトランザクションを示します。 |
6.1.1.1.3. Write Descriptor Controller Avalon-MMマスター・インターフェイス
Avalon-MM Descriptor Controller Masterインターフェイスは、待機要求のサポートを備えた32ビットのシングルDWORDマスターです。MSIメッセージがイネーブルの場合、Write Descriptor Controllerはこのインターフェイスを使用してPCI-Expressドメインに、場合によってはMSIに、ステータスを書き戻します。このAvalon-MMマスター・インターフェイスは、内部的にインスタンス化されたDescriptor Controllerでのみ使用可能です。
デフォルトでは、MSI割り込みはイネーブルになっています。パラメーター・エディターのMSIタブで、Number of MSI messages requestedを指定します。MSI Capability Structureは、PCI Local Bus Specificationの項6.8.1 MSI Capability Structureで定義されています。
信号名 |
入力/出力 |
説明 |
---|---|---|
wr_dcm_address_o[63:0] |
出力 |
ディスクリプター・ステータス・テーブルまたはMSIアドレスを指定します。 |
wr_dcm_byte_enable_o[3:0] |
出力 |
有効なデータバイトを指定します。 |
wr_dcm_read_data_valid_i |
入力 |
アサートされると、読み出しデータが有効であることを示します。 |
wr_dcm_read_data_i[31:0] |
出力 |
アドレス指定されたディスクリプター・ステータスのテーブルエントリーの読み出しデータを指定します。 |
wr_dcm_read_o |
出力 |
アサートされると、読み出しトランザクションを示します。 |
wr_dcm_wait_request_i |
入力 |
アサートされると、Avalon-MMスレーブデバイスが応答する準備ができていないことを示します。 |
wr_dcm_writedata_o[31:0] |
出力 |
ディスクリプター・ステータス・テーブルまたはMSIアドレスを指定します。 |
wr_dcm_write_o |
出力 |
アサートされると、書き込みトランザクションを示します。 |
6.1.1.1.4. 読み出しディスクリプター・テーブルAvalon-MMスレーブ・インターフェイス
このインターフェイスは、内部Descriptor Controllerを選択した場合に使用可能です。Read Data MoverによってフェッチされたRead DMAディスクリプターを受信します。インターフェイスをRead DMA Avalon-MMマスター・インターフェイスに接続します。
信号名 |
入力/出力 |
説明 |
---|---|---|
rd_dts_address_i[7:0] |
入力 |
ディスクリプター・テーブル・アドレスを指定します。 |
rd_dts_burst_count_i[4:0] |
入力 |
トランザクションのバーストカウントをワード単位で指定します。 |
rd_dts_chip_select_i |
入力 |
アサートされると、読み出しがこのスレーブ・インターフェイスをターゲットにしていることを示します。 |
rd_dts_write_data_i[255:0] |
入力 |
ディスクリプターを指定します。 |
rd_dts_write_i |
入力 |
アサートされると、書き込みトランザクションを示します。 |
rd_dts_wait_request_o |
出力 | アサートされると、Avalon-MMスレーブデバイスが応答する準備ができていないことを示します。 |
6.1.1.1.5. 書き込みディスクリプター・テーブルAvalon-MMスレーブ・インターフェイス
このインターフェイスは、内部Descriptor Controllerを選択した場合に使用可能です。Read Data MoverによってフェッチされたWrite DMAディスクリプターを受信します。インターフェイスをRead DMA Avalon-MMマスター・インターフェイスに接続します。
信号名 |
入力/出力 |
説明 |
---|---|---|
wr_dts_address_i[7:0] |
入力 |
ディスクリプター・テーブル・アドレスを指定します。 |
wr_dts_burst_count_i[4:0] or [5:0] |
入力 |
トランザクションのバーストカウントをワード単位で指定します。 |
wr_dts_chip_select_i |
入力 |
アサートされると、書き込みがこのスレーブ・インターフェイスに対するものであることを示します。 |
wr_dts_wait_request_o |
出力 |
アサートされると、このインターフェイスがビジーで、応答する準備ができていないことを示します。 |
wr_dts_write_data_i[255:0] |
入力 |
ディスクリプター・テーブルのエントリーデータを駆動します。 |
wr_dts_write_i |
入力 |
アサートされると、書き込みトランザクションを示します。 |
6.1.1.2. 書き込みDMA Avalon-MMマスターポート
Write Data Moverモジュールは、メモリー書き込み要求を発行する前に、このインターフェイスを使用してAvalon-MMアドレス空間からデータをフェッチし、データを PCIe* システムメモリーに転送します。
信号名 |
入力/出力 |
説明 |
---|---|---|
wr_dma_read_o |
出力 |
アサートされると、Write DMAモジュールが Avalon-MMアドレス空間のメモリー・コンポーネントからデータを読み出し、PCIeアドレス空間に書き込むことを示します。 |
wr_dma_address_o[63:0] |
出力 |
Avalon-MMアドレス空間のメモリー・コンポーネントから読み出されるデータのアドレスを指定します。 |
wr_dma_read_data_i[255:0] |
入力 |
Write DMAモジュールがPCIeアドレス空間に書き込む完了データを指定します。 |
wr_dma_burst_count_o[4:0] |
出力 |
バーストカウントを256ビットワードで指定します。 |
wr_dma_wait_request_i |
入力 |
アサートされると、メモリーが読み出される準備ができていないことを示します。 |
wr_dma_read_data_valid_i |
入力 |
アサートされると、wr_dma_read_data_valid_i が有効であることを示します。 |
6.1.1.3. 外部的にインスタンス化された場合のDescriptor Controllerインターフェイス
6.1.1.3.1. Avalon-ST Descriptorソース
PCIe* システムメモリーのDescriptor Tableから複数のディスクリプター・エントリーをフェッチした後、Descriptor Controllerは、そのAvalon-ST Descriptorソース・インターフェイスを使用して、160ビットのDescriptorをReadまたはWrite DMA Data Moverに転送します。
信号名 |
入力/出力 |
説明 |
---|---|---|
rd_ast_rx_data_i[159:0] |
入力 |
Read DMAモジュールのディスクリプターを指定します。ビット定義については、以下のDMAディスクリプター・フォーマットの表を参照してください。 |
rd_ast_rx_valid_i |
入力 |
アサートされると、データが有効であることを示します。 |
rd_ast_rx_ready_o |
出力 |
アサートされると、Read DMA読み出しモジュールが新しいディスクリプターを受信する準備ができていることを示します。 レディー・レイテンシーは1サイクルです。その結果、readyがアサートされてから1サイクル後に、インターフェイスはデータを受け入れることができます。 |
信号名 |
入力/出力 |
説明 |
---|---|---|
wr_ast_rx_data_i[159:0] |
入力 |
Write DMAモジュールのディスクリプターを指定します。ビット定義については、以下のDMAディスクリプター・フォーマットの表を参照してください。 |
wr_ast_rx_valid_i |
入力 |
アサートされると、データが有効であることを示します。 |
wr_ast_rx_ready_o |
出力 |
アサートされると、Write DMAモジュールエンジンが新しいディスクリプターを受信する準備ができていることを示します。レディー・レイテンシーは1サイクルです。その結果、readyがアサートされてから1サイクル後に、インターフェイスはデータを受け入れることができます。 |
ディスクリプター・テーブルのフォーマット
ビット |
名称 |
説明 |
---|---|---|
[31:0] |
Source Low Address |
DMAソースアドレスの下位32ビットです。2つの最下位ビットが2'b00になるように、アドレス境界は32ビットにアライメントする必要があります。Read Data Moverモジュールの場合、ソースアドレスはPCIeドメインアドレスです。Write Data Moverモジュールの場合、ソースアドレスはAvalon-MMドメインアドレスです。 |
[63:32] |
Source High Address |
ソースアドレスの上位32ビットです。 |
[95:64] |
Destination Low Address |
DMA送信先アドレスの下位32ビットです。2つの最下位ビットが2'b00になるように、アドレス境界は32ビットにアライメントする必要があります。Read Data Moverモジュールの場合、送信先アドレスはAvalon-MMドメインアドレスです。Write Data Moverモジュールの場合、送信先アドレスはPCIeドメインアドレスです。 |
[127:96] |
Destination High Address |
送信先アドレスの上位32ビットです。 |
[145:128] |
DMA Length |
転送するdwordの数を指定します。長さは0より大きくする必要があります。最大長は1MB〜4バイトです。 |
[153:146] |
DMA Descriptor ID |
ディスクリプターの一意の7ビットIDです。ステータス情報は同じIDで返されます。 |
[159:154] |
Reserved |
- |
Avalon-ST Descriptorステータスソース
Read Data MoverモジュールおよびWrite Data Moverモジュールは、ディスクリプターが正常に完了すると、ステータスを rd_dma_tx_data_o[31:0] または wr_dma_tx_data_o[31:0] バス上のDescriptor Controllerにレポートします。
次の表は、DMAディスクリプター・ステータス・バスへのトリガーイベントのマッピングを示しています。
ビット |
名称 |
説明 |
---|---|---|
[31:9] |
予約済み |
— |
[8] |
Done |
アサートされると、単一のDMAディスクリプターが正常に完了します。 |
[7:0] | Descriptor ID | ステータスがレポートされているディスクリプターのIDです。 |
6.1.2. アプリケーション層へのAvalon-MM DMAインターフェイス
6.1.2.1. バーストおよび非バーストAvalon-MMモジュール信号
Base address registerタブのEnable burst capability for Avalon-MM Bar0-5 Master Portパラメーターは、各BARに使用するAvalon-MMマスターのタイプを決定します。次の2つのタイプが使用可能です。
- バーストサポートを備えた高性能の256ビットマスター。このタイプは、高帯域幅のデータ転送をサポートします。
- バイトレベルのバイトイネーブルを備えた非バースト32ビットマスター。このタイプは、制御およびステータスレジスターへのアクセスをサポートします。
信号名 |
入力/出力 |
説明 |
---|---|---|
rxm_bar<n>_write_o |
出力 |
コアによってアサートされ、Avalon-MMスレーブへの書き込みを要求します。 |
rxm_bar<n>_address_o[<W>-1:0] |
出力 |
アクセスされているAvalon-MMスレーブのアドレスです。 |
rxm_bar<n>_writedata_o[255:0] |
出力 |
スレーブに書き込まれているRXデータです。 |
rxm_bar<n>_byteenable_o[31:0] |
出力 |
Dwordはデータの書き込みをイネーブルします。 |
rxm_bar<n>_burstcount_o[4:0]
(バーストモードでのみ使用可能) |
出力 |
RX書き込みまたは読み出し要求の256ビットワードで測定されるバーストカウントです。バースト内の最大データは512バイトです。このオプションの信号は、Enable burst capability for RXM Avalon-MM BAR<n> Master portsをオンにしたときにのみ使用可能です。 |
rxm_bar<n>_waitrequest_i |
入力 |
外部Avalon-MMスレーブによってアサートされ、データ転送を保持します。 |
rxm_bar<n>_read_o |
出力 |
コアによってアサートされ、読み出しを要求します。 |
rxm_bar<n>_readdata_i[255:0] |
入力 |
読み出し要求に応答してAvalon-MMスレーブから返された読み出しデータ。このデータは、TXインターフェイスを介してIPコアに送信されます。 |
rxm_bar<n>_readdatavalid_i |
入力 |
システム・インターコネクト・ファブリックによってアサートされ、読み出されたデータが有効であることを示します。 |
rxm_irq_i[<m>:0], <m> < 16 |
入力 |
割り込みをAvalon-MMインターフェイスに接続します。これらの信号は、CRAポートがイネーブルの場合に、Avalon-MMでのみ使用可能です。立ち上がりエッジでMSI割り込みがトリガーされます。ハードIPコアはこのイベントをMSI割り込みに変換し、それをRoot Portに送信します。ホストは、Interrupt Status レジスターを読み出して、割り込みベクトルを取得します。ホスト・ソフトウェアは割り込みを処理し、完了時にターゲットに通知します。 最大16個の個別の割り込み信号 (<m>≤15) が使用可能です。すべての割り込み入力をデアサートせずに、rxm_irq_ <n> [<m>:0] が連続したサイクルでアサートされる場合、後に続く割り込みに対してMSIメッセージは送信されません。割り込みの損失を回避するために、ソフトウェアは、受信した各MSIメッセージのすべての割り込みソースがクリアされていることを確認する必要があります。
注: これらの信号は、IPコアがDMAモードで動作している場合 (つまり、GUIのAvalon-MM SettingsタブのEnable Avalon-MM DMAオプションがOnに設定されている場合) は使用できません。
|
次のタイミング図は、要求をアプリケーション層に伝播するRXマスターポートを示し、同時読み出しおよび書き込みのアクティビティーを示しています。
6.1.2.2. 非バーストスレーブのモジュール
スレーブモジュールは、1つの未処理の非バースト要求をサポートします。通常、ステータスの更新をホストに送信します。これは32ビットのAvalon-MMスレーブ・インターフェイスです。
信号名 |
入力/出力 |
説明 |
---|---|---|
txs_chipselect_i |
入力 |
アサートされると、このスレーブ・インターフェイスが選択されていることを示します。txs_chipselect_i がデアサートされる場合、txs_read_i および txs_write_i 信号は無視されます。 |
txs_read_i |
入力 |
アサートされると、チップセレクトがデアサートされている時に無視される Avalon-MMを指定します。 |
txs_write_i |
入力 |
アサートされると、チップセレクトがデアサートされている時に無視される Avalon-MMを指定します。 |
txs_writedata_i[31:0] |
入力 |
書き込みコマンドのAvalon-MMデータを指定します。 |
txs_address_i[<w>-1:0] |
入力 |
読み出しまたは書き込みコマンドのAvalon-MMバイトアドレスを指定します。このアドレスバスの幅は、Address width of accessible PCIe memory spaceパラメーターで指定されます。 |
txs_byteenable_i[3:0] |
入力 |
書き込みコマンドの有効なバイトを指定します。 |
txs_readdata_o[31:0] |
出力 |
読み出し完了データを駆動します。 |
txs_readdatavalid_o |
出力 |
アサートされると、読み出しデータが有効であることを示します。 |
txs_waitrequest_o |
出力 |
アサートされる場合、Avalon-MMスレーブポートが読み出しまたは書き込み要求に応答する準備ができていないことを示します。 非バースト Avalon-MMスレーブは、アイドルサイクル中に txs_waitrequest_o をアサートする場合があります。 Avalon-MMマスターは、txs_waitrequest_o がアサートされたときにトランザクションを開始し、その信号がデアサートされるのを待ちます。 |
6.1.2.3. 32ビットのControl Register Access (CRA) スレーブ信号
CRAインターフェイスは、Avalon-MMブリッジの制御およびステータスレジスターへのアクセスを提供します。このインターフェイスには、次のプロパティーがあります。
- 32ビットのデータバス
- 一度に1つのトランザクションのサポート
- シングルサイクル・トランザクションのサポート (非バースト)
信号名 |
入力/出力 |
説明 |
---|---|---|
cra_read_i |
入力 |
読み出しイネーブル |
cra_write_i |
入力 |
書き込み要求 |
cra_address_i[14:0] |
入力 |
|
cra_writedata_i[31:0] |
入力 |
書き込みデータ。CRAスレーブ・インターフェイスの現在のバージョンは読み出し専用です。この信号をAvalon-MMインターフェイスの一部として含めることで、将来の拡張が可能になります。 |
cra_readdata[31:0] |
出力 |
読み出しデータライン |
cra_byteenable_i[3:0] |
入力 |
バイトイネーブル |
cra_waitrequest_o |
出力 |
より多くの要求を保留するまで要求を待ちます。 |
cra_chipselect_i |
入力 |
このスレーブへのチップセレクト信号です。 |
cra_irq_o |
出力 |
割り込み要求。Avalon-MM割り込みのポート要求です。 |
6.1.2.4. バースト・スレーブ・モジュール
スレーブモジュールは、1つの未処理の非バースト要求をサポートします。通常、ステータスの更新をホストに送信します。これは32ビットのAvalon-MMスレーブ・インターフェイスです。
信号名 |
入力/出力 |
説明 |
---|---|---|
hptxs_read_i |
入力 |
アサートされると、 Avalon-MMスレーブを指定します。 |
hptxs_write_i |
入力 |
アサートされると、 Avalon-MMスレーブを指定します。 |
hptxs_writedata_i[31:0] |
入力 |
書き込みコマンドの Avalon-MMデータを指定します。 |
hptxs_address_i[<w>-1:0] |
入力 |
読み出しまたは書き込みコマンドの Avalon-MMバイトアドレスを指定します。このアドレスバスの幅は、Address width of accessible PCIe memory space (HPTXS)パラメーターで指定されます。 <w> <= 63です。 |
hptxs_byteenable_i[31:0] |
入力 |
書き込みコマンドに有効なdwordを指定します。 |
hptxs_readdata_o[255:0] |
出力 |
読み出し完了データを駆動します。 |
hptxs_readdatavalid_o |
出力 |
アサートされると、読み出しデータが有効であることを示します。 |
hptxs_waitrequest_o |
出力 |
アサートされると、 Avalon-MMスレーブポートが、読み出しまたは書き込み要求に応答する準備ができていないことを示します。 非バースト Avalon-MMスレーブは、アイドルサイクル中に hptxs_waitrequest_o をアサートする場合があります。 Avalon-MMマスターは、hptxs_waitrequest_o がアサートされたときにトランザクションを開始し、その信号がデアサートされるのを待ちます。 |
6.1.3. クロックおよびリセット
6.1.3.1. クロック
信号 |
入力/出力 |
説明 |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
refclk |
入力 |
PCI Express Card Electromechanical Specification Revision 2.0で定義されている、IPコアの入力リファレンス・クロックです。周波数は100 MHz±300 ppmです。 PCIe* 100 msのウェイクアップ時間要件を満たすには、このクロックはフリーランニングである必要があります。 注: デバイス・コンフィグレーションを成功させるには、デバイスの電源投入時に入力リファレンス・クロックが安定し、フリーランニングである必要があります。
|
||||||||||||
coreclkout_hip |
出力 |
このクロックは、データリンク、トランザクション、およびアプリケーション層を駆動します。アプリケーション層の周波数は、データレートおよび表に指定されているレーン数によって異なります。
|
6.1.3.2. リセット
信号 |
入力/出力 |
説明 |
---|---|---|
app_nreset_status | 出力 | アクティブLowのリセット信号です。nporまたはpin_perstnから派生します。この信号を使用して、Applicationをリセットできます。 |
currentspeed[1:0] | 出力 |
PCIeリンクの現在の速度を示します。 次のエンコーディングが定義されています。
|
npor |
入力 |
アプリケーション層は、このアクティブLowリセット信号を駆動します。npor は、IPコア全体、PCS、PMA、およびPLLをリセットします。npor は、少なくとも20 nsの間、保持する必要があります。この信号はエッジであり、レベル・センシティブではありません。したがって、この信号の値が低いと、リセット時にカスタムロジックが保持されません。この信号をディスエーブルすることはできません。 |
pin_perst |
入力 |
デバイスのPCIeリセットピンからのアクティブLowリセットです。データパスおよび制御レジスターをリセットします。 |
ninit_done | 入力 | アクティブロー非同期入力です。この信号の「1」は、FPGAデバイスがまだ完全にコンフィグレーションされていないことを示しています。「0」は、デバイスがコンフィグレーションされ、通常の動作モードであることを示します。ninit_done 入力を使用するには、デザインでReset Release Intel FPGA IPをインスタンス化し、その ninit_done 出力を使用して、PCIeの Avalon® メモリーマップドIPの入力を駆動します。この入力の使用方法の詳細については、以下を参照してください。https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an891.pdf |
6.1.4. 割り込み
6.1.4.1. エンドポイントのMSI割り込み
DMAを備えた Stratix® 10 PCIe Avalon-MM Bridgeは、イベントを通知するMSIを生成しません。ただし、Applicationは、非バーストAvalon-MM TXスレーブにメモリー書き込みを実行することにより、非バーストAvalon-MM TXスレーブによってMSIを送信させることができます。
ホストがMSIを受信すると、アプリケーション定義の割り込みサービスルーチンに基づいて割り込みを処理できます。このメカニズムにより、ホスト・ソフトウェアはステータステーブル done ビットの継続的なポーリングを回避できます。このインターフェイスは、ユーザーがTXSインターフェイスを介してMSI/MSI-Xを形成するために必要な情報を提供します。
信号 |
入力/出力 |
説明 |
---|---|---|
msi_intfc[81:0] |
出力 |
このバスは、次のMSIアドレス、データ、およびイネーブルされた信号を提供します。
|
msix_intfc_o[15:0] |
出力 |
PCI Local Bus Specification, Rev. 3.0の項6.8.2.3のMessage Control for MSI-Xで定義されている、MSI-Xのシステム・ソフトウェア制御を提供します。次のフィールドが定義されています。
|
msi_control_o[15:0] |
出力 |
PCI Local Bus Specification, Rev. 3.0の項6.8.1.3のMessage Control for MSIで定義されている、MSIのシステム・ソフトウェア制御を提供します。次のフィールドが定義されています。
|
intx_req_i |
入力 |
レガシー割り込み要求 |
6.1.4.2. レガシー割り込み
DMAを備えた Stratix® 10 PCIe Avalon-MM Bridgeは、PCIeレガシー割り込みを生成できます。Configuration Headerの Command レジスターの Interrupt Disable ビット10がゼロに設定され、MSI Message Control レジスターの MSI Enable ビットがゼロに設定されている場合に生成できます。
信号 |
入力/出力 |
説明 |
---|---|---|
intx_req_i |
入力 |
レガシー割り込み要求 |
6.1.5. フラッシュ要求
PCI Express* プロトコルでは、長さが1 dwordおよびバイトのホストからのメモリー読み出し要求は、すべて0にできます。このため、Completer (この場合は、 PCIe* 用のインテルStratix 10 Avalon-MMハードIP) のフラッシュ要求に変換されます。ただし、このフラッシュ要求機能は、 PCIe* 用のAvalon-MMハードIPではサポートされていません。
6.1.6. シリアルデータ、PIPE、ステータス、リコンフィグレーション、およびテスト・インターフェイス
6.1.6.1. シリアル・データ・インターフェイス
信号 |
入力/出力 |
説明 |
---|---|---|
tx_out[<n-1>:0] |
出力 |
シリアルデータ出力の送信 |
rx_in[<n-1>:0] |
入力 |
シリアルデータ入力の受信 |
6.1.6.2. PIPEインターフェイス
信号 |
入力/出力 |
説明 |
---|---|---|
txdata[31:0] | 出力 |
データの送信 |
txdatak[3:0] | 出力 | データ制御文字の指示の送信 |
txcompl | 出力 | コンプライアンスの送信。この信号は、TXコンプライアンス・パターンを駆動します。Compliance Mode (負のCOM文字) でランニング・ディスパリティーを強制的に負にします。 |
txelecidle | 出力 | 電気的アイドルの送信。この信号は、tx_out<n> 出力を強制的に電気的アイドルにします。 |
txdetectrx | 出力 | 検出受信の送信。この信号は、受信検出動作を開始するか、ループバックを開始するようPHY層に指示します。 |
powerdown[1:0] | 出力 | パワーダウン。この信号は、電力ステートを特定のステート (P0、P0s、P1、またはP2) に変更するようPHYに要求します。 |
txmargin[2:0] | 出力 | VODマージンの選択を送信します。この信号の値は、Link Control 2 Register からの値に基づいています。 |
txdeemp | 出力 | ディエンファシスの選択の送信。PCI ExpressのインテルStratix 10ハードIPは、Training Sequences (TS) 中にリンクのもう一方の端から受信した指示に基づいて、この信号の値を設定します。この値を変更する必要はありません。 |
txswing | 出力 | アサートされると、トランスミッター電圧のフルスイングを示します。デアサートされると、ハーフスイングを示します。 |
txsynchd[1:0] | 出力 |
Gen3動作の場合、受信ブロックタイプを指定します。次のエンコーディングが定義されています。
|
txblkst[3:0] | 出力 | Gen3動作の場合、送信方向のブロックの開始を示します。パイプスペックです。 |
txdataskip | 出力 |
Gen3動作用です。MACがTXインターフェイスに1クロックサイクルのTXデータ・インターフェイスを無視するように指示できます。次のエンコーディングが定義されています。
|
rate[1:0] | 出力 |
この2ビット・エンコーディングの意味は、次のとおりです。
|
rxpolarity | 出力 |
極性を受信します。この信号は、8B/10Bレシーバー・デコーディング・ブロックの極性を反転するようPHY層に指示します。 |
currentrxpreset[2:0] | 出力 | Gen3デザインの場合、現在のプリセットを指定します。 |
currentcoeff[17:0] | 出力 |
Gen3の場合、トランスミッターが使用する係数を指定します。18ビットは次の係数を指定します。
|
rxeqeval |
出力 | Gen3の場合、PHYはトランスミッター・イコライゼーション設定の評価を開始するときに、この信号をアサートします。PHYは評価が完了すると、Phystatus をアサートします。PHYは rxeqeval をデアサートして、評価を中止します。 |
rxeqinprogress |
出力 | Gen3の場合、PHYはリンク・トレーニングを開始するときに、この信号をアサートします。PHYはリンクパートナーからの初期係数をラッチします。 |
invalidreq |
出力 | Gen3の場合、Link Evaluationフィードバックが範囲外のTXイコライゼーション設定を要求したことを示します。PHYは、次に rxeqeval をアサートするまで、この信号を継続的にアサートします。 |
rxdata[31:0] | 入力 | データ制御の受信。ビット0は、rxdata などの最下位バイトに対応します。値0はデータバイトを示します。値1は、制御バイトを示します。Gen1およびGen2に対してのみです。 |
rxdatak[3:0] | 入力 | データ制御の受信。このバスはレーンでデータを受信します。ビット0は、rxdata などの最下位バイトに対応します。値0はデータバイトを示します。値1は、制御バイトを示します。Gen1およびGen2に対してのみです。 |
phystatus | 入力 | PHYステータスです。この信号は、いくつかのPHY要求のコンプリーションを通知します。パイプスペックです。 |
rxvalid | 入力 | 受信有効です。この信号は、rxdata の rxdatak のシンボルロックおよび有効なデータを示します。 |
rxstatus[2:0] | 入力 | ステータスの受信。この信号は、受信データストリームと受信検出のエラーコードを含む受信ステータスをエンコードします。 |
rxelecidle | 入力 | 電気的アイドルの受信。アサートされると、電気的アイドルの検出を示します。パイプスペックです。 |
rxsynchd[3:0] | 入力 |
Gen3動作の場合、受信ブロックタイプを指定します。次のエンコーディングが定義されています。
|
rxblkst[3:0] | 入力 | Gen3動作の場合、受信方向のブロックの開始を示します。 |
rxdataskip | 入力 |
Gen3動作用です。PCSがTXインターフェイスに1クロックサイクルのRXデータ・インターフェイスを無視するように指示できます。次のエンコーディングが定義されています。
|
dirfeedback[5:0] |
入力 | Gen3の場合、Hタイル・トランシーバーのリンク評価用のFigure of Meritを提供します。フィードバックは次の係数に適用されます。
次のフィードバック・エンコーディングが定義されています。
|
simu_mode_pipe | 入力 | 1に設定されている場合、PIPEインターフェイスはシミュレーション・モードになります。 |
sim_pipe_pclk_in | 入力 |
このクロックはPIPEシミュレーションにのみ使用され、refclkから取得されます。これは、PIPEモード・シミュレーションに使用される、PIPEインターフェイス・クロックです。 |
sim_pipe_rate[1:0] | 出力 |
この2ビット・エンコーディングの意味は、次のとおりです。
|
sim_ltssmstate[5:0] | 出力 |
LTSSMステートです。次のエンコーディングが定義されています。
|
sim_pipe_mask_tx_pll_lock |
入力 |
レート変更中はアクティブでなければなりません。この信号は、PLLロック信号をマスクするために使用されます。このインターフェイスは、PIPEシミュレーションでのみ使用されます。 シリアル・シミュレーションでは、Endpoint PHYがこの信号を駆動します。PIPEシミュレーションの場合、インテルのテストベンチでは、PIPE BFMがこの信号を駆動します。 |
6.1.6.3. Hard IP Statusインターフェイス
信号 |
入力/出力 |
説明 |
---|---|---|
derr_cor_ext_rcv |
出力 |
アサートされると、RXバッファーが1ビット (修正可能) ECCエラーを検出したことを示します。パルスストレッチ出力です。 |
derr_cor_ext_rpl |
出力 |
アサートされると、リトライバッファーが1ビット (修正可能) ECCエラーを検出したことを示します。パルスストレッチ出力です。 |
derr_rpl |
出力 |
アサートされると、リトライバッファーが2ビット (修正不可能) ECCエラーを検出したことを示します。パルスストレッチ出力です。 |
derr_uncor_ext_rcv |
出力 |
アサートされると、RXバッファーが2ビット (修正不可能) ECCエラーを検出したことを示します。パルスストレッチ出力です。 |
int_status[10:0] (Hタイル) int_status[7:0] (Lタイル) int_status_pf1[7:0] (Lタイル) |
出力 |
int_status[3:0] 信号は、アプリケーションへのレガシー割り込みを駆動します (Hタイル用)。 int_status [10:4] 信号は、他の割り込みのステータスを提供します (Hタイル用)。 int_status [3:0] 信号は、PF0のアプリケーションにレガシー割り込みを駆動します (Lタイル用)。 int_status [7:4] 信号は、PF0の他の割り込みのステータスを提供します (Lタイル用)。 int_status_pf1[3:0] 信号は、PF1のアプリケーションにレガシー割り込みを駆動します (Lタイル用)。 Int_status_pf1[7:4] 信号は、PF1の他の割り込みのステータスを提供します (Lタイル用)。 次の信号は定義されています。
|
int_status_common[2:0] |
出力 |
次のレジスターの割り込みステータスを指定します。アサートされると、割り込みが保留中であることを示します。
|
lane_act[4:0] |
出力 |
Lane Active Mode: この信号は、リンク・トレーニング中にコンフィグレーションされたレーンの数を示します。次のエンコーディングが定義されています。
|
link_up |
出力 |
アサートされた場合、リンクはアップしています。 |
ltssmstate[5:0] |
出力 |
LTSSM (Link Training and Status State Machine) のステート: LTSSMステートマシンのエンコーディングでは、次のステートを定義します。
|
rx_par_err |
出力 |
RXバッファーの入力のTLPでパリティーエラーが検出されたことを示すために、単一サイクルでアサートされます。このエラーは、VSECレジスターに修正不可能な内部エラーとして記録されます。詳細については、Uncorrectable Internal Error Status (修正不可能な内部エラーステータス) レジスターを参照してください。このエラーが発生した場合は、パリティーエラーによってハードIPが不明なステートになる可能性があるため、ハードIPをリセットする必要があります。 |
tx_par_err |
出力 |
TX TLP送信中のパリティーエラーを示すために、1サイクルの間アサートされます。パリティーエラーが検出された場合でも、IPコアはTX TLPパケットを送信します。 |
6.1.6.4. Hard IP Reconfiguration
PCIe Link Inspectorがイネーブルになっている場合、Hard IP Reconfigurationインターフェイスを介したアクセスはサポートされません。Link InspectorはHard IP Reconfigurationインターフェイスのみを使用し、Link InspectorとIPの最上位にエクスポートされるHard IP Reconfigurationインターフェイスとの間のアービトレーションはありません。
信号 |
入力/出力 |
説明 |
---|---|---|
hip_reconfig_clk |
入力 |
リコンフィグレーション・クロックです。このクロックの周波数の範囲は100〜125 MHzです。 |
hip_reconfig_rst_n |
入力 |
このインターフェイスのアクティブLowのAvalon-MMリセットです。 |
hip_reconfig_address[20:0] |
入力 |
21ビットのリコンフィグレーション・アドレスです。 ハードIPリコンフィグレーション機能をイネーブルすると、hip_reconfig_address [20:0] ビットはプログラム可能です。 一部のビットは、HタイルおよびLタイルの両方で同じ機能を持っています。
一部のビットには、HタイルとLタイルで異なる機能があります。 Hタイルの場合、
Lタイルの場合、
|
hip_reconfig_read |
入力 |
読み出し信号。このインターフェイスはパイプライン化されていません。別の読み出し動作を開始する前に、現在の読み出しから hip_reconfig_readdata [7:0] が返されるのを待つ必要があります。 |
hip_reconfig_readdata[7:0] |
出力 |
8ビットの読み出しデータ。hip_reconfig_readdata [7:0] は、hip_reconfig_read のアサート後の3番目のサイクルで有効です。 |
hip_reconfig_readdatavalid | 出力 | アサートされると、hip_reconfig_readdata [7:0] 上のデータは有効です。 |
hip_reconfig_write |
入力 |
書き込み信号 |
hip_reconfig_writedata[7:0] |
入力 |
8ビットの書き込みモデル |
hip_reconfig_waitrequest | 出力 | アサートされると、IPコアが要求に応答する準備ができていないことを示します。 |
6.1.6.5. テスト・インターフェイス
信号 |
入力/出力 |
説明 |
---|---|---|
test_in[66:0] | 入力 |
test_out [255:0] および aux_test_out [6:0] バスを選択するためのマルチプレクサーです。チャネル8〜15から駆動します。 次のエンコーディングが定義されています。
|
test_out[255:0] | 出力 |
test_out [255:0]チャネル8〜15へのルート。コア、アダプター、クロック、コンフィグレーション・ブロック、イコライゼーション・コントロール、その他、リセット、およびpipe_adaptorモジュールからの診断信号を含みます。 x16バリアントでのみ使用可能です。 |
7. レジスター
7.1. コンフィグレーション・スペース・レジスター
バイトアドレス |
コンフィグレーション・スペース・レジスター |
PCIe Specificationに対応する項 |
---|---|---|
0x000-0x03C |
PCIヘッダーType 0コンフィグレーション・レジスター |
Type 0コンフィグレーション・スペース・ヘッダー |
0x040-0x04C |
Power Management |
PCIパワー・マネジメント機能構造 |
0x050-0x05C |
MSI Capability Structure |
MSI機能構造、およびPCI Local Bus Specificationも参照してください。 |
0x060-0x06C | 予約済み | 該当なし |
0x070-0x0A8 |
PCI Express Capability Structure |
PCI Express機能構造 |
0x0B0-0x0B8 |
MSI-X Capability Structure |
MSI-X機能構造、およびPCI Local Bus Specificationも参照してください。 |
0x0BC-0x0FC | 予約済み | 該当なし |
0x100-0x134 | Advanced Error Reporting (AER) (PFのみ) | Advanced Error Reporting Capability |
0x138-0x184 | 予約済み | 該当なし |
0x188-0x1B0 |
Secondary PCI Express Extended Capability Header |
PCI Express Extended Capability |
0x1B4 |
予約済み |
該当なし |
0x1B8-0x1F4 | SR-IOV Capability Structure | Single Root I/O Virtualization and Sharing Specification, Rev, 1.1のSR-IOV Extended Capability Header |
0x1F8-0x1D0 | Transaction Processing Hints (TPH) Requester Capability | TLP Processing Hints (TPH) |
0x1D4-0x280 | 予約済み | 該当なし |
0x284-0x288 | Address Translation Services (ATS) Capability Structure | Single Root I/O Virtualization and Sharing Specification, Rev. 1.1 のAddress Translation Services Extended Capability (ATS) |
0xB80-0xBFC |
インテル固有 |
Vendor-Specificヘッダー (Headerのみ) |
0xC00 |
Optional Custom Extensions |
該当なし |
0xC00 | Optional Custom Extensions | 該当なし |
バイトアドレス |
ハードIPコンフィグレーション・スペース・レジスター |
PCIe Specificationに対応する項 |
---|---|---|
0x000 |
Device ID、Vendor ID |
Type 0コンフィグレーション・スペース・ヘッダー |
0x004 |
Status、Command |
Type 0コンフィグレーション・スペース・ヘッダー |
0x008 |
Class Code、Revision ID |
Type 0コンフィグレーション・スペース・ヘッダー |
0x00C |
Header Type、Cache Line Size |
Type 0コンフィグレーション・スペース・ヘッダー |
0x010 |
Base Address 0 |
Base Address Register |
0x014 |
Base Address 1 |
Base Address Register |
0x018 |
Base Address 2 |
Base Address Register |
0x01C |
Base Address 3 |
Base Address Register |
0x020 |
Base Address 4 |
Base Address Register |
0x024 |
Base Address 5 |
Base Address Register |
0x028 |
予約済み |
該当なし |
0x02C |
Subsystem ID、Subsystem Vendor ID |
Type 0コンフィグレーション・スペース・ヘッダー |
0x030 |
予約済み |
該当なし |
0x034 |
Capabilities Pointer |
Type 0コンフィグレーション・スペース・ヘッダー |
0x038 |
予約済み |
該当なし |
0x03C |
Interrupt Pin、Interrupt Line |
Type 0コンフィグレーション・スペース・ヘッダー |
0x040 | PME_Support、D1、D2、など | PCIパワー・マネジメント機能構造 |
0x044 | PME_en、PME_Status、など | Power Management Status and Control Register |
0x050 |
MSI-Message Control、Next Cap Ptr、Capability ID |
MSIおよびMSI-X機能構造 |
0x054 |
Message Address |
MSIおよびMSI-X機能構造 |
0x058 |
Message Upper Address |
MSIおよびMSI-X機能構造 |
0x05C |
Reserved Message Data |
MSIおよびMSI-X機能構造 |
0x0B0 |
MSI-X Message Control Next Cap Ptr Capability ID |
MSIおよびMSI-X機能構造 |
0x0B4 |
MSI-X Table Offset BIR |
MSIおよびMSI-X機能構造 |
0x0B8 |
Pending Bit Array (PBA) Offset BIR |
MSIおよびMSI-X機能構造 |
0x100 |
PCI Express Enhanced Capability Header |
Advanced Error Reporting拡張機能ヘッダー |
0x104 |
Uncorrectable Error Status Register |
Uncorrectable Error Statusレジスター |
0x108 |
Uncorrectable Error Mask Register |
Uncorrectable Error Maskレジスター |
0x10C |
Uncorrectable Error Mask Register |
Uncorrectable Error Severity Register |
0x110 |
Correctable Error Status Register |
Correctable Error Statusレジスター |
0x114 |
Correctable Error Mask Register |
Correctable Error Maskレジスター |
0x118 |
Advanced Error Capabilities and Control Register |
Advanced Error Capabilities and Control Register |
0x11C |
Header Log Register |
Header Log Register |
0x12C |
Root Error Command |
Root Error Command Register |
0x130 |
Root Error Status |
Root Error Status Register |
0x134 |
Error Source Identification Register Correctable Error Source ID Register |
Error Source Identification Register |
0x188 |
Next Capability Offset、PCI Express Extended Capability ID |
Secondary PCI Express Extended Capability |
0x18C |
Enable SKP OS、Link Equalization Req、Perform Equalization |
Link Control 3 Register |
0x190 |
Lane Error Status Register |
Lane Error Status Register |
0x194:0x1B0 |
Lane Equalization Control Register |
Lane Equalization Control Register |
0xB80 | VSEC Capabilityヘッダー | Vendor-Specific Extended Capabilityヘッダー |
0xB84 | VSEC Length、Revision、ID | Vendor-Specificヘッダー |
0xB88 | Intel Marker | インテル固有のレジスター |
0xB8C | JTAG Silicon ID DW0 | |
0xB90 | JTAG Silicon ID DW1 | |
0xB94 | JTAG Silicon ID DW2 | |
0xB98 | JTAG Silicon ID DW3 | |
0xB9C | User Device and Board Type ID | |
0xBA0:0xBAC | 予約済み | |
0xBB0 | General Purpose Control and Status Register | |
0xBB4 | Uncorrectable Internal Error Statusレジスター | |
0xBB8 | Uncorrectable Internal Error Maskレジスター | |
0xBBC | Correctable Error Statusレジスター | |
0xBC0 | Correctable Error Maskレジスター | |
0xBC4:BD8 | 予約済み | 該当なし |
0xC00 | Optional Custom Extensions | 該当なし |
7.1.1. レジスターアクセスの定義
略語 | 意味 |
---|---|
RW | 読み出しおよび書き込みアクセス |
RO | 読み出し専用 |
WO | 書き込み専用 |
RW1C | 1を書き込こむとクリアする読み出し |
RW1CS | 1を書き込むとスティッキーをクリアする読み出し |
RWS | スティッキーを書き込む読み出し |
7.1.2. PCIコンフィグレーション・ヘッダー・レジスター
コンフィグレーション・スペース・レジスターとPCIe Specificationの対応関係には、これらのレジスターを説明するPCI Express Base Specificationの適切な項がリストされています。
7.1.3. PCI Express機能構造
7.1.4. インテル定義のVSEC Capabilityヘッダー
ビット |
レジスターの説明 |
デフォルト値 |
アクセス |
---|---|---|---|
[31:20] | Next Capability Pointer。値は、次に実装されるCapability Structureの開始アドレスです。それ以外の場合は、NULLです。 | 可変 | RO |
[19:16] |
Version。VSECバージョンに対する、PCIe仕様で定義されている値です。 | 1 |
RO |
[15:0] |
PCI Express Extended Capability ID。VSEC Capability IDに対する、PCIe仕様で定義されている値です。 | 0x000B |
RO |
7.1.4.1. インテル定義のVendor Specificヘッダー
ビット |
レジスターの説明 |
デフォルト値 |
アクセス |
---|---|---|---|
[31:20] | VSEC Length。この構造をバイト単位で表した長さの合計です。 | 0x5C | RO |
[19:16] |
VSEC。ユーザーによるコンフィグレーションが可能なVSECリビジョンです。 | 使用不可 |
RO |
[15:0] |
VSEC ID。ユーザーによるコンフィグレーションが可能なVSEC IDです。このIDをご自身のVendor IDに変更する必要があります。 | 0x1172 |
RO |
7.1.4.2. Intel Marker
ビット |
レジスターの説明 |
デフォルト値 |
アクセス |
---|---|---|---|
[31:0] |
Intel Marker - これが正しい構造であることを確認できるようにする、標準のインテル・プログラミング・ソフトウェアの追加マーカーです。 |
0x41721172 | RO |
7.1.4.3. JTAG Silicon ID
ビット |
レジスターの説明 |
デフォルト値 6 |
アクセス |
---|---|---|---|
[31:0] | JTAG Silicon ID DW3 | 一意のID | RO |
[31:0] | JTAG Silicon ID DW2 | 一意のID |
RO |
[31:0] |
JTAG Silicon ID DW1 | 一意のID |
RO |
[31:0] | JTAG Silicon ID DW0 | 一意のID | RO |
7.1.4.4. ユーザーによるコンフィグレーション可能なデバイスおよびボードID
ビット |
レジスターの説明 |
デフォルト値 |
アクセス |
---|---|---|---|
[15:0] |
ロードする .sof ファイルのIDを指定できます。 |
コンフィグレーション・ビットから | RO |
7.1.5. Uncorrectable Internal Error Status (修正不可能な内部エラーステータス) レジスター
ビット |
レジスターの説明 |
リセット値 |
アクセス |
---|---|---|---|
[31:13] |
予約済み |
0 |
RO |
[12] | デバッグ・バス・インターフェイス (DBI) アクセス・エラー・ステータス | 0 | RW1CS |
[11] |
Config RAMブロックからのECCエラー |
0 |
RW1CS |
[10] |
Retry Bufferの修正不可能なECCエラーステータス |
0 |
RO |
[9] |
TLP RAMのRetry Startの修正不可能なECCエラーステータス |
0 |
RW1CS |
[8] |
IPコアによってレポートされたRX Transaction Layerのパリティーエラー |
0 |
RW1CS |
[7] |
IPコアによってレポートされたTX Transaction Layerのパリティーエラー |
0 |
RW1CS |
[6] |
FPGAによってレポートされた内部エラー |
0 |
RW1CS |
[5:4] |
予約済み | 0 |
RW1CS |
[3] |
RX Buffer Header #2 RAMの修正不可能なECCエラーステータス |
0 |
RW1CS |
[2] |
RX Buffer Header #1 RAMの修正不可能なECCエラーステータス |
0 |
RW1CS |
[1] |
RX Buffer Data RAM #2の修正不可能なECCエラーステータス |
0 |
RW1CS |
[0] |
RX Buffer Data RAM #1の修正不可能なECCエラーステータス |
0 |
RW1CS |
7.1.6. Uncorrectable Internal Error Mask (修正不可能な内部エラーマスク) レジスター
ビット |
レジスターの説明 |
リセット値 |
アクセス |
---|---|---|---|
[31:13] |
予約済み |
1b'0 |
RO |
[12] | Debug Bus Interfaceのマスク | 1b'1 | RO |
[11] |
Config RAMブロックからのECCエラーのマスク |
1b'1 |
RWS |
[10] |
Retry BufferのUncorrectable ECCエラーステータスのマスク |
1b'1 |
RO |
[9] |
TLP RAMのRetry Buffer用のUncorrectable ECCエラーステータスのマスク |
1b'1 |
RWS |
[8] |
IPコアによってレポートされたRX Transaction Layerのパリティーエラーのマスク |
1b'1 |
RWS |
[7] |
IPコアによってレポートされたTX Transaction Layerのパリティーエラーのマスク |
1b'1 |
RWS |
[6] |
FPGAによってレポートされたUncorrectable Internalエラーのマスク |
1b'1 |
RO |
[5] |
予約済み |
1b'0 |
RWS |
[4] |
予約済み |
1b'1 |
RWS |
[3] |
RX Buffer Header #2 RAMのUncorrectable ECCエラーステータスのマスク |
1b'1 |
RWS |
[2] |
RX Buffer Header #1 RAMのUncorrectable ECCエラーステータスのマスク |
1b'1 |
RWS |
[1] |
RX Buffer Data RAM #2のUncorrectable ECCエラーステータスのマスク |
1b'1 |
RWS |
[0] |
RX Buffer Data RAM #1のUncorrectable ECCエラーステータスのマスク |
1b'1 |
RWS |
7.1.7. Correctable Internal Error Status (修正可能な内部エラーステータス) レジスター
ビット |
レジスターの説明 |
リセット値 |
アクセス |
---|---|---|---|
[31:12] |
予約済み |
0 |
RO |
[11] | Config RAMの修正可能なECCエラーステータス | 0 | RW1CS |
[10] | Retry Bufferの修正可能なECCエラーステータス | 0 | RW1CS |
[9] | TLP RAMのRetry Startの修正可能なECCエラーステータス | 0 | RW1CS |
[8] | 予約済み | 0 | RO |
[7] | 予約済み | 0 | RO |
[6] | FPGAによってレポートされた内部エラー | 0 | RW1CS |
[5] |
予約済み |
0 |
RO |
[4] |
PHY Gen3 SKPエラーが発生しました。Gen3データパターンにSKPパターン (8'b10101010) が含まれていると、SKP OSとして誤って解釈され、PHYで誤ったブロック・リアライメントが発生します。 |
0 |
RW1CS |
[3] | RX Buffer Header RAM #2の修正可能なECCエラーステータス | 0 |
RW1CS |
[2] | RX Buffer Header RAM #1の修正可能なECCエラーステータス | 0 |
RW1CS |
[1] |
RX Buffer Data RAM #2の修正可能なECCエラーステータス |
0 |
RW1CS |
[0] |
RX Buffer Data RAM #1の修正可能なECCエラーステータス |
0 |
RW1CS |
7.1.8. Correctable Internal Error Mask (修正可能な内部エラーマスク) レジスター
ビット |
レジスターの説明 |
リセット値 |
アクセス |
---|---|---|---|
[31:12] |
予約済み |
0 |
RO |
[11] | Config RAMの修正可能なECCエラーステータスのマスク | 0 | RWS |
[10] | Retry Bufferの修正可能なECCエラーステータスのマスク | 1 | RWS |
[9] | TLP RAMのRetry Start用のECCエラーステータスのマスク | 1 | RWS |
[8] | 予約済み | 0 | RO |
[7] | 予約済み | 0 | RO |
[6] | FPGAによってレポートされた内部エラーのマスク | 0 | RWS |
[5] |
予約済み |
0 |
RO |
[4] |
PHY Gen3 SKPエラーのマスク |
1 |
RWS |
[3] | RX Buffer Header RAM #2の修正可能なECCエラーステータスのマスク | 1 |
RWS |
[2] | RX Buffer Header RAM #1の修正可能なECCエラーステータスのマスク | 1 |
RWS |
[1] |
RX Buffer Data RAM #の修正可能なECCエラーステータスのマスク |
1 |
RWS |
[0] |
RX Buffer Data RAM #1の修正可能なECCエラーステータスのマスク |
1 |
RWS |
7.2. Avalon-MM DMAブリッジのレジスター
7.2.1. PCI Express Avalon-MMブリッジのレジスター・アドレス・マップ
アドレス範囲 | レジスター |
---|---|
0x0050 | Avalon-MM to PCIe割り込みイネーブルレジスター |
0x0060 | Avalon-MM to PCIe割り込みステータスレジスター |
0x0800-0x081F |
予約済み |
0x0900-0x091F |
予約済み |
0x1000-0x1FFF | バーストAvalon-MMスレーブ用のアドレス変換テーブル |
0x3060 | PCIe to Avalon-MM割り込みステータスレジスター |
0x3070 | PCIe to Avalon-MM割り込みイネーブルレジスター |
0x3A00-0x3A1F |
予約済み |
0x3B00-0x3B1F |
予約済み |
0x3C00-0x3C1F | PCIe Configuration Informationレジスター |
7.2.1.1. Avalon-MM to PCI Express割り込みステータスレジスター
Root Complexのみがこのレジスターにアクセスする必要があります。ただし、ハードウェアは他のAvalon-MMマスターによるこのレジスターへのアクセスを妨げることはありません。
ビット |
名称 |
アクセス |
説明 |
---|---|---|---|
[31:16] |
予約済み |
該当なし |
該当なし |
[15:0] |
AVL_IRQ_ASSERTED[15:0] |
RO |
Avalon-MM RXマスターポートへのAvalon-MM割り込み (IRQ) 入力ポートの現在の値は、次のとおりです。
PCIe* バリアントは最大16個の異なるIRQ入力ポートを持つことができます。各 AVL_IRQ_ASSERTED[] ビットは、対応するIRQ入力ポートの値を反映します。 |
7.2.1.2. Avalon-MM to PCI Express割り込みイネーブルレジスター
PCI Express割り込みは、Avalon-MM to PCI Express Interrupt Enable レジスターの対応するビットを設定することにより、Avalon-MM to PCI Express Interrupt Status レジスターに登録された任意の条件に対してアサートできます。
ビット |
名称 |
アクセス |
説明 |
---|---|---|---|
[31:16] |
予約済み |
該当なし |
該当なし |
[15:0] |
AVL_IRQ[15:0] |
RW |
指定されたAvalon-MM割り込み信号がアサートされた場合、PCI Express割り込みの生成を可能にします。システムには、最大16個の独立した入力割り込み信号を持つことができます。 |
7.2.1.3. 高性能Avalon-MM 32ビットのスレーブモジュールのアドレスマッピング
(address + 32 * burst count) <= (page base address + page size )
アドレス・マッピング・テーブル
アドレス・マッピング・テーブルには、Control および Status レジスターからアクセスできます。アドレス・マッピング・テーブルの各エントリーは64ビット (8バイト) 幅で、2つの連続したレジスターで構成されています。偶数アドレスレジスターはビット[31:0]を保持します。奇数アドレスレジスターはビット[63:32]を保持します。Avalon-MMアドレスの上位ビットは、アドレス・マッピング・ウィンドウを選択します。Avalon-MMの下位アドレスビットは変更されずにPCIe TLPに渡され、アドレス・マッピング・テーブルでは無視されます。例えば、コンフィグレーション時にそれぞれ64 KBの16個のアドレス・マッピング・ウィンドウを定義し、アドレス0x1018および0x101Cのレジスターはそれぞれ0x56780000および0x00001234でプログラムされている場合、バーストAvalon-MMスレーブ・インターフェイス上のアドレス0x39AB0への読み出しまたは書き込みトランザクションは、PCIeアドレス0x0000123456789AB0にアクセスするメモリーの読み出しまたは書き込みTLPに変換されます。
パススルーされるLSBの数は、ページのサイズを定義し、コンフィグレーション時に設定されます。結果のPCIeアドレスのビット[63:32]がゼロの場合、32ビット幅のアドレスを備えたTLPが、PCI Express規格の要求に従って作成されます。
アドレス |
名称 |
アクセス |
説明 |
---|---|---|---|
0x1000 |
A2P_ADDR_MAP_LO0 |
RW |
Avalon-MM-to-PCI Expressアドレス・マップ・エントリー0の下位ビットです。 |
0x1004 |
A2P_ADDR_MAP_HI0 |
RW |
Avalon-MM-to-PCI Expressアドレス・マップ・エントリー0の上位ビットです。 |
0x1008 |
A2P_ADDR_MAP_LO1 |
RW |
Avalon-MM-to-PCI Expressアドレス・マップ・エントリー1の下位ビットです。 このエントリーは、アドレス変換テーブルエントリーの数が1より大きい場合にのみ実装されます。 |
0x100C |
A2P_ADDR_MAP_HI1 |
RW |
Avalon-MM-to-PCI Expressアドレス・マップ・エントリー1の上位ビットです。 このエントリーは、アドレス変換テーブルエントリーの数が1より大きい場合にのみ実装されます。 |
7.2.1.4. エンドポイント用のPCI Express to Avalon-MM Interrupt StatusレジスターおよびEnableレジスター
次の表では、エンドポイント用のInterrupt Statusレジスターについて説明しています。これは、Avalon-MM割り込みをアサートさせる可能性のあるすべての条件のステータスを記録しています。
Avalon-MM割り込みは、PCI Express to Avalon-MM Interrupt Enable レジスターの対応するビットを設定することで、Avalon-MM Interrupt Status 内で記載された任意の条件をアサートすることが可能です。
PCI Express割り込みは、記述されているすべてのエラー条件に対してもイネーブル可能です。ただし、特定のビットに対してAvalon-MMまたはPCI Express割り込みの1つのみをイネーブルすることが可能です。通常は、PCI ExpressまたはAvalon-MMドメインのいずれかの単一のプロセスが、割り込みによってレポートされた条件を処理します。
ビット |
名称 |
アクセス |
説明 |
---|---|---|---|
[31:0] | Avalon-MM Interrupt Status レジスター内のビットの1-for1イネーブルマッピング | RW | 1に設定されている場合、Avalon-MM Interrupt Status レジスターの関連するビットを設定すると、Avalon-MM割り込み信号である cra_irq_o がアサートされます。 |
7.2.1.5. PCI Express Configuration Informationレジスター
アドレス | 名称 | アクセス | 説明 |
---|---|---|---|
0x3C00 | CONFIG_INFO_0 | RO | 次のフィールドが定義されています。
|
0x3C04 | CONFIG_INFO_1 | RO | 次のフィールドが定義されています。
|
0x3C08 | CONFIG_INFO_2 | RO | 次のフィールドが定義されています。
|
0x3C0C | CONFIG_INFO_3 | RO | MSI Address Lower |
0x3C10 | CONFIG_INFO_4 | RO | MSI Address Upper |
0x3C14 | CONFIG_INFO_5 | RO | MSI Mask |
0x3C18 | CONFIG_INFO_6 | RO | 次のフィールドが定義されています。
|
0x3C1C | CONFIG_INFO_7 | RO | 次のフィールドが定義されています。
|
アドレス | 名称 | アクセス | 説明 |
---|---|---|---|
0x3C00 | CONFIG_INFO_0 | RO | 次のフィールドが定義されています。
|
0x3C04 | CONFIG_INFO_1 | RO | 次のフィールドが定義されています。
|
0x3C08 | CONFIG_INFO_2 | RO | 次のフィールドが定義されています。
|
0x3C0C | CONFIG_INFO_3 | RO | MSI Address Lower |
0x3C10 | CONFIG_INFO_4 | RO | MSI Address Upper |
0x3C14 | CONFIG_INFO_5 | RO | MSI Mask |
0x3C18 | CONFIG_INFO_6 | RO | 次のフィールドが定義されています。
|
0x3C1C | CONFIG_INFO_7 | RO | AER uncorrectable error mask |
0x3C20 | CONFIG_INFO_8 | RO | AER correctable error mask |
0x3C24 | CONFIG_INFO_9 | RO | AER uncorrectable error severity |
7.2.2. DMA Descriptor Controllerレジスター
DMA Descriptor Controllerは、DMAのReadおよびWrite動作を管理します。DMA Descriptor Controllerは、エンドポイント・バリエーションで使用可能です。Descriptor Controllerは、ReadおよびWrite Data Moverごとに最大128個のディスクリプターをサポートします。ReadおよびWriteは、FPGAの観点からです。読み出しは、 PCIe* アドレス空間からFPGA Avalon-MMアドレス空間へです。書き込みは、FPGA Avalon-MM空間から PCIe* アドレス空間へです。
Descriptor Controllerの内部レジスターは、 PCIe* アドレス空間にあるディスクリプター・テーブルの位置およびサイズでプログラムします。DMA Descriptor Controllerは、テーブルを独自の内部FIFOにコピーするよう、Read Data Moverに指示します。DMA Descriptor Controllerが別のコンポーネントとしてインスタンス化されると、RdDmaRxData_i[159:0] および WrDmaRxData_i[159:0] バス上のテーブルエントリーを駆動します。DMA Descriptor ControllerがAvalon-MM DMAブリッジ内に組み込まれている場合、この情報は内部バスで駆動されます。
Read Data Moverは、PCIeアドレス空間からAvalon-MMアドレス空間にデータを転送します。PCIeリンクでメモリー読み出しTLPを発行します。返されたデータをAvalon-MMアドレス空間内の位置に書き込みます。ソースアドレスは、PCIeアドレス空間内のデータのアドレスです。送信先アドレスは、Avalon-MMアドレス空間にあります。
Write Data Moverは、Avalon-MMアドレス空間からデータを読み出し、PCIeアドレス空間に書き込みます。PCIeリンクでメモリー書き込みTLPを発行します。ソースアドレスは、Avalon-MMアドレス空間にあります。送信先アドレスは、PCIeアドレス空間にあります。
DMA Descriptor Controllerは、読み出しディスクリプターおよび書き込みディスクリプターの完了ステータスを別々のステータステーブルに記録します。各テーブルには、128個のディスクリプターに対応する128個の連続したDWORDエントリーがあります。実際のディスクリプターは、RC Read Descriptor Base および RC Write Descriptor Base レジスターにプログラムされた値からのオフセット0x200のステータスエントリーの直後に格納されます。ステータスおよびディスクリプター・テーブルは、 PCIe* 物理アドレス空間の32バイト境界に配置する必要があります。
Descriptor Controllerは、ステータスDWORDの Update ビットに1を書き込み、正常に完了したことを示します。Descriptor Controllerは、各トランザクションの最後のディスクリプターのMSI割り込みも送信します。RD_CONTROL または WR_CONTROLレジスターの Update ビットが設定されている場合は、各ディスクリプターの後に送信します。このMSIを受信した後、ホスト・ソフトウェアは Update ビットをポーリングして、ステータスを決定できます。ステータステーブルは、メモリー内のディスクリプター・テーブルの前にあります。Descriptor Controllerは、各ディスクリプターの完了時に Update ビットを書き込んだり、MSIを送信しません。RD_CONTROL または WR_CONTROL レジスターの Update ビットが設定されていない限り、Update ビットを書き込むか、IDが RD_DMA_LAST PTR または WR_DMA_LAST_PTR レジスターに格納されているディスクリプターのMSIを送信するのみです。
7.2.2.1. 読み出し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から始まります。
アドレスオフセット |
レジスター |
アクセス |
説明 |
リセット値 |
---|---|---|---|---|
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 |
7.2.2.2. 書き込みDMA内部Descriptor Controllerレジスター
アドレスオフセット |
レジスター |
アクセス |
説明 |
リセット値 |
---|---|---|---|---|
0x0000 |
Write Status and Descriptor Base (Low) |
R/W |
PCIe* システムメモリーの書き込みステータスおよびディスクリプター・テーブルのベースアドレスの下位32ビットを指定します。このアドレスは32バイト境界にある必要があります。 |
Unknown |
0x0004 |
Write Status and Descriptor Base (High) |
R/W |
PCIe* システムメモリーの書き込みステータスおよびディスクリプター・テーブルのベースアドレスの上位32ビットを指定します。 |
Unknown |
0x0008 |
Write Status and Descriptor FIFO Base (Low) |
RW |
エンドポイント・メモリー内の書き込みディスクリプターFIFOのベースアドレスの下位32ビットを指定します。アドレスは、Write Data MoverのAvalon-MM Master Portから見た、Descriptor ControllerのWrite Descriptor TableのAvalon-MM Slave PortのAvalon-MMアドレスである必要があります。 |
Unknown |
0x000C |
Write Status and Descriptor FIFO Base (High) |
RW |
エンドポイント・メモリー内の書き込みディスクリプターFIFOのベースアドレスの上位32ビットを指定します。アドレスは、Write Data MoverのAvalon-MM Master Portから見た、Descriptor ControllerのWrite Descriptor TableのAvalon-MM Slave PortのAvalon-MMアドレスである必要があります。 |
Unknown |
0x0010 |
WR_DMA_LAST_PTR |
RW |
[31:8]: 予約済み [7:0]: DescriptorID 読み出されると、要求された最後のディスクリプターのIDを返します。未処理のDMA要求がない場合、またはDMAがリセットされている場合は、値0xFFを返します。 書き込まれると、要求された最後のディスクリプターのIDを指定します。読み出された値および書き込まれた値の違いは、処理されるディスクリプターの数です。 例えば、値が4の場合、最後に要求されたディスクリプターは4です。さらに5つのディスクリプターを指定するには、ソフトウェアは WR_DMA_LAST_PTR レジスターに9を書き込む必要があります。DMAはさらに5つのディスクリプターを実行します。 読み出しDMAですべてのディスクリプターの Update ビットを記録するには、このレジスターをプログラムして一度に1つのディスクリプターを転送するか、または WR_CONTROL レジスターの Update ビットを設定します。 ディスクリプターIDは、WR_TABLE_SIZE に到達した後に、ループして0に戻ります。 WR_TABLE_SIZE - WR_DMA_LAST_PTR よりも多くのポインターを処理する場合は、2つの手順を実行する必要があります。まず、WR_TABLE_SIZE と同じ値を書き込むことにより WR_TABLE_SIZE までのポインターを処理し、それが完了するのを待ちます。次に、残りのディスクリプターの数を WR_DMA_LAST_PTR に書き込みます。 書き込みDMAですべてのディスクリプターの Status Update ビットを記録するには、このレジスターをプログラムして一度に1つのディスクリプターを転送します。 |
[31:8]: Unknown [7:0]:0xFF |
0x0014 | WR_TABLE_SIZE |
RW |
[31:7]: 予約済み [6:0]: Size -1 このレジスターを使用すると、ユーザーは128エントリーのデフォルトサイズよりも小さいテーブルサイズを柔軟に指定できます。小さいサイズはメモリーを節約します。このレジスターを目的の値-1でプログラムします。 この値は、最後の Descriptor ID を指定します。 |
[31:7]: Unknown [6:0]: 0x7F |
0x0018 | WR_CONTROL |
RW |
[31:1]: 予約済み [0]: Update ディスクリプターの処理状況のレポート方法を制御します。Update ビットが設定されている場合、処理されたすべてのディスクリプターのステータスを返します。設定されていない場合、WR_DMA_LAST_PTR レジスターの最新のエントリーのステータスのみを返信します。 |
[31:1]: Unknown [0]: 0x0 |
8. DMA Descriptor Controllerのプログラミング・モデル
Avalon-MM DMA Bridgeモジュールには、オプションのDMA Descriptor Controllerが含まれています。このDescriptor Controllerをイネーブルする場合、定義済みのプログラミング・モデルに従う必要があります。このプログラミング・モデルには、次の手順が含まれます。
- 次の図に示すように、
PCIe*
システムメモリーでディスクリプター・テーブルを準備します。図 58. ディスクリプター・テーブルのサンプル
- ディスクリプター・テーブルをプログラムし、すべてのディスクリプターのソースおよび送信先アドレスとサイズを提供します。
- 個々のディスクリプターの中間ステータス更新については、RD_CONTROL または WR_CONTROL Update ビットもプログラムします。これらのビットの説明については、読み出しDMA内部Descriptor Controllerレジスターおよび書き込みDMA内部Descriptor Controllerレジスターの項を参照してください。
- Read Data Moverにテーブルを独自の内部FIFOにコピーする指示を、DMA Descriptor Controllerに指示します。
- 追加のディスクリプターを使用してディスクリプター・テーブルを再プログラムする前に、MSI割り込みが最後のディスクリプターの完了を通知するのを待ちます。プログラムされた最後のディスクリプターが完了するまで、ディスクリプター・テーブルを更新できません。
以下は、コンフィグレーションの例です。
- DMA IPコアを備えたAvalon-MM Bridgeを含むエンドポイント
- 内部DMA Descriptor Controller
- 非バーストAvalon-MMスレーブ
ホストソフトウェアは、Avalon-MM DMA BridgeのBAR0非バーストAvalon-MMマスターをプログラムして、DMA Descriptor Controllerの内部レジスターに書き込むことができます。このプログラミングは、DMA Descriptor ControllerがDMA命令をPCIe ReadおよびWrite Data Moverに生成するために必要な情報を提供します。DMA Descriptor Controllerは、Avalon-MM DMA Bridgeの非バーストAvalon-MMスレーブ・インターフェイスを介して、DMAステータスをホストに送信します。DMA Descriptor Controllerの非バーストAvalon-MMマスターおよびスレーブ・インターフェイスは内部にあり、他の目的には使用できません。
8.1. 読み出しDMAの例
この例では、3つのデータブロックをPCIeアドレス空間 (システムメモリー) からAvalon-MMアドレス空間に移動させます。

次の図は、PCIeおよびAvalon-MMアドレス空間のデータブロックの位置とサイズ、およびディスクリプター・テーブルのフォーマットを示しています。この例では、RD_TABLE_SIZE の値は127です。
ディスクリプター・テーブルには、128のエントリーが含まれています。ステータステーブルは、メモリー内の可変数のディスクリプターの前にあります。ReadおよびWrite StatusとDescriptor Tableは、それぞれ Read Descriptor Base Register および Write Descriptor Base Register で指定されたアドレスにあります。
-
ソフトウェアは、
PCIe*
システムメモリー内のRead Descriptor StatusテーブルおよびDescriptorテーブルのメモリーを割り当てます。メモリー割り当てには、次の計算が必要です。
- 読み出しステータステーブルの各エントリーは4バイトです。128の読み出しエントリーには、512バイトのメモリーが必要です。
-
各ディスクリプターは32バイトです。3つのディスクリプターには、96バイトのメモリーが必要です。
注: 起こり得るオーバーフロー状態を回避するには、ディスクリプターの初期数ではなく、RD_TABLE_SIZE によってサポートされるディスクリプターの数に必要なメモリーを割り当てます。
ソフトウェアがステータステーブルおよびディスクリプター・テーブルに割り当てる必要のあるメモリーの合計は、608バイトです。この例で割り当てられたメモリーの開始アドレスは、0xF000_0000です。このアドレスをRead Descriptor Controllerの Read Status and Descriptor Base レジスターに書き込みます。 - Read Status and Descriptor Base からのオフセット0x200から始まるRead Descriptor Controllerテーブルをプログラムします。このオフセットは、図 60 に示されているアドレスと一致します。3つのデータブロックには、3つのディスクリプターが必要です。
- ディスクリプター・ステータス・テーブルの開始アドレスを使用して、Read Descriptor Controllerの Read Status and Descriptor Base レジスターをプログラムします。
-
Read Descriptor Controllerの Read Descriptor FIFO Base を、オンチップ・ディスクリプター・テーブルFIFOの開始アドレスでプログラムします。これは、Platform Designerの rd_dts_slave ポートのベースアドレスです。この例では、アドレスは0x0100_0000です。
図 62. オンチップ読み出しFIFOのアドレス
- 各ディスクリプターのステータス更新を取得するには、Read Descriptor Controllerの RD_CONTROL レジスターを0x1でプログラムします。この手順はオプションです。
- Read Descriptor Controllerレジスター RD_DMA_LAST_PTR に値3をプログラムします。このレジスターをプログラムすると、Read Descriptor Controllerディスクリプター・テーブルのフェッチプロセスがトリガーされます。したがって、このレジスターへの書き込みは、DMA転送をセットアップする最後の手順である必要があります。
- ホストはMSI割り込みを待ちます。Read Descriptor Controllerは、最後のディスクリプターの完了後、MSIをホストに送信します。Read Descriptor Controllerは、Update も書き込みます。
-
移動する追加のデータブロックがある場合は、次の手順を実行して、追加の転送を設定します。
- メモリーアドレス0xF000_0200 + (<前の最後のディスクリプター・ポインター> * 0x20) から始まるディスクリプター・テーブルをプログラムします。この場合、ディスクリプター・ポインターは3でした。
-
Read Descriptor Controllerレジスター RD_DMA_LAST_PTR を、previous_value (3 in this case) + number of new descriptors でプログラムします。このレジスターをプログラムすると、Read Descriptor Controllerディスクリプター・テーブルのフェッチプロセスがトリガーされます。したがって、このレジスターへの書き込みは、DMA転送をセットアップする最後の手順である必要があります。
注: RD_DMA_LAST_PTR が RD_TABLE_SIZE に近づいたら、必ず RD_TABLE_SIZE と等しい値で RD_DMA_LAST_PTR をプログラムしてください。そうすることで、最小のオフセット (この例では0xF000_0200) で最初のディスクリプターへのロールオーバーが確実に行われます。RD_DMA_LAST_PTR レジスターのプログラミングの詳細は、読み出しDMA Descriptor Controllerレジスターの項の RD_DMA_LAST_PTR の説明を参照してください。
8.2. 書き込みDMAの例
この例では、3つのデータブロックをAvalon-MM空間からPCIeアドレス空間 (システムメモリー) に移動させます。

次の図は、PCIeおよび-MMアドレス空間のデータブロックの位置とサイズ、およびディスクリプター・テーブルのフォーマットを示しています。この例では、RD_TABLE_SIZE の値は127です。
ディスクリプター・テーブルには、128のエントリーが含まれています。ステータステーブルは、メモリー内の可変数のディスクリプターの前にあります。ReadおよびWrite StatusとDescriptor Tableは、それぞれ Read Descriptor Base Register および Write Descriptor Base Register で指定されたアドレスにあります。
-
ソフトウェアは、ホストメモリー内のWrite Descriptor StatusテーブルおよびWrite Descriptor Controllerテーブルのメモリーを割り当てます。メモリー割り当てには、次の計算が必要です。
- 書き込みステータステーブルの各エントリーは4バイトです。128の書き込みエントリーには、512バイトのメモリーが必要です。
-
各ディスクリプターは32バイトです。3つのディスクリプターには、96バイトのメモリーが必要です。
注: 起こり得るオーバーフロー状態を回避するには、ディスクリプターの初期数ではなく、RD_TABLE_SIZE によってサポートされるディスクリプターの数に必要なメモリーを割り当てます。
ソフトウェアがステータステーブルおよびディスクリプター・テーブルに割り当てる必要のあるメモリーの合計は、608バイトです。Write Descriptor Controller Statusテーブルは、Read Descriptor Controller Statusテーブルに続きます。Read Statusテーブルのエントリーには、512バイトのメモリーが必要です。したがって、Write Descriptor Statusテーブルは0xF000_0200から始まります。 - 図 64 に示すアドレスからのオフセット0x200から始まるWrite Descriptor Controllerテーブルをプログラムします。3つのデータブロックには、3つのディスクリプターが必要です。
- ディスクリプター・テーブルの開始アドレスを使用して、Write Descriptor Controllerの Write Status and Descriptor Base レジスターをプログラムします。
-
オンチップ書き込みディスクリプター・テーブルFIFOの開始アドレスで、Write Descriptor Controllerの Write Descriptor FIFO Base を、プログラムします。これは、Platform Designerの wr_dts_slave ポートのベースアドレスです。この例では、アドレスは0x0100_0200です。
図 66. オンチップ書き込みFIFOのアドレス
- 各ディスクリプターのステータス更新を取得するには、Write Descriptor Controllerレジスター WR_CONTROL を0x1でプログラムします。この手順はオプションです。
- Write Descriptor Controllerレジスター WR_DMA_LAST_PTR に値3をプログラムします。このレジスターに書き込むと、Write Descriptor Controllerディスクリプター・テーブルのフェッチプロセスがトリガーされます。したがって、このレジスターへの書き込みは、DMA転送をセットアップする最後の手順である必要があります。
- ホストはMSI割り込みを待ちます。Write Descriptor Controllerは、最後のディスクリプターの完了後、MSIをホストに送信します。Write Descriptor Controllerは、Update も書き込みます。
-
移動させる追加のデータブロックがある場合は、次の手順を実行して、追加の転送を設定します。
- メモリーアドレス0xF000_0200 + (<前の最後のディスクリプター・ポインター> * 0x20) から始まるディスクリプター・テーブルをプログラムします。この場合、ディスクリプター・ポインターは3でした。
-
Write Descriptor Controllerレジスター WR_DMA_LAST_PTR を、previous_value (3 in this case) + number of new descriptors でプログラムします。このレジスターに書き込むと、Write Descriptor Controllerディスクリプター・テーブルのフェッチプロセスがトリガーされます。したがって、このレジスターへの書き込みは、DMA転送をセットアップする最後の手順である必要があります。
注: WR_DMA_LAST_PTR が WR_TABLE_SIZE に近づいたら、必ず WR_TABLE_SIZE と等しい値で WR_DMA_LAST_PTR をプログラムしてください。そうすることで、最小のオフセット (この例では0xF000_0200) で最初のディスクリプターへのロールオーバーが確実に行われます。WR_DMA_LAST_PTR レジスターのプログラミングの詳細は、Write DMA Descriptor Controllerレジスター の項の WR_DMA_LAST_PTR の説明を参照してください。
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動作が完了したかを決定します。
8.4. 読み出しDMAおよび書き込みDMAのディスクリプター・フォーマット
読み出しおよび書き込みディスクリプターは、 PCIe* システムメモリー内の別のディスクリプター・テーブルに格納されます。各テーブルには、最大128個のディスクリプターを格納できます。各ディスクリプターは、8 DWORD、つまり32バイトです。Read DMAおよびWrite DMAディスクリプター・テーブルは、Read Status and Descriptor Base および Write Status and Descriptor Base アドレスレジスターにプログラムされたアドレスから、0x200バイトのオフセットで始まります。
RD_DMA_LAST_PTR または WR_DMA_LAST_PTR レジスターをプログラムすると、ReadまたはWrite Descriptor Controllerディスクリプター・テーブルのフェッチプロセスがトリガーされます。したがって、これらのレジスターへの書き込みは、DMA転送をセットアップする最後の手順である必要があります。
アドレスオフセット |
レジスター名 |
説明 |
---|---|---|
0x00 |
RD_LOW_SRC_ADDR |
読み出しDMAソースアドレスの下位DWORDです。Read Data Moverがデータをフェッチする PCIe* システムメモリーのアドレスを指定します。 |
0x04 |
RD_HIGH_SRC_ADDR |
読み出しDMAソースアドレスの上位DWORDです。Read Data Moverがデータをフェッチする PCIe* システムメモリーのアドレスを指定します。 |
0x08 |
RD_CTRL_LOW_DEST_ADDR |
読み出しDMA送信先アドレスの下位DWORDです。Read Data Moverがデータを書き込むAvalon-MMドメインのアドレスを指定します。 |
0x0C |
RD_CTRL_HIGH_DEST_ADDR |
読み出しDMA送信先アドレスの上位DWORDです。Read Data Moverがデータを書き込むAvalon-MMドメインのアドレスを指定します。 |
0x10 | CONTROL | 次の情報を指定します。
|
0x14 - 0x1C | 予約済み | 該当なし |
アドレスオフセット |
レジスター名 |
説明 |
---|---|---|
0x00 |
WR_LOW_SRC_ADDR |
書き込みDMAソースアドレスの下位DWORDです。Write Data MoverがデータをフェッチするAvalon-MMドメインのアドレスを指定します。 |
0x04 |
WR_HIGH_SRC_ADDR |
書き込みDMAソースアドレスの上位DWORDです。Write Data MoverがデータをフェッチするAvalon-MMドメインのアドレスを指定します。 |
0x08 |
WR_CTRL_LOW_DEST_ADDR |
Write Data Moverの送信先アドレスの下位DWORDです。Write DMAがデータを書き込む PCIe* システムメモリーのアドレスを指定します。 |
0x0C |
WR_CTRL_HIGH_DEST_ADDR |
書き込みDMA送信先アドレスの上位DWORDです。Write Data Moverがデータを書き込む PCIe* システムメモリーのアドレスを指定します。 |
0x10 | CONTROL | 次の情報を指定します。
|
0x14 - 0x1C | 予約済み | 該当なし |
9. Avalon-MMルートポートのプログラミング・モデル
アプリケーション層は、Control Register Access (CRA) インターフェイスを使用して、コンフィグレーションの読み出しおよび書き込み要求、メッセージ要求、またはエンドポイントのシングルdwordメモリーの読み出しおよび書き込み要求のためのTLP形式のデータを、Root Port TLP TX Data Registerに書き込みます。
ソフトウェアは、コンフィグレーション要求をダウンストリーム・ポートに発行する前に、Root Port Link Status Registerをチェックして、Data Link Layer Link Activeビットが1'b1に設定されていることを確認する必要があります。
TX TLPプログラミングモデルは、データ幅に応じてスケーリングされます。アプリケーション層は、64ビットおよび128ビットの両方のインターフェイスに対して同じ書き込みを実行します。一度にサポートできる未処理のノンポステッド要求は1つだけであり、タグ16〜31を使用してノンポステッド要求を識別する必要があります。
9.1. ルートポートTLPデータ制御およびステータスレジスター
インテルStratix 10 Avalon-MM Root PortがTLPを構築するには、32ビットのCRA Avalon-MMインターフェイスをイネーブルする必要があります。CRAインターフェイスは、この目的のために以下の4つのレジスターを提供します。
レジスターアドレス | レジスター名 | アクセスモード | 説明 |
---|---|---|---|
0x2000 | RP_TX_REG | W | TX TLPの1 dwordが含まれています。アプリケーション層はこのレジスターへの書き込みを続けて、TX TLPを構築します。 |
0x2004 | RP_TX_CNTRL | W |
[31:3]: 予約済み [2] タイプ: 要求のタイプ
[1] EOP: パケットの終わりを指定します。 [0] SOP: パケットの開始を指定します。 |
0x2008 | RP_RX_REG | R | Completion TLPまたはMessage TLPの1 dwordが含まれています。 |
0x200C | RP_RX_STATUS | RC |
[31:2]: 予約済み [1] EOP: TLPのデータの終わりを示します。アプリケーション層はこのビットをポーリングして、最終データがいつ使用可能になるかを決定する必要があります。 [0] SOP: Completion TLPまたはMessage TLPが存在することを示します。 |
9.2. TLPの送信
- TX TLPの最初の32ビットをアドレス0x2000のRP_TX_REGに書き込みます。
- RP_RP_TX_CNTRL[2:0]を3'b001に設定して、ノンポステッド要求のTLPの最初のdwordをRoot Port TX FIFOにプッシュします。
- TX TLPの次の32ビットをアドレス0x2000のRP_TX_REGに書き込みます。
- TPLが完了した場合は、RP_RP_TX_CNTRL[2:0]を3'b010に設定します。それ以外の場合は、RP_RP_TX_CNTRL[2:0]を3'b000に設定して、次のデータをTX FIFOにプッシュして続行します。
- 手順3と4を繰り返します。
- TLPが完了すると、Avalon-MMブリッジはTLPを構築し、ダウンストリームに送信します。
9.3. ノンポステッド・コンプリーションTLPの受信
- RP_RX_STATUS.SOPビットをポーリングして、いつ1'b1に設定されるのかを決定します。
- RP_RX_STATUS.SOP = 1'b'1の場合、RP_RX_REGを読み出し、TLPの最初のdwordを取得します。
- RP_RX_STATUS.EOPビットを読み出します。
- RP_RX_STATUS.EOP = 1'b0の場合、RP_RXCPL_REGを読み出し、TLPの次のdwordを取得し、この手順を繰り返します。
- RP_RX_STATUS.EOP = 1'b1の場合、RP_RXCPL_REGを読み出し、TLPの最後のdwordを取得します。
9.4. CRAインターフェイスを使用したBAR0の読み出しおよび書き込みの例
CRAインターフェイスを使用して、TLP要求を送信することができます。TLP HeaderのFmtおよびTypeフィールドは、TLP Headerの残りの部分のサイズを決定するために必要な情報を提供し、Headerに続くデータペイロードがパケットに含まれているかどうかの情報を提供します。

CRAインターフェイスは、レジスターアドレス0x2000および0x2004を使用してTLPを送信し、レジスターアドレス0x2008および0x200Cを使用してCompletionを確認します。これらのレジスターの詳細については、「Root Port TLP Data Registers」の表を参照してください。
- 以下の形式を持つType 0コンフィグレーションTLPを使用して初期化されていないBAR0を読み出すには、CRAインターフェイスを使用します。CRAインターフェイスを使用してTLPを送信するには、次の手順を実行します。
- CRAインターフェイス・アドレス0x2000に、0x0400_0001を書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0001を書き込みます (パケットの開始)。
- CRAインターフェイス・アドレス0x2000に、0x0000_170Fを書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0000を書き込みます (続き)。
- CRAインターフェイス・アドレス0x2000に、0x0100_0010 を書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0000を書き込みます (続き)。
- CRAインターフェイス・アドレス0x2000に、0x0000_0000を書き込みます (アライメントを達成するためのダミーデータ)。
- CRAインターフェイス・アドレス0x2004に、0x0000_0002を書き込みます (パケットの終わり)。
CRAインターフェイスを使用して、対応するCompletionを確認します。コンプリーションTLPは、4つのdwordを有します。最初の3つのdwordは以下のようになり、初期化されていないBAR0値である1つのdwordが続きます (次の図では0xFFEF0010となります)。
CRAインターフェイスを使用してCompletionを読み出すには、次の手順を実行します。- bit [0] = 0x1となる (Completionパケットが到着しており、次のステップでSOPを受け取ることが可能であることを示す) まで、CRAインターフェイス・アドレス0x200Cの読み出しを継続します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x4A00_0001です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 0であれば、次のステップで読み出される値はパケット内にあることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x0100_0004です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 0であれば、次のステップで読み出される値はパケット内にあることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x00001700です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 2であれば、次のステップで読み出される値はパケットのEOPであることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、BAR0の初期化されていない値0xFFEF0010です。
- 以下の形式を持つType 0コンフィグレーションTLPを使用して0xFFFF_FFFFのBAR0を初期化するには、CRAインターフェイスを使用します。CRAインターフェイスを使用してTLPを送信するには、次の手順を実行します。
- CRAインターフェイス・アドレス0x2000に0x0400_0001を書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0001を書き込みます (パケットの開始)。
- CRAインターフェイス・アドレス0x2000に、0x0000_110Fを書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0000を書き込みます (続き)。
- CRAインターフェイス・アドレス0x2000に、0x0100_0010を書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0000を書き込みます (続き)。
- CRAインターフェイス・アドレス0x2000に、0xFFFF_FFFFを書き込みます。
- CRAインターフェイス・アドレス0x2004に、0x0000_0002を書き込みます (パケットの終わり)。
CRAインターフェイスを使用して、対応するCompletionを確認します。Completion TLP
は、以下の3つのdwordを有します。CRAインターフェイスを使用してCompletionを読み出すには、次の手順を実行します。- bit [0] = 0x1となる (Completionパケットが到着しており、次のステップでSOPを受け取ることが可能であることを示す) まで、CRAインターフェイス・アドレス0x200Cの読み出しを継続します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x0A00_0000です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 0であれば、次のステップで読み出される値はパケット内にあることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x0100_0004です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 0であれば、次のステップで読み出される値はパケット内にあることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、0x00001100です。
- CRAインターフェイス・アドレス0x200Cを読み出します。この例では、bits [1:0] = 2であれば、次のステップで読み出される値はパケットのEOPであることを意味します。
- CRAインターフェイス・アドレス0x2008を読み出します。この読み出しデータ値は、BAR0のサイズです。
BAR0に0xFFFF_FFFFを書き込んだ後、手順1を繰り返してBAR0を読み出し、手順2を繰り返してBAR0アドレス空間をコンフィグレーションできます。
同じ手法を使用して、BAR1、BAR2、BAR3、BAR4、およびBAR5をコンフィグレーションします。
10. Avalon-MMテストベンチおよびデザイン例
この章では、テストベンチ、BFM、およびテスト・ドライバー・モジュールを含むエンドポイント・デザイン例を紹介します。このデザイン例は、クイック・スタート・ガイドで説明されているデザインフローを使用して作成できます。このテストベンチは、クイック・スタート・ガイドで指定したパラメーターを使用します。
このテストベンチは、最大x16のバリアントをシミュレーションします。ただし、提供されているBFMはx1からx8リンクのみをサポートします。x8にダウントレーニングすることにより、x16バリアントをサポートします。x16バリアントのすべてのレーンをシミュレーションするには、Averyテストベンチで使用するシミュレーション・モデルを作成します。このオプションは現在、Avaon-STバリアントでのみ使用可能です。詳細については、AN-811: Using the Avery BFM for PCI Express Gen3x16 Simulation on Intel Stratix 10 Devicesを参照してください。
エンドポイント・バリエーションとしてコンフィグレーションされている場合、テストベンチはデザイン例およびRoot Port BFMをインスタンス化し、次の機能を提供します。
- Endpointのすべての基本コンフィグレーション・レジスターをセットアップするコンフィグレーション・ルーチン。このコンフィグレーションにより、エンドポイント・アプリケーションをPCI Expressトランザクションのターゲットおよびイニシエーターにすることができます。
- EndpointへのPCI Expressトランザクションを開始するVerilog HDLプロシージャー・インターフェイス
このテストベンチは、単一のEndpoint DUTをシミュレーションします。
テストベンチはテスト・ドライバー・モジュール altpcietb_bfm_rp_gen3_x8.sv を使用して、Endpoint BFMでターゲットメモリーおよびDMAチャネルを実行します。テスト・ドライバー・モジュールは、Root Port Configuration Spaceレジスターからの情報を表示するので、パラメーター・エディターを使用して、指定したパラメーターに関連付けることができます。エンドポイント・モデルは、DMAアプリケーションと組み合わせたエンドポイント・バリエーションで構成されています。
インテル® Quartus® Prime 18.0リリース以降、IPをRoot PortとしてコンフィグレーションするインテルArria 10 PCIeデザイン例を生成できます。このシナリオでは、テストベンチはEndpoint BFMおよびJTAGマスターブリッジをインスタンス化します。
シミュレーションでは、JTAGマスターBFMを使用してCRA読み出しおよび書き込みトランザクションを開始し、バス列挙を実行してエンドポイントをコンフィグレーションします。シミュレーションでは、JTAGマスターBFMを使用してTXS Avalon-MMインターフェイスを駆動し、メモリーの読み出しおよび書き込みトランザクションを実行します。
アプリケーション層のデザインでは、少なくとも、インテル・テストベンチおよびRoot Port BFMでは作成できない以下のシナリオを処理する必要があります。
- Vendor Defined Messagesを生成または受信できません。一部のシステムはVendor Defined Messagesを生成し、そのメッセージを処理するためにアプリケーション層をデザインする必要があります。ハードIPブロックは、このメッセージをアプリケーション層に渡します。アプリケーション層は、ほとんどの場合そのメッセージを無視する必要があります。
- パラメーター・エディターを使用して、Device > PCI Express > PCI Capabilities > Maximum payload sizeに現在設定されているよりも小さい、受信した読み出し要求のみを処理できます。多くのシステムは、より大きな読み出し要求を処理することができ、その後、複数のコンプリーションで返されます。
- 常に、すべての読み出し要求に対して単一のコンプリーションを返します。一部のシステムは、64バイトのアドレス境界ごとにコンプリーションを分割します。
- 常に、読み出し要求が発行されたのと同じ順序でコンプリーションを返します。一部のシステムでは、コンプリーションがアウトオブオーダーで生成されます。
- 一部のシステムが一部の書き込みトランザクションに続くフラッシュ要求として生成する、長さゼロの読み出し要求を生成することはできません。アプリケーション層は、長さがゼロの読み出し要求に対して、コンプリーションの生成ができる必要があります。
- 固定のクレジット割り当てを使用します。
- パリティーはサポートしていません。
- Configuration Space BypassモードまたはSingle Root I/O Virtualization (SR-IOV) を使用するときに使用可能な多機能デザインはサポートしていません。
10.1. Avalon-MMエンドポイント・テストベンチ
クイック・スタート・ガイドの次の手順に従って、デザイン例からテストベンチを生成することができます。
Root Port BFMには、次の最上位モジュールが以下のディレクトリーに含まれています。 <testbench_dir/pcie_<dev>_hip_avmm_bridge_0_example_design/pcie_example_design_tb/ip/pcie_example_design_tb/DUT_pcie_tb_ip/altera_pcie_s10_tbed_<ver>/sim
- altpcietb_bfm_top_rp.sv: Root Port PCI Express BFMです。このモジュールの詳細については、Root Port BFMを参照してください。
-
altpcietb_bfm_rp_gen3_x8.sv: このモジュールは、Root Port BFMへのトランザクションを駆動します。メインプロセスは2つの段階で動作します。
- まず、タスク ebfm_cfg_rp_eg を使用して、エンドポイントをコンフィグレーションします。
-
次に、タスク target_mem_test または target_mem_test_lite でメモリー・アクセス・テストを実行します。
最後に、タスク dma_mem_test でDMAテストを実行します。
-
altpcietb_bfm_shmem.v: このメモリーは、次の機能を実装します。
- TX書き込み動作のデータを提供します。
- RX読み出し動作のデータを提供します。
- RX書き込み動作のデータを受信します。
- 受信したコンプリーションのデータを受信します。
さらに、テストベンチには次のタスクを実行するルーチンがあります。
- 必要な周波数でEndpointのリファレンス・クロックを生成します。
- 起動時にPCI Expressリセットを提供します。
テストベンチを実行する前に、serial_sim_hwtcl パラメーターを以下に設定する必要があります。 <testbench_dir>/pcie_<dev>_hip_avmm_bridge_example_design_tb/ip/pcie_example_design_tb/DUT_pcie_tb_ip/altera_pcie_<dev>_tbed_<ver>/sim/altpcie_<dev>_tbed_hwtcl.v. シリアル・シミュレーションの場合は1、PIPEシミュレーションの場合は0に設定します。
10.2. エンドポイントのデザイン例
このデザイン例は、ネイティブEndpoint、DMAアプリケーション、およびRoot Port BFMで構成されています。書き込みDMAモジュールは、EndpointメモリーからRoot Complex (RC) メモリーへの書き込み動作を実装します。読み出しDMAは、RCメモリーからEndpointメモリーへの読み出し動作を実装します。
ハードウェア・プラットフォームで動作している場合、Root Complexプロセッサーで実行されているソフトウェア・アプリケーションは、通常DMAを制御します。シミュレーションでは、生成されたテストベンチはこのデザイン例とともに、DMA動作を制御するVerilog HDLのBFMドライバーモジュールを提供します。この例はPCI Expressリンク以外のハードウェア・インターフェイスに依存していないため、システムの初期ハードウェア検証にデザイン例を使用できます。
システム生成により、Verilog HDLでエンドポイント・バリアントが作成されます。テストベンチ・ファイルは、現在のリリースのVerilog HDLでのみ使用可能です。
MSIを使用してDMAテストを実行するには、PCI Express/PCI Capabilitiesページの Number of MSI messages requestedパラメーターを少なくとも2に設定する必要があります。
DMAデザインの例では、すべてのメモリーブロックのDMAレジスターにアクセスすることなく、断片化された大量のメモリーを転送できるアーキテクチャーを使用しています。各メモリーブロックについて、DMAデザインの例では、次の情報を含むディスクリプター・テーブルを使用します。
- 転送のサイズ
- ソースのアドレス
- 送信先のアドレス
- ソフトウェア・アプリケーションまたはBFMドライバーとDMAモジュール間のハンドシェイク動作を設定する制御ビット
BFMドライバーはディスクリプター・テーブルをBFM共有メモリーに書き込み、そこからDMAデザインエンジンがDMA読み出し、DMA書き込み、またはその両方のディスクリプター・テーブルを継続的に収集します。転送の開始時に、BFMはEndpoint DMA制御レジスターをプログラムします。DMA制御レジスターは、ディスクリプター・テーブルの総数および最初のディスクリプター・テーブルのBFM共有メモリーアドレスを示します。DMA制御レジスターをプログラムした後、DMAエンジンは、DMA読み出しおよびDMA書き込みの両方でBFM共有メモリーからディスクリプターを継続的にフェッチし、各ディスクリプターのデータ転送を実行します。
次の図は、外部RC CPUに接続されたデザイン例のブロック図を示しています。
ブロック図には以下の要素が含まれています。
- DMAアプリケーションは、PCI Express用のインテルStratix 10ハードIPのAvalon-MMインターフェイスに接続します。接続は、以下のインターフェイスで構成されています。
- Avalon-MM RXマスターは、ハードIPブロックからTLPヘッダーおよびデータ情報を受信します。
- Avalon-MM TXスレーブは、TLPヘッダーおよびデータ情報をハードIPブロックに送信します。
- Avalon-MMコントロール・レジスター・アクセス (CRA) IRQポートは、ハードIPブロックからのMSI割り込みを要求します。
- サイドバンド信号バスは、コンフィグレーション情報などのスタティック情報を伝送します。
- BFM共有メモリーは、DMA読み出しおよびDMA書き込み動作のディスクリプター・テーブルを格納します。
- Root Complex CPUおよび関連する PCI Express* PHYは、Root Portを使用してエンドポイント・デザイン例に接続します。
エンドポイント・デザイン例およびアプリケーションは、次の目的を達成します。
- Avalon-MMプロトコルを使用して、 PCI Express* 用のインテルStratix 10ハードIPにインターフェイス接続する方法を示します。
- PCI Express* リンク上で、メモリーの読み出しおよび書き込みトランザクションを開始するDMAチャネルを提供します。
DMAデザイン例の階層は、次のコンポーネントから構成されています。
- DMA読み出しおよびDMA書き込みモジュール
- エンジンごとに2つのAvalon-MMインターフェイスを使用するオンチップEndpointメモリー (Avalon-MMスレーブ)
RCスレーブモジュールは通常、Endpointのオンチップ・バッファー・メモリーをターゲットとするダウンストリーム・トランザクションを駆動します。これらのターゲット・メモリー・トランザクションは、DMAエンジンをバイパスします。さらに、RCスレーブモジュールはパフォーマンスを監視し、受信メッセージTLPを確認します。
10.2.1. BAR設定
Root Port BFM altpcietb_bfm_rp_gen3_x8.sv 内の find_mem_bar タスクは、デザインに合わせてBARを設定します。
10.3. Avalon-MMテスト・ドライバー・モジュール
BFMドライバーモジュール altpcie_bfm_rp_gen3_x8.sv は、DMAエンドポイント・デザイン例をテストします。BFMドライバーモジュールは、Endpoint Configuration Spaceレジスターをコンフィグレーションしてから、エンドポイント・デザイン例のDMAチャネルをテストします。このファイルは、以下のディレクトリー内にあります。 <testbench_dir>pcie_<dev>_hip_avmm_bridge_0_example_design/pcie_example_design_tb/ip/pcie_example_design_tb/DUT_pcie_tb_ip/altera_pcie_<dev>_tbed_<ver>/sim
BFMテスト・ドライバー・モジュールは、次の手順を順に実行します。
- Root PortおよびEndpoint Configuration Spaceをコンフィグレーションします。これは、BFMテスト・ドライバー・モジュールが、 altpcierd_bfm_configure の一部であるプロシージャー ebfm_cfg_rp_ep を呼び出して行います。
- エンドポイント・デザイン例のControl Registerスペースへのアクセスに適したBARを検索します。
- 前述の手順で find_mem_bar が適切なBARを識別した場合、ドライバーは次のタスクを実行します。
- DMA読み出し: ドライバーはDMAをプログラムして、BFM共有メモリーからエンドポイント・メモリーにデータを読み出します。最後のディスクリプターが完了すると、DMAはMSIを発行します。
- DMA書き込み: ドライバーはDMAをプログラムして、エンドポイント・メモリーからBFM共有メモリーにデータを書き戻します。DMAは次の手順を実行して、転送の完了を示します。
- 最後のディスクリプターが完了すると、DMAはMSIを発行します。
- チェッカーは、BFMに書き戻されたデータを、BFMから読み出されたデータと比較します。
- ドライバーはDMAをプログラムして、DMAエンドポイント・メモリーのダウンストリーム・アクセスを示すテストを実行します。
10.4. Root Port BFM
10.4.1. 概要
基本的なRoot Port BFMは、Verilog HDLタスクベースのインターフェイスを提供して、 PCIe* リンクをテストします。Root Port BFMは、 PCIe* リンクから受信した要求も処理します。次の図は、Root Port BFMの概要を示しています。
次の説明は、Root Port BFMの図に示されているブロックの概要を示しています。
- BFM共有メモリー (altpcietb_g3bfm_shmem.v) です。BFMメモリーは次のタスクを実行します。
-
- PCI Expressリンクからすべてのコンプリーションで受信したデータの格納。
- PCI Expressリンクから受信したすべての書き込みトランザクションで受信したデータの格納。
- PCI Express* リンクから受信した読み出しトランザクションに応答する、すべてのコンプリーションに対するデータの供給。
- リンクに対して発行される大部分の書き込みトランザクションに対するデータの供給。唯一の例外は、呼び出しで渡される書き込みデータの4バイトフィールドを持つ、特定のBFM PCI Express* 書き込みプロシージャーです。
- EndpointのBARにプログラムされたサイズおよび値を含むデータ構造の格納。
-
一連のプロシージャーは、BFMドライバーからの共有メモリーの読み出し、書き込み、埋め込み、チェックを行います。これらのプロシージャーの詳細については、BFM共有メモリー・アクセス・プロシージャーを参照してください。
- BFM Read/Write Request Functions (altpcietb_g3bfm_rdwr.v): この機能は、 PCI Express* の読み出しおよび書き込み要求に対する基本的なBFM呼び出しを提供します。このプロシージャーの詳細については、BFM Read and Write Proceduresを参照してください。
- BFM Configuration Functions (altpcietb_g3bfm_rp.v): この機能は、 PCI Express* リンクおよびEndpoint Configuration Spaceレジスターのコンフィグレーションを要求するBFM呼び出しを提供します。このプロシージャーおよび機能の詳細については、BFMコンフィグレーション・プロシージャーを参照してください。
- BFM Log Interface (altpcietb_g3bfm_log.v): BFMログ機能は、一般的にフォーマットされたメッセージをシミュレーター標準出力およびオプションでログファイルに書き込むためのルーチンを提供します。エラー時にシミュレーションを停止するコントロールも提供します。このプロシージャーの詳細については、BFMログおよびメッセージ・プロシージャーを参照してください。
- BFM Request Interface (altpcietb_g3bfm_req_intf.v): このインターフェイスは、altpcietb_g3bfm_rdwr.v および altpcietb_g3bfm_configure.v のプロシージャーまたは機能とRoot Port RTL Modelとの間の下位レベルのインターフェイスを提供します。このインターフェイスは、EndpointのBARレジスターにプログラムされたサイズおよび値を含む書き込み保護されたデータ構造を格納します。このインターフェイスには、内部BFMマネジメントに使用されるその他の重要なデータも格納されます。エンドポイント・アプリケーションのテスト用にテストベンチを適合させるために、このファイルに直接アクセスする必要はありません。
- Avalon‑ST Interfaces (altpcietb_g3bfm_vc_intf_ast_common.v): このインターフェイス・モジュールは、Root Portインターフェイス・モデルを処理します。BFM要求インターフェイスから要求を受け取り、必要な PCI Express* トランザクションを生成します。それらは PCI Express* リンクから受信したコンプリーションを処理し、要求が完了したらBFM要求インターフェイスに通知します。さらに、 PCI Express* リンクから受信した要求を処理し、必要なコンプリーションを生成する前に、共有メモリーからデータを格納またはフェッチします。
10.4.2. アプリケーション層への読み出しおよび書き込みトランザクションの発行
altpcietb_bfm_rdwr.v の ebfm_bar プロシージャーは、Endpoint Application Layerに読み出しおよび書き込みトランザクションを実装します。以下に示すプロシージャーおよび機能は、Verilog HDLインクルード・ファイル altpcietb_bfm_rdwr.v で使用可能です。
- ebfm_barwr BFM共有メモリーから特定のEndpoint BARのオフセットにデータを書き込みます。このプロシージャーは、要求が送信のためにVCインターフェイス・モジュールに渡されるとすぐに戻ります。
- ebfm_barwr_imm: 最大4バイトの即時データ (プロシージャー呼び出しで渡される) を特定のEndpoint BARからのオフセットに書き込みます。このプロシージャーは、要求が送信のためにVCインターフェイス・モジュールに渡されるとすぐに戻ります。
- ebfm_barrd_wait: 特定のEndpoint BARのオフセットからデータを読み出し、BFM共有メモリーに格納します。このプロシージャーは、呼び出し側にコントロールを返す前に、コンプリーション・データが返されるのを待ってからブロックします。
- ebfm_barrd_nowt: 特定のEndpoint BARのオフセットからデータを読み出し、それをBFM共有メモリーに格納します。このプロシージャーは、要求が送信のためにVCインターフェイス・モジュールに渡されるとすぐに戻ります。これにより、後に続く読み出しをすぐに発行できます。
これらのルーチンは、BAR番号をパラメーターとして取り込んで、メモリー空間および ebfm_cfg_rp_ep プロシージャーでセットアップした bar_table データ構造のBFM共有メモリーアドレスにアクセスします。(ルートポートおよびエンドポイントのコンフィグレーション を参照してください。) これらのパラメーターを使用すると、特定のBARからのオフセットにアクセスするBFMテスト・ドライバー・ルーチンが簡略化され、特定のBARに割り当てられるアドレスを計算する必要がなくなります。
Root Port BFMは、Endpoint I/OスペースBARへのアクセスをサポートしていません。
10.4.3. ルートポートおよびエンドポイントのコンフィグレーション
Endpointにトランザクションを発行する前に、Root PortおよびEndpoint Configuration Spaceレジスターをコンフィグレーションする必要があります。
Ebfm_cfg_rp_ep プロシージャーは次の手順を実行して、Configuration Spaceを初期化します。
- Root Port Configuration Spaceを設定して、Root PortがPCI Expressリンクでトランザクションを送信できるようにします。
- Root PortおよびEndpoint PCI Express Capability Device Controlレジスターを次のように設定します。
- Root PortおよびEndpointの両方で、Error Reporting をディスエーブルします。BFMにはエラー処理機能がありません。
- Root PortおよびEndpointの両方で、Relaxed Ordering をイネーブルします。
- Endpointにその機能がある場合は、Endpointの Extended Tags をイネーブルします。
- Root PortおよびEndpointの両方で、Phantom Functions、 Aux Power PM、および No Snoop をディスエーブルします。
- Root Portが最大ペイロードサイズをサポートしているため、Max Payload Size に、Endpointがサポートする値を設定します。
- エンドポイント・デザイン例では、読み出しを必要なだけ多くのコンプリーション数に分割することをサポートしているため、Root Port Max Read Request Size を4 KBに設定します。
- Root Portは読み出し要求を複数のコンプリーションに分割することをサポートしていないため、Endpoint Max Read Request Size を Max Payload Size に設定します。
- すべてのEndpoint BARレジスターに値を割り当てます。BARアドレスは、以下に概説するアルゴリズムによって割り当てられます。
- I/O BARは、I/Oスペース内のBFM共有メモリーの終了アドレスのすぐ上から開始し、必要に応じて完全な32ビットI/Oスペース全体にわたって継続する、最小値から最大値までのアドレスが割り当てられます。
- 32ビットのプリフェッチ不可のメモリーBARには、メモリー空間内のBFM共有メモリーの終了アドレスのすぐ上から開始し、必要に応じて完全な32ビットメモリー空間全体にわたって継続する、最小値から最大値までのアドレスが割り当てられます。
-
ebfm_cfg_rp_ep プロシージャーへの addr_map_4GB_limit 入力の値は、32ビットのプリフェッチ可能なメモリーBARおよび64ビットのプリフェッチ可能なメモリーBARの割り当てを制御します。addr_map_4GB_limit のデフォルト値は、0 です。
ebfm_cfg_rp_ep プロシージャーへの addr_map_4GB_limit 入力が0に設定されている場合、ebfm_cfg_rp_ep プロシージャーは、32ビットのプリフェッチ可能なメモリーBARを最大値から最小値に割り当てます。32ビットのメモリー空間の先頭から開始し、必要に応じて最後の32ビットのプリフェッチ不可のBARの終了アドレスまで継続します。
ただし、addr_map_4GB_limit 入力を1に設定すると、アドレスマップは4 GBに制限されます。ebfm_cfg_rp_ep プロシージャーでは、32ビットおよび64ビットのプリフェッチ可能なメモリーBARを最大値から最小値に割り当てます。32ビットのメモリー空間の先頭から開始し、必要に応じて最後の32ビットのプリフェッチ不可のBARの終了アドレスまで継続します。
-
ebfm_cfg_rp_ep プロシージャーへの addr_map_4GB_limit への入力が0に設定されている場合、 ebfm_cfg_rp_ep プロシージャーは、64ビットのプリフェッチ可能なメモリーBARを、4 GBのアドレス
で最小値から最大値まで割り当て、完全な64ビットのメモリー空間全体にわたって4 GBの制限より上位アドレス方向にメモリーを割り当てます。
ebfm_cfg_rp_ep プロシージャーへの addr_map_4 GB_limit 入力が1に設定されている場合、ebfm_cfg_rp_ep プロシージャーは、4 GBのアドレスから開始する32ビットおよび64ビットのプリフェッチ可能なメモリーBARを最大値から最小値まで割り当て、4 GBアドレスの下位方向に最後の32ビットのプリフェッチ不可のBARの終了アドレスまで、必要に応じてメモリーアドレスを割り当てます。
上記のアルゴリズムでは、非常に大きな (1 Gb以上) の32ビットBARがいくつかある場合、常にすべてのBARに値を割り当てることができるとは限りません。すべてのBARにアドレスを割り当てることは可能ですが、これらのアドレスを効果的に割り当てるには、より複雑なアルゴリズムが必要となります。ただし、このようなコンフィグレーションが実際のシステムで役立つ可能性はほとんどありません。プロシージャーでBARを割り当てることができない場合、エラーメッセージが表示され、シミュレーションが停止します。
- 上記のBAR割り当てに基づいて、ebfm_cfg_rp_ep プロシージャーでは、Root Port Configuration Spaceのアドレスウィンドウを割り当てて、有効なBARアドレス範囲を含めます。
- ebfm_cfg_rp_ep プロシージャーはEndpoint PCIe* 制御レジスターで、マスター・トランザクション、メモリー・アドレス・デコーディング、およびI/Oアドレス・デコーディングをイネーブルします。
ebfm_cfg_rp_ep プロシージャーは、すべてのEndpoint BARのサイズおよび割り当てアドレスをリストするBFM共有メモリー内の bar_table データ構造もセットアップします。BFM共有メモリーのこの領域は、書き込み保護されています。その結果、この領域にアプリケーション・ロジックの書き込みアクセスを行うと、致命的なシミュレーション・エラーが発生します。
BARからの特定のオフセットへの読み出しおよび書き込み要求の完全な PCIe* アドレスを生成するためのBFMプロシージャー呼び出しは、このデータ構造を使用します。このプロシージャーにより、Endpointアプリケーション・ロジックにアクセスするテストベンチコードがBARからのオフセットを使用し、BARに割り当てられた特定のアドレスのトラッキングを回避できます。次の表は、これらのオフセットの使用方法を示しています。
オフセット (バイト) |
説明 |
---|---|
+0 |
BAR0のPCI Expressアドレス |
+4 |
BAR1のPCI Expressアドレス |
+8 |
BAR2のPCI Expressアドレス |
+12 |
BAR3のPCI Expressアドレス |
+16 |
BAR4のPCI Expressアドレス |
+20 |
BAR5のPCI Expressアドレス |
+24 |
Expansion ROM BARのPCI Expressアドレス |
+28 |
予約済み |
+32 |
BAR0は、すべて1で書き込まれた後の値を読み戻します (サイズの計算に使用されます)。 |
+36 |
すべて1で書き込まれた後、BAR1は値を読み戻します。 |
+40 |
すべて1で書き込まれた後、BAR2は値を読み戻します。 |
+44 |
すべて1で書き込まれた後、BAR3は値を読み戻します。 |
+48 |
すべて1で書き込まれた後、BAR4は値を読み戻します。 |
+52 |
すべて1で書き込まれた後、BAR5は値を読み戻します。 |
+56 |
すべて1で書き込まれた後、Expansion ROM BARは値を読み戻します。 |
+60 |
予約済み |
コンフィグレーション・ルーチンは、AER機能などの高度なPCI Express機能をコンフィグレーションしません。
altpcietb_bfm_rp_gen3_x8.sv の ebfm_cfg_rp_ep のプロシージャーの他に、Endpoint Configuration Spaceレジスターを直接読み書きするルーチンは、Verilog HDLインクルード・ファイルで使用可能です。ebfm_cfg_rp_ep プロシージャーを実行すると、PCI Express I/OおよびMemory Spaceは、次の3つの図に示すレイアウトになります。メモリー空間のレイアウトは、addr_map_4GB_limit 入力パラメーターの値によって異なります。次の図は、addr_map_4GB_limit が1の場合のメモリー空間マップを示しています。
次の図は、addr_map_4GB_limit が0の場合のメモリー空間マップを示しています。
次の図は、I/Oアドレス空間を示しています。
10.4.4. コンフィグレーション・スペース・バスおよびデバイスの番号付け
列挙は、内部バス番号0のRoot Portインターフェイス・デバイス番号0を割り当てます。ebfm_cfg_rp_ep を使用して、Endpointを任意のバス番号 (0より大きい) 上の任意のデバイス番号に割り当てます。指定されたバス番号は、Root Port Configuration Spaceのセカンダリー・バスです。
10.4.5. BFMメモリーマップ
BFM共有メモリーは2 MBです。BFM共有メモリーは、I/Oスペースの最初の2 MBにマッピングされ、メモリー空間の最初の2 MBにもマッピングされます。エンドポイント・アプリケーションがこの範囲のI/Oまたはメモリー・トランザクションを生成すると、BFMは共有メモリーの読み出しまたは書き込みを行います。
10.5. BFMプロシージャーおよびファンクション
BFMには、エンドポイント・アプリケーションのテストを実行するためのプロシージャー、ファンクション、およびタスクが含まれています。また、チェーンニングDMAデザイン例を実行するプロシージャーも含まれています。
BFM読み出しおよび書き込みプロシージャーは、BFM共有メモリー、Endpoint BAR、および指定されたコンフィグレーション・レジスターに対して、データを読み出しおよび書き込みます。プロシージャーおよびファンクションは、Verilog HDLで使用可能です。これらのプロシージャーおよびファンクションは、PCI Expressリンクでのメモリーの発行およびコンフィグレーション・トランザクションをサポートします。
10.5.1. ebfm_barwrプロシージャー
ebfm_barwr プロシージャーは、BFM共有メモリーのデータブロックを、指定されたEndpoint BARからのオフセットに書き込みます。長さは、コンフィグレーションされた MAXIMUM_PAYLOAD_SIZE より長くなる可能性があります。このプロシージャーは、必要に応じて要求を複数のトランザクションに分割します。このルーチンは、最後のトランザクションがVCインターフェイス・モジュールに受け入れられるとすぐに戻ります。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_barwr (bar_table, bar_num, pcie_offset, lcladdr, byte_len, tclass) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table 構造のアドレスです。bar_table 構造は各BARに割り当てられたアドレスを格納するため、ドライバーコードは、BARからのアプリケーション特有のオフセットのみを実際に割り当てられたアドレスを認識する必要はありません。 |
bar_num |
PCI Expressアドレスを決定するために pcie_offset で使用されるBARの番号 |
|
pcie_offset |
BARベースからのアドレスオフセット |
|
lcladdr |
書き込まれるデータのBFM共有メモリーアドレス |
|
byte_len |
書き込まれるデータの長さ (バイト数)。BAR領域またはBFM共有メモリー内の残りの最小バイト数は1からになります。 |
|
tclass |
PCI Expressトランザクションに使用するトラフィック・クラス |
10.5.2. ebfm_barwr_immプロシージャー
ebfm_barwr_imm プロシージャーは、指定されたEndpoint BARからのオフセットに最大4バイトのデータを書き込みます。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_barwr_imm (bar_table, bar_num, pcie_offset, imm_data, byte_len, tclass) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table 構造のアドレスです。bar_table 構造は各BARに割り当てられたアドレスを格納するため、ドライバーコードは、BARからのアプリケーション特有のオフセットのみを実際に割り当てられたアドレスを認識する必要はありません。 |
bar_num |
PCI Expressアドレスを決定するために pcie_offset で使用されるBARの番号 |
|
pcie_offset |
BARベースからのアドレスオフセット |
|
imm_data |
書き込まれるデータです。Verilog HDLでは、この引数は reg [31:0] です。両言語とも、書き込まれるビット数は次のように長さによって異なります。 長さ 書き込まれるビット数
|
|
byte_len |
バイト数で書き込まれるデータの長さ。長さは最大4バイトです。 |
|
tclass |
PCI Expressトランザクションに使用するトラフィック・クラス |
10.5.3. ebfm_barrd_waitプロシージャー
ebfm_barrd_wait プロシージャーは、指定したEndpoint BARのオフセットからデータブロックを読み出して、BFM共有メモリーに格納します。長さは、コンフィグレーションされた読み出し要求の最大サイズより長くなる場合があります。このプロシージャーは、必要に応じて要求を複数のトランザクションに分割します。このプロシージャーは、すべてのコンプリーション・データが返され、共有メモリーに配置されるまで待機します。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_barrd_wait (bar_table, bar_num, pcie_offset, lcladdr, byte_len, tclass) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table 構造のアドレスです。bar_table構造は各BARに割り当てられたアドレスを格納するため、ドライバーコードは、BARからのアプリケーション特有のオフセットのみを実際に割り当てられたアドレスを認識する必要はありません。 |
bar_num |
PCI Expressアドレスを決定するために pcie_offset で使用されるBARの番号 |
|
pcie_offset |
BARベースからのアドレスオフセット |
|
lcladdr |
読み出されたデータが格納されるBFM共有メモリーアドレス |
|
byte_len |
読み出されるデータの長さ (バイト数)。BAR領域またはBFM共有メモリー内の残りの最小バイト数は1からになります。 |
|
tclass |
PCI Expressトランザクションに使用するトラフィック・クラス |
10.5.4. ebfm_barrd_nowtプロシージャー
ebfm_barrd_nowt プロシージャーは、指定したEndpoint BARのオフセットからデータブロックを読み出して、BFM共有メモリーに格納します。長さは、コンフィグレーションされた読み出し要求の最大サイズより長くなる場合があります。このプロシージャーは、必要に応じて要求を複数のトランザクションに分割します。このルーチンは、最後の読み出しトランザクションがVCインターフェイス・モジュールに受け入れられるとすぐに戻ります。これにより、後に続く読み出しをすぐに発行できます。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_barrd_nowt (bar_table, bar_num, pcie_offset, lcladdr, byte_len, tclass) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table 構造のアドレス |
bar_num |
PCI Expressアドレスを決定するために pcie_offset で使用されるBARの番号 |
|
pcie_offset |
BARベースからのアドレスオフセット |
|
lcladdr |
読み出されたデータが格納されるBFM共有メモリーアドレス |
|
byte_len |
読み出されるデータの長さ (バイト数)。BAR領域またはBFM共有メモリー内の残りの最小バイト数は1からになります。 |
|
tclass |
PCI Expressトランザクションに使用するトラフィック・クラス |
10.5.5. ebfm_cfgwr_imm_waitプロシージャー
ebfm_cfgwr_imm_wait プロシージャーは、指定されたコンフィグレーション・レジスターに最大4バイトのデータを書き込みます。このプロシージャーは、書き込み完了が返されるまで待機します。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_cfgwr_imm_wait (bus_num, dev_num, fnc_num, imm_regb_ad, regb_ln, imm_data, compl_status) |
|
引数 |
bus_num |
ターゲットデバイスのPCI Expressバス番号 |
dev_num |
ターゲットデバイスのPCI Expressデバイス番号 |
|
fnc_num |
アクセスするターゲットデバイスのファンクション番号 |
|
regb_ad |
書き込まれるレジスターのバイト固有アドレス |
|
regb_ln |
書き込まれるデータの長さ (バイト数)。長さは最大4バイトです。regb_ln および regb_ad 引数はDWORD境界を越えることはできません。 |
|
imm_data |
書き込まれるデータです。 この引数は reg [31:0] です。 書き込まれるビット数は長さによって異なります。
|
|
compl_status |
この引数は reg [2:0] です。 この引数は、PCI Express仕様で指定されているコンプリーション・ステータスです。次のエンコーディングが定義されています。
|
10.5.6. ebfm_cfgwr_imm_nowtプロシージャー
ebfm_cfgwr_imm_nowt プロシージャーは、指定されたコンフィグレーション・レジスターに最大4バイトのデータを書き込みます。このプロシージャーは、VCインターフェイス・モジュールがトランザクションを受け入れるとすぐに戻るため、その間に他の書き込みの発行ができます。このプロシージャーは、正常なコンプリーションのステータスが予想される場合にのみ使用してください。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_cfgwr_imm_nowt (bus_num, dev_num, fnc_num, imm_regb_adr, regb_len, imm_data) |
|
引数 |
bus_num |
ターゲットデバイスのPCI Expressバス番号 |
dev_num |
ターゲットデバイスのPCI Expressデバイス番号 |
|
fnc_num |
アクセスするターゲットデバイスのファンクション番号 |
|
regb_ad |
書き込まれるレジスターのバイト固有アドレス |
|
regb_ln |
書き込まれるデータの長さ (バイト数)。長さは最大4バイトです。regb_ln および regb_ad 引数はDWORD境界を越えることはできません。 |
|
imm_data |
書き込まれるデータです。 この引数は reg [31:0] です。 両言語とも、書き込まれるビットは数は長さによって異なります。次のエンコードが定義されています。
|
10.5.7. ebfm_cfgrd_waitプロシージャー
ebfm_cfgrd_wait プロシージャーは、指定されたコンフィグレーション・レジスターから最大4バイトのデータを読み出し、そのデータをBFM共有メモリーに格納します。このプロシージャーは、読み出し完了が返されるまで待機します。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_cfgrd_wait (bus_num, dev_num, fnc_num, regb_ad, regb_ln, lcladdr, compl_status) |
|
引数 |
bus_num |
ターゲットデバイスのPCI Expressバス番号 |
dev_num |
ターゲットデバイスのPCI Expressデバイス番号 |
|
fnc_num |
アクセスするターゲットデバイスのファンクション番号 |
|
regb_ad |
書き込まれるレジスターのバイト固有アドレス |
|
regb_ln |
読み出されるデータの長さ (バイト数)。長さは最大4バイトです。regb_ln および regb_ad 引数はDWORD境界を越えることはできません。 |
|
lcladdr |
読み出しデータが配置されるBFM共有メモリーアドレス |
|
compl_status |
コンフィグレーション・トランザクションのコンプリーション・ステータスです。 この引数はreg [2:0]です。 両言語とも、PCI Express仕様で指定されているコンプリーション・ステータスです。次のエンコーディングが定義されています。
|
10.5.8. ebfm_cfgrd_nowtプロシージャー
ebfm_cfgrd_nowt プロシージャーでは、指定されたコンフィグレーション・レジスターから最大4バイトのデータを読み出し、そのデータをBFM共有メモリーに格納します。このプロシージャーは、VCインターフェイス・モジュールがトランザクションを受け入れるとすぐに戻るため、その間に他の読み出しの発行ができます。このプロシージャーは、正常なコンプリーションのステータスが予想され、待機を伴った後に続く読み出しまたは書き込みを使用してこの動作のコンプリーションを保証できる場合にのみ使用してください。
位置 |
altpcietb_g3bfm_rdwr.v |
|
---|---|---|
構文 |
ebfm_cfgrd_nowt (bus_num, dev_num, fnc_num, regb_ad, regb_ln, lcladdr) |
|
引数 |
bus_num |
ターゲットデバイスのPCI Expressバス番号 |
dev_num |
ターゲットデバイスのPCI Expressデバイス番号 |
|
fnc_num |
アクセスするターゲットデバイスのファンクション番号 |
|
regb_ad |
書き込まれるレジスターのバイト固有アドレス |
|
regb_ln |
書き込まれるデータの長さ (バイト数)。長さは最大4バイトです。regb_ln および regb_ad 引数はDWORD境界を越えることはできません。 |
|
lcladdr |
読み出しデータが配置されるBFM共有メモリーアドレス |
10.5.9. BFMコンフィグレーション・プロシージャー
BFMコンフィグレーション・プロシージャーは、altpcietb_bfm_rp_gen3_x8.sv で使用可能です。これらのプロシージャーは、Root PortおよびEndpoint Configuration Spaceレジスターのコンフィグレーションをサポートします。
すべてのVerilog HDL引数は、特に記述がない限り integer 型で入力専用です。
10.5.9.1. ebfm_cfg_rp_epプロシージャー
ebfm_cfg_rp_ep プロシージャーでは、Root PortおよびEndpoint Configuration Spaceレジスターを動作用にコンフィグレーションします。
位置 |
altpcietb_g3bfm_configure.v
|
|
---|---|---|
構文 |
ebfm_cfg_rp_ep (bar_table, ep_bus_num, ep_dev_num, rp_max_rd_req_size, display_ep_config, addr_map_4GB_limit) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table 構造のアドレスです。このルーチンは、bar_table 構造を生成します。bar_table 構造は、各BARのサイズおよび各BARに割り当てられたアドレス値を格納します。bar_table 構造のアドレスは、特定のBARからのオフセットにアクセスする、後に続くすべての読み出しおよび書き込みプロシージャー呼び出しに渡されます。 |
ep_bus_num |
ターゲットデバイスのPCI Expressバス番号です。この番号は、0以上の任意の値にすることができます。Root Portはこの値をセカンダリー・バス番号として使用します。 |
|
ep_dev_num |
ターゲットデバイスのPCI Expressデバイス番号です。この番号は、任意の値にすることができます。Endpointには、最初のコンフィグレーション・トランザクションを受信したときに、この値が自動的に割り当てられます。 |
|
rp_max_rd_req_size |
Root Portによって発行された読み出し用の読み出し要求の最大サイズです (バイト単位)。このパラメーターは、Endpoint Application Layerでサポートされる最大値に設定する必要があります。アプリケーション層が MAXIMUM_PAYLOAD_SIZE の読み出しのみをサポートする場合は、この値を0に設定することができ、読み出し要求サイズは最大ペイロードサイズに設定されます。この引数に有効な値は、0、128、256、512、1,024、2,048および4,096です。 |
|
display_ep_config |
1に設定すると、初期化後にEndpoint Configuration Spaceレジスターの多くが表示され、Device IDやVendor IDなどのコンフィグレーション・プロセス中には通常アクセスされないレジスターの追加の読み出しが発生します。 |
|
addr_map_4GB_limit |
1に設定すると、シミュレーション・システムのアドレスマップは4 GBに制限されます。64ビットのBARは、4 GBの制限の下に割り当てられます。 |
10.5.9.2. ebfm_cfg_decode_barプロシージャー
ebfm_cfg_decode_bar プロシージャーは、指定されたBARのBARテーブル内の情報を解析し、BAR属性についての詳細を返します。
位置 |
altpcietb_bfm_configure.v
|
|
---|---|---|
構文 |
ebfm_cfg_decode_bar (bar_table, bar_num, log2_size, is_mem, is_pref, is_64b) |
|
引数 |
bar_table |
BFM共有メモリーのEndpoint bar_table構造のアドレス |
bar_num |
解析するBAR番号 |
|
log2_size |
この引数はプロシージャーによって、BARのログベース2サイズに設定されます。BARがイネーブルされていない場合は、この引数は0に設定されます。 |
|
is_mem |
プロシージャーはこの引数を設定して、BARがメモリー空間BAR (1)、またはI/O Space BAR (0) のいずれであるかを示します。 |
|
is_pref |
プロシージャーはこの引数を設定して、BARがプリフェッチ可能なBAR (1)、またはプリフェッチ不可のBAR (0) のいずれであるかを示します。 |
|
is_64b |
プロシージャーはこの引数を設定して、BARが64ビットBAR (1)、または32ビットBAR (0) のいずれであるかを示します。これは、ペアのうち小さい番号のBARに対してのみ1に設定されます。 |
10.5.10. BFM共有メモリー・アクセス・プロシージャー
これらのプロシージャーおよびファンクションは、BFM共有メモリーへのアクセスをサポートします。
10.5.10.1. 共有メモリー定数
次の定数は、altrpcietb_g3bfm_shmem.v で定義されています。これらの定数は、shmem_fill および shmem_chk_ok ルーチンでデータパターンを選択します。これらの共有メモリー定数は、すべてVerilog HDLタイプ integer 型です。
定数 |
説明 |
---|---|
SHMEM_FILL_ZEROS |
すべての0のデータパターンを指定します。 |
SHMEM_FILL_BYTE_INC |
インクリメント8ビットバイト (0x00、0x01、0x02など) のデータパターンを指定します。 |
SHMEM_FILL_WORD_INC |
インクリメント16ビットワード (0x0000、0x0001、0x0002など) のデータパターンを指定します。 |
SHMEM_FILL_DWORD_INC |
インクリメント32 ビットDWORD (0x00000000、0x00000001、0x00000002など) のデータパターンを指定します。 |
SHMEM_FILL_QWORD_INC |
インクリメント64ビットqword (0x0000000000000000、0x0000000000000001、0x0000000000000002など) のデータパターンを指定します。 |
SHMEM_FILL_ONE |
すべての1のデータパターンを指定します。 |
10.5.10.2. shmem_writeタスク
shmem_write プロシージャーは、BFM共有メモリーにデータを書き込みます。
位置 |
altpcietb_g3bfm_shmem.v |
|
---|---|---|
構文 |
shmem_write (addr, data, leng) |
|
引数 |
addr |
データ書き込み用のBFM共有メモリー開始アドレス |
data |
BFM共有メモリーに書き込むデータ このパラメーターは64ビットのベクトルとして実装されます。leng は1から8バイトです。ビット7から0は、addr で指定された位置に書き込まれます。ビット15から8は、addr+1 の位置に書き込まれる (以下同様)、というようになります。 |
|
length |
書き込みデータの長さ (バイト数) |
10.5.10.3. shmem_readファンクション
shmem_read ファンクションは、BFM共有メモリーにデータを読み出します。
位置 |
altpcietb_g3bfm_shmem.v |
|
---|---|---|
構文 |
data:= shmem_read (addr, leng) |
|
引数 |
addr |
データ読み出し用のBFM共有メモリー開始アドレス |
leng |
読み出しデータの長さ (バイト数) |
|
戻り値 |
data |
BFM共有メモリーから読み出したデータ このパラメーターは64ビットのベクトルとして実装されます。leng は1から8バイトです。leng が8バイト未満の場合、返されるデータの対応する最下位ビットのみが有効です。 ビット7から0までは、addr で指定された位置から読み出されます。ビット15から8までは、addr+1の位置から読み出される (以下同様)、というようになります。 |
10.5.10.4. shmem_display Verilog HDLファンクション
shmem_display Verilog HDLファンクションは、BFM共有メモリーからのデータブロックを表示します。
位置 |
altrpcietb_g3bfm_shmem.v |
|
---|---|---|
構文 |
Verilog HDL: dummy_return:=shmem_display (addr, leng, word_size, flag_addr, msg_type); |
|
引数 |
addr |
データ表示用のBFM共有メモリー開始アドレス |
leng |
表示されるデータの長さ (バイト数) |
|
word_size |
表示されるワードのサイズ。個々のバイトをワードにグループ化します。有効な値は1、2、4、および8です。 |
|
flag_addr |
このアドレスを含む表示ラインの最後に<==フラグを追加します。特定のデータをマーキングするのに役立ちます。フラグを抑制するには、2**21 (BFM共有メモリーのサイズ) 以上の値に設定します。 |
|
msg_type |
各ラインの先頭に表示するメッセージタイプを指定します。メッセージタイプの詳細については、18〜37ページの「BFMログおよびメッセージ・プロシージャー」を参照してください。18〜41ページの表18〜36で定義されている定数のいずれかに設定します。 |
10.5.10.5. shmem_fillプロシージャー
shmem_fill プロシージャーは、BFM共有メモリーのブロックを指定されたデータパターンで埋め込みます。
位置 |
altrpcietb_g3bfm_shmem.v |
|
---|---|---|
構文 |
shmem_fill (addr, mode, leng, init) |
|
引数 |
addr |
データ埋め込み用のBFM共有メモリー開始アドレス |
mode |
データの埋め込みに使用されるデータパターン。データパターンは、共有メモリー定数 の項で定義されている定数のいずれかである必要があります。 |
|
leng |
埋め込まれるデータの長さ (バイト数)。長さがインクリメント・データ・パターン幅の倍数ではない場合、最後のデータパターンは切り捨てて格納されます。 |
|
init |
インクリメント・データ・パターン・モードに使用される初期データ値。この引数は、reg [63:0] です。 必要な最下位ビットは64 ビットより小さいデータパターンに使用されます。 |
10.5.10.6. shmem_chk_okファンクション
shmem_chk_ok ファンクションは、BFM共有メモリーのブロックを指定されたデータパターンと照合します。
位置 |
altrpcietb_g3bfm_shmem.v |
|
---|---|---|
構文 |
result:= shmem_chk_ok (addr, mode, leng, init, display_error) |
|
引数 |
addr |
データ照合用のBFM共有メモリー開始アドレス |
mode |
データの照合に使用されるデータパターン。データパターンは、「共有メモリー定数」の項で定義されている定数のいずれかである必要があります。 |
|
leng |
照合するデータの長さ (バイト数) |
|
init |
この引数は、reg [63:0] です。必要な最下位ビットは64 ビットより小さいデータパターンに使用されます。 |
|
display_error |
この引数を1に設定すると、比較に失敗したデータがシミュレーター標準出力に表示されます。 |
|
戻り値 |
Result |