(57)【要約】【課題】クロックイネーブルのタイミング条件を容易に収束可能なクロック制御回路を提供する。【解決手段】クロック制御回路１０は、クロック生成部１２、クロックイネーブル生成部１３とを有する。クロック生成部１２は、第１周期を有する第１クロックと、第１周期以上の長さを有する第２周期を有し、少なくとも１つのパルスの配置が第１クロックのパルスの何れか１つの配置と一致するパルスを含む第２クロックとを生成する。クロックイネーブル生成部１３は、第１クロック及び第２クロックのパルスが一致するタイミングを第１クロック及び第２クロックのパルスの配置から予測する。クロックイネーブル生成部１３は、予測したタイミングと第１クロックのパルスの配置とから、パルスが一致するタイミングの前の第１クロックのパルスでラッチ可能なクロックイネーブルを生成する。【選択図】図４
2017021539.tif 000002
【特許請求の範囲】
【請求項１】
第１周期を有する第１クロックと、前記第１周期以上の長さを有する第２周期を有し、少なくとも１つのパルスの配置が前記第１クロックのパルスの何れか１つの配置と一致するパルスを含む第２クロックとを生成するクロック生成部と、
前記第１クロック及び前記第２クロックのパルスが一致するタイミングを前記第１クロック及び前記第２クロックのパルスの配置から予測し、前記予測したタイミングと前記第１クロックのパルスの配置とから、前記パルスが一致するタイミングの前の前記第１クロックのパルスでラッチ可能なクロックイネーブルを生成するクロックイネーブル生成部と、
を有する、クロック制御回路。
【請求項２】
前記第１周期の長さは、前記第２周期の長さと等しい基準周期であり、
前記第１クロックは、前記基準周期の間に２つ以上のパルスを含み、
前記第２クロックは、前記基準周期の間に第１クロックのパルスの数以下の数のパルスを含む、請求項１に記載のクロック制御回路。
【請求項３】
前記第１クロック及び前記第２クロックの前記基準周期におけるパルスの配置は、前記基準周期に含まれるパルスの数が１つ多い前記第１クロック及び前記第２クロックに含まれるパルスの何れか１つを間引いた配置である、請求項２に記載のクロック制御回路。
【請求項４】
前記クロック生成部は、所定のパルス配置アルゴリズムに従って間引くパルスを決定することにより、前記第１クロック及び前記第２クロックの前記基準周期におけるパルスの配置を決定し、
前記クロックイネーブル生成部は、前記パルス配置アルゴリズムから前記第１クロック及び前記第２クロックが一致するタイミングを予測する、請求項３に記載のクロック制御回路。
【請求項５】
パルス配置アルゴリズムでは、前記基準周期の指数と前記第１クロック又は前記第２クロックのパルス数から演算される境界と、パルスの位置とを比較して、パルスの位置が前記境界の前に位置する場合と、パルスの位置が前記境界の後に位置する場合とでパルスを間引く条件を相違させる、請求項４に記載のクロック制御回路。
【請求項６】
演算装置と、
前記演算装置とバスを介して接続される論理回路と、
第１周期を有する第１クロックを前記演算装置に出力し且つ前記論理回路に前記第１周期以上の長さを有する第２周期を有し、少なくとも１つのパルスの配置が前記第１クロックのパルスの何れか１つの配置と一致するパルスを含む第２クロックを前記論理回路に出力するクロック制御回路と、を有し、前記クロック制御回路は、
前記第１クロックと、前記第２クロックとを生成するクロック生成部と、
前記第１クロック及び前記第２クロックが一致するタイミングを前記第１クロック及び前記第２クロックのパルスの配置から予測し、前記予測したタイミングと前記第１クロックのパルスの配置とから、前記パルスが一致するタイミングの前の前記第１クロックのパルスでラッチ可能なクロックイネーブルを生成するクロックイネーブル生成部と、
を有する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック制御回路及び半導体装置に関する。
【背景技術】
【０００２】
ＣＰＵ、メモリ及び論理回路等を、バスを介して接続することにより形成されたシステムオンチップ（system-on-a-chip、ＳｏＣ）とも称される半導体装置が知られる。ＳｏＣにおいて、ＳｏＣに搭載されるモジュールの動作速度に応じたクロック信号を生成して、クロック信号を伝送するクロックツリーにおける消費電力を低減することが知られる。動作速度に応じたクロックによりモジュールを動作させるとき、モジュール間のデータ転送は、それぞれのクロック周波数の最大公約数に等しい動作周波数で行うことが知られる（例えば、特許文献１及び２を参照）。また、基本クロックとシステムクロックとの間の遅延ばらつきを解消するために、システムクロックの分周比に関する情報を含む選択信号に基づいて同期化信号を所定時間保持することが知られる（例えば、特許文献３を参照）。さらに、バスマスタとバススレーブとの周波数の組み合わせを自由に設定するために、バスマスタ及びバススレーブのクロックの周波数に応じてバス制御信号を生成することが知られる（例えば、特許文献４を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−４１１０６号公報
【特許文献２】特開２００５−１２２３７４号公報
【特許文献３】特開２０１２−３２９３６号公報
【特許文献４】特開２０１２−１８１７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、近年のＳｏＣの高集積化、大規模化によって、クロック等の信号を伝送する配線の配線長が長くなり、信号間でタイミングのばらつきが発生するおそれがある。信号間のタイミングのばらつきが多く発生すると、回路を半導体装置として実装するときに信号間のタイミング条件を収束することが容易でなくなり、タイミング条件を充足するように回路を半導体装置として実装されないおそれがある。例えば、ＳｏＣに搭載されるモジュールを動作に応じたクロックで動作させ且つモジュール間のデータ転送をクロックイネーブルにより制御するとき、クロックイネーブルのタイミング条件が収束しないおそれがある。
【０００５】
一実施形態では、クロックイネーブルのタイミング条件を容易に収束可能なクロック制御回路を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様では、クロック制御回路は、クロック生成部と、クロックイネーブル生成部とを有する。クロック生成部は、第１周期を有する第１クロックと、第１周期以上の長さを有する第２周期を有し、少なくとも１つのパルスの配置が第１クロックのパルスの何れか１つの配置と一致するパルスを含む第２クロックとを生成する。クロックイネーブル生成部は、第１クロック及び第２クロックのパルスが一致するタイミングを第１クロック及び第２クロックのパルスの配置から予測する。クロックイネーブル生成部は、予測したタイミングと第１クロックのパルスの配置とから、パルスが一致するタイミングの前の第１クロックのパルスでラッチ可能なクロックイネーブルを生成する。
【発明の効果】
【０００７】
一実施形態では、クロックイネーブルのタイミング条件を容易に収束可能なクロック制御回路を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】（ａ）は関連するクロック制御回路を含むシステムの回路ブロック図であり、（ｂ）は（ａ）に記載されるクロックイネーブル生成部の内部回路ブロック図である。
【図２】（ａ）は図１（ａ）に示すクロック制御回路が生成する第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの一例であり、（ｂ）は（ａ）に示す第１クロック、第２クロック及びクロックイネーブル、並びに図１（ａ）に示すバスインタフェース部の動作に使用されるゲーティング第１クロックのタイミングチャートであり、（ｃ）は、図１（ａ）に示すクロック制御回路が生成する第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの他の例であり、（ｄ）は（ｃ）に示す第１クロック、第２クロック及びクロックイネーブル、並びに図１（ａ）に示すクロック制御回路の動作に使用されるゲーティング第１クロックのタイミングチャートである。
【図３】（ａ）は第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの一例であり、（ｂ）は（ａ）に示す第１クロック、第２クロック及びクロックイネーブル、並びに図１（ａ）に示すクロック制御回路の動作に使用されるゲーティング第１クロックのタイミングチャートであり、（ｃ）は第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの他の例であり、（ｄ）は（ｃ）に示す第１クロック、第２クロック及びクロックイネーブル、並びに図１（ａ）に示すクロック制御回路の動作に使用されるゲーティング第１クロックのタイミングチャートである。
【図４】実施形態に係るクロック制御回路を含むシステムの回路ブロック図である。
【図５】（ａ）は図４に示すクロック生成部の内部回路ブロック図であり、（ｂ）は（ａ）に示す第１クロック生成部の内部回路ブロック図である。
【図６】（ａ）は基準周期の指数Mが3であり、第１クロックのパルス数Naが5である場合の第１クロックを示す図であり（ｂ）は基準周期の指数Mが3であり、第１クロックのパルス数Naが3である場合の第１クロックを示す図である。
【図７】基準周期の指数Mが3であるときに第１クロックのパルス数Naを1から8まで変化させたときの第１クロックのパルスの配置を示す図である。
【図８】図４に示すクロックイネーブル生成部の内部回路ブロック図である。
【図９】図８に示す間引完了タイミング演算部の内部回路ブロック図である。
【図１０】図８に示す一致タイミング予測部、出力タイミング決定部及びクロックイネーブル出力部のより詳細な回路ブロック図である。
【図１１】図９に示す第２クロック一致タイミング予測部の内部回路ブロック図である。
【図１２】図９に示す第２クロック一致タイミング判定部の内部回路ブロック図である。
【図１３】図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１４】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１５】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１６】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１７】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１８】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図１９】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【図２０】（ａ）及び（ｂ）のそれぞれは、図４に示すクロックイネーブル生成部の動作の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下図面を参照して、本発明に係るクロック制御回路及び半導体装置について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１０】
（実施形態に係るクロック制御回路の概要）
実施形態に係るクロック制御回路は、周波数が相違する2つの歯抜けクロックのパルスの配置から2つの歯抜けクロックのパルスが一致するタイミングを予測する。実施形態に係るクロック制御回路は、予測したタイミングと2つの歯抜けクロックのうち高周波数クロックのパルスの配置とから、歯抜けクロックのパルスが一致するタイミングの前の高周波クロックのパルスでラッチ可能なクロックイネーブルを生成する。実施形態に係るクロック制御回路は、2つの歯抜けクロックのパルスが一致するタイミングの1つ前のパルスでクロックイネーブルをラッチ可能とすることで、クロックイネーブルのタイミング条件の収束を容易にする。
【００１１】
（関連するクロック制御回路を含むシステムの構成及び機能）
図１（ａ）は関連するクロック制御回路を含むシステムの回路ブロック図であり、図１（ｂ）は図１（ａ）に記載されるクロックイネーブル生成部の内部回路ブロック図である。
【００１２】
半導体装置に搭載されるシステム１００は、クロック制御回路１０１と、ＣＰＵ１０２と、メモリ１０３と、論理回路１０４と、バス１０５とを有する。
【００１３】
クロック制御回路１０１は、設定制御部１０６と、クロック生成部１０７と、クロックイネーブル生成部１０８とを有する。設定制御部１０６は、ＣＰＵ１０２からバス１０５を介して入力される分周比指示に基づいて、ＣＰＵ１０２に出力する第１クロックの分周比とバス１０５を介して論理回路１０４に出力する第２クロックの分周比を設定する。クロック生成部１０７は、ＰＬＬと分周回路とを有し、設定制御部１０６が設定した分周比に応じて第１クロック及び第２クロックを生成する。
【００１４】
クロックイネーブル生成部１０８は、分周比設定部１１１と、イネーブル周期演算部１１２と、イネーブル出力部１１３とを有し、第１クロックを有効化するクロックイネーブルをＣＰＵ１０２に出力する。分周比設定部１１１は、設定制御部１０６が設定した第１クロック及び第２クロックの分周比を取得し、取得した分周比をイネーブル周期演算部１１２に提供する。イネーブル周期演算部１１２は、分周比設定部１１１から提供された第１クロック及び第２クロックの分周比の最小公倍数を演算し、演算した最小公倍数に応じた周期毎でイネーブル出力部１１３にクロックイネーブルの出力を指示する。イネーブル出力部１１３は、イネーブル周期演算部１１２からクロックイネーブルの出力を指示される毎に１であるクロックイネーブルを出力する。
【００１５】
ＣＰＵ１０２は、演算部１０９と、バスインタフェース部１１０とを有する。ＣＰＵ１０２は、メモリ１０３に記憶されているプログラム等に応じて適切な手順で実行されるように、バス１０５を介して接続される論理回路１０４の動作を制御する。演算部１０９は、第１クロックに応じで動作する。バスインタフェース部１１０は、メモリ１０３及び論理回路１０４と演算部１０９との間でバス１０５を介して信号を入出力する。バスインタフェース部１１０は、第１クロックをクロックイネーブルでゲーティングしたゲーティング第１クロックに応じて動作する。
【００１６】
メモリ１０３は、ＣＰＵ１０２による処理に用いられるプログラム及びＣＰＵ１０２及び論理回路１０４の処理で使用されるデータ等を記憶する。論理回路１０４は、メモリ１０３に記憶されるデータ等により所望の処理を実行する。論理回路１０４は、バス１０５を介してクロック制御回路１０１から入力される第２クロックに応じて動作する。
【００１７】
図２（ａ）は、クロック制御回路１０１が生成する第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの一例である。図２（ａ）に示す例では、第１クロックの分周比は１であり、第２クロックの分周比は２である。図２（ｂ）は、図２（ａ）に示す第１クロック、第２クロック及びクロックイネーブル、並びにバスインタフェース部１１０の動作に使用されるゲーティング第１クロックのタイミングチャートである。図２（ｃ）は、クロック制御回路１０１が生成する第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの他の例である。図２（ｃ）に示す例では、第１クロックの分周比は２であり、第２クロックの分周比は３である。図２（ｄ）は、図２（ｃ）に示す第１クロック、第２クロック及びクロックイネーブル、並びにバスインタフェース部１１０の動作に使用されるゲーティング第１クロックのタイミングチャートである。図２（ａ）〜２（ｄ）において、ＰＬＬで生成された生成クロックは「Generated Clock」で示され、第１クロックは「Clock0」で示され、第２クロックは「Clock1」で示され、クロックイネーブルは「Clock enable」で示される。また、図２（ｂ）及び２（ｄ）において、ゲーティング第１クロックは、「Gating Clock0」で示される。
【００１８】
図２（ａ）及び２（ｂ）に示す例では、第１クロックClock0は、分周比が1なので、生成クロックGenerated Clockと同一の周期を有し、第２クロックClock1は、分周比が2なので、生成クロックGenerated Clockの2倍の周期を有する。第１クロックの分周比1と、第２クロックの分周比２との最小公倍数は2であるので、クロックイネーブルClock enableは、生成クロックGenerated Clockの周期の2倍の周期を有する。ＣＰＵ１０２のバスインタフェース部１１０は、第１クロックClock0をクロックイネーブルClock enableでゲーティングしたゲーティング第１クロックGating Clock0に応じて動作するので、生成クロックGenerated Clockの2倍の周期で動作する。ゲーティング第１クロックGating Clock0で動作するＣＰＵ１０２のバスインタフェース部１１０及び第２クロックClock1で動作する論理回路１０４の双方は、生成クロックGenerated Clockの２倍の周期で動作するので同期動作が可能である。
【００１９】
図２（ｃ）及び２（ｄ）に示す例では、第１クロックClock0は、分周比が2なので、生成クロックGenerated Clockの2倍の周期を有し、第２クロックClock1は、分周比が3なので、生成クロックGenerated Clockの3倍の周期を有する。第１クロックの分周比2と、第２クロックの分周比3との最小公倍数は6であるので、クロックイネーブルClock enableは、生成クロックGenerated Clockの周期の6倍の周期を有する。ＣＰＵ１０２のバスインタフェース部１１０は、第１クロックClock0をクロックイネーブルClock enableでゲーティングしたゲーティング第１クロックGating Clock0に応じて動作するので、生成クロックGenerated Clockの6倍の周期で動作する。ＣＰＵ１０２のバスインタフェース部１１０は生成クロックGenerated Clockの6倍の周期で動作し、論理回路１０４は生成クロックGenerated Clockの3倍の周期で動作するので同期動作が可能である。
【００２０】
クロック制御回路１０１は、第１クロック及び第２クロックの分周比の最小公倍数の周期毎にクロックイネーブルを出力してＣＰＵ１０２のバスインタフェース部１１０の動作を制御する。システム１００では、周期が相違するクロックの分周比の最小公倍数に応じた周期を有するクロックイネーブルを使用することにより、クロックの周期が相違するＣＰＵ１０２及び論理回路１０４の動作を同期させることが可能になる。
【００２１】
しかしながら、近年のＳｏＣの高集積化、大規模化に伴って、クロック制御回路１０１の機能では対応が容易ではない課題が生じている。第１の課題は、ＳｏＣの高集積化、大規模化に伴って伝送される配線長が長くなるおそれがあることに起因するクロックイネーブルのタイミング条件を収束可能とする構成への対応である。第２の課題は、低電力化のためにＣＰＵの負荷に応じてＣＰＵの動作周波数をより細かい分周比で制御可能とする構成への対応である。
【００２２】
第１の課題への対応の一例は、クロック制御回路とＣＰＵとの間に第１クロックで動作するフリップフロップを配置することによりクロックイネーブルをラッチすることである。クロック制御回路とＣＰＵとの間に配置された第１クロックで動作するフリップフロップによりクロックイネーブルをラッチすることにより、クロックイネーブルのタイミング条件の収束が容易になる。
【００２３】
第２の課題への対応の一例は、ＰＬＬで生成された生成クロック信号からパルスを間引きして、いわゆる「歯抜けクロック」として第１クロック及び第２クロックを生成することである。「歯抜けクロック」として第１クロック及び第２クロックを生成することにより、ＣＰＵの負荷に応じてＣＰＵの動作周波数をより細かい分周比で制御可能になる。
【００２４】
しかしながら、第１の課題をクロック制御回路１０１により解決することは容易ではなく、第１の課題及び第２の課題の双方をクロック制御回路１０１により同時に解決することは更に容易ではない。
【００２５】
図３（ａ）は、第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの一例である。図３（ｂ）は、図３（ａ）に示す第１クロック、第２クロック及びクロックイネーブル、並びにバスインタフェース部１１０の動作に使用されるゲーティング第１クロックのタイミングチャートである。図３（ｃ）は、第１クロック、第２クロック及びクロックイネーブルのタイミングチャートの他の例である。図３（ｄ）は、図３（ｃ）に示す第１クロック、第２クロック及びクロックイネーブル、並びにバスインタフェース部１１０の動作に使用されるゲーティング第１クロックのタイミングチャートである。図３（ａ）〜３（ｄ）において、ＰＬＬで生成された生成クロックは「Generated Clock」で示され、第１クロックは「Clock0」で示され、第２クロックは「Clock1」で示され、クロックイネーブルは「Clock enable」で示される。また、図３（ｂ）及び３（ｄ）において、ゲーティング第１クロックは、「Gating Clock0」で示される。
【００２６】
図３（ａ）に示す例では、第１クロックの分周比は3/4であり、第２クロックの分周比は2/4である。第１クロックは２サイクル目のパルスを間引きし、第２クロックは２サイクル目及び４サイクル目のパルスを間引きして、「歯抜けクロック」として生成される。また、図３（ａ）に示す例では、クロックイネーブルは、第１クロック及び第２クロックの双方が同時に立上り遷移するときの立上りエッジを含むように出力される。図３（ｃ）に示す例では、図３（ａ）に示す例と同様に、第１クロックの分周比は3/4であり、第２クロックの分周比は2/4である。しかしながら、図３（ｃ）に示す例では、クロックイネーブルは、第１クロック及び第２クロックの双方が同時に立上り遷移するときの生成クロックの１周期前の立上りエッジを含むように出力される。
【００２７】
図３（ａ）及び３（ｂ）に示す例では、「歯抜けクロック」として第１クロック及び第２クロックを生成することにより、第２の課題への対応が可能になる。しかしながら、図３（ａ）及び３（ｂ）に示す例では、第１クロック及び第２クロックの双方が同時に立上り遷移するときの立上りエッジを含むように出力されるので、第２の課題は解決されない。
【００２８】
図３（ｃ）及び３（ｄ）に示す例では、「歯抜けクロック」として第１クロック及び第２クロックを生成することに加えて、第１クロック及び第２クロックが同時に遷移するときの生成クロックの１周期前にクロックイネーブルが出力される。しかしながら、図３（ｄ）に示すように、第１クロック及び第２クロックが同時に遷移するときの生成クロックの１周期前にクロックイネーブルが出力されても、第１クロックが歯抜けクロックであるため、クロックイネーブルがラッチされないおそれがある。したがって、図３（ｃ）及び３（ｄ）に示す例においても、第２の課題は解決されない。
【００２９】
そこで、実施形態に係るクロック制御回路は、第１の課題を解決可能な構成、又は第１の課題及び第２の課題を同時に解決可能な構成を実現することを目的とするものである。
【００３０】
（実施形態に係るクロック制御回路を含むシステムの構成及び機能）
図４は、実施形態に係るクロック制御回路を含むシステムの回路ブロック図である。
【００３１】
半導体装置に搭載されるシステム１は、クロック制御回路１０１の代わりに実施形態に係るクロック制御回路１０が配置されることが、関連するシステム１００と相違する。また、半導体装置に搭載されるシステム１は、クロック制御回路１０とＣＰＵ１０２との間に配置され、クロックイネーブルを第１クロックでラッチするフリップフロップ１４を有することが、システム１００と更に相違する。クロック制御回路１０及びフリップフロップ１４以外のシステム１の構成素子は、同一符号が付されたシステム１００の構成素子と同様の構成及び機能を有するので、ここでは詳細な説明は省略する。
【００３２】
クロック制御回路１０は、設定制御部１１と、クロック生成部１２と、クロックイネーブル生成部１３とを有する。
【００３３】
設定制御部１１は、ＣＰＵ１０２からバス１０５を介して入力される分周比指示に基づいて、ＣＰＵ１０２に出力する第１クロックの分周比とバス１０５を介して論理回路１０４に出力する第２クロックの分周比を設定する。第１クロック及び第２クロックの分周比は、基準周期２Mと、基準周期に含まれる第１クロックのパルス数Na及び第２クロックのパルス数Nbとにより設定される。例えば、第１クロックの分周比が5/8であり、第２クロックの分周比が3/8であるとき、基準周期の指数Mは3であり、第１クロックのパルス数Naは5であり、第２クロックのパルス数Nbは3である。
【００３４】
図５（ａ）はクロック生成部１２の内部回路ブロック図であり、図５（ｂ）は図５（ａ）に示す第１クロック生成部の内部回路ブロック図である。
【００３５】
クロック生成部１２は、ＰＬＬ２０と、クロック生成カウンタ２１と、第１クロック生成部２２と、第２クロック生成部２３とを有する。クロック生成部１２は、所定の発振周期を有する生成クロックを生成し、クロック生成カウンタ２１、第１クロック生成部２２及び第２クロック生成部２３に出力する。また、クロック生成部１２は、生成クロックと同一の周期を有するクロックβaClockをクロックイネーブル生成部１３に出力する。
【００３６】
クロック生成カウンタ２１は、基準周期の指数Mと、ＰＬＬ２０が生成した生成クロックが入力され、生成クロックに応じて、基準周期2Mに応じて0から（2M−1）までの間を繰り返しカウントする。例えば、基準周期の指数Mは3であるとき、クロック生成カウンタ２１は、基準周期8に応じて0から7までの間を繰り返しカウントする。クロック生成カウンタ２１は、生成クロックに応じてカウントしたカウント値CNTVを第１クロック生成部２２及び第２クロック生成部２３に出力する。
【００３７】
第１クロック生成部２２は、第１演算部２４と、第２演算部２５と、第３演算部２６と、クロックゲーティングバッファ（以下、ＧＣＢとも称する）２７とを有する。第１クロック生成部２２は、以下に説明する所定のパルス配置アルゴリズムに従って生成クロックから間引くパルスを決定することにより、第１クロックのパルスの配置を決定する。
【００３８】
第１演算部２４は、基準周期の指数Mと、第１クロックのパルス数Naとから分周比（Na/2M）が（2β-1／2M）＜（Na/2M）≦（2β／2M）の関係を満たす指数βを演算する。すなわち、第１演算部２４の演算式Ｆ１（M,Na）は、
【００３９】
【数１】
2017021539.tif 000003
【００４０】
として規定される。
【００４１】
第２演算部２５は、基準周期の指数Mと、第１クロックのパルス数Naと、第１演算部２４が演算した指数βからパルスを間引く条件を相違させる境界Borderを演算する。すなわち、第２演算部２５の演算式Ｆ２（M,Na,β）は、
【００４２】
【数２】
2017021539.tif 000004
【００４３】
として規定される。
【００４４】
第３演算部２６は、基準周期の指数M、指数β、クロック生成カウンタ２１から入力されるカウント値CNTV及び境界Borderから、間引かずに出力するパルスの位置を規定するパルス通過条件enableを演算する。パルス通過条件enableは、カウント値CNTVが境界Border未満のときに、カウント値CNTVが2M+1-βとなるときにパルスを間引かずに出力することを示す1となる。また、パルス通過条件enableは、カウント値CNTVが境界Border以上のときに、カウント値CNTVが2M-βとなるときにパルスを間引かずに出力することを示す1となる。すなわち、第３演算部２６の演算式Ｆ３（M,β,CNTV,Border）は、
【００４５】
【数３】
2017021539.tif 000005
【００４６】
として規定される。
【００４７】
ＧＣＢ２７は、生成クロックGenerated Clockと、パルス通過条件enableとが入力され、パルス通過条件enableが１になった次の周期の生成クロックGenerated Clockを間引かずに出力する。
【００４８】
（第１クロック生成部２２の動作）
基準周期の指数Mが3であり、第１クロックのパルス数Naが5である場合、及び基準周期の指数Mが3であり、第１クロックのパルス数Naが3である場合を例に第１クロック生成部２２の動作を説明する。
【００４９】
図６（ａ）は、基準周期の指数Mが3であり、第１クロックのパルス数Naが5である場合に第１クロック生成部２２が生成する第１クロックを示す図である。図６（ｂ）は、基準周期の指数Mが3であり、第１クロックのパルス数Naが3である場合に第１クロック生成部２２が生成する第１クロックを示す図である。図６（ａ）及び６（ｂ）において、クロック生成カウンタ２１がカウント値は「CNTV」で示され、第３演算部２６が演算するパルス通過条件は「enable」で示される。また、ＰＬＬ２０が生成する生成クロックは「Generated Clock」で示され、生成される第１クロックは「Clock0」で示される。
【００５０】
基準周期の指数Mが3であり、第１クロックのパルス数Naが5である場合、基準周期の指数Mが3であるので、基準周期は23=8である。第１演算部２４は、演算式Ｆ１（M,Na）により指数βを演算する。第１クロックのパルス数Naは5であるので、（22/23）＜（5/23）≦（23/23）を充足するβは3となる。次いで、第２演算部２５は、演算式Ｆ２（M,Na,β）により境界Borderを演算する。基準周期の指数Mは3であり、第１クロックのパルス数Naは5であり、第１演算部２４が演算した指数βは3であるので、（23-5）×23+1-3から、境界Borderは6になる。次いで、第３演算部２６は、演算式Ｆ３（M,β,CNTV,Border）によりパルス通過条件enableが１になるカウント値CNTVを演算する。基準周期の指数Mは3であり、第１演算部２４が演算した指数βは3であり、第２演算部２５が演算した境界Borderが６であるので、演算式Ｆ３（M,β,CNTV,Border）は以下のようになる。
【００５１】
【数４】
2017021539.tif 000006
【００５２】
そして、ＧＣＢ２７は、パルス通過条件enableが１になった次の周期の生成クロックGenerated Clockを間引かずに出力する。
【００５３】
基準周期の指数Mが3であり、第１クロックのパルス数Naが3である場合、第１クロックのパルス数Naは3であるので、第１演算部２４は、演算式Ｆ１（M,Na）が示す（21/23）＜（3/23）≦（22/23）を充足するβは2であると演算する。次いで、第２演算部２５は、基準周期の指数Mは3であり、第１クロックのパルス数Naは3であり、第１演算部２４が演算した指数βは2であるので、（22-3）×23+1-2から、境界Borderは4であると演算する。次いで、第３演算部２６は、演算式Ｆ３（M,β,CNTV,Border）によりパルス通過条件enableが１になるカウント値CNTVを演算する。基準周期の指数Mは3であり、第１演算部２４が演算した指数βは2であり、第２演算部２５が演算した境界Borderが4であるので、演算式Ｆ３（M,β,CNTV,Border）は以下のようになる。
【００５４】
【数５】
2017021539.tif 000007
【００５５】
そして、ＧＣＢ２７は、パルス通過条件enableが1になった次の周期の生成クロックGenerated Clockを間引かずに出力する。
【００５６】
図７は、基準周期の指数Mが3であるときに第１クロックのパルス数Naを1から8まで変化させたときに第１クロック生成部２２が生成する第１クロックのパルスの配置を示す図である。図７において、クロック生成カウンタ２１がカウントするカウント値は「CNTV」で示され、第１クロックのパルス数は「Na」で示される。
【００５７】
第１クロックのパルス数Naが7のときに生成される第１クロックClock0のパルスの配置は、第１クロックClock0のパルス数Naが8のときに生成される第１クロックからカウント値CNTVが2であるときのパルスを間引いた配置である。また、第１クロックのパルス数Naが6のときに生成される第１クロックClock0のパルスの配置は、第１クロックClock0のパルス数Naが7のときに生成される第１クロックからカウント値CNTVが4であるときのパルスを間引いた配置である。以下、同様に、第１クロックClock0の基準周期におけるパルスの配置は、基準周期に含まれるパルスの数が1つ多い第１クロックClock0に含まれるパルスの何れか1つを間引いた配置である。より具体的には、第１クロック生成部２２は、境界Borderと、パルスの位置とを比較する。第１クロック生成部２２は、演算式Ｆ３（M,β,CNTV,Border）に示すように、パルスが境界Borderの前に位置する場合と、パルスが境界Borderの後に位置する場合とでパルスを間引く条件を相違させる。
【００５８】
第２クロック生成部２３は、第１クロック生成部２２と同一の構成を有するので、ここでは詳細な説明を省略する。
【００５９】
（クロックイネーブル生成部１３の構成及び機能）
図８は、クロックイネーブル生成部１３の内部回路ブロック図である。
【００６０】
クロックイネーブル生成部１３は、間引完了タイミング演算部３０と、一致タイミング予測部４０と、出力タイミング決定部５０と、クロックイネーブル出力部６０と、カウンタ７０とを有する。間引完了タイミング演算部３０は、分周比等から第１クロック及び第２クロックの間引きが完了するタイミングを演算する。一致タイミング予測部４０は、間引完了タイミング演算部３０が演算した第１クロック及び第２クロックの間引きが完了するタイミング等から第１クロックのパルスと第２パルスが一致するタイミングを予測する。出力タイミング決定部５０は、一致タイミング予測部４０が予測した第１クロックのパルスと第２クロックのパルスが一致するタイミングと、第１クロックのパルスの配置とからクロックイネーブルを出力するタイミングを決定する。クロックイネーブル出力部６０は、クロックイネーブル出力部６０が決定したクロックイネーブルを出力するタイミングとカウンタ７０のカウント値とが一致したときに、クロックイネーブルを出力する。カウンタ７０は、間引完了タイミング演算部３０が演算する第１クロックの指数βaで規定される０〜２βaの間で繰り返しクロックβaClockに応じてカウントしたカウント値CNTVaを、出力タイミング決定部５０及びクロックイネーブル出力部６０に出力する。
【００６１】
図９は、間引完了タイミング演算部３０の内部回路ブロック図である。
【００６２】
間引完了タイミング演算部３０は、第１クロック指数演算部３１と、第２クロック指数演算部３２と、第１クロック間引完了タイミング演算部３３と、第２クロック間引完了タイミング演算部３４とを有する。第１クロック指数演算部３１及び第２クロック指数演算部３２は、第１演算部２４と同様な構成を有し、第１クロックの指数βa及び第２クロックの指数βbのそれぞれを演算式Ｆ１（M,Na）により演算する。第１クロック間引完了タイミング演算部３３及び第２クロック間引完了タイミング演算部３４は、第１クロック及び第２クロックのそれぞれのパルスの間引きが完了する間引完了タイミングSCompA及びSCompBを演算する。第１クロック間引完了タイミング演算部３３及び第２クロック間引完了タイミング演算部３４の演算式Ｆ４（N,β）は、
【００６３】
【数６】
2017021539.tif 000008
【００６４】
として規定される。例えば、パルス数が７の場合、間引完了タイミングSCompは（23-７）×2=2となり、パルス数が６の場合、間引完了タイミングSCompは（23-6）×2=4となり、パルス数が5の場合、間引完了タイミングSCompは（23-5）×2=6となる。このように、パルスの数が4より多く且つ8以下のとき、間引完了タイミングSCompは、8つのパルスの位置の中で最後に間引きされたパルスの位置を示す。また、パルス数が4の場合、間引完了タイミングSCompは（22-4）×2=0となり、パルス数が3の場合、間引完了タイミングSCompは（22-3）×2=2となり、パルス数が2の場合、間引完了タイミングSCompは（21-2）×2=0となる。このように、間引完了タイミングSCompは、パルスの数が2より多く且つ4以下のとき、4つのパルスの位置の中で最後に間引きされたパルスの位置を示す。また、間引完了タイミングSCompは、パルスの数が2以下のとき、2つのパルスの位置の中で最後に間引きされたパルスの位置を示す。同様に、間引完了タイミングSCompは、パルスの数が8より多く且つ16以下のとき16個のパルスの位置の中で最後に間引きされたパルスの位置を示す。また、間引完了タイミングSCompは、パルスの数が16より多く且つ32以下のとき32個のパルスの位置の中で最後に間引きされたパルスの位置を示す。
【００６５】
図１０は、一致タイミング予測部４０、出力タイミング決定部５０及びクロックイネーブル出力部６０のより詳細な回路ブロック図である。
【００６６】
一致タイミング予測部４０は、第２クロック一致タイミング予測部４１と、第１クロック一致タイミング予測部４２とを有する。第２クロック一致タイミング予測部４１は、第１クロックと第２クロックのパルスの位置が一致するときの第２クロックの基準周期におけるパルスの配置を決定する。第１クロック一致タイミング予測部４２は、第２クロック一致タイミング予測部４１が決定した第２クロックのパルスの配置に基づいて第１クロックと第２クロックのパルスの位置が一致するときの第１クロックの基準周期におけるパルスの配置を決定する。
【００６７】
第２クロック一致タイミング予測部４１は、基準周期の指数M、第１クロック及び第２クロックのパルス数Na、Nb、カウンタ７０のクロックと同一のクロックβaClockが入力される。また、第２クロック一致タイミング予測部４１は、第２クロックの指数βb、イネーブルNextPulse及び第２クロックの間引完了タイミングSCompBが更に入力される。第２クロック一致タイミング予測部４１は、入力された値を使用して演算式Ｆ５（Ｎａ,Ｎｂ,Ｍ,βaClock,βb,NextPulse,SComp）で決定される第２クロック一致タイミングPairPulseBは、
【００６８】
【数７】
2017021539.tif 000009
【００６９】
として規定される。すなわち、第２クロック一致タイミングPairPulseBの初期値は、第１クロック及び第２クロックのパルス数Na、Nb並びに第２クロックの間引完了タイミングSCompBにより規定される。第２クロックのパルス数Nbが１のとき、第２クロック一致タイミングPairPulseBの初期値は0であり、第２クロックの間引完了タイミングSCompBが0のとき、第２クロック一致タイミングPairPulseBの初期値は1である。また、第２クロックの間引完了タイミングSCompBが0よりも大きいとき又は第１クロック及び第２クロックのパルス数Na、Nbが2Mに等しいとき、第２クロック一致タイミングPairPulseBの初期値は2である。第２クロック一致タイミング予測部４１は、初期値を規定した後、イネーブルNextPulse及びクロックβaClockに応じて第２クロック一致タイミングPairPulseBを規定する。第２クロック一致タイミング予測部４１は、イネーブルNextPulseが0のとき、クロックβaClockが入力されても現在の値を保持する。第２クロック一致タイミング予測部４１は、イネーブルNextPulseが1であり且つ現在の第２クロック一致タイミングPairPulseBが（2βb-1）のとき、クロックβaClockの入力に応じて第２クロック一致タイミングPairPulseBを0にする。第２クロック一致タイミング予測部４１は、イネーブルNextPulseが1であり且つ第２クロック一致タイミングPairPulseBが間引完了タイミングSCompBより小さいとき、クロックβaClockの入力に応じて第２クロック一致タイミングPairPulseBを+2する。第２クロック一致タイミング予測部４１は、イネーブルNextPulseが1であり且つ現在の第２クロック一致タイミングPairPulseBが間引完了タイミングSCompB以上のとき、クロックβaClockの入力に応じて第２クロック一致タイミングPairPulseBを+1する。
【００７０】
図１１は、第２クロック一致タイミング予測部４１の内部回路ブロック図である。
【００７１】
第２クロック一致タイミング予測部４１は、マルチプレクサ４３と、フリップフロップ４４とを有する。マルチプレクサ４３は、現在の第２クロック一致タイミングPairPulseB、間引完了タイミングSCompBにより規定される条件に応じて、0若しくは現在の第２クロック一致タイミングPairPulseBから正方向に1つ又は2つ移動するかを選択する。フリップフロップ４４は、イネーブルNextPulseが0であるときに、クロックβaClockが入力されても現在の値を保持する。フリップフロップ４４は、イネーブルNextPulseが1であるときに、クロックβaClockの入力に応じてマルチプレクサ４３から出力される信号を第２クロック一致タイミングPairPulseBとして出力する。
【００７２】
第１クロック一致タイミング予測部４２は、第２クロック一致タイミング予測部４１が予測した第２クロック一致タイミングPairPulseBから第１クロック一致タイミングPairPulseAを予測する。第１クロック一致タイミング予測部４２の演算式Ｆ６（βa,βb,PairPulseB）は、
【００７３】
【数８】
2017021539.tif 000010
【００７４】
として規定される。
【００７５】
出力タイミング決定部５０は、第２クロック一致タイミング判定部５１と、第１クロックタイミング減算値演算部５２と、クロックイネーブルタイミング決定部５３と、ＯＲ素子５４とを有する。
【００７６】
第２クロック一致タイミング判定部５１は、第２クロック一致タイミングPairPulseBが0になるタイミングで1になる第２クロックタイミングリセットAroundを生成する。第２クロック一致タイミング判定部５１の演算式Ｆ７（βaClock,NextPulse,βa,βb,CNTVa,PairPulseB）は、
【００７７】
【数９】
2017021539.tif 000011
【００７８】
として規定される。すなわち、第２クロック一致タイミング判定部５１は、第２クロックの指数βbが0以外のとき第２クロックタイミングリセットAroundの初期値を0とし、第２クロックの指数βbが0のとき第２クロックタイミングリセットAroundの初期値を1とする。第２クロック一致タイミング判定部５１は、初期値を規定した後、条件判定及びクロックβaClockに応じて第２クロックタイミングリセットAroundを規定する。第２クロック一致タイミング判定部５１は、カウンタ値CNTVaが2βa-1のとき、クロックβaClockの入力に応じて第２クロックタイミングリセットAroundを0にする。第２クロック一致タイミング判定部５１は、現在のカウンタ値CNTVaが2βa-1のとき、クロックβaClockの入力に応じて第２クロックタイミングリセットAroundを0にする。第２クロック一致タイミング判定部５１は、現在の第２クロック一致タイミングPairPulseBが2βa-1であり且つイネーブルNextPulseが1であるとき、クロックβaClockの入力に応じて第２クロックタイミングリセットAroundを1にする。また、第２クロック一致タイミング判定部５１は、第2クロックの指数βbが0であるとき、クロックβaClockの入力に応じて第２クロックタイミングリセットAroundを1にする。
【００７９】
図１２は、第２クロック一致タイミング判定部５１の内部回路ブロック図である。
【００８０】
第２クロック一致タイミング判定部５１は、マルチプレクサ５５と、フリップフロップ５６とを有する。マルチプレクサ５５は、現在のカウンタ値CNTVa、現在の第２クロック一致タイミングPairPulseB及びイネーブルNextPulseに基づく条件判定に応じて、0又は1の何れかを出力する。フリップフロップ５６は、現在のカウンタ値CNTVa、現在の第２クロック一致タイミングPairPulseB及びイネーブルNextPulseに基づく条件判定、及びにクロックβaClockの入力に応じてマルチプレクサ５５から入力される信号を出力する。
【００８１】
第１クロックタイミング減算値演算部５２は、パルスが一致する第１クロック一致タイミングPairPulseAの1つ前の第１クロックのパルスでラッチ可能なクロックイネーブルClock Enableを生成するために第１クロックタイミング減算値EnSubを演算する。第１クロックタイミング減算値演算部５２の演算式Ｆ８（PairPulseA,SCompA）は、
【００８２】
【数１０】
2017021539.tif 000012
【００８３】
として規定される。第１クロック一致タイミングPairPulseAが第１クロックの間引完了タイミングSCompA以下であるとき、第１クロックの1つ前のパルスの位置は、第１クロック一致タイミングPairPulseAaの2つ前のタイミングになる。第１クロックのパルスでラッチ可能なクロックイネーブルClock Enableのタイミングは、第１クロックの1つ前なので、第１クロック一致タイミングPairPulseAaの3つ前のタイミングになる。第１クロック一致タイミングPairPulseAが第１クロックの間引完了タイミングSCompAより大きいとき、第１クロックは間引きされていないので、第１クロックの1つ前のパルスの位置は、第１クロック一致タイミングPairPulseAaの1つ前のタイミングになる。第１クロックのパルスでラッチ可能なクロックイネーブルClock Enableのタイミングは、第１クロックの1つ前なので、第１クロック一致タイミングPairPulseAaの2つ前のタイミングになる。また、第１クロック一致タイミングPairPulseAが０のとき、第１クロック一致タイミングPairPulseAaの2つ前のタイミングになる。
【００８４】
クロックイネーブルタイミング決定部５３は、クロックイネーブルを出力するクロックイネーブル出力タイミングEnableTimeを決定する。クロックイネーブルタイミング決定部５３の演算式Ｆ９（PairPulseA,βa,Around,EnSub）は、
【００８５】
【数１１】
2017021539.tif 000013
【００８６】
として規定される。クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが0のとき、クロックイネーブル出力タイミングEnableTimeを第１クロック一致タイミングPairPulseAから第１クロックタイミング減算値EnSubを減算した値として規定する。クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが1のとき、クロックイネーブル出力タイミングEnableTimeを2βaと第１クロック一致タイミングPairPulseAとの和から第１クロックタイミング減算値EnSubを減算した値とする。
【００８７】
また、クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが0であり且つ第１クロック一致タイミングPairPulseAが第１クロックタイミング減算値EnSubよりも小さいときに、イネーブル条件Nextを1にする。クロックイネーブルタイミング決定部５３の演算式Ｆ９（PairPulseA,βa,Around,EnSub）は、
【００８８】
【数１２】
2017021539.tif 000014
【００８９】
として更に規定される。ＯＲ素子５４は、イネーブル条件Next又はクロックイネーブルClockEnableの少なくとも何れか一方が1のとき、イネーブルNextPulseを1にする。
【００９０】
クロックイネーブル出力部６０は、カウンタ７０のカウンタ値がクロックイネーブル出力タイミングEnableTimeと一致したときにクロックイネーブルClockEnableを1にする。クロックイネーブル出力部６０の演算式Ｆ１０（Na,Nb,CNTVa,EnableTime）は、
【００９１】
【数１３】
2017021539.tif 000015
【００９２】
として規定される。
【００９３】
（クロックイネーブル生成部１３の動作）
図１３は、クロックイネーブル生成部１３の動作の一例を示す図である。図１３において、基準周期の指数Mは3であり、第１クロックのパルス数Naは5であり、第２クロックのパルス数Nbは3である。また、図１３において、一致タイミング予測部４０が演算する第１クロックの指数βaは3であり、第２クロックの指数βbは2であり、第１クロックの間引完了タイミングSCompAは6であり、第２クロックの間引完了タイミングSCompBは2である。第１クロックの指数βaは3であるので、カウンタ値CNTVaは0〜7の間でβaClockに応じてカウントされる。
【００９４】
カウント値CNTVaが0のとき、第２クロックの間引完了タイミングSCompBが0より大きく、第２クロック一致タイミング予測部４１は、演算式Ｆ５（Na,Nb,M,βaClock,βb,NextPulse,SComp）から第２クロック一致タイミングPairPulseBの初期値を2とする。第２クロック一致タイミングPairPulseBの初期値が2なので、第１クロック一致タイミング予測部４２は、演算式Ｆ６（βa,βb,PairPulseB）から、第１クロック一致タイミングPairPulseAを
【００９５】
【数１４】
2017021539.tif 000016
【００９６】
と予測する。第２クロック一致タイミング判定部５１は、カウント値CNTVaが0なので、演算式Ｆ７（βaClock,NextPulse,βa,βb,CNTVa,PairPulseB）から第２クロックタイミングリセットAroundの初期値を0とする。第１クロックタイミング減算値演算部５２は、第１クロック一致タイミングPairPulseAaが0より大きく且つ第１クロックの間引完了タイミングSCompA以下なので、演算式Ｆ８（PairPulseA,SCompA）から第１クロックタイミング減算値EnSubを3とする。クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが0なので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からクロックイネーブル出力タイミングEnableTimeをPairPulseA-EnSub=1と演算する。また、クロックイネーブルタイミング決定部５３は、クロックイネーブル出力タイミングEnableTimeが0より大きいので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からイネーブル条件Nextを0とする。クロックイネーブル出力部６０は、カウント値CNTVaがクロックイネーブル出力タイミングEnableTimeと一致しないので、クロックイネーブルClockEnableを0とする。また、イネーブル条件Next及びクロックイネーブルClockEnableの双方が0なので、イネーブルNextPulseは0となり、第２クロック一致タイミング予測部４１は、第２クロック一致タイミングPairPulseBを2のまま維持する。
【００９７】
カウント値CNTVaが１のとき、クロックイネーブル出力部６０は、カウント値CNTVaとクロックイネーブル出力タイミングEnableTimeとが双方1となり一致するので、クロックイネーブルClockEnableを1とする。クロックイネーブルClockEnableが1になると、イネーブルNextPulseは1となり、第２クロック一致タイミング予測部４１は、次のクロックβaClockに応じて第２クロック一致タイミングPairPulseBを変更する。
【００９８】
カウント値CNTVaが2のとき、イネーブルNextPulseが1であり且つ第２クロック一致タイミングPairPulseBが第２クロックの間引完了タイミングSCompB以上である。このため、第２クロック一致タイミング予測部４１は、演算式Ｆ５（Na,Nb,M,βaClock,βb,NextPulse,SComp）から第２クロック一致タイミングPairPulseBを（PairPulseB<=PairPulse+1）より3とする。第１クロック一致タイミング予測部４２は、演算式Ｆ６（βa,βb,PairPulseB）から、第１クロック一致タイミングPairPulseAを3×2=6とする。第２クロック一致タイミング判定部５１は、演算式Ｆ７（βaClock,NextPulse,βa,βb,CNTVa,PairPulseB）から第２クロックタイミングリセットAroundを0とする。第１クロックタイミング減算値演算部５２は、第１クロック一致タイミングPairPulseAaが0より大きく且つ第１クロックの間引完了タイミングSCompA以下なので、演算式Ｆ８（PairPulseA,SCompA）から第１クロックタイミング減算値EnSubを3とする。クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが0なので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からクロックイネーブル出力タイミングEnableTimeをPairPulseA-EnSub=3と演算する。また、クロックイネーブルタイミング決定部５３は、クロックイネーブル出力タイミングEnableTimeが0より大きいので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からイネーブル条件Nextを0とする。クロックイネーブル出力部６０は、カウント値CNTVaがクロックイネーブル出力タイミングEnableTimeと一致しないので、クロックイネーブルClockEnableを0とする。また、イネーブル条件Next及びクロックイネーブルClockEnableの双方が0なので、イネーブルNextPulseは0となり、第２クロック一致タイミング予測部４１は、第２クロック一致タイミングPairPulseBを3のまま維持する。
【００９９】
カウント値CNTVaが3のとき、クロックイネーブル出力部６０は、カウント値CNTVaとクロックイネーブル出力タイミングEnableTimeとが双方1となり一致するので、クロックイネーブルClockEnableを1とする。クロックイネーブルClockEnableが1になると、イネーブルNextPulseは1となり、第２クロック一致タイミング予測部４１は、次のクロックβaClockに応じて第２クロック一致タイミングPairPulseBを変更する。また、第２クロック一致タイミングPairPulseBが2βb-1と一致するので、第２クロック一致タイミング判定部５１は、のクロックβaClockに応じて第２クロックタイミングリセットAroundを変更する。
【０１００】
カウント値CNTVaが4のとき、イネーブルNextPulseが1であり且つ第２クロック一致タイミングPairPulseBが2βb-1と一致する。このため、第２クロック一致タイミング予測部４１は、演算式Ｆ５（Na,Nb,M,βaClock,βb,NextPulse,SComp）から第２クロック一致タイミングPairPulseBを0とする。第１クロック一致タイミング予測部４２は、演算式Ｆ６（βa,βb,PairPulseB）から、第１クロック一致タイミングPairPulseAを0×2=0とする。第２クロック一致タイミング判定部５１は、演算式Ｆ７（βaClock,NextPulse,βa,βb,CNTVa,PairPulseB）から第２クロックタイミングリセットAroundを1とする。第１クロックタイミング減算値演算部５２は、第１クロック一致タイミングPairPulseAaが0なので、演算式Ｆ８（PairPulseA,SCompA）から第１クロックタイミング減算値EnSubを2とする。クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが1なので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からクロックイネーブル出力タイミングEnableTimeを8+PairPulseA-EnSub=6と演算する。また、クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが1なので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からイネーブル条件Nextを0とする。クロックイネーブル出力部６０は、カウント値CNTVaがクロックイネーブル出力タイミングEnableTimeと一致しないので、クロックイネーブルClockEnableを0とする。また、イネーブル条件Next及びクロックイネーブルClockEnableの双方が0なので、イネーブルNextPulseは0となり、第２クロック一致タイミング予測部４１は、第２クロック一致タイミングPairPulseBを0のまま維持する。
【０１０１】
カウント値CNTVaが5のとき、クロックイネーブル出力部６０は、カウント値CNTVaとクロックイネーブル出力タイミングEnableTimeとは一致しないので、クロックイネーブルClockEnableを0とする。クロックイネーブルClockEnableが0になると、イネーブルNextPulseは0となり、第２クロック一致タイミング予測部４１は、次のクロックβaClockに応じて第２クロック一致タイミングPairPulseBを変更せずに0を維持する。
【０１０２】
カウント値CNTVaが6のとき、クロックイネーブル出力部６０は、カウント値CNTVaとクロックイネーブル出力タイミングEnableTimeとが一致するので、クロックイネーブルClockEnableを1とする。クロックイネーブルClockEnableが1になると、イネーブルNextPulseは1となり、第２クロック一致タイミング予測部４１は、次のクロックβaClockに応じて第２クロック一致タイミングPairPulseBを変更する。
【０１０３】
カウント値CNTVaが7のとき、イネーブルNextPulseが1であり且つ第２クロック一致タイミングPairPulseBが第２クロックの間引完了タイミングSCompBより小さい。第２クロック一致タイミング予測部４１は、演算式Ｆ５（Na,Nb,M,βaClock,βb,NextPulse,SComp）から第２クロック一致タイミングPairPulseBを0+2=2とする。第１クロック一致タイミング予測部４２は、演算式Ｆ６（βa,βb,PairPulseB）から、第１クロック一致タイミングPairPulseAを2×2=4とする。第２クロック一致タイミング判定部５１は、演算式Ｆ７（βaClock,NextPulse,βa,βb,CNTVa,PairPulseB）から第２クロックタイミングリセットAroundを1に維持する。第１クロックタイミング減算値演算部５２は、第１クロック一致タイミングPairPulseAaが4なので、演算式Ｆ８（PairPulseA,SCompA）から第１クロックタイミング減算値EnSubを3とする。クロックイネーブルタイミング決定部５３は、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からクロックイネーブル出力タイミングEnableTimeをPairPulseA-EnSub=1と演算する。また、クロックイネーブルタイミング決定部５３は、第２クロックタイミングリセットAroundが1なので、演算式Ｆ９（PairPulseA,βa,Around,EnSub）からイネーブル条件Nextを0とする。クロックイネーブル出力部６０は、カウント値CNTVaがクロックイネーブル出力タイミングEnableTimeと一致しないので、クロックイネーブルClockEnableを0とする。また、イネーブル条件Next及びクロックイネーブルClockEnableの双方が0なので、イネーブルNextPulseは0となり、第２クロック一致タイミング予測部４１は、第２クロック一致タイミングPairPulseBを2のまま維持する。また、カウント値CNTVaが7であり且つイネーブルNextPulseが1なので、次のクロックβaClockに応じて第２クロックタイミングリセットAroundは0になる。以降、クロックイネーブル生成部１３は、カウント値CNTVaが０に戻りカウント値CNTVaの値に応じて説明した動作を繰り返す。
【０１０４】
図１４〜２０は、基準周期の指数Ｍが３のときに第１クロックのパルス数Na及び第２クロックのパルス数Nbを変更したときのクロックイネーブル生成部１３の動作の他の例を示す図である。図１４（ａ）は第１クロックのパルス数Naを5から3に変更し且つ第２クロックのパルス数Nbを3から2に変更した例を示し、図１４（ｂ）は第１クロックのパルス数Naを5で維持しながら第２クロックのパルス数Nbを3から４に変更した例を示す。図１５（ａ）〜１５（ｂ）は第１クロックのパルス数Naが8であり且つ第２クロックのパルス数Nbが７〜6である例を示し、図１６（ａ）〜１６（ｂ）は第１クロックのパルス数Naが8であり且つ第２クロックのパルス数Nbが5〜4である例を示す。図１７（ａ）〜１７（ｂ）は第１クロックのパルス数Naが8であり且つ第２クロックのパルス数Nbが3〜2である例を示す。図１８（ａ）は第１クロックのパルス数Naが8であり且つ第２クロックのパルス数Nbが1である例を示し、図１８（ｂ）は第１クロックのパルス数Naが7であり且つ第２クロックのパルス数Ｎｂが３である例を示す。図１９（ａ）は第１クロックのパルス数Naが6であり且つ第２クロックのパルス数Nbが2である例を示し、図１９（ｂ）は第１クロックのパルス数Naが4であり且つ第２クロックのパルス数Nbが3である例を示す。図２０（ａ）は第１クロックのパルス数Naが3であり且つ第２クロックのパルス数Nbが2である例を示し、図２０（ｂ）は第１クロックのパルス数Naが2であり且つ第２クロックのパルス数Nbが1である例を示す。
【０１０５】
図１４〜２０に示すクロックイネーブル生成部１３の動作は、図１３を参照して説明したクロックイネーブル生成部１３の動作と同様なので、ここでは詳細な説明は説明する。
【０１０６】
（実施形態に係るクロック制御回路の作用効果）
実施形態に係るクロックイネーブル生成部は、周波数が相違する第１クロック及び第２クロックのパルスが一致するタイミングの前の第１クロックのパルスでラッチ可能なクロックイネーブルを生成する。生成されたクロックイネーブルは、第１クロック及び第２クロックのパルスが一致するタイミングの前の第１クロックのパルスでラッチ可能なので、ＣＰＵとクロックイネーブル生成部との間に配置されたフリップフロップでラッチすることができる。ＣＰＵとクロックイネーブル生成部との間に配置されたフリップフロップでクロックイネーブルをラッチすることにより、クロックイネーブルのタイミング条件を容易に収束することが可能になる。
【０１０７】
また、実施形態に係るクロックイネーブル生成部では、第１クロックと第２クロックとを基準周期の中でいくつかのパルスを間引いた歯抜けクロックとしてもよい。実施形態に係るクロックイネーブル生成部では、第１クロック及び第２クロックを歯抜けクロックとした場合でも、パルスが一致するタイミングの予測により、パルスが一致するタイミングの前のパルスでラッチ可能なクロックイネーブルを生成できる。
【０１０８】
また、実施形態に係るクロックイネーブル生成部では、基準周期におけるパルスの配置は、基準周期に含まれるパルスの数が1つ多い第１クロック及び第２クロックに含まれるパルスの何れか1つを間引いた配置とすることができる。基準周期に含まれるパルスの数が1つ多いクロックに含まれるパルスの何れかを間引いた配置とすることで、実施形態に係るクロックイネーブル生成部では、第２クロックのパルスを、第１クロックのパルスの何れか1つの配置と一致するように配置できる。
【０１０９】
また、実施形態に係るクロックイネーブル生成部では、クロック生成部は、所定のパルス配置アルゴリズムに従って間引くパルスを決定することにより、第１クロック及び第２クロックの基準周期におけるパルスの配置を決定する。実施形態に係るクロックイネーブル生成部では、クロックイネーブル生成部は、パルスの配置を決定するパルス配置アルゴリズムから第１クロック及び第２クロックが一致するタイミングを予測する。実施形態に係るクロックイネーブル生成部は、パルスの配置を決定したパルス配置アルゴリズムに基づいてクロックが一致するタイミングを予測するため、正確且つ早急にクロックが一致するタイミングを予測することができる。
【０１１０】
また、パルス配置アルゴリズムでは、所定の条件から演算される境界と、パルスの位置とを比較して、パルスの位置が境界の前に位置する場合と、パルスの位置が境界の後に位置する場合とでパルスを間引く条件を相違させてもよい。実施形態に係るクロックイネーブル生成部では、所定の条件から演算される境界を使用して、基準周期におけるパルスの配置を決定することにより、より簡明なアルゴリズムで基準周期におけるパルスの配置を決定することができる。
【０１１１】
（実施形態に係るクロック制御回路の変形例）
クロック制御回路３では、基準周期の指数Mは3であったが、実施形態に係るクロック制御回路では、基準周期の指数Mは3に限定されない。基準周期の指数Mは、2又は4以上の値でもよい。また、クロック制御回路３では、第１クロックのパスル数Naは第２クロックのパルス数Nbよりは3であったが、実施形態に係るクロック制御回路では、第１クロックのパスル数Naと第２クロックのパルス数Nbとは同一であってもよい。また、クロック制御回路３を含むシステム１では、クロックイネーブルは1つのフリップフロップによりラッチされるが、複数段のフリップフロップによりラッチされる構成としてもよい。
【符号の説明】
【０１１２】
１、１００    システム
１０    クロック制御回路
１１    設定制御部
１２    クロック生成部
１３    クロックイネーブル生成部
１０２    ＣＰＵ
１０４    論理回路
１０５    バス
【図１】
2017021539.tif 000017
【図２】
2017021539.tif 000018
【図３】
2017021539.tif 000019
【図４】
2017021539.tif 000020
【図５】
2017021539.tif 000021
【図６】
2017021539.tif 000022
【図７】
2017021539.tif 000023
【図８】
2017021539.tif 000024
【図９】
2017021539.tif 000025
【図１０】
2017021539.tif 000026
【図１１】
2017021539.tif 000027
【図１２】
2017021539.tif 000028
【図１３】
2017021539.tif 000029
【図１４】
2017021539.tif 000030
【図１５】
2017021539.tif 000031
【図１６】
2017021539.tif 000032
【図１７】
2017021539.tif 000033
【図１８】
2017021539.tif 000034
【図１９】
2017021539.tif 000035
【図２０】
2017021539.tif 000036