专利名称:整合电源监控总线协议和串行通信协议接口实现方法
技术领域:
本发明涉及电源监控协议PMBus接口和串行通信12C接口,属于集成电路的设计, 隶属电子技术领域。
背景技术:
电源管理总线(PMBus)通信协议规范定义了一个用在功率转换器件和管理器件之间的开放标准数字电源管理协议(包括接口和命令)。借助PMBus,数字电源可以依据一套标准命令进行配置、监控和维护,在发生故障或运行警告时,设计者可以使用PMBus 指令设定电源的工作参数、监视其工作状况和实施校正措施。而串行通信I2C协议是一种两线制串行通信标准,每个从机都有个特定的地址,I2C的传输速率在标准模式下可达 100kbit/s,快速模式下可达400kbit/s,高速模式下可达3. 4Mbit/s。
PMBus协议的数据链路层的通信规范是源于I2C协议,但是PMBus很少需要大数据量的数据传输和高速的传输模式,因此本发明旨在设计一个接口电路,该接口电路可以同时满足PMBus协议和I2C协议,在PMBus模式下,可以不需要非常快的速度和大的数据量就可以实现PMBus,而在I2C模式下,可以实现快速的和大数据量的数据传输。这样就实现了在单一物理地址的基础上,可以同时实现PMBus协议的监控和大数据量的I2C协议数据传输。发明内容
本发明提供了整合电源监控总线协议和串行通信协议接口实现方法,该方法在遵照PMBus协议和I2C通信协议的同时,充分优化了两个接口的整合,运用了较少的十个状态就实现了发明。
本发明的技术方案如下
一种整合电源监控总线协议和串行通信协议的接口实现方法,其特征在于
流程进入开始,之后直接进行start信号判断,判断电源监控总线PMBus上是否存在start信号,如果没有start信号,则返回开始,如果有start信号,则进入模式判断,判断是PMBus通信模式,还是I2C通信模式。
如果判断为电源监控总线PMBus通信模式,则进行故障中断ARA判断,判断是否存在故障中断ARA ;如果存在故障中断ARA,则进入故障响应ARA响应,向PMBus总线发送从机地址数据,并且完成地址发送后进入开始;如果不存在ARA中断,则进入电源监控总线 PMBus操作读写判断,判断是否进行PMBus读操作,如果是PMBus读操作,则进一步判断是进行1个字节还是2个字节数据的读取,如果是1个字节数据的读取,则进入电源监控总线 PMBus模式,读1个字节,完成1个字节读取后,进入开始,如果是2个字节数据的读取,则进入电源监控总线PMBus模式读2个字节,完成2个字节读取后进入开始;如果不是电源监控总线PMBus读操作,则判断是进行1个字节还是2个字节数据的写入,如果是1个字节数据的写入,则进入电源监控总线PMBus模式写1个字节,完成1个字节写入后进入开始,如果是2个字节数据的写入,则进入电源监控总线PMBus模式写2个字节,完成2个字节写入后进入开始。
如果判断为不是电源监控总线PMBus通信模式,则进入串行通信I2C读操作的判断,如果判断为读操作,则进入串行通信I2C模式读操作进行数据的读取,再在串行通信 I2C模式下进行总线读操作stop信号判断,判断总线上是否存在stop信号,如果存在stop 信号,则完成数据读取,并且进入开始,如果不存在stop信号,则保持进行数据的读取;如果判断为写操作,则进入I2C模式写操作进行数据的写入,再在I2C模式下进行PMBus总线写操作stop信号,判断总线上是否存在stop信号,如果存在stop信号,则数据写入完成, 并且进入开始,如果不存在stop信号,则保持进行数据的写入。
本次复合PMBus协议和I2C协议接口实现方法的发明,完全采用Verilog HDL编写,已经通过功能验证,而且可以通过DC逻辑综合软件综合,从而使用标准的门单元电路搭建,设计的灵活性非常大,如果需要对设计进行调整,可以随时根据需要进行适当调整和修改,适用性强。
本发明的优点及有益成果
1)本发明基于PMBus总线设计,完全符合电源监控总线PMBus协议的标准,兼容性较好,可以直接运用于具有电源监控总线PMBus控制的电源监控环境中。
幻本发明设计整合I2C总线,同样也是完全符合串行通行I2C的通行协议标准,可以在实现电源监控的同时,也可以实现总线器件间的数据传输。
3)电路设计理念简单,容易实现,可以通过DC逻辑综合后由标准门电路构建,制备工艺简单。
4)电路的可修改性好,可以根据具体运用需要进行适当的调整和修改。
5)以最简单的结构实现了高性能的PMBus接口和I2C接口的整合,占据芯片面积小,功耗也较小。
图1是本发明的流程图。
图2是本发明的系统状态图。
图3是本发明两种模式切换时主要信号的关系示意图(前半部分)。
图4是本发明两种模式切换时主要信号的关系示意图(后半部分)。
图5是本发明两种模式切换的仿真波形图(前半部分)。
图6是本发明两种模式切换的仿真波形图(后半部分)。
具体实施方式
一种整合电源监控总线协议和串行通信协议的接口实现方法,其特征在于
流程进入开始1,之后直接进行start信号2判断,判断电源监控总线PMBus上是否存在start信号,如果没有start信号,则返回开始1,如果有start信号,则进入模式判断3,判断是PMBus通信模式,还是I2C通信模式。
如果判断为电源监控总线PMBus通信模式,则进行故障中断ARA4判断,判断是否存在故障中断ARA ;如果存在故障中断ARA,则进入故障响应ARA响应5,向PMBus总线发送从机地址数据,并且完成地址发送后进入开始1 ;如果不存在ARA中断,则进入电源监控总线PMBus操作读写判断6,判断是否进行PMBus读操作,如果是PMBus读操作,则进一步判断是进行1个字节还是2个字节数据的读取,如果是1个字节数据的读取,则进入电源监控总线PMBus模式,读1个字节8,完成1个字节读取后,进入开始1,如果是2个字节数据的读取,则进入电源监控总线PMBus模式读2个字节9,完成2个字节读取后进入开始1 ;如果不是电源监控总线PMBus读操作,则判断是进行1个字节还是2个字节数据的写入,如果是 1个字节数据的写入,则进入电源监控总线PMBus模式写1个字节11,完成1个字节写入后进入开始1,如果是2个字节数据的写入,则进入电源监控总线PMBus模式写2个字节9,完成2个字节写入后进入开始1。
如果判断为不是电源监控总线PMBus通信模式,则进入串行通信I2C读操作13的判断,如果判断为读操作,则进入串行通信I2C模式读操作14进行数据的读取,再在串行通信I2C模式下进行总线读操作stop信号15判断,判断总线上是否存在stop信号,如果存在stop信号,则完成数据读取,并且进入开始1,如果不存在stop信号,则保持进行数据的读取;如果判断为写操作,则进入I2C模式写操作16进行数据的写入,再在I2C模式下进行 PMBus总线写操作stop信号17,判断总线上是否存在stop信号,如果存在stop信号,则数据写入完成,并且进入开始1,如果不存在stop信号,则保持进行数据的写入。
本方法是基于状态机设计的,状态机包含IDLE、Addr、ARA & send address、 COMMAND、Data_ffrite, Restart & Addr_R、Data_Read、I2C_ffrite, I2C_Read 和 STOP 十个状态,在任何阶段内如果检测到PMBus总线上存在stop信号,则状态机直接进入开始,否则正常工作。状态机在启动时或者无任何操作时,一直处于开始,并且当PMBus总线上检测到 start信号时,状态机进入Addr状态,此时mode_sel信号为低电平时进入PMBus传输模式, 如果mode_sel信号为高电平时进入I2C传输模式,在PMBus传输模式下,当alert_n为低电平时,说明有ARA中断,状态机进入ARA & send address状态,在此状态下从机地址数据被送至PMBus总线输出,ARA响应完成标志端口产生高电平脉冲信号表示完成ARA响应,可以进行后续操作;否则状态机进入COMMAND状态,状态机接收PMBus总线上的一个字节的串行命令数据,并从命令输出端口输出,同时在命令输出使能端产生一个高电平脉冲信号,此时如果PMBus总线上检测到restart信号时,则进入Data_Write状态,否则进入Restart & Addr_R状态读取PMBus总线输入的读数据地址后转入Data_Read状态;在Data_Write状态下,如果字节或字选择信号为高电平时,表示一个字节操作,将PMBus总线输入的数据送至数据输出端口输出,并且在数据输出使能端产生高电平脉冲信号;如果字节或字选择信号为低电平时,将PMBus总线输入的二个字节数据依次通过数据输出端口输出,并且每个字节传输完毕后都在数据输出使能端都产生一个高电平脉冲信号,并进入开始;在Data_ Read状态下,将读取需向PMBus总线发送数据的输入端口数据,若字节或字选择信号为高电平,则数据锁存使能输出端输出一个高电平脉冲信号,并读取需向PMBus总线发送数据的输入端口上一个字节的数据,若字节或字选择信号为低电平,则数据锁存使能输出端输出二个高电平脉冲信号,并且由高电平脉冲信号控制依次读取需向PMBus总线发送数据的输入端口上二个字节的数据,数据的读取完成后进入开始。在12C传输模式下,根据12C协议逐位读取PMBus串行总线上的Sbits数据后,根据所读数据的最低位判断读写操作,当最低位为高电平时I2C进入I2C_Read状态,并且数据锁存使能输出端上产生一个高电平脉冲信号,此时将需向PMBus总线发送数据的输入端口上的数据送至PMBus总线,之后重复读数据操作;若最低位为低电平I2C进入I2C_Write模式,数据输出端口并行输出PMBus串行总线上的Sbits数据,并且数据输出使能端产生一个高电平脉冲信号,之后重复写数据操作。 在I2C_Read状态和I2C_Write状态下若检测到PMBus总线stop信号则转入开始,等待新一轮的监控或数据传输。
下面结合附图及实例对本发明的电路结构、工作原理及过程作进一步说明。
图1是本发明的流程图,流程包括开始、start信号、PMBus模式、ARA中断、ARA响应、PMB读操作、读1字节、PMBus模式读1个字节、PMBus模式读2个字节、写1字节、PMBus 模式写1个字节、PMBus模式写2个字节、I2C读操作、I2C模式读操作、读操作stop信号、 I2C写操作和写操作stop信号十七个步骤。本发明的目的就是能够实现两种模式的数据传送,所以实现的方式就是进入相应的模式下,然后完成响应的读或者写操作,而在进入何种模式和进行何种操作都是需要根据特定的条件进行判断和选择,所以本流程图的核心就是根据特性信号做出相应的判断,然后根据流程完成模式和操作类型的选择,从而实现两种协议接口的整合。
参看图2 是本发明的状态图,包括 IDLE、Addr、ARA & send address、COMMAND、 Data_ffrite,Restart & Addr_R、Data_Read、I2C_Write、I2C_Read 和 STOP 十个状态。本发明就是设计了一种采用较少状态数的状态机,从而很好的实现了 PMBus协议接口和I2C协议接口整合的接口方法。该接口方法具有PMBus模式和I2C模式两种模式,而在PMBus模式下,能够响应ARA中断,在PMBus模式下能够实现对电源的监控或者是固定字节数据的读写,而在I2C模式下,可以实现不定字节数的数据读写操作,两个模式下,该接口方法都起到了串并数据转换的作用。将来自PMBus的串行数据并行的送给后续电路,或者从后续电路中读取并行数据,然后串行的向PMBus总线发送。
图3是本发明两种模式切换时主要信号的关系示意图(前半部分)。图中画出了在PMBus和I2C传输两种模式下转换之前PMBus模式读取两个字节数据的关键信号的示意图,传输从scl为高电平时sda从高变低电平的开始信号,然后总线传送从机地址,从图中可以读出其为8' hDO (8' bl 1010000),然后PMBus总线发送master_data[7:0]上的命令数据8' hlO,经过9个scl时钟,cmd_acc印t[7:0]接收到命令数据8' hlO,并且cmd_en 产生一个高电平脉冲;接着总线产生重开始信号,然后总线传送从机地址,从图中可以读出其为8' hDl(8' bllOlOOOl),接着连续读取data_acc印t[7:0]上的两个数据8' h20和 8' h46,并且产生一个stop_en高电平脉冲,表示结束操作。然后mode_sel由原先的低电平变为高电平,表示变换为I2C通信模式。
图4是本发明两种模式切换时主要信号的关系示意图(后半部分)。该图实际上是图3的延续,但是由于考虑排版,所以将两种模式切换的关系图分成图3和图4。图中画出了在PMBus和I2C传输两种模式下转换之后I2C模式写入三个字节数据的关键信号的示意图,mode_sel由低电平变为高电平开始,此时模式由PMBus模式转变为I2C模式,传输从 scl为高电平时sda从高变低电平的开始信号,然后PMBus总线传送从机地址,从图中可以读出其为8' hDO (8' bl 1010000),然后PMBus总线发送master_data[7:0]上的命令数据 8' h05,经过9个scl时钟,data acc印t [7:0]接收到数据8' h05,并且data_en产生一个高电平脉冲;然后PMBus总线第二次发送master_data[7:0]上的命令数据8' hl7,经过9个scl时钟,data_acc印t[7:0]接收到数据8' hl7,并且data_en产生一个高电平脉冲; 然后PMBus总线第三次发送master_data[7:0]上的命令数据8' h28,经过9个scl时钟, data_accept[7:0]接收到数据8' h29,并且data_en产生一个高电平脉冲;完成三次数据的写入后PMBus产生一个stop信号,所以stop_en产生一个高电平脉冲,表示操作结束。
图5是本发明两种模式切换的仿真波形图(前半部分)。该图是由PMBus模式读取两个字节数据向I2C模式写入三个字节数据切换的仿真图的前半部分,也就是PMBus模式读取两个字节数据的波形图。从图中可以看出,该接口电路能够在PMBus和I2C两个模式间顺利切换。图中在cmd_acc印t[7:0]接收到主机发送的命令数据8' h08, cmd_en使能有效后,主机的rCV_data[7:0]连续接收到两个从机数据8' hOa和8' hOf。
图6是本发明两种模式切换的仿真波形图(后半部分)。该图是由PMBus模式读取两个字节数据向I2C模式写入三个字节数据切换的仿真图的后半部分,也就是I2C模式写入三个字节数据的波形图。事实上,本仿真图形是图5的延续,但是也是为了考虑排版所以将仿真图分成图5和图6。从图中可以看出,该接口电路能够在PMBus和I2C两个模式间顺利切换。图中在master_rCV[7:0]顺利接收完数据8' hOf,并且产生了 stop_en高电平脉冲。然后m0de_Sel信号由低电平变为高电平,也就是模式变为I2C模式,data_accept [7 0] 一次接收到来自PMBus总线的数据8' hl8、8' h20和8' h28,并且产生了相应的data_en 使能高电平脉冲信号,最后产生了 stop_en高电平脉冲,表示传输结束。
权利要求
1. 一种整合电源监控总线协议和串行通信协议的接口实现方法,其特征在于, 流程进入开始(1),之后直接进行Start信号(2)判断,判断电源监控总线PMBus上是否存在start信号,如果没有start信号,则返回开始(1),如果有start信号,则进入模式判断(3),判断是PMBus通信模式,还是I2C通信模式,如果判断为电源监控总线PMBus通信模式,则进行故障中断ARA(4)判断,判断是否存在故障中断ARA ;如果存在故障中断ARA,则进入故障响应ARA响应(5),向PMBus总线发送从机地址数据,并且完成地址发送后进入开始(1);如果不存在ARA中断,则进入电源监控总线PMBus操作读写判断(6),判断是否进行PMBus读操作,如果是PMBus读操作,则进一步判断是进行1个字节还是2个字节数据的读取,如果是1个字节数据的读取,则进入电源监控总线PMBus模式,读1个字节(8),完成1个字节读取后,进入开始(1),如果是2个字节数据的读取,则进入电源监控总线PMBus模式读2个字节(9),完成2个字节读取后进入开始(1);如果不是电源监控总线PMBus读操作,则判断是进行1个字节还是2个字节数据的写入,如果是1个字节数据的写入,则进入电源监控总线PMBus模式写1个字节(11),完成 1个字节写入后进入开始(1),如果是2个字节数据的写入,则进入电源监控总线PMBus模式写2个字节(9),完成2个字节写入后进入开始(1),如果判断为不是电源监控总线PMBus通信模式,则进入串行通信I2C读操作(13)的判断,如果判断为读操作,则进入串行通信I2C模式读操作(14)进行数据的读取,再在串行通信I2C模式下进行总线读操作stop信号(15)判断,判断总线上是否存在stop信号,如果存在stop信号,则完成数据读取,并且进入开始(1),如果不存在stop信号,则保持进行数据的读取;如果判断为写操作,则进入I2C模式写操作(16)进行数据的写入,再在I2C模式下进行PMBus总线写操作stop信号(17),判断总线上是否存在stop信号,如果存在stop 信号,则数据写入完成,并且进入开始(1),如果不存在stop信号,则保持进行数据的写入。
全文摘要
整合电源监控总线协议和串行通信协议接口实现方法,本发明采用状态机的方式整合了电源监控总线PMBus协议和串行通信总线I2C协议,该发明的工作流程以总线上的start信号开始,如果存在start信号,则首先进行模式判断,判断是电源监控总线PMBus模式,还是串行通信I2C模式。如果是电源监控总线PMBus模式,则进一步判断是否存在故障中断ARA和进行的是读还是写操作判断,最后判断是一个还是两个字节的读或写操作,从而实现读1个字节、读2个字节、写1个字节和写2个字节四个操作的其中之一。如果是串行通信I2C模式,则进一步判断是读还是写操作,最后以总线的stop信号结束传输。
文档编号H04L29/10GK102546611SQ20111044411
公开日2012年7月4日 申请日期2011年12月27日 优先权日2011年12月27日
发明者孙伟锋, 常昌远, 徐玉珉, 徐申, 时龙兴, 王青, 陆生礼 申请人:东南大学