본문 바로가기
전자/통신

CRC 계산

by Begi 2022. 5. 11.
반응형

원 데이터가 11010011101100 이라고 가정한다.

 

CRC 제수(Divisor)를 1011이라고 가정한다. 1011를 다항식(Polynomial)으로 x3+x+1이라고 나타낸다. 16진수로 나타낼때는 최상위 비트를 제외하고 0x3이라고 한다. x3+x+1 CRC를 CRC-3-GSM이라고 한다.

 

CRC 제수 자리수보다 한개 작은 3개의 0을 원데이터 끝에 붙인다.

11010011101100 → 11010011101100 000

 

다음와 같이 데이터와 제수를 XOR 연산을 반복해서 한다. 데이터와 제수가 일치하는 자리는 XOR 연산을 하고 비어있는 자리는 원데이터가 그대로 내려온다.

 

11010011101100 000  : 원데이터 + 000
1011                : 제수
01100011101100 000
 1011
00111011101100 000
  1011
00010111101100 000
   1011
00000001101100 000
       1011
00000000110100 000
        1011
00000000011000 000
         1011
00000000001110 000
          1011
00000000000101 000
           101 1
--------------------------
00000000000000 100

 

가장 마지막에 남은 100이 CRC 값이 된다.

 

CRC 100을 원데이터와 함께 전송하고 수신측에서는 다음과 같이 계산한다.

 

11010011101100 100  : 수신데이터 + CRC 값
1011                : 제수

01100011101100 100
 1011
00111011101100 100

......

00000000001110 100
          1011
00000000000101 100
           101 1
------------------
00000000000000 000

 

데이터 손상이 없다면 가장 마지막 남은 값이 000이 된다.

 

Checksum과 CRC의 차이

CRC 계산 프로그램 코드

XOR 연산

 

반응형

'전자 > 통신' 카테고리의 다른 글

Request-Response 통신 방식  (0) 2022.05.15
CRC 종류  (0) 2022.05.11
RS-485 통신 서지 프로텍터 TVS  (0) 2022.04.14
MAX485 사용  (0) 2022.04.07
RS-422/485 통신에서 슬루 레이트 제한 기능 이란?  (0) 2022.04.02

댓글