CodingBox ドキュメント

MII、RMII、GMII、RGMII:PHY へのパラレルインターフェース

パラレルのメディア非依存インターフェースは、数センチメートルの PCB 上で MAC と銅 PHY チップを接続します——ルーター、小型スイッチ、アクセスポイント、産業用コントローラー、そして RJ45 を持つあらゆる組み込みボードの内部で使われています。これらがトランシーバーケージに達することはありませんが、そこに達するすべてのものにとっての基準点です。SGMII は「シリアル化された GMII」、XGMII は「10G の GMII」であり、銅 SFP 内部の PHY はそのうちの1つを内部的に話します。このページでは、MII、RMII、 GMII、RGMII のピン、クロック、タイミング、RGMII の遅延問題、インバンドステータス、 MDIO 管理、そして各インターフェースが発生させる障害について説明します。

MII(IEEE 802.3 Clause 22)

項目
レート10 と100 Mb/s
データ4ビット TXD[3:0]、4ビット RXD[3:0]
クロックTX_CLK と RX_CLK はPHY 側から:25 MHz(100M)、2.5 MHz(10M)
制御TX_EN、TX_ER、RX_DV、RX_ER、CRS(キャリアセンス)、COL(コリジョン)
管理MDC、MDIO(共有)
信号数データ/制御16 + 管理2
電圧レベル5 V/3.3 V TTL
到達距離数 cm。MAC 1つにつき PHY 1つ

マイクロコントローラーや FPGA では今も使われていますが、ピン数の点で RMII に取って代わられています。

RMII(RMII Consortium spec v1.2)

項目
レート10 と100 Mb/s
データ2ビット TXD[1:0]、RXD[1:0]
クロック単一のREF_CLK 50 MHz。MAC と PHY で共有。発振器、MAC、または PHY(PHY クロック出力モード)のいずれかが供給元
制御TX_EN、CRS_DV(キャリアセンスとデータ有効の多重化)、RX_ER(任意)
信号数7–9
10 Mb/s モード各ニブルを50 MHz で10回繰り返す
到達距離cm 単位

50 MHz の基準クロックのトポロジーは、RMII の典型的な不具合の原因です。PHY が外部クロックを期待しているのに、SoC は PHY がクロックを駆動すると想定していると、リンク LED は正常なのにインターフェースが機能しないという状態になります。

GMII(Clause 35)

項目
レート1000 Mb/s。10/100 では MII シグナリングにフォールバック
データ8ビット TXD[7:0]、RXD[7:0]
クロック送信はMAC からの GTX_CLK 125 MHz。受信は PHY からの RX_CLK 125 MHz。PHY からの TX_CLK は10/100 フォールバック時のみ使用
制御TX_EN、TX_ER、RX_DV、RX_ER、CRS、COL
信号数24 + 管理用
電圧レベル2.5 V(多くは3.3 V 許容)
到達距離cm 単位。125 MHz シングルデータレートではタイミングバジェットが厳しい

現在では主にオンチップまたは FPGA のインターフェースです。ボード上では RGMII がその座を奪いました。

RGMII(Reduced GMII、HP/Marvell specification v1.3 および v2.0)

項目
レート10/100/1000
データ4ビット TXD[3:0] と RXD[3:0]、ダブルデータレート:立ち上がりエッジで下位ニブル、立ち下がりエッジで上位ニブル
クロックTXC 125 MHz(MAC から)、RXC 125 MHz(PHY から)。100M/10M では25/2.5 MHz
制御TX_CTL(立ち上がりで TX_EN、立ち下がりで TX_EN xor TX_ER)、RX_CTL(RX_DV/RX_DV xor RX_ER)
信号数12
電圧レベル2.5 V(v1.3)、1.5 V HSTL または1.8 V(v2.0 オプション)。一部の PHY では3.3 V
到達距離長さを揃えた配線で10–15 cm 以下

遅延の問題

RGMII では、受信側でクロックがデータエッジより1.5–2.0 ns 後に到達する必要があります(セットアップ/ホールドウィンドウ)。これを実現する方法は3つあります。

モード遅延を加える主体デバイスツリーの phy-mode備考
PCB 遅延(v1.3)約5 cm の追加クロック配線rgmii古典的だが壊れやすい
PHY 内部遅延(RGMII-ID、v2.0)PHY が TX と RX のクロックに2 ns を加えるrgmii-id現在最も一般的
MAC/SoC 内部遅延SoC が加えるMAC 側の遅延レジスタを伴う rgmii
混合片方向のみ PHY が対応rgmii-txidrgmii-rxid片側のみが対応している場合

遅延を二重に加えたり(PCB と PHY の両方)、まったく加えなかったりすると、RGMII 特有の障害が発生します——1G ではリンクアップするものの CRC エラーが出るかトラフィックが流れず、100M では動作する(100M は周期が40 ns あり、スキューを許容できるため)。PHY の遅延レジスタまたは phy-mode を変更して修正します。

インバンドステータス

アイドル時、PHY は RXD[3:0] 上にリンク、速度、デュプレックスを出力し、MAC が MDIO の読み取りなしにクロック分周器を再設定できるようにします:RXD[0] がリンク、 RXD[2:1] が速度(00 = 10、01 = 100、10 = 1000)、RXD[3] がデュプレックスです。一部の MAC はこれを無視して MDIO ポーリングに頼ります。想定の食い違いがあると、PHY 側ではアップ、MAC 側ではダウンというリンク状態になります。

TBI と RTBI

Ten-Bit Interface:MAC/PCS と外部 SerDes または光 PHY との間で、8b/10b 符号化された1000BASE-X シンボルを伝送します(125 MHz で10ビット、RTBI は DDR で5ビット)。ボード上ではすでに廃れており、そのシリアル版の後継が1000BASE-X/SGMII です(SGMII とシリアルギガビット)。

比較

インターフェースピン数(データ + 制御)クロック最大レート電圧一般的な用途
MII16PHY からの25 MHz100M3.3/5 VMCU、レガシー
RMII7–9共有の50 MHz100M3.3 V組み込み SoC + PHY
SMIIポートあたり2–3125 MHz100M3.3 Vマルチポート PHY(Cisco)
GMII24125 MHz(MAC 送信/PHY 受信)1G2.5 VFPGA、オンチップ
RGMII12125 MHz DDR1G2.5/1.8/1.5 Vボード上の SoC ↔ PHY
SGMII4(2ペア)埋め込み1.25 GBd1G(10/100 は複製で対応)CMLSoC ↔ PHY、SFP ケージ

PHY 管理:MDIO/MDC

項目Clause 22Clause 45
アドレッシング5ビットの PHY アドレス、5ビットのレジスタ(32レジスタ)5ビットのポート、5ビットのデバイス(PMA/PMD、PCS、PHY XS、DTE XS、AN、ベンダー)、16ビットのレジスタ
主要レジスタ0:制御(リセット、速度、AN 有効化、ループバック)、1:ステータス(リンク、AN 完了)、2–3:PHY ID(OUI + モデル)、4:AN アドバタイズメント、5:リンクパートナー能力、9/10:1000BASE-T 制御/ステータス、17以降:ベンダー(RGMII 遅延、LED)1.x:PMA、3.x:PCS、7.x:AN、30.x/31.x:ベンダー
速度MDC ≤ 2.5 MHz(実際にはもっと速いことが多い)同じ
Linux ツールmii-tool -v eth0phytool read eth0/1/0ethtool eth0。ドライバーは phylibphylink 経由phytool read eth0/1:1/0

これは、MDIO ではなく I²C で管理されるプラガブルモジュールとは対照的です(2線式インターフェース)。銅 SFP 内部の PHY は例外です——多くの設計では、そのモジュールの I²C 上のセカンダリアドレスを通じて MDIO レジスタにアクセスでき、ベンダーはこれを使って10/100 フォールバックとオートネゴシエーションの挙動を設定します。

一般的な PHY とそのインターフェース

PHY ファミリーインターフェース一般的なボード
Marvell 88E1111/88E1512/88E1510GMII、RGMII、SGMII、TBIルーター、銅 SFP モジュール(88E1111)
Realtek RTL8211F/RTL8201RGMII/RMIISBC、コンシューマー向けルーター
Microchip KSZ9031/KSZ8081/LAN8720RGMII/RMII/RMII産業用、MCU ボード
TI DP83867/DP83848RGMII、SGMII/MII、RMII産業用
Broadcom BCM54xxxRGMII、SGMII、QSGMIIエンタープライズスイッチ(クアッド/オクタル PHY)
Marvell 88E1543/88E1548QSGMII クアッド48ポートアクセススイッチ

インターフェースごとの障害

症状インターフェース原因
一度もリンクしない。PHY ID は正常に読めるRMIIREF_CLK の方向/供給元の不一致
100M は動作するが1G はトラフィックなし/CRC エラーRGMII遅延モード(ID)が誤り、または二重になっている
PHY の LED はリンクアップだが MAC はダウンと報告RGMII/SGMII片側でインバンドステータスが無効、または MDIO ポーリングがない
1G でパケットの半分が失われるGMII/RGMII配線長のスキュー、誤った電圧レベル
MDIO 上に PHY が見つからないすべて誤った PHY アドレス(ストラップピン)、MDIO プルアップの欠落
速度が10/100 に固定されるすべてAN アドバタイズメントレジスタの制限、ケーブル、または1G 非対応の phy-mode

CodingBox では

このページの内容は、モジュールの EEPROM を経由するものではありません——銅 SFP は例外で、その内部 PHY(一般的には88E1111クラスの部品)は、CodingBox が読み取るのと同じ I²C の先にあります。銅モジュールが1G では動作するのに10/100 では動作しない場合、答えは A0h の識別情報バイトではなく、その PHY の設定とホスト側の SGMII/ 1000BASE-X モードにあります(銅イーサネットと DACSGMII とシリアルギガビット)。


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。