about clock

時計について

片山 泰男(Yasuo Katayama)

戻る∧


≪=BACK TOP∧ NEXT=≫

日常生活にはどの程度の精度の時計があればよいのだろうか。学生の頃にディジタル時計のICができて、 ディジタル時計を作った。IC時計の自作が楽しい時代だった。大きな赤色発光ダイオードの 7 セグメント の数字の表示の前面を赤アクリル板で覆い数字以外が見えないようにして既成のアルミ製の箱にいれた。 この時計の元クロックは、電源周波数であった。関西地方では60 Hz、関東では 50 Hz これが電力会社によって 正確に制御されていることに頼る時計である。この時計は、停電でストップするだけでなく時刻も継続しない。 しかし、静かで夜中に目が冷めても時刻の表示がすぐに読めてよいと長く離れた母に好評であった。

その後、高級な時計はクオーツになり、水晶を原発振にする時計が登場した。水晶発振は、5 桁程度の精度が容易 に得られる。多くの時計が使った 32.768 kHz の発信は、15 ビットのカウンタによって分周するだけで 1秒になる。 より高い周波数を使うこともできる。数MHzから数10MHzまでの水晶発振回路は易しい。C-MOSの論理ゲート NOT (だけ でなく否定を含む論理全て)は、その入出力に数MΩの抵抗と並列に数MHzの周波数の水晶の2極をはさみ、それぞれに 数十pFのコンデンサをアースとの間に置くだけで発振できる。 C-MOS 論理ゲート(TTLレベルでないもの)を高入力 インピーダンスのアナログの反転増幅器として使うのである。抵抗はバイアス電流を供給して線形部分での動作を 確実にする。水晶はその周波数でインピーダンスの低いLC直列共振回路となってその周波数だけが位相回転して フィードバックされるようだ。

全ての論理回路やCPUは、一定の周期のクロックを使って動作する仕組みをとる。 それは、内部状態全てが同期して変化することよりも複雑なことは扱いたくないためである。大規模設計に主流の Verilog などの HDL による回路設計は、"クロック同期設計" が前提であり、クロックはデータとは別に管理され、 スキューを減らすため "クロックツリー" を自動生成をする。そして全ての D-flipflop は、チップのテスト時に "スキャン" という直列のシフトレジスタとして結合して状態を設定し、通常の結合に戻し、必要なクロック数だけ動作させ、 再度直列にして読み出して期待状態である確認を行うのである。このように クロック同期設計は、設計の容易化、単純化という利点をもたらす。しかし、これにはこれに伴う問題がある。 現実の回路には単純な回路と複雑な回路が共存するから個々の論理動作はクロックより早く動作を終えるように、 クロックは最も遅延の大きな回路に合わせるから、大半の回路で動作に必要な時間より大幅に長く、ほとんどの回路は 単に次のクロックを待つだけという結果になる。クロックは、少なくとも最も高速な信号の2倍の周波数である必要があり、 これによる無駄な電力と、クロックによる同期的な激しい変化による不要輻射もあるはずである。


≪=BACK TOP∧ NEXT=≫

それは、例えば、余りに複雑な命令をいれたCPUが、その複雑な命令だけではクロックが足りずにクロックを伸ばすと 他のほとんどの単純な命令では、同じクロックが無駄に長くなることがある。それを命令セットのバランスの 問題と理解するかもしれない。複雑な命令は分割すればよいし、処理はパイプライン化して、命令毎に必要なサイクル を違えればよいかもしれない。そうすることは、動作を複雑にして問題を混乱させることである。しかし、ここにある 状況は、プロセサによる直列処理ではまだ時分割されていて問題ではなく、論理設計一般ではより激しく有害な問題である。

プロセサにおける命令セットの問題は、命令セットの複雑さの程度をどう設計するかという問題であり、個別の命令の実行において、 メモリサイクルは同じとして演算のナノサイクルを違えることもできる。ところが、論理設計のクロック同期設計は、モジュール毎 のクロックの違いの導入さえ一般には設計を難しくさせ、しかも、そのモジュール内部には全体系と同じ問題が解決されずに潜んでいる。 つまりは、ある程度の解決は、じつは何も解決していないのである。

また、モジュール毎に別のクロックを使う場合も、単一のクロックから分周してそれらを作らないといけないと考えられた。 というのは、複数の互いに同期しないクロックを使うとそれらの位相、スキューの任意さを完全に考慮する設計が必要で、 ふたつの分周クロックの全ての関係を検証するよい方法は、それらのふたつの異なるクロックを分周で作る前の原クロック による検証をすることであろう。それゆえ、それの検証はクロック同期設計から一歩も出ていないということである。

それ以外にも考えられる、2相クロック、クロックの逆エッジの使用、低消費電力化のためのモジュールを休止させる ゲーテドクロックも、クロック同期設計に相反する要求であり、例外的な扱いが要求される。そして、最終的にクロックを全く 使わない完全非同期の論理回路は、しばらく前から多くの技術者のときに頭をよぎる夢想、実現できない理想としてあった。 恐らくは、完全な非同期設計は、昔流のスケマティックという論理記号の結合による設計が必要と思われ、設計が非常に難しく、 それを検証する道具がないと考えられた。しかし、セルフクロック、クロックレス設計で消費電力が1/3になった ARM996HS 32bit CPU IP が2006年に出ていることを最近知った。このようなクロックのない非同期設計も可能なのであるという証拠である。


≪=BACK TOP∧ NEXT=≫

論理否定 NOT は、入力0で1、1で0を出力する。論理積 AND は、両方が1のときだけ1。論理和 OR は、A, Bの いずれかが1なら1。組合せ論理は、AND と OR と NOT という3種類の論理だけで作れ、論理の複雑さの最小かは 別として、全ての入力の否定を用意し、全入力とそれらの否定のいずれかを選んでそれらを AND で組合せ、 ORで結合する3段階の論理回路でできる。また、全ての組合せ論理回路は AND して NOT する NAND 1種類の 素子で構成できる。(NOR だけでもできる。) OR は NOT して AND して NOT すればよい A+B= ~(~A~B)。 ANDはNOTしORしてNOTすればよい AB= ~(~A+~B)。負論理ではANDはOR、ORはANDである(ド・モルガンの法則)。 排他的論理和 XOR は、2入力が異なるとき1である (A XOR B = A~B + ~AB)。

これらによって、様々な論理回路を組むことができる。例えば、マルチプレクサは、複数入力のどれかひとつが 1のとき、その番号を出力する。デマルチプレクサは、その逆であり、信号を選択するセレクタともいう。 両者をエンコーダ、デコーダともいう。2進表現の数に1を加算する組合せ論理、 Qi= Ai XOR Ci, Ci+1= Ai Ci ができ、2進表現の数を加算する論理回路(Full Adder)ができる Qi= Ai XOR Bi XOR Ci, Ci+1= Ai Bi Ci。 負数を扱う数の表現によって引き算ができ、2の補数表現の負は、ビット毎に反転して1を加えた。

複数入力の全ての入力状態それぞれに出力値の0,1を示す表を真理値表という。N入力の全ての入力状態は 2^N あり、 全ての入力状態に対して0,1を与えることのできる論理の種類、N入力(1出力)の任意の論理回路は、2^N^N の種類ある。 組合せ論理には時間の概念がなく、実際には遅延が存在するが、入力が変化すれば即時に出力が変化すると考える。 このことは出力がそのときの入力だけで決まり、内部状態をもたないことでもある。内部状態をもつ論理は、 組合せ論理と内部状態を保持するレジスタで作る。

内部状態は、入出力の結合から生じる。NOT の入出力をつなぎ、0なら1に1なら0にする自己否定は、現実に存在する 遅延が出力を振動させ発振を起こす。NOTのNOTであるバッファの出入力をつなぐ自己肯定は0でも1でも取り得る状態 保持で、これを制御する方法がない。

2つの2入力NANDを互い違いに入力に繋いだ SR-flip flop は、別々の信号線でセットしたり、リセットしたりできる。 ~S 又は ~R が 0 になると Q をセット又はリセットする。両方が 1 のとき状態を保持する。(両方が 0 のときは Q, ~Q ともに1。) Latch では、D は、~R へつなぎ、~D を ~S へつなぐ。ck は3入力NANDの両方に入れる。ck が 1 の期間は、D が Q にそのまま出て、Q は ck が 0 に変化するときの D を保持する。

D-flipflop は、さらに便利で、Qは、ck が 1 に変化する(アクティブエッジという)ときにだけ D を取込み、 そのとき以外は前の値を保持する。ck の時刻の入力値を出力値に移す機能である。これを直列に並べたものを シフトレジスタという。T-flipflop は ck の1への変化によって出力が反転する。JK-flip flop は、ck 付きで J, K 単独でセットリセットし、ともに1で出力は反転する。それらは存在して、最終的には D-flip flop だけになった。

なお、入力 D にはアクティブエッジから (最小)セットアップ時間、(最小)ホールド時間の規定があり、出力にはそれからの(最大)遅延がある。 電源電圧は、TTLでは5V+-10% で動作し、C-MOS では数V〜10数Vで動作。TTLでは入出力に電流が流れた。C-MOS は入力は高インピーダンスである。 TTLでは出力Lowの吸い込み電流は大きく流し出し電流は小さい。閾値は 1 V程度であった。C-MOS でもTTLとのインタフェースを考えられて Low の 吸い込みは大きい。閾値は電源電圧の1/2のものとTTLレベルのものがある。出力にはいくつの入力個数に耐えられるかによってファンアウト 数、入力にファンイン数があり、シリーズと型番によってそれらは異なり、データシートでの確認が必要である。


≪=BACK TOP∧ NEXT=≫

複数入力と単一の周期的クロックで動作するレジスタによって、内部状態をもつ任意の論理回路は、入力とレジスタ出力 とから組合せ論理を通してレジスタ入力にいれる形に設計できる。

クロックをカウントして2進数にする回路の1桁は、その桁より下の桁が全て1なら自らを反転する論理である。これを下の 桁の出力をクロックにした反転回路にすることができるが、これをリップルカウンタといって同期回路ではない。32kHzを 1秒毎にするのは、この分周回路を単に 15 段分直列するだけである。

私の家の風呂場の湯沸し機リモコンは、今年15年ぶりに入換え、それに伴って、ADPCM程度の特徴的な圧縮音声で、"自動" ボタンを押したとき、"お湯張りをします" と告げる。お湯が一杯になると、"お風呂がわきました"といい、追い炊きを押 したとき "追い炊きをします"というだけで完了を伝えない。そこには表示と音声の使い分けがあって、音声は遠方にいても 人間に知らせる必要のある言葉だけ少数決めている。これが知能をもった機械のようにみせる音声合成ではないのが残念である。 Speak and Spell という玩具が出た1970年代に私は音声合成を知った。このような玩具 IC ですら数百語を喋り、その綴入力 の正誤判定をした。このような音韻による音声合成技術は、機械の声はやはり異様さが先に立つため根付かなかったのだろうか。

風呂は設定温度だけでなく時計表示もするようになった。そのため、風呂場の防水の再生したクオーツ時計は、音の気に ならない脱衣所に移した。最初はとても高くて手が出なかったクオーツは、防水した置時計が面白いと思って私が買った ときはもうずいぶん安かったものである。外部容器のヒビが原因で止まったりもしたので、しばらく10年ほど、そのまま 放置していたのを久しぶりに分解した。内部は単3乾電池1個にユニット化された箱のなかには電子回路は、1秒毎に 電磁石を動かす信号を作るだけであり、1秒毎の回転は、時計の秒針、分針、時針の回転にするプラスティックの歯車系 がある。この電磁石の鉄心がさびてごみを出し、掃除をすれば回復した。しかし、1秒毎の機械的な回転がチックタック 音を発し、密閉し静かな風呂場に向かない。脱衣所でも音が気になって止めたくなったが、数日たって忘れたころに勝手 に止まっていた。完全でない修理は修理ではない。リビングの掛け時計もクオーツなのに振子振動するのも振子を止めて 音がしないようにできる。静まったとき周期的な音は気になるからである。それでも問題無く動作するように作られている。

水晶時計の精度は、仮に 5 桁とすれば、1日に1秒程度の誤差は 1年でも、6分程度であり十分と思うが、今は、電波時計 があり、時計信号が放送されて水晶時計の調整をして、いつまでも1秒以内の精度ができる。日常の生活には、腕時計は ぴったり時報に合わないと気に入らないところがあるが1秒以内の精度は時計合わせ自体が難しい。(電波時計は時刻合わせ 自体を自動化しているのだ。) とくに置時計にそれほどの精度は不要である。それよりも重要なことは音であり音は全く しないほうがよい。表示は夜中に見て分かるように発光するほうがよいが、大抵、色が濃すぎたりしてデザインに自由度 がなかった。とくに発光ダイオード(LED)は、当初、赤色しかなく、その後、緑色が加わった。それらは色が満足できない だけでなく、輝度も不足だった。現在、青色発光ダイオードとその蛍光による白色ダイオードは、白熱灯の効率と蛍光灯 の効率さえ超えたようだが、いまも電力線に繋ぐ必要があるかもしれない。それに比べると大人しい透明な液晶は、水晶 イメージに合う。夜中に時計を見るだけのために枕元の蛍光灯のスイッチにタッチするのは楽なことである。それよりも、 時間に縛られた生活は貧しいという認識は、身の回りに存在を主張しない時計を好ませる。時計は、つらい現実の生活の 規律を意味して、それは必要だが目立ってほしくない。


≪=BACK TOP∧ NEXT=≫

私は腕時計にも高価なものを求めず、買い替えも控えめなほうである。UAの世界の2箇所の時刻を表示するアナログ時計、 それは、腕時計で2つの小さな文字盤を左右に置いている。ガラス面にホログラフィーでソ連の国旗の五芒星(五角形の星 に鎌と槌の重なったもの)が浮き上がる、1-12 の文字が "ペレストロイカ" になった時計を記念に買ったものなど数個しか 保存していない。置時計は、透明な表示板の背景が透けて見える液晶表示の時計が安くなったときほしくなった。ネマチック 液晶が緑灰色の偏光板で挟まれていて透けた背景のなかに文字が黒くでる。それにしても、時計の表示は、ほとんどが視認 速度のためのもので、時刻を知るだけには冗長である。数字1桁を表すには、4つの LEDがあればよい。それを 4桁又は6桁表示 するのは、時分割表示すればよい。それを7セグメントにしたり、ドット表示で流れるような表示をしたりするのは、複雑な 機能を美しさとして楽しんでいるだけである。さらにそれだけでは単調だから、腕時計は持ち歩く道具箱として付加機能を付け、 音楽が聞けたり、通信できたり、放送が見られたり、GPS になるだろう。白色 LED での照明機能はすぐにほしく、ストップ ウオッチはほとんど使わない。時計の基本機能は、ひとが社会に位相を同期するための時刻を確認する道具であり、それは、 絶対的な時間概念の象徴であり、その反対の概念、ダリの絵のように曲がって融けて流れ落ちる時計が正しく反社会的な 現実の物理かもしれない。

我々が相対論的な時計の遅れを実生活で知るには、どの程度の精度があればよいか、このためには電波時計でなく独立した 原子時計の精度が必要である。それは、高いところに来て時間経過が速いとか、ジェット機での時計の経過とかを知るには 腕時計がよい。そのような時計はまずは、それだけの目的で買うだろう。腕時計は見るためのもので、見たとき満足するた めのものという考えがあるほどに、実用品から逸脱し、不必要な精度、デザイン、それに伴う高価格という性格をもっている。

現在の標準時計の精度は、10^-15 程度、小型の原子時計は、10^-11 程度のようである。水晶振動子は、電気機械系のピエゾ 効果による伸縮の機械振動の高い共鳴性を利用した電気的共鳴であるから、まだ物体が現実に振動している。原子のエネルギ ー準位を利用した原子時計はそれよりも安定と容易に想像できるが、時間経過自体は、時空の計量 g_44 (又は g_00) という 真空の特性だから、物体や物質に依らない時計が基本にあるはずである。そのような時計はまだ使われていないように思う。 それはきっとメトリック時計というものだろう。

時計は、時空の計量の g_44 又は重力ポテンシャルを測定している。時計の遅れが重力ポテンシャルに1次近似で比例するなら、 1/R - 1/(R+h) = h/(R(R+h)) 〜 h/R^2 又は、1/x の微分が 1/x^2 であるから、高さ変化による時間経過の変化は R^2 に 反比例する。地球の半径を 6500km とすると、65m の塔で、時計の時間経過は、10^-10 だけ変化する。小型の原子時計の精度 を 10^-11 とすると、数10メートル程度の上下に対応する精度である。腕時計の高度計は、気圧計である必要がなく、重力計 でさえある必要がないのかもしれない。速度も、特殊相対論の時計の遅れからも知ることができる。地球の軌道速度毎秒 30 km/s は、光速に比べて 10^-4 であり、時計の遅れは 10^-8 である。10^-11 程度の精度は、1 km/s に対応し、宇宙飛行士 以外は関係しない速度である。


≪=BACK TOP∧ NEXT=≫

時計の原発振は高い周波数の方が一般に時間分解能が高いだけでなく、高精度なのはなぜだろう。標準時計となる原子時計 が非常に高い周波数を使う。セシウム原子時計の 9 GHzとかは、論理回路へのインタフェースの限界を追求しているように みえる。分周は易しく倍周は難しいから、原発振に高い周波数を利用するほうが、色々な技術、時間の数字線を桁において 時間多重して配線数を減らすなどの利点はわかるが、それとは違うようである。また、時間分解能は、時刻を特定する分解 であり、これも必要なことは理解できる。例えば1秒の振子の振動ではそれ以内の分解は、振動回数ではなく振子の位置( 位相)の特定が必要になり、振動のカウント(計数) より難しい。しかし、時計の精度は、周波数の相対的精度であるから、 これが高い周波数が高精度の理由を説明しない。

周波数の逆数である周期の期間は、カウンタが進まない時間である。クロックの一定方向への変化、例えば論理信号の0から 1への立上りによって、カウンタは状態変化する。原発振の周期の時間 32kHz では約 30 μsec の間、全ての論理回路の状態 は停止し、カウンタがその値を示す。その間、アナログの共鳴特性によって決められた振動の安定性に依存する。この周期が 短いほうがその間の雑音の影響を受けないためだろうか。ディジタル回路に結果が移されることで共振回路の端数の状態が 毎回初期化されるのだろうか。時計は、時間における何かの変化の計測であり、それはもちろん量子現象であるから、薬罐 が湧かないようにできるだけ頻繁に観測を繰り返すことがその意味だろうか、と想像したりする。高い周波数は人間界の通常 の雑音からできるだけ離れるという意味しかないという可能性もある。本当のことを私は何も知らない。 (Dec.15 2008)