崇文門網(wǎng)站建設(shè)做游戲推廣怎么找客戶
目錄
0. 參考文檔
1.嵌入式網(wǎng)絡(luò)接口簡介
2.嵌入式網(wǎng)絡(luò)硬件架構(gòu)方案
2.1 SOC內(nèi)未集成MAC芯片
2.2 SOC內(nèi)集成MAC芯片
2.3 主流方案總結(jié)
2.3 參照實際網(wǎng)卡的說明
3.MII/RMII及MDIO接口
3.1 MII
3.2 RMII
3.3 MDIO
?
0. 參考文檔
網(wǎng)卡構(gòu)造:MAC與PHY的關(guān)系,GMAC介紹_學(xué)海無涯_come on的博客-CSDN博客對于上述三部分,并不一定都是獨(dú)立的芯片,主要有以下幾種情況CPU內(nèi)部集成了MAC和PHY (難度較高)CPU內(nèi)部集成MAC,PHY采用獨(dú)立芯片 (主流方案)CPU不集成MAC和PHY,MAC和PHY采用獨(dú)立芯片或者集成芯片 (高端采用)在軟件上對網(wǎng)口的操作通常分為下面幾步:為數(shù)據(jù)收發(fā)分配內(nèi)存;初始化MAC寄存器;初始化PHY寄存器(通過MIIM);啟動收發(fā);_gmachttps://blog.csdn.net/chenhuanqiangnihao/article/details/128287341
【genius_platform軟件平臺開發(fā)】第九十八講:嵌入式網(wǎng)絡(luò)接口(MAC、PHY)_隨意的風(fēng)的博客-CSDN博客15這16個寄存器的功能,16~31這16個寄存器由廠商自行實現(xiàn)。也就是說不管你用的哪個廠家的PHY芯片,其中0~15這16個寄存器是一模一樣的。僅靠這16個寄存器是完全可以驅(qū)動起PHY芯片的,至少能保證基本的網(wǎng)絡(luò)數(shù)據(jù)通信,因此Linux內(nèi)核有通用PHY驅(qū)動,按道理來講,不管你使用的哪個廠家的PHY芯片,都可以使用Linux的這個通用PHY驅(qū)動來驗證網(wǎng)絡(luò)工作是否正常。事實上在實際開發(fā)中可能會遇到一些其他的問題導(dǎo)致Linux內(nèi)核的通用PHY驅(qū)動工作不正常,這個時候就需要驅(qū)動開發(fā)人員去調(diào)試了。https://blog.csdn.net/Windgs_YF/article/details/131262026
PHY芯片快速深度理解(持續(xù)更新中……)_daisy.skye的博客-CSDN博客物理層芯片稱為PHY、數(shù)據(jù)鏈路層芯片稱為MAC??梢钥吹絇HY的數(shù)據(jù)是RJ45網(wǎng)絡(luò)接口(網(wǎng)線口)穿過了的差分信號,而PHY作用就是將差分信號轉(zhuǎn)為數(shù)字信號,這塊內(nèi)容不用深究,制造商都設(shè)計好了。那我們干什么呢?(主要是對phy芯片進(jìn)行模式選擇,比如工作速率,工作模式)為什么要熟悉RJ45網(wǎng)口上面說到針對phy芯片我們只要進(jìn)行模式選擇(下文會介紹使用mdio接口,通過寄存器控制)那模式選擇后,如何查看是否有效呢?最簡單直接的就是通過RJ45網(wǎng)口的指示燈查看。_phy芯片https://blog.csdn.net/qq_40715266/article/details/124095801
1.嵌入式網(wǎng)絡(luò)接口簡介
提起網(wǎng)絡(luò),我們一般想到的是“以太網(wǎng)卡”。網(wǎng)卡硬件分為兩部分:1)數(shù)據(jù)鏈路層的MAC芯片;2)物理層的PHY芯片。
MAC位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。MAC在發(fā)送數(shù)據(jù)的時候,事先判斷是否可以發(fā)送數(shù)據(jù),如果可以,給數(shù)據(jù)加上一些控制信息,再將數(shù)據(jù)以及控制信息以規(guī)定的格式封裝成幀發(fā)送到物理層;在接收數(shù)據(jù)的時候,MAC只接收發(fā)送至本網(wǎng)卡的單播幀、組播幀和廣播幀,其余的丟棄,再將幀重新組合成數(shù)據(jù),并判斷輸入的數(shù)據(jù)是否發(fā)生傳輸錯誤,如果沒有錯誤,則去掉控制信息發(fā)送至LLC層。
PHY位于OSI七層協(xié)議中的物理層。PHY在發(fā)送數(shù)據(jù)的時候,收到MAC過來的數(shù)據(jù),然后把并行數(shù)據(jù)轉(zhuǎn)化為串行流數(shù)據(jù),按照物理層的編碼規(guī)則把數(shù)據(jù)編碼,再變?yōu)槟M信號送出去,收數(shù)據(jù)時的流程反之。
2.嵌入式網(wǎng)絡(luò)硬件架構(gòu)方案
大家都是通過看數(shù)據(jù)手冊來判斷一款SOC是否支持網(wǎng)絡(luò),如果一款芯片數(shù)據(jù)手冊說自己支持網(wǎng)絡(luò),一般都是說的這款SOC內(nèi)置MAC,MAC類似I2C控制器、SPI控制器一樣的外設(shè)。
但是光有MAC還不能直接驅(qū)動網(wǎng)絡(luò),還需要另外一個芯片:PHY,因此對于內(nèi)置MAC的SOC,其外部必須搭配一個PHY芯片。內(nèi)部沒有MAC的SOC芯片,就需要使用外置的MAC+PHY一體芯片了,這里就要牽扯出常見的兩個嵌入式網(wǎng)絡(luò)硬件方案了。
2.1 SOC內(nèi)未集成MAC芯片
對于內(nèi)部沒有MAC的SOC芯片,可以使用外置 MAC+PHY一體的網(wǎng)絡(luò)芯片來實現(xiàn)網(wǎng)絡(luò)功能。比如三星linux開發(fā)板里面用的最多的DM9000,DM9000對SOC提供了一個SRAM接口,SOC會以SRAM的方式操作DM9000。
有些外置的網(wǎng)絡(luò)芯片更強(qiáng)大,內(nèi)部甚至集成了硬件TCP/IP協(xié)議棧,對外提供一個SPI接口,比如W5500。SOC通過SPI接口與W5500進(jìn)行通信,由于W5500內(nèi)置了硬件TCP/IP協(xié)議棧,因此SOC就不需要移植軟件協(xié)議棧,直接通過SPI來操作W5500,簡化了單片機(jī)聯(lián)網(wǎng)方案。
這種方案的優(yōu)點(diǎn)就是讓不支持網(wǎng)絡(luò)的SOC能夠另辟蹊徑,實現(xiàn)網(wǎng)絡(luò)功能,但是缺點(diǎn)就是網(wǎng)絡(luò)效率不高,因為一般芯片內(nèi)置的MAC會有網(wǎng)絡(luò)加速引擎,比如網(wǎng)絡(luò)專用DMA,網(wǎng)絡(luò)處理效率會很高。而且此類外置芯片網(wǎng)速都不快,基本就是10/100M。另外,相比PHY芯片而言,此類芯片的成本也比較高,可選擇比較少。
SOC與外部MAC+PHY芯片的連接如下圖所示:
2.2 SOC內(nèi)集成MAC芯片
我們一般說某個SOC支持網(wǎng)絡(luò),說的就是他內(nèi)部集成網(wǎng)絡(luò)MAC外設(shè),此時我們還需要外接一個網(wǎng)絡(luò)PHY芯片。目前幾乎所有支持網(wǎng)絡(luò)的SOC都是內(nèi)置MAC外設(shè),比如STM32F4/F7/H7系列、NXP的I.MX系列,內(nèi)部集成網(wǎng)絡(luò)MAC的優(yōu)點(diǎn)如下:
1)內(nèi)部MAC外設(shè)會有專用的加速模塊,比如專用的DMA,加速網(wǎng)速數(shù)據(jù)的處理。
2)網(wǎng)速快,可以支持10/100/1000M網(wǎng)速。
3)外接PHY可選擇性多,成本低。
內(nèi)部的MAC外設(shè)會通過MII或者RMII接口來連接外部的PHY芯片,MII/RMII接口用來傳輸網(wǎng)絡(luò)數(shù)據(jù)。另外主控需要配置或讀取PHY芯片,也就是讀寫PHY的內(nèi)部寄存器,所以還需要一個控制接口,叫做MDIO(也叫作SMI),MDIO很類似IIC,也是兩根線,一根數(shù)據(jù)線叫做MDIO,一根時鐘線叫做MDC。SOC內(nèi)部MAC外設(shè)與外部PHY芯片的連接如下圖所示:
2.3 主流方案總結(jié)
由于PHY包含大量模擬器件,而MAC是典型的數(shù)字電路,考慮到芯片面積及模擬/數(shù)字混合架構(gòu)的原因,將MAC集成進(jìn)SOC,PHY留在片外,這種結(jié)構(gòu)是最常見的。
其中,MAC與PHY之間有兩個重要的接口:1)MII總線接口,主要完成數(shù)據(jù)收發(fā)相關(guān)業(yè)務(wù);2)MDIO總線接口(也叫作SMI),主要完成SOC對PHY芯片各寄存器的配置。
當(dāng)PHY芯片發(fā)送數(shù)據(jù)時,接受MAC芯片從MII接口發(fā)送過來的數(shù)字信號,然后轉(zhuǎn)換成模擬信號,通過MDI接口傳輸出去。
網(wǎng)絡(luò)設(shè)備是通過網(wǎng)線連接起來的,插入網(wǎng)線的地方叫做RJ45座(見下圖上),RJ45座要與PHY芯片連接在一起,但是中間還需要一個網(wǎng)絡(luò)變壓器(見下圖下),其主要作用是1)增強(qiáng)信號。網(wǎng)線傳輸?shù)木嚯x很長,有時候需要送到100米甚至更遠(yuǎn)的地址,那么就會導(dǎo)致信號的流失,需要提前增強(qiáng)信號;2)隔離外部設(shè)備,增強(qiáng)芯片抗干擾能力。網(wǎng)線與內(nèi)部芯片直接相連的話,電磁感應(yīng)和靜電也很容易導(dǎo)致芯片的損壞。所以就要使用網(wǎng)絡(luò)變壓器連接RJ45座。
同時,PHY芯片會引出兩個引腳,連接到RJ45座的LED燈上,對LED燈進(jìn)行控制,用來指示當(dāng)前網(wǎng)絡(luò)通信狀態(tài)。RJ45 座子上一般有兩個燈,一個橙色,一個綠色,綠色亮表示網(wǎng)絡(luò)連接正常,黃色閃爍說明當(dāng)前正在進(jìn)行網(wǎng)絡(luò)通信,黃燈閃動頻率越快表示網(wǎng)速越好。
2.3 參照實際網(wǎng)卡的說明
MAC和PHY分開的以太網(wǎng)卡 :
MAC和PHY集成在一個芯片的網(wǎng)卡:
?
上圖中各部件為:①RJ-45接口、②Transformer(隔離變壓器)、③PHY芯片、④MAC芯片、⑤EEPROM、⑥BOOTROM插槽、⑦WOL接頭、⑧晶振、⑨電壓轉(zhuǎn)換芯片、⑩LED指示燈。
3.MII/RMII及MDIO接口
MAC與PHY接口支持四種類型:MII、RMII、GMII、RGMII。這四種類型都是從MII(Media Independent Interface)衍生出來的,RMII(Reduced MII)是精簡版的MII,GMII(Gigabit MII)是支持千兆傳輸速率的MII,RGMII(Reduced GMII)是精簡版的GMII。下面主要介紹MII和RMII。
3.1 MII
MII全稱是Media Independent Interface,直譯過來就是介質(zhì)獨(dú)立接口
,它是IEEE-802.3定義的以太網(wǎng)標(biāo)準(zhǔn)接口,MII接口用于以太網(wǎng)MAC連接PHY芯片,連接示意圖如下圖所示:
MII接口一共有16根信號線,含義如下:
- TX_CLK:發(fā)送時鐘,如果網(wǎng)速為100M的話時鐘頻率為25MHz,10M網(wǎng)速的話時鐘頻率為2.5MHz,此時鐘由PHY產(chǎn)生并發(fā)送給MAC。
- TX_EN:發(fā)送使能信號。
- TX_ER:發(fā)送錯誤信號,高電平有效,表示TX_ER有效期內(nèi)傳輸?shù)臄?shù)據(jù)無效。10Mpbs網(wǎng)速下TX_ER不起作用。
- TXD[3:0]:發(fā)送數(shù)據(jù)信號線,一共4根。
- RXD[3:0]:接收數(shù)據(jù)信號線,一共4根。
- RX_CLK:接收時鐘信號,如果網(wǎng)速為100M的話時鐘頻率為25MHz,10M網(wǎng)速的話時鐘頻率為2.5MHz,RX_CLK也是由PHY產(chǎn)生的。
- RX_ER:接收錯誤信號,高電平有效,表示RX_ER有效期內(nèi)傳輸?shù)臄?shù)據(jù)無效。10Mpbs網(wǎng)速下RX_ER不起作用。
- RX_DV:接收數(shù)據(jù)有效,作用類似TX_EN。
- CRS:載波偵聽信號。
- COL:沖突檢測信號。
MII接口的缺點(diǎn)就是所需信號線太多,這還沒有算MDIO和MDC這兩根管理接口的數(shù)據(jù)線,因此MII接口使用已經(jīng)越來越少了。
3.2 RMII
RMII全稱是Reduced Media Independent Interface,翻譯過來就是精簡的介質(zhì)獨(dú)立接口,也就是MII接口的精簡版本。RMII接口只需要7根數(shù)據(jù)線,相比MII直接減少了9根,極大的方便了板子布線,RMII接口連接PHY芯片的示意圖如下圖所示:
- TX_EN:發(fā)送使能信號。
- TXD[1:0]:發(fā)送數(shù)據(jù)信號線,一共2根。
- RXD[1:0]:接收數(shù)據(jù)信號線,一共2根。
- CRS_DV:相當(dāng)于MII接口中的RX_DV和CRS這兩個信號的混合。
- REF_CLK:參考時鐘,由外部時鐘源提供, 頻率為50MHz。這里與MII不同,MII的接收和發(fā)送時鐘是獨(dú)立分開的,而且都是由PHY芯片提供的。
3.3 MDIO
MDIO接口(也叫作SMI接口),全稱是Management Data Input/Output,直譯過來就是管理數(shù)據(jù)輸入輸出接口,是一個簡單的兩線串行接口,包括一根MDIO數(shù)據(jù)線和一根MDC時鐘線。驅(qū)動程序可以通過MDIO和MDC這兩根線訪問任意PHY芯片的任意一個寄存器,總線框圖如下圖所示。
MDIO的讀寫時序如下圖所示,其含義是讀/寫某一PHY芯片(由PHYAD字段指定)中的某一寄存器(由REGAD字段指定):
從上表可知,MDIO可讀寫的PHY地址(即圖中的PHYAD字段)為5位,所以一個SOC最多管理2^5=32個PHY芯片(與MDIO總線框圖相呼應(yīng))。MDIO可訪問該P(yáng)HY芯片(由PHYAD指定)中的寄存器地址(即圖中的REGAD字段)也為5位,所以一個PHY芯片中最多有32個寄存器,其中寄存器0-15這16個寄存器各個公司都是一樣的,后面16個寄存器則由不同廠家各自定義。
IEEE802.3協(xié)議英文原版中的 “22.2.4 Management functions”章節(jié)對PHY的前16個寄存器功能進(jìn)行了規(guī)定,如下圖所示:
?
?
?