본문 바로가기
임베디드 용어 정리

CRC(Cyclic Redundancy Check)

by minhyeok.lee 2024. 9. 6.
반응형


CRC(Cyclic Redundancy Check)란?


1. CRC(Cyclic Redundancy Check)는 데이터 전송이나 저장 중에 발생할 수 있는 오류를 검출하기 위해 사용되는 강력한 오류 검출 코드이다.

2. 주로 네트워크 통신, 디지털 저장 장치, 그리고 데이터 전송 시스템에서 데이터 무결성을 확인하는 데 사용된다.


CRC의 주요 개념

오류 검출 코드

CRC는 데이터를 전송하거나 저장할 때, 전송된 데이터가 손상되었는지 확인하는 데 사용된다.

데이터가 전송되기 전에 송신 측에서 CRC 값을 계산하고, 이 값을 데이터에 함께 전송한다.

수신 측에서는 수신된 데이터로 다시 CRC를 계산하여, 송신된 CRC 값과 비교함으로써 오류를 검출한다.

 

다항식 기반

CRC는 다항식 연산을 기반으로 한다.

송신할 데이터를 이진수로 취급하고, 미리 정해진 생성 다항식과의 나눗셈 연산을 통해 잉여값(remainder)을 계산한다.

이 잉여값이 CRC 코드로 사용된다.

일반적인 CRC 다항식은 CRC-16, CRC-32 등이 있으며, 숫자는 다항식의 차수(비트 길이)를 나타낸다.

 

효율적인 오류 검출

CRC는 단순한 패리티 비트보다 훨씬 강력한 오류 검출 능력을 가지고 있다.

특히, 1비트 오류, 2비트 오류, 연속적인 오류 및 특정 패턴의 오류를 높은 확률로 검출할 수 있다.

CRC는 특정 패턴의 오류를 감지하는 데 매우 효과적이다.

예를 들어, 패킷 전송 중에 발생할 수 있는 바이트 단위의 오류나 노이즈로 인한 여러 비트 오류도 효과적으로 검출할 수 있다.


CRC의 동작 과정

CRC 계산

데이터를 미리 정해진 생성 다항식으로 나누어 잉여값(나머지)을 구한다.

이 잉여값이 CRC 코드가 된다.

예를 들어, 데이터 1011001을 생성 다항식 1101로 나누면, CRC 코드로 100이 나올 수 있다.

 

CRC 부착

계산된 CRC 값은 원래 데이터에 부착되어 전송된다.

예를 들어, 원본 데이터 1011001과 CRC 100을 함께 전송하면, 1011001100이 전송된다.

 

수신 측에서 CRC 확인

수신 측에서는 수신된 데이터와 CRC 값을 다시 한번 생성 다항식으로 나눈다.

이 과정에서 나머지가 0이 나오면 데이터가 오류 없이 전송되었다고 판단하고, 그렇지 않으면 오류가 발생한 것으로 간주한다.


CRC의 활용 사례

네트워크 통신

이더넷 프레임, Wi-Fi 패킷, 블루투스 전송 등에서 CRC는 데이터 패킷의 무결성을 검증하는 데 사용된다.

수신된 패킷이 정확한지 확인하여, 데이터 손실이나 손상을 감지하고, 필요한 경우 재전송을 요청할 수 있다.

 

디지털 저장 장치

하드 드라이브, SSD, CD/DVD와 같은 저장 매체에서 데이터를 읽거나 쓸 때 CRC를 사용하여 데이터가 올바르게 저장되고 읽혀졌는지 확인한다.

오류가 감지되면 복구 절차가 시작되거나, 데이터가 다시 읽힐 수 있다.

 

임베디드 시스템 및 마이크로컨트롤러

임베디드 시스템에서는 펌웨어나 데이터를 플래시 메모리에 저장할 때 CRC를 사용하여 데이터의 무결성을 보장한다.


결론

1. CRC는 데이터 전송 및 저장에서 필수적인 오류 검출 도구이다.

2. 데이터 무결성을 확인하고 오류를 검출하는 강력한 방법으로, 다양한 통신 및 데이터 저장 시스템에서 널리 사용된다.

3. CRC는 상대적으로 계산이 간단하면서도 강력한 오류 검출 능력을 제공하는 장점이 있다.

 

반응형

'임베디드 용어 정리' 카테고리의 다른 글

MAC ID, PAN ID  (0) 2024.09.21
RXFR 이벤트 상태비트  (0) 2024.09.07
비터비 디코더(Viterbi Decoder)  (0) 2024.09.05
High Order Bit  (0) 2024.09.04
패리티 비트(Parity Bit)  (0) 2024.09.02

댓글