본문 바로가기
2학년 2학기/컴퓨터 구조

3.6 Error detecting code

by print_soo 2024. 10. 6.

: 에러를 검출할 수 있는 코드

 

Parity bit

: 오류를 검출하기 위해 데이터에 추가하는 비트이다. 전송되는 데이터의 전체 비트 수가 홀수인지 짝수인지 확인할 수 있도록 추가되는 비트 하나이다. 

 

Even Parity(짝수)

: 전체 비트 수가 짝수가 되도록 Parity bit를 설정하는 방식이다. 데이터의 1의 개수가 짝수가 되도록 Parity bit를 0 또는 1을 추가한다.

 

예를 들어 데이터가 1 1 0 1이라면, 1의 개수는 3이므로 Parity bit는 1이 되어 전체 bit 수가 4(짝수)가 된다.

 

Odd Parity(홀수)

: 전체 비트 수가 홀수가 되도록 Parity bit를 설정하는 방식이다. 데이터의 1의 개수가 짝수가 되도록 Parity bit를 0 또는 1을 추가한다.

 

예를 들어 데이터가 1 0 0 1이라면, 1의 개수는 2이므로 Parity bit는 1이 되어 전체 bit 수가 3(홀수)가 된다.

 

 

 

어떻게 생성할까? (XOR 이용하자.)

 

 

따라서, 모든 입력값을 XOR한 출력은 Even Parity의 값이 되고, 모든 입력값을 XOR한 출력의 not 은 Odd Parity의 값이 된다.

 

 

 

이걸 어떻게 이용해서 에러를 검출할까?

 

 

Transmitter에서 D1, D2, D3, D4, D5, D6, D7의 입력 값을 보냈을 때, Reciver에서 제대로 값이 왔는지 알고 싶다고 해보자. 즉, Transmission Line에서 에러가 발생했는지 알고 싶다고 해보자.

 

그랬을 때 Parity generator를 통해서 값 하나를 넘겨주고,

 

만약 Even Parity를 썼다면, Receiver에서는 1의 개수가 짝수여야 중간과정에서 오류가 생기지 않은 것이고

Odd Parity를 썼다면, Receiver에서는 1의 개수가 홀수여야 중간과정에서 오류가 생기지 않은 것이다.

 

 

 

 

Even Parity를 쓰기로 약속했다면 출력 값 Y에서는 Parity와 입력들을 모두 XOR한 값이 0이 나오면 정상적 전달이고, 1이 나오면 비 정상적 전달으로 판단한다.

 

 

 

아래의 사진은 위의 과정을 회로와 진리표로 나타낸 것이다.

 


 

아래는 Odd Parity를 생성하고 출력값에서 해당 에러를 체크하는 Parity Checker의 회로도이다.