CMOS(6/8用授業資料:5/28更新

前回簡単に紹介したCMOSは、nMOSとpMOSを相補的に接続した回路構成です。相
補的とは、pMOS,nMOSをペアにして入力を共有し、pMOSが直列接続のときは
nMOSは並列接続に、pMOSが並列接続のときはnMOSは直列接続にする方法です。
現在使われているディジタル回路の8-9割はCMOSです。CMOSは1980年代から急速
に発達し、毎年チップ内に格納する素子数が1.5倍(18ヶ月で倍)になるという急成長
を遂げました。この成長率をムーアの法則と呼びます。これによって、コンピュータ
は大発展を遂げ、ディジタル回路はアナログ回路に置き換わって様々な用途に使わ
れるようになりました。今回はこのCMOS回路をやや深く見て行きましょう。
1
歴史的には、製造のしやすいpMOSのみでできた回路が最初に発達しました。世界
初のマイクロプロセッサ4004をはじめとする初期のマイクロプロセッサはpMOSでで
きていました。しかしpMOSはマイナスの電源電圧を与える必要がありました。また、
ホールは電子に比べて易動度といって動かし易さが小さいため、性能が低くなりや
るいのです。このため、70年代の中ごろには、LSIの主流は全てをnMOSで作る方式
に移りました。この方式は、エンハンスメント型のnMOS FETの負荷抵抗にディプリー
ション型のnMOS FETを抵抗として使います。
2
ディプリーション型はゲートとソースの電圧が0Vでもある程度電流が流れるので抵
抗として使うことができます。nMOSのみで作るため、作りやすいという利点があり、
80年代のはじめまで使われました。中でもメモリ回路はかなり後になってもnMOSが
使われました。しかし、トランジスタを抵抗と使うために、出力がLレベルのときには
常に電流が流れてしまいます。また、LからHへの変化が遅いという問題もありました。
このため、序々にCMOSに置き換わりました。
3
では、CMOSの回路構成を見て行きましょう。CMOSの特徴は、ゲートがHにするとO
NになるnMOS,LにするとONになるpMOSという相補的(Complementary)なトランジス
タを相補的に接続することにあります。まずnMOS,pMOSのペアを入力数分用意して、
ゲートを共通にしてそれぞれの入力を与えます。次に回路の下半分にnMOSを、上
半分にpMOSを配置し、nMOSが直列の場合、pMOSは並列に、nMOSが並列の場合、
pMOSを直列に接続します。このようにすると、出力にはGNDと電源のどちらかがト
ランジスタを介してつながり、電源からGNDまでの通路のどこかは切れていること
になります。前回、NOT、NAND、NORを紹介しました。今回はより複雑な回路に
ついて紹介します。
4
前回紹介したNORとNANDの回路を見てください。NORの方はnMOSが並列に繋
がっているので、どちらかの入力がHになると出力YはGNDに繋がってLが出力さ
れます。両方の入力がLのときだけYは電源と繋がってHが出ます。一方、NANDは
nMOSが直列なので、両方HのときだけYがLになり、pMOSが並列なのでどちらかが
LのときにはYがHになります。この方法を利用すればもっと複雑な回路も実現可能
なはずです。
5
例えば、直並列を組み合わせるとこの図に示すような回路が実現できます。このよ
うなゲートをCMOS複合ゲートと呼びます。この種の回路を解析する場合は、下半
分のnMOSに着目する方法と、上半分のpMOSに着目する方法があります。ここでは
下半分に着目しましょう。ZがGNDに落ちるためにはどのトランジスタがONになれ
ば良いかを考えます。
6
ZがGNDに繋がる条件は、以下のように求めます。並列の場合はORと考え、直列
の場合はANDと考えます。この場合、BとCのORで、これに対してAがANDされる
ことになります。さらにDがORされます。この条件が満足されれば、ZはGNDになり
ます。すなわち論理式は、ここに示すようになります。
7
今度は上半分のpMOSに着目します。pMOSはLの時ONになるので、入力にバーが
付くことになります。あとは同じで、直列がAND、並列がORです。出来上がった式
はさきほどと違うように見えますが、ドモルガンの法則により同じことがわかります。
8
次にブール式から回路図に変換する方法を紹介しましょう。式の形が全体にバーが
付いている場合は、nMOSから作っていきます。AとBはORなので並列に繋ぎます。
これにCがANDされているので、直列にnMOSを繋ぎます。ここで、CとA,Bの並列
接続の上下関係は逆でもかまいません。この図ではCがGNDに接続されています
が、AとBの並列接続がGNDに接続されていてもかなわないです。
9
次に、nMOSの部分と逆の接続関係でpMOS部分を作ります。AとBは並列なので、
pMOSを直列に接続します。Cは直列なので、AとBの直列に対して並列に繋ぎます。
入力のバーに対するブール式が与えられた場合はpMOS部分をまず作って、これに
対応したnMOS部分を作っていきます。
10
ではこの辺で演習をやってみましょう。演習7-1は回路からブール式に変換する問題、
演習7-2はブール式から回路を作る問題です。
11
さて、今まで紹介したCMOS回路は必ず上半分にpMOSを使い、下半分にnMOSを
繋ぎました。このため、入力と出力の関係は必ずNOTが入ることになり、今までの
複合ゲートは全体の式にバーが付いた形か、個々の入力にバーが付いた形のどち
らかの論理式でなければ実現できませんでした。AND、ORなどは実現できません。
これはなぜでしょう?理由はpMOSはHレベルの伝達、細かく言うとLからHへの変
化の伝達は得意ですが、HからLの変化の伝達は苦手です。逆にnMOSは、Lレベル
つまりHからLへの変化の伝達は得意で、LからHへの伝達が苦手という特徴があ
るからです。
12
これは動作原理を考えると理解できます。nMOSのp型サブストレートはGNDレベル
になっています。このため、S-DがLレベルになるときは電位差が生じません。一
方、S-DがHレベルになる際は、電位差が生じます。この時、S-Dとサブストレー
トの間の容量(コンデンサ)に電荷を充電しなければS-D間はHレベルになること
ができず、このために時間が掛かってしまいます。
13
pMOSの場合、nMOSとは逆にサブストレートは電源電位になっているので、S-D間
がHレベルのときには電位差が生じません。一方で、S-D間がLレベルになる場合
は、容量に充電する必要があり時間が掛かってしまいます。
14
したがって、このようにnMOSに電源電位を伝達させ、pMOSにGND電位を伝達させ
る方法は、互いに苦手な電位を伝達することになり動作速度が遅くて使い物になり
ません。
15
では、CMOSでANDやORはどのようにして作れば良いのでしょうか?NANDやN
ORの後にNOTゲートを付ければよいのです。CMOSのNOTゲートはトランジスタ2
個でできますし、高速です。このようにCMOSは、NOTゲートを惜しげなく使って論
理を合わせることで、nMOSでLレベルを伝達し、pMOSでHレベルを伝達する原則を
維持します。
16
さて、ここまでで通常の相補的な使い方を紹介しました。これと全く逆な利用法があ
ります。nMOSとpMOSのソースードレイン同士を接続し、ゲートには片方にSを与え
たとすると、もう片方にはSの反転信号を与えます。この場合、pMOSがONのときは
nMOSもONになり、nMOSがOFFのときはpMOSもOFFになります。つまり、両方が
必ず同じ状態になるのです。このことにより、ONになった時はAとYが接続され、OF
Fの時は、AとYが切り離されます。これをトランスミッションゲート、あるいはトランス
ファーゲートと呼びます。なぜnMOSとpMOSの両方必要か?というと、先ほど解説し
たとおり、それぞれ通すのが得意なレベルが違うからです。HレベルはpMOSが、Lレ
ベルはnMOSが主に動作することで、両方のレベルを高速に通すことができます。ト
ランスミッションゲートは、双方向である点にご注意ください。この双方向性を利用し
てFPGAの配線用スイッチとして使うことができます。
17
トランスミッションゲートを使うとマルチプレクサ(データセレクタ)を簡単に作ることが
できます。図に示すようにSをHにすると上のトランスミッションゲートがONになって、
AがYに出力されます。
18
一方、SをLにするとBがYに出力されます。Sの反転信号を作るNOTゲートを含め
てもトランジスタ6個で実現できるのが特徴です。後の授業で紹介するD-FFの中
身などに使います。
19
ではここで、テキスト22ページの例題をやってみましょう。これは先ほどのマルチプ
レクサの応用です。
20
A=Hの時にはYにBが、A=Lの時にはYにBの反転信号が表れます。これを真理
値表にしてみると、Exclusive-OR(排他的論理和)ができてきることがわかります。
排他的論理和は複合ゲートで作ることができず、普通のゲートの組み合わせで作る
と多数のゲートが必要であることから、この方法にはメリットがあります。このように
トランスミッションゲートを使って論理回路を作ることをパストランジスタロジックと呼
びます。パストランジスタロジックは、排他的論理和の場合はコストの小さいメリット
が際立っているため、使われることがありますが、伝達レベルが劣化する問題点が
あります。通常のCMOSは、出力には電源、GNDレベルがトランジスタを通じて表
れます。しかし、パストランジスタロジックの出力は入力がそのまま出てくるため、複
数段を経過するとレベルが劣化してしまうのです。
21
トランスミッションゲートのpMOS, nMOSが両方OFFの状態では、出力は電気的に浮
いた状態になります。この状態は、出力インピーダンスが高くなることからハイイン
ピーダンス状態とも呼びます。にこれはLとHのほかの第3の出力ということで3ス
テート出力あるいはトライステート出力と呼びます。この図のようにNOTゲートの出
力にトランスミッションゲートを付けることで、3ステートゲートを作ることができます。
この例ではB入力がLの場合は、出力はハイインピーダンス(真理値表ではHi-Zと表
します。Zはインピーダンスをしめすことを思い出しましょう)になり、B入力がHの時は
普通のNOTゲートとして働きます。MIL記号法ではこのように横から3ステート状態に
するかどうかを切り換える制御線を付けて示します。
22
3ステートゲートを利用するとバスを作ることができます。通常のディジタル回路は一
つの信号線に複数の出力を繋げることはありませんが、場合によっては、複数の出
力を繋いで、時分割で信号を載せることにより、信号線を共有して効率良く利用する
ことがあります。このような信号線は通常束にして一定の大きさのデータを載せるこ
とが多く、バス(Bus)と呼ばれます。3ステートゲートの出力を複数接続し、どれか一
つを除いて全てハイインピーダンス状態にします。この場合、Aのみ制御線をLにし、
B,CはHにします。このことにより、信号線上にはAからの信号のみが載ります。今度
はCの制御線をLにして、他をHにすれば、Cの入力がバス上に載ります。このように
バスはA,B,Cのどの信号を載せることもできるのですが、複数同時に制御線をLにす
ると出力同士が衝突して、トランジスタ間に過電流が流れてしまいますので注意が
必要です。
23
様々なスリーステートゲートの例を示します。制御線はEI(Enable Input)という名前を
使っています。EIをアクティブにするとゲートは働き、そうでない場合は出力がハイイ
ンピーダンス状態になります。
24
3ステートゲートは、NAND、NOR、NOTなど通常のゲートを使ってつくることもできま
す。これがその例です。
25
この例ではEI=Lならば、NAND、NORは共にNOTの働きをするので、inのレベルはそ
のままoutに繋がります。一方、EI=Hの場合、両方のトランジスタがOFFになり、電
気的に浮いた状態、すなわちハイインピーダンス状態になります。この方式はトラン
スミッションゲートを使う方法に比べてトランジスタ数が多く必要ですが、出力レベル
が電源、GNDから経由するトランジスタ数が1なので、電気的に強いです。トランス
ミッションゲートを使うとどうしても複数個のトランジスタを経由することになります。
26
今日のポイントをインフォ丸が示します。
27
ではこの演習問題をやってみましょう。
28
以降はおまけです。計算機基礎で習ったはずです。忘れた人はスライドを見て思い
出してください。
29
30
31
32