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

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

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

詳解以太網(wǎng)

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

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

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

以太網(wǎng)技術(shù)起源于施樂帕洛阿爾托研究中心的先鋒技術(shù)項(xiàng)目。人們通常認(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ū)域計(jì)算機(jī)網(wǎng)絡(luò)的分布式數(shù)據(jù)包交換技術(shù)》的文章。

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

1985 年,美國(guó)電氣電子工程師協(xié)會(huì) (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)都可以用于同一個(gè)局域網(wǎng)。

如今,以太網(wǎng)采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection,載波監(jiān)聽多路存取和沖突檢測(cè))介質(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年正式成為國(guó)際標(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)是一種計(jì)算機(jī)__局域網(wǎng)__技術(shù)。IEEE組織的IEEE 802.3標(biāo)準(zhǔn)制定了以太網(wǎng)的技術(shù)標(biāo)準(zhǔn),它規(guī)定了包括物理層的連線、電子信號(hào)和介質(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))為了減少?zèng)_突,將能提高的網(wǎng)絡(luò)速度和使用效率最大化,使用交換機(jī)(Switch hub)來(lái)進(jìn)行網(wǎng)絡(luò)連接和組織。如此一來(lái),以太網(wǎng)的拓?fù)浣Y(jié)構(gòu)就成了星型;但在邏輯上,以太網(wǎng)仍然使用總線型拓?fù)浜虲SMA/CD(Carrier Sense Multiple Access/Collision Detection,即載波多重訪問/碰撞偵測(cè))的總線技術(shù)。

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

__互聯(lián)網(wǎng)__即INTERNET,它是一個(gè)全球性互聯(lián)網(wǎng)絡(luò)。它是由從地方到全球范圍內(nèi)幾百萬(wàn)個(gè)私人的,政府的,學(xué)術(shù)界的,企業(yè)的和政府的網(wǎng)絡(luò)所構(gòu)成,通過電子,無(wú)線和光纖網(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)聽多路訪問及沖突檢測(cè))并以10M/s的速率(或100M/s 、1000M/s等速率)運(yùn)行在多種類型的電纜上。它規(guī)定了包括物理層的連線、電子信號(hào)和介質(zhì)訪問層協(xié)議的內(nèi)容。簡(jiǎn)單來(lái)說(shuō),以太網(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)線來(lái)連接 (當(dāng)然還有其它形式)。 IEEE 還有其它局域網(wǎng)標(biāo)準(zhǔn),如 IEEE 802.11 是無(wú)線局域網(wǎng),俗稱 Wi-Fi。 IEEE802.15 是個(gè)人域網(wǎng),即藍(lán)牙技術(shù),其中的 802.15.4 標(biāo)準(zhǔn)則是 ZigBee 技術(shù)。

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

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

16867618130059m3lbzna57

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

1686761814289eqx1qiz2e6

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

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

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

1686761815938pto4or7u38

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

SFD :“起始幀定界符”標(biāo)記前導(dǎo)碼的結(jié)尾,并告訴接收器接下來(lái)的字段將是實(shí)際的以太網(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ù)膶?shí)際數(shù)據(jù),例如 IPv4 數(shù)據(jù)包。

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

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

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

1686761816231q10hf7mctk

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

當(dāng)設(shè)備的網(wǎng)卡接收到某個(gè)數(shù)據(jù)包后,它會(huì)將其放置在網(wǎng)卡的接收緩存中,并告知 TCP/IP 內(nèi)核。然后 TCP/IP 內(nèi)核就開始工作了,它會(huì)將數(shù)據(jù)包從接收緩存中取出,并逐層解析數(shù)據(jù)包中的協(xié)議首部信息,并最終將數(shù)據(jù)交給某個(gè)應(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ù)長(zhǎng)度是1500字節(jié),而IEEE802.3可以裝載的最大數(shù)據(jù)是1492字節(jié)(SNAP)或是1497字節(jié); Ethernet V2不提供MAC層的數(shù)據(jù)填充功能,而IEEE802.3不僅提供該功能,還具備服務(wù)訪問點(diǎn)(SAP)和SNAP層,能夠提供更有效的數(shù)據(jù)鏈路層控制和更好的傳輸保證。那么我們可以得出這樣的結(jié)論:Ethernet V2比IEEE802.3更適合于傳輸大量的數(shù)據(jù),但EthernetV2缺乏數(shù)據(jù)鏈路層的控制,不利于傳輸需要嚴(yán)格傳輸控制的數(shù)據(jù),這也正是IEEE802.3的優(yōu)勢(shì)所在,越需要嚴(yán)格傳輸控制的應(yīng)用,越需要用IEEE802.3或SNAP來(lái)封裝,但I(xiàn)EEE802.3也不可避免的帶來(lái)數(shù)據(jù)裝載量的損失,因此該格式的封裝往往用在較少數(shù)據(jù)量承載但又需要嚴(yán)格控制傳輸?shù)膽?yīng)用中。

在實(shí)際應(yīng)用中,我們會(huì)發(fā)現(xiàn),大多數(shù)應(yīng)用的以太網(wǎng)數(shù)據(jù)包是EthernetV2的幀(如HTTP、FTP、SMTP、POP3等應(yīng)用),而交換機(jī)之間的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ù)編碼方式和沖突檢測(cè)機(jī)制,物理層一般是通過一個(gè) PHY 芯片實(shí)現(xiàn)其功能的。

4.1 傳輸介質(zhì)

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

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

1.同軸電纜

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

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

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

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

1686761821630en29up3fvo

盡管由于早期的大量布設(shè),到現(xiàn)在還有一些系統(tǒng)在使用,這一標(biāo)準(zhǔn)實(shí)際上被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同軸電纜,最長(zhǎng)轉(zhuǎn)輸距離約200米(實(shí)際為185米),僅能連接30臺(tái)計(jì)算機(jī),計(jì)算機(jī)使用T型適配器連接到帶有BNC連接器的網(wǎng)卡,而__線路兩頭需要50歐姆的終結(jié)器__。

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

1686761837223mkqkf2d54x

利用基帶的10M傳輸速率,采用曼徹斯特編碼傳輸數(shù)據(jù)。雖然在能力、規(guī)格上不及10BASE5,但是因?yàn)槠渚€材較細(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月以來(lái),該標(biāo)準(zhǔn)不再考慮維護(hù)變更。

2.雙絞線

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

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

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

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

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

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

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

1686761849089z9t543ejn7

10base-T因?yàn)閮r(jià)格便宜、配置靈活和易于管理而流行起來(lái),現(xiàn)在占整個(gè)以太網(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”是指基帶信令; 破折號(hào)后面的字母(“T”或“F”)是指承載信號(hào)的物理介質(zhì)(分別為雙絞線或光纖);而最后一個(gè)字符(“X”,“4”等)指的是使用的行代碼方法。 快速以太網(wǎng)有時(shí)被稱為100BASE-X,其中“X”是FX和TX變體的占位符。

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

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

1686761852581elqct4fynk

Architectural positioning of 100BASE-T

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

前面兩種標(biāo)準(zhǔn)有兩根線對(duì),一根用于傳輸,另一根用于接收。然而,1000BASE-T使用所有 4 對(duì)線。它不是使用不同的線對(duì)進(jìn)行傳輸/接收,而是能夠在每個(gè)線對(duì)上同時(shí)發(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.光纖

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

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

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

1686761860645jv4236c2no

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

1686761871680m0bmbr9r3d

Relationship of 1000BASE-X and the PMDs

4.2編碼

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

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

1686761879315fdamjhdgtx

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

4.3 CSMA/CD沖突檢測(cè)

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

1686761879792194hwemtoj

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

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

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

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

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

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

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

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

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

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

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

CSMA/CD 的整個(gè)方案如下圖所示:

CSMA/CD

CSMA/CD的幀格式

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

IEEE 802.3 CSMA/CD 幀的幀格式

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

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

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

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

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

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

7.幀校驗(yàn)序列(FCS) :這對(duì)于字節(jié)字段包含用于錯(cuò)誤檢測(cè)的 CRC。

CSMA/CD流程

CSMA/CD 程序

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

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

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

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

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

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

4.4 PHY 層芯片:LAN8742A

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

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

LAN8742A的主要特點(diǎn)如下:

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

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

1686761884327tuef0dozh6

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

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

1686761884859ha46asxzj8

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

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

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

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

1686761886691l2k3ayzi9m

當(dāng) nINTSEL 引腳為高電平時(shí),也就是REF_CLK In 模式,nINT/REFCLKO 作為中斷引腳。LAN8742A被設(shè)置為時(shí)鐘輸入,即外部時(shí)鐘源直接提供 50MHz 時(shí)鐘接入 STM32F46的REF_CLK 引腳和 LAN8742A的 XTAL1/CLKIN 引腳,此時(shí) 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 引腳為低電平時(shí)選擇內(nèi)部 +1.2V 穩(wěn)壓器。 REGOFF 與 LED1 引腳共用。

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

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

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

1686761894647ojhlipzcjl

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

可靠的交付 :數(shù)據(jù)鏈路層提供可靠的交付服務(wù),即無(wú)錯(cuò)誤地傳輸網(wǎng)絡(luò)層數(shù)據(jù)報(bào)。通過傳輸和確認(rèn)完成可靠的傳送服務(wù)。數(shù)據(jù)鏈路層主要通過鏈路提供可靠的傳送服務(wù),因?yàn)樗鼈兙哂休^高的錯(cuò)誤率并且可以在本地校正,發(fā)生錯(cuò)誤的鏈路而不是強(qiáng)制重新傳輸數(shù)據(jù)。

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

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

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

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

5.1錯(cuò)誤檢測(cè)

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

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

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

1.單比特錯(cuò)誤

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

1686761897780ig8n5i0ou3

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

2.突發(fā)錯(cuò)誤

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

1686761898166v5d9q15tqb

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

5.2 糾錯(cuò)

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

1.單一奇偶校驗(yàn)

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

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

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

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

1686761899168zc5ad9ep4f

單奇偶校驗(yàn)的缺點(diǎn)有兩點(diǎn):第一,它只能檢測(cè)非常罕見的單位錯(cuò)誤;第二,如果兩個(gè)位互換,則它無(wú)法檢測(cè)到錯(cuò)誤。

1686761899864lam9c3pybu

2.二維奇偶校驗(yàn)

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

在二維奇偶校驗(yàn)中,將一個(gè)位塊分成行,并將冗余位行添加到整個(gè)塊中。

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

1686761900229gt1w7pkkdt

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

3.校驗(yàn)

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

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

1686761900997di7gdcj5xv

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

接收方遵循以下步驟:

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

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

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

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

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

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

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

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

16867619056540pgosktzz8

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

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

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

  • 線路控制
  • 流量控制
  • 錯(cuò)誤控制

1686761906566hv3huhmuy5

1.線路控制

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

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

(1) END / ACK

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

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

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

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

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

168676190731030j4jik8mu

(2) Pool/Select

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

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

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

Select

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

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

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

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

1686761908055ss2hyqiko4

Pool

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

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

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

1686761908810z44jmthorn

2.流量控制

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

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

(1) 停止與等待

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

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

停止等待的好處

停止與等待方法很簡(jiǎn)單,因?yàn)樵诎l(fā)送下一幀之前檢查并確認(rèn)每個(gè)幀。

停止等待的缺點(diǎn)

停止等待技術(shù)使用效率低,因?yàn)槊總€(gè)幀必須一直傳輸?shù)浇邮掌鳎⑶掖_認(rèn)在下一幀發(fā)送之前一直傳播。發(fā)送和接收的每個(gè)幀使用遍歷鏈路所需的整個(gè)時(shí)間。

(2) 滑動(dòng)窗口

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

發(fā)件人窗口

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

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

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

1686761909763105zue35h6

接收窗口

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

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

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

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

1686761910929nyj36e3nbc

3.錯(cuò)誤控制

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

1686761911658k1zrbeblip

(1) 停止等待ARQ

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

(2) 重傳

重傳需要四個(gè)功能:

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

重傳的兩種可能性:

  • 損壞的幀 :當(dāng)接收器接收到損壞的幀時(shí),即幀包含錯(cuò)誤,然后它返回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.接收方報(bào)告錯(cuò)誤并返回NAK幀。發(fā)送方重新傳輸數(shù)據(jù)0幀。
  • 丟失幀 :發(fā)送者配備定時(shí)器,并在幀發(fā)送時(shí)啟動(dòng)。有時(shí)框架沒有到達(dá)接收端,因此無(wú)論是正面還是負(fù)面都不能確認(rèn)。發(fā)送器等待確認(rèn),直到定時(shí)器熄滅。如果定時(shí)器熄滅,它將重新發(fā)送最后一個(gè)發(fā)送的幀。

(3) 滑動(dòng)窗ARQ

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

用于重傳的三個(gè)功能:

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

滑動(dòng)窗口ARQ中使用的兩個(gè)協(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)的幀。接收器存儲(chǔ)緩沖區(qū)保持所有損壞的幀保持不變,直到正確接收到錯(cuò)誤幀。接收器必須具有適當(dāng)?shù)倪壿嫞员阋哉_的順序重新插入幀。發(fā)送方必須包含一個(gè)搜索機(jī)制,該機(jī)制僅選擇所請(qǐng)求的重傳幀。

6 STM32 的 ETH 外設(shè)

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

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

1686761912097vuuxb44b5l

上圖中DMA集成在CPU,CPU、MAC、PHY并不是集成在同一個(gè)芯片內(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)部集成了一個(gè)以太網(wǎng)外設(shè),它實(shí)際是一個(gè)通過 DMA 控制器進(jìn)行介質(zhì)訪問控制 (MAC),它的功能就是實(shí)現(xiàn) MAC 層的任務(wù)。

以太網(wǎng)提供了可配置、靈活的外設(shè),用以滿足客戶的各種應(yīng)用需求。它支持與外部物理層(PHY) 相連的兩個(gè)工業(yè)標(biāo)準(zhǔn)接口:默認(rèn)情況下使用的介質(zhì)獨(dú)立接口 (MII)(在 IEEE 802.3 規(guī)范中定義)和簡(jiǎn)化介質(zhì)獨(dú)立接口 (RMII)。它有多種應(yīng)用領(lǐng)域,例如交換機(jī)、網(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)時(shí)鐘同步的精度。

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

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

1686761912885xdn2pmedox

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

6.1 站管理接口:SMI

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

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

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

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

1686761913791kxbo2whh8h

SMI 幀格式

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

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

管理幀包括八個(gè)字段:

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

SMI 寫操作

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

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

16867619145725twk07xa5w

SMI 時(shí)鐘選擇

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

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

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

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

1686761915656fo395o793b

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

TX 接口信號(hào)編碼

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

RX 接口信號(hào)編碼

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

MII 時(shí)鐘源

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

1686761916551aen2oy8j13

6.3 精簡(jiǎn)介質(zhì)獨(dú)立接口:RMII

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

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

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

1686761917134prp7evh3v8

RMII 時(shí)鐘源

使用外部 50 MHz 時(shí)鐘驅(qū)動(dòng) PHY 或使用嵌入式 PLL 生成 50 MHz 頻率信號(hào)來(lái)驅(qū)動(dòng) PHY。

1686761917792rh3iqb9u2k

如果使用RMII接口時(shí),50MHz時(shí)鐘來(lái)源有以下幾種方式:

方式一:外部時(shí)鐘

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

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

方式二:與MCU共用外部時(shí)鐘

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

1686761919559950n8doxak

方式三:STM32輸出時(shí)鐘源

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

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

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

最后,來(lái)看看一個(gè)實(shí)際硬件案例。

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

1686761921616nj9qsgvbi3

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

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

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

    關(guān)注

    40

    文章

    5322

    瀏覽量

    170514
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7297

    瀏覽量

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

    關(guān)注

    14

    文章

    7446

    瀏覽量

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

    關(guān)注

    1

    文章

    23

    瀏覽量

    8471
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    MII即媒體獨(dú)立接口,它是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)."媒體獨(dú)立"表明在不對(duì)MAC硬件重新設(shè)計(jì)或替換的情況下,任何類型的PHY設(shè)備都可以正常工作.它包括一個(gè)數(shù)據(jù)接口,以及一個(gè)MAC和PHY之間的管理接口.
    發(fā)表于 02-19 10:47 ?3639次閱讀
    一文<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也在談?dòng)?b class='flag-5'>以太網(wǎng)替代NVLink。
    的頭像 發(fā)表于 04-22 17:22 ?3100次閱讀
    一文<b class='flag-5'>詳解</b>基于<b class='flag-5'>以太網(wǎng)</b>的GPU Scale-UP網(wǎng)絡(luò)

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

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

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

    以太網(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)接口在印制電路板上的實(shí)現(xiàn)

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

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

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

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

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

    工業(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 ?4285次閱讀
    如何快速分辨<b class='flag-5'>以太網(wǎng)</b>與千兆<b class='flag-5'>以太網(wǎng)</b>

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

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

    以太網(wǎng)幀格式和功能詳解

    以太網(wǎng)幀(Ethernet Frame)是以太網(wǎng)(Ethernet)協(xié)議用于在局域網(wǎng)(LAN)中傳輸數(shù)據(jù)的基本單位。理解以太網(wǎng)幀的結(jié)構(gòu)和傳輸過程對(duì)于掌握局域網(wǎng)通信的原理至關(guān)重要。以下將
    的頭像 發(fā)表于 10-08 10:03 ?395次閱讀