一种基于I2C接口通过CPLD来实现NVMeSSD点灯的方法与流程

文档序号:11230321阅读:2436来源:国知局
一种基于I2C接口通过CPLD来实现NVMe SSD点灯的方法与流程

本发明属于服务器设计领域,尤其是一种基于i2c接口通过cpld来实现nvmessd点灯的方法。



背景技术:

随着技术的发展,存储硬盘的种类也在不断地更新换代,目前技术最前沿的nvmessd也已经步入了大家的视野,而随着nvmessd的技术趋近成熟,nvmessd也在市场上面流行起来,可在服务器存储领域如何将nvmessd的工作状态有效地直观地显现出来是步入nvme领域的一大难点。我们所熟知的sata硬盘或者sas硬盘都是通过sgpio解码到硬盘的工作状态,然后通过cpld或者pic去进行解码spio去获得sata或者sas硬盘的工作状态,而nvmessd走的是pciebus总线,其工作状态是cpu本身比较清楚的,因此nvmessd的工作状态只有通过cpu的i2c来显现。而cpu的这组i2c主要是用来做pciehot-plug的。

现有的nvmessd工作状态是由i2c连接到pic,由pic解码i2c通信数据来实现nvme的热插拔功能。pic上面连接的是sff-8639接口的ifdet#和hdd_present#这两个信号来判定是否插入了nvmessd硬盘。

nvmessd硬盘的工作状态指示灯是否能够像sata或者sas硬盘那样直观地体现出来,目前暂没有好的方案,应用最多的就是将cpu的i2c信号来实现nvmessd的热插拔功能,而nvme的活动指示灯都是通过nvmessd本身自带的信号输出点灯,可是如何实现nvmessd的报错指示灯和locate(在位)指示灯结合是现有技术的一大缺点。

为此,有必要设计一种新型的点灯系统,能够在不改变硬件的情况下实现nvmessd位置和工作状态点灯。



技术实现要素:

本发明的主要目的是提供一种基于i2c接口通过cpld来实现nvmessd点灯的方法,用来克服现有现有电动助力车无法实现健身的问题。

本发明是这样实现的,一种基于i2c接口通过cpld来实现nvmessd点灯的方法,包括以下步骤:

步骤a:初始化步骤,所述初始化步骤系将cpld配制成i2cslave设备;

步骤b:状态读取步骤,所述状态读取步骤系cpu通过配置后的cpld读取nvmessd的状态;

步骤c:点灯步骤,所述点灯步骤系cpu命令配置后的cpld点亮对应的错误指示灯。通过cpld实现解码点灯,免去了通过pic进行解码的步骤。

i2c(inter-integratedcircuit)总线是由philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。i2c总线支持任何ic生产工艺(cmos、双极型)。通过串行数据(sda)线和串行时钟(scl)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——mcu、lcd驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。lcd驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。

cpld(complexprogrammablelogicdevice)复杂可编程逻辑器件,是从pal和gal器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。

本发明的进一步技术方案是:所述步骤a中通过状态机机制实现cpld配制成i2cslave。

本发明的进一步技术方案是:所述状态机机制通过vhdl语言来实现。

vhdl全名very-high-speedintegratedcircuithardwaredescriptionlanguage,诞生于1982年。1987年底,vhdl被ieee和美国国防部确认为标准硬件描述语言。自ieee-1076(简称87版)之后,各eda公司相继推出自己的vhdl设计环境,或宣布自己的设计工具可以和vhdl接口。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,简称93版。vhdl和verilog作为ieee的工业标准硬件描述语言,得到众多eda公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。

本发明的进一步技术方案是:所述步骤b包括以下分步骤:

步骤b1:cpu通过i2c接口从cpld读取到nvmessd的在位状态;

步骤b2:cpu识别nvmessd硬盘的工作状态。

本发明的进一步技术方案是:所述步骤b1包括以下分步骤:

步骤b11:cpld获取sff-8639接口信号电平;

步骤b12:cpld通过电平信号判断该sff-8639接口上接的硬盘类型。

本发明的进一步技术方案是:所述步骤b12中通过ifdet#和prsent#信号电平判断插接硬盘类型。

本发明的进一步技术方案是:所述步骤b12中遵循的规则为,当ifdet#和prsent#信号都为高电平时候,表示此sff-8639没有接入任何硬盘;当ifdet#为低而prsent#为高时,表示此时接入的是nvmessd硬盘;当ifdet#和prsent#都为低时,表示此时接入的是sata或sas硬盘。

本发明的进一步技术方案是:所述步骤c包括以下分步骤:

步骤c1:bios将nvmessd硬盘报错信息通过i2c接口传给cpld;

步骤c2:cpld点亮对应nvmessd的错误指示灯。

本发明的进一步技术方案是:所述步骤a包括以下分步骤:

步骤a1:将i2c分解成若干状态;

步骤a2:主板bmc确定cpld设备地址。

本发明的进一步技术方案是:所述步骤a2包括以下分步骤:

步骤a21:主板bmc发送寻址信号;

步骤a22:cpld读取所述寻址信号,若寻址信号地址与自身相同则发送相应信号,若寻址信号地址与自身不同则不做处理。

本发明的有益效果是:本方案提供的基于i2c接口通过cpld来实现nvmessd点灯的方法采用cpu的i2c然后连接到cpld来解码cpu发出的信息进行对nvmessd工作状态的指示灯功能。可以有效地将nvmessd的工作状态像普通的sata或者sas硬盘一样直观地显现出来,用户界面通过肉眼外观状态只能灯就能直观地判断出来nvmessd的工作状态,非常直观便捷。另外本发明采用cpld的方案在后续维护更容易,如果要增加附加功能只需要更改cpldfw就可以轻松实现了。具体成本低,实用性强,维护便捷,调试灵活的优越性。

附图说明

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

图1是本发明实施例提供的基于i2c接口通过cpld来实现nvmessd点灯的方法的框体示意图。

图2是本发明实施例提供的基于i2c接口通过cpld来实现nvmessd点灯的方法的状态机示意图。

图3是本发明实施例提供的基于i2c接口通过cpld来实现nvmessd点灯的方法的硬盘写入模拟结果图。

图4是本发明实施例提供的基于i2c接口通过cpld来实现nvmessd点灯的方法的硬盘读取模拟结果图。

具体实施方式

本发明提供一种基于i2c接口通过cpld来实现nvmessd点灯的方法。以下结合附图及实施例对本发明进行详细说明。

一种基于i2c接口通过cpld来实现nvmessd点灯的方法,包括以下步骤:

步骤a:初始化步骤,所述初始化步骤系将cpld配制成i2cslave设备;

步骤b:状态读取步骤,所述状态读取步骤系cpu通过配置后的cpld读取nvmessd的状态;

步骤c:点灯步骤,所述点灯步骤系cpu命令配置后的cpld点亮对应的错误指示灯。通过cpld实现解码点灯,免去了通过pic进行解码的步骤。

进一步的,所述步骤a中通过状态机机制实现cpld配制成i2cslave。

进一步的,所述状态机机制通过vhdl语言来实现。

进一步的,所述步骤b包括以下分步骤:

步骤b1:cpu通过i2c接口从cpld读取到nvmessd的在位状态;

步骤b2:cpu识别nvmessd硬盘的工作状态。

进一步的,所述步骤b1包括以下分步骤:

步骤b11:cpld获取sff-8639接口信号电平;

步骤b12:cpld通过电平信号判断该sff-8639接口上接的硬盘类型。

进一步的,所述步骤b12中通过ifdet#和prsent#信号电平判断插接硬盘类型。

进一步的,所述步骤b12中遵循的规则为,当ifdet#和prsent#信号都为高电平时候,表示此sff-8639没有接入任何硬盘;当ifdet#为低而prsent#为高时,表示此时接入的是nvmessd硬盘;当ifdet#和prsent#都为低时,表示此时接入的是sata或sas硬盘。

进一步的,所述步骤c包括以下分步骤:

步骤c1:bios将nvmessd硬盘报错信息通过i2c接口传给cpld;

步骤c2:cpld点亮对应nvmessd的错误指示灯。

进一步的,所述步骤a包括以下分步骤:

步骤a1:将i2c分解成若干状态;

步骤a2:主板bmc确定cpld设备地址。

进一步的,所述步骤a2包括以下分步骤:

步骤a21:主板bmc发送寻址信号;

步骤a22:cpld读取所述寻址信号,若寻址信号地址与自身相同则发送相应信号,若寻址信号地址与自身不同则不做处理。

本发明采用cpu的i2c然后连接到cpld来解码cpu发出的信息进行对nvmessd工作状态的指示灯功能。由于cpu必须要通过这个i2c来实现对nvmessd热插拔功能,因此从硬件线路上面来讲是不需要增加新的硬件电路,只需要共用这对i2c来解码。我们利用cpld的可编程性,将cpld配置成一个i2cslave设备,cpu通过i2c接口从cpld读取到nvme的在位状态,其在位状态是由sff-8639p4和p10pin的ifdet#和prsent#来实现的,但这两个信号都为高电平时候,表示此sff-8639没有接入任何硬盘,当ifdet#为低而prsent#为高时,表示此时接入的是nvmessd,当ifdet#和prsent#都为低时,表示此时接入的是sata或者sas硬盘,因此cpld利用这两个信号很容易识别出来是否有接入nvmessd,然后通过i2c传给cpu,而此时bios能很顺利的解析出来。同时cpld将nvmessd本身自带的活动指示灯显示在对应接口位置用来识别nvmessd的活动指示状态。另一方面,cpu能够很好地识别到nvmessd硬盘的工作状态,当发现nvmessd硬盘出现问题的时候,bios会通过这个报错的信息通过i2c给到cpld去解码出来,相同的对于locate的状态指示也很容易地识别出来。

本发明可以有效地将nvmessd的工作状态像普通的sata或者sas硬盘一样直观地显现出来,用户界面通过肉眼外观状态只能灯就能直观地判断出来nvmessd的工作状态,非常直观便捷。

本发明应用了cpld解码i2c的通信接口协议来实现点灯的功能,bios通过cpu来获取nvmepciessd的工作,当侦测到pciessd工作异常的时候,系统会通过hotplugi2c接口传递出信息来让cpld去点对应的错误指示灯,同理如果从系统界面上面想要去获取对应的pciessdlocate位置的时候,也会通过i2c接口传递出信息来让cpld去点对应ssd位置的指示灯。

cpuhotplugi2c与cpld之间的线路连接框图如图1所示。

要实现此发明方案需要解决的技术难题是如果通过cpld的普通gpio接口来实现与cpu直接的i2c通信。cpld是没有定义i2c通信接口的,要实现与主板的i2c接口通信,需要将cpld当成一个i2cslave设备,我们采用vhdl语言,利用状态机的机制来解决此技术难题,图2是利用vhdl语言实现后跑出来的状态机图。

状态机通过把i2c分解成idle状态、readaddress状态、send_ack1状态、read_cmd状态、write_cmd状态、wait_ack_1状态、wait_ack_2状态,利用这些状态有效的把i2c的通信协议分解成类似一个一个的小模块,这些小模块内部处理完后会跳转到下一个模块进行处理,如果处理完成了就会跳转到idel状态。这些模块之间的跳转主要是遵循以下原则,首先cpu发送i2c的地址,当cpld读取到的地址值跟自身设置的地址一样时就会发送ack信号给cpu,如果地址不一样cpld不进行后续处理,当cpld发送ack信号给到cpu之后,cpld根据地址值的最后一位是高电平还是低电平来判断此命令是读操作还是写操作,读为高电平,写为低电平,如果是读操作,cpu会从cpld那边读取到cpu所要的信息,比如nvmessd的ifdet#信号,如果读取到此信号为低电平,代表有nvmessd在位,反之不在位,另外cpu会根据硬盘的工作状态将对应的硬盘指示灯的状态发给cpld,cpld会将按照cpu发出的格式解析成容易识别的led控制状态,当数据操作完成后cpld会等待cpu设备发送wait_ack的信号或者cpld发送send_ack信号来指示数据的接收或者发送是否已经完成。

经过状态机实现了cpld的i2c接口功能的实现,同时利用cpld自带的仿真软件对所写的逻辑语言进行仿真,得到的仿真结果如下。

图3是i2c写动作的仿真结果,图4是i2c读动作的仿真结果。从图中可以看出通过本方法可以很好的表现出nvmessd的工作状态。

本方案提供的基于i2c接口通过cpld来实现nvmessd点灯的方法采用cpu的i2c然后连接到cpld来解码cpu发出的信息进行对nvmessd工作状态的指示灯功能。可以有效地将nvmessd的工作状态像普通的sata或者sas硬盘一样直观地显现出来,用户界面通过肉眼外观状态只能灯就能直观地判断出来nvmessd的工作状态,非常直观便捷。另外本发明采用cpld的方案在后续维护更容易,如果要增加附加功能只需要更改cpldfw就可以轻松实现了。具体成本低,实用性强,维护便捷,调试灵活的优越性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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