(57)【特許請求の範囲】
【請求項１】
複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力する第１のデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記第１のデータ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する方向選択手段と、
前記第１のデータ選択手段から出力されるデータ信号を保持するデータ保持手段と、
前記第１のデータ選択手段から出力されるデータ信号と前記データ保持手段により保持されたデータ信号のいずれかを選択して出力する第２のデータ選択手段と、
前記方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記第２のデータ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
【請求項２】
前記第２のデータ選択手段は、前記方向選択手段から出力される方向制御信号が示す方向が、出力方向から入力方向に切り替わるときに、前記データ保持手段により保持されたデータ信号を選択して出力することを特徴とする請求項１記載の入出力共用端子制御回路。
【請求項３】
前記第１のデータ選択手段および方向選択手段を制御する第１の選択信号の変化を検出する第１の検出手段と、前記方向選択手段から出力される方向制御信号の変化を検出する第２の検出手段と、該第１の検出手段および第２の検出手段の出力信号からハザード条件を検出して、前記第２のデータ選択手段を制御する第２の選択信号を出力する第３の検出手段とをさらに備えることを特徴とする請求項１または２記載の入出力共用端子制御回路。
【請求項４】
前記第１の検出手段は、所定期間経過前と経過後の前記第１の選択信号の値を比較して、前記第１のデータ選択信号の変化を検出し、前記第２の検出手段は、該所定期間経過前と経過後の前記方向制御信号の値を比較して、前記方向制御信号の変化を検出することを特徴とする請求項３記載の入出力共用端子制御回路。
【請求項５】
複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力するデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記データ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する第１の方向選択手段と、
前記第１の方向選択手段から出力される方向制御信号を保持する方向保持手段と、
前記第１の方向選択手段から出力される方向制御信号と前記方向保持手段により保持された方向制御信号のいずれかを選択して出力する第２の方向選択手段と、
前記第２の方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記データ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
【請求項６】
前記第２の方向選択手段は、前記第１の方向選択手段から出力される方向制御信号が示す方向が、入力方向から出力方向に切り替わるときに、前記方向保持手段により保持された方向制御信号を選択して出力することを特徴とする請求項５記載の入出力共用端子制御回路。
【請求項７】
前記データ選択手段および第１の方向選択手段を制御する第１の選択信号の変化を検出する第１の検出手段と、前記第１の方向選択手段から出力される方向制御信号の変化を検出する第２の検出手段と、該第１の検出手段および第２の検出手段の出力信号からハザード条件を検出して、前記第２の方向選択手段を制御する第２の選択信号を出力する第３の検出手段とをさらに備えることを特徴とする請求項５または６記載の入出力共用端子制御回路。
【請求項８】
前記第１の検出手段は、所定期間経過前と経過後の前記第１の選択信号の値を比較して、前記第１のデータ選択信号の変化を検出し、前記第２の検出手段は、該所定期間経過前と経過後の前記方向制御信号の値を比較して、前記方向制御信号の変化を検出することを特徴とする請求項７記載の入出力共用端子制御回路。
【請求項９】
複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力する第１のデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記第１のデータ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する第１の方向選択手段と、
前記第１のデータ選択手段から出力されるデータ信号を保持するデータ保持手段と、
前記第１の方向選択手段から出力される方向制御信号を保持する方向保持手段と、
前記第１のデータ選択手段から出力されるデータ信号と前記データ保持手段により保持されたデータ信号のいずれかを選択して出力する第２のデータ選択手段と、
前記第１の方向選択手段から出力される方向制御信号と前記方向保持手段により保持された方向制御信号のいずれかを選択して出力する第２の方向選択手段と、
前記第２の方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記第２のデータ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、汎用入出力（Ｉ／Ｏ）制御に係り、ＣＰＵ（中央処理装置）等の入出力共用端子を有するデバイスにおける入出力共用端子制御回路に関する。
【背景技術】
【０００２】
従来より、１つの汎用Ｉ／Ｏピンに対して２つ以上の機能を選択可能な回路を構成する場合、セレクタを用いて信号を切り替える方法が用いられている。
図７は、このような従来の入出力共用端子制御回路の構成例を示している。この制御回路は、回路１１、１２、セレクタ１３、１４、ラッチ回路（レジスタ）１５、およびスリーステートバッファ１６を備え、スリーステートバッファ１６の出力側に設けられたＩ／Ｏピン（不図示）を、２つの回路１１および１２で共用するための制御を行う。
【０００３】
回路１１と回路１２は、それぞれ異なる機能を有する。回路１１は、その動作状態に応じてＩ／Ｏピンの方向が入力か出力かを指定する制御信号ｄｉｒ１を出力し、出力の場合にはデータ信号ｄａｔａ１を出力する。同様に、回路１２は、Ｉ／Ｏピンの方向を指定する制御信号ｄｉｒ２とデータ信号ｄａｔａ２を出力する。
【０００４】
ラッチ回路１５は、例えば、フリップフロップで構成され、セレクタ１３および１４を切り替えるための選択信号ｓｅｌ＿ｄａｔａをラッチして、選択信号ｓｅｌとして出力する。
【０００５】
セレクタ１３は、選択信号ｓｅｌがＨｉｇｈ（論理“１”）のときｄａｔａ１を選択し、選択信号ｓｅｌがＬｏｗ（論理“０”）のときｄａｔａ２を選択して、選択されたデータ信号をｓｗ＿ｄａｔａとして出力する。
【０００６】
セレクタ１４は、選択信号ｓｅｌが論理“１”のときｄｉｒ１を選択し、選択信号ｓｅｌが論理“０”のときｄｉｒ２を選択して、選択された制御信号をｓｗ＿ｄｉｒとして出力する。この制御信号ｓｗ＿ｄｉｒは、負論理でスリーステートバッファ１６のイネーブル端子に入力され、論理“１”のときＩ／Ｏピンの方向が入力であることを示し、論理“０”のときＩ／Ｏピンの方向が出力であることを示す。
【０００７】
制御信号ｓｗ＿ｄｉｒが論理“１”のとき、スリーステートバッファ１６は高インピーダンス状態（入力状態）ｚとなり、Ｉ／Ｏピンから入力された信号は、不図示の信号経路を経由して回路１１または１２に転送される。また、制御信号ｓｗ＿ｄｉｒが論理“０”のとき、スリーステートバッファ１６は出力状態となって、データ信号ｓｗ＿ｄａｔａをｏｕｔｄａｔａとしてＩ／Ｏピンに出力する。
【０００８】
下記の特許文献１は、端子切り替え用のソフトウェアが起動していない場合でも端子の切り替えを可能にする共用端子制御装置に関する。
【特許文献１】特開２００４−１９２０５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した従来の入出力共用端子制御回路には、次のような問題がある。
図７に示した回路構成をとる場合、回路１１と回路１２を切り替える際にハザード出力が発生する可能性がある。図８および図９は、このようなハザード出力のパターンを示すタイミングチャートである。
【００１０】
ラッチ回路１５は、クロック信号ｃｌｋに従って動作し、その立上りエッジで選択信号ｓｅｌ＿ｄａｔａをラッチし、選択信号ｓｅｌとして出力する。したがって、時刻ｔ１において選択信号ｓｅｌ＿ｄａｔａが論理“１”から論理“０”に切り替わると、１サイクル遅れて時刻ｔ２において選択信号ｓｅｌが論理“１”から論理“０”に切り替わる。
【００１１】
まず、図８に示すように、時刻ｔ２において選択信号ｓｅｌが論理“１”（回路１１）から論理“０”（回路１２）へ切り替わった後、データ信号ｓｗ＿ｄａｔａの変化より遅れて、時刻ｔ３において制御信号ｓｗ＿ｄｉｒが論理“０”（出力）から論理“１”（入力）に切り替わったとする。この場合、時刻ｔ２とｔ３の間の期間Ｔにおいてハザード出力が発生する。
【００１２】
次に、図９に示すように、時刻ｔ２において選択信号ｓｅｌが論理“１”から論理“０”へ切り替わった後、時刻ｔ３におけるデータ信号ｓｗ＿ｄａｔａの変化よりも先に、制御信号ｓｗ＿ｄｉｒが論理“１”から論理“０”に切り替わったとする。この場合も、やはり期間Ｔにおいてハザード出力が発生する。
【００１３】
近年のＣＰＵチップでは、Ｉ／Ｏピン数の制限と汎用性を考慮した結果、様々な用途に対応可能な汎用Ｉ／Ｏピンを搭載しておき、ソフトウェアにより特定のＩ／Ｏピンに接続される信号を選択する構成が採用されている。
【００１４】
図１０は、このようなＣＰＵチップにおける入出力共用端子制御回路の構成例を示している。図１０のＣＰＵ２１は、内部レジスタ３１、ペリフェラル回路３２、セレクタ３３、およびＩ／Ｏバッファ３４を備える。外部Ｉ／Ｏピン２２は、負荷回路２３を介してＨｉｇｈレベル（ＶDD）に接続されており、ＣＰＵ２１への信号入力およびＣＰＵ２１からの信号出力に用いられる。
【００１５】
この場合、内部レジスタ３１およびペリフェラル回路３２は、図７の回路１１および回路１２にそれぞれ対応し、セレクタ３３はセレクタ１３および１４に対応し、Ｉ／Ｏバッファ３４はスリーステートバッファ１６に対応する。
【００１６】
デフォルト（リセット）時には、セレクタ３３は必ず内部レジスタ３１を選択しており、Ｉ／Ｏバッファ３４は入力状態となる。このとき、単純にソフトウェアにより、Ｉ／Ｏピン２２の接続元を内部レジスタ３１からペリフェラル回路３２へ切り替えると、接続先へハザード出力する可能性がある。
【００１７】
内部レジスタ３１からペリフェラル回路３２へ接続が切り替わる場合、図１１に示すように、制御信号ｓｗ＿ｄｉｒが論理“１”から論理“０”に切り替わり、Ｉ／Ｏバッファ３４は入力状態から出力状態へ切り替わる。
【００１８】
内部レジスタ３１が選択されているときは、Ｉ／Ｏピン２２は負荷回路２３によりＨｉｇｈレベルにプルアップされているため、データ信号ｏｕｔｄａｔａは論理“１”である。このとき、ペリフェラル回路３２へ切り替えられると、ペリフェラル回路３２の出力データ信号ｄａｔａ２も論理“１”なので、データ信号ｏｕｔｄａｔａは一度も論理“０”になるべきではない。しかし、内部遅延により、期間Ｔにおいて一瞬、論理“０”のハザード出力が発生する可能性がある。
【００１９】
Ｉ／Ｏピン２２の接続先が回路のクロック端子やライトイネーブル端子である場合、信号の立上りエッジでその回路が動作するため、接続先回路の誤動作の要因となっていた。このため、従来技術では、ソフトウェアにより適切なシーケンスを組むことによって、このようなハザード出力を未然に防止していた。
【００２０】
図１０の例では、図１２に示すように、ペリフェラル回路３２へ切り替える前に、事前に内部レジスタ３１の出力データ値を論理“０”から論理“１”へ変更しておき、その後セレクタ３３を切り替えることにより、期間Ｔにおけるハザード出力を防止することができる。
【００２１】
しかしながら、汎用化が進むにつれてＣＰＵチップのＩ／Ｏピンの数も増加する傾向にあり、ソフトウェア制御工数とソフトウェアシーケンスのチェック工数が増加しており、ハザード消去の自動化が望まれている。
【００２２】
本発明の課題は、ソフトウェアシーケンスを組むことなく、汎用Ｉ／Ｏピンからのハザード出力を防止する入出力共用端子制御回路を提供することである。
【課題を解決するための手段】
【００２３】
図１は、本発明の入出力共用端子制御回路の原理図である。
本発明の第１の局面において、入出力共用端子制御回路は、データ選択手段１０１、１０５、方向選択手段１０２、データ保持手段１０３、および出力手段１０７を備える。
【００２４】
データ選択手段１０１は、複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子１０８に転送されるデータ信号を選択して出力する。方向選択手段１０２は、上記複数の回路からそれぞれ出力される複数の方向制御信号の中から、データ選択手段１０１から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する。データ保持手段１０３は、データ選択手段１０１から出力されるデータ信号を保持する。
【００２５】
データ選択手段１０５は、データ選択手段１０１から出力されるデータ信号とデータ保持手段１０３により保持されたデータ信号のいずれかを選択して出力する。出力手段１０７は、方向選択手段１０２から出力される方向制御信号が出力方向を示しているとき、データ選択手段１０５から出力されるデータ信号を入出力共用端子１０８に出力する。
【００２６】
データ選択手段１０１から出力されるデータ信号は、出力手段１０７に直接転送されるのではなく、データ保持手段１０３およびデータ選択手段１０５を経由して出力手段１０７に転送される。データ保持手段１０３には、データ選択手段１０１から以前に出力されたデータ信号が保持されているため、データ選択手段１０５は、現在のデータ信号を以前のデータ信号に置き換えることができる。
【００２７】
したがって、図８に示したように、データ信号の切り替えより遅れて方向制御信号が出力方向から入力方向に切り替わった場合でも、切り替え後のデータ信号の代わりに切り替え前のデータ信号を出力手段１０７から出力することができ、ハザード出力が防止される。
【００２８】
本発明の第２の局面において、入出力共用端子制御回路は、データ選択手段１０１、方向選択手段１０２、１０６、方向保持手段１０４、および出力手段１０７を備える。
データ選択手段１０１は、複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子１０８に転送されるデータ信号を選択して出力する。方向選択手段１０２は、上記複数の回路からそれぞれ出力される複数の方向制御信号の中から、データ選択手段１０１から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する。方向保持手段１０４は、方向選択手段１０２から出力される方向制御信号を保持する。
【００２９】
方向選択手段１０６は、方向選択手段１０２から出力される方向制御信号と方向保持手段１０４により保持された方向制御信号のいずれかを選択して出力する。出力手段１０７は、方向選択手段１０６から出力される方向制御信号が出力方向を示しているとき、データ選択手段１０１から出力されるデータ信号を入出力共用端子１０８に出力する。
【００３０】
方向選択手段１０２から出力される方向制御信号は、出力手段１０７に直接転送されるのではなく、方向保持手段１０４および方向選択手段１０６を経由して出力手段１０７に転送される。方向保持手段１０４には、方向選択手段１０２から以前に出力された方向制御信号が保持されているため、方向選択手段１０６は、現在の方向制御信号を以前の方向制御信号に置き換えることができる。
【００３１】
したがって、図９に示したように、データ信号の切り替えより先に方向制御信号が入力方向から出力方向に切り替わった場合でも、切り替え後の方向制御信号の代わりに切り替え前の方向制御信号を出力手段１０７に出力することができる。これにより、出力手段１０７からデータ信号が出力されるタイミングを遅らせることができるため、ハザード出力が防止される。
【００３２】
本発明の第３の局面において、入出力共用端子制御回路は、データ選択手段１０１、１０５、方向選択手段１０２、１０６、データ保持手段１０３、方向保持手段１０４、および出力手段１０７を備える。
【００３３】
データ選択手段１０１は、複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子１０８に転送されるデータ信号を選択して出力する。方向選択手段１０２は、上記複数の回路からそれぞれ出力される複数の方向制御信号の中から、データ選択手段１０１から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する。データ保持手段１０３は、データ選択手段１０１から出力されるデータ信号を保持する。方向保持手段１０４は、方向選択手段１０２から出力される方向制御信号を保持する。
【００３４】
データ選択手段１０５は、データ選択手段１０１から出力されるデータ信号とデータ保持手段１０３により保持されたデータ信号のいずれかを選択して出力する。方向選択手段１０６は、方向選択手段１０２から出力される方向制御信号と方向保持手段１０４により保持された方向制御信号のいずれかを選択して出力する。出力手段１０７は、方向選択手段１０６から出力される方向制御信号が出力方向を示しているとき、データ選択手段１０５から出力されるデータ信号を入出力共用端子１０８に出力する。
【００３５】
このような構成によれば、図８および図９に示した両方の場合において、ハザード出力を防止することができる。
後述する図２の入出力共用端子制御回路において、データ選択手段１０１、１０５、方向選択手段１０２、１０６、データ保持手段１０３、方向保持手段１０４、および出力手段１０７は、セレクタ２０２、２３５、２０３、２３６、ラッチ回路２０４、２２２、およびスリーステートバッファ２０８にそれぞれ対応する。
【００３６】
また、後述する図５の入出力共用端子制御回路において、データ選択手段１０１、１０５、方向選択手段１０２、１０６、データ保持手段１０３、方向保持手段１０４、および出力手段１０７は、セレクタ５０２、５３５、５０３、５３６、ラッチ回路５０４、５２２、およびスリーステートバッファ５０８にそれぞれ対応する。
【発明の効果】
【００３７】
本発明によれば、ＣＰＵ等の入出力共用端子を有するデバイスにおいて、データ信号の切り替えより遅れて端子の方向が出力から入力に切り替わった場合、および／または、データ信号の切り替えより先に端子の方向が入力から出力に切り替わった場合に、端子からのハザード出力が防止される。
【発明を実施するための最良の形態】
【００３８】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、図７の入出力共用端子制御回路においてハザード対策回路を設けた構成例を示している。この制御回路は、セレクタ２０２、２０３、ラッチ回路２０１、２０４、選択信号比較回路２０５、方向制御信号比較回路２０６、ハザード条件検出回路２０７、およびスリーステートバッファ２０８を備え、スリーステートバッファ２０８の出力側に設けられたＩ／Ｏピン（不図示）を、２つの回路１１および１２で共用するための制御を行う。
【００３９】
このうち、セレクタ２０２、２０３、ラッチ回路２０１、およびスリーステートバッファ２０８の動作は、図７のセレクタ１３、１４、ラッチ回路１５、およびスリーステートバッファ１６の動作と同様である。
【００４０】
ラッチ回路２０４は、クロック信号ｃｌｋの立上りエッジでデータ信号ｓｗ＿ｄａｔａをラッチし、データ信号ｓｗ＿ｄａｔａ＿ｃｐｔとして出力する。このデータ信号ｓｗ＿ｄａｔａ＿ｃｐｔは、１サイクル前のデータ信号ｓｗ＿ｄａｔａの値を示している。
【００４１】
選択信号比較回路２０５は、ラッチ回路２１１およびＸＯＲ回路２１２を含み、最新の選択信号ｓｅｌ＿ｄａｔａと以前の選択信号ｓｅｌを比較し、比較結果を示す信号ｓｅｌ＿ｃｈａｎｇｅを生成する。
【００４２】
ラッチ回路２１１は、クロック信号ｃｌｋの立上りエッジで選択信号ｓｅｌをラッチし、選択信号ｓｅｌ＿ｓｈｉｆｔとして出力する。この選択信号ｓｅｌ＿ｓｈｉｆｔは、２サイクル前の選択信号ｓｅｌ＿ｄａｔａの値を示している。ＸＯＲ回路２１２は、ｓｅｌ＿ｄａｔａとｓｅｌ＿ｓｈｉｆｔの排他的論理和を、信号ｓｅｌ＿ｃｈａｎｇｅとして出力する。
【００４３】
したがって、最新の選択信号ｓｅｌ＿ｄａｔａが２サイクル前の値と同じであれば、信号ｓｅｌ＿ｃｈａｎｇｅは論理“０”となり、最新の選択信号ｓｅｌ＿ｄａｔａが２サイクル前の値と異なれば、信号ｓｅｌ＿ｃｈａｎｇｅは論理“１”となる。これにより、選択信号ｓｅｌ＿ｄａｔａの状態変化が検出される。
【００４４】
方向制御信号比較回路２０６は、セレクタ２２１、ラッチ回路２２２、およびＸＯＲ回路２２３を含み、最新の制御信号ｄｉｒ１またはｄｉｒ２と以前の制御信号ｓｗ＿ｄｉｒを比較し、比較結果を示す信号ｄｉｒ＿ｃｈａｎｇｅを生成する。
【００４５】
セレクタ２２１は、選択信号ｓｅｌ＿ｄａｔａが論理“１”のときｄｉｒ１を選択し、選択信号ｓｅｌ＿ｄａｔａが論理“０”のときｄｉｒ２を選択して、選択された制御信号をｓｅｌ＿ｄｉｒとして出力する。この制御信号ｓｅｌ＿ｄｉｒは、最新の選択信号ｓｅｌ＿ｄａｔａにより選択される制御信号ｄｉｒ１またはｄｉｒ２の値を示している。
【００４６】
ラッチ回路２２２は、クロック信号ｃｌｋの立上りエッジで制御信号ｓｗ＿ｄｉｒをラッチし、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔとして出力する。この制御信号ｓｗ＿ｄｉｒ＿ｃｐｔは、２サイクル前の制御信号ｓｅｌ＿ｄｉｒの値を示している。ＸＯＲ回路２２３は、ｓｗ＿ｄｉｒ＿ｃｐｔとｓｅｌ＿ｄｉｒの排他的論理和を、信号ｄｉｒ＿ｃｈａｎｇｅとして出力する。
【００４７】
したがって、最新の制御信号ｓｅｌ＿ｄｉｒが２サイクル前の値と同じであれば、信号ｄｉｒ＿ｃｈａｎｇｅは論理“０”となり、最新の制御信号ｓｅｌ＿ｄｉｒが２サイクル前の値と異なれば、信号ｄｉｒ＿ｃｈａｎｇｅは論理“１”となる。これにより、制御信号ｓｅｌ＿ｄｉｒの状態変化が検出される。
【００４８】
ハザード条件検出回路２０７は、ＡＮＤ回路２３１、２３３、２３４、インバータ２３２、およびセレクタ２３５、２３６を含み、信号ｓｅｌ＿ｃｈａｎｇｅと信号ｄｉｒ＿ｃｈａｎｇｅからハザード条件を検出し、データ信号ｓｗ＿ｄａｔａまたは制御信号ｓｗ＿ｄｉｒを１サイクル前の値に置き換えることで、データ信号ｓｗ＿ｄａｔａ＿ｏまたは制御信号ｓｗ＿ｄｉｒ＿ｏを生成する。
【００４９】
ＡＮＤ回路２３１は、信号ｓｅｌ＿ｃｈａｎｇｅと信号ｄｉｒ＿ｃｈａｎｇｅの論理積を、ハザード条件検出信号ｈａｚａｒｄとして出力し、インバータ２３２は、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔの否定を出力する。ＡＮＤ回路２３３は、インバータ２３２の出力と信号ｈａｚａｒｄの論理積を、信号ｄａｔａ＿ｌｏｃｋとして出力し、ＡＮＤ回路２３４は、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔと信号ｈａｚａｒｄの論理積を、信号ｄｉｒ＿ｌｏｃｋとして出力する。
【００５０】
セレクタ２３５は、信号ｄａｔａ＿ｌｏｃｋが論理“１”のときデータ信号ｓｗ＿ｄａｔａ＿ｃｐｔを選択し、信号ｄａｔａ＿ｌｏｃｋが論理“０”のときデータ信号ｓｗ＿ｄａｔａを選択して、選択されたデータ信号をｓｗ＿ｄａｔａ＿ｏとして出力する。
【００５１】
セレクタ２３６は、信号ｄｉｒ＿ｌｏｃｋが論理“１”のとき制御信号ｓｗ＿ｄｉｒ＿ｃｐｔを選択し、信号ｄｉｒ＿ｌｏｃｋが論理“０”のとき制御信号ｓｗ＿ｄｉｒを選択して、選択された制御信号をｓｗ＿ｄｉｒ＿ｏとして出力する。
【００５２】
この制御信号ｓｗ＿ｄｉｒ＿ｏは、負論理でスリーステートバッファ２０８のイネーブル端子に入力される。したがって、制御信号ｓｗ＿ｄｉｒ＿ｏが論理“１”のとき、スリーステートバッファ２０８は入力状態となり、制御信号ｓｗ＿ｄｉｒ＿ｏが論理“０”のとき、スリーステートバッファ２０８は出力状態となって、データ信号ｓｗ＿ｄａｔａ＿ｏをｏｕｔｄａｔａとしてＩ／Ｏピンに出力する。
【００５３】
このような入出力共用端子制御回路によれば、下記の条件（１）および（２）が同時に成立する場合、ハザード条件検出信号ｈａｚａｒｄが論理“１”となり、ハザード条件検出回路２０７はハザードデータ出力を回避するように動作する。
（１）最新の選択信号ｓｅｌ＿ｄａｔａと２サイクル前の値を比較した結果、値が変化している（信号ｓｅｌ＿ｃｈａｎｇｅが論理“１”）。
（２）回路１１の制御信号ｄｉｒ１と回路１２の制御信号ｄｉｒ２の方向が異なっている（信号ｄｉｒ＿ｃｈａｎｇｅが論理“１”）。
【００５４】
なお、条件（１）および（２）が同時に成立しない場合は、ハザードデータが出力されないため、必ずタイミングレスでデータ信号ｏｕｔｄａｔａの出力制御が可能である。
図３および図４は、条件（１）および（２）が同時に成立する場合にハザード出力が回避されることを示すタイミングチャートである。
【００５５】
まず、図３のタイミングチャートでは、図８と同様に、時刻ｔ１２において選択信号ｓｅｌが論理“１”から論理“０”に切り替わった後、データ信号ｓｗ＿ｄａｔａの変化より遅れて、制御信号ｓｗ＿ｄｉｒが論理“０”から論理“１”に切り替わる。その後、時刻ｔ１３において選択信号ｓｅｌ＿ｓｈｉｆｔが論理“１”から論理“０”に切り替わる。
【００５６】
このため、選択信号ｓｅｌ＿ｄａｔａが変化した時刻ｔ１１と、選択信号ｓｅｌ＿ｓｈｉｆｔが変化した時刻ｔ１３の間の期間において、信号ｓｅｌ＿ｃｈａｎｇｅが論理“１”となる。同様にして、制御信号ｓｅｌ＿ｄｉｒが変化した時刻ｔ１１と、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔが変化した時刻ｔ１３の間の期間において、信号ｄｉｒ＿ｃｈａｎｇｅも論理“１”となる。したがって、時刻ｔ１１から時刻ｔ１３までの２サイクルの間、信号ｈａｚａｒｄが論理“１”となる。
【００５７】
この２サイクルの間は、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔが論理“０”なので、信号ｄａｔａ＿ｌｏｃｋは論理“１”となり、信号ｄｉｒ＿ｌｏｃｋは論理“０”となる。このため、データ信号ｓｗ＿ｄａｔａ＿ｃｐｔがｓｗ＿ｄａｔａ＿ｏとして出力され、制御信号ｓｗ＿ｄｉｒがｓｗ＿ｄｉｒ＿ｏとして出力される。
【００５８】
このように、信号ｄａｔａ＿ｌｏｃｋにより、２サイクルの間、データ信号ｓｗ＿ｄａｔａ＿ｏの値は、変化する前のデータ信号ｓｗ＿ｄａｔａの値に固定される。したがって、時刻ｔ１２とｔ１３の間に、制御信号ｓｗ＿ｄｉｒ＿ｏによりスリーステートバッファ２０８の方向を切り替えても、ハザードデータがｏｕｔｄａｔａとして出力されることはない。
【００５９】
なお、図２の制御回路では、時刻ｔ１１から時刻ｔ１３までの２サイクルの間、データ信号ｓｗ＿ｄａｔａをデータ信号ｓｗ＿ｄａｔａ＿ｃｐｔに置き換える構成になっているが、この期間を３サイクル以上の所定期間に延長することも可能である。
【００６０】
次に、図４のタイミングチャートでは、図９と同様に、時刻ｔ１２において選択信号ｓｅｌが論理“１”から論理“０”へ切り替わった後、データ信号ｓｗ＿ｄａｔａの変化よりも先に、制御信号ｓｗ＿ｄｉｒが論理“１”から論理“０”に切り替わる。その後、時刻ｔ１３において選択信号ｓｅｌ＿ｓｈｉｆｔが論理“１”から論理“０”に切り替わる。
【００６１】
このため、図３の場合と同様に、時刻ｔ１１から時刻ｔ１３までの２サイクルの間、信号ｓｅｌ＿ｃｈａｎｇｅが論理“１”となり、信号ｄｉｒ＿ｃｈａｎｇｅも論理“１”となる。したがって、この２サイクルの間、信号ｈａｚａｒｄが論理“１”となる。
【００６２】
この期間は、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔが論理“１”なので、信号ｄａｔａ＿ｌｏｃｋは論理“０”となり、信号ｄｉｒ＿ｌｏｃｋは論理“１”となる。このため、データ信号ｓｗ＿ｄａｔａがｓｗ＿ｄａｔａ＿ｏとして出力され、制御信号ｓｗ＿ｄｉｒ＿ｃｐｔがｓｗ＿ｄｉｒ＿ｏとして出力される。
【００６３】
このように、信号ｄｉｒ＿ｌｏｃｋにより、２サイクルの間、制御信号ｓｗ＿ｄｉｒ＿ｏの値は、変化する前の制御信号ｓｗ＿ｄｉｒの値に固定される。したがって、時刻ｔ１２とｔ１３の間に、スリーステートバッファ２０８の方向が切り替えられることはなく、ハザードデータがｏｕｔｄａｔａとして出力されることはない。この期間に、データ信号ｓｗ＿ｄａｔａ＿ｏの切り替えが完了する。
【００６４】
なお、図２の制御回路では、時刻ｔ１１から時刻ｔ１３までの２サイクルの間、制御信号ｓｗ＿ｄｉｒを制御信号ｓｗ＿ｄｉｒ＿ｃｐｔに置き換える構成になっているが、この期間を３サイクル以上の所定期間に延長することも可能である。
【００６５】
さらに、図２の制御回路では、回路１１と回路１２の２つの回路でＩ／Ｏピンを共用する構成となっているが、本発明は３つ以上の回路に対しても適用可能である。例えば、４つの回路でＩ／Ｏピンを共用する場合、入出力共用端子制御回路の構成は図５のようになる。
【００６６】
図５の制御回路は、セレクタ５０２、５０３、ラッチ回路５０１、５０４、選択信号比較回路５０５、方向制御信号比較回路５０６、ハザード条件検出回路５０７、およびスリーステートバッファ５０８を備え、スリーステートバッファ５０８の出力側に設けられたＩ／Ｏピン（不図示）を、４つの回路Ａ、Ｂ、Ｃ、およびＤ（不図示）で共用するための制御を行う。
【００６７】
このうち、ラッチ回路５０４およびスリーステートバッファ５０８の動作は、図２のラッチ回路２０４およびスリーステートバッファ２０８の動作と同様である。
回路Ａ、Ｂ、Ｃ、およびＤは、データ信号ｄａｔａ１、ｄａｔａ２、ｄａｔａ３、およびｄａｔａ４と、制御信号ｄｉｒ１、ｄｉｒ２、ｄｉｒ３、およびｄｉｒ４をそれぞれ出力する。
【００６８】
ラッチ回路５０１は、セレクタ５０２および５０３を切り替えるための２ビットの選択信号ｓｅｌ＿ｄａｔａ［１：０］をラッチして、選択信号ｓｅｌ［１：０］として出力する。
【００６９】
セレクタ５０２は、選択信号ｓｅｌ［１：０］の値が“００”のときｄａｔａ１を選択し、“０１”のときｄａｔａ２を選択し、“１０”のときｄａｔａ３を選択し、“１１”のときｄａｔａ４を選択して、選択されたデータ信号をｓｗ＿ｄａｔａとして出力する。
【００７０】
セレクタ５０３は、選択信号ｓｅｌ［１：０］の値が“００”のときｄｉｒ１を選択し、“０１”のときｄｉｒ２を選択し、“１０”のときｄｉｒ３を選択し、“１１”のときｄｉｒ４を選択して、選択された制御信号をｓｗ＿ｄｉｒとして出力する。
【００７１】
選択信号比較回路５０５は、ラッチ回路５１１および比較回路５１２を含み、最新の選択信号ｓｅｌ＿ｄａｔａ［１：０］と以前の選択信号ｓｅｌ［１：０］を比較し、比較結果を示す信号ｓｅｌ＿ｃｈａｎｇｅを生成する。
【００７２】
ラッチ回路５１１は、クロック信号ｃｌｋの立上りエッジで選択信号ｓｅｌ［１：０］をラッチし、選択信号ｓｅｌ＿ｓｈｉｆｔ［１：０］として出力する。
比較回路５１２は、図６に示すように、ＸＯＲ回路６０１、６０２、およびＯＲ回路６０３を含む。ＸＯＲ回路６０１は、ｓｅｌ＿ｄａｔａ［０］とｓｅｌ＿ｓｈｉｆｔ［０］の排他的論理和を出力し、ＸＯＲ回路６０２は、ｓｅｌ＿ｄａｔａ［１］とｓｅｌ＿ｓｈｉｆｔ［１］の排他的論理和を出力する。ＯＲ回路６０３は、ＸＯＲ回路６０１の出力とＸＯＲ回路６０２の出力の論理和を、信号ｓｅｌ＿ｃｈａｎｇｅとして出力する。これにより、選択信号ｓｅｌ＿ｄａｔａ［１：０］の状態変化が検出される。
【００７３】
方向制御信号比較回路５０６は、セレクタ５２１、ラッチ回路５２２、およびＸＯＲ回路５２３を含み、最新の制御信号ｄｉｒ１、ｄｉｒ２、ｄｉｒ３、またはｄｉｒ４と以前の制御信号ｓｗ＿ｄｉｒを比較し、比較結果を示す信号ｄｉｒ＿ｃｈａｎｇｅを生成する。
【００７４】
セレクタ５２１は、選択信号ｓｅｌ＿ｄａｔａ［１：０］の値が“００”のときｄｉｒ１を選択し、“０１”のときｄｉｒ２を選択し、“１０”のときｄｉｒ３を選択し、“１１”のときｄｉｒ４を選択して、選択された制御信号をｓｅｌ＿ｄｉｒとして出力する。ラッチ回路５２２およびＸＯＲ回路５２３の動作は、図２のラッチ回路２２２およびＸＯＲ回路２２３の動作と同様である。したがって、信号ｄｉｒ＿ｃｈａｎｇｅにより、制御信号ｓｅｌ＿ｄｉｒの状態変化が検出される。
【００７５】
ハザード条件検出回路５０７は、ＡＮＤ回路５３１、５３３、５３４、インバータ５３２、およびセレクタ５３５、５３６を含み、図２のハザード条件検出回路２０７と同様にして、信号ｓｅｌ＿ｃｈａｎｇｅと信号ｄｉｒ＿ｃｈａｎｇｅからハザード条件を検出し、データ信号ｓｗ＿ｄａｔａ＿ｏおよび制御信号ｓｗ＿ｄｉｒ＿ｏを出力する。
【００７６】
このような入出力共用端子制御回路によれば、図２の場合と同様に、下記の条件（１）および（２）が同時に成立する場合、ハザード条件検出信号ｈａｚａｒｄが論理“１”となり、ハザード条件検出回路５０７はハザードデータ出力を回避するように動作する。
（１）最新の選択信号ｓｅｌ＿ｄａｔａ［１：０］と２サイクル前の値を比較した結果、値が変化している（信号ｓｅｌ＿ｃｈａｎｇｅが論理“１”）。
（２）切り替え前の回路の制御信号ｄｉｒｉと切り替え後の回路の制御信号ｄｉｒｊ（ｉ，ｊ＝１，２，３，４，ｉ≠ｊ）の方向が異なっている（信号ｄｉｒ＿ｃｈａｎｇｅが論理“１”）。
【００７７】
（付記１）複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力する第１のデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記第１のデータ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する方向選択手段と、
前記第１のデータ選択手段から出力されるデータ信号を保持するデータ保持手段と、
前記第１のデータ選択手段から出力されるデータ信号と前記データ保持手段により保持されたデータ信号のいずれかを選択して出力する第２のデータ選択手段と、
前記方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記第２のデータ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
（付記２）前記第２のデータ選択手段は、前記方向選択手段から出力される方向制御信号が示す方向が、出力方向から入力方向に切り替わるときに、前記データ保持手段により保持されたデータ信号を選択して出力することを特徴とする付記１記載の入出力共用端子制御回路。
（付記３）前記第１のデータ選択手段および方向選択手段を制御する第１の選択信号の変化を検出する第１の検出手段と、前記方向選択手段から出力される方向制御信号の変化を検出する第２の検出手段と、該第１の検出手段および第２の検出手段の出力信号からハザード条件を検出して、前記第２のデータ選択手段を制御する第２の選択信号を出力する第３の検出手段とをさらに備えることを特徴とする付記１または２記載の入出力共用端子制御回路。
（付記４）前記第１の検出手段は、所定期間経過前と経過後の前記第１の選択信号の値を比較して、前記第１のデータ選択信号の変化を検出し、前記第２の検出手段は、該所定期間経過前と経過後の前記方向制御信号の値を比較して、前記方向制御信号の変化を検出することを特徴とする付記３記載の入出力共用端子制御回路。
（付記５）前記方向選択手段から出力される方向制御信号を保持する方向保持手段をさらに備え、前記第３の検出手段は、該方向保持手段により保持された方向制御信号の値に応じて前記第２の選択信号の値を変更することを特徴とする付記３または４記載の入出力共用端子制御回路。
（付記６）複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力するデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記データ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する第１の方向選択手段と、
前記第１の方向選択手段から出力される方向制御信号を保持する方向保持手段と、
前記第１の方向選択手段から出力される方向制御信号と前記方向保持手段により保持された方向制御信号のいずれかを選択して出力する第２の方向選択手段と、
前記第２の方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記データ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
（付記７）前記第２の方向選択手段は、前記第１の方向選択手段から出力される方向制御信号が示す方向が、入力方向から出力方向に切り替わるときに、前記方向保持手段により保持された方向制御信号を選択して出力することを特徴とする付記６記載の入出力共用端子制御回路。
（付記８）前記データ選択手段および第１の方向選択手段を制御する第１の選択信号の変化を検出する第１の検出手段と、前記第１の方向選択手段から出力される方向制御信号の変化を検出する第２の検出手段と、該第１の検出手段および第２の検出手段の出力信号からハザード条件を検出して、前記第２の方向選択手段を制御する第２の選択信号を出力する第３の検出手段とをさらに備えることを特徴とする付記６または７記載の入出力共用端子制御回路。
（付記９）前記第１の検出手段は、所定期間経過前と経過後の前記第１の選択信号の値を比較して、前記第１のデータ選択信号の変化を検出し、前記第２の検出手段は、該所定期間経過前と経過後の前記方向制御信号の値を比較して、前記方向制御信号の変化を検出することを特徴とする付記８記載の入出力共用端子制御回路。
（付記１０）前記第３の検出手段は、前記方向保持手段により保持された方向制御信号の値に応じて前記第２の選択信号の値を変更することを特徴とする付記８または９記載の入出力共用端子制御回路。
（付記１１）複数の回路からそれぞれ出力される複数のデータ信号の中から、入出力共用端子に転送されるデータ信号を選択して出力する第１のデータ選択手段と、
前記複数の回路からそれぞれ出力される複数の方向制御信号の中から、前記第１のデータ選択手段から出力されるデータ信号と同じ回路の方向制御信号を選択して出力する第１の方向選択手段と、
前記第１のデータ選択手段から出力されるデータ信号を保持するデータ保持手段と、
前記第１の方向選択手段から出力される方向制御信号を保持する方向保持手段と、
前記第１のデータ選択手段から出力されるデータ信号と前記データ保持手段により保持されたデータ信号のいずれかを選択して出力する第２のデータ選択手段と、
前記第１の方向選択手段から出力される方向制御信号と前記方向保持手段により保持された方向制御信号のいずれかを選択して出力する第２の方向選択手段と、
前記第２の方向選択手段から出力される方向制御信号が出力方向を示しているとき、前記第２のデータ選択手段から出力されるデータ信号を前記入出力共用端子に出力する出力手段と
を備えることを特徴とする入出力共用端子制御回路。
【図面の簡単な説明】
【００７８】
【図１】本発明の入出力共用端子制御回路の原理図である。
【図２】第１の入出力共用端子制御回路の構成図である。
【図３】第１の切り替え動作のタイミングチャートである。
【図４】第２の切り替え動作のタイミングチャートである。
【図５】第２の入出力共用端子制御回路の構成図である。
【図６】比較回路の構成図である。
【図７】従来の入出力共用端子制御回路の構成図である。
【図８】従来の第１の切り替え動作のタイミングチャートである。
【図９】従来の第２の切り替え動作のタイミングチャートである。
【図１０】従来のＣＰＵにおける入出力共用端子制御回路の構成図である。
【図１１】従来のＣＰＵにおける第１の切り替え動作のタイミングチャートである。
【図１２】従来のＣＰＵにおける第２の切り替え動作のタイミングチャートである。
【符号の説明】
【００７９】
１１、１２  回路
１３、１４、３３、２０２、２０３、２２１、２３５、２３６、５０２、５０３、５２１、５３５、５３６  セレクタ
１５、２０１、２０４、２１１、２２２、５０１、５０４、５１１、５２２  ラッチ回路
１６、２０８、５０８  スリーステートバッファ
２１  ＣＰＵ
２２  Ｉ／Ｏピン
２３  負荷回路
３１  内部レジスタ
３２  ペリフェラル回路
３４  Ｉ／Ｏバッファ
１０１、１０５  データ選択手段
１０２、１０６  方向選択手段
１０３  データ保持手段
１０４  方向保持手段
１０７  出力手段
２０５、５０５  選択信号比較回路
２０６、５０６  方向制御信号比較回路
２０７、５０７  ハザード条件検出回路
２１２、２２３、５２３、６０１、６０２  ＸＯＲ回路
２３１、２３３、２３４、５３１、５３３、５３４  ＡＮＤ回路
２３２、５３２  インバータ
５１２  比較回路
６０３  ＯＲ回路
【図１】
0004699927.tif 000002
【図２】
0004699927.tif 000003
【図３】
0004699927.tif 000004
【図４】
0004699927.tif 000005
【図５】
0004699927.tif 000006
【図６】
0004699927.tif 000007
【図７】
0004699927.tif 000008
【図８】
0004699927.tif 000009
【図９】
0004699927.tif 000010
【図１０】
0004699927.tif 000011
【図１１】
0004699927.tif 000012
【図１２】
0004699927.tif 000013