본문 바로가기
CS 이론/디지털 논리회로

디지털 논리회로 4.5부<그레이 코드,3 초과 코드>

by Suff07 2024. 1. 26.

 

 

목차

    1. 그레이코드란?


     

     

    본격적으로 카르노맵을 이야기하기전, 우리는 그레이코드라는 개념을 알고 넘어갈 계획입니다.

     

    한숨 돌리고 간다는 생각으로 포스팅을 봐 주셨으면 좋겠습니다~

     


    1-1. 그레이코드란?


     

    그레이코드는 디지털 자료를 표시하는 방법중의 하나로써 연속된 수가 1개의 비트만 다른 특징(Unit distance)을 지닙니다.

     

    이게 뭔소리인지 감이 안잡히죠? 표를 보면서 빠르게 알아봅시다.

     

     

     

    먼저 0과 1을 비교해봅시다.

    0의 그레이코드는 0000입니다.

    1의 그레이코드는 0001입니다.

     

    어... 뭔가 엇비슷하지 않나요??

    000이 같고 가장 마지막 자릿수 딱 하나만이 다르네요?

     

    Unit Distance의 개념이 바로 이겁니다.

    0과 1은 000X모양으로 같고, 1과 2는 00X1꼴로 같고, 2와 3은 001X꼴로 같은겁니다.

     

     

    1-1-1. 2진법에서 그레이코드 변환하기

     

    변환법은 아주 쉽습니다.

    1. 제일 앞의 숫자는 그대로 내림
    2. 두번째 자리수부터는 앞의 숫자와 비교하여 숫자가 같은 경우는 0, 다른경우는 1을 적용함

    그러면 다른 예시를 들어서 한번 계산해보겠습니다.

     

     

    1번째는 0을 그대로 내립니다.

    2번째는 앞자리숫자와 2번째 자리 숫자를 비교하여 같으면 0 다르면 1을 적용합니다.

    이를 반복적으로 적용하면 마지막 결과가 나오게 됩니다.

     

    1-1-2. 그레이코드에서 2진법 변환하기

    이 또한,변환법은 아주 쉽습니다.

    1. 제일 앞의 숫자는 그대로 내림
    2. 두번째 자리수부터는 앞의 숫자와 비교하여 숫자가 같은 경우는 0, 다른경우는 1을 적용함

    이번에는 예시는 생략하고 넘어가겠습니다.


    1-2. 그레이코드 사용이유


     

     

    자! 그러면 이제 얘를 왜 쓰느냐에 대한 논의를 해보겠습니다.

     

    우리가 로터리 엔코더를 만든다고 생각을 해봅시다.

     

     

    그러면 회전하는 아날로그 신호를 디지털 신호로 바꿔야 합니다. 그렇죠?

     

    대충 위의 그림대로 하드웨어적인 부분은 설계가 될것이 자명할것입니다.

     

    그리고 엔코더가 돌아갈때의 신호를 어떻게 바꾸느냐가 중요한데요.

     

     

     

    왼쪽의 경우는 아날로그 회전 신호를 BCD 코드로 변환하는 방식입니다.

    BCD코드는 우리가 흔히 아는 10진법을 2진법으로 변환하는 방식입니다.

     

    오른쪽의 경우는 아날로그 회전신호를 GrayCode로 변환하는 방식입니다.

     

    이제 한번 생각해보자고요.

     

     

    해당 위치에 엔코더가 있다고 생각해봅시다.

    그러면 엔코더가 000이나 001이라 해석할 수 있습니다. 여기까지는 문제가 없어요~

     

     

    문제는 여기서부터 발생하게 됩니다.

     

    001과 010은 그렇다 쳐도 왜 갑자기 000과 011이 튀어나오냐?라고 생각이 들죠?

     

     

    이 그림처럼 신호가 인식이 될 수도 있기때문에 가짓수가 늘어난겁니다.

     

     

    그리고 해당위치가 되면 이렇게 가짓수가 많아진답니다.

     

    이렇게 위치에 따라서 나올수 있는 가짓수가 많아지면 컴퓨터 입장에서는 혼동과 더불어 연산에 불필요함이 오게 됩니다.

     

     


    이제는 그레이코드를 적용한 엔코더를 보도록 합시다.

     

     

    음 뭐 여기까지는 똑같군요...

     

     

    어라? 가짓수가 확 줄어들었습니다!

     

    001과 011이라고 영역이 확실히 구분이 되네요!

    이렇게 가짓수를 줄여서 오차를 줄이는 목적에 사용되는 코드가 바로 그레이코드입니다.


    1-3. 그레이 코드의 특징

    그레이 코드의 특징은 Reflective합니다.

     

    이게 뭔말인지는 표를 보면서 이야기해보겠습니다.

     

     

    그레이코드에서 가장 앞의 숫자를 빼고 잘 보세요.

     

    10진법으로 7은 0100입니다. 거기에 맨 앞의 0을 빼고 보면 100입니다.

    10진법으로 8은 1100입니다. 거기에 맨앞의 1 을 빼고 보면 100입니다

     

    어라? 앞의 숫자를 빼고 보니까 빨간색 경계선을 기준으로 서로 대칭이 되네요?

     

    예 맞습니다. 이것이 그레이코드의 Reflective한 특성입니다!!

     

     


    2. Excess-3 Code <3 초과 코드>

    이제는 3초과 코드에 대해서 이야기를 해보도록 하겠습니다.

     

    사실 3초과 코드는 BCD코드에 \(0011(2)\) 즉, 10진법으로 3을 더한게 끝입니다.

     

    그래서 연산에 대해서는 크게 설명을 할게 없습니다 하하

     

     

    2-1. Excess-3 Code를 쓰는 이유

    3 초과코드를 사용하는 이유는 바로 자기보수라는 특징이 있기 때문입니다.

     

    즉, 3 초과 코드에서 1의 보수는 10진수의 9의 보수에 해당한다는 의미입니다.

     

    이것도 표를 보면서 이해를 해보겠습니다.

     

     

    보시면 0의 3초과 코드는 0011입니다.

    그리고 9의 3초과 코드는 1100입니다.

    이 두가지가 서로 보수관계이기 때문에 3 초과 코드를 사용합니다.

     


    4. 요약정리

    • 그레이 코드는 연속된 숫자의 비트가 딱 하나만 다른 특성을 지니고 있다.
    • 그레이 코드의 사용의의는 오차를 줄이기 위해서 사용이 된다.
    • 그레이 코드의 또 다른 특징은 Reflective하다.
    • 3초과 코드의 사용 목적은 1과 9의 보수관계라는 의미 때문에 사용한다.

     

    다음은 드디어 카르노 맵을 시작합니다!