インテルのみ表示可能 — GUID: oga1519645575547
Ixiasoft
インテルのみ表示可能 — GUID: oga1519645575547
Ixiasoft
2.11.1. ユーザーロジックへのTX MACインターフェイス
MAC+PCSバリエーションのイーサネット インテルFPGA IP向けEタイル ハードIP TXクライアント・インターフェイスでは、Avalon-STプロトコルを採用しています。Avalon-STプロトコルは、同期ポイントツーポイントの単方向インターフェイスで、データストリームのプロデューサー (ソース) とデータのコンシューマー (シンク) を接続します。このインターフェイスの主なプロパティーは次の通りです。
- パケット開始 (SOP) 信号およびパケット終了 (EOP) 信号でフレーム転送を区切ります。
- SOPは常にMSB内になければなりません。これにより、着信データの解釈と処理が簡単になります。
- valid信号によってソースからシンクに信号を限定します。
- シンクでは、ソースにバックプレッシャーをかけるためにready信号を使用します。ソースは通常、シンクからのready信号のディアサートに応答します。そのために、同じデータがシンクによって受け入れられるまで駆動します。 Ready latencyで定義するのは、ready信号のアサートとディアサートの関係や、データ転送がreadyであると見なされるサイクルです。
クライアントはソースとして機能し、TX MACは送信方向のシンクとして機能します。
信号名 |
幅 | 説明 |
---|---|---|
i_sl_clk_tx i_sl_clk_tx[n-1:0] i_clk_tx |
各チャネルで1ビット | チャネルを駆動するIPコアのTXクロック。 |
i_sl_tx_data i_sl_tx_data[n-1:0] i_tx_data |
64 ビット (10G/25G) 512 ビット (100G) |
TXデータ。 イーサネット インテルFPGA IP向けEタイル ハードIPでは、9バイト未満の着信パケットは処理しません。そのようなフレームが、TXクライアント・インターフェイスに到達しないようにしてください。IPコアでは、9から13バイトの着信パケットをエラーとしてマークするために、送信時にError Controlバイトをパケットに追加します。 各TXデータパケットの送信は、中間のIDLEサイクルなしで行ってください。このため、アプリケーションでは、かならず単一パケットのデータの提供が、連続したクロックサイクルでできるようにしてください。データが使用できない場合は、データをデザインにバッファーしてSOP信号をアサートする必要があります。これは、TXデータで送信するパケットデータが使用可能であるか、または時間どおりに使用できるようになることが確認できた時点で行います。 |
i_sl_tx_valid i_sl_tx_valid[n-1:0] i_tx_valid |
各チャネルで1ビット | アサートされると、TXデータ信号は有効になります。この信号のアサートは、同じパケットに対するパケット開始信号とパケット終了信号のアサートの間に連続して行ってください。 |
i_sl_tx_empty i_sl_tx_empty[n-1:0] i_tx_empty |
各チャネルでビット (10G/25G) 6ビット (100G) |
EOP信号がアサートされたときのTXデータの空のバイト数を示します。 |
i_sl_tx_startofpacket i_sl_tx_startofpacket[n-1:0] i_tx_startofpacket |
各チャネルで1ビット | アサートされると、TXデータによるパケット内データの最初のクロックサイクルの保持を示します (パケットの開始) 。アサートするのはパケットごとに1クロックサイクルの間だけです。 SOP信号がアサートされると、TXデータのMSBによってパケットの開始が駆動されます。 |
i_sl_tx_endofpacket i_sl_tx_endofpacket[n-1:0] i_tx_endofpacket |
各チャネルで1ビット | アサートされると、TXデータによるパケット内データの最後のクロックサイクルの保持を示します (パケットの終了) 。アサートするのはパケットごとに1クロックサイクルの間だけです。 一部の正当なパケットでは、SOPおよびEOP信号は、同じクロックサイクルでアサートされます。 |
o_sl_tx_ready o_sl_tx_ready[n-1:0] o_tx_ready |
各チャネルで1ビット | アサートされると、MACによるデータのReady latencyクロックサイクルの受け入れが現在のサイクルの後にできることを示します。 IPコアでは、ready信号をクロックサイクル <n> でアサートして、クロックサイクル <n + Ready latency> がreadyサイクルであることを示します。クライアントによるデータ転送は、readyサイクル中にのみできます。IPコアによるreadyのディアサートが、TX MACクライアント・インターフェイス上でのパケット転送中に行われると、クライアントでは、TXデータのデータを停止する必要があります。 ready信号は、MACによる通常の動作モードでのデータの受信準備ができていることを示します。ただし、ready信号はリセット後は適切な表示ではないことがあります。パケットの送信が、イーサネット・リンクで確実にパケットを送信できるようになる前に行われないようにするには、アプリケーションによるTXクライアント・インターフェイス上のパケット送信は、 o_tx_lanes_stable 信号のアサートまでは行われないようにしてください。 |
i_sl_tx_error i_sl_tx_error[n-1:0] i_tx_error |
各チャネルで1ビット | EOPサイクルで (EOP信号がアサートされている間に) アサートされると、IPコアに指示して、パケットへのエラー挿入をイーサネット・リンクへのエラー送信前に行います。 この信号では、パケットの選択的無効化時にクライアントをサポートします。これはまた、テストとデバッグの機能でもあります。ループバック・モードでは、このパケットが戻ると、誤った形式のパケットとしてIPコアによって認識されます。 |
i_sl_tx_pause i_sl_tx_pause[n-1:0] i_tx_pause |
各チャネルで1ビット | アサートされると、IPコアに指示して、PAUSE XOFFフレームをイーサネット・リンクで送信します。立ち上がりエッジによって要求がトリガーされます。この信号を1の値に維持する必要があるのは、IPコアによるPAUSE期間の終了までです。 IPコアによるPAUSE XOFFフレームの送信は、現在のインフライトTXパケットの処理が完了した後、またそれ以降は、定期的に i_tx_pause 信号をディアサートするまで行います。 i_tx_pause 信号をディアサートすると、IPコアでは、イーサネット・リンク上のPAUSE XONフレームを送信します。
注: 10G/25Gチャネルの場合、 i_sl_tx_pause 信号を205 ns以上保持して、要求がMACでキャプチャされるようにしてください。
この信号が機能するのは、標準のイーサネット・フロー・コントロールがイネーブルになっている場合のみです。
注: 標準イーサネット・フロー・コントロールがイネーブルなのは、RTLパラメーター flow_control の値が、 sfc 、 sfc_no_xoff 、 both 、または both_no_xoff のいずれかの場合です。RTLパラメーターの値をIPコア・インスタンスで指定しなかったが、IPコア・バリエーションを生成して、 Stop TX traffic when link partner sends pause の値をYesまたはNoに設定した場合、一時停止フロー・コントロールもイネーブルになります。
|
i_sl_tx_pfc i_sl_tx_pfc[n-1:0] i_tx_pfc |
各チャネルで8 ビット |
ビットがアサートされると、IPコアに指示して、イーサネット・リンク上のPFC XOFFフレームの送信を対応するプライオリティー・ キューに対して行います。立ち上がりエッジによって要求がトリガーされます。この信号を1の値に維持する必要があるのは、IPコアによるPAUSE期間の終了までです。IPコアによるPFC XOFFフレームの送信は、現在のインフライトTXパケットの処理が完了した後、またそれ以降は定期的に、 i_tx_pfc ビットをディアサートするまで行います。そのビットをディアサートすると、IPコアでは、PFC XONフレームを対応するプライオリティー・ キューのイーサネット・リンク上に送信します。
注: 10G/25Gチャネルの場合、 i_sl_tx_pause 信号を205 ns以上保持して、要求がMACでキャプチャされるようにしてください。
この信号が機能するのは、プライオリティー・フロー・コントロールがイネーブルの場合のみです。
注: プライオリティー・フロー・コントロールがイネーブルなのは、RTLパラメーター flow_control の値が、 pfc 、 pfc_no_xoff 、 both 、または both_no_xoff のいずれかの場合です。RTLパラメーターの値をIPコア・インスタンスで指定しなかったが、IPコア・バリエーションを生成して、 Stop TX traffic when link partner sends pause の値をYesまたはNoに設定した場合、プライオリティー・フロー・コントロールもイネーブルになります。
|
i_sl_tx_skip_crc i_sl_tx_skip_crc[n-1:0] i_tx_skip_crc |
各チャネルで1ビット | TX MACによる現在のTX MACクライアント・インターフェイス・パケットの処理方法を指定します。この信号を使用して、特定のパケットに対する送信元の挿入を一時的にオフにし、最小パケットサイズへのパディングおよびCRCの挿入というデフォルト動作をオーバーライドします。 この信号がアサートされている場合は、TX MACに指示して、CRCの挿入、パディングバイトの追加、送信元アドレス挿入の実装はいずれも行わないようにします。この信号を使用して、TXデータ信号のデータにCRC、パディングバイト (該当する場合) 、および正しい送信元アドレスが含まれていることを示します。 この信号がアサートされず、送信元アドレスの挿入がイネーブルになっている場合は、TX MACに指示して、送信元アドレスを上書きします。MACでは、新しい送信元アドレスを TXMAC_SADDR レジスターからコピーします。 この信号がアサートされていない場合は、送信元アドレスの挿入がイネーブルどうかにかかわらず、TX MACでは、パディングバイトを必要に応じて挿入し、CRCをパケットに挿入します。 クライアントでは、同じ値をこの信号で維持することが必要です。これを (SOP信号をアサートするサイクルからEOP信号をアサートするサイクルまでの) パケットの期間中続けます。 |
上の図で示しているのは、TX MACクライアント・インターフェイスを使用したデータ送信方法です。このインターフェイスは、Avalon-STインターフェイス仕様に準拠しています。
- Data valid (i_sl_tx_valid) は、パケットの開始から終了までHighに保ち、パケットの外側ではLowにしてください。
- パケットの開始は常に i_tx_data のバイトの左端からです。(SOPは整列) 。
- Ready latencyの設定には、パラメーター・エディターを使用します。
- o_tx_ready がディアサートされたら、 i_tx_data を一時停止します。その期間は、o_tx_ready がディアサートされるのと同じサイクルの間です。Ready latency は後で開始されます。この例では、Ready latencyは1です。したがって、 o_tx_ready が1サイクルの間ディアサートされたサイクル後、 i_tx_data は1サイクルの間一時停止します。
- フレームが終了すると、 i_tx_empty の設定は、 i_tx_data の未使用のバイト数になります。開始は右 (バイト0) からです。
- この例では、パケットの最後のサイクルの i_tx_data には空のバイトが3つあります。
- 最後のサイクルの最小バイト数は1です。
100G i_tx_data |
10G/25G i_sl_tx_data |
MACフィールド | 注 |
---|---|---|---|
[511:504] | [63:56] | Dest Addr[47:40] | 送信先アドレスの最初のオクテットは、開始フレーム区切り文字 (SFD) の後に続きます。 |
[503:496] | [55:48] | Dest Addr[39:32] | |
[495:488] | [47:40] | Dest Addr[31:24] | |
[495:480] | [39:32] | Dest Addr[23:16] | |
[479:472] | [31:24] | Dest Addr[15:8] | |
[471:464] | [23:16] | Dest Addr[7:0] | |
[463:456] | [15:8] | Src Addr[47:40] | Source Address Insertion をオンにすると、コンテンツは txmac_saddr に置き換えられます。 i_tx_skip_crc がHighの場合は例外です。 |
[455:448] | [7:0] | Src Addr[39:32] | |
[447:440] | [63:56]' | Src Addr[31:24] | |
[439:432] | [55:48]' | Src Addr[23:16] | |
[431:424] | [47:40]' | Src Addr[15:8] | |
[423:416] | [39:32]' | Src Addr[7:0] | |
[415:408] | [31:24]' | Length/Type[15:0] | |
[407:400] | [23:16]' | Length/Type[7:0] | |
[399:0] | [15:0]' | … |
i_tx_error または i_sl_tx_error ポートを使用すると、パケットが完了したときにパケットをエラーとしてマークすることができます。
コアでは、カットスルー・インターフェイスを使用するため、与えられたパケットデータの送信をできるだけ早く開始します。コアによるエラーの検出がパケットの開始後だった場合、例えばブリッジング・システムでレシーバーでもカットスルー・インターフェイスを使用している場合は、 i_tx_error を使用してパケットを無効にします。 i_tx_error をテストに使用してエラーパケットを生成すると、リンクのもう一方の端でエラーパケットの拒否ができることが確認できます。
エラーが発生したフレームを無効にするには、そのフレームを i_tx_endofpacketで終了し、 i_tx_error をアサートします。フレームが良好な場合は、 i_tx_error をディアサートします。