一种与多个光模块可同时通信的装置和方法
技术领域
本发明涉及光网络技术领域,特别是涉及一种应用于光网络的与多个光模块可同时通信的装置和方法。
背景技术
在光网络中的8端口的GE(GigabitEthernet,千兆以太网)上联卡上,有8个光模块,每个光模块都通过I2C(Inter-IntegratedCircuit)总线接口和CPU通信。光模块是标准器件,并且,光模块是固定的、不可设的;因此,安装在一块8端口的GE上联卡上的每一个GE光模块的地址是相同的,即8个光模块拥有相同的I2C设备地址,CPU不能直接地同时和8个光模块通信,且同时写多个光模块信息会导致CPU资源占用过多,系统工作效率低下。
如图1所示,光模块有两个存储区:第一块存储区和第二块存储区。其中,第一块存储区的I2C设备地址是A0h,简称A0表格;第二块存储区的I2C设备地址是A2h,简称A2表格。
A0表格存储的主要是光模块的一些类型信息,比如光模块的封装、发射波长、传输距离、速率、厂家信息、模块型号以及生产日期和序列号等。A0表格还有一些空白保留的字节,这些是留给生产厂家自定义使用以及后续协议增加新的功能使用的。
A2表格中存储的主要是一些光模块的实时数字诊断信息。还预留了用户可写的120字节区域,寄存器地址是从127字节-246字节。在这段地址空间里,系统可以根据产品需要,将必要的信息写入到GE光模块中。
目前,CPU和多个光模块之间的通讯一般是通过采用专用的I2C开关芯片I2C_SWITCH来实现。以8个光模块为例,如图2所示,CPU通过一个专用的8口I2C开关芯片I2C_SWITCH来访问8个光模块,CPU的I2C总线和8个光模块的I2C总线都连接到开关芯片上,CPU通过I2C总线来控制开关芯片的选通寄存器,选择和8个光模块中的某1路总线通信,和其它7路总线断开,完成这一路光模块通信后,CPU再通过I2C总线来控制开关芯片的选通寄存器,断掉这路的I2C总线的连接,等待下一次通信的开始。
但是,I2C总线是低速总线,速率可在100KHz和400KHz中选择,即在I2C器件支持的情况下,最高速率也只有400KHz,即一个时钟周期为2.5uS。一次I2C总线的操作时序约30个时钟周期。现有的技术中,因为加入I2C开关芯片,在对光模块的每一次操作前,增加了I2C开关的选通操作,操作后,增加了I2C开关的关闭操作。这样是对光模块的每一次I2C总线操作变成了3次I2C总线操作,操作时间增加到约90个时钟周期。
在A2表区的127字节-246字节中,可以写入用户自定义的一些信息,如系统的厂家信息,系统类型,系统版本等。这些信息对所有光模块都是一致的。按照现有的技术,每向1个光模块写入1个信息,需要90个I2C总线时钟周期。向8个光模块写入1个相同的数据信息时,需要约720个时钟周期。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种与多个光模块可同时通信的装置和方法,用于解决现有技术的光网络中,CPU无法同时与多个光模块进行通讯,并且,即使可以实现CPU与多个光模块的通讯,系统的效率也过低的问题。
为实现上述目的及其他相关目的,本发明提供一种与多个光模块可同时通信的装置,应用于光网络,所述与多个光模块可同时通信的装置包括:CPU单元,分别与多个所述光模块通过I2C总线的串行数据线相连接;时钟选通单元,与所述CPU单元通过高速并行总线连接,并分别与多个所述光模块通过所述I2C总线的串行时钟线连接;用于根据所述光模块的数量分离时钟信号,并完成多个所述光模块的时钟信号的选通;其中,每一个所述I2C总线通过上拉电阻上拉至电源电平。
于本发明的一实施例中,所述时钟选通单元内设置多个比特时钟选通寄存器位,每一个所述比特时钟选通寄存器位对应一个所述光模块。
于本发明的一实施例中,所述比特时钟选通寄存器位由所述CPU单元控制:当所述比特时钟选通寄存器位为“0”时,对应的所述光模块的时钟信号选通;当所述比特时钟选通寄存器位为“1”时,对应的所述光模块的时钟信号断开。
于本发明的一实施例中,当所述CPU单元对单个所述光模块进行写操作时,所述CPU单元通过所述高速并行总线在单个所述光模块对应的所述比特时钟选通寄存器位写入“1”,关闭其他的所述光模块的时钟信号,使单个所述光模块与所述CPU单元的时钟信号相连通;完成所述CPU单元对单个所述光模块的写操作。
于本发明的一实施例中,当所述CPU单元对多个所述光模块同时进行写操作时,所述CPU单元通过所述高速并行总线在多个所述光模块对应的多个所述比特时钟选通寄存器位写入“1”,使多个所述光模块与所述CPU单元的时钟信号相连通;完成所述CPU单元对多个所述光模块的同时写操作。
于本发明的一实施例中,所述光模块为8个时,且当所述CPU单元对8个所述光模块同时进行写操作时,所述CPU单元在一个I2C写操作周期内同时完成对8个所述光模块的写操作。
于本发明的一实施例中,所述上拉电阻为2.2Kohm。
于本发明的一实施例中,所述时钟选通单元采用CPLD进行逻辑设计。
本发明还公开了一种与多个光模块可同时通信的方法,应用于光网络,所述与多个光模块可同时通信的方法包括:对光模块执行写操作;选通所述光模块对应的时钟信号;在一个I2C写操作周期内对所述光模块完成写操作。
于本发明的一实施例中,所述对光模块执行写操作的步骤中:如果对单个所述光模块执行写操作,那么选通单个所述光模块对应的时钟信号,关闭其他所述光模块对应的时钟信号;如果对多个所述光模块执行写操作,那么全部选通多个所述光模块对应的时钟信号,并对多个所述光模块在一个所述I2C写操作周期内同时完成写操作。
如上所述,本发明的一种应用于光网络的与多个光模块可同时通信的装置和方法,解决了多个光模块的I2C设备地址相同,不能同时挂在一条总线的问题,且具有以下有益技术效果:
1.不需要专门的I2C总线开关芯片,且时钟信号的选通通道的数目可以根据需要由CPLD进行扩展;非常灵活;
2.本发明利用I2C总线的时序特点,用一个I2C写操作周期完成8个模块的寄存器写操作,提高了系统效率:单个光模块的写操作大约需要30个I2C总线周期,现有的技术约需要90个I2C总线周期,而采用本发明的装置,单个光模块的写操作也只需要大约30个I2C总线周期,时间缩短了2/3,系统的效率获得了显著的提高;多个光模块,例如8个光模块,的同时写操作大约需要30个I2C总线周期,现有的技术约需要90*8=720个I2C总线周期,系统效率提高24倍;
3.本发明既支持对光模块的批量写操作,也可支持单独对光模块的读写操作。
附图说明
图1显示为现有技术中光模块的存储映射关系示意图。
图2显示为现有技术中解决CPU与多个光模块同时通讯的方案的结构示意图。
图3显示为本发明实施例公开的一种与多个光模块可同时通信的装置的结构示意图。
图4显示为I2C总线的时序图。
图5显示为基本发明实施例公开的一种与多个光模块可同时通信的方法的流程示意图。
元件标号说明
110CPU单元
120光模块
130时钟选通单元
140串行数据线
150串行时钟线
160高速并行总线
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
请参阅附图。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
实施例1
本发明公开了一种应用于光网络的与多个光模块可同时通信的装置,采用电路设计和CPLD逻辑设计,以完成在写1个光模块的寄存器时,只需要30个I2C总线时钟;在向8个光模块相同的寄存器地址写入相同信息时,也只需要30个I2C总线。
如图3所示,本实施例的与多个光模块同时通信的装置包括:
CPU单元110,分别与多个所述光模块120通过I2C总线的串行数据线140相连接;
时钟选通单元130,与所述CPU单元通过高速并行总线LocalBUS160连接,并分别与多个所述光模块120通过所述I2C总线的串行时钟线150连接;用于根据所述光模块的数量分离时钟信号,并完成多个所述光模块120的时钟信号的选通;
其中,每一个所述I2C总线的串行时钟线150和串行数据线140通过上拉电阻上拉至电源电平。
在本实施例中,光模块120为8个。但是本发明并不仅限于8个光模块120的情况。
具体地说,通过采用CPLD设计的时钟选通单元130,将输出到8个光模块120的I2C时钟信号分为8个独立的时钟信号,时钟选通单元130内设8个比特时钟选通寄存器位,每个比特时钟选通寄存器位对应一个光模块120的时钟选通信号:
当比特时钟选通寄存器位为‘1’时,相对应的光模块120的时钟信号选通;
当比特时钟选通寄存器位为‘0’时,相对应的光模块120的时钟信号位断开。
CPU单元通过高速并行总线160来写入时钟选通单元130的比特时钟选通寄存器位:
当需要110访问单个光模块120时,将相应的比特时钟选通寄存器位写‘1’,其它比特时钟选通寄存器位写‘0’,完成对单个光模块120的I2C总线的写操作;
当需要给所有光模块120的用户定义区写相同数据时,CPU单元110将时钟选通单元130中的8个比特时钟选通寄存器位全部写‘1’,8个光模块120的时钟信号同时有效,CPU单元110的I2C总线控制将要写的地址和数据放到SDA串行数据线140上,实现了对8个光模块120的同时写操作。
并且,如图3所示,每一个I2C总线的串行时钟线150和串行数据线140通过2.2Kohm的上拉电阻上拉至电源电平,在本实施例中,电源VCC为3.3V。
进一步地,根据I2C总线来看:
I2C总线是二线制结构,即双向的串行数据线SDA、串行时钟线SCL,在被设计中是单向信号。并且,I2C总线的所有器件的SDA、SCL引脚的输出驱动都为漏极开路结构,通过外接的上拉电阻将I2总线上的所有节点的SDA、SCL信号上拉到电源电平,实现了线与的逻辑关系。
如图4所示,I2C总线的时序包括以下几个信号状态:
1.总线空闲状态:此时每个I2C设备都释放总线,串行数据线SDA和串行时钟线SCL被上拉电阻拉高;
2.启动信号:在串行时钟线SCL保持高电平期间,串行数据线SDA上的电平被主设备拉低,产生负跳变,定义为I2C总线的启动信号,标志这一次数据传输的开始。在建立该信号之前,I2C总线必须是空闲状态;
3.数据位传送:I2C总线每一位数据位都和一个时钟脉冲相对应,在串行时钟线SCL的串行时钟的配合下,在串行数据线SDA上逐位地串行传送每一位数据。数据传送时,在串行时钟线SCL呈现高电平期间,串行数据线SDA上的电平必须保持稳定,只有在串行时钟线SCL为低电平期间,才允许串行数据线SDA上的电平改变状态;
4.应答信号:I2C总线上所有数据都是8位字节传送的,发送器每发送一个字节,就在第9个时钟脉冲释放数据线,由接收器反馈一个应答信号。应答信号低电平时有效,表示接收器已经成功地接收了该字节。对于有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将串行数据线SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
5.停止信号:在时钟线保持高电平期间,串行数据线SDA被释放,使得串行数据线SDA返回高电平,发生正跳变,称为I2C总线的停止信号,标志着一次传输的终止。停止信号是主控器主动建立的,建立停止信号后,总线将返回空闲状态。
从I2C总线的时序和光模块的存储映射关系可以看出,数据位的传输包括三个部分
地址1和读写操作码的传送:地址1是光模块120的设备地址,固定为7-bit1010000(A0h)或7-bit1010001(A2h);操作码是读写命令,高为读操作,低为写操作,由主设备发出;
地址2的传送:地址2是光模块120的寄存器的8-bit地址,由主设备发出;
数据的传送:如果是写操作,数据字节由主设备发到串行数据线SDA上;如果是读操作,数据字节由从设备发到串行数据线SDA上。
由此可以看出,当CPU单元110对8个光模块120同时进行写操作时,CPU单元110在一个I2C写操作周期内可同时完成对8个光模块120写操作。
此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
实施例2
如图5所示,本实施例公开了一种应用于光网络的与多个光模块可同时通信的方法,包括:
对光模块执行写操作:
CPU单元对于光模块的写操作分为两种:一种是分别对光模块的寄存器写入不同的值,即对单个光模块进行写操作;另一种是对不同的光模块的相同的寄存器地址写入相同的值,即对多个光模块同时进行写操作。
选通所述光模块对应的时钟信号:
根据CPU单元对光模块的写操作的种类,选通对应的时钟信号:
当CPU单元需要对单个光模块进行写操作时,可以将时钟选通单元中相应的1个比特时钟选通寄存器位写‘1’,其他7个比特时钟选通寄存器位写“0”,时钟选通单元将对应的单个光模块的时钟信号选通,关闭其它7路光模块的时钟信号;
当CPU单元需要对8个模块同时进行写操作时,可以将时钟选通单元中相应的8个比特时钟选通寄存器位全部写‘1’,时钟选通单元将8个光模块的时钟信号全部选通。
在一个I2C写操作周期内对所述光模块完成写操作:
当CPU单元需要对单个光模块进行写操作时,CPU单元直接对单个光模块进行一次I2C总线的写操作;
当CPU单元需要对8个模块同时进行写操作时,CPU单元的I2C时钟信号同时送到8个光模块上,8个光模块共享串行数据线SDL,CPU单元将I2C设备地址、写操作码、寄存器地址和数据放到总线上。因为8个光模块的I2C设备地址相同,要访问的寄存器地址相同,每个光模块都识别到这次访问周期是对自己的写操作,都会将I2C总线上的数据写入到相应的寄存器中。访问过程中,有CPU单元等待光模块的应答信号的过程,8个光模块都会在串行数据线SDL上应答。并且,因为I2C总线是漏极开路电路,能够实现8个光模块的应答信号的线与功能,这样CPU单元通过一次I2C总线的写操作,同时完成了对8个光模块的寄存器的写操作,极大地提高效率。
需要说明的是,上面方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
并且不难发现,本实施例为与第一实施例相对应的方法实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
综上所述,本发明的一种应用于光网络的与多个光模块可同时通信的装置和方法,解决了多个光模块的I2C设备地址相同,不能同时挂在一条总线的问题。本发明不需要专门的I2C总线开关芯片,且时钟信号的选通通道的数目可以根据需要由CPLD进行扩展,非常灵活;本发明利用I2C总线的时序特点,用一个I2C写操作周期完成8个模块的寄存器写操作,提高了系统效率:单个光模块的写操作大约需要30个I2C总线周期,现有的技术约需要90个I2C总线周期,而采用本发明的装置,单个光模块的写操作也只需要大约30个I2C总线周期,时间缩短了2/3,系统的效率获得了显著的提高;多个光模块,例如8个光模块,的同时写操作大约需要30个I2C总线周期,现有的技术约需要90*8=720个I2C总线周期,系统效率提高24倍;且本发明既支持对光模块的批量写操作,也可支持单独对光模块的读写操作。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。