降此以外,对RTL8204最重要的配置是其端口的物理地址的设备。本系统用RTL8204的C端口连接RTL8308B的C端口,要求这两个端口的物理地址一致。前文所述,RTL8308B的C端口地址应为0AH,所以,应该将该RTL8204的C端口地址设置成为0AH。

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完整的驱动程序由芯片厂端免费提供。