78
1 디디디 디디디 디디디디

디지털 산술과 연산회로

Embed Size (px)

DESCRIPTION

디지털 산술과 연산회로. 단원목차. 1. 디지털 연산 2. 부호화 이진수 3. 부호화 이진 연산 4. 16 진 연산 5. 수와 알파뉴메릭 코드 6. 이진 가산기와 감산기 7. BCD 가산기 8. MAX+PLUS II 에서의 캐리생성. 디지털 산술. 부호화 이진수 : 부호 (+/-) 를 한 비트 ( 일반적으로 MSB), 나머지 비트를 크기로 하는 고정된 길이의 이진수 . - PowerPoint PPT Presentation

Citation preview

Page 1: 디지털 산술과 연산회로

1

디지털 산술과 연산회로

Page 2: 디지털 산술과 연산회로

2

단원목차

1. 디지털 연산2. 부호화 이진수3. 부호화 이진 연산4. 16 진 연산5. 수와 알파뉴메릭 코드6. 이진 가산기와 감산기7. BCD 가산기8. MAX+PLUS II 에서의 캐리생성

Page 3: 디지털 산술과 연산회로

3

디지털 산술• 부호화 이진수 : 부호 (+/-) 를 한 비트 (

일반적으로 MSB), 나머지 비트를 크기로 하는 고정된 길이의 이진수 .

• 무부호 이진수 : 부호비트를 규정하지않는 고정된 길이의 이진수 . 모든 비트는 크기이고 부호는 양 (+) 으로 고려된다 .

Page 4: 디지털 산술과 연산회로

4

무부호 이진 연산

• 합 (sum): 둘 또는 그 이상의 이진수 ( 오퍼랜드 )의 가산연산의 결과 .• 캐리 (carry): N- 비트 가산동작 동안에 다음의 최상위 비트로 자리올림이 발생하는 비트 .• 만약 결과가 N- 비트에서 허용할 수 있는 것보다 클 경우 , 캐리비트는 1 이 된다 .

Page 5: 디지털 산술과 연산회로

5

기본 규칙 ( 무부호 )

0 + 0 = 0 0

1 + 0 = 0 1

1 + 1 = 1 0

1 + 1 + 1 = 1 1

C_IN A B C_OUT SUM

• One Bit 무부호 가산

Page 6: 디지털 산술과 연산회로

6

이진 가산 예

1 Carry to next 1 1 1 1 1

1 0 0 1 0 1 0 1 0 1 1 1 0

+ 1 0 1 0 1 0 0 1 0 0 1 1

0 1 1 1 0 0 1 0 1 0 0 0 0 0 1

Carry Out Bit

• 이진 가산

Page 7: 디지털 산술과 연산회로

7

감산

• 감산 X = A – B 에서 , A= 피감수 (Minuend), B= 감수 (Subtrahend), X = 차 (Difference).• 만약 A < B 이면 빌림 비트가 요구된다 .• 감산은 마이크로프로세서에서 사용하는 2 의 보수 가산과 같은 많은 형태가 있다 . (PC 에서 처럼 )

Page 8: 디지털 산술과 연산회로

8

감산 규칙

0 - 0 = 0 0

1 - 0 = 0 1

1 - 1 = 0 0

10 - 1 = 0 1

BORROWIN A B

• 1 비트 이진 감산

Page 9: 디지털 산술과 연산회로

9

이진 감산 예

1110 110(10) Borrow Stage

-1001 100 1

010 1

10000 0111(10) Borrow ripples to LSB

- 101 10 1

0101 1

• 빌림이 있는 이진 감산

Page 10: 디지털 산술과 연산회로

10

부호화 이진수 (1)

• 부호비트 : 일반적으로 MSB 비트로 , 수가 양일 때는 ‘ 0’, 음일 때는 ‘ 1’ 을 나타낸다• 크기비트 : 크기를 나타내는 비트• 참 크기 형태 : 크기비트가 참 (TRUE) 크기를 나타내는 부호화 이진형태 (보수형태가 아님 ).

Page 11: 디지털 산술과 연산회로

11

부호화 이진수 (2)

• 1’s Complement: 모든 비트를 보수화해서 음수를 만드는 부호화 이진수의 형태 .

• 2’s Complement: 모든 비트를 보수화 한 후 , 1 을 더해서 음수를 만드는 부호화 이진수 형태 (1’s complement +1).

Page 12: 디지털 산술과 연산회로

12

참 크기 형태

+25 = 011001 sign bit = MSB = S = 0

-25 = 111001 Same as +25 with S=1

-12 = 101100

+12 = 001100

• 5 Bit Numbers/ Negative = S=1

True magnitude

Page 13: 디지털 산술과 연산회로

13

1 의 보수 형태

57 = 0011 1001

-57 = 1100 0110 All Bits Inverted

72 = 0100 1000

-72 = 1011 0111

• 8-Bit 1’s Complement (Negative = S = 1)

Page 14: 디지털 산술과 연산회로

14

2 의 보수 형태

+57 = 00111001

-57 = 11000110

+ 1

10111111

• MPU(PC) 연산에서 사용+72 = 01001000

-72 = 10110111

+ 1

10111000

Page 15: 디지털 산술과 연산회로

15

부호화 이진 가산 (8-Bit)

+30 = 0001 1110

+75 = 0100 1011

+105= 0110 1001

부호비트를 갖는 이진 가산과 유사

• 부호화 가산 (Positive S = 0)

Page 16: 디지털 산술과 연산회로

16

1 의 보수에 의한 감산

+80 = 0101 0000 (+80) = 0101 0000

-65 => 0100 0001 (+65) = 1011 1110 (1’s Comp 65)

10000 1110

+ 1(end-around carry)

0000 1111 (+15)

‘End around carry’ 가산방법을 사용

• 1 의 보수를 더하고 캐리를 더함

Page 17: 디지털 산술과 연산회로

17

2 의 보수 감산

+80 = 0101 0000 0101 0000

+65 = 0100 0001 +1011 1111

-65 = 1011 1110 +1 1 0000 1111

Discard Carry Bit from result

• 피감수에 2 의 보수를 가산

Page 18: 디지털 산술과 연산회로

18

음수 결과

• 만약 감산을 위해 참 크기 형식으로 하면 , 결과가 부정확해짐 .(p228 참조 )

• 만약 결과가 1 의 보수 혹은 2 의 보수로부터 얻고 , 결과가 음 (S=1) 이면 , 크기는 결과를 보수화 하여 얻어진다 .

Page 19: 디지털 산술과 연산회로

19

음수 결과 예

+65 = 0100 0001 0100 0001

-80 = 1011 0000 (2’s C.) +1011 0000

1111 0001

Invert 0000 1110

Add 1 + 1

Final Result = -15 0000 1111 = 15(Neg.)

• 2’s Complement Negative Result (65-80)

결과의 부호비트가 1 이면 그것은음수이고 2 의 보수 형태이다 .

Page 20: 디지털 산술과 연산회로

20

부호화 수의 범위

• N 개의 크기비트를 갖는 양수의 범위는 0 to 2N - 1.

• N 개의 크기비트를 갖는 음수의 범위는 -1 to -2N.

• 8-Bit 예

8 Bit Number Range is -2N <= X <= +2N - 1

or -128 to +127

Page 21: 디지털 산술과 연산회로

21

부호 비트 오버플로우

• Overflow: 합이나 차의 결과가 크기 비트로 표현될 수 있는 것보다 클 경우 부호화 이진수의 부호비트로 캐리가 에러가 되는 현상 .• 결과는 잘못된 양수나 음수가 된다 .

Page 22: 디지털 산술과 연산회로

22

잘못된 음수 오버플로우

+75 = 0100 1011

+96 = + 0110 0000

1010 1011 Result is Negative (False)

두 양수를 더해서 결과가 +127 보다 클 경우 오버플로우가 발생한다 .

• 8-Bit Addition

Page 23: 디지털 산술과 연산회로

23

잘못된 양수 오버플로우

-80 = 1011 0000 (2’s comp. form)

-65 = +1011 1111 (2’s comp. form)

0110 1111 Result is Positive(False)

두 음수의 가산결과 , 8- 비트 수의 범위 (-128) 를 초과하여 그릇된 양수가 얻어짐 .

• 8-Bit 두 음수의 가산

Page 24: 디지털 산술과 연산회로

24

16 진 가산

F + 1 = 10

F + F = 1E

• 0 에서 9 숫자의 범위를 갖는 십진 가산과 유사함 .• 예

Page 25: 디지털 산술과 연산회로

25

BCD Codes

• BCD(Binary Coded Decimal) 코드 : 4- 비트 이진 값으로 십진수를 표현하는데 사용하는 코드 .• 0-9 에 대해서는 0000 에서 1001 가 대응되고 , 1010 에서 1111 는 유효하지 않음 .• 각 비트 위치가 십진 가중치를 가지므로 일명 8421 코드라 함 .

Page 26: 디지털 산술과 연산회로

26

BCD 예

• (4987)10 = 0100 1001 1000 0111 (BCD)

• (84)10 = 1000 0100

• 각 자리는 4-Bit 이진 그룹이다 .

Page 27: 디지털 산술과 연산회로

27

과잉 (Excess)-3 코드• 참 크기의 4- 비트 이진 값에 3(0011) 을 더해서 얻어지는 BCD 코드 .• 과잉 -3 은 자기보수 (self complementing ) 코드이다 . 만약 , 과잉 -3 수의 비트가 반전되면 , 등가 십진수의 9 의 보수가 된다 . • 과잉 -3 코드는 십진연산을 디지털적으로 수행할 때 유용하다 .

Page 28: 디지털 산술과 연산회로

28

Excess-3 예• 3 = 0011 + 0011 = 0110 = 6 in E-3.

• 1 = 0001 + 0011 = 0100 = 4 in E-3

• 9’s Complement of 1(0100 in E-3) = (9 - 1) = 8

• If we take 1’s complement for 1011(8 in E-3 code). => 0100

• Self Complement : /(E-3 code) = 9’s 보수 )

Page 29: 디지털 산술과 연산회로

29

Gray Code그레이코드비 가중치 코드고 연산코드가 아님 ; 즉 , 비트 위치마다 가중 값이 없다 .그레이 코드의 중요한 특징은 한 코드 수와 다음 코드 수 사이에는 단지 한 비트만변한다 . Shaft position encoder( 응용 )

4-bit Gray code

Decimal Binary Gray code Decimal Binary Gray code

0 0000 0000 8 1000 1100 1 0001 0001 9 1001 1101 2 0010 0011 10 1010 1111 3 0011 0010 11 1011 1110 4 0100 0110 12 1100 1010 5 0101 0111 13 1101 1011 6 0110 0101 14 1110 1001 7 0111 0100 15 1111 1000

Page 30: 디지털 산술과 연산회로

30

Binary-to-Gray code conversion

1. MSB in the Gray code is the same as MSB in the binary number.2. Going from left to right, add each adjacent pair of binary code bits to get the next Gray code bit. Discard carries. Ex) 1 0 1 1 0 (Binary) (For 4-bit code g3 = b3 g2 = b3 xor b2 1 1 1 0 1 (Gray) g1 = b2 xor b1 g0 = b1 xor b0)

Gray-to-Binary code conversion

1. MSB in the Binary code is the same as MSB in the Gray code.2. Add each binary code bit generated to the Gray code bit in the next adjacent position. Discard carries. (For 4-bit codeEx) 1 1 0 1 1 (Gray) b3 = g3 b2 = b3 xor g2 b1 = b2 xor g1 1 0 0 1 0 (Binary) b0 = b1 xor g0)

그레이코드 변환

Page 31: 디지털 산술과 연산회로

31

ASCII 코드 • American Standard Code for Information Interchange.• 데스트 문자 , 수 , 구두점 , 특수제어를 위해 7- 비트의 수문자 코드• 확장된 8-bit 형태가 더 넓게 사용된다 .• Table 6.5 참조

Page 32: 디지털 산술과 연산회로

32

이진 가산기• Half Adder(HA): 두 비트를 가산하여 합과 캐리를 출력하는 회로 .• Full Adder(FA): 다른 반가산기 또는 전가산기로부터 캐리비트와 두 오퍼랜드 비트를 더하여 합과 캐리를 출력하는 회로 .

Page 33: 디지털 산술과 연산회로

33

반가산기 가산

• 이진 두 비트 가산규칙

0 + 0 = 00

0 + 1 = 01

1 + 1 = 10

Figure 6.1Half Adder

Page 34: 디지털 산술과 연산회로

34

반가산기 회로• 기본 식 S = A xor B, C = A and B • 여기서 S = Sum, C = Carry.• 반가산기의 진리표

A B C S

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

Figure 6.2

Page 35: 디지털 산술과 연산회로

35

전가산기

• 반가산기에 CIN 을 더한다 .• 식은 다음과 같이 수정된다 .• C = ((A xor B) and CIN) or (A and B).

• S = A xor B xor CIN.• 전가산기는 두개의 반가산기와 OR 게이트로 구성될 수 있다 .

Page 36: 디지털 산술과 연산회로

36

전가산기 회로• 두개의 반가산기를 사용한 전가산기 회로Figure 6.6

Page 37: 디지털 산술과 연산회로

37

병렬 가산기• N-Bit Multiple Adder (FA Stages)

A1 A S A2 A S AN A

0 CI CO CI CO CI

B1 B B2 B BN B

S1 S2 SN

Page 38: 디지털 산술과 연산회로

38

리플 캐리 (1)• N- 비트 병렬 가산기에서 (FA Stages) 캐리출력은 마지막 단의 전가산기 (FA_N) 에서 발생한다 .• 이것을 리플캐리 가산기라 한다 . 왜냐하면 , 최종 캐리출력 (Last Stage) 은 LSB 단으로 입력된 캐리입력 CIN 이 리플되어 전파해 오기 때문이다 .Figure 6.11

Page 39: 디지털 산술과 연산회로

39

              

리플 캐리 (2)

• 각 단은 CIN 에서 COUT 까지 하나의 AND Gate 와 하나의 OR Gate 의 전파지연을 가진다 .• 4-Bit 리플 캐리 가산기는 최종 COUT 까지 8 Gates(4 x 2 = 8) 의 전파지연을 가진다 . • PC 의 MPU 에서처럼 32-Bit 가산기는 대략 64 Gates 의 지연을 보여준다 .

Page 40: 디지털 산술과 연산회로

40

캐리 예견 (1)

• Fast Carry 또는 Look Ahead Carry: 최종 COUT 을 오퍼랜드 비트들 (A1 ~ AN, B1 ~ BN) 로부터 직접 발생시키는 조합회로 망 . • 리플캐리에서처럼 각 전가산기 단의

동작에 의존하는 것과는 다르다 .

Page 41: 디지털 산술과 연산회로

41

캐리 예견 (2)

• 캐리 예견 (Fast Carry) 은 리플캐리에 비해서 작은 전파지연을 가진다 .• 4- 비트 가산기 경우 , 리플캐리는 8 게이트 지연이 있으나 , 빠른캐리는 단지 3 게이트 지연이 있다 .• Cn = AnBn + Cn-1(An + Bn)

Page 42: 디지털 산술과 연산회로

42

4-bit Fast Carry Circuit

Fig. 6.12

Page 43: 디지털 산술과 연산회로

43

2 의 보수 감산기 (1)

• 2 의 보수 가산에 의한 감산의 개념은 병렬 전산기의 사용을 가능하게 한다 .• 이것은 감산을 위해 MPU ALU (Arithmetic Logic Unit) 에서 사용할 수 있다 .• 감산동작은 감수의 보수에다 1 을 더한 후 , 피감수를 가산함으로 이루어 진다 .

Page 44: 디지털 산술과 연산회로

44

2 의 보수 감산기 (1)

Fig. 6.14Ex) 0101-00112’s comp. of “0011” 0011 1100(1’s) +1 1101

0101(+5)+ 1101(-3)1 0010(+2)

discard carry

Page 45: 디지털 산술과 연산회로

45

2 의 보수 감산기 (2)• 차 = A - B = A + (!B + 1).

• 이러한 동작은 B1 ~ BN 을 반전하고 , LSB 단의 CIN 을 +5V 에 연결한 N- 비트 병렬 가산기에서 수행될 수 있다 .

• 회로는 가산 또는 감산 동작을 선택적으로 수행하기 위해 수정될 수 있다 .

Figure 6.16

Page 46: 디지털 산술과 연산회로

46

2 의 보수 가 / 감산기Fig. 6.15

Page 47: 디지털 산술과 연산회로

47

구조적 (Structured) VHDL 설계 (1)

• 계층 (Hierarchy): 일련의 계층 (레벨 ) 과 관련된 설계 엔티티의 그룹으로 , 완전한 설계는 하위 부분들로 구성된 상부설계로 이루어진다 .• Component: 완전한 VHDL Design Entity 는 계층적 설계에서 상위 레벨 파일의 일부로 사용될 수 있다 .

Page 48: 디지털 산술과 연산회로

48

• Port: VHDL 설계 엔티티 또는 컴포넌트에서의 입력이나 출력• Component Declaration Statement: VHDL 설계 엔티티에 사용되는 컴포넌트의 I/O 포트 이름을 정의하는 문 .• Component Instantiation Statement: VHDL 컴포넌트의 포트이름을 상위레벨의 VHDL 설계 엔티티의 포트이름 , 내부신호 , 또는 변수들에 사상시키는 문 .• 다음의 슬라이드는 하나의 전가산기 컴포넌트를 사용하여 4- 비트 병렬 이진 가산기 VHDL 설계를 보여준다 .

구조적 VHDL 설계 (2)

Page 49: 디지털 산술과 연산회로

49

Figure 6.13 (4-bit parallel adder with ripple carry)

Page 50: 디지털 산술과 연산회로

50

전가산기 VHDL

ENTITY full_adder IS

PORT( a, b, c_in : IN BIT;

c_out, sum : OUT BIT);

END full_adder;

ARCHITECTURE adder OF full_adder IS

BEGIN

C_OUT <= ((a XOR b) AND C_IN) OR (a AND b);

SUM <= (a XOR b) XOR c_in;

END adder;

• 기본적인 전가산기

Page 51: 디지털 산술과 연산회로

51

계층적 VHDL 설계과정 (1)1. 전가산기에 대한 독립적인 컴포넌트 파일 (full_adder.vhd) 은 컴파일러가 발견할 수 있는 폴더내에 저장되어야 한다 .(말하자면 , 라이브러리 경로상에 )

2. A component declaration statement 은 설계 계층의 최상위 레벨의 파일에 있어야 한다 .

3. A component instantiation statement 은 전가산기 컴포넌트의 각 사례에 대한 것이다 .

4. 컴포넌트를 사용한 설계 엔티티의 일반적인 형식은 :

ENTITY entity_name IS PORT ( input and output definitions);

END entity_name;

ARCHITECTURE arch_name OF entity_name IS component declaration(s);signal declaration(s);

Page 52: 디지털 산술과 연산회로

52

BEGINcomponent instantiation(s);other statements;

END arch_name;

-- component declaration statement templateCOMPONENT __component_name

GENERIC(__parameter_name : string := __default_value; __parameter_name : integer := __default_value);PORT(

__input_name, __input_name : IN STD_LOGIC;__bidir_name, __bidir_name : INOUT STD_LOGIC;__output_name, __output_name : OUT STD_LOGIC);

END COMPONENT;

계층적 VHDL 설계과정 (2)

Page 53: 디지털 산술과 연산회로

53

-- component instantiation statement template__instance_name: __component_name

GENERIC MAP (__parameter_name => __parameter_value , __parameter_name => __parameter_value) PORT MAP (__component_port => __connect_port, __component_port => __connect_port);

계층적 VHDL 설계과정 (3)

Label(instance_name) 는 컴포넌트 사례화문에서는 반드시 사용해야 한다 .

Page 54: 디지털 산술과 연산회로

54

4- 비트 병렬 이진 가산기 Entity

ENTITY add4par IS

PORT( C0 : IN BIT;

A, B : IN BIT_VECTOR(4 downto 1);

C4 : OUT BIT;

SUM : OUT BIT_VECTOR(4 downto 1));

END add4par;

ARCHITECTURE adder OF add4par IS

• 4- 비트 병렬 가산기 I/O Pins

Page 55: 디지털 산술과 연산회로

55

4- 비트 병렬 가산기 컴포넌트 (1-Bit FA)

-- component declaration statement

COMPONENT full-adder -- Previous FA Design File

PORT( a, b, c_in : IN BIT;

c_out, sum : OUT BIT);

END COMPONENT

SIGNAL c : BIT_VECTOR(3 downto 1)

-- Internal signal used for intermediate carries

• 병렬 가산기를 위해 사용된 전가산기 컴포넌트

Page 56: 디지털 산술과 연산회로

56

4- 비트 병렬 가산기

• 컴포넌트로 1- 비트 전가산기를 사용하여 4- 비트 병렬 가산기를 생성한다.• 기본 전가산기는 컴포넌트 사례화를 통해 4번 매핑된다 . 예를들면 , adder1, adder2, 등 .• 연결은 컴포넌트의 각 개체에 대해 포트맵 (Port Map) 으로 정의된다 .

Page 57: 디지털 산술과 연산회로

57

4- 비트 가산기의 Structured Architecture(1)

BEGIN

-- 4 component instantiation statements

adder1: full_adder -- This defines the first component

PORT MAP (a => A(1), b=> B(1), c_in => C0,

c_out => C(1), sum=> SUM(1));

adder2: full_adder -- This defines the second component

PORT MAP (a => A(2), b=> B(2), c_in => C(1),

c_out => C(2), sum=> SUM(2)):

adder3: full_adder -- This defines the third component

PORT MAP (a => A(3), b=> B(3), c_in => C(2),

c_out => C(3), sum=> SUM(3));

• Mapping Type of Architecture

복사 개체를구분하기위해사용해야 함 .

Page 58: 디지털 산술과 연산회로

58

adder4: full_adder -- This defines the fourth component

PORT MAP(a => A(4), b=> B(4), c_in => C(3),

c_out => C4, sum=> SUM(4));

END adder;

-- another component instantiation statement

adder1 : full_adder PORT MAP (a(1), b(1), c0, c(1), sum(1));

adder2 : full_adder PORT MAP (a(2), b(2), c(1), c(2), sum(2));

adder3 : full_adder PORT MAP (a(3), b(3), c(2), c(3), sum(3));

adder4 : full_adder PORT MAP (a(4), b(4), c(3), c4, sum(4));

-- use the correct order originally defined

• Remaining part of the Architecture

4- 비트 가산기의 Structured Architecture(2)

Page 59: 디지털 산술과 연산회로

59

다른 구조• 앞의 예는 4 개의 전가산기 컴포넌트에 직접 매핑한 것이다 .• 다른 방법은 소위 VHDL 에서 Generate Statement 라 불리는 반복 루프 (Repetitive Loop) 를 사용한다 . • 이것은 지수 (Index) I 를 갖는 FOR Loop 와 유사하다 .• 양쪽 모두는 여전히 리플 캐리 가산기이다 .

Page 60: 디지털 산술과 연산회로

60

Generate Statement(1)• 생성문은 하드웨어의 반복되는 부분을 생성하기 위해 사용된다 .-- GENERATE statement template__generate_label:FOR __index_variable IN __range GENERATE __statement; __statement;END GENERATE;

-- 4-bit adder VHDL code using generate statementENTITY add4gen IS

PORT( c0 : IN BIT;

a, b : IN BIT_VECTOR(4 downto 1);

c4 : OUT BIT;

sum : OUT BIT_VECTOR(4 downto 1));

END add4gen;

ARCHITECTURE adder OF add4gen IS

Page 61: 디지털 산술과 연산회로

61

Generate Statement(2)-- COMPONENT declaration

COMPONENT full_adder -- Previous FA Design File

PORT( a, b, c_in :IN BIT;

c_out, sum : OUT BIT);

END COMPONENT

SIGNAL c : BIT_VECTOR(4 downto 0)

BEGIN

c(0) <= c0;

adders :

FOR i IN 1 to 4 GENERATE -- easily expandable by changing the range

adder : full_adder PORT MAP (a(i), b(i), c(i-1), c(i), sum(i);

END GENERATE;

c4 <= c(4);

END adder;

Page 62: 디지털 산술과 연산회로

62

4-bit 가 / 감산기 (Adder/Subtractor)

Page 63: 디지털 산술과 연산회로

63

4- 비트 가 / 감산기 시뮬레이션

Page 64: 디지털 산술과 연산회로

64

오버플로우 (Overflow) 검출1. 부호비트를 체크한다 . - 만약 두 오퍼랜드의 부호비트가 같고 ,

합의 부호비트가 이들과 다르다면 , 오버플로우가 발생한 것이다 .

- 표 6.9 참조 V = SASBSSUM + SASBSSUM

2. 캐리비트를 체크한다 . - V = Cn XOR Cn-1,

- 만약 V=1, 오버플로우 (Fig. 6.22)

Page 65: 디지털 산술과 연산회로

65

Fig. 6.21 오버플로우 검출기를 가진 8- 비트 가산기

Page 66: 디지털 산술과 연산회로

66

BCD 가산기• 병렬 가산기의 출력인 합은 BCD(8421) 숫자를 나타내는 4- 비트의 그룹이다 . • 기본 설계 개념은 A + B 의 합 4 비트를 생성하는 4 비트 병렬 이진 가산기이다 .• 합은 BCD 코드 변환기 (Code Converter) 의 4 비트 BIN 입력에 입력된다 .

Page 67: 디지털 산술과 연산회로

67

Fig. 6.23 BCD 가산기 (1 1/2 Digit Output)

Page 68: 디지털 산술과 연산회로

68

Fig. 6.26 BCD 가산기

Page 69: 디지털 산술과 연산회로

69

-- bcd_add.vhd-- BCD adder, using 2 instances of the component add4par-- See Figure 6.26 for component interconnections.

ENTITY bcd_add ISPORT(

c0 : IN BIT;a, b : IN BIT_VECTOR(4 downto 1);c4 : OUT BIT;sum : OUT BIT_VECTOR(4 downto 1));

END bcd_add;

BCD 가산기 VHDL

Page 70: 디지털 산술과 연산회로

70

ARCHITECTURE adder OF bcd_add IS-- Component declarationCOMPONENT add4parPORT(

c0 : IN BIT;a, b : IN BIT_VECTOR(4 downto 1);c4 : OUT BIT;sum : OUT BIT_VECTOR(4 downto 1));

END COMPONENT;SIGNAL c4_bin : BIT;SIGNAL sum_bin : BIT_VECTOR(4 downto 1);SIGNAL a_bcd : BIT_VECTOR(4 downto 1);SIGNAL b_bcd : BIT_VECTOR(4 downto 1);SIGNAL c0_bcd : BIT;

BCD 가산기 VHDL( 계속 )

Page 71: 디지털 산술과 연산회로

71

BCD 가산기 VHDL( 계속 )

BEGIN

-- Instantiate 4-bit adder (binary sum)

add_bin: add4par

PORT MAP (c0 => c0, a => a, b => b, c4 => c4_bin, sum => sum_bin);

-- Instantiate 4-bit adder (binary-BCD converter)

converter: add4par

PORT MAP (c0 => c0_bcd, a =>a_bcd, b => b_bcd, sum => sum);

-- Connect components

c0_bcd <= '0';

b_bcd <= sum_bin;

a_bcd(4) <= '0';

a_bcd(3) <= c4_bin or (sum_bin(4) and sum_bin(3))or (sum_bin(4) and sum_bin(2));

a_bcd(2) <= c4_bin or (sum_bin(4) and sum_bin(3))or (sum_bin(4) and sum_bin(2));

a_bcd(1) <= '0';

c4 <= c4_bin or (sum_bin(4) and sum_bin(3))or (sum_bin(4) and sum_bin(2));

END adder;

Page 72: 디지털 산술과 연산회로

72

Fig. 6.27 4 ½ Digit BCD Adder

복수자리 (Multiple-Digit) BCD 가산기

Page 73: 디지털 산술과 연산회로

73

BCD 코드 변환기

• Code Converter 는 표 6.10 에서와 같이 4 비트 가산기에 기초하여 설계된다 . • 완전한 설계는 그림 6.26 에서 보여진다.• 코드 변환기에서의 가산기의 Ai 입력은 0000(C4 =0) 또는 0110(C4=1) 로 고정된다 .• 0110 은 오버플로우를 교정한다 .

Page 74: 디지털 산술과 연산회로

74

MAX+PLUS II 에서의 캐리 생성

- Global Project Logic Synthesis1. FAST : A fast synthesis but a large gate

size2. NORMAL : A default synthesis3. WYSIWYG : As synthesis a design

without altering design format as possible

Refer to Fig. 6.30 & Fig. 6.31 => We do not need to design an adder

circuit to have a fast carry function

- EXP(expander buffer) : shared logic expander in the same LAB

(assign menu)

Page 75: 디지털 산술과 연산회로

75

논리합성 (Logic Synthesis) - Normal

Device : EPM7032SLC44-5

Page 76: 디지털 산술과 연산회로

76

논리합성 - WYSIWYG

Device : EPM7032SLC44-5

Page 77: 디지털 산술과 연산회로

77

SUMMARY I

• A Hierarchical VHDL DesignTo use a component in a VHDL design hierarchy, we require a design entity that defines the component declaration and component instantiation statements. For example:ENTITY entity_name IS

PORT ( input and output definitions);END entity_name;

ARCHITECTURE arch_name OF entity_name IScomponent declaration(s);signal declaration(s);

BEGINcomponent instantiation(s);other statements;

END arch_name;

• A Simple Port MapIf all ports of a component are to be used in the same order as in the component definition in the original component design entity, the port map can simply contain the user names in the same order. For example:

Adder1 : full_adder PORT MAP ( a(1), b(1), c0, c(1), sum(1));

Page 78: 디지털 산술과 연산회로

78

SUMMARY II

• A Explicit Port MapIf only a portion of the component ports are to be used or they are not used in the same sequence as they are declared, the port map must be more explicit. For example:

adder1: full_adder

PORT MAP (a => A(1), b=> B(1), c_in => C0,

c_out => C(1), sum=> SUM(1));

• A Generate statement

can be used to instantiate multiple instances of a component. For example:

label:FOR index_variable IN range GENERATE statement;END GENERATE;

• A Synthesis StrategyIf you use ‘normal’ option, MAX+PLUS II will synthesize an adder to minimize carry delays.