arithmetic circuit

David8·2022년 4월 16일
0

논리설계

목록 보기
3/8

1, 2의 보수

  1. 보수의 필요성
    1. 컴퓨터 내부에서는 사칙 연산을 할 때 가산기(adder)만 사용하기 때문에 뺄셈을 덧셈으로 변환하여 계산

      1. ex) a-b = a+(-b)
      2. ex) 7-6 = 7+(-6) = 7+(-(10-4)) = 7+4-10

  2. sign and magnitude --> 아래 3개의 경우는 음수에 대한 표현을 어떻게 나타내는가에 대한 것임!, 양수에 대해서는 같은 모두 같은 표현
    1. 음수를 이진수로 나타낸 것
      1. ex) 1010 --> -2를 의미 ==> sign 표현, 1's, 2's complement는 모두 같은 2진수 비트를 보고 다른 값으로 해석 할 수 있음!!
  3. 1의 보수 --> 1, 2의 보수는 그 자체가 값이 아니라 어떤 수의 보수이므로 해당하는 값을 찾기 위해서는 원래의 수의 형태를 찾아야 함(1. 1로 시작이면 음수 2. 크기는 컴플리먼트를 취하는 원형을 찾아줌)
    1. 각 자리의 합을 1로 만들어줌
      1. ex) 1010 --> 0101
  4. 2의 보수 --> 보수를 취하라는 의미가 아니라 보수의 형태임을 의미
    1. 1의 보수에 1을 더한 값 --> 100의 보수 구하는 방식을 생각해보면 알 수 있음
      1 ex) 1011 --> 0101
  5. 추가
    1. sign extension
      1. 4bit -> 8bit
        1. 4bit 부호를 8비트 앞 4비트로 나타내는 것
    2. zero extension
    3. 오버플로우 발생 --> 즉시 중단
      1. 오버플로우: msb에 들어오는 carry와 나가는 carry가 다른 경우 overflow 발생
      2. unsigned의 경우는 overflow 발생하면 carry의 관계성을 통해 감지 가능
    4. 2진수에서도 뺄셈시 컴퓨터는 2의 보수를 사용하지만 사람은 그냥 연산하듯이 뺄셈 가능

gray code

  1. 1비트만이 차이가 나게 표기한 2비트 표기법 중 하나임

  2. 바이너리 코드 --> 그레이 코드: msb는 그대로 내리고, 다음 값부터 이전 값이랑 xor연산 진행

    1. 10진수에서는 그레이 코드로 바로 변환 불가: 10 -> binary code -> gray code

  3. 그레이 코드 --> 바이너리 코드: msb는 그대로 내리고, 다음 값을 변환된 값이랑 xor연산 진행

error detection code

  1. parity bit(동등 비트): 전체 코드에서 1의 개수로 에러 여부 확인
    1. even parity: 1의 개수를 짝수로 만들고 판별, P를 통해서 개수 맞춤 --> 1의 개수가 odd개 들어오면 보낸 값과 다른 것이므로 에러 판별!
      1. parity checker와 generator의 역할이 다름
    2. odd parity: 1의 개수를 홀수로 만들고 판별

half adder & full adder

  1. half adder
    1. c = x*y
    2. s = x⊕y
  2. full adder
    1. c = xy+yz+xz
    2. s = x⊕y⊕z

3-Bit odd generator

  1. p = [x⊕y⊕z]' = x⊕y⊙z = x⊙y⊕z
  2. 3-Bit even generator --> x⊕y⊕z

3-Bit odd checker

  1. p = [x⊕y⊕z⊕p]' = x⊙y⊙z⊙p
  2. 3-Bit even checker --> x⊕y⊕z⊕p

0개의 댓글