一种用于I2C总线扩展的芯片和方法与流程

文档序号:17160400发布日期:2019-03-20 00:37阅读:831来源:国知局
一种用于I2C总线扩展的芯片和方法与流程

本发明涉及板卡设计领域,更具体地,特别是指一种用于i2c总线扩展的芯片和方法。



背景技术:

i2c(inter-integratedcircuit)总线是由philips公司开发的一种简单、双向二线制同步串行总线,采用数据线sda和时钟线scl构成通信线路,各器件可通过并联到总线上实现数据收发,器件间彼此独立,通过唯一的总线地址区分,具有接线少,控制方式简单,通信速率高等优点。

i2c总线不仅接线少、控制方式简单,而且可以兼容smbus总线、pmbus总线,因此,服务器内部广泛使用i2c总线进行设备管理。由于i2c总线协议规定的总线电容不能超过400pf,因此一条i2c总线上只能挂载有限的i2c设备。当i2c总线上挂载的设备较多时,为保证信号质量和总线负载,多采用i2c切换芯片进行总线扩展,这种扩展方式不仅增加了设计成本,而且增加了板卡密度和设计难度。另外,现有的i2c切换芯片无法对异常的i2c链路进行报警并采取切实有效的保护措施来防止i2c信号“挂死”。

针对上述现有技术的缺陷,本领域亟待需要一种能够以简单有效、成本低廉的方式实现i2c总线扩展并且能够有效保护i2c信号的方案。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种用于i2c总线扩展的芯片和方法,能够解决现有技术使用外部扩展芯片成本高、布线难度大并且无法有效保护i2c信号的问题。

基于上述目的,本发明实施例的一方面提供了一种用于i2c总线扩展的芯片,包括:用于存储端口配置信息的寄存器组;可配置端口,包括多组i/o管脚,每组具有三个i/o管脚;以及控制单元,分别与寄存器组和可配置端口相连,用于根据端口配置信息单独配置每组i/o管脚的工作模式和工作状态,其中,一组i/o管脚在其被配置为i2c工作模式时,使其中的三个i/o管脚分别用于传输i2c时钟信号、i2c数据信号以及i2c报警信号;一组i/o管脚在其被配置为gpio工作模式时,使其中的三个i/o管脚分别用于独立传输gpio信号。

在一些实施方式中,寄存器组包括用于存储每组i/o管脚的工作模式选择信息的模式选择寄存器,控制单元根据工作模式选择信息将每组i/o管脚相应地配置为i2c工作模式或者gpio工作模式。

在一些实施方式中,寄存器组包括用于存储i2c通道选择信息的i2c通道选择寄存器,当至少一组i/o管脚被配置为i2c工作模式时,控制单元根据i2c通道选择信息将至少一组i/o管脚相应地配置为开启或者关闭。

在一些实施方式中,寄存器组包括用于存储gpio输入/输出模式配置信息的gpio输入/输出模式配置寄存器,当至少一组i/o管脚被配置为gpio工作模式时,控制单元根据gpio输入/输出模式配置信息将至少一组i/o管脚相应地配置为输入模式或者输出模式。

在一些实施方式中,寄存器组包括用于存储gpio状态信息的gpio状态寄存器,当至少一组i/o管脚被配置为gpio工作模式时,控制单元根据gpio状态信息将至少一组i/o管脚相应地配置为高电平或者低电平。

在一些实施方式中,芯片还包括i2c报警信息寄存器,用于存储i2c报警信息,i2c报警信息包括报警i/o管脚及其i2c时钟信号和i2c数据信号的电平。

在一些实施方式中,控制单元还用于实时监控i2c时钟信号和i2c数据信号的电平状态,当处于i2c工作模式下的至少一组i/o管脚中传输的i2c时钟信号或者i2c数据信号被拉低超过预定时间时,控制单元切断至少一组i/o管脚所在的i2c链路。

在一些实施方式中,预定时间为600ms。

在一些实施方式中,芯片还包括i2c主机接口,i2c主机接口包括i2c时钟信号线、i2c数据信号线以及i2c报警信号线,并且用于主机与芯片之间传输i2c信号。

本发明实施例的另一方面,还提供了一种用于i2c总线扩展的方法,该方法包括:

生成端口配置信息并将其存储到寄存器组中;

根据端口配置信息以三个i/o管脚为一组单独配置每组i/o管脚的工作模式和工作状态;

响应于一组i/o管脚被配置为i2c工作模式,使其中的三个i/o管脚分别用于传输i2c时钟信号、i2c数据信号以及i2c报警信号;和

响应于一组i/o管脚被配置为gpio工作模式,使其中的三个i/o管脚分别用于独立传输gpio信号。

本发明具有以下有益技术效果:本发明实施例提供的一种用于i2c总线扩展的芯片和方法采用主板上已有的芯片实现单路i2c信号扩展为多路i2c信号以及i2c信号与gpio信号的转换扩展,不需在主板上额外增加专用切换芯片,能够降低设计成本,减小板卡密度和设计难度;同时,能够对异常的i2c链路进行报警并采取切实有效的保护措施来防止i2c信号“挂死”。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的一种用于i2c总线扩展的芯片的示意性框图;和

图2为根据本发明一个实施例的一种用于i2c总线扩展的方法的示意性流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明实施例的第一个方面,提出了一种用于i2c总线扩展的芯片的一个实施例。图1示出的是该芯片的示意图。

如图1中所示,该芯片可以包括:用于存储端口配置信息的寄存器组101-104;可配置端口105,包括多组i/o管脚,每组具有三个i/o管脚;以及控制单元106,分别与寄存器组101-104和可配置端口105相连,用于读写寄存器数据并根据端口配置信息单独配置每组i/o管脚的工作模式和工作状态。其中,当一组i/o管脚被配置为i2c工作模式时,其中的三个i/o管脚分别用于传输i2c时钟信号、i2c数据信号以及i2c报警信号;当一组i/o管脚被配置为gpio工作模式时,其中的三个i/o管脚分别用于独立传输gpio信号。作为示例,图1举例说明了可配置端口105包括8组i/o管脚,其中每一组i/o管脚均可以被配置为i2c工作模式或者gpio工作模式。

在一个优选实施例中,寄存器组可以包括用于存储每组i/o管脚的工作模式选择信息的模式选择寄存器101,控制单元106可以根据工作模式选择信息将每组i/o管脚相应地配置为i2c工作模式或者gpio工作模式。例如,在图1的实施例中,模式选择寄存器101可以为8bit寄存器,其中存储的每1bit数据对应可配置端口105中的一组i/o管脚(3个),用于选择该组i/o管脚的工作模式,例如,1为i2c工作模式,0为gpio工作模式。

在一个优选实施例中,寄存器组可以包括用于存储i2c通道选择信息的i2c通道选择寄存器102,当至少一组i/o管脚被配置为i2c工作模式时,控制单元106根据i2c通道选择信息将至少一组i/o管脚相应地配置为开启或者关闭。例如,在图1的实施例中,i2c通道选择寄存器102可以为8bit寄存器,其中存储的每1bit数据对应可配置端口105中的一组i/o管脚的i2c信号(scl/sda/alert)的通断,该寄存器功能只有在模式选择寄存器101中相应组i/o管脚配置为i2c工作模式时才会生效。例如,1代表开启配置为i2c工作模式的该组i/o管脚,0代表关闭配置为i2c工作模式的该组i/o管脚。

在一个优选实施例中,寄存器组可以包括用于存储gpio输入/输出模式配置信息的gpio输入/输出模式配置寄存器103,当至少一组i/o管脚被配置为gpio工作模式时,控制单元106可以根据gpio输入/输出模式配置信息将该至少一组i/o管脚相应地配置为输入模式或者输出模式。例如,在图1的实施例中,gpio输入/输出模式配置寄存器103可以为8bit寄存器,其中存储的每1bit数据对应可配置端口105中被配置为gpio工作模式的一组i/o管脚的输入输出模式,该寄存器功能只有在模式选择寄存器101中相应组i/o管脚配置为gpio工作模式时才会生效。例如,1代表配置为gpio工作模式的该组i/o管脚为输入模式,0代表配置为gpio工作模式的该组i/o管脚为输出模式。

在一个优选实施例中,寄存器组可以包括用于存储gpio状态信息的gpio状态寄存器104,当至少一组i/o管脚被配置为gpio工作模式时,控制单元106可以根据gpio状态信息将该至少一组i/o管脚相应地配置为高电平或者低电平。例如,在图1的实施例中,gpio状态寄存器104可以为三个8bit寄存器,其中存储的每3bit数据对应可配置端口105中被配置为gpio工作模式的一组中三个i/o管脚的实时状态,该寄存器功能只有在模式选择寄存器101中相应组i/o管脚配置为gpio工作模式时才会生效。例如,1代表配置为gpio工作模式的i/o管脚为高电平状态,0代表配置为gpio工作模式的i/o管脚为低电平状态。

在一个优选实施例中,该芯片还可以包括i2c报警信息寄存器(未示出),用于存储i2c报警信息。其中,i2c报警信息可以包括报警i/o管脚及其i2c时钟信号和i2c数据信号的电平。例如,i2c报警信息寄存器可以包括多个寄存器,分别存储报警i/o管脚及其i2c时钟信号和i2c数据信号的电平(scl低、sda低等)。

在一个优选实施例中,控制单元106还可以实时监控i2c时钟信号和i2c数据信号的电平状态,当处于i2c工作模式下的至少一组i/o管脚中传输的i2c时钟信号或者i2c数据信号被设备端拉低超过预定时间(例如,600ms)时,控制单元106既可判断该至少一组i/o管脚所在的i2c链路异常,从而自动切断该链路与主机i2c信号之间的连接,防止i2c信号被设备端拉低而导致i2c信号“挂死”。

在一个优选实施例中,该芯片还可以包括i2c主机接口,i2c主机接口包括i2c时钟信号线(scl)、i2c数据信号线(sda)以及i2c报警信号线(alert),并且用于主机与芯片之间传输i2c信号,实现主机对寄存器组的读写功能。

应当领会的是,本发明并不受图1的实施例所限制,亦即,本领域的技术人员在本发明的教导下可以对图1的实施例做出适当修改,例如,可以根据实际情况选择可配置端口105中的i/o管脚的数量、相应的寄存器等,本发明的芯片可以是主板上已有的cpld芯片或者fpga芯片。本发明的芯片可以兼容smbus总线、pmbus总线,实现smbus和pmbus的扩展和保护。

本发明的上述实施例采用主板上已有的芯片实现单路i2c信号扩展为多路i2c信号以及i2c信号与gpio信号的转换扩展,不需在主板上额外增加专用切换芯片,能够降低设计成本,减小板卡密度和设计难度;同时,能够对异常的i2c链路进行报警并采取切实有效的保护措施来防止i2c信号“挂死”。

基于上述目的,本发明实施例的第二个方面,提出了一种用于i2c总线扩展的方法的一个实施例。该方法可以包括如下步骤:生成端口配置信息并将其存储到寄存器组中;根据端口配置信息以三个i/o管脚为一组单独配置每组i/o管脚的工作模式和工作状态;响应于一组i/o管脚被配置为i2c工作模式,而使其中的三个i/o管脚分别用于传输i2c时钟信号、i2c数据信号以及i2c报警信号;响应于一组i/o管脚被配置为gpio工作模式,而使其中的三个i/o管脚分别用于独立传输gpio信号。

图2示出的是该方法的一个优选实施例的示意性流程图。如图2中所示,在步骤s201,系统启动后,主机通过i2c接口配置每组i/o管脚的工作模式,各组i/o管脚相互独立,可单独进行配置,若配置为i2c工作模式,则进入步骤s202,若配置为gpio工作模式,则进入步骤s206;在步骤s202,主机选择i2c通道的开启或者关闭,若选择开启,则进入步骤s203,否则该方法结束;在步骤s203,主机与开启的该通道i2c设备进行数据通信,通信过程中判断是否有报警信息(步骤s204),若存在报警信息,则进入步骤s205,若不存在报警信息,则该方法结束;在步骤s205,主机可以查询具体报警通道和详细报警信息;在步骤s206,主机配置gpio工作模式下的i/o管脚的输入模式或者输出模式,然后进入步骤s207;在步骤s207,主机为输出管脚配置输出状态,1为高,0为低;接下来,在步骤s208,主机查询输入管脚电平状态,1为高,0为低。

需要特别指出的是,上述方法的实施例可以采用上述芯片的所有实施例描述来具体说明相应的步骤,本领域技术人员能够很容易想到,将上述芯片的这些模块或单元应用到所述方法的其他实施例中。所述方法的任何一个实施例可以达到与之对应的前述任意芯片实施例相同或者相类似的效果。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。

以上是本发明公开的示例性实施例,上述本发明实施例公开的顺序仅仅为了描述,不代表实施例的优劣。但是应当注意,以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子,在不背离权利要求限定的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1