디지털 산술과 연산회로.

Slides:



Advertisements
Similar presentations

Advertisements

Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
Introduction 2007년 2학기.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Sources of the Magnetic Field
Dept. of Electronics & Info. Eng. Prof. Jongbok Lee
ASIC의 개요 ASIC(Application Specific Integrated Circuit) 특정 용도 주문형 집적회로
디지털 시계 설계.
IT Application Development Dept. Financial Team May 24, 2005
Design of Digital Clock (디지털 시계의 설계)
기본 컴퓨터 프로그래밍 Lecture #6.
디지털 시스템 2010년 1학기 교수: 송상훈 연구실: 율곡관 603-B
Computer System Architecture
7 조합논리회로 IT CookBook, 디지털 논리회로.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
4 컴퓨터에서 활용되는 디지털 논리회로 IT CookBook, 컴퓨터 구조와 원리 2.0.
순차로직 개요.
32비트 캐리 예측 덧셈기(CLA) RCA(Ripple Carry Adder)
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
가산기 설계.
3 디지털 코드 IT CookBook, 디지털 논리회로.
3장 MPU 내부구조 Slide 1 (of 28).
VHDL의 기본 Lecture #5.
Verilog HDL 이론.
디지털 시스템 설계(3).
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
신호등 제어기 차량의 흐름에 따라 신호등의 신호를 제어하는 장치 신호등 제어기의 입출력 신호
To Hear will be forget To see will get memory again To do will be know.
PXA255-FPGA 장비 개요 및 실습 Lecture #9.
프로그래밍언어론 2nd edition Tucker and Noonan
Computer System Architecture
PXA255-FPGA 장비 계요 및 실습 Lecture #9.
MAX+PLUS II 설치 및 디지털 시스템의 설계 방법
VHDL Package and Sub program
논리회로 설계 기초 (1) Lecture #1.
Ch2-2. VHDL Basic VHDL lexical element VHDL description
존슨카운터의 동작을 설명·설계할 수 있다 링카운터의 동작을 설명·설계할 수 있다
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
학습 목표 반가산기, 전가산기, 고속가산기의 동작을 이해하고 설계하는 방법을 알아본다.
1장. 디지털 논리 회로 다루는 내용 논리 게이트 부울 대수 조합 논리회로 순차 논리회로.
하드웨어 구현 - A/D 변환기(A/D converter) - 샘플링 주파수(Sampling frequency)
VHDL의 기본 Lecture #4.
                                  3장 가산회로 게이트를 이용한 2진 가산회로의 동작 원리 특성 1 비트 반 가산기, 전 가산기, 4비트 전 가산기 회로.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
컴퓨터 시스템의 개요.
Chapter 2. Finite Automata Exercises
제 2장 컴퓨터의 등장과 발전.
FSM 설계.
Unit 1 Number Systems and Conversion (수의 체계와 변환)
Chapter 03. 디지털 코드.
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Programmable Logic Device
Chapter 4 The Von Neumann Model.
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
논리회로 설계 및 실험 3주차.
Introduction to Programming Language
Internet Protocol Objectives Chapter 8
시스템 분석 및 설계 글로컬 IT 학과 김정기.
가산기 설계.
디 지 털 공 학 한국폴리텍V대학.
제5강 처리 장치 2.
디지털회로설계_강의안5 7. 가산기와 감산기 회로.
Signature, Strong Typing
Signature, Strong Typing
Signature, Strong Typing
점화와 응용 (Recurrence and Its Applications)
DEGITAL LOGIC CIRCUIT Term Project – 4 bit ALU.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
제03장 정보의 표현.
Presentation transcript:

디지털 산술과 연산회로

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

디지털 산술 부호화 이진수: 부호 (+/-) 를 한 비트 (일반적으로 MSB), 나머지 비트를 크기로 하는 고정된 길이의 이진수. 무부호 이진수: 부호비트를 규정하지않는 고정된 길이의 이진수. 모든 비트는 크기이고 부호는 양(+)으로 고려된다.

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

기본 규칙(무부호) One Bit 무부호 가산 0 + 0 = 0 0 1 + 0 = 0 1 1 + 1 = 1 0 0 + 0 = 0 0 1 + 0 = 0 1 1 + 1 = 1 0 1 + 1 + 1 = 1 1 C_IN A B C_OUT SUM

이진 가산 예 이진 가산 1 Carry to next 1 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 1 0 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

감산 감산 X = A – B에서, A=피감수(Minuend), B=감수(Subtrahend), X =차(Difference). 감산은 마이크로프로세서에서 사용하는 2의 보수 가산과 같은 많은 형태가 있다. (PC에서 처럼)

감산 규칙 1비트 이진 감산 0 - 0 = 0 0 1 - 0 = 0 1 1 - 1 = 0 0 10 - 1 = 0 1 BORROWIN A B

이진 감산 예 빌림이 있는 이진 감산 1110 110(10) Borrow Stage -1001 100 1 010 1 -1001 100 1 010 1 10000 0111(10) Borrow ripples to LSB - 101 10 1 0101 1

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

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

참 크기 형태 5 Bit Numbers/ Negative = S=1 +25 = 011001 sign bit = MSB = S = 0 -25 = 111001 Same as +25 with S=1 -12 = 101100 +12 = 001100 True magnitude

1의 보수 형태 8-Bit 1’s Complement (Negative = S = 1) 57 = 0011 1001 57 = 0011 1001 -57 = 1100 0110 All Bits Inverted 72 = 0100 1000 -72 = 1011 0111

2의 보수 형태 MPU(PC) 연산에서 사용 +72 = 01001000 +57 = 00111001 -72 = 10110111 + 1 10111000 +57 = 00111001 -57 = 11000110 + 1 10111111

부호화 이진 가산(8-Bit) 부호화 가산(Positive S = 0) +30 = 0001 1110 +30 = 0001 1110 +75 = 0100 1011 +105= 0110 1001 부호비트를 갖는 이진 가산과 유사

1의 보수에 의한 감산 1의 보수를 더하고 캐리를 더함 +80 = 0101 0000 (+80) = 0101 0000 +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’ 가산방법을 사용

2의 보수 감산 피감수에 2의 보수를 가산 +80 = 0101 0000 0101 0000 +65 = 0100 0001 +1011 1111 -65 = 1011 1110 +1 1 0000 1111 Discard Carry Bit from result

음수 결과 만약 감산을 위해 참 크기 형식으로 하면, 결과가 부정확해짐.(p228 참조) 만약 결과가 1의 보수 혹은 2의 보수로부터 얻고, 결과가 음(S=1) 이면, 크기는 결과를 보수화 하여 얻어진다.

음수 결과 예 2’s Complement Negative Result (65-80) +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.) 결과의 부호비트가 1이면 그것은 음수이고 2의 보수 형태이다.

부호화 수의 범위 N개의 크기비트를 갖는 양수의 범위는 0 to 2N - 1. 8-Bit 예 8 Bit Number Range is -2N <= X <= +2N - 1 or -128 to +127

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

잘못된 음수 오버플로우 8-Bit Addition +75 = 0100 1011 +96 = + 0110 0000 +75 = 0100 1011 +96 = + 0110 0000 1010 1011 Result is Negative (False) 두 양수를 더해서 결과가 +127 보다 클 경우 오버플로우가 발생한다.

잘못된 양수 오버플로우 8-Bit 두 음수의 가산 -80 = 1011 0000 (2’s comp. form) 0110 1111 Result is Positive(False) 두 음수의 가산결과, 8-비트 수의 범위(-128)를 초과하여 그릇된 양수가 얻어짐.

16진 가산 0에서 9 숫자의 범위를 갖는 십진 가산과 유사함. 예 F + 1 = 10 F + F = 1E

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

BCD 예 (4987)10 = 0100 1001 1000 0111 (BCD) (84)10 = 1000 0100 각 자리는 4-Bit 이진 그룹이다.

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

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 보수)

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

그레이코드 변환 Binary-to-Gray code conversion MSB in the Gray code is the same as MSB in the binary number. 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 MSB in the Binary code is the same as MSB in the Gray code. Add each binary code bit generated to the Gray code bit in the next adjacent position. Discard carries. (For 4-bit code Ex) 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)

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

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

반가산기 가산 이진 두 비트 가산규칙 Figure 6.1 Half Adder 0 + 0 = 00 0 + 1 = 01 1 + 1 = 10 Figure 6.1 Half Adder

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

전가산기 반가산기에 CIN 을 더한다. 식은 다음과 같이 수정된다. C = ((A xor B) and CIN) or (A and B). S = A xor B xor CIN. 전가산기는 두개의 반가산기와 OR 게이트로 구성될 수 있다.

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

병렬 가산기 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

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

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

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

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

4-bit Fast Carry Circuit Fig. 6.12

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

2의 보수 감산기(1) Fig. 6.14 Ex) 0101-0011 2’s comp. of “0011” 0011 +1 1101 0101(+5) + 1101(-3) 1 0010(+2) discard carry

2의 보수 감산기(2) 차 = A - B = A + (!B + 1). 이러한 동작은 B1 ~ BN 을 반전하고, LSB단의 CIN을 +5V에 연결한 N-비트 병렬 가산기에서 수행될 수 있다. 회로는 가산 또는 감산 동작을 선택적으로 수행하기 위해 수정될 수 있다. Figure 6.16

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

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

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

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

전가산기 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;

계층적 VHDL 설계과정(1) 전가산기에 대한 독립적인 컴포넌트 파일(full_adder.vhd)은 컴파일러가 발견할 수 있는 폴더내에 저장되어야 한다.(말하자면, 라이브러리 경로상에) A component declaration statement 은 설계 계층의 최상위 레벨의 파일에 있어야 한다. A component instantiation statement 은 전가산기 컴포넌트의 각 사례에 대한 것이다. 컴포넌트를 사용한 설계 엔티티의 일반적인 형식은: 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);

계층적 VHDL 설계과정(2) BEGIN component instantiation(s); other statements; END arch_name; -- component declaration statement template COMPONENT __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 설계과정(3) -- 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); Label(instance_name)는 컴포넌트 사례화문에서는 반드시 사용해야 한다.

4-비트 병렬 이진 가산기 Entity 4-비트 병렬 가산기 I/O Pins 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-비트 병렬 가산기 컴포넌트(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

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

4-비트 가산기의 Structured Architecture(1) Mapping Type of Architecture 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)); 복사 개체를 구분하기위해 사용해야 함.

4-비트 가산기의 Structured Architecture(2) Remaining part of the Architecture 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

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

Generate Statement(1) 생성문은 하드웨어의 반복되는 부분을 생성하기 위해 사용된다. -- GENERATE statement template __generate_label: FOR __index_variable IN __range GENERATE __statement; END GENERATE; -- 4-bit adder VHDL code using generate statement ENTITY 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

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;

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

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

오버플로우(Overflow) 검출 1. 부호비트를 체크한다. - 만약 두 오퍼랜드의 부호비트가 같고, 합의 부호비트가 이들과 다르다면, 오버플로우가 발생한 것이다. - 표 6.9 참조 V = SASBSSUM + SASBSSUM 2. 캐리비트를 체크한다. - V = Cn XOR Cn-1, - 만약 V=1, 오버플로우(Fig. 6.22)

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

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

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

Fig. 6.26 BCD 가산기

BCD 가산기 VHDL -- bcd_add.vhd -- BCD adder, using 2 instances of the component add4par -- See Figure 6.26 for component interconnections. ENTITY bcd_add IS PORT( 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(계속) ARCHITECTURE adder OF bcd_add IS -- Component declaration COMPONENT add4par PORT( 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(계속) 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;

복수자리(Multiple-Digit) BCD 가산기 Fig. 6.27 4 ½ Digit BCD Adder

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

MAX+PLUS II 에서의 캐리 생성 - Global Project Logic Synthesis 1. FAST : A fast synthesis but a large gate size 2. NORMAL : A default synthesis 3. 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)

논리합성(Logic Synthesis) - Normal Device : EPM7032SLC44-5

논리합성 - WYSIWYG Device : EPM7032SLC44-5

SUMMARY I A Hierarchical VHDL Design To 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 IS component declaration(s); signal declaration(s); BEGIN component instantiation(s); other statements; END arch_name; A Simple Port Map If 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));

SUMMARY II A Explicit Port Map If 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 Strategy If you use ‘normal’ option, MAX+PLUS II will synthesize an adder to minimize carry delays.