MII, RMII, GMII, RGMII: antarmuka paralel ke PHY
Antarmuka paralel yang tidak bergantung pada media ini menghubungkan sebuah MAC ke chip PHY tembaga melalui beberapa sentimeter PCB — di dalam router, switch kecil, access point, kontroler industri, dan setiap board embedded dengan RJ45. Antarmuka ini tidak pernah mencapai cage transceiver, tetapi menjadi titik acuan untuk segala sesuatu yang mencapainya: SGMII adalah “GMII yang diserialisasi”, XGMII adalah “GMII pada 10G”, dan PHY di dalam SFP tembaga berbicara dengan salah satu dari antarmuka ini secara internal. Halaman ini memberikan pin, clock, dan timing untuk MII, RMII, GMII, dan RGMII, masalah delay RGMII, in-band status, manajemen MDIO, serta gangguan yang dihasilkan setiap antarmuka.
MII (IEEE 802.3 Klausul 22)
| Butir | Nilai |
|---|---|
| Rate | 10 dan 100 Mb/s |
| Data | 4-bit TXD[3:0], 4-bit RXD[3:0] |
| Clock | TX_CLK dan RX_CLK dari PHY: 25 MHz (100M), 2,5 MHz (10M) |
| Kontrol | TX_EN, TX_ER, RX_DV, RX_ER, CRS (carrier sense), COL (collision) |
| Manajemen | MDC, MDIO (bersama) |
| Jumlah sinyal | 16 data/control + 2 manajemen |
| Level | 5 V / 3,3 V TTL |
| Jangkauan | beberapa cm; satu PHY per MAC |
Masih ditemukan pada mikrokontroler dan FPGA; digantikan oleh RMII untuk jumlah pin.
RMII (RMII Consortium spec v1.2)
| Butir | Nilai |
|---|---|
| Rate | 10 dan 100 Mb/s |
| Data | 2-bit TXD[1:0], RXD[1:0] |
| Clock | satu REF_CLK 50 MHz, dipakai bersama oleh MAC dan PHY; disediakan oleh sebuah osilator, MAC, atau PHY (mode PHY-clock-out) |
| Kontrol | TX_EN, CRS_DV (carrier sense + data valid dimultipleks), RX_ER (opsional) |
| Jumlah sinyal | 7–9 |
| Mode 10 Mb/s | setiap nibble diulang 10× pada 50 MHz |
| Jangkauan | cm |
Topologi reference-clock 50 MHz adalah bug klasik RMII: sebuah PHY yang mengharapkan clock eksternal sementara SoC mengharapkan PHY-lah yang menghasilkan clock tersebut menghasilkan antarmuka yang mati dengan LED link yang tampak sehat.
GMII (Klausul 35)
| Butir | Nilai |
|---|---|
| Rate | 1000 Mb/s; fallback ke sinyal MII untuk 10/100 |
| Data | 8-bit TXD[7:0], RXD[7:0] |
| Clock | GTX_CLK 125 MHz dari MAC untuk transmit; RX_CLK 125 MHz dari PHY untuk receive; TX_CLK dari PHY hanya dipakai pada fallback 10/100 |
| Kontrol | TX_EN, TX_ER, RX_DV, RX_ER, CRS, COL |
| Jumlah sinyal | 24 + manajemen |
| Level | 2,5 V (toleran 3,3 V pada banyak varian) |
| Jangkauan | cm; timing budget ketat pada 125 MHz single-data-rate |
Saat ini kebanyakan menjadi antarmuka on-chip atau FPGA; RGMII mengambil alih perannya pada board.
RGMII (Reduced GMII, spesifikasi HP/Marvell v1.3 dan v2.0)
| Butir | Nilai |
|---|---|
| Rate | 10/100/1000 |
| Data | TXD[3:0] dan RXD[3:0] 4-bit double data rate: nibble rendah pada rising edge, nibble tinggi pada falling edge |
| Clock | TXC 125 MHz (dari MAC), RXC 125 MHz (dari PHY); 25 / 2,5 MHz untuk 100M / 10M |
| Kontrol | TX_CTL (TX_EN pada rising edge, TX_EN xor TX_ER pada falling edge), RX_CTL (RX_DV / RX_DV xor RX_ER) |
| Jumlah sinyal | 12 |
| Level | 2,5 V (v1.3), 1,5 V HSTL atau 1,8 V (opsi v2.0); 3,3 V pada beberapa PHY |
| Jangkauan | ≤ 10–15 cm trace matched-length |
Masalah delay
RGMII mengharuskan clock tiba 1,5–2,0 ns setelah tepi data pada sisi penerima (jendela setup/hold). Ada tiga cara untuk mencapainya:
| Mode | Siapa yang menambahkan delay | phy-mode device-tree | Catatan |
|---|---|---|---|
| PCB delay (v1.3) | ~5 cm trace clock tambahan | rgmii | klasik, rapuh |
| Delay internal di PHY (RGMII-ID, v2.0) | PHY menambahkan 2 ns pada clock TX dan RX | rgmii-id | paling umum saat ini |
| Delay internal di MAC/SoC | ditambahkan oleh SoC | rgmii dengan register delay di sisi MAC | — |
| Campuran | PHY hanya pada satu arah | rgmii-txid, rgmii-rxid | ketika hanya satu sisi yang mendukungnya |
Menambahkan delay dua kali (PCB dan PHY) atau tidak sama sekali menghasilkan gangguan khas RGMII: link up pada 1G dengan error CRC atau tanpa trafik, sementara 100M berfungsi normal (100M memiliki periode 40 ns dan mentoleransi skew tersebut). Perbaiki dengan mengubah register delay PHY atau phy-mode.
In-band status
Saat idle, PHY men-drive link, kecepatan, dan dupleks pada RXD[3:0] sehingga MAC dapat mengonfigurasi ulang clock divider-nya tanpa pembacaan MDIO: RXD[0] link, RXD[2:1] kecepatan (00 = 10, 01 = 100, 10 = 1000), RXD[3] dupleks. Sebagian MAC mengabaikannya dan mengandalkan polling MDIO; ekspektasi yang tidak cocok menghasilkan link yang up pada PHY tetapi down pada MAC.
TBI dan RTBI
Ten-Bit Interface: simbol 1000BASE-X yang dikodekan 8b/10b (10 bit pada 125 MHz, RTBI pada DDR dengan 5 bit) antara MAC/PCS dan SerDes eksternal atau PHY optik. Sudah usang pada board; keturunan serialnya adalah 1000BASE-X/SGMII (SGMII & serial gigabit).
Perbandingan
| Antarmuka | Pin (data + ctrl) | Clock | Rate maksimum | Tegangan | Penggunaan tipikal |
|---|---|---|---|---|---|
| MII | 16 | 25 MHz dari PHY | 100M | 3,3/5 V | MCU, legacy |
| RMII | 7–9 | 50 MHz bersama | 100M | 3,3 V | SoC embedded + PHY |
| SMII | 2–3/port | 125 MHz | 100M | 3,3 V | PHY multi-port (Cisco) |
| GMII | 24 | 125 MHz (MAC tx / PHY rx) | 1G | 2,5 V | FPGA, on-chip |
| RGMII | 12 | 125 MHz DDR | 1G | 2,5/1,8/1,5 V | SoC ↔ PHY pada board |
| SGMII | 4 (2 pasang) | 1,25 GBd embedded | 1G (10/100 dengan replikasi) | CML | SoC ↔ PHY, cage SFP |
Manajemen PHY: MDIO/MDC
| Butir | Klausul 22 | Klausul 45 |
|---|---|---|
| Pengalamatan | address PHY 5-bit, register 5-bit (32 register) | port 5-bit, device 5-bit (PMA/PMD, PCS, PHY XS, DTE XS, AN, vendor), register 16-bit |
| Register kunci | 0 control (reset, speed, AN enable, loopback), 1 status (link, AN complete), 2–3 PHY ID (OUI + model), 4 AN advertisement, 5 link-partner ability, 9/10 control/status 1000BASE-T, 17+ vendor (delay RGMII, LED) | 1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x vendor |
| Kecepatan | MDC ≤ 2,5 MHz (sering lebih cepat dalam praktiknya) | sama |
| Tools Linux | mii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; driver melalui phylib, phylink | phytool read eth0/1:1/0 |
Ini berbeda dengan modul pluggable, yang dikelola lewat I²C, bukan MDIO (Antarmuka dua kawat). PHY internal pada SFP tembaga adalah pengecualiannya: register MDIO-nya dapat dijangkau melalui I²C modul tersebut pada address sekunder di banyak desain, dan begitulah cara vendor mengatur fallback 10/100 dan perilaku autonegosiasi.
PHY umum dan antarmukanya
| Keluarga PHY | Antarmuka | Board tipikal |
|---|---|---|
| Marvell 88E1111 / 88E1512 / 88E1510 | GMII, RGMII, SGMII, TBI | router, modul SFP tembaga (88E1111) |
| Realtek RTL8211F / RTL8201 | RGMII / RMII | SBC, router konsumen |
| Microchip KSZ9031 / KSZ8081 / LAN8720 | RGMII / RMII / RMII | industri, board MCU |
| TI DP83867 / DP83848 | RGMII, SGMII / MII, RMII | industri |
| Broadcom BCM54xxx | RGMII, SGMII, QSGMII | switch enterprise (PHY quad/octal) |
| Marvell 88E1543 / 88E1548 | QSGMII quad | switch akses 48-port |
Gangguan per antarmuka
| Gejala | Antarmuka | Penyebab |
|---|---|---|
| Tidak pernah link, PHY ID terbaca normal | RMII | ketidakcocokan arah/sumber REF_CLK |
| 100M berfungsi, 1G tanpa trafik / CRC | RGMII | mode delay (ID) salah atau dobel |
| Link up pada LED PHY, MAC menyatakan down | RGMII/SGMII | in-band status dinonaktifkan pada satu sisi, atau polling MDIO tidak ada |
| Separuh paket hilang pada 1G | GMII/RGMII | skew panjang trace, level tegangan salah |
| PHY tidak ditemukan pada MDIO | apa pun | address PHY salah (strapping pin), pull-up MDIO tidak ada |
| Kecepatan tertahan di 10/100 | apa pun | register AN advertisement terbatas, kabel, atau phy-mode tanpa dukungan 1G |
Di CodingBox
Tidak ada satu pun di halaman ini yang melalui EEPROM modul — kecuali SFP tembaga, yang PHY internalnya (biasanya part kelas 88E1111) berada di belakang I²C yang sama yang dibaca CodingBox. Ketika sebuah modul tembaga berfungsi pada 1G tetapi tidak pada 10/100, jawabannya terletak pada konfigurasi PHY tersebut dan mode SGMII/1000BASE-X host, bukan pada byte identitas A0h (Tembaga & DAC, SGMII & serial gigabit).