(1)、PHY 基本知識
(2)、MAC 概述
(3)、MDIO 接口
(4)、IEEE802.3 協議標准
(5)、MAC 、MII、PHY、MDIO之間的聯系
(6)、MII 家族
對於MAC和PHY連接,我們稱為 Forward (G)MII
對於MAC和MAC相連,叫 Reverse (G)MII
----------author:midu
-----------------dateTime:20200612
----------------------qq:1327706646
ios 網絡模型
圖phy
圖 mac
mac 和phy 關聯圖
(1)、PHY 基本知識
PHY((Physical Layer,PHY))是IEEE802.3中定義的一個標准模塊,STA(station management entity,管理實體,一般為MAC或CPU)通過SMI(Serial Manage Interface)對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 節有介紹,但不涉及所有寄存器,個別寄存器需要到其它章節中看,當然,文檔里面也提到該在哪里找到哪個寄存器。
(2)、MAC 概述
MAC(Media Access Control)即媒體訪問控制子層協議。該部分有兩個概念:MAC可以是一個硬件控制器 及 MAC通信以協議。該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。MAC硬件大約就是下面的樣子了:
網卡(Network Interface Card,簡稱NIC),也稱網絡適配器,是電腦與局域網相互連接的設備。無論是普通電腦還是高端服務器,只要連接到局域網,就都需要安裝一塊網卡。如果有必要,一台電腦也可以同時安裝兩塊或多塊網卡。
電腦之間在進行相互通訊時,數據不是以流而是以幀的方式進行傳輸的。我們可以把幀看做是一種數據包,在數據包中不僅包含有數據信息,而且還包含有數據的發送地、接收地信息和數據的校驗信息。一塊網卡包括OSI模型的兩個層——物理層和數據鏈路層。物理層定義了數據傳送與接收所需要的電與光信號、線路狀態、時鍾基准、數據編碼和電路等,並向數據鏈路層設備提供標准接口。數據鏈路層則提供尋址機構、數據幀的構建、數據差錯檢查、傳送控制、向網絡層提供標准的數據接口等功能。
網卡的功能主要有兩個:一是將電腦的數據封裝為幀,並通過網線(對無線網絡來說就是電磁波)將數據發送到網絡上去;二是接收網絡上其它設備傳過來的幀,並將幀重新組合成數據,發送到所在的電腦中。網卡能接收所有在網絡上傳輸的信號,但正常情況下只接受發送到該電腦的幀和廣播幀,將其余的幀丟棄。然后,傳送到系統CPU做進一步處理。當電腦發送數據時,網卡等待合適的時間將分組插入到數據流中。接收系統通知電腦消息是否完整地到達,如果出現問題,將要求對方重新發送。
需要說明的是網卡芯片也有“軟硬”之分,特別是對與主板板載(LOM)的網卡芯片來說更是如此,這是怎么回事呢?大家知道,以太網接口可分為協議層和物理層。
協議層是由一個叫MAC(Media Access Layer,媒體訪問層)控制器的單一模塊實現。
物理層由兩部分組成,即PHY(Physical Layer,物理層)和傳輸器。
常見的網卡芯片都是把MAC和PHY集成在一個芯片中,但目前很多主板的南橋芯片已包含了以太網MAC控制功能,只是未提供物理層接口,因此,需外接PHY芯片以提供以太網的接入通道。這類PHY網絡芯片就是俗稱的“軟網卡芯片”,常見的PHY功能的芯片有RTL8201BL、VT6103等等。
“軟網卡”一般將網絡控制芯片的運算部分交由處理器或南橋芯片處理,以簡化線路設計,從而降低成本,但其多少會更多占用系統資源
(3)、MDIO 接口
MDIO(Management Data Input/Output),對G比特以太網而言,串行通信總線稱為管理數據輸入輸出 (MDIO)。 該總線由IEEE通過以太網標准IEEE 802.3的若干條款加以定義。 MDIO是一種簡單的雙線串行接口(2個管腳:MDC和MDIO),將管理器件(如MAC控制器、微處理器)與具備管理功能的收發器 (如多端口吉比特以太網收發器或 10GbE XAUI收發器)相連接,從而控制收發器並從收發器收集狀態信息。 可收集的信息包括鏈接狀態、傳輸速度與選擇、斷電、低功率休眠狀態、TX/RX模式選擇、自動協商控制、環回模式控制等。 除了擁有 IEEE 要求的功能之外,收發器廠商還可添加更多的信息收集功能。
MDC是管理數據的時鍾輸入,最高速率可達8.3MHz。 MDIO是管理數據的輸入輸出雙向接口,數據是與MDC時鍾同步的。
MDIO的工作流程為: MDIO接口在沒有傳輸數據的空閑狀態(IDLE)數據線MDIO處於高阻態。 MDIO出現一個2bit的開始標識碼(01)一個讀/寫操作開始。 MDIO出現一個2bit數據來標識是讀操作(10)還是寫操作(01)。 MDIO出現一個5bit數據標識PHY的地址。 MDIO出現一個5bitPHY寄存器地址。 MDIO需要2個時鍾的訪問時間。 MDIO串行讀出/寫入16bit的寄存器數據。 MDIO恢復成IDLE狀態,同時MDIO進入高阻狀態。
管理配置:(控制和狀態信息) MDC——配置接口時鍾 MDIO——配置接口I/O 管理配置接口控制PHY的特性。該接口有32個寄存器地址,每個地址16位。 其中前16個已經在“IEEE 802.3,2000-22.2.4 Management Functions”中規定了用途,其余的則由各器件自己指定。
(4)、IEEE802.3 協議標准
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基帶網絡介紹。但是,並不是說每部分都是獨立的。
(5)、MAC 、MII、PHY、MDIO之間的聯系
工作過程:
PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什么地址,數據還是CRC),每4bit就增加1bit的檢錯碼,然后把並行數據轉化為串行流數據,再按照物理層的編碼規則(10Based-T的NRZ編碼或100based-T的曼徹斯特編碼)把數據編碼,再變為模擬信號把數據送出去。收數據時的流程反之。現在來了解PHY的輸出后面部分。一顆CMOS制程的芯片工作的時候產生的信號電平總是大於0V的(這取決於芯片的制程和設計需求),但是這樣的信號送到100米甚至更長的地方會有很大的直流分量的損失。而且如果外部網現直接和芯片相連的話,電磁感應(打雷)和靜電,很容易造成芯片的損壞。
再就是設備接地方法不同,電網環境不同會導致雙方的0V電平不一致,這樣信號從A傳到B,由於A設備的0V電平和B點的0V電平不一樣,這樣會導致很大的電流從電勢高的設備流向電勢低的設備。我們如何解決這個問題呢?
這時就出現了Transformer(隔離變壓器)這個器件。它把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,並且通過電磁場的轉換耦合到連接網線的另外一端。這樣不但使網線和PHY之間沒有物理上的連接而換傳遞了信號,隔斷了信號中的直流分量,還可以在不同0V電平的設備中傳送數據。
隔離變壓器本身就是設計為耐2KV~3KV的電壓的。也起到了防雷感應(我個人認為這里用防雷擊不合適)保護的作用。有些朋友的網絡設備在雷雨天氣時容易被燒壞,大都是PCB設計不合理造成的,而且大都燒毀了設備的接口,很少有芯片被燒毀的,就是隔離變壓器起到了保護作用。
10BaseT和100BaseTXPHY實現方式不同:10BaseT采用曼徹斯特編碼,100BaseTX采用4B/5B編碼。
曼徹斯特編碼,常用於局域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鍾信號,又作數據信號;從高到低跳變表示”1”,從低到高跳變表示”0”。還有一種是差分曼徹斯特編碼,每位中間的跳變僅提供時鍾定時,而用每位開始時有無跳變表示”0”或”1”,有跳變為”0”,無跳變為”1”。
phy 和mac 的區別:
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等。
(6)、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接口主要包括四個部分。一是從MAC層到PHY層的發送數據接口,二是從PHY層到MAC層的接收數據接口,三是從PHY層到MAC層的狀態指示信號,四是MAC層和PHY層之間傳送控制和狀態信息的MDIO接口。
MII是英文Medium Independent Interface的縮寫,翻譯成中文是“介質獨立接口”,該接口一般應用於MAC層和PHY層之間的以太網數據傳輸,也可叫數據接口。(MAC與PHY間的管理接口一般是MDIO)
MII接口的類型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。下面對它們進行一一介紹。 這里fpga 做了mac 的芯片,實現mac的功能
圖 phy1 百兆網
對於10/100M的MII
rx_clk都是PHY提供,為2.5MHz/25MHz
tx_clk都是PHY提供,為2.5MHz/25MHz
數據位4bit,即使用MDI的4根線,即2對差分線
圖 phy3 以太網
對於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
圖 phy4 千兆網
對於1000M的GMII
rx_clk 由PHY提供,為125MHz
gtx_clk由MAC提供,為125MHz
數據位8bit 即使用MDI的8根線,即4對差分線
圖 phy5 以太網
對於10/100/1000M的RGMII
rx_clk由PHY提供,為125MHz
gtx_clk由MAC提供,為125MHz
圖二:MAC和PHY集成在一顆芯片的以太網卡(點擊放大)
①RJ-45接口 ②Transformer(隔離變壓器) ③PHY芯片
④MAC芯片 ⑤EEPROM ⑥BOOTROM插槽
⑦WOL接頭 ⑧晶振 ⑨電壓轉換芯片
⑩LED指示燈
鳴謝:
https://www.cnblogs.com/YINBin/p/10980936.html 什么事phy
https://blog.csdn.net/u012712636/article/details/81287436 phy 的基本知識
https://www.cnblogs.com/zxc2man/p/3769777.html mdio rgmii mac phy簡單了解
http://blog.chinaunix.net/uid-24148050-id-131084.html mii 接口全家福
https://blog.csdn.net/weixin_34101784/article/details/85992166 對於phy芯片的認識
https://www.cnblogs.com/cute/archive/2011/04/08/2009572.html phy 芯片
https://blog.csdn.net/ZCShouCSDN/article/details/80090802 Ethernet(以太網)之一 詳解 MAC、MII、PHY
https://www.cnblogs.com/feitian629/archive/2013/01/25/2876857.html MAC和PHY的區別