컴퓨터공학1학년/데이터통신

[에러 제어] CRC (Cyclic Redundancy Check)

반나무 2020. 5. 28. 13:43

CRC (Cyclic Redundancy Check) 

현재 네트워크에서 널리 사용되며 다항식 코드로도 알려짐. 특정 방정식에 의한 연산결과를 원시프레임에 삽입함.

패리티 검사는 문자가 아닌 연속 2진 데이터는 적용 어려우므로 전체 블록검사가 필요하며, CRC는  전체 블록 대상 에러 검출

이진 나눗셈을 기반 = 패리티 검사보다 효율적, 에러검출능력우수

 


동작과정

① 메시지는 하나의 긴 2진수로 간주

② 특정한 제수에 의해 나누어지며, 이때 나머지는 송신되는 프레임에 첨부, 이 나머지를 CRC 비트 또는 FCS(Frame Check Sequence), BCC(Block Check Character)라고도 함

③ 프레임이 수신되면 수신기는 같은 제수(생성다항식)를 사용하여 나눗셈의 나머지를 검사(Exor)

④ 나머지가 0이면 에러가 없음을 의미

 

 

CRC 부호화 과정

각 비트들의 값을 보면서 하나의 함수로 만드는 과정

정보 비티를 다항식에 의한 표현으로 변환

예) 입력 데이터가 10001101 이라하면, 각 자리에 1이 들어있는  자리수를 x의 지수로 정함

 

76543210

10001101

P(x) = x7 + x3 + x2 + x0 = x7 + x3 + x2 + 1

 

 

CRC 비트를 만드는 방법( 송신측 과정 )

CRC 모든 연산은 Carry가 없는 Modulo-2 연산(= 윗자리로 올리거나 빌리지 않음)

 

기본 연산 규칙

① 산출되는 CRC비트의 길이 n, 제수는 n+1

② 제수는 송신, 수신측의 합의 정의

③ 전송하고자 하는 데이터 뒤쪽 n 개의 0을 삽입

 

예) 전송값 = 10001100 (제수 1001)

 

10001100

1001

     1110

     1001

       1110

       1001

         111

 

최종 송신 데이터 : 10001100111

 

 

CRC 비트를 만드는 방법(수신측 과정)

수신측은 수신된 데이터를 송신측과 합의된 제수로 나눔

연산결과 나머지가 0이면 정확한 값

 

10001100111

1001

     1110

     1001

       1110

       1001

         1110

         1001

           1111

           1001

             1101

             1001

               1001

               1001

                  00

 

반응형