(57)【要約】【課題】  入力クロックの立ち上がりエッジを使用して、同期設計回路で使用可能な任意の分周比のクロックを分周生成すること。【解決手段】  入力クロックの立ち上がりエッジのみを使用して、連続する２サイクルの周期が変化するクロックを生成する。そして、生成されたクロックにより動作する同期回路は、連続する２サイクルの周期の中でクロックエッジの変化する期間が最小となる期間をタイミング制約として同期回路のタイミング設計を行う。【選択図】  図９
2015111377.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロックから第２のクロックを生成するクロック生成回路であって、
第１のクロックの立ち上がりエッジの数を第１の期間でカウントする第１のカウンタと、
第１のクロックの立ち上がりエッジの数を第２の期間でカウントする第２のカウンタと、
第１のクロックの立ち上がりエッジの数を第３の期間でカウントする第３のカウンタと、
第１のクロックの立ち上がりエッジの数を第４の期間でカウントする第４のカウンタとを有し、
前記第１の期間、前記第２の期間、前記第３の期間、及び前記第４の期間で、ハイレベルの出力とローレベルの出力を周期的に交互に繰り返すことにより、前記第２のクロックを生成することを特徴とするクロック生成回路。
【請求項２】
第１のクロックから第２のクロックを生成するクロック生成回路であって、
第１のクロックの立ち上がりエッジの数をカウントするカウンタと、
前記カウンタがカウントする期間を設定する設定手段と、
第１のカウント期間でハイレベルを出力し、第２のカウント期間でローレベルを出力し、第３のカウント期間でハイレベルを出力し、第４のカウント期間でローレベルを出力することを周期的に繰り返すことにより、前記第２のクロックを生成することを特徴とするクロック生成回路。
【請求項３】
複数の前記第２のクロックを生成し、
前記複数の前記第２のクロックのハイレベルの出力からローレベルの出力に遷移するタイミングとローレベルの出力からハイレベルの出力に遷移するタイミングが同じになることを特徴とする請求項１又は２に記載のクロック生成回路。
【請求項４】
請求項１乃至３に記載のクロック生成回路によって生成される前記第２のクロックによって動作する同期回路であって、同期回路の動作を満たす周期の制約として前記第２のクロックのハイレベルの出力の期間又はローレベルの出力の期間が最小となる期間を制約とすることを特徴とする同期回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック源から供給されるクロックを基にクロックを生成するクロック生成回路に関する。
【背景技術】
【０００２】
クロック同期の同期設計回路では、様々な周波数のクロックが使用されている。半導体集積回路においては、半導体外部のクロック源から供給したクロックや、半導体内部に備えるＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）などの発振回路を用いて生成したクロックを使用する。
【０００３】
半導体内部では、周波数の高い高速なクロックを基に分周して、周波数の低い低速なクロックを生成することがある。生成される低速クロックの周波数の粒度は、基となる高速クロックの周波数に依存するため、多様な周波数のクロックを生成するためには、できるだけ高速なクロックが必要となる。
【０００４】
図１０は、一般的な分周器により生成されるクロックを示すタイミングチャート（従来例）を示す。ここでは、ＣＬＫＢの１／７倍のＣＬＫＣ、１／１４倍のＣＬＫＤを生成する場合を例にする。ＣＬＫＡを基準として、２分周した１／２倍のＣＬＫＢ、７分周した１／７倍のＣＬＫＣ、１４分周した１／１４倍のＣＬＫＤを生成するのは、クロックの立ち上がりエッジで動作するＦＦ（フリップフロップ）を用いて、一般的な同期回路で容易に実現できる。しかしながら、クロックの立ち上がりエッジのみで動作するＦＦでは、ＣＬＫＢを基準として、１／７倍のＣＬＫＣ，２／７倍のＣＬＫＤを分周して作ることができない。
【０００５】
この様な場合に、基となる高速クロックの立ち上がりエッジと立ち下がりエッジの両方を利用することにより、生成できるクロックの粒度を高くすることが考えられる。例えば、特許文献１には、入力クロックの立ち上がりエッジと立ち下がりエッジを利用することにより、入力クロックを基に入力クロックの半周期を基準とした所望の分周比で分周したクロックを生成するクロック分周回路についての技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１５７８４９
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１のように、入力クロックの立ち上がりエッジと立ち下がりエッジを利用して分周クロックを生成する構成では、次の問題が生じる。すなわち、入力クロックのデューティ比が５０％（クロックの１サイクルにおけるハイレベル期間とローレベル期間の割合が１：１）でない場合、分周して生成されるクロックの波形が崩れてしまい、所望のデューティ比や周波数のクロックを生成することができない。このため、入力クロックのクロック源がＰＬＬ等の発振クロックである場合、デューティ比が５０％でないため、特許文献１のクロック分周器を使用してクロックを分周することができない。
【０００８】
本発明は、入力クロックの立ち上がりエッジを使用して、同期設計回路で使用可能な任意の分周比のクロックを分周生成することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るクロック生成回路は、第１のクロックから第２のクロックを生成するクロック生成回路であって、第１のクロックの立ち上がりエッジの数を第１の期間でカウントする第１のカウンタと、第１のクロックの立ち上がりエッジの数を第２の期間でカウントする第２のカウンタと、第１のクロックの立ち上がりエッジの数を第３の期間でカウントする第３のカウンタと、第１のクロックの立ち上がりエッジの数を第４の期間でカウントする第４のカウンタとを有し、前記第１の期間、前記第２の期間、前記第３の期間、及び前記第４の期間で、ハイレベルの出力とローレベルの出力を周期的に交互に繰り返すことにより、前記第２のクロックを生成することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、入力クロックの立ち上がりエッジを使用して、同期設計回路で使用可能な任意の分周比のクロックを分周生成することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】画像形成装置の構成を示すブロック図
【図２】分周器の詳細を示すブロック図（第１の実施形態）
【図３】ステートマシンが有する４つのステートを示す図
【図４】分周器が生成するクロックを示すタイミングチャート（第１の実施形態）
【図５】同期回路の詳細を示すブロック図
【図６】同期回路におけるデータの授受を示すタイミングチャート
【図７】分周器の詳細を示すブロック図（第２の実施形態）
【図８】分周器の詳細を示すブロック図（第３の実施形態）
【図９】分周器が生成するクロックを示すタイミングチャート（第３の実施形態）
【図１０】分周器が生成するクロックを示すタイミングチャート（従来例）
【発明を実施するための形態】
【００１２】
〔第１の実施形態〕
第１の実施形態では、分周器１００が分周して生成するクロックの分周比を、比較器１０４、比較器１０５が予め設定値として有するクロック生成回路について説明する。
【００１３】
＜画像形成装置＞
図１は、画像形成装置の構成を示すブロック図である。
【００１４】
画像形成装置１０００は、画像の入出力と送受信および各種の画像処理を行う複合機である。画像形成装置１０００は、メインコントローラ１０１０、ユーザインタフェースである操作部１０２０、画像入力デバイスであるスキャナ１０３０および画像出力デバイスであるプリンタ１０４０を備える。操作部１０２０、スキャナ１０３０およびプリンタ１０４０は、それぞれメインコントローラ１０１０に接続され、メインコントローラ１０１０からの指示によって制御される。さらに、メインコントローラ１０１０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０６０に接続される。
【００１５】
ＰＣ１０５０は、一般的なＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒであり、ＬＡＮ１０６０を介して接続する画像形成装置１０００と通信する。画像形成装置１０００の印刷ジョブは、ユーザがＰＣ１０５０上で動作するアプリケーションから印刷の指示を行うことにより、ＰＣ１０５０から画像形成装置１０００に対して送信される。
【００１６】
メインコントローラ１０１０は、スキャナ１０３０やプリンタ１０４０を制御する一方で、ＬＡＮ１０６０や公衆回線と接続される。そして、ＬＡＮ１０６０や公衆回線を介して、外部機器との間で画像情報やデバイス情報、およびファイル等の入出力を行う。メインコントローラ１０１０は、主制御部であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３０１を備える。
【００１７】
ＣＰＵ１３０１は、システムバス１３０７を介して、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３０３、Ｆｌａｓｈ１３０４、と接続される。また、イメージバスＩ／Ｆ１３０５、操作部Ｉ／Ｆ１３０６、ＬＡＮ  Ｉ／Ｆ１３０８およびモデム部１３０９とも接続される。
【００１８】
ＲＡＭ１３０２は、ＣＰＵ１３０１の作業領域を提供するための随時読み書き可能なメモリであり、画像形成装置の一時的な設定値や実行するジョブの情報などを記憶する。ＲＡＭ１３０２は、画像データを一時記憶するための画像メモリとしても使用される。
【００１９】
ＲＯＭ１３０３は、ブートＲＯＭであり、システムのブートプログラムが格納される。
【００２０】
Ｆｌａｓｈ１３０４は、不揮発性メモリであり、画像形成装置１０００の電源遮断後にも保持が必要なシステムソフトウェアや設定値データ等が格納される。
【００２１】
イメージバスＩ／Ｆ１３０５は、システムバス１３０７と画像データを高速で転送する画像バス１３１０とを接続するインタフェースであり、データ構造を変換するバスブリッジとして動作する。
【００２２】
操作部Ｉ／Ｆ１３０６は、操作部１０２０との間で入出力を行うためのインタフェースである。操作部Ｉ／Ｆ１３０６は、操作部１０２０に対して表示すべき画像データを出力し、また、ユーザが操作部１０２０を介して入力した情報を、ＣＰＵ１３０１に伝送するために使用される。
【００２３】
システムバス１３０７には、ＣＰＵ１３０１〜モデム部１３０９が接続される。
【００２４】
ＬＡＮ  Ｉ／Ｆ１３０８は、ＬＡＮ１０６０と接続するためのインタフェースであり、ＬＡＮ１０６０に対して情報の入出力を行う。
【００２５】
モデム部１３０９は、公衆回線と接続するためのインタフェースであり、公衆回線に対して情報の入出力を行う。
【００２６】
画像バス１３１０には、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）１３１１、デバイスＩ／Ｆ１３１２、スキャナ画像処理部１３１３、プリンタ画像処理部１３１４、画像回転部１３１５および画像圧縮部１３１６が接続される。
【００２７】
ＲＩＰ１３１１は、例えばＰＣ１０５０が印刷ジョブとして送信したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データをＬＡＮ  Ｉ／Ｆ１３０８を介して受信し、ビットマップイメージに展開する。
【００２８】
デバイスＩ／Ｆ１３１２は、スキャナ１０３０およびプリンタ１０４０とメインコントローラ１０１０とを接続するインタフェースであり、画像データの同期系／非同期系の変換を行う。
【００２９】
スキャナ画像処理部１３１３は、スキャナ１０３０から読み込んだ入力画像データに対して、補正、加工、編集等の処理を行う。
【００３０】
プリンタ画像処理部１３１４は、プリンタ１０４０へ出力するプリント出力画像データに対して、色変換、フィルタ処理、解像度変換等の処理を行う。
【００３１】
画像回転部１３１５は、画像データの回転を行う。
【００３２】
画像圧縮部１３１６は、多値画像データに対してはＪＰＥＧ圧縮伸長処理を行い、２値画像データに対してはＪＢＩＧ、ＭＭＲ、ＭＨ等の圧縮伸長処理を行う。
【００３３】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１３１７は、不揮発なデータ記憶装置であり、画像データ、アドレス帳データ、ジョブログおよびユーザの個別データ等の各種データが保持される。なお、メインコントローラ１０１０が、ＨＤＤ１３１７を接続しない構成をとる場合は、前述の各種データはＦｌａｓｈ１３０４に保持されるものとする。
【００３４】
クロック源１０は、水晶発振器やＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）などの発振回路であり、同期回路用の同期クロックＣＬＫ０を出力する。クロック源１０は、半導体外部にあってもよいし半導体内部にあってもよい。クロック源１０は、半導体内部にある分周器１００に対してもクロックＣＬＫ０を供給する。
【００３５】
分周器１００は、クロック源１０が出力するクロックにより動作する同期回路であり、ＣＬＫ０を基に分周して所望の周波数のクロックを出力する。前述のＣＰＵ１３０１、ＲＡＭ１３０２、ＲＯＭ１３０３、Ｆｌａｓｈ１３０４は、クロック源１０や分周器１００が出力するクロックによって動作する同期回路を含んで構成され、半導体集積回路として実装される。また、イメージバスＩ／Ｆ１３０５、操作部Ｉ／Ｆ１３０６、システムバス１３０７、ＬＡＮＩ／Ｆ１３０８、モデム部１３０９、画像バス１３１０、ＲＩＰ１３１１、デバイスＩ／Ｆ１３１２についても同様である。また、スキャナ画像処理部１３１３、プリンタ画像処理部１３１４、画像回転部１３１５画像圧縮部１３１６、ＨＤＤ１３１７についても同様である。
【００３６】
＜分周器＞
図２は、分周器の詳細を示すブロック図（第１の実施形態）である。
【００３７】
分周器１００は、クロック源１０が出力するクロックにより動作する同期回路であり、ステートマシン１０１、カウンタ１０２、カウンタ１０３、比較器１０４、比較器１０５を備える。
【００３８】
ステートマシン１０１は、出力する値を判断する４つのステートを有し、比較器１０４と比較器１０５から通知される比較結果によって、ハイレベルかローレベルの値をＣＬＫ１として出力し、カウンタ１０２、カウンタ１０３のカウント値のクリアを行う。
【００３９】
カウンタ１０２、カウンタ１０３は、それぞれ、クロック源１０から入力されるクロックＣＬＫ０の立ち上がりエッジでカウントが進むカウンタであり、ＣＬＫ０のサイクル（ＣＬＫ０の１周期分の期間）の回数をカウントする。
【００４０】
比較器１０４、比較器１０５は、それぞれ、カウンタ１０２、カウンタ１０３がカウントするＣＬＫ０のサイクル数と予め設定されるサイクル数とを比較し、比較結果をステートマシン１０１に通知する。
【００４１】
そして、分周器１００は、クロック源１０が出力するクロックＣＬＫ０を入力クロックとして、ＣＬＫ０を基に分周することによってＣＬＫ１を生成して出力する。
【００４２】
なお、ステートマシン１０１、カウンタ１０２、カウンタ１０３は、図示しない一般的なＤ型フリップフロップ（ＦＦ）を有し、入力されるデータ（ハイレベルかローレベル）をクロックの立ち上がりエッジで保持して出力する。ステートマシン１０１のＦＦはステートを保持し、ステートに応じたハイレベルかローレベルの出力値をＣＬＫ１として出力する。カウンタ１０２、カウンタ１０３のＦＦはカウント値を保持し、比較器１０４、１０５にそれぞれ出力する。
【００４３】
＜４つのステート＞
図３は、ステートマシンが有する４つのステートを示す図である。
【００４４】
まず、ステートマシン１０１は、図示しないリセット信号によって初期化されて、第１ステートＳ２００のステートから動作を開始する。
【００４５】
第１ステートＳ２００では、比較器１０４の比較結果により、カウンタ１０２がカウントするＣＬＫ０のサイクル数が比較器１０４に予め設定されるサイクル数以下かどうかをステートマシン１０１が判断する。カウンタ１０２のカウント値が比較器１０４に予め設定されるサイクル数と等しい場合は、ステートマシン１０１は、カウンタ１０２のカウント値をクリアし、第２ステートＳ２０１に遷移する。尚、ステートマシン１０１は、第１ステートにおいては、後述する図４のＣＬＫ０の第１のサイクルカウント期間のハイレベルをＣＬＫ１として出力する。
【００４６】
第２ステートＳ２０１では、第１ステートＳ２００と同様に、比較器１０４の比較結果により、カウンタ１０２がカウントするＣＬＫ０のサイクル数が比較器１０４に予め設定されるサイクル数以下かどうかをステートマシン１０１が判断する。カウンタ１０２のカウント値が比較器１０４に予め設定されるサイクル数と等しい場合は、ステートマシン１０１は、カウンタ１０２のカウント値をクリアし、第３ステートＳ２０２に遷移する。尚、ステートマシン１０１は、第２ステートにおいては、後述する図４のＣＬＫ０の第２のサイクルカウント期間のローレベルをＣＬＫ１として出力する。
【００４７】
第３ステートＳ２０２では、第２ステートＳ２０１と同様に、比較器１０４の比較結果により、カウンタ１０２がカウントするＣＬＫ０のサイクル数が比較器１０４に予め設定されるサイクル数以下かどうかをステートマシン１０１が判断する。カウンタ１０２のカウント値が比較器１０４に予め設定されるサイクル数と等しい場合は、ステートマシン１０１は、カウンタ１０２のカウント値をクリアし、第４ステートＳ２０３に遷移する。尚、ステートマシン１０１は、第３ステートにおいては、後述する図４のＣＬＫ０の第３のサイクルカウント期間のハイレベルをＣＬＫ１として出力する。
【００４８】
第４ステートＳ２０３では、比較器１０５の比較結果により、カウンタ１０３がカウントするＣＬＫ０のサイクル数が比較器１０５に予め設定されるサイクル数以下かどうかをステートマシン１０１が判断する。カウンタ１０３のカウント値が比較器１０５に予め設定されるサイクル数と等しい場合は、ステートマシン１０１は、カウンタ１０３のカウント値をクリアし、第１ステートＳ２００に遷移する。尚、ステートマシン１０１は、第４ステートにおいては、後述する図４のＣＬＫ０の第４のサイクルカウント期間のローレベルをＣＬＫ１として出力する。
【００４９】
上述のように、ステートマシン１０１は、リセット信号による第１ステートＳ２００への初期化の場合を除き、第１ステートＳ２００から第４ステートＳ２０３まで順に遷移し、第４ステートＳ２０３の後、第１ステートＳ２００に戻り、以降この遷移を繰り返す。そして、ハイレベルの出力とローレベルの出力を周期的に交互に繰り返すことにより、新たなクロックが生成される。
【００５０】
＜分周器が生成するクロック＞
図４は、分周器が生成するクロックを示すタイミングチャート（第１の実施形態）である。
【００５１】
ここでは、一例として、ＣＬＫ０の周波数の２／７倍の周波数のＣＬＫ１を生成する場合について示す。
【００５２】
クロックＣＬＫ１のハイレベル期間とローレベル期間は、それぞれ図３に示されるステートマシン１０１の各ステートに対応している。このとき、比較器１０４、比較器１０５に予め設定される設定値は、それぞれ２サイクルと１サイクルである。
【００５３】
ＣＬＫ０のサイクルＴ０開始時点からＴ２開始時点までの２サイクル期間のＣＬＫ１のハイレベル期間は、ステートマシン１０１の第１ステートＳ２００のＣＬＫ０の第１のサイクルカウント期間に対応する。
【００５４】
ＣＬＫ０のサイクルＴ２開始時点からＴ４開始時点までの２サイクル期間のＣＬＫ１のローレベル期間は、ステートマシン１０１の第２ステートＳ２０１のＣＬＫ０の第２のサイクルカウント期間に対応する。
【００５５】
ＣＬＫ０のサイクルＴ４開始時点からＴ６開始時点までの２サイクル期間のＣＬＫ１のハイレベル期間は、ステートマシン１０１の第３ステートＳ２０２のＣＬＫ０の第３のサイクルカウント期間に対応する。
【００５６】
ＣＬＫ０のサイクルＴ６開始時点からＴ７開始時点までの１サイクル期間のＣＬＫ１のローレベル期間は、ステートマシン１０１の第４ステートＳ２０３のＣＬＫ０の第４のサイクルカウント期間に対応する。
【００５７】
上述のように、ＣＬＫ１は、ＣＬＫ０の立ち上がりエッジのタイミングで、ＣＬＫ０の立ち上がりエッジで動作するＦＦによって分周を行う。このため、ＣＬＫ０のデューティ比は、５０％である必要がない。
【００５８】
ＣＬＫ１のタイミングは、ＣＬＫ０のサイクルＴ０開始時点からＴ７開始時点までに、ＣＬＫ０基準で第１に２サイクル期間のハイレベル、第２に２サイクル期間のローレベル、という周期性を持つ。また、第３に２サイクル期間のハイレベル、第４に１サイクル期間のローレベルという周期性を持つ。
【００５９】
ＣＬＫ１は、ＣＬＫ０のサイクルＴ７以降もこの周期を繰り返す。本実施例では、ＣＬＫ０の周波数の２／７倍の周波数のＣＬＫ１を生成する例を示しており、ＣＬＫ０の周波数が７００ＭＨｚの場合には、生成されるＣＬＫ１の周波数は２００ＭＨｚに相当する。
【００６０】
＜同期回路＞
図５は、同期回路の詳細を示すブロック図である。
【００６１】
ここで、同期回路とは、ＣＬＫに同期して動作する回路のことであり、例えばスキャナ画像処理部１３１３、プリンタ画像処理部１３１４、画像回転部１３１５、画像圧縮部１３１６等が該当する。
【００６２】
図５（Ａ）は、ＣＬＫ１で動作する同期回路の例である。
【００６３】
図５（Ｂ）は、ＣＬＫ１及びＣＬＫ０で動作する同期回路の例である。
【００６４】
同期回路としては、クロックの立ち上がりエッジ、または、立ち下がりエッジで動作するＦＦを使用した構成が考えられる。
【００６５】
同期回路は、クロックの立ち上がりエッジで動作するＦＦ３００、ＦＦ３０１とクロックの立ち下がりエッジで動作するＦＦ３０２、ＦＦ３０３と組み合わせ論理回路３０４を備え、本発明における同期回路で発生しうるタイミング制約を有する。
【００６６】
ＦＦ３００、ＦＦ３０１は、図示しない前段の組み合わせ回路やＦＦが出力するデータを入力データとして、保持した値をＦＦ３００−ｏｕｔ、ＦＦ３０１−ｏｕｔとして出力する。
【００６７】
ＦＦ３００、ＦＦ３０１の出力データＦＦ３００−ｏｕｔ、ＦＦ３０１−ｏｕｔはそれぞれ、組み合わせ論理回路３０４を介して、ＦＦ３０２、ＦＦ３０３それぞれに入力される。
【００６８】
そして、ＦＦ３０２、ＦＦ３０３が保持した値はＦＦ３０２、ＦＦ３０３が出力するデータＦＦ３０２−ｏｕｔ、ＦＦ３０３−ｏｕｔとして、図示しない後段の組み合わせ回路やＦＦに出力される。
【００６９】
＜同期回路におけるデータの授受＞
図６は、同期回路におけるデータの授受を示すタイミングチャートである。
【００７０】
ＦＦ３００の出力データＦＦ３００−ｏｕｔをＦＦ３０２がＣＬＫ１同期で受けるためには、次のことがポイントになる。すなわち、ＦＦ３０２の入力としては、ＦＦ３００がデータを出力するＣＬＫ０のサイクルＴ０開始時点からＴ４開始時点、または、ＣＬＫ０のサイクルＴ４開始時点からＴ７開始時点までに確定していなければならない。従って、最小のタイミング制約はＣＬＫ０のサイクルで３サイクル期間となる。
【００７１】
ＦＦ３００の出力データＦＦ３００−ｏｕｔをＦＦ３０３がＣＬＫ１同期で受けるためには、次のことがポイントになる。すなわち、ＦＦ３０３の入力としては、ＦＦ３００がデータを出力するＣＬＫ０のサイクルＴ４開始時点からＴ６開始時点までに確定していなければならず、タイミング制約はＣＬＫ０のサイクルで２サイクル期間となる。
【００７２】
ＦＦ３０１の出力データＦＦ３０１−ｏｕｔをＦＦ３０２がＣＬＫ１同期で受けるためには、次のことがポイントになる。すなわち、ＦＦ３０２の入力としては、ＦＦ３０１がデータを出力するＣＬＫ０のサイクルＴ９開始時点からＴ１１開始時点、または、ＣＬＫ０のサイクルＴ１３開始時点からＴ１４開始時点までに確定していなければならない。従って、最小のタイミング制約はＣＬＫ０のサイクルで１サイクル期間となる。
【００７３】
ＦＦ３０１の出力データＦＦ３０１−ｏｕｔをＦＦ３０３がＣＬＫ１同期で受けるためには、次のことがポイントになる。すなわち、ＦＦ３０３の入力としては、ＦＦ３０１がデータを出力するＣＬＫ０のサイクルＴ６開始時点からＴ９開始時点、または、ＣＬＫ０のサイクルＴ９開始時点からＴ１３開始時点までに確定していなければならない。従って、最小のタイミング制約はＣＬＫ０のサイクルで３サイクル期間となる。
【００７４】
また、これらのタイミング制約に加え、ＦＦ３０２、ＦＦ３０３が特性として有するクロックのエッジに先立って予め入力データ信号が確定していなければならないセットアップタイムを満足するようにタイミング設計を行うことによって同期回路として動作する。
【００７５】
上述のように、本発明における分周器１００が生成するＣＬＫ１では、ＣＬＫ１の連続する２サイクルの中の１サイクル期間中に、基準となるＣＬＫ０のサイクル数で偶数サイクル期間と奇数サイクル期間が混在する場合がある。このため、必ずしもデューティ比が５０％とはならない。そのため、図４に示すように、本発明の同期回路においては、ＣＬＫ１の連続する２サイクルの中でより短いサイクル期間をタイミング制約とするタイミング設計を行う。
【００７６】
なお、図５、図６では、ＣＬＫ１で動作するタイミング制約について示したが、ＣＬＫ０でデータを授受して動作するＦＦの場合には、一律でＣＬＫ０の１サイクル期間のタイミング制約の下でタイミング設計を行う。
【００７７】
本実施例では、分周器１００が生成するクロックは、ＣＬＫ０基準で第１に偶数サイクル期間、第２に偶数サイクル期間、第３に偶数サイクル期間、第４に奇数サイクル期間といった順で構成されているが、このサイクルの順番に限定されるものではない。例えば、分周器１００が生成するクロックは、ＣＬＫ０の基準で第１に偶数サイクル期間、第２に偶数サイクル期間、第３に奇数サイクル期間、第４に偶数サイクル期間といったサイクルの順番で構成されてもよい。
【００７８】
また、いかなるサイクルの順番であっても、分周器が生成するクロックよって動作する同期回路のタイミング制約は変わらない。
【００７９】
さらに、本実施例では一例として、偶数サイクル期間として２サイクル、奇数サイクル期間として１サイクル期間となるため、より短い期間である１サイクル期間を同期回路のタイミング制約としているが、タイミング制約はこれに限られない。例えば、偶数サイクル期間として２サイクル、奇数サイクル期間として３サイクル期間を有する分周を行う場合には、同期回路のタイミング制約はより短い期間である２サイクル期間を同期回路のタイミング制約として同期回路のタイミング設計を行う。
【００８０】
以上のように、本発明の分周器は、入力クロックの立ち上がりエッジのみを使用して同期設計回路で使用可能な任意の分周比のクロックを生成することができ、生成したクロックで動作する同期回路のタイミング設計を実現することができる。
【００８１】
〔第２の実施形態〕
第２の実施形態では、分周器１００が分周して生成するクロックの分周比を、動的に変更して設定できるようにするクロック生成回路について説明する。つまり、第２の実施形態では、分周器が生成するクロックの周波数を、ユーザの使用状況によって変更することができる。
【００８２】
第２の実施形態において、第１の実施形態と同様の部分は説明を省略し、特徴である分周比を設定する構成について詳細に説明する。
【００８３】
＜分周器＞
図７は、分周器の詳細を示すブロック図（第２の実施形態）である。
【００８４】
分周器４００は、クロック源１０が出力するクロックにより動作する同期回路であり、ステートマシン４０１、カウンタ４０２、比較器４０３、分周比設定部４０４を備える。
【００８５】
ステートマシン４０１は、出力する値を判断する４つのステートを有し、比較器４０３から通知される比較結果によって、ハイレベルかローレベルの値をＣＬＫ１として出力し、カウンタ４０２のカウント値のクリアを行う。さらに、ステートマシン４０１は、分周比設定部４０４がステートマシン４０１のステートに対応した分周比設定値を比較器４０３に設定するために、分周比設定部４０４に対してステートを通知する。
【００８６】
カウンタ４０２は、クロック源１０から入力されるクロックＣＬＫ０の立ち上がりエッジでカウントが進むカウンタであり、ＣＬＫ０のサイクル（ＣＬＫ０の１周期分の期間）の回数をカウントする。カウンタ４０２がカウントできる最大値は、生成するＣＬＫ１のサイクルのハイレベル期間またはローレベル期間の中でＣＬＫ０のサイクル期間を基準とする最大のサイクル数をカウント可能な値とする。
【００８７】
比較器４０３は、カウンタ４０２がカウントするＣＬＫ０のサイクル数と後述する分周比設定部４０４により設定されるサイクル数とを比較し、比較結果をステートマシン４０１に通知する。
【００８８】
分周比設定部４０４は、複数のＦＦで構成される設定値の保持部であり、ＣＰＵ１３０１により分周器４００の分周比設定が設定されて、設定された分周比設定値を保持する。分周比設定部４０４は、保持する分周比設定値をステートマシン４０１のステートに応じて、比較器４０３に設定する。
【００８９】
そして、分周器４００は、分周比設定部４０４に設定する分周比設定値により、図３に示される第１の実施例の分周器１００のステートマシン１０１が有する４つのステートに対応するように、カウンタ４０２のカウント値を変更する。すなわち、分周器４００のカウンタ４０２は、ステートマシン４０１の第１ステートにおいては２サイクル期間、第２ステートにおいては２サイクル期間、第３ステートにおいては２サイクル期間、第４ステートにおいては１サイクル期間のカウントを行う。
【００９０】
以上により、分周器４００は、分周比設定部４０４に設定する分周比設定値により、分周比を動的に変更して設定できる構成を実現しつつ、第１の実施例における分周器１００と同様に、図４に示すタイミングチャートと同様のクロックの生成を行うことができる。
【００９１】
〔第３の実施形態〕
第３の実施形態では、第２の実施例における分周器４００を複数用いて、複数の同期関係のクロックを生成するクロック生成回路について説明する。つまり、第３の実施例では、第２の実施例における分周器４００の分周比設定部４０４は、ステートマシン４０１の有する４つのステートに対するカウント値を任意に設定することができる。このため、複数の分周器４００を用いて複数の同期関係のクロックの生成が可能となる。
【００９２】
第２の実施形態において、第２の実施形態と同様の部分は説明を省略し、特徴である複数の同期関係のクロックを生成する構成について詳細に説明する。
【００９３】
＜分周器＞
図８は、分周器の詳細を示すブロック図（第３の実施形態）である。
【００９４】
分周器１００として、第２の実施例の分周器４００と同様の２つの分周器５０１、５０２を用いる。
【００９５】
クロック源１０は、第１の実施例におけるクロック源１０と同様の構成であり、半導体内部にある２つの分周器５０１、５０２に対してクロックＣＬＫ０を供給する。
【００９６】
分周器５０１、５０２は、クロック源１０が出力するＣＬＫ０を入力とし、分周して生成したクロックＣＬＫ２、ＣＬＫ３をそれぞれ出力する。
【００９７】
ここでは、ＣＬＫ２の周波数はＣＬＫ０の周波数の１／７倍、ＣＬＫ３の周波数はＣＬＫ０の周波数の２／７倍となるＣＬＫ３を生成する。
【００９８】
＜分周器が生成するクロック＞
図９は、分周器が生成するクロックを示すタイミングチャート（第３の実施形態）である。
【００９９】
ここでは、一例として、ＣＬＫ０の周波数の１／７倍の周波数のＣＬＫ２とＣＬＫ０の周波数の２／７倍の周波数のＣＬＫ３を生成する場合について説明する。
【０１００】
ＣＬＫ３のハイレベル期間とローレベル期間はそれぞれ、図３に示されるステートマシン１０１の各ステートに対応する。ただし、本実施例におけるＣＬＫ３を生成する分周器５０１が有する分周比設定部４０４には、ステートマシン４０１の各ステートに対応するカウント値として、ＣＰＵ１３０１により次の設定値を設定する。分周比設定部４０４に設定する値は、第１ステートＳ２００のカウント値として２サイクル期間、第２ステートＳ２０１のカウント値として２サイクル期間である。また、第３ステートＳ２０２のカウント値として２サイクル期間、第４ステートＳ２０３のカウント値として１サイクル期間である。
【０１０１】
ＣＬＫ０のサイクルＴ０開始時点からＴ２開始時点までの２サイクル期間のＣＬＫ３のハイレベル期間は、ステートマシン１０１の第１ステートＳ２００のＣＬＫ０の第１のサイクルカウント期間に対応する。
【０１０２】
ＣＬＫ０のサイクルＴ２開始時点からＴ４開始時点までの２サイクル期間のＣＬＫ３のローレベル期間は、ステートマシン１０１の第２ステートＳ２０１のＣＬＫ０の第２のサイクルカウント期間に対応する。
【０１０３】
ＣＬＫ０のサイクルＴ４開始時点からＴ６開始時点までの２サイクル期間のＣＬＫ３のハイレベル期間は、ステートマシン１０１の第３ステートＳ２０２のＣＬＫ０の第３のサイクルカウント期間に対応する。
【０１０４】
ＣＬＫ０のサイクルＴ６開始時点からＴ７開始時点までの１サイクル期間のＣＬＫ３のローレベル期間は、ステートマシン１０１の第４ステートＳ２０３のＣＬＫ０の第４のサイクルカウント期間に対応する。
【０１０５】
以上の設定値は、第２の実施例において説明した設定値と同様である。
【０１０６】
ＣＬＫ２のタイミングはＣＬＫ０のサイクルＴ０開始時点からＴ７開始時点までに、ＣＬＫ０の２サイクル期間のハイレベル、２サイクル期間のローレベル、２サイクル期間のハイレベル、１サイクル期間のローレベルという周期性を持つ。
【０１０７】
ＣＬＫ２のタイミングは、ＣＬＫ０のサイクルＴ７以降もこの周期を繰り返す。
【０１０８】
ＣＬＫ２を生成する分周器５０２が有する分周比設定部４０４には、ステートマシン４０１の各ステートに対応するカウント値として、ＣＰＵ１３０１により次の設定値を設定する。分周比設定部４０４に設定する値は、第１ステートＳ２００のカウント値として４サイクル期間、第２ステートＳ２０１のカウント値として３サイクル期間である。また、第３ステートＳ２０２のカウント値として４サイクル期間、第４ステートＳ２０３のカウント値として３サイクル期間である。これは、同期関係にあって周波数比が２：１の関係にあるＣＬＫ２とＣＬＫ３を生成するにあたり、ＣＬＫ２の立下りエッジとＣＬＫ３の立ち上がりエッジを同期させる関係にある設定値である。このとき、図９のクロックＣＬＫ２のハイレベル期間とローレベル期間はそれぞれ、図３に示されるステートマシン１０１の各ステートに対応する。
【０１０９】
ＣＬＫ０のサイクルＴ０開始時点からＴ４開始時点までの４サイクル期間のＣＬＫ２のハイレベル期間は、ステートマシン１０１の第１ステートＳ２００のＣＬＫ０の第１のサイクルカウント期間に対応する。
【０１１０】
ＣＬＫ０のサイクルＴ４開始時点からＴ７開始時点までの３サイクル期間のＣＬＫ２のローレベル期間は、ステートマシン１０１の第２ステートＳ２０１のＣＬＫ０の第２のサイクルカウント期間に対応する。
【０１１１】
ＣＬＫ０のサイクルＴ７開始時点からＴ１１開始時点までの４サイクル期間のＣＬＫ２のハイレベル期間は、ステートマシン１０１の第３ステートＳ２０２のＣＬＫ０の第３のサイクルカウント期間に対応する。
【０１１２】
ＣＬＫ０のサイクルＴ１１開始時点からＴ１４開始時点までの３サイクル期間のＣＬＫ２のローレベル期間は、ステートマシン１０１の第４ステートＳ２０３のＣＬＫ０の第４のサイクルカウント期間に対応する。
【０１１３】
上述のように、ＣＬＫ２はＣＬＫ０の立ち上がりエッジのタイミングで、ＣＬＫ０の立ち上がりエッジで動作するＦＦによって分周を行うため、ＣＬＫ０のデューティ比が５０％である必要はない。
【０１１４】
ＣＬＫ２のタイミングはＣＬＫ０のサイクルＴ０開始時点からＴ１４開始時点までに、ＣＬＫ０の４サイクル期間のハイレベル、ＣＬＫ０の３サイクル期間のローレベルをＣＬＫ２の１サイクルとして、第１から第４ステートまでに２回繰り返す周期性を持つ。
【０１１５】
本実施例では、ＣＬＫ０の周波数の１／７倍の周波数のＣＬＫ２と２／７倍の周波数のＣＬＫ３を生成しており、ＣＬＫ０の周波数が７００ＭＨｚの場合には、生成されるＣＬＫ２の周波数は１００ＭＨｚに相当し、ＣＬＫ３の周波数は２００ＭＨｚに相当する。
【０１１６】
このように、分周器５０１、５０２それぞれの分周比設定部４０４に設定する値を、ＣＬＫ２とＣＬＫ３のクロックエッジの位置を同期関係となるように設定することによって、同期関係にある複数のクロックＣＬＫ２とＣＬＫ３を分周して生成することができる。
【０１１７】
さらに、図６で示す同期回路のタイミングチャートと同様に、生成したクロックＣＬＫ２、ＣＬＫ３の中で最短となるサイクル期間をタイミング制約とすることによって、生成した複数のクロックで動作する同期回路のタイミング設計を行うことができる。
【０１１８】
〔他の実施形態〕
本発明は、以下の処理を実行することによっても実現される。
【０１１９】
即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015111377.tif 000003
【図２】
2015111377.tif 000004
【図３】
2015111377.tif 000005
【図４】
2015111377.tif 000006
【図５】
2015111377.tif 000007
【図６】
2015111377.tif 000008
【図７】
2015111377.tif 000009
【図８】
2015111377.tif 000010
【図９】
2015111377.tif 000011
【図１０】
2015111377.tif 000012