論理回路

演習1

つぎの論理回路について、真理値表および論理式をを答えなさい。

前回の講義

および印刷教材を参照

演習2

つぎの論理回路について、真理値表を作りなさい。

(1)

(2)

ページ 4

入力

途中の計算

出力

Xn

Yn

Cn

C1

S1

C2

S2

Cn+1

Sn

0

0

0

0

0

0

0

0

0

0+0+0=00

0

0

1

0

0

0

1

0

1

0+0+1=01

0

1

0

0

1

0

1

0

1

0+1+0=01

0

1

1

0

1

1

0

1

0

0+1+1=10

1

0

0

0

1

0

1

0

1

1+0+0=01

1

0

1

0

1

1

0

1

0

1+0+1=10

1

1

0

1

0

0

0

1

0

1+1+0=10

1

1

1

1

0

0

1

1

1

1+1+1=11

(1)

ページ 5

入力

途中の計算

出力

Xn

Yn

Bn

B1

D1

B2

D2

Bn+1

Dn

0

0

0

0

0

0

0

0

0

0-0-0=00

0

0

0

1

0

0

1

1

1

1

0-0-1=11

-1

0

1

0

1

1

0

1

1

1

0-1-0=11

-1

0

1

1

1

1

0

0

1

0

0-1-1=10

-2

1

0

0

0

1

0

1

0

1

1-0-0=01

1

1

0

1

0

1

0

0

0

0

1-0-1=00

0

1

1

0

0

0

0

0

0

0

1-1-0=00

0

1

1

1

0

0

1

1

1

1

1-1-1=11

-1

(2)

いろいろな組合せ論理回路

ページ 7

6.7 多ビット加算器への拡張(p95)

CPU,ALUなどで多用されている

直列加算器

x3 x2 x1 x0

y3 y2 y1 y0

1ビットFAと遅延素子(記憶素子)で4ビットの加算を実現する

Xn

Sn

Yn  FA

Cn+1

Cn

1 1 0

1

0 1 0

1

0

0 0 0

0

s3 s2 s1 s0

クロック信号

(タイミングを指示)

記憶素子

(シフトレジスタ)

全加算器FA

c

直列加算器

FA

X: 1101

Y: 0101

1101 + 0101を考える

初期状態

S: 0000

Cn+1: 0

4ビットの

記憶素子

ページ 11

FA

X: 1101

Y: 0101

1回目の計算

S: 0000

Cn+1: 0

FA

X: 110

Y: 010

計算が終わると右へシフト

S: 0000

Cn+1: 1

0

1

0

0

1

右へシフト

最下位ビットは捨てる

右へシフト

最上位ビットに入る

1+1+0 = 10

ページ 12

FA

X: 110

Y: 010

2回目の計算

S: 0000

Cn+1: 1

FA

X: 11

Y: 01

計算が終わると右へシフト

S: 1000

Cn+1: 0

1

0

1

1

0

右へシフト

最下位ビットは捨てる

右へシフト

最上位ビットに入る

0+0+1 = 01

ページ 13

FA

X: 11

Y: 01

3回目の計算

S: 1000

Cn+1: 0

FA

X: 1

Y: 0

計算が終わると右へシフト

S: 0100

Cn+1: 1

0

1

0

0

1

右へシフト

最下位ビットは捨てる

右へシフト

最上位ビットに入る

1+1+0 = 10

ページ 14

FA

X: 1

Y: 0

4回目の計算

S: 0100

Cn+1: 1

FA

X:

Y:

計算が終わると右へシフト

S: 0010

Cn+1: 1

0

1

1

0

1

右へシフト

最下位ビットは捨てる

右へシフト

最上位ビットに入る

1+0+1 = 10

1101 + 0101 = 1 0010

FA

X:

Y:

S: 0010

Cn+1: 1

X,Yは4ビットの記憶素子

FAは4回

計算をする

[メリット]

[デメリット]

Cn+1

S

暗号化で多ビット演算が必要になってきたため見直されている

簡単な構造で専用ハードウェア化しやすい

  1101

+ 0101

 10010

ページ 16

6.8 並列加算器,並列減算器 (p96)

Y0

X0

Y1

X1

全加算器

FA

全加算器

FA

S0

S1

Cn

C2

Yn

Xn

全加算器

FA

Sn

Cn+1

C1

・・・

Snを計算するにはCnが必要

Cnを計算するにはCn-1が必要

・・・

Cn+1はCPU内部で

 キャリーフラグ

 オーバーフローフラグ

として使う

C0=0

リップルキャリー加算器(ripple carry adder)という

ページ 18

Y0

X0

Y1

X1

全加算器

FA

全加算器

FA

S0

S1

Cn

C2

Yn

Xn

全加算器

FA

Sn

Cn+1

C1

・・・

C0=0

最下位ビットの計算はHA

FAをHAとして使う

すべて同じ論理回路にすると

製造コストが下がる

・部分的にHAを作ることは避けたい

・すべてFAにできないか?

FAにおいて、Cn=0であるとき

FAはHAと同じ動作をする。

図6.15 並列加算器

Y0

X0

Y1

X1

全加算器

FA

全加算器

FA

S0

S1

Cn

C2

Yn

Xn

全加算器

FA

Sn

Cn+1

C1

・・・

Snを計算するにはCnが必要

Cnを計算するにはCn-1が必要

・・・

C2を計算するにはC1が必要

全加算器n個分の遅延が発生

計算がとても遅くなる

Cn+1はCPU内部で

 キャリーフラグ

 オーバーフローフラグ

として使う

C0=0

計算を高速化するには?

下位の全加算器からのキャリーCnを使わない

全加算器の入力にはXn,Yn,Cnが必要

入力X0,X1,...,Xn,Y0,Y1,...Ynから直接Cn+1をつくる

Cn

Yn

Xn

全加算器

Sn

Cn+1

X0,X1,...,Xn,Y0,Y1,...YnからCn+1をつくる

X0,Y0からC1をつくる

X0,X1,Y0,Y1,からC2をつくる

上位になるほど複雑になる

キャリールックアップ方式

桁上げ先見方式

図6.16 並列減算器

[例] Y=0101 について「2の補数」をつくる

Y3Y2Y1Y0 = 0101

Y3Y2Y1Y0 = 1010

Y3Y2Y1Y0 + 0001 = 1011

0,1を反転(1の補数をつくる)

1を加算 (C0=1)

2の補数

ページ 22

C0=1

  1001

➖ 0101

  1001

  1010

+    1

C0=1

Y3 Y2 Y1 Y0

X=1001

Y=0101

0101を1の補数にする

ボローB=キャリーC

ページ 23

C0=1

  1001

➖ 0101

  1001

  1010

+    1

C0=1

Y3 Y2 Y1 Y0

X=1001

Y=0101

0

0

1

0

0

1

1

1

0101を1の補数にする

ページ 24

C0=1

X=1001

Y=0101

0

0

1

0

0

1

1

1

0

0

Y3

  1001

➖ 0101

  1001

  1010

+    1

C0=1

Y3 Y2 Y1 Y0

0101を1の補数にする

ページ 25

C0=1

1+0+1= 10

X=1001

Y=0101

0

0

1

1

0

0

C1=1

ページ 26

C0=1

1+0+1= 10

X=1001

Y=0101

0

0

1

1

0

0

C1=1

0+1+1= 10

C2=1

ページ 27

C0=1

1+0+1= 10

X=1001

Y=0101

0

0

1

1

0

0

C1=1

0+1+1= 10

C2=1

0+0+1= 01

C3=0

ページ 28

C0=1

1+0+1= 10

X=1001

Y=0101

0

0

1

1

0

0

C1=1

0+1+1= 10

C2=1

0+0+1= 01

C3=0

1+1+0= 10

S2=1

S1=0

S0=0

C4=1

S3=0

ページ 29

C0=1

  1001

➖ 0101

  1001

  1010

+    1

 10100

X=1001

Y=0101

0101を1の補数にする

0

0

1

0

0

1

1

1

答え

この1は見ない

S2=1

S1=0

S0=0

C4=1

S3=0

ページ 30

図6.17 加減算器(p97)

加算器と減算器を1つの論理回路にまとめる

CPU内部で演算装置ALUとして使う

加減算器

入力

X(Xn,...,X0)

Y(Yn,...,Y0)

制御信号

SUB

出力

Cn+1

S(Sn,...,S0)

制御信号SUB

入力X

入力Y

出力Cn+1, S

0

X(Xn,...,X0)

Y(Yn,...,Y0)

X+Y

1

X(Xn,...,X0)

Y(Yn,...,Y0)

X-Y

(ALU:Arithmetic Logical Unit)

制御信号SUB=0(加算)

SUB=0

F = A B + A B

A

B

F

B = 0であるとき

F = A B + A B

= A ・0 + A ・0

= A ・0 + A ・1

= A

ページ 33

0

Xn … X2 X1 X0

+ Yn … Y2 Y1 Y0

SUB=0は最下位FAのキャリーとして入力

Cn+1 Sn … S2 S1 S0

制御信号SUB=1(減算)

SUB=1

F = A B + A B

A

B

F

B = 1であるとき

F = A B + A B

= A ・1 + A ・1

= A ・1 + A ・0

= A

B=C

ページ 35

1

Xn … X2 X1 X0

+ Yn … Y2 Y1 Y0

SUB=1は最下位FAのキャリーとして入力

Cn+1 Sn … S2 S1 S0

あわせて

「2の補数」

あふれた桁は見ないふり

ページ 36

演習1

つぎの回路において、

x,yを答えなさい。

x

y

演習2

加減算回路でつぎの計算をしなさい

ページ 39

1

0

1

1

0

0

0

0

0

加算だから

SUB=0

ページ 40

1

0

1

1

0

0

0

0

加算だから

SUB=0

Y3=0,SUB=0だから

XOR出力は・・・

0

1

1

0

0

Y2=0,SUB=0だから

XOR出力は・・・

Y1=0,SUB=0だから

XOR出力は・・・

Y0=0,SUB=0だから

XOR出力は・・・

ページ 41

1

0

1

1

0

0

0

0

加算だから

SUB=0

0

1

1

0

0

0+1+0=01

S0=1

C1=0

ページ 42

1

0

1

1

0

0

0

0

加算だから

SUB=0

0

1

1

0

0

C1=0

0+0+0=00

S1=1

C2=0

ページ 43

1

0

1

1

0

0

0

0

0

1

1

1

0

0

C4=0

S3=1

S2=1

S1=0

S0=1

1000

+0101

1101

次回予告

これから先は、印刷教材がなしで理解することは難しいと思います

第1回基本的論理ゲートとブール代数の基礎[1]

から

第14回組合せ論理回路の設計[7]

までの印刷教材(記入済)が

あったほうがよいでしょう