単位遅延はどのように作成したらよいのであろうか。 その基本は,入力に入った信号を少し遅らせて出力に出す回路である。 これにはキャパシタ5.1の電圧維持機能を利用すればよい。 あるタイミングの入力の値をキャパシタに蓄え, それを次のタイミングで取り出せばよいのである。
具体的な遅延回路を図 5.4に示す。
図に見られるように,この回路には二つのスイッチがついている。
各スイッチの開閉を制御する信号を
,
で示した。
各スイッチは,これらの信号が高い電圧のときにONとなり,低いときにOFFとなる。
まず,左のスイッチをONにし,入力の電位でキャパシタを充電する。
続いて左のスイッチをOFFにするが,キャパシタの電圧は,しばらくの間,
入力電位を維持する。
続いて右のスイッチをONにすると,信号は出力側に伝達される。
そこで,右のスイッチをOFFにする。
その信号のレベルは,しばらくの間,右のキャパシタによって維持される。
また,この出力は論理回路を経由して直ちに左側の入力に反映される。
インバータ(inverter)(NOTのこと)が二つ入っているが, これは,後段のキャパシタや論理回路を駆動する際, 前段のキャパシタの電位が下がらないようにするためのものである。 例えば,左のインバータがないと,右のスイッチをONにした際, 電圧は二つのキャパシタで分配されてしまう。 仮に両キャパシタ容量が同じであると,電位は半分になってしまう。
一見,スイッチは一つで済みそうであるが,一つのスイッチだと, それをONにした際,出力が直ちに入力に反映してくるため, 入力と出力の分離ができなくなる。 例えば,その値が前の値と異なる場合などには, いずれの入力を伝播しているのか,いい加減になってしまう。 特に外部の回路が遅延回路の出力を否定したものを入力に返してくるような場合には, 0と1が入れ替わり回路内をぐるぐる回り続ける異常現象が起きてしまう。 これは,ラットレーシング(rat racing)と呼ばれる。
したがって,2スイッチの場合にも,二つのスイッチを同時にONとしてはいけない。 ちょうどパナマ運河で,上流側の扉と下流側の扉を交互に開けないと, 水が無制限にどんどん流れていってしまうのと同じようなものである。
キャパシタは実際には,あらわには付けない。 元々,配線は,接地との間にいくばくかの静電容量を持っているからである。 僅かな配線容量では,あっという間に電圧が減衰してしまいそうであるが, 遅延回路のスイッチをON-OFFするコンピュータのクロック(周期性のあるON-OFF信号) は,この減衰時間に対し十分高速である。
ここで注意して欲しいのは,各部の信号レベルは,
が
から0になっても,
次の
が
になるまではそのまま維持されることである。
このため,
「
の期間」というと,
厳密に
が
の期間だけを指すこともあれば,
次に
が
になるまでの長めの期間を指すこともある。
同様に,
の期間についても同様である。
スイッチにはc-MOSのパストランジスタ(pass transistor)を用いる。 これは,左右の線を接続したり, 切断したりするまさにスイッチの機能を持つ回路である。 FETはゲートの電位でONになったりOFFになったりするので, FET一つを左右の線の間に入れてみよう。
FETとしてn-MOSを使ったものを図 5.5に示す。
スイッチとはどちらかの電位を残りの端子に伝えるものなので,
とりあえず,左の線の電位が決まっていて,それを右に伝えることを考えよう。
まず左の電位が0のときを考えよう。
n-MOSのゲート電位を
以下にすればFETはOFFになり,
右の電位はフリーになる。
一方,ゲート電位を
以上にすればFETはONになり,
右の電位は左の電位と等しくなりスイッチとして正常に動作している。
次は左の電位が
のときであるが,
ゲート電位が
以下であればFETはOFFになり,
右の電位は同じくフリーになる。
問題はゲート電圧が
のときである。
これは緩衝増幅器のところで述べたのと同じ現象であるが,
右の電位が十分低いときには,FETはONとなり,
右の電位は
側に引き上げられていく。
しかし,右の電位がゲート電位より
低いところを越えると,
FETのON機能は十分働かなくなってしまう。
例えばゲート電位が
であっても,
出力は
で落ち着いてしまうのである。
まとめると,n-MOSパストランジスタは,ゲートが
のときON,
ゲートが0のときOFFのスイッチとして動作するが,
ゲート電位も左も
のときのみ,不十分なONスイッチとなってしまう。
同様に,p-MOSパストランジスタは,ゲートが0のときON,
ゲートが
のときOFFのスイッチとして動作するが,
左の電位もゲート電位も0のときのみ,不十分なONスイッチとなってしまう。
そこでもし,
0から
までのいかなる電位でもきちんと動作するパストランジスタゲートを得ようとすると,
図 5.6のような形とせざるをえない。
しかし,スイッチとしてn-MOSパストランジスタだけを使っても,
最悪,入力が
のときでも,
の出力は確保できる。
これだけの電位が確保できれば,
次に何らかの論理ゲートを入れれば誤動作は起きないので,
スイッチをn-MOSパストランジスタだけで構成することはしばしば行われている。
また,ゲート信号が否定論理で与えられているときには,
p-MOSパストランジスタだけを使うなど,臨機応変な使い方がなされている。
したがって,本書でも,この図の右の回路記号を使っているかといって,
その具体的なスイッチの構成を問わないものとする。
本節で示したこうした遅延回路は,
歴史的にD-フリップフロップ(delayed-flip-flop),略してD-FFとも呼ばれる。
この遅延回路に与えるパルス
,
を,
どの遅延回路でも同じパルス発生器から与えれば,同期式回路(synchronous circuits)となる。
また,これら二つのパルス源をクロック(clock)と呼ぶ。
図 5.3に示した状態遷移表を組合せ論理回路にしたものと, 図 5.4に示したD-FFを融合すればシークエンス回路となる。 ただし,遅延回路内の最初のNOTは組合せ論理回路の最後のNANDで置き換えられるので, 全体の回路は図 5.7のようになる。
この回路はたまたま,
に1が3回入ってくると,
3回目に
に1が出力される。
こうした定まった個数のビットが入るごとに1を出力する回路は,
カウンタ(counter)と呼ばれる。
つまり,この回路で
のみを出力とする回路は,
3bitカウンタである。