콘텐츠
해밍 코드는 오류 수정 정보를 데이터 스트림에 삽입하는 데 사용됩니다. 코드는 오류가 감지 될뿐만 아니라 수정되도록 설계되었습니다. 오류 수정 정보를 추가하면 데이터 양이 증가하지만 오류율이 높은 미디어를 통한 통신의 신뢰성도 높아집니다.
해밍 코딩은 구현하기가 복잡 할 수 있지만 비트 수준 산술 트릭을 사용하면 매우 빠르게 수행 할 수 있습니다. 이를 통해 임베디드 애플리케이션에서 사용할 수있는 유용한 고속 오류 수정 시스템을 만들 수 있습니다.
1 단계
데이터 단어를 만듭니다. 위치가 2의 제곱 (첫 번째, 두 번째, 네 번째 등) 인 비트는 패리티 정보 용으로 예약되어야합니다. 단어가 원래 데이터와 패리티 비트를 갖는 데 필요한만큼 사용하십시오.
예:
1 1 0 1 0 0 1 0은 _ _ 1 _ 1 0 1 _ 00010이됩니다.
원래 비트는 동일한 순서로 유지되지만 패리티 비트를 삽입하기 위해 펼쳐졌습니다.
2 단계
첫 번째 패리티 비트를 계산합니다. 첫 번째 비트부터 시작하여 비트를 읽은 다음 비트를 건너 뛰고 끝까지 절차를 반복합니다. 그 동안 발견 된 항목의 수가 계산됩니다. 패리티 비트는이 프로세스에서 계산되지 않습니다.
1의 수가 짝수이면 첫 번째 비트를 0으로 설정합니다. 그렇지 않으면 1로 설정하십시오.
예:
_ _ 1 _ 10 1 _ 0 0 1 0, _11101의 비트 1, 3, 5, 7, 9 및 11에는 4 개의 1이 포함됩니다. 이것은 짝수이므로 첫 번째 비트는 0으로 설정됩니다. 0 _ 1 _ 1 0 1 _ 0 0 1 0
3 단계
나머지 패리티 비트를 계산합니다. 두 번째 비트부터 시작하여 두 비트를 읽은 다음 두 비트를 건너 뛰고 끝까지 절차를 반복합니다. 네 번째 비트는 4 비트를 읽고 4 비트부터 시작하여 다른 4 비트를 건너 뜁니다. 모두 계산 될 때까지 동일한 패턴 뒤에 모든 패리티 비트가 이어집니다.
예:
비트 2 : 0 _ 1 _ 10 1 _ 000 1 0은 3 개의 1을 포함하는 _1, 01, 01을 확인하므로 비트 2는 1로 설정됩니다. 비트 4 : _ 0 1 1 1 0 1 _ 0 0 1 0은 2 개의 1을 포함하는 _101, 0을 확인하므로 비트 4는 0으로 설정됩니다. 비트 8 : 010 1 0 0 1 0은 하나만 포함 된 _0010을 확인하므로 비트 8은 1로 설정됩니다.
따라서이 단어는 011010110010으로 코딩됩니다.
4 단계
단어를 확인하십시오. 단어가 손상되면 패리티 비트가 예상과 일치하지 않습니다. 단어가 손상되지 않았는지 확인하려면 2 단계와 3 단계를 사용하여 패리티 비트를 계산하십시오. 비트가 동일하지 않으면 해당 위치를 기록하십시오.
5 단계
잘못된 비트를 수정하십시오. 잘못된 패리티 비트를 찾으면 비트 위치를 추가하기 만하면됩니다. 합계 값은 잘못된 비트의 위치입니다. 이 위치에서 비트 값을 변경하십시오.
예를 들어 잘못된 패리티 비트가 1과 4 인 경우 다섯 번째 비트의 값을 변경하면 오류가 수정됩니다.