790 likes | 1.68k Views
디지털 산술과 연산회로. 단원목차. 1. 디지털 연산 2. 부호화 이진수 3. 부호화 이진 연산 4. 16 진 연산 5. 수와 알파뉴메릭 코드 6. 이진 가산기와 감산기 7. BCD 가산기 8. MAX+PLUS II 에서의 캐리생성. 디지털 산술. 부호화 이진수 : 부호 (+/-) 를 한 비트 ( 일반적으로 MSB), 나머지 비트를 크기로 하는 고정된 길이의 이진수 .
E N D
단원목차 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 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 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). • 만약 A < B이면 빌림 비트가 요구된다. • 감산은 마이크로프로세서에서 사용하는 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 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 = 1100 0110 All Bits Inverted 72 = 0100 1000 -72 = 1011 0111
2의 보수 형태 • MPU(PC) 연산에서 사용 +72 = 01001000 -72 = 10110111 + 1 10111000 +57 = 00111001 -57 = 11000110 + 1 10111111
부호화 이진 가산(8-Bit) • 부호화 가산(Positive S = 0) +30 = 0001 1110 +75 = 0100 1011 +105= 0110 1001 부호비트를 갖는 이진 가산과 유사
1의 보수에 의한 감산 • 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’가산방법을 사용
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. • N개의 크기비트를 갖는 음수의 범위는 -1 to -2N. • 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 1010 1011 Result is Negative (False) 두 양수를 더해서 결과가 +127 보다 클 경우 오버플로우가 발생한다.
잘못된 양수 오버플로우 • 8-Bit 두 음수의 가산 -80 = 1011 0000 (2’s comp. form) -65 = +1011 1111 (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 xorb2 • 1 1 1 0 1 (Gray) g1 = b2 xorb1 • g0 = b1 xorb0) • 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 xorg2 • b1 = b2 xorg1 • 1 0 0 1 0 (Binary) b0 = b1 xorg0)
ASCII 코드 • American Standard Code for Information Interchange. • 데스트 문자, 수, 구두점, 특수제어를 위해 7-비트의 수문자 코드 • 확장된 8-bit 형태가 더 넓게 사용된다. • Table 6.5 참조
이진 가산기 • Half Adder(HA): • 두 비트를 가산하여 합과 캐리를 출력하는 회로. • Full Adder(FA): • 다른 반가산기 또는 전가산기로부터 캐리비트와 두 오퍼랜드 비트를 더하여 합과 캐리를 출력하는 회로.
반가산기 가산 • 이진 두 비트 가산규칙 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 1100(1’s) +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 설계를 보여준다.
전가산기 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;