优秀的IC/FPGA开源项目(二)-NetFPGA

为你的fpga设计加加速,nic、router、switch任意实现
副标题:优秀的ic/fpga开源项目(二)-netfpga
《优秀的ic/fpga开源项目》是新开的系列,旨在介绍单一项目,会比《优秀的 verilog/fpga开源项目》内容介绍更加详细,包括但不限于综合、上板测试等。两者相辅相成,互补互充~
这几年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,从官方板卡到各种自制板卡,应有尽有。
netfpga官方v7 板卡
核心的架构都可以在上面的板卡上实现。
整个项目包括如下几个平台的子项目:
上面的项目是根据不同板卡实现的功能类似的项目。
接下来我们以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等),那么你就可以到这个项目里找一个相接近的子项目移植即可,这样这个项目的功能就清晰明了了。
最后说一下,项目整体移植非常非常简单,几天时间就能让你快速实现一个网络相关项目的功能验证,同时这个该项目的架构也是比较先进的,也是值得学习的。还想什么?动手干吧~
最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面如果大家想要分享什么项目,可以在后台留言或者加微信留言,沟通转载事宜。今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。


用来鉴定钻石的NFC技术,神奇嘛?
ARM-Linux开发与MCU开发两者有什么差别
中小型高炉喷煤自动化PLC解决方案
深开鸿精彩亮相2023开放原子全球开源峰会
我国互联网公司BAT已真正成为了世界级的互联网公司
优秀的IC/FPGA开源项目(二)-NetFPGA
复兴伟业推动单相电机控制器走向新时代
今日直播|秋天已来,火力全开,看启明云端如何用极具性价比方案让彩屏化86盒“出圈”
一名工程师在MySQL工作的那五年
2011年半导体创新产品和技术评选结果
什么是锡珠?锡珠产生的原因和改善对策
基于硅MEMS技术的麦克风简化音频设计
关于霍尼韦尔EDA 50移动数据终端的分析和发展
未来两年刀片电池产能将超200GWh
虹科新品 | 光纤微动开关比传统机械开关强在哪?
三星旗下半导体工厂因工作环境恶劣而导致员工患病
外媒:谁能想到在欧洲华为比苹果更受欢迎?苹果太高端
薄膜在线瑕疵检测系统的系统功能有哪些
影驰RTX2070SuperGAMEROC拆解高清图赏
疫情催生出了哪些新的机器人应用场景