摘 要:百兆MAC(以太網(wǎng)媒體訪問控制)是以太網(wǎng)IEEE 802.3協(xié)議規(guī)定的數(shù)據(jù)鏈路層的一部分,使用FPGA替代ASIC,實現(xiàn)以太網(wǎng)MAC功能非常實用。能夠?qū)崿F(xiàn)硬件系統(tǒng)多路多端口的以太網(wǎng)接入,并在自行開發(fā)需要以太網(wǎng)接入的嵌入式處理器設(shè)計中得到應(yīng)用。具體探討以太網(wǎng)MAC的功能定義,使用FPGA實現(xiàn)以太網(wǎng)MAC的方法,對以太網(wǎng)的相關(guān)應(yīng)用設(shè)計具有指導(dǎo)作用。
關(guān)鍵詞:以太網(wǎng);媒體訪問控制;現(xiàn)場可編程門陣列;ASIC
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼: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
以太網(wǎng)經(jīng)過幾十年來的飛速發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴大,帶寬日益增長,應(yīng)用服務(wù)也不斷增加。多端口以太網(wǎng)的接入應(yīng)用也在不斷的增長。其中MAC(百兆以太網(wǎng)媒體訪問控制)的實現(xiàn)功能尤為重要,百兆MAC(以太網(wǎng)媒體訪問控制)是以太網(wǎng)IEEE 802.3協(xié)議規(guī)定的數(shù)據(jù)鏈路層的一部分,是連接以太網(wǎng)物理層和網(wǎng)絡(luò)層的中間協(xié)議層,一般在系統(tǒng)中,牽涉到的MAC接口比較多或者有特殊要求的,為了減少硬件設(shè)計上的芯片個數(shù)和簡化連接關(guān)系,增加集成度,會將以太網(wǎng)MAC接口作為一個子系統(tǒng)集成到ASIC/FPGA芯片中,增加穩(wěn)定性,降低成本。一般硬件設(shè)計上是由ASIC(專用集成電路芯片)實現(xiàn),本文從MAC協(xié)議的基本內(nèi)容介紹出發(fā),討論使用FPGA實現(xiàn)百兆MAC的技術(shù)。
1 MAC的介紹
1.1 以太網(wǎng)的幀格式
以太網(wǎng)的幀格式如圖1所示。
(1) Preamble:該字段為7個10101010b,數(shù)值沒有實際的意義,只是讓物理層做好接收數(shù)據(jù)的準(zhǔn)備。
(2) SFD(Start Framc Delimiter):緊跟著Preamble,固定值10101011b,表示數(shù)據(jù)幀開始。
(3) DA(Dest.MAC Address):以太網(wǎng)幀的目的地址。
(4) SA(Source MAC Address):以太網(wǎng)幀的源地址。
(5) Type/Length:當(dāng)該值小于等于1 500時表示數(shù)據(jù)段的長度,當(dāng)大于1 500時表示上層協(xié)議的類型。
(6) Data:包括(MAC Client Data)上層協(xié)議的數(shù)據(jù)字段;(Pad)填充字段;當(dāng)MAC Client Data的長度小于46 b時,由于規(guī)定了最小以太網(wǎng)幀長度,所以必須對MAC Client Data進(jìn)行填充(padding),使其達(dá)到46 b,填充的內(nèi)容任意。
(7) FCS(Frame Check Sequence):CRC字段,32 b CRC校驗碼由802.3規(guī)定的校驗公式?jīng)Q定,作用范圍是從DA字段到Pad字段(如果有的話)。
1.2 MAC子層的協(xié)議功能定義
MAC是為了滿足網(wǎng)絡(luò)傳輸而發(fā)展起來,他是構(gòu)成以太網(wǎng)必備的條件之一。MAC在7層ISO標(biāo)準(zhǔn)中屬于數(shù)據(jù)鏈路層,他對邏輯鏈路和物理鏈路之間的通道進(jìn)行控制和協(xié)調(diào),可以連接各種不同物理媒介。MAC的標(biāo)準(zhǔn)由IEEE802工作組制定。
IEEE 802.3關(guān)于MAC子層功能的定義包括2個方面:
(1) 數(shù)據(jù)的封裝、解封裝(發(fā)送、接收):包括成幀(幀定界、同步)、尋址(處理原地址和目的地址)、校驗(檢測物理層的傳輸錯誤)。
(2) 媒體體訪問的管理:包括介質(zhì)分配(避免沖突產(chǎn)生)、競爭解決(沖突的處理)。
1.3 MAC對以太網(wǎng)工作方式的不同處理
MAC本身并不會接收和發(fā)送網(wǎng)絡(luò)數(shù)據(jù),而只是對物理層的接收和發(fā)送的行為進(jìn)行控制。物理層是真正實現(xiàn)數(shù)據(jù)收發(fā)功能的地方,但他不會對數(shù)據(jù)進(jìn)行任何區(qū)分和處理,當(dāng)發(fā)現(xiàn)網(wǎng)絡(luò)上有數(shù)據(jù),他就把數(shù)據(jù)從網(wǎng)絡(luò)上取下來送給MAC,當(dāng)MAC有數(shù)據(jù)給他時,他就把數(shù)據(jù)放到網(wǎng)絡(luò)上。MAC的作用是把物理層送上來的數(shù)據(jù)進(jìn)行區(qū)分,如果數(shù)據(jù)包的目的地址是本機,就把數(shù)據(jù)包適當(dāng)處理后提交給上層協(xié)議,如果不是就丟棄該數(shù)據(jù)包,在發(fā)送時,MAC在待發(fā)送的數(shù)據(jù)包上加一些信息后直接交給物理層。實際上MAC和PHY(物理層)之間的接口是標(biāo)準(zhǔn)的,不管是什么物理網(wǎng)絡(luò),MAC都可以通過標(biāo)準(zhǔn)接口對物理層的行為進(jìn)行控制,而且一個MAC可以同時管理多個PHY的行為。
以太網(wǎng)的工作方式有半雙工和全雙工2種。MAC針對以太網(wǎng)的不同工作方式有不同的處理方式。
在半雙工工作方式下,MAC的工作遵循CSMA/CD(載波偵聽/沖突檢測)協(xié)議。協(xié)議規(guī)定在MAC開始向物理層傳輸數(shù)據(jù)之前,MAC進(jìn)行載波偵聽,如果物理網(wǎng)路上有載波,說明有數(shù)據(jù)正在傳輸,本地數(shù)據(jù)必須要等待,當(dāng)偵聽到載波消失,本地數(shù)據(jù)就可以準(zhǔn)備發(fā)送,但GSMA/CD協(xié)議規(guī)定2幀數(shù)據(jù)之間必須有inter-FrameGap或interFrameSpacing,以便使整個網(wǎng)路上的其他設(shè)備有足夠的時間恢復(fù)狀態(tài)。所以載波消失后還要等待interFrameGap的時間,當(dāng)inter-FrameGap結(jié)束而且其間一直沒有載波時,數(shù)據(jù)就可以開始發(fā)送,如果在interFrameGap其間偵聽到載波信號,本地數(shù)據(jù)重新開始等待過程。
在數(shù)據(jù)向物理層傳輸?shù)倪^程中,網(wǎng)絡(luò)上可能會同時出現(xiàn)2組數(shù)據(jù)在傳輸,當(dāng)兩組數(shù)據(jù)在網(wǎng)路上相遇時,就發(fā)生沖突(collision),MAC檢測到?jīng)_突后,判別沖突的類型:
(1) normal collision:沖突發(fā)生在以太網(wǎng)幀的前512 b內(nèi);
(2) late collision:突沖發(fā)生在以太網(wǎng)幀的512 b之后;
當(dāng)發(fā)生normal collision時,就需要back off,等待數(shù)據(jù)重傳,back off實際上是一個等待的過程,等待時間的算法簡稱BEB算法(Truncated Binary Exponential Backoff)。更詳細(xì)說明可參考文獻(xiàn)[1]。
在全雙工工作方式下,MAC的工作方式更簡單,只需要完成數(shù)據(jù)的封裝、解封裝。不需要載波偵聽和沖突檢測。
在點對點通訊的環(huán)境下,A,B之間進(jìn)行通信,當(dāng)A的數(shù)據(jù)傳送很快,造成B出現(xiàn)擁塞狀況的時候,B可以向A發(fā)送一個暫停幀,要求A暫停發(fā)送數(shù)據(jù),A收到暫停幀后,就停止數(shù)據(jù)發(fā)送,暫停的時間有暫停幀中的字段決定。
2 FPGA的實現(xiàn)分析
FPGA實現(xiàn)百兆以太網(wǎng)MAC前,需要仔細(xì)分析IEEE 802.3協(xié)議所述內(nèi)容,明確設(shè)計的目標(biāo)設(shè)備需要支持的以太網(wǎng)MAC的相對應(yīng)功能,MAC功能中需要FPGA實現(xiàn)的功能分解如下:
(1) 以太網(wǎng)成幀,同步,按照相應(yīng)接口時序和PHY互連;
(2) 原地址、目的地址字段提取分析;
(3) 實現(xiàn)CRC校驗功能,對接收校驗錯包丟棄;
(4) 實現(xiàn)對接收錯誤包的丟棄(錯誤包:超長包、超短包、字節(jié)不對齊包);
(5) 按照相應(yīng)標(biāo)準(zhǔn)實現(xiàn)RMON(以太網(wǎng)包內(nèi)容監(jiān)控);
(6) 對PHY器件的管理(MDC,MDIO);
(7) 復(fù)位和中斷的功能,提供完整的復(fù)位功能,實現(xiàn)對異常的中斷上報;
(9) 速率和雙工模式的選擇功能;兼容10 M的工作方式;
(9) 兼容CSMA/CD協(xié)議,實現(xiàn)CSMA/CD協(xié)議的相關(guān)功能,實現(xiàn)沖突和競爭的解決,提供相關(guān)寄存器設(shè)計(半雙工工作方式適用);
(10) 以太網(wǎng)流控幀設(shè)計(點對點工作方式適用)。
針對于特殊的系統(tǒng)應(yīng)用,可以只實現(xiàn)以上10項功能中的一部分。以下是FPGA實現(xiàn)百兆以太網(wǎng)MAC的具體應(yīng)用舉例,實現(xiàn)的模塊框圖:
其中 TX Ethernet MAC(以太網(wǎng)發(fā)送部分MAC)、Flow Control Module(以太網(wǎng)流量控制模塊)和RX Ethernet MAC(以太網(wǎng)接收部分MAC)是組成MAC的基本部件。通過MAC內(nèi)部狀態(tài)轉(zhuǎn)移圖的繪制、分析有助于更好地實現(xiàn)FPGA的狀態(tài)機設(shè)計。以太網(wǎng)發(fā)送部分MAC內(nèi)部狀態(tài)轉(zhuǎn)移圖如圖3所示:
以太網(wǎng)接收部分MAC內(nèi)部狀態(tài)轉(zhuǎn)移圖如圖4所示。
可以通過狀態(tài)轉(zhuǎn)移圖完成TX Ethernet MAC(以太網(wǎng)發(fā)送部分MAC)和RX Ethernet MAC(以太網(wǎng)接收部分MAC)的詳細(xì)設(shè)計實現(xiàn)。
3 PCB設(shè)計的注意事項
完成了FPGA設(shè)計之后,需要具體在目標(biāo)器件上做功能的驗證,選用相應(yīng)接口的以太網(wǎng)PHY和FPGA接口,完成百兆以太網(wǎng)接入設(shè)備的硬件實現(xiàn),需要注意以下PCB設(shè)計的事項:以太網(wǎng)接口信號是否完整。是否滿足接口信號布線要求;電源、時鐘晶振設(shè)計是否滿足芯片要求;是否滿足差分信號布線要求;接口EMC器件選擇是否正確;關(guān)鍵信號是否埋入內(nèi)層走線,遠(yuǎn)離干擾;以太網(wǎng)的差分信號線是否滿足阻抗匹配的要求(100 Ω±10%的要求);
更詳細(xì)的說明見參考文獻(xiàn)[2,3]。
4 結(jié) 語
顯然,使用FPGA實現(xiàn)以太網(wǎng)MAC有其非常實用的一面,能夠?qū)崿F(xiàn)硬件系統(tǒng)多路多端口的以太網(wǎng)接入,在自行開發(fā)的嵌入式處理器硬件設(shè)計中加入FPGA的以太網(wǎng)MAC從而能夠?qū)ν馓峁┮蕴W(wǎng)接入功能。
參 考 文 獻(xiàn)
[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.以太網(wǎng)[M].3版.戴志濤,鄭巖,譯.北京:人民郵電出版社,1999.
[5]劉華珠,黃海云,陳雪芳,等.以太網(wǎng)橋接專用集成電路的實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,28(8):94-96.