




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于FPGA的千兆以太網控制器的設計摘要:網絡正在成為當今社會通信的骨干力量,現代化的設備迫切需要解決如何簡捷高速的接入問題,本文描述了基于FPGA的嵌入式技術。千兆以太網(Gigabit Ethernet)技術目前被廣泛應用于局域網中,千兆以太網二層(MAC層)交換芯片是千兆以太網中的關鍵芯片。文章介紹了一種由FPGA實現的以太網控制器的設計方法,該控制器能支持1000 Mbps的傳輸速率以及半雙工和全雙工模式,并且給出了仿真驗證結果。結果表明,該設計方案是可行的。關鍵詞:千兆以太網;FPGA;以太網控制器A Design of Controller for Gigabit Ethernet
2、 Based on FPGADeng Zhi(Huazhong University of Science and Technology, Department of Electronic Science and Technology, Wuhan 430074 China)Abstract: Network becomes the foundation of modern common communications, its urgent to solve the access to the system with the Ethernet simply and efficiently. T
3、he paper deals with the technology of embedded system based on the FPGA. Gigabit Ethernet technology is widely used in Local Area Network (LAN) recently, Layer 2 (MAC) switch chip is the key chip based on which Gigabit Ethernet technology can be used. In this paper, a method that implements Gigabit
4、Ethernet controller on FPGA is introduced, which can support 1000Mbps transmission rate with half-duplex and full-duplex mode, and the simulation and verification results are given.Key words: Gigabit Ethernet; FPGA; Ethernet controller目錄1 引言22 千兆以太網技術簡介33 千兆以太網的工作原理44 千兆以太網控制器的FPGA實現65 千兆以太網的具體設計方案8
5、5.1 MAC發送模塊85.2 MAC接收模塊125.3 MAC的其它模塊146 仿真結果187 結束語208 參考文獻201 引言目前,IP電視、視頻流、網絡游戲以及多媒體互動等業務逐步成為關注的焦點。然而高清晰度的交互視頻是帶寬的巨大消耗者, 進一步提升接入帶寬已經迫在眉睫。FPGA產品設計完善,可以直接編程。還具備可定制的靈活性,避免了較高的NRE(不可回收)成本。這都使得基于SOPC的嵌入式開發逐漸成為新技術發展的最前沿。嵌入式系統不同于通用型PC,具有以下特點:低功耗、體積小、集成度高;嚴格約束,嵌入式系統的硬件和軟件都必須高效率地設計;實時性,有較短的中斷響應時間,從而使內部的代碼
6、和實時內核心的執行時間減少到最低限度。目前,以太網802.3協議和TCP/IP協議是現今嵌入式系統接入Internet的首選協議。而以太網(Ethernet)的核心思想是多用戶使用共享的公共傳輸信道,它通過帶沖突檢測的載波偵聽多路訪問協議(CSMA/CD)來控制對介質的訪問。本文給出了完全用FPGA的控制邏輯來實現嵌入式系統Internet接入中的底層以太網控制器的設計方法。并最終設計出符合IEEE 802.3標準的控制器,從而實現了1000 Mbps兩種傳輸速率以及半雙工和全雙工兩種工作模式,并可通過IEEE802.3標準定義的介質獨立接口(MII)與以太網物理層芯片相連接。2 千兆以太網技
7、術簡介以太網技術是當今應用廣泛的網絡技術,千兆以太網技術繼承了以往以太網技術的許多優點,同時又具有諸多新特性,例如傳輸介質包括光纖和銅纜,使用8B/10B的編解碼方案,采用載波擴展和分組突發技術等。正是因為具有良好的繼承性和許多優秀的新特性,千兆以太網已經成為目前局域網的主流解決方案1。千兆以太網利用原以太網標準所規定的全部技術規范其中包括CSMA/CD協議、以太網幀、全雙工、流量控制以及IEEE802.3 標準中所定義的管理對象。千兆以太網的關鍵技術是千兆以太網的 MAC 層和以太網接口的實現。隨著多媒體應用的普及,千兆以太網必然得到廣泛應用2。3 千兆以太網的工作原理本文介紹的千兆以太網交
8、換芯片按照 IEEE802.3標準實現了 8個獨立千兆端口之間的MAC幀交換,同時向下兼容10Mb/s 和100Mb/s的MAC幀交換。其最基本的工作原理可概括為 “學習轉發”。它包括“學習” 和“轉發”兩個部分。芯片中包含一個 MAC地址表,地址表的每個存儲單元為一條如表1所示的72比特的MAC地址索引信息。MAC地址表一共可以存儲4096條MAC地址索引信息。表1 MAC地址索引信息結構表71-535251-4948-10保留比特老化標志端口編號MAC地址有效標志端口接收到MAC幀后,提取MAC幀的源地址,并在表中查找與之對應的條目,如果沒有找到,就把源地址和接收到該幀的端口編號捆綁成一條
9、新的MAC地址索引信息,存儲到MAC地址索引表中,這個過程為“學習” 。通過學習,就可以知道主機的地址和端口的映射關系。有時還需要記錄VLAN和端口的對應信息,建立VLAN索引表。從端口接收到一個要求轉發的MAC幀后,提取MAC幀中的目的地址,并在MAC地址表中查找與之對應的條目,從中得到目的地址對應的端口號,將MAC幀轉發到相應的端口,這個過程為“轉發” 。芯片設計的關鍵技術在于MAC幀的幀頭信息提取和MAC地址表的管理。對于幀頭信息的提取包括判斷是以太網幀還是 802.3 幀,提取源地址和目的地址、VLAN信息和一些 IP幀頭信息,計算當前幀的優先級, 根據不同的幀頭信息進行相應的協議處理
10、等。為了實現 1000Mb/s的MAC幀交換,MAC地址表必須滿足三個要求:必須能在幾個時鐘周期內查找到MAC地址相應的端口號,以滿足千兆以太網需求的高吞吐量;必須及時 “學習” 到新 MAC幀的地址索引信息;老化掉長時間沒有訪問到的MAC地址索引信息。為了達到這些要求,本芯片中采用了HASH3算法。4 千兆以太網控制器的FPGA實現整個控制器的結構框圖如圖1所示,整個控制器由接口幀緩存、MAC幀處理模塊、交換處理模塊、內存管理模塊、寄存器以及 RS232 接口組成。芯片內部有一個容量為108k字節的雙端口SRAM,用于緩存接收到的MAC 幀,內存管理模塊負責該SRAM存儲空間的分配、 釋放和
11、讀寫控制。圖1 千兆以太網控制器結構框圖芯片內部核心部分工作時鐘頻率為125MHz,端口有可能會接在100Mb/s或10Mb/s的網段上,此時接口的工作時鐘為 25MHz,因此需要一個接口緩存模塊來緩存數據。 該模塊一般是FIFO。RS232 接口是芯片與用戶的接口,通過該接口,用戶可以讀取寄存器的值來了解芯片的工作狀態,可以配置寄存器來調整芯片的工作模式。交換處理模塊是整個芯片的核心模塊,幀頭信息提取和 MAC 地址表的管理都在這個模塊中實現,其結構框圖如圖2所示。幀頭信息分析模塊接收到 MAC幀處理模塊送來的幀頭信息后,提取出目的地址、源地址、VLAN以及IP頭中的優先級等信息,并將其轉發
12、到學習轉發控制模塊。并根據幀頭、幀尾以及幀有效信號產生幀狀態指示信號發送到端口記錄模塊。圖2 交換處理模塊結構框圖5 千兆以太網的具體設計方案以太網控制器的FPGA設計工作包括以太網MAC子層的FPGA設計、MAC子層與上層協議的接口設計以及MAC與物理層(PHY)的MII接口設計。圖3為MAC接口結構框圖。圖3 MAC接口結構框圖5.1 MAC發送模塊MAC發送模塊可將上層協議提供的數據封裝之后通過MII接口發送給PHY。發送模塊可接收主機接口模塊的數據幀開始和數據幀結束標志,并通過主機接口從外部存儲器中讀取要發送的數據,然后對數據進行封裝,然后通過PHY提供的載波偵聽和沖突檢測信號,在信道
13、空閑時通過MII接口將數據以4位的寬度發送給PHY,最后由PHY將數據發送到網絡上5。發送模塊由CRC生成模塊(crc_gen)、隨機數生成模塊(random_gen)、發送計數模塊(tx_cnt)和發送狀態機(tx_statem)模塊等四個子模塊組成。5.1.1 CRC生成模塊(crc_gen)該模塊用于計算發送數據的CRC值,并將CRC值添加到數據幀的幀校驗序列字段(FCS)內。為了提高效率,并考慮到MAC與PHY的數據通道為4位,設計時可采用4位并行CRC計算方法4,算法中可使用一個次態函數,并通過循環迭代來模擬移位操作。這樣,發送模塊就可以在邊發送數據到PHY的同時,一邊計算CRC,這
14、樣當數據發送完時,CRC值也計算完成了。5.1.2 隨機數生成模塊(random_gen)如在發送過程中檢測到沖突,發送模塊就先發送擁塞碼(jam),隨后停止發送。在下次重新發送之前,發送模塊會先執行一個后退(backoff)操作,即發送模塊等待一個半隨機(生成的隨機數有范圍限制)的時間之后再開始發送。該隨機數就是由隨機數生成模塊產生的,它采用經典的截斷二元指數后退算法,后退的時間是一個與發生沖突次數有關的隨機數,隨著沖突的次數增多,用于生成該隨機數的范圍也將逐漸增大,以減少沖突的概率。5.1.3 發送計數模塊(tx_cnt)發送計數模塊由半字節計數器(nibcnt)、字節計數器和重試次數計數
15、器(retrycnt)三個計數器組成。其中重試次數計數器(retrycnt)可對發送某個幀時產生沖突次數進行計數。當計數器的值達到最大重試次數時,它將放棄重試,并丟棄發送緩沖器內的數據。同時,重試計數器的值還被隨機數生成模塊用于計算下次重試之前需要后退(backoff)的時隙的個數。半字節計數器和字節計數器分別用于對發送過程中的半字節(bibble)和字節進行計數。字節計算器還可用于滯后沖突(late collision)和超長幀的判斷。當滯后沖突發生時,正在發送的數據將被丟棄。超長幀的判斷則是從對幀內容(包括FCS)進行字節計數,如果字節計數器的值大于最大有效幀的長度(1518個字節),發送
16、模塊就根據系統設置(是否支持超長幀)丟棄或發送。5.1.4 發送狀態機模塊(tx_statem)發送狀態機模塊是整個發送模塊的核心,主要用于控制整個發送過程。發送狀態機由I-dle_State、Preamble_State、Data0_State、Da-ta1_State、PAD_State、FCS_State、IPG_State、Jam_State、BackOff_State、Defer_State等十個狀態組成。其狀態轉移圖如圖4所示。圖4 發送狀態機的狀態轉移圖系統復位后,發送模塊即進入Defer_State狀態,并一直檢測載波偵聽(CarrierSense)信號。當載波偵聽信號變成無效
17、(表示信道空閑)時,狀態機進入IPG_State狀態。爾后,在等待一個幀間間隙之后,狀態機則進入Idle_State狀態。如果在幀間間隙的前2/3個周期檢測到信道忙信號,狀態機將重新回到Defer_State狀態。狀態機進入Idle_State狀態之后,發送模塊將檢測載波偵聽信號和主機接口的發送請求。若主機模塊請求發送,狀態機將進入Preamble_State狀態,發送模塊即通知PHY發送開始,同時開始發送前序碼(7個0x5),然后發送幀起始定界符(SFD,0xd)。狀態機進入Data0_State后,發送模塊將發送一個數據字節的低4位(LSB nibble),將當其進入Data1_State
18、狀態后,發送模塊則發送數據字節的高4位(MSBnibble)。隨后,狀態機一直在data0和data1之間循環,直到數據發送完畢。當還剩一個字節時,主機模塊將通過發送幀結束信號來通知發送模塊。如果數據幀的長度大于最小幀并且小于最大幀,狀態機就進入FCS_State狀態,此時發送模塊則將CRC生成模塊生成的CRC值添加到幀的FCS字段中并發送給PHY。幀發送完之后,狀態機進入Defer_State狀態,之后是IPG_State和Idle_State狀態。此后狀態機又回到初始狀態,以重新等待新的發送請求。在全雙工模式中發送幀時,不會進行延遲(defer),發送的過程中也不會產生沖突。此時,發送模塊
19、將忽略PHY的載波偵聽和沖突檢測信號。當然,幀與幀之間仍然需遵守幀間間隙的規則。因此,全雙工模式下的發送狀態機沒有Jam_State、BackOff_State、Defer_State三個狀態。5.2 MAC接收模塊MAC接收模塊負責數據幀的接收。當外部PHY將通信信道的串行數據轉換為半字節長的并行數據并發送給接收模塊后,接收模塊會將這些半字節數據轉換為字節數據,然后經過地址識別、CRC校驗、長度判斷等操作后,再通過主機接口寫入外部存儲器,并在主機接口模塊的接收隊列中記錄幀的相關信息。此外,接收模塊還負責前序碼和CRC的移除。接收模塊由CRC校驗模塊、地址識別模塊、接收計數器模塊和接收狀態機模
20、塊等四部分組成。接收模塊中的CRC校驗模塊可通過檢查輸入幀的CRC值來驗證幀的正確性。其算法與CRC生成模塊相同。地址識別模塊用于決定是否接收收到的幀,接收模塊首先接收輸入幀而不管目的地址,隨后由地址識別模塊檢查幀中的目的地址。若MAC被設置為混雜模式(Promiscuous mode)且目的地址為廣播地址,同時允許接收廣播幀,幀則被接收。否則,幀被丟棄。接收計數器模塊由字節計數器(Bytecnt)和幀間間隙計數器(IFGcnt)組成。字節計數器在接收幀過程中將對字節進行計數,以用于識別幀中的各個字段(前序碼、目的地址字段、數據、FCS等)以及判斷超長幀。幀間間隙計數器則對兩幀之間的間隔時間進
21、行計數,以用于判斷下一幀數據的開始。IEEE 802.3規定,兩幀之間的間隔至少必須為96個比特時間(10 Mbps中為9 600ns,100 Mbps中為960 ns)。如果兩幀之間的間隔小于要求,幀將被丟棄。接收狀態機為接收模塊的核心,用于控制整個接收過程。接收狀態機由Idle_State、Drop_State、Preamble_State、SFD_State、Da-ta0_State、Data1_State等六個狀態組成,其狀態轉移圖如圖5所示。圖5 接收狀態機的狀態轉移圖系統復位后,狀態機處于Drop_State。如果此時MII的數據有效信號(MRxDV)無效,狀態機馬上進入Idle_
22、State狀態,并一直處于Idle等待接收輸入幀。當接收模塊檢測到數據有效信號之后,狀態機將進入Preamble_State,并開始接收前序碼。此后再狀態機進入SFD_State,接收一個字節的幀起始定界符,之后,根據IFGcnt計數器的值進入不同的狀態。如果,IFGcnt所確定的時間大于96個比特時間,狀態機將進入Data0狀態以接收字節的低4位,然后是Data1狀態,并接收字節的高4位,之后又回到Data0狀態。狀態機就一直在這兩個狀態之間循環,直到數據接收完畢(PHY清除MRxDV信號)后進入Idle,以重新等待接收新的數據;如果接收到幀起始定界符時,IFGcnt計數器所確定的時間小于9
23、6個比特時間,那么狀態機將進入Drop_State狀態,并一直維持該狀態直到數據有效信號結束(PHY清除MRxDV信號)。之后,狀態機再回到Idle等待接收新的數據。如果在接收前序碼、幀起始定界符和數據期間,數據有效信號被清除,那么,狀態機將回到Idle。5.3 MAC的其它模塊5.3.1 MAC狀態模塊在接收過程的狀態信息中,接收錯誤表明PHY在接收過程中檢測到了錯誤;接收到無效符號則表明接收到的幀中包括無效(PHY無法識別的符號;滯后沖突表明接收幀時檢測到滯后沖突信號;超短幀表明接收到的幀小于最短有效的長度;超長幀表明接收到的幀大于最大有效幀的長度;半字節對齊錯誤表明接收到的半字節不是偶數
24、(即幀的長度不是字節的整數倍);接收溢出則表明接收模塊來不及處理接收到的數據而導致接收FIFO溢出6。在發送過程的狀態信息中,超過重試限制表示由于沖突導致的重試次數超過了額定值;滯后沖突表示發送幀的過程中檢測到的沖突信號超過了規定的沖突時間窗;延遲,表明在發送幀之前檢測到信道忙。5.3.2 MAC控制模塊MAC控制模塊提供有全雙工操作中的流量控制功能,流量控制可通過發送和接收PAUSE的MAC控制幀來實現。當接收站點的接收緩沖區(Rx FIFO)快溢出而主機接口又來不及取走數據時,系統就會發出流量控制請求。MAC在接收到流量控制請求之后,即發送PAUSE控制幀,以使數據發送站點在指定的時間內暫
25、停發送數據。數據發送站點接收到PAUSE控制幀后,便可根據幀中的參數設置PAUSE定時器。PAUSE定時器在減到0之前,發送模塊將暫停發送數據(PAUSE控制幀除外)。PAUSE定時器減到0之后,發送模塊將恢復發送數據。5.3.3 MII管理模塊MII管理模塊用于控制MAC與外部PHY之間的接口,以用于對PHY進行配置并讀取其狀態信息。該接口由時鐘信號MDC和雙向數據信號MDIO組成。MII管理模塊則由時鐘生成模塊、移位寄存器模塊和輸出控制模塊三部分組成。時鐘生成模塊可以根據系統時鐘和系統設置中的分頻系數來產生MII管理模塊的時鐘信號MDC(10 Mbps速率時為2.5 MHz,100 Mbp
26、s速率時為25 MHz)。移位寄存器模塊既可用于對PHY的控制數據進行寫入操作,也可用于對PHY的狀態信息進行讀出操作。寫控制數據時,移位寄存器根據其他模塊的控制信號將并行控制數據轉換為串行數據;而在讀狀態信息時,移位寄存器則將PHY的串行數據轉換為并行數據,MAC中的其他模塊可將該并行數據寫入適當的寄存器。由于MDIO是雙向信號,因此,輸出控制模塊就用來決定MDIO是處于輸入狀態還是輸出狀態。當MDIO處于輸出狀態時,移位寄存器輸出的串行控制數據在經過時鐘同步后發送到PHY;當MDIO處于輸入狀態時,移位寄存器將數據線上的串行數據轉換為并行數據。5.3.4主機接口模塊主機接口是運行以太網的上
27、層協議(如TCP/IP協議)與MAC控制器的接口。通過該接口,上層協議可以設置MAC的工作模式并讀取MAC的狀態信息。該接口還可用于上層協議與MAC之間的數據交換。主機接口模塊內有一組寄存器,可用于存儲上層協議對MAC設置的參數以及MAC的狀態信息。上層協議對MAC設置的參數包括接收超短幀的使能、添加填充碼使能、持發送超長幀的使能、添加CRC校驗值使能、全雙工模式或半雙工模式、持超長延遲(Defer)使能、混雜模式(Promiscuous)、接收廣播幀使能、發送和接收使能、中斷源和中斷使能、幀間間隙的長度、最大幀和最小幀的長度、重試限制和沖突時間窗、MII地址和MII控制命令、接收和發送隊列的
28、長度以及本機MAC地址等。上層協議通過MAC發送和接收數據的操作主要由主機接口模塊內的兩個隊列來進行管理,這兩個隊列用于對等待發送的多個幀和接收到的多個幀進行排隊。發送隊列主要記錄等待發送的幀的相關信息、發送該幀時對MAC的設置以及該幀發送完之后產生的狀態信息。幀的相關信息包括幀的長度、幀在外部存儲器中的地址、該幀是否準備好發送以及隊列中是否還有其它幀等待發送;對MAC的設置則包括中斷使能、填充使能、CRC使能;產生的狀態信息包括成功發送之前的重試次數、由于達到重試限制而放棄發送、發送時產生的滯后沖突以及成功發送之前發生過的延遲。接收隊列主要對接收到的數據幀進行排隊并記錄每個接收到的幀信息。這些信息包括幀的長度、是控制幀還是普通數據幀、幀中包含無效符號、接收到的幀太長或太短、發生CRC錯誤、接收的過程中發生滯后沖突、幀是否接收完、隊列中是否還有其它已接收到的幀以及幀存儲在外部存儲器中的地址等。該位同時隊列中還有針對每個幀的設置位,用來設置是否在接收到幀時產生中斷。6 仿真
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財務定崗試題及答案
- 道具禮物測試題及答案
- 大專解組考試題及答案
- 培養創新思維的動手活動計劃
- 現代科技對社會關系的重塑試題及答案
- 成人教育與終身學習理念計劃
- 部門協作與生產計劃的重要性
- 差異化戰略的制定與實施計劃
- 財務管理成績提升方法試題及答案
- 個人激勵機制與工作熱情計劃
- 2024年福建省莆田市初中八年級教學質量檢測生物試卷
- 醫療器械倉庫管理課件
- 整套電子課件:液壓傳動與氣動技術(第二版)
- 2024年03月甘肅省文化和旅游廳直屬事業單位2024年公開招考11名人員筆試參考題庫附帶答案詳解
- 人教版一年級下冊七巧板作業設計
- MOOC 大學公共體育-華南理工大學 中國大學慕課答案
- 下肢動脈介入手術
- 任務2 聚酯合成的漿料配制-PTA的輸送與卸料
- 菟絲子的藥學研究進展
- 綠野仙蹤-英語話劇劇本
- 新教材 高中政治必修四《哲學與文化》知識點梳理
評論
0/150
提交評論