本発明に係るシリアル通信システム及びシリアル通信方法の実施の形態について説明する。但し、本発明が以下の実施形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
先ず、本発明に係るシリアル通信システム及びシリアル通信方法の技術的思想に想到した経緯について説明する。
特許文献1、2に開示されているシリアル通信システムにおいて、シリアル送受信を実現するために、通信準備状態を通知する、すなわち相手側のデバイスに通信準備状態を通知する制御信号用のバスラインもデータ送信に用いた場合を想定する。つまり、特許文献1、2に開示されているシリアル通信システムにおいて、MDライン及びSDラインの両方を同時にデータ送信に使用した。
一般的にシリアル通信システムは、データ通信用のバスラインからの出力がHの場合に、デバイスの通信準備状態を準備完了状態として固定している。一方、データ通信用のバスラインからの出力がLの場合に、デバイスの通信準備状態をビジー状態として固定している。そのため、当該シリアル通信システムは、以下のように動作する。但し、出力が逆に固定されている場合もある。
図14は、制御信号用のバスラインを用いてデータ通信を行い、その最終ビットが0である場合のタイミング図を示す。また図15は、制御信号用のバスラインを用いてデータ通信を行い、その最終ビットが1である場合のタイミング図を示す。
第1のフェーズの最終ビットH0が0(L出力)である場合は、図14に示すとおり、デバイスの通信準備が完了すると、当該デバイスからの出力をアイドル状態Hに変化させる。その結果、相手側のデバイスに通信準備完了を通知することができるため、問題は発生しない。
しかし図15に示すとおり、第1のフェーズの最終ビットH0が1(H出力)である場合は、送信終了時点で既にアイドル状態Hとなっている。そのため、デバイスの通信準備状態がビジー状態であったとしても、相手側のデバイスに通信準備状態を通知することができない。
すなわち、マスタICとスレーブICとの間を3線シリアルでデータの通信を行う場合、マスタICがシリアルクロックを出力しシリアル送受信のタイミングを決定する。スレーブICは、マスタICからシリアルクロックが供給される。つまり、通信タイミングはマスタICに委ねることとなるが、もしスレーブIC自身がシリアル送受信の準備を行っている状態(ビジー状態)で、マスタICがシリアル送受信を開始してしまうと、通信が成り立たなくなってしまう。そのため、マスタICがシリアル送受信を開始しないように、スレーブICの通信準備状態がビジー状態であることを、マスタICに通知するハンドシェイクの仕組みが必要となる。
本発明は、ハンドシェイク機能実現のための新規バスラインを設けることなく、データ通信用のバスラインだけを用いてマスタICにスレーブICの通信準備状態を通知するハンドシェイク機能を実現する。具体的には、スレーブICの通信準備状態がビジー状態の場合における当該スレーブICからの出力を、送信データの最終ビット値に関連させることを特徴とする。つまり、スレーブICの通信準備状態がビジー状態の場合には、当該スレーブICからの出力は最後に送信したデータの最終ビット値と等しくし、スレーブICの通信準備状態が完了状態の場合には、当該スレーブICからの出力は最後に送信したデータの最終ビット値と反転するように、データ通信毎に変化させることを特徴とする。
これにより、データの最終ビット値によってハンドシェイク機能が実現できなくなる前述の問題を回避することが可能である。
以下、本発明に係るシリアル通信システム及びシリアル通信方法を更に詳細に説明する。
<実施の形態1>
本発明に係るシリアル通信システム及びシリアル通信方法の実施の形態1を、図面に基づいて説明する。
シリアル通信システム1は、図1に示すように、第1のデバイス2と、第2のデバイス3と、第1〜第3のバスライン4〜6と、を有する。
第1のデバイス2は、第2のデバイス3からシリアルクロックが入力される側のデバイスであり、スレーブICである。第1のデバイス2は、受信インターフェース20と、送信インターフェース21と、出力制御部22と、データ処理部23と、記憶部24と、を有する。
受信インターフェース20は、第2のデバイス3から入力されたシリアルクロックに基づいて、当該第2のデバイス3から第1のバスライン4を介して送信されたデータを受信する。送信インターフェース21は、第2のデバイス3から入力されたシリアルクロックに基づいて、当該第2のデバイス3に第2のバスライン5を介してデータを送信する。
出力制御部22は、第1のデバイス2における次フェーズのデータの通信準備が完了すると、送信インターフェース21からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させる。データ処理部23は、受信インターフェース20が受信したデータを記憶部24に格納したり、記憶部24から第2のデバイス3に送信するデータを取得し、当該第2のデバイス3への次フェーズのデータの通信準備が完了したことを出力制御部22に指示したりする。記憶部24は、第2のデバイス3から受信したデータや第2のデバイス3に送信するデータなどを格納する。
このような第1のデバイス2は、例えば以下のように動作する。図2は、第1のデバイス2の動作を示すフローチャートである。
先ず、第1のデバイス2は、第2のデバイス3からシリアルクロックが受信インターフェース20及び送信インターフェース21に入力されることによって、データの通信(送受信)を行う(ステップS1)。このとき、受信インターフェース20は、第2のデバイス3から送信される1フェーズ分のデータを1ビットづつ受信し、データ処理部23に出力する。一方、送信インターフェース21は、データ処理部23が記憶部24から呼び出した1フェーズ分のデータを1ビットづつ、第2のデバイス3に送信する。
次に、データ処理部23は、受信インターフェース20から入力されるデータのビット量、及び送信インターフェース21から送信されるデータのビット量等から、1フェーズ分のデータの通信が完了したか否かを判断する(ステップS2)。
データ処理部23は、1フェーズ分のデータの通信が完了したと判断すると、受信インターフェース20から入力されたデータの全ビットを記憶部24に格納する(ステップS3)。さらにデータ処理部23は、第2のデバイス3に送信する次フェーズのデータを記憶部24から呼び出し、通信準備を行う(ステップS4)。ちなみに、本実施形態では、データ処理部23は、先に受信インターフェース20から入力されたデータの全ビットを記憶部24に格納し終えてから、第2のデバイス3に送信する次フェーズのデータを記憶部24から呼び出す。そのため、本実施形態の通信準備は、第2のデバイス3からの次フェーズのデータの受信準備は完了しているものとみなすことができ、実質的には第2のデバイス3への次フェーズのデータの送信準備となる。
一方、データ処理部23は、1フェーズ分のデータの通信が完了していないと判断すると、もう一度ステップS2に戻る。
次に、データ処理部23は、記憶部24から第2のデバイス3に送信する次フェーズのデータを取得し、次フェーズのデータの通信準備が完了したか否かを判断する(ステップS5)。
データ処理部23は、次フェーズのデータの通信準備が完了したと判断すると、出力制御部22に第2のデバイス3への出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。
出力制御部22は、前フェーズにおいて送信したデータの最終ビット値を判断する(ステップS6)。出力制御部22は、前フェーズにおいて送信したデータの最終ビット値がLの場合、Hに反転させて第2のデバイス3に出力する(ステップS7)。一方、出力制御部22は、前フェーズにおいて送信したデータの最終ビット値がHの場合、Lに反転させて第2のデバイス3に出力する(ステップS8)。
一方、データ処理部23は、次フェーズのデータの通信準備が完了していないと判断すると、もう一度ステップS5に戻る。このとき、データ処理部23は、出力制御部22への指示を行わない。そのため、第2のデバイス3への出力は、前フェーズにおいて送信したデータの最終ビット値と等しい状態が維持される。
上述の各ステップS1〜S8を繰り返すことで、第1のデバイス2における次フェーズのデータの通信準備状態を第2のデバイス3に通知することができる。つまり、第1のデバイス2は、次フェーズのデータの通信準備状態がビジー状態の場合、第2のデバイス3への出力を前フェーズにおいて送信したデータの最終ビット値と等しくし、第2のデバイス3に通知する。一方、第1のデバイス2は、次フェーズのデータの通信準備状態が完了状態の場合、第2のデバイス3への出力を前フェーズにおいて送信したデータの最終ビット値と反転させて、第2のデバイス3に通知する。
第2のデバイス3は、第1のデバイス2と第2のデバイス3とのデータ通信を司るシリアルクロックを生成する側のデバイスであり、マスタICである。第2のデバイス3は、受信インターフェース30と、送信インターフェース31と、レベル検出部32と、データ処理部33と、記憶部34と、クロックジェネレータ35と、を有する。
受信インターフェース30は、クロックジェネレータ35が生成したシリアルクロックに基づいて、第1のデバイス2から第2のバスライン5を介して送信されたデータを受信する。送信インターフェース31は、クロックジェネレータ35が生成したシリアルクロックに基づいて、第1のデバイス2に第1のバスライン4を介してデータを送信する。
レベル検出部32は、第1のデバイス2からの出力が前フェーズにおいて受信したデータの最終ビット値と反転しているか否かを判断する。
すなわち、レベル検出部32は、第1のデバイス2からの出力が前フェーズにおいて受信したデータの最終ビット値と反転していると、第1のデバイス2における次フェーズのデータの通信準備状態が完了状態であると判断する。そして、レベル検出部32は、第1のデバイス2における次フェーズのデータの通信準備状態が完了状態であると判断すると、クロックジェネレータ35にシリアルクロックを生成するように指示する。
一方、レベル検出部32は、第1のデバイス2からの出力が前フェーズにおいて受信したデータの最終ビット値と等しいと、第1のデバイス2における次フェーズのデータの通信準備状態がビジー状態であると判断する。そのため、レベル検出部32はクロックジェネレータ35への指示を行わない。
データ処理部33は、受信インターフェース30が受信したデータを記憶部34に格納したり、記憶部34から第1のデバイス2に送信するデータを取得し、当該第1のデバイス2への次フェーズのデータの通信準備が完了すると、クロックジェネレータ35にシリアルクロックの生成を指示したりする。
すなわち、データ処理部33は、記憶部34に第1のデバイス2から受信したデータが全て格納され、且つ記憶部34から第1のデバイス2に送信する次フェーズのデータを取得して、第2のデバイス3における次フェーズのデータの通信準備が完了したか否かを判断する。
データ処理部33は、次フェーズのデータの通信準備が完了したと判断すると、クロックジェネレータ35にシリアルクロックを生成するように指示する。一方、データ処理部33は、次フェーズのデータの通信準備が完了していないと判断すると、クロックジェネレータ35への指示を行わない。
記憶部34は、第1のデバイス2から受信したデータや第1のデバイス2に送信するデータなどを格納する。
クロックジェネレータ35は、レベル検出部32及びデータ処理部33の双方から指示を受けると、シリアルクロックを生成する。このシリアルクロックは、第1のデバイス2の受信インターフェース20、送信インターフェース21、及び受信インターフェース30、送信インターフェース31に入力される。すなわち、第1のデバイス2と第2のデバイス3とは、当該シリアルクロックに基づいて、相互通信を開始する構成とされている。
このような第2のデバイス3は、例えば以下のように動作する。図3は、第2のデバイス3の動作を示すフローチャートである。
先ず、第2のデバイス3は、シリアルクロックが受信インターフェース30及び送信インターフェース31に入力されることによって、データの通信を行う(ステップS11)。このとき、受信インターフェース30は、第1のデバイス2から送信される1フェーズ分のデータを1ビットづつ受信し、データ処理部33に出力する。一方、送信インターフェース31は、データ処理部33が記憶部34から呼び出した1フェーズ分のデータを1ビットづつ、第1のデバイス2に送信する。
次に、データ処理部33は、受信インターフェース30から入力されるデータのビット量、及び送信インターフェース31から送信されるデータのビット量等から、1フェーズ分のデータの通信が完了したか否かを判断する(ステップS12)。
データ処理部33は、1フェーズ分のデータの通信が完了したと判断すると、受信インターフェース30から入力されたデータの全ビットを記憶部34に格納する(ステップS13)。さらにデータ処理部33は、第1のデバイス2に送信する次フェーズのデータを記憶部34から呼び出し、通信準備を行う(ステップS14)。ちなみに、本実施形態では、データ処理部33は、先に受信インターフェース30から入力されたデータの全ビットを記憶部34に格納し終えてから、第1のデバイス2に送信する次フェーズのデータを記憶部34から呼び出す。そのため、本実施形態の通信準備は、第1のデバイス2からの次フェーズのデータの受信準備は完了しているものとみなすことができ、実質的には第1のデバイス2への次フェーズのデータの送信準備となる。
一方、データ処理部33は、1フェーズ分のデータの通信が完了していないと判断すると、もう一度ステップS12に戻る。
次に、データ処理部33は、記憶部34から第1のデバイス2に送信する次フェーズのデータを取得し、次フェーズのデータの通信準備が完了したか否かを判断する(ステップS15)。
データ処理部33は、次フェーズのデータの通信準備が完了したと判断すると、クロックジェネレータ35にシリアルクロックを生成するように指示する。
次に、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値を判断する(ステップS16)。そして、レベル検出部32は、第1のデバイス2からの出力が前フェーズにおいて受信したデータの最終ビット値と反転しているか否かを判断する。
すなわち、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値がLの場合、第1のデバイス2からの出力がHか否かを判断する(ステップS17)。
レベル検出部32は、第1のデバイス2からの出力がHの場合、第1のデバイス2における次フェーズのデータの通信準備状態が完了状態であると判断し、クロックジェネレータ35にシリアルクロックを生成するように指示する。一方、レベル検出部32は、第1のデバイス2からの出力がLの場合、第1のデバイス2における次フェーズのデータの通信準備状態がビジー状態であると判断し、クロックジェネレータ35への指示を行わない。
また、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値がHの場合、第1のデバイス2からの出力がLか否かを判断する(ステップS18)。
レベル検出部32は、第1のデバイス2からの出力がLの場合、第1のデバイス2における次フェーズのデータの通信準備状態が完了状態であると判断し、クロックジェネレータ35にシリアルクロックを生成するように指示する。一方、レベル検出部32は、第1のデバイス2からの出力がHの場合、第1のデバイス2における次フェーズのデータの通信準備状態がビジー状態であると判断し、クロックジェネレータ35への指示を行わない。
上述の各ステップS11〜S18を繰り返すことで、第2のデバイス3は、第1のデバイス2における次フェーズのデータの通信準備状態を取得することができる。但し、上述のステップでは、第2のデバイス3における次フェーズのデータの通信準備が完了した後に、第1のデバイス2からの出力値を検出しているが、当該通信準備が完了する前から断続的に、第1のデバイス2からの出力値を検出しても良い。この場合、第1のデバイス2における次フェーズのデータの通信準備が完了すると、クロックジェネレータ35にシリアルクロックを生成するように指示するが、クロックジェネレータ35は第2のデバイス3における次フェーズのデータの通信準備が完了するまで、シリアルクロックの生成を待つことになる。
第1のバスライン4は、第2のデバイス3から第1のデバイス2にデータを送信するデータ通信用のMDラインである。第2のバスライン5は、第1のデバイス2から第2のデバイス3にデータを送信するデータ通信用のSDラインである。第3のバスライン6は、第2のデバイス3から第1のデバイス2にシリアルクロックを送信するクロック通信用のCLKラインである。
このようなシリアル通信システム1は、シリアルクロックを生成する側の第2のデバイス3が第1のデバイス2から受信したデータの出力値に基づいて、第1のデバイス2における次フェーズのデータの通信準備状態を取得することができる。そのため、新たに制御信号用のバスラインを設けなくても、第1のバスライン及び第2のバスラインを同時にデータ通信用のバスラインとして使用しつつ、良好にハンドシェイク機能を実現することができる。
このようなシリアル通信システム1を用いて、以下のようにシリアル通信方法を実現することができる。先ず、第1のデバイス2が送信したデータの最終ビット値がLの場合を説明する。図4は、第1のデバイス2が送信したデータの最終ビット値がLの場合におけるシリアル通信システムの動作を示すタイミング図である。ここでは、シリアル通信の転送ビット長を8ビットとする。第1のバスライン4から送信されるデータの各ビットをM0〜M7、次フェーズにおいて送信されるデータの各ビットをM0'〜M7'とする。第2のバスライン5から送信されるデータの各ビットをS0〜S7、次フェーズにおいて送信されるデータの各ビットをS0'〜S7'とする。これらデータの並びはMSB(Most Significant Bit)ファーストとするため、先頭ビットをそれぞれM7、S7、M7'、S7'、最終ビットをM0、S0、M0'、S0'としている。
先ず、第2のデバイス3は、シリアルクロックを生成する。当該シリアルクロックに基づいて、第1のデバイス2からデータS7〜S0が第2のデバイス3に送信される。同時に当該シリアルクロックに基づいて、第2のデバイス3からデータM7〜M0が第1のデバイス2に送信される。このとき、初期状態の相互の出力値を決定しておき、当該決定した出力値と等しい場合は通信準備状態がビジー状態、当該決定した出力値と反転している場合は通信準備状態が完了状態とすることにより、初期通信が実現可能である。
次に、第1のデバイス2は、1フェーズ分のデータS7〜S0の送信が完了すると共に、第2のデバイス3からのデータM7〜M0の受信が完了すると、次フェーズのデータの通信準備を行う。一方、第2のデバイス3は、1フェーズ分のデータM7〜M0の送信が完了すると共に、第1のデバイス2からのデータS7〜S0の受信が完了すると、次フェーズのデータの通信準備を行う。
第1のデバイス2は、次フェーズのデータの通信準備が完了すると、第1のデバイス2からの出力を反転させてLからHとする。第2のデバイス3は、第1のデバイス2からの出力値を検出しておき、当該第1のデバイス2からの出力がLからHに反転したことを検出すると、自身の次フェーズのデータの通信準備状態に加え、第1のデバイス2も次フェーズのデータの通信準備状態が完了状態であると判断し、シリアルクロックを生成する。
その後は、当該生成したシリアルクロックに基づいて、第1のデバイス2からデータS7'〜S0'が第2のデバイス3に送信される。同時に当該シリアルクロックに基づいて、第2のデバイス3からデータM7'〜M0'が第1のデバイス2に送信される。
次に、第1のデバイス2が送信したデータの最終ビット値がHの場合を説明する。図5は、第1のデバイス2が送信したデータの最終ビット値がHの場合におけるシリアル通信システムの動作を示すタイミング図である。図5に示すように、第1のデバイス2が送信したデータの最終ビット値が逆の場合であっても略同様に、第2のデバイス3は第1のデバイス2における次フェーズのデータの通信準備状態を取得することができる。
このようなシリアル通信方法は、シリアルクロックを生成する側の第2のデバイス3が第1のデバイス2から受信したデータの出力値に基づいて、第1のデバイス2における次フェーズのデータの通信準備状態を取得することができる。そのため、新たに制御信号用のバスラインを設けなくても、第1のバスライン及び第2のバスラインを同時にデータ通信用のバスラインとして使用しつつ、良好にハンドシェイク機能を実現することができる。
<実施の形態2>
本発明に係るシリアル通信システム及びシリアル通信方法の実施の形態2を、図面に基づいて説明する。
シリアル通信システム100は、図6に示すように、第1のデバイス200と、第2のデバイス300と、第1〜第3のバスライン4〜6と、を有する。すなわち、シリアル通信システム100は、上記実施の形態1のシリアル通信システム1と略同様であるため、重複する説明は省略する。
第1のデバイス200は、上記実施の形態1の第1のデバイス2の構成に加えて、さらにレベル検出部25を有する。レベル検出部25は、後述するように第2のデバイス300からの出力が前フェーズにおいて受信したデータの最終ビット値と反転しているか否かを判断する。
すなわち、レベル検出部25は、第2のデバイス300からの出力が前フェーズにおいて受信したデータの最終ビット値と反転していると、第2のデバイス300における次フェーズのデータの通信準備状態が完了状態であると判断する。そして、レベル検出部25は、第2のデバイス300における次フェーズのデータの通信準備状態が完了状態であると判断すると、出力制御部22に第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。
データ処理部23は、第1のデバイス200における次フェーズのデータの通信準備が完了すると、出力制御部22に第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。
出力制御部22は、当該データ処理部23及び当該レベル検出部25の双方からの指示を受けると、第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させる。
一方、レベル検出部25は、第2のデバイス300からの出力が前フェーズにおいて受信したデータの最終ビット値と等しいと、第2のデバイス300における次フェーズのデータの通信準備状態がビジー状態であると判断する。そのため、レベル検出部25は、出力制御部22への指示を行わない。
このような第1のデバイス200は、例えば以下のように動作する。図7は、第1のデバイス200の動作を示すフローチャートである。
先ず、第1のデバイス200は、第2のデバイス300からシリアルクロックが受信インターフェース20及び送信インターフェース21に入力されることによって、データの通信を行う(ステップS101)。このとき、受信インターフェース20は、第2のデバイス300から送信される1フェーズ分のデータを1ビットづつ受信し、データ処理部23に出力する。一方、送信インターフェース21は、データ処理部23が記憶部24から呼び出した1フェーズ分のデータを1ビットづつ、第2のデバイス300に送信する。
次に、データ処理部23は、受信インターフェース20から入力されるデータのビット量、及び送信インターフェース21から送信されるデータのビット量等から、1フェーズ分のデータの通信が完了したか否かを判断する(ステップS102)。
次に、データ処理部23は、1フェーズ分のデータの通信が完了したと判断すると、受信インターフェース20から入力されたデータの全ビットを記憶部24に格納する(ステップS103)。一方、データ処理部23は、1フェーズ分のデータの通信が完了していないと判断すると、もう一度ステップS102に戻る。
次に、レベル検出部25は、前フェーズにおいて受信したデータの最終ビット値を判断する(ステップS104)。そして、レベル検出部25は、第2のデバイス300からの出力が前フェーズにおいて受信したデータの最終ビット値と反転しているか否かを判断する。
すなわち、レベル検出部25は、前フェーズにおいて受信したデータの最終ビット値がLの場合、第2のデバイス300からの出力がHか否かを判断する(ステップS105)。レベル検出部25は、第2のデバイス300からの出力がHの場合、第2のデバイス300における次フェーズのデータの通信準備状態が完了状態であると判断し、出力制御部22に第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。一方、レベル検出部25は、第2のデバイス300からの出力がLの場合、第2のデバイス300における次フェーズのデータの通信準備状態がビジー状態であると判断し、出力制御部22への指示を行わない。
また、レベル検出部25は、前フェーズにおいて受信したデータの最終ビット値がHの場合、第2のデバイス300からの出力がLか否かを判断する(ステップS106)。レベル検出部25は、第2のデバイス300からの出力がLの場合、第2のデバイス300における次フェーズのデータの通信準備状態が完了状態であると判断し、出力制御部22に第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。一方、レベル検出部25は、第2のデバイス300からの出力がHの場合、第2のデバイス300における次フェーズのデータの通信準備状態がビジー状態であると判断し、出力制御部22への指示を行わない。
次に、データ処理部23は、第2のデバイス300に送信する次フェーズのデータを記憶部24から呼び出し、通信準備を行う(ステップS107)。ちなみに、本実施形態でも、データ処理部23は、先に受信インターフェース20から入力されたデータの全ビットを記憶部24に格納し終えてから、第2のデバイス300に送信する次フェーズのデータを記憶部24から呼び出す。そのため、本実施形態の通信準備は、第2のデバイス300からの次フェーズのデータの受信準備を完了しているものとみなすことができ、実質的には第2のデバイス300への次フェーズのデータの送信準備となる。
次に、データ処理部23は、記憶部24から第2のデバイス300に送信する次フェーズのデータを取得し、次フェーズのデータの通信準備が完了したか否かを判断する(ステップS108)。データ処理部23は、第1のデバイス200における次フェーズのデータの通信準備が完了したと判断すると、出力制御部22に第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。
次に、出力制御部22は、第1のデバイス200からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように、データ処理部23及びレベル検出部25の双方から指示を受けると、当該前フェーズにおいて送信したデータの最終ビット値を判断する(ステップS109)。出力制御部22は、前フェーズにおいて送信したデータの最終ビット値がLの場合、当該出力をHに反転させて第2のデバイス300に出力する(ステップS110)。一方、出力制御部22は、前フェーズにおいて送信したデータの最終ビット値がHの場合、当該出力をLに反転させて第2のデバイス300に出力する(ステップS111)。
一方、データ処理部23は、次フェーズのデータの通信準備が完了していないと判断すると、もう一度ステップS108に戻る。このとき、データ処理部23は、出力制御部22への指示を行わない。そのため、第2のデバイス300への出力は、前フェーズにおいて送信したデータの最終ビット値と等しい状態が維持される。
上述の各ステップS101〜S111を繰り返すことで、第1のデバイス200は、第2のデバイス300における次フェーズのデータの通信準備状態を取得することができ、さらに第1のデバイス200における次フェーズのデータの通信準備状態を第2のデバイス300に通知することができる。
第2のデバイス300は、上記実施の形態1の第2のデバイス3の構成に加えて、さらに出力制御部36を有する。出力制御部36は、第2のデバイス300における次フェーズのデータの通信準備が完了すると、第2のデバイス300からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させる。この場合、出力制御部36は、第1のデバイス200への次フェーズのデータの通信準備が完了し、第2のデバイス300からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させる旨のデータ処理部33からの指示に基づいて動作する。
このような第2のデバイス300は、例えば以下のように動作する。図8は、第2のデバイス300の動作を示すフローチャート図である。
先ず、第2のデバイス300は、シリアルクロックが受信インターフェース30及び送信インターフェース31に入力されることによって、データの通信を行う(ステップS1001)。このとき、受信インターフェース30は、第1のデバイス200から送信される1フェーズ分のデータを1ビットづつ受信し、データ処理部33に出力する。一方、送信インターフェース31は、データ処理部33が記憶部34から呼び出した1フェーズ分のデータを1ビットづつ、第1のデバイス200に送信する。
次に、データ処理部33は、受信インターフェース30から入力されるデータのビット量、及び送信インターフェース31から送信されるデータのビット量等から、1フェーズ分のデータの通信が完了したか否かを判断する(ステップS1002)。
データ処理部33は、1フェーズ分のデータの通信が完了したと判断すると、受信インターフェース30から入力されたデータの全ビットを記憶部34に格納する(ステップS1003)。さらにデータ処理部33は、第1のデバイス200に送信する次フェーズのデータを記憶部34から呼び出し、通信準備を行う(ステップS1004)。ちなみに、本実施形態では、データ処理部33は、先に受信インターフェース30から入力されたデータの全ビットを記憶部34に格納し終えてから、第1のデバイス200に送信する次フェーズのデータを記憶部34から呼び出す。そのため、本実施形態の通信準備は、第1のデバイス200からの次フェーズのデータの受信準備を完了しているものとみなすことができ、実質的には第1のデバイス200への次フェーズのデータの送信準備となる。
一方、データ処理部33は、1フェーズ分のデータの通信が完了していないと判断すると、もう一度ステップS1002に戻る。
次に、データ処理部33は、記憶部34から第1のデバイス200に送信する次フェーズのデータを取得し、次フェーズのデータの通信準備が完了したか否かを判断する(ステップS1005)。
データ処理部33は、次フェーズのデータの通信準備が完了したと判断すると、クロックジェネレータ35にシリアルクロックを生成するように指示すると共に、出力制御部36に第2のデバイス300からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように指示する。
次に、出力制御部36は、第2のデバイス300からの出力を前フェーズにおいて送信したデータの最終ビット値と反転させるように、データ処理部33から指示を受けると、当該前フェーズにおいて送信したデータの最終ビット値を判断する(ステップS1006)。出力制御部36は、前フェーズにおいて送信したデータの最終ビット値がLの場合、当該出力をHに反転させて第1のデバイス200に出力する(ステップS1007)。一方、出力制御部36は、前フェーズにおいて送信したデータの最終ビット値がHの場合、当該出力をLに反転させて第1のデバイス200に出力する(ステップS1008)。
一方、データ処理部33は、次フェーズのデータの通信準備が完了していないと判断すると、もう一度ステップS1005に戻る。このとき、データ処理部33は、出力制御部36への指示を行わない。そのため、第1のデバイス200への出力は、前フェーズにおいて送信したデータの最終ビット値と等しい状態が維持される。
次に、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値を判断する(ステップS1009)。そして、レベル検出部32は、第1のデバイス200からの出力が前フェーズにおいて受信したデータの最終ビット値と反転しているか否かを判断する。
すなわち、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値がLの場合、第1のデバイス200からの出力がHか否かを判断する(ステップS1010)。レベル検出部32は、第1のデバイス200からの出力がHの場合、第1のデバイス200における次フェーズのデータの通信準備状態が完了状態であると判断し、クロックジェネレータ35にシリアルクロックを生成するように指示する。一方、レベル検出部32は、第1のデバイス200からの出力がLの場合、第1のデバイス200における次フェーズのデータの通信準備状態がビジー状態であると判断し、クロックジェネレータ35への指示を行わない。
また、レベル検出部32は、前フェーズにおいて受信したデータの最終ビット値がHの場合、第1のデバイス200からの出力がLか否かを判断する(ステップS1011)。レベル検出部32は、第1のデバイス200からの出力がLの場合、第1のデバイス200における次フェーズのデータの通信準備状態が完了状態であると判断し、クロックジェネレータ35にシリアルクロックを生成するように指示する。一方、レベル検出部32は、第1のデバイス200からの出力がHの場合、第1のデバイス200における次フェーズのデータの通信準備状態がビジー状態であると判断し、クロックジェネレータ35への指示を行わない。
上述の各ステップS1001〜S1011を繰り返すことで、第2のデバイス300は、第1のデバイス200における次フェーズのデータの通信準備状態を取得することができる。但し、上述のステップでは、第2のデバイス300における次フェーズのデータの通信準備が完了した後に、第1のデバイス200からの出力値を検出しているが、当該通信準備が完了する前から断続的に、第1のデバイス200からの出力値を検出しても良い。この場合、第1のデバイス200における次フェーズのデータの通信準備が完了すると、クロックジェネレータ35にシリアルクロックを生成するように指示するが、クロックジェネレータ35は第2のデバイス300における次フェーズのデータの通信準備が完了するまで、シリアルクロックの生成を待つことになる。
このようなシリアル通信システム100は、シリアルクロックを生成する側の第2のデバイス300が第1のデバイス200から受信したデータの出力値に基づいて、第1のデバイス200における次フェーズのデータの通信準備状態を取得することができる。そのため、新たに制御信号用のバスラインを設けなくても、第1のバスライン及び第2のバスラインを同時にデータ通信用のバスラインとして使用しつつ、良好にハンドシェイク機能を実現することができる。
特に、このようなシリアル通信システム100は、第1のデバイス200における次フェーズのデータの通信準備が第2のデバイス300から受信したデータの出力に基づいて行われる。このような構成により、例えば第1のデバイス200における次フェーズのデータの通信準備を行うタイミングを、第2のデバイス300から制御したい場合や、第2のデバイス300がシリアル通信を開始する直前のタイミングで第1のデバイス200における次フェーズのデータの通信準備を行う必要がある場合などに好適である。
このようなシリアル通信システム100を用いて、以下のようにシリアル通信方法を実現することができる。先ず、第2のデバイス300が送信したデータの最終ビット値がLの場合を説明する。図9は、第2のデバイス300が送信したデータの最終ビット値がLの場合におけるシリアル通信システムの動作を示すタイミング図である。ここでは、シリアル通信の転送ビット長を8ビットとする。第1のバスライン4から送信されるデータの各ビットをM0〜M7、次フェーズにおいて送信されるデータの各ビットをM0'〜M7'とする。第2のバスライン5から送信されるデータの各ビットをS0〜S7、次フェーズにおいて送信されるデータの各ビットをS0'〜S7'とする。これらデータの並びはMSBファーストとするため、先頭ビットをそれぞれM7、S7、M7'、S7'、最終ビットをM0、S0、M0'、S0'としている。
先ず、第2のデバイス300は、シリアルクロックを生成する。当該シリアルクロックに基づいて、第1のデバイス200からデータS7〜S0が第2のデバイス300に送信される。同時に当該シリアルクロックに基づいて、第2のデバイス300からデータM7〜M0が第1のデバイス200に送信される。このとき、初期状態の相互の出力値を決定しておき、当該決定した出力値と等しい場合は通信準備状態がビジー状態、当該決定した出力値と反転している場合は通信準備状態が完了状態とすることにより、初期通信が実現可能である。
次に、第2のデバイス300は、1フェーズ分のデータM7〜M0の送信が完了すると共に、第1のデバイス200からデータS7〜S0の受信が完了すると、次フェーズのデータの通信準備を行う。
第2のデバイス300は、次フェーズのデータの通信準備が完了すると、第2のデバイス300からの出力を反転させてLからHとする。第1のデバイス200は、第2のデバイス300からの出力値を検出しておき、当該第2のデバイス300からの出力がLからHに反転したことを検出すると、次フェーズのデータの通信準備を行う。そして、第1のデバイス200は、第2のデバイス300における次フェーズのデータの通信準備状態に加え、自身の次フェーズのデータの通信準備状態が完了すると、第1のデバイス200からの出力を反転させる。第2のデバイス300は、第1のデバイス200からの出力値を検出しておき、当該第1のデバイス200からの出力が反転したことを検出すると、自身の次フェーズのデータの通信準備状態に加え、第1のデバイス200における次フェーズのデータの通信準備状態が完了状態であると判断し、シリアルクロックを生成する。但し、図9では、第1のデバイス200からの出力をHからLに反転させているが、当該出力をLからHに反転させる場合もある。
その後は、当該生成したシリアルクロックに基づいて、第1のデバイス200からデータS7'〜S0'が第2のデバイス300に送信される。同時に当該シリアルクロックに基づいて、第2のデバイス300からデータM7'〜M0'が第1のデバイス200に送信される。
次に、第2のデバイス300が送信したデータの最終ビット値がHの場合を説明する。図10は、第2のデバイス300が送信したデータの最終ビット値がHの場合におけるシリアル通信システムの動作を示すタイミング図である。図10に示すように、第2のデバイス300が送信したデータの最終ビット値が逆の場合であっても同様に、相互のデバイスは相手側のデバイスにおける次フェーズのデータの通信準備状態を取得することができる。但し、図10では、第1のデバイス200からの出力をHからLに反転させているが、当該出力をLからHに反転させる場合もある。
このようなシリアル通信方法も、シリアルクロックを受信する側の第1のデバイス200が第2のデバイス300から受信したデータの出力値に基づいて、第2のデバイス300における次フェーズのデータの通信準備状態を取得することができる。そのため、新たに制御信号用のバスラインを設けなくても、第1のバスライン及び第2のバスラインを同時にデータ通信用のバスラインとして使用しつつ、良好にハンドシェイク機能を実現することができる。
特に、このようなシリアル通信方法は、第1のデバイス200における次フェーズのデータの通信準備が第2のデバイス300から受信したデータの出力に基づいて行われる。これにより、例えば第1のデバイス200における次フェーズのデータの通信準備を行うタイミングを、第2のデバイス300から制御したい場合や、第2のデバイス300がシリアル通信を開始する直前のタイミングで第1のデバイス200における次フェーズのデータの通信準備を行う必要がある場合などに好適である。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、相手側のデバイスにおける次フェーズのデータの通信準備状態を判断するタイミングや、次フェーズのデータの通信準備を行うタイミングなどは適宜、変更される。要するに、第1のデバイスにおける次フェーズのデータの通信準備が完了すると、当該第1のデバイスは出力を前フェーズにおいて送信したデータの最終ビット値と反転させて第2のデバイスに送信する。当該第2のデバイスは、第1のデバイスからの出力が前フェーズにおいて受信したデータの最終ビット値と反転していると、第1のデバイスにおける次フェーズのデータの通信準備状態が完了状態であると判断し、相互のシリアル通信を行えば良い。