(57)【特許請求の範囲】
【請求項１】
二つの装置（Ｄ１、ＭＰ、Ｄ２、ＰＣ）間において、論理値Ａのデフォルト値に維持されているクロック線（ＣＫ）と少なくとも一本のデータ線（ＤＴ）とにより、データを伝送する方法であって、
各装置は、Ａと反対の論理値Ｂを表す電位に前記クロック線を拘束することが可能で、
データが送信される際、前記二つの装置はクロック線をＢに拘束し（Ｍ１２、Ｅ１１、Ｍ２１、Ｅ２１）、
データが送信される装置は、該装置が前記データを読み取っていない間はクロック線（ＣＫ）を解放せず（Ｍ２３、Ｅ１４）、
データを送信する装置は、少なくともデータが送信される装置によってクロック線（ＣＫ）が解放される時点（ｔ３、ｔ４）までは、前記データをデータ線（ＤＴ）上に維持する、ことを特徴とする方法。
【請求項２】
前記装置の一方がマスタで、もう一方がスレーブであり、マスタは、データが送信される際に、データが送信される方向に関わらず、最初に前記クロック線をＢに拘束する（Ｍ１２、Ｍ２１）ものであることにおいてスレーブと区別されることを特徴とする請求項１記載の方法。
【請求項３】
マスタがデータをスレーブに送信すべき時、マスタは、前記データをデータ線に出力し（Ｍ１１）、それからクロック線をＢに拘束する（Ｍ１２）ことを特徴とする請求項２記載の方法。
【請求項４】
スレーブが前記マスタからデータを受信すべき時、スレーブはクロック線（Ｅ１０）上において値Ｂを検出し、それからクロック線をＢに拘束し（Ｅ１１）、前記データを読み取る（Ｅ１２）ことを特徴とする請求項３記載の方法。
【請求項５】
スレーブが、データを受信した後にクロック線を解放するために有する時間（Ｅ１３）は、スレーブがクロック線を解放していない間、マスタはいかなる新たなデータも送信しない（Ｍ１０、Ｍ１１）ので、マスタのいかなる動作とも無関係であることを特徴とする請求項４記載の方法。
【請求項６】
マスタがスレーブからデータを受信すべき時、マスタはクロック線をＢに拘束する（Ｍ２１）ことを特徴とする請求項２記載の方法。
【請求項７】
スレーブがマスタにデータを送信すべき時、スレーブはクロック線上において値Ｂを検出し（Ｅ２０）、それからクロック線をＢに拘束し（Ｅ２１）、前記データをデータ線に出力する（Ｅ２２）ことを特徴とする請求項６記載の方法。
【請求項８】
スレーブが、データを送信した後にクロック線を解除するために有する時間（Ｅ２３）は、スレーブがクロック線を解放していない間、マスタは新たなデータの送信を要求するためにクロック線をＢに拘束しない（Ｍ１０）ので、マスタによるいかなる動作とも無関係であることを特徴とする請求項７記載の方法。
【請求項９】
クロック線が論理値Ａを有している時、マスタがクロック線をＢに拘束するために有する時間は、スレーブによるいかなる動作とも無関係である（Ｍ１６、Ｍ２４）ことを特徴とする請求項２ないし８のいずれかに記載の方法。
【請求項１０】
請求項２ないし９のいずれかに記載の方法であって、スレーブに通信インタフェース回路（ＨＷＣ）を備えつけるステップを具備することを特徴とし、前記通信インタフェース回路は、
クロック線がＡからＢに変わると自動的に前記クロック線をＢに拘束するトリガ手段と、
前記トリガ手段にクロック線解放信号を出力するための入力と、
クロック線が前記トリガ手段によってＢに拘束されている時は第１の値を有し、クロック線が該トリガ手段によって解放されている時は第２の値を有する情報信号（ＳＴＳＴＵＳ）を送るための出力と、を具備することを特徴とする方法。
【請求項１１】
請求項１０記載の方法であって、前記通信インタフェース回路に、
少なくとも一つのデータを格納する手段と、
クロック線がＡからＢに変わると自動的に前記データをデータ線に出力する手段と、をさらに備えるステップを具備することを特徴とする方法。
【請求項１２】
Ａ＝１かつＢ＝０であることを特徴とする請求項１ないし１１のいずれかに記載の方法。
【請求項１３】
クロック線（ＣＫ）への接続端子と、データ線（ＤＴ）への少なくとも一つの接続端子と、論理値Ａと反対の論理値を表す電位Ｂに前記クロック線（ＣＫ）を拘束する手段と、を有するマスタタイプのデータ送受信装置（ＭＳＴＲ）であって、データ（Ｂ）が送信される時に、
クロック線が論理値Ａを有することを確認または待機し（Ｍ１０）、
前記データをデータ線に出力し（Ｍ１１）、
前記クロック線をＢに拘束し（Ｍ１２）、
前記クロック線を解放し（Ｍ１３）、
少なくとも、前記クロック線が前記論理値Ａを持つ時点（ｔ３、ｔ４）まで前記データをデータ線上に維持する（Ｍ１４、Ｍ１０）、動作を行う手段を備えることを特徴とする装置。
【請求項１４】
請求項１３記載の装置であって、データが受信される時に、
クロック線が論理値Ａを持つことを確認または待機し（Ｍ２０）、
前記クロック線をＢに拘束し（Ｍ２１）、
データ線上のデータを読み取り（Ｍ２２）、
前記クロック線を解放する（Ｍ２３）、動作を行う手段をさらに備えることを特徴とする装置。
【請求項１５】
請求項１３または１４に記載のマスタタイプ装置（ＭＳＴＲ）と通信するようになされたスレーブタイプのデータ送受信装置（ＳＬＶ、ＳＬＶ+ＨＷＣ）であって、クロック線（ＣＫ）への接続端子（ＣＫＰ）と、データ線（ＤＴ）への少なくとも一つの接続端子（ＣＤＴ）と、論理値Ａと反対の論理値を表す電位Ｂに前記クロック線を拘束する手段と、を備え、データ（Ｂ）が受信される時に、
クロック線におけるＡからＢへの変化を検出し（Ｅ１０）、
前記クロック線をＢに拘束し（Ｅ１１）、
データ線上のデータを読み取り（Ｅ１２）、
前記クロック線を解放する（Ｅ１４）、動作を行う手段を備えることを特徴とする装置。
【請求項１６】
請求項１５記載の装置であって、データが送信される時に、
クロック線におけるＡからＢへの変化を検出し（Ｅ２０）、
前記クロック線をＢに拘束し（Ｅ２１）、
データ線にデータを出力し（Ｅ２２）、
前記クロック線を解放する（Ｅ２４）、動作を行う手段をさらに備えることを特徴とする装置。
【請求項１７】
同期データ伝送システムであって、クロック線（ＣＫ）と少なくとも一本のデータ線（ＤＴ）によって、請求項１５または１６記載のスレーブタイプ装置（ＳＬＶ）に接続されている、請求項１３また１４記載のマスタタイプ装置（ＭＳＴＲ）を備えることを特徴とする同期データ伝送システム。
【請求項１８】
クロック線（ＣＫ）と少なくとも一本のデータ線（ＤＴ）によって、請求項１３または１４記載のマスタタイプ装置（ＭＳＴＲ）に接続されている、または接続されるようになされたスレーブタイプの通信インタフェース回路（ＨＷＣ）であって、
論理値Ａと反対の論理値を表す電位Ｂにクロック線を拘束する手段と、
前記クロック線がＡからＢに変化すると自動的にクロック線をＢに拘束するトリガ手段（ＦＤ１、ＦＤ２）と、
クロック線解放信号を前記トリガ手段に出力するための入力（ＡＣＫ）と、
前記トリガ手段によってクロック線がＢに拘束されている時は第１の値を有し、該トリガ手段によってクロック線が解放されている時は第２の値を有する情報信号（ＳＴＡＴＵＳ）を送るための出力と、を備えることを特徴とする通信インタフェース回路。
【請求項１９】
請求項１８記載の通信インタフェース回路であって、
少なくとも一つのデータを格納するための手段（ＦＤ４）と、
前記クロック線がＡからＢに変わると自動的に前記データをデータ線に出力する手段（ＦＤ３、ＦＤ４）と、をさらに備えることを特徴とする通信インターフェース回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタルシステム間のデータ伝送に関し、特にマイクロプロセッサとマイクロコンピュータ間、または二つのマイクロプロセッサ間のデータ伝送に関するものである。
【０００２】
【従来の技術】
デジタルコンピュータ時代の到来以来、デジタルデータ伝送方法は、コンピュータシステムの実装において極めて重要になってきており、それらに対する様々な開発が行われてきた。一般に、データ伝送方法は、「物理層」とも呼ばれる物理リンクに常に基くもので、これにより電気信号の形式および継続時間を定義する所定のプロトコルに従った、ライン上の二つのノード間における電気信号の物理的な伝送が保証される。このプロトコルは、物理層と組み合わされ、通信プロトコル、すなわちデータリンク層によって完成されるもので、これにより通信装置間で特定のデータの送受信および同期規則を割り当てることによって、衝突を避けつつデータ転送を管理することができる。そして、この第２レベルのプロトコルは、物理層を介して送信されるコマンドによって構成される第３レベルのプロトコルによって完成され、各コマンドは、そのフォーマット、内容、および指示が予め定義された規則に適合しているビット列によって構成されている。コンピュータネットワークやデジタル電話通信ネットワークのような非常に高レベルのネットワークでは、これらの第１レベル以外に、一緒にネットワークの一貫性を保証する重要な階層のプロトコルがある。
【０００３】
本発明は、データリンク層レベルに位置する低レベルのデータ伝送方法に関するもので、例えばマイクロコンピュータを使用してマイクロプロセッサ上で試験または保守動作を行うために、マイクロコンピュータとマイクロプロセッサ間の通信、または例えば単一のプリント回路基盤上に配置された二つのマイクロプロセッサなどの、二つのマイクロプロセッサ間の通信などの産業上の適用を意図したものである。
【０００４】
この適用の分野において最もよく使用されているデータ伝送方法には、同期方式と非同期方式の両方がある。同期方式は、マスタ装置によって送信されるクロック信号を伝達するクロック線が存在することで非同期方式と区別され、それ以外の一つまたは複数の装置は、データを送受信するために該クロック信号の同期をとる。同期方式の利点は、共通のクロック信号によって行われる同期により、非常に長いビット列を送信できるようになることである。一方、この方式では、前記の装置がそれらの動作の同期をとれるようにする様々な制御信号（ＲＸ、ＴＸ、ＲＳ、ＴＳ…）を伝えるために、いくつかの線が必要である。
【０００５】
【発明が解決しようとする課題】
さらに詳細には、同期通信方法は、上述した適用に対して３つの主な欠点がある。一方では、この方法は、制御信号を送信できるようにするために、いくつかのマイクロプロセッサ入力／出力を保有する必要がある。もう一方では、この方法は、マイクロプロセッサに、いわゆるＵＳＡＲＴ回路（Universal Synchronous Asynchronous Receiver Transmitter）などの、通信プロトコルを管理する特定のインタフェース回路を備える必要があり、その価格およびサイズがかなりのものになる。最後に、この方法では、互換性をもつように通信すべき二つの装置の各内部クロックが必要である。さらに、前記装置の一方は、マルチタスクモードで動作することができ、もう一方の装置に指示された時にデータを送受信するために利用可能なものではない。
【０００６】
非同期データ伝送方式は、二本の線のみを用いて実現することができるという点において有利であるが、この方法もまた、通信プロトコルを管理し、送受信されるビット列を格納するためにバッファレジスタを含む、ＵＡＲＴ回路（Universal Asynchronous Receiver Transmitter）などの特定の通信インタフェース回路が必要である。所定の周波数で動作する装置は、さらに高い周波数で動作する装置によって送信される非同期データを受信できないので、非同期通信はまた、調整されたクロック周波数も必要とする。
【０００７】
従って、本発明の一つの目的は、同期タイプのもので、非常に異なるクロック周波数を有する二つの装置が、適用可能である場合に、通信できるようにするデータ伝送方法を提供することである。
【０００８】
本発明の他の目的は、シリアルデータ伝送のために、二本の線のみにより実現できるような同期方式を提供することである。
【０００９】
【課題を解決するための手段】
この目的は、二つの装置間で、論理値Ａのデフォルト値に維持されているクロック線と少なくとも一本のデータ線により、データを伝送するための方法であって、各装置は、Ａと反対の論理値Ｂを表す電位に前記クロック線を拘束することが可能で、データが送信される際、前記二つの装置はクロック線をＢに拘束し、データが送信される装置は、該装置が前記データを読み取っていない間はクロック線を解放せず、データを送信する装置は、少なくともデータが送信される装置によってクロック線が解放される時点までは、前記データをデータ線上に維持することを特徴とする方法を提供することによって達成される。
【００１０】
ある実施形態によれば、前記装置の一方はマスタで、もう一方はスレーブであり、マスタは、データが送信される際に、データが送信される方向に関わらず、最初に前記クロック線をＢに拘束するものであることにおいてスレーブと区別される。
【００１１】
ある実施形態によれば、マスタがデータをスレーブに送信すべき時、マスタは、前記データをデータ線に出力し、それからクロック線をＢに拘束する。
【００１２】
ある実施形態によれば、スレーブがマスタからデータを受信すべき時、スレーブは、前記クロック線上において値Ｂを検出し、それからクロック線をＢに拘束し、前記データを読み取る。
【００１３】
ある実施形態によれば、スレーブが、データを受信した後にクロック線を解放するために有する時間は、スレーブがクロック線を解放していない間、マスタはいかなる新たなデータも送信しないので、マスタのいかなる動作とも無関係である。
【００１４】
ある実施形態によれば、マスタがスレーブからデータを受信すべき時、マスタはクロック線をＢに拘束する。
【００１５】
ある実施形態によれば、スレーブがマスタにデータを送信すべき時、スレーブは、クロック線上において値Ｂを検出し、それからクロック線をＢに拘束し、前記データをデータ線に出力する。
【００１６】
ある実施形態によれば、スレーブが、データを送信した後でクロック線を解放するために有する時間は、スレーブがクロック線を解放していない間、マスタは新たなデータの送信を要求するためにクロック線をＢに拘束しないので、マスタによるいかなる動作とも無関係である。
【００１７】
ある実施形態によれば、クロック線が論理値Ａを有している時、マスタがクロック線をＢに拘束するために有する時間は、スレーブによるいかなる動作とも無関係である。
【００１８】
ある実施形態によれば、前記方法は、クロック線がＡからＢに変わると自動的に前記クロック線をＢに拘束するトリガ手段と、前記トリガ手段にクロック線解放信号を出力するための入力と、クロック線が前記トリガ手段によってＢに拘束されている時は第１の値を有し、クロック線がトリガ手段によって解放されている時は第２の値を有する情報信号を送るための出力とを備える通信インタフェース回路を、前記スレーブに備えつけるステップを含む。
【００１９】
ある実施形態によれば、前記方法は、前記通信インタフェース回路に、少なくとも一つのデータを格納する手段と、クロック線がＡからＢに変わると自動的に前記データをデータ線に出力する手段とをさらに備えるステップを含む。
【００２０】
ある実施形態によれば、Ａ＝１かつＢ＝０である。
【００２１】
本発明はまた、クロック線への接続端子と、データ線への少なくとも一つの接続端子と、論理値Ａと反対の論理値を表す電位Ｂに前記クロック線を拘束する手段と、データが送信される時に、クロック線が前記論理値Ａを持つことを確認または待機し、前記データをデータ線に出力し、前記クロック線をＢに拘束し、それからクロック線を解放し、少なくとも前記クロック線が論理値Ａを持つ時点まで前記データをデータ線上に維持する動作を行う手段とを含む、マスタタイプの送受信装置に関するものである。
【００２２】
ある実施形態によれば、前記装置は、データが受信される時に、クロック線が論理値Ａを持つことを確認または待機し、前記クロック線をＢに拘束し、データ線上のデータを読み取り、それからクロック線を解放する動作を行う手段をさらに含む。
【００２３】
本発明は、上述したようなマスタタイプ装置と通信するようになされたスレーブタイプのデータ送受信装置であって、クロック線への接続端子と、データ線への少なくとも一つの接続端子と、論理値Ａと反対の論理値を表す電位Ｂに前記クロック線を拘束する手段と、データが受信される時に、クロック線におけるＡからＢへの変化を検出し、前記クロック線をＢに拘束し、データ線上のデータを読み取り、前記クロック線を解放する動作を行う手段とを備える装置にも関するものである。
【００２４】
ある実施形態によれば、前記スレーブタイプ装置は、データが送信される時に、クロック線におけるＡからＢへの変化を検出し、前記クロック線をＢに拘束し、データ線にデータを出力し、前記クロック線を解放する動作を行う手段をさらに備えるものである。
【００２５】
本発明は、クロック線と少なくとも一本のデータ線によって、上述したスレーブタイプの装置に接続された、上述したマスタタイプの装置を備える、同期データ伝送システムにも関するものである。
【００２６】
本発明はまた、クロック線と少なくとも一本のデータ線によって、上述したマスタタイプ装置に接続されている、または接続されるようになされたスレーブタイプの通信インタフェース回路であって、論理値Ａと反対の論理値を表す電位Ｂにクロック線を拘束する手段と、前記クロック線がＡからＢに変化すると自動的にクロック線をＢに拘束するトリガ手段と、クロック線解放信号を前記トリガ手段に出力するための入力と、前記トリガ手段によってクロック線がＢに拘束されている時は第１の値を有し、該トリガ手段によってクロック線が解放されている時は第２の値を有する情報信号を送るための出力とを備えるインタフェース回路に関するものである。
【００２７】
ある実施形態によれば、前記通信インタフェース回路は、少なくとも一つのデータを格納する手段と、前記クロック線がＡからＢに変化した時に自動的に前記データをデータ線に出力する手段とをさらに備えるものである。
【００２８】
本発明のこれらおよび他の目的、特徴、および利点は、本発明の方法に関する以下の説明において、下記の図面と関連させてさらに詳細に説明される。
【００２９】
【発明の実施の形態】
（本発明の方法の一般原理）
図１は、一方はクロック線ＣＫとして、他方はデータ線ＤＴとして使用される二本の線のみを用いて、二つの装置Ｄ１、Ｄ２間の同期データリンクを達成するための、本発明による方法の実施の一例を概略的に示すものである。クロック線は、所定の論理値のデフォルト値、ここでは、例えば、一方はクロック線ＣＫに、他方は論理“１”を示す電源ＶＤＤに接続されたプルアップ抵抗によって得られる値“１”に維持されている。データ線ＤＴもまた、プルアップ抵抗によって所定の論理値、ここでは値“１”に維持されていることが好ましい。
【００３０】
本発明によれば、各装置Ｄ１、Ｄ２は、クロック線ＣＫ上で二つの動作を行うことができる。
１）クロック線ＣＫを、デフォルト値と反対の論理値に拘束する、すなわちここではＣＫ線を０に拘束する
２）クロック線ＣＫを、デフォルト論理値に戻るように解放する。
【００３１】
本発明によれば、これら二つの基本動作は、以下の一般規則を適用することによって、装置Ｄ１、Ｄ２間のデータ伝送の同期をとるために用いられる。
１）二つの装置は、データを送信する時はクロック線を０に拘束する。
２）データを送信する装置は、少なくともデータを読み取るべき装置によってクロック線が解放される時点までは、データ線ＤＴ上に該データを維持する。
３）データを読み取る装置は、該データを読み取った後にのみクロック線ＣＫを解放する。
【００３２】
なお、本明細書では「０に拘束する」（または「低く拘束する」）という表現が、「強制的に０にする」という表現より好まれているが、二つの表現は極めて類似していることが分かるであろう。実際、ある装置が「クロック線を強制的に０にする」と言えば、該装置がクロック信号を０に変えることを意味するであろう。しかし、本発明の方法では、ある装置は、クロック線がすでに他の装置によって強制的に０にされている間に、クロック線を強制的に０にすることができる。このような状況では、「拘束する」という動詞がより適切であると思われる。
【００３３】
データを送信するために前記各装置が行う動作をここで説明する。前記装置の一方、例えばＤ１をマスタ装置（ＭＳＴＲ）と呼び、もう一方の装置Ｄ２をスレーブ装置（ＳＬＶ）と呼ぶ。「マスタ」と「スレーブ」という語はここでは、これらの語の通常の意味で使用されるものでないことに留意すべきである。ここでマスタ装置は、マスタが常に最初にクロック線ＣＫを０に拘束するという点で、スレーブ装置と区別される。このために、マスタは、スレーブの動作に依存しない時間を有する。データ線ＤＴ上のデータを送信した、または読取った後でクロック線ＣＫを解放するために、スレーブもまたマスタの動作に依存しない時間を有する。
【００３４】
このように、データがマスタによって送信される場合は、データがスレーブによって送信される場合と区別される。
【００３５】
（マスタからスレーブ方向のデータ伝送）
データビットをスレーブに送信するためにマスタが行う動作が図２Ａのフローチャートで説明されるが、これは以下のステップからなる。
ステップＭ１０：ＣＫ＝１を待つ、または確認する
ステップＭ１１：ビットｂをＤＴに出力する
ステップＭ１２：線ＣＫを０に拘束する
ステップＭ１３：ＣＫを解放する
ステップＭ１４：ＣＫ＝１を待つ、または確認する
ステップＭ１５：ＤＴを解放する
ステップＭ１６：データ処理
【００３６】
まず、線ＣＫが１でない時（ステップＭ１０）、マスタはビットｂを線ＤＴに出力しない（ステップＭ１１）ことが分かる。実際、線ＣＫが０のままなら、これは、スレーブが先に送信されたデータを読み取っているか、他のタスクで忙しいか、またはそのクロックが非常に遅いために、データ受信の用意ができていないことを意味し、実際にこれらの様々な可能性は重なりうる。従って、ここでは、新しいデータの送信はスレーブの「許可」をに依存し、この許可は線ＣＫが解放された（１になった）時点から得られるのみであると思われるだろう。
【００３７】
線ＣＫが解放されると、マスタは、ステップＭ１１でデータを線ＤＴに出力することによって始動し、ステップＭ１２で線ＣＫを０に拘束して、データが利用可能であることをスレーブに通知し、その後ステップＭ１３で線ＣＫを解放する。線ＣＫが０に設定される前に線ＤＴにデータを出力することによって、スレーブが線ＣＫにおいて立下がりエッジを検出するとすぐに、データが利用可能となることがスレーブに保証される。
【００３８】
「データ処理」ステップＭ１６は、新たなデータを送信するためにステップＭ１０に戻る前にマスタが行うであろう任意の操作を意味する。こうしてマスタは、内部メモリにデータを読み取っている、またはその出力にデータを準備しているか、他のタスクで忙しいか、あるいはそのクロックがスレーブと比べて非常に遅いので、スレーブと無関係に新たなデータの送信を遅延することができ、さらに実際にはこれらの様々な可能性が重なることがあり得る。こうしてここでは、データの送信は、マスタの利用可能性にも依存するように思われる。
【００３９】
図２Ａのフローチャートにおいて点線で表されるステップＭ１４およびＭ１５は、ビット列を送信する場合、随意行われる。実際には、ステップＭ１１で線ＤＴに出力されたデータは、次のビットを送信することに相当する次のステップＭ１１まで線ＤＴ上に維持することが可能である。その場合、確認ステップＭ１４は、確認ステップＭ１０と一緒だと重複する。
【００４０】
マスタによって送信されたデータを読み取るためにスレーブが行う動作を図２Ｂのフローチャートにおいて説明するが、これは以下のステップからなる。
ステップＥ１０：線ＣＫにおける０への変化を検出する
ステップＥ１１：線ＣＫを０に拘束する
ステップＥ１２：ビットｂを読み取る
ステップＥ１３：データ処理
ステップＥ１４：ＣＫを解放する
【００４１】
まず、スレーブは、ステップＥ１０で立下がりエッジを検出した後でのみ、ステップＳ１２でデータを読み取ることが分かるであろう。実際、デフォルト論理値、この場合“１”から、反対の論理値、この場合“０”への遷移の検出は、ここではデータがマスタによって線ＤＴに出力されたことを意味する。
【００４２】
さらに、ステップＥ１２でデータを読み取る前にステップＥ１１で線ＣＫを０に拘束することにより、スレーブがデータの読取を終えておらず、まだステップＥ１４で線ＣＫを解放することによって新たなデータを受信する用意ができていることを通知していない時、スレーブは、マスタが線ＤＴに別のデータを出力するのを防ぐことができる。
【００４３】
こうして、読取ステップＥ１２と線ＣＫ解放ステップＥ１４の間に、スレーブは、マスタに制御されることがなく、受信データを格納するため、あるいは他のタスクを行うために用いることのできる「データ処理」ステップＥ１３の利益を有し、このステップの継続時間は、スレーブクロック周波数および達成しなければならないであろう他のタスクの関数である。
【００４４】
すでに見たように、新たなデータの送信は、スレーブの利用可能性に支配される。スレーブ側のステップＥ１４と、マスタ側のステップＭ１０からステップＭ１１への変化との因果関係は、図２Ａおよび２Ｂに矢印で示されている。マスタ側のステップＭ１２とスレーブ側のステップＥ１０からステップＥ１１の変化との因果関係は、別の矢印で示されている。
【００４５】
実際には、ステップＥ１１でスレーブによって行われる、ステップＭ１２でマスタによって行われる動作に続く線ＣＫを０に拘束する動作は、線ＣＫの立下りエッジを感知するトリガ回路によって自動的かつほぼ即座に行うことができる。この場合、ステップＥ１０は、そのようなトリガ回路の動作に内在するステップで、その例については下で説明する。
【００４６】
最後に、これらの装置のそれぞれが、二つの装置を区別するために用いられている「マスタ」と「スレーブ」の資格にかかわらず、線ＣＫの部分的マスタ装置であることが分かるであろう。その結果、各装置は、クロック周波数に格差がある場合、または一方の装置がデータ送信自体よりも優先される適用においてマルチタスクで動作する時、その装置の操作スピードをもう一方に課すことができる。
【００４７】
図３Ａおよび３Ｂは、マスタからスレーブ方向のデータ送信のための本発明による方法の全体図を示している。
【００４８】
これらの二つの図では、マスタが時間ｔ１にデータ（ビットｂ）を線ＤＴに出力し、時間ｔ２に線ＣＫを０に拘束することが分かるであろう。その部分に対して、スレーブは、ほぼ同じ時間ｔ２に線ＣＫを０に拘束する。ここで、上述したように、この動作はラッチ回路によって自動的に行われるものとする。
【００４９】
図３Ａは、マスタがスレーブより早い場合を図示している。マスタは時間ｔ３に線ＣＫを解放するが、スレーブはｔ３に続く時間ｔ４に線ＣＫを解放するにすぎないことがわかるであろう。従って、この場合、その周期をデータ送信に課すのはスレーブである。該ビットは、ｔ２とｔ４の間の任意の時間にスレーブによって読み取られる。
【００５０】
図３Ｂは、スレーブがマスタより早い場合を図示している。ここで、スレーブは時間ｔ３に線ＣＫを解放するが、マスタはｔ３に続く時間ｔ４に線ＣＫを解放するにすぎない。従って、この場合、その周期をデータ送信に課すのはマスタとなる。前記ビットは、ｔ２とｔ３の間の任意の時間にスレーブによって読み出される。
【００５１】
上述したように、時間ｔ５の、マスタによるデータ線ＤＴの解放は、新たなデータが送信される場合、随意行われる。
【００５２】
（スレーブからマスタ方向のデータ送信）
データビットをマスタに送るためにスレーブが行う動作が図４Ｂのフローチャートで説明され、これは以下のステップからなる。
ステップＥ２０：線ＣＫにおける０への変化を検出する
ステップＥ２１：線ＣＫを０に拘束する
ステップＥ２２：ビットｂをＤＴに出力する
ステップＥ２３：データ処理
ステップＥ２４：ＣＫを解放する
ステップＥ２５：ＣＫ＝１を待つ、または確認する
ステップＥ２６：ＤＴを解放する
【００５３】
ここでスレーブは、ステップＥ２０で線ＣＫにおける０への変化を検出した後にのみ、線ＤＴにビットを付加する。実際、ビットがマスタによって送信されるかスレーブによって送信されるかに関わらず、データ送信を開始するのはマスタである。
【００５４】
ステップＥ２２における線ＤＴへのビットの出力に先行して、スレーブが線ＣＫを０に拘束するステップＥ２１が行われる。ステップＥ２１およびＥ２２が、実際には同時または準同時とすることができることが下から分かるであろう。なぜなら、
―データは、スレーブ側に設けられた出力バッファに準備することができ、
―第１のトリガ回路は、立下りエッジが線ＣＫにおいて発生した時に自動的に線ＣＫを拘束するよう、スレーブ側に設けることができ、
―第２のトリガ回路は、線ＣＫでレベル０が発生した時に線ＤＴにデータを送信するよう出力バッファに自動的に作用するように、スレーブ側に設けることができるからである。
【００５５】
このような状況では、前記検出ステップＥ２０は、第１のトリガ回路の動作に含まれている。
【００５６】
さらに、ステップＥ２０〜Ｅ２１は上述したステップＥ１０〜Ｅ１１（図２Ｂ）と同一であるので、下に見られるように、同様のトリガ回路によって自動的に行うことができる。
【００５７】
線ＣＫを解放するステップＥ２４の前の「データ処理」ステップＥ２３は、上記のように、スレーブが行うであろう任意の動作を意味し、その継続時間はマスタの制御下にあるものではない。こうして、スレーブは、線ＣＫをまだ解放していないうちに、マスタが任意の新たなビット送信（下に述べるステップＭ２１）を開始しないようにしている。
【００５８】
図４Ｂにおいて点線で表されているステップＥ２５およびＥ２６は、ビット列送信に対して随意行われる。実際には、ステップＥ２２で線ＤＴに出力されたデータは、前記ビット列の次のビットが送信される次のステップＥ２２まで線ＤＴ上に維持することができる。この場合、線ＣＫにおける立下がりエッジの検出は、線ＣＫがマスタによって先に解放されていることを意味するので、確認ステップＥ２５は、検出ステップＥ２０と一緒だと重複する。
【００５９】
データを受信するためにマスタが行う動作が図４Ａのフローチャートにおいて説明されており、これは以下のステップからなる。
ステップＭ２０：ＣＫ＝１を待つ、または確認する
ステップＭ２１：線ＣＫを０に拘束する
ステップＭ２２：ビットｂを読み取る
ステップＭ２３：線ＣＫを解放する
ステップＭ２４：データ処理
【００６０】
マスタは、ステップＭ２０において、線ＣＫを０に拘束することによって通信を開始する。ここで、この０への拘束は、ビットを送信するための要求に相当する。線ＣＫを０に拘束する前に、マスタは、線ＣＫがスレーブに解放されたことをステップＭ２０で確認し、これはスレーブの準備が整っていることを意味する。
【００６１】
線ＣＫを０に拘束した後、マスタは、ステップＭ２２でビットを読み取り、それからステップＭ２３で線ＣＫを解放する。マスタは、その後、例えばそのメモリに受信したビットを格納するために「データ処理」ステップＭ２４を有するが、スレーブは、マスタがステップＭ２１で線ＣＫを再び０に拘束していない間は、いかなる新たなデータも送信することができないので、このステップの継続時間はスレーブの制御下にあるものではない。
【００６２】
図４Ａおよび図４Ｂでは、マスタ側のステップＭ２１とスレーブ側のステップＥ２０からステップＥ２１への変化との因果関係が矢印によって示されている。別の矢印が、スレーブ側のステップＥ２４とマスタ側のステップＭ２０からステップＭ２１への変化との因果関係を示している。
【００６３】
図５Ａおよび図５Ｂは、スレーブからマスタ方向のデータ送信のための本発明による方法の全体図を示している。
【００６４】
これら二つの図から、マスタが線ＣＫを０に拘束した時間ｔ２に、スレーブが線ＣＫを０に拘束し、データ（ビットｂ）を線ＤＴに送ることが分かるが、その両方の動作はここでは、下に説明する出力バッファおよびトリガ回路の使用により同時または準同時である。
【００６５】
図５Ａは、マスタがスレーブより早く、時間ｔ３に線ＣＫを解放するが、スレーブはｔ３に続く時間ｔ４に線ＣＫを解放するにすぎない場合を図示している。こうして、ビットは時間ｔ２と時間ｔ３の間の任意の時間にマスタによって読み取られる。
【００６６】
図５Ｂは、スレーブがマスタより早く、時間ｔ３に線ＣＫを解放するが、マスタはｔ３に続く時間ｔ４に線ＣＫを解放するにすぎない場合を図示している。こうして、ビットは時間ｔ２と時間ｔ４の間の任意の時間にマスタによって読取られる。
【００６７】
上記のように、データ線ＤＴの時間ｔ５での解放は、新たなデータがスレーブによって送信される場合、随意行われる。
【００６８】
しかしながら、実際には、データ送信方向が変わった際のデータ線上の衝突を避けるために、線ＤＴの解放は、好ましくは暗黙的かつ自動的でなければならず、時間ｔ５は、時間ｔ４の直後に発生しなければならない。
【００６９】
（スレーブ装置用の通信インタフェース回路の実施形態）
図６は、通信インタフェース回路ＨＷＣの実施形態の一例を非限定的に表しているが、これはスレーブ装置ＳＬＶと組み合わされて本発明のいくつかのステップを自動的に行うようになされる、すなわち、
１）クロック線ＣＫでの立下りエッジに反応して、クロック線を０に拘束すること、および
２）クロック線上のレベル０に反応して、データ線ＤＴにデータビットを出力すること、である。
【００７０】
実際には、このような回路ＨＷＣは、下に見られるように、スレーブ装置に組み込むか、またはスレーブ装置に接続された外部ボックスに組み込むことができる。
【００７１】
ここで、回路ＨＷＣは、４つのフリップフロップＦＤ、それぞれＦＤ１ないしＦＤ４と、２つの３状態バッファＴ１、Ｔ２と、シュミット・トリガタイプ（すなわちスイッチヒステリシス）の３つの反転ゲートＩ１、Ｉ２、Ｉ３を備え、反転ゲートＩ２とＩ３は直列に並べられている。該回路ＨＷＣはまた、スレーブ装置に接続される複数の入力／出力を備え、立上がりエッジにおいてアクティブである入力ＡＣＫ（“アクノリッジ”）、ＬＯＷレベルでアクティブである入力ＮＩＮＩＴ（“初期化”）、操作モード（送信または受信）を選択するための入力ＥＲ、データ入力ＤＩＮ、データ出力ＤＯＵＴ（Data Out）、および同一名の制御信号を送る出力ＳＴＡＴＵＳに分けられる。回路ＨＷＣはまた、線ＣＫに接続される端子ＣＫＰ、線ＤＴに接続される端子ＤＴＰ、端子ＣＫＰに接続されるプルアップ抵抗Ｒ１、および端子ＤＴＰに接続されるプルアップ抵抗Ｒ２を備える。
【００７２】
フリップフロップＦＤ１〜ＦＤ４のそれぞれは、
―入力Ｄ、それぞれＤ１〜Ｄ４、
―出力Ｑ、それぞれＱ１〜Ｑ４、
―反転出力ＮＱ、それぞれＮＱ１〜ＮＱ４、
―出力Ｑを１に設定するための、ＬＯＷレベルでアクティブである入力ＮＳＥＴ、それぞれＮＳＥＴ１〜ＮＳＥＴ４、
―出力Ｑを０に設定するための、ＬＯＷレベルでアクティブである入力ＮＣＬＲ、それぞれＮＣＬＲ１〜ＮＣＬＲ４、および
―入力Ｄにあるデータを出力Ｑに送るための、立上がりエッジでアクティブであるトリガ入力Ｈ、それぞれＨ１〜Ｈ４、を備える。
【００７３】
回路ＨＷＣにおける様々な要素間の接続と、フリップフロップＦＤ１〜ＦＤ４のいくつかの入力の極性１または０は、この明細書の一部である付録の表１によって説明される。任意のデータのやり取りに先立って、出力Ｑ１はスリーブによって１に設定される。出力ＮＱ３は、ＣＫ＝１の時に０に設定され、ＣＫが１に変わる時に、０のままであろう。
【００７４】
回路ＨＷＣの動作
回路ＨＷＣは、信号ＥＲを１にすることによってデータ受信モードに設定される。入力Ｄ３はそのとき１で、出力ＮＱ３は０である。出力ＮＱ３に制御されるバッファＴ２は高インピーダンス状態であり、出力Ｑ４は端子ＤＴＰから分離されている。
【００７５】
ラインＣＫ／ＤＴの他端に接続されているマスタ装置（図示せず）が、データが線ＤＴ上において利用可能であることを示すために線ＣＫを０に設定すると、ゲートＩ１の出力は１に変わる。入力Ｈ２は、立上がりエッジを受信し、フリップフロップＦＤ２をトリガし、入力Ｄ２は常に１であるので、その出力Ｑ２は１に変わる。出力Ｑ２が１に変わることによりバッファＴ１がアクティブになり、これは透過になって線ＣＫを０（接地）に拘束する。このように、線ＣＫでの立下りエッジに応答して、回路ＨＷＣは自動的に線ＣＫを０に拘束する。
【００７６】
同時に、ゲートＩ２の入力が１に変わり、信号ＳＴＡＴＵＳがゲートＩ３の出力にて１に変わり、これによってスレーブ装置は、マスタが線ＣＫを０に拘束したことが分かる。そしてスレーブ装置は、線ＤＴに接続されている端子ＤＯＵＴ上にあるデータを読み取る。データを読み取り、例えばスレーブ装置が内部メモリに受信データを格納できるようにする「データ処理」ステップの後で、スレーブ装置は正パルスを入力ＡＣＫ、すなわちフリップフロップＦＤ１の入力Ｈ１に出力する。一方、フリップフロップＦＤ１の入力Ｄ１が常に０で、その一方ではＱ２＝ＮＳＥＴ１＝１なので、出力Ｑ１は０に移行する。出力Ｑ１が０に変わると、その後入力ＮＣＬＲ２が０となり、フリップフロップＦＤ２の出力Ｑ２を０に変える。するとバッファＴ１は、高インピーダンス状態に戻り、線ＣＫはもはや回路ＨＷＣによって接地に拘束されるものではなくなる。ラインのもう一方の側では、線ＣＫの解放により、マスタ装置は、該装置が新たなデータを送信できることが分かる（マスタ装置がすでに線ＣＫを解放している場合）。
【００７７】
回路ＨＷＣは、信号ＥＲを０にすることによってデータ送信モードに設定される。この場合、フリップフロップＦＤ３の入力Ｄ３は０になる。スレーブ装置は、回路ＨＷＣの入力ＤＩＮを介して、フリップフロップＦＤ４の入力Ｄ４に送信すべきデータを出力する。
【００７８】
マスタ装置が、ラインの他端において線ＣＫを０に拘束すると、ゲートＩ１の出力が１になり、上述したようにバッファＴ１は透過になって、線ＣＫが回路ＨＷＣによって０に拘束される。同時に、信号ＳＴＡＴＵＳは、送信モードから受信モード、または受信モードから送信モードへと変わる際の同期のために設けられている二つのゲートＩ２、Ｉ３によって施されたある遅延後に、０に変わる。入力Ｈ３、Ｈ４は信号ＳＴＡＴＵＳの立上がりエッジを受信し、フリップフロップＦＤ３、ＦＤ４をトリガする。こうして、出力ＮＱ３は１に変わり（Ｄ３は０に等しい信号ＥＲを受信している）、バッファＴ２は透過になる。同時に、出力Ｑ４は入力Ｄ４にあるデータを送り、従って該データはデータ線ＤＴに出力される。スレーブ装置が新たなデータを端子ＤＩＮに出力できるようにする「データ処理」ステップの後で、スレーブ装置は端子ＡＣＫに正パルスを出力し、これによりバッファＴ１は高インピーダンス状態に戻る。信号ＳＴＡＴＵＳは０に戻る。この時、線ＣＫは、マスタ装置がすでにデータを読み取り、ラインの他端において信号ＣＫをすでに解放していれば、１に戻る。さもなければ、マスタ装置が読取り動作を完了し、かつ/または他のタスクを行った時に、線ＣＫは１に戻る。
【００７９】
線ＣＫが１に戻ると、ゲートＩ1の出力は０に変わり、これによりフリップフロップＦＤ３の入力ＮＳＥＴ３がアクティブになり、出力Ｑ３が１に、出力ＮＱ３が０に変わる。こうして出力バッファＴ２は高インピーダンス状態に戻り、データはもはや線ＤＴに出力されない。マスタ装置が線ＣＫを再び０に拘束すると、入力ＤＩに出力された新たなデータは、ここで述べた方法で線ＤＴに送られる。
【００８０】
フリップフロップＦＤ２の入力ＮＳＥＴ２を駆動する端子ＮＩＮＩＴは、ビット送信とは独立して線ＣＫを０に拘束するために、出力Ｑ２を１に拘束することができる。このようにできることは高レベルプロトコルを実現するのに用いることができ、これによってスレーブ装置は、データを送信する用意ができている、またはデータを受信する用意ができていることをマスタ装置に示すことが可能になる。
【００８１】
直列に接続されている二つの反転ゲートＩ２およびＩ３では、Ｈ３の立上がりエッジが、入力ＮＳＥＴ３が１に変わった後に発生することを確実にする設定スイッチ遅延が生じる。
【００８２】
（本発明による方法の適用例）
図７は、本発明による方法を、マイクロコンピュータＰＣとマイクロプロセッサＭＰ間のデータ伝送に適用して、例えばマイクロコンピュータＰＣを介してマイクロプロセッサＭＰ上で制御、試験、または保守動作を行う場合を示している。インタフェース回路ＨＷＣは、マイクロコンピュータパラレルポートのコネクタ１０に直接プラグ接続されている小さなボックス内に配置されている。クロック線ＣＫおよびデータ線ＤＴは、一方を回路ＨＷＣに、もう一方をマイクロプロセッサＭＰの入力/出力ポートに接続されている。図２Ａ、２Ｂ、４Ａ、４Ｂのフローチャートにおいて説明したステップは、回路ＨＷＣによって自動的に行われるステップを除いて、装置ＰＣ、ＭＰのそれぞれに設けられるプログラムによって行われ、そのようなプログラムは当業者の理解内のものである。
【００８３】
実際には、本発明による方法の実現では、どの装置が最初にデータを送信すべきかを決定することによって通信を初期設定することができる高レベルプロトコルを設けることが必要である。ひとたび通信が始まると、このプロトコルは、どちらが次のビット列を送信すべきか二つの装置が知ることができるようにする、データ線によって送信されるコマンドに基づく。例えば、データを送信する装置は、所定数のビット列（例えば数バイト）を送信するつもりである、次に受信モードに設定するつもりである、などを、もう一方の装置に示すことができる。良好なプラクティスによれば、この高レベルプロトコルに関して多くの実施例が考えられる。
【００８４】
具体的には、マイクロプロセッサ上で試験動作が予定される時、通信は以下のように初期設定することができる。マイクロコンピュータは、設けられたマイクロプロセッサのある入力に信号ＲＳＴを出力することによってマイクロプロセッサを０に設定し、それから所定数Ｎの電気パルスを、線ＤＴを介してマイクロプロセッサに送信する。マイクロプロセッサは、０にリセットした後にアクティブとされ、受信したＮ個のパルスをカウントする内部カウンタを有している。この数が予め定められた数Ｎ１と一致すれば、マイクロプロセッサは試験モードに移行し、そのメモリ内の特定のアドレスに記録されている試験プログラムを読み出す。この試験プログラムは、例えば、処理すべき指示を受信するために受信モードに設定しなければならないことを示す。マイクロプロセッサは線ＣＫを０に拘束して、最初のデータを受信し、以下同様にして完全な指示を受信する。
【００８５】
通信は多くの他の方法で初期設定できることは了解されるであろう。例えば、第１の装置がクロック線を任意の時点で０に設定して、その時受信モードに設定されているもう一方の線にデータを送信することができるようにすることが可能である。
【００８６】
本発明による方法は、異なる適用および実施例の余地があることは理解されるであろう。特に、本発明は、最初は二つの装置間の直列リンクを提供するように設計されたが、本発明は並列通信にも適用可能で、これは平行して転送されるべきビット数に相当する数の複数のデータ線ＤＴを設けることによって非常に簡単に達成することができる。さらに、本発明による方法は、１に等しいデフォルト論理値を用いて上で説明されたが、この値は接地接続されたプルダウン抵抗により０とし、そして前記装置はデータやり取り処理のためにクロック線を１（ＶＤＤ電圧）に拘束することもできることは理解されるであろう。最後に、本発明のある実施形態は、二つの通信インタフェース回路、一方はスレーブで、もう一方はマスタ、を用い、本発明による方法の全ステップを行うためのソフトウェアおよびハードウェアを備えることを含む。これらの装置または通信コプロセッサは、あらゆるタイプの装置に含まれる、またはあらゆるタイプの装置に接続されて、装置が通信し、二本の線のみを用いてシリアルデータを、または数本のデータ線を用いてパラレルデータをやり取りできるようにする同期データ伝送システムを得ることができる。
【表１】
0004140753.tif 000002
【図面の簡単な説明】
【図１】本発明の方法の、二本の線のみによる実現を示す。
【図２】本発明による方法の、マスタ装置がデータを送信する時にマスタ装置とスレーブ装置によってそれぞれ行われるステップを表すフローチャート（図２Ａ、２Ｂ）である。
【図３】マスタ装置がデータを送信する時にクロック線とデータ線上にある信号を表すタイミング図で、それぞれマスタがスレーブより早い場合（図３Ａ）と、スレーブがマスタより早い場合（図３Ｂ）を示している。
【図４】本発明による方法の、スレーブ装置がデータを送信する時にマスタ装置とスレーブ装置によってそれぞれ行われるステップを表すフローチャート（図４Ａ、４Ｂ）である。
【図５】スレーブがデータを送信する時にクロック線とデータ線上にある信号の側面を表すタイミング図で、それぞれマスタがスレーブより早い場合（図５Ａ）と、スレーブがマスタより早い場合（図５Ｂ）を示している。
【図６】本発明による、スレーブ装置と組み合わされる通信インタフェース回路を示す図である。
【図７】本発明の方法の、マイクロコンピュータとマイクロプロセッサ間の通信への適用を示す。
【符号の説明】
Ｄ１  マスタ装置（ＭＳＴＲ）
Ｄ２  スレーブ装置（ＳＬＶ）
ＣＫ  クロック線
ＤＴ  データ線
ＨＷＣ  通信インタフェース回路
ＦＤ１、ＦＤ２、ＦＤ３、ＦＤ４  フリップフロップ
Ｔ１、Ｔ２  ３状態バッファ
Ｉ１、Ｉ２、Ｉ３  反転ゲート
ＣＫＰ  端子
ＤＴＰ  端子
Ｒ１、Ｒ２  プルアップ抵抗
ＰＣ  マイクロコンピュータ
ＭＰ  マイクロプロセッサ
１０  コネクタ
【図１】
0004140753.tif 000003
【図２】
0004140753.tif 000004
【図３】
0004140753.tif 000005
【図４】
0004140753.tif 000006
【図５】
0004140753.tif 000007
【図６】
0004140753.tif 000008
【図７】
0004140753.tif 000009