1 以太網(wǎng)的由來
__以太網(wǎng)__不是單一協(xié)議,而是不同標(biāo)準(zhǔn)的完整集合。這些標(biāo)準(zhǔn)來自 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對DEC、英特爾和施樂進(jìn)行游說,希望與他們一起將以太網(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è)國際化的大公司。梅特卡夫曾經(jīng)開玩笑說,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)致了另一種說法“以太網(wǎng)不適合在理論中研究,只適合在實(shí)際中應(yīng)用”。也許只是句玩笑話,但這說明了這樣一個(gè)技術(shù)觀點(diǎn):通常情況下,網(wǎng)絡(luò)中實(shí)際的數(shù)據(jù)流特性與人們在局域網(wǎng)普及之前的估計(jì)不同,而正是因?yàn)橐蕴W(wǎng)簡單的結(jié)構(gòu)才使局域網(wǎng)得以普及。梅特卡夫和Saltzer曾經(jīng)在麻省理工學(xué)院MAC項(xiàng)目(Project MAC)的同一層樓工作,當(dāng)時(shí)他正在做自己的哈佛大學(xué)畢業(yè)論文,在此期間奠定了以太網(wǎng)技術(shù)的理論基礎(chǔ)。
1985 年,美國電氣和電子工程師協(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)聽多路存取和沖突檢測)介質(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)是一種計(jì)算機(jī)__局域網(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))為了減少?zèng)_突,將能提高的網(wǎng)絡(luò)速度和使用效率最大化,使用交換機(jī)(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,它是一個(gè)全球性互聯(lián)網(wǎng)絡(luò)。它是由從地方到全球范圍內(nèi)幾百萬個(gè)私人的,政府的,學(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等速率)運(yùn)行在多種類型的電纜上。它規(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 是個(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)連接起來,進(jìn)行資源的分享。另外,互聯(lián)網(wǎng)與以太網(wǎng)是兩個(gè)不同的概念,前者是范圍概念,后者是技術(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)層__,如下圖所示。
在物理層,有不同的電纜選項(xiàng)和不同的速度。然而,以太網(wǎng)的優(yōu)點(diǎn)之一是它使用相同的數(shù)據(jù)鏈路層標(biāo)準(zhǔn)。你可以在網(wǎng)絡(luò)中混合使用不同的以太網(wǎng)標(biāo)準(zhǔn)。下面是一個(gè)例子:
上面我們看到三臺主機(jī)連接到使用不同以太網(wǎng)標(biāo)準(zhǔn)的兩臺交換機(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)以來,此框架沒有太大變化。這是以太網(wǎng)幀的樣子:
前導(dǎo)碼 :這是一個(gè) 7 字節(jié)的 1 和 0 模式,用于同步。
SFD :“起始幀定界符”標(biāo)記前導(dǎo)碼的結(jié)尾,并告訴接收器接下來的字段將是實(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)記的字段就是我們所說的以太網(wǎng)頭。
TCP/IP 協(xié)議棧中的每層協(xié)議報(bào)文的封裝與拆裝如下:
當(dāng)用戶發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)向下交給傳輸層,這是處于應(yīng)用層的操作,應(yīng)用層可以通過調(diào)用傳輸層的接口來編寫特定的應(yīng)用程序。而 TCP/IP 協(xié)議一般也會(huì)包含一些簡單的應(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ì)對數(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)卡接收到某個(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) 。
Ethernet V2可以裝載的最大數(shù)據(jù)長度是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)勢所在,越需要嚴(yán)格傳輸控制的應(yīng)用,越需要用IEEE802.3或SNAP來封裝,但I(xiàn)EEE802.3也不可避免的帶來數(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ù)編碼方式和沖突檢測機(jī)制,物理層一般是通過一個(gè) PHY 芯片實(shí)現(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(實(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í)際中,可能還無法獲得超過4 Mbps。
- BASE: BASE是英文baseband的縮寫,指的就是__基帶__。表示沒有使用頻分復(fù)用或者其它頻率轉(zhuǎn)換技術(shù),每一個(gè)信號在一個(gè)單一頻率上完全控制線纜。
- 數(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),它們之間以一個(gè)字母或數(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)或黃色電纜)──最早實(shí)現(xiàn)10 Mbit/s以太網(wǎng)。
早期IEEE標(biāo)準(zhǔn),使用單根RG-11同軸電纜,最大距離為500米,并最多可以連接100臺電腦的收發(fā)器,而纜線兩端必須接上50歐姆的終端電阻。接收端通過所謂的“插入式分接頭”插入電纜的內(nèi)芯和屏蔽層。在電纜終結(jié)處使用N型連接器。
盡管由于早期的大量布設(shè),到現(xiàn)在還有一些系統(tǒng)在使用,這一標(biāo)準(zhǔn)實(shí)際上被10BASE2取代。
利用基帶的10M傳輸速率,采用曼徹斯特編碼傳輸數(shù)據(jù)。 該系統(tǒng)在安裝和維護(hù)上難度較大。
在IEEE Std 802.3?的Clause 8有詳細(xì)的介紹。
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米(實(shí)際為185米),僅能連接30臺計(jì)算機(jī),計(jì)算機(jī)使用T型適配器連接到帶有BNC連接器的網(wǎng)卡,而__線路兩頭需要50歐姆的終結(jié)器__。
利用基帶的10M傳輸速率,采用曼徹斯特編碼傳輸數(shù)據(jù)。雖然在能力、規(guī)格上不及10BASE5,但是因?yàn)槠渚€材較細(xì)、布線方便、成本也便宜,所以得到更廣泛的使用,淘汰了10BASE5。由于雙絞線的普及,它也被各式的雙絞線網(wǎng)絡(luò)取代。
在IEEE Std 802.3?的Clause 10有詳細(xì)的介紹。
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是第一個(gè)雙絞線上實(shí)現(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),站點(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)聽此脈沖,收到“滴答” 信號表示物理連接已建立,10base-T設(shè)備通過LED向網(wǎng)絡(luò)管理員指示鏈路是否正常。
如下圖所示,UTP 電纜有 4 對線對,每對 2 根線。每對線都有兩種匹配的顏色。例如,藍(lán)色和藍(lán)白色。在 UTP 電纜的末端,我們使用 RJ45 連接器。
RJ45 連接器有 8 個(gè)可以插入電線的位置,稱為“引腳”。我們從左到右數(shù)針數(shù),查看 RJ45 連接器的底部。
10base-T因?yàn)閮r(jià)格便宜、配置靈活和易于管理而流行起來,現(xiàn)在占整個(gè)以太網(wǎng)銷售量的90%以上。
在IEEE Std 802.3?的Clause 14有詳細(xì)的介紹。
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ì)(分別為雙絞線或光纖);而最后一個(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),是對IEEE802.3的補(bǔ)充。與10base-T一樣采用星形拓?fù)浣Y(jié)構(gòu),但100Base-T包含4個(gè)不同的物理層規(guī)范,并且包含了網(wǎng)絡(luò)拓?fù)浞矫娴脑S多新規(guī)則。可以說是10Base-T的升級版。
在IEEE Std 802.3?的Clause 21有詳細(xì)的介紹。
Architectural positioning of 100BASE-T
__1000BASE-T__采用四對五類平衡電纜的1000 Mb/s 物理層規(guī)格。與10Base-T、100Base-T完全兼容。
前面兩種標(biāo)準(zhǔn)有兩根線對,一根用于傳輸,另一根用于接收。然而,1000BASE-T使用所有 4 對線。它不是使用不同的線對進(jìn)行傳輸/接收,而是能夠在每個(gè)線對上同時(shí)發(fā)送和接收。
RJ45 連接器中的引腳布局相同,但我們使用了額外的電線:
在IEEE Std 802.3?的Clause 40有詳細(xì)的介紹。
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,去耦后實(shí)現(xiàn)1000Mbit/s傳輸速度。
1000BASE-X 采用單模或多模長波激光器的規(guī)格。采用直徑為62.5um或50um的多模光纖時(shí),工作波長范圍為1270-1355nm,傳輸距離為550m;采用直徑為9um或10um的單模光纖,工作波長范圍為1270-1355nm,傳輸距離為5km左右。
在IEEE Std 802.3?的Clause 38有詳細(xì)的介紹。
Relationship of 1000BASE-X and the PMDs
4.2編碼
為了讓接收方在沒有外部時(shí)鐘參考的情況也能確定每一位的起始、結(jié)束和中間位置,在傳輸信號時(shí)不直接采用二進(jìn)制編碼。在 10BASE-T 的傳輸方式中采用曼徹斯特編碼,在 100BASE-T 中則采用 4B/5B 編碼。
曼徹斯特編碼把每一個(gè)二進(jìn)制位的周期分為兩個(gè)間隔,在表示“1”時(shí),以前半個(gè)周期為高電平,后半個(gè)周期為低電平。表示“0”時(shí)則相反,具體見下圖。
采用曼徹斯特碼在每個(gè)位周期都有電壓變化,便于同步。但這樣的編碼方式效率太低,只有 50%。在 100BASE-T 采用的 4B/5B 編碼是把待發(fā)送數(shù)據(jù)位流的每 4 位分為一組,以特定的 5 位編碼來表示,這些特定的 5 位編碼能使數(shù)據(jù)流有足夠多的跳變,達(dá)到同步的目的,而且效率也從曼徹斯特編碼的 50% 提高到了 80%。
4.3 CSMA/CD沖突檢測
早期的以太網(wǎng)大多是多個(gè)節(jié)點(diǎn)連接到同一條網(wǎng)絡(luò)總線上 (總線型網(wǎng)絡(luò)),存在信道競爭問題,因而每個(gè)連接到以太網(wǎng)上的節(jié)點(diǎn)都必須具備沖突檢測功能。
上面我們看到 H1 和 H2 都在發(fā)送以太網(wǎng)幀。集線器在連接到 H3 的端口上重復(fù)這些幀。當(dāng)這同時(shí)發(fā)生時(shí),我們會(huì)發(fā)生碰撞并且兩幀都丟失了。
為了解決這個(gè)問題,我們必須使用半雙工。
半雙工意味著我們不能同時(shí)發(fā)送和接收。當(dāng)一臺計(jì)算機(jī)正在傳輸時(shí),其他所有人都必須等待。當(dāng)沒有人傳輸時(shí),我們可以拍攝并傳輸一幀。
然而,這并不意味著我們完全沒有碰撞。當(dāng)兩臺計(jì)算機(jī)決定“線路空閑”并開始傳輸時(shí),我們?nèi)匀粫?huì)發(fā)生碰撞。為了解決這個(gè)問題,我們有一個(gè)叫做 CSMA/CD 的協(xié)議 。
CSMA/CD全稱是Carrier Sense Multiple Access with Collision Detection,載波偵聽多路訪問/沖突檢測協(xié)議),已廣泛應(yīng)用于以太網(wǎng)中。
所謂__載波偵聽__(Carrier Sense),意思是網(wǎng)絡(luò)上各個(gè)工作站在發(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)上有兩個(gè)或兩個(gè)以上工作站同時(shí)發(fā)送數(shù)據(jù),在總線上就會(huì)產(chǎn)生信號的混合,這樣哪個(gè)工作站都辨別不出真正的數(shù)據(jù)是什么。這種情況稱為數(shù)據(jù)沖突,又稱為__碰撞__。
__CSMA/CD 沖突檢測機(jī)制大致__如下:如果多個(gè)節(jié)點(diǎn)同時(shí)利用同一條總線發(fā)送數(shù)據(jù),則會(huì)產(chǎn)生沖突,總線上的節(jié)點(diǎn)可通過接收到的信號與原始發(fā)送的信號的比較檢測是否存在沖突,若存在沖突則停止發(fā)送數(shù)據(jù),隨機(jī)等待一段時(shí)間再重傳。如果再次碰撞,發(fā)射節(jié)點(diǎn)再次等待,等待時(shí)間幾乎是前一個(gè)的兩倍:這就是所謂的退避(即“下降”)指數(shù)。除非它已經(jīng)達(dá)到了最大值。
現(xiàn)在大多數(shù)局域網(wǎng)組建的時(shí)候很少采用總線型網(wǎng)絡(luò),大多是一個(gè)設(shè)備接入到一個(gè)獨(dú)立的路由或交換機(jī)接口,組成星型網(wǎng)絡(luò),不會(huì)產(chǎn)生沖突。但為了兼容,新出的產(chǎn)品還是帶有沖突檢測機(jī)制。
CSMA/CD 的整個(gè)方案如下圖所示:
CSMA/CD的幀格式
IEEE 802.3 標(biāo)準(zhǔn)規(guī)定的幀格式包含以下字段。
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.長度 :這兩個(gè)字節(jié)字段指定數(shù)據(jù)字段中的長度或字節(jié)數(shù)。
6.數(shù)據(jù) :它可以是 46 到 1500 字節(jié),取決于幀的類型和信息字段的長度。
7.幀校驗(yàn)序列(FCS) :這對于字節(jié)字段包含用于錯(cuò)誤檢測的 CRC。
CSMA/CD流程
第一步:載波監(jiān)聽,當(dāng)一個(gè)站點(diǎn)想要發(fā)送數(shù)據(jù)的時(shí)候,它檢測網(wǎng)絡(luò)查看是否有其他站點(diǎn)正在傳輸,即偵聽信道是否空閑,要確保沒有其他節(jié)點(diǎn)信道,所以該節(jié)點(diǎn)首先要監(jiān)聽信道上的動(dòng)靜,也就是先聽后說。如果信道在一定時(shí)段內(nèi)寂靜無聲(稱為幀間縫隙IFG),則該節(jié)點(diǎn)就開始傳輸,也就是無聲則說。
第二步:沖突檢測,如果信道一直很忙碌,就一直監(jiān)視信道,直到出現(xiàn)最小的IFG時(shí)段時(shí),該節(jié)點(diǎn)才開始發(fā)送它的數(shù)據(jù),也就是有空就說。如果兩個(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)聽信道,以檢測__碰撞沖突__,也就是邊聽邊說。
第三步:如果一個(gè)節(jié)點(diǎn)在傳輸期間檢測出碰撞沖突,則立即停止該次傳輸,并向信道發(fā)出一個(gè)“擁擠”信號,以確保其他所有節(jié)點(diǎn)也發(fā)現(xiàn)該沖突,從而摒棄可能一直在接收的受損的信息包也就是沖突停止,即一次只能一人講。
第四步:多路存取,在等待一段時(shí)間(稱為后退)后,想發(fā)送的節(jié)點(diǎn)試圖進(jìn)行新的發(fā)送。 這時(shí)采用一種叫二進(jìn)制指數(shù)退避策略(Binary Exponential Back off Policy)的算法來決定不同的節(jié)點(diǎn)在試圖再次發(fā)送數(shù)據(jù)前要等待一段時(shí)間,也就是隨機(jī)延遲。當(dāng)延時(shí)一段時(shí)間后,總線為空閑時(shí),再重新發(fā)送未發(fā)完的數(shù)據(jù)。
總結(jié):先聽后說,無聲則說;有空就說,邊聽邊說;一旦沖突,立即停說,隨機(jī)延遲,等待再說。
CSMA/CD控制方式的優(yōu)點(diǎn)是:原理比較簡單,技術(shù)上易實(shí)現(xiàn),網(wǎng)絡(luò)中各工作站處于平等地位,不需集中控制,不提供優(yōu)先級控制。但在網(wǎng)絡(luò)負(fù)載增大時(shí),發(fā)送時(shí)間增長,發(fā)送效率急劇下降。
4.4 PHY 層芯片:LAN8742A
接下來介紹一款常用于嵌入式的PHY芯片,其他芯片也是類似的原理。
LAN8742A是 SMSC 公司 (已被 Microchip 公司收購) 設(shè)計(jì)的一個(gè)體積小、功耗低、全能型10/100Mbps 的以太網(wǎng)PHY 層收發(fā)器,I/O 引腳電壓符合 IEEE802.3-2005 標(biāo)準(zhǔn)。它是針對消費(fèi)類電子和企業(yè)應(yīng)用而設(shè)計(jì)的。 LAN8742A 總共只有 24Pin,僅支持 RMII 接口。LAN8742A可以通過自協(xié)商的方式與目的主機(jī)最佳的連接方式(速度和雙工模式),支持 HP Auto-MDIX 自動(dòng)翻轉(zhuǎn)功能,無需更換網(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)見下圖。
LAN8742A通過 RMII 與 MAC 連接。 RJ45 是網(wǎng)絡(luò)插座,在與 LAN8742A連接之間還需要一個(gè)變壓器,所以一般使用帶電壓轉(zhuǎn)換和 LED 指示燈的 HY911105A 型號的插座。一般來說,必須為使用 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)見下圖。
LAN8742A有各個(gè)不同功能模塊組成,最重要的要數(shù)接收控制器和發(fā)送控制器,其它的基本上都是與外部引腳掛鉤,實(shí)現(xiàn)信號傳輸。部分引腳是具有雙重功能的,比如 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ì)檢測該引腳獲取得到 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)識別直連或交叉網(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 信號線,當(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í)鐘輸出。
當(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 引腳共用,一般使用下拉。
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ò)誤檢測,重傳,流控制和隨機(jī)訪問等操作。
數(shù)據(jù)鏈路層提供服務(wù):
成幀和鏈路訪問 :數(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ù),即無錯(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ù)鏈路層使用流控制來防止鏈路一側(cè)的發(fā)送節(jié)點(diǎn)壓倒鏈路另一側(cè)的接收節(jié)點(diǎn)。
錯(cuò)誤檢測 :可以通過信號衰減和噪聲引入錯(cuò)誤。數(shù)據(jù)鏈路層協(xié)議提供了一種檢測一個(gè)或多個(gè)錯(cuò)誤的機(jī)制。這是通過在幀中添加錯(cuò)誤檢測位來實(shí)現(xiàn)的,然后接收節(jié)點(diǎn)可以執(zhí)行錯(cuò)誤檢查。
糾錯(cuò) :糾錯(cuò)與錯(cuò)誤檢測類似,不同之處在于接收節(jié)點(diǎn)不僅檢測錯(cuò)誤,還確定錯(cuò)誤發(fā)生在幀中的位置。
半雙工和全雙工 :在全雙工模式下,兩個(gè)節(jié)點(diǎn)都可以同時(shí)傳輸數(shù)據(jù)。在半雙工模式下,只有一個(gè)節(jié)點(diǎn)可以同時(shí)傳輸數(shù)據(jù)。
5.1錯(cuò)誤檢測
當(dāng)數(shù)據(jù)從一臺設(shè)備傳輸?shù)搅硪慌_設(shè)備時(shí),系統(tǒng)不保證該設(shè)備接收到的數(shù)據(jù)與另一臺設(shè)備發(fā)送的數(shù)據(jù)是否相同。錯(cuò)誤是接收端收到的消息與傳輸?shù)南⒉煌那闆r。
錯(cuò)誤可以分為兩類: 單比特錯(cuò)誤和突發(fā)錯(cuò)誤 。
1.單比特錯(cuò)誤
給定數(shù)據(jù)單元的唯一一位從1變?yōu)?或從0變?yōu)?。
單比特錯(cuò)誤主要發(fā)生在并行數(shù)據(jù)傳輸中。例如,如果使用8條線來發(fā)送一個(gè)字節(jié)的8位,如果其中一條線路有噪聲,則每個(gè)字節(jié)會(huì)損壞單個(gè)位。
2.突發(fā)錯(cuò)誤
兩個(gè)或多個(gè)位從0更改為1或從1更改為0稱為突發(fā)錯(cuò)誤。從第一個(gè)損壞位到最后一個(gè)損壞位確定突發(fā)錯(cuò)誤。
突發(fā)錯(cuò)誤最有可能發(fā)生在串行數(shù)據(jù)傳輸中。受影響的位數(shù)取決于噪聲和數(shù)據(jù)速率的持續(xù)時(shí)間。
5.2 糾錯(cuò)
最流行的錯(cuò)誤檢測技術(shù)是: 單一奇偶校驗(yàn)、二維奇偶校驗(yàn)、校驗(yàn)、循環(huán)冗余校驗(yàn) 。
1.單一奇偶校驗(yàn)
單奇偶校驗(yàn)是一種簡單的機(jī)制,檢測錯(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)。
單奇偶校驗(yàn)的缺點(diǎn)有兩點(diǎn):第一,它只能檢測非常罕見的單位錯(cuò)誤;第二,如果兩個(gè)位互換,則它無法檢測到錯(cuò)誤。
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)行比較。
二維奇偶校驗(yàn)的缺點(diǎn)有兩點(diǎn):第一,如果一個(gè)數(shù)據(jù)單元中的兩個(gè)位被破壞,而另一個(gè)數(shù)據(jù)單元中完全相同位置的兩個(gè)位也被破壞,那么二維奇偶校驗(yàn)器將無法檢測到錯(cuò)誤;第二,在某些情況下,此技術(shù)不能用于檢測 4 位或更多位錯(cuò)誤。
3.校驗(yàn)
校驗(yàn)和是基于冗余概念的__錯(cuò)誤檢測__技術(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ò)傳輸。
校驗(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ò)誤檢測的步驟:
第一步:在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ù)被丟棄。
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ò)誤控制
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ù):
- 如果對ENQ的響應(yīng)是肯定的,則發(fā)送方將發(fā)送其數(shù)據(jù),并且一旦其所有數(shù)據(jù)都已被發(fā)送,則設(shè)備利用EOT(發(fā)送結(jié)束)幀完成其發(fā)送。
- 如果對ENQ的響應(yīng)是否定的,則發(fā)送方斷開連接并在另一時(shí)間重新開始傳輸。
- 如果響應(yīng)既不是負(fù)面也不是正面,則發(fā)送方假定ENQ幀在傳輸過程中丟失,并且在放棄之前嘗試三次建立鏈接。
(2) Pool/Select
線路控制的Pool/Select方法適用于將一個(gè)設(shè)備指定為主站,而其他設(shè)備為二級站的拓?fù)洹?/p>
在這種情況下,主設(shè)備和多個(gè)從設(shè)備組成一條傳輸線,所有的交換都是通過主設(shè)備進(jìn)行的,即使目的地是從設(shè)備。主要設(shè)備控制通信鏈路,而次要設(shè)備遵循主要設(shè)備的指令。主要設(shè)備確定允許哪個(gè)設(shè)備使用通信信道。因此,我們可以說它是會(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è)備警告即將到來的傳輸,幀的一個(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ù)。
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é)議的類型。
2.流量控制
它是一組程序,告訴發(fā)送方在數(shù)據(jù)壓倒接收方之前它可以傳輸多少數(shù)據(jù)。接收設(shè)備具有有限的速度和有限的存儲(chǔ)器來存儲(chǔ)數(shù)據(jù)。因此,接收設(shè)備必須能夠在達(dá)到限制之前通知發(fā)送設(shè)備暫時(shí)停止發(fā)送。它需要一個(gè)緩沖區(qū),一塊內(nèi)存,用于存儲(chǔ)信息,直到它們被處理完畢。
目前有兩種方法來控制數(shù)據(jù)流: 停止與等待、滑動(dòng)窗口 。
(1) 停止與等待
在停止與等待方法中,發(fā)送方在它發(fā)送的每個(gè)幀之后等待確認(rèn)。
收到確認(rèn)后,只發(fā)送下一幀。交替發(fā)送和等待幀的過程繼續(xù),直到發(fā)送者發(fā)送EOT(發(fā)送結(jié)束)幀。
停止等待的好處
停止與等待方法很簡單,因?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ò)展到包括接下來的四個(gè)幀。因此,發(fā)送方窗口包含六個(gè)幀(5,6,7,0,1,2)。
接收窗口
在傳輸開始時(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è)空格。
3.錯(cuò)誤控制
錯(cuò)誤控制是一種錯(cuò)誤檢測和重傳技術(shù)。錯(cuò)誤控制的類型如下:
(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幀都交替編號為0和1,以便可以單獨(dú)識別它們。假設(shè)數(shù)據(jù)1幀確認(rèn)數(shù)據(jù)0幀意味著數(shù)據(jù)0幀已正確到達(dá)并期望接收數(shù)據(jù)1幀。
- 如果在最后發(fā)送的幀中發(fā)生錯(cuò)誤,則接收器發(fā)送未編號的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á)接收端,因此無論是正面還是負(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)是針對第2幀,發(fā)送方必須保留第3幀和第4幀的副本,直到它們正確接收為止。
- 接收器可以根據(jù)條件發(fā)送NAK或ACK。NAK幀告訴發(fā)件人數(shù)據(jù)已被收到損壞。由于滑動(dòng)窗口是連續(xù)傳輸機(jī)制,因此必須對ACK和NAK進(jìn)行編號以識別幀。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ī)制僅選擇所請求的重傳幀。
6 STM32 的 ETH 外設(shè)
前文講解了以太網(wǎng)的相關(guān)理論知識,接下來筆者將從實(shí)際出發(fā),介紹STM32XX7系列ETH外設(shè),從而將理論結(jié)合實(shí)際應(yīng)用。
如果從硬件角度來看以太網(wǎng),則由CPU,MAC,PHY三部分組成的,如下圖所示:
上圖中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ī)范中定義)和簡化介質(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)和簡化介質(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)功能框圖見下圖。
【注】當(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)只能對一個(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í)鐘信號驅(qū)動(dòng)為低電平。
- MDIO :數(shù)據(jù)輸入/輸出比特流,用于通過 MDC 時(shí)鐘信號向/從 PHY 設(shè)備同步傳輸狀態(tài)信息。
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)頭字段對應(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),然后再從邏輯“0”狀態(tài)變?yōu)檫壿嫛?”狀態(tài)。
- 操作:定義正在發(fā)生的事務(wù)(讀取或?qū)懭耄┑念愋汀?/li>
- PADDR: PHY 地址有 5 位,可構(gòu)成 32 個(gè)唯一 PHY 地址。最先發(fā)送和接收地址的MSB 位。
- PADDR:寄存器地址有 5 位,從而可在所選 PHY 設(shè)備中對 32 個(gè)不同的寄存器進(jìn)行尋址。最先發(fā)送和接收地址的 MSB 位。
- TA:周轉(zhuǎn)字段在 RADDR 和 DATA 字段間定義了一個(gè) 2 位模式,以避免在讀取事務(wù)期間出現(xiàn)競爭現(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 控制器針對 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) 中)來觸發(fā)對 PHY 寄存器進(jìn)行寫操作。事務(wù)進(jìn)行期間,應(yīng)用程序不應(yīng)更改 MII 地址寄存器的內(nèi)容或 MII 數(shù)據(jù)寄存器。在此期間對 MII 地址寄存器或MII 數(shù)據(jù)寄存器執(zhí)行的寫操作將會(huì)忽略(繁忙位處于高電平狀態(tài)),事務(wù)將無錯(cuò)完成。寫操作完成后, SMI 將通過復(fù)位繁忙位進(jìn)行指示。
下圖顯示了寫操作的幀格式。
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 之間的互連。
- MII_TX_CLK:連續(xù)時(shí)鐘信號。該信號提供進(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í)鐘信號。該信號提供進(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ā)送使能信號。該信號表示 MAC 當(dāng)前正針對 MII 發(fā)送半字節(jié)。該信號必須與報(bào)頭的前半字節(jié)進(jìn)行同步 (MII_TX_CLK),并在所有待發(fā)送的半字節(jié)均發(fā)送到 MII時(shí)必須保持同步。
- MII_TXD[3:0]:數(shù)據(jù)發(fā)送信號。該信號是 4 個(gè)一組的數(shù)據(jù)信號,由 MAC 子層同步驅(qū)動(dòng),在MII_TX_EN 信號有效時(shí)才為有效信號(有效數(shù)據(jù))。 MII_TXD[0] 為最低有效位,MII_TXD[3] 為最高有效位。禁止 MII_TX_EN 時(shí),發(fā)送數(shù)據(jù)不會(huì)對 PHY 產(chǎn)生任何影響。
- MII_CRS:載波偵聽信號。當(dāng)發(fā)送或接收介質(zhì)處于非空閑狀態(tài)時(shí),由 PHY 使能該信號。發(fā)送和接收介質(zhì)均處于空閑狀態(tài)時(shí),由 PHY 禁止該信號。 PHY 必須確保 MII_CS 信號在沖突條件下保持有效狀態(tài)。該信號無需與 TX 和 RX 時(shí)鐘保持同步。在全雙工模式下,該信號沒意義。
- MII_COL:沖突檢測信號。檢測到介質(zhì)上存在沖突后, PHY 必須立即使能沖突檢測信號,并且只要存在沖突條件,沖突檢測信號必須保持有效狀態(tài)。該信號無需與 TX 和 RX 時(shí)鐘保持同步。在全雙工模式下,該信號沒意義。
- MII_RXD[3:0]:數(shù)據(jù)接收信號。該信號是 4 個(gè)一組的數(shù)據(jù)信號,由 PHY 同步驅(qū)動(dòng),在MII_RX_DV 信號有效時(shí)才為有效信號(有效數(shù)據(jù))。 MII_RXD[0] 為最低有效位,MII_RXD[3] 為最高有效位。當(dāng) MII_RX_EN 禁止、 MII_RX_ER 使能時(shí),特定的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é)隨后的第一個(gè)時(shí)鐘周期之前禁止。為了正確地接收幀, MII_RX_DV 信號必須在時(shí)間范圍上涵蓋要接收的幀,其開始時(shí)間不得遲于 SFD 字段出現(xiàn)的時(shí)間。
- MII_RX_ER:接收錯(cuò)誤信號。該信號必須保持一個(gè)或多個(gè)周期 (MII_RX_CLK),從而向MAC 子層指示在幀的某處檢測到錯(cuò)誤。該錯(cuò)誤條件必須通過 MII_RX_DV 驗(yàn)證。
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 | 錯(cuò)誤載波檢測 |
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í)鐘信號,必須向外部 PHY 提供 25MHz 時(shí)鐘,如圖 474 所示。除了使用外部 25 MHz 石英晶體提供該時(shí)鐘,還可以通過 STM32F75xxx 和 STM32F74xxx 微控制器的 MCO 引腳輸出該信號。這種情況下,必須對 PLL 倍頻進(jìn)行配置,以通過 25 MHz外部石英晶體在 MCO 引腳上獲得所需頻率。
6.3 精簡介質(zhì)獨(dú)立接口:RMII
精簡介質(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ù)和控制信號的引腳。 RMII 規(guī)范將引腳數(shù)減少為 7 個(gè)(引腳數(shù)減少 62.5%)。
RMII 是 MAC 和 PHY 之間的實(shí)例化對象。這有助于將 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ù)路徑
RMII 時(shí)鐘源
使用外部 50 MHz 時(shí)鐘驅(qū)動(dòng) PHY 或使用嵌入式 PLL 生成 50 MHz 頻率信號來驅(qū)動(dòng) PHY。
如果使用RMII接口時(shí),50MHz時(shí)鐘來源有以下幾種方式:
方式一:外部時(shí)鐘
一個(gè)50MHz的外部晶振同時(shí)給MAC和PHY供應(yīng)50MHz時(shí)鐘,MCU其他的部分用自己獨(dú)立的時(shí)鐘。這個(gè)方式需要外掛一顆晶振。
方式二:與MCU共用外部時(shí)鐘
MAC, PHY, MCU都用一顆50MHz外部晶振統(tǒng)一提供時(shí)鐘源。
方式三:STM32輸出時(shí)鐘源
把50MHz換成25MHz,通過STM32的MCO引腳可以輸出同樣的25MHz時(shí)鐘給PHY,然后用PHY內(nèi)部的PLL配置出50MHz時(shí)鐘反補(bǔ)給STM32的MAC,這樣就滿足了PHY和MAC都是50MHz。
值得注意的是,以上設(shè)計(jì)針對STM32XX7系列。
最后,來看看一個(gè)實(shí)際硬件案例。
下圖是Nucleo-F746ZG開發(fā)板的ETH硬件電路圖。主要是 LAN8742A 通過 RMII 和 SMI接口與 STM32F746 控制器連接,見下圖。
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ù)位按鈕。
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5419瀏覽量
171593 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87848 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7553瀏覽量
88727 -
交換技術(shù)
+關(guān)注
關(guān)注
1文章
23瀏覽量
8505
發(fā)布評論請先 登錄
相關(guān)推薦
評論