Professional Documents
Culture Documents
CH 3
CH 3
수의 표현과 산술 회로
(NUMBER REPRESENTATION AND
ARITHMETIC CIRCUITS)
배울 내용들
산술연산과 이에 필요한 수의 표현
Unsigned number
- 2진법, 8진법, 10진법, 16진법과 이들의 변환
덧셈기의 종류
- half adder, full adder, ripple carry adder, CLA
Signed number의 덧셈
- 보수(complement)의 원리
산술회로(Arithmetic Circuits)의 설계
곱셈의 원리와 회로
여러가지 수의 표현법과 coding
3.1 POSITIONAL NUMBER representation
가중치(weight)
• 수치는 논리회로에서 변수로 표시
• Positive Integer(=unsigned number)
V=dn-110n-1+dn-210n-2++d0100
• Including Negative Integer(=signed number)
V= (dn-110n-1+dn-210n-2++d0100)
• 10 진수를 동일하게 2 진수로 표현 가능
n 1 m n 1
V bi 2 .
i
b 2 i
i
: b 0,1 V i : 일반적으로
k r i
소수점 가정
i 0 i 1 i m
• 10진수 2진수
V b
bn 1 2 n 2 ... b2 21 b1 0 나머지
2 2
20
24
29
r = 8 ( = 2 )인
3
경우
8진 1자리 수 → 2진 3자리 수
예
( 101 011 010 111 )2
= ( 5 3 2 7 )8
4
r = 16 ( = 2 )인 경우
16진 1자리 수 → 2진 4자리 수
예
( 1010 1111 0010 0101 )2
= ( A F 2 5 )16
4 bits=nibble
8 bits=byte
MSB LSB
부호가 없는 2진수
진리표는?
∴ 다른 접근 방법을 사용
논리함수
c=x•y
s=xy
XOR 연산: odd fuction
즉 1의 개수가 홀수일 때
출력이 1
XNOR : even fuction
연산자 ⊙
ci + 1
(c) Circuit
ci s si
s HA c
xi
HA c ci + 1
yi
ci
si
xi
yi
ci + 1
n-자리 수 덧셈
1) 병렬 덧셈(parallel adder)
2) 직렬 덧셈(serial adder)
S X + Y
xn –1 yn – 1 x1 y1 x0 y0
c1
cn FA cn ” 1 c2 FA FA c0
sn – 1 s1 s0
MSB position LSB position
A P=
=
A+A A : a7 a0
Ripple carry
adder
x7 x0 y7 y0 Left-shifting
c7 A : a7 a0
s7 s0
2A 0 0 A
2A 0
A x8 x1 x0 y8 y7 y0
x8 x7 x0 y8 y7 y0 c8
s8 s0
c8
s8 s0
P = 3 A : P9 P8 P0
P = 3 A : P9 P8 P0
(b) Efficient design
(a) Naive approach
Figure 3.6. Circuit that multiplies an 8-bit unsigned number by 3.
3.3 SIGNED NUMBERS
unsigned number와 signed number
bn – 1 b1 b0
Magnitude
MSB
bn – 1 bn – 2 b1 b0
Magnitude
Sign
0 denotes
+
–
1 denotes MSB
R’s complement
(R-1)’s complement
K (2 n 1) P : 1's complement
K 2n P : 2's complement
예제
10110의 1’ s complement 01001 다시 보수를
10110의 2’ s complement 01010 만들면?
6의 9’ s complement 3
6의 10’ s complement 4
Table 3.2. Interpretation of four-bit signed integers.
덧셈 및 뺄셈
양수의 덧셈: 3가지 표현에서 같으며, 부호없는 수의 덧셈과 같음
(+ 5) 0101 – 5 1010
+ (+ 2) +0010 + (+2) +0010
(+ 7) 0111 - 3 1100
ignore ignore
Figure 3.9. Examples of 2’s complement addition.
2의 보수 뺄셈
A - B = A + (-B) [ = A + B' + 1 ]
( + 5) 0101 0101
– –2 – 1110 + 0010
( + 7) 0111
사용 장치: 덧셈 장치
하려는 일?
X, Y는 n 비트 수
일: X + Y 또는 X - Y
(즉 2 종류 → 구분은? 제어 신호 a/s에 의해 )
분석
1) X - Y = X + (-Y)로 처리 [ X - Y = X + (-Y) → X + Y' + 1]
즉 1의 보수 + 1 이며, +1은 캐리입력인 c0 = 1로 함으로써 가능
2) 2개의 입력중에 하나는 X, 다른 하나는 Y 또는 -Y [ 즉 Y' ]가 됨
블록도
동작:
y
1. a/s = 0 이면 f y, c0 0
f (y or y’ )
2. a/s = 1 이면 f y’, c0 1
모든 비트 동작이 같음 1 비트만
a/s
회로 설계
진리표
a/s yi 출력 f
0 0 0 yi
0 1 1
1 0 1
yi’
1 1 0
yn – 1 y1 y0
Add Sub
control
xn – 1 x1 x0
cn n-bit adder c0
sn – 1 s1 s0
부울 함수: 잘못된 값
overflow = c3 ⊕ c4
xn –1 yn – 1 x1 y1 x0 y0
c1
cn FA cn ” 1 c2 FA FA c0
sn – 1 s1 s0
MSB position LSB position
ci + 1
(c) Circuit
critical path
g1 p1 g0 p0
c1
c2 c0
5 gates
delay
c2=g1+p1c1 c1=g0+p0c0
Stage 1 Stage 0
s1 s0
x0 y0
g1 p1 g0 p0
c0
c2
c1
3 gates
delay c1, c2를
얻는데
필요한
시간은?
c2=g1+p1g0+p1p0c0
s1 s0
c8
c32 Block c24 c16 Block Block c0
3 1 0
s31 – 24 s15 – 8 s7 – 0
c8 g7 p7 g6 p7 p6 g5 p7 p6 p5 g 4 p7 p6 p5 p4 p3 p2 p1 p0 p7 p6 p5 p4 p3 p2 p1 p0c0
P0 p7 p6 p5 p4 p3 p2 p1 p0 , G0 g7 p7 g6 p7 p6 g5 p7 p6 p5 p4 p3 p2 p1 g0 라고 하면
G3 P3 G1 P1 G0 P0
s31 – 24 s15 – 8 s7 – 0
c32 c16 c8
Second-level lookahead
g1 p1 g0 p0
c0
c2
c1
s1 s0
알고리즘?
피승수: M = m3 m2 m1 m0
승수: Q = q3 q2 q1 q0 인 4×4의 예
m3 m2 m1 m0
* q3 q2 q1 q0
m3q0 m2q0 m1q0 m0q0
m3q1 m2q1 m1q1 m0q1
m3q2 m2q2 m1q2 m0q2
+ m3q3 m2q3 m1q3 m0q3 AND 연산
m3 m2 m1 m0
* q3 q2 q1 q0
m3q0 m2q0 m1q0 m0q0 : PP0
+ m3q1 m2q1 m1q1 m0q1
pp14 pp13 pp12 pp11 pp10 : PP1
+ m3q2 m2q2 m1q2 m0q2
pp25 pp24 pp23 pp22 pp21 pp20 : PP2
+ m3q3 m2q3 m1q3 m0q3
p6 p5 p4 p3 p2 p1 p0 : PP3
S E M
Sign
0 denotes + 8-bit 23 bits of mantissa
1 denotes – excess-127
exponent normalize &
(a) Single precision excess-code
64 bits
S E M
Sign
11-bit excess-1023 52 bits of mantissa
exponent
2
(5.0)10 = (101.0)2 = (1.01)2 * 2
표현 예
1710 0100012
1710 00010111
덧셈은 2진수 덧셈 회로 사용
문제는? 결과가 9보다 커지는 경우에는 올바르지 않다
해결은?
원하는 10진수 덧셈: modulo-10 기법
행해지는 덧셈: modulo-16 기법
∴ 6을 더하면 됨
즉 Z=X+Y z: z3 z2 z1 z0
if Z <= 9 then S = Z & carry-out =0
if Z > 9 then S = Z + 6 & carry-out = 1
☞ adjust = carry-out + z3 • z2 + z3 • z1
X 0111 7
+ Y + 0101 + 5
2진수 덧셈 Z 1100 12
+ 0110
carry 10010
조정과정
S=2
X 1000 8
+ Y + 1001 + 9
Z 10001 17
+ 0110
carry 10111
S=7
Figure 3.38. Addition of BCD digits.
X Y
c in
4-bit adder
carry-out
Detect if
sum 9>
6 0
MUX
Adjust
S
Figure 3.39. Block diagram for a one-digit BCD adder.
x3 x2 x1 x0 y3 y2 y1 y0
Four-bit adder c in
z3 z2 z1 z0
Two-bit adder
c out s3 s2 s1 s0
4) X > Y 는 3)의 역
Z + (V ⊕ N ) = 0으로 검출
5) X >= Y는
X > Y 또는 X = Y
X < Y의 역
V ⊕ N = 0으로 검출