基于PCI总线的通用网络协议实验平台
摘要:介绍了一种利用以太网专用芯片在Linux操作系统下构建基于PCI总线的通用网络协议实验平台。通过修改该平台的软件部分,可以在实验平台上运行私有网络协议,测试协议性能,从而避免了针对每一种私有网络协议搭建专门的实验平台,节约了成本,缩短了开发时间。
关键词:PCI设备 Linux 通用网络实验设备
在网络技术快速发展的今天,根据用户特殊的需求,有时需要研发特殊的私有网络协议,以使网络的性能得到优化。研究新的网络协议,必须进行仿真以验证性能,但是网络结构复杂,性能指标多样,并且不同的协议需要的具体测试环境不同,因此很难用纯软件的方式(如NS2、OPNET)给出网络协议运行性能的有效描述。另一方面,如果针对每一种网络协议搭建专门的测试平台,则需要大量的人力、经费和时间。而采用中硬件相结合的方法搭建一种通用网络协议实验平台,既能很好地测试出整个设备的性能,又能大幅度节约开发成本,缩短开发时间,是一种切实可行的方法。
为此,本文提出一种通用网络协议实验平台的软硬件设计方案,并详细介绍该平台的中硬件设计方法。
1 系统设计的思想
该网络实验平台设计的目的是:针对不同的私有网络协议,开发者可以根据协议标准有针对性地修改网络层和传输层的程序代码,然后通过本系统测试其协议的性能。所以,该系统应该是一个与协议无关且可程控的数据传输通道。数据包经过系统传输后,更多的工作由传输层、网络层和上层应用程序完成。该系统的整体框架结构如图1所示。
为了保证实验平台的通用性可操作性,采用PC机和与PCI总线接口的网络设备卡(以下简称PCI接口卡)组建该平台。
近年来,Linux操作系统获得了突飞猛进的发展,它强大的功能、良好的界面、高效率以及全开放的特性使其具有很强的吸引力。基于以上考虑,在PC机中采用Linux操作系统。按Linux操作系统的设计标准,私有网络协议软件需要包含传输层代码、网络层代码以及与设备相关的驱动程序,并运行在系统"核心态"中。在本实验平台中,不需要用户关心驱动程序的设计,但允许将网络层和传输层代码运行在Linux"用户态"中。
PCI接口卡是基于PCI总线的,它通过合理选择接口芯片屏蔽PCI总线协议的多余功能,并使用FPGA芯片把上层传输过来的数据包进行相应的处理(详见第2节),然后传递到物理层设备。
2 实验平台的硬件设计
2.1 PCI接口卡结构
PIC接口卡由PCI总线接口芯片、数据处理模块FPGA、数据缓存模块RAM和有线传输驱动模块LVDS(Low Voltage Differential Signaling Driver)等四部分组成,模块间的数据传输如图2所示。
2.2 芯片的选择
Winbond公司以太网控制芯片W89C840AF支持高达100Mbps的双向数据传输,该芯片不但具有良好的PCI总线接口设计,而且还有一整套的网络数据传输机制,技术成熟。所以在此选用W89C840AF,并借用该芯片的网络数据传输机制,通过对芯片合理配置,实现一条从驱动程序到物理层设备的透明数据传输通道,来满足设备要求。
FPGA芯片只要能够提供足够多的I/O口和内部硬件资源即可。RAM是为了满足不同网络协议以及算法对存储器的需要而设置的,对于不同的私有网络协议,根据实际需要选用适当容量的RAM即可,没有很荷刻的要求。本系统中FPGA芯片选用ACEX1K50TC144,RAM芯片选用CY7C006AC_PLCC,主要考虑的是芯片的速率高、使用简单并且价格低廉。
有线传输信号驱动模块选用LVDS芯片对(ds90c401,ds90c402),该芯片对的优点是速率高(155Mbps串行数据传输)、传输距离远、灵敏度高、功耗小。
2.3 PCI接口卡的功能
PCI总线接口芯片(W89C840AF)把从PCI总线上传输过来的数据封装成"以太帧"的格式,传递给FPGA(RAM可以对传输的数据进行缓冲),FPGA去掉前8byte的"以太帧头"从而获得数据包。然后根据不同网络协议的数据包格式,在FPGA中灵活地设备相应的逻辑功能。如作者目前在研的卫星ATM网络实验系统,定义了一种私有的ATM协议,数据处理单元将完成以下任务:识别信元头,按优先级对信元进行排队、存储、打包并转发等。
FPGA要完成以上功能,其内部模块需包括以下几个模块:"数据接口"、"控制接口"、"命令执行单元"、"实验网物理层访问控制单元"和"信道模拟单元",如图3所示。
FPGA把打包后的串行数据传向LVDS,信号经过LVDS驱动后传到接收方。
在接收方,数据的处理与此相反,不再多述。
2.4 W89C840AF与FPGA之间的接口设计
在PCI接口卡电路板中,芯片之间的接口设计有三部分:FPGA与W89C840AF之间的接口;FPGA与RAM之间的接口;FPGA与LVDS之间的接口。后面两个接口比较简单,所以下面主要介绍FPGA与W89C840AF之间的接口设计。
W89C840AF与FPGA之间的数据接口如图4所示。MTXCLK和MRXCLK分别是发送数据和接收数据的参考时钟,必须设置为25MHz。MTXEN和MRXDV的数据帧传输的指示信号,TMXD[3:0]和MRXD[3:0]为4bit宽的数据传输接口。
W89C840AF芯片与FPGA之间除了传输数据外,还需要交换控制信息。由于W89C840AF芯片I/O接口有限,可以供暖和W89C840AF芯片的EECK、EEDI、EEDO三条控制线与FPGA交换控制信息。这里构建一个类似I2C串行总线协议的控制总线,其结构和工作时序如图5所示。