IA-420f PCIe Accelerator with Intel Agilex FPGA
IA-420F 簡介:由英特爾 Agilex 提供支援的強大薄型 FPGA 卡 利用 Agilex 的強大功能 全新英特爾 Agilex FPGA 更多
BittWare的Loopback示例演示了幾件事:
環迴的功能不是此示例的主要重點。我們的重點是演示上面列出的所有項目符號項。但是,環回具有價值。BittWare使用它來驗證連接到第三方設備(如NIC卡和交換機)時的DAC電纜設置。
環回包含一個 L2 濾波器,用於選擇要處理的幀。如果這些幀包含IPv4數據包,則環回會在MAC和IP層交換源位址和目標位址。環回可以回應 ARP 數據包。添加此功能是為了消除對第三方設備進行專門配置的任何要求。
環回在單個 QSFP 籠上運行,將數據包從輸入循環到輸出。不使用任何額外的 QSFP 保持架。
這款 Looback 是在包含賽靈思 VU9P 晶片(速度等級為 2)的 BittWare XUP-P3R 板上設計和測試的。Loopback 不使用任何外部記憶體,應移植到任何包含 CMAC 的 BittWare Xilinx UltraScale+ 晶片中。
環迴的 FPGA 比特流包含多個元件。每個元件在輸入和輸出上都有一個 AXI4-Stream 介面,統稱為數據平面。比特流的控制平面使用連接到物理PCIe介面的AXI4-Lite介面。
環迴作為 Xilinx IP 集成商專案提供。其中幾個元件是用Verilog編寫的。其中三個是使用發出Verilog的Xilinx HLS流編寫的。
當前的實現從IP集成商的角度將使用 HLS 編寫的三個元件分組為一個元件。但是,此處分別記錄了這三個元件。事實上,它們被記錄為四個不同的元件。這是因為HLS元件共用一個通用的“解析器庫”,我們將其單獨記錄以避免重複。
從哲學上講,在重置時,所有元件初始化啟用,但處於“危害最小”的模式。然後,軟體必須在環迴開始成功運行之前配置元件。
每個元件還公開統計寄存器,以幫助用戶調試硬體或軟體。我們包含一個快照信號,以便所有統計寄存器值及時同步。
選擇比特流的介面寬度和時鐘速度來託管 100 GB 乙太網流量。數據平面的AXI4流介面寬度為512位。除了接觸CMAC的地方,介面的時鐘頻率為300 MHz。 幀元數據在單獨的總線(AXI TUSER 位)上傳輸,當AXI TLAST 為高電平時,具有有效數據。
元數據在比特流中不一致。因此,與每個元件關聯的文件描述了元件在輸入時期望的元數據以及它在輸出時轉發的元數據。
比特流控制介面是 AXI4-Lite 從機,寬 32 位。所有讀取和寫入都是32位。在位元組順序很重要的情況下,環回希望我們的控制寄存器以網路或大端位元組順序保存數據。
我們將元件控制平面寄存器與元件本身的描述分開記錄在一個地方。交叉引用可幫助使用者在兩個位置之間導航。用於環回控制寄存器的記憶體映射在很大程度上受到 Xilinx HLS 工具鏈中 AXI4-Lite 介面實現要求的影響。
所用 AXI 的正式定義來自 Xilinx“AXI 參考指南 https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf”
BittWare 環回示例在插入主機的PCIe卡上運行。BittWare為該主機提供軟體來控制示例的功能。控制軟體使用主機上運行的 Python 3。
該示例的軟體建立在BittWare的BittWorks II Toolkit之上。更具體地說,它將Python綁定添加到BwHIL和BmcLib庫中。然後,它利用 Python 元件集合中的這些綁定,這些元件創建用於操作範例的比特流在 PCIe 位址空間中公開的寄存器。
此外,環回示例比特流將某些硬體事件轉換為PCIe中斷。為了支援這一點,Loopback 的軟體將這些中斷轉換為 Python 調用。
通過與環回示例比特流的非常基本的交互來說明:
$ # 首先使用工具包的命令行或使用 GUI 映射 PCIe 卡
$ bwconfig --add=USB # 首先 通過 USB 映射為設備 0
$ bwconfig --add=pci # 與設備 1 在 PCIe 上映射的卡相同
$ python3 # 調用 python3
>>> 從元件.hildev 導入 *
>>> 卡 = 卡(1)
>>> card.show_stats() # 顯示所有元件的所有統計資訊
>>> # 僅顯示第一個 CMAC 元件的統計資訊,並提供一些選項
>>> card.cmac[0].show_stats(showall=False, doTick=False)
>>>説明()
>>>退出()
所有 Python 元件都支援低級方法的通用集合。請注意,我們的 Python 實現沒有硬編碼 PCIe 記憶體映射。相反,Python 讀取一個 JSON 資料庫,該資料庫定義了可用的 FPGA 比特流元件、它們的寄存器以及寄存器在 PCIe 位址空間中的位置。該 JSON 資料庫是從環回示例的文件自動生成的。
完整的Python API文檔可在BittWare的開發人員網站上找到。
低級方法包括:
可用的更高級別方法取決於特定元件。但是,有幾種方法相對常見:
我們提供了有關環迴的更多詳細資訊,可免費下載應用說明;今天通過下面的表格獲取!
您在此頁面上看到的是環回示例的介紹。完整的應用筆記中有更多細節,最重要的是可以免費下載!填寫表格以請求訪問完整應用筆記的PDF版本。
“*”表示必填欄位
IA-420F 簡介:由英特爾 Agilex 提供支援的強大薄型 FPGA 卡 利用 Agilex 的強大功能 全新英特爾 Agilex FPGA 更多
白皮書 使用 BittWare 250 系列加速器的 FPGA 加速 NVMe 儲存解決方案概述 近年來,向基於 NAND 快閃記憶體的儲存的遷移和引入
BittWare網路研討會介紹VectorPath S7t-VG6加速卡 現在可按需提供:在本次網路研討會中,Achronix®和Bittware將討論使用PCIe的增長趨勢
PCIe FPGA Card 520R-MX Stratix 10 FPGA Board with HBM2 and 480Gbps Optical Input Optimized for sensor processing applications with massive real-time data ingest requirements