例 - 1.2 日本語

FEC 付き Versal ACAP 統合 600G Interlaken サブシステム 製品ガイド (PG371)

Document ID
PG371
Release Date
2023-01-19
Version
1.2 日本語

次に、セグメント AXI4-Stream サイクルの例として、SOP、DAT (パケット途中のデータ)、EOP、IDLE (バスにデータなし) のさまざまな組み合わせを示します。

最初の 2 つの例では、セグメント AXI4-Stream バス は 512 ビット幅で、各セグメントは 128 ビット (16 バイト) 幅と想定します。ここでは、TX 方向について説明します。RX 方向の動作もこれと同様ですが、TX とは異なり、RX ではオーバーヘッドがなく、BurstShort の要件を満たす必要がないため、たとえば 2 つの SOP と 2 つの EOP を使用して、1 サイクルでより多くのパケットを転送できます。

次の表に、可能な TX セグメント AXI4-Stream バス サイクルを示します。これらの例では、BurstMax は 256、BurstShort は 64 に設定されています。網掛けの項目はそれぞれ、異なるパケットからの異なるバーストを表しています。

かっこ内の数字から、同じパケットに対応するセグメントを特定できます。

表 1. 512 ビット AXI4-Stream バスのパケット モードの例 (BurstMax = 256、BurstShort = 64)
クロック サイクル 1 2 3 4 5 6 7 8 9 10
seg0 SOP(0) IDLE SOP(1) SOP(2) DAT(2) DAT(3) IDLE DAT(3) SOP(4) IDLE
seg1 DAT(0) IDLE DAT(1) DAT(2) EOP(2) DAT(3) IDLE DAT(3) DAT(4) IDLE
seg2 DAT(0) IDLE DAT(1) DAT(2) SOP(3) DAT(3) IDLE DAT(3) DAT(4) IDLE
seg3 EOP(0) IDLE EOP(1) DAT(2) DAT(3) DAT(3) IDLE EOP(3) DAT(4) IDLE
c0_tx_rdyout 1 1 1 1 1 1 0 1 0 0
c0_tx_ovfout 0 0 0 0 0 0 0 0 0 0
表 2. 512 ビット AXI4-Stream バスのバースト インターリーブ モードの例 (BurstMax = 256、BurstShort = 64)
クロック サイクル 1 2 3 4 5 6 7 8 9 10
seg0 DAT(0) DAT(0) DAT(0) DAT(0) DAT(1) DAT(1) DAT(1) DAT(0) SOP(2) IDLE
seg1 DAT(0) DAT(0) DAT(0) DAT(1) DAT(1) DAT(1) IDLE DAT(0) DAT(2) IDLE
seg2 DAT(0) DAT(0) DAT(0) DAT(1) DAT(1) DAT(1) IDLE DAT(0) DAT(2) IDLE
seg3 DAT(0) DAT(0) DAT(0) DAT(1) DAT(1) DAT(1) IDLE EOP(0) DAT(2) IDLE
c0_tx_rdyout 1 1 1 1 1 1 0 1 0 0
c0_tx_ovfout 0 0 0 0 0 0 0 0 0 0

エンハンスト スケジューリング アルゴリズムは、『Interlaken Protocol Definition, Revision 1.2』に定義されています。上記の例は、BurstMin = 64 バイトのエンハンスト アルゴリズムを使用するスケジューラと同じです。

次に、それぞれ 16 バイトの 16 セグメントで構成される 2048 ビット TX AXI4-Stream バスの例を示します。

表 3. 2048 ビット AXI4-Stream バスのパケット モードの例 (BurstMax = 256、BurstShort = 64)
クロック サイクル 1 2 3 4 5 6 7 8 9 10
seg0 DAT(0) DAT(2) DAT(4) DAT(5) SOP(6) IDLE DAT(6) DAT(7) SOP(9) IDLE
seg1 DAT(0) EOP(2) DAT(4) DAT(5) DAT(6) IDLE DAT(6) DAT(7) DAT(9) IDLE
seg2 DAT(0) SOPEOP(3) DAT(4) DAT(5) DAT(6) IDLE DAT(6) DAT(7) DAT(9) IDLE
seg3 DAT(0) IDLE DAT(4) DAT(5) DAT(6) IDLE DAT(6) DAT(7) EOP(9) IDLE
seg4 DAT(0) IDLE DAT(4) DAT(5) DAT(6) IDLE DAT(6) DAT(7) SOP(10) IDLE
seg5 DAT(0) IDLE DAT(4) DAT(5) DAT(6) IDLE DAT(6) EOP(7) DAT(10) IDLE
seg6 DAT(0) SOP(4) DAT(4) EOP(5) DAT(6) IDLE DAT(6) SOP(8) EOP(10) IDLE
seg7 DAT(0) DAT(4) DAT(4) IDLE DAT(6) IDLE DAT(6) DAT(8) IDLE IDLE
seg8 DAT(0) DAT(4) EOP(4) IDLE DAT(6) IDLE DAT(6) DAT(8) SOP(11) IDLE
seg9 EOP(0) DAT(4) SOP(5) IDLE DAT(6) IDLE DAT(6) DAT(8) EOP(11) IDLE
seg10 SOP(1) DAT(4) DAT(5) IDLE DAT(6) IDLE EOP(6) DAT(8) IDLE IDLE
seg11 DAT(1) DAT(4) DAT(5) IDLE DAT(6) IDLE SOP(7) DAT(8) IDLE IDLE
seg12 EOP(1) DAT(4) DAT(5) IDLE DAT(6) IDLE DAT(7) DAT(8) SOPEOP(12) IDLE
seg13 IDLE DAT(4) DAT(5) IDLE DAT(6) IDLE DAT(7) EOP(8) IDLE IDLE
seg14 SOP(2) DAT(4) DAT(5) IDLE DAT(6) IDLE DAT(7) IDLE IDLE IDLE
seg15 DAT(2) DAT(4) DAT(5) IDLE DAT(6) IDLE DAT(7) IDLE IDLE IDLE
tx_rdyout 1 1 1 1 1 0 1 1 1 0
tx_ovfout 0 0 0 0 0 0 0 0 0 0
注記: 上記の表の内容は次のとおりです。
サイクル 1
セグメント 10 ~ 12 の 48 バイトのパケットが Interlaken インターフェイスの 64 バイトの BurstShort 要件を満たすように、セグメント 13 が IDLE になっています。
サイクル 2
セグメント 2 はパケットの開始と終了の両方を含む 16 バイト以下のパケットです。Interlaken インターフェイスの 64 バイトの BurstShort 要件を満たすように、3 つの IDLE が後続します。
サイクル 4
EOP セグメントに続いて、セグメント 7 ~ 15 が IDLE になっています。サイクル 8 も同じで EOP に続いてセグメント 14 から IDLE になっています。
サイクル 6
c0_tx_rdyout で通知される TX バック プレッシャーに応答して、すべてのセグメントが IDLE になっています。
サイクル 9
4 つの小さいパケットが 1 サイクルで転送されます。これらのパケットが 16 バイト セグメントをいくつ充填するかに基づいて、64 バイトの BurstShort 値に合わせて IDLE セグメントでパディングする必要があります。
表 4. 2048 ビット AXI4-Stream バスのバースト インターリーブ モードの例 (BurstMax = 256、BurstShort = 64)
クロック サイクル 1 2 3 4 5 6 7 8 9 10 11
seg0 SOP(0) SOP(1) DAT(1) DAT(2) DAT(4) DAT(6) DAT(6) SOP(9) DAT(10) DAT(11) IDLE
seg1 DAT(0) DAT(1) DAT(1) DAT(2) DAT(4) DAT(6) DAT(6) EOP(9) DAT(10) EOP(11) IDLE
seg2 DAT(0) DAT(1) DAT(1) DAT(2) EOP(4) DAT(6) DAT(6) IDLE DAT(10) DAT(10) IDLE
seg3 DAT(0) DAT(1) DAT(1) EOP(2) SOPEOP(5) DAT(6) DAT(6) IDLE DAT(10) DAT(10) IDLE
seg4 DAT(0) DAT(1) DAT(1) SOP(3) IDLE DAT(6) DAT(6) SOP(10) SOP(11) DAT(10) IDLE
seg5 DAT(0) DAT(1) DAT(1) DAT(3) IDLE DAT(6) DAT(6) DAT(10) DAT(11) DAT(10) IDLE
seg6 DAT(0) DAT(1) EOP(1) DAT(3) IDLE DAT(6) DAT(6) DAT(10) DAT(11) DAT(10) IDLE
seg7 DAT(0) DAT(1) DAT(0) EOP(3) SOP(6) SOP(7) DAT(6) DAT(10) DAT(11) DAT(10) IDLE
seg8 DAT(0) DAT(1) DAT(0) SOP(4) DAT(6) DAT(7) DAT(6) DAT(10) DAT(11) DAT(10) IDLE
seg9 DAT(0) DAT(1) DAT(0) DAT(4) DAT(6) DAT(7) EOP(6) DAT(10) DAT(11) DAT(10) IDLE
seg10 DAT(0) DAT(1) DAT(0) DAT(4) DAT(6) EOP(7) IDLE DAT(10) DAT(11) DAT(10) IDLE
seg11 DAT(0) DAT(1) DAT(0) DAT(4) DAT(6) SOP(8) IDLE DAT(10) DAT(11) DAT(10) IDLE
seg12 DAT(0) DAT(1) DAT(0) DAT(4) DAT(6) DAT(8) IDLE DAT(10) DAT(11) DAT(10) IDLE
seg13 DAT(0) DAT(1) DAT(0) DAT(4) DAT(6) EOP(8) IDLE DAT(10) DAT(11) DAT(10) IDLE
seg14 DAT(0) DAT(1) EOP(0) DAT(4) DAT(6) IDLE IDLE DAT(10) DAT(11) DAT(10) IDLE
seg15 DAT(0) DAT(1) SOP(2) DAT(4) DAT(6) DAT(6) IDLE DAT(10) DAT(11) DAT(10) IDLE
tx_rdyout 1 1 1 1 1 1 1 1 1 0 0
tx_ovfout 0 0 0 0 0 0 0 0 0 0 0
注記: 上記の表の内容は次のとおりです。
サイクル 1
この例に示すパケットの一部は、バースト インターリーブ モードのパケットです。たとえば、サイクル 1 で開始されるパケットには、256 バイトのバーストと、サイクル 3 の 128 バイトの EOP バーストがあります。これらの 2 つのバーストの間に、もう 1 つのパケットが転送されています。このパケットはサイクル 2 で開始され、サイクル 3 のセグメント 6 で終了します。
サイクル 2
このサイクルで開始されるパケットに見られるように、バースト インターリーブ モードでも、割り込みなしでパケットを送信することは可能です。
サイクル 5
Interlaken インターフェイスの BurstShort 違反を避けるために、48 バイト未満のパケットについては同じ規則を守る必要があります。この場合、セグメント 4 ~ 6 は IDLE でなければなりません。
サイクル 11
AXI4-Stream TX インターフェイスは、c0_tx_rdyout によって通知されるバック プレッシャーに応答し、すべてのセグメントで IDLE を駆動する必要があります。