MII, RMII, GMII, RGMII: อินเทอร์เฟซแบบขนานไปยัง PHY · อินเทอร์เฟซไฟฟ้า: ตระกูล MII และ AUI · การ์ดเครือข่ายและสวิตช์ · เอกสารประกอบ · CodingBox
CodingBox เอกสารประกอบ

MII, RMII, GMII, RGMII: อินเทอร์เฟซแบบขนานไปยัง PHY

อินเทอร์เฟซแบบขนานที่ไม่ขึ้นกับสื่อกลางเชื่อมต่อ MAC เข้ากับชิป PHY ทองแดงผ่าน PCB ระยะเพียงไม่กี่เซนติเมตร — ภายในเราเตอร์, สวิตช์ขนาดเล็ก, แอ็กเซสพอยต์, ตัวควบคุมอุตสาหกรรม และบอร์ดฝังตัวทุกตัวที่มี RJ45 อินเทอร์เฟซเหล่านี้ไม่เคยไปถึงเคจทรานซีฟเวอร์เลย แต่เป็นจุดอ้างอิงของทุกอย่างที่ไปถึง ได้แก่ SGMII คือ “GMII ที่ทำให้เป็นสัญญาณอนุกรม” XGMII คือ “GMII ที่ 10G” และ PHY ภายใน SFP ทองแดงก็พูดภาษาใดภาษาหนึ่งในกลุ่มนี้อยู่ภายใน เพจนี้ให้ข้อมูลขา, สัญญาณนาฬิกา และจังหวะเวลาของ MII, RMII, GMII และ RGMII ปัญหาความหน่วงของ RGMII, สถานะแบบอินแบนด์, การจัดการ MDIO และข้อผิดพลาดที่แต่ละอินเทอร์เฟซก่อขึ้น

MII (IEEE 802.3 Clause 22)

รายการค่า
อัตรา10 และ 100 Mb/s
ข้อมูลTXD[3:0] 4 บิต, RXD[3:0] 4 บิต
สัญญาณนาฬิกา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; หนึ่ง PHY ต่อหนึ่ง MAC

ยังพบได้บนไมโครคอนโทรลเลอร์และ FPGA; ถูกแทนที่ด้วย RMII ในแง่จำนวนขา

RMII (RMII Consortium spec v1.2)

รายการค่า
อัตรา10 และ 100 Mb/s
ข้อมูลTXD[1:0], RXD[1:0] 2 บิต
สัญญาณนาฬิกาREF_CLK 50 MHz เส้นเดียว ใช้ร่วมกันโดย MAC และ PHY; มาจากออสซิลเลเตอร์, MAC, หรือ PHY (โหมด PHY-clock-out)
การควบคุมTX_EN, CRS_DV (รวมสัญญาณตรวจจับพาหะกับข้อมูลถูกต้องไว้ด้วยกัน), RX_ER (ทางเลือก)
จำนวนสัญญาณ7–9
โหมด 10 Mb/sแต่ละนิบเบิลถูกส่งซ้ำ 10 ครั้งที่ 50 MHz
ระยะcm

โทโพโลยีสัญญาณนาฬิกาอ้างอิง 50 MHz คือบั๊กคลาสสิกของ RMII กรณี PHY คาดหวังสัญญาณนาฬิกาจากภายนอก ขณะที่ SoC คาดหวังให้ PHY เป็นฝ่ายขับสัญญาณนาฬิกาเอง จะทำให้อินเทอร์เฟซใช้งานไม่ได้ทั้งที่ไฟ LED ของลิงก์ยังติดปกติ

GMII (Clause 35)

รายการค่า
อัตรา1000 Mb/s; ลดระดับกลับไปใช้สัญญาณแบบ MII สำหรับ 10/100
ข้อมูลTXD[7:0], RXD[7:0] 8 บิต
สัญญาณนาฬิกาGTX_CLK 125 MHz จาก MAC สำหรับการส่ง; RX_CLK 125 MHz จาก PHY สำหรับการรับ; TX_CLK จาก PHY ใช้เฉพาะตอนลดระดับกลับไปที่ 10/100
การควบคุมTX_EN, TX_ER, RX_DV, RX_ER, CRS, COL
จำนวนสัญญาณ24 + การจัดการ
ระดับสัญญาณ2.5 V (หลายรุ่นทนแรงดัน 3.3 V ได้)
ระยะcm; งบประมาณจังหวะเวลาตึงตัวที่ 125 MHz แบบ single-data-rate

ปัจจุบันส่วนใหญ่เป็นอินเทอร์เฟซภายในชิปหรือบน FPGA; RGMII เข้ามาแทนที่บนบอร์ดจริง

RGMII (Reduced GMII, HP/Marvell specification v1.3 and v2.0)

รายการค่า
อัตรา10/100/1000
ข้อมูลTXD[3:0] และ RXD[3:0] 4 บิต แบบ double data rate: นิบเบิลต่ำที่ขาขึ้น นิบเบิลสูงที่ขาลง
สัญญาณนาฬิกาTXC 125 MHz (จาก MAC), RXC 125 MHz (จาก PHY); 25 / 2.5 MHz สำหรับ 100M / 10M
การควบคุม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); 3.3 V บน PHY บางรุ่น
ระยะเส้นลายวงจรความยาวเท่ากัน ≤ 10–15 cm

ปัญหาความหน่วง

RGMII ต้องการให้สัญญาณนาฬิกามาถึงหลังขอบข้อมูล 1.5–2.0 nsที่ฝั่งรับ (ช่วง setup/hold) มีสามวิธีที่จะทำให้ได้ตามนี้

โหมดใครเป็นผู้เพิ่มความหน่วงphy-mode ใน device treeหมายเหตุ
ความหน่วงจาก PCB (v1.3)เส้นลายวงจรสัญญาณนาฬิกาเพิ่มอีกประมาณ 5 cmrgmiiแบบดั้งเดิม เปราะบาง
ความหน่วงภายใน PHY (RGMII-ID, v2.0)PHY เพิ่ม 2 ns ให้สัญญาณนาฬิกา TX และ RXrgmii-idพบมากที่สุดในปัจจุบัน
ความหน่วงภายใน MAC/SoCSoC เป็นผู้เพิ่มrgmii พร้อมรีจิสเตอร์ความหน่วงฝั่ง MAC—
แบบผสมPHY เพิ่มความหน่วงทิศทางเดียวเท่านั้นrgmii-txid, rgmii-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 คือสัญลักษณ์ 1000BASE-X ที่เข้ารหัสแบบ 8b/10b (10 บิตที่ 125 MHz, ส่วน RTBI ใช้ DDR ที่ 5 บิต) ระหว่าง MAC/PCS กับ SerDes ภายนอกหรือ PHY ด้านออปติก ปัจจุบันเลิกใช้บนบอร์ดแล้ว ทายาทแบบอนุกรมของมันคือ 1000BASE-X/SGMII (SGMII และ serial gigabit)

การเปรียบเทียบ

อินเทอร์เฟซขา (ข้อมูล + ควบคุม)สัญญาณนาฬิกาอัตราสูงสุดแรงดันการใช้งานทั่วไป
MII1625 MHz จาก PHY100M3.3/5 VMCU, ระบบรุ่นเก่า
RMII7–950 MHz ใช้ร่วมกัน100M3.3 VSoC ฝังตัว + PHY
SMII2–3/พอร์ต125 MHz100M3.3 VPHY หลายพอร์ต (Cisco)
GMII24125 MHz (MAC tx / PHY rx)1G2.5 VFPGA, ภายในชิป
RGMII12125 MHz DDR1G2.5/1.8/1.5 VSoC ↔ PHY บนบอร์ด
SGMII4 (2 คู่)1.25 GBd แบบฝัง1G (10/100 ด้วยการทำซ้ำ)CMLSoC ↔ PHY, เคจ SFP

การจัดการ PHY: MDIO/MDC

รายการClause 22Clause 45
การกำหนดแอดเดรสแอดเดรส PHY 5 บิต, รีจิสเตอร์ 5 บิต (32 รีจิสเตอร์)พอร์ต 5 บิต, อุปกรณ์ 5 บิต (PMA/PMD, PCS, PHY XS, DTE XS, AN, vendor), รีจิสเตอร์ 16 บิต
รีจิสเตอร์หลัก0 control (รีเซ็ต, ความเร็ว, เปิดใช้ AN, loopback), 1 status (ลิงก์, AN เสร็จสิ้น), 2–3 PHY ID (OUI + รุ่น), 4 AN advertisement, 5 link-partner ability, 9/10 1000BASE-T control/status, 17+ vendor (ความหน่วง RGMII, LED)1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x vendor
ความเร็วMDC ≤ 2.5 MHz (ในทางปฏิบัติมักเร็วกว่านี้)เหมือนกัน
เครื่องมือบน Linuxmii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; ไดรเวอร์ผ่าน phylib, phylinkphytool read eth0/1:1/0

ต่างจากโมดูลแบบถอดเสียบได้ซึ่งจัดการผ่าน I²C ไม่ใช่ MDIO (อินเทอร์เฟซสองสาย) PHY ภายใน SFP ทองแดงเป็นข้อยกเว้น รีจิสเตอร์ MDIO ของมันเข้าถึงได้ผ่าน I²C ของโมดูลที่แอดเดรสรอง ในหลายดีไซน์ ซึ่งเป็นวิธีที่ผู้ผลิตใช้ตั้งค่าการลดระดับ 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 แบบ quad/octal)
Marvell 88E1543 / 88E1548QSGMII quadสวิตช์แอ็กเซส 48 พอร์ต

ข้อผิดพลาดแยกตามอินเทอร์เฟซ

อาการอินเทอร์เฟซสาเหตุ
ไม่มีลิงก์เลย แต่อ่าน PHY ID ได้ปกติRMIIทิศทาง/แหล่งสัญญาณของ REF_CLK ไม่ตรงกัน
100M ใช้งานได้ แต่ 1G ไม่มีทราฟฟิก/มี CRCRGMIIโหมดความหน่วง (ID) ผิดหรือถูกเพิ่มซ้ำ
ไฟ LED ของ PHY บอกว่าลิงก์ขึ้น แต่ MAC บอกว่าดับRGMII/SGMIIสถานะแบบอินแบนด์ถูกปิดไว้ฝั่งใดฝั่งหนึ่ง หรือไม่มีการโพลล์ MDIO
แพ็กเก็ตหายไปครึ่งหนึ่งที่ 1GGMII/RGMIIการเยื้องเวลาจากความยาวเส้นลายวงจร, ระดับแรงดันผิด
หา PHY บน MDIO ไม่พบทุกแบบแอดเดรส PHY ผิด (ขา strapping), ไม่มี MDIO pull-up
ความเร็วค้างที่ 10/100ทุกแบบรีจิสเตอร์ AN advertisement ถูกจำกัด, สาย, หรือ phy-mode ที่ไม่รองรับ 1G

ใน CodingBox

ไม่มีสิ่งใดในเพจนี้ที่ทำงานผ่าน EEPROM ของโมดูล — ยกเว้น SFP ทองแดง ซึ่ง PHY ภายใน (โดยทั่วไปเป็นชิ้นส่วนระดับ 88E1111) อยู่หลัง I²C เส้นเดียวกับที่ CodingBox อ่าน เมื่อโมดูลทองแดงทำงานได้ที่ 1G แต่ไม่ได้ที่ 10/100 คำตอบอยู่ที่การตั้งค่าของ PHY ตัวนั้นและโหมด SGMII/1000BASE-X ของโฮสต์ ไม่ใช่ที่ไบต์ข้อมูลระบุตัวตนใน A0h (อีเทอร์เน็ตทองแดงและ DAC, SGMII และ serial gigabit)


หากพบข้อมูลที่ไม่ถูกต้องหรือข้อผิดพลาดในบทความนี้ ให้เลือกข้อความส่วนนั้นแล้วกด Ctrl+Enter เพื่อ