반응형

3. BCD, 디지털 코드, 패리티 방법



BCD코드


BCD코드를 8421코드라고 하고 10진수 한 자리(0~9)를 2진수 4자리(0000~1001)로 표현한 것이다. 따라서 2진수 1010(10), 1011(11), 1100(12), 1101(13), 1110(14), 1111(15)은 무효코드(invalid code)이고 사용하지 않는다.


다음의 표는 10진수에 대한 여러 2진 코드들이다.


각 자리에 1이 있는 경우, 자리수들의 합에 의해 수가 결정된다(가중코드). 예를 들어 위의 84-2-1코드에서$$1011=8\times1+4\times0+(-2)\times1+(-1)\times1=5$$이다.

10개의 수(0~9) 중에서 4, 5를 기준으로 위쪽 수와 아래쪽 수가 보수관계에 있는 코드를 자기보수 코드라고 한다. 위의 표의 Excess-3 코드는 자기보수 코드이다.(아래 표 참고)

0(0011) 

1(0100) 

2(0101) 

3(0110) 

4(0111) 

9(1100) 

8(1011) 

7(1010) 

6(1001) 

5(1000) 

*Excess-3 코드는 BCD코드에 3(0011)을 더한 코드이다.


BCD코드와 10진수 간의 변환은 2진수처럼 하면 된다.

BCD코드의 덧셈은 다음과 같다.

BCD코드의 덧셈은 2개의 BCD코드를 2진수처럼 더하되 자릿수의 합이 모두 9 이하이면 그대로 두고, 만약 어느 자릿수가 10을 초과하면 6(0110)을 더하고 캐리가 발생하면 상위 자리에 더한다.(아래 그림 참고)


디지털 코드


디지털 코드에는 그레이 코드(gray code)와 아스키 코드(ASCII code)가 있다.


그레이 코드는 비가중, 비산술 코드로 이웃하는 수와 단지 한자리(1비트)가 다른 코드이다.

(4비트 그레이 코드와 2진수, 10진수 간의 관계)


2진수에서 그레이 코드로의 변환은 MSB를 제외한 나머지 부분에서 인접한 자릿수가 같으면 0, 다르면 1이다.

그레이 코드에서 2진수로의 변환은 MSB를 제외한 나머지 부분에서 0이면 같고, 1이면 다르다.


다음의 그림은 3비트 샤프트 위치 인코더의 구조이다.

왼쪽은 2진수(코드)로 검출기의 출력은 000→001→010→011→100→101→110→111의 순으로 진행되고

오른쪽은 그레이 코드로 검출기의 출력은 000→001→011→010→110→111→101→100의 순으로 진행된다.

여기서 빔이 반사 섹터에 있을 때 출력은 1이고, 빔이 반사되지 않는 섹터에 있을 때 출력은 0이다. 


MSB의 빔의 위치가 약간 앞으로 이동되어 있을 때, 2진수에서 111에서 000으로 바뀔 때, 011의 오류가 발생하나 그레이 코드에서는 한 비트씩만 다르기 때문에 이런 오류가 발생하지 않는다(100에서 000으로 천이할 때, MSB의 빔의 위치가 불일치하더라도 000으로 바뀐다).


영문-숫자 코드(alphanumeric)는 숫자(number), 알파벳(alphabetic letter)을 표현하는 코드이다. 아스키(ASCII, American Standard Code for Information Interchange)는 모든 컴퓨터, 전자장비에서 보편적으로 사용되는 영문-숫자 코드이고 1개의 문자를 8비트로 나타내는데 MSB는 패리티 비트이고 나머지 7비트로 문자를 표현한다. 따라서 최대 128(\(=2^{7}\))개의 문자까지 표현가능하다.

(아스키 코드 표)


예를 들어

이다.


IBM에서는 앞의 ASCII문자 외에도 추가로 128개의 ASCII문자를 사용한다(비공식적으로 표준화 되어있다). 추가된 ASCII문자는 16진수 80부터 FF까지의 8비트 코드 그룹으로 구성되어 있고, 비영어권 문자(한국어, 중국어, 일본어, 러시아어 등등) 및 화폐기호, 그리스 문자, 수학 기호, 제도용 문자 등의 확장 기호와 문자를 포함하고 있다.

*유니코드(Unicode)는 국제표준으로 제정된 2바이트 체계의 국제 문자부호 체계(UCS, Universal Code System)이다.


오류 검출을 위해 패리티(parity) 방법을 사용한다. 

패리티 비트는 데이터에 부가적으로 추가하는 비트로 1의 개수(홀수개 또는 짝수개)를 점검해서 패리티 비트에 정보를 저장한다. 

홀수(odd) 패리티는 총 1의 개수(데이터의 1의 개수와 패리티 비트의 1의 합)가 홀수가 되도록 패리티 비트가 갖는 정보를 조정하고, 짝수(even) 패리티는 총 1의 개수(데이터의 1의 개수와 패리티 비트의 1의 합)가 짝수가 되도록 패리티 비트가 갖는 정보를 조정한다.

(BCD코드에 부가된 패리티 코드)


패리티 코드는 사전에 송신자와 수신자가 서로 약속을 해서 데이터의 앞 또는 뒤쪽에 부착한다. 예를 들어 패리티 비트를 데이터의 뒤에 부착하고, 홀수 패리티를 사용하는 경우, 송신측에서 보내는 데이터가 1010110, 패리티 비트 1(패리티 비트 수정)이면, 수신측에서 받는 데이터는 1010110, 패리티 비트 1(패리티 비트 점검)이다. 

복수개의 오류가 발생했을 때, 홀수개의 오류는 검출할 수 있으나 짝수개의 오류는 검출할 수 없다. 때문에 해밍코드(Hamming code)를 이용하여 오류를 검출하고 수정한다.


참고자료:

Digital Fundamentals 11th edition, Floyd, Pearson

Digital Design 4th edition, Mano, Ciletti, Pearson    

반응형

'전자공학 > 디지털논리회로' 카테고리의 다른 글

6. 조합논리  (0) 2019.04.08
5. 불 대수, 카르노 맵  (0) 2019.04.07
4. 논리 게이트  (2) 2019.04.06
2. 2, 8, 16진수  (0) 2019.04.04
1. 디지털의 개념, 집적회로(IC)의 종류  (0) 2019.04.03
Posted by skywalker222