今天介紹兩個(only two)網路相關的開源專案。
Alex的verilog-ethernet
之前在介紹PCIe專案時有介紹過Alex的專案,當時重點介紹了PCIe。今天主要介紹他的ethernet專案。
專案地址:
❝
https://github。com/alexforencich/verilog-ethernet
❞
介紹
用於1G、10G 和 25G 資料包處理(8 位和 64 位資料路徑)的乙太網相關元件的集合。包括用於處理乙太網幀以及 IP、UDP 和 ARP 的模組以及用於構建完整 UDP/IP 堆疊的元件。包括用於1G和 10G/25G 的 MAC 模組、一個 10G/25G PCS/PMA PHY 模組和一個 10G/25G 組合 MAC/PCS/PMA 模組。包括用於實現需要精確時間同步的系統的各種 PTP 相關元件。還包括使用cocotbext-eth 的完整 cocotb 測試平臺程式碼。
元件說明:
僅對於 IP 和 ARP 支援,請使用ip_complete(1G) 或ip_complete_64 (10G/25G)。
對於 UDP、IP 和 ARP 支援,請使用udp_complete(1G) 或udp_complete_64 (10G/25G)。
1G和 10G/25G MAC 模組頂層檔案eth_mac_*,具有各種介面和帶/不帶 FIFO。10G/25G PCS/PMA PHY 模組頂層檔案是 eth_phy_10g。 10G/25G MAC/PCS/PMA組合模組頂層檔案是 eth_mac_phy_10g。
PTP 元件包括可配置的 PTP 時鐘 ( ptp_clock)、ptp_clock_cdc用於跨時鐘域傳輸 PTP 時間的 PTP 時鐘 CDC 模組 。以及用於從 PTP 時間精確生成任意頻率的可配置 PTP 週期輸出模組。
其中cocotbext-xxx是模擬測試模型(cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python。cocotb是一套基於python的用於構建模擬及測試用例的lib庫)。
已經驗證的板卡
基本市場上官方的板卡都有測試,從Xilinx S6到ZCU106,Intel Cyclone10到Stratix10 大小晶片都支援。
其他說明
README中也有模組的說明:
測試平臺的使用也有詳細的說明。
業界第一個真正意義上開源100 Gbps NIC Corundum
對於需求100G網絡卡的朋友,一定要看看這個開源專案,先放開源地址:
❝
https://github。com/ucsdsysnet/corundum
❞
介紹
Corundum 是一種基於 FPGA 的開源高效能 NIC。功能包括高效能資料路徑、10G/25G/100G 乙太網、PCI express gen 3、定製的高效能、緊密整合的 PCIe DMA 引擎、1000+ 傳輸、接收、完成和事件佇列、分散/收集DMA、MSI 中斷、多個介面、每個介面多個埠、每個埠的傳輸排程,包括高精度 TDMA、流雜湊、RSS、校驗和解除安裝和本地 IEEE 1588 PTP 時間戳。包含一個與 Linux 網路堆疊整合的 Linux 驅動程式。廣泛的模擬框架促進了開發和除錯,該框架涵蓋了從一側的驅動程式和 PCI express 介面的模擬模型到另一側的乙太網介面的整個系統。
Corundum 有幾個獨特的特徵。首先,傳輸、接收、完成和事件佇列狀態高效地儲存在塊 RAM 或ultra RAM中,從而支援數以千計的可單獨控制的佇列。這些佇列與介面相關聯,每個介面可以有多個埠,每個埠都有自己獨立的排程程式。這實現了對資料包傳輸的極其細粒度的控制。結合 PTP 時間同步,這可以實現高精度 TDMA。
Corundum 還提供了一個用於實現自定義邏輯的應用程式部分。應用部分有一個用於控制的專用 PCIe BAR 和許多提供對核心資料路徑和 DMA 基礎設施的訪問的介面。
支援的板卡
說明
這個專案很多都引用了上面《Alex的專案》,可以算是上一個專案的擴充套件。測試等文件也很完全。框圖如下
例項使用
西安電子科技大學的潘老師也在《網路交換FPGA》公眾號中詳細介紹+使用例項這個開源的專案,具體文章請大家移步到下面連結:
本文為OpenFPGA作者原創,未經本人授權禁止轉載!
NOW
現
在
行
動
!
學習Xilinx FPGA最好的資料其實就是官方手冊,下表總結了部分手冊的主要介紹內容,關注我,持續更新中……