(57)【要約】【課題】  従来、ＣＰＵがマクロ回路からマクロデータを読み込む際に多くのリードクロックが必要であった。【解決手段】  本発明のバスインターフェイス回路１００は、マクロクロックに基づきマクロデータを保持するマクロクロック同期データ保持部１０１と、リードクロックに基づきマクロデータを保持するリードクロック同期データ保持部１０２と、リードクロックに基づきリード期間信号を出力するリード期間判定部１０３と、リード期間信号とマクロクロックとに基づきデータ保持信号を出力するマクロクロック検出部１０４と、データ保持信号とリードクロックに基づきメタ・ステーブル回避信号を出力するメタ・ステーブル回避部１０５と、メタ・ステーブル回避信号に基づきマクロクロック同期データ保持部１０１の出力、又は、リードクロック同期データ保持部１０２の出力のいずれかを選択してリードデータを出力するリードデータセレクタ１０６とを有する。【選択図】図１
2006236060.tif 000002
【特許請求の範囲】
【請求項１】
マクロ回路のマクロクロックに基づいてマクロデータを保持するマクロクロック同期データ保持部と、
前記マクロデータの読み込み動作時に用いられるリードクロックに基づいて前記マクロデータを保持するリードクロック同期データ保持部と、
前記リードクロックに基づきリード期間信号を出力するリード期間判定部と、
前記リード期間信号と前記マクロクロックとに基づきデータ保持信号を出力するマクロクロック検出部と、
前記データ保持信号と前記リードクロックに基づいてメタ・ステーブル回避信号を出力するメタ・ステーブル回避部と、
前記メタ・ステーブル回避信号に基づいて、前記マクロクロック同期データ保持部の出力または前記リードクロック同期データ保持部の出力のいずれかを選択してリードデータを出力するリードデータセレクタとを有するバスインターフェイス回路。
【請求項２】
前記マクロデータの読み込み動作時であって、前記リードクロックの１回目の切り替わりの時に入力されるマクロデータを、前記リードデータとして出力することを特徴とする請求項１記載のバスインターフェイス回路。
【請求項３】
前記メタ・ステーブル回避部は、前記リードクロックの１回目の切り替わりと３回目の切り替わりとの間にマクロクロックが切り替わった時にメタ・ステーブル回避信号を出力することを特徴とする請求項１又は２に記載のバスインターフェイス回路。
【請求項４】
前記マクロクロック同期データ保持部は、前記データ保持信号に基づいて、マクロクロックが入力されたときのデータの更新又はデータの維持をいずれか一方を選択できることを特徴とする請求項１乃至３のいずれか１項に記載のバスインターフェイス回路。
【請求項５】
前記リード期間判定部がリード期間として判定していない時は、前記マクロクロック同期データ保持部及び前記リードクロック同期データ保持部のいずれか一方の出力を選択する動作を行わないことを特徴とする請求項１乃至４のいずれか１項に記載のバスインターフェイス回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はバスインターフェイス回路に関し、特にマイクロコンピュータに用いられるバスインターフェイス回路に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータ（以下、マイコンと称す）は、演算部であるＣＰＵの演算能力を向上させるために、動作速度が高速化している。マイコンでは、周辺装置の制御や動作命令の格納などの各種機能をブロック化したマクロ回路を有しているのが一般的である。このマクロ回路の動作速度が高速である必要がない場合は、消費電力を低減させるために、マクロ回路は低速で動作させることが行われている。マクロ回路とＣＰＵはデータバスを介して接続されるのが一般的である。ＣＰＵはこのデータバスを経由してマクロ回路から各種データの読み込み動作を行う。ＣＰＵはリードクロックを出力し、そのリードクロックに基づきマクロ回路からデータを読み込む。この時、マクロ回路が非同期で動作しており、リードクロックとは関係のないマクロクロックで動作している場合、リードクロックとマクロクロックが同時に変化し、データの干渉を起こすメタ・ステーブルが発生する。このメタ・ステーブルを防止するために非同期調停機能をもったバスインターフェイス回路が必要となる。従来のメタ・ステーブル防止機能を持ったバスインターフェイス回路５００を図５に示す。図５に示すバスインターフェイス回路はリードクロックの１回目の立ち下がりの時のマクロデータをリードデータとして出力する回路である。
【０００３】
しかしながら、図５に示すバスインターフェイス回路５００によっても、ＣＰＵのマクロデータの読み込みはマクロクロックとリードクロックの関係に依存する。図５に示すバスインターフェイス回路５００において、少ないクロック数でデータの読み込みを完了する場合のタイミングチャートを図６に示す。図６に示す例は、リードクロックの１回目の立ち下がり後で、２回目の立ち下がり前までの時間でマクロクロックが立ち上がっている。リードクロックの１回目の立ち下がりの前のデータＤ０は、マクロクロックの立ち上がり後にリードデータとして確定する。従って、２回目のリードクロックの立ち下がり時には、データＤ０がリードデータとして確定している。よって、２回目のリードクロックの立ち下がりで、ＣＰＵはデータＤ０を読み込むことができる。
【０００４】
また、図５に示すバスインターフェイス回路５００において、データの読み込みに多くのクロック数が必要な場合のタイミングチャートを図７に示す。図７に示す例は、リードクロックの１回目の立ち下がりの前でマクロクロックが立ち上がっている。リードクロックの１回目の立ち下がり時のデータＤ１である。このデータＤ１がリードデータとして確定するのは次のマクロクロックの立ち上がり後である。従って、次のマクロクロックの立ち上がりがある時まで、ＣＰＵはリードクロックを出力し続けなければ、データＤ１をリードデータとして読み込むことができない。よって、ＣＰＵがリードデータを読み込むためには多くの時間が必要になる。
【０００５】
従来のバスインターフェイス回路５００は、マクロクロックとリードクロックの関係によって、その時に必要になるマクロクロックのクロック数が異なる。従来のバスインターフェイス回路５００では、ＣＰＵがマクロデータを読み込むために、最大でマクロクロック１周期分のデータアクセス時間が必要になる。この場合、マクロクロックを高速化することでデータアクセス時間を短縮することが考えられるが、近年の低消費電力化の傾向から現実的な方法ではない。
【０００６】
特許文献１に非同期調停機能を持つバスインターフェイス回路が開示されている。このバスインターフェイス回路によれば、メタ・ステーブルを防止しながら、非同期調停を行うことができる。
【０００７】
しかしながら、特許文献１に開示されているバスインターフェイス回路よっても、マルチビットの非同期調停を行うことはできない。マルチビットのマクロデータの非同期調整を行う場合、そのリードデータの確定をシングルビットの制御信号にて行う必要がある。特許文献１に示される回路でマルチビットを扱った場合、各ビットのデータをそれぞれ別の配線によるクロックで制御することになる。つまり、リードデータの確定をマルチビットのクロック信号で行うことになる。この場合、ビットによって同期タイミングがずれると、リードデータとマクロデータが異なるデータとなってしまう。つまり、正しいマクロデータをＣＰＵが読み込めない問題がある。
【特許文献１】特開平５−３１３７８３号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来、ＣＰＵとマクロ回路の間でマルチビットのデータを扱う場合、ＣＰＵがデータを取り込むために多くのリードクロックが必要であった。
【課題を解決するための手段】
【０００９】
本発明にかかるバスインターフェイス回路は、マクロ回路のマクロクロックに基づいてマクロデータを保持するマクロクロック同期データ保持部と、前記マクロデータの読み込み動作時に用いられるリードクロックに基づいて前記マクロデータを保持するリードクロック同期データ保持部と、前記リードクロックに基づきリード期間信号を出力するリード期間判定部と、前記リード期間信号と前記マクロクロックとに基づきデータ保持信号を出力するマクロクロック検出部と、前記データ保持信号と前記リードクロックに基づいてメタ・ステーブル回避信号を出力するメタ・ステーブル回避部と、前記メタ・ステーブル回避信号に基づいて、前記マクロクロック同期データ保持部の出力または前記リードクロック同期データ保持部の出力のいずれかを選択してリードデータを出力するリードデータセレクタとを有する。
【００１０】
本発明においては、マクロクロックとリードクロックとの関係から、メタ・ステーブル回避部がメタ・ステーブル回避信号を生成する。また、このメタ・ステーブル回避信号に基づいて、マクロクロックに同期したマクロデータを出力するマクロクロック同期データ保持部からの入力又はリードクロックに同期したマクロデータを出力するリードクロック同期データ保持部からの入力のいずれかを選択して出力するリードデータセレクタを有する。これにより、ＣＰＵは少ないリードクロック数で正しいマクロデータを取り込むことが可能になる。
【発明の効果】
【００１１】
本発明によれば、少ないリードクロック数で正しいマクロデータを出力するバスインターフェイス回路を実現できる。
【発明を実施するための最良の形態】
【００１２】
実施の形態１
【００１３】
本発明の実施の形態１のバスインターフェイス回路１００のブロック図を図１に示す。図１を参照して実施の形態１のバスインターフェイス回路１００について説明する。実施の形態１のバスインターフェイスはマクロクロック同期データ保持部１０１、リードクロック同期データ保持部１０２、リード期間判定部１０３、マクロクロック検出部１０４、メタ・ステーブル回避部１０５、リードデータセレクタ１０６を有している。
【００１４】
マクロクロック同期データ保持部１０１はマクロクロックと後述するマクロクロック検出部１０４からのデータ保持信号とに基づき入力されるマクロデータの保持と出力とを行うブロックである。リードクロック同期データ保持部１０２はリードクロックに基づきマクロデータの保持と出力とを行うブロックである。リード期間判定部１０３は入力されるリードクロックからバスインターフェイス回路１００がデータ読み出し期間であることを示すリード期間信号と、ＣＰＵに対してリードクロックの出力を要求するリトライ信号とを出力するブロックである。マクロクロック検出部１０４はリード期間信号とマクロクロックからリード期間中のマクロクロックの立ち上がりを検出し、データ保持信号を出力するブロックである。メタ・ステーブル回避部１０５はマクロクロック検出部１０４がリード期間中にマクロクロックの立ち上がりを検出した場合にメタ・ステーブル回避信号を出力するブロックである。リードデータセレクタ１０６はメタ・ステーブル回避信号に基づきマクロクロック同期データ保持部１０１からの信号とリードクロック同期データ保持部１０２からの信号とを選択し、リードデータを出力するブロックである。
【００１５】
実施の形態１にかかるバスインターフェイス回路１００の回路図を図２に示す。上記ブロック図の説明のブロックごとに内部回路について図２を参照しながら説明する。
【００１６】
マクロクロック同期データ保持部１０１は入力セレクタ２０１とスレーブレジスタ２０２とを有している。入力セレクタ２０１は第１の入力端子Ｙ、第２の入力端子Ｎ、選択信号入力端子を有しており、データ保持信号に基づき第１の入力端子Ｙと第２の入力端子Ｎのいずれかを選択し、入力されたデータを出力する回路である。スレーブレジスタ２０２は入力端子Ｄとクロック入力端子Ｃと出力端子Ｑを有しており、マクロクロックの立ち上がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。
【００１７】
入力セレクタ２０１の第２の入力端子Ｎにはマクロデータが入力されており、第１の入力端子Ｙはスレーブレジスタ２０２の出力端子Ｑと接続されている。また、入力セレクタ２０１の選択信号入力端子には第１の入力と第２の入力を選択するデータ保持信号がマクロクロック検出部から入力されている。入力セレクタ２０１の出力はスレーブレジスタ２０２の入力端子Ｄに接続されている。スレーブレジスタ２０２の入力端子Ｃにはマクロクロックが入力されており、出力端子Ｑは入力セレクタ２０１の第１の入力端子Ｙとリードデータセレクタ１０６の第１の入力端子Ｙに接続されている。
【００１８】
リードクロック同期データ保持部１０２はスレーブレジスタ２０３を有している。スレーブレジスタ２０３は入力端子Ｄと入力端子Ｃと出力端子Ｑを有しており、リードクロックの立ち下がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。入力端子Ｄにはマクロデータが入力されており、入力端子Ｃにはリードクロックが入力されている。出力端子Ｑはセレクタの第２の入力端子Ｎに接続されている。
【００１９】
リード期間判定部１０３はインバータ２０４、リトライレジスタ２０５、リード期間レジスタ２０６、ＯＲ回路２０７を有している。インバータ２０４は入力端子と出力端子とを有しており、入力端子からの入力を反転させた出力をする回路である。リトライレジスタ２０５は入力端子Ｄ、入力端子Ｃ、出力端子Ｑを有しており、リードクロックの立ち上がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。リード期間レジスタ２０６は入力端子Ｄ、入力端子Ｃ、出力端子Ｑを有しており、リードクロックの立ち下がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。ＯＲ回路２０７は第１の入力端子、第２の入力端子、出力端子を有している。ＯＲ回路２０７は第１の入力端子及び第２の入力端子への入力が共にＬｏｗレベル（例えば、接地電位）になったときに、Ｌｏｗレベルを出力し、それ以外のときはＨｉｇｈレベル（例えば、電源電位）を出力する回路である。
【００２０】
リトライレジスタ２０５は出力端子Ｑがインバータ２０４を介して入力端子Ｄに接続されており、入力端子Ｃにはリードクロックが入力されている。また、リトライレジスタは出力端子Ｑよりリトライ信号を出力している。リード期間レジスタ２０６は入力端子Ｄがリトライレジスタ２０５の出力端子Ｑと接続されており、入力端子Ｃにリードクロックが入力されている。ＯＲ回路２０７の第１の入力端子はリトライレジスタ２０５の出力端子Ｑと接続されており、第２の入力端子はリード期間レジスタ２０６の出力端子Ｑと接続されている。また、ＯＲ回路２０７の出力端子はリード期間判定部１０３の出力となっており、リード期間信号が出力されている。
【００２１】
マクロクロック検出部１０４はクロック検出レジスタ２０８を有している。クロック検出レジスタ２０８は入力端子Ｄ、入力端子Ｃ、出力端子Ｑ、リセット端子Ｒを有しており、マクロクロックの立ち上がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。また、リセット端子にＬｏｗレベルの信号が入力されたときには常に出力端子はＬｏｗレベルを出力する。入力端子Ｄは電源電位Ｖｄｄに接続されており、入力端子Ｃにはマクロクロックが入力されている。出力端子Ｑはマクロクロック検出部１０４の出力になっており、データ保持信号が出力される。
【００２２】
メタ・ステーブル回避部１０５はメタ検出レジスタ２０９を有している。メタ検出レジスタ２０９は入力端子Ｄ、入力端子Ｃ、出力端子Ｑ、リセット端子Ｒを有しており、リードクロックの立ち上がり時の入力端子Ｄのデータを出力端子Ｑに出力する回路である。また、リセット端子にＬｏｗレベルの信号が入力されたときには常に出力端子はＬｏｗレベルを出力する。入力端子Ｄはマクロクロック検出部１０４の出力端子Ｑが接続されており、入力端子Ｃにはリードロックが入力されている。出力端子Ｑはメタ・ステーブル回避部１０５の出力になっており、メタ・ステーブル回避信号が出力される。
【００２３】
リードデータセレクタ１０６は第１の入力端子Ｙ、第２の入力端子Ｎ、出力端子、選択信号入力端子を有している。セレクタの第１の入力端子Ｙにはリードクロック同期データ保持部１０１の出力が接続されており、第２の入力端子Ｎにはマクロクロックデータ保持部１０２の出力が接続されている。また、選択信号入力端子にはメタ・ステーブル回避部１０５の出力が接続されている。リードデータセレクタ１０６の出力端子はバスインターフェイス回路１００の出力となっており、メタ・ステーブル回避信号に基づいて、マクロクロック同期データ保持部１０１の出力とリードクロック同期データ保持部１０２の出力のいずれかを選択してリードデータを出力する。
【００２４】
実施の形態１にかかるバスインターフェイス回路１００の動作のフローチャートを図３に示す。図３を参照しながら実施の形態１にかかるバスインターフェイス回路１００の動作を説明する。
【００２５】
まず、ＣＰＵよりリードクロックが出力される（３０１）。ＣＰＵが読み込むデータは、このリードクロックの１回目の立ち上がり時にマクロ回路から出力されるマクロデータである。また、ＣＰＵはデータ読み込み動作時のみリードクロックを出力する。
【００２６】
次に、リードクロックに基づきリード期間判定部１０３がリード期間信号及びリトライ信号を出力する（３０２）。このリード期間信号により、バスインターフェイス回路１００は出力すべきリードデータの確定動作を行う。リード期間信号は２回目のリードクロックの立ち下がりによって停止される。これにより、バスインターフェイス回路１００はリードデータの確定動作を停止する。また、リトライ信号によりＣＰＵは次のクロックを出力する。リトライ信号は２回目のリードクロックの立ち上がりで停止する。これにより、これ以上のリードクロックの立ち上がりをバスインターフェイス回路１００に送信しないようにする。
【００２７】
次にマクロクロック検出部１０４はリードクロックの１回目の立ち上がりから２回目の立ち上がりの間（マクロクロック検出期間）でのマクロクロックの立ち上がりの有無を判定する（３０３）。
【００２８】
マクロクロック検出期間でマクロクロックの立ち上がりがあった場合、マクロクロック検出部１０４はデータ保持信号を出力する。このデータ保持信号とリードクロックによりメタ・ステーブル回避部１０５がメタ・ステーブル回避信号を出力する（３０４）。このメタ・ステーブル回避信号によりリードデータセレクタ１０６はマクロクロック同期データ保持部１０１からの信号をリードデータとして出力する（３０５）。
【００２９】
また、マクロクロックの検出期間にマクロクロックの立ち上がりがなかった場合、マクロクロック検出部１０４はデータ保持信号を出力しない。よって、メタ・ステーブル回避部１０５はメタ・ステーブル回避信号を出力しない（３０６）。これにより、ロードデータセレクタ１０６はリードクロック同期データ保持部１０２からの信号をリードデータとして出力する（３０７）。
【００３０】
一般的にマイコン内部で用いられる信号は、リードクロックは遅延なくマイコンのすべての回路に供給されているのに対して、リードデータは遅延を持ってＣＰＵに送信されるように設計する。このように設計することで、２回目のリードクロックの立ち下がりでＣＰＵがデータを読み込むときには確実に決定されたリードデータがＣＰＵに送信される。
【００３１】
上述した動作により、確定したリードデータは遅延を持ってＣＰＵに送信される。ＣＰＵは遅延したリードデータをリードクロックの２回目の立下りで読み込む（３０８）。
【００３２】
実施の形態１にかかるバスインターフェイス回路１００の動作のタイミングチャートを図４に示す。ここで、実施の形態１のバスインターフェイス回路１００の動作は、リードクロックの２回の立ち上がりの間にマクロクロックの立ち上がりがある場合とない場合との２つに分けることができる。従って、以下では２つの場合に分けて上述した動作のフローチャートと対比しながら図４に示すタイミングチャートを説明する。
【００３３】
ここで、マクロデータはマクロクロックの立ち上がりをきっかけにして変化する信号である。また、リードクロックの１回目の立ち上がりの時にマクロデータはＤ０である。しかし、リードクロックの２回目の立ち下がり（ＣＰＵのデータ取り込みタイミング）の時のマクロデータがＤ０とは異なるＤ１である。この時、バスインターフェイス回路１００はマクロデータＤ０をリードデータとしてＣＰＵに送信することを目的としている。
【００３４】
まず、マクロクロック検出期間にマクロクロックの立ち上がりがあった場合について説明する。図４のタイミングチャートにおいてタイミングＴ１からＴ５の間の動作である。
【００３５】
フローチャート３０１の動作がタイミングＴ１で行われる。タイミングＴ１ではＣＰＵからリードクロックがバスインターフェイス回路１００に送信される。このリードクロックに基づき、フローチャート３０２の動作がタイミングＴ１で行われる。タイミングＴ１では上記リードクロックに基づき、リード期間判定部１０３のリード期間信号がＨｉｇｈレベルとなる。この時、リード期間判定部１０３のリトライ信号がＨｉｇｈレベルとなる。
【００３６】
タイミングＴ２でリードクロックが立ち下がる。この時、リードクロック同期データ保持部１０２はマクロデータＤ０の取り込み及び保持を行う。また、この時、リードデータセレクタ１０６の入力選択信号はメタ・ステーブル回避部１０５からＬｏｗレベルが入力されている。よって、リードデータはリードクロック同期データ保持部１０２が保持しているマクロデータＤ０である。
【００３７】
フローチャート３０３の動作がタイミングＴ３で行われる。タイミングＴ３はマクロクロックの立ち上がりのタイミングである。この時、マクロクロック検出部１０４のデータ保持信号はＨｉｇｈレベルとなる。
【００３８】
また、タイミングＴ３のマクロクロックの立ち上がりに基づき、マクロクロック同期データ保持部１０１は、タイミングＴ３以前のマクロデータＤ０を保持する。マクロクロック同期データ保持部１０１はマクロクロックの立ち上がりで取り込んだデータを、データ保持信号がＨｉｇｈレベルであり、かつ、マクロデータ取り込み後のマクロクロックの立ち上がりがあるまでの間取り込んだマクロデータを保持する。
【００３９】
フローチャート３０４の動作がタイミングＴ４で行われる。タイミングＴ４では前述したデータ保持信号とリードクロックの立ち上がりからメタ・ステーブル回避部１０５のメタ・ステーブル回避信号がＨｉｇｈレベルとなる。
【００４０】
このメタ・ステーブル回避部１０５の動作により、フローチャート３０５の動作もタイミングＴ４で行われる。メタ・ステーブル回避信号がＨｉｇｈレベルであるため、リードデータセレクタ１０６はマクロクロック同期データ保持部１０１のマクロデータＤ０をリードデータとして出力する。これにより、ＣＰＵが取り込むべきマクロデータが確定する。
【００４１】
また、タイミングＴ４でリトライ信号がＬｏｗレベルとなる。これにより、ＣＰＵはこれ以上のリードクロックの立ち上がりを出力しない状態となる。
【００４２】
タイミングＴ４で確定したリードデータは、遅延を持ってＣＰＵに送信される。フローチャート３０８の動作をタイミングＴ５で行い、このリードデータをＣＰＵが取り込む。つまり、リードデータは遅延を持ってＣＰＵに送信されるため、タイミングＴ５の直後でリードデータが変化した場合であっても、ＣＰＵが取り込むリードデータはタイミングＴ５の以前のリードデータである。よって、メタ・ステーブルを起こすことなく、ＣＰＵはデータの取り込みを完了する。
【００４３】
また、タイミングＴ５でリード期間信号がＬｏｗレベルとなる。これにより、バスインターフェイス回路１００はリードデータの選択と確定の動作を停止する。
【００４４】
次に、マクロクロック検出期間にマクロクロックの立ち上がりがない場合について説明する。図４のタイミングチャートにおいてタイミングＴ６からＴ９の間の動作である。
【００４５】
リードクロックの１回目の立ち上がりの時にマクロデータはＤ２である。また、リードクロックの２回目の立ち下がり（ＣＰＵのデータ取り込みタイミング）の時のマクロデータもＤ２である。この時、バスインターフェイス回路１００はマクロデータＤ２をリードデータとしてＣＰＵに送信することを目的としている。
【００４６】
フローチャート３０１の動作がタイミングＴ６で行われる。タイミングＴ６ではＣＰＵからリードクロックがバスインターフェイス回路１００に送信される。このリードクロックに基づき、フローチャート３０２の動作がタイミングＴ６で行われる。タイミングＴ６では上記リードクロックに基づき、リード期間判定部１０３のリード期間信号がＨｉｇｈレベルとなる。この時、リード期間判定部１０３のリトライ信号はＨｉｇｈレベルとなる。
【００４７】
タイミングＴ７でリードクロックが立ち下がる。この時、リードクロック同期データ保持部１０２はマクロデータＤ０の取り込み及び保持を行う。また、この時、リードデータセレクタ１０６の入力選択信号はメタ・ステーブル回避部１０５からＬｏｗレベルが入力されている。よって、リードデータはリードクロック同期データ保持部１０２が保持しているマクロデータＤ０である。
【００４８】
フローチャート３０３の動作がタイミングＴ６からＴ８の間で行われている。しかし、この間にマクロクロックの立ち上がりがないために、タイミングＴ６からＴ８までの間でマクロクロック検出部１０４のデータ保持信号はＬｏｗレベルを維持する。
【００４９】
タイミングＴ６からＴ８の間、マクロクロックの立ち上がりがないためにマクロデータはＤ２を維持している。従って、マクロクロック同期データ保持部１０１はマクロデータＤ２を保持している。また。タイミングＴ６からＴ８の間でリードクロックの立ち下がりがあるが、マクロデータはＤ２を維持しているため、リードクロック同期データ保持部１０２はマクロデータＤ２を保持している。
【００５０】
フローチャート３０６の動作がタイミングＴ４で行われる。タイミングＴ８では前述したデータ保持信号とリードクロックの立ち上がりからメタ・ステーブル回避部１０５のメタ・ステーブル回避信号はＬｏｗレベルを維持する。
【００５１】
このメタ・ステーブル回避部１０５の動作により、フローチャート３０５の動作もタイミングＴ８で行われる。メタ・ステーブル回避信号がＬｏｗレベルであるため、リードデータセレクタ１０６はリードクロック同期データ保持部１０２のマクロデータＤ２をリードデータとして出力する。
【００５２】
以上の動作により、ＣＰＵが取り込むべきマクロデータが確定する。タイミングＴ８で確定したリードデータは、遅延を持ってＣＰＵに送信される。フローチャート３０８の動作をタイミングＴ９で行い、このリードデータをＣＰＵが取り込む。つまり、リードデータは遅延を持ってＣＰＵに送信されるため、タイミングＴ９の直後でリードデータが変化した場合であっても、ＣＰＵが取り込むリードデータはタイミングＴ９の以前のリードデータである。よって、メタ・ステーブルを起こすことなく、ＣＰＵはデータの取り込みを完了する。
【００５３】
また、タイミングＴ９でリード期間信号がＬｏｗレベルとなる。これにより、バスインターフェイス回路１００はリードデータの選択と確定の動作を停止する。
【００５４】
上述の動作により、バスインターフェイス回路１００はマクロクロックとリードクロックがいかなる関係であってもマクロ回路のマクロデータを２周期のリードクロックでＣＰＵに取り込むことができる。これにより、マクロクロックとリードクロックの速度差が大きくなっても、マクロデータをＣＰＵが取り込む際に無駄なリードクロックを必要としない。つまり、ＣＰＵは遅延なくマクロデータを処理することができるため、マイコン全体の性能が向上する。
【００５５】
また、ＣＰＵがマクロデータを取り込む際のメタ・ステーブルが発生しないため、ＣＰＵとマクロ回路との間のタイミング設計が容易になる。このことは、マクロ回路の設計の自由度を高めることとなり、従来ではシステム全体の性能を考慮して、必要以上に高速化していたマクロクロックを低速化できる。つまり、マクロクロックの低速化による低消費電力化が可能になる。
【００５６】
実施の形態１のバスインターフェイス回路１００は、マルチビットのマクロデータが入力されており、このマルチビットのデータをリードデータとして確定するときに、シングルビットのメタ・ステーブル回避信号を用いている。つまり、バスインターフェイス回路１００はマルチビットのデータに対応した非同期調停回路といえる。
【００５７】
本発明によれば、少ないリードクロック数で読み込みが完了でき、マルチビットに対応したメタ・ステーブル回避機能を持ったバスインターフェイス回路を実現できる。
【００５８】
また、本発明は上記実施の形態に限られたものではなく、適宜変形することが可能である。本発明は、マクロクロックとリードクロックの関係からメタ・ステーブル回避信号を生成し、複数のデータ保持部のいずれかのデータを出力する手段を有していれば良い。例えば、上記実施の形態とは反転した論理で構成することも可能である。
【図面の簡単な説明】
【００５９】
【図１】実施の形態１にかかるバスインターフェイス回路のブロック図を示す図である。
【図２】実施の形態１にかかるバスインターフェイス回路の回路図を示す図である。
【図３】実施の形態１にかかるバスインターフェイス回路の動作のフローチャートを示す図である。
【図４】実施の形態１にかかるバスインターフェイス回路の動作のタイミングチャートを示す図である。
【図５】従来のバスインターフェイス回路の回路図を示す図である。
【図６】従来のバスインターフェイス回路において少ないリードクロックでマクロデータを読み込むことが可能な場合のタイミングチャートを示す図である。
【図７】従来のバスインターフェイス回路においてマクロデータの読み込むに多くのリードクロックが必要な場合のタイミングチャートを示す図である。
【符号の説明】
【００６０】
１０１  マクロクロック同期データ保持部
１０２  リードクロック同期データ保持部
１０３  リード期間判定部
１０４  マクロクロック検出部
１０５  メタ・ステーブル回避部
１０６  リードデータセレクタ
２０１  入力セレクタ
２０２  スレーブレジスタ
２０３  スレーブレジスタ
２０４  インバータ
２０５  リトライレジスタ
２０６  リード期間レジスタ
２０７  ＯＲ回路
２０８  クロック検出レジスタ
２０９  メタ検出レジスタ
５０１  マクロクロック同期データ保持部
５０２  リード期間制御部
【図１】
2006236060.tif 000003
【図２】
2006236060.tif 000004
【図３】
2006236060.tif 000005
【図４】
2006236060.tif 000006
【図５】
2006236060.tif 000007
【図６】
2006236060.tif 000008
【図７】
2006236060.tif 000009