Media-independent interface

media-independent interface（MII、媒体独立インタフェース）は、もともとファストイーサネット（100メガビット・イーサネット）の媒体アクセス制御（MAC）ブロックをPHYチップに接続する目的で定義された標準インタフェースである。MII標準はIEEE 802.3uで規定されており、さまざまなタイプのPHYをMACに接続するのに使われる。MIIの存在によって、MACハードウェアを再設計または交換せずとも、多種多様な伝送媒体（ツイストペアケーブル、光ファイバーなど）に接続する各種のPHYデバイスを使用できる。言い換えれば、MIIとはMAC層を「媒体から独立させる」（"media-independent"とする）ためのインタフェースであり、これによってネットワーク信号の伝送媒体とは無関係に、任意のMACを任意のPHYと組み合わせて使える。
MIIは、MACを外部PHYにコネクタを介して接続するときや、同一基板上にあるPHYチップに直接接続するときに使用できる。かつてはMIIバス信号を接続するためのCNRスロット（CNRコネクタ Type B）がPCのマザーボードに搭載されている場合があったが、ネットワーク機能がオンボードで実装されるようになって廃れた。
(MDIO)シリアルバスは、MACとPHYの間で管理情報を転送するMIIのサブセットである。通常は、設定がMDIOインターフェイスを介して変更されない限り、電源投入時のオートネゴシエーションによってPHYと相手方の接続が確立される。
IEEE802.3uで規定されているもともとのMIIは、各方向に1ニブル（=4ビット。送信に4ビット、受信に4ビット）のデータを25 MHzのクロックでネットワーク転送し、100 Mbit/sのスループットを実現している。信号の削減や速度の向上を目的として初期のMIIを拡張したバリエーションとしては、以下のものがある。
標準MII.
標準MIIは以下のレジスタを備えている。
MIIステータスワードは、イーサネットNICがネットワークに接続されているかどうかを検出するために使用される可能性があるため、最も有用なデータである。MIIステータスワードの各ビットの値は以下の意味を持つ。
送信機信号.
送信クロックは、リンク速度（100Mbit/sの場合は25MHz、10Mbit/sの場合は2.5MHz）に基づいてPHYによって生成される自走クロックである。 残りの送信信号は、TX_CLKの立ち上がりエッジで同期してMACによって駆動される。 この構成により、リンク速度を意識せずにMACを動作させることができる。送信可信号は、フレーム送信中はハイに、送信機がアイドル状態のときはローに保持される。
フレーム送信中に1つまたは複数のクロック周期の間送信エラーが発生することがある。これは、フレームが有効であるとして受信されるのを妨げるためにフレームを故意に破壊するよう何らかの目に見える方法でPHYに要求するためである。この機能が使用できない場合、MACは信号を省略することがあり、その場合、信号はPHYに対してローに固定されるべきである。
最近では、送信データラインが特殊用途のシグナリングに使用されていることを示すために、フレーム送信外で送信エラーを発生させる方法が使用されている。具体的には、データ値0b0001（TX_ENがロー、TX_ERがハイに連続的に保持される）を使用して、EEE対応のPHYに低電力モードに入るように要求する。
受信機信号.
最初の7つの受信機の信号は、送信機の信号と全く類似している。ただし、RX_ERはオプションではなく、受信信号が有効データに復号できなかったことを示すために使用される。受信クロックは、フレーム受信中に入力信号から復元される。クロックを復元できないとき（つまり、媒体に信号が流れていないとき）、PHYは代替として自走クロックを提示する必要がある。
受信データ有効信号（RX_DV）は、フレームの開始時にすぐにハイになる必要はないが、受信データにフレーム開始識別子バイトが含まれるようにする必要がある。プリアンブルのいくつかのニブルは失われる可能性がある。
送信と同様に、フレーム外でRX_ERを上げることは特別なシグナリングに使用される。受信に関しては、リンクパートナーがEEE低電力モードにあることを示す0b0001と、「偽のキャリア」表示のための0b1110の2つのデータ値が定義されている。
CRS信号とCOL信号は受信クロックとは非同期であり、半二重モードでのみ意味がありる。送信中、受信中、またはメディアが使用中であると検出された場合は、キャリアセンスがハイになる。衝突が検出されると、衝突が続いている間COLもハイになる。
それに加えて、MACはCOL信号を弱くプルアップし、COLハイとCRSローとの組み合わせ（PHYは決して生成しない）をPHYの不在/切断の表示として使用する。
管理信号.
MDCとMDIOは複数のPHYで共有できる。
制限事項.
インターフェイスには18個の信号が必要で、そのうち2つ（MDIOとMDC）のみが複数のPHYで共有できる。これは、特にマルチポートデバイスにとって問題となる。例えば、MIIを使用する8ポートスイッチでは、8×16 + 2 = 130の信号が必要になる。
RMII.
reduced media-independent interface（RMII）は、PHYとMACを接続するのに必要となる信号の数を減らすために開発された規格である。MIIの規格から以下の4点が変更された。
これらの変更は、RMIIがMIIと比較して約半分の数の信号を使用することを意味する。
MDCとMDIOは複数のPHYで共有できる。
受信機信号と送信機信号は同じREF_CLKを基準にしている。
このインタフェースは、MIIの18個に対して9個の信号を必要とする。9個の内、マルチポートデバイスでは、MDIO、MDC、REF_CLKは共有できるので、各ポートで必要なのは6または7個となる。
RMIIでは50MHzのクロックを必要とし（MIIでは25MHz）、データは1クロックに対し2ビットずつ送信される（MIIでは4ビット）。データは立ち上がりエッジでのみサンプリングされる（つまり、ダブルポンピングされない）。
REF_CLKは、100Mbit/sモードと10Mbit/sモードの両方で、50MHzで動作する。その代わり、10Mbit/sモードでは、送信側（PHYまたはMAC）は10クロックサイクルの間全ての信号を有効にしておく必要があり、受信機（PHYまたはMAC）は10サイクルごとにのみ入力信号をサンプリングする。
制限事項.
インタフェースが全二重モードか半二重モードかを定義する信号はないが、MACとPHYの両方で一致する必要がある。これはシリアルMDIO/MDCインタフェースを介して通信する必要がある。インタフェースが10Mbpsまたは100Mbpsモードのどちらであるかを定義する信号もないため、これもデュプレックス設定と同様に、MDIO/MDCインタフェースを使用して処理する必要がある。RMIIコンソーシアム仕様のバージョン1.2では、MDIO/MDCインタフェースはIEEE 802.3uでMIIに対して定義されているものと同一であると規定している。IEEE 802.3の現在の改訂では、リンクの速度とデュプレックスモードをネゴシエートして設定するための標準MDIO/MDCメカニズムを指定している、古いPHYデバイスは古いバージョンの標準に対して設計されているため、速度とデュプレックスを独自の方法で設定する。RMII規格の将来のバージョンでは、TX_ENとCRS_DVがディアサートされている間にTXD0/TXD1/RXD0/RXD1ピンを介してデータを送信する方法が指定される可能性がある。これにより、MDIO/MDCシリアルリンクをポーリングする必要がなく、リンク速度やデュプレックスなどのパラメータをリアルタイムで伝達できる。
一部のMACが接続されておらずRX_ER信号がない場合（マルチポートスイッチなど）は、CRCを無効にするために一部のPHYでデータを置き換えて対処する。COL信号が欠落している場合は、半二重モードでTX_ENとCRS_DVラインからのデコードされたCRS信号をANDすることによって得られる。これはCRSの定義をわずかに修正すること意味する。MIIでは、CRSはRxとTxフレームの両方でアサートされるが、RMIIではRxフレームのみとなる。これにより、RMIIでは、「キャリアなし」と「キャリア損失」の2つのエラー状態を検出できず、10BASE2や10BASE5などの共有媒体に対応することが困難あるいは不可能になる。
信号レベル.
TTL信号レベルは5Vまたは3.3Vロジックに使用される。高入力しきい値は2.0V、低入力しきい値は0.8Vである。仕様では、入力は5Vに耐える必要があると規定されているが、RMIIインターフェイスを備えた一部の一般的なチップは5Vに耐えられない。半導体業界のトレンドと、両方のICが通常同じボード上にあるという事実から考えると、5V耐性でないのは非常に一般的であり、実際に5Vを駆動するチップはおそらく稀である。5Vに耐えられるのは、主に古いMII専用デバイスに見られる。一方、新しいデバイスは2.5Vと1.8Vの両方のロジックに対応する可能性がある。MACを実装するのに十分なFPGAは、通常5V耐性ではない。
RMII信号は、伝送線路ではなく集中信号として扱われる。終端処理やインピーダンスの制御は不要である。これを可能にするためには、出力ドライブ（したがってスルーレートも）をできるだけ遅くする必要がある（立ち上がり時間1〜5 ns）。ドライバは、最大0.30mのPCBトレースを可能にする25pFの容量を駆動できなければならない。少なくとも規格では、信号を伝送線路として扱う必要はないとしている。ただし、エッジレートが1 nsで約2.7 cmを超えると、伝送線路の影響が重大な問題になる可能性がある。5 nsでは、トレースは5倍長くなる。関連するMII規格のIEEEバージョンは、68Ωのトレースインピーダンスを規定している。
RMII規格ではTX_ENを交互のクロックサイクルでのみサンプリングするように規定していないため、CRS_DVと対称的ではなく、2つのRMII PHYデバイスを背中合わせに接続してリピータを形成することはできない。ただし、これはRMIIモードで補助信号としてデコードされたRX_DVを供給するNational DP83848で可能である。
GMII.
gigabit media-independent interface (GMII)は、媒体アクセス制御(MAC)デバイスと物理層(PHY)の間のインタフェースである。このインタフェースは、受信用と送信用に別々の8ビットデータパスを使用して125MHzでクロックされるデータインタフェースを使用して実装され、最大1000 Mbit/sの速度を定義する。MII仕様に従って、10/100 Mbit/sのフォールバック速度でも動作する。
インタフェース上のデータは、IEEEイーサネット規格を使用してフレーム化されており、プリアンブル、開始フレーム識別子(SFD)、イーサネットヘッダ、ペイロード、巡回冗長検査(CRC)からなる。
GMIIインタフェースは、IEEE 802.3z-1998の1000BASE-Xで第35項として最初に定義され、その後IEEE 802.3-2000以降に組み込まれた。
送信機信号.
PHYがギガビットか10/100 Mbit/sのどちらの速度で動作しているかに応じて、2つのクロックがある。ギガビット速度では、GTXCLKがPHYに供給され、TXD、TXEN、TXER信号はこれに同期する。10/100 Mbit/sの場合、TXCLK（PHYから供給）を使用してこれらの信号を同期する。これは、100 Mbit/s接続では25 MHz、10 Mbit/s接続では2.5 MHzで動作する。受信機のクロックは、受信データから復元されるクロックが1つしかないため、はるかに単純である。従って、GTXCLKとRXCLKはコヒーレントではない。
管理信号.
管理インタフェースはPHYの動作を制御する。それぞれ16ビットを含む32個のアドレスがある。最初の16アドレスには定義済みの使用法があるが、他のアドレスはデバイス固有である。これらのレジスタを使用してデバイスを設定することができ（「ギガビットのみ、全二重」、「全二重のみ」など）、動作モードを決定することができる。
RGMII.
reduced gigabit media-independent interface (RGMII)は、イーサネットMACとPHYとの間の特定のインタフェースを定義する。
RGMIIは、GMIIの半分のデータピン数を使用する。この削減は、1000 Mbit/動作でクロックの立ち上がりエッジと立ち下がりエッジの両方でデータをクロッキングすること、不要な信号（キャリアセンスと衝突表示）を削除することによって実現されている。従って、RGMIIはRX_CTL、RXC、RXD[3:0]、TX_CTL、TXC、TXD[3:0]（12ピン）のみで構成される。
GMIIとは異なり、送信クロック信号は常にTXCライン上でMACによって提供される。ソース同期クロッキングが使用され、（PHYまたはMACによって）出力されるクロック信号はデータ信号と同期している。このため、シンクのセットアップ時間とホールド時間を満たすために、クロック信号に1.5〜2 nsの遅延を追加するようにPCBを設計する必要がある。RGMII v2.0ではオプションの内部遅延(RGMII-ID)を指定しているため、PCB設計者は遅延を追加する必要がない。
これらのデータレートを達成するために、データは1000 Mbit/sでは立ち上がりエッジと立ち下がりエッジで、10/100 Mbit/sでは立ち上がりエッジでのみクロックされる。RX_CTL信号は、立ち上がりエッジでRXDV（データ有効）を、立ち下がりエッジで（RXDVまたはRXER）を伝達する。TX_CTL信号も同様に、立ち上がりエッジでTXENを、立ち下がりエッジで（TXENまたはTXER）を伝達する。これは、1000 Mbit/sと10/100 Mbit/sの両方に当てはまる。
RGMIIバージョン1.3は2.5V CMOSを使用し、RGMIIバージョン2は1.5V を使用する。
SGMII.
serial gigabit media-independent interface (SGMII)はMIIの一種で、イーサネットMACブロックをPHYに接続するために使用される標準インタフェースである。これはギガビット・イーサネットに使用されるが、10/100 Mbit/sイーサネットも伝送できる。
TXとRXのデータおよびTXとRXのクロックには、625MHzのクロック周波数DDRの差動ペアを使用する。GMIIとの違いは、低消費電力でピン数の少ないシリアル8b/10bコードインタフェース（一般にSerDesと呼ばれる）である。送信パスと受信パスはそれぞれ、データ用に1つの差動ペアとクロック用に別の差動ペアを使用する。TX/RXクロックはデバイス出力で生成する必要があるが、デバイス入力ではオプションである（代わりにクロック回復を使用することもできる）。クロックは常に625MHzであるため、10/100 Mbit/sイーサネットは、データワードをそれぞれ100/10回複製することによって伝送される。
QSGMII.
quad serial gigabit media-independent interface (QSGMII)は、4本のSGMII回線を組み合わせて5 Gbit/sのインタフェースにする方法である。SGMIIと同様に、QSGMIIはTXおよびRXデータ用のLow voltage differential signaling(LVDS)と単一のLVDSクロック信号を使用する。
QSGMIIは、4本のSGMIIバスよりもはるかに少ない信号線を使用する。
XGMII.
10 gigabit media-independent interface (XGMII) は、全二重10ギガビット・イーサネット(10GbE)ポートを相互に接続したり、プリント回路基板上の他の電子機器に接続したりするためのIEEE 802.3で定義された規格である。156.25MHz DDR (312.5 MT/s)で動作する2つの32ビットデータパス（RxとTx）と2つの4ビット制御フロー（RxcとTxc）で構成されている。
通常はオンチップ接続に使用される。チップ間での使用では、ほとんどに置き換えられている。