패리티 비트란?
정보의 전달 과정에서 오류가 생겼을 때 검사하기 위해 추가한 비트라고 생각하시면 됩니다. 전송하고자 하는 비트의 끝에 1을 더하여 전송하는 방법으로 2가지의 패리티 비트가 존재합니다(홀수 짝수)
짝수 패리티(even parity) : 데이터에서 1의 개수를 짝수 개로 맞춤
홀수 패리티(odd parity): 데이터에서 1의 개수를 홀수 개로 맞춤
이렇게 하면 하나만 바꿔주면 홀수, 짝수 패리티를 맞출 수 있기 때문에 이런 패리티를 사용하는 것입니다. 패리티함수는 전송 과정에서 에러 검사를 위한 추가비트이며 단지 에러 검출만 할 뿐, 여러 비트에 에러가 발생한 경우에는 검출이 안될 수도 있습니다.
데이터 | 짝수 패리티 | 홀수 패리티 |
A | 0 1000001 | 1 1000001 |
B | 0 1000010 | 1 1000010 |
C | 1 1000011 | 0 1000011 |
D | 0 1000100 | 1 1000100 |
보면 알 수 있듯이 만약 짝수 패리티의 경우 짝수 개를 맞춰주는 것이며 홀수 패리티의 경우 홀수를 맞춰주는 것을 볼 수 있습니다.
병렬 패리티(parallel parity)
패리티의 블록 데이터에 적용해서 가로와 세로 데이터들에 대해서 패리티를 적용하면 에러를 검출하여 그 위치를 찾아 정정할 수 있습니다.
이런식으로 병렬을 해서 데이터의 에러의 검출하는 것입니다.짝수 패리티라고 가정했을 때 원래 데이터 블록에서는 오류가 없는 것을 볼 수 있습니다. 하지만 에러가 발생한 블록 같은 경우는 짝수패리티여야 하는데 세로의 개수는 3개, 가로의 개수는 5개여서 에러가 난 곳을 파악할 수 있는 구조입니다.
에러를 검출하기 위해서 송신측에 패리티 발생기를 구성하고 수신측에는 패리티 검출기를 구성하여 그 출력을 보고 에러 여부를 판단합니다.
짝수 패리티는 Y = 0(에러없음) , Y = 1(에러발생)
홀수 패리티는 Y = 1(에러없음), Y = 0(에러발생)
이런 식으로 해줄 수 있습니다.
병렬 패리티 문자로 검사할 때 코드의 효율 파악법
에러 정정 코드 : 해밍 코드
-에러를 정정할 수 있는 코드
-추가적으로 많은 비트가 필요하므로 많은 양의 데이터 전달이 필요
-데이터 비트와 패리티 비트와의 관계
2^p-1 - p + 1 <= d <= 2^p - p - 1
(d:데이터비트수,p:패리티비트수)
위 공식에 따라 패리티 비트별 사용한 데이터 비트 수의 예시는 다음과 같습니다.
p = 3 -> d = 2 ~ 4
p = 4 -> d = 5 ~ 11
p = 5 -> d = 12 ~ 26
예를들면 p = 4일 때, 5 <= d <= 11 이므로 데이터 비트수가 5개 이상 11개 이하이므로 패리티는 4개가 필요합니다. 패리티 비트의 위치는 앞에서부터 2^0, 2^1, 2^2, 2^3, 2^4 .... 번째, 즉 1, 2, 4, 8, 16. .. 번째입니다.
데이터 비트는 나머지 위치에 순서대로 들어갑니다.
패리티 비트의 위치
위 예시를 통해 해밍 코드를 만들기 위해서 추가되는 패리티 비트의 수는
먼저 데이터 비트 수가 8인 경우 추가하는 데이터 비트의 수는 위 공식을 씁니다.
2^P >= 8 + P + 1
즉 위 식을 만족하는 P의 최솟값은 4이고, 패리티 해밍 코드는 전체 비트 수는 12입니다.
패리티 비트 체크 범위 및 패리티 비트 값 결정
패리티 비트의 체크 범위는 다음과 같은 규칙으로 결정됩니다.
n번째 패리티 비트는 n 번째에서 시작하며, n비트만큼 포함하고 n비트씩 건너뛴 비트들을 대상으로 패리티 비트 범위 지정 및 각 패리티 비트를 결정한다.
비트위치 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
기호 | P1 | P2 | D3 | P4 | D5 | D6 | D7 | P8 | P9 | P10 | P11 | P12 |
P1영역 | * | * | * | * | * | * | ||||||
P2영역 | * | * | * | * | * | * | ||||||
P3영역 | * | * | * | * | * | |||||||
P4영역 | * | * | * | * | * |
'IT 프로그래밍 > 논리회로' 카테고리의 다른 글
[논리회로] NAND 게이트 NOR, XOR, XNOR 게이트 설명 (0) | 2024.04.07 |
---|---|
[논리회로] 3상태 버퍼(3-STATE 버퍼) (0) | 2024.04.07 |
[논리회로] 그레이 코드 (0) | 2024.04.07 |
[논리회로] 2진수 음수 표현법 부호의 절대치 1의보수, 2의보수 (0) | 2024.04.03 |
[논리회로] 진법(2진수, 16진수, 8진수, 10진수) (0) | 2024.04.03 |