카테고리 없음

데이터통신 10.3 순환코드

공부승식 2021. 5. 31. 22:10
728x90

순환코드는 하나의 특별한 성질이 있는 선형블록코드이다. 

순환코드(cyclic code)는 코드워드를 순환시키면 다른 코드워드를 얻는다. 

1011000이 코드워드라면 1개의 비트를 왼쪽으로 이동시킨 0110001도 코드워드이다.

 

10.3.1 순환 중복 검사.

오류를 정정하기 위한 순환 코드를 만들 수 있다. 

순환 중복 검사(CRC, cyclic redundancy check)라고 부르는 순환 코드를 이야기한다. 

부호화기에서는 데이터워드는 k비트이며, 코드워드는 n비트이다.

데이터워드의 크기는 n-k개의 0을 워드의 오른편에 대해서 키워진다. 

생성기는 확장된 데이터워드를 나누기장치(모듈로 2 나누기)로 나눈다. 나눗셈의 결과로 얻는 몫은 버려지고, 나머지를 데이터워드에 덧붙여 코드워드를 만든다.  

 

부호기

부호기는 데이터워드를 받아 n-k개의 0을 덧붙인다. 그 이후 나누기 장치로 확장된 데이터워드로 나눈다. 

1001 이라면  코드워드는 7개니까 7-4인 3개의 0을 붙여서 

1001000을 만든다. 그리고 만약 Divisor가 임의로 1011이라고 정해졌다면 1001000을 1011로 나눈다.

그럼 몫은 1010이 나오고, 나머지가 110이 나올거다. 몫은 무시하고 나머지에 주목해서

원래있던 데이터워드 1001에 나머지 110을 붙여서 1001110이라는 코드워드를 만들어준다. 

이렇게 부호화를 한다!

 

복호기

만들어진 코드워드 1001110 을 똑같이 아까랑 같은 디비저 1011로 나눠준다. 그래서 나머지가 나오는데 그걸 신드롬이라고 부른다.

신드롬이 모두 0이면 높은 확률로 오류가 없는거고(있을수도 있어)

신드롬이 0이 아니면 오류가 있는거야.