(57)【特許請求の範囲】
【請求項１】
プロセッサは、
クロック生成用の割り込み処理を行うための割り込みタイミングを認識し、
前記割り込みタイミングよりも所定時間前におけるクロックのレベルを判断し、
前記クロックのレベルが低電位レベルの場合、データの値が０か１かを判断し、前記データが０の場合は、前記データ値の出力値として０を出力する処理を行い、前記データが１の場合は、前記データ値の出力値として１を出力する処理を行う第１処理を行い、
前記クロックのレベルが高電位レベルの場合、前記データの値が０か１かを判断し、前記データの値が０の場合は、前記データの値として０または１をダミー出力する処理を行い、前記データの値が１の場合は、前記データの値として０または１をダミー出力する処理を行う第２処理を行い、
前記第１処理または前記第２処理の後に、前記クロックのレベルを反転出力する反転出力処理を行う、
ことを特徴とするクロック生成方法。
【請求項２】
前記プロセッサは、前記クロックのレベル反転出力処理後に、前記クロックのレベルを判断し、前記クロックのレベルが低電位レベルの場合は、０の前記データを出力し、前記クロックのレベルが高電位レベルの場合は、１の前記データを出力して、次の割り込みタイミングを受けることを特徴とする請求項１記載のクロック生成方法。
【請求項３】
前記第１処理に要する時間と、前記第２処理に要する時間とは同一であることを特徴とする請求項１記載のクロック生成方法。
【請求項４】
前記プロセッサは、前記第１処理において、データ出力処理の後に、前記データの次ビット参照処理を行い、前記第２処理において、ダミー出力処理の後に、前記データのダミー次ビット参照処理を行うことを特徴とする請求項１記載のクロック生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、クロック生成方法に関する。
【背景技術】
【０００２】
クロック同期方式の伝送制御では、クロックの立ち上がりまたは立ち下りに対して、信号線を流れるデータが所定のホールドタイムを満たすことが要求される。このため、データの立ち上げ後に、クロックの立ち上げまたは立ち下げが行われるように、クロック波形が生成される。
【０００３】
従来技術としては、ＰＷＭ（Pulse Width Modulation）パルスを生成するためのタイマに入力する基準クロックの周期を調整して、パワー素子のスイッチング時間差が所定時間に一致しないように制御する技術が提案されている（特許文献１）。
【０００４】
また、ＲＡＭ（Random Access Memory）内のデューティ値とＰＷＭカウンタの出力値とのコンペアマッチ毎に、次のデューティ値がＣＰＵ（Central Processing Unit）の介在無しにＲＡＭからロードして、ＰＷＭパルスのデューティ値の時系列変化を可能にする技術が提案されている（特許文献２）。
【０００５】
さらに、マイクロコンピュータ内蔵の機能とソフトウェア制御とを用いて、ハードウェアカウンタを変更することなくビット長を拡張し、入力信号の周波数を検出する技術が提案されている（特許文献３）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２４５９６１号公報
【特許文献２】特開２００９−２８２８２８号公報
【特許文献３】特開２００２−１６８８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データをクロックでサンプリングする場合、クロックのＨレベルの時間と、Ｌレベルの時間とに所望範囲を超える時間差が生じると、クロックの立ち上がりまたは立ち下りに対して、データが所定のホールドタイムを満たせなくなる場合がある。このような状態が生じると、正しくサンプリングを行うことができない。このため、クロックを生成する際には、クロックのＨレベル時間と、Ｌレベル時間とが等しいことが要求される（デューティ比＝１）。
【０００８】
このような関係を保持するためには、従来では、カウンタによってタイミングをカウントし、所定のカウント値になったら、クロックの立ち上げ、または立ち下げを行って所望のタイミング波形を生成することが行われている。
【０００９】
しかし、上記のようなクロック生成をハードウェアで構成する場合、クロック周波数の変更が容易ではなく、クロック周波数の変更を要する際には回路規模が増大する可能性がある。また、ソフトウェアで構成するとプログラムが複雑になる可能性がある。
【００１０】
本発明はこのような点に鑑みてなされたものであり、簡易な構成によって、Ｈレベル時間と、Ｌレベル時間との時間差を抑制したクロックを生成するクロック生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、クロック生成方法が提供される。クロック生成方法において、プロセッサは、クロック生成用の割り込み処理を行うための割り込みタイミングを認識し、割り込みタイミングにおける割り込みタイミングよりも所定時間前のクロックのレベルを判断する。また、クロックのレベルが低電位レベルの場合、データの値が０か１かを判断し、データが０の場合は、データ値０を出力し、データが１の場合は、データ値１を出力する第１処理を行う。さらに、割り込みタイミングよりも所定時間前のクロックのレベルが高電位レベルの場合、データの値が０か１かを判断し、データが０の場合は、データ値０または１をダミー出力し、データが１の場合は、データ値０または１をダミー出力する第２処理を行う。そして、第１処理または第２処理の後に、クロックのレベルを反転出力する。
【発明の効果】
【００１２】
簡易な構成によって、Ｈレベル時間と、Ｌレベル時間との時間差を抑制したクロックを生成することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】クロック生成方法およびクロック生成装置の一例を示す図である。
【図２】クロック生成装置の一例の機能ブロック図である。
【図３】クロック生成動作を説明するための図である。
【図４】クロック生成動作を説明するための図である。
【図５】クロック生成装置の構成例を示す図である。
【図６】クロック生成動作を説明するための図である。
【図７】クロック生成方法の流れを示すフローチャートである。
【図８】クロックのＨレベル時間とＬレベル時間とに時間差が生じないクロック生成を説明するための図である。
【図９】クロックのＨレベル時間とＬレベル時間とに時間差が生じるクロック生成を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、実施の形態について図面を参照して説明する。
（第１の実施の形態）
図１はクロック生成方法およびクロック生成装置の一例を示す図である。図２はクロック生成装置の一例の機能ブロック図である。第１の実施の形態のクロック生成装置１は、半導体デバイスや伝送機器等に対し、クロックおよびデータを生成して出力する装置である。
【００１５】
クロック生成装置１は、デジタルシグナルプロセッサ（ＤＳＰ）などからなるプロセッサ２とＲＡＭ（Random Access Memory）などからなる記憶部２−１とプロセッサ２とデータをやり取りする入出力回路部とを有している。プロセッサ２と記憶部２−１との間のデータのやり取りは、入出力回路部を介しておこなってもよい。プロセッサ２は、記憶部２−１に記憶されているデータおよびプログラムにもとづき、図２に示すような、割り込みタイミング認識部２ａ、判断部２ｂ、データ出力処理部２ｃ、クロック出力部２ｄおよびデータ出力調整部２ｅの機能を実現し、入出力回路部に出力する。記憶部２−１は、プロセッサ２が実行するプログラムや各種データを記憶する。
【００１６】
プロセッサ２の機能として、割り込みタイミング認識部２ａは、クロック生成用の割り込みタイミングを認識する。割り込みタイミングは、クロック生成装置１が自ら発生してもよいし、外部から送信された割り込みタイミングの信号を受信する構成としてもよい。判断部２ｂは、割り込みタイミングよりも所定時間前のクロックのレベルを判断する。
【００１７】
データ出力処理部２ｃは、第１処理および第２処理を行う。第１処理において、データ出力処理部２ｃは、判断部２ｂによって判断されたクロックのレベルが低電位レベル（Ｌレベル）の場合、記憶部２−１に記憶されたデータのｎ番目（ｎは自然数）の値が０か１かを判断する。そして、データが１の場合は、データ値１を出力する処理を行い、データが０の場合は、データ値０を出力する処理を行う。
【００１８】
また、第２処理において、データ出力処理部２ｃは、判断部２ｂによって判断されたクロックのレベルが高電位レベル（Ｈレベル）の場合、データの値が０か１かを判断する。そして、データが０の場合は、データ値０をダミー出力する処理を行い、データが１の場合は、データ値１をダミー出力する処理（第２処理（ダミー処理））を行う。ここで、データが０の場合にデータ値０をダミー出力したが、ダミー出力であるので、データ値として０をダミー出力せずにデータ値１をダミー出力してもよい。同様に、データ値が１の場合に０をダミー出力してもよい。
【００１９】
クロック出力部２ｄは、第１処理または第２処理の後に、クロックのレベルを反転出力する。
データ出力調整部２ｅは、クロックのレベルがＬレベルの場合、データ値０を出力する処理を行い、クロックのレベルがＨレベルの場合、データ値として１を出力する処理を行う。データ出力調整部２ｅは、主にデータの出力波形を見やすくするものであり、第２処理の後にデータの出力値として０を出力するものである。データ出力調整部２ｅは、設けなくてもよい。
【００２０】
ここで、図１において、クロック生成装置１に対して、半周期がＴのクロック生成用の割り込みタイミングが発生するものとする（割り込み周期＝Ｔ）。まず、割り込みタイミングの時刻ｔ１では、時刻ｔ１よりも所定時間前のクロックレベルがＬレベルであるから、第１処理が行われる。
【００２１】
この例では、プロセッサ２は、時刻ｔ１においてデータ値１を出力する第１処理を行い、この第１処理後（時刻ｔ１から時間ｔＡが経過した後）に、クロックのレベルを反転して出力する（Ｌレベル→Ｈレベル）。クロックのレベルがＨレベルであるのでそのままデータの出力値は１となる。
【００２２】
一方、割り込みタイミングの時刻ｔ２では、時刻ｔ２よりも所定時間前のクロックレベルがＨレベルであるから、第２処理が行われる。この例では、時刻ｔ２においてデータ値１を出力する第２処理を行うこの第２処理後（時刻ｔ２から時間ｔＢが経過した後）に、クロックのレベルを反転して出力する（Ｈレベル→Ｌレベル）。クロックのレベルがＬレベルであるのでデータの出力値を反転して０を出力する。
【００２３】
なお、上記の所定時間は、割り込み周期Ｔよりも小さい。また、時間ｔＡは、割り込みタイミングの時刻ｔ１から第１処理が開始してから終了するまでの処理時間であり、時間ｔＢは、割り込みタイミングの時刻ｔ２から第２処理が開始してから終了するまでの処理時間である。さらに、第１処理と第２処理は、同じプログラミング処理であるから、時間ｔＡと時間ｔＢは共に等しい（ｔＡ＝ｔＢ）。
【００２４】
このようなクロック生成処理を行うことで、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとの時間差を抑制することができる。すなわち、ｔＨ＝ｔＬ（＝Ｔ）のクロックを常に生成することができる。また、クロックとデータとの関係において、所定のホールドタイムを満たすことができる（動作の詳細は図６以降で説明する）。
【００２５】
（解決すべき課題）
次に本技術の詳細を説明する前に、従来のクロック生成動作を示して、解決すべき課題について図３、図４を用いて説明する。図３はクロック生成動作を説明するための図である。１つのカウンタＣ０を用いた従来のクロック生成動作を示している。
【００２６】
〔Ｓ１、Ｓ１ａ〕データは、カウンタＣ０のカウント値＝１の立ち下がり時に、データ値が０から１に遷移する。
〔Ｓ２、Ｓ２ａ〕クロックは、カウンタＣ０のカウント値＝２の立ち下がり時に、ＬレベルからＨレベルに遷移する。
【００２７】
〔Ｓ３、Ｓ３ａ〕クロックは、カウンタＣ０のカウント値＝６の立ち下り時に、ＨレベルからＬレベルに遷移する。
〔Ｓ４、Ｓ４ａ〕データは、カウンタＣ０のカウント値＝７の立ち下り時に、データ値が１から０に遷移する。
【００２８】
図３において、クロックの立ち上がりに対してデータがホールドタイムｔｈｏｌｄを満たし、また、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとは等しくなっている。
図４はクロック生成動作を説明するための図である。複数のカウンタＣ１〜Ｃ４を用いた従来のクロック生成動作を示している。なお、同一時間帯において互いのカウント値が一致するようにカウンタＣ１〜Ｃ４は動作するものとする。
【００２９】
〔Ｓ１１、Ｓ１１ａ〕データは、カウンタＣ１のカウント値＝１の立ち下がり時に、データ値が０から１に遷移する。
〔Ｓ１２、Ｓ１２ａ〕クロックは、カウンタＣ２のカウント値＝２の立ち下がり時に、ＬレベルからＨレベルに遷移する。
【００３０】
〔Ｓ１３、Ｓ１３ａ〕クロックは、カウンタＣ３のカウント値＝６の立ち下り時に、ＨレベルからＬレベルに遷移する。
〔Ｓ１４、Ｓ１４ａ〕データは、カウンタＣ４のカウント値＝７の立ち下り時に、データ値が１から０に遷移する。
【００３１】
図４において、クロックの立ち上がりに対してデータがホールドタイムｔｈｏｌｄを満たし、また、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとは等しくなっている。
このように、図３、図４では、カウンタが所定のカウント値になると、クロックをＬレベルからＨレベルへ遷移、またはＨレベルからＬレベルへ遷移させ、データを０から１へ遷移、または１から０へ遷移させてクロックおよびデータの生成を行っている。
【００３２】
これにより、クロックの立ち上がりまたは立ち下りに対して、データが所定のホールドタイムｔｈｏｌｄを満たすようにし、さらにクロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとを等しくして、Ｈレベル時間ｔＨと、Ｌレベル時間ｔＬとの間に時間差が生じないようにしている。
【００３３】
しかし、このようなカウンタのカウント値を利用したクロック生成動作では、ハードウェアで構成する場合、従来では、クロック周波数の変更が容易ではなく、クロック周波数の変更を要する際には回路規模が増大してしまうという問題がある。また、ソフトウェアで構成すると、従来では、プログラムが複雑になるという問題がある。
【００３４】
本発明はこのような点に鑑みてなされたものであり、簡易な構成によって、ホールドタイムを満たしながら、かつクロックのＨレベル時間と、Ｌレベル時間との時間差を抑制したクロック生成方法およびクロック生成装置を提供するものである。
【００３５】
（第２の実施の形態）
図５はクロック生成装置の構成例を示す図である。第２の実施の形態のクロック生成装置は、コンピュータ２０であり、プロセッサ２１によって装置全体が制御されている。また、プロセッサ２１は、図１、図２のプロセッサ２の機能を有する。
【００３６】
プロセッサ２１には、ＲＡＭ（Random Access Memory）２２と入出力部２３が接続されている。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えば、ＤＳＰ（Digital Signal Processor）である。
【００３７】
ＲＡＭ２２は、コンピュータ２０の主記憶装置として使用され、図１、図２の記憶部２−１の機能を有する。ＲＡＭ２２は、プロセッサ２１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に格納することができる。また、ＲＡＭ２２には、プロセッサ２１による処理に必要な各種データが格納される。
【００３８】
入出力部２３は、プロセッサ２１から送信されたデジタルデータを受信し出力ポート２３−１より外部へ出力する。また、入出力部２３は、ダミー出力ポート２３−２を備えており、プロセッサ２１からダミー出力処理により送信されたデータを出力する。ダミー出力ポート２３−２は接地してもよい。また、入出力部２３は、外部からデジタルデータを入力ポート２３−３より入力し、プロセッサ２１に送信する。
【００３９】
（クロック生成動作）
図６はクロック生成動作を説明するための図である。本発明のクロック生成方法およびクロック生成装置で動作する割り込みタイミング、クロックおよびデータの各波形のタイミングチャートを示している。なお、割り込み周期を５μｓとしている。ＲＡＭ２２に記憶されているデータとしては、複数ビットからなるデータである。図６では、所定のアドレスに格納されたデータのうち３ビット分について示している。なお３ビット分のデータ値は１１１とし、最初のビットのアドレスｎを１とする。
【００４０】
〔Ｓ２１〕クロック生成用の割り込みタイミングが発生する。この割り込みタイミングは、プロセッサ２１が割り込み用カウントのプログラムを起動して発生させることができる。または、クロック生成装置の内部または外部に位置するカウンタによって割り込み信号を生成して、この割り込み信号を受信する構成としてもよい。
【００４１】
〔Ｓ２２〕プロセッサ２１は、クロック生成用の割り込みタイミングを認識することで、クロック生成のための割り込み処理を起動する。
〔Ｓ２３〕プロセッサ２１は、時刻ｔ１の割り込みタイミングにおいて、時刻ｔ１よりも所定時間τ（０＜τ＜５μｓ）の前におけるクロックがＬレベルの場合、データの値が０か１かを判断する。そして、データ＝０の場合は、データの出力値として出力ポート２３−１に０を出力する処理を行い、データ＝１の場合は、データの出力値として出力ポート２３−１に１を出力する処理を行う。この例では、時刻ｔ１において時刻ｔ１よりも所定時間τの前においてクロックがＬレベルであり、最初のデータ値は１（ｎ＝１）であるから、プロセッサ２１は、時刻ｔ１においてデータの出力値として１を出力する処理を行う。そして、次ビットのデータ値を参照するための次ビット参照処理を行う。具体的には、ｎに１を加えてカウントアップする（ｎ＝ｎ＋１）。
【００４２】
〔Ｓ２４〕ステップＳ２３の処理に要する時間をｔＡとすると、プロセッサ２１は、時刻ｔ１から時間ｔＡの経過後に、クロックの反転出力する処理を行う。すなわち、時刻ｔ１から時間ｔＡの経過後に、クロックをＬレベルからＨレベルに反転させて出力する処理を行う。
【００４３】
〔Ｓ２５〕プロセッサ２１は、ステップＳ２４によるクロックレベル反転出力処理後の現時点のクロックのレベルを判断し、クロックがＨレベルの場合は、データ値１を出力する処理を行い、クロックがＬレベルの場合は、データ値０を出力する処理を行う。ここでは、クロックがＨレベルであり、データ値１の出力が次の割り込みタイミングまで維持されている。
【００４４】
〔Ｓ２６〕時刻ｔ２の次の割り込みタイミングにおいて、時刻ｔ２よりも所定時間τの前においてクロックがＨレベルの場合、ダミー処理を行う。ダミー処理の時間ｔＢは、時間ｔＡと同じ時間となるような処理を行う。まず、ダミー出力処理を行い、次にダミー次ビット参照処理を行う。
【００４５】
ダミー出力処理は、データの値が０か１かを判断する。そして、データ＝０の場合は、ダミー出力ポート２３−２にデータ値０を出力する処理を行い、データ＝１の場合は、ダミー出力ポート２３−２にデータ値１を出力する処理を行う。この例では、時刻ｔ２よりも所定時間τの前においてクロックがＨレベルであり、データ＝１（ｎ＝２）であるから、プロセッサ２１は、時刻ｔ２においてダミー出力ポート２３−２にデータの出力値として０を出力する処理を行う。よって、出力ポート２３−１のデータの出力値は１を維持する。次にＳ２３で行ったカウントアップと同じ処理時間となるようにｎに０を加算するダミー次ビット参照処理を行う（ｎ＝ｎ＋０）。ｎの値は２を維持する。これらのダミー処理によりステップＳ２６の処理に要する時間ｔＢをステップＳ２３の処理に要する時間ｔＡとが同じ時間となる。
【００４６】
〔Ｓ２７〕ステップＳ２６の処理に要する時間をｔＢとすると、プロセッサ２１は、時刻ｔ２から時間ｔＢの経過後に、クロックの反転出力処理を行う。すなわち、時刻ｔ２から時間ｔＢの経過後に、クロックをＨレベルからＬレベルに反転させて出力する処理を行う。
【００４７】
また、プロセッサ２１は、ステップＳ２７によるクロックレベル反転出力処理後の現時点のクロックのレベルを判断し、クロックがＨレベルの場合は、データ値１を出力する処理を行い、クロックがＬレベルの場合は、データ値０を出力する処理を行う。ここでは、クロックがＬレベルであり、データ値１の出力が反転されデータ値０が出力ポート２３−１より出力される。
【００４８】
〔Ｓ２３ａ〕プロセッサ２１は、時刻ｔ３の次の割り込みタイミングにおいて、時刻ｔ３よりも所定時間τの前におけるクロックがＬレベルの場合、データの値が０か１かを判断する。そして、データ＝０の場合は、データ値１を出力し、データ＝１の場合は、データ値０を出力する。この例では、時刻ｔ３においてクロックがＬレベルであり、時刻ｔ３よりも所定時間τの前においてデータ＝１（ｎ＝２）であるから、プロセッサ２１は、時刻ｔ３においてデータ値１を出力する処理を行う。そして、ｎに１を加えてカウントアップする次ビット参照処理を行う（ｎ＝ｎ＋１）。
【００４９】
〔Ｓ２４ａ〕ステップＳ２３ａの処理に要する時間をｔＣとすると、プロセッサ２１は、時刻ｔ３から時間ｔＣの経過後に、クロックの反転出力処理を行う。すなわち、時刻ｔ３から時間ｔＣの経過後に、クロックをＬレベルからＨレベルに反転させて出力する処理を行う。
【００５０】
〔Ｓ２５ａ〕プロセッサ２１は、ステップＳ２４ａによるクロックレベル反転出力処理後の現時点のクロックのレベルを判断し、クロックがＨレベルの場合は、データ値として１を出力する処理を行い、クロックがＬレベルの場合は、所定時間の間、データ値として０を出力する処理を行う。ここでは、クロックがＨレベルであり、データ値として１の出力が次の割り込みタイミングまで維持されている。
【００５１】
〔Ｓ２６ａ〕プロセッサ２１は、時刻ｔ４の次の割り込みタイミングにおいて、時刻ｔ４よりも所定時間τの前においてクロックがＨレベルの場合、ダミー処理を行う。まず、データ＝０の場合は、ダミー出力ポート２３−２にデータ値０を出力する処理を行い、データ＝１の場合は、ダミー出力ポート２３−２にデータ値１を出力する処理を行う。この例では、時刻ｔ４よりも所定時間τの前においてクロックがＨレベルであり、データ＝１（ｎ＝３）であるから、プロセッサ２１は、時刻ｔ４においてダミー出力ポート２３−２にデータ値１を出力する処理を行う。次にＳ２３ａで行った次ビット参照処理と同じ処理時間となるようにｎに０を加算するダミー次ビット参照処理を行う（ｎ＝ｎ＋０）。
【００５２】
〔Ｓ２７ａ〕ステップＳ２６ａの処理に要する時間をｔＤとすると、プロセッサ２１は、時刻ｔ４から時間ｔＤの経過後に、クロックの反転出力を行う。すなわち、時刻ｔ４から時間ｔＤの経過後に、クロックをＨレベルからＬレベルに反転させて出力する。
【００５３】
また、プロセッサ２１は、ステップＳ２７ａによるクロックレベル反転出力処理後の現時点のクロックのレベルを判断し、クロックがＨレベルの場合は、データ値１を出力する処理を行い、クロックがＬレベルの場合は、データ値０を出力する処理を行う。ここでは、クロックがＬレベルであり、データ値１の出力が反転されデータ値として０を出力する。
【００５４】
ここで、時間ｔＡは、時刻ｔ１からステップＳ２３の処理が開始してから終了するまでの処理時間であり、時間ｔＢは、時刻ｔ２からステップＳ２６の処理が開始してから終了するまでの処理時間である。また、ステップＳ２３とステップＳ２６は基本的に同じプログラミング処理であるから、時間ｔＡと時間ｔＢは共に等しい（ｔＡ＝ｔＢ）。
【００５５】
同様に、時間ｔＣは、時刻ｔ３からステップＳ２３ａの処理が開始してから終了するまでの処理時間であり、時間ｔＤは、時刻ｔ４からステップＳ２６ａの処理が開始してから終了するまでの処理時間である。また、ステップＳ２３ａとステップＳ２６ａは基本的に同じプログラミング処理であるから、時間ｔＣと時間ｔＤは共に等しい（ｔＣ＝ｔＤ）。すなわち、ｔＡ＝ｔＢ＝ｔＣ＝ｔＤである。
【００５６】
割り込みタイミングにおいて、一定時間（ｔＡ、ｔＣ）経過後にクロックが立ち上がり、次の割り込みタイミングにおいて、一定時間（ｔＢ、ｔＤ）経過後にクロックが立ち下がる処理が行われる。
【００５７】
したがって、このようなクロック生成動作により、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとが一致し（ｔＨ＝ｔＬ＝５μｓ）、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとの時間差を抑制することが可能になる。また、データが１に設定されてから、時間ｔＡおよび時間ｔＣの経過後に、クロックが立ち上がるので、ホールドタイムを満たすことも可能になる。
【００５８】
図７はクロック生成方法の流れを示すフローチャートである。
〔Ｓ３１〕プロセッサ２１は、クロック生成用の割り込みタイミングを認識入力することで、クロック生成のための割り込み処理を起動する。
【００５９】
〔Ｓ３２〕プロセッサ２１は、割り込みタイミングにおいて、割り込みタイミングよりも所定時間前のクロックのレベルを判断する。クロックがＬレベルの場合は、ステップＳ３３−１（第１処理に該当）へ行き、クロックがＨレベルの場合は、ステップＳ３３−２（第２処理に該当）へ行く。
【００６０】
なお、ステップＳ３３−１は、ステップＳ３３ａ−１、Ｓ３３ｂ−１、Ｓ３３ｃ−１、Ｓ３３ｄ−１を含み、ステップＳ３３−２は、ステップＳ３３ａ−２、Ｓ３３ｂ−２、Ｓ３３ｃ−２、Ｓ３３ｄ−２を含む。
【００６１】
〔Ｓ３３ａ−１〕プロセッサ２１は、ｎ番目のデータの値が０か１かを判断する。データ＝１の場合は、ステップＳ３３ｂ−１へ行き、データ＝０の場合は、ステップＳ３３ｃ−１へ行く。
【００６２】
〔Ｓ３３ｂ−１〕プロセッサ２１は、出力ポート２３−１へデータ値１を出力する処理を行い、ステップＳ３３ｄ−１へ行く。
〔Ｓ３３ｃ−１〕プロセッサ２１は、出力ポート２３−２へデータ値０を出力する処理を行い、ステップＳ３３ｄ−１へ行く。
【００６３】
〔Ｓ３３ｄ−１〕プロセッサ２１は、ｎに１を加える処理を行う（ｎ＝ｎ＋１）。
〔Ｓ３３ａ−２〕プロセッサ２１は、ｎ番目のデータの値が０か１かを判断する。データ＝１の場合は、ステップＳ３３ｂ−２へ行き、データ＝０の場合は、ステップＳ３３ｃ−２へ行く。
【００６４】
〔Ｓ３３ｂ−２〕プロセッサ２１は、ダミー出力ポートへデータ値１を出力し、ステップＳ３３ｄ−２へ行く。
〔Ｓ３３ｃ−２〕プロセッサ２１は、ダミー出力ポートへデータ値０を出力し、ステップＳ３３ｄ−２へ行く。
【００６５】
〔Ｓ３３ｄ−２〕プロセッサ２１は、ｎに０を加える処理を行う（ｎ＝ｎ＋０）。
〔Ｓ３４〕プロセッサ２１は、クロックのレベルを反転して出力する。
〔Ｓ３５〕プロセッサ２１は、現時点のクロックのレベルを判断する。クロックがＬレベルの場合は、ステップＳ３６へ行き、クロックがＨレベルの場合は、ステップＳ３７へ行く。
【００６６】
〔Ｓ３６〕プロセッサ２１は、割込みのタイミング（例えば、時刻ｔ２）から所定時間経過後（例えば時間ｔＢ）、データ値０を出力する。
〔Ｓ３７〕プロセッサ２１は、割込みのタイミング（例えば、時刻ｔ１）から所定時間経過後（例えば、時間ｔＡ）の間、データ値１を出力する。
【００６７】
〔Ｓ３８〕プロセッサ２１は、次の割り込みタイミングを許可する。ステップＳ３１の処理へ戻る。
図６と図７の対応関係を示すと、図６のステップＳ２２は、図７のステップＳ３１で実行される。図６のステップＳ２３、Ｓ２３ａは、図７のステップＳ３２、Ｓ３３−１で実行される。図６のステップＳ２４、Ｓ２４ａは、図７のステップＳ３４で実行される。
【００６８】
また、図６のステップＳ２５、Ｓ２５ａは、図７のステップＳ３５、Ｓ３７で実行される。図６のステップＳ２６、Ｓ２６ａは、図７のステップＳ３２、Ｓ３３−２で実行される。図６のステップＳ２７、Ｓ２７ａは、図７のステップＳ３４で実行される。
【００６９】
なお、図７に示すステップＳ３３−１の処理時間、およびステップＳ３３−２の処理時間は、プログラミングのステップ数を増やすなどして（例えば、単に時間を作るためのループ処理などを追加して）、所望のホールドタイムを満たすように設定することができる。ただし、ステップＳ３３−１の処理時間と、ステップＳ３３−２の処理時間とは同一の時間になるようにする。
【００７０】
このようにして、本発明では、所望のホールドタイムを容易に設定することができ、また、セットアップタイムについても容易に設定することができる。
上記のように、本発明では、同じプログラミング処理（同じ処理時間）である、ステップＳ３３−１による第１処理と、ステップＳ３３−２による第２処理とを有している。ここで、もし、図７に示したステップＳ３３−２の処理が無い場合、クロックには、Ｈレベル時間と、Ｌレベル時間とに時間差が生じてしまうことになる。このことについて、図８、図９を用いて以下説明する。
【００７１】
図８はクロックのＨレベル時間とＬレベル時間とに時間差が生じないクロック生成を説明するための図である。本発明では、割り込みタイミングの時刻ｔ１において時刻ｔ１から所定時間前におけるクロックのレベルがＬレベルの場合に、図７のステップＳ３３−１のデータ設定処理である第１処理が行われる。そして、図７のステップＳ３４により、時刻ｔ１から時間ｔＡ後にクロックがＬレベル→Ｈレベルと反転出力する。
【００７２】
また、次の割り込みタイミングの時刻ｔ２では、時刻ｔ２から所定時間前におけるクロックのレベルがＨレベルの場合に、図７のステップＳ３３−２のデータ設定処理である第２処理が行われる。そして、ステップＳ３４により、時刻ｔ２から時間ｔＢ後にＨレベル→Ｌレベルと反転出力する。これにより、生成されるクロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとは等しくなる。
【００７３】
図９はクロックのＨレベル時間とＬレベル時間とに時間差が生じるクロック生成を説明するための図である。図７に示したステップＳ３３−２の処理が無い場合のクロック生成を示している。
【００７４】
まず、割り込みタイミングの時刻ｔ１においては、上記と同様に、時刻ｔ１から所定時間前におけるクロックのレベルがＬレベルの場合に、図７のステップＳ３３−１のデータ設定処理である第１処理が行われる。そして、図７のステップＳ３４により、時刻ｔ１から時間ｔＡ後にクロックがＬレベル→Ｈレベルと反転出力する。
【００７５】
また、次の割り込みタイミングの時刻ｔ２では、時刻ｔ２から所定時間前におけるクロックのレベルがＨレベルの場合に、ステップＳ３３−２の処理を行わないとすると、ステップＳ３４によってクロックが反転出力（Ｈレベル→Ｌレベル）することになる。
【００７６】
このように、ステップＳ３３−２の処理が無いと、時刻ｔ２において、クロックが反転出力することになる。このため、クロックのＨレベル時間ｔＨと、Ｌレベル時間ｔＬとに時間差が生じてしまうことになる。
【００７７】
このように、本発明では、割り込みタイミングにおいてクロックのレベルがＬレベルの場合のデータ値の設定処理と、次の割り込みタイミングにおいてクロックのレベルがＨレベルの場合のデータ値の設定処理とを同じプログラミング処理とし、これらの処理後にクロックの反転出力を行うこととした。
【００７８】
これにより、所定のホールドタイムを満たしながら、クロックのＨレベル時間と、Ｌレベル時間との時間差を抑制することが可能になる。また、本発明では、簡易なプログラムにより実現することができるので、従来のようなクロック生成のためのカウンタのカウント値は不要となる。さらに、簡易なプログラムにより実現するので、クロック周波数も容易に変更することが可能になる。例えば、割り込み周期を変えることで、クロック周期も容易に変更できる。
【００７９】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
【符号の説明】
【００８０】
１  クロック生成装置
２  プロセッサ
２−１  記憶部
ｔ１、ｔ２  割り込みタイミング
Ｔ  割り込み周期
ｔＨ  クロックのＨレベル時間
ｔＬ  クロックのＬレベル時間
ｔＡ  第１処理に要する時間
ｔＢ  第２処理に要する時間
【図１】
0006528671.tif 000002
【図２】
0006528671.tif 000003
【図３】
0006528671.tif 000004
【図４】
0006528671.tif 000005
【図５】
0006528671.tif 000006
【図６】
0006528671.tif 000007
【図７】
0006528671.tif 000008
【図８】
0006528671.tif 000009
【図９】
0006528671.tif 000010