(57)【要約】【課題】より確実に通信を行う。【解決手段】マスタは、スレーブと信号の送受信を行う送受信部と、送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部とを備える。そして、エラー検出部は、送受信部が受信したデータに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う。本技術は、例えば、I3Cの規格に準拠して通信を行うバスＩＦに適用できる。【選択図】図１
2017208710.tif 000002
【特許請求の範囲】
【請求項１】
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部と
を備え、
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
を備える通信装置。
【請求項２】
前記エラー検出部は、前記送受信部が受信したデータのうちの、奇数番目のビットから求められるパリティを偶数パリティとし、偶数番目のビットから求められるパリティを奇数バリティとする
請求項１に記載の通信装置。
【請求項３】
前記エラー検出部は、前記送受信部が受信したデータのうちの、奇数番目のビットから求められるパリティを奇数パリティとし、偶数番目のビットから求められるパリティを偶数バリティとする
請求項１に記載の通信装置。
【請求項４】
前記送受信部は、前記他の通信装置に送信するデータに付加する２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとする
請求項１に記載の通信装置。
【請求項５】
前記通信装置は、バスにおける制御の主導権を有する通信装置であり、前記他の通信装置は、前記通信装置による制御に従って通信を行う
請求項１に記載の通信装置。
【請求項６】
前記通信装置は、バスにおける制御の主導権を有する他の通信装置による制御に従って通信を行う
請求項１に記載の通信装置。
【請求項７】
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
をさらに備える請求項１に記載の通信装置。
【請求項８】
前記送受信部から送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
をさらに備える請求項１に記載の通信装置。
【請求項９】
前記送受信部は、前記他の通信装置から読み出されるリードデータを受信し、前記リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動を常に行う
請求項１に記載の通信装置。
【請求項１０】
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
請求項１に記載の通信装置。
【請求項１１】
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
請求項１に記載の通信装置。
【請求項１２】
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
請求項１に記載の通信装置。
【請求項１３】
他の通信装置と信号の送受信を行い、
受信したデータに対するパリティチェックを行うことでエラーの発生を検出し、
前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
ステップを含む通信方法。
【請求項１４】
他の通信装置と信号の送受信を行い、
受信したデータに対するパリティチェックを行うことでエラーの発生を検出し、
前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
ステップを含む通信処理をコンピュータに実行させるプログラム。
【請求項１５】
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置および前記第２の通信装置それぞれが、
信号の送受信を行う送受信部と、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部と
を有し、
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、複数のデバイスが実装されたボード内でバスを介したデバイス間の通信に用いられるバスＩＦ（Interface）として、例えば、I2C（Inter-Integrated Circuit）が多く利用されている。
【０００３】
また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C（Improved Inter Integrated Circuit）の規定が進行している。I3Cでは、マスタおよびスレーブは、２本の信号線を用いて双方向に通信を行うことができ、例えば、マスタからスレーブへのデータ転送（ライト転送）と、スレーブからマスタへのデータ転送（リード転送）とが行われる。
【０００４】
例えば、特許文献１には、ホスト・プロセッサとサブシステム・コントローラとを、I2Cにより相互接続するディジタル・データ処理システムが開示されている。また、特許文献２には、標準I2Cプロトコルの上部に層状に配置された通信プロトコルを実現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−９９４４８号公報
【特許文献２】特開２００２−１７５２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述したようなI3Cでは、例えば、マスタおよびスレーブにおいて、パリティやCRC（Cyclic Redundancy Check）などによるエラー検出が行われることが規定されているが、そのようなエラー検出が用意されていない信号の送受信も行われる。そのため、エラー検出が用意されていない信号にエラーが発生したときに、マスタおよびスレーブのどちらもデータ信号線に対する駆動を行わない状態となることがあった。そのため、例えば、受信したデータが正しいものであるかを検出することが困難になり、正常な通信を行うことができなくなることが懸念される。
【０００７】
本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の第１の側面の通信装置は、他の通信装置と信号の送受信を行う送受信部と、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部とを備え、前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う。
【０００９】
本開示の第１の側面の通信方法またはプログラムは、他の通信装置と信号の送受信を行い、受信したデータに対するパリティチェックを行うことでエラーの発生を検出し、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う。
【００１０】
本開示の第１の側面においては、他の通信装置と信号の送受信が行われ、受信したデータに対するパリティチェックを行うことでエラーの発生が検出される。そして、データに含まれている２ビットのパリティのうち、一方が偶数パリティとされ、他方が奇数パリティとされてエラー検出が行われる。
【００１１】
本開示の第２の側面の通信システムは、バスにおける制御の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う第２の通信装置とを備え、前記第１の通信装置および前記第２の通信装置それぞれが、信号の送受信を行う送受信部と、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部とを有し、前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う。
【００１２】
本開示の第２の側面においては、信号の送受信が行われ、受信したデータに対するパリティチェックを行うことでエラーの発生が検出される。そして、データに含まれている２ビットのパリティのうち、一方が偶数パリティとされ、他方が奇数パリティとされてエラー検出が行われる。
【発明の効果】
【００１３】
本開示の第１および第２の側面によれば、より確実に通信を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【図２】プリアンブルに発生するエラーについて説明する図である。
【図３】パリティによるエラー検出について説明する図である。
【図４】パリティによるエラー検出について説明する図である。
【図５】パリティエラー検出器の第１の構成例を示す図である。
【図６】マスタのDDRモードでの通信処理を説明するフローチャートである。
【図７】パリティによるエラー検出について説明する図である。
【図８】パリティエラー検出器の第２の構成例を示す図である。
【図９】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１６】
＜バスＩＦの構成例＞
【００１７】
図１は、本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【００１８】
図１に示されているバスＩＦ１１は、マスタ１２と３台のスレーブ１３−１乃至１３−３とが、データ信号線１４−１およびクロック信号線１４−２を介して接続されて構成される。
【００１９】
マスタ１２は、バスＩＦ１１における制御の主導権を有しており、データ信号線１４−１およびクロック信号線１４−２を介して、スレーブ１３−１乃至１３−３と通信を行うことができる。
【００２０】
スレーブ１３−１乃至１３−３は、マスタ１２による制御に従って、データ信号線１４−１およびクロック信号線１４−２を介して、マスタ１２と通信を行うことができる。なお、スレーブ１３−１乃至１３−３は、それぞれ同様に構成されており、以下、それらを区別する必要がない場合、単にスレーブ１３と称し、スレーブ１３を構成する各ブロックについても同様とする。
【００２１】
データ信号線１４−１およびクロック信号線１４−２は、マスタ１２およびスレーブ１３の間で信号を伝送するのに用いられる。例えば、バスＩＦ１１では、データ信号線１４−１を介して、１ビットずつ逐次的にシリアルデータ（SDA：Serial Data）が伝送され、クロック信号線１４−２を介して、所定の周波数のシリアルクロック（SCL：Serial Clock）が伝送される。
【００２２】
また、バスＩＦ１１では、I3Cの規格に準じて、通信速度が異なる複数の伝送方式が規定されており、マスタ１２は、それらの伝送方式を切り替えることができる。例えば、バスＩＦ１１では、データの転送レートに応じて、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードが規定されている。また、HDRモードでは、DDR（Double Data Rate）モード、TSP(Ternary Symbol Pure-Bus)モード、および、TSL(Ternary Symbol Legacy-inclusive-Bus)モードの３つのモードが規格で定義されている。なお、バスＩＦ１１では、通信を開始するときにはSDRモードで通信を行うことが規定されている。
【００２３】
マスタ１２は、送受信部２１、エラー検出部２２、確認信号検出部２３、およびコンフリクト回避部２４を備えて構成される。
【００２４】
送受信部２１は、データ信号線１４−１およびクロック信号線１４−２を介して、スレーブ１３と信号の送受信を行う。例えば、送受信部２１は、クロック信号線１４−２を駆動することにより送信するシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行う（電位をＨレベルまたはＬレベルに切り替える）ことにより、スレーブ１３に信号を送信する。また、送受信部２１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、スレーブ１３がデータ信号線１４−１に対する駆動を行うことによって、スレーブ１３から送信されてくる信号を受信する。なお、クロック信号線１４−２に対する駆動は、常に、マスタ１２側により行われる。さらに、送受信部２１は、スレーブ１３に送信するデータに、後述するようなパリティを付加して送信を行う。
【００２５】
エラー検出部２２は、送受信部２１が受信した信号に発生しているエラーを検出する。例えば、エラー検出部２２は、送受信部２１が受信した信号に対するパリティチェックや巡回冗長検査（CRC）などを行ったり、スレーブ１３からマスタ１２へ送信権を移行する際に発行されるトークンを確認したりすることで、エラーを検出することができる。そして、エラー検出部２２は、送受信部２１が受信した信号にエラーが発生していることを検出した場合、例えば、送受信部２１に対してスレーブ１３との通信を最初からやり直すように指示することができる。
【００２６】
確認信号検出部２３は、送受信部２１から送信された信号を受信したスレーブ１３から送信されてくるACK（受信確認信号）またはNACK（非受信確認信号）を検出することにより、スレーブ１３がコマンドやデータなどの受信に成功したか否かを確認する。例えば、バスＩＦ１１では、信号にエラーが発生せずに、スレーブ１３がコマンドやデータなどの受信に成功したときには、スレーブ１３からマスタ１２にACKを送信するように規定されている。また、バスＩＦ１１では、信号にエラーが発生して、スレーブ１３がコマンドやデータなどの受信に失敗したときには、スレーブ１３からマスタ１２にNACKを送信するように規定されている。
【００２７】
従って、確認信号検出部２３は、マスタ１２から送信されるコマンドやデータなどに対して、スレーブ１３から送信されてくるACKを検出した場合には、スレーブ１３がコマンドやデータなどを受信することに成功したと確認することができる。一方、確認信号検出部２３は、マスタ１２から送信されるコマンドやデータなどに対して、スレーブ１３から送信されてくるNACKを検出した場合には、スレーブ１３がコマンドやデータなどを受信することに失敗したと確認することができる。
【００２８】
コンフリクト回避部２４は、例えば、確認信号検出部２３によりNACKが検出された場合、NACKに続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。なお、マスターアボートを確実に行うために、リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動は、マスタ１２が常に行う。
【００２９】
さらに、コンフリクト回避部２４は、送受信部２１により、CRCワードの送信を指示するプリアンブルが受信され、エラー検出部２２により、そのプリアンブルに続いて受信された信号にトークンエラーまたはCRCエラーの発生が検出された場合、プリアンブルに続いて、CRCワードとリードデータとの差に対応するビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。
【００３０】
スレーブ１３は、送受信部３１およびエラー検出部３２を備えて構成される。
【００３１】
送受信部３１は、データ信号線１４−１およびクロック信号線１４−２を介して、マスタ１２と信号の送受信を行う。例えば、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、マスタ１２がデータ信号線１４−１に対する駆動を行うことによって、マスタ１２から送信されてくる信号を受信する。また、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行うことによって、マスタ１２に信号を送信する。さらに、送受信部３１は、マスタ１２に送信するデータに、後述するようなパリティを付加して送信を行う。
【００３２】
エラー検出部３２は、マスタ１２のエラー検出部２２と同様に、送受信部３１が受信した信号に発生しているエラーを検出する。そして、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していない場合、その信号により伝送されるコマンドやデータなどの受信に成功したことを伝えるACKを、送受信部３１によりマスタ１２に送信させる。一方、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していた場合、その信号により伝送されるコマンドやデータなどの受信に失敗したことを伝えるNACKを、送受信部３１によりマスタ１２に送信させる。
【００３３】
さらに、エラー検出部３２は、例えば、送受信部３１が受信した信号にエラーが発生し、正常な通信を行うことができない場合には、その後の一切の通信を無視し、マスタ１２に対する応答を停止してスレーブ１３を待機状態とさせる。
【００３４】
以上のようにバスＩＦ１１は構成されており、マスタ１２およびスレーブ１３は、データ信号線１４−１およびクロック信号線１４−２を介して信号を送受信することができる。
【００３５】
ところで、バスＩＦ１１では、DDRモード時において、プリアンブルと呼ばれる２ビットの信号を使用して、次に送信するデータのタイプを指定するように規定されている。しかしながら、プリアンブルには、パリティやCRCによるエラー検出が用意されていないため、プリアンブルにエラーが発生した場合には、そのエラーを検出することができない。
【００３６】
例えば、マスタ１２がスレーブ１３にリードコマンドを送信したとき、リードコマンドに続いて送信されるプリアンブルでは、１ビット目はマスタ１２により駆動され、２ビット目はスレーブ１３により駆動される。例えば、マスタ１２は、その１ビット目により、リードコマンドに続いてデータが送信されることを指定し、スレーブ１３は、その２ビット目により、リードコマンドの受信に成功したか否かを送信することができる。例えば、スレーブ１３は、リードコマンドに続くプリアンブルの２ビット目を０に駆動することによってリードコマンドの受信に成功したことを示すACKを送信し、その２ビット目を１に駆動することによってリードコマンドの受信に失敗したことを示すNACKを送信する。
【００３７】
しかしながら、このプリアンブルの２ビット目において、１ビットの値が反転する１ビットエラーが発生した場合、マスタ１２は、エラーの発生を検出することができない。従って、スレーブ１３が、リードコマンドの受信に失敗したことを伝えるNACKを送信したとき、そのNACKに１ビットエラーが発生すると、マスタ１２は、スレーブ１３からACKが送信されてきたと誤認識することになる。この場合、マスタ１２は、スレーブ１３からリードデータが送信されてくるのを待機する状態となるが、スレーブ１３は、リードコマンドの受信に失敗しているため、リードデータの送信は行われない。
【００３８】
そのため、図２に示すように、リードコマンドに続くプリアンブルの２ビット目に１ビットエラーが発生すると、マスタ１２およびスレーブ１３のどちらもデータ信号線１４−１に対する駆動を行わない状態となる。
【００３９】
ここで、上述したように、マスタ１２のエラー検出部２２は、スレーブ１３から送信されてくるリードデータに含まれるパリティビットを用いて、そのリードデータに発生するエラーを検出することができる。例えば、図３Ａに示すように、エラー検出部２２は、データの奇数ビットから求められるバリティビットＰ１と、データの偶数ビットから求められるバリティビットＰ０に基づいて、データにエラーが発生しているか否かを検出することができる。例えば、従来、バリティビットＰ１は、データの奇数ビットの論理和が偶数のとき０を取り、バリティビットＰ０は、データの偶数ビットの論理和が偶数のとき０を取るように設定されている。
【００４０】
従って、図３Ｂに示すように、リードデータが全て０である場合、パリティビットＰ１およびＰ０はどちらも０となる。このため、データ信号線１４−１に対するＨレベル維持が行われない状態（即ち、データ信号線１４−１がＬレベル）で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、リードデータは全て０となる。従って、この場合、実際に全て０のデータが送信されてきたときと区別することができない。
【００４１】
同様に、図３Ｃに示すように、リードデータが全て１である場合、パリティビットＰ１およびＰ０はどちらも１となる。このため、データ信号線１４−１に対するＨレベル維持が行われる状態で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、リードデータは全て１となる。従って、この場合、実際に全て１のデータが送信されてきたときと区別することができない。
【００４２】
そこで、マスタ１２のエラー検出部２２は、バリティビットＰ１は、データの奇数ビットの論理和が偶数のとき０を取る偶数パリティとし、バリティビットＰ０は、データの偶数ビットの論理和が奇数のとき０を取る奇数パリティとするように設定される。なお、以下では、マスタ１２のエラー検出部２２の構成について説明するが、スレーブ１３のエラー検出部３２も同様に構成されている。そして、送受信部２１および送受信部３１により、以下で説明するようなパリティが付加されてデータが送信される。
【００４３】
これにより、例えば、図４Ａに示すように、リードデータが全て０である場合、バリティビットＰ１は０となり、バリティビットＰ０は１となる。同様に、例えば、図４Ｂに示すように、リードデータが全て１である場合、バリティビットＰ１は０となり、バリティビットＰ０は１となる。このため、エラー検出部２２は、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、パリティが一致しないことより、受信したデータは正確ではなく、エラーが発生していることを検出することができる。
【００４４】
＜パリティエラー検出器の第１の構成例＞
【００４５】
マスタ１２のエラー検出部２２は、図５に示すようなパリティエラー検出器４１を有して構成される。
【００４６】
図５に示すように、パリティエラー検出器４１は、入力端子４２、XORゲート４３および４４、１ビット付加部４５、並びに、出力端子４６および４７を備えて構成される。
【００４７】
パリティエラー検出器４１の入力端子４２には、データ信号線１４−１を介して供給されるシリアルデータが入力される。そして、シリアルデータの奇数ビットは、XORゲート４３に供給され、シリアルデータの偶数ビットは、XORゲート４４に供給されるように、入力端子４２がXORゲート４３および４４に接続される。
【００４８】
そして、パリティエラー検出器４１では、XORゲート４４に対して１ビット付加部４５から１の値の１ビットが付加される。これにより、パリティエラー検出器４１は、出力端子４６から出力されるバリティビットＰ１は、データの奇数ビットの論理和が偶数のとき０を取り、出力端子４７から出力されるバリティビットＰ０は、データの奇数ビットの論理和が奇数のとき０を取るように構成される。
【００４９】
このように構成されるパリティエラー検出器４１は、例えば、データ信号線１４−１に対するＨレベル維持が行われない状態（即ち、データ信号線１４−１がＬレベル）で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、データを正しく受信することができなかったと検出することができる。即ち、この場合、受信する信号は全て０となるが、バリティビットＰ１は０となり、かつ、バリティビットＰ０は１となるため、パリティが一致しないことよりエラーを検出すること（図４Ａを参照）ができる。
【００５０】
同様に、パリティエラー検出器４１は、例えば、データ信号線１４−１に対するＨレベル維持が行われる状態で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、データを正しく受信することができなかったと検出することができる。即ち、この場合、受信する信号は全て１となるが、バリティビットＰ１は０となり、かつ、バリティビットＰ０は１となるため、パリティが一致しないことよりエラーを検出すること（図４Ｂを参照）ができる。
【００５１】
また、パリティエラー検出器４１では、バリティビットＰ１を偶数パリティとし、バリティビットＰ０を奇数パリティとすることで、例えば、マスタ１２がデータ信号線１４−１をＨレベルに維持し続ける場合を考慮すると、早期にエラーを検出することができる。即ち、マスタ１２がデータ信号線１４−１をＨレベルに維持し続ける場合にはデータが全て１となり、バリティビットＰ１が０となることよりエラーを早く検出することができる。
【００５２】
＜パリティチェックを正常に行う通信方法＞
【００５３】
図６は、マスタ１２が、HDRモードのひとつであるDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）を説明するフローチャートである。
【００５４】
ステップＳ１１において、マスタ１２は、通信をSDRモードからHDRモードに切り替える処理を行う。具体的には、マスタ１２では、送受信部２１が、データ信号線１４−１およびクロック信号線１４−２を駆動して、SDRモードにおいて、バスＩＦ１１を構成する全てのスレーブ１３を対象として一斉にコマンドを送信することを通知するブロードキャストコマンド（0ｘ7E+R/W=0）を送信する。その後、マスタ１２では、ブロードキャストコマンドの受信が成功したことを確認するためにスレーブ１３から送信されてくるACKを受信すると、送受信部２１が、HDRモードに入るためのコモンコマンドコード（ENTHDR CCC(0ｘ20)）を送信する。
【００５５】
ステップＳ１２において、マスタ１２の送受信部２１は、データ信号線１４−１およびクロック信号線１４−２を駆動して、リードコマンドを送信する。
【００５６】
ステップＳ１３において、送受信部２１は、リードコマンドを送信した後のプリアンブルの２ビット目の値を検出し、スレーブ１３からACKおよびNACKのどちらが送信されてきかを判定する。即ち、送受信部２１は、リードコマンドを送信した後のプリアンブルの２ビット目が０であることを検出した場合、スレーブ１３からACKが送信されてきたと判定する。一方、送受信部２１は、リードコマンドを送信した後のプリアンブルの２ビット目が１であることを検出した場合、スレーブ１３からNACKが送信されてきたと判定する。
【００５７】
ステップＳ１３において、送受信部２１が、スレーブ１３からACKが送信されてきたと判定した場合、処理はステップＳ１４に進む。
【００５８】
ステップＳ１４において、送受信部２１は、スレーブ１３から送信されてくるリードデータを受信する。
【００５９】
ステップＳ１５において、エラー検出部２２は、ステップＳ１４で送受信部２１が受信したデータに対するパリティチェックを行って、データにエラーが発生しているか否かを判定する。このとき、図４を参照して上述したように、バリティビットＰ１は、データの奇数番目のビットの論理和が偶数のとき０を取り、バリティビットＰ１は、データの偶数番目のビットの論理和が奇数のとき０を取る。
【００６０】
ステップＳ１５において、エラー検出部２２が、データにエラーが発生していない、即ち、データが正常であると判定した場合、処理はステップＳ１６に進み、送受信部２１は、データに続いて送信されてくるプリアンブルを受信する。
【００６１】
ステップＳ１７において、送受信部２１は、ステップＳ１６で受信したプリアンブルにより次に送信されることが指定されているのは、データおよびCRCワードのどちらであるかを判定する。
【００６２】
ステップＳ１７において、送受信部２１が、次に送信されてくるのはデータであると判定した場合、処理はステップＳ１８に進み、送受信部２１はリードデータを受信した後、処理はステップＳ１５に戻って、以下、同様の処理が繰り返される。
【００６３】
一方、ステップＳ１７において、送受信部２１が、次に送信されてくるのはCRCワードであると判定した場合、処理はステップＳ１９に進み、送受信部２１はCRCワードを受信する。
【００６４】
ステップＳ１９の処理後、処理はステップＳ２２に進む。または、ステップＳ１５でパリティチェックの結果がエラーであると判定された場合、処理はステップＳ２０に進み、スレーブ１３に対して、処理を中断することを指示するアボート信号を送信した後、処理はステップＳ２２に進む。また、ステップＳ１３でNACKが送信されてきたと判定された場合、処理はステップＳ２１に進み、所定のビット数のコンフリクト防止クロック期間の経過後、送受信部２１は、スレーブ１３に対して、処理を中断することを指示するアボート信号を送信して、処理はステップＳ２２に進む。
【００６５】
ステップＳ２２において、送受信部２１はHDR終了コマンドを送信し、これにより、マスタ１２がDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）は終了される。
【００６６】
以上のように、バスＩＦ１１では、例えば、マスタ１２がACKを受信したと判定したとき、そのACKがNACKの１ビットエラーであってデータ信号線１４−１に対する駆動が行われない状態が発生したとしても、エラー検出部２２がパリティチェックを行うことで、受信したデータが正しいものではないことを検出することができる。これにより、マスタ１２は、受信したデータが正しいものであるのか、データ信号線１４−１に対する駆動が行われない状態によるものであるのかを正確に判断して、より確実に通信を行うことができる。
【００６７】
＜パリティエラー検出器の第２の構成例＞
【００６８】
図７および図８を参照して、パリティエラー検出器４１の第２の構成例について説明する。
【００６９】
上述の図４および図５を参照して説明したパリティエラー検出器４１は、バリティビットＰ１は、データの奇数ビットの論理和が偶数のとき０を取り、バリティビットＰ０は、データの偶数ビットの論理和が奇数のとき０を取るように構成されている。
【００７０】
これに対し、図７および図８に示すように、パリティエラー検出器４１Ａは、図５のパリティエラー検出器４１とは逆に、バリティビットＰ１は、データの奇数ビットの論理和が偶数のとき１を取り、バリティビットＰ０は、データの偶数ビットの論理和が奇数のとき１を取るように構成されている。
【００７１】
このように構成されるパリティエラー検出器４１Ａにおいても、例えば、データ信号線１４−１に対するＨレベル維持が行われない状態（即ち、データ信号線１４−１がＬレベル）で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、データを正しく受信することができなかったと検出することができる。即ち、この場合、図７Ａに示すように、リードデータは全て０となるが、バリティビットＰ１は１となり、かつ、バリティビットＰ０は０となるため、パリティが一致しないことよりエラーを検出することができる。
【００７２】
同様に、パリティエラー検出器４１Ａは、例えば、データ信号線１４−１に対するＨレベル維持が行われる状態で、マスタ１２およびスレーブ１３のいずれもデータ信号線１４−１に対する駆動を行わない場合、データを正しく受信することができなかったと検出することができる。即ち、この場合、図７Ｂに示すように、リードデータは全て１となるが、バリティビットＰ１は１となり、かつ、バリティビットＰ０は０となるため、パリティが一致しないことよりエラーを検出することができる。
【００７３】
なお、本技術は、I3Cの規格に従ったバスＩＦ１１に限定されることはなく、その他の規格に従ったバスＩＦ１１に適用することができる。また、図１に示すバスＩＦ１１では、スレーブ１３−１乃至１３−３が接続された構成例が示されているが、スレーブ１３は、例えば、１台または２台でもよく、あるいは、３台以上でもよい。
【００７４】
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【００７５】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００７６】
また、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【００７７】
＜ハードウエアの構成例＞
【００７８】
図９は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【００７９】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３、およびEEPROM（Electronically Erasable and Programmable Read Only Memory）１０４は、バス１０５により相互に接続されている。バス１０５には、さらに、入出力インタフェース１０６が接続されており、入出力インタフェース１０６が外部（例えば、図１のデータ信号線１４−１およびクロック信号線１４−２）に接続される。
【００８０】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、ROM１０２およびEEPROM１０４に記憶されているプログラムを、バス１０５を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ（CPU１０１）が実行するプログラムは、ROM１０２に予め書き込んでおく他、入出力インタフェース１０６を介して外部からEEPROM１０４にインストールしたり、更新したりすることができる。
【００８１】
なお、本技術は以下のような構成も取ることができる。
（１）
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部と
を備え、
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
を備える通信装置。
（２）
前記エラー検出部は、前記送受信部が受信したデータのうちの、奇数番目のビットから求められるパリティを偶数パリティとし、偶数番目のビットから求められるパリティを奇数バリティとする
上記（１）に記載の通信装置。
（３）
前記エラー検出部は、前記送受信部が受信したデータのうちの、奇数番目のビットから求められるパリティを奇数パリティとし、偶数番目のビットから求められるパリティを偶数バリティとする
上記（１）に記載の通信装置。
（４）
前記送受信部は、前記他の通信装置に送信するデータに付加する２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとする
上記（１）から（３）までのいずれかに記載の通信装置。
（５）
前記通信装置は、バスにおける制御の主導権を有する通信装置であり、前記他の通信装置は、前記通信装置による制御に従って通信を行う
上記（１）から（４）までのいずれかに記載の通信装置。
（６）
前記通信装置は、バスにおける制御の主導権を有する他の通信装置による制御に従って通信を行う
上記（１）から（５）までのいずれかに記載の通信装置。
（７）
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
をさらに備える上記（１）から（６）までのいずれかに記載の通信装置。
（８）
前記送受信部から送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
をさらに備える上記（１）から（７）までのいずれかに記載の通信装置。
（９）
前記送受信部は、前記他の通信装置から読み出されるリードデータを受信し、前記リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動を常に行う
上記（１）から（８）までのいずれかに記載の通信装置。
（１０）
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
上記（１）から（９）までのいずれかに記載の通信装置。
（１１）
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
上記（１）から（１０）までのいずれかに記載の通信装置。
（１２）
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
上記（１）から（１１）までのいずれかに記載の通信装置。
（１３）
他の通信装置と信号の送受信を行い、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出し、
前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
ステップを含む通信方法。
（１４）
他の通信装置と信号の送受信を行い、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出し、
前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
ステップを含む通信処理をコンピュータに実行させるプログラム。
（１５）
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置および前記第２の通信装置それぞれが、
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出するエラー検出部と
を有し、
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとしてエラー検出を行う
通信システム。
【００８２】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【００８３】
１１  バスＩＦ，  １２  マスタ，  １３  スレーブ，  １４−１  データ信号線，  １４−２  クロック信号線，  ２１  送受信部，  ２２  エラー検出部，  ２３  確認信号検出部，  ２４  コンフリクト回避部，  ３１  送受信部，  ３２  エラー検出部，  ４１  パリティエラー検出器，  ４２  入力端子，  ４３および４４  XORゲート，  ４５  １ビット付加部，  ４６および４７  出力端子
【図１】
2017208710.tif 000003
【図２】
2017208710.tif 000004
【図３】
2017208710.tif 000005
【図４】
2017208710.tif 000006
【図５】
2017208710.tif 000007
【図６】
2017208710.tif 000008
【図７】
2017208710.tif 000009
【図８】
2017208710.tif 000010
【図９】
2017208710.tif 000011