以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、同一の構成要素には同一の参照符号を付して、重複する説明を省略する。
<第1の実施形態>
図1は、本発明の第1の実施形態に係る計時装置の構成例を示す図である。図1に示すように、この計時装置は、発振回路10と、分周回路20と、下位計時回路30と、上位計時回路40とを含んでいる。
また、計時装置は、電圧低下検出回路51と、発振停止検出回路52と、バックアップ電源53と、フィルター54と、ホストインターフェース60と、制御データ格納部61と、タイミング制御回路70と、調停回路81と、バッファー82と、履歴データ格納部83と、出力制御回路84とを含んでいる。なお、計時装置の主要部は、半導体装置(IC)に内蔵されても良い。
発振回路10は、発振動作を行うことにより、例えば、32768Hz(215Hz)の周波数を有する原振クロック信号CL0を生成する。発振回路10としては、例えば、水晶振動子を用いた水晶発振回路が用いられる。
図2は、図1に示す発振回路の構成例を示す回路図である。図2に示すように、発振回路10は、水晶振動体100と、インバーター101と、制御回路102と、キャパシターCP1及びCP2と、抵抗R1とを含んでいる。キャパシターCP1及びCP2は、インバーター101の入力端子及び出力端子と基準電位VSSの配線との間にそれぞれ接続されている。抵抗R1は、インバーター101の出力端子と入力端子との間に接続されている。
インバーター101は反転増幅動作を行い、出力端子に生成される原振クロック信号CL0が、水晶振動体100等を介して入力端子にフィードバックされる。その際に、水晶振動体100は、インバーター101によって印加される交流電圧によって振動する。その振動は固有の共振周波数において大きく励起されて、水晶振動体100が負性抵抗として動作する。その結果、発振回路10は、主に水晶振動体100の共振周波数によって決定される発振周波数で発振する。
ただし、キャパシターCP1又はCP2の容量値を変更することによって、発振回路10の発振周波数を微調整することができる。そこで、図2に示す例においては、キャパシターCP1が、例えば、複数のキャパシターと、それらのキャパシターにそれぞれ接続された複数の電子スイッチを含むスイッチ回路とで構成される。
制御回路102には、発振回路10の発振周波数を制御する制御信号が入力される。制御回路102は、例えば、不揮発性メモリー等のメモリーを含んでおり、入力される制御信号に従って、発振回路10の発振周波数を制御するデータをメモリーに格納する。また、制御回路102は、メモリーに格納されているデータに基づいて、複数の電子スイッチをオン又はオフするようにスイッチ回路を制御する。それにより、発振回路10の発振周波数を外部から制御することができる。
図1に示す発振回路10としては、水晶発振回路以外にも、圧電素子、SAW(表面弾性波)共振子、又は、静電容量タイプのレゾネーター等を用いた発振回路を使用することができる。あるいは、発振回路10を省略して、外部の回路から分周回路20に原振クロック信号CL0が供給されるようにしても良い。
分周回路20は、原振クロック信号CL0を分周することにより、4096Hz(212Hz)の周波数を有する分周クロック信号CL1を生成する。分周クロック信号CL1は、下位計時回路30に供給される。
図3は、図1に示す分周回路の構成例を示す回路図である。図3に示すように、分周回路20は、例えば、複数のT(トグル)型フリップフロップ201〜203を直列に接続して構成される。各々のT型フリップフロップは、入力端子Tに入力される信号が1周期変化する毎に出力信号を反転することにより、入力端子Tに入力される信号を1/2分周する。それにより、分周回路20は、例えば、32768Hz(215Hz)の周波数を有する原振クロック信号CL0を1/23分周して、4096Hz(212Hz)の周波数を有する分周クロック信号CL1を生成する。
再び図1を参照すると、下位計時回路30及び上位計時回路40は、クロック信号に同期して計時動作を行うことにより計時データを生成する計時回路を構成している。下位計時回路30は、分周クロック信号CL1に同期して計時動作を行うことにより、1/1000秒単位の時刻を表す計時データT0、及び、1/100秒単位の時刻を表す計時データT1を生成する。また、上位計時回路40は、下位計時回路30から出力されるキャリー信号CA2に同期して計時動作を行うことにより、例えば、秒単位の時刻を表す計時データT2〜年単位の時刻を表す計時データT8を生成する。
図4は、図1に示す下位計時回路の構成例を示す図である。図4に示すように、下位計時回路30は、第1のカウンター31と、カウント制御データ格納部32と、カウント制御回路33と、第2のカウンター34とを含んでいる。
第1のカウンター31は、例えば、6ビットバイナリーカウンターで構成される。第1のカウンター31は、1/100秒単位の計時動作を行うために、4096Hzの周波数を有する分周クロック信号CL1のパルスに同期してカウント動作を行うことにより、各々のカウントサイクルにおいて、十進数の「0」から「39」までを表す6ビットのカウント値C5〜C0を生成する。ここで、C5は最上位ビットであり、C0は最下位ビットである。
第1のカウンター31によって生成されるカウント値の上位4ビットC5〜C2は、1/1000秒単位の時刻を表す4ビットの計時データT0として用いられる。分周クロック信号CL1の1周期は約244μ秒であるので、第1のカウンター31のカウント値の上位4ビットC5〜C2を下位方向に2ビット分シフトしてカウント値を4で割ることにより、1/1000秒単位の時刻を表す計時データT0が生成される。ただし、分周クロック信号CL1の4周期は、1/1000秒に対して約−23.4μ秒の誤差を含んでいる。
このようにすれば、1/100秒単位の計時動作を行うために生成される6ビットのカウント値「000000」〜「100111」の上位4ビット「0000」〜「1001」を下位方向に2ビット分シフトすることにより、簡単な回路構成によって消費電流も殆ど増加させずに、1/1000秒単位の時刻として十進数の「0」〜「9」を表す4ビットの計時データT0を生成することができる。
第1のカウンター31によって行われるカウント動作には、カウント値が「0」〜「39」に順次変化した後に「0」に戻る40カウントのサイクルと、カウント値が2回続けて「39」になった後に「0」に戻る41カウントのサイクルとが含まれている。そこで、下位計時回路30には、第40カウントの情報を表す1ビットのカウント制御データ(フラグ)F1を格納するカウント制御データ格納部32が設けられている。カウント制御データ格納部32は、例えば、D型フリップフロップ等で構成される。
カウント制御回路33は、初期状態設定時に、ホストインターフェース60から供給されるカウント初期値を第1のカウンター31及び第2のカウンター34に設定すると共に、カウント制御データ格納部32に格納されているカウント制御データF1を「0」にリセットする。カウント制御回路33は、例えば、順序回路を含むステートマシンで構成される。
第1のカウンター31によって生成されるカウント値C5〜C0は、カウント制御回路33にも供給される。カウントサイクルが所定の回数である場合に、カウント制御回路33は、第1のカウンター31によって生成されるカウント値が十進数の「39」を表す値に等しくなると、カウント制御データF1を「1」に設定する。それにより、分周クロック信号CL1の次のパルスが到来してもカウント値を維持し、分周クロック信号CL1のさらに次のパルスに同期してカウント値を「0」にリセットする第1の状態遷移が設定される。
一方、カウントサイクルが所定の回数でない場合に、カウント制御回路33は、第1のカウンター31によって生成されるカウント値が十進数の「39」を表す値に等しくなっても、カウント制御データF1を「0」に維持する。それにより、分周クロック信号CL1の次のパルスに同期してカウント値を「0」にリセットする第2の状態遷移が設定される。
上記の構成によれば、第1のカウンター31によって生成されるカウント値を「100111」以内としながら、カウントサイクルの期間を調節することができる。分周クロック信号CL1が4096Hzの周波数を有する場合に、カウント制御回路33は、連続する100回のカウントサイクルの内で、第1の状態遷移を96回設定すると共に、第2の状態遷移を4回設定して、各々のカウントサイクルが終了するときにキャリー信号CA1を出力する。
41カウントのサイクルにおいては、1カウントサイクルの期間が、分周クロック信号CL1の41周期に相当し、約10.01m秒となる。一方、40カウントのサイクルにおいては、1カウントサイクルの期間が、分周クロック信号CL1の40周期に相当し、約9.77m秒となる。従って、41カウントのサイクルと40カウントのサイクルとを適切な順序で設定することにより、計時データによって表される時刻の誤差を低減することができる。
例えば、連続する100回のサイクルの内で、第13回、第38回、第63回、及び、第88回以外のサイクルにおいて、カウント制御回路33は、第1のカウンター31によって生成されるカウント値が十進数の「39」を表す値に等しくなると、カウント制御データF1を「1」に設定することによって第1の状態遷移を設定する。
第1の状態遷移において、カウント制御回路33は、第1のカウンター31のカウント動作を停止すると共に、分周クロック信号CL1の次のパルスに同期して、カウント制御データF1を「0」にリセットする。また、カウント制御回路33は、分周クロック信号CL1のさらに次のパルスに同期して、第1のカウンター31のカウント動作の停止を解除してカウント値を「0」にリセットすると共に、キャリー信号CA1を出力する。それにより、41カウントのサイクルが実現される。
一方、連続する100回のサイクルの内で、第13回、第38回、第63回、及び、第88回のサイクルにおいて、カウント制御回路33は、第1のカウンター31によって生成されるカウント値が十進数の「39」を表す値に等しくなると、カウント制御データF1を「0」に維持することによって第2の状態遷移を設定する。
第2の状態遷移において、カウント制御回路33は、分周クロック信号CL1の次のパルスに同期して、第1のカウンター31のカウント値を「0」にリセットすると共に、キャリー信号CA1を出力する。それにより、40カウントのサイクルが実現される。このようにすれば、41カウントのサイクルと40カウントのサイクルとにおける誤差が緩和されて、計時データによって表される時刻の誤差を低減することができる。
カウント制御回路33から出力されるキャリー信号CA1は、第2のカウンター34に供給される。第2のカウンター34は、カウント制御回路33から出力されるキャリー信号CA1に同期してカウント動作を行うことにより、1/100秒単位の時刻を表すカウント値を生成し、カウント値が「0」に移行するときにキャリー信号CA2を出力する。
第2のカウンター34は、例えば、8ビット10進BCD(バイナリー・コーデッド・デシマル)カウンターで構成される。第2のカウンター34によって生成されるBCDカウント値は、十進数の1/100秒の位を表す4ビットB0〜B3と、十進数の1/10秒の位を表す4ビットB4〜B7とを含んでいる。
第2のカウンター34は、キャリー信号CA1のパルスに同期して、十進数の「0」〜「99」を表すカウント値を順次生成する。カウント値が十進数の「99」を表す値に等しくなると、第2のカウンター34は、キャリー信号CA1の次のパルスに同期して、カウント値を「0」にリセットすると共に、キャリー信号CA2を出力する。
第2のカウンター34の100カウントの期間は、次式で示すように1秒となる。
4096−1×(41×96+40×4)=1
従って、キャリー信号CA2は、1Hzの周波数を有している。また、第2のカウンター34の1カウントの期間は、最大で約±117μ秒の誤差を含むものの、長期的には1/100秒の期間に正確に対応している。第2のカウンター34によって生成されるカウント値は、1/100秒単位の時刻を表す計時データT1として用いられる。
図5は、図1に示す上位計時回路の構成例を示す図である。上位計時回路40は、キャリー信号CA2に同期してカウント動作を行うことにより、秒単位以上の時刻を表す複数のカウント値をそれぞれ生成する複数の上位カウンター41等を含んでいる。
例えば、図5に示すように、上位計時回路40は、第3のカウンター41〜第6のカウンター44と、曜日データ生成部45と、第7のカウンター46及び第8のカウンター47とを含んでいる。
第3のカウンター41は、キャリー信号CA2に同期してカウント動作を行うことにより、秒単位の時刻を表すカウント値を生成する。例えば、第3のカウンター41は、60進BCDカウンターで構成され、キャリー信号CA2のパルスに同期して、十進数の「0」〜「59」を表すBCDカウント値を順次生成する。
カウント値が十進数の「59」を表す値に等しくなると、第3のカウンター41は、キャリー信号CA2の次のパルスに同期して、カウント値を「0」にリセットすると共に、キャリー信号CA3を出力する。第3のカウンター41によって生成されるカウント値は、秒単位の時刻を表す計時データT2として用いられる。
第4のカウンター42は、キャリー信号CA3に同期してカウント動作を行うことにより、分単位の時刻を表すカウント値を生成する。例えば、第4のカウンター42は、60進BCDカウンターで構成され、キャリー信号CA3のパルスに同期して、十進数の「0」〜「59」を表すBCDカウント値を順次生成する。
カウント値が十進数の「59」を表す値に等しくなると、第4のカウンター42は、キャリー信号CA3の次のパルスに同期して、カウント値を「0」にリセットすると共に、キャリー信号CA4を出力する。第4のカウンター42によって生成されるカウント値は、分単位の時刻を表す計時データT3として用いられる。
第5のカウンター43は、キャリー信号CA4に同期してカウント動作を行うことにより、時単位の時刻を表すカウント値を生成する。例えば、第5のカウンター43は、24進BCDカウンターで構成され、キャリー信号CA4のパルスに同期して、十進数の「0」〜「23」を表すBCDカウント値を順次生成する。
カウント値が十進数の「23」を表す値に等しくなると、第5のカウンター43は、キャリー信号CA4の次のパルスに同期して、カウント値を「0」にリセットすると共に、キャリー信号CA5を出力する。第5のカウンター43によって生成されるカウント値は、時単位の時刻を表す計時データT4として用いられる。
第6のカウンター44は、キャリー信号CA5に同期してカウント動作を行うことにより、日単位の時刻を表すカウント値を生成する。例えば、第6のカウンター44は、10進BCDカウンターで構成され、キャリー信号CA5のパルスに同期して、十進数の「1」〜「31」を表すBCDカウント値を順次生成する。
ただし、月によっては、月の最後の日を「28」又は「30」とする必要があり、うるう年の2月の場合には、月の最後の日を「29」とする必要がある。そこで、第6のカウンター44は、日単位の時刻を表すカウント値を、月単位の時刻を表すカウント値及び年単位の時刻を表すカウント値に基づいて設定されたカウント上限値と比較する。
カウント値がカウント上限値に等しくなると、第6のカウンター44は、キャリー信号CA5の次のパルスに同期して、カウント値を「1」にリセットすると共に、キャリー信号CA6を出力する。第6のカウンター44によって生成されるカウント値は、日単位の時刻を表す計時データT5として用いられる。
曜日データ生成部45は、キャリー信号CA5に同期して、曜日を表す計時データT6を生成する。例えば、曜日データ生成部45は、リング状に接続された7つのD型フリップフロップを含む7ビットシフトレジスターで構成される。7つのフリップフロップは、日曜〜土曜の7つの曜日に対応している。
初期状態設定時に、ホストインターフェース60は、ホストCPUから供給される7ビットの初期値データに従って、1つのフリップフロップのデータを「1」にセットすると共に、他のフリップフロップのデータを「0」にリセットする。その後、シフトレジスターは、キャリー信号CA5に同期して曜日データを一方向にシフトする。従って、シフトレジスターの7つのフリップフロップにおけるデータ「1」の位置によって、現在の曜日が表される。曜日データ生成部45によって生成される曜日データは、曜日を表す計時データT6として用いられる。
第7のカウンター46は、キャリー信号CA6に同期してカウント動作を行うことにより、月単位の時刻を表すカウント値を生成する。例えば、第7のカウンター46は、12進BCDカウンターで構成され、キャリー信号CA6のパルスに同期して、十進数の「1」〜「12」を表すBCDカウント値を順次生成する。
カウント値が十進数の「12」を表す値に等しくなると、第7のカウンター46は、キャリー信号CA6の次のパルスに同期して、カウント値を「1」にリセットすると共に、キャリー信号CA7を出力する。第7のカウンター46によって生成されるカウント値は、月単位の時刻を表す計時データT7として用いられる。
第8のカウンター47は、キャリー信号CA7に同期してカウント動作を行うことにより、年単位の時刻を表すカウント値を生成する。例えば、第8のカウンター47は、10進BCDカウンターで構成され、キャリー信号CA7のパルスに同期して、西暦年号の場合に、十進数の「2015」、「2016」、「2017」・・・の下2桁を表すBCDカウント値を順次生成する。第8のカウンター47によって生成されるカウント値は、年単位の時刻を表す計時データT8として用いられる。
再び図1を参照すると、下位計時回路30及び上位計時回路40によって生成される計時データT0〜T8は、バッファー82に供給される。バッファー82は、下位計時回路30及び上位計時回路40によって生成される計時データT0〜T8を格納する計時データ格納部に該当し、リードバッファー及びタイムスタンプ用のバッファーとして兼用される。例えば、バッファー82は、レジスターで構成され、アドレス00h〜08hを有している。
計時データT0〜T8が変化しないタイミングでバッファー82が計時データT0〜T8を格納するために、調停回路81が設けられている。調停回路81は、タイミング制御回路70によって生成されるトリガー信号TG3の立ち上がりエッジが分周クロック信号CL1の立ち上がりエッジに重ならないように、必要に応じてトリガー信号TG3を遅延させる。調停回路81は、例えば、組み合わせ回路又は順序回路を含む論理回路等で構成される。
バッファー82は、調停回路81から供給されるトリガー信号TG3に応答して計時データT0〜T8を格納する。なお、計時データT0〜T8の内で必要な計時データのみを生成して、バッファー82に格納するようにしても良い。また、ホストCPUは、調停回路81がトリガー信号TG3を出力しないように設定することができる。
履歴データ格納部83は、バッファー82に計時データが格納された履歴に関する1ビットの履歴データ(フラグ)EVF1を格納する。履歴データ格納部83は、例えば、レジスターの一部又はD型フリップフロップ等で構成される。バッファー82に計時データが格納されると、同時に、履歴データEVF1が「0」から「1」に変化する。履歴データEVF1のクリアーは、ホストCPUが、履歴データ格納部83に「0」を書き込むライトコマンド(書き込みコマンド)をホストインターフェース60に送信することによって行われる。
出力制御回路84は、例えば、複数のトランスミッションゲート等で構成される。出力制御回路84は、リードイネーブル信号E00〜E08の各々が活性化されると、バッファー82に格納されている計時データT0〜T8のそれぞれを、リードデータバスを介してホストインターフェース60に出力する。
電圧低下検出回路51は、外部から計時装置に供給される電源電圧が所定の値よりも低下したことを検出すると、1ビットの低電圧検出フラグVDETを「0」から「1」に変化させる。また、発振停止検出回路52は、発振回路10の発振動作が停止したことを検出すると、1ビットの発振停止フラグVLFを「0」から「1」に変化させる。
バックアップ電源53は、例えば、キャパシター又はバッテリー等で構成される。低電圧検出フラグVDETが「0」から「1」に変化すると、バックアップ電源53が、計時装置の各部に電源電圧を供給する。それにより、計時装置は、外部からの電源供給が停止されても、計時動作又はタイムスタンプ動作を継続することができる。
低電圧検出フラグVDET及び発振停止フラグVLFは、計時データの一部としてバッファー82に格納される。即ち、バッファー82においては、計時データT0〜T8の各々を格納するために8ビットの格納領域が確保されているが、計時データT0〜T8の中には8ビットよりも小さいビット数を有するデータが存在する。そこで、余った格納領域に低電圧検出フラグVDET及び発振停止フラグVLFを格納することができる。
入力端子P1には、イベントが検出されたときに活性化されるイベント検出信号EV1が外部から供給される。イベントとは、例えば、ストップウォッチのストップボタンが押されたり、電力メーターが操作されたり、電気錠が開錠されたりした場合が該当する。フィルター54は、例えば、ローパスフィルター及びシュミットトリガー回路等で構成され、イベント検出信号EV1を平滑化してからそのレベルを検出することにより、イベント検出信号EV1からチャタリングの影響を除去する。
フィルター54は、チャタリングの影響が除去されたイベント検出信号EV1'をタイミング制御回路70に出力する。タイミング制御回路70は、イベント検出信号EV1'が活性化されたときにトリガー信号TG1を生成する。それにより、イベント検出信号を発生するシステムにおいて、タイムスタンプ機能を簡単に実現することができる。
ホストインターフェース60は、外部のホストCPUとの間で通信を行うことにより、外部からコマンドを受信して計時装置の各部を制御すると共に、バッファー82から読み出された計時データを外部に送信する。ホストインターフェース60は、例えば、デジタル回路及びアナログ回路で構成される。ホストインターフェース60とホストCPUとの間でシリアル通信が行われる場合には、SPI規格又はI2C規格等のシリアルバスを用いることができる。
例えば、SPI規格の場合には、スレーブセレクト信号SSが供給される外部接続端子P2と、シリアルクロック信号SCLが供給される外部接続端子P3と、マスターアウト・スレーブイン信号MOSIが供給される外部接続端子P4と、マスターイン・スレーブアウト信号MISOを出力するための外部接続端子P5とが、計時装置に設けられる。
初期状態設定時に、ホストインターフェース60は、アドレスを指定したライトコマンドをカウント初期値又は初期値データと共にホストCPUから受信すると、受信したライトコマンドに従って、カウント初期値又は初期値データを下位計時回路30及び上位計時回路40に設定する。
図6は、図1に示す計時装置における単発書き込み動作を説明するための波形図である。ホストインターフェース60は、スレーブセレクト信号SSがハイレベルに活性化されると、シリアルクロック信号SCLに同期してマスターアウト・スレーブイン信号MOSIを受信する。その間、マスターイン・スレーブアウト信号MISOは、ハイ・インピーダンス状態(Hi−Z)となっている。
例えば、ホストインターフェース60は、マスターアウト・スレーブイン信号MOSIとして、4ビットのモード信号「000x」及び4ビットのアドレス信号A3〜A0を含むライトコマンドと、8ビットの入力データD7〜D0とを受信する。モード信号の第1ビット「0」は、書き込みモードを表している。ホストインターフェース60は、シリアルの入力データD7〜D0によって表されるカウント初期値等をシリアル/パラレル変換し、モード信号及びアドレス信号に従って下位計時回路30及び上位計時回路40に設定する。
一方、計時データ読み出し時に、ホストインターフェース60は、バッファー82を指定したリードコマンド(読み出しコマンド)をホストCPUから受信すると、受信したリードコマンドに従って、リードイネーブル信号E00〜E08の内の1つを活性化する。
図7は、図1に示す計時装置における単発読み出し動作を説明するための波形図である。ホストインターフェース60は、スレーブセレクト信号SSがハイレベルに活性化されると、シリアルクロック信号SCLに同期してマスターアウト・スレーブイン信号MOSIを受信する。その間、マスターイン・スレーブアウト信号MISOは、ハイ・インピーダンス状態(Hi−Z)となっている。
例えば、ホストインターフェース60は、マスターアウト・スレーブイン信号MOSIとして、4ビットのモード信号「100x」及び4ビットのアドレス信号A3〜A0を含むリードコマンドを受信する。モード信号の第1ビット「1」は、読み出しモードを表している。また、モード信号の第4ビットが「0」である場合は、バッファー82を表している。
ホストインターフェース60は、モード信号「1000」が確定すると、予め計時データをバッファー82に取り込むために、リードプリパルスRPを生成する。リードプリパルスRPは、図1に示すトリガー信号TG2として用いられる。さらに、ホストインターフェース60は、アドレス信号が確定すると、モード信号及びアドレス信号に対応するリードイネーブル信号を活性化する。例えば、モード信号が「1000」で、アドレス信号が「0000」である場合に、ホストインターフェース60は、バッファー82のアドレス00hに格納されているデータを読み出すためのリードイネーブル信号E00を活性化する。
それにより、図1に示す出力制御回路84は、バッファー82のアドレス00hに格納されている8ビットの計時データを、リードデータバスを介してホストインターフェース60に出力する。ホストインターフェース60は、バッファー82のアドレス00hから読み出された8ビットの計時データを送信バッファーにラッチし、シリアルクロック信号SCLに同期してパラレル/シリアル変換することにより、シリアルの出力データD7〜D0をマスターイン・スレーブアウト信号MISOとして送信する。
ホストインターフェース60は、モード信号が「1001」である場合には、リードプリパルスRPを生成しないが、アドレス信号が確定すると、モード信号及びアドレス信号に対応するリードイネーブル信号を活性化する。そこで、ホストCPUは、何らかのイベントを検出すると、イベントトリガーコマンドとして設定されたコマンドをホストインターフェース60に送信する。例えば、イベントトリガーコマンドとしては、計時装置において存在しないアドレス「1Fh」をモード信号「1001」及びアドレス信号「1111」によって指定したダミーのリードコマンドが用いられる。
再び図1を参照すると、ホストインターフェース60は、イベントトリガーコマンドとして設定されたコマンドを受信したときに、所定の信号を活性化する。例えば、ホストインターフェース60は、ダミーのリードコマンドに含まれているアドレス信号「1111」が確定すると、モード信号「1001」及びアドレス信号「1111」に対応するリードイネーブル信号E1Fを活性化してタイミング制御回路70に出力する。
タイミング制御回路70は、所定の信号(この例においては、リードイネーブル信号E1F)が活性化されたときにトリガー信号TG1を生成する。それにより、イベント検出信号を用いなくてもタイムスタンプ機能を実現して、イベント検出信号を発生しないシステムに対する互換性を高めることができる。
入力端子P1に供給されるイベント検出信号EV1とホストCPUからのイベントトリガーコマンドとを併用する場合には、イベント検出信号の入力端子が1つでも、2系統の異なるイベント検出情報を受け付けることが可能になる。それにより、ピン数が少ないモジュールが一般的であるタイミングデバイスにおいて、ピン数の削減やパッケージの小型化と併せてタイムスタンプ機能の充実を図ることができる。また、ホストCPUが複数の計時装置を同時に制御することも可能になる。
また、ホストインターフェース60は、低電圧検出フラグVDETが「1」になって、バックアップ電源53から供給される電源電圧で動作しているときに、複数の外部接続端子P2〜P5の内の1つに供給される第2のイベント検出信号EV2をタイミング制御回路70に出力する。タイミング制御回路70は、第2のイベント検出信号EV2が活性化されたときにトリガー信号TG1を生成する。
それにより、ホストCPU等が停止しているバックアップモードにおいて、複数の外部接続端子P2〜P5の内の1つを第2のイベント検出信号EV2の入力端子として使用することができる。なお、ホストインターフェース60は、イベント検出信号EV2からチャタリングの影響を除去しても良い。
さらに、ホストインターフェース60は、バッファー82の機能を設定する制御データURBをホストCPUから受信して制御データ格納部61に格納する。制御データ格納部61は、例えば、レジスターの一部又はD型フリップフロップ等で構成され、バッファー82の機能を設定する制御データURBを格納する。例えば、制御データURBは、バッファー82をリードバッファーとして使用する場合に「0」に設定され、バッファー82をタイムスタンプ用のバッファーとして使用する場合に「1」に設定される。
タイミング制御回路70は、少なくとも制御データURBに従って、イベントの検出に応答して生成されるトリガー信号TG1と、リードコマンドに応答して生成されるトリガー信号TG2との内の一方を選択し、選択されたトリガー信号TG1又はTG2に応答してバッファー82に計時データを格納させる。
図1に示す例において、タイミング制御回路70は、OR回路71及び76と、インバーター72と、AND回路74及び75とを含んでいる。OR回路71の第1の入力端子には、イベント検出信号EV1'が供給され、第2の入力端子には、イベント検出信号EV2が供給され、第3の入力端子には、リードイネーブル信号E1Fが供給される。OR回路71は、イベント検出信号EV1'、イベント検出信号EV2、又は、リードイネーブル信号E1Fがハイレベルに活性化されたときに、ハイレベルのトリガー信号TG1を生成する。
AND回路74の一方の入力端子には、OR回路71から出力されるトリガー信号TG1が供給され、AND回路74の他方の入力端子には、制御データ格納部61から出力される制御データURBが供給される。AND回路74は、制御データURBが「1」(ハイレベル)であるときに、トリガー信号TG1を出力する。
AND回路75の一方の入力端子には、インバーター72によって反転された制御データURBが供給され、AND回路75の他方の入力端子には、ホストインターフェース60から出力されるトリガー信号TG2(図7に示すリードプリパルスRP)が供給される。AND回路75は、制御データURBが「0」(ローレベル)であるときに、トリガー信号TG2を出力する。
OR回路76は、AND回路74又は75からハイレベルのトリガー信号TG1又はTG2が供給されると、トリガー信号TG1又はTG2をトリガー信号TG3として出力する。このように、タイミング制御回路70は、制御データURBが「0」に設定されているときにトリガー信号TG2を選択し、制御データURBが「1」に設定されているときにトリガー信号TG1を選択する。
その結果、制御データURBが「0」に設定されているときに、バッファー82は、トリガー信号TG2に応答して計時データを格納するリードバッファーとして使用される。一方、ホストCPUが停止しているバックアップモード等において、制御データURBが「1」に設定されているときに、バッファー82は、トリガー信号TG1に応答して計時データ(タイムスタンプデータ)を格納するタイムスタンプ用バッファーとして使用される。
なお、バッファー82は、最新のタイムスタンプデータを格納しても良い。あるいは、ホストCPUが、履歴データ格納部83に格納される履歴データEVF1に基づいて調停回路81を設定することにより、バッファー82が、第1回以降の所望の回のタイムスタンプデータを格納しても良い。
第1の実施形態によれば、バッファー82をリードバッファー及びタイムスタンプ用のバッファーとして兼用できるので、回路リソースを効率的に利用してタイムスタンプ機能を実現することが可能になる。従って、リードバッファー及びタイムスタンプ用のバッファーを設ける場合と比較して、計時装置を構成する半導体装置のチップサイズやコストを削減することができる。あるいは、リードバッファーを設けない場合と比較して、計時装置から計時データを読み出す際の手順を簡素化することができる。
<第2の実施形態>
図8は、本発明の第2の実施形態に係る計時装置の構成例を示す図である。図8に示すように、第2の実施形態においては、図1に示す第1の実施形態におけるタイミング制御回路70の替りにタイミング制御回路70aが用いられ、第1の実施形態に対して、調停回路91と、バッファー92と、履歴データ格納部93と、出力制御回路94とが追加されている。その他の点に関しては、第2の実施形態は、第1の実施形態と同様でも良い。
下位計時回路30及び上位計時回路40によって生成される計時データT0〜T8は、バッファー92にも供給される。バッファー92は、トリガー信号TG1に応答して計時データを格納する第2の計時データ格納部に該当し、タイムスタンプ専用のバッファーとして用いられる。例えば、バッファー92は、レジスターで構成され、アドレス10h〜18hを有している。
計時データT0〜T8が変化しないタイミングでバッファー92が計時データT0〜T8を格納するために、調停回路91が設けられている。調停回路91は、タイミング制御回路70aによって生成されるトリガー信号TG1の立ち上がりエッジが分周クロック信号CL1の立ち上がりエッジに重ならないように、必要に応じてトリガー信号TG1を遅延させる。また、調停回路91は、履歴データ格納部93に格納されている履歴データ(フラグ)EVF0が「1」になると、トリガー信号TG1の出力を停止する。調停回路91は、例えば、組み合わせ回路又は順序回路を含む論理回路等で構成される。
バッファー92は、調停回路91から供給されるトリガー信号TG1に応答して計時データ(タイムスタンプデ−タ)T0〜T8を格納する。なお、計時データT0〜T8の内で必要な計時データのみを生成して、バッファー92に格納するようにしても良い。また、低電圧検出フラグVDET及び発振停止フラグVLFは、計時データの一部としてバッファー92に格納される。
履歴データ格納部93は、バッファー92に計時データが格納された履歴に関する履歴データ(フラグ)EVF0を格納する。例えば、履歴データ格納部93は、レジスターの一部又はD型フリップフロップ等で構成される。バッファー92に計時データが格納されると、同時に、履歴データEVF0が「0」から「1」に変化する。履歴データEVF0のクリアーは、ホストCPUが、履歴データ格納部93に「0」を書き込むライトコマンドをホストインターフェース60に送信することによって行われる。
出力制御回路94は、例えば、複数のトランスミッションゲート等で構成される。出力制御回路94は、リードイネーブル信号E10〜E18の各々が活性化されると、バッファー92に格納されている計時データT0〜T8のそれぞれを、リードデータバスを介してホストインターフェース60に出力する。
ホストインターフェース60は、バッファー92から読み出された計時データを外部に送信する。計時データ読み出し時に、ホストインターフェース60は、バッファー92を指定したリードコマンドをホストCPUから受信すると、受信したリードコマンドに従って、リードイネーブル信号E10〜E18を順次活性化する。
図9は、図8に示す計時装置における連続読み出し動作を説明するための波形図である。ホストインターフェース60は、スレーブセレクト信号SSがハイレベルに活性化されると、シリアルクロック信号SCLに同期してマスターアウト・スレーブイン信号MOSIを受信する。その間、マスターイン・スレーブアウト信号MISOは、ハイ・インピーダンス状態(Hi−Z)となっている。
例えば、ホストインターフェース60は、マスターアウト・スレーブイン信号MOSIとして、4ビットのモード信号「100x」及び4ビットのアドレス信号A3〜A0を含むリードコマンドを受信する。モード信号の第1ビット「1」は、読み出しモードを表している。また、モード信号の第4ビットが「1」である場合は、バッファー92を表している。
ホストインターフェース60は、モード信号が「1001」である場合には、リードプリパルスRPを生成しないが、アドレス信号が確定すると、モード信号及びアドレス信号に対応するリードイネーブル信号を活性化する。その後、ホストインターフェース60は、アドレスを循環させて、バッファー92に格納されている一連のデータを読み出す。
ホストCPUは、バッファー92から計時データを読み出す際に、例えば、計時装置において存在しないアドレス「1Fh」をモード信号「1001」及びアドレス信号「1111」によって指定したダミーのリードコマンドをホストインターフェース60に送信する。
ホストインターフェース60は、アドレス信号「1111」が確定すると、リードイネーブル信号E1Fを活性化する。また、ホストインターフェース60は、アドレス「1Fh」に対応するダミーデータである8ビットのデータを送信バッファーにラッチし、シリアルクロック信号SCLに同期してパラレル/シリアル変換することにより、シリアルの出力データD7〜D0をマスターイン・スレーブアウト信号MISOとして送信する。
その後、ホストインターフェース60は、アドレスを循環させて、リードイネーブル信号E10、E11、・・・を順次活性化する。それにより、出力制御回路94は、バッファー92のアドレス10h、11h、・・・の各々に格納されている8ビットのデータを、リードデータバスを介してホストインターフェース60に順次出力する。
ホストインターフェース60は、バッファー92のアドレス10h、11h、・・・の各々から順次読み出される8ビットのデータを送信バッファーにラッチし、シリアルクロック信号SCLに同期してパラレル/シリアル変換することにより、シリアルの出力データD7〜D0をマスターイン・スレーブアウト信号MISOとして送信する。
再び図8を参照すると、ホストインターフェース60は、バッファー82の機能を設定する制御データURBをホストCPUから受信して、制御データ格納部61に格納する。例えば、制御データURBは、バッファー82をリードバッファーとして使用する場合に「0」に設定され、バッファー82をタイムスタンプ用のバッファーとして使用する場合に「1」に設定される。
タイミング制御回路70aは、制御データURB及び履歴データEVF0に従って、イベントの検出に応答して生成されるトリガー信号TG1と、リードコマンドに応答して生成されるトリガー信号TG2との内の一方を選択し、選択されたトリガー信号TG1又はTG2に応答してバッファー92又は82に計時データを格納させる。その際に、タイミング制御回路70aは、履歴データURBに従って、トリガー信号TG1に応答してバッファー82に計時データを格納させるか否かを制御する。
図8に示す例において、タイミング制御回路70aは、OR回路71及び76と、インバーター72と、AND回路73〜75とを含んでいる。OR回路71の第1の入力端子には、イベント検出信号EV1'が供給され、第2の入力端子には、イベント検出信号EV2が供給され、第3の入力端子には、リードイネーブル信号E1Fが供給される。OR回路71は、イベント検出信号EV1'、イベント検出信号EV2、又は、リードイネーブル信号E1Fがハイレベルに活性化されたときに、ハイレベルのトリガー信号TG1を生成する。
バッファー92は、トリガー信号TG1に応答して計時データを格納する。バッファー92に計時データが格納されると、履歴データ格納部93に格納されている履歴データEVF0が「0」から「1」に変化して、調停回路91が、バッファー92に対するオーバーライトを禁止する。それにより、バッファー92において、第1回のタイムスタンプデータが維持される。
AND回路73の一方の入力端子には、履歴データ格納部93から出力される履歴データEVF0が供給され、AND回路73の他方の入力端子には、制御データ格納部61から出力される制御データURBが供給される。AND回路73は、履歴データEVF0及び制御データURBが「1」(ハイレベル)であるときに、ハイレベルの出力信号を生成する。
AND回路74の一方の入力端子には、OR回路71から出力されるトリガー信号TG1が供給され、AND回路74の他方の入力端子には、AND回路73の出力信号が供給される。AND回路74は、AND回路73の出力信号がハイレベルであるときに、トリガー信号TG1を出力する。
AND回路75の一方の入力端子には、インバーター72によって反転された制御データURBが供給され、AND回路75の他方の入力端子には、ホストインターフェース60によって生成されるトリガー信号TG2(図7に示すリードプリパルスRP)が供給される。AND回路75は、制御データURBが「0」(ローレベル)であるときに、トリガー信号TG2を出力する。
OR回路76は、AND回路74又は75からハイレベルのトリガー信号TG1又はTG2が供給されると、トリガー信号TG1又はTG2をトリガー信号TG3として出力する。このように、タイミング制御回路70aは、制御データURBが「0」に設定されているときにトリガー信号TG2を選択し、制御データURBが「1」に設定されて履歴データEVF0が「1」になったときにトリガー信号TG1を選択する。
その結果、制御データURBが「0」に設定されているときに、バッファー82は、トリガー信号TG2に応答して計時データを格納するリードバッファーとして使用される。一方、ホストCPUが停止しているバックアップモード等において、制御データURBが「1」に設定されているときに、バッファー92にタイムスタンプデ−タが格納されて履歴データEVF0が「1」になると、バッファー82は、トリガー信号TG1に応答して計時データ(タイムスタンプデータ)を格納するタイムスタンプ用バッファーとして使用される。
なお、バッファー82は、最新のタイムスタンプデータを格納しても良い。あるいは、ホストCPUが、履歴データ格納部83に格納される履歴データEVF1に基づいて調停回路81を設定することにより、バッファー82が、第2回以降の所望の回のタイムスタンプデータを格納しても良い。
第2の実施形態によれば、計時装置が2つのバッファー92及び82を備える場合に、一方のバッファー92の履歴に従ってタイムスタンプデータの格納を制御するようにしたので、複数のイベント検出時のタイムスタンプデータを格納することができる。また、第2回以降のスタンプデータの上書き禁止と上書き許可とを自由に設定することができるので、タイムスタンプを使用するシステムの設計の自由度が増加する。
<電子機器>
次に、本発明のいずれかの実施形態に係る計時装置を用いた電子機器の実施形態について説明する。
図10は、本発明の一実施形態に係る電子機器の構成例を示すブロック図である。図10に示すように、この電子機器は、本発明のいずれかの実施形態に係る計時装置110と、制御部120と、操作部130と、通信部140と、表示部150と、音声出力部160とを含んでいる。なお、図10に示す構成要素の一部を省略又は変更しても良いし、あるいは、図10に示す構成要素に他の構成要素を付加しても良い。
制御部120は、ホストCPU(中央演算装置)121と、格納部122とを含んでいる。ホストCPU121は、格納部122の記録媒体に記録されているソフトウェア(計時プログラム等)に基づいて動作する。記録媒体としては、ハードディスク、フレキシブルディスク、MO、MT、各種のメモリー、CD−ROM、又は、DVD−ROM等を用いることができる。
ホストCPU121は、初期状態設定時に、ライトコマンド及びカウント初期値又は初期値データを計時装置110に送信することにより、計時装置110に初期状態を設定する。また、ホストCPU121は、リードコマンドを計時装置110に送信することにより、現在時刻やイベント検出時刻を計時装置110から読み出す。
制御部120は、計時装置110から送信される計時データに基づいて、現在時刻やイベント検出時刻を表す表示信号を生成したり、イベントが検出された場合に、メッセージを発生するための音声信号を生成する。また、制御部120は、例えば、電気錠が開錠された時刻を表すタイムスタンプデータを含むログファイルを出力したり、電気錠が開錠された時刻を表示部150に表示させる。
操作部130は、例えば、操作キーやボタンスイッチ等を含む入力装置であり、ユーザーによる操作に応じた操作信号をホストCPU121に出力する。ユーザーが操作部130を操作することにより、現在時刻、アラーム時刻、又は、タイマー時刻を設定することができる。通信部140は、例えば、アナログ回路及びデジタル回路で構成され、ホストCPU121と外部装置との間のデータ通信を行う。
表示部150は、例えば、LCD(液晶表示装置)等を含み、ホストCPU121から供給される表示信号に基づいて、現在時刻やイベント検出時刻を表示する。音声出力部160は、例えば、スピーカー等を含み、ホストCPU121から供給される音声信号に基づいてメッセージを発生する。
上記の電子機器としては、例えば、ストップウォッチや腕時計や置時計等の時計、タイマー、シーケンサー、電力メーター、電気錠、携帯電話機等の移動端末、デジタルスチルカメラ、デジタルムービー、テレビ、テレビ電話、防犯用テレビモニター、ヘッドマウント・ディスプレイ、パーソナルコンピューター、プリンター、ネットワーク機器、複合機、車載装置(ナビゲーション装置等)、電卓、電子辞書、電子ゲーム機器、ロボット、測定機器、及び、医療機器(例えば、電子体温計、血圧計、血糖計、心電図計測装置、超音波診断装置、及び、電子内視鏡)等が該当する。
本実施形態によれば、計時装置110の回路リソースを効率的に利用してタイムスタンプ機能を実現したり、あるいは、イベント検出信号を用いなくてもタイムスタンプ機能を実現することが可能な電子機器を提供することができる。
<移動体>
次に、本発明のいずれかの実施形態に係る計時装置を用いた移動体の実施形態について説明する。移動体としては、例えば、自動車、自走式ロボット、自走式搬送機器、列車、船舶、飛行機、又は、人工衛星等が該当する。
図11は、本発明の一実施形態に係る移動体の構成例を示すブロック図である。図11に示すように、この移動体は、本発明のいずれかの実施形態に係る計時装置110と、制御部120と、操作部130と、表示部150と、音声出力部160とを含み、さらに、電子制御式燃料噴射装置210、電子制御式ABS装置220、又は、電子制御式一定速度走行装置230等の各種の電子制御式装置を搭載している。なお、図11に示す構成要素の一部を省略又は変更しても良いし、あるいは、図11に示す構成要素に他の構成要素を付加しても良い。
例えば、計時装置110は、制御部120のホストCPU121からのリードコマンドに応じて、計時データをホストCPU121に送信する。制御部120は、計時装置110から送信される計時データに基づいて、現在時刻やイベント検出時刻を表す表示信号を生成したり、イベントが検出された場合に、メッセージを発生するための音声信号を生成する。それにより、表示部150が、表示信号に基づいて現在時刻やイベント検出時刻を表示し、音声出力部160が、音声信号に基づいてメッセージを発生する。
また、計時装置110は、図1又は図8に示す発振回路10又は分周回路20等によって生成されるクロック信号を、制御部120を介して、電子制御式燃料噴射装置210、電子制御式ABS装置220、又は、電子制御式一定速度走行装置230等に供給する。
例えば、電子制御式燃料噴射装置210は、計時装置110から供給されるクロック信号に同期して動作し、ガソリンエンジン等の予混合燃焼機関において、所定のタイミングで液体の燃料を吸入空気に霧状に噴射する。電子制御式ABS(アンチロック・ブレーキ・システム)装置220は、計時装置110から供給されるクロック信号に同期して動作し、ブレーキをかけるように操作が行われた際に、ブレーキを徐々に強力に駆動して、移動体が滑り始めたらブレーキを一旦緩めてから再び駆動することを繰り返す。電子制御式一定速度走行装置230は、計時装置110から供給されるクロック信号に同期して動作し、移動体の速度を監視しながら、移動体の速度が一定となるようにアクセル又はブレーキ等を制御する。
本実施形態によれば、計時装置110の回路リソースを効率的に利用してタイムスタンプ機能を実現したり、あるいは、イベント検出信号を用いなくてもタイムスタンプ機能を実現することが可能な移動体を提供することができる。本発明は、以上説明した実施形態に限定されるものではなく、当該技術分野において通常の知識を有する者によって、本発明の技術的思想内で多くの変形が可能である。