インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

17.6.1. 送信データFIFOバッファーと受信データFIFOバッファー

各EMACコンポーネントには、関連付けられている送信データおよび受信データのFIFOバッファーがあり、アプリケーション・システム・メモリーとEMAC間でフレームを調整します。RXおよびTX FIFOバッファーはそれぞれ、16KBのデュアル・ポート・メモリーです。バッファーはどちらも、ジャンボフレームをサポートするように設計されています。FIFOバッファーワードは次のように構成されています。

  • データ: 32ビット
  • サイドバンド
    • バイト・イネーブル: 2ビット
    • EOF (End of frame): 1ビット
    • 誤り訂正コード (ECC): 7ビット

FIFO RAMはそれぞれ、シングルビット・エラーの検出と訂正、およびダブルビット・エラーの検出を行うECCコントローラーによってサポートされています。ECCコントローラーには、メモリーデータの初期化専用のハードウェア・ブロックがあります。また、エラーイベントをログに記録し、シングルエラーおよびダブルエラーのイベントが発生した際に割り込みを生成することができます。ECC RAMの機能の詳細に関しては、ECC (エラー検出訂正) コントローラーの内容を参照してください。

TX FIFO

TX FIFOからEMACにデータが送信される時間は、選択されている転送モードによって異なります。
  • カットスルー・モード: TX FIFOのバイト数がコンフィグレーションされているしきい値レベルを超えると (もしくは、しきい値を超える前にフレームの終わりが書き込まれると)、データがTX FIFOからポップされます。しきい値レベルは、レジスター0 (Bus Mode Register) のTTCビットを使用してコンフィグレーションされます。
    注: 96バイト (1000Mbpsモードの場合は548バイト) を超えるバイトがEMACにポップされると、TX FIFOコントローラーはそのスペースを解放し、DMAがそのスペースを使用できるようにします。再試行はできません。
  • ストアアンドフォワード・モード: 次の条件に1つ以上当てはまる場合に、データはTX FIFOからポップされます。
    • 完全なフレームがFIFOに格納されている
    • TX FIFOがほぼフルの状態である

アプリケーションは、レジスター6 (Operation Mode Register) のビット20 (FTF) を設定することで、TX FIFOのすべてのコンテンツをフラッシュすることができます。このビットはセルフクリアであり、FIFOポインターをデフォルト状態に初期化します。EMACへのフレーム転送中にFTFビットが設定されると、FIFOは空とみなされるため、それ以降の転送は停止します。この停止により、アンダーフロー・イベントが発生してラントフレームが送信され、対応するステータスワードがDMAに転送されます。

半二重モードの動作において、フレームの終わりの前に衝突が発生した場合、フレームの終わりが転送される前に再試行が送信されます。再送信が通知されると、MACはFIFOから再度フレームをポップします。

注: ソフトウェアによってチェックサムのオフロード機能が有効になっている場合は、3800バイト以下のパケットのみがサポートされます。

RX FIFO

EMACで受信したフレームは、RX FIFOにプッシュされます。RX FIFOのフィルレベルは、コンフィグレーションされている受信しきい値を超えた際にDMAに通知されます。このしきい値は、レジスター6 (Operation Mode Register) のRTCフィールドによってプログラミングされます。RX FIFOからDMAにデータが送信される時間は、RX FIFOのコンフィグレーションによって異なります。
  • カットスルー・モード (デフォルト): 64バイトまたはデータの完全なパケットをFIFOが受信すると、データはFIFOからポップされ、完全なパケットが転送されるまでDMAに送信されます。EOFの転送が完了すると、ステータスワードがポップされ、DMAに送信されます。
  • ストアアンドフォワード・モード: フレームは、RX FIFOに完全に書き込まれた後にのみ読み出されます。このモードは、レジスター6 (Operation Mode Register) のRSFビットを設定することでコンフィグレーションされます。
EMACからEOFデータを受信する前にRX FIFOがフルになった場合、オーバーフローが宣言されてフレーム全体 (ステータスワードを含む) がドロップされ、DMAのオーバーフロー・カウンター (レジスター8のMissed Frame and Buffer Overflow Counter Register) がインクリメントします。これは、レジスター6 (Operation Mode Register) のForward Error Frame (FEF) ビットが設定されている場合にも当てはまります。このようなフレームの開始アドレスがすでに転送されている場合、フレームの残りの部分はドロップされ、ダミーEOFがステータスワードとともにFIFOに書き込まれます。ステータスは、オーバーフローのために部分的なフレームを示します。このようなフレームの場合、Frame Lengthフィールドは無効です。RX FIFOがストアアンドフォワード・モードで動作するようにコンフィグレーションされている際に、受信したフレームの長さがFIFOのサイズを超える場合は、オーバーフローが発生し、そのようなフレームはすべてドロップされます。
注: ストアアンドフォワード・モードでは、長さが3800バイト以下のフレームを受信する場合にのみ、オーバーフロー・エラーとフレームのドロップが回避されます。