0 引 言
基于PCI总线的以太网控制器是现在以致将来网络应用方面的一个主要发展方向。8位ISA网卡目前已被淘汰,市场上常见的是16位ISA接口的 10 Mb/s网卡,它的惟一好处就是价格低廉,适合于一些如网吧等要求不高的场合使用。而VESA、EISA网卡速度虽然快,但价格较贵,市场很少见。目前市场上的主流网卡是PCI总线的网卡。CPCI技术是在PCI技术基础之上经过改造而成,基于CPCI以太网卡性能更高。该文就是要设计一种高性能又不增加芯片成本的以太网卡电路。在仔细分析以太网的原理和理解CPCI总线原理的基础上,以Intel 82551为例研究设计了一种高效的以太网卡电路。
1 CPCI的特点
CPCI(Compact Peripheral Computer Intercon-nect,紧凑的PCD具有以下特点:
(1)继续采用PCI局部总线技术;
(2)抛弃IPC传统机械结构,改用经过20年实践检验了的高可靠欧洲卡结构,改善了散热条件,提高了抗振动冲击能力,符合电磁兼容性要求;
(3)抛弃IPC的金手指式互连方式,改用2 mm密度的针孔连接器,具有气密性、防腐性,进一步提高了可靠性,并增加了负载能力。
2 Intel 82551以太网控制芯片简介
Intel 82551是Intel公司的一款高集成的以太网控制芯片,它的主要功能是实现以太网帧的收发。它集成了10/100 Base-T MAC控制器和10/100 Base-TPHY控制器,支持数据的全双工或半双工传输,支持自动协商,支持10/100 Mb/s传输速率,支持流控机制。
2.1 Intel 82551芯片结构
Intel 82551由五个单元组成:并行子系统、FIFO系统、Manageability系统、CSMA/CD 单元、PHY单元。并行子系统包括FLASH/E2PROM接口、PCI接口、DMA通道和微码引擎。Intel 82551具备128 KB寻址能力的FLASH和E2PROM接口,外扩的FLASH或E2PROM主要用来储MAC地址和一些配置信息。Intel 82551通过CPCI接口挂接到CPCI总线上,与CPU间的数据传输通过DMA(Direct Memory Access,直接内存存取)的方式进行,这种方式是Intel82551向CPU申请CPCI总线控制权,在不需CPU的干预下与系统内存之间进行数据的传输,而且Intel82551具有Scatter/Gather(分散/集聚)能力,能够支持连续地访问内存物理地址不连续的数据块。微码引擎的主要任务是将系统内存空间的数据缓冲区的指针告诉DMA单元,以便Intel 82551直接访问数据缓冲区。微码引擎具体分为CU(发送单元)和RU(接收单元)两个相互独立的部分,CU控制数据的发送,RU控制数据的接收,均不需CPU的干预,是控制Intel 82551数据收发的主要功能模块。FIFO子系统包括3 KB的发送缓冲区,3 KB的接收缓冲区,以及FIFO控制器。它的作用是在并行子系统和CSMA/CD子系统之间起数据缓冲的作用。
10/100 Mb/s CS/CD子系统执行802.3协议定义的功能,比如帧重组、碰撞的检测等。10/100 Mb/sPHY子系统直接连接到10/100 Mb/s的网络,支持100 Base-Tx Fullduplex,100 Base-Tx Halfduplex,10 Base-Tx Fullduplex,10 Base-Tx Halfduplex。
2.2 Intel 82551寄存器
Intel 82551以太网控制芯片的操作命令主要是通过SCB(Control/Status Register)寄存器来控制。SCB的格式如表1所示。
xa0
xa0
其中偏移地址为00h的低16位是SCB的状态位,每一位都对应表示中断的状态,引起中断的原因,以及CU和RU的状态。高16位是命令位,通过向该命令位写入命令字,控制Intel 82551的各种行为。偏移地址为04h的是指向命令块的指针,由于Intel82551是通过CU单元来执行各种命令块,所以要告知CU单元所执行的命令的地址。Intel 82551芯片还有一系列的特殊命令,例如Nop,Configue,Transmit和Receive等命令。
3 CPCI总线与Intel 82551连接方法
CPCI是一种同步总线,数据/地址复用,总线宽度为32位,可以扩展到64位,最高工作频率为64 MHz。支持快速背对背传输、碎发传输及Cache操作,具有较高的传输速率、数据吞吐率和良好的扩展性。连接方法如图1所示。
xa0
xa0
4 Intel 82551与传输介质接口
要实现以太网接口,以太网变压器是不可缺少的。在差分接收引脚(RX+/RX-)上,需要1个专用于10 Base-T操作的1:1脉冲变压器;在差分发送引脚(TX+/TX-)上,需要外接1个带有中心抽头的1:2.5脉冲变压器。变压器应具有2 kV以上的电压隔离性能,以防止静电干扰。接口电路如图2所示。
xa0
xa0
5 以太网控制芯片配置
其他的,还有一颗E2PROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BootROM的容量,是否启用BOOTROM引导系统等。
在系统启动时,CPU遍历查找PC总线以及设备,为其分配所需要的资源,并映射其设备空间。其查找的依据就是PCI配置空间中的DeviceID和VendorID这两个字段。
它表示系统中可能存在VendorID为0x8086(表明是Intel公司生产的),DeviceID为0x1209(Intel 82551在Intel公司的序号)的设备,这样的设备可以有多个。使用eeupdate工具对93C46在线读写,写入内容如下:
xa0
xa0
6 结 语
网卡插入系统运行良好,连上HUB,与其他系统收发数据正常。Chariot(网络战车)是一款权威的网络测试软件,它可以模拟出多种网络使用环境,测量网络的数据吞吐量、传输速率等数据。利用Chariot来测试这款网卡和市场购买的网卡。用 Chariot测试时,先找来A、B两台电脑,将两台电脑对连并装上Chariot。A电脑作为测试机,两款网卡就装在这台机器上,将网线分别插到A电脑的不同网卡上就可以进行测试了。Intel82559网卡由于处理器性能更强,所以无论在传输速率、CPU占用率和转发率上都有更好表现,比其他网卡更强。