MII, RMII, GMII, RGMII: PHY’ye paralel arayüzler
Paralel ortamdan bağımsız arayüzler, bir MAC’i birkaç santimetrelik bir PCB üzerinden bakır bir PHY yongasına bağlar — yönlendiricilerin, küçük anahtarların, erişim noktalarının, endüstriyel kontrolörlerin ve bir RJ45’e sahip her gömülü kartın içinde. Bir alıcı-verici kafesine asla ulaşmazlar, ama ulaşan her şey için referans noktasıdırlar: SGMII “serileştirilmiş GMII”dir, XGMII “10G’de GMII”dir ve bir bakır SFP içindeki PHY, dahili olarak bunlardan birini konuşur. Bu sayfa MII, RMII, GMII ve RGMII için pinleri, saatleri ve zamanlamayı, RGMII gecikme sorununu, bant içi durumu, MDIO yönetimini ve her arayüzün ürettiği arızaları verir.
MII (IEEE 802.3 Clause 22)
| Kalem | Değer |
|---|---|
| Hızlar | 10 ve 100 Mb/s |
| Veri | 4 bit TXD[3:0], 4 bit RXD[3:0] |
| Saatler | TX_CLK ve RX_CLK PHY’den: 25 MHz (100M), 2,5 MHz (10M) |
| Kontrol | TX_EN, TX_ER, RX_DV, RX_ER, CRS (taşıyıcı algılama), COL (çakışma) |
| Yönetim | MDC, MDIO (paylaşılan) |
| Sinyal sayısı | 16 veri/kontrol + 2 yönetim |
| Seviyeler | 5 V / 3,3 V TTL |
| Erişim mesafesi | birkaç cm; MAC başına bir PHY |
Hâlâ mikrodenetleyicilerde ve FPGA’larda bulunur; pin sayısı açısından yerini RMII’ye bırakmıştır.
RMII (RMII Consortium spec v1.2)
| Kalem | Değer |
|---|---|
| Hızlar | 10 ve 100 Mb/s |
| Veri | 2 bit TXD[1:0], RXD[1:0] |
| Saat | MAC ve PHY tarafından paylaşılan tek bir REF_CLK 50 MHz; bir osilatör, MAC veya PHY tarafından kaynaklanır (PHY-clock-out modu) |
| Kontrol | TX_EN, CRS_DV (çoklanmış taşıyıcı algılama + veri geçerli), RX_ER (isteğe bağlı) |
| Sinyal sayısı | 7–9 |
| 10 Mb/s modu | her nibble 50 MHz’de 10× tekrarlanır |
| Erişim mesafesi | cm |
50 MHz referans saat topolojisi, klasik RMII hatasıdır: SoC, PHY’nin onu sürmesini beklerken PHY’nin harici bir saat beklemesi, sağlıklı bir bağlantı LED’iyle birlikte ölü bir arayüz verir.
GMII (Clause 35)
| Kalem | Değer |
|---|---|
| Hızlar | 1000 Mb/s; 10/100 için MII sinyallemesine geri döner |
| Veri | 8 bit TXD[7:0], RXD[7:0] |
| Saatler | gönderim için MAC’ten GTX_CLK 125 MHz; alım için PHY’den RX_CLK 125 MHz; yalnızca 10/100 geri dönüşünde kullanılan PHY’den TX_CLK |
| Kontrol | TX_EN, TX_ER, RX_DV, RX_ER, CRS, COL |
| Sinyal sayısı | 24 + yönetim |
| Seviyeler | 2,5 V (birçoğunda 3,3 V tolere eder) |
| Erişim mesafesi | cm; 125 MHz tek veri hızında zamanlama bütçesi sıkı |
Günümüzde çoğunlukla bir yonga üzeri veya FPGA arayüzüdür; kartlarda yerini RGMII almıştır.
RGMII (Reduced GMII, HP/Marvell specification v1.3 and v2.0)
| Kalem | Değer |
|---|---|
| Hızlar | 10/100/1000 |
| Veri | 4 bit TXD[3:0] ve RXD[3:0] çift veri hızı: yükselen kenarda düşük nibble, düşen kenarda yüksek nibble |
| Saatler | TXC 125 MHz (MAC’ten), RXC 125 MHz (PHY’den); 100M / 10M için 25 / 2,5 MHz |
| Kontrol | TX_CTL (yükselen kenarda TX_EN, düşen kenarda TX_EN xor TX_ER), RX_CTL (RX_DV / RX_DV xor RX_ER) |
| Sinyal sayısı | 12 |
| Seviyeler | 2,5 V (v1.3), 1,5 V HSTL veya 1,8 V (v2.0 seçeneği); bazı PHY’lerde 3,3 V |
| Erişim mesafesi | ≤ 10–15 cm eşit uzunlukta izler |
Gecikme sorunu
RGMII, saatin alıcıda veri kenarlarından 1,5–2,0 ns sonra gelmesini gerektirir (kurulum/tutma penceresi). Bunu elde etmenin üç yolu vardır:
| Mod | Gecikmeyi kim ekler | Device-tree phy-mode | Notlar |
|---|---|---|---|
| PCB gecikmesi (v1.3) | ~5 cm ekstra saat izi | rgmii | klasik, kırılgan |
| PHY içinde dahili gecikme (RGMII-ID, v2.0) | PHY, TX ve RX saatlerine 2 ns ekler | rgmii-id | günümüzde en yaygını |
| MAC/SoC içinde dahili gecikme | SoC ekler | MAC tarafı gecikme yazmacıyla rgmii | — |
| Karışık | PHY yalnızca bir yönde | rgmii-txid, rgmii-rxid | yalnızca bir taraf bunu destekliyorsa |
Gecikmeyi iki kez (PCB ve PHY) veya hiç eklememek, RGMII’nin karakteristik arızasını üretir: 100M çalışırken 1G’de CRC hatalarıyla veya trafiksiz link up (100M’nin 40 ns’lik bir periyodu vardır ve kaymayı tolere eder). PHY’nin gecikme yazmacını veya phy-mode’u değiştirerek düzeltin.
Bant içi durum
Boşta iken PHY, link, hız ve duplex’i RXD[3:0] üzerinde sürer; böylece MAC, bir MDIO okuması olmadan saat bölücüsünü yeniden yapılandırabilir: RXD[0] link, RXD[2:1] hız (00 = 10, 01 = 100, 10 = 1000), RXD[3] duplex. Bazı MAC’ler bunu yok sayar ve MDIO yoklamasına güvenir; uyuşmayan beklentiler, PHY’de up ve MAC’te down olan bir bağlantı verir.
TBI ve RTBI
Ten-Bit Interface: bir MAC/PCS ile harici bir SerDes veya optik PHY arasındaki 8b/10b kodlu 1000BASE-X sembolleri (125 MHz’de 10 bit, DDR’de RTBI 5 bit ile). Kartlarda artık kullanılmıyor; seri torunu 1000BASE-X/SGMII’dir (SGMII ve seri gigabit).
Karşılaştırma
| Arayüz | Pinler (veri + kontrol) | Saat | Maks. hız | Gerilim | Tipik kullanım |
|---|---|---|---|---|---|
| MII | 16 | PHY’den 25 MHz | 100M | 3,3/5 V | MCU’lar, eski sistemler |
| RMII | 7–9 | paylaşılan 50 MHz | 100M | 3,3 V | gömülü SoC + PHY |
| SMII | port başına 2–3 | 125 MHz | 100M | 3,3 V | çok portlu PHY’ler (Cisco) |
| GMII | 24 | 125 MHz (MAC tx / PHY rx) | 1G | 2,5 V | FPGA, yonga üzeri |
| RGMII | 12 | 125 MHz DDR | 1G | 2,5/1,8/1,5 V | kartlarda SoC ↔ PHY |
| SGMII | 4 (2 çift) | gömülü 1,25 GBd | 1G (10/100, çoğaltmayla) | CML | SoC ↔ PHY, SFP kafesleri |
PHY yönetimi: MDIO/MDC
| Kalem | Clause 22 | Clause 45 |
|---|---|---|
| Adresleme | 5 bit PHY adresi, 5 bit yazmaç (32 yazmaç) | 5 bit port, 5 bit aygıt (PMA/PMD, PCS, PHY XS, DTE XS, AN, satıcı), 16 bit yazmaç |
| Anahtar yazmaçlar | 0 kontrol (sıfırlama, hız, AN etkinleştirme, loopback), 1 durum (link, AN tamamlandı), 2–3 PHY ID (OUI + model), 4 AN duyurusu, 5 bağlantı ortağı yeteneği, 9/10 1000BASE-T kontrol/durum, 17+ satıcı (RGMII gecikmesi, LED’ler) | 1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x satıcı |
| Hız | MDC ≤ 2,5 MHz (pratikte genellikle daha hızlı) | aynı |
| Linux araçları | mii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; phylib, phylink üzerinden sürücü | phytool read eth0/1:1/0 |
Bunu, MDIO değil I²C üzerinden yönetilen takılabilir modüllerle karşılaştırın (İki telli arayüz). Bir bakır SFP’nin dahili PHY’si istisnadır: MDIO yazmaçlarına, birçok tasarımda modülün I²C’si üzerinden ikincil bir adresten ulaşılabilir; satıcılar 10/100 geri dönüşünü ve otomatik anlaşma davranışını bu şekilde ayarlar.
Yaygın PHY’ler ve arayüzleri
| PHY ailesi | Arayüzler | Tipik kart |
|---|---|---|
| Marvell 88E1111 / 88E1512 / 88E1510 | GMII, RGMII, SGMII, TBI | yönlendiriciler, bakır SFP modülleri (88E1111) |
| Realtek RTL8211F / RTL8201 | RGMII / RMII | SBC’ler, tüketici yönlendiricileri |
| Microchip KSZ9031 / KSZ8081 / LAN8720 | RGMII / RMII / RMII | endüstriyel, MCU kartları |
| TI DP83867 / DP83848 | RGMII, SGMII / MII, RMII | endüstriyel |
| Broadcom BCM54xxx | RGMII, SGMII, QSGMII | kurumsal anahtarlar (dörtlü/sekizli PHY’ler) |
| Marvell 88E1543 / 88E1548 | QSGMII dörtlü | 48 portlu erişim anahtarları |
Arayüze göre arızalar
| Belirti | Arayüz | Neden |
|---|---|---|
| Hiç link yok, PHY ID sorunsuz okunuyor | RMII | REF_CLK yönü/kaynağı uyuşmazlığı |
| 100M çalışıyor, 1G’de trafik yok / CRC | RGMII | gecikme modu (ID) yanlış veya iki katına çıkmış |
| PHY LED’inde link up, MAC down diyor | RGMII/SGMII | bir tarafta bant içi durum devre dışı veya MDIO yoklaması yok |
| 1G’de paketlerin yarısı kayboluyor | GMII/RGMII | iz uzunluğu kayması, yanlış gerilim seviyesi |
| PHY, MDIO’da bulunamıyor | herhangi biri | yanlış PHY adresi (strapping pinleri), MDIO pull-up eksik |
| Hız 10/100’de takılı kalmış | herhangi biri | sınırlı AN duyuru yazmacı, kablo veya 1G desteği olmayan phy-mode |
CodingBox’ta
Bu sayfadaki hiçbir şey modülün EEPROM’u üzerinden işlemez — bakır SFP hariç: onun dahili PHY’si (tipik olarak 88E1111 sınıfı bir parça), CodingBox’ın okuduğu aynı I²C’nin arkasında oturur. Bakır bir modül 1G’de çalışıp 10/100’de çalışmadığında, yanıt A0h kimlik baytlarında değil, o PHY’nin yapılandırmasında ve hostun SGMII/1000BASE-X modundadır (Bakır Ethernet ve DAC, SGMII ve seri gigabit).