(57)【特許請求の範囲】
【請求項１】
相互に異なるクロック周波数で独立して動作する転送元回路および転送先回路の間でデータ転送を行うデータ転送方法において、
前記転送元回路は、第１のクロック周波数の１サイクル中に、前記第１のクロック周波数より高い第２のクロック周波数のクロックに同期したパルスが１つ存在する信号（以下、データ転送基準信号）を周期的に発生し、このデータ転送基準信号のタイミングでデータ転送するとともに、前記データ転送基準信号の次に発生したデータ転送基準信号により前記転送先回路でのデータ取り込み完了を認識することを特徴とするデータ転送方法。
【請求項２】
前記データ転送基準信号は、
前記第１のクロック周波数のクロックを２分周した信号を入力とし、前記第１のクロック周波数で動作する１つのフリップフロップ回路と、前記第２のクロック周波数のクロックで動作する３つのフリップフロップ回路とを直列に接続し、かつ前記３つのフリップフロップ回路から出力された位相の異なる２つの出力の排他的論理和をとるＥＸＯＲ回路を接続した回路により生成されることを特徴とする請求項１記載のデータ転送方法。
【請求項３】
前記データ転送基準信号は、
自身の回路で生成される信号の否定論理積をループバックさせた信号を入力とし、前記第１のクロック周波数で動作する１つのフリップフロップ回路と、前記第２のクロック周波数のクロックで動作する３つのフリップフロップ回路とを直列に接続し、かつ前記３つのフリップフロップ回路から出力された位相の異なる２つの出力の排他的論理和をとるＥＸＯＲ回路を接続した回路により生成されることを特徴とする請求項１記載のデータ転送方法。
【請求項４】
前記２つの回路のうち第２のクロック周波数で動作する回路側にリードバッファ回路を設け、前記第１のクロック周波数で動作する回路から第２のクロック周波数で動作する回路へ転送されたデータを前記リードバッファ回路に取り込むことを特徴とする請求項１記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＬＳチップ内部あるいはそれぞれ異なるチップに存在する回路間でデータ転送を行う技術に関し、とくに互いにクロック周波数が異なる場合のデータ転送方法に関する。
【０００２】
【従来の技術】
図１１に示すように、異なるクロック周波数（回路ＡはＣｌｏｃｋ＿Ａ、回路ＢはＣｌｏｃｋ＿Ｂ）で互いに独立して動作している２つの回路間でデータ転送を行う場合の手法としては、（１）ハンドシェークを用いた転送方式、（２）非同期ＲＡＭを用いた転送方式などがある。以下、各転送方式について説明する。
【０００３】
（１）ハンドシェークを用いた転送方式
図１２はハンドシェークを用いた転送方式の概略構成図、図１３はそのタイミングチャートである。図１２において、破線で囲んだ部分はメタステーブルを回避するために挿入された２段のフリップフロップ回路である。このフリップフロップによりデータ転送のタイミングは２パルス分遅れるため、各回路では信号を受け取ってからそれぞれ２パルス目で次の動作を開始することになる。
【０００４】
回路Ａから回路Ｂへデータ転送する場合について見てみると、回路Ａから回路Ｂへデータの転送開始を知らせるＴｒａｎｓｆｅｒＳｔａｒｔ信号を送ると、回路ＢではＴｒａｎｓｆｅｒＳｔａｒｔ＿Ｔｏ＿Ｂでこれを認識し、応答としてＴｒａｎｓｆｅｒＡｃｋを回路Ａに返す。このＴｒａｎｓｆｅｒＡｃｋを受けた回路Ａでは、ＴｒａｎｓｆｅｒＡｃｋ＿Ｔｏ＿Ａでこれを認識し、ＴｒａｎｓｆｅｒＳｔａｒｔ信号を下げてデータ転送終了を知らせる。これに対し回路Ｂが、ＴｒａｎｓｆｅｒＡｃｋを下げると、回路ＡではＴｒａｎｓｆｅｒＡｃｋ＿Ｔｏ＿Ａが下がったことを認識して、ＴｒａｎｓｆｅｒＳｔａｒｔを下げる。この一連の動作によりデータ転送の制御が終了する。
【０００５】
（２）非同期ＲＡＭを用いた転送方式
図１４は、非同期ＲＡＭを用いた転送方式の概略構成図である。この方式は、データ／アドレスの書き込み用ポートと読み出し用ポートの２つのポートをもつ非同期ＲＡＭ１を２つの回路の境界にし、各回路のクロック周波数で書き込み（Ｗｒｉｔｅ）と読み出し（Ｒｅａｄ）を行うことでクロック周波数の違いを吸収している。
【０００６】
【発明が解決しようとする課題】
上記（１）のハンドシェークを用いた転送方式では、ＴｒａｎｓｆｅｒＳｔａｒｔやＴｒａｎｓｆｅｒＡｃｋのような制御信号のやりとりを行いながらデータの送受信を行うため、１つのデータ転送にかかるオーバーヘッドｔｏｈは大きくなる。とくに、この方式で用いているＴｒａｎｓｆｅｒＳｔａｒｔとＴｒａｎｓｆｅｒＡｃｋ信号はレベル信号なので、ｎ個のデータ転送を行う場合のオーバーヘッドはｎ倍となるため、大量のデータ転送には適さないという問題点があった。
【０００７】
一方、（２）の非同期ＲＡＭを用いた転送方式の場合、図１４に示すような単方向のデータ転送では２ポートの非同期ＲＡＭが１つで済むが、双方向のデータ転送を実現する場合は、２ポートの非同期ＲＡＭが２つ必要となるため、ハードウェアの大幅な増加が避けられないという問題点があった。
【０００８】
この発明は、上記課題を解決するためになされたもので、異なるクロック周波数で動作している回路間でのデータ転送において、ハードウェアの大幅な増加を招くことなしに、１つのデータ転送にかかるオーバーヘッドを少なくすることができるデータ転送方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するため、請求項１の発明は、異なるクロック周波数で互いに独立動作している回路間でデータ転送を行うデータ転送方法において、第１のクロック周波数の１サイクル中に、第２のクロック周波数のクロックに同期したパルスが１つ存在する信号（以下、データ転送基準信号）を発生し、前記第２のクロック周波数で動作する回路から第１のクロック周波数で動作する回路へデータ転送した際に、転送先でのデータ取り込み完了を前記データ転送基準信号により認識することを特徴とする。
【００１０】
請求項２の発明は、請求項１において、前記データ転送基準信号は、前記第１のクロック周波数のクロックを２分周した信号を入力とし、前記第１のクロック周波数で動作する１つのフリップフロップ回路と、前記第２のクロック周波数のクロックで動作する３つのフリップフロップ回路とを直列に接続し、かつ前記３つのフリップフロップ回路から出力された位相の異なる２つの出力の排他的論理和をとるＥＸＯＲ回路を接続した回路により生成されることを特徴とする。
【００１１】
請求項３の発明は、請求項１において、前記データ転送基準信号は、自身の回路で生成される信号の否定論理積をループバックさせた信号を入力とし、前記第１のクロック周波数で動作する１つのフリップフロップ回路と、前記第２のクロック周波数のクロックで動作する３つのフリップフロップ回路とを直列に接続し、かつ前記３つのフリップフロップ回路から出力された位相の異なる２つの出力の排他的論理和をとるＥＸＯＲ回路を接続した回路により生成されることを特徴とする。
【００１２】
請求項４の発明は、請求項１において、前記２つの回路のクロック周波数よりも、さらに高いクロック周波数で動作する第３の回路を前記２つの回路間に挿入し、前記第３の回路を介してデータ転送することを特徴とする。
【００１３】
請求項５の発明は、請求項１において、前記２つの回路のうち第２のクロック周波数で動作する回路側にリードバッファ回路を設け、前記第１のクロック周波数で動作する回路から第２のクロック周波数で動作する回路へ転送されたデータを前記リードバッファ回路に取り込むことを特徴とする。
【００１４】
【発明の実施の形態】
以下、この発明に係わるデータ転送方法を適用したデータ転送システムについて説明する。
【００１５】
１．  順方向（回路Ａ→回路Ｂ）へのデータ転送
図１は、この実施形態に係わるデータ転送システムの概略構成図である。このシステムは、異なるクロック周波数で互いに独立動作している回路Ａ、回路Ｂで構成され、これら２つの回路間は回線１０で接続されている。ここで、回路Ａは高いクロック周波数（Ｃｌｏｃｋ＿Ａ）で動作し、回路Ｂは低いクロック周波数（Ｃｌｏｃｋ＿Ｂ）で動作するものとする。
【００１６】
回路Ａは、データ転送を行う転送回路１１と、この転送回路１１にデータ転送の要求を発行する内部回路１２とを備えている。転送回路１１は、後述するＴＥジェネレータ１３、フリップフロップ（以下、Ｆ．Ｆ）１４、１５及びマルチプレクサ１６、１７により構成されている。
【００１７】
内部回路１２からはデータ転送要求であるＶａｌｉｄとＶａｌｉｄＤａｔａが、Ｃｌｏｃｋ＿Ａに同期して出力され、転送回路１１のマルチプレクサ１６、１７へ入力される。マルチプレクサ１６、１７は、ＴＥジェネレータ１３から後述するデータ転送基準信号（以下、ＴＥ信号）が入ってくると、ホールドしていたＶａｌｉｄ、ＶａｌｉｄＤａｔａを後段のＦ．Ｆ１４、１５へ送り、新たにデータを取り込む。このデータは、次にＴＥ信号が入ってくるまでホールドされる。このように、マルチプレクサ１６、１７でホールドされたデータはＴＥ信号のタイミングでサンプリングされ、Ｖａｌｉｄ（Ｃｌｏｃｋ＿Ａに同期したパルス信号）からＶａｌｉｄ＿Ｆｒｏｍ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａ、（回路ＢのＣｌｏｃｋ＿Ｂでサンプリングできるようなパルス信号）に変換されて回路Ｂへ転送される。
【００１８】
回路Ｂでは、Ｖａｌｉｄ＿Ｆｒｏｍ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａを、Ｃｌｏｃｋ＿Ｂで動作するＦ．Ｆ回路１８、１９でＶａｌｉｄ＿Ｔｏ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｔｏ＿Ｂに変換して内部回路２０へ送る。なお、回路Ｂに到達したＶａｌｉｄ＿Ｆｒｏｍ＿Ａは、セットアップ時間を満たしていることが前提条件となる。
【００１９】
図２は、ＴＥ信号を生成するＴＥジェネレータ１３の構成例を示す回路構成図である。このＴＥジェネレータ１３は、リセット信号（Ｒｅｓｅｔ）によりＨレベルのデータを選択するマルチプレクサ２１と、Ｃｌｏｃｋ＿Ｂを２分周した信号を入力とし、Ｃｌｏｃｋ＿Ｂで動作するＦ．Ｆ２２と、Ｃｌｏｃｋ＿Ａで動作する３つのＦ．Ｆ２３、２４、２５と、これらＦ．Ｆ２４と２５から出力された位相のずれた２つの出力の排他的論理和をとるＥＸＯＲ回路２６とから構成されている。このうち、Ｆ．Ｆ２３、２４は、メタステーブルを回避するために挿入されたＦ．Ｆである。
【００２０】
図３は、ＴＥジェネレータ１３の動作を示すタイミングチャートである。図中、Ｉｎｎｅｒ−ｓｉｇ−ａ．〜Ｉｎｎｅｒ−ｓｉｇ−ｄ．は、直列に接続された各Ｆ．Ｆの出力側の信号電位を示している。Ｆ．Ｆ２２からＣｌｏｃｋ＿Ｂの１サイクルに対応したＩｎｎｅｒ−ｓｉｇ−ａ．が出力されると、この信号はＦ．Ｆ２３、２４、２５を通過するごとに１パルスづつ位相がずれ、ＥＸＯＲ回路２６へ出力される。ここで、ＥＸＯＲ回路２６には、３段目のＦ．Ｆ２４から出力されたＩｎｎｅｒ−ｓｉｇ−ｃ．と４段目のＦ．Ｆ２５から出力されたＩｎｎｅｒ−ｓｉｇ−ｄ．が入力され、その排他的論理和としてＴｒａｎｓｆｅｒＥｎａｂｌｅ（ＴＥ）信号が出力される。このＴＥ信号は、低いクロック周波数（この場合はＣｌｏｃｋ＿Ｂ）のクロック１サイクル中に、必ず高いクロック周波数（この場合はＣｌｏｃｋ＿Ａ）に同期したパルスが１つ存在するような信号となる。図１の内部回路１２では、データ転送要求であるＶａｌｉｄ、ＶａｌｉｄＤａｔａが転送回路１１で受け入れられたかどうかを、このＴＥ信号で認識している。
【００２１】
図３からも明らかなように、ＴＥ信号を生成するためには、互いの回路を使用しているクロック周波数の比が４程度以上（ただし、適用する回路の転送距離・ゲートのセットアップ時間／ホールド時間によって変動する）が望ましい。これは、クロック周波数の比が小さくなると、転送されたデータに対し十分なセットアップ時間が確保できなくなるからである。この例では、クロック周波数の比が４．５の場合を例として説明する。
【００２２】
図４は、ＴＥ信号を生成するＴＥジェネレータ１３の他の構成例を示す回路構成図であり、図２と同等部分を同一符号で示している。図３の回路との相違点は、３段目のＦ．Ｆで生成される信号をＮＡＮＤ回路２７に入れ、リセット（Ｒｅｓｅｔ）信号との否定論理積をループバックさせた信号を入力としている部分にある。この図４の回路においても、図３に示すような低いクロック周波数のクロック１サイクル中に、必ず高いクロック周波数に同期したパルスが１つ存在するようなＴＥ信号を生成することができる。
【００２３】
次に、図１に示すデータ転送システムにおいて、回路Ａから回路Ｂへデータ転送を行う場合の動作を図５のタイミングチャートを参照しながら説明する。
【００２４】
まず、回路Ａの内部回路１２からＣｌｏｃｋ＿Ａに同期してＶａｌｉｄ、ＶａｌｉｄＤａｔａが出力されると、転送回路１１はＴＥ信号のレベルがＨになったタイミングでデータを取り込む。前記内部回路１２では、ＴＥ信号のレベルを監視しており、ＴＥ信号のレベルがＨになったときに転送回路１１でデータ転送の要求が受け入れられたものと認識して、Ｖａｌｉｄ、ＶａｌｉｄＤａｔａを終了する。一方、転送回路１１では、ＴＥ信号のレベルがＨになったタイミングでデータを取り込み、Ｖａｌｉｄ＿Ｆｒｏｍ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａを出力する。そして、次にＴＥ信号のレベルがＨになったときに、Ｖａｌｉｄ＿Ｆｒｏｍ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａを終了する。これは、ＴＥ信号のレベルが次にＨになるまでの間に、必ず回路ＢのＣｌｏｃｋ＿Ｂのパルスエッジが立つからである。すなわち、図５において、ＴＥ信号のレベルが２回目にＨになるまでの間に必ずＣｌｏｃｋ＿Ｂのパルスエッジが立ち、このタイミング（図中、ＤａｔａＲｅｃｉｅｖｅ）でデータが回路Ｂ側に取り込まれることが保証されているからである。
【００２５】
こうして回路Ｂへ転送されたＶａｌｉｄ＿Ｆｒｏｍ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａは、回路ＢのＦ．Ｆ１８、１９でＣｌｏｃｋ＿Ｂに同期したＶａｌｉｄ＿Ｔｏ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｔｏ＿Ｂに変換される。
【００２６】
上述したデータ転送システムにおいては、転送先である回路Ｂでのデータの取り込みをＴＥ信号により認識するようにしたので、転送先のクロック周波数に合わせてデータ転送する場合に比べて、１つのデータ転送にかかるオーバーヘッドｔｏｈを大幅に少なくすることができる。例えば、従来のハンドシェークを用いた転送方式である図１３の例と比較すると、オーバーヘッドｔｏｈは約１／４程度に少なくすることができる。また、ここで用いられるＶａｌｉｄ信号はパルス信号なので、大量のデータ転送にも向いており、ｎ個のデータを（ｎ＋１）Ｃｌｏｃｋ＿Ｂサイクル時間で転送することができる。
【００２７】
なお、図１の回路Ａでは、ＴＥジェネレータ、Ｆ．Ｆ及びマルチプレクサなどが付加されているが、非同期ＲＡＭを用いる方式に比べた場合、これらハードウェアの増加は比較し得ないほど小さいものである。
【００２８】
２．  逆方向（回路Ｂ→回路Ａ）へのデータ転送
次に、逆方向へデータ転送する場合、すなわち回路Ｂから回路Ａへデータ転送する場合について説明する。
【００２９】
図６は、逆方向へデータ転送する場合のデータ転送システムの構成を示す概略構成図である。この場合も回路Ａは高いクロック周波数（Ｃｌｏｃｋ＿Ａ）で動作し、回路Ｂは低いクロック周波数（Ｃｌｏｃｋ＿Ｂ）で動作するものとする。
【００３０】
回路Ｂは、データ転送の要求を発行する内部回路３２と、Ｃｌｏｃｋ＿Ｂで動作するＦ．Ｆ回路３３、３４を備えている。内部回路３２で発行されたデータ転送要求であるＶａｌｉｄ、ＶａｌｉｄＤａｔａは、Ｆ．Ｆ３３、３４でＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂに変換されて回路Ａへ転送される。
【００３１】
回路Ａは、転送されたデータを受信する受信回路３５と、この受信回路３５からデータを受け取る内部回路３６とを備えている。受信回路３５は、ＴＥ信号を生成するＴＥジェネレータ１３、Ｃｌｏｃｋ＿Ａで動作するＦ．Ｆ３７及び３８、ＡＮＤ回路３９により構成されている。ＴＥジェネレータ１３の構成は図２（又は図４）と同じである。
【００３２】
回路Ａでは、回路ＢのＦ．Ｆ３４、３５から出力されたＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂを、ＴＥジェネレータ１３の生成するＴＥ信号のタイミングで取り込み、ＡＮＤ回路３９で論理積をとる。ここで取り出されたＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿ＢをＦ．Ｆ回路３７、３８で取り込み、Ｖａｌｉｄ＿Ｔｏ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｔｏ＿Ａに変換して内部回路３６へ送る。
【００３３】
次に、図６に示すデータ転送システムにおいて、回路Ｂから回路Ａへデータ転送を行う場合の動作を図７のタイミングチャートを参照しながら説明する。
【００３４】
まず、回路ＢからＣｌｏｃｋ＿Ｂに同期したＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂが転送されると、これらのデータは回路Ａの受信回路３５に取り込まれ、ホールドされる。そして、ＴＥジェネレータ１３からＴＥ信号が出力されると、ＡＮＤ回路３９で論理積がとられ、ＴＥ信号に対応したＶａｌｉｄ＿Ｆｒｏｍ＿Ｂが出力される。なお、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿ＢはＶａｌｉｄ＿Ｆｒｏｍ＿Ｂのタイミングで取り込まれるため、図６ではＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿ＢのＡＮＤ回路は必要ない（ＡＮＤ回路が入っていても同様にデータをとることはできる）。
【００３５】
一方、回路Ｂでは、Ｖａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂを転送した後、次のＣｌｏｃｋ＿Ｂの立ち上がりでＶａｌｉｄ、ＶａｌｉｄＤａｔａを終了する。これは、Ｃｌｏｃｋ＿Ｂの１サイクル中に必ずＴＥ信号のレベルがＨになり、このタイミング（図中、ＤａｔａＲｅｃｉｅｖｅ）でＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂが回路Ａに取り込まれることが保証されているからである。
【００３６】
こうして回路Ａへ転送されたＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂは、Ｆ．Ｆ３７、３８でＣｌｏｃｋ＿Ａに同期したＶａｌｉｄ＿Ｔｏ＿Ａ、ＶａｌｉｄＤａｔａ＿Ｔｏ＿Ａに変換される。
【００３７】
このように、回路Ｂから回路Ａへのデータ転送においては、回路Ｂから転送されてきたＶａｌｉｄ＿Ｆｒｏｍ＿Ｂ、ＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｂと、ＴＥ信号との論理積をとることによって、簡単にデータを検出を行うことができる。また、１つのデータ転送にかかるオーバーヘッドｔｏｈも、図５と同様に少なくすることができる。
【００３８】
２．１  リードバッファを用いたデータ転送
ところで、図６のような逆方向へのデータ転送において、回路Ｂから回路Ａへの転送要求が回路Ａの側で発生した場合は、回路Ａから回路Ｂに転送要求を出し、これに応じて回路Ｂから回路Ａへデータを転送することになる。したがって、回路Ａで転送要求が頻繁に発生するような場合には、その都度、前記一連の手順を踏むことになり、転送に時間がかかってしまう。
【００３９】
そこで、図８に示すように、回路Ａ側にリードキューとして、バリッドキュー（ＶａｌｉｄＱｕｅｕｅ）４１、データキュー（ＤａｔａＱｕｅｕｅ）４２を挿入し、回路Ａから回路Ｂへ転送要求が発生する前に、回路Ｂ側で回路Ａに転送できると判断したデータをあらかじめ送るようにすることもできる。なお、図８では、図６と同等部分を同一符号で示している。この場合、リードキューにデータが溜まっている間はＣｌｏｃｋ＿Ａの１サイクル時間でデータを取り込むことができるので、転送の際のオーバーヘッドを大幅に少なくすることができる。なお、回路Ｂから回路Ａへデータを転送する時は先に説明した図７のタイミングチャートに従って動作する。
【００４０】
このように、リードバッファを用いると、非同期ＲＡＭを用いた転送方法に比べてハードウェア量を削減することができる。また、適用する回路の仕様により、設計時に最適なキューの深さを選択することができる。
【００４１】
３．  クロック周波数が近接している場合のデータ転送
ここまでは、回路Ａ、Ｂのクロック周波数の比が４．５の場合について説明してきたが、２つの回路のクロック周波数が近接しているような場合には、転送されたデータのセットアップ時間／ホールド時間を確保することができないため、先に説明したデータ転送方法を適用することはできない。しかし、このような場合であっても、２つの回路のクロック周波数よりも、さらに高いクロック周波数で動作する回路を間に挿入することにより、この発明に係わるデータ転送方法を適用することができる。
【００４２】
図９は、回路Ａと回路Ｂのクロック周波数が近接している場合のデータ転送システムの構成を示す概略構成図である。このシステムでは、クロック周波数の近接している回路Ａ、回路Ｂの間に、回路Ａ、Ｂよりもさらに高いクロック周波数で動作する回路Ｃが挿入されている。ここで、例えばＣｌｏｃｋ＿Ａが１００ＭＨｚ、Ｃｌｏｃｋ＿Ｂが８０ＭＨｚというように、回路Ａのクロック周波数が回路Ｂのそれよりも少しだけ高い場合は、回路Ｃのクロック周波数をＣｌｏｃｋ＿Ａの約４倍以上のクロック周波数Ｃｌｏｃｋ＿Ｃ（例えば５００ＭＨｚ）に設定する。ただし、クロック周波数については、この実施形態の数値例に限定されるものではない。
【００４３】
図９に示す回路Ａ、回路Ｂ及び回路Ｃの関係を図１と図６に対比させてみると、図１の回路Ａは図９の回路Ｃに、図１の回路Ｂは図９の回路Ａにそれぞれ相当し、図６の回路Ａは図９の回路Ｃに、図６の回路Ｂは図９の回路Ａにそれぞれ相当している。すなわち、図９の回路Ｃは回路Ａ、回路Ｂのどちらに対しても高いクロック周波数で動作する回路となるため、回路Ｃは図１の転送回路１１と図６の受信回路３５の両方を備えている。また、回路Ｃでは回路Ａと回路Ｂのそれぞれについてデータの転送／受信を行うため（Ａ⇔Ｃ、Ｃ⇔Ｂ）、前記転送回路１１と受信回路３５を２セット備えている。ただし、回路Ａと回路Ｂのクロック周波数が異なるため、ＴＥ信号を２種類（ＴＥ＿ＡＣ、ＴＥ＿ＢＣ）生成し、セットごとに異なるＴＥ信号で動作させている。
【００４４】
なお、ＴＥ信号を生成するＴＥジェネレータの構成は図２（又は図４）と同じである。また、前述した回路Ａ〜Ｃの転送回路や受信回路の構成はすでに説明しているので、ここでは説明を省略する。
【００４５】
図９に示すデータ転送システムにおいて、回路Ａから回路Ｂへデータ転送を行う場合は、まず回路Ａから回路Ｃへデータを転送し、次に回路Ｃから回路Ｂへデータを転送する。なお、回路Ａから回路Ｃへのデータ転送、及び回路Ｃから回路Ｂへのデータ転送は、先に説明した順び逆方向へのデータ転送と基本的に同じであるため、詳細な説明は省略する。
【００４６】
回路Ａから回路Ｃへデータ転送する場合、図１０（ａ）のタイミングチャートに示すように、回路Ａから転送されたＶａｌｉｄ＿Ｆｒｏｍ＿ＡとＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ａは、ＴＥ＿ＡＣ信号のタイミングで回路Ｃに取り込まれる。
【００４７】
回路Ａから回路Ｃへデータ転送する場合の動作は、図７の逆方向へデータ転送する場合と同じである。図１０（ａ）は、図７とはＴＥ（＿ＡＣ）信号のタイミングが異なる以外はほぼ同じタイミングで動作している。
【００４８】
回路Ｃから回路Ｂへデータ転送する場合、図１０（ｂ）のタイミングチャートに示すように、回路Ｃから転送されたＶａｌｉｄ＿Ｆｒｏｍ＿ＣとＶａｌｉｄＤａｔａ＿Ｆｒｏｍ＿Ｃは、ＴＥ＿ＢＣ信号のレベルが次にＨになるまでの間に回路Ｂへ取り込まれる。回路Ｃから回路Ｂへデータ転送する場合の動作は、図５の順方向へデータ転送する場合と同じである。図１０（ｂ）は、図５とはＴＥ（＿ＢＣ）信号のタイミングが異なる以外はほぼ同じタイミングで動作している。
【００４９】
このように、クロック周波数が近接している２つの回路の間に、さらに高いクロック周波数で動作する回路を間に挿入することにより、先に説明した順方向及び逆方向へのデータ転送方法を適用することができる。この場合も、１つのデータ転送にかかるオーバーヘッドｔｏｈ（ｔｏｈａ＋ｔｏｈｂ）を少なくすることができる。
【００５０】
なお、図９の構成においては、回路Ａ→回路Ｃの転送能力と回路Ｃ→回路Ｂの転送能力には差が生じている。すなわち、回路Ｃ→回路Ｂに比べて回路Ａ→回路Ｃの方が転送速度が速いため、データ量が多い場合には、回路Ａから送られたデータが回路Ｃへ溜まってしまい、回路Ｃのバッファ（メモリ）に格納できなくなるおそれがある。これに対しては、回路Ｃから回路Ａへ転送許可信号を送るなどの手法により、回路Ａから転送されるデータ量をコントロールする。
【００５１】
また、この実施形態では、回路Ｃを回路Ａ、Ｂ間に配置しているが、回路Ｃは回路Ａ又はＢのいずれか一方の側に配置されていてもよい。
【００５２】
【発明の効果】
以上説明したように、この発明に係わるデータ転送方法においては、転送先でのデータ取り込みの有無をデータ転送基準信号により認識するようにしたので、転送先のクロック周波数に合わせてデータ転送する場合に比べて、１つのデータ転送にかかるオーバーヘッドを少なくすることができる。また、非同期ＲＡＭを用いた転送方式と比べた場合、ハードウェア増加を大幅に少なくすることができる。
【図面の簡単な説明】
【図１】順方向へデータ転送する場合のデータ転送システムの概略構成図。
【図２】ＴＥ信号を生成するＴＥジェネレータの回路構成図。
【図３】ＴＥジェネレータの動作を示すタイミングチャート。
【図４】ＴＥ信号を生成するＴＥジェネレータの他の回路構成図。
【図５】回路Ａから回路Ｂへデータ転送する場合の動作を示すタイミングチャート。
【図６】逆方向へデータ転送する場合のデータ転送システムの概略構成図。
【図７】回路Ｂから回路Ａへデータ転送する場合の動作を示すタイミングチャート。
【図８】回路Ａにリードキューを挿入したデータ転送システムの概略構成図。
【図９】回路Ａと回路Ｂのクロック周波数が近接している場合のデータ転送システムの概略構成図。
【図１０】（ａ）は回路Ａから回路Ｃへデータ転送する場合の動作を示すタイミングチャート、（ｂ）は回路Ｃから回路Ｂへデータ転送する場合の動作を示すタイミングチャート。
【図１１】異なるクロック周波数で動作する２回路間でデータ転送を行う場合の概略構成図。
【図１２】ハンドシェークを用いた転送方式の概略構成図。
【図１３】ハンドシェークを用いた転送方式の動作を示すタイミングチャート。
【図１４】非同期ＲＡＭを用いた転送方式の概略構成図。
【符号の説明】
１１  転送回路
１２、２０  内部回路
１３  ＴＥジェネレータ
１４、１５  Ｆ．Ｆ（フリップフロップ）
１６、１７  マルチプレクサ
【図１】
0003560793.tif 000002
【図２】
0003560793.tif 000003
【図３】
0003560793.tif 000004
【図４】
0003560793.tif 000005
【図５】
0003560793.tif 000006
【図６】
0003560793.tif 000007
【図７】
0003560793.tif 000008
【図８】
0003560793.tif 000009
【図９】
0003560793.tif 000010
【図１０】
0003560793.tif 000011
【図１１】
0003560793.tif 000012
【図１２】
0003560793.tif 000013
【図１３】
0003560793.tif 000014
【図１４】
0003560793.tif 000015