Eタイル ハードIPユーザーガイド: イーサネット インテルFPGA IP向けEタイル ハードIPおよび EタイルCPRI PHYインテルFPGA IP

ID 683468
日付 5/17/2019
Public
ドキュメント目次

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は送信方向のシンクとして機能します。

表 21.  Avalon-ST TXクライアント・インターフェイス信号すべてのインターフェイス信号はTXクロックによってクロッキングされます。信号名は標準のAvalon-ST信号で、そのわずかな違いによってバリエーションを示します。例 :
  • 単一の10GE/25GEチャネルを持つバリアントの場合 : i_sl_tx_data
  • 1つ以上のチャネルを持つバリアントの場合 : i_sl_tx_data[n-1:0]
  • 単一の100GEチャネルを持つバリアントの場合 : i_tx_data

信号名

説明

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 の値が、 sfcsfc_no_xoffboth 、または 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 の値が、 pfcpfc_no_xoffboth 、または 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信号をアサートするサイクルまでの) パケットの期間中続けます。

図 33. TX Avalon-ST MACクライアント・インターフェイスを使用したデータ送信
注: シングル・レーン・ポート (i_sl_*) の送信動作はマルチ・レーン・ポートと同等です。

上の図で示しているのは、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です。
図 34. イーサネット・パケットのフィールドとフレーム境界 Preamble Passthroughをパラメーター・エディターでオフにした場合は、 i_tx_data の書き込みは、次に示す通りに行ってください。これは、MACに提示されるデータの最初のサイクル用です。
注: 10G/25Gチャネルの場合、複数のサイクルがヘッダーデータの書き込みには必要です。
表 22.  i_tx_data内のTX MACフィールドの位置 (プリアンブル・パススルーがディスエーブルの場合)10G/25Gでは、複数の転送サイクルがヘッダーデータに必要です。10G/25G i_sl_tx_data 列の (') 記号は、その次のサイクルでの転送を表します。
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 ポートを使用すると、パケットが完了したときにパケットをエラーとしてマークすることができます。

図 35. i_tx_errorの使用

コアでは、カットスルー・インターフェイスを使用するため、与えられたパケットデータの送信をできるだけ早く開始します。コアによるエラーの検出がパケットの開始後だった場合、例えばブリッジング・システムでレシーバーでもカットスルー・インターフェイスを使用している場合は、 i_tx_error を使用してパケットを無効にします。 i_tx_error をテストに使用してエラーパケットを生成すると、リンクのもう一方の端でエラーパケットの拒否ができることが確認できます。

エラーが発生したフレームを無効にするには、そのフレームを i_tx_endofpacketで終了し、 i_tx_error をアサートします。フレームが良好な場合は、 i_tx_error をディアサートします。

注: i_tx_error を使用しても、リモートCRCの堅牢なテストは提供されません。これは、破損したCRCビットに依存するのではなく、MIIエラー制御バイトを使用してエラーを示すからです。