跳转到主要内容
--## 电子创新网图库均出自电子创新网,版权归属电子创新网,欢迎其他网站、自媒体使用,使用时请注明“图片来自电子创新网图库”,不过本图库图片仅限于网络文章使用,不得用于其他用途,否则我们保留追诉侵权的权利。 ##--

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
judy 提交于

本文转载自: OpenFPGA微信公众号

这几年DPU的概念越来越火,有和CPU、GPU并驾齐驱的势头,通俗的讲DPU分担的工作为虚拟化、网络、存储以及安全。

从上面的工作可以看出DPU的核心是:网络。所以我们今天讲一个未来的发展核心之一:用FPGA实现NIC(network interface controller,网络接口控制器),从该项目出发可以实现数据可控制化,进而实现DPU功能。

当然,本项目的基本就是一个NIC、router、switch等子项目的集合,可以看做目前ASIC-Intel 82580、BCM8724、BCM5396的功能的FPGA实现。

基于Intel 82580网卡

BCM8724特点

BCM5396内部架构图

今天项目的核心项目地址如下:

https://github.com/NetFPGA

www.netfpga.org

这个项目已经发展了很多年了,从V5 FPGA到现在V7 FPGA,从官方板卡到各种自制板卡,应有尽有。

核心的架构都可以在上面的板卡上实现。

整个项目包括如下几个平台的子项目:

上面的项目是根据不同板卡实现的功能类似的项目。

接下来我们以AMD Xilinx VC709位核心,简单说明一下怎么移植NetFPGA到我们的板卡上,本次实现的参考项目为NetFPGA-SUME(架构类似)。

NetFPGA移植

开发环境:

  • win10+Ubuntu虚拟机
  • vivado 2016.4
  • 第一步在下面链接下载源码:
    https://github.com/junganghu/NetFPGA-SUME-live

    可以使用下面命令:

    git clone https://github.com/junganghu/NetFPGA-SUME-live

    PS:是不是觉得奇怪,为啥不是官方源码?这是因为官方库是私有库,需要通过官网申请,上面链接应该源开发者上传的,能使用。

    第二步修改/NetFPGA-SUME-live/tools/settings.sh:

    主要修改一些路径,方便调用工具,主要修改SUME_FOLDER(库的路径)、XILINX_PATH(vivado的安装路径)、NF_PROJECT_NAME(测试的demo,可选nic,route,swich)

    进入$SUME_FOLDER(库的路径)执行:

    make

    如果使用上面的版本vivado,应该不会出什么问题,其他版本需要修改tcl里的IP版本(出错命令行会详细提示问题,按照提示修改即可,但是IP间的差异会导致综合失败,建议先按照源vivado版本编译,后续GUI界面再修改)。

    上面步骤时间较久,根据电脑性能需要一个小时左右。

    第三步进入Reference_nic目录再次执行下面命令:

    make

    就会生成reference_nic.bit

    PS:SDK部分官方提供了源码,可以自己新建SDK工程,把源码拷贝进去也是可以的。

    第四步固化文件到FPGA。

    第五步就是将板卡插到测试主板上,在主板主控上加载驱动。

    第六步加载驱动(驱动源文件在),在主控系统下进入DRIVER_FOLDER目录下,执行

    make all

    make make install

    修改驱动文件权限。

    接下来:

    lcpsi -vxx | grep Xilinx

    查找系统有没有找到PCIe设备,正常会出现下面:

    注意ID:7028 0007,如果不是证明FPGA下载的文件有问题。

    载入sume_riffa模块
    modprobe sume_riffa

    查看有没有加载成功
    lsmod

    查看有没有识别到网卡:
    ifconfig -a

    接下来就按照自己需求进行测试了。

    最后总结一下这个架构:

    sume_riffa的这个nic架构PCIe部分使用了基于Scatter-Gather DMA的riffa PCIe开源模块,其他IP基本都是xilinx官方IP,使用AXI-stream和AXI-lite的比较广泛的架构,值得学习。

    总结

    今天的项目简单优化后基本就可以应用到项目里了,开头说的可能比较“绕”,简单说就是如果你想用FPGA实现网络相关的功能(包括但不局限于NIC、Route、Swich、OSNT等),那么你就可以到这个项目里找一个相接近的子项目移植即可,这样这个项目的功能就清晰明了了。

    最后说一下,项目整体移植非常非常简单,几天时间就能让你快速实现一个网络相关项目的功能验证,同时这个该项目的架构也是比较先进的,也是值得学习的。还想什么?动手干吧~

    精彩推荐

    2026英伟达GTC大会专题

    CES 2026(国际消费类电子产品展览会)专题

    第四届南渡江智慧医疗与康复产业高峰论坛

    第十五届松山湖中国IC创新高峰论坛

    第四届滴水湖中国RISC-V产业论坛

    Recent comments

    • 1873774516_516738
    • 2460440665_516737
    • 1457585548_516736
    • 780289498_516735
    • 2283262460_516734