3.3 CMOS組合せ回路

3.3 CMOS組合せ回路
教科書 3.4、3.5節
3.3.1 組合せ回路と順序回路の
実現方法
2
組合せ回路と順序回路
• 組合せ回路(Combinational Logic)
– 入力によって出力が決定される回路
– 機能は論理式または真理値表で表現される
– 基本ゲートの組合せまたはLUTで実現できる
• 順序回路(Sequential Logic)
– 入力と現在の状態(State)によって出力が決定される回路
– 機能は状態遷移図または状態変数を含む真理値表で表現される
– 組合せ回路+レジスタ(D-FF)で実現できる
※ 計算機アーキテクチャの講義で出てくるレジスタは、ここ
でいうレジスタにアドレス(ラベル)をつけて汎用的に使えるよ
うにしたものである
3
組合せ回路の実現方法(復習)
論理式
論理ゲート
x = a・b
y = a+b
=
真理値表
a b
0 0
0 1
1 0
1 1
x
1
1
1
0
y
1
0
0
0
LUT (Look-up Table)
(ab) address
Memory
00
1
1
DC
DC
DC
DC
DC
DC
01
1
0
DC
DC
DC
DC
DC
DC
10
1
0
DC
DC
DC
DC
DC
DC
11
0
0
DC
DC
DC
DC
DC
DC
data (x y)
使用しない
4
順序回路の実現方法(復習)
特性表
r
0
0
1
1
c
0
1
0
1
状態遷移図
q1q0 (n + 1)
q1q0 (n)
q1q0 (n) + "01"
0 0
0 0
c=0
c=0
c=1
c=1
00
11
r=1
r=1 r=1
01
10
c=1
c=1
c=0
c=0
r
c
論理回路
特性表に相
当する組合
せ回路
q1
q1
q0
q0
状態変数レジスタ
順序回路はレジスタ
(D-FF)と組合せ回路で
構成される。つまり、組
合わせ回路の部分だ
け設計すればよい
5
3.3.2 セレクタ,デコーダ,シフタ、
エンコーダ
6
セレクタ(マルチプレクサ,MUX)
(教科書3.5)
Truth table
条件分岐する回路
Z  SEL  A  SEL  B
 (SEL  A)  (SEL  B)
SEL
A
B
0
1
MUX
Z
De Morgan
theorem
SEL
0
0
0
0
1
1
1
1
A B
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
Z
0
0
1
1
0
1
0
1
if (SEL==0) Z=A;
else Z=B;
7
セレクタの回路と多入力化
SEL
多入力化(制御ビット = 2bit)
(2)
(6)
A
SEL0
Z
B
(14)
(6)
A
B
(6)
SEL
(2)
0
1
0
1
(4)
C
A
Z
B
SEL1
(4)
(4)
トランジスタ数削減 MOSFET 14個
0
1
D
Z
(14)
(14)
MOSFET 42個
8
セレクタの高速化
I1
I0
n-ch MOSFET
CMOSスイッチを使用する方式
では、入力数が増えてもゲート
段数は増えない。ただし、I1, I0
に接続されるトランジスタ数が
多くなるので、負荷が大きいこ
とに対する対策が必要。
A
B
C
D
Z
CMOSスイッチ構成の4入力
セレクタ MOSFET 20個
※ 真理値表を確認すること
(前頁の4入力セレクタと異なるはず)
I1
I1
I0
I0
p-ch MOSFET
9
セレクタの応用例(減算回路)
加算器を用いた減算
F  A  B  A  ( B)
0 1
Add
F
A
B
Add
B
A
加算器のシンボル
I
Cin
(キャリー入力)
2の補数
F
1. ビット反転
0
-1
1
2. LSBに1を加える
000
111 001
(キャリーに1入力) -2 110 010 2
101 011
-3 100
3
-4
3bit 補数表現の例
10
セレクタの応用例(ALU)
SUN SPARC
A30
B30
データ
RAM
乗算器
データ
ROM
F30
B1
Full Adder
入出力レ
ジスタ
F31
A0
B0
Full Adder
A1
Full Adder
B31
Full Adder
Cout
A31
F1
F0
(参考)減算命令
I0 1
I1 0
I2 0
Cin 1
B
ALU(算術論
理演算ユニッ
ト)
ALU
累算レジスタ
I0
I1
I2
Cin
Z
A
SEL
32bit ALU
CMOS MUX
11
デコーダ Decoder(教科書3.4)
I={I1, I0}に対応するD={D3, D2, D1, D0}
の要素を1つ選んで1を出力
(一般にバイナリコードから他のコード体系
に変換するものはデコーダと呼ばれる。
例:7セグメント・デコーダなど)
D3
I1
D2
I0
D1
D0
Truth table
I1
0
0
1
1
I0
0
1
0
1
加法標準形
Line
D0
D1
D2
D3
D3
0
0
0
1
D2
0
0
1
0
D1
0
1
0
0
D0
1
0
0
0
D0  I1 I0
D1  I1 I0
D2  I1 I0
D3  I1 I0
12
デコーダ回路
D0  I1 I0
I1
I0
D1  I1 I0
D2  I1 I0
D0
D3  I1 I0
D1
D2
D3
13
デコーダの応用例(アドレス・デコーダ)
メモリセルアレイ
・・・・
Cache
Memory
行デコーダ
A0
A1
メモリ
セル
・・・・
列デコーダ
デコーダ
A1
A2 A3
A0
SRAMメモリセル
D0
Wi
D1
D2
Intel Mobile Pen. III
D3
Di
Di
14
シフタ(教科書対応なし)
• シフト機能
– 定数倍(シフト+加算)、浮動小数点演算などに必要
定数倍の例: a * b = a * (bn・2n + bn-1・2n-1 +・・・+ b0・20)
= bn・ (a<<n) + bn-1・ (a<<n-1) +・・・+ b0・ a
• 回路方式
– バレルシフタ(Barrel Shifter)・・・次ページ
– 対数シフタ(Logarithmic Shifter)
その他の基本演算(加算、乗算、比較、除算、Moduloなど)のアルゴリズ
ム及び回路実装については、集積回路工学第2で扱う。
15
バレルシフタ
n-ch 側のスイッチ・マトリクス
右シフト(桁下げ)の真理値表
Sh3
0
0
0
1
Sh2
0
0
1
0
Sh1
0
1
0
0
Sh0
1
0
0
0
B3
A3
A3
A3
A3
B2
A2
A3
A3
A3
B1
A1
A2
A3
A3
A3
B0
A0
A1
A2
A3
※ 青色は符号拡張(sign-bit extension)
B3
A2
B2
A1
B1
A0
B0
Buffer
I1
I0
DECODER
CMOSスイッチ1段+インバータ2段
16
(参考)2の補数による符号拡張
円の内側:10進数
円の外側:2進数(2の補数表現)
000
111 111
111 110
111 101
111
-1
0
1
110 -2
111 100
拡張された6bit 補数表現(負)
101
-3
001
000 000
000 001
2 010
000 010
011
000 011
3
-4
100
3bit 補数表現
拡張された6bit 補数表現(正)
最上位ビットの値を上位に必要ビット数だけ追加すればよい
17
エンコーダ Encoder(教科書対応なし)
D3
D2
P1
D1
P0
D0
D0~D3のうち論理値が1となったライン
に対応するバイナリコードを出力する。
但し、2つ以上のラインが値1のとき、D0
に近いほうを優先する。(任意のコード体
系からバイナリコードに変換するものは
エンコーダと呼ばれる)
Truth table
D3 D2 D1 D0
0 0 0 0
DC DC DC 1
DC DC 1 0
DC 1 0 0
1
0 0 0
P1
(0
1
1
0
0
P0
0 )
1
0
1
0
18
エンコーダ回路
P1  D0  D0  D1
 D0  (1  D1)  D0  D1
D3
D2
 D0  D0  D1  D0  D1
 D0  (D0  D0)  D1
 D0  D1
D1
D0
不要
P0
P1
P0  D0  D0  D1  D2
 D0  D0  (D1 D2)
 D0  (1  D1  D2)  D0  (D1  D2)
 D0  (D0  D0)  (D1  D2)
 D0  D1 D2
(参考)
ブール代数では、1のAND
と0のORによって論理値が
変化しないことを利用
19
エンコーダの応用例
+Vref
フラッシュ型ADC
R/2
Comparator Encoder
Latch
0.125V
Vin
Vref = 1V
Vin = 0V
の場合
0.25V
0.25V
R
0.25V
R
Lecroy 10GS/s ADC
0.25V
Vin (V)
~ -0.875
-0.875 ~ -0.625
-0.625 ~ -0.375
-0.375 ~ -0.125
-0.125 ~ 0.125
0.125 ~ 0.375
0.375 ~ 0.625
0.625 ~ 0.875
0.875 ~
Thermometer Code
Binary Code
1111 1111
(1) 0 0 0
0111 1111
111
0011 1111
110
0001 1111
101
0000 1111
100
0000 0111
011
Encode
0000 0011
010
0000 0001
001
0000 0000
000
ゼロの数で値を表現
R
0.25V
R
R
0.25V
R
0.25V
R
R/2
0.875
1
0.625
1
0.375
1
0.125
1
-0.125
0
-0.375
0
-0.625
0
-0.875
0.125V
0
Binary Data
-Vref
SYS_CLK
Clocking Circuit
20
3.3.3 トライステート・バッファ
21
トライステート・バッファ
または
Symbol
EN
0
0
1
1
IN
0
1
0
1
OUT
Z
Z
0
1
22
(参考) BUSの構造
• BUSは複数の回路ブロックが配線を共有できるので
配線本数の削減に有効
– データBUS、アドレスBUSなど
• 問題点
– 複数の回路からの出力が競合しないように制御が必要
– 長い配線を共有するためノイズの影響を受けやすい
– 配線容量が大きい(バッファを使用・・・4.1節参照)
BUS
インターフェース
回路1
回路2
回路3
回路4
23
BUSと論理回路の接続方式
1. マルチプレクサ(MUX)
– 回路ブロックの出力をMUXを通して出力
– 出力する信号を制御信号で選択
2. OR BUS
– 回路ブロックの出力のORを出力
– 出力しないブロックは、0を出力
3. トライステート・バッファ
BUS
制御信号
回路1
– トライステート・バッファを通して出力
– 出力しないブロックは、Z(ハイインピーダンス)を出力
•
•
•
回路2
論理合成を使う場合、内部BUSは1か2の方法を使用する
グローバルBUSや外部BUSは、通常3 の方法を使用する
3の方法はMUXやORが必要ないので、簡便に多数のモジュールをBUS
に接続できるが、BUSの動作速度が接続された回路の入出力インピー
ダンスに依存するのでシミュレーションによる動作確認が必要
24
演習3.3
(1) p.8, p.9のセレクタ、それぞれの真理値表を作成せよ。A, B, C, D の変
数を用いて表現してもよい
(2) スライド9のようにn-ch MOSFETとp-ch MOSFETを分離して配置する
とどのような利点があると考えられるか
(3) カルノー図を応用してスライド19の4入力エンコーダの論理式を簡単
化する方法を説明せよ
(4) 全加算器(FA)を設計し、回路シミュレータの過渡応答解析により論理
機能の検証を行え(回路図、シミュレーション結果のグラフ、ネットリス
トを添付すること)
(参考) 論理機能の検証は、過渡応答解析の結果と真理値表を比較する
ことにより行うことができる。あまり高速に動作させると回路が誤動作する
可能性があるので、綺麗な矩形波出力となる程度のパルス幅で入力波形
(入力ベクトル)を作成する必要がある
25
演習3.3(4)の解説1
FAには、種々の構成法があるが、ここでは、マンチェスタ型と呼ばれる
回路についてシミュレーションを行うことにする(算術演算アルゴリズム
の詳細は、集積回路工学第2で扱う)
論理回路
真理値表
A
0
A+B
0
0
0
A+B
1
1
1
A+B
1
B
0
0
1
1
0
0
1
1
CI
0
1
0
1
0
1
0
1
B
CI
B
S
0
1
1
0
1
0
0
1
CO
0
0
0
1
0
1
1
1
26
演習3.3(4)の解説2
ここでは、階層的な回路設計を行う手順について解説する。まず、FAを構
成する論理ゲートである、インバータ、EXOR, クロックトインバータ(CMOS
スイッチでもよい)を作成する。
MOSFETサイズ
INV
Param. M1
M2
Model
N_1u
P_1u
L
1u
1u
W
5u
15u
AD
15p
45p
AS
15p
45p
PD
11u
21u
PS
11u
21u
M
1
1
27
演習3.3(4)の解説3
MOSFETサイズ
EXOR
param. M1
M2
M3
M4
Model
N_1u
P_1u
N_1u
P_1u
L
1u
1u
1u
1u
W
5u
15u
5u
15u
AD
15p
45p
15p
45p
AS
15p
45p
15p
45p
PD
11u
21u
11u
21u
PS
11u
21u
11u
21u
M
2
2
1
1
28
演習3.3(4)の解説4
MOSFETサイズ
CLKINV
param.
M1 ,M2 M3, M4
Model
N_1u
P_1u
L
1u
1u
W
5u
15u
AD
15p
45p
AS
15p
45p
PD
11u
21u
PS
11u
21u
M
2
2
29
演習3.3(4)の解説5
各論理ゲートのシンボルを作成する。
F
A
Z
A
B
Z
A
Z
FB
1.
2.
メニュー: [File] - [New Symbol] でシンボルエディタを起動
メニュー: [Draw] - [Line] 等でシンボルを描く
–
3.
メニュー: [Edit] - [Add Pin/Port] でピンを作成
–
4.
綺麗に書くのは面倒なので、四角のシンボル形状にし、 [Draw] - [Text]で、何の回
路か分かるように回路名を書いておいてもよい
Schematic(回路図)のポート名と一致させること
メニュー: [File] - [Save As…]でファイル名を付けて保存
–
シンボルファイル名は、 Schematicのファイル名.asy とすること
30
演習3.3(4)の解説6
FAの回路図を作成する。
MOSFETのパラメータファイル
グローバル配線の宣言
過渡応答解析
作成済みの回路は、通常の部品呼び出し
と同じく、Select Component Symbol フォー
ムで選択する。ただし、Top Directory を回
路とシンボルの保存先に切り替えること。
31