最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文搞定以太網(wǎng)PHY、MAC及其通信接口

2023-11-15 15:11 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

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

簡介

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

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

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

可分為下列幾種類型:

  • CPU集成MAC與PHY。目前來說并不多見

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

  • CPU不集成MAC與PHY,MAC與PHY采用集成芯片。比較常見

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

什么是MAC

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

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

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

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

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

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

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

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

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

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

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

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

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

什么是PHY

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

PHY是物理接口收發(fā)器,它實現(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é)有介紹,但不涉及所有的寄存器,個別寄存器需要到其它章節(jié)中看,當(dāng)然,文檔里面也提到該在哪里找到哪個寄存器。

什么是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接口主要包括四個部分。一是從MAC層到PHY層的發(fā)送數(shù)據(jù)接口,二是從PHY層到MAC層的接收數(shù)據(jù)接口,三是從PHY層到MAC層的狀態(tài)指示信號,四是MAC層和PHY層之間傳送控制和狀態(tài)信息的MDIO接口。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

什么是RMII

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

MII/RMII 只是一種接口,對于10Mbps 線速,MII 的時鐘速率是 2.5MHz 就可以了,RMII 則需要 5MHz;對于 100Mbps 線速,MII 需要的時鐘速率是 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)符 + 開始位 + 目的 mac 地址 + 源 mac 地址 + 類型/長度 + 數(shù)據(jù) + padding(optional) + 32bitCRC。如果有 vlan,則要在類型/長度后面加上 2 個字節(jié)的 vlan tag,其中 12bit 來表示vlan id,另外,4bit 表示數(shù)據(jù)的優(yōu)先級!


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ??

零聲白金VIP體驗卡(含基礎(chǔ)架構(gòu)/高性能存儲/golang/QT/音視頻/Linux內(nèi)核)課程:?


什么是GMII

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

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

什么是RGMII

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

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

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

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

  • 1 Gbit/s速率下,時鐘頻率為125MHz

  • 100 Mbit/s速率下,時鐘頻率為25MHz

  • 10 Mbit/s速率下,時鐘頻率為2.5MHz

信號定義如下:

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

什么是SMI

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

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

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

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

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

QA

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

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

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

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

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

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

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

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

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

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


原文作者:【一起學(xué)嵌入式



一文搞定以太網(wǎng)PHY、MAC及其通信接口的評論 (共 條)

分享到微博請遵守國家法律
界首市| 中方县| 旬阳县| 香河县| 嘉鱼县| 井陉县| 新余市| 济阳县| 高青县| 资源县| 庆阳市| 汤阴县| 黔江区| 永城市| 恩平市| 通许县| 喜德县| 呼图壁县| 万源市| 富阳市| 密云县| 广丰县| 讷河市| 奇台县| 怀来县| 穆棱市| 顺昌县| 楚雄市| 灵山县| 宜阳县| 修文县| 阳山县| 同仁县| 澄迈县| 锡林郭勒盟| 邛崃市| 五河县| 卢氏县| 建德市| 象山县| 富平县|