MII是英文Medium Independent Interface的縮寫,翻譯成中文是“介質獨立介面”,該介面一般應用於乙太網硬體平臺的MAC層和PHY層之間,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,是RGMII的簡化版本,將介面信號線數量從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等。
留言列表