乙太網詳解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介紹
網路裝置中肯定離開不MAC和PHY,本篇文章將詳細介紹下乙太網中一些常見術語與介面。
MAC和PHY結構
從硬體角度來看乙太網是由CPU,MAC,PHY三部分組成的,如下圖示意:
上圖中DMA整合在CPU,CPU,MAC,PHY並不是整合在同一個晶片內,由於PHY包含大量模擬器件,而MAC是典型的數位電路,考慮到芯片面積及模擬/數字混合架構的原因,將MAC整合進CPU而將PHY留在片外,這種結構是最常見的。 下圖是網路介面內部結構圖,虛框表示CPU,MAC整合在CPU中,PHY晶片通過MII介面與CPU上的MAC連線:
以上是乙太網結構大框架,下面分別介紹各個部分。
MAC
MAC(Media Access Control)
在傳送資料的時候,MAC協議可以事先判斷是否可以傳送資料,如果可以傳送將給資料加上一些控制資訊,最終將資料以及控制資訊以規定的格式傳送到物理層;在接收資料的時候,MAC協議首先判斷輸入的資訊並是否發生傳輸錯誤,如果沒有錯誤,則去掉控制資訊傳送至LLC(邏輯鏈路控制)層。該層協議是乙太網MAC由IEEE-802. 3乙太網標準定義。一般乙太網MAC晶片的一端連線PCI匯流排,另一端連線PHY晶片上通過MII介面連線。
PHY
PHY(Physical Layer)是IEEE802.3中定義的一個標準模組,STA(Station Management Entity,管理實體,一般為MAC或CPU)通過MIIM(MII Manage Interface)對PHY的行為、狀態進行管理和控制,而具體管理和控制動作是通過讀寫PHY內部的暫存器實現的。PHY的基本結構如下圖:
PHY在傳送資料的時候,收到MAC過來的資料(對PHY來說,沒有幀的概念,對它來說,都是資料)然後把並行資料轉化為序列流資料,再按照物理層的編碼規則把資料編碼,再變為模擬訊號把資料送出去,收資料時的流程反之。
PHY還有個重要的功能就是實現CSMA/CD的部分功能,它可以檢測到網路上是否有資料在傳送,如果有資料在傳送中就等待,一旦檢測到網路空閒,再等待一個隨機時間後將送資料出去.如果兩個碰巧同時送出了資料,那樣必將造成衝突,這時候衝突檢測機構可以檢測到衝突,然後各等待一個隨機的時間重新發送資料。
PHY暫存器的地址空間為5位,從0到31最多可以定義32個暫存器(隨著晶片功能不斷增加,很多PHY晶片採用分頁技術來擴充套件地址空間以定義更多的暫存器),IEEE802.3定義了地址為0-15這16個暫存器的功能,地址16-31的暫存器留給晶片製造商自由定義,如下表所示:
注:
- 上圖B和E表示在特定介面下,暫存器是基本的還是擴充套件的。例如:MII介面下只有0和1暫存器是基本的,其它的是擴充套件的。所為擴充套件是指留給IEEE以後的擴充套件特性用,不是給PHY廠商的擴充套件,PHY廠商自定義的只能是16~31號暫存器 。
- 在IEEE標準文件及某些PHY手冊中,某暫存器的位元(bit)用X.y表示,如0.15表示第0暫存器的第15位。
MII
MII(Media Independent interface)即介質無關介面,它是IEEE-802.3定義的行業標準,是MAC與PHY之間的介面。MII資料介面包含16個訊號和2個管理介面訊號,如下圖所示:
訊號定義如下:
訊號名稱 | 描述 | 方向 |
---|---|---|
TX_CLK | 傳送時鐘 | PHY → MAC |
TX_ER | 傳送資料錯誤 | MAC → PHY |
TX_EN | 傳送使能 | MAC → PHY |
TXD0 | 傳送資料位0(最先傳輸) | MAC → PHY |
TXD1 | 傳送資料位1 | MAC → PHY |
TXD2 | 傳送資料位2 | MAC → PHY |
TXD3 | 傳送資料位3 | MAC → PHY |
RX_CLK | 接收時鐘 | PHY → MAC |
RX_DV | 接收資料有效 | PHY → MAC |
RX_ER | 接收資料錯誤 | PHY → MAC |
RXD0 | 接收資料位0(最先傳輸) | PHY → MAC |
RXD1 | 接收資料位1 | PHY → MAC |
RXD2 | 接收資料位2 | PHY → MAC |
RXD3 | 接收資料位3 | PHY → MAC |
CRS | 載波監測 | PHY → MAC |
COL | 衝突碰撞監測 | PHY → MAC |
MDIO | 管理資料 | 雙向 |
MDC | 管理資料時鐘 | MAC → PHY |
MAC 通過MIIM 介面讀取PHY 狀態暫存器以得知目前PHY 的狀態。例如連線速度、雙工的能力等。也可以通過 MIIM設定PHY的暫存器達到控制的目的。例如流控的開啟關閉、自協商模式還是強制模式等。MII以4位半位元組方式傳送資料雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s。當時鍾頻率為2.5MHz時,對應速率為10Mb/s。MII介面雖然很靈活但由於訊號線太多限制多介面網口的發展,後續又衍生出RMII,SMII等。
RMII
RMII(Reduced Media Independant Interface),精簡MII介面,節省了一半的資料線。RMII收發使用2位資料進行傳輸,收發時鐘均採用50MHz時鐘源。訊號定義如下:
訊號名稱 | 描述 | 方向 |
---|---|---|
REF_CLK | 參考時鐘 | MAC→PHY或由外部時鐘源提供 |
TX_EN | 傳送資料使能 | MAC → PHY |
TXD0 | 傳送資料位0(最先傳輸) | MAC → PHY |
TXD1 | 傳送資料位1 | MAC → PHY |
RX_ER | 接收錯誤 | PHY → MAC |
RXD0 | 接收資料位0(最先傳輸) | PHY → MAC |
RXD1 | 接收資料1 | PHY → MAC |
CRS_DV | 載波和接收資料有效 | PHY → MAC |
MDIO | 管理資料 | 雙向 |
MDC | 管理資料時鐘 | MAC → PHY |
其中CRS_DV是MII中RX_DV和CRS兩個訊號的合併,當物理層接收到載波訊號後CRS_DV變得有效,將資料傳送給RXD。當載波訊號消失後,CRS_DV會變為無效。在100M乙太網速率中,MAC層每個時鐘取樣一次RXD[1:0]上的資料,在10M乙太網速率中,MAC層每10個時鐘取樣一次RXD[1:0]上的資料,此時物理層接收的每個資料會在RXD[1:0]保留10個時鐘。
SMII
SMII(Serial Media Independant Interface),序列MII介面。它包括TXD,RXD,SYNC三個訊號線,共用一個時鐘訊號,此時鐘訊號是125MHz,訊號線與此時鐘同步。訊號定義如下:
訊號名稱 | 描述 | 方向 |
---|---|---|
REF_CLK | 參考時鐘 | 外部時鐘源提供125MHz |
TXD | 傳送資料 | MAC → PHY |
RXD | 接收資料 | PHY → MAC |
SYNC | 同步訊號 | - |
MDIO | 管理資料 | 雙向 |
MDC | 管理資料時鐘 | MAC → PHY |
SYNC是資料收發的同步訊號,每10個時鐘同步置高一次電平,表示同步。TXD和RXD上的資料和控制資訊,以10bit為一組。傳送部分波形如下:
從波形可以看出,SYNC變高後的10個時鐘週期內,TXD依次輸出一組10bit的資料即TX_ER,TX_EN,TXD[0:7],這些控制資訊和MII介面含義相同。在100M速率中,每一組的內容都是變換的,在10M速率中,每一組資料需要重複10次,取樣任一一組都可以。
GMII
GMII(Gigabit Media Independant Interface),千兆MII介面。GMII採用8位介面資料,工作時鐘125MHz,因此傳輸速率可達1000Mbps。同時相容MII所規定的10/100 Mbps工作方式。GMII介面資料結構符合IEEE乙太網標準,該介面定義見IEEE 802.3-2000。訊號定義如下:
訊號名稱 | 描述 | 方向 |
---|---|---|
GTX_CLK | 1000M傳送時鐘 | MAC → PHY |
TX_CLK | 100/10M傳送時鐘 | MAC → PHY |
TX_ER | 傳送資料錯誤 | MAC → PHY |
TX_EN | 傳送使能 | MAC → PHY |
TX_[7:0] | 傳送資料8bit | MAC → PHY |
RX_CLK | 接收時鐘 | PHY → MAC |
RX_DV | 接收資料有效 | PHY → MAC |
RX_ER | 接收資料錯誤 | PHY → MAC |
RX_[7:0] | 接收資料8bit | PHY → MAC |
CRS | 載波監測 | PHY → MAC |
COL | 衝突碰撞監測 | PHY → MAC |
MDIO | 管理資料 | 雙向 |
MDC | 管理資料時鐘 | MAC → PHY |
RGMII
RGMII(Reduced Gigabit Media Independant Interface),精簡GMII介面。相對於GMII相比,RGMII具有如下特徵:
- 傳送/接收資料線由8條改為4條
- TX_ER和TX_EN複用,通過TX_CTL傳送
- RX_ER與RX_DV複用,通過RX_CTL傳送
- 1 Gbit/s速率下,時鐘頻率為125MHz
- 100 Mbit/s速率下,時鐘頻率為25MHz
- 10 Mbit/s速率下,時鐘頻率為2.5MHz
訊號定義如下:
訊號名稱 | 描述 | 方向 |
---|---|---|
TXC | 傳送時鐘 | MAC→PHY |
TX_CTL | 傳送資料控制 | MAC → PHY |
TXD[3:0] | 傳送資料4bit | MAC → PHY |
RXC | 接收時鐘 | PHY → MAC |
RX_CTL | 接收資料控制 | PHY → MAC |
RXD[3:0] | 接收資料4bit | PHY → MAC |
MDIO | 管理資料 | 雙向 |
MDC | 管理資料時鐘 | MAC → PHY |
雖然RGMII訊號線減半,但TXC/RXC時鐘仍為125Mhz,為了達到1000Mbit的傳輸速率,TXD/RXD訊號線在時鐘上升沿傳送接收GMII介面中的TXD[3:0]/RXD[3:0],在時鐘下降沿傳送接收TXD[7:4]/RXD[7:4],並且訊號TX_CTL反應了TX_EN和TX_ER狀態,即在TXC上升沿傳送TX_EN,下降沿傳送TX_ER,同樣的道理試用於RX_CTL,下圖為傳送接收的時序:
參考