摘 要:百兆MAC(以太網媒體訪問控制)是以太網IEEE 802.3協議規定的數據鏈路層的一部分,使用FPGA替代ASIC,實現以太網MAC功能非常實用。能夠實現硬件系統多路多端口的以太網接入,并在自行開發需要以太網接入的嵌入式處理器設計中得到應用。具體探討以太網MAC的功能定義,使用FPGA實現以太網MAC的方法,對以太網的相關應用設計具有指導作用。
關鍵詞:以太網;媒體訪問控制;現場可編程門陣列;ASIC
中圖分類號:TP393 文獻標識碼:A
文章編號:1004-373X(2008)10-088-03
Intruduction of Ethernet Media Access Control and Research of Its FPGA Implementation
GUO Jun
(School of Electronic Engineering Integrate Circuit Design,Southeast University,Nanjing,210012,China)
Abstract: 100M Ethernet media access control is Part of IEEE802.3 protocol.Using FPGA instead of ASIC to implement Ethernet MAC function is of highly utility.It is capable of achieving multi-ports Ethernet media access in hardware system,especially in embedded CPU system which needed Ethernet Access developed by it self.The definition of Ethernet MAC and the technique of using FPGA implement Ethernet MAC are discussed in this paper.This is valuable to guiding the Ethernet- involved application design.
Keywords:Ethernet;media access control;FPGA;ASIC
以太網經過幾十年來的飛速發展,網絡規模不斷擴大,帶寬日益增長,應用服務也不斷增加。多端口以太網的接入應用也在不斷的增長。其中MAC(百兆以太網媒體訪問控制)的實現功能尤為重要,百兆MAC(以太網媒體訪問控制)是以太網IEEE 802.3協議規定的數據鏈路層的一部分,是連接以太網物理層和網絡層的中間協議層,一般在系統中,牽涉到的MAC接口比較多或者有特殊要求的,為了減少硬件設計上的芯片個數和簡化連接關系,增加集成度,會將以太網MAC接口作為一個子系統集成到ASIC/FPGA芯片中,增加穩定性,降低成本。一般硬件設計上是由ASIC(專用集成電路芯片)實現,本文從MAC協議的基本內容介紹出發,討論使用FPGA實現百兆MAC的技術。
1 MAC的介紹
1.1 以太網的幀格式
以太網的幀格式如圖1所示。
(1) Preamble:該字段為7個10101010b,數值沒有實際的意義,只是讓物理層做好接收數據的準備。
(2) SFD(Start Framc Delimiter):緊跟著Preamble,固定值10101011b,表示數據幀開始。
(3) DA(Dest.MAC Address):以太網幀的目的地址。
(4) SA(Source MAC Address):以太網幀的源地址。
(5) Type/Length:當該值小于等于1 500時表示數據段的長度,當大于1 500時表示上層協議的類型。
(6) Data:包括(MAC Client Data)上層協議的數據字段;(Pad)填充字段;當MAC Client Data的長度小于46 b時,由于規定了最小以太網幀長度,所以必須對MAC Client Data進行填充(padding),使其達到46 b,填充的內容任意。
(7) FCS(Frame Check Sequence):CRC字段,32 b CRC校驗碼由802.3規定的校驗公式決定,作用范圍是從DA字段到Pad字段(如果有的話)。

1.2 MAC子層的協議功能定義
MAC是為了滿足網絡傳輸而發展起來,他是構成以太網必備的條件之一。MAC在7層ISO標準中屬于數據鏈路層,他對邏輯鏈路和物理鏈路之間的通道進行控制和協調,可以連接各種不同物理媒介。MAC的標準由IEEE802工作組制定。
IEEE 802.3關于MAC子層功能的定義包括2個方面:
(1) 數據的封裝、解封裝(發送、接收):包括成幀(幀定界、同步)、尋址(處理原地址和目的地址)、校驗(檢測物理層的傳輸錯誤)。
(2) 媒體體訪問的管理:包括介質分配(避免沖突產生)、競爭解決(沖突的處理)。
1.3 MAC對以太網工作方式的不同處理
MAC本身并不會接收和發送網絡數據,而只是對物理層的接收和發送的行為進行控制。物理層是真正實現數據收發功能的地方,但他不會對數據進行任何區分和處理,當發現網絡上有數據,他就把數據從網絡上取下來送給MAC,當MAC有數據給他時,他就把數據放到網絡上。MAC的作用是把物理層送上來的數據進行區分,如果數據包的目的地址是本機,就把數據包適當處理后提交給上層協議,如果不是就丟棄該數據包,在發送時,MAC在待發送的數據包上加一些信息后直接交給物理層。實際上MAC和PHY(物理層)之間的接口是標準的,不管是什么物理網絡,MAC都可以通過標準接口對物理層的行為進行控制,而且一個MAC可以同時管理多個PHY的行為。
以太網的工作方式有半雙工和全雙工2種。MAC針對以太網的不同工作方式有不同的處理方式。
在半雙工工作方式下,MAC的工作遵循CSMA/CD(載波偵聽/沖突檢測)協議。協議規定在MAC開始向物理層傳輸數據之前,MAC進行載波偵聽,如果物理網路上有載波,說明有數據正在傳輸,本地數據必須要等待,當偵聽到載波消失,本地數據就可以準備發送,但GSMA/CD協議規定2幀數據之間必須有inter-FrameGap或interFrameSpacing,以便使整個網路上的其他設備有足夠的時間恢復狀態。所以載波消失后還要等待interFrameGap的時間,當inter-FrameGap結束而且其間一直沒有載波時,數據就可以開始發送,如果在interFrameGap其間偵聽到載波信號,本地數據重新開始等待過程。
在數據向物理層傳輸的過程中,網絡上可能會同時出現2組數據在傳輸,當兩組數據在網路上相遇時,就發生沖突(collision),MAC檢測到沖突后,判別沖突的類型:
(1) normal collision:沖突發生在以太網幀的前512 b內;
(2) late collision:突沖發生在以太網幀的512 b之后;
當發生normal collision時,就需要back off,等待數據重傳,back off實際上是一個等待的過程,等待時間的算法簡稱BEB算法(Truncated Binary Exponential Backoff)。更詳細說明可參考文獻[1]。
在全雙工工作方式下,MAC的工作方式更簡單,只需要完成數據的封裝、解封裝。不需要載波偵聽和沖突檢測。
在點對點通訊的環境下,A,B之間進行通信,當A的數據傳送很快,造成B出現擁塞狀況的時候,B可以向A發送一個暫停幀,要求A暫停發送數據,A收到暫停幀后,就停止數據發送,暫停的時間有暫停幀中的字段決定。
2 FPGA的實現分析
FPGA實現百兆以太網MAC前,需要仔細分析IEEE 802.3協議所述內容,明確設計的目標設備需要支持的以太網MAC的相對應功能,MAC功能中需要FPGA實現的功能分解如下:
(1) 以太網成幀,同步,按照相應接口時序和PHY互連;
(2) 原地址、目的地址字段提取分析;
(3) 實現CRC校驗功能,對接收校驗錯包丟棄;
(4) 實現對接收錯誤包的丟棄(錯誤包:超長包、超短包、字節不對齊包);
(5) 按照相應標準實現RMON(以太網包內容監控);
(6) 對PHY器件的管理(MDC,MDIO);
(7) 復位和中斷的功能,提供完整的復位功能,實現對異常的中斷上報;
(9) 速率和雙工模式的選擇功能;兼容10 M的工作方式;
(9) 兼容CSMA/CD協議,實現CSMA/CD協議的相關功能,實現沖突和競爭的解決,提供相關寄存器設計(半雙工工作方式適用);
(10) 以太網流控幀設計(點對點工作方式適用)。
針對于特殊的系統應用,可以只實現以上10項功能中的一部分。以下是FPGA實現百兆以太網MAC的具體應用舉例,實現的模塊框圖:

其中 TX Ethernet MAC(以太網發送部分MAC)、Flow Control Module(以太網流量控制模塊)和RX Ethernet MAC(以太網接收部分MAC)是組成MAC的基本部件。通過MAC內部狀態轉移圖的繪制、分析有助于更好地實現FPGA的狀態機設計。以太網發送部分MAC內部狀態轉移圖如圖3所示:

以太網接收部分MAC內部狀態轉移圖如圖4所示。
可以通過狀態轉移圖完成TX Ethernet MAC(以太網發送部分MAC)和RX Ethernet MAC(以太網接收部分MAC)的詳細設計實現。
3 PCB設計的注意事項
完成了FPGA設計之后,需要具體在目標器件上做功能的驗證,選用相應接口的以太網PHY和FPGA接口,完成百兆以太網接入設備的硬件實現,需要注意以下PCB設計的事項:以太網接口信號是否完整。是否滿足接口信號布線要求;電源、時鐘晶振設計是否滿足芯片要求;是否滿足差分信號布線要求;接口EMC器件選擇是否正確;關鍵信號是否埋入內層走線,遠離干擾;以太網的差分信號線是否滿足阻抗匹配的要求(100 Ω±10%的要求);
更詳細的說明見參考文獻[2,3]。
4 結 語
顯然,使用FPGA實現以太網MAC有其非常實用的一面,能夠實現硬件系統多路多端口的以太網接入,在自行開發的嵌入式處理器硬件設計中加入FPGA的以太網MAC從而能夠對外提供以太網接入功能。

參 考 文 獻
[1]Carrier Sense.Multiple Access with Collision Detect(CSMA/CD) Access method and Physical Layer Specification.IEEE Std802.3,2000.
[2]Intel440 Multiport 10/100 Mb/s Ethernet Controller.Intel 440 Datasheet Order Number:278160-007,2001.
[3] Benchmarking.Terminology for LAN Switching Devices Network Working Group R.Mandeville Request for Comments: 2285 European Network Laboratories Category: Informational,1998.
[4][美]Gilbert Held.以太網[M].3版.戴志濤,鄭巖,譯.北京:人民郵電出版社,1999.
[5]劉華珠,黃海云,陳雪芳,等.以太網橋接專用集成電路的實現[J].現代電子技術,2005,28(8):94-96.