• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的以太網(wǎng)控制器(MAC)設計

13小時前
263
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。

今天給大俠帶來基于FPGA的以太網(wǎng)控制器(MAC)設計,由于篇幅較長,分三篇。今天帶來第一篇,上篇,以太網(wǎng)基本原理以及以太網(wǎng)控制器(MAC)的基本框架。話不多說,上貨。

為了方便參考學習,后兩篇這里也放上超鏈接:

基于FPGA的以太網(wǎng)控制器(MAC)設計(中)

基于FPGA的以太網(wǎng)控制器(MAC)設計(下)

 

當前,互聯(lián)網(wǎng)已經(jīng)極大地改變了我們的生產(chǎn)和生活。與之相適應的,在嵌入式系統(tǒng)的研究開發(fā)方面,也越來越重視網(wǎng)絡功能。嵌入式系統(tǒng)已經(jīng)不再局限于一個個孤立的控制、處理單元,而是走向網(wǎng)絡集成化,從而實現(xiàn)了多個系統(tǒng)的集中控制、信息共享。

以太網(wǎng)(Ethernet)技術(shù)在嵌入式系統(tǒng)上的開發(fā)應用,已經(jīng)成為當前嵌入式研究領(lǐng)域的技術(shù)熱點之一。一方面,與傳統(tǒng)的 RS-485、CAN 等相比較,以太網(wǎng)更加高速、通用,而且還可以直接與 Internet 相連接,提供更大范圍的遠程訪問;此外,經(jīng)過適當剪裁和優(yōu)化的 TCP/IP?協(xié)議棧,也完全可以適應工業(yè)用途的需求。另一方面,相對于新興的 USB 2.0、IEEE 1394 等總線,以太網(wǎng)技術(shù)在傳輸距離、布線成本以及控制軟件的通用性上都有明顯的優(yōu)勢。

基于以太網(wǎng)的嵌入式系統(tǒng),在以下方面都有良好的應用前景:

? 工業(yè):工業(yè)控制、網(wǎng)絡儀表、遠程的分布式數(shù)據(jù)采集……

? 家庭自動化:智能家庭、信息家電、家庭網(wǎng)關(guān)……

? 商業(yè):遠程銷售平臺、智能自動售貨機、公共電話卡發(fā)行系統(tǒng)……

? 環(huán)保:水源和空氣污染監(jiān)測,防洪體系及水土質(zhì)量監(jiān)測、堤壩安全……

? 其他:交通管理、車輛導航、自動抄表……

因此在使用 FPGA 設計各種嵌入式應用系統(tǒng)時,需要考慮為系統(tǒng)提供以太網(wǎng)接口。本章將?通過 FPGA 實現(xiàn)一個以太網(wǎng)控制器(MAC)的實例,詳細介紹實現(xiàn)過程。

第一篇內(nèi)容摘要:本篇會介紹以太網(wǎng)基本原理,包括以太網(wǎng)協(xié)議的參考模型、MAC 子層、媒體無關(guān)接口(Media Independent Interface)等相關(guān)內(nèi)容,還會介紹以太網(wǎng)控制器(MAC)的基本框架等相關(guān)內(nèi)容。

一、以太網(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)絡通信連接的媒介物質(zhì),用于攜帶計算機之間的以太網(wǎng)信號。當前應用最多的是雙絞線和光纖。使用這兩種媒介,以太網(wǎng)目前可以實現(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 子層有兩個基本職能:數(shù)據(jù)封裝,包括傳輸之前的幀集合和接收中、接收后的幀解析/差錯監(jiān)控;媒體訪問控制,包括幀傳輸初始化和傳輸失敗恢復。

上層協(xié)議根據(jù)實際應用可以選擇多種不同的協(xié)議,如 IP 協(xié)議、TCP 協(xié)議、HTTP 協(xié)議等。常用的 TCP/IP 協(xié)議如圖 10-2 所示。

圖 2 上層協(xié)議

在進行實際的以太網(wǎng)通信中,每一種協(xié)議都是運行在其下面層次的協(xié)議基礎上。例如,當兩個計算機系統(tǒng)使用 FTP 協(xié)議傳輸文件時,從用戶看來是兩個系統(tǒng)基于 FTP 協(xié)議的直接交流,實際上文件的數(shù)據(jù)傳輸則是經(jīng)過了層層打包和解包的協(xié)議路徑,如圖3 所示。

圖 3 FTP 協(xié)議的通信過程

上層的各個協(xié)議棧要分別實現(xiàn)對數(shù)據(jù)的打包、解包、校驗以及對下一層相關(guān)協(xié)議的調(diào)用。例如,在 IP 協(xié)議棧從以太網(wǎng)驅(qū)動收到一個數(shù)據(jù)包后,經(jīng)過解包、校驗,確認是否為有效的 IP包,如無效則舍棄該包;如有效則進一步判斷包內(nèi)的數(shù)據(jù),轉(zhuǎn)而調(diào)用 TCP、UDP、ICMP 等協(xié)議或使用戶自定義的處理服務。而以太網(wǎng)控制芯片的功能是完成 TCP/IP 協(xié)議簇分層模型中鏈路層的相關(guān)工作,它處理與雙絞線 RJ-45 接口之間的所有物理細節(jié)。

本篇將要介紹的以太網(wǎng)控制器將實現(xiàn)有關(guān) MAC(媒體訪問)子層的控制功能。在此基礎上,開發(fā)人員可以簡便、快速地開發(fā)出基于以太網(wǎng)的嵌入式系統(tǒng)應用。因為以太網(wǎng)的上層協(xié)議可以根據(jù)需求的不同進行選擇,物理層可以根據(jù)網(wǎng)絡速率不同選擇特定的媒介物質(zhì)。下面將詳細介紹有關(guān) MAC 層的內(nèi)容。

1.2 MAC子層

MAC 子層在上層協(xié)議和以太網(wǎng)網(wǎng)絡之間傳輸和接收數(shù)據(jù),其主要功能是確保以太網(wǎng)上每一幀數(shù)據(jù)的傳輸都遵循了 IEEE 802.3 規(guī)范所規(guī)定的介質(zhì)存取規(guī)則。

a.基本幀數(shù)據(jù)格式

IEEE 802.3 規(guī)范為實現(xiàn) MAC 定義了一套基本的幀數(shù)據(jù)格式,如圖 4 所示。

圖 10-4 幀數(shù)據(jù)格式

各個字段的含義及規(guī)定如下。

? Preamble(PRE):報頭,字段中 1 和 0 交替使用,接收方通過該字段知道導入幀,并且該字段提供了同步接收物理層幀接收和導入數(shù)據(jù)流的方法。

? Start-of-frame delimiter(SFD):幀起始分隔符,字段中 1 和 0 交替使用,結(jié)尾是兩個連續(xù)的 1,表示下一位是目的地址的第一個字節(jié)的第一位。

? Destination Address(DA):目標地址,用于識別需要接收幀的目的地。

? 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ù)校驗序列,該序列包括 32 位的循環(huán)冗余校驗(CRC)值,由發(fā)送方生成,通過接收方進行計算以校驗幀是否被破壞。

b.幀傳輸

MAC 層從上層協(xié)議接收到發(fā)送幀數(shù)據(jù)的請求,首先按照下面的次序?qū)?shù)據(jù)和地址信息保存到 MAC 層的幀數(shù)據(jù)緩沖區(qū)中。

? 插入報頭和幀起始分隔符。

? 插入目標地址和源地址。

? 統(tǒng)計來自上層協(xié)議數(shù)據(jù)的數(shù)量,插入數(shù)量值。

? 插入來自上層協(xié)議的數(shù)據(jù),如果數(shù)據(jù)量小于 46 字節(jié),則補齊 46 字節(jié)。

? 根據(jù)目標地址、源地址、長度/類型和數(shù)據(jù)產(chǎn)生 CRC 校驗序列,并插入校驗序列。

一幀完整數(shù)據(jù)組成后,MAC 層可以開始發(fā)送幀數(shù)據(jù)。有兩種發(fā)送方式可供選擇:半雙工(half duplex)和全雙工(full duplex)。IEEE 802.3 規(guī)范規(guī)定所有的以太網(wǎng) MAC 都要支持半雙工方式,即一個時刻只能進行發(fā)送或者接收,而不能同時進行發(fā)送和接收。全雙工方式下發(fā)送和接收可以同時進行。

c.幀接收

幀接收的過程和發(fā)送的過程是相反的。首先檢查幀數(shù)據(jù)中的目標地址和當前地址是否相符,然后檢查接收到的幀數(shù)據(jù)中的數(shù)據(jù)長度、CRC 校驗序列和實際的數(shù)據(jù)長度、CRC 校驗序列是否相符。如果都相符,則將數(shù)據(jù)交給上層協(xié)議進行解析,MAC 層的傳輸任務完成。

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)接口可以以不同的方式實現(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)實現(xiàn)了以太網(wǎng)標準的第二層協(xié)議——MAC(媒體訪問控制)協(xié)議,完全符合 IEEE 802.3 和 IEEE 802.3u 規(guī)范所規(guī)定的 10Mbit/s 和 100Mbit/s 以太網(wǎng)標準。如圖 6 所示,使用這個以太網(wǎng)控制器外部連接一塊 PHY 芯片(實現(xiàn)了物理層功能的芯片)就可以進行數(shù)據(jù)鏈路層的通信,即幀通信。在此基礎上可以方便、快捷地開發(fā)出更高層次的協(xié)議,實現(xiàn) FTP、HTTP 等協(xié)議。

圖 6 以太網(wǎng)控制器

這個以太網(wǎng)控制器具體實現(xiàn)了以下內(nèi)容。

? 符合 IEEE 802.3x 規(guī)定的全雙工幀控制。

? 半雙工傳輸模式下的 CSMA/CD 協(xié)議。

? 32 位 CRC 校驗序列的自動產(chǎn)生和檢查。

? 報頭的產(chǎn)生和去除。

? 發(fā)送和接收數(shù)據(jù)包的完全狀態(tài)控制。

? 滿足 IEEE 802.3 規(guī)定的 MII(媒體無關(guān)接口)。

針對以太網(wǎng)控制器需要完成的任務,本節(jié)將設計以太網(wǎng)控制器的程序框架,并對各個重要部分進行講解,如圖 7 所示。

圖 10-7 以太網(wǎng)控制器程序框架

以太網(wǎng)控制器的程序框架包括如下幾個主要部分。

? 主機接口(Host Interface):主機接口用來連接主機部分,將接收到的數(shù)據(jù)幀保存到存儲器中,同時從存儲器中載入需要通過以太網(wǎng)接口傳輸?shù)臄?shù)據(jù)。主機上可以實現(xiàn)更高層次的以太網(wǎng)協(xié)議。

? 數(shù)據(jù)發(fā)送模塊(Transmit Module):完成所有與發(fā)送數(shù)據(jù)相關(guān)的操作,包括產(chǎn)生報頭、添加 CRC 校驗序列等。

? 數(shù)據(jù)接收模塊(Receive Module):完成所有與接收數(shù)據(jù)相關(guān)的操作,包括去除報頭、CRC 校驗。

? 控制模塊(Control Module):完成以太網(wǎng)控制器所有功能需要執(zhí)行的操作。

? 媒體無關(guān)接口模塊(Media Independent Interface):提供一個與媒體無關(guān)的接口,用來連接外部的以太網(wǎng) PHY 控制芯片。

? 狀態(tài)顯示模塊(Status Module):記錄以太網(wǎng)控制芯片進行數(shù)據(jù)傳輸時各個狀態(tài)的變化。

? 寄存器模塊(Register Module):為以太網(wǎng)控制芯片提供需要的所有寄存器。

本篇到此結(jié)束,下一篇帶來基于FPGA的以太網(wǎng)控制器(MAC)設計(中),會介紹以太網(wǎng)控制器(MAC)程序的實現(xiàn),包括頂層程序、媒體無關(guān)接口模塊(Media Independent Interface Module)、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊、控制模塊等相關(guān)內(nèi)容。

為了方便參考學習,后兩篇這里也放上超鏈接:

基于FPGA的以太網(wǎng)控制器(MAC)設計(中)

基于FPGA的以太網(wǎng)控制器(MAC)設計(下)

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

任何技術(shù)的學習就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。