背景技术
IIC(Inter-Integrated Circuit)总线是由菲利浦半导体公司设计出来的两线式串行总线,主要是用来连接整体电路(ICS)。IIC总线是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。这种方式简化了信号传输总线。
IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在系统主控制器与被控IIC设备之间、IIC设备与IIC设备之间进行双向传送。系统主控制器和IIC设备均并联在IIC总线上,每个IIC设备都有唯一的地址(IIC设备地址),同一条IIC总线上的IIC设备彼此独立,互不相同,如图1所示。IIC总线最主要的优点是其简单性和有效性。由于IIC总线只需要两个线,减少了电路板的空间,降低了芯片管脚的数量,节省了互联成本。IIC总线的长度可高达25英尺。利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。
IIC总线传送数据时,主要包括以下几个阶段,如图2所示:
开始阶段(START):SCL为高电平时,SDA由高电平向低电平跳变,CPU开始传送数据。
传输扩展IIC器件地址(Calling Address)和读写标识(R/W)阶段,START后,CPU首先传送扩展IIC器件地址以及读写标识。
应答阶段(ACK):扩展IIC器件接收到扩展IIC器件地址后,向发送数据的CPU发出特定的低电平脉冲,表示已收到数据。若CPU未收到应答信号,则判断为扩展IIC器件不存在或故障。
数据阶段(Data):如果是CPU写扩展IIC器件,则CPU收到ACK后,发出数据;如果是CPU读扩展IIC器件,则扩展IIC器件送出应答后,扩展IIC器件接着发出数据。
结束阶段(STOP):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
对于主控板IIC总线的设计,通常会预留地址共后续扩展的模块使用,后续扩展的模块可以直接插在主机上进行IIC数据的访问。但当所扩展的模块的IIC设备地址与现有主板IIC总线的其他设备地址冲突时,导致主控板无法访问,从而限制了IIC设备的扩展性。
发明内容
有鉴于此,本发明提出一种实现IIC接口地址扩展的设备及方法,以解决上述问题。
为达到上述目的,本发明实施例的技术方案是这样实现的:
一种实现IIC接口地址扩展的设备,包括:
主IIC总线、与所述主IIC总线连接的CPU;
扩展IIC总线、连接于所述扩展IIC总线的一侧的扩展IIC器件、以及与所述主IIC总线的一个地址接口相连并连接于所述扩展IIC总线的另一侧的逻辑器件;
其中,所述逻辑器件用于在所述CPU访问扩展IIC器件时,将所述CPU经由所述主IIC总线发送的第一帧数据中本逻辑器件在所述主IIC总线的主地址与所述扩展IIC器件在扩展IIC总线的扩展地址进行转换,实现所述CPU访问所述扩展IIC器件。
优选地,所述逻辑器件用于在所述CPU访问所述扩展IIC器件时,将所述CPU经由所述主IIC总线发送的第一帧数据中本逻辑器件在所述主IIC总线的地址与所述扩展IIC器件在扩展IIC总线的扩展地址进行转换包括:
所述逻辑器件接收所述CPU使能并接收所述CPU发送的待访问的所述扩展IIC器件的扩展地址;在接收到所述CPU经由所述主IIC总线发送的包含本逻辑器件的主地址的第一帧数据后,将所述第一帧数据中的本逻辑器件的主地址替换为待访问的所述扩展IIC器件的扩展地址发送至扩展IIC总线侧。
优选地,所述第一帧数据还包括读写控制位;
所述扩展IIC器件接收到替换地址后的所述第一帧数据后,解析其中的所述扩展地址并与本设备的地址相比较,如果一致,则读取所述第一帧数据中的所述读写控制位,并进行第一应答;将所述第一应答经由所述逻辑器件透传至所述CPU;然后接收所述CPU发送的经由所述逻辑器件透传的包含寄存器地址的第二帧数据,并进行第二应答;将所述第二应答经由所述逻辑器件透传至所述CPU;如果所述CPU为写数据,则继续接收所述CPU发送的数据;如果所述CPU为读数据,则向所述CPU发送数据。
优选地,所述CPU在数据传输完成后,去使能所述逻辑器件。
优选地,所述逻辑器件通过地址管脚来接收所述CPU发送的待访问扩展IIC器件的扩展地址。
本发明实施例还提供一种实现IIC接口地址扩展的方法,
该方法用于包括主IIC总线、与所述主IIC总线连接的CPU,扩展IIC总线、连接于所述扩展IIC总线的一侧的扩展IIC器件、以及与所述主IIC总线的一个地址接口相连并连接于所述扩展IIC总线的另一侧的逻辑器件的设备中;
其中,所述逻辑器件在所述CPU访问扩展IIC器件时,将所述CPU经由所述主IIC总线发送的第一帧数据中本逻辑器件在所述主IIC总线的主地址与所述扩展IIC器件在扩展IIC总线的扩展地址进行转换,实现所述CPU访问所述扩展IIC器件。
优选地,所述逻辑器件在所述CPU访问所述扩展IIC器件时,将所述CPU经由所述主IIC总线发送的第一帧数据中本逻辑器件在所述主IIC总线的主地址与所述扩展IIC器件在扩展IIC总线的扩展地址进行转换具体包括:
所述逻辑器件接收所述CPU使能并接收所述CPU发送的待访问的所述扩展IIC器件的扩展地址;继而在接收到所述CPU经由所述主IIC总线发送的包含本逻辑器件的主地址的第一帧数据后,将所述第一帧数据中的本逻辑器件的主地址替换为待访问的所述扩展IIC器件的扩展地址发送至扩展IIC总线侧。
优选地,所述第一帧数据还包括读写控制位;
扩展IIC器件接收到替换地址后的所述第一帧数据后,解析其中的所述扩展地址并与本设备的地址相比较,如果一致,则读取所述第一帧数据中的所述读写控制位,并进行第一应答;将所述第一应答经由所述逻辑器件透传至所述CPU;然后接收所述CPU发送的经由所述逻辑器件透传的包含寄存器地址的第二帧数据,并进行第二应答;将所述第二应答经由所述逻辑器件透传至所述CPU;如果所述CPU为写数据,则继续接收所述CPU发送的数据;如果所述CPU为读数据,则向所述CPU发送数据。
优选地,所述CPU在数据传输完成后,去使能所述逻辑器件。
优选地,所述逻辑器件通过地址管脚来接收所述CPU发送的待访问扩展IIC器件的扩展地址。
本发明的有益效果为,通过设置逻辑器件,当CPU访问扩展IIC总线侧的扩展IIC器件时,利用逻辑器件实现逻辑器件在主IIC总线的主地址与扩展IIC器件在扩展IIC总线的扩展地址之间的转换,从而解决扩展IIC器件的扩展地址与主IIC总线的主地址冲突的问题,而且无需降低IIC总线频率和引入其他延时,实现IIC设备的扩展。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下通过具体实施例并参见附图,对本发明进行详细说明。
本发明实施例提供一种实现IIC接口地址扩展的设备,如图4所示,包括:
主IIC总线IIC0、以及与所述主IIC总线IIC0连接的CPU。
扩展IIC总线IIC1、连接于所述扩展IIC总线IIC1的一侧的扩展IIC器件、以及与所述主IIC总线IIC0的一个地址接口相连并连接于所述扩展IIC总线IIC1的另一侧的逻辑器件。
其中,扩展IIC总线IIC1、扩展IIC器件、逻辑器件可以和主IIC总线IIC0、CPU均位于一块控制板上,也可以位于扩展卡上。本实施例中,主IIC总线IIC0和所述CPU位于主控板上,所述扩展IIC总线IIC1、所述扩展IIC器件以及所述逻辑器件位于模块插卡(可以为HMIM卡)上。
本实施例中,扩展IIC器件为光模块SFP。
其中,所述逻辑器件用于在所述CPU访问所述扩展IIC器件时,实现逻辑器件在所述主IIC总线IIC0的主地址与扩展IIC器件在扩展IIC总线IIC1的扩展地址ADDR之间的转换。
当CPU访问所述扩展IIC总线IIC1侧的扩展IIC器件时,逻辑器件替换地址的过程如下:所述CPU先发送扩展IIC器件的扩展地址ADDR给所述逻辑器件,然后发送包含所述逻辑器件的主地址的第一帧数据给逻辑器件;所述逻辑器件将第一帧数据中所述主地址替换为所述扩展地址ADDR,然后将替换后的第一帧数据传至扩展IIC总线IIC1侧的扩展IIC器件,从而实现CPU对所述扩展IIC器件的访问。
其中,主地址为逻辑器件在主IIC总线侧的器件地址。本实施例利用逻辑器件实现逻辑器件在主IIC总线的主地址与扩展IIC器件在扩展IIC总线的扩展地址之间的转换,从而解决扩展IIC器件的扩展地址与主IIC总线的第一帧数据冲突的问题,而且无需降低IIC总线频率和引入其他延时,实现IIC设备的扩展。
应用时,该设备的主IIC总线IIC0侧,还可以包括连接于所述主IIC总线IIC0的其它地址接口的其它IIC器件,所述逻辑器件的主地址以不同于任意一个其它IIC器件在主IIC总线IIC0的主地址,所述扩展IIC器件的扩展地址可以与主IIC总线IIC0的地址接口的IIC器件的地址相同。
所述逻辑器件,其结构如图5所示。逻辑器件的一端与所述主IIC总线IIC0连接,即,将总线IIC0侧的时钟总线CPU_SCL0和数据总线CPU_SDA0引入到逻辑器件中;逻辑器件的另一端与扩展IIC总线IIC1连接。另外,扩展IIC器件的扩展地址通过所述CPU的地址管脚输出;逻辑器件还包括使能端EN,所述使能端EN与CPU连接,以触发所述逻辑器件工作;逻辑器件通过地址管脚来接收所述CPU发送的扩展地址,本实施例中具体以逻辑器件的I/O管脚来实现。
在CPU访问扩展IIC总线IIC1侧的扩展IIC器件时,先通过地址管脚告知逻辑器件待访问的扩展IIC器件的设备地址,即扩展IIC器件在扩展IIC总线IIC1的扩展地址ADDR并通过使能端EN使能逻辑器件的IIC转换功能。
以下对IIC总线传输数据的过程进行描述。图3为IIC协议的起始条件。图5为逻辑器件的结构示意图,图6为IIC总线上传输数据的完整过程。
逻辑器件开始工作后,并判断IIC协议的起始条件。此时,SCL为高电平时,SDA由高电平向低电平跳变,CPU开始传送数据。其中,CPU发送的数据以1帧为单位,每帧包括8个数据位。CPU先将要访问的扩展IIC器件地址发送给逻辑器件。然后CPU使能逻辑器件,传输过程开始,并发送第一帧到逻辑器件。其中,该第一帧的7位为逻辑器件的主地址,1位为读写控制位。
再参见图5,当出现起始条件后,逻辑器件就会将主IIC总线IIC0侧的CPU_SCL0直接输出到扩展IIC总线IIC1侧的SCL1上,并将第一帧数据中的主地址替换为CPU发送的扩展地址ADDR,并将替换地址后的帧数据发送到扩展IIC总线侧。
所有扩展总线IIC1侧的IIC器件都会接收第一帧数据,并将接收到的第一帧数据的地址进行解析。当目标扩展IIC器件接收到替换后的帧数据后,解析其中的7位扩展地址并与本设备的地址相比较,结果为一致,然后扩展IIC器件再根据该帧的1位读写控制位来判断CPU读或写本器件,并在判断后向CPU发送ACK应答;对于ACK应答,逻辑器件并不进行任何地址转换,而直接透传。
CPU会继续给扩展IIC器件发送包含寄存器地址的第2帧数据,以对扩展IIC器件的寄存器进行数据访问;目标扩展IIC器件再次进行ACK应答,并返回给CPU;
如果CPU为写数据,则CPU发送数据(以帧数据的模式)经由逻辑器件透传给扩展IIC器件。扩展IIC器件每接收1帧,便进行ACK应答;
如果CPU为读数据,则扩展IIC器件发送数据经由逻辑器件透传给CPU,数据同样以帧为单位。
数据传输完成后,所述CPU使能逻辑器件。逻辑器件需要判断是否有停止位条件(SCL为低电平时,SDA由低电平向高电平跳变),如果有,则输出停止位的同时,清除所有中间过程数据。
通过此种地址转换的方式,可以解决已有的IIC总线地址冲突的问题,而无需降低IIC总线频率和引入其他延时。而且当逻辑器件主IIC总线IIC0侧的地址和扩展IIC总线IIC1侧的目标设备地址替换后,其他的IIC命令和数据就会经逻辑器件“透明传输”,中间不进行任何干预。特别是针对光模块SFP这类IIC设备地址为固定值的时候,应用本发明的方式可以实现后续的扩展。
另外,当主IIC总线负载过重时,本发明实施例可以用于IIC总线的扩展。
本发明实施例还提供一种实现IIC接口地址扩展的方法,如图7所示。其中,图7为本发明实施例的实现IIC接口地址扩展的方法的步骤图。
该方法用于包括主IIC总线、以及与所述主IIC总线连接的CPU;扩展IIC总线、连接于所述扩展IIC总线的一侧的扩展IIC器件、以及连接于所述扩展IIC总线的另一侧与所述主IIC总线的一个地址接口之间的逻辑器件的设备中;
其中,所述逻辑器件在所述CPU访问扩展IIC器件时,将所述CPU经由所述主IIC总线发送的第一帧数据中本逻辑器件在所述主IIC总线的主地址与所述扩展IIC器件在扩展IIC总线的扩展地址进行转换。
CPU访问扩展IIC器件的过程具体包括以下步骤:
a0、逻辑器件被CPU使能并接收CPU发送的扩展IIC器件的扩展地址。其中,逻辑器件通过地址管脚来接收所述CPU发送的扩展IIC器件的扩展地址ADDR,本实施例中具体以逻辑器件的I/O管脚来实现。
a1、逻辑器件接收CPU经由所述主IIC总线发送的包含逻辑器件的主地址的第一帧数据;其中,第一帧数据包括7位逻辑器件的主地址和1位读写控制位;
a2、逻辑器件将所述第一帧数据中的主地址替换为待访问的所述扩展IIC器件的扩展地址ADDR;
a3、逻辑器件将替换地址后的所述第一帧数据发送至扩展IIC总线侧。
a4、扩展IIC器件接收到替换后的所述第一帧数据后,解析其中的所述扩展地址并与本设备的地址相比较,如果一致,则读取所述第一帧数据中的所述读写控制位,并进行第一应答;
a5、所述扩展IIC器件将所述第一应答经由所述逻辑器件透传至所述CPU;
a6、所述扩展IIC器件接收所述CPU发送的经由所述逻辑器件透传的包含寄存器地址的第二帧数据,并进行第二应答;
a7、将所述第二应答经由所述逻辑器件透传至所述CPU;
a8、所述CPU接收所述应答,如果所述CPU执行写命令,则扩展IIC器件继续接收CPU发送的数据;如果所述CPU执行读命令,则所述扩展IIC器件向所述CPU发送数据。
a9、数据传输完成后,所述CPU去使能逻辑器件,逻辑器件清除所有中间过程数据。
本实施例中,主IIC总线IIC0和所述CPU可以位于主控板上,所述扩展IIC总线IIC1、所述扩展IIC器件以及所述逻辑器件可以位于模块插卡上。本实施例中,扩展IIC器件可以为光模块SFP。
下面举例来说明这个访问过程,其过程如下:
1、CPU将需要访问的扩展IIC器件地址ADDR通过逻辑器件的地址接口给逻辑器件,如目标设备地址为7’b0000011,CPU设置ADDR=7’b0000011;并且,CPU发送使能逻辑EN,允许逻辑器件进行IIC转换;逻辑器件的地址转换的使能受控于所述CPU。
其中,CPU利用所述逻辑器件在主板侧的主地址,例如7’b0000010,对扩展IIC总线侧的目标设备进行访问;
2、逻辑器件会将CPU的IIC时钟信号SCL直接透传给扩展IIC总线,同时将CPU发送过来的数据报文中的地址7’b0000010实时替换为目标设备地址7’b0000011;
3、目标设备接收数据报文,并解析地址,与本设备地址7’b0000011比较相同,说明访问的是本设备,并读取数据报文中的读写控制位,然后进行应答;
4、CPU进一步发送包含目标设备地址的寄存器地址的数据报文,目标设备接收到后,并再次应答;
5、CPU接收到应答后,如果是执行读操作,则目标设备向CPU发送数据;如果是写操作,则目标设备继续接收CPU发送的数据;
6、逻辑器件会根据数据报文中的读写控制命令(W/R),进行两侧IIC总线数据的双向透明传输;
7、访问完成后,CPU使能逻辑器件,逻辑器件清除中间过程数据。
以上是以需要访问的一个扩展IIC器件为例进行的分析,在本发明实施例中,也可以访问多个扩展IIC器件。这样可以在CPU侧用一个主地址,通过控制扩展IIC器件地址的变化,访问挂接在扩展IIC总线侧的多个扩展IIC器件。从某种意义上讲,是一个IIC地址可以扩展出一条新的IIC总线,同时不会引入任何延迟。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。