新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò)與存儲(chǔ) > 設(shè)計(jì)應(yīng)用 > 以太網(wǎng)PHY、MAC及其通信接口入門(mén)

以太網(wǎng)PHY、MAC及其通信接口入門(mén)

作者: 時(shí)間:2025-04-21 來(lái)源:硬件筆記本 收藏

本文主要介紹的 MAC 和 PHY,以及之間的 MII(Media Independent Interface ,媒體獨(dú)立接口)和 MII 的各種衍生版本——GMII、SGMII、RMII、RGMII等。

本文引用地址:http://www.2s4d.com/article/202504/469606.htm

簡(jiǎn)介

從硬件的角度看,接口電路主要由MAC(Media Access Control)控制器和物理層接口PHY(Physical Layer,PHY)兩大部分構(gòu)成。如下圖所示:


DMA控制器通常屬于CPU的一部分,用虛線放在這里是為了表示DMA控制器可能會(huì)參與到網(wǎng)口數(shù)據(jù)傳輸中。但是,在實(shí)際的設(shè)計(jì)中,以上三部分并不一定獨(dú)立分開(kāi)的。由于,PHY整合了大量模擬硬件,而MAC是典型的全數(shù)字器件。

考慮到芯片面積及模擬/數(shù)字混合架構(gòu)的原因,通常,將MAC集成進(jìn)微控制器而將PHY留在片外。更靈活、密度更高的芯片技術(shù)已經(jīng)可以實(shí)現(xiàn)MAC和PHY的單芯片整合。

可分為下列幾種類型:

  • CPU集成MAC與PHY。目前來(lái)說(shuō)并不多見(jiàn)


  • CPU集成MAC,PHY采用獨(dú)立芯片。比較常見(jiàn)


  • CPU不集成MAC與PHY,MAC與PHY采用集成芯片。比較常見(jiàn)


MAC及PHY工作在OSI七層模型的數(shù)據(jù)鏈路層和物理層。具體如下:


什么是MAC

MAC(Media Access Control)即媒體訪問(wèn)控制子層協(xié)議。

該部分有兩個(gè)概念:MAC可以是一個(gè)硬件控制器 及 MAC以協(xié)議。該協(xié)議位于OSI七層協(xié)議中數(shù)據(jù)鏈路層的下半部分,主要負(fù)責(zé)控制與連接物理層的物理介質(zhì)。MAC硬件大約就是下面的樣子了:


在發(fā)送數(shù)據(jù)的時(shí)候,MAC協(xié)議可以事先判斷是否可以發(fā)送數(shù)據(jù),如果可以發(fā)送將給數(shù)據(jù)加上一些控制信息,最終將數(shù)據(jù)以及控制信息以規(guī)定的格式發(fā)送到物理層。

在接收數(shù)據(jù)的時(shí)候,MAC協(xié)議首先判斷輸入的信息并是否發(fā)生傳輸錯(cuò)誤,如果沒(méi)有錯(cuò)誤,則去掉控制信息發(fā)送至LLC(邏輯鏈路控制)層。該層協(xié)議是MAC由IEEE-802. 3以太網(wǎng)標(biāo)準(zhǔn)定義。

以太網(wǎng)數(shù)據(jù)鏈路層其實(shí)包含MAC(介質(zhì)訪問(wèn)控制)子層和LLC(邏輯鏈路控制)子層。一塊以太網(wǎng)卡MAC芯片的作用不但要實(shí)現(xiàn)MAC子層和LLC子層的功能,還要提供符合規(guī)范的PCI界面以實(shí)現(xiàn)和主機(jī)的數(shù)據(jù)交換。

MAC從PCI總線收到IP數(shù)據(jù)包(或者其他網(wǎng)絡(luò)層協(xié)議的數(shù)據(jù)包)后,將之拆分并重新打包成最大1518Byte、最小64Byte的幀。

這個(gè)幀里面包括了目標(biāo)MAC地址、自己的源MAC地址和數(shù)據(jù)包里面的協(xié)議類型(比如IP數(shù)據(jù)包的類型用80表示,最后還有一個(gè)DWORD(4Byte)的CRC碼。

可是目標(biāo)的MAC地址是哪里來(lái)的呢?

這牽扯到一個(gè)ARP協(xié)議(介乎于網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的一個(gè)協(xié)議)。第一次傳送某個(gè)目的IP地址的數(shù)據(jù)的時(shí)候,先會(huì)發(fā)出一個(gè)ARP包,其MAC的目標(biāo)地址是廣播地址,里面說(shuō)到:“誰(shuí)是xxx.xxx.xxx.xxx這個(gè)IP地址的主人?”因?yàn)槭菑V播包,所有這個(gè)局域網(wǎng)的主機(jī)都收到了這個(gè)ARP請(qǐng)求。

收到請(qǐng)求的主機(jī)將這個(gè)IP地址和自己的相比較,如果不相同就不予理會(huì),如果相同就發(fā)出ARP響應(yīng)包。

這個(gè)IP地址的主機(jī)收到這個(gè)ARP請(qǐng)求包后回復(fù)的ARP響應(yīng)里說(shuō)到:“我是這個(gè)IP地址的主人”。這個(gè)包里面就包括了他的MAC地址。以后的給這個(gè)IP地址的幀的目標(biāo)MAC地址就被確定了。(其它的協(xié)議如IPX/SPX也有相應(yīng)的協(xié)議完成這些操作)。

IP地址和MAC地址之間的關(guān)聯(lián)關(guān)系保存在主機(jī)系統(tǒng)里面,叫做ARP表。由驅(qū)動(dòng)程序和操作系統(tǒng)完成。

以太網(wǎng)MAC芯片的一端接計(jì)算機(jī)PCI總線,另外一端就接到PHY芯片上,它們之間是通過(guò)MII接口鏈接的。一個(gè)MAC的結(jié)構(gòu)圖如下圖所示:


什么是PHY

PHY((Physical Layer,PHY))是IEEE802.3中定義的一個(gè)標(biāo)準(zhǔn)模塊,STA(station management entity,管理實(shí)體,一般為MAC或CPU)通過(guò)SMI(Serial Manage Interface)對(duì)PHY的行為、狀態(tài)進(jìn)行管理和控制,而具體管理和控制動(dòng)作是通過(guò)讀寫(xiě)PHY內(nèi)部的寄存器實(shí)現(xiàn)的。一個(gè)PHY的基本結(jié)構(gòu)如下圖:


PHY是物理接口收發(fā)器,它實(shí)現(xiàn)OSI模型的物理層。

IEEE-802.3標(biāo)準(zhǔn)定義了以太網(wǎng)PHY。包括MII/GMII(介質(zhì)獨(dú)立接口)子層、PCS(物理編碼子層)、PMA(物理介質(zhì)附加)子層、PMD(物理介質(zhì)相關(guān))子層、MDI子層。它符合IEEE-802.3k中用于10BaseT(第14條)和100BaseTX(第24條和第25條)的規(guī)范。

注:PHY寄存器在IEEE802.3標(biāo)準(zhǔn)的 22.2.4 Management functions 節(jié)有介紹,但不涉及所有的寄存器,個(gè)別寄存器需要到其它章節(jié)中看,當(dāng)然,文檔里面也提到該在哪里找到哪個(gè)寄存器。

什么是MII

MII(Media Independent Interface)即媒體獨(dú)立接口,MII 接口是 MAC 與 PHY 連接的標(biāo)準(zhǔn)接口。它是 IEEE-802.3 定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)。MII 接口提供了 MAC 與 PHY 之間、PHY 與 STA(Station Management)之間的互聯(lián)技術(shù),該接口支持 10Mb/s 與 100Mb/s 的數(shù)據(jù)傳輸速率,數(shù)據(jù)傳輸?shù)奈粚挒?4 位。MII 接口如下圖所示:


MII接口主要包括四個(gè)部分。一是從MAC層到PHY層的發(fā)送數(shù)據(jù)接口,二是從PHY層到MAC層的接收數(shù)據(jù)接口,三是從PHY層到MAC層的狀態(tài)指示信號(hào),四是MAC層和PHY層之間傳送控制和狀態(tài)信息的MDIO接口。


MII 包括一個(gè)數(shù)據(jù)接口,以及一個(gè) MAC 和 PHY 之間的管理接口:

  • TX_CLK(transmit clock):TX_CLK (Transmit Clock) 是一個(gè)連續(xù)的時(shí)鐘信號(hào)(即系統(tǒng)啟動(dòng),該信號(hào)就一直存在),它是 TX_EN、TXD、TX_ER(信號(hào)方向?yàn)閺?RS 到 PHY)的參考時(shí)鐘,TX_CLK 由 PHY 驅(qū)動(dòng) TX_CLK 的時(shí)鐘頻率是數(shù)據(jù)傳輸速率的 25%,偏差 ±100ppm。例如,100Mb/s 模式下,TX_CLK 時(shí)鐘頻率為 25MHz,占空比在 35% 至 65% 之間。

  • TXD<3:0>(transmit data):TXD 由 RS 驅(qū)動(dòng),同步于 TX_CLK,在 TX_CLK 的時(shí)鐘周期內(nèi),并且TX_EN 有效,TXD 上的數(shù)據(jù)被 PHY 接收,否則 TXD 的數(shù)據(jù)對(duì) PHY 沒(méi)有任何影響。

  • TX_ER(transmit coding error):TX_ER 同步于 TX_CLK,在數(shù)據(jù)傳輸過(guò)程中,如果 TX_ER 有效超過(guò)一個(gè)時(shí)鐘周期,并且此時(shí)TX_EN 是有效的,則數(shù)據(jù)通道中傳輸?shù)臄?shù)據(jù)是無(wú)效的,沒(méi)用的。注:當(dāng) TX_ER 有效并不影響工作在 10Mb/s 的 PHY 或者 TX_EN 無(wú)效時(shí)的數(shù)據(jù)傳輸。在 MII 接口的連線中,如果 TX_ER 信號(hào)線沒(méi)有用到,必須將它下拉接地。

  • TX_EN:發(fā)送使能。TX_EN 由 Reconciliation 子層根據(jù) TX_CLK 上升沿同步進(jìn)行轉(zhuǎn)換。

  • RX_CLK:它與 TX_CLK 具有相同的要求,所不同的是它是 RX_DV、RXD、RX_ER(信號(hào)方向是從 PHY 到 RS)的參考時(shí)鐘。RX_CLK 同樣是由 PHY 驅(qū)動(dòng),PHY 可能從接收到的數(shù)據(jù)中提取時(shí)鐘 RX_CLK,也有可能從一個(gè)名義上的參考時(shí)鐘(e.g., the TX_CLK reference)來(lái)驅(qū)動(dòng)RX_CLK。

  • RXD<3:0>(receive data):RXD由RS驅(qū)動(dòng),同步于 RX_CLK,在 RX_CLK 的時(shí)鐘周期內(nèi),并且 RX_DV 有效,RXD 上的數(shù)據(jù)被RS 接收,否則 RXD 的數(shù)據(jù)對(duì) RS 沒(méi)有任何影響。

  • RX_ER(receive error):RX_ER 同步于 RX_CLK,其在 RX 通道中的作用類似于 TX_ER 對(duì)于 TX 通道數(shù)據(jù)傳輸?shù)挠绊憽?/span>

  • RX_DV(Receive Data Valid):RXD_DV 同步于 RX_CLK,被 PHY 驅(qū)動(dòng),它的作用如同于發(fā)送通道中的 TX_EN,不同的是在時(shí)序上稍有一點(diǎn)差別:為了讓數(shù)據(jù)能夠成功被RS接收,要求RXD_DV有效的時(shí)間必須覆蓋整個(gè) FRAME 的過(guò)程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。MII以4位半字節(jié)方式傳送數(shù)據(jù)雙向傳輸,時(shí)鐘速率25MHz。其工作速率可達(dá)100Mb/s。

  • COL(collision detected):COL 不需要同步于參考時(shí)鐘。

  • CRS(carrier sense):CRS 不需要同步于參考時(shí)鐘,只要通道存在發(fā)送或者接收過(guò)程,CRS 就需要有效。

  • MDC:由站管理實(shí)體向 PHY 提供,作為在 MDIO 信號(hào)上傳送信息的定時(shí)參考。MDC 是一種非周期性的信號(hào),沒(méi)有最高或最低時(shí)間。無(wú)論 TX_CLK 和 RX_CLK 的標(biāo)稱周期如何,MDC 的最小高低時(shí)間應(yīng)為 160 ns,MDC 的最小周期為 400 ns。

  • MDIO:是 PHY 和 STA 之間的雙向信號(hào)。它用于在 PHY 和 STA 之間傳輸控制信息和狀態(tài)??刂菩畔⒂?STA 同步地針對(duì) MDC 驅(qū)動(dòng)并且由 PHY 同步地采樣。狀態(tài)信息由 PHY 針對(duì) MDC 同步驅(qū)動(dòng)并由 STA 同步采樣。

PHY 里面的部分寄存器是 IEEE 定義的,這樣PHY把自己的目前的狀態(tài)反映到寄存器里面。

MAC 通過(guò) SMI 總線不斷的讀取PHY 的狀態(tài)寄存器以得知目前 PHY 的狀態(tài)。例如連接速度、雙工的能力等。

當(dāng)然也可以通過(guò) SMI 設(shè)置 PHY的寄存器達(dá)到控制的目的。例如流控的打開(kāi)關(guān)閉、自協(xié)商模式還是強(qiáng)制模式等。

不論是物理連接的MII總線和 SMI 總線,還是 PHY 的狀態(tài)寄存器和控制寄存器都是由IEEE的規(guī)范的。因此不同公司的 MAC 和 PHY 一樣可以協(xié)調(diào)工作。當(dāng)然為了配合不同公司的 PHY 的自己特有的一些功能,驅(qū)動(dòng)需要做相應(yīng)的修改。

MII 支持 10Mbps 和 100Mbps 的操作,一個(gè)接口由 14 根線組成,它的支持還是比較靈活的。但是有一個(gè)缺點(diǎn)是因?yàn)樗粋€(gè)端口用的信號(hào)線太多,如果一個(gè) 8 端口的交換機(jī)要用到 112 根線,16 端口就要用到 224 根線,到 32 端口的話就要用到 448 根線。

一般按照這個(gè)接口做交換機(jī)是不太現(xiàn)實(shí)的。所以現(xiàn)代的交換機(jī)的制作都會(huì)用到其它的一些從 MII 簡(jiǎn)化出來(lái)的標(biāo)準(zhǔn),比如 RMII、SMII、GMII等。

什么是RMII

簡(jiǎn)化媒體獨(dú)立接口是標(biāo)準(zhǔn)的以太網(wǎng)接口之一,比 MII 有更少的 I/O 傳輸。RMII 口是用兩根線來(lái)傳輸數(shù)據(jù)的,MII 口是用 4 根線來(lái)傳輸數(shù)據(jù)的,GMII 是用 8 根線來(lái)傳輸數(shù)據(jù)的。

MII/RMII 只是一種接口,對(duì)于10Mbps 線速,MII 的時(shí)鐘速率是 2.5MHz 就可以了,RMII 則需要 5MHz;對(duì)于 100Mbps 線速,MII 需要的時(shí)鐘速率是 25MHz,RMII 則是 50MHz。

MII/RMII 用于傳輸以太網(wǎng)包,在 MII/RMII 接口是 4/2bit 的,在以太網(wǎng)的PHY里需要做串并轉(zhuǎn)換,編解碼等才能在雙絞線和光纖上進(jìn)行傳輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。

以太網(wǎng)幀的格式為:前導(dǎo)符 + 開(kāi)始位 + 目的 mac 地址 + 源 mac 地址 + 類型/長(zhǎng)度 + 數(shù)據(jù) + padding(optional) + 32bitCRC。如果有 vlan,則要在類型/長(zhǎng)度后面加上 2 個(gè)字節(jié)的 vlan tag,其中 12bit 來(lái)表示vlan id,另外,4bit 表示數(shù)據(jù)的優(yōu)先級(jí)!

什么是GMII

GMII是千兆網(wǎng)的MII接口,這個(gè)也有相應(yīng)的RGMII接口,表示簡(jiǎn)化了的GMII接口。GMII 采用 8 位接口數(shù)據(jù),工作時(shí)鐘125MHz,因此傳輸速率可達(dá) 1000Mbps。

同時(shí)兼容 MII 所規(guī)定的10/100 Mbps工作方式。GMII 接口數(shù)據(jù)結(jié)構(gòu)符合IEEE以太網(wǎng)標(biāo)準(zhǔn),該接口定義見(jiàn) IEEE 802.3-2000。


什么是RGMII

RGMII(Reduced Gigabit Media Independant Interface),精簡(jiǎn)GMII接口。相對(duì)于GMII相比,RGMII具有如下特征:

  • 發(fā)送/接收數(shù)據(jù)線由8條改為4條

  • TX_ER和TX_EN復(fù)用,通過(guò)TX_CTL傳送

  • RX_ER與RX_DV復(fù)用,通過(guò)RX_CTL傳送

  • 1 Gbit/s速率下,時(shí)鐘頻率為125MHz

  • 100 Mbit/s速率下,時(shí)鐘頻率為25MHz

  • 10 Mbit/s速率下,時(shí)鐘頻率為2.5MHz

信號(hào)定義如下:


雖然RGMII信號(hào)線減半,但TXC/RXC時(shí)鐘仍為125Mhz,為了達(dá)到1000Mbit的傳輸速率,TXD/RXD信號(hào)線在時(shí)鐘上升沿發(fā)送接收GMII接口中的TXD[3:0]/RXD[3:0],在時(shí)鐘下降沿發(fā)送接收TXD[7:4]/RXD[7:4],并且信號(hào)TX_CTL反應(yīng)了TX_EN和TX_ER狀態(tài),即在TXC上升沿發(fā)送TX_EN,下降沿發(fā)送TX_ER,同樣的道理試用于RX_CTL,下圖為發(fā)送接收的時(shí)序:


什么是SMI

SMI:串行管理接口(Serial Management Interface),通常直接被稱為MDIO接口(Management Data Input/Output Interface)。

MDIO最早在IEEE 802.3的第22卷定義,后來(lái)在第45卷又定義了增強(qiáng)版本的MDIO,其主要被應(yīng)用于以太網(wǎng)的MAC和PHY層之間,用于MAC層器件通過(guò)讀寫(xiě)寄存器來(lái)實(shí)現(xiàn)對(duì)PHY層器件的操作與管理。

MDIO主機(jī)(即產(chǎn)生MDC時(shí)鐘的設(shè)備)通常被稱為STA(Station Management Entity),而MDIO從機(jī)通常被稱為MMD(MDIO Management Device)。通常STA都是MAC層器件的一部分,而MMD則是PHY層器件的一部分。

MDIO接口包括兩條線,MDIO和MDC,其中MDIO是雙向數(shù)據(jù)線,而MDC是由STA驅(qū)動(dòng)的時(shí)鐘線。MDC時(shí)鐘的最高速率一般為2.5MHz,MDC也可以是非固定頻率,甚至可以是非周期的。

MDIO接口只是會(huì)在MDC時(shí)鐘的上升沿進(jìn)行采樣,而并不在意MDC時(shí)鐘的頻率(類似于I2C接口)。如下圖所示。


QA

網(wǎng)卡的MAC和PHY間的關(guān)系?

網(wǎng)卡工作在osi的最后兩層,物理層和數(shù)據(jù)鏈路層,物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號(hào)、線路狀態(tài)、時(shí)鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口.物理層的芯片稱之為PHY.

數(shù)據(jù)鏈路層則提供尋址機(jī)構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯(cuò)檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能.以太網(wǎng)卡中數(shù)據(jù)鏈路層的芯片稱之為MAC控制器.

很多網(wǎng)卡的這兩個(gè)部分是做到一起的.他們之間的關(guān)系是pci總線接mac總線,mac接phy,phy接網(wǎng)線(當(dāng)然也不是直接接上的,還有一個(gè)變壓裝置).

PHY和MAC之間如何進(jìn)行溝通

通過(guò)IEEE定義的標(biāo)準(zhǔn)的MII/GigaMII(Media Independed Interfade,介質(zhì)獨(dú)立界面)界面連接MAC和PHY。這個(gè)界面是IEEE定義的。MII界面?zhèn)鬟f了網(wǎng)絡(luò)的所有數(shù)據(jù)和數(shù)據(jù)的控制。

而MAC對(duì)PHY的工作狀態(tài)的確定和對(duì)PHY的控制則是使用SMI(Serial Management Interface)界面通過(guò)讀寫(xiě)PHY的寄存器來(lái)完成的。

PHY里面的部分寄存器也是IEEE定義的,這樣PHY把自己的目前的狀態(tài)反映到寄存器里面,MAC通過(guò)SMI總線不斷的讀取PHY的狀態(tài)寄存器以得知目前PHY的狀態(tài),例如連接速度,雙工的能力等。

當(dāng)然也可以通過(guò)SMI設(shè)置PHY的寄存器達(dá)到控制的目的,例如流控的打開(kāi)關(guān)閉,自協(xié)商模式還是強(qiáng)制模式等。

我們看到了,不論是物理連接的MII界面和SMI總線還是PHY的狀態(tài)寄存器和控制寄存器都是有IEEE的規(guī)范的,因此不同公司的MAC和PHY一樣可以協(xié)調(diào)工作。當(dāng)然為了配合不同公司的PHY的自己特有的一些功能,驅(qū)動(dòng)需要做相應(yīng)的修改。




評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉