インテルのみ表示可能 — GUID: wme1602804513154
Ixiasoft
インテルのみ表示可能 — GUID: wme1602804513154
Ixiasoft
4.3.1.3. Avalon® Streaming RXインターフェイス
アプリケーション層では、 Avalon® Streaming RXインターフェイスを介してRタイルPCI Express IPコアのトランザクション層からデータを受信します。Rタイルの場合、rx_st_ready_i は常にHighでなければなりません。アプリケーション・ロジックのバッファー制御の処理は、RXフロー・コントロール・インターフェイスで行う必要があります。詳細については、RXフロー・コントロール・インターフェイス を参照してください。
このインターフェイスでは、サイクルあたり4つの rx_st_sop_o信号と4つの rx_st_eop_o 信号をサポートします。ただしこれは、RタイルIPが1x16コンフィグレーションで動作している場合です。
Configuration Mode 0 (1x16) で、ダブル幅コンフィグレーションの場合、コアのセグメントは4つあります。各セグメントには、256ビットのデータ (pX_rx_stN_data_o[255:0])、128ビットのヘッダー (pX_rx_stN_hdr_o[127:0])、および32ビットのTLPプリフィクス (pX_rx_stN_prefix_o[31:0]) があります。このコアを1x16モードでコンフィグレーションすると、データバスは1024ビットバスになります。
Configuration Mode 1 (2x8) で、ダブル幅コンフィグレーションの場合も、 Avalon® Streamingセグメントは4つです (x8ポートごとに2つ)。
パリティーの生成には、32:1 XORが使われます (つまり、32ビットのデータ、ヘッダー、またはプリフィクスごとにパリティービットが1つあります)。
- パケットの開始 (pX_rx_stN_sop_o) は、セグメント (_stN_) のいずれでも発生する可能性があります。
- 単一のTLPが複数のセグメントにまたがっている場合、アプリケーション・ロジックによるTLPの処理は、セグメント・インデックスの順序 (セグメントst0 → st1 → st2 → st3 → st0) で行う必要があります。
- 複数のTLPが同じクロックサイクルで到着する場合、アプリケーション・ロジックによるTLPの処理は、セグメント・インデックスの順序 (セグメントst0 → st1 → st2 → st3 → st0) で行う必要があります。
- 1クロックサイクルにあるSOP (pX_rx_stN_sop_o) は、最大3つです。次の表で示しているのはに、セグメント全体で可能な組み合わせです。
表 54. 1クロックサイクルでの3つの pX_rx_stN_sop_o 可能な組み合わせ pX_rx_st0_sop_o pX_rx_st0_eop_o pX_rx_st1_sop_o pX_rx_st1_eop_o pX_rx_st2_sop_o pX_rx_st2_eop_o pX_rx_st3_sop_o pX_rx_st3_eop_o 1'b1 1'b1 1'b1 1'b1 1'b1 1'b1 1'b0 1'b0 1'b1 1'b1 1'b1 1'b1 1'b1 1'b0 1'b0 1'b1 1'b1 1'b1 1'b1 1'b1 1'b1 1'b0 1'b0 1'b0 1'b1 1'b1 1'b1 1'b0 1'b0 1'b1 1'b1 1'b1 1'b1 1'b1 1'b1 1'b0 1'b0 1'b1 1'b1 1'b0 1'b1 1'b0 1'b0 1'b1 1'b1 1'b1 1'b1 1'b1 1'b1 1'b0 1'b0 1'b1 1'b1 1'b1 1'b1 1'b0
信号名 | 方向 | 説明 | EP/RP/BP | クロックドメイン |
---|---|---|---|---|
pX_rx_stN_data_o[W:0] (ここでは X = 0、1、2、3 (IPコア番号)。Wはコアによって異なります。 N = 0、1、2、3 (セグメント番号)) |
出力 | これは受信データバスです。アプリケーション層では、このバス上のIPコアのトランザクション層からデータを受け取ります。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_hdr_o[127:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | これは受信ヘッダーです。これは、PCIe仕様のTLPヘッダー形式に従います。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_prefix_o[31:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | これは、受信した最初のTLPプリフィクスでです。これは、PCIe仕様のTLPプリフィクス形式に従います。PASIDがサポートされています。 これらの信号は、対応する rx_st_sop_o がアサートされたときに有効です。 TLPプリフィクスでは、ビッグ・エンディアンの実装を使用します (つまり、Fmtフィールドはビット [31:29] であり、Typeフィールドはビット [28:24] です)。 ある特定のTLPにプリフィクスが存在しない場合、そのdword (Fmtフィールドを含む) はすべてゼロです。 |
EP/RP/BP | coreclkout_hip |
pX_rx_stN_sop_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_valid_o の対応するビットと組み合わせてアサートされると、TLPの最初のサイクルを通知します。 rx_stN_sop_o: アサートされると、rx_stN_data_o[255:0] のTLPの開始を通知します。 例えば、アサートされると、rx_st2_sop_o では、rx_st2_data_o[255:0] のTLPの開始を通知します 。 |
EP/RP/BP | coreclkout_hip |
pX_rx_stN_eop_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_valid_o の対応するビットと組み合わせてアサートされると、TLPの最後のサイクルを通知します。 rx_stN_eop_o: アサートされると、rx_stN_data_o[255:0] のTLPの終了を通知します。 例えば、アサートされると、rx_st2_eop_o では、rx_st2_data_o[255:0] のTLPの開始を通知します。 |
EP/RP/BP | coreclkout_hip |
pX_rx_stN_dvalid_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | これらの信号により、アプリケーション層に入る rx_st_data_o 信号を修飾します。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_hvalid_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | これらの信号により、アプリケーション層に入る rx_stN_hdr_o 信号を修飾します。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_pvalid_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | これらの信号により、アプリケーション層に入る rx_stN_prefix_o 信号を修飾します。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_data_par_o[Z:0] (ここでは X = 0、1、2、3 (IPコア番号)。Zはコアによって異なります。 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_data_o のパリティー信号です。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_hdr_par_o[3:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_hdr_o のパリティー信号です。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_prefix_par_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_prefix_o のパリティー信号です。 | EP/RP/BP | coreclkout_hip |
pX_rx_st_ready_i | 入力 | アプリケーション層がデータを受け入れる準備ができていることを示します。この信号は常に1に設定する必要があります。RX側のフロー・コントロールの処理は、クレジット・コントロール・インターフェイスを介して行われます。 | EP/RP/BP | coreclkout_hip |
pX_rx_stN_empty_o[2:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | rx_stN_eop_o 信号がアサートされるサイクル中に空になっているdwordの数を指定します。rx_stN_eop_o 信号がアサートされない場合は、これらの信号は無効です。 |
EP/RP/BP | coreclkout_hip |
pX_rx_stN_bar_o[2:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | 出力中のTLPのBARを指定します。 これらの出力は、rx_stN_sop_o と rx_stN_valid_o の両方がアサートされる場合に有効です。 |
EP/RP | coreclkout_hip |
pX_rx_stN_vfactive_o (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | アサートされると、これらの信号では、受信したTLPが仮想ファンクションをターゲットにしていることを示します。これらの信号がデアサートされると、受信したTLPは物理ファンクションをターゲットにしていることを示します。また、 rx_stN_pfnum_o 信号はファンクション番号を示します。 これらの信号は、対応する rx_st_sop_o がアサートされたときに有効です。 |
EP/RP | coreclkout_hip |
pX_rx_stN_vfnum_o[10:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | 受信したTLPのターゲットVF番号を指定します。アプリケーションでは、この情報をリクエストとコンプリーションの両方のTLPに使用します。コンプリーションTLPの場合、これらのビットにより、このコンプリーションTLPのリクエスターのVF番号が指定されます。 これらの信号は、rx_st_vf_active_o、および対応する rx_st_sop_o がアサートされている場合に有効です。 |
EP / RP | coreclkout_hip |
pX_rx_stN_pfnum_o[2:0] (ここでは X = 0、1、2、3 (IPコア番号)、 N = 0、1、2、3 (セグメント番号)) |
出力 | 受信したTLPのターゲット物理ファンクション番号を指定します。 これらの信号は、対応する rx_st_sop_o がアサートされたときに有効です。 |
EP/RP | coreclkout_hip |
- クロックサイクル1: アプリケーション・ロジックにより p0_rx_st_ready_i 信号をアサートします。この信号は常にHighに設定する必要があります。RXフロー・コントロールの処理は、アプリケーション・ロジックにより、RXフロー・コントロール・インターフェイスを使用して行う必要があります (詳細については、RXフロー・コントロール・インターフェイス を参照してください)。
- クロックサイクル2:
- 最初のTLP (T0) の開始がセグメント1に到着します。このとき p0_rx_st1_sop_o がアサートされます。
- 信号 p0_rx_st1_hvalid_o がアサートされ、p0_rx_st1_hdr_o バス内の最初のTLP (T0H0) のヘッダーの検証が行われます。
- 信号 p0_rx_st1_dvalid_o がアサートされ、p0_rx_st1_data_o バス内の最初のTLP (T0H0) のヘッダーの検証が行われます。
- この最初のTLP (T0) の終わりはセグメント2にあります。これは、p0_rx_st2_eop_o のアサートによって示されます。
- 信号 p0_rx_st2_dvalid_o がアサートされ、 p0_rx_st2_data_o バス内の最初のTLP (T0D1) のデータの検証が行われます。
- バス p0_rx_st2_empty_o では、p0_rx_st2_data_o バス (T0D1) 内の無効なdwordの数を示します。
- クロックサイクル3:
- 次のTLP (T1) がセグメント1に到着します。これは、p0_rx_st1_sop_o のアサートで示されます。
- 信号 p0_rx_st1_hvalid_o がアサートされ、p0_rx_st1_hdr_o バス内のこのTLP (T1H0) のヘッダーの検証が行われます。
- 信号 p0_rx_st1_dvalid_o がアサートされ、p0_rx_st1_data_o バス内のこのTLP (T1D0) のデータの検証が行われます。
- 信号 p0_rx_st2_dvalid_o がアサートされ、p0_rx_st2_data_o バス内のこのTLP (T1D1) のデータの検証が行われます。
- 信号 p0_rx_st3_dvalid_o がアサートされ、p0_rx_st3_data_o バス内のこのTLP (T1D2) のデータの検証が行われます。
- クロックサイクル4:
- T1 TLPの終わりはセグメント0にあります。これは、p0_rx_st0_eop_o のアサートによって示されます。
- 信号 p0_rx_st0_dvalid_o がアサートされ、p0_rx_st0_data_o バス内のこのTLP (T1D3) のデータの検証が行われます。
- バス p0_rx_st0_empty_o で示されるdwordの数は、p0_rx_st0_data_o バス (T1D3) 内では有効ではありません。
次のTLPは、セグメント1の次のクロックサイクルで到着し、セグメント0で終了します。