一种基于CPLD‑FPGA的服务器风扇旋转控制方法与流程

文档序号:14245575阅读:662来源:国知局
一种基于CPLD‑FPGA的服务器风扇旋转控制方法与流程

本发明涉及服务器风扇控制领域,具体涉及一种基于cpld-fpga的服务器风扇旋转控制方法。



背景技术:

cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)/fpga(fieldprogrammablegatearray,现场可编程门阵列)是一款半定制的专用集成电路,具有可编程、可擦除、易于验证、集成度高及硬件资源丰富等系列优点,在前期开发验证及应用控制领域得到越来越广泛的应用。基于上述优点,通过cpld-fpga实现底层电路设计进而实现逻辑控制得到越来越广泛应用。在服务器系统中,通常通过cpld-fpga芯片控制整个服务器的上、下电时序控制,以及led指示控制、通信控制、按键检测控制、掉电检测及风扇控制等等,风扇设计是整个散热系统设计的关键,因为风扇控制的策略好坏对整个系统散热优劣产生至关重要影响。

在传统设计中是通过bmc(baseboardmanagementcontroller,基板管理控制器)实现风扇的检测以及控制,但是bmc启动至正常运行需要一定时间:在bmc正常工作以前,风扇模组全速运转,由于服务器刚启动时并不会产生太多热量,所以此时所有风扇模组全速旋转是没有必要的;bmc正常工作以后,由bmc输出的pwm控制风扇转速,在bmc正常工作时,由可编程芯片cpld或fpga检测watchdog信号,watchdog信号正常是为方波信号,当bmc故障使watchdog信号为恒定电平时,此时cpld或fpga接受控制权使风扇全速旋转。

以上控制策略存在的主要问题为:风扇模组刚上启动上电时,由于全部风扇模组要全速旋转,此时会产生很大的启动浪涌电流,此时往往会超出ocp(overcurrentprotection,过流保护)上限值,导致过流保护,从而使服务器不能启动运行;但服务器正常运行时,风扇电流会小于ocp过流保护值。传统控制中,是通过增大ocp来防止过流保护,但这会降低ocp过流保护的价值,即便使发生ocp,也需要更长的保护时间;由bmc输出的pwm(pulsewidthmodulation,脉冲宽度调制)直接控制风扇转速,这就要求bmc输出的pwm与风扇模组实际需要的pwm信号对应,这对硬件电路对应性提出一定要求,导致设计不够灵活;在bmc正常运行时,由bmc直接控制风扇模组,cpld或fpga检测到bmc出现故障时,接替控制权,输出控制信号使风扇全速旋转,集成度问题也使得风扇转速控制过于复杂。

针对上述问题,本申请发明一种基于cpld-fpga的服务器风扇旋转控制方法,该方法使用cpld-fpga接替bmc的控制权,由cpld-fpga经过逻辑判断后控制风扇模组旋转,该方法使散热方案具有更大的控制灵活性、ocp安全性与集成性等优点,控制方式简单易行,散热控制效率得到极大提高。

本发明所述的控制方法还有效避免了bmc初始化未完成时,所有风扇模组全速运转造成的启动浪涌电流过大,从而导致的ocp过流保护问题;同时本发明集成到cpld-fpga芯片中统一控制,避免了硬件电路中bmc输出pwm与各个风扇模组输入pwm线路匹配问题,使控制更加条理、灵活;本发明采用模块化实现风扇模组旋转控制,增加了控制方法的移植性。



技术实现要素:

本发明所述的基于cpld-fpga的服务器风扇旋转控制方法使用cpld-fpga接替bmc的控制权、bmc初始化完成信号、pwm控制信号及watchdog统一作为cpld-fpga的输入信号,由cpld-fpga经过逻辑判断后控制风扇模组旋转,由于cpld-fpga的可编程等特性,该方法使散热方案具有更大的控制灵活性、ocp安全性与集成性等。

本发明所述的方法包括:

1、在cpld-fpga检测到bmc正常运行之前,cpld-fpga控制风扇模组分时全速启动,各个风扇模组全速启动之间有一定可编程的时间间隔,这样在很大程度上减小了启动浪涌电流的峰值,从而防止了由ocp导致的服务器不能启动的问题;

2、cpld-fpga检测到bmc正常运行时,由从bmc接收到的pwm信号作为cpld-fpga控制依据,由硬件电路来决定是直接将bmc接收到的pwm信号作为cpld-fpga控制信号,还是将bmc接收到的pwm信号取反后作为cpld-fpga控制信号,这种通过cpld-fpga逻辑判断后控制风扇模组转速具有更大的灵活性;

3、cpld-fpga检测到bmc故障时,cpld-fpga输出控制信号使风扇模组全速旋转,此时由于风扇模组电流不是从无到有突变,因此,不会发生ocp过流保护。

4、为增加代码的移植能力,整个基于cpld-fpga的服务器风扇旋模组转控制模块采用模块化设计方案,模块结构示意图如附图1所示。

在附图1所示的风扇转速控制结构示意图中,“clk_1”、“clk_2”是时钟,分别为快慢两个时钟用于watchdog信号的上升沿扫描和信号采集;“rst”是复位信号,复位cpld-fpga相关控制信号和寄存器的初始状态;“bmc_wtd”是由bmc输入cpld-fpga的watchdog信号,bmc正常运行时该信号为方波信号,否则该信号为固定电平信号;“bmc_init”是bmc初始化完成信号,当bmc正常工作以后该信号为低电平,否则该信号为高电平;“fan_pwrgd”是风扇模组电源有效信号,当该信号有效为高电平时,指示风扇模组电源已经稳定;

“fan0_pwrgd……fan(n-1)_pwrgd”是第n个风扇电源有效控制信号,在分时启动与正常运行时,均已将此信号作为风扇模组旋转有效信号,只有当这些信号有效为高电平时,对应的风扇模组才会旋转,因此,这些信号有效的时间分先后,之后一直有效;“bmc_fan0_pwm……bmc_fan(n-1)_pwm”指示由bmc输入到cpld-fpga的风扇模组的控制信号,这些信号根据实际情况在cpld-fpga内部进行直接赋值或取反赋值;“cpld_fan0_pwm……cpld_fan(n-1)_pwm”是cpld-fpga输出到风扇模组的控制信号,对应到风扇模组的pwm输入端。

具体工作流程是:

当“bmc_init”无效时,附图1中的“bmc未正常运行时风扇分时全速启动模块”根据各个风扇模组对应的电源有效信号进行分时全速启动,各个风扇模组根据输出pwm进行分时全速启动,分时全速启动的时间间隔是可以调节的,由项目需求决定;

当“bmc有效时”,附图1中的“bmc正常运行时风扇转速控制模块”根据由bmc输入的pwm进行各个风扇模组转速控制;在bmc正常运行过程中,如果通过watchdog信号检测到bmc发生故障,此时会强制各个风扇模组全速运转。

具体地,本申请请求保护一种基于cpld-fpga的服务器风扇旋转控制方法,其特征在于,该方法具体包括三个模块:

bmc未正常运行时风扇分时全速启动模块,用于当bmc初始化未完成未能正常工作时,控制风扇根据各个风扇模组对应的电源有效信号进行分时全速启动;

bmc正常运行时风扇转速控制模块,用于当bmc有效时,根据由bmc输入的pwm进行各个风扇模组转速控制,如果通过watchdog信号检测到bmc发生故障,强制各个风扇模组全速运转;

cpld-fpga输出选择模块,用于在检测到bmc正常运行时,依据从bmc接收到的pwm信号决定是直接将bmc接收到的pwm信号作为cpld-fpga控制信号,还是将bmc接收到的pwm信号取反后作为cpld-fpga控制信号;

当“bmc_init”无效时,bmc未正常运行时风扇分时全速启动模块根据各个风扇模组对应的电源有效信号进行分时全速启动,各个风扇模组根据输出pwm进行分时全速启动;

当bmc有效时,bmc正常运行时风扇转速控制模块根据由bmc输入的pwm进行各个风扇模组转速控制;在bmc正常运行过程中,如果通过watchdog信号检测到bmc发生故障,此时会强制各个风扇模组全速运转。

如上所述的基于cpld-fpga的服务器风扇旋转控制方法,其特征还在于,分时全速启动的时间间隔是可以调节的。

如上所述的基于cpld-fpga的服务器风扇旋转控制方法,其特征还在于,bmc正常运行时风扇转速控制模块还检测各个风扇模组电源有效信号的有效性。

如上所述的基于cpld-fpga的服务器风扇旋转控制方法,其特征还在于,上述模块可以通过verilog硬件描述语言设计完成。

附图说明

图1、风扇转速控制模块结构示意图

图2、风扇转速控制模块的工作示意图

具体实施方式

本发明针对传统控制方案中,bmc初始化未完成,风扇模组同时全速旋转导致的ocp过流保护问题与bmc初始化完成后,bmc输出pwm与风扇模组线路匹配的问题,基于cpld-fpga设计了风扇模组旋转控制模块。本发明所述的方法可以在bmc初始化未完成时,风扇模组分时全速启动,通过降低启动浪涌电流防止了ocp过流保护问题;通过采用cpld-fpga集成统一控制,使控制更加条理、灵活,避免了由于线路匹配问题可能带来的硬件成本的增加,并且本发明基于已有的cpld-fpga实现的控制,不会带来硬件成本的增加。

本发明实施例一:(即本发明最基本的实施方案)

如附图1所示,本发明所述的控制方法主要由三个模块完成:

1)bmc未正常运行时风扇分时全速启动模块

当bmc初始化未完成未能正常工作时,即“bmc_init”无效为高电平时,bmc未正常运行时风扇分时全速启动模块根据各个风扇模组对应的电源有效信号进行分时全速启动,即根据“fan0_pwrgd……fan(n-1)_pwrgd”的有效电平判断,使各个风扇模组根据输出pwm进行分时全速启动,分时全速启动的时间间隔是可以调节的,由项目需求决定,通过调节“fan0_pwrgd……fan(n-1)_pwrgd”的延时时间就可以;

2)bmc正常运行时风扇转速控制模块

当“bmc有效时”,bmc正常运行时风扇转速控制模块根据由bmc输入的pwm进行各个风扇模组转速控制,此时也要检测各个风扇模组电源有效信号“fan0_pwrgd……fan(n-1)_pwrgd”的有效性;在bmc正常运行过程中,如果通过watchdog信号检测到bmc发生故障,此时会强制各个风扇模组全速运转。

3)cpld-fpga输出选择模块

cpld-fpga检测到bmc正常运行时,由从bmc接收到的pwm信号作为cpld-fpga控制依据,由cpld-fpga输出选择模块来决定是直接将bmc接收到的pwm信号作为cpld-fpga控制信号,还是将bmc接收到的pwm信号取反后作为cpld-fpga控制信号;

cpld-fpga上电运行时,通过调节cpld-fpga、bmc等,控制各个风扇模组bmc初始化时的分时全速启动、bmc正常运行时的正常旋转及bmc故障时的全速旋转。

在工程代码顶层例化模块化的风扇旋转控制模块,对应好输入输出接口,包括cpld-fpga与bmc和各个风扇模组的接口,上述模块可以通过verilog硬件描述语言设计完成。

附图2所示为通过开发工具生成风扇转速控制模块的工作示意图。

在附图2中有6个风扇模组:附图2中风扇转速控制模块接口与附图1所示接口一致,附图2中5个小模块为延时模块,分别是“fan1_pwrgd……fan5_pwrgd”的延时有效信号,fan0_pwrgd恒等于“fan_pwrgd”,即第一个风扇模组在逢源电源有效后就全速启动,后5个风扇模组分时全速启动;

附图2中大框所示的部分为风扇转速控制模块,控制风扇转速。

显而易见地,上面所示的仅仅是本发明的两个具体实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据上述实施例获得其他的技术方案,以及在本发明保护的范围内做出的等同变化均应落入本发明的保护范围内,都属于本发明保护的范围。

将本发明中风扇转速控制模块应用到四路服务器的风扇转速控制中,经过实际验证,风扇模组实际工作结果与期望结果一致:在bmc初始化未完成时,风扇模组分时全速启动,避免之前存在的ocp过流保护问题;在bmc初始化完成之后,bmc输出至cpld-fpga的pwm作为控制风扇转速的依据;在bmc正常运行并发生故障时,风扇模组全速旋转。

综上所述,本发明所述的基于cpld-fpga的服务器风扇旋转控制方法在已有cpld-fpga基础上实现了风扇模组的转速控制,不会增加额外的cpld-fpga芯片,因此也不会增加硬件成本;同时,本发明克服了因bmc未正常运行各个风扇模组同时全速运转导致的ocp过流保护问题和对硬件电路匹配设计不够灵活的问题,本发明所述的服务器风扇模组旋转控制方法,对其它领域通过cpld-fpga实现风扇模组旋转控制都有一定的借鉴意义。

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