MII接口全家福

簡介:
    MII是英文Medium Independent Interface的縮寫,翻譯成中文是“介質獨立接口”,該接口一般應用於MAC層和PHY層之間的以太網數據傳輸,也可叫數據接口。(MAC與PHY間的管理接口一般是MDIO)
    MII接口的類型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。下面對它們進行一一介紹。

MII接口



TXD(Transmit Data)[3:0]:數據發送信號,共4根信號線;
RXD(Receive Data)[3:0]:數據接收信號,共4根信號線;
TX_ER(Transmit Error):  發送數據錯誤提示信號,同步於TX_CLK,高電平有效,表示TX_ER有效期內傳輸的數據無效。對於10Mbps速率下,TX_ER不起作用;
RX_ER(Receive Error):  接收數據錯誤提示信號,同步於RX_CLK,高電平有效,表示RX_ER有效期內傳輸的數據無效。對於10Mbps速率下,RX_ER不起作用;
TX_EN(Transmit Enable): 發送使能信號,只有在TX_EN有效期內傳的數據纔有效;
RX_DV(Reveive Data Valid): 接收數據有效信號,作用類型於發送通道的TX_EN;
TX_CLK:發送參考時鐘,100Mbps速率下,時鐘頻率爲25MHz,10Mbps速率下,時鐘頻率爲2.5MHz。注意,TX_CLK時鐘的方向是從PHY側指向MAC側的,因此此時鐘是由PHY提供的。
RX_CLK:接收數據參考時鐘,100Mbps速率下,時鐘頻率爲25MHz,10Mbps速率下,時鐘頻率爲2.5MHz。RX_CLK也是由PHY側提供的。
CRS:Carrier Sense,載波偵測信號,不需要同步於參考時鐘,只要有數據傳輸,CRS就有效,另外,CRS只有PHY在半雙工模式下有效;
COL:Collision Detectd,衝突檢測信號,不需要同步於參考時鐘,只有PHY在半雙工模式下有效。 
MII接口一共有16根線。

RMII接口



RMII即Reduced MII,是MII的簡化板,連線數量由MII的16根減少爲8根。

TXD[1:0]:數據發送信號線,數據位寬爲2,是MII接口的一半;

RXD[1:0]:數據接收信號線,數據位寬爲2,是MII接口的一半;

TX_EN(Transmit Enable):數據發送使能信號,與MII接口中的該信號線功能一樣;

RX_ER(Receive Error):數據接收錯誤提示信號,與MII接口中的該信號線功能一樣;

CLK_REF:是由外部時鐘源提供的50MHz參考時鐘,與MII接口不同,MII接口中的接收時鐘和發送時鐘是分開的,而且都是由PHY芯片提供給MAC芯片的。這裏需要注意的是,由於數據接收時鐘是由外部晶振提供而不是由載波信號提取的,所以在PHY層芯片內的數據接收部分需要設計一個FIFO,用來協調兩個不同的時鐘,在發送接收的數據時提供緩衝。PHY層芯片的發送部分則不需要FIFO,它直接將接收到的數據發送到MAC就可以了。

CRS_DV:此信號是由MII接口中的RX_DV和CRS兩個信號合併而成。當介質不空閒時,CRS_DV和RE_CLK相異步的方式給出。當CRS比RX_DV早結束時(即載波消失而隊列中還有數據要傳輸時),就會出現CRS_DV在半位元組的邊界以25MHz/2.5MHz的頻率在0、1之間的來回切換。因此,MAC能夠從 CRS_DV中精確的恢復出RX_DV和CRS。

在100Mbps速率時,TX/RX每個時鐘週期採樣一個數據;在10Mbps速率時,TX/RX每隔10個週期採樣一個數據,因而TX/RX數據需要在數據線上保留10個週期,相當於一個數據發送10次。

當PHY層芯片收到有效的載波信號後,CRS_DV信號變爲有效,此時如果FIFO中還沒有數據,則它會發送出全0的數據給MAC,然後當FIFO中填入有效的數據幀,數據幀的開頭是“101010---”交叉的前導碼,當數據中出現“01”的比特時,代表正式數據傳輸開始,MAC芯片檢測到這一變化,從而開始接收數據。

當外部載波信號消失後,CRS_DV會變爲無效,但如果FIFO中還有數據要發送時,CRS_DV在下一週期又會變爲有效,然後再無效再有效,直到FIFO中數據發送完爲止。在接收過程中如果出現無效的載波信號或者無效的數據編碼,則RX_ER會變爲有效,表示物理層芯片接收出錯。


SMII接口




SMII即Serial MII,串行MII的意思,跟RMII相比,連線進一步減少到4根;

TXD:發送數據信號,位寬爲1;
RXD:接收數據信號,位寬爲1;
SYNC:收發數據同步信號,每10個時鐘週期置1次高電平,指示同步。
CLK_REF:所有端口共用的一個參考時鐘,頻率爲125MHz,爲什麼100Mbps速率要用125MHz時鐘?因爲在每8位數據中會插入2位控制信號,請看下面介紹。
 TXD/RXD以10比特爲一組,以SYNC爲高電平來指示一組數據的開始,在SYNC變高後的10個時鐘週期內,TXD上依次輸出的數據是:TXD[7:0]、TX_EN、TX_ER,控制信號的含義與MII接口中的相同;RXD上依次輸出的數據是:RXD[7:0]、RX_DV、CRS,RXD[7:0]的含義與RX_DV有關,當RX_DV爲有效時(高電平),RXD[7:0]上傳輸的是物理層接收的數據。當RX_DV爲無效時(低電平),RXD[7:0]上傳輸的是物理層的狀態信息數據。見下表:



當速率爲10Mbps時,每一組數據要重複10次,MAC/PHY芯片每10個週期採樣一次。
MAC/PHY芯片在接收到數據後會進行串/並轉換。


SSMII接口

SSMII即Serial Sync MII,叫串行同步接口,跟SMII接口很類似,只是收發使用獨立的參考時鐘和同步時鐘,不再像SMII那樣收發共用參考時鐘和同步時鐘,傳輸距離比SMII更遠。




SSSMII接口

SSSMII即Source Sync Serial MII,叫源同步串行MII接口,SSSMII與SSMII的區別在於參考時鐘和同步時鐘的方向,SSMII的TX/RX參考時鐘和同步時鐘都是由PHY芯片提供的,而SSSMII的TX參考時鐘和同步時鐘是由MAC芯片提供的,RX參考時鐘和同步時鐘是由PHY芯片提供的,所以顧名思義叫源同步串行。





GMII接口



與MII接口相比,GMII的數據寬度由4位變爲8位,GMII接口中的控制信號如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一樣,發送參考時鐘GTX_CLK和接收參考時鐘RX_CLK的頻率均爲125MHz(1000Mbps/8=125MHz)。
在這裏有一點需要特別說明下,那就是發送參考時鐘GTX_CLK,它和MII接口中的TX_CLK是不同的,MII接口中的TX_CLK是由PHY芯片提供給MAC芯片的,而GMII接口中的GTX_CLK是由MAC芯片提供給PHY芯片的。兩者方向不一樣。
在實際應用中,絕大多數GMII接口都是兼容MII接口的,所以,一般的GMII接口都有兩個發送參考時鐘:TX_CLK和GTX_CLK(兩者的方向是不一樣的,前面已經說過了),在用作MII模式時,使用TX_CLK和8根數據線中的4根。


RGMII接口



RGMII即Reduced GMII,是GMII的簡化版本,將接口信號線數量從24根減少到14根(COL/CRS端口狀態指示信號,這裏沒有畫出),時鐘頻率仍舊爲125MHz,TX/RX數據寬度從8爲變爲4位,爲了保持1000Mbps的傳輸速率不變,RGMII接口在時鐘的上升沿和下降沿都採樣數據。在參考時鐘的上升沿發送GMII接口中的TXD[3:0]/RXD[3:0],在參考時鐘的下降沿發送GMII接口中的TXD[7:4]/RXD[7:4]。RGMI同時也兼容100Mbps和10Mbps兩種速率,此時參考時鐘速率分別爲25MHz和2.5MHz。
TX_EN信號線上傳送TX_EN和TX_ER兩種信息,在TX_CLK的上升沿發送TX_EN,下降沿發送TX_ER;同樣的,RX_DV信號線上也傳送RX_DV和RX_ER兩種信息,在RX_CLK的上升沿發送RX_DV,下降沿發送RX_ER。




SGMII接口




SGMII即Serial GMII,串行GMII,收發各一對差分信號線,時鐘頻率625MHz,在時鐘信號的上升沿和下降沿均採樣,參考時鐘RX_CLK由PHY提供,是可選的,主要用於MAC側沒有時鐘的情況,一般情況下,RX_CLK不使用。收發都可以從數據中恢復出時鐘。
在TXD發送的串行數據中,每8比特數據會插入TX_EN/TX_ER 兩比特控制信息,同樣,在RXD接收數據中,每8比特數據會插入RX_DV/RX_ER 兩比特控制信息,所以總的數據速率爲1.25Gbps=625Mbps*2.
其實,大多數MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模塊,而不需要PHY層芯片,此時時鐘速率仍舊是625MHz,不過此時跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因爲插入了控制信息,而SerDes端口速率被提高是因爲進行了8B/10B變換,本來8B/10B變換是PHY芯片的工作,在SerDes接口中,因爲外面不接PHY芯片,此時8B/10B變換在MAC芯片中完成了。8B/10B變換的主要作用是擾碼,讓信號中不出現過長的連“0”和連“1”情況,影響時鐘信息的提取,關於8B/10B變換知識,我後續會單獨介紹。

TBI接口



TBI即Ten Bit Interface的意思,接口數據位寬由GMII接口的8位增加到10位,其實,TBI接口跟GMII接口的差別不是很大,多出來的2位數據主要是因爲在TBI接口下,MAC芯片在將數據發給PHY芯片之前進行了8B/10B變換(8B/10B變換本是在PHY芯片中完成的,前面已經說過了),另外,RX_CLK+/-是從接收數據中恢復出來的半頻時鐘,頻率爲62.5MHz,RX_CLK+/-不是差分信號,而是兩個獨立的信號,兩者之間有180度的相位差,在這兩個時鐘的上升沿都採樣數據。RX_CLK+/-也叫僞差分信號。除掉上面說到的之外,剩下的信號都跟GMII接口中的相同。
大多數芯片的TBI接口和GMII接口兼容。在用作TBI接口時,CRS和COL一般不用。

RTBI接口



RTBI即Reduced TBI,簡化版TBI,接口數據位寬爲5bit,時鐘頻率爲125MHz,在時鐘的上升沿和下降沿都採樣數據,同RGMII接口一樣,TX_EN線上會傳送TX_EN和TX_ER兩種信息,在時鐘的上升沿傳TX_EN,下降沿傳TX_ER;RX_DV線上傳送RX_DV和RX_ER兩種信息,在RX_CLK上升沿傳RX_DV,下降沿傳RX_ER。


萬兆以太網接口的端口速率爲10Gbps,主要有XGMII和XAUI兩種,另外還有HIGIG,不過HIGIG是Broadcom公司的私有標準,這裏暫不介紹。

XGMII接口



TXD[31:0]:數據發送通道,32位並行數據。
RXD[31:0]:數據接收通道,32位並行數據。
TXC[3:0]:發送通道控制信號,TXC=0時,表示TXD上傳輸的是數據;TXC=1時,表示TXD上傳輸的是控制字符。TXC[3:0]分別對應TXD[31:24], TXD[23:16], TXD[15:8], TXD[7:0]。
RXC[3:0]:接收通道控制信號,RXC=0時,表示RXD上傳輸的是數據;RXC=1時,表示RXD上傳輸的是控制字符。RXC[3:0]分別對應RXD[31:24], RXD[23:16], RXD[15:8], RXD[7:0]。
TX_CLK:TXD和TXC的參考時鐘,時鐘頻率156.25MHz,在時鐘信號的上升沿和下降沿都採樣數據。156.25MHz * 2 * 32 = 10Gbps 。
RX_CLK:RXD和RXC的參考時鐘,時鐘頻率156.25MHz,在時鐘信號的上升沿和下降沿都採樣數據。

XGMII接口共74根連線,單端信號,採用HSTL/SSTL_2邏輯,端口電壓1.5V/2.5V,由於SSTL_2的端口電壓高,功耗大,現在已很少使用。HSTL即High Speed Transceiver Logic,高速發送邏輯的意思。SSTL,即Stub Series Terminated Logic,短路終止邏輯,主要用於高速內存接口,SSTL目前存在兩種標準,SSTL_3是3.3V標準;SSTL_2是2.5V標準。

XAUI接口

由於受電氣特性的影響,XGMII接口的PCB走線最大傳輸距離僅有7cm,並且XGMII接口的連線數量太多,給實際應用帶來不便,因此,在實際應用中,XGMII接口通常被XAUI接口代替,XAUI即10 Gigabit attachment unit interface,10G附屬單元接口,XAUI在XGMII的基礎上實現了XGMII接口的物理距離擴展,將PCB走線的傳輸距離增加到50cm,使背板走線成爲可能。
源端XGMII把收發32位寬度數據流分爲4個獨立的lane通道,每個lane通道對應一個字節,經XGXS(XGMII Extender Sublayer)完成8B/10B編碼後,將4個lane分別對應XAUI的4個獨立通道,XAUI端口速率爲:2.5Gbps * 1.25 * 4=12.5Gbps。




在發送端的XGXS模塊中,將TXD[31:0]/ RXD[31:0],TXC[3:0]/ RXC[3:0], TX_CLK/ RX_CLK轉換成串行數據從TX Lane[3:0]/ RX Lane[3:0]中發出去,在接收端的XGXS模塊中,串行數據被轉換成並行,並且進行時鐘恢復和補償,完成時鐘去抖,經過5B/4B解碼後,重新聚合成XGMII。

XAUI接口採用差分線,收發各四對,CML邏輯,AC耦合方式,耦合電容在10nF~100nF之間。

XAUI接口可以直接接光模塊,如XENPAK/X2等。也可以轉換成一路10G信號XFI,接XFP/SFP+等。

有些芯片不支持XAUI接口,只支持XGMII接口,這時可以用專門的芯片進行XGMII/XAUI接口轉換,如BCM8011等。


---------------------請叫我華麗的分割線--------------------------



對於10/100M的MII
   rx_clk都是PHY提供,爲
2.5MHz/25MHz
   tx_clk都是PHY提供,爲2.5MHz/25MHz
   數據位4bit,即使用MDI的4根線,即2對差分線



對於1000M的GMII
  rx_clk 由PHY提供,爲125MHz 
  gtx_clk由MAC提供,爲125MHz
  數據位8bit 即使用MDI的8根線,即4對差分線


對於10/100/1000M的(G)MII
  rx_clk由PHY提供,爲 2.5MHz/25MHz/125MHz
  10/100M時,使用tx_clk,由PHY提供,爲2.5MHz/25MHz
  1000M時, 使用gtx_clk,由MAC提供,爲125MHz


對於10/100/1000M的RGMII
    rx_clk由PHY提供,爲125MHz
    gtx_clk由MAC提供,爲125MHz

---------------------請叫我華麗的分割線--------------------------

對於MAC和PHY連接,我們稱爲 Forward (G)MII 
對於MAC和MAC相連,叫 Reverse (G)MII
發佈了0 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章