0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解以太網(wǎng)

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-06-15 01:06 ? 次閱讀

1 以太網(wǎng)的由來

__以太網(wǎng)__不是單一協(xié)議,而是不同標(biāo)準(zhǔn)的完整集合。這些標(biāo)準(zhǔn)來自 IEEE,它們的名字都以 802.3 開頭。

以太網(wǎng)技術(shù)起源于施樂帕洛阿爾托研究中心的先鋒技術(shù)項目。人們通常認(rèn)為以太網(wǎng)發(fā)明于1973年,當(dāng)年鮑勃.梅特卡夫(Bob Metcalfe)給他PARC的老板寫了一篇有關(guān)以太網(wǎng)潛力的備忘錄。但是梅特卡夫本人認(rèn)為以太網(wǎng)是之后幾年才出現(xiàn)的。在1976年,梅特卡夫和他的助手David Boggs發(fā)表了一篇名為《以太網(wǎng):區(qū)域計算機網(wǎng)絡(luò)的分布式數(shù)據(jù)包交換技術(shù)》的文章。

1979年,梅特卡夫為了開發(fā)個人電腦和局域網(wǎng)離開了施樂(Xerox),成立了3Com公司。3Com對DEC、英特爾和施樂進(jìn)行游說,希望與他們一起將以太網(wǎng)標(biāo)準(zhǔn)化、規(guī)范化。這個通用的以太網(wǎng)標(biāo)準(zhǔn)于1980年9月30日提出。當(dāng)時業(yè)界有兩個流行的非公用網(wǎng)絡(luò)標(biāo)準(zhǔn)令牌環(huán)網(wǎng)和ARCNET,在以太網(wǎng)浪潮的沖擊下他們很快萎縮并被取代。而在此過程中,3Com也成了一個國際化的大公司。梅特卡夫曾經(jīng)開玩笑說,Jerry Saltzer為3Com的成功作出了貢獻(xiàn)。Saltzer在一篇[哪個/哪些?]與他人合著的很有影響力的論文中指出,在理論上令牌環(huán)網(wǎng)要比以太網(wǎng)優(yōu)越。受到此結(jié)論的影響,很多電腦廠商或猶豫不決或決定不把以太網(wǎng)接口做為機器的標(biāo)準(zhǔn)配置,這樣3Com才有機會從銷售以太網(wǎng)網(wǎng)卡大賺。這種情況也導(dǎo)致了另一種說法“以太網(wǎng)不適合在理論中研究,只適合在實際中應(yīng)用”。也許只是句玩笑話,但這說明了這樣一個技術(shù)觀點:通常情況下,網(wǎng)絡(luò)中實際的數(shù)據(jù)流特性與人們在局域網(wǎng)普及之前的估計不同,而正是因為以太網(wǎng)簡單的結(jié)構(gòu)才使局域網(wǎng)得以普及。梅特卡夫和Saltzer曾經(jīng)在麻省理工學(xué)院MAC項目(Project MAC)的同一層樓工作,當(dāng)時他正在做自己的哈佛大學(xué)畢業(yè)論文,在此期間奠定了以太網(wǎng)技術(shù)的理論基礎(chǔ)。

1985 年,美國電氣電子工程師協(xié)會 (IEEE) 制定了一系列局域網(wǎng) (LAN)標(biāo)準(zhǔn),稱為 IEEE 802 標(biāo)準(zhǔn)。這些已被廣泛接受,現(xiàn)在構(gòu)成了大多數(shù) LAN 的核心。IEEE 802 標(biāo)準(zhǔn)之一,IEEE 802.3,是一種稱為“以太網(wǎng)”的標(biāo)準(zhǔn)。這是當(dāng)今世界上使用最廣泛的 LAN 技術(shù)。盡管IEEE 802.3與原始標(biāo)準(zhǔn)(“藍(lán)皮書”)有些不同。它非常相似,兩組標(biāo)準(zhǔn)都可以用于同一個局域網(wǎng)。

如今,以太網(wǎng)采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection,載波監(jiān)聽多路存取和沖突檢測)介質(zhì)訪問控制方式的局域網(wǎng)技術(shù),最初由Xerox公司于1975年研制成功,1979年7月~1982年間,由__DEC、Intel和Xerox__三家公司制定了以太網(wǎng)的技術(shù)規(guī)范DIX,以此為基礎(chǔ)形成的IEEE802.3以太網(wǎng)標(biāo)準(zhǔn)在1989年正式成為國際標(biāo)準(zhǔn)。在20多年中以太網(wǎng)技術(shù)不斷發(fā)展,成為迄今最廣泛應(yīng)用的局域網(wǎng)技術(shù),產(chǎn)生了多種技術(shù)標(biāo)準(zhǔn)。

2 以太網(wǎng)概述

以太網(wǎng)Ethernet)是一種計算機__局域網(wǎng)__技術(shù)。IEEE組織的IEEE 802.3標(biāo)準(zhǔn)制定了以太網(wǎng)的技術(shù)標(biāo)準(zhǔn),它規(guī)定了包括物理層的連線、電子信號和介質(zhì)訪問控制的內(nèi)容。以太網(wǎng)是目前應(yīng)用最普遍的局域網(wǎng)技術(shù),取代了其他局域網(wǎng)標(biāo)準(zhǔn)如令牌環(huán)、FDDI和ARCNET。

以太網(wǎng)的標(biāo)準(zhǔn)拓?fù)浣Y(jié)構(gòu)為__總線型拓?fù)鋉_,但目前的快速以太網(wǎng)(100BASE-T、1000BASE-T標(biāo)準(zhǔn))為了減少沖突,將能提高的網(wǎng)絡(luò)速度和使用效率最大化,使用交換機(Switch hub)來進(jìn)行網(wǎng)絡(luò)連接和組織。如此一來,以太網(wǎng)的拓?fù)浣Y(jié)構(gòu)就成了星型;但在邏輯上,以太網(wǎng)仍然使用總線型拓?fù)浜虲SMA/CD(Carrier Sense Multiple Access/Collision Detection,即載波多重訪問/碰撞偵測)的總線技術(shù)

__以太網(wǎng) __(Ethernet) 在組網(wǎng)技術(shù)中占的比例最高,很多人直接把以太網(wǎng)理解為互聯(lián)網(wǎng)。因此這里有必要詳細(xì)說明以太網(wǎng)和互聯(lián)網(wǎng)的區(qū)別和聯(lián)系。

__互聯(lián)網(wǎng)__即INTERNET,它是一個全球性互聯(lián)網(wǎng)絡(luò)。它是由從地方到全球范圍內(nèi)幾百萬個私人的,政府的,學(xué)術(shù)界的,企業(yè)的和政府的網(wǎng)絡(luò)所構(gòu)成,通過電子,無線和光纖網(wǎng)絡(luò)技術(shù)等等一系列廣泛的技術(shù)聯(lián)系在一起。它以TCP/IP協(xié)議簇作為通信方式,體系結(jié)構(gòu)分為4層:應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,網(wǎng)絡(luò)接口層。

__以太網(wǎng)__是最通用的通信協(xié)議標(biāo)準(zhǔn)。以太網(wǎng)絡(luò)使用CSMA/CD技術(shù),(載波監(jiān)聽多路訪問及沖突檢測)并以10M/s的速率(或100M/s 、1000M/s等速率)運行在多種類型的電纜上。它規(guī)定了包括物理層的連線、電子信號和介質(zhì)訪問層協(xié)議的內(nèi)容。簡單來說,以太網(wǎng)(Ethernet),是讓局域網(wǎng)連接的一種技術(shù),取代了其他局域網(wǎng)標(biāo)準(zhǔn)如令牌環(huán)、FDDI和ARCNET。

以太網(wǎng)是指遵守 IEEE 802.3 標(biāo)準(zhǔn)組成的局域網(wǎng),由 IEEE 802.3 標(biāo)準(zhǔn)規(guī)定的主要是位于參考模型的物理層 (PHY) 和數(shù)據(jù)鏈路層中的介質(zhì)訪問控制子層 (MAC)。在家庭、企業(yè)和學(xué)校所組建的 PC局域網(wǎng)形式一般也是以太網(wǎng),其標(biāo)志是使用水晶頭網(wǎng)線來連接 (當(dāng)然還有其它形式)。 IEEE 還有其它局域網(wǎng)標(biāo)準(zhǔn),如 IEEE 802.11 是無線局域網(wǎng),俗稱 Wi-Fi。 IEEE802.15 是個人域網(wǎng),即藍(lán)牙技術(shù),其中的 802.15.4 標(biāo)準(zhǔn)則是 ZigBee 技術(shù)。

以太網(wǎng)只是組成互聯(lián)網(wǎng)的一個子集,以太網(wǎng)是現(xiàn)在主流的局域網(wǎng)標(biāo)準(zhǔn),而互聯(lián)網(wǎng)是指將大量的局域網(wǎng)連接起來,進(jìn)行資源的分享。另外,互聯(lián)網(wǎng)與以太網(wǎng)是兩個不同的概念,前者是范圍概念,后者是技術(shù)概念?;ヂ?lián)網(wǎng)(Internet)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)可以算作一類,它們都是按照區(qū)域和范圍來分類的。而以太網(wǎng)(Ethernet)、ATM網(wǎng)和FDDI網(wǎng)可以算作一類,它們是按照傳輸技術(shù)分類的。

以太網(wǎng)描述了__物理(PHY)層和數(shù)據(jù)鏈路(Data Link)層__,如下圖所示。

16867618130059m3lbzna57

在物理層,有不同的電纜選項和不同的速度。然而,以太網(wǎng)的優(yōu)點之一是它使用相同的數(shù)據(jù)鏈路層標(biāo)準(zhǔn)。你可以在網(wǎng)絡(luò)中混合使用不同的以太網(wǎng)標(biāo)準(zhǔn)。下面是一個例子:

1686761814289eqx1qiz2e6

上面我們看到三臺主機連接到使用不同以太網(wǎng)標(biāo)準(zhǔn)的兩臺交換機。交換機之間的連接是 10 Gbps 光纖連接。即使我們混合了不同的標(biāo)準(zhǔn),該網(wǎng)絡(luò)也將能夠轉(zhuǎn)發(fā)以太網(wǎng)幀。

3 以太網(wǎng)幀格式

以太網(wǎng)的一大優(yōu)點是,雖然有不同的標(biāo)準(zhǔn),但都使用通用的以太網(wǎng)幀。自 70 年代的原始以太網(wǎng)標(biāo)準(zhǔn)以來,此框架沒有太大變化。這是以太網(wǎng)幀的樣子:

1686761815938pto4or7u38

前導(dǎo)碼 :這是一個 7 字節(jié)的 1 和 0 模式,用于同步。

SFD :“起始幀定界符”標(biāo)記前導(dǎo)碼的結(jié)尾,并告訴接收器接下來的字段將是實際的以太網(wǎng)幀,從目標(biāo)字段開始。

目的地址 :這是接收方的目的地 MAC 地址。

源地址 :發(fā)送幀的設(shè)備的源MAC地址。

類型 :這告訴我們以太網(wǎng)幀內(nèi)攜帶的內(nèi)容。IPv4 數(shù)據(jù)包、IPv6 數(shù)據(jù)包或其他內(nèi)容。

數(shù)據(jù) :它攜帶我們嘗試傳輸?shù)膶嶋H數(shù)據(jù),例如 IPv4 數(shù)據(jù)包。

FCS :幀校驗序列幫助接收器確定幀是正確還是損壞。

綠色標(biāo)記的字段就是我們所說的以太網(wǎng)頭。

TCP/IP 協(xié)議棧中的每層協(xié)議報文的封裝與拆裝如下:

1686761816231q10hf7mctk

當(dāng)用戶發(fā)送數(shù)據(jù)時,將數(shù)據(jù)向下交給傳輸層,這是處于應(yīng)用層的操作,應(yīng)用層可以通過調(diào)用傳輸層的接口來編寫特定的應(yīng)用程序。而 TCP/IP 協(xié)議一般也會包含一些簡單的應(yīng)用程序如 Telnet 遠(yuǎn)程登錄、 FTP 文件傳輸、 SMTP 郵件傳輸協(xié)議等。傳輸層會在數(shù)據(jù)前面加上傳輸層首部(此處以TCP 協(xié)議為例,傳輸層首部為 TCP 首部,也可以是 UDP 首部),然后向下交給網(wǎng)絡(luò)層。同樣地,網(wǎng)絡(luò)層會在數(shù)據(jù)前面加上網(wǎng)絡(luò)層首部(IP 首部),然后將數(shù)據(jù)向下交給鏈路層,鏈路層會對數(shù)據(jù)進(jìn)行最后一次封裝,即在數(shù)據(jù)前面加上鏈路層首部(此處使用以太網(wǎng)接口為例),然后將數(shù)據(jù)交給網(wǎng)卡。最后,網(wǎng)卡將數(shù)據(jù)轉(zhuǎn)換成物理鏈路上的電平信號,數(shù)據(jù)就這樣被發(fā)送到了網(wǎng)絡(luò)中。

當(dāng)設(shè)備的網(wǎng)卡接收到某個數(shù)據(jù)包后,它會將其放置在網(wǎng)卡的接收緩存中,并告知 TCP/IP 內(nèi)核。然后 TCP/IP 內(nèi)核就開始工作了,它會將數(shù)據(jù)包從接收緩存中取出,并逐層解析數(shù)據(jù)包中的協(xié)議首部信息,并最終將數(shù)據(jù)交給某個應(yīng)用程序。數(shù)據(jù)的接收過程與發(fā)送過程正好相反,

常用的以太網(wǎng)MAC幀格式有兩種標(biāo)準(zhǔn) : DIX Ethernet II標(biāo)準(zhǔn),IEEE 的 802.3 標(biāo)準(zhǔn) 。

C:\\Users\\BruceOu\\Desktop\\17848908-f7abfef7bf5f5a7b.png

Ethernet V2可以裝載的最大數(shù)據(jù)長度是1500字節(jié),而IEEE802.3可以裝載的最大數(shù)據(jù)是1492字節(jié)(SNAP)或是1497字節(jié); Ethernet V2不提供MAC層的數(shù)據(jù)填充功能,而IEEE802.3不僅提供該功能,還具備服務(wù)訪問點(SAP)和SNAP層,能夠提供更有效的數(shù)據(jù)鏈路層控制和更好的傳輸保證。那么我們可以得出這樣的結(jié)論:Ethernet V2比IEEE802.3更適合于傳輸大量的數(shù)據(jù),但EthernetV2缺乏數(shù)據(jù)鏈路層的控制,不利于傳輸需要嚴(yán)格傳輸控制的數(shù)據(jù),這也正是IEEE802.3的優(yōu)勢所在,越需要嚴(yán)格傳輸控制的應(yīng)用,越需要用IEEE802.3或SNAP來封裝,但I(xiàn)EEE802.3也不可避免的帶來數(shù)據(jù)裝載量的損失,因此該格式的封裝往往用在較少數(shù)據(jù)量承載但又需要嚴(yán)格控制傳輸?shù)膽?yīng)用中。

在實際應(yīng)用中,我們會發(fā)現(xiàn),大多數(shù)應(yīng)用的以太網(wǎng)數(shù)據(jù)包是EthernetV2的幀(如HTTP、FTP、SMTP、POP3等應(yīng)用),而交換機之間的BPDU(橋協(xié)議數(shù)據(jù)單元)數(shù)據(jù)包則是IEEE802.3的幀,VLANTrunk協(xié)議如802.1Q和Cisco的CDP(思科發(fā)現(xiàn)協(xié)議)等則是采用IEEE802.3SNAP的幀。大家有興趣的話,可以利用Sniffer等協(xié)議分析工具去捕捉數(shù)據(jù)包,然后解碼查看是不是這樣的。

4 物理層

在物理層,由 IEEE 802.3 標(biāo)準(zhǔn)規(guī)定了以太網(wǎng)使用的傳輸介質(zhì)、傳輸速度、數(shù)據(jù)編碼方式和沖突檢測機制,物理層一般是通過一個 PHY 芯片實現(xiàn)其功能的。

4.1 傳輸介質(zhì)

傳輸介質(zhì)包括__同軸電纜、雙絞線 (Unshielded Twisted Pair, UTP)、光纖__。根據(jù)不同的傳輸速度和距離要求,基于這三類介質(zhì)的信號線又衍生出很多不同的種類。最常用的是“五類線”適用于 100BASE-T和 10BASE-T 的網(wǎng)絡(luò),它們的網(wǎng)絡(luò)速率分別為 100Mbps 和 10Mbps。

以太網(wǎng)有許多不同的標(biāo)準(zhǔn),速度從 10 Mbps(兆比特每秒)到 100 Gbps(千兆比特每秒)。以下是一些流行的以太網(wǎng)標(biāo)準(zhǔn)的概述:

帶寬 通用名稱 非正式名稱 IEEE****名稱 線纜類型 最大傳輸距離
10 Mbps 細(xì)纜 10BASE2 802.3 同軸電纜 200m(實際185m)
10 Mbps 以太網(wǎng) 10BASE-T 802.3 UTP 100m
100 Mbps 快速以太網(wǎng) 100BASE-T 802.3u UTP 100m
1000 Mbps 千兆以太網(wǎng) 1000BASE-LX 802.3z 光纖 5000m
1000 Mbps 千兆以太網(wǎng) 1000BASE-T 802.3ab UTP 100m
10 Gbps 10千兆以太網(wǎng) 10GBASE-T 802.3an UTP 100m

不同的標(biāo)準(zhǔn)是由不同的名字組合而成:

  • 10/100/1000: 數(shù)字100用單位MHz (Megahertz)表示網(wǎng)線設(shè)計的__頻率__。即100 MHz。MHz的值越大,網(wǎng)線所支持的速度就越快。如果你嘗試將這種類型的網(wǎng)線用于更高的頻率(和速度)中,那么它將不工作或者變得極為不可靠。100 MHz以每秒100Mbit的速度傳輸,這在理論上指的就是12 Mbps。然而,在實際中,可能還無法獲得超過4 Mbps。
  • BASE: BASE是英文baseband的縮寫,指的就是__基帶__。表示沒有使用頻分復(fù)用或者其它頻率轉(zhuǎn)換技術(shù),每一個信號在一個單一頻率上完全控制線纜。
  • 數(shù)字T/F/C等: 一般數(shù)組表示__傳輸長度__;T代表承載信號的物理介質(zhì)是雙絞線纜(分為UTP(Unshielded Twisted Pair,非屏蔽雙絞線)和STP(Shielded Twicted Pair,屏蔽雙絞線)),在這里每一對傳送信號的雙絞線互相纏繞以(FEXT和NEXT之間)減少電磁干擾和串?dāng)_;F表示光纖
  • 最后的字母或數(shù)字(4/X等): 在同一種傳送速率下有多種不同的標(biāo)準(zhǔn),它們之間以一個字母或數(shù)字跟隨T/F/C之后的方式來區(qū)隔(例如TX)。它顯示了網(wǎng)線的結(jié)構(gòu)并指出包含的絞線對的數(shù)量。某些高速標(biāo)準(zhǔn)使用同軸電纜,則分配代號為CX。

下面以不同類型的傳輸介質(zhì)進(jìn)行介紹。

1.同軸電纜

同軸電纜的主要代表是10BASE5和10BASE2。

10BASE5 (又稱粗纜(Thick Ethernet)或黃色電纜)──最早實現(xiàn)10 Mbit/s以太網(wǎng)。

C:\\Users\\BruceOu\\Desktop\\20180506111728817.jpg

早期IEEE標(biāo)準(zhǔn),使用單根RG-11同軸電纜,最大距離為500米,并最多可以連接100臺電腦的收發(fā)器,而纜線兩端必須接上50歐姆的終端電阻。接收端通過所謂的“插入式分接頭”插入電纜的內(nèi)芯和屏蔽層。在電纜終結(jié)處使用N型連接器。

1686761821630en29up3fvo

盡管由于早期的大量布設(shè),到現(xiàn)在還有一些系統(tǒng)在使用,這一標(biāo)準(zhǔn)實際上被10BASE2取代。

利用基帶的10M傳輸速率,采用曼徹斯特編碼傳輸數(shù)據(jù)。 該系統(tǒng)在安裝和維護(hù)上難度較大。

在IEEE Std 802.3?的Clause 8有詳細(xì)的介紹。

1686761833810tt7kfp3f44

Physical Layer partitioning, relationship to the ISO/IEC Open Systems Interconnection (OSI) reference model

10BASE2 (又稱細(xì)纜(Thin Ethernet)或模擬網(wǎng)絡(luò))── 10BASE5后的產(chǎn)品,使用RG-58同軸電纜,最長轉(zhuǎn)輸距離約200米(實際為185米),僅能連接30臺計算機,計算機使用T型適配器連接到帶有BNC連接器的網(wǎng)卡,而__線路兩頭需要50歐姆的終結(jié)器__。

C:\\Users\\BruceOu\\Desktop\\BNC-T.jpg

1686761837223mkqkf2d54x

利用基帶的10M傳輸速率,采用曼徹斯特編碼傳輸數(shù)據(jù)。雖然在能力、規(guī)格上不及10BASE5,但是因為其線材較細(xì)、布線方便、成本也便宜,所以得到更廣泛的使用,淘汰了10BASE5。由于雙絞線的普及,它也被各式的雙絞線網(wǎng)絡(luò)取代。

在IEEE Std 802.3?的Clause 10有詳細(xì)的介紹。

1686761837515nqo8xo2i5d

Physical Layer partitioning, relationship to the ISO/IEC Open Systems Interconnection (OSI) reference model

https://www.telecomworld101.com/Thinnet.html

【注】自2011年9月以來,該標(biāo)準(zhǔn)不再考慮維護(hù)變更。

2.雙絞線

StarLAN是第一個雙絞線上實現(xiàn)的以太網(wǎng)絡(luò)標(biāo)準(zhǔn)10 Mbit/s。后發(fā)展成10BASE-T,以及100BASE-TX和1000BASE-T

__10BASE-T__使用兩對非屏蔽雙絞線,一對線發(fā)送數(shù)據(jù),另一對線接收數(shù)據(jù),用RJ-45模塊作為端接器,星形拓?fù)浣Y(jié)構(gòu),信號頻率為20MHz,必須使用3類或更好的UTP電纜;布線按照EIA568標(biāo)準(zhǔn),站點中繼器和中繼器中繼器的最大距離為100m。保持了10base5的4中繼器/5網(wǎng)段的設(shè)計能力,使10base-T局域網(wǎng)的最大直徑為500m。

10Base-T的集線器和網(wǎng)卡每16秒就發(fā)出“滴答”(Hear-beat)脈沖,集線器和網(wǎng)卡都要監(jiān)聽此脈沖,收到“滴答” 信號表示物理連接已建立,10base-T設(shè)備通過LED向網(wǎng)絡(luò)管理員指示鏈路是否正常。

C:\\Users\\BruceOu\\Desktop\\1551059099941-1551059099941.png

如下圖所示,UTP 電纜有 4 對線對,每對 2 根線。每對線都有兩種匹配的顏色。例如,藍(lán)色和藍(lán)白色。在 UTP 電纜的末端,我們使用 RJ45 連接器。

C:\\Users\\BruceOu\\Desktop\\1551059918873-1551059918873.png

RJ45 連接器有 8 個可以插入電線的位置,稱為“引腳”。我們從左到右數(shù)針數(shù),查看 RJ45 連接器的底部。

1686761849089z9t543ejn7

10base-T因為價格便宜、配置靈活和易于管理而流行起來,現(xiàn)在占整個以太網(wǎng)銷售量的90%以上。

在IEEE Std 802.3?的Clause 14有詳細(xì)的介紹。

1686761849492jivgmx6cvk

10BASE-T relationship to the ISO/IEC Open Systems Interconnection (OSI) reference model and the IEEE 802.3 CSMA/CD LAN model

__100base-T__稱Fast Ethernet(快速以太網(wǎng)),是許多以標(biāo)稱速率100 Mbit/s(較早的以太網(wǎng)速度為10 Mbit / s)傳輸流量的以太網(wǎng)標(biāo)準(zhǔn)的統(tǒng)稱。在快速以太網(wǎng)標(biāo)準(zhǔn)中,100BASE-TX是最常見的。

名稱中的“100”是指100Mbit/s的傳輸速度;而“BASE”是指基帶信令; 破折號后面的字母(“T”或“F”)是指承載信號的物理介質(zhì)(分別為雙絞線或光纖);而最后一個字符(“X”,“4”等)指的是使用的行代碼方法。 快速以太網(wǎng)有時被稱為100BASE-X,其中“X”是FX和TX變體的占位符。

1995年5月正式通過了快速以太網(wǎng)/100Base-T規(guī)范,即IEEE 802.3u標(biāo)準(zhǔn),是對IEEE802.3的補充。與10base-T一樣采用星形拓?fù)浣Y(jié)構(gòu),但100Base-T包含4個不同的物理層規(guī)范,并且包含了網(wǎng)絡(luò)拓?fù)浞矫娴脑S多新規(guī)則??梢哉f是10Base-T的升級版。

在IEEE Std 802.3?的Clause 21有詳細(xì)的介紹。

1686761852581elqct4fynk

Architectural positioning of 100BASE-T

__1000BASE-T__采用四對五類平衡電纜的1000 Mb/s 物理層規(guī)格。與10Base-T、100Base-T完全兼容。

前面兩種標(biāo)準(zhǔn)有兩根線對,一根用于傳輸,另一根用于接收。然而,1000BASE-T使用所有 4 對線。它不是使用不同的線對進(jìn)行傳輸/接收,而是能夠在每個線對上同時發(fā)送和接收。

C:\\Users\\BruceOu\\Desktop\\QQ截圖20210718185714.png

RJ45 連接器中的引腳布局相同,但我們使用了額外的電線:

在IEEE Std 802.3?的Clause 40有詳細(xì)的介紹。

168676185749360k3p2dsz8

Type 1000BASE-T PHY relationship to the ISO Open Systems Interconnection (OSI) Reference Model and the IEEE 802.3 CSMA/CD LAN Model

3.光纖

目前傳輸速度最快傳播距離最長的就是光纖,主要有1000BASE-LX(long wavelength laser)、1000BASE-SX (Short Wavelength Laser)、1000BASE-T。

IEEE802.3z定義了基于光纖和短距離銅纜的1000Base-X,采用8B/10B編碼技術(shù),信道傳輸速度為1.25Gbit/s,去耦后實現(xiàn)1000Mbit/s傳輸速度。

1000BASE-X 采用單?;蚨嗄iL波激光器的規(guī)格。采用直徑為62.5um或50um的多模光纖時,工作波長范圍為1270-1355nm,傳輸距離為550m;采用直徑為9um或10um的單模光纖,工作波長范圍為1270-1355nm,傳輸距離為5km左右。

1686761860645jv4236c2no

在IEEE Std 802.3?的Clause 38有詳細(xì)的介紹。

1686761871680m0bmbr9r3d

Relationship of 1000BASE-X and the PMDs

4.2編碼

為了讓接收方在沒有外部時鐘參考的情況也能確定每一位的起始、結(jié)束和中間位置,在傳輸信號時不直接采用二進(jìn)制編碼。在 10BASE-T 的傳輸方式中采用曼徹斯特編碼,在 100BASE-T 中則采用 4B/5B 編碼。

曼徹斯特編碼把每一個二進(jìn)制位的周期分為兩個間隔,在表示“1”時,以前半個周期為高電平,后半個周期為低電平。表示“0”時則相反,具體見下圖。

1686761879315fdamjhdgtx

采用曼徹斯特碼在每個位周期都有電壓變化,便于同步。但這樣的編碼方式效率太低,只有 50%。在 100BASE-T 采用的 4B/5B 編碼是把待發(fā)送數(shù)據(jù)位流的每 4 位分為一組,以特定的 5 位編碼來表示,這些特定的 5 位編碼能使數(shù)據(jù)流有足夠多的跳變,達(dá)到同步的目的,而且效率也從曼徹斯特編碼的 50% 提高到了 80%。

4.3 CSMA/CD沖突檢測

早期的以太網(wǎng)大多是多個節(jié)點連接到同一條網(wǎng)絡(luò)總線上 (總線型網(wǎng)絡(luò)),存在信道競爭問題,因而每個連接到以太網(wǎng)上的節(jié)點都必須具備沖突檢測功能。

1686761879792194hwemtoj

上面我們看到 H1 和 H2 都在發(fā)送以太網(wǎng)幀。集線器在連接到 H3 的端口上重復(fù)這些幀。當(dāng)這同時發(fā)生時,我們會發(fā)生碰撞并且兩幀都丟失了。

為了解決這個問題,我們必須使用半雙工。

半雙工意味著我們不能同時發(fā)送和接收。當(dāng)一臺計算機正在傳輸時,其他所有人都必須等待。當(dāng)沒有人傳輸時,我們可以拍攝并傳輸一幀。

然而,這并不意味著我們完全沒有碰撞。當(dāng)兩臺計算機決定“線路空閑”并開始傳輸時,我們?nèi)匀粫l(fā)生碰撞。為了解決這個問題,我們有一個叫做 CSMA/CD 的協(xié)議 。

CSMA/CD全稱是Carrier Sense Multiple Access with Collision Detection,載波偵聽多路訪問/沖突檢測協(xié)議),已廣泛應(yīng)用于以太網(wǎng)中。

所謂__載波偵聽__(Carrier Sense),意思是網(wǎng)絡(luò)上各個工作站在發(fā)送數(shù)據(jù)前都要確認(rèn)總線上有沒有數(shù)據(jù)傳輸。若有數(shù)據(jù)傳輸(稱總線為忙),則不發(fā)送數(shù)據(jù);若無數(shù)據(jù)傳輸(稱總線為空),立即發(fā)送準(zhǔn)備好的數(shù)據(jù)。

所謂__多路訪問__(Multiple Access),意思是網(wǎng)絡(luò)上所有工作站收發(fā)數(shù)據(jù)共同使用同一條總線,且發(fā)送數(shù)據(jù)是廣播式的。

所謂__沖突__(Collision),意思是若網(wǎng)上有兩個或兩個以上工作站同時發(fā)送數(shù)據(jù),在總線上就會產(chǎn)生信號的混合,這樣哪個工作站都辨別不出真正的數(shù)據(jù)是什么。這種情況稱為數(shù)據(jù)沖突,又稱為__碰撞__。

__CSMA/CD 沖突檢測機制大致__如下:如果多個節(jié)點同時利用同一條總線發(fā)送數(shù)據(jù),則會產(chǎn)生沖突,總線上的節(jié)點可通過接收到的信號與原始發(fā)送的信號的比較檢測是否存在沖突,若存在沖突則停止發(fā)送數(shù)據(jù),隨機等待一段時間再重傳。如果再次碰撞,發(fā)射節(jié)點再次等待,等待時間幾乎是前一個的兩倍:這就是所謂的退避(即“下降”)指數(shù)。除非它已經(jīng)達(dá)到了最大值。

具有三種狀態(tài)的 CSMA-CD

現(xiàn)在大多數(shù)局域網(wǎng)組建的時候很少采用總線型網(wǎng)絡(luò),大多是一個設(shè)備接入到一個獨立的路由或交換機接口,組成星型網(wǎng)絡(luò),不會產(chǎn)生沖突。但為了兼容,新出的產(chǎn)品還是帶有沖突檢測機制。

CSMA/CD 的整個方案如下圖所示:

CSMA/CD

CSMA/CD的幀格式

IEEE 802.3 標(biāo)準(zhǔn)規(guī)定的幀格式包含以下字段。

IEEE 802.3 CSMA/CD 幀的幀格式

1.前導(dǎo)碼 :提供位同步的七個字節(jié)(56 位)。它由交替的 Os 和 1s 組成。目的是提供警報和定時脈沖。

2.起始幀定界符(SFD) :它是一個字節(jié)字段,具有獨特的模式:10 10 1011。它標(biāo)志著幀的開始。

3.目標(biāo)地址(DA) :它是包含數(shù)據(jù)包目標(biāo)物理地址的六字節(jié)字段。

4.源地址(SA) :它也是一個六字節(jié)字段,包含源或最后一個轉(zhuǎn)發(fā)數(shù)據(jù)包的設(shè)備(最近的路由器到接收器)的物理地址。

5.長度 :這兩個字節(jié)字段指定數(shù)據(jù)字段中的長度或字節(jié)數(shù)。

6.數(shù)據(jù) :它可以是 46 到 1500 字節(jié),取決于幀的類型和信息字段的長度。

7.幀校驗序列(FCS) :這對于字節(jié)字段包含用于錯誤檢測的 CRC。

CSMA/CD流程

CSMA/CD 程序

第一步:載波監(jiān)聽,當(dāng)一個站點想要發(fā)送數(shù)據(jù)的時候,它檢測網(wǎng)絡(luò)查看是否有其他站點正在傳輸,即偵聽信道是否空閑,要確保沒有其他節(jié)點信道,所以該節(jié)點首先要監(jiān)聽信道上的動靜,也就是先聽后說。如果信道在一定時段內(nèi)寂靜無聲(稱為幀間縫隙IFG),則該節(jié)點就開始傳輸,也就是無聲則說。

第二步:沖突檢測,如果信道一直很忙碌,就一直監(jiān)視信道,直到出現(xiàn)最小的IFG時段時,該節(jié)點才開始發(fā)送它的數(shù)據(jù),也就是有空就說。如果兩個節(jié)點或更多的節(jié)點都在監(jiān)聽和等待發(fā)送,然后在信道空時同時決定立即(幾乎同時)開始發(fā)送數(shù)據(jù),此時就發(fā)生碰撞。這一事件會導(dǎo)致沖突,并使雙方信息包都受到損壞。以太網(wǎng)在傳輸過程中不斷地監(jiān)聽信道,以檢測__碰撞沖突__,也就是邊聽邊說。

第三步:如果一個節(jié)點在傳輸期間檢測出碰撞沖突,則立即停止該次傳輸,并向信道發(fā)出一個“擁擠”信號,以確保其他所有節(jié)點也發(fā)現(xiàn)該沖突,從而摒棄可能一直在接收的受損的信息包也就是沖突停止,即一次只能一人講。

第四步:多路存取,在等待一段時間(稱為后退)后,想發(fā)送的節(jié)點試圖進(jìn)行新的發(fā)送。 這時采用一種叫二進(jìn)制指數(shù)退避策略(Binary Exponential Back off Policy)的算法來決定不同的節(jié)點在試圖再次發(fā)送數(shù)據(jù)前要等待一段時間,也就是隨機延遲。當(dāng)延時一段時間后,總線為空閑時,再重新發(fā)送未發(fā)完的數(shù)據(jù)。

總結(jié):先聽后說,無聲則說;有空就說,邊聽邊說;一旦沖突,立即停說,隨機延遲,等待再說。

CSMA/CD控制方式的優(yōu)點是:原理比較簡單,技術(shù)上易實現(xiàn),網(wǎng)絡(luò)中各工作站處于平等地位,不需集中控制,不提供優(yōu)先級控制。但在網(wǎng)絡(luò)負(fù)載增大時,發(fā)送時間增長,發(fā)送效率急劇下降。

4.4 PHY 層芯片:LAN8742A

接下來介紹一款常用于嵌入式的PHY芯片,其他芯片也是類似的原理。

LAN8742A是 SMSC 公司 (已被 Microchip 公司收購) 設(shè)計的一個體積小、功耗低、全能型10/100Mbps 的以太網(wǎng)PHY 層收發(fā)器,I/O 引腳電壓符合 IEEE802.3-2005 標(biāo)準(zhǔn)。它是針對消費類電子和企業(yè)應(yīng)用而設(shè)計的。 LAN8742A 總共只有 24Pin,僅支持 RMII 接口。LAN8742A可以通過自協(xié)商的方式與目的主機最佳的連接方式(速度和雙工模式),支持 HP Auto-MDIX 自動翻轉(zhuǎn)功能,無需更換網(wǎng)線即可將連接更改為直連或交叉連接。

LAN8742A的主要特點如下:

  • 高性能的 10/100M 以太網(wǎng)傳輸模塊
  • 支持 RMII 接口以減少引腳數(shù)
  • 支持全雙工和半雙工模式
  • 兩個狀態(tài) LED 輸出
  • 可以使用 25M 晶振以降低成本
  • 支持自協(xié)商模式
  • 支持 HP Auto-MDIX 自動翻轉(zhuǎn)功能
  • 支持 SMI 串行管理接口
  • 支持 MAC 接口
  • 支持WOL網(wǎng)絡(luò)喚醒功能

LAN8742A組成的網(wǎng)絡(luò)結(jié)構(gòu)見下圖。

1686761884327tuef0dozh6

LAN8742A通過 RMII 與 MAC 連接。 RJ45 是網(wǎng)絡(luò)插座,在與 LAN8742A連接之間還需要一個變壓器,所以一般使用帶電壓轉(zhuǎn)換和 LED 指示燈的 HY911105A 型號的插座。一般來說,必須為使用 RMII 接口的 PHY 提供 50MHz 的時鐘源輸入到 REF_CLK 引腳,不過 LAN8742A內(nèi)部集成PLL,可以將 25MHz 的時鐘源陪頻到 50MHz 并在指定引腳輸出該時鐘,所以我們可以直接使其與 REF_CLK 連接達(dá)到提供 50MHz 時鐘效果。

LAN8742A內(nèi)部系統(tǒng)結(jié)構(gòu)見下圖。

1686761884859ha46asxzj8

LAN8742A有各個不同功能模塊組成,最重要的要數(shù)接收控制器和發(fā)送控制器,其它的基本上都是與外部引腳掛鉤,實現(xiàn)信號傳輸。部分引腳是具有雙重功能的,比如 PHYAD0 與 RXER 引腳是共用的,在系統(tǒng)上電后 LAN8742A會馬上讀取這部分共用引腳的電平,以確定系統(tǒng)的狀態(tài)并保存在相關(guān)寄存器內(nèi),之后則自動轉(zhuǎn)入作為另一功能引腳。

__PHYAD[0]__引腳用于配置 SMI 通信的 LAN8742A地址,在芯片內(nèi)部該引腳已經(jīng)自帶下拉電阻,默認(rèn)認(rèn)為 0(即使外部懸空不接),在系統(tǒng)上電時會檢測該引腳獲取得到 LAN8742A的地址為 0 或者1,并保存在特殊模式寄存器 (R18) 的 PHYAD 位中,該寄存器的 PHYAD 有 5 個位,在需要超過2 個 LAN8742A時可以通過軟件設(shè)置不同 SMI 通信地址。 PHYAD[0] 是與 RXER 引腳共用。

__MODE[2:0]__引腳用于選擇 LAN8742A網(wǎng)絡(luò)通信速率和工作模式,可選 10Mbps 或 100Mbps 通信速度,半雙工或全雙工工作模式,另外 LAN8742A支持 HP Auto-MDIX 自動翻轉(zhuǎn)功能,即可自動識別直連或交叉網(wǎng)線并自適應(yīng)。一般將 MODE 引腳都設(shè)置為 1,可以讓 LAN8742A啟動自適應(yīng)功能,它會自動尋找最優(yōu)工作方式。 MODE[0] 與 RXD0 引腳共用、 MODE[1] 與 RXD1 引腳共用、MODE[2] 與 CRS_DV 引腳共用。

__nINT/REFCLKO__引腳用于 RMII 接口中 REF_CLK 信號線,當(dāng) nINTSEL 引腳為低電平時,也就是REF_CLK Out 模式,nINT/REFCLKO 作為 REF_CLK 時鐘源。它也可以被設(shè)置成 50MHz 時鐘輸出,這樣可以直接與 STM32F746 的 REF_CLK 引腳連接為其提供50MHz 時鐘源,這種模式要求為 XTAL1 與 XTAL2 之間或為 TAL1/CLKIN 提供 25MHz 時鐘,由LAN8742A內(nèi)部 PLL 電路陪頻得到 50MHz 時鐘,此時 nIN/REFCLKO 引腳的中斷功能不可用,用于 50MHz 時鐘輸出。

1686761886691l2k3ayzi9m

當(dāng) nINTSEL 引腳為高電平時,也就是REF_CLK In 模式,nINT/REFCLKO 作為中斷引腳。LAN8742A被設(shè)置為時鐘輸入,即外部時鐘源直接提供 50MHz 時鐘接入 STM32F46的REF_CLK 引腳和 LAN8742A的 XTAL1/CLKIN 引腳,此時 INT/REFCLKO 可用于中斷功能。 nINTSEL 與 LED2 引腳共用,一般使用下拉。

1686761890604lds4z37cai

REGOFF 引腳用于配置內(nèi)部 +1.2V 電壓源, LAN8742A內(nèi)部需要 +1.2V 電壓,可以通過 VDDCR引腳輸入 +1.2V 電壓提供,也可以直接利用 LAN8742A內(nèi)部 +1.2V 穩(wěn)壓器提供。當(dāng) REGOFF 引腳為低電平時選擇內(nèi)部 +1.2V 穩(wěn)壓器。 REGOFF 與 LED1 引腳共用。

5 數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層的主要職責(zé)是通過單個鏈路傳輸數(shù)據(jù)報。數(shù)據(jù)鏈路層協(xié)議定義了跨節(jié)點交換的數(shù)據(jù)包的格式以及錯誤檢測,重傳,流控制和隨機訪問等操作。

數(shù)據(jù)鏈路層提供服務(wù):

1686761894647ojhlipzcjl

成幀和鏈路訪問 :數(shù)據(jù)鏈路層協(xié)議在鏈路層傳輸之前將每個網(wǎng)絡(luò)幀封裝在鏈路層幀內(nèi)。幀由包含網(wǎng)絡(luò)層數(shù)據(jù)報的數(shù)據(jù)字段和多個數(shù)據(jù)字段組成。它規(guī)定了幀的結(jié)構(gòu)以及通過鏈路傳輸幀的信道訪問協(xié)議。

可靠的交付 :數(shù)據(jù)鏈路層提供可靠的交付服務(wù),即無錯誤地傳輸網(wǎng)絡(luò)層數(shù)據(jù)報。通過傳輸和確認(rèn)完成可靠的傳送服務(wù)。數(shù)據(jù)鏈路層主要通過鏈路提供可靠的傳送服務(wù),因為它們具有較高的錯誤率并且可以在本地校正,發(fā)生錯誤的鏈路而不是強制重新傳輸數(shù)據(jù)。

流控制 :接收節(jié)點可以以比處理幀更快的速率接收幀。如果沒有流量控制,接收器的緩沖區(qū)可能會溢出,幀可能會丟失。為了克服這個問題,數(shù)據(jù)鏈路層使用流控制來防止鏈路一側(cè)的發(fā)送節(jié)點壓倒鏈路另一側(cè)的接收節(jié)點。

錯誤檢測 :可以通過信號衰減和噪聲引入錯誤。數(shù)據(jù)鏈路層協(xié)議提供了一種檢測一個或多個錯誤的機制。這是通過在幀中添加錯誤檢測位來實現(xiàn)的,然后接收節(jié)點可以執(zhí)行錯誤檢查。

糾錯 :糾錯與錯誤檢測類似,不同之處在于接收節(jié)點不僅檢測錯誤,還確定錯誤發(fā)生在幀中的位置。

半雙工和全雙工 :在全雙工模式下,兩個節(jié)點都可以同時傳輸數(shù)據(jù)。在半雙工模式下,只有一個節(jié)點可以同時傳輸數(shù)據(jù)。

5.1錯誤檢測

當(dāng)數(shù)據(jù)從一臺設(shè)備傳輸?shù)搅硪慌_設(shè)備時,系統(tǒng)不保證該設(shè)備接收到的數(shù)據(jù)與另一臺設(shè)備發(fā)送的數(shù)據(jù)是否相同。錯誤是接收端收到的消息與傳輸?shù)南⒉煌那闆r。

錯誤可以分為兩類: 單比特錯誤和突發(fā)錯誤 。

C:\\Users\\BruceOu\\Desktop\\20210720-ethernet-t2.png

1.單比特錯誤

給定數(shù)據(jù)單元的唯一一位從1變?yōu)?或從0變?yōu)?。

1686761897780ig8n5i0ou3

單比特錯誤主要發(fā)生在并行數(shù)據(jù)傳輸中。例如,如果使用8條線來發(fā)送一個字節(jié)的8位,如果其中一條線路有噪聲,則每個字節(jié)會損壞單個位。

2.突發(fā)錯誤

兩個或多個位從0更改為1或從1更改為0稱為突發(fā)錯誤。從第一個損壞位到最后一個損壞位確定突發(fā)錯誤。

1686761898166v5d9q15tqb

突發(fā)錯誤最有可能發(fā)生在串行數(shù)據(jù)傳輸中。受影響的位數(shù)取決于噪聲和數(shù)據(jù)速率的持續(xù)時間。

5.2 糾錯

最流行的錯誤檢測技術(shù)是: 單一奇偶校驗、二維奇偶校驗、校驗、循環(huán)冗余校驗 。

1.單一奇偶校驗

單奇偶校驗是一種簡單的機制,檢測錯誤的成本低廉。在該技術(shù)中,冗余比特也稱為奇偶校驗比特,其附加在數(shù)據(jù)單元的末端,使得1的數(shù)量變?yōu)榕紨?shù)。因此,傳輸比特的總數(shù)將是9比特。

如果1位的數(shù)量是奇數(shù),則附加奇偶校驗位1,如果1位的數(shù)量是偶數(shù),則在數(shù)據(jù)單元的末尾附加奇偶校驗位0。

在接收端,根據(jù)接收的數(shù)據(jù)位計算奇偶校驗位,并與接收的奇偶校驗位進(jìn)行比較。

此技術(shù)生成偶數(shù)的總數(shù)為1,因此稱為偶數(shù)奇偶校驗。

1686761899168zc5ad9ep4f

單奇偶校驗的缺點有兩點:第一,它只能檢測非常罕見的單位錯誤;第二,如果兩個位互換,則它無法檢測到錯誤。

1686761899864lam9c3pybu

2.二維奇偶校驗

使用以表格形式組織數(shù)據(jù)的二維奇偶校驗可以提高性能。為每一行計算奇偶校驗位,相當(dāng)于單奇偶校驗。

在二維奇偶校驗中,將一個位塊分成行,并將冗余位行添加到整個塊中。

在接收端,奇偶校驗位與根據(jù)接收數(shù)據(jù)計算的奇偶校驗位進(jìn)行比較。

1686761900229gt1w7pkkdt

二維奇偶校驗的缺點有兩點:第一,如果一個數(shù)據(jù)單元中的兩個位被破壞,而另一個數(shù)據(jù)單元中完全相同位置的兩個位也被破壞,那么二維奇偶校驗器將無法檢測到錯誤;第二,在某些情況下,此技術(shù)不能用于檢測 4 位或更多位錯誤。

3.校驗

校驗和是基于冗余概念的__錯誤檢測__技術(shù)。它分為兩部分: 校驗和生成器以及校驗和檢查 。

校驗和__在發(fā)送方生成。校驗和生成器將數(shù)據(jù)細(xì)分為每個n位的相等段,并且所有這些段通過使用一個補碼算法加在一起。該和被補充并附加到原始數(shù)據(jù),稱為__校驗和字段 。擴展數(shù)據(jù)通過網(wǎng)絡(luò)傳輸。

1686761900997di7gdcj5xv

校驗和在接收方驗證。接收器將輸入數(shù)據(jù)細(xì)分為每個n比特的相等段,并且將所有這些段加在一起,然后補充該總和。如果和的補碼為零,則接受數(shù)據(jù),否則拒絕數(shù)據(jù)。

接收方遵循以下步驟:

  • 塊單元被分成k個部分和n個比特中的每一個。
  • 通過使用一個補碼算法將所有k個部分加在一起得到總和。
  • 總和是補充。
  • 如果和的結(jié)果為零,則接受數(shù)據(jù),否則丟棄數(shù)據(jù)。

4.循環(huán)冗余校驗(CRC)

CRC是用于確定錯誤的__冗余錯誤__技術(shù)。以下是CRC中用于錯誤檢測的步驟:

第一步:在CRC技術(shù)中,一串n 0被附加到數(shù)據(jù)單元,并且該n數(shù)小于預(yù)定數(shù)量的比特數(shù),稱為n + 1比特的除法。

第二步:使用一個過程將新擴展的數(shù)據(jù)除以除數(shù)稱為二進(jìn)制除法。從該除法產(chǎn)生的余數(shù)稱為CRC余數(shù)。

第三步:CRC余數(shù)替換原始數(shù)據(jù)末尾的附加0。這個新生成的單元被發(fā)送到接收器。

第四步:接收器接收數(shù)據(jù),然后接收CRC余數(shù)。接收器將整個單元視為一個單元,并將其除以用于查找CRC余數(shù)的相同除數(shù)。

如果該除法的結(jié)果為零,這意味著它沒有錯誤,并且數(shù)據(jù)被接受。如果該除法的結(jié)果不為零,則意味著數(shù)據(jù)由錯誤組成。因此,數(shù)據(jù)被丟棄。

16867619056540pgosktzz8

5.3 數(shù)據(jù)鏈路控制

數(shù)據(jù)鏈路控制是數(shù)據(jù)鏈路層提供的服務(wù),可通過物理介質(zhì)提供可靠的數(shù)據(jù)傳輸。例如,在半雙工傳輸模式中,一個設(shè)備一次只能傳輸數(shù)據(jù)。如果鏈路末端的兩個設(shè)備同時傳輸數(shù)據(jù),它們將發(fā)生沖突并導(dǎo)致信息丟失。數(shù)據(jù)鏈路層提供設(shè)備之間的協(xié)調(diào),以便不發(fā)生沖突。

數(shù)據(jù)鏈路層提供三個功能:

  • 線路控制
  • 流量控制
  • 錯誤控制

1686761906566hv3huhmuy5

1.線路控制

線路控制是數(shù)據(jù)鏈路層的一項功能,它提供鏈路系統(tǒng)之間的協(xié)調(diào)。它確定哪個設(shè)備可以發(fā)送,以及何時可以發(fā)送數(shù)據(jù)。

線路控制可以通過兩種方式實現(xiàn):ENQ/ACK、Poll/select。

(1) END / ACK

END / ACK代表查詢/確認(rèn)當(dāng)鏈路上沒有錯誤的接收器并且在兩個設(shè)備之間具有專用路徑以使得能夠接收傳輸?shù)脑O(shè)備是預(yù)期的設(shè)備時使用。END / ACK協(xié)調(diào)哪個設(shè)備將開始傳輸以及接收者是否準(zhǔn)備好。

發(fā)送器發(fā)送稱為查詢(ENQ)的幀,詢問接收器是否可用于接收數(shù)據(jù)。

接收器響應(yīng)肯定確認(rèn)(ACK)或否定確認(rèn)(NACK),其中肯定確認(rèn)意味著接收器準(zhǔn)備接收傳輸,否定確認(rèn)意味著接收器不能接受傳輸。

以下是接收者的回復(fù):

  • 如果對ENQ的響應(yīng)是肯定的,則發(fā)送方將發(fā)送其數(shù)據(jù),并且一旦其所有數(shù)據(jù)都已被發(fā)送,則設(shè)備利用EOT(發(fā)送結(jié)束)幀完成其發(fā)送。
  • 如果對ENQ的響應(yīng)是否定的,則發(fā)送方斷開連接并在另一時間重新開始傳輸。
  • 如果響應(yīng)既不是負(fù)面也不是正面,則發(fā)送方假定ENQ幀在傳輸過程中丟失,并且在放棄之前嘗試三次建立鏈接。

168676190731030j4jik8mu

(2) Pool/Select

線路控制的Pool/Select方法適用于將一個設(shè)備指定為主站,而其他設(shè)備為二級站的拓?fù)洹?/p>

在這種情況下,主設(shè)備和多個從設(shè)備組成一條傳輸線,所有的交換都是通過主設(shè)備進(jìn)行的,即使目的地是從設(shè)備。主要設(shè)備控制通信鏈路,而次要設(shè)備遵循主要設(shè)備的指令。主要設(shè)備確定允許哪個設(shè)備使用通信信道。因此,我們可以說它是會話的發(fā)起者。

如果主設(shè)備想要從輔助設(shè)備接收數(shù)據(jù),它會要求輔助設(shè)備發(fā)送任何數(shù)據(jù),這個過程稱為Pool。如果主設(shè)備想要向從設(shè)備發(fā)送一些數(shù)據(jù),那么它會告訴目標(biāo)從設(shè)備準(zhǔn)備接收數(shù)據(jù),這個過程稱為Select。

Select

當(dāng)主設(shè)備有要發(fā)送的內(nèi)容時使用Select模式。

當(dāng)主設(shè)備想要發(fā)送一些數(shù)據(jù)時,它通過發(fā)送選擇(SEL)幀向輔助設(shè)備警告即將到來的傳輸,幀的一個字段包括預(yù)期的輔助設(shè)備的地址。

當(dāng)輔助設(shè)備接收SEL幀時,它發(fā)送指示輔助就緒狀態(tài)的確認(rèn)。

如果輔助設(shè)備準(zhǔn)備好接受數(shù)據(jù),則主設(shè)備將兩個或更多個數(shù)據(jù)幀發(fā)送到預(yù)期的輔助設(shè)備。數(shù)據(jù)傳輸完成后,輔助設(shè)備會發(fā)送一個確認(rèn),指出已收到數(shù)據(jù)。

1686761908055ss2hyqiko4

Pool

當(dāng)主設(shè)備想要從輔助設(shè)備接收一些數(shù)據(jù)時,使用輪詢模式。

當(dāng)主設(shè)備想要接收數(shù)據(jù)時,它會詢問每個設(shè)備是否有任何要發(fā)送的內(nèi)容。

首先,主要詢問(輪詢)第一個輔助設(shè)備,如果它以NACK(否定確認(rèn))響應(yīng)則表示它沒有任何要發(fā)送的內(nèi)容?,F(xiàn)在,它接近第二個輔助設(shè)備,它用ACK響應(yīng)意味著它有要發(fā)送的數(shù)據(jù)。輔助設(shè)備可以一個接一個地發(fā)送一個以上的幀,或者有時可能需要在發(fā)送每個幀之前發(fā)送ACK,這取決于所使用的協(xié)議的類型。

1686761908810z44jmthorn

2.流量控制

它是一組程序,告訴發(fā)送方在數(shù)據(jù)壓倒接收方之前它可以傳輸多少數(shù)據(jù)。接收設(shè)備具有有限的速度和有限的存儲器來存儲數(shù)據(jù)。因此,接收設(shè)備必須能夠在達(dá)到限制之前通知發(fā)送設(shè)備暫時停止發(fā)送。它需要一個緩沖區(qū),一塊內(nèi)存,用于存儲信息,直到它們被處理完畢。

目前有兩種方法來控制數(shù)據(jù)流: 停止與等待、滑動窗口 。

(1) 停止與等待

在停止與等待方法中,發(fā)送方在它發(fā)送的每個幀之后等待確認(rèn)。

收到確認(rèn)后,只發(fā)送下一幀。交替發(fā)送和等待幀的過程繼續(xù),直到發(fā)送者發(fā)送EOT(發(fā)送結(jié)束)幀。

停止等待的好處

停止與等待方法很簡單,因為在發(fā)送下一幀之前檢查并確認(rèn)每個幀。

停止等待的缺點

停止等待技術(shù)使用效率低,因為每個幀必須一直傳輸?shù)浇邮掌?,并且確認(rèn)在下一幀發(fā)送之前一直傳播。發(fā)送和接收的每個幀使用遍歷鏈路所需的整個時間。

(2) 滑動窗口

滑動窗口是一種流控制方法,其中發(fā)送方可以在獲得確認(rèn)之前發(fā)送若干幀。在滑動窗口控制中,可以一個接一個地發(fā)送多個幀,由于可以有效地利用通信信道的容量。滑動窗口是指發(fā)送方和接收方端的虛擬框。窗口可以在任一端保持幀,并且它提供在確認(rèn)之前可以傳輸?shù)膸瑪?shù)的上限。

發(fā)件人窗口

在傳輸開始時,發(fā)送方窗口包含n-1幀,當(dāng)它們被發(fā)送出去時,左邊界向內(nèi)移動縮小窗口的大小。例如,如果窗口的大小為w,如果發(fā)送了三個幀,則發(fā)送方窗口中遺漏的幀數(shù)為w-3。

一旦ACK到達(dá),則發(fā)送方窗口擴展到將等于ACK確認(rèn)的幀數(shù)的數(shù)字。

例如,窗口的大小為7,如果已發(fā)送幀0到4并且沒有到達(dá)確認(rèn),則發(fā)送方窗口僅包含兩個幀,即5和6.現(xiàn)在,如果ACK已到達(dá),則數(shù)字4表示0到3幀未損壞,發(fā)送方窗口擴展到包括接下來的四個幀。因此,發(fā)送方窗口包含六個幀(5,6,7,0,1,2)。

1686761909763105zue35h6

接收窗口

在傳輸開始時,接收器窗口不包含n幀,但它包含n-1個幀空間。當(dāng)新幀到達(dá)時,窗口的大小會縮小。

接收器窗口不表示接收的幀數(shù),但它表示在發(fā)送ACK之前可以接收的幀數(shù)。例如,窗口的大小是w,如果接收到三個幀,則窗口中可用的空間數(shù)是(w-3)。

一旦發(fā)送確認(rèn),接收器窗口擴展的數(shù)量等于確認(rèn)的幀數(shù)。

假設(shè)窗口的大小為7意味著接收器窗口包含七個幀的七個空格。如果接收到一幀,則接收器窗口收縮并將邊界從0移動到1.這樣,窗口逐個縮小,因此窗口現(xiàn)在包含六個空格。如果已發(fā)送0到4的幀,則窗口在發(fā)送確認(rèn)之前包含兩個空格。

1686761910929nyj36e3nbc

3.錯誤控制

錯誤控制是一種錯誤檢測和重傳技術(shù)。錯誤控制的類型如下:

1686761911658k1zrbeblip

(1) 停止等待ARQ

停止等待ARQ是一種用于在幀損壞或丟失的情況下重新傳輸數(shù)據(jù)的技術(shù)。該技術(shù)的工作原理是發(fā)送方在收到最后發(fā)送幀的確認(rèn)之前不發(fā)送下一幀。

(2) 重傳

重傳需要四個功能:

  • 發(fā)送設(shè)備保留最后發(fā)送幀的副本,直到收到確認(rèn)。如果未正確接收幀,則保留副本允許發(fā)送方重新傳輸數(shù)據(jù)。
  • 數(shù)據(jù)幀和ACK幀都交替編號為0和1,以便可以單獨識別它們。假設(shè)數(shù)據(jù)1幀確認(rèn)數(shù)據(jù)0幀意味著數(shù)據(jù)0幀已正確到達(dá)并期望接收數(shù)據(jù)1幀。
  • 如果在最后發(fā)送的幀中發(fā)生錯誤,則接收器發(fā)送未編號的NAK幀。收到NAK幀后,發(fā)送方重新發(fā)送數(shù)據(jù)。
  • 它適用于計時器。如果在規(guī)定的時間內(nèi)沒有收到確認(rèn),則發(fā)送方認(rèn)為幀在傳輸過程中丟失,因此它將重新發(fā)送幀。

重傳的兩種可能性:

  • 損壞的幀 :當(dāng)接收器接收到損壞的幀時,即幀包含錯誤,然后它返回NAK幀。例如,當(dāng)發(fā)送數(shù)據(jù)0幀,然后接收器發(fā)送ACK 1幀意味著數(shù)據(jù)0已正確到達(dá),并發(fā)送數(shù)據(jù)1幀。發(fā)送方發(fā)送下一幀:數(shù)據(jù)1.它達(dá)到未損壞,接收方返回ACK 0.發(fā)送方發(fā)送下一幀:數(shù)據(jù)0.接收方報告錯誤并返回NAK幀。發(fā)送方重新傳輸數(shù)據(jù)0幀。
  • 丟失幀 :發(fā)送者配備定時器,并在幀發(fā)送時啟動。有時框架沒有到達(dá)接收端,因此無論是正面還是負(fù)面都不能確認(rèn)。發(fā)送器等待確認(rèn),直到定時器熄滅。如果定時器熄滅,它將重新發(fā)送最后一個發(fā)送的幀。

(3) 滑動窗ARQ

__滑動窗__ARQ是一種用于連續(xù)傳輸錯誤控制的技術(shù)。

用于重傳的三個功能:

  • 在這種情況下,發(fā)送方保留所有發(fā)送幀的副本,直到它們被確認(rèn)為止。假設(shè)已經(jīng)發(fā)送了從0到4的幀,并且最后一次確認(rèn)是針對第2幀,發(fā)送方必須保留第3幀和第4幀的副本,直到它們正確接收為止。
  • 接收器可以根據(jù)條件發(fā)送NAK或ACK。NAK幀告訴發(fā)件人數(shù)據(jù)已被收到損壞。由于滑動窗口是連續(xù)傳輸機制,因此必須對ACK和NAK進(jìn)行編號以識別幀。ACK幀由一個數(shù)字組成,表示接收方希望接收的下一幀。NAK幀由表示損壞幀的數(shù)字組成。
  • 滑動窗口ARQ配備有計時器以處理丟失的確認(rèn)。假設(shè)在收到任何確認(rèn)之前已經(jīng)發(fā)送了n-1幀。發(fā)送方等待確認(rèn),因此它啟動計時器并等待再發(fā)送之前。如果分配的時間用完,則發(fā)送方根據(jù)使用的協(xié)議重新發(fā)送一個或所有幀。

滑動窗口ARQ中使用的兩個協(xié)議:

Go-Back-n ARQ :在Go-Back-N ARQ協(xié)議中,如果一幀丟失或損壞,則它重新發(fā)送所有幀,之后它不接收肯定ACK。

選擇性拒絕ARQ :選擇性拒絕ARQ技術(shù)比Go-Back-n ARQ更有效。在該技術(shù)中,僅重傳那些已經(jīng)接收到否定確認(rèn)(NAK)的幀。接收器存儲緩沖區(qū)保持所有損壞的幀保持不變,直到正確接收到錯誤幀。接收器必須具有適當(dāng)?shù)倪壿嫞员阋哉_的順序重新插入幀。發(fā)送方必須包含一個搜索機制,該機制僅選擇所請求的重傳幀。

6 STM32 的 ETH 外設(shè)

前文講解了以太網(wǎng)的相關(guān)理論知識,接下來筆者將從實際出發(fā),介紹STM32XX7系列ETH外設(shè),從而將理論結(jié)合實際應(yīng)用。

如果從硬件角度來看以太網(wǎng),則由CPU,MAC,PHY三部分組成的,如下圖所示:

1686761912097vuuxb44b5l

上圖中DMA集成在CPU,CPU、MAC、PHY并不是集成在同一個芯片內(nèi),由于PHY包含大量模擬器件,而MAC是典型的數(shù)字電路,考慮到芯片面積及模擬/數(shù)字混合架構(gòu)的原因,將MAC集成進(jìn)CPU而將PHY留在片外,這種結(jié)構(gòu)是最常見的。 下圖是網(wǎng)絡(luò)接口內(nèi)部結(jié)構(gòu)圖,虛框表示CPU,MAC集成在CPU中,PHY芯片通過MII接口與CPU上的MAC連接。

STM32XX7系列控制器內(nèi)部集成了一個以太網(wǎng)外設(shè),它實際是一個通過 DMA 控制器進(jìn)行介質(zhì)訪問控制 (MAC),它的功能就是實現(xiàn) MAC 層的任務(wù)。

以太網(wǎng)提供了可配置、靈活的外設(shè),用以滿足客戶的各種應(yīng)用需求。它支持與外部物理層(PHY) 相連的兩個工業(yè)標(biāo)準(zhǔn)接口:默認(rèn)情況下使用的介質(zhì)獨立接口 (MII)(在 IEEE 802.3 規(guī)范中定義)和簡化介質(zhì)獨立接口 (RMII)。它有多種應(yīng)用領(lǐng)域,例如交換機、網(wǎng)絡(luò)接口卡等。Nucleo-F746ZG借助以太網(wǎng)外設(shè),STM32F746 控制器可以通過 ETH 外設(shè)按照 IEEE 802.3-2002 標(biāo)準(zhǔn)發(fā)送和接收 MAC 數(shù)據(jù)包。遵循IEEE 1588-2008 標(biāo)準(zhǔn),用于規(guī)定聯(lián)網(wǎng)時鐘同步的精度。

ETH 內(nèi)部自帶專用的 DMA 控制器用于 MAC, ETH 支持兩個工業(yè)標(biāo)準(zhǔn)接口介質(zhì)獨立接口 (MII)和簡化介質(zhì)獨立接口 (RMII) 用于與外部 PHY 芯片連接。 MII 和 RMII 接口用于 MAC 數(shù)據(jù)包傳輸, ETH 還集成了站管理接口 (SMI) 接口專門用于與外部 PHY 通信,用于訪問 PHY 芯片寄存器。

ETH 有專用的 DMA 控制器,它通過 AHB 主從接口與內(nèi)核和存儲器相連, AHB 主接口用于控制數(shù)據(jù)傳輸,而 AHB 從接口用于訪問“控制與狀態(tài)寄存器” (CSR) 空間。在進(jìn)行數(shù)據(jù)發(fā)送是,先將數(shù)據(jù)有存儲器以 DMA 傳輸?shù)桨l(fā)送 TX FIFO 進(jìn)行緩沖,然后由 MAC 內(nèi)核發(fā)送;接收數(shù)據(jù)時, RXFIFO 先接收以太網(wǎng)數(shù)據(jù)幀,再由 DMA 傳輸至存儲器。 ETH 系統(tǒng)功能框圖見下圖。

1686761912885xdn2pmedox

【注】當(dāng)使用以太網(wǎng)時, AHB 時鐘頻率必須至少為 25 MHz。

6.1 站管理接口:SMI

站管理接口 (SMI) 允許應(yīng)用程序通過 2 線時鐘和數(shù)據(jù)線訪問任意 PHY 寄存器。該接口支持訪問多達(dá) 32 個 PHY。

應(yīng)用程序可以從 32 個 PHY 中選擇一個 PHY,然后從任意 PHY 包含的 32 個寄存器中選擇一個寄存器,發(fā)送控制數(shù)據(jù)或接收狀態(tài)信息。任意給定時間內(nèi)只能對一個 PHY 中的一個寄存器進(jìn)行尋址。

MDC 時鐘線和 MDIO 數(shù)據(jù)線在微控制器中均用作復(fù)用功能 I/O:

  • MDC :周期性時鐘,提供以最大頻率 2.5 MHz 傳輸數(shù)據(jù)時的參考時序。 MDC 的最短高電平時間和最短低電平時間必須均為 160 ns。 MDC 的最小周期必須為 400 ns。在空閑狀態(tài)下, SMI 管理接口將 MDC 時鐘信號驅(qū)動為低電平。
  • MDIO :數(shù)據(jù)輸入/輸出比特流,用于通過 MDC 時鐘信號向/從 PHY 設(shè)備同步傳輸狀態(tài)信息。

1686761913791kxbo2whh8h

SMI 幀格式

下表中給出了與讀操作或?qū)懖僮饔嘘P(guān)的幀結(jié)構(gòu),位傳輸順序必須從左到右。

管理幀字段
報頭(32位)
讀取 1... 1
寫入 1... 1

管理幀包括八個字段:

  • 報頭:每個事務(wù)(讀取或?qū)懭耄┚赏ㄟ^報頭字段啟動,報頭字段對應(yīng)于 MDIO 線上 32個連續(xù)的邏輯“1”位以及 MDC 上的 32 個周期。該字段用于與 PHY 設(shè)備建立同步。
  • 起始:幀起始由 <01> 模式定義,用于驗證線路從默認(rèn)邏輯“ 1”狀態(tài)變?yōu)檫壿嫛?0”狀態(tài),然后再從邏輯“0”狀態(tài)變?yōu)檫壿嫛?”狀態(tài)。
  • 操作:定義正在發(fā)生的事務(wù)(讀取或?qū)懭耄┑念愋汀?/li>
  • PADDR: PHY 地址有 5 位,可構(gòu)成 32 個唯一 PHY 地址。最先發(fā)送和接收地址的MSB 位。
  • PADDR:寄存器地址有 5 位,從而可在所選 PHY 設(shè)備中對 32 個不同的寄存器進(jìn)行尋址。最先發(fā)送和接收地址的 MSB 位。
  • TA:周轉(zhuǎn)字段在 RADDR 和 DATA 字段間定義了一個 2 位模式,以避免在讀取事務(wù)期間出現(xiàn)競爭現(xiàn)象。讀取事務(wù)時, MAC 控制器將 TA 的 2 個位驅(qū)動為 MDIO 線上的高阻態(tài)。 PHY 設(shè)備必須將 TA 的第一位驅(qū)動為高阻態(tài),將 TA 的第二位驅(qū)動為“0”。寫入事務(wù)時, MAC 控制器針對 TA 字段驅(qū)動 <10> 模式。 PHY 設(shè)備必須將 TA 的 2 個位驅(qū)動為高阻態(tài)。
  • 數(shù)據(jù):數(shù)據(jù)字段為 16 位。最先發(fā)送和接收的位必須為 ETH_MIID 寄存器的位 15。
  • 空閑: MDIO 線驅(qū)動為高阻態(tài)。三態(tài)驅(qū)動器必須禁止, PHY 的上拉電阻使線路保持邏輯“1”狀態(tài)。

SMI 寫操作

當(dāng)應(yīng)用程序?qū)?MII 寫入位和繁忙位(在以太網(wǎng) MAC MII 地址寄存器 (ETH_MACMIIAR) 中)置 1 時, SMI 將通過傳輸 PHY 地址、 PHY 中的寄存器地址以及寫入數(shù)據(jù)(在以太網(wǎng) MACMII 數(shù)據(jù)寄存器 (ETH_MACMIIDR) 中)來觸發(fā)對 PHY 寄存器進(jìn)行寫操作。事務(wù)進(jìn)行期間,應(yīng)用程序不應(yīng)更改 MII 地址寄存器的內(nèi)容或 MII 數(shù)據(jù)寄存器。在此期間對 MII 地址寄存器或MII 數(shù)據(jù)寄存器執(zhí)行的寫操作將會忽略(繁忙位處于高電平狀態(tài)),事務(wù)將無錯完成。寫操作完成后, SMI 將通過復(fù)位繁忙位進(jìn)行指示。

下圖顯示了寫操作的幀格式。

16867619145725twk07xa5w

SMI 時鐘選擇

MAC 啟動管理寫/讀操作。 SMI 時鐘是一個分頻時鐘,其時鐘源為應(yīng)用時鐘( AHB 時鐘)。分頻系數(shù)取決于 MII 地址寄存器中設(shè)置的時鐘范圍。下表顯示了如何設(shè)置時鐘范圍。

選擇 HCLK時鐘 MDC時鐘
000 60-100MHz AHB時鐘/42
001 100-150MHz AHB時鐘/62
010 20-35MHz AHB時鐘/16
011 35-60MHz AHB時鐘/26
100 150-216MHz AHB時鐘/102
101, 110,111 保留 -

6.2介質(zhì)獨立接口: MII

介質(zhì)獨立接口 (MII) 定義了 10 Mb/s 和 100 Mb/s 的數(shù)據(jù)傳輸速率下 MAC 子層與 PHY 之間的互連。

1686761915656fo395o793b

  • MII_TX_CLK:連續(xù)時鐘信號。該信號提供進(jìn)行 TX 數(shù)據(jù)傳輸時的參考時序。標(biāo)稱頻率為:速率為 10 Mb/s 時為 2.5 MHz;速率為 100 Mb/s 時為 25 MHz。
  • MII_RX_CLK:連續(xù)時鐘信號。該信號提供進(jìn)行 RX 數(shù)據(jù)傳輸時的參考時序。標(biāo)稱頻率為:速率為 10 Mb/s 時為 2.5 MHz;速率為 100 Mb/s 時為 25 MHz。
  • MII_TX_EN:發(fā)送使能信號。該信號表示 MAC 當(dāng)前正針對 MII 發(fā)送半字節(jié)。該信號必須與報頭的前半字節(jié)進(jìn)行同步 (MII_TX_CLK),并在所有待發(fā)送的半字節(jié)均發(fā)送到 MII時必須保持同步。
  • MII_TXD[3:0]:數(shù)據(jù)發(fā)送信號。該信號是 4 個一組的數(shù)據(jù)信號,由 MAC 子層同步驅(qū)動,在MII_TX_EN 信號有效時才為有效信號(有效數(shù)據(jù))。 MII_TXD[0] 為最低有效位,MII_TXD[3] 為最高有效位。禁止 MII_TX_EN 時,發(fā)送數(shù)據(jù)不會對 PHY 產(chǎn)生任何影響。
  • MII_CRS:載波偵聽信號。當(dāng)發(fā)送或接收介質(zhì)處于非空閑狀態(tài)時,由 PHY 使能該信號。發(fā)送和接收介質(zhì)均處于空閑狀態(tài)時,由 PHY 禁止該信號。 PHY 必須確保 MII_CS 信號在沖突條件下保持有效狀態(tài)。該信號無需與 TX 和 RX 時鐘保持同步。在全雙工模式下,該信號沒意義。
  • MII_COL:沖突檢測信號。檢測到介質(zhì)上存在沖突后, PHY 必須立即使能沖突檢測信號,并且只要存在沖突條件,沖突檢測信號必須保持有效狀態(tài)。該信號無需與 TX 和 RX 時鐘保持同步。在全雙工模式下,該信號沒意義。
  • MII_RXD[3:0]:數(shù)據(jù)接收信號。該信號是 4 個一組的數(shù)據(jù)信號,由 PHY 同步驅(qū)動,在MII_RX_DV 信號有效時才為有效信號(有效數(shù)據(jù))。 MII_RXD[0] 為最低有效位,MII_RXD[3] 為最高有效位。當(dāng) MII_RX_EN 禁止、 MII_RX_ER 使能時,特定的MII_RXD[3:0] 值用于傳輸來自 PHY 的特定信息。
  • MII_RX_DV:接收數(shù)據(jù)有效信號。該信號表示 PHY 當(dāng)前正針對 MII 接收已恢復(fù)并解碼的半字節(jié)。該信號必須與恢復(fù)幀的頭半字節(jié)進(jìn)行同步 (MII_RX_CLK),并且一直保持同步到恢復(fù)幀的最后半字節(jié)。該信號必須在最后半字節(jié)隨后的第一個時鐘周期之前禁止。為了正確地接收幀, MII_RX_DV 信號必須在時間范圍上涵蓋要接收的幀,其開始時間不得遲于 SFD 字段出現(xiàn)的時間。
  • MII_RX_ER:接收錯誤信號。該信號必須保持一個或多個周期 (MII_RX_CLK),從而向MAC 子層指示在幀的某處檢測到錯誤。該錯誤條件必須通過 MII_RX_DV 驗證。

TX 接口信號編碼

MII_TX_EN MII_TXD[3:0] 說明
0 0000到1111 正常幀間
1 0000到1111 正常數(shù)據(jù)發(fā)送

RX 接口信號編碼

MII_RX_DV MII_RX_ERR MII_RXD[3:0] 說明
0 0 0000到1111 正常幀間
0 1 0000 正常幀間
0 1 0001到1101 保留
0 1 1110 錯誤載波檢測
0 1 1111 保留
1 0 0000到1111 正常數(shù)據(jù)接收
1 1 0000到1111 數(shù)據(jù)接收出現(xiàn)錯誤

MII 時鐘源

要生成 TX_CLK 和 RX_CLK 時鐘信號,必須向外部 PHY 提供 25MHz 時鐘,如圖 474 所示。除了使用外部 25 MHz 石英晶體提供該時鐘,還可以通過 STM32F75xxx 和 STM32F74xxx 微控制器的 MCO 引腳輸出該信號。這種情況下,必須對 PLL 倍頻進(jìn)行配置,以通過 25 MHz外部石英晶體在 MCO 引腳上獲得所需頻率。

1686761916551aen2oy8j13

6.3 精簡介質(zhì)獨立接口:RMII

精簡介質(zhì)獨立接口 (RMII) 規(guī)范降低了 10/100 Mb/s 下微控制器以太網(wǎng)外設(shè)與外部 PHY 間的引腳數(shù)。根據(jù) IEEE 802.3u 標(biāo)準(zhǔn), MII 包括 16 個數(shù)據(jù)和控制信號的引腳。 RMII 規(guī)范將引腳數(shù)減少為 7 個(引腳數(shù)減少 62.5%)。

RMII 是 MAC 和 PHY 之間的實例化對象。這有助于將 MAC 的 MII 轉(zhuǎn)換為 RMII。 RMII 具有以下特性:

  • 支持 10 Mb/s 和 100 Mb/s 的運行速率
  • 參考時鐘必須是 50 MHz
  • 相同的參考時鐘必須從外部提供給 MAC 和外部以太網(wǎng) PHY
  • 它提供了獨立的 2 位寬(雙位)的發(fā)送和接收數(shù)據(jù)路徑

1686761917134prp7evh3v8

RMII 時鐘源

使用外部 50 MHz 時鐘驅(qū)動 PHY 或使用嵌入式 PLL 生成 50 MHz 頻率信號來驅(qū)動 PHY。

1686761917792rh3iqb9u2k

如果使用RMII接口時,50MHz時鐘來源有以下幾種方式:

方式一:外部時鐘

一個50MHz的外部晶振同時給MAC和PHY供應(yīng)50MHz時鐘,MCU其他的部分用自己獨立的時鐘。這個方式需要外掛一顆晶振。

C:\\Users\\BruceOu\\Desktop\\1.png

方式二:與MCU共用外部時鐘

MAC, PHY, MCU都用一顆50MHz外部晶振統(tǒng)一提供時鐘源。

1686761919559950n8doxak

方式三:STM32輸出時鐘源

把50MHz換成25MHz,通過STM32的MCO引腳可以輸出同樣的25MHz時鐘給PHY,然后用PHY內(nèi)部的PLL配置出50MHz時鐘反補給STM32的MAC,這樣就滿足了PHY和MAC都是50MHz。

C:\\Users\\BruceOu\\Desktop\\1111.png

值得注意的是,以上設(shè)計針對STM32XX7系列。

最后,來看看一個實際硬件案例。

下圖是Nucleo-F746ZG開發(fā)板的ETH硬件電路圖。主要是 LAN8742A 通過 RMII 和 SMI接口與 STM32F746 控制器連接,見下圖。

1686761921616nj9qsgvbi3

STM32F746通過RMII 接口連接PHY芯片LAN8742, 然后經(jīng)過百兆網(wǎng)絡(luò)變壓器到RJ45接口。因為 LAN8742A只有 RMII 接口,因此這里與開發(fā)板的連接采用了 RMII 接口。電路設(shè)計時,將 nINTSEL 引腳通過下拉電阻拉低,也就是REF_CLK Out 模式,設(shè)置 nINT/FEFCLKO 為輸出 50MHz 時鐘,當(dāng)然前提是在 XTAL1 和 XTAL2 接入了 25MHz 的時鐘源。

PHY芯片LAN8742的nRST復(fù)位引腳連接到了STM32F746的復(fù)位引腳, 兩者可以同時使用復(fù)位按鈕。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5288

    瀏覽量

    169676
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7174

    瀏覽量

    87159
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7389

    瀏覽量

    88216
  • 交換技術(shù)
    +關(guān)注

    關(guān)注

    1

    文章

    23

    瀏覽量

    8459
收藏 人收藏

    評論

    相關(guān)推薦

    一文詳解以太網(wǎng)MAC芯片與PHY芯片

    MII即媒體獨立接口,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)."媒體獨立"表明在不對MAC硬件重新設(shè)計或替換的情況下,任何類型的PHY設(shè)備都可以正常工作.它包括一個數(shù)據(jù)接口,以及一個MAC和PHY之間的管理接口.
    發(fā)表于 02-19 10:47 ?3380次閱讀
    一文<b class='flag-5'>詳解</b><b class='flag-5'>以太網(wǎng)</b>MAC芯片與PHY芯片

    一文詳解基于以太網(wǎng)的GPU Scale-UP網(wǎng)絡(luò)

    最近Intel Gaudi-3的發(fā)布,基于RoCE的Scale-UP互聯(lián),再加上Jim Keller也在談用以太網(wǎng)替代NVLink。
    的頭像 發(fā)表于 04-22 17:22 ?2745次閱讀
    一文<b class='flag-5'>詳解</b>基于<b class='flag-5'>以太網(wǎng)</b>的GPU Scale-UP網(wǎng)絡(luò)

    EtherCAT實時以太網(wǎng)分析儀功能詳解#以太網(wǎng)

    以太網(wǎng)ethercat
    ZLG致遠(yuǎn)電子
    發(fā)布于 :2022年12月12日 10:04:00

    以太網(wǎng)是什么鬼?以太網(wǎng)基礎(chǔ)知識詳解

    以太網(wǎng)
    電子學(xué)習(xí)
    發(fā)布于 :2023年02月07日 21:05:57

    車載以太網(wǎng)快速入門#車載以太網(wǎng)

    車載以太網(wǎng)
    北匯信息POLELINK
    發(fā)布于 :2023年09月01日 17:54:31

    車載以太網(wǎng)基礎(chǔ)培訓(xùn)——車載以太網(wǎng)的鏈路層#車載以太網(wǎng)

    車載以太網(wǎng)
    北匯信息POLELINK
    發(fā)布于 :2023年09月19日 16:25:21

    以太網(wǎng)接口在印制電路板上的實現(xiàn)

    電路,相信各位硬件工程師們都想知道該硬件電路如何在PCB上實現(xiàn)。  下圖 1以太網(wǎng)的典型應(yīng)用。我們的PCB設(shè)計基本是按照這個框圖來布局布線,下面我們就以這個框圖詳解以太網(wǎng)有關(guān)的布局布線要點。  圖 1
    發(fā)表于 09-19 16:24

    詳解工業(yè)以太網(wǎng)

    第一部工業(yè)以太網(wǎng)解決方案的優(yōu)勢和作用目前,世界各地的制造工廠都依賴以太網(wǎng)解決方案來滿足工業(yè)應(yīng)用對實時性能和耐用性的要求。與傳統(tǒng)現(xiàn)場總線相比,以太網(wǎng)能提供更快的速率,能更好地處理大批量數(shù)據(jù),最終還能
    發(fā)表于 07-18 07:40

    以太網(wǎng)與工業(yè)以太網(wǎng)的區(qū)別

    以太網(wǎng)相較工業(yè)以太網(wǎng)有以下四大缺陷,要使以太網(wǎng)符合工藝上的要求,還必須克服這4大缺陷
    發(fā)表于 12-12 15:16 ?3741次閱讀

    一文詳解什么是實時以太網(wǎng)

    工業(yè)以太網(wǎng)——實時以太網(wǎng)——在過去幾年中經(jīng)歷了巨大的增長。雖然經(jīng)典的現(xiàn)場總線仍大量存在,但它們已經(jīng)過了巔峰期。流行的實時以太網(wǎng)協(xié)議擴展了以太網(wǎng)標(biāo)準(zhǔn),可以滿足實時功能的要求?,F(xiàn)在,TSN
    發(fā)表于 08-04 09:49 ?1.3w次閱讀
    一文<b class='flag-5'>詳解</b>什么是實時<b class='flag-5'>以太網(wǎng)</b>

    以太網(wǎng)是什么_以太網(wǎng)怎么連接寬帶

    本文首先介紹了以太網(wǎng)的概念,其次介紹了以太網(wǎng)連接寬帶的方法,最后闡述了以太網(wǎng)與寬帶區(qū)別。
    發(fā)表于 03-20 10:02 ?8.5w次閱讀
    <b class='flag-5'>以太網(wǎng)</b>是什么_<b class='flag-5'>以太網(wǎng)</b>怎么連接寬帶

    以太網(wǎng)的傳播速率_以太網(wǎng)的傳輸介質(zhì)

    本文首先介紹了以太網(wǎng)的傳播速率,其次介紹了千兆以太網(wǎng)的傳輸速度,最后介紹了以太網(wǎng)的傳輸介質(zhì)。
    發(fā)表于 03-20 10:12 ?6985次閱讀

    工業(yè)以太網(wǎng)和普通以太網(wǎng)區(qū)別

    工業(yè)以太網(wǎng)和普通以太網(wǎng)的主要區(qū)別在哪?
    的頭像 發(fā)表于 07-29 14:24 ?1.2w次閱讀

    如何快速分辨以太網(wǎng)與千兆以太網(wǎng)

    本文解釋并比較了兩種類型的以太網(wǎng):快速以太網(wǎng)與千兆以太網(wǎng)??焖?b class='flag-5'>以太網(wǎng)和千兆以太網(wǎng)之間的最大區(qū)別在于速度。
    的頭像 發(fā)表于 05-06 16:35 ?4182次閱讀
    如何快速分辨<b class='flag-5'>以太網(wǎng)</b>與千兆<b class='flag-5'>以太網(wǎng)</b>

    詳解以太網(wǎng)診斷DoIP

    所謂的DoIP其實就是基于以太網(wǎng)的通訊協(xié)議對UDS協(xié)議的數(shù)據(jù)進(jìn)行傳輸,即Diagnostic communication over Internet Protocol。其本身也是一種協(xié)議,規(guī)范于
    的頭像 發(fā)表于 11-11 15:02 ?2756次閱讀