串行通用输入/输出系统的制作方法

文档序号:20874992发布日期:2020-05-26 16:22阅读:312来源:国知局
串行通用输入/输出系统的制作方法

本发明涉及一种串行通用输入/输出(serialgeneralpurposeinput/output;sgpio)系统,尤指一种具有循环冗余校验(cyclicredundancycheck;crc)功能的串行通用输入/输出系统。



背景技术:

在系统控制的过程中,信号在组件之间相互传递,通常以上一级的输出信号作为下一级的输入信号。然而信号在传输时,组件所输出的信号并非理想的完美波形,如键盘或按键所输入的信号。根据物理特性,当特性或准位被瞬间改变时,无法立即转态,会产生扰动,导致信号在进入稳定输出状态之前,以数字信号的观点来看会收到许多在数字逻辑值0与1交互跳动的弹跳现象,而此一现象将会导致系统视输入端的信号为连续输入,因而导致状态误判,产生错误的讯息。

特别是系统上某些装置,在逻辑判断的设定上,只要侦测到转态的现象就使系统进入电压或讯息错误的处理,甚至可能因为一个不稳定的信号,而造成系统关机或当机。因此,许多装置的输出信号在输入下一级组件之前,会利用除弹跳(de-bounce)电路加以除弹跳,将输入信号透过除弹跳的延迟缓冲,转变为输出信号,待状态稳定后才将信号输入至下一级组件。

先前技术中的除弹跳电路通常会对输入信号进行取样,而取样的频率须高于输入信号的频率十倍以上。当输入信号转态(例如:从数字逻辑值0转为数字逻辑值1或从数字逻辑值1转为数字逻辑值0)时,只要输入信号其被取样到的逻辑值有一定数量连续的1或0(例如:连续取样到四个1或四个0),除弹跳电路即可认定输入信号已达稳定状态,而输出除弹跳后的信号。

以目前使用串行通用输入/输出(serialgeneralpurposeinput/output;sgpio)总线来进行数据传输的电路来说,当其进行数据传输时,是没有加任何编码的,这对于组件老化或组件制程上的误差所造成的总线上的噪声或干扰,通常只有能在接收端加上除弹跳电路来抵抗噪声。然而,并不是所有组件都可以设计成具有除弹跳电路。再者,由于先前技术中的除弹跳电路所需的取样频率须高于输入信号的频率十倍以上,这对某些电子设备来说,并无法提供频率足够高的信号来对输入信号进行取样。此外,即使加上除弹跳电路,仍可能因本身电路的老旧,而仍然无法确定传输数据的正确性。



技术实现要素:

本发明一实施例提供了一种串行通用输入/输出(serialgeneralpurposeinput/output;sgpio)系统,其包含发送端、sgpio缆线以及接收端。发送端包含编码器以及第一sgpio连接器。编码器用以对数据进行循环冗余校验(cyclicredundancycheck;crc)编码,以产生用以检验上述数据的正确性的循环冗余校验码。发送端藉由第一sgpio连接器及sgpio缆线将数据及循环冗余校验码传送至接收端。接收端包含第二sgpio连接器及验证单元。第二sgpio连接器藉由sgpio缆线耦接于第一sgpio连接器,用以从第一sgpio连接器接收数据及循环冗余校验码。验证单元耦接于二sgpio连接器,用以依据循环冗余校验码对第二sgpio连接器所接收到的数据进行验证。

附图说明

图1是本发明一实施例的串行通用输入/输出(serialgeneralpurposeinput/output;sgpio)系统的功能模块图。

图2为图1的串行通用输入/输出系统的编码器所产生的数据串的数据结构图。

图3为图1的串行通用输入/输出系统的编码器的第一种实施方式的示意图。

图4为图1的串行通用输入/输出系统的编码器的另一种实施方式的示意图。

图5是本发明一实施例的串行通用输入/输出系统的验证单元运作时的流程图。

符号说明:

10串行通用输入/输出系统

100发送端

120编码器

122与门

123或门

124循环冗余校验(crc)编码单元

130、240串行通用输入/输出(sgpio)连接器

150串行通用输入/输出(sgpio)缆线

200接收端

220验证单元

230缓存器

300资料串

310资料

312资料片段

320循环冗余校验(crc)码

322crc片段

ck编码频率

sload脚位

sc1、sc2操作频率信号

s510至s560步骤

具体实施方式

本发明主要是利用串行通用输入/输出(serialgeneralpurposeinput/output;sgpio)总线来进行数据传输,并藉由循环冗余校验(cyclicredundancycheck;crc)编码技术产生相关的循环冗余校验码(crccode),以使接收端可依据循环冗余校验码来确认所接收到的数据的正确性。

请参考图1及图2,图1是本发明一实施例的串行通用输入/输出(sgpio)系统10的功能模块图。图2为图1的sgpio系统10的编码器120所产生的数据串300的数据结构图。sgpio系统10包含发送端100、串行通用输入/输出(sgpio)缆线150以及接收端200。发送端100会透过sgpio缆线150将数据串300传送给接收端200。在本发明一实施例中,发送端100可以是一个复杂可程序逻辑装置(complexprogrammablelogicdevice;cpld),而接收端200可以是一个基板管理控制器(baseboardmanagementcontroller;bmc),但本发明并不以此为限。再者,如图2所示,数据串300包含数据310以及循环冗余校验(crc)码320。其中,数据310为原本发送端100所要传给接收端200的原始数据,而crc码320则用于检验数据310的正确性。此外,如图1所示,发送端100包含编码器120以及串行通用输入/输出(sgpio)连接器130。编码器120用以对数据310进行循环冗余校验(crc)编码,以产生crc码320。发送端100则是用以藉由sgpio连接器130及sgpio缆线150将包含了数据310及crc码320的数据串300传送至接收端200。接收端200则包含另一个串行通用输入/输出(sgpio)连接器240及验证单元220。sgpio连接器240藉由sgpio缆线150耦接于发送端100的sgpio连接器130,用以从sgpio连接器130接收数据310及crc码320。验证单元220耦接于sgpio连接器240,用以依据crc码320对sgpio连接器240所接收到的数据310进行验证。此外,接收端200还可另包含缓存器230,用以储存从sgpio连接器240所接收到的数据串300。

一般来说,发送端100的sgpio连接器130具有sgpio规格中所定义的频率脚位(sclock)、第一脚位(sload)、sdataout、sdatain这四个脚位。其中sclock、sload、sdataout这三个脚位是用以从发送端100发送对应的信号到接收端200的,而sdatain此一脚位是用以从接收端200接收信号的。但一般而言,不是所有的sgpio设备都支持sdatain脚位,因此sdatain的信号线是可选(optional)的。再者,脚位sclock的信号则是用以定义sgipo总线传输数据时所使用的频率。脚位sload的信号是用以定义传输数据时会使用到的帧(frame)的开始时间和结束时间。一般来说,sload脚位的信号可为一低致能(lowactive)信号或是一高致能(highactive)信号。当sload脚位的信号为低致能信号时,sgpio系统10的每一个帧则是由sload脚位的信号的相邻的两个低电位脉波来定义,在此状况下,sgpio系统10的每一帧的时间在时序上是介于sload信号的相邻的两个低电位脉波之间。相对的,当sload脚位的信号为高致能信号时,sgpio系统10的每一个帧则是由sload信号的相邻的两个高电位脉波来定义,在此状况下,sgpio系统10的每一帧的时间在时序上是介于sload信号的相邻的两个高电位脉波之间。另外,sdataout脚位则是用以将串行(serial)的数据串300从发送端100传送到接收端200。

请参考图3。图3为图1的sgpio系统10的编码器120的第一种实施方式的示意图。在此实施例中,发送端100的sgpio连接器130的sload脚位的信号为一低致能(lowactive)信号。其中,编码器120包含多个循环冗余校验(crc)编码单元124,而每一crc编码单元124用以对数据310于sgpio系统10的每一帧(frame)中的所分别对应的多个位进行编码,以产生crc码320中对应的位。详言之,在本实施例中,编码器120共包含八个crc编码单元124。每一个crc编码单元124为一个crc-3的编码单元,用以对sgpio系统10于每一帧(frame)中的数据310的五个位进行编码,以产生crc码320中对应的三个位。举例来说,第一个crc编码单元124会对数据310的前五个位[0:4]进行编码,以产生crc码320中的前三个位[0:2];最后一个crc编码单元124会对数据310的最后五个位[35:39]进行编码,以产生crc码320中的最后三个位[21:23]。其中,编码器120所包含的crc编码单元124的数目不限于是八个,而是可为其他数目。例如,编码器120可以只包含单一个crc编码单元124,用以对数据310进行crc编码,以产生crc码320。又例如,编码器120可以包含多个但总数不等于八的crc编码单元124。其中,编码器120所包含的crc编码单元124的数目可依据应用上的需要而调整,以符合实际需求。另外,每一个crc编码单元124除了可如上述为一个crc-3的编码单元之外,亦可为其他输出长度的crc编码单元,例如:每一个crc编码单元124可为一个crc-5的编码单元,用以输出长度为5位的crc码。

值得注意的,图2中的数据串300是代表sgpio系统10在其某一个帧中所传递的数据310及其对应的crc码320。其中,依据sgpio规格所制订的标准,sgpio系统10在每一个帧所传递的数据可为64个位,故发送端100在每一帧中所传递的数据串300的长度可为64个位。其中,数据串300中的数据310可被区分为多个资料片段312,而每一个数据片段312为传送到对应的crc编码单元124的多个对应位。例如,第一个数据片段312包含数据310的前五个位[0:4],而这前五个位[0:4]会被传送到编码器120的第一个crc编码单元124。此外,资料串300中的crc码320可被区分为多个crc片段322,而每一个crc片段322为某一个crc编码单元124所输出的多个位。例如,最后一个crc片段322包含crc码320的最后三个位[21:23],而这三个位[21:23]是由编码器120的最后一个crc编码单元124所产生。

此外,crc码320的总位数可依据sgpio系统10闲置的时槽(timeslot)的数目来决定,其中所谓闲置的时槽是sgpio系统10不用来传送数据310的时槽。详言之,假设sgpio系统10的每一帧具有八个时槽,每一个时槽可传送八个位,而数据310的数据长度为40个位。由于数据310的40个位可在五个时槽内完成传送(注:5时槽×8位/时槽=40位),在此情况下sgpio系统10即具有三个闲置的时槽(注:8时槽-5时槽=3时槽),而crc码320的总位数可为24位(注:3时槽×8位/时槽=24位)。

值得注意地,在图3的实施例中,编码器120的多个crc编码单元124是平行地对数据310中所分别对应的多个位进行crc编码,以产生crc码320,故可相对提高crc编码的效率。此外,由于sgpio连接器130的sload脚位的信号为低致能信号,故编码器120还可另包含一与门(andgate)122,用以对一编码频率ck及sgpio连接器130的sload脚位的信号进行及运算(andoperation),以产生用以控制每一的crc编码单元124的操作频率信号sc1。其中,每一的crc编码单元124会在操作频率信号sc1为低电位时,进行相关的crc编码。此外,编码频率ck的频率与sclock脚位信号的频率有着以下的关系:

其中,n为每一个crc编码单元124对数据310进行crc编码时的位长度,fck为编码频率ck的频率,而fsclock为sclock脚位信号的频率。举例来说,倘若每一个crc编码单元124对数据310的五个位进行编码,则n等于五,且fck须大于五倍的fsclock。又例如,倘若每一个crc编码单元124对数据310的七个位进行编码,则n等于七,且fck须大于七倍的fsclock。

相较于图3中的sgpio连接器130的sload脚位的信号为低致能信号,本发明另一实施例中的sload脚位的信号可为高致能信号。请参考图4。图4为图1的sgpio系统10的编码器120的另一种实施方式的示意图。在此实施例中,发送端100的sgpio连接器130的sload脚位的信号为一高致能(highactive)信号。其中,编码器120亦包含多个crc编码单元124,而每一crc编码单元124用以对数据310于sgpio系统10的每一帧(frame)中的所分别对应的多个位进行编码,以产生crc码320的对应位。由于sgpio连接器130的sload脚位的信号为高致能信号,故在本实施例中的编码器120还可另包含一或门(orgate)123,用以对一编码频率ck及sgpio连接器130的sload脚位的信号进行或运算(oroperation),以产生用以控制每一的crc编码单元124的操作频率信号sc2。其中,每一的crc编码单元124会在操作频率信号sc2为高电位时,进行相关的crc编码。其中,编码频率ck的频率fck与sclock脚位信号的频率fsclock也有着上述关系式(1)中的关系,在此即不再赘述。

请参考图5。图5是本发明一实施例的串行通用输入/输出系统10的验证单元220运作时的流程图。当图1中的验证单元220收到数据串300并验证其中的数据310的正确性时,会执行下述的步骤:

步骤s510:呼叫上层的应用程序编程接口(applicationprogramminginterface;api),而使验证单元220开始crc验证程序;

步骤s520:验证单元220从缓存器230中读取数据串300;

步骤s530:验证单元220从数据串300中将数据310及crc码320分开;

步骤s540:验证单元220依据crc码320,验证数据310的正确性;

步骤s550:验证单元220判断数据310是否通过步骤s540中的crc验证;若通过crc验证,则执行步骤s560;若未通过crc验证,则执行步骤s570;

步骤s560:验证单元220确认数据310是正确的,并将确认后的数据310返回给接收端200的其他组件,以对数据310进行后续的使用或处理;

步骤s570:验证单元220判断累计错误次数(即未通过crc验证的累计次数)是否大于默认值(例如:5次);倘若累计错误次数已超过默认值,则执行步骤s590;若累计错误次数尚未超过默认值,则执行步骤s580;

步骤s580:验证单元220将累计错误次数加1,并将流程返回至步骤s520;以及

步骤s590:验证单元220判断sgpio总线产生错误,并产生对应的错误码,以通知用户目前sgpio总线发生故障。

其中上述累计错误次数可在执行步骤s560时被归零。

相较于先前技术采用sgpio总线的系统并未有crc验证机制,本发明的sgpio系统由于其发送端具有可对数据执行crc编码的编码器,故可使接收端可依据编码器所产生的crc码对所接收到的数据进行验证,以确保数据的正确性。因此,本发明的sgpio系统的接收端可以不需要加入除弹跳(de-bounce)电路,即可让接收端得以发现资料是否有误,并可在资料有误时发出错误码以实时地通知使用者。

以上所述仅为本发明的较佳实施例,凡依本发明权利要求范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

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