以太網詳解(一)-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通信協議構成。該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。MAC硬件框圖如下圖所示:

在這里插入圖片描述

在發送數據的時候,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的寄存器留給芯片制造商自由定義,如下表所示:
在這里插入圖片描述
注:

  1. 上圖B和E表示在特定接口下,寄存器是基本的還是擴展的。例如:MII接口下只有0和1寄存器是基本的,其它的是擴展的。所為擴展是指留給IEEE以后的擴展特性用,不是給PHY廠商的擴展,PHY廠商自定義的只能是16~31號寄存器 。
  2. 在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,下圖為發送接收的時序:

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

 

結構

  從硬件的角度看,以太網接口電路主要由MAC(Media Access Control)控制器和物理層接口PHY(Physical Layer,PHY)兩大部分構成。如下圖所示
MAC_PHY
  但是,在實際的設計中,以上三部分並不一定獨立分開的。 由於,PHY整合了大量模擬硬件,而MAC是典型的全數字器件。考慮到芯片面積及模擬/數字混合架構的原因,通常,將MAC集成進微控制器而將PHY留在片外。更靈活、密度更高的芯片技術已經可以實現MAC和PHY的單芯片整合。可分為下列幾種類型:

  • CPU集成MAC與PHY。目前來說並不多見
    MAC_PHY_1
  • CPU集成MAC,PHY采用獨立芯片。比較常見
    MAC_PHY_2
  • CPU不集成MAC與PHY,MAC與PHY采用集成芯片。比較常見
    MAC_PHY_3

  MAC及PHY工作在OSI七層模型的數據鏈路層和物理層。具體如下
MAC_PHY_OSI
  IEEE802.3標准文檔下載地址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分為很多個section。
IEEE802.3
標准文檔賊長,沒有全部看過,大概第一部分是10Mb/s以太網(其中有關於MAC的規范),第二部分是100BASE-T 100Mb/s基帶網絡介紹,第三部分是1000 Mb/s基帶網絡介紹,第四部分是10 Gb/s基帶網絡介紹。但是,並不是說每部分都是獨立的

什么是MAC

  MAC(Media Access Control)即媒體訪問控制子層協議。該部分有兩個概念:MAC可以是一個硬件控制器 及 MAC通信以協議。該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。MAC硬件大約就是下面的樣子了:
MAC
  在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息並是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC(邏輯鏈路控制)層。該層協議是以太網MAC由IEEE-802. 3以太網標准定義。最新的MAC同時支持 10Mbps和100Mbps兩種速率。
  以太網數據鏈路層其實包含MAC(介質訪問控制)子層和LLC(邏輯鏈路控制)子層。一塊以太網卡MAC芯片的作用不但要實現MAC子層和LLC子層的功能,還要提供符合規范的PCI界面以實現和主機的數據交換。
  MAC從PCI總線收到IP數據包(或者其他網絡層協議的數據包)后,將之拆分並重新打包成最大1518Byte、最小64Byte的幀。這個幀里面包括了目標MAC地址、自己的源MAC地址和數據包里面的協議類型(比如IP數據包的類型用80表示,最后還有一個DWORD(4Byte)的CRC碼。
  可是目標的MAC地址是哪里來的呢?這牽扯到一個ARP協議(介乎於網絡層和數據鏈路層的一個協議)。第一次傳送某個目的IP地址的數據的時候,先會發出一個ARP包,其MAC的目標地址是廣播地址,里面說到:“誰是xxx.xxx.xxx.xxx這個IP地址的主人?”因為是廣播包,所有這個局域網的主機都收到了這個ARP請求。收到請求的主機將這個IP地址和自己的相比較,如果不相同就不予理會,如果相同就發出ARP響應包。這個IP地址的主機收到這個ARP請求包后回復的ARP響應里說到:“我是這個IP地址的主人”。這個包里面就包括了他的MAC地址。以后的給這個IP地址的幀的目標MAC地址就被確定了。(其它的協議如IPX/SPX也有相應的協議完成這些操作)
  IP地址和MAC地址之間的關聯關系保存在主機系統里面,叫做ARP表。由驅動程序和操作系統完成。在Microsoft的系統里面可以用arp-a 的命令查看ARP表。收到數據幀的時候也是一樣,做完CRC校驗以后,如果沒有CRC效驗錯誤,就把幀頭去掉,把數據包拿出來通過標准的接口傳遞給驅動和上層的協議棧。最終正確的達到我們的應用程序。

什么是MII

  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接口如下圖所示:
MII
  提到MII,就有可能涉及到RS,PLS,STA等名詞術語,下面講一下他們之間對應的關系。
  所謂RS即Reconciliation sublayer,它的主要功能主要是提供一種MII和MAC/PLS之間的信號映射機制。它們(RS與MII)之間的關系如下圖:
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包括一個數據接口,以及一個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同步采樣。

  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(Reduced Media Independant Interface)

  簡化媒體獨立接口是標准的以太網接口之一,比MII有更少的I/O傳輸。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表示數據的優先級!

GMII(Gigabit MII)

  GMII是千兆網的MII接口,這個也有相應的RGMII接口,表示簡化了的GMII接口。
  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

什么是PHY

  PHY((Physical Layer,PHY))是IEEE802.3中定義的一個標准模塊,STA(station management entity,管理實體,一般為MAC或CPU)通過SMI(Serial Manage Interface)對PHY的行為、狀態進行管理和控制,而具體管理和控制動作是通過讀寫PHY內部的寄存器實現的。一個PHY的基本結構如下圖:
PHY
  PHY是物理接口收發器,它實現OSI模型的物理層。IEEE-802.3標准定義了以太網PHY。包括MII/GMII(介質獨立接口)子層、PCS(物理編碼子層)、PMA(物理介質附加)子層、PMD(物理介質相關)子層、MDI子層。它符合IEEE-802.3k中用於10BaseT(第14條)和100BaseTX(第24條和第25條)的規范。

PHY寄存器在IEEE802.3標准的 22.2.4 Management functions 節有介紹,但不涉及所有的寄存器,個別寄存器需要到其它章節中看,當然,文檔里面也提到該在哪里找到哪個寄存器。

PHY寄存器

  PHY寄存器的地址空間為5位,從0到31最多可以定義32個寄存器(隨着芯片功能不斷增加,很多PHY芯片采用分頁技術來擴展地址空間以定義更多的寄存器),IEEE802.3定義了地址為0-15這16個寄存器的功能,地址16-31的寄存器留給芯片制造商自由定義,如下表所示。
PHY_REG

(1)官方介紹請參考IEEE802.3標准的 22.2.4 Management functions 節。
(2)上圖的B和E表示了,在特定接口下,寄存器是基本的還是擴展的。例如:MII接口下只有0和1寄存器是基本的,其它的是擴展的。注意:所為擴展是指留給IEEE以后的擴展特性用,不是給PHY廠商的擴展,PHY廠商自定義的只能是16~31號寄存器
(3)在IEEE標准文檔及某些PHY手冊中,某寄存器的比特(bit)用X.y表示,如0.15表示第0寄存器的第15位。

Control Register (Register 0)

  寄存器0是PHY控制寄存器,通過Control Register可以對PHY的主要工作狀態進行設置。應該保證控制寄存器每個位的默認值,以便在沒有管理干預的情況下,上電或復位時PHY的初始狀態為正常操作狀態。Control Register的每一位完成的功能見下。
PHY_CTRL_REG

  • Reset: 通過將位0.15設置為邏輯1來完成復位PHY。 該操作應將狀態和控制寄存器設置為其默認狀態。 因此,此操作可能會改變PHY的內部狀態以及與PHY關聯的物理鏈路的狀態。復位過程中Bit15保持為1,復位完成之后該位應該自動清零。 在復位過程完成之前,PHY不需要接受對控制寄存器的寫入操作,並且在復位過程完成之前寫入0.15以外的控制寄存器位可能不起作用。 復位過程應在0.15位設置的0.5 s內完成。

(1)一般要改變端口的工作模式(如速率、雙工、流控或協商信息等)時,在設置完相應位置的寄存器之后,需要通過Reset位復位PHY來使配置生效。
(2)該比特位的默認值為 0。

  • Loopback: 當位0.14被設置為邏輯1時,PHY應置於環回操作模式。 當位0.14置位時,PHY接收電路應與網絡介質隔離,並且MII或GMII處的TX_EN斷言不應導致網絡介質上的數據傳輸。 當位0.14置位時,PHY應接受來自MII或GMII發送數據路徑的數據,並將其返回給MII或GMII接收數據路徑,以響應TX_EN的斷言。 當位0.14置位時,從斷言TX_EN到斷言RX_DV的延遲應小於512 BT。 當位0.14置位時,除非設置了位0.7,否則COL信號應始終保持無效,在這種情況下,COL信號的行為應如22.2.4.1.9所述。 清0.14位為零允許正常操作。
      Loopback是一個調試以及故障診斷中常用的功能,Bit14置1之后,PHY和外部MDI的連接在邏輯上將被斷開,從MAC經過MII/GMII(也可能是其他的MAC/PHY接口)發送過來的數據將不會被發送到MDI上,而是在PHY內部(一般在PCS)回環到本端口的MII/GMII接收通道上,通過Loopback功能可以檢查MII/GMII以及PHY接口部分是否工作正常,對於端口不通的情況可用於故障定位。

(1)需要注意的是,很多時候PHY設置Loopback后端口可能就Link down了,MAC無法向該端口發幀,這時就需要通過設置端口Force Link up才能使用Loopback功能。
(2)該比特位的默認值為 0。

  • Speed Selection: ***Bit13和Bit6兩位聯合實現***對端口的速率控制功能。鏈接速度可以通過自動協商過程或手動速度選擇來選擇。 通過將位0.12清零來禁用自動協商時,允許手動速度選擇。
  • 當禁用自動協商並將位0.6清除為邏輯0時,將位0.13設置為邏輯1將PHY配置為100 Mb / s操作,並將位0.13清除為邏輯0將PHY配置為10 Mb / s操作 。
  • 當禁用自動協商並將位0.6設置為邏輯1時,將位0.13清零為邏輯0會選擇1000 Mb / s的操作。 將位0.6和0.13設置為邏輯1的組合保留用於未來的標准化。
  • 當使能自動協商時,可以讀取或寫入位0.6和0.13,但位0.6和位0.13的狀態對鏈路配置沒有影響,位0.6和位0.13不需要反映當它被讀取時鏈接。

  如果PHY通過比特1.15:9和比特15.15:12報告它不能工作在所有速度時,則比特0.6和0.13的值應該與PHY可以操作的速度相對應。並且任何試圖將該位設置為無效的操作均將被忽略。

(1)對Speed Selection的修改設置,往往需要復位端口才能配置生效。因此在設置該位置的時候需要檢查自動協商的設置並通過Bit15復位端口。
(2)位0.6和0.13的默認值是根據位1.15:9和15.15:12所指示的PHY可以操作的***最高數據速率***的編碼組合。

  • Auto-Negotiation Enable: 自動協商過程應通過將位0.12設置為邏輯1來啟用。 如果位0.12設置為邏輯1,則位0.13、0.8和0.6不應對鏈路配置和除了自動協商協議規定之外的站操作產生影響。 如果將位0.12清零為邏輯0,則無論鏈路配置和自動協商過程的先前狀態如何,位0.13、0.8和0.6都將確定鏈路配置。
      如果PHY通過位1.3報告它缺乏執行自動協商的能力,則PHY應在位0.12返回零值。 如果PHY通過位1.3報告它缺乏執行自動協商的能力,則位0.12應該始終寫為0,並且任何嘗試將1寫入位0.12都應該被忽略。

必須注意的是,對於1000BASE-T接口,自動協商必須打開。

  • Power Down: 通過將位0.11設置為邏輯1,可以將PHY置於低功耗狀態。 清0.11位為零允許正常操作。 PHY在掉電狀態下的具體行為是特定實現的。 處於掉電狀態時,PHY應響應管理事務。 在轉換到掉電狀態期間和處於掉電狀態期間,PHY不應在MII或GMII上產生寄生信號。
      當位0.11或位0.10被設置為邏輯1時,PHY不需要滿足RX_CLK和TX_CLK信號功能要求。 在位0.11和0.10清零后,PHY應在0.5 s內滿足22.2.2中定義的RX_CLK和TX_CLK信號功能要求。

(1)Power Down模式一般在軟件shut down端口的時候使用,需要注意的是端口從Power Down模式恢復,需要復位端口以保證端口可靠的連接。
(2)該位的默認值為 0。

  • Isolate: 通過將位0.10設置為邏輯1,PHY可能被迫將其數據路徑與MII或GMII電隔離。 清零位0.10允許正常操作。 當PHY與MII或GMII隔離時,它不會響應TXD數據包和TX_EN,TX_ER、GTX_CLK的輸入。並且它的TX_CLK,RX_CLK,RX_DV,RX_ER,RXD數據包、COL和CRS輸出均應為高阻態。 當PHY與MII或GMII隔離時,它將響應管理事務(MDC/MDIO接口的信號)。

(1)IEEE802.3沒有對Isolate 時MDI接口的狀態進行規范,此時MDI端可能還在正常運行。Isolate在實際應用中並沒有用到。
(2)由於目前很多百兆的PHY芯片其MAC接口主流的都是SMII/S3MII,8個端口的接口是相互關聯的,一個端口設置Isolate可能會影響其他端口的正常使用,因此在使用中注意不要隨意更改bit10的狀態。

  • Restart Auto-Negotiation: 如果PHY通過位1.3報告它缺乏執行自動協商的能力,或者如果自動協商被禁用,則PHY應在位0.9返回零值。 如果PHY通過位1.3報告它缺乏執行自動協商的能力,或者如果禁用了自動協商,則應將位0.9始終寫為0,並且任何嘗試將1寫入位0.9應被忽略。
      Bit9置1將重新啟動端口的自動協商進程,當然前提是Auto-Negotiation Enable是使能的。

一般在修改端口的自動協商能力信息之后通過Bit9置1重新啟動自動協商來使端口按照新的配置建立link。

  • Duplex Mode: 可以通過自動協商過程或手動雙面選擇來選擇雙工模式。 通過將位0.12清零來禁用自動協商時,允許手動雙面選擇。
  • 當禁用自動協商時,將位0.8設置為邏輯1將PHY配置為全雙工操作,並將位0.8清零以將邏輯0配置為用於半雙工操作的PHY。
  • 當啟用自動協商時,可以讀取或寫入位0.8,但位0.8的狀態對鏈路配置沒有影響。

  如果PHY通過位1.15:9和15.15:12報告它只能在一個雙工模式下工作,則位0.8的值應該與PHY可以工作的模式相對應,並且任何嘗試改變將該位0.8修改為無效指的操作應被忽略。

對Duplex Mode的修改配置也需要復位端口才能生效。

  • Collision Test: 沖突信號(COL)測試開關。在需要對COL信號進行測試時,可以通過Bit7置1,這時PHY將輸出一個COL脈沖以供測試。實際測試操作中也可以將端口配置為半雙工狀態,通過發幀沖突來測試COL信號,因此該配置實用價值不大。
  • Unidirectional enable: 如果PHY通過比特1.7報告它不具備編碼和傳輸來自媒體獨立接口的數據的能力,而不管PHY是否確定已建立有效鏈路,則PHY應在比特0.5中返回零值,並且 任何嘗試寫一個到位0.5應該被忽略。

Status register

  寄存器1是PHY狀態寄存器,主要包含PHY的狀態信息,大多數bit的值都是由芯片廠家確定的,每一個bit的功能在表3種已有詳細說明。
PHY_STA_REG
寄存器中各位的詳細說明如下:

  • 100BASE-T4 ability: 當讀為邏輯1時,位1.15指示PHY有能力使用100BASE-T4信令規范執行鏈路發送和接收。 當讀為邏輯0時,位1.15表示PHY缺乏使用100BASE-T4信令規范執行鏈路發送和接收的能力。
  • 100BASE-X full duplex ability: 當讀為邏輯1時,位1.14指示PHY有能力使用100BASE-X信令規范執行全雙工鏈路傳輸和接收。 當作為邏輯0讀取時,bit1.14表示PHY缺乏使用100BASE-X信令規范執行全雙工鏈路傳輸和接收的能力。
  • 100BASE-X half duplex ability: 當讀為邏輯1時,位1.13指示PHY有能力使用100BASE-X信令規范執行半雙工鏈路傳輸和接收。 當讀為邏輯0時,位1.13指示PHY缺乏使用100BASE-X信令規范執行半雙工鏈路傳輸和接收的能力。
  • 其他同類型的值意義基本與上面幾個相同:指示PHY所具有的工作模式能力,不再一一說明。
  • Unidirectional ability: 當讀為邏輯1時,位1.7指示PHY具有編碼和傳輸來自媒體獨立接口的數據的能力,而不管PHY是否確定已建立有效鏈路。 當讀為邏輯0時,位1.7指示PHY只有在PHY確定已建立有效鏈路時才能從媒體獨立接口傳輸數據。
  • MF preamble suppression ability: 當讀為邏輯1時,位1.6指示PHY能夠接受管理幀,而不管它們是否在22.2.4.5.2中描述的前導碼模式之前。 當讀為邏輯0時,位1.6指示PHY不能接受管理幀,除非它們之前是22.2.4.5.2中描述的前導碼模式。
  • Auto-Negotiation Complete: 當讀為邏輯1時,位1.5指示自動協商過程已完成,並且由自動協商協議(條款28或條款37)實施的擴展寄存器的內容是有效的。 當讀為邏輯0時,位1.5指示自動協商過程尚未完成,並且擴展寄存器的內容由自動協商協議的當前狀態定義,或者為手動配置寫入。 如果自動協商通過清除位0.12禁用,則PHY應在位1.5返回零值。 如果PHY缺乏執行自動協商的能力,它還應在位1.5返回零值。

在調試以及異常故障處理時,可以通過該位寄存器的狀態判斷AN是否成功,從而進一步的檢查AN相關的設置是否正確,或者芯片的AN功能是否正常等。

  • Remote Fault: 當讀為邏輯1時,位1.4表示檢測到遠程故障狀態。 故障類型以及故障檢測的標准和方法是PHY特定的。 遠程故障位必須使用鎖存功能來實現,以便發生遠程故障將導致遠程故障位置位,並保持置位狀態直至被​​清除。 每當通過管理接口讀取寄存器1時,遠程故障位應清零,並且還應通過PHY復位清零。
      遠端錯誤指示位。Bit4=1代表連接對端(Link Partner)出錯,至於出錯的具體類型以及錯誤檢測機制在規范中並沒有定義,由PHY的制造商自由發揮,一般的廠商都會在其他的寄存器(Register16-31由廠商自行定義)指示比較詳細的錯誤類型。在與端口相關的故障查證中,Remote Fault是一個重要的指示信息,通過互聯雙方的Remote Fault信息(可能要加上其他的具體錯誤指示),可以幫助定位故障原因。
  • Auto-Negotiation ability: 當讀為邏輯1時,位1.3指示PHY有能力執行自動協商。 當讀為邏輯0時,位1.3指示PHY缺乏執行自動協商的能力。
  • Link Status: 當讀為邏輯1時,位1.2指示PHY已經確定已建立有效鏈路。 當作為邏輯0讀取時,位1.2指示該鏈接無效。 確定鏈路有效性的標准是PHY特定的。 鏈路狀態位應該使用鎖存功能來實現,以便發生鏈路故障情況將導致鏈路狀態位清零並保持清零,直到通過管理接口讀取。 此狀態指示旨在支持在30.5.1.1.4,aMediaAvailable中定義的管理屬性。
      實際應用中一般都是通過Bit2來判斷端口的狀態。而且,一般的MAC芯片也是通過輪詢PHY的這個寄存器值來判斷端口的Link狀態的(這個過程可能有不同的名稱,比如BCM叫做Link Scan,而Marvell叫做PHY Polling。)如前所述,在AN Enable的情況下,Link Status的信息只有在Auto-Negotiation Complete指示已經完成的情況下才是正確可靠的,否則有可能出錯。
  • Jabber Detect: 當作為邏輯1讀取時,位1.1指示已經檢測到爆音條件。 此狀態指示旨在支持30.5.1.1.6中定義的管理屬性,aJabber和30.5.1.3.1 nJabber中定義的MAU通知。 檢測Jabber條件的標准是PHY特定的。 Jabber檢測位應該使用鎖存功能來實現,以便發生Jabber條件將導致Jabber檢測位置位,並保持置位狀態直至被​​清除。 每次通過管理接口讀取寄存器1時,Jabber檢測位應清零,並且還應通過PHY復位清零。
      IEEE802.3對Jabber的解釋是“A condition wherein a station transmits for a period of time longer than the maximum permissible packet length, usually due to a fault condition”。這一位指示的是Link Partner發送的時間超過了規定的最大長度。值得注意的是,Jabber Detect只有在10BASE-T模式下才有意義,100和1000M模式是沒有定義Jabber這一功能的。

PHY Identifier Register

  寄存器2和3存放PHY芯片的型號代碼,寄存器2(PHY ID1)為高16位,而寄存器3(PHY ID2)為低16位。由芯片制造商自行定義,實際應用中軟件通過讀取這兩個寄存器的內容可以識別PHY的型號和版本。
  PHY標識符應由由IEEE分配給PHY制造商的組織唯一標識符(OUI)的(只需要使用第3至第24位,共22位),加上6位制造商的型號以及4位制造商的修訂版編號組成。 PHY標識符旨在提供足夠的信息來支持30.1.2中所要求的oResourceTypeID對象。
  OUI的第三位分配給位2.15,OUI的第四位分配給位2.14,依此類推。 位2.0包含OUI的第十八位。 位3.15包含OUI的第十九位,位3.10包含OUI的第二十四位。 位3.9包含制造商型號的MSB。 位3.4包含制造商型號的LSB。 位3.3包含制造商版本號的MSB,位3.0包含制造商版本號的LSB。具體如下圖所示:
PHY_ID_REG

Auto-Negotiation Advertisement Register (Register 4) (R/W)

  寄存器4是自動協商的能力通告寄存器,在AN Enable的前提下(見寄存器0),端口根據該寄存器的相關配置將自動協商信息通過FLP在MDI上進行通告。當AN配置為Disable狀態的時候,寄存器4的配置將不起作用,端口的工作模式由控制寄存器中的配置決定。
  該寄存器包含PHY的通告能力,它們將在自動協商期間傳送給其鏈接伙伴。 基本頁的位定義在IEEE標准的28.2.1.2中定義。 上電時,在自動協商開始之前,該寄存器應具有以下默認配置:

  • Selector Field (4.4:0): 被設置為適當的代碼,如IEEE標准的附件28A中所規定。
  • Reserved(4.14): 被設置為邏輯0。
  • Technology Ability Field(4.11:5): 根據MII狀態寄存器(寄存器1)(1.15:11)中設置的值或等效值設置。 另見28.2.1.2.3和附件28D。
    PHY_REG_4

Link codeword encoding(基本鏈路碼字)

  在FLP Burst內傳輸的基本鏈路代碼字(基本頁面)應該傳達如圖28-7所示的編碼。 自動協商功能可以使用下一頁功能支持其他頁面。 下一頁交換中使用的鏈接代碼字的編碼在28.2.3.4中定義。 在FLP Burst中,D0應該是第一個傳輸的位。
這里寫圖片描述

Next Page function

  下一頁功能使用標准的自動協商仲裁機制來允許交換任意的數據。 數據由可選的下一頁信息攜帶,其遵循用於基本鏈接碼字的傳輸和確認過程。 定義了四種類型的下一頁編碼:消息頁面,未格式化頁面,擴展消息頁面和擴展的未格式化頁面。
  關於該部分,具體見IEEE標准的28.2.3.4 Next Page function。
  在IEEE標准中,Auto-Negotiation Advertisement Register中的各部分全部是在獨立章節中進行介紹的。具體如下:

  • Selector Field: 選擇器字段(S [4:0])是一個5位寬的字段,編碼32個可能的消息。 鏈路碼字中的選擇器字段S [4:0]應用於識別自動協商發送的消息的類型。 下表列出了可能發送的消息的類型。 隨着新消息的發展,該表格將相應更新。
    Selector Field
    未指定的組合保留供將來使用。 不會傳輸選擇器字段的預留組合。***我們所接觸的以太網PHY遵從IEEE802.3規范,Selector Field=0001,該區域不可隨意更改(很多PHY將此區域設計為只讀寄存器,以免被修改)***。
  • Technology Ability Field: 技術能力字段(A [6:0])是一個7位寬的字段,其中包含指示選擇器字段值特定的支持技術的信息。 這些位被映射到各個技術,以便能夠針對單個選擇器字段值並行通告能力。 附錄28B.2和附件28D描述了IEEE 802.3選擇器的技術能力字段編碼。 鏈接代碼字中可能會公布多種技術。 設備應支持其宣傳的技術的數據服務能力。
    Technology Ability Field
  • Extended Next Page: 擴展下一頁(XNP)被編碼在基本鏈路碼字的位D12中。 擴展下一頁位指示本地設備在設置為邏輯1時支持擴展下一頁的傳輸,並指示本地設備在設置為邏輯0時不支持擴展下一頁。 Extended Next Page的使用與協商的數據速率,媒體或鏈接技術是正交的。 擴展下一頁位按照28.2.3.4中的擴展下一頁功能規范使用。
  • Next Page: 無論選擇器字段值還是鏈接碼字編碼,下一頁(NP)都在D15位編碼。 支持附加鏈接碼字編碼的傳輸和接收是可選的。 如果不支持Next Page功能,NP位應始終設置為邏輯0。 如果設備實現下一頁功能並希望進行下一頁交換,則應將NP位設置為邏輯1。 設備可以實現下一頁功能,並通過將NP位設置為邏輯0來選擇不參與下一頁交換。 下一頁功能在28.2.3.4中定義。
  • Remote Fault: 遠程故障(RF)編碼在基本鏈路碼字的位D13中。 默認值是邏輯零。 遠程故障位為傳輸簡單的故障信息提供了一種標准的傳輸機制。 當自動協商通告寄存器(寄存器4)中的RF位設置為邏輯1時,發送的基本鏈路碼字中的RF位被設置為邏輯1。 當接收到的基本鏈路代碼字中的RF位被設置為邏輯1時,如果存在MII管理功能,則MII狀態寄存器(寄存器1)中的遠程故障位將被設置為邏輯1。

Auto-Negotiation Link Partner ability register (Register 5) (RO)

  寄存器5保存的是本端PHY接收到的對端PHY所通告的端口能力,寄存器5的結構和寄存器4基本一致。

Auto-Negotiation Expansion Register (Register 6) (RO)

  寄存器6保存了PHY自動協商過程的異常信息。從這個寄存其中我們可以獲取到Link Partner子否支持自動協商以及自動協商下一頁有沒有收到的信息。
Auto-Negotiation Expansion Register

Auto-Negotiation Next Page transmit register (Register 7) (R/W)

  自動協商下一頁發送寄存器包含在支持下一頁功能時要發送的下一頁鏈接碼字。 (見表28-6)內容在28.2.3.4中定義。 上電時,該寄存器應包含默認值2001H,該值表示消息代碼設置為Null消息的消息頁面。 該值可以由設備希望傳輸的任何有效的下一頁消息代碼替換。 寫入該寄存器應將mr_next_page_loaded設置為true。
Register 7

Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)

Register 8

 

https://blog.csdn.net/sternlycore/article/details/89065789


免責聲明!

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



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