011 媒體獨立接口(MII,Meida Independent Interface)


一、MII接口

MII接口Medium Independent Interface

MII(Media Independent Interface)即媒體獨立接口,MII接口是MAC與PHY連接的標准接口。它是IEEE-802.3定義的以太網行業標准。MII接口提供了MAC與PHY之間、PHY與STA(Station Management)之間的互聯技術,該接口支持10Mb/s與100Mb/s的數據傳輸速率,數據傳輸的位寬為4位。"媒體獨立"表明在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。802.3協議最多支持32個PHY,但有一定的限制:要符合協議要求的connector特性。

MII數據接口包含16個信號和2個管理接口信號,如下圖所示:

提到MII,就有可能涉及到RS,PLS,STA等名詞術語,下面講一下他們之間對應的關系。

所謂RS即Reconciliation sublayer,它的主要功能主要是提供一種MII和MAC/PLS之間的信號映射機制。它們(RS與MII)之間的關系如下圖:

MII的Management Interface是與STA(Station Management)相連的。

關於本節,具體可參考IEEE以太網標准802.3的22.3 Signal timing characteristics節,其中包含時鍾信號等更詳細內容。

MII接口主要包括四個部分。一是從MAC層到PHY層的發送數據接口,二是從PHY層到MAC層的接收數據接口,三是從PHY層到MAC層的狀態指示信號,四是MAC層和PHY層之間傳送控制和狀態信息的MDIO接口。

MII包括一個數據接口,以及一個MAC和PHY之間的管理接口:

數據接口: 包括分別用於發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鍾和控制信號。MII數據接口總共需要16個信號,包括
TX_ER(transmit coding error): TX_ER同步於TX_CLK,在數據傳輸過程中,如果TX_ER有效超過一個時鍾周期,並且此時TX_EN是有效的,則數據通道中傳輸的數據是無效的,沒用的。注:當TX_ER有效並不影響工作在10Mb/s的PHY或者TX_EN無效時的數據傳輸。在MII接口的連線中,如果TX_ER信號線沒有用到,必須將它下拉接地。
TXD<3:0>(transmit data): TXD由RS驅動,同步於TX_CLK,在TX_CLK的時鍾周期內,並且TX_EN有效,TXD上的數據被PHY接收,否則TXD的數據對PHY沒有任何影響。
TX_EN: 發送使能。TX_EN由Reconciliation子層根據TX_CLK上升沿同步進行轉換,時序如圖22-16所示。
TX_CLK(transmit clock): TX_CLK (Transmit Clock)是一個連續的時鍾信號(即系統啟動,該信號就一直存在),它是TX_EN, TXD, and TX_ER(信號方向為從RS到PHY)的參考時鍾,TX_CLK由PHY驅動TX_CLK的時鍾頻率是數據傳輸速率的25%,偏差±100ppm。例如,100Mb/s模式下,TX_CLK時鍾頻率為25MHz,占空比在35%至65%之間。
COL(collision detected): COL不需要同步於參考時鍾。The behavior of the COL signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自動協商禁止,人工設為全雙工模式), or when the Auto-Negotiation process selects a full duplex mode of operation。即半雙工模式信號有效,全雙工模式信號無效。
RXD<3:0>(receive data): RXD由RS驅動,同步於RX_CLK,在RX_CLK的時鍾周期內,並且RX_DV有效,RXD上的數據被RS接收,否則RXD的數據對RS沒有任何影響。While RX_DV is de-asserted, the PHY may provide a False Carrier indication by asserting the RX_ER signal while driving the value <1110> onto RXD<3:0>。
RX_ER(receive error): RX_ER同步於RX_CLK,其在RX通道中的作用類似於TX_ER對於TX通道數據傳輸的影響。
RX_CLK: 它與TX_CLK具有相同的要求,所不同的是它是RX_DV, RXD, and RX_ER(信號方向是從PHY到RS)的參考時鍾。RX_CLK同樣是由PHY驅動,PHY可能從接收到的數據中提取時鍾RX_CLK,也有可能從一個名義上的參考時鍾(e.g., the TX_CLK reference)來驅動RX_CLK。
CRS(carrier sense): CRS不需要同步於參考時鍾,只要通道存在發送或者接收過程,CRS就需要有效。The behavior of the CRS signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自動協商禁止,人工設為全雙工模式), or when the Auto-Negotiation process selects a full duplex mode of operation,即半雙工模式信號有效,全雙工模式信號無效。
RX_DV(Receive Data Valid): RXD_DV同步於RX_CLK,被PHY驅動,它的作用如同於發送通道中的TX_EN,不同的是在時序上稍有一點差別:為了讓數據能夠成功被RS接收,要求RXD_DV有效的時間必須覆蓋整個FRAME的過程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。
MII以4位半字節方式傳送數據雙向傳輸,時鍾速率25MHz。其工作速率可達100Mb/s。
MII管理接口: 是個雙信號接口,通過管理接口,MAC就能監視和控制PHY。其管理是使用SMI(Serial Management Interface) 總線通過讀寫PHY的寄存器來完成的。一個是時鍾信號(***MDC (management data clock)***)。另一個是數據信號(***MDIO (management data input/output)***)。
MDC: 由站管理實體向PHY提供,作為在MDIO信號上傳送信息的定時參考。 MDC是一種非周期性的信號,沒有最高或最低時間。 無論TX_CLK和RX_CLK的標稱周期如何,MDC的最小高低時間應為160 ns,MDC的最小周期為400 ns。
MDIO: 是PHY和STA之間的雙向信號。 它用於在PHY和STA之間傳輸控制信息和狀態。 控制信息由STA同步地針對MDC驅動並且由PHY同步地采樣。 狀態信息由PHY針對MDC同步驅動並由STA同步采樣。

MII接口信號定義如下:

信號名稱 描述 方向
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。

PHY 里面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器里面,MAC 通過SMI 總線不斷的讀取PHY 的狀態寄存器以得知目前PHY 的狀態。例如連接速度、雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的。例如流控的打開關閉、自協商模式還是強制模式等。不論是物理連接的MII總線和SMI總線還是PHY的狀態寄存器和控制寄存器都是由IEEE的規范的。因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。
MII支持10Mbps和100Mbps的操作,一個接口由14根線組成,它的支持還是比較靈活的。但是有一個缺點是因為它一個端口用的信號線太多,如果一個8端口的交換機要用到112根線,16端口就要用到224根線,到32端口的話就要用到448根線。一般按照這個接口做交換機是不太現實的。所以現代的交換機的制作都會用到其它的一些從MII簡化出來的標准,比如RMII、SMII、GMII等。


二、RMII,SMII,GMII,RGMII

RMII

RMII(Reduced Media Independant Interface)
  簡化媒體獨立接口是標准的以太網接口之一,比MII有更少的I/O傳輸。RMII收發使用2位數據進行傳輸,收發時鍾均采用50MHz時鍾源。

       RMII口是用兩根線來傳輸數據的,MII口是用4根線來傳輸數據的,GMII是用8根線來傳輸數據的。MII/RMII只是一種接口,對於10Mbps線速,MII的時鍾速率是2.5MHz就可以了,RMII則需要5MHz;對於100Mbps線速,MII需要的時鍾速率是25MHz,RMII則是50MHz。
  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表示數據的優先級!

RMII接口信號定義如下:

信號名稱 描述 方向
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。

發送器: 在千兆速率下,向PHY提供GTXCLK信號、TXD、TXEN、TXER信號與此時鍾信號同步。否則在10/100Mbps速率下,PHY提供TXCLK時鍾信號,其它信號與此信號同步。其工作頻率為25MHz(100M網絡)或2.5MHz(10M網絡)。
GTXCLK——吉比特TX…信號的時鍾信號(125MHz)
TXCLK——10/100Mbps信號時鍾
TXD[7…0]——被發送數據
TXEN——發送器使能信號
TXER——發送器錯誤(用於破壞一個數據包)
接收器:
RXCLK——接收時鍾信號(從收到的數據中提取,因此與GTXCLK無關聯)
RXD[7…0]——接收數據
RXDV——接收數據有效指示
RXER——接收數據出錯指示
COL——沖突檢測(僅用於半雙工狀態)
管理配置: 管理配置接口控制PHY的特性。該接口有32個寄存器地址,每個地址16位。其中前16個已經在“IEEE 802.3,2000-22.2.4 Management Functions”中規定了用途,其余的則由各器件自己指定。
MDC——配置接口時鍾
MDIO——配置接口I/O

GMII信號定義如下:

信號名稱 描述 方向
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,下圖為發送接收的時序:

在這里插入圖片描述
在這里插入圖片描述

三、MII接口對比

表8‑2 MII接口對比

 

簡述

Pins

速率計算

MII

基本的100Mbps/10Mbps接口

RXD[3:0]、TXD[3:0]

TX_ER、TX_EN

RX_ER、RX_DV

TX_CLK、RX_CLK

CRS、COL

Clock=25MHz or 2.5MHz

數據位寬4bit(一個時鍾周期傳輸4bit數據)

100Mbps=25 MHz *4bit

10Mbps=2.5 MHz *4bit

RMII

在MII基礎上精簡的100Mbps/10Mbps接口;

通過提升Clock頻率保持與MII一樣的速率;

RXD[1:0]、TXD[1:0]

TX_EN

RX_ER

CLK_REF

CRS_DV

Clock=50MHz

數據位寬2bit(一個時鍾周期傳輸2bit數據)

100Mbps=50 MHz *2bit

10Mbps是利用10個周期采樣一次數據,相當於

10Mbps=50MHz/10*2bit

SMII

串行MII 100Mbps/10Mbps接口;

進一步提升Clock頻率保持與MII一樣的速率;

RXD[1:0]

TXD[1:0]

TX_EN

RX_ER

CLK_REF

CRS_DV

Clock=125MHz

數據位寬1bit(一個時鍾周期傳輸1bit數據)

串行數據幀:一幀10bit(8bit data+2bit control)

計算有效帶寬時需要去掉控制位

100Mbps=125 MHz *(8bit/10bit)

10Mbps是利用10個周期采樣一次數據,相當於

10Mbps=(125 MHz/10)*(8bit/10bit)

GMII

在MII接口基礎上提升了數據位寬和Clock頻率成為1000Mbps接口

RXD[7:0]、TXD[7:0]

TX_ER、TX_EN

RX_ER、RX_DV

GTX_CLK、RX_CLK

CRS、COL

Clock=125MHz

數據位寬8bit(一個時鍾周期傳輸8bit數據)

1000Mbps=125 MHz *8bit

RGMII

GMII的簡化版本

RXD[3:0]、TXD[3:0]

TX_EN

RX_DV

TX_CLK、RX_CLK

CRS、COL

Clock=125MHz

數據位寬4bit(一個時鍾周期里,上升沿取TX\RX的0-3bit,下降沿取TX\RX的4-7bit,所以實際還是在一個時鍾周期里傳輸8bit數據)

1000Mbps=125 MHz *8bit

100Mbps=25 MHz *8bit

10Mbps=2.5MHz *8bit

SGMII

串行GMII,在此基礎上提升了時鍾頻率達到1000Mbps

RXD[0]、TXD[0]

RX_CLK

Clock=125MHz

數據位寬1bit(一個時鍾周期傳輸1bit數據)

串行數據幀:一幀10bit(8bit data+2bit control)

計算有效帶寬時需要去掉控制位

1000Mbps=125 0MHz *(8bit/10bit)

MII接口直接的區別與聯系通過上表很容易進行區分。

 

四、參考資料

1、微信公眾號OpenFPGA,https://mp.weixin.qq.com/s/B84yB2LkSfl4KTdgypS4hg

2、https://blog.csdn.net/ChenGuiGan/article/details/108603550

3、https://blog.csdn.net/zcshoucsdn/article/details/80090802#comments


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM