CRC ( Cyclic Redundancy Checks )

 

통신을 할때는 주위의 전자적인 영향 혹은 기타 요인으로 오류가 생길 수 있습니다

이러한 오류를 검출해야 될 필요가 있고.. 오류가 난 데이터에 한해서는 재 송신을 한다던지

조치를 취할 수 있어야 데이터를 주고 받을때 신뢰성을 갖게 됩니다

 

오류를 검출 해 내는 방법 -  parity Check, SumCheck 등 다양

 CRC 또한 오류를 검출 해내는 방법의 하나 

 

------------------------------------

T(x) = transmitting string           |

B(x) = given bit string              |

G(x) = generator polynomial     |

R(x) = remainder                    |

------------------------------------

 


이해가 안갈 듯 해서 실제 바이너리를 대입해서 설명하면.

4비트 생성자 값 G(x) = 1001 , D 는 11111010  이라고 했을때 CRC체크


G(x) 가 4자리의 비트이므로 D에 3자리를 더해서   11111010000  이 된다.

연산은 XOR이므로 나눌때 값이 작다고해서 나누지 못하는게 아닙니다.
                     1  1  1  0  0  1  1  0   
1001 |---------------------------
       |  1  1  1  1  1  0  1  0  0  0  0                            [ 모든 연산은 XOR 연산 ]
          1  0  0  1
        -----------
              1  1  0  1
              1  0  0  1
             -----------
                 1  0  0  0
                 1  0  0  1
                 ---------
                            1  1  0  0
                            1  0  0  1
                            -----------
                               1  0  1  0
                               1  0  0  1
                               ----------
                                      1  1  0             <- R  ( remainder )


전송되는 비트 ->  11111010110 ( CRC code )
검산

                    1  1  1  0  0  1  1  0
1001 |--------------------------
        | 1  1  1  1  1  0  1  0  1  1  0
         1  0  0  1
         -----------
             1  1  0  1
             1  0  0  1
             ----------
                1  0  0  0
                1  0  0  1          
               ----------
                           1  1  0  1
                           1  0  0  1
                           ----------
                              1  0  0  1
                              1  0  0  1
                               ----------
                                        0

출처 : http://dlrbtjd86.blog.me/92426289



참고 :
http://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%A4%91%EB%B3%B5_%EA%B2%80%EC%82%AC

http://blog.bagesoft.com/858

  1. 알 수 없는 사용자 2021.04.07 05:43

    왕감사맨입니다.

  2. 811 2021.12.09 00:35

    1111101000 을 crc하면 마지막이 110이 나유네요 왜이렇죠

    • 811 2021.12.09 00:36

      제가 하면 0011이 나옵니다 이유
      마지막 자리 0을 1010으로 썻기에
      1010 과 1001 하면 0011이 됩니다..

+ Recent posts