基于MC9S12NE64的千兆以太网交换机设计
2009-01-13
作者:黄秀珍1, 蒋文荣2, 石旭刚3
摘 要: 介绍了MC9S12NE64单片机的功能特性及以MC9S12NE64为CPU的交换机设计,详细阐述了8FE+2GE千兆以太网交换机的软硬件设计,比较了本设计与单芯片实现以太网设计的优缺点。本设计突出特点是交换机之间可以连成自愈环,有快速故障检测和恢复的功能。
关键词: MC9S12NE64; 千兆以太网; 88E6095交换模块
千兆位以太网能提供10倍于快速以太网的性能,以高效、高速、高性能而著称。已经广泛应用在金融、商业、教育、政府机关及厂矿企业等各行各业。
千兆位以太网最大的优点在于它对现有以太网的兼容性,提供了完美无缺的迁移途径,充分保护在现有网络基础设施上的投资。千兆位以太网将保留802.3和以太网帧格式以及 802.3 受管理的对象规格,从而将使企业能够在升级至千兆性能的同时,保留现有的线缆、操作系统、协议、桌面应用程序和网络管理战略与工具。
现有的千兆以太网交换机设计是基于FPGA的。它没有内嵌的功能模块,如MAC、PHY,需要外部的器件支持,也不能实时调试,相对设计比较复杂。
而本设计用MC9S12NE64为CPU设计千兆以太网交换机。MC9S12NE64单片机内部带有EMAC功能模块,是专用在以太网上的CPU,而且网站上有免费的TCP/IP协议栈使用。
1 MC9S12NE64功能简介
MC9S12NE64是Freescale公司生产的基于HCS12 CPU内核的16位单片机,内嵌EMAC和EPHY模块,针对以太网设计的高性能嵌入式处理器。MC9S12NE64的内部功能模块框图如图1所示,主要特性如下:
(1)内核采用高性能16位HCS12CPU,工作频率为25MHz。提供免费的软件开发工具Freescale Codewarrior,可以用C/C++语言编程,具有优化的C语言体系结构,可以生成十分简洁的代码,以提高可读性。
(2)内部带有BDM调试模块,可以进行实时在线仿真和调试,而无需仿真器。集成了64KB的Flash内存和8KB的静态RAM,能够满足大多数的应用场合,如果需要还可以通过PTA、PTB口外部扩展。
(3)内部嵌入10/100Mb/s的以太网媒介访问控制器(EMAC),支持标准的媒介独立接口(MII),可以实现地址识别及过滤、以太类型过滤,支持半双工和全双工通信。EMAC还有可配置的一个发送缓冲区和两个接收缓冲器,并与8KB RAM共用。MC9S12N64的RAM以2倍于CPU的速度运行,使得CPU和EMAC缓冲区可以交叉存取数据。
(4)内部嵌入10/100Mb/s以太网物理层(EPHY),支持自动协商模式,支持半双工和全双工的通信,并具有自诊断功能。
(5)内部还包含有6个模块:8通道10位模数转换器(ADC)、4通道16位定时器、2个串行通信接口(SCI)、1个高速串行外设接口(SPI)、1个具有256种时钟速度选项的I2C接口、具备使用锁相回路的时钟及复位发生器(CRG)模块。
MC9S12NE64具有80引脚TQFP-EP和112引脚LQFP两种封装,多达70个通用I/O口。基于MC9S12NE64的设计方案与同等功能的多芯片方案相比,具有体积小、结构简单、集成度高、可靠性好等优点。
2 工业以太网交换机硬件设计
硬件设计主要有两个部分:CPU模块和交换模块。
2.1 CPU模块
CPU模块由电源和CPU及外围电路部分构成,其原理框图如图2所示。
2.1.1 电源
该设计中交换机采用并联的双电源电路,采用冗余电源的供电方式,这两路电源互为备份,只要其中一路电源是正常的,即可使系统正常供电。
电源部分要求提供两路12~24V的直流电源,这两路电源的正常与否由连接单片机的两个LED发光管指示。当其中某一电源通路出现故障时,控制电路能够使故障电源自动从系统中断开,并进行故障报警,此时由另一个电源通路向交换机供电,因此出现供电中断的情况非常小。
电源的输入电压是12~24V,通过稳压器MIC4575输出3.3V。同时低压降的稳压芯片MAX1818把3.3V的电压降到2.5V。
2.1.2 CPU外围电路
本设计中CPU采用Freescale公司的MC9S12NE64单片机。该单片机内部集成有8KB RAM、64KB Flash,采用外部PHY的形式,通过MII接口与交换模块连接进行传输管理数据。通过MC9S12NE64单片机的SMI_MAC和SMI_PHY来配置交换芯片MAC和PHY的初始化状态,例如,对端口状态、传输速率、全/半双工及流量的控制等。
MC9S12NE64单片机和交换模块使用的外部时钟都是25MHz,用同一个时钟源。
(1)IIC电路:64KB的AT24C64N的IIC芯片,与单片机的IIC模块接口SDA、SCL相连。开机时CPU读取存储在AT24C64N的配置数据。
(2)电源LED:两路电源的工作指示灯,一个双色报警指示,通过CPU单片机来控制指示状况,主从电源都正常时,报警指示绿色常亮;有一路不正常时,常熄;电路有不可修复的错误时,黄色常亮。
(3)复位电路:对MC9S12NE64单片机的电源监测复位,单片机的Reset引脚接ADM708AR芯片。
(4)编程口:MC9S12NE64单片机有实时调试的功能,用multilink P&E下载调试程序。
(5)交换模块Reset信号:开机时,CPU单片机给交换模块传输一个外部的复位信号,使交换模块各引脚都处于读取状态,初始化配置交换模块。
2.2 交换模块
交换模块用了一块Marvell公司生产的88E6095主芯片。该芯片集成MAC和PHY,有11个端口,可配置成8FE+3GE,时钟源频率为25MHz。其中P0~P7 8个端口支持10BAST-T/100BAST-T;P8、P9、P10端口都支持三种接口:SERDES接收器、外接10/10/1000M Copper PHYs、1000BASE-X的光纤端口,直接连接到光放大器。
另外,P9还支持MII-MAC/PHY,P10还支持(G)MII-MAC/PHY,该接口可以同MC9S12NE64的MII接口相连,传输并处理MGMT帧和网络层数据。
交换模块的原理框图如图3所示。本设计把88E6095的11个端口配置成8FE+2GE+MII。
(1)8个FE端口:P0~P7配成10/100M快速以太网端口,支持半/全双工。
(2)2个GE端口:P8和P10配置成SERDES接口,外接88E1112_PHY接收器,配置成2个GE的铜缆或光纤接口。这两个接口可以连成自愈环,链路发生故障时,可以很快启动备用链路,以防止故障带来的损失。
(3)1个MII接口:P9端口与CPU连接,来接收处理MGMT数据及网络管理数据。
本应用是8FE+2GE 88E6095×1,还可以通过88E6095的SERDES接口进行级联扩展。例如,16FE+2GE 88E6095×2、24FE+2GE 88E6095×3、48FE+4GE 88E6095×6+88E6185等。
88E6095的工作电压有3.3V、2.5V、1.5V、1.2V。其中,1.5V和1.2V通过88E6095引脚control_15、control_12外接PNP晶体管产生。
3 软件设计
MC9S12NE64有免费的软件开发工具 Freescale codewarrior,可以实现C/C++语言的编程,使代码更具有可读性。其软件设计主要实现以下功能:
(1)初始化
主要完成对MC9S12NE64各寄存器的初始值设置和对交换模块的各个寄存器的初始值设置。
MC9S12NE64单片机在工作之前,必须进行必要的初始化,主要包括时钟、复位发生器(CRG)模块和EMAC模块。
刚上电时,MC9S12NE64单片机I/O口对交换模块发送一个复位信号,使得交换模块各端口为输入,读取各端口的状态,启动交换模块开始工作。再通过SWI_MAC和SWI_PHY接口对88E6095和88E1112端口寄存器进行初始化,使它们能正常工作。
(2)快速生成树算法
本设计的交换机是千兆光纤环自愈的设计思想,所以在初始化以后,进入主程序。执行生成树算法,去除环冗余回路,确定拓扑结构。
(3)网络协议
要实现以太网交换机与以太网上其他设备(如PC机)的通信,只需要实现TCP/IP协议栈就可以了。由于单片机内部资源不足,难以支持完整的TCP/IP协议栈,故针对各个系统的特点和功能来设定特定的TCP/IP协议栈,仅实现与需要相关的协议即可,如ARP协议、IP协议、ICMP协议、TCP协议、UDP协议、SMTP协议、HTTP协议等。
(4)网络管理及功能设置
通过MC9S12NE64的MII接口传输和接收网络数据。在实现上述网络协议的基础上,可以直接通过网络实现对交换机的参数设置和实时状态监视。
(5)故障诊断及自愈实现
当电源及交换机其他部件出现故障时,有自诊断和报警功能。交换机在链路上定时发送MGMT数据,监视网络当前的连接状态,当出现故障时,立即实现网络的自愈功能。
4 与单芯片设计比较
单芯片以太网设计用了MC9S12NE64 内部嵌入的EMAC和EPHY,单RJ45连接。虽然设计简单,但只有一个快速以太网端口可以用,不支持千兆端口,而且不易扩展,只能完成简单的数据存储转发,不支持生成树、VLAN和故障自恢复等功能。
本设计用MC9S12NE64的MAC和Marvell公司生产的88E6095交换芯片的PHY,通过MII相连。虽然提高了成本,但它带来了性能的大幅度提高,扩展到8个快速以太网端口,另有2个千兆以太网光纤端口。这2个端口可以连成自愈环,当发生链路故障时,可以很快恢复,适合用在工业以太网上。且可扩展性好,112脚的MC9S12NE64可扩展外部地址和数据,以及扩展EEPROM等模块。通过级联88E6095,可以生成16FE+2GE、24FE+2GE、48FE+4GE等结构。
本设计用MC9S12NE64单片机为CPU,88E6095为外部的PHY,设计了千兆以太网交换机。MC9S12NE64单片机接收和处理MGMT帧,监测和管理链路。同时,MC9S12NE64单片机可以嵌入开发商免费提供的TCP/IP协议栈。对交换机参数也可以通过网管软件进行配置,增加了灵活性,用户可以配置成自己所需要的交换机。而且通过级联多块88E6095,可以用来扩展工业以太网接口和千兆以太网接口。
参考文献
[1] Freescale, Inc. MC9S12NE64V1 datasheet. 2004.
[2] 88E6092/6095/6095F. Marvell datesheet.2005.
[3] 葛永明.光纤环路工业以太网交换机的设计.自动化与仪器仪表,2003,(3).
[4] 胡荣强, 李涛.基于MC9S12NE64 型单片机的嵌入式以太网连接. 国外电子元器件,2006,(10).
[5] 杨振伦,李军.基于MC9S12NE64的以太网数据采集终端的设计与实现.现在电子科技,2006,(10).
[6] 牟 滨,陶智勇.弹性分组环的两种保护方式研究[J].光通信研究,2003,(2).