シチズン 年差クオーツ技術を探る~クリストロン・メガ からCaliber 0100への道 【特別編】初代IC内蔵温度補償1930を追う(温度測定編)

 By : CC Fan

「どう書くか」でドツボに嵌ってしまい、前回からしばらくお休みしていたこの特集。
シチズン樋口氏に追加で質問して、理解はできたのですがどうやって平素に書くかに難航、とにかくまとめて書こう、という事で2022年末から2023年始に本腰を入れてまとめることにしました。




「IC内蔵温度補償」方式を初めて搭載したシチズン エクシードとその説明

「歴史」を見てきたように、年差を実現するための方法として、様々な方式が提唱されてきましたが、「決定的」となった方式が歴史の所でも見てきたシチズンエクシードに搭載されたCal.1930で採用された「32KHz IC内蔵温度補償」方式で、32KHz水晶の低消費電力の良さは活かしたまま、シンプルに年差を実現する方法でした。
シチズンがこの方式を発表して以降、多少の実装の違いはあれど「年差クオーツ」の基本方式はこの方式に集約されています。

この方式のメリットは後知恵で見ると、
  1. 温度センサー素子までIC内に作りこみ外付けパーツを最少にした
  2. デジタル方式で後から補正値を設定するようにして生産時の再現性を高めた
  3. 測定を間欠測定にし、温度補償部の消費電力を最小に抑えた
という点にまとめられると思います。

一つずつ概要を見ていきましょう、まず1です。
Cal.1930より前から水晶の温度特性を相殺する素子を付加することで精度が高められることはわかっていました、そのためバイメタルで容量を変化させるサーモバリコンや、温度によって容量が変化する誘電体を使ったサーモコンデンサを水晶振動子の負荷容量に接続し、負荷容量を僅かに変化させて補正する方法が使われていました。
しかし、サーモバリコンは機械的に稼働する機構があるため腕サイズへの小型化が難しく、衝撃にも弱いという欠点があり、主に置時計で使われました。
サーモコンデンサなら小型化はできますが、容量の変化が誘電体の物性に依存するため自由な特性を作るのが難しく、ピッタリ補正するのが難しく補正が足りなかったり過剰だったりしてしまう問題があります。
この他、温度で抵抗値が変化するサーミスタを使った方法や、二つの水晶振動子を使った方法(現エプソンの独立発振ビート方式、現セイコーインスツルの並列接続自己補償水晶方式)などもありましたが、水晶振動子と制御ICの他、追加の部品が必要になるという欠点は共通しています。
それに対し、IC内蔵温度補償ではIC内にすべての要素を収めることで温度補償のない月差クオーツとほぼ同等の複雑さで年差を実現することが出来ます。
Cal.1930では後述するように「補正値」入力があるため完全に月差と同じとはいきませんが、これも技術の進歩でよりシンプルになっていったのは歴史でみたとおりです。

次に2です。
サーモバリコンやサーモコンデンサは補正の効き具合はバリコンの調整やコンデンサ自体の「出来」で決まるため後から補正することが出来ません。
調整可能にすることはできますが、調整箇所を増やすとその分ズレが起きやすくなるため諸刃の剣です。
二つの水晶振動子を使った方法も都合よく補償が効くような「双子水晶」を選ぶ必要があり、製造難易度の増加と組み立て後に調整することは難しくなっています。
これに対し、IC内蔵温度補償では、通常の月差品同等として組み立て、最後に補正値入力から補正値を1と0で表現されたデジタル値で入力することで補正を行う為、組み立て後に設定が可能です。
また、補正値が0と1で示されるデジタル値で決まるため、再現性が高いという利点もあります、これは逆にアナログ的に設定するネジ(バリコン)の調整や機械的な緩急針での調整をイメージすればわかりやすいかもしれません、「目視した角度が一定」であっても機構の遊び、微妙な力の入れ具合で変動してしまうでしょう。

3はデジタル化の副次的なメリットでしょう。
デジタル的に温度を測定し、IC内に作りこむため、後述するようにリングオシレータ(遅延発振器)を温度センサーとして用いました。
この発振器を常に動かしていると電力を消耗するため、間欠的に動作させ、次の動作までは前回測定した温度を基に補正を動かすという方法になります。
測定値はデジタル値で保存されているため、次の更新まで劣化なく保持することが出来ます。
アナログ的な方法でも保持すること自体(サンプル&ホールド回路)はできますが、デジタルより難しくなります。

では具体的にどうやっていたのか見ていきましょう。
まずは「温度計」を作らなくてはいけません。
ICの内部に作れる素子は個別部品ほど自由ではないため、なるべく特別な素子を使わずなおかつ温度に対して反応するものが必要になります。
Cal.1930のICではIC内に作りこみやすいリングオシレータ(遅延発振器)を使っています。



リンクオシレータは上記のように全体として負のゲインを持つ遅延要素(図ではNOTゲートと抵抗とコンデンサによる遅延回路3個)を接続した素子です、論理的には単独のNOTゲートと同じで、入力と反転した出力が直結しているこの回路は論理的には矛盾しているように見えます。
しかし実際にはNOTゲートに入力が加わってからNOTゲートの先の遅延回路の出力が変化するまでに有限の遅延時間があり、入力が変化する→(遅延時間の合計)→出力の変化→入力に戻る…を繰り返すことで遅延時間に反比例する周波数で発振する発振回路として動作し、「遅延」による発振なので遅延発振器と呼ばれます。
ゲートの1箇所をNANDゲートにすることで発振のON/OFFを切り替えることが出来るゲーテッドリングオシレータ―にすることが出来ます。

これを温度計に使うにはどうすればいいのでしょうか?
そのためには遅延時間の特性を知る必要があります。
NOTゲートに限らず、CMOS回路(もっと言えば半導体回路)の遅延時間を含む特性はPVTと呼ばれるパラメータが支配的とされています。
Pはプロセス(Process)でCMOS IC自体の設計値に加え、製造時のバラつきを含めたパラメータです、バラつきを小さくするための特別な方法はありますが、コストが高くなるためなるべく汎用のプロセスで作りたいと思うとある程度のバラつきは許容する必要があります。
Vは電圧(Voltage)で素子の駆動電圧で、Tは接合温度(Temperature)で素子の温度です。
上記からわかるように、遅延時間は温度によっても変化するため、この素子は温度計として使うことが出来ます、しかしそのままでは残りのPとVの影響も残るため、純粋なTだけの温度計として使うためにはPとVの影響を取り除く必要があります。

NOTゲートの遅延時間の変化の例を実際の素子で見てみましょう


Texas Instruments社 標準ロジックNOTゲート74HC04のデータシートより

伝搬遅延時間TPは「電源電圧(VCC)が高くなると減る(動作が速くなる)」「温度が上がると増える(動作が遅くなる)」という事が読み取れます。
また、温度に対するTPの変化は比較的直線的、という事も分かります。
実際の回路ではこれに加え、抵抗とコンデンサによる遅延回路の温度特性も付加された特性となります。

Vの対処方法は比較的簡単で、リングオシレータ―に供給する電圧を一定にする電圧レギュレーター回路を外側に設け、リングオシレータ全体を一定電圧で動かせばVは変化しないと見ませます。

Pに対処する方法はもう少し複雑です、P自体のバラつきを減らす方法やウェハーレベルで調整する方法もあるにはありますが、コストやチップ面積の点で不利になります。
そこで、Cal.1930の設けられた二つの補正入力AとBの出番がやってきます。

端子Aに入力される初期値Aを「絶対値補正データ」、端子Bに入力される初期値Bを「感度補正データ」と呼びます。


樋口氏による温度測定回路の図

カウンタ列にはそれぞれの初期値が外部入力からセットされています。
タイミング生成回路から1分に1回スタートパルスが送られてきて、RS-FFの出力がHになると測定がスタートされます。
測定時はリングオシレータの出力がカウンタ列Bに加えられ、初期値BからカウンタBがカウントアップするまでの時間Tだけ動作します。
カウントアップするとRS-FFをリセットし、出力がLになり測定が終了します。
カウンタ列Aには水晶発振器からの入力が加わり、初期値Aから同じ時間Tだけ水晶発振器のカウントを数えます。
このカウンタAの結果が温度計としての温度測定結果になります。

ここで、水晶発振器の発振周波数の変動はリングオシレータの発振周波数の変動に対して無視できるものとします(変化が小さいのと1回前の温度補正によって補正済みと見做せる)。

実際のビット数で考えると複雑になるため、キリのいい値(樋口氏による例示)をそのまま使用してみていきます。

まず、標準温度発振器(設計値)のスペックを定めます
発振周波数 10KHz (at 25℃)
標準カウント数 1000カウント→ 25℃で1000カウントに必要な時間:100ms
感度 2ms/℃ (1000カウントにしたとき1℃あたりの変化)

温度 25℃ 35℃
1000カウントに要する時間T 100ms 120ms
 
これに対し、実際に製造されたICの特性が以下であったとします
発振周波数 11KHz
感度 2.5ms/℃

感度補正
まずは感度2.5ms/℃を標準値の2ms/℃に補正するところから始めます。
同じ1000カウントでカウントすると

温度 25℃ 35℃
1000カウントに要する時間T 90.9ms 115.9ms

で、10℃変化における差が25msになります、これを20msにするには数える量を変えれば良いので、20/25*1000=800となり、カウント数を800にすれば二つの温度の差が20msになり、感度が等しくなります。

温度 25℃ 35℃
800カウントに要する時間T 72.7ms 92.72ms

差が20msになり、感度が2ms/℃で標準温度発振器と同じになったことが分かります。
しかし、25℃の時の時間Tの絶対値は異なっているため、次の絶対値補正が必要になります。

絶対値補正
感度(傾き)が等しくなったので、次は絶対値(原点または切片)が等しくなるようにします。
同じ25℃の時に32KHz水晶発振器の出力(周期30.5μs)を時間T分カウントすると
標準温度発振器 100ms→100ms/30.5μs = 3276 カウント
実際のIC 72.7ms→72.7ms/30.5 = 2382 カウント

この差である3276-2382=892を足せば、絶対値としても標準発振器と等しくなります。
実際には初期値Aとして与える数値を変化させることで足したのと同じことを行います。

二つのパラメータによってPによる変化分(製造バラつき)をキャンセルして温度のみに反応し、同じ絶対値と感度を持つ温度計を作ることが出来ました。

前述したグラフで見たように電源電圧一定で温度-遅延値の変化はほぼ一次関数の直線と見做すことが出来、その逆数の発振周波数の逆数のカウント数もほぼ一次関数と見做すことが出来るでしょう。
これによって「温度にほぼ比例したカウント」が手に入りました、これは測定が完了したら補正用のカウンタに転送され水晶振動子の温度特性を補正するために使われます。
本当は今回で補正までやるつもりでしたが、前半が想像以上に長くなってしまったのでいったん切ります。



【お問い合わせ】
シチズンお客様時計相談室
フリーダイヤル 0120-78-4807
(受付時間 9:30〜17:30 祝日除く月〜金)