シークエンス回路は,
準備期間と実行期間の二つの期間を交互に繰り返しながら論理を進めていく。
この準備期間,
のクロック期間中に,出力を常に
に持っていき,
の実行期間に出力をそのまま
のままにしておくか,
0に引き下げるかを決定するという動作原理で動く論理回路がしばしば用いられる。
準備期間に出力を
に持っていくことをプリチャージ(precharge)と言う。
図 5.13にプリチャージ方式のNANDやNOR回路を示すが, 通常のc-MOS論理回路のp-MOS側をFET一つにしただけのものである。 しかし,p-MOS側の回路が著しく簡単になるため,回路面積がおよそ半分になり, 集積度に対する寄与は大きいので,実際の回路では多用される。
若干の注意が必要であろう。
まず,プリチャージは上に置かれたp-MOSによって行われるから,
そのゲートには
を与えなければならない。
また,下のn-MOSに与えられる信号は,
期間は意味を持つが,
期間は0でなければならないことである。
一例として,前節で示した
の任意の論理関数を合成する回路を示そう。
任意の関数は式(5.1)に示したが,
さらに次式のように表すことができる。
| (5.2) |
つまり,3入力ANDのORである。
この程度複雑な論理になると,
通常の組合せ論理回路では相当な数のFETを必要とするが,
プリチャージ回路では図 5.14のように,極めて簡単となる。
なお,プリチャージ回路の直接の出力は
であるが,
論理が確定していないとき,
つまり
が立ち上がってから
が立ち上がるまでは出力は1である。
この出力の後にNOTを付けた出力
は,
論理が確定していないときは0を出力する回路となる。
この図に示した回路は,
第9章で説明する算術論理回路(ALU)の重要な要素となる。
なお,
が
で0だったとし,
それを利用して
を作ろうとするとき,
単純にNOTを通すだけではいけない場合がある。
例えば,
のタイミング以外では0になって欲しい場合,
単純に
のNOTをとると,
で1になるからである。
このような場合には図 5.15のように,
とANDをとるとよい。
参考のために,これにより実現できる任意関数の一覧を 図 5.16に示しておく。