提出了一种全新的计算机接入局域网的方案,使多台计算机可以方便地使用各自的USB接口接入局域网,并提供了该方案的实现方法。
目前,在局域网内部,计算机接入局域网的传统方法是通过在计算机主板上安装以太网卡来实现网络的互联。这种接入方式需要计算机主板上有闲置的 ISA或者PCI插槽,还需要上级网络设备有足够的接口支持。当上级网络设备的下行接口数量不够时,必须在这个网络设备下面添加集线器(HUB)或者交换机(Switcher)。
针对这种情况,本文提出了一种多通用串行总线(USB)接口的局域网接入适配器。它将传统意义上的多块以太网卡和集线器的功能集于一身,使多台计算机可以用各自的USB接口连接到上级网络设备的一个下行接口,并在内部采用了比集线器功能更为更强大交换控制器,对各接口的数据流量加以控制,保证可靠地运行。
与传统的通过以太网卡的局域网接入方式相比较,这种通过USB接口的局域网接入方式具有很多优点:安装简便,支持热插拔,而且不需要在计算机内部安装以太网卡,尤其在主板插槽紧张时节省了资源。
1 系统硬件组成
本文所述的系统实现了对四路USB接口的局域网接入。图1是整个系统的硬件组成框图。
1.1 物理层
物理层芯片连接上级网络设备的下行RJ45接口和交换控制器。本文所述系统用台湾REALTEK公司的RTL8204芯片实现。这块芯片是一块高度集成的10BASE-T/100BASE-TX/FX的以太网收发芯片。RTL8204包括了四个独立的通道,可以同时收发四路以太网信号,每路通道都集成了4B5B编解码器、曼彻斯特编解码器、加扰器、解扰器、输出驱动、输出波形形成、滤波、数字自适应均衡和锁相环模块。但在本系统中只用了一路连接外部局域网。与普通物理层芯片所具有的质独立(MII)接口相比较,RTL8204使用了相对简单的简化介质独立(RMII)接口向上与MAC层进行连接。这种RMII接口省掉了MII接口中的许多控制信号和数据信号,将15位信号减到了7位,简化了硬件的设计工作[3]。
1.2 交换控制器
本系统采用的交换控制器是台湾REALTEK公司的RTL8308B芯片。这是一块具有8端口10Mbps/100Mbps的交换控制器。它对各个端口的数据进行处理并交换,并对各端口的流量加以控制。RTL8308B每个端口都能够处理10Mbps或者100Mbps的数据,可以工作在全双工或者半双工模式下。与RTL8204一样,RTL8308B的接口也是RMII接口,硬件设计非常方便。
RTL8308B片内集成有2MB的DRAM。可以用作数据包的缓存。RTL8308B支持IEEE802.3x全双工流量控制和半双工后退压力算法、地址学习算法、广播风暴控制和环路测试功能。RTL8308B片外用一片串行EEPROM 24LC02B实现对芯片的配置[4]。
1.3 USB转换芯片
USB转换芯片对USB接口的数据、控制信号和RMII接口的数据、控制信号进行转换。本系统采用台湾ASIX公司的AX88170作为USB 协议转换芯片。这块芯片片内5KB×16bit的SRAM,内部对数据进行USB协议和网络协议转换。它支持USB1.1标准,并可连接基于IEEE 702.3或IEEE 802.3u以太网协议下的10Mbps/100Mbps网络,而且在支持MII接口的同时,还支持简单的RMII接口,方便硬件的设计。
AX88170片外用一片串行EEPROM 93LC56实现对芯片的配置[5]。
1.4 通用串行总线(USB)接口
通用串行总线(USB)设备在即插即用的特性上能够较好地满足用户使用方便的要求。USB规范目前有两个版本:1.1和2.0。目前,绝大多数计算机主板还只是支持USB 1.1规范的最高12Mbps速率,所以本系统是针对USB 1.1规范进行的[1]。
2 硬件配置
2.1 RTL8308B的配置
交换控制器RTL8308B的配合是通过芯片在上电时读取串行EEPROM 24LC02B及某些控制引脚的电平来实现的。这其中包括广播控制使能、半双工后退压力函数使能、全双工流量控制、环路监测函数使能位、CRC校验允许位、Hash算法使能位等。对这些控制位的使能,本系统视需要而定,这里不再一一叙述。
此外,非常重要的是选择好RTL8308B的物理端口,并设置好其对应的物理地址。如果物理地址没有设置正确,交换控制器将能正常地从连接端口交换数据。在本系统中,根据芯片手册要求及实际需要,选取C端口连接RTL8204的C端口,E、F、G、H分别连接4片USB转换芯片AX88170。在EEPROM 24LC02B内设置好物理端口 对应的物理地址,使RTL8308B的A端口到H端口对应着物理地址08H~0FH。
2.2 RTL8204的配置
RTL8204的系统配置通过读取某些控制引脚上电时刻的电平来实现。RTL8204在上电时读取对应的引脚电平,并将其状态写入自己的内部寄存器中。这些控制引脚包括速率的选择(10Mbps/100Mbps)、全双工/半双工的选择以及自动协商的使能。本系统选择了自动协商工作方式,使 RTL8204可以自动地与传输方式未知的上级网络设备协商物理层信号的传输方式。
降此以外,对RTL8204最重要的配置是其端口的物理地址的设备。本系统用RTL8204的C端口连接RTL8308B的C端口,要求这两个端口的物理地址一致。前文所述,RTL8308B的C端口地址应为0AH,所以,应该将该RTL8204的C端口地址设置成为0AH,具体设备方法可以参考文献[3]。
2.3 AX88170的系统配置
USB转换芯片AX88170的数据接口可以选择MII接口或者RMII接口,本系统选择了设计较为简单的RMII接口。AX88170还可以工作在PHY模式或者MAC模式下,在本系统中,RTL8308B工作在MAC层,对其他芯片的传输方式进行控制。所以,这里需要将MX88170设置为工作在PHY模式下。
和前所述的REL8204、RTL8308B一样,AX88170的物理地址的设置也要与RTL8308B的设置相一致。本文中的4片 AX88170分别与RTL8308B的E、F、G、H端口连接,所以对应的物理端口地址应该分别设置为0CH、0DH、0E和0FH。
除此之外,在存储AX88170控制信息的EEPROM93LC56中,还存储这个端口的MAC地址。这里4个MAC地址和RTL8308B的MAC地址的选择应该避免自身的重复,并且不应与现有局域网里的MAC地址重复。
2.4 其它控制信号
整个系统的复位信号的重要性不言而喻,除了每片芯片都有各自最小时间的要求外,交换控制器RTL8308B还要求在复位后完成重新配置的时间不能早于其他物理层芯片(即RTL8204和4片MX88170)的配置暗。也就是说,RTL8308B的复位时间不能短于其他物理层芯片的复位时间。所以本系统还采用了MAXIM的MAX809芯片用作所有芯片的复位信号,既保证了复位信号的单稳的可靠性,也保证了RTL8308B和其他物理层芯片的复位时间是相等的。
在本系统中,时钟信号成为重要,特别是50MHz的时钟信号。50MHz时钟信号需要连接到RTL8308B、RTL8204和4片 MX88170的RMII接口,需要足够的驱动能力,并且它们之间的相位差要足够小才可以保证传输的可靠性。本系统采用了IDT公司的 49FCT3805(1:5时钟驱动芯片)对时钟信号增加了驱动力,并增大了扇出。
3 测试程序和驱动程序
为了方便硬件的调试,还需要编写简单的测试程序来调试系统。除标准USB指令外,AX88170厂家提供了关于MX88170的特殊指令,包括读写EEPROM、读写片内收发存储器、读写内部其他控制寄存器等,方便了系统的调试。由于MX88170芯片的厂商免费提供了其在Windows 98、Windows 2000和Windows Me下的驱动程序,所以本系统仅仅编写了简单的USB设备的测试程序,主要用来调试AX88170的工作状态。图2给出了程序的流程图。程序初始化后打开目标设备,然后读取设备标识和配置标识并判断。如果正确,则继续读取设备标识和配置标识并判断。如果正确,则继续读取EEPROM里的MAC地址和物理端口地址,之后向MX88170的片内发送SRAM和接收SRAM读写数据,如果结果正确即证明AX88170已经能够正常工作。MX88170完整的驱动程序由芯片厂端免费提供。
经过测试,本系统工作性能稳定。
本系统用于办公室或实验室环境下的计算机组网,支持IEEE 802.3的10Mbps/100Mbps以太网标准,兼容全双工和半双工网络。图3为它的应用实例,它可以将4台电脑通过USB接口连接在一起,并与局域网相连,从而实现多台计算机的信息交换、资源共享。各用户终端可以通过本设备连接至局域网,进而与Internet网络相连。
系统下一步的改进主要针对两个方面:一是高速的USB 2.0协议;二是增加USB接口数量,使其能适应更高速更复杂的网络。
与传统的用以太网卡的局域网接入方式相比较,利用本文的USB接口以太网适配器接入较为灵活、方便,而且成本低廉,具有良好的市场前景。