(57)【特許請求の範囲】
【請求項１】
シリアルクロックラインおよびシリアルデータラインに接続されたデータ転送装置であって、
前記シリアルクロックラインに前記データ転送装置を含む複数の装置が接続されている場合、前記複数の装置のうちの少なくともいずれか１つが第１の論理レベルを有する信号を前記シリアルクロックラインへ出力すると前記シリアルクロックラインの電圧レベルが前記第１の論理レベルとなり、前記複数の装置のすべてが第２の論理レベルを有する信号を前記シリアルクロックラインへ出力すると前記シリアルクロックラインの電圧レベルが前記第２の論理レベルとなり、
前記データ転送装置は、
前記シリアルクロックラインに接続されたＳＣＬ端子と、
前記シリアルデータラインに接続されたＳＤＡ端子と、
前記ＳＣＬ端子および前記ＳＤＡ端子に結合されたシリアルＩ／Ｏ回路とを備え、
前記シリアルＩ／Ｏ回路は、
クロック用信号を生成して前記ＳＣＬ端子へ出力し、かつ受けたカウント用クロックをカウントし、カウント値が所定値になると前記クロック用信号の論理レベルを反転させるカウンタと、
前記シリアルクロックラインの電圧レベルの前記第１の論理レベルへの遷移を検出し、前記遷移を検出した場合であって前記クロック用信号が前記第２の論理レベルを有するとき、前記カウンタのカウント値を前記所定値にリロードする第１の制御回路と、
前記クロック用信号の前記第２の論理レベルへの遷移を検出し、前記遷移を検出した場合であって、前記シリアルクロックラインの電圧レベルが前記第１の論理レベルであるときには、前記カウンタのカウントを停止し、その後、前記シリアルクロックラインの電圧レベルが前記第２の論理レベルへ遷移すると前記カウントの停止を解除する第２の制御回路と、
前記クロック用信号と前記シリアルクロックラインの電圧レベルとの論理積を出力するＡＮＤゲートと、
前記ＡＮＤゲートの出力信号に基づいて、前記シリアルデータラインへのデータの出力および前記シリアルデータラインからのデータの入力を行なうシフトレジスタとを含むデータ転送装置。
【請求項２】
前記カウンタは、前記クロック用信号によってパルス群を間欠的に前記シリアルクロックラインへ出力するように制御され、
前記シリアルＩ／Ｏ回路は、さらに、
前記パルス群における最後のパルスが出力されると前記シリアルクロックラインへ前記第１の論理レベルを有する信号を出力するＬホールド回路を含む請求項１記載のデータ転送装置。
【請求項３】
前記Ｌホールド回路は、さらに、前記パルス群における最後のパルスが出力されると前記カウンタのカウントを停止する請求項２記載のデータ転送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はシリアルデータラインとシリアルクロックラインの２本のバスラインからなるＩ2 Ｃバスに接続されたデータ転送装置のシリアルＩ／Ｏ回路に関するものである。
【０００２】
【従来の技術】
Ｉ2 Ｃバスは２線式双方向のシリアルバスラインで、シリアルクロックライン（以下、ＳＣＬラインと称する）とシリアルデータライン（以下、ＳＤＡラインと称する）のみで構成されている。
【０００３】
以下、Ｉ2 Ｃバスの仕様について簡単に説明する。
Ｉ2 Ｃバスに接続されるユニットは、ＳＤＡライン、ＳＣＬラインの両方に対して、オープンドレイン出力を持たねばいけない。
【０００４】
また、ＳＤＡライン、ＳＣＬラインともプルアップ抵抗によりプルアップされている。このようにしてＳＤＡライン、ＳＣＬラインともワイヤードＡＮＤが設定されている。Ｉ2 Ｃバスが使用されていないとき、ＳＣＬライン、ＳＤＡラインともにＨレベルである。データ転送時、ＳＣＬライン＝Ｈの時はＳＤＡラインが変化することは許されない。ＳＣＬライン＝Ｌの時のみＳＤＡラインは変化することが許される。
【０００５】
この唯一の例外は、スタートコンディション発生とストップコンティション発生である。スタートコンディションはＳＣＬライン＝Ｈ時にＳＤＡラインの立ち下がりで定義され、ストップコンディションはＳＣＬライン＝Ｈ時にＳＤＡラインの立ち上がりで定義される。
【０００６】
Ｉ2 Ｃバスでは、データは８ビット構成で転送され、各バイトはその終わりにアクノレッジが付く。受信側は各バイトの受信を９発目のＳＣＬラインでＳＤＡラインをＬにすることで、アクノレッジを返す。１回の転送で伝送できるバイト数は制限がなく、何バイトでも伝送できる。
【０００７】
Ｉ2 Ｃバスでの第一バイトは７ビットのスレーブアドレスであり、最下位ビットはデータの方向を示す方向ビットである。この方向ビットが０のとき、マスタはスレーブに書き込み、１のときはマスタはスレーブから読み込む。
【０００８】
図８にＩ2 Ｃバスの転送例を示す。これは、スレーブアドレスの後に１バイトのデータを伝送した例である、Ｉ2 Ｃバスにおけるマスタはデータ伝送の主導を司る。よって、マスタはスレーブに対してクロックを生成し、スタートコンディションとストップコンディションを生成する。また、Ｉ2 Ｃバスはマルチマスタシステムなので、複数のマスタが同時に転送を開始しようとすることがある。このため、混乱をさけるため、アービトレーションがとられる。アービトレーションはＳＤＡラインについて行われる。
【０００９】
ＳＤＡラインについてのアービトレーションは以下の通りである。ＳＣＬラインがＨであるとき、ＳＤＡライン上にＨを出力しているマスタは、他のマスタがＳＤＡ上にＬを出力していれば、自分のレベルがバスのレベルと一致しないためデータ出力段をオフにする。
【００１０】
ＳＣＬラインについてはクロックの同期がとられる。図９を用いて説明する。クロック信号の同期はＳＣＬラインと装置をＡＮＤ接続する事によって実行される。これにより、ＳＣＬラインがＨからＬに変化すると、関連する装置はＬ期間のカウントを開始する。ある装置のクロックがＬになると、その装置は自分のクロックがＨになるまでＳＣＬラインをＬに保持する。しかし、この装置のクロックがＬからＨに変化しても、他の装置のクロックがまだＬ期間内にある場合、ＳＣＬラインは変化しない。
【００１１】
よって、ＳＣＬラインのＬ期間はＬ期間の最も長い装置によって決定される。この間、Ｌ期間の短い装置はＨのまま待状態となる。全ての装置がＬ期間を終了するとＳＣＬラインは開放されてＨ状態になる。これで装置のクロックとＳＣＬラインが同じ状態になり、どちらもＨ期間のカウントを開始する。ＳＣＬラインはＨ期間を最初に終了した装置によって再びＬになる。
【００１２】
アービトレーションとクロック同期化は複雑なので一般的には、Ｉ2 Ｃバスの専用ハードウエアが必要である。しかし、ＣＰＵの処理能力が高ければ、ＣＰＵが入出カポートを制御して実現することもできる。
【００１３】
図５は、従来のシリアルＩ／Ｏを用いて、Ｉ2 Ｃバスに接続したデータ転送装置の構成を示すブロック図である。この例ではＣＰＵ１１の処理能力が高く、ＣＰＵ１１が入出力ポートを制御してアービトレーション処理を実現する場合である。図中、１はＳＣＬ端子の入力バッファであり、リードするときはその値はデータバスに出力される。２はＳＣＬ端子への出力バッファである。３は出力バッファ２の入力を出力ラッチ４とスイッチ５のいずれかから選択するセレクタである。
【００１４】
４はＳＣＬ端子の出力値を格納する出力ラッチであり、データバスを介してライトされる。５はシリアルＩ／Ｏ６のクロック端子の接続を入力バッファ１とセレクタ３のいずれかから選択するスイッチであり、シリアルＩ／Ｏ６が内部クロックモードの時はセレクタ３側に接続し、外部クロックモードの時は入カバッファ１側に接続する。７はＳＤＡ端子の入力バッファであり、リードするときはその値はデータバスに出力される。また、シリアルＩ／Ｏ６の入力端子にも接続される。
【００１５】
８はＳＤＡ端子への出力バッファである。９は出力バッファ８の入力を出力ラッチ１０とシリアルＩ／Ｏ６の出力端子ＯＵＴのいずれかから選択するセレクタであり、出力ラッチ１０はＳＤＡ端子の出力値を格納し、データバスを介してライトされる。１１はＣＰＵであり、以上の各回路を制御する。
【００１６】
図６は上記シリアルＩ／Ｏ６の構成を示すブロック図である。図中、６０はクロック発生回路、６１は内部クロックモードの時はクロック発生回路６０側に接続し、外部クロックモード時はクロック端子側に接続されるスイッチである。６２は内部クロックモード時に送信クロックをクロック端子に出力する出力バッファである。
【００１７】
６３は送信クロックや送信完了割り込み要求を出力し、送信を制御する送信制御回路である。６４は受信クロックや受信完了割り込み要求を出力し、受信を制御する受信制御回路である。６５は入力端子から入ってくる直列データを並列データに変換する受信シフトレジスタであり、受信クロックのタイミングで入力端子のデータを１ビットずつ受信シフトレジスタ６５に格納する。６６は受信バッファレジスタであり、受信シフトレジスタ６５の受信が完了するたびに受信シフトレジスタ６５の内容を取り込む。この受信バッファレジスタ６６はデータバスに接続されており、ＣＰＵ１１はリードすることができる。
【００１８】
６７は送信シフトレジスタであり、送信クロックに同期して出力端子ＯＵＴへデータを転送する。６８は送信バッファレジスタで、データバスに接続されており、ＣＰＵ１１はライトすることができる。送信条件が揃ったときに設定されたデータを送信シフトレジスタ６７に移す。６９は制御レジスタであり、シリアルＩ／Ｏ６の動作モードの設定を行う。
【００１９】
次に図７のタイミング図を参照して図６のブロック図の動作を説明する。まず、送信動作について説明する。
ＣＰＵ１１は、制御レジスタ６９に制御データを設定することにより、内部クロック／外部クロックの設定などを行う。例えば内部クロックの設定をしたとする。また、送信バッファレジスタ６８に送信するデータを設定する。そうしておいて、ＣＰＵ１１は制御レジスタ６９に送信の開始を指示する。そうすると送信制御回路６３は送信シフトレジスタ６７に対し送信クロックと送信データ書き込み信号を出力する。
【００２０】
この結果、送信シフトレジスタ６７は送信バッファレジスタ６８に格納したデータを書き込み、送信クロックに同期して、書き込んだデータを１ビットずつ転送する。送信シフトレジスタ６７のデータ全てを（このときは９ビットとする）出力し終えたら、送信制御回路６３は、送信完了割り込み要求を発生する。クロック端子からは送信クロックが出力される。
【００２１】
外部クロックの設定をした場合は、クロック端子ＣＬＫからのクロックが送信制御回路６３に入力され、出力バッファ６２がＯＦＦするので、送信クロックは出力されない違いがあるだけで、それ以外は内部クロックの時と同様である。
【００２２】
次に受信動作を説明する。
ＣＰＵ１１は、制御レジスタ６９に制御データを設定することにより、内部クロックの設定をしたとする。そうしておいて、ＣＰＵ１１は制御レジスタ６９に受信の開始を指示する。そうすると送信制御回路６３は送信クロックを出力する。受信制御回路６４は受信シフトレジスタ６５に受信クロックを出力する。受信シフトレジスタ６５は受信クロックに同期して入力端子ＩＮの入力データを１ビットずつ受信する。９ビット分受信し終えたら受信制御回路６４は受信データ書き込み信号を受信バッファレジスタ６６に出力する。このタイミングで受信シフトレジスタ６５のデータは受信バッファレジスタ６６に移される。また、９ビット分受信し終えたら受信制御回路６４は受信完了割り込み要求を発生する。
【００２３】
外部クロックの設定をした場合は、クロック端子からのクロックが送信制御回路６３に入力され、出力バッファ６２がＯＦＦするので、送信クロックは出力されない違いがあるだけで、それ以外は内部クロック時と同様である。
【００２４】
次に図８の回路でＩ2 Ｃバスを実現させたときを説明する。
Ｉ2 Ｃバスでは図８に示すように、スタートコンディション発生後、最初にスレーブアドレスが転送され、その後データが転送される。図５の回路を用い、マスターとして動作させる場合を考える。スタートコンディションの発生からスレーブアドレスの送信についてはＣＰＵはＳＣＬ端子、ＳＤＡ端子をポート入出力回路として制御することにより実現する。
【００２５】
なぜなら、この時は複雑なアービトレーションの処理及びクロックの同期化の処理が必要であるからである。アービトレーションに勝ち残りスレーブアドレスの送信が終了すると、ＳＣＬラインがＨの時にＣＰＵ１１はセレクタ３、セレクタ９、スイッチ５を設定することによりＳＣＬ端子、ＳＤＡ端子をシリアルＩ／Ｏに切り換える。そして、ＣＰＵ１１はシリアルＩ／Ｏ６を制御することによりデータの転送を行う。
【００２６】
アービトレーションの処理が必要なのはスレーブアドレス送信時のみを前提とした場合、アービトレーションに勝ち残れば、マスタは自己だけなので以後のデータ転送に関してはアービトレーションの処理が不要になり、単純なシリアルＩ／Ｏで実現できる。この様子を図８に示す。すなわち、スレーブアドレスの転送が完了すれば、ＳＣＬ端子、ＳＤＡ端子を汎用入出力ポートからシリアルＩ／Ｏに切り替え、シリアルＩ／Ｏ６を用いてデータの送受信を行う。そして、全データの送受信が完了すると、ＳＣＬ端子、ＳＤＡ端子をシリアルＩ／Ｏから汎用入出力ポートに切り替え、ストップコンディションを発生する。
【００２７】
今度はスレーブとして動作させる場合を考える。マスター時と同様に、スタートコンディションの検出からスレーブアドレスの受信についてはＣＰＵはＳＣＬ端子、ＳＤＡ端子をポート入出力回路として制御することにより実現する。スレーブアドレスを受信してアクノリッジを返した後、つまり出力ラッチ１０にＬを書き込みＳＤＡ端子にＬを出力した後、ＳＣＬラインがＨの時にＣＰＵ１１はセレクタ３、セレクタ９、スイッチ５を設定することによりＳＣＬ端子、ＳＤＡ端子をシリアルＩ／Ｏに切り換える。そして、ＣＰＵ１１はシリアルＩ／Ｏ６を制御することによりデータの転送を行う。
なお、上記の従来例に関連する先行技術としては、例えば、特開平８−２０２５２８号公報、特開平５−４６５５１号公報記載のものがある。
【００２８】
【発明が解決しようとする課題】
従来のＩ2 Ｃバス用シリアルＩ／Ｏ回路は以上のように構成されているので、ポート入出力回路と合わせてＩ2 Ｃバスシステムを実現しようとすると、クロック同期化はＣＰＵがソフトウエアでポート入出力回路を制御して実現させるため、動作速度が遅くなる。そして、ＣＰＵ１１はこの間Ｉ2 Ｃバスの処理に専念する必要があるため、他の処理ができない。つまり、Ｉ2 Ｃバスよりも優先順位の高い処理の要求があっても、この間はその処理ができない。
【００２９】
また、クロック同期化はＣＰＵがソフトウエアでポート入出力回路を制御して実現させるスレーブアドレスの送信時しかできない。もちろん、データの送受信時にもＣＰＵがソフトウエアでポート入出力回路を制御して実現させれば可能であるが、更に動作速度が遅くなり、ＣＰＵは他の処理ができなくなるという課題があった。
【００３０】
この発明は上記のような課題を解決するためになされたもので、ポート入出力回路と合わせて、最低限のハードウエアを追加することでＣＰＵの負荷を少なくしてＩ2 Ｃバスシステムに応用するＩ／Ｏ回路を実現することを目的とする。
【００３１】
【課題を解決するための手段】
この発明に係るデータ転送装置は、シリアルクロックラインおよびシリアルデータラインに接続されたデータ転送装置であって、シリアルクロックラインにデータ転送装置を含む複数の装置が接続されている場合、複数の装置のうちの少なくともいずれか１つが第１の論理レベルを有する信号をシリアルクロックラインへ出力するとシリアルクロックラインの電圧レベルが第１の論理レベルとなり、複数の装置のすべてが第２の論理レベルを有する信号をシリアルクロックラインへ出力するとシリアルクロックラインの電圧レベルが第２の論理レベルとなり、データ転送装置は、シリアルクロックラインに接続されたＳＣＬ端子と、シリアルデータラインに接続されたＳＤＡ端子と、ＳＣＬ端子およびＳＤＡ端子に結合されたシリアルＩ／Ｏ回路とを備え、シリアルＩ／Ｏ回路は、クロック用信号を生成してＳＣＬ端子へ出力し、かつ受けたカウント用クロックをカウントし、カウント値が所定値になるとクロック用信号の論理レベルを反転させるカウンタと、シリアルクロックラインの電圧レベルの第１の論理レベルへの遷移を検出し、遷移を検出した場合であってクロック用信号が第２の論理レベルを有するとき、カウンタのカウント値を所定値にリロードする第１の制御回路と、クロック用信号の第２の論理レベルへの遷移を検出し、遷移を検出した場合であって、シリアルクロックラインの電圧レベルが第１の論理レベルであるときには、カウンタのカウントを停止し、その後、シリアルクロックラインの電圧レベルが第２の論理レベルへ遷移するとカウントの停止を解除する第２の制御回路と、クロック用信号とシリアルクロックラインの電圧レベルとの論理積を出力するＡＮＤゲートと、ＡＮＤゲートの出力信号に基づいて、シリアルデータラインへのデータの出力およびシリアルデータラインからのデータの入力を行なうシフトレジスタとを含む。
【００３２】
好ましくは、カウンタは、クロック用信号によってパルス群を間欠的にシリアルクロックラインへ出力するように制御され、シリアルＩ／Ｏ回路は、さらに、パルス群における最後のパルスが出力されるとシリアルクロックラインへ第１の論理レベルを有する信号を出力するＬホールド回路を含む。
【００３３】
好ましくは、Ｌホールド回路は、さらに、パルス群における最後のパルスが出力されるとカウンタのカウントを停止する。
【００３４】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明におけるシリアルＩ／Ｏ回路の実施の形態を示すブロック図であり、図１において、６０１はクロック発生回路であり、送信制御回路６３から送信クロックとＣＬＫおよびＬホールド回路６２１からの信号が入力されている。６１は内部クロックモードの時はクロック発生回路６０１側に接続し、外部クロックモード時はクロック端子側に接続されるスイッチである。６２は内部クロックモード時に送信クロックをクロック端子に出力する出力バッファである。
【００３５】
６２１は送信クロックが最終の立ち下がりのタイミングでＣＬＫラインをＬにする手段としてのＬホールド回路（Ｌホールド手段）であり、このＬホールド回路６２１は、通常は送信制御回路６３が出力するクロックを出力し、送信制御回路６３が出力する最終クロックの立ち下がり信号でＬを出力する。Ｌ出力が解除され通常に戻るのは、ＣＰＵ１１が制御レジスタ６９に解除の設定をしたときである。上記送信制御回路６３は送信クロックや送信完了割り込み要求を出力して送信を制御する。６３１は送信制御回路６３の出力する送信クロックとＣＬＫとのＡＮＤ回路である。つまり、自分のクロックとシリアルクロックラインをＡＮＤしたものをシリアルＩ／Ｏの動作クロックとする手段を構成する。
【００３６】
６４は受信クロックや受信完了割り込み要求を出力し、受信を制御する受信制御回路である。６５は入力端子から入ってくる直列データを並列データに変換する受信シフトレジスタであり、受信クロックのタイミングで入力端子のデータを１ビットずつ受信シフトレジスタ６５に格納する。６６は受信バッファレジスタであり、受信シフトレジスタ６５の受信が完了するたびに受信シフトレジスタ６５の内容を取り込む。データバスに接続されており、ＣＰＵ１１はリードすることができる。
【００３７】
６７は送信シフトレジスタであり、送信クロックに同期して出力端子へ転送する。６８は送信バッファレジスタであり、データバスに接続されており、ＣＰＵ１１はライトすることができる。送信条件が揃ったときに設定されたデータを送信シフトレジスタ６７に移す。６９は制御レジスタであり、シリアルＩ／Ｏ６の動作モードの設定を行う。データバスに接続されており、ＣＰＵ１１はライトすることができる。
【００３８】
図２は、上記クロック発生回路６０１の内部ブロック図である。図２において、６０２は送信クロックの立ち上がりを検出する立ち上がり検出回路であり、６０３，６０７はＡＮＤゲート、６０６はＮＡＮＤゲート、６０４はインバータ、６１１はセットリセットフリップフロップ（以後、ＳＲＦＦと称する）、６０８はリロード付きカウンタであり、リロード信号が入力されるかカウントがオーバーフローするとカウント値がリロードされ、同時に出力が反転されるものとする。６０５はＣＬＫの立ち下がりを検出する立ち下がり検出回路である。
【００３９】
そして、上記立ち下がり検出回路６０５、ＮＡＮＤゲート６０６は、自己のクロックがＨの時にシリアルクロックラインの立ち下がりを検出するとクロック発生回路のカウント値をリロードすると共にクロックを初期化する手段を構成し、上記立ち上がり検出回路６０２、インバータ６０４、ＡＮＤゲート６０３と、ＳＲＦＦ６１１は、シリアルクロックラインがＬの時に自己のクロックの立ち上がりを検出すると、クロック発生回路のカウントソースの供給を停止させる手段を構成している。
【００４０】
なお、この発明におけるシリアルＩ／Ｏを用いて、Ｉ2 Ｃバスに接続するデータ転送装置の構成は前記図５と同様であるので説明を省略する。
【００４１】
次に動作について説明する。
従来のＩ2 Ｃバスとの違いは、クロック同期化機能を付加したことと、ＳＣＬ端子をＬ出力したことであるので、これについて述べる。その他、従来のＩ2 Ｃバスと同等部分は説明を省略する。初めに図３を参照して図１，図２のブロック図の動作を説明する。
【００４２】
Ｉ2 Ｃバスではスタートコンディション発生後、最初にスレーブアドレスが転送され、その後データが転送される。マスターとして動作させる場合を考える。スタートコンディションの発生からスレーブアドレスの送信については従来ではＳＣＬ端子、ＳＤＡ端子を入出力ポートとして動作させることで実現したが、この発明ではＳＣＬ端子、ＳＤＡ端子をシリアルＩ／Ｏの端子として動作させることで実現する。クロックの同期化はハードウェアで行う。
【００４３】
図３のＡは、自己のクロックはＨ出力しているときに別の装置がＬを出力した場合である。立ち下がり検出回路６０５はＳＣＬラインの立ち下がりを検出してパルスを出力する。送信クロックはＨなので、ＮＡＮＤゲート６０６はリロード信号をリロード付きカウンタ６０８に入力する。これによりリロード付きカウンタ６０８はカウント値ｎがリロードされると共に出力が反転し、Ｌを出力する。これによりＳＣＬ端子とＡＮＤ回路６３１の出力はＬになり、送信シフトレジスタ６７と受信制御回路６４にＬのクロックを供給する。
【００４４】
図３のＢは、別の装置はＬ区間が終了しＨを出力した時である。この時自己のクロックはＬ区間が終了していないので、Ｌを出力している。ＳＣＬ端子はＡＮＤ接続されているのでＬのままである。ＳＣＬ端子とＡＮＤ回路６３１の出力はＬのままであり、送信シフトレジスタ６７と受信制御回路６４に供給するクロックもＬのままである。
【００４５】
図３のＣは、リロード付きカウンタ６０８がオーバーフローし、カウント値がリロードされ、出力が反転してＨを出力することにより、自己のクロックのＬ区間が終了した場合である。これによりＳＣＬ端子とＡＮＤ回路６３１の出力はＨになり、送信シフトレジスタ６７と受信制御回路６４にＨのクロックを供給する。
【００４６】
図３のＤは、Ａと同様に自分のクロックはＨ出力しているときに別の装置がＬを出力した場合であるので、説明を省略する。
【００４７】
図３のＥは、別の装置はＬを出力しているときに、リロード付きカウンタ６０８がオーバーフローし、カウント値がリロードされ、出力が反転してＨを出力することにより、自分のクロックのＬ区間が終了した場合である。立ち上がり検出回路６０２は送信クロックの立ち上がりを検出してパルスを出力する。ＳＣＬ端子はＬなので、ＡＮＤゲート６０３もパルスを出力する。ＳＲＦＦ６１１はリセットされ、これによりリロード付きカウンタ６０８はカウントソースの供給が停止する。ＳＣＬ端子はＡＮＤ接続されているのでＬのままであり、ＡＮＤ回路６３１の出力もＬのままである。
【００４８】
図３のＦは、別の装置のＬ区間が終了してＨを出力した場合である。ＳＣＬ端子はＡＮＤ接続されているので、Ｈを出力する。ＳＣＬ端子がＨになるので、ＳＲＦＦ６１１はＨを出力する。よってＡＮＤゲート６０７はリロード付きカウンタ６０８にカウントソースの供給を再開する。ＡＮＤ回路６３１の出力もＨになる。送信シフトレジスタ６７と受信制御回路６４にＨのクロックを供給する。
【００４９】
このように、この発明によれば、ＣＰＵ１１がＳＣＬ端子、ＳＤＡ端子を入出力ポートとして制御することなく、クロックの同期化が実現できる。
次にＬホールド回路６２１について図４を参照して説明する。
送信制御回路６３では送信クロックの最終立ち下がりのタイミング（図４のＡのタイミング）で最終クロックの立ち下がり信号を出力する。Ｌホールド回路６２１はこのタイミングでＳＣＬ端子をＬにする。最終クロックの立ち下がり信号は割り込み要求信号にもなっているので、ＣＰＵ１１はこのタイミングで受信データの確認やアクノリッジの処理等を実行することができる。この間はＳＣＬラインがＬであり、ＳＣＬラインはＡＮＤ接続されているので、他の装置はクロックを発生させることができない。つまり、他の装置を待ち状態にしたうえで、ＣＰＵ１１は一連の処理を実行することができる。
【００５０】
また、Ｌホールド回路６２１は、Ｌホールド期間信号を出力する。この信号は図３のＡＮＤゲート６０７に入力されており、この期間カウントソースの供給が停止する。そうして一連の処理が完了すると、ＣＰＵ１１は制御レジスタ６９に解除の設定をすることにより、Ｌホールド回路６２１のＬ出力を解除する。そうしてＳＣＬ端子はＨになり（図４のＢのタイミング）、次の転送が可能な状態になる。
【００５１】
以上のように、この実施の形態１によれば、クロック発生回路およびＡＮＤ回路によって、ＣＰＵで最低限の制御をすることにより、Ｉ2 Ｃバスのクロック同期化機能を実現することができる。また、シリアルＩ／Ｏの動作クロックの最後の立ち下がりでシリアルクロックラインをＬにすることにより、ＣＰＵの負荷を軽減することができる。
【００５２】
【発明の効果】
以上のように、この発明によれば、シリアルＩ／Ｏ回路は、クロック用信号を生成してＳＣＬ端子へ出力し、かつ受けたカウント用クロックをカウントし、カウント値が所定値になるとクロック用信号の論理レベルを反転させるカウンタと、シリアルクロックラインの電圧レベルの第１の論理レベルへの遷移を検出し、遷移を検出した場合であってクロック用信号が第２の論理レベルを有するとき、カウンタのカウント値を所定値にリロードする第１の制御回路と、クロック用信号の第２の論理レベルへの遷移を検出し、遷移を検出した場合であって、シリアルクロックラインの電圧レベルが第１の論理レベルであるときには、カウンタのカウントを停止し、その後、シリアルクロックラインの電圧レベルが第２の論理レベルへ遷移するとカウントの停止を解除する第２の制御回路と、クロック用信号とシリアルクロックラインの電圧レベルとの論理積を出力するＡＮＤゲートと、ＡＮＤゲートの出力信号に基づいて、シリアルデータラインへのデータの出力およびシリアルデータラインからのデータの入力を行なうシフトレジスタとを含むように構成したので、専用ハードウエアのような大きな回路ではなく、ポート入出力回路とシリアルＩ／Ｏの組み合わせでシリアルＩ／Ｏ回路が実現できる。従って、チップ面積が小さくコストの低い製品が得られると共に、汎用性の高い製品が得れられる効果がある。
【００５３】
この発明によれば、カウンタは、クロック用信号によってパルス群を間欠的にシリアルクロックラインへ出力するように制御され、パルス群における最後のパルスが出力されるとシリアルクロックラインへ第１の論理レベルを有する信号を出力するように構成したので、ＣＰＵの負荷を小さくすることができるという効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるＩ2 Ｃバス用シリアルＩ／Ｏ回路の構成を示すブロック図である。
【図２】  クロック発生回路の構成を示すブロック図である。
【図３】  クロック発生回路の動作状態とＡＮＤ回路およびＳＣＬラインの状態との関係を示すタイミング図である。
【図４】  Ｌホールド回路の動作を説明するタイミング図である。
【図５】  Ｉ2 Ｃバスの構成を示すブロック図である。
【図６】  Ｉ2 Ｃバス用シリアルＩ／Ｏ回路の構成を示すブロック図である。
【図７】  シリアルＩ／Ｏ回路の動作を説明するタイミング図である。
【図８】  Ｉ2 Ｃバスでのデータ転送を説明するタイミング図である。
【図９】  ＳＣＬラインについてのクロック同期について説明するタイミング図である。
【符号の説明】
６０２  立ち上がり検出回路（カウントソースの供給を停止させる手段）、６０３  ＡＮＤゲート（カウントソースの供給を停止させる手段）、６０４  インバータ（カウントソースの供給を停止させる手段）、６０５  立ち下がり検出回路（初期化する手段）、６０６  ＮＡＮＤゲート（初期化する手段）、６１１  ＳＲＦＦ（カウントソースの供給を停止させる手段）、６２１  Ｌホールド回路（Ｌホールド手段）、６３１  ＡＮＤ回路。
【図１】
0004201375.tif 000002
【図２】
0004201375.tif 000003
【図３】
0004201375.tif 000004
【図４】
0004201375.tif 000005
【図５】
0004201375.tif 000006
【図６】
0004201375.tif 000007
【図７】
0004201375.tif 000008
【図８】
0004201375.tif 000009
【図９】
0004201375.tif 000010