基于BCM5615的EPON系统ONU设计
换模块由1个BCM5615交换芯片、3个BCM5228B PHY芯片、1个BCM5221PHY芯片、1个HDMP-1636A千兆SERDES和SDRAM芯片组成。该模块提供1个千兆光口(1000BASE-LX),25个百兆光口(100BASE-FX),是实现ONU功能的核心部分。一个千兆口作为PON的接收端口,接收OLT广播发送的数据包;另一个千兆口连接成百兆口,作为PON的发送端口,向OLT发送数据,该端口发射的是特殊波长的光。通过特殊的交换机制来实现ONU与OLT的连接。 BCM5615芯片简介 BCM5615是集成多层交换芯片,是以太网交换模块的核心。它具有24个10/100Mbps和2个10/100/1000Mbps以太网口;具有2层和3层交换和2"7层过滤功能;可实现全线速交换,交换速率达670万包/秒;支持IEEE 802.1Q.D;具有256KB的内部数据包存储器,可以用SDRAM扩展64MB外部数据包存储器。 本设计选用3片BCM5228B来提供24个PHY端口。BCM5228B是物理层器件,单片内包含8个独立的PHY(端口)。BCM5615通过串行MII管理接口管理3个 BCM5228B芯片的24个PHY端口,系统对BCM5228B的访问就是通过转化为BCM5615的串行MII管理接口上的操作来实现的。BCM5228B每个PHY端口的管理地址由PHYADD[4::0]引脚设置,若BCM5228B的PHYADD[4::0]为PHYAD,则每片8个端口对应的管理地址分别为ADDR=PHYAD+ PORTX,PORTX为每个PHY端口的编号。 时钟电路 BCM5615的芯核时钟由133MHz的晶振产生,设计PCB时,应尽量靠近BCM5615的时钟输入引脚,BCM5615的GMII时钟与MII时钟均为125MHz,由125MHz的晶振通过74LCX245缓冲后产生四路125MHz的时钟源,输入到BCM5615的GMII_CLKIN引脚和3片BCM5228的REF_CLK引脚。注意连接到BCM5228B的时钟线应该等长,不管千兆口是否使用,GMII_CLKIN的时钟都必须提供。 系统复位电路 系统复位电路采用IMP811复位芯片,通过74LCX245缓冲后产生多路复位信号,分别接到各个芯片的复位引脚。为了可靠复位,要求复位信号的上升沿不能有振荡现象发生。 系统软件设计 本文选择Linux作为操作系统,使用Broadcom公司提供的软件开发包SDK开发BCM5615的驱动程序。PPCBOOT是独立于其它软件的,它只负责初始化并配置有关硬件,然后调用Linux内核映像引导操作系统运行,其它软件分为用户空间程序和内核空间程序两大部分。在内核空间运行嵌入式Linux操作系统、BCM5615驱动程序、RTL8139网口驱动程序、实现STP的STP内核模块、为方便整个软件系统设计和实现而采用的虚拟设备VND和VCD。它们之间的接口关系是:Linux提供内核API给BCM5615驱动和其它Linux可动态加载内核模块,如STP、VND、VCD、RTL8139网卡驱动等。 ASIC驱动 ASIC 驱动主要是完成对BCM5615的初始化和配置工作,并为上层服务提供接口。其中SAL 层的目的就是把操作系统所提供的各种服务映射为驱动程序本身的API。第二层即中间层,也可以说是整个驱动程序的核心层,它建立在SAL 之上,其设计目标主要是提供底层寄存器和存储器的访问、PCI 总线操作、DMA 操作以及中断处理函数等。驱动程序的顶层是API层,它建立在DRV层之上,是对DRV 有关部分的封装,从而为上层的其他软件模块提供各种服务,其他模块通过调用这一层的函数来访问和控制ASIC。ASIC 驱动提供的API 对用户进程来说是无法直接调用的,因此本文设计了一个虚拟的字符设备(TTY),并编写其驱动程序,同时在/dev 目录下用mknod 命令建立相对应的字符设备文件。 对操作系统来说,BCM5615的26 个端口对应于一个物理PCI 设备,即ASIC,它们共享一个PCI通道和地址空间。这给那些与网络设备紧密相关的软件带来不少麻烦,因此可以把26 个端口设计成26 个虚拟网络设备(VND)并编写其驱动程序。因此,SNMPD 和生成树协议软件所看到的是26 个虚拟网卡,和普通的网卡并无区别。 结语 本文采用波分多址(WDMA)实现的EPON系统,与同类产品相比较,有实现简单、性能好、易于升级、系统造价低的优势,已经在宽带接入网中获得重要应用
- 基于BCM5615和BCM5615的EPON系统ONU设计(09-02)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)