(58)【調査した分野】(Int.Cl.,DB名)
第1クロックのクロックパルスに基づいて動作クロックの要求周波数から定まる固定値を累算して累算値を算出し、前記第1クロックの周波数誤差に対応する誤差値を前記第1クロックから定まるタイミングで前記累算値に反映し、前記累算値の所定ビットが変化した場合に前記動作クロックの状態を変化させると共に、前記累算値のうち前記所定ビットより下位にある下位ビット値を出力する動作クロック生成回路と、
前記下位ビット値を前記動作クロックよりも高周波数の第2クロックのパルスカウント数に換算し、前記パルスカウント数のカウントに要する時間と前記動作クロックのクロックパルスに基づき、前記動作クロックを補正した補正クロックを生成する補正クロック生成回路と、
を備えるクロック補正回路。
前記第2クロックは、前記補正クロックの要求出力周波数を、前記補正クロックの所望の分解能により除算して算出した周波数よりも高い周波数を持つ、請求項1に記載のクロック補正回路。
【発明を実施するための形態】
【0012】
本実施の形態にかかるクロック補正回路を説明する前に、
図1を参照して特許文献1に記載のRTC回路に関する問題を改めて説明する。
図1は、特許文献1にかかるRTC回路の動作を示すタイミングチャートである。
図1(A)は、特許文献1に記載のRTC回路内の分周信号を示す。
図1(B)は、特許文献1に記載のRTC回路内の前述の加算値を示す。
図1(B)における固定値は、"20000H"である。
図1(C)は、特許文献1に記載のRTC回路が出力する補正クロックを示す。当該RTC回路は、タイミングT0から動作を開始する。
【0013】
タイミングT1において、累積された周波数誤差(
図1の例では1パルス毎に"1"だけ累積加算される)が加算値(
図1(B))のMSBに反映されている。そのため、補正クロック
図1(C))は、タイミングT1において補正される、すなわち値が変化(ハイレベルからロウレベルに変化)する。ここで、時間区間D1の補正クロックの周波数誤差は、この補正処理により所定の精度内となっている。時間区間D1とは、動作開始から初めての補正が行われるまでの経過時間である。しかしながら、時間区間D2やD3のように、時間区間D1よりも短い時間区間における補正クロックの周波数誤差は、補正処理が行われていないために所望の精度を満たさない。
【0014】
図1(C)に示すように一定時間(D1)に1回だけ補正が行われたクロックは、一般的なRTC回路内において時刻の計時に用いるクロックとなる。そのため、
図1(C)に示すように一定時間(D1)に1回補正が行われたクロックを以下の記載では「動作クロック」と呼称する。これに対し、1パルスの間隔(D2)の間隔で補正が行われたクロックを「1パルス補正クロック」と呼称する。なお本明細書では、時間区間D1のようにクロック信号がハイレベルからロウレベル(またはロウレベルからハイレベル)に変わるまでのパルス幅を1パルスと呼称する。
【0015】
<実施の形態1>
以下、適宜図面を参照して、本実施の形態にかかるクロック補正回路について説明する。
【0016】
<電力メータ(電子機器)の構成について>
はじめに、本実施の形態にかかるクロック補正回路が搭載される電子機器の概要について説明する。
図2は、本実施の形態にかかるクロック補正回路を搭載した電子機器の一例である電力メータ装置の概略を示す図である。
【0017】
電力メータ装置1は、MCU(Micro Control Unit)10と、測定対象ユニット20と、測定用LSI(Large Scale Integration)30と、LCD(Liquid Crystal Display)パネル40と、EEPROM50と、各種外部インターフェイス(Card IC51、IrDA IC54、RS485 IC55、PLC modem56)と、を有する。なお、外部インターフェイスであるCard IC51は、各種のカード型デバイス(IC Card52、ESAM53)と接続可能である。
【0018】
測定対象ユニット20は、内部にシャント抵抗及びCT(カレントトランス)等の電流検出センサを備える。測定用LSI30は、測定対象ユニット20内における消費電力量を測定し、測定結果をMCU10に通知する。LCDパネル40は、MCU10が算出した電力料金等を表示する。
【0019】
外部インターフェイス(Card IC51、IrDA IC54、RS485 IC55、PLC modem56)は、MCU10内のUART(Universal Asynchronous Receiver Transmitter)321〜324と接続可能に構成され、各種の情報の入出力を行う。EEPROM(Electrically Erasable Programmable Read-Only Memory)50は、MCU10内のIIC325と接続する記憶装置である。EEPROM50は、内部に課金情報を記憶している。
【0020】
ここで課金情報とは、電力量と各時間帯における課金額との関係を示す情報である。例えば、課金情報は、お昼の時間帯(6時〜20時)の1kW当たりの課金額、夜の時間帯(20時〜30時)の1kW当たりの課金額、等をテーブル形式で示す情報である。
【0021】
MCU10は、上述の課金情報と、測定用LSI20が算出した電力量から課金額を算出する処理等を行う。MCU10は、クロック補正回路100と、CPU(Central Processing Unit)300と、メモリ310と、UART320〜324と、IIC325と、を有する。
【0022】
クロック補正回路100は、本例ではいわゆるRTC(Real Time Clock)として動作する回路であり、MCU10の外部端子160と接続する。電力メータ装置1の管理者は、動作確認時(テスト時)に当該外部端子160から出力されるクロック信号の周波数を計測し、所望の分解能を満たしているか否かをテストする。また、クロック補正回路100は、計時した時刻情報をCPU300等に適宜供給する。クロック補正回路100の内部構成及び動作の詳細は、
図3等を参照して後述する。
【0023】
CPU300は、MCU10内部の各種の制御を行う中央演算装置である。CPU300は、EEPROM50から読み出した課金情報と、クロック補正回路100から供給される時刻情報と、測定用LSI20から供給される使用電力量の情報と、を基に課金額を算出する。CPU300は、算出した課金額を適宜外部装置(例えばプリンタ装置)やLCDパネル40に出力する。
【0024】
メモリ310は、例えばROM(Read Only Memory)やRAM(Random Access Memory)であり、各種の情報を記憶する。上述の説明では、EEPROM50が課金情報を記憶するものとして説明したが、メモリ310が課金情報を記憶しても良い。UART320〜324は、測定用LSI30や外部インターフェイス(Card IC51等)と接続し、各種情報の入出力を制御する。
【0025】
なお、
図2には図示しないもののMCU10は、温度センサ、A/D変換器、時計発振器、基準発振器等を備える。詳細は、
図3等を参照して後述する。
【0026】
図示するように、MCU10は、クロック補正回路100と接続する外部端子160を有する。詳細は後述するが、出力選択レジスタ150の設定値には、出力するクロック信号の種別(1パルス補正クロック、動作クロック、補正なしの基本クロック)が設定されている。後述するセレクタ140は、出力選択レジスタ150の設定値に応じて出力クロック信号を選択し、選択したクロック信号を外部端子160から出力する。
【0027】
1パルス補正クロックは、生成のための稼働回路が多いために消費電力量が最も高いが、どのような時間単位で周波数誤差を算出した場合であっても誤差が無いクロック信号である。動作クロックは、生成のための消費電力量が1パルス補正クロックの生成時よりも少ないが、任意の時間単位で周波数誤差を検出した場合に所望の精度を満たさない可能性があるクロック信号である。換言すると、1パルス補正クロックは動作クロックよりも短い時間単位毎に補正が行われている。補正なしの基本クロックは、生成のための消費電力が最も少ないが、基本的に周波数誤差を含むクロック信号である。
【0028】
すなわち、クロック補正回路100は、利点と欠点をそれぞれ持つ各種のクロック信号を外部端子160を介して出力する。ユーザは、出力するクロック信号を適宜選択する。これにより、クロック信号の用途や消費電力の観点で最適なクロック信号を使用することができる。
【0029】
一般的に1パルス補正クロックは、電力メータ装置1の本格使用前の動作確認等の場合にのみ出力されることが多く、通常動作時に使用されるケースは少ないものと考えられる。換言すると、上述した複数種別のクロック信号を同時に使用するケースは少ないと言える。上述の構成では外部端子160から複数種別のクロック信号を切り替えて出力できるため、MCU100の外部端子数を削減することができる。
【0030】
なおセレクタ140により選択出力可能なクロック信号は、1パルス補正クロックでなくても良く、たとえば2パルス補正クロック等であってもよい。詳細は後述する。すなわち、セレクタ140は、動作クロックと、動作クロックよりも短い時間区間で周波数誤差が補正された補正クロック(好適には1パルス補正クロック)を出力する構成であれば良い。
【0031】
<クロック補正回路100及びその周辺回路の構成>
図3を参照して、クロック補正回路100の概略的な構成について説明する。クロック補正回路100は、動作クロック生成回路110と、補正クロック生成回路120と、時計カウンタ130と、セレクタ140と、出力選択レジスタ150と、を備える。セレクタ140は、外部端子160と接続する。
【0032】
クロック補正回路100内の動作クロック生成回路110には、時計発振器210から基本クロック(第1クロック)が供給される。時計発振器210は、基本クロック(a)を生成する発振器である。以下の説明では基本クロック(a)の周波数は、32.768kHzとする。なお、時計発振器210が生成する基本クロック(a)は、電力メータ装置1では許容できない程度の周波数誤差を持つ場合が多い。以下の説明では基本クロック(a)の誤差は、1秒間に1Hz以上の誤差(たとえば1秒間の周波数が32.769kHz)はないものとする。時計発振器210は、生成した基本クロック(a)を動作クロック生成回路110に供給する。
【0033】
動作クロック生成回路110は図示しないレジスタ(記憶部)から固定値(
図5を参照して後述する)を読み出す。動作クロック生成回路110は、入力される補正値及び固定値に応じて基本クロック(a)の周波数誤差を反映した動作クロック(f)を出力する。以下の説明では、動作クロック(f)は基本クロック(a)(32.768kHz)を基に、基本クロック(a)の周波数誤差を補正した1Hzのクロック信号とする。ここで、動作クロック生成回路110に入力される(または動作クロック生成回路110が読み出す)補正値は、基本クロック(a)の周波数誤差(ppm)から算出する。周波数誤差(ppm)の算出方法は、例えば以下の3通りの方法がある。以下の算出方法の詳細については、
図14〜
図19を参照して説明する。
(1)温度センサの検出した温度及び温度テーブルを基に基本クロック(a)の周波数誤差を算出
(2)温度センサの検出した温度を、温度特性と周波数誤差の関係を示す関係式に代入して基本クロック(a)の周波数誤差を算出
(3)後述する周波数誤差検出器170による周波数誤差の算出
【0034】
また、動作クロック生成回路110は、動作クロック(f)を時計カウンタ130及び補正クロック生成回路120に供給する。さらに動作クロック生成回路110は、動作クロック(f)の状態変化の判定に用いる所定ビットより下位側の下位mビット値(g)(
図5を参照して後述)を補正クロック生成回路120に供給する。動作クロック生成回路110の詳細構成は、
図4を参照して後述する。
【0035】
補正クロック生成回路120は、動作クロック(f)、レジスタ内の下位mビット値(g)(
図4及び
図5を参照して後述)、及び第2クロック(h)を基に、基本クロック(a)の周波数誤差を1パルス毎に補正した1パルス補正クロック(k)を算出する。ここで、第2クロック(h)とは、基本クロック(a)よりも大きい周波数を持つクロック(例えば24MHz)である。厳密には、第2クロック(h)は式(1パルス補正クロックの要求出力周波数/所望の分解能)から算出される周波数よりも大きな周波数を持つクロックである。例えば、補正クロック生成回路120から分解能が1ppmの1Hzである1パルス補正クロック(k)を出力したい場合、第2クロック(h)は1MHz(1Hz/1ppm)以上の周波数を持つクロック信号とする。
【0036】
なお補正クロック生成回路120は、後述する出力選択レジスタ150の値を読み出し、1パルス補正クロック(k)の出力を指示する値が設定されている場合にのみ1パルス補正クロック(k)の生成を行い、それ以外の場合には動作を停止しても良い。一般的に、RTCをスタンバイ状態で使用されるケースや、RTCがバックアップ電池による電源供給により動作する場合ある。すなわち、RTCに対する低消費電流化が要求されるケースが多い。補正クロック生成回路120の動作を停止することにより、低電流化を図ることができる。補正クロック生成回路120の詳細構成及び動作は、
図9を参照して後述する。
【0037】
時計カウンタ130は、動作クロック生成回路110から出力される動作クロック(f)をカウントアップすることにより、実社会での時刻を測定するカウンタである。時計カウンタ130は、例えば内部に60秒、60分、24時間をそれぞれカウントするカウンタ(図示せず)を有する。時計カウンタ130は、計時した時刻情報(秒、分、時)をCPU300等に適宜供給する。
【0038】
セレクタ140は、出力選択レジスタ150内に記憶された値に応じて、動作クロック(f)または1パルス補正クロック(k)を選択して外部端子160に供給する。なお、図示しないもののセレクタ140は、出力選択レジスタ150内に記憶された値に応じて、基本クロック(a)を直接外部端子160に供給することも可能である。出力選択レジスタ150の値は、電力メータ装置1のユーザ(例えば電力メータ装置1の管理者)が任意のタイミングで書き換えることができる。
【0039】
<動作クロック生成回路110の構成及び動作について>
続いて、動作クロック生成回路110の構成を
図4を参照して説明する。動作クロック生成回路110は、補正間隔生成回路111と、セレクタ112と、加算器113と、FF(フリップフロップ)114と、動作クロック補正回路115とを有する。
【0040】
補正生成回路111は、基本クロック(a)を基に一定タイミングを通知する補正間隔信号(b)、例えば1Hzのワンショットパルス(32768クロック中32767クロックの期間はロウレベルであり、1クロックだけハイレベルとなる信号)を生成する。補正間隔生成回路111は、内部に分周器(2の15乗)を搭載し、上述の補正間隔信号(b)を生成してセレクタ112及び動作クロック補正回路115に供給する。なお、補正間隔生成回路111は、一定のタイミングを通知できる信号を生成できる構成であればよいため、補正間隔信号(b)の周波数は1Hzに限定されない。以下の説明では、補正間隔信号(b)の周波数は1Hz(ワンショットパルス)とする。
【0041】
セレクタ112は、補正間隔信号(b)がハイレベルの場合に補正値を加算器113に供給し、ロウレベルの場合に固定値Bを加算器113に供給する。基本クロック(a)に周波数誤差が無い場合、補正値と固定値Bは同一値となる。補正値及び固定値Bの設定方法は、フリップフロップ114の動作と共に後述する。
【0042】
加算器113は、セレクタ112の出力値(c)とフリップフロップ114の出力値(レジスタ値(d))を加算し、加算結果をフリップフロップ114のデータ端子に供給する。
【0043】
フリップフロップ114は、基本クロック(a)をクロック端子の入力として動作する。フリップフロップ114は、nビットのレジスタを有する。なお以下の説明では、フリップフロップ114の保持するレジスタの値をレジスタ値(d)と記載する。基本クロック(a)は32.768kHzであるため、フリップフロップ114は、1秒間にフリップフロップ114のレジスタ値(d)とセレクタ112の出力値(c)との加算値を32768回だけレジスタ値(d)に取り込む。そしてフリップフロップ114は、レジスタ値(d)を動作クロック補正回路115に供給する。詳細にはフリップフロップ114は、レジスタ値(d)の上位2ビット目の切り替わりタイミングで値が変化する動作クロック(e)と、レジスタ内の下位mビット値(g)と、を動作クロック補正回路115に供給する。
【0044】
図5は、フリップフロップ114内のレジスタの構成を示す図である。当該レジスタは、1秒間に32768回値が書き換えられる。フリップフロップ114の最上位ビットは、ビット値の正負を示すビットである。上位第2ビット(所定ビット)の値は、動作クロック補正回路115に供給されるクロック信号の状態を示す値となる。当該クロック信号が動作クロック(後述する動作クロック補正回路115による補正前の動作クロック(e))となる。基本クロック(a)に周波数誤差が無い場合には、補正値と固定値Bは同一値となり、レジスタ内の値は32768回(2の15乗)インクリメントされる。そのため、当該レジスタは16ビット(正負を示す1ビット + 15ビット(2の15乗))以上のビット幅を持つ必要がある。
図5は、21ビットのビット幅を持つレジスタを示している。
【0045】
固定値Bは、自身を32768回加算した場合にレジスタ値(d)の上位2ビット目が変化する値に設定する。すなわち固定値Bは、動作クロック(e)の要求周波数に応じて値が定まる。
図5においては、下位6ビット目(上位16(1+15)ビット目)に1が設定された値が固定値Bの値となる。
【0046】
仮にレジスタのデータ幅を上述の16ビットとした場合、補正値によって調整可能な周波数誤差の最小単位(補正分解能)は、30.5ppm(1/2
15)となる。補正分解能を小さくしたい場合、レジスタを固定値Bにより書き換わるビットよりも下位側に拡張すればよい。下位側に拡張するビット幅が大きいほど補正値により表現する周波数誤差を細かくすることができるため、補正分解能を小さくすることができる。拡張幅をmビットとする場合、補正分解能は、(1/2
15+m)となる。m=5とした場合、補正分解能は0.95ppm(1/2
15+5)となり、電力メーカ市場のニーズを満たす。以下の説明では、m=5とする。すなわち、レジスタ値(d)のデータ幅は21ビットとする。なお固定値Bは、16進数表記で000020Hとなる。このレジスタ値(d)内の下位mビットを下位mビット値(g)と表記する。
【0047】
続いて、基本クロック(a)の周波数誤差から補正値を算出する方法について説明する。レジスタ値(d)のデータ幅は21ビット(正負を示す1ビット+20ビット)であるため、レジスタ値(d)のLSB(最下位ビット)は、0.95ppm(1/2
20)と対応する。例えば、周波数誤差0.95ppmは000001H(16進数)と対応し、周波数誤差−0.95ppmは2の補数形式を用いて1FFFFFH(16進数)と対応する。
【0048】
補正値は、補正間隔信号(b)がハイレベルとなった場合に加算される。換言すると、補正間隔信号(b)がハイレベルとなった場合に、固定値Bは加算されない。そのため補正値は、基本クロック(a)の周波数誤差をレジスタ値(d)に対応する値(誤差値)に変換した値と、固定値Bと、の加算により算出する。詳細には、レジスタ値(d)のデータ幅が21ビットである場合の補正値は、以下の[数1]に示す式を用いて算出する。なお、[数1]における"10
6"は、ppmが100万分率であることに起因する。例えば、周波数誤差が0.95ppmの場合の補正値は、000021H(16進数)となる。周波数誤差が−0.95ppmの場合の補正値は、00001FH(16進数)となる。レジスタ値(d)のデータ幅が21ビットである場合の基本クロック(a)の周波数誤差と、補正値との関係を
図6に示す。補正値は固定値Bと誤差値の加算により算出するため、加算器113は1秒間に32768回固定値Bを累積加算し、1回だけ誤差値を累積加算結果に反映(加算または減算)する処理と同一の処理をしている。
【数1】
【0049】
図7は、動作クロック生成回路110内の各回路の出力信号を示すタイミングチャートである。なお説明の明確化のため、
図7における補正値は、常に000021Hであるものとする。
【0050】
基本クロック(a)は、1秒間に32768回の値の切り替わりが生じる。補正間隔信号(b)は、32768回に1回の割合で基本クロック(a)の1周期分だけハイレベルとなる(タイミングT12)。セレクタの選択値(c)は、補正間隔信号(b)がハイレベルの間(タイミングT12)だけ補正値000021Hとなり、その他のタイミングでは固定値Bとして000020Hとなる。
【0051】
レジスタ値(d)は、セレクタの選択値(c)を累積加算し、レジスタ内の上位2ビット目の値が切り替わったタイミング(タイミングT11)で動作クロック(e)の値を変化させる。なお
図7では16進数表記でレジスタ値(d)を記載しているため、レジスタ値(d)が07xxxxH(xは任意)から08xxxxH(xは任意)になる際に動作クロック(e)がハイレベルに切り替わり、0FxxxxH(xは任意)から0x0000H(xは任意)になる際にロウレベルに切り替わる。
【0052】
続いて、
図4及び
図8を参照して動作クロック補正回路115の動作について説明する。
図8は、動作クロック補正回路115の動作を示すタイミングチャートである。
【0053】
上述のように補正値は、正の数にすることも負の数にすることも可能である。これにより、基本クロック(a)が正の周波数誤差を持つ場合であっても負の周波数誤差を持つ場合であっても対応が可能となる(基本クロック(a)が所望の周波数よりも速い場合であっても遅い場合であっても対応が可能となる)。ここで加算器113が負の値を加算する場合、
図8の補正間隔信号(b)がハイレベルとなるタイミング(タイミングT21、T22)にレジスタ値(d)の上位2ビット目(すなわち動作クロック(e))が変化してしまう場合がある。当該動作は、動作クロック(e)の周波数を不要に増加させる意図しないものである。
【0054】
動作クロック補正回路115は、当該変化を抑止する回路である。
図4に示すように、動作クロック補正回路115には、動作クロック(e)と、補正間隔信号(b)と、が入力される。
【0055】
動作クロック補正回路115は、タイミングT20〜T28において動作クロック(e)の値の変化を検出する。動作クロック補正回路115は、この検出から所定時間以内に補正間隔信号(b)がハイレベルのタイミングで動作クロック(e)の値の再度の変化を検出する。ここで所定時間とは、例えば補正可能最小値が−100ppmであった場合、動作クロック(e)の4クロック(100ppm/30.5ppmの切り上げ値)の間であり、動作クロック(e)の値の変化後に再度変化を行っては不適切となる期間である。動作クロック補正回路115は、例えばT28から所定時間内のT29における動作クロック(e)の再度の値の変化を検出する。この再度の値の変化を検出した場合、動作クロック補正回路115は、動作クロック(e)の値の再度の変化(T29)を無視した動作クロック(f)を生成する。これにより、動作クロック(e)の周波数の意図しない増加を防いだ動作クロック(f)を生成することができる。
【0056】
動作クロック補正回路115は、補正間隔信号(b)のエッジを検出し、所定時間をカウントして動作クロック(e)のエッジタイミングを補正する回路であればよく、既存の任意のデジタル回路を組み合わせることにより構成すればよい。動作クロック115は、生成した動作クロック(f)を補正クロック生成回路120に供給する。
【0057】
再び
図4を参照する。フリップフロップ114は、動作クロック(e)の状態変化の判定に用いる所定ビット(
図5では上位2ビット目)より下位のビット値(下位ビット値)を、動作クロック(e)の状態変化(ハイレベルからロウレベル、またはロウレベルからハイレベル)の際に補正クロック生成回路120に供給する。なお、基本クロック(a)には1秒間に1Hz以上の誤差(たとえば1秒間の周波数が32.769kHz)はないことを前提としているため、基本クロック(a)の周波数誤差に対応する値(誤差値)の絶対値は、常に固定値Bの絶対値よりも小さくなる。そのため、動作クロック(e)の状態変化時(エッジタイミング)には、動作クロック(e)の状態変化の判定に用いる所定ビット(
図5では2ビット目)よりも下位に位置するビットにおいて、レジスタ値(d)の下位m(=5)ビット値(g)以外はすべて0となる。すなわち、動作クロック(e)のエッジタイミングにおいて、レジスタ値(d)の下位m(=5)ビット値(g)以外のビットは無視することができる。よって、本例ではフリップフロップ114は、レジスタ値(d)の下位m(=5)ビット値(g)を補正クロック生成回路120に供給する。
【0058】
<補正クロック生成回路120の構成及び動作について>
続いて、補正クロック生成回路120の詳細について説明する。
図9は、補正クロック生成回路120の構成を示すブロック図である。補正クロック生成回路120は、カウンタ初期値算出回路121と、カウンタ122と、アンダーフロー検出回路123と、トグル回路124とを備える。補正クロック生成回路120には、フリップフロップ114のレジスタ値(d)の下位mビット値(g)と、動作クロック(f)と、第2クロック(h)と、が入力される。
【0059】
カウンタ初期値算出回路121は、下位mビット値(g)及びそのビット幅と、第2クロック(h)の周波数と、を基にカウンタ122がカウントする際に用いるカウント初期値(i)(パルスカウント数)を算出する。カウンタ初期値算出回路121は、いわゆるデコーダであり、以下のデコード式[数2]を演算してカウント初期値(i)を算出する。
【0061】
カウンタ初期値算出回路121は、算出したカウント初期値(i)をカウンタ122に供給する。
【0062】
カウンタ122は、動作クロック(f)のエッジタイミングから第2クロック(h)のカウントを開始し、カウント初期値(i)から第2クロック(h)のカウント数を減算した値(カウント値(j))をアンダーフロー検出回路123に供給する。カウンタ122は、アンダーフロー検出回路123からカウント停止信号が供給された場合にカウントを終了する。
【0063】
アンダーフロー検出回路123は、カウンタ122から供給された値(カウント値(j))がアンダーフローしたことを検出する回路である。アンダーフロー検出回路123は、カウント値(j))がアンダーフローした場合に、カウント停止信号をカウンタ122及びトグル回路124に供給する。
【0064】
トグル回路124は、カウント停止信号が供給された場合に状態(ハイレベル、ロウレベル)を変化させた1パルス補正クロック(k)を生成する。
【0065】
なお、上述の説明では、補正クロック生成回路120がアンダーフロー検出回路123を備えるものとして説明したが必ずしもこれに限られない。例えば、カウンタ122がアップカウントするカウンタとすることも可能である。この場合、補正クロック生成回路120は、アンダーフロー検出回路123に代わり、カウンタ122がカウント初期値(i)を超えてカウントアップしていること(オーバーフロー)を検出するオーバーフロー検出回路を備えても良い。オーバーフロー検出回路は、オーバーフローが生じた際にカウント停止信号が供給する。
【0066】
続いて、
図10のタイミングチャートを参照して、補正クロック生成回路120内の各回路の出力信号を説明する。
図10は、基本クロック(a)が正の周波数誤差を持つ場合の補正クロック生成回路120の動作を示すタイミングチャートである。なお、説明の便宜のため、
図10には動作クロック生成回路110内の各信号(補正間隔信号(b)、フリップフロップ114内のレジスタ値(d))についても記載している。また、タイミングチャート内の数値は、16進数表記としている。また、
図10では説明の便宜のため補正値は常に"000021H"とする。
【0067】
補正間隔信号(b)がロウレベルの場合、レジスタ値(d)に固定値B(
図10では"000020H")が基本クロック(a)のカウントに応じて加算される。補正間隔信号(b)がハイレベルの場合、レジスタ値(d)に補正値(000021H)が基本クロック(a)のカウントに応じて加算される。補正間隔信号(b)は1秒間に1回だけハイレベルとなる(ワンショットパルス)。そのため、レジスタ値(d)の下位m(=5)ビット値(g)は、1秒間に1回だけ値が変化する。
【0068】
たとえばタイミングT30において補正間隔信号(b)がハイレベルとなっている。そのため、レジスタ値(d)の下位m(=5)ビット値(g)は、タイミングT30に変化する(
図10は16進数表記のため、最下位ビットが変化する)。同様にタイミングT32において補正間隔信号(b)がハイレベルとなり、レジスタ値(d)の下位m(=5)ビット値(g)がタイミングT32に変化する(
図10は16進数表記のため、最下位ビットが変化する)。
【0069】
カウンタ初期値算出回路121は、レジスタ値(d)の下位m(=5)ビット値(g)と、第2クロック(h)の周波数を基にカウント初期値(i)を算出する。例えば、カウンタ初期値算出回路121は、タイミングT30においてカウント初期値(i)"690d"を算出する。
【0070】
カウンタ122は、動作クロック(f)のエッジタイミング(タイミングT31、T32等)においてカウント処理を開始する。ここでカウンタ122は、カウント初期値(i)から第2クロック(h)のカウント数を減算してカウント値(j)を算出する。アンダーフロー検出回路123は、カウント値(j)のアンダーフローを検出し、アンダーフローが生じた時点でカウント停止信号を出力する。カウント値のLSB(j')は、図示するように、カウント開始からカウント終了まで第2クロック(h)と同一波形となる。カウント停止信号の出力に応じて、1パルス補正クロック(k)の値が変化する。
【0071】
例えばアンダーフロー検出回路123は、タイミングT35においてアンダーフローを検出してカウント停止信号を出力する。これにより、1パルス補正クロック(k)はタイミングT35に値が変化する。同様にタイミングT36においてアンダーフローが生じるため、1パルス補正クロック(k)はタイミングT36に値が変化する。
【0072】
カウンタ初期値算出回路121は、各タイミングにおいてカウント初期値(i)を算出する。カウンタ122は、タイミングT33やT34(動作クロック(f)のエッジタイミング)においてカウント処理を開始する。カウント初期値(i)は、補正間隔信号(b)の入力時の補正値の加算に伴って変化するため、カウントに要する時間も変化する。このように1パルス補正クロック(k)は、レジスタ値(d)の下位m(=5)ビット値(g)(すなわち動作クロック(f)に反映されていない周波数誤差に相当する値)に応じてパルス幅が調整される。
【0073】
図11は、
図10のタイミングチャートを模式的に示す図である。
図11では、理解の容易化のためレジスタ値(d)を5ビット値とし、下位mビット値(g)を2ビット値とする。またレジスタ値(d)は、補数形式ではないものとする。固定値Bは、"00100"とし、最上位ビットの値が変化した場合に動作クロック(f)が変化するものとする。また、
図11において補正値は常に"00101"とする。
【0074】
補正間隔信号(b)がハイレベルの場合(タイミングT41、T42、T43、T44)において、レジスタ値(d)に補正値"00101"が加算される。すなわち、補正間隔信号(b)がハイレベルの場合(タイミングT41、T42、T43、T44)に、下位m(=2)ビット値(g)に"01"が累積加算される。
【0075】
本例では、タイミングT44となるまではレジスタ値(d)の下位m(=2)ビット値(g)の累積加算が下位3ビット目に桁上がりしない。そのため、動作クロック(f)は、タイミングT44となるまでの期間ではレジスタ値(d)が4回更新される毎に値が変化する。
【0076】
タイミングT44において、下位m(=2)ビット値(g)の累積加算が下位3ビット目に桁上がりする。これにより、直近の最上位ビットの更新タイミングから3回のレジスタ更新が行われたタイミング(T44)で最上位ビットの値が変化する。これにより、動作クロック(f)の補正がタイミングT44において行われる。すなわち、タイミングT40〜T44の周波数誤差の補正をタイミングT44において一括して行うことにより、動作クロック(f)が生成される。
【0077】
一方、1パルス補正クロック(k)は、動作クロック(f)のエッジタイミングから下位m(=2)ビット値(g)に応じたカウントを行う。そして1パルス補正クロック(k)は、当該カウント終了時に値が更新される。例えば、動作クロック(f)のエッジタイミングであるタイミングT45において下位2ビット"00"に応じたカウントを開始し、当該カウントが終了した際に1パルス補正クロック(k)の値が変化する。動作クロック(f)のエッジタイミングであるタイミングT46において下位2ビット"01"に応じたカウントを開始し、当該カウントが終了したに1パルス補正クロック(k)の値が変化する。
【0078】
このように1パルス補正クロック(k)は、レジスタ値(d)の下位m(=2)ビット値(g)に応じて調整されたパルス幅を持つ。すなわち、1パルス補正クロック(k)は、タイミングT40〜T44の期間において補正が行われた動作クロック(f)に対して、動作クロック(f)の生成に反映されていない周波数誤差を示す下位m(=2)ビット値(g)を用いたパルス幅調整を行って生成される。これにより、1パルス補正クロック(k)は、基本クロック(a)の周波数誤差が毎パルス反映されたクロック信号となる。
【0079】
続いて、基本クロック(a)が負の周波数誤差を持つ場合について説明する。
図12は、基本クロック(a)が負の周波数誤差を持つ場合の補正クロック生成回路120の動作を示すタイミングチャートである。各回路の動作自体は、正の周波数誤差を持つ場合(
図10)と同様である。固定値Bは"000020H"とし、補正値は"00001FH"とする。
【0080】
補正間隔信号(b)がロウレベルの場合、レジスタ値(d)に固定値B(
図10では"000020H")が基本クロック(a)のカウントに応じて加算される。補正間隔信号(b)がハイレベルの場合、レジスタ値(d)に補正値が基本クロック(a)のカウントに応じて加算される。例えば、レジスタ値(d)の下位m(=5)ビット値(g)がタイミングT52及びT55において変化する(
図12は16進数表記のため、最下位ビットが変化する)。
【0081】
カウンタ初期値算出回路121は、レジスタ値(d)の下位m(=5)ビット値(g)と、第2クロック(h)の周波数を基にカウント初期値(i)を算出する。例えば、カウンタ初期値算出回路121は、タイミングT50においてカウント初期値(i)"690d"を算出し、タイミングT53において"0d"を算出する。
【0082】
カウンタ122は、動作クロック(f)のエッジタイミング(タイミングT31、T32等)においてカウント処理を開始する。アンダーフロー検出回路123は、カウンタ122のカウント値(j)のアンダーフローを検出してカウント停止信号を出力する。例えば、アンダーフロー検出回路123は、タイミングT57においてアンダーフローを検出する。同様に、アンダーフロー検出回路123は、タイミングT53、T54、T58においてアンダーフローを検出してカウント停止信号を出力する。なお、タイミングT53ではカウント初期値(i)が"0d"であるため、動作クロック(f)のエッジタイミングとアンダーフローの検出が同時となる。
【0083】
カウント停止信号の出力に応じて、1パルス補正クロック(k)はタイミングT57、T53、T54、T58に値が変化する。
【0084】
図13は、
図11(負の周波数誤差を持つ場合)のタイミングチャートを模式的に示す図である。
図13では、
図11と同様に理解の容易化のためレジスタ値(d)の値を5ビット値とし、下位mビット値(g)を2ビット値とする。またレジスタ値(d)は、補数形式ではないものとする。固定値Bは、"00100"とし、最上位ビットが変化した場合に動作クロック(f)が変化するものとする。また、
図13において補正値は常に"00011"とする。
【0085】
補正間隔信号(b)がハイレベルの場合(タイミングT62、T65、T68、T70)において、レジスタ値(d)に補正値"0011"が加算される。すなわち、補正間隔信号(b)がハイレベルの場合(タイミングT62、T65、T68、T70)に、下位m(=2)ビット値(g)に"11"が累積加算される。
【0086】
図13では、補正値"00011"よりも固定値B"00100"の方が大きい。そのため、タイミングT62においてレジスタ値(d)に補正値"00011"が加算されたとしても、レジスタ値(d)の最上位ビットが変化しない。そのため、タイミングT72には動作クロック(f)は変化せず、タイミングT63において状態が変化する。すなわち、タイミングT61からレジスタ値(d)が5回更新されたタイミングT63において動作クロック(f)の状態が変化する。動作クロック(f)は、タイミングT61〜T63の間隔を除き、レジスタ値(d)が4回更新される毎に状態が変化する(T60〜T61、T63〜T64、T64〜T66、T66〜T67、T67〜T69)。
【0087】
タイミングT72には動作クロック(f)は変化せず、タイミングT63において値が変化することにより、動作クロック(f)は、タイミングT60〜タイミングT71の間隔の周波数誤差が補正されたクロック信号となる。すなわち、タイミングT63において周波数誤差の補正が一括して行われることにより、動作クロック(f)を調整している。
【0088】
一方、1パルス補正クロック(k)は、動作クロック(f)のエッジタイミングから下位m(=2)ビット値(g)に応じたカウントの終了時に値が更新される。例えば、動作クロック(f)のエッジタイミングであるタイミングT61において下位2ビット"00"に応じたカウントを開始し、当該カウントが終了したときに1パルス補正クロック(k)の状態が変化する。同様に動作クロック(f)のエッジタイミングであるタイミングT63において下位2ビット"11"に応じたカウントを開始し、当該カウントが終了したときに1パルス補正クロック(k)の状態が変化する。
【0089】
図11を参照して説明した場合と同様に、1パルス補正クロック(k)は、基本クロック(a)の周波数誤差が毎パルス反映されたクロック信号となる。
【0090】
なお
図10〜
図13の説明では補正値が一定値であるものとして説明したが、必ずしもこれに限られない。補正値は、後述する温度特性を用いた算出により時間経過とともに適宜変更され得る。当該補正値の変化に応じて、カウント初期値(i)の値が定まる。例えば、補正値が"000020H"(固定値Bと同値)となった場合には、カウント初期値(i)の変化が生じず、前回のカウントと同数のカウントを行ったタイミングでカウント停止信号が出力される。一方、あるタイミングで補正値が大幅に変更された場合、前回のカウント時からカウント初期値(i)の値が大幅に変わり、カウントに要する時間も大幅に変化する。
【0091】
<クロック補正回路100の効果>
続いてクロック補正回路100の効果について説明する。動作クロック生成回路110は、一定期間で周波数誤差が補正された動作クロックを出力する。詳細には、動作クロック生成回路110は、一定タイミングで基本クロック(a)(第1クロック)の周波数誤差に相当する値(誤差値)を固定値の累算値に反映(加算)する。そして動作クロック生成回路110は、累積値の所定ビット(
図5では上位2ビット目)が変化したタイミングで補正を一括して行うことにより一定期間で周波数誤差が補正された動作クロックを出力する。上述の説明では、分解能が30.5ppm未満の周波数誤差の値を下位mビット値(g)として累積している。すなわち、動作クロックの各エッジタイミングでは、動作クロックの状態変化に反映されていない周波数誤差が下位mビット値(g)として記憶されている。換言すると、動作クロックの状態が変化するタイミング(つまりエッジタイミング)の累算値内には、所定ビットより下位のビット値が残存している。この残存しているビット値(下位ビット値)は、動作クロックの対象となるエッジタイミングの判定に直接的には扱うことができなかったビット値である。
【0092】
補正クロック生成回路120は、この累算値内に残存しているビット値である下位mビット値(g)を基本クロック(a)よりも高速な(詳細には式(要求出力周波数/所望の分解能)を満たす)第2クロックのカウント数に換算する。そして補正クロック生成回路120は、動作クロックのエッジタイミングを当該カウント数に応じてずらした補正クロック(1パルス補正クロック(k))を生成する。動作クロック(f)の状態変化の際に累算値内に残存していたビット値を用いて動作クロック(f)のパルス幅を補正することにより、精度の高いクロック信号を生成することができる。
【0093】
別の観点から更に説明する。フリップフロップ114のレジスタ値(d)(累算値)は、出力信号の要求周波数を基に定めた固定値を累算し、基本クロック(a)の周波数誤差を累算値に反映した値である。すなわちレジスタ値(d)(累算値)は、要求周波数と生成元となる基本クロック(a)の周波数誤差の双方を考慮した値となる。そのためこのレジスタ(d)(累算値)の全ビット(全桁)を余すことなく使用することにより精度の高い補正信号を算出することができる。補正クロック生成回路120は、動作クロック生成回路110が着目した所定ビット(
図5では上位2ビット目)以下の桁の値(上述の例ではレジスタ(d)(累算値)の下位mビット値(g))を用いて動作クロックを補正している。これにより、精度の高いクロック信号を生成することができる。
【0094】
なお、上述の説明では動作クロックの各エッジタイミングでカウント処理を行ったが必ずしもこれに限られない。例えば、補正クロック生成回路120は、動作クロック(f)の立下りのエッジタイミングでのみ上述のカウント処理を行ってもよい。この場合であっても、動作クロック(f)の補正間隔よりも短い間隔で周波数誤差が補正された精度の高いクロック信号を生成することができる。同様に動作クロック(f)のエッジタイミングの数回に1回(たとえば3回に1回)だけ上述のカウント処理を行っても良い。すなわち、補正クロック生成回路120は、動作クロック(f)の補正間隔(第1間隔)よりも短い間隔(第2間隔)で補正(カウント処理)を行えばよい。
【0095】
また補正値及びレジスタ値(d)は、補数形式により表現することができる数値である。補正値を補数形式で表現できることにより、レジスタ値(d)を増加だけでなく減少させることが可能となる。これにより、基本クロック(a)が正の周波数誤差(ppm)を持つ場合と負の周波数誤差を持つ場合の双方に対応することができる。
【0096】
さらに、上述の動作クロック補正回路115は、補正値及びレジスタ値(d)が補数形式を用いることに起因する動作クロックの意図しない動作を補正間隔信号(b)の出力タイミングに応じて補正する。これにより、精度の高い動作クロック(f)を生成することができる。
【0097】
前述のように第2クロック(h)は、式(要求出力周波数/所望の分解能)以上の周波数を持つクロック信号である。これにより、1パルス補正クロック(k)と要求精度に応じた補正が担保される。
【0098】
また、本実施の形態では、固定値Bよりも誤差値(補正値から固定値Bを引いた値であり、基本クロック(a)の周波数誤差に対応する値)が小さい。そのため、動作クロックのエッジタイミングおける累算値内の残存値(下位ビット値)は、常に下位mビット値(g)にのみ現れる。よって、動作クロック生成回路110は、動作クロックの状態変化時における累算値内の残存値として下位mビット値(g)のみを補正クロック生成回路120に供給すればよい。第2クロックのパルスカウントに用いるビット幅が小さくなることにより、カウンタ122のカウント上限数を少なくすることができる。
【0099】
なお、上述の例では固定値Bは、あるビット(
図5における下位6ビット目)のみが1となっている値であったが必ずしもこれに限られない。例えば固定値Bは、2つのビットに1が設定されているような値であっても良い。この場合であっても動作クロックのエッジタイミング(動作クロックの状態の変更時)において、補正クロック生成部120は、累算値のうち所定ビットよりも下位側のビット値を用いて補正クロックを生成すればよい。
【0100】
<MCU10の構成例について>
続いて、
図3に示すクロック補正回路100の具体的な構成例について説明する。動作クロック生成回路110に補正値の算出方法は、例えば前述の3通り((1)温度特性テーブル、(2)温度特性算出式、(3)周波数誤差検出器)の方式がある。各方式を採用したクロック補正回路100の構成例(
図3に示すクロック補正回路の具体的な構成例)について図面を参照して説明する。
【0101】
<MCU10の詳細構成例1>
図14は、温度特性((1)温度特性テーブル、(2)温度特性算出式)を用いて動作クロック生成回路110に与える補正値を算出するクロック補正回路100及びMCU10の構成例を示すブロック図である。
【0102】
MCU10は、
図3の構成に加えて高速内蔵発振器220と、温度センサ330と、A/D変換器340と、を有する。また、クロック補正回路100は、補正値を設定するレジスタを備える構成であってもよい。
【0103】
温度センサ330は、MCU10上で使用される外部温度検出のための一般的な温度センサである。温度センサ330は、定期的に温度検出を行い、検出値(アナログ値)をA/D変換器340に供給する。A/D(Analog/Digital)変換器340は、供給されたアナログ値をデジタル値に変換し、当該デジタル値をCPU300に供給する。温度センサ330及びA/D変換器340は、一般的なマイクロコントローラ上で用いられる任意の構成であればよい。
【0104】
CPU300は、温度特性((1)温度特性テーブル、(2)温度特性算出式)を用いて補正値を算出する。初めに温度特性テーブル(1)を用いた算出方法を説明する。音叉型水晶振動子の周波数温度特性は、25度を中心とする負の2次曲線で示されることが知られている。すなわち、温度が定まると周波数誤差が一意に定まる関係になる。メモリ310は、温度と基本クロック(a)の周波数誤差とが対応付けられたテーブル情報を保持する。CPU300は、A/D変換器340からバスを介して供給された温度特性と対応する周波数誤差を当該テーブルから読み出す。そして、CPU300は、テーブルから読み出した基本クロック(a)の周波数誤差を上記の[数1]に代入することにより補正値を算出し、算出した補正値を動作クロック生成回路110に供給する。
【0105】
CPU300は、温度特性算出式(2)を用いて補正値を算出する場合、メモリ310から温度特性式を読み出す。当該温度特性式は、前述のように2次曲線である。CPU300は、温度を当該温度特性式に代入することにより基本クロック(a)の周波数誤差を算出する。CPU300は、算出した補正値を動作クロック生成回路110に供給する。
【0106】
なお音叉型水晶振動子の周波数温度特性を利用した周波数誤差算出の詳細は、[非特許文献1]、及び[非特許文献2]を参照されたい。また、CPU300が算出した補正値をそのまま動作クロック生成回路110に供給することに限られず、算出した周波数誤差をもとにユーザが動作クロック生成回路110が読み出し可能なレジスタに補正値を設定しても良い。
【0107】
高速内蔵発振器220は、一般的なMCU10内に設けられる発振器である。高速内蔵発振器220は、基本クロック(a)よりも周波数の高い高速クロックを生成する。当該高速クロックは、上述の式(1パルス補正クロックの出力周波数/所望の分解能)を満たす周波数を有する。高速内蔵発振器220は、生成した高速クロックを上述の第2クロック(h)として補正クロック生成回路120に供給する。
【0108】
<MCU10の詳細構成例2>
図15は、周波数誤差検出器(3)を用いて動作クロック生成回路110に与える補正値を算出するクロック補正回路100及びMCU10の構成例を示すブロック図である。
【0109】
MCU10は、基準発振器230を備える構成である。基準発振器230は、TCXO等を用いることによって基本クロック(a)よりも周波数の高い基準クロックを生成する。基準クロックの周波数は、例えば14.4MHzや24MHzである。基準発振器230は、生成した基準クロックを第2クロック(h)として周波数誤差検出器170及び補正クロック生成回路120に供給する。なお、基準クロックは、前述の高速クロック(高速内蔵発振器220の出力クロック信号)よりも精度の良いクロック信号を生成することができるが、消費電力が大きい。
【0110】
クロック補正回路100は、周波数誤差検出器170を備える。周波数誤差検出器170は、基準クロックを基に基本クロック(a)の周波数誤差を算出する。
図16は、周波数誤差検出部170の内部構成を示すブロック図である。周波数誤差検出部170は、ゲート生成カウンタ171と、誤差測定用カウンタ172と、を有する。ゲート生成カウンタ171は、時計発振器210にて生成された基本クロック(a)をカウントし、基本クロック(a)の周波数に応じて設定されたゲート幅Tのゲート信号を生成するものである。以下の説明では、ゲート幅Tは、32768とする。すなわち、基本クロック(a)に誤差がない場合、基本クロック(a)の周波数が32.768kHzであるため、ゲート生成カウンタ171は、1秒のゲート信号を生成する。
【0111】
誤差測定用カウンタ172は、基準発振器230が生成した基準クロックをカウントし、ゲートにおいて生成されたゲート信号をイネーブルとする。そして、誤差測定用カウンタ172は、ゲート信号で設定される時間内にカウントしたカウント値と、予め設定される期待値Eとの差を求め、この差を周波数誤差として算出する。なお期待値Eは、基準クロックが14.4MHzである場合には「14400000」となる。誤差測定用カウンタ172は、算出した周波数誤差をCPU300に供給する。CPU300は、上述の[数1]に算出した周波数誤差を代入することにより補正値を算出し、当該補正値を動作クロック生成回路110に供給する。
【0112】
<MCU10の詳細構成例3>
MCU10は、クロックリカバリ回路を備えても良い。
図17は、クロックリカバリ回路を有するMCU10の構成を示すブロック図である。MCU10は、クロックリカバリ回路240及びセレクタ250を備える。
【0113】
セレクタ250は、消費電力や外部端子160から出力されるクロック信号の用途に応じて、基準クロック及び高速クロックの一方を第2クロック(h)として補正クロック生成回路120に供給する。
【0114】
クロックリカバリ回路240には、高速内蔵発振器220が生成した高速クロック、及び補正クロック生成回路120が生成した1パルス補正クロック(k)が供給される。クロックリカバリ回路240は、1パルス補正クロック(k)を用いて高速クロックの周波数を測定し、当該測定結果を用いて高速内蔵発振器220のトリミング(容量調整)を行う。
図18にクロックリカバリ回路240の詳細構成を示す。
【0115】
図18にクロックリカバリ回路240の詳細構成を示す。クロックリカバリ回路240は、カウンタ241と、比較回路242と、を有する。なお、図示しないものの後述の期待値を保持するレジスタも備える。
【0116】
カウンタ241は、1パルス補正クロック(k)が所定回数入力される間に、高速クロックの入力回数をカウントする。カウンタ241は、当該カウント数を比較回路242に供給する。
【0117】
比較回路242は、図示しないレジスタ(または任意の記憶装置)から高速クロックの期待値、すなわち要求周波数を読み出す。比較回路242は、読み出した期待値と、カウント数と、を比較する。ここで両者が一致する場合、比較回路242は高速クロックが所望の周波数で動作していると判定する。両者にずれがある場合、比較回路242は高速クロックと所望の周波数との間にずれがあるものと判定する。比較回路242は、高速内蔵発振器220の周波数がプラス方向かマイナス方向のどちらにずれているかを比較する。そして比較回路242は、ずれの方向により補正容量値を±1する。この補正容量値の調整動作を読み出した期待値とカウント数が一致するまで繰り返し、適切な補正容量値を算出する。そして、比較回路242は、当該容量値を高速内蔵発振器220に供給する。
【0118】
高速内蔵発振器220は、比較回路242から通知された容量値を用いて高速内蔵発振器220内の可変容量等に反映することにより、周波数誤差の調整を行う。
【0119】
ここで、カウンタ241が1パルス補正クロック(k)を用いる理由を以下に説明する。仮にカウンタ241が動作クロック(f)を使用する場合、最低でも動作クロック(f)の補正が行われるまでの時間だけ高速クロックのカウント処理を行う必要が生じるため、カウンタ241のカウント時間が長くなってしまう。一方、カウンタ241が1パルス補正クロック(k)を使用する場合、1パルス補正クロック(k)は各パルスの周波数調整が行われているため、カウント時間を短くすることができる。カウント時間を短くすることにより消費電流を少なくすることができる。
【0120】
さらに、1パルス補正クロック(k)を使用した場合、カウンタ241の最大カウント数を削減することができる。これにより、カウンタ241の回路規模を小さくすることができる。よって、消費電流及び回路規模の観点からクロックリカバリ回路240に供給されるクロックは、各パルスの周波数誤差が逐次補正された1パルス補正クロック(k)であることが望ましい。
【0121】
<実施の形態2>
実施の形態2にかかるクロック補正回路100は、動作クロック生成回路110内の消費電流を実施の形態1の構成と比べて削減出来ることを特徴とする。以下、実施の形態2にかかるクロック補正回路100について実施の形態1と異なる点を説明する。
【0122】
実施の形態2にかかるクロック補正回路100は、実施の形態1と動作クロック生成回路110の構成のみが異なるため、動作クロック生成回路110についてのみ説明を行う。
図19は、本実施の形態にかかる動作クロック生成回路110の構成を示すブロック図である。
【0123】
本実施の形態にかかる動作クロック生成回路110は、
図4に示す構成に加えてFF動作制御回路116を備える。FF動作制御回路116には、補正間隔信号(b)が供給される。なお以下の説明においてフリップフロップ114の構成は、
図5に示す構成、すなわち21ビットのレジスタを持つ構成とする。また補正間隔信号(b)は、32768クロックのうち1クロックのみがハイレベルとなるワンショットパルスである。
【0124】
FF動作制御回路116は、補正間隔信号(b)に応じてフリップフロップ114の動作を制御する。詳細にはFF動作制御回路116は、補正間隔信号(b)がロウレベルの場合にレジスタの上位16ビット目がカウントアップするように制御する。レジスタの上位16ビット目の値は、上述の固定値Bに相当する値である。この際に、FF動作制御回路116は、フリップフロップ114が加算器113からの値の取り込みを行わないように制御する。また、FF動作制御回路116は、フリップフロップ114から加算器113への値の入力も行わないように制御する。一方、FF動作制御回路116は、補正間隔信号(b)がハイレベルの場合にのみ加算器113からの出力値を取り込み、レジスタ値(d)に当該出力値を反映する。
【0125】
すなわち、FF動作制御回路116は、32768クロックのうち1クロックの期間だけ加算器113が加算処理を行い、その他の期間ではフリップフロップ114内のレジスタが単なるアップカウンタとして動作するように制御する。
【0126】
上述の構成をとることにより加算演算の回数が大幅に減少し、フリップフロップ114はほとんどの期間を単なるカウンタとして動作する。カウント処理は単純処理であるため、実施の形態1と比べて消費電流を大幅に削減することができる。近年のクロック補正回路100(RTC)は、スタンバイモード設定下において使用されることが非常に多い。スタンバイモード時では超消費電流化が求められている。本実施の形態にかかる動作クロック生成回路110の構成は加算演算を極力行わないため、スタンバイモード時における消費電流削減の要求に応えることができる。
【0127】
<その他の実施形態>
なお、特許文献1に記載のRTC回路も動作クロックに相当するクロック信号を生成できる構成である。実施の形態1にかかるクロック補正回路100の構成回路の一部を特許文献1に記載の各回路に置き換えることも可能である。当該構成について以下に説明する。
【0128】
図20は、クロック補正回路100に特許文献1に記載のRTC回路を構成する各回路を適応した構成を示すブロック図である。クロック補正回路100は、動作クロック生成回路110に代わり、分周器180と、補正機能付き発振器190とを備える。なお、
図3に示す構成要素と同一の構成要素は、同一符号を付して詳細な説明を省略する。また実施の形態1と同様に1パルス補正クロック(k)が1ppm以下の補正精度を実現する構成について説明する。
【0129】
分周器180は、基本クロック(a)を分周した分周信号(l)を生成する。分周器180は、一般的に知られた分周器の構成であればよく、たとえば複数のフリップフロップを用いた非同期カウンタにより構成すれば良い。以下の説明では、分周器180は、2
14分周回路であるものとする。すなわち、分周器180は、基本クロック(a)から2Hzの分周信号(l)を生成する。
【0130】
補正機能付き発振器190は、動作クロック(f')を生成する。補正機能付き発振器190の構成例を
図21に示す。補正機能付き発振器190は、加算器191と、フリップフロップ(FF)192と、を備える。
【0131】
加算器191は、周波数誤差検出器170が算出した周波数誤差と、固定値Aと、フリップフロップ192の出力値と、を加算する。固定値Aは、"2000H"とする。周波数誤差の算出方法は、
図6に示す算出方法と略同一であり、たとえば0.95ppmの場合には1Hとなる。
【0132】
フリップフロップ192は、内部にnビット(以下の説明ではn=18)のレジスタ(レジスタ値(d'))を有する。フリップフロップ192は、分周信号(l)をクロック端子の入力として加算器191の出力値をnビットのレジスタに取り込む。さらにフリップフロップ192は、レジスタ値(d')のMSB(Most Significant Bit)が変化するタイミングで値が切り替わる動作クロック(f')を生成する。さらにフリップフロップ192は、レジスタ値(d')の下位m(m=17)ビット値(g')を補正クロック生成回路120内のカウンタ初期値算出回路121に供給する。
【0133】
図22は、フリップフロップ192内のレジスタ値(d')を示す図である。当該レジスタ値(d')は、
図5に示すレジスタ値(d)と略対応するが、正負を示すビットを持たない点と下位mビット値(g')のビット幅が大きい点が異なる。
【0134】
以上のように特許文献1と同様の構成であっても、補正機能付き発振器190は、周波数誤差を累積加算して動作クロック(f')を生成する。補正クロック生成回路120は、この動作クロック(f')と下位mビット値(g')を用いることにより1パルス補正クロック(k)を生成することができる。
【0135】
次に実施の形態1にかかるクロック補正回路100の構成(
図3等)と
図20に示すクロック補正回路100の構成の比較を行う。実施の形態1にかかる構成では、32.768kHzの基本クロック(a)から動作クロック(f)を生成するため、動作クロック(f)の最大誤差を30.5ppm(1Hz/32.768kHz)とすることができる。これにより、1ppmの補正精度を実現するためには、下位mビット値(g)を5ビット値とすることができる。一方、
図20の構成では分周信号2Hzから動作クロック(f')を生成するため、動作クロック(f')の最大誤差は動作クロック(f)の最大誤差(30.5ppm)よりも大きくなる。これにより、下位mビット値(g')が実施の形態1よりも大きなビット幅の値(17ビット値)となる。
【0136】
実施の形態1では下位mビット値(g)のビット幅を小さくできるため、第2クロック(h)のカウント時間を短くすることができる。これにより、第2クロック(h)に多少の誤差がある場合であっても、1パルス補正クロック(k)の要求精度を満たすことができる。例えば、上述の高速内蔵発振器220の出力する高速クロック(第2クロック(h))に5%程度の精度誤差があった場合であっても、1パルス補正クロック(k)は±3ppm程度の精度を満たすことができる。
【0137】
さらに、実施の形態1では下位mビット値(g)のビット幅を小さくできるため、カウンタ初期値算出回路121(いわゆるデコーダ)の回路規模を小さくすることができる。
【0138】
さらにまた、実施の形態1では補正値及びレジスタ値(d)が正負を示すことができる補数形式である。そのため実施の形態1に記載のクロック補正回路100は、
図20に示す構成と異なり、基本クロック(a)が正の周波数誤差(ppm)を持つ場合にも負の周波数誤差(ppm)を持つ場合にも対応することができる。
【0139】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【0140】
例えば、クロック補正回路100が電力メータ1内部で用いられる例について説明したが、必ずしもこれに限られない。上述のクロック補正回路100は、例えば任意の車載システム、携帯電話やスマートフォンをはじめとする携帯端末、パーソナルコンピュータ等に内蔵されても良い。
【0141】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0142】
(付記1)
クロック信号を出力可能な外部端子を有するマイクロコントローラであって、
出力するクロック種別を記憶する出力選択レジスタと、
第1クロックに基づいて第1間隔で周波数誤差が補正された動作クロック、前記第1クロックに基づいて第1間隔よりも短い第2間隔で周波数誤差が補正された補正クロック、を含むクロック信号群から前記出力選択レジスタの記憶値に応じてクロック信号を選択して前記外部端子から出力するセレクタと、を備えるマイクロコントローラ。
【0143】
(付記2)
前記補正クロックは、各パルスのパルス幅が補正された1パルス補正クロック信号である、付記1に記載のマイクロコントローラ。
【0144】
(付記3)
測定用LSIが測定した電力情報と、消費電力量と各時刻の課金額の関係を示すテーブル情報と、前記動作クロックに基づいて計時された時刻情報と、に基づいて電力課金額を算出する演算部、を更に備える付記1に記載のマイクロコントローラ。
【0145】
(付記4)
付記3に記載のマイクロコントローラと、
前記電力課金額を表示するパネル装置と、を備える電力メータ装置。