用于对硬件模块实现供电控制的装置及方法
技术领域
本发明涉及供电控制技术,特别涉及一种用于对硬件模块实现供电控制的装置、以及一种用于对硬件模块实现供电控制的方法。
背景技术
硬件模块化设计是电子设备的一种基本设计方式,常见于个人计算机、服务器、以及各种网络通信设备。
网络通信设备中的路由器是硬件模块化应用的典型,目前的绝大多数路由器都是模块化路由器。所谓模块化路由器主要是指,该路由器本身只提供最基本固定接口(目前主流是以太网接口),如果该路由器需要其他接口类型及接口扩展功能则可以为该路由器配置相应的硬件模块。
如图1所示,现有的模块化路由器100可提供若干模块插槽10,每个模块插槽10内都具有必要的硬件管脚;而每个硬件模块20也均具有与模块插槽10对应的硬件管脚、并可***至任意的模块插槽10内。一般情况下,模块插槽10的硬件管脚呈插针的形式,而硬件模块20对应的硬件管脚则呈插孔的形式。
上述硬件管脚的具体定义包括数据总线(例如高速数据传输的PCI总线、PCI-E总线、100M/1000M/10GE以太网总线)、控制总线(例如传输控制信息的Local Bus总线和I2C总线以及传输时钟信号的TDM总线)、供电管脚、接地管脚;此外,由于硬件模块化设计的一个主要特点是支持热插拔、即模块化路由器100一般都支持硬件模块20的热插拔,因此,硬件管脚定义中还包括用于识别插拔状态的热插拔管脚。
利用热插拔管脚识别插拔状态的具体方式请结合图2:
模块化路由器100的每一硬件插槽10内具有接地管脚P0、以及一根被上拉为高电平的热插拔管脚P1,硬件模块20则具有分别对应供电管脚V1的管脚V1’、以及对应接地管脚P0的管脚P0’和对应热插拔管脚P1的管脚P1’,且硬件模块20的管脚P0’和P1’相互导通;
当硬件模块20***模块插槽10内之后,硬件模块20的管脚P0’与模块插槽10的接地管脚P0接触、硬件模块20的管脚P1’与模块插槽10内的热插拔管脚P1接触,此时,硬件模块20的相互导通的管脚P0’和P1’会将模块插槽10的热插拔管脚P1导通至模块插槽10的接地管脚P0,使得模块插槽10的热插拔管脚P1的电平状态由高电平变为低电平,模块化路由器10内的逻辑芯片12(例如CPLD或FPGA)在检测到热插拔管脚P1由高电平变为低电平后,即可识别出模块插槽10内有硬件模块20***;
当模块插槽10内***的硬件模块20拔出后,热插拔管脚P1又恢复高电平,此时,逻辑芯片12在检测到热插拔管脚P1为高电平时,即可识别出模块插槽10内没有***的硬件模块20。
此外,当识别出模块插槽10内有***硬件模块20***或拔出后,逻辑芯片12还需要向CPU 13上报中断,使CPU 13在中断处理的过程中获知模块插槽10内的插拔状态,并指示逻辑芯片12对***硬件模块20的模块插槽10上电、或对硬件模块20拔出后的模块插槽10断电。
通常情况下,模块化路由器100中电源11的可用功率单位总数是有限的,那么,对于模块插槽10及***的硬件模块20数量较多、且硬件模块20功耗较大的情况,有限的可用功率单位总数会无法满足所有***的硬件模块20,此时就需要CPU 13在中断处理的过程中对***硬件模块20的模块插槽10进行供电控制。
仍结合图2,所谓供电控制是指,CPU 13在中断处理的过程中先不触发逻辑芯片12将电源11与新***硬件模块20的模块插槽10的供电管脚V1,转而判断当前的功率单位剩余数量是否满足新***的硬件模块20的功率单位需求数量。如果满足,则CPU 13触发逻辑芯片12将电源11与新***硬件模块20所在的模块插槽10的供电管脚V1导通,使电源11能够通过供电管脚V1、以及硬件模块20中与供电管脚V1对应接触的硬件管脚(图2中未标识)为硬件模块20上电,然后CPU 13退出中断处理;否则,CPU13直接退出中断处理、使电源11与新***的硬件模块20所在的模块插槽10的供电管脚V1保持在断开状态,即新***的硬件模块20不会被上电。
其中,CPU 13可以从新***的硬件模块20的一片非易失性存储器21(例如E2PROM)中获取其判断所需的该硬件模块20的功率单位需求数量,但由于新***的硬件模块20此时尚未上电,因此,需要设置一辅助电源14单独为新***的硬件模块20的非易失性存储器21局部上电。
具体说,模块插槽10具有局部供电管脚V2以及I2C总线管脚,该局部供电管脚V2与辅助电源14一直保持导通状态、I2C总线管脚则通过I2C总线与CPU 13相连;***的硬件模块20的非易失性存储器21具有与局部供电管脚V2以及I2C总线管脚相对应并接触的硬件管脚,使非易失性存储器21可被辅助电源14上电、非易失性存储器21中的功率单位需求数量可被CPU 13通过I2C总线读取。
以上方式虽然能够实现对硬件模块20的供电控制,但由于该方式必须在硬件模块20处于源状态下并基于总线传输来实现,因而存在如下缺陷:
1、要求硬件模块20必须具有专用于为非易失性存储器21局部供电的电路,因而导致硬件模块20(尤其是小尺寸的硬件模块20)的设计复杂;
2、模块插槽10必须提供电源11和辅助电源14的双供电,导致模块插槽10的设计复杂;
3、需要通过传输速率较慢的I2C总线获取的功率单位需求数量,导致处理时间增长;
4、无法兼容未预留可独立供电并具有I2C总线接口的非易失性存储器21的硬件模块。
此外,以上方式还必须由CPU 13参与供电控制,这就在一定程度上增加了CPU 13的负担。
发明内容
有鉴于此,本发明提供了一种用于对硬件模块实现供电控制的装置、以及一种用于对硬件模块实现供电控制的方法。
本发明提供的一种用于对硬件模块实现供电控制的装置,包括模块插槽以及逻辑芯片和电源,每一模块插槽具有供电管脚、接地管脚、以及被上拉为高电平状态的热插拔管脚;
每一模块插槽的热插拔管脚均为至少两根;每一模块插槽的所有热插拔管脚可被***该模块插槽的硬件模块有选择性地导通至该模块插槽的接地管脚并变为低电平状态、以形成表示该硬件模块的功率单位需求数量的任一种非全高的电平状态组合;
逻辑芯片在检测出有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,依据检测出的该种非全高电平状态组合识别出对应的功率单位需求数量,如果当前的功率单位剩余数量大于等于识别出的功率单位需求数量,则将该模块插槽的供电管脚与电源导通;否则,保持该模块插槽的供电管脚与电源的断开;
逻辑芯片在检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开。
逻辑芯片包括:
管脚检测逻辑电路,检测每一模块插槽的所有热插拔管脚的电平状态;
数量识别逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,将检测到的该模块插槽的非全高电平状态组合识别为对应的功率单位需求数量;
控制执行逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,如果当前的功率单位剩余数量大于等于识别出的功率单位需求数量,则将该模块插槽的供电管脚与电源导通,否则,保持该模块插槽的供电管脚与电源的断开;在有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开。
逻辑芯片进一步执行对当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量的判断、并进一步执行对当前的功率单位剩余数量的维护。
该装置进一步包括CPU;
逻辑芯片进一步获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值;
逻辑芯片进一步在将任一模块插槽的供电管脚与电源导通后向CPU上报中断、以通知CPU该模块插槽内***有已上电的硬件模块;
逻辑芯片进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出。
逻辑芯片包括:
管脚检测逻辑电路,检测每一模块插槽的所有热插拔管脚的电平状态;
数量识别逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,将检测到的该模块插槽的非全高电平状态组合识别为对应的功率单位需求数量;
控制执行逻辑电路,获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值,以及,维护功率单位可用总数;在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,如果判断出当前的功率单位剩余数量大于等于识别出的功率单位需求数量,则将该模块插槽的供电管脚与电源导通、并更新功率单位可用总数,否则,保持该模块插槽的供电管脚与电源的断开;在有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开;
中断上报逻辑电路,在有模块插槽的供电管脚与电源被导通、以及被断开后向CPU上报中断。
逻辑芯片进一步包括可被CPU访问的访问接口逻辑电路;
访问接口逻辑电路维护有可被CPU写入功率单位可用总数的功率单位可用总数字段;
以及,访问接口逻辑电路还分别针对每一模块插槽维护有插拔标志字段、中断状态字段、以及上电状态字段,其中:
插拔标志字段可被管脚检测逻辑电路设置为表示对应的模块插槽内是否***有硬件模块的标记,以供CPU获知对应的模块插槽内是否***有硬件模块;
上电状态字段可被控制执行逻辑电路设置为表示对应的模块插槽的供电管脚与电源导通或断开的标记,以供CPU获知对应的模块插槽是否已对硬件模块上电;
中断状态字段可被管脚检测逻辑电路设置为表示对应的模块插槽有中断要处理的标记,以触发中断上报逻辑电路在有模块插槽的供电管脚与电源被导通、以及被断开后依据该标记向CPU上报中断;
中断状态字段还可被CPU设置为表示对应的模块插槽无中断要处理的标记,以使中断上报逻辑电路停止向CPU上报中断。
该装置进一步包括CPU,并由CPU执行对当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量的判断、并进一步执行对当前的功率单位剩余数量的维护。
逻辑芯片进一步在检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后向CPU上报中断、以通知CPU该模块插槽内***有硬件模块***;
CPU进一步从逻辑芯片获取识别出的功率单位需求数量;
逻辑芯片进一步在CPU判断出任一模块插槽下发的表示当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,接收CPU下发的表示将对应模块插槽的供电管脚与电源导通的指令、并依据该指令执行将该模块插槽的供电管脚与电源导通的操作;
逻辑芯片进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出。
逻辑芯片包括:
管脚检测逻辑电路,检测每一模块插槽的所有热插拔管脚的电平状态;
数量识别逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,将检测到的该模块插槽的非全高电平状态组合识别为对应的功率单位需求数量;
控制执行逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,如果接收到CPU下发的表示将对应模块插槽的供电管脚与电源导通的指令,则依据该指令执行将该模块插槽的供电管脚与电源导通的操作;在有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开;
中断上报逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后、以及在有模块插槽的供电管脚与电源断开后,向CPU的中断上报被触发后向CPU上报中断。
逻辑芯片进一步包括可被CPU访问的访问接口逻辑电路;
访问接口逻辑电路分别针对每一模块插槽维护有插拔标志字段、中断状态字段、功率单位需求字段、以及上电状态字段,其中:
插拔标志字段可被管脚检测逻辑电路设置为表示对应的模块插槽内是否***有硬件模块的标记,以供CPU获知对应的模块插槽内是否有硬件模块***;
功率单位需求字段可被数量识别逻辑电路写入对应的模块插槽的功率单位需求数量,以供CPU获取;
上电状态字段可被CPU设置为表示对应的模块插槽的供电管脚与电源导通的标记,以实现CPU下发表示将对应模块插槽的供电管脚与电源导通的指令;
上电状态字段还可被控制执行逻辑电路设置为表示对应的模块插槽的供电管脚与电源断开的标记,以供CPU获知该模块插槽内已上电的硬件模块被断电并拔出;
中断状态字段可被管脚检测逻辑电路设置为表示对应的模块插槽有中断要处理的标记,以触发中断上报逻辑电路在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后、以及在有模块插槽的供电管脚与电源断开后向CPU上报中断;
中断状态字段还可被CPU设置为表示对应的模块插槽无中断要处理的标记,以使中断上报逻辑电路停止向CPU上报中断。
该装置进一步包括CPU,由逻辑芯片和CPU择一地执行对当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量的判断、并进一步执行对当前的功率单位剩余数量的维护。
CPU进一步向逻辑芯片下发表示所述判断和所述维护是由逻辑芯片执行或是由CPU执行的通知。
针对由逻辑芯片执行所述判断和所述维护的情况,逻辑芯片进一步获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值;逻辑芯片进一步在将任一模块插槽的供电管脚与电源导通后向CPU上报中断、以通知CPU该模块插槽内***有已上电的硬件模块;逻辑芯片进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出;
针对由CPU执行所述判断和所述维护的情况,逻辑芯片进一步在检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后向CPU上报中断、以通知CPU该模块插槽内***有硬件模块***;CPU进一步从逻辑芯片获取识别出的功率单位需求数量、以供CPU执行所述判断和所述维护;逻辑芯片进一步在CPU判断出任一模块插槽下发的表示当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,接收CPU下发的表示将对应模块插槽的供电管脚与电源导通的指令、并依据该指令执行将该模块插槽的供电管脚与电源导通的操作;逻辑芯片进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出。
逻辑芯片包括:
管脚检测逻辑电路,检测每一模块插槽的所有热插拔管脚的电平状态;
数量识别逻辑电路,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,将检测到的该模块插槽的非全高电平状态组合识别为对应的功率单位需求数量;
控制执行逻辑电路,依据CPU下发的表示所述判断和所述维护是由逻辑芯片执行或是由CPU执行的通知,决定是否负责由逻辑芯片执行的所述判断和所述维护;
针对由逻辑芯片执行所述判断和所述维护的情况,控制执行逻辑电路获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值,以及执行由逻辑芯片负责的所述维护;在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,如果判断出当前的功率单位剩余数量大于等于识别出的功率单位需求数量,则将该模块插槽的供电管脚与电源导通,否则,保持该模块插槽的供电管脚与电源的断开;在有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开;
针对由CPU执行所述判断和所述维护的情况,控制执行逻辑电路在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,如果接收到CPU下发的表示将对应模块插槽的供电管脚与电源导通的指令,则依据该指令执行将该模块插槽的供电管脚与电源导通的操作,否则,保持该模块插槽的供电管脚与电源的断开;在有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开;
中断上报逻辑电路,针对由逻辑芯片执行所述判断和所述维护的情况,在有模块插槽的供电管脚与电源被导通、以及被断开后向CPU上报中断;针对由CPU执行所述判断和所述维护的情况,在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后、以及在有模块插槽的供电管脚与电源断开后向CPU上报中断。
逻辑芯片进一步包括可被CPU访问的访问接口逻辑电路;
访问接口逻辑电路维护有控制维护选择字段和功率单位可用总数字段,其中:
控制维护选择字段可被CPU设置为表示由逻辑芯片或由CPU执行所述判断和所述维护的标记,以实现CPU下发表示所述判断和所述维护是由控制执行逻辑电路执行或是由CPU执行的通知;
功率单位可用总数字段针对由逻辑芯片执行所述判断和所述维护的情况可被CPU写入功率单位可用总数,以实现CPU下发功率单位可用总数;
以及,访问接口逻辑电路还分别针对每一模块插槽维护有插拔标志字段、中断状态字段、功率单位需求字段、以及上电状态字段,其中:
插拔标志字段可被管脚检测逻辑电路设置为表示对应的模块插槽内有硬件模块***或硬件模块被拔出的标记,以供CPU获知对应的模块插槽内是否***有硬件模块;
功率单位需求字段针对由CPU执行所述判断和所述维护的情况可被数量识别逻辑电路写入对应的模块插槽的功率单位需求数量,以供CPU获取;
上电状态字段可针对由逻辑芯片执行所述判断和所述维护的情况被控制执行逻辑电路设置为表示对应的模块插槽的供电管脚与电源导通或断开的标记,以供CPU获知对应的模块插槽内的硬件模块已上电、或对应的模块插槽内已上电的硬件模块被断电并拔出;上电状态字段针对CPU执行所述判断和所述维护的情况可被CPU设置为表示对应的模块插槽的供电管脚与电源导通的标记、或被控制执行逻辑电路设置为表示对应的模块插槽的供电管脚与电源断开的标记,以实现CPU下发表示将对应模块插槽的供电管脚与电源导通的指令、或供CPU获知对应的模块插槽内已上电的硬件模块被断电并拔出;
中断状态字段可被管脚检测逻辑电路设置为表示对应的模块插槽有中断要处理的标记,以针对由逻辑芯片执行所述判断和所述维护的情况触发中断上报逻辑电路在有模块插槽的供电管脚与电源被导通、以及被断开后依据该标记向CPU上报中断,还针对CPU执行所述判断和所述维护的情况触发中断上报逻辑电路在有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后、以及在有模块插槽的供电管脚与电源断开后向CPU上报中断;
中断状态字段还可被CPU设置为表示对应的模块插槽无中断要处理的标记,以使中断上报逻辑电路停止向CPU上报中断。
控制维护选择字段的初始默认状态为表示由控制执行逻辑电路执行所述判断和所述维护的标记;
插拔标志字段的初始默认状态为表示对应的模块插槽内无***的硬件模块的标记;
中断状态字段的初始默认状态为表示对应的模块插槽无中断要处理的标记;
上电状态字段的初始默认状态为表示对应的模块插槽的供电管脚与电源断开的标记。
本发明提供的一种用于对硬件模块实现供电控制的方法,应用于包括若干模块插槽以及一电源的电子设备中,每一模块插槽具有供电管脚、接地管脚、以及被上拉为高电平状态的热插拔管脚;
该方法包括:将每一模块插槽的热插拔管脚均设置为至少两根,使每一模块插槽的所有热插拔管脚可被***该模块插槽的硬件模块有选择性地导通至该模块插槽的接地管脚并变为低电平状态、以形成表示该硬件模块的功率单位需求数量的任一种非全高电平状态组合;
该方法还包括:
在检测出有模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合后,依据检测出的该种非全高电平状态组合识别出对应的功率单位需求数量,如果当前的功率单位剩余数量大于等于识别出的功率单位需求数量,则将该模块插槽的供电管脚与电源导通;否则,保持该模块插槽的供电管脚与电源的断开;
在检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽的供电管脚与电源断开。
所述电子设备中进一步包括CPU;
该方法在CPU外部或由CPU进一步执行对当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量的判断、并进一步执行对当前的功率单位剩余数量的维护。
该方法进一步包括:接收CPU下发表示所述判断和所述维护是在CPU外部执行或是由CPU执行的通知。
针对所述判断和所述维护在CPU外部执行的情况,该方法进一步包括:获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值;该方法进一步在将任一模块插槽的供电管脚与电源导通后向CPU上报中断、以通知CPU该模块插槽内***有已上电的硬件模块;该方法进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出;
针对由CPU执行所述判断和所述维护的情况,该方法进一步包括:在检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后向CPU上报中断、以通知CPU该模块插槽内***有硬件模块***;该方法进一步使CPU能够获取识别出的功率单位需求数量、以供CPU执行所述判断和所述维护;该方法进一步在CPU判断出任一模块插槽下发的表示当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,接收CPU下发的表示将对应模块插槽的供电管脚与电源导通的指令、并依据该指令执行将该模块插槽的供电管脚与电源导通的操作;该方法进一步在将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出。
由上述技术方案可见,本发明将每一模块插槽的热插拔管脚由现有技术中的一根扩展为至少两根,扩展后的所有热插拔管脚的电平状态组合除了可以表示模块插槽内是否有硬件模块***的插拔状态之外,还能够表示***的硬件模块的功率单位需求数量。因此,通过在硬件模块处于无源状态时对所有热插拔管脚的电平状态检测,即可在识别出插拔状态的同时以非总线传输的方式获取到功率单位需求数量。从而,即可降低硬件模块和模块插槽的设计复杂程度、缩短供电控制所需的时间、并易于兼容各种硬件模块。
此外,本发明中并不要求CPU必须参与供电控制,从而能够在需要时减轻CPU的负担。
附图说明
图1为现有的模块化路由器的模块插槽与硬件模块的示意图;
图2为现有的模块化路由器中用于对硬件模块实现供电控制的部分内部结构示意图;
图3为本发明实施例中用于对硬件模块实现供电控制的装置结构图;
图4为可使硬件模块适用于如图3所示装置的一种转接器的示意图;
图5a至图5g为适用于如图3所示装置的硬件模块的管脚结构实例图;
图6为如图3所示装置中的逻辑芯片的一种优选逻辑结构的示意图;
图7为如图6所示的逻辑结构中所使用的各种访问字段的示意图;
图8为本发明实施例中用于对硬件模块实现供电控制的方法流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图3为本发明实施例中用于对硬件模块实现供电控制的装置结构图。如图3所示,本实施例中用于对硬件模块实现供电控制的装置300包括若干模块插槽30(图3中仅示出了一个)、以及一逻辑芯片32和一电源31,每一模块插槽30具有供电管脚V1、接地管脚P0、以及被上拉为高电平状态的热插拔管脚P1~P3。
其中,本实施例中在每一模块插槽30内扩展至3根热插拔管脚P1~P3为,区别于现有技术中仅有1根热插拔管脚P1的情况。
具体实现时,可以利用模块插槽30的空闲管脚用作新增的热插拔管脚P2和P3、也可以额外增加2根用作热插拔管脚P2和P3的新管脚。
相应地,硬件模块40除了具有对应的硬件管脚P0’和P1’之外,也应增设与热插拔管脚P2和P3对应的硬件管脚P2’和P3’。
具体实现时,只要确保硬件管脚P0’可在硬件模块40***模块插槽30后与接地管脚P0接触、以及硬件管脚P1’~P3’可在硬件模块40***模块插槽30后分别与热插拔管脚P1~P3以一一对应的方式接触,既可以利用硬件模块40的空闲管脚用作硬件管脚P2’和P3’、也可以额外增加2根用作硬件管脚P2’和P3’,即便出现硬件模块40不支持增设硬件管脚P2’和P3’的情况,也可以利用如图4所示的额外具有硬件管脚P2’和P3’的转接器50来实现硬件模块40与模块插槽30的插接、但需要将硬件模块40原有的相互导通的硬件管脚P0’和P1’断开。
此外,硬件模块40(或转接器50)的硬件管脚P1’~P3’中的至少1根连接至硬件管脚P0’、且其余的悬置,图3和图4中为了涵盖所有可能的7种情况而在硬件管脚P1’~P3’与硬件管脚P0’之间以虚线表示、而图5a至图5g中则列举了所有可能的7种情况。
基于上述结构:
每一模块插槽30在无硬件模块40***时,其被扩展为3根的热插拔管脚P1~P3全部被上拉为高电平状态、即形成特定的全高的电平状态组合;这样,3根热插拔管脚P1~P3的全高的电平状态组合可对应为3比特全为“1”的二进制数“111”,用于表示模块插槽30内没有硬件模块40***的拔出状态;
每一模块插槽30在有硬件模块40***后,其接地管脚P0与硬件模块40的硬件管脚P0’接触、其被扩展为3根的热插拔管脚P1~P3分别与硬件模块40的硬件管脚P1’~P3’一一对应地接触,此时,按照硬件管脚P1’~P3’分别与硬件管脚P0’之间分别对应图5a至图5g中任一的连接和断开组合状态,热插拔管脚P1~P3可被***该模块插槽30的硬件模块40有选择性地导通至该模块插槽30的接地管脚P0并变为低电平状态、即形成对应的7种可能出现的非全高的电平状态组合中的一种;这样,3根热插拔管脚P1~P3的非全高的电平状态组合可对应为3比特不全为“1”的二进制数“110”、“101”、“100”、“011”、“010”、“001”、“000”中的一个,这些3比特不全为“1”的二进制数除了表示模块插槽30内有硬件模块40***的***状态之外,还能够表示***的硬件模块40可能出现的7种功率单位需求数量。
表1中列举了3根热插拔管脚P1~P3的各种电平组合对应的3比特二进制数所分别表示的含义。
P3 |
P2 |
P1 |
表示含义(以每个功率单元为10W为例) |
1 |
1 |
1 |
模块插槽中没有硬件模块 |
1 |
1 |
0 |
模块插槽中有硬件模块、并需要2个功率单元0W-20W |
1 |
0 |
1 |
模块插槽中有硬件模块、并需要3个功率单元20W-30W |
1 |
0 |
0 |
模块插槽中有硬件模块、并需要4个功率单元30W-40W |
0 |
1 |
1 |
模块插槽中有硬件模块、并需要5个功率单元40W-50W |
0 |
1 |
0 |
模块插槽中有硬件模块、并需要6个功率单元50W-60W |
0 |
0 |
1 |
模块插槽中有硬件模块、并需要7个功率单元60W-70W |
0 |
0 |
0 |
模块插槽中有硬件模块、并需要8个功率单元70W-80W |
表1
基于上述方式:
逻辑芯片32在检测出有模块插槽30的热插拔管脚P1~P3由全高电平状态组合变为其余7种非全高电平状态组合中的任一种后,依据检测出的该种非全高电平状态组合识别出对应的功率单位需求数量,如果当前的功率单位剩余数量(即功率单位可用总数减去所有处于上电状态的硬件模块40的功率单位需求数量的差)大于等于识别出的功率单位需求数量,则将该模块插槽30的供电管脚V1与电源31导通;否则,保持该模块插槽30的供电管脚V1与电源31的断开、直至当前的功率单位剩余数量大于等于从该模块插槽30识别出的功率单位需求数量;
逻辑芯片32在检测出有模块插槽30的热插拔管脚P1~P3由7种非全高电平状态组合中的任一种变为全高电平状态组合后,将该模块插槽30的供电管脚V1与电源31断开。
可见,逻辑芯片32在***模块插槽30内的硬件模块40处于无源状态时,即可通过对3根热插拔管脚P1~P3的电平状态检测同时识别出插拔状态、并以非总线传输的方式获取到硬件模块40的功率单位需求数量。从而,既无需硬件模块40具有独立供电电路、也无需模块插槽30提供双供电、还无需通过I2C总线传递功率单位需求数量,因而能够降低硬件模块40和模块插槽30的设计复杂程度、并缩短供电控制所需的时间。
而且,利用3根热插拔管脚P1~P3的电平状态来表示功率单位需求数量的方式,只需要按照如表1对各种硬件模块的硬件管脚进行简单的调整、或直接增设如图4所示的转接器50,因而还易于兼容各种类型的硬件模块。
仍参见图3,本实施例中用于对硬件模块实现供电控制的装置300还包括CPU 33。但是,本实施例中并不要求CPU 33必须参与供电控制。即,对前文所提及的当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量的两种情况的判断,以及对前文所提及的当前的功率单位剩余数量的维护(即将功率单位剩余数量减去新上电的硬件模块40的功率单位需求数量、以及在新断电的硬件模块40的功率单位需求数量累加至功率单位剩余数量),既可以由逻辑芯片32负责执行、也可以由CPU 33负责执行,而不是必须由CPU来执行。
上述判断和维护可以是固定不变地由逻辑芯片32、或固定不变地由CPU 22执行;或者,也可以是依据CPU 33向逻辑芯片32下发的表示上述判断和上述维护是由逻辑芯片32执行或是由CPU 33执行的通知,而动态地使逻辑芯片32和CPU 33择一地执行。对于动态择一的情况,如果CPU 33未下发该通知,则默认由逻辑芯片32负责执行。
但无论上述判断和上述维护是否需要CPU 33执行,本实施例中均不会出现CPU 33通过I2C总线获取硬件模块40的功率单位需求数量的情况。
具体说:
针对由逻辑芯片32负责执行上述判断和上述维护的情况,逻辑芯片32进一步(例如在装置300初始化时)获取CPU 33下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值;逻辑芯片32进一步在将任一模块插槽30的供电管脚V1与电源31导通后向CPU 33上报中断、以通知CPU 33该模块插槽30内***有已上电的硬件模块40;逻辑芯片32进一步在将任一模块插槽30的供电管脚V1与电源31断开后向CPU33上报中断、以通知CPU 33该模块插槽30内已上电的硬件模块40被断电并拔出;
针对由CPU 33执行上述判断和上述维护的情况,逻辑芯片32需要在检测出有模块插槽30的所有热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后向CPU 33上报中断、以通知CPU 33该模块插槽30内***有硬件模块40***;CPU 33进一步获取逻辑芯片32识别出的功率单位需求数量、以供CPU 33执行上述判断和上述维护;逻辑芯片32进一步在CPU 33判断出任一模块插槽30的当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,接收CPU 33下发的表示将对应模块插槽30的供电管脚V1与电源31导通的指令、并依据该指令将对应模块插槽30的供电管脚V1与电源31导通,如果没有接收到该指令,则逻辑芯片32会保持对应模块插槽30的供电管脚V1与电源31断开。
图6为如图3所示装置中的逻辑芯片的一种优选逻辑结构的示意图。如图6所示,本实施例还针对如图3所示装置300中的逻辑芯片32提供了一种优选的逻辑结构,该逻辑结构包括:管脚检测逻辑电路321、数量识别逻辑电路322、控制执行逻辑电路323、中断上报逻辑电路324、访问接口逻辑电路325。
管脚检测逻辑电路321,检测每一模块插槽30的热插拔管脚P1~P3的电平状态。
对于由逻辑芯片32执行前述判断和前述维护的情况:管脚检测逻辑电路321在有模块插槽30的热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合后,通知数量识别逻辑电路322和控制执行逻辑电路323以及访问接口逻辑电路325、并向访问接口逻辑电路325触发中断上报逻辑电路324向CPU 33的中断上报;在检测出有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后,通知控制执行逻辑电路323和访问接口逻辑电路325、并向访问接口逻辑电路325触发中断上报逻辑电路324向CPU 33的中断上报;
对于由CPU 33执行前述判断和前述维护的情况:管脚检测逻辑电路321在有模块插槽30的热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合后,仅通知数量识别逻辑电路322和访问接口逻辑电路325、并向访问接口逻辑电路325触发中断上报逻辑电路324向CPU 33的中断上报;在检测出有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后,通知控制执行逻辑电路323和访问接口逻辑电路325、并向访问接口逻辑电路325触发中断上报逻辑电路324向CPU 33的中断上报。
数量识别逻辑电路322,在获知有模块插槽的热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合后,将管脚检测逻辑电路321检测到的该模块插槽30的非全高电平状态组合识别为对应的功率单位需求数量。
对于由逻辑芯片32执行前述判断和前述维护的情况:数量识别逻辑电路322将识别出的功率单位需求数量提供给控制执行逻辑电路323;
对于由CPU 33执行前述判断和前述维护的情况:数量识别逻辑电路322将识别出的功率单位需求数量提供给访问接口逻辑电路325、以供给CPU 33获取。
控制执行逻辑电路323,从访问接口逻辑电路325获取CPU 33下发的表示前述判断和前述维护是由逻辑芯片32执行或是由CPU 33执行的通知,并依此决定是否负责由逻辑芯片32执行的前述判断和前述维护。如果未获取到CPU 33未下发该通知,则默认由逻辑芯片32中的控制执行逻辑电路323执行。
对于由逻辑芯片32执行前述判断和前述维护的情况:控制执行逻辑电路323从访问接口逻辑电路325获取CPU 33下发的功率单位可用总数、并将功率单位可用总数设置为由其维护的功率单位剩余数量的初始值;控制执行逻辑电路323在获知有模块插槽30的热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合后,判断当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量,如果是,则将该模块插槽30的供电管脚V1与电源31导通并更新其维护的功率单位剩余数量,以及通知访问接口逻辑电路325该模块插槽30内的硬件模块40已上电,否则,保持该模块插槽30的供电管脚V1与电源31的断开、直至当前的功率单位剩余数量大于等于从该模块插槽30识别出的功率单位需求数量;在获知有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽30的供电管脚V1与电源31断开,以及,通知访问接口逻辑电路325该模块插槽30内已上电的硬件模块40被断电并拔出;
对于由CPU 33执行前述判断和前述维护的情况:控制执行逻辑电路323在CPU 33判断出当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,会从访问接口逻辑电路325获取到CPU 33下发的表示将对应模块插槽30的供电管脚V1与电源31导通的指令,依据该指令将该模块插槽30的供电管脚V1与电源31导通,如果没有获取到该指令,则保持该模块插槽30的供电管脚V1与电源31的断开、直至获取到该指令;在获知有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后,将该模块插槽30的供电管脚V1与电源31断开,以及,通知访问接口逻辑电路325该模块插槽30内已上电的硬件模块40被断电并拔出。
中断上报逻辑电路324,通过监测访问接口逻辑电路325来决定何时需要针对被触发中断的模块插槽30执行中断上报。
对于由逻辑芯片32执行前述判断和前述维护的情况:在有模块插槽30由于其热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合而被触发中断时,中断上报逻辑电路324不会立即向CPU 33上报中断、而是需要等待该模块插槽30的供电管脚V1与电源31被导通,即,中断上报逻辑电路324在有模块插槽30的供电管脚V1与电源31被导通后向CPU33上报中断、以通知CPU 33该模块插槽30内硬件模块40已上电;在有模块插槽30由于其热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合而被触发中断时,中断上报逻辑电路324立即向CPU 33上报中断,即,中断上报逻辑电路324在有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合后向CPU 33上报中断、以通知CPU 33该模块插槽30内已上电的硬件模块40被断电并拔出;
对于由CPU 33执行前述判断和前述维护的情况:在有模块插槽30的热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合而被触发中断时,中断上报逻辑电路324无需等待该模块插槽30的供电管脚V1与电源31被导通即可直接向CPU 33上报中断、以通知CPU 33该模块插槽30内有硬件模块40***;在有模块插槽30的热插拔管脚P1~P3由任一种非全高电平状态组合变为全高电平状态组合而被触发中断时,中断上报逻辑电路324直接向CPU 33上报中断、以通知CPU 33该模块插槽30内已上电的硬件模块40被断电并拔出。
访问接口逻辑电路325,其维护有可被CPU 33访问的一控制维护选择字段和一功率单位可用总数字段,以及,还分别针对每一模块插槽30维护有可被CPU 33访问的一插拔标志字段、一中断状态字段、一功率单位需求字段、以及一上电状态字段。
具体参见图7:
控制维护选择字段,其可被CPU 33设置为表示由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)前述判断和前述维护的标志0、或表示由CPU 33执行前述判断和前述维护的标记1,用以实现CPU 33下发表示前述判断和前述维护是由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)或是由CPU 33执行的通知。
功率单位可用总数字段,其对于由逻辑芯片32执行前述判断和前述维护的情况,可被CPU 33写入功率单位可用总数(例如以0x20表示32个功率单位),用以针对由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)前述判断和前述维护的情况实现CPU 33下发功率单位可用总数;其对于由CPU 33执行前述判断和前述维护的情况可以不被使用。
插拔标志字段,其对于由逻辑芯片32执行前述判断和前述维护、以及由CPU 33执行前述判断和前述维护的两种情况,均可被管脚检测逻辑电路321设置为表示对应的模块插槽30内有硬件模块40***的标记1、或表示对应的模块插槽30内的硬件模块40被拔出的标记0,以供CPU 33获知对应的模块插槽30内是否有硬件模块40;
功率单位需求字段,其对于由逻辑芯片32执行前述判断和前述维护的情况可以不被使用;其对于由CPU 33执行前述判断和前述维护的情况,可被数量识别逻辑电路322写入在对应模块插槽30识别出的功率单位需求数量(例如以0x2表示需要2个功率单位、以0x3表示需要3个功率单位......以0x8表示需要8个功率单位),以供CPU 33获取;
上电状态字段,其对于由逻辑芯片32执行前述判断和前述维护的情况,可被控制执行逻辑电路323设置为表示对应的模块插槽30的供电管脚V1与电源31导通的标记1、表示对应的模块插槽30的供电管脚V1与电源31断开的标记0,以供CPU 33获知该模块插槽30内的硬件模块40已上电、以及该模块插槽30内已上电的硬件模块40被断电并拔出;其对于由CPU 33执行前述判断和前述维护的情况,可被CPU 33设置为表示对应的模块插槽30的供电管脚V1与电源31导通的标记1、被控制执行逻辑电路323设置为表示对应的模块插槽30的供电管脚V1与电源31断开的标记0,以实现CPU 33下发表示将供电管脚V1与电源31导通的指令、以及该模块插槽30内已上电的硬件模块40被断电并拔出。
中断状态字段对于由逻辑芯片32执行前述判断和前述维护、以及由CPU 33执行前述判断和前述维护的两种情况,均可被管脚检测逻辑电路321设置为表示对应的模块插槽有中断要处理的标记,以针对由逻辑芯片32执行所述判断和所述维护的情况触发中断上报逻辑电路324在有模块插槽30的供电管脚V1与电源31被导通、以及被断开后依据该标记向CPU 33上报中断,还针对CPU 33执行所述判断和所述维护的情况触发中断上报逻辑电路324在有模块插槽30的所有热插拔管脚P1~P3由全高电平状态组合变为任一种非全高电平状态组合后、以及在有模块插槽30的供电管脚V1与电源31断开后向CPU 33上报中断;
中断状态字段对于由逻辑芯片32执行前述判断和前述维护、以及由CPU 33执行前述判断和前述维护的两种情况,还均可被CPU 33设置为表示对应的模块插槽30无中断要处理的标记,以使中断上报逻辑电路324停止向CPU上报中断。
实际应用中,控制维护选择字段的初始默认状态为表示由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)前述判断和前述维护的标记0;插拔标志字段的初始默认状态为表示对应的模块插槽30内的硬件模块40被拔出的标记0;中断状态字段的初始默认状态为表示对应的模块插槽30无中断要处理的标记1;上电状态字段的初始默认状态为表示对应的模块插槽30的供电管脚V1与电源31断开的标记0。
以上实施例的装置300中仅仅是以3根热插拔管脚P1~P3为例,但在实际应用中,只要每个模块插槽30内的热插拔管脚满足至少2根就能够同样产生表示功率单位需求数量的效果,只是所能够表示的功率单位需求数量的取值范围会随着热插拔管脚的数量的不同而有所区别而已。
而且,以上实施例的装置300可以动态选择由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)或是由CPU 33执行前述判断和前述维护。但实际应用中,也可以择一地固定由逻辑芯片32执行(即相当于由控制执行逻辑电路323负责执行)或是由CPU 33执行前述判断和前述维护,此时,就不需要CPU 33再下发相应的通知等操作也就不再需要。相应地,在图6中,是以逻辑芯片32和CPU 33之间动态择一地执行前述判断和前述维护为例,实际应用中,如果固定不变地由逻辑芯片32或CPU 33执行前述判断和前述维护,则可以仅保留图6中应用于对应情况的部分结构、操作过程、以及字段。
以上是对本发明实施例中用于对硬件模块实现供电控制的装置的详细说明。下面,再对本发明实施例中用于对硬件模块实现供电控制的方法进行详细说明。
本实施例中用于对硬件模块实现供电控制的方法,主要应用于包括若干模块插槽以及一电源的电子设备中,每一模块插槽具有供电管脚、接地管脚、以及被上拉为高电平状态的热插拔管脚;
区别于现有技术的是,该方法将每一模块插槽的热插拔管脚均设置为至少两根,使每一模块插槽的所有热插拔管脚可被***该模块插槽的硬件模块有选择性地导通至该模块插槽的接地管脚并变为低电平状态、以形成表示该硬件模块的功率单位需求数量的任一种非全高电平状态组合。
图8为本发明实施例中用于对硬件模块实现供电控制的方法流程图。如图8所示,本实施例中用于对硬件模块实现供电控制的方法针对每一模块插槽执行如下步骤:
步骤800,检测该模块插槽的所有热插拔管脚的电平变化,如果检测出该模块插槽的所有热插拔管脚由全高电平状态组合变为任一种非全高电平状态组合,则执行步骤801;如果检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合,则执行步骤805。
步骤801,依据检测出的该种非全高电平状态组合识别出对应的功率单位需求数量,然后执行步骤802。
步骤802,判断当前的功率单位剩余数量是否大于等于识别出的功率单位需求数量,如果是则执行步骤803,否则执行步骤804。
步骤803,将该模块插槽的供电管脚与电源导通,然后返回步骤800。
步骤804,保持该模块插槽的供电管脚与电源的断开,然后返回步骤802。
步骤805,将该模块插槽的供电管脚与电源断开,然后返回步骤800。
以上即是针对每一模块插槽执行的流程。
实际应用中,电子设备中通常会包括有一CPU,那么,该方法中的所有步骤可以均在CPU外部(该方法所应用的电子设备中还具有一独立于CPU之外的逻辑芯片)执行。或者,可以单独将该方法的步骤802中的判断以及步骤803和805中进一步对功率单位剩余数量的维护转交由CPU执行。为此,该方法可以进一步接收CPU下发的表示步骤802中的判断以及步骤803和805中的维护是在CPU外部执行或是由CPU执行的通知,如果没有接收到CPU下发的该通知则默认在CPU外部执行、以便于减轻CPU的负担。
针对步骤802中的判断以及步骤803和805中的维护在CPU外部执行的情况,该方法进一步获取CPU下发的功率单位可用总数、并将功率单位可用总数设置为功率单位剩余数量的初始值;该方法进一步在步骤803将任一模块插槽的供电管脚与电源导通后向CPU上报中断、以通知CPU该模块插槽内***有已上电的硬件模块;该方法进一步步骤805将任一模块插槽的供电管脚与电源断开后向CPU上报中断、以通知CPU该模块插槽内已上电的硬件模块被断电并拔出;
针对由CPU执行步骤802中的判断以及步骤803和805中的维护的情况,该方法进一步在每次通过800检测出有模块插槽的所有热插拔管脚由任一种非全高电平状态组合变为全高电平状态组合后向CPU上报中断、以通知CPU该模块插槽内***有硬件模块***;该方法进一步将步骤801识别出的功率单位需求数量提供给CPU;该方法进一步在步骤802由CPU判断出任一模块插槽下发的表示当前的功率单位剩余数量大于等于识别出的功率单位需求数量后,接收CPU下发的表示将供电管脚与电源导通的指令、并依据该指令执行步骤803中将该模块插槽的供电管脚与电源导通的操作,如果未接收到该指令,则通过执行步骤804保持该模块插槽的供电管脚与电源的断开。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。