포스트

임베디드 스터디 - 조합논리회로 - 4

임베디드 스터디 - 조합논리회로 - 4

이번 글 참고자료:
한빛아카데미, 디지털 논리회로4판
ElectronicsTutorials

A digital logic designer and circuit simulator. Contribute to hneemann/Digital development by creating an account on GitHub.

에러 검출 코드 (Error Detection Code)

데이터의 송수신 과정에서 다음과 같은 요소에 의해 신호에 노이즈가 발생해 데이터에 오류가 발생할 수 있다.

  1. 감쇠 : 신호의 세기가 전송 매체(구리선, 광케이블), 장애물, 반사 등에 의해 약해짐
  2. 지연 왜곡 : 하나의 매체에서 여러 신호가 발생될 때 신호의 속도에 따라 발생함
  3. 상호 변조 : 두 가지 이상의 주파수가 하나의 매체를 공유할 때 섞이면서 발생
  4. 충격 잡음 : 외란(번개, 물리적 충격)에 의해 순간적으로 발생

이러한 노이즈에 의한 데이터 오류를 방지하기 위해 에러 검출 코드를 사용해 데이터의 신뢰성을 확보한다. 이번 글에서는 조합논리회로로 구현할 수 있는 에러 검출 코드를 설명한다.

패리티 발생기 / 검출기

패리티 발생은 원본 데이터에 1비트 패리티를 추가하여 전체 데이터의 1의 개수를 짝수, 혹은 홀수로 맞춘다. 짝수 패리티는 1의 개수를 짝수로, 홀수 패리티는 1의 개수를 홀수로 맞춘다.

8 bit 패리티

마지막 출력단에서 XOR 게이트를 사용하면 짝수 패리티, XNOR 게이트를 사용하면 홀수 패리티이다. 검출기는 동일한 조합논리회로를 사용하여 수신한 데이터의 패리티 비트와 비교하여 오류 여부를 검출할 수 있다. 패리티 발생/검출 IC는 74280 IC 이다. IC에는 9개의 입력단으로 구성되어있는 것을 확인할 수 있는데, 발생기로 사용할 경우에는 원본 데이터 8비트를, 검출기로 사용할 경우에는 패리티비트 포함 총9비트를 입력하면 된다.

에러 정정 코드 (Error Correction Code)

기본 패리티 코드로는 데이터의 에러를 식별할 수 있으나, 어떤 데이터가 잘못됐는지 알 수 없다. 에러 정정 코드는 데이터의 오류를 검출하고, 잘못된 비트를 수정하여 데이터를 복원한다.

해밍 코드 (Hamming Code)

해밍코드는 원본 데이터에서 하나의 비트에 오류가 발생할 경우 오류가 발생한 비트를 정정할 수 있는 코드이다.

해밍코드를 사용하기 위해 추가하는 비트 수는 다음과 같이 지정할 수 있다. $d$는 데이터 비트 수, $p$는 해밍 코드의 추가 비트 수이다.

$2^{p} \geq d+p+1$

지정된 추가 비트 수를 각 패리티 비트 영역에서 짝수 패리티가 나올 수 있게 비트를 추가하면 된다.

$P_{n}$ 패리티는 $P_{n}$을 포함하여 n개의 데이터를 취하고 n개 건너 n개씩 있는 비트를 바탕으로 짝수 패리티를 생성한다.

비트 위치123456789101112
종류$P_{1}$$P_{2}$$D_{1}$$P_{4}$$D_{2}$$D_{3}$$D_{4}$$P_{8}$$D_{5}$$D_{6}$$D_{7}$$D_{8}$
$P_{1}$ 커버      
$P_{2}$ 커버      
$P_{4}$ 커버       
$P_{8}$ 커버       

코드 변환기

2진-Gray 변환기

2진-Gray

  • 불 대수 함수

    $G_{0}=B_{1} \oplus B_{0}$
    $G_{1}=B_{2} \oplus B_{1}$
    $G_{2}=B_{3} \oplus B_{2}$
    $G_{3}=B_{3}$

  • 진리표

    10진수$B_{3}$$B_{2}$$B_{1}$$B_{0}$$G_{3}$$G_{2}$$G_{1}$$G_{0}$
    000000000
    100010001
    200100011
    300110010
    401000110
    501010111
    601100101
    701110100
    810001100
    910011101
    1010101111
    1110111110
    1211001010
    1311011011
    1411101001
    1511111000

Gray-2진 변환기

Gray-2진

  • 불 대수 함수

    $B_{0}=B_{1} \oplus G_{0}$
    $B_{1}=B_{2} \oplus G_{1}$
    $B_{2}=B_{3} \oplus G_{2}$
    $B_{3}=G_{3}$

  • 진리표

    그레이코드 값$G_{3}$$G_{2}$$G_{1}$$G_{0}$$B_{3}$$B_{2}$$B_{1}$$B_{0}$
    000000000
    100010001
    200100011
    300110010
    401000111
    501010110
    601100100
    701110101
    810001111
    910011110
    1010101100
    1110111101
    1211001000
    1311011001
    1411101011
    1511111010

BCD-3초과 코드

3초과 코드란 BCD코드에 연산에 $+0011_{(2)}$를 더한 것과 같은 코드이다. 3초과 코드는 BCD에 비해 연산 과정에서 이점을 갖고 있다.

  1. 비트를 반전 하는 것만으로도 (10진수에서의)9의 보수를 얻을 수 있으므로, 감산에 유용하다.
  2. MSB가 4 이하일 때 0, 5 이상일 때 1이 되므로, 반올림에 유용하다.
  3. 모든 비트가 동시에 0이 되는 일이 없으므로, 단선 등에 의한 신호두절을 구별할 때 이용할 수 있다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.