該芯片作為PHY和SERDES使用
MII 是一個(gè)標(biāo)準(zhǔn)接口,用于連接 MAC 和 PHY。MII 是 IEEE-802.3 定義的以太網(wǎng)標(biāo)準(zhǔn), MII 接口可以同時(shí)控制多個(gè) PHY。
MII包含兩個(gè)接口:
1.一個(gè)數(shù)據(jù)接口,用戶 MAC 和 PHY 之間收發(fā) Ethernet 數(shù)據(jù) 2.一個(gè)管理接口,這個(gè)管理接口通常稱為 MDIO,MIIM 或者 SMI。 這個(gè)接口用于 MAC 從 PHY 讀取相關(guān)管理寄存器的值,或者往 PHY 管理寄存器上寫入數(shù)據(jù)。
MDIO
MDIO 也被稱為 MIIM,或者SMI,它是 IEEE802.3 定義標(biāo)準(zhǔn) MII 接口的一部分,用于 MAC 配置 PHY。MDIO 具有兩個(gè)信號(hào)線,分別如下:
1. MDC 時(shí)鐘線:MDIO 的時(shí)鐘信號(hào),由 MAC 驅(qū)動(dòng) PHY 2. MDIO 數(shù)據(jù)線:雙向數(shù)據(jù)線,用于在 MAC 和 PHY 之間傳輸配置信息
MDIO 總線只支持 MAC 作為主設(shè)備,PHY 作為從設(shè)備。MIDO 支持兩種時(shí)序,分別為Clause 22和Clause 45.
MDIO接口最初是由IEEE RFC802.3中的22號(hào)條款定義的,在最初的定義中,一個(gè)單獨(dú)的MDIO接口可以訪問32個(gè)不同的PHY設(shè)備中的32個(gè)寄存器,這些寄存器提供狀態(tài)和控制信息,例如:連接狀態(tài)、傳輸速度能力、當(dāng)前選擇的傳速、低壓消耗時(shí)的下電情況、全雙工還是半雙工、自動(dòng)協(xié)商、錯(cuò)誤提示以及反饋信息等等。
為了滿足10G以太網(wǎng)設(shè)備的普及發(fā)展,在IEEE 802.3ae 的45號(hào)條款中為MDIO接口提供了額外的規(guī)范:
1)能夠通過32個(gè)端口訪問32個(gè)不同設(shè)備的65536個(gè)寄存器;
2)為訪問10G以太網(wǎng)提供額外的OP碼和ST碼,從而可以直接訪問寄存器地址;
3)端到端的報(bào)錯(cuò)信號(hào);
4)環(huán)回模式控制;
5)低壓電氣標(biāo)準(zhǔn)。
22號(hào)條款
22號(hào)條款的MDIO通信的幀格式定義如下:
45號(hào)條款
為了彌補(bǔ)22號(hào)的條款中定義的缺陷,45號(hào)條款中增添了對(duì)低壓設(shè)備的支持,最低可到1.2V,同時(shí)擴(kuò)充了幀格式,能夠訪問更多的設(shè)備和寄存器。
45號(hào)MDIO通信幀格式如下:
第45號(hào)條款的主要變化是如何訪問寄存器。在第22中,一個(gè)單獨(dú)的幀指定要讀或?qū)懙牡刂泛蛿?shù)據(jù),同時(shí)完成了這些工作。45號(hào)中改變這種范式,第一個(gè)地址幀發(fā)送到指定的MMD和寄存器,然后發(fā)送第二幀來執(zhí)行讀或?qū)憽?/p>
工作模式
該芯片有兩種尋址模式:?jiǎn)涡酒瑢ぶ泛投嘈酒瑢ぶ贰?/p>
多芯片尋址
對(duì)于多芯片尋址,需要給芯片設(shè)置一個(gè)非零的SMI地址(ADDR[4:0]的反碼)。在多芯片尋址模式下,僅有兩個(gè)寄存器(0x00:SMI Command Register 0x01:SMI Data Register)能夠使用,內(nèi)部各PORT的寄存器均由這兩個(gè)寄存器間接訪問。
通過向SMI Command Register的[9:5]寫入內(nèi)部SMI設(shè)備地址,[4:0]寫入內(nèi)部SMI寄存器地址來訪問各個(gè)Port的內(nèi)部寄存器,[11:10]決定決前是寫入還是讀出操作。
通過向SMI Data Register的[15:0]位寫入或讀取SMI Command Register設(shè)定的寄存器內(nèi)容。
單芯片尋址
對(duì)于單芯片尋址,其SMI地址為0x00(針對(duì)整個(gè)芯片),即ADDR[4:0]=0x1F。
在單芯片尋址模式下,每個(gè)Port都有各自的SMI地址(針對(duì)內(nèi)部每個(gè)Port),Port0-Port9對(duì)應(yīng)的SMI地址分別為0x0-0x9(直接訪問),port10對(duì)應(yīng)0xA。
若Port0、1、2等接有外部PHY,則必須使用以下SMI地址,0x00對(duì)應(yīng)Port0,0x01對(duì)應(yīng)Port1,這樣PPU才能自動(dòng)的輪詢各個(gè)PHY獲取各自的連接狀況,速度,雙工情況,流控狀態(tài)等信息,這些外部PHY需要使用Global2 offset 0x18、0x19進(jìn)行訪問。對(duì)于Port3a、Port4的內(nèi)部PHY地址映射為0x03、0x04;Port9、Port10的內(nèi)部SERDES映射為0x9、0xa,同樣的,也是需要使用Global2 offset 0x18、0x19進(jìn)行訪問。
Global2 寄存器的 Offset24,25 寄存器
前文提到,兩個(gè)非常重要的寄存器,即Global2 offset 0x18、0x19寄存器,在單芯片尋址模式下PHY和SERDES寄存器的訪問都必須通過這兩個(gè)寄存器間接訪問。
Global2 offset 0x18 (SMI PHY Command Register)寄存器
bit[12]指定了幀協(xié)議是22號(hào)時(shí)序還是45號(hào)時(shí)序。22號(hào)協(xié)議下,與多芯片存儲(chǔ)能夠訪問的Command Register寄存器一樣,[9:5]寫入SMI設(shè)備地址,[4:0]寫入SMI寄存器地址來訪問各個(gè)Port的內(nèi)部寄存器,[11:10]決定當(dāng)前是寫入還是讀出操作。45號(hào)協(xié)議,[9:5]指定port,[4:0]指定設(shè)備類別。
Global2 offset 0x19 (SMI PHY Data Register)寄存器
與SMI Data Register相同,通過[15:0]位寫入或讀取SMI Command Register設(shè)定的寄存器內(nèi)容。
在45號(hào)協(xié)議下,第一個(gè)地址幀發(fā)送到指定的MMD和寄存器,我們要把PHY Command Reg中的[11:10]置為0x00=write Address register,即在第一個(gè)幀中的最后16位數(shù)據(jù)中,指定要操作的寄存器的地址。隨后在第二個(gè)數(shù)據(jù)幀中,要把PHY Command Reg中的[11:10]置為0x01=write data register,即第二個(gè)幀中的最后16位寫入的是數(shù)據(jù)。
Uboot 中訪問 MDIO (SMI/MIIM)
項(xiàng)目開發(fā)中,經(jīng)常要在 uboot 階段通過 MDIO 總線去配置 PHY 或者 SWITCH。
更多指令
示例:
6390xconfig **配置端口10** //0xa:P10 //0x34a: //bit[3:0]-0xa-接口配置模式-SGMII //bit[6]-0x1-EEE(EnergyEfficientEthernet)Enabled //bit[9:8]-0x3=10Gbor2500Mbps miiwrite0xa00x34a **配置端口5** //p5p177p355 //addr:0x1c //regi:0x19SMIDataregister //regi:0x18SMICommandregister //在45號(hào)條款中 //第一個(gè)地址幀發(fā)送到指定的MMD和寄存器,然后發(fā)送第二幀來執(zhí)行讀或?qū)憽? miiwrite0x1c0x190x2000//將數(shù)據(jù)0x2000寫到PHYdata寄存器0x19中 miiwrite0x1c0x180x82a4//將數(shù)據(jù)0x82a4寫到PHYCommand寄存器中 //0x82a4 //bit[15]:0x1——此位在首次操作SMI時(shí),要置為1,并且在操作SMI完畢之后會(huì)自動(dòng)清零 //bit[14:13]:0x0——內(nèi)部訪問-用于訪問包含在這個(gè)設(shè)備中的內(nèi)部PHYs和/或serde。 //bit[12]:0x0——SMIMODE——GenerateIEEE802.3Clause45SMIframes //bit[11:10]:0x0——WriteAddressRegister //bit[9:5]:寫入SMI設(shè)備地址-0x15——Port10Lane1=Port5&itsregistersareaccessedatSMIaddress0x15 //bit[4:0]:deviceclass(clause45) //第一個(gè)地址幀的后16位為Addr,即dataregister中的數(shù)據(jù)0x2000 miiwrite0x1c0x190x8140//將數(shù)據(jù)0x8140寫到PHYdata寄存器0x19中 miiwrite0x1c0x180x86a4//將數(shù)據(jù)0x86a4寫到PHYCommand寄存器中 ////bit[11:10]:0x01——WritedataRegister //第二個(gè)幀,后16位為要寫入的數(shù)據(jù),即dataregister中的數(shù)據(jù)0x8140 編輯:黃飛
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5419瀏覽量
171596 -
Marvell
+關(guān)注
關(guān)注
11文章
354瀏覽量
123303 -
Mac
+關(guān)注
關(guān)注
0文章
1104瀏覽量
51458 -
交換芯片
+關(guān)注
關(guān)注
0文章
81瀏覽量
11010
原文標(biāo)題:一文讀懂Marvell交換芯片
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論