(57)【要約】【課題】各機能ブロックが設定できるクロック周波数の自由度が大きく、クロック間のクロックスキューが大きい場合でも、動作が決定的で、通信レイテンシが小さく、信頼性の高い、機能ブロック間の通信が可能な半導体装置及び通信方法を提供すること。【解決手段】本発明にかかる半導体装置は、第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、第２のクロック信号に基づいて処理を行う第２の回路と、第１の回路と第２の回路との間の通信動作において、第１の回路の送信タイミング信号と、第１の回路の受信タイミング信号とを生成する通信タイミング制御回路とを備えている。通信タイミング制御回路は、第１及び第２のクロック信号の周波数比情報と、第１及び第２のクロック信号の位相関係情報によって決定される送信及び受信タイミング信号を生成する。【選択図】図１
2010074534.tif 000002
【特許請求の範囲】
【請求項１】
第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、
前記第２のクロック信号に基づいて処理を行う第２の回路と、
前記第１の回路と前記第２の回路との間の通信動作において、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成する通信タイミング制御回路とを備え、
前記通信タイミング制御回路は、第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報によって決定される前記送信タイミング信号及び前記受信タイミング信号を生成する半導体装置。
【請求項２】
前記通信タイミング制御回路は、第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報とを参照して、前記第２の回路が行う一回の受信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成することを特徴とする請求項１記載の半導体装置。
【請求項３】
第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、
前記第２のクロック信号に基づいて処理を行う第２の回路と、
前記第１の回路と前記第２の回路との間の通信動作において、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成する通信タイミング制御回路とを備え、
前記通信タイミング制御回路は、前記第２の回路が行う一回の受信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成する半導体装置。
【請求項４】
前記第１の回路あるいは前記第２の回路のうちのいずれかのデータ送信側の回路は、通信要求があることを示す通信要求信号と、通信データを転送する通信データ信号をデータ受信側の回路に対して送信し、前記データ受信側の回路は、前記通信要求を受理したことを示す通信応答信号を、前記データ送信側の回路に対して送信することを特徴とする請求項１〜３いずれかに記載の半導体装置。
【請求項５】
前記通信タイミング制御回路は、前記第１のクロック信号のタイミングで、前記正整数Ｍまで繰り返しカウントして、前記第１のクロック信号と前記第２のクロック信号の相対的な位相を示すカウント値を生成し、このカウント値に基づいて前記送信タイミング信号および前記受信タイミング信号を生成することを特徴とする請求項１〜４いずれかに記載の半導体装置。
【請求項６】
前記通信タイミング制御回路は、少なくとも前記周波数比情報と前記カウント値の組合せごとに、送信のタイミングであるか否かを示すデータと、受信のタイミングであるか否かを示すデータとを予めテーブル回路で保持し、入力されたこれら組合せに応じて前記テーブル回路から出力されたデータを前記送信タイミング信号および受信タイミング信号として出力することを特徴とする請求項５に記載の半導体装置。
【請求項７】
第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路との間で通信を行う通信方法であって、
第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報に基づいて、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成するステップと、
前記第１の回路が、生成された前記送信タイミング信号及び前記受信タイミング信号が指定するタイミングによって、前記第２の回路に対して通信を実行するステップを備えた通信方法。
【請求項８】
前記送信タイミング信号及び前記受信タイミング信号の生成ステップは、第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報とを参照して、前記第２の回路が行う一回の通信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成することを特徴とする請求項７記載の通信方法。
【請求項９】
第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路との間で通信を行う通信方法であって、
前記第２の回路が行う一回の受信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成するステップと、
前記第１の回路が、生成された前記送信タイミング信号及び前記受信タイミング信号が指定するタイミングによって、前記第２の回路に対して通信を実行するステップを備えた通信方法。
【請求項１０】
前記第１の回路或いは前記第２の回路のうちいずれかのデータ送信側の回路は、通信要求があることを示す通信要求信号と、通信データを転送する通信データ信号をデータ受信側の回路に対して送信し、
前記データ受信側の回路は、前記通信要求を受理したことを示す通信応答信号を、前記データ送信側の回路に対して送信することを特徴とする請求項７〜９いずれかに記載の通信方法。
【請求項１１】
前記第１のクロック信号のタイミングにおいて、前記正整数Ｍまで繰り返しカウントして、前記第１のクロック信号と前記第２のクロック信号の相対的な位相を示すカウント値を生成し、このカウント値に基づいて前記送信タイミング信号及び前記受信タイミング信号を生成することを特徴とする請求項７〜１０いずれかに記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能ブロックを複数有する半導体装置及び通信方法に関し、特に、異なるクロック周波数で動作する複数の機能ブロック間で通信する半導体装置及びその通信方法に関する。
【背景技術】
【０００２】
従来、異なるクロック周波数で動作する回路（機能ブロック）同士の通信方法には、主に同期方式及び非同期方式の２種類がある。
【０００３】
初めに、従来の同期方式について説明する。従来の同期方式は、通信する２つの回路の各クロックの周波数比が１対整数(例えば、１：２、１：３、・・・等)や、整数対１（例えば、２：１、３：１、・・・等)であり、かつ２つのクロックの位相が等しいことが適用の条件となる。すなわち、従来の同期方式に基づく同期通信は、クロック同士が同期している回路間でのみ行うことが出来る通信方法である。
【０００４】
図１０は、クロックＡで動作する回路Ａと、クロックＢで動作する回路Ｂが、同期方式を用いて通信する半導体装置の例を示す図である。この例では、回路Ａから回路Ｂの方向でデータを通信する。
【０００５】
クロックＡの周波数は、クロックＢの整数倍（１、２、３、・・・倍など）である。クロックＡとクロックＢの分配遅延は、クロックツリー合成などにより、同等になるように設計される。また、クロックＡとクロックＢ間は、隣接する通信タイミングでセットアップタイム制約やホールドタイム制約を満足するようにタイミング設計される。例えば、ホールドタイム制約を満足するために、フリップフロップ間の遅延が小さい箇所には、遅延を付加するためのバッファ回路が挿入される。以下ではこれらバッファ回路をホールドタイム補償バッファと表記する。
【０００６】
信号ＲｅｑＡおよびＲｅｑＢは通信要求信号である。回路Ａから回路Ｂへの通信要求がある場合に、回路ＡはクロックＡのタイミングで信号ＲｅｑＡに通信要求を出力する。ホールドタイム補償バッファ１０５Ａは、信号ＲｅｑＡにホールドタイム制約を満足するための遅延を付加し、信号ＲｅｑＢとして出力する。回路ＢはクロックＢのタイミングで信号ＲｅｑＢを入力する。
【０００７】
信号ＡｃｋＡおよびＡｃｋＢは通信応答信号である。回路Ｂが受信可能な状態にあるか、回路Ａからの通信データを正常に受理した場合に、回路ＢはクロックＢのタイミングで信号ＡｃｋＢに通信応答を出力する。ホールドタイム補償バッファ１０５Ｂは、信号ＡｃｋＢにホールドタイム制約を満足するための遅延を付加し、信号ＡｃｋＡとして出力する。回路ＡはクロックＡのタイミングで信号ＡｃｋＡを入力する。
【０００８】
信号ＤａｔａＡおよびＤａｔａＢは、回路Ａから回路Ｂへの通信データを送る通信データ信号である。回路ＡはクロックＡのタイミングで信号ＤａｔａＡを出力する。ホールドタイム補償バッファ１０５Ｃは、信号ＤａｔａＡにホールドタイム制約を満足するための遅延を付加し、信号ＤａｔａＢとして出力する。回路ＢはクロックＢのタイミングで信号ＤａｔａＢを入力する。
【０００９】
カウンタ回路１００は、クロックＡとクロックＢの周波数の比を示す周波数比情報１０１を参照して、回路Ａが通信するタイミングを示す通信タイミング信号１０２を生成する。回路Ａは、通信タイミング信号１０２を入力して、通信速度を回路Ｂの受信速度に合わせることで、同期的な通信を実現する。
【００１０】
図１１は、クロックＡの周波数がクロックＢの周波数の３倍であり、回路Ａから回路Ｂへデータを送信する場合の動作を示すタイミング図である。クロックＡ、通信タイミング信号１０２、通信要求信号ＲｅｑＡおよびＲｅｑＢ、通信データＤａｔａＡおよびＤａｔａＢ、クロックＢ、通信応答信号ＡｃｋＡおよびＡｃｋＢを図示している。また、クロックＡおよびクロックＢの立ち上がりのタイミングをそれぞれＴ０、Ｔ１、Ｔ２、・・・で示している。
【００１１】
クロックＡの周波数はクロックＢの周波数の３倍であるので、クロックＡの３サイクルに１回、具体的には、タイミングＴ０、Ｔ３、Ｔ６、Ｔ９、Ｔ１２において、クロックＡとクロックＢの位相（立ち上がりエッジ）が一致している。回路Ａは、このクロックＡとクロックＢの位相が一致するタイミングを示す通信タイミング信号１０２を参照して、このクロックＡとクロックＢの位相が一致するタイミングのみで通信動作を行う。一方、回路ＢはクロックＢの毎サイクルにおいて通信動作を行うので、回路Ａと回路Ｂの通信速度が一致する。
【００１２】
より詳細には、クロックＡとクロックＢの位相が一致し、通信を行うタイミングで、通信タイミング信号１０２は値１となる。回路Ａが内蔵するフリップフロップＡ１、Ａ２、Ａ３は、通信タイミング信号１０２をイネーブル入力（ＥＮ）に入力することで、通信タイミング信号１０２が値１となるタイミングのみで動作する。従って回路Ａは、この通信を行うタイミングで通信要求信号ＲｅｑＡ及び通信データＤａｔａＡを出力し、通信応答信号ＡｃｋＡを入力する。
【００１３】
信号ＲｅｑＡ、ＡｃｋＢおよびＤａｔａＡには、それぞれホールドタイム補償バッファ１０５Ａ、１０５Ｂ、１０５Ｃにより、ホールドタイム制約を満足するための遅延Ｔｈｏが付加されている。
【００１４】
クロックＡの周波数がクロックＢの整数倍である場合、通信タイミング信号１０２は、カウンタ回路１００により容易に生成することができる。例えば、クロックＡの周波数がクロックＢのＮ倍（Ｎは整数）である場合、１からＮまでカウントアップするカウント回路を用いて、Ｎサイクルに１回、通信タイミング信号１０２に値１を出力すればよい。
【００１５】
次に、具体的な通信動作を、図１１を参照して説明する。まず、タイミングＴ０では、回路Ａは、通信要求信号ＲｅｑＡに値０を出力することで、回路Ｂに通信要求がないことを通知する。一方回路Ｂは、通信応答信号ＡｃｋＢに値１を出力することで、通信を受信できる状態にあることを回路Ａに通知する。
【００１６】
次に、タイミングＴ３において、回路Ａは、通信要求信号ＲｅｑＡに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ０を通信データＤａｔａＡに出力する。回路Ｂは、タイミングＴ０で回路Ａが通信要求信号ＲｅｑＡに出力した値０を信号ＲｅｑＢから入力し、回路Ａからの通信要求がないと判断する。回路Ｂは引き続き通信応答信号ＡｃｋＢに値１を出力する。
【００１７】
次に、タイミングＴ６において、回路Ａは、タイミングＴ３で回路Ｂが通信応答信号ＡｃｋＢに出力した値１を信号ＡｃｋＡから入力し、通信要求およびそのデータＤ０が受理されたと判断する。その結果、通信要求信号ＲｅｑＡに値０を出力し、回路Ｂにさらなる通信要求がないことを通知する。回路Ｂは、タイミングＴ３で回路Ａが通信要求信号ＲｅｑＡを通じて出力した通信要求を受理するとともに、通信データＤ０を受信する。その結果、通信応答信号ＡｃｋＢに値０を出力し、これ以上通信を受信できる状態ではないことを回路Ａに通知する。
【００１８】
次に、タイミングＴ９において、回路Ａは、再び通信要求信号ＲｅｑＡに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ１を通信データＤａｔａＡに出力する。回路Ｂは、再び通信応答信号ＡｃｋＢに値１を出力することで、通信を受信できる状態にあることを回路Ａに通知する。
【００１９】
次に、タイミングＴ１２において、回路Ａは、タイミングＴ９で回路Ｂが通信応答信号ＡｃｋＢに出力した値１を信号ＡｃｋＡから入力し、通信要求およびそのデータＤ１が受理されたと判断する。その結果、通信要求信号ＲｅｑＡに値０を出力し、回路Ｂにさらなる通信要求がないことを通知する。回路Ｂは、タイミングＴ９で回路Ａが通信要求信号ＲｅｑＡを通じて出力した通信要求を受理するとともに、通信データＤ１を受信する。その結果、通信応答信号ＡｃｋＢに値０を出力し、これ以上通信を受信できる状態ではないことを回路Ａに通知する。
【００２０】
以上に説明した通信が正しく動作するためには、隣接する通信タイミングでセットアップタイム制約やホールドタイム制約を満足する必要がある。具体的には、下記の４つのタイミング制約を満足するようにタイミング設計する必要がある。
【００２１】
クロックＡからクロックＢへのホールドタイム制約として、回路Ａがある通信タイミングで出力した信号を、回路Ｂはその通信タイミングで必ず入力しない。例えば、回路ＡがタイミングＴ３で出力した信号を、回路ＢはタイミングＴ３で必ず入力しない（図１１のＨ１）。
【００２２】
さらに、クロックＡからクロックＢへのセットアップ制約として、回路Ａがある通信タイミングで出力した信号を、回路Ｂは次の通信タイミングで必ず入力する。例えば、回路ＡがタイミングＴ３で出力した信号を、回路ＢはタイミングＴ６で必ず入力する（図１１のＳ１）。
【００２３】
さらに、クロックＢからクロックＡへのホールドタイム制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａはその通信タイミングで必ず入力しない。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ６で必ず入力しない（図１１のＨ２）。
【００２４】
さらに、クロックＢからクロックＡへのセットアップ制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａは次の通信タイミングで必ず入力する。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ９で必ず入力する（図１１のＳ２）。
【００２５】
以上説明したように、送信側の回路Ａと受信側の回路Ｂが、通信要求信号と通信応答信号を互いにやりとりを行う（ハンドシェイクを行う）ことで同期的な通信を行うハンドシェイク型の同期通信方式は、オンチップ・バスなどに広く使われている。
【００２６】
次に、従来の非同期方式について説明する。通信する２つの回路の各クロックの周波数比が１対整数や、整数対１ではない、あるいは２つのクロックの位相が等しくない回路間で行われる通信では、非同期方式が使用されている。非同期方式を用いて通信すると、信号を出力するタイミングと信号を入力するタイミングとが非同期関係になり、信号が"０"と"１"との間をある時間揺らぐ状態になる可能性がある。この現象はｍｅｔａｓｔａｂｉｌｉｔｙ（メタスタビリティ）とよばれ、回路の誤動作の原因となる。メタスタビリティによる誤動作を防止する為、非同期方式では通常、同期化回路が用いられる（例えば、特許文献１）。
【００２７】
特許文献１に記載の技術は、第１のクロック信号に同期して所定の動作を行う第１の回路と、第２のクロック信号に同期して所定の動作を行う第２の回路との間に同期化回路を設けている。そして、この同期化回路は第１の回路の出力データを第１のクロック信号に同期してラッチし、ラッチした信号を第２のクロック信号に同期して出力している。
【００２８】
また、上記以外にもメタスタビリティによる誤動作を防止する技術が提案されている（例えば、特許文献２）。特許文献２に記載の技術は、データ入力信号とクロック入力信号の変化を検知し、セットアップ若しくはホールドタイムを満足しない場合にフリップフロップのデータ入力の信号を変更しないように制御して、メタスタビリティによる誤動作を防止している。
【００２９】
【特許文献１】特開２００３‐２７３８４７号公報
【特許文献２】特開平６‐４５８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００３０】
従来の同期方式は、互いに通信する各機能ブロックのクロック周波数比が整数比、すなわち１対整数や整数対１に限定されるという問題がある。この制限は通信する機能ブロックの数が増加するにつれて益々深刻になる。
【００３１】
さらに近年、消費電力の低減の為に、各機能ブロック毎に周波数や電源電圧を動作時に動的に変更する動的電圧周波数制御方式（Ｄｙｎａｍｉｃ Ｖｏｌｔａｇｅ ａｎｄ Ｆｒｅｑｕｅｎｃｙ Ｓｃａｌｉｎｇ：ＤＶＦＳ）が提案されている。各機能ブロックが設定できるクロック周波数が限定されていると、ＤＶＦＳの低電力化に対する効果が減少するという問題がある。
【００３２】
さらに従来の同期方式は、各機能ブロックのクロック間のクロックスキューが大きい場合に、タイミング設計が困難になるという問題がある。特に、ＤＶＦＳ技術などでクロック領域毎に動的に電圧を制御する場合、クロックスキューが大きくなるため、タイミング設計がより困難になる。
【００３３】
図１２および図１３を参照して、従来の同期方式におけるタイミング設計の問題を詳細に説明する。
【００３４】
図１０で示した従来の同期方式で通信する半導体装置において、クロックＡとクロックＢの分配遅延は、クロックツリー合成などによって、同等になるように設計することで、通信タイミングであるＴ０、Ｔ３、Ｔ６、Ｔ９、Ｔ１２において、クロックＡとクロックＢの位相（立ち上がりエッジ）が一致する。ところが、半導体デバイスの特性ばらつき、電源電圧、チップ温度の変動などにより、通常、分配遅延にずれが発生する。その結果、クロックＡとクロックＢの位相がずれるクロックスキューが発生する。
【００３５】
図１２は、クロックスキューによりクロックＡよりもクロックＢの位相がＴｓｋｅｗだけ遅れた場合の通信の動作を示すタイミングである。図１２において、例えば、クロックＡからクロックＢへのホールドタイム制約Ｈ１を満足するために、信号ＲｅｑＡおよびＤａｔａＡにホールドタイム補償バッファ１０５Ａおよび１０５Ｃをそれぞれ挿入して遅延を付加している。その結果、図１１で示した通信動作のタイミングと同様のタイミングが実現される。
【００３６】
ところで、半導体デバイスの特性ばらつき、電源電圧、チップ温度の変動などによって、ホールドタイム補償バッファの遅延自体にもばらつきが発生する。このため、ホールドタイム補償バッファの遅延が最も小さい場合を想定して、ホールドタイム制約Ｈ１を満足するだけの遅延を付加する必要がある。この遅延を図１２においてＴｈｏ（ｍｉｎ）として表記している。
【００３７】
図１３は、クロックスキューによりクロックＡよりもクロックＢの位相がＴｓｋｅｗだけ進んだ場合の動作タイミングである。図１３において、例えば、クロックＡからクロックＢへのセットアップタイム制約Ｓ１を満足する必要がある。このとき、信号ＲｅｑＡおよびＤａｔａＡに挿入されているホールドタイム補償バッファ１０５Ａおよび１０５Ｃの遅延のばらつきを考慮して、遅延がもっとも大きい場合を想定してセットアップタイム制約Ｓ１を満足する必要がある。この遅延を図１３においてＴｈｏ（ｍａｘ）として表記している。
【００３８】
ところが、図１３において明らかのように、セットアップタイム制約Ｓ１を満足するのは困難である。具体的には、ホールドタイム補償バッファ１０５Ａおよび１０５Ｃの遅延のために、回路ＡがタイミングＴ３で出力した信号を、回路ＢがタイミングＴ６で入力するのは困難である。これは、クロックＡとクロックＢ間のクロックスキューＴｓｋｅｗ、およびそれに対応して挿入されたホールドタイム補償バッファの遅延ばらつきＴｈｏ（ｍａｘ）-Ｔｈｏ（ｍｉｎ）が原因である。
【００３９】
同様に、クロックＢからクロックＡへのタイミング設計においても問題がある。例えば、図１３において、クロックＢからクロックＡへのホールドタイム制約Ｈ２を満足するために、信号ＡｃｋＢにホールドタイム補償バッファ１０５Ｂを挿入して遅延を付加している。その結果、図１１で示した通信動作のタイミングと同様のタイミングが実現される。
【００４０】
このとき、ホールドタイム補償バッファの遅延が最も小さい場合を想定して、ホールドタイム制約Ｈ２を満足するだけの遅延を付加する必要がある。この遅延を図１３においてＴｈｏ（ｍｉｎ）として表記している。
【００４１】
同時に、図１２において、クロックＢからクロックＡへのセットアップタイム制約Ｓ２を満足する必要がある。このとき、信号ＡｃｋＢに挿入されているホールドタイム補償バッファ１０５Ｂの遅延のばらつきを考慮して、遅延がもっとも大きい場合を想定してセットアップタイム制約Ｓ２を満足する必要がある。この遅延を図１２においてＴｈｏ（ｍａｘ）として表記している。
【００４２】
ところが、図１２において明らかのように、セットアップタイム制約Ｓ２を満足するのは困難である。具体的には、ホールドタイム補償バッファ１０５Ｂの遅延のために、回路ＢがタイミングＴ６で出力した信号を、回路ＡがタイミングＴ９で入力するのは困難である。これは、クロックＡとクロックＢ間のクロックスキューＴｓｋｅｗ、およびそれに対応して挿入されたホールドタイム補償バッファの遅延ばらつきＴｈｏ（ｍａｘ）-Ｔｈｏ（ｍｉｎ）が原因である。
【００４３】
以上説明したように、従来の同期方式には、クロック間のクロックスキューが大きくなると、タイミング設計が困難になるという問題がある。
【００４４】
さらに、従来の同期方式では、クロックスキューが大きくなると、ホールドタイム制約を満足するために、より大量のホールドタイム補償バッファの挿入が必要になる。その結果、レイアウト面積や電力が増大するという問題がある。
【００４５】
一方、上述した特許文献１のような非同期方式には主に次に示す問題がある。
【００４６】
第１に、非決定性動作の問題がある。チップデバイスの特性ばらつきや動作環境等に依存して、クロックサイクルのレベルでの動作が非決定的（ｎｏｎｄｅｔｅｒｍｉｎｉｓｔｉｃ）になる。その結果、ハードウェア/ソフトウェアの検証・デバックやテストにかかるコストが増大してしまう。
【００４７】
第２に、通信レイテンシが大きいという問題がある。同期化に要する遅延の為に通信レイテンシが増加し、通信スループットが低下する。その結果、性能の低下や、それを補償するために面積・電力が増加してしまう。
【００４８】
第３に、メタスタビリティによる誤動作の可能性があり、この結果、信頼性が低下するという問題がある。これは、クロック周波数の増加や低電圧化や同期化を行う箇所の増加にともない益々悪化する。信頼性を向上するには、メタスタビリティを解消する為の時間を十分に確保する必要があるが、その結果、同期化に要する遅延が益々増大し、通信レイテンシが増加する。
【００４９】
又、上述した特許文献２の技術は、動作時にデータ入力信号とクロック入力信号の変化を検知し、セットアップ若しくはホールドタイムを満足しているか否かを判断するが、チップデバイスの特性ばらつきや動作環境等に依存してその判断基準が変動するため、クロックサイクルのレベルでの動作が非決定的になるという問題がある。
【００５０】
そこで、本発明の目的は、上記問題点を鑑みて発明されたものであって、各機能ブロックが設定できるクロック周波数の自由度が大きく、クロック間のクロックスキューが大きい場合でも、動作が決定的（ｎｏｎｄｅｔｅｒｍｉｎｉｓｔｉｃ）で、通信レイテンシが小さく、信頼性の高い、機能ブロック間の通信が可能な半導体装置及び通信方法を提供することにある。
【課題を解決するための手段】
【００５１】
本発明の第１の半導体装置は、第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路と、前記第１の回路と前記第２の回路との間の通信動作において、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成する通信タイミング制御回路とを備え、前記通信タイミング制御回路は、第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報によって決定される前記送信タイミング信号及び前記受信タイミング信号を生成するものである。
【００５２】
本発明の第２の半導体装置は、第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路と、前記第１の回路と前記第２の回路との間の通信動作において、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成する通信タイミング制御回路とを備え、前記通信タイミング制御回路は、前記第２の回路が行う一回の受信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成するものである。
【００５３】
本発明の第１の通信方法は、第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路との間で通信を行う通信方法であって、第１のクロック信号と第２のクロック信号の周波数の比を設定する周波数比情報と、第１のクロック信号と第２のクロック信号の位相関係を示す位相関係情報に基づいて、前記第１の回路の送信のタイミングを制御する送信タイミング信号と、前記第１の回路の受信のタイミングを制御する受信タイミング信号とを生成するステップと、前記第１の回路が、生成された前記送信タイミング信号及び前記受信タイミング信号が指定するタイミングによって、前記第２の回路に対して通信を実行するステップを備えたものである。
【００５４】
本発明の第２の通信方法は、第２のクロック信号の周波数のＭ／Ｎ倍（Ｎは正整数、ＭはＮより大きい正整数）である第１のクロック信号に基づいて処理を行う第１の回路と、前記第２のクロック信号に基づいて処理を行う第２の回路との間で通信を行う通信方法であって、前記第２の回路が行う一回の受信に対して、それよりも遅いタイミングで前記第１の回路が送信を一回行うように前記送信タイミング信号を生成し、前記第２の回路が行う一回の送信に対して、それよりも早いタイミングで前記第１の回路が受信を一回行うように前記受信タイミング信号を生成するステップと、前記第１の回路が、生成された前記送信タイミング信号及び前記受信タイミング信号が指定するタイミングによって、前記第２の回路に対して通信を実行するステップを備えたものである。
【発明の効果】
【００５５】
本発明により、各機能ブロックが設定できるクロック周波数の自由度が大きく、クロック間のクロックスキューが大きい場合でも、動作が決定的（ｎｏｎｄｅｔｅｒｍｉｎｉｓｔｉｃ）で、通信レイテンシが小さく、信頼性の高い、機能ブロック間の通信が可能な半導体集積回路及び通信方法を提供することができる。
【発明を実施するための最良の形態】
【００５６】
発明の実施の形態１．
まず、図１を参照して、本発明の実施の形態１にかかる半導体装置について説明する。図１は、本実施形態におけるクロックＡで動作する回路Ａと、クロックＢで動作する回路Ｂが、ハンドシェイク型の同期通信方式を用いて、回路Ａから回路Ｂの方向でデータを通信する半導体装置の例である。図１０に示した従来技術による半導体装置における、カウンタ回路１００を本発明による通信タイミング制御回路５０に置き換え、さらに、ホールドタイム補償バッファ１０５Ａ、１０５Ｂ、１０５Ｃを取り除いたものに相当する。
【００５７】
図１０に示した従来技術による半導体装置の例では、通信する２つの回路の各クロックの周波数比が、1対整数や、整数対１に限定されていたが、本実施形態では、任意の整数比、例えば、３：２、２：５など、Ｍ対Ｎ（Ｍ、Ｎは整数）であってもよく、その場合でも、同期的な通信を可能とする。
【００５８】
本実施の形態１において、クロックＡの周波数はクロックＢの１以上の任意の有理数倍、すなわちＭ／Ｎ倍（Ｍ、Ｎは正の整数かつＭ≧Ｎ）とする。この場合、クロックＡとクロックＢの周波数比はＭ：Ｎになる。クロックＡとクロックＢの分配遅延は、クロックツリー合成などにより、同等になるように設計される。また、クロックＡとクロックＢ間は、通常の同期回路と同様に、隣接する通信タイミング間でセットアップやホールドタイム制約を満足するようにタイミング設計される。
【００５９】
通信タイミング制御回路５０は、クロックＡとクロックＢの周波数の比を示す周波数比情報１１、およびクロックＡとクロックＢの位相関係を示す位相関係信号１２を参照して、回路Ａが送信するタイミングを回路Ｂの各受信タイミングに対して一つ、かつ回路Ｂの各受信タイミングよりも遅いタイミングから選択し、そのタイミングを示す送信タイミング信号１３を生成する。
【００６０】
同様に、通信タイミング制御回路５０は、クロックＡとクロックＢの周波数の比を示す周波数比情報１１、およびクロックＡとクロックＢの位相関係を示す位相関係信号１２を参照して、回路Ａが受信するタイミングを回路Ｂの各送信タイミングに対して一つ、かつ回路Ｂの各送信タイミングよりも早いタイミングから選択し、そのタイミングを示す受信タイミング信号１４を生成する。
【００６１】
回路Ａは、送信タイミング信号１３を入力して、送信タイミング信号１３が指示するタイミングでのみ送信を行う。また、回路Ａは、受信タイミング信号１４を入力して、受信タイミング信号１４が指示するタイミングでのみ受信を行う。一方、回路ＢはクロックＢの毎サイクルおいて送受信動作を行うので、回路Ａと回路Ｂの通信速度が一致し、同期的な通信が実現される。
【００６２】
回路Ａと回路Ｂは、通信手段である信号Ｒｅｑ、Ａｃｋ及びＤａｔａを通じて、回路Ａから回路Ｂの方向でデータを送信する。信号Ｒｅｑは、通信要求信号であり、回路Ａから回路Ｂへの通信要求がある場合に、回路ＡがクロックＡのタイミングで出力し、回路ＢがクロックＢのタイミングで入力する。信号Ａｃｋは、通信応答信号である。回路Ｂが受信可能な状態にあるか、回路Ａからの通信データを正常に受理した場合に、回路ＢがクロックＢのタイミングで信号Ａｃｋを出力し、回路ＡがクロックＡのタイミングで入力する。信号Ｄａｔａは、回路Ａから回路Ｂへの通信データを送る通信データ信号である。
【００６３】
図２は、図１１と同様に、クロックＡの周波数がクロックＢの周波数の３倍であり、回路Ａから回路Ｂへデータを送信する場合の動作を示すタイミング図である。クロックＡ、送信タイミング信号１３、受信タイミング信号１４、通信要求信号Ｒｅｑ、通信データＤａｔａ、クロックＢ、通信応答信号Ａｃｋを図示している。
【００６４】
クロックＡの周波数はクロックＢの周波数の３倍であり、クロックＡとクロックＢの分配遅延は同等であるので、クロックＡの３サイクルに１回、具体的には、タイミングＴ０、Ｔ３、Ｔ６、Ｔ９、Ｔ１２において、クロックＡとクロックＢの位相（立ち上がりエッジ）が一致している。
【００６５】
送信タイミング信号１３は、回路Ａが送信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ１、Ｔ４、Ｔ７、Ｔ１０において値１、それ以外で値０になる。これらの送信タイミングは、回路Ｂの各受信タイミングであるＴ０、Ｔ３、Ｔ６、Ｔ９のそれぞれに対応して１回、かつそれよりも１サイクル遅いタイミングから選択されている。
【００６６】
一方、受信タイミング信号１４は、回路Ａが受信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ２、Ｔ５、Ｔ８、Ｔ１１において値１、それ以外で値０になる。これらの受信タイミングは、回路Ｂの各送信タイミングであるＴ３、Ｔ６、Ｔ９、Ｔ１２のそれぞれに対応して１回、かつそれよりも１サイクル早いタイミングから選択されている。
【００６７】
すなわち、従来の同期方式では、回路Ａと回路Ｂは、クロックの一致する同じタイミングで送信および受信を行っていたのに対して、本実施の形態１では、例えば、回路Ｂの送受信のタイミングである通信タイミングＴ３に対して、回路Ａの送信タイミングは１サイクル遅いＴ４が、受信タイミングは１サイクル早いＴ２が選択されている。図２において、これら回路Ａの送受信のタイミングを破線で囲んで示している。
【００６８】
同様に、回路Ｂの送受信のタイミングである通信タイミングＴ６に対して、回路Ａの送信タイミングは１サイクル遅いＴ７が、受信タイミングは１サイクル早いＴ５が選択されている。
【００６９】
同様に、回路Ｂの送受信のタイミングである通信タイミングＴ９に対して、回路Ａの送信タイミングは１サイクル遅いＴ１０が、受信タイミングは１サイクル早いＴ８が選択されている。
【００７０】
回路Ａが内蔵するフリップフロップＡ１、Ａ３は、送信タイミング信号１３をイネーブル入力（ＥＮ）に入力することで、送信タイミング信号１３が値１となるタイミングのみで動作する。従って、回路Ａは、この送信を行うタイミングで通信要求信号Ｒｅｑ及び通信データＤａｔａを出力する。
【００７１】
回路Ａが内蔵するフリップフロップＡ２は、受信タイミング信号１４をイネーブル入力（ＥＮ）に入力することで、受信タイミング信号１４が値１となるタイミングのみで動作する。従って、回路Ａは、この受信を行うタイミングで通信応答信号Ａｃｋを入力する。
【００７２】
送信タイミング信号１３により選択される回路Ａの送信タイミングは、回路Ｂの受信タイミングに対して一つ、かつ回路Ｂの各受信タイミングよりも遅いタイミングから選択されるものならばいずれでもよい。例えば、回路Ｂの受信タイミングＴ３に対応するＴ４の代わりに、Ｔ５を選択しても良い。同様に、回路Ｂの受信タイミングＴ６に対応するＴ７の代わりに、Ｔ８を選択しても良い。
【００７３】
また、受信タイミング信号１４により選択される回路Ａの受信タイミングは、回路Ｂの各送信タイミングに対して一つ、かつ回路Ｂの各送信タイミングよりも早いタイミングから選択されるものならばいずれでもよい。例えば、回路Ｂの送信タイミングＴ３に対応するＴ２の代わりに、Ｔ１を選択しても良い。同様に、回路Ｂの受信タイミングＴ６に対応するＴ５の代わりに、Ｔ４を選択しても良い。
【００７４】
いずれにしても、通常の同期回路と同様に、クロックＡとクロックＢ間のセットアップやホールドタイム制約を満足するようにタイミング設計を行う必要があるので、タイミング設計が容易になる送信タイミングおよび受信タイミングを選択しても良い。
【００７５】
次に、具体的な通信動作を、図２を参照して説明する。まず、回路Ｂの通信タイミングであるＴ３では、回路Ｂは、通信応答信号Ａｃｋに値１を出力することで、通信を受信できる状態にあることを回路Ａに通知する。
【００７６】
次に、回路Ａの送信タイミングにあるＴ４で、回路Ａは、通信要求信号Ｒｅｑに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ０を通信データＤａｔａに出力する。
【００７７】
次に、回路Ａの受信タイミングにあるＴ５で、回路Ａは、タイミングＴ３で回路Ｂが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ０が受理されたと判断する。その結果、回路Ａの次の送信タイミングにあるＴ７で、回路Ａは、通信要求信号Ｒｅｑに値０を出力することで、回路Ｂにさらなる通信要求がないことを通知する。
【００７８】
次に、回路Ｂの通信タイミングであるＴ６で、回路Ｂは、タイミングＴ４で回路Ａが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ０を受信する。その結果、これ以上通信を受信できる状態ではないことを回路Ａに通知するため、通信応答信号Ａｃｋに値０を出力する。
【００７９】
次に、回路Ａの受信タイミングにあるＴ８で、回路Ａは、タイミングＴ６で回路Ｂが通信応答信号Ａｃｋに出力した値０を入力する。
【００８０】
次に、回路Ｂの通信タイミングであるＴ９で、回路Ｂは、再び通信を受信できる状態になり、通信応答信号Ａｃｋに値１を出力する。
【００８１】
次に、回路Ａの送信タイミングにあるＴ１０で、回路Ａは、通信要求信号Ｒｅｑに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ１を通信データＤａｔａに出力する。
【００８２】
次に、回路Ａの受信タイミングにあるＴ１１で、回路Ａは、タイミングＴ９で回路Ｂが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ１が受理されたと判断する。
【００８３】
次に、回路Ｂの通信タイミングであるＴ１２で、回路Ｂは、タイミングＴ１０で回路Ａが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ１を受信する。その結果、これ以上通信を受信できる状態ではないことを回路Ａに通知するため、通信応答信号Ａｃｋに値０を出力する。
【００８４】
以上説明したように、本実施の形態１においても、ハンドシェイク型の同期通信方式を用いて、回路Ａから回路Ｂの方向でデータを通信することができる。
【００８５】
以上に説明した通信が正しく動作するためには、隣接する通信タイミングでセットアップタイム制約やホールドタイム制約を満足する必要がある。具体的には、下記の４つのタイミング制約を満足するようにタイミング設計する必要がある。
【００８６】
クロックＡからクロックＢへのホールドタイム制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂはそれより以前の通信タイミングで必ず入力しない。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ３で必ず入力しない（図２のＨ１）。
【００８７】
さらに、クロックＡからクロックＢへのセットアップ制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂは次の通信タイミングで必ず入力する。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ６で必ず入力する（図２のＳ１）。
【００８８】
さらに、クロックＢからクロックＡへのホールドタイム制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａはそれより以前の受信通信タイミングで必ず入力しない。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ５で必ず入力しない（図２のＨ２）。
【００８９】
さらに、クロックＢからクロックＡへのセットアップ制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａは次の受信タイミングで必ず入力する。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ８で必ず入力する（図２のＳ２）。
【００９０】
次に、クロックスキューがある場合の本実施の形態１の動作について説明する。図３は、クロックスキューによりクロックＡよりもクロックＢの位相がＴｓｋｅｗだけ遅れた場合の通信の動作を示すタイミングである。
【００９１】
図１２で示した従来の同期方式の場合と異なり、本実施の形態１では、回路Ａの送信タイミングは、回路Ｂのそれに対応する受信タイミングより１サイクル遅いタイミングから選択されているので、ホールドタイム補償バッファを挿入しなくても、クロックＡからクロックＢへのホールドタイム制約を満足することができる。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ３で必ず入力しない（図３のＨ１）。さらに、ホールドタイム補償バッファを挿入していないので、クロックＢからクロックＡへのセットアップ制約を容易に満足することができる。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ８で必ず入力する（図３のＳ２）。
【００９２】
図４は、クロックスキューによりクロックＡよりもクロックＢの位相がＴｓｋｅｗだけ進んだ場合の動作タイミングである。
【００９３】
図１３で示した従来の同期方式の場合と異なり、本実施の形態１では、回路Ａの受信タイミングは、回路Ｂのそれに対応する送信タイミングより１サイクル早いタイミングから選択されているので、ホールドタイム補償バッファを挿入しなくても、クロックＢからクロックＡへのホールドタイム制約を満足することができる。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ５で必ず入力しない（図４のＨ２）。さらに、ホールドタイム補償バッファを挿入していないので、クロックＡからクロックＢへのセットアップ制約を容易に満足することができる。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ６で必ず入力する（図４のＳ１）。
【００９４】
以上説明したように、本実施の形態１によれば、回路Ｂの各通信タイミングに対して、回路Ａの送信タイミングは１サイクル遅く、受信タイミングは１サイクル早いタイミングから選択されているので、ホールドタイム制約を満足するためにホールドタイム補償バッファを挿入する必要がない。
【００９５】
従って、ホールドタイム補償バッファの遅延ばらつきに影響されず、タイミング設計が容易になるという効果がある。さらに、ホールドタイム補償バッファの挿入により、レイアウト面積や電力が増大しないという効果がある。
【００９６】
より大きなクロックスキューＴｓｋｅｗがある場合、回路Ｂの各通信タイミングに対して、回路Ａの送信タイミングをより遅いタイミングから選択し、かつ受信タイミングをより早いタイミングから選択することで、ホールドタイム補償バッファの挿入を不要とすることができる。
【００９７】
あるいは、より大きなクロックスキューＴｓｋｅｗがある場合、ホールドタイム制約を満足するのに必要な分だけホールドタイム補償バッファを挿入してもよい。この場合でも、従来の同期方式と比較して、必要なホールドタイム補償バッファの量は少なくてよいので、タイミング設計が容易になるという効果がある。さらに、レイアウト面積や電力の増加が小さいという効果がある。
【００９８】
次に図５を参照して、クロックＡの周波数がクロックＢの周波数の５／２倍である場合の、本実施の形態１の動作を説明する。
【００９９】
図５は、クロックＡの周波数がクロックＢの周波数の５／２倍であり、従ってクロックＡとクロックＢの周波数比が５：２である場合の、回路Ａから回路Ｂへデータを送信する場合の動作を示すタイミング図である。クロックＡ、送信タイミング信号１３および受信タイミング信号１４、通信要求信号Ｒｅｑ、通信データＤａｔａ、クロックＢ、通信応答信号Ａｃｋを図示している。
【０１００】
クロックＡとクロックＢの周波数はＭ：Ｎの整数比であり、クロックＡとクロックＢの分配遅延は同等であるので、ある一定の周期でクロックＡとクロックＢの立ち上がりが一致するという性質がある。すなわち、クロックＡは、Ｍサイクル毎にクロックＢに対する位相関係が一巡（立ち上がりが一致）し、クロックＢはＮサイクル毎にクロックＡに対する位相関係が一巡（立ち上がりが一致）する。
【０１０１】
図５では、クロックＡとクロックＢの周波数比は５：２であるので、クロックＡは５サイクルでクロックＢとの位相関係が一巡し、クロックＢは２サイクルでクロックＡとの位相関係が一巡する。クロックＡにおいて、クロックＢと立ち上がりが一致するタイミングをＴ０、Ｔ０'、Ｔ０''、・・・として、クロックＢとの位相関係が一巡する５サイクルをそれぞれＴ０〜Ｔ４、Ｔ０'〜Ｔ４'、・・・で示している。同様に、クロックＢにおいて、クロックＡと立ち上がりが一致するタイミングをＲ０、Ｒ０'、Ｒ０''、・・・として、クロックＡとの位相関係が一巡する２サイクルをそれぞれＲ０〜Ｒ１、Ｒ０'〜Ｒ１'、・・・で示している。
【０１０２】
送信タイミング信号１３は、回路Ａが送信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ１、Ｔ３、Ｔ１'、Ｔ３'において値１、それ以外で値０になる。これらの送信タイミングは、回路Ｂの各受信タイミングであるＲ０、Ｒ１、Ｒ０'、Ｒ１'のそれぞれに対応して１回、かつそれよりも遅いタイミングから選択されている。
【０１０３】
一方、受信タイミング信号１４は、回路Ａが受信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ２、Ｔ４、Ｔ２'、Ｔ４'において値１、それ以外で値０になる。これらの受信タイミングは、回路Ｂの各送信タイミングであるＲ０、Ｒ１、Ｒ０'、Ｒ１'のそれぞれに対応して１回、かつそれよりも早いタイミングから選択されている。
【０１０４】
すなわち、従来の同期方式では、回路Ａと回路Ｂは、クロックの一致する同じタイミングで送信および受信を行っていたのに対して、本実施形態では、例えば、回路Ｂの送受信のタイミングである通信タイミングＲ１に対して、回路Ａの送信タイミングはそれよりも遅いＴ３が、受信タイミングはそれよりも早いＴ２が選択されている。図５において、これら回路Ａの送受信のタイミングを破線で囲んで示している。
【０１０５】
同様に、回路Ｂの送受信のタイミングである通信タイミングＲ０'に対して、回路Ａの送信タイミングはそれよりも遅いＴ１'が、受信タイミングはそれよりも早いＴ４が選択されている。
【０１０６】
同様に、回路Ｂの送受信のタイミングである通信タイミングＲ１'に対して、回路Ａの送信タイミングはそれよりも遅いＴ３'が、受信タイミングはそれよりも早いＴ２'が選択されている。
【０１０７】
次に、具体的な通信動作を、図５を参照して説明する。まず、回路Ｂの通信タイミングであるＲ０では、回路Ｂは、通信応答信号Ａｃｋに値１を出力することで、通信を受信できる状態にあることを回路Ａに通知する。
【０１０８】
次に、回路Ａの送信タイミングにあるＴ１で、回路Ａは、通信要求信号Ｒｅｑに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ０を通信データＤａｔａに出力する。
【０１０９】
次に、回路Ａの受信タイミングにあるＴ２で、回路Ａは、タイミングＲ０で回路Ｂが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ０が受理されたと判断する。その結果、回路Ａの次の送信タイミングにあるＴ３で、回路Ａは、通信要求信号Ｒｅｑに値０を出力することで、回路Ｂにさらなる通信要求がないことを通知する。
【０１１０】
次に、回路Ｂの通信タイミングであるＲ１で、回路Ｂは、タイミングＴ１で回路Ａが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ０を受信する。その結果、これ以上通信を受信できる状態ではないことを回路Ａに通知するため、通信応答信号Ａｃｋに値０を出力する。
【０１１１】
次に、回路Ａの受信タイミングにあるＴ４で、回路Ａは、タイミングＲ１で回路Ｂが通信応答信号Ａｃｋに出力した値０を入力する。
【０１１２】
次に、回路Ｂの通信タイミングであるＲ０'で、回路Ｂは、再び通信を受信できる状態になり、通信応答信号Ａｃｋに値１を出力する。
【０１１３】
次に、回路Ａの送信タイミングにあるＴ１'で、回路Ａは、通信要求信号Ｒｅｑに値１を出力することで、回路Ｂに通信要求があることを通知するとともに、送信するデータＤ１を通信データＤａｔａに出力する。
【０１１４】
次に、回路Ａの受信タイミングにあるＴ２'で、回路Ａは、タイミングＲ０'で回路Ｂが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ１が受理されたと判断する。その結果、回路Ａの次の送信タイミングにあるＴ３'で、回路Ａは、通信要求信号Ｒｅｑに値０を出力することで、回路Ｂにさらなる通信要求がないことを通知する。
【０１１５】
次に、回路Ｂの通信タイミングであるＲ１'で、回路Ｂは、タイミングＴ１'で回路Ａが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ１を受信する。その結果、これ以上通信を受信できる状態ではないことを回路Ａに通知するため、通信応答信号Ａｃｋに値０を出力する。
【０１１６】
以上説明したように、本実施の形態１によれば、クロックＡとクロックＢの周波数比が任意の整数比であっても、ハンドシェイク型の同期通信方式を用いて、回路Ａから回路Ｂの方向でデータを通信することができる。
【０１１７】
以上に説明した通信が正しく動作するためには、図２で説明したクロックＡの周波数がクロックＢの周波数の３倍である場合と同様に、隣接する通信タイミングでセットアップタイム制約やホールドタイム制約を満足する必要がある。具体的には、下記の４つのタイミング制約を満足するようにタイミング設計する必要がある。
【０１１８】
クロックＡからクロックＢへのホールドタイム制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂはそれより以前の通信タイミングで必ず入力しない。例えば、回路ＡがタイミングＴ３で出力した信号を、回路ＢはタイミングＲ１で必ず入力しない（図５のＨ１）。
【０１１９】
さらに、クロックＡからクロックＢへのセットアップ制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂは次の通信タイミングで必ず入力する。例えば、回路ＡがタイミングＴ１で出力した信号を、回路ＢはタイミングＲ１で必ず入力する（図５のＳ１）。
【０１２０】
さらに、クロックＢからクロックＡへのホールドタイム制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａはそれより以前の受信通信タイミングで必ず入力しない。例えば、回路ＢがタイミングＲ１'で出力した信号を、回路ＡはタイミングＴ２'で必ず入力しない（図５のＨ２）。
【０１２１】
さらに、クロックＢからクロックＡへのセットアップ制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａは次の受信タイミングで必ず入力する。例えば、回路ＢがタイミングＲ１'で出力した信号を、回路ＡはタイミングＴ４'で必ず入力する（図５のＳ２）。
【０１２２】
図２で説明したクロックＡの周波数がクロックＢの周波数の３倍である場合と同様に、回路Ｂの各通信タイミングに対して、回路Ａの送信タイミングはそれより遅く、受信タイミングはそれより早いタイミングから選択されている。従って、ホールドタイム制約を満足するためにホールドタイム補償バッファを挿入する必要がない、あるいは挿入する量が少なくてよい。
【０１２３】
その結果、ホールドタイム補償バッファの遅延ばらつきに影響されず、タイミング設計が容易になるという効果がある。さらに、ホールドタイム補償バッファの挿入により、レイアウト面積や電力が増加しない、あるいは増加が小さいという効果がある。
【０１２４】
発明の実施の形態２．
次に、図６を参照して、本発明の実施の形態２にかかる半導体装置について説明する。
図６は、本実施形態におけるクロックＡで動作する回路Ａと、クロックＢで動作する回路Ｂが、ハンドシェイク型の同期通信方式を用いて、回路Ｂから回路Ａの方向でデータを通信する半導体装置の例である。図１に示した実施の形態１にかかる回路Ａから回路Ｂの方向でデータを通信する半導体装置と同一の構成要素には同一の符号を付してあり、以下では詳細な説明は省略する。
【０１２５】
回路Ａと回路Ｂは、信号Ｒｅｑ、Ａｃｋ及びＤａｔａを通じて、回路Ｂから回路Ａの方向でデータを送信する。信号Ｒｅｑは、通信要求信号であり、回路Ｂから回路Ａへの通信要求がある場合に、回路ＢがクロックＢのタイミングで出力し、回路ＡがクロックＡのタイミングで入力する。信号Ａｃｋは、通信応答信号である。回路Ａが受信可能な状態にあるか、回路Ｂからの通信データを正常に受理した場合に、回路ＡがクロックＡのタイミングで信号Ａｃｋを出力し、回路ＢはクロックＢのタイミングで入力する。信号Ｄａｔａは、回路Ｂから回路Ａへの通信データを送る通信データ信号である。
【０１２６】
図７は、クロックＡの周波数がクロックＢの周波数の３倍であり、回路Ｂから回路Ａへデータを送信する場合の動作を示すタイミング図である。クロックＡ、送信タイミング信号１３、受信タイミング信号１４、通信応答信号Ａｃｋ、クロックＢ、通信要求信号Ｒｅｑ、通信データＤａｔａを図示している。
【０１２７】
クロックＡの周波数はクロックＢの周波数の３倍であり、クロックＡとクロックＢの分配遅延は同等であるので、クロックＡの３サイクルに１回、具体的には、タイミングＴ０、Ｔ３、Ｔ６、Ｔ９、Ｔ１２において、クロックＡとクロックＢの位相（立ち上がりエッジ）が一致している。
【０１２８】
送信タイミング信号１３は、回路Ａが送信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ１、Ｔ４、Ｔ７、Ｔ１０において値１、それ以外で値０になる。これらの送信タイミングは、回路Ｂの各受信タイミングであるＴ０、Ｔ３、Ｔ６、Ｔ９のそれぞれに対応して１回、かつ１サイクル遅いタイミングから選択されている。
【０１２９】
一方、受信タイミング信号１４は、回路Ａが受信を行うタイミングで値１、それ以外で値０となる信号である。具体的には、タイミングＴ２、Ｔ５、Ｔ８、Ｔ１１において値１、それ以外で値０になる。これらの受信タイミングは、回路Ｂの各送信タイミングであるＴ３、Ｔ６、Ｔ９、Ｔ１２のそれぞれに対応して１回、かつ１サイクル早いタイミングから選択されている。
【０１３０】
すなわち、従来の同期方式では、回路Ａと回路Ｂは、クロックの一致する同じタイミングで送信および受信を行っていたのに対して、本実施の形態２では、例えば、回路Ｂの送受信のタイミングである通信タイミングＴ３に対して、回路Ａの送信タイミングは１サイクル遅いＴ４が、受信タイミングは１サイクル早いＴ２が選択されている。図7において、これら回路Ａの送受信のタイミングを破線で囲んで示している。
【０１３１】
同様に、回路Ｂの送受信のタイミングである通信タイミングＴ６に対して、回路Ａの送信タイミングは１サイクル遅いＴ７が、受信タイミングは１サイクル早いＴ５が選択されている。
【０１３２】
同様に、回路Ｂの送受信のタイミングである通信タイミングＴ９に対して、回路Ａの送信タイミングは１サイクル遅いＴ１０が、受信タイミングは１サイクル早いＴ８が選択されている。
【０１３３】
回路Ａが内蔵するフリップフロップＡ２は、送信タイミング信号１３をイネーブル入力（ＥＮ）に入力することで、送信タイミング信号１３が値１となるタイミングのみで動作する。従って、回路Ａは、この送信を行うタイミングで通信応答信号Ａｃｋを出力する。
【０１３４】
回路Ａが内蔵するフリップフロップＡ１、Ａ３は、受信タイミング信号１４をイネーブル入力（ＥＮ）に入力することで、受信タイミング信号１４が値１となるタイミングのみで動作する。従って、回路Ａは、この受信を行うタイミングで通信要求信号Ｒｅｑ及び通信データDataを入力する。
【０１３５】
次に、具体的な通信動作を、図７を参照して説明する。まず、回路Ｂの通信タイミングにあるＴ０で、回路Ｂは、通信要求信号Ｒｅｑに値１を出力することで、回路Ａに通信要求があることを通知するとともに、送信するデータＤ０を通信データＤａｔａに出力する。
【０１３６】
次に、回路Ａの送信タイミングであるＴ１では、回路Ａは、通信応答信号Ａｃｋに値１を出力することで、通信を受信できる状態にあることを回路Ｂに通知する。
【０１３７】
次に、回路Ａの受信タイミングであるＴ２で、回路Ａは、タイミングＴ０で回路Ｂが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ０を受信する。その結果、回路Ａの次の送信タイミングにあるＴ４で、これ以上通信を受信できる状態ではないことを回路Ｂに通知するため、通信応答信号Ａｃｋに値０を出力する。
【０１３８】
次に、回路Ｂの通信タイミングにあるＴ３で、回路Ｂは、タイミングＴ１で回路Ａが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ０が受理されたと判断する。その結果、回路Ｂは、通信要求信号Ｒｅｑに値０を出力することで、回路Ａにさらなる通信要求がないことを通知する。
【０１３９】
次に、回路Ｂの通信タイミングであるＴ６で、回路Ｂは、通信要求信号Ｒｅｑに値１を出力することで、回路Ａに通信要求があることを通知するとともに、送信するデータＤ１を通信データＤａｔａに出力する。
【０１４０】
次に、回路Ａの送信タイミングにあるＴ７で、回路Ａは、再び通信を受信できる状態になり、通信応答信号Ａｃｋに値１を出力する。
【０１４１】
次に、回路Ａの受信タイミングにあるＴ８で、回路Ａは、タイミングＴ６で回路Ｂが通信要求信号Ｒｅｑを通じて出力した通信要求を受理するとともに、通信データＤ１を受信する。その結果、回路Ａの次の送信タイミングにあるＴ１０で、これ以上通信を受信できる状態ではないことを回路Ｂに通知するため、通信応答信号Ａｃｋに値０を出力する。
【０１４２】
次に、回路Ｂの通信タイミングであるＴ９で、回路Ｂは、タイミングＴ７で回路Ａが通信応答信号Ａｃｋに出力した値１を入力し、通信要求およびそのデータＤ１が受理されたと判断する。その結果、回路Ｂは、通信要求信号Ｒｅｑに値０を出力することで、回路Ａにさらなる通信要求がないことを通知する。
【０１４３】
以上説明したように、本実施形態によれば、ハンドシェイク型の同期通信方式を用いて、回路Ａから回路Ｂの方向と同様に、回路Ｂから回路Ａの方向でデータを通信することができる。
【０１４４】
以上に説明した通信が正しく動作するためには、実施の形態１と同様に、隣接する通信タイミングでセットアップタイム制約やホールドタイム制約を満足する必要がある。具体的には、下記の４つのタイミング制約を満足するようにタイミング設計する必要がある。
【０１４５】
クロックＡからクロックＢへのホールドタイム制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂはそれより以前の通信タイミングで必ず入力しない。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ３で必ず入力しない（図７のＨ１）。
【０１４６】
さらに、クロックＡからクロックＢへのセットアップ制約として、回路Ａがある送信タイミングで出力した信号を、回路Ｂは次の通信タイミングで必ず入力する。例えば、回路ＡがタイミングＴ４で出力した信号を、回路ＢはタイミングＴ６で必ず入力する（図７のＳ１）。
【０１４７】
さらに、クロックＢからクロックＡへのホールドタイム制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａはそれより以前の受信通信タイミングで必ず入力しない。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ５で必ず入力しない（図７のＨ２）。
【０１４８】
さらに、クロックＢからクロックＡへのセットアップ制約として、回路Ｂがある通信タイミングで出力した信号を、回路Ａは次の受信タイミングで必ず入力する。例えば、回路ＢがタイミングＴ６で出力した信号を、回路ＡはタイミングＴ８で必ず入力する（図７のＳ２）。
【０１４９】
実施の形態１と同様に、本実施の形態２においても、回路Ｂの各通信タイミングに対して、回路Ａの送信タイミングは１サイクル遅く、受信タイミングは１サイクル早いタイミングから選択されている。従って、ホールドタイム制約を満足するためにホールドタイム補償バッファを挿入する必要がない、あるいは挿入する量が少なくてよい。
【０１５０】
その結果、ホールドタイム補償バッファの遅延ばらつきに影響されず、タイミング設計が容易になるという効果がある。さらに、ホールドタイム補償バッファの挿入により、レイアウト面積や電力が増加しない、あるいは増加が小さいという効果がある。
【０１５１】
通信タイミング制御回路に関する説明．
次に、本発明の実施形態１及び２において用いられる通信タイミング制御回路５０について図面を参照して説明する。
【０１５２】
クロックの周波数比が１対整数や整数対１の場合は、通信タイミングが周期的であるため、通信タイミング信号をカウンタ回路により容易に生成することができる。一方、周波数比が任意の整数比の場合は、その周波数比に応じて通信タイミングが複雑に変わるので、本実施形態の送信タイミング信号１３および受信タイミング信号１４をカウンタ回路で生成することは困難である。
【０１５３】
図８は、本発明の実施の形態における通信タイミング制御回路５０の構成例である。通信タイミング制御回路５０は、クロックＡのタイミングで動作し、周波数比情報１１、および位相関係信号１２を参照して、送信タイミング信号１３および受信タイミング信号１４をクロックＡのサイクル毎に生成する。上記周波数比情報１１は、クロックＡとクロックＢの周波数比Ｍ：ＮのＭの値を示す信号Ｍと、Ｎの値を示す信号Ｎから構成される。
【０１５４】
通信タイミング制御回路５０は、テーブル回路５１、カウンタ回路５２から構成される。カウンタ回路５２は、クロックＡのタイミングで動作し、周波数比情報１１を構成する信号Ｍを参照して、クロックＡとクロックＢの位相関係が一巡するサイクル数を繰り返してカウントし、その値をカウンタ値５５に出力する。
【０１５５】
テーブル回路５１は、複数のテーブルデータ５６から構成され、周波数比、およびクロックＡとクロックＢ間の相対的な位相関係ごとに、送信タイミング信号１３および受信タイミング信号１４の値をテーブル形式で保持する。本実施の形態では、周波数比は、信号Ｍおよび信号Ｎから構成される周波数比情報１１で与えられる。クロックＡとクロックＢ間の相対的な位相関係は、カウンタ値５５で与えられる。すなわち、テーブル回路５１は、入力する信号Ｍ、信号Ｎ、カウンタ値５５を参照して、送信タイミング信号１３および受信タイミング信号１４をクロックＡのサイクル毎に出力する。
【０１５６】
次に図９を参照して、本実施の形態における通信タイミング制御回路５０の動作について説明する。図９は、図５で示したクロックＡとクロックＢの周波数比が５：２である場合の、通信タイミング制御回路５０の動作を示すタイミング図である。クロックＡ、位相関係信号１２、カウンタ値５５、テーブルデータ５６が保持する値、送信タイミング信号１３および受信タイミング信号１４、クロックＢを図示している。
【０１５７】
位相関係信号１２は、クロックＡとクロックＢの立ち上がりが一致するタイミング（タイミングＴ０、Ｔ０'、Ｔ０''、・・・）で値１、それ以外で値０になる信号であり、クロックＡとクロックＢの位相関係が一巡するタイミングを与える。位相関係信号１２は、クロックＡとクロックＢを生成するクロック生成回路で容易に生成することができる。あるいは、位相比較回路によりクロックＡとクロックＢの位相を比較して生成しても良い。
【０１５８】
カウンタ回路５２は、位相関係信号１２の値が１となるタイミングで値０となり、その後、クロックＡとクロックＢの位相関係が一巡する５サイクル分を繰り返してカウントする。その値をカウンタ値５５として０〜４まで図示しており、タイミングＴ０〜Ｔ４、Ｔ０'〜Ｔ４'、・・・と対応している。すわなち、タイミングＴ０で値０、タイミングＴ１で値１、タイミングＴ４で値４となり、再びタイミングＴ０'で値０になる。すなわち、カウンタ回路５２は、クロックＡとクロックＢ間の相対的な位相関係を、カウンタ値５５として出力する。
【０１５９】
テーブルデータ５６は、そのサイクルが送信タイミングである場合は値１０、受信タイミングである場合は値０１、いずれでもない場合は値００を保持している。テーブル回路５１はその値を参照して、送信タイミング信号１３および受信タイミング信号１４として出力する。
【０１６０】
具体的には、カウンタ値５５が値０の場合に、テーブルデータ５６が保持している値００を参照して、テーブル回路５１は送信タイミング信号１３に値０、受信タイミング信号１４に値０を出力する。カウンタ値５５が値１および値３の場合に、テーブルデータ５６が保持している値１０を参照して、テーブル回路５１は送信タイミング信号１３に値１、受信タイミング信号１４に値０を出力する。カウンタ値５５が値２および値４の場合に、テーブルデータ５６が保持している値０１を参照して、テーブル回路５１は送信タイミング信号１３に値０、受信タイミング信号１４に値１を出力する。
【０１６１】
図９では、クロックＡとクロックＢの周波数比が５：２である場合の動作例を示したが、その他の場合であっても、周波数比、およびクロックＡとクロックＢ間の相対的な位相関係ごとに、テーブルデータ５６の値を適切に設定することで、周波数比が任意の整数比であっても、送信タイミング信号１３および受信タイミング信号１４を適切に生成することができる。
【０１６２】
具体的には、通信対象の回路（回路Ｂ）の各通信タイミングに対して、送信タイミング信号および受信タイミング信号を参照する回路（回路Ａ）の送信タイミングを一つ、かつ通信対象の回路の各受信タイミングよりも遅いタイミングから選択し、受信タイミングを一つ、かつ通信対象の回路の各送信タイミングよりも早いタイミングから選択するように、テーブルデータ５６の値を設定すればよい。
【０１６３】
また、図９の例では、周波数比情報１１を構成する信号Ｍ、および信号Ｎの値はそれぞれ一定であったが、テーブル回路５１がそれらの値に対応するテーブルデータ５６を保持する範囲内であれば、適宜動作中に変更することもできる。
【０１６４】
また、本実施例では、周波数比情報１１は、信号Ｍと信号Ｎから構成されるとしたが、クロックＡとクロックＢの周波数比を設定できるものであれば、別の形式であっても良い。
【図面の簡単な説明】
【０１６５】
【図１】本発明における半導体装置の構成図である。
【図２】本発明における半導体装置の通信動作の例を示すタイミング図である。
【図３】本発明における半導体装置の通信動作の例を示すタイミング図である。
【図４】本発明における半導体装置の通信動作の例を示すタイミング図である。
【図５】本発明における半導体装置の通信動作の例を示すタイミング図である。
【図６】本発明における半導体装置の構成図である。
【図７】本発明における半導体装置の通信動作の例を示すタイミング図である。
【図８】本発明における通信タイミング制御回路の構成図である。
【図９】本発明における通信タイミング制御回路の動作を示すタイミング図である。
【図１０】背景技術における半導体装置の構成図である。
【図１１】背景技術における半導体装置の通信動作の例を示すタイミング図である。
【図１２】背景技術における半導体装置の通信動作の例を示すタイミング図である。
【図１３】背景技術における半導体装置の通信動作の例を示すタイミング図である。
【符号の説明】
【０１６６】
１１  周波数比情報
１２  位相関係信号
１３  送信タイミング信号
１４  受信タイミング信号
５０  通信タイミング制御回路
５１  テーブル回路
５２  カウンタ回路
５５  カウンタ値
５６  テーブルデータ
１００  カウンタ回路
１０１  周波数比情報
１０２  通信タイミング信号
１０５Ａ、１０５Ｂ、１０５Ｃ  ホールドタイム補償バッファ
【図１】
2010074534.tif 000003
【図２】
2010074534.tif 000004
【図３】
2010074534.tif 000005
【図４】
2010074534.tif 000006
【図５】
2010074534.tif 000007
【図６】
2010074534.tif 000008
【図７】
2010074534.tif 000009
【図８】
2010074534.tif 000010
【図９】
2010074534.tif 000011
【図１０】
2010074534.tif 000012
【図１１】
2010074534.tif 000013
【図１２】
2010074534.tif 000014
【図１３】
2010074534.tif 000015