スライド タイトルなし

2009.4.27
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Keiichi MIYAJIMA
2進演算と算術回路
注)教科書第3章は2年次後期「論理回
路」の内容と重複するので省略する。
2進加算
先週も述べたとおり、コンピュータの内
部でのデータは2進数で表現される。
• 2進数の加算のみで減算も表現
できた。
実際の回路構成はどう
なっているのか?
2進加算
下位からの桁上げがない場合の2進
数一桁の加算の真理値表を考える。
入力
出力
和
桁上げ出力
xy
S
C
0
0
1
1
0
1
1
0
0
0
0
1
0
1
0
1
下位からの桁上げを考慮しない加算
半加算器(half adder:HA)
半加算器
x
y
HA
S
C
x
y
XOR
S
AND
C
論理記号
論理回路
下位からの桁上げを考慮しない加算
半加算器(half adder:HA)
2進加算
下位からの桁上げを考慮する場合
11
 ) 11
110
この場所では下位からの桁上げがあるため、
それを考慮する必要がある
全加算器
下位からの桁上げを考慮する場合
入力
出力
和
桁上げ出力
x y
C1
S
C
0
0
0
0
1
1
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
0
0
1
1
0
0
1
1
全加算器
C1
論理記号
x
y
FA
S
C
半加算機とORゲートによる構成
C1
x
y
HA
S
HA
OR
C
下位からの桁上げを考慮した加算器
全加算器(full adder:FA)
注
「減算器」についてはここでは述べな
い。
なぜなら、先週述べたとおり、減算は2
の補数を用いることで、加算として取り
扱うことができる。
直列加算器
直列加算 数ビットからなる二つの2進数を 2 0 の
(serial addition) 桁から順次加算を行う方法
全加算器1個と1ビットの記憶回路
で構成可能
直列加算器 (serial adder)
被加数
x
加 数
y FA
C1
S
C
和
シフトレジスタで構成
1ビット
遅延回路
フリップフロップで構成
シフトレジスタ: 値を1ビットずつ右へずらしていくことが
できるレジスタ
直列加算器の動作
被加数
加 数
例: 0 1010 と 0 1011 の加算を考える。
2
2
x
y
FA C
C1
1ビット遅
延回路
和を記憶するシフトレジスタの初期値
1ビット遅延回路の初期値はともに0
被加数
0 1010
加 数
0 1011
1ビット遅延回路
0
和
S
0 0000
和
直列加算器の動作
MSB
被加数
加 数
0 1010
加 数
0 1011
0
x
y
S
FA C
和
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
0
1
和
0 0000
シフトパルス
LSB(最初の1桁目)のみが計算対象となる
直列加算器の動作
MSB
加 数
0 0101
加 数
0 0101
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
1 0000
0
1ビットずつ右へシフト
先ほどの結果を和を記
憶するレジスタへ
和
直列加算器の動作
MSB
0 0101
加 数
0 0101
0
LSBのみを加算
被加数
加 数
x
y
S
FA C
和
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
1
1
和
1 0000
シフトパルス
直列加算器の動作
MSB
加 数
0 0010
加 数
0 0010
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
1
加算して1ビットずつ右へシフト
0 1000
和
直列加算器の動作
MSB
LSB
被加数
0 0010
加 数
0 0010
1ビット遅延回路
0
0
被加数
加 数
1
和
1
LSBと先ほど桁上がりしたもの
を加算
x
y
S
FA C
和
C1
1ビット遅
延回路
0 1000
シフトパルス
直列加算器の動作
MSB
加 数
0 0001
加 数
0 0001
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
0
加算して1ビットずつ右へシフト
1 0100
和
直列加算器の動作
MSB
0 0001
加 数
0 0001
0
LSBのみを加算
被加数
加 数
x
y
S
FA C
和
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
1
1
和
1 0100
シフトパルス
直列加算器の動作
MSB
加 数
0 0000
加 数
0 0000
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
1
加算して1ビットずつ右へシフト
0 1010
和
直列加算器の動作
MSB
LSB
被加数
0 0000
加 数
0 0000
1ビット遅延回路
0
0
被加数
加 数
1
和
1
LSBと先ほど桁上がりしたもの
を加算
x
y
S
FA C
和
C1
1ビット遅
延回路
0 1010
シフトパルス
直列加算器の動作
MSB
加 数
0 0000
加 数
0 0000
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
0
加算して1ビットずつ右へシフト
1 0101
和
直列加算器の動作
MSB
加 数
0 0000
加 数
0 0000
0
全て0になったら終了
x
y
S
FA C
C1
1ビット遅
延回路
LSB
被加数
1ビット遅延回路
被加数
和
1 0101
和
直列加算器の利点
•回路構成が単純
しかし
シフトパルスがビット数分必要なため
演算処理速度が下がる。
並列加算器
並列加算器 すべてのビットを同時に加算する
(parallel adder)
ハードウェア量は増加するが、
加算の高速化が構成可能
並列加算器
xn 1
y n 1
C n 1
FA
C n2
x1
y1
FA
C0
x0
y0
0
C 1
加算の時は0
FA
S n 1
S1
S0
和
出
力
並列加算器
xn 1
y n 1
C n 1
FA
C n2
桁上げが伝達される
のに時間がかかる。
x1
y1
FA
C0
x0
y0
C 1
FA
S n 1
S1
S0
桁上げ先見加算器
Gk  xk  yk
Pk  xk  yk とおくと
C0  G0  P0C1
C1  G1  P1G0  P1P0C1
C2  G2  P2G1  P2 P1G0  P2 P1P0C1
C3  G3  P3G2  P3 P2G1  P3 P2 P1G0  P3 P2 P1P0C1
Ck  Gk  Pk Ck 1
並列加算器
xn 1
y n 1
C n 1
FA
C n2
桁上げ先見加算器の
結果を同時に入力
x1
y1
FA
C0
x0
y0
C 1
FA
S n 1
S1
S0
加算器を用いた減算
補数を用いた加算器による減算はどうなるの
か?
加算器を用いた減算
C n 1
xn 1
y n 1
FA
C n2
x1
y1
FA
C0
x0
y0
C 1
FA
S n 1
S1
S0
加算器を用いた減算
C n 1
xn 1
FA
y n 1
C n2
D n 1
x1
y1
FA
C0
D1
x0
y0
FA
1
減算の時は1
D0
差
出
力
並列加算器の利点
•高速な演算が可能
しかし
先見回路が必要など、ハードウェアが
複雑化
現代のコンピュータはこれらのバランス
を見ながら設計される
本日のまとめ
2進演算と算術回路
1. 半加算回路と全加算回路
2. 直列加算器と並列加算器
本日の課題
1. 直列加算器と並列加算器について、それぞれ
の利点と欠点を述べよ。
2.図の半加算機において、以下の入力パル
ス列に対する和出力と桁上げ出力を求めよ
x
c
x
HA
y
s
y
3.図は全加算器を表す論理回路である。図中の
xに1、yに0、zに1を入力したとき、出力となるc(桁
上げ数)、s(和)の値はどうなるか。
x
(H12年春期 改題)
c
y
FA
s
z
補足
論理積(AND)
排他的論理和(XOR)
[Exclusive OR]
論理和(OR)
否定(NOT)