ディジタル回路

ディジタル回路
山梨大学 工学部 電気電子工学科
2015 年度
山梨大学 工学部 電気電子工学科
ディジタル回路
今回の講義内容
組合せ論理回路その1
比較回路
1bit 比較回路
多 bit 比較回路
加算回路
半加算器
全加算器
加減算器
多 bit 加算器
山梨大学 工学部 電気電子工学科
ディジタル回路
比較器 (comparator)
2 つの 2 進数の大小を比較したい
↓
まず,1bit の比較器を作る
↓
複数 bit に拡張する
1bit の比較器
A
0
0
1
1
B U (A > B) V (A = B) W (A < B)
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
1
山梨大学 工学部 電気電子工学科
ディジタル回路
対応する論理式
U =A·B
V =A·B+A·B =A⊕B
W =A·B
回路図
A
U (A>B)
V (A=B)
W (A<B)
B
山梨大学 工学部 電気電子工学科
ディジタル回路
回路図は以下のように描くこともできる
A
U (A>B)
A
V (A=B)
B
W (A<B)
山梨大学 工学部 電気電子工学科
U (A>B)
V (A=B)
B
ディジタル回路
W (A<B)
VHDL の例
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity COMP is
port(A,B:in std_logic;
U,V,W:out std_logic);
end COMP;
architecture RTL of COMP is
begin
U <= A and (not B);
V <= ((not A) and (not B)) or (A and B);
W <= (not A) and B;
end RTL;
山梨大学 工学部 電気電子工学科
ディジタル回路
問
2bit の 2 進数 A1 A0 と B1 B0 の大小を比較する
2bit 比較器の真理値表を書け.
山梨大学 工学部 電気電子工学科
ディジタル回路
多 bit 比較器
多 bit の 2 進数を比較するときは,MSB(Most
Significant Bit) から順に 1bit づつ比較する
例えば A = A1 A0 と B = B1 B0 を比較する
場合
A1 > B1 なら A > B
A1 < B1 なら A < B
A1 = B1 のとき
A0 > B0 なら A > B
A0 < B0 なら A < B
A0 = B0 なら A = B
山梨大学 工学部 電気電子工学科
ディジタル回路
2 つの 1bit 比較器で 2bit 比較器を作る
A1
A
U
1bit
comp
B1
A0
B
W
A
U
1bit
comp
B0
B
V
V
W
U1
U (A>B)
V1
W1
V (A=B)
U0
V0
W (A<B)
W0
U = U1 + V1 · U0 , V = V1 · V0 , W = W1 + V1 · W0
山梨大学 工学部 電気電子工学科
ディジタル回路
問
3 つの 1bit 比較器を用いて 3bit 比較器を作るとす
る.各 1bit 比較器の出力 U2 ,V2 ,W2 ,U1 ,V1 ,
W1 ,U0 ,V0 ,W0 を用いて 3bit 比較器の出力 U ,
V ,W を表す論理式はどうなるだろうか?
山梨大学 工学部 電気電子工学科
ディジタル回路
半加算器 (half adder)
2 進 1 ビットの加算
2 進数 A 2 進数 B 和 S 桁上げ C
0
0
0
0
1
0
0
1
1
0
1
0
1
1
0
1
論理式は
S =A·B+A·B =A⊕B
C =A·B
(⊕ は EX-OR を表す)
山梨大学 工学部 電気電子工学科
ディジタル回路
加算そのものは排他的論理和 (EX-OR) で表現
できる
A,B の両方が 1 のとき,1 つ上の桁への桁上
げ C が発生する
半加算器では,下の桁からの桁上げ信号は考慮
していない
山梨大学 工学部 電気電子工学科
ディジタル回路
A
S
B
C
半加算器の回路例
山梨大学 工学部 電気電子工学科
ディジタル回路
A
S
B
C
EX-OR を使用した半加算器
山梨大学 工学部 電気電子工学科
ディジタル回路
VHDL の例
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity HA is
port(A,B:in std_logic;
S,C:out std_logic);
end HA;
architecture RTL of HA is
begin
S <= A xor B;
C <= A and B;
end RTL;
山梨大学 工学部 電気電子工学科
ディジタル回路
問
半加算器は,下記の回路図で実現することもで
きる.
A
S
B
C
この回路の論理式を求め,半加算器となっているこ
とを確認せよ.
山梨大学 工学部 電気電子工学科
ディジタル回路
全加算器 (full adder)
複数ビットの
加算を考える
場合,あるビッ
トの加算は 1 つ
下のビットか
らの桁上がり
信号 Ci を考慮
する.
A
0
0
0
0
1
1
1
1
山梨大学 工学部 電気電子工学科
B
0
0
1
1
0
0
1
1
Ci
0
1
0
1
0
1
0
1
ディジタル回路
S Co
0 0
1 0
1 0
0 1
1 0
0 1
0 1
1 1
論理式は
S = A · B · Ci + A · B · Ci
+ A · B · Ci + A · B · Ci
Co = A · B · Ci + A · B · Ci
+ A · B · Ci + A · B · Ci
(= A · B + B · Ci + Ci · A)
(= A · B + Ci · (A + B))
EX-OR を用いると
S = Ci ⊕ A ⊕ B
Co = A · B + Ci · (A ⊕ B)
山梨大学 工学部 電気電子工学科
ディジタル回路
A
B
S
Ci
Co
全加算器の回路例
山梨大学 工学部 電気電子工学科
ディジタル回路
A
S
B
Co
Ci
EX-OR を使用した全加算器
2 個の半加算器と 1 個の OR ゲートで全加算器を作
ることができる
山梨大学 工学部 電気電子工学科
ディジタル回路
VHDL の例
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity FA is
port(A,B,Ci:in std_logic;
S,Co:out std_logic);
end FA;
architecture RTL of FA is
signal S0: std_logic;
begin
S0 <= A xor B;
S <= S0 xor Ci;
Co <= (A and B) or (Ci and S0);
end RTL;
山梨大学 工学部 電気電子工学科
ディジタル回路
半減算器 (half subtracter)
減算器の出力は,差 (difference) と借り (borrow)
2 進数 X 2 進数 Y
0
0
0
1
1
0
1
1
差 D 借り B
0
1
1
0
0
1
0
0
論理式は
D =X ·Y +X ·Y =X ⊕Y
B =X ·Y
加算器との違いは,NOT ゲート1つだけ
山梨大学 工学部 電気電子工学科
ディジタル回路
全減算器
複数ビットの
減算を考える
場合,あるビッ
トの減算は,1
つ下のビット
への借し Bi も
考慮する.
X
0
0
0
0
1
1
1
1
山梨大学 工学部 電気電子工学科
Y Bi
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
ディジタル回路
D Bo
0 0
1 1
1 1
0 1
1 0
0 0
0 0
1 1
論理式は
D = X ⊕ Y ⊕ Bi
Bo = X · Y + (X ⊕ Y ) · Bi
山梨大学 工学部 電気電子工学科
ディジタル回路
加減算器
加算器
減算器
Y
X
S
Y1
X1
D
B
C
Y2
X2
SD
CB
control
加減算器 (control=0 で加算,control=1 で減算)
山梨大学 工学部 電気電子工学科
ディジタル回路
加減算器の別な作り方
計算機内部では負の数は補数表示されている.
(例) 5bit(4bit +符号桁 1bit),2 の補数の場合
1110 → 010112 ,910 → 010012 ,
−910 → 101112
減算を負の数の加算に置き換える.
(例) 1110 − 910 の計算
010112 − 010012 = 010112 + 101112 = 1000102
右(LSB 側)から 5bit だけ取り出す.
000102 → 210
2 の補数を求めるには,元の数の bit を反転し,1 を
足せば良い(教科書の図 4.11).
山梨大学 工学部 電気電子工学科
ディジタル回路
多ビット加算器
直列加算器 (serial adder)
1 ビットずつ順に計算する.現在ではほとんど
使用されないので省略.
並列加算器 (parallel adder)
各ビットを並列に計算する.
リップルキャリー方式
加算は並列に行われるが,桁上げの計算は下の桁
から順次行う.
キャリー先見方式
桁上げの計算も並列に行う.
山梨大学 工学部 電気電子工学科
ディジタル回路
キャリー先見方式
X
Xn
Yn
X1
Y1
X0
Y0
C’
C
S
X
C’
S
X
C’
Sn
LA
X1
Y1
C
S
LA
X0
Y0
山梨大学 工学部 電気電子工学科
S
X
C’
Sn
C
S
X
C’
S1
Y FA
C
S0
C -1
リップル・キャリー方式
C
Y FA
S1
Y FA
C’
Y FA
Yn
Y FA
C
X
Xn
Y FA
S
C -1
キャリー・ルック・アヘッド方式
ディジタル回路
S0