NetFPGA

发布时间:2024-06-07 13:07:51 作者:汉语成语

NetFPGA是由美国斯坦福大学(StanfordUniversity)开发设计的一个低成本可重用硬件平台.它的出现使研究人员可以在硬件级别的开发环境上搭建Gb/s级高性能网络系统模型,从而进行网络系统的研究和测试.NetFPGA平台的软件系统包括操作系统、作为软件接口的驱动程序、实现各种硬件功能的逻辑代码、执行控制功能的软件程序、系统测试的脚本程序,以及计算机辅助设计软件工具。

概述

NetFPGA能够很好地支持模块化设计,复杂的硬件设计可以通过各个子模块的组合来完成.更重要的是,NetFPGA是一个基于Linux的开放性平台,所有对它感兴趣的人都可以利用平台上现有的资源,在前人开发的基础上搭建自己的系统,而自己开发的系统也可以被其他人所用,而不再需要重复地搭建外围模块,开发驱动和GUI等,只要添加自己的模块和修改现有的系统即可.NetFPGA的模块化和开放性,大大简化了网络研究的任务量,从而使其获得了全球众多研究机构的青睐.目前,基于NetFPGA的网络设计和路由器设计,已经作为一门实验课程在美国的很多高校里讲授.国内也有很多学校和研究机构采用基于NetFPGA进行实验与教学的实例.

结构

的2.1版本NetFPGA开发板的实物图如图所示

NetFPGA的主要组成部分为:

XilinxVirtex-IIPro50(赛灵思Virtex-IIPro50FPGA)

JTAGcableconnectorcanbeusedtorunXilinx(国际通用的JTAG测试端口)

4.5MBStaticRandomAccessMemory(SRAM)(4.5MB高速静态随机存取器)

ConnectorblockonleftofPCBinterfacesto4externalRJ45plugs(4组高速以太网口)

InterfacestostandardGigabitEthernetusingCat5EorCat6coppernetworkcables(支持Cat5E或Cat6标准电缆)

Wire-speedprocessingonallportsatalltimeusingFPGAlogic(基于FPGA硬件控制电路)

TwoSATA-styleconnectorstoMulti-GigabitI/O(MGIO)onright-sideofPCB(右侧两个串口连接线)

Double-DateRateRandomAccessMemory(DDR2DRAM)(64MB二代内存)

StandardPCIFormFactor(标准PCI接口)

Dimensions:25cmlongx10cmtall(10"x4")(25厘米长x10厘米高)

软件系统

NetFPGA平台的软件系统包括操作系统、作为软件接口的驱动程序、实现各种硬件功能的逻辑代码、执行控制功能的软件程序、系统测试的脚本程序,以及计算机辅助设计软件工具。

为了保证开放性,NetFPGA平台选择了CentOS操作系统。CentOS是一个开放源代码的Linux操作系统,全名为"社区企业操作系统"(CommunityEnterpriseOperatingSystem),是RedHat的免费版本,相对于其他Linux发行版,其稳定性值得信赖,非常适合应用在网络和服务器平台。目前,NetFPGA平台已经支持32位的CentOS4.4版本直至的5.2版本。

基于Linux内核的设备驱动程序是NetFPGA开发板与主机操作系统的软件接口。首先,驱动程序对NetFPGA的四个千兆以太网口进行配置,在系统内添加了四个命名为nf2c0、nf2c1、nf2c2、nf2c3的网络连接,从而使得PC主机上的用户空间软件可以通过NetFPGA开发板上的以太网端口来收发数据分组,就像使用普通的以太网口一样。其次,驱动程序给安装在主机上的每个NetFPGA板子预留了128MB的主机内存空间,开发板的片上寄存器、SRAM、DRAM被映射到内存中,应用程序通过对这些寄存器映像进行读写,从而控制NetFPGA的运行模式,监视数据通道的分组处理状态。再者,驱动程序使主机和NetFPGA之间按照DMA方式传送这个以太网帧,从而使主机在I/O进行的同时能够并行运算而不必等待I/O结束。

实现各种硬件功能的逻辑代码是由Verilog硬件设计语言编写的,这些代码通过仿真来测试和改进逻辑功能,之后生成bit文件下载到FPGA中,执行相应的硬件功能。NetFPGA作为一个开放平台,其研究者们已经贡献出了很多Verilog模块,这为我们的研究开发提供了很大的便捷。

完成控制功能的软件程序主要是由C语言编写,包括读写寄存器、网络协议的执行等功能。为了使操作简单和便捷,NetFPGA平台还提供了Java程序开发的图形用户界面(JavaGUI)。

此外,Linux操作系统下的Shell脚本程序,可以用来调用C语言程序,从而对系统进行测试,评估其网络性能等。这些脚本程序通常是在Shell终端里,以命令行的方式运行的。

用于NetFPGA平台开发的计算机辅助设计(CAD)工具,对硬件设计进行仿真和调试。设计方案通过MentorGraphicsModelSim来仿真,确保逻辑能够正确地执行。Verilog源代码通过XilinxISE进行综合,最终生成bit文件。,bit文件通过PC主机的命令行程序下载到FPGA并对其进行编程,从而执行设计的硬件功能。硬件电路的调试可以使用XilinxChipScope的片上逻辑分析仪,通过JTAG接口来完成。

搭建

组装PC主机

主机配置要求为双核或四核处理器,2G以上内存,额定功率400W以上的电源,主板必须带有PCI-Express和PCI插槽。主机攒好之后,将双口网卡和NetFPGA分别插到主板的PCI-Express和PCI插槽,并牢牢固定住。

安装操作系统

目前NetFPGA已经兼容从4.4到5.2的各个CentOS版本,由于CentOS暂时不支持SATA硬盘,需要通过设置主板BIOS使SATA硬盘工作在IDE模式。为了保险起见,安装过程中选择所有的组件。

安装Java

由于NetFPGA平台的控制软件中包含了Java语言编写的GUI界面,因此还必须安装JavaJDK和JRE。

安装NetFPGA软件包

包含NetFPGA驱动程序和基本模块的软件包,可以从官方网站直接下载,安装之后进行编译,系统已经为NetFPGA的四个端口添加了驱动,出现了nf2c0,nf2c1,nf2c2和nf2c3四个网络连接。

安装CAD工具

编译工具采用Xilinx的ISEFoundation,仿真工具采用MentorGraphics的ModelSim,调试NetFPGA上的信号采用Xilinx的ChipScopePro。

测试

为了确保软硬件系统的正确设置,在安装完所有软件之后,对NetFPGA平台做了一系列测试。这些测试是由一系列Shell脚本程序来完成的,NetFPGA的基本软件包里已经包含了这些程序。