MII وRMII وGMII وRGMII: واجهات متوازية إلى PHY
تصل الواجهات المتوازية المستقلة عن الوسط بين MAC ورقاقة PHY نحاسية عبر بضعة سنتيمترات من لوحة الدارة المطبوعة — داخل الموجِّهات، والمبدّلات الصغيرة، ونقاط الوصول، والمتحكمات الصناعية، وكل لوحة مدمجة بها منفذ RJ45. لا تصل هذه الواجهات أبدًا إلى قفص وحدة إرسال واستقبال، لكنها المرجع لكل ما يصل إليه: فـSGMII هي «GMII مسلسَلة»، وXGMII هي «GMII بسرعة 10G»، وPHY داخل SFP نحاسي يتحدث بإحداها داخليًا. تعرض هذه الصفحة الأطراف والسّاعات والتوقيت لكل من MII وRMII وGMII وRGMII، ومشكلة التأخير في RGMII، والحالة ضمن النطاق (in-band status)، وإدارة 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 للإدارة |
| المستويات | TTL بجهد 5 V / 3.3 V |
| المدى | بضعة سنتيمترات؛ PHY واحد لكل MAC |
لا تزال موجودة في المتحكمات الدقيقة وFPGA؛ وحلّت محلها RMII من حيث عدد الأطراف.
RMII (مواصفة RMII Consortium v1.2)
| البند | القيمة |
|---|---|
| المعدلات | 10 و100 Mb/s |
| البيانات | TXD[1:0] وRXD[1:0] بعرض بتّين |
| الساعة | REF_CLK واحدة بتردد 50 MHz، مشتركة بين MAC وPHY؛ مصدرها مذبذب، أو MAC، أو PHY (نمط PHY-clock-out) |
| التحكم | TX_EN، وCRS_DV (استشعار الناقل + صلاحية البيانات مُجمَّعتان)، وRX_ER (اختياري) |
| عدد الإشارات | 7–9 |
| نمط 10 Mb/s | تتكرر كل نيبل (nibble) 10 مرات عند 50 MHz |
| المدى | سنتيمترات |
طوبولوجيا ساعة الإسناد بتردد 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 في كثير من التصاميم) |
| المدى | سنتيمترات؛ وميزانية التوقيت ضيقة عند 125 MHz بمعدل بيانات مفرد |
أصبحت اليوم في الغالب واجهة داخل الرقاقة أو في FPGA؛ وحلّت RGMII محلها على الألواح.
RGMII (نسخة مختصرة من GMII، مواصفة HP/Marvell الإصدار 1.3 و2.0)
| البند | القيمة |
|---|---|
| المعدلات | 10/100/1000 |
| البيانات | TXD[3:0] وRXD[3:0] بعرض 4 بتات بمعدل بيانات مضاعف: النيبل المنخفض عند الحافة الصاعدة، والنيبل المرتفع عند الحافة الهابطة |
| الساعات | 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 (الإصدار 1.3)، وHSTL بجهد 1.5 V أو 1.8 V (خيار الإصدار 2.0)؛ و3.3 V على بعض رقاقات PHY |
| المدى | ≤ 10–15 cm بمسارات متطابقة الطول |
مشكلة التأخير
تتطلب RGMII وصول الساعة بعد حواف البيانات بمقدار 1.5–2.0 ns عند المستقبل (نافذة الإعداد/الاستبقاء). ثلاث طرق لتحقيق ذلك:
| النمط | من يضيف التأخير | phy-mode في شجرة الجهاز | ملاحظات |
|---|---|---|---|
| تأخير في اللوحة (الإصدار 1.3) | نحو 5 cm من مسار ساعة إضافي | rgmii | كلاسيكي وهش |
| تأخير داخلي في PHY (RGMII-ID، الإصدار 2.0) | تضيف PHY 2 ns على ساعتي TX وRX | rgmii-id | الأكثر شيوعًا اليوم |
| تأخير داخلي في MAC/SoC | تضيفه SoC | rgmii مع سجل تأخير من جهة MAC | — |
| مختلط | PHY في اتجاه واحد فقط | rgmii-txid، وrgmii-rxid | عندما يدعمه طرف واحد فقط |
إضافة التأخير مرتين (في اللوحة وفي 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: رموز 1000BASE-X المرمَّزة بطريقة 8b/10b (10 بتات عند 125 MHz، وRTBI بمعدل بيانات مضاعف بـ5 بتات) بين MAC/PCS وSerDes خارجي أو PHY ضوئي. أصبحت قديمة على الألواح؛ وخَلَفها التسلسلي هو 1000BASE-X/SGMII (SGMII وGigabit التسلسلي).
مقارنة
| الواجهة | الأطراف (بيانات + تحكم) | الساعة | أقصى معدل | الجهد | الاستخدام النموذجي |
|---|---|---|---|---|---|
| MII | 16 | 25 MHz من PHY | 100M | 3.3/5 V | متحكمات دقيقة، أنظمة قديمة |
| RMII | 7–9 | 50 MHz مشتركة | 100M | 3.3 V | SoC مدمجة + PHY |
| SMII | 2–3/منفذ | 125 MHz | 100M | 3.3 V | رقاقات PHY متعددة المنافذ (Cisco) |
| GMII | 24 | 125 MHz (إرسال MAC / استقبال PHY) | 1G | 2.5 V | FPGA، داخل الرقاقة |
| RGMII | 12 | 125 MHz DDR | 1G | 2.5/1.8/1.5 V | SoC ↔ PHY على الألواح |
| SGMII | 4 (زوجان) | 1.25 GBd مدمجة | 1G (و10/100 بالتكرار) | CML | SoC ↔ PHY، أقفاص SFP |
إدارة PHY: MDIO/MDC
| البند | Clause 22 | Clause 45 |
|---|---|---|
| العنونة | عنوان PHY بعرض 5 بتات، وسجل بعرض 5 بتات (32 سجلًا) | منفذ بعرض 5 بتات، وجهاز بعرض 5 بتات (PMA/PMD، وPCS، وPHY XS، وDTE XS، وAN، والمورّد)، وسجل بعرض 16 بتًا |
| السجلات الرئيسية | 0 تحكم (إعادة ضبط، سرعة، تفعيل AN، حلقي)، و1 حالة (وصلة، اكتمال AN)، و2–3 معرّف PHY (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 eth0، وphytool read eth0/1/0، وethtool eth0؛ وبرنامج التشغيل عبر phylib، وphylink | phytool read eth0/1:1/0 |
على النقيض من ذلك، تُدار الوحدات القابلة للتوصيل عبر I²C لا عبر MDIO (الواجهة ثنائية الأسلاك). أما PHY الداخلية في SFP النحاسي فهي الاستثناء: يمكن الوصول إلى سجلات MDIO الخاصة بها عبر I²C الوحدة على عنوان ثانوي في كثير من التصاميم، وهذه هي الطريقة التي يضبط بها الموردون سلوك التراجع إلى 10/100 والتفاوض التلقائي.
رقاقات PHY الشائعة وواجهاتها
| عائلة PHY | الواجهات | اللوحة النموذجية |
|---|---|---|
| Marvell 88E1111 / 88E1512 / 88E1510 | GMII، وRGMII، وSGMII، وTBI | الموجِّهات، ووحدات SFP النحاسية (88E1111) |
| Realtek RTL8211F / RTL8201 | RGMII / RMII | لوحات SBC، وموجِّهات المستهلكين |
| Microchip KSZ9031 / KSZ8081 / LAN8720 | RGMII / RMII / RMII | صناعية، ولوحات MCU |
| TI DP83867 / DP83848 | RGMII، وSGMII / MII، وRMII | صناعية |
| Broadcom BCM54xxx | RGMII، وSGMII، وQSGMII | مبدّلات المؤسسات (رقاقات PHY رباعية/ثمانية) |
| Marvell 88E1543 / 88E1548 | QSGMII رباعية | مبدّلات وصول بـ48 منفذًا |
الأعطال حسب الواجهة
| العَرَض | الواجهة | السبب |
|---|---|---|
| لا وصلة إطلاقًا، ومعرّف PHY يُقرأ بشكل سليم | RMII | عدم تطابق اتجاه/مصدر REF_CLK |
| 100M تعمل، و1G بلا حركة أو بأخطاء CRC | RGMII | نمط التأخير (ID) خاطئ أو مضاعف |
| مصباح LED الخاص بـPHY يشير إلى وصلة نشطة، وMAC يقول معطَّلة | RGMII/SGMII | الحالة ضمن النطاق معطَّلة على أحد الطرفين، أو غياب استقصاء MDIO |
| فقد نصف الحزم عند 1G | GMII/RGMII | انزياح طول المسار، أو مستوى جهد خاطئ |
| PHY غير موجودة على MDIO | أي واجهة | عنوان PHY خاطئ (أطراف الضبط strapping)، أو غياب مقاومة سحب MDIO |
| السرعة عالقة عند 10/100 | أي واجهة | سجل إعلان AN محدود، أو الكبل، أو phy-mode بلا دعم لـ1G |
في CodingBox
لا شيء في هذه الصفحة يمر عبر EEPROM الوحدة — باستثناء SFP النحاسي، الذي تقع PHY الداخلية فيه (عادة من فئة 88E1111) خلف I²C نفسها التي تقرأها CodingBox. عندما تعمل وحدة نحاسية عند 1G لكن ليس عند 10/100، يكمن الجواب في ضبط تلك الـPHY ونمط SGMII/1000BASE-X الخاص بالمضيف، لا في بايتات بيانات التعريف على A0h (النحاس في Ethernet وDAC، SGMII وGigabit التسلسلي).