### NetFPGA结构详解 #### 一、概述 NetFPGA是一种专为网络研究与教育设计的硬件平台,它能够支持高性能的网络处理任务。该系统由斯坦福大学开发,并得到了美国国家科学基金会(NSF)的支持。NetFPGA的核心是两块FPGA芯片:一块较小的Spartan-II FPGA负责提供PCI接口,而另一块较大的Virtex2 Pro FPGA则承担了以太网MAC的功能,并且也是用户自定义设计的主要运行环境。 #### 二、硬件结构 **1. 板卡结构** NetFPGA板卡可以用于两种方式:作为系统控制器以及供用户(如学生)进行自定义设计。本文档将重点介绍控制器的应用场景,因为这涵盖了用户设计所需的所有功能。 - **CNET(Controller Network)**: 控制器网络设备,负责处理PCI接口和MAC层的通信。 - **CPCI(Controller PCI)**: 控制器PCI设备,用于实现PCI协议。 - **UNET(User Network)**: 用户网络设备,用于用户的自定义网络设计。 - **UPCI(User PCI)**: 用户PCI设备,用于用户的自定义PCI设计。 **2. PCI接口** PCI接口的实现依赖于Xilinx提供的知识产权(IP)。它提供了一个标准的5V 32位/33MHz的PCI主控/目标接口。此外,还集成了一个简单的DMA控制器,使得包可以直接在控制器板卡与Linux操作系统之间进行DMA传输。另外,还有一个简单的寄存器读写模块允许对PCI设备和Virtex2 Pro进行单个32位的读写操作。 **3. 以太网** CNET提供了四个三模式MAC(10/100/1000Mbps),连接到外部的四端口PHY。控制器板卡的作用类似于交换机,其主要职责是在Linux主机和用户板卡之间传输数据包。因此,它可以同时连接最多四个用户板卡,这就要求网络性能必须足够强大。 为了简化传输路径,假设不使用以太网级别的流控制机制,从而利用网络的固有速度优势。 #### 三、时钟域 NetFPGA系统中存在两个主要的时钟域: - **PCI时钟域(33MHz)**: 负责PCI接口的操作。 - **系统时钟域(62.5MHz)**: 负责整个系统的同步操作。 CPCI设备负责处理这些时钟域之间的转换,这是因为很难将PCI时钟扩展到CNET内部。除了这两个主要的时钟域之外,CNET还为每个MAC提供了额外的时钟信号,具体的细节可以在CNET架构文档中找到。 #### 四、数据传输路径 **1. Linux主机到用户板卡(Tx)路径** 在这个方向上,数据从Linux主机出发,经过PCI接口到达CPCI,再通过CNET传输到用户板卡。这个过程中,DMA控制器起着关键作用,确保高效的数据传输。 **2. 用户板卡到Linux主机(Rx)路径** 相反的方向也遵循类似的路径,但方向相反。从用户板卡接收的数据通过CNET传递给CPCI,再通过PCI接口发送给Linux主机。 #### 五、配置与操作 **1. 用户模式** 用户可以通过编程Virtex2 Pro FPGA来实现自定义的网络处理功能。这意味着用户可以根据自己的需求定制数据包的处理逻辑,如实现特定的网络协议栈或执行高级数据包过滤等任务。 #### 六、附录 **1. 字节顺序** 在NetFPGA系统中,字节顺序是一个重要的考虑因素,因为它影响到数据包的正确解析和处理。具体来说,根据硬件和软件的具体实现,可能会采用大端序(Big Endian)或小端序(Little Endian)。对于开发人员而言,在设计数据处理逻辑时需要特别注意这一点,以确保数据的正确解释。 --- 以上是对NetFPGA架构的一个较为详细的介绍,从硬件结构、时钟域管理到数据传输路径等多个方面进行了分析。NetFPGA为研究人员和教育工作者提供了一个强大的工具,可以深入探索网络技术和FPGA编程的相关知识。
- xautofzx2013-11-06还不错,是英文的。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助