1 引言
据统计数字表明,目前全球85%的网络采用以太网技术。尤其是上世纪九十年代初,随着计算机性能的不断提高以及通信量的急剧增加,传统局域网逐渐超出了自身负荷,交换式以太网技术应运而生,大大提高了局域网性能。众所周知,传统以太网交换机工作在ISO/OSI网络协议参考模型的第二层―数据链路层上,而存储―转发(Store-Forward)是目前最常用的交换方式之一,即首先将接收到的数据包(Packet)存储到数据缓冲区中,然后进行CRC(循环冗余校验),对错误的数据包进行处理之后再取出目的地址,最后通过搜索地址学习表将数据包转发到对应的目的端口。能够做到“一次学习,多次交换”。此外,基于第三层―网络层的交换机还具有简单的路由选择功能,且速度优于路由器。随着ASIC(专用集成电路)的迅猛发展,无论二层交换还是三层路由都可以由交换机中的交换控制芯片来完成。因此,交换控制芯片已经成为决定交换机性能的最主要因素。对于局域网中的主干核心交换机来说,采用具有三层路由及先进网络管理功能的交换控制芯片十分必要;而对于用户接入或楼宇接入交换机,经济实用的二层交换控制芯片完全能够满足需要。随着SOHO(Small Office Home Office)和公司、机构局域网的发展,对于用户接入交换机的需求也越来越大。用户接入交换机一般应用于规模不太大的局域网,为公司、机构、家庭等小型局域网提供高效、廉价的共享上网方案。与主干核心交换机相比,用户接入交换机的体积小、能耗低、性能指标较低且外部接口较少,相对而言更容易设计和开发。本文主要介绍了基于ADM6999以太网交换控制芯片和8051微控制器的小型可管理用户接入交换机的设计与实现方法。
2 交换机的硬件设计与实现
ADM6999是一款高性价比、高集成度(集控制器、物理块和存储块于一体)的以太网交换控制芯片。它包括8个基本端口和1个可配置成RMII/MII/GPSI的扩展端口,所有端口都支持10/100Mbps的全/半双工模式。ADM6999提供了802.1p(Q.O.S.),802.1q(VLAN),端口MAC地址锁定,监控端口状态等功能,主要应用于低端的SOHO市场,是开发用户接入交换机的合适选择。为节约开发成本,采用价格比较便宜的8051或MCS-51系列单片机对ADM6999进行控制和管理,此外,需要外接的硬件还包括EEPROM、Transformer(变压器)及Transceiver(收发器)等。基于本设计方案的交换机内部硬件组成如图1所示。

图1 交换机内部硬件组成
(1) ADM6999与EEPROM及8051的接口

图2 ADM6999与AT93C46及AT89C52的接口
ADM6999工作时所需的全部参数必须存储在外接的EEPROM中,考虑到存储容量、封装形式等因素,AT93C46串行16位EEPROM是合适选择。它的存储容量为1KB,共有 8个引脚。将其中的CS(选片)、SK(时钟)、DI(输入)、DO(输出)4个引脚分别连接ADM6999的对应引脚,ADM6999即可对其进行操作。8051单片机在本设计中是作为以太网交换机内部的CPU和程序存储器,需要存储并运行ADM6999的全部管理程序,因此至关重要。AT89C52是8051系列的8位单片机,片内具有3个时钟/计数器、8个中断源、8KB FLASH(存储程序)、256B RAM(运行程序)。AT89C52共有32条I/O线,选择其中的5条分别作为RC(复位)、CS、SK、DI、DO直接与ADM6999的对应引脚连接即可。ADM6999与AT93C46及AT89C52的接口如图2所示。
(2) ADM6999与RJ-45及AT89C52与RS232C的接口 ADM6999与RJ-45之间需要连接两片PH406466作为变压器,每片为ADM6999连接4个RJ-45接口,以满足以太网交换机具有8个网络设备接口的需要;此外,AT89C52与RS232C之间需要连接一片LTC1348,为AT89C52连接1个RS232C接口,以便与PC机进行串口通讯。
(3) ADM6999与LED灯的接口 ADM6999为每个端口提供3个LED状态显示灯,分别表示连接、速度和双工。本设计中利用3个74LVT164(串―并转换芯片),分别将ADM6999输出的LEDDATA(灯数据)和LEDCLK(灯时钟)两条串行数据线转换成8条并行数据线之后,直接通过限流电阻连接至LED灯。
3 交换机的软件设计与实现
因为本设计方案中ADM6999通过外接AT89C52与PC机进行RS232C串口通讯,以实现利用PC机对交换机进行配置和管理的目的,所以必须实现的软件主要包括AT89C52中的交换机初始化配置程序和PC机中的用户管理程序两部分。其中AT89C52中运行的程序使用目前MCS-51系列单片机的首选开发工具KEIL C51编写;而用户管理程序既可以利用KEIL C51编写,嵌入到AT89C52中,通过WINDOWS操作系统自带的超级终端(HyperTerminal)与PC机实现RS232C串口通讯,也可利用Microsoft Visual Basic 6.0等可视化开发工具编写具有图形界面的应用程序,运行在PC机上,与AT89C52进行RS232C串口通讯。这两种方法各有所长:前者不需要在PC机中单独安装程序;而后者的操作更加直观、方便。软件的设计与实现主要包括EEPROM操作、设置端口状态及监测端口状态等内容。
(1) EEPROM操作 本设计中的EEPROM主要存储ADM6999启动时的设置参数,包括端口配置信息、VLAN映射表等,是以太网交换机内部的重要硬件组成部分,对EEPROM的操作也是整个软件实现的基础。由于选用的AT93C46为16位串行EEPROM,而AT89C52为8位单片机,因此通过89C52进行EEPROM读/写时,必须先处理低地址的8位,再处理高地址的8位。此外,AT93C46初始化时,CS、SK必须为低电平,而DI、DO必须为高电平,即: CS=0;SK=0;DI=1;DO=1。
而对AT93C46进行读/写时,CS、DO必须为高电平,即: CS=1;DO=1。
(2) 设置端口状态 ADM6999的8个基本端口的所有设置信息都存储在EEPROM中,端口P0~P7对应的EEPROM地址分别为0x01h~0x08h,每16位表示1个端口的所有状态。其中位0表示是否具有802.3x流量控制,值1为有,0为无;位1表示是否具有自动协商功能,值1为有,0为无;位2表示速度,值1为100Mbps,0为10Mbps;位3表示双工条件,值1为全双工,0为半双工;位4对端口发送的数据包添加标记,值1为有标记,0为无标记;位5表示端口是否激活,值1为屏蔽,0为激活。前6位包括了每个端口的基本设置信息,后9位的主要功能是设置VLAN(Virtual Local Area Network,虚拟局域网)、TOS(服务类型)等信息。其中VLAN是一种通过将局域网内的设备逻辑地而不是物理地划分成多个网段,从而实现虚拟工作组的新兴技术。一方面,VLAN建立在局域网交换机的基础之上;另一方面,VLAN是局域网交换机的灵魂。VLAN具有控制广播风暴、确保网络安全、简化网络管理等优点,是否具有VLAN目前已经成为衡量局域网交换机性能的一项重要技术指标。VLAN的划分方式包括基于端口的VLAN、基于MAC地址的VLAN、基于网络层的VLAN等。ADM6999根据802.1Q协议标准,支持基于端口的VLAN,用户可以为每个端口定义4位VLAN ID,最多可划分16个VLAN组。
(3) 监测端口状态 通过读取ADM6999内部寄存器(地址为0x00h~0x3ch)来监测所有端口的状态,基本状态包括连接、速度、双工和流控。此外还可以实时监测接收、发送及冲突、错误的数据包计数和接收、发送的数据字节计数,如果数据包计数或数据字节计数达到最大值,ADM6999就自动将内部寄存器的相应地址位置1,做上溢(Overflow)标记。
4 结语
因为ADM6999只支持第二层网络协议,且基本状态的设置只能通过RS232C串口通讯实现,所以下一步的工作主要是为交换机设置IP地址,进而实现PING及TELNET等功能,以满足实时监控与远程管理的需要。
|