IT 프로그래밍/논리회로

[논리회로] 그레이 코드

기술1 2024. 4. 7. 14:44
반응형

그레이 코드란?

자료를 표현하는 방식 중 하나이다.

I/O A/D 변환기, 주변장치 등에서 숫자를 표현할 때 사용된다.

 

-가중치가 없는 코드이기 대문에 연선에는 부적당하지만, 아날로그 디지털 변환기나 입출력 장치 코드로 주로 쓰이며 연속되는 코드들 간에 하나의 비트만 변화하여 새로운 코드가 된다 

위 사진을 보면 알 수 있듯이 2진수의 경우 하나의 비트간에 하나의 비트만 다른 것이 아니지만 그레이 코드는 이웃하는 코드 간에 한 비트만 다릅니다. 

 

2진 코드를 그레이 코드로 변환 방법

1) 2진 코드의 첫 번째 비트는 그대로 사용합니다.

2) 이후 두 번째 비트부터 앞 비트와의 xor값을 사용합니다. 

ps. xor은 둘 중 하나가 참이거나 거짓이면 참,  비교하는 둘 다 참이거나 거짓일 때 거짓이 나옵니다. 


즉 첫번째는 위에 사진에 1이 나오기 때문에 1을 넣어줍니다. 그 이후에는 뒤에 수와 앞에 수를 비교해서 구해줍니다.

1 0 이 나오므로 1 출력, 0 0 이 나오므로 0 출력, 0 1 이 나오므로 1출력, 1 1 이 나오므로 0 출력, 1 0 이 나오므로 1 출력

따라서 1 1 0 1 0 1로 바꿔지게 됩니다. 

 

그레이 코드를 2진 코드로 변환하는 방법

 

1) 첫 비트는 그대로 사용합니다.

2) 두 번째 비트부터 이진 코드의 구해놓은 비트와 xor 연산을 사용해 출력합니다.


2진 코드에서 그레이 코드로 변환하는 과정은 옆에 2진 코드 내에서 양옆의 값을 비교했다면 gray코드는 대각선으로 비교한다고 보시면 됩니다. 

 

첫 번째는 그대로 출력하기에 1이 출력되지만 이후 구해진 2진수 비트와 그레이 코드의 다음값으 비교해서 차례대로 계산해 나가는 것입니다. 1 1 이 나오므로 0, 0 0 이 나오므로 0, 0 1 이 나오므로 1, 1 0 이 나오므로 1, 1 1 이 나오므로 0이 됩니다. 

따라서 1 0 0 1 1 0 이 나오는 것입니다. 

 

XOR 진리표

입력 출력
A B F
0 0 0
0 1 1
1 0 1
1 1 0

 

 

그레이코드의 장점

그레이코드는 비트가 1비트씩 다르기 때문에 2진코드를 사용할 때보다 오차가 적습니다. 하나의 비트가 틀렸을 경우를 예를들어 설명해보겠습니다.

 

2진코드

정상 : 0011 ( 3 ) 

에러 : 0111 ( 7 )

 

그레이코드

정상 : 0010 ( 3 )

에러 : 0110  ( 4 )

 

이렇게 그레이 코드는 오차가 적기 때문에 여러 장치에서 사용되고 있는 것입니다. 

반응형