基于FPGA的以太網控制器設計
發布時間:2007/8/28 0:00:00 訪問次數:1088
西安電子科技大學機電工程學院 許全泉,胡文江,蘇里
引言
目前,以太網802.3協議和TCP/IP協議是現今嵌入式系統接入Internet的首選協議。而以太網(Ethernet)的核心思想是多用戶使用共享的公共傳輸信道,它通過帶沖突檢測的載波偵聽多路訪問協議(CSMA/CD)來控制對介質的訪問。
本文給出了完全用FPGA的控制邏輯來實現嵌入式系統Internet接人中的底層以太網控制器的設計方法。并最終設計出符合IEEE 802.3標準的控制器,從而實現了10 Mbps和100 Mbps兩種傳輸速率以及半雙工和全雙工兩種工作模式,并可通過IEEE802.3標準定義的介質獨立接口(MII)與以太網物理層芯片相連接。
1 總體設計方案
以太網控制器的FPGA設計工作包括以太網MAC子層的FPGA設計、MAC子層與上層協議的接口設計以及MAC與物理層(PHY)的MII接口設計。
該以太網控制器的總體結構設計框圖如圖1所示。整個系統分為發送模塊、接收模塊、MAC狀態模塊、MAC控制模塊、MII管理模塊和主機接口模塊六部分。發送模塊和接收模塊主要提供MAC幀的發送和接收功能,其主要操作有MAC幀的封裝與解包以及錯誤檢測,它直接提供了到外部物理層芯片(PHY)的并行數據接口(MII)。MAC控制模塊則用于執行全雙工模式中的流量控制功能。MAC狀態模塊可用來監視MAC的操作過程的各種狀態信息,并作修改。MII管理模塊提供了標準的IEEE 802.3介質獨立接口(MII),可用于連接以太網的鏈路層與物理層(PHY)。主機接口則提供有以太網控制器與上層協議(如TCP/IP協議)之間的接口,以用于數據的發送、接收以及對控制器內各種寄存器(控制、狀態和命令寄存器)的設置。
2 MAC發送模塊
MAC發送模塊可將上層協議提供的數據封裝之后通過MII接口發送給PHY。發送模塊可接收主機接口模塊的數據幀開始和數據幀結束標志,并通過主機接口從外部存儲器中讀取要發送的數據,然后對數據進行封裝,然后通過PHY提供的載波偵聽和沖突檢測信號,在信道空閑時通過MII接口將數據以4位的寬度發送給PHY,最后由PHY將數據發送到網絡上。
發送模塊由CRC生成模塊(crc_gen)、隨機數生成模塊(random_gen)、發送計數模塊(tx_cnt) 和發送狀態機(tx_statem_模塊等四個子模塊組成。其內部結構如圖2所示。
2.1 CRC生成模塊(crc_gen)
該模塊用于計算發送數據的CRC值,并將CRC值添加到數據幀的幀校驗序列字段(FCS)內。為了提高效率,并考慮到MAC與PHY的數據通道為4位,設計時可采用4位并行CRC計算方法,算法中可使用一個次態函數,并通過循環迭代來模擬移位操作。這樣,發送模塊就可以在邊發送數據到PHY的同時,一邊計算CRC,這樣當數據發送完時,CRC值也計算完成了。
2.2 隨機數生成模塊(random_gen)
如在發送過程中檢測到沖突,發送模塊就先發送擁塞碼(jam),隨后停止發送。在下次重新發送之前,發送模塊會先執行一個后退(backoff)操作,即發送模塊等待一個半隨機(生成的隨機數有范圍限制)的時間之后再開始發送。該隨機數就是由隨機數生成模塊產生的,它采用經典的截斷二元指數后退算法,后退的時間是一個與發生沖突次數有關的隨機數,隨著沖突的次數增多,用于生成該隨機數的范同也將逐漸增大,以減少沖突的概率。
2.3 發送計數模塊(tx_cnt)
發送計數模塊由半字節計數器(nibcnt)、字節計數器和重試次數計數器(retrycnt)三個計數器組成。其中重試次數計數器(retrycnt)可對發送某個幀時產生沖突次數進行計數。當計數器的值達到最大重試次數時,它將放棄重試,并丟棄發送緩沖器內的數據。同時,重試計數器的值還被隨機數生成模塊用于計算下次重試之前需要后退(backoff)的時隙的個數。
半字節計數器和字節計數器分別用于對發送過程中的半
西安電子科技大學機電工程學院 許全泉,胡文江,蘇里
引言
目前,以太網802.3協議和TCP/IP協議是現今嵌入式系統接入Internet的首選協議。而以太網(Ethernet)的核心思想是多用戶使用共享的公共傳輸信道,它通過帶沖突檢測的載波偵聽多路訪問協議(CSMA/CD)來控制對介質的訪問。
本文給出了完全用FPGA的控制邏輯來實現嵌入式系統Internet接人中的底層以太網控制器的設計方法。并最終設計出符合IEEE 802.3標準的控制器,從而實現了10 Mbps和100 Mbps兩種傳輸速率以及半雙工和全雙工兩種工作模式,并可通過IEEE802.3標準定義的介質獨立接口(MII)與以太網物理層芯片相連接。
1 總體設計方案
以太網控制器的FPGA設計工作包括以太網MAC子層的FPGA設計、MAC子層與上層協議的接口設計以及MAC與物理層(PHY)的MII接口設計。
該以太網控制器的總體結構設計框圖如圖1所示。整個系統分為發送模塊、接收模塊、MAC狀態模塊、MAC控制模塊、MII管理模塊和主機接口模塊六部分。發送模塊和接收模塊主要提供MAC幀的發送和接收功能,其主要操作有MAC幀的封裝與解包以及錯誤檢測,它直接提供了到外部物理層芯片(PHY)的并行數據接口(MII)。MAC控制模塊則用于執行全雙工模式中的流量控制功能。MAC狀態模塊可用來監視MAC的操作過程的各種狀態信息,并作修改。MII管理模塊提供了標準的IEEE 802.3介質獨立接口(MII),可用于連接以太網的鏈路層與物理層(PHY)。主機接口則提供有以太網控制器與上層協議(如TCP/IP協議)之間的接口,以用于數據的發送、接收以及對控制器內各種寄存器(控制、狀態和命令寄存器)的設置。
2 MAC發送模塊
MAC發送模塊可將上層協議提供的數據封裝之后通過MII接口發送給PHY。發送模塊可接收主機接口模塊的數據幀開始和數據幀結束標志,并通過主機接口從外部存儲器中讀取要發送的數據,然后對數據進行封裝,然后通過PHY提供的載波偵聽和沖突檢測信號,在信道空閑時通過MII接口將數據以4位的寬度發送給PHY,最后由PHY將數據發送到網絡上。
發送模塊由CRC生成模塊(crc_gen)、隨機數生成模塊(random_gen)、發送計數模塊(tx_cnt) 和發送狀態機(tx_statem_模塊等四個子模塊組成。其內部結構如圖2所示。
2.1 CRC生成模塊(crc_gen)
該模塊用于計算發送數據的CRC值,并將CRC值添加到數據幀的幀校驗序列字段(FCS)內。為了提高效率,并考慮到MAC與PHY的數據通道為4位,設計時可采用4位并行CRC計算方法,算法中可使用一個次態函數,并通過循環迭代來模擬移位操作。這樣,發送模塊就可以在邊發送數據到PHY的同時,一邊計算CRC,這樣當數據發送完時,CRC值也計算完成了。
2.2 隨機數生成模塊(random_gen)
如在發送過程中檢測到沖突,發送模塊就先發送擁塞碼(jam),隨后停止發送。在下次重新發送之前,發送模塊會先執行一個后退(backoff)操作,即發送模塊等待一個半隨機(生成的隨機數有范圍限制)的時間之后再開始發送。該隨機數就是由隨機數生成模塊產生的,它采用經典的截斷二元指數后退算法,后退的時間是一個與發生沖突次數有關的隨機數,隨著沖突的次數增多,用于生成該隨機數的范同也將逐漸增大,以減少沖突的概率。
2.3 發送計數模塊(tx_cnt)
發送計數模塊由半字節計數器(nibcnt)、字節計數器和重試次數計數器(retrycnt)三個計數器組成。其中重試次數計數器(retrycnt)可對發送某個幀時產生沖突次數進行計數。當計數器的值達到最大重試次數時,它將放棄重試,并丟棄發送緩沖器內的數據。同時,重試計數器的值還被隨機數生成模塊用于計算下次重試之前需要后退(backoff)的時隙的個數。
半字節計數器和字節計數器分別用于對發送過程中的半
上一篇:32