1. 程式人生 > >MII、RMII、GMII介面的詳細介紹

MII、RMII、GMII介面的詳細介紹

 MII (Media Independent Interface(介質無關介面)或稱為媒體獨立介面,它是IEEE-802.3定義的乙太網行業標準。它包括一個數據介面和一個MAC和PHY之間的管理介面。

    資料介面包括分別用於傳送器和接收器的兩條獨立通道,每條通道都有自己的資料、時鐘和控制訊號。MII資料介面總共需要16個訊號。

    管理介面是個雙訊號介面:一個是時鐘訊號,另一個是資料訊號。通過管理介面,上層能監視和控制PHY。MII (Management interface)只有兩條訊號線。
    MII標準介面用於連線Fast Ethernet MAC-block與PHY。表明在不對MAC硬體重新設計或替換的情況下,任何型別的PHY裝置都可以正常工作。在其他速率下工作的與MII等效的介面有:AUI(10M 乙太網)、GMII(Gigabit 乙太網)和XAUI(10-Gigabit 乙太網)。
MII匯流排
    在IEEE802.3中規定的MII匯流排是一種用於將不同型別的PHY與相同網路控制器(MAC)相連線的通用匯流排。網路控制器可以用同樣的硬體介面與任何PHY進行連線。


MII相關介面介紹:
    乙太網媒體介面有:MII RMII SMII GMII
    所有的這些介面都從MII而來,MII是(Medium Independent Interface)的意思,是指不用考慮媒體是銅軸、光纖、電纜等,因為這些媒體處理的相關工作都有PHY或者叫做MAC的晶片完成。
    MII支援10兆和100兆的操作,一個介面由14根線組成,它的支援還是比較靈活的,但是有一個缺點是因為它一個埠用的訊號線太多,如果一個8埠的交換機要用到112根線,16埠就要用到224根線,到32埠的話就要用到448根線,一般按照這個介面做交換機,是不太現實的,所以現代的交換機的製作都會用到其它的一些從MII簡化出來的標準,比如RMII、SMII、GMII等。
    RMII是簡化的MII介面,在資料的收發上它比MII介面少了一倍的訊號線,所以它一般要求是50兆的匯流排時鐘。RMII一般用在多埠的交換機,它不是每個埠安排收、發兩個時鐘,而是所有的資料埠公用一個時鐘用於所有埠的收發,這裡就節省了不少的埠數目。RMII的一個埠要求7個數據線,比MII少了一倍,所以交換機能夠接入多一倍資料的埠。和MII一樣,RMII支援10兆和100兆的匯流排介面速度。
    SMII是由思科提出的一種媒體介面,它有比RMII更少的訊號線數目,S表示序列的意思。因為它只用一根訊號線傳送傳送資料,一根訊號線傳輸接受資料,所以在時鐘上為了滿足100的需求,它的時鐘頻率很高,達到了125兆,為什麼用125兆,是因為資料線裡面會傳送一些控制資訊。SMII一個埠僅用4根訊號線完成100訊號的傳輸,比起RMII差不多又少了一倍的訊號線。SMII在工業界的支援力度是很高的。同理,所有埠的資料收發都公用同一個外部的125M時鐘。
    GMII是千兆網的MII介面,這個也有相應的RGMII介面,表示簡化了的GMII介面。

MII工作原理:
    “媒體獨立”表明在不對MAC硬體重新設計或替換的情況下,任何型別的PHY裝置都可以正常工作。包括分別用於傳送器和接收器的兩條獨立通道。每條通道都有自己的資料、時鐘和控制訊號。
    MII資料介面總共需要16個訊號,包括TX_ER,TXD,TX_EN,TX_CLK,COL,RXD,RX_EX,RX_CLK,CRS,RX_DV等。
    MII以4位半位元組方式傳送資料雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s。
    MII管理介面是個雙訊號介面,一個是時鐘訊號,另一個是資料訊號。
通過管理介面,上層能監視和控制PHY,其管理是使用SMI(Serial Management Interface)匯流排通過讀寫PHY的暫存器來完成的。
    PHY裡面的部分暫存器是IEEE定義的,這樣PHY把自己的目前的狀態反映到暫存器裡面,MAC通過SMI匯流排不斷的讀取PHY的狀態暫存器以得知目前PHY的狀態,例如連線速度,雙工的能力等。
    當然也可以通過SMI設定PHY的暫存器達到控制的目的,例如流控的開啟關閉,自協商模式還是強制模式等。
    不論是物理連線的MII匯流排和SMI匯流排還是PHY的狀態暫存器和控制暫存器都是有IEEE的規範的,因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。
    PHY是物理介面收發器,它實現物理層。包括MII/GMII(介質獨立介面)子層、PCS(物理編碼子層)、PMA(物理介質附加)子層、PMD(物理介質相關)子層、MDI子層。100BaseTX採用4B/5B編碼。
    PHY在傳送資料的時候,收到MAC過來的資料(對PHY來說,沒有幀的概念,對它來說,都是資料而不管什麼地址,資料還是CRC),每4bit就增加1bit的檢錯碼,然後把並行資料轉化為序列流資料,再按照物理層的編碼規則把資料編碼,再變為模擬訊號把資料送出去。收資料時的流程反之。
    PHY還有個重要的功能就是實現CSMA/CD的部分功能。
    它可以檢測到網路上是否有資料在傳送,如果有資料在傳送中就等待,一旦檢測到網路空閒,再等待一個隨機時間後將送資料出去。如果兩個碰巧同時送出了資料,那樣必將造成衝突,這時候,衝突檢測機構可以檢測到衝突,然後各等待一個隨機的時間重新發送資料。這個隨機時間很有講究的,並不是一個常數,在不同的時刻計算出來的隨機時間都是不同的,而且有多重演算法來應付出現概率很低的同兩臺主機之間的第二次衝突。
    通訊速率通過雙方協商,協商的結果是兩個裝置中能同時支援的最大速度和最好的雙工模式,這個技術被稱為Auto Negotiation或者NWAY。
    隔離變壓器把PHY送出來的差分訊號用差模耦合的線圈耦合濾波以增強訊號,並且通過電磁場的轉換耦合到連線網線的另外一端。
    RJ-45中1、2是傳送資料的,3、6是接收資料的。
    新的PHY支援AUTO MDI-X功能,也需要隔離變壓器支援,它可以實現RJ-45介面的1、2上的傳送訊號線和3、6上的接收訊號線的功能自動互相交換。


GMII簡介:
    GMII (Gigabit MII)
    GMII採用8位介面資料,工作時鐘125MHz,因此傳輸速率可達1000Mbps。同時相容MII所規定的10/100 Mbps工作方式。
    GMII介面資料結構符合IEEE乙太網標準。該介面定義見IEEE 802.3-2000。
    傳送器:
    ◇ GTXCLK——吉位元TX..訊號的時鐘訊號(125MHz)
    ◇ TXCLK——10/100M訊號時鐘
    ◇ TXD[7..0]——被髮送資料
    ◇ TXEN——傳送器使能訊號
    ◇ TXER——傳送器錯誤(用於破壞一個數據包)
    注:在千兆速率下,向PHY提供GTXCLK訊號,TXD、TXEN、TXER訊號與此時鐘訊號同步。否則,在10/100M速率下,PHY提供 TXCLK時鐘訊號,其它訊號與此訊號同步。其工作頻率為25MHz(100M網路)或2.5MHz(10M網路)。
    接收器:
    ◇ RXCLK——接收時鐘訊號(從收到的資料中提取,因此與GTXCLK無關聯)
    ◇ RXD[7..0]——接收資料
    ◇ RXDV——接收資料有效指示
    ◇ RXER——接收資料出錯指示
    ◇ COL——衝突檢測(僅用於半雙工狀態)
    管理配置
    ◇ MDC——配置介面時鐘
    ◇ MDIO——配置介面I/O
    管理配置介面控制PHY的特性。該介面有32個暫存器地址,每個地址16位。其中前16個已經在“IEEE 802.3,2000-22.2.4 Management Functions”中規定了用途,其餘的則由各器件自己指定。

RMII簡介:
    RMII: Reduced Media Independant Interface 即簡化媒體獨立介面;是標準的乙太網介面之一,比MII有更少的I/O傳輸。
    關於RMII口和MII口的問題
    RMII口是用兩根線來傳輸資料的,
    MII口是用4根線來傳輸資料的,
    GMII是用8根線來傳輸資料的。
    MII/RMII只是一種介面,對於10M線速,MII的速率是2.5M,RMII則是5M;對於100M線速,MII的速率是25M,RMII則是50M。
    MII/RMII 用於傳輸乙太網包,在MII/RMII介面是4/2bit的,在乙太網的PHY裡需要做串並轉換、編解碼等才能在雙絞線和光纖上進行傳輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。
    乙太網幀的格式為:前導符+開始位+目的mac地址+源mac地址+型別/長度+資料+padding(optional)+32bitCRC
    如果有vlan,則要在型別/長度後面加上2個位元組的vlan tag,其中12bit來表示vlan id,另外4bit表示資料的優先順序! 

網絡卡的工作原理,MAC和PHY:

認識網絡卡,我們上網必備元件之一。    

    網絡卡工作在osi的最後兩層,物理層和資料鏈路層,物理層定義了資料傳送與接收所需要的電與光訊號、線路狀態、時鐘基準、資料編碼和電路等,並向資料鏈路層裝置提供標準介面。物理層的晶片稱之為PHY。資料鏈路層則提供定址機構、資料幀的構建、資料差錯檢查、傳送控制、向網路層提供標準的資料介面等功能。乙太網卡中資料鏈路層的晶片稱之為MAC控制器。很多網絡卡的這兩個部分是做到一起的。他們之間的關係是pci匯流排接mac匯流排,mac接phy,phy接網線(當然也不是直接接上的,還有一個變壓裝置)。

    下面繼續讓我們來關心一下PHY和MAC之間是如何傳送資料和相互溝通的。通過IEEE定義的標準的MII/GigaMII(Media Independed Interfade,介質獨立介面)介面連線MAC和PHY。這個介面是IEEE定義的。MII介面傳遞了網路的所有資料和資料的控制。而MAC對PHY的工作狀態的確定和對PHY的控制則是使用SMI(Serial Management Interface)介面通過讀寫PHY的暫存器來完成的。PHY裡面的部分暫存器也是IEEE定義的,這樣PHY把自己的目前的狀態反映到暫存器裡面,MAC通過SMI匯流排不斷的讀取PHY的狀態暫存器以得知目前PHY的狀態,例如連線速度,雙工的能力等。當然也可以通過SMI設定PHY的暫存器達到控制的目的,例如流控的開啟關閉,自協商模式還是強制模式等。我們看到了,不論是物理連線的MII介面和SMI匯流排還是PHY的狀態暫存器和控制暫存器都是有IEEE的規範的,因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。一片網絡卡主要功能的實現就基本上是上面這些器件了。其他的,還有一顆EEPROM晶片,通常是一顆93C46。裡面記錄了網絡卡晶片的供應商ID、子系統供應商ID、網絡卡的MAC地址、網絡卡的一些配置,如SMI總線上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導系統等東西。很多網絡卡上還有BOOTROM這個東西。它是用於無盤工作站引導作業系統的。既然無盤,一些引導用必需用到的程式和協議棧就放到裡面了,例如RPL、PXE等。實際上它就是一個標準的PCI ROM。所以才會有一些硬碟防寫卡可以通過燒寫網絡卡的BootRom來實現。其實PCI裝置的ROM是可以放到主機板BIOS裡面的。啟動電腦的時候一樣可以檢測到這個ROM並且正確識別它是什麼裝置的。AGP在配置上和PCI很多地方一樣,所以很多顯示卡的BIOS也可以放到主機板BIOS裡面。這就是為什麼板載的網絡卡我們從來沒有看到過BOOTROM的原因。

    2。工作過程, PHY在傳送資料的時候,收到MAC過來的資料(對PHY來說,沒有幀的概念,對它來說,都是資料而不管什麼地址,資料還是CRC),每4bit就增加1bit的檢錯碼,然後把並行資料轉化為序列流資料,再按照物理層的編碼規則(10Based-T的NRZ編碼或100based-T的曼徹斯特編碼)把資料編碼,再變為模擬訊號把資料送出去。收資料時的流程反之。現在來了解PHY的輸出後面部分。一顆CMOS製程的晶片工作的時候產生的訊號電平總是大於0V的(這取決於晶片的製程和設計需求),但是這樣的訊號送到100米甚至更長的地方會有很大的直流分量的損失。而且如果外部網現直接和晶片相連的話,電磁感應(打雷)和靜電,很容易造成晶片的損壞。 再就是裝置接地方法不同,電網環境不同會導致雙方的0V電平不一致,這樣訊號從A傳到B,由於A裝置的0V電平和B點的0V電平不一樣,這樣會導致很大的電流從電勢高的裝置流向電勢低的裝置。我們如何解決這個問題呢?這時就出現了Transformer(隔離變壓器)這個器件。它把PHY送出來的差分訊號用差模耦合的線圈耦合濾波以增強訊號,並且通過電磁場的轉換耦合到連線網線的另外一端。這樣不但使網線和PHY之間沒有物理上的連線而換傳遞了訊號,隔斷了訊號中的直流分量,還可以在不同0V電平的裝置中傳送資料。隔離變壓器本身就是設計為耐2KV~3KV的電壓的。也起到了防雷感應(我個人認為這裡用防雷擊不合適)保護的作用。有些朋友的網路裝置在雷雨天氣時容易被燒壞,大都是PCB設計不合理造成的,而且大都燒燬了裝置的介面,很少有晶片被燒燬的,就是隔離變壓器起到了保護作用。