結構
從硬體的角度看,以太網接口電路主要由MAC(Media Access Control)控制器和實體層接口PHY(Physical Layer,PHY)兩大部分構成。如下圖所示
但是,在實際的設計中,以上三部分并不一定獨立分開的。 由于,PHY整合了大量模拟硬體,而MAC是典型的全數字器件。考慮到晶片面積及模拟/數字混合架構的原因,通常,将MAC內建進微控制器而将PHY留在片外。更靈活、密度更高的晶片技術已經可以實作MAC和PHY的單晶片整合。可分為下列幾種類型:
- CPU內建MAC與PHY。目前來說并不多見
- CPU內建MAC,PHY采用獨立晶片。比較常見
- CPU不內建MAC與PHY,MAC與PHY采用內建晶片。比較常見
MAC及PHY工作在OSI七層模型的資料鍊路層和實體層。具體如下
IEEE802.3标準文檔下載下傳位址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分為很多個section。
标準文檔賊長,沒有全部看過,大概第一部分是10Mb/s以太網(其中有關于MAC的規範),第二部分是100BASE-T 100Mb/s基帶網絡介紹,第三部分是1000 Mb/s基帶網絡介紹,第四部分是10 Gb/s基帶網絡介紹。但是,并不是說每部分都是獨立的。
什麼是MAC
MAC(Media Access Control)即媒體通路控制子層協定。該部分有兩個概念:MAC可以是一個硬體控制器 及 MAC通信以協定。該協定位于OSI七層協定中資料鍊路層的下半部分,主要負責控制與連接配接實體層的實體媒體。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,就有可能涉及到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同步采樣。
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是實體接口收發器,它實作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的寄存器留給晶片制造商自由定義,如下表所示。
(1)官方介紹請參考IEEE802.3标準的 22.2.4 Management functions 節。
(2)上圖的B和E表示了,在特定接口下,寄存器是基本的還是擴充的。例如:MII接口下隻有0和1寄存器是基本的,其它的是擴充的。注意:所為擴充是指留給IEEE以後的擴充特性用,不是給PHY廠商的擴充,PHY廠商自定義的隻能是16~31号寄存器
(3)在IEEE标準文檔及某些PHY手冊中,某寄存器的比特(bit)用
表示,如0.15表示第0寄存器的第15位。
X.y
Control Register (Register 0)
寄存器0是PHY控制寄存器,通過Control Register可以對PHY的主要工作狀态進行設定。應該保證控制寄存器每個位的預設值,以便在沒有管理幹預的情況下,上電或複位時PHY的初始狀态為正常操作狀态。Control Register的每一位完成的功能見下。
- 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種已有詳細說明。
寄存器中各位的詳細說明如下:
- 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。具體如下圖所示:
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。
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]應用于識别自動協商發送的消息的類型。 下表列出了可能發送的消息的類型。 随着新消息的發展,該表格将相應更新。 未指定的組合保留供将來使用。 不會傳輸選擇器字段的預留組合。***我們所接觸的以太網PHY遵從IEEE802.3規範,Selector Field=0001,該區域不可随意更改(很多PHY将此區域設計為隻讀寄存器,以免被修改)***。
- Technology Ability Field: 技術能力字段(A [6:0])是一個7位寬的字段,其中包含訓示選擇器字段值特定的支援技術的資訊。 這些位被映射到各個技術,以便能夠針對單個選擇器字段值并行通告能力。 附錄28B.2和附件28D描述了IEEE 802.3選擇器的技術能力字段編碼。 連結代碼字中可能會公布多種技術。 裝置應支援其宣傳的技術的資料服務能力。
- 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 Next Page transmit register (Register 7) (R/W)
自動協商下一頁發送寄存器包含在支援下一頁功能時要發送的下一頁連結碼字。 (見表28-6)内容在28.2.3.4中定義。 上電時,該寄存器應包含預設值2001H,該值表示消息代碼設定為Null消息的消息頁面。 該值可以由裝置希望傳輸的任何有效的下一頁消息代碼替換。 寫入該寄存器應将mr_next_page_loaded設定為true。
Auto-Negotiation Link Partner Received Next Page register (Register 8) (RO)
未完待續。。。
附件
- 無
參考文檔
- IEEE Standard for Ethernet
- 網絡