通信设备、通信方法、程序和通信系统与流程

文档序号:16512377发布日期:2019-01-05 09:25阅读:148来源:国知局
通信设备、通信方法、程序和通信系统与流程

本公开涉及通信设备、通信方法、程序和通信系统,并且具体地涉及确保更可靠的通信的通信设备、通信方法、程序和通信系统。

<相关申请的交叉引用>

本申请要求2016年5月18日提交的日本优先权专利申请jp2016-099953的权益,其全部内容通过引用结合于此。



背景技术:

例如,内部集成电路(i2c)已被广泛用作总线接口(if),用于经由安装有多个装置的板内的总线在装置之间通信。

而且,近年来,期望实现i2c的速度的提高。改进的内部集成电路(i3c)的规范正在作为下一代标准制定。在i3c中,主设备和从设备可以与两条信号线双向通信。例如,执行从主设备到从设备的数据传输(写传输),以及从从设备到主设备的数据传输(读取传输)。

例如,ptl1公开了一种数字数据处理系统,其通过i2c将主处理器和子系统控制器互连。此外,ptl2公开了一种用于实现位于标准i2c协议之上的层间通信协议的方法。

引文列表

专利文献

ptl1:jp2000-99448a

ptl2:jp2002-175269a



技术实现要素:

技术问题

顺便提及,在上述i3c中,指定主设备和从设备通过例如奇偶校验和循环冗余校验(crc)来检测错误。但是,也会发送和接收不具有用于这种错误检测的措施的信号。因此,当在不具有用于错误检测的措施的信号中发生错误时,主设备和从设备可能会不可能执行正常通信。

考虑到这种情况,已经完成了本公开。期望确保更可靠的通信。

问题的解决方案

根据本公开第一方面的通信设备包括:发送和接收单元,被配置为向另一通信设备发送信号和从另一通信设备接收信号,并且发送和接收单元接收从另一通信设备读出的读取数据,并且通常驱动在读取数据之后发送/接收的前导码的第二位。

根据本公开的第一方面的通信方法或程序使计算机执行通信处理,包括使得发送和接收单元被配置为向另一通信设备发送信号和从另一通信设备接收信号以接收从另一通信设备读出的读取数据;并且通常驱动在读取数据之后发送/接收的前导码的第二位。

在本公开的第一方面中,被配置为向另一通信设备发送信号和从另一通信设备接收信号的发送和接收单元接收从另一通信设备读出的读取数据,并且通常驱动在读取数据之后发送/接收的前导码的第二位。

根据本公开的第二方面的通信系统包括:第一通信设备,具有对总线的控制的主动权;第二通信设备,被配置为在第一通信装置的控制下通信,第一通信设备包括被配置为向第二通信设备发送信号和从第二通信设备接收信号的发送和接收单元,并且发送和接收单元接收从第二通信设备读出的读取数据,并且通常驱动在读取数据之后发送/接收的前导码的第二位。

在本公开的第二方面中,由具有对总线的控制的主动权的第一通信设备和被配置为在第一通信设备的控制下通信的第二通信设备执行通信。另外,第一通信设备包括被配置为向第二通信设备发送信号和从第二通信设备接收信号的发送和接收单元。发送和接收单元接收从第二通信设备读出的读取数据,并且通常驱动在读取数据之后发送/接收的前导码的第二位。

发明的有益效果

根据本公开的第一和第二方面,确保更可靠的通信。

附图说明

图1是示出应用本技术的总线if的一个实施方式的配置示例的框图。

图2是示出前导码的第一定义示例的图。

图3是示出前导码的第一定义示例的修改的图。

图4是示出在读取传输时的时序图的图。

图5是示出在紧接在读取命令之后的前导码中的ack中发生一位错误的示例的图。

图6是示出在紧接在读取命令之后的前导码中的nack中发生一位错误的示例的图。

图7是示出当第一位为1时紧接在读取数据之后的前导码的第一位中发生一位错误的第一示例的图。

图8是示出当第一位为1时紧接在读取数据之后的前导码的第一位中发生一位错误的第二示例的图。

图9是示出当第一位为0时紧接在读取数据之后的前导码的第一位中发生一位错误的第一示例的图。

图10是示出当第一位为0时紧接在读取数据之后的前导码的第一位中发生一位错误的第二示例的图。

图11是描述ddr模式下的主设备的通信处理的流程图。

图12是示出前导码的第二定义示例的图。

图13是示出在读取传输时的时序图的图。

图14是示出在读取命令之后发送读取数据时在准备位和前导码中发生一位错误的示例的图。

图15是示出在读取数据之后发送读取数据时在准备位和前导码中发生一位错误的示例的图。

图16是示出在读取命令之后发送crc字时在准备位和前导码中发生一位错误的示例的图。

图17是示出应用本技术的计算机的一个实施方式的配置示例的框图。

具体实施方式

下面参考附图详细描述应用本技术的具体实施方式。

<总线if的配置示例>

图1是示出应用本技术的总线if的一个实施方式的配置示例的框图。

图1所示的总线if11被配置为经由数据信号线14-1和时钟信号线14-2连接主设备12和三个从设备13-1至13-3。

主设备12具有对总线if11的控制的主动权,并且可以经由数据信号线14-1和时钟信号线14-2与从设备13-1至13-3通信。

从设备13-1至13-3可以在主设备12的控制下经由数据信号线14-1和时钟信号线14-2与主设备12通信。顺便提及,从设备13-1至13-3是类似配置。当不需要区分它们时,它们在下文中简称为从设备13。这应该同样适用于形成从设备13的块。

数据信号线14-1和时钟信号线14-2用于在主设备12和从设备13之间发送信号。在总线if11中,例如,串行数据(串行数据:sda)经由数据信号线14-1逐位顺序发送,并且经由时钟信号线14-2发送预定频率的串行时钟(串行时钟:scl)。

此外,在总线if11中,根据i3c的规范指定通信速度不同的多个传输模式。主设备12可以切换这些传输模式。在总线if11中,例如,根据数据传输速率指定以正常传输速率传送数据的标准数据速率(sdr)模式,以及以比sdr模式更高的传输速率传送数据的高数据速率(hdr)模式。此外,在hdr模式中,在本说明书中定义了双倍数据速率(ddr)模式、三元符号纯总线(tsp)模式和三元符号旧式包含总线(tsl)模式三种模式。顺便提及,规定在通信开始时在总线if11中以sdr模式执行通信。

主设备12被配置为包括发送和接收单元21、错误检测单元22、确认信号检测单元23和冲突避免单元24。

发送和接收单元21经由数据信号线14-1和时钟信号线14-2向从设备13发送信号并且从从设备13接收信号。例如,发送和接收单元21与通过驱动时钟信号线14-2而发送的串行时钟的定时同步地驱动数据信号线14-1(将电位切换到h或l电平),并且相应地将信号发送至从设备13。此外,从设备13与时钟信号线14-2的串行时钟的定时同步地驱动数据信号线14-1;相应地,发送和接收单元21接收从从设备13发送的信号。顺便提及,主设备12侧通常驱动时钟信号线14-2。

错误检测单元22检测由发送和接收单元21接收的信号中发生的错误。错误检测单元22可以通过例如对由发送和接收单元21接收的信号执行奇偶校验、循环冗余校验(crc)等来检测错误,或者检查当发送权从从设备13传递到主设备12时发出的令牌。另外,错误检测单元22可以例如指示发送和接收单元21在检测到由发送和接收单元21接收的信号中发生错误时从头开始重新与从设备13通信。

例如,错误检测单元22对由发送和接收单元21接收的数据执行奇偶校验,将从从设备13发送的数据中包括的两位奇偶校验之一设置为偶校验,且将另一个设置为奇校验。因此,错误检测单元22可以检测错误的发生。因此,即使出现主设备12和从设备13都不驱动数据信号线14-1的状态,错误检测单元22也可以检测数据是否正确。

确认信号检测单元23检测从接收从发送和接收单元21发送的信号的从设备13发送的确认信号(ack)或否定确认信号(nack),以检查从设备13是否已成功接收到命令、数据等。例如,在总线if11中指定如果从设备13成功地接收到命令、数据等而没有在信号中发生错误,则从设备13发送ack到主设备12。在总线if11中指定如果在信号中发生错误并且从设备13未能接收到命令、数据等,则从设备13发送nack到主设备12。

因此,如果已检测到从从设备13发送的针对命令、数据等的ack,则确认信号检测单元23可以确认从设备13已成功接收到从主设备12发送的命令、数据等。另一方面,如果已检测到从从设备13发送的针对命令、数据等的nack,则确认信号检测单元23可以确认从设备13未能接收到从主设备12发送的命令、数据等。

例如,如下面参考图5所述,如果确认信号检测单元23已经检测到nack,则冲突避免单元24指示发送和接收单元21在忽略nack之后的预定位数之后发送指示在某个中点处的通信中断的中止信号。冲突避免单元24可以避免与例如从从设备13发送的读取数据和从主设备12发送的hdr退出命令的冲突发生。

此外,例如,如下面参考图7所述,当使用令牌和crc5检测到错误的发生时,冲突避免单元24推测在前导码中发生错误,并指示发送和接收单元21在发送预定位数的附加时钟之后发送中止信号。因此,冲突避免单元24可以避免与例如从从设备13发送的读取数据和从主设备12发送的hdr退出命令的冲突发生。

从设备13被配置为包括发送和接收单元31和错误检测单元32。

发送和接收单元31经由数据信号线14-1和时钟信号线14-2向主设备12发送信号和从主设备12接收信号。例如,主设备12与时钟信号线14-2的串行时钟的定时同步地驱动数据信号线14-1。相应地,发送和接收单元31接收从主设备12发送的信号。此外,发送和接收单元31与时钟信号线14-2的串行时钟的定时同步地驱动数据信号线14-1,并相应地将信号发送到主设备12。

错误检测单元32检测由发送和接收单元31接收的信号中发生的错误,如在主设备12的错误检测单元22中那样。此外,当在由发送和接收单元31所接收的信号中没有发生错误时,错误检测单元32使发送和接收单元31向主设备12发送表示成功接收由该信号发送的命令、数据等的ack。另一方面,当在由发送和接收单元31接收的信号中发生错误时,错误检测单元32使发送和接收单元31向主设备12发送表示未能接收由该信号发送的命令、数据等的nack。

此外,例如,如果由于发送和接收单元31接收的信号中出现错误而可能无法执行正常通信,则错误检测单元32忽略任何后续通信、停止响应主设备12、并且将从设备13置于待机状态。

如上所述配置总线if11。主设备12和从设备13可以经由数据信号线14-1和时钟信号线14-2发送和接收信号。另外,在总线if11中,冲突避免单元24允许主设备12避免冲突发生。

这里,在总线if11中指定例如在ddr模式中使用称为前导码的两位信号指定接下来发送的数据的类型,如图2所示。顺便提及,前导码没有用奇偶校验或crc进行错误检测的措施。因此,当在前导码中发生错误时,可能无法检测到错误。

此外,定义前导码使得主设备12通常在总线if11中读取数据之后驱动前导码的第二位。因此,在总线if11中可以避免第二位冲突并且确保通信更可靠。

<前导码的第一定义示例>

图2示出了总线if11中的前导码的第一定义示例。如下所述,前导码包括具有第一位(pre[1])和第二位[pre[0]]的两位信号。

紧接在hdr模式开始之后的前导码的第一位和第二位由主设备12驱动并由从设备13接收。

然后,当紧接在hdr模式开始之后的前导码的第一位是0时,则指定命令字用于在前导码之后的发送。顺便提及,保留第一位为1时的语义。此外,当紧接在hdr模式开始之后的前导码的第二位是1时,指定命令字用于在前导码之后的发送。此外,保留第二位为0时的语义。

紧接在读取命令之后的前导码的第一位由主设备12驱动并且由从设备13接收。此外,紧接在读取命令之后的前导码的第二位由从设备13驱动并由主设备12接收。

另外,当紧接在读取命令之后的前导码的第一位是1时,指定数据用于在前导码之后的发送。顺便提及,保留第一位为0时的语义。此外,当紧接在读取命令之后的前导码的第二位是0时,它指示表示从设备13已成功接收到读取命令的ack。当第二位为1时,它指示表示从设备13未能接收到读取命令的nack。

这里,对于紧接在读取命令之后的前导码的第二位,需要主设备12将数据信号线14-1保持在h电平(高保持器:弱上拉)。因此,如果既不由主设备12也不由从设备13驱动,则只有当前一位为1时,数据信号线14-1针对其保持在h电平的位才为1。

紧接在读取数据之后的前导码的第一位由从设备13驱动并由主设备12接收。此外,紧接在读取数据之后的前导码的第二位通常由主设备12驱动并由从设备13接收,并且还禁止从设备13使用它。

另外,指定当紧接在读取数据之后的前导码的第一位是0时,在前导码之后发送crc字,并且当第一位是1时,在前导码之后发送数据。此外,当紧接在读取数据之后的前导码的第二位是0时,它指示主设备12在某个中点处中断通信(主设备中止)。当第二位为1时,它指示主设备12在某个中点没有中断通信(主设备不中止)。这里,针对紧接在读取数据之后的前导码的第二位,主设备12将数据信号线14-1保持在h电平。然而,这并不总是必要的,并且是为了避免不确定的目的。

紧接在写入命令之后的前导码的第一位和第二位由主设备12驱动并由从设备13接收。

另外,当紧接在写入命令之后的前导码的第一位是1时,指定数据用于在写入命令之后的发送。顺便提及,保留第一位为0时的语义。此外,当紧接在写入命令之后的前导码的第二位是0时,指定数据用于在写入命令之后的发送。顺便提及,保留第一位为1时的语义。

紧接在写数据之后的前导码的第一位和第二位由主设备12驱动并由从设备13接收。

另外,指定当紧接在写数据之后的前导码的第一位是0时,在前导码之后发送crc字,并且当第一位是1时,在前导码之后发送数据。此外,当紧接在写数据之后的前导码的第二位是1时,指定crc字或数据用于发送。顺便提及,保留第二位为0时的语义。

以这种方式在总线if11中定义前导码。另外,例如,紧接在读取数据之后的前导码的第二位被定义为通常由主设备12驱动。因此,可以避免冲突的发生。

例如,假设指定当发送crc字时,从设备13驱动紧接在读取数据之后的前导码的第二位,否则主设备12驱动第二位。在这种情况下,假设在发送读取数据时在前导码中发生错误,当从设备13尝试发送crc字时,主设备12将其误识别为读取数据;因此,第二位冲突。换句话说,在这种情况下,如果例如主设备12误识别前导码的第一位,则驱动第二位的主体是不同的。因此,信号可能在总线if11中发生冲突。此外,在这种情况下,假设如果从设备13发送crc字,则主设备12不能输出中止信号。

相反,指定在总线if11中,主设备12通常驱动在读取数据之后发送的前导码的第二位。因此,例如,当输出中止信号时,主设备12不输出下一个时钟。因此,从设备13进入不能驱动的状态。在总线if11中不发生冲突。此外,如上所述,如果从设备13发送crc字,则还避免主设备12不能输出中止信号。即使从设备13发送crc字,主设备12也可以输出中止信号。

以这种方式,在总线if11中,主设备12接收从从设备13读出的读取数据,并且通常驱动在读取数据之后发送/接收的前导码的第二位。因此,可以避免第二位冲突并且确保更可靠的通信。

图3示出了总线if11中的前导码的第一定义示例的修改。

在图3所示的前导码中,在写数据之后发送的前导码的第二位与图2中的前导码不同。顺便提及,除此之外,前导码与图2中的前导码相同,并且省略了它们的详细描述。

换句话说,如图3所示,当在写数据之后发送的前导码的第二位是0时,指定数据用于在前导码之后发送。此外,当在写数据之后发送的前导码的第二位是1时,指定crc字用于在前导码之后的发送。换句话说,在该示例中,定义在写数据之后发送的前导码的第一位和第二位以反转它们的值。例如,定义当前导码的第一位和第二位分别为0和1时,发送crc字,并且当前导码的第一位和第二位分别为1和0时,发送写数据。

此外,作为另一示例,例如,当发送crc字时,可以将0发送到前导码的第一位和第二位,并且当发送数据时,可以将1发送到前导码的第一位和第二位。换句话说,主设备12连续两次发送相同的值而不反转前导码的第一位和第二位的值;因此,可以检测在前导码中发生的一位错误。然而,在这种情况下,更期望前导码的第一位和第二位的值如图3所示被反转,而不是难以将其与主设备12和从设备13都不驱动数据信号线14-1的状态区分开。

以这种方式,在总线if11中,定义在写数据之后发送的前导码的第二位。因此,从设备13可以容易地检测到例如在前导码中发生了一位错误。

<hdr模式下的通信描述>

图4示出了读取传输时的时序图。

顺便提及,在以下附图中,以灰色阴影部分表示由从设备13驱动。此外,以细斜线阴影部分表示由从设备13驱动,并且主设备12将数据信号线14-1保持在h水平。用粗斜线阴影部分代表没有驱动。

如图4所示,首先,在sdr模式下,主设备12发送广播命令(0x7e+r/w=0),该广播命令通知命令被同时发送到形成总线if11的所有从设备13。然后,主设备12接收从从设备13发送的ack以确认广播命令的成功接收,并发送主设备12进入hdr模式的公共命令代码(enthdrccc(0x20))。以这种方式,主设备12通知从设备13主设备12进入hdr模式并转换到hdr模式。

紧接在转换到hdr模式之后的前导码的第一位和第二位然后由主设备12驱动。在图4的示例中,指定在前导码之后发送命令字(ddr命令)(pre[1]:0,pre[0]:1)。然后,主设备12在前导码之后发送命令字(命令代码、从设备地址、保留、奇偶校验)。

此外,就紧接在发送命令字之后的前导码而言,第一位由主设备12驱动,并且第二位由从设备13驱动。在图4的示例中,第一位指定数据(ddr数据)在前导码(pre[1]:1)之后发送,并且第二位也指示从设备13已成功接收到命令[pre[0]:0]。然后,从设备13在前导码之后发送读取数据(数据位、奇偶校验)。

接下来,就紧接在发送读取数据之后的前导码而言,第一位由从设备13驱动,并且第二位由主设备12驱动。在图4的示例中,第一位指定在前导码(pre[1]:1)之后发送数据(ddr数据)。此外,第二位使主设备12发送中止信号(pre[1]:0)或非中止信号(pre[1]:1),而不管读取数据和crc中的哪一个是接下来要读取的数据。如果主设备12发送中止信号,则通信被中断。如果主设备12发送非中止信号,则继续通信。第二位通常由主设备12驱动,如上所述。

另外,如果继续通信,则从那时起,类似地并且重复地发送读取数据,并且从设备13发送由主设备12请求的所有数据。

然后紧接在最后的读取数据发送之后的前导码的第一位指定在前导码(pre[1]:0)之后的crc字(ddrcrc)的发送。顺便提及,紧接在crc字的发送之前的前导码的第二位被禁止由从设备13驱动。

另外,在从设备13在前导码之后发送crc字(令牌(0xc)、crc5)之后,主设备12发送hdr退出命令(hdr退出)以结束hdr模式下的通信。顺便提及,hdr退出命令的第一位(设置)由主设备12输出。此外,如图所示,在紧接在收到crc字之后的位之后,数据信号线14-1的驱动从从设备13切换到主设备12;因此,可以安全且快速地结束通信。

以这种方式,在总线if11中以hdr模式执行读取传输。此外,在总线if11中,主设备12通常驱动紧接在读取数据之后的前导码的第二位。因此,可以避免第二位冲突。因此,可以在总线if11中确保更可靠的通信。

<前导码错误的描述>

下面参考图5至图10给出在前导码中发生的错误和在前导码中发生错误时的处理的描述。

参考图5和图6,给出了在读取命令之后发送读取数据时前导码的第二位中发生位值反转的一位错误的示例的描述。如上所述,紧接在读取命令之后的前导码的第二位表示从从设备13发送到主设备12的ack或nack。

图5示出了在紧接在读取命令之后的前导码中从从设备13发送的ack中发生一位错误的示例。

如图5的左侧所示,在正常时,从设备13将前导码的第二位驱动为0,使得主设备12识别出已经发送了ack。在这种情况下,响应于ack的检测,主设备12执行接收在前导码之后从从设备13发送的读取数据的处理。

相反,如图5的右侧所示,在错误时,前导码的第二位被位反转为1。因此,主设备12导致误识别已经发送了nack。在这种情况下,主设备12不能检测在前导码中已发生的错误,但是可以通过对检测到nack的情况执行正常处理来结束通信。换句话说,在与从从设备13发送的读取数据的位数相对应的冲突防止时钟时段过去之后,主设备12将前导码的第二位驱动为0,并将中止信号发送到从设备13。

以这种方式,即使将ack误识别为nack,主设备12也可以成功地通知从设备13关于通信的中断。因此,避免了基于误识别的冲突的发生。然后,主设备12发送hdr退出命令以结束hdr模式下的通信。

图6示出了紧接在读取命令之后的前导码中从从设备13发送的nack中发生一位错误的示例。

如图6的左侧所示,在正常时,从设备13将前导码的第二位驱动为1,使得主设备12识别出已经发送了nack。在这种情况下,响应于检测到nack,主设备12在经过与读取数据的位数对应的冲突防止时钟时段之后将前导码的第二位驱动为0,并且发送中止信号到从设备13。然后,主设备12发送hdr退出命令以结束hdr模式下的通信。

相反,如图6的右侧所示,在错误时,前导码的第二位被位反转为0。因此,主设备12导致误识别出已经发送了ack。在这种情况下,主设备12执行接收从从设备13发送的读取数据的处理。然而,从设备13未能接收到读取命令,并且因此不发送读取数据。因此,在此时段期间,主设备12和从设备13都不驱动数据信号线14-1。

此时,主设备12对在主设备12误识别出发送了读取数据期间的时段中接收的信号执行奇偶校验等,并且因此可以检测到错误,换句话说,可以检测到读数据未成功发送。例如,包括在读取数据中的奇偶校验被定义为当在主设备12误识别出发送了读取数据期间的时段中未驱动数据信号线14-1时,可以检测到错误的发生。

根据错误的检测,主设备12在主设备12误识别出发送了读取数据期间的时段之后立即将前导码的第二位驱动为0,并将中止信号发送到从设备13。然后,主设备12发送hdr退出命令以结束hdr模式下的通信。

接下来,参考图7和图8,给出当在读取数据之后发送读取数据时的前导码的第一位中发生位值反转的一位错误的示例的描述。如上所述,当在前导码之后发送crc字时,紧接在读取数据之后的前导码的第一位被驱动为1,并且当在前导码之后发送读取数据时被驱动为0。

图7示出了第一示例,其中当紧接在读取数据之后的前导码的第一位是1时,在第一位中发生一位错误。

如图7的左侧所示,在正常时,从设备13将前导码的第一位驱动为1,使得主设备12识别出在前导码之后发送了读取数据。在这种情况下,主设备12执行接收读取数据的处理。

相反,如图7的右侧所示,在错误时,前导码的第一位被位反转为0。因此,主设备12导致误识别出在前导码之后发送了crc字。在这种情况下,主设备12可以基于包括在crc字中的令牌和crc5来检测错误的发生,并且推测错误发生在前导码中。

因此,在这种情况下,主设备12在发送附加时钟(9位)之后将前导码的第二位驱动为0,附加时钟的位数对应于读取数据的位数(18位)与crc字的位数(9位)之差。主设备12将中止信号发送到从设备13。然后主设备12发送hdr退出命令以结束hdr模式下的通信。

图8示出了第二示例,其中当紧接在读取数据之后的前导码的第一位是1时,在第一位中发生一位错误。

如图8的左侧所示,存在一种情况,其中从设备13尝试在读取数据之后发送读取数据,而主设备12发送中止信号以在某个中点处中断通信。

此时,如图7的右侧所示,当紧接在读取数据之后的前导码的第一位中发生一位错误时,主设备12误识别出在前导码之后发送了读取数据。此时,主设备12在前导码的第二位处发送中止信号。因此,即使存在这样的误识别,hdr模式下的通信也在没有发生问题的情况下结束。

接下来,参考图9和图10,给出了当在读取数据之后发送crc字时的前导码的第一位中发生位值反转的一位错误时的示例的描述。如上所述,当在前导码之后发送crc字时紧接在读取数据之后的前导码的第一位被驱动为1,并且当在前导码之后发送读取数据时被驱动为0。

图9示出了第一示例,其中当紧接在读取数据之后的前导码的第一位为0时,在第一位中发生一位错误。

如图9的左侧所示,在正常时,从设备13将前导码的第一位驱动为0,使得主设备12识别出在前导码之后发送crc字。在这种情况下,主设备12执行接收crc字的处理,然后发送hdr退出命令。

相反,如图9的右侧所示,在错误时,前导码的第一位被位反转为1。因此,主设备12导致误识别出在前导码之后发送了读取数据。在这种情况下,在主设备12误识别发送读取数据期间的时段内接收到令牌和crc之后的时段,不驱动数据信号线14-1。因此,主设备12对在主设备12误识别出发送了读取数据期间的时段中接收的信号执行奇偶校验检查,并且因此可以检测到错误,换句话说,可以检测到读取数据未被成功发送。

根据错误的检测,主设备12在主设备12误识别出发送了读取数据期间的时段之后立即将前导码的第二位驱动为0,并将中止信号发送到从设备13。然后,主设备12发送hdr退出命令以结束hdr模式下的通信。

图10示出了第二示例,其中当紧接在读取数据之后的前导码的第一位为0时,在第一位中发生一位错误。

如图10的左侧所示,存在一种情况,其中从设备13尝试在读取数据之后发送crc字,而主设备12发送中止信号以在某个中点处中断通信。

此时,如图10的右侧所示,当紧接在读取数据之后的前导码的第一位中发生一位错误时,主机12误识别出在前导码之后发送了读取数据。此时,主设备12在前导码的第二位处发送中止信号。因此,即使存在这样的误识别,hdr模式下的通信也在不发生问题的情况下结束。

如上所述,即使前导码在总线if11中没有用于错误检测的措施,也可以使主设备12避免总线if11中的死锁并且确保更可靠的通信。

<避免冲突发生的通信方法>

图11是描述主设备12在ddr模式下从从设备13读取数据的通信处理的流程图,该模式是hdr模式之一(ddr读取)。

在步骤s11中,主设备12执行将通信从sdr模式切换到hdr模式的处理。具体地,在sdr模式下,在主设备12中,发送和接收单元21驱动数据信号线14-1和时钟信号线14-2,并发送广播命令(0x7e+r/w=0),该广播命令通知命令被发送到形成总线if11的所有从设备13。当主设备12中的确认信号检测单元23随后接收到从从设备13发送的ack以确认成功接收到广播命令时,发送和接收单元21发送公共命令代码(enthdrccc(0x20))以进入hdr模式。

在步骤s12中,主设备12的发送和接收单元21驱动数据信号线14-1和时钟信号线14-2以发送读取命令。

在步骤s13中,确认信号检测单元23在发送读取命令之后检测前导码的第二位的值,并确定从设备13已发送了ack和nack中的哪一个。换句话说,如果检测到在发送读取命令之后前导码的第二位是0,则确认信号检测单元23确定从设备13已经发送了ack。另一方面,如果检测到在发送读取命令之后前导码的第二位是1,则确认信号检测单元23确定从设备13已经发送了nack。

如果确认信号检测单元23在步骤s13中确定从设备13发送了ack,则处理进入步骤s14。发送和接收单元21接收在前导码之后发送的读取数据。此外,发送和接收单元21接收在读取数据之后发送的前导码的第一位。

在步骤s15中,主设备12确定是否继续通信。例如,如果判断出下一个读取数据或crc字是不必要的,则主设备12可以确定不继续通信。

如果主设备12在步骤s15中确定不继续通信,则处理进入步骤s16。发送和接收单元21发送中止信号(pre[1]:0),该中止信号指示在前导码的第二位处的某个中点处的通信中断。然后处理进入步骤s21。发送和接收单元21在中止信号之后发送hdr退出命令。另一方面,如果主设备12在步骤s15中确定继续通信,则发送和接收单元21发送非中止信号(pre[1]:1),该信号指示在前导码的第二位处的某个中点处不中断通信。然后处理进入步骤s17。

在步骤s17中,发送和接收单元21基于在步骤s14中接收的前导码的第一位,确定指定用于发送的读取数据和crc字中的哪一个。

如果发送和接收单元21在步骤s17中确定前导码指定读取数据用于发送,则处理返回到步骤s14。从这一点开始重复类似的处理。另一方面,如果发送和接收单元21在步骤s17中确定前导码指定crc字用于发送,则处理进入步骤s18。

在步骤s18中,发送和接收单元21接收在步骤s13中接收的前导码之后发送的信号。错误检测单元22确定信号中是否发生错误。

如果错误检测单元22在步骤s18中确定在指定用于发送的crc字的前导码之后发送的信号中发生错误,则处理进入步骤s19。换句话说,在这种情况下,如果错误检测单元22已经检测到令牌错误或crc错误,则冲突避免单元24推测在前导码中发生了错误。

在步骤s19中,错误检测单元22发送如参考图7所述的附加时钟,并且然后指示发送和接收单元21发送指示在某个中点处中断通信的中止信号。在该指示下,发送和接收单元21发送附加时钟,并然后将中止信号发送到从设备13。处理随后进入步骤s21。发送和接收单元21在中止信号之后发送hdr退出命令。

另一方面,如果错误检测单元22在步骤s18中未确定在指定用于发送的crc字的前导码之后发送的信号中发生错误,则在步骤s21中发送和接收单元21发送hdr退出命令。

另一方面,如果确认信号检测单元23在步骤s13中确定从设备13发送了nack,则处理进入步骤s20。在步骤s20中,冲突避免单元24指示发送和接收单元21发送中止信号,该中止信号指示在与读取数据的位数对应的冲突防止时钟时段过去之后的某个中点处的通信中断。在该指示下,发送和接收单元21将中止信号发送到从设备13,如上参考图6所述。处理随后进入步骤s21。发送和接收单元21在中止信号之后发送hdr退出命令。

因此,主设备12在ddr模式(ddr读取)下从从设备13读出数据的通信处理结束。

如上所述,在总线if11中,主设备12通常驱动紧接在读取数据之后的前导码的第二位。因此,可以避免第二位冲突。此外,如果主设备12已经确定已经接收到nack,则即使nack是ack的一位错误,也可以在总线if11中避免发生冲突。此外,即使在指定crc字用于由总线if11中的从设备13发送的前导码中发生了一位错误,主设备12也可以基于crc字利用错误检测推测前导码中的错误的发生。因此,可以避免发生冲突。

因此,即使前导码不具有用于错误检测的措施,也可以在总线if11中避免由于前导码中出现错误而导致的冲突并且确保更可靠的通信。

<前导码的第二个定义示例>

图12示出了总线if11中的前导码的第二定义示例。

此外,在总线if11中,准备位(ppr)被定义为是在前导码之前发送的一位,以向前导码添加冗余。图12还示出了准备位的定义示例。

准备位被定义为不是在紧接在hdr模式开始之后的前导码之前发送的一位。此外,紧接在hdr模式开始之后的前导码如图2中所定义。

紧接在读取命令之后的前导码之前的一位准备位由主设备12驱动,并且由从设备13接收。另外,当准备位为1时,它指定用于在前导码之后发送的数据。顺便提及,保留准备位为0时的语义。

此外,紧接在读取命令之后的前导码的第一位由从设备13驱动,并由主设备12接收。此外,当第一位为0时,它表示指示从设备13已成功接收到读取命令的ack。当第一位是1时,它表示指示从设备13未能接收到读取命令的nack。这里,就紧接在读取命令之后的前导码的第一位而言,主设备12必须将数据信号线14-1保持在h电平。换句话说,紧接在读取命令之后的前导码的第一位被定义为与第二位相同。

紧接在读取数据之后的前导码之前的一位准备位由从设备13驱动,并由主设备12接收。另外,当准备位为0时,它指定用于在读取数据之后发送的crc字。当准备位为1时,它指定用于在读取数据之后发送的数据。顺便提及,紧接在读取数据之后的前导码如图2中所定义。

紧接在写入命令之后的前导码之前的一位准备位由主设备12驱动,并且由从设备13接收。另外,当准备位为1时,它指定用于在写入命令之后发送的数据。准备位为0时的语义被保留。顺便提及,紧接在写入命令之后的前导码如图2中所定义。

紧接在写入数据之后的前导码之前的一位准备位由主设备12驱动,并且由从设备13接收。另外,当准备位为0时,它指定用于在写入数据之后的发送的crc字。当准备位为1时,它指定用于在写入数据之后发送的数据。顺便提及,紧接在写入数据之后的前导码如图2中所定义。

使用如图12所示的这种准备位使得能够检测在前导码中发生的错误。

例如,如果在前导码中发生错误并且主设备12和从设备13都不驱动总线if11,则需要检测奇偶校验错误。但是,奇偶校验可能是偶然正确的。因此,为了消除这种偶然一致的可能性,并且如果在前导码中发生错误,确保主设备12执行主设备中止,则奇偶校验从两位改变为一位,并且该一位用于准备位。因此,可以检测在前导码中发生的错误。具体地,从命令和数据的奇偶校验中删除一位。这种准备位如图12所示定义。

例如,如上所述,在读取数据之后的准备位和前导码的第一位的一位用于明确指定在前导码之后发送读取数据和crc字中的哪一个。因此,可以检测到前导码错误。

此外,主设备12通常在读取数据之后驱动前导码的第二位,使得主设备12在主设备中止时不输出下一个时钟。因此,从设备13进入不允许驱动的状态。因此,可以避免冲突的发生。

此外,对于读取命令之后的前导码的第一位和第二位,发送相同的位两次。因此,可以检测在ack或nack中发生的错误。因此,还可以避免出现主设备12和从设备13都不驱动的部分;因此,主设备12可以执行主设备中止,同时避免奇偶校验错误的偶然一致。在这种情况下的准备位被用于拉到1,使得主设备保持在h电平。

<hdr模式下的通信描述>

图13示出了读取传输时的时序图。这里,在图13中,给出了与图4所示的时序图不同的点的描述。

例如,命令字的最后两位(ddr命令)在图4的时序图中是奇偶校验,而两位的第一位是奇偶校验,且第二位是图13的时序图中的准备位。类似地,读数据的最后两位(ddr数据)在图4的时序图中是奇偶校验,而两位的第一位是奇偶校验,且第二位是图13的时序图中的准备位。

以这种方式,例如,如果在读取命令之后发送读取数据,则对于读取命令之后的前导码,发送相同的值两次。此外,如果在读取数据之后发送读取数据,则对于读取数据结束时的准备位和读取数据之后的前导码的第一位,发送相同的值两次。此外,如果在读取数据之后发送crc字,则对于读取数据结束时的准备位和读取数据之后的前导码的第一位,发送相同的值两次。

以这种方式,使用准备位使得相同的位能够在总线if11中发送两次。可以鼓励冗余以使得能够检测在前导码中发生的错误。

<准备位和前导码中的错误的描述>

参考图14至图16描述在准备位和前导码中发生的错误。

图14示出了当在读取命令之后发送读取数据时在准备位和前导码中发生一位错误的示例。如上所述,紧接在读取命令之后的前导码的第二位表示从从设备13发送到主设备12的ack或nack。

如图14的左侧所示,当从设备13发送ack时,准备位被驱动为1,并且前导码的第一位和第二位被驱动为0(ppr:1,pre[1]:0,pre[0]:0)。

此外,如图14的中心所示,当从设备13发送nack时,准备位被驱动为1,并且前导码的第一位和第二位被驱动为1(ppr:1,pre[1]:1,pre[0]:1)。顺便提及,图14示出了在主设备12检测到nack之后,插入用于防止等于一位的冲突的时钟,并然后发送hdr退出命令(hdr退出)。此外,主设备12可以在检测到nack之后立即发送hdr退出命令而不插入用于防止冲突的这样的时钟。

以这种方式,准备位和前导码的三位组合只能采用(ppr:1,pre[1]:0,pre[0]:0)或(ppr:1,pre[1]:1,pre[0]:1)。因此,当如图14的右侧所示发生错误时,主设备12可以确定地检测到一位错误的发生。另外,在检测到错误时,为了避免冲突的发生,主设备12发送附加时钟,暂时转换到读取数据(忽略所有接收的数据),然后执行主设备中止处理。

图15示出了当在读取数据之后发送读取数据时在准备位和前导码中发生一位错误的示例。

如图15的左侧所示,当在读取数据之后发送读取数据时,准备位和前导码的第一位被驱动为1(ppr:1,pre[1]:1)。顺便提及,主设备12将前导码的第二位驱动为1或0。然而,如果主设备12不执行主设备中止,则不驱动第二位,并且从设备13不参考第二位的值。

如图15的中心所示,主设备12在主设备中止定时将前导码的第二位驱动为0。此时,从设备13不驱动第二位。因此,主设备12可以安全地中断处理而不会发生冲突。

此外,准备位和前导码的第一位的两位组合只能采用(ppr:1,pre[1]:1)或(ppr:0,pre[1]:0)。因此,当如图15的右侧所示发生错误时,主设备12可以确定地检测到一位错误的发生。另外,主设备12在检测到错误时执行主中止处理。

图16示出了当在读取数据之后发送crc字时在准备位和前导码中发生一位错误的示例。

如图16的左侧所示,当在读取数据之后发送crc字时,准备位和前导码的第一位被驱动为0(ppr:0,pre[1]:0)。顺便提及,主设备12将前导码的第二位驱动为1或0。然而,当主设备12不执行主设备中止时,不驱动第二位,并且从设备13不参考第二位的值。

如图16的中心所示,当执行主设备中止时,主设备12将前导码的第二位驱动为0。此时,从设备13不驱动第二位。因此,主设备12可以安全地中断处理而不会发生冲突。

此外,准备位和前导码的第一位的两位组合只能采用(ppr:1,pre[1]:1)或(ppr:0,pre[1]:0)。因此,当如图16的右侧所示发生错误时,主设备12可以确定地检测到一位错误的发生。另外,主设备12在检测到错误时执行主设备中止处理。

如图14至图16所示,可以避免冲突的发生并且在总线if11中没有死锁的情况下确保更可靠的通信。

顺便提及,本技术不限于根据i3c的规范的总线if11,并且可以应用于根据另一规范的总线if11。此外,在图1所示的总线if11中,示出了从设备13-1至13-3连接的配置示例。然而,从设备13的数量可以是例如一个或两个,或者可以是三个或更多个。

顺便提及,参考上述流程图描述的处理不一定需要按照流程图描述的顺序按时间顺序执行,并且还包括并行或单独执行的处理(例如,并行处理或用对象处理)。此外,程序可以由一个cpu处理,或者可以由多个cpu以分布式方式处理。

此外,在本说明书中,系统指示包括多个设备的所有设备。

此外,上述一系列处理也可以由硬件或软件执行。如果通过软件执行一系列处理,则从程序记录介质安装配置软件的程序,其中程序被记录到集成到专用硬件中的计算机中、或者例如可以通过安装各种程序执行各种功能的通用个人计算机中。

<硬件配置示例>

图17是示出利用程序执行上述一系列处理的计算机的硬件的配置示例的框图。

在计算机中,中央处理单元(cpu)101、只读存储器(rom)102、随机存取存储器(ram)103和电子可擦除可编程只读存储器(eeprom)104通过总线105互连。总线105进一步连接到输入/输出接口106。输入/输出接口106连接到外部(例如,图1中的数据信号线14-1和时钟信号线14-2)。

在如上所述配置的计算机中,cpu101经由总线105将存储在例如rom102和eeprom104中的程序加载到ram103中以执行它们。因此,执行上述一系列处理。此外,由计算机(cpu101)执行的程序被预先写入rom102中。此外,可以通过输入/输出接口106从外部在eeprom104中安装和更新由计算机(cpu101)执行的程序。

顺便提及,本技术还可以采用以下配置:

(1)

一种通信设备,包括发送和接收单元,被配置为向另一通信装置发送信号和从另一通信装置接收信号,

其中发送和接收单元

接收从其他通信设备读出的读取数据,并且

通常驱动在读取数据之后发送/接收的前导码的第二位。

(2)

根据(1)所述的通信设备,其中,基于前导码的第二位,发送和接收单元向另一通信设备通知在某个中点处通信是否被中断,而不管接下来要读出读取数据和循环冗余校验(crc)数据中的哪一个。

(3)

根据(1)或(2)所述的通信设备,其中,发送和接收单元

发送写入数据以写入另一通信设备,并且

驱动前导码的第一位和第二位,以便以反转第一位和第二位的值的方式在写入数据之后被发送到另一通信设备。

(4)

根据(1)或(2)所述的通信设备,其中,发送和接收单元

发送写入数据以写入另一通信设备,并且

驱动前导码的第一位和第二位以便以将相同的值两次发送到第一位和第二位的方式在写入数据之后被发送到另一通信设备。

(5)

根据(1)至(4)中任一项所述的通信设备,其中,发送和接收单元使用前导码指定用于在前导码之后发送的循环冗余校验(crc)或数据。

(6)

根据(1)至(5)中任一项所述的通信设备,其中,发送和接收单元发送一位准备位以向前导码添加冗余。

(7)

根据(6)所述的通信设备,其中,发送和接收单元使用准备位的一位和前导码的两位来发送两次相同的信号。

(8)

根据(1)至(7)中任一项所述的通信设备,还包括:

错误检测单元,被配置为比较在由发送和接收单元接收的前导码之后接收的信号的位串,该前导码指定用于下一次发送的数据的类型,并且要发送的位串的类型由用于发送的前导码指定以检测错误的发生;以及

冲突避免单元,被配置为在错误检测单元检测到错误发生时,指示发送和接收单元根据前导码之后的预定位数发送时钟,然后发送指示某个中点的通信中断的中止信号。

(9)

根据(1)至(8)中任一项所述的通信设备,还包括:

确认信号检测单元,被配置为检测从已经接收到从发送和接收单元发送的信号的另一通信设备发送的确认信号或否定确认信号;和

冲突避免单元,被配置为在确认信号检测单元检测到否定确认信号时,指示发送和接收单元忽略否定确认信号之后的预定位数,然后发送指示在某个中点通信中断的中止信号。

(10)

根据(8)所述的通信设备,其中,错误检测单元将包括在数据中的两位奇偶校验之一设置为偶校验,并且将另一个设置为奇校验,对由发送和接收单元接收的数据执行奇偶校验检查,并因此检测错误的发生。

(11)

根据(1)至(10)中任一项所述的通信设备,其中,发送和接收单元在接收到由驱动数据信号线的另一通信设备发送的循环冗余校验(crc)字之后立即基于位来驱动数据信号线。

(12)

根据(1)至(11)中任一项所述的通信设备,其中,发送和接收单元能够在数据以正常传输速率进行通信的标准数据速率(sdr)模式下和在数据以高于sdr模式的传输速率进行通信的高数据速率(hdr)模式下发送和接收信号。

(13)

根据(1)至(12)中任一项所述的通信设备,其中,发送和接收单元经由逐位顺序地发送串行数据的数据信号线和以预定的频率发送串行时钟的时钟信号线的两条信号线进行通信。

(14)

根据(1)至(13)中任一项所述的通信设备,其中,发送和接收单元根据改进的内部集成电路(i3c)的规范进行通信。

(15)

一种通信方法,包括使发送和接收单元被配置为向另一通信设备发送信号和从另一通信设备接收信号以:

接收从其他通信设备读出的读取数据;并且

通常驱动在读取数据之后发送/接收的前导码的第二位。

(16)

一种程序,使计算机执行通信处理,包括使发送和接收单元被配置为向另一通信设备发送信号和从另一通信设备接收信号以:

接收从其他通信设备读出的读取数据;并且

通常驱动在读取数据之后发送/接收的前导码的第二位。

(17)

一种通信系统,包括:

第一通信设备,具有对总线的控制的主动权;以及

第二通信设备,被配置为在第一通信设备的控制下进行通信,

其中,第一通信设备包括发送和接收单元,被配置为向第二通信设备发送信号和从第二通信设备接收信号,以及

发送和接收单元

接收从第二通信设备读出的读取数据,并且

通常驱动在读取数据之后发送/接收的前导码的第二位。

顺便提及,实施方式不限于上述实施方式。可以在不脱离本公开的主旨的范围内进行各种修改。

参考标记列表

11总线if

12主设备

13从设备

14-1数据信号线

14-2时钟信号线

21发送和接收单元

22错误检测单元

23确认信号检测单元

24冲突避免单元

31发送和接收单元

32错误检测单元。

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