CCITT CRC-16
디지탈 데이터를 송수신하는 과정에서 데이터가 오류없이 정상적으로 수신되었는지 확인하기 위해 흔히 CRC(Cyclic Redundancy Code)를 사용한다.
CRC에는 다양한 종류가 있는데, 대표적인 것이 CCITT CRC-16이다. 이것은 전송데이터를 특정 다항식을 이용하여 나눗셈을 수행하고 남은 나머지 16비트를 전송데이터의 뒷부분에 추가적으로 전송하는 것을 의미한다. 수신측에서는 동일한 다항식으로 나눗셈을 수행하여 나머지가 특정값이면 수신데이터에 오류가 없다고 추정하는 것이다.
CCITT CRC-16의 다항식은 다음과 같다.
위 다항식의 좌측을 이진수로 표시하면 b’10001000000100001로 표기할 수 있으며, 우측은 이를 16진수로 표기한 것으로 MSB는 항상 1이기 때문에 이를 생략하고 16비트만 표기한 것이다. CRC의 계산은 전송하고자 하는 2진 데이터에
| Algorithm | Result | Check | Poly | Init | RefIn | RefOut | XorOut |
1 | CRC-16/CCITT-FALSE | 0x29B1 | 0x29B1 | 0x1021 | 0xFFFF | false | false | 0x0000 |
2 | CRC-16/ARC | 0xBB3D | 0xBB3D | 0x8005 | 0x0000 | true | true | 0x0000 |
3 | CRC-16/AUG-CCITT | 0xE5CC | 0xE5CC | 0x1021 | 0x1D0F | false | false | 0x0000 |
4 | CRC-16/BUYPASS | 0xFEE8 | 0xFEE8 | 0x8005 | 0x0000 | false | false | 0x0000 |
5 | CRC-16/CDMA2000 | 0x4C06 | 0x4C06 | 0xC867 | 0xFFFF | false | false | 0x0000 |
6 | CRC-16/DDS-110 | 0x9ECF | 0x9ECF | 0x8005 | 0x800D | false | false | 0x0000 |
7 | CRC-16/DECT-R | 0x007E | 0x007E | 0x0589 | 0x0000 | false | false | 0x0001 |
8 | CRC-16/DECT-X | 0x007F | 0x007F | 0x0589 | 0x0000 | false | false | 0x0000 |
9 | CRC-16/DNP | 0xEA82 | 0xEA82 | 0x3D65 | 0x0000 | true | true | 0xFFFF |
10 | CRC-16/EN-13757 | 0xC2B7 | 0xC2B7 | 0x3D65 | 0x0000 | false | false | 0xFFFF |
11 | CRC-16/GENIBUS | 0xD64E | 0xD64E | 0x1021 | 0xFFFF | false | false | 0xFFFF |
12 | CRC-16/MAXIM | 0x44C2 | 0x44C2 | 0x8005 | 0x0000 | true | true | 0xFFFF |
13 | CRC-16/MCRF4XX | 0x6F91 | 0x6F91 | 0x1021 | 0xFFFF | true | true | 0x0000 |
14 | CRC-16/RIELLO | 0x63D0 | 0x63D0 | 0x1021 | 0xB2AA | true | true | 0x0000 |
15 | CRC-16/T10-DIF | 0xD0DB | 0xD0DB | 0x8BB7 | 0x0000 | false | false | 0x0000 |
16 | CRC-16/TELEDISK | 0x0FB3 | 0x0FB3 | 0xA097 | 0x0000 | false | false | 0x0000 |
17 | CRC-16/TMS37157 | 0x26B1 | 0x26B1 | 0x1021 | 0x89EC | true | true | 0x0000 |
18 | CRC-16/USB | 0xB4C8 | 0xB4C8 | 0x8005 | 0xFFFF | true | true | 0xFFFF |
19 | CRC-A | 0xBF05 | 0xBF05 | 0x1021 | 0xC6C6 | true | true | 0x0000 |
20 | CRC-16/KERMIT | 0x2189 | 0x2189 | 0x1021 | 0x0000 | true | true | 0x0000 |
21 | CRC-16/MODBUS | 0x4B37 | 0x4B37 | 0x8005 | 0xFFFF | true | true | 0x0000 |
22 | CRC-16/X-25 | 0x906E | 0x906E | 0x1021 | 0xFFFF | true | true | 0xFFFF |
23 | CRC-16/XMODEM | 0x31C3 | 0x31C3 | 0x1021 | 0x0000 | false | false | 0x0000 |
댓글
댓글 쓰기