UltraScale+ Devices Integrated Block for PCI Express v1.1 LogiCORE IP 製品ガイド (PG213)

Size: px
Start display at page:

Download "UltraScale+ Devices Integrated Block for PCI Express v1.1 LogiCORE IP 製品ガイド (PG213)"

Transcription

1 UltraScale+ Device Integrated Block for PCI Express v1.1 LogiCORE IP 製品ガイド Vivado Design Suite この資料は表記のバージョンの英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては 必ず最新英語版をご参照ください

2 目次 IP の概要 第 1 章 : 概要機能概要 アプリケーション サポートされていない機能 ライセンスおよび注文情報 第 2 章 : 製品仕様準拠する規格 リソースの使用 利用可能な PCI Express 用統合ブロック GT のロケーション ポートの説明 コンフィギュレーション空間 第 3 章 : コアを使用するデザイン Tandem コンフィギュレーション クロッキング リセット AXI4-Stream インターフェイスの説明 パワーマネージメント 割り込みリクエストの生成 受信メッセージインターフェイス コンフィギュレーションマネージメントインターフェイス リンクトレーニング : 2 レーン 4 レーン 8 レーン および 16 レーンコンポーネント レーン反転 第 4 章 : デザインフローの手順コアのカスタマイズおよび生成 コアへの制約 シミュレーション 合成およびインプリメンテーション 第 5 章 : サンプルデザインサンプルデザインの概要 コアの生成 サンプルデザインのシミュレーション サンプルデザインの合成およびインプリメンテーション 第 6 章 : テストベンチエンドポイント用ルートポートモデルテストベンチ ルートポート用のエンドポイントモデルテストベンチ UltraScale+ Device Block for PCIe v1.1 2

3 付録 A: 移行およびアップグレード UltraScale から UltraScale+ デバイスへのデザイン移行 Vivado Design Suite でのアップグレード 付録 B: GT のロケーション Virtex UltraScale+ デバイスの GT のロケーション Kintex UltraScale+ デバイスの GT のロケーション Zynq UltraScale+ デバイスの GT のロケーション 付録 C: デバッグザイリンクスウェブサイト ハードウェアデバッグ 付録 D: その他のリソースおよび法的通知ザイリンクスリソース 参考資料 改訂履歴 法的通知 UltraScale+ Device Block for PCIe v1.1 3

4 IP の概要 はじめに ザイリンクスの UltraScale+ Device Integrated Block for PCIe ソリューション IP コアは UltraScale+ デバイスで使用する 高帯域かつスケーラブルで信頼性の高いシリアルインターコネクトの構築ブロックソリューションです このコアは 1 レーン 2 レーン 4 レーン 8 レーン および 16 レーンのエンドポイントコンフィギュレーションをサポートし Gen1 (2.5GT/s) Gen2 (5.0GT/s) および Gen3 (8GT/s) スピードに対応します PCI Express Base Specification rev3.1 [ 参照 2] に準拠しています このソリューションは カスタマーユーザーインターフェイス用の AXI4-Stream インターフェイスをサポートしています 機能 PCI Express Base Specification 3.1 [ 参照 2] に準拠 PCI Express エンドポイント レガシエンドポイントまたはルートポートモード x1 x2 x4 x8 x16 のリンク幅 Gen1 Gen2 Gen3 のリンクスピード カスタマーロジック接続する AXI4-Stream インターフェイス 内部ロジックデータパスおよびデータインターフェイスでのパリティ保護 アドバンスエラーレポート (AER) および End-to-End CRC (ECRC) トランザクションのバッファリングに使用するブロック RAM 仮想チャネル x 1 トラフィッククラス x 8 最大 4 つの Physical Function (PV) および 252 の Virtual Function (VF) ビルトインのレーン反転およびレシーバーのレーン間スキュー調整 完全にコンフィギュレーション可能な 3 x 64 ビットまたは 6 x 32 ビットのベースアドレスレジスタ (BAR) サポートされるデバイスファミリ (1) サポートされるユーザーインターフェイス リソース デザインファイルサンプルデザインテストベンチ制約ファイルシミュレーションモデルサポートされるソフトウェアドライバー デザイン入力 シミュレーション 合成 注記 : この LogiCORE IP についてコアの概要 UltraScale+ AXI4-Stream Performance and Resource Utilization ( ウェブページ ) コアに含まれるもの テスト済みデザインフロー (2) Verilog Verilog Verilog XDC Verilog N/A Vivado Design Suite サポートされるシミュレータについては Vivado Design Suite ユーザーガイド : リリースノート インストールおよびライセンス を参照 サポート ザイリンクスサポートウェブページで提供 Vivado 合成 1. サポートされているデバイスの一覧は Vivado IP カタログを参照してください 2. サポートされているツールのバージョンは Vivado Design Suite ユーザーガイド : リリースノートガイド インストールおよびライセンス を参照してください 機能の一覧は 機能概要 を参照してください UltraScale+ Device Block for PCIe v1.1 4 Production 製品仕様

5 第 1 章 概要 UltraScale+ Device Integrated Block for PCIe コアは UltraScale+ デバイスで使用する高帯域幅でスケーラブルなシリアルインターコネクトの構築ブロックであり UltraScale+ デバイス内の統合ブロックをインスタンシエートします 重要 : UltraScale デバイスにデザインをインプリメントする場合は UltraScale Devices Gen3 Integrated Block for PCI Express LogiCORE IP 製品ガイド (PG156) [ 参照 3] を参照してください 図 1-1 に このコアのインターフェイスを示します UltraScale+ Device Block for PCIe v1.1 5

6 第 1 章 : 概要 X-Ref Target - Figure 1-1 図 1-1: コアのインターフェイス UltraScale+ Device Block for PCIe v1.1 6

7 第 1 章 : 概要 機能概要 Integrated Block for PCI Express (PCIe ) ソリューションの GTH および GTY トランシーバーは 1 レーン 2 レーン 4 レーン 8 レーン および 16 レーン動作をサポートし ラインレートは 2.5GT/s (Gen1) 5.0GT/s (Gen2) および 8.0GT/s (Gen3) に対応しています またエンドポイントおよびルートポートコンフィギュレーションがサポートされています カスタマーユーザーインターフェイスは AMBA AXI4-Stream インターフェイスに準拠しています このインターフェイスでは リクエスターインターフェイス コンプリーションインターフェイス およびメッセージインターフェイスを個別にサポートします これによって データアライメントとパリティチェックに柔軟性が備わります データのフロー制御は 受信および送信方向でサポートされています さらに送信方向では 進行中トランザクションの中断がサポートされています オプションの連続トランザクションでは ストラドルを使用してより高いリンク帯域幅を提供します このコアの特長は次のとおりです PCI Express Base Specification 3.1 [ 参照 2] に準拠 PCI Express エンドポイント レガシエンドポイントまたはルートポートモード x1 x2 x4 x8 x16 のリンク幅 Gen1 Gen2 Gen3 のリンクスピード カスタマーロジックに接続する AXI4-Stream インターフェイス 64 ビット /128 ビット /256 ビット /512 ビットに設定可能なデータパス幅 イニシエーター / ターゲット リクエスト / コンプリーションの 4 つの独立したストリーム 内部ロジックデータパスおよびデータインターフェイスでのパリティ保護 アドバンスエラーレポート (AER) および End-to-End CRC (ECRC) トランザクションのバッファリングに使用するブロック RAM 16 KB - リプレイバッファー 4 KB または 16 KB に構成可能 - 受信ポステッドトランザクション FIFO 8 KB 16 KB または 32 KB に構成可能 - 受信コンプリーショントランザクション FIFO ブロック RAM の ECC 保護機能を使用 仮想チャネル x 1 トラフィッククラス x 8 マルチファンクションおよびシングルルート I/O 仮想化 (SR-IOV) をサポート 最大 4 つの Physical Function (PF) 最大 252 の Virtual Function (VF) ビルトインのレーン反転およびレシーバーのレーン間スキュー調整 完全にコンフィギュレーション可能な 3 x 64 ビットまたは 6 x 32 ビットのベースアドレスレジスタ (BAR) 拡張 ROM BAR をサポート 最大ペイロードサイズ : および 1024 バイト 次のすべての割り込みタイプをサポート INTx 32 のマルチベクター MSI 機能 オプションで使用される最大 2048 のベクターを備えた MSI-X 機能 ビルトイン MSI-X ベクターテーブル ビルトインイニシエーター読み出しリクエスト / コンプリーションタグマネージャー 最大 256 の未処理イニシエーター読み出しリクエストトランザクションをサポート UltraScale+ Device Block for PCIe v1.1 7

8 第 1 章 : 概要 DRP ポートをサポート 高性能アプリケーションを可能にする機能 AXI4 ストリーミングトランザクション層パケット (TLP) のリクエスターコンプリーションインターフェイスへのストラドル 最大 256 の Rx コンプリーションヘッダークレジットおよび 32 KB の Rx コンプリーションペイロード空間 受信データパスにおけるトランザクションの実行順序入れ替えをサポート アドレス変換サービス (ATS) のメッセージ表示 アトミック操作トランザクションをサポート TLP Processing Hints (TPH) 使用が簡単でコンフィギュレーション可能な機能をサポート 受信トランザクションの BAR および ID ベースのフィルタリング オプション機能の ASPM コンフィギュレーション拡張インターフェイス AXI4 Stream インターフェイスアドレスアラインモード PCI Express (MCAP) を経由するコンフィギュレーションおよび 100 ms の電源投入 - コンフィギュレーション時間 ( 今後の IP リリースでサポート予定 ) デバッグおよび診断インターフェイス アプリケーション このコアのアーキテクチャは 性能 コスト スケーラビリティ 機能の拡張性 および絶対的な信頼性を重視し コンピューティングや通信をターゲットとする多様なアプリケーションを可能にします 代表的なアプリケーションは次のとおりです データ通信ネットワーク 電気通信ネットワーク ブロードバンドアプリケーション ( 有線 / 無線 ) ネットワークインターフェイスカード チップ間およびバックプレーンインターフェイスカード 多様なアプリケーションに対応するためのサーバーアドインカード サポートされていない機能 PCI Express Base 仕様 3.1 には数多くのオプション機能があります これらのうちサポートされない一部機能を次に示します アドレス変換サービスは実装されませんが 外部のソフトロジックに実装することは可能です スイッチポート Resizable BAR (RBAR) の拡張機能 UltraScale+ Device Block for PCIe v1.1 8

9 第 1 章 : 概要 ライセンスおよび注文情報 UltraScale+ Device Integrated Block for PCIe コアは ザイリンクスエンドユーザーライセンス規約のもと Vivado Design Suite を使用して追加コストなしで提供されています この IP およびその他のザイリンクス LogiCORE IP に関する情報は ザイリンクス IP コアページから入手できます その他のザイリンクス LogiCORE IP モジュールやツールの価格および提供状況については お近くのザイリンクス販売代理店にお問い合わせください UltraScale+ Device Block for PCIe v1.1 9

10 第 2 章 製品仕様 準拠する規格 UltraScale+ Device Integrated Block for PCIe ソリューションは PCI Express Card Electromechanical (CEM) v3.0 や PCI Industrial Computer Manufacturers Group (PICMG) v3.4 仕様 [ 参照 2] などの業界標準のアプリケーションフォームファクターと互換性があります リソースの使用 リソース使用状況の詳細は Performance and Resource Utilization ( ウェブページ ) をご覧ください 利用可能な PCI Express 用統合ブロック 表 2-1 に サポートされるデバイスを示します 表 2-2 表 2-3 および表 2-4 に 複数の統合ブロックを含んでいるデバイスで利用可能な PCI Express 用統合ブロックを一覧表示しています 場合によっては 統合ブロックに隣接してボンディングされた GTH および GTY トランシーバーサイトが不足するため すべての統合ブロックが使用可能とは限りません 表 2-1: サポートされるデバイス デバイスの選択 GTH GTY PCIe FFVC1760 FFVE1924 XCZU17EG XCZU19EG XCZU17EG 44 4 XCZU19EG 44 5 FFVB1517 XCZU19EG 16 5 FFVE1517 XCKU11P XCKU15P FFVC1517 XCVU3P 40 2 FLVA2104 XCVU5P 52 4 XCVU7P 52 4 XCVU9P 52 6 UltraScale+ Device Block for PCIe v1.1 10

11 第 2 章 : 製品仕様 表 2-1: サポートされるデバイス ( 続き ) デバイスの選択 GTH GTY PCIe XCVU5P 76 4 FLVB2104 XCVU7P 76 4 XCVU9P 76 6 XCVU5P 80 4 FLVC2104 XCVU7P 80 4 XCVU9P FLVA2577 XVCU9P 表 2-2: 利用可能な PCI Express 用統合ブロック - Virtex UltraScale+ デバイスの選択 PCI Express ブロックの場所デバイスパッケージ X0Y0 X0Y1 X0Y2 X0Y3 X0Y5 X1Y0 X1Y2 X1Y4 XCVU3P FFVC1517 可可 FLVA2104 可可可可 XCVU5P FLVB2104 可可可可 FLVC2104 可可可可 FLVA2104 可可可可 XCVU7P FLVB2104 可可可可 FLVC2104 可可可可 FLGA2104 可可可可 FLGB2104 可可可可 XCVU9P FLGC2104 可可可可可可 FLGA2577 可 可 可 可 可 可 FSGD2104 可 可 可 可 可 FLGA2577 可 可 可 FLGB2104 可 可 可 XCVU11P FLGC2104 可可可 FLGF1924 可 可 可 FSGD2104 可 可 可 FHGA2104 可 可 FHGB2014 可 可 可 XCVU13P FHGC2104 可可可可 FLGA2577 可可可可 FIGD2104 可可可可 UltraScale+ Device Block for PCIe v1.1 11

12 第 2 章 : 製品仕様 表 2-3: 利用可能な PCI Express 用統合ブロック - Zynq UltraScale+ デバイスの選択 PCI Express ブロックの場所 デバイス パッケージ X0Y0 X0Y1 X0Y2 X0Y3 X1Y0 X1Y1 X1Y2 FFVC1760 可 可 可 可 XCZU11EG FFVB1517 可可 FFVC1156 可可 FFVF1517 可 可 FFVC1760 可 可 可 可 可 XCZU17EG FFVE1924 可可可 FFVB1517 可可可 FFVD1760 可 可 可 可 可 FFVC1760 可 可 可 可 可 XCZU19EG FFVE1924 可可可 FFVB1517 可可可 FFVD1760 可 可 可 可 可 XCZU4EV FBVB900 可可 SFVC784 可可 XCZU5EV FBVB900 可可 SFVC784 可可 FBVB900 可 可 XCZU7EV FFVC1156 可 可 FFVF1517 可 可 表 2-4: 利用可能な PCI Express 用統合ブロック - Kintex UltraScale+ デバイスの選択 PCI Express ブロックの場所 デバイス パッケージ X0Y0 X0Y2 X0Y3 X1Y0 X1Y1 X1Y2 FFVE1517 可 可 可 可 XCKU11P FFVA1156 可 可 可 可 FFVD900 可 可 FFVE1517 可 可 可 可 可 XCKU15P FFVA1156 可可可可可 FFVA1760 可可可可可 FFVE1760 可可可可可 XCKU3P FFVA676 FFVB676 FFVD900 SFVB784 可可可可 UltraScale+ Device Block for PCIe v1.1 12

13 第 2 章 : 製品仕様 表 2-4: 利用可能な PCI Express 用統合ブロック - Kintex UltraScale+ ( 続き ) デバイスの選択 PCI Express ブロックの場所デバイスパッケージ X0Y0 X0Y2 X0Y3 X1Y0 X1Y1 X1Y2 FFVA676 可 FFVB676 可 XCKU5P FFVD900 可 SFVB784 可 表 2-5: デバイスの最低要件可能なリンクスピード 可能なリンク幅 サポートされるスピードグレード Gen1/Gen2 x L -1LV -2L -2LV x L -2L Gen3 x8 NL L -1LV -2L -2LV x8 LL L -2L GT のロケーション 有効なデバイスとパッケージの組み合わせにおいて推奨される GT のロケーションは 付録 B GT のロケーション を参照してください パッケージピンは 付録 B に示す GT の X-Y ロケーションから直接得られます 表の内容と一致する選択したデバイスとパッケージの組み合わせに対して Vivado Design Suite が XDC を生成します 推奨される GT ロケーションは 次を参照してください Virtex UltraScale+ デバイスの GT のロケーション Kintex UltraScale+ デバイスの GT のロケーション Zynq UltraScale+ デバイスの GT のロケーション ポートの説明 このセクションでは 次のインターフェイスのポートについて説明します AXI4-Stream コアインターフェイス その他のコアインターフェイス AXI4-Stream コアインターフェイス 64/128/256 ビットインターフェイス ステータスインターフェイスと制御インターフェイスのほかに このコアにはトランザクションの送信 / 受信に使用する AXI4-Stream インターフェイスが 4 つ必要です このセクションでは これらのインターフェイスについて説明します UltraScale+ Device Block for PCIe v1.1 13

14 第 2 章 : 製品仕様 コンプリーターリクエストインターフェイス コンプリーターリクエスト (CQ) インターフェイスを介して リンクからのすべてのリクエストがユーザーアプリケーションに送信されます 表 2-6 では コアの CQ インターフェイスのポートについて説明します 幅 の列にある DW は 設定したデータバス幅 ( または 256 ビット ) を示します 表 2-6: コンプリーターリクエストインターフェイスのポートの説明ポート方向幅説明 m_axis_cq_tdata 出力 DW m_axis_cq_tuser 出力 88 m_axis_cq_tlast 出力 1 m_axis_cq_tkeep 出力 DW/32 m_axis_cq_tvalid 出力 1 m_axis_cq_tready 入力 1 コンプリーターリクエストインターフェイス (CQ) からの送信データです インターフェイス幅が 128 ビットの場合は下位 128 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 64 ビットのみ使用されます コアは インターフェイス幅が 128 ビットの場合 ビット [255:128] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [255:64] を 0 に固定します CQ のユーザーデータです この信号セットには 送信される TLP の側帯波情報が含まれます これらの信号は m_axis_cq_tvalid が High のときに有効になります このセットの各信号については 15 ページの表 2-7 を参照してください CQ データ用の TLAST を示す信号です コアは パケットの最後のビートでこの信号をアサートして パケットの最後を示します シングルビートで TLP が送信される場合 コアは送信の最初のビートでこの信号を設定します CQ データ用の TKEEP を示す信号です 送信中にこのバスのビット i がアサートされると m_axis_cq_tdata バスの Dword i に有効なデータが含まれていることをユーザーアプリケーションに示します コアは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットします したがって パケットのすべてのビートで m_axis_cq_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつアドレスアライメントの場合に適用されます コアは インターフェイス幅が 128 ビットの場合 ビット [7:4] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [7:2] を 0 に固定します CQ のデータが有効であることを示します m_axis_cq_tdata バス上に有効なデータがある場合 コアはこの出力をアサートします パケット送信中 この Valid 信号はアサートされた状態を保持します ユーザーアプリケーションは m_axis_cq_tready 信号を使用してデータ送信を制御できます CQ のデータ Ready 信号です ユーザーロジックでこの信号を High にアサートすると ユーザーアプリケーションがデータを受信する準備が整っていることをコアに示します 同じサイクルで m_axis_cq_tvalid と m_axis_cq_tready が両方ともアサートされると インターフェイスを介してデータが送信されます m_axis_cq_tvalid が High のときにユーザーアプリケーションが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで コアはバス上のデータを保持し また Valid 信号をアサートした状態で保持します UltraScale+ Device Block for PCIe v1.1 14

15 第 2 章 : 製品仕様 表 2-7: m_axis_cq_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 3:0 first_be[3:0] 4 7:4 last_be[3:0] 4 39:8 byte_en[31:0] sop 1 41 discontinue 1 ペイロードの最初の Dword 用のバイトイネーブル信号です このフィールドは TLP のトランザクション層ヘッダーの First_BE ビットの設定を反映しています メモリ読み出しおよび I/O 読み出しの場合 これらの 4 ビットは最初の Dword に読み出される有効なバイトを示します メモリ書き込みおよび I/O 書き込みの場合 これらのビットはペイロードの最初の Dword にある有効なバイトを示します アトミック操作やペイロードを含むメッセージの場合 これらのビットはすべて 1 にセットされます このフィールドは パケットの最初のビートで有効になります つまり sop と m_axis_cq_tvalid は両方ともHigh になります 最後の Dword 用のバイトイネーブル信号です このフィールドは TLP のトランザクション層ヘッダーの Last_BE ビットの設定を反映しています メモリ読み出しの場合 これらの 4 ビットは データブロックの最後の Dword に読み出される有効なバイトを示します メモリ書き込みの場合 これらのビットはペイロードの最後の Dword にある有効なバイトを示します アトミック操作やペイロードを含むメッセージの場合 これらのビットはすべて 1 にセットされます このフィールドは パケットの最初のビートで有効になります つまり sop と m_axis_cq_tvalid は両方とも High になります ユーザーロジックは オプションでこれらのバイトイネーブル信号を使用して 送信されるパケットのペイロード内で有効なバイトを判断できます 送信中にこのバスのビット i がアサートされると m_axis_cq_tdata バスのバイト i に有効なペイロードバイトが含まれていることを示します このビットは ディスクリプターバイトに対してアサートされません バイトイネーブル信号は リクエストディスクリプター内の情報 ( アドレスおよび長さ ) や first_be および last_be 信号の設定からユーザーロジックがを生成できますが ほかのインターフェイス信号から生成する代わりに 直接使用することも可能です ペイロードサイズが 2 Dword (8 バイト ) より大きい場合は ペイロード用のこのバス上の 1 ビットは常に連続します ペイロードサイズが 2 Dword またはそれより小さい場合は 1 ビットは不連続になる場合があります 特殊な例として PCI Express の仕様で定義されている長さ 0 のメモリ書き込みトランザクションでは 関連する 1 DW ペイロードが送信される間は byte_en ビットがすべて 0 となります コアは インターフェイス幅が 128 ビットの場合 ビット [31:16] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [31:8] を 0 に固定します パケットの開始を示します コアは パケットの最初のビートでこの信号をアサートして パケットの開始を示します この信号の使用はオプションです 内部 FIFO メモリから TLP ペイロードを読み出している間に訂正不可能なエラーを検出した場合に コアは TLP の最後のビートでこの信号をアサートします このようなエラーがコアによって検出された場合 ユーザーアプリケーションはすべての TLP を破棄する必要があります TLP にペイロードがない場合に この信号がアサートされることはありません m_axis_cq_tlast が High になっているサイクルでのみアサートされます コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます UltraScale+ Device Block for PCIe v1.1 15

16 第 2 章 : 製品仕様 表 2-7: m_axis_cq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 42 tph_present 1 44:43 tph_type[1:0] 2 52:45 tph_st_tag[7:0] 8 84:53 parity 32 このビットは インターフェイスを介して送信されるリクエスト TLP の中に Transaction Processing Hint (TPH) があることを示します このビットは sop と m_axis_cq_tvalid の両方が High のときに有効になります TPH がリクエスト TLP 内にある場合 これらの 2 ビットがヒントと関連する PH[1:0] フィールドの値を提供します これらのビットは sop と m_axis_cq_tvalid の両方が High のときに有効になります TPH がリクエスト TLP 内にある場合 この出力がヒントと関連する 8 ビットのステアリングタグを提供します これらのビットは sop と m_axis_cq_tvalid の両方が High のときに有効になります 256 ビットの送信データ用の奇数パリティです ビット i は m_axis_cq_tdata のバイト i について計算された奇数パリティを提供します インターフェイス幅が 128 ビットの場合は下位 16 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 8 ビットのみ使用されます コアは インターフェイス幅が 128 ビットの場合 ビット [31:16] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [31:8] を 0 に固定します コンプリーターコンプリーションインターフェイス コンプリーターコンプリーション (CC) インターフェイスを介して ユーザーアプリケーションが生成したコンプリーションがコンプリーターリクエストに対応して送信されます すべてのノンポステッドトランザクションをスプリットトランザクションとして処理できます つまり CC インターフェイスは 1 つのリクエストに対してコンプリーションを送信しながら リクエスターコンプリーションインターフェイスで新しいリクエストを連続して受信できます 表 2-8 では コアの CC インターフェイスのポートについて説明します 幅 の列にある DW は 設定したデータバス幅 ( または 256 ビット ) を示します 表 2-8: コンプリーターコンプリーションインターフェイスのポートの説明 ポート方向幅説明 s_axis_cc_tdata 入力 DW s_axis_cc_tuser 入力 33 s_axis_cc_tlast 入力 1 コンプリーターコンプリーションのデータバスです ユーザーアプリケーションからコアへ送信されるコンプリーションデータです インターフェイス幅が 128 ビットの場合は下位 128 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 64 ビットのみ使用されます コンプリーターコンプリーションのユーザーデータです この信号セットには 送信される TLP の側帯波情報が含まれます これらの信号は s_axis_cc_tvalid が High のときに有効になります このセットの各信号については 17 ページの表 2-9 を参照してください コンプリーターコンプリーションデータ用の TLAST を示す信号です ユーザーアプリケーションは パケットの最後を示すためにパケットの最後のサイクルでこの信号をアサートする必要があります シングルビートで TLP が送信される場合 ユーザーアプリケーションは送信の最初のサイクルでこの信号を設定する必要があります UltraScale+ Device Block for PCIe v1.1 16

17 第 2 章 : 製品仕様 表 2-8: コンプリーターコンプリーションインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 s_axis_cc_tkeep 入力 DW/32 s_axis_cc_tvalid 入力 1 s_axis_cc_tready 出力 4 コンプリーターコンプリーションデータ用の TKEEP を示す信号です 送信中にこのバスのビット i がアサートされると s_axis_cc_tdata バスの Dword i に有効なデータが含まれていることをコアに示します ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットします したがって パケットのすべてのビートで s_axis_cc_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつアドレスアライメントの場合に適用されます インターフェイス幅が 128 ビットの場合 ビット [7:4] はコアで使用されず インターフェイス幅が 64 ビットの場合 ビット [7:2] はコアで使用されません コンプリーターコンプリーションデータの Valid 信号です s_axis_cc_tdata バス上に有効なデータがある場合 ユーザーアプリケーションはこの出力をアサートする必要があります パケット送信中 この Valid 信号をアサートした状態で保持する必要があります コアは s_axis_cc_tready 信号を使用してデータ送信を制御できます コンプリーターコンプリーションデータの Ready 信号です コアがこの信号をアサートすると データの受信準備が整っていることを示します 同じサイクルで s_axis_cc_tvalid と s_axis_cc_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid 信号が High のときにコアが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで ユーザーアプリケーションはバス上のデータを保持し Valid 信号をアサートした状態で保持する必要があります 表 2-9: s_axis_cc_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 0 discontinue 1 送信されているデータ内にエラー ( メモリからペイロードを読み出している間に訂正不可能な ECC エラーなど ) を検出した場合 ユーザーアプリケーションはこの信号をアサートしてパケットの送信を中断する必要があります コアは リンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーアプリケーションは 送信中の任意のサイクルでこの信号をアサートできます エラーが示された場所より前のサイクルでパケットを中断 またはペイロードのすべてのバイトがコアへ送信されるまで継続できます 後者の場合 ユーザーアプリケーションがパケットの終了より前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_cc_tvalid が High の場合のみアサートされます コアは s_axis_cc_tready 信号が High の場合のみこの信号をサンプルします したがって この信号がアサートされた場合は s_axis_cc_tready が High になるまでディアサートしてはいけません コアがエンドポイントとしてコンフィギュレーションされている場合 AER 機能を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます UltraScale+ Device Block for PCIe v1.1 17

18 第 2 章 : 製品仕様 表 2-9: s_axis_cc_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 32:1 parity ビットデータ用の奇数パリティです コアでパリティチェックが有効の場合 ユーザーロジックはこのバスのビット i を s_axis_cc_tdata のバイト i について計算された奇数パリティに設定する必要があります インターフェイス幅が 128 ビットの場合は下位 16 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 8 ビットのみ使用されます インターフェイスパリティエラーが検出された場合 これは訂正不可能な内部エラーとして記録され そのパケットは破棄されます PCI Express Base Specification (6.2.9) には 次のように記述されています 訂正不可能な内部エラーとは コンポーネント内に生じるエラーであり コンポーネントの不正動作を招きます 訂正不可能な内部エラーから回復する唯一の方法は リセットまたはハードウェアの交換となります コアでパリティチェックが有効に設定されていない場合は パリティビットが永続的に 0 になります リクエスターリクエストインターフェイス リクエスターリクエスト (RQ) インターフェイスのポートを介して ユーザーアプリケーションがリモートの PCIe デバイスへリクエストを生成します 表 2-10 では コアの RQ インターフェイスのポートについて説明します 幅 の列にある DW は 設定したデータバス幅 ( または 256 ビット ) を示します 表 2-10: リクエスターリクエストインターフェイスのポートの説明 ポート方向幅説明 s_axis_rq_tdata 入力 DW s_axis_rq_tuser 入力 62 s_axis_rq_tlast 入力 1 s_axis_rq_tkeep 入力 DW/32 リクエスターリクエストのデータバスです この入力には ユーザーアプリケーションからコアへのリクエスター側のリクエストデータが含まれます インターフェイス幅が 128 ビットの場合は下位 128 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 64 ビットのみ使用されます リクエスターリクエストのユーザーデータです この信号セットには 送信される TLP の側帯波情報が含まれます これらの信号は s_axis_rq_tvalid が High のときに有効になります このセットの各信号については 20 ページの表 2-11 を参照してください リクエスターリクエストデータ用の TLAST を示す信号です ユーザーアプリケーションは パケットの最後を示すために TLP の最後のサイクルでこの信号をアサートする必要があります シングルビートで TLP が送信される場合 ユーザーアプリケーションは送信の最初のサイクルでこの信号を設定する必要があります リクエスターリクエストデータ用の TKEEP を示す信号です 送信中にこのバスのビット i がアサートされると s_axis_rq_tdata バスの Dword i に有効なデータが含まれていることをコアに示します ユーザーアプリケーションは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットする必要があります したがって パケットのすべてのビートで s_axis_rq_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつアドレスアライメントの場合に適用されます インターフェイス幅が 128 ビットの場合 ビット [7:4] はコアで使用されず インターフェイス幅が 64 ビットの場合 ビット [7:2] はコアで使用されません UltraScale+ Device Block for PCIe v1.1 18

19 第 2 章 : 製品仕様 表 2-10: リクエスターリクエストインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 s_axis_rq_tvalid 入力 1 s_axis_rq_tready 出力 4 pcie_rq_seq_num0 出力 6 pcie_rq_seq_num_vld0 出力 1 pcie_rq_tag0 出力 8 pcie_rq_tag_vld0 出力 1 リクエスターリクエストデータの Valid 信号です s_axis_rq_tdata バス上に有効なデータがある場合 ユーザーアプリケーションはこの出力をアサートする必要があります パケット送信中 この Valid 信号をアサートした状態で保持する必要があります コアは s_axis_rq_tready 信号を使用してデータ送信を制御できます リクエスターリクエストデータの Ready 信号です コアがこの信号をアサートすると データの受信準備が整っていることを示します 同じサイクルで s_axis_rq_tvalid と s_axis_rq_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid 信号が High のときにコアが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで ユーザーアプリケーションはバス上のデータを保持し Valid 信号をアサートした状態で保持する必要があります ユーザーは 4 つすべてのビットを 1 または 0 に割り当てることができます リクエスターリクエスト TLP の送信シーケンス番号を示します オプションでこの出力を使用すると コアの送信パイプライン内におけるリクエストの進捗状況を追跡できます この機能を使用する場合は seq_num[3:0] バスの各リクエストに対してシーケンス番号を与えます ユーザーアプリケーションからコンプリーション TLP を送信できなくなるパイプライン内の地点にリクエスト TLP が到達すると コアはこのシーケンス番号を pcie_rq_seq_num0[3:0] 出力に出力します このメカニズムによって コアの CC インターフェイスへ送信されるコンプリーションとリクエスターリクエストインターフェイスに送信されるポステッドリクエストの順序を管理できます Pcie_rq_seq_num0[3:0]0[3:0] 出力のデータは pcie_rq_seq_num_vld0 が High の場合に有効になります リクエスターリクエスト TLP の送信シーケンス番号の Valid 信号です pcie_rq_seq_num0[3:0] に有効なデータが示されると コアはこの出力を 1 サイクル間アサートします リクエスターリクエストのノンポステッドタグです コアでノンポステッドリクエストのタグ管理が実行される場合 コアはこの出力を使用し 受信した各ノンポステッドリクエストに対して割り当てられたタグを伝えます このバスのタグ値は pcie_rq_tag_vld0 が High になる 1 サイクル間有効です ユーザーは このタグをコピーして使用し コンプリーションデータとペンディングリクエストを結び付けることができます リクエストに対して割り当てられたタグを与えるため s_axis_rq_tdata バス上にリクエストが送信されてからコアが pcie_rq_tag_vld0 をアサートするまでの間には数サイクルの遅延が生じます この間 ユーザーアプリケーションは新しいリクエストを継続して送信できます 各リクエストのタグは このバスを使用して FIFO 順序で伝達されるため ユーザーアプリケーションは送信されたリクエストとタグの値を簡単に関連付けることができます リクエスターリクエストのノンポステッドタグの Valid 信号です リクエスターリクエストインターフェイスから入力されるノンポステッドリクエストにタグを割り当てて pcie_rq_tag0 出力にそれが示されると コアはこの出力を 1 サイクル間アサートします UltraScale+ Device Block for PCIe v1.1 19

20 第 2 章 : 製品仕様 表 2-11: s_axis_rq_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 3:0 first_be[3:0] 4 7:4 last_be[3:0] 4 10:8 addr_offset[2:0] 3 11 discontinue 1 最初の Dword 用のバイトイネーブル信号です このフィールドは リクエスト TLP のトランザクション層ヘッダーの First_BE ビットの設定に基づいて設定されます メモリ読み出し I/O 読み出し およびコンフィギュレーション読み出しの場合 これらの 4 ビットは最初の Dword に読み出される有効なバイトを示します メモリ書き込み I/O 書き込み およびコンフィギュレーション書き込みの場合 これらのビットはペイロードの最初の Dword にある有効なバイトを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします 最後の Dword 用のバイトイネーブル信号です このフィールドは TLP のトランザクション層ヘッダーの Last_BE ビットの設定に基づいて設定されます 2 Dword またはそれ以上のメモリ読み出しの場合 これらの 4 ビットは データブロックの最後の Dword に読み出される有効なバイトを示します 2 Dword またはそれ以上のメモリ書き込みの場合 これらのビットはペイロードの最後の Dword にある有効なバイトを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします このインターフェイスでアドレスアライメントモードを利用している場合 ユーザーアプリケーションはペイロードデータが開始するデータバス上のバイトレーン番号を提供する必要があります ( この側帯波バスのモジュロ 4) これによって コアは送信されるデータブロックのアライメントを判断できます s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします リクエスターリクエストインターフェイスが Dword アライメントモードでコンフィギュレーションされている場合 このフィールドは常に 0 にセットされている必要があります ルートポートコンフィギュレーションでは コンフィギュレーションパケットは常に DW0 にアラインされてなければならないため このパケットタイプに対しては このフィールドをどちらのアライメントモードでも 0 にセットする必要があります 送信されているデータ内にエラーを検出した場合 ユーザーアプリケーションは送信中にこの信号をアサートしてパケット送信を中断する必要があります コアは リンク上の対応する TLP を無効にしてデータ破損を回避します 送信中の任意のサイクルでこの信号をアサートできます エラーが示された場所より前のサイクルでパケットを中断 またはペイロードのすべてのバイトがコアへ送信されるまで継続できます 後者の場合 ユーザーアプリケーションがパケットの終了より前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_rq_tvalid が High の場合のみアサートされます コアは s_axis_rq_tready 信号が High の場合のみこの信号をサンプルします したがって この信号がアサートされた場合は s_axis_rq_tready が High になるまでディアサートしてはいけません discontinue 信号は ノンポステッド TLP に対しては有効ではありません 送信中 ユーザーロジックは 最初のサイクル以外の任意のサイクルでこの信号をアサートできます コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます UltraScale+ Device Block for PCIe v1.1 20

21 第 2 章 : 製品仕様 表 2-11: s_axis_rq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 12 tph_present 1 14:13 tph_type[1:0] 2 15 tph_indirect_tag_en 1 23:16 tph_st_tag[7:0] 8 27:24 seq_num[3:0] 4 このビットは インターフェイスを介して送信されるリクエスト TLP の中に Transaction Processing Hint (TPH) があることを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします TPH 機能を使用しない場合 このビットは常に 0 にセットされる必要があります TPH がリクエスト TLP 内にある場合 これらの 2 ビットがヒントと関連する PH[1:0] フィールドの値を提供します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします tph_present が 0 にセットされている場合 これらのビットは任意の値に設定できます このビットが 1 の場合 コアはステアリングタグテーブルへのインデックスとして tph_st_tag[7:0] の下位ビットを使用し 送信されるリクエスト TLP にこのロケーションからのタグを挿入します このビットが 0 の場合 コアはステアリングタグとして tph_st_tag[7:0] の値を直接使用します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのビットをサンプルします tph_present が 0 にセットされている場合 このビットは任意の値に設定できます TPH がリクエスト TLP 内にある場合 この出力がヒントと関連する 8 ビットのステアリングタグを提供します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします tph_present が 0 にセットされている場合 これらのビットは任意の値に設定できます オプションで このフィールドに 4 ビットのシーケンス番号を提供すると コアの送信パイプライン内におけるリクエストの進捗状況を追跡できます コンプリーション TLP を渡すことができなくなるパイプライン内の地点にリクエスト TLP が到達すると コアはこのシーケンス番号を pcie_rq_seq_num[3:0] 出力に出力します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします ユーザーアプリケーションが コアの pcie_rq_seq_num[3:0] 出力をモニタリングしていない場合には この入力を 0 にハード接続できます 256 ビットデータ用の奇数パリティです コアでパリティチェックが有効の場合 ユーザーロジックはこのバスのビット i を s_axis_rq_tdata のバイト i について計算された奇数パリティに設定する必要があります インターフェイス幅が 128 ビットの場合は下位 16 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 8 ビットのみ使用されます 59:28 parity 32 インターフェイスパリティエラーが検出された場合 これは訂正不可能な内部エラーとして記録され そのパケットは破棄されます PCI Express Base Specification (6.2.9) には 次のように記述されています 訂正不可能な内部エラーとは コンポーネント内に生じるエラーであり コンポーネントの不正動作を招きます 訂正不可能な内部エラーから回復する唯一の方法は リセットまたはハードウェアの交換となります コアでパリティチェックが有効に設定されていない場合は パリティビットが永続的に 0 になります 61:60 seq_num[5:4] 2 [27:24] のように seq_num の拡張です UltraScale+ Device Block for PCIe v1.1 21

22 第 2 章 : 製品仕様 リクエスターコンプリーションインターフェイス リクエスターコンプリーション (RC) インターフェイスを介して リクエストに対応してリンクから受け取ったコンプリーションがユーザーアプリケーションに送信されます 表 2-12 では コアの RC インターフェイスのポートについて説明します 幅 の列にある DW は 設定したデータバス幅 ( または 256 ビット ) を示します 表 2-12: リクエスターコンプリーションインターフェイスのポートの説明 ポート方向幅説明 m_axis_rc_tdata 出力 DW m_axis_rc_tuser 出力 75 m_axis_rc_tlast 出力 1 m_axis_rc_tkeep 出力 DW/32 リクエスターコンプリーションのデータバスです コアのリクエスターコンプリーションインターフェイスからユーザーアプリケーションへデータを送信します インターフェイス幅が 128 ビットの場合は下位 128 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 64 ビットのみ使用されます コアは インターフェイス幅が 128 ビットの場合 ビット [255:128] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [255:64] を 0 に固定します リクエスターコンプリーションのユーザーデータです この信号セットには 送信される TLP の側帯波情報が含まれます これらの信号は m_axis_rc_tvalid が High のときに有効になります このセットの各信号については 23 ページの表 2-13 を参照してください リクエスターコンプリーションデータ用の TLAST を示す信号です コアは パケットの最後のビートでこの信号をアサートして パケットの最後を示します シングルビートで TLP が送信される場合 コアは送信の最初のビートでこのビットを設定します この出力は ストラドルオプションが無効に設定されている場合のみ使用されます ストラドルオプションが有効に設定されている場合 (256 ビットインターフェイスの場合 ) 常にコアはこの出力を 0 にセットします リクエスターコンプリーションデータ用の TKEEP を示す信号です 送信中にこのバスのビット i がアサートされると m_axis_rc_tdata バスの Dword i に有効なデータが含まれていることをコアに示します コアは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットします したがって パケットのすべてのビートで m_axis_rc_tkeep が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつアドレスアライメントの場合に適用されます コアは インターフェイス幅が 128 ビットの場合 ビット [7:4] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [7:2] を 0 に固定します これらの出力は インターフェイス幅が 256 ビットでストラドルオプションが有効に設定されている場合にすべて 1 となります インターフェイスを介して送信されたコンプリーション TLP の開始および終了を判断する場合 ユーザーロジックは m_axis_rc_tuser のこの信号を使用する必要があります UltraScale+ Device Block for PCIe v1.1 22

23 第 2 章 : 製品仕様 表 2-12: リクエスターコンプリーションインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 m_axis_rc_tvalid 出力 1 m_axis_rc_tready 入力 1 リクエスターコンプリーションデータの Valid 信号です m_axis_rc_tdata バス上に有効なデータがある場合 コアはこの出力をアサートします パケット送信中 この Valid 信号はアサートされた状態を保持します ユーザーアプリケーションは m_axis_rc_tready 信号を使用してデータ送信を制御できます リクエスターコンプリーションデータの Ready 信号です ユーザーロジックでこの信号を High にアサートすると ユーザーアプリケーションがデータを受信する準備が整っていることをコアに示します 同じサイクルで m_axis_rc_tvalid と m_axis_rc_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid が High のときにユーザーアプリケーションが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで コアはバス上のデータを保持し また Valid 信号をアサートした状態で保持します 表 2-13: m_axis_rc_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 31:0 byte_en is_sof_0 1 ユーザーロジックは オプションでこれらのバイトイネーブル信号を使用して 送信されるパケットのペイロード内で有効なバイトを判断できます 送信中にこのバスのビット i がアサートされると m_axis_rc_tdata バスのバイト i に有効なペイロードバイトが含まれていることを示します このビットは ディスクリプターバイトに対してアサートされません バイトイネーブル信号は リクエストディスクリプター内の情報 ( アドレスおよび長さ ) からユーザーロジックが生成できますが ほかのインターフェイス信号から生成する代わりに 直接使用することも可能です TLP のペイロードに対するこのバスの 1 ビットは常に連続します コアは インターフェイス幅が 128 ビットの場合 ビット [31:16] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [31:8] を 0 に固定します バイトイネーブルビットは 長さ 0 のメモリ読み出しリクエストに応答して受信されたコンプリーションでも設定されます 最初のコンプリーション TLP の開始を示します 64 ビットと 128 ビットインターフェイス およびストラドルが無効に設定されている 256 ビットインターフェイスの場合 TLP の開始を示すためにパケットの最初のビートでコアが is_sof_0 をアサートします これらのインターフェイスでは 1 データビートで 1 TLP のみ開始可能であり is_sof_1 は常に 0 にセットされます この信号の使用は ストラドルオプションが無効の場合のみ有効です インターフェイス幅が 256 ビットでストラドルオプションが有効な場合 コアは同じビート内で 2 つのコンプリーション TLP をストラドルできます この場合 コンプリーション TLP は AXI4-Stream パケットとしてフォーマットされません is_sof_0 のアサートは ビート内におけるコンプリーション TLP の開始を示します 以前の TLP が現ビートよりも前に終了している場合 現コンプリーション TLP の最初のバイトはバイトレーン 0 に含まれ また以前の TLP が現ビートで継続している場合 コンプリーション TLP の最初のバイトはバイトレーン 16 に含まれます UltraScale+ Device Block for PCIe v1.1 23

24 第 2 章 : 製品仕様 表 2-13: m_axis_rc_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 33 is_sof_1 1 37:34 is_eof_0[3:0] 4 41:38 is_eof_1[3:0] 4 42 discontinue 1 74:43 parity 32 2 つ目のコンプリーション TLP の開始を示します インターフェイス幅が 256 ビットでストラドルオプションが有効な場合にこの信号が使用され コアは同じビート内で 2 つのコンプリーション TLP をストラドルできます その他の場合 この出力は常に 0 になります is_sof_1 のアサートは ビート内における 2 つ目のコンプリーション TLP の開始を示します このとき 最初のバイトはバイトレーン 16 に含まれます 以前の TLP が同じビートの 0 ~15 のいずれかのバイト位置で終了している場合のみ コアはバイト位置 16 で 2 つ目の TLP を開始します つまり 同じビートで is_eof_0[0] も設定されている場合に限られます 最初のコンプリーション TLP の終了と最後の Dword のオフセットを示します これらの出力は インターフェイス幅が 256 ビットでストラドルオプションが有効に設定されている場合のみ使用されます ビット is_eof_0[0] のアサートは 現ビートにおける最初のコンプリーション TLP の終了を示します このビットが設定されると is_eof_0[3:1] がこの TLP の最後の Dword のオフセットを示します 2 つ目のコンプリーション TLP の終了と最後の Dword のオフセットを示します これらの出力は インターフェイス幅が 256 ビットでストラドルオプションが有効に設定されている場合のみ使用されます コアは 同じビート内で 2 つのコンプリーション TLP をストラドルできます その他の場合 これらの出力は予約されています is_eof_1[0] のアサートは 同じビートにおける 2 つ目の TLP の終了を示します is_eof_1 のビット 0 がセットされると ビット [3:1] は現ビートで終了する TLP の最後の Dword のオフセットを示します 2 つ目の TLP は バイト位置 27 ~ 31 の間でのみ終了可能なため is_eof_1[3:1] は 2 つの値 (6 または 7) のいずれかとなります 2 つ目の TLP の最後のバイトのオフセットは TLP の開始アドレスと長さ あるいはバイトイネーブル信号 byte_en[31:0] から判断できます is_eof_1[0] が High の場合 is_eof_0[0] 信号と is_sof_1 信号も同じビート内で High になります 内部 FIFO メモリから TLP ペイロードを読み出している間に訂正不可能なエラーを検出した場合に コアは TLP の最後のビートでこの信号をアサートします このようなエラーがコアによって検出された場合 ユーザーアプリケーションはすべての TLP を破棄する必要があります TLP にペイロードがない場合に この信号がアサートされることはありません この信号は ペイロード送信の最後のビートでのみアサートされます ( つまり is_eof_0[0] が High の場合 ) ストラドルオプションが有効の場合 コアが discontinue 信号をアサートしていると 2 つ目の TLP が開始されません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます 256 ビットの送信データ用の奇数パリティです ビット i は m_axis_rc_tdata のバイト i について計算された奇数パリティを提供します インターフェイス幅が 128 ビットの場合は下位 16 ビットのみ使用され インターフェイス幅が 64 ビットの場合は下位 8 ビットのみ使用されます コアは インターフェイス幅が 128 ビットの場合 ビット [31:16] を 0 に固定し インターフェイス幅が 64 ビットの場合 ビット [31:8] を 0 に固定します UltraScale+ Device Block for PCIe v1.1 24

25 第 2 章 : 製品仕様 512 ビットインターフェイス ここでは コアのユーザーインターフェイスに関連するポートについて説明します 512 ビットインターフェイスを選択する場合 サンプルデザインの最上位 XDC ファイルの Pblock 制約を確認します これらの制約は タイミングの向上を目的として 512 ビット AXI4-Stream ソフトロジックを PCIe 統合ブロックの近くに配置しておくために必要です コンプリーターリクエストインターフェイス 表 2-14: コンプリーターリクエストインターフェイスのポートの説明 名称幅方向説明 m_axis_cq_tdata 512 出力 m_axis_cq_tuser 183 出力 m_axis_cq_tlast 1 出力 m_axis_cq_tkeep 16 出力 m_axis_cq_tvalid 1 出力 m_axis_cq_tready 1 入力 PCIe コンプリーターリクエストインターフェイスからユーザーアプリケーションへデータを送信します 送信される TLP の側帯波情報を含む信号セットです これらの信号は m_axis_cq_tvalid が High のときに有効になります このセットの各信号は 表 2-15 で説明しています コアは パケットの最後のビートでこの信号をアサートして パケットの最後を示します シングルビートで TLP が送信される場合 コアは送信の最初のビートでこのビットを設定します この出力は ストラドルオプションが無効に設定されている場合のみ使用されます ストラドルオプションが有効に設定されている場合 常にコアはこの出力を 0 にセットします 送信中にこのバスのビット i がアサートされると m_axis_cq_tdata バスの Dword i に有効なデータが含まれていることをユーザーロジックに示します コアは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットします したがって パケットのすべてのビートで m_axis_cq_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつ 128 バイトアドレスアライメントの場合に適用されます tkeep ビットは ストラドルが CQ インターフェイスで無効の場合のみのみ有効です ストラドルが有効の場合 tkeep ビットはすべてのビートで常にすべて 1 となります インターフェイスを介して送信された TLP の開始および終了を判断する場合 ユーザーロジックは m_axis_cq_tuser バスの is_sop/is_eop 信号を使用する必要があります m_axis_cq_tdata バス上に有効なデータがある場合 コアはこの出力をアサートします パケット送信中 この Valid 信号はアサートされた状態を保持します ユーザーアプリケーションは m_axis_cq_tready 信号を使用してデータ送信を制御できます ユーザーロジックでこの信号を High にアサートすると ユーザーロジックがデータを受信する準備が整っていることを PCIe コアに示します 同じサイクルで m_axis_cq_tvalid と m_axis_cq_tready が両方ともアサートされると インターフェイスを介してデータが送信されます m_axis_cq_tvalid が High のときにユーザーロジックが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで コアはバス上のデータを保持し また Valid 信号をアサートした状態で保持します UltraScale+ Device Block for PCIe v1.1 25

26 第 2 章 : 製品仕様 表 2-14: コンプリーターリクエストインターフェイスのポートの説明 ( 続き ) 名称幅方向説明 pcie_cq_np_req 2 入力 pcie_cq_np_req_count 6 出力 この入力は ユーザーアプリケーションがノンポステッドリクエストの送信を要求する際に使用されます コアは クレジットベースのフロー制御メカニズムを実装して ポステッド TLP のブロッキングを行わずにインターフェイス上でノンポステッドリクエストの送信を制御します この入力信号は 内部のクレジット数を制御します クレジット数は pcie_cq_np_req[1:0] の設定に応じて次のように各クロックサイクルでアップデートされます 00: 変更なし 01: 1 ずつインクリメント 10 または 11: 2 ずつインクリメントクレジット数は インターフェイスで各ノンポステッドリクエストが送信されるとデクリメントされます クレジット数が 0 になると コアは一時的にユーザーロジックへのノンポステッドリクエストの送信を停止します ノンポステッドリクエストの送信が一時停止した場合でも リンクから受信したポステッド TLP を継続的に送信します ユーザーアプリケーションは ノンポステッドリクエスト受信バッファーのステータスに基づいて各サイクルで pcie_cq_np_req[1:0] を設定するか またはノンポステッドリクエストに対する選択的なバックプレッシャーを実行する必要がない場合はこれを永久的に 11 に設定できます pcie_cq_np_req[1:0] の設定は コンプリーターリクエストインターフェイス上のパケット送信と揃う必要はありません この出力は ユーザーロジックへのノンポステッドリクエストの送信に関して コアが管理するクレジットカウント値を提供します コアは このクレジットカウント値が 0 以外の場合のみ コンプリーターリクエストインターフェイスを介してノンポステッドリクエストを送信します このカウンターは 32 が最大値です 内部パイプラインの遅延が原因となり ユーザーアプリケーションが pcie_cq_np_req 入力に対してクレジットを供給してから PCIe コアが pcie_cq_np_req_count 出力をアップデートするまでの間には数サイクルの遅延が生じます UltraScale+ Device Block for PCIe v1.1 26

27 第 2 章 : 製品仕様 表 2-15: m_axis_cq_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 7:0 first_be[7:0] 8 15:8 last_be[7:0] 8 79:16 byte_en[63:0] 64 ペイロードの最初の Dword 用のバイトイネーブル信号です first_be[3:0] は 現ビートの最初の TLP のトランザクション層ヘッダーの First Byte Enable ビットの設定を反映しています first_be[7:4] は 現ビートの 2 番目の TLP のトランザクション層ヘッダーの First Byte Enable ビットの設定を反映しています メモリ読み出しおよび I/O 読み出しの場合 これらの 4 ビットは最初の Dword に読み出される有効なバイトを示します メモリ書き込みおよび I/O 書き込みの場合 これらのビットはペイロードの最初の Dword にある有効なバイトを示します アトミック操作やペイロードを含むメッセージの場合 これらのビットはすべて 1 にセットされます first_be のビット [7:4] は ストラドルが CQ インターフェイスで有効の場合のみ有効です ストラドルが無効の場合 これらのビットは常に 0 となります このフィールドは パケットの最初のビートで有効になります m_axis_cq_tvalid および is_sop[0] が両方とも High にアサートされると first_be[3:0] が有効になります m_axis_cq_tvalid および is_sop[1] が両方とも High にアサートされると first_be[7:4] が有効になります ペイロードの最後の Dword 用のバイトイネーブル信号です last_be[3:0] は 現ビートの最初の TLP のトランザクション層ヘッダーの Last Byte Enable ビットの設定を反映しています last_be[7:4] は 現ビートの 2 番目の TLP のトランザクション層ヘッダーの Last Byte Enable ビットの設定を反映しています メモリ読み出しの場合 これらの 4 ビットは データブロックの最後の Dword に読み出される有効なバイトを示します メモリ書き込みの場合 これらのビットはペイロードの最後の Dword にある有効なバイトを示します アトミック操作やペイロードを含むメッセージの場合 これらのビットはすべて 1 にセットされます last_be のビット [7:4] は ストラドルが CQ インターフェイスで有効の場合のみ有効です ストラドルが無効の場合 これらのビットは常に 0 となります このフィールドは パケットの最初のビートで有効になります m_axis_cq_tvalid および is_sop[0] が両方とも High にアサートされると last_be[3:0] が有効になります m_axis_cq_tvalid および is_sop[1] が両方とも High にアサートされると last_be[7:4] が有効になります ユーザーロジックは オプションでこれらのバイトイネーブル信号を使用して 送信されるパケットのペイロード内で有効なバイトを判断できます 送信中にこのバスのビット i がアサートされると m_axis_cq_tdata バスのバイト i に有効なペイロードバイトが含まれていることをユーザーロジックに示します このビットは ディスクリプターバイトに対してアサートされません バイトイネーブル信号は リクエストディスクリプター内の情報 ( アドレスおよび長さ ) や first_be および last_be 信号の設定からユーザーロジックが生成できますが ほかのインターフェイス信号から生成する代わりに 直接使用することも可能です ペイロードサイズが 2 Dword (8 バイト ) より大きい場合は ペイロード用のこのバス上の最初のビットは常に連続します ペイロードサイズが 2 Dword またはそれより小さい場合は 最初のビットは不連続になる場合があります 特殊な例として PCI Express の仕様で定義されている長さ 0 のメモリ書き込みトランザクションでは 関連する 1 DW ペイロードが送信される間は byte_en ビットがすべて 0 となります UltraScale+ Device Block for PCIe v1.1 27

28 第 2 章 : 製品仕様 表 2-15: m_axis_cq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 81:80 is_sop[1:0] 2 83:82 is_sop0_ptr[1:0] 2 85:84 is_sop1_ptr[1:0] 2 87:86 is_eop[1:0] 2 91:88 is_eop0_ptr[3:0] 4 95:92 is_eop1_ptr[3:0] 4 現ビートでの新しい TLP の開始を示します これらの出力は TLP の最初のビートで設定されます ストラドルが無効の場合 is_sop[0] のみが有効になり is_sop[1] は常に 0 になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで開始する新しい TLP はありません 01: 1 つの新しい TLP が現ビートで開始します 開始位置は is_sop0_ptr[1:0] で示されます 11: 2 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示します 10: 禁止 新しい TLP は tlast のアサート後に続いて起こるビートで常に開始するため ストラドルオプションが無効の場合 ユーザーロジックではこの信号の使用はオプションです 現ビートで開始する最初の TLP の最初のバイトの位置を示します 00: バイトレーン 0 10: バイトレーン : 予約このフィールドは CQ インターフェイスでストラドルオプションを有効に設定した場合のみ有効です その他の場合 TLP はバイトレーン 0 でしか開始できないため 常に 0 になります 現ビートで開始する 2 番目の TLP の最初のバイトの位置を示します 10: バイトレーン : 予約 この出力は CQ インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます コアは 同じビート内で 2 つの TLP をストラドルできます ストラドルが無効の場合は常に 0 になります TLP が現ビートで終了していることを示します これらの出力は TLP の最後のビートで設定されます ストラドルが無効の場合 is_eop[0] のみが有効になり is_eop[1] は常に 0 になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで終了する TLP はありません 01: 1 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] がこの TLP の最後の Dword のオフセットを示します 11: 2 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示します 10: 禁止 tlast は TLP の最後のビートでアサートされるため ストラドルオプションが無効の場合 ユーザーロジックではこの信号の使用はオプションです 現ビートで終了する最初の TLP の最後の Dword のオフセットです この出力は is_eop[0] がアサートされると有効になります 現ビートで終了する 2 番目の TLP の最後の Dword のオフセットです この出力は is_eop[1] がアサートされると有効になります ストラドルが無効の場合は常に 0 になります UltraScale+ Device Block for PCIe v1.1 28

29 第 2 章 : 製品仕様 表 2-15: m_axis_cq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 96 discontinue 1 98:97 tph_present[1:0] 2 102:99 tph_type[3:0] 4 118:103 tph_st_tag[15:0] 8 182:119 parity 64 内部 FIFO メモリから TLP ペイロードを読み出している間に訂正不可能なエラーを検出した場合に コアは TLP の最後のビートでこの信号をアサートします このようなエラーがコアによって検出された場合 ユーザーアプリケーションはすべての TLP を破棄する必要があります TLP にペイロードがない場合に この信号がアサートされることはありません この信号は ペイロード送信の最後のビートでのみアサートされます ( つまり is_eop[0] が High の場合 ) ストラドルオプションが有効の場合 コアが discontinue 信号をアサートしていると 2 つ目の TLP が開始されません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます これらのビットは インターフェイスを介して送信されるリクエスト TLP の中に Transaction Processing Hint (TPH) があることを示します tph_present[0] は 現ビートの最初の TLP にヒントがあることを示します tph_present[1] は 現ビートの 2 番目の TLP にヒントがあることを示します m_axis_cq_tvalid および is_sop[0] が両方とも High になると tph_present[0] が有効になります m_axis_cq_tvalid および is_sop[1] が両方とも High になると tph_present[1] が有効になります TPH がリクエスト TLP 内にある場合 これらの 2 ビットがヒントと関連する PH[1:0] フィールドの値を提供します tph_type[1:0] は 現ビートの最初の TLP に関連する TPH タイプを示します tph_type[3:2] は 現ビートの 2 番目の TLP に関連する TPH タイプを示します m_axis_cq_tvalid および is_sop[0] が両方とも High になると tph_present[0] が有効になります m_axis_cq_tvalid および is_sop[1] が両方とも High になると tph_present[1] が有効になります TPH がリクエスト TLP 内にある場合 この出力がヒントと関連する 8 ビットのステアリングタグを提供します tph_st_tag[7:0] は 現ビートの最初の TLP に関連するステアリングタグを示します tph_st_tag[15:8] は 現ビートの 2 番目の TLP に関連するステアリングタグを示します m_axis_cq_tvalid および is_sop[0] が両方とも High になると tph_st_tag[7:0] が有効になります m_axis_cq_tvalid および is_sop[1] が両方とも High になると tph_st_atg[15:8] が有効になります 512 ビットの送信データ用の奇数パリティです ビット i は m_axis_cq_tdata のバイト i について計算された奇数パリティを提供します UltraScale+ Device Block for PCIe v1.1 29

30 第 2 章 : 製品仕様 コンプリーターコンプリーションインターフェイス 表 2-16: コンプリーターコンプリーションインターフェイスのポートの説明 名称幅方向説明 s_axis_cc_tdata 512 入力 s_axis_cc_tuser 81 入力 s_axis_cc_tlast 1 入力 s_axis_cc_tkeep 16 入力 s_axis_cc_tvalid 1 入力 s_axis_cc_tready 1 出力 ユーザーアプリケーションから PCIe コアへ送信されるコンプリーションデータです 送信される TLP の側帯波情報を含む信号セットです これらの信号は s_axis_cc_tvalid が High のときに有効になります このセットの各信号は 表 2-17 で説明しています ユーザーアプリケーションは パケットの最後を示すためにパケットの最後のサイクルでこの信号をアサートする必要があります シングルビートで TLP が送信される場合 ユーザーアプリケーションは送信の最初のサイクルでこの信号を設定する必要があります この入力は ストラドルオプションが無効に設定されている場合のみコアで使用されます ストラドルオプションが有効の場合 コアはこの入力の設定を無視し s_axis_cc_tuser バスの is_sop/is_eop 信号を代わりに使用して TLP の開始および終了を判断します 送信中にこのバスのビット i がアサートされると s_axis_cc_tdata バスの Dword i に有効なデータが含まれていることをコアに示します ユーザーロジックは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットする必要があります したがって パケットのすべてのビートで s_axis_cc_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつ 128 バイトアドレスアライメントの場合に適用されます tkeep ビットは ストラドルが CC インターフェイスで無効の場合のみ有効です ストラドルが有効の場合 コアはインターフェイスを介してデータを受信する際にこれらのビットの設定を無視します インターフェイスを介して送信された TLP の開始および終了を示す際 ユーザーロジックは s_axis_cc_tuser バスの is_sop/is_eop 信号を設定する必要があります s_axis_cc_tdata バス上に有効なデータがある場合 ユーザーアプリケーションはこの出力をアサートする必要があります パケット送信中 この Valid 信号をアサートした状態で保持する必要があります コアは s_axis_cc_tready 信号を使用してデータ送信を制御できます PCIe コアがこの信号をアサートすると データの受信準備が整っていることを示します 同じサイクルで s_axis_cc_tvalid と s_axis_cc_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid 信号が High のときにコアが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで ユーザーロジックはバス上のデータを保持し Valid 信号をアサートした状態で保持する必要があります UltraScale+ Device Block for PCIe v1.1 30

31 第 2 章 : 製品仕様 表 2-17: s_axis_cc_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 1:0 is_sop[1:0] 2 3:2 is_sop0_ptr[1:0] 2 5:4 is_sop1_ptr[1:0] 2 7:6 is_eop[1:0] 2 11:8 is_eop0_ptr[3:0] 4 現ビートでの新しい TLP の開始を示します これらの出力は TLP の最初のビートで設定されます ストラドルが無効の場合 is_sop[0] のみが有効になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで開始する新しい TLP はありません 01: 1 つの新しい TLP が現ビートで開始します 開始位置は is_sop0_ptr[1:0] で示されます 11: 2 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示します 10: 禁止 このフィールドは ストラドルオプションが有効に設定されている場合のみコアで使用されます ストラドルが無効の場合 コアは tlast を使用して入力 TLP の最初のビートを判断します 現ビートで開始する最初の TLP の最初のバイトの位置を示します 00: バイトレーン 0 10: バイトレーン : 予約このフィールドは ストラドルオプションが有効に設定されている場合のみコアで使用されます ストラドルが無効の場合 ユーザーロジックは常に TLP をバイトレーン 0 で開始する必要があります 現ビートで開始する 2 番目の TLP の最初のバイトの位置を示します 10: バイトレーン : 予約 この入力は CC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ユーザーは 同じビート内で 2 つの TLP をストラドルできます TLP が現ビートで終了していることを示します これらの出力は TLP の最後のビートで設定されます ストラドルが無効の場合 is_eop[0] のみが有効になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで終了する TLP はありません 01: 1 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] がこの TLP の最後の Dword のオフセットを示します 11: 2 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示します 10: 禁止 このフィールドは ストラドルオプションが有効に設定されている場合のみコアで使用されます ストラドルが有効の場合 コアは tlast および tkeep を使用して EOP の終了ビートおよび位置を判断します 現ビートで終了する最初の TLP の最後の Dword のオフセットです この出力は is_eop[0] がアサートされると有効になります このフィールドは ストラドルオプションが有効に設定されている場合のみコアで使用されます UltraScale+ Device Block for PCIe v1.1 31

32 第 2 章 : 製品仕様 表 2-17: s_axis_cc_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 15:12 is_eop1_ptr[3:0] 4 16 discontinue 1 80:17 parity 64 現ビートで終了する 2 番目の TLP の最後の Dword のオフセットです この出力は is_eop[1] がアサートされると有効になります このフィールドは ストラドルオプションが有効に設定されている場合のみコアで使用されます 送信されているデータ内にエラー ( メモリからペイロードを読み出している間に訂正不可能な ECC エラーなど ) を検出した場合 ユーザーアプリケーションはこの信号をアサートしてパケットの送信を中断する必要があります コアは リンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーロジックは 送信中に最初のサイクル以外の任意のサイクルでこの信号をアサートできます エラーが示された場所より前のサイクルでパケットを中断するか またはペイロードのすべてのバイトがコアへ送信されるまで継続するよう選択できます 後者の場合 ユーザーロジックがパケットの終了より前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_cc_tvalid が High の場合のみアサートされます コアは s_axis_cc_tready 信号が High の場合のみこの信号をサンプルします したがって この信号がアサートされると s_axis_cc_tready が High になるまでディアサートしてはいけません ストラドルオプションが CC インターフェイスで有効に設定されている場合 discontinue のアサートで TLP を終了した同じビートで新しい TLP を開始することはできません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してこのエラーがレポートされます 256 ビットデータ用の奇数パリティです コアでパリティチェックが有効の場合 ユーザーロジックはこのバスのビット i を s_axis_cc_tdata のバイト i について計算された奇数パリティに設定する必要があります パリティエラーを検出すると コアはリンク上の対応する TLP を無効にし 訂正不可能な内部エラーとしてレポートします コアでパリティチェックが有効に設定されていない場合は パリティビットが永続的に 0 になります UltraScale+ Device Block for PCIe v1.1 32

33 第 2 章 : 製品仕様 リクエスターリクエストインターフェイス 表 2-18: リクエスターリクエストインターフェイスのポートの説明 名称幅方向説明 s_axis_rq_tdata 512 入力 s_axis_rq_tuser 137 入力 s_axis_rq_tlast 1 入力 s_axis_rq_tkeep 16 入力 s_axis_rq_tvalid 1 入力 s_axis_rq_tready 1 出力 pcie_rq_tag_vld 2 出力 ユーザーアプリケーションから PCIe コアへ送信されるリクエスター側のリクエストデータです 送信される TLP の側帯波情報を含む信号セットです これらの信号は s_axis_rq_tvalid が High のときに有効になります このセットの各信号は 表 2-19 で説明しています ユーザーアプリケーションは パケットの最後を示すために TLP の最後のサイクルでこの信号をアサートする必要があります シングルビートで TLP が送信される場合 ユーザーロジックは送信の最初のサイクルでこの信号を設定する必要があります この入力は ストラドルオプションが無効に設定されている場合のみコアで使用されます ストラドルオプションが有効の場合 コアはこの入力の設定を無視し s_axis_rq_tuser バスの is_sop/is_eop 信号を代わりに使用して TLP の開始および終了を判断します 送信中にこのバスのビット i がアサートされると s_axis_rq_tdata バスの Dword i に有効なデータが含まれていることをコアに示します ユーザーロジックは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットする必要があります したがって パケットのすべてのビートで s_axis_rq_tdata が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつ 128 バイトアドレスアライメントの場合に適用されます tkeep ビットは ストラドルが RQ インターフェイスで無効の場合のみ有効です ストラドルが有効の場合 コアはインターフェイスを介してデータを受信する際にこれらのビットの設定を無視します インターフェイスを介して送信された TLP の開始および終了を示す際 ユーザーロジックは s_axis_rq_tuser バスの is_sop/is_eop 信号を設定する必要があります s_axis_rq_tdata バス上に有効なデータがある場合 ユーザーアプリケーションはこの出力をアサートする必要があります パケット送信中 この Valid 信号をアサートした状態で保持する必要があります コアは s_axis_rq_tready 信号を使用してデータ送信を制御できます PCIe コアがこの信号をアサートすると データの受信準備が整っていることを示します 同じサイクルで s_axis_rq_tvalid と s_axis_rq_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid 信号が High のときにコアが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで ユーザーロジックはバス上のデータを保持し Valid 信号をアサートした状態で保持する必要があります リクエスターリクエストインターフェイスから入力されるノンポステッドリクエストにタグを割り当てて pcie_rq_tag 出力にそれが示されると コアはこの出力を 1 サイクル間アサートします これらの 2 ビットは次のようにエンコードされます 00: 現サイクルで示されるタグはありません 01: タグが pcie_rq_tag[7:0] に示されています 11: タグが pcie_rq_tag[7:0] および pcie_rq_tag[15:8] に同時に示されています pcie_rq_tag[7:0] のタグは インターフェイスを介した 2 つのリクエストのうち先に送信される方に対応します 10: 予約 UltraScale+ Device Block for PCIe v1.1 33

34 第 2 章 : 製品仕様 表 2-18: リクエスターリクエストインターフェイスのポートの説明 ( 続き ) 名称幅方向説明 pcie_rq_tag 16 出力 pcie_rq_seq_num0 6 出力 pcie_rq_seq_num1 6 出力 pcie_rq_seq_num_vld0 1 出力 pcie_rq_seq_num_vld1 1 出力 コアでノンポステッドリクエストのタグ管理が実行される場合 (IP カスタマイズ GUI の [Enable Client Tag] がオフ ) コアはこの出力を使用し クライアントから受信した各ノンポステッドリクエストに対して割り当てられたタグを伝えます pcie_rq_tag_vld[0] が High の場合は pcie_rq_tag[7:0] のタグの値が 1 サイクル間有効になり pcie_rq_tag_vld[1] が High の場合は pcie_rq_tag[15:8] のタグの値が 1 サイクル間有効になります クライアントは このタグをコピーして使用し コンプリーションデータとペンディングリクエストを結び付けることができます リクエストに対して割り当てられたタグを与えるため s_axis_rq_tdata バス上にリクエストが送信されてからコアが pcie_rq_tag_vld をアサートするまでの間には数サイクルの遅延が生じます この間 クライアントは新しいリクエストを継続して送信できます 各リクエストのタグは このバスを使用して FIFO 順序で伝達されます したがって ユーザーアプリケーションは割り当てられたタグとリクエストをリクエストがインターフェイスで送信された順に関連付ける必要があります pcie_rq_tag[7:0] および pcie_rq_tag[15:8] が両方とも同じサイクルで有効になる場合 pcie_rq_tag[7:0] の値はインターフェイスを介した 2 つのリクエストのうち先に送信される方に対応します オプションでこの出力を使用すると コアの送信パイプライン内におけるリクエストの進捗状況を追跡できます この機能を使用する場合は ユーザーアプリケーションは s_axis_rq_seq_num0[5:0] バスの各リクエストに対してシーケンス番号を与える必要があります クライアントからコンプリーション TLP を渡すことができなくなるパイプライン内の地点にリクエスト TLP が到達すると コアはこのシーケンス番号を pcie_rq_seq_num0[5:0] 出力に出力します このメカニズムによって クライアントは コアのコンプリーターコンプリーションインターフェイスへ送信されるコンプリーションとリクエスターリクエストインターフェイスに送信されるポステッドリクエストの順序を管理できます pcie_rq_seq_num0[5:0] 出力のデータは pcie_rq_seq_num_ vld0 が High の場合に有効になります この出力は pcie_rq_seq_num0 のファンクションと同じです 最初のシーケンス番号が pcie_rq_seq_num0 に示されている場合 同じサイクルで 2 番目のシーケンス番号を示するために使用されます pcie_rq_seq_num1[5:0] 出力のデータは pcie_rq_seq_num_ vld1 が High の場合に有効になります pcie_rq_seq_num0[5:0] に有効なデータが示されると コアはこの出力を 1 サイクル間アサートします pcie_rq_seq_num1[5:0] に有効なデータが示されると コアはこの出力を 1 サイクル間アサートします UltraScale+ Device Block for PCIe v1.1 34

35 第 2 章 : 製品仕様 表 2-19: s_axis_rq_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 7:0 first_be[7:0] 8 15:8 last_be[7:0] 8 19:16 addr_offset[3:0] 4 最初の Dword 用のバイトイネーブル信号です このフィールドは リクエスト TLP のトランザクション層ヘッダーの First_BE ビットの設定に基づいて設定されます first_be[3:0] は現ビートで開始する最初の TLP のバイトイネーブルに対応し first_be[7:4] は現ビートで開始する 2 番目の TLP ( 存在する場合 ) のバイトイネーブルに対応します メモリ読み出し I/O 読み出し およびコンフィギュレーション読み出しの場合 これらの 4 ビットは最初の Dword に読み出される有効なバイトを示します メモリ書き込み I/O 書き込み およびコンフィギュレーション書き込みの場合 これらのビットはペイロードの最初の Dword にある有効なバイトを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします 最後の Dword 用のバイトイネーブル信号です このフィールドは リクエスト TLP のトランザクション層ヘッダーの Last_BE ビットの設定に基づいて設定されます last_be[3:0] は現ビートで開始する最初の TLP のバイトイネーブルに対応し last_be[7:4] は現ビートで開始する 2 番目の TLP ( 存在する場合 ) のバイトイネーブルに対応します 1 Dword のメモリ読み出しの場合 これらの 4 ビットは 0H に駆動する必要があります 1 Dword のメモリ書き込みの場合 これらの 4 ビットは 0H に駆動する必要があります 2 Dword またはそれ以上のメモリ読み出しの場合 これらの 4 ビットは データブロックの最後の Dword に読み出される有効なバイトを示します 2 Dword またはそれ以上のメモリ書き込みの場合 これらのビットはペイロードの最後の Dword にある有効なバイトを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします このインターフェイスで 128 バイトアドレスアライメントモードを利用している場合 ユーザーアプリケーションはペイロードデータが開始する側帯波バスのデータバス上のオフセットを (4 の倍数バイトで ) 提供する必要があります これによって コアは送信されるデータブロックのアライメントを判断できます addr_offset[1:0] は現ビートで開始する最初の TLP のオフセットに対応し addr_offset[3:2] は将来使用するために予約されます s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします リクエスターリクエストインターフェイスが Dword アライメントモードでコンフィギュレーションされている場合 これらのビットは常に 0 にセットされている必要があります UltraScale+ Device Block for PCIe v1.1 35

36 第 2 章 : 製品仕様 表 2-19: s_axis_rq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 21:20 is_sop[1:0] 2 23:22 is_sop0_ptr[1:0] 2 25:24 is_sop1_ptr[1:0] 2 27:26 is_eop[1:0] 2 31:28 is_eop0_ptr[3:0] 4 35:32 is_eop1_ptr[3:0] 4 現ビートでの新しい TLP の開始を示します これらの出力は TLP の最初のビートで設定されます ストラドルが無効の場合 is_sop[0] のみが有効になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで開始する新しい TLP はありません 01: 1 つの新しい TLP が現ビートで開始します 開始位置は is_sop0_ptr[1:0] で示されます 11: 2 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示します 10: 禁止 新しい TLP は tlast のアサート後に続いて起こるビートで常に開始するため ストラドルオプションが無効の場合 ユーザーロジックではこの信号の使用はオプションです 現ビートで開始する最初の TLP の最初のバイトの位置を示します 00: バイトレーン 0 10: バイトレーン : 予約 現ビートで開始する 2 番目の TLP の最初のバイトの位置を示します 10: バイトレーン : 予約 この出力は インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます TLP が現ビートで終了していることを示します これらの出力は TLP の最後のビートで設定されます ストラドルが無効の場合 is_eop[0] のみが有効になります ストラドルが有効の場合 設定は次のとおりです 00: 現ビートで終了する TLP はありません 01: 1 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] がこの TLP の最後の Dword のオフセットを示します 11: 2 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示します 10: 禁止 tlast は TLP の最後のビートでアサートされるため ストラドルオプションが無効の場合 ユーザーロジックではこの信号の使用はオプションです 現ビートで終了する最初の TLP の最後の Dword のオフセットです この出力は is_eop[0] がアサートされると有効になります 現ビートで終了する 2 番目の TLP の最後の Dword のオフセットです この出力は is_eop[1] がアサートされると有効になります UltraScale+ Device Block for PCIe v1.1 36

37 第 2 章 : 製品仕様 表 2-19: s_axis_rq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 36 discontinue 1 38:37 tph_present[1:0] 2 42:39 tph_type[3:0] 4 送信されているデータ内にエラーを検出した場合 ユーザーアプリケーションは送信中にこの信号をアサートしてパケット送信を中断する必要があります コアは リンク上の対応する TLP を無効にしてデータ破損を回避します 送信中 ユーザーロジックは最初のビート以外の TLP の任意のビートでこの信号をアサートできます エラーが示された場所より前のサイクルでパケットを中断するか またはペイロードのすべてのバイトがコアへ送信されるまで継続するよう選択できます 後者の場合 ユーザーロジックがパケットの終了より前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_rq_tvalid が High の場合のみアサートされます コアは s_axis_rq_tready 信号が High の場合のみこの信号をサンプルします したがって この信号がアサートされると s_axis_rq_tready が High になるまでディアサートしてはいけません ストラドルオプションが RQ インターフェイスで有効に設定されている場合 discontinue のアサートで TLP を終了した同じビートで新しい TLP を開始することはできません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してこのエラーがレポートされます このビットは インターフェイスを介して送信されるリクエスト TLP の中に Transaction Processing Hint (TPH) があることを示します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします tph_present[0] は現ビートで開始する最初の TLP に対応します tph_present[1] は現ビートで開始する 2 番目の TLP に対応します ( 存在する場合 ) TPH 機能を使用しない場合 これらのビットは常に 0 にセットされる必要があります TPH がリクエスト TLP 内にある場合 これらの 2 ビットがヒントと関連する PH[1:0] フィールドの値を提供します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします tph_type[1:0] は現ビートで開始する最初の TLP に対応します tph_type[3:2] は現ビートで開始する 2 番目の TLP に対応します ( 存在する場合 ) 対応する tph_present ビットが 0 にセットされている場合 これらのビットは任意の値に設定できます UltraScale+ Device Block for PCIe v1.1 37

38 第 2 章 : 製品仕様 表 2-19: s_axis_rq_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 44:43 tph_indirect_tag_en[1:0] 2 60:45 tph_st_tag[15:0] 16 66:61 seq_num0[5:0] 6 72:67 seq_num1[5:0] 6 136:73 parity 64 このビットが 1 の場合 コアはステアリングタグテーブルへのインデックスとして tph_st_tag で示されるタグの下位ビットを使用し 送信されるリクエスト TLP にこのロケーションからのタグを挿入します このビットが 0 の場合 コアはステアリングタグとして tph_st_tag の値を直接使用します tph_ indirect_tag_en[0] は現ビートで開始する最初の TLP に対応します tph_ indirect_tag_en[1] は現ビートで開始する 2 番目の TLP に対応します ( 存在する場合 ) s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのビットをサンプルします 対応する tph_present ビットが 0 にセットされている場合 これらの入力は任意の値に設定できます TPH がリクエスト TLP 内にある場合 この出力がヒントと関連する 8 ビットのステアリングタグを提供します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします tph_st_tag[7:0] は現ビートで開始する最初の TLP に対応します tph_ st_tag[15:8] は現ビートで開始する 2 番目の TLP に対応します ( 存在する場合 ) 対応する tph_present ビットが 0 にセットされている場合 これらの入力は任意の値に設定できます ユーザーロジックはオプションでこのフィールドに 6 ビットのシーケンス番号を提供して コアの送信パイプライン内におけるリクエストの進捗状況を追跡できます ユーザーロジックからコンプリーション TLP を渡すことができなくなるパイプライン内の地点にリクエスト TLP が到達すると コアはこのシーケンス番号を pcie_rq_seq_num0 または pcie_rq_seq_num1 出力に出力します s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします ユーザーロジックが コアの pcie_rq_seq_num* 出力をモニタリングしていない場合には この入力を 0 にハード接続できます 同じビートで開始する 2 番目の TLP が存在する場合 ユーザーロジックはこの入力でこの TLP に対応する 6 ビットのシーケンス番号をオプションで提供できます このシーケンス番号は seq_num0 でも同様に使用されます s_axis_rq_tvalid と s_axis_rq_tready が両方とも High になると コアはパケットの最初のサイクルでこのフィールドをサンプルします ユーザーロジックが コアの pcie_rq_seq_num* 出力をモニタリングしていない場合には この入力を 0 にハード接続できます 512 ビットデータ用の奇数パリティです コアでパリティチェックが有効の場合 ユーザーロジックはこのバスのビット i を s_axis_rq_tdata のバイト i について計算された奇数パリティに設定する必要があります パリティエラーを検出すると コアはリンク上の対応する TLP を無効にし 訂正不可能な内部エラーとしてレポートします パリティチェックがコアで無効に設定されている場合は これらのビットを 0 にセットできます UltraScale+ Device Block for PCIe v1.1 38

39 第 2 章 : 製品仕様 リクエスターコンプリーションインターフェイス 表 2-20: リクエスターコンプリーションインターフェイスのポートの説明 名称幅方向説明 m_axis_rc_tdata 512 出力 m_axis_rc_tuser 161 出力 m_axis_rc_tlast 1 出力 m_axis_rc_tkeep 16 出力 m_axis_rc_tvalid 1 出力 m_axis_rc_tready 1 入力 PCIe のリクエスターコンプリーションインターフェイスからユーザーアプリケーションへデータを送信します 送信される TLP の側帯波情報を含む信号セットです これらの信号は m_axis_rc_tvalid が High のときに有効になります このセットの各信号は 表 2-29 で説明しています コアは パケットの最後のビートでこの信号をアサートして パケットの最後を示します シングルビートで TLP が送信される場合 コアは送信の最初のビートでこのビットを設定します この出力は ストラドルオプションが無効に設定されている場合のみ使用されます ストラドルオプションが有効に設定されている場合 常にコアはこの出力を 0 にセットします 送信中にこのバスのビット i がアサートされると m_axis_rc_tdata バスの Dword i に有効なデータが含まれていることをユーザーロジックに示します コアは ディスクリプターの最初の Dword からペイロードの最後の Dword まですべての Dword に対して このビットを継続的に 1 にセットします したがって パケットのすべてのビートで m_axis_rc_tkeep が 1 にセットされます ただし パケットの合計サイズがデータバス幅の倍数値でない場合の最後のビートは例外です ( いずれも Dword 単位 ) これは ペイロード送信が Dword アライメントかつアドレスアライメントの場合に適用されます これらの出力は ストラドルオプションが有効に設定されている場合にすべて 1 となります インターフェイスを介して送信されたコンプリーション TLP の開始および終了を判断する場合 ユーザーロジックは m_axis_rc_tuser のこの信号を使用する必要があります m_axis_rc_tdata バス上に有効なデータがある場合 コアはこの出力をアサートします パケット送信中 この Valid 信号はアサートされた状態を保持します ユーザーアプリケーションは m_axis_rc_tready 信号を使用してデータ送信を制御できます ユーザーロジックでこの信号を High にアサートすると ユーザーロジックがデータを受信する準備が整っていることを PCIe コアに示します 同じサイクルで m_axis_rc_tvalid と m_axis_rc_tready が両方ともアサートされると インターフェイスを介してデータが送信されます Valid が High のときにユーザーロジックが Ready 信号をディアサートした場合 Ready 信号がアサートされるまで コアはバス上のデータを保持し また Valid 信号をアサートした状態で保持します UltraScale+ Device Block for PCIe v1.1 39

40 第 2 章 : 製品仕様 表 2-21: m_axis_rc_tuser の側帯波信号の説明 ビットインデックス 名称幅説明 63:0 byte_en 64 67:64 is_sop[3:0] 4 69:68 is_sop0_ptr[1:0] 2 71:70 is_sop1_ptr[1:0] 2 クライアントロジックは オプションでこれらのバイトイネーブル信号を使用して 送信されるパケットのペイロード内で有効なバイトを判断できます 送信中にこのバスのビット i がアサートされると m_axis_cq_tdata バスのバイト i に有効なペイロードバイトが含まれていることをクライアントに示します このビットは ディスクリプターバイトに対してアサートされません バイトイネーブル信号は リクエストディスクリプター内の情報 ( アドレスおよび長さ ) からクライアントロジックが生成できますが ほかのインターフェイス信号から生成する代わりに 直接使用することも可能です TLP のペイロードに対するこのバスの 1 のビットは常に連続します 現ビートでの新しい TLP の開始を示します これらの出力は TLP の最初のビートで設定されます ストラドルが無効の場合 is_sop[0] のみが有効になり is_sop[3:1] は常に 0 になります ストラドルが有効の場合 設定は次のとおりです 0000: 現ビートで開始する新しい TLP はありません 0001: 1 つの新しい TLP が現ビートで開始します ts の開始位置は is_sop0_ptr[1:0] で示されます 0011: 2 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示します 0111: 3 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示し is_sop2_ptr[1:0] が 3 番目の TLP の開始位置を示します 1111: 4 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示し is_sop2_ptr[1:0] が 3 番目の TLP の開始位置を示し is_sop3_ptr[1:0] が 4 番目の TLP の開始位置を示します これ以外の設定はすべて予約されています 新しい TLP は m_axis_rc_tlast のアサート後に続いて起こるビートで常に開始するため ストラドルオプションが無効の場合 クライアントではこの信号の使用はオプションです 現ビートで開始する最初の TLP の最初のバイトの位置を示します 00: バイトレーン 0 01: バイトレーン 16 10: バイトレーン 32 11: バイトレーン 48 このフィールドは RC インターフェイスでストラドルオプションを有効に設定した場合のみ有効です その他の場合 TLP はバイトレーン 0 でしか開始できないため 常に 0 になります 現ビートで開始する 2 番目の TLP の最初のバイトの位置を示します 00: 予約 01: バイトレーン 16 10: バイトレーン 32 11: バイトレーン 48 この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります UltraScale+ Device Block for PCIe v1.1 40

41 第 2 章 : 製品仕様 表 2-21: m_axis_rc_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 73:72 is_sop2_ptr[1:0] 2 75:74 is_sop3_ptr[1:0] 2 79:76 is_eop[3:0] 4 83:80 is_eop0_ptr[3:0] 4 87:84 is_eop1_ptr[3:0] 4 91:88 is_eop2_ptr[3:0] 4 現ビートで開始する 3 番目の TLP の最初のバイトの位置を示します 00: 予約 01: 予約 10: バイトレーン 32 11: バイトレーン 48 この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります 現ビートで開始する 4 番目の TLP の最初のバイトの位置を示します : 予約 11: バイトレーン 48 この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります ストラドルが有効の場合のみ 1 つまたはそれ以上の TLP が現ビートで終了していることを示します これらの出力は TLP の最後のビートで設定されます 設定は次のとおりです 0000: 現ビートで終了する TLP はありません 0001: 1 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] がこの TLP の最後の Dword のオフセットを示します 0011: 2 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示します 0111: 3 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示し is_eop2_ptr[3:0] が 3 番目の TLP の最後の Dword のオフセットを示します 1111: 4 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示し is_eop2_ptr[3:0] が 3 番目の TLP の最後の Dword のオフセットを示し is_eop3_ptr[3:0] が 4 番目の TLP の最後の Dword を示します これ以外の設定はすべて予約されています ストラドルオプションが無効の場合 m_axis_rc_tlast は TLP の最後のビートを示します 現ビートで終了する最初の TLP の最後の Dword のオフセットです この出力は is_eop[0] がアサートされると有効になります この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります 現ビートで終了する 2 番目の TLP の最後の Dword のオフセットです この出力は is_eop[1] がアサートされると有効になります この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります 現ビートで終了する 3 番目の TLP の最後の Dword のオフセットです この出力は is_eop[2] がアサートされると有効になります この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります UltraScale+ Device Block for PCIe v1.1 41

42 第 2 章 : 製品仕様 表 2-21: m_axis_rc_tuser の側帯波信号の説明 ( 続き ) ビットインデックス 名称幅説明 95:92 is_eop3_ptr[3:0] 4 96 discontinue 1 160:97 parity 64 現ビートで終了する 4 番目の TLP の最後の Dword のオフセットです この出力は is_eop[3] がアサートされると有効になります この出力は RC インターフェイスでストラドルオプションを有効に設定した場合のみ使用されます ストラドルが無効の場合は常に 0 になります 内部 FIFO メモリから TLP ペイロードを読み出している間に訂正不可能なエラーを検出した場合に コアは TLP の最後のビートでこの信号をアサートします このようなエラーがコアによって検出された場合 クライアントアプリケーションはすべての TLP を破棄する必要があります TLP にペイロードがない場合に この信号がアサートされることはありません この信号は ペイロード送信の最後のビートでのみアサートされます ( つまり is_eop[0] が High の場合 ) ストラドルオプションが有効の場合 コアが discontinue 信号をアサートしていると新しい TLP が開始されません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用することで コアが接続されているルートコンプレックスに対してエラーがレポートされます 512 ビットの送信データ用の奇数パリティです ビット i は m_axis_cq_tdata のバイト i について計算された奇数パリティを提供します その他のコアインターフェイス このセクションでは その他のコアインターフェイスについて説明します 電力管理用インターフェイス 表 2-22 では コアの電力管理用インターフェイスのポートについて説明します 表 2-22: 電力管理用インターフェイスのポートの説明ポート幅方向説明 cfg_pm_aspm_l1_entry_reject 1 入力 cfg_pm_aspm_tx_l0s_entry_disable 1 入力 コンフィギュレーションパワーマネージメント ASPM L1 エントリリジェクト : 1b に駆動すると ダウンストリームポートは L1 ステートへの移行リクエストを拒否します コンフィギュレーションパワーマネージメント ASPM L0s エントリディスエーブル : 1b に駆動すると ポートは TX L0s ステートへ移行できません UltraScale+ Device Block for PCIe v1.1 42

43 第 2 章 : 製品仕様 コンフィギュレーションマネージメントインターフェイス コンフィギュレーションマネージメントインターフェイスは コンフィギュレーション空間レジスタに対して書き込みや読み出しを実行する際に使用します 表 2-23 では コアのコンフィギュレーションマネージメントインターフェイスのポートについて説明します 表 2-23: コンフィギュレーションマネージメントインターフェイスのポートの説明 ポート方向幅説明 cfg_mgmt_addr 入力 10 cfg_mgmt_function_number 入力 8 cfg_mgmt_write 入力 1 cfg_mgmt_write_data 入力 32 cfg_mgmt_byte_enable 入力 4 cfg_mgmt_read 入力 1 cfg_mgmt_read_data 出力 32 cfg_mgmt_read_write_done 出力 1 cfg_mgmt_debug_access 入力 1 読み出し / 書き込みアドレスコンフィギュレーション空間 Dword アライメントアドレスです PCI ファンクション番号コンフィギュレーションレジスタの読み出し / 書き込みに対応する PCI ファンクション番号を選択します 書き込みイネーブル書き込み動作に使用されます アクティブ High 信号です 書き込みデータこの書き込みデータを使用して コンフィギュレーションおよびマネージメントレジスタを設定します バイトイネーブル書き込みデータ用のバイトイネーブル信号であり cfg_mgmt_byte_enable[0] は cfg_mgmt_write_data[7:0] に対応します 読み出しイネーブル読み出し動作に使用されます アクティブ High 信号です 読み出しデータの出力この読み出しデータを使用して コンフィギュレーションおよびマネージメントレジスタを設定します 読み出し / 書き込み動作の完了動作が完了すると 1 サイクル間アサートされます アクティブ High 信号です タイプ 1 RO 書き込みコアがルートポートモードでコンフィギュレーションされている場合 タイプ 1 の PCI コンフィギュレーションレジスタへの書き込み動作中にこの入力をアサートすると コンフィギュレーションレジスタ特定の読み出し専用フィールドへの書き込みを強制します (RC モードコンフィギュレーションレジスタの説明を参照 ) コアがエンドポイントモードの場合 またはタイプ 1 コンフィギュレーションレジスタ以外への書き込み動作の場合 この入力は無効となります UltraScale+ Device Block for PCIe v1.1 43

44 第 2 章 : 製品仕様 コンフィギュレーションステータスインターフェイス コンフィギュレーションステータスインターフェイスは コアのコンフィギュレーション状況を示す情報 ( ネゴシエートされたリンク幅やスピード コアの電力ステート コンフィギュレーションエラー ) を提供します 表 2-24 では コアのコンフィギュレーションステータスインターフェイスのポートについて説明します 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ポート方向幅説明 cfg_phy_link_down 出力 1 cfg_phy_link_status 出力 2 cfg_negotiated_width 出力 3 cfg_current_speed 出力 2 コンフィギュレーションリンクのダウン状態物理層 LTSSM に基づく PCI Express リンクのステータスです 1b: リンクはダウン状態 (LinkUp ステートの変数は 0b) 0b: リンクはアップ状態 (LinkUp ステートの変数は 1b) 注記 : PCI Express Base Specification (rev. 3.0) [ 参照 2] によると LinkUp は Recovery L0 L0s L1 および L2 cfg_ltssm ステートの場合に 1b になります コンフィギュレーションステートの場合には 0b または 1b のいずれかになります [Detect] [Polling] [Configuration] からコンフィギュレーションステートへ遷移する場合は 常に 0b になります その他のステート遷移を経てコンフィギュレーションステートへ到達すると LinkUp は 1b になります 注記 : リセット信号がアサートされた場合は リリースされるまでこの信号の出力は 0b を保持します コンフィギュレーションリンクのステータス PCI Express リンクのステータスです 00b: レシーバーの検出なし 01b: リンクトレーニング中 10b: リンクアップ状態 DL 初期化実行中 11b: リンクアップ状態 DL 初期化完了 ネゴシエートされたリンク幅 この出力は 指定された PCI Express リンクのネゴシエートされた幅を示し cfg_phy_link_status[1:0] == 11b (DL 初期化完了 ) の場合に有効になります ネゴシエートされたリンク幅の値 : 000b = x1 001b = x2 010b = x4 011b = x8 100b = x16 その他の値は予約されています 現在のリンクスピードこの信号は 指定した PCI Express リンクの現在のリンクスピードを出力します 00b: 2.5GT/s PCI Express リンクスピード 01b: 5.0GT/s PCI Express リンクスピード 10b: 8.0GT/s PCI Express リンクスピード UltraScale+ Device Block for PCIe v1.1 44

45 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_max_payload 出力 2 cfg_max_read_req 出力 3 cfg_function_status 出力 16 最大ペイロードサイズこの信号は デバイス制御レジスタのビット (7-5) からの最大ペイロードサイズを出力します このフィールドでは 最大の TLP ペイロードサイズを設定します レシーバーとして ロジックは設定値と同じ規模の TLP に対応する必要があります ロジックは トランスミッターとして 設定値を超える TLP を生成できません 00b: 128 バイトの最大ペイロードサイズ 01b: 256 バイトの最大ペイロードサイズ 10b: 512 バイトの最大ペイロードサイズ 11b: 1024 バイトの最大ペイロードサイズ 最大読み出しリクエストサイズこの信号は デバイス制御レジスタのビット (14-12) からの最大読み出しリクエストサイズを出力し このフィールドでは リクエスターとして機能するロジックの最大読み出しリクエストサイズを設定します ロジックは 設定値を超えるサイズの読み出しリクエストを生成できません 000b: 128 バイトの最大読み出しリクエストサイズ 001b: 256 バイトの最大読み出しリクエストサイズ 010b: 512 バイトの最大読み出しリクエストサイズ 011b: 1024 バイトの最大読み出しリクエストサイズ 100b: 2048 バイトの最大読み出しリクエストサイズ 101b: 4096 バイトの最大読み出しリクエストサイズ コンフィギュレーションファンクションステータスこれらの出力は 各ファンクションの PCI コンフィギュレーション空間にあるコマンドレジスタビットのステートを示します これらの出力を使用して ホストロジックからのリクエストやコンプリーションを有効化します これらのビットの割り当ては次のとおりです ビット 0: ファンクション 0 の I/O 空間は有効 ビット 1: ファンクション 0 のメモリ空間は有効 ビット 2: ファンクション 0 のバスマスターは有効 ビット 3: ファンクション 0 の INTx は無効 ビット 4: ファンクション 1 の I/O 空間は有効 ビット 5: ファンクション 1 のメモリ空間は有効 ビット 6: ファンクション 1 のバスマスターは有効 ビット 7: ファンクション 1 の INTx は無効 ビット 8: ファンクション 2 の I/O 空間は有効 ビット 9: ファンクション 2 のメモリ空間は有効 ビット 10: ファンクション 2 のバスマスターは有効 ビット 11: ファンクション 2 の INTx は無効 ビット 12: ファンクション 3 の I/O 空間は有効 ビット 13: ファンクション 3 のメモリ空間は有効 ビット 14: ファンクション 3 のバスマスターは有効 ビット 15: ファンクション 3 の INTx は無効 UltraScale+ Device Block for PCIe v1.1 45

46 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_vf_status 出力 504 cfg_function_power_state 出力 12 cfg_vf_power_state 出力 756 cfg_link_power_state 出力 2 コンフィギュレーション Virtual Function ステータスこれらの出力は Virtual Function のステータスを 1 つの Virtual Function に対して 2 ビットで出力します ビット 0: Virtual Function 0: ソフトウェアでコンフィギュレーション / 有効化 ビット 1: Virtual Function 0: PCI コマンドレジスタ バスマスターイネーブル ビット 2: Virtual Function 1: ソフトウェアでコンフィギュレーション / 有効化 ビット 3: Virtual Function 1: PCI コマンドレジスタ バスマスターイネーブル コンフィギュレーションファンクションの電力ステートこれらの出力は Physical Function の現在の電力ステートを示します ビット [2:0] は ファンクション 0 の電力ステートをキャプチャし ビット [5:3] はファンクション 1 の電力ステートをキャプチャします 電力ステートの定義は次のとおりです 000: D0_uninitialized 001: D0_active 010: D1 100: D3_hot コンフィギュレーション Virtual Function の電力ステートこれらの出力は Virtual Function の現在の電力ステートを示します ビット [2:0] は Virtual Function 0 の電力ステートをキャプチャし ビット [5:3] は Virtual Function 1 の電力ステートをキャプチャします 電力ステートの定義は次のとおりです 000: D0_uninitialized 001: D0_active 010: D1 100: D3_hot PCI Express リンクの現在の電力ステートを示し cfg_phy_link_status[1:0] == 11b (DL 初期化完了 ) の場合に有効になります 00: L0 01: TX L0s 10: L1 11: L2/3 レディ UltraScale+ Device Block for PCIe v1.1 46

47 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_local_error_out 出力 5 cfg_local_error_valid 出力 1 cfg_rx_pm_state 出力 2 cfg_tx_pm_state 出力 2 ローカルエラー条件 : エラーが処理される優先順位を示し Priority 0 が最優先で 00000b - 予約 00001b - 物理層エラーの検出 (Priority 16) 00010b - リンクリプレイタイムアウト (Priority 12) 00011b - リンクリプレイロールオーバー (Priority 13) 00100b - リンク不正 TLP の受信 (Priority 10) 00101b - リンク不正 DLLP の受信 (Priority 11) 00110b - リンクプロトコルエラー (Priority 9) 00111b - リプレイバッファー RAM 訂正可能 ECC エラー (Priority 22) 01000b - リプレイバッファー RAM 訂正不可能 ECC エラー (Priority 3) 01001b - 受信ポステッドリクエスト RAM 訂正可能 ECC エラー (Priority 20) 01010b - 受信ポステッドリクエスト RAM 訂正不可能 ECC エラー (Priority 1) 01011b - 受信完了 RAM 訂正可能 ECC エラー (Priority 21) 01100b - 受信完了 RAM 訂正不可能 ECC エラー (Priority 2) 01101b - 受信ポステッドバッファーオーバーフローエラー (Priority 5) 01110b - 受信ノンポステッドバッファーオーバーフローエラー (Priority 6) 01111b - 受信完了バッファーオーバーフローエラー (Priority 7) 10000b - フロー制御プロトコルエラー (Priority 8) 10001b - 送信パリティエラーの検出 (Priority 4) 10010b - 予期せぬ完了の受信 (Priority 15) 10011b - 完了タイムアウトの検出 (Priority 14) 10100b - AXI4ST RQ INTFC パケットの破棄 (Priority 17) 10101b - AXI4ST CC INTFC パケットの破棄 (Priority 18) 10110b - AXI4ST CQ ポイズン破棄 (Priority 19) 10111b - ユーザー検出の内部訂正可能エラー (Priority 23) 11000b - ユーザー検出の内部訂正不可能エラー (Priority 0) 11001b b - 予約 ローカルエラー条件有効 : cfg_local_error_out[4:0] のエラーのいずれかが発生すると ブロックはこの出力を 1 サイクル間アサートします 1b に駆動した場合 cfg_local_error_out[4:0] はローカルエラータイプを示します エラーの優先順位のレポート ( 同時発生エラーの場合 ) が示されます 現 Rx アクティブステートパワーマネージメント L0s ステート : エンコードは次に示すとおりで cfg_ltssm_state が L0 を示すときに有効です RX_NOT_IN_L0s = 0 RX_L0s_ENTRY = 1 RX_L0s_IDLE = 2 RX_L0s_FTS = 3 現 TX アクティブステートパワーマネージメント L0s ステート : エンコードは次に示すとおりで cfg_ltssm_state が L0 を示すときに有効です TX_NOT_IN_L0s = 0 TX_L0s_ENTRY = 1 TX_L0s_IDLE = 2 TX_L0s_FTS = 3 UltraScale+ Device Block for PCIe v1.1 47

48 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_ltssm_state 出力 6 cfg_rcb_status 出力 4 LTSSM ステート 現在の LTSSM の状態を示します 00: Detect.Quiet 01: Detect.Active 02: Polling.Active 03: Polling.Compliance 04: Polling.Configuration 05: Configuration.Linkwidth.Start 06: Configuration.Linkwidth.Accept 07: Configuration.Lanenum.Accept 08: Configuration.Lanenum.Wait 09: Configuration.Complete 0A: Configuration.Idle 0B: Recovery.RcvrLock 0C: Recovery.Speed 0D: Recovery.RcvrCfg 0E: Recovery.Idle 10: L : 予約 17: L1.Entry 18: L1.Idle 19-1A: 予約 20: 無効 21: Loopback_Entry_Master 22: Loopback_Active_Master 23: Loopback_Exit_Master 24: Loopback_Entry_Slave 25: Loopback_Active_Slave 26: Loopback_Exit_Slave 27: Hot_Reset 28: Recovery_Equalization_Phase0 29: Recovery_Equalization_Phase1 2a: Recovery_Equalization_Phase2 2b: Recovery_Equalization_Phase3 RCB ステータス信号です 各 Physical Function のリンクコンロトールレジスタにある RCB (Read Completion Boundary) ビットの設定を示します エンドポイントモードの場合 ビット 0 は Physical Function 0 (PF 0) の RCB を ビット 1 は PF1 の RCB を示します ( 以降同様 ) RC モードの場合 ビット 0 は RP のリンク制御レジスタの RCB の設定を示し ビット 1 は予約されています 各ビットで 0 は 64 バイトの RCB を示し 1 は 128 バイトを示します UltraScale+ Device Block for PCIe v1.1 48

49 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_dpa_substate_change 出力 4 cfg_obff_enable 出力 2 cfg_pl_status_change 出力 1 cfg_tph_requester_enable 出力 4 Dynamic Power Allocation Substrate の変更を示します エンドポイントモードの場合 コンフィギュレーション書き込みトランザクションによってダイナミックパワーアロケーション制御レジスタに書き込みが実行され デバイスの DPA 電力ステートが変更されると コアはこれらのいずれかの出力で 1 サイクル間パルスします ビット 0 でのパルスは PF0 の DPA イベントを示し ビット 1 でのパルスは PF1 の同様イベントを示します ほかの 2 ビットは予約されています これらの出力は ルートポートモードではアクティブではありません OBFF (Optimized Buffer Flush Fill) のイネーブル信号です この出力は デバイス制御 2 レジスタの OBFF Enable フィールドの設定を示します 00: OBFF は無効 01: メッセージシグナルを使用して OBFF が有効化 ( バリエーション A) 10: メッセージシグナルを使用して OBFF が有効化 ( バリエーション B) 11: WAKE# シグナルを使用して OBFF が有効化 ルートポートモードのコアで使用される出力で 次のいずれかのリンクトレーニング関連のイベントを示します (a) リンク幅や動作スピードが変更された結果としてリンク帯域幅が変更され その変更はリンクパートナーによってではなく ローカルで行われ リンクは無効になっていません この割り込み信号は リンク制御レジスタの Link Bandwidth Management Interrupt Enable ビットによって有効化されます この割り込み信号のステータスは リンク制御レジスタの Link Bandwidth Management Status ビットから読み出すことが可能です (b) リンク幅や動作スピードが変更された結果としてリンク帯域幅が自動的に変更され その変更はリモートのノードによって実行されています この割り込み信号は リンク制御レジスタの Link Autonomous Bandwidth Interrupt Enable ビットによって有効化されます この割り込み信号のステータスは リンクステータスレジスタの Link Autonomous Bandwidth Status ビットから読み出すことが可能です (c) リモートノードからリンクイコライゼーションリクエストを受信したため ハードウェアによってリンクステータス 2 レジスタの Link Equalization Request ビットが設定されました この割り込み信号は リンク制御 3 レジスタの Link Equalization Interrupt Enable ビットによって有効化されます この割り込み信号のステータスは リンクステータス 2 レジスタの Link Equalization Request ビットから読み出すことが可能です コアがエンドポイントとしてコンフィギュレーションされている場合 pl_interrupt 出力は非アクティブとなります この出力のビット 0 は Physical Function 0 の TPH リクエスターの機能構造体にある TPH リクエスター制御レジスタの TPH Requester Enable ビット [8] の設定を示します ビット 1 は Physical Function 1 に対応します ほかの Physical Function についても同様です UltraScale+ Device Block for PCIe v1.1 49

50 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_tph_st_mode 出力 12 cfg_vf_tph_requester_enable 出力 252 cfg_vf_tph_st_mode 出力 756 この出力のビット [2:0] は Physical Function 0 の TPH リクエスター制御レジスタにある ST Mode Select ビットの設定を示します ビット [5:3] は PF 1 の同レジスタフィールドの設定を示します ほかの Physical Function についても同様です この出力の各ビットは 対応する Virtual Function の TPH リクエスター機能構造体にある TPH リクエスター制御レジスタの TPH Requester Enable ビット 8 の設定を示します この出力のビット [2:0] は Virtual Function 0 の TPH リクエスター制御レジスタにある ST Mode Select ビットの設定を示します ビット [5:3] は VF 1 の同レジスタフィールドの設定を示します この出力は コアの送信側においてノンポステッド TLP 用に現在有効なヘッダークレジットを示します ユーザーロジックは リクエスターリクエストインターフェイスでノンポステッドリクエストを送信する前にこの出力をチェックして クレジットが利用できない場合のインターフェイスのブロッキングを回避できます エンコードは次のとおりです pcie_tfc_nph_av 出力 : 使用可能なクレジットはない 0001: 1 クレジットが使用可能 0010: 2 クレジットが使用可能 1110: 14 クレジットが使用可能 1111: 15 またはそれ以上のクレジットが使用可能パイプライン遅延により この出力の値には 最後の 8 またはそれ以下のサイクルでノンポステッドリクエストで使用されたクレジットを含めることができません ユーザーロジックは 前のクロックサイクルでノンポステッドリクエストを送信した場合 そこで使用されたクレジットを考慮してこの出力の値を調整する必要があります UltraScale+ Device Block for PCIe v1.1 50

51 第 2 章 : 製品仕様 表 2-24: コンフィギュレーションステータスインターフェイスのポートの説明 ( 続き ) ポート方向幅説明 この出力は コアの送信側においてノンポステッド TLP 用に現在有効なペイロードクレジットを示します ユーザーロジックは リクエスターリクエストインターフェイスでノンポステッドリクエストを送信する前にこの出力をチェックして クレジットが利用できない場合のインターフェイスのブロッキングを回避します エンコードは次のとおりです pcie_tfc_npd_av 出力 4 pcie_rq_tag_av 出力 : 使用可能なクレジットはない 0001: 1 クレジットが使用可能 0010: 2 クレジットが使用可能 1110: 14 またはそれ以上のクレジットが使用可能 1111: 15 またはそれ以上のクレジットが使用可能パイプライン遅延により この出力の値には 最後の 8 またはそれ以下のクロックサイクルでユーザーロジックによって送信されたノンポステッドリクエストで使用されたクレジット分が考慮されていません ユーザーロジックは 前のクロックサイクルでノンポステッドリクエストを送信した場合 そこで使用されたクレジットを考慮してこの出力の値を調整する必要があります この出力は コアの PCIe マスター側においてノンポステッドリクエストへの割り当てに有効なフリータグの数を示します ユーザーロジックは リクエスターリクエストインターフェイスでノンポステッドリクエストを送信する前にこの出力をチェックして タグが利用できない場合のインターフェイスのブロッキングを回避します エンコードは次のとおりです 0000: 使用可能なタグはない 0001: 1 タグが使用可能 0010: 2 タグが使用可能 : 14 タグが使用可能 1111: 15 またはそれ以上のタグが使用可能パイプライン遅延により この出力の値には 最後の 8 またはそれ以下のクロックサイクルでユーザーロジックによって送信されたノンポステッドリクエストで使用されたタグ分が考慮されていません ユーザーロジックは 前のクロックサイクルでノンポステッドリクエストを送信した場合 そのリクエスト数でこの出力の値を調整する必要があります UltraScale+ Device Block for PCIe v1.1 51

52 第 2 章 : 製品仕様 コンフィギュレーション受信メッセージインターフェイス コンフィギュレーション受信メッセージインターフェイスは リンクからのデコード可能なメッセージ データに関連するパラメーター メッセージタイプをロジックに提示します 表 2-25 では コアのコンフィギュレーション受信メッセージインターフェイスのポートについて説明します 表 2-25: コンフィギュレーション受信メッセージインターフェイスのポートの説明 ポート方向幅説明 cfg_msg_received 出力 1 cfg_msg_received_data 出力 8 cfg_msg_received_type 出力 5 デコード可能なメッセージの受信を示します リンクからデコード可能なメッセージを受信すると コアはこの出力を 1 サイクルまたは複数サイクル連続してアサートします アサートされるサイクル数は メッセージタイプによって異なります コアは cfg_msg_received が High を保持する 1 サイクルまたは複数サイクルの間に cfg_msg_data[7:0] 出力のメッセージに関するパラメーターを送信します 表 3-22 では 各メッセージタイプにおける cfg_msg_received 信号のアサートサイクル数 および各サイクルで cfg_msg_data[7:0] に送信されるパラメーターについて説明しています cfg_msg_received インターフェイスが有効の場合 コアはこのインターフェイスを介して送信する 2 つの連続メッセージの間に少なくとも 1 サイクルの間隔を挿入します コンフィギュレーション受信メッセージインターフェイスは Vivado IDE でコアをコンフィギュレーションする間 有効になる必要があります このバスは 受信したメッセージに関連するパラメーターを送信する場合に使用します 各サイクルで伝搬されるメッセージタイプ別の情報については 表 3-22 を参照してください 受信したメッセージのタイプを示します cfg_msg_received が High の場合 これらの 5 つのビットは コアが送信するメッセージタイプを示します メッセージタイプの一覧は 表 3-21 を参照してください 表 2-26: 受信メッセージインターフェイスのメッセージタイプエンコード cfg_msg_received_type[4:0] メッセージタイプ 0 ERR_COR 1 ERR_NONFATAL 2 ERR_FATAL 3 Assert_INTA 4 Deassert_ INTA 5 Assert_INTB 6 Deassert_ INTB 7 Assert_INTC 8 Deassert_ INTC 9 Assert_INTD 10 Deassert_ INTD 11 PM_PME 12 PME_TO_Ack UltraScale+ Device Block for PCIe v1.1 52

53 第 2 章 : 製品仕様 表 2-26: 受信メッセージインターフェイスのメッセージタイプエンコード ( 続き ) cfg_msg_received_type[4:0] メッセージタイプ 13 PME_Turn_Off 14 PM_Active_State_Nak 15 Set_Slot_Power_Limit 16 LTR (Latency Tolerance Reporting) 17 予約 18 アンロック 19 Vendor_Defined タイプ 0 20 Vendor_Defined タイプ 1 21 ATS 無効なリクエスト 22 ATS 無効なコンプリーション 23 ATS ページリクエスト 24 ATS PRG 応答 25 ~ 31 予約 表 2-27: 受信メッセージインターフェイスのメッセージパラメーター メッセージタイプ ERR_COR ERR_NONFATAL ERR_FATAL cfg_msg_received のアサートサイクル数 Assert_INTx Deassert_INTx 2 PM_PME PME_TO_Ack PME_Turn_off PM_Active_State_Nak Set_Slot_Power_Limit 6 LTR (Latency Tolerance Reporting) cfg_msg_received_data[7:0] で転送されるパラメーター サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ペイロードのビット [7:0] サイクル 4: ペイロードのビット [15:8] サイクル 5: ペイロードのビット [23:16] サイクル 6: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: スヌープレイテンシのビット [7:0] サイクル 4: スヌープレイテンシのビット [15:8] サイクル 5: ノースヌープレイテンシのビット [7:0] サイクル 6: ノースヌープレイテンシのビット [15:8] UltraScale+ Device Block for PCIe v1.1 53

54 第 2 章 : 製品仕様 表 2-27: 受信メッセージインターフェイスのメッセージパラメーター ( 続き ) メッセージタイプ アンロック 2 Vendor_Defined タイプ 0 Vendor_Defined タイプ 1 cfg_msg_received のアサートサイクル数 データがない場合は 4 サイクル データがある場合は 8 サイクル データがない場合は 4 サイクル データがある場合は 8 サイクル ATS 無効なリクエスト 2 ATS 無効なコンプリーション 2 ATS ページリクエスト 2 ATS PRG 応答 2 cfg_msg_received_data[7:0] で転送されるパラメーター サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ベンダー ID[7:0] サイクル 4: ベンダー ID[15:8] サイクル 5: ペイロードのビット [7:0] サイクル 6: ペイロードのビット [15:8] サイクル 7: ペイロードのビット [23:16] サイクル 8: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ベンダー ID[7:0] サイクル 4: ベンダー ID[15:8] サイクル 5: ペイロードのビット [7:0] サイクル 6: ペイロードのビット [15:8] サイクル 7: ペイロードのビット [23:16] サイクル 8: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 UltraScale+ Device Block for PCIe v1.1 54

55 第 2 章 : 製品仕様 コンフィギュレーション送信メッセージインターフェイス コンフィギュレーション送信メッセージインターフェイスは ユーザーアプリケーションがコアへメッセージを送信するために使用します ユーザーアプリケーションが送信メッセージタイプとデータ情報をコアへ提供し コアが Done 信号で応答します 表 2-28 では コアのコンフィギュレーション送信メッセージインターフェイスのポートについて説明します 表 2-28: コンフィギュレーション送信メッセージインターフェイスのポートの説明 ポート方向幅説明 cfg_msg_transmit 入力 1 cfg_msg_transmit_type 入力 3 cfg_msg_transmit_data 入力 32 cfg_msg_transmit_done 出力 1 コンフィギュレーション送信におけるエンコードされたメッセージを示します この信号は cfg_msg_transmit_type と共にアサートされ エンコードされたメッセージタイプと cfg_msg_transmit_data を提供します また 応答信号の cfg_msg_transmit_done がアサートされるまで メッセージに関連する任意の情報を提供します コンフィギュレーション送信におけるエンコードされたメッセージタイプを示します 送信される PCI Express メッセージのタイプを示します サポートされるエンコードは次のとおりです 000b: LTR (Latency Tolerance Reporting) 001b: OBFF (Optimized Buffer Flush/Fill) 010b: SSPL (Set Slot Power Limit) 011b: PM PME (Power Management) 100b ~ 111b: 予約 コンフィギュレーション送信におけるエンコードされたメッセージデータを示します 特定のメッセージタイプに関連するメッセージデータを示します 000b: LTR - cfg_msg_transmit_data[31] < Snoop Latency の要件 cfg_msg_transmit_data[28:26] < Snoop Latency の大きさ cfg_msg_transmit_data[25:16] < Snoop Latency の値 cfg_msg_transmit_data[15] < No-Snoop Latency の要件 cfg_msg_transmit_data[12:10] < No-Snoop Latency の大きさ cfg_msg_transmit_data[9:0] < No-Snoop Latency の値 001b: OBFF - cfg_msg_transmit_data[3:0] < OBFF コード 010b: SSPL - cfg_msg_transmit_data[9:0] < {Slot Power Limit の大きさ Slot Power Limit の値 } 011b: PM_PME - cfg_msg_transmit_data[1:0] < PF1 PF0 cfg_msg_transmit_data[9:4] < VF5 VF4 VF3 VF2 VF1 VF0 (1 またはそれ以上の PF もしくは VF が同時に PM_PME 信号をパルス可能 ) 100b - 111b: 予約 コンフィギュレーション送信におけるエンコードされたメッセージの完了を示します cfg_mg_transmit のアサートに応答し リクエスト完了後に 1 サイクル間アサートされます UltraScale+ Device Block for PCIe v1.1 55

56 第 2 章 : 製品仕様 コンフィギュレーションフロー制御インターフェイス 表 2-29 では コアのコンフィギュレーションフロー制御インターフェイスのポートについて説明します 表 2-29: コンフィギュレーションフロー制御インターフェイスのポートの説明ポート方向幅説明 cfg_fc_ph 出力 8 cfg_fc_pd 出力 12 cfg_fc_nph 出力 8 cfg_fc_npd 出力 12 cfg_fc_cplh 出力 8 cfg_fc_cpld 出力 12 ポステッドヘッダーフロー制御クレジットを示します この出力は ポステッドヘッダーフロー制御クレジットの数を示します この多重化された出力を使用して コアによって維持されているポステッドヘッダークレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます ポステッドデータフロー制御クレジットを示します この出力は ポステッドデータフロー制御クレジットの数を示します この多重化された出力を使用して コアによって維持されているポステッドデータクレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます ノンポステッドヘッダーフロー制御クレジットを示します この出力は ノンポステッドヘッダーフロー制御クレジットの数を示します この多重化された出力を使用して コアによって維持されているノンポステッドヘッダークレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます ノンポステッドデータフロー制御クレジットを示します この出力は ノンポステッドデータフロー制御クレジットの数を示します この多重化された出力を使用して コアによって維持されているノンポステッドデータクレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます コンプリーションヘッダーフロー制御クレジットを示します この出力は コンプリーションヘッダーフロー制御クレジット数を示します この多重化された出力を使用して コアによって維持されているコンプリーションヘッダークレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます コンプリーションデータフロー制御クレジットを示します この出力は コンプリーションデータフロー制御クレジットの数を示します この多重化された出力を使用して コアによって維持されているコンプリーションデータクレジットに関連するさまざまなフロー制御パラメーターおよび変数を引き出すことができます このコアに使用するフロー制御情報は cfg_fc_sel[2:0] 入力で選択されます UltraScale+ Device Block for PCIe v1.1 56

57 第 2 章 : 製品仕様 表 2-29: コンフィギュレーションフロー制御インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_fc_sel 入力 3 フロー制御情報を選択します これらの入力でフロー制御のタイプを選択して コアの cfg_fc_* 出力に示します これらの入力の設定のためにアクセス可能なさまざまなフロー制御パラメーターおよび変数は 次のとおりです 000: リンクパートナーが現在利用できる受信クレジット 001: 予約 010: 使用した受信クレジット 011: 受信バッファー内の使用可能な空間 100: 使用可能な送信クレジット 101: 受信クレジットの制限 110: 使用した送信クレジット 111: 予約この値は 受信 FIFO の未使用クレジットを示します この値は 最初に示したクレジット制限値に対して 受信 FIFO がどの程度フル状態 (¼ フル ½ フル ¾ フル フル ) であるかを示すための大まかな指標としてのみ使用することを推奨します 注記 : 使用可能な送信クレジットの無限クレジット (cfg_fc_sel == 3'b100) は ヘッダークレジットとデータクレジットにそれぞれ 8'h80 12'h800 として示されます その他すべての cfg_fc_sel 選択では 無限クレジットはヘッダークレジットとデータクレジットにそれぞれ 8'h00 12'h000 として示されます コンフィギュレーション制御インターフェイス コンフィギュレーション制御インターフェイスは ユーザーアプリケーションとコア間でさまざまなデータ通信を可能にします ユーザーアプリケーションはこのインターフェイスを使用して次を行います コンフィギュレーション空間の設定 訂正可能 / 訂正不可能なエラーの有無 デバイスのシリアル番号の設定 ダウンストリームバス デバイス およびファンクション番号の設定 ファンクションごとのコンフィギュレーション情報の受信 また このインターフェイスは 電力ステートが変更されたり ファンクションレベルのリセットが生じた場合に ユーザーアプリケーションとコア間のハンドシェイクを実行します 表 2-30 では コアのコンフィギュレーション制御インターフェイスのポートについて説明します 表 2-30: コンフィギュレーション制御インターフェイスのポートの説明 ポート方向幅説明 cfg_hot_reset_in 入力 1 cfg_hot_reset_out 出力 1 コンフィギュレーションのホットリセット入力 RP モードの場合 High にアサートされると LTSSM がホットリセットステートへ遷移します コンフィギュレーションのホットリセット出力 EP モードの場合 High にアサートされると EP がホットリセットステートへ遷移したことを示します UltraScale+ Device Block for PCIe v1.1 57

58 第 2 章 : 製品仕様 表 2-30: コンフィギュレーション制御インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_config_space_enable 入力 1 cfg_dsn 入力 64 cfg_ds_bus_number 入力 8 cfg_ds_device_number 入力 5 cfg_ds_function_number 入力 3 cfg_power_state_change_ack 入力 1 コンフィギュレーション空間イネーブルエンドポイントモードでこの入力が 0 の場合 コンフィギュレーションリクエストに対してコアは CRS コンプリーションを生成します 属性の変更のため DRP を介してコアコンフィギュレーションレジスタの値がロードされる場合 このポートはアサートされた状態を保持する必要があります これによって すべてのレジスタの値がロードされるまで コアはコンフィギュレーションリクエストに対して応答しなくなります コンフィギュレーション空間のエニュメレーション前にコンフィギュレーションレジスタのパワーオンデフォルト値を変更する必要がない場合 この入力を High に接続します ルートポートモードの場合 この入力は適用されません コンフィギュレーションのデバイスシリアル番号 PF0 のデバイスシリアル番号機能レジスタに反映される値を示します ビット [31:0] は 最初の ( 下位 ) Dword ( 機能レジスタのバイトオフセット 0x4h) ビット[63:32] は 2 つ目の ( 上位 ) Dword ( 機能レジスタのバイトオフセット 0x8h) に転送されます この値が静的に割り当てられない場合 ユーザーアプリケーションは安定した後に user_cfg_input_update をパルスする必要があります コンフィギュレーションのダウンストリームバス番号 ダウンストリームポート : ダウンストリームポートのリクエスター ID (RID) のバス番号部分を提供します これは コア内で生成される UR コンプリーションやパワーマネージメントメッセージなどの TLP で使用されます AXI インターフェイスに現れる TLP には影響を与えません アップストリームポート : 役割なし コンフィギュレーションのダウンストリームデバイス番号 ダウンストリームポート : ダウンストリームポートの RID のデバイス番号部分を提供します これは コア内で生成される UR コンプリーションやパワーマネージメントメッセージなどの TLP で使用されます TRN インターフェイスに現れる TLP には影響を与えません アップストリームポート : 役割なし コンフィギュレーションのダウンストリームファンクション番号 ダウンストリームポート : ダウンストリームポートの RID のファンクション番号部分を提供します これは コア内で生成される UR コンプリーションやパワーマネージメントメッセージなどの TLP で使用されます TRN インターフェイスに現れる TLP には影響を与えません アップストリームポート : 役割なし コンフィギュレーションの電力ステート応答 コンフィギュレーション書き込みリクエストを受けて低電力ステートへの遷移の準備が整っている場合 cfg_power_state_change_interrupt のアサートに応答して コアに対してこの入力を 1 サイクル間アサートする必要があります コンフィギュレーション書き込みトランザクションのコンプリーション応答を遅延させる必要がない場合 ユーザーアプリケーションはこの入力を永久的に High に保持して 電力ステートを変更できます UltraScale+ Device Block for PCIe v1.1 58

59 第 2 章 : 製品仕様 表 2-30: コンフィギュレーション制御インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_power_state_change_interrupt 出力 1 cfg_err_cor_in 入力 1 cfg_err_uncor_in 入力 1 cfg_flr_done 入力 4 cfg_vf_flr_done 入力 1 電力ステート変更の割り込みパワーマネージメント制御レジスタへの書き込みによって Physical Function または Virtual Function の電力ステートが D1 または D3 ステートへ変更される場合 コアはこの出力をアサートします ユーザーアプリケーションが cfg_power_state_change_ack 入力をアサートするまで コアはこの出力を High に保持します cfg_power_state_change_interrupt が High に保持されている間 コアは受信した保留されているすべてのコンフィギュレーション読み出し / 書き込みトランザクションに対してコンプリーションを返しません この目的は ユーザーアプリケーションが低電力ステートへ遷移する準備が整うまで ステート変更をもたらしたコンフィギュレーション書き込みトランザクションのコンプリーションを遅延させることです cfg_power_state_change_interrupt がアサートされると コンフィギュレーション書き込みトランザクションに関連するファンクション番号が cfg_ext_function_number[7:0] 出力に提供されます ユーザーアプリケーションが cfg_power_state_change_ack をアサートすると ステート変更を受けたファンクションの新しいステートがコアの cfg_function_power_state (PF の場合 ) または cfg_vf_power_state (VF の場合 ) 出力に反映されます 訂正可能なエラーを検出したユーザーロジック内で訂正可能なエラーが検出され 内部エラーとして PCI Express Advanced Error Reporting メカニズムを使用してレポートする必要がある場合 ユーザーアプリケーションはこの入力を 1 サイクル間アサートします これに対応して コアはすべての有効なファンクションの AER 訂正可能エラーステータスレジスタの Corrected Internal Error Status ビットを設定し また可能な場合にはエラーメッセージを送信します このエラーは ファンクションに固有のものではありません 訂正不可能なエラーを検出したユーザーロジック内で訂正不可能なエラーが検出され 内部エラーとして PCI Express Advanced Error Reporting メカニズムを使用してレポートする必要がある場合 ユーザーアプリケーションはこの入力を 1 サイクル間アサートします これに対応して コアはすべての有効なファンクションの AER 訂正不可能エラーステータスレジスタの Uncorrected Internal Error Status ビットを設定し また可能な場合にはエラーメッセージを送信します このエラーは ファンクションに固有のものではありません ファンクションレベルのリセット完了ユーザーアプリケーションは Virtual Function のリセット動作が完了したら この入力をアサートする必要があります これによって コアは Physical Function i の cfg_flr_in_process をディアサートして その Physical Function へのコンフィギュレーションアクセスを再度有効にします Virtual Function のファンクションレベルのリセット完了ユーザーアプリケーションは Virtual Function のリセット動作が完了したら この入力をアサートする必要があります これによって コアは Virtual Function i の cfg_vf_flr_in_process をディアサートして その Virtual Function へのコンフィギュレーションアクセスを再度有効にします UltraScale+ Device Block for PCIe v1.1 59

60 第 2 章 : 製品仕様 表 2-30: コンフィギュレーション制御インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_vf_flr_func_num 入力 8 cfg_flr_in_process 出力 4 cfg_vf_flr_in_process 出力 252 cfg_req_pm_transition_l23_ready 入力 1 cfg_link_training_enable 入力 1 cfg_bus_number 出力 8 cfg_vend_id 入力 16 cfg_subsys_vend_id 入力 16 cfg_dev_id_pf0 入力 16 Virtual Function i のファンクションレベルのリセット完了ユーザーアプリケーションは Virtual Function i のリセット動作が完了したら cfg_vf_flr_done のアサートと共にこの入力で有効な Virtual Function 番号を駆動します 有効な値は VF0-VF251 の場合 8'h04-8'hFF です 値 8'h00-8'h03 は予約されています ファンクションレベルのリセットが実行中ホストがコンフィギュレーション空間の FLR ビットを介して Physical Function i のリセットを開始した場合 コアはこのバスのビット i をアサートします コアは ユーザーが対応する Physical Function の cfg_flr_done 入力を設定してリセット動作の完了を示すまで この出力を High のまま保持します Virtual Function のファンクションレベルのリセットが実行中ホストがコンフィギュレーション空間の FLR ビットを介して Virtual Function i のリセットを開始した場合 コアはこのバスのビット i をアサートします コアは ユーザーが cfg_vf_flr_done 入力をセットして 対応するファンクションに対して cfg_vf_flr_func_num を駆動してリセット動作の完了を示すまで この出力を High のまま保持します コアがエンドポイントとしてコンフィギュレーションされている場合 ユーザーアプリケーションはこの入力をアサートして コアのパワーマネージメントステートを L23_READY に遷移します ( パワーマネージメントの詳細は PCI Express 仕様 の第 5 章を参照 ) これは コア内の PCI ファンクションが D3 ステートに遷移し ユーザーアプリケーションがルートコンプレックスからの PME_Turn_Off メッセージに対して ACK を送信した後に実行されます この入力をアサートすると リンクが L3 ステートへ遷移します 動作を再開するには ハードリセットが必要です リンクを L3 ステートへ遷移させる必要がない場合は この入力を 0 にハード接続できます ルートコンプレックスモードの場合 この入力は使用しません リンクを確立するために Link Training Status State Machine (LTSSM) を有効にする場合は この入力を 1 にセットする必要があります 0 にセットすると LTSSM は強制的に Detect.Quiet ステートへ遷移します 受信した CfgWr Type0 から取得したバス番号を示します エンドポイントコンフィギュレーションでのみ有効です コンフィギュレーションベンダー ID: すべての PF の PCI 機能構造体ベンダー ID フィールドに反映される値を示します コンフィギュレーションサブシステムベンダー ID: すべての PF のタイプ 0 PCI 機能構造体サブシステムベンダー ID フィールドに反映される値を示します コンフィギュレーションデバイス ID PF0: PF0 の PCI 機能構造体デバイス ID フィールドに反映される値を示します UltraScale+ Device Block for PCIe v1.1 60

61 第 2 章 : 製品仕様 表 2-30: コンフィギュレーション制御インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_dev_id_pf1 入力 16 cfg_dev_id_pf2 入力 16 cfg_dev_id_pf3 入力 16 cfg_rev_id_pf0 入力 8 cfg_rev_id_pf1 入力 8 cfg_rev_id_pf2 入力 8 cfg_rev_id_pf3 入力 8 cfg_subsys_id_pf0 入力 16 cfg_subsys_id_pf1 入力 16 cfg_subsys_id_pf2 入力 16 cfg_subsys_id_pf3 入力 16 コンフィギュレーションデバイス ID PF1: PF1 の PCI 機能構造体デバイス ID フィールドに反映される値を示します コンフィギュレーションデバイス ID PF2: PF2 の PCI 機能構造体デバイス ID フィールドに反映される値を示します コンフィギュレーションデバイス ID PF3: PF3 の PCI 機能構造体デバイス ID フィールドに反映される値を示します コンフィギュレーションリビジョン ID PF0: PF0 の PCI 機能構造体リビジョン ID フィールドに反映される値を示します コンフィギュレーションリビジョン ID PF1: PF1 の PCI 機能構造体リビジョン ID フィールドに反映される値を示します コンフィギュレーションリビジョン ID PF2: PF2 の PCI 機能構造体リビジョン ID フィールドに反映される値を示します コンフィギュレーションリビジョン ID PF3: PF3 の PCI 機能構造体リビジョン ID フィールドに反映される値を示します コンフィギュレーションサブシステム ID PF0: PF0 のタイプ 0 PCI 機能構造体サブシステム ID フィールドに反映される値を示します コンフィギュレーションサブシステム ID PF1: PF1 のタイプ 0 PCI 機能構造体サブシステム ID フィールドに反映される値を示します コンフィギュレーションサブシステム ID PF2: PF2 のタイプ 0 PCI 機能構造体サブシステム ID フィールドに反映される値を示します コンフィギュレーションサブシステム ID PF3: PF3 のタイプ 0 PCI 機能構造体サブシステム ID フィールドに反映される値を示します UltraScale+ Device Block for PCIe v1.1 61

62 第 2 章 : 製品仕様 コンフィギュレーション割り込みコントローラーインターフェイス コンフィギュレーション割り込みコントローラーインターフェイスでは ユーザーアプリケーションがレガシ PCIe 割り込み MSI 割り込み または MSI-X 割り込みを設定できます コアは 送信されるコンフィギュレーション割り込みに割り込みステータスおよびエラー信号を提供します 表 2-31 コアのコンフィギュレーション割り込みコントローラーインターフェイスのポートについて説明します 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 名称方向幅説明 レガシ割り込みインターフェイス cfg_interrupt_int 入力 4 cfg_interrupt_sent 出力 1 cfg_interrupt_pending 入力 4 コンフィギュレーション INTx ベクター : コアが EP としてコンフィギュレーションされている場合 ユーザーアプリケーションはこれらの 4 つの入力を使用し PCI Express のレガシ PCI Express 割り込み送信メカニズムを使用して 任意の PCI ファンクションから RC へ割り込み信号を送信します これらの 4 つの入力は PCI バスの INTA INTB INTC および INTD にそれぞれ対応します これらの信号のいずれかをアサートすると コアは Assert_INTx メッセージを送信します ディアサートするとコアは Deassert_INTx メッセージを送信します コンフィギュレーション INTx の送信 : この出力信号は cfg_interrupt_int 入力のいずれかのステートが変更されたことに応答して コアが Assert_INTx メッセージまたは Deassert_INTx メッセージを送信したことを示します コンフィギュレーション INTx 割り込みペンディング : ユーザーからのファンクションごとのペンディング割り込みを示します cfg_interrupt_pending[0] はファンクション #0 に対応します これらの各入力は 対応するファンクションの PCI ステータスレジスタの割り込みペンディングビットに接続されます MSI 割り込みインターフェイス cfg_interrupt_msi_enable 出力 4 cfg_interrupt_msi_int 入力 32 コンフィギュレーション割り込み MSI ファンクションのイネーブル : 各ファンクションに対して Message Signaling Interrupt (MSI) メッセージが有効であることを示します これらの出力は Physical Function 0 ~ 3 の MSI 制御レジスタにある MSI イネーブルビットの設定を示します コンフィギュレーション割り込み MSI/MSIX ベクター : エンドポイントモードでコンフィギュレーションされ MSI 割り込みをサポートする場合 これらの入力を使用して ユーザーロジックからコアへ PCI ファンクション (Physical/Virtual) に関連する 32 の異なる割り込み条件を示します ファンクション番号を cfg_interrupt_msi_function_number 入力に指定する必要があります cfg_interrupt_msi_function_number 入力にファンクション番号を指定した後 ユーザーロジックはこれらの信号のいずれか 1 つを 1 サイクル間アクティブにして割り込みを送信する必要があります ユーザーロジックは 同じサイクル内で複数 (32 の割り込み入力のうち ) の信号をアクティブにしてはいけません コアは cfg_interrupt_msi_int のあらゆるビットの 0 から 1 への遷移における割り込み条件を内部レジスタに格納します ユーザーロジックは 割り込みを 1 つアサートした後 次に割り込みをアサートする前にコアから cfg_interrupt_msi_sent または cfg_interrupt_msi_fail 信号が送信されるまで待機する必要があります cfg_interrupt_msi_function_ number 入力 8 コンフィギュレーションの MSI/MSI-X 開始ファンクション : MSI または MSIX 割り込みを開始するエンドポイントファンクション番号 (#) を示します 8'h00 8'h03: PF 0 PF 3 8'h40 8'h7F: VF 0 VF 63 その他のエンコードは予約されています UltraScale+ Device Block for PCIe v1.1 62

63 第 2 章 : 製品仕様 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 ( 続き ) 名称方向幅説明 cfg_interrupt_msi_sent 出力 1 cfg_interrupt_msi_fail 出力 1 cfg_interrupt_msi_mmenable 出力 12 cfg_interrupt_msi_pending_ status cfg_interrupt_msi_pending_ status_function_num cfg_interrupt_msi_pending_ status_data_enable cfg_interrupt_msi_mask_ update 入力 32 入力 2 入力 1 出力 1 コンフィギュレーション割り込みの MSI/MSIX 割り込みの送信 : コアは この出力に 1 サイクル間パルスを生成し リンク上に MSI または MSIX の割り込みメッセージが送信されたことを示します ユーザーロジックは コアへ別の割り込み条件を送信する前に このパルスが生成されるまで待機する必要があります コンフィギュレーション割り込みの MSI/MSIX 割り込み動作エラー : この出力に 1 サイクル間のパルスが生成されると MSI または MSIX の割り込みメッセージがリンク上に送信される前に停止されたことを示します この場合 ユーザーロジックは MSI または MSIX 割り込みを再度送信する必要があります コンフィギュレーション割り込みの MSI ファンクションの Multiple Message Enable ビット : コアがエンドポイントモードとしてコンフィギュレーションされ MISI 割り込みをサポートする場合 これらの出力は Physical Function に関連する MSI 制御レジスタの Multiple Message Enable ビットで駆動されます これらのビットは 対応するファンクションに対して割り当てられた MSI 割り込みベクター番号をエンコードします ビット [2:0] は Physical Function 0 に対応し ビット [5:3] は PF 1 に対応します ( 以降同様 ) 3 ビットの有効なエンコードは次のとおりです 000b: 1 ベクター 001b: 2 ベクター 010b: 4 ベクター 011b: 8 ベクター 100b: 16 ベクター 101b: 32 ベクター コンフィギュレーション MSI 割り込みのペンディングステータス : これらの入力は Physical Function に関連する MSI 割り込みの割り込みペンディングステータスをユーザーに対して示します PF に関連する MSI 割り込みのステータスが変わると ユーザーはこれらの入力で新しい割り込みステータスを示すと共に cfg_interrupt_msi_pending_status_function_num 入力にはファンクション番号を示し cfg_interrupt_msi_pending_status_data_enable 入力を 1 サイクル間アクティブにする必要があります その後 コアは対応する Physical Function の MSI ペンディングビットレジスタに新しいステータスをラッチします コンフィギュレーション割り込みの MSI ペンデングターゲットファンクション番号 : 00 = PF 0 01 = PF 1 10 = PF 2 11 = PF 3 この入力は ユーザーが cfg_interrupt_msi_pending_status 入力に割り込みステータスを示しした場合にファンクション番号を特定する目的で使用されます コンフィギュレーション割り込みの MSI ペンディングデータが有効 : ユーザーは cfg_interrupt_msi_pending_status および cfg_interrupt_msi_pending_status_function_num の各値と共にこの信号をアサートして 対応するファンクションの MSI ペンディングビットをアップデートします コンフィギュレーション割り込みの MSI ファンクションマスクのアップデート : 有効な PF の MSI マスクレジスタの値が変更された場合 SR-IOV コアはこれを 1 サイクル間アサートします ユーザーはその後 cfg_interrupt_msi_data 出力から新しいマスク設定を読み出すことができます UltraScale+ Device Block for PCIe v1.1 63

64 第 2 章 : 製品仕様 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 ( 続き ) cfg_interrupt_msi_select 入力 2 cfg_interrupt_msi_data 出力 32 cfg_interrupt_msi_attr 入力 3 cfg_interrupt_msi_ tph_present 名称方向幅説明 入力 1 cfg_interrupt_msi_tph_type 入力 2 cfg_interrupt_msi_tph_st_tag 入力 8 cfg_interrupt_msix_enable 出力 4 cfg_interrupt_msix_mask 出力 4 cfg_interrupt_msix_vf_enable 出力 252 cfg_interrupt_msix_vf_mask 出力 252 コンフィギュレーション割り込みの MSI セレクト : これらの入力は コアから MSI マスクレジスタ設定を読み出すためにファンクション番号を選択する目的で使用されます 値 0 ~ 3 は Physical Function 0 ~ 3 にそれぞれ対応します 選択した PF の MSI マスクレジスタの設定内容は 1 サイクル後に cfg_interrupt_msi_data 出力に現れます コンフィギュレーション割り込みの MSI データ : これらの出力は cfg_interrupt_msi_select 入力で選択した Physical Function の MSI マスクレジスタの設定を示します コンフィギュレーション割り込みの MSI/MSIX TLP 属性 : これらのビットは MSI および MSIX の両方の割り込みリクエストに使用される Attribute ( 属性 ) ビットの設定を示します ビット 0 は No Snoop ビットで ビット 1 は Relaxed Ordering ビットです ビット 2 は ID-Based Ordering ビットです コアは cfg_interrupt_msi_int ビット (MSI の使用時 ) または cfg_interrupt_msix_int ビット (MSIX の使用時 ) が 0 から 1 へ遷移する際にこれらのビットをサンプルします コンフィギュレーション割り込みの MSI/MSIX TPH の有無 : MSI/MSIX 割り込みリクエストにオプションの Transaction Processing Hint (TPH) が存在することを示します MSI または MSIX トランザクションに TPH が含まれている場合 ユーザーアプリケーションは cfg_interrupt_msi_int ビット (MSI の使用時 ) または cfg_interrupt_msix_int ビット (MSIX の使用時 ) がアサートされている間に このビットを設定する必要があります コンフィギュレーション割り込みの MSI/MSIX TPH のタイプ : cfg_interrupt_msi_tph_present が 1'b1 のときに これらの 2 つのビットがヒントに関連する 2 ビットタイプを提供します コアは cfg_interrupt_msi_int または cfg_interrupt_msix_int (MSI または MSIX 割り込みの使用に基づく ) のビットが 0 から 1 へ遷移する際にこれらのビットをサンプルします コンフィギュレーション割り込みの MSI/MSIX TPH ステアリングタグ : cfg_interrupt_msi_tph_presen がアサートされると ヒントに関連するステアリングタグが cfg_interrupt_msi_tph_st_tag[7:0] に出力されている必要があります コアは cfg_interrupt_msi_int または cfg_interrupt_msix_int (MSI または MSIX 割り込みの使用に基づく ) のビットが 0 から 1 へ遷移する際にこれらのビットをサンプルします MSIX 割り込み外部インターフェイス コンフィギュレーション割り込み MSIX ファンクションのイネーブル : これらの出力は Physical Function 0 ~ 3 の MSIX 制御レジスタの MSIX イネーブルビットの設定を示します コンフィギュレーション割り込み MSIX ファンクションマスク : これらの出力は Physical Function 0 ~ 3 の MSIX 制御レジスタの MSIX Function Mask ビットの設定を示します VF からのコンフィギュレーション割り込み MSIX イネーブルビット : これらの出力は Virtual Function 0 ~ 251 の MSIX 制御レジスタの MSIX イネーブルビットの設定を示します コンフィギュレーション割り込みの MSIX VF マスク : これらの出力は Virtual Function 0 ~ 251 の MSIX 制御レジスタの MSIX Function Mask ビットの設定を示します UltraScale+ Device Block for PCIe v1.1 64

65 第 2 章 : 製品仕様 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 ( 続き ) 名称方向幅説明 cfg_interrupt_msix_address 入力 64 cfg_interrupt_msix_data 入力 32 cfg_interrupt_msix_int 入力 1 コンフィギュレーション割り込みの MSIX アドレス : コアが MSIX 割り込みをサポートするようにコンフィギュレーションされている場合 そして MSIX テーブルがユーザーメモリにインプリメントされている場合 ユーザーロジックはこのバスを使用して MSIX 割り込みの生成に使用されるアドレスを伝えます コンフィギュレーション割り込みの MSIX データ : コアが MSIX 割り込みをサポートするようにコンフィギュレーションされている場合 そして MSIX テーブルがユーザーメモリにインプリメントされている場合 ユーザーロジックはこのバスを使用して MSIX 割り込みの生成に使用されるデータを伝えます コンフィギュレーション割り込みの MSIX データが有効 : ユーザーによるこの信号のアサートは MSIX 割り込みを送信するようユーザーからのリクエストが存在することを示します ユーザーは この割り込みをアサートする前に特定の入力に識別情報を示す必要があります MSIX テーブルおよびペンディングビットアレイがユーザーメモリにインプリメントされている場合 識別情報は 割り込みのメモリアドレス データ および元のファンクション番号で構成されます これらは cfg_interrupt_msix_address[63:0] cfg_interrupt_ msix_data[31:0] および cfg_interrupt_msi_function_number[7:0] にぞれぞれ示す必要があります コアは cfg_interrupt_msix_int の 0 から 1 への遷移においてこれらのパラメーターを内部レジスタに格納します MSIX テーブルおよびペンディングビットアレイがコアによってインプリメントされている場合 識別情報は割り込みの元のファンクション番号と割り込みベクターで構成されます これらは cfg_interrupt_msi_function_number[7:0] および cfg_interrupt_msi_int[31:0] にそれぞれ示す必要があります cfg_interrupt_msi_int[31:0] のビット i は割り込みベクター i を表し cfg_interrupt_msix_int をアサートする際にこのバスの 1 つのビットのみを 1 にセットできます ユーザーロジックは 割り込みを 1 つアサートした後 次に割り込みをアサートする前にコアから cfg_interrupt_msi_sent または cfg_interrupt_msi_fail 信号が送信されるまで待機する必要があります UltraScale+ Device Block for PCIe v1.1 65

66 第 2 章 : 製品仕様 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 ( 続き ) cfg_interrupt_msix_vec_ pending cfg_interrupt_msix_vec_ pending_ status 名称方向幅説明 入力 2 出力 1 cfg_interrupt_msi_int 入力 8 コンフィギュレーション割り込みの MSIX ペンディングビットクエリ / クリア : これらのモードビットは コアが MSIX テーブルおよびペンディングビットアレイを含むようコンフィギュレーションされている場合にのみ使用されます これらの 2 つのビットは MSIX 割り込みを送信するために cfg_interrupt_msix_int がアサートされる際に設定され 選択したファンクションおよび割り込みベクターに関連する MSIX ペンディングビットに基づく特定の動作を実行します モードは次のとおりです 00b: 通常の割り込みの生成 cfg_interrupt_msix_int がアサートされたときにベクターに関連する Mask ビットが 0 であった場合 コアは MSIX リクエスト TLP をリンクに送信します Mask ビットが 1 であった場合 コアはすぐに割り込みを送信しませんが 代わりに MSIX ペンディングビットアレイにある割り込みベクターに関連するペンディングビットを設定します ( 続いて Mask がクリアされると MSIX リクエスト TLP を送信する ) 両方の場合 コアは 1 サイクル間 cfg_interrupt_msi_sent をアサートして 割り込みリクエストが受け入れられたことを示します ユーザーは 割り込みベクターに対応する MSIX ペンディングビットの現在の設定を示す cfg_interrupt_msix_vec_pending_status 出力をサンプルして これら 2 つのケースを識別します 01b: ペンディングビットのクエリ このモードでは コアは cfg_interrupt_msix_int の 1 つのビットのアサートを ペンディングビットのステータスのクエリとして処理します ユーザーは cfg_interrupt_msi_ function_number 入力で問い合わせされているペンディングビットのファンクション番号を示す必要もあります コアは 応答して MSIX リクエストを送信することはありませんが cfg_interrupt_msix_vec_pending_status 出力で MSIX ペンディングビットのステータスが示されると共に cfg_interrupt_msi_sent を 1 サイクル間アサートします 10b: ペンディングビットのクリア このモードでは コアは cfg_interrupt_msix_int の 1 つのビットのアサートを ペンディングビットをクリアするリクエストとして処理します ユーザーは cfg_interrupt_msi_function_number 入力で問い合わせされているペンディングビットのファンクション番号を示す必要もあります コアは 応答して MSIX リクエストを送信することはありませんが ベクターの MSIX ペンディングビットをクリアし ( 設定されている場合 ) cfg_interrupt_msi_sent を肯定応答として 1 サイクル間アクティブにします また cfg_interrupt_msix_vec_pending_status 出力で MSIX ペンディングビットの前のステートも提供します ユーザーは ユーザーリクエストの前にペンディングビットがコアによってクリアされたかどうかを判断するために cfg_interrupt_msix_vec_pending_status 出力をサンプルします ( ペンディング割り込みが実際は送信されたため ) このモードを使用して MSIX 割り込み向けにポーリングモードをインプリメントできます ポーリングモードでは割り込みが恒久的にマスクされ ソフトウェアがペンディングビットをポーリングして割り込みを検出して処理します 各割り込みが処理された後 このインターフェイスを介してペンディングビットをクリアできます コンフィギュレーション割り込みの MSIX ペンディングビットステータス : この出力は cfg_interrupt_msix_vec_pending 入力を使用して クエリに応えて MSIX 割り込みに関連するペンディングビットのステータスを示します MSIX テーブルおよびペンディングビットアレイを含むようコアがコンフィギュレーションされている場合にのみアクティブです MSI-X 割り込み内部インターフェイス cfg_interrupt_msi_int を参照してください コアは各ファンクションで 8 つのベクターをサポートします これはワンホットエンコードであるため 各ビットは 1 つのベクターに対応します UltraScale+ Device Block for PCIe v1.1 66

67 第 2 章 : 製品仕様 表 2-31: コンフィギュレーション割り込みコントローラーインターフェイスのポートの説明 ( 続き ) 名称方向幅説明 cfg_interrupt_msi_function_ number 入力 8 cfg_interrupt_msi_function_ number を参照してください cfg_interrupt_msi_attr 入力 3 cfg_interrupt_msi_attr を参照してください cfg_interrupt_msi_tph_ present 入力 1 cfg_interrupt_msi_ tph_present を参照してください cfg_interrupt_msi_tph_type 入力 2 cfg_interrupt_msi_tph_type を参照してください cfg_interrupt_msi_tph_st_tag 入力 8 cfg_interrupt_msi_tph_st_tag を参照してください cfg_interrupt_msi_sent 出力 1 cfg_interrupt_msi_sent を参照してください cfg_interrupt_msi_fail 出力 1 cfg_interrupt_msi_fail を参照してください cfg_interrupt_msix_int 入力 1 cfg_interrupt_msix_int を参照してください cfg_interrupt_msix_vec_ pending cfg_interrupt_msix_vec_ pending_staus 入力 2 cfg_interrupt_msix_vec_ pending を参照してください 出力 1 cfg_interrupt_msix_vec_ pending_ status を参照してください cfg_interrupt_msix_enable 出力 4 cfg_interrupt_msix_enable を参照してください cfg_interrupt_msix_mask 出力 4 cfg_interrupt_msix_mask を参照してください cfg_interrupt_msix_vf_enable 出力 252 cfg_interrupt_msix_vf_enable を参照してください cfg_interrupt_msix_vf_mask 出力 252 cfg_interrupt_msix_vf_mask を参照してください コンフィギュレーション拡張インターフェイス 外部にコンフィギュレーションレジスタが実装されている場合 コンフィギュレーション拡張インターフェイスを使用することによって コアがコンフィギュレーション情報をユーザーアプリケーションへ送信できるようになります 表 2-32 では コアのコンフィギュレーション拡張インターフェイスのポートについて説明します UltraScale+ Device Block for PCIe v1.1 67

68 第 2 章 : 製品仕様 表 2-32: コンフィギュレーション拡張インターフェイスのポートの説明 ポート方向幅説明 cfg_ext_read_received 出力 1 cfg_ext_write_received 出力 1 cfg_ext_register_number 出力 10 cfg_ext_function_number 出力 8 コンフィギュレーション拡張インターフェイスの読み出しリクエストの受信 : リンクからコンフィギュレーション読み出しリクエストを受信すると ブロックがこの出力をアサートします Vivado IDE のコアコンフィギュレーションで [User Defined Configuration Capabilities] の [PCI Express Extended Configuration Space Enable] がオンになっている場合に設定します 0xb0-0xbf の範囲で cfg_ext_register_number が示す受信されたすべてのコンフィギュレーション読み出しでは この信号は 1 サイクル間アサートされ ユーザーロジックが cfg_ext_read_data および cfg_ext_read_data_valid を示すまで有効なデータは cfg_ext_register_number cfg_ext_function_number で駆動されます 0xb0-0xbf の範囲外で cfg_ext_register_number が示す受信されたすべてのコンフィギュレーション読み出しでは 有効な cfg_ext_register_number cfg_ext_function_number およびこの信号が 1 サイクル間アサートされます 0x100-0x3ff の範囲で cfg_ext_register_number が示す受信されたすべてのコンフィギュレーション読み出しでは この信号は 1 サイクル間アサートされ ユーザーロジックが cfg_ext_read_data および cfg_ext_read_data_valid を示すまで有効なデータは cfg_ext_register_number cfg_ext_function_number で駆動されます 0x100-0x3ff の範囲外で cfg_ext_register_number が示す受信されたすべてのコンフィギュレーション読み出しでは 有効な cfg_ext_register_number cfg_ext_function_number および cfg_ext_read_received が 1 サイクル間アサートされます コンフィギュレーション拡張インターフェイスの書き込みリクエスト受信を示します リンクからコンフィギュレーション書き込みリクエストを受信すると ブロックがこの出力をアサートします Vivado IDE のコアコンフィギュレーションで [User Defined Configuration Capabilities] の [PCI Express Extended Configuration Space Enable] がオンになっている場合に設定します 0xb0-0xbf の範囲で cfg_ext_register_number が示す受信されたコンフィギュレーション書き込みすべてに対応するデータは cfg_ext_register_number cfg_ext_function_number cfg_ext_write_data および cfg_ext_write_byte_enable で示されます 0x100-0x3ff の範囲で cfg_ext_register_number が示す受信されたすべてのコンフィギュレーション書き込みは cfg_ext_register_number cfg_ext_function_number cfg_ext_write_data および cfg_ext_write_byte_enable で示されます コンフィギュレーション拡張インターフェイスのレジスタ番号 : 読み出しまたは書き込みが行われるコンフィギュレーションレジスタの 10 ビットアドレスです cfg_ext_read_received または cfg_ext_write_received が High のとき データは有効です コンフィギュレーション拡張インターフェイスのファンクション番号 : コンフィギュレーション読み出しまたは書き込みリクエストに対応する 8 ビットのファンクション番号です cfg_ext_read_received または cfg_ext_write_received が High のとき データは有効です UltraScale+ Device Block for PCIe v1.1 68

69 第 2 章 : 製品仕様 表 2-32: コンフィギュレーション拡張インターフェイスのポートの説明 ( 続き ) ポート方向幅説明 cfg_ext_write_data 出力 32 cfg_ext_write_byte_enable 出力 4 cfg_ext_read_data 入力 32 cfg_ext_read_data_valid 入力 1 コンフィギュレーション拡張インターフェイスの書き込みデータ : コンフィギュレーションレジスタに書き込まれるデータです この出力は cfg_ext_write_received が High の場合に有効です コンフィギュレーション拡張インターフェイスの書き込みバイトイネーブル : コンフィギュレーション書き込みトランザクション用のバイトイネーブル信号です コンフィギュレーション拡張インターフェイスの読み出しデータ : このバスを使用して 外部に実装したコンフィギュレーションレジスタからコアへデータを供給できます cfg_ext_read_data_valid が設定されている場合は cfg_ext_read_received を High に設定した後に コアはクロックの次の立ち上がりエッジでこのデータをサンプルします コンフィギュレーション拡張インターフェイスの読み出しデータ有効 : ユーザーアプリケーションは コアに対してこの入力をアサートして 外部に実装したコンフィギュレーションレジスタからデータを供給します コアは cfg_ext_read_received を High に設定した後 クロックの次の立ち上がりエッジで この入力データをサンプルします クロックおよびリセットインターフェイス コアの動作に不可欠なクロックおよびリセットインターフェイスは コア用のシステムレベルのクロック / リセット信号 およびユーザーアプリケーション用のクロック / リセット信号を提供します 表 2-33 では コアのクロックおよびリセットインターフェイスのポートについて説明します 表 2-33: クロックおよびリセットインターフェイスのポートの説明 ポート方向幅説明 user_clk 出力 1 user_reset 出力 1 sys_clk 入力 1 sys_clk_gt 入力 1 sys_reset 入力 1 ユーザークロック出力 ( または 250 MHz): このクロックは 固定された周波数であり Vivado IDE ( 統合設計環境 ) で設定されます この信号は user_clk に同期してディアサートされます sys_reset のアサートに非同期でディアサート / アサートされます 基準クロック このクロックには周波数 100 MHz を選択できます GT の PCIe 基準クロック : このクロックは IBUFDS_GTE3 (sys_clk と同じ定義および周波数 ) から直接駆動される必要があります このクロックは sys_clk と同様に 100 MHz を選択可能です コア用の基本リセット入力 ( 非同期 ): この入力は PCIe エッジコネクタのリセット極性と一致するように デフォルトではアクティブ Low です PCI Express インターフェイス PCI Express (PCI_EXP) インターフェイスは 複数レーン内で組織化された差動の送信 / 受信ペアで構成されています 1 つの PCI Express レーンは 1 組の送信差動信号 (pci_exp_txp pci_exp_txn) および 1 組の受信差動信号 (pci_exp_rxp pci_exp_rxn) で構成されています 1 レーンコアはレーン 0 のみサポートし 2 レーンコアは レーンコアはレーン レーンコアはレーン レーンコアはレーン 0-15 をサポートします PCI_EXP インターフェイスの送信信号および受信信号の説明は 表 2-34 を参照してください UltraScale+ Device Block for PCIe v1.1 69

70 第 2 章 : 製品仕様 表 2-34: PCI Express インターフェイス信号 ( および 16 レーンコアの場合 ) レーン番号 名称 方向 説明 1 レーンコア pci_exp_txp0 出力 PCI Express は正の値を送信 : シリアル差動出力 0 (+) 0 pci_exp_txn0 出力 PCI Express は負の値を送信 : シリアル差動出力 0 ( ) pci_exp_rxp0 入力 PCI Express は正の値を受信 : シリアル差動入力 0 (+) pci_exp_rxn0 入力 PCI Express は負の値を受信 : シリアル差動入力 0 ( ) 2 レーンコア pci_exp_txp0 出力 PCI Express は正の値を送信 : シリアル差動出力 0 (+) 0 pci_exp_txn0 出力 PCI Express は負の値を送信 : シリアル差動出力 0 ( ) pci_exp_rxp0 入力 PCI Express は正の値を受信 : シリアル差動入力 0 (+) pci_exp_rxn0 入力 PCI Express は負の値を受信 : シリアル差動入力 0 ( ) pci_exp_txp1 出力 PCI Express は正の値を送信 : シリアル差動出力 1 (+) 1 pci_exp_txn1 出力 PCI Express は負の値を送信 : シリアル差動出力 1 ( ) pci_exp_rxp1 入力 PCI Express は正の値を受信 : シリアル差動入力 1 (+) pci_exp_rxn1 入力 PCI Express は負の値を受信 : シリアル差動入力 1 ( ) 4 レーンコア pci_exp_txp0 出力 PCI Express は正の値を送信 : シリアル差動出力 0 (+) 0 pci_exp_txn0 出力 PCI Express は負の値を送信 : シリアル差動出力 0 ( ) pci_exp_rxp0 入力 PCI Express は正の値を受信 : シリアル差動入力 0 (+) pci_exp_rxn0 入力 PCI Express は負の値を受信 : シリアル差動入力 0 ( ) pci_exp_txp1 出力 PCI Express は正の値を送信 : シリアル差動出力 1 (+) 1 pci_exp_txn1 出力 PCI Express は負の値を送信 : シリアル差動出力 1 ( ) pci_exp_rxp1 入力 PCI Express は正の値を受信 : シリアル差動入力 1 (+) pci_exp_rxn1 入力 PCI Express は負の値を受信 : シリアル差動入力 1 ( ) pci_exp_txp2 出力 PCI Express は正の値を送信 : シリアル差動出力 2 (+) 2 pci_exp_txn2 出力 PCI Express は負の値を送信 : シリアル差動出力 2 ( ) pci_exp_rxp2 入力 PCI Express は正の値を受信 : シリアル差動入力 2 (+) pci_exp_rxn2 入力 PCI Express は負の値を受信 : シリアル差動入力 2 ( ) pci_exp_txp3 出力 PCI Express は正の値を送信 : シリアル差動出力 3 (+) 3 pci_exp_txn3 出力 PCI Express は負の値を送信 : シリアル差動出力 3 ( ) pci_exp_rxp3 入力 PCI Express は正の値を受信 : シリアル差動入力 3 (+) pci_exp_rxn3 入力 PCI Express は負の値を受信 : シリアル差動入力 3 ( ) 8 レーンコア pci_exp_txp0 出力 PCI Express は正の値を送信 : シリアル差動出力 0 (+) 0 pci_exp_txn0 出力 PCI Express は負の値を送信 : シリアル差動出力 0 ( ) pci_exp_rxp0 入力 PCI Express は正の値を受信 : シリアル差動入力 0 (+) pci_exp_rxn0 入力 PCI Express は負の値を受信 : シリアル差動入力 0 ( ) UltraScale+ Device Block for PCIe v1.1 70

71 第 2 章 : 製品仕様 表 2-34: PCI Express インターフェイス信号 ( および 16 レーンコアの場合 ) ( 続き ) レーン番号名称方向説明 pci_exp_txp1 出力 PCI Express は正の値を送信 : シリアル差動出力 1 (+) 1 pci_exp_txn1 出力 PCI Express は負の値を送信 : シリアル差動出力 1 ( ) pci_exp_rxp1 入力 PCI Express は正の値を受信 : シリアル差動入力 1 (+) pci_exp_rxn1 入力 PCI Express は負の値を受信 : シリアル差動入力 1 ( ) pci_exp_txp2 出力 PCI Express は正の値を送信 : シリアル差動出力 2 (+) 2 pci_exp_txn2 出力 PCI Express は負の値を送信 : シリアル差動出力 2 ( ) pci_exp_rxp2 入力 PCI Express は正の値を受信 : シリアル差動入力 2 (+) pci_exp_rxn2 入力 PCI Express は負の値を受信 : シリアル差動入力 2 ( ) pci_exp_txp3 出力 PCI Express は正の値を送信 : シリアル差動出力 3 (+) 3 pci_exp_txn3 出力 PCI Express は負の値を送信 : シリアル差動出力 3 ( ) pci_exp_rxp3 入力 PCI Express は正の値を受信 : シリアル差動入力 3 (+) pci_exp_rxn3 入力 PCI Express は負の値を受信 : シリアル差動入力 3 ( ) pci_exp_txp4 出力 PCI Express は正の値を送信 : シリアル差動出力 4 (+) 4 pci_exp_txn4 出力 PCI Express は負の値を送信 : シリアル差動出力 4 ( ) pci_exp_rxp4 入力 PCI Express は正の値を受信 : シリアル差動入力 4 (+) pci_exp_rxn4 入力 PCI Express は負の値を受信 : シリアル差動入力 4 ( ) pci_exp_txp5 出力 PCI Express は正の値を送信 : シリアル差動出力 5 (+) 5 pci_exp_txn5 出力 PCI Express は負の値を送信 : シリアル差動出力 5 ( ) pci_exp_rxp5 入力 PCI Express は正の値を受信 : シリアル差動入力 5 (+) pci_exp_rxn5 入力 PCI Express は負の値を受信 : シリアル差動入力 5 ( ) pci_exp_txp6 出力 PCI Express は正の値を送信 : シリアル差動出力 6 (+) 6 pci_exp_txn6 出力 PCI Express は負の値を送信 : シリアル差動出力 6 ( ) pci_exp_rxp6 入力 PCI Express は正の値を受信 : シリアル差動入力 6 (+) pci_exp_rxn6 入力 PCI Express は負の値を受信 : シリアル差動入力 6 ( ) pci_exp_txp7 出力 PCI Express は正の値を送信 : シリアル差動出力 7 (+) 7 pci_exp_txn7 出力 PCI Express は負の値を送信 : シリアル差動出力 7 ( ) pci_exp_rxp7 入力 PCI Express は正の値を受信 : シリアル差動入力 7 (+) pci_exp_rxn7 入力 PCI Express は負の値を受信 : シリアル差動入力 7 ( ) 16 レーンコア pci_exp_txp0 出力 PCI Express は正の値を送信 : シリアル差動出力 0 (+) 0 pci_exp_txn0 出力 PCI Express は負の値を送信 : シリアル差動出力 0 ( ) pci_exp_rxp0 入力 PCI Express は正の値を受信 : シリアル差動入力 0 (+) pci_exp_rxn0 入力 PCI Express は負の値を受信 : シリアル差動入力 0 ( ) UltraScale+ Device Block for PCIe v1.1 71

72 第 2 章 : 製品仕様 表 2-34: PCI Express インターフェイス信号 ( および 16 レーンコアの場合 ) ( 続き ) レーン番号名称方向説明 pci_exp_txp1 出力 PCI Express は正の値を送信 : シリアル差動出力 1 (+) 1 pci_exp_txn1 出力 PCI Express は負の値を送信 : シリアル差動出力 1 ( ) pci_exp_rxp1 入力 PCI Express は正の値を受信 : シリアル差動入力 1 (+) pci_exp_rxn1 入力 PCI Express は負の値を受信 : シリアル差動入力 1 ( ) pci_exp_txp2 出力 PCI Express は正の値を送信 : シリアル差動出力 2 (+) 2 pci_exp_txn2 出力 PCI Express は負の値を送信 : シリアル差動出力 2 ( ) pci_exp_rxp2 入力 PCI Express は正の値を受信 : シリアル差動入力 2 (+) pci_exp_rxn2 入力 PCI Express は負の値を受信 : シリアル差動入力 2 ( ) pci_exp_txp3 出力 PCI Express は正の値を送信 : シリアル差動出力 3 (+) 3 pci_exp_txn3 出力 PCI Express は負の値を送信 : シリアル差動出力 3 ( ) pci_exp_rxp3 入力 PCI Express は正の値を受信 : シリアル差動入力 3 (+) pci_exp_rxn3 入力 PCI Express は負の値を受信 : シリアル差動入力 3 ( ) pci_exp_txp4 出力 PCI Express は正の値を送信 : シリアル差動出力 4 (+) 4 pci_exp_txn4 出力 PCI Express は負の値を送信 : シリアル差動出力 4 ( ) pci_exp_rxp4 入力 PCI Express は正の値を受信 : シリアル差動入力 4 (+) pci_exp_rxn4 入力 PCI Express は負の値を受信 : シリアル差動入力 4 ( ) pci_exp_txp5 出力 PCI Express は正の値を送信 : シリアル差動出力 5 (+) 5 pci_exp_txn5 出力 PCI Express は負の値を送信 : シリアル差動出力 5 ( ) pci_exp_rxp5 入力 PCI Express は正の値を受信 : シリアル差動入力 5 (+) pci_exp_rxn5 入力 PCI Express は負の値を受信 : シリアル差動入力 5 ( ) pci_exp_txp6 出力 PCI Express は正の値を送信 : シリアル差動出力 6 (+) 6 pci_exp_txn6 出力 PCI Express は負の値を送信 : シリアル差動出力 6 ( ) pci_exp_rxp6 入力 PCI Express は正の値を受信 : シリアル差動入力 6 (+) pci_exp_rxn6 入力 PCI Express は負の値を受信 : シリアル差動入力 6 ( ) pci_exp_txp7 出力 PCI Express は正の値を送信 : シリアル差動出力 7 (+) 7 pci_exp_txn7 出力 PCI Express は負の値を送信 : シリアル差動出力 7 ( ) pci_exp_rxp7 入力 PCI Express は正の値を受信 : シリアル差動入力 7 (+) pci_exp_rxn7 入力 PCI Express は負の値を受信 : シリアル差動入力 7 ( ) pci_exp_txp8 出力 PCI Express は正の値を送信 : シリアル差動出力 8 (+) 8 pci_exp_txn8 出力 PCI Express は負の値を送信 : シリアル差動出力 8 ( ) pci_exp_rxp8 入力 PCI Express は正の値を受信 : シリアル差動入力 8 (+) pci_exp_rxn8 入力 PCI Express は負の値を受信 : シリアル差動入力 8 ( ) pci_exp_txp9 出力 PCI Express は正の値を送信 : シリアル差動出力 9 (+) 9 pci_exp_txn9 出力 PCI Express は負の値を送信 : シリアル差動出力 9 ( ) pci_exp_rxp9 入力 PCI Express は正の値を受信 : シリアル差動入力 9 (+) pci_exp_rxn9 入力 PCI Express は負の値を受信 : シリアル差動入力 9 ( ) UltraScale+ Device Block for PCIe v1.1 72

73 第 2 章 : 製品仕様 表 2-34: PCI Express インターフェイス信号 ( および 16 レーンコアの場合 ) ( 続き ) レーン番号名称方向説明 pci_exp_txp10 出力 PCI Express は正の値を送信 : シリアル差動出力 10 (+) 10 pci_exp_txn10 出力 PCI Express は負の値を送信 : シリアル差動出力 10 ( ) pci_exp_rxp10 入力 PCI Express は正の値を受信 : シリアル差動入力 10 (+) pci_exp_rxn10 入力 PCI Express は負の値を受信 : シリアル差動入力 10 ( ) pci_exp_txp11 出力 PCI Express は正の値を送信 : シリアル差動出力 11 (+) 11 pci_exp_txn11 出力 PCI Express は負の値を送信 : シリアル差動出力 11 ( ) pci_exp_rxp11 入力 PCI Express は正の値を受信 : シリアル差動入力 11 (+) pci_exp_rxn11 入力 PCI Express は負の値を受信 : シリアル差動入力 11 ( ) pci_exp_txp12 出力 PCI Express は正の値を送信 : シリアル差動出力 12 (+) 12 pci_exp_txn12 出力 PCI Express は負の値を送信 : シリアル差動出力 12 ( ) pci_exp_rxp12 入力 PCI Express は正の値を受信 : シリアル差動入力 12 (+) pci_exp_rxn12 入力 PCI Express は負の値を受信 : シリアル差動入力 12 ( ) pci_exp_txp13 出力 PCI Express は正の値を送信 : シリアル差動出力 13 (+) 13 pci_exp_txn13 出力 PCI Express は負の値を送信 : シリアル差動出力 13 ( ) pci_exp_rxp13 入力 PCI Express は正の値を受信 : シリアル差動入力 13 (+) pci_exp_rxn13 入力 PCI Express は負の値を受信 : シリアル差動入力 13 ( ) pci_exp_txp14 出力 PCI Express は正の値を送信 : シリアル差動出力 14 (+) 14 pci_exp_txn14 出力 PCI Express は負の値を送信 : シリアル差動出力 14 ( ) pci_exp_rxp14 入力 PCI Express は正の値を受信 : シリアル差動入力 14 (+) pci_exp_rxn14 入力 PCI Express は負の値を受信 : シリアル差動入力 14 ( ) pci_exp_txp15 出力 PCI Express は正の値を送信 : シリアル差動出力 15 (+) 15 pci_exp_txn15 出力 PCI Express は負の値を送信 : シリアル差動出力 15 ( ) pci_exp_rxp15 入力 PCI Express は正の値を受信 : シリアル差動入力 15 (+) pci_exp_rxn15 入力 PCI Express は負の値を受信 : シリアル差動入力 15 ( ) コンフィギュレーション空間 PCI コンフィギュレーション空間は 表 2-36 に示すように主に次の 3 つの要素から構成されています 内容は次のとおりです レガシ PCI v3.0 タイプ 0/1 コンフィギュレーション空間ヘッダー エンドポイントアプリケーションで使用されるタイプ 0 のコンフィギュレーション空間ヘッダー ( 表 2-35 を参照 ) ルートポートアプリケーションで使用されるタイプ 1 のコンフィギュレーション空間ヘッダー ( 表 2-35 を参照 ) レガシ拡張機能項目 PCIe 機能項目 UltraScale+ Device Block for PCIe v1.1 73

74 第 2 章 : 製品仕様 パワーマネージメント機能項目 Message Signal Interrupt (MSI) 機能項目 MSI-X 機能項目 ( オプション ) PCIe 機能 Advanced Error Reporting (AER) 拡張機能構造体 Alternate Requester ID (ARI) ( オプション ) Device Serial Number 機能構造体 (DSN) ( オプション ) Single Root I/O Virtualization (SR-IOV) ( オプション ) Transaction Processing Hints (TPH) ( オプション ) Virtual Channel (VC) 拡張機能構造体 ( オプション ) PCIe 拡張機能 Device Serial Number 拡張機能構造体 ( オプション ) Virtual Channel 拡張機能構造体 ( オプション ) Advanced Error Reporting (AER) 拡張機能構造体 ( オプション ) Medica Configuration Access Port (MCAP) 拡張機能構造体 ( オプション ) コアは レガシ拡張機能項目を最大 4 つまで実装できます この機能の有効化に関する詳細は 第 4 章 コアのカスタマイズおよび生成 を参照してください コアは PCI Express 拡張機能を最大 10 まで実装できます 残りの PCI Express 拡張機能空間は ユーザーが定義できます ユーザーが利用できるこの空間の開始アドレスは 3DCh となります この空間にレジスタを実装する場合は この空間の開始アドレスを選択でき この空間をユーザーアプリケーションに実装する必要があります この機能の有効化に関する詳細は 第 4 章 Extended Capabilities 1 and Extended Capabilities 2 を参照してください 表 2-35: PCI コンフィギュレーション空間ヘッダー ( タイプ 0 および 1) バイトオフセット レジスタ ( タイプ 0: エンドポイント ) レジスタ ( タイプ 1: ルート /DS ポート ) 00h デバイス ID ベンダー ID 04h ステータス コマンド 08h クラスコード Rev ID 0Ch BIST Header Lat Tim Cache L エンドポイントと同じ 10h BAR0 14h BAR1 18h BAR2 SecLTim SubBus# SecBus# PrimBus# 1Ch BAR3 セカンダリステータス I/O Lim I/O Base 20h BAR4 Memory Limit Memory Base 24h BAR5 PrefetchMemLimit PrefetchMemBase 28h Cardbus CIS ポインター プリフェッチ可能なベース上位 32 ビット 2Ch サブシステム ID サブシステムベンダー ID プリフェッチ可能な制限上位 32 ビット 30h 拡張 ROM BAR I/O 制限上位 16 I/O ベース上位 16 34h 予約 CapPtr 予約 CapPtr UltraScale+ Device Block for PCIe v1.1 74

75 第 2 章 : 製品仕様 表 2-35: PCI コンフィギュレーション空間ヘッダー ( タイプ 0 および 1) ( 続き ) バイトオフセット レジスタ ( タイプ 0: エンドポイント ) レジスタ ( タイプ 1: ルート /DS ポート ) 38h 予約 拡張 ROM BAR 3Ch Max_Lat Min_Gnt IntrPin IntrLine ブリッジ制御 IntrPin IntrLine 表 2-36: PCI Express コンフィギュレーション空間 バイトレジスタ ( エンドポイント ) レジスタ ( ルート /DS ポート ) オフセット 40h (10h) PM Capability NxtCap PM Cap ID 44h (11h) データ BSE PMCSR 48h (12h) MSI 制御 NxtCap MSI Cap ID 4Ch (13h) メッセージアドレス ( 下位 ) 50h (14h) メッセージアドレス ( 上位 ) エンドポイントと同じ 54h (15h) 予約 メッセージデータ 58h (16h) マスクビット 5Ch (17h) ペンディングビット 60h (18h) MSIX 制御 NxtCap MSIX Cap ID 予約 64h (19h) テーブルオフセット Table BIR 予約 68h (1Ah) PBA オフセット PBA BIR 予約 6Ch (1Bh) 予約 予約 70h (1Ch) PCIE 機能 NxtCap PCIE Cap ID 74h (1Dh) デバイス機能 78h (1Eh) デバイスステータス デバイス制御 7Ch (1Fh) リンク機能 80h (20h) リンクステータス リンク制御 エンドポイントと同じ 84h (21h) 予約スロット機能 88h (22h) 予約 スロットステータス スロット制御 8Ch (23h) 予約 (1) ルート機能 (1) ルート制御 90h (24h) 予約 ルートステータス (1) 94h (25h) デバイス機能 2 98h (26h) デバイスステータス 2 デバイス制御 2 9Ch (27h) リンク機能 2 エンドポイントと同じ A0h (28h) リンクステータス 2 リンク制御 2 A4-FCh 未実装のコンフィギュレーション空間 ( h を返す ) 注記 : 1. ルートポート専用です スイッチ DS ポートで予約されています UltraScale+ Device Block for PCIe v1.1 75

76 第 2 章 : 製品仕様 表 2-37: PCIe 機能のリスト PF0 PF1-3 VF 開始アドレス レガシ PCI CSH レガシ PCI CSH レガシ PCI CSH 0x00 PM PM - 0x40 MSI MSI - 0x48 MSI-X MSI-X MSI-X 0x60 PCIE PCIE PCIE 0x70 拡張 拡張 0xB0 表 2-38: PCI Express 拡張コンフィギュレーション空間 バイトオフレジスタ ( エンドポイント ) レジスタ ( ルートポート ) セット (dw#) 100h (40h) NxtCap Cap Ver AER Ext Cap 104h (41h) 訂正不可能エラーステータスレジスタ 108h (42h) 訂正不可能エラーマスクレジスタ 10Ch (43h) 訂正不可能エラー重要度レジスタ 110h (44h) 訂正可能エラーステータスレジスタ 114h (45h) 訂正可能エラーマスクレジスタ エンドポイントと同じ 118h (46h) アドバンスエラー機能および制御レジスタ 11Ch (47h) ヘッダーログレジスタ 1 120h (48h) ヘッダーログレジスタ 2 124h (49h) ヘッダーログレジスタ 3 128h (4Ah) ヘッダーログレジスタ 4 12Ch (4Bh) 予約 ルートエラーコマンドレジスタ 130h (4Ch) 予約ルートエラーステータスレジスタ 134h (4Dh) 予約エラーソース ID レジスタ UltraScale+ Device Block for PCIe v1.1 76

77 第 2 章 : 製品仕様 表 2-38: PCI Express 拡張コンフィギュレーション空間 ( 続き ) バイトオフセット (dw#) 140h (50h) NxtCap Cap Ver SR-IOV Ext Cap 144h (51h) 機能レジスタ 148h (52h) SR-IOV ステータス 制御 14Ch (53h) トータル VF イニシャル VF 150h (54h) Func Dep Link Number VF 154h (55h) VF ストライド First VF Offset 158h (56h) VF デバイス ID 予約 15Ch (57h) レジスタ ( エンドポイント ) レジスタ ( ルートポート ) サポートされるページサイズ 160h (58h) システムページサイズ 164h (59h) VF ベースアドレスレジスタ 0 168h (5Ah) VF ベースアドレスレジスタ 1 16Ch (5Bh) VF ベースアドレスレジスタ 2 予約 170h (5Ch) VF ベースアドレスレジスタ 3 174h (5Dh) VF ベースアドレスレジスタ 4 178h (5Eh) VF ベースアドレスレジスタ 5 180h (60h) NxtCap Cap Ver ARI Ext Cap 184h (61h) 制御 NxtFn FnGrp 188h ~ 19Ch 予約 1A0h (68h) NxtCap Cap Ver DSN Ext Cap 1A4h (69h) 1A8h (6Ah) 1ACh ~ 1BCh デバイスシリアル番号 (1st) デバイスシリアル番号 (1st) 予約 UltraScale+ Device Block for PCIe v1.1 77

78 第 2 章 : 製品仕様 表 2-38: PCI Express 拡張コンフィギュレーション空間 ( 続き ) バイトオフセット (dw#) レジスタ ( エンドポイント ) レジスタ ( ルートポート ) 1C0h (70h) NxtCap Cap Ver 2nd PCIE Ext Cap 1C4h (71h) レーン制御 1C8h (72h) 予約 レーンエラーステータス 1CCh (73h) レーン 1 Eq 制御レジスタレーン 0 Eq 制御レジスタ 1D0h (74h) レーン 3 Eq 制御レジスタレーン 2 Eq 制御レジスタ 1D4h (75h) レーン 5 Eq 制御レジスタレーン 4 Eq 制御レジスタ 1D8h (76h) レーン 7 Eq 制御レジスタレーン 6 Eq 制御レジスタ 1DCh (77h) レーン 9 Eq 制御レジスタレーン 8 Eq 制御レジスタ 1E0h (78h) レーン 11 Eq 制御レジスタレーン 10 Eq 制御レジスタ エンドポイントと同じ 1E4h (79h) レーン 13 Eq 制御レジスタ レーン 12 Eq 制御レジスタ 1E8h (7Ah) レーン 15 Eq 制御レジスタ レーン 14 Eq 制御レジスタ 1ECh (7Bh) レーン 1 Eq 制御 2 レジスタ レーン 0 Eq 制御 2 レジスタ 1F0h (7Ch) レーン 3 Eq 制御 2 レジスタ レーン 2 Eq 制御 2 レジスタ 1F4h (7Dh) レーン 5 Eq 制御 2 レジスタ レーン 4 Eq 制御 2 レジスタ 1F8h (7Eh) レーン 7 Eq 制御 2 レジスタ レーン 6 Eq 制御 2 レジスタ 1FCh (7Fh) 予約 200h (80h) NxtCap Cap Ver VC Ext Cap 204h (81h) ポート VC 機能レジスタ 1 208h (82h) ポート VC 機能レジスタ 2 20Ch (83h) ポート VC ステータス 210h (84h) VC リソース機能レジスタ 0 214h (85h) VC リソース制御レジスタ 0 218h (86h) VC リソースステータス 0 21Ch (87h) 予約 220h (88h) NxtCap Cap Ver TPH Ext Cap 224h (89h) 228h (8Ah) 22Ch (8Bh) - 32Ch 機能レジスタ リクエスター制御レジスタ TPH テーブル 予約 UltraScale+ Device Block for PCIe v1.1 78

79 第 2 章 : 製品仕様 表 2-38: PCI Express 拡張コンフィギュレーション空間 ( 続き ) バイトオフセット (dw#) 330h (CCh) 334h (CDh) 338h (CEh) レジスタ ( エンドポイント ) レジスタ ( ルートポート ) NxtCap Cap Ver Loopback VSEC ループバックヘッダー ループバック制御 33Ch (CFh) ループバックステータス予約 340h (D0h) エラーカウント 1 344h (D1h) エラーカウント 2 348h (D2h) エラーカウント 3 34Ch (D3h) エラーカウント 4 350h (D4h) NxtCap Cap Ver MCAP VSEC 354h (D5h) MCAP ヘッダー 358h (D6h) FPGA JTAG ID 35Ch (D7h) FPGA ビットストリームバージョン 360h (D8h) ステータスレジスタ 364h (D9h) 制御レジスタ 368h (DAh) データレジスタ 36Ch (DBh) レジスタ読み出しデータ 0 予約 370h (DCh) レジスタ読み出しデータ 1 374h (DDh) レジスタ読み出しデータ 2 378h (DEh) レジスタ読み出しデータ 3 37Ch - FFCh 予約 UltraScale+ Device Block for PCIe v1.1 79

80 第 3 章 コアを使用するデザイン この章では コアを使用した設計をより容易にするためのガイドラインおよび追加情報を紹介します Tandem コンフィギュレーション PCI Express はプラグアンドプレイプロトコルであるため 電源投入時にシステムへのエニュメレーションが PCIe Host によって実行されます このプロセスでは ホストが各デバイスから要求されたアドレスサイズを読み出し そのデバイスにベースアドレスを割り当てます そのため PCIe インターフェイスはホストからの問い合わせに対応できる状態になっている必要があり そうでなければベースアドレスが割り当てられません PCI Express 仕様では システムが電源安定 (power good) 状態になってから 100 ms 後に PERST# がディアサートされ PERST# がディアサートされてから 20 ms 以内に PCI Express でリンクトレーニングが確立するよう定められています これは 一般的に 100 ms ブートタイム要件 と呼ばれています Tandem コンフィギュレーションでは 2 段階の手法が用いられ これにより IP は PCI Express 仕様に示されているコンフィギュレーション時間の要件を満たすことができます 複数の使用ケースがこのテクノロジでサポートされています Tandem PROM: フラッシュから 1 つの 2 段階ビットストリームをロードします Tandem PCIe: フラッシュから第 1 段階のビットストリームをロードし PCIe リンクを介して第 2 段階のビットストリームを MCAP に提供します フィールドアップデートを伴う Tandem: Tandem PCIe の初期コンフィギュレーションが完了したら PCIe リンクがアクティブの間にユーザーデザイン全体をアップデートします アップデート領域 ( フロアプラン ) とデザイン構造はあらかじめ定義されており Tcl スクリプトは提供されます Tandem およびパーシャルリコンフィギュレーション : これは Tandem コンフィギュレーションのより一般的なケースで Tandem 後にあらゆるサイズ / 数の PR 領域のパーシャルリコンフィギュレーションが続きます PCIe を介するパーシャルリコンフィギュレーション : これは PR が後に続く標準的なコンフィギュレーションで パーシャルビットストリームの送信パスとして PCIe/MCAP を使用します これらの機能のいずれかを有効にするには コアのカスタマイズ時に適切なオプションを選択します [Basic] タブで次を実行します 1. [Mode] を [Advanced] に変更します 2. [Tandem Configuration or Partial Reconfiguration] を特定のケースに従って変更します Tandem PROM の使用ケースの場合は [Tandem PROM] を選択します Tandem PCIe または Tandem およびパーシャルリコンフィギュレーションの使用ケースの場合は [Tandem PCIe] を選択します あらかじめ定義されているフィールドアップデートに対してのみ [Tandem PCIe with Field Updates] を選択します このソリューションは UltraScale+ デバイスではまだ利用できません [PR over PCIe] は Tandem コンフィギュレーションを有効にしないでパーシャルリコンフィギュレーション用に MCAP リンクを有効にする場合に選択します UltraScale+ Device Block for PCIe v1.1 80

81 X-Ref Target - Figure 3-1 AXI Bridge for PCI Express Gen3 Subsystem および DMA for PCI Express Subsystem の両 IP コアでは すべての UltraScale+ デバイスに対して Tandem コンフィギュレーションとパーシャルリコンフィギュレーションの機能がサポートされる予定ですが フィールドアップデートを伴う Tandem 機能のサポートについては現在の Vivado リリースでは利用できません これらの IP サブシステムは AXI Bridge for PCI Express Gen3 Subsystem 製品ガイド (PG194) [ 参照 4] および DMA for PCI Express Subsystem 製品ガイド (PG195) [ 参照 5] にそれぞれ説明されていますが Tandem の詳細はこの文書でしか説明されていません サポートされるデバイス 図 3-1: [Tandem Configuration or Partial Reconfiguration] オプション UltraScale+ Device Integrated Block for PCIe コアおよび Vivado ツールフローは ザイリンクスのリファレンスボードと特定のデバイス / パッケージの組み合わせをターゲットにしたインプリメンテーションをサポートしています Vivado Design Suite リリースでは Tandem コンフィギュレーションが一部の UltraScale+ エンジニアリングサンプル (ES) シリコンセットでベータ版ソリューションとして利用できます ビットストリーム生成は すべての ES シリコンに対してデフォルトで無効に設定されています Tandem コンフィギュレーションは 表 3-1 にあるコンフィギュレーションをサポートしています 表 3-1: Tandem PROM/PCIe がサポートするコンフィギュレーション HDL Verilog のみ PCIe コンフィギュレーション ザイリンクスリファレンスボードのサポート デバイスサポート すべてのコンフィギュレーション ( 最大 : X16Gen3 または X8Gen4) 現時点ではなし サポートされるデバイス / パッケージの組み合わせ : デバイス (1) PCIe ブロックのパッケージロケーション ステータス KU3P すべて PCIE40E4_X0Y0 まだサポートされていない Kintex UltraScale+ KU5P すべて PCIE40E4_X0Y0 まだサポートされていない KU11P すべて PCIE40E4_X1Y0 まだサポートされていない KU15P すべて PCIE40E4_X1Y0 ベータ版 VU3P すべて PCIE40E4_X1Y0 ベータ版 VU5P すべて PCIE40E4_X1Y0 まだサポートされていない Virtex UltraScale+ VU7P すべて PCIE40E4_X1Y0 ベータ版 VU9P すべて PCIE40E4_X1Y2 ベータ版 VU11P すべて PCIE40E4_X0Y0 まだサポートされていない VU13P すべて PCIE40E4_X0Y1 まだサポートされていない UltraScale+ Device Block for PCIe v1.1 81

82 表 3-1: Tandem PROM/PCIe がサポートするコンフィギュレーション ( 続き ) ZU4EV すべて PCIE40E4_X0Y1 まだサポートされていない ZU5EV すべて PCIE40E4_X0Y1 まだサポートされていない Zynq MPSoC ZU7EV すべて PCIE40E4_X0Y1 まだサポートされていない ZU11EG すべて PCIE40E4_X1Y0 まだサポートされていない 注記 : Tandem ツールフローの概要 Tandem PROM および Tandem PCIe ソリューションは Vivado Design Suite でのみサポートされています これらのソリューションのツールフローは 次のとおりです 1. コアのカスタマイズ : 表 3-1 からサポートされるデバイスを選択し コンフィギュレーションモードに [Advanced] を選択して [Tandem Configuration or Partial Reconfiguration] で [Tandem PROM] または [Tandem PCIe] を選択します 2. コアを生成します 3. サンプルプロジェクトを開いて サンプルデザインをインプリメントします 4. ユーザープロジェクトで サンプルプロジェクトからの IP や XDC を使用して コアをインスタンシエートし ます 5. ユーザーデザインを合成してインプリメントします 6. ビットファイルを生成し 次に prom ファイルを生成します Tandem フローの一環として PCIe コアロジックの外部にある特定エレメントも第 1 段階ビットストリームに含める必要があります Vivado デザインルールチェック (DRC) は これらの状況を認識し 問題を解決する方法を指示します 通常 デザインの制約を変更したり 追加して問題を解決します サンプルデザインが作成される場合には 特定の制約を含むサンプルの XDC ファイルが生成され これはユーザーが指定するプロジェクトの XDC ファイルへコピーされる必要があります 具体的な制約内容は サンプルデザインの XDC ファイルに記載されています また このサンプルデザイン XDC ファイルには BPI や SPI などのフラッシュメモリデバイス用のオプションの設定方法の例も含まれています Tandem コンフィギュレーションは 現時点では AXI4-Stream バージョンのコアに対してのみサポートされており IP カタログを使用して生成される必要があります Tandem PROM ZU17EG すべて PCIE40E4_X1Y0 まだサポートされていない ZU19EG すべて PCIE40E4_X1Y0 ベータ版 1. Production シリコンのみが正式にサポートされています ビットストリーム生成は すべてのエンジニアリングサンプルシリコン (ES1 ES2) デバイスに対して無効に設定されています Tandem PROM ソリューションは ビットストリームを 2 つに分割していますが これらは共にオンボードのローカルコンフィギュレーションメモリ ( 通常は PROM またはフラッシュメモリデバイス ) からロードされます 最初のビットストリームは デザインの PCI Express 部分をコンフィギュレーションし 2 つ目のビットストリームは FPGA の残りの部分をコンフィギュレーションします 図 3-2 に示すように デザインは 2 段階に分けられていますが 生成される BIT ファイルは 1 つだけであり 第 1 段階と第 2 段階を共に含みます UltraScale+ Device Block for PCIe v1.1 82

83 X-Ref Target - Figure 3-2 Tandem PROM First Stage Second Stage Stage 1 PCIe Stage 2 User Application Integrated Block For PCIe User Application X12490 図 3-2: Tandem PROM ビットストリームのロード手順 Tandem PROM UltraScale+ サンプルツールフロー このセクションでは UltraScale+ デバイスをターゲットにした場合の Vivado ツールフローを最初から最後まで説明します このフローを説明する上で表示されるパスおよびポインター名には デフォルトのコンポーネント名 pcie4_ultrascale_plus_0 を使用しています 1. 新しい Vivado プロジェクトを作成して 表 3-1 にあるデバイス / パッケージの組み合わせを選択します 2. Vivado IP カタログで [Standard Bus Interfaces] [PCI Express] を展開表示し [UltraScale+ PCI Express Integrated Block] をダブルクリックして [Customize IP] ダイアログボックスを開きます X-Ref Target - Figure 3-3 図 3-3: Vivado IP カタログ 3. [Customize IP] ダイアログボックスの [Basic] タブで 次のようにオプションが選択されていることを確認します UltraScale+ Device Block for PCIe v1.1 83

84 [Mode]: Advanced [PCIe Block Location]: X1Y0 注記 : ターゲットデバイスに必要な PCIe ブロックロケーションを 表 3-1 に示すリストから選択して使用します [Tandem Configuration or Partial Reconfiguration]: Tandem PROM X-Ref Target - Figure その他に必要な PCIe カスタマイズを実行し [OK] をクリックしてコアを生成します 5. どの出力ファイルを生成するかをたずねる画面が表示されたら [Generate] をクリックします 6. [Sources] ウィンドウでコアを右クリックし [Open IP Example Design] をクリックします Vivado の新しいインスタンスが開き サンプルデザインが自動的に Vivado IDE にロードされます 7. 合成およびインプリメンテーションを実行します Flow Navigator で [Run Implementation] をクリックします 合成を先に実行するには [OK] をクリックします 完全ツールフローによってデザインが実行され Tandem PROM をサポートする完全に配線されたデザインが作成されます 8. PROM またはフラッシュを設定します 図 3-4: Tandem PROM PROM またはフラッシュメモリデバイスのビットストリームを生成するため 適切な設定を行います PCIe コア制約ファイル (xilinx_pcie4_uscale_plus_x1y0.xdc など ) で 次のように処理します コンフィギュレーションの設定を定義する制約をアンコメントし カスタマイズします UltraScale+ Device Block for PCIe v1.1 84

85 必要な制約は CONFIG_MODE です たとえば set_property CONFIG_MODE BPI16 [current_design] などのようにします 詳細は 96 ページの デバイスのプログラム を参照してください 9. ビットストリームを生成します 合成およびインプリメンテーション完了後 Flow Navigator で [Generate Bitstream] をクリックします Tandem コンフィギュレーションをサポートするビットストリームが runs ディレクトリに生成されます たとえば./Pcie_ultrascale_plus_0_example.runs/impl/ xilinx_pcie4_uscale_plus_ep.bit_plus_0_example.runs/impl/ xilinx_pcie4_uscale_plus_ep.bit です 注記 : 第 1 段階と第 2 段階のビットストリームを個別に生成するオプションがあります このフローでは テスト用の JTAG インターフェイスを使用して 各段階のビットストリームロードを制御できます これらのビットストリームは JTAG を使用してロードした場合 Tandem PCIe ソリューションで使用したものと同じです ハードウェアでフラッシュメモリから第 1 段階ビットストリームのみをロードしようとしても HD.OVERRIDE_PERSIST 設定が Tandem PCIe デザインで使用されているものと異なるためうまくいきません set_property HD.TANDEM_BITSTREAMS SEPARATE [current_design] 生成されたビットファイル名は xilinx_pcie4_uscale_plus_ep_tandem1.bit および xilinx_pcie4_uscale_plus_ep_tandem2.bit です 10. PROM ファイルを生成します Vivado の Tcl コンソールで 次のコマンドを実行して ザイリンクスの開発ボードでサポートされる PROM ファイルを作成します write_cfgmem -format mcs -interface BPI -size 256 -loadbit up 0x0 xilinx_pcie4_uscale_plus_ep.bit xilinx_pcie3_uscale_ep.mcs Tandem PROM のまとめ Tandem PROM を使用することにより UltraScale+ デバイスデザインの PCIe 部分をコンフィギュレーションするのに必要な時間を大幅に短縮できます UltraScale+ Device Integrated Block for PCIe コアがデザインの詳細の多くを管理するため 設計者はユーザーアプリケーションに集中できます Tandem PCIe Tandem PCIe は Tandem PROM と類似しています 第 1 段階ビットストリームでは PCI Express 動作に必要なコンフィギュレーションメモリセルのみが PROM からロードされます 第 1 段階のビットストリームがロードされた後 PCI Express ポートは エニュメレーショントラフィックに応答します これに続いて 第 2 段階ビットストリームが PCI Express リンクを介して送信されます ビデオ : KCU105 用 Tandem PCIe デザインの作成 で KCU105 評価キットをターゲットにしたデザインの作成方法を説明しています 図 3-5 に ビットストリームのロードのフローを示します UltraScale+ Device Block for PCIe v1.1 85

86 X-Ref Target - Figure 3-5 Initial PCIe Interface FPGA Startup CFG PORT PCIe link User Application PROM X12937 図 3-5: Tandem PCIe ビットストリームのロード手順 Tandem PCIe は ツールフローおよびビットストリーム生成の点で現在使用されている標準モデルと同様です ビットストリーム生成を実行すると 2 つのビットストリームが作成されます 第 1 段階を表す BIT ファイルが PROM にダウンロードされる間 ユーザーアプリケーション ( 第 2 段階 ) を表すもう一つの BIT ファイルが Media Configuration Access Port (MCAP) を使用して FPGA の残りの部分をコンフィギュレーションします Tandem PCIe UltraScale+ サンプルツールフロー このセクションでは UltraScale+ リファレンスボードをターゲットにした場合の Vivado ツールフローを最初から最後まで説明します このフローを説明する上で表示されるパスおよびポインター名には デフォルトのコンポーネント名 pcie4_ultrascale_plus_0 を使用しています 1. 新しい Vivado プロジェクトを作成する場合 表 3-1 にあるデバイス / パッケージの組み合わせを選択します 2. Vivado IP カタログで [Standard Bus Interfaces] [PCI Express] を展開表示し [UltraScale+ PCI Express Integrated Block] をダブルクリックして [Customize IP] ダイアログボックスを開きます UltraScale+ Device Block for PCIe v1.1 86

87 X-Ref Target - Figure 3-6 図 3-6: Vivado IP カタログ 3. [Customize IP] ダイアログボックスの [Basic] タブで 次のようにオプションが選択されていることを確認します [Mode]: Advanced [PCIe Block Location]: X1Y0 注記 : ターゲットデバイスに必要な PCIe ブロックロケーションを 表 3-1 に示すリストから選択して使用します [Tandem Configuration or Partial Reconfiguration]: Tandem PCIe UltraScale+ Device Block for PCIe v1.1 87

88 X-Ref Target - Figure サンプルデザインのソフトウェアは ベンダー ID およびデバイス ID を使用してデバイスに接続します ベンダー ID は 16'h10EE デバイス ID は 16'h903F となります [PFO IDs] タブで次のように設定します [Vendor ID]: 10EE 図 3-7: Tandem PCIe [Device ID]: 903F 注記 : 別のソリューションの場合は ベンダー ID およびデバイス ID を変更し ソフトウェアをアップデートして新しい値と一致させます UltraScale+ Device Block for PCIe v1.1 88

89 X-Ref Target - Figure その他に必要な PCIe カスタマイズを実行し [OK] をクリックしてコアを生成します コアが生成されると Vivado IDE の [Source] ウィンドウにコアの階層が表示されます 6. [Sources] ウィンドウでコアを右クリックし [Open IP Example Design] をクリックします Vivado の新しいインスタンスが開き サンプルデザインプロジェクトが自動的に Vivado IDE にロードされます 7. 合成およびインプリメンテーションを実行します Flow Navigator で [Run Implementation] をクリックします 合成を先に実行するには [OK] をクリックします 完全ツールフローによってデザインが実行され Tandem PCIe をサポートする完全に配線されたデザインが作成されます 8. PROM または Flash を設定し 2 つの明示的なビットファイルを要求します PROM またはフラッシュメモリデバイスのビットストリームを生成するため 次の方法で適切な設定を行います PCIe IP 制約ファイル (pcie4_ultrascale_plus_0_tandem など ) で制約を変更します サンプルデザイン制約ファイルに示すとおり 次のプロパティを設定して 2 つの明示的なビットストリームを要求します set_property HD.OVERRIDE_PERSIST FALSE [current_design] set_property HD.TANDEM_BITSTREAMS Separate [current_design] HD.TANDEM_BITSTREAMS のその他の設定値は Tandem PROM ソリューションで使用される Combined ( デフォルト ) と デバイス全体の標準の第 1 段ビットストリームを生成する None です 詳細は 96 ページの デバイスのプログラム を参照してください 9. ビットストリームを生成します 図 3-8: [PFO IDs] タブ UltraScale+ Device Block for PCIe v1.1 89

90 合成およびインプリメンテーション完了後 Flow Navigator で [Generate Bitstream] をクリックします 次の 2 つのファイルが作成されて runs ディレクトリに保存されます xilinx_pcie4_uscale_plus_ep_tandem1.bit xilinx_pcie4_uscale_plus_ep_tandem2.bit 10. 第 1 段階用の PROM ファイルを生成します Vivado の Tcl コンソールで 次のコマンドを実行して UltraScale+ 開発ボードでサポートされる PROM ファイルを作成します write_cfgmem -format mcs -interface BPI -size 256 -loadbit up 0x0 xilinx_pcie4_uscale_plus_ep_tandem1.bit xilinx_pcie4_uscale_plus_ep_tandem1.mcs PCI Express を用いた第 2 段階ビットストリームのロード サンプルカーネルモードドライバーとユーザー空間アプリケーションは IP と共に提供されます 関連するソフトウェアおよび資料の詳細は AR を参照してください Tandem PCIe のまとめ Tandem PCIe を使用することにより UltraScale デバイスデザインの PCIe 部分をコンフィギュレーションするのに必要な時間を大幅に短縮でき またビットストリームフラッシュメモリストレージの要件も軽減できます UltraScale+ Device Integrated Block for PCIe コアがデザインの詳細の多くを管理するため 設計者はユーザーアプリケーションに集中できます フィールドアップデートを伴う Tandem フィールドアップデートを伴う Tandem は UltraScale+ デバイス向けのソリューションです これにより PCIe リンクを無効にすることなくこのリンクを介して新しいビットストリームをロードできるため 高速コンフィギュレーションの要件を満たし ユーザーアプリケーションを動的に変更できます このソリューションは Vivado ツールでは UltraScale+ デバイス用にまだ利用できません Tandem PCIe フローのサポートのみが予定されています フィールドアップデートを伴う Tandem PROM のサポートは予定されていません ユーザーハードウェアデザインでの Tandem の使用 ユーザーデザインに Tandem フローを適用するには 2 つの方法があります 1 番目はコアと共に配布されるサンプルデザインを使用する方法です 2 番目は 既存デザインに PCIe IP をインポートして 必要に応じてデザインの階層を変更する方法です いずれの方法でも Tandem ソリューションに必要なサンプルのクロック供給構造 タイミング制約 および物理ブロック (Pblock) 制約を得るために PCIe サンプルデザインを作成する必要があります 方法 1 - 既存 PCI Express サンプルデザインの使用 PCI Express コアで必要な作業という観点から見ると これが最も簡単な方法ですが すべてのユーザーにとって実現可能というわけではありません このアプローチがデザイン構造上のニーズに見合う場合は 次の手順に従ってください 1. サンプルデザインを作成します Tandem PROM UltraScale+ サンプルツールフロー および Tandem PCIe UltraScale+ サンプルツールフロー で説明されているとおりにサンプルデザインを生成します 2. ユーザーアプリケーションを挿入します UltraScale+ Device Block for PCIe v1.1 90

91 PIO サンプルデザインをユーザーデザインに置き換えます I/O やグローバルクロックなどのグローバルおよび最上位エレメントは最上位デザインに挿入することを推奨します 3. ボードデザインの要件に応じて SPI または BPI フラッシュメモリプログラミングの設定をアンコメントまたは変更します 4. 通常どおりにデザインをインプリメントします 方法 2 - PCIe デザインを新規 Vivado プロジェクトに移行 方法 1 を利用できない場合は 次の手順に従って PCIe コアおよび目的の Tandem フロー (PROM または PCIe) を新しいプロジェクトで使用します サンプルデザインにはユーザーデザインに移行する必要のある RTL およびスクリプトが数多くあります 1. サンプルデザインを作成します Tandem PROM UltraScale+ サンプルツールフロー および Tandem PCIe UltraScale+ サンプルツールフロー で説明されているとおりにサンプルデザインを生成します 2. クロックモジュールを移行します コア生成時に [Shared Logic] タブの [Include Shared Logic (Clocking) in the example design] オプションがオンになっている場合 pipe_clock_i クロックモジュールはサンプルデザインの最上位にインスタンシエートされます 必要な PCIe クロックを供給するため このクロックモジュールをユーザーデザインへ移行する必要があります 注記 : これらのクロックは必要であればユーザーデザインのほかの箇所に使用できます 3. 最上位制約を移行します サンプルのザイリンクスデザイン制約 (XDC) ファイルには PCIe コア用のタイミング制約 ロケーション制約 および Pblock 制約が含まれています これらの制約はすべて (I/O ロケーションおよび I/O 規格制約を除く ) ユーザーデザインに移行させる必要があります 制約の中には デザインの階層がサンプルデザインのものとは異なる場合にアップデートしなければならない階層参照を含むものがあります 4. 最上位 Pblock 制約を移行します 次の制約は除外されやすいため この手順で特筆しています Pblock 制約は PCIe コアの最上位にポイントしている必要があります add_cells_to_pblock [get_pblocks main_pblock_boot] [get_cells -quiet [<path>]] 重要 : 制約はデバイスに依存しているため XDC ファイルで定義されている物理制約を変更しないでください 5. Vivado プロジェクトに Tandem PCIe IP を追加します Flow Navigator で [Add Sources] をクリックします [Add Source] ウィザードで [Add Existing IP] をクリックして Tandem PCIe サンプルデザインの作成に使用した XCI ファイルを参照します 6. サンプルデザインの XDC ファイルから適切な SPI または BPI フラッシュメモリの設定をコピーして ユーザーデザインの XDC ファイルに貼り付けます 7. 通常どおりにデザインをインプリメントします Tandem コンフィギュレーションの RTL デザイン Tandem コンフィギュレーションの場合 Tandem 以外の PCI Express 製品から若干の変更が必要になります このセクションでは コア内に統合されている追加ロジックと Tandem PROM ソリューションをインプリメントするために追加されるユーザーアプリケーションの役割について説明します UltraScale+ Device Block for PCIe v1.1 91

92 クリティカルな入力の多重化 (MUX) コアへの一部の入力ポートは 第 2 段階のコンフィギュレーションプロセスで無効になるように 多重化 (MUX) されます これらの MUX は mcap_design_switch 信号で制御されます これらの入力は 第 2 段階のビットストリームがロードされている間ディアサート状態に保たれます これで 第 2 段階のロジックがないために発生する不要なグリッチを防ぎ PCIe コアは有効な状態に保たれます mcap_design_switch がアサートされると MUX は切り替わり すべてのインターフェイス信号はこの文書の記載どおりの動作をとります TLP リクエスト コンフィギュレーションリクエストパケットを受信するほか PCI Express エンドポイントは PCI Express ハードブロック内で処理されない TLP リクエストを受信する場合があります 通常 受信する TLP リクエストは ベンダー定義メッセージや読み出しリクエストとなります 第 2 段階のビットストリームがロードされる前 TLP リクエストは UR ( サポートされないリクエスト ) を返します 第 2 段階のロードが完了すると mcap_design_switch 出力がアサートされて TLP リクエストはユーザーデザインで定義されたとおりに機能します Tandem コンフィギュレーションのロジック コアおよびサンプルデザインには Tandem コンフィギュレーションに特化したポート ( 信号 ) が含まれています これらの信号は第 1 段階 ( コア ) と第 2 段階 ( ユーザーロジック ) 間にハンドシェイクを提供します ハンドシェイクはコアとユーザーロジック間の通信に必要なものです 表 3-2 には コアのハンドシェイクポートが定義されています 表 3-2: ポートのハンドシェイク 名称方向極性説明 mcap_design_ switch 出力 アクティブ High 第 2 段階のユーザーロジックへの切り換えが完了したことを示します 0: 第 2 段階のロードは完了していない 1: 第 2 段階のロードが完了している cap_req 出力 アクティブ High コンフィギュレーションアクセスポートのアービトレーションリクエスト信号です この信号を用いて ユーザーが実装した複数のコンフィギュレーションインターフェイス間での FPGA コンフィギュレーションロジックの使用を調整します Media Configuration Access Port (MCAP) が唯一使用されているユーザー実装コンフィギュレーションインターフェイスである場合 この信号は未接続にする必要があります cap_rel 入力 アクティブ High コンフィギュレーションアクセスポートのアービトレーションリクエストリリース信号です この信号を用いて ユーザーが実装した複数のコンフィギュレーションインターフェイス間での FPGA コンフィギュレーションロジックの使用を調整します MCAP が唯一使用されているユーザー実装コンフィギュレーションインターフェイスである場合 この信号は Low (1'b0) に接続する必要があります これにより 必要に応じて FPGA コンフィギュレーションロジックへの MCAP アクセスが可能になります cap_gnt 入力 アクティブ High コンフィギュレーションアクセスポートのアービトレーションの許可信号です この信号を用いて ユーザーが実装した複数のコンフィギュレーションインターフェイス間での FPGA コンフィギュレーションロジックの使用を調整します MCAP が唯一使用されているユーザー実装コンフィギュレーションインターフェイスである場合 この信号は High (1'b1) に接続します これにより 必要に応じて FPGA コンフィギュレーションロジックへの MCAP アクセスが許可されます user_reset 出力 アクティブ High PCIe がリセットされるときに PCIe インターフェイスロジックをリセットするために使用できます user_clock と同期します UltraScale+ Device Block for PCIe v1.1 92

93 表 3-2: ポートのハンドシェイク ( 続き ) 名称方向極性説明 user_clk 出力 N/A PCIe インターフェイスロジックで使用されるクロックです user_lnk_up 出力 アクティブ High PCI Express コアがホストデバイスとリンクアップしたことを示します これらの信号は Tandem コンフィギュレーションの詳細 に説明されている出力トライステートバッファーのリリースなど ユーザーアプリケーションでのイベントを調整します これらの信号に関する追加情報は次のとおりです mcap_design_switch は 第 2 段階がロードされた後にアサートされます 第 2 段階のロード後 この出力はルートポートシステムによって制御されます この信号がディアサートされると必ず PCIe ソリューション IP がユーザーデザインの残りの部分から切り離され TLP BAR アクセスでは UR ( サポートされないリクエスト ) が返されます cap_req cap_rel および cap_gnt 信号を用いて 内部コンフィギュレーションアクセスポート (ICAP) など複数のコンフィギュレーションインターフェイス間における FPGA コンフィギュレーションロジックの使用を調整する必要があります ICAP は ほかの IP コアの一部として使用したり ユーザーデザインに直接インスタンシエートすることができます MCAP と ICAP 間でアービトレーションするには ロジックを作成し cap_* 信号を使用してユーザーデザインの日宇町に応じて各インターフェイスへアクセスできるようにします 第 2 段階が完全にロードされるまで MCAP には常に排他的アクセスが許可されなければなりません これは mcap_design_switch 出力のアサートで認識されます 最初の第 2 段階デザインがロードされると MCAP インターフェイスがシステムレベルデザインで使用できます ルートポート接続によってコンフィギュレーションロジックへのアクセスが要求されると cap_req がアサートされます ユーザーデザインは これに応じて cap_gnt をアサートしてアクセスを許可できます その後ユーザーデザインは cap_rel をアサートして MCAP がコンフィギュレーションロジックの制御をリリースするよう要求できます cap_req のディアサートによりルートポート接続は制御をリリースします ユーザーロジックが cap_gnt をアサートしない場合 MCAP へはアクセスできません 同様に アクセスが MCAP インターフェイスに対して許可されている間 ほかのコンフィギュレーションインターフェイスがコンフィギュレーションロジックにアクセスしないようにする必要があります user_reset も同様に コア自体がリセットされるときに コアと通信する任意のロジックをリセットするために使用できます user_clk は PCIe IP コアで使用されるメインの内部クロックにすぎません このクロックを使用して コアと直接通信するユーザーロジックと同期化させます user_lnk_up は 名前が示すとおり 確立されたリンク上で PCIe コアが現在動作していることを示します ユーザーアプリケーションハンドシェイク Tandem ソリューションが PCI Express ブロックのコア制御とユーザーアプリケーションとの間で切り換えを行うには FPGA 内に内部コンプリーションイベントが存在する必要があります この切り換えメカニズムが必要な理由については クリティカルな入力の多重化 (MUX) で説明しています この切り換えが生じると mcap_design_switch がアサートされます UltraScale+ Device Block for PCIe v1.1 93

94 Tandem コンフィギュレーションの詳細 I/O の動作 Tandem コンフィギュレーションデザインの第 1 段階に必要な各 I/O については その I/O が存在するバンク全体を第 1 段階のビットストリームでコンフィギュレーションする必要があります このバンクのほかに コンフィギュレーションバンク (65) も有効となり これら 2 つのバンク ( ただし リセットピンがコンフィギュレーションバンクの中にある場合は 1 つ ) に次の詳細が適用されます PCI Express の場合 第 1 段階デザインで必要な信号は sys_reset 入力ポートのみです したがって sys_reset ポートと同じバンクにある第 2 段階のすべての I/O が 第 1 段階でコンフィギュレーションされます sys_reset と同じ I/O バンクにあるピンは内部接続されないので この内部接続が 2 番目のコンフィギュレーションで完了するまで 出力ピンの動作は予期しないものになります 第 2 段階の機能用に初期化が必要なコンポーネントは 第 2 段階のプログラム後にデザインでリセットするのでなければ これらの I/O バンクに配置しないでください 出力ピンは sys_reset ピンと同じバンクに配置する必要があり それらの値を第 2 段階のコンプリーションの前にフローティング状態にできない場合は 次の方法で対処できます 第 1 段階のコンプリーション ( 出力がアクティブになるとき ) から第 2 段階のコンプリーション ( ドライバーロジックがアクティブになるとき ) までの間 トライステート状態に保持される OBUFT を使用します イネーブルピンの制御には mcap_design_switch 信号を使用でき ハンドシェイクイベントが完了するときにその出力をリリースします ヒント : 最上位デザインで OBUFT を自動推論またはインスタンシエートしてください mcap_design_switch でイネーブル ( ポート名は T) を制御しますが このとき極性に注意してください OBUFT test_out_obuf (.O(test_out),.I(test_internal),.T(!mcap_design_switch)); 次の構文を例として使用し リセットピンロケーションを含めるため Pblock を作成します この Pblock には バンク全体の I/O のほかに 関連する XiPhy およびクロッキングプリミティブが含まれています パーシャルコンフィギュレーションの境界と揃うように FPGA スライスリソースの最初の列も この Pblock に含まれる必要があります この領域に配置されるべきすべてのロジックは Pblock に追加する必要があり HD.TANDEM プロパティを使用して第 1 段階ロジックと特定されます このロジックは 第 1 段階がロードされた後にアクティブになりますが 第 2 段階がロードされるまでロジックの駆動はアクティブになりません このことを踏まえた上で システムデザインを構築する必要があります これらは Pblock 内でグループ化しておくことを推奨します 出力ポート test_out_obuf の例を次に示します # Create a new Pblock create_pblock IO_pblock set_property HD.TANDEM 1 [get_cells <my_cell>] # Range the Pblock to include the entire IO Bank and the associate XiPhy and clocking primitives. resize_pblock [get_pblocks IO_pblock] -add { \ IOB_X1Y52:IOB_X1Y103 \ SLICE_X86Y60:SLICE_X86Y119 \ MMCME3_ADV_X1Y1 \ PLLE3_ADV_X1Y2:PLLE3_ADV_X1Y3 \ PLL_SELECT_SITE_X1Y8:PLL_SELECT_SITE_X1Y15 \ BITSLICE_CONTROL_X1Y8:BITSLICE_CONTROL_X1Y15 \ BITSLICE_TX_X1Y8:BITSLICE_TX_X1Y15 \ BITSLICE_RX_TX_X1Y52:BITSLICE_RX_TX_X1Y103 \ XIPHY_FEEDTHROUGH_X4Y1:XIPHY_FEEDTHROUGH_X7Y1 \ RIU_OR_X1Y4:RIU_OR_X1Y7 \ } # Add components and routes to stage 1 external Pblock # This constraint should be repeated for each primitive within this pblock region add_cells_to_pblock [get_pblocks IO_pblock] [get_cells test_out_obuf] UltraScale+ Device Block for PCIe v1.1 94

95 # Identify the logic within this pblock as stage1 logic by applying the HD.TANDEM property. # This constraint should be repeated for each primitive within this pblock region set_property HD.TANDEM 1 [get_cells test_out_obuf] 第 2 段階のコンフィギュレーション中 デザイン内の残りのユーザー I/O は デフォルトでアクティブ High にプルアップされます アクティブ High に保持されている間 PUDC_B ピンを使用すると 上述の 3 つを超えるバンク内のすべての I/O がトライステートになります Tandem PCIe の場合 第 1 段階と第 2 段階の間には相当な時間が生じ その時点でこれらのピンはコンフィギュレーションされていないため 各 I/O の内部の弱いプルダウンによって Low に接続されます コンフィギュレーションピンの動作 DONE ピンは標準アプローチでのコンフィギュレーションの完了を示します このピンは Tandem コンフィギュレーションにも使用されますが その動作は少し異なります DONE は スタートアップシーケンスが実行されるとき 第 1 段階のコンフィギュレーションの最後で High になり 第 2 段階のロードが開始すると Low に戻ります Tandem PROM の場合 第 2 段階が同じビットファイルにあるので この動作がすぐに開始します Tandem PCIe の場合 第 2 段階のビットストリームが PCIe MCAP に転送されるときにこの動作が発生します DONE ピンは第 2 段階のコンフィギュレーションの最後に High になりその状態を維持します コンフィギュレーションパーシスト (Tandem PROM の場合のみ ) UltraScale+ デバイスで Tandem PROM コンフィギュレーションを使用する場合は コンフィギュレーションパーシスト (Persist) が必要です 第 1 段階および第 2 段階コンフィギュレーションで使用された多目的 I/O は 第 2 段階コンフィギュレーションが完了した後ユーザー I/O として使用できません 使用するコンフィギュレーションモードに対して PERSIST オプションが適切に設定されていても 必要な多目的 I/ O がユーザー I/O として使用されている場合には write_bitstream 中に各インスタンスに対して次のエラーが出力されます ERROR: [Designutils ] Cannot add persist programming for site IOB_X0Y151. ERROR: [Designutils ] Cannot add persist programming for site IOB_X0Y152. Tandem PROM を使用するには これらのサイトを使用しているユーザー I/O の位置を変更する必要があります PROM の選択 Tandem コンフィギュレーションでは コンフィギュレーション PROM に対する特定要件はありませんが 100 ms の仕様を満たすには 次の 3 つの条件を満たす PROM を選択する必要があります 1. ザイリンクスコンフィギュレーションでサポートされていること 2. 第 1 段階と第 2 段階の両方のコンフィギュレーションに合ったサイズであること つまり ビットストリーム 全体が入るだけのサイズの PROM であること Tandem PROM の場合 第 1 段階と第 2 段階の両方のビットストリームがここに格納されます このビットストリームは標準ビットストリームよりも若干サイズが大きくなります (4 ~ 5% 大きい ) Tandem PCIe の場合 ビットストリームのサイズは約 1 MB ですが デザインのインプリメンテーション結果 デバイス選択 および圧縮効果によって多少変わります 3. 第 1 段階ビットストリームのサイズおよび計算されたビットストリームのロード時間に基づいて PCI Express のコンフィギュレーション時間の要件を満たしていること 詳細は Tandem コンフィギュレーションのビットストリームロード時間の計算 を参照してください サポートされている PROM およびデバイスビットストリームサイズのリストは UltraScale アーキテクチャコンフィギュレーションガイド (UG570) [ 参照 7] を参照してください UltraScale+ Device Block for PCIe v1.1 95

96 デバイスのプログラム PROM へのプログラムに関して Tandem ビットストリームと標準のビットストリーム間では違いはありません Tandem ビットストリームのプログラムには JTAG スレーブおよびマスター SelectMAP SPI BPI などすべての標準のフラッシュメモリプログラミング方法を使用できます 使用するプログラミング方法に関係なく 第 1 段階のロードが完了すると DONE ピンがアサートされて 動作が開始します 注記 : JTAG 専用モードでは モードピンを 101 に設定しないでください これにより この ICAP 機能が制限されるため 第 2 段階の正しいロードが実行されなくなります SPI または BPI のフラッシュメモリプログラミングの準備を整えるには ビットストリーム生成の前に適切な設定を有効にしておく必要があります これは 次に示すようにデザインの XDC ファイルに特定フラッシュメモリデバイスの設定を追加することで完了します 例は PCI Express サンプルデザインを使用して生成した制約ファイルの中にあります 使用しているボードおよびフラッシュメモリプログラミング要件を満たすよう 既存のオプション ( コメントされている ) をコピーします Tandem PROM の例を次に示します # BPI Flash Programming set_property CONFIG_MODE BPI16 [current_design] などです set_property BITSTREAM.CONFIG.BPI_SYNC_MODE Type1 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design] set_property CONFIG_VOLTAGE 1.8 [current_design] set_property CFGBVS GND [current_design] 内部生成の CCLK および外部提供の EMCCLK は両方とも SPI および BPI プログラミングでサポートされます EMCCLK を使用した場合 コンフィギュレーションクロックに対する許容誤差がより厳しくなるため コンフィギュレーションレートがより高速になります デザインツールでの EMCCLK の使用に関する詳細は UltraScale アーキテクチャコンフィギュレーションユーザーガイド (UG570) [ 参照 7] を参照してください Vivado Design Suite でのコンフィギュレーションの詳細は Vivado Design Suite ユーザーガイド : プログラムおよびデバッグ (UG908) [ 参照 21] を参照してください ビットストリーム暗号化 ビットストリームの暗号化は Tandem PROM および Tandem PCIe の両アプローチに対して Tandem コンフィギュレーションでサポートされています MCAP では暗号化された最初のロードの完了後に (ICAP とは異なり ) 暗号化されていないビットストリームを受信できないため Tandem PCIe の場合 第 2 段階ビットストリームは第 1 段階ビットストリームと同じキーを使用して暗号化された状態にしておく必要があります Tandem PROM/PCIe のリソース制限 PCIe IP は 第 2 段階のビットストリームの FPGA へのロードが完了した直後に発生するグローバルチップリセット (GSR) からは切り離しておく必要があります このため 第 1 段階と第 2 段階のロジックは同じコンフィギュレーションフレームに配置できません PCIe IP で使用されるコンフィギュレーションフレームは シリアルトランシーバー I/O FPGA ロジック ブロック RAM またはクロッキングから構成されていて 1 つのクロック領域を垂直方向に占拠します リソース制限は次のとおりです 1 つの GT クワッドには 4 つのシリアルトランシーバーが含まれています X1 または X2 デザインでは この GT クワッド全体が使用され 未使用のシリアルトランシーバーはユーザーアプリケーションで使用できません 使用される GT クワッド数は Vivado IDE でコアをカスタマイズする際に選択した GT クワッドによって異なります 第 1 段階の I/O バンクと第 2 段階の I/O バンク間の DCI カスケード接続はサポートされていません DCI の Match_Cycle オプションにをウェイトなしに設定して 第 1 段階のコンフィギュレーション時間を最小にします set_property BITSTREAM.STARTUP.MATCH_CYCLE NoWait [current_design] UltraScale+ Device Block for PCIe v1.1 96

97 PCIe リセットピンの移動 第 1 段階ビットストリームのサイズを最良 ( 最小 ) にするには一般に バンク 65 にある PCIe リセットパッケージピンをほかのコンフィギュレーションピンと一緒に配置する必要があります リセットピンに新しいロケーションが必要な場合は 第 1 段階でコンフィギュレーションされる I/O ロケーションすべてを検討する必要があります 物理的にコアから離して配置される I/O は 第 1 段階に余分なコンフィギュレーションフレームが含まれる原因となります これは I/O を第 1 段階に含めるために必要な配線リソースが追加されるためです リセットピンのロケーションに関係なく バンク 65 は第 1 段階に保持する必要があります QSPI などのコンフィギュレーションモードを使用したとしても 可能な最高速のコンフィギュレーションには EMCCLK が必要となり デュアルモードピンはバンク 65 に配置されます 非プロジェクトフロー 非プロジェクト環境では プロジェクト環境と同じ基本アプローチが取られます まず Tandem PCIe UltraScale+ サンプルツールフロー に示すように IP カタログを使用して IP を作成します コア生成後の出力ファイルの一つに コアの詳細をすべて示す.xci ファイルがあります このファイルを使用して 必要なデザインソースをすべて再生成できます 非プロジェクト環境でのサンプルフローは次のとおりです 1. サンプルデザインまたはユーザーデザインのデザインソースをロードします read_verilog <verilog_sources> read_vhdl <vhdl_sources> read_xdc <xdc_sources> 2. ターゲットデバイスを定義します set_property PART <part> [current_project] 注記 : これは非プロジェクトフローですが バックグランドにプロジェクトがあります IP をロードする前にデバイスを明示的に指定するために この作業が必要です 3. PCIe IP をロードします read_ip pcie_ip_0.xci 4. デザインを合成します このステップで.xci から IP ソースが生成されます synth_design -top <top_level> 注記 : 独立した (out of context) 合成を実行する場合は 制約ファイルを使用して インプリメンテーション中にのみ使用される Pblock 制約を適用する必要があるかもしれません これは 一部の制約は 結合されているデザイン全体に依存して制約を適用するためです 5. Persist ピンを設定するためのコンフィギュレーションモードの確認など デザインに対するすべてのカスタマイズは デザインの XDC ファイル内で行われていることを確認します 6. デザインをインプリメントします opt_design place_design route_design 7. ビットファイルを生成します Tandem PCIe には -bin_file オプションを使用してください BIN ファイルは 32 ビットの境界に揃えられ PCIe を介した第 2 段階ビットストリームのソフトウェアロードを容易にします stage 2 bitstream over PCIe. write_bitstream -bin_file <file>.bit UltraScale+ Device Block for PCIe v1.1 97

98 Tandem IP コアのシミュレーション Tandem PROM または Tandm PCIe コアの機能は STARTUP モジュールに依存しているため シミュレーション中にこの点を考慮する必要があります PCI Express コアは 第 2 段階のビットストリームがデバイスにいつロードされたかを認識するため EOS 出力信号のアサートに STARTUP ブロックを利用します 第 2 段階のロジックと機能させるために PCIe コアをリリースするには この STARTUP ブロックをシミュレーションする必要があります これは 階層参照を使用して EOS 信号を STARTUP ブロックに強制して実行します その理由は 階層参照をサポートしない結果シミュレータは Tandem デザインのシミュレーションに使用できないためです 次のコード例はその方法を示したものです // Initialize EOS at time 0 force board.ep.pcie_ip_support_i.pcie_ip_i.inst.startup_i.eos = 1'b1; <delay until after PCIe reset is released> // Deassert EOS to simulate the starting of the 2nd stage bitstream loading force board.ep.pcie_ip_support_i.pcie_ip_i.inst.startup_i.eos = 1'b0; <delay a minimum of 4 user_clk cycles> // Reassert EOS to simulate that 2nd stage bitstream completed loading force board.ep.pcie_ip_support_i.pcie_ip_i.inst.startup_i.eos = 1'b1; // Simulate as normal from this point on. 上記の行の PCIe コアへの階層は ユーザーデザインのものと一致させるため変更する必要があります この行はコアと共に配布されているサンプルシミュレーションの board.v というファイルにもあります Tandem コンフィギュレーションのビットストリームロード時間の計算 コンフィギュレーションのロード時間は コンフィギュレーションクロック周波数と精度 コンフィギュレーションインターフェイスのデータ幅 およびビットストリームサイズによって変わります この計算は次の 3 つの手順で行われます 1. 標準クロック周波数に基づいて最小クロック周波数を計算し 標準値からの変動値を差し引きます 最小クロック周波数 = 標準クロック - クロック変動分 2. 最小 PROM 帯域幅を計算します これはデータバス幅 クロック周波数 PROM タイプによって変わります この PROM 帯域幅は 最小クロック周波数をバス幅で乗じた値です PROM 帯域幅 = 最小クロック周波数 バス幅 3. 第 1 段階のビットストリームのロード時間を計算します これは手順 2 からの最小 PROM 帯域幅を write_bitstream でレポートされる第 1 段階のビットストリームサイズで割った値です 第 1 段階のロード時間 = (PROM 帯域幅 ) / ( 第 1 段階のビットストリームサイズ ) write_bitstream でレポートされる第 1 段階のビットストリームサイズは ターミナルからまたはログファイルから直接読み出すことができます 次に示すのは write_bitstream ログからの抜粋で VU9P デバイスにおける第 1 段階ビットストリームのサイズを表しています ( 圧縮を含む デフォルト設定 ) Creating bitstream... Tandem stage1 bitstream contains bits. Tandem stage2 bitstream contains bits. Writing bitstream./xilinx_pcie_ip.bit... UltraScale+ Device Block for PCIe v1.1 98

99 これらの値は 2 つに分かれた (1 または 2) ビットストリーム段階のサイズを明示しています ビットストリームの圧縮効果はこれらの値に反映されています 例 1 例 1 のコンフィギュレーションは次のとおりです Quad SPI フラッシュ (x4) 66 MHz ± 200 ppm で動作 第 1 段階のサイズ = ビット (11.27 Mb) コンフィギュレーションのロード時間の計算手順は次のとおりです 1. 最小クロック周波数を計算します 66 MHz ( ) = MHz 2. 最小 PROM 帯域幅を計算します 4 ビット MHz = Mb/s 3. 第 1 段階のビットストリームのロード時間を計算します 例 Mb / Mb/s = ~ または 42.7 ms 例 2 のコンフィギュレーションは次のとおりです BPI (x16) 同期モード 50 MHz ± 100 ppm で動作 第 1 段階のサイズ = ビット = Mb コンフィギュレーションのロード時間の計算手順は次のとおりです 1. 最小クロック周波数を計算します 50 MHz ( ) = MHz 2. 最小 PROM 帯域幅を計算します 16 ビット MHz = Mb/s 3. 第 1 段階のビットストリームのロード時間を計算します Mb / Mb/s = ~ s または 14.1 ms ビットストリーム圧縮の使用 第 1 段階のビットストリームのサイズを最小限に抑えることが Tandem コンフィギュレーションの最終目的であるため ビットストリーム圧縮は非常に有効です このオプションでは マルチフレーム書き込みテクニックを利用してビットストリームのサイズを縮小するため その結果コンフィギュレーション時間を短縮できます 圧縮量は各デザインで異なります Tandem が選択されている場合 IP レベルの制約で圧縮機能が有効になります これは 必要に応じてユーザーデザイン制約に上書きできます 次のコマンドを使用して ビットストリーム圧縮を有効化 / 無効化できます set_property BITSTREAM.GENERAL.COMPRESS <TRUE FALSE> [current_design] UltraScale+ Device Block for PCIe v1.1 99

100 ビットストリームのロード時間に関するその他の注意事項 ビットストリームコンフィギュレーション時間は 次の要素によっても影響を受けます 電源の立ち上がり時間 ( レギュレータによる遅延など ) T POR ( パワーオンリセット ) 電源の立ち上がり時間はデザインによって異なります 立ち上がり時間の長いデザインや遅延の多いデザインは避けてください FPGA コンフィギュレーションを開始するために必要な FPGA 電源については UltraScale アーキテクチャコンフィギュレーションユーザーガイド (UG570) [ 参照 7] を参照してください 通常 FPGA の電源はシステム電源と同時またはその少し前に立ち上がります このような場合 システム電源が安定するまで 100 ms はカウントされないため タイミングマージンを得ることができます しかしこれもまたデザインによって異なります FPGA 電源とシステム電源との関係を理解するには システムを特性評価する必要があります T POR は 標準電源立ち上がりレートの場合は 57 ms UltraScale+ デバイスの高速立ち上がりレートの場合は 15 ms です 詳細は Kintex UltraScale アーキテクチャデータシート : DC 特性および AC スイッチ特性 (DS922) [ 参照 13] および Virtex UltraScale アーキテクチャデータシート : DC 特性および AC スイッチ特性 (DS923) [ 参照 14] を参照してください Tandem コンフィギュレーションのビットストリームロード時間の計算 の例 1 (Quad SPI フラッシュ [x4] 66 MHz ± 200 ppm で動作 ) の 2 つのケースを例に挙げて説明します ケース 1: ATX 供給がない場合 ケース 2: ATX 供給がある場合 3.3 V および 12 V のシステム電源の後 FPGA 電源は安定レベル (2 ms) に達するするものと仮定します この時間差は T FPGA_PWR と呼ばれます この場合 システム電源の後に FPGA 電源が立ち上がるため 電源の立ち上がり時間は 100 ms のマージンを縮めることになります テストする式は次のようになります TPOR + ビットストリームロード時間 + TFPGA_PWR < 100 ms (ATX がない場合 ) TPOR + ビットストリームロード時間 + TFPGA_PWR ms < 100 ms (ATX がある場合 ) ケース 1: ATX 供給がない場合 ATX 供給がないため 3.3 V および 12 V のシステム電源が公称電圧の 9% および 8% 内にそれぞれ達すると 100 ms がカウントされ始めます ( 詳細は PCI Express Card Electromechanical Specification を参照 ) 50 ms (T POR ) ms ( ビットストリーム時間 ) + 2 ms ( 立ち上がり時間 ) = 94.7 ms 94.7 ms < 100 ms PCIe 標準 (okay) このケースでは マージンは 5.3 ms になります ケース 2: ATX 供給がある場合 ATX 供給は システム電源が安定しているときを示す PWR_OK 信号を供給します この信号は実際の電源が安定してから最低 100 ms 後にアサートされます つまり タイミングマージンにこの 100 ms が追加される可能性があるということです 50 ms (T POR ) ms ( ビットストリーム時間 ) + 2 ms ( 立ち上がり時間 ) ms = -5.3 ms -5.3 ms < 100 ms PCIe 標準 (okay) このケースでは マージンは ms になります UltraScale+ Device Block for PCIe v

101 サンプルビットストリームサイズ 第 1 段階のビットストリームの最終的なサイズは次に示すさまざまな要素の影響を受けて変わります IP: 第 1 段階の Pblock のサイズおよび形状が 第 1 段階に必要なフレーム数を決定します x8 および x16 のコンフィギュレーションでは 第 1 段階フロアプランにさらに GT クワッドが必要となるため 第 1 段階ビットストリームのサイズが大きくなります デバイス : デバイスの幅が広いほど IP をクロッキングリソースに接続するのに必要な配線フレーム数が多くなります デザイン : リセットピンの位置は ユーザーアプリケーションの追加によってもたらされる多くの要素のうちの 1 つです GT のロケーション : 使用する GT クワッドの選択によって 第 1 段階ビットストリームのサイズが変わります 最も効率的にリソースを使用するには PCI Express ハードブロックに隣接する GT クワッドを使用します 圧縮 : デバイス使用率が高くなると 圧縮の効果は低くなります ベースラインとして PCIe IP と共に生成されるサンプル (PIO) デザインのビットストリームサイズおよびコンフィギュレーション時間の例をいくつか示します 表 3-3: ビットストリームサイズおよびコンフィギュレーション時間の例 (1) デバイス フルビットストリーム フル : BPI16 (50 MHz) (2) Tandem: BPI16 Tandem 第 1 段階 (50 MHz) KU15P Mb ms 17.6 Mb 22.0 ms VU9P Mb ms 17.5 Mb 21.8 ms 注記 : 1. ここに示すコンフィギュレーション時間には T POR は含まれていません 2. PIO デザインは非常に小さいため ビットストリームサイズを小さくするのに圧縮は非常に効果的です これらの数値は フルデザインを使用した場合により正確な見積もりができるように 圧縮なしで得たものです これらの値は Vivado Design Suite で PCIe Gen3x16 コンフィギュレーションを使用して生成されました Tandem PCIe 手法を使用して第 2 段階のビットストリームをロードするのにかかる時間は 次の 3 つの追加要因によって異なります PCI Express リンクの幅と速度 MCAP をプログラムするのに使用されたクロック周波数 ルートポートホストがエンドポイント FPGA デザインへビットストリームを供給できる効率性 ほとんどのデザインでは これらが制限要因です これら 3 つの要因の最も低い帯域幅によって 第 2 段階のビットストリームがロードされる速度が決定します UltraScale+ Device Block for PCIe v

102 クロッキング コアには 100/125/250 MHz の基準クロック入力が必要です 詳細は ザイリンクス PCI Express ソリューションセンターの各アンサーを参照してください 図 3-9 に クロッキングアーキテクチャの例を示します X-Ref Target - Figure 3-9 Dynamic Speed Switch (Gen2 & Gen3) To GTH/GTY To PIPE I/F Soft Logic PIPE_CLK PCIE40E4 BUFG_GT PIPE_CLK CLKP CLKN IBUFDS_ GTE3 REF_CLK GTY/GTH TXOUTCLK BUFG_GT CORE_CLK_MI* CORE_CLK BUFG_GT MCAP_CLK BUFG_GT EN Gen Soft Logic USER_CLK_EN USER_CLK To User Logic To BRAMs To AXI4ST I/F Bridge (Gen3x16) To BRAMs CORE_CLK USER_CLK2 To AXI4ST I/F Bridge (Gen3x16) 図 3-9: クロッキングアーキテクチャ コアのユーザーインターフェイス信号はすべて同じクロック (user_clk) と同期が取られ 設定されたリンクスピードと幅に応じて または 250 MHz の周波数になります ( 図 3-9 ) 一般的な PCI Express ソリューションでは PCI Express 基準クロックはスペクトラム拡散クロック (SSC) で 100 MHz で供給されます ほとんどのコマーシャル用の PCI Express システムでは SSC を無効にできません SSC および PCI Express の詳細は PCI Express Base Specification Revision 3.0 [ 参照 2] のセクション を参照してください 重要 : すべてのアドインカードデザインは 供給される基準クロックの特性のため 同期クロック供給を使用する必要があります スロットクロックを使用しているデバイスの場合 リンクステータスレジスタのスロットクロックコンフィギュレーションを Vivado IP カタログで有効にする必要があります 各リンクパートナーデバイスは同じクロックソースを共有します 図 3-10 および図 3-11 は 100 MHz の基準クロックを使用するシステムを示しています デバイスがエンベデッドシステムの一部であったとしても システムがコマーシャル版の PCI Express ルートコンプレックスまたはスイッチを一般的なマザーボードクロック供給で使用する場合は 同期クロック供給をやはり使用する必要があります UltraScale+ Device Block for PCIe v

103 注記 : 図 3-10 および図 3-11 では ボードレイアウトを示しています ボードレイアウト時には カップリング 終端などが適切に使用されていることを確認してください UltraScale アーキテクチャ GTH トランシーバーユーザーガイド (UG576) [ 参照 11] の ボードデザインのガイドライン を参照してください X-Ref Target - Figure 3-10 図 3-10: 100 MHz の基準クロックを使用したエンベデッドシステム X-Ref Target - Figure 3-11 図 3-11: 100 MHz の基準クロックを使用したオープンシステムアドインカード リセット このコアは PCI Express 基本リセット中にアサートされた非同期でアクティブ Low のリセット信号である sys_reset を使用してシステムをリセットします この信号をアサートすると GTH トランシーバーを含むコア全体がハードリセットになります このリセットをリリースした後 コアはリンクトレインを試み また通常操作を再開しようとします アドインカードなど一般的なエンドポイントアプリケーションでは リセット側帯波信号があり sys_reset に接続しておく必要があります システムリセット側帯波信号がないエンドポイントアプリケーションの場合は 初期ハードウェアリセットをローカルに生成する必要があります PCI Express では 4 つのリセットイベントがあります UltraScale+ Device Block for PCIe v

104 コールドリセット : 電源を投入すると実行される基本的なリセットです sys_reset 信号をアサートするとコアがコールドリセットになります ウォームリセット : 電源を切って再投入せずにハードウェアにより実行される基本的なリセットです sys_reset 信号をアサートするとコアがウォームリセットになります ホットリセット : プロトコルを介して PCI Express リンク上のバンド内で実行するリセットで エンドポイントデバイス全体をリセットします この場合は sys_reset は使用されません ホットリセットの場合は リセットのソースを示すため cfg_hot_reset_out 信号がアサートされます ファンクションレベルリセット : プロトコルを介して PCI Express リンク上のバンド内で実行するリセットで 特定機能のみをリセットします この場合 コアはリセットされる機能に対応する cfg_flr_in_process および / または cfg_vf_flr_in_process のいずれかのビットをアサートします リセットされる機能に関連するロジックは リセットプロセスが完了したことを示すため cfg_flr_done または cfg_vf_flr_done の対応するビットをアサートする必要があります FLR が開始される前に ソフトウェアは 特定の機能をターゲットにしたトラフィックを一時的に無効にします FLR が開始されると エラーログやエラー通知なしでリクエストおよびコンプリーションが破棄されます Initiate Function Level Reset ビットに 1b を書き込んで FLR が開始された後 この機能は 100 ms 以内に FLR およびその他機能固有の初期化を完了する必要があります コアのユーザーアプリケーションには user_reset 出力信号があります この信号は user_clk に同期してディアサートされます user_reset 信号は次のコンディションが発生するとアサートされます 基本リセット : sys_reset アサートされると発生します ( コールドまたはウォーム ) コアラッパーのある PLL: ロックが失われると クロック入力の安定性に問題があることを示します トランシーバー PLL ロックの損失 : トランシーバーがロックを失うと PCI Express リンクに問題があることを示します 記載されているすべてのコンディションが解決した後 user_reset 信号が user_clk と同期してディアサートされ コアがトレインを試み 平常操作が開始されます AXI4-Stream インターフェイスの説明 ここでは コアのユーザーインターフェイスに関連する機能 パラメーター および信号の詳細について説明します 機能の概要 図 3-12 に コアのユーザーインターフェイスを示します UltraScale+ Device Block for PCIe v

105 X-Ref Target - Figure 3-12 図 3-12: 統合ブロックのユーザーインターフェイスの図 このインターフェイスは PCIe リンクとユーザーアプリケーション間でのデータ転送を可能にする 4 つの個別のインターフェイスとして構成されています PCIe のコンプリーターリクエスト (CQ) インターフェイスを介して リンクからのリクエストがユーザーアプリケーションに送信されます PCIe のコンプリーターコンプリーション (CC) インターフェイスを介して ユーザーアプリケーションが CQ に応答を送り返すことができます ユーザーアプリケーションはすべてのノンポステッドトランザクションを UltraScale+ Device Block for PCIe v

106 スプリットトランザクションとして処理できません つまり リクエストのコンプリーションを送信すると同時に新しいリクエストを CQ インターフェイスで受信し続けることができます PCIe のリクエスターリクエスト (RQ) インターフェイスを介して ユーザーアプリケーションがリンクに接続された遠隔の PCIe デバイスにリクエストを生成できます PCIe のリクエスターコンプリーション (RC) インターフェイスを介して 統合ブロックがリンクから受け取ったコンプリーションを (PCIe リクエスターとしてユーザーアプリケーションリクエストに応えて ) ユーザーアプリケーションに返します 4 つの各インターフェイスは AMBA4 AXI4-Stream プロトコル仕様 [ 参照 1] に基づいています 選択したレーンの数と PCIe の世代に応じて これらインターフェイスの幅を または 512 ビットに設定可能で ユーザークロック周波数については または 250 MHz を選択できます Gen3 x16 インターフェイスでのみ 512 ビット (64 バイト ) データ幅の選択および 250 MHz クロック周波数での動作が可能で Gen3 x16 PCI Express リンクをサポートするのに十分な 16 GB/s の最大転送レートが各方向で提供されます 表 3-4 表 3-1 に 統合ブロックでサポートされるリンク幅とリンクスピードが異なる場合のインターフェイス幅とユーザークロック周波数の有効な組み合わせを示します 4 つの AXI4-Stream インターフェイスはすべて いかなる場合においても同じ幅に設定されます さらに 統合ブロックには次のインターフェイスが含まれ これらのインターフェイスを介してステータス情報がユーザーアプリケーションの PCIe のマスター側に通知されます 現在使用可能な送信クレジットに関する情報を提供するリクエスターリクエスト (RQ) インターフェイスに接続されたフロー制御ステータスインターフェイス これにより ユーザーアプリケーションは使用可能なクレジットに基づいてリクエストをスケジューリングでき リンクパートナーからのクレジット不足によってコントローラーの内部パイプラインがブロックされないようにします ノンポステッドリクエストへの割り当てに使用可能なタグ数の情報を提供するリクエスターリクエスト (RQ) インターフェイスに接続されたタグ利用可能ステータスインターフェイス これにより クライアントは PCIe IP にあるタグ管理ユニットがノンポステッドリクエストの送信に使用可能なタグをすべて使い切った場合にブロックされないようリクエストをスケジューリングできます リンクから受信したメッセージ TLP の送信に使用するコンプリーターリクエスト (CQ) インターフェイスに接続された受信メッセージインターフェイス ユーザーロジックに対して (AXI4 インターフェイスを介してユーザーアプリケーションにメッセージ全体を転送する代わりに ) リンクからメッセージを受信したことをオプションで示すことができます 表 3-4: サポートされるクロック周波数およびインターフェイス幅 ( コンフィギュレーション別 ) 可能な PCIe リンクスピード Gen1 可能な PCIe リンク幅 X1 X2 X4 X8 PIPE インターフェイスデータ幅 ( ビット ) AXI4 ストリーミングインターフェイスデータ幅 ( ビット ) pipe_clk 周波数 (MHz) core_clk 周波数 (MHz) user_clk2 周波数 (MHz) (axi4st) user_clk 周波数 (MHz) (cfg axi4st) mcap_clk 周波数 (MHz) GTH/GTY TxOutClk (MHz) / / X UltraScale+ Device Block for PCIe v

107 表 3-4: サポートされるクロック周波数およびインターフェイス幅 ( コンフィギュレーション別 ) ( 続き ) 可能な PCIe リンクスピード Gen2 Gen3 可能な PCIe リンク幅 X1 X2 X4 X / / / / / / / / / / X / X1 X2 X4 X8 PIPE インターフェイスデータ幅 ( ビット ) AXI4 ストリーミングインターフェイスデータ幅 ( ビット ) pipe_clk 周波数 (MHz) core_clk 周波数 (MHz) user_clk2 周波数 (MHz) (axi4st) user_clk 周波数 (MHz) (cfg axi4st) mcap_clk 周波数 (MHz) GTH/GTY TxOutClk (MHz) 16/ / / / / / / / / / / / / / / / X16 16/ / データアライメントオプション トランザクション層パケット (TLP) は ディスクリプターとして各 AXI4-Stream インターフェイスを介して転送され その後 (TLP にペイロードがある場合は ) ペイロードデータが続きます ディスクリプターには リクエストインターフェイスに 16 バイト幅に固定されたものと コンプリーションインターフェイスに 12 バイト幅に固定されたものがあります 送信側 ( リンク方向へ ) では 統合ブロックは ユーザーアプリケーションによって提供されたパラメーターからの TLP ヘッダーをディスクリプターで構築します 受信側 ( ユーザーインターフェイス方向へ ) では 統合ブロックは受信した TOP のヘッダーからパラメーターを抽出し ユーザーアプリケーションへ送信するためにディスクリプターを構成します 各 TLP は AXI4-Stream インターフェイスプロトコルの定義に従ってパケットとして転送されます 64/128/256 ビットインターフェイス : ペイロードが現れる場合 各データパスのペイロードの最初のバイトに揃えるために 2 つのオプションがあります 1. Dword アライメントモード : このモードでは ペイロードが存在する場合は必ずディスクリプターバイトの後に次の Dword 位置にあるペイロードバイトが続きます 2. アドレスアライメントモード : このモードでは ペイロードはデータパス上の任意のバイト位置で開始できます 統合ブロックからユーザーアプリケーションへデータが転送される場合 最初のバイト位置は次のように判断されます UltraScale+ Device Block for PCIe v

108 n = A mod w A は ディスクリプターに指定されたメモリまたは I/O アドレス ( メッセージおよびコンフィギュレーションリクエストの場合 このアドレスは 0 として見なされる ) となり w は コンフィギュレーションされたデータバス幅 ( バイト ) となります ディスクリプターの終わりとペイロードの最初のバイトの開始との間にギャップがある場合 NULL バイトで埋められます 統合ブロックからユーザーアプリケーションへのデータ転送の場合 データブロックが送信されるユーザーメモリ内の開始アドレスに基づいてデータアライメントが判断されます ユーザーアプリケーションから統合ブロックに転送されるデータについては アドレスアライメントモードを使用するとき ユーザーアプリケーションは明示的に tuser 側帯波信号を用いて統合ブロックに最初のバイトの位置を通知する必要があります アドレスアライメントモードの場合 ペイロードとディスクリプターは重複できません つまり トランスミッターはディスクリプターを転送した後ペイロードの転送に着手するため新しいビートを開始します トランスミッターは ディスクリプターの最後のバイトとペイロードの最初のバイト間にあるギャップを NULL バイトで埋めます 512 ビットインターフェイス : ペイロードが現れる場合 各データパスのペイロードの最初のバイトに揃えるために 2 つのオプションがあります 1. Dword アライメントモード : このモードでは ペイロードが存在する場合は必ずディスクリプターバイトの後に次の Dword 位置にあるペイロードバイトが続きます D がディスクリプターのサイズ ( 単位 : ビット ) である場合 ペイロードの最初のバイトに対応するレーン番号は次のように求められます n = (S + D + (A mod 4)) mod 64 この場合 S はディスクリプターの最初のバイトが現れるレーン番号 ( または 48) で D はディスクリプターの幅 (12 または 16 バイト ) で A はユーザーメモリにあるデータブロックの最初のバイトのアドレス ( メッセージおよびコンフィギュレーションリクエストの場合 アドレスは 0 と見なされる ) です b アドレスアライメントモード : このモードでは 512 ビットバス上のペイロードの開始は 128 ビット境界に揃えられます ペイロードの最初のバイトに対応するレーン番号は次のように求めます n = (S (A mod 16)) mod 64 この場合 S はディスクリプターの最初のバイトが現れるレーン番号 ( または 48) で A はペイロードの最初のバイトに対応するメモリまたは I/O アドレス ( メッセージおよびコンフィギュレーションリクエストの場合 アドレスは 0 と見なされる ) です ディスクリプターの終わりとペイロードの最初のバイトの開始との間にギャップがある場合 NULL バイトで埋められます データアライメントに使用されるソースアドレス A は 次に示す 4 つのユーザーインターフェイスによって異なります CQ インターフェイス : CQ インターフェイスを介してコアからユーザーアプリケーションに転送されるデータの場合 アライメントに使用されるアドレスビットはディスクリプターで指定した下位アドレスとなり これはユーザーメモリにあるデータブロックの開始アドレスです CC インターフェイス : CC インターフェイスを介してユーザーアプリケーションからコアに転送されるコンプリーションデータの場合 アライメントはユーザーがディスクリプターで提供するアドレスビットに基づきます RQ インターフェイス : RQ インターフェイスを介してユーザーアプリケーションからコアに転送されるメモリリクエストの場合 アライメントは 側帯波信号を使用するリクエストと共にユーザーが与えるアドレスビットに基づきます ディスクリプターでのアドレスフィールドの設定に関係なく ユーザーは A にあらゆる値を指定できます RC インターフェイス : RC インターフェイスを介してコアからユーザーアプリケーションに転送されるコンプリーションデータの場合 アライメントは 側帯波信号を使用するリクエストが RQ インターフェイスで発行されたとき このリクエストと共にユーザーが与えるアドレスビットに基づきます コアは リクエストからのアライメント情報を保存し RC インターフェイスを介してコンプリーションペイロードを送信するときに この情報を使用して対応するコンプリーションのペイロードを揃えます UltraScale+ Device Block for PCIe v

109 128b アドレスアライメントモードでは 512 ビットの AXI ビートが 128 ビットのサブビートに 4 分割されます ペイロードは ディスクリプターの後に続くサブビートでのみ開始できます ペイロードとディスクリプターは同じサブビートで重複できません トランスミッターは ディスクリプターの最後のバイトとペイロードの最初のバイト間にあるギャップを NULL バイトで埋めます アライメントモードは IP カスタマイズ GUI を使用して リクエスター (RQ RC) およびコンプリーター (CQ CC) インターフェイス別に選択して設定できます Vivado IP カタログは 4 つのインターフェイスすべてに対してデータアライメントオプションをグローバルに適用します ただし 上級ユーザーは 4 つの AXI4-Stream インターフェイスそれぞれに対してアライメントモードを個別に選択できます これは 対応するアライメントモードパラメーターを設定することで可能です アドレスアライメントの詳細と図の例は 64/128/256 ビットコンプリーターインターフェイス および 512 ビットコンプリーターインターフェイス を参照してください CQ CC および RQ インターフェイスのストラドルオプション CQ CC および RQ インターフェイスにはストラドルオプションが備わっているため インターフェイスを介して最大 2 つの TLP を同じビートで転送できます これにより TLP がビートの前半で終了する場合と同様に 小規模な TLP についてもスループットが改善します ストラドルは Vivado IDE でコアコンフィギュレーションで各インターフェイスに対して個別に有効にできます ストラドルオプションは Dword アライメントモードとの併用でのみ可能です RC インターフェイスのストラドルオプション RC インターフェイスは インターフェイスを介して最大 4 つの TLP を同じビートで転送可能にするストラドルオプションをサポートしています このオプションは Vivado IDE でコアコンフィギュレーション中に有効にできます 有効の場合 コアは または 48 バイトレーンで新しいコンプリーション TLP を開始できます したがって このオプションが有効の場合 コアは AXI バス上の同じビートで 4 つのコンプリーション TLP を送信できます ただし いずれも 1 Dword またはそれ以下のペイロードしかないことが条件です ストラドルオプションは RC インターフェイスが Dword アライメントモードでコンフィギュレーションされている場合にのみ使用できます リクエスターコンプリーション (RC) インターフェイスが TLP のタイプまたはペイロードサイズに応じて 256 または 512 ビット幅に設定されると インターフェイスのビートごとに開始または終了できる TLP の最大数が 256 ビットで 1 つまたは 512 ビットで 2 つの場合 インターフェイスの使用が著しく非効率になることがあります レシーバークレジットが無制限であることが示されると RC インターフェイスの非効率な使用が原因でコンプリーション FIFO のオーバーフローが発生する可能性があります 次に示すいずれかの措置を行う必要があります 受信した合計コンプリーションを 64 未満に抑え 指定した FIFO サイズ内に抑えるために 未処理のノンポステッドリクエストの数を制限します RC インターフェイスストラドルオプションを使用します このオプションを用いた場合の 256 ビットおよび 512 ビットそれぞれについての波形は 図 3-65 および図 3-98 を参照してください ストラドルオプションは 256 ビットまたは 512 ビット幅の RC インターフェイスでのみ利用可能で Vivado IP カタログで有効にします IP カタログでこのオプションを有効にする手順は 第 4 章 デザインフローの手順 を参照してください このオプションが有効の場合 以前の TLP が終了した時点のバイトレーン 16/32/48 または同じビートのバイトレーン 15/31/47 で統合ブロックは新しいコンプリーション TLP を開始できます したがって このオプションが有効の場合 統合ブロックは RC インターフェイスでは同じビートで複数のコンプリーション TLP を送信できます ただし いずれも 2 Dword 以上のペイロードがないことが条件です ストラドルオプションは インターフェイス幅が 256 または 512 ビットに設定されており RC インターフェイスが Dword アライメントモードに設定されている場合のみ利用可能です 表 3-5 に インターフェイス幅 アドレッシングモードおよびストラドルオプションの有効な組み合わせを示します UltraScale+ Device Block for PCIe v

110 表 3-5: インターフェイス幅 アライメントモードおよびストラドルオプションの有効な組み合わせ インターフェイス幅 アライメントモード ストラドルオプション 説明 64 ビット Dword アライメント N/A 64 ビット Dword アライメント 64 ビットアドレスアライメント N/A 64 ビット アドレスアライメント 128 ビット Dword アライメント N/A 128 ビット Dword アライメント 128 ビットアドレスアライメント N/A 128 ビット アドレスアライメント 256 ビット Dword アライメント無効 256 ビット Dword アライメント ストラドル無効 256 ビット Dword アライメント有効 受信トランザクションの順序 256 ビット Dword アライメント ストラドル有効 ( リクエスターコンプリーションインターフェイスでのみ可 ) 56 ビットアドレスアライメント N/A 256 ビット アドレスアライメント 512 ビット Dword アライメント無効 512 ビット Dword アライメント ストラドル無効 512 ビット Dword アライメント有効 512 ビット Dword アライメント ストラドル有効 (2 TLP ストラドルはすべてのインターフェイスで可 4 TLP ストラドルはリクエスターコンプリーションインターフェイスでのみ可 ) 512 ビットアドレスアライメント N/A 512 ビット 128 ビットアドレスアライメント TLP がリンクから受信され コンプリーターリクエストインターフェイスを介して送信されるよう またリクエスターコンプリーションインターフェイスが PCI Express トランザクション順序の制約に違反しないように コアの受信側にはロジックが含まれています 統合ブロックによる順序付けは 次の重要な規則に基づいています ポステッドリクエストはコンプリーターリクエスト (CQ) インターフェイスでノンポステッドリクエストを追い越すことが求められます この機能を有効にするために 統合ブロックはフロー制御メカニズムを CQ インターフェイスにインプリメントします このインターフェイスを介して ユーザーロジックはポステッドリクエストに影響を及ぼすことなくノンポステッドリクエストのフローを制御できます ユーザーロジックは pcie_cq_np_req 信号をアサートしてノンポステッドリクエストを受信するためのバッファーの利用可否を伝えます 利用可能なクレジットが 0 ではない場合にのみ 統合ブロックはノンポステッドリクエストをユーザーアプリケーションに送信します クレジット数が不足しているためノンポステッドリクエストの送信が中断されている間 統合ブロックはポステッドリクエストを送信し続けます ノンポステッドリクエストの送信に対してクレジットメカニズムによってバックプレッシャーが適用されない場合 統合ブロックはリンクから受信した同じ順序でポステッドリクエストおよびノンポステッドリクエストを送信します ノンポステッドリクエストのフロー制御については 127 ページの ノンポステッドリクエストの選択的フロー制御 を参照してください PCIe の順序付けでは 次のケースを除き コンプリーション TLP はポステッドリクエストを越えて送信できないことが要件となっています 緩和型順序付け (Relaxed Ordering) 属性ビットセットを使用するコンプリーション TLP は ポステッドリクエストを追い越すことができる コンプリーター ID がポステッドリクエスター ID と異なる場合 ID ベースの順序付けビットセットを使用するコンプリーション TLP はポステッドリクエストを追い越すことができる 上記の 2 つのルールのうち 1 つが適用されない限り 前に到着したすべてのポステッド TLP の転送が完全に完了するまで 統合ブロックはリクエスターコンプリーション (RC) インターフェイスでリンクから受信したコンプリーション TLP の転送を開始しません TLP が完全にユーザーインターフェイスに転送されたら ユーザーアプリケーションは順序の制約を必要に応じて強化する必要があります UltraScale+ Device Block for PCIe v

111 表 3-6: 受信順序の規則行パス ポステッド ノンポステッド コンプリーション ポステッド なし あり あり ノンポステッド なし なし あり a) なし b) あり ( 緩和されている順序付け ) c) あり (ID ベースの順序付け ) コンプリーション あり なし 送信トランザクションの順序 送信側では 統合ブロックはリクエスターリクエスト (RQ) インターフェイスとコンプリーターコンプリーション (CC) インターフェイスで TLP を受信します 統合ブロックは これらの各インターフェイスから受信したトランザクションの順序を変更しません リクエスター側のリクエストとコンプリーター側のコンプリーションが 1 つのトラフィックストリームに多重化された後 統合ブロックの転送パイプラインでこれらがどのように順序付けされるのか予測するのは難しくなります コンプリーション TLP がリクエストに対して順序付けを維持しなければならない場合 ユーザーロジックは CC インターフェイスから送信されるコンプリーションに対して厳密な順序付けを維持する必要があるリクエストに 4 ビットのシーケンス番号を提供できます これには s_axis_rq_tuser バス内の seq_num[3:0] 入力を使用します ユーザーアプリケーションから新しいコンプリーション TLP を渡すことができなくなる送信パイプライン内の地点にリクエスト TLP が到達すると 統合ブロックはシーケンス番号を pcie_rq_seq_num[3:0] 出力に提供し pcie_rq_seq_num_vld をアサートします このメカニズムを次の状況で使用すると TLP 順序を維持できます ユーザーロジックでは リクエスト TLP とその後に続くコンプリーション TLP 間の順序付けを維持することが求められます この場合 ターゲットのコンプリーションインターフェイスでコンプリーション TLP の転送を開始する前に ユーザーロジックは pcie_rq_seq_num[3:0] 出力にリクエスターリクエストのシーケンス番号が現れるのを待機する必要があります ユーザーロジックでは リクエスト TLP と MSI メッセージインターフェイスを介して提示される MSI/ MSI-X TLP 間で順序付けを維持することが求められます この場合 MSI メッセージインターフェイスで MSI または MSI-X を提示する前に ユーザーロジックは pcie_rq_seq_num[3:0] 出力にリクエスターリクエストのシーケンス番号が現れるのを待機する必要があります 64/128/256 ビットコンプリーターインターフェイス ここでは 64/128/256 ビットインターフェイスに対応するコアのユーザーインターフェイスの動作について説明します このインターフェイスは AXI4-Stream プロトコルに基づいて PCIe リンクから受信したトランザクション ( メモリ I/O の読み出し / 書き込み メッセージ アトミック操作 ) をコンプリーターリクエスト (CQ) インターフェイスのトランザクションにマップします コンプリーターインターフェイスは 各方向のデータ転送にそれぞれが用いられる 2 つの個別のインターフェイスで構成されます 各インターフェイスは AXI4-Stream プロトコルに基づき または 256 ビット幅に設定できます CQ インターフェイスは ( 関連するペイロードデータを含む ) リクエストをユーザーアプリケーションに転送するために用いられ コンプリーターコンプリーション (CC) インターフェイスはコンプリーションデータ ( ノンポステッドリクエスト向け ) をユーザーアプリケーションに送信してからリンクに転送するために用いられます これら 2 つのインターフェイスは独立して動作します つまり 統合ブロックは 前回のリクエストのコンプリーションを受信すると同時に CQ インターフェイスを介して新しいリクエストを転送できます コンプリーターリクエストインターフェイスの動作 図 3-13 に コアのコンプリーターリクエストインターフェイスに関連する信号を示します コアは このインターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します このパケットは 128 ビットディスクリプターから始まり TLP にペイロードが含まれる場合はその後をデータが続きます UltraScale+ Device Block for PCIe v

112 X-Ref Target - Figure 3-13 Integrated Block for PCIe PCIe Completer Request Interface AXI4-Stream Master m_axis_cq_tdata[255:0] m_axis_cq_tparity[31:0] m_axis_cq_valid m_axis_cq_tready m_axis_cq_tkeep[7:0] m_axis_cq_tlast sop first_be[3:0] last_be[3:0] byte_en[31:0] discontinue tph_present tph_type[1:0] tph_st_tag[7:0] AXI4-Stream Slave Client Application PCIe Completer-Side Interface m_axis_cq_tuser[52:0] pcie_cq_np_req pcie_cq_np_req_count[5:0] X12442 図 3-13: コンプリーターリクエストインターフェイスの信号 コンプリーターリクエストインターフェイスは 2 つのデータアライメントモードをサポートします Dword アライメントモードでは 有効なデータの最初のバイトが n = (16 + A mod 4) mod w から求められるレーンに現れます この数式の説明を次に示します A は 転送されるデータブロックのバイト単位の開始アドレスです w は インターフェイスのバイト幅です アドレスアライメントモードでは データは必ず ディスクリプターが終了してから新しいビートで開始します その最初の有効なバイトは n = A mod w から求められるレーンにあります (w はインターフェイスのバイト幅 ) メモリ I/O およびアトミック操作の各リクエストでは アドレス A はリクエストに含まれるアドレスです メッセージの場合 ペイロードのアライメントを判断する目的でアドレスは常に 0 を取ります コンプリーターリクエストディスクリプターのフォーマット 統合ブロックは CQ インターフェイスを介してリンクから受信した各リクエスト TLP を独立した AXI4-Stream パケットとして転送します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 16 バイト長となり リクエストパケットの最初の 16 バイトで送信されます ディスクリプターは 64 ビットインターフェイスでは最初の 2 サイクル間で送信され 128 ビットまたは 256 ビットの場合は最初のサイクルで送信されます UltraScale+ Device Block for PCIe v

113 図 3-14 図 3-15 図 3-16 および図 3-17 に ディスクリプターのフォーマットをリクエストタイプ別に示しています 図 3-14 に示すフォーマットは 転送されているリクエスト TLP がメモリ読み出し / 書き込みリクエスト I/O 読み出し / 書き込みリクエスト またはアトミック操作リクエストのときに適用されます 図 3-15 に示すフォーマットは ベンダー定義メッセージ ( タイプ 0 またはタイプ 1) 専用です 図 3-16 に示すフォーマットは すべての ATS メッセージ (Invalid Request Invalid Completion Page Request PRG Response) に使用されます その他のメッセージのディクスリプターについては 図 3-17 に示すフォーマットとなります X-Ref Target - Figure DW + 1 DW Address [63:2] Address Type (AT) DW + 3 DW R Attr TC Target Function BAR ID BAR Aperture Tag Device/Function Bus Requester ID R Dword Count Req Type X12217 図 3-14: メモリリクエスト I/O リクエスト アトミック操作リクエストのコンプリーターリクエストディスクリプターフォーマット X-Ref Target - Figure DW TL Header Byte 15 Vendor - Defined Header Bytes TL Header Byte 14 TL Header Byte 13 TL Header Byte Vendor ID +2 DW Bus Device/Function Destination ID DW R Attr TC R Message Routing Msg Code Tag DW + 2 Bus Device/FunctionR Requester ID +9 Req Type +8 Dword Count X12219 図 3-15: ベンダー定義メッセージのコンプリーターリクエストディスクリプターフォーマット UltraScale+ Device Block for PCIe v

114 X-Ref Target - Figure DW + 1 DW TL Header Bytes 8-15 TL Header Byte 15 TL Header Byte 14 TL Header Byte 13 TL Header Byte 12 TL Header Byte 11 TL Header Byte 10 TL Header Byte 9 TL Header Byte DW + 3 DW R Attr TC R Message Routing Msg Code Tag Bus Device/Function R Requester ID Req Type Dword Count X12216 図 3-16: ATS メッセージのコンプリーターリクエストディスクリプタフォーマット X-Ref Target - Figure DW + 1 DW R OBFF Code (for OBFF message); Reserved (for others) No-Snoop Latency (for LTR message); Reserved (for others) Snoop Latency (for LTR message); Reserved (for others) 127 DW DW R Attr TC R Msg Code Tag Bus Device/Function R Message Requester ID Routing Dword Count Req Type 0 X12218 図 3-17: その他メッセージのコンプリーターリクエストディスクリプターフォーマット 表 3-7 に コンプリーターリクエストディスクリプターの個別フィールドを示します 表 3-7: コンプリーターリクエストディスクリプターのフィールドビットインデックスフィールド名説明 1:0 Address Type ( アドレスタイプ ) このフィールドは メモリトランザクションおよびアトミック操作専用に定義されます リクエストの TL ヘッダーから抽出された AT ビットが含まれます 00: リクエスト内のアドレスは変換されない 01: トランザクションは変換リクエスト 10: リクエスト内のアドレスは変換される 11: 予約 UltraScale+ Device Block for PCIe v

115 表 3-7: コンプリーターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 63:2 Address ( アドレス ) 74:64 78:75 95:80 Dword Count (Dword カウント ) Request Type ( リクエストタイプ ) Requester ID ( リクエスター ID) 103:96 Tag ( タグ ) 111:104 Target Function ( ターゲットファンクション ) このフィールドは メモリ I/O およびアトミック操作の各リクエストに適用されます TLP ヘッダーからのアドレスを提供します リクエストで指定された最初の Dword のアドレスです m_axis_cq_tuser からの First_BE ビットを使用してバイト単位のアドレスを判断する必要があります トランザクションが 32 ビットアドレスを指定する場合 このフィールドのビット [63:32] は 0 になります これらの 11 ビットは 読み出しまたは書き込みの対象となっているブロックのサイズ ( メッセージの場合は メッセージペイロードのサイズ ) を示します (Dword 単位 ) 範囲は 0 ~ 256 Dword です I/ O アクセスの場合 Dword カウントは常に 1 です メモリの読み出し / 書き込みリクエストの長さが 0 の場合 Dword カウントは 1 になり First_BE ビットはすべて 0 にセットされます トランザクションタイプを特定します トランザクションタイプとそれらのエンコードの詳細は 表 3-8 に示します リクエストに関連する PCI リクエスター ID です RID のこれまでの解釈で これらの 16 ビットは 8 ビットのバス番号 [95:88] 5 ビットのデバイス番号 [87:83] および 3 ビットのファンクション番号 [82:80] に分割されます ARI が有効のとき ビット [95:88] は 8 ビットのバス番号を伝搬し [87:80] はファンクション番号を提供します リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元の統合ブロックへコンプリーションデータを供給する必要があります リクエストに関連する PCIe タグです リクエストがノンポステッドトランザクションの場合 ユーザーロジックはこのフィールドを格納し 元の統合ブロックへコンプリーションデータを供給する必要があります メモリの書き込みおよびメッセージの場合 このフィールドを無視しても問題ありません このフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエストがターゲットとしているファンクション番号を提供し BAR チェックで指定されます ARI を使用する場合 このフィールドのすべての 8 ビットが有効です 使用しない場合は ビット [106:104] のみが有効です PF/VF マップに対するターゲットファンクションの値を次に示します 0: PF0 1: PF1 64: VF0 65: VF1 66: VF2 67: VF3 68: VF4 69: VF5 UltraScale+ Device Block for PCIe v

116 表 3-7: コンプリーターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 114:112 BAR ID 120:115 BAR アパーチャ ( 空き部分 ) 123:121 Transaction Class (TC) 126:124 Attributes ( 属性 ) 15:0 31:16 Snoop Latency ( スヌープレイテンシ ) No-Snoop Latency ( ノースヌープレイテンシ ) このフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエスト内のアドレス向けに一致した BAR 番号を提供します 000: BAR 0 (VF の場合 VF-BAR 0) 001: BAR 1 (VF の場合 VF-BAR 1) 010: BAR 2 (VF の場合 VF-BAR 2) 011: BAR 3 (VF の場合 VF-BAR 3) 100: BAR 4 (VF の場合 VF-BAR 4) 101: BAR 5 (VF の場合 VF-BAR 5) 110: 拡張 ROM アクセス 111: BAR チェックなし ( ルートポートでのみ有効 ) 64 ビットトランザクションの場合 一致する 1 組の BAR の下位アドレスとして BAR 番号が提供されます ( つまり 0 2 または 4) この 6 ビットのフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエストと一致する BAR のアパーチャ設定を提供します この情報は メモリまたは I/O 空間のアドレス指定で使用するビットを決定する際に有用です たとえば 12 という値は 一致する BAR のアパーチャが 4K であることを示します したがって ユーザーアプリケーションはアドレスのビット [63:12] を無視できます VF BAR の場合 この出力で提供される値は BAR で記録されている 1 つの VF が使用するメモリ空間に基づきます リクエストに関連する PCIe トランザクションクラス (TC) です リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元の統合ブロックへコンプリーションデータを供給する必要があります これらのビットは リクエストに関連する Attribute ビットのセットを提供します ビット 124 は No Snoop ビットで ビット 125 は Relaxed Ordering ビットです ビット 126 は ID-Based Ordering ビットで メモリリクエストとメッセージ専用にセットできます リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元の統合ブロックへコンプリーションデータを供給する必要があります このフィールドは LTR メッセージ専用に定義されます メッセージの TLP ヘッダーにある 16 ビットの Snoop Latency フィールドの値を提供します このフィールドは LTR メッセージ専用に定義されます メッセージの TLP ヘッダーにある 16 ビットの No-Snoop Latency フィールドの値を提供します UltraScale+ Device Block for PCIe v

117 表 3-7: コンプリーターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 35:32 OBFF コード 111:104 メッセージコード 114:112 15:0 63:32 63:0 Message Routing ( メッセージルーティング ) Destination ID ( デスティネーション ID) Vendor-Defined Header ( ベンダー定義のヘッダー ) ATS Header (ATS ヘッダー ) このフィールドは OBFF メッセージ専用に定義されます OBFF コードフィールドは さまざまな OBFF ケースを識別するために使用されます 1111b: CPU アクティブ バスマスタリングや割り込みなど すべてのデバイスアクションに対してシステムが完全にアクティブである 0001b: OBFF デバイスメモリの読み出し / 書き込みバスマスターの動作で利用可能なシステムメモリパス 0000b: アイドル システムがアイドル状態で 低電力ステートその他すべてのコードは予約されています このフィールドはすべてのメッセージ用に定義されます TLP ヘッダーから抽出された 8 ビットのメッセージコードが含まれます サポート対象のメッセージコードの一覧は PCI Express Base Specification rev. 3.0 [ 参照 2] の Appendix F を参照してください ユーザーはサポートされないメッセージコードを含むディスクリプターを UR として扱い cfg_err_uncor_in 信号をトグルして非致命的エラーを検出したことを示す必要があります このフィールドはすべてのメッセージ用に定義されます これらのビットは TLP ヘッダーからの 3 ビットの配線フィールド r[2:0] を提供します このフィールドはベンダー定義メッセージにのみ適用されます メッセージが ID によって配線される場合 ( つまり メッセージ配線フィールドが 010 バイナリ ) このフィールドはメッセージの Destination ID を提供します このフィールドはベンダー定義メッセージにのみ適用されます TLP ヘッダーの Dword 3 から抽出されたバイトが含まれます このフィールドは ATS メッセージにのみ適用可能です TLP ヘッダーの Dword 2 と Dword 3 から抽出されたバイトが含まれます 表 3-8: トランザクションタイプ リクエストタイプ ( バイナリ ) 説明 0000 メモリ読み出しリクエスト 0001 メモリ書き込みリクエスト 0010 I/O 読み出しリクエスト 0011 I/O 書き込みリクエスト 0100 メモリのフェッチおよび追加リクエスト 0101 メモリの無条件スワップリクエスト 0110 メモリの比較およびスワップリクエスト 0111 読み出しリクエストのロック ( レガシデバイスでのみ可能 ) 1000 タイプ 0 のコンフィギュレーション読み出しリクエスト ( リクエスター側のみ ) 1001 タイプ 1 のコンフィギュレーション読み出しリクエスト ( リクエスター側のみ ) UltraScale+ Device Block for PCIe v

118 表 3-8: トランザクションタイプ ( 続き ) リクエストタイプ ( バイナリ ) 説明 1010 タイプ 0 のコンフィギュレーション書き込みリクエスト ( リクエスター側のみ ) 1011 タイプ 1 のコンフィギュレーション書き込みリクエスト ( リクエスター側のみ ) 1100 ATS およびベンダー定義メッセージを除くすべてのメッセージ 1101 ベンダー定義メッセージ 1110 ATS メッセージ 1111 予約 コンプリーターを介すメモリ書き込み動作 図 3-18 図 3-19 および図 3-20 のタイミング図は コンプリーターリクエスト (CQ) インターフェイスを介してリンクから受信したメモリ書き込み TLP の Dword アライメント転送を および 256 ビット別に示しています 図示する目的で メモリに書き込まれるデータの開始 Dword アドレスは (m *32+1) と仮定し 整数 m > 0 となります サイズは n Dword と仮定し n = k *32+29 (k > 0) となります Dword アライメントモードおよびアドレスアライメントの両モードでは 転送は 16 ディスクリプターバイトから始まり その直後にペイロードバイトが続きます m_axis_cq_tvalid 信号は パケットが送信される間アサートされたままになります m_axis_cq_tready をディアサートしてビートを適時延ばすことができます AXI4-Stream インターフェイス信号 m_axis_cq_tkeep ( 各 Dword 位置に 1 つ ) は ディスクリプター およびディスクリプターとペイロード間に挿入される NULL バイトを含む パケットの有効な Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされます パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り tkeep ビットを 0 にできます m_axis_cq_tlast 信号は必ずパケットの最後のビートでアサートされます CQ インターフェイスでは m_axis_cq_tuser バスに First Byte イネーブルビットと Last Enable ビットも含まれます これらのビットはパケットの最初のビートで有効になり ペイロードの最初と最後の Dword の有効バイトを指定します m_axi_cq_tuser バスは ユーザーインターフェイスに関連するロジックを簡潔なものにするため または追加の機能をサポートするために利用可能な情報信号をいくつか提供します ディスクリプターがこのバス上にある場合 各パケットの最初のビートで sop 信号がアサートされます バイトイネーブル出力 byte_en[31:0] ( 各バイトレーンに 1 つ ) はペイロードの有効バイトを示します byte_en のビットは有効なペイロードバイトが対応するレーンに存在する場合にのみアサートされます ( つまり ディスクリプターおよびパディングバイトに関してはディスクリプターとペイロード間にアサートされない ) ペイロードサイズが 2 Dword 以下の場合を除き アサートされたバイトイネーブルビットはペイロードの開始から常に連続します 1 Dword や 2 Dword の書き込みでは バイトイネーブルは非連続にできます その他の特殊なケースとして byte_en ビットがすべて 0 にセットされて統合ブロックが 1 Dword のペイロードを転送するときの 長さ 0 のメモリ書き込みが挙げられます つまり あらゆるケースでユーザーロジックは byte_en 信号を直接使用して 関連するバイトをメモリへ書き込むことができます Dword アライメントモードでは ペイロードの最初の有効バイトのアドレスに基づいてディスクリプターの最後と最初のペイロードバイト間に または 3 バイト位置分のギャップが存在することがあります ペイロードにある最初の有効バイトの実際の位置は m_axis_cq_tuser バスの first_be[3:0] または byte_en[31:0] のいずれかを用いて判断できます 受信した TLB に Transaction Processing Hint が含まれる場合 統合ブロックは m_axis_cq_tuser バスの信号でヒント (TPH ステアリングタグおよびステアリングタグタイプ ) に関連するパラメーターを転送します UltraScale+ Device Block for PCIe v

119 X-Ref Target - Figure 3-18 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] DESC 0 DESC 2 DW 0 DW 0 DW 2 DW n-1 DESC 1 DESC 3 DW 1 DW 1 DW 3 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[1:0] 0x3 0x3 0x3 0x1 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] (last_be) m_axis_cq_tuser[7:4] FIRST BE LAST BE (byte_en[3:0]) m_axis_cq_tuser[11:8] (byte_en[7:4]) m_axis_cq_tuser[15:12] 0 FIRST_BE FIRST_BE 0xF 0xF LAST_BE 0 0xF 0xF 0xF (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] X12358 図 3-18: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 64 ビットインターフェイス ) X-Ref Target - Figure 3-19 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] m_axis_cq_tdata[95:64] m_axis_cq_tdata[127:96] DESC 0 DW 0 DW 0 DW n-1 DESC 1 DW 1 DW 1 DESC 2 DW 2 DW 2 DESC 3 DW 3 DW 3 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[3:0] 0xF 0xF 0xF 0x1 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] (last_be) m_axis_cq_tuser[7:4] (byte_en[3:0]) m_axis_cq_tuser[11:8] (byte_en[7:4]) m_axis_cq_tuser[15:12] (byte_en[11:8]) m_axis_cq_tuser[19:16] (byte_en[15:12]) m_axis_cq_tuser[23:20] FIRST BE LAST BE 0 FIRST_BE 0xF 0xF LAST_BE 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] 図 3-19: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

120 X-Ref Target - Figure 3-20 図 3-20: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 256 ビットインターフェイス ) 図 3-21 図 3-22 および図 3-23 のタイミング図は CQ インターフェイスを介してリンクから受信したメモリ書き込み TLP のアドレスアライメント転送を および 256 ビット別に示しています 図示する目的で メモリに書き込まれるデータの開始 Dword アドレスは 整数 m > 0 のとき (m ) と仮定しています サイズは n Dword と仮定し n = k *32+29 (k > 0) となります UltraScale+ Device Block for PCIe v

121 アドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します ペイロードの最初の有効バイトのアドレスに基づいて ペイロードの最初のバイトはどのバイトレーンにも出力できます ディスクリプターとペイロード間のギャップにおいて keep 出力の m_axis_cq_tkeep はアクティブ High に保持されます ペイロードにある最初の有効バイトの実際の位置は ディスクリプターにあるアドレスの LSB ( 最下位ビット ) または m_axis_cq_tuser バスのバイトイネーブルビット byte_en[31:0] のいずれかを用いて判断できます 2 Dword 以下の書き込みの場合 byte_en にセットされている 1 はペイロードの開始から連続したものにできません 長さ 0 のメモリ書き込みの場合 ペイロードバイトに対して byte_en ビットがすべて 0 にセットされて統合ブロックが 1 Dword のペイロードを転送します X-Ref Target - Figure 3-21 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] DESC 0 DESC 2 DW 1 DW n-2 DESC 1 DESC 3 DW 0 DW 0 DW 2 DW n-1 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[1:0] 0x3 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] (last_be) m_axis_cq_tuser[7:4] FIRST BE LAST BE (byte_en[3:0]) m_axis_cq_tuser[11:8] 0 0 0xF 0xF (byte_en[7:4]) m_axis_cq_tuser[15:12] 0 FIRST_BE FIRST_BE 0xF 0xF LAST_BE (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] X12355 図 3-21: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 64 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

122 X-Ref Target - Figure 3-22 user_clk m_axis_cq_tdata[31:0] DESC 0 DW 3 DW n-2 m_axis_cq_tdata[63:32] DESC 1 DW 0 DW 0 DW 4 DW n-1 m_axis_cq_tdata[95:64] DESC 2 DW 1 DW 1 DW 5 m_axis_cq_tdata[127:96] DESC 3 DW 2 DW 2 DW 6 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[3:0] 0xF 0xF 0xF 0x3 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] FIRST BE (last_be) m_axis_cq_tuser[7:4] LAST BE (byte_en[3:0]) m_axis_cq_tuser[11:8] 0 0 0xF 0xF (byte_en[7:4]) m_axis_cq_tuser[15:12] 0 FIRST_BE FIRST_BE 0xF 0xF LAST_BE (byte_en[11:8]) m_axis_cq_tuser[19:16] 0 0xF 0xF 0xF 0 (byte_en[15:12]) m_axis_cq_tuser[23:20] 0 0xF 0xF 0xF 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] X12356 図 3-22: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

123 X-Ref Target - Figure 3-23 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] m_axis_cq_tdata[95:64] m_axis_cq_tdata[127:96] m_axis_cq_tdata[159:128] m_axis_cq_tdata[191:160] m_axis_cq_tdata[223:192] m_axis_cq_tdata[255:224] DESC 0 DW 7 DW 7 DW n-6 DESC 1 DW 0 DW 8 DW 8 DW n-5 DESC 2 DW 1 DW 9 DW 9 DW n-4 DESC 3 DW 2 DW 10 DW 10 DW n-3 DW 3 DW 11 DW 11 DW n-2 DW 4 DW 12 DW 12 DW n-1 DW 5 DW 13 DW 13 DW 6 DW 14 DW 14 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[7:0] 0xFF 0xFF 0xFF 0x3F m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] (last_be) m_axis_cq_tuser[7:4] (byte_en[3:0]) m_axis_cq_tuser[11:8] FIRST BE LAST BE 0 0 0xF 0xF 0xF (byte_en[7:4]) m_axis_cq_tuser[15:12] (byte_en[11:8]) m_axis_cq_tuser[19:16] (byte_en[15:12]) m_axis_cq_tuser[23:20] (byte_en[19:16]) m_axis_cq_tuser[27:24] (byte_en[23:20) m_axis_cq_tuser[31:28] (byte_en[27:24]) m_axis_cq_tuser[35:32] (byte_en[31:28]) m_axis_cq_tuser[39:36] 0 FIRST BE 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF LAST BE 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] 図 3-23: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 256 ビットインターフェイス ) X12357 コンプリーターメモリ読み出し AXI4-Stream パケットに 16 バイトディスクリプターしか含まれない場合を除いて メモリ読み出しリクエストはメモリ書き込みリクエストと同様にコンプリーターリクエストインターフェイス全体で転送されます 図 3-24 図 3-25 および図 3-26 のタイミング図は コンプリーターリクエスト (CQ) インターフェイスを介してリンクから受信したメモリ読み出し TLP の転送を および 256 ビット別に示しています パケットは 64 ビットインターフェイスでは連続する 2 ビートを使用して転送されますが 128 ビットまたは 256 ビットインターフェイスでは 1 ビートで転送されます m_axis_cq_tvalid 信号は パケットが送信される間アサートされたままになります m_axis_cq_tready をディアサートしてビートを適時延ばすことができます m_axis_cq_tuser バスの sop 信号は 最初のディスクリプターバイトがバスに存在する場合アサートされます UltraScale+ Device Block for PCIe v

124 X-Ref Target - Figure 3-24 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] DESC 0 DESC 0 DESC 2 DESC 1 DESC 1 DESC 3 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[1:0] 0x3 0x3 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] FIRST BE FIRST BE (last_be) m_axis_cq_tuser[7:4] LAST BE LAST BE (byte_en[7:0]) m_axis_cq_tuser[15:8] 0 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] 図 3-24: コンプリーターリクエストインターフェイスでのメモリ読み出しトランザクション (64 ビットインターフェイス ) X-Ref Target - Figure 3-25 user_clk m_axis_cq_tdata[31:0] m_axis_cq_tdata[63:32] m_axis_cq_tdata[95:64] m_axis_cq_tdata[127:96] DESC 0 DESC 0 DESC 1 DESC 1 DESC 2 DESC 2 DESC 3 DESC 3 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[3:0] 0xF 0xF m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] FIRST BE FIRST BE (last_be) m_axis_cq_tuser[7:4] LAST BE LAST BE (byte_en[15:0]) m_axis_cq_tuser[23:8] 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] 図 3-25: コンプリーターリクエストインターフェイスでのメモリ読み出しトランザクション (128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

125 X-Ref Target - Figure 3-26 user_clk m_axis_cq_tdata[31:0] DESC 0 DESC 0 m_axis_cq_tdata[63:32] DESC 1 DESC 1 m_axis_cq_tdata[95:64] DESC 2 DESC 2 m_axis_cq_tdata[127:96] DESC 3 DESC 3 m_axis_cq_tdata[255:128] m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[7:0] 0x0F 0x0F m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] FIRST BE FIRST BE (last_be) m_axis_cq_tuser[7:4] LAST BE LAST BE (byte_en[31:0]) m_axis_cq_tuser[39:8] 0 0 (sop) m_axis_cq_tuser[40] (discontinue) m_axis_cq_tuser[41] X12354 図 3-26: コンプリーターリクエストインターフェイスでのメモリ読み出しトランザクション (256 ビットインターフェイス ) 最初の Dword と最後の Dword の読み出しリクエストに関連するバイトイネーブルビットは m_axis_cq_tuser 側帯波バスの統合ブロックで提供されます これらのビットは最初のディスクリプターバイトの転送中に有効になり リクエストに関連するバイト単位の開始アドレスとバイトカウントを判断する目的で使用する必要があります 1 Dword や 2 Dword の読み出しといった特殊なケースでは バイトイネーブルは非連続にできます それ以外では バイトイネーブルは連続しています Dword カウントフィールドが 1 にセットされ 最初のバイトイネーブルと最後のバイトイネーブルが 0 にセットされた状態で 長さ 0 のメモリ読み出しが CQ インターフェイスで送信されます ユーザーアプリケーションは コンプリーションを用いて各メモリ読み出しリクエストに応答する必要があります 読み出しによって要求されたデータは 1 つのコンプリーションまたは複数のスプリットコンプリーションとして送信できます これらのコンプリーションは統合ブロックのコンプリーターコンプリーション (CC) インターフェイスを介して送信する必要があります 2 つの異なるリクエストに対応するコンプリーションは順序を問わず送信できますが 同じリクエストに対応するスプリットコンプリーションについては順序を追って送信する必要があります CC インターフェイスの動作は 128 ページの コンプリーターコンプリーションインターフェイスの動作 を参照してください UltraScale+ Device Block for PCIe v

126 I/O 書き込み CQ インターフェイスにおける I/O 書き込みリクエストの転送は 1 Dword ペイロードでのメモリ書き込みリクエストと同様です 転送は 128 ビットディスクリプターから始まり その後 1 Dword ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後に Dword ペイロードが続きます アドレスアライメントモードを使用する場合 ディスクリプターの後に Dword ペイロードが新しいビートで供給され データパスにおけるそのアライメントはディスクリプターのアドレスに基づきます m_axis_cq_tuser 内の First Byte Enable ビットはペイロードにおける有効なバイトを示します バイトイネーブルビット byte_en もこの情報を提供します I/O 書き込みはノンポステッドトランザクションであるため ユーザーロジックはこれに対してデータペイロードを含まないコンプリーションを用いて応答する必要があります I/O リクエストに対するコンプリーションは順序を問わず送信できます I/O 書き込みトランザクションに関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドに CA ( コンプリーターの中断 ) または UR ( サポートされないリクエスト ) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 128 ページの コンプリーターコンプリーションインターフェイスの動作 を参照してください I/O 読み出し CQ インターフェイスにおける I/O 読み出しリクエストの転送はメモリ読み出しリクエストと同様で そこにはディスクリプターしか含まれません 要求されたデータの長さは常に 1 Dword となり m_axis_cq_tuser 内の First Byte Enable ビットは読み出し対象の有効バイトを示します ユーザーロジックは 1 Dword のコンプリーション ( またはエラーの場合はデータを含まないコンプリーション ) で I/O 読み出しリクエストに応答する必要があります 2 つの異なる I/O 読み出しリクエストに対応するコンプリーションは順序を問わず送信できます I/O 読み出しトランザクションに関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドに CA ( コンプリーターの中断 ) または UR ( サポートされないリクエスト ) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 128 ページの コンプリーターコンプリーションインターフェイスの動作 を参照してください コンプリーターリクエストインターフェイスでのアトミック操作 コンプリーターリクエストインターフェイスにおけるアトミック操作リクエストの転送は メモリ書き込みリクエストと同様です アトミック操作のペイロードの範囲は 1 Dword から 8 Dword までで 開始アドレスは必ず Dword 境界に揃えられます 転送は 128 ビットディスクリプターから始まり その後ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後に最初の Dword ペイロードが続きます アドレスアライメントモードを使用する場合 ディスクリプターの後にペイロードが新しいビートで開始し そのアライメントはディスクリプターのアドレスに基づきます m_axis_cq_tkeep 出力は ペイロードの終わりを示します また m_axis_cq_tuser 内の byte_en 信号は ペイロード内の有効バイトを示します m_axis_cq_tuser 内の First Byte Enable と Last Byte Enable ビットはアトミック操作に使用できません アトミック操作はノンポステッドトランザクションであるため ユーザーロジックはこれに対して操作結果を含むコンプリーションを用いて応答する必要があります 操作に関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドにコンプリーターの中断 (CA) またはサポートされないリクエスト (UR) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 128 ページの コンプリーターコンプリーションインターフェイスの動作 を参照してください コンプリーターリクエストインターフェイスでのメッセージリクエスト ペイロードが常に存在するわけではないことを除いて CQ インターフェイスにおけるメッセージの転送はメモリ書き込みリクエストと同様です 転送は 128 ビットディスクリプターから始まり ペイロードがある場合はその後ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後にペイロードが続きます アドレスアライメントモードを使用する場合 ディスクリプターの後にペイロードの最初の Dword が新しいビートで供給され バイトレーン 0 で必ず開始します m_axis_cq_tlast および m_axis_cq_tkeep 信号のステートからペイロードの終わりを判断できます また m_axis_cq_tuser 内の byte_en 信号は ペイロード内の有効バイトを示します m_axis_cq_tuser 内の First Byte Enable と Last Byte Enable ビットはメッセージトランザクションに使用できません UltraScale+ Device Block for PCIe v

127 転送の中断 関連するペイロードを含むリクエストの場合 転送されたペイロードにエラーがあると 統合ブロックは m_axis_cq_tuser バスの discontinue 信号をパケットの最後のビートで (m_axis_cq_tlast と共に ) アサートしてこのエラーを通知できます これは 内部メモリからデータを読み出す間に統合ブロックが訂正不可能なエラーを検出したときに発生します パケットの最後のビートで discontinue 信号がアサートされたことを検出した場合 ユーザーアプリケーションはパケット全体を破棄する必要があります これは 統合ブロックでは致命的エラーと認識されます ノンポステッドリクエストの選択的フロー制御 PCI Express Base Specification [ 参照 2] では ユーザーアプリケーションがノンポステッドトランザクションを受信できなくても コンプリーターリクエストインターフェイスはこのトランザクションを提供し続けることが規定されています この機能を有効にするために 統合ブロックはクレジットベースのフロー制御メカニズムを CQ インターフェイスにインプリメントします このインターフェイスを介して ユーザーロジックはポステッドリクエストに影響を及ぼすことなくノンポステッドリクエストのフローを制御できます ユーザーロジックは pcie_cq_np_req 信号を使用してノンポステッドリクエストを受信するためのバッファーの利用可否を伝えます 利用可能なクレジットが 0 ではない場合にのみ コアはノンポステッドリクエストを送信します クレジット数が不足しているためノンポステッドリクエストの送信が中断されている間 統合ブロックはポステッドリクエストを送信し続けます ノンポステッドリクエストの送信に対してクレジットメカニズムによってバックプレッシャーが適用されない場合 統合ブロックはリンクから受信した同じ順序でポステッドリクエストおよびノンポステッドリクエストを送信します 統合ブロックは コンプリーターリクエストインターフェイスでノンポステッドリクエストに利用可能なクレジットを追跡するための内部クレジットカウンターを備えています 次のアルゴリズムを使用して利用可能なクレジットの追跡を維持します リセットでは カウンターは 0 にセットされます 統合ブロックのリセットが解除されたら クロックサイクルごとにカウンターは次のような動作となります pcie_cq_np_req がアクティブ High で ノンポステッドリクエストがこのサイクルで送信されない場合 クレジットカウントが 32 の飽和限界に達していなければ 1 つずつインクリメントされます pcie_cq_np_req が Low で ノンポステッドリクエストがこのサイクルで送信される場合 クレジットカウントがまだ 0 になっていなければ 1 つずつデクリメントされます 上記に該当しない場合 クレジットカウントの値は変わりません クレジットカウントが 1 以上の場合 統合ブロックはノンポステッド TLP の送信を開始します ユーザーアプリケーションは ノンポステッドリクエストを受信できる状態になるたびに pcie_cq_np_req に 1 サイクルのパルスを提供するか ノンポステッドリクエストに対する選択的なバックプレッシャーを実行する必要がない場合は永久的にアサートされた状態に維持します クレジットカウントが常に 0 以外の場合 統合ブロックはリンクから受信した同じ順序でポステッドリクエストおよびノンポステッドリクエストを送信します カウントが一定時間 0 の状態が続くと ノンポステッドリクエストは統合ブロック FIFO に保管できます その後 クレジットカウントが 0 以外になると 統合ブロックは既に送信されたポステッドリクエストよりも前に到達して保管していたノンポステッドリクエストを先に送信し その後リンクから受信した順にリクエストを送信します pcie_cq_np_req 信号のアサートおよびディアサートは コンプリーターリクエストインターフェイス上のパケット送信と揃う必要はありません 出力 (pcie_cq_np_req_count[5:0]) で現在のクレジットカウント値をモニタリングできます カウンターは 32 が最大です 内部パイプラインの遅延が原因となり コアが pcie_cq_np_req 入力でのパルスを受信してから pcie_cq_np_req_count 出力をアップデートするまでの間には数サイクルの遅延が生じます このため ユーザーアプリケーションにある程度のバッファー空間がある場合は あらかじめクレジットを提供しておくと クレジット不足でコアがノンポステッドリクエストを保持することがなくなります UltraScale+ Device Block for PCIe v

128 コンプリーターコンプリーションインターフェイスの動作 図 3-27 に コアのコンプリーターコンプリーションインターフェイスに関連する信号を示します コアは このインターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します X-Ref Target - Figure 3-27 UltraScale FPGA Gen3 Integrated Block for PCIe PCIe Completer Completion Interface AX14-Stream Slave s_axis_cc_tdata[255:0] s_axis_cc_tparity[31:0] s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tlast discontinue AX14-Stream Master Client Application PCIe Completer-Side Interface s_axis_cc_tuser X12440 図 3-27: コンプリーターコンプリーションインターフェイスの信号 コアは コンプリーターコンプリーション (CC) インターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します パケットは 96 ビットディスクリプターから始まり コンプリーションにペイロードが含まれる場合はその後をデータが続きます CC インターフェイスは 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 有効なデータの最初のバイトは レーン n = (12 + A mod 4) mod w に現れる必要があります この場合の A は 送信されるデータブロックのバイト単位の開始アドレス ( ディスクリプターの下位アドレスフィールドで伝搬 ) で w は インターフェイス幅 (8 16 または 32) です アドレスアライメントモードの場合 データはディスクリプターが終了した後の新規ビートで常に開始します メモリまたは I/O の読み出しリクエストに対してコンプリーションペイロードを送信する場合 その最初の有効バイトは レーン n = A mod w に現れます その他すべてのコンプリーションの場合 ペイロードはバイトレーン 0 に揃えられます コンプリーターコンプリーションディスクリプターのフォーマット ユーザーアプリケーションは 統合ブロックの CC インターフェイスに独立した AXI4-Stream パケットとしてコンプリーターリクエストに対するコンプリーションデータを送信します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 12 バイト長となり コンプリーションパケットの最初の 12 バイトで送信されます ディスクリプターは 64 ビットインターフェイスでは最初の 2 サイクル間で送信され 128 ビットまたは 256 ビットの場合は最初のサイクルで送信されます ユーザーアプリケーションが 1 つのリクエストのコンプリーションデータを複数のスプリットコンプリーションに分割する場合は 個別にディスクリプターを備えた AXI4-Stream パケットとして各スプリットコンプリーションを送信する必要があります コンプリーターコンプリーションディスクリプターのフォーマットは 図 3-28 を参照してください コンプリーターリクエストディスクリプターの各フィールドの詳細は 表 3-9 で説明しています UltraScale+ Device Block for PCIe v

129 X-Ref Target - Figure 3-28 図 3-28: コンプリーターコンプリーションディスクリプターのフォーマット 表 3-9: コンプリーターコンプリーションディスクリプターのフィールド ビットインデックスフィールド名説明 メモリ読み出しのコンプリーションの場合 このフィールドは 送信されるメモリブロックのバイト単位の開始アドレスの下位 7 ビットに設定される必要があります 最初の ( または唯一の ) コンプリーションの場合 コンプリーターは 次に示すようにリクエストの最初の Dword に対応するバイトイネーブルで構成されるバイト単位のアドレスの 2 ビットと連結された リクエストアドレスの下位 5 ビットからこのフィールドを生成できます first_be[3:0] 下位アドレス [1:0] 4'b0000 2'b00 6:0 Lower Address ( 下位アドレス ) 4'bxxx1 4'bxx10 4'bx100 2'b00 2'b01 2'b10 4'b1000 2'b11 9:8 Address Type ( アドレスタイプ ) 後続のコンプリーションの場合 下位アドレスフィールドは 64 バイトの RCB (Read Completion Boundary) 値を用いてルートコンプレックスによって生成されたコンプリーションを除いて 常に 0 になります この場合 下位アドレスフィールドの下位 6 ビットが必ず 0 になり 下位アドレスフィールドの最上位ビットが 64 バイトデータペイロードのアライメントに応じてトグルします その他のコンプリーションの場合 この下位アドレスはすべて 0 にセットされる必要があります このフィールドは メモリトランザクションおよびアトミック操作のコンプリーション用に定義されます これらのコンプリーションの場合 対応するリクエストのディスクリプターの AT ビットをユーザーがこのフィールドへコピーする必要があります その他のコンプリーションの場合 このフィールドは 0 にセットされる必要があります UltraScale+ Device Block for PCIe v

130 表 3-9: コンプリーターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 28: :32 45:43 46 Byte Count ( バイトカウント ) Locked Read Completion ( ロックされた読み出しコンプリーション ) Dword Count (Dword カウント ) Completion Status ( コンプリーションステータス ) Poisoned Completion ( ポイズンコンプリーション ) これらの 13 ビットは 0 ~ 4,096 バイトの範囲の値に設定できます シングルコンプリーションを使用してメモリ読み出しリクエストが完了する場合 このバイトカウント値がペイロードサイズをバイト単位で示します I/O の読み出しコンプリーションや I/O の書き込みコンプリーションの場合 このフィールドは 4 にセットされる必要があります 長さ 0 のメモリ読み出しに対するコンプリーションを送信している間 バイトカウント値は 1 にセットされる必要があり ダミーのペイロードとして 1 Dword がディスクリプターの後に送信される必要があります 各メモリ読み出しコンプリーションでは このバイトカウントフィールドがリクエストを完了するのに必要となる残りのバイト数を示します ( コンプリーションで返ってきたバイト数を含む ) 複数のコンプリーションを使用してメモリ読み出しリクエストが完了する場合 各コンプリーションのこのバイトカウント値は 先行するコンプリーションが示す値から先行するコンプリーションで返ってきたバイト数を引いた値となります メモリ読み出しリクエストを完了するのに必要な合計バイト数の計算式は 132 ページの表 3-10 を参照してください コンプリーションが Locked Read ( ロックされた読み出し ) リクエストに応答する場合 このビットをセットする必要があります その他のコンプリーションの場合 このフィールドは 0 にセットされる必要があります これらの 11 ビットは 現在のパケットのペイロードサイズを示します (Dword) 範囲は 0 ~ 1000 Dword です このフィールドは I/O 読み出しのコンプリーションには 1 にセットされ I/O 書き込みのコンプリーションには 1 にセットされる必要があります 長さ 0 のメモリ読み出しに対してコンプリーションを送信している間 この Dword カウントフィールドは 1 にセットされている必要があります UR または CA コンプリーションを送信している間 この Dword カウントフィールドは 0 にセットされている必要があります その他の場合 この Dword カウントは その時点のパケットのペイロードの実際の Dword 数に対応する必要があります これらのビットは 送信されるコンプリーションのタイプに基づいてセットされる必要があります 有効な設定は次のとおりです 000: トランザクションが正常に完了 001: サポートされないリクエスト (UR) 100: コンプリーターの中断 (CA) このビットは 送信されるコンプリーション TLP にポイズニングを適用する場合に使用できます ユーザーアプリケーションがディスクリプターの後に続くデータブロック内にエラーを検出し PCI Express のデータポイズニング機能を使用してこのエラー情報を伝える場合以外は このビットはすべてのコンプリーションで 0 にセットする必要があります 63:48 Requester ID ( リリクエストに関連する PCI リクエスター ID です ( リクエストからコピー ) クエスター ID) 71:64 Tag ( タグ ) リクエストに関連する PCIe タグです ( リクエストからコピー ) UltraScale+ Device Block for PCIe v

131 表 3-9: コンプリーターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 79:72 87: :89 Target Function/ Device Number ( ターゲットファンクション / デバイス番号 ) Completer Bus Number ( コンプリーターバス番号 ) Completer ID Enable Transaction Class (TC) 94:92 Attributes ( 属性 ) 95 Force ECRC コンプリーターファンクションのファンクション番号です ユーザーアプリケーションは 常にファンクション番号を提供する必要があります ARI が使用される場合は このフィールドの全 8 ビットにターゲットファンクション番号を設定する必要があります その他の場合は ビット [74:72] をターゲットファンクション番号に設定する必要があります ユーザーアプリケーションは 対応するリクエストのディスクリプターの Target Function フィールドからこの値をコピーする必要があります その他の場合は ビット [74:72] をターゲットファンクション番号に設定する必要があります ARI が使用されていない場合で 統合ブロックがルートコンプレックスとしてコンフィギュレーションされている場合は ユーザーアプリケーションがコンプリーターの 5 ビットのデバイス番号をビット [79:75] に提供する必要があります ARI が使用されていない場合で 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合は ユーザーアプリケーションがオプションでコンプリーターの 5 ビットのデバイス番号をビット [79:75] に提供することが可能です デバイス番号がビット [79:75] に提供される場合は ユーザーアプリケーションがディスクリプターの Completer ID Enable ビットをセットする必要があります この値は コンプリーション TLP を送信する際に統合ブロックで使用されます ( 提供されない場合は 統合ブロックがコンフィギュレーションリクエストから取得して格納したデバイス番号値を使用 ) コンプリーターファンクションに関連するバス番号です 統合ブロックがルートコンプレックスとしてコンフィギュレーションされている場合 ユーザーアプリケーションがこのフィールドにコンプリーターの 8 ビットのバス番号を提供する必要があります 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合 ユーザーアプリケーションはオプションとしてこのフィールドにバス番号を提供できます バス番号がこのフィールドに提供される場合は ユーザーアプリケーションがディスクリプターの Completer ID Enable ビットをセットする必要があります この値は コンプリーション TLP を送信する際に統合ブロックで使用されます ( 提供されない場合は 統合ブロックがコンフィギュレーションリクエストから取得して格納したバス番号値を使用 ) このフィールドは Completer ID フィールドの構成に使用されるバス番号やデバイス番号をユーザーアプリケーションが提供することを可能にします このフィールドは エンドポイントコンフィギュレーションにのみ適用可能です このフィールドが 0 の場合 統合ブロックはキャプチャしたバス番号やデバイス番号を使用してコンプリーター ID を構成します このフィールドが 1 の場合 統合ブロックはディスクリプターに提供されたバス番号やデバイス番号を使用してコンプリーター ID を構成します リクエストに関連する PCIe トランザクションクラス (TC) です ユーザーアプリケーションは 関連するリクエストのディスクリプターの TC フィールドからこの値をコピーする必要があります リクエストに関連する PCIe 属性です ( リクエストからコピー ) ビット 92 は No Snoop ビット ビット 93 は Relaxed Ordering ビット ビット 94 は ID-Based Ordering ビットです 強制的に ECRC を挿入します このビットを 1 にセットすると コンプリーションを送信するファンクションで ECRC 機能が有効に設定されていない場合でも 統合ブロックがコンプリーション TLP に ECRC を含む TLP Digest を追加します UltraScale+ Device Block for PCIe v

132 表 3-10: first_be[3:0] last_be[3:0] および Dword Count[10:0] からのバイトカウント計算 first_be[3:0] last_be[3:0] 合計バイトカウント 1xx x x xxx1 1xxx Dword_count 4 xxx1 01xx (Dword_count 4) -1 xxx1 001x (Dword_count 4) -2 xxx (Dword_count 4) -3 xx10 1xxx (Dword_count 4) -1 xx10 01xx (Dword_count 4) -2 xx10 001x (Dword_count 4) -3 xx (Dword_count 4) -4 x100 1xxx (Dword_count 4) -2 x100 01xx (Dword_count 4) -3 x x (Dword_count 4) -4 x (Dword_count 4) xxx (Dword_count 4) xx (Dword_count 4) x (Dword_count 4) (Dword_count 4) -6 Successful Completion (SC: 正常な完了 ) ステータスのコンプリーション転送 ユーザーアプリケーションは コンプリーターリクエストインターフェイスから受信したすべてのノンポステッドリクエストに対して コアの CC インターフェイスにコンプリーションを返す必要があります リクエストがエラーなしで完了すると ユーザーアプリケーションは Successful Completion (SC) ステータスのコンプリーションを返します これらのコンプリーションには リクエストタイプによってペイロードが含まれる場合と含まれない場合があります さらに データブロックのサイズが設定した最大ペイロードサイズを超える場合は リクエストに対応するデータが複数のスプリットコンプリーションに分割されます これは 必要に応じてユーザーロジックがデータブロックを複数のスプリットコンプリーションに分割します ユーザーアプリケーションは コンプリーターコンプリーションインターフィエスを介して各スプリットコンプリーションを 12 バイトのディスクリプターを含む AXI4-Stream パケットとして送信する必要があります UltraScale+ Device Block for PCIe v

133 このセクションのサンプルタイミングでは 送信されるデータブロックの開始 Dword ( ディスクリプターの下位アドレスのビット [6:2] で伝搬 ) は (m *8+1) と仮定されています ( 整数 m) データブロックのサイズは n Dword と仮定し n = k * (k > 0) となります CC インターフェイスは 2 つのデータアライメントモード (Dword アライメントモード アドレスアライメントモード ) をサポートします 図 3-29 図 3-30 および図 3-31 のタイミング図は CC インターフェイスを介すユーザーアプリケーションからの Dword アライメント転送を インターフェイス幅 および 256 ビット別に示しています この場合 ペイロードの最初の Dword がディスクリプターの直後で開始しています データブロックが 4 バイトの倍数でない場合 またはペイロードの開始が Dword の境界に揃っていない場合は ペイロードの開始が Dword の境界に揃うように またペイロードが Dword の倍数値となるように ユーザーアプリケーションは NULL を追加する必要があります たとえば データブロックがバイトアドレス 7 から開始し サイズが 3 バイトの場合は 最初のバイトの前に NULL バイトを 3 つ追加し 2 Dword の長さにするためにブロックの終わりに NULL バイトを 2 つ追加する必要があります また 不連続な読み出しの場合は データブロック内のすべてのバイトが有効として返されるとは限りません このような場合は 必要に応じて有効バイトの間にある隙間に NULL バイトを追加して 正しい位置にある有効なバイトを返す必要があります インターフェイスには ペイロード内の有効なバイトを示す信号がありません これは リクエスターがリクエスト内のバイトイネーブルを追跡してコンプリーションから無効なバイトを破棄する役割を果たすため 必要ありません Dword アライメントモードでは 転送は 12 ディスクリプターバイトから始まり その直後にペイロードバイトが続きます ユーザーアプリケーションは パケットが送信される間 s_axis_cc_tvalid 信号をアサートしたままに保持する必要があります パケット送信中に s_axis_cc_tvalid がディアサートされると 統合ブロックはこれをエラーとして処理し リンク上の対応するコンプリーション TLP を無効にしてデータ破損を回避します またユーザーアプリケーションは パケットの最後のビートで s_axis_cc_tlast をアサートします 統合ブロックは データの受信準備が整っていない場合に 任意のサイクルで s_axis_cc_tready をディアサートできます 統合ブロックが s_axis_cc_tready をディアサートしたクロックサイクル内では ユーザーアプリケーションは CC インターフェイス上の値を変更できません X-Ref Target - Figure 3-29 user_clk s_axis_cc_tdata[31:0] DESC 0 DESC 2 DW 1 DW 1 DW n-1 s_axis_cc_tdata[63:32] DESC 1 DW 0 DW 2 DW 2 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[1:0] 0x3 0x3 0x3 0x1 s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12349 図 3-29: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 (Dword アライメントモード 64 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

134 X-Ref Target - Figure 3-30 user_clk s_axis_cc_tdata[31:0] s_axis_cc_tdata[63:32] s_axis_cc_tdata[95:64] s_axis_cc_tdata[127:96] DESC 0 DW 1 DW 5 DW 5 DW n-3 DESC 1 DW 2 DW 6 DW 6 DW n-2 DESC 2 DW 3 DW 7 DW 7 DW n-1 DW 0 DW 4 DW 8 DW 8 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[3:0] 0xF 0xF 0xF 0x7 s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12350 図 3-30: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 (Dword アライメントモード 128 ビットインターフェイス ) X-Ref Target - Figure 3-31 user_clk s_axis_cc_tdata[31:0] s_axis_cc_tdata[63:32] s_axis_cc_tdata[95:64] s_axis_cc_tdata[127:96] s_axis_cc_tdata[159:128] s_axis_cc_tdata[191:160] s_axis_cc_tdata[223:192] s_axis_cc_tdata[255:224] DESC 0 DW 5 DW 5 DW n-7 DESC 1 DW 6 DW 6 DW n-6 DESC 2 DW 7 DW 7 DW n-5 DW 0 DW 8 DW 8 DW n-4 DW 1 DW 9 DW 9 DW n-3 DW 2 DW 10 DW 10 DW n-2 DW 3 DW 11 DW 11 DW n-1 DW 4 DW 12 DW 12 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[7:0] 0xFF 0xFF 0xFF 0x7F s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12351 図 3-31: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 (Dword アライメントモード 256 ビットインターフェイス ) アドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します メモリ読み出しのコンプリーションの場合 ペイロードの最初の有効バイトのアドレスに基づいて ペイロードの最初のバイトはどのバイトレーンにも出力できます その他すべてのコンプリーションの場合 ペイロードはバイトレーン 0 で開始する必要があります UltraScale+ Device Block for PCIe v

135 図 3-32 図 3-33 および図 3-34 のタイミング図は コンプリーターコンプリーションインターフェイスを介すメモリ読み出しコンプリーションのアドレスアライメント転送を および 256 ビット別に示しています 図示することを目的として 送信されるデータブロックの開始 Dword アドレス ( ディスクリプターの下位アドレスフィールドのビット [6:2] で伝搬 ) は (m 8+1) と仮定されています ( 整数 m) データブロックのサイズは n Dword と仮定され n = k (k > 0) となります X-Ref Target - Figure 3-32 user_clk s_axis_cc_tdata[31:0] s_axis_cc_tdata[63:32] DESC 0 DESC 2 DW 1 DW n-1 DESC 1 DW 0 DW 0 DW 2 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[7:0] 0x3 0x3 0x3 0x1 s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12346 図 3-32: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 ( アドレスアライメントモード 64 ビットインターフェイス ) X-Ref Target - Figure 3-33 user_clk s_axis_cc_tdata[31:0] DESC 0 DW 3 DW 3 DW n-1 s_axis_cc_tdata[63:32] DESC 1 DW 0 DW 4 DW 4 s_axis_cc_tdata[95:64] DESC 2 DW 1 DW 5 DW 5 s_axis_cc_tdata[127:96] DW 2 DW 6 DW 6 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[7:0] 0xF 0xF 0xF 0x1 s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12347 図 3-33: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 ( アドレスアライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

136 X-Ref Target - Figure 3-34 user_clk s_axis_cc_tdata[31:0] s_axis_cc_tdata[63:32] s_axis_cc_tdata[95:64] s_axis_cc_tdata[127:96] s_axis_cc_tdata[159:128] s_axis_cc_tdata[191:160] s_axis_cc_tdata[223:192] s_axis_cc_tdata[255:224] DESC 0 DW 7 DW 7 DW n-5 DESC 1 DW 0 DW 8 DW 8 DW n-4 DESC 2 DW 1 DW 9 DW 9 DW n-3 DW 2 DW 10 DW 10 DW n-2 DW 3 DW 11 DW 11 DW n-1 DW 4 DW 12 DW 12 DW 5 DW 13 DW 13 DW 6 DW 14 DW 14 s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tkeep[7:0] 0xFF 0xFF 0xFF 0x1F s_axis_cc_tlast (discontinue) s_axis_cc_tuser[0] X12348 図 3-34: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 ( アドレスアライメントモード 256 ビットインターフェイス ) コンプリーションの転送中断 ユーザーアプリケーションは s_axis_cc_tuser バスで discontinue 信号をアサートすることによって ペイロード転送中にいつでもコンプリーターコンプリーションインターフェイス上のコンプリーショントランザクション転送を中断できます 統合ブロックがリンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーアプリケーションは 転送されているコンプリーションに関連するペイロードが含まれている場合に 転送中の任意のタイミングでこの信号をアサートできます また エラーが示されたサイクルでパケットを早期に中断する (s_axis_cc_tlast をアサート ) またはペイロードのすべてのバイトが統合ブロックへ送信されるまで継続してから中断するのいずれかを選択できます 後者の場合 ユーザーアプリケーションがパケットの終了より前に discontinue 信号をディアサートした場合でも 統合ブロックはパケットのその後のサイクルでエラーをスティッキーとして処理します discontinue 信号は s_axis_cc_tvalid がアクティブ High の場合のみアサートされます 統合ブロックは s_axis_cc_tvalid と s_axis_cc_tready が両方ともアサートされている場合にこの信号をサンプルします したがって discontinue 信号がアサートされると s_axis_cc_tready がアサートされるまでディアサートできません 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用して訂正不可能な内部エラーとして 接続される先のルートコンプレックスに対して統合ブロックがエラーをレポートします エラーステータス (UA および CA) のコンプリーション コンプリーターリクエストインターフェイスで受信したリクエストに対して UR ( サポートされないリクエスト ) または CA ( コンプリーション中断 ) で応答する場合 ユーザーアプリケーションは 図 3-28 に示すフォーマットで 3 Dword のコンプリーションディスクリプターを送信し その後にコンプリーションを生成したリクエストの情報を含む 5 Dword を送信する必要があります これらの 5 Dword は 統合ブロックが AER ヘッダーログレジスタにリクエストに関する情報を記録するのに不可欠です UltraScale+ Device Block for PCIe v

137 図 3-35 に UR または CA ステータスのコンプリーションを送信する際に転送される情報のシーケンスを示します この情報は 合計 8 Dword の AXI4-Stream パケットとしてフォーマットされ 次のように組織化されます 最初の 3 Dword には 図 3-28 の形式のコンプリーションディスクリプターが含まれます 4 番目の Dword には リクエストからコピーされた m_axis_cq_tuser 内の次に示す信号のステータスが含まれます m_axis_cq_tuser の First Byte Enable ビット first_be[3:0] m_axis_cq_tuser の Last Byte Enable ビット (last_be[3:0]) Transaction Processing Hint の情報を伝搬する信号 : m_axis_cq_tuser の tph_present tph_type[1:0] および tph_st_tag[7:0] 統合ブロックから受信した 4 Dword のリクエストディスクリプター X-Ref Target - Figure 3-35 DW 1 DW 0 Completion Descriptor DW 1 Completion Descriptor DW DW R tph_st_tag R last_be first _be DW 2 Completion Descriptor DW 2 tph_type[1:0] tph_present DW 5 DW 4 Request Descriptor, DW 1 Request Descriptor, DW 0 DW 7 DW Request Descriptor, DW 3 Request Descriptor, DW 2 X12245 図 3-35: UR/CA コンプリーションの AXI4-Stream パケットの構成 パケット全体を送信するには 64 ビットインターフェイスの場合は 4 サイクル 128 ビットインターフェイスの場合は 2 サイクル 256 ビットインターフェイスの場合は 1 サイクル必要です パケットの転送方法は Dword アライメントモードとアドレスアライメントモードのいずれの場合も同じで Dword を 1 つにまとめて送信します ユーザーアプリケーションは パケットが送信される間 s_axis_cc_tvalid 信号をアサートしたままに保持する必要があります また パケットの最後のビートでは s_axis_cc_tlast をアサートする必要があります 統合ブロックは データの受信準備が整っていない場合に 任意のサイクルで s_axis_cc_tready をディアサートできます 統合ブロックが s_axis_cc_tready をディアサートしたクロックサイクル内では ユーザーアプリケーションは CC インターフェイス上の値を変更できません UltraScale+ Device Block for PCIe v

138 64/128/256 ビットリクエスターインターフェイス リクエスターインターフェイスは ユーザーエンドポイントアプリケーションがバスマスターとして PCIe リンクからホストメモリへの PCI トランザクションを開始できるようにします ルートコンプレックスの場合も このインターフェイスを使用して I/O およびコンフィギュレーションリクエストを開始します このインターフェイスは PCIe リンク上でメッセージを送信するために エンドポイントとルートコンプレックスの両方で使用できます このインターフェイスでのトランザクションは コンプリーターインターフェイスでのトランザクションと同じですが コアとユーザーアプリケーションの役割が逆になります ポステッドトランザクションは 分割できない単一動作として処理されますが ノンポステッドトランザクションはスプリットトランザクションとして処理されます リクエスターインターフェイスは 各方向のデータ転送にそれぞれが用いられる 2 つの個別のインターフェイスで構成されます 各インターフェイスは AXI4-Stream プロトコルに基づき または 256 ビット幅に設定できます リクエスターリクエスト (RQ) インターフェイスはユーザーアプリケーションから統合ブロックへリクエスト ( 関連するペイロードデータを含む ) を転送するために使用され リクエスターコンプリーション (RC) インターフェイスは 統合ブロックがリンクから受信したコンプリーション ( ノンポステッドリクエスト ) をユーザーアプリケーションへ送信するために使用されます これら 2 つのインターフェイスは独立して動作します つまり 統合ブロックが前回のリクエストのコンプリーションを受信する間に ユーザーアプリケーションが RQ インターフェイスを介して新しいリクエストを転送できます リクエスターリクエストインターフェイスの動作 RQ インターフェイスでは ユーザーアプリケーションが各 TLP を AXI4-Stream パケットとして送信します このパケットは 128 ビットディスクリプターから始まり TLP にペイロードが含まれる場合はその後をデータが続きます 図 3-36 に リクエスターリクエストインターフェイスで使用される信号を示します UltraScale+ Device Block for PCIe v

139 X-Ref Target - Figure 3-36 X12443 図 3-36: リクエスターリクエストインターフェイス RQ インターフェイスでは ペイロードの転送において 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 ユーザーロジックはディスクリプターの最後の Dword の直後にペイロードの最初の Dword を提供する必要があります また 最初の Dword の有効なバイトを示すために first_be[3:0] のビットがセットされ ペイロードの最後の Dword の有効なバイトを示すために last_be[3:0] ( バス s_axis_rq_tuser の両部分 ) のビットがセットされる必要があります アドレスアライメントモードの場合 ユーザーアプリケーションは ディスクリプターの最後の Dword の次のビートでペイロードを転送開始する必要があり その最初の Dword は データパス上の任意の Dword 位置に設定できます ユーザーアプリケーションは s_axis_rq_tuser の addr_offset[2:0] 信号を使用してデータパス上の最初の Dword のオフセットを示します Dword アライメントモードの場合と同様に 最初の Dword の有効バイトを示すために first_be[3:0] のビットをセットし ペイロードの最後の Dword の有効バイトを示すために last_be[3:0] のビットをセットする必要もあります 統合ブロックで Transaction Processing Hint 機能が有効に設定されている場合 ユーザーアプリケーションは s_axis_rq_tuser バスに含まれる tph_* 信号を使用して 任意のメモリトランザクションにオプションでヒントを提供できます リクエストにヒントを提供する場合 ユーザーロジックはパケットの最初のビートで UltraScale+ Device Block for PCIe v

140 tph_present をアサートし tph_st_tag[7:0] および tph_st_type[1:0] にそれぞれ TPH ステアリングタグおよびステアリングタグタイプを提供する必要があります 使用するステアリングタグの値を提供する代わりに ユーザーアプリケーションには間接的にステアリングタグを提供するオプションがあります このオプションを実行するには tph_present がアサートされているときに tph_indirect_tag_en 信号を 1 にセットし tph_st_tag[7:0] にインデックスを設置します これで 統合ブロックは インデックスが指すオフセットのリクエスターファンクションと関連付けられているステアリングタグテーブルに格納されたタグを読み出し リクエスト TLP に挿入します リクエスターリクエストディスクリプターのフォーマット ユーザーアプリケーションは リンク上に送信される各リクエストを個別の AXI4-Stream パケットとして 統合ブロックの RQ インターフェイスへ送信する必要があります 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 16 バイト長となり リクエストパケットの最初の 16 バイトで送信されます ディスクリプターは 64 ビットインターフェイスでは最初の 2 サイクル間で送信され 128 ビットまたは 256 ビットの場合は最初のサイクルで送信されます 図 3-37 ~ 図 3-41 に ディスクリプターのフォーマットをリクエストタイプ別に示しています 図 3-37 に示すフォーマットは 転送されているリクエスト TLP がメモリ読み出し / 書き込みリクエスト I/O 読み出し / 書き込みリクエスト またはアトミック操作リクエストのときに適用されます 図 3-38 に示すフォーマットは コンフィギュレーションリクエストに使用されます 図 3-39 に示すフォーマットは ベンダー定義メッセージ ( タイプ 0 またはタイプ 1) 専用です 図 3-40 に示すフォーマットは すべての ATS メッセージ ( 無効なリクエスト 無効なコンプリーション ページリクエスト PRG 応答 ) に使用されます その他のメッセージのディクスリプターについては 図 3-41 に示すフォーマットとなります X-Ref Target - Figure DW + 1 DW Address [63:2] Address Type (AT) Device/Function Device/Function Attr +15 TC Force ECRC +14 DW Bus Completer ID Requester ID Enable +12 Tag 図 3-37: メモリリクエスト I/O リクエスト アトミック操作リクエストのリクエスターリクエストディスクリプターフォーマット +11 Bus Requester ID +10 DW Dword Count Req Type Poisoned Request X12212 UltraScale+ Device Block for PCIe v

141 X-Ref Target - Figure DW Ext. Reg Reserved Number Reg Number DW Reserved DW + 3 DW Attr TC Force ECRC Bus Device/Function Completer ID Requester ID Enable Tag {Bus Number[7:0], Device Number[4:0], Function Number[2:0]} Bus Device/Function Requester ID Req Type Dword count Poisoned Request X12631 図 3-38: コンフィギュレーションリクエストのリクエスターリクエストディスクリプターフォーマット X-Ref Target - Figure DW + 1 DW TL Header Byte Vendor - Defined Header Bytes TL Header Byte 14 TL Header Byte 13 TL Header Byte Vendor ID Bus Device/Function Destination ID DW + 3 DW Attr TC Force ECRC R Msg Code Message Routing Requester ID Enable Tag Bus Device/Function Requester ID Dword Count Req Type Poisoned Request X12214 図 3-39: ベンダー定義メッセージのリクエスターリクエストディスクリプターフォーマット UltraScale+ Device Block for PCIe v

142 X-Ref Target - Figure DW TL Header Bytes DW TL Header Byte 15 TL Header Byte 14 TL Header Byte 13 TL Header Byte 12 TL Header Byte 11 TL Header Byte 10 TL Header Byte 9 TL Header Byte DW DW Attr TC Force ECRC R Message Routing Requester ID Enable Msg Code Tag Device/Function Bus Requester ID Req Type Dword Count Poisoned Request X12211 図 3-40: ATS メッセージのリクエスターリクエストディスクリプターフォーマット X-Ref Target - Figure 3-41 図 3-41: その他メッセージのリクエスターリクエストディスクリプターフォーマット 表 3-11 に コンプリーターリクエストディスクリプターの個別フィールドを示します 表 3-11: リクエスターリクエストディスクリプターのフィールド ビットインデックスフィールド名説明 1:0 Address Type ( アドレスタイプ ) このフィールドは メモリトランザクションおよびアトミック操作専用に定義されます 統合ブロックは このフィールドをリクエスト TLP の TL ヘッダーの AT へコピーします 00: リクエスト内のアドレスは変換されない 01: トランザクションは変換リクエスト 10: リクエスト内のアドレスは変換される 11: 予約 UltraScale+ Device Block for PCIe v

143 表 3-11: リクエスターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 63:2 Address ( アドレス ) 74:64 78: :80 Dword Count (Dword カウント ) Request Type ( リクエストタイプ ) Poisoned Request ( ポイズンリクエスト ) Requester Function/Device Number ( リクエスターファンクション番号 / デバイス番号 ) このフィールドは メモリ I/O およびアトミック操作の各リクエストに適用されます リクエストで指定された最初の Dword のアドレスです ユーザーアプリケーションは 最初と最後の Dword の有効バイトを示すために s_axis_rq_tuser の First_BE および Last_BE ビットをそれぞれセットする必要もあります トランザクションが 32 ビットアドレスを指定する場合 このフィールドのビット [63:32] は 0 になります これらの 11 ビットは 読み出しまたは書き込みの対象となっているブロックのサイズ ( メッセージの場合は メッセージペイロードのサイズ ) を示します (Dword 単位 ) メモリ書き込みリクエスト用の有効な範囲は 0 ~ 256 Dword です メモリ読み出しリクエストには 1 ~ 1024 Dword の有効な範囲があります I/O アクセスの場合 Dword カウントは常に 1 です メモリの読み出し / 書き込みリクエストの長さが 0 の場合 Dword カウントは 1 になり First_BE ビットはすべて 0 にセットされる必要があります 統合ブロックは 供給されるペイロード ( ペイロードを含むリクエスト ) の実際の長さ また統合ブロックの最大ペイロードサイズや読み出しリクエストサイズの設定に対してこのフィールドを照合してチェックするわけではありません トランザクションタイプを特定します トランザクションタイプとそれらのエンコードの詳細は 表 3-8 に示します このビットは 送信されるリクエスト TLP にポイズニングを適用する場合に使用できます この機能は タイプ 0 およびタイプ 1 のコンフィギュレーション書き込みリクエスト以外のすべてのリクエストでサポートされています ユーザーアプリケーションがディスクリプターの後に続くデータブロック内にエラーを検出し PCI Express のデータポイズニング機能を使用してこのエラー情報を伝える場合以外は このビットはすべてのリクエストで 0 にセットする必要があります この機能は タイプ 0 およびタイプ 1 のコンフィギュレーション書き込みリクエスト以外のすべてのリクエストでサポートされています リクエスターファンクションに関連するバス番号です 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合 ユーザーアプリケーションはディスクリプター内の Requester ID Enable ビットを 0b にセットして このフィールドに 8 b0 を提供する必要があります この場合 統合ブロックがコンフィギュレーションリクエストからキャプチャしたバス番号に格納されている値が使用されます それ以外では 統合ブロックがルートコンプレックスとしてコンフィギュレーションされている場合 ユーザーアプリケーションがこのフィールドにリクエスターの 8 ビットのバス番号を提供する必要があります UltraScale+ Device Block for PCIe v

144 表 3-11: リクエスターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 95:88 Requester Bus Number ( リクエスターバス番号 ) 103:96 Tag ( タグ ) 119: Completer ID ( コンプリーター ID) Requester ID Enable ( リクエスター ID イネーブル ) リクエスターファンクションに関連するバス番号です 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合 ユーザーアプリケーションはディスクリプター内の Requester ID Enable ビットを 0b にセットして このフィールドに 8 b0 を提供する必要があります この場合 統合ブロックがコンフィギュレーションリクエストからキャプチャしたバス番号に格納されている値が使用されます それ以外では 統合ブロックがルートコンプレックスとしてコンフィギュレーションされている場合 ユーザーアプリケーションがこのフィールドにリクエスターの 8 ビットのバス番号を提供する必要があります リクエストに関連する PCIe タグです ノンポステッドトランザクションの場合 統合ブロックは AXISTEN_IF_ENABLE_CLIENT_TAG パラメーターが設定されている場合 ( つまり ユーザーアプリケーションでタグ管理が実行されている場合 ) にこのフィールドの値を使用します ビット [101:96] はタグとして使用されます ビット [103:102] は予約されています このパラメーターが設定されていない場合は 統合ブロック内のタグ管理ロジックがタグを生成し ディスクリプターのタグフィールドは使用されません このフィールドは ID を使用して送信されコンフィギュレーションリクエストやメッセージにのみ適用されます これらのリクエストでは このフィールドが各リクエストに関連する PCI コンプリーター ID を示します ( これらの 16 ビットは レガシインタープリテーションモードでは 8 ビットのバス番号 5 ビットのデバイス番号 3 ビットのファンクション番号に分けられる ) ARI モードの場合 これらの 16 ビットは 8 ビットのバス番号と 8 ビットのファンクション番号として扱われます このフィールドは Requester ID フィールドで使用されるバス番号 デバイス番号 およびファンクション番号をユーザーアプリケーションが提供することを可能にします このフィールドは 統合ブロックがルートコンプレックスとしてコンフィギュレーションされている場合には 1b にセットされ エンドポイントとしてコンフィギュレーションされている場合には 0b にセットされている必要があります 詳細要件は Requester Bus Number ( リクエスターバス番号 ) および Requester Function/Device Number ( リクエスターファンクション番号 / デバイス番号 ) フィールドを参照してください 123:121 Transaction Class (TC) リクエストに関連する PCIe トランザクションクラス (TC) です 126:124 Attributes ( 属性 ) 127 Force ECRC これらのビットは リクエストに関連する Attribute ビットのセットを提供します ビット 124 は No Snoop ビットで ビット 125 は Relaxed Ordering ビットです ビット 126 は ID-Based Ordering ビットで メモリリクエストとメッセージ専用にセットできます ファンクションの PCI Express デバイス制御レジスタで対応する属性が有効に設定されていない場合 統合ブロックはリンク上に送信されるリクエストの属性ビットを強制的に 0 にします 強制的に ECRC を挿入します このビットを 1 にセットすると リクエストを送信するファンクションで ECRC 機能が有効に設定されていない場合でも 統合ブロックがリクエスト TLP に ECRC を含む TLP Digest を追加します UltraScale+ Device Block for PCIe v

145 表 3-11: リクエスターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 15:0 31:16 Snoop Latency ( スヌープレイテンシ ) No-Snoop Latency ( ノースヌープレイテンシ ) 35:32 OBFF コード 111:104 メッセージコード 114:112 15:0 63:32 63:0 Message Routing ( メッセージルーティング ) Destination ID ( デスティネーション ID) Vendor-Defined Header ( ベンダー定義のヘッダー ) ATS Header (ATS ヘッダー ) このフィールドは LTR メッセージ専用に定義されます メッセージの TLP ヘッダーにある 16 ビットの Snoop Latency フィールドの値を提供します このフィールドは LTR メッセージ専用に定義されます メッセージの TLP ヘッダーにある 16 ビットの No-Snoop Latency フィールドの値を提供します OBFF コードフィールドは さまざまな OBFF ケースを識別するために使用されます 1111b: CPU アクティブ バスマスタリングや割り込みなど すべてのデバイスアクションに対してシステムが完全にアクティブである 0001b: OBFF デバイスメモリの読み出し / 書き込みバスマスターの動作で利用可能なシステムメモリパス 0000b: アイドル システムがアイドル状態で 低電力ステートその他すべてのコードは予約されています このフィールドはすべてのメッセージ用に定義されます TLP ヘッダーに設定される 8 ビットのメッセージコードが含まれます サポート対象のメッセージコードの一覧は PCI Express Base Specification rev. 3.0 [ 参照 2] の Appendix F を参照してください このフィールドはすべてのメッセージ用に定義されます 統合ブロックは これらのビットをリクエスト TLP の TLP ヘッダーにある 3 ビットの Routing フィールド r[2:0] へコピーします このフィールドはベンダー定義メッセージにのみ適用されます メッセージが ID を使用して送信される場合 ( つまり Message Routing フィールドが 010 バイナリの場合 ) このフィールドはメッセージの Destination ID を提供します このフィールドはベンダー定義メッセージにのみ適用されます TLP ヘッダーの Dword 3 へコピーされます このフィールドは ATS メッセージにのみ適用可能です 統合ブロックが TLP ヘッダーの Dword 2 と Dword 3 へコピーするバイトが含まれます UltraScale+ Device Block for PCIe v

146 リクエスターメモリ書き込み動作 Dword アライメントモードでは 転送は 16 ディスクリプターバイトから始まり その直後にペイロードバイトが続きます ユーザーアプリケーションは パケットが送信される間 s_axis_rq_tvalid 信号をアサートしたままに保持する必要があります パケット送信中に s_axis_rq_tvalid がディアサートされると 統合ブロックはこれをエラーとして処理し リンク上の対応するリクエスト TLP を無効にしてデータ破損を回避します またユーザーアプリケーションは パケットの最後のビートで s_axis_rq_tlast をアサートします 統合ブロックは データの受信準備が整っていない場合に 任意のサイクルで s_axis_rq_tready をディアサートできます 統合ブロックが s_axis_rq_tready をディアサートしたクロックサイクル内では ユーザーアプリケーションが RQ インターフェイス上の値を変更してはいけません AXI4-Stream インターフェイス信号 m_axis_cq_tkeep ( 各 Dword 位置に 1 つ ) をセットして ディスクリプターなどのパケット内の有効な Dword およびディスクリプターとペイロード間に挿入される NULL バイトを示す必要があります つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされる必要があります パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り tkeep ビットを 0 にできます リクエスターリクエストインターフェイスでは s_axis_rq_tuser バスに First Byte Enable ビットと Last Enable ビットも含まれます これらのビットはパケットの最初のビートでセットされ ペイロードの最初と最後の Dword にある有効なバイト情報を提供します ユーザーアプリケーションは 1 つのリクエストで転送されるペイロードのサイズを 統合ブロックで設定した最大ペイロードサイズまでに制限し ペイロードが 4k バイトの境界を超えないようにする必要があります 2 Dword またはそれ以下のメモリ書き込みの場合 first_be および last_be で 1 が連続しない場合があります 長さ 0 のメモリ書き込みリクエストなど特殊な場合は first_be と last_be が両方ともすべて 0 にセットされた状態でユーザーアプリケーションがダミーの 1 Dword ペイロードを提供する必要があります その他の場合 first_be および last_be では 1 が連続する必要があります 図 3-42 図 3-43 および図 3-44 のタイミング図は リクエスターリクエストインターフェイスを介すユーザーアプリケーションからのメモリ書き込みリクエストの Dword アライメント転送を インターフェイス幅 および 256 ビット別に示しています 説明用として ユーザーアプリケーションメモリに書き込まれるデータブロックのサイズは n Dword と仮定し n = k (k > 0) となります X-Ref Target - Figure 3-42 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] DESC 0 DESC 2 DW 0 DW 0 DW 2 DW n-1 DESC 1 DESC 3 DW 1 DW 1 DW 3 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[1:0] 0x3 0x3 0x3 0x1 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] FIRST BE LAST BE (discontinue) s_axis_rq_tuser[11] X12336 図 3-42: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 64 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

147 X-Ref Target - Figure 3-43 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] s_axis_rq_tdata[95:64] s_axis_rq_tdata[127:96] DESC 0 DW 0 DW 0 DW n-1 DESC 1 DW 1 DW 1 DESC 2 DW 2 DW 2 DESC 3 DW 3 DW 3 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[3:0] 0xF 0xF 0xF 0x1 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] FIRST BE LAST BE (discontinue) s_axis_rq_tuser[11] X12337 図 3-43: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

148 X-Ref Target - Figure 3-44 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] s_axis_rq_tdata[95:64] s_axis_rq_tdata[127:96] s_axis_rq_tdata[159:128] s_axis_rq_tdata[191:160] s_axis_rq_tdata[223:192] s_axis_rq_tdata[255:224] DESC 0 DW 4 DW 4 DW n-1 DESC 1 DW 5 DW 5 DESC 2 DW 6 DW 6 DESC 3 DW 7 DW 7 DW 0 DW 8 DW 8 DW 1 DW 9 DW 9 DW 2 DW 10 DW 10 DW 3 DW 11 DW 11 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[7:0] 0xFF 0xFF 0xFF 0x01 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] FIRST BE LAST BE (discontinue) m_axis_cq_tuser[11] X12338 図 3-44: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード 256 ビットインターフェイス ) 図 3-45 図 3-46 および図 3-47 のタイミング図は RQ インターフェイスを介すユーザーアプリケーションからのメモリ書き込みリクエストのアドレスアライメント転送を インターフェイス幅 および 256 ビット別に示しています 図示する目的で ユーザーアプリケーションメモリに書き込まれるデータブロックの開始 Dword オフセットは 整数 m > 0 のとき (m 32+1) と仮定しています サイズは n Dword と仮定し n = k (k > 0) となります アドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します ペイロードの最初の Dword は 任意の Dword 位置で現れることができます ユーザーアプリケーションは s_axis_rq_tuser の addr_offset[2:0] 信号を使用して データパス上にあるペイロードの最初の Dword のオフセットを示す必要があります また 最初の Dword の有効バイトを示すために first_be[3:0] のビットをセットし ペイロードの最後の Dword の有効バイトを示すために last_be[3:0] のビットをセットする必要もあります UltraScale+ Device Block for PCIe v

149 X-Ref Target - Figure 3-45 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] DESC 0 DESC 2 DW 1 DW n-2 DESC 1 DESC 3 DW 0 DW 0 DW 2 DW n-1 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[1:0] 0x3 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] (add_offset[2:0]) s_axis_rq_tuser[10:8] FIRST BE LAST BE 1 (discontinue) s_axis_rq_tuser[11] X12333 図 3-45: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 64 ビットインターフェイス ) X-Ref Target - Figure 3-46 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] s_axis_rq_tdata[95:64] s_axis_rq_tdata[127:96] DESC 0 DW 3 DW n-2 DESC 1 DW 0 DW 0 DW 4 DW n-1 DESC 2 DW 1 DW 1 DW 5 DESC 3 DW 2 DW 2 DW 6 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[3:0] 0xF 0xF 0xF 0x3 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] (add_offset[2:0]) s_axis_rq_tuser[10:8] FIRST BE LAST BE 1 (discontinue) s_axis_rq_tuser[11] X12334 図 3-46: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

150 X-Ref Target - Figure 3-47 user_clk s_axis_rq_tdata[31:0] s_axis_rq_tdata[63:32] s_axis_rq_tdata[95:64] s_axis_rq_tdata[127:96] s_axis_rq_tdata[159:128] s_axis_rq_tdata[191:160] s_axis_rq_tdata[223:192] s_axis_rq_tdata[255:224] DESC 0 DW 7 DW 7 DW n-6 DESC 1 DW 0 DW 8 DW 8 DW n-5 DESC 2 DW 1 DW 9 DW 9 DW n-4 DESC 3 DW 2 DW 10 DW 10 DW n-3 DW 3 DW 11 DW 11 DW n-2 DW 4 DW 12 DW 12 DW n-1 DW 5 DW 13 DW 13 DW 6 DW 14 DW 14 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[7:0] 0xFF 0xFF 0xFF 0x3F s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] (last_be) s_axis_rq_tuser[7:4] (add_offset[2:0]) s_axis_rq_tuser[10:8] FIRST BE LAST BE 1 (discontinue) s_axis_rq_tuser[11] 図 3-47: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション ( アドレスアライメントモード 256 ビットインターフェイス ) X12335 ペイロードを含まないノンポステッドトランザクション ペイロードを含まないノンポステッドトランザクション ( メモリ書き込みリクエスト I/O 読み出しリクエスト コンフィギュレーション読み出しリクエスト ) は メモリ書き込みリクエストと同様に RQ インターフェイスを介して送信されますが このトランザクションでは AXI4-Stream パケット 7 に 16 バイトのディスクリプターのみ含まれます 図 3-48 図 3-49 および図 3-50 のタイミング図は RQ インターフェイスを介すメモリ読み出しリクエストの転送を および 256 ビット別に示しています パケットは 64 ビットインターフェイスでは連続する 2 ビートを使用して転送されますが 128 ビットまたは 256 ビットインターフェイスでは 1 ビートで転送されます s_axis_rq_tvalid 信号は パケットが送信される間アサートされた状態を維持する必要があります 統合ブロックは このビートを延長させるために s_axis_rq_tready をディアサートできます s_axis_rq_tlast 信号は パケットの最後のビートでセットされ s_axis_rq_tkeep[7:0] のビットは ディスクリプターが現れるすべての Dword 位置でセットされる必要があります 読み出されるデータブロックの最初と最後の Dword の有効バイトは first_be[3:0] および last_be[3:0] をそれぞれ使用して示される必要があります 長さ 0 のメモリ読み出しリクエストなど特殊な場合は first_be[3:0] と last_be[3:0] が両方ともすべて 0 にセットされた状態で リクエストの長さは 1 Dword に設定される必要があります さらに アドレスアライメントモードの場合は s_axis_rq_tuser の addr_offset[2:0] がリクエスターコンプリーションインターフェイス上に返されるデータの任意の開始アライメントを指定します アライメントは リクエストのアドレスと相関性を持つ必要はありません UltraScale+ Device Block for PCIe v

151 X-Ref Target - Figure 3-48 user_clk s_axis_rq_tdata[31:0] DESC 0 DESC 0 DESC 2 s_axis_rq_tdata[63:32] DESC 1 DESC 1 DESC 3 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[1:0] 0x3 0x3 s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] FIRST BE FIRST BE (last_be) s_axis_rq_tuser[7:4] LAST BE LAST BE (discontinue) s_axis_rq_tuser[11] 図 3-48: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (64 ビットインターフェイス ) X-Ref Target - Figure 3-49 user_clk s_axis_rq_tdata[31:0] DESC 0 DESC 0 s_axis_rq_tdata[63:32] DESC 1 DESC 1 s_axis_rq_tdata[95:64] DESC 2 DESC 2 s_axis_rq_tdata[127:96] DESC 3 DESC 3 s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[3:0] 0xF 0xF s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] FIRST BE FIRST BE (last_be) s_axis_rq_tuser[7:4] LAST BE LAST BE (discontinue) s_axis_rq_tuser[11] 図 3-49: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

152 X-Ref Target - Figure 3-50 user_clk s_axis_rq_tdata[31:0] DESC 0 DESC 0 s_axis_rq_tdata[63:32] DESC 1 DESC 1 s_axis_rq_tdata[95:64] DESC 2 DESC 2 s_axis_rq_tdata[127:96] DESC 3 DESC 3 s_axis_rq_tdata[255:128] s_axis_rq_tvalid s_axis_rq_tready s_axis_rq_tkeep[7:0] 0x0F 0x0F s_axis_rq_tlast (first_be) s_axis_rq_tuser[3:0] FIRST BE FIRST BE (last_be) s_axis_rq_tuser[7:4] LAST BE LAST BE (discontinue) s_axis_rq_tuser[11] X12332 図 3-50: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (256 ビットインターフェイス ) ペイロードを含むノンポステッドトランザクション ペイロードを含むノンポステッドリクエスト (I/O 書き込みリクエスト コンフィギュレーション書き込みリクエスト またはアトミック操作リクエスト ) の転送は メモリリクエストの転送と類似していますが ペイロードをデータパス上で揃える方法において次の点が異なります Dword アライメントモードの場合 ペイロードの最初の Dword はディスクリプターの最後の Dword の後に転送され この 2 つの Dword 間にギャップは生じません アドレスアライメントモードの場合 ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します ペイロードはデータパス上の任意の Dword 位置で開始できます 最初の Dword のオフセットは addr_offset[2:0] 信号を使用して指定される必要があります I/O およびコンフィギュレーション書き込みリクエストの場合 1 Dword ペイロードの有効バイトは first_be[3:0] 信号を使用して指定されます アトミック操作リクエストの場合 最初と最後の Dword のすべてのバイトを有効と見なします UltraScale+ Device Block for PCIe v

153 リクエスターインターフェイスでのメッセージリクエスト RQ インターフェイスにおけるメッセージの転送はメモリ書き込みリクエストと同様ですが ペイロードが常に存在するわけではない点のみ異なります 転送は 128 ビットディスクリプターから始まり ペイロードがある場合はその後ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後にペイロードの最初の Dword が続きます アドレスアライメントモードを使用する場合 ペイロードはディスクリプターの後のビートで開始する必要があり またバイトレーン 0 に揃う必要があります アドレスアライメントモードが使用される場合 メッセージに対して 統合ブロックへの addr_offset 入力が 0 にセットされている必要があります 統合ブロックは s_axis_rq_tlast および s_axis_rq_tkeep 信号からペイロードの終わりを判断します メッセージリクエストの場合 First Byte Enable ビットおよび Last Byte Enable ビット (first_be および last_be) は使用されません 転送の中断 関連するペイロードを含むすべてのリクエストの転送では ユーザーアプリケーションが s_axis_rq_tuser バスで discontinue 信号をアサートすることによって ペイロード転送中にいつでもリクエストを中断できます 統合ブロックはリンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーアプリケーションは 転送されているリクエストが関連するペイロードを含んでいる場合に 転送中の任意のタイミングでこの信号をアサートできます また エラーが示されたサイクルでパケットを早期に中断する (s_axis_rq_tlast をアサート ) またはペイロードのすべてのバイトが統合ブロックへ送信されるまで継続してから中断するのいずれかを選択できます 後者の場合 ユーザーアプリケーションがパケットの終了より前に discontinue 信号をディアサートした場合でも 統合ブロックはパケットのその後のサイクルでエラーをスティッキーとして処理します discontinue 信号は s_axis_rq_tvalid がアクティブ High の場合のみアサートされます 統合ブロックは s_axis_rq_tvalid と s_axis_rq_tready が両方ともアクティブ High にアサートされている場合にこの信号をサンプルします したがって discontinue 信号がアサートされると s_axis_rq_tready がアクティブ High にアサートされるまでディアサートできません 統合ブロックがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用して訂正不可能な内部エラーとして 接続される先のルートコンプレックスに対して統合ブロックがエラーをレポートします ノンポステッド転送のタグ管理 統合ブロックのリクエスター側が ユーザーアプリケーションによって開始されたすべての保留されているノンポステッドトランザクション ( メモリ読み出し I/O 読み出しおよび書き込み コンフィギュレーション読み出しおよび書き込み アトミック操作 ) のステータスを維持し これによってターゲットから返されるコンプリーションが対応するリクエストと一致することが可能になります 未処理トランザクションの各ステートは インターフェイスのリクエスター側にあるスプリットコンプリーションテーブルで管理されます このテーブルでは 64 のノンポステッドトランザクションを管理できます コンプリーションの送信は 6 ビットのタグを使用してペンディングリクエストと一致します これらのタグ管理には 次の 2 つのオプションがあります Internal Tag Management ( 内部タグ管理 ): AXISTEN_IF_ENABLE_CLIENT_TAG パラメーターを FALSE に設定すると この動作モードが選択され これはコアのデフォルト設定となります リクエスター側から開始された各ノンポステッドリクエストに対して 統合ブロック内のロジックがタグの割り当てを実行します 統合ブロックは フリータグのリストを管理し ユーザーアプリケーションがノンポステッドトランザクションを開始する際に各リクエストにこれらのいずれかを割り当て その後 pcie_rq_tag[5:0] 出力を介して割り当てたタグ値をユーザーアプリケーションに伝達します このバスの値は 統合ブロックが pcie_rq_tag_vld をアサートすると有効になります リクエストに応答して統合ブロックから送信されたすべてのコンプリーションがリクエストと一致するように ユーザーロジックはこのタグをコピーする必要があります このモードでは 統合ブロック内のロジックがスプリットコンプリーションテーブルの全条件をチェックし 現在未処理状態のノンポステッドリクエストの合計数が最大値 (64) に到達すると ユーザーアプリケーションからのノンポステッドリクエストにバックプレッシャーを用いて (s_axis_rq_tready を使用 ) 送信を制御します External Tag Management ( 外部タグ管理 ): このモードの場合 リクエスター側から開始された各ノンポステッドリクエストに対して ユーザーロジックがタグの割り当てを実行します ユーザーロジックは その時点で処 UltraScale+ Device Block for PCIe v

154 理されていないその他すべてのノンポステッドトランザクションのタグと競合しないようにタグ値を選択し その選択したタグ値をリクエスターディスクリプターを介して統合ブロックへ伝達する必要があります さらに統合ブロックは スプリットコンプリーションテーブル内で未処理のリクエストを管理し 受信するコンプリーションをリクエストと一致させます ただし タグの異常やスプリットコンプリーションテーブルの全条件チェックは実行しません 内部タグ管理オプションを使用する場合 統合ブロックは pcie_rq_tag[5:0] に割り当てたタグ値を出力した後 各ノンポステッドリクエストに対して 1 サイクル間 pcie_rq_tag_vld をアサートします RQ インターフェイスにリクエストが転送されてから そのリクエストに対して割り当てたタグ値を提供するために統合ブロックが pcie_rq_tag_vld をアサートするまでには 数サイクルの遅延が生じる可能性があります この間 ユーザーアプリケーションは新しいリクエストを継続して送信できます 各リクエストのタグは pcie_rq_tag バスを使用して FIFO 順序で伝達されるため 送信されたリクエストとタグの値を簡単に関連付けることができます スプリットコンプリーションの最後のコンプリーションの EOF (end-of-frame) がユーザーアプリケーションで受信されるときに タグは再び使用されます ポステッドリクエストの HOL (Head-of-Line) ブロッキングの回避 統合ブロックは 送信クレジットまたは有効なタグが不足した場合に RQ インターフェイスで受信したノンポステッドリクエストを保持できます この際 ポステッドトランザクションで HOL (Head-of-Line) ブロッキングが生じる可能性があります 統合ブロックは この状況を回避するために次の信号を用いたメカニズムをユーザーロジックに提供します pcie_tfc_nph_av[1:0]: これらの出力は ノンポステッドリクエストで現在利用できるヘッダークレジット数を示します 00 = 使用可能なクレジットはない 01 = 1 クレジット 10 = 2 クレジット 11 = 3 以上のクレジット pcie_tfc_npd_av[1:0]: これらの出力は ノンポステッドリクエストで現在利用できるデータクレジット数を示します 00 = 使用可能なクレジットはない 01 = 1 クレジット 10 = 2 クレジット 11 = 3 以上のクレジット ユーザーロジックは ノンポステッドリクエストを送信する前にオプションでこれらの出力を確認できます 内部パイプライン遅延が原因で これらの出力情報は RQ インターフェイスにディスクリプターの最後のバイトが送信されたサイクルより 2 ユーザークロックサイクル分遅れます したがって ユーザーロジックは 2 つ前のクロックサイクルで送信されたノンポステッドリクエストを考慮して正しい値を取得する必要があります 図 3-51 に 256 ビットインターフェイスでのこれらの信号の動作を示しています この例では 最初に統合ブロックには 3 つのノンポステッドヘッダークレジットと 2 つのノンポステッドデータクレジット そして有効な 3 つのフリータグがあります ユーザーアプリケーションからのリクエスト 1 (Req 1) は 1 Dword ペイロードを含んでいるため ヘッダークレジットとデータクレジットを 1 つずつ使用し タグも 1 つ使用します 次のサイクルでリクエスト 2 (Req 2) が 1 ヘッダークレジットを使用しますが データクレジットは使用していません 次のクロックサイクルでユーザーアプリケーションがリクエスト 3 (Req 3) を示すとき リクエスト 1 とリクエスト 2 を考慮し 利用可能なクレジット数とタグ数を調整する必要があります リクエスト 3 が 1 ヘッダークレジットと 1 データクレジットを使用すると 2 サイクル後に使用できる両方のクレジット数が 0 となり タグ数も 0 となります 図 3-52 および図 3-53 は 同じ例のクレジットとタグのタイミングを インターフェイス幅 128 ビットおよび 64 ビット別に示しています UltraScale+ Device Block for PCIe v

155 X-Ref Target - Figure 3-51 user_clk s_axis_rq_data[255:0] NP Req 1 NP Req 2 NP Req 3 s_axis_rq_data_tvalid s_axis_rq_data_ready s_axis_rq_data_tlast pcie_tfc_nph[1:0] pcie_tfc_npd[1:0] pcie_rq_tag_av[1:0] 0x3 0x2 0x1 0x0 0x2 0x1 0x0 0x3 0x2 0x1 0x0 X12339 図 3-51: リクエスターリクエストインターフェイスでの利用可能なクレジット数およびタグ数を示す信号 (256 ビットインターフェイス ) X-Ref Target - Figure 3-52 図 3-52: リクエスターリクエストインターフェイスでの利用可能なクレジット数およびタグ数を示す信号 (128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

156 X-Ref Target - Figure 3-53 図 3-53: リクエスターリクエストインターフェイスでの利用可能なクレジット数およびタグ数を示す信号 (64 ビットインターフェイス ) トランザクション順序の維持 統合ブロックは リクエスターインターフェイスでユーザーアプリケーションから受信したリクエストをリンクに送信する際に順序を変更しません ユーザーアプリケーションが RQ インターフェイスおよび CC インターフェイスに送信されるトランザクション順序を正確に制御する必要がある場合 ( 通常 順序設定で STRICT を使用する場合に コンプリーションがポステッドリクエストを飛び越えないようにするため ) 統合ブロックはパイプラインをとおるポステッドトランザクションの進捗をユーザーアプリケーションがモニタリングできるメカニズムを提供します これによって リクエスターリクエストインターフェイスから送信された特定のポステッドリクエストを飛び越えるリスクを冒すことなく コンプリーターコンプリーションインターフェイス上にコンプリーションを送信するタイミングを判断できます リクエスターリクエストインターフェイスを介してポステッドリクエスト ( メモリ書き込みトランザクションまたはメッセージ ) を転送する場合 ユーザーアプリケーションは s_axis_rq_tuser の seq_num[3:0] 入力で 4 ビットのシーケンス番号を統合ブロックへオプションで提供できます このシーケンス番号は パケットの最初のビートで有効になります ユーザーアプリケーションは コアの pcie_rq_seq_num[3:0] 出力をモニタリングして このシーケンス番号が現れるのを確認できます トランザクションが統合ブロックの内部送信パイプライン内の特定段階 ( コンプリーションを渡すことができなくなるレベル ) に到達すると 統合ブロックは pcie_rq_seq_num_valid を 1 サイクル間アサートして ポステッドリクエストのシーケンス番号を pcie_rq_seq_num[3:0] 出力に提供します シーケンス番号が pcie_rq_seq_num[3:0] に現れた後に統合ブロックから送信されたコンプリーションが 内部送信パイプライン内のポステッドリクエストを飛び越えることはありません リクエスターコンプリーションインターフェイスの動作 ユーザーロジックで生成されたリクエストに対するコンプリーションは 統合ブロックのリクエスターコンプリーション (RC) インターフェイスに現れます 図 3-54 に リクエストコンプリーションインターフェイスに現れる信号を示しています ストラドルが無効に設定されている場合 統合ブロックはこのインターフェイスを使用して各 TLP を AXI4-Stream パケットとして送信します パケットは 96 ビットディスクリプターから始まり コンプリーションにペイロードが含まれる場合はその後をデータが続きます UltraScale+ Device Block for PCIe v

157 X-Ref Target - Figure 3-54 UltraScale FPGA Gen3 Integrated Block for PCIe Client Application PCIe Requester Completion Interface AX14-Stream Master m_axis_rc_tdata[255:0] m_axis_rc_tparity[31:0] m_axis_rc_tvalid m_axis_rc_tready m_axis_rc_tkeep[7:0] m_axis_rc_tlast byte_en[31:0] is_sof_0 is_sof_1 is_eof_0[3:0] is_eof_1[3:0] discontinue AX14- Stream Slave PCIe Requester Interface m_asix_rc_tuser[42:0] X12441 図 3-54: リクエスターコンプリーションインターフェイス RC インターフェイスでは ペイロードの転送において 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 統合ブロックはディスクリプターの最後の Dword の直後にコンプリーションペイロードの最初の Dword を送信する必要があります アドレスアライメントモードの場合 統合ブロックはディスクリプターの最後の Dword に続いて発生するビートでペイロードの送信を開始し その最初の Dword はデータパス上の任意の Dword 位置で開始できます ペイロードの最初の Dword のアライメントは ユーザーアプリケーションが統合ブロックにリクエストを送信したときに提供されるアドレスオフセット ( つまり RQ インターフェイスの addr_offset[2:0] 入力の設定 ) で決定します したがって アドレスアライメントモードは RQ インターフェイスで使用できるように設定されている場合のみ RC インターフェイスで使用できます リクエスターコンプリーションのディスクリプターのフォーマット 統合ブロックの RC インターフェイスは リンクから受信したコンプリーションデータをユーザーアプリケーションへ AXI4-Stream パケットとして送信します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 12 バイト長となり コンプリーションパケットの最初の 12 バイトで送信されます ディスクリプターは 64 ビットインターフェイスでは最初の 2 サイクル間で送信され 128 ビットまたは 256 ビットの場合は最初のサイクルで送信されます コンプリーションデータが複数のスプリットコンプリーションに分割される場合は 統合ブロックが各スプリットコンプリーションを個別にディスクリプターを備えた AXI4-Stream パケットとして送信します リクエスターコンプリーションディスクリプターのフォーマットは 図 3-55 を参照してください RC ディスクリプターの各フィールドの詳細は 表 3-12 で説明しています UltraScale+ Device Block for PCIe v

158 X-Ref Target - Figure DW Bus Device /Function R Dword count Byte Count Address [11:0] Requester ID Poisoned Completion Completion Status Request Completed Locked Read Completion DW + 0 DW R Attr TC R Bus Device / Function Tag Completer ID +1 Error Code X12210 図 3-55: リクエスターコンプリーションのディスクリプターのフォーマット 表 3-12: リクエスターコンプリーションディスクリプターのフィールド ビットインデックス 11:0 フィールド名 Lower Address ( 下位アドレス ) 説明 このフィールドでは リクエストによって参照される最初のバイトの下位 12 ビットを提供します 統合ブロックは スプリットコンプリーションテーブルからこのアドレスを返します このテーブルには リクエスター側の保留されているすべてのノンポステッドリクエストのアドレスとその他のパラメーターが格納されています 送信されたコンプリーションにエラーがあると このアドレスのビット [6:0] のみ有効として見なされます これはバイト単位のアドレスです UltraScale+ Device Block for PCIe v

159 表 3-12: リクエスターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックス 15:12 28:16 29 フィールド名 Error Code ( エラーコード ) Byte Count ( バイトカウント ) Locked Read Completion ( ロックされた読み出しコンプリーション ) 説明 コンプリーションのエラーコードです これらの 3 ビットは 統合ブロックが受信したコンプリーションに対して実行したエラーチェックで検出されたエラー状況をエンコードしたものです エンコードは次のとおりです 0000: 正常終了 ( すべてのデータを受信 ) 0001: コンプリーション TLP にポイズニングが適用されている 0010: リクエストは UR CA または CRD ステータスを含むコンプリーションで終了している 0011: データを含まないコンプリーションでリクエストが終了 またはそのコンプリーションのバイトカウントがそのリクエストに対して予測されている合計バイト数を超えている 0100: 送信されている現在のコンプリーションには 未処理リクエストと同じタグがあるが その Requester ID TC または Attribute フィールドが未処理リクエストのパラメーターと一致していない 0101: 開始アドレスのエラーを示す コンプリーション TLP ヘッダーの下位アドレスが そのリクエストの次に予想されるバイトの開始アドレスと一致しない 0110: タグが無効であることを示す このコンプリーションは 処理されていないリクエストのいかなるタグとも一致しない 1001: コンプリーションのタイムアウトでリクエストが終了したことを示す この場合 ディスクリプターはコンプリーション TLP に対応しないため ビット [30] リクエスターファンクション [55:48] およびタグフィールド [71:64] を除くディスクリプターのその他のフィールドは無効となる 1000: リクエストを生成したファンクションをターゲットとする Function-Level Reset (FLR) によってリクエストが終了したことを示す この場合 ディスクリプターはコンプリーション TLP に対応しないため ビット [30] リクエスターファンクション [55:48] およびタグフィールド [71:64] を除くディスクリプターのその他のフィールドは無効となる これらの 13 ビットは 0 ~ 4,096 バイトの範囲の値に設定できます シングルコンプリーションを使用してメモリ読み出しリクエストが完了する場合 このバイトカウント値がペイロードサイズをバイト単位で示します I/O の読み出しコンプリーションや I/O の書き込みコンプリーションの場合 このフィールドは 4 にセットされる必要があります 長さ 0 のメモリ読み出しに対するコンプリーションを送信している間 バイトカウント値は 1 にセットされる必要があり ダミーのペイロードとして 1 Dword がディスクリプターの後に送信される必要があります 各メモリ読み出しコンプリーションでは このバイトカウントフィールドがリクエストを完了するのに必要となる残りのバイト数を示します ( コンプリーションで返ってきたバイト数を含む ) 複数のコンプリーションを使用してメモリ読み出しリクエストが完了する場合 各コンプリーションのこのバイトカウント値は 先行するコンプリーションが示す値から先行するコンプリーションで返ってきたバイト数を引いた値となります Locked Read ( ロックされた読み出し ) リクエストに対してコンプリーション応答する場合 このビットを 1 にセットします その他のコンプリーション応答の場合 このフィールドは 0 にセットする必要があります UltraScale+ Device Block for PCIe v

160 表 3-12: リクエスターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックス フィールド名 説明 30 42:32 45:43 46 Request Completed ( リクエストの完了 ) Dword Count (Dword カウント ) Completion Status ( コンプリーションステータス ) Poisoned Completion ( ポイズンコンプリーション ) 統合ブロックは リクエストに対する最後のコンプリーションのディスクリプターのこのビットをアサートします このビットをアサートすることで リクエストの正常終了 ( すべてのデータを受信 ) またはエラーによる異常終了を示すことができます ユーザーロジックは この表示を利用して 処理されていないリクエストのステータスをクリアできます タグが割り当てられている場合 タグフィールドが一致し Request Completed ビットが 1 にセットされているコンプリーションディスクリプターを統合ブロックから受信するまで ユーザーロジックはリクエストに割り当てられているタグを再度指定できません これらの 11 ビットは 現在のパケットのペイロードサイズを示します (Dword) 範囲は 0 ~ 1000 Dword です このフィールドは I/O 読み出しのコンプリーションについては 1 にセットされ I/O 書き込みのコンプリーションについては 1 にセットされます また 長さ 0 のメモリ読み出しに対してコンプリーションを送信している間も 1 にセットされている必要があります その他の場合 この Dword カウントは その時点のパケットのペイロードの実際の Dword 数に相当します これらのビットは 受信したコンプリーション TLP のコンプリーションステータスフィールドの設定を示します 有効な設定は次のとおりです 000: トランザクションが正常に完了 001: サポートされないリクエスト (UR) 010: コンフィギュレーションリクエストのリトライステータス (CRS) 100: コンプリーターの中断 (CA) このビットのセットにより コンプリーション TLP の Poison ビットがセットされていることを示します パケット内のデータが破損していると考えることができます Requester ID 63:48 コンプリーションに関連する PCI リクエスター ID です ( リクエスター ID) 71:64 Tag ( タグ ) コンプリーションに関連する PCIe タグです 87:72 Completer ID ( コンプリーター ID) コンプリーション TLP で受信されるコンプリーター ID です ( これらの 16 ビットは レガシインタープリテーションモードでは 8 ビットのバス番号 5 ビットのデバイス番号 3 ビットのファンクション番号にわけられる ARI モードの場合 これらの 16 ビットは 8 ビットのバス番号と 8 ビットのファンクション番号として扱われる ) 91:89 Transaction Class (TC) コンプリーションに関連する PCIe トランザクションクラス (TC) です 94:92 Attributes ( 属性 ) コンプリーションに関連する PCIe 属性です ビット 92 は No Snoop ビット ビット 93 は Relaxed Ordering ビット ビット 94 は ID-Based Ordering ビットです UltraScale+ Device Block for PCIe v

161 データを含まないコンプリーションの転送 図 3-56 図 3-57 および図 3-58 のタイミング図は RC インターフェイスを介して リンクから受信したペイロードを含まないコンプリーション TLP の転送を および 256 ビット別に示しています このセクションのタイミング図では 256 ビットインターフェイスでコンプリーションがストラドルされないことを仮定しています ストラドル機能の詳細は 169 ページの 256 ビットインターフェイスのストラドルオプション を参照してください X-Ref Target - Figure 3-56 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] DESC 0 DESC 2 DESC 2 DESC 1 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[1:0] 0x3 0x1 0x1 m_axis_rc_tlast (byte_en[7:0]) m_axis_rc_tuser[7:0] 0 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12226 図 3-56: リクエスターコンプリーションインターフェイスでのデータを含まないコンプリーションの転送 (64 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

162 X-Ref Target - Figure 3-57 user_clk m_axis_rc_tdata[31:0] DESC 0 DESC 0 m_axis_rc_tdata[63:32] DESC 1 DESC 1 m_axis_rc_tdata[95:64] DESC 2 DESC 2 m_axis_rc_tdata[127:96] m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[3:0] 0x7 0x7 m_axis_rc_tlast (byte_en[15:0]) m_axis_rc_tuser[15:0] 0 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12227 図 3-57: リクエスターコンプリーションインターフェイスでのデータを含まないコンプリーションの転送 (128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

163 X-Ref Target - Figure 3-58 user_clk m_axis_rc_tdata[31:0] DESC 0 DESC 0 m_axis_rc_tdata[63:32] DESC 1 DESC 1 m_axis_rc_tdata[95:64] DESC 2 DESC 2 m_axis_rc_tdata[127:96] m_axis_rc_tdata[255:128] m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[7:0] 0x07 0x07 m_axis_rc_tlast (byte_en[31:0]) m_axis_rc_tuser[31:0] 0 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12228 図 3-58: リクエスターコンプリーションインターフェイスでのデータを含まないコンプリーションの転送 (256 ビットインターフェイス ) コンプリーション TLP をすべて転送するには 256 ビットおよび 128 ビットインターフェイスの場合はシングルビート 64 ビットインターフェイスの場合は 2 ビート必要です 統合ブロックは パケットが送信される間 m_axis_rc_tvalid 信号をアサートしたままに保持する必要があります ユーザーアプリケーションは m_axis_rc_tready をディアサートしてビートを適時延ばすことができます AXI4-Stream インターフェイスの信号 m_axis_rc_tkeep ( 各 Dword 位置に 1 つ ) がパケット内の有効なディスクリプター Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされます パケット転送中 tkeep ビットはパケットの最後のビートでのみ 0 になることができます m_axis_cq_tlast 信号は必ずパケットの最後のビートでアサートされます m_axi_cq_tuser バスには is_sof_0 信号も含まれており すべてのパケットの最初のビートでアサートされます ユーザーアプリケーションは オプションでこの信号を使用して インターフェイス上のディスクリプターの開始を示すことができます ストラドルオプションを使用しない場合 m_axi_cq_tuser バス内のその他の信号は データを含まないコンプリーションの転送に関連しません データを含むコンプリーションの転送 図 3-59 図 3-60 および図 3-61 のタイミング図は RC インターフェイスを介して リンクから受信したペイロードを含むコンプリーション TLP の Dword アライメント転送を および 256 ビット別に示しています 説明用として ユーザーアプリケーションメモリに書き込まれるデータブロックのサイズは n Dword と仮定し n = k (k > 0) となります このセクションのタイミング図では 256 ビットインターフェイスでコンプリーションがストラドルされないことを仮定しています ストラドル機能の詳細は 169 ページの 256 ビットインターフェイスのストラドルオプション を参照してください Dword アライメントモードでは 転送は 3 ディスクリプター Dword から始まり その直後にペイロード Dword が続きます ディスクリプターとペイロードを含むすべての TLP は 1 つの AXI4-Stream パケットとして転送されます UltraScale+ Device Block for PCIe v

164 ペイロードの長さが 2 Dword を超える場合 ペイロード内のデータは常に連続するバイトストリームとなります ペイロードの最初の Dword 内の最初の有効バイトと最後の Dword 内の最後の有効バイトの位置は リクエスターコンプリーションディスクリプターの Lower Address フィールドと Byte Count フィールドから判断できます ペイロードサイズが 2 Dword 以下の場合 ペイロード内の有効なバイトは連続しません このような場合 ユーザーアプリケーションは RQ インターフェイスを介して送信される各リクエストに関連する First Byte Enable フィールドと Last Byte Enable フィールドを格納し これらを使用してコンプリーションペイロード内の有効バイトを判断する必要があります 連続および非連続のペイロードの場合に ユーザーアプリケーションはオプションで m_axi_cq_tuser バス内にあるバイトイネーブル出力 byte_en[31:0] を使用し ペイロード内の有効バイトを判断できます 統合ブロックは パケットが送信される間 m_axis_rc_tvalid 信号をアサートしたままに保持する必要があります ユーザーアプリケーションは m_axis_rc_tready をディアサートしてビートを適時延ばすことができます AXI4-Stream インターフェイス信号 m_axis_rc_tkeep ( 各 Dword 位置に 1 つ ) は ディスクリプター およびディスクリプターとペイロード間に挿入される NULL バイトを含む パケットの有効な Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされます パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り tkeep ビットを 0 にできます m_axis_rc_tlast 信号は必ずパケットの最後のビートでアサートされます m_axi_rc_tuser バスは インターフェイスのユーザーアプリケーション側に関連するロジックを簡潔なものにするため または追加の機能をサポートするために利用可能な情報信号をいくつか提供します ディスクリプターがこのバス上にある場合 各パケットの最初のビートで is_sof_0 信号がアサートされます バイトイネーブル出力 byte_en[31:0] ( 各バイトレーンに 1 つ ) はペイロードの有効バイトを示します これらの信号は 有効なペイロードバイトが対応するレーンに存在する場合にのみアサートされます ( ディスクリプターや NULL バイトに対してはアサートされない ) ペイロードサイズが 2 Dword 以下の場合を除き アサートされたバイトイネーブルビットはペイロードの開始から常に連続します 2 Dword 以下のコンプリーションペイロードの場合 byte_en の 1 は連続しない場合があります その他の特殊なケースとして byte_en ビットがすべて 0 にセットされて統合ブロックが 1 Dword のペイロードを転送するときの 長さ 0 のメモリ読み出しが挙げられます つまり あらゆるケースでユーザーロジックは byte_en 信号を直接使用することで 関連するバイトをメモリに書き込むことができます 64 ビット /128 ビットインターフェイスおよびストラドルオプションが無効になっている 256 ビットインターフェイスでは m_axis_rc_tuser バス内の is_sof_1 is_eof_0[3:0] および is_eof_1[3:0] 信号は使用されません X-Ref Target - Figure 3-59 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] DESC 0 DESC 2 DW 1 DW 1 DW n-1 DESC 1 DW 0 DW 2 DW 2 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[1:0] 0x3 0x3 0x3 0x1 m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] 0 0 0xF 0xF 0xF LAST BE (byte_en[7:4]) m_axis_rc_tuser[7:4] 0 FIRST BE 0xF 0xF 0xF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12223 図 3-59: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 (Dword アライメントモード 64 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

165 X-Ref Target - Figure 3-60 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] m_axis_rc_tdata[95:64] m_axis_rc_tdata[127:96] DESC 0 DW 1 DW 5 DW 5 DW n-3 DESC 1 DW 2 DW 6 DW 6 DW n-2 DESC 2 DW 3 DW 7 DW 7 DW n-1 DW 0 DW 4 DW 8 DW 8 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[3:0] 0xF 0xF 0xF 0x7 m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] (byte_en[7:4]) m_axis_rc_tuser[7:4] (byte_en[11:8]) m_axis_rc_tuser[11:8] (byte_en[15:12]) m_axis_rc_tuser[15:12] 0 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF LAST BE FIRST BE 0xF 0xF 0xF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12224 図 3-60: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 (Dword アライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

166 X-Ref Target - Figure 3-61 user_cl m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] m_axis_rc_tdata[95:64] m_axis_rc_tdata[127:96] m_axis_rc_tdata[159:128] m_axis_rc_tdata[191:160] m_axis_rc_tdata[223:192] m_axis_rc_tdata[255:224] DESC 0 DW 5 DW 5 DW n-7 DESC 1 DW 6 DW 6 DW n-6 DESC 2 DW 7 DW 7 DW n-5 DW 0 DW 8 DW 8 DW n-4 DW 1 DW 9 DW 9 DW n-3 DW 2 DW 10 DW 10 DW n-2 DW 3 DW 11 DW 11 DW n-1 DW 4 DW 12 DW 12 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[7:0] 0xFF 0xFF 0xFF 0x7F m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] (byte_en[7:4]) m_axis_rc_tuser[7:4] (byte_en[11:8]) m_axis_rc_tuser[11:8] (byte_en[15:12]) m_axis_rc_tuser[15:12] (byte_en[19:16]) m_axis_rc_tuser[19:16] (byte_en[23:20]) m_axis_rc_tuser[23:20] (byte_en[27:24]) m_axis_rc_tuser[27:24] (byte_en[31:28]) m_axis_rc_tuser[31:28] 0 0xFF 0xFF 0xFF 0 0xFF 0xFF 0xFF 0 0xFF 0xFF 0xFF FIRST BE 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF LAST BE 0xFF 0xFF 0xFF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] 図 3-61: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 (Dword アライメントモード 256 ビットインターフェイス ) X12225 図 3-62 図 3-63 および図 3-64 のタイミング図は RC インターフェイスを介して リンクから受信したペイロードを含むコンプリーション TLP のアドレスアライメント転送を および 256 ビット別に示しています サンプルタイミングの図では 送信されるデータブロックの開始 Dword ( ディスクリプターの下位アドレスのビット [6:2] で伝搬 ) は (m 8+1) と仮定されています ( 整数 m) データブロックのサイズは n Dword と仮定し n = k (k > 0) となります アドレスアライメント転送では ストラドルオプションが無効なため このタイミング図は 256 ビットインターフェイスでコンプリーションがストラドルされないことを仮定しています アドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します ペイロードの最初の有効バイトのアドレスに基づいて ペイロードの最初のバイトはどのバイトレーンにも出力できます つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされます データバス上の最初の Dword のアライメントは ユーザーアプリケーションが統合ブロックへリクエストを送信したときのリクエスターリクエストインターフェイスの addr_offset[2:0] 入力の設定によって判断されます ユーザーアプリケーションは オプションでバイトイネーブル出力 byte_en[31:0] を使用してペイロード内の有効バイトを判断できます UltraScale+ Device Block for PCIe v

167 X-Ref Target - Figure 3-62 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] DESC 0 DESC 2 DW 1 DW n-1 DESC 1 DW 0 DW 0 DW 2 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[1:0] 0x3 0x3 0x3 0x1 m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] 0 0 0xF 0xF 0xF LAST BE (byte_en[7:4]) m_axis_rc_tuser[7:4] 0 FIRST BE FIRST BE 0xF 0xF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] 図 3-62: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 ( アドレスアライメントモード 64 ビットインターフェイス ) X-Ref Target - Figure 3-63 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] m_axis_rc_tdata[95:64] m_axis_rc_tdata[127:96] DESC 0 DW 3 DW 3 DW n-1 DESC 1 DW 0 DW 4 DW 4 DESC 2 DW 1 DW 5 DW 5 DW 2 DW 6 DW 6 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[3:0] 0xF 0xF 0xF 0x1 m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] (byte_en[7:4]) m_axis_rc_tuser[7:4] (byte_en[11:8]) m_axis_rc_tuser[11:8] (byte_en[15:12]) m_axis_rc_tuser[15:12] 0 0xF 0xF 0xF LAST BE 0 FIRST BE 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] 図 3-63: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 ( アドレスアライメントモード 128 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

168 X-Ref Target - Figure 3-64 user_clk m_axis_rc_tdata[31:0] m_axis_rc_tdata[63:32] m_axis_rc_tdata[95:64] m_axis_rc_tdata[127:96] m_axis_rc_tdata[159:128] m_axis_rc_tdata[191:160] m_axis_rc_tdata[223:192] m_axis_rc_tdata[255:224] DESC 0 DW 7 DW 7 DW n-5 DESC 1 DW 0 DW 8 DW 8 DW n-4 DESC 2 DW 1 DW 9 DW 9 DW n-3 DW 2 DW 10 DW 10 DW n-2 DW 3 DW 11 DW 11 DW n-1 DW 4 DW 12 DW 12 DW 5 DW 13 DW 13 DW 6 DW 14 DW 14 m_axis_rc_tvalid m_axis_cc_tready m_axis_rc_tkeep[7:0] 0xFF 0xFF 0xFF 0x1F m_axis_rc_tlast (byte_en[3:0]) m_axis_rc_tuser[3:0] (byte_en[7:4]) m_axis_rc_tuser[7:4] (byte_en[11:8]) m_axis_rc_tuser[11:8] (byte_en[15:12]) m_axis_rc_tuser[15:12] (byte_en[19:16]) m_axis_rc_tuser[19:16] (byte_en[23:20]) m_axis_rc_tuser[23:20] (byte_en[27:24]) m_axis_rc_tuser[27:24] (byte_en[31:28]) m_axis_rc_tuser[31:28] 0 0xF 0xF 0xF 0 FIRST BE 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF 0 0xF 0xF 0xF LAST BE 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 0 0xF 0xF 0xF 0 (is_sof_0) m_axis_rc_tuser[32] (discontinue) m_axis_rc_tuser[42] X12222 図 3-64: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 ( アドレスアライメントモード 256 ビットインターフェイス ) UltraScale+ Device Block for PCIe v

169 256 ビットインターフェイスのストラドルオプション インターフェイス幅が 256 ビットにコンフィギュレーションされている場合は 前のコンプリーション終了時と同じビート またはデータバス上の Dword 位置 3 の前で統合ブロックが RC インターフェイス上に新しいコンプリーションの転送を開始できます ストラドルオプションは Dword アライメントモードの場合にのみ使用できます ストラドルオプションが有効に設定されている場合 コンプリーション TLP はパケット境界のない連続するストリームとして RC インターフェイスを介して転送されます (AXI4-Stream の観点から ) したがって m_axis_rc_tkeep および m_axis_rc_tlast 信号は このインターフェイスを介して送信されるコンプリーション TLP の境界を判断するのに有効ではありません ( ストラドルオプションが使用されている場合 統合ブロックは m_axis_rc_tkeep をすべて 1 m_axis_rc_tlast をすべて 0 にセットする ) その代わりに m_axis_rc_tuser バス内の次の信号を使用して TLP のデリニエーション ( 輪郭を決定する ) が実行されます is_sof_0: あるビートで開始するコンプリーション TLP が 1 つ以上ある場合 統合ブロックは そのビートでこの出力をアクティブ High に駆動します このコンプリーション TLP の最初のバイトの位置は 次のように決定されます 前のコンプリーション TLP が 現ビートの前で終了する場合 このコンプリーション TLP の最初のバイトはバイトレーン 0 にあります 前のコンプリーション TLP が 現ビートで継続している場合 このコンプリーション TLP の最初のバイトはバイトレーン 16 にあります この条件は 以前の TLP が現ビートで終了 つまり is_eof_0[0] もセットされている場合にのみ適用されます is_sof_1: あるビートで開始するコンプリーション TLP が 2 つある場合 統合ブロックは そのビートでこの出力を High に駆動します 最初の TLP は常にバイト位置 0 で開始し 2 つ目の TLP はバイト位置 16 で開始します 同じビート内でバイト位置 16 より前に以前の TLP が終了した場合 ( 同じビートで is_eof_0[0] がセットされている場合 ) のみ 統合ブロックは 2 番目の TLP をバイト位置 16 で開始します is_eof_0[3:0]: これらの出力を使用して コンプリーション TLP の終了とデータバス上における最後の Dword 位置を示します is_eof_0[0] ビットのアサーションは このビートで終了するコンプリーション TLP が 1 つ以上あることを示します is_eof_0 のビット 0 がセットされると ビット [3:1] は現ビートで終了する TLP の最後の Dword のオフセットを示します 最後のバイトのオフセットは TLP の開始アドレスと長さ あるいはバイトイネーブル信号 byte_en[31:0] から判断できます あるビートで 2 つのコンプリーション TLP が終了する場合 is_eof_0[3:1] の設定が最初のコンプリーション TLP の最後の Dword のオフセットとなります ( この場合の範囲は 0 ~ 3) is_eof_1[3:0]: is_eof_1[0] のアサートは 同じビートにおける 2 つ目の TLP の終了を示します is_eof_1 のビット 0 がセットされると ビット [3:1] は現ビートで終了する 2 番目の TLP の最後の Dword のオフセットを示します 2 番目の TLP は バイトレーン 16 でのみ開始可能なため 範囲が 27 ~ 31 のバイトレーンでのみ終了できます したがって オフセット is_eof_1[3:1] は 2 つの値 (6 または 7) のいずれかとなります is_sof_1[0] がアクティブ High の場合 is_eof_0[0] 信号と is_sof_0 信号も同じビート内でアクティブ High になります is_sof_1 がアクティブ High の場合 is_sof_0 もアクティブ High になります is_eof_1 がアクティブ High の場合 is_eof_0 もアクティブ High になります 図 3-65 に ストラドルオプションが有効に設定された 256 ビット RC インターフェイスでの 4 つのコンプリーション TLP の転送を示します 最初のコンプリーション TLP (COMPL 1) は BEAT 1 の Dword 位置 0 で開始し BEAT 3 の Dword 位置 0 で終了しています 2 番目の TLP (COMPL 2) は 同じビートの Dword 位置 4 で開始しています この 2 番目の TLP には 1 Dword ペイロードしか含まれていないため これも同じビート内で終了します コンプリーション 3 には 1 Dword ペイロードしか含まれておらず コンプリーション 4 にはペイロードが含まれていないため 3 番目と 4 番目のコンプリーション TLP は BEAT 4 ですべての転送が完了しています UltraScale+ Device Block for PCIe v

170 X-Ref Target - Figure 3-65 図 3-65: ストラドルオプションが有効に設定されたリクエスターコンプリーションインターフェイスでのコンプリーション TLP の転送 UltraScale+ Device Block for PCIe v

171 コンプリーションの転送中断 関連するペイロードを含むリクエストの場合 転送されたペイロードにエラーがあると 統合ブロックは m_axis_rc_tuser バスの discontinue 信号をパケットの最後のビートでアサートしてこのエラーを通知できます これは 内部メモリからデータを読み出す間に統合ブロックが訂正不可能なエラーを検出したときに発生します パケットの最後のビートで discontinue 信号がアサートされたことを検出した場合 ユーザーアプリケーションはパケット全体を破棄する必要があります これは 統合ブロックでは致命的エラーと認識されます ストラドルオプションが使用されている場合 統合ブロックは discontinue 信号をアサートしたビートで 2 番目のコンプリーション TLP を開始せず そのビートで終了するコンプリーション TLP の転送を中断します コンプリーションエラーの対応 統合ブロックは リンクからコンプリーション TLP を受信すると 対応するリクエストを判断するためにスプリットコンプリーションテーブル内の未処理リクエストと一致させ それらのヘッダー内のフィールドと予想値を照らし合わせてあらゆるエラーを検出します その後 統合ブロックはコンプリーションディスクリプターの一部としてユーザーアプリケーションへ送信する 4 ビットのエラーコードでエラー状況を通知します また 統合ブロックは ディスクリプターの Request Completed ビット ( ビット 30) をセットして 特定リクエストの最後のコンプリーションを示します 表 3-13 に さまざまなエラーコードが示すエラー状況について説明しています 表 3-13: エラーコードのエンコード エラーコード説明 0000 エラーは検出されていないことを示します リンクから受信したコンプリーション TLP にエラーがあることを示します ユーザーアプリケーションは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーアプリケーションは対応するリクエストのすべてのステートを削除できます リクエストは UR CA または CRD ステータスを含むコンプリーション TLP で終了しています この場合 コンプリーションに関連するデータはなく コンプリーションディスクリプターの Request Completed がセットされています そのようなコンプリーションを統合ブロックから受信すると ユーザーアプリケーションは対応するリクエストを破棄できます 読み出しリクエストが不正なバイトカウントのコンプリーション TLP で終了しています バイトカウントが予想値と一致しないコンプリーション TLP が受信されると このエラーコードが通知されます コンプリーションディスクリプターの Request Completed ビットはセットされています そのようなコンプリーションを統合ブロックから受信すると ユーザーアプリケーションは対応するリクエストを破棄できます このコードは 送信されている現在のコンプリーションには 未処理リクエストと同じタグがあるが その Requester ID TC または Attribute フィールドが未処理リクエストのパラメーターと一致していないことを示します ユーザーアプリケーションは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーアプリケーションは対応するリクエストのすべてのステートを削除できます UltraScale+ Device Block for PCIe v

172 表 3-13: エラーコードのエンコード ( 続き ) エラーコード 説明 開始アドレスのエラーを示します コンプリーション TLP ヘッダーの下位アドレスが そのリクエストの次に予想されるバイトの開始アドレスと一致しませんでした ユーザーアプリケーションは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーアプリケーションは対応するリクエストのすべてのステートを破棄できます タグが無効であることを示します このエラーコードは コンプリーション TLP のタグが未処理リクエストのタグと一致していないことを示します ユーザーアプリケーションは ディスクリプターに続くすべてのデータを破棄する必要があります バイトカウントが無効であることを示します コンプリーションのバイトカウントがそのリクエストに対して予測されている合計バイト数を超えています このとき コンプリーションディスクリプターの Request Completed ビットもセットされています そのようなコンプリーションを統合ブロックから受信すると ユーザーアプリケーションは対応するリクエストを破棄できます コンプリーションのタイムアウトでリクエストが終了したことを示します リンクからコンプリーションを受信せずに未処理リクエストがタイムアウトした場合に このエラーコードが使用されます 統合ブロックは 各未処理リクエストに対してコンプリーションタイマーを保持し リクエスターコンプリーションインターフェイスを介してユーザーアプリケーションにダミーのコンプリーションディスクリプターを送信することによって コンプリーションのタイムアウトに対応します このため ユーザーアプリケーションはペンディングリクエストを終了したり リクエストを再送信できます このディスクリプターは リンクから受信したコンプリーション TLP に対応しないため Request Completed ビット ( ビット 30) タグフィールド ( ビット [71:64]) およびリクエスターファンクションフィールド ( ビット [55:48]) のみがこのディスクリプターで有効となります リクエストを生成したファンクションをターゲットとする Function-Level Reset (FLR) によってリクエストが終了したことを示します この場合 統合ブロックはリクエスターコンプリーションインターフェイスを介してユーザーアプリケーションへダミーのコンプリーションディスクリプターを送信するため ユーザーアプリケーションはペンディングリクエストを終了できます このディスクリプターは リンクから受信したコンプリーション TLP に対応しないため Request Completed ビット ( ビット 30) タグフィールド ( ビット [71:64]) リクエスターファンクションフィールド ( ビット [55:48]) のみがこのディスクリプターで有効となります タグが統合ブロックの内部で管理される場合 統合ブロック内のロジックによって そのリクエストのすべてのコンプリーションが受信されるまで あるいはリクエストがタイムアウトするまで ペンディングリクエストに割り当てられたタグが再び使用されることはありません ただし タグがユーザーアプリケーションで管理される場合は ユーザーアプリケーションがコンプリーションディスクリプターの Request Completed ビットをセットして 統合ブロックがリクエストの終了を示すまで そのリクエストに割り当てられたタグが再び使用されないようにする必要があります ユーザーアプリケーションは 0 以外のエラーコードを含むコンプリーションを受信した場合にペンディングリクエストを終了できますが コンプリーションディスクリプターの Request Completed ビットがセットされていない限り 関連するタグをリリースできません あるリクエストが複数のスプリットコンプリーションを受信し それらのいずれかにエラーが検出された場合にこのような状況が適用されます この場合 統合ブロックは エラーが検出された後であってもペンディングリクエストに対するコンプリーション TLP を継続して受信できますが タグが早期に再度割り当てられると これらのコンプリーションが別のリクエストと不正に一致してしまいます 場合によっては エラーを含むスプリットコンプリーションが受信された場合でもタグの再使用が可能になるまで 統合ブロックはリクエストがタイムアウトするまで待機する必要があります UltraScale+ Device Block for PCIe v

173 512 ビットコンプリーターインターフェイス ここでは 512 ビット AXI Stream インターフェイスに関連するユーザー側インターフェイスにおけるコンプリーターインターフェイスの動作について説明します 図 3-66 に ソフトブリッジ PCIe コアおよびユーザーアプリケーション間の接続を示します ソフトブリッジは 500 MHz の 256 ビットパケットを 250 MHz の 512 ビットパケットに変換します X-Ref Target - Figure 3-66 PCI Express Controller IP Block Completer Request (CQ) Interface MHz MHz User Application AXI Master m_axis_cq_* m_axis_cq_* AXI Slave RX Message Interface cfg_msg_* cfg_msg_* PCIe Completer Interface Non-Posted Credit Interface Compteter Completion (CC) Interface pcie_cq_np_req* pcie_cq_np_req* PCIe Completer Interface AXI Slave s_axis_cc_* s_axis_cc_* AXI Master PCI Express IP Hard Block Requester Request (RQ) Interface Soft Bridge AXI Slave s_axis_rq_* s_axis_rq_* AXI Master PCIe Requester Interface Tag Availability Status Flow Control Status Requester Completion (RC) Interface pcie_tag_av[3:0] pcie_tfc_*, cfg_fc_* pcie_tag_av[3:0] pcie_tfc_*, cfg_fc_* PCIe Requester Interface AXI Master m_axis_rc_* m_axis_rc_* AXI Slave 図 3-66: ソフトブリッジを用いた PCIe IP のブロック図 コンプリーターインターフェイスは AXI4-Stream プロトコルに基づいて PCIe リンクから受信したトランザクション ( メモリ I/O の読み出し / 書き込み メッセージ アトミック操作 ) をコンプリーターリクエスト (CQ) インターフェイスのトランザクションにマップします コンプリーターインターフェイスは すべての PCIe エンドポイントインプリメンテーションでユーザーアプリケーションに接続する必要がありますが ルートコンプレックスではオプションです コンプリーターインターフェイスは 各方向のデータ転送にそれぞれが用いられる 2 つの個別のインターフェイスで構成されます 各インターフェイスは AXI4-Stream プロトコルに基づいており 512 ビットの UltraScale+ Device Block for PCIe v

174 データ幅です コンプリーターリクエストインターフェイスは ( 関連するペイロードデータを含む ) リクエストをユーザーアプリケーションに転送するために用いられ コンプリーターコンプリーションインターフェイスはコンプリーションデータ ( ノンポステッドリクエスト向け ) をユーザーアプリケーションから受信してからリンクに転送するために用いられます これら 2 つのインターフェイスは独立して動作します つまり コアは 前回のリクエストのコンプリーションを受信すると同時にコンプリーターリクエストインターフェイスを介して新しいリクエストを転送できます コンプリーターリクエストインターフェイスの動作 (512 ビット ) 図 3-67 に コアのコンプリーターリクエストインターフェイスに関連する信号を示します コアは このインターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します このパケットは 128 ビットディスクリプターから始まり TLP にペイロードが含まれる場合はその後をデータが続きます X-Ref Target - Figure 3-67 図 3-67: コンプリーターリクエストインターフェイスの信号 UltraScale+ Device Block for PCIe v

175 コンプリーターリクエストインターフェイスは Vivado IDE でコアのカスタマイズ時に指定した 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 有効なデータの最初のバイトは レーン n = S (A mod 4) mod 64 に現れる必要があります この場合の A は 送信されるデータブロックのバイト単位の開始アドレスで S はディスクリプターの最初のバイトが現れるレーン番号です メッセージおよびコンフィギュレーションリクエストの場合 アドレス A は 0 として見なされます ストラドルオプションが使用されていない場合 開始レーン番号 S は必ず 0 になりますが このオプションが有効のときは 0 または 32 に設定できます この 128 ビットアドレスアライメントモードでは 512 ビットバス上のペイロードの開始は必ず 128 ビット境界に揃えられます ペイロードの最初のバイトに対応するレーン番号は n = (S (A mod 16)) mod 64 で求められます この場合の S は ディスクリプターの最初のバイトが現れるレーン番号 (0 または 32) で A はペイロードの最初のバイトに対応するメモリまたは I/O アドレスです つまり ペイロードは および 28 の 4 つのバイトレーンのうち 1 つでのみ開始できます ディスクリプターの終わりとペイロードの最初のバイトの開始との間にギャップがある場合 NULL バイトで埋められます インターフェイスは インターフェイスを介して最大 2 つの TLP を同じビートで転送可能なストラドルオプションもサポートしています ストラドルオプションは Dword アライメントモードとの併用でのみ可能で 128 ビットアドレスアライメントモードを使用時はサポートされません 次のセクションでは 各ビートに 1 つの TLP を想定して説明します ストラドルオプションを有効にしたインターフェイスの動作は CQ インターフェイスのストラドルオプション で説明しています コンプリーターリクエストディスクリプターのフォーマット コアは コンプリーターリクエストインターフェイスを介してリンクから受信した各リクエスト TLP を独立した AXI4-Stream パケットとして転送します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 16 バイト長となり リクエストパケットの最初の 16 バイトで送信されます ディスクリプターは 512 ビットインターフェイスでは必ず最初のビートで転送されます 図 3-68 図 3-69 図 3-70 および図 3-71 に ディスクリプターのフォーマットをリクエストタイプ別に示しています 図 3-68 に示すフォーマットは 転送されているリクエスト TLP がメモリ読み出し / 書き込みリクエスト I/O 読み出し / 書き込みリクエスト またはアトミック操作リクエストのときに適用されます 図 3-69 に示すフォーマットは ベンダー定義メッセージ ( タイプ 0 またはタイプ 1) 専用です 図 3-70 に示すフォーマットは すべての ATS メッセージ (Invalid Request Invalid Completion Page Request PRG Response) に使用されます その他のメッセージのディクスリプターについては 図 3-71 に示すフォーマットとなります X-Ref Target - Figure DW + 1 DW Address [63:2] Address Type (AT) DW + 3 DW R Attr TC Target Function BAR ID BAR Aperture Tag Device/Function Bus Requester ID R Dword Count Req Type X12217 図 3-68: メモリリクエスト I/O リクエスト アトミック操作リクエストのコンプリーターリクエストディスクリプターフォーマット UltraScale+ Device Block for PCIe v

176 X-Ref Target - Figure DW TL Header Byte 15 Vendor - Defined Header Bytes TL Header Byte 14 TL Header Byte 13 TL Header Byte Vendor ID +2 DW Bus Device/Function Destination ID DW R Attr TC R Message Routing Msg Code Tag DW + 2 Bus Device/FunctionR Requester ID +9 Req Type +8 Dword Count X12219 図 3-69: ベンダー定義メッセージのコンプリーターリクエストディスクリプターフォーマット X-Ref Target - Figure DW + 1 DW TL Header Bytes 8-15 TL Header Byte 15 TL Header Byte 14 TL Header Byte 13 TL Header Byte 12 TL Header Byte 11 TL Header Byte 10 TL Header Byte 9 TL Header Byte DW + 3 DW R Attr TC R Message Routing Msg Code Tag Bus Device/Function R Requester ID Req Type Dword Count X12216 図 3-70: ATS メッセージのコンプリーターリクエストディスクリプタフォーマット UltraScale+ Device Block for PCIe v

177 X-Ref Target - Figure DW + 1 DW R OBFF Code (for OBFF message); Reserved (for others) No-Snoop Latency (for LTR message); Reserved (for others) Snoop Latency (for LTR message); Reserved (for others) 127 DW DW Device / Function R Attr TC R Message Routing Requester ID Enable Msg Code Tag 図 3-71: その他メッセージのコンプリーターリクエストディスクリプターフォーマット +11 Bus Requester ID 表 3-14: コンプリーターリクエストディスクリプターのフィールド ビットインデックスフィールド名説明 +10 R +9 Req Type +8 Dword Count 1:0 Address Type ( アドレスタイプ ) 63:2 Address ( アドレス ) 74:64 Dword Count (Dword カウント ) 78:75 Request Type ( リクエストタイプ ) このフィールドは メモリトランザクションおよびアトミック操作専用に定義されます リクエストの TL ヘッダーから抽出された AT ビットが含まれます 00: リクエスト内のアドレスは変換されない 01: トランザクションは変換リクエスト 10: リクエスト内のアドレスは変換される 11: 予約 このフィールドは メモリ I/O およびアトミック操作の各リクエストに適用されます TL ヘッダーからのアドレスを提供します リクエストで指定された最初の Dword のアドレスです m_axis_cq_tuser からの First_BE ビットを使用してバイト単位のアドレスを判断する必要があります トランザクションが 32 ビットアドレスを指定する場合 このフィールドのビット [63:32] は 0 になります これらの 11 ビットは 読み出しまたは書き込みの対象となっているブロックのサイズ ( メッセージの場合は メッセージペイロードのサイズ ) を示します (Dword 単位 ) 範囲は 0 ~ 256 Dword です I/O アクセスの場合 Dword カウントは常に 1 です メモリの読み出し / 書き込みリクエストの長さが 0 の場合 Dword カウントは 1 になり First_BE ビットはすべて 0 にセットされます トランザクションタイプを特定します トランザクションタイプとそれらのエンコードの詳細は 表 3-15 に示します UltraScale+ Device Block for PCIe v

178 表 3-14: コンプリーターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 95:80 Requester ID ( リクエスター ID) 103:96 Tag ( タグ ) 111:104 Target Function ( ターゲットファンクション ) 114:112 BAR ID 120:115 BAR アパーチャ ( 空き部分 ) 123:121 Transaction Class (TC) リクエストに関連する PCI リクエスター ID です RID のこれまでの解釈で これらの 16 ビットは 8 ビットのバス番号 [95:88] 5 ビットのデバイス番号 [87:83] および 3 ビットのファンクション番号 [82:80] に分割されます ARI が有効のとき ビット [95:88] は 8 ビットのバス番号を伝搬し [87:80] はファンクション番号を提供します リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元のコアへコンプリーションデータを供給する必要があります リクエストに関連する PCIe タグです リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元のコアへコンプリーションデータを供給する必要があります メモリの書き込みおよびメッセージの場合 このフィールドを無視しても問題ありません このフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエストがターゲットとしているファンクション番号を提供し BAR チェックで指定されます ARI を使用する場合 このフィールドのすべての 8 ビットが有効です 使用しない場合は ビット [106:104] のみが有効です このフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエスト内のアドレス向けに一致した BAR 番号を提供します 000 = BAR 0 (VF の場合 VF-BAR 0) 001 = BAR 1 (VF の場合 VF-BAR 1) 010 = BAR 2 (VF の場合 VF-BAR 2) 011 = BAR 3 (VF の場合 VF-BAR 3) 100 = BAR 4 (VF の場合 VF-BAR 4) 101 = BAR 5 (VF の場合 VF-BAR 5) 110 = 拡張 ROM アクセス 64 ビットトランザクションの場合 一致する 1 組の BAR の下位アドレスとして BAR 番号が提供されます ( つまり 0 2 または 4) この 6 ビットのフィールドは メモリ I/O およびアトミック操作の各リクエスト専用に定義されます リクエストと一致する BAR のアパーチャ設定を提供します この情報は メモリまたは I/O 空間のアドレス指定でユーザーが使用するビットを決定する際に有用です たとえば 12 という値は 一致する BAR のアパーチャが 4K であることを示します したがって ユーザーはアドレスのビット [63:12] を無視できます VF BAR の場合 この出力で提供される値は BAR で記録されている 1 つの VF が使用するメモリ空間に基づきます リクエストに関連する PCIe トランザクションクラス (TC) です リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元のコアへコンプリーションデータを供給する必要があります UltraScale+ Device Block for PCIe v

179 表 3-14: コンプリーターリクエストディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 126:124 Attributes ( 属性 ) 114:112 15:0 63:32 Message Routing ( メッセージルーティング ) Destination ID ( デスティネーション ID) Vendor-Defined Header ( ベンダー定義のヘッダー ) 63:0 ATS Header (ATS ヘッダー ) これらのビットは リクエストに関連する Attribute ビットのセットを提供します ビット 124 は No Snoop ビットで ビット 125 は Relaxed Ordering ビットです ビット 126 は ID-Based Ordering ビットで メモリリクエストとメッセージ専用にセットできます リクエストがノンポステッドトランザクションの場合 ユーザーコンプリーターアプリケーションはこのフィールドを格納し 元のコアへコンプリーションデータを供給する必要があります このフィールドはすべてのメッセージ用に定義されます これらのビットは TL ヘッダーからの 3 ビットの配線フィールド r[2:0] を提供します このフィールドはベンダー定義メッセージにのみ適用されます メッセージが ID によって配線される場合 ( つまり メッセージ配線フィールドが 010 バイナリ ) このフィールドはメッセージの Destination ID を提供します このフィールドはベンダー定義メッセージにのみ適用されます TL ヘッダーの Dword 3 から抽出されたバイトが含まれます このフィールドは ATS メッセージにのみ適用可能です TL ヘッダーの Dword 2 と Dword 3 から抽出されたバイトが含まれます 表 3-15: トランザクションタイプ Request Type ( リクエストタイプ ) ( バイナリ ) 0000 メモリ読み出しリクエスト 説明 0001 メモリ書き込みリクエスト 0010 I/O 読み出しリクエスト 0011 I/O 書き込みリクエスト 0100 メモリのフェッチおよび追加リクエスト 0101 メモリの無条件スワップリクエスト 0110 メモリの比較およびスワップリクエスト 0111 読み出しリクエストのロック ( レガシデバイスでのみ可能 ) 1000 タイプ 0 のコンフィギュレーション読み出しリクエスト ( リクエスター側のみ ) 1001 タイプ 1 のコンフィギュレーション読み出しリクエスト ( リクエスター側のみ ) 1010 タイプ 0 のコンフィギュレーション書き込みリクエスト ( リクエスター側のみ ) 1011 タイプ 1 のコンフィギュレーション書き込みリクエスト ( リクエスター側のみ ) 1100 ATS およびベンダー定義メッセージを除くすべてのメッセージ 1101 ベンダー定義メッセージ 1110 ATS メッセージ 1111 予約 UltraScale+ Device Block for PCIe v

180 コンプリーターを介すメモリ書き込み動作 図 3-72 は コンプリーターリクエストインターフェイスを介してリンクから受信したメモリ書き込み TLP の Dword アライメント転送を示しています 図示する目的で ユーザーメモリに書き込まれるデータブロックの開始 Dword アドレスは 整数 m > 0 のとき (m ) と仮定しています サイズは n Dword と仮定し n = k 16-1 (k > 1) となります 転送は 16 ディスクリプターバイトから始まり その直後にペイロードバイトが続きます m_axis_cq_tvalid 信号は パケットが送信される間アサートされたままになります ユーザーロジックは m_axis_cq_tready をディアサートしてビートを適時延ばすことができます AXI-Stream インターフェイス信号 m_axis_cq_tkeep ( 各 Dword 位置に 1 つ ) は ディスクリプター およびディスクリプターとペイロード間に挿入される NULL バイトを含む パケットの有効な Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで m_axis_cq_tkeep ビットは継続的に 1 にセットされます パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り tkeep ビットを 0 にできます m_axis_cq_tlast 信号は必ずパケットの最後のビートでアサートされます コンプリーターリクエストインターフェイスでは m_axis_cq_tuser バスに First Byte Enable ビットと Last Enable ビットも含まれます これらのビットはパケットの最初のビートでアクティブになり ペイロードの最初と最後の Dword にある有効なバイト情報を提供します m_axi_cq_tuser バスは インターフェイスのユーザー側に関連するロジックを簡潔なものにするため または追加の機能をサポートするために利用可能なオプションの信号をいくつか提供します is_sop 信号は パケットのディスクリプターがバス上にある場合 各パケットの最初のビートでアサートされます ストラドルオプションが使用されていない場合 m_axi_cq_tuser 内の sop および eop で示されるその他の信号は リクエストの転送に関連しません バイトイネーブル出力 byte_en[63:0] ( 各バイトレーンに 1 つ ) はペイロードの有効バイトを示します これらの信号は 有効なペイロードバイトが対応するレーンに存在する場合にのみアサートされます ( ディスクリプターや NULL バイトに対してはアサートされない ) ペイロードサイズが 2 Dword 以下の場合を除き アサートされたバイトイネーブルビットはペイロードの開始から常に連続します 2 Dword 以下の書き込みの場合 byte_en の 1 は連続しません UltraScale+ Device Block for PCIe v

181 X-Ref Target - Figure 3-72 図 3-72: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード ) UltraScale+ Device Block for PCIe v

182 その他の特殊なケースとして byte_en ビットがすべて 0 にセットされてコアが 1 Dword のペイロードを転送するときの 長さ 0 のメモリ書き込みが挙げられます つまり あらゆるケースでユーザーロジックは byte_en 信号を直接使用することで 関連するバイトをメモリに書き込むことができます Dword アライメントモードでは ペイロードの最初の有効バイトのアドレスに基づいてディスクリプターの最後と最初のペイロードバイト間に または 3 バイト位置分のギャップが存在することがあります ペイロードにある最初の有効バイトの実際の位置は m_axis_cq_tuser バスの first_be[3:0] または byte_en[63:0] のいずれかを用いて判断できます 受信した TLB に Transaction Processing Hint が含まれる場合 コアは m_axis_cq_tuser バスの信号でヒント (TPH ステアリングタグおよびステアリングタグタイプ ) に関連するパラメーターを転送します (15 ページの表 2-7 を参照 ) 図 9 のタイミング図は コンプリーターリクエストインターフェイスを介してリンクから受信したメモリ書き込み TLP の 128 ビットアドレスアライメント転送を示しています 図示する目的で ユーザーメモリに書き込まれるデータの開始 Dword アドレスは 整数 m > 0 のとき (m ) と仮定しています サイズは n Dword と仮定し n = k 16-1 (k > 1) となります アドレスアライメントモードでは ペイロードの送信は必ず 4 等分されたビットグループのうち第 1 ビットグループのディスクリプターに続いて 最初のビートの第 2 ビットグループ ( ビット 255:128) で開始します ペイロードの最初の有効 Dword のアドレスに基づいて ペイロードの最初の Dword は 第 2 ビットグループにある 4 つの Dword 位置のいずれにも出力できます ディスクリプターとペイロード間のギャップにおいて keep 出力の m_axis_cq_tkeep は High に保持されます ペイロードにある最初の有効バイトの実際の位置は ディスクリプターにあるアドレスの LSB ( 最下位ビット ) または m_axis_cq_tuser バスのバイトイネーブルビット byte_en[63:0] のいずれかを用いて判断できます 2 Dword 以下の書き込みの場合 byte_en にセットされている 1 はペイロードの開始から連続しません 長さ 0 のメモリ書き込みの場合 ペイロードバイトに対して byte_en ビットがすべて 0 にセットされてコアが 1 Dword のペイロードを転送します UltraScale+ Device Block for PCIe v

183 X-Ref Target - Figure 3-73 図 3-73: コンプリーターリクエストインターフェイスでのメモリ書き込みトランザクション (128 ビットアドレスアライメントモード ) UltraScale+ Device Block for PCIe v

184 コンプリーターメモリ読み出し AXI4-Stream パケットに 16 バイトディスクリプターしか含まれない場合を除いて メモリ読み出しリクエストはメモリ書き込みリクエストと同様にコンプリーターリクエストインターフェイス全体で転送されます 図 3-75 は コンプリーターリクエストインターフェイスを介してリンクから受信したメモリ読み出し TLP の転送を示しています パケットは インターフェイスを介してシングルビートで送信されます m_axis_cq_tvalid 信号は パケットが送信される間アサートされたままになります ユーザーロジックは m_axis_cq_tready をディアサートしてビートを延ばすことができます m_axis_cq_tuser バスの is_sop 信号は 最初のディスクリプターバイトがバスに存在する場合アサートされます X-Ref Target - Figure 図 3-75: コンプリーターリクエストインターフェイスでのメモリ読み出しトランザクション 最初および最後の Dword の読み出しリクエストに関連するバイトイネーブルビットは m_axis_cq_tuser 側帯波バスのコアで提供されます これらのビットはディスクリプターの転送中に有効になり ユーザーロジックはこれらを使用してリクエストに関連するバイト単位の開始アドレスとバイトカウントを判断する必要があります 1 Dword や 2 Dword の読み出しといった特殊なケースでは バイトイネーブルは非連続にできます それ以外では バイトイネーブルは連続しています Dword カウントフィールドが 1 にセットされ 最初のバイトイネーブルと最後のバイトイネーブルが 0 にセットされた状態で 長さ 0 のメモリ読み出しがコンプリーターリクエストインターフェイスで送信されます ユーザーロジックは コンプリーションを用いて各メモリ読み出しリクエストに応答する必要があります 読み出しによって要求されたデータは 1 つのコンプリーションまたは複数のスプリットコンプリーションとして送信されます これらのコンプリーションは コアのコンプリーターコンプリーションインターフェイスに送信する必要があります 2 つの異なるリクエストに対応するコンプリーションは順序を問わず送信されますが 同じリクエストに対応するスプリットコンプリーションについては順序を追って送信する必要があります コンプリーターコンプリーションインターフェイスの動作は 64/128/256 ビットコンプリーターインターフェイス および 512 ビットコンプリーターインターフェイス を参照してください UltraScale+ Device Block for PCIe v

185 I/O 書き込み コンプリーターリクエストインターフェイスにおける I/O 書き込みリクエストの転送は 1 Dword ペイロードでのメモリ書き込みリクエストと同様です 転送は 128 ビットディスクリプターから始まり その後 1 Dword ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後に Dword ペイロードが続きます 128 ビットアドレスアライメントモードを使用する場合 Dword ペイロードが 255:128 ビットで供給され そのアライメントはディスクリプターのアドレスに基づきます m_axis_cq_tuser 内の First Byte Enable ビットはペイロードにおける有効なバイトを示します バイトイネーブルビット byte_en もこの情報を提供します I/O 書き込みはノンポステッドトランザクションであるため ユーザーロジックはこれに対してデータペイロードを含まないコンプリーションを用いて応答する必要があります I/O リクエストに対するコンプリーションは順序を問わず送信されます I/O 書き込みトランザクションに関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドに CA ( コンプリーターの中断 ) または UR ( サポートされないリクエスト ) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 64/128/256 ビットコンプリーターインターフェイス および 512 ビットコンプリーターインターフェイス を参照してください I/O 読み出し コンプリーターリクエストインターフェイスにおける I/O 読み出しリクエストの転送はメモリ読み出しリクエストと同様で そこにはディスクリプターしか含まれません 要求されたデータの長さは常に 1 Dword となり m_axis_cq_tuser 内の First Byte Enable ビットは読み出し対象の有効バイトを示します ユーザーロジックは 1 Dword のコンプリーション ( またはエラーの場合はデータを含まないコンプリーション ) で I/ O 読み出しリクエストに応答する必要があります 2 つの異なる I/O 読み出しリクエストに対応するコンプリーションは順序を問わず送信されます I/O 読み出しトランザクションに関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドに CA ( コンプリーターの中断 ) または UR ( サポートされないリクエスト ) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 64/128/256 ビットコンプリーターインターフェイス および 512 ビットコンプリーターインターフェイス を参照してください コンプリーターリクエストインターフェイスでのアトミック操作 コンプリーターリクエストインターフェイスにおけるアトミック操作リクエストの転送は メモリ書き込みリクエストと同様です アトミック操作のペイロードの範囲は 1 から 8 Dword までで 開始アドレスは必ず Dword 境界に揃えられます 転送は 128 ビットディスクリプターから始まり その後ペイロードが続きます Dword アライメントモードを使用する場合 ディスクリプターの直後に最初の Dword ペイロードが続きます 128 ビットアドレスアライメントモードを使用する場合 Dword ペイロードが 255:128 ビットで開始され そのアライメントはディスクリプターのアドレスに基づきます keep 出力の m_axis_cq_tkeep は ペイロードの終わりを示します また m_axis_cq_tuser 内の byte_en 信号は ペイロード内の有効バイトを示します m_axis_cq_tuser 内の First Byte Enable と Last Byte Enable ビットは使用できません アトミック操作はノンポステッドトランザクションであるため ユーザーロジックはこれに対して操作結果を含むコンプリーションを用いて応答する必要があります この操作に関連するエラーが発生した場合 コンプリーションディスクリプターにあるコンプリーションステータスフィールドに CA ( コンプリーターの中断 ) または UR ( サポートされないリクエスト ) を適宜設定してリクエスターにこのエラーを通知することができます コンプリーターコンプリーションインターフェイスの動作は 64/128/256 ビットコンプリーターインターフェイス および 512 ビットコンプリーターインターフェイス を参照してください コンプリーターリクエストインターフェイスでのメッセージリクエスト コンプリーターリクエストインターフェイスにおけるメッセージの転送はメモリ書き込みリクエストと同様ですが ペイロードが常に存在するわけではない点のみ異なります 転送は 128 ビットディスクリプターから始まり ペイロードがある場合はその直後にペイロードが続きます ペイロードは 使用しているアドレス指定モードに関係なく バイトレーン 16 で必ず開始します ユーザーロジックは m_axis_cq_tlast および m_axis_cq_tkeep 信号のステートからペイロードの終わりを判断できます また m_axis_cq_tuser 内の byte_en 信号は ペイロード内の有効バイトを示します m_axis_cq_tuser 内の First Byte Enable と Last Byte Enable ビットは使用できません UltraScale+ Device Block for PCIe v

186 コンプリーターリクエストインターフェイスを介してメッセージを送信するには ATTR_AXISTEN_IF_ENABLE_RX_MSG_INTFC 属性を 0 にセットする必要があります この属性が 0 にセットされている場合 ATTR_AXISTEN_IF_ENABLE_MSG_ROUTE 属性を使用して コンプリーターリクエストインターフェイスで送信する目的のメッセージタイプを選択できます ( 図 3-7 を参照 ) 属性ビットが 1 にセットされている場合 インターフェイスで対応するメッセージタイプの送信が可能になり 0 にセットされている場合 コアがメッセージをフィルタリングします ATTR_AXISTEN_IF_ENABLE_RX_MSG_INTFC が 1 にセットされている場合 メッセージはコンプリーターリクエストインターフェイスで送信されません その代わりに 受信したメッセージ情報が受信メッセージ専用インターフェイスを介して送信されます ( 受信メッセージインターフェイス ) 転送の中断 関連するペイロードを含むリクエストの場合 転送されたペイロードにエラーがあると インターフェイスは m_axis_cq_tuser バスの discontinue 信号をパケットの最後のビートで (m_axis_cq_tlast と共に ) アサートしてこのエラーを通知できます これは 内部メモリからデータを読み出す間にコアが訂正不可能なエラーを検出したときに発生します パケットの最後のビートで discontinue 信号がアサートされたことを検出した場合 ユーザーアプリケーションはパケット全体を破棄する必要があります ストラドルオプションが有効であっても インターフェイスは discontinue がアサートされた同じビートで新しいパケットの転送を開始することはできません ノンポステッドリクエストの選択的フロー制御 PCI Express Specifications では ユーザーロジックがインターフェイスを介してノンポステッドトランザクションを受信できなくても コンプリーターリクエストインターフェイスはこのトランザクションを提供し続けることが規定されています この機能を有効にするために コアはクレジットベースのフロー制御メカニズムをコンプリーターインターフェイスにインプリメントします このインターフェイスを介して ユーザーロジックはポステッドリクエストに影響を及ぼすことなくノンポステッドリクエストのフローをインターフェイス全体で制御できます ユーザーロジックは pcie_cq_np_req 信号を使用してノンポステッドリクエストを受信するためのバッファーの利用可否をコアに伝えます 利用可能なクレジットが 0 ではない場合にのみ コアはノンポステッドリクエストをユーザーロジックに送信します クレジット数が不足しているためノンポステッドリクエストの送信が中断されている間 コアはポステッドリクエストを送信し続けます ノンポステッドリクエストの送信に対してクレジットメカニズムによってバックプレッシャーが適用されない場合 コアはリンクから受信した同じ順序でポステッドリクエストおよびノンポステッドリクエストを送信します コアは コンプリーターリクエストインターフェイスでノンポステッドリクエストに利用可能なクレジットを追跡するための内部クレジットカウンターを備えています 次のアルゴリズムを使用して利用可能なクレジットの追跡を維持します リセットでは カウンターは 0 にセットされます インターフェイスのリセットが解除されたら クロックサイクルごとにカウンターは次のような動作となります pcie_cq_np_req が 0 ではなく ノンポステッドリクエストがこのサイクルで送信されない場合 クレジットカウントが 32 の飽和限界に達していなければ 1 つずつインクリメントされます pcie_cq_np_req = 2'b01 の場合は 1 ずつインクリメントし pcie_cq_np_req = 2'b10 または 2'b11 の場合は 2 ずつインクリメントします pcie_cq_np_req = 2'b00 で 1 つのノンポステッドリクエストがこのサイクルで送信される場合 クレジットカウントがまだ 0 になっていなければ 1 つずつデクリメントされます pcie_cq_np_req = 2'b00 で 2 つのノンポステッドリクエストがこのサイクルで送信される場合 クレジットカウントがまだ 0 になっていなければ 2 倍デクリメントされます 上記に該当しない場合 クレジットカウントの値は変わりません クレジットカウントが 1 以上の場合 コアはユーザーロジックへのノンポステッド TLP の送信を開始します ユーザーアプリケーションは ノンポステッドリクエストを受信できる状態になるたびに pcie_cq_np_req に 1 つまたは 2 つのクレジットを提供するか ノンポステッドリクエストに対する選択的なバックプレッシャーを実行する必要がない場合は永久的に 2'b11 に設定された状態を保持できます クレジットカウントが常に 0 以外の場合 コアはリンクから受信した同じ順序でポステッドリクエストおよびノンポステッドリクエストを送信します カウントが一定時間 0 の状態が続くと ノンポステッドリクエストはコアの FIFO に保管できます その後 クレジット UltraScale+ Device Block for PCIe v

187 カウントが 0 以外になると コアは既にユーザーアプリケーションに送信されたポステッドリクエストよりも前に到達して保管していたノンポステッドリクエストを先に送信し その後リンクから受信した順にリクエストを送信します pcie_cq_np_req の設定は コンプリーターリクエストインターフェイス上のパケット送信と揃う必要はありません ユーザーアプリケーションでは 出力 ( pcie_cq_np_req_ count[5:0]) で現在のクレジットカウント値をモニタリングできます カウンターは 32 が最大です 内部パイプラインの遅延が原因となり コアが pcie_cq_np_req 入力でのパルスを受信してから pcie_cq_np_req_count 出力をアップデートするまでの間には数サイクルの遅延が生じます このため ユーザーロジックにある程度のバッファー空間がある場合は あらかじめクレジットを提供しておくと クレジット不足でコアがノンポステッドリクエストを保持することがなくなります CQ インターフェイスのストラドルオプション 前のリクエストがデータバス上の Dword 位置 7 またはその前で終了した場合 コアはリクエスターコンプリーションインターフェイス上にある新しいリクエストの転送を同じビートで開始できます このストラドルオプションは Vivado IDE でコアをカスタマイズする際に有効にします ストラドルオプションは Dword アライメントモードとの併用でのみ使用できます ストラドルオプションが有効に設定されている場合 リクエスト TLP はパケット境界のない連続するストリームとして AXI4-Stream インターフェイスを介して転送されます したがって m_axis_rc_tkeep および m_axis_rc_tlast 信号は このインターフェイスを介して送信される TLP の境界を判断するのに有効ではありません ( ストラドルオプションが使用されている場合 コアは m_axis_rc_tkeep をすべて 1 m_axis_rc_tlast をすべて 0 にセットする ) その代わりに m_axis_rc_tuser バス内の次の信号を使用して TLP のデリニエーション ( 輪郭を決定する ) が実行されます is_sop[0]: あるビートで開始するリクエスト TLP が 1 つ以上ある場合 コアはそのビートでこの出力をアクティブ High に設定します この TLP のディスクリプターの最初のバイトの位置は 次のように決定されます 前の TLP が現ビートの前で終了する場合 ディスクリプターの最初のバイトはバイトレーン 0 にあります 前の TLP が現ビートで継続している場合 このディスクリプターの最初のバイトはバイトレーン 32 にあります この条件は 以前の TLP が現ビートで終了 つまり is_eop[0] もセットされている場合にのみ適用されます is_sop[1]: あるビートで開始するリクエスト TLP が 2 つある場合 コアは その同じビートでこの出力をアサートします 最初の TLP は常にバイト位置 0 で開始し 2 つ目の TLP はバイト位置 32 で開始します 同じビート内でバイト位置 32 より前に以前の TLP が終了した場合 ( 同じビートで is_eop[0] がセットされている場合 ) のみ コアは 2 番目の TLP をバイト位置 32 で開始します is_eop[0]: この出力は リクエスト TLP の終わりを示すために使用されます このアサートにより 現ビートで終了する TLP が 1 つ以上存在することが示されます is_eop0_ptr[3:0]: is_eop[0] がアサートされると is_eop0_ptr[3:0] は現ビートで終了する該当 TLP の最後の Dword のオフセットを示します ペイロードが含まれる TLP の場合 最後のバイトのオフセットは TLP の開始アドレスと長さ あるいはバイトイネーブル信号 byte_en[63:0] からも判断できます is_eop[1]: この出力は 現ビートで終了する TLP が 2 つ存在することを示すために使用されます このアサートにより 現ビートで終了する TLP が 1 つ以上存在することが示されます is_eop[0] がセットされている場合にのみ is_eop[1] もセット可能です is_eop1_ptr[3:0]: is_eop[1] がアサートされると is_eop1_ptr[3:0] は現ビートで終了する 2 番目の TLP の最後の Dword のオフセットを示します ペイロードが含まれる TLP の場合 最後のバイトのオフセットは TLP の開始アドレスと長さ あるいはバイトイネーブル信号 byte_en[63:0] からも判断できます 2 番目の TLP は バイトレーン 32 でのみ開始可能なため 範囲が 47 ~ 63 のバイトレーンでのみ終了できます したがって オフセット is_eop1_ptr[3:0] は 11 ~ 15 の範囲の値となります UltraScale+ Device Block for PCIe v

188 X-Ref Target - Figure 3-76 図 3-76: ストラドルオプションが有効に設定されたコンプリーターリクエストインターフェイスでのリクエスト TLP の転送 図 3-76 に ストラドルオプションが有効に設定されたコンプリーターリクエストインターフェイスでの 4 つのリクエスト TLP の転送を示します すべての TLP について ペイロードの最初の Dword は 間隔をあけずディスクリプターの後に必ず続きます 最初のリクエスト TLP (REQ 1) は BEAT 1 の Dword 位置 0 で開始し BEAT 3 の Dword 位置 5 で終了しています 2 番目の TLP (REQ 2) は 同じビートの Dword 位置 8 で開始しています この 2 番目の TLP には 4 Dword ペイロードしか含まれていないため これも同じビート内で終了します REQ 3 には 1 Dword ペイロードしか含まれておらず REQ 4 にはペイロードが含まれていないため 3 番目と 4 番目のリクエスト TLP は BEAT 4 ですべての転送が完了しています UltraScale+ Device Block for PCIe v

189 コンプリーターコンプリーションインターフェイスの動作 (512 ビット ) 図 3-77 に コアのコンプリーターコンプリーションインターフェイスに関連する信号を示します コアは このインターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します パケットは 96 ビットディスクリプターから始まり コンプリーションにペイロードが含まれる場合はその後をデータが続きます X-Ref Target - Figure 3-77 PCI Express 512-bit Soft Bridge PCIe Completer Completion Interface AXI4-Stream Slave s_axis_cc_tdata[511:0] s_axis_cc_tparity[63:0] s_axis_cc_tvalid s_axis_cc_tready s_axis_cc_tlast s_axis_cc_tuser[80:0] AXI4-Stream Master Client Application PCIe Completer-Side Interface 図 3-77: コンプリーターコンプリーションインターフェイスの信号 コンプリーターリクエストインターフェイスは Vivado IDE でコアのカスタマイズ時に指定した 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 有効なデータの最初のバイトは レーン n = S (A mod 4) mod 64 に現れる必要があります この場合の A は 送信されるデータブロックのバイト単位の開始アドレスで S はディスクリプターの最初のバイトが現れるレーン番号です アドレス A は ディスクリプターの下位アドレスフィールドの値として見なされます ストラドルオプションが使用されていない場合 開始レーン番号 S は必ず 0 になりますが このオプションが有効のときは 0 または 32 に設定できます 128 ビットアドレスアライメントモードでは ペイロードの最初のバイトに対応するレーン番号は n = (S (A mod 16)) mod 64 で求められます この場合の S は ディスクリプターの最初のバイトが現れるレーン番号 (0 または 32) で A はペイロードの最初のバイトに対応するアドレスです ディスクリプターの終わりとペイロードの最初のバイトの開始との間にギャップがある場合 NULL バイトで埋められます インターフェイスは インターフェイスを介して最大 2 つの TLP を同じビートで転送可能なストラドルオプションもサポートしています ストラドルオプションは Dword アライメントモードとの併用でのみ可能で 128 ビットアドレスアライメントモードを使用時はサポートされません 次のセクションでは 各ビートに 1 つの TLP を想定して説明します ストラドルオプションを有効にしたインターフェイスの動作は CC インターフェイスのストラドルオプション で説明しています コンプリーターコンプリーションディスクリプターのフォーマット ユーザーアプリケーションは コアのコンプリーターコンプリーションインターフェイスに独立した AXI4-Stream パケットとしてコンプリーターリクエストに対するコンプリーションデータを送信します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 12 バイト長となり コンプリーションパケットの最初の 12 バイトで送信されます ディスクリプターは コンプリーション TLP の最初のビートで転送されます ユーザーアプリケーションが 1 つのリクエストのコンプリーションデータを複数のスプリットコンプリーションに分割する場合は 個別にディスクリプターを備えた AXI4-Stream パケットとして各スプリットコンプリーションを送信する必要があります コンプリーターコンプリーションディスクリプターのフォーマットは 図 3-77 を参照してください コンプリーターリクエストディスクリプターの各フィールドの詳細は 表 3-16 で説明しています UltraScale+ Device Block for PCIe v

190 X-Ref Target - Figure 3-78 図 3-78: コンプリーターコンプリーションディスクリプターのフォーマット 表 3-16: コンプリーターコンプリーションディスクリプターのフィールド ビットインデックス フィールド名 6:0 Lower Address ( 下位アドレス ) 9:8 Address Type ( アドレスタイプ ) 28:16 Byte Count ( バイトカウント ) 29 Locked Read Completion ( ロックされた読み出しコンプリーション ) 説明 メモリ読み出しのコンプリーションの場合 このフィールドは 送信されるメモリブロックのバイト単位の開始アドレスの下位 7 ビットに設定される必要があります その他のコンプリーションの場合 この下位アドレスはすべて 0 にセットされる必要があります このフィールドは メモリトランザクションおよびアトミック操作のコンプリーション用に定義されます これらのコンプリーションの場合 対応するリクエストのディスクリプターの AT ビットをユーザーがこのフィールドへコピーする必要があります その他のコンプリーションの場合 このフィールドは 0 にセットされる必要があります これらの 13 ビットは 0 ~ 4,096 バイトの範囲の値に設定できます シングルコンプリーションを使用してメモリ読み出しリクエストが完了する場合 このバイトカウント値がペイロードサイズをバイト単位で示します I/O の読み出しコンプリーションや I/O の書き込みコンプリーションの場合 このフィールドは 4 にセットされる必要があります 長さ 0 のメモリ読み出しに対するコンプリーションを送信している間 バイトカウント値は 1 にセットされる必要があり ダミーのペイロードとして 1 Dword がディスクリプターの後に送信される必要があります 各メモリ読み出しコンプリーションでは このバイトカウントフィールドがリクエストを完了するのに必要となる残りのバイト数を示します ( コンプリーションで返ってきたバイト数を含む ) 複数のコンプリーションを使用してメモリ読み出しリクエストが完了する場合 各コンプリーションのこのバイトカウント値は 先行するコンプリーションが示す値から先行するコンプリーションで返ってきたバイト数を引いた値となります コンプリーションが Locked Read ( ロックされた読み出し ) リクエストに応答する場合 このビットをセットする必要があります その他のコンプリーションの場合 このフィールドは 0 にセットされる必要があります UltraScale+ Device Block for PCIe v

191 表 3-16: コンプリーターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックス 42:32 Dword Count (Dword カウント ) 45:43 46 Completion Status ( コンプリーションステータス ) Poisoned Completion ( ポイズンコンプリーション ) 63:48 Requester ID ( リクエスター ID) 71:64 Tag ( タグ ) 79:72 フィールド名 Target Function/Device Number ( ターゲットファンクション / デバイス番号 ) 説明 これらの 11 ビットは 現在のパケットのペイロードサイズを示します (Dword) 範囲は 0 ~ 1000 Dword です このフィールドは I/O 読み出しのコンプリーションには 1 にセットされ I/O 書き込みのコンプリーションには 1 にセットされる必要があります 長さ 0 のメモリ読み出しに対してコンプリーションを送信している間 この Dword カウントフィールドは 1 にセットされている必要があります UR または CA コンプリーションを送信している間 この Dword カウントフィールドは 0 にセットされている必要があります その他の場合 この Dword カウントは その時点のパケットのペイロードの実際の Dword 数に対応する必要があります これらのビットは 送信されるコンプリーションのタイプに基づいてセットされる必要があります 有効な設定は次のとおりです 000: トランザクションが正常に完了 001: サポートされないリクエスト (UR) 100: コンプリーターの中断 (CA) ユーザーロジックはこのビットを使用して 送信されるコンプリーション TLP にポイズニングを適用できます ユーザーロジックがディスクリプターの後に続くデータブロック内にエラーを検出し PCI Express のデータポイズニング機能を使用してこのエラー情報を伝える場合以外は このビットはすべてのコンプリーションで 0 にセットする必要があります リクエストに関連する PCI リクエスター ID です ( ユーザーロジックがリクエストからコピー ) リクエストに関連する PCIe タグです ( ユーザーロジックがリクエストからコピー ) コンプリーターファンクションのファンクション番号です ユーザーロジックは 対応するリクエストのディスクリプターの Target Function フィールドからこの値をコピーする必要があります ARI が使用される場合は このフィールドの全 8 ビットにターゲットファンクション番号を設定する必要があります その他の場合は ビット [74:72] をターゲットファンクション番号に設定する必要があります ARI が使用されていない場合で コアがルートコンプレックスとしてコンフィギュレーションされている場合は ユーザーアプリケーションがコンプリーターの 5 ビットのデバイス番号をビット [79:75] に提供する必要があります ARI が使用されていない場合で コアがエンドポイントとしてコンフィギュレーションされている場合は ユーザーロジックがオプションでコンプリーターの 5 ビットのデバイス番号をビット [79:75] に提供することが可能です デバイス番号がビット [79:75] に提供される場合は ユーザーロジックがディスクリプターの Completer ID Enable ビットをセットする必要があります この値は コンプリーション TLP を送信する際にコアで使用されます ( 提供されない場合は コアがコンフィギュレーションリクエストから取得して格納したデバイス番号値を使用 ) UltraScale+ Device Block for PCIe v

192 表 3-16: コンプリーターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックス 87:80 フィールド名 Completer Bus Number ( コンプリーターバス番号 ) 88 Completer ID Enable 91:89 Transaction Class (TC) コンプリーターファンクションに関連するバス番号です コアがルートコンプレックスとしてコンフィギュレーションされている場合 ユーザーロジックがこのフィールドにコンプリーターの 8 ビットのバス番号を提供する必要があります コアがエンドポイントとしてコンフィギュレーションされている場合 ユーザーロジックはオプションとしてこのフィールドにバス番号を提供できます バス番号がこのフィールドに提供される場合は ユーザーロジックがディスクリプターの Completer ID Enable ビットをセットする必要があります この値は コンプリーション TLP を送信する際にコアで使用されます ( 提供されない場合は コアがコンフィギュレーションリクエストから取得して格納したバス番号値を使用 ) このフィールドは Completer ID フィールドの構成に使用されるバス番号やデバイス番号をユーザーロジックが提供することを可能にします このフィールドは エンドポイントコアにのみ適用可能です このフィールドが 0 の場合 コアはキャプチャしたバス番号やデバイス番号を使用してコンプリーター ID を構成します このフィールドが 1 の場合 コアはユーザーロジックによってディスクリプターに提供されたバス番号やデバイス番号を使用してコンプリーター ID を構成します リクエストに関連する PCIe トランザクションクラス (TC) です ユーザーロジックは 関連するリクエストのディスクリプターの TC フィールドからこの値をコピーする必要があります 94:92 Attributes ( 属性 ) リクエストに関連する PCIe 属性です ( リクエストからコピー ) ビット 92 は No Snoop ビット ビット 93 は Relaxed Ordering ビット ビット 94 は ID-Based Ordering ビットです 95 予約 将来使用するために予約 Successful Completion (SC: 正常な完了 ) ステータスのコンプリーション転送 ユーザーロジックは コンプリーターコンプリーションインターフェイスから受信したすべてのノンポステッドリクエストに対して コアの CC インターフェイスにコンプリーションを返す必要があります リクエストがエラーなしで完了すると ユーザーロジックは Successful Completion (SC) ステータスのコンプリーションを返します これらのコンプリーションには リクエストタイプによってペイロードが含まれる場合があります さらに データブロックのサイズが設定した最大ペイロードサイズを超える場合は リクエストに対応するデータが複数のスプリットコンプリーションに分割されます これは 必要に応じてユーザーロジックがデータブロックを複数のスプリットコンプリーションに分割します ユーザーロジックは コンプリーターコンプリーションインターフィエスを介して各スプリットコンプリーションを 12 バイトのディスクリプターを含む AXI4-Stream パケットとして送信する必要があります このタイミング図 ( 図 3-79) の例では 送信されるデータブロックの開始 Dword アドレス ( ディスクリプターの下位アドレスフィールドのビット [6:2] で伝搬 ) は (m *8+1) と仮定されています ( 一部の整数 m) データブロックのサイズは n Dword と仮定され n = k * (k > 0) となります 説明 UltraScale+ Device Block for PCIe v

193 X-Ref Target - Figure 3-79 図 3-79: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 (Dword アライメントモード ) 図 3-79 は コンプリーターリクエストインターフェイスを介したユーザーロジックからのコンプリーションの Dword アライメント転送を示しています この場合 ペイロードの最初の Dword がディスクリプターの直後で開始しています データブロックが 4 バイトの倍数でない場合 またはペイロードの開始が Dword の境界に揃っていない場合は ペイロードの開始が Dword の境界に揃うように またペイロードが Dword の倍数値となるように ユーザーアプリケーションは NULL を追加する必要があります たとえば データブロックがバイトアドレス 7 から開始し サイズが 3 バイトの場合は 最初のバイトの前に NULL バイトを 3 つ追加し 2 Dword の長さにするためにブロックの終わりに NULL バイトを 2 つ追加する必要があります また 不連続な読み出しの場合は データブロック内のすべてのバイトが有効として返されるとは限りません このような場合は 必要に応じて有効バイトの間にある隙間に NULL バイトを追加して 正しい位置にある有効なバイトを返す必要があります インターフェイスには ペイロード内の有効なバイトを示す信号がありません これは リクエスターがリクエスト内のバイトイネーブルを追跡してコンプリーションから無効なバイトを破棄する役割を果たすため 必要ありません Dword アライメントモードでは 転送は 12 ディスクリプターバイトから始まり その直後にペイロードバイトが続きます ユーザーアプリケーションは パケットが送信される間 s_axis_cc_tvalid 信号をアサートしたままに保持する必要があります パケット送信中に s_axis_cc_tvalid がディアサートされると コアはこれをエラーとして処理し リンク上の対応するコンプリーション TLP を無効にしてデータ破損を回避します またユーザーアプリケーションは パケットの最後のビートで s_axis_cc_tlast 信号をアサートします コアは データの受信準備が整っていない場合に 任意のサイクルで s_axis_cc_tready をディアサートします コアが s_axis_cc_tready をディアサートした場合は ユーザーアプリケーションは転送中に s_axis_cc_tdata および s_axis_cc_tlast 上の値を変更してはいけません 128 ビットアドレスアライメントモードでは ペイロードの送信は必ず 4 等分された 512 ビットワードの最初の 128 ビットグループのディスクリプターに続いて 2 番目のビットグループで開始します つまり ディスクリプターの最初のバイトがバイトレーン 0 にある場合 ペイロードは 16 ~ 31 のバイトレーンのいずれかで開始する必要があります 4 等分された 128 ビットグループ内では 最初のペイロードバイトのオフセットは 対応するディスクリプターでの下位アドレスフィールド設定の下位ビットに相当する必要があります UltraScale+ Device Block for PCIe v

194 図 3-80 のタイミング図は コンプリーターコンプリーションインターフェイスを介したメモリ読み出しコンプリーションの 128 ビットアドレスアライメント転送を示しています 図示する目的で 送信されるデータブロックの開始 Dword ( ディスクリプターの下位アドレスのビット [6:2] で伝搬 ) は (m 16+1) と仮定されています ( 一部の整数 m) データブロックのサイズは n Dword と仮定し n = k 16-1 (k > 1) となります X-Ref Target - Figure 3-80 図 3-80: コンプリーターコンプリーションインターフェイスでの一般的なコンプリーションの転送 (128 ビットアドレスアライメントモード ) コンプリーションの転送中断 ユーザーロジックは s_axis_cc_tuser バスで discontinue 信号をアサートすることによって ペイロード転送中にいつでもコンプリーターコンプリーションインターフェイス上のコンプリーションを中断できます コアがリンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーロジックは 転送されているコンプリーションに関連するペイロードが含まれている場合に 転送中の任意のタイミングでこの信号をアサートできます また エラーが示されたサイクルでパケットを早期に中断する (s_axis_cc_tlast をアサート ) またはペイロードのすべてのバイトがコアへ送信されるまで継続してから中断するのいずれかを選択できます 後者の場合 ユーザーロジックがパケットの最後に達する前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_cc_tvalid がアクティブ High の場合のみアサートされます コアは s_axis_cc_tvalid および s_axis_cc_tready が両方ともアクティブ High にアサートされている場合にこの信号をサンプルします したがって この信号がアサートされると s_axis_cc_tready がアクティブ High になるまでディアサートしてはいけません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用して訂正不可能な内部エラーとして 接続される先のルートコンプレックスに対してコアがエラーをレポートします UltraScale+ Device Block for PCIe v

195 エラーステータス (UA および CA) のコンプリーション コンプリーターリクエストインターフェイスで受信したリクエストに対して UR ( サポートされないリクエスト ) または CA ( コンプリーション中断 ) で応答する場合 ユーザーロジックは 図 3-78 に示すフォーマットで 3 Dword のコンプリーションディスクリプターを送信し その後にコンプリーションを生成したリクエストの情報を含む 5 Dword を送信する必要があります これらの 5 Dword は PCIe コアが AER ヘッダーログレジスタにリクエストに関する情報を記録するのに不可欠です 図 3-81 に UR または SC ステータスのコンプリーションを送信する際に転送される情報のシーケンスを示します この情報は 合計 8 Dword の AXI4-Stream パケットとしてフォーマットされ 次のように組織化されます 最初の 3 Dword には 図 3-78 の形式のコンプリーションディスクリプターが含まれます 4 番目の Dword には リクエストからコピーされた m_axis_cq_tuser 内の次に示す信号のステータスが含まれます m_axis_cq_tuser の First Byte Enable ビット first_be[3:0] m_axis_cq_tuser の Last Byte Enable ビット (last_be[3:0]) Transaction Processing Hint の情報を伝搬する信号 : m_axis_cq_tuser の tph_present tph_type[1:0] および tph_st_tag[7:0] コアから受信した 4 Dword のリクエストディスクリプター X-Ref Target - Figure 3-81 DW 1 DW 0 Completion Descriptor DW 1 Completion Descriptor DW DW R tph_st_tag R last_be first _be DW 2 Completion Descriptor DW 2 tph_type[1:0] tph_present DW 5 DW 4 Request Descriptor, DW 1 Request Descriptor, DW 0 DW 7 DW Request Descriptor, DW 3 Request Descriptor, DW 2 X12245 図 3-81: UR/CA コンプリーションの AXI-Stream パケットの構成 UltraScale+ Device Block for PCIe v

196 CC インターフェイスのストラドルオプション 前のリクエストがデータバス上の Dword 位置 7 またはその前で終了した場合 PCIe コアはコンプリーターコンプリーションインターフェイス上にある新しいコンプリーションパケットの転送を同じビートで開始できます このストラドルオプションは Vivado IDE でコアをカスタマイズする際に有効にします ストラドルオプションは Dword アライメントモードとの併用でのみ使用できます ストラドルオプションが有効に設定されている場合 コンプリーション TLP はパケット境界のない連続するストリームとして AXI4-Stream インターフェイスを介して転送されます したがって m_axis_cc_tkeep および m_axis_cc_tlast 信号は このインターフェイスを介して送信される TLP の境界を判断するのに有効ではありません その代わりに m_axis_cc_tuser バス内の次の信号を使用して TLP のデリニエーション ( 輪郭を決定する ) が実行されます Is_sop[0]: あるビートで開始するコンプリーション TLP が 1 つ以上ある場合 この入力をそのビートで High に設定する必要があります この TLP のディスクリプターの最初のバイトの位置は 次のように決定されます 前の TLP が現ビートの前で終了する場合 ディスクリプターの最初のバイトはバイトレーン 0 にあります 前の TLP が現ビートで継続している場合 このディスクリプターの最初のバイトはバイトレーン 32 にあります この条件は 以前の TLP が現ビートで終了 つまり is_eop[0] もセットされている場合にのみ適用されます is_sop0_ptr[1:0]: is_sop[0] がセットされた場合は 現ビートで開始する最初のコンプリーション TLP のオフセットをこのフィールドで示す必要があります 有効な設定は 2'b00 (Dword 0 で開始する TLP) および 2'b10 (Dword 8 で開始する TLP) です is_sop[1]: あるビートで開始するコンプリーション TLP が 2 つある場合 この入力を同じビートで High に設定する必要があります 最初の TLP は常にバイト位置 0 で開始し 2 つ目の TLP はバイト位置 32 で開始する必要があります 同じビート内でバイト位置 32 より前に以前の TLP が終了した場合 ( 同じビートで is_eop[0] がセットされている場合 ) のみ ユーザーアプリケーションは 2 番目の TLP をバイト位置 32 で開始します is_sop1_ptr[1:0]: is_sop[1] がセットされた場合は 現ビートで開始する 2 番目のコンプリーション TLP のオフセットをこのフィールドでします必要があります 唯一有効な設定は 2'b10 (Dword 8 で開始する TLP) です is_eop[0]: この入力は コンプリーション TLP の終わりを示すために使用されます このアサートにより 現ビートで終了する TLP が 1 つ以上存在することが示されます is_eop0_ptr[3:0]: is_eop[0] がアサートされると is_eop0_ptr[3:0] は現ビートで終了する該当 TLP の最後の Dword のオフセットを示す必要があります is_eop[1]: 現ビートで終了する TLP が 2 つある場合 この入力を High に設定する必要があります is_eop[0] および is_sop[0] 信号も同じビートで High になる場合にのみ is_eop[1] を設定できます is_eop1_ptr[3:0]: is_eop[1] がアサートされると is_eop1_ptr[3:0] は現ビートで終了する 2 番目の TLP の最後の Dword のオフセットを示す必要があります 2 番目の TLP は バイトレーン 32 でのみ開始可能なため 範囲が 43 ~ 63 のバイトレーンでのみ終了できます したがって オフセット is_eop1_ptr[3:0] は 10 ~ 15 の範囲の値となります 図 3-82 に ストラドルオプションが有効に設定されたコンプリーターコンプリーションインターフェイスでの 4 つのコンプリーション TLP の転送を示します すべての TLP について ペイロードの最初の Dword は 間隔をあけずディスクリプターの後に必ず続きます 最初のコンプリーション TLP (COMPL 1) は BEAT 1 の Dword 位置 0 で開始し BEAT 3 の Dword 位置 5 で終了しています 2 番目の TLP (COMPL 2) は 同じビートの Dword 位置 8 で開始しています この 2 番目の TLP には 4 Dword ペイロードしか含まれていないため これも同じビート内で終了します COMPL 3 には 1 Dword ペイロードしか含まれておらず COMPL 4 にはペイロードが含まれていないため 3 番目と 4 番目のコンプリーション TLP は BEAT 4 ですべての転送が完了しています UltraScale+ Device Block for PCIe v

197 X-Ref Target - Figure 3-82 図 3-82: ストラドルオプションが有効に設定されたコンプリーターコンプリーションインターフェイスでのコンプリーション TLP の転送 UltraScale+ Device Block for PCIe v

198 512 ビットリクエスターインターフェイス ここでは 512 ビット AXI4-Stream インターフェイスに関連するユーザー側のリクエスターインターフェイスの動作について説明します 図 3-66 図 3-58 に ソフトブリッジ PCIe コアおよびユーザーアプリケーション間の接続を示します ソフトブリッジは 500 MHz の 256 ビットパケットを 250 MHz の 512 ビットパケットに変換します リクエスターインターフェイスは ユーザーエンドポイントアプリケーションがバスマスターとして PCIe リンクからホストメモリへの PCI トランザクションを開始できるようにします ルートコンプレックスの場合も このインターフェイスを使用して I/O およびコンフィギュレーションリクエストを開始します このインターフェイスは PCIe リンク上でメッセージを送信するために エンドポイントとルートコンプレックスの両方で使用できます このインターフェイスでのトランザクションは コンプリーターインターフェイスでのトランザクションと同じですが コアとユーザーアプリケーションの役割が逆になります ポステッドトランザクションは 分割できない単一動作として処理されますが ノンポステッドトランザクションはスプリットトランザクションとして処理されます リクエスターインターフェイスは 各方向のデータ転送にそれぞれが用いられる 2 つの個別のインターフェイスで構成されます 各インターフェイスは AXI4-Stream プロトコルに基づき または 256 ビット幅に設定できます リクエスターリクエストインターフェイスはユーザーアプリケーションからコアへリクエスト ( 関連するペイロードデータを含む ) を転送するために使用され リクエスターコンプリーションインターフェイスは リンクから受信したコンプリーション ( ノンポステッドリクエスト ) をユーザーアプリケーションへ送信するためにコアが使用します これら 2 つのインターフェイスは独立して動作します つまり 前回のリクエストのコンプリーションを受信する間に ユーザーアプリケーションはリクエスターリクエストインターフェイスを介して新しいリクエストを転送できます リクエスターリクエストインターフェイスの動作 (512 ビット ) 図 3-83 に コアのリクエスターリクエストインターフェイスに関連する信号を示します コアは このインターフェイスを介して各 TLP を AXI4-Stream パケットとして送信します このパケットは 128 ビットディスクリプターから始まり TLP にペイロードが含まれる場合はその後をデータが続きます リクエスターリクエストインターフェイスは Vivado IDE でコアのカスタマイズ時に設定される ペイロード転送用の 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 ユーザーロジックはディスクリプターの最後の Dword の直後にペイロードの最初の Dword を提供する必要があります また 最初の Dword の有効なバイトを示すために first_be[3:0] のビットがセットされ ペイロードの最後の Dword の有効なバイトを示すために last_be[3:0] (s_axis_rq_tuser バスの両部分 ) のビットがセットされる必要があります アドレスアライメントモードの場合 ユーザーロジックは ディスクリプターの最後の Dword の次のビートでペイロードを転送開始する必要があり その最初の Dword は データパス上の任意の Dword 位置に設定できます ユーザーアプリケーションは s_axis_rq_tuser の addr_offset[2:0] 信号を使用してデータパス上の最初の Dword のオフセットを示します Dword アライメントモードの場合と同様に 最初の Dword の有効バイトを示すために first_be[3:0] のビットをセットし ペイロードの最後の Dword の有効バイトを示すために last_be[3:0] のビットをセットする必要もあります コアで Transaction Processing Hint 機能が有効に設定されている場合 ユーザーロジックは s_axis_rq_tuser バスに含まれる tph_* 信号を使用して 任意のメモリトランザクションにオプションでヒントを提供できます リクエストにヒントを提供する場合 ユーザーロジックはパケットの最初のビートで tph_present をアサートし tph_st_tag[7:0] および tph_st_type[1:0] にそれぞれ TPH ステアリングタグおよびステアリングタグタイプを提供する必要があります UltraScale+ Device Block for PCIe v

199 X-Ref Target - Figure 3-83 図 3-83: リクエスターリクエストインターフェイスの信号 インターフェイスは インターフェイスを介して最大 2 つの TLP を同じビートで転送可能なストラドルオプションもサポートしています ストラドルオプションは Dword アライメントモードとの併用でのみ可能で 128 ビットアドレスアライメントモードを使用時はサポートされません 次のセクションでは 各ビートに 1 つの TLP を想定して説明します ストラドルオプションを有効にしたインターフェイスの動作は RQ インターフェイスのストラドルオプション で説明しています UltraScale+ Device Block for PCIe v

200 リクエスターリクエストディスクリプターのフォーマット ユーザーアプリケーションは リンク上に送信される各リクエストを個別の AXI4-Stream パケットとして コアのリクエスターリクエストインターフェイスへ送信する必要があります 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 16 バイト長となり リクエストパケットの最初の 16 バイトで送信されます ディスクリプターは 64 ビットインターフェイスでは最初の 2 サイクル間で送信され 128 ビットまたは 256 ビットの場合は最初のサイクルで送信されます 図 3-84 図 3-85 図 3-86 および図 3-87 に ディスクリプターのフォーマットをリクエストタイプ別に示しています 図 3-84 に示すフォーマットは 転送されているリクエスト TLP がメモリ読み出し / 書き込みリクエスト I/O 読み出し / 書き込みリクエスト またはアトミック操作リクエストのときに適用されます 図 3-85 に示すフォーマットは ベンダー定義メッセージ ( タイプ 0 またはタイプ 1) 専用です 図 3-86 に示すフォーマットは すべての ATS メッセージ (Invalid Request Invalid Completion Page Request PRG Response) に使用されます その他のメッセージのディクスリプターについては 図 3-87 に示すフォーマットとなります X-Ref Target - Figure DW + 1 DW Address [63:2] Address Type (AT) Device/Function Device/Function Attr TC Force ECRC +14 DW Bus Completer ID Requester ID Enable +12 Tag 図 3-84: メモリリクエスト I/O リクエスト アトミック操作リクエストのリクエスターリクエストディスクリプターフォーマット +11 Bus Requester ID +10 DW Dword Count Req Type Poisoned Request X12212 X-Ref Target - Figure DW + 1 DW TL Header Byte Vendor - Defined Header Bytes TL Header Byte 14 TL Header Byte 13 TL Header Byte Vendor ID Bus Device/Function Destination ID DW + 3 DW Attr TC Force ECRC R Msg Code Message Routing Requester ID Enable Tag Bus Device/Function Requester ID Dword Count Req Type Poisoned Request X12214 図 3-85: ベンダー定義メッセージのリクエスターリクエストディスクリプターフォーマット UltraScale+ Device Block for PCIe v

201 X-Ref Target - Figure DW TL Header Bytes DW TL Header Byte 15 TL Header Byte 14 TL Header Byte 13 TL Header Byte 12 TL Header Byte 11 TL Header Byte 10 TL Header Byte 9 TL Header Byte DW DW Attr TC Force ECRC R Message Routing Requester ID Enable Msg Code Tag Device/Function Bus Requester ID Req Type Dword Count Poisoned Request X12211 図 3-86: ATS メッセージのリクエスターリクエストディスクリプターフォーマット X-Ref Target - Figure DW + 1 DW R OBFF Code (for OBFF message); Reserved (for others) No-Snoop Latency (for LTR message); Reserved (for others) Snoop Latency (for LTR message); Reserved (for others) 127 DW DW Attr TC Force ECRC R Message Routing Requester ID Enable Msg Code Tag Bus Device/Function Requester ID Dword Count Req Type Poisoned Request 図 3-87: その他メッセージのリクエスターリクエストディスクリプターフォーマット コンプリーターリクエストディスクリプターの各フィールドの詳細は 次の表で説明しています UltraScale+ Device Block for PCIe v

202 表 3-17: リクエスターリクエストディスクリプターのフィールド ビットインデックス 1:0 フィールド名 Address Type ( アドレスタイプ ) 63:2 Address ( アドレス ) 74:64 78: :80 Dword Count (Dword カウント ) Request Type ( リクエストタイプ ) Poisoned Request ( ポイズンリクエスト ) Requester Function/ Device Number ( リクエスターファンクション / デバイス番号 ) 説明 このフィールドは メモリトランザクションおよびアトミック操作専用に定義されます コアは このフィールドをリクエスト TLP の TL ヘッダーの AT へコピーします 00: リクエスト内のアドレスは変換されない 01: トランザクションは変換リクエスト 10: リクエスト内のアドレスは変換される 11: 予約 このフィールドは メモリ I/O およびアトミック操作の各リクエストに適用されます リクエストで指定された最初の Dword のアドレスです ユーザーロジックは 最初と最後の Dword の有効バイトを示すために s_axis_rq_tuser の First_BE および Last_BE ビットをそれぞれ設定する必要もあります トランザクションが 32 ビットアドレスを指定する場合 このフィールドのビット [63:32] は 0 になります これらの 11 ビットは 読み出しまたは書き込みの対象となっているブロックのサイズ ( メッセージの場合は メッセージペイロードのサイズ ) を示します (Dword 単位 ) 範囲は 0 ~ 256 Dword です I/O アクセスの場合 Dword カウントは常に 1 です メモリの読み出し / 書き込みリクエストの長さが 0 の場合 Dword カウントは 1 になり First_BE ビットはすべて 0 にセットされる必要があります コアは 供給されるペイロード ( ペイロードを含むリクエスト ) の実際の長さ またコアの最大ペイロードサイズや読み出しリクエストサイズの設定に対してこのフィールドを照合してチェックするわけではありません トランザクションタイプを特定します トランザクションタイプとそれらのエンコードの詳細は 表 2-19 に示します ユーザーロジックはこのビットを使用して 送信されるリクエスト TLP にポイズニングを適用できます ユーザーロジックがディスクリプターの後に続くデータブロック内にエラーを検出し PCI Express のデータポイズニング機能を使用してこのエラー情報を伝える場合以外は このビットはすべてのリクエストで 0 にセットする必要があります リクエスターファンクションのファンクション番号です ARI が使用される場合は このフィールドの全 8 ビットにファンクション番号を設定する必要があります その他の場合は ビット [84:82] をコンプリーターファンクション番号に設定する必要があります ARI が使用されていない場合で コアがルートコンプレックスとしてコンフィギュレーションされている場合は ユーザーロジックがリクエスターの 5 ビットのデバイス番号をビット [87:83] に提供する必要があります ARI が使用されていない場合で コアがエンドポイントとしてコンフィギュレーションされている場合は ユーザーロジックがオプションでリクエスターの 5 ビットのデバイス番号をビット [87:83] に提供することが可能です デバイス番号がビット [87:83] に提供される場合は ユーザーロジックがディスクリプターの Requester ID Enable ビットをセットする必要があります この値は リクエスト TLP を送信する際にコアで使用されます ( 提供されない場合は コアがコンフィギュレーションリクエストから取得して格納したデバイス番号値を使用 ) UltraScale+ Device Block for PCIe v

203 表 3-17: リクエスターリクエストディスクリプターのフィールド ( 続き ) ビットインデックス 85:88 Requester Bus Number ( リクエスターバス番号 ) 103:96 Tag ( タグ ) 119: Completer ID ( コンプリーター ID) Requester ID Enable ( リクエスター ID イネーブル ) リクエスターファンクションに関連するバス番号です コアがルートコンプレックスとしてコンフィギュレーションされている場合 ユーザーロジックがこのフィールドにリクエスターの 8 ビットのバス番号を提供する必要があります コアがエンドポイントとしてコンフィギュレーションされている場合 ユーザーロジックはオプションとしてこのフィールドにバス番号を提供できます バス番号がこのフィールドに提供される場合は ユーザーロジックがディスクリプターの Requester ID Enable ビットをセットする必要があります この値は リクエスト TLP を送信する際にコアで使用されます ( 提供されない場合は コアがコンフィギュレーションリクエストから取得して格納したバス番号値を使用 ) リクエストに関連する PCIe タグです ポステッドトランザクションの場合 コアはリクエストのタグとして常にこのフィールドの値を使用します ノンポステッドトランザクションの場合 Vivado IDE でコアコンフィギュレーション中に [Enable Client Tag] が設定されている ( つまり ユーザーロジックでタグ管理が実行されている ) 場合 コアはこのフィールドの値を使用します この属性が設定されていない場合は コア内のタグ管理ロジックが使用されるタグを生成し ディスクリプターのタグフィールドの値は使用されません このフィールドは ID を使用して送信されコンフィギュレーションリクエストやメッセージにのみ適用されます これらのリクエストでは このフィールドが各リクエストに関連する PCI コンプリーター ID を示します ( これらの 16 ビットは レガシインタープリテーションモードでは 8 ビットのバス番号 5 ビットのデバイス番号 3 ビットのファンクション番号に分けられる ) ARI モードの場合 これらの 16 ビットは 8 ビットのバス番号と 8 ビットのファンクション番号として扱われます このフィールドは Requester ID フィールドの構成に使用されるバス番号やデバイス番号をユーザーロジックが提供することを可能にします このフィールドは エンドポイントコアにのみ適用可能です このフィールドが 0 の場合 コアはキャプチャしたバス番号やデバイス番号を使用してリクエスター ID を構成します このフィールドが 1 の場合 コアはユーザーロジックによってディスクリプターに提供されたバス番号やデバイス番号を使用してリクエスター ID を構成します 123:121 Transaction Class (TC) リクエストに関連する PCIe トランザクションクラス (TC) です 126:124 Attributes ( 属性 ) 111:104 メッセージコード 114:112 フィールド名 Message Routing ( メッセージルーティング ) 説明 これらのビットは リクエストに関連する Attribute ビットの設定を提供します ビット 124 は No Snoop ビットで ビット 125 は Relaxed Ordering ビットです ビット 126 は ID-Based Ordering ビットで メモリリクエストとメッセージ専用にセットできます ファンクションの PCI Express デバイス制御レジスタで対応する属性が有効に設定されていない場合 コアはリンク上に送信されるリクエストの属性ビットを強制的に 0 にします このフィールドはすべてのメッセージ用に定義されます TLP ヘッダーに設定される 8 ビットのメッセージコードが含まれます サポート対象のメッセージコードの一覧は PCI Express 3.0 Specifications の Appendix F を参照してください このフィールドはすべてのメッセージ用に定義されます コアは これらのビットをリクエスト TLP の TL ヘッダーにある 3 ビットの Routing フィールド r[2:0] へコピーします UltraScale+ Device Block for PCIe v

204 表 3-17: リクエスターリクエストディスクリプターのフィールド ( 続き ) ビットインデックス 15:0 63:32 63:0 フィールド名 Destination ID ( デスティネーション ID) Vendor-Defined Header ( ベンダー定義のヘッダー ) ATS Header (ATS ヘッダー ) リクエスターメモリ書き込み動作 このフィールドはベンダー定義メッセージにのみ適用されます メッセージが ID を使用して送信される場合 ( つまり Message Routing フィールドが 010 バイナリの場合 ) このフィールドはメッセージの Destination ID を提供します このフィールドはベンダー定義メッセージにのみ適用されます TL ヘッダーの Dword 3 へコピーされます このフィールドは ATS メッセージにのみ適用可能です コアが TL ヘッダーの Dword 2 と Dword 3 へコピーするバイトが含まれます Dword アライメントモードおよび 128 ビットアドレスアライメントの両モードでは 転送は 16 ディスクリプターバイトから始まり その後にペイロードバイトが続きます ユーザーアプリケーションは パケットが送信される間 s_axis_rq_tvalid 信号をアサートしたままに保持する必要があります パケット送信中に s_axis_rq_tvalid がディアサートされると コアはこれをエラーとして処理し リンク上の対応するリクエスト TLP を無効にしてデータ破損を回避します またユーザーアプリケーションは パケットの最後のビートで s_axis_rq_tlast 信号をアサートします コアは データの受信準備が整っていない場合に 任意のサイクルで s_axis_rq_tready をディアサートします コアが s_axis_rq_tready をディアサートした場合は ユーザーアプリケーションは転送中に s_axis_rq_tdata および s_axis_rq_tlast 上の値を変更してはいけません AXI-Stream インターフェイス信号 m_axis_rq_tkeep ( 各 Dword 位置に 1 つ ) をセットして ディスクリプターなどのパケット内の有効な Dword およびディスクリプターとペイロード間に挿入される NULL バイトを示す必要があります つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで m_axis_rq_tkeep ビットは継続的に 1 にセットされる必要があります パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り m_axis_rq_tkeep ビットを 0 にできます リクエスターリクエストインターフェイスでは s_axis_rq_tuser バスに First Byte Enable ビットと Last Enable ビットも含まれます これらのビットはパケットの最初のビートでセットされ ペイロードの最初と最後の Dword にある有効なバイト情報を提供します ユーザーアプリケーションは 1 つのリクエストで転送されるペイロードのサイズを コアで設定した最大ペイロードサイズまでに制限し ペイロードが 4k バイトの境界を超えないようにする必要があります 2 Dword またはそれ以下のメモリ書き込みの場合 first_be[3:0] および last_be[3:0] で 1 が連続しません 長さ 0 のメモリ書き込みリクエストなど特殊な場合は first_be[3:0] と last_be[3:0] が両方ともすべて 0 にセットされた状態でユーザーアプリケーションがダミーの one_dword ペイロードを提供する必要があります その他の場合 first_be[3:0] および last_be[3:0] では 1 が連続する必要があります 図 3-88 は リクエスターリクエストインターフェイスを介したユーザーロジックからのメモリ書き込みリクエストの Dword アライメント転送を示しています 図示する目的で ユーザーメモリに書き込まれるデータブロックのサイズは n Dword と仮定し n = k 16-1 (k > 1) となります 説明 UltraScale+ Device Block for PCIe v

205 X-Ref Target - Figure 3-88 図 3-88: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (Dword アライメントモード ) 図 3-89 は リクエスターリクエストインターフェイスを介したユーザーアプリケーションからのメモリ書き込みリクエストの 128 ビットアドレスアライメント転送を示しています 図示する目的で データブロックの開始 Dword オフセットは 一部の整数 m > 0 のとき (m ) と仮定しています サイズは n Dword と仮定し n = k 16-1 (k > 1) となります 128 ビットアドレスアライメントモードでは ペイロードの送信は必ず 4 等分された 512 ビットワードの最初の 128 ビットグループのディスクリプターに続いて 2 番目のビットグループで開始します ユーザーアプリケーションは s_axis_rq_tuser バスの addr_offset[1:0] フィールドでペイロードの最初の Dword のオフセットを示す必要があります また 最初の Dword の有効バイトを示すために first_be[3:0] のビットをセットし ペイロードの最後の Dword の有効バイトを示すために last_be[3:0] のビットをセットする必要もあります UltraScale+ Device Block for PCIe v

206 X-Ref Target - Figure 3-89 図 3-89: リクエスターリクエストインターフェイスでのメモリ書き込みトランザクション (128 ビットアドレスアライメントモード ) ペイロードを含まないノンポステッドトランザクション ペイロードを含まないノンポステッドトランザクション ( メモリ書き込みリクエスト I/O 読み出しリクエスト コンフィギュレーション読み出しリクエスト ) は メモリ書き込みリクエストと同様にリクエスターリクエストインターフェイスを介して送信されますが このトランザクションでは AXI4-Stream パケット 7 に 16 バイトのディスクリプターのみ含まれます 図 3-90 は リクエスターリクエストインターフェイスを介してメモリ読み出しリクエストの転送を示しています s_axis_rq_tvalid 信号は パケットが送信される間アサートされた状態を維持する必要があります コアは このビートを延長させるために s_axis_rq_tready をディアサートします s_axis_rq_tlast 信号は パケットの最後のビートでセットされ s_axis_rq_tkeep[15:0] のビットは ディスクリプターが現れるすべての Dword 位置でセットされる必要があります ユーザーアプリケーションは s_axis_rq_tuser バスの first_be[3:0] および last_be[3:0] フィールドを使用してデータブロックの最初と最後の Dword をそれぞれ示す必要があります 長さ 0 のメモリ読み出しなど特殊な場合は first_be[3:0] および last_be[3:0] が両方ともすべて 0 にセットされた状態で リクエストの長さは 1 Dword に設定する必要があります コンプリーションがリクエスターコンプリーションインターフェイスを介して送信される場合は s_axis_rq_tuser バスの addr_offset[1:0] フィールドで 結果として生じるコンプリーションのペイロードの最初の Dword のオフセットを示す必要もあります UltraScale+ Device Block for PCIe v

207 X-Ref Target - Figure 3-90 図 3-90: リクエスターリクエストインターフェイスでのメモリ読み出しトランザクション ペイロードを含むノンポステッドトランザクション ペイロードを含むノンポステッドリクエスト (I/O 書き込みリクエスト コンフィギュレーション書き込みリクエスト またはアトミック操作リクエスト ) の転送は メモリ書き込みリクエストの転送と類似していますが ペイロードをデータパス上で揃える方法において次の点が異なります Dword アライメントモードの場合 ペイロードの最初の Dword はディスクリプターの最後の Dword の後に転送され この 2 つの Dword 間にギャップは生じません 128 ビットアドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターに続いて 最初のビートの 4 等分された 2 番目の 128 ビットグループで開始します ペイロードは この 4 等分されたビットグループにある 4 つの Dword 位置のいずれかで開始します 最初の Dword のオフセットは s_axis_rq_tuser バスの addr_offset[1:0] フィールドで指定する必要があります I/O およびコンフィギュレーション書き込みリクエストの場合 1 Dword ペイロードの有効バイトは first_be[3:0] 信号を使用して指定されます アトミック操作リクエストの場合 最初と最後の Dword のすべてのバイトを有効と見なします リクエスターインターフェイスでのメッセージリクエスト リクエスターリクエストインターフェイスにおけるメッセージの転送はメモリ書き込みリクエストと同様ですが ペイロードが常に存在するわけではない点のみ異なります 転送は 128 ビットディスクリプターから始まり ペイロードがある場合はその後ペイロードが続きます 使用しているアドレスアライメントモードに関係なく ディスクリプター直後にペイロードの最初の Dword が続きます アドレスアライメントモードが使用される場合 メッセージに対して s_axis_rq_tuser バスの addr_offset[1:0] フィールドが 0 にセットされている必要があります コアは s_axis_rq_tlast および s_axis_rq_tkeep 信号からペイロードの終わりを判断します メッセージリクエストの場合 First Byte Enable ビットおよび Last Byte Enable ビット (first_be[3:0] および last_be[3:0]) は使用されません UltraScale+ Device Block for PCIe v

208 転送の中断 関連するペイロードを含むすべてのリクエストの転送では ユーザーアプリケーションが s_axis_rq_tuser バスで discontinue 信号をアサートすることによって ペイロード転送中にいつでもリクエストを中断します コアはリンク上の対応する TLP を無効にしてデータ破損を回避します ユーザーアプリケーションは 転送されているリクエストが関連するペイロードを含んでいる場合に 転送中の任意のタイミングでこの信号をアサートします また エラーが示されたサイクルでパケットを早期に中断する (s_axis_rq_tlast をアサート ) またはペイロードのすべてのバイトがコアへ送信されるまで継続してから中断するのいずれかを選択します 後者の場合 ユーザーロジックがパケットの最後に達する前に discontinue 信号をディアサートしても パケットのその後のサイクルではコアはこのエラーをスティッキーエラーとして処理します discontinue 信号は s_axis_rq_tvalid が High の場合のみアサートされます コアは s_axis_rq_tvalid および s_axis_rq_tready が両方とも High にアサートされている場合にこの信号をサンプルします したがって この信号がアサートされると s_axis_rq_tready が High になるまでディアサートしてはいけません ユーザーアプリケーションは 前のパケットが discontinue 入力のアサートによって中断された同じビートで新しいパケットを開始することはできません コアがエンドポイントとしてコンフィギュレーションされている場合 Advanced Error Reporting (AER) 機能を使用して訂正不可能な内部エラーとして 接続される先のルートコンプレックスに対してコアがエラーをレポートします RQ インターフェイスのストラドルオプション 前のリクエストがデータバス上の Dword 位置 7 またはその前で終了した場合 PCIe コアはリクエスターリクエストインターフェイス上にある新しいリクエストパケットの転送を同じビートで開始できます このストラドルオプションは Vivado IDE でコアをカスタマイズする際に有効にします ストラドルオプションは Dword アライメントモードとの併用でのみ使用できます ストラドルオプションが有効に設定されている場合 リクエスト TLP はパケット境界のない連続するストリームとして AXI4-Stream インターフェイスを介して転送されます したがって m_axis_rq_tkeep および m_axis_rq_tlast 信号は このインターフェイスを介して送信される TLP の境界を判断するのに有効ではありません その代わりに m_axis_rq_tuser バス内の次の信号を使用して TLP のデリニエーション ( 輪郭を決定する ) が実行されます is_sop[0]: あるビートで開始するリクエスト TLP が 1 つ以上ある場合 この入力をそのビートで High に設定する必要があります この TLP のディスクリプターの最初のバイトの位置は 次のように決定されます 前の TLP が現ビートの前で終了する場合 ディスクリプターの最初のバイトはバイトレーン 0 にあります 前の TLP が現ビートで継続している場合 このディスクリプターの最初のバイトはバイトレーン 32 にあります この条件は 以前の TLP が現ビートで終了 つまり is_eop[0] もセットされている場合にのみ適用されます is_sop0_ptr[1:0]: is_sop[0] がセットされた場合は 現ビートで開始する最初のリクエスト TLP のオフセットをこのフィールドで示す必要があります 有効な設定は 2'b00 (Dword 0 で開始する TLP) および 2'b10 (Dword 8 で開始する TLP) です is_sop[1]: あるビートで開始するリクエスト TLP が 2 つある場合 この入力を同じビートで High に設定する必要があります 最初の TLP は常にバイト位置 0 で開始し 2 つ目の TLP はバイト位置 32 で開始する必要があります 同じビート内でバイト位置 32 より前に以前の TLP が終了した場合 ( 同じビートで is_eop[0] がセットされている場合 ) のみ ユーザーアプリケーションは 2 番目の TLP をバイト位置 32 で開始します is_sop1_ptr[1:0]: is_sop[1] がセットされた場合は 現ビートで開始する 2 番目のコンプリーション TLP のオフセットをこのフィールドでします必要があります 唯一有効な設定は 2'b10 (Dword 8 で開始する TLP) です is_eop[0]: この入力は リクエスト TLP の終わりを示すために使用されます このアサートにより 現ビートで終了する TLP が 1 つ以上存在することが示されます is_eop0_ptr[3:0]: is_eop[0] がアサートされると is_eop0_ptr[3:0] は現ビートで終了する該当 TLP の最後の Dword のオフセットを示す必要があります UltraScale+ Device Block for PCIe v

209 is_eop[1]: 現ビートで終了する TLP が 2 つある場合 この入力を High に設定する必要があります is_eop[0] および is_sop[0] 信号も同じビートで High になる場合にのみ is_eop[1] を設定できます is_eop1_ptr[3:0]: is_eop[1] がアサートされると is_eop1_ptr[3:0] は現ビートで終了する 2 番目の TLP の最後の Dword のオフセットを示す必要があります 2 番目の TLP は バイトレーン 32 でのみ開始可能なため 範囲が 43 ~ 63 のバイトレーンでのみ終了できます したがって オフセット is_eop1_ptr[3:0] は 10 ~ 15 の範囲の値となります 同じビートで 2 番目の TLP が開始する場合 その TLP の First Byte Enable および Last Byte Enable ビットは tuser バスの first_be[7:4] と last_be[7:4] でそれぞれ指定されます 図 3-91 に ストラドルオプションが有効に設定されたリクエスターリクエストインターフェイスでの 4 つのリクエスト TLP の転送を示します すべての TLP について ペイロードの最初の Dword は 間隔をあけずディスクリプターの後に必ず続きます 最初のリクエスト TLP (REQ 1) は BEAT 1 の Dword 位置 0 で開始し BEAT 3 の Dword 位置 3 で終了しています 2 番目の TLP (REQ 2) は 同じビートの Dword 位置 8 で開始しています この 2 番目の TLP には 4 Dword ペイロードしか含まれていないため これも同じビート内で終了します REQ 3 には 1 Dword ペイロードしか含まれておらず REQ 4 にはペイロードが含まれていないため 3 番目と 4 番目のコンプリーション TLP は BEAT 4 ですべての転送が完了しています UltraScale+ Device Block for PCIe v

210 X-Ref Target - Figure 3-91 図 3-91: ストラドルオプションが有効に設定されたリクエスターリクエストインターフェイスでのリクエスト TLP の転送 UltraScale+ Device Block for PCIe v

211 ノンポステッド転送のタグ管理 コアのリクエスター側が ユーザーアプリケーションによって開始されたすべての保留されているノンポステッドトランザクション ( メモリ読み出し I/O 読み出しおよび書き込み コンフィギュレーション読み出しおよび書き込み アトミック操作 ) のステータスを維持し これによってターゲットから返されるコンプリーションが対応するリクエストと一致することが可能になります 未処理トランザクションの各ステートは インターフェイスのリクエスター側にあるスプリットコンプリーションテーブルで管理されます このテーブルでは最大 256 のノンポステッドトランザクションを管理できます コンプリーションの送信は 8 ビットのタグを使用してペンディングリクエストと一致します これらのタグ管理には 次の 2 つのオプションがあります Internal Tag Management ( 内部タグ管理 ): この動作モードは Vivado IDE でコアのカスタマイズ時に選択されます リクエスター側から開始された各ノンポステッドリクエストに対して PCIe コア内のロジックがタグの割り当てを実行します コアは フリータグのリストを管理し ユーザーロジックがノンポステッドトランザクションを開始する際に各リクエストにこれらのいずれかを割り当て その後 pcie_rq_tag[7:0] 出力を介して割り当てたタグ値をユーザーロジックに伝達します このバスの値は コアが pcie_rq_tag_vld をアサートすると有効になります リクエストに応答してコアによって送信されたすべてのコンプリーションがリクエストと一致するように ユーザーロジックはこのタグをコピーする必要があります このモードでは コア内のロジックがスプリットコンプリーションテーブルの全条件をチェックし 現在未処理状態のノンポステッドリクエストの合計数が最大値に到達すると ユーザーロジックからのノンポステッドリクエストにバックプレッシャーを用いて (s_axis_rq_tready を使用 ) 送信を制御します External Tag Management ( 外部タグ管理 ): この動作モードは Vivado IDE でコアのカスタマイズ時に選択されます このモードの場合 リクエスター側から開始された各ノンポステッドリクエストに対して ユーザーロジックがタグの割り当てを実行します ユーザーロジックは その時点で処理されていないその他すべてのノンポステッドトランザクションのタグと競合しないようにタグ値を選択し その選択したタグ値をリクエスターディスクリプター内のコアへ伝達する必要があります さらにコアは スプリットコンプリーションテーブル内で未処理のリクエストを管理し 受信するコンプリーションをリクエストと一致させます ただし タグの異常やスプリットコンプリーションテーブルの全条件チェックは実行しません 内部タグ管理オプションを使用する場合 コアは pcie_rq_tag に割り当てたタグ値を出力した後 各ノンポステッドリクエストに対して 1 サイクル間 pcie_rq_tag_vld をアサートします ストラドルオプションが有効に設定されている場合 コアはこのインターフェイスに同じサイクルで割り当てられたタグを最大で 2 つ提供します pcie_rq_tag および pcie_rq_tag 信号のステートは 次のように解釈する必要があります あらゆるサイクルでの pcie_rq_tag_vld[0] のアサートは コアが割り当てられたタグを pcie_rq_tag[7:0] に出力したことを示します 同じサイクルでの pcie_rq_tag_vld[0] および pcie_rq_tag_vld[1] の同時アサートは コアが 2 つの割り当てられたタグのうち最初のものを pcie_rq_tag[7:0] に 2 番目のものを pcie_rq_tag[15:8] に出力したことを示します pcie_rq_tag[7:0] 上のタグはユーザーロジックが先に送信したリクエストに対応し pcie_rq_tag[15:8] 上のタグは後に送信したリクエストに対応します pcie_rq_tag_vld[0] がアサートされなければ pcie_rq_tag_vld[1] はアサートされることはありません つまり あらゆるサイクルで伝達されるタグが 1 つしかない場合 それが常に伝達されます ストラドルが使用されていない場合 あらゆるサイクルで 1 つのタグしか伝達できず pcie_rq_tag_vld[1] はアサートされることはありません リクエストに対して割り当てられたタグを与えるため s_axis_rq_tdata バス上にリクエストが送信されてからコアが pcie_rq_tag_vld をアサートするまでの間には数サイクルの遅延が生じます この間 ユーザーロジックは新しいリクエストを継続して送信します 各リクエストのタグは pcie_rq_tag バスを使用して FIFO 順序で伝達されるため ユーザーロジックは送信されたリクエストとタグの値を簡単に関連付けることができます ポステッドリクエストの HOL (Head-of-Line) ブロッキングの回避 コアは 送信クレジットまたは有効なタグが不足した場合に リクエスターリクエストインターフェイスで受信したノンポステッドリクエストを保持できます この際 ポステッドトランザクションで HOL ブロッキングが生じる可能性があります ユーザーロジックがノンポステッドトランザクションに対して 送信クレジットとタグの利用可能性をチェックできる場合は ブロッキングにつながる状況を回避できます コアはこの目的のために次の信号を供給します UltraScale+ Device Block for PCIe v

212 pcie_tfc_nph_av[3:0]: これらの出力は ノンポステッドリクエストに現在利用できるヘッダークレジット数を示します (0000 = 使用可能なクレジットはない 0001 = 1 クレジットが使用可能 0010 = 2 クレジットが使用可能 1111 = 15 またはそれ以上のクレジットが使用可能 ) pcie_tfc_npd_av[3:0]: これらの出力は ノンポステッドリクエストに現在利用できるデータクレジット数を示します (0000 = 使用可能なクレジットはない 0001 = 1 クレジットが使用可能 0010 = 2 クレジットが使用可能 1111 = 15 またはそれ以上のクレジットが使用可能 ) pcie_rq_tag_av[3:0]: これらの出力は ノンポステッドリクエストへの割り当てに現在利用できるフリータグの数を示します (0000 = 使用可能なタグはない 0001 = 1 タグが使用可能 0010 = 2 タグが使用可能 1111 = 15 またはそれ以上のタグが使用可能 ) ユーザーロジックは ノンポステッドリクエストを送信する前にオプションでこれらの出力を確認します 内部パイプライン遅延が原因で これらの出力情報は リクエスターリクエストインターフェイスにディスクリプターの最後のバイトが送信されたサイクルより 2 ユーザークロックサイクル分遅れるため ユーザーロジックは 2 つ前のクロックサイクルで送信されたノンポステッドリクエストを考慮して正しい値を取得する必要があります 図 3-92 に これらの信号の動作を示します この例では 最初にコアには 7 つのノンポステッドヘッダークレジットと 3 つのノンポステッドデータクレジット そして割り当てに利用可能な 3 つのフリータグがあります ユーザーロジックからのリクエスト 1 (Req 1) は 1 Dword ペイロードを含んでいるため ヘッダークレジットとデータクレジットを 1 つずつ使用し タグも 1 つ使用します 次のクロックサイクル 3 でリクエスト 2 (Req 2) とリクエスト 3 (Req 3) がそれぞれ 1 ヘッダークレジットを使用しますが データクレジットは使用していません ユーザーロジックがクロックサイクル 4 でリクエスト 4 を示すとき 2 つ前のクロックサイクルで示されたリクエスト 1 2 および 3 を考慮して使用可能なクレジット数とタグ数について正しい値を取得する必要があります リクエスト 4 は ヘッダークレジットとデータクレジットを 1 つずつ使用します ユーザーロジックがクロックサイクル 5 でリクエスト 5 を示すとき リクエスト 2 3 および 4 を考慮して使用可能なクレジット数とタグ数について正しい値を取得する必要があります リクエスト 5 が 1 ヘッダークレジットと 1 データクレジットを使用すると 2 サイクル後にデータクレジットが使用できるようになり 使用できるタグも同じ数となります このため リクエスト 6 は新しいクレジットが利用できるようになるまで待機する必要があります X-Ref Target - Figure 3-92 図 3-92: リクエスターリクエストインターフェイスでの利用可能なクレジット数およびタグ数を示す信号 トランザクション順序の維持 コアは リクエスターインターフェイスでユーザーから受信したリクエストをリンクに送信する際に順序を変更しません ユーザーロジックがリクエスターリクエストインターフェイスおよびコンプリーターコンプリーションインターフェイスに送信されるトランザクション順序を正確に制御する必要がある場合 ( 通常 順序設定で STRICT を使用する場合に コンプリーションがポステッドリクエストを飛び越えないようにするため ) コアはパイプラインをとおるポステッドトランザクションの進捗をユーザーロジックがモニタリングできるメカニズムを提供します これによって リクエスターリクエストインターフェイスから送信された特定のポステッドリクエストを飛び越えるリスクを冒すことなく コンプリーターコンプリーションインターフェイス上にコンプリーションを送信するタイミングを判断できます リクエスターリクエストインターフェイスを介してポステッドリクエスト ( メモリ書き込みトランザクションまたはメッセージ ) を転送する場合 ユーザーロジックは最初のビートで 6 ビットシーケンス番号を PCIe コアへオプションで提供します s_axis_rq_tuser 内のシーケンス番号フィールド seq_num0[5:0] を使用して そのビー UltraScale+ Device Block for PCIe v

213 トで開始する最初の TLP のシーケンス番号を送信し seq_num1[5:0] フィールドを使用してそのビートで開始する 2 番目の TLP ( 存在する場合 ) のシーケンス番号を送信します ユーザーロジックは コアの pcie_rq_seq_num0[5:0] および pcie_rq_seq_num1[5:0] 出力をモニタリングして これらのシーケンス番号が現れるのを確認できます トランザクションがコアの内部送信パイプライン内の特定段階 ( コンプリーションを渡すことができなくなるレベル ) に到達すると コアは pcie_rq_seq_num_vld0 を 1 サイクル間アサートして ポステッドリクエストのシーケンス番号を pcie_rq_seq_num0[5:0] 出力に提供します 同じサイクルでパイプラインに 2 番目のポステッドリクエストが存在する場合 コアはそのサイクルで pcie_rq_seq_num_vld1 をアサートして pcie_rq_seq_num1[5:0] 出力に 2 番目のポステッドリクエストのシーケンス番号を示すことも可能です したがって ユーザーロジックは特定の TLP がパイプラインステージに到達したかどうかを確認するために シーケンス番号の出力セットを両方ともモニタリングする必要があります pcie_rq_seq_num0[5:0] または pcie_rq_seq_num1[5:0] にシーケンス番号が現れた後コアによって送信されたコンプリーションが コアの内部送信パイプラインにある対応するポステッドリクエストを渡すことはありません リクエスターコンプリーションインターフェイスの動作 (512 ビット ) X-Ref Target - Figure 3-93 PCI Express 512-bit Soft Bridge User Application PCIe Requester Completion Interface m_axis_rc_tdata[511:0] m_axis_rc_tvalid m_axis_rc_tready m_axis_rc_tkeep[7:0] PCIe Requester Interface AX14-Stream Master m_axis_rc_tlast byte_en[31:0] is_sop[3:0] is_sop0_ptr[1:0] is_sop1_ptr[1:0] is_sop2_ptr[1:0] is_sop3_ptr[1:0] is_eof[3:0] is_eof0_ptr[3:0] is_eof1_ptr[3:0] is_eof2_ptr[3:0] is_eof3_ptr[3:0] discontinue parity[63:0] AX14- Stream Slave m_asix_rc_tuser[42:0] 図 3-93: リクエスターコンプリーションインターフェイスの信号 図 3-93 に コアのリクエスターコンプリーションインターフェイスに関連する信号を示します ストラドルが無効に設定されている場合 コアはこのインターフェイスを使用して各 TLP を AXI4-Stream パケットとして送信します パケットは 96 ビットディスクリプターから始まり コンプリーションにペイロードが含まれる場合はその後をデータが続きます リクエスターコンプリーションインターフェイスは Vivado IDE でコアのカスタマイズ時に設定される ペイロード転送用の 2 つのデータアライメントモードをサポートします Dword アライメントモードの場合 コアはディス UltraScale+ Device Block for PCIe v

214 クリプターの最後の Dword の直後にコンプリーションペイロードの最初の Dword を送信する必要があります 128 ビットアドレスアライメントモードでは コアはペイロードの送信を必ず 4 等分された 512 ビットワードの最初の 128 ビットグループのディスクリプターに続いて 2 番目のビットグループで開始します ペイロードの最初の Dword は 2 番目のビットグループの 4 つの Dword 位置のいずれかに配置可能で ユーザーロジックがリクエストをコアに送信したとき そのオフセットはユーザーロジックが提供するアドレスオフセットによって判断されます ( つまり リクエスターリクエストインターフェイスの addr_offset 入力の設定 ) したがって 128 ビットアドレスアライメントモードは リクエスターリクエストインターフェイスも 128 ビットアドレスアライメントモードを使用するようにコンフィギュレーションされている場合のみ リクエスターコンプリーションインターフェイスで利用できます リクエスターコンプリーションのディスクリプターのフォーマット コアのリクエスターコンプリーションインターフェイスは リンクから受信したコンプリーションデータをユーザーアプリケーションへ AXI4-Stream パケットとして送信します 各パケットはディスクリプターから始まり ディスクリプターの後にペイロードデータが続きます ディスクリプターは必ず 12 バイト長となり コンプリーションパケットの最初の 12 バイトで送信されます コンプリーションデータが複数のスプリットコンプリーションに分割される場合は コアが各スプリットコンプリーションを個別にディスクリプターを備えた AXI4-Stream パケットとして送信します リクエスターコンプリーションディスクリプターのフォーマットは 図 3-94 を参照してください リクエスターコンプリーションディスクリプターの各フィールドの詳細は 図 3-18 で説明しています X-Ref Target - Figure DW Bus Device /Function R Dword count R Byte Count Address [11:0] Requester ID Poisoned Completion Completion Status Request Completed Locked Read Completion DW + 0 DW R Attr TC R Bus Device / Function Tag Completer ID +1 Error Code 図 3-94: リクエスターコンプリーションのディスクリプターのフォーマット UltraScale+ Device Block for PCIe v

215 表 3-18: リクエスターコンプリーションディスクリプターのフィールド ビットインデックスフィールド名説明 11:0 15:12 Lower Address ( 下位アドレス ) Error Code ( エラーコード ) このフィールドでは リクエストによって参照される最初のバイトの下位 12 ビットを提供します コアは スプリットコンプリーションテーブルからこのアドレスを返します このテーブルには リクエスター側の保留されているすべてのノンポステッドリクエストのアドレスとその他のパラメーターが格納されています 送信されたコンプリーションにエラーがあると このアドレスのビット [6:0] のみ有効として見なされます これはバイト単位のアドレスです コンプリーションのエラーコードです これらの 3 ビットは コアが受信したコンプリーションに対して実行したエラーチェックで検出されたエラー状況をエンコードしたものです エンコードは次のとおりです 0000: 正常終了 ( すべてのデータを受信 ) 0001: コンプリーション TLP にポイズニングが適用されている 0010: リクエストは UR CA または CRD ステータスを含むコンプリーションで終了している 0011: データを含まないコンプリーションのタイムアウトでリクエストが終了したことを示す 0100: 送信されている現在のコンプリーションには 未処理リクエストと同じタグがあるが その Requester ID TC または Attribute フィールドが未処理リクエストのパラメーターと一致していない 0101: 開始アドレスのエラーを示す コンプリーション TLP ヘッダーの下位アドレスが そのリクエストの次に予想されるバイトの開始アドレスと一致しない 0110: タグが無効であることを示す このコンプリーションは 処理されていないリクエストのいかなるタグとも一致しない 0111: バイトカウントが無効であることを示す コンプリーションのバイトカウントがそのリクエストに対して予測されている合計バイト数を超えています 1000: コンプリーションのタイムアウトでリクエストが終了したことを示す この場合 ディスクリプターはコンプリーション TLP に対応しないため ビット [30] リクエスターファンクション [55:48] およびタグフィールド [71:64] を除くディスクリプターのその他のフィールドは無効となる 1001: リクエストを生成したファンクションをターゲットとする Function-Level Reset (FLR) によってリクエストが終了したことを示す この場合 ディスクリプターはコンプリーション TLP に対応しないため ビット [30] リクエスターファンクション [55:48] およびタグフィールド [71:64] を除くディスクリプターのその他のフィールドは無効となる UltraScale+ Device Block for PCIe v

216 表 3-18: リクエスターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 28: :32 45:43 Byte Count ( バイトカウント ) Locked Read Completion ( ロックされた読み出しコンプリーション ) Request Completed ( リクエストの完了 ) Dword Count (Dword カウント ) Completion Status ( コンプリーションステータス ) これらの 13 ビットは 0 ~ 4,096 バイトの範囲の値に設定できます シングルコンプリーションを使用してメモリ読み出しリクエストが完了する場合 このバイトカウント値がペイロードサイズをバイト単位で示します I/O の読み出しコンプリーションや I/O の書き込みコンプリーションの場合 このフィールドは 4 にセットされる必要があります 長さ 0 のメモリ読み出しに対するコンプリーションを送信している間 バイトカウント値は 1 にセットされる必要があり ダミーのペイロードとして 1 Dword がディスクリプターの後に送信される必要があります 各メモリ読み出しコンプリーションでは このバイトカウントフィールドがリクエストを完了するのに必要となる残りのバイト数を示します ( コンプリーションで返ってきたバイト数を含む ) 複数のコンプリーションを使用してメモリ読み出しリクエストが完了する場合 各コンプリーションのこのバイトカウント値は 先行するコンプリーションが示す値から先行するコンプリーションで返ってきたバイト数を引いた値となります Locked Read ( ロックされた読み出し ) リクエストに対してコンプリーション応答する場合 このビットを 1 にセットします その他のコンプリーション応答の場合 このフィールドは 0 にセットする必要があります コアは リクエストに対する最後のコンプリーションのディスクリプターのこのビットをアサートします このビットをアサートすることで リクエストの正常終了 ( すべてのデータを受信 ) またはエラーによる異常終了を示します ユーザーロジックは この表示を利用して 処理されていないリクエストをクリアできます タグがユーザーロジックによって割り当てられている場合 タグフィールドが一致し Request Completed ビットが 1 にセットされているコンプリーションディスクリプターをコアから受信するまで ユーザーロジックはリクエストに割り当てられているタグを再度指定できません これらの 11 ビットは 現在のパケットのペイロードサイズを示します (Dword) 範囲は 0 ~ 1000 Dword です このフィールドは I/O 読み出しのコンプリーションについては 1 にセットされ I/O 書き込みのコンプリーションについては 1 にセットされます また 長さ 0 のメモリ読み出しに対してコンプリーションを送信している間も 1 にセットされている必要があります その他の場合 この Dword カウントは その時点のパケットのペイロードの実際の Dword 数に相当します これらのビットは 受信したコンプリーション TLP のコンプリーションステータスフィールドの設定を示します 有効な設定は次のとおりです 000: トランザクションが正常に完了 001: サポートされないリクエスト (UR) 010: コンフィギュレーションリクエストのリトライステータス (CRS) 100: コンプリーターの中断 (CA) UltraScale+ Device Block for PCIe v

217 表 3-18: リクエスターコンプリーションディスクリプターのフィールド ( 続き ) ビットインデックスフィールド名説明 46 Poisoned Completion ( ポイズンコンプリーション ) このビットのセットにより コンプリーション TLP の Poison ビットがセットされていることを示します パケット内のデータが破損していると考えることができます 63:48 Requester ID ( リクエスター ID) コンプリーションに関連する PCI リクエスター ID です 71:64 Tag ( タグ ) コンプリーションに関連する PCIe タグです 87:72 Completer ID ( コンプリーター ID) コンプリーション TLP で受信されるコンプリーター ID です ( これらの 16 ビットは レガシインタープリテーションモードでは 8 ビットのバス番号 5 ビットのデバイス番号 3 ビットのファンクション番号にわけられる ARI モードの場合 これらの 16 ビットは 8 ビットのバス番号と 8 ビットのファンクション番号として扱われる ) 91:89 Transaction Class (TC) 94:92 Attributes ( 属性 ) コンプリーションに関連する PCIe トランザクションクラス (TC) です コンプリーションに関連する PCIe 属性です ビット 92 は No Snoop ビット ビット 93 は Relaxed Ordering ビット ビット 94 は予約領域です データを含まないコンプリーションの転送 図 3-95 は ( リクエスターコンプリーションインターフェイスを介した関連するペイロードを伴わない ) リンクから受信したコンプリーション TLP の転送を示しています このセクションのタイミング図では インターフェイスでコンプリーションがストラドルされないことを仮定しています ストラドル機能の詳細は RC インターフェイスのストラドルオプション を参照してください X-Ref Target - Figure 3-95 図 3-95: リクエスターコンプリーションインターフェイスでのデータを含まないコンプリーションの転送 コンプリーション TLP をすべて転送するには このインターフェイスではシングルビートしか必要ありません コアは パケットが送信される間 m_axis_rc_tvalid 信号をアサートしたままに保持します ユーザーロジックは m_axis_rc_tready をディアサートしてビートを適時延ばすことができます AXI-Stream インターフェイスの信号 m_axis_rc_tkeep ( 各 Dword 位置に 1 つ ) がパケット内の有効なディスクリプター Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで m_axis_rc_tkeep ビットは継続的に 1 にセットされます m_axis_rc_tlast 信号は必ずアサートされ パケットが現ビートで終了することを示します m_axi_rc_tuser バスには is_sop[0] 信号も含まれており すべてのパケットの最初のビートでアサートされます ユーザーロジックは オプションでこの信号を使用して インターフェイス上のディスクリプターの開始を示 UltraScale+ Device Block for PCIe v

218 すことができます ストラドルオプションが使用されていない場合 m_axi_rc_tuser 内の sop および eop で示されるその他の信号は コンプリーションの転送に関連しません データを含むコンプリーションの転送 図 3-96 は ( リクエスターコンプリーションインターフェイスを介した関連するペイロードを伴う ) リンクから受信したコンプリーション TLP の Dword アライメント転送を示しています 図示する目的で ユーザーメモリに書き込まれるデータブロックのサイズは n Dword と仮定し n = k (k > 1) となります このセクションのタイミング図では インターフェイスでコンプリーションがストラドルされないことを仮定しています ストラドル機能の詳細は RC インターフェイスのストラドルオプション を参照してください Dword アライメントモードでは 転送は 3 ディスクリプター Dword から始まり その直後にペイロード Dword が続きます ディスクリプターとペイロードを含むすべての TLP は 1 つの AXI4-Stream パケットとして転送されます ペイロードの長さが 2 Dword を超える場合 ペイロード内のデータは常に連続するバイトストリームとなります ペイロードの最初の Dword 内の最初の有効バイトと最後の Dword 内の最後の有効バイトの位置は リクエスターコンプリーションディスクリプターの Lower Address フィールドと Byte Count フィールドから判断できます ペイロードサイズが 2 Dword 以下の場合 ペイロード内の有効なバイトは連続しません このような場合 ユーザーロジックはリクエスターリクエストインターフェイスを介して送信される各リクエストに関連する First Byte Enable フィールドと Last Byte Enable フィールドを格納し これらを使用してコンプリーションペイロード内の有効バイトを判断する必要があります 連続および非連続の両ペイロードの場合に ユーザーロジックはオプションで m_axi_cq_tuser バス内にあるバイトイネーブル出力 byte_en[63:0] を使用し ペイロード内の有効バイトを判断します コアは パケットが送信される間 m_axis_rc_tvalid 信号をアサートしたままに保持します ユーザーロジックは m_axis_rc_tready をディアサートしてビートを適時延ばすことができます AXI-Stream インターフェイス信号 m_axis_rc_tkeep ( 各 Dword 位置に 1 つ ) は ディスクリプター およびディスクリプターとペイロード間に挿入される NULL バイトを含む パケットの有効な Dword を示します つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで tkeep ビットは継続的に 1 にセットされます パケットの転送中 インターフェイスの幅全体がパケットで埋められないときは パケットの最後のビートに限り m_axis_rc_tkeep ビットを 0 にできます m_axis_rc_tlast 信号は必ずパケットの最後のビートでアサートされます m_axi_rc_tuser バスは インターフェイスのユーザー側に関連するロジックを簡潔なものにするため または追加の機能をサポートするために利用可能なオプションの信号をいくつか提供します is_sop[0] 信号は パケットのディスクリプターがバス上にある場合 各パケットの最初のビートでアサートされます ストラドルオプションが使用されていない場合 m_axi_rc_tuser 内の sop および eop で示されるその他の信号は コンプリーションの転送に関連しません バイトイネーブル出力 byte_en[63:0] ( 各バイトレーンに 1 つ ) はペイロードの有効バイトを示します これらの信号は 有効なペイロードバイトが対応するレーンに存在する場合にのみアサートされます ( ディスクリプターや NULL バイトに対してはアサートされない ) ペイロードサイズが 2 Dword 以下の場合を除き アサートされたバイトイネーブルビットはペイロードの開始から常に連続します 2 Dword 以下のコンプリーションペイロードの場合 byte_en の 1 は連続しません その他の特殊なケースとして byte_en ビットがすべて 0 にセットされてコアが 1 Dword のペイロードを転送するときの 長さ 0 のメモリ読み出しが挙げられます つまり あらゆるケースでユーザーロジックは byte_en 信号を直接使用することで 関連するバイトをメモリに書き込むことができます UltraScale+ Device Block for PCIe v

219 X-Ref Target - Figure 3-96 図 3-96: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 (Dword アライメントモード ) 図 3-97 は ( リクエスターコンプリーションインターフェイスを介した関連するペイロードを伴う ) リンクから受信したコンプリーション TLP のアドレスアライメント転送を示しています サンプルタイミングの図では 送信されるデータブロックの開始 Dword ( ディスクリプターの下位アドレスフィールドで伝搬 ) は (m ) と仮定されています ( 一部の整数 m) データブロックのサイズは n Dword と仮定し n = k (k > 0) となります 128 ビットアドレスアライメント転送では ストラドルオプションが無効なため このタイミング図は インターフェイスでコンプリーションがストラドルされないことを仮定しています 128 ビットアドレスアライメントモードでは ペイロードの送信は必ず ディスクリプターの最後のバイトの後に続いて発生するビートで開始します ペイロードの最初の有効バイトのアドレスに基づいて ペイロードの最初のバイトは 16 ~ 32 のどのバイトレーンにも出力できます つまり ディスクリプターの最初の Dword からペイロードの最後の Dword まで m_axis_rc_tkeep ビットは継続的に 1 にセットされます データバスの 128 ビットフィールド内での最初の Dword のアライメントは ユーザーアプリケーションがコアへリクエストを送信したときのリクエスターリクエストインターフェイスの addr_offset[1:0] 入力の設定によって判断されます ユーザーアプリケーションは オプションでバイトイネーブル出力 byte_en[63:0] を使用してペイロード内の有効バイトを判断します UltraScale+ Device Block for PCIe v

220 X-Ref Target - Figure 3-97 図 3-97: リクエスターコンプリーションインターフェイスでのデータを含むコンプリーションの転送 (128 ビットアドレスアライメントモード ) UltraScale+ Device Block for PCIe v

221 RC インターフェイスのストラドルオプション PCIe コアの RC インターフェイスは リクエスターコンプリーションインターフェイスを介して最大 4 つのコンプリーションを同じビートで開始できます このストラドルオプションは Vivado IDE でコアをカスタマイズする際に有効にします ストラドルオプションは Dword アライメントモードとの併用でのみ可能です ストラドルオプションが有効に設定されている場合 コンプリーション TLP はパケット境界のない連続するストリームとして AXI4-Stream インターフェイスを介して転送されます したがって m_axis_rc_tkeep および m_axis_rc_tlast 信号は このインターフェイスを介して送信されるコンプリーション TLP の境界を判断するのに有効ではありません ( ストラドルオプションが使用されている場合 コアは m_axis_rc_tkeep をすべて 1 m_axis_rc_tlast をすべて 0 にセットする ) その代わりに m_axis_rc_tuser バス内の次の信号を使用して TLP のデリニエーション ( 輪郭を決定する ) が実行されます is_sop[3:0]: あるビートで開始するコンプリーション TLP が 1 つ以上ある場合 コアはそのビートでこの出力を 0 以外の値に設定します ストラドルが無効の場合 is_sop[0] のみが有効になり is_sop[3:1] は常に 0 になります ストラドルが有効の場合 設定は次のとおりです 0000: 現ビートで開始する新しい TLP はありません 0001: 1 つの新しい TLP が現ビートで開始します 開始位置は is_sop0_ptr[1:0] で示されます 0011: 2 つの新しい TLP が現ビートで開始しています Is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示します 0111: 3 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示し is_sop2_ptr[1:0] が 3 番目の TLP の開始位置を示します 1111: 4 つの新しい TLP が現ビートで開始しています is_sop0_ptr[1:0] が最初の TLP の開始位置を示し is_sop1_ptr[1:0] が 2 番目の TLP の開始位置を示し is_sop2_ptr[1:0] が 3 番目の TLP の開始位置を示し is_sop3_ptr[1:0] が 4 番目の TLP の開始位置を示します これ以外の設定はすべて予約されています is_sop0_ptr[1:0]: is_sop[0] がセットされた場合は 現ビートで開始する最初のコンプリーション TLP のオフセットをこのフィールドで示します 有効な設定は 2'b00 (Dword 0 で開始する TLP) 2'b01 (Dword 4 で開始する TLP) 2'b10 (Dword 8 で開始する TLP) および 2'b11 (Dword 12 で開始する TLP) is_sop1_ptr[1:0]: is_sop[1] がセットされた場合は 現ビートで開始する 2 つ目のコンプリーション TLP のオフセットをこのフィールドで示します 有効な設定は 2'b01 (Dword 4 で開始する TLP) 2'b10 (Dword 8 で開始する TLP) および 2'b11 (Dword 12 で開始する TLP) is_sop2_ptr[1:0]: is_sop[2] がセットされた場合は 現ビートで開始する 3 つ目のコンプリーション TLP のオフセットをこのフィールドで示します 有効な設定は 2'b10 (Dword 8 で開始する TLP) および 2'b11 (Dword 12 で開始する TLP) です is_sop3_ptr[1:0]: is_sop[3] がセットされた場合は 現ビートで開始する 4 つ目のコンプリーション TLP のオフセットをこのフィールドで示します 唯一有効な設定は 2'b11 (Dword 12 で開始する TLP) です Is_eop[3:0]: これらの出力は 1 つまたはそれ以上の TLP が現ビートで終了していることを示します これらの出力は TLP の最後のビートで設定されます ストラドルが無効の場合 is_eop[0] のみが有効になり is_eop[3:1] は常に 0 になります ストラドルが有効の場合 設定は次のとおりです 0000: 現ビートで終了している TLP はありません 0001: 1 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] の設定により この TLP の最後の Dword のオフセットが示されます 0011: 2 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示します 0111: 3 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示し is_eop2_ptr[3:0] が 3 番目の TLP の最後の Dword のオフセットを示します 1111: 4 つの TLP が現ビートで終了しています is_eop0_ptr[3:0] が最初の TLP の最後の Dword のオフセットを示し is_eop1_ptr[3:0] が 2 番目の TLP の最後の Dword のオフセットを示し UltraScale+ Device Block for PCIe v

222 is_eop2_ptr[3:0] が 3 番目の TLP の最後の Dword のオフセットを示し is_eop3_ptr[3:0] が 4 番目の TLP の最後の Dword を示します これ以外の設定はすべて予約されています is_eop0_ptr[3:0]: is_eop[0] がセットされると このフィールドは現ビートで終了する最初の TLP の最後の Dword のオフセットを示します 0 ~ 15 の値をとることができます 最後のバイトのオフセットは TLP の開始アドレスと長さ あるいはバイトイネーブル信号 byte_en[63:0] から判断できます is_eop1_ptr[3:0]: is_eop[1] がセットされると このフィールドは現ビートで終了する 2 つ目の TLP の最後の Dword のオフセットを示します 6 ~ 15 の値をとることができます is_eop2_ptr[3:0]: is_eop[2] がセットされると このフィールドは現ビートで終了する 3 つ目の TLP の最後の Dword のオフセットを示します 10 ~ 15 の値をとることができます is_eop3_ptr[3:0]: is_eop[3] がセットされると このフィールドは現ビートで終了する 4 つ目の TLP の最後の Dword のオフセットを示します 14 または 15 の値をとることができます 図 3-98 に ストラドルオプションが有効に設定されたリクエスターコンプリーションインターフェイスでの 11 のコンプリーション TLP の転送を示します 最初のコンプリーション TLP (COMPL 1) は BEAT 1 の Dword 位置 0 で開始し BEAT 2 の Dword 位置 2 で終了しています 2 番目の TLP (COMPL 2) は 同じビートの Dword 位置 8 で開始し Dword 位置 14 で終了しています つまり BEAT 1 で開始している TLP が 1 つ存在し ( 開始位置は is_sop0_ptr で示される ) 終了している TLP が 2 つ存在します (Dword 終了位置はそれぞれ is_eop0_ptr および is_eop1_ptr で示される ) BEAT 3 には Dword オフセット 8 で開始し Dword オフセット 10 で終了している COMPL 3 があります 同じビートには 2 番目の TLP (CMPL 4) もあり これは Dword オフセット 12 で開始して次のビートに続きます このビートでは is_sop0_ptr で COMPL 3 の開始 Dword オフセットを示し is_sop1_ptr で COMPL 4 の開始 Dword オフセットを示します is_eop0_ptr は COMPL 4 の最後の Dword オフセットを示します BEAT 4 には Dword オフセット 0 で終了している COMPL 4 が存在し 3 つの新しいコンプリーション TLP (COMPL 5 6 および 7) が存在します 新しい COMPL 5 6 および 7 の開始 Dword オフセットはそれぞれ is_sop0_ptr is_sop1_ptr および is_sop2_ptr で示されます COMPL および 7 はそれぞれ is_eop0_ptr is_eop1_ptr is_eop2_ptr および is_eop3_ptr で示されます BEAT 5 には 4 つのコンプリーション TLP (COMPL 8 ~ 11) が存在します これらの開始 Dword オフセットはそれぞれ is_sop0_ptr is_sop1_ptr is_sop2_ptr および is_sop3_ptr で示されます 終了オフセットはそれぞれ is_eop0_ptr is_eop1_ptr is_eop2_ptr および is_eop3_ptr で示されます つまり このビートでは SOP および EOP の各 4 つのポインターすべてで有効な情報が提供されます UltraScale+ Device Block for PCIe v

223 X-Ref Target - Figure 3-98 図 3-98: ストラドルオプションが有効に設定されたリクエスターコンプリーションインターフェイスでのコンプリーション TLP の転送 UltraScale+ Device Block for PCIe v

224 コンプリーションの転送中断 関連するペイロードを含むリクエストの場合 転送されたペイロードにエラーがあると コアは m_axis_rc_tuser バスの discontinue 信号をパケットの最後のビートでアサートしてこのエラーを通知します これは 内部メモリからデータを読み出す間にコアが訂正不可能なエラーを検出したときに発生します パケットの最後のビートで discontinue 信号がアサートされたことを検出した場合 ユーザーアプリケーションはパケット全体を破棄する必要があります ストラドルオプションが使用されている場合 コアは 終了するコンプリーション TLP の転送を discontinue 信号のアサートで中断した同じビートで新しいコンプリーション TLP を開始することはできません コンプリーションエラーの対応 コアは リンクからコンプリーション TLP を受信すると 対応するリクエストを判断するためにスプリットコンプリーションテーブル内の未処理リクエストと一致させ それらのヘッダー内のフィールドと予想値を照らし合わせてあらゆるエラーを検出します その後 コアはコンプリーションディスクリプターの一部としてユーザーロジックへ送信する 4 ビットのエラーコードでエラー状況を通知します また コアは ディスクリプターの Request Completed ビット ( ビット 30) をセットして 特定リクエストの最後のコンプリーションを示します 次に さまざまなエラーコードが示すエラー状況を説明しています 0000: エラーは検出されていないことを示します 0001: リンクから受信したコンプリーション TLP にエラーがあることを示します ユーザーロジックは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーロジックは対応するリクエストのすべてのステートを削除できます 0010: リクエストは UR CA または CRD ステータスを含むコンプリーション TLP で終了しています この場合 コンプリーションに関連するデータはなく コンプリーションディスクリプターの Request Completed がセットされています そのようなコンプリーションをコアから受信すると ユーザーロジックは対応するリクエストを破棄できます 0011: 読み出しリクエストが不正なバイトカウントのコンプリーション TLP で終了しています バイトカウントが予想値と一致しないコンプリーション TLP が受信されると このエラーコードが通知されます コンプリーションディスクリプターの Request Completed ビットはセットされています そのようなコンプリーションをコアから受信すると ユーザーロジックは対応するリクエストを破棄できます 0100: このコードは 送信されている現在のコンプリーションには 未処理リクエストと同じタグがあるが その Requester ID TC または Attribute フィールドが未処理リクエストのパラメーターと一致していないことを示します ユーザーロジックは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーロジックは対応するリクエストのすべてのステートを削除できます 0101: 開始アドレスのエラーを示します コンプリーション TLP ヘッダーの下位アドレスが そのリクエストの次に予想されるバイトの開始アドレスと一致しませんでした ユーザーロジックは ディスクリプターに続くすべてのデータを破棄する必要があります さらに ディスクリプターの Request Completed ビットがセットされていない場合は Request Completed ビットがセットされたコンプリーションディスクリプターを受信するまで このタグの後続コンプリーションに対応するデータを破棄し続ける必要があります Request Completed ビットがセットされたコンプリーションディスクリプターを受信すると ユーザーロジックは対応するリクエストのすべてのステートを破棄できます 0110: タグが無効であることを示します このエラーコードは コンプリーション TLP のタグが未処理リクエストのタグと一致していないことを示します ユーザーロジックは ディスクリプターに続くすべてのデータを破棄する必要があります 0111: バイトカウントが無効であることを示します コンプリーションのバイトカウントがそのリクエストに対して予測されている合計バイト数を超えています このとき コンプリーションディスクリプターの Request Completed ビットもセットされています そのようなコンプリーションをコアから受信すると ユーザーロジックは対応するリクエストを破棄できます UltraScale+ Device Block for PCIe v

225 1000: コンプリーションのタイムアウトでリクエストが終了したことを示します リンクからコンプリーションを受信せずに未処理リクエストがタイムアウトした場合に このエラーコードが使用されます コアは 各未処理リクエストに対してコンプリーションタイマーを保持し リクエスターコンプリーションインターフェイスを介してユーザーロジックにダミーのコンプリーションディスクリプターを送信することによって コンプリーションのタイムアウトに対応します このため ユーザーロジックはペンディングリクエストを終了したり リクエストを再送信できます このディスクリプターは リンクから受信したコンプリーション TLP に対応しないため Request Completed ビット ( ビット 30) タグフィールド ( ビット [71:64]) およびリクエスターファンクションフィールド ( ビット [55:48]) のみがこのディスクリプターで有効となります 1000: リクエストを生成したファンクションをターゲットとする Function-Level Reset (FLR) によってリクエストが終了したことを示します この場合 コアはリクエスターコンプリーションインターフェイスを介してユーザーロジックへダミーのコンプリーションディスクリプターを送信するため ユーザーロジックはペンディングリクエストを終了できます このディスクリプターは リンクから受信したコンプリーション TLP に対応しないため Request Completed ビット ( ビット 30) タグフィールド ( ビット [71:64]) およびリクエスターファンクションフィールド ( ビット [55:48]) のみがこのディスクリプターで有効となります タグがコアの内部で管理される場合 コア内のロジックによって そのリクエストのすべてのコンプリーションが受信されるまで あるいはリクエストがタイムアウトするまで ペンディングリクエストに割り当てられたタグが再び使用されることはありません ただし タグがユーザーロジックで管理される場合は ユーザーロジックがコンプリーションディスクリプターの Request Completed ビットをセットして コアがリクエストの終了を示すまで そのリクエストに割り当てられたタグが再び使用されないようにする必要があります ユーザーロジックは 0 以外のエラーコードを含むコンプリーションを受信した場合にペンディングリクエストを終了できますが コンプリーションディスクリプターの Request Completed ビットがセットされていない限り 関連するタグをリリースできません あるリクエストが複数のスプリットコンプリーションを受信し それらのいずれかにエラーが検出された場合にこのような状況が適用されます この場合 コアは エラーが検出された後であってもペンディングリクエストに対するコンプリーション TLP を継続して受信できますが タグが早期に再度割り当てられた場合 これらのコンプリーションが別のリクエストと不正に一致してしまいます 場合によっては エラーを含むスプリットコンプリーションが受信された場合でもタグの再使用が可能になるまで コアはリクエストがタイムアウトするまで待機する必要があることに注意してください 注記 : 各パリティビットは 512 ビット AXIS tdata の 1 バイトのパリティに対応します 512 ビット AXIS tdata に対応する 64 ビットのパリティビットがあり AXIS tkeep[15:0] に基づいて有効になります たとえば tkeep[15:0] = 0x0001 の場合 下位 4 パリティビットのみが有効です tkeep[15:0] = 0xFFFF の場合 64 パリティビットすべてが有効です パワーマネージメント コアは 次のパワーマネージメントモードをサポートします Active State Power Management (ASPM) Programmed Power Management (PPM) PCI Express デザインの一部としてこれらのパワーマネージメント機能をインプリメントすると PCI Express の階層でシステム電力節約のためパワーマネージメントに関するメッセージがスムーズに交信できるようになります パワーマネージメントメッセージ ID 機能がすべてインプリメントされています 次のセクションでは 上記のパワーマネージメントモードをサポートするためのユーザーロジックの定義について説明します ASPM および PPM インプリメンテーションの詳細は PCI Express Base Specification [ 参照 2] を参照してください Active State Power Management (ASPM) コアは L0s ステートから遷移するときに N_FTS 値を 255 として示し 確実なアライメントを行います N_FTS 値が変更される場合は 適切なアライメントを行うために十分な FTS シーケンスを受信して リカバリステートへ遷移しないようにする必要があります UltraScale+ Device Block for PCIe v

226 Active State Power Management (ASPM) は ユーザーロジック機能から見ると 自律型のトランスペアレントな機能です コアは ASPM に必要なコンディションをサポートしており 統合ブロックは ASPM L0s および ASPM L1 をサポートしています L0s と L1 を同時に有効にはできません 注記 : APSM は 非同期クロッキングモードではサポートされていません 注記 : L0s は Gen3 対応デザインではサポートされていません Gen1 および Gen2 用に生成されたデザインでのみサポートされています Programmed Power Management (PPM) PCI Express の階層で大幅に電力を節約するために コアは Programmed Power Management (PPM) の次のリンクステートをサポートしています L0: アクティブステート ( データ交信ステート ) L1: レイテンシが高く 低電力のスタンバイステート L3: リンクオフステート PPM プロトコルは ダウンストリームコンポーネント / アップストリームポートによって開始されます PPM L0 ステート L0 ステートは通常動作を表し ユーザーロジックに対しトランスペアレントです 初期化され プロトコルに基づいた PCI Express リンクのトレーニング完了後 コアは L0 ( アクティブステート ) に到達します PPM L1 ステート コアから PPM L1 ステートへの遷移は次の順序で発生します 1. 低電力の PPM L1 ステートへの遷移は PCI Express デバイスの電力ステートを D3-hot ( または D1 および D2 がサポートされている場合は これらのいずれか ) にプログラムすることで 常にアップストリームデバイスによって開始されます 2. デバイスの電力ステートは cfg_function_power_state 出力を使用して ユーザーロジックへ伝達されます 3. この後 コアは s_axis_rq_tready をディアサートし ユーザーロジックがユーザーインターフェイスで新たなトランザクションを開始しないように ユーザーロジックをスロットル / 中断させます しかし ユーザーインターフェイスでのペンディングトランザクションは完全に受信され 後で完了することができます この場合 例外が 2 つあります コアがエンドポイントとしてコンフィギュレーションされていて ユーザーコンフィギュレーション空間がイネーブルになっている場合 このとき cfg_function_power_state が D0 以外の場合 ユーザーアプリケーションは新しいリクエスト TLP を送信できませんが ユーザーコンフィギュレーション空間をターゲットにしたコンフィギュレーショントランザクションに対してはコンプリーションを返すことができます コアがルートポートとしてコンフィギュレーションされている場合 この状況で準拠を保つには cfg_function_power_state が D0 以外の場合 ユーザーアプリケーションは新しいリクエストを送信すべきではありません 4. コアは パワーマネージメント用の適切な DLLP をリンクパートナーに対して送受信して リンクを低電力 PPM L1 ステートへ遷移させます これはユーザーロジックにはトランスペアレントです 5. 手順 3 で説明されている例外を除き デバイスの電力ステートが D0 以外になっている間は すべてのユーザートランザクションが中断されます UltraScale+ Device Block for PCIe v

227 PPM L3 ステート PCI Express のエンドポイントから PPM L3 ステートへの遷移は次の順序で発生します 1. アップストリームのリンクパートナーから PME_Turn_Off メッセージを受信すると コアは L23 Ready ( 準備完了 ) リンクステートへの遷移を開始します 2. PME_Turn_Off メッセージを受信すると コアは cfg_power_state_change_interrupt を介してユーザーロジックとのハンドシェイク ( 表 3-19 を参照 ) を開始し ユーザーロジックから cfg_power_state_change_ack の応答を待機します 3. ハンドシェイクが成功すると パワーマネージメントをオフにする承認メッセージ (PME-turnoff_ack) がコアからアップストリームリンクパートナーへ送信されます 4. コアはインターフェイスをすべて閉じ 物理層 / データリンク層 / トランザクション層を無効にして コアに対するパワーオフの準備を整えます この場合 例外が 2 つあります コアがエンドポイントとしてコンフィギュレーションされていて ユーザーコンフィギュレーション空間がイネーブルになっている場合 このとき cfg_function_power_state が D0 以外の場合 ユーザーアプリケーションは新しいリクエスト TLP を送信できませんが ユーザーコンフィギュレーション空間をターゲットにしたコンフィギュレーショントランザクションに対してはコンプリーションを返すことができます コアがルートポートとしてコンフィギュレーションされている場合 この状況で準拠を保つには cfg_function_power_state が D0 以外の場合 ユーザーアプリケーションは新しいリクエストを送信すべきではありません 表 3-19: パワーマネージメントのハンドシェイク信号 ポート名方向説明 cfg_power_state_change_interrupt cfg_power_state_change_ack 出力 入力 アップストリームデバイスからパワーダウンリクエスト TLP を受信した場合にアサートされます その後 ユーザーアプリケーションが cfg_power_state_change_ack をアサートするまで cfg_power_state_change_interrupt はアサート状態を保持する必要があります 安全にパワーダウンできる場合に ユーザーアプリケーションによってアサートされます パワーダウン交渉は 次の手順で行われます 1. 電源とクロックがオフになる前に ダウンストリームスイッチのルートコンプレックスまたはホットプラグコントローラーが PME_Turn_Off ブロードキャストメッセージを出力します 2. コアがこの TLP を受信すると ユーザーアプリケーションに cfg_power_state_change_interrupt をアサートし cfg_power_state_change_ack 入力をポーリングします 3. ユーザーアプリケーションは cfg_to_turnoff のアサートを検出すると 処理中のパケットをすべて完了し 新しいパケットの生成を停止する必要があります ユーザーアプリケーションがオフになる準備が整った後 コアに対して cfg_power_state_change_ack をアサートします cfg_power_state_change_ack のアサート後 ユーザーアプリケーションのオフが確約されます 4. コアは cfg_power_state_change_ack のアサートを検出すると PME_TO_Ack メッセージを送信します UltraScale+ Device Block for PCIe v

228 X-Ref Target - Figure 3-99 user_clk_out rx_data[63:0]* PME_Turn_Off cfg_to_turnoff cfg_turnoff_ok tx_data[63:0]* PME_TO_ACK * Internal signal not appearing on User Interface X12465 図 3-99: パワーマネージメントのハンドシェイク : 64 ビット 割り込みリクエストの生成 62 ページの表 2-31 に示す cfg_interrupt_msi* および cfg_interrupt_msix_* の説明を参照してください 注記 : このセクションは UltraScale+ Device Integrated Block for PCIe コアのエンドポイントコンフィギュレーションのみを対象にしています 統合ブロックは 割り込みリクエストをレガシ メッセージ MSI または MSI-X 割り込みとして送信できます 動作モードは MSI Capability Structure (MSI 機能構造体 ) にあるメッセージ制御レジスタの MSI イネーブルビットおよび MSI-X Capability Structure (MSI-X 機能構造体 ) にある MSI-X メッセージ制御レジスタの MSI-X イネーブルビットを使用してプログラムされます MSI 機能構造体および MSI-X 機能構造体の詳細は PCI Local Base Specification v3.0 のセクション 6.8 を参照してください MSI Enable および MSI-X Enabled ビットのステートは cfg_interrupt_msi_enable 出力および cfg_interrupt_msix_enable 出力により ぞれぞれ反映されます 表 3-20 は コアの cfg_interrupt_msi_enable 出力および cfg_interrupt_msix_enable 出力に基づいてプログラムされている割り込みモードについて説明しています 表 3-20: 割り込みモード cfg_interrupt_msixenable=0 cfg_interrupt_msixenable=1 cfg_interrupt_ msi_enable=0 cfg_interrupt_ msi_enable=1 レガシ割り込み (INTx) モード cfg_interrupt インターフェイスは INTx メッセージのみ送信します MSI モード cfg_interrupt インターフェイスは MSI 割り込み (MWr TLP) のみ送信します MSI-X モード cfg_interrupt インターフェイスを使用して MSI-X 割り込みを生成できます 未定義 このモードは システムソフトウェアでサポートされていません ただし cfg_interrupt インターフェイスをアクティブにして MSI 割り込み (MWr TLP) を送信できます ( 任意で選択 ) MSI 制御レジスタの MSI イネーブルビット MSI-X 制御レジスタの MSI-X イネーブルビット PCI コマンドレジスタの Interrupt Disable ビットは ルートコンプレックスによってプログラムされます ユーザーアプリケーションでは これらのビットを直接制御しません コアの内部割込みコントローラーは レガシ割り込みと MSI 割り込みのみ生成します MSI-X 割り込みは ユーザーアプリケーションで生成され 送信 AXI4-Stream インターフェイスに現れる必要があります cfg_interrupt_msi_enable のステータスが内部割込みコントローラーで生成される割り込みタイプを決定します UltraScale+ Device Block for PCIe v

229 MSI イネーブルビットが 1 の場合は コアがメモリ書き込み TLP を送信して MIS リクエストを生成します MSI イネーブルビットが 0 の場合は PCI コマンドレジスタの Interrupt Disable ビットが 0 にセットされている限り コアはレガシ割り込みメッセージを生成します cfg_interrupt_msi_enable = 0: レガシ割り込み cfg_interrupt_msi_enable = 1: MSI コマンドレジスタのビット 10 = 0: INTx 割り込みが有効 コマンドレジスタのビット 10 = 1: INTx 割り込みは無効 ( リクエストはコアによってブロックされる ) ユーザーアプリケーションは cfg_function_status をモニタリングして INTx 割り込みが有効または無効であるかを確認できます 詳細は 表 2-24 を参照してください ユーザーアプリケーションは 2 つの方法で割り込みを要求します これらの方法は次のセクションで説明します レガシ割り込みモード ユーザーアプリケーションは 割り込み信号をアサートするために まず cfg_interrupt_int および cfg_interrupt_pending をアサートします その後 コアが cfg_interrupt_sent をアサートして 割り込みが受信されたことを示します PCI コマンドレジスタの Interrupt Disable ビットが 0 にセットされている場合は コアがアサート割り込みメッセージ (Assert_INTA) を送信します 次のクロックサイクルでユーザーアプリケーションは cfg_interrupt_int をディアサートします ユーザーアプリケーションが cfg_interrupt_int をディアサートした後 コアはディアサート割り込みメッセージ (Deassert_INTA) を送信します これは cfg_interrupt_sent の 2 回目のアサートで示されます ユーザーアプリケーションがアサート割り込みメッセージ (Assert_INTA) の確認信号を受信するまで cfg_interrupt_int をアサートする必要があります この確認は cfg_interrupt_sent のアサートによって示され 割り込みはルートの割り込みサービスルーチン (ISR) によって処理 / クリアされています cfg_interrupt_int をディアサートすると コアがディアサート割り込みメッセージ (Deassert_INTA) を送信します 割り込みが処理されるまで cfg_interrupt_pending をアサートする必要があり cfg_interrupt_int 信号のアサートに合わせて設定する必要があります そうでなければ ステータスレジスタの割り込みステータスビットが正しくアップデートされません アサート割り込みメッセージの受信時 ソフトウェア / ルートの ISR はこの割り込みステータスを読み出してこの機能に対する割り込みペンディングが存在するかどうかを判断します X-Ref Target - Figure cfg_interrupt_msi_enable cfg_interrupt_int[3:0] 4'h01 4'h0 4'h01 cfg_interrupt_pending[1:0] cfg_interrupt_sent 2'b01 2'b00 X13127 図 3-100: レガシ割り込みの信号 MSI モード 図 に示すとおり ユーザーアプリケーションは cfg_interrupt_msi_int の値を最初にアサートします コアは cfg_interrupt_msi_sent をアサートして割り込みが受け入れられたことを示し MSI メモリ書き込み TLP を送信します UltraScale+ Device Block for PCIe v

230 X-Ref Target - Figure X14332 MSI リクエストは 32 ビットのアドレス指定可能なメモリ書き込み TLP または 64 ビットのアドレス指定可能なメモリ書き込み TLP のいずれかです アドレス値は MSI 機能構造体の Message Address フィールドと Message Upper Address フィールドから取得し ペイロードは Message Data フィールドから取得します これらの値は MSI 機能構造体へのコンフィギュレーション書き込みによってシステムソフトウェアでプログラムされます コアがマルチベクター MSI 用にコンフィギュレーションされている場合 Multiple Message Enable フィールドに 0 以外の値をプログラムすることで システムソフトウェアはマルチベクター MSI メッセージを許可することができます 送信される MSI TLP のタイプ (32 ビットまたは 64 ビットのアドレス指定可能なもの ) は MSI 機能構造体の Upper Address フィールドの値によって変わります デフォルトでは MSI メッセージは 32 ビットのアドレス指定可能なメモリ書き込み TLP として送信されます 上位アドレスレジスタに 0 以外の値がシステムソフトウェアによってプログラムされている場合のみ MSI メッセージは 64 ビットのアドレス指定可能なメモリ書き込み TLP を使用します マルチベクター MSI メッセージが有効場合 アップストリームに送信されたさまざまな MSI メッセージを区別するため 送信された MSI TLP の各 Message Data フィールドの 1 つまたは複数の下位ビットをユーザーアプリケーションが上書きできます Message Data フィールドにあるユーザーアプリケーションで使用可能な下位ビット数は IP カタログで設定されている Multiple Message Capable フィールドの値 システムソフトウェアで設定されている Multiple Message Enable フィールドの値 および cfg_interrupt_msi_mmenable[2:0] コア出力で使用できる値の中で最も小さい値によって決定されます コアは cfg_interrupt_msi_select 内のビットをマスクしますが これらはシステムソフトウェアで Multiple Message Enable を使用して設定されません 必要なプロセスを示したサンプルコードは次のとおりです 例 : 図 3-101: MSI モード // Value MSI_Vector_Num must be in range: 0 MSI_Vector_Num (2^cfg_interrupt_mmenable)-1 if (cfg_interrupt_msienable) { // MSI Enabled if (cfg_interrupt_mmenable > 0) { // Multi-Vector MSI Enabled cfg_interrupt_msi_int[msi_vector_num] = 1; } else { // Single-Vector MSI Enabled cfg_interrupt_msi_int[msi_vector_num] = 0; } } else { // Legacy Interrupts Enabled } 1. cfg_interrupt_mmenable[2:0] == 000b つまり 1 つの MSI ベクターが有効の場合 cfg_interrupt_msi_int = 01h となります 2. cfg_interrupt_mmenable[2:0] == 101b つまり 32 の MSI ベクターが有効の場合 cfg_interrupt_msi_int = {32'b1 << {MSI_Vector#}} となります MSI_Vector# が 5 ビット値ならば 00000b MSI_Vector# 11111b となることが可能です UltraScale+ Device Block for PCIe v

231 ベクターごとのマスキング (Per-Vector Masking) が有効になっている場合は 送信されているべクターがマスクレジスタでマスクされていないことをまず確認する必要があります コンフィギュレーションインターフェイスでこのレジスタを読み出すことでこの確認はできます ( コアはマスクレジスタを確認しない ) MSI-X モード UltraScale+ Device Integrated Block for PCIe コアは 図 に示す MSI-X 割り込みとそのシグナリングをサポートします ビルトインの MSI-X ベクターテーブルを使用しない場合 MSI-X ベクターテーブルと MSI-X ペンディングビットアレイは ロジックの一部として BAR のアパーチャを利用してインプリメントする必要があります X-Ref Target - Figure 図 3-102: MSI-X モード MSI-X モードおよびビルトインの MSI-X ベクターテーブル コアは ペンディングビットアレイを含むビルトインの MSI-X ベクターテーブルをオプションでサポートします 図 に示すとおり ユーザーアプリケーションは ベクター番号が cfg_interrupt_msi_int で設定された状態で cfg_interrupt_msix_int を最初にアサートします コアは cfg_interrupt_msi_sent をアサートして 割り込みが受信されたことを示します cfg_interrupt_msix_vec_pending_status がクリアされた場合 コアは MSI-X メモリ書き込み TLP を送信します それ以外の場合では ファンクションマスクがクリアされるまで コアは MSI-X メモリ書き込み TLP を送信するのを待ちます X-Ref Target - Figure 図 3-103: MSI-X シグナリングおよびビルトインの MSI-X ベクターテーブル 割り込みを生成する代わりに 図 に示すように ユーザーアプリケーションは cfg_interrupt_msix_vec_pending を 2'b01 または 2'b10 に追加で設定して ペンディングビットアレイに対するクエリまたはクリアをそれぞれ実行できます クエリおよびクリアの前に cfg_interrupt_msix_vec_pending_status はペンディングステータスを示します UltraScale+ Device Block for PCIe v

232 X-Ref Target - Figure 図 3-104: MSI-X ペンディングビットアレイのクエリおよびクリア 注記 : 0 ではないトラフィッククラスビットまたは 0 ではないアドレス変換ビットを用いて MSI/MSIX 割り込みを生成しなければならないアプリケーションは RQ インターフェイスを使用して割り込み ( メモリ書き込みディスクリプター ) を生成する必要があります 受信メッセージインターフェイス ユーザーアプリケーションは コアが提供する独立した受信メッセージインターフェイスを使用して リンクから受信したメッセージ情報を受け取ることができます 受信メッセージインターフェイスが有効に設定されている場合 統合ブロックは メッセージタイプ ( 表 3-21) を示す cfg_msg_received_type[4:0] 出力を設定して cfg_msg_received 信号を 1 サイクルまたは複数サイクル間パルスし リンクからメッセージが到達したことを伝達します cfg_msg_received のアサートサイクル数は 受信するメッセージタイプによって異なります ( 表 3-22) cfg_msg_received がアクティブ High のとき 統合パラメーターは cfg_msg_received_data バス上にメッセージに関する任意のパラメーターを 1 回につき 8 ビットで転送します 表 3-22 では cfg_msg_received がアサートされる各サイクルで このバスに転送されるパラメーターをメッセージタイプ別に示しています ベンダーが指定するメッセージの場合 統合ブロックはこのインターフェイスを介して関連するペイロードの最初の Dword のみ転送します さらに大規模なペイロードが使用される場合は メッセージの転送にコンプリーターリクエストインターフェイスを使用する必要があります 表 3-21: 受信メッセージインターフェイスのメッセージタイプエンコード cfg_msg_received_type[4:0] メッセージタイプ 0 ERR_COR 1 ERR_NONFATAL 2 ERR_FATAL 3 Assert_INTA 4 Deassert_ INTA 5 Assert_INTB 6 Deassert_ INTB 7 Assert_INTC 8 Deassert_ INTC 9 Assert_INTD 10 Deassert_ INTD 11 PM_PME UltraScale+ Device Block for PCIe v

233 表 3-21: 受信メッセージインターフェイスのメッセージタイプエンコード ( 続き ) cfg_msg_received_type[4:0] メッセージタイプ 12 PME_TO_Ack 13 PME_Turn_Off 14 PM_Active_State_Nak 15 Set_Slot_Power_Limit 16 LTR (Latency Tolerance Reporting) 17 OBFF (Optimized Buffer Flush/Fill) 18 アンロック 19 Vendor_Defined タイプ 0 20 Vendor_Defined タイプ 1 21 ATS 無効なリクエスト 22 ATS 無効なコンプリーション 23 ATS ページリクエスト 24 ATS PRG 応答 25 ~ 31 予約 表 3-22: 受信メッセージインターフェイスのメッセージパラメーター メッセージタイプ ERR_COR ERR_NONFATAL ERR_FATAL cfg_msg_received のアサートサイクル数 2 cfg_msg_received_data[7:0] で転送されるパラメーター サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 Assert_INTx Deassert_INTx 2 PM_PME PME_TO_Ack PME_Turn_off PM_Active_State_Nak Set_Slot_Power_Limit 6 LTR (Latency Tolerance Reporting) 2 6 サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ペイロードのビット [7:0] サイクル 4: ペイロードのビット [15:8] サイクル 5: ペイロードのビット [23:16] サイクル 6: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: スヌープレイテンシのビット [7:0] サイクル 4: スヌープレイテンシのビット [15:8] サイクル 5: ノースヌープレイテンシのビット [7:0] サイクル 6: ノースヌープレイテンシのビット [15:8] UltraScale+ Device Block for PCIe v

234 表 3-22: 受信メッセージインターフェイスのメッセージパラメーター ( 続き ) メッセージタイプ OBFF (Optimized Buffer Flush/Fill) アンロック 2 Vendor_Defined タイプ 0 Vendor_Defined タイプ 1 cfg_msg_received のアサートサイクル数 3 データがない場合は 4 サイクル データがある場合は 8 サイクル データがない場合は 4 サイクル データがある場合は 8 サイクル ATS 無効なリクエスト 2 ATS 無効なコンプリーション 2 ATS ページリクエスト 2 ATS PRG 応答 2 cfg_msg_received_data[7:0] で転送されるパラメーターサイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: OBFF コードサイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ベンダー ID[7:0] サイクル 4: ベンダー ID[15:8] サイクル 5: ペイロードのビット [7:0] サイクル 6: ペイロードのビット [15:8] サイクル 7: ペイロードのビット [23:16] サイクル 8: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 3: ベンダー ID[7:0] サイクル 4: ベンダー ID[15:8] サイクル 5: ペイロードのビット [7:0] サイクル 6: ペイロードのビット [15:8] サイクル 7: ペイロードのビット [23:16] サイクル 8: ペイロードのビット [31:24] サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号サイクル 1: リクエスター ID バス番号サイクル 2: リクエスター ID デバイス/ ファンクション番号 図 に 受信メッセージインターフェイスでの Set_Slot_Power_Limit メッセージ例を示すタイミング図を示します このメッセージには 関連する 1 Dword ペイロードが含まれています このメッセージでは 連続する 6 サイクル間でパラメーターが送信されます 各サイクルで cfg_msg_received_data バスに次の情報が現れます サイクル 1: リクエスター ID のバス番号 サイクル 2: リクエスター ID のデバイス番号 / ファンクション番号 サイクル 3: ペイロード Dword のビット [7:0] サイクル 4: ペイロード Dword のビット [15:8] サイクル 5: ペイロード Dword のビット [23:16] サイクル 6: ペイロード Dword のビット [31:24] UltraScale+ Device Block for PCIe v

235 X-Ref Target - Figure user_clk cfg_msg_received cfg_msg_received_type[4:0] 0xF cfg_msg_received_data[7:0] Bus Dev/Fn PL[7:0] PL[15:8] PL[23:16] PL[31:24] 図 3-105: [Receive Message Interface] X12344 統合ブロックは cfg_msg_received 出力の有効なパルス間に 1 サイクル以上のギャップを挿入します 受信メッセージインターフェイスを介して送信されるメッセージ表示にはバックプレッシャーを適用するメカニズムがありません このインターフェイスを使用する場合 ユーザーロジックは常にメッセージ表示を受信する準備が整っている必要があります コンフィギュレーションマネージメントインターフェイス コンフィギュレーションレジスタで使用されるポートについては 44 ページの表 2-24 で説明しています ルートポートは コンフィギュレーション空間を構築するためにコンフィギュレーションポートを使用する必要があります エンドポイントもコンフィギュレーションポートを使用して 読み出し / 書き込みを実行できます ただし システムに悪影響を及ぼす原因を回避するよう注意が必要です ユーザーは バイトアドレスではなく Dword アドレスとしてアドレスを提供する必要があります ヒント : バイトアドレスを 4 で割ると レジスタ用の Dword アドレスを算出できます 例 : PCI コンフィギュレーション空間ヘッダーのコマンド / ステータスレジスタ : Dword アドレスは 01h BAR0: 注記 : バイトアドレスは 04h Dword アドレスは 04h 注記 : バイトアドレスは 10h コンフィギュレーション空間のレジスタ値を読み出すため ユーザーアプリケーションは cfg_mgmt_addr[9:0] にレジスタ Dword アドレスを駆動します cfg_mgmt_function_number[7:0] では そのコンフィギュレーションレジスタに関連する PCI ファンクションを選択します コアは cfg_mgmt_read_data[31:0] でアドレス指定したレジスタのコンテンツを駆動します cfg_mgmt_read_data[31:0] の値は cfg_mgmt_read_write_done のアサート信号で受信されたことを確認できます 図 に コンフィギュレーション空間の読み出し動作の信号を例示します UltraScale+ Device Block for PCIe v

236 X-Ref Target - Figure X14333 図 3-106: cfg_mgmt_read_type0_type1 コンフィギュレーション空間のレジスタに書き込みを実行するため ユーザーロジックはアドレスを cfg_mgmt_addr[9:0] で ファンクション番号を cfg_mgmt_function_number[7:0] で 書き込みデータを cfg_mgmt_write_data で バイトイネーブルを cfg_mgmt_byte_enable [3:0] で指定し cfg_mgmt_write 信号をアサートします それに対応して 書き込み動作が完了すると コアが cfg_mgmt_read_write_done 信号をアサートします ( 数サイクル必要 ) ユーザーロジックは cfg_mgmt_read_write_done がアサートされるまで cfg_mgmt_addr cfg_mgmt_function_number cfg_mgmt_write_data cfg_mgmt_byte_enable および cfg_mgmt_write を安定して供給する必要があります また コアが cfg_mgmt_read_write_done 信号をアサートした次のサイクルでユーザーロジックは cfg_mgmt_write をディアサートする必要があります X-Ref Target - Figure 図 3-107: cfg_mgmt_write_type0 コアがルートポートモードでコンフィギュレーションされている場合 タイプ 1 の PCI コンフィギュレーションレジスタへの書き込み動作中に cfg_mgmt_debug_access 入力信号をアサートすると コンフィギュレーションレジスタ特定の読み出し専用フィールドへの書き込みを強制します UltraScale+ Device Block for PCIe v

237 X-Ref Target - Figure 図 3-108: cfg_mgmt_debug_access リンクトレーニング : 2 レーン 4 レーン 8 レーン および 16 レーンコンポーネント 2 レーン 4 レーン 8 レーンのコアは PCI Express Base Specification [ 参照 2] で規定されている最大レーン幅未満で動作可能です 次のサブセクションで定義されているように 指定されている最大レーン幅未満でコアが動作するケースは 2 つあります リンクパートナーが少ないレーン数をサポートする場合 2 レーンコアが 1 レーンのみをインプリメントするデバイスに接続されている場合 このコアはレーン 0 を使用して 1 レーンデバイスとしてリンクを確立して動作します 4 レーンコアが 1 レーンのみをインプリメントするデバイスに接続されている場合 図 に示すようにこのコアはレーン 0 を使用して 1 レーンデバイスとしてリンクを確立して動作します 同様に 4 レーンコアが 2 レーンデバイスに接続されている場合 このコアはレーン 0 および 1 を使用して 2 レーンデバイスとしてリンクを確立して動作します 8 レーンコアが 4 レーンのみをインプリメントするデバイスに接続されている場合 このコアはレーン 0 から 3 を使用して 4 レーンデバイスとしてリンクを確立して動作します また 接続されているデバイスが 1 または 2 レーンのみをインプリメントする場合 この 8 レーンコアは 1 レーンまたは 2 レーンデバイスとしてリンクを確立して動作します UltraScale+ Device Block for PCIe v

238 X-Ref Target - Figure Upstream Device Upstream Device 4-lane Downstream Port Lane 0 Lane 1 Lane 2 Lane 3 1-lane Downstream Port Lane 0 Lane 1 Lane 2 Lane 3 Lane 0 Lane 1 Lane 2 Lane 3 Lane 0 Lane 1 Lane 2 Lane 3 4-lane Integrated Block 4-lane Integrated Block X12470 図 3-109: 4 レーンエンドポイントブロックの動作 (4 レーンから 1 レーン ) レーンにエラーが発生した場合 コアおよびリンクパートナーデバイスでサポートされている最大レーン幅にリンクトレーニングを行った後にリンクにエラーが発生すると コアは回復を試み 可能であれば小さいレーン幅でリンクトレーニングを実行します レーン 0 にエラーが発生した場合 リンクは回復不可能となり失われます レーン 1 から 7 のいずれか またはすべてにエラーが発生した場合 リンクは回復モードに遷移し まだ動作しているレーンを使用して回復可能な最大レーンを回復しようとします たとえば 8 レーンコアを使用する場合 レーン 1 が損失すると回復措置が取られレーン 0 で 1 レーン動作になりますが レーン 6 が損失するとレーン 0 から 3 で 4 レーン動作になります 回復措置後 エラーの発生したレーンが再び動作可能な状態になっても コアは大きいリンク幅へと回復措置を取ろうとはしません 値の大きいほうのリンク幅へ回復措置が取られるのは リンクがダウンし最初からリンクトレーニングを行う場合のみです user_clk クロック出力は IP カタログで設定された固定周波数になります リンクの回復またはリンクトレーニングのダウンが発生しても user_clk の周波数は変更されません UltraScale+ Device Block for PCIe v

239 レーン反転 統合ブロックは 限定的なレーン反転機能をサポートし リンクパートナーに対して柔軟なボードデザインを提供します リンクパートナーは反転されたレーン番号でボードをレイアウトするよう選択でき 統合ブロックはリンクトレインを継続し 通常どおりに動作します レーン反転をサポートするコンフィギュレーションは 16x x8 および x4 です ( ダウンシフトモードを除く ) ダウンシフトとは 各リンクパートナーがそれぞれ異なるリンク幅機能を持つ場合に発生するリンク幅交渉プロセスを指します リンク幅交渉の結果 リンクパートナーはレーン幅のうち値の小さいほうに交渉を成立させます 表 3-23 には ダウンシフトモードを含むさまざまな組み合わせ およびレーン反転サポートの有無がまとめられています 表 3-23: レーン反転サポート 注記 : 統合ブロックの可能なレーン幅 交渉されるレーン幅 レーン番号のマッピング ( エンドポイントリンクパートナー ) レーン反転サポートエンドポイントリンクパートナー x16 x16 レーン 0... レーン 15 レーン 15: レーン 0 あり x16 x8 レーン 0... レーン 7 レーン 7: レーン 0 なし x16 x4 レーン 0... レーン 3 レーン 3: レーン 0 なし x16 x2 レーン 0... レーン 1 レーン 1: レーン 0 なし x8 x8 レーン 0... レーン 7 レーン 7... レーン 0 あり x8 x4 レーン 0... レーン 3 レーン 7... レーン 4 なし (1) x8 x2 レーン 0... レーン 3 レーン 7... レーン 6 なし (1) x4 x4 レーン 0... レーン 3 レーン 3... レーン 0 あり x4 x2 レーン 0... レーン 1 レーン 3... レーン 2 なし (1) x2 x2 レーン 0... レーン 1 レーン 1... レーン 0 あり x2 x1 レーン 0... レーン 1 レーン 1 なし (1) 1. レーンがボードレイアウトで反転され ダウンシフトアダプターカードがエンドポイントとリンクパートナーの間に挿入されている場合 リンクパートナーのレーン 0 は接続されないままとなり ( この表のレーンマッピングを参照 ) リンクは確立されません UltraScale+ Device Block for PCIe v

240 第 4 章 デザインフローの手順 この章では コアのカスタマイズと生成 制約 およびシミュレーション / 合成 / インプリメンテーションの手順について説明します 一般的な Vivado デザインフローおよび IP インテグレーターの詳細は 次の Vivado Design Suite ユーザーガイドを参照してください Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 16] Vivado Design Suite ユーザーガイド : IP を使用した設計 (UG896) [ 参照 15] Vivado Design Suite ユーザーガイド : 入門 (UG910) [ 参照 17] Vivado Design Suite ユーザーガイド : ロジックシミュレーション (UG900) [ 参照 19] コアのカスタマイズおよび生成 ここでは ザイリンクスツールを使用し Vivado Design Suite でコアをカスタマイズおよび生成する方法について説明します 重要 : Vivado IP インテグレーターでコアをカスタマイズおよび生成する場合は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 16] を参照してください IP インテグレーターは デザインの検証または生成時に一部のコンフィギュレーション値を自動的に計算する場合があります 値が変わるかどうかを確認するには この章のパラメーターの説明を参照してください パラメーター値を確認するには Tcl コンソールから validate_bd_design コマンドを実行してください コアはユーザーデザインに合わせてカスタマイズできます それには IP コアに関連する各種パラメーターの値を次の手順に従って指定します 1. Vivado IP カタログから IP を選択します 2. 選択した IP をダブルクリックするか ツールバーまたは右クリックメニューから [Customize IP] コマンドをク リックします 詳細は Vivado Design Suite ユーザーガイド :IP を使用した設計 (UG896) [ 参照 15] および Vivado Design Suite ユーザーガイド : 入門 (UG910) [ 参照 17] 注記 : この章の図には Vivado 統合設計環境 (IDE) のスクリーンショットが使用されていますが 現在のバージョンとはレイアウトが異なる場合があります UltraScale+ Device Integrated Block for PCIe コア用の [Customize IP] ダイアログボックスには 2 つのモード ( Basic モードのパラメーター Advanced モードのパラメーター ) があります モード選択には [Customize IP] ダイアログボックスの最初のページにある [Mode] ドロップダウンリストを使用します 以降のセクションでは 各モードで利用可能なパラメーターについて説明します UltraScale+ Device Block for PCIe v

241 第 4 章 : デザインフローの手順 Basic モードのパラメーター このセクションは Basic モードのパラメーターについて説明します [Basic] タブ 図 4-1 に コアの基本パラメーターを定義するために使用する最初のカスタマイズページを示します X-Ref Target - Figure 4-1 図 4-1: [Basic] タブ [Component Name] このコアに対して生成される出力ファイルの基本名です 最初の 1 文字は必ず小文字アルファベットとし 2 文字目以降は a ~ z 0 ~ 9 アンダースコア (_) を自由に組み合わせることができます [Mode] コアのコンフィギュレーションモードとして [Basic] または [Advanced] のいずれかを選択できます [Device / Port Type] PCI Express のロジックデバイスタイプを指定します UltraScale+ Device Block for PCIe v

242 第 4 章 : デザインフローの手順 [PCIe Block Location] ロケーション別の制約ファイルおよびピン配置を生成するよう 対象となる統合ブロックの中から選択します この選択は デフォルトのサンプルデザインスクリプトで使用されます [Number of Lanes] コアには初期レーン幅を選択する必要があります 表 4-1 に 選択可能なレーン幅とそれに対応したコアを定義しています レーン幅の広いコアがそれよりも狭いレーン幅のデバイスに接続されている場合は 狭いほうのレーン幅にトレーニングダウンすることができます これらの詳細は リンクトレーニング : 2 レーン 4 レーン 8 レーン および 16 レーンコンポーネント を参照してください 表 4-1: レーン幅および生成されるコア レーン幅 生成されるコア レーン UltraScale+ Device Integrated Block for PCI Express コア [Maximum Link Speed] デバイスでサポートされている最大リンクスピードを選択できます 表 4-2 では デバイスでサポートされているレーン幅およびリンクスピードを定義しています 高速なリンクスピードのコアがそれより低いリンクスピードのデバイスに接続されている場合 低いほうのリンクスピードにトレーニングすることができます 表 4-2: レーン幅およびリンクスピード レーン幅 x16 リンクスピード 8 Gb/s AXI-ST インターフェイス幅 表 4-3 のように インターフェイス幅を選択できます [Customize IP] ダイアログボックスに設定されているデフォルトのインターフェイス幅は 最も狭いインターフェイス幅となります 表 4-3: レーン幅 リンクスピード およびインターフェイス幅 [AXI-ST Interface Frequency] 周波数は 250 MHz に設定されています [Enable Client Tag] レーン幅 リンクスピード (Gb/s) インターフェイス幅 (Bits) x クライアントタグの利用を可能にします [AXI-ST Alignment Mode] ペイロードが現れる場合 各データパスのペイロードの最初のバイトに揃えるために 2 つのオプションがあります CQ/CC インターフェイスまたは RQ/RC インターフェイスを選択するオプションが提供されています 詳細は 107 ページの データアライメントオプション を参照してください [AXI-ST Frame Straddle] の有効化 インターフェイス幅が 256 ビットの場合 コアはリクエスターコンプリーションインターフェイス上でパケットをストラドルするオプションを利用できます 詳細は 169 ページの 256 ビットインターフェイスのストラドルオプション を参照してください UltraScale+ Device Block for PCIe v

243 第 4 章 : デザインフローの手順 X-Ref Target - Figure 4-2 [AXI-ST CQ/CC Frame Straddle] および [AXI-ST RQ/RC Frame Straddle] [AXI-ST Interface Width] で 512 ビットを選択している場合 CQ CC RQ および RC AXI-ST インターフェイスに対して AXI-ST フレームストラドルがサポートされます AXI-ST フレームのストラドルは CQ と CC インターフェイスの組み合わせ および RQ と RC インターフェイスの組み合わせで選択できます [AXI-ST 512-bit RC 4TLP Straddle] [AXI-ST 512-bit RC 4TLP Straddle] をオンにした場合 4 TLP ストラドルモードとなり そうでない場合は 2 TLP ストラドルモードとなります 以前の TLP がバイトレーン 31 またはそれよりも前に終了しているときに新しい TLP をバイトレーン 32 で開始できます 詳細は 512 ビットコンプリーターインターフェイス を参照してください [Reference Clock Frequency] sys_clk に供給される基準クロックの周波数を選択します コアのクロック供給の詳細は クロッキング を参照してください [Enable External PIPE Interface] このオプションをオンにした場合 外部のサードパーティバスファンクショナルモデル (BFM) を PCIe 統合ブロックの PIPE インターフェイスへ接続できます 詳細は エンドポイントコンフィギュレーションで Gen2 および Gen3 コアを使用するリファレンスデザインについて説明した XAPP1184 [ 参照 24] を参照してください UltraScale デバイスコアの外部 PIPE インターフェイスポートをサードパーティ BFM に接続する場合は これらのデザインが参考になります [Additional Transceiver Control and Status Ports] 図 4-2: [Basic] タブ - ストラドルオプション これらのポートは トランシーバーに関連する問題および PCIe に関連する信号のデバッグに使用します 使用する GT のユーザーガイドに従って駆動してください [Add Debug Options] タグの [Enable In System IBERT] および [Enable JTAG Debugger] をオンにすると これらの 2 つのオプションに関連する追加デバッグポートがインターフェイスに含まれます 詳細は 付録 C の トランシーバー制御およびステータスポート を参照してください UltraScale+ Device Block for PCIe v

244 第 4 章 : デザインフローの手順 [System reset polarity] sys_rst の極性 (ACTIVE_HIGH または ACTIVE_LOW) を設定します [Capabilities] タブこのセクションは [Capabilities] の設定 ( 図 4-3) について説明します X-Ref Target - Figure 4-3 [Physical Functions] 図 4-3: [Capabilities] タブ Physical Function の数を選択できます サポートされる Pysical Function の数は 4 つです [PFx Max Payload Size] このフィールドは デバイスまたはファンクションが TLP 用にサポートできる最大ペイロードサイズを示します デバイス機能レジスタ (Device Capabilities Register) を介してシステムに伝達される値です UltraScale+ Device Block for PCIe v

245 第 4 章 : デザインフローの手順 [Extended Tag Field] リクエスターとしてサポートされているタグフィールドの最大サイズを示します 使用可能なオプションは次のとおりです オンにした場合は 6 ビットのタグフィールド (64 タグ ) がサポートされる オンにしていない場合は 5 ビットのタグフィールド (32 タグ ) がサポートされる [Enable Slot Clock Configuration] リンクステータスレジスタの Slot Clock Configuration ビットを有効にします このオプションをオンにした場合 リンクに同期クロックが供給されます クロッキングオプションの詳細は クロッキング を参照してください [PF IDs] タブ このセクションは I D の設定 ( 図 4-4) について説明します X-Ref Target - Figure 4-4 図 4-4: [PF IDs] タブ [Enable PCIe-ID Interface] このオプションをオンにすると PCIe ID ポート cfg_vend_id cfg_subsys_vend_id cfg_dev_id_pf* cfg_rev_id_pf* および cfg_subsys_id_pf* が ユーザーロジックで選択および駆動可能な PFx の数に応じて コア最上位の境界に表示されます オフの場合 これらのポートは最上位に表示されず カスタマイズ時に設定された数値で駆動されます PF0 ID の初期値 [Vendor ID]: デバイスまたはアプリケーションの製造者 ID です 各 ID の重複を避けるため PCI Special Interest Group によって有効な ID が割り当てられています デフォルト値 10EEh はザイリンクスのベンダー ID です ここにベンダー ID を入力します FFFFh は予約されています UltraScale+ Device Block for PCIe v

246 第 4 章 : デザインフローの手順 [Device ID]: アプリケーションの ID です デフォルト値は選択されているコンフィギュレーションにより異なりますが 70<link speed><link width>h となります このフィールドには任意の値を入力できます アプリケーションに合わせて変更してください [Revision ID]: デバイスまたはアプリケーションのリビジョンを指し デバイス ID に付随するものです デフォルト値は 00h です アプリケーションに合った値を入力してください [Subsystem Vendor ID]: デバイスまたはアプリケーションの製造者をさらに細分化させるための ID です ここにサブシステムベンダー ID を入力します デフォル値は 10EEh です 通常 この値はベンダー ID と同じです この値を 0000h に設定すると準拠テスト問題が発生します [Subsystem ID]: デバイスまたはアプリケーションの製造者をさらに細分化させるための ID です この値は通常デバイス ID と同じです デフォルト値は選択されているレーン幅およびリンクスピードにより異なります この値を 0000h に設定すると準拠テスト問題が発生します [Class Code] クラスコードは デバイスの一般的な機能を識別するもので 3 つのバイトサイズフィールドに分かれています [Base Class]: デバイスにより実行される機能のタイプを広義に識別します [Sub-Class]: デバイス機能をさらに細かく識別します [Interface]: デバイスに依存したソフトウェアがデバイスとインターフェイスできるようにするレジスタレベルのプログラミングインターフェイスを定義します クラスコードのエンコードについては PCI SIG ウェブサイトを参照してください [Use Classcode Lookup Assistant] 選択されているデバイスの一般機能に対して ベースクラス サブクラス およびインターフェイスの値を提供します この検索ツールは 選択されている機能に対し 3 つの値を表示するだけです デバイス設定に変換するには ユーザー自身が [Class Code] にこれらの値を入力する必要があります [PF BARs] タブ [PF BARs] タブ ( 図 4-5) では エンドポイントコンフィギュレーションのベースアドレスレジスタ空間を設定します 各 BAR (0 ~ 5) には Physical Function の BAR Aperture Size および Control の属性が指定されます UltraScale+ Device Block for PCIe v

247 第 4 章 : デザインフローの手順 X-Ref Target - Figure 4-5 BAR (Base Address Register) の概要 エンドポイントコンフィギュレーションのコアでは 最大 6 つの 32 ビット BAR または 3 つの 64 ビット BAR および拡張 ROM (read-only memory) BAR がサポートされます ルートポートコンフィギュレーションのコアでは 最大 2 つの 32 ビット BAR または 1 つの 64 ビット BAR および拡張 ROM (read-only memory) BAR がサポートされます BAR は次のいずれかのサイズに設定できます 32 ビットの BAR: アドレス空間は 128 バイトから 2 ギガバイトまでです メモリまたは I/O に使用します 64 ビットの BAR: アドレス空間は 128 バイトから 256 ギガバイトまでです メモリのみに使用します すべての BAR レジスタに次のオプションがあります 図 4-5: [PF BARs] タブ (PF0 および PF1 のみ表示 ) チェックボックス : BAR を有効にするにはチェックボックスをオンします BAR を無効にするにはこのチェックボックスをオフにします [Type]: BAR は I/O または Memory のいずれかにできます [I/O]: I/O BAR は 32 ビットのみです I/O BAR はプリフェッチ対応ではありません I/O BAR はレガシ PCI Express エンドポイントコアに対してのみ使用できます [Memory]: Memory BAR は 64 ビットまたは 32 ビットに設定でき プリフェッチ可能です BAR が 64 ビットに設定されている場合 拡張アドレス空間用に次の BAR が使用され その BAR にはアクセスできなくなります UltraScale+ Device Block for PCIe v

248 第 4 章 : デザインフローの手順 [Size]: 使用可能なサイズ範囲は PCIe デバイス / ポートタイプおよび BAR タイプの設定によって異なります 表 4-4 に BAR サイズの範囲を示します 表 4-4: デバイスコンフィギュレーション別の BAR サイズ範囲 PCIe デバイス / ポートタイプ BAR タイプ BAR サイズ範囲 PCI Express エンドポイント レガシ PCI Express エンドポイント 32 ビットメモリ 128 バイト (B) ~ 2 ギガバイト (GB) 64 ビットメモリ 128 B ~ 256 GB 32 ビットメモリ 128 B ~ 2 GB 64 ビットメモリ 128 B ~ 256 GB I/O 16 B ~ 2 GB [Prefetchable]: メモリ空間をプリフェッチ可能にするかどうかを設定します [Value]: 現在の選択内容に基づいて BAR に値が割り当てられます ベースアドレスレジスタの設定の管理については ベースアドレスレジスタの設定の管理 を参照してください [Expansion ROM Base Address Register] このオプションが選択されている場合 拡張 ROM がアクティベートされ 2 KB から 4 GB までの値を指定することができます PCI 3.0 Local Bus Specification [ 参照 2] によると 拡張 ROM BAR のサイズは 16 MB 以下に抑える必要があります 16 MB よりも大きなアドレス空間を選択すると コアが規格に準拠しなくなる可能性があります ベースアドレスレジスタの設定の管理 任意のベースアドレスレジスタに対して適切な値を入力することで [Memory] [I/O] [Type] および [Prefetchable] の設定を管理します [Memory] または [I/O] の設定値を確認すると そのアドレス空間がメモリまたは I/O として定義されていることがわかります ベースアドレスレジスタはそのアドレス空間にアクセスするコマンドのみに応答します 一般的には 4 KB 未満のメモリ空間は避けてください I/O 空間の最小値は 16 バイトであるため I/O 空間の使用は新しいデザインでは避けてください プリフェッチのオプションは メモリ空間をプリフェッチ可能にするかどうかを指定します 読み出しに影響がない場合 ( つまり RAM からの読み出しのように 読み出しによってデータが破損するなどの影響がない場合 ) メモリ空間はプリフェッチ可能です また 複数のバイト書き込み操作を 1 つのダブルワード書き込みにまとめることもできます PCIe ( レガシでないもの ) に対しコアをエンドポイントとしてコンフィギュレーションする場合 プリフェッチ可能ビットが設定されているすべての BAR (BAR5 を除く ) に対し 64 ビットアドレス指定がサポートされている必要があります プリフェッチ可能ビットが設定されていない BAR すべてに対して 32 ビットアドレス指定は可能です プリフェッチビットに関連した要件はレガシエンドポイントには適用されません BAR でサポートされている最小メモリアドレスは PCI Express エンドポイントの場合は 128 バイトで レガシ PCI Express エンドポイントの場合は 16 バイトです 未使用リソースの無効化 最良の結果を得るには 未使用のベースアドレスレジスタを無効にしてシステムリソースを節約します [Customize IP] ダイアログボックスで未使用 BAR のチェックボックスをオフにすると その BAR は無効になります UltraScale+ Device Block for PCIe v

249 第 4 章 : デザインフローの手順 [Legacy/MSI Cap] タブ このページでは 該当するすべての Physical Function および Virtual Function に対して [Legacy Interrupt Settings] および [MSI Capabilities] を設定できます このページは [Advanced] モード選択時に表示される [Capabilities] タブで [SRIOV Capability] がオンになっている場合は表示されません このページは [Basic] モードおよび [Advanced] モードの両方で ([SRIOV Capability] がオンになっていない場合 ) 表示されます X-Ref Target - Figure 4-6 図 4-6: [Legacy/MSI Cap] タブ [Legacy Interrupt Settings] [PF0/PF1/PF2/PF3 Interrupt PIN]: レガシ割り込みメッセージのマッピングを示します [None] は レガシ割り込みが使用されていないことを示します [MSI Capabilities] [Enable PF0/PF1/PF2/PF3 MSI Capability Structure]: MSI 機能構造体を有効にします 注記 : MSI または MSI-X を有効にしないことも可能ですが その場合 コアが規格に準拠しなくなる可能性があります PCI Express Base Specification [ 参照 2] では MSI または MSI-X のいずれかまたは両方が有効になることが条件として定義されています [Inbuilt] または [MSI-X Internal] が有効の場合 [MSI-X Internal] で一部の MSI インターフェイス信号が使用されるため MSI 機能はサポートされません [PF0/PF1/PF2/PF3 Multiple Message Capable]: ルートコンプレックスから要求する MSI ベクターの数を選択します [Enable MSI Per Vector Masking]: 有効になっている Physical Function すべての MSI のベクターごとのマスキング機能を有効にします UltraScale+ Device Block for PCIe v

250 第 4 章 : デザインフローの手順 注記 : このオプションは 各 Physical Function に対して有効に設定できません Advanced モードのパラメーター [Basic] タブの [Mode] で [Advanced] が選択されている場合 次のパラメーターが IP カタログのさまざまなページに表示されます [Basic] タブ Advanced モード用の [Basic] ページ ( 図 4-7) には いくつかの追加設定があります [Advanced] モードを選択した場合に [Basic] ページで指定できるパラメーターは次のとおりです X-Ref Target - Figure 4-7 図 4-7: [Basic] タブ [Advanced] モード UltraScale+ Device Block for PCIe v

251 第 4 章 : デザインフローの手順 コアクロック周波数 このパラメーターで コアのクロック周波数を選択できます Gen3 リンクスピード : スピードグレードおよび x8 リンク幅の場合 250 MHz または 500 MHz を選択できます -2L -2LV -1L -1LV スピードグレードおよび x8 リンク幅の場合 デフォルトで 250 MHz となっており変更できません x16 リンク幅の場合 デフォルトで 500 MHz となっており変更できません x1 x2 x4 リンク幅の場合 デフォルトで 250 MHz となっており変更できません Gen1 および Gen2 リンクスピード : x8 以外のリンク幅の場合 デフォルトで 250 MHz となっており変更できません x8 リンク幅の場合 デフォルトで 500 MHz となっており変更できません [Enable Parity] MSI-X を含む TX/RX インターフェイスのパリティを有効にします [PCIe DRP Ports] オンにすると PCIe DRP インターフェイスが有効になります [GT Channel DRP] オンにすると GT チャネル DRP インターフェイスが有効になります [Capabilities] タブ Advanced モード用の [Capabilities] 設定 ( 図 4-8) には Basic モードの設定にさらに 2 つのパラメーターが追加されています 詳細は次のとおりです UltraScale+ Device Block for PCIe v

252 第 4 章 : デザインフローの手順 X-Ref Target - Figure 4-8 [SRIOV Capabilities] 図 4-8: [Capabilities] タブ [Advanced] モード SRIOV (Single Root Port I/O Virtualization) 機能を有効にします 統合ブロックが拡張型の Single Root Port I/O Virtualization PCIe をインプリメントします このオプションがオンの場合 SRIOV が選択したすべての Physical Function に実装されます SRIOV 機能が有効の場合 MSI サポートが無効となり MSI-X サポートを使用できます ( 図 4-8) [Device Capabilities Registers 2] AtomicOps および TPH Completer をサポートするためのオプションを指定します 詳細は PCI Express Base Specification [ 参照 2] の第 7 章にある Device Capability Register 2 を参照してください これらの設定は 選択したすべての Physical Function に適用されます UltraScale+ Device Block for PCIe v

253 第 4 章 : デザインフローの手順 [SRIOV Config] タブ このセクションは Advanced モードでの SRIOV コンフィギュレーションのパラメーターについて説明します ( 図 4-9) X-Ref Target - Figure 4-9 図 4-9: [SRIOV Config] タブ [Cap Version] Physical Function 用の 4 ビットの SRIOV Capability バージョンを示します [Number of PFx VFs] Physical Function と関連する Virtual Function の数を示します 最大 252 の Virtual Function が 4 つの Physical Function すべてについて利用できます [PFx Dependency Link] Physical Function 用の SRIOV Functional Dependency Link を示します デバイスのプログラミングモデルには ファンクション間にベンダー指定の相互依存性を持たせることができます この Function Dependency Link フィールドを使用して これらの相互依存性を定義します UltraScale+ Device Block for PCIe v

254 第 4 章 : デザインフローの手順 [First VF Offset] Physical Function (PF) の最初の Virtual Function (VF) のオフセットを示します PF0 は常にオフセット 0 PF1 は常にオフセット 1 に存在します Gen3 Integrated Block for PCIe コアでは 6 つの Virtual Function を利用でき Function 番号は 64 ~ 69 の範囲になります PF0 を親とし PF に属する関係で VF が連続的にマッピングされます たとえば PF0 に 2 つの Virtual Function があり PF1 には 3 つの Virtual Function がある場合 次のようなマッピングとなります Virtual Function の最初のオフセットから Physical Function のオフセットを引くことで PFx_FIRST_VF_OFFSET が計算されます PFx_FIRST_VF_OFFSET = (PFx first VF offset - PFx offset) 上記の例では 次のオフセットが使用されます PF0_FIRST_VF_OFFSET = (64-0) = 64 PF1_FIRST_VF_OFFSET = (66-1) = 65 PF0 は常に 64 で PH0 には 1 つ以上の Virtual Function があることが前提となります PF1 の最初のオフセットは PF0 に接続されている VF 数のファンクションとなり 次のようなコード例で定義されます PF1_FIRST_VF_OFFSET = 63 + NUM_PF0_VFS VF デバイス ID Physical Function に関連するすべての Virtual Function 用の 16 ビット Device ID を示します [SRIOV Supported Page Size] Physical Function でサポートされるページサイズを示します 32 レジスタのビット n がセットされている場合 この Physical Function は 2n+12 のページサイズをサポートします [SRIVO BARs] タブ SRIOV ベースアドレスレジスタ (BARs) では エンドポイントコンフィギュレーション用のベースアドレスレジスタ空間を設定します 各 BAR (0 ~ 5) には SRIOV BAR のアパーチャサイズと SRIOV の制御属性が指定されます UltraScale+ Device Block for PCIe v

255 第 4 章 : デザインフローの手順 X-Ref Target - Figure 4-10 図 4-10: [SRIOV BAR] タブ [Advanced] モード 表 4-5: Virtual Function のマッピング例 Physical Function Virtual Function ファンクション番号の範囲 PF0 VF0 64 PF0 VF1 65 PF1 VF0 66 PF1 VF1 67 PF1 VF1 68 SRIOV BAR ( ベースアドレスレジスタ ) の概要 エンドポイントコンフィギュレーションのコアでは 最大 6 つの 32 ビット BAR または 3 つの 64 ビット BAR がサポートされます ルートポートコンフィギュレーションのコアでは 最大 2 つの 32 ビット BAR または 1 つの 64 ビット BAR がサポートされます SRIOV BAR は次のいずれかのサイズに設定できます 32 ビットの BAR: アドレス空間は 16 バイトから 2 ギガバイトまでです メモリまたは I/O に使用します 64 ビットの BAR: アドレス空間は 128 バイトから 256 GB までです メモリのみに使用します すべての SRIOV BAR レジスタに次のオプションがあります UltraScale+ Device Block for PCIe v

256 第 4 章 : デザインフローの手順 チェックボックス : BAR を有効にするにはチェックボックスをオンします BAR を無効にするにはこのチェックボックスをオフにします [Type]: SRIOV BAR は I/O または Memory のいずれかにできます [I/O]: I/O BAR は 32 ビットのみです I/O BAR はプリフェッチ対応ではありません I/O BAR はレガシ PCI Express エンドポイントコアに対してのみ使用できます [Memory]: Memory BAR は 64 ビットまたは 32 ビットに設定でき プリフェッチ可能です BAR が 64 ビットに設定されている場合 拡張アドレス空間用に次の BAR が使用され その BAR にはアクセスできなくなります [Size]: 使用可能なサイズ範囲は [PCIe Device/Port Type] および [Type of BAR] の設定によって異なります 表 4-6 に BAR サイズの範囲を示します 表 4-6: デバイスコンフィギュレーション別の SRIOV BAR サイズ範囲 PCIe デバイス / ポートタイプ BAR タイプ BAR サイズ範囲 PCI Express エンドポイント レガシ PCI Express エンドポイント 32 ビットメモリ 128 B ~ 2 GB 64 ビットメモリ 128 B ~ 256 GB 32 ビットメモリ 16 B ~ 2 GB 64 ビットメモリ 16 B ~ 256 GB I/O 16 B ~ 2 GB [Prefetchable]: メモリ空間をプリフェッチ可能にするかどうかを設定します [Value]: 現在の選択内容に基づいて BAR に値が割り当てられます SRIOV ベースアドレスレジスタの設定の管理については ベースアドレスレジスタの設定の管理 を参照してください SRIOV ベースアドレスレジスタの設定の管理 [Customize IP] ダイアログボックスで任意のベースアドレスレジスタに対して適切な値を入力することで [Memory] [I/O] [Type] および [Prefetchable] の設定を管理します [Memory] または [I/O] の設定値を確認すると そのアドレス空間がメモリまたは I/O として定義されていることがわかります ベースアドレスレジスタはそのアドレス空間にアクセスするコマンドのみに応答します 一般的には 4KB 未満のメモリ空間は避けてください I/O 空間の最小値は 16 バイトであるため I/O 空間の使用は新しいデザインでは避けてください 読み出しに影響がない場合 ( つまり RAM からの読み出しのように 読み出しによってデータが破損するなどの影響がない場合 ) メモリ空間はプリフェッチ可能です また 複数のバイト書き込み操作を 1 つのダブルワード書き込みにまとめることもできます PCIe ( レガシでないもの ) に対しコアをエンドポイントとしてコンフィギュレーションする場合 プリフェッチ可能ビットが設定されているすべての SRIOV BAR (BAR5 を除く ) に対し 64 ビットアドレス指定がサポートされている必要があります プリフェッチ可能ビットが設定されていない SRIOV BAR すべてに対して 32 ビットアドレス指定は可能です プリフェッチビットに関連した要件はレガシエンドポイントには適用されません BAR でサポートされている最小メモリアドレスは PCI Express エンドポイントの場合は 128 バイトで レガシ PCI Express エンドポイントの場合は 16 バイトです 未使用リソースの無効化 最良の結果を得るには 未使用のベースアドレスレジスタを無効にしてシステムリソースを節約します [Customize IP] ダイアログボックスで未使用 BAR のチェックボックスをオフにすると その BAR は無効になります UltraScale+ Device Block for PCIe v

257 第 4 章 : デザインフローの手順 [MSI-X Capabilities] タブ [MSI-X Capabilities] のパラメーター ( 図 4-11) は Advanced モードでのみ利用できます MSI-X 機能を有効にするには [Advanced] モードを選択し [Capabilities] ページで必要なオプションを選択してください 図 4-8 に示すように 4 つのオプションがあり ここから選択します 1. [MSI-X External]: このモードでは ロジック MSI-X テーブルおよび PCIe コアの外部にある PBA バッファーを駆動する MSI-X 外部インターフェイスを実装する必要があります MSI-X BAR を設定できます 2. [MSI-X Internal]: このモードでは ロジックのみを駆動する MSI-X 内部インターフェイスを実装する必要があります MSI-X テーブルおよび PBA バッファーは PCIe コア内に組み込まれます MSI-X BAR を設定できます 3. [MSI-X AXI4-Stream]: このモードでは AXI4-Stream インターフェイスによる MSI-X 割り込みの駆動が求められます MSI-X BAR を設定できます 4. [None]: MSI-X はサポートされません SRIOV 機能が選択されていても同じ MSI-X オプションが適用可能です X-Ref Target - Figure 4-11 [Enable MSIx Capability Structure] MSI-X Capability Structure があることを示します 図 4-11: [MSI-X Cap] タブ [Advanced] モード 注記 : Capability Structure ( 機能構造体 ) では 少なくとも 1 つのメモリ BAR を設定する必要があります ユーザーは アプリケーションの MSI-X テーブルおよびペンディングビットアレイの設定を管理する必要があります UltraScale+ Device Block for PCIe v

258 第 4 章 : デザインフローの手順 [MSIx Table Settings]: MSI-X テーブルの構造を定義します [Table Size]: MSI-X テーブルのサイズを指定します [Table Offset]: MSI-X テーブルのベースを指し示す ベースアドレスレジスタからのオフセット値を指定します [BAR Indicator]: MSI-X テーブルのファンクションをメモリ空間へマップするために使用されるコンフィギュレーション空間のベースアドレスレジスタを示します 64 ビットのベースアドレスレジスタの場合 これは下位 DWORD を指します [MSIx Pending Bit Array (PBA) Settings] MSI-X PBA ( ペンディングビットアレイ ) の構造を定義します [PBA Offset]: MSI-X PBA のベースを指し示す ベースアドレスレジスタからのオフセット値を指定します [PBA BAR Indicator]: MSI-X PBA のファンクションをメモリ空間へマップするために使用されるコンフィギュレーション空間のベースアドレスレジスタを示します [GT Settings] タブ このページでは 通常変更できない特定トランシーバーの設定をカスタマイズできます X-Ref Target - Figure 4-12 [Form Factor Driven Insertion Loss Adjustment] ナイキスト周波数でのトランスミッターからレシーバーの挿入ロスをフォームファクターの選択に従って示します 次の 3 つのオプションがあります 1. [Chip-to-Chip]: 値は 5dB です 2. [Add-in Card]: 値はデフォルトで 15 db です 3. [Backplane]: 値は 20 db です 図 4-12: [GT Settings] タブ これらの挿入ロス値は GT Wizard サブコアに適用されます UltraScale+ Device Block for PCIe v

259 第 4 章 : デザインフローの手順 [Shared Logic] 図 4-13 に [Shared Logic] タブを示します X-Ref Target - Figure 4-13 現在このコアは GT Wizard ロジックのみを共有しています [include GT Wizard in example design] をオンにすると GT Wizard IP がサンプルデザイン領域に取り込まれます さらにテストする目的でリコンフィギュレーションもできます GT Wizard IP は階層 IP として PCIe IP コアにデフォルトで含まれており リカスタマイズできません 信号の説明およびその他の詳細は UltraScale アーキテクチャ GTH トランシーバーユーザーガイド (UG576) [ 参照 11] または UltraScale アーキテクチャ GTY トランシーバーユーザーガイド (UG578) [ 参照 12] を参照してください [Add.Debug Options] 図 4-13: [Shared Logic] デバッグ目的で 追加のデバッグ箇所を選択できます 次にパラメーターを示します ポートレベルの説明は 付録 C の ハードウェアデバッグ を参照してください [Enable In System] このオプションは 目的のリンクスピードにおけるシリアルリンクのアイダイアグラムをチェックおよび確認するために使用します これはアーリーアクセス機能で 現在 Gen3 リンクスピードの選択に対してのみ有効です このオプションを有効にすると ポートに関連する IBERT がトランシーバー制御およびステータスポートインターフェイスに組み込まれます これは自動選択です In-System IBERT の詳細は In-System IBERT LogiCORE IP 製品ガイド (PG246) [ 参照 22] を参照してください アイダイアグラムのチェック手順を次に示します 1. 該当するザイリンクスリファレンスボードを選択します 2. 次の設定でコアをコンフィギュレーションします リンク幅で [Gen3 link speed] を選択します 注記 : Gen1/2 リンクスピードは 今後のリリースで有効になる予定です [Add. Debug Options] ページで [Enable In System IBERT] をオンにします 3. サンプルデザインを開きます UltraScale+ Device Block for PCIe v

260 第 4 章 : デザインフローの手順 4..bit ファイルおよび.ltx ファイルを生成します 5. FPGA をプログラムする前に Tcl コンソールで次のコマンドを source コマンドで実行します - set_param xicom.enable_isi_pcie_fix 1 6. ハードウェアマネージャー (HM) を開き 生成された.bit ファイルおよび.ltx ファイルを使用して FPGA をコン フィギュレーションします 7. エニュメレーションプロセスをリスキャンして再度実行するために マシンを再起動します 8. HM の下部にある [Serial I/O Links] タブを選択して スキャンウィンドウ用にリンクを作成します 9. [Serial I/O Links] タブのリンクを 1 つ選択し 右クリックしてスキャンリンクオプションを選択します 10. より優れた結果を得るには [Horizontal and Vertical Increment] にデフォルト値ではなく 2 を設定して試してくだ さい 11. アイスキャンを選択すると アイダイアグラムが描画されます 重要 : [Enable In System] は [GT Settings] タブの [Falling Edge Receiver Detect] オプションと併用できません [Enable Descrambler for Gen3 Mode] このオプションは PCIe コア内部にある暗号化されたデスクランブラーモジュールを統合します これは Gen3 リンクスピードモードの PCIe 統合ブロックから / への PIPE データを逆スクランブルするために使用します これにより ボードでのデバッグを目的としたハードウェア専用サポートが提供されます [Enable JTAG Debugger] この機能を使用すると 次の理由でデバッグの負担が軽減されます ユーザーデザインに含む必要がある PCIe デバッグオプションをサンプルデザインに統合します ( オプション ) 使用される外部クロックを推測します LTSSM ステートの遷移 : リンクアップからのすべての LTSSM ステート遷移を示します PHY リセット FSM の遷移 : PHY リセット FSM (PCIe ソリューション IP で使用される内部ステートマシン ) を示します レシーバー検出 : 問題なくレシーバー検出が完了したすべてのレーンを示します 手順は次のとおりです 1. 新しい Vivado を開き ボードに接続します 2. [hw_axi_1] が表示されるはずです X-Ref Target - Figure Vivado Tcl コンソールに source test_rd.tcl と入力します 4. 後処理のため 次をダブルクリックします draw_ltssm.tcl (Windows) または wish draw_ltssm.tcl draw_reset.tcl (Windows) または wish draw_reset.tcl draw_rxdet.tcl (Windows) または wish draw_rxdet.tcl UltraScale+ Device Block for PCIe v

261 第 4 章 : デザインフローの手順 これにより LTSSM ステート遷移が図示されます 出力の生成 詳細は Vivado Design Suite ユーザーガイド : IP を使用した設計 (UG896) [ 参照 15] を参照してください コアへの制約 ここでは Vivado Design Suite でコアに制約を指定する方法について説明します 必須の制約 UltraScale+ Device Integrated Block for PCIe ソリューションでは PCI Express 用の特定性能要件を満たすために タイミングおよびその他の物理的なインプリメンテーション制約を指定する必要があります これらの制約は エンドポイントおよびルートポートソリューションで ザイリンクスデザイン制約 (XDC) ファイルを用いて適用されます 生成される XDC ファイルにあるピン配置および階層名は 配布されているサンプルデザインのものと一致しています 重要 : サンプルデザインの最上位ファイルを使用しない場合 基準クロック用に IBUFDS_GTE3 インスタンスを sys_rst 用に IBUF インスタンスを そしてこれらに関連するタイミング制約もローカルデザインの最上位にコピーします 一貫したインプリメンテーション結果を得るには ザイリンクスツールでデザインを実行するときに 変更されていない元の制約を含んだ XDC ファイルを使用する必要があります XDC または特定の制約の定義および使用方法についての詳細は Vivado Design Suite ユーザーガイド : 制約の使用 (UG903) [ 参照 18] を参照してください 統合ブロックソリューションで提供されている制約は ハードウェア上でテスト済みで 一貫した結果を提供します 制約は変更可能ですが 各制約をよく理解した上で変更してください また 提供されている制約を規定から逸脱した形で使用したデザインに対してはサポートを提供しておりません デバイス パッケージ スピードグレードの選択 XDC のデバイス選択セクションには ターゲットにするパーツ パッケージ スピードグレードが記述されており この情報がインプリメンテーションツールに渡されます 重要 : UltraScale+ Device Integrated Block for PCIe コアは特定のパーツとパッケージの組み合わせに対して設計されているため このセクションは変更しないでください このセクションには常にパーツを選択する行が含まれていますが パーツまたはパッケージ別のオプションも含まれている場合があります たとえば 次のようになります CONFIG PART = XCKU040-ffva e-es1 クロック周波数 クロック要件の詳細は 第 3 章 コアを使用するデザイン を参照してください クロック管理 クロック要件の詳細は 第 3 章 コアを使用するデザイン を参照してください UltraScale+ Device Block for PCIe v

262 第 4 章 : デザインフローの手順 クロック配置 クロック要件の詳細は 第 3 章 コアを使用するデザイン を参照してください バンク設定 このセクションは この IP コアには適用されません トランシーバーの配置 このセクションは この IP コアには適用されません I/O 規格と配置 このセクションは この IP コアには適用されません 統合ブロックコアの再配置 IP コアレベルの制約により ブロック RAM トランシーバー および PCIe ブロックが推奨ロケーションにデフォルトでロックされています ブロックを再配置するには XDC 制約ファイルでこれらブロックの制約をオーバーライドする必要があります これを実行するには 次の手順に従います 1. コアレベルの XDC 制約ファイルから上書きする必要があるブロックの制約をコピーします 2. それらの制約をユーザー XDC 制約ファイルに置きます 3. 制約を新しいロケーションでアップデートします ユーザー XDC 制約ファイルは一般にデザインの最上位にスコープされるため 制約によって参照されるセルがコピーおよびペースト後も変わらず有効であることを確認する必要があります 通常はモジュールパスを完全な階層名でアップデートする必要があります 注記 : スワップしなければならないロケーションが存在する場合 ( つまり 別のモジュールが新しいロケーションを使用している ) 次の 2 つの方法でこれを実行します 利用可能な一時的なロケーションがある場合は 最初のモジュールを新しい一時的なロケーションに移動します その後 2 つ目のモジュールを最初のモジュールが使用していたロケーションに移動します 次に 最初のモジュールを 2 つ目のモジュールのロケーションに移動します 上記の手順は XDC 制約ファイルで実行できます 一時的なロケーションとして利用可能なほかのロケーションがない場合は 2 つ目のモジュールをこのロケーションに再配置する前に 最初のモジュールについて Tcl コマンドウィンドウから reset_property コマンドを使用します reset_property コマンドは XDC 制約ファイルで実行できないため Tcl コマンドファイルから呼び出すか Tcl コンソールに直接入力します シミュレーション Vivado シミュレーションコンポーネントについて またサポートされているサードパーティツールについては Vivado Design Suite ユーザーガイド : ロジックシミュレーション (UG900) [ 参照 19] を参照してください サンプルデザインのシミュレーション方法は 第 5 章の サンプルデザインのシミュレーション を参照してください UltraScale+ Device Block for PCIe v

263 第 4 章 : デザインフローの手順 PIPE モードシミュレーション UltraScale+ Device Integrated Block for PCIe コアは コアの PIPE インターフェイスがリンクパートナーの PIPE インターフェイスへ接続される PIPE モードシミュレーションをサポートします このモードを選択すると シミュレーションスピードが加速します 現在の Vivado Design Suite ソリューションのサンプルデザイン ( エンドポイントモードまたはルートポートモードのいずれか ) で PIPE モードシミュレーションを有効にするには [Customize IP] ダイアログボックスの [Basic] タブで [Enable External PIPE Interface] オプションを使用します コアの境界で External PIPE Interface 信号が生成され 外部デバイスへのアクセスが可能になります この機能を有効にすると サンプルデザインで提供されるルートポートモデルの代わりにサードパーティの PCI Express VIP/BFM を使用するために必要な接続も提供されます ヒント : PIPE モードは シミュレーション専用です インプリメンテーションはサポートされていません 詳細は 243 ページの [Enable External PIPE Interface] を参照してください 表 4-7 および表 4-8 に コアの最上位に含まれる PIPE バス信号と EP コア (pcie_top) PIPE 信号のマッピングを示します 重要 : 新しいファイルの xil_sig2pipe.v がシミュレーションに直接取り込まれ phy_sig_gen.v の置き換えとなります BFM/VIP は board.v の xil_sig2pipe インスタンスと接続する必要があります 表 4-7: 共通の入力 / 出力コマンドとエンドポイント PIPE 信号のマッピング 入力コマンド エンドポイント PIPE 信号のマッピング 出力コマンド common_commands_in[25:0] 使用しない common_commands_out[0] pipe_clk (1) エンドポイント PIPE 信号のマッピング common_commands_out[2:1] pipe_tx_rate_gt (2) common_commands_out[3] common_commands_out[6:4] common_commands_out[7] common_commands_out[8] common_commands_out[9] pipe_tx_rcvr_det_gt pipe_tx_margin_gt pipe_tx_swing_gt pipe_tx_reset_gt pipe_tx_deemph_gt common_commands_out[16:10] 使用しない (3) 注記 : 1. pipe_clk は コアコンフィギュレーションに基づく出力クロックです Gen1 レートの場合 125 MHz です Gen2 および Gen3 の場合は 250 MHz です 2. pipe_tx_rate_gt は パイプレート (2 b00-gen1 2 b01-gen2 および 2 b10-gen3) を示します 3. このポートの機能は廃止されており 未接続のままでかまいません UltraScale+ Device Block for PCIe v

264 第 4 章 : デザインフローの手順 表 4-8: 入力 / 出力バスとエンドポイント PIPE 信号のマッピング 入力バス エンドポイント PIPE 信号のマッピング 出力バス エンドポイント PIPE 信号のマッピング pipe_rx_0_sigs[31:0] pipe_rx0_data_gt pipe_tx_0_sigs[31: 0] pipe_tx0_data_gt pipe_rx_0_sigs[33:32] pipe_rx0_char_is_k_gt pipe_tx_0_sigs[33:32] pipe_tx0_char_is_k_gt pipe_rx_0_sigs[34] pipe_rx0_elec_idle_gt pipe_tx_0_sigs[34] pipe_tx0_elec_idle_gt pipe_rx_0_sigs[35] pipe_rx0_data_valid_gt pipe_tx_0_sigs[35] pipe_tx0_data_valid_gt pipe_rx_0_sigs[36] pipe_rx0_start_block_gt pipe_tx_0_sigs[36] pipe_tx0_start_block_gt pipe_rx_0_sigs[38:37] pipe_rx0_syncheader_gt pipe_tx_0_sigs[38:37] pipe_tx0_syncheader_gt pipe_rx_0_sigs[83:39] 使用しない pipe_tx_0_sigs[39] pipe_tx0_polarity_gt 注記 : 1. このポートの機能は廃止されており 未接続のままでかまいません pipe_tx_0_sigs[41:40] pipe_tx0_powerdown_gt pipe_tx_0_sigs[69:42] 使用しない (1) 合成およびインプリメンテーション 合成およびインプリメンテーションの詳細は Vivado Design Suite ユーザーガイド : IP を使用した設計 (UG896) [ 参照 15] を参照してください サンプルデザインの合成およびインプリメンテーションに関する詳細は 第 5 章の サンプルデザインの合成およびインプリメンテーション を参照してください UltraScale+ Device Block for PCIe v

265 第 5 章 サンプルデザイン この章では Vivado Design Suite で提供されているサンプルデザインについて説明します サンプルデザインの概要 このセクションでは UltraScale+ Device Integrated Block for PCIe のサンプルデザインについて説明します 統合ブロックのエンドポイントコンフィギュレーションの概要 統合ブロックのエンドポイントコンフィギュレーションのサンプルシミュレーションデザインは 2 つの完全に独立した部分で構成されています ルートポートモデル : PCI Express のバストラフィックを生成 使用 チェックするテストベンチです PIO (Programmed Input/Output) サンプルデザイン : PCI Express のコンプリーターアプリケーションです PIO サンプルデザインは そのメモリ空間への読み出しおよび書き込みリクエストに応答し ハードウェアでのテスト用に合成できます 注記 : すべてのモード たとえばストラドル アドレスアライメントモード SRIOV MSI-X MSI などでサンプルデザインがサポートされるわけではありません UltraScale+ Device Block for PCIe v

266 第 5 章 : サンプルデザイン シミュレーションデザインの概要 シミュレーションデザインの場合 トランザクションはルートポートモデルからコア ( エンドポイントとしてコンフィギュレーション ) に送信され PIO サンプルデザインによって処理されます 図 5-1 は コアで提供されているシミュレーションデザインについて説明しています ルートポートモデルの詳細は 282 ページの エンドポイント用ルートポートモデルテストベンチ を参照してください X-Ref Target - Figure 5-1 Output Logs usrapp_com Root Port Model TPI for Express usrapp_rx usrapp_tx Test Program dsport PCI Express Fabric Endpoint Core for PCI Express PIO Design Endpoint DUT for PCI Express X12471 図 5-1: シミュレーションサンプルデザインのブロック図 インプリメンテーションデザインの概要 図 5-2 にあるように インプリメンテーションデザインは 読み出しおよび書き込みトランザクションを受理してリクエストに応答できる 簡単な PIO サンプルデザインで構成されています このサンプルのソースコードはコアと共に提供されています PIO サンプルデザインのシミュレーションについては 268 ページの PIO (Programmed Input/Output): エンドポイントのサンプルデザイン を参照してください UltraScale+ Device Block for PCIe v

267 第 5 章 : サンプルデザイン X-Ref Target - Figure 5-2 UltraScale FPGA Gen3 Integrated Block for PCI Express (Configured as an Endpoint) ep_io_mem PIO_TO_CTRL EP_TX EP_RX ep_mem32 ep_mem64 ep_mem_erom EP_MEM PIO_INTR_CTRL PIO_EP PIO X12459 サンプルデザインのエレメント PIO サンプルデザインには 次のエレメントがあります コアラッパー サンプルの Verilog HDL ラッパー ( コアおよびサンプルデザインをインスタンシエートする ) サンプルデザインをシミュレーションするためのカスタマイズ可能なデモ用テストベンチ このサンプルデザインは 次のシミュレータを使用して Vivado Design Suite でテストおよび検証されています Vivado シミュレータ Mentor Graphics 社 QuestaSim Cadence 社 Incisive Enterprise Simulator (IES) Synopsys 社 Verilog Compiler Simularor (VCS) 図 5-2: インプリメンテーションサンプルデザインのブロック図 サポートされているツールのバージョンは Vivado Design Suite ユーザーガイド : リリースノート インストールおよびライセンス (2) を参照してください UltraScale+ Device Block for PCIe v

268 第 5 章 : サンプルデザイン PIO (Programmed Input/Output): エンドポイントのサンプルデザイン 通常 PIO (Programmed Input/Output) トランザクションは PCI Express システムのホスト CPU が PCI Express ロジック内の MMIO (Memory Mapped Input Output) および CMIO (Configuration Mapped Input Output) アドレスにアクセスするために使用します PCI Express のエンドポイントは メモリおよび I/O 書き込みトランザクションを受理し またメモリおよび I/O 読み出しトランザクションに対してはデータ付きのコンプリーションで応答します PIO サンプルデザイン (PIO デザイン ) は Vivado IP カタログによって生成されるエンドポイントコンフィギュレーションのコアに含まれています ユーザーは検証済みの実際のデザインである PIO デザインを使用して システムボードを起動し ボードのリンクおよび機能を検証することができます PIO デザインポートモデルは コア (Endpoint Block Plus for PCI Express および Endpoint PIPE for PCI Express ソリューション ) で共有されます このセクションでは 総称的に Endpoint for PCI Express ( または Endpoint for PCIe ) の名前を使用してすべてのソリューションを表しています システムの概要 PIO デザインは シンプルなターゲット専用のアプリケーションで PCIe コア用エンドポイントのトランザクション (AXI4-Stream) インターフェイスと接続され これを手掛かりにして独自デザインを構築できるように提供されています 次の機能が含まれています 内部 FPGA ブロック RAM を使用するトランザクションごとの 2 KB ターゲット領域が 4 つ ( ターゲット空間の合計は 8,192 バイト ) コンプリーション TLP をサポートする 32 ビット /64 ビットのアドレスメモリ空間および I/O 空間への 1 Dword ペイロードの読み出しおよび書き込み PCI Express トランザクションをサポート TLP デスティネーションのベースアドレスレジスタをそれぞれ区別するため コアの BAR ID[2:0] および Completer Request Descriptor[114:112] を使用 64 ビット 128 ビット および 256 ビットの AXI4-Stream インターフェイス用に個別に最適化されたインプリメンテーションを提供 図 5-3 は ルートコンプレックス PCI Express スイッチデバイス PCIe 用エンドポイントから成る PCI Express システムアーキテクチャコンポーネントを示しています PIO 操作は ルートコンプレックス (CPU レジスタ ) からエンドポイントへと下方向 ( ダウンストリーム ) にデータを移動 またエンドポイントからルートコンプレックス (CPU レジスタ ) へと上方向 ( アップストリーム ) にデータを移動させます どちらの場合も データを移動させる PCI Express プロトコルリクエストは ホスト CPU が開始します UltraScale+ Device Block for PCIe v

269 第 5 章 : サンプルデザイン X-Ref Target - Figure 5-3 PCIe Root Complex CPU Main Memory Memory Controller Device PCI_BUS_0 PCI Port PCI_BUS_1 PCIe Switch PCI_BUS_X PCIe Endpoint X12472 図 5-3: システムの概要 CPU が MMIO アドレスコマンドに格納レジスタを出力すると データはダウンストリームに移動します ルートコンプレックスは通常 適切な MMIO ロケーションアドレス バイトイネーブル およびレジスタの内容を含むメモリ書き込み TLP を生成します エンドポイントがこのメモリ書き込み TLP を受信し 対応するローカルレジスタをアップデートすると トランザクションは終了します CPU が MMIO アドレスコマンドからロードレジスタを出力すると データはアップストリームに移動します ルートコンプレックスは通常 適切な MMIO ロケーションアドレスおよびバイトイネーブルのあるメモリ読み出し TLP を生成します エンドポイントはこのメモリ読み出し TLP を受信した後に データ TLP と共にコンプリーションを生成します このコンプリーションはルートコンプレックスに送信され ペイロードがターゲットレジスタにロードされると トランザクションは完了します UltraScale+ Device Block for PCIe v

270 第 5 章 : サンプルデザイン PIO ハードウェア PIO デザインは PCIe 用エンドポイントの背後にある FPGA ブロック RAM に 8,192 バイトのターゲット空間をインプリメントします この 32 ビットのターゲット空間は 1 DWORD の I/O 読み出し I/O 書き込み メモリ読み出し 64 メモリ書き込み 64 メモリ読み出し 32 およびメモリ書き込み 32 の TLP を介してアクセス可能です PIO デザインは 有効なメモリ読み出し 32 TLP メモリ読み出し 64 TLP またはコアにより出力された I/O 読み出しリクエストに応答して ペイロードが 1 Dword のコンプリーションを生成します さらに PIO デザインは I/O 書き込み TLP リクエストがうまくいったことを示すステータスと共に データなしのコンプリーションを返します PIO デザインは次の動作を開始できます 受信した書き込みアドレスが 11'hEA8 および書き込みデータが 32'hAAAA_BBBB で BAR0 をターゲットとする場合のメモリ読み出しトランザクション 受信した書き込みアドレスが 11'hEEC および書き込みデータが 32'hCCCC_DDDD で BAR0 をターゲットとする場合のレガシ割り込み 受信した書き込みアドレスが 11'hEEC および書き込みデータが 32'hEEEE_FFFF で BAR0 をターゲットとする場合の MSI 受信した書き込みアドレスが 11'hEEC および書き込みデータが 32'hDEAD_BEEF で BAR0 をターゲットとする場合の MSIx PIO デザインは FPGA ブロック RAM 空間のターゲットアドレスへペイロードをアップデートすることで 1 Dword ペイロードを含むメモリまたは I/O 書き込み TLP を処理します ベースアドレスレジスタのサポート PIO デザインでは 4 つのターゲット空間がサポートされており これらの各空間はそれぞれ別の基本アドレスレジスタ (BAR) で表されている 2 KB のメモリブロックから構成されています デフォルトのパラメーターを使用し このセクションで定義する次の PIO デザインと機能するようにコンフィギュレーションされたコアが Vivado IP カタログによって生成されます 64 ビットのアドレス指定可能なメモリ空間 BAR 1 つ 32 ビットのアドレス指定可能なメモリ空間 BAR 1 つ PIO デザインで使用されるデフォルトのパラメーター値を変更可能ですが 場合によっては 使用されているシステム次第で ユーザーアプリケーションを変更しなければならない可能性もあります Vivado Design Suite IP のデフォルトパラメーターの変更およびその PIO デザインへの影響については IP カタログのデフォルト BAR 設定の変更 を参照してください BAR で表されているこの 4 つの 2 KB のアドレス空間はそれぞれ PIO デザインの 4 つの 2 KB のアドレス領域の 1 つに対応しています 2 KB の各領域は 2 KB のデュアルポートブロック RAM を使用してインプリメントされます コアがトランザクションを受信すると アドレスを解読し 4 つの領域のうちどれがターゲットになっているのかを判別します コアは TLP を PIO デザインに出力し 表 5-1 に定義されているように Completer Request Descriptor[114:112] の該当ビット (BAR ID[2:0]) をアサートします 表 5-1: TLP トラフィックタイプ ブロック RAM TLP トランザクションタイプ デフォルト BAR BAR ID[2:0] ep_io_mem I/O TLP トランザクション 無効 無効 ep_mem32 32 ビットアドレスメモリ TLP トランザクション 2 000b ep_mem64 64 ビットアドレスメモリ TLP トランザクション b ep_mem_erom EROM 向けの 32 ビットアドレスメモリ TLP トランザクション拡張 ROM 110b UltraScale+ Device Block for PCIe v

271 第 5 章 : サンプルデザイン IP カタログのデフォルト BAR 設定の変更 選択されている BAR 設定に一致するようにカスタマイズされた Verilog ソースを作成するため Vivado IP カタログのパラメーターを変更して PIO デザインを使用し続けることができます しかし PIO デザインのパラメーターは コアのパラメーターよりも限られているため デフォルトの IP カタログのパラメーターを変更する場合は 次のサンプルデザインの制限事項を考慮してください サンプルデザインでは I/O 空間 BAR が 1 つ 32 ビットのメモリ空間が 1 つ ( 拡張 ROM 空間には使用できない ) 64 ビットのメモリ空間が 1 つサポートされています この制限数を超えると 指定したタイプの最初の空間だけがアクティブになり 残りの空間にアクセスがあっても完了しません 各空間は 2 KB のメモリでインプリメントされます 対応する BAR がより幅の広いアパーチャにコンフィギュレーションされると この 2KB 制限を超えたアクセスはラップアラウンドし この 2 KB メモリ空間はオーバーラップします PIO デザインでは I/O 空間 BAR が 1 つサポートされています これはデフォルトでは無効になっていますが 必要に応じて変更できます PIO デザインには制限事項がありますが ユーザーのニーズに合わせてサンプルデザインを変更できるよう Verilog のソースコードが提供されています TLP データフロー このセクションでは PIO デザインで処理される TLP のデータフローについて説明します PIO デザインは ペイロードが 1 DWORD のメモリ読み出しおよび書き込み TLP I/O 読み出しおよび書き込み TLP を処理します 1 DWORD よりも長いメモリ読み出しまたはメモリ書き込み TLP は PIO デザインでは正しく処理されませんが コアがこれらの TLP を受理し PIO デザインに渡します PIO デザインがコアから 1 Dword よりも長い TLP を受信する場合は 受信を完了しますがそれらを破棄します また それに対応するコンプリーションは生成されません メモリおよび I/O 書き込み TLP の処理 PCIe 用エンドポイントがメモリまたは I/O の書き込み TLP を受信すると TLP デスティネーションアドレスおよびトランザクションタイプが コアの BAR の値と比較されます TLP がこの比較チェックをパスすると コアが PIO デザインの受信 AXI4-Stream インターフェイスへ TLP を渡します PIO デザインは メモリ書き込みと I/O TLP 書き込みを異なる方法で処理します I/O 書き込みには データなしのコンプリーション (clp) を生成して PIO デザインは応答します これは PCI Express 仕様で規定されています また パケットの開始 パケットの終了 および準備完了のハンドシェイク信号と共に コンプリーターリクエスター AXI4-Stream インターフェイスは 入力される TLP と一致したデスティネーション BAR を PIO デザインに知らせるため コンプリーターリクエストの Descriptor[114:112] 信号の適切なビット (BAR ID[2:0]) をアサートします それが受信されると PIO デザインの RX ステートマシンが 入力される書き込み TLP を処理し また TLP データと関連アドレスフィールドを抽出して PIO デザインの内部ブロック RAM の書き込みリクエストコントローラーへ これを渡すことができるようにします アサートされた特定の BAR ID[2:0] 信号に基づいて RX ステートマシンは 書き込みイネーブルリクエストをアサートする前に使用する 2 KB ブロック RAM を内部書き込みコントローラーに知らせます たとえば BAR0 をターゲットにするコアが I/O 書き込みリクエストを受信した場合 コアはその TLP を PIO デザインに渡して BAR ID[2:0] を 000b に設定します RX ステートマシンは I/O 書き込み TLP から下位アドレスビットとデータフィールドを抽出し 内部メモリ書き込みコントローラーに対し ブロック RAM への書き込み操作を開始するよう指示します この例では BAR ID[2:0] が 000b に設定されているため PIO のメモリ書き込みコントローラーが ep_mem0 ( デフォルトでは 2 KB の I/O 空間を表す ) にアクセスします 書き込みが FPGA のブロック RAM に対して実行されている間 PIO デザインの RX ステートマシンは m_axis_cq_tready をディアサートするため 内部メモリ書き込みコントローラーがブロック RAM への書き込み操作を完了させるまで 受信 AXI4-Stream インターフェイスが TLP の受信を停止します この方法で m_axis_cq_tready をディアサートすることは コアを使用したデザインすべてに対し必須というわけではありません PIO デザインでは RX ステートマシンの制御ロジックを簡略化するために この方法が採用されています UltraScale+ Device Block for PCIe v

272 第 5 章 : サンプルデザイン メモリおよび I/O 読み出し TLP の処理 PCIe 用エンドポイントがメモリまたは I/O の読み出し TLP を受信すると TLP デスティネーションアドレスおよびトランザクションタイプが コアの BAR にプログラムされた値と比較されます TLP がこの比較チェックをパスすると コアが PIO デザインの受信 AXI4-Stream インターフェイスへ TLP を渡します また パケットの開始 パケットの終了 および準備完了のハンドシェイク信号と共に コンプリーターリクエスター AXI4-Stream インターフェイスは 入力される TLP と一致したデスティネーション BAR を PIO デザインに知らせるため 適切な BAR ID[2:0] 信号をアサートします それが受信されると PIO デザインのステートマシンは入力される読み出し TLP を処理し 関連する TLP 情報を抽出して PIO デザインの内部ブロック RAM の読み出しリクエストコントローラーへこれを渡します アサートされた特定の BAR ID[2:0] 信号に基づいて RX ステートマシンは 読み出しイネーブルリクエストをアサートする前に使用する 2 KB ブロック RAM を 内部読み出しコントローラーに知らせます たとえば デフォルトの Mem32 BAR2 をターゲットにするコアがメモリ読み出し 32 リクエスト TLP を受信した場合 コアはその TLP を PIO デザインに渡して BAR ID[2:0] を 010b に設定します RX ステートマシンは メモリ 32 読み出し TLP から下位アドレスビットを抽出し 内部メモリ読み出しリクエストコントローラーに対し読み出し操作を開始するよう指示します この例では BAR ID[2:0] が 010b に設定されているため PIO のメモリ読み出しコントローラーが Mem32 ( デフォルトでは 2 KB の I/O 空間を表す ) にアクセスします メモリ書き込み TLP とメモリ読み出し TLP の処理における大きな違いは メモリまたは I/O 読み出しリクエストがあった場合に 受信デバイスがデータのあるコンプリーション TLP を返す必要があるという点です 読み出し動作が実行されている間 PIO デザインの RX ステートマシンは m_axis_cq_tready をディアサートするので 内部メモリ読み出しコントローラーがブロック RAM からの読み出し操作を完了させてコンプリーションを生成するまで 受信 AXI4-Stream インターフェイスが TLP の受信を停止します コアを使用するすべてのデザインでは このように m_axis_cq_tready をディアサートする必要はありません PIO デザインでは RX ステートマシンの制御ロジックを簡略化するためにこの方法が採用されています PIO ファイルの構造 表 5-2 は PIO デザインファイルの構造を定義しています Vivado IP カタログで配布されるすべてのファイルが必要というわけではなく どのコアがターゲットになっているかによりますが 配布されないファイルもあります PCIe 用エンドポイントソリューションには 32 ビットのユーザーデータパスを使用するものと 64 ビットのデータパスを使用するものがありますが PIO デザインではどちらでも使用できます データパスの幅は ターゲットになっているコアによって異なります 表 5-2: PIO ファイルの構造 ファイル PIO.v 最上位デザインのラッパー PIO_INTR_CTRL.v PIO_EP.v PIO_TO_CTRL.v PIO_RX_ENGINE.v PIO_TX_ENGINE.v PIO_EP_MEM_ACCESS.v PIO_EP_MEM.v PIO 割り込みコントローラー PIO デザインのコンフィギュレーションには PIO_64 PIO_128 および PIO_256 ( それぞれ ビットの AXI4-Stream インターフェイス ) の 3 種類があります 生成される PIO コンフィギュレーションは 選択されているエンドポイントタイプ ( つまり UltraScale デバイスの統合ブロック PIPE PCI Express および Block Plus) および選択されている PCI Express のレーン数 インターフェイス幅によります 表 5-3 には ユーザーの選択に基づいて生成される PIO コンフィギュレーションがまとめられています 説明 PIO アプリケーションモジュール PIO ターンオフコントローラーモジュール 32 ビットの受信エンジン 32 ビットの送信エンジン エンドポイントメモリアクセスモジュール エンドポイントメモリ UltraScale+ Device Block for PCIe v

273 第 5 章 : サンプルデザイン 表 5-3: PIO コンフィギュレーション コア x1 x2 x4 x8 注記 : PCIe 用統合ブロック PIO_64 PIO_64 PIO_128 PIO_64 PIO_128 PIO_256 PIO_64 PIO_128 (1) PIO_ コアは 128 ビット x8 8.0 Gb/s コンフィギュレーションおよび 500 MHz ユーザークロック周波数をサポートしていません 図 5-4 は PIO デザインのさまざまなコンポーネントを示しています PIO デザインは TX エンジン RX エンジン メモリアクセスコントローラー パワーマネージメントターンオフコントローラーという 4 つの主な部分に分かれています X-Ref Target - Figure 5-4 UltraScale FPGA Gen3 Integrated Block for PCI Express (Configured as an Endpoint) ep_io_mem PIO_TO_CTRL EP_TX EP_RX ep_mem32 ep_mem64 ep_mem_erom EP_MEM PIO_INTR_CTRL PIO_EP PIO X12455 図 5-4: PIO デザインのコンポーネント UltraScale+ Device Block for PCIe v

274 第 5 章 : サンプルデザイン PIO の動作 PIO 読み出しトランザクション 図 5-5 は PIO デザインへの連続するメモリ読み出しリクエストを表しています 受信エンジンは 最初の TLP が完全に受信されるとすぐに m_axis_rx_tready をディアサートします 次の読み出しトランザクションは 送信エンジンが compl_done_o をアサートし 最初のリクエストが完全に送信されたことを示すコンプリーションが生成された後にのみ受け入れられます X-Ref Target - Figure 5-5 user_clk m_axis_cq_tdata[63:0] DS1DS0 DS3DS2 DS1DS0 DS3DS2 m_axis_cq_tvalid m_axis_cq_tready m_axis_cq_tkeep[1:0] 0x3 m_axis_cq_tlast (first_be) m_axis_cq_tuser[3:0] FIRST_BE FIRST_BE (last_be) m_axis_cq_tuser[7:4] LAST_BE LAST_BE (byte_en[3:0]) m_axis_cq_tuser[15:8] 0 (sop) m_axis_cq_tuser[40] compl_done m_axis_cc_tdata[63:0] DS1DS0 DW0 DS2 - - DW1 m_axis_cc_tvalid m_axis_cc_tready m_axis_cc_tkeep[1:0] 0x3 0x1 m_axis_cc_tlast 図 5-5: 連続する読み出しトランザクション UltraScale+ Device Block for PCIe v

275 第 5 章 : サンプルデザイン PIO 書き込みトランザクション 図 5-6 は PIO デザインへの連続するメモリ書き込みリクエストを表しています 次の書き込みトランザクションは メモリアクセスユニットが wr_busy_o をディアサートし 最初のリクエストに関連するデータがメモリアパーチャへすべて書き込まれたことを示した後にのみ受け入れられます X-Ref Target - Figure 5-6 図 5-6: 連続する書き込みトランザクション UltraScale+ Device Block for PCIe v

276 第 5 章 : サンプルデザイン 図 5-7 に システム全体でブロックがどのように接続されているかを示します X-Ref Target - Figure 5-7 X14684 図 5-7: コンフィギュレーターサンプルデザイン UltraScale+ Device Block for PCIe v

277 第 5 章 : サンプルデザイン コンフィギュレーターファイルの構造 表 5-4 は コンフィギュレーターサンプルデザインファイルの構造を説明しています 表 5-4: サンプルデザインファイルの構造 ファイル xilinx_pcie4_uscale_rp.v cgator_wrapper.v cgator.v cgator_cpl_decoder.v cgator_pkt_generator.v cgator_tx_mux.v cgator_gen2_enabler.v cgator_controller.v cgator_cfg_rom.data pio_master.v pio_master_controller.v pio_master_checker.v pio_master_pkt_generator.v 説明 コンフィギュレーターサンプルデザインの最上位ラッパーファイル コンフィギュレーターおよびルートポートのラッパー コンフィギュレーターサブブロックのラッパー コンプリーションデコーダー コンフィギュレーション TLP ジェネレーター 送信 AXI4-Stream 多重化 (MUX) ロジック 5.0 Gb/s への速度変更モジュール コンフィギュレーター送信エンジン コンフィギュレーター ROM ファイル PIO マスターのラッパー PIO マスターの TX および RX エンジン 入力されるユーザーアプリケーションのコンプリーション TLP のチェック ユーザーアプリケーションの TLP の生成 コンフィギュレーションサンプルデザインの階層は次のとおりです xilinx_pcie_uscale_rp.vtopdirectory cgator_wrapper pcie_uscale_core_top ( ソースディレクトリ内 ) このディレクトリには ルートポートコンフィギュレーションのコアのソースファイルがすべて含まれます cgator - cgator_cpl_decoder - cgator_pkt_generator - cgator_tx_mux - cgator_gen2_enabler - cgator_controller このディレクトリには <cgator_cfg_rom.data> (ROM_FILE で指定 ) が含まれます pio_master pio_master_controller pio_master_checker pio_master_pkt_generator 注記 : cgator_cfg_rom.data は ROM データファイルのデフォルト名です これは ROM_FILE パラメーターの値を変更してオーバーライドできます UltraScale+ Device Block for PCIe v

278 第 5 章 : サンプルデザイン コアの生成 Vivado IDE でデフォルト値を使用してコアを生成するには 次の手順に従います 1. Vivado IP カタログを起動します 2. [File] [New Project] をクリックします 3. プロジェクト名とロケーションを入力して [Next] をクリックします この例では project_name.cpg およ び project_dir を使用します 4. New Project ウィザードのページでは ソース 既存の IP または制約を追加しないでください 5. [Part] タブ ( 図 5-8) で 次のようにオプションを選択します [Family]: Kintex UltraScale [Device]: xcku040 [Package]: ffva1156 [Speed grade]: -3 注記 : サポートされないシリコンデバイスを選択すると コアリストのコアが淡色表示 ( 利用できない ) されます X-Ref Target - Figure 5-8 図 5-8: デバイスの選択 6. 最後に表示されるプロジェクトサマリページで [OK] をクリックします 7. Vivado IP カタログで [Standard Bus Interfaces] [PCI Express] を展開表示し [UltraScale+ Device Integrated Block for PCIe] コアをダブルクリックして [Customize IP] ダイアログボックスを表示します 8. [Component Name] にコアの名前を入力します 注記 : この例では <component_name> を使用します UltraScale+ Device Block for PCIe v

279 第 5 章 : サンプルデザイン X-Ref Target - Figure 5-9 図 5-9: コンフィギュレーションパラメーター 9. [Device/Port Type] ドロップダウンメニューから コアの適切なデバイス / ポートタイプ ( エンドポイントまたはルートポート ) を選択します 10. [OK] をクリックし デフォルトのパラメーターを使用してコアを生成します 11. デザインの [Sources] ウィンドウで XCI ファイルを右クリックして [Generate] をクリックします 12. [All] をクリックして デフォルトのパラメーターでコアを生成します UltraScale+ Device Block for PCIe v

UltraScale Architecture Gen3 Integrated Block for PCI Express v4.0 LogiCORE IP 製品ガイド (PG156)

UltraScale Architecture Gen3 Integrated Block for PCI Express v4.0 LogiCORE IP 製品ガイド (PG156) UltraScale Architecture Gen3 Integrated Block for PCI Express v3.1 LogiCORE IP 製品ガイド Vivado Design Suite 本資料は表記のバージョンの英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては

More information

アナログ・接点変換器

アナログ・接点変換器 LoRa/ 通信変換器 HLR-RS485 通信仕様書 (Modbus) インターフェース 2019 年 02 月 19 日 改訂履歴 日付改訂者改訂内容 2018/09/14 野村初版 2019/02/19 山下 改訂 1 P12 説明文修正 レジスタ割付修正 P13 キャリアセンス異常エラー追加 承認確認作成 ( 3 ) 目次 1 概要... 4 2 基本仕様... 4 3 通信モードについて...

More information

スイッチ ファブリック

スイッチ ファブリック CHAPTER 4 この章では Cisco CRS-1 キャリアルーティングシステムのについて説明します この章の内容は 次のとおりです の概要 の動作 HS123 カード 4-1 の概要 の概要 は Cisco CRS-1 の中核部分です はルーティングシステム内の MSC( および関連する PLIM) と他の MSC( および関連する PLIM) を相互接続し MSC 間の通信を可能にします は

More information

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR 第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道

More information

Microsoft Word - PCI-X_PCIeバスのデータ転送-ver1.0.docx

Microsoft Word - PCI-X_PCIeバスのデータ転送-ver1.0.docx データ転送時におけるエラー / ボード認識不具合に関する資料 2012/06/20 目次 画像データ転送時に発生する問題 ( 過去の事例 )... 3 不具合の発生したチップセットの例... 7 Intel 社製チップセット... 8 テレダインダルサが推奨するチップセットの例... 9 トランザクション層の機能... 11 PCI Express のレーン順序と差動信号の特性... 12 レーン0とレーン1で送信側と受信側で速度差を吸収する機能...

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介安全機能 ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ 安全機能の概要 フラッシュ メモリ CRC 演算機能 RAM パリティ エラー検出機能 データの保護機能 RAM ガード機能 SFR ガード機能 不正メモリ アクセス機能 周辺機能を使用した安全機能 周波数検出機能 A/D

More information

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設 APX-3312 と APX-3302 の差分一覧 No. OM12021D APX-3312 と APX-3302 は どちらも同じ CameraLink 規格 Base Configuration カメラ 2ch 入力可能なボードになります 本書では APX-3312 をご利用になられているお客様が APX-3302 をご利用になられる場合の資料として 両ボードについての差異 を記述しております

More information

シスコ以外の SIP 電話機の設定

シスコ以外の SIP 電話機の設定 この付録では SIP を実行しているシスコ以外の電話機の設定方法について説明します の概要, 1 ページ サードパーティ製 SIP 電話機の設定プロセス, 1 ページ SIP 電話機の設定の違い, 3 ページ 詳細情報の入手先, 8 ページ の概要 Cisco Unified Communications Manager は SIP を使用した Cisco Unified IP Phone だけでなく

More information

使用する前に

使用する前に この章では Cisco Secure ACS リリース 5.5 以降から Cisco ISE リリース 2.4 システムへのデー タ移行に使用される Cisco Secure ACS to Cisco ISE Migration Tool について説明します 移行の概要 1 ページ Cisco Secure ACS から データ移行 1 ページ Cisco Secure ACS to Cisco ISE

More information

常駐接続(ISL AlwaysOn)Wake On LAN 設定ガイド

常駐接続(ISL AlwaysOn)Wake On LAN 設定ガイド 常駐接続 (ISL AlwaysOn) Wake On LAN 設定ガイド 1 本マニュアルについて本マニュアルでは ISL AlwaysOn の Wake On LAN 機能をご利用いただくために必要な利用条件や設定についてご案内しております ISL AlwaysOn のインストール方法や Wake On LAN 機能の使用方法については 常駐接続 (ISL AlwaysOn) マニュアル および

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART

More information

McAfee ENS 移行プロセス概要

McAfee ENS 移行プロセス概要 McAfee Endpoint Security (ENS) 移行プロセス概要 ENS へアップグレードするための全体像と移行プロセス概要のご説明資料 目次 ENS 移行プロセス 展開プロセス 1 ENS 移行支援ツール 展開プロセス 2 テスト ~ クライアントアップグレートトラブルシューティング 本資料は ENS 移行の全体イメージを把握してもらうことを目的とした資料です ENS とは McAfee

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

More information

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ Oracle Un お問合せ : 0120- Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよびSOA 対応データ サービスへ ) を網羅する総合的なデータ統合プラットフォームです Oracle

More information

Notes and Points for TMPR454 Flash memory

Notes and Points for TMPR454 Flash memory 表紙 TMPR454 内蔵 Flash メモリ対応版手順書 株式会社 DTS インサイト ご注意 (1) 本書の内容の一部または 全部を無断転載することは禁止されています (2) 本書の内容については 改良のため予告なしに変更することがあります (3) 本書の内容について ご不明な点やお気付きの点がありましたら ご連絡ください (4) 本製品を運用した結果の影響については (3) 項にかかわらず責任を負いかねますのでご了承ください

More information

McAfee SaaS Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護

McAfee SaaS  Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護 統合ガイド改訂 G McAfee SaaS Email Protection Microsoft Office 365 と Exchange Online の保護 Microsoft Office 365 の設定 このガイドの説明に従って McAfee SaaS Email Protection を使用するように Microsoft Office 365 と Microsoft Exchange Online

More information

GTR Board

GTR Board TB-FMCH-12GSDI ご購入に際してのご注意 1 変更履歴版数 日付 内容 担当者 Rev.1.00 2015/06/25 初版 天野 Rev.1.01 2015/07/22 2 章 Pre-production 品に関する記載を削除 天野 2016/09/16 3 章評価環境を更新 4 章ボードの機能評価状況を更新 6 章リファレンスデザインのダウンロード先を追加 森田 2 目次 1. 概要と関連書類...

More information

ファイル メニューのコマンド

ファイル メニューのコマンド CHAPTER43 次のオプションは Cisco Configuration Professional(Cisco CP) の [ ファイル ] メニューから利用できます 実行コンフィギュレーションを PC に保存 ルータの実行コンフィギュレーションファイルを PC 上のテキストファイルに保存します 43-1 設定をルータに配信する 第 43 章 設定をルータに配信する このウィンドウでは Cisco

More information

ヤマハDante機器と他社AES67機器の接続ガイド

ヤマハDante機器と他社AES67機器の接続ガイド はじめに AES67 は 高性能なデジタル IP ネットワークの相互接続を実現するための標準規格です AES67 は や Ravenna Q-LAN Livewire WheatNet などの異なるネットワーク規格で構築されたシステム間で オーディオ信号を送受信する手段を提供します ヤマハも 機器のアップデートにより順次 AES67 への対応を開始し 第一弾としてデジタルミキシングコンソール CL/QL

More information

MODBUS ユーザーズマニュアル 페이지 1 / 23

MODBUS ユーザーズマニュアル 페이지 1 / 23 MODBUS ユーザーズマニュアル 페이지 1 / 23 目次 1. 概要... 1 2. GX7 サポートファンクションコード... 1 3. GX7 サポートリファレンス... 1 4. GX7 サポートリファレンスとファンクションコードの関係... 2 5. XD+ 内プロジェクト設定でオプション別の機能... 4 6. トラブルシューティング... 9 A. APPENDIX... 12 1.

More information

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+) RL78 開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行 ( 統合開発環境編 ) (High-performance Embedded Workshop CS+) 2017/4/7 R20UT2087JJ0103 ソフトウェア事業部ソフトウエア技術部ルネサスシステムデザイン株式会社 はじめに 本資料は 統合開発環境 High-performance Embedded Workshop

More information

Microsoft Word - dg_sataahciip_refdesign_jp.doc

Microsoft Word - dg_sataahciip_refdesign_jp.doc SATA AHCI-IP コア リファレンス デザイン説明書 Rev1.3J 2017/03/22 本ドキュメントは AHCI-IP コア実機デモ システムのリファレンス デザインを説明したものです SATA-IP コアの上位に AHCI-IP コアを実装することで アプリケーション レイヤのドライバを介して Linux 等の OS から接続 SATA デバイスを直接ドライブとして認識でき ファイル

More information

UCS ミニの概要

UCS ミニの概要 UCS ミニの概要 目次 概要前提条件要件設定サポートされている機能サポートされない機能 : 新機能 : ユニファイドポート (4*10G ポート ) の設定 FI 切り替え a. 有効な切り替え b. 無効な切り替えサポートされるトポロジ a. IP ベースの接続 b. ダイレクトアタッチトストレージ USB サポート HTML5 ユーザインターフェイス Cisco サポートコミュニティ - 特集対話

More information

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ オンラインヘルプ :SAP ソフトウェア変更登録 (SSCR) キーの登録 目次 概要... 2 参考リンク... 3 アプリケーションの起動... 4 アプリケーションとメインコントロールの概要... 5 キーリストのカスタマイズ... 7 リストのフィルタリング... 7 表のレイアウトのカスタマイズ... 8 新しい開発者の登録... 10 新しいオブジェクトの登録... 12 特定のインストレーションから別のインストレーションに個々の

More information

Cisco ViewMail for Microsoft Outlook クイックスタートガイド (リリース 8.5 以降)

Cisco ViewMail for Microsoft Outlook クイックスタートガイド (リリース 8.5 以降) クイックスタートガイド Cisco ViewMail for Microsoft Outlook クイックスタートガイド ( リリース 8. 以降 ) Cisco ViewMail for Microsoft Outlook( リリース 8. 以降 ) Cisco ViewMail for Microsoft Outlook の概要 Outlook 010 および Outlook 007 での ViewMail

More information

アドバンスト・フォーマットディスクのパフォーマンス

アドバンスト・フォーマットディスクのパフォーマンス White Paper アドバンスト フォーマットディスクのパフォーマンス White Paper FUJITSU Storage ETERNUS DX S4/S3 series アドバンスト フォーマットディスクのパフォーマンス 物理 4K セクターを使用した HDD の新技術により ストレージ密度 およびエラー訂正機能が向上されています その新技術の HDD が ETERNUS DX S4/S3

More information

LogiCORE IP Aurora 64B/66B v9.2 製品ガイド (PG074)

LogiCORE IP Aurora 64B/66B v9.2 製品ガイド (PG074) LogiCORE IP Aurora 64B/66B v9.2 製品ガイド Vivado Design Suite 本資料は表記のバージョンの英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては 必ず最新英語版をご参照ください 目次 IP の概要 第 1 章 : 概要機能概要..........................................................................................

More information

機能検証トレーニング コース一覧

機能検証トレーニング コース一覧 機能検証トレーニング コース一覧 日本シノプシス合同会社 2016.03 トレーニング コース一覧 VCS/DVE 基本コース VCS-NLP/VC LP 基本コース VC Verification IP AXI 基本コース (UVM 版 ) VC Verification IP USB 基本コース (UVM 版 ) Verdi 3 基本コース SpyGlass Lint コース SpyGlass

More information

Veritas System Recovery 16 Management Solution Readme

Veritas System Recovery 16 Management Solution Readme Veritas System Recovery 16 Management Solution Readme この README について Veritas System Recovery 16 のソフトウェア配信ポリシーのシステム要件 Veritas System Recovery 16 Management Solution のシステム要件 Veritas System Recovery 16 Management

More information

Client Management Solutions および Mobile Printing Solutions ユーザガイド

Client Management Solutions および Mobile Printing Solutions ユーザガイド Client Management Solutions および Mobile Printing Solutions ユーザガイド Copyright 2007 Hewlett-Packard Development Company, L.P. Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です 本書の内容は 将来予告なしに変更されることがあります

More information

BOM for Windows Ver

BOM for Windows Ver BOM for Windows Ver.5.0 SR2 リリースノート Copyright 2007-2009 SAY Technologies, Inc. All rights reserved. このドキュメントには BOM Ver5.0 SR2 に関する最新情報が記載されています 対応 OS の追加 対応 SP と OS が増えました 機能追加 改良 1.Windows Server 2008

More information

目次 リリースノートについて... 1 リリースノートの内容... 1 フィードバックについて 主な機能強化 サービス課題管理機能 スコープ管理機能 サービス課題管理機能 スコープ管理機能 プロジ

目次 リリースノートについて... 1 リリースノートの内容... 1 フィードバックについて 主な機能強化 サービス課題管理機能 スコープ管理機能 サービス課題管理機能 スコープ管理機能 プロジ 最終更新日 2018/06/26 目次 リリースノートについて... 1 リリースノートの内容... 1 フィードバックについて... 1 1. 主な機能強化... 1 1.1. サービス課題管理機能 スコープ管理機能... 2 1.1.1. サービス課題管理機能... 2 1.1.2. スコープ管理機能... 4 1.2. プロジェクトのチーム情報をサービスに集約... 7 1.3. 環境設定をサービス設定に集約...

More information

TeamViewer マニュアル – Wake-on-LAN

TeamViewer マニュアル – Wake-on-LAN TeamViewer マニュアル Wake-on-LAN Rev 11.1-201601 TeamViewer GmbH Jahnstraße 30 D-73037 Göppingen www.teamviewer.com 目次 1 Wake-on-LANのバージョン情報 3 2 要件 5 3 Windowsのセットアップ 6 3 1 BIOSの設定 6 3 2 ネットワークカードの設定 7 3 3

More information

このマニュアルについて

このマニュアルについて 改訂 : May 30, 2007, ここでは の対象読者 構成 表記法 入手方法 テクニカルサポートの利用方法について説明します このマニュアルでは Service Control ソリューション Service Control Engine(SCE) プラットフォーム および関連コンポーネントの概念に関する基本的な知識があることを前提としています ここでは 以下のトピックに関する情報を提供します

More information

ボリュームライセンス簡易ガイド Windows および Microsoft Office を Mac で使用するためのライセンス Mac で使用するためのライセンス この簡易ガイドはすべてのボリュームライセンスプログラムを対象とします 目次 概要... 1 この簡易ガイドの更新内容... 1 詳細.

ボリュームライセンス簡易ガイド Windows および Microsoft Office を Mac で使用するためのライセンス Mac で使用するためのライセンス この簡易ガイドはすべてのボリュームライセンスプログラムを対象とします 目次 概要... 1 この簡易ガイドの更新内容... 1 詳細. ボリュームライセンス簡易ガイド Mac で使用するためのライセンス この簡易ガイドはすべてのボリュームライセンスプログラムを対象とします 目次 概要... 1 この簡易ガイドの更新内容... 1 詳細... 1 Mac 用 Windows オペレーティングシステムのライセンス... 1 Microsoft Office for Windows と Microsoft Office for Mac のライセンス...

More information

PowerTyper マイクロコードダウンロード手順

PowerTyper マイクロコードダウンロード手順 必ずお読みください Interface Card 用マイクロコードを Ver 1.3.0 をVer 1.3.1 以降に変更する場合 または Ver 1.4.5 以前のマイクロコードを Ver 1.5.0 以降に変更する場合 ダウンロード前後に必ず以下の作業を行ってください ( バージョンは Webブラウザ上または付属ソフトウェア Print Manager のSystem Status 上で確認できます

More information

Veritas System Recovery 16 Management Solution Readme

Veritas System Recovery 16 Management Solution Readme Veritas System Recovery 16 Management Solution Readme この README について Veritas System Recovery 16 のソフトウェア配信ポリシーのシステム要件 Veritas System Recovery 16 Management Solution のシステム要件 Veritas System Recovery 16 Management

More information

Singapore Contec Pte Ltd. Opening Ceremony

Singapore Contec Pte Ltd. Opening Ceremony M2M/IoT ソリューション CONPROSYS FIT プロトコル通信サンプルタスク 2018 年 03 月 06 日株式会社コンテック 1 必要機材 本サンプルを利用するに当り 最低限必要な機材を以下に示します 動作確認や信号状況を変化させるためのスイッチ センサ類は適宜ご用意下さい 品名 型式 必要数 メーカー M2Mコントローラ CPS-MC341-ADSC1-111 2 CONTEC ノートPC

More information

Xilinx XAPP645 Virtex-II Pro デバイス アプリケーション ノート『シングル エラー訂正およびダブル エラー 検出』

Xilinx XAPP645 Virtex-II Pro デバイス アプリケーション ノート『シングル エラー訂正およびダブル エラー 検出』 アプリケーションノート : Virtex-II Pro および Virtex-4 ファミリ R XAPP5 (v2.1) 2005 年 7 月 20 日 著者 : Simon Tam 概要 このアプリケーションノートでは Virtex -II Virtex-II Pro または Virtex-4 デバイスにおける Error Correction Control (ECC) モジュールのインプリメンテーションについて説明します

More information

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは? レジスタ アクセスの拡張機能 1. レジスタ アクセスの概要 Smart-USB Plus 製品で利用できるレジスタ アクセスとは FPGA 内にハードウエア レジスタを実装し ホスト PC の制御ソフトウエアから USB 経由でそれらのレジスタに値を設定したり レジスタの設定値を読み出すことができる機能です このレジスタ アクセス制御には USB バス仕様に基づく コントロール転送 を利用しています

More information

Q-SYS Designer Version 5.4 Release Note ソフトウェア要件 Q-SYS Designer は下記の OS での動作確認をしております Windows 7 Professional 32-bit / 64-bit Windows 8.1 Professional

Q-SYS Designer Version 5.4 Release Note ソフトウェア要件 Q-SYS Designer は下記の OS での動作確認をしております Windows 7 Professional 32-bit / 64-bit Windows 8.1 Professional Q-SYS Designer Version 5.4 Release Note ソフトウェア要件 Q-SYS Designer は下記の OS での動作確認をしております Windows 7 Professional 32-bit / 64-bit Windows 8.1 Professional 32-bit / 64-bit Windows 10 Pro 64bit Windows XP および

More information

インテル(R) Visual Fortran コンパイラ 10.0

インテル(R) Visual Fortran コンパイラ 10.0 インテル (R) Visual Fortran コンパイラー 10.0 日本語版スペシャル エディション 入門ガイド 目次 概要インテル (R) Visual Fortran コンパイラーの設定はじめに検証用ソースファイル適切なインストールの確認コンパイラーの起動 ( コマンドライン ) コンパイル ( 最適化オプションなし ) 実行 / プログラムの検証コンパイル ( 最適化オプションあり ) 実行

More information

1. ネットワーク経由でダウンロードする場合の注意事項 ダウンロード作業における確認事項 PC 上にファイアウォールの設定がされている場合は 必ずファイアウォールを無効にしてください また ウイルス検知ソフトウェアが起動している場合は 一旦その機能を無効にしてください プリンターは必ず停止状態 (

1. ネットワーク経由でダウンロードする場合の注意事項 ダウンロード作業における確認事項 PC 上にファイアウォールの設定がされている場合は 必ずファイアウォールを無効にしてください また ウイルス検知ソフトウェアが起動している場合は 一旦その機能を無効にしてください プリンターは必ず停止状態 ( ファームウェアのダウンロード手順 概要 機能変更や修正のために プリンターを制御するファームウェアを PC から変更することが可能です ファームウェアはホームページ (http://www.jbat.co.jp) から入手可能です ファームウェアは プリンター本体制御用のファームウェアと Interface Card 用ファームウェアの 2 種類で それぞれ独自にダウンロード可能です プリンター本体制御用のファームウェアは

More information

Control Manager 6.0 Service Pack 3 System Requirements

Control Manager 6.0 Service Pack 3 System Requirements トレンドマイクロ株式会社は 本書および本書に記載されている製品を予告なしに変更する権利を有しています ソフトウェアをインストールして使用する前に Readme ファイル リリースノート および最新のユーザドキュメントを確認してください これらは 次のトレンドマイクロ Web サイトから入手できます http://downloadcenter.trendmicro.com/index.php?regs=jp

More information

WLAR-L11G-L/WLS-L11GS-L/WLS-L11GSU-L セットアップガイド

WLAR-L11G-L/WLS-L11GS-L/WLS-L11GSU-L セットアップガイド の特長や 動作環境を説明します プロバイダ契約について の特長 動作環境 各部の名称とはたらき 設定ユーティリティについて 第 章 はじめにお読みください 動作確認プロバイダや最新の情報は のホームページからご覧いただけます は次の通りです を使ってインターネットをご利用になるためには 以下の条件を満たしたプロバイダと契約してください ルータを使用して 複数台のパソコンをインターネットに接続できるプロバイダ

More information

DataKeeper for Windows リリースノート

DataKeeper for Windows リリースノート DataKeeper for Windows リリースノート Version 7.4.2 (Version 7 Update 4 Maintenance 2) 重要 本製品をインストールまたは使用する前に 必ずこのドキュメントをお読みください! このドキュメントには インストール時とその前後に留意すべき重要な項目に関する情報が記載されています はじめに SteelEye DataKeeper Cluster

More information

ごあいさつ このたびは ESMPRO/AC Advance マルチサーバオプション Ver3.6(1 ライセンス ) をお買い上げ頂き 誠にありがとうございます 本書は お買い上げ頂きましたセットの内容確認 セットアップの内容 注意事項を中心に構成されています ESMPRO/AC Advance マ

ごあいさつ このたびは ESMPRO/AC Advance マルチサーバオプション Ver3.6(1 ライセンス ) をお買い上げ頂き 誠にありがとうございます 本書は お買い上げ頂きましたセットの内容確認 セットアップの内容 注意事項を中心に構成されています ESMPRO/AC Advance マ NEC Express5800 シリーズ ESMPRO /AC Advance マルチサーバオプション Ver3.6 1 ライセンス セットアップカード 1 ごあいさつ このたびは ESMPRO/AC Advance マルチサーバオプション Ver3.6(1 ライセンス ) をお買い上げ頂き 誠にありがとうございます 本書は お買い上げ頂きましたセットの内容確認 セットアップの内容 注意事項を中心に構成されています

More information

Microsoft Word - SQL Server 2005 セットアップ手順書.doc

Microsoft Word - SQL Server 2005 セットアップ手順書.doc Microsoft SQL Server のインストールについて (Wonderware 製品と使用する場合 ) はじめに この技術情報は Wonderware 製品と共に使用される場合の推奨される Microsoft SQL Server 2005 インストール手順書です ここでは Historian(IndustrialSQL Server) や InTouch Alarm DB Logger

More information

Mindjet MindManager Version 9 for Windows サービスパック 2 リリースノート : 2011 年 4 月 20 日

Mindjet MindManager Version 9 for Windows サービスパック 2 リリースノート : 2011 年 4 月 20 日 Mindjet MindManager Version 9 for Windows サービスパック 2 : 2011 年 4 月 20 日 MindManager Version 9 for Windows で修正された問題 MindManager 9 ビルド 9.2.545 合計期間が 1 日未満の仕事間の依存関係が 強制的に別の日に開始された 依存する仕事の合計期間が一作業日未満である場合は それらの仕事を同じ日に開始できるようになりました

More information

SAC (Jap).indd

SAC (Jap).indd 取扱説明書 機器を使用する前に本マニュアルを十分にお読みください また 以後も参照できるよう保管してください バージョン 1.7 目次 目次 について...3 ご使用になる前に...3 インストール手順...4 ログイン...6 マネージメントソフトウェアプログラムの初期画面... 7 プロジェクタの検索...9 グループの設定... 11 グループ情報画面... 12 グループの削除... 13

More information

Microsoft Word - PCOMM V6.0_FAQ.doc

Microsoft Word - PCOMM V6.0_FAQ.doc 日本 IBM システムズ エンジニアリング メインフレーム サーバー部 2012 年 3 月 目次 1 サポートされる環境について... 3 1.1 接続先ホスト (System z, IBM i) の OS のバージョンに制約がありますか?... 3 1.2 PCOMM を導入する PC のスペックの推奨はありますか?... 3 1.3 PCOMM は Windows 7 に対応していますか?...

More information

REX-USB56 「FAX送信」編 第6.0版

REX-USB56 「FAX送信」編 第6.0版 OS 付属ソフトの設定から まで REX-USB56 2016 年 3 月第 6.0 版 Windows 10 Vista の場合の場合 付属の FAX ソフトの設定など詳細は Microsoft 社にお問い合せください 1. FAX の設定をする 1-1. 1-3. 1 ツール をクリック 2 すべてのアプリ をクリック 2 FAX の設定 をクリック 1 スタート をクリック 1-2. 1-4.

More information

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

ITdumpsFree   Get free valid exam dumps and pass your exam test with confidence ITdumpsFree http://www.itdumpsfree.com Get free valid exam dumps and pass your exam test with confidence Exam : C9530-001J Title : IBM Integration Bus v10.0, Solution Development Vendor : IBM Version :

More information

障害管理テンプレート仕様書

障害管理テンプレート仕様書 目次 1. テンプレート利用の前提... 2 1.1 対象... 2 1.2 役割... 2 1.3 受付区分内容と運用への影響... 2 1.4 プロセス... 2 1.5 ステータス... 3 2. テンプレートの項目... 5 2.1 入力項目... 5 2.2 入力方法および属性... 6 2.3 他の属性... 7 3. トラッキングユニットの設定... 8 3.1 メール送信一覧...

More information

2. セットアップ手順の開始 セットアップ手順を進める前に OS をインストールするパーティションのサイズを決定して ください システムをインストールするパーティションのサイズは 次の計算式から求めること ができます インストールに必要なサイズ + ページングファイルサイズ + ダンプファイルサイズ

2. セットアップ手順の開始 セットアップ手順を進める前に OS をインストールするパーティションのサイズを決定して ください システムをインストールするパーティションのサイズは 次の計算式から求めること ができます インストールに必要なサイズ + ページングファイルサイズ + ダンプファイルサイズ 大切に保管してください Express5800/ R320a-M4, R320a-E4 Windows Server 2008 32bit インストール手順書 表記対象製品に Windows Server 2008 Enterprise 32-bit(x86) Edition をインストールする手順について説明します Windows Server 2008 Enterprise 32-bit(x86)

More information

TeamViewer 9マニュアル – Wake-on-LAN

TeamViewer 9マニュアル – Wake-on-LAN TeamViewer 9 マニュアル Wake-on-LAN バージョン 9.2-12/2013 TeamViewer GmbH Jahnstraße 30 D-73037 Göppingen www.teamviewer.com 目次 1 Wake-on-LAN のバージョン情報... 3 2 要件... 4 3 Windows のセットアップ... 5 3.1 BIOS の設定... 5 3.2

More information

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ ツールニュース RENESAS TOOL NEWS 2014 年 03 月 24 日 : 140324/tn1 統合開発環境 CubeSuite+ V2.02.00 への バージョンアップのお知らせ 統合開発環境 CubeSuite+ を V2.01.00 から V2.02.00 へバージョンアップしました 1. アップデート対象バージョン CubeSuite+ 共通部分 V1.00.00~V1.03.00

More information

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月 SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月 本書およびその内容は SIOS Technology Corp.( 旧称 SteelEye Technology, Inc.) の所有物であり 許可なき使用および複製は禁止されています SIOS Technology Corp. は本書の内容に関していかなる保証も行いません

More information

proventia_site_protector_sp8_sysreq

proventia_site_protector_sp8_sysreq SiteProtector 2.0 Service Pack 8.x システム要件 2010 年 7 月 26 日 SiteProtector 2.0 Service Pack 8.x システム要件... 1 Service Pack 8.1 - SiteProtector システム要件... 1 Service Pack 8.1 仮想環境... 1 Service Pack 8.1 - Express

More information

Syslog、SNMPトラップ監視の設定

Syslog、SNMPトラップ監視の設定 AdRem NetCrunch 8 参考資料 NetCrunch は AdRem Software が開発し所有する監視ソフトウェアである 株式会社情報工房は日本における総販売代理店である 2015 Johokobo, Inc. 目次 1. SYSLOG SNMP トラップ監視の概要... 3 2. SYSLOG SNMP トラップ監視の設定方法... 3 2.1. NETCRUNCH オプションの設定...

More information

IBM Internet Security Systems NTFS ファイルシステム必須 一覧の 以後にリリースされた Service Pack (Release 2 等は除く ) は特に記載の無い限りサポートいたします メモリ 最小要件 512MB 推奨要件 1GB 最小要件 9GB 推奨要件

IBM Internet Security Systems NTFS ファイルシステム必須 一覧の 以後にリリースされた Service Pack (Release 2 等は除く ) は特に記載の無い限りサポートいたします メモリ 最小要件 512MB 推奨要件 1GB 最小要件 9GB 推奨要件 SiteProtector 2.0 Service Pack 9.0 システム要件 2012 年 2 月 13 日 SiteProtector 2.0 Service Pack 9.0 システム要件... 1 Service Pack 9.0 - SiteProtector システム要件... 1 Service Pack 9.0 仮想環境... 1 Deployment Manager のインストール要件...

More information

スライド 1

スライド 1 7.2 機種情報 7.2.1 機種情報読出し 機種情報読出し要求 ( 上位システム 厨房機器 ) o. 1 2 3 4 5 6 7 8 9 10 R K sp sp sp sp 0 0 0 1 命令コード部要求機種コマンド拡張部分 機器 o( 右詰 ) 長さ 6 4 機種情報読出し応答 ( 上位システム 厨房機器 ) o. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

More information

各 SAQ (v3.2.1 版 ) を適用すべきカード情報取扱い形態の説明 / JCDSC 各 SAQ の 開始する前に の部分を抽出したものです カード情報の取り扱い形態が詳しく書かれていますから 自社の業務形態に適合する SAQ タイプを検討してください 適合しない部分が少し

各 SAQ (v3.2.1 版 ) を適用すべきカード情報取扱い形態の説明 / JCDSC 各 SAQ の 開始する前に の部分を抽出したものです カード情報の取り扱い形態が詳しく書かれていますから 自社の業務形態に適合する SAQ タイプを検討してください 適合しない部分が少し 各 SAQ (v3.2.1 版 ) を適用すべきカード情報取扱い形態の説明 2019.2.10 / JCDSC 各 SAQ の 開始する前に の部分を抽出したものです カード情報の取り扱い形態が詳しく書かれていますから 自社の業務形態に適合する SAQ タイプを検討してください 適合しない部分が少しでもある場合は その SAQ を用いることはできません 判断に迷う場合は アクワイアラーや QSA コンサルタントに相談してください

More information

2 台の N-PE 上でのアクセス リングの終端

2 台の N-PE 上でのアクセス リングの終端 APPENDIX E この付録では アクセスリンクがダウンした場合に備えた冗長性のために 2 台の N-PE 上でアクセスリングを終端する方法について説明します 次の事項について説明します 概要 (P.E-1) 2 台の N-PE を使用した NPC アクセスリングの設定 (P.E-3) FlexUNI/EVC サービス要求での N-PE 冗長性の使用 (P.E-3) MPLS サービス要求での N-PE

More information

Windows Server 2003 Service Pack 適用手順書

Windows Server 2003 Service Pack 適用手順書 CLUSTERPRO X 1.0 for Windows Windows Server 2003 Service Pack 適用手順書 第 1 版 2007 年 5 月 21 日 本手順書では CLUSTERPRO X 環境における Windows Server 2003 Service Pack 1/2 の適用方法を説明します 以降 特に記述のない場合 Service Pack は Windows

More information

Microsoft Word - SAQタイプ別の説明 _Ver3.2.docx

Microsoft Word - SAQタイプ別の説明 _Ver3.2.docx 各 SAQ (v3.2 版 ) を適用すべきカード情報取扱い形態の説明 2017.7.1/ JCDSC 各 SAQ の 開始する前に の部分を抽出したものです カード情報の取り扱い形態が詳しく書かれていますから 自社の業務形態に適合する SAQ タイプを検討してください それでも判断に迷う場合は アクワイアラーや QSA コンサルタントに相談してください SAQ A カード会員データの取り扱いは すべて認証済みのサードパーティーに外部委託しており

More information

Scripting Tools for Windows PowerShell リリースノート

Scripting Tools for Windows PowerShell リリースノート Scripting Tools for Windows PowerShell リリースノート BIOS コマンドレット v1.0.0.1 部品番号 : 823062-192 2016 年 4 月第 1 版 Copyright 2015-2016 Hewlett Packard Enterprise Development LP. 本書の内容は 将来予告なしに変更されることがあります Hewlett

More information

新しいモビリティの設定

新しいモビリティの設定 新しいモビリティについて, 1 ページ 新しいモビリティの制約事項, 2 ページ GUI, 2 ページ CLI, 4 ページ 新しいモビリティについて 新しいモビリティは Cisco Catalyst 3850 シリーズ スイッチおよび Cisco 5760 シリーズ ワイヤレ ス LAN コントローラなどのワイヤレス コントロール モジュール WCM を使用した統合アクセ ス コントローラと互換性のあるコントローラを有効にします

More information

2. 目的 1RationalRose を利用する場合にプログラム仕様書としての最低限必要な記述項目を明確にする 2 プログラム仕様書として記載内容に不足がない事をチェックする 3UML の知識があるものであれば 仕様書の内容を理解できること 4Rose にて入力した内容を SoDaWord を利用

2. 目的 1RationalRose を利用する場合にプログラム仕様書としての最低限必要な記述項目を明確にする 2 プログラム仕様書として記載内容に不足がない事をチェックする 3UML の知識があるものであれば 仕様書の内容を理解できること 4Rose にて入力した内容を SoDaWord を利用 プログラム仕様書 (UML 表記法 ) ガイドライン 本仕様書に UML(Rational Rose 使用 ) を用いてプログラム仕様書を作成する際のガイドラインを記す 1. ドキュメントの様式について 1 ドキュメントは制御単位で作成する 2 表紙 及び変更履歴は SWS にて指定されたものを付加すること 3 下記の目次内で指定している UML 図 記述項目は必須項目とする 4SoDa にてドキュメントを出力する場合は

More information

Syslog、SNMPトラップ監視の設定

Syslog、SNMPトラップ監視の設定 AdRem NetCrunch 10 参考資料 NetCrunch は AdRem Software が開発し所有する監視ソフトウェアである 株式会社情報工房は日本における総販売代理店である 2018 Johokobo, Inc. 目次 1. SYSLOG SNMP トラップ監視の概要... 1 2. SYSLOG SNMP トラップ監視の設定方法... 1 2.1. NETCRUNCH オプションの設定...

More information

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ) CHAPTER 2 アプリケーションインスペクションの特別なアクション ( インスペクションポリシーマップ ) モジュラポリシーフレームワークでは 多くのアプリケーションインスペクションで実行される特別なアクションを設定できます サービスポリシーでインスペクションエンジンをイネーブルにする場合は インスペクションポリシーマップで定義されるアクションを必要に応じてイネーブルにすることもできます インスペクションポリシーマップが

More information

Hik-Connect アカウントにデバイスを追加する方法ユーザーは Hik-Connect APP ウェブポータル ivms4500 アプリまたは ivms クライアント経由で Hik-Connect 機能を有効にすることができます 注 : iv

Hik-Connect アカウントにデバイスを追加する方法ユーザーは Hik-Connect APP   ウェブポータル ivms4500 アプリまたは ivms クライアント経由で Hik-Connect 機能を有効にすることができます 注 : iv 概要 Hik-Connect は 動的ドメイン名サービスとアラームプッシュ通知サービスを統合した Hikvision によって導入された新しいサービスです これは デバイスがインターネットに接続するための簡単な方法を提供します このマニュアルは Hik-Connect サービスを追加する方法をユーザーに示すためのガイドです 注 :: ユーザーエクスペリエンスを向上させるために ルーターとデバイスの両方で

More information

VERITAS Backup Exec for Windows Servers Management Pack for Microsoft Operations Manager ガイド

VERITAS Backup Exec for Windows Servers Management Pack for Microsoft Operations Manager ガイド WHITE PAPER VERITAS TM Servers Microsoft Operations Manager 管理パックガイド VERITAS Servers Microsoft Operations Manager 管理パックガイド 目次 はじめに...3 Windows Servers - MOM 管理パックの展開...4 セットアップと環境構成...4 テクニカルリファレンス...4

More information

ソフトウェアの説明

ソフトウェアの説明 CHAPTER 2 この章では Cisco Edge Craft とその機能の概要について説明します 2.1 概要 Cisco Edge Craft は ネットワーク要素を 1 つずつ運用状態にする場合に使用します Cisco Edge Craft でできるのは ネットワーク要素に保存されている情報の表示と その情報に関する操作だけです Cisco Edge Craft のグラフィカルユーザインターフェイス

More information

Quartus II クイック・スタートガイド

Quartus II クイック・スタートガイド ALTIMA Corp. Quartus II クイック スタートガイド ver.3.0 2010 年 8 月 ELSENA,Inc. 目次 1. はじめに... 3 2. Quartus II の基本操作フロー... 3 3. Quartus II の基本操作... 4 ステップ 1. プロジェクトの作成... 4 ステップ 2. デザインの作成... 4 ステップ 3. ファンクション シミュレーション...

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果

More information

Intel MPI Library Linux

Intel MPI Library Linux インテル MPI ライブラリ Linux* 版 v1.0 GOLD インストール ガイド 重要 製品をインストールするには 有効なライセンス ファイルが必要です 製品をインストールする前に 本書を必ずお読みいただき 有効なライセンス ファイルを入手してください 詳しくは 1 ページの インストールの前に 製品の登録が必要です をご参照ください エクセルソフト株式会社 www.xlsoft.com インテル

More information

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携 Cisco CSS 11000 HTTP キープアライブと ColdFusion サーバの連携 目次 概要 HTTP ヘッダーについて HTTP HEAD メソッドと HTTP GET メソッドの違いについて ColdFusion サーバの HTTP キープアライブへの応答方法 CSS 11000 で認識される HTTP キープアライブ応答もう 1 つのキープアライブ URI と ColdFusion

More information

Virtex-6 Clocking

Virtex-6 Clocking Spartan-6 クロックリソース Proprietary to PALTEK CORPORATION 1 AGENDA はじめに クロックネットワーク クロックマネージメントタイル (CMT) 使用例 2 AGENDA はじめに クロックネットワーク クロックマネージメントタイル (CMT) 使用例 3 高速なクロッキング 新型アプリケーションには複雑なクロック要件が必要 : 高速クロック信号

More information

はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します 但し前提条件として Sandbox 本番環境共に SkyVisualEditor がインストールされ

はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します 但し前提条件として Sandbox 本番環境共に SkyVisualEditor がインストールされ Sandbox から本番環境への移行手順 - Visualforce page Apex Class のデプロイ - Ver 2.1.0 2017 年 6 月 21 日 株式会社テラスカイ 1 / 15 はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します

More information

レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管

レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管 レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管理情報の英小文字対応 ~ 管理ホスト情報の表示 グループ情報と詳細情報の表示 ~ 検索条件設定時の一覧画面の操作

More information

Crucial Client SSDでのファームウェアアップデート手順

Crucial Client SSDでのファームウェアアップデート手順 Crucial Client SSD でのファームウェアアップデート手順 概要このガイドを使うことにより パーソナルコンピューティング環境に ( 以下本文書ではホストシステムという ) インストールされた Crucial SSD でファームウェアアップデートを実行することがきます このガイドでは 2 つのアップデート方法を説明します 方法 1:Crucial Storage Executive ソフトウェアを介したオンラインアップデート

More information

付録

付録 Cisco HyperFlex ノードの設置 1 ページ Cisco UCS ファブリック インターコネクトのセット アップ 2 ページ WinSCP を使用してインストーラ VM に iso と img ファイルをアップロードするには 6 ページ DNS レコード 9 ページ HX サービス アカウント パスワードの更新 9 ページ Cisco HyperFlex ノードの設置 HyperFlex

More information

FTP 共有を有効にする あらかじめ作成済みの共有フォルダーを FTP 共有可能にする設定を説明します 共有フォルダーの作成方法は 画面で見るマニュアル をご覧ください ファイル数の多い共有フォルダーを変更すると 変更が完了するまでに時間がかかる場合があります また 変更が完了するまで共有フォルダー

FTP 共有を有効にする あらかじめ作成済みの共有フォルダーを FTP 共有可能にする設定を説明します 共有フォルダーの作成方法は 画面で見るマニュアル をご覧ください ファイル数の多い共有フォルダーを変更すると 変更が完了するまでに時間がかかる場合があります また 変更が完了するまで共有フォルダー ネットワーク接続ハードディスク HDL-H シリーズ FTP 事前に本パッケージの追加をおこなってください パッケージの追加方法は 画面で見るマニュアル をご覧ください INDEX 本製品での FTP 共有機能... 1 FTP 共有を有効にする... FTP 共有設定をする... FTP クライアントから接続する... 3 一括登録をする... 5 ログ お知らせ一覧... 5 本製品での FTP

More information

Windows Graphic Loader for Label Printers

Windows Graphic Loader for Label Printers Windows Graphic Loader for Label Printers ユーザーズマニュアル Version 1.0.3.0 商標 版権 CITIZEN は シチズン時計株式会社の登録商標です Windows は 米国 Microsoft Corporation の米国及びその他の国における登録商標です Datamax は Datamax-O'Neil の登録商標です Zebra は Zebra

More information

HDC-EDI Base deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について

HDC-EDI Base deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について 2014 年 2 月 6 日 ( 改訂日 :2018 年 1 月 9 日 ) お客様各位 株式会社セゾン情報システムズ HULFT 事業部 HDC-EDI Base detradeii 送受信機能起動時における Java8 のセキュリティ警告とその回避策について HDC-EDI Base detradeⅡ で送受信を行う環境に Java8 を採用することにより 正常に動作しなくなる事 象が発生しておりますので

More information

Microsoft Word - ssVPN MacOS クライアントマニュアル_120版.doc

Microsoft Word - ssVPN  MacOS クライアントマニュアル_120版.doc Mac OS クライアントソフトマニュアル 第 1.10/1.20 版 2014 年 1 月 7 日 - 目次 - はじめに... 3 1 動作環境... 3 2 インストール... 3 3 ssvpn の起動... 3 4 システム環境設定 ( Mac OS X 10.8, 10.9 )... 5 4.1 システム環境設定手順... 5 5 接続先設定 編集 削除... 8 5.1 新規接続先を設定する...

More information

HDC-EDI Base Web/deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について

HDC-EDI Base Web/deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について 2014 年 2 月 6 日 ( 改訂日 :2016 年 12 月 14 日 ) お客様各位 株式会社セゾン情報システムズ HULFT 事業部 HDC-EDI Base Web/deTradeII 送受信機能起動時における Java8 のセキュリティ警告とその回避策について HDC-EDI Base Web/deTradeⅡで送受信を行う環境に Java8 を採用することにより 正常に動作しなくなる事象が発生しておりますので

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション SATA Host/Device IP Core HDD や SSD などのストレージを使用した システム開発に最適な FPGA 向けIntelliProp 社製 SATA IP Core IntelliProp 社製 SATA Host / Device IP Coreは SATA Revision 3.0 Specificationに準拠しており 1.5Gbps 3.0Gbps 6.0Gbpsに対応しています

More information

御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに 対応 ios デバイス ダウンロードおよびライセンス認証 ダウンロード ライセ

御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに 対応 ios デバイス ダウンロードおよびライセンス認証 ダウンロード ライセ 低遅延デコーダ HD-SDI 出力タイプ LD-610 ipad 版デコーダ 取扱説明書 Ver. 0.1 御使用の前に必ず本取扱説明書をよく読んで理解して 安全の為の指示に従って下さい もし 不明点が有れば販売店か弊社におたずね下さい 目次 1. はじめに... 2 1.1 対応 ios デバイス... 2 2. ダウンロードおよびライセンス認証... 3 2.1 ダウンロード... 3 2.2

More information

Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上

Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上 Oracle ホワイト ペーパー 2010 年 2 月 Oracle Web Cache による Oracle WebCenter Spaces パフォーマンスの向上 免責事項 以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント

More information

Silk Central Connect 15.5 リリースノート

Silk Central Connect 15.5 リリースノート Silk Central Connect 15.5 リリースノート Micro Focus 575 Anton Blvd., Suite 510 Costa Mesa, CA 92626 Copyright Micro Focus 2014. All rights reserved. Silk Central Connect は Borland Software Corporation に由来する成果物を含んでいます,

More information

Office 365 管理の 効率的なツールキット 文書番号 ZJTM 発行日 2018 年 12 月 28 日 0

Office 365 管理の 効率的なツールキット 文書番号 ZJTM 発行日 2018 年 12 月 28 日   0 Office 365 管理の 効率的なツールキット 文書番号 ZJTM181227101 発行日 2018 年 12 月 28 日 https://www.manageengine.jp/products/admanager_plus/ 0 目次 Office 365 を正しく管理するために... 1 ライセンス管理... 2 ユーザープロビジョニング... 4 グループレポート... 8 ユーザーレポート...

More information

Oracle Enterprise Managerシステム監視プラグイン・インストレーション・ガイドfor Juniper Networks NetScreen Firewall, 10gリリース2(10.2)

Oracle Enterprise Managerシステム監視プラグイン・インストレーション・ガイドfor Juniper Networks NetScreen Firewall, 10gリリース2(10.2) Oracle Enterprise Manager システム監視プラグイン インストレーション ガイド for Juniper Networks NetScreen Firewall 10g リリース 2(10.2) 部品番号 : B28468-01 原典情報 : B28041-01 Oracle Enterprise Manager System Monitoring Plug-in Installation

More information

ログインおよび設定

ログインおよび設定 この章は 次の項で構成されています の概要, 1 ページ admin パスワードのリセット, 3 ページ パスワードと共有秘密のガイドライン, 3 ページ 共有秘密のリセット, 4 ページ の概要 Cisco UCS Central GUI および Cisco UCS Central CLI の両方を使用して Cisco UCS Central にログ インできます 両方のインターフェイスを使用すると

More information

Android用 印刷プラグイン Canon Print Service マニュアル

Android用 印刷プラグイン Canon Print Service マニュアル JPN 目次 はじめに... ii 本書の読みかた... iii Canon Print Service でできること... 1 対応プリンター / 複合機について... 2 対応 OS/ 端末について... 3 プリント仕様について... 4 印刷前に必要な設定... 5 サービスの有効化... 6 IP アドレスを指定してデバイスを探索する... 7 ファイルの印刷手順... 8 プリント設定を変更する...

More information

UIOUSBCOM.DLLコマンドリファレンス

UIOUSBCOM.DLLコマンドリファレンス UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :contact@allbluesystem.com 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2

More information

ハンドシェイク障害または証明書検証エラーによる NGFW サービス モジュール TLS の中断

ハンドシェイク障害または証明書検証エラーによる NGFW サービス モジュール TLS の中断 ハンドシェイク障害または証明書検証エラーによる NGFW サービスモジュール TLS の中断 目次 概要前提条件要件使用するコンポーネント背景説明問題解決策問題解決策関連情報 概要 このドキュメントでは 復号化がイネーブルにされた Cisco Next-Generation Firewall(NGFW) のサービスモジュールを使用して HTTPS ベースの Web サイトにアクセスする場合の特定の問題のトラブルシューティングを行う方法について説明します

More information

MC3000一般ユーザ利用手順書

MC3000一般ユーザ利用手順書 WakeOnLAN コントローラ MC3000 一般ユーザ利用手順書 第 2.3 版 NTT テクノクロス株式会社 改版履歴 2011 年 06 月 06 日... 第 2.0 版 2011 年 11 月 11 日... 第 2.1 版 2012 年 05 月 17 日... 第 2.2 版 2013 年 10 月 31 日... 第 2.3 版 目次 1 章. はじめに... 1-1 1-1) 事前の準備...

More information

形B5Z 画像型人感センサ(HVC-F) コマンド仕様書

形B5Z 画像型人感センサ(HVC-F) コマンド仕様書 目次 1 はじめに... 2 1-1 B5Z-001001 とは...2 2 基本フロー... 3 2-1 通信フロー...3 2-2 ホスト装置サンプル処理フロー...4 2-3 TCP/IP コマンドと Modbus/TCP コマンド...6 3 コマンド仕様... 7 3-1 コマンドフォーマット...7 3-1-1 TCP/IP コマンド / レスポンスフォーマット... 7 3-1-2 Modbus/TCP

More information