(57)【特許請求の範囲】
【請求項１】
データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置のシリアル通信方法において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
前記マスタ側から前記スレーブ側へリードデータのアドレス情報を含めたフレームを送信し、かつ、前記スレーブ側では前記アドレス情報を受信した時点で前記リードデータを読み出してエラー検出または訂正のための情報を求めて同一フレーム中に前記マスタ側へ返送する第１フェーズと、
前記スレーブ側から前記マスタ側へ、前記第１フェーズで読み出した当該リードデータを含めたフレームを送信する第２フェーズとを備えることを特徴とするシリアル通信方法。
【請求項２】
データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置のシリアル通信方法において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
前記マスタ側から前記スレーブ側へライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含めたフレームを送信する第１フェーズと、
前記マスタ側から前記スレーブ側へ当該ライトデータを含めたフレームを送信する第２フェーズとを備えることを特徴とするシリアル通信方法。
【請求項３】
第１フェーズにて、マスタ側からスレーブ側へエラー検出または訂正のための情報より先出側にアドレス情報を詰めたフレームを送信することを特徴とする請求項１または請求項２記載のシリアル通信方法。
【請求項４】
第１フェーズにて、マスタ側からスレーブ側へアドレス情報と、リード動作かライト動作かを指示する制御情報と、当該アドレス情報および当該制御情報のエラー検出または訂正のための情報とを含めたフレームを送信することを特徴とする請求項１から請求項３のうちのいずれか１項記載のシリアル通信方法。
【請求項５】
スレーブ側では、第１フェーズにてマスタ側からアドレス情報と、リード動作かライト動作かを指示する制御情報と、当該アドレス情報および当該制御情報のエラー検出または訂正のための情報とを含めたフレームを受信し、当該アドレス情報および制御情報について当該エラー検出または訂正のための情報を用いてエラー検出または訂正処理を行い、処理結果を同一フレーム中に前記マスタ側へ返送することを特徴とする請求項４記載のシリアル通信方法。
【請求項６】
スレーブ側では、ライトデータのアドレス情報と制御情報に対するエラー検出または訂正処理においてエラーが検出された場合、当該ライトデータの書き込みを中止可能とすることを特徴とする請求項５記載のシリアル通信方法。
【請求項７】
スレーブ側では、第２フェーズにてライトデータに対するエラー検出または訂正処理を行って処理結果を同一フレーム中に前記マスタ側へ返送すると共に、当該エラー検出または訂正処理においてエラーが検出された場合、当該ライトデータの書き込みを中止可能とすることを特徴とする請求項２記載のシリアル通信方法。
【請求項８】
マスタ側からスレーブ側へ、第１フェーズにてライトデータを含めたフレームを送信し、第２フェーズにて当該ライトデータのアドレス情報とエラー検出または訂正のための情報とを含めたフレームを送信することを特徴とする請求項２記載のシリアル通信方法。
【請求項９】
データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
マスタ側の通信装置は、
第１フェーズにおいて、リードデータのアドレス情報を含めたフレームをスレーブ側へ送信し、かつ、前記スレーブ側より当該リードデータのエラー検出または訂正のための情報を含むフレームを受信し、
第２フェーズにおいて、前記スレーブ側より当該リードデータを含むフレームを受信することを特徴とする通信装置。
【請求項１０】
データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
前記マスタ側の通信装置は、
第１フェーズにおいて、ライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含むフレームを前記スレーブ側へ送信し、
第２フェーズにおいて、当該ライトデータを含むフレームを前記スレーブ側へ送信することを特徴とする通信装置。
【請求項１１】
データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
スレーブ側の通信装置は、
第１フェーズにおいて、前記マスタ側よりリードデータのアドレス情報を含むフレームを受信し、かつ、当該アドレス情報を受信した時点で当該リードデータを読み出してエラー検出または訂正のための情報を求めて同一フレーム中に前記マスタ側へ送信し、
第２フェーズにおいて、前記第１フェーズで読み出した当該リードデータを含めたフレームを前記マスタ側へ送信することを特徴とする通信装置。
【請求項１２】
データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置において、
通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、
前記スレーブ側の通信装置は、
第１フェーズにおいて、前記マスタ側よりライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含むフレームを受信し、
第２フェーズにおいて、前記マスタ側より当該ライトデータを含むフレームを受信することを特徴とする通信装置。
【請求項１３】
請求項９または請求項１０記載の通信装置をマスタ側として用い、請求項１１または請求項１２記載の通信装置をスレーブ側として用い、両通信装置間でシリアル通信を行うシリアル通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マスタ側とスレーブ側との間でデータの読み書きを行うシリアル通信方法、通信装置、およびシリアル通信システムに関するものである。
【背景技術】
【０００２】
組み込み機器用のマイクロコンピュータ（以下、マイコン）などの半導体デバイス同士でシリアル通信を行う場合、そのシリアル通信単位（フレーム）が８ビットまたは１６ビットという比較的小さな通信単位で行われるケースが多い。また、通信単位のビット数がマイコンの扱うデータビット数と一致するケースが多い。例えば、８ビットマイコンの場合、１フレームも通常８ビットである。
【０００３】
このような１フレーム８ビットで構成される全二重同期通信を行う半導体デバイスにおいて、８ビットのデータを読み出す場合は、従来、以下のような手順となる。
第１フレームにて、マスタ側デバイスからスレーブ側デバイスへ、アドレスデータを送信し、第２フレームにて、スレーブ側からマスタ側へ、受信したアドレスのリードデータを送信する。
なお、アドレスデータは、最大７ビットのアドレスと、読み出し（Ｒ）か書き込み（Ｗ）かを制御する１ビットのＲ／Ｗ制御情報とから構成されることを前提としているが、これより大きいビット数のアドレスの場合にはフレームを追加することになる。
【０００４】
これに加え、通信品質の向上を実現するためにエラー検出・訂正処理を行う場合には、マスタ側は、リードデータのエラー検出・訂正処理に必要なパリティやＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）などのエラー検出・訂正情報を取得する必要がある。ただし、１フレーム≦データビット数のため、第２フレーム中にエラー検出・訂正情報を混在させることはできないので、新たに追加する第３フレームにて、スレーブ側からマスタ側へ、エラー検出・訂正情報を別途送信することになる。
【０００５】
このように、エラー検出・訂正処理を行う場合には、エラー検出・訂正情報を送信するために１フレーム分余計な通信が必要となり、読み出し要求から通信完了までの時間が最大１．５倍になってしまう問題があった。この問題を解決するために、従来よりエラー検査・訂正処理を行う場合の通信時間短縮の方法が試行錯誤されており、例えば特許文献１では、全二重非同期通信において要求のためのパリティ信号とデータ信号とを重畳して送信するようにしていた。ただし、特許文献１の通信方式は非同期式であり、また重畳による多値処理が必要なため、従来の同期式の通信方式を、ローコストな（２値の）デジタル専用回路で実現するためにはそのまま適用することができない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２４６３９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以上のように、従来の全二重同期通信システムはエラー検出・訂正情報を通信するために追加されたフレーム分、通信時間が長くなるという課題があった。特に通信速度が遅い場合、無駄なフレームの追加がミリ秒単位で通信時間が増加してしまうため、少しでも少ないフレームで通信が完結することが望まれている。
【０００８】
この発明は、上記のような課題を解決するためになされたもので、２フレームの通信時間でエラー検出情報を含んだ通信を完了させることにより、従来の３フレームから２フレームに削減して１フレーム分の通信レイテンシの短縮および通信帯域の増強を可能とした、通信信頼性の高いシリアル通信方法、通信装置、およびシリアル通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係るシリアル通信方法は、データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置のシリアル通信方法であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、マスタ側からスレーブ側へリードデータのアドレス情報を含めたフレームを送信し、かつ、スレーブ側ではアドレス情報を受信した時点でリードデータを読み出してエラー検出または訂正のための情報を求めて同一フレーム中に前記マスタ側へ返送する第１フェーズと、スレーブ側からマスタ側へ、第１フェーズで読み出した当該リードデータを含めたフレームを送信する第２フェーズとを備えるようにしたものである。
【００１０】
この発明に係るシリアル通信方法は、データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置のシリアル通信方法であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、マスタ側からスレーブ側へライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含めたフレームを送信する第１フェーズと、マスタ側からスレーブ側へ当該ライトデータを含めたフレームを送信する第２フェーズとを備えるようにしたものである。
【００１１】
この発明に係る通信装置は、データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、マスタ側の通信装置が、第１フェーズにおいて、リードデータのアドレス情報を含めたフレームをスレーブ側へ送信し、かつ、スレーブ側より当該リードデータのエラー検出または訂正のための情報を含むフレームを受信し、第２フェーズにおいて、スレーブ側より当該リードデータを含むフレームを受信するものである。
【００１２】
この発明に係る通信装置は、データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、マスタ側の通信装置が、第１フェーズにおいて、ライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含むフレームをスレーブ側へ送信し、第２フェーズにおいて、当該ライトデータを含むフレームをスレーブ側へ送信するものである。
【００１３】
この発明に係る通信装置は、データ信号を送受信するシリアルデータラインにより接続され、全二重通信を行う通信装置であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、スレーブ側の通信装置が、第１フェーズにおいて、マスタ側よりリードデータのアドレス情報を含むフレームを受信し、かつ、当該アドレス情報を受信した時点で当該リードデータを読み出してエラー検出または訂正のための情報を求めて同一フレーム中にマスタ側へ送信し、第２フェーズにおいて、第１フェーズで読み出した当該リードデータを含めたフレームをマスタ側へ送信するものである。
【００１４】
この発明に係る通信装置は、データ信号を送受信するシリアルデータラインにより接続されてシリアル通信を行う通信装置であって、通信単位であるフレームのビット数が、マスタ側およびスレーブ側の各通信装置のデータビット数と一致する場合、または当該データビット数より少ない場合に、スレーブ側の通信装置が、第１フェーズにおいて、マスタ側よりライトデータのアドレス情報と、当該ライトデータのエラー検出または訂正のための情報とを含むフレームを受信し、第２フェーズにおいて、マスタ側より当該ライトデータを含むフレームを受信するものである。
【００１５】
この発明に係るシリアル通信システムは、上記マスタ側の通信装置と、上記スレーブ側の通信装置との間でシリアル通信を行うものである。
【発明の効果】
【００１６】
この発明によれば、リード動作時、マスタ側からアドレスの情報を送出し、スレーブ側でそのアドレスからの読み出し処理をこのフレームの最終ビットまでに行ったうえエラー検出または訂正のための情報を求め、全二重通信を活用して同一フレーム中にマスタ側に返送し、次のフレームにて先に読み出したデータをマスタ側に送出するようにしたので、２フレームの通信時間でリードデータのエラー検出・訂正情報を含んだ通信を完了させることができる。従って、従来の３フレームから２フレームに削減して１フレーム分の通信レイテンシの短縮および通信帯域の増強を可能とした、通信信頼性の高いシリアル通信方法、通信装置、およびシリアル通信システムを提供することができる。
【００１７】
また、この発明によれば、ライト動作時、マスタ側からライトデータのアドレスとエラー検出または訂正のための情報とを先に送出し次のフレームでライトデータを送出するようにしたので、スレーブ側ではライトデータを受信すると受信済みのエラー検出または訂正のための情報を用いてエラー検出処理を行ってその結果を同一フレーム中にマスタ側に返送することができるようになり、２フレームの通信時間でライトデータのエラー検出・訂正情報を含んだ通信を完了させることができる。従って、従来の３フレームから２フレームに削減して１フレーム分の通信レイテンシの短縮および通信帯域の増強を可能とした、通信信頼性の高いシリアル通信方法、通信装置、およびシリアル通信システムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】この発明の実施の形態１に係るシリアル通信システムの構成を示すブロック図である。
【図２】実施の形態１に係るシリアル通信システムの通信フレーム構成を説明する図である。
【図３】実施の形態１に係るスレーブ装置のタイミングチャートであり、ライト動作を示す。
【図４】実施の形態１に係るスレーブ装置のタイミングチャートであり、リード動作を示す。
【図５】実施の形態１に係るスレーブ装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１９】
実施の形態１．
図１は、本実施の形態１に係るシリアル通信システムの構成を示すブロック図である。図示例のシリアル通信システムは、マスタ装置１００とスレーブ装置２００を備え、これらマスタ装置１００とスレーブ装置２００との間がシリアルクロック入力用のシリアルクロックライン（ＳＣＬＫ端子）および２本のシリアルデータライン（データ入力用のＳＤＩ端子とデータ出力用のＳＤＯ端子）の合計３ラインで接続されて、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｒｅｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）を利用した全二重通信を行う。
【００２０】
以下では、マスタ装置１００に８ビットマイコンを用い、この仕様に合わせて通信単位（フレーム）も８ビットとする。スレーブ装置２００は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの周辺デバイスとする。
また、１通信単位（１フレーム）で構成された、以下の３つのフェーズを定義する。各フェーズの詳細は後述する。
（１）Ａｄｄｒｅｓｓ  ｓｅｔ  ｐｈａｓｅ（ＡＳフェーズ）
（２）Ｗｒｉｔｅ  ｄａｔａ  ｐｈａｓｅ（ＷＤフェーズ）
（３）Ｒｅａｄ  ｄａｔａ  ｐｈａｓｅ（ＲＤフェーズ）
また、マスタ装置１００からスレーブ装置２００のレジスタ（不図示）へのリード／ライト動作は、ＡＳフェーズ＋ＲＤフェーズの２フェーズ動作、またはＡＳフェーズ＋ＷＤフェーズの２フェーズ動作によって実現する。よって、２フェーズ動作には、８ビットの通信２回分（即ち、２フレーム分）の通信時間を要することになる。
【００２１】
マスタ装置１００は、スレーブ装置２００との間でシリアル通信を行うシリアル通信部１１０と、マイコンコアであるマスタ装置主要処理部１２０と、スレーブ装置２００との間で通信を同期するためのクロック信号を生成するクロック生成部１３０とを備える。マスタ側のシリアル通信部１１０は、ＳＰＩの全二重通信を行う通信回路であり、クロック生成部１３０から出力されるクロック信号に同期したタイミングで動作するシフトレジスタ１１１を備える。なお、シリアル通信部１１０とマスタ装置主要処理部１２０との間のデータのやり取りは、内部バスインタフェース（不図示）を介して行ってもよい。
【００２２】
シフトレジスタ１１１は、マスタ装置主要処理部１２０側から入力されるパラレルデータ（アドレス、Ｒ／Ｗ制御情報、ライトデータなど）を格納し、シリアルデータに変換して、ＳＤＯ端子から１ビットずつ出力する。また、シフトレジスタ１１１は、ＳＤＩ端子から入力されるシリアルデータ（リードデータなど）を格納して、パラレルデータに変換して、マスタ装置主要処理部１２０へ出力する。
マスタ装置主要処理部１２０は、スレーブ装置２００へ送信するデータのパリティを計算してシフトレジスタ１１１へ出力すると共に、スレーブ装置２００から受信したデータに含まれるパリティを取得してパリティチェックを行う。
【００２３】
スレーブ装置２００は、マスタ装置１００との間でシリアル通信を行うシリアル通信部２１０と、マイコンコアであるスレーブ装置主要処理部２２０とを備える。スレーブ側のシリアル通信部２１０は、ＳＰＩの全二重通信を行う通信回路であり、マスタ側のシリアル通信部１１０から入力されるクロック信号に同期したタイミングで動作する受信シフトレジスタ２１１、送信データセレクタ２１２および状態遷移制御部２１３を備える。なお、シリアル通信部２１０とスレーブ装置主要処理部２２０との間のデータのやり取りは、内部バスインタフェース（不図示）を介して行ってもよい。
【００２４】
受信シフトレジスタ２１１は、ＳＤＩ端子から入力されるシリアルデータ（アドレス、Ｒ／Ｗ制御情報、ライトデータ、パリティなど）を格納し、パラレルデータに変換して、スレーブ装置主要処理部２２０へ出力する。送信データセレクタ２１２は、スレーブ装置主要処理部２２０から入力されるパラレルデータ（リードデータなど）、受信シフトレジスタ２１１の格納するデータ、およびスレーブ装置主要処理部２２０から入力されるパリティチェック結果のうちから、状態遷移制御部２１３の選択信号に従ったデータを選択取得し、シリアルデータに変換して、ＳＤＯ端子から１ビットずつ出力する。
スレーブ装置主要処理部２２０は、マスタ装置１００へ送信するデータのパリティを計算して送信データセレクタ２１２へ出力すると共に、マスタ装置１００から受信したデータに含まれるパリティを取得してパリティチェックを行う。
状態遷移制御部２１３は、ＳＤＩ端子から入力される各ビットのデータに基づいて、リード／ライト動作およびフェーズ種別を判定して、各ビットについて予め定められた選択信号（アドレス情報またはライト情報）を送信データセレクタ２１２およびスレーブ装置主要処理部２２０に出力する。
【００２５】
（１）ＡＳフェーズ
図２（ａ）は、ＡＳフェーズのフレーム構成を説明する図である。また、図３および図４は、スレーブ装置２００のタイミングチャートであり、図３はライト動作時のＡＳフェーズとＷＤフェーズ、図４はリード動作時のＡＳフェーズとＲＤフェーズを示す。なお、図３に示すように、スレーブ装置２００は、ＳＣＬＫ端子から入力されるクロック信号に同期し、ＳＤＩ端子の信号をクロック信号の立下りで検出し、かつ、クロック信号の立下りでＳＤＯ端子から出力する。一方、マスタ装置１００はＳＤＩ端子の信号を、図３および図４に破線で示すタイミングで検出する。
【００２６】
ＡＳフェーズにおいて、マスタ側のＳＤＯ端子からスレーブ側のＳＤＩ端子へビット０〜７の順にデータが送信される。ビット０はスタートビット（値は０とする）である。ビット１〜４は、リード／ライト動作対象のレジスタのアドレス（４ビット）である。ビット５は、リード／ライト動作のいずれかを指定するＲ／Ｗ制御情報であり、リード動作なら１、ライト動作なら０とする。ビット６は、ＡＳフェーズの上位５ビット（アドレス４ビットとＲ／Ｗ制御情報１ビット）のＡＳ用パリティ（ここではｏｄｄにする）であり、アドレス要求が正しいかどうかスレーブ側でチェックするために用いる情報である。ビット７は、ライト動作時にＷＤフェーズで送信するライトデータ（８ビット）のＷＤ用パリティ（ここではｏｄｄにする）であり、スレーブ側で受信したライトデータが正しいかどうかチェックするために用いる情報である。なお、本実施の形態１では、ＷＤフェーズに先行するＡＳフェーズでＷＤ用パリティを事前送信する。一方、リード動作時のＡＳフェーズではパリティの送信は不要である。
【００２７】
マスタ側からスレーブ側への送信と同時に、スレーブ側のＳＤＯ端子からマスタ側のＳＤＩ端子へもビット０〜７の順にデータが送信される。ビット０〜５は、どのような値であってもよく、例えばダミーデータとして前フェーズでスレーブ側が受信した上位６ビットをそのまま返送する。ビット６は、リード動作時にＲＤフェーズで送信するリードデータ（８ビット）のＲＤ用パリティであり、このＡＳフェーズのビット５のサイクルでリードデータを読み出して求めたものである。なお、本実施の形態１では、ＲＤフェーズに先行するＡＳフェーズでＲＤ用パリティを事前送信する。一方、ライト動作時のＡＳフェーズではパリティの送信は不要である。ビット７は、スレーブ側で受信したアドレスのパリティチェック結果を示す情報であり、このＡＳフェーズで受信したアドレスとＲ／Ｗ制御情報を、同じくこのＡＳフェーズで受信したＡＳ用パリティを用いて、ビット５のサイクルでパリティチェック（エラーがなければ１）したものである。
【００２８】
なお、ＡＳフェーズにおいてマスタ側からスレーブ側へアドレス等を送信し、スレーブ側でこのアドレス等のパリティチェックを行って返送することになるが、アドレス等はフレームの先頭ビット側に詰めておくので、スレーブ側ではアドレスを受信完了した時点でそのアドレスのデータをスレーブ装置主要処理部２２０から先行して読み出し（図４に実線の矢印で示したタイミング）、パリティチェックして同じフェーズ内で結果を返送することが可能となる。詳細は後述する。
【００２９】
（２）ＷＤフェーズ
図２（ｂ）は、ＷＤフェーズのフレーム構成を説明する図である。
ＡＳフェーズに続くＷＤフェーズにおいて、マスタ側のＳＤＯ端子からスレーブ側のＳＤＩ端子へビット０〜７の順にデータが送信される。ビット０〜７は、先のＡＳフェーズで指定したアドレスに書き込むためのライトデータ（８ビット）である。
マスタ側からスレーブ側への送信と同時に、スレーブ側のＳＤＯ端子からマスタ側のＳＤＩ端子へもビット０〜７の順にデータが送信される。ただし、ビット０〜５はどのような値であってもよく、例えばダミーデータとして前フェーズでスレーブ側が受信した上位７ビットをそのまま返送する。ビット７は、スレーブ側で受信したライトデータのパリティチェック結果を示す情報であり、このＷＤフェーズで受信したライトデータを、先のＡＳフェーズで受信したＷＤ用パリティを用いて、ビット７のサイクルでパリティチェック（エラーがなければ１）したものである。
【００３０】
（３）ＲＤフェーズ
図２（ｃ）は、ＲＤフェーズのフレーム構成を説明する図である。
ＡＳフェーズに続くＲＤフェーズにおいて、マスタ側のＳＤＯ端子からスレーブ側のＳＤＩ端子へビット０〜７の順にデータが送信される。ただし、ビット０〜７は、どのような値であってもよい。
マスタ側からスレーブ側への送信と同時に、スレーブ側のＳＤＯ端子からマスタ側のＳＤＩ端子へもビット０〜７の順にデータが送信される。ビット０〜７は、先のＡＳフェーズで指定されたアドレスのレジスタから読み出したリードデータ（８ビット）である。
【００３１】
図１に示すマスタ装置１００において、シリアル通信部１１０は、従来のＳＰＩ通信に必要なハードウェア構成と同じでよい。ただし、従来のＳＰＩ通信とはソフトウェア上の処理が異なる。従来のＳＰＩ通信では、先立って説明したように最初のフレームでアドレスとＲ／Ｗ制御情報を送信するのに対し、本実施の形態１ではＡＳ用パリティとＷＤ用パリティを求めて、最初のフレーム（ＡＳフェーズ）でアドレスとＲ／Ｗ制御情報に加えてＡＳ用パリティとＷＤ用パリティも送信する。
【００３２】
他方のスレーブ装置２００において、シリアル通信部２１０は、従来のＳＰＩ通信に必要なハードウェア構成に加え、新たに送信データセレクタ２１２と状態遷移制御部２１３とを備えている。
以下、これら送信データセレクタ２１２と状態遷移制御部２１３を備えたスレーブ装置２００の動作を中心にして、マスタ装置１００を含めたシリアル通信システム全体の動作を説明する。
【００３３】
先ずライト動作を説明し、続いてリード動作を説明する。
ライト動作時のＡＳフェーズにおいて、マスタ装置１００では、マスタ装置主要処理部１２０においてライトデータのアドレスとＲ／Ｗ制御情報とからＡＳ用パリティを計算して、シフトレジスタ１１１へ出力すると共に、ライトデータからＷＤ用パリティを計算してシフトレジスタ１１１へ出力する。
シフトレジスタ１１１は、マスタ装置主要処理部１２０から出力されたアドレスおよびＲ／Ｗ制御情報、ならびにＡＳ用パリティおよびＷＤ用パリティをビット１〜７に格納する。ビット０はスタートビットである。
そして、シリアル通信部１１０は、クロック生成部１３０が生成するクロック信号をＳＣＬＫ端子から出力すると共に、シフトレジスタ１１１に格納された８ビットデータをクロック信号に同期してＳＤＯ端子から出力する（ＡＳフェーズ）。
【００３４】
図５は、スレーブ装置２００の動作を示すフローチャートである。ステップＳＴ１〜ＳＴ８は受信側の処理、ステップＳＴ１１〜ＳＴ１８は送信側の処理であり、マスタ装置１００とスレーブ装置２００の送受信はＳＣＬＫ端子のクロック信号に同期して行われる。また、ステップＳＴ２１〜ＳＴ２４の処理は各種の内部処理であり、状態遷移制御部２１３の指示で行われる。
【００３５】
スレーブ装置２００のシリアル通信部２１０では、状態遷移制御部２１３がＳＤＩ端子から入力されるビット０のスタートビットを検出し（ステップＳＴ１“ＹＥＳ”）、ＡＳフェーズの開始を判定する。そして、受信したビット０のデータは受信シフトレジスタ２１１に格納する。
他方、スタートビットを検出した状態遷移制御部２１３は、送信データセレクタ２１２へ選択信号を出力し、送信データセレクタ２１２が受信シフトレジスタ２１１に格納されていた前回受信データの上位１ビットを選択して、ダミーデータとしてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１１）。
【００３６】
シリアル通信部２１０は、マスタ装置１００からビット１〜４のアドレスとビット５のＲ／Ｗ制御情報を受信して、受信シフトレジスタ２１１に格納する（ステップＳＴ２，ＳＴ３）。
他方、状態遷移制御部２１３が引き続き送信データセレクタ２１２へ選択信号を出力し、送信データセレクタ２１２が受信シフトレジスタ２１１に格納されていた前回受信データのビット１〜５を選択して、ダミーデータとしてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１２）。
さらに、状態遷移制御部２１３は、受信シフトレジスタ２１１に格納されたビット１〜４のアドレスを、先行してスレーブ装置主要処理部２２０へ通知し、スレーブ装置主要処理部２２０はＡＳフェーズ中にリードデータを読み出してＲＤ用パリティを計算する（ステップＴＴ２１，ＳＴ２２）。
【００３７】
シリアル通信部２１０は、マスタ装置１００からビット６のＡＳ用パリティを受信して、受信シフトレジスタ２１１に格納する（ステップＳＴ４）。
他方、状態遷移制御部２１３はＲ／Ｗ制御情報に従ってライトかリードかを判定し、ライトの場合は引き続き送信データセレクタ２１２へ選択信号を出力し、送信データセレクタ２１２が受信シフトレジスタ２１１に格納されていた前回受信データのビット６を選択して、ダミーデータとしてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１３）。リードの場合の処理は後述する。なお、ライトの場合はステップＳＴ２２で求めたＲＤ用パリティは不要となる。
また、スレーブ装置主要処理部２２０が、受信シフトレジスタ２１１からデータを取得し、ＡＳ用パリティを用いて、アドレスとＲ／Ｗ制御情報のパリティチェックを行う（ステップＳＴ２３）。
【００３８】
シリアル通信部２１０は、マスタ装置１００からビット７のＷＤ用パリティを受信して、受信シフトレジスタ２１１に格納する（ステップＳＴ５）。
他方、状態遷移制御部２１３は送信データセレクタ２１２に対してスレーブ装置主要処理部２２０からアドレスのパリティチェック結果を取得するよう選択信号を出力する。送信データセレクタ２１２は、ステップＳＴ２３でスレーブ装置主要処理部２２０の計算したアドレスのパリティチェック結果を取得して、ビット７としてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１４）。
【００３９】
一方、マスタ装置１００では、シフトレジスタ１１１からＳＤＯ端子へ、アドレス等のデータを送信すると共に、ＳＤＩ端子から上位７ビットのダミーデータと、アドレスのパリティチェック結果とを受信して、シフトレジスタ１１１へ格納していく（ＡＳフェーズ）。格納された８ビットデータはマスタ装置主要処理部１２０へ出力される。
続いてマスタ装置主要処理部１２０からシフトレジスタ１１１へ８ビットのライトデータが出力され、シフトレジスタ１１１がＳＤＯ端子から出力する（ＷＤフェーズ）。
【００４０】
ＲＤフェーズにおいて、スレーブ装置２００では、状態遷移制御部２１３が受信シフトレジスタ２１１に格納されたＲ／Ｗ制御情報に従ってリードかライトかを判定し、判定結果をマスタ装置主要処理部１２０へ出力する（ステップＳＴ６）。今回はライトのため（ステップＳＴ６“Ｗｒｉｔｅ”）、ＳＤＩ端子からライトデータを受信して受信シフトレジスタ２１１へ格納していき、８ビットのライトデータをスレーブ装置主要処理部２２０へ出力する。スレーブ装置主要処理部２２０はＡＳフェーズで指定されたアドレスにライトデータを書き込む（ステップＳＴ７）。
また、スレーブ装置主要処理部２２０は、受信シフトレジスタ２１１に既に格納された７ビット分とこのクロックで受信した１ビット分の計８ビットのライトデータについて、ＡＳフェーズのステップＳＴ５にて取得しておいたＷＤ用パリティを用いてパリティチェックする（ステップＳＴ２４）。
【００４１】
なお、シリアル通信部２１０は、ステップＳＴ２３のパリティチェック結果がエラーであって正しいアドレス要求を受信できなかったと判断した場合、および、ステップＳＴ２４のパリティチェック結果がエラーであって正しいライトデータを受信できなかったと判断した場合のいずれか一方、または両方において、スレーブ装置主要処理部２２０への書き込み要求を中止して、レジスタのデータを保護する構成にしてもよい。
【００４２】
また、状態遷移制御部２１３はＡＳフェーズからＷＤフェーズに遷移したことを判定して（ステップＳＴ１５“Ｗｒｉｔｅ”）、送信データセレクタ２１２へ選択信号を出力し、送信データセレクタ２１２が受信シフトレジスタ２１１に格納されていた前回受信データの上位７ビットを選択して、ダミーデータとしてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１６）。さらに状態遷移制御部２１３は、送信データセレクタ２１２に対してスレーブ装置主要処理部２２０からライトデータのパリティチェック結果を取得するよう選択信号を出力する。送信データセレクタ２１２は、ステップＳＴ２４でスレーブ装置主要処理部２２０が計算したライトデータのパリティチェック結果を取得して、ビット７としてＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１７）。
【００４３】
一方、マスタ装置１００では、シフトレジスタ１１１からＳＤＯ端子へ、ライトデータを送信すると共に、ＳＤＩ端子から上位７ビットのダミーデータと、ライトデータのパリティチェック結果とを受信して、シフトレジスタ１１１へ格納していく（ＷＤフェーズ）。なお、マスタ装置１００はパリティチェック結果に応じて、ライト動作を繰り返すなど所定の対応を行う。
【００４４】
次に、リード動作を説明する。
リード動作時のＡＳフェーズにおいて、マスタ装置１００では、マスタ装置主要処理部１２０においてリードデータのアドレスとＲ／Ｗ制御情報とから、ライト動作のＡＳフェーズと同様にＡＳ用パリティを計算してシフトレジスタ１１１へ出力する。
シフトレジスタ１１１は、マスタ装置主要処理部１２０から出力されたアドレスおよびＲ／Ｗ制御情報、ならびにＡＳ用パリティをビット１〜６に格納する。ビット０はスタートビット、ビット７は不要である。
そして、シリアル通信部１１０は、クロック信号に同期して、シフトレジスタ１１１に格納されたＡＳフェーズのフレームを出力する。
【００４５】
スレーブ装置２００のシリアル通信部２１０は、上記同様にステップＳＴ１〜ＳＴ５，ＳＴ１１，ＳＴ１２，ＳＴ２３を行う。ここではライト動作時とは処理の異なるステップを中心に説明する。
リード動作時のＡＳフェーズでは、ステップＳＴ２においてビット１〜４のアドレスを受信すると、続くＲ／Ｗ制御情報およびＡＳ用パリティを受信する間に、状態遷移制御部２１３の通知を受けてスレーブ装置主要処理部２２０がこのアドレスのリードデータ取得し（ステップＳＴ２１）、パリティを計算する（ステップＳＴ２２）。
【００４６】
続くステップＳＴ１３において、状態遷移制御部２１３はＲ／Ｗ制御情報がリードなので、リードの場合は送信データセレクタ２１２に対してスレーブ装置主要処理部２２０からＲＤ用パリティを取得するよう選択信号を出力する。そして、送信データセレクタ２１２が、ステップＳＴ２２でスレーブ装置主要処理部２２０が計算したＲＤ用パリティを取得して、ビット６としてＳＤＯ端子からマスタ装置１００へ送信する。
【００４７】
一方、マスタ装置１００では、シフトレジスタ１１１からＳＤＯ端子へ、アドレス等のデータを送信すると共に、ＳＤＩ端子からシフトレジスタ１１１へ上位６ビットのダミーデータと、ＲＤ用パリティと、アドレスのパリティチェック結果とを受信して格納していく。格納された８ビットデータはマスタ装置主要処理部１２０へ出力される。
続いてシフトレジスタ１１１は、クロック信号に同期してＳＤＯ端子からダミーデータを出力する（ＲＤフェーズ）。
【００４８】
ＲＤフェーズにおいて、スレーブ装置２００では、状態遷移制御部２１３が受信シフトレジスタ２１１に格納されたＲ／Ｗ制御情報に従ってリードかライトかを判定する（ステップＳＴ６）。今回はリードのため（ステップＳＴ６“Ｒｅａｄ”）、ＳＤＩ端子からダミーデータを受信して受信シフトレジスタ２１１へ格納していく（ステップＳＴ８）。
また、状態遷移制御部２１３はＡＳフェーズからＲＤフェーズに遷移したことを判定して（ステップＳＴ１５“Ｒｅａｄ”）、送信データセレクタ２１２へ選択信号を出力し、送信データセレクタ２１２がスレーブ装置主要処理部２２０から出力されるリードデータをＳＤＯ端子からマスタ装置１００へ送信する（ステップＳＴ１８）。
【００４９】
一方、マスタ装置１００のマスタ装置主要処理部１２０は、先のＡＳフェーズで事前入手していたＲＤ用パリティを用いて、今回のＲＤフェーズでＳＤＩ端子から入力されシフトレジスタ１１１に格納された８ビットのリードデータをパリティチェックする（ＲＤフェーズ）。なお、マスタ装置１００はパリティチェック結果に応じて、リード動作を繰り返すなど所定の対応を行う。
【００５０】
以上より、実施の形態１によれば、同期式の全二重シリアル通信を行うシリアル通信システムのリード動作時は、ＡＳフェーズにおいて、マスタ装置１００からスレーブ装置２００へリードデータのアドレスを含めたフレームを送信し、かつ、スレーブ装置２００ではアドレスを受信した時点でリードデータを読み出してＲＤ用パリティを求めて同一フレーム中にマスタ装置１００へ返送し、続くＲＤフェーズにおいて、スレーブ装置２００からマスタ装置１００へＡＳフェーズで読み出したリードデータを含めたフレームを送信するように構成した。このため、ＲＤフェーズより先にＲＤ用パリティを送出するようにして、ＡＳフェーズとＲＤフェーズの２フレームの通信時間でＲＤ用パリティ（エラー検出のための情報）を含んだ通信を完了させることができる。よって、パリティだけのフレームを別途通信することなくマスタ側で即座にパリティチェックを開始することができる。また、通信信頼性も高めることができる。従って、従来の３フレームから２フレームに削減して１フレーム分の通信レイテンシの短縮（最大約３割の短縮）および通信帯域の増強が可能となり、さらに、リアルタイム処理が重要となるアプリケーションで求められる応答時間を短縮することができる。
即ち、仮に通信速度が９６００ｂｐｓ、マイコンコアの動作周波数が４ＭＨｚと仮定すれば、１ビットの通信パルス幅は１ｓｅｃ／９６００＝約１０４μｓｅｃであり、マイコンコアの動作周期は１ｓｅｃ／４，０００，０００＝２５０ｎｓｅｃ（０．２５μｓｅｃ）である。
１バイト＝８ビットのデータフレームを送受信するにあたって、従来手法によれば、その通信時間は１０４μｓｅｃ×８ビット×３フレーム＝２４９６μｓｅｃと求めることができるが、本発明での通信時間は１０４μｓｅｃ×８ビット×２フレーム＝１６６４μｓｅｃとなるため、差し引き２４９６−１６６４＝８３２μｓｅｃの通信レイテンシの短縮が可能となる。
動作周波数４ＭＨｚのマイコンコアにおいて、この差は８３２μｓｅｃ／２５０ｎｓｅｃ＝３３２８サイクルに相当することになる。
つまり、本発明により、従来方式に比較して、通信レイテンシの短縮により、通信完了後に実行すべき最大３３２８命令分もの処理を先行して実行可能となる。
【００５１】
また、実施の形態１によれば、マスタ装置１００からスレーブ装置２００へ送信するＡＳフェーズにおいて、パリティより先出側にアドレスを詰めたフレームを送信するようにしたので、このＡＳフェーズ中に、スレーブ装置２００でアドレスを受信した時点でスレーブ装置主要処理部２２０がリードデータを先行して読み出してＲＤ用パリティを求めて返送することができる。
【００５２】
また、実施の形態１によれば、同期式の全二重シリアル通信を行うシリアル通信システムのライト動作時は、ＡＳフェーズにおいて、マスタ装置１００からスレーブ装置２００へライトデータのアドレスと、ＷＤ用パリティとを含めたフレームを送信し、続くＷＤフェーズにおいて、マスタ装置１００からスレーブ装置２００へライトデータを含めたフレームを送信するように構成した。このため、ライト動作においてもマスタ側からＷＤフェーズより先のＡＳフェーズでＷＤ用パリティ（エラー検出のための情報）を送出し、続くＷＤフェーズでライトデータを送出して同一フレーム中にパリティチェック結果を受け取るようにして、ＡＳフェーズとＷＤフェーズの２フレームの通信時間でＷＤ用パリティのパリティチェック結果を含んだ通信を完了させることができる。よって、通信信頼性を高めることができる。また、従来の３フレームから２フレームに削減して１フレーム分の通信レイテンシの短縮および通信帯域の増強が可能となり、さらに、リアルタイム処理が重要となるアプリケーションで求められる応答時間を短縮することができる。
【００５３】
なお、リード動作時およびライト動作時とも、通信単位であるフレームのビット数は、マスタ装置１００およびスレーブ装置２００のデータビット数と一致するか、またはデータビット数より少ないものとする。
ここで、マスタ装置１００およびスレーブ装置２００のデータビット数というのは、各装置の内部で、１度に処理できるデータの幅をビット数で表したものであり、例えば一度に８ビットのみ演算できるものはデータビット数８ビット、３２ビットの演算ができるものについてはデータビット数３２ビットとなる。
なお、外部データ・バス幅が１６ビットの３２ビット・マイコンなど、入出力ビット数が内部データ・バス幅より少ない製品も存在するが、これらデータビット数については一般に用いられる概念に過ぎないため、説明の詳細は割愛する。
【００５４】
また、ライト動作時は、リード動作時のようなリードデータを先行して読み込み処理する必要がないので、送信データセレクタ２１２および状態遷移制御部２１３を省略することも可能である。その場合、受信シフトレジスタ２１１をシフトレジスタ１１１と同じように使用し、受信したデータをシリアル／パラレル変換してスレーブ装置主要処理部２２０へ出力すると共に、スレーブ装置主要処理部２２０から出力されたデータをパラレル／シリアル変換してマスタ装置１００へ送信すればよい。
【００５５】
なお、ライト動作時は、全二重シリアル通信に限定されるものではなく、半二重または単向のシリアル通信であってもよい。
また、ＡＳフェーズとＷＤフェーズは順番が逆であってもよい。即ち、ライト動作時のマスタ装置１００は、先ずＷＤフェーズにおいて、スレーブ装置２００へ書き込むためのライトデータをマスタ装置主要処理部１２０から受け付けてシフトレジスタ１１１からスレーブ装置２００へ送信し、続くＡＳフェーズにおいて、このライトデータのアドレス、およびマスタ装置主要処理部１２０で求めたＷＤ用パリティを含めたフレームをシフトレジスタ１１１からスレーブ装置２００へ送信するように構成する。他方のスレーブ装置２００は、先ずＷＤフェーズにおいて、スレーブ装置主要処理部２２０に書き込むためのライトデータを含むフレームをマスタ装置１００より受信し、続くＡＳフェーズにおいて、マスタ装置１００よりライトデータのアドレスおよびＷＤ用パリティを含むフレームを受信し、かつ、スレーブ装置主要処理部２２０が、ＡＳフェーズで受信したＷＤ用パリティを用いてＷＤフェーズで受信したライトデータのエラー検出処理を行い、パリティチェック結果を含めたフレームをマスタ装置１００へ送信するように構成する。この場合であっても、２フレームの通信時間でＷＤ用パリティを含んだ信頼性の高い通信を完了させることができる。
なお、通信単位であるフレームのビット数は、マスタ装置１００およびスレーブ装置２００のデータビット数と一致するか、またはデータビット数より少ないものとする。
【００５６】
また、実施の形態１によれば、マスタ装置１００からスレーブ装置２００へ送信するＡＳフェーズにおいて、マスタ装置１００がアドレスと、Ｒ／Ｗ制御情報と、ＡＳ用パリティとを含めたフレームを生成するようにし、特にアドレスはシフトレジスタ１１１の先頭ビット側に詰めるように構成した。このため、このＡＳフレーズ中に、スレーブ装置２００がＡＳ用パリティを用いてアドレスのパリティチェックを行いチェック結果を返送することができる。従って、２フレームの通信時間で、リードデータまたはライトデータのパリティだけでなく、アドレスのパリティを含んだ通信を完了させることができる。これにより、通信時間短縮に加え、通信信頼性の更なる向上を図ることもできる。
【００５７】
また、実施の形態１によれば、スレーブ装置２００は、ＡＳ用パリティを用いたアドレスとＲ／Ｗ制御情報のエラー検出処理においてエラーが検出された場合、およびＷＤ用パリティを用いたライトデータのエラー検出処理においてエラーが検出された場合のいずれか一方、または両方において、このライトデータの書き込みを中止するように構成した。このため、スレーブ装置２００側で誤って受信したライトデータ値の書き込みを防止することにより、誤った設定・制御の発生による、誤動作の発生を防ぐことができる。
【００５８】
なお、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成は、上述した実施の形態の構成に限られるものではなく、本発明の要旨を逸脱しない範囲の設計の変更などがあっても本発明に含まれることは言うまでもない。
例えば、上記実施の形態１では１台のマスタ装置１００と１台のスレーブ装置２００を用いたが、スレーブ装置２００を複数台用いても構わない。
また例えば、マスタ装置１００として汎用マイコンを用いたが、これに限定されるものではなく、スレーブ装置２００をマスタ装置１００として利用してもよい。この構成の場合、クロック生成部１３０を具備したスレーブ装置２００を複数台用意し、そのうちの１台のクロック生成部１３０をアクティブにして他のスレーブ装置２００へクロック信号を送信する等すればよい。
また例えば、アドレス、リードデータおよびライトデータそれぞれのエラー検出処理を行う構成にしたが、これに限定されるものではなく、エラー検出に加えエラー訂正を行う構成にしてもよい。
【００５９】
また、上記実施の形態１では、物理的に実存するクロック信号を伝送するシリアルクロックライン、および当該クロック信号に同期したデータ信号を送受信するシリアルデータラインを用いるものとして説明したが、シリアルクロックラインを通じてクロックの同期を図る必要はなく、送信側のクロックに同期してデータを符号化し、受信側でクロックリカバリ回路などによりデータ信号からクロックを再生して、内部的に同期を図る構成にしても構わない。
また、シリアルデータラインはデータ入力用のＳＤＩ端子とデータ出力用のＳＤＯ端子の２本として説明したが、例えば通信高速化等の目的のため、２本以上のデータラインを用いても同様の技術的思想により本発明を適用しうることを言うまでも無い。
【符号の説明】
【００６０】
１００  マスタ装置
１１０，２１０  シリアル通信部
１１１  シフトレジスタ
１２０  マスタ装置主要処理部
１３０  クロック生成部
２００  スレーブ装置
２１１  受信シフトレジスタ
２１２  送信データセレクタ
２１３  状態遷移制御部
２２０  スレーブ装置主要処理部
【図１】
0005804930.tif 000002
【図２】
0005804930.tif 000003
【図３】
0005804930.tif 000004
【図４】
0005804930.tif 000005
【図５】
0005804930.tif 000006