8 장연산논리회로
가산기 반가산기와전가산기 반가산기 (Half Adder, HA) 8. 기본가 / 감산기 비트의 개 진수를더하는논리회로. 개의입력과출력으로구성. 개입력은피연산수 와연산수 y 이고, 출력은두수를합한결과인합 S(sum) 과올림수 C(carry) 를발생하는회로. : 피연산수 : 연산수 : 합 y C S y S C 올림수
올림수 전가산기 : 연산수 : 합 y z 전가산기 (Full Adder, FA) 하위비트에서발생한올림수를포함하여 개의입력비트들의합을구하는조합논리회로. 개의입력과 개의출력으로구성됨. 입력 - 피연산수, 연산수 y, 하위비트에서발생한입력올림수 z 출력 - 합 S(sum), 올림수 C(carry) : 하위비트올림수 S = (,,4,7) = 'y'z + 'yz'+ y'z' + yz = y z C = (,5,6,7) = 'yz + y'z+ yz' + yz = y + z + yz = y + ( y)z C S HA + OR
감산기구성방법 감산기 방법 : 연산수의보수를피연산수와더하여구하는방법 ( 의보수사용 ) 방법 : 피연산수에서연산수를빼서구하는방법. 반감산기 (Half Subtractor, HS) : 개의 진수감산입력 피감수, 감수 y 동작 -y 출력 - 차 D (difference), 빌림수 B(Borrow) y B D 4
전감산기 (Full Subtractor, FS) 입력 - 피연산수, 연산수 y, 빌려준빌림수 z 동작 : -y-z 출력 - 차 D, 빌림수 B y z B D D = (,,4,7) = 'y'z + 'yz'+ y'z' + yz = y z B = (,,,7) = 'y'z + 'yz'+ 'yz + yz = 'y + 'z + yz = 'y + ( y)'z HS + OR 5
직렬가산기 8. 진가산기 한개의전가산기, 피가수 i 와가수 y i 을각각저장하는메모리필요 한자리씩오른쪽으로자리이동할수있는오른쪽자리이동 (shift right) 및올림수출력 C i+ 을저장하는 비트의플립플롭, 합을저장하는메모리를사용하여회로를구성 단점 : 회로구성은간단하지만연산이끝나기까지비트길이만큼의실행시간이소요 slow adder, low cost 회로도 y C in FA 올림수 Cout S 6
병렬가산기 병렬가산기- n개의 FA를사용하여 n 비트병렬덧셈수행 4 비트병렬가산기 4개의전가산기를사용 하위비트 FA에서생성되는올림수출력은다음상위비트 FA의올림수입력으로연결 ripple carry adder y y y y C C C FA FA FA FA C C 4 S S S S 예 ) 4- 비트병렬가산기의다음입력에의한각 FA 출력의합과캐리는? y C i S C O y C i S C O y C i S C O C O y S overflow 7
Look Ahead Carry (LAC) generator 회로 캐리에대한짧은지연시간을생성하는회로 부가적인회로가필요 fast adder, high cost 4비트병렬가산기의 LAC 회로설계 비트 full adder P i = A i B i : carry propagate G i = A i B i : carry generate S i = P i C i C i+ = G i + P i C i C = G + P C C = G + P C = G + P (G +P C ) = G + P G + P P C C 4 = G + P C = G + P G + P P G + P P P C 모든 Ci 를 단논리 SOP 로구현 동일한지연시간 8
IC 병렬가산기 748 : 4 비트이진전가산기, 전원핀 5, 접지핀 748A, 74LS8A : 4 비트이진전가산기 with LAC 748, 74LS8 : 748 의 pin 을표준형으로배치 74HC8 : 고속 CMOS 버전, TTL 양립 병렬가산기의 cascading 연결 개이상의가산기를보다큰 진수덧셈을위해연속연결 8 비트병렬가산기회로 9
BCD 가산기 두개의 BCD 수를더하여 BCD 로결과를출력하는회로 두 BCD 합의최대결과 : 9() + 9 + ( 이전단캐리 ) = 8 이진가산기를이용하여합의결과가 9 이하이면그대로 9 이상이면 correction Binary 덧셈결과와 BCD 와의관계 - BCD 보정이필요한경우 : X= X = S 4 + S S + S S 이경우, 이진합의결과에 (6) 을더하여야한다.
이진가산기를사용한 BCD 가산기 BCD 가산기구성회로 () 두 BCD A A A A 와 B B B B 의합 S 4 S S S S 를위한 4 비트가산기 () 보정캐리 X 를구하기위한논리회로 () X = 일때 () 에 을더하여 BCD 결과 을생성하는 4 비트가산기 디지트 진수를덧셈하기위한종속연결 BCD 가산기
ALU IC ALU (Arithmetic Logic Unit) 논리및산술연산을수행 74LS8/HC8 ALU ALU 의확장 : 개의 748 를사용한 8 비트 adder 748 : 96 개의논리및산술연산을하는 ALU
병렬 진가산기 / 감산기 8. 진감산기 진수의뺄셈 : 보수법을이용하여연산 병렬가산기에사용하는경우 : 보수는 y를 NOT 연산한값과병렬가산기의올림수에논리 을입력하여 의보수를구한다. 4-비트병렬가산 / 감산논리회로 y y y y S FA C FA C FA C FA C C 4 S S S S S = 가산기 S = 감산기 + y + y' + 의보수뺄셈
8.4 진곱셈기 진수곱셈 : 진수의곱셈과같은방법으로계산 -비트승수와피승수를곱하는경우 : 4개의 AND 게이트와 개의반가산기가필요, 만약부분곱이많은비트로이루어진경우는올림수가발생할수있으므로전가산기를사용. 피승수가 m 비트이고승수가 n 비트이면, (m*n) 개의 AND게이트와 n 비트의 진병렬가산기가 (m-) 개필요하며, (m+n) 비트의곱셈결과가구해진다. 비트곱셈기과정 처음의부분곱은피승수의최하위비트인 와y, y 을곱하게되며, 두개의 비트곱셈은두비트모두가 이면결과가 이고, 두비트중 비트라도 이면결과가 이므로 AND 연산 y 두번째부분곱은 과y, y 을곱하여 y 한자리만큼왼쪽으로자리이동한다. y y y y y y HA HA y y S S S S S S S S 4
4 비트 X 비트 multiplier B B B B A A A BA BA BA BA BA BA BA BA BA BA BA BA C6 C5 C4 C C C C 5
8.5 진나눗셈기 MQ 레지스터사용 ( 곱셈, 나눗셈에서동시사용 ) M: 곱셈을할때승수저장, Q: 나눗셈을할경우몫저장 MQ 레지스터를리셋 (reset, 으로만듬 ) 시킨다. 젯수는젯수레지스터에피젯수는누산기에기억시킨다. 젯수와피젯수의부호에의해몫의부호를결정한후, 모든레지스터의부호비트는리셋시킨다. 4 젯수와피젯수의크기를비교한후피젯수가크면나눗셈을계속하고, 젯수가크면나누지않는다. 5 누산기와 MQ 레지스터의내용을왼쪽으로 비트시프터시킨다. 6 젯수와누산기내용의크기를비교하여젯수가작으면누산기로부터젯수를뺀후 MQ 레지스터의가장오른쪽비트에 을넣는다. 만일젯수가크면빼지않는다. 6
진나눗셈기 ( 계속 ) 7 누산기와 MQ 레지스터의내용을함께왼쪽으로 - 비트시프트시킨다. 8 MQ 레지스터에 n- 비트의몫이나타날때까지위의 4 ~ 8 을반복. 9 MQ 레지스터의부호비트에몫의부호비트를넣으면 MQ 레지스터의내용은몫이되어나눗셈은끝난다. 부호 젯수레지스터 MSB LSB Y Y Y Y 몫의부호 FS FS FS FS 오른쪽시프트 피젯수 X X X 부호 MSB 누산기 X LSB Q Q Q MQ 레지스터 7
8.6 크기비교기 크기비교기 (magnitude comparator) XOR 또는 XNOR 을이용하여두수가같은지다른지를비교하여결정 XOR의경우두입력값이같으면논리, 다르면논리 이출력되고 XNOR의경우두입력값이같으면논리, 다르면논리 이출력되는특성을이용. -비트비교기의논리회로 y X=Y y 8
9 4 비트비교기회로 두수의비교논리 B B B B B A A A A A = =,,,). ( equivalent, two number are - th bits of When = + = i A B A B i i i i i i ) ( ) ( ) ( B A A B A B B A A B B A A B A B B A A B B A = = + + + = < + + + = >
7485 4 비트비교기 8 개의비교입력, 확장을위한 개의 cascading 입력 개의출력 비교기확장 : Cascading 입력사용 높은자리의두수가먼저비교되어서로같을때는낮은자리의수가비교된다.