《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 基于FPGA的Ethernet解包電路

基于FPGA的Ethernet解包電路

2009-01-12
作者:周 飚1, 謝曉陽2

??? 摘? 要: 針對傳統微處理器平臺中存在的接口速率瓶頸問題,提出了基于現場可編程門陣列(FPGA) 的以太網解包電路的硬件實現方法。主要介紹了接收數據幀的實現方法,該設計具有通用性好、可擴展性強以及方便易行等優點, 為高速數據采集系統的網絡化提供了很好的解決方案。?

??? 關鍵詞: 解包; FPGA; 以太網

?

??? 傳統以PC為中心的互聯網應用現已開始轉向以嵌入式設備為中心。據網絡專家預測,將來在互聯網上傳輸的信息中,有70%來自小型嵌入式系統。因此,對嵌入式系統接入Internet 網絡的研究是有必要的。?

??? 一般情況下,以太網卡用普通的MCU可以完成數據的接收/發送任務[1]。但當系統中要求接收/發送的數據特別多時,僅僅依靠普通MCU的資源往往難以完成任務。此時一般只能采取多MCU聯機處理模式,或者依靠其它芯片擴展來完成任務。這樣不僅增加了大量的外部電路和系統成本,而且大大增加了系統的復雜性。?

??? 利用FPGA的I/O端口多,而且可以自由編程定義其功能的特點,配以Verilog HDL編寫的內部執行程序就可以完成其功能。代碼執行是按照并行處理的,而且FPGA硬件的速度是ns級的,所以在高速的數據采集和接收的過程中具有重大意義。?

??? 本文根據IEEE 802.3數據幀格式在MII接口提供數據的情況下,利用FPGA設計完成整個數據包的接收過程。?

1 相關理論?

??? 以太網是在 20 世紀 70 年代研制開發的一種基帶局域網技術,使用同軸電纜作為網絡媒體,采用載波多路訪問和沖突檢測(CSMA/CD)[2]機制,數據傳輸速率達到10Mb/s。但是如今以太網更多地被用來指各種采用CSMA/CD技術的局域網。以太網的幀格式與IP是一致的,特別適合于傳輸 IP 數據。?

1.1 以太網MAC子層協議?

??? IEEE 802協議標準系列中,數據鏈路層包括邏輯鏈路控制(LLC)子層和媒體訪問控制(MAC) 子層。其中MAC位于LLC和物理層之間,它使LLC 適應于不同的媒體訪問技術和物理媒體。MAC單獨作為一個子層,就不會因為媒體訪問方法的改變而影響較高層次的協議。MAC由數據拆裝和媒體訪問管理兩個模塊組成,完成數據幀的封裝、解封、發送和接收功能。以太網數據幀封裝格式如圖1所示,其中目的地址、源地址、長度/類型和數據4個字段由上一層協議模塊生成。傳送數據幀時,數據封裝模塊自動在待傳輸數據前面添加7個字節的前導碼和1個字節的定界符,并在數據傳送結束時加發4個字節的循環冗余校驗碼,如果數據長度小于46字節,則會自動進行數據填充以達到要求的最短長度。接收數據幀時,數據拆裝模塊將自動丟棄前導碼和定界符2個字段。?

?

?

1.2 CSMA/CD協議?

??? 媒體訪問管理模塊主要實現CSMA/CD(Carrier Sense Multiple Access with Collision Detection)協議[4]。CS2MA/CD是一種分布式介質訪問控制協議,使網中的多個站(節點) 可以共享傳輸介質。發送數據幀時,節點首先進行載波監聽,當介質空閑時開始發送幀。如果在傳輸過程中與其他節點產生沖突,則正在傳輸的每個節點必須發出32bit大小的阻塞信號來加強沖突,以便通知總線上各個站點已發生沖突,然后隨機延時一段時間重新爭用介質,再重新傳送數據幀。?

??? 以太網用載波偵聽多路訪問/沖突檢測(CSMA/CD)作為它的媒體訪問控制協議,CSMA/CD定義了以太網節點為傳輸數據如何獲得對網絡媒體的訪問。?

1.3 介質無關接口(MII)?

??? MII是一個用于互連控制器和收發器的全新介質無關接口,它是100Mb/s快速以太網開發工作的一個組成部分。此接口提供了新的物理連接機制以及控制器和收發器的功能劃分。該接口主要由發送信號、接收信號、以太網控制信號和管理信號組成。?

1.4 CRC校驗?

??? 利用CRC進行檢錯的過程可簡單描述為:在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的r位監督碼(CRC碼),附在原始信息后邊,構成一個新的二進制碼序列數共k+r位,然后發送出去。在接收端,根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。?

2 解包電路的設計?

??? 根據以太網的工作原理,其接收數據過程如下:?

??? (1)網上的站點,若不發送幀,都處在接收狀態,只要介質上有幀在傳輸,這些站點都會接收幀;?

??? (2)接收幀后,首先判斷是否為幀碎片(碰撞),若是,則丟棄;?

??? (3)識別目的MAC地址,若不是,本站地址則丟棄;?

??? (4)判斷幀校驗序列是否有效,若無效則傳輸出錯,丟棄;?

??? (5)判斷類型/長度是否正確,若正確,接收成功。?

??? 其流程圖如圖2所示。 ?

?

?

??? 該解包電路主要完成數據幀的接收, 即從物理層PHY芯片接收4 bit半位元數據,將其轉化成以字節為單位的數據并存貯在接收數據緩沖區, 按照設計要求,采用層次結構化的設計方法,可將該電路劃分為狀態機模塊、計數器模塊、地址判斷模塊和CRC校驗模塊。其模塊結構圖如圖3所示。?

?

?

2.1 狀態機模塊?

??? 接收控制狀態機是整個接收模塊的核心,負責管理各個功能子模塊,檢測總線及實現接收數據幀的時序。其接口電路如圖4所示。?

?

?

??? 圖中,MRxClk、Reset、MRxDV、Transmitting是MII接口提供的時鐘、復位、數據有效和無發送沖突信號。MRxDEqA判斷接收到的數據是否為1010, MRxDEqB判斷能否進入接收數據狀態,它們用來對狀態機進行相應的控制。ByteCntSmall7是在StatePreamble狀態下檢測到傳輸數據為A能否跳到StateSFD狀態的條件(不為1即跳轉)。ByteCntMaxFrame用來判斷接收的字節是否超出最大字節數,如果為1即由當前狀態跳轉到StateDrop。?

??? 根據狀態機模塊的功能,可將其狀態機劃分為以下狀態: ?

??? StateIdle:??? ?線路空閑狀態?

??? StatePreambl:? 前導字符檢測狀態?

??? StateSFD:????? 起始符檢測狀態?

??? StateData0: ?? 接收低4位狀態?

??? StateData1: ?? 接收高4位狀態?

??? StateDrop: ??? 數據丟棄狀態;?

??? 接收模塊狀態轉移圖如圖5所示。通常接收模塊處于StateIdle 狀態并監聽總線的狀態,當檢測到以太網幀時自動進入StateSFD 狀態,此時如果接收到以太網數據幀的幀定界符,并且與前一個數據幀之間的時間間隔大于最小幀間間隙,則接收模塊進入數據接收狀態開始接收數據。處于StateData0 狀態時接收字節的低4 位,而處于StateDatal 狀態時接收字節的高4 位,將接收到的完整字節數據存儲到接收數據緩沖區。如果接收的數據字節數超過允許的最大幀長度,則接收模塊進入StateDrop 狀態,此時丟棄后面的數據。當全部數據傳輸完畢即總線處于空閑時,接收模塊重新處于StateIdle 狀態,等待接收下一個數據幀。?

?

?

??? 其狀態轉換條件的Verilog[5]描述如下:?

??? assign StartIdle =~MRxDV & (StateDrop | StatePreamble | StateSFD | (|StateData));?

??? assign StartPreamble = MRxDV & ~MRxDEqA & (StateIdle & ~Transmitting);?

??? assign StartSFD = MRxDV & MRxDEqA & (StateIdle & ~Transmitting | StatePreamble) &~ByteCntSmall7;?

??? assign StartData0 = MRxDV &(StateSFD & MRxDEqB & IFGCounterEq24 | StateData1);?

??? assign StartData1 = MRxDV & StateData0 & (~ByteCntMaxFrame);?

??? assign StartDrop = MRxDV & ( Transmitting | StateSFD & ~IFGCounterEq24 &? MRxDEqB| StateData0 & ByteCntMaxFrame);?

2.2 計數器模塊?

??? 計數器模塊用以檢測接收到的數據幀與前一幀之間是否滿足最小幀間間隔的要求,如果不滿足則將它丟棄。 接收字節計數器用以存儲接收幀的字節長度,判斷接收幀長度是否滿足要求(在最小幀長度與最大幀長度之間)。其接口電路如圖6所示。?

?

?

??? 該模塊主要完成三個計數功能:(1)是否連續檢測到7個以上的1010;(2)接收到組字節數據計數器;(3)連續兩個數據幀之間的間隔時間與最短時間大小關系。?

??? MRxDEqA是判斷接收到的數據是否為1010,如果檢測正確即可進行計數來判斷能否跳轉到下一狀態StateSFD; MRxDEqB用來判斷能否進入接收數據狀態StateData0;MaxFL是給定能接收的數據的最大數。?

??? 輸出信號ByteCntEq2、ByteCntEq3、ByteCntEq4、ByteCntEq5、ByteCntEq6、ByteCntEq7對接收的前6個字節計數來進行相應的地址判斷操作。?

2.3 地址判斷模塊?

??? 地址判斷模塊用以檢查幀的目的地址字段是否與本站地址相匹配,如果不匹配,則說明不是發送給本站的而將它丟棄掉。其接口電路如圖7所示。?

?

?

??? 地址字段包括目的地址字段DA和源地址字段SA。目的地址字段占6個字節,用于標識接收站點的地址,它可以是單個的地址,也可以是組地址或廣播地址。DA字段最高位為“0”表示單個的地址,該地址僅指定網絡上某個特定站點;DA字段最高位為“1”、其余位不為全“1”表示組地址,該地址指定網絡上給定的多個站點;DA字段為全“1”,則表示廣播地址,該地址指定網絡上所有的站點。源地址字段也占2個或6個字節,但其長度必須與目的地址字段的長度相同,它用于標識發送站點地址。在6字節地址字段中,可以利用其48位中的次高位來區分是局部地址還是全局地址。?

???? ByteCntEq2、ByteCntEq3、ByteCntEq4、ByteCntEq5、ByteCntEq6和ByteCntEq7依次對應接收到的1~6個字節。即目的地址通過對這6個字節和本地地址的比較可以判斷是否接收這個數據。RxEndFrm是數據接收結束信號,應對地址比較結果進行保持到數據接收結束為止。MRxAddressValid是地址比較的結果。?

2.4 CRC校驗模塊?

??? 該模塊主要完成4位并行數據的CRC-32校驗,所進行的是無延遲的方法。IEEE802.3協議規定,以太網的FES(幀校驗序列)域以CRC-32為基礎[6],并且在編碼時首先將信息碼的最初4個字節取反碼,對目的地址、源地址、長度/類型域、數據域、PAD域求出基本CRC-32碼之后再將結果取反,最后的結果才是FCS。其接口電路如圖8所示。?

?

?

3 解包電路功能仿真與綜合結果?

??? 本文采用Altera 公司的Flex系列Flex6000 芯片,整個設計全部采用Verilog HDL 硬件描述語言來實現,并在Active HDL 的設計平臺上完成整個模塊的設計,在Quartus進行綜合布局布線仿真。其仿真結果如圖9、10、11所示。?

?

?

?

?

??? 從圖9可以看出,接收數據時狀態機的變化情況,以及接收數據RxData和開始的數據位置。??????????? ?

??? 從圖10可以看出地址比較的結果,當地址為廣播時,此時接收數據。單一地址情況如上圖,故不列出。?

??? 從圖11可以看出地址比較不一致以及進行的CRC校驗結果。?

??? 仿真結果表明,各信號的邏輯功能和時序配合完全達到了設計要求。?

??? 本文介紹了一種基于FPGA 的以太網MAC 子層接收數據的設計方法,仿真和綜合結果表明該解包電路各項功能均達到預期要求。通過本模塊可以簡單方便地設計發送控制模塊以實現小型嵌入式系統的Internet 網絡接口,如果再結合基于FPGA實現的TCP/IP協議棧及其他輔助功能模塊,不僅可以使小型嵌入式系統接入網絡更加簡單,而且系統的集成度、穩定性將進一步提高。?

參考文獻?

[1] 王蘭,王景存,楊君.單片機系統接入Internet方法的探討[J]. 電子技術,2002,29(8):37-39.?

[2] IEEE Std 802. 3, 2000 Edition, Part 3: Carrier sense?multiple access with collision detection(CSMA/CD) accessmethod and physical layer apecifications S.?

[3] 曹政,李磊,陳明宇. 萬兆以太網媒體訪問控制層研究[J]. 計算機工程,2007(17):31-33?

[4] 謝希仁.計算機網絡(第4版)[M]. 北京:電子工業出版社,2003.?

[5] BHASKER J . Verilog HDL 硬件描述語言[M]. 北京:機械工業出版社,2005.?

[6] 郭熙業,蘇紹璟,王躍科.并行CRC-32校驗碼生成算法研究及其實現[J].電子技術應用,2007,33(5):121-123.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 久久免费黄色 | 精品在线网站 | 毛片图片 | 免费观看欧美一级片 | 国产成人v视频在线观看 | 日韩一级欧美一级毛片在 | 成人高清视频免费观看 | 亚洲三级在线看 | 亚洲国产精品一区二区九九 | 黄色网址免费在线 | 农村寡妇野外情一级毛片 | 高清国产在线 | 成人区精品一区二区不卡亚洲 | 澳门一级特黄真人毛片 | 国产丶欧美丶日韩丶不卡影视 | 一级美女片 | 欧美日韩99 | 五月天激激婷婷大综合蜜芽 | 女人张开腿让男人桶个爽 | 欧美一级毛片怡红院 | 国产日产精品_国产精品毛片 | 久久综合色88 | 特级一级全黄毛片免费 | 三级黄色在线播放 | 全部孕妇毛片丰满孕妇孕交 | 中字毛片 | 久久精品成人免费网站 | 免费黄色网址在线播放 | 日本人视频网站一 | a级毛片毛片免费观看久潮喷 | 国产成人久久精品一区二区三区 | 啪视| 九九精品激情在线视频 | 国产精品久久国产三级国不卡顿 | 日本一级毛片视频无遮挡免费 | 亚洲国产精品欧美日韩一区二区 | 欧美三级日韩三级 | 女人张腿让男桶免费视频网站 | 日韩高清成人毛片不卡 | 精品久久久久久亚洲 | 日本精品一区二区三区在线视频一 |