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

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

RMII即Reduced MII,是MII的簡化板,連線數(shù)量由MII的16根減少為8根。 TXD[1:0]:數(shù)據(jù)發(fā)送信號線,數(shù)據(jù)位寬為2,是MII接口的一半; RXD[1:0]:數(shù)據(jù)接收信號線,數(shù)據(jù)位寬為2,是MII接口的一半; TX_EN(Transmit Enable):數(shù)據(jù)發(fā)送使能信號,與MII接口中的該信號線功能一樣; RX_ER(Receive Error):數(shù)據(jù)接收錯誤提示信號,與MII接口中的該信號線功能一樣; CLK_REF:是由外部時鐘源提供的50MHz參考時鐘,與MII接口不同,MII接口中的接收時鐘和發(fā)送時鐘是分開的,而且都是由PHY芯片提供給MAC芯片的。這里需要注意的是,由于數(shù)據(jù)接收時鐘是由外部晶振提供而不是由載波信號提取的,所以在PHY層芯片內的數(shù)據(jù)接收部分需要設計一個FIFO,用來協(xié)調兩個不同的時鐘,在發(fā)送接收的數(shù)據(jù)時提供緩沖。PHY層芯片的發(fā)送部分則不需要FIFO,它直接將接收到的數(shù)據(jù)發(fā)送到MAC就可以了。 CRS_DV:此信號是由MII接口中的RX_DV和CRS兩個信號合并而成。當介質不空閑時,CRS_DV和RE_CLK相異步的方式給出。當CRS比RX_DV早結束時(即載波消失而隊列中還有數(shù)據(jù)要傳輸時),就會出現(xiàn)CRS_DV在半位元組的邊界以25MHz/2.5MHz的頻率在0、1之間的來回切換。因此,MAC能夠從 CRS_DV中精確的恢復出RX_DV和CRS。 在100Mbps速率時,TX/RX每個時鐘周期采樣一個數(shù)據(jù);在10Mbps速率時,TX/RX每隔10個周期采樣一個數(shù)據(jù),因而TX/RX數(shù)據(jù)需要在數(shù)據(jù)線上保留10個周期,相當于一個數(shù)據(jù)發(fā)送10次。 當PHY層芯片收到有效的載波信號后,CRS_DV信號變?yōu)橛行В藭r如果FIFO中還沒有數(shù)據(jù),則它會發(fā)送出全0的數(shù)據(jù)給MAC,然后當FIFO中填入有效的數(shù)據(jù)幀,數(shù)據(jù)幀的開頭是“101010---”交叉的前導碼,當數(shù)據(jù)中出現(xiàn)“01”的比特時,代表正式數(shù)據(jù)傳輸開始,MAC芯片檢測到這一變化,從而開始接收數(shù)據(jù)。 當外部載波信號消失后,CRS_DV會變?yōu)闊o效,但如果FIFO中還有數(shù)據(jù)要發(fā)送時,CRS_DV在下一周期又會變?yōu)橛行В缓笤贌o效再有效,直到FIFO中數(shù)據(jù)發(fā)送完為止。在接收過程中如果出現(xiàn)無效的載波信號或者無效的數(shù)據(jù)編碼,則RX_ER會變?yōu)橛行В硎疚锢韺有酒邮粘鲥e。 SMII接口

SMII即Serial MII,串行MII的意思,跟RMII相比,連線進一步減少到4根;
TXD:發(fā)送數(shù)據(jù)信號,位寬為1; RXD:接收數(shù)據(jù)信號,位寬為1; SYNC:收發(fā)數(shù)據(jù)同步信號,每10個時鐘周期置1次高電平,指示同步。 CLK_REF:所有端口共用的一個參考時鐘,頻率為125MHz,為什么100Mbps速率要用125MHz時鐘?因為在每8位數(shù)據(jù)中會插入2位控制信號,請看下面介紹。 TXD/RXD以10比特為一組,以SYNC為高電平來指示一組數(shù)據(jù)的開始,在SYNC變高后的10個時鐘周期內,TXD上依次輸出的數(shù)據(jù)是:TXD[7:0]、TX_EN、TX_ER,控制信號的含義與MII接口中的相同;RXD上依次輸出的數(shù)據(jù)是:RXD[7:0]、RX_DV、CRS,RXD[7:0]的含義與RX_DV有關,當RX_DV為有效時(高電平),RXD[7:0]上傳輸?shù)氖俏锢韺咏邮盏臄?shù)據(jù)。當RX_DV為無效時(低電平),RXD[7:0]上傳輸?shù)氖俏锢韺拥臓顟B(tài)信息數(shù)據(jù)。見下表:

當速率為10Mbps時,每一組數(shù)據(jù)要重復10次,MAC/PHY芯片每10個周期采樣一次。 MAC/PHY芯片在接收到數(shù)據(jù)后會進行串/并轉換。
SSMII接口
SSMII即Serial Sync MII,叫串行同步接口,跟SMII接口很類似,只是收發(fā)使用獨立的參考時鐘和同步時鐘,不再像SMII那樣收發(fā)共用參考時鐘和同步時鐘,傳輸距離比SMII更遠。

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

GMII接口

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

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

SGMII接口

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

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

RTBI即Reduced TBI,簡化版TBI,接口數(shù)據(jù)位寬為5bit,時鐘頻率為125MHz,在時鐘的上升沿和下降沿都采樣數(shù)據(jù),同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]:數(shù)據(jù)發(fā)送通道,32位并行數(shù)據(jù)。 RXD[31:0]:數(shù)據(jù)接收通道,32位并行數(shù)據(jù)。 TXC[3:0]:發(fā)送通道控制信號,TXC=0時,表示TXD上傳輸?shù)氖菙?shù)據(jù);TXC=1時,表示TXD上傳輸?shù)氖强刂谱址XC[3:0]分別對應TXD[31:24], TXD[23:16], TXD[15:8], TXD[7:0]。 RXC[3:0]:接收通道控制信號,RXC=0時,表示RXD上傳輸?shù)氖菙?shù)據(jù);RXC=1時,表示RXD上傳輸?shù)氖强刂谱址XC[3:0]分別對應RXD[31:24], RXD[23:16], RXD[15:8], RXD[7:0]。 TX_CLK:TXD和TXC的參考時鐘,時鐘頻率156.25MHz,在時鐘信號的上升沿和下降沿都采樣數(shù)據(jù)。156.25MHz * 2 * 32 = 10Gbps 。 RX_CLK:RXD和RXC的參考時鐘,時鐘頻率156.25MHz,在時鐘信號的上升沿和下降沿都采樣數(shù)據(jù)。
XGMII接口共74根連線,單端信號,采用HSTL/SSTL_2邏輯,端口電壓1.5V/2.5V,由于SSTL_2的端口電壓高,功耗大,現(xiàn)在已很少使用。HSTL即High Speed Transceiver Logic,高速發(fā)送邏輯的意思。SSTL,即Stub Series Terminated Logic,短路終止邏輯,主要用于高速內存接口,SSTL目前存在兩種標準,SSTL_3是3.3V標準;SSTL_2是2.5V標準。
XAUI接口
由于受電氣特性的影響,XGMII接口的PCB走線最大傳輸距離僅有7cm,并且XGMII接口的連線數(shù)量太多,給實際應用帶來不便,因此,在實際應用中,XGMII接口通常被XAUI接口代替,XAUI即10 Gigabit attachment unit interface,10G附屬單元接口,XAUI在XGMII的基礎上實現(xiàn)了XGMII接口的物理距離擴展,將PCB走線的傳輸距離增加到50cm,使背板走線成為可能。 源端XGMII把收發(fā)32位寬度數(shù)據(jù)流分為4個獨立的lane通道,每個lane通道對應一個字節(jié),經XGXS(XGMII Extender Sublayer)完成8B/10B編碼后,將4個lane分別對應XAUI的4個獨立通道,XAUI端口速率為:2.5Gbps * 1.25 * 4=12.5Gbps。

在發(fā)送端的XGXS模塊中,將TXD[31:0]/ RXD[31:0],TXC[3:0]/ RXC[3:0], TX_CLK/ RX_CLK轉換成串行數(shù)據(jù)從TX Lane[3:0]/ RX Lane[3:0]中發(fā)出去,在接收端的XGXS模塊中,串行數(shù)據(jù)被轉換成并行,并且進行時鐘恢復和補償,完成時鐘去抖,經過5B/4B解碼后,重新聚合成XGMII。
XAUI接口采用差分線,收發(fā)各四對,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 數(shù)據(jù)位4bit,即使用MDI的4根線,即2對差分線

對于1000M的GMII rx_clk 由PHY提供,為125MHz gtx_clk由MAC提供,為125MHz 數(shù)據(jù)位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
|