(57)【要約】【課題】様々な動作クロックで動作する既存の周辺回路を容易に接続することのできるバッファ回路を提供することで、システム・オン・チップを容易にすること。【解決手段】本バッファ装置１００は、第１の回路と第２の回路のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファ１１０と、第１の回路との接続部である第１のインターフェース部１３０と、第２の回路との接続部であるインターフェース部１４０と、第１の回路及び第２の回路のバッファへのアクセス状況に基づき、前記バッファに供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号１５２を生成するクロック切り替え制御回路１５０と、第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号に基づきいずれかのクロックを選択して前記バッファに供給するクロック切り替え回路１２０とを含む。【選択図】図１
2007109199.tif 000002
【特許請求の範囲】
【請求項１】
周波数の異なるクロックで動作する第１の回路と第２の回路の間に存在するバッファ装置であって、
第１の回路と第２の回路のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファと、
第１の回路とバッファの接続部である第１のインターフェース部と、
第２の回路とバッファの接続部である第２のインターフェース部と、
第１の回路及び第２の回路のバッファへのアクセス状況に基づき、前記バッファに供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号を生成するクロック切り替え制御回路と、
第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号に基づきいずれかのクロックを選択して前記バッファに供給するクロック切り替え回路と、
を含むことを特徴とするバッファ装置。
【請求項２】
請求項１において、
前記バッファは、
複数段で構成されており、
前記クロック切り替え制御回路は、
第１の回路及び第２の回路の各段のバッファへのアクセス状況に基づき、前記各段のバッファに供給するクロックを切り替えるタイミングを判断し、各段に対応したクロック切り替え制御信号を生成し、
前記クロック切り替え回路は、
前記バッファの格段に対応して第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記各段に対応したクロック切り替え信号に基づきいずれかのクロックを選択して各段のバッファに供給することを特徴とするバッファ装置。
【請求項３】
請求項２において、
前記第２のインターフェース部は、
第１の回路のバッファへの書き込みが発生すると書き込みのあった段のバッファへのポインターを格納するためのＦＩＦＯを含み、
前記ＦＩＦＯの出力順に先入先出で第２の回路からバッファへのアクセスを許可するように制御することを特徴とするバッファ装置。
【請求項４】
請求項２乃至３のいずれかにおいて、
前記バッファ装置は、
周波数の異なるクロックで動作する複数の周辺回路と前記複数の周辺回路を制御する制御部の間に存在するバッファ装置であって、
前記第１のインターフェース部は、
前記制御部を接続するホストポート又はバスとして構成され、
前記第２のインターフェース部は
前記複数の周辺回路に対応する複数の周辺回路インターフェース回路含み、
前記バッファは、
制御部と周辺装置間のアクセスに必要なアドレス及びデータの少なくとも一方を格納することを特徴とするバッファ装置。
【請求項５】
請求項４において、
前記各周辺回路インターフェース回路は、
各周辺回路毎に、第１の回路のバッファへの当該周辺回路に対する書き込みが発生すると書き込みのあった段のバッファへのポインターを格納するためのＦＩＦＯを含み、前記ＦＩＦＯの出力順に先入先出で当該周辺回路からバッファへのアクセスを許可するように制御することを特徴とするバッファ装置。
【請求項６】
請求項４乃至５いずれかにおいて、
前記各周辺回路は他の周辺回路とは独立したバスを有しており、
前記各周辺回路インターフェース回路は、
対応する周辺回路のバスに接続されていることを特徴とするバッファ装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記クロック切り替え制御回路は、
第１の回路のバッファへの書き込みの終了を検出したら、当該バッファへ供給するクロックを、第２の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とするバッファ装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが書き込みを示している場合には、バッファの内容が第２の回路から読み出されたことを検出したら、当該バッファへ供給するクロックを第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とするバッファ装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが読み出しを示している場合には、第２の回路からバッファへの書き込みが行われたことを検出したら、当該バッファへ供給するクロックを、第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とするバッファ装置。
【請求項１０】
請求項１乃至８のいずれかにおいて、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが読み出しを示している場合には、第２の回路から読み出し終了を検出したら、バッファを介さず直接第1の回路へ読み出したデータを出力し、当該バッファへ供給するクロックを、第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とするバッファ装置。
【請求項１１】
請求項１乃至請求項１０のいずれかにおいて、
逐次モードであるか並列モードであるかの情報が記憶されるモード設定レジスタと、
モード設定レジスタの値が逐次モードであることを示している場合には第１の回路からのアクセスの順番に処理を実行するように制御し、モード設定レジスタの値が並列モードであることを示している場合には第１の回路からのアクセスの順番によらず処理を実行するように制御する回路と、を含み、
前記モード設定レジスタの値は第１の回路からの指示信号に基づき設定されることを特徴とするバッファ装置。
【請求項１２】
請求項１乃至１１のいずれかに記載のバッファ装置及び第１の回路及び第２の回路を含むことを特徴とする情報処理装置。
【請求項１３】
周波数の異なるクロックで動作する第１の回路と第２の回路の間に存在し、第１の回路と第２の回路のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファを含むバッファ装置の制御方法であって、
第１の回路及び第２の回路のバッファへのアクセス状況に基づき、前記バッファに供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号を生成するステップと、
第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号に基づきいずれかのクロックを選択して前記バッファに供給するステップとを、
を含むことを特徴とするバッファ装置の制御方法。
【請求項１４】
請求項１３において、
前記第１の回路からの指示信号に基づき実行モードを設定するステップと、
実行モードが逐次モードに設定されている場合には第１の回路からのアクセスの順番に処理を実行するように制御し、並列モードに設定されている場合には第１の回路からのアクセスの順番によらず処理を実行するように制御するステップと、
を含むことを特徴とするバッファ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ装置、バッファ装置の制御方法及び情報処理装置に関する。
【背景技術】
【０００２】
異なるクロックで動作する回路間のデータ転送に関しては、例えば２ポートメモリを間に置き、各ポートをそれぞれの異なるクロックに同期してアクセスする方法や、異なるクロック間で動作する回路の間に２段バッファを置き、このバッファをデータ及び必要な制御信号をデータを受ける側のクロックで制御する方法の２方法が一般的である。
【特許文献１】特開２００１−２２２４０７号
【特許文献２】特開２００３−１９８５１８号
【特許文献３】特開平５−１００８２０号
【特許文献４】特開２００１−１３４４２１号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし上記の２方法では基本的にクロックの種類が３以上の場合の対応ができないという問題点があった。
【０００４】
クロックの種類が３以上の場合は、上記２方法の回路をそれぞれが持つ必要があり、ホストインターフェイス（バスインターフェイス）の設計変更が必要であり、結果的に全ての周辺回路でバッファを持つことになる。
【０００５】
このバッファリングにより、ホストＣＰＵから各周辺装置へのアクセス順番と実際の周辺回路へのアクセス順番に時間差が生じ、制御が難しくなるという問題も出る。
【０００６】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、様々な動作クロックで動作する既存の周辺回路を容易に接続することのできるバッファ回路を提供することで、システム・オン・チップを容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
（１）本発明は、
周波数の異なるクロックで動作する第１の回路と第２の回路の間に存在するバッファ装置であって、
第１の回路と第２の回路のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファと、
第１の回路とバッファの接続部である第１のインターフェース部と、
第２の回路とバッファの接続部である第２のインターフェース部と、
第１の回路及び第２の回路のバッファへのアクセス状況に基づき、前記バッファに供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号を生成するクロック切り替え制御回路と、
第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号に基づきいずれかのクロックを選択して前記バッファに供給するクロック切り替え回路と、
を含むことを特徴とする。
【０００８】
第１のインターフェース部は、第１の回路が前記バッファにアクセスする際の信号のやり取りをするためのインターフェース部である。
【０００９】
第２のインターフェース部は、第２の回路が前記バッファにアクセスする際の信号のやり取りをするためのインターフェース部である。
【００１０】
クロック切り替え制御回路は、第１の回路がバッファに対して読み書きを行う場合には、バッファに第１の回路の動作周波数のクロックを供給し、第２の回路がバッファに対して読み書きを行う場合にはバッファに第２の回路の動作周波数のクロックを供給するように、バッファに供給するクロックを切り替えるためのクロック切り替え制御信号を生成する。
【００１１】
そしてクロック切り替え回路は、第１の回路の動作周波数のクロックと第２の回路の動作周波数のクロックを含む複数のクロックを入力し、所定の制御信号に基づきいづれかのクロックを選択して、バッファに出力する選択回路によって実現することができる。
【００１２】
ここにおいて第２の回路として複数の異なる周波数の回路が接続されるようにしてもよい。このような場合には、クロック切り替え回路は、これら複数の異なる周波数の回路の動作周波数を入力して、第１の回路の動作周波数と複数の異なる周波数の回路の動作周波数の中からクロック切り替え制御信号に基づきいずれかの周波数を選択して出力することになる。
【００１３】
（２）本発明のバッファ装置は、
前記バッファは、
複数段で構成されており、
前記クロック切り替え制御回路は、
第１の回路及び第２の回路の各段のバッファへのアクセス状況に基づき、前記各段のバッファに供給するクロックを切り替えるタイミングを判断し、各段に対応したクロック切り替え制御信号を生成し、
前記クロック切り替え回路は、
前記バッファの格段に対応して第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記各段に対応したクロック切り替え信号に基づきいずれかのクロックを選択して各段のバッファに供給することを特徴とする。
【００１４】
（３）本発明のバッファ装置は、
前記第２のインターフェース部は、
第１の回路のバッファへの書き込みが発生すると書き込みのあった段のバッファへのポインターを格納するためのＦＩＦＯを含み、
前記ＦＩＦＯの出力順に先入先出で第２の回路からバッファへのアクセスを許可するように制御することを特徴とする。
【００１５】
（４）本発明のバッファ装置は、
前記バッファ装置は、
周波数の異なるクロックで動作する複数の周辺回路と前記複数の周辺回路を制御する制御部の間に存在するバッファ装置であって、
前記第１のインターフェース部は、
前記制御部を接続するホストポート又はバスとして構成され、
前記第２のインターフェース部は
前記複数の周辺回路に対応する複数の周辺回路インターフェース回路含み、
前記バッファは、
制御部と周辺装置間のアクセスに必要なアドレス及びデータの少なくとも一方を格納することを特徴とする。
【００１６】
（５）本発明のバッファ装置は、
前記各周辺回路インターフェース回路は、
各周辺回路毎に、第１の回路のバッファへの当該周辺回路に対する書き込みが発生すると書き込みのあった段のバッファへのポインターを格納するためのＦＩＦＯを含み、前記ＦＩＦＯの出力順に先入先出で当該周辺回路からバッファへのアクセスを許可するように制御することを特徴とする。
【００１７】
（６）本発明のバッファ装置は、
前記各周辺回路は他の周辺回路とは独立したバスを有しており、
前記各周辺回路インターフェース回路は、
対応する周辺回路のバスに接続されていることを特徴とする。
【００１８】
このようにすること並列モードでの動作が可能となる。
【００１９】
（７）本発明のバッファ装置は、
前記クロック切り替え制御回路は、
第１の回路のバッファへの書き込みの終了を検出したら、当該バッファへ供給するクロックを、第２の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とする。
【００２０】
（８）本発明のバッファ装置は、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが書き込みを示している場合には、バッファの内容が第２の回路から読み出されたことを検出したら、当該バッファへ供給するクロックを第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とする。
【００２１】
（９）本発明のバッファ装置は、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが読み出しを示している場合には、第２の回路からバッファへの書き込みが行われたことを検出したら、当該バッファへ供給するクロックを、第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とする。
【００２２】
（１０）本発明のバッファ装置は、
前記バッファは、
バッファに書き込まれた内容が第２の回路に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含み、
前記クロック切り替え制御回路は、
Ｒ／Ｗ識別フラグが読み出しを示している場合には、第２の回路から読み出し終了を検出し、読み出したデータを第１の回路へ出力したら、当該バッファへ供給するクロックを、第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成することを特徴とする。
【００２３】
（１１）本発明のバッファ装置は、
逐次モードであるか並列モードであるかの情報が記憶されるモード設定レジスタと、
モード設定レジスタの値が逐次モードであることを示している場合には第１の回路からのアクセスの順番に処理を実行するように制御し、モード設定レジスタの値が並列モードであることを示している場合には第１の回路からのアクセスの順番によらず処理を実行するように制御する回路と、を含み、
前記モード設定レジスタの値は第１の回路からの指示信号に基づき設定されることを特徴とする。
【００２４】
（１２）本発明は、上記のいずれかに記載のバッファ装置及び第１の回路及び第２の回路を含むことを特徴とする情報処理装置である。
【００２５】
請求項１乃至１１のいずれかに記載のバッファ装置及び第１の回路及び第２の回路を含むことを特徴とする情報処理装置。
【００２６】
（１３）本発明は、
周波数の異なるクロックで動作する第１の回路と第２の回路の間に存在し、第１の回路と第２の回路のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファを含むバッファ装置の制御方法であって、
第１の回路及び第２の回路のバッファへのアクセス状況に基づき、前記バッファに供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号を生成するステップと、
第１の回路の動作クロック及び第２の回路の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号に基づきいずれかのクロックを選択して前記バッファに供給するステップとを、
を含むことを特徴とする。
【００２７】
（１４）本発明の制御方法は、
前記第１の回路からの指示信号に基づき実行モードを設定するステップと、
実行モードが逐次モードに設定されている場合には第１の回路からのアクセスの順番に処理を実行するように制御し、並列モードに設定されている場合には第１の回路からのアクセスの順番によらず処理を実行するように制御するステップと、
を含むことを特徴とする。
【発明を実施するための最良の形態】
【００２８】
１．集積回路装置
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２９】
図１は、本実施の形態のバッファ装置について説明するための図である。
【００３０】
本実施の形態のバッファ装置１００は、周波数の異なる動作クロックで動作する第１の回路１８０と第２の回路１９０の間に存在するバッファ装置１００であって、第１のインターフェース部１３０、第２のインターフェース部１４０、バッファ１１０、制御部１７０、クロック切り替え部１２０を含む。
【００３１】
また本実施の形態の情報処理装置３００は、バッファ装置１００、第１の回路１８０、第２の回路１９０とを含む。
【００３２】
第１のインターフェース部１３０は、第１の回路を接続するためのインターフェース回路である。第２のインターフェース部１４０は第２の回路を接続するためのインターフェース回路である。
【００３３】
第１のインターフェース部１３０は、第１の回路（制御部）１８０を接続するホストポート又はバスへの接続部（図示せず）を含む。
【００３４】
第２のインターフェース部１４０は、第２の回路（周辺回路）１９０を接続するペリフェラルポート（図示せず）とＦＩＦＯ１４２とセレクタ１４６とバスドライバレシーバ１４８を含む。
【００３５】
ペリフェラルポート（図示せず）には、該ペリフェラルポートに接続する第２の回路（周辺回路）１９０のクロック入力端子を持つようにしてもよい。
【００３６】
ＦＩＦＯ１４２は、前記アドレスバッファ及びデータバッファのポインターを格納するもので、第１の回路１８０のバッファ１１０への書き込みが発生すると書き込みのあった段のバッファへのポインターを格納する。ＦＩＦＯ１４２の出力順に先入先出で第２の回路１９０からバッファへのアクセスを許可するように制御する。
【００３７】
バッファ１１０は第１の回路１８０と第２の回路１９０のデータのやり取りに必要なアドレス及びデータの少なくとも一方を格納するバッファである。
【００３８】
前記バッファ１１０を、複数段（１１０−０，１１０−１、・・・１１０−ｎ）で構成して、前記クロック切り替え部１２０（１２０−０、１２０−１，・・・、１２０−ｎ）は、前記バッファの各段１１０−０、１１０−１、・・・１１０−ｎに対応して設け、前記バッファの各段毎に供給するクロックを切り替える。
【００３９】
またバッファをメモリ空間あるいはＩＯ空間にマッピングされたアドレスを格納する複数のアドレスバッファと、該アドレスバッファに対応した書込みデータ及び読み出しデータを格納するデータバッファとで構成するようにしてもよい。
【００４０】
また前記バッファ１１０−０、１１０−１、１１０−２、・・・に書き込まれた順番に前記各周辺回路にアクセスするようにしてもよい（逐次モード）。
【００４１】
制御部１７０は、第１の回路（ホスト）からのアクセス全般の応答制御とバッファ制御を行う。制御部１７０は、クロック切り替え制御回路１５０を含む。
【００４２】
クロック切り替え制御回路１５０は、第１の回路１８０及び第２の回路１９０のバッファ１１０へのアクセス状況に基づき、前記バッファ１１０に供給するクロックを切り替えるタイミングを判断し、バッファに供給するクロックの選択または切り替えを指示するためのクロック切り替え制御信号１５２を生成する。
【００４３】
クロック切り替え制御回路１５０は、バッファが複数段で構成されている場合には、第１の回路１８０及び第２の回路１９０の各段のバッファ１１０−０、１１０−１、・・・、１１０−ｎへのアクセス状況に基づき、前記各段のバッファ１１０−０、１１０−１、・・・、１１０−ｎに供給するクロックを切り替えるタイミングを判断し、各段に対応したクロック切り替え制御信号１５２−０、１５２−１、・・・、１５２−ｎを生成する。
【００４４】
前記クロック切り替え制御回路１５０は、第１の回路のバッファへの書き込みの終了を検出したら、当該バッファへ供給するクロックを、第２の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号を生成するようにしてもよい。
【００４５】
ここで前記バッファ１１０は、バッファに書き込まれた内容が第２の回路１９０に対する読み出し又は書き込みのいずれであるかを識別するためのＲ／Ｗ識別フラグを含むようにしてもよい。
【００４６】
かかる場合には、クロック切り替え制御回路１５０は、Ｒ／Ｗ識別フラグが書き込みを示している場合には、バッファ１１０の内容が第２の回路１９０から読み出されたことを検出したら、当該バッファ１１０へ供給するクロックを第１の回路の動作クロックに切り替えるように指示するクロック切り替え制御信号１５２を生成するようにしてもよい。
また前記クロック切り替え制御回路１５０は、Ｒ／Ｗ識別フラグが読み出しを示している場合には、第２の回路１９０からバッファへの書き込みが行われたことを検出したら、当該バッファ１１０へ供給するクロックを、第１の回路１８０の動作クロックに切り替えるように指示するクロック切り替え制御信号１５２を生成するようにしてもよい。第２の回路からの読み出しデータがバッファに格納されるパスは図示していないが、バッファの入力側にセレクタを設け、バッファの出力を第１の回路に与えるパスを用意することで可能である。
第２の回路からの読み出しデータは、第１の回路の動作クロックの変化に対して安定してデータを出力することができるため、読み出しデータはバッファリングせずに、直接第２の回路から第１の回路に出力するようにしてもよい。この場合、バッファの動作クロックの切り替えは、第２の回路からデータの読み出し終了を検出した後で行うようにしてもよい。
【００４７】
クロック切り替え部１２０は、第１の回路１８０の動作クロック及び第２の回路１９０の動作クロックを含む複数のクロックを入力し、前記クロック切り替え信号１５２に基づきいずれかのクロックを選択して前記バッファ１１０に供給する。
【００４８】
第１の回路１８０の動作クロック１８２は、例えば第１のインターフェース部１３０を介して、第１の回路から入力するようにしてもよい。
【００４９】
また第２の回路の動作クロックは、例えば第２のインターフェース部１４０を介して、第２の回路から入力するようにしてもよい。
【００５０】
またアドレスバッファに有効な値がない場合は該アドレスバッファ及び対応するデータバッファは第１の回路（制御部）１８０が接続されるホストポート又はバスの動作クロックで動作するようにしてもよい。
【００５１】
そして第１の回路（制御部）１８０からホストポートに接続した周辺回路にアクセスすると、アドレスとデータが有効な値のない前記アドレスバッファ及びデータバッファに一旦書き込まれるようにしてもよい。
【００５２】
そして動作クロックが該ペリフェラルポートから入力されるクロックに切り替わり、該バッファのポインターが該ペリフェラルポートに対応したＦＩＦＯ１４２に書き込まれ、該ＦＩＦＯ１４２に格納されたポインターにより前記アドレスバッファ、データバッファの内容が読み出され、該ペリフェラルポートに接続された第２の回路（周辺回路）１９０に対してのアクセスが行われるようにしてもよい。
【００５３】
アクセス終了後は再び第１の回路（制御部）１８０からのクロックに切り替わるようにしてもよい。
【００５４】
なお第２の回路（周辺回路）１９０を接続する部分を“ペリフェラルポート”という表現をしたが、実際は汎用的なバスである場合が多い。
【００５５】
例えば第２の回路（周辺回路）１９０が複数種類ｍ存在する場合、バッファ装置１００は複数のバスインターフェイスを持ち、その数はホスト用バス×１＋周辺回路用バス×ｍ、となる。
【００５６】
本実施の形態によれば、周辺回路とのインターフェースは従来どおりでよいので、過去の設計資産の周辺回路をそのまま接続できる。また動作クロックが異なるものでも、容易に既存の周辺回路を接続することができる。
【００５７】
また周辺回路用のポートの数だけの異なるクロックをサポートできる。
【００５８】
またバッファが第１の回路（ホスト側）、第２の回路（スレーブ側）のアクセス対象側のクロックに切り替わるように制御する回路で実現できるので回路論理が簡単になる。
【００５９】
図２は、パッファ装置１００の複数の周辺回路バスを接続した時の図である。
【００６０】
またバッファ装置１００は、図２に示すように周波数の異なるクロックで動作する複数の周辺回路と前記複数の周辺回路を制御する制御部（ホスト）間に存在するバッファ装置として構成してもよい。
【００６１】
前記第１のインターフェース部は、制御部（ホスト）を接続するホストポート又はバス１８２として構成されるようにしてもよい。
【００６２】
また第２のインターフェース部は、周辺回路を接続する複数の周辺回路インターフェース回路１４０−０、１４０−１、・・、１４０−ｍを含む。
【００６３】
前記バッファ１１０は、制御部（ホスト）と周辺装置間のアクセスに必要なアドレス及びデータの少なくとも一方を格納する。
【００６４】
ここで周辺装置からのリードデータ１６は、全周辺装置バスインターフェイスからのものをまとめて図示していますが、複数が同時に有効になる事はない。
【００６５】
ここでバッファ部１１０は、バッファとクロック制御回路を含んでいる。
【００６６】
図３は図１のバッファ部１１０の構成図である。
【００６７】
各バッファ１１０−０、１１０−１、・・１１０−ｎはアドレスバッファ１１２−０、１１２−１、・・１１２−ｎ、データバッファ１１４−０、１１４−１、・・１１４−ｎ、リード/ライトフラグ１１６−０、１１６−１、・・１１６−ｎ、使用フラグ１１８−０、１１８−１、・・１１８−ｎを含む。
【００６８】
アドレスバッファ１１２−０、１１２−１、・・１１２−ｎは、メモリ空間あるいはＩＯ空間にマッピングされたアドレスを格納するバッファで、ホストバスからのアクセス時にアドレスを格納する。
【００６９】
データバッファ１１４−０、１１４−１、・・１１４−ｎは、アドレスバッファに対応したデータを格納するバッファであり、ホストバスからのライトアクセス時にライトデータを格納し、リードアクセス時には周辺装置からのリードデータを格納するようにしてもよい。
【００７０】
リード/ライトフラグ１１６−０、１１６−１、・・１１６−ｎは、バッファに格納したアクセスがリードかライトかを示すフラグである。
【００７１】
使用フラグ１１８−０、１１８−１、・・１１８−ｎは、バッファに格納したアクセスが終了したかどうかを示すフラグである。周辺装置インターフェイス部からのバッファ書き込み許可信号３−０、３−１、・・・、３−ｎでオフ（未使用）になる。
【００７２】
クロック切り替え部１２０−０、１２０−１、・・１２０−ｎは、バッファ制御部からの周辺回路選択信号６−０、６−１、・・・、６−ｎによりクロックを切替える。切替えタイミングはバッファ１１０−０、１１０−１、・・１１０−ｎへの書込みが終了した時点である。
【００７３】
バッファ部は、空バッファ指定制御部２１０、ネクストポインタ２１２、カレントポインタ２１４、バッファ書込み制御部２１６を含む。
【００７４】
空バッファ指定制御部２１０は、バッファの使用フラグ１１８に基づき未使用のバッファをサーチしてポインタNo.を出力する。
【００７５】
ネクストポインタ２１２は、空きバッファ指定制御部２１０が決定した次の次に使用するバッファポインターの値を格納する。
【００７６】
カレントポインタ２１４は、次に書込みを行うバッファのアドレスを示す。書き込み実行後はネクストポインター２１２の値を格納する。
【００７７】
バッファ書込み制御部２１６は、カレントポインター２１４の値により、次に書き込むバッファに対しての許可信号を生成する。
【００７８】
使用フラグ信号１は、バッファの使用フラグが出力されるもので、ホストからのアクセスで、アドレスが書き込まれた時にオンになり、周辺装置により実行されたときにオフになる。
【００７９】
２はリード/ライトフラグ信号であり、３−０，３−１，３−ｎはバッファ書込み許可信号であり、６は周辺回路選択信号であり１９２−０〜１９２−ｎは周辺装置のクロックであり、１８２はホストのクロックである。
【００８０】
９はカレントポインターであり、１０はホストバスからのアドレス信号であり、１１はホストバスからのデータ信号であり、１２はバッファからのアドレス出力信号であり、１３はバッファからのデータ出力信号であり、１４はホストバスからのリード/ライトフラグ入力である。
【００８１】
図４は周辺装置インターフェースの構成図である。
【００８２】
周辺装置インターフェースは、ポインター格納ＦＩＦＯ１４２、バッファセレクタ１４６、周辺装置バスインターフェイス１４８を含む。
【００８３】
ポインター格納ＦＩＦＯ１４２は、この周辺装置へのアクセスのアドレス/データが格納されたバッファNo.（ポインター)を格納するＦＩＦＯである。ポインター１４４とリード/ライトフラグ１４５の格納エリアからなる。
【００８４】
バッファセレクタ１４６は、ポインター格納ＦＩＦＯ１４２の出力１４３により、バッファを選択する。
【００８５】
周辺装置バスインターフェイス１４８は、周辺装置のバスへの変換を行う。アクセス終了後にポインタ格納ＦＩＦＯ制御用ポインタとのバッファの使用フラグをオフにする為の周辺装置アクセス実行信号１７を有効にする。
【００８６】
周辺装置バッファポインター登録指示信号１５は、バッファ制御部からの出力信号である。
【００８７】
リードデータ１６は周辺装置からのリードデータである。
【００８８】
１７は周辺装置アクセス実行信号である。
【００８９】
２５は周辺装置バスインターフェイスからのウエイト信号である。
【００９０】
図５はバッファ制御部の構成図である。
【００９１】
バッファ制御部は、制御部１５２、アドレス比較部１５４、周辺装置登録部１５５を含む。
【００９２】
周辺装置登録部１５５は、周辺装置のアクセス開始アドレス１５６と周辺装置のアクセスエリアサイズ１５８を含む。
【００９３】
周辺装置のアクセス開始アドレス１５６には、システムに搭載する周辺装置のメモリマップ上のスタートアドレスが格納される。
【００９４】
周辺装置のアクセスエリアサイズ１５８には、システムに搭載する周辺装置のアクセスエリアサイズが格納される。
【００９５】
制御部１５２は、ホストからのアクセス全般の応答制御とバッファ制御を行う。
【００９６】
アドレス比較部１５４は、ホストからのアクセスが登録してある周辺装置に対してのものかどうかを周値と比較することで判断する。登録してある周辺装置に対してのものである周辺装置選択信号と周辺装置バッファポインター登録指示信号を有効にする。
【００９７】
１９は周辺装置登録データ１であり、２０は周辺装置登録データｍであり、２１はホストバスコマンド信号である。
【００９８】
２２は周辺装置登録レジスタ制御信号であり、周辺装置登録部１５５への登録は、電源投入後のシステム初期設定時に行われる。
【００９９】
２３はホストアクセス信号部制御信号であり、アドレスの比較は常時ではなく、ホストからのアクセスが発生した時である。ホストからのアクセスを応答制御を行う制御部１５２がこのタイミングを判断し、信号を生成してアドレス比較部１５４に指示を行う為の信号である。
【０１００】
２４はバス制御信号であり、２５はウエイト信号である。
【０１０１】
図６は、周辺装置登録部に登録される周辺装置のアクセス開始アドレスと周辺装置のアクセスエリアサイズの一例である。
【０１０２】
本実施の形態では、システムの初期設定時に周辺装置登録部に、バッファ装置を介して接続する周辺装置の開始アドレスとエリアサイズを登録する。
【０１０３】
本例では８個の周辺装置が接続され、アドレスとエリアサイズとして図６に示す値が登録されている。
【０１０４】
またバッファ段数は１６段とする。（ポインター値  ０〜ＦH まで）。カレントポインター０の初期値は０Ｈ、ネクストポインターの初期値は１Ｈとする。周辺装置インターフェイス内のＦＩＦＯの段数はバッファと同じ1６段とする。
【０１０５】
次に、本実施の形態の並列モードによる動作の一例について説明する。
【０１０６】
まずCPUから、00A0＃1000Hにデータ0000＃000FH  の書込みが発生したとする（ステップＳ１）。
【０１０７】
次に制御部１５２がバスコマンドによりバスアクセスを認識し、信号２３を有効にする。信号２３が有効になる事により、バッファ書込み制御信号が動作し、カレントポインターの値が０Ｈである事から、信号３が有効となる。同時に、カレントポインターの値がネクストポインターの値に更新される。空きバッファ指定制御部は、バッファ１の次のバッファ２の使用フラグ１１８がオフである事から、ネクストポインター２１２に２Ｈをセットする（ステップＳ２）。
【０１０８】
次に信号３が有効になり、アドレスバッファ１１２−０に００A０＃１０００H が、データバッファ１１４−０に００００＃０００FHが、バッファNo．０のリード/ライトフラグ２１４に１が格納される。（フラグ２１４が１の時に書込みを表す事にする。）。バッファ０の使用フラグがオンになる（ステップＳ３）。
【０１０９】
次に書込み終了後に周辺回路選択信号６により、バッファ０のクロックが周辺装置１のクロックに切り替わる（ステップＳ４）。
【０１１０】
次にバッファ制御部１５０は信号２３をオンにすると共に信号１５有効にする。これにより周辺装置インターフェイス１のFIFOにカレントポインターの値０Ｈが格納される。ＦＩＦＯ書込みポインターが＋１される。同時にFIFOに書き込まれた段の使用フラグがオンとなる（ステップＳ５）。
【０１１１】
次に周辺装置バス１が使用されていない為、即座にFIFOの値が読み出され、読出しポインターの値が＋１となる。読み出されたＦＩＦＯの段の使用フラグがオフとなる（ステップＳ６）。
【０１１２】
次にＦＩＦＯの出力によりバッファセレクタ１４６がバッファ０からの出力を選択し、周辺装置インターフェイスにアドレスとデータとリード/ライトフラグが出力され、周辺装置１へのアクセスが開始される。周辺装置アクセス実行信号１７がアクティブとなり、ＦＩＦＯの出力とともにバッファ部に送信され、ＦＩＦＯの出力値が示すバッファの使用フラグ１１８がオフとなる。これにあわせてバッファの動作クロックがＣＰＵバスクロックに戻る。バッファからのアドレスは、周辺装置バスに合わせたものに変換されてもよい（ステップＳ７）。
【０１１３】
ＣＰＵからのアクセスは、ライト動作の場合、バッファへの書込みが終了した時点でCPUバスのサイクルを終了させる。既にバッファに書き込まれたアクセスの実際の周辺装置への書込みを待たずにバスサイクルを終了させる。リード動作の場合は、このリード動作が終了した時点でＣＰＵバスのサイクルを終了させる（ステップＳ８）。
【０１１４】
次にＣＰＵバスからのライトアクセスは、上記の動作を繰り返し、バッファが一杯になるまでは、CPUからのアクセス順序に関係なく、周辺装置に対してのアクセスが実行される。使用したバッファは次々に処理フラグ１１８がオフになり開放されて、次のＣＰＵUからのアクセス情報が格納される。空きバッファ指定制御部２１０が各バッファの使用フラグｅをバッファNo．を＋１方向にチェックし、ネクストポインター２１２を更新する（ステップＳ９）。
【０１１５】
図７は並列モードの場合の処理の流れを示すフローチャートである。
【０１１６】
ホストＣＰＵからＡポートに書込み動作発生（ステップＳ１１０）。ここでＡポートとは周辺装置Ａが接続されているポートである。
【０１１７】
ポインター001のバッファにアドレス・データを保存。ホストＣＰＵへはアクセス終了を報告。この時点ではポインター001のバッファはホストＣＰＵのクロックで動作している（ステップＳ１２０）。
【０１１８】
ポインター001のクロックがＡポートのクロックに切り替わると共に、ポインター値001がＡポートのポインターＦＩＦＯに格納される。Ａポートのアクセス終了後、バッファはホストＣＰＵ側クロックに切り替わる（ステップＳ１３０）。
【０１１９】
ポインター002のバッファにアドレス・データを保存。ホストＣＰＵへはアクセス終了を報告（ステップＳ１４０）。
【０１２０】
ポインター002のクロックがＡポートのクロックに切り替わると共に、ポインター値002がＡポートのポインターＦＩＦＯに格納される。Ａポートのアクセス終了後、ホストＣＰＵ側クロックに切り替わる（ステップＳ１６０）。
【０１２１】
ホストＣＰＵからＢポートに書込み動作発生（ステップＳ１７０）。ここでＢポートとは周辺装置Ｂが接続されているポートである。
【０１２２】
ポインター003のバッファにアドレスデータを保存。ホストＣＰＵへはアクセス終了を報告。この時点ではポインター003のバッファはホストＣＰＵのクロックで動作している（ステップＳ１８０）
ポインター003のクロックがＢポートのクロックに切り替わると共に、ポインター値003がＢポートのポインターＦＩＦＯに格納される。Ｂポートのアクセス終了後ホストＣＰＵ側クロックに切り替わる（ステップＳ１９０）
ホストＣＰＵからＡポートに書込み動作発生（ステップＳ２００）。
【０１２３】
ポインター004のバッファにアドレス・データを保存。ホストＣＰＵへはアクセス終了を報告（ステップＳ２１０）。
【０１２４】
ポインター004のクロックがＡポートのクロックに切り替わると共に、ポインター値004がＡポートのポインターＦＩＦＯに格納される。Ａポートのアクセス終了後、ホストＣＰＵ側クロックに切り替わる（ステップＳ２２０）。
【０１２５】
ホストＣＰＵからAポートに読出し動作発生（ステップＳ２３０）。
【０１２６】
ポインター005のアドレスバッファにアドレスを保存（ステップＳ２４０）。
【０１２７】
ポインター005のクロックがＡポートのクロックに切り替わると共に、ポインター値005がＡポートのポインターＦＩＦＯに格納される（ステップＳ２５０）。
【０１２８】
ポインター005のデータバッファにＡポートからの読出しデータが格納された後、ホストＣＰＵのクロックに切り替わる（ステップＳ２６０）。
【０１２９】
ホストＣＰＵへ読出しデータと共にアクセス終了信号が返される（ステップＳ２７０）。
【０１３０】
なおステップＳ１９０において、これ以前の他のポートのアクセスが終了した後にポートアクセスが許可されるように制御することで逐次モード（ホストからのアクセスの順番に処理を実行するモード）の処理を実現することができる。
【０１３１】
逐次的動作モードに設定すると実質的アクセス順番が保証できる。
【０１３２】
並列的動作モードに設定すると各周辺回路へのアクセスが平行して行われるのでシステムのパフォーマンスを上げる事ができる。ホストＣＰＵ側の動作クロックと周辺回路側の動作クロックが著しく異なりホスト側が速い場合に効果は顕著である。
【０１３３】
逐次処理の場合は、ホスト側ＣＰＵが高速に動作しても遅い周辺回路のアクセスが終わるまでは次の動作に進めないが、並列モードの場合は、バッファに高速に書き込んでしまえば遅い周辺回路のアクセスが終了しなくても別な周辺回路にアクセスする事が可能となる。
【０１３４】
従って各周辺回路間の連携制御が無い場合は、並列モードにする事で、各周辺回路を実質並列制御する事が可能となるのでシステム性能の向上に繋がる。
【０１３５】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【図面の簡単な説明】
【０１３６】
【図１】本実施の形態のバッファ装置について説明するための図。
【図２】複数の周辺回路と制御部の間に存在するバッファ装置の構成図。
【図３】バッファ部の構成図。
【図４】周辺装置インターフェースの構成図。
【図５】バッファ制御部の構成図。
【図６】周辺装置登録部に登録される周辺装置のアクセス開始アドレスと周辺装置のアクセスエリアサイズの一例。
【図７】並列モードの場合の処理の流れを示すフローチャート。
【符号の説明】
【０１３７】
１００  バッファ装置、  １１０  バッファ、１２０  クロック切り替え部、１３０  第１のＩ／Ｆ部、１４０  第２のＩ／Ｆ部、１４２  ＦＩＦＯ、１４６  セレクタ、１４８  バスドライバレシーバ、１５０  クロック切り替え制御部、１５２  クロック切り替え制御信号、１７０  制御部、１８０  第１の回路、１９０  第２の回路、３００  情報処理装置
【図１】
2007109199.tif 000003
【図２】
2007109199.tif 000004
【図３】
2007109199.tif 000005
【図４】
2007109199.tif 000006
【図５】
2007109199.tif 000007
【図６】
2007109199.tif 000008
【図７】
2007109199.tif 000009