(57)【特許請求の範囲】
【請求項１】
第１のクロック信号に基づいて処理を行う複数の機能ブロックと接続され、当該機能ブロック間の通信を媒介する通信回路であって、
Ｎを２以上の正整数としたとき、前記機能ブロックが出力する通信データのデータ幅と同一のデータ幅の通信手段をＮ個備え、
前記通信手段は、少なくとも前記機能ブロックが出力する通信データを入力して記憶する入力データ記憶手段と、前記入力データ記憶手段が記憶したデータを転送するデータ転送手段と、前記データ転送手段が転送したデータを記憶する出力データ記憶手段と、を有し、
前記Ｎ個の通信手段のそれぞれは、前記第１のクロック信号の周波数の１／Ｎで規定され、かつ前記Ｎ個の通信手段のそれぞれに対応した互いに３６０／Ｎ°ずつ位相が異なるＮ本の第２のクロック信号に基づいて通信処理を行う、通信回路。
【請求項２】
前記通信回路は、前記Ｎ本の第２のクロック信号の互いの位相関係を示す位相信号を参照して、前記Ｎ個の通信手段が転送して出力するデータのいずれかひとつを、前記出力データ記憶手段が記憶した順に選択して出力する出力制御手段を含む、請求項１に記載の通信回路。
【請求項３】
前記通信回路は、前記Ｎ本の第２のクロック信号のいずれかのクロック信号の位相を検出して前記位相信号を生成する位相検出手段をさらに含む、請求項２に記載の通信回路。
【請求項４】
前記通信回路は、前記Ｎ本の第２のクロック信号を生成するクロック生成手段をさらに含み、前記クロック生成手段は、前記位相信号を参照して、前記Ｎ本の第２のクロック信号の位相関係を制御する、請求項２に記載の通信回路。
【請求項５】
前記通信回路は、前記Ｎ本の第２のクロック信号を生成すると共に、前記位相信号をも生成して出力するクロック生成手段をさらに含む、請求項２に記載の通信回路。
【請求項６】
第１の機能ブロックと第２の機能ブロックと接続され、前記第１の機能ブロックから前記第２の機能ブロックへ通信データを転送する通信回路を用いた通信方法であって、
前記通信回路は、Ｎを２以上の正整数としたとき、前記第１の機能ブロックが出力する前記通信データのデータ幅と同一のデータ幅を有する第１乃至第Ｎの通信手段を備え、
前記通信手段は、少なくとも前記機能ブロックが出力する通信データを入力して記憶する入力データ記憶手段と、前記入力データ記憶手段が記憶したデータを転送するデータ転送手段と、前記データ転送手段が転送したデータを記憶する出力データ記憶手段と、を有し、
前記第１の機能ブロックから第１のクロック信号に応じて出力された前記通信データを、前記第１のクロック信号の周波数の１／Ｎで規定され、かつ互いに３６０／Ｎ°ずつ位相が異なる第１乃至第Ｎの位相を有する第２のクロック信号に基づき前記第１乃至第Ｎの通信手段に入力し、
前記第１乃至第Ｎの位相を有する第２のクロック信号に基づき、前記第１乃至第Ｎの通信手段に入力された通信データを前記第２の機能ブロックへ出力する、
通信方法。
【請求項７】
前記第１乃至第Ｎの位相を有する第２のクロック信号に基づき、前記第１乃至第Ｎの通信手段に入力された通信データを前記第２の機能ブロックへ出力する際に、
前記第１乃至第Ｎの位相を有する第２のクロック信号のうち、前記通信データを入力した際の第２のクロック信号の位相と対応する位相を有する第２のクロック信号に基づき、前記第１乃至第Ｎの通信手段に入力された通信データを前記第２の機能ブロックへ出力する、請求項６に記載の通信方法。
【請求項８】
前記第１乃至第Ｎの位相を有する第２のクロック信号に基づき、前記第１乃至第Ｎの通信手段に入力された通信データを前記第２の機能ブロックへ出力する際に、
前記第１乃至第Ｎの位相を有する第２のクロック信号の互いの位相関係を示す位相信号を参照して、前記第１乃至第Ｎの通信手段に入力された通信データを当該通信手段に入力された順に前記第２の機能ブロックへ出力する、請求項６または７に記載の通信方法。
【請求項９】
前記第１乃至第Ｎの位相のうちのいずれかの位相を有する第２のクロック信号を検出して前記位相信号を生成する、請求項８に記載の通信方法。
【請求項１０】
前記第１乃至第Ｎの位相を有する第２のクロック信号を生成すると共に、前記位相信号を参照して前記第２のクロック信号の位相関係を制御する、請求項８に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能ブロックを複数有する半導体集積回路に関し、特に複数の機能ブロック間のデータ通信を実現する通信回路、および通信方法に関する。
【背景技術】
【０００２】
半導体プロセスの微細化技術が進展するに従い、半導体集積回路に集積される機能ブロック（コアともいう）の数も増加している。また、各機能ブロックの動作周波数もさらに高速化する傾向にある。しかしながら、このような半導体集積回路では、クロック信号の高速化やばらつきの増大などにより、各機能ブロックの動作周波数と同等の周波数で機能ブロック間の通信を行うことが難しくなってきている。その結果、各機能ブロックのデータ処理性能に比べて、機能ブロック間の通信性能が低下してきている。【０００３】
この問題に対して、機能ブロック間の通信回路（例えば、オンチップ・バス、オンチップ・インターコネクト、オンチップ・ネットワークなど）の動作周波数を高速化する技術として、パイプライン技術がある（特許文献１参照）。
図１２は、パイプライン技術による機能ブロック間通信回路の構成を示す図である。図１２において、通信回路１００は、機能ブロックＡが出力したデータを機能ブロックＢに転送する通信回路である。より詳細には、通信回路１００は、機能ブロックＡが信号１１３に出力したデータを機能ブロックＡの近傍で入力し、該データを機能ブロックＢの近傍まで転送した後、信号１１４に出力する。機能ブロックＢは、信号１１４に出力された該データを入力する。ここで、信号１１３および信号１１４は、複数ビットからなる同じデータ幅の信号である。【０００４】
機能ブロックＡ、機能ブロックＢおよび通信回路１００はすべて、同じ高速なクロック信号であるクロックＦで動作する。通信回路１００は、機能ブロックＡや機能ブロックＢと同じ動作周波数を実現するために、４段のパイプライン回路で構成されている。すなわち、通信回路１００において、データ転送を媒介する信号は、パイプライン・レジスタ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅにより、４つの部分信号１１２ａ、１１２ｂ、１１２ｃ、１１２ｄに分割されている。ここで、各部分信号１１２ａ、１１２ｂ、１１２ｃ、１１２ｄは、信号１１３および信号１１４と同じデータ幅の複数ビットからなる信号である。【０００５】
また、各部分信号１１２ａ、１１２ｂ、１１２ｃ、１１２ｄにはそれぞれ、各部分信号を駆動するための複数のバッファ回路１１１ａ、１１１ｂ、１１１ｃ、１１１ｄが挿入されている。図１２には図示していないが、バッファ回路に加えて、通信経路を切り替えるためのセレクタ回路やスイッチ回路等を適宜含んでもよい。【０００６】
次に、図１３を用いて通信回路１００の動作例を説明する。図１３は、機能ブロックＡから機能ブロックＢへのデータ転送のタイミングを示す説明図である。
図１３において、通信回路１００は、機能ブロックＡがタイミングＴ０において信号１１３に出力したデータＤ０を、タイミングＴ１で入力する。具体的には、タイミングＴ１において、パイプライン・レジスタ１１０ａが該データＤ０をラッチし、部分信号１１２ａに出力する。同様に、タイミングＴ２において、パイプライン・レジスタ１１０ｂが該データＤ０をラッチし、部分信号１１２ｂに出力する。以降同様にして、該データＤ０は、タイミングＴ３からＴ５にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄ、１１０ｅを介して、信号１１２ｃ、１１２ｄ、１１４に順次出力される。その結果、タイミングＴ５で、データＤ０は機能ブロックＢに到着する。【０００７】
同様に、通信回路１００は、機能ブロックＡがタイミングＴ１において信号１１３に出力したデータＤ１を、タイミングＴ２で入力する。具体的には、タイミングＴ２において、パイプライン・レジスタ１１０ａは該データＤ１をラッチし、部分信号１１２ａに出力する。同様に、タイミングＴ３において、パイプライン・レジスタ１１０ｂは該データＤ１をラッチし、部分信号１１２ｂに出力する。以降同様にして、該データＤ１は、タイミングＴ４からＴ６にかけて、パイプライン・レジスタ１１０ｃ、１１０ｄ、１１０ｅを介して、信号１１２ｃ、１１２ｄ、１１４に順次出力される。その結果、タイミングＴ６で、データＤ１は機能ブロックＢに到着する。【０００８】
以降も同様に、機能ブロックＡがタイミングＴ２〜Ｔ７で出力したデータＤ２〜Ｄ７は、タイミングＴ７〜Ｔ１２において機能ブロックＢに到着する。図１３の例では、機能ブロックＡが出力したデータが機能ブロックＢに到着するのに、クロックＦの５サイクル分の時間がかかる（例えば、データＤ０は機能ブロックＡがタイミングＴ０で出力し、タイミングＴ５で機能ブロックＢに到着する）。すなわち、機能ブロックＡから機能ブロックＢへのデータ転送のレイテンシは、クロックＦの５サイクルである。【０００９】
一方、通信回路１００は４段のパイプライン回路で構成されており、データ転送がパイプライン動作により実現されている。そのため、レイテンシが５サイクルであるにもかかわらず、クロックＦの毎サイクルにおいてデータ転送を行うことができる。すなわち、機能ブロックＡから機能ブロックＢへのデータ転送のスループットは、１（クロックＦの１サイクルあたり１データを転送することを示す）である。【００１０】
また、通信回路の通信性能を向上する別の手段として、通信回路のデータ幅を拡張する方法がある（特許文献２参照）。例えば、通信回路のデータ幅を機能ブロックのデータ幅のＮ倍（Ｎは正の整数）に拡張し、１／Ｎの周波数のクロックで動作させる方法である。このとき、１サイクルあたりＮ倍のデータを転送できるので、動作周波数が１／Ｎであってもスループットを低下させずに通信することができる。【００１１】
図１４は、データ幅を拡張する技術による機能ブロック間通信回路の構成を示す図である。図１４において、通信回路１５０は、機能ブロックＡが信号１６３に出力したデータを機能ブロックＡの近傍で入力し、該データを機能ブロックＢの近傍まで転送した後、信号１６４に出力する。機能ブロックＢは、信号１６４に出力された該データを入力する。【００１２】
通信回路１５０は、４本の信号１６２ａ、１６２ｂ、１６２ｃ、１６２ｄから構成されている。ここで、各信号１６２ａ、１６２ｂ、１６２ｃ、１６２ｄは、それぞれ信号１６３および信号１６４と同じデータ幅の複数ビットからなる信号である。従って、通信回路１５０全体では、信号１６３および信号１６４の４倍のデータ幅の信号を備える。各信号１６２ａ、１６２ｂ、１６２ｃ、１６２ｄには、各信号を駆動するための複数のバッファ回路１６１ａ、１６１ｂ、１６１ｃ、１６１ｄがそれぞれ挿入されている。【００１３】
更に、通信回路１５０は、入力データ記憶回路１６０ａおよび１６０ｂ、入力制御回路１６６、出力データ記憶回路１６５、出力制御回路１６７、を備える。機能ブロックＡ、および機能ブロックＢは高速なクロック信号であるクロックＦで動作する。また、通信回路１５０の入力データ記憶回路１６０ａ、１６０ｂおよび出力制御回路１６７もクロックＦで動作する。
一方、通信回路１５０の入力制御回路１６６および出力データ記憶回路１６５は、低速なクロック信号であるクロックＳで動作する。ここで、クロックＳの周波数は、クロックＦの周波数の１／４であるとする。【００１４】
次に、図１５を用いて通信回路１５０の動作例を説明する。図１５は、機能ブロックＡから機能ブロックＢへのデータ転送のタイミングを示す説明図である。図１５において、通信回路１５０は、機能ブロックＡがタイミングＴ０において信号１６３に出力したデータＤ０を、タイミングＴ１で入力する。具体的には、タイミングＴ１において、入力データ記憶回路１６０ａに該データＤ０を格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ１において信号１６３に出力したデータＤ１を、タイミングＴ２で入力データ記憶回路１６０ａに追加して格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ２において信号１６３に出力したデータＤ２を、タイミングＴ３で入力データ記憶回路１６０ａに追加して格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ３において信号１６３に出力したデータＤ３を、タイミングＴ４で入力データ記憶回路１６０ａに追加して格納する。その結果、入力データ記憶回路１６０ａには、タイミングＴ４において、データＤ０、Ｄ１、Ｄ２、Ｄ３が格納される。【００１５】
入力制御回路１６６は、入力データ記憶回路１６０ａに４つのデータＤ０、Ｄ１、Ｄ２、Ｄ３がすべて格納された後、次のクロックＳの立ち上がりのタイミングであるタイミングＴ６において、格納されているデータＤ０、Ｄ１、Ｄ２、Ｄ３を、それぞれ信号１６２ａ、１６２ｂ、１６２ｃ、１６２ｄに出力する。
出力データ記憶回路１６５は、その次のクロックＳの立ち上がりのタイミングであるタイミングＴ１０において、入力制御回路１６６がタイミングＴ６で出力したデータＤ０、Ｄ１、Ｄ２、Ｄ３を格納する。【００１６】
出力制御回路１６７は、出力データ記憶回路に格納されたデータＤ０、Ｄ１、Ｄ２、Ｄ３のうち、データＤ０をタイミングＴ１０において、信号１６４に出力する。その結果、タイミングＴ１０で、データＤ０は機能ブロックＢに到着する。同様に、出力制御回路１６７は、データＤ１をタイミングＴ１１で、データＤ２をタイミングＴ１２で、データＤ３をタイミングＴ１３で、信号１６４にそれぞれ出力する。その結果、データＤ１、Ｄ２、Ｄ３はそれぞれ、タイミングＴ１１、Ｔ１２、Ｔ１３において、機能ブロックＢに到着する。
以上、データＤ０、Ｄ１、Ｄ２、Ｄ３の通信動作について説明したが、データＤ４、Ｄ５、Ｄ６、Ｄ７についても同様である。【００１７】
図１５において、通信回路１５０は、機能ブロックＡがタイミングＴ４において信号１６３に出力したデータＤ４を、タイミングＴ５で入力する。具体的には、タイミングＴ５において、入力データ記憶回路１６０ｂに該データＤ４を格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ５において信号１６３に出力したデータＤ５を、タイミングＴ６で入力データ記憶回路１６０ｂに追加して格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ６において信号１６３に出力したデータＤ６を、タイミングＴ７で入力データ記憶回路１６０ｂに追加して格納する。同様に、通信回路１５０は、機能ブロックＡがタイミングＴ７において信号１６３に出力したデータＤ７を、タイミングＴ８で入力データ記憶回路１６０ｂに追加して格納する。
その結果、入力データ記憶回路１６０ｂには、タイミングＴ８において、データＤ４、Ｄ５、Ｄ６、Ｄ７が格納されている。【００１８】
入力制御回路１６６は、入力データ記憶回路１６０ｂに４つのデータＤ４、Ｄ５、Ｄ６、Ｄ７がすべて格納された後、次のクロックＳの立ち上がりのタイミングであるタイミングＴ１０において、格納されているデータＤ４、Ｄ５、Ｄ６、Ｄ７を、それぞれ信号１６２ａ、１６２ｂ、１６２ｃ、１６２ｄに出力する。
出力データ記憶回路１６５は、その次のクロックＳの立ち上がりのタイミングであるタイミングＴ１４において、入力制御回路１６６がタイミングＴ１０で出力したデータＤ４、Ｄ５、Ｄ６、Ｄ７を格納する。
出力制御回路１６７は、出力データ記憶回路に格納されたデータＤ４、Ｄ５、Ｄ６、Ｄ７のうち、データＤ４をタイミングＴ１４において、信号１６４に出力する。その結果、タイミングＴ１４で、データＤ４は機能ブロックＢに到着する。【００１９】
同様に、出力制御回路１６７は、データＤ５をタイミングＴ１５で、データＤ６をタイミングＴ１６で、データＤ７をタイミングＴ１７で、信号１６４にそれぞれ出力する。その結果、データＤ５、Ｄ６、Ｄ７はそれぞれ、タイミングＴ１５、Ｔ１６、Ｔ１７において、機能ブロックＢに到着する。
以上説明したように、通信回路１５０のデータ幅は、機能ブロックＡが出力する信号１６３のデータ幅の４倍であるので、１サイクルあたり４倍のデータを転送できる。言い換えると、クロックＳの毎サイクルにおいてデータを転送できるのであれば、クロックＳの周波数がクロックＦの周波数の１／４であっても、機能ブロックＡから機能ブロックＢへのデータ転送のスループットは１（クロックＦの１サイクルあたり１データを転送することを示す）を達成することができる。【００２０】
より一般化すると、図１４に示す通信回路では、通信回路のデータ幅を機能ブロックのデータ幅のＮ倍（Ｎは正の整数）にしたので、図１２に示す通信回路と比較してＮ倍の信号線を必要とする。一方、図１４に示す通信回路では、パイプライン・レジスタが不要であり、また周波数も低いため、電力が小さいという利点がある。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】特開２００７−２２００４６号公報
【特許文献２】特開２００５−２４２６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、図１２に示すパイプライン技術による通信回路１００において、動作周波数の高速化を達成するためには、パイプラインの段数を増加させる必要がある。その結果、多くのパイプライン・レジスタが必要となるため、回路面積や消費電力が大きくなるという問題がある。また、動作周波数が高いため、タイミング設計が難しいという問題がある。【００２３】
一方、図１４に示す通信回路１５０において、クロックＳの毎サイクルでデータを転送可能とするためには、一度に通信するデータ単位であるＮ倍のデータを一度バッファリングする必要がある。このため、図１４の通信回路１５０では、図１５のＰ１で図示したように、Ｎ倍のデータがすべて揃うまで転送ができないため、レイテンシがＮ−１サイクル分だけ伸びてしまうという問題がある。【００２４】
さらに、図１５のＰ２で図示したように、高速な機能ブロックのクロック（クロックＦ）と低速な通信クロック（クロックＳ）とで位相（立ち上がり遷移のタイミング）が合わなければ、位相が合うまで（Ｎ−１〜１サイクル）レイテンシが伸びてしまうという問題がある。そのため、クロックＳの毎サイクルにおいてデータを転送可能とするためには、入力データ記憶回路を２重化（ダブルバッファ化）する必要がある。図１４に示す通信回路１５０では、入力データ記憶回路１６０ａおよび１６０ｂとで２重化している。そのため、必要なハードウェア量が増えてしまうという問題がある【００２５】
よって、本発明の目的は必要なハードウェア量や消費電力が小さく、タイミング設計が容易で、かつ、通信レイテンシが小さい、機能ブロック間の通信回路及び通信方法を提供することである。
【課題を解決するための手段】
【００２６】
本発明にかかる通信回路は、第１のクロック信号に基づいて処理を行う複数の機能ブロックと接続され、当該機能ブロック間の通信を媒介する通信回路であって、Ｎを正整数としたとき、前記機能ブロックが出力する通信データのデータ幅と同一のデータ幅の通信手段をＮ個備え、前記Ｎ個の通信手段のそれぞれは、前記第１のクロック信号の周波数の１／Ｎで規定され、かつ前記Ｎ個の通信手段のそれぞれに対応した互いに３６０／Ｎ°ずつ位相が異なるＮ本の第２のクロック信号に基づいて通信処理を行う。【００２７】
また、本発明にかかる、第１の機能ブロックと第２の機能ブロックと接続され、前記第１の機能ブロックから前記第２の機能ブロックへ通信データを転送すると共に、Ｎを正整数としたとき、前記第１の機能ブロックが出力する前記通信データのデータ幅と同一のデータ幅を有する第１乃至第Ｎの通信手段を備える通信回路を用いた通信方法は次のステップを有する。前記第１の機能ブロックから第１のクロック信号に応じて出力された前記通信データを、前記第１のクロック信号の周波数の１／Ｎで規定され、かつ互いに３６０／Ｎ°ずつ位相が異なる第１乃至第Ｎの位相を有する第２のクロック信号に基づき前記第１乃至第Ｎの通信手段に入力する第１のステップ。前記第１乃至第Ｎの位相を有する第２のクロック信号に基づき、前記第１乃至第Ｎの通信手段に入力された通信データを前記第２の機能ブロックへ出力する第２のステップ。
【発明の効果】
【００２８】
本発明により、必要なハードウェア量や消費電力が小さく、タイミング設計が容易で、かつ、通信レイテンシが小さい、機能ブロック間の通信回路及び通信方法を提供することが可能となる。
【図面の簡単な説明】
【００２９】
【図１】実施の形態１にかかる機能ブロック間通信回路を示すブロック図である。
【図２】実施の形態１にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【図３】実施の形態２にかかる機能ブロック間通信回路を示すブロック図である。
【図４】実施の形態２にかかる機能ブロック間通信回路の位相検出回路を示すブロック図である。
【図５】実施の形態２にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【図６】実施の形態３にかかる機能ブロック間通信回路を示すブロック図である。
【図７】実施の形態３にかかる機能ブロック間通信回路のクロック信号生成回路を示すブロック図である。
【図８】実施の形態３にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【図９】実施の形態４にかかる機能ブロック間通信回路を示すブロック図である。
【図１０】実施の形態４にかかる機能ブロック間通信回路のクロック信号生成回路を示すブロック図である。
【図１１】実施の形態４にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【図１２】背景技術にかかる機能ブロック間通信回路を示すブロック図である。
【図１３】背景技術にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【図１４】背景技術にかかる機能ブロック間通信回路を示すブロック図である。
【図１５】背景技術にかかる機能ブロック間通信回路の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００３０】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態１にかかる機能ブロック間通信回路の構成を示すブロック図である。図１において、通信回路１０は、機能ブロックＡが出力したデータを機能ブロックＢに転送する通信回路である。より詳細には、通信回路１０は、機能ブロックＡが信号１３に出力したデータを機能ブロックＡの近傍で入力し、該データを機能ブロックＢの近傍まで転送した後、信号１４に出力する。機能ブロックＢは、信号１４に出力された該データを入力する。ここで、信号１３および信号１４は、複数ビットからなる同じデータ幅の信号である。
【００３１】
通信回路１０は、４本の信号１２ａ、１２ｂ、１２ｃ、１２ｄから構成されている。ここで、各信号１２ａ、１２ｂ、１２ｃ、１２ｄは、それぞれ信号１３および信号１４と同じデータ幅の複数ビットからなる信号である。したがって、通信回路１０全体では、信号１３および信号１４の４倍のデータ幅の信号を備える。
【００３２】
通信回路１０はさらに、入力データ記憶回路（入力データ記憶手段）１６ａ、１６ｂ、１６ｃ、１６ｄを備え、信号１２ａ、１２ｂ、１２ｃ、１２ｄの入力側にそれぞれ接続されている。通信回路１０はさらに、出力データ記憶回路（出力データ記憶手段）１５ａ、１５ｂ、１５ｃ、１５ｄを備え、信号１２ａ、１２ｂ、１２ｃ、１２ｄの出力側にそれぞれ接続されている。
【００３３】
すなわち、通信回路１０は、信号１２ａ、入力データ記憶回路１６ａおよび出力データ記憶回路１５ａから構成される通信手段と、信号１２ｂ、入力データ記憶回路１６ｂおよび出力データ記憶回路１５ｂから構成される通信手段と、信号１２ｃ、入力データ記憶回路１６ｃおよび出力データ記憶回路１５ｃから構成される通信手段と、信号１２ｄ、入力データ記憶回路１６ｄおよび出力データ記憶回路１５ｄから構成される通信手段との、４つの通信手段から構成される。それぞれの通信手段は、機能ブロックの入出力のデータ幅と同じデータ幅であるので、通信回路１０全体では、機能ブロックの入出力のデータ幅の４倍のデータ幅を有する。
【００３４】
また、各信号１２ａ、１２ｂ、１２ｃ、１２ｄには、各信号を駆動するための複数のバッファ回路（データ転送手段）１１ａ、１１ｂ、１１ｃ、１１ｄがそれぞれ挿入されている。
通信回路１０はさらに、出力制御回路（出力制御手段）１７を備える。出力制御回路１７は、クロックＳ０〜Ｓ３の位相関係の情報を示す位相信号２０を参照して、出力データ記憶回路１５ａ、１５ｂ、１５ｃ、１５ｄの出力のうち、いずれかの出力を選択して信号１４に出力する。
【００３５】
機能ブロックＡおよび機能ブロックＢは高速なクロック信号であるクロックＦで動作する。通信回路１０の出力制御回路１７も同様にクロックＦで動作する。一方、通信回路１０の入力データ記憶回路および出力データ記憶回路は、４つの低速なクロック信号であるクロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３で動作する。より詳細には、入力データ記憶回路１６ａおよび出力データ記憶回路１５ａは、クロックＳ０で動作する。入力データ記憶回路１６ｂおよび出力データ記憶回路１５ｂは、クロックＳ１で動作する。入力データ記憶回路１６ｃおよび出力データ記憶回路１５ｃは、クロックＳ２で動作する。入力データ記憶回路１６ｄおよび出力データ記憶回路１５ｄは、クロックＳ３で動作する。
【００３６】
ここで、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数は、クロックＦの周波数の１／４であるとする。また、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の位相は、それぞれ互いに３６０／４°ずつ異なっているとする。なお、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３などの低速クロック信号は、一般的なクロック生成回路を用いて容易に生成することができる。例えば、ＰＬＬ回路などの発信回路で直接生成してもよいし、クロックＦを分周回路で分周して生成してもよい。
【００３７】
次に図２を用いて、本実施の形態にかかる通信回路１０の動作例を説明する。図２は、機能ブロックＡから機能ブロックＢへのデータ転送のタイミングを示す説明図である。
図２において、クロックＳ０は、例えばタイミングＴ２、Ｔ６、Ｔ１０で立ち上がりの遷移を行う。入力データ記憶回路１６ａはこれらのタイミングＴ２、Ｔ６、Ｔ１０で、信号１３に出力されたデータを格納する。さらに、出力データ記憶回路１５ａはこれらのタイミングＴ２、Ｔ６、Ｔ１０で、信号１２ａに転送されたデータを格納する。
【００３８】
同様に、クロックＳ１は、例えばタイミングＴ３、Ｔ７、Ｔ１１で立ち上がりの遷移を行う。入力データ記憶回路１６ｂはこれらのタイミングＴ３、Ｔ７、Ｔ１１で、信号１３に出力されたデータを格納する。さらに、出力データ記憶回路１５ｂはこれらのタイミングＴ３、Ｔ７、Ｔ１１で、信号１２ｂに転送されたデータを格納する。
【００３９】
同様に、クロックＳ２は、例えばタイミングＴ０、Ｔ４、Ｔ８、Ｔ１２で立ち上がりの遷移を行う。入力データ記憶回路１６ｃはこれらのタイミングＴ０、Ｔ４、Ｔ８、Ｔ１２で、信号１３に出力されたデータを格納する。さらに、出力データ記憶回路１５ｃはこれらのタイミングＴ０、Ｔ４、Ｔ８、Ｔ１２で、信号１２ｃに転送されたデータを格納する。
【００４０】
同様に、クロックＳ３は、例えばタイミングＴ１、Ｔ５、Ｔ９、Ｔ１３で立ち上がりの遷移を行う。入力データ記憶回路１６ｄはこれらのタイミングＴ１、Ｔ５、Ｔ９、Ｔ１３で、信号１３に出力されたデータを格納する。さらに、出力データ記憶回路１５ｄはこれらのタイミングＴ１、Ｔ５、Ｔ９、Ｔ１３で、信号１２ｄに転送されたデータを格納する。
【００４１】
よって、以上からも明らかのように、クロックＦのすべての立ち上がり遷移のタイミングにおいて、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３のいずれかが必ず立ち上がり遷移することになる。例えば、クロックＦの立ち上がり遷移のタイミングであるタイミングＴ０〜１４において、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３のいずれかが必ず立ち上がり遷移している。
【００４２】
このように、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の周波数がクロックＦの周波数の１／４であるのにもかかわらず、クロックＦのすべての立ち上がり遷移のタイミングにおいて、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３のいずれかが必ず立ち上がり遷移することができる。これは、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３の４つのクロック信号が提供され、かつ、それぞれの位相が互いに３６０／４°ずつ異なっているからである。
【００４３】
より一般化すると、Ｎを任意の正の整数としたとき、周波数がクロックＦの周波数の１／Ｎで、かつ、位相が互いに３６０／Ｎ°ずつ異なるＮ本の低速クロック信号を使用した場合、クロックＦのすべての立ち上がり遷移のタイミングにおいて、前記Ｎ本の低速クロック信号のいずれかが必ず立ち上がり遷移することができる。
【００４４】
次に、再び図２を参照して、本実施の形態による通信回路１０の通信動作の具体例を説明する。図２において、機能ブロックＡがタイミングＴ０において信号１３に出力したデータＤ０は、タイミングＴ１において通信回路１０に到着する。タイミングＴ１で動作する入力データ記憶回路１６ｄは、該データＤ０を格納する。同時に該データＤ０は、信号１２ｄに転送されて、タイミングＴ５において出力データ記憶回路１５ｄに到着する。出力データ記憶回路１５ｄは、到着した該データＤ０をタイミングＴ５において格納する。次に、出力制御回路１７は、位相信号２０を参照することで、タイミングＴ５において、該データＤ０が出力データ記憶回路１５ｄに格納されたと判断する。出力制御回路１７は、そのタイミングＴ５において、出力データ記憶回路１５ｄが格納した該データＤ０を選択して信号１４に出力する。
【００４５】
同様に、機能ブロックＡがタイミングＴ１において信号１３に出力したデータＤ１は、タイミングＴ２において通信回路１０に到着する。タイミングＴ２で動作する入力データ記憶回路１６ａは、該データＤ１を格納する。同時に該データＤ１は、信号１２ａに転送されて、タイミングＴ６において出力データ記憶回路１５ａに到着する。出力データ記憶回路１５ａは、到着した該データＤ１をタイミングＴ６において格納する。次に、出力制御回路１７は、位相信号２０を参照することで、タイミングＴ６において、該データＤ１が出力データ記憶回路１５ａに格納されたと判断する。出力制御回路１７は、そのタイミングＴ６において、出力データ記憶回路１５ａが格納した該データＤ１を選択して信号１４に出力する。
【００４６】
同様に、機能ブロックＡがタイミングＴ２において信号１３に出力したデータＤ２は、タイミングＴ３において通信回路１０に到着する。タイミングＴ３で動作する入力データ記憶回路１６ｂは、該データＤ２を格納する。同時に該データＤ２は、信号１２ｂに転送されて、タイミングＴ７において出力データ記憶回路１５ｂに到着する。出力データ記憶回路１５ｂは、到着した該データＤ２をタイミングＴ７において格納する。次に、出力制御回路１７は、位相信号２０を参照することで、タイミングＴ７において、該データＤ２が出力データ記憶回路１５ｂに格納されたと判断する。出力制御回路１７は、そのタイミングＴ７において、出力データ記憶回路１５ｂが格納した該データＤ２を選択して信号１４に出力する。
【００４７】
同様に、機能ブロックＡがタイミングＴ３において信号１３に出力したデータＤ３は、タイミングＴ４において通信回路１０に到着する。タイミングＴ４で動作する入力データ記憶回路１６ｃは、該データＤ３を格納する。同時に該データＤ３は、信号１２ｃに転送されて、タイミングＴ８において出力データ記憶回路１５ｃに到着する。出力データ記憶回路１５ｃは、到着した該データＤ３をタイミングＴ８において格納する。次に、出力制御回路１７は、位相信号２０を参照することで、タイミングＴ８において、該データＤ３が出力データ記憶回路１５ｃに格納されたと判断する。出力制御回路１７は、そのタイミングＴ８において、出力データ記憶回路１５ｃが格納した該データＤ３を選択して信号１４に出力する。
【００４８】
以上で説明したように、機能ブロックＡがタイミングＴ０からＴ３にかけて出力したデータＤ０からＤ３は、タイミングＴ５からＴ８にかけて信号１４に出力されて、機能ブロックＢに到着することになる。したがって、機能ブロックＡから機能ブロックＢへのデータ転送のレイテンシは、クロックＦの５サイクルである。また、機能ブロックＡから機能ブロックＢへのデータ転送のスループットは、１（クロックＦの１サイクルあたり１データを転送することを示す）である。以降も同様に、機能ブロックＡがタイミングＴ４からＴ７にかけて出力したデータＤ４からＤ７は、タイミングＴ９からＴ１２にかけて信号１４に出力されて、機能ブロックＢに到着することになる。
【００４９】
以上、機能ブロックのクロック信号であるクロックＦに対して周波数が１／４であり、かつ、それぞれ互いに３６０／４°ずつ位相が異なる４本の低速クロック信号、クロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３を使用する場合を例として説明した。しかし、本実施の形態は、これに限らず、任意の正の整数Ｎについても同様に適用することができる。具体的には、機能ブロックのクロック信号であるクロックＦに対して周波数が１／Ｎであり、かつ、それぞれ互いに３６０／Ｎ°ずつ位相が異なるＮ本の低速クロック信号を使用すればよい。
【００５０】
このように、本実施の形態では、機能ブロックが入出力するデータ幅ごとに、かつ、機能ブロックのクロック信号であるクロックＦの毎サイクルごとに、クロックＦの１／４の周波数で、順次データを通信することができる。この理由は、通信に用いる４本の低速クロック信号であるクロックＳ０、クロックＳ１、クロックＳ２、クロックＳ３は、３６０／４°ずつ位相が異なるので、いずれかのクロック信号は、クロックＦと立ち上がりの位相が一致するからである。さらに、出力制御回路１７は、出力データ記憶回路が格納したデータを、格納した順序で、信号１４に出力するからである。さらに、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、その格納したサイクルにおいて、信号１４に出力するからである。
【００５１】
より一般的には、任意の正の整数Ｎに対して、本実施の形態では、通信に周波数が機能ブロックのクロック信号の１／ＮであるＮ本の低速クロック信号を使用する。さらに、それらのクロック信号は３６０／Ｎ°ずつ位相が異なるので、いずれかのクロック信号は、クロックＦと立ち上がりの位相が一致する。したがって、本実施の形態では、機能ブロックが入出力するデータ幅ごとに、かつ、機能ブロックのクロック信号であるクロックＦの毎サイクルごとに、機能ブロックのクロック信号の１／Ｎの周波数で、順次データを通信することができる。
【００５２】
本実施の形態にかかる通信回路では、通信に使用するクロック信号の周波数を低くすることができるので、タイミング設計を容易にすることができる。さらに、パイプライン化が不要となり、または、パイプライン化したとしてもパイプライン段数を少なくすることができるため、回路面積や消費電力を小さくすることができる。
【００５３】
さらに、本実施の形態にかかる通信回路では、機能ブロックが入出力するデータ幅ごとに通信を行うので、通信するデータを一旦バッファリングする必要がなく、通信するデータがすべて揃うまで待つ必要もないので、レイテンシの増加を抑えることができる。
さらに、本実施の形態にかかる通信回路では、機能ブロックのクロック信号の毎サイクルごとに通信を行えるので、機能ブロックのクロック信号と通信に使用するクロック信号との位相が合うまで通信を待つ必要がなく、レイテンシの増加を抑えることができる。さらに、入力データ記憶回路を２重化（ダブルバッファ化）する必要がないので、回路面積や消費電力を小さくすることができる。
【００５４】
次に本実施の形態にかかる通信方法について説明する。
通信回路１０は、第１の機能ブロック（機能ブロックＡ）と第２の機能ブロック（機能ブロックＢ）と接続され、第１の機能ブロックから第２の機能ブロックへ通信データを転送する。このとき、通信回路１０は、Ｎを正整数としたとき、第１の機能ブロックが出力する通信データのデータ幅と同一のデータ幅を有する第１乃至第Ｎの通信手段を備える。
そして、本実施の形態にかかる通信方法は、第１の機能ブロックから第１のクロック信号に応じて出力された通信データを、第１のクロック信号の周波数の１／Ｎで規定され、かつ互いに３６０／Ｎ°ずつ位相が異なる第１乃至第Ｎの位相を有する第２のクロック信号に基づき第１乃至第Ｎの通信手段に入力する第１のステップを有する。また、第１乃至第Ｎの位相を有する第２のクロック信号に基づき、第１乃至第Ｎの通信手段に入力された通信データを第２の機能ブロックへ出力する第２のステップを有する。
【００５５】
ここで、第２のステップは、第１乃至第Ｎの位相を有する第２のクロック信号のうち、通信データを入力した際の第２のクロック信号の位相と対応する位相を有する第２のクロック信号に基づき、第１乃至第Ｎの通信手段に入力された通信データを第２の機能ブロックへ出力するステップであってもよい。
【００５６】
本実施の形態にかかる通信方法を用いることで、必要なハードウェア量や消費電力が小さく、タイミング設計が容易で、かつ、通信レイテンシが小さい、機能ブロック間の通信方法を提供することが可能となる。
【００５７】
実施の形態２
次に、図３を用いて、本発明の実施の形態２にかかる機能ブロック間通信回路について説明する。実施の形態１で説明した機能ブロック間通信回路では、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、格納した順序で、信号１４に出力していた。さらに、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、その格納したサイクルにおいて、信号１４に出力していた。これにより、機能ブロックが入出力するデータ幅ごと、かつ、機能ブロックのクロック信号の毎サイクルに低レイテンシの機能ブロック間通信を実現していた。出力制御回路１７は、位相関係の情報を示す位相信号２０を参照してデータ選択を行うことで、データ到着と同サイクルのデータ出力を実現していた。
【００５８】
これに対して、図３に示す本実施の形態にかかる機能ブロック間通信回路では、実施の形態１で説明した機能ブロック間通信回路の構成において、位相信号２０を生成する位相検出回路（位相検出手段）６０を追加した構成となっている。本実施の形態にかかる機能ブロック間通信回路のうち実施の形態１と共通の構成部分については、重複した説明を省略する。
【００５９】
位相検出回路６０は、クロックＳ０を入力して、クロックＳ０の立ち上がり遷移のタイミングを検出することで、クロックＳ０〜Ｓ３の位相を検出し、位相信号２０として出力する。出力選択回路１７は、セレクタ回路１８とカウンタ回路１９とから構成される。セレクタ回路１８は、カウンタ回路１９が出力するデータ選択信号２１に応じて、出力データ記憶回路１５ａ、１５ｂ、１５ｃ、１５ｄの各出力からいずれか１つを選択して、信号１４に出力する。
【００６０】
具体的には、データ選択信号２１の値が「０」の場合、出力データ記憶回路１５ａの出力を選択して信号１４に出力する。データ選択信号２１の値が「１」の場合、出力データ記憶回路１５ｂの出力を選択して信号１４に出力する。データ選択信号２１の値が「２」の場合、出力データ記憶回路１５ｃの出力を選択して信号１４に出力する。データ選択信号２１の値が「３」の場合、出力データ記憶回路１５ｄの出力を選択して信号１４に出力する。
【００６１】
カウンタ回路１９は、クロックＦによってカウント動作を行い、そのカウント値をデータ選択信号２１として出力する。また、カウンタ回路１９は、位相信号２０を参照してリセット動作を行う。
【００６２】
図４は位相検出回路６０の具体例である。位相検出回路６０は、トグル回路６５とトグル検出回路７０から構成される。トグル回路６５は、クロックＳ０で動作し、クロックＳ０の各立ち上がりタイミングで値がトグルするトグル信号６７を生成する。トグル検出回路７０は、クロックＦで動作し、トグル信号６７を入力して、トグル信号６７のトグルタイミングである立ち上がりおよび立下りタイミングを検出する。次に、そのトグルタイミングより、クロックＳ０の立ち上がり遷移のタイミングの２サイクル後に「１」、それ以外のタイミングで「０」となる位相信号２０を生成する。
【００６３】
次に図５を参照して、本実施の形態にかかる通信回路１０の動作例を説明する。図５は、実施の形態１の動作タイミングを説明した図２に対して、位相信号２０およびデータ選択信号２１の動作波形を追加している。本実施の形態にかかる機能ブロック間通信回路の動作うち実施の形態１と共通の動作については、重複した説明を省略する。
【００６４】
図５において、クロックＳ０は、タイミングＴ２、Ｔ６、Ｔ１０で立ち上がり遷移している。位相検出回路６０は、このクロックＳ０の立ち上がりタイミングを検出することで、クロックＳ０の立ち上がり遷移のタイミングの２サイクル後に「１」、それ以外のタイミングで「０」となる位相信号２０を生成する。
【００６５】
このとき、位相信号２０はクロックＳ０の立ち上がりタイミングの２サイクル後で「１」となる。また、位相信号２０はクロックＳ１の立ち上がりタイミングの１サイクル後で「１」となる。また、位相信号２０はクロックＳ２の立ち上がりタイミングで「１」となる。また、位相信号２０はクロックＳ３の立ち上がりタイミングの１サイクル前で「１」となる。このタイミング情報に基づいて、位相信号２０はクロックＳ０〜Ｓ３の位相関係を示すことができる。具体的には、位相信号２０は、タイミングＴ４、Ｔ８、Ｔ１２などにおいて、「１」、それ以外のタイミングで「０」となる。
【００６６】
出力制御回路１７が備えるカウンタ回路１９は、位相信号２０が「１」となったサイクルの次のサイクルでリセット動作を行う。具体的には、カウンタ回路１９は、タイミングＴ５、Ｔ９、Ｔ１３などにおいて、リセット動作を行う。リセット動作におけるリセット値は、カウンタ回路１９がカウントするカウント値がそのまま適切なデータ選択信号２１となるように決定する。
【００６７】
図５の場合、カウンタ回路１９がリセット動作を行うタイミングＴ５、Ｔ９、Ｔ１３などでは、クロックＳ３が立ち上がり遷移し、出力データ記憶回路１５ｄにデータが記憶される。したがって、タイミングＴ５、Ｔ９、Ｔ１３などにおいて、セレクタ回路１８が、出力データ記憶回路１５ｄの出力を選択するように、リセット値は「３」としている。
【００６８】
カウンタ回路１９は、カウント値をタイミングＴ５、Ｔ９、Ｔ１３などで「３」にリセットした後、「０」〜「３」の間でカウント動作を行い、そのカウント値をそのままデータ選択信号２１として出力する。したがって、出力制御回路１７は、例えばタイミングＴ５において、出力データ記憶回路１５ｄが格納した該データＤ０を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ６において、出力データ記憶回路１５ａが格納した該データＤ１を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ７において、出力データ記憶回路１５ｂが格納した該データＤ２を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ８において、出力データ記憶回路１５ｃが格納した該データＤ３を選択して信号１４に出力する。
【００６９】
以上説明したように、本実施の形態によれば、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、格納した順序で、信号１４に出力する。さらに出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、その格納したサイクルにおいて、信号１４に出力する。その結果、本実施の形態によれば、機能ブロックが入出力するデータ幅ごと、かつ、機能ブロックのクロック信号の毎サイクルごとに低レイテンシの機能ブロック間通信を実現することができる。
【００７０】
実施の形態３
次に、図６を用いて、本発明の実施の形態３にかかる機能ブロック間通信回路について説明する。図６に示す本実施の形態にかかる機能ブロック間通信回路は、実施の形態１で説明した機能ブロック間通信回路に、クロックＦを分周してクロックＳ０〜Ｓ３を生成するクロック生成回路（クロック生成手段）４０を追加した構成となっている。本実施の形態にかかる機能ブロック間通信回路のうち実施の形態１と共通の構成部分については、重複した説明を省略する。
【００７１】
出力選択回路１７は、実施の形態１と同様にセレクタ回路１８とカウンタ回路１９とから構成される。セレクタ回路１８は、カウンタ回路１９が出力するデータ選択信号２１に応じて、出力データ記憶回路１５ａ、１５ｂ、１５ｃ、１５ｄの各出力から一つを選択して、信号１４に出力する。
【００７２】
具体的には、データ選択信号２１の値が「０」の場合、出力データ記憶回路１５ａの出力を選択して信号１４に出力する。データ選択信号２１の値が「１」の場合、出力データ記憶回路１５ｂの出力を選択して信号１４に出力する。データ選択信号２１の値が「２」の場合、出力データ記憶回路１５ｃの出力を選択して信号１４に出力する。データ選択信号２１の値が「３」の場合、出力データ記憶回路１５ｄの出力を選択して信号１４に出力する。
【００７３】
クロック生成回路４０は、上位の回路から与えられる位相信号２０を参照して、クロックＳ０〜Ｓ３を生成する。したがって、クロックＳ０〜Ｓ３の位相は位相信号２０を基準に決定される。
【００７４】
図７はクロック生成回路４０の具体例である。クロック生成回路４０は、カウンタ回路４３、４つのデコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄ、４つのフリップフロップ回路３２ａ、３２ｂ、３２ｃ、３２ｄから構成される。カウンタ回路４３は、クロックＦによってカウント動作を行い、そのカウント値をカウント値３５として出力する。また、カウンタ回路４３は、位相信号２０を参照してリセット動作を行う。
【００７５】
デコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄは、カウント値３５を入力して、各クロックＳ０〜Ｓ３を生成するためのクロック値３４ａ、３４ｂ、３４ｃ、３４ｄをそれぞれ生成する。具体的には、デコーダ回路３１ａは、カウント値３５が「０」のときに、「１」に遷移するクロック値３４ａを生成する。デコーダ回路３１ｂは、カウント値３５が「１」のときに、「１」に遷移するクロック値３４ｂを生成する。デコーダ回路３１ｃは、カウント値３５が「２」のときに、「１」に遷移するクロック値３４ｃを生成する。デコーダ回路３１ｄは、カウント値３５が「３」のときに、「１」に遷移するクロック値３４ｄを生成する。
【００７６】
各フリップフロップ回路３２ａ、３２ｂ、３２ｃ、３２ｄは、クロックＦのタイミングで、クロック値３４ａ、３４ｂ、３４ｃ、３４ｄをそれぞれラッチして、クロックＳ０〜Ｓ３としてそれぞれ出力する。
【００７７】
次に図８を参照して、本実施の形態にかかる通信回路１０の動作例を説明する。図８は、実施の形態１の動作タイミングを説明した図２に対して、カウント値３５、位相信号２０およびデータ選択信号２１の動作波形を追加している。本実施の形態にかかる機能ブロック間通信回路の動作うち実施の形態１と共通の動作については、重複した説明を省略する。
【００７８】
図８において、上位の回路から与えられる位相信号２０は、タイミングＴ０、Ｔ４、Ｔ８、Ｔ１２において「１」になる。クロック生成回路４０が備えるカウンタ回路４３は、位相信号２０が「１」となったサイクルの次のサイクルで、カウント値を「０」にリセットするようにリセット動作を行う。具体的には、カウンタ回路４３は、タイミングＴ１、Ｔ５、Ｔ９、Ｔ１３において、リセット動作を行う。その後、カウンタ回路４３は、「０」〜「３」の間でカウント動作を行い、そのカウント値をカウント値３５として出力する。このカウント値３５を参照して、各デコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄは、クロック値３４ａ、３４ｂ、３４ｃ、３４ｄを生成する。
【００７９】
その結果、クロック値３４ａから生成されるクロックＳ０は、タイミングＴ２、Ｔ６、Ｔ１０で立ち上がり遷移する。同様に、クロック値３４ｂから生成されるクロックＳ１は、タイミングＴ３、Ｔ７、Ｔ１１で立ち上がり遷移する。同様に、クロック値３４ｃから生成されるクロックＳ２は、タイミングＴ０、Ｔ４、Ｔ８、Ｔ１２で立ち上がり遷移する。同様に、クロック値３４ｄから生成されるクロックＳ３は、タイミングＴ１、Ｔ５、Ｔ９、Ｔ１３で立ち上がり遷移する。
【００８０】
一方、出力制御回路１７が備えるカウンタ回路１９は、位相信号２０が「１」となったサイクルの次のサイクルでリセット動作を行う。具体的には、カウンタ回路１９は、タイミングＴ５、Ｔ９、Ｔ１３などにおいて、リセット動作を行う。リセット動作におけるリセット値は、カウンタ回路１９がカウントするカウント値がそのまま適切なデータ選択信号２１となるように決定する。図８の場合、カウンタ回路１９がリセット動作を行うタイミングＴ５、Ｔ９、Ｔ１３などでは、クロックＳ３が立ち上がり遷移し、出力データ記憶回路１５ｄにデータが記憶される。したがって、タイミングＴ５、Ｔ９、Ｔ１３などにおいて、セレクタ回路１８が、出力データ記憶回路１５ｄの出力を選択するように、リセット値は「３」としている。
【００８１】
カウンタ回路１９は、カウント値をタイミングＴ５、Ｔ９、Ｔ１３などで「３」にリセットした後、「０」〜「３」の間でカウント動作を行い、そのカウント値をそのままデータ選択信号２１として出力する。したがって、出力制御回路１７は、例えばタイミングＴ５において、出力データ記憶回路１５ｄが格納した該データＤ０を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ６において、出力データ記憶回路１５ａが格納した該データＤ１を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ７において、出力データ記憶回路１５ｂが格納した該データＤ２を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ８において、出力データ記憶回路１５ｃが格納した該データＤ３を選択して信号１４に出力する。
【００８２】
以上説明したように、本実施の形態によれば、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、格納した順序で、信号１４に出力する。さらに出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、その格納したサイクルにおいて、信号１４に出力する。その結果、本実施の形態によれば、機能ブロックが入出力するデータ幅ごと、かつ、機能ブロックのクロック信号の毎サイクルごとに低レイテンシの機能ブロック間通信を実現することができる。
【００８３】
実施の形態４
次に、図９を用いて、本発明の実施の形態４にかかる機能ブロック間通信回路について説明する。図９に示す本実施の形態にかかる機能ブロック間通信回路は、実施の形態１で説明した機能ブロック間通信回路の構成において、クロックＦを分周してクロックＳ０〜Ｓ３を生成するクロック生成回路（クロック生成手段）５０を追加した構成となっている。本実施の形態にかかる機能ブロック間通信回路のうち実施の形態１と共通の構成部分については、重複した説明を省略する。
【００８４】
出力選択回路１７は、実施の形態１と同様にセレクタ回路１８とカウンタ回路１９とから構成される。セレクタ回路１８は、カウンタ回路１９が出力するデータ選択信号２１に応じて、出力データ記憶回路１５ａ、１５ｂ、１５ｃ、１５ｄの各出力から一つを選択して、信号１４に出力する。
【００８５】
具体的には、データ選択信号２１の値が「０」の場合、出力データ記憶回路１５ａの出力を選択して信号１４に出力する。データ選択信号２１の値が「１」の場合、出力データ記憶回路１５ｂの出力を選択して信号１４に出力する。データ選択信号２１の値が「２」の場合、出力データ記憶回路１５ｃの出力を選択して信号１４に出力する。データ選択信号２１の値が「３」の場合、出力データ記憶回路１５ｄの出力を選択して信号１４に出力する。
【００８６】
クロック生成回路５０は、クロックＳ０〜Ｓ３を生成すると同時に、クロックＳ０〜Ｓ３の位相関係の情報を示す位相情報２０をも生成して出力する。図１０はクロック生成回路５０の具体例である。クロック生成回路５０は、カウンタ回路３３、４つのデコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄ、４つのフリップフロップ回路３２ａ、３２ｂ、３２ｃ、３２ｄ、デコーダ回路５４から構成される。カウンタ回路３３は、クロックＦによってカウント動作を行い、そのカウント値をカウント値３５として出力する。デコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄは、カウント値３５を入力して、各クロックＳ０〜Ｓ３を生成するためのクロック値３４ａ、３４ｂ、３４ｃ、３４ｄをそれぞれ生成する。
【００８７】
具体的には、デコーダ回路３１ａは、カウント値３５が「０」のときに、「１」に遷移するクロック値３４ａを生成する。デコーダ回路３１ｂは、カウント値３５が「１」のときに、「１」に遷移するクロック値３４ｂを生成する。デコーダ回路３１ｃは、カウント値３５が「２」のときに、「１」に遷移するクロック値３４ｃを生成する。デコーダ回路３１ｄは、カウント値３５が「３」のときに、「１」に遷移するクロック値３４ｄを生成する。
【００８８】
各フリップフロップ回路３２ａ、３２ｂ、３２ｃ、３２ｄは、クロックＦのタイミングで、クロック値３４ａ、３４ｂ、３４ｃ、３４ｄをそれぞれラッチして、クロックＳ０〜Ｓ３としてそれぞれ出力する。
デコーダ回路５４は、入力するカウント値３５から位相信号２０を生成して出力する。具体的には、デコーダ回路５４は、カウント値３５が「０」のときに「１」、その以外のときは「０」を、位相信号２０として出力する。
【００８９】
次に図１１を参照して、本実施の形態にかかる通信回路１０の動作例を説明する。図１１は、実施の形態１の動作タイミングを説明した図２に対して、カウント値３５、位相信号２０およびデータ選択信号２１の動作波形を追加している。本実施の形態にかかる機能ブロック間通信回路の動作うち実施の形態１と共通の動作については、重複した説明を省略する。
【００９０】
クロック生成回路５０が備えるカウンタ回路３３は、「０」〜「３」の間でカウント動作を行い、そのカウント値をカウント値３５として出力する。図１１では、タイミングＴ１、Ｔ５、Ｔ９、Ｔ１３などにおいて、そのカウント値が「０」になる。このカウント値３５を参照して、各デコーダ回路３１ａ、３１ｂ、３１ｃ、３１ｄは、クロック値３４ａ、３４ｂ、３４ｃ、３４ｄを生成する。
【００９１】
その結果、クロック値３４ａから生成されるクロックＳ０は、タイミングＴ２、Ｔ６、Ｔ１０などで立ち上がり遷移する。同様に、クロック値３４ｂから生成されるクロックＳ１は、タイミングＴ３、Ｔ７、Ｔ１１などで立ち上がり遷移する。同様に、クロック値３４ｃから生成されるクロックＳ２は、タイミングＴ０、Ｔ４、Ｔ８、Ｔ１２などで立ち上がり遷移する。同様に、クロック値３４ｄから生成されるクロックＳ３は、タイミングＴ１、Ｔ５、Ｔ９、Ｔ１３などで立ち上がり遷移する。
【００９２】
また、クロック生成回路５０は、カウント値３５に応じて、位相信号２０を生成して出力する。図１１では、カウント値３５が「０」になるタイミングＴ１、Ｔ５、Ｔ９、Ｔ１３などにおいて「１」になる。
【００９３】
一方、出力制御回路１７が備えるカウンタ回路１９は、位相信号２０が「１」となったサイクルの次のサイクルでリセット動作を行う。具体的には、カウンタ回路１９は、タイミングＴ２、Ｔ６、Ｔ１０などにおいて、リセット動作を行う。リセット動作におけるリセット値は、カウンタ回路１９がカウントするカウント値がそのまま適切なデータ選択信号２１となるように決定する。図１１の場合、カウンタ回路１９がリセット動作を行うタイミングＴ２、Ｔ６、Ｔ１０などでは、クロックＳ０が立ち上がり遷移し、出力データ記憶回路１５ａにデータが記憶される。したがって、タイミングＴ２、Ｔ６、Ｔ１０などにおいて、セレクタ回路１８が、出力データ記憶回路１５ａの出力を選択するように、リセット値は「０」としている。
【００９４】
カウンタ回路１９は、カウント値をタイミングＴ２、Ｔ６、Ｔ１０などで「０」にリセットした後、「０」〜「３」の間でカウント動作を行い、そのカウント値をそのままデータ選択信号２１として出力する。したがって、出力制御回路１７は、例えばタイミングＴ５において、出力データ記憶回路１５ｄが格納した該データＤ０を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ６において、出力データ記憶回路１５ａが格納した該データＤ１を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ７において、出力データ記憶回路１５ｂが格納した該データＤ２を選択して信号１４に出力する。同様に、出力制御回路１７は、タイミングＴ８において、出力データ記憶回路１５ｃが格納した該データＤ３を選択して信号１４に出力する。
【００９５】
以上説明したように、本実施の形態によれば、出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、格納した順序で、信号１４に出力する。さらに出力制御回路１７は、出力データ記憶回路のいずれかが格納したデータを、その格納したサイクルにおいて、信号１４に出力する。その結果、本実施の形態によれば、機能ブロックが入出力するデータ幅ごと、かつ、機能ブロックのクロック信号の毎サイクルごとに低レイテンシの機能ブロック間通信を実現することができる。
【００９６】
以上、本発明を上記実施の形態に即して説明したが、上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得るであろう各種変形、修正、組み合わせを含むことは勿論である。
【００９７】
この出願は、２００９年５月１８日に出願された日本出願特願２００９−１２０１２６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９８】
１０  通信回路
１１ａ、１１ｂ、１１ｃ、１１ｄ  バッファ回路
１２ａ、１２ｂ、１２ｃ、１２ｄ、１３、１４  信号
１５ａ、１５ｂ、１５ｃ、１５ｄ  出力データ記憶回路
１６ａ、１６ｂ、１６ｃ、１６ｄ  入力データ記憶回路
１７  出力制御回路
１８  セレクタ回路
１９  カウンタ回路
２０  位相信号
２１  データ選択信号
３１ａ、３１ｂ、３１ｃ、３１ｄ  デコーダ回路
３２ａ、３２ｂ、３２ｃ、３２ｄ  フリップフロップ回路
３３  カウンタ回路
３５  カウント値
４０  クロック信号生成回路
４３  カウンタ回路
５０  クロック信号生成回路
５４  デコーダ回路
６０  位相検出回路
６５  トグル回路
７０  トグル検出回路
１００  通信回路
１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅ  パイプライン・レジスタ
１１１ａ、１１１ｂ、１１１ｃ、１１１ｄ  バッファ回路
１１２ａ、１１２ｂ、１１２ｃ、１１２ｄ  部分信号
１１３、１１４  信号
１５０  通信回路
１６０ａ、１６０ｂ  入力データ記憶回路
１６１ａ、１６１ｂ、１６１ｃ、１６１ｄ  バッファ回路
１６２ａ、１６２ｂ、１６２ｃ、１６２ｄ、１６３、１６４  信号
１６５  出力データ記憶回路
１６６  入力制御回路
１６７  出力制御回路
【図１】
0005447511.tif 000002
【図２】
0005447511.tif 000003
【図３】
0005447511.tif 000004
【図４】
0005447511.tif 000005
【図５】
0005447511.tif 000006
【図６】
0005447511.tif 000007
【図７】
0005447511.tif 000008
【図８】
0005447511.tif 000009
【図９】
0005447511.tif 000010
【図１０】
0005447511.tif 000011
【図１１】
0005447511.tif 000012
【図１２】
0005447511.tif 000013
【図１３】
0005447511.tif 000014
【図１４】
0005447511.tif 000015
【図１５】
0005447511.tif 000016