NetFPGA

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

概述

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

结构

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

NetFPGA的结构

  NetFPGA的主要组成部分为:

  Xilinx Virtex-II Pro 50 (赛灵思Virtex-II Pro 50 FPGA )

  JTAG cable connector can be used to run Xilinx (国际通用的JTAG测试端口)

  4.5 MBStatic Random Access Memory (SRAM) (4.5 MB高速静态随机存取器)

  Connector block on left of PCB interfaces to 4 external RJ45 plugs (4组高速以太网口)

  Interfaces to standard Gigabit Ethernet using Cat5E or Cat6 copper network cables (支持Cat5E或Cat6标准电缆)

  Wire-speed processing on all ports at all time using FPGA logic (基于FPGA硬件控制电路)

  Two SATA-style connectors to Multi-Gigabit I/O (MGIO) on right-side of PCB (右侧两个串口连接线)

  Double-Date Rate Random Access Memory (DDR2 DRAM) (64MB二代内存)

  Standard PCI Form Factor (标准PCI接口)

  Dimensions: 25cm long x 10cm tall (10" x 4")(25厘米长x 10厘米高)

软件系统

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

  为了保证开放性,NetFPGA平台选择了CentOS操作系统。CentOS是一个开放源代码的Linux操作系统,全名为"社区企业操作系统"(Community Enterprise Operating System),是Red Hat的免费版本,相对于其他Linux发行版,其稳定性值得信赖,非常适合应用在网络和服务器平台。目前,NetFPGA平台已经支持32位的CentOS 4.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程序开发的图形用户界面(Java GUI)。

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

  用于NetFPGA平台开发的计算机辅助设计(CAD)工具,对硬件设计进行仿真和调试。设计方案通过Mentor Graphics ModelSim来仿真,确保逻辑能够正确地执行。Verilog源代码通过Xilinx ISE进行综合,最终生成bit文件。,bit文件通过PC主机的命令行程序下载到FPGA并对其进行编程,从而执行设计的硬件功能。硬件电路的调试可以使用Xilinx ChipScope的片上逻辑分析仪,通过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界面,因此还必须安装Java JDK和JRE。

  安装NetFPGA软件包

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

  安装CAD工具

  编译工具采用Xilinx的ISE Foundation,仿真工具采用Mentor Graphics的ModelSim,调试NetFPGA上的信号采用Xilinx的 ChipScope Pro 。

  测试

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

相关百科