FPGA實現40G網卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架構,提供工程源碼和技術支持

目錄

  • 1、前言
    • 工程概述
    • 免責聲明
  • 3、相關方案推薦
    • 我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目
    • 我這里已有的以太網方案
  • 4、工程詳細設計方案
    • 工程設計原理框圖
    • 測試用電腦
    • PClE4C
    • DMA
    • 40G/50G Ethernet subsystem
    • 工程源碼架構
    • 驅動和測試文件
  • 5、Vivado工程詳解1詳解:VU37P版本
  • 6、工程移植說明
    • vivado版本不一致處理
    • FPGA型號不一致處理
    • 其他注意事項
  • 7、上板調試驗證
    • 準備工作
    • 下載bit
    • 檢測FPGA網卡
    • 驅動編譯安裝
    • 配置FPGA網卡IP
    • 單卡ping測試
    • 綜合測試效果演示
  • 8、工程代碼獲取

FPGA實現40G網卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架構,提供工程源碼和技術支持

FPGA實現40G網卡NIC

1、前言

FPGA實現NIC現狀:

目前國內能用FPGA實現高速NIC的只有Xilinx系列FPGA和響應的復旦微FPGA,高速NIC需要解決3個核心問題,PCIE、DMA、高速光口,目前純國產FPGA還不能同時解決這三大難題;本設計采用Xilinx的VUP系列FPGA實現40G網卡NIC功能;

工程概述

本文詳細描述了Xilinx的VUP系列FPGA實現40G網卡NIC功能的設計方案;從以下兩個數據流向描述整個設計:

PC向FPGA網卡通信

以PC端發起ping操作舉例;PC端發起ping操作,然后PC端操作系統Socket實現發送數據的以太網幀組包,然后發送給PC端PCIE;數據包通過PCIE總線發送至FPGA網卡,FPGA調用Ultrascale+ integrated Block (PClE4C) for PCl Express IP核實現PCIE物理層、數據鏈路層和事務層功能,并將接收到的 TLP包(Transaction Layer Packet)發送給DMA引擎;DMA引擎再將數據包以太網收發邏輯模塊做緩存處理;然后數據包再發送給40G/50G Ethernet subsystem IP核實現以太網數據鏈路層和物理層功能;最后數據包通過板載的QSFP光口發送至光纖傳送到遠端網卡;

FPGA網卡向PC通信

FPGA板載QSFP光口收到以太網數據包,并送入40G/50G Ethernet subsystem IP核實現以太網物理層核數據鏈路層功能;然后數據包送以太網收發邏輯模塊做緩存處理;然后數據包發送給DMA引擎送Ultrascale+ integrated Block (PClE4C) for PCl Express IP核實現PCIE物理層、數據鏈路層和物理層功能;然后網絡數據包通過PCIE總線發送至PC端;然后PC端操作系統Socket實現以太網數據解析,并生成ICMP回復包再返回FPGA網卡;

針對市場主流需求,本博客提供1套工程源碼,具體如下:
在這里插入圖片描述
現對上述1套工程源碼做如下解釋,方便讀者理解:

工程源碼1

開發板FPGA型號為xcvu37p-fsvh2892-2L-e;PC端發起ping操作,然后PC端操作系統Socket實現發送數據的以太網幀組包,然后發送給PC端PCIE;數據包通過PCIE總線發送至FPGA網卡,FPGA調用Ultrascale+ integrated Block (PClE4C) for PCl Express IP核實現PCIE物理層、數據鏈路層和事務層功能,并將接收到的 TLP包(Transaction Layer Packet)發送給DMA引擎;DMA引擎再將數據包以太網收發邏輯模塊做緩存處理;然后數據包再發送給40G/50G Ethernet subsystem IP核實現以太網數據鏈路層和物理層功能;最后數據包通過板載的QSFP光口發送至光纖傳送到遠端網卡;
FPGA板載QSFP光口收到以太網數據包,并送入40G/50G Ethernet subsystem IP核實現以太網物理層核數據鏈路層功能;然后數據包送以太網收發邏輯模塊做緩存處理;然后數據包發送給DMA引擎送Ultrascale+ integrated Block (PClE4C) for PCl Express IP核實現PCIE物理層、數據鏈路層和物理層功能;然后網絡數據包通過PCIE總線發送至PC端;然后PC端操作系統Socket實現以太網數據解析,并生成ICMP回復包再返回FPGA網卡;該工程適用于PGA實現高速網卡NIC應用;

本文詳細描述了FPGA實現40G網卡NIC的設計方案,工程代碼可綜合編譯上板調試,可直接項目移植,適用于在校學生、研究生項目開發,也適用于在職工程師做項目開發,可應用于醫療、軍工等行業的高速接口領域;
提供完整的、跑通的工程源碼和技術支持;
工程源碼和技術支持的獲取方式放在了文章末尾,請耐心看到最后;

免責聲明

本工程及其源碼即有自己寫的一部分,也有網絡公開渠道獲取的一部分(包括CSDN、Xilinx官網、Altera官網等等),若大佬們覺得有所冒犯,請私信批評教育;基于此,本工程及其源碼僅限于讀者或粉絲個人學習和研究,禁止用于商業用途,若由于讀者或粉絲自身原因用于商業用途所導致的法律問題,與本博客及博主無關,請謹慎使用。。。

3、相關方案推薦

我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目

其實一直有朋友反饋,說我的博客文章太多了,亂花漸欲迷人,自己看得一頭霧水,不方便快速定位找到自己想要的項目,所以本博文置頂,列出我目前已有的所有項目,并給出總目錄,每個項目的文章鏈接,當然,本博文實時更新。。。以下是博客地址:
點擊直接前往

我這里已有的以太網方案

目前我這里有大量UDP協議的工程源碼,包括UDP數據回環,視頻傳輸,AD采集傳輸等,也有TCP協議的工程,對網絡通信有需求的兄弟可以去看看:直接點擊前往

4、工程詳細設計方案

工程設計原理框圖

工程設計原理框圖如下:
在這里插入圖片描述

測試用電腦

測試用電腦需要滿足一下必要條件:
帶有PCIE卡槽,且支持PCIE3.0,至少支持4 Lane;
裝有Linux操作系統,比如ubuntu20;Linux系統不能是虛擬機;
Linux操作系統必須安裝ethtool測試工具;
我這里的測試用電腦和FPGA網卡連接如下:
在這里插入圖片描述

PClE4C

數據包通過PCIE總線發送至FPGA網卡,FPGA調用Ultrascale+ integrated Block (PClE4C) for PCl Express IP核實現PCIE物理層、數據鏈路層和事務層功能,并將接收到的 TLP包(Transaction Layer Packet)發送給DMA引擎;PClE4C配置為PCIE3.0 4Lane模式;使用MSI中斷;使用GTY高速接口資源;具體配置如下:
在這里插入圖片描述
PClE4C在工程中如下:
在這里插入圖片描述

DMA

DMA負責完成PCIE4C到內存的數據搬運,但工程中沒有使用板載的DDR資源作為內存,而是在FPGA內部用雙口RAM搭建了建議內存,用于存放緩存數據,由于和DMA交互的模塊眾多,所以DMA并非一個單獨的模塊,而是在各個模塊間相互存在的功能模塊的總稱,代碼架構如下:
在這里插入圖片描述

40G/50G Ethernet subsystem

40G/50G Ethernet subsystem IP核實現以太網數據鏈路層和物理層功能;配置為40G BASE-R模式;使用GTY資源,GT參考時鐘為差分156.25M;40G/50G Ethernet subsystem配置如下:
在這里插入圖片描述
PClE4C在工程中如下:
在這里插入圖片描述

工程源碼架構

工程源碼架構如下:
在這里插入圖片描述
本博主發布的工程均已編譯完成,且時序收斂,無時序違約,如下:
在這里插入圖片描述

驅動和測試文件

我們提供基于Linux的驅動和測試文件,以放在資料包中,如下:
在這里插入圖片描述

5、Vivado工程詳解1詳解:VU37P版本

開發板FPGA型號:Xilinx–xcvu37p-fsvh2892-2L-e;
FPGA開發環境:Vivado2022.2;
PC端接口:PCIE3.0 8G線速率,4 Lane;
網卡端接口:QSFP28;
PCIE解決方案:Ultrascale+ integrated Block (PClE4C) for PCl Express IP核;
以太網MAC解決方案:40G/50G Ethernet subsystem IP核;
數據緩存方案:簡易雙口RAM方案;
實現功能:FPGA實現40G網卡NIC;
工程作用:此工程目的是讓讀者掌握FPGA實現40G網卡NIC的設計能力,以便能夠移植和設計自己的項目;
工程Block Design和工程代碼架構請參考第4章節的《工程源碼架構》小節內容;
工程的資源消耗和功耗如下:
在這里插入圖片描述

6、工程移植說明

vivado版本不一致處理

1:如果你的vivado版本與本工程vivado版本一致,則直接打開工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開工程后,點擊文件–>另存為;但此方法并不保險,最保險的方法是將你的vivado版本升級到本工程vivado的版本或者更高版本;
在這里插入圖片描述
3:如果你的vivado版本高于本工程vivado版本,解決如下:
在這里插入圖片描述
打開工程后會發現IP都被鎖住了,如下:
在這里插入圖片描述
此時需要升級IP,操作如下:
在這里插入圖片描述
在這里插入圖片描述

FPGA型號不一致處理

如果你的FPGA型號與我的不一致,則需要更改FPGA型號,操作如下:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
更改FPGA型號后還需要升級IP,升級IP的方法前面已經講述了;

其他注意事項

1:由于每個板子的DDR不一定完全一樣,所以MIG IP需要根據你自己的原理圖進行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;

7、上板調試驗證

準備工作

需要準備的器材如下:
FPGA開發板;
測試用PC電腦;
QSFP28光模塊和光纖;
我的板子連接如下:
在這里插入圖片描述

下載bit

步驟如下:(順序一定要對)
1、先給測試電腦上電
2、電腦啟動完成后,在給FPGA開發板上電
3、下載bit
4、重啟電腦(FPGA開發板保持上電)

檢測FPGA網卡

測試電腦重啟完成后
1、打開終端并進入root模式
2、輸入PCEI查詢指令

lspci

然后可以看到有Xilinx corporation Device的設備,如下:
在這里插入圖片描述
也可以進入設置界面的網絡中查看,應該有Xilinx的網卡驅動,如下:
在這里插入圖片描述
2、輸入PCIE詳情查詢指令,可以看到FPGA網卡的更詳細信息

lspci -vvv

查詢結果如下:
在這里插入圖片描述

驅動編譯安裝

測試電腦重啟完成后
1、將我們提供的驅動文件包復制到你的linux系統中;
2、進入驅動文件夾
3、打開終端并進入root模式
4、刪除全部編譯文件,指令如下:

make clean

5、編譯驅動,指令如下:

make

如下:
在這里插入圖片描述
5、安裝驅動,指令如下:

insmod test_nic.ko

如下:
在這里插入圖片描述

配置FPGA網卡IP

1、查詢電腦所有網卡狀態,指令如下:

ifconfig

如下:
在這里插入圖片描述
2、配置FPGA網卡IP地址,指令如下:

ifconfig etho 192.168.0.10

如下:
在這里插入圖片描述
IP地址可以自由配置,192.168.0.10只是我隨意配的一個
然后可再次輸入 ifconfig 確認一下eth0的IP地址是否已被修改,如下:
在這里插入圖片描述
如果沒有修改成功,則可直接進去設置–>以太網,找到Xilinx Ethernet手動修改,如下:
在這里插入圖片描述

單卡ping測試

1、輸入指令測試FPGA網卡,指令如下:

ping 192.168.0.10

如下:
在這里插入圖片描述

綜合測試效果演示

綜合測試效果演示如下:

FPGA實現40G網卡NIC,工程源碼分享

8、工程代碼獲取

工程代碼如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89796.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SAP從入門到放棄系列之流程管理概述

文章目錄前言1.Process Management(過程管理)2.關鍵術語2.1Control recipe destination2.2 Process instruction characteristic2.3 Process message characteristic2.4 Process instruction category2.5 Process message category2.6 PI sheet3.關鍵配置…

RCLAMP0554S.TCT升特Semtech 5通道TVS二極管,0.5pF+20kV防護,超高速接口!

RCLAMP0554S.TCT(Semtech)產品解析與推廣文案 一、產品定位 RCLAMP0554S.TCT是Semtech(升特半導體)推出的5通道超低電容TVS二極管陣列,專為超高速數據接口(USB4/雷電4/HDMI 2.1)提供靜電放電&a…

【人工智能】DeepSeek的AI實驗室:解鎖大語言模型的未來

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 DeepSeek作為中國AI領域的先鋒,以其開源大語言模型(LLM)DeepSeek-V3和DeepSeek-R1在全球AI研究中掀起波瀾。本文深入探討DeepSeek AI實驗…

nacos+nginx動態配置大文件上傳限制

前言 今天還要跟大家分享的一個點就是微服務網關gateway用webflux響應式不用servlet后,引發的一個忽略點差點在演示的時候炸鍋,也不多講廢話,說說現象,說說處理就了事。 一、上傳超過20MB的視頻報錯 配置在nacos里,讀…

mr 任務運行及jar

mainclass如下:LoggingDriver

Python 數據分析:numpy,抽提,整數數組索引與基本索引擴展(元組傳參)。聽故事學知識點怎么這么容易?

目錄1 代碼示例2 歡迎糾錯3 論文寫作/Python 學習智能體------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右Sm…

ECU開發工具鏈1.10版:更強大的測量、校準與數據分析體驗.

汽車電子開發與測試領域,高效、精準且安全的工具是成功的基石。DiagRA X 作為一款廣受認可的 Windows 平臺綜合解決方案,持續引領行業標準。其最新發布的 1.10 版本帶來了顯著的功能增強與用戶體驗優化,進一步鞏固了其在 ECU 測量、校準、刷寫…

Qt C++串口SerialPort通訊發送指令讀寫NFC M1卡

本示例使用的發卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bVIuGpf&ftt&id18645495882 一、確定已安裝Qt Serial Port組件 二、在.pro項目文件聲明引用Serialport組件 三、在.h頭文件內引用Serialport組件 四、在.cpp程序中實…

Go 語言開發中用戶密碼加密存儲的最佳實踐

在現代 Web 應用開發中,用戶密碼的安全存儲是系統安全的重要環節。本文將結合 Go 語言和 GORM 框架,詳細介紹用戶密碼加密存儲的完整解決方案,包括數據庫模型設計、加密算法選擇、鹽值加密實現等關鍵技術點。 一、數據庫模型設計與 GORM 實踐…

優化Facebook廣告投放的五大關鍵策略

一、精確篩選目標國家用戶在Audience的locations設置目標國家時,務必勾選"People living in this location"選項。系統默認會選擇"People living in this location or recently in this location",這會擴大受眾范圍,包含…

Debian-10-standard用`networking`服務的`/etc/network/interfaces`配置文件設置多網卡多IPv6

Debian-10-buster-standard用networking服務的/etc/network/interfaces配置文件設置多網卡多IPv6 Debian-10-buster-standard用networking服務的/etc/network/interfaces配置文件設置多網卡多IPv6 250703_123456 三塊網卡 : enp0s3 , enp0s8 , enp0s9 /etc/network/interfac…

對話式 AI workshop:Voice Agent 全球五城開發實錄

過去幾個月,TEN Framework 團隊與 Agora 和聲網圍繞 “對話式AI”題,踏上了橫跨全球五大城市的精彩旅程——東京、舊金山、巴黎、北京、京都。 五場精心籌備的Workshop 場場爆滿, 匯聚了來自當地及全球的開發者、創業者、產品經理與語音技術愛…

算法學習筆記:6.深度優先搜索算法——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在計算機科學領域,搜索算法是解決問題的重要工具,其中深度優先搜索(Depth-First Search,簡稱 DFS)憑借其簡潔高效的特性,在圖論、回溯、拓撲排序等眾多場景中發揮著關鍵作用。無論是 LeetCode 算法題&#…

vue create 和npm init 創建項目對比

以下是關于 vue create 和 npm init 的對比分析: 1. 定位與功能 vue create 定位:Vue 官方提供的腳手架工具,基于 Vue CLI,用于快速創建標準化的 Vue 項目,支持 Vue 2 和 Vue 3。功能:提供交互式配置&…

C++ bitset 模板類

bitset<256> 數據類型詳解 bitset<256> 是 C 標準庫中的一個模板類&#xff0c;用于處理固定大小的位集合&#xff08;Bit Set&#xff09;。它可以高效地操作和存儲二進制位&#xff0c;特別適合需要處理大量布爾標志或簡單計數的場景。 基本定義與特性 1. 模板參…

通信握手言和:PROFINET轉EtherCAT網關讓汽輪機振動數據“破壁”傳輸

某大型電廠的關鍵汽輪機設備采用EtherCAT振動傳感器進行實時監測&#xff0c;但由于工廠PLC振動分析系統基于PROFINET協議&#xff0c;數據無法直接接入&#xff0c;導致振動數據延遲、預警滯后&#xff0c;嚴重影響設備健康管理。傳統的人工巡檢和定期維護難以捕捉早期機械故障…

golang 中當 JSON 數據缺少結構體(struct)中定義的某些字段,會有異常嗎

目錄關鍵影響示例演示潛在問題與解決方案問題 1&#xff1a;邏輯錯誤&#xff08;零值干擾&#xff09;問題 2&#xff1a;忽略可選字段問題 3&#xff1a;第三方庫驗證最佳實踐總結在 Go 語言中&#xff0c;當 JSON 數據缺少結構體&#xff08;struct&#xff09;中定義的某些…

Fiddler 中文版怎么配合 Postman 與 Wireshark 做多環境接口調試?

現代項目中&#xff0c;開發、測試、預發布、生產環境往往分離配置&#xff0c;前端在開發過程中需要頻繁切換接口域名、驗證多環境表現。而接口升級或項目迭代時&#xff0c;還需要做回歸測試&#xff0c;確保老版本接口仍能兼容&#xff0c;避免線上事故。這些環節若僅靠代碼…

釘釘小程序開發技巧:getSystemInfo 系統信息獲取全解析

在釘釘小程序開發中&#xff0c;獲取設備系統信息是實現跨平臺適配和優化用戶體驗的關鍵環節。本文將深入解析 dd.getSystemInfo 接口的使用方法、技術細節與實際應用場景&#xff0c;幫助開發者高效應對多終端開發挑戰。一、接口功能與核心價值dd.getSystemInfo 是釘釘小程序提…

Java項目Maven配置JDK1.8全攻略

目錄 &#x1f9e9; 一、全局環境變量配置&#xff08;推薦系統級統一&#xff09; ?? 二、Maven全局配置&#xff08;多項目統一&#xff09; &#x1f4c2; 三、項目級配置&#xff08;推薦團隊協作&#xff09; &#x1f4bb; 四、IDE配置&#xff08;輔助驗證&#x…