crc 16 계산 예제

이것은 CRC의 CRC-32 변형에 대한 알고리즘입니다. [7] CRCTable은 메시지의 각 바이트에 대해 반복되어야 하는 계산을 메모하는 것입니다. 다른 분해를 인정하는 다항식 g (x) {displaystyle g(x)}는 원하는 오차 감지 능력과 최대 총 블록길이의 균형을 맞추기 위해 선택될 수 있습니다. BCH 코드는 이러한 다항식의 강력한 클래스입니다. 위의 두 예제를 요약합니다. “+1″ 항이 포함된 경우 r의 다항성 생성기의 적색성 특성에 관계없이 코드는 r 연속 비트의 창에 국한된 오류 패턴을 검색할 수 있습니다. 이러한 패턴을 “오류 버스트”라고 합니다. 다항식의 분할은 정수 분할과 다릅니다. 자세히 설명하지 않고 CRC 계산에 사용되는 기본 귀족은 XOR(Exclusive-OR) 작업을 기반으로 합니다(곧 예제를 볼 예정입니다!). – 분할은 전체 입력 데이터(이진 스트림으로 해석)입니다. – 생성기 다항식이라고도 하는 제수는 사용된 CRC 알고리즘에 의해 정적으로 정의됩니다.

CRC-n (n+1) 비트가 있는 고정 정의된 생성기 폴리놈을 사용합니다. – CRC 체크섬 값은 분할 % 제수로 정의됩니다. 수동 계산의 경우 실제 CRC 계산(다항식 분할)이 계산되기 전에 n 0 비트가 입력 데이터에 추가됩니다. 예제 CRC 계산을 수행해 보겠습니다: 이 정보를 사용하여 일반 계산과 비교하여 상호 CRC-32(오른쪽)의 테이블 기반 계산(왼쪽): 지금까지 하나의 바이트만 입력 데이터로 사용되었으므로 입력 데이터가 입력 데이터인 경우 어떻게 되는지 살펴보겠습니다. 바이트 배열로 확장됩니다. 첫 번째 함수 Compute_CRC8_Simple_OneByte_ShiftReg() 쉽게 적응할 수 있습니다(입력 매개 변수만 0x00 바이트가 추가되는 바이트 배열이 될 수 있음)하지만 Compute_CRC8_Simple_OneByte()는 어떻습니까? 흥미로운 점은 두 바이트 사이의 경계에 있습니다: 한 바이트가 완전히 처리되면 후속 바이트가 계산 프로세스에 어떻게 통합되는가? 다시 말하지만 간단한 예제(더 많은 수동 CRC 계산 작업!)로 시작하겠습니다. 그러나 요점은 각각의 경우에 동일한 다항식계산에 사용된다는 것입니다. 자주 사용되는 CRC-16 다항식 x^16 + x^12 + x^5 + 1을 고려하십시오. 바이너리에서, 그건 1 0001 0000 0010 0001. 이 예제에 대한 세 가지 다른 표현: 수신된 메시지의 유효성은 위의 계산을 다시 수행하여 쉽게 확인할 수 있으며, 이번에는 확인 값이 0이 아닌 추가된 값입니다.

검색 가능한 오류가 없는 경우 나머지는 0이어야 합니다. 실제 바이트 바이트는 조금 까다롭기 때문에 먼저 예제를 다시 확인해 보겠습니다: CRC-1에는 학위 1과 2 용어가 있습니다: *x^1 + b*x^0. 가장 중요한 비트는 항상 1입니다. 그러나 다항식 10은 실제 CRC 값이 항상 0이기 때문에 의미가 없습니다. 따라서 CRC-1은 정상 표현에서 0x01에 불과한 다경11(바이너리)을 가합니다. 그리고 이것은 사실 짝수 패리티 비트의 계산입니다. 실제 CRC 값에는 n 비트가 있으므로 CRC-1의 경우 나머지 값은 0 또는 1의 1 비트를 가합니다. 알고리즘은 각 단계의 제수 바로 위에 있는 비트에 대해 작동합니다. 이 반복의 결과는 다항식 제수의 비트xOR이며 그 위에 비트가 있습니다.

제수 위에 있지 않은 비트는 해당 단계에 대해 바로 아래에 복사됩니다. 그런 다음 제수는 오른쪽으로 한 비트를 이동하고 제수자가 입력 행의 오른쪽 끝에 도달할 때까지 프로세스가 반복됩니다. 다음은 전체 계산입니다: CRC 계산뒤에 있는 아이디어는 데이터를 하나의 큰 이진 번호로 보는 것입니다. 이 숫자는 특정 값으로 나누며 나머지 계산은 CRC라고 합니다. CRC 계산을 처음에 나누면 많은 컴퓨팅 성능이 소모되는 것처럼 보이지만 학교에서 배운 것과 유사한 방법을 사용하면 매우 빠르게 수행 할 수 있습니다. 예를 들어 이진 표기어에서 1101101인 문자 `m`의 나머지 부분을 19 또는 10011로 나누어 계산합니다.

Share on Facebook