[컴퓨터 구조] 01. 4비트 계산기

Sonic_Velog·2022년 3월 27일
0

[CS] 컴퓨터 구조

목록 보기
1/1
post-thumbnail

4비트 계산기 선행 지식

  • 논리회로
  • 반가산기 : 논리회로를 이용해 만들 수 있음
  • 전가산기 : 반가산기를 이용해 만들 수 있음
  • 4비트 계산기 : 전가산기를 이용해 만들 수 있음

논리회로

Buffer

  • 입력 값을 아무처리 없이 그대로 출력함
  • 0 => 0, 1 => 1

NOT 게이트

  • 입력 값의 반전 값을 출력함
  • 0 => 1, 1 => 0

AND 게이트

  • 입력 값이 모두 1이어야 1을 출력함
  • 입력 값중 하나라도 0이면 0을 출력함
  • [0,0] => 0, [0,1] => 0, [1,0] => 0, [1,1] => 1

OR 게이트

  • 입력 값이 모두 0인 경우에만 0을 출력함
  • 입력 값중 하나라도 1이면 1을 출력함
  • [0,0] => 0, [0,1] => 1, [1,0] => 1, [1,1] => 1

NAND (NOT AND) 게이트

  • AND 게이트의 출력 값을 반전
  • [0,0] => 1, [0,1] => 1, [1,0] => 1, [1,1] => 0

NOR (NOT OR) 게이트

  • OR 게이트의 출력 갑을 반전
  • [0,0] => 1, [0,1] => 0, [1,0] => 0, [1,1] => 0

XOR (EXCLUSIVE OR) 게이트

  • 베타적인 OR게이트로 입력값이 모두 0이거나 모두 1일때만 0을 출력하고
  • 입력값중 하나라도 1이면 1을 출력 (모두 1일때 제외)
  • [0,0] => 0, [0,1] => 1, [1,0] => 1, [1,1] => 0

XNOR (NOT EXCLUSIVE OR) 게이트

  • XOR 게이트의 출력 값을 반전
  • [0,0] => 1, [0,1] => 0, [1,0] => 0, [1,1] => 1
[A,B]ANDORNANDNORXORXNOR
[0,0]001101
[0,1]011010
[1,0]011010
[1,1]110001

기호

반가산기

  • 1비트의 2진수 2개를 더한값 Sum과 자리 올림수 Carry를 구하는 계산기

반가산기의 원리

  • 1비트의 2진수 2개를 더하는 경우의 수를 살펴보면 아래와 같다
ABSumCarry
0000
0110
1010
1101
  • Sum은 A와B를 XOR 게이트를 이용해 출력한 값이 됨
  • Carry는 A와B를 AND 게이트를 이용해 출력한 값이 됨

반가산기 회로

전가산기

  • 올림수 CarryIn과 1비트 2진수 2개 총 3개의 1비트 2진수를 더한값 Sum과 자리 올림수 CarryOut을 구하는 계산기

전가산기의 원리

  • 2진수를 더하는 방식은 A와 B를 더하고 이전 자리수에서 올라온 CarryIn 값을 더하는 것이 전부이다.
  • 1비트의 2진수 3개를 더하는 경우의 수를 살펴보면 아래와 같다.
ABCarryInSumCarryOut
00000
01010
10010
11001
00110
01101
10101
11111
  • Sum은 A와B를 반가산기를 이용해 나온 Sum과 CarryIn을 다시 한번 반가산기를 이용해 출력해 얻은 Sum 값이 됨
  • 위의 반가산기를 이용해 출력된 Carry값들을 OR 게이트를 이용해 출력한 값이 CarryOut 값이 됨

전가산기 회로

4비트 계산기

4비트 계산기 원리

  • 각 비트마다 전가산기를 이용해 sum과 carryOut을 구함, 이때 두번째 자리 계산 부터는 이전 계산의 carryOut값을 carryIn값으로 사용해 1비트 3개의 덧셈(전가산기)을 이용해 계산함
  1. 전가산기 4개를 이용해 만들 수 있음
  2. 4비트의 2진수 2개의 첫번째 자리수를 각각 첫번째 전가산기 A, B로 넣음 (carryIn은 첫자리이기 때문에 0으로 설정)
  3. (2)번의 결과로 나온 Sum을 결과값의 첫번째 비트에 넣고, carryOut 값은 두번째 전가산기의 carryIn 값으로 넣음
  4. 다음 입력 값 2개의 두번째 자리수를 두번째 전가산기 A, B로 넣음
  5. (3), (4)을 끝 자리까지 반복함

4비트 계산기 회로

profile
모든것이 궁금한 신입 프론트 개발자 일지

0개의 댓글