一、以太網(wǎng)基本原理
一般所說的以太網(wǎng)協(xié)議是指根據(jù) IEEE 802.3 規(guī)范制定的局域網(wǎng)協(xié)議(LAN,Local AreaNetwork)中的 CSMA/CD 協(xié)議。目前,以太網(wǎng)通信常用的介質(zhì)是雙絞線和光纖。
注意:CSMA/CD 協(xié)議是 Carrier sense multiple Access with Collision Detection 的縮寫,是帶有檢測沖突的載波偵聽多路存取協(xié)議,具體內(nèi)容請參考 IEEE 802.3 規(guī)范。
1.1 以太網(wǎng)協(xié)議的參考模型
以太網(wǎng)協(xié)議的邏輯關(guān)系遵循 OSI 參考模型(Open System Interconnect Reference Model,開放式系統(tǒng)互聯(lián)參考模型),如圖 10-1 所示。
物理層是指網(wǎng)絡(luò)通信連接的媒介物質(zhì),用于攜帶計(jì)算機(jī)之間的以太網(wǎng)信號。當(dāng)前應(yīng)用最多的是雙絞線和光纖。使用這兩種媒介,以太網(wǎng)目前可以實(shí)現(xiàn) 4 種傳輸速率。
? 10 Mbit/s:10Base-T 以太網(wǎng)。
? 100 Mbit/s:快速以太網(wǎng)。
? 1000 Mbit/s:千兆位以太網(wǎng) 802.3z。
? 10 千兆位以太網(wǎng):IEEE 802.3ae。
圖 1 以太網(wǎng)協(xié)議邏輯關(guān)系的參考模型
MAC 子層有兩個(gè)基本職能:數(shù)據(jù)封裝,包括傳輸之前的幀集合和接收中、接收后的幀解析/差錯(cuò)監(jiān)控;媒體訪問控制,包括幀傳輸初始化和傳輸失敗恢復(fù)。
上層協(xié)議根據(jù)實(shí)際應(yīng)用可以選擇多種不同的協(xié)議,如 IP 協(xié)議、TCP 協(xié)議、HTTP 協(xié)議等。常用的 TCP/IP 協(xié)議如圖 10-2 所示。
圖 2 上層協(xié)議
在進(jìn)行實(shí)際的以太網(wǎng)通信中,每一種協(xié)議都是運(yùn)行在其下面層次的協(xié)議基礎(chǔ)上。例如,當(dāng)兩個(gè)計(jì)算機(jī)系統(tǒng)使用 FTP 協(xié)議傳輸文件時(shí),從用戶看來是兩個(gè)系統(tǒng)基于 FTP 協(xié)議的直接交流,實(shí)際上文件的數(shù)據(jù)傳輸則是經(jīng)過了層層打包和解包的協(xié)議路徑,如圖3 所示。
圖?3 FTP 協(xié)議的通信過程
上層的各個(gè)協(xié)議棧要分別實(shí)現(xiàn)對數(shù)據(jù)的打包、解包、校驗(yàn)以及對下一層相關(guān)協(xié)議的調(diào)用。例如,在 IP 協(xié)議棧從以太網(wǎng)驅(qū)動收到一個(gè)數(shù)據(jù)包后,經(jīng)過解包、校驗(yàn),確認(rèn)是否為有效的 IP包,如無效則舍棄該包;如有效則進(jìn)一步判斷包內(nèi)的數(shù)據(jù),轉(zhuǎn)而調(diào)用 TCP、UDP、ICMP 等協(xié)議或使用戶自定義的處理服務(wù)。而以太網(wǎng)控制芯片的功能是完成 TCP/IP 協(xié)議簇分層模型中鏈路層的相關(guān)工作,它處理與雙絞線 RJ-45 接口之間的所有物理細(xì)節(jié)。
本篇將要介紹的以太網(wǎng)控制器將實(shí)現(xiàn)有關(guān) MAC(媒體訪問)子層的控制功能。在此基礎(chǔ)上,開發(fā)人員可以簡便、快速地開發(fā)出基于以太網(wǎng)的嵌入式系統(tǒng)應(yīng)用。因?yàn)橐蕴W(wǎng)的上層協(xié)議可以根據(jù)需求的不同進(jìn)行選擇,物理層可以根據(jù)網(wǎng)絡(luò)速率不同選擇特定的媒介物質(zhì)。下面將詳細(xì)介紹有關(guān) MAC 層的內(nèi)容。
1.2 MAC子層
MAC 子層在上層協(xié)議和以太網(wǎng)網(wǎng)絡(luò)之間傳輸和接收數(shù)據(jù),其主要功能是確保以太網(wǎng)上每一幀數(shù)據(jù)的傳輸都遵循了 IEEE 802.3 規(guī)范所規(guī)定的介質(zhì)存取規(guī)則。
a.基本幀數(shù)據(jù)格式
IEEE 802.3 規(guī)范為實(shí)現(xiàn) MAC 定義了一套基本的幀數(shù)據(jù)格式,如圖 4 所示。
圖 10-4 幀數(shù)據(jù)格式
各個(gè)字段的含義及規(guī)定如下。
? Preamble(PRE):報(bào)頭,字段中 1 和 0 交替使用,接收方通過該字段知道導(dǎo)入幀,并且該字段提供了同步接收物理層幀接收和導(dǎo)入數(shù)據(jù)流的方法。
? Start-of-frame delimiter(SFD):幀起始分隔符,字段中 1 和 0 交替使用,結(jié)尾是兩個(gè)連續(xù)的 1,表示下一位是目的地址的第一個(gè)字節(jié)的第一位。
? Destination Address(DA):目標(biāo)地址,用于識別需要接收幀的目的地。
? Source Address(SA):源地址,用于識別發(fā)送幀的源地址。
? Length/Type:長度/類型,表示包含在幀數(shù)據(jù)字段中的 MAC 數(shù)據(jù)大小,也可以表示幀的類型。
? Data:數(shù)據(jù),是一組 n(46≤n≤1500)字節(jié)的任意值序列。
? Frame check sequence(FCS):幀數(shù)據(jù)校驗(yàn)序列,該序列包括 32 位的循環(huán)冗余校驗(yàn)(CRC)值,由發(fā)送方生成,通過接收方進(jìn)行計(jì)算以校驗(yàn)幀是否被破壞。
b.幀傳輸
MAC 層從上層協(xié)議接收到發(fā)送幀數(shù)據(jù)的請求,首先按照下面的次序?qū)?shù)據(jù)和地址信息保存到 MAC 層的幀數(shù)據(jù)緩沖區(qū)中。
? 插入報(bào)頭和幀起始分隔符。
? 插入目標(biāo)地址和源地址。
? 統(tǒng)計(jì)來自上層協(xié)議數(shù)據(jù)的數(shù)量,插入數(shù)量值。
? 插入來自上層協(xié)議的數(shù)據(jù),如果數(shù)據(jù)量小于 46 字節(jié),則補(bǔ)齊 46 字節(jié)。
? 根據(jù)目標(biāo)地址、源地址、長度/類型和數(shù)據(jù)產(chǎn)生 CRC 校驗(yàn)序列,并插入校驗(yàn)序列。
一幀完整數(shù)據(jù)組成后,MAC 層可以開始發(fā)送幀數(shù)據(jù)。有兩種發(fā)送方式可供選擇:半雙工(half duplex)和全雙工(full duplex)。IEEE 802.3 規(guī)范規(guī)定所有的以太網(wǎng) MAC 都要支持半雙工方式,即一個(gè)時(shí)刻只能進(jìn)行發(fā)送或者接收,而不能同時(shí)進(jìn)行發(fā)送和接收。全雙工方式下發(fā)送和接收可以同時(shí)進(jìn)行。
c.幀接收
幀接收的過程和發(fā)送的過程是相反的。首先檢查幀數(shù)據(jù)中的目標(biāo)地址和當(dāng)前地址是否相符,然后檢查接收到的幀數(shù)據(jù)中的數(shù)據(jù)長度、CRC 校驗(yàn)序列和實(shí)際的數(shù)據(jù)長度、CRC 校驗(yàn)序列是否相符。如果都相符,則將數(shù)據(jù)交給上層協(xié)議進(jìn)行解析,MAC 層的傳輸任務(wù)完成。
1.3 媒體無關(guān)接口(Media Independent Interface)
IEEE 802.3 規(guī)范提出媒體無關(guān)接口(Media Independent Interface,MII)就是為了能夠?qū)崿F(xiàn) MAC 層和不同的物理層(PHY)之間的邏輯連接,如圖 5 所示。
圖 10-5 媒體無關(guān)接口
MAC 層可以通過媒體無關(guān)接口連接不同的物理層。根據(jù)對以太網(wǎng)通信速率的要求選擇合適物理層接口。針對不同的物理層,媒體無關(guān)接口可以以不同的方式實(shí)現(xiàn)到 MAC 的邏輯連接。例如在 10Mbit/s 以太網(wǎng)通信中,媒體無關(guān)接口使用 1 位來串行發(fā)送/接收數(shù)據(jù)流;在 100Mbit/s以太網(wǎng)通信中,媒體無關(guān)接口使用 4 位來串行發(fā)送/接收數(shù)據(jù)流;在 1000Mbit/s 以太網(wǎng)通信中,媒體無關(guān)接口使用 8 位來串行發(fā)送/接收數(shù)據(jù)流。
二、以太網(wǎng)控制器(MAC)的基本框架
下面將要介紹的以太網(wǎng)控制器(MAC)實(shí)現(xiàn)了以太網(wǎng)標(biāo)準(zhǔn)的第二層協(xié)議——MAC(媒體訪問控制)協(xié)議,完全符合 IEEE 802.3 和 IEEE 802.3u 規(guī)范所規(guī)定的 10Mbit/s 和 100Mbit/s 以太網(wǎng)標(biāo)準(zhǔn)。如圖 6 所示,使用這個(gè)以太網(wǎng)控制器外部連接一塊 PHY 芯片(實(shí)現(xiàn)了物理層功能的芯片)就可以進(jìn)行數(shù)據(jù)鏈路層的通信,即幀通信。在此基礎(chǔ)上可以方便、快捷地開發(fā)出更高層次的協(xié)議,實(shí)現(xiàn) FTP、HTTP 等協(xié)議。
圖 6 以太網(wǎng)控制器
這個(gè)以太網(wǎng)控制器具體實(shí)現(xiàn)了以下內(nèi)容。
? 符合 IEEE 802.3x 規(guī)定的全雙工幀控制。
? 半雙工傳輸模式下的 CSMA/CD 協(xié)議。
? 32 位 CRC 校驗(yàn)序列的自動產(chǎn)生和檢查。
? 報(bào)頭的產(chǎn)生和去除。
? 發(fā)送和接收數(shù)據(jù)包的完全狀態(tài)控制。
? 滿足 IEEE 802.3 規(guī)定的 MII(媒體無關(guān)接口)。
針對以太網(wǎng)控制器需要完成的任務(wù),本節(jié)將設(shè)計(jì)以太網(wǎng)控制器的程序框架,并對各個(gè)重要部分進(jìn)行講解,如圖 7 所示。
圖 10-7 以太網(wǎng)控制器程序框架
以太網(wǎng)控制器的程序框架包括如下幾個(gè)主要部分。
? 主機(jī)接口(Host Interface):主機(jī)接口用來連接主機(jī)部分,將接收到的數(shù)據(jù)幀保存到存儲器中,同時(shí)從存儲器中載入需要通過以太網(wǎng)接口傳輸?shù)臄?shù)據(jù)。主機(jī)上可以實(shí)現(xiàn)更高層次的以太網(wǎng)協(xié)議。
? 數(shù)據(jù)發(fā)送模塊(Transmit Module):完成所有與發(fā)送數(shù)據(jù)相關(guān)的操作,包括產(chǎn)生報(bào)頭、添加 CRC 校驗(yàn)序列等。
? 數(shù)據(jù)接收模塊(Receive Module):完成所有與接收數(shù)據(jù)相關(guān)的操作,包括去除報(bào)頭、CRC 校驗(yàn)。
? 控制模塊(Control Module):完成以太網(wǎng)控制器所有功能需要執(zhí)行的操作。
? 媒體無關(guān)接口模塊(Media Independent Interface):提供一個(gè)與媒體無關(guān)的接口,用來連接外部的以太網(wǎng) PHY 控制芯片。
? 狀態(tài)顯示模塊(Status Module):記錄以太網(wǎng)控制芯片進(jìn)行數(shù)據(jù)傳輸時(shí)各個(gè)狀態(tài)的變化。
? 寄存器模塊(Register Module):為以太網(wǎng)控制芯片提供需要的所有寄存器。
審核編輯:劉清
評論
查看更多