以下、クロック信号生成装置およびクロック信号生成方法の実施の形態について、添付図面を参照して説明する。
最初に、クロック信号生成装置1の構成について説明する。図1に示すクロック信号生成装置1は、受信部11、発振回路21、第1処理部31、第2処理部32および第3処理部33を備えて構成され、電気信号のA/D変換やD/A変換を行う際に用いるクロック信号(サンプリングクロック)S3を後述するクロック信号生成方法に従って生成する。なお、第1処理部31、第2処理部32および第3処理部33によって処理部が構成される。
受信部11は、図1に示すように、GPS衛星100から発信されるGPS信号S0をGPSアンテナ11aを介して受信する。また、受信部11は、受信したGPS信号S0に対する処理を実行して、1秒信号S1を1秒間隔で生成し、第1処理部31、第2処理部32および第3処理部33に出力する。
発振回路21は、一例として水晶発振回路であって、1秒当りに発生させるべき数である周波数Nfが、例えば1MHz〜100MHz程度に規定された高周波のパルス信号S2を出力する。
第1処理部31は、図1に示すように、処理回路31aおよびカウンタ31bを備えて構成され、図2に示す第1処理50を実行することにより、第3処理部33によって実行される補正処理(クロック信号S3の生成周期を補正する処理)の際に用いる誤差D1(第1の誤差に相当する)を特定し、その誤差D1を示す誤差信号S4aを出力する。具体的には、この第1処理50では、第1処理部31の処理回路31aが、受信部11から1秒信号S1が出力されたか否かを判別する(ステップ51)。ステップ51において、1秒信号S1が出力されたと判別したときには、処理回路31aは、カウンタ31bに対して発振回路21から出力されたパルス信号S2の数をカウントさせると共に(ステップ52)、カウンタ31bによってカウントされたパルス信号S2の数(以下、この数を「カウント数C」ともいう)が、予め決められた規定値Nrs(パルス信号S2の周波数Nfの値よりも大きい値であって、一例として、周波数Nfの値の100.01%に相当する値)以上であるか否かを判別する(ステップ53)。なお、この規定値Nrsが、第2規定値に相当する。
また、処理回路31aは、ステップ53において、カウント数Cが規定値Nrs以上ではない(カウント数Cが規定値Nrs未満である)と判別したときには、次の1秒信号S1が出力されたか否かを判別する(ステップ54)。この場合、次の1秒信号S1が出力されていないと判別したときには、処理回路31aは、ステップ52〜54を繰り返して実行し、次の1秒信号S1が出力されたと判別したときには、カウント数Cが、予め決められた規定値Nrt(パルス信号S2の周波数Nfの値よりも小さい値であって、一例として、周波数Nfの値の99.99%に相当する値)以下であるか否かを判別する(ステップ55)。なお、この規定値Nrtが、第3規定値に相当する。
また、処理回路31aは、ステップ55において、カウント数Cが規定値Nrt以下ではない(カウント数Cが規定値Nrtを超えている)と判別したときには、受信部11から1秒信号S1が2回出力される間(つまり、2回の1秒信号S1によって特定される「1秒間」)にカウントされたパルス信号S2のカウント数C(以下、このカウント数Cを「第1カウント数C1」ともいう)と、パルス信号S2の周波数Nfの値(1秒当りに生成すべきパルス信号S2の数)との差分値である誤差D1を特定すると共に、その誤差D1を示す誤差信号S4aを第2処理部32および第3処理部33に出力する(ステップ56)。次いで、処理回路31aは、カウンタ31bに対して、カウント数Cをリセットさせる(ステップ57)。
一方、上記したステップ53において、カウント数Cが規定値Nrs以上となっても、なお次の1秒信号S1が出力されないときには、その原因がパルス信号S2の誤差が原因ではなく、他の原因(例えば、受信部11の故障やGPS信号S0のレベル低下等)である可能性が高い。また、上記したステップ55において、カウント数Cが規定値Nrt以下の時点で、次の1秒信号S1が出力されたときにも、その原因がパルス信号S2の誤差が原因ではなく、他の原因(例えば、1秒信号S1以外のノイズ等の入力)である可能性が高い。このようなときに、その時点における差分値で補正処理を行ったときには、却ってクロック信号S3の生成周期に大きな誤差が生じることとなる。このため、処理回路31aは、ステップ53において、誤差D1が規定値Nrs以上であると判別したとき、およびステップ55において、誤差D1が規定値Nrt以下であると判別したときは、直前に特定した誤差D1を保持すると共に、第1エラー信号S7aを出力し(ステップ58)、次いで、カウンタ31bに対して、カウント数Cをリセットさせる(ステップ57)。処理回路31aは、以後、ステップ52〜58を繰り替えして実行する。
第2処理部32は、図1に示すように、処理回路32aおよびカウンタ32bを備えて構成され、図3に示す第2処理60を実行することにより、上記した誤差D1による補正だけでは補正しきれない要因(例えば、発振回路21の周波数Nfの変動など)に起因するクロック信号S3の生成周期の不均一な誤差を補正するための誤差D2(第2の誤差および第3の誤差に相当する)を特定し、その誤差D2を示す誤差信号S4bを出力する。具体的には、この第2処理60では、第2処理部32の処理回路32aが、第3処理部33から出力されるステータス信号S5に基づき、第3処理部33が「補正中」(補正処理の実行中)であるか否かを判別する(ステップ61)。処理回路32aは、第3処理部33が補正処理の実行中であると判別したときには、このステップ61を繰り返して実行し、第3処理部33が補正処理の非実行中である(補正処理の実行中ではない)と判別したときには、受信部11から1秒信号S1が出力されたか否かを判別する(ステップ62)。
ステップ62において、1秒信号S1が出力されたと判別したときには、処理回路32aは、カウンタ32bに対して、発振回路21から出力されたパルス信号S2の数をカウントさせると共に(ステップ63)、第3処理部33から後述する1秒完了信号S6が出力されたか否かを判別する(ステップ64)。処理回路32aは、ステップ64において、1秒完了信号S6が出力されたと判別したときには、1秒信号S1の出力時点から1秒完了信号S6の出力時点(1秒分のクロック信号S3を出力した時点)までにカウンタ32bによってカウントされたパルス信号S2の数(以下、この値を「第2カウント数C2」ともいう)が規定値Nrf(パルス信号S2の周波数Nfの値よりも小さい値であって、一例として、周波数Nfの値の0.01%に相当する値)以下であるか否かを判別する(ステップ65)。処理回路32aは、この判別条件を満たすと判別したときには、その第2カウント数C2の反数(正負の符号を変えた数:この例では、第2カウント数C2の反数は負の値となる)を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。なお、上記した規定値Nrfが第1規定値に相当する。
また、処理回路32aは、ステップ65において、第2カウント数C2が規定値Nrfを超えていると判別したときには、第2カウント数C2が、パルス信号S2の周波数Nfの値とその時点における上記の誤差D1とを合計した値(以下、この値を「比較値Nc」ともいう)を超え、かつ第2カウント数C2から比較値Ncを差し引いた値(以下、この値を「差分値Nd」ともいう)が規定値Nrf以下であるか否かを判別する(ステップ66)。処理回路32aは、この判別条件を満たすと判別したときには、その差分値Ndの反数(この例では、差分値Ndの反数は負の値となる)を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。
また、処理回路32aは、ステップ66において、ステップ66に規定する判別条件を満たさないと判別したときには、第2カウント数C2が比較値Nc以下で、かつ差分値Ndの反数(この例では、差分値Ndの反数は正の値となる)が規定値Nrf以下であるか否かを判別する(ステップ67)。処理回路32aは、この判別条件を満たすと判別したときには、差分値Ndの反数(正の値)を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。つまり、処理回路32aは、ステップ66〜68を実行することにより、第2カウント数C2が規定値Nrfよりも大きくかつ周波数Nfの値および誤差D1を合計した比較値Ncと第2カウント数C2との差分値の絶対値が規定値Nrf値以下のときにはその差分値を誤差D2として特定する。
また、処理回路32aは、誤差信号S4bを出力した後に(ステップ68の実行後に)誤差D2が0であるか否かを判別する(ステップ69)。この場合、処理回路32aは、誤差D2が0ではないと判別したときには、第3処理部33が補正処理の実行中となるまで待機して誤差信号S4bの出力状態を維持し(ステップ70)、第3処理部33が補正処理の実行中となったときに誤差信号S4bを初期化する(ステップ71)。また、処理回路32aは、ステップ69において誤差D2が0であると判別したときには、ステップ70を実行することなく(待機することなく)誤差信号S4bを初期化する(ステップ71)。次いで、処理回路32aは、カウンタ32bに対して、第2カウント数C2をリセットさせる(ステップ72)。
また、処理回路32aは、ステップ65〜67に規定する判別条件のいずれも満たさないと判別したときには、第2エラー信号S7bを出力し(ステップ73)、次いで、カウンタ32bに対して、第2カウント数C2をリセットする(ステップ72)。処理回路32aは、以後、ステップ61〜72または61〜73を繰り替えして実行する。
第3処理部33は、図1に示すように、処理回路33aおよびカウンタ33bを備えて構成され、図4に示す第3処理80を実行して、1秒間当りに予め決められた数のクロック信号S3を生成して出力する。また、第3処理部33は、第3処理80においてクロック信号S3を生成する際に、発振回路21の誤差(発振回路21から出力されるパルス信号S2における規定の周波数Nfと実際の周波数との誤差)に起因するクロック信号S3の生成周期の不均一な誤差を補正する補正処理を実行する。具体的には、この第3処理80では、第3処理部33の処理回路33aが、ステータス信号S5の内容を「非補正中」(補正処理の非実行中)に変更し(ステップ81)、次いで受信部11から1秒信号S1が出力されたか否かを判別する(ステップ82)。処理回路33aは、ステップ82において、1秒信号S1が出力されたと判別した時点で、その1秒信号S1の出力時点に同期させて、カウンタ33bに対して発振回路21から出力されたパルス信号S2の数をカウントさせる(ステップ83)。
続いて、処理回路33aは、誤差信号S4aが第1処理部31から出力されているときには、その誤差信号S4aに基づいて誤差D1を特定する(ステップ84)。また、処理回路33aは、誤差信号S4bが第2処理部32から出力されているときには、その誤差信号S4bに基づいて誤差D2を特定する(ステップ85)。次いで、処理回路33aは、特定した誤差D2が0か0以外であるかを判別する(ステップ86)。処理回路33aは、ステップ86において、誤差D2が0以外であると判別したときには、ステータス信号S5の内容を「補正中」に変更する(ステップ87)。
続いて、処理回路33aは、カウンタ33bに対するパルス信号S2のカウント数のリセットの指示や、誤差D1および誤差D2を用いた補正処理の実行を繰り返して、クロック信号S3を1秒分(1秒間に生成すべき数として予め決められた数だけ)生成して出力する生成処理を実行する(ステップ88)。この場合、処理回路33aは、一例として、次のようにして補正処理を実行する。なお、発明の理解を容易とするため、以下の説明では、パルス信号S2の周波数Nfが10000Hzに規定されているものとする。また、予め決められた数としての10個のパルス信号S2をカウントする毎に1回のクロック信号S3を生成して出力する、つまり1秒間に1000個のクロック信号S3を出力するように規定されている(クロック信号S3の周波数が1000Hzに規定されている)ものとする。この例において、誤差D1および誤差D2の合計である補正値が「0」のときには、処理回路33aは、規定された10個のパルス信号S2がカウンタ33bによってカウントされる毎に1個のクロック信号S3を出力するクロック信号生成処理を1秒間に1000回行う。つまり、1000個のクロック信号S3の出力が1秒分となる。
一方、誤差D1および誤差D2の合計である補正値が「10」のときには、予め決められた数としての10個に1個を加えた11個のパルス信号S2がカウンタ33bによってカウントされたときに1個のクロック信号S3を出力するクロック信号生成処理を10回行うと共に、10個のパルス信号S2がカウンタ33bによってカウントされたときに1個のクロック信号S3を出力するクロック信号生成処理を990回(1000回−10回)行うことにより、1秒間に1000回のクロック信号生成処理を行う。この場合、11個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を1回実行する毎に、10個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を99回実行することにより、11個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を1秒間の中で均等(均一)に分散させる。
また、誤差D1および誤差D2の合計である補正値が「−10」のときには、予め決められた数としての10個から1個を減じた9個のパルス信号S2がカウンタ33bによってカウントされたときに1個のクロック信号S3を出力するクロック信号生成処理を10回行うと共に、10個のパルス信号S2がカウンタ33bによってカウントされたときに1個のクロック信号S3を出力するクロック信号生成処理を990回(1000回−10回)行うことにより、1秒間に1000回のクロック信号生成処理を行う。この場合、9個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を1回実行する毎に、10個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を99回実行することにより、9個のパルス信号S2のカウントで1個のクロック信号S3を出力するクロック信号生成処理を1秒間の中で均等(均一)に分散させる。
ここで、補正値のうちの誤差D2が大きいときに、その補正値を1秒間の中で補正する上記の補正処理を行ったときには、その1秒間におけるクロック信号S3の生成周期が極端に短くなったり、極端に長くなったりして好ましくない。このため、誤差D2が大きいとき(一例として、「50」のとき)には、その誤差D2を複数に分割(一例として「10分割」)し、分割数と同じ秒数(この例では「10秒」)における各1秒分のクロック信号生成処理において、誤差D2を10分割した値に誤差D1を加えた値を補正値として処理回路33a補正処理を行う構成および方法を採用することもできる。
次いで、処理回路33aは、1秒分のクロック信号S3を出力した時点でその旨を示す1秒完了信号S6を出力する(ステップ89)。続いて、処理回路33aは、ステータス信号S5の内容を「非補正中」に変更する(ステップ90)。処理回路33aは、以後、ステップ83〜90を繰り替えして実行する。
次に、図5〜図7を参照して、クロック信号生成装置1がクロック信号生成方法に従ってクロック信号S3を出力する際の動作をさらに具体的に説明する。この場合、発明の理解を容易とするため、発振回路21が出力するパルス信号S2の周波数Nfが10000Hzに規定されているものとする。また、第3処理部33がパルス信号S2を10個(予め決められた数の一例)カウントする毎に1回のクロック信号S3を生成して出力する(クロック信号S3の周波数が1000Hzに規定されている)ものとする。つまり、このクロック信号生成装置1では、第3処理部33が1秒間に生成すべきクロック信号S3の数が1000回に規定されているものとする。また、規定値Nrsが110%に規定され、規定値Nrtが90%に規定され、規定値Nrfが10%に規定されている(各規定値Nrs,Nrt,Nrfが上記した各値とは異なる値に規定されている)ものとする。なお、図5〜図7では、パルス信号S2のカウント数と横方向(時間軸方向)における長さとの比率を実際の比率とは異なる比率で図示している。
最初に、発振回路21が、作動開始時から1秒間だけ規定値である10000Hzよりも100Hz高い10100Hzの周波数Nfのパルス信号S2を出力し、毎秒10Hzずつその周波数Nfを増加させる場合におけるクロック信号生成装置1の動作を図5を参照して説明する。
このクロック信号生成装置1では、動作開始に伴い、受信部11が1秒信号S1の出力を開始し、発振回路21がパルス信号S2の出力を開始する。また、第1処理部31、第2処理部32および第3処理部33が、図2〜4にそれぞれ示す第1処理50、第2処理60および第3処理80をそれぞれ実行する。
この場合、第3処理部33の処理回路33aが、ステータス信号S5の内容を「非補正中」に変更し(ステップ81)、第2処理部32の処理回路32aが、補正処理の非実行中であると判別する(ステップ61)。次いで、1回目の1秒信号S1(図5において「1」を付した1秒信号S1)が受信部11から出力されたときには、各処理部31,32,33の各カウンタ31b,32b,33bがパルス信号S2の数のカウントを開始する(ステップ52,63,83)。
第1処理部31では、パルス信号S2のカウント(ステップ52)の開始後に、処理回路31aがステップ53〜55を実行することにより、カウント数Cが規定値Nrtを超え、かつ規定値Nrs以上となる以前に2回目の1秒信号S1が出力されたか否かを判別する。この場合、図5に示すように、カウント数C(第1カウント数C1)が10100に達した時点、つまり、周波数Nfの値の90%に相当する9000(規定値Nrt)を超え、かつ周波数Nfの値の110%に相当する11000(規定値Nrs)以上となる以前に2回目の1秒信号S1が出力される。このため、処理回路31aは、1回目の1秒信号S1の出力時点と2回目の1秒信号S1の出力時点との間の第1カウント数C1と周波数Nfの値との差分値(この例では100)を誤差D1として特定すると共に、その誤差D1を示す誤差信号S4aを第3処理部33に出力する(ステップ56)。続いて、処理回路31aは、カウンタ31bに対して、カウント数Cをリセットさせた後に(ステップ57)、ステップ52を実行する。以後、処理回路31aは、同図の下から2段目に示すように、1秒信号S1が出力されたと判別する度に、誤差D1を特定して、誤差信号S4aを出力する。この場合、この例では、発振回路21におけるパルス信号S2の周波数Nfが10Hzずつ増加するため、同図に示すように、処理回路31aによって特定される誤差D1も10ずつ増加する。
また、第2処理部32では、パルス信号S2のカウント(ステップ63)の開始後に、処理回路32aがステップ64を実行して、1秒完了信号S6が第3処理部33から出力されたか否かを判別する。また、処理回路32aは、1秒完了信号S6が出力されたと判別したときには、ステップ65〜67を実行して、各ステップ65〜67にそれぞれ規定する上記の各判別条件のいずれかが満たされるか否かを判別する。
この場合、図5に示すように、1回目の1秒信号S1の出力時点から1回目の1秒完了信号S6(同図において「1」を付した1秒完了信号S6)の出力時点までの間の第2カウント数C2が10000であるため、ステップ65に規定する上記の判別条件(第2カウント数C2が規定値Nrf:1000以下)を満たさず、ステップ66に規定する上記の判別条件(第2カウント数C2が比較値Nc:10000を超え、かつ差分値Ndが規定値Nrf以下)を満たさず、ステップ67に規定する上記の判別条件(第2カウント数C2が比較値Nc:10000以下で、かつ差分値Nd:0の反数が規定値Nrf:1000以下)を満たす。このため、処理回路32aは、差分値Ndである「0」を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。次いで、処理回路32aは、ステップ69を実行する。この場合、誤差D2が0のため、処理回路32aは、ステップ70を実行することなく誤差信号S4bを初期化し(ステップ71)、次いで、カウンタ32bに対して、第2カウント数C2をリセットさせる(ステップ72)。する。以後、処理回路32aは、ステップ61〜72または61〜73を実行する。
この場合、図5に示すように、2回目の1秒信号S1の出力時点から2回目の1秒完了信号S6の出力時点までの間の第2カウント数C2が9900であるため、ステップ65に規定する上記の判別条件(第2カウント数C2が規定値Nrf:1000以下)を満たさず、ステップ66に規定する上記の判別条件(第2カウント数C2が比較値Nc:10100を超え、かつ差分値Ndが規定値Nrf以下)を満たさず、ステップ67に規定する上記の判別条件(第2カウント数C2が比較値Nc:10100以下で、かつ差分値Nd:−200の反数:200が規定値Nrf:1000以下)を満たす。このため、処理回路32aは、差分値Ndの反数である「200」を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。
次いで、処理回路32aは、ステップ69を実行する。この場合、誤差D2が0ではないため、処理回路32aは、第3処理部33が補正処理の実行中となるまで(この例では、同図において3回目の1秒完了信号S6が第3処理部33から出力される直後まで)待機した後に(ステップ70)、誤差信号S4bを初期化する(ステップ71)。また、処理回路32aは、第3処理部33が補正処理の実行中のときには、ステップ61を繰り返すことによって補正処理が終了するまで(非補正中となるまで)待機し、次の1秒信号S1(この例では、同図に示す5回目の1秒信号S1)が出力されたときに、再びカウンタ32bに対してパルス信号S2の数をカウントさせ、次の1秒完了信号S6(この例では、同図に示す5回目の1秒完了信号S6)が出力されたと判別したときに、ステップ65〜67を実行して、各ステップ65〜67にそれぞれ規定する上記の各判別条件のいずれかが満たされるか否かを判別する。
この場合、図5に示すように、5回目の1秒信号S1の出力時点から5回目の1秒完了信号S6の出力時点までの間の第2カウント数C2が10070であるため、ステップ65に規定する上記の判別条件(第2カウント数C2が規定値Nrf:1000以下)を満たさず、ステップ66に規定する上記の判別条件(第2カウント数C2が比較値Nc:130(10000+130)を超え、かつ差分値Ndが規定値Nrf以下)を満たさず、ステップ67に規定する上記の判別条件(第2カウント数C2が比較値Nc:130以下で、かつ差分値Nd:−60の反数:60が規定値Nrf:1000以下)を満たす。このため処理回路32aは、差分値Ndの反数である「60」を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。次いで、処理回路32aは、ステップ69を実行する。この場合、誤差D2が0ではないため、処理回路32aは、ステップ70,71を実行する。以後、処理回路32aは、同図に示すように、誤差D2を特定する。
一方、第3処理部33では、パルス信号S2のカウント(ステップ83)の開始後に、処理回路33aがステップ84,85を実行する。この場合、図5に示すように、1回目の1秒信号S1が出力された直後の時点では、第1処理部31および第2処理部32が処理中(カウント中)であり、誤差信号S4aおよび誤差信号S4bが出力されていないため、誤差D1および誤差D2が0となる結果、ステップ86において誤差D2が0である(0以外ではない)と判別して、ステップ87(ステータス信号S5の「補正中」への内容変更)を実行することなく、ステップ88を実行する。このステップ88では、処理回路33aは、誤差D1および誤差D2が「0」であるため、補正値が「0」の状態(補正しない状態で)でクロック信号S3を1秒分(つまり、1000回)生成して出力する。続いて、処理回路33aは、クロック信号S3を1秒分出力した時点で、1回目の1秒完了信号S6を出力した後に(ステップ89)、ステータス信号S5の内容を「非補正中」に変更する(ステップ90)。以後、処理回路32aは、ステップ83〜90を実行する。
この場合、図5に示すように、1回目の1秒完了信号S6の出力直後の時点では、誤差信号S4aが出力されず、誤差信号S4bが示す誤差D2が「0」であるため、処理回路33aは、ステップ87を実行することなく、補正値が「0」の状態でクロック信号S3を1秒分生成して出力した後に(ステップ88)、2回目の1秒完了信号S6を出力し(ステップ89)、次いで、ステップ90を実行する。
また、図5に示すように、2回目の1秒完了信号S6の出力直後の時点では、誤差D1が「100」であることを示す誤差信号S4aが出力され、誤差信号S4bは出力されていない(誤差D2が「0」である)ため、処理回路33aは、ステップ87を実行することなく、補正値を「100」とした補正処理を実行しつつクロック信号S3を1秒分生成して出力した後に(ステップ88)、3回目の1秒完了信号S6を出力し(ステップ89)、次いで、ステップ90を実行する。
また、図5に示すように、3回目の1秒完了信号S6の出力直後の時点では、誤差D1が「110」であることを示す誤差信号S4aが出力され、誤差D2が「200」であることを示す誤差信号S4bが出力されているため、処理回路33aは、ステップ87を実行して、ステータス信号S5の内容を「補正中」に変更する。また、処理回路33aは、誤差D1および誤差D2の合計値(第1の誤差、第2の誤差および第3の誤差の合計値)である「310」を補正値とした補正処理を実行しつつクロック信号S3を1秒分生成して出力した後に(ステップ88)、4回目の1秒完了信号S6を出力し(ステップ89)、次いで、ステップ90を実行する。これにより、2回の1秒信号S1間にカウントしたパルス信号S2の数とパルス信号S2の周波数Nfの値との差分値に相当する誤差D1に加えて、クロック信号生成装置1の作動開始から補正処理が実行されるまでに生じた誤差に相当する誤差D2に起因するクロック信号S3の生成周期の誤差が補正される。以後、処理回路33aは、同図に示すように、補正処理を実行しつつ(または非実行としつつ)クロック信号S3の生成および出力を行う。これにより、同図に示すように、1秒完了信号S6の出力時点が1秒信号S1の出力時点に十分に近付くようにクロック信号S3の生成周期が補正される。
次に、発振回路21が、規定値である10000Hzよりも100Hz高い10100Hzの周波数Nfのパルス信号S2を出力する場合において、1秒信号S1以外のノイズが入力したときのクロック信号生成装置1の動作を図6を参照して説明する。
この例では、処理回路31aが、図6の下から2段目に示すように、1秒信号S1が出力されたと判別する度に、誤差D1を特定して、誤差信号S4aを出力する。また、処理回路32aが同図の最下段に示すように、誤差D2を特定する。
ここで、図6に示すように、4回目の1秒信号S1の出力後において1秒信号S1以外のノイズを処理回路31aが入力し、処理回路31aがステップ54においてこのノイズの入力を1秒信号S1が出力されたと判別(誤認)したとする。この場合、同図に示すように、4回目の1秒信号S1の出力時点からカウント数C(第1カウント数C1)が4040に達した時点で、処理回路31aがこのような判別をしたときには、第1カウント数C1が規定値Nrtである9000(周波数Nfの値の90%に相当する値)以下であるため、処理回路31aは、誤差D1の特定を停止すると共に、第1エラー信号S7aを出力する(ステップ58)。このため、ノイズが1秒信号S1として取り扱われることに起因して実際に補正すべき誤差とは異なる大きな値が誤差として設定されてクロック信号S3の精度が低下する事態が確実に防止される。
また、この例では、図6に示すように、4回目の1秒完了信号S6の出力直後の時点では、第1処理部31から第1エラー信号S7aが出力され、誤差信号S4bは出力されていない。この際には、処理回路33aは、ステップ88において、直前の処理で用いた誤差D1(この例では100)を補正値とした補正処理を実行しつつクロック信号S3を1秒分生成して出力した後に、5回目の1秒完了信号S6を出力し(ステップ89)、次いで、ステップ90を実行する。以後、処理回路33aは、同図に示すように、補正処理を実行しつつ(または非実行としつつ)クロック信号S3の生成および出力を行う。
次に、発振回路21が、規定値である10000Hzよりも100Hz低い9900Hzの周波数Nfのパルス信号S2を出力する場合において、GPS信号S0のレベル低下等によって一時的な受信停止が発生したときのクロック信号生成装置1の動作を図7を参照して説明する。
この例では、図7に示すように、カウント数C(第1カウント数C1)が9900に達した時点、つまり、規定値Nrtである9000(周波数Nfの値の90%に相当する値)を超え、かつ規定値Nrsである11000(周波数Nfの値の110%に相当する値)以上となる以前に2回目の1秒信号S1が出力される。このため、処理回路31aは、1回目の1秒信号S1の出力時点と2回目の1秒信号S1の出力時点との間の第1カウント数C1と周波数Nfの値との差分値(この例では−100)を誤差D1として特定すると共に、その誤差D1を示す誤差信号S4aを第3処理部33に出力する(ステップ56)。以後、処理回路31aは、同図の下から2段目に示すように、1秒信号S1が出力されたと判別する度に、誤差D1を特定して、誤差信号S4aを出力する。
ここで、図7に示すように、本来であれば5回目の1秒信号S1が出力されるべき時点でその1秒信号S1が出力されなかったとする。この場合には、処理回路31aが、ステップ53において、カウント数Cが規定値Nrs(11000)以上となっても次の(5回目の)1秒信号S1が出力されないと判別して、誤差D1の特定を停止すると共に、第1エラー信号S7aを出力する(ステップ58)。このため、何らかの理由でGPS信号S0が受信できなかった(1秒信号S1が出力できなかった)ことに起因して実際に補正すべき誤差とは異なる大きな値が誤差として設定されてクロック信号S3の精度が低下する事態が確実に防止される。
また、この例では、図7に示すように、2回目の1秒信号S1の出力時点から1回目の1秒完了信号S6の出力時点までの間の第2カウント数C2が100であるため、ステップ65に規定する上記の判別条件(第2カウント数C2が規定値Nrf(周波数Nfの値の10%に相当する1000)以下)を満たす。このため処理回路32aは、差分値Ndである「100」の反数である「−100」を誤差D2として特定し、その誤差D2を示す誤差信号S4bを出力する(ステップ68)。次いで、処理回路32aは、ステップ69を実行する。この場合、誤差D2が0ではないため、処理回路32aは、ステップ70,71を実行する。以後、処理回路32aは、同図の最下段に示すように、誤差D2を特定する。
また、この例では、図7に示すように、6回目の1秒完了信号S6の出力直後の時点では、第1処理部31から第1エラー信号S7aが出力され、誤差信号S4bは出力されていない。この際には、処理回路33aは、ステップ88において、直前の処理で用いた誤差D1(この例では−100)を補正値とした補正処理を実行しつつクロック信号S3を1秒分生成して出力した後に、7回目の1秒完了信号S6を出力し(ステップ89)、次いで、ステップ90を実行する。以後、処理回路33aは、同図に示すように、補正処理を実行しつつ(または非実行としつつ)クロック信号S3の生成および出力を行う。
このように、このクロック信号生成装置1およびクロック信号生成方法では、誤差D1および誤差D2の双方(合計値)を用いて補正処理を実行する。この場合、誤差D1は、2回の1秒信号S1の出力時点の間にパルス信号S2の数をカウントした第1カウント数C1とパルス信号S2の周波数Nfの値との差分値、つまり2回の1秒信号S1の出力時点の間に生じる発振回路21の誤差に相当する。一方、誤差D2には、GPS衛星を捕捉できずに1秒信号S1の出力が中断したときや、GPS信号S0にノイズが重畳してGPS信号S0として使用できなかったときに残留する誤差、作動開始から補正処理が実行されるまでに生じた残留誤差、および2回の1秒信号S1の出力時点の間には把握できずに残留する1つのパルス信号S2の周期に満たない短時間の誤差が累積することによって生じる残留誤差などのような誤差D1には含まれない各種の誤差が含まれる。このため、このクロック信号生成装置1およびクロック信号生成方法によれば、誤差D1だけを用いた補正では補正できない誤差D2に含まれる各種の誤差までも補正することができる。したがって、このクロック信号生成装置1およびクロック信号生成方法によれば、例えば、1秒間に生成すべき数のクロック信号S3の生成が完了する1秒完了信号S6の出力時点が1秒信号S1の出力時点に十分に近付くように(両時点が一致するように)クロック信号S3の生成周期を補正することができる結果、クロック信号S3の精度を十分に向上させることができる。
また、このクロック信号生成装置1およびクロック信号生成方法では、1秒信号S1の出力時点でカウントを開始したパルス信号S2のカウント数Cが規定値Nrs以上となった時点で次の1秒信号S1が出力されていないと判別したとき、およびカウント数Cが規定値Nrt以下の時点で次の1秒信号S1が出力されたと判別したときに、次の1秒信号S1の出力時点まで誤差D1の特定を停止する。この場合、このような判別結果となったときには、何らかの理由で1秒信号S1が出力できない状態であったり、ノイズが1秒信号S1として誤認されている状態であることがあり、この状態で特定した誤差D1は、通常、実際に補正すべき発振回路21の誤差よりも大きいこととなる。このクロック信号生成装置1およびクロック信号生成方法によれば、上記した判別結果となったときに誤差D1の特定を停止して、実際の誤差よりも大きな値での補正処理の実行を抑止することができるため、クロック信号の精度をさらに向上させることができる。また、誤差D1の特定を停止したときに、それ以前に特定した誤差D1を用いて補正処理を実行することで、クロック信号S3の精度を一層向上させることができる。
また、このクロック信号生成装置1およびクロック信号生成方法によれば、誤差を複数に分けて補正することにより、誤差が大きい場合であっても、特定のクロック信号S3の生成周期だけが極端に短くなったり極端に長くなったりする事態を防止することができるため、クロック信号S3の生成周期を均一に維持しつつ補正処理を行うことができる。
なお、クロック信号生成装置1およびクロック信号生成方法は、上記の構成および方法に限定されない。例えば、大きい補正値を複数に分割して複数の補正処理において少しずつ補正する際には、1秒間の中で補正処理の実行間隔がほぼ等間隔となるようにする(1秒間に1000回の生成処理を実行する場合において10回の補正処理を行う際には、10回の生成処理毎に1回の補正処理を実行する)構成および方法について上記したが、1秒よりも短い時間(例えば、0.5秒以下の時間)の中で複数の補正処理を実行する構成および方法を採用することもできる。また、1秒よりも長い時間(例えば、2秒以上の時間)の中で複数の補正処理を実行する構成および方法を採用することもできる。