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