CN116126769A - 用于串行总线的隔离电路及设备隔离方法 - Google Patents
用于串行总线的隔离电路及设备隔离方法 Download PDFInfo
- Publication number
- CN116126769A CN116126769A CN202211586048.6A CN202211586048A CN116126769A CN 116126769 A CN116126769 A CN 116126769A CN 202211586048 A CN202211586048 A CN 202211586048A CN 116126769 A CN116126769 A CN 116126769A
- Authority
- CN
- China
- Prior art keywords
- hot plug
- unit
- external device
- state
- serial bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000002955 isolation Methods 0.000 title claims abstract description 65
- 238000004891 communication Methods 0.000 claims abstract description 92
- 238000001514 detection method Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 13
- 230000003993 interaction Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 101150111792 sda1 gene Proteins 0.000 description 5
- 101150075681 SCL1 gene Proteins 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101100328957 Caenorhabditis elegans clk-1 gene Proteins 0.000 description 1
- 101100113692 Caenorhabditis elegans clk-2 gene Proteins 0.000 description 1
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供一种用于串行总线的隔离电路及设备隔离方法,该隔离电路包括:热插拔信号控制单元,用于根据外接设备的通讯状态生成对应的热插拔信号,并将热插拔信号发送到第一串行总线上的热插拔单元,以对热插拔单元进行控制;IO检测单元通过第二串行总线与主板上的基板管理控制器连接,用于根据热插拔单元当前时刻的运行状态,获取外接设备的通讯状态,并通过通讯状态确定当前时刻BMC对第一串行总线的控制权限;开关单元通过第一串行总线与外接设备连接,通过第二串行总线与BMC连接,用于根据控制权限对BMC与外接设备之间的通道进行通断切换。本发明避免了从设备I2C通信与主板I2C总线通信之间的干扰。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种用于串行总线的隔离电路及设备隔离方法。
背景技术
两线式串行总线(Inter-Integrated Circuit,简称I2C)协议是一种两线制的串行通信方式,包括串行数据线(Serial Data Line,简称SDA)和串行时钟线(Serial ClockLine,简称SCL),提供了主从机之间通行的一种方案。连接到I2C总线上的设备通过这两根线互相传递信息,由于SDA和SCL都是双向线,可以互相之间进行信息的交互,但是I2C总线是一种同步半双工的通信方式,同一时刻只能有一个方向进行数据的操作,不能同时进行数据交互。
I2C总线作为一个多主机的总线,支持多个主机同时在总线上发送数据,但是同一时刻只能有一个主机传送数据。因此,必须要通过仲裁的方式,决定哪个主机获得总线的控制权,其它没有获得主机控制权的设备就只能进行等待,直到获得总线控制权才能进行数据的传输。
在现有服务器设计中,基板管理控制器(Baseboard Management Controller,简称BMC)作为主板上I2C总线的唯一主设备,通过系统管理总线(System Management Bus,简称SMBUS)连接主板上的从设备,以及连接各外接设备的I2C总线。对于各种各样的外接设备,这些外接设备自身也会存在复杂的SMBUS总线,其中也包括自身的I2C主设备,以实现自我监控和管理功能。在目前的I2C总线的通信方式中,同一时刻只能实现一个主设备和一个从设备之间的通讯(理论上讲,如果两个主机所传输的内容完全相同,那么它们能够成功传输而不出现错误,该情况除外),其他设备都被动处在空闲状态。然而,在多主多从的I2C总线中,任一从设备,都有可能受到多个主设备的频繁访问,任一主设备的通讯,都会造成其他主设备的等待,导致从设备I2C通信与主板I2C总线通信之间存在干扰,造成服务器的SMBUS管理出错。因此,现在亟需一种用于串行总线的隔离电路及设备隔离方法来解决上述问题。
发明内容
针对现有技术存在的问题,本发明提供一种用于串行总线的隔离电路及设备隔离方法。
本发明提供一种用于串行总线的隔离电路,包括热插拔信号控制单元、输入输出IO检测单元和开关单元,其中:
所述热插拔信号控制单元,用于根据外接设备的通讯状态生成对应的热插拔信号,并将所述热插拔信号发送到第一串行总线上的热插拔单元,以对所述热插拔单元的运行状态进行控制;
所述IO检测单元通过第二串行总线与主板上的基板管理控制器BMC连接,用于根据所述热插拔单元当前时刻的运行状态,获取所述外接设备的通讯状态,并通过所述通讯状态确定当前时刻所述BMC对所述第一串行总线的控制权限;
所述开关单元通过所述第一串行总线与所述外接设备连接,通过所述第二串行总线与所述BMC连接,用于根据所述控制权限对所述BMC与所述外接设备之间的通道进行通断切换;
其中,所述第一串行总线为所述外接设备的串行总线,所述第二串行总线为所述主板的串行总线,所述串行总线包括串行数据线和串行时钟线。
根据本发明提供的一种用于串行总线的隔离电路,所述IO检测单元为IO扩展器,所述IO扩展器的第一扩展接口连接所述热插拔信号控制单元,所述IO扩展器的第二扩展接口连接所述热插拔单元。
根据本发明提供的一种用于串行总线的隔离电路,所述热插拔信号控制单元包括逻辑与门电路和逻辑或门电路,其中:
所述逻辑或门电路的第一输入端与所述IO检测单元连接,所述逻辑或门电路的第二输入端连接所述逻辑与门电路的输出端,所述逻辑或门电路的输出端连接所述热插拔单元;
所述逻辑与门电路的输入端连接所述第一串行总线。
根据本发明提供的一种用于串行总线的隔离电路,所述第一串行总线的串行时钟线反向串接二极管。
本发明还提供一种基于上述提供的用于串行总线的隔离电路的设备隔离方法,包括:
通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;
通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;
对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
根据本发明提供的一种设备隔离方法,所述通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,包括:
若所述外接设备当前时刻的通讯状态为空闲状态,基于所述热插拔信号控制单元,生成热插拔高电平信号;
将所述热插拔高电平信号发送到所述热插拔单元,以控制所述热插拔单元处于开启状态,并得到第一热插拔信号,所述第一热插拔信号为所述热插拔单元根据所述热插拔高电平信号生成的高电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第一热插拔信号,确定所述热插拔单元当前时刻的运行状态为开启状态的情况下,获取所述外接设备当前时刻处于空闲状态。
根据本发明提供的一种设备隔离方法,所述方法还包括:
若所述外接设备当前时刻的通讯状态为数据传输状态,基于所述热插拔信号控制单元,生成热插拔低电平信号;
将所述热插拔低电平信号发送到所述热插拔单元,以控制所述热插拔单元处于关闭状态,并得到第二热插拔信号,所述第二热插拔信号为所述热插拔单元根据所述热插拔低电平信号生成的低电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第二热插拔信号,确定所述热插拔单元当前时刻的运行状态为关闭状态的情况下,获取所述外接设备当前时刻处于数据传输状态。
根据本发明提供的一种设备隔离方法,所述对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换,包括:
若所述外接设备当前时刻处于空闲状态,开启所述BMC与所述外接设备之间的通道;
若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开。
根据本发明提供的一种设备隔离方法,在所述若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开之后,所述方法还包括:
在所述外接设备的通讯状态处于数据传输状态的时长大于预设时长的情况下,开启所述BMC与所述外接设备之间的通道;
基于总线仲裁方式,确定所述BMC对所述第一串行总线的控制权限。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述设备隔离方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述设备隔离方法。
本发明提供的用于串行总线的隔离电路及设备隔离方法,通过设置一个IO检测单元,使得主板上的BMC可根据外接设备的热插拔单元,获取到外接设备的I2C总线状态,进而再根据外接设备的I2C总线状态,在确定主设备与外接设备之间当前时刻不可进行数据传输时,通过开关单元,使得主设备与外接设备之间保持断路,使得当前正处于通讯状态的外接设备与主设备进行隔离,避免了从设备I2C通信与主板I2C总线通信之间的干扰。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术串行总线仲裁过程中的时间同步示意图;
图2为现有技术中两个主机的仲裁过程的示意图;
图3为本发明提供的多主多从I2C总线的连接示意图;
图4为本发明提供的用于串行总线的隔离电路的结构示意图;
图5为本发明提供的一种用于串行总线的隔离电路的整体结构示意图;
图6为本发明提供的设备隔离方法的流程示意图;
图7为本发明提供的设备隔离过程的整体流程示意图;
图8为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的I2C总线仲裁的方式分两部分,分别为时钟同步和仲裁。其中,时钟同步是通过时钟线SCL来实现的。图1为现有技术串行总线仲裁过程中的时间同步示意图,可参考图1所示,当主设备1的时钟(CLK1)变为低电平的时候,它会使SCL保持这个电平状态直到达到高电平;假如这个时候有另外一个主设备2的时钟(CLK2)依然是处于低电平,则CLK1从低到高的变化不会改变SCL线的状态(依旧处于低电平)。因此,SCL线将被有着最长低电平周期的器件(主设备2)占有总线的控制权,而这个时候低电平周期短的器件(主设备1)会进入高电平的等待状态,因此,当前的主器件(主设备1)释放总线控制权后,主设备2能够获得总线控制权。
由于只有在串行总线空闲的时候,主机才可以启动数据传输,当两个主机可能几乎同时在串行总线上产生一个有效的起始信号时,这种情况下需要通过仲裁,来决定由哪个主机占有总线控制权以完成数据传输。现有串行总线的仲裁是逐位进行的,在每一位数据的仲裁期间,图2为现有技术中两个主机的仲裁过程的示意图,可参考图2所示,当时钟线SCL为高电平时,每个主机都检查数据总线SDA上的电平信号是否和自己要发送的相同。由于这个过程需要持续很多位,理论上讲,如果两个主机所传输的内容完全相同,那么他们能够成功传输而不出现错误。但是,如果一个主机发送高电平,但检测到SDA总线上的电平为低时,则认为自己仲裁失败,并关闭自己的SDA数据线上的数据传输,而另一个主机则继续完成自己的传输。
在目前的服务器设计中,BMC作为主板上I2C总线的唯一主设备,通过SMBUS总线连接主板上的各个从设备,以及连接各外接设备对应的I2C总线。对于各种各样的外接设备,由于本身也会存在复杂的SMBUS总线,其中也包括自己的I2C主设备,以实现自我监控和管理功能。因此,在服务器整机中,出现了多主多从的I2C拓扑,图3为本发明提供的多主多从I2C总线的连接示意图,可参考图3所示,主板BMC称为主设备master0,主板从设备为slave0_x;多个外接设备中的主设备分别为master1,master2,…,masterN,各外接设备中的从设备为slave1_x,slave2_x,…,slaveN_x,N=0,1,2,…,x=0,1,2,…。master0作为最高主设备,当主动访问master1或master2时,clk时钟来自master0,此时,master1或master2主动转为从设备;并且,master0会通过定期轮询或触发方式,去访问任一i2c设备,而master1和master2也会定期轮询各自的i2c从设备。
在现有I2C总线的通信方式中,同一时刻,只能实现一个主设备和一个从设备之间的通讯(理论上讲,如果两个主机所传输的内容完全相同,那么他们能够成功传输而不出现错误,该情况除外),其它设备都被动处在空闲状态。因此,在多主多从的I2C总线中,任一从设备,都有可能受到多个主设备的频繁访问;任一主设备的通讯,都会造成其他主设备的等待;并且,master1和master2等设备拉低SCL的行为,存在一定概率造成master0的I2C挂死,造成服务器的SMBUS管理出错。基于上述现有技术中存在的问题,本发明通过设置用于串行总线的隔离电路,从而隔绝外接设备自身的I2C通讯对主板I2C通讯的影响;同时,还可在SCL上反向串联二极管,提高主板上master0的仲裁优先级,防止外接设备主动拉低SCL的行为造成主板BMC的I2C总线挂死的情况。
图4为本发明提供的用于串行总线的隔离电路的结构示意图,如图4所示,本发明提供了一种用于串行总线的隔离电路,包括热插拔信号控制单元401、输入输出IO检测单元402和开关单元403,其中:
所述热插拔信号控制单元401,用于根据外接设备的通讯状态生成对应的热插拔信号,并将所述热插拔信号发送到第一串行总线上的热插拔单元,以对所述热插拔单元的运行状态进行控制;
所述IO检测单元402通过第二串行总线与主板上的基板管理控制器BMC连接,用于根据所述热插拔单元当前时刻的运行状态,获取所述外接设备的通讯状态,并通过所述通讯状态确定当前时刻所述BMC408对所述第一串行总线的控制权限;
所述开关单元403通过所述第一串行总线与所述外接设备连接,通过所述第二串行总线与所述BMC连接,用于根据所述控制权限对所述BMC与所述外接设备之间的通道进行通断切换;
其中,所述第一串行总线为所述外接设备的串行总线,所述第二串行总线为所述主板的串行总线,所述串行总线包括串行数据线和串行时钟线。
在本发明中,以主板的BMC与外接设备之间的通信进行说明,BMC一端的串行总线为SMBUS总线,通过开关单元403与外接设备一端的I2C总线连接。具体地,本发明在现有主多从I2C总线的线路中,增加受控的I2C隔离电路,当外接设备的I2C总线被占用时,或主板无访问外接设备需求时,通过该隔离电路,使得主板与外接设备之间的I2C通道关闭。
在本发明中,通过增加输入输出(Input/Output,简称IO)检测单元402,无需打开BMC与外接设备之间的I2C通道,也可以判断外接设备此时的I2C总线状态。进一步地,外接设备实时的I2C总线状态是基于热插拔单元当前的运行状态来确定的,当BMC与外接设备之间的I2C通道保持断开的情况下,本发明通过热插拔信号控制单元401,根据外接设备当前时刻的通讯状态(即外接设备当前是否在于其它设备之间进行数据交互),从而生成对应的热插拔信号,进而将该热插拔信号发送到热插拔单元中,以控制该热插拔单元开启或关闭,使得IO检测单元402可根据热插拔单元的状态,确定外接设备的I2C总线当前的通讯状态,即判断外接设备是处于空闲状态还是数据交互状态。在外接设备的I2C总线处于空闲状态时,BMC可通过相关指令开启开关单元403(BMC与外接设备之间的通道默认为断开),使得BMC与外接设备之间保持通路,而当外接设备的I2C总线处于数据交互状态时,此时保持BMC与外接设备之间的通道为断路,等待外接设备的I2C总线处于空闲状态后(依旧是通过IO检测单元402确定),再开启BMC与外接设备之间的通道,使得BMC与外接设备进行数据交互。
本发明提供的用于串行总线的隔离电路,通过设置一个IO检测单元,使得主板上的BMC可根据外接设备的热插拔单元,获取到外接设备的I2C总线状态,进而再根据外接设备的I2C总线状态,在确定主设备与外接设备之间当前时刻不可进行数据传输时,通过开关单元,使得主设备与外接设备之间保持断路,使得当前正处于通讯状态的外接设备与主设备进行隔离,避免了从设备I2C通信与主板I2C总线通信之间的干扰。
在上述实施例的基础上,所述IO检测单元为IO扩展器,所述IO扩展器的第一扩展接口连接所述热插拔信号控制单元,所述IO扩展器的第二扩展接口连接所述热插拔单元。
在本发明中,IO检测单元为IO扩展器,可利用IO扩展器上的多个扩展接口,分别与热插拔信号控制单元401以及热插拔单元对应连接,从而实现通过不同的扩展接口,对热插拔单元进行控制以及获取热插拔单元的状态信号。
在上述实施例的基础上,所述热插拔信号控制单元包括逻辑与门电路和逻辑或门电路,其中:
所述逻辑或门电路的第一输入端与所述IO检测单元连接,所述逻辑或门电路的第二输入端连接所述逻辑与门电路的输出端,所述逻辑或门电路的输出端连接所述热插拔单元;
所述逻辑与门电路的输入端连接所述第一串行总线。
在本发明中,通过一个逻辑或门电路和一个逻辑与门电路,构建得到热插拔信号控制单元,从而实现对热插拔单元的控制。当外接设备一端的I2C总线(可定义为SDA1与SCL1)均为高电平时,或IO检测单元向402向热插拔信号控制单元输入的信号为高电平时,此时热插拔单元处于开启状态,使得BMC与外接设备之间可以进行I2C通讯。
在上述实施例的基础上,所述第一串行总线的串行时钟线反向串接二极管。
在本发明中,通过在外接设备的串行时钟线上反向串接二极管D1,以阻止外接设备的CLK信号进入主板SMBUS网络,并且,在时钟同步环节,使得主设备优先级高于外接设备,从而提高主板上主设备的仲裁优先级,并防止了外接设备拉低clk信号,导致出现概率性的主设备I2C总线挂死的情况。
图5为本发明提供的一种用于串行总线的隔离电路的整体结构示意图,可参考图5所示,主板master0的总线I2C0(即SMBUS总线)与外接设备master1的总线I2C1默认是断开的,即开关单元(I2C-switch)U2的通道channel_0为关闭状态,此时,主板端的IP检测单元(IO-expander)U1用于控制热插拔单元(I2C-hotswap)U3的信号IO_0_0也是low。在本发明中,开关单元U2为I2C-switch,可设置一路BMC一端的I2C通道,转出对应不同外接设备的多路I2C子通道,当使用哪一路通道时,通过相关指令打开该通道,其余通道关闭,热插拔单元U3为I2C hotswap,用于对I2C线路进行热插拔保护。
进一步地,U3的状态受I2C1(即SCDA1和SCL1)的状态控制,当I2C1空闲时,SDA1和SCL1中的信号均为high,经热插拔信号控制单元中的逻辑与门电路U5和逻辑或门电路U4处理后,使得进入U3的ENABLE信号为high,此时U3开启,进而使得U3输入至U1的READT信号为high,从而可通过U1相应扩展接口(即IO_1_0)获取到外接设备的I2C总线此时的通讯状态。优选地,在本发明中,对于多个外接设备,可构建对应的多个隔离电路,每个隔离电路中均包括一个U4和U5,并且与各个外接设备的I2C总线上对应的U3,通过U1中其它的扩展接口以及U2中相应的通道进行连接,连接方式可参考图5所示,例如,U1中的其它两个扩展接口(除IO_0_0和IO_1_0以外的接口),分别与其他外接设备对应的隔离电路中的U4以及U3连接,其功能与IO_0_0和IO_1_0一样;同时,U2中的通道接口(如channel1_1)与对应外接设备的I2C总线上的U3连接。
进一步地,当I2C1通讯时,SDA1/SCL1中的信号为非high,经U5和U4处理后,输入U3的ENABLE信号为low,使得U3关闭,此时,U3的READY信号为low,进而使得master0通过读取U1的IO_1_0的状态,来判断I2C1是否处在空闲状态,再确定是否访问I2C1总线。
具体地,可参考图5所示,当外接设备的I2C1总线处在空闲状态时,master0可通过指令打开U2的channel_0,将U3的IO_0_0置high(U3会保持开启),使得master0可访问I2C1总线上的设备,在访问结束后主动关闭该通道channel_0。当I2C1处在通讯状态时,master0会在一定时间内等待,直到I2C1空闲再开启通道,进行通讯。
优选地,在一实施例中,当外接设备的I2C1总线长时间通讯时(如通讯时长超过了预设时长,或BMC此时需要访问的数据具有较高优选级),master0一直等待不到空闲,则master0会强制打开U2中对应的通道,与master1争夺I2C1总线的控制权。由于在外接设备的SCL信号线上反向串联二极管D1,因此master0在时钟同步环节,不会退出;若master1在时钟同步环节也未退出,则master0和master1再进行逐位仲裁,若master0赢得仲裁,则可开启U2上对应的通道,顺利访问I2C1总线上的设备,若master1赢得仲裁,则master0停止本次访问,关闭通道。
本发明提供的用户串行总线的隔离电路,通过增加IO-expander、逻辑与门和逻辑或门,实现了对I2C-hotswap的控制,并通过读取IO-expander相应扩展接口的IO状态,获取外接设备的I2C总线当前时刻的状态,从而确定BMC此时是否可与外接设备进行通讯,以开启对应的连接通道;同时,通过在外接设备的SCL信号线上反向串联二极管,提高了master0的仲裁优先级,并防止master1拉低SCL概率性造成master0总线挂死的情况。
图6为本发明提供的设备隔离方法的流程示意图,如图6所示,本发明提供了一种基于上述实施例提供的用于串行总线的隔离电路的设备隔离方法,包括:
步骤601,通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;
步骤602,通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;
步骤603,对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
在本发明中,以主板的BMC与外接设备之间的通信进行说明,BMC一端的串行总线为SMBUS总线,通过开关单元与外接设备一端的I2C总线连接。具体地,本发明在现有主多从I2C总线的线路中,增加受控的I2C隔离电路,当外接设备的I2C总线被占用时,或主板无访问外接设备需求时,通过该隔离电路,使得主板与外接设备之间的I2C通道关闭。
具体地,在本发明中,通过隔离电路中的IO检测单元,在BMC与外接设备之间的I2C通道为断路时,也可以判断外接设备此时的I2C总线状态。进一步地,外接设备实时的I2C总线状态是基于热插拔单元当前时刻的运行状态来确定的,当BMC与外接设备之间的I2C通道保持断开的情况下,本发明通过热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成对应的热插拔信号,进而将该热插拔信号发送到热插拔单元中,以控制该热插拔单元开启或关闭,使得IO检测单元可根据热插拔单元的状态,确定外接设备的I2C总线当前的通讯状态,即判断外接设备是处于空闲状态还是数据交互状态。
在一实施例中,当外接设备的I2C总线处于空闲状态时,BMC可通过相关指令开启开关单元,使得BMC与外接设备之间保持通路,而当外接设备的I2C总线处于数据交互状态时,此时保持BMC与外接设备之间的通道为断路,需要等待外接设备的I2C总线处于空闲状态后,再开启BMC与外接设备之间的通道,使得BMC与外接设备进行数据交互。
本发明提供的设备隔离方法,通过设置一个IO检测单元,使得主板上的BMC可根据外接设备的热插拔单元,获取到外接设备的I2C总线状态,进而再根据外接设备的I2C总线状态,在确定主设备与外接设备之间当前时刻不可进行数据传输时,通过开关单元,使得主设备与外接设备之间保持断路,使得当前正处于通讯状态的外接设备与主设备进行隔离,避免了从设备I2C通信与主板I2C总线通信之间的干扰。
在上述实施例的基础上,所述通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,包括:
若所述外接设备当前时刻的通讯状态为空闲状态,基于所述热插拔信号控制单元,生成热插拔高电平信号;
将所述热插拔高电平信号发送到所述热插拔单元,以控制所述热插拔单元处于开启状态,并得到第一热插拔信号,所述第一热插拔信号为所述热插拔单元根据所述热插拔高电平信号生成的高电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第一热插拔信号,确定所述热插拔单元当前时刻的运行状态为开启状态的情况下,获取所述外接设备当前时刻处于空闲状态。
图7为本发明提供的设备隔离过程的整体流程示意图,可参考图7所示,在初始状态下,IO检测单元U1的扩展接口IO_0_0默认输出信号为low,开关单元U2中BMC与外接设备之间的通道channel_0为断开关闭状态。此时,U3的状态受I2C1(即SCDA1和SCL1)的状态控制,当I2C1空闲时,SDA1和SCL1中的信号均为high,经热插拔信号控制单元中的逻辑与门电路U5和逻辑或门电路U4处理后,使得进入U3的ENABLE信号为high,此时U3开启,进而使得U3输入至U1的READT信号为high,从而可通过U1相应扩展接口获取到外接设备的I2C总线此时的通讯状态。
进一步地,当I2C1通讯时,SDA1/SCL1中的信号为非high,经U5和U4处理后,输入U3的ENABLE信号为low,使得U3关闭,此时,U3的READY信号为low,进而使得master0通过读取U1的IO_1_0的状态,来判断I2C1是否处在空闲状态,再确定是否访问I2C1总线。
在上述实施例的基础上,所述方法还包括:
若所述外接设备当前时刻的通讯状态为数据传输状态,基于所述热插拔信号控制单元,生成热插拔低电平信号;
将所述热插拔低电平信号发送到所述热插拔单元,以控制所述热插拔单元处于关闭状态,并得到第二热插拔信号,所述第二热插拔信号为所述热插拔单元根据所述热插拔低电平信号生成的低电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第二热插拔信号,确定所述热插拔单元当前时刻的运行状态为关闭状态的情况下,获取所述外接设备当前时刻处于数据传输状态。
在上述实施例的基础上,所述对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换,包括:
若所述外接设备当前时刻处于空闲状态,开启所述BMC与所述外接设备之间的通道;
若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开。
在本发明中,可参考图7所示,通过BMC读取U1的IO_1_0接口的值,若确定外接设备的I2C1总线处在空闲状态,master0可通过指令打开U2的channel_0,将U3的IO_0_0置high(U3会保持开启),使得master0可访问I2C1总线上的设备,在访问结束后主动关闭该通道channel_0,恢复到初始状态。若确定I2C1处在通讯状态时,master0会在一定时间内等待(如BMC在多个周期n内循环读取U1的IO_1_0),直到I2C1空闲再开启通道,进行通讯。
在上述实施例的基础上,在所述若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开之后,所述方法还包括:
在所述外接设备的通讯状态处于数据传输状态的时长大于预设时长的情况下,开启所述BMC与所述外接设备之间的通道;
基于总线仲裁方式,确定所述BMC对所述第一串行总线的控制权限。
在本发明中,可参考图7所示,可在外接设备的I2C总线的SCL线上反向串接二极管。当外接设备的I2C1总线长时间通讯时,如BMC循环了n个周期去读取U1的IO_1_0,若n大于或等于预设周期x,则表示外接设备的I2C1总线的通讯时长超过了预设时长,master0一直等待不到空闲,则master0会强制打开U2中对应的通道,与master1争夺I2C1总线的控制权,在一实施例中,还可根据BMC此时需要访问的数据的重要程度,确定BMC对于外接设备的I2C1总线的控制器优选级,若优先级为最高级别,则需要强制将外接设备的I2C1总线的控制权赋予给BMC。由于本发明在外接设备的SCL信号线上反向串联二极管,因此master0在时钟同步环节,不会退出;若master1在时钟同步环节也未退出,则master0和master1再进行逐位仲裁,若master0赢得仲裁,则可开启U2上对应的通道,顺利访问I2C1总线上的设备,若master1赢得仲裁,则master0停止本次访问,关闭通道。
图8为本发明提供的电子设备的结构示意图,如图8所示,该电子设备可以包括:处理器(Processor)801、通信接口(Communications Interface)802、存储器(Memory)803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信。处理器801可以调用存储器803中的逻辑指令,以执行设备隔离方法,该方法包括:通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
此外,上述的存储器803中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的设备隔离方法,该方法包括:通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的设备隔离方法,该方法包括:通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种用于串行总线的隔离电路,其特征在于,包括热插拔信号控制单元、输入输出IO检测单元和开关单元,其中:
所述热插拔信号控制单元,用于根据外接设备的通讯状态生成对应的热插拔信号,并将所述热插拔信号发送到第一串行总线上的热插拔单元,以对所述热插拔单元的运行状态进行控制;
所述IO检测单元通过第二串行总线与主板上的基板管理控制器BMC连接,用于根据所述热插拔单元当前时刻的运行状态,获取所述外接设备的通讯状态,并通过所述通讯状态确定当前时刻所述BMC对所述第一串行总线的控制权限;
所述开关单元通过所述第一串行总线与所述外接设备连接,通过所述第二串行总线与所述BMC连接,用于根据所述控制权限对所述BMC与所述外接设备之间的通道进行通断切换;
其中,所述第一串行总线为所述外接设备的串行总线,所述第二串行总线为所述主板的串行总线,所述串行总线包括串行数据线和串行时钟线。
2.根据权利要求1所述的用于串行总线的隔离电路,其特征在于,所述IO检测单元为IO扩展器,所述IO扩展器的第一扩展接口连接所述热插拔信号控制单元,所述IO扩展器的第二扩展接口连接所述热插拔单元。
3.根据权利要求1所述的用于串行总线的隔离电路,其特征在于,所述热插拔信号控制单元包括逻辑与门电路和逻辑或门电路,其中:
所述逻辑或门电路的第一输入端与所述IO检测单元连接,所述逻辑或门电路的第二输入端连接所述逻辑与门电路的输出端,所述逻辑或门电路的输出端连接所述热插拔单元;
所述逻辑与门电路的输入端连接所述第一串行总线。
4.根据权利要求1所述的用于串行总线的隔离电路,其特征在于,所述第一串行总线的串行时钟线反向串接二极管。
5.一种基于权利要求1至4任一项所述用于串行总线的隔离电路的设备隔离方法,其特征在于,包括:
通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,其中,所述热插拔信号是基于热插拔信号控制单元,根据外接设备当前时刻的通讯状态生成的;
通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态;
对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换。
6.根据权利要求5所述的设备隔离方法,其特征在于,所述通过热插拔信号,对主板上的基板管理控制器BMC与所述外接设备之间的热插拔单元进行控制,获取所述热插拔单元当前时刻的运行状态,包括:
若所述外接设备当前时刻的通讯状态为空闲状态,基于所述热插拔信号控制单元,生成热插拔高电平信号;
将所述热插拔高电平信号发送到所述热插拔单元,以控制所述热插拔单元处于开启状态,并得到第一热插拔信号,所述第一热插拔信号为所述热插拔单元根据所述热插拔高电平信号生成的高电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第一热插拔信号,确定所述热插拔单元当前时刻的运行状态为开启状态的情况下,获取所述外接设备当前时刻处于空闲状态。
7.根据权利要求6所述的设备隔离方法,其特征在于,所述方法还包括:
若所述外接设备当前时刻的通讯状态为数据传输状态,基于所述热插拔信号控制单元,生成热插拔低电平信号;
将所述热插拔低电平信号发送到所述热插拔单元,以控制所述热插拔单元处于关闭状态,并得到第二热插拔信号,所述第二热插拔信号为所述热插拔单元根据所述热插拔低电平信号生成的低电平READY信号;
所述通过输入输出IO检测单元,根据所述热插拔单元当前时刻的运行状态,获取所述外接设备当前时刻的通讯状态,包括:
基于所述IO检测单元,在根据所述第二热插拔信号,确定所述热插拔单元当前时刻的运行状态为关闭状态的情况下,获取所述外接设备当前时刻处于数据传输状态。
8.根据权利要求7所述的设备隔离方法,其特征在于,所述对所述外接设备当前时刻的通讯状态进行判断,并根据判断结果,对所述BMC与所述外接设备之间的通道进行通断切换,包括:
若所述外接设备当前时刻处于空闲状态,开启所述BMC与所述外接设备之间的通道;
若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开。
9.根据权利要求8所述的设备隔离方法,其特征在于,在所述若所述外接设备当前时刻处于数据传输状态,保持所述BMC与所述外接设备之间的通道断开之后,所述方法还包括:
在所述外接设备的通讯状态处于数据传输状态的时长大于预设时长的情况下,开启所述BMC与所述外接设备之间的通道;
基于总线仲裁方式,确定所述BMC对所述第一串行总线的控制权限。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求5至9任一项所述设备隔离方法。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求5至9任一项所述设备隔离方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211586048.6A CN116126769A (zh) | 2022-12-09 | 2022-12-09 | 用于串行总线的隔离电路及设备隔离方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211586048.6A CN116126769A (zh) | 2022-12-09 | 2022-12-09 | 用于串行总线的隔离电路及设备隔离方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116126769A true CN116126769A (zh) | 2023-05-16 |
Family
ID=86303567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211586048.6A Pending CN116126769A (zh) | 2022-12-09 | 2022-12-09 | 用于串行总线的隔离电路及设备隔离方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126769A (zh) |
-
2022
- 2022-12-09 CN CN202211586048.6A patent/CN116126769A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR19990009678A (ko) | 다층 구조의 아이 2씨 버스를 이용한 진단/제어 시스템 | |
CN101169774B (zh) | 一种多处理器系统、共享控制装置及启动从处理器的方法 | |
CN110896372B (zh) | 一种i2c链路切换方法、终端及存储介质 | |
CN110515343B (zh) | 通信连接装置、可编程逻辑控制器、通讯方法及产品 | |
CN115033515A (zh) | 一种主从spi通信方法 | |
CN214225796U (zh) | 时间同步电路 | |
US6175887B1 (en) | Deterministic arbitration of a serial bus using arbitration addresses | |
EP3736682A1 (en) | Refreshing method, apparatus and system, and memory controller | |
CN113132198A (zh) | 一种多主一从的spi安全通信装置及通信方法 | |
CN116126769A (zh) | 用于串行总线的隔离电路及设备隔离方法 | |
CN111737183A (zh) | 一种服务器及一种i2c总线的通信故障处理方法和系统 | |
CN116909977A (zh) | 一种多机通信方法及系统 | |
US5377334A (en) | Fast asynchronous resource master-slave combination | |
CN114296976A (zh) | 一种i2c通信故障恢复方法及系统 | |
US8972625B2 (en) | Electronic apparatus and host determination method | |
CN113961496A (zh) | 通信电路系统、方法、芯片以及存储介质 | |
CN113268443A (zh) | Smi总线通信方法、装置、电子设备和介质 | |
JP2015184935A (ja) | I2cバスの調停システムおよび調停方法 | |
CN117407343B (zh) | 集成电路总线透传模式下时钟延展的处理方法及装置 | |
CN217562028U (zh) | 一种基于sccb总线协议的多个主器件电路 | |
US6910091B1 (en) | Arbitration method of a bus bridge | |
JP2001084230A (ja) | 分散型コンピュータシステムを初期化するためのシステムおよびその方法 | |
CN102662892B (zh) | 一种FlexRay通信控制器 | |
KR100224966B1 (ko) | 다수의 마스터 디바이스 액세스 가능한 다층 구조의아이2씨 버스를 이용한 진단/제어 시스템 | |
CN117873933A (zh) | 基于Linux系统的I2C设备通信方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |