當前位置:編程學習大全網 - 編程語言 - 基於FPGA的千兆以太網數傳系統設計

基於FPGA的千兆以太網數傳系統設計

這篇文章發布於2015年的電子測量技術期刊,主要介紹了使用VC707開發板來設計千兆以太網數據傳輸系統,實現了UDP以及IP協議,並且可以利用DDR3 進行數據緩存。

寫了用以太網傳輸的優點,相對於串口的傳輸速度慢,並且不能遠距離傳輸。PCIE不能遠距離傳輸,選擇以太網兼顧了傳輸速率和系統使用靈活的特點。

選擇的Xilinx公司的xc7vx485T的FPGA開發板VC707的優點

1、集成了MAC硬核和SGMII接口,可以完成MAC層功能和PHY層接口的實現。

2、集成了PHY層芯片,可以完成PHY層的功能。

3、集成了1gb的DDR3資源,可以緩存數據。

總得設計方案如圖所示,其中MAC層與PHY層的SGMII接口可以直接調用IP來實現。

接收模塊

接受上機位的ARP請求,提取上位機的MAC地址和IP地址,以及接收上位機的UDP數據包,並提取報文。

發送模塊

發送ARP應答給上位機,封裝要發送的數據,加上UDP首部,IP首部以及以太網幀首部,並發送給MAC層的ip核。

DDR3控制模塊

將接收FIFO中的數據存入DDR3中,在發送時,從DDR3中讀出到發送FIFO。

發送/接受FIFO

以太網工作時鐘為125 MHZ,DDR3工作時鐘為200MHZ,利用這兩個FIFO來解決跨時鐘域問題。

MAC層IP核

完成以太網幀的前導碼、幀起始定界符的封裝以及解封。

具體的工作流程:系統在發送數據時,將 DDR3中的數據通過發送邏輯以及 MAC層IP核進行數據封裝,再 通 過 SGMII接 口IP核輸出數據送入 PHY 芯片,在PHY 層完成數據編碼後經由 RJ45接口發送給上位機;而系統接受數據就是發送數據的逆過程,上位機發送的數據經過 RJ45接口到達 PHY 芯片,在 PHY 層完成解碼後通過 SGMII接口將收輸出數據

送入 MAC層IP核以及接收邏輯模塊,完成數據提取或指令執行的工作,並將數據存入 DDR3。

後面介紹了ARP協議,IP協議和UDP協議就不多講了。

ARP是為了得到目的MAC地址,才能將IP和UDP正確發送到目的。

這個模塊主要是為區分接收到的是ARP還是UDP模塊。

鑒別ARP有三點:

1、判斷目的MAC地址是否為FF-FF-FF-FF-FF-FF

2、判斷幀類型是否為0X0806

3、判斷操作碼是否為1

是的話就產生ARP_request信號,並提取出上位機的MAC地址和IP地址,輸出到ARP處理模塊中。

當判斷是否為UDP時:

1、IP數據報首部協議字段是否為0x11

2、ip報部分的目的IP地址是否和本地地址壹樣

3、udp首部的目的端口號是否和本地的端口號壹樣

若判斷通過,就將UDP數據存入接收FIFO中,同時記錄數據長度為frame_cnt。

要發送的數據有兩種,即ARP應答,以及DDR中讀出的數據封裝成UDP協議的MAC幀數據。

狀態機如圖所示。

1、ARP處理模塊輸出ARP_reply時,進入ARP應答幀狀態,當應答完成後,進入空閑狀態,其中ARP處理模塊需要提供給應答狀態上位機的MAC地址,IP地址。

2、當狀態機檢測到DDR_RD_CPL信號時,就是當DDR3有數據存入發送FIFO時,開始添加MAC頭,IP頭、udp頭,最後讀出FIFO裏的數據,狀態機進入空閑狀態。

最後是壹些計算,因為目的,源MAC、ip和端口號都變了,所以需要重新計算IP校驗和,UDP校驗和,統計數據長度,並將結果封裝到數據包中去。

最後新收獲是,在全雙工模式下,以太網幀的數據長度不能超過1500字節,再減去IP首部20字節,udp首部8字節,因此udp數據長度應該小於1472字節。

  • 上一篇:linux 系統使用心得!
  • 下一篇:求知心切!!常用的克隆版做系統是如何進行的?如果包含的驅動程序是錯的,怎麽辦?
  • copyright 2024編程學習大全網