버스트 오류 수정 코드

Burst error-correcting code

부호화 이론에서, 버스트 오류 수정 코드는 서로 독립적으로 비트에서 발생하기 보다는 연속적으로 여러 비트에서 발생하는 오류인 버스트 오류를 수정하는 방법을 채택한다.

많은 코드들이 무작위 오류를 수정하도록 설계되었다. 그러나 때때로 채널은 짧은 간격으로 국부적인 오류를 발생시킬 수 있다. 그러한 오류는 연속된 비트 수에서 발생하기 때문에 버스트(버스트 오류라고 함)에서 발생한다. 버스트 오류의 예는 저장 매체에서 광범위하게 찾아볼 수 있다. 이러한 오류는 디스크의 긁힘이나 무선 채널의 경우 번개와 같은 물리적 손상 때문일 수 있다. 그들은 독립적이지 않다; 그들은 공간적으로 집중되는 경향이 있다. 한 비트에 오류가 있으면 인접한 비트도 손상될 수 있다. 무작위 오류를 수정하는 데 사용되는 방법은 버스트 오류를 수정하는 데 비효율적이다.

정의들

폭발로5길

버스트 길이

코드 C }이(가) 되고 Y= + Y=로 수신된다고 가정하십시오. 그런 다음 의 0이 아닌 구성 가 {{\displaystyle \ell 연속 구성 요소로 제한되는 경우 오류 Edisplaystyle \(를) 길이의 버스트 \ell}이라고 한다. 예를 들어 = ( 0) 는) 길이의 버스트 = 7. =7)이다

이 정의는 버스트 오류가 무엇인지 설명하기에 충분하지만, 버스트 오류 수정을 위해 개발된 도구의 대부분은 주기 코드에 의존한다. 이것은 우리의 다음 정의에 동기를 부여한다.

순환 버스트 길이

벡터 E 은(는) 0이 아닌 구성 요소가 순환 연속 구성 요소로 제한되는 경우 길이 }의 순환 버스트 오류라고 불린다. 예를 들어 이전에 고려된 오류 벡터 = ( ) E은 위치 에서 시작하여 위치 에서 끝나는 오류를 고려하므로 길이 = 5 = 버스트입니다 - 기반, 즉 첫 번째 요소가 위치 에 있음

이 글의 나머지 부분에 대해서는 달리 언급하지 않는 한, 우리는 버스트라는 용어를 사용하여 주기적 버스트를 지칭할 것이다.

버스트 설명

버스트 오차의 길이뿐만 아니라 패턴과 위치를 포함하는 버스트 오차의 작은 정의를 갖는 것이 종종 유용하다. 버스트 설명을 튜플, L) 여기서 P은(는) 오류 패턴의 첫 번째 0이 아닌 항목으로 시작하여 마지막 0이 아닌 기호로 끝나는 기호 문자열)으로 정의하고L {\ L은 코드 워드에서 위치(w)로 정의한다.폭발물을 찾을 수 있을 것이다.[1]

For example, the burst description of the error pattern is . Notice that such description is not unique, because describes the same burst error. 일반적으로 에서 0이 아닌 구성 요소 수가 w 경우 의 서로 다른 0이 아닌 에서 시작하는 w{\개의 버스트 설명이 있음 버스트 설명의 모호성으로 인해 발생하는 문제를 해결하기 위해그러나 하기 정리하기 전에 우리는 먼저 정의가 필요하다.

정의. 주어진 오류 y, y에 있는 기호 는 l g ( y). {)로 표시된다

정리(버스트 설명의 고유성). Suppose is an error vector of length with two burst descriptions and . If 그러면 두 설명은 동일하며, 즉 해당 구성 요소가 동일하다.[2]
증명. 을(를) 해밍 가중치(또는 0이 아닌 항목 수)로 설정 그러면 에 정확히 오류 설명이 있음. = ,의 경우 증명할 것이 없다. 따라서 (와) 설명이 동일하지 않다고 가정한다. 의 각 비제로 엔트리가 패턴에 나타나므로 에 포함되지 않은 E 의 구성 요소는 마지막 비제로 엔트리를 시작한 직후에 0의 순환 런을 형성하고 패턴의 첫 번째 비제로 엔트리를 바로 앞에 계속한다. 이 런에 해당하는 지수 집합을 영점 런이라고 부른다. 우리는 즉시 각 버스트 설명에 관련된 제로 런이 있고 각 제로 런이 분리된다는 것을 관찰한다. 0 런이 있고 각 런이 분리되므로 모든 0 런에 총 - 개의 개별 요소가 있다. 반면에 우리는 다음을 가지고 있다.
이는 2 모순되므로 버스트 오류 설명은 동일하다.

위의 정리 중 중요한 것은 길이 ( + ). {\)의 버스트에 대해 두 개의 뚜렷한 버스트 설명을 가질 수 없다는 것이다

버스트 오류 수정을 위한 주기 코드

순환 코드는 다음과 같이 정의된다: 원소로q displaystyle {F} _{q}. 이제 단어의 개별 기호가 다항식 계수에 해당하는 , {\_에 대한 다항목으로 생각할 수 있다.l. 순환 코드를 정의하기 위해, 우리는 발전기 다항식이라고 불리는 고정 다항식을 선택한다. 이 순환 코드의 암호어는 모두 이 발전기 다항식으로 구분할 수 없는 다항식이다.

Codewords are polynomials of degree . Suppose that the generator polynomial has degree . Polynomials of degree that are divisible by result from multiplying ( ) - - 다항식 이러한 - r {\^{n-r이 있다. 각각 암호어에 해당된다. 따라서 의 경우 =n - r {\ k=

Cyclic codes can detect all bursts of length up to . We will see later that the burst error detection ability of any code is bounded from above by . Cyclic codes are considered optimal for burst error detection 상한을 충족하기 때문에:

정리(순환 버스트 보정 능력) 발전기 다항식 을(를) 사용하는 모든 주기 코드는 길이의 모든 버스트를 감지할 수 있다. .
Proof. We need to prove that if you add a burst of length to a codeword (i.e. to a polynomial that is divisible by ), then the result is not going to be a codeword (i.e. the corresponding polynomial is not divisible by ). 길이 의 버스트가 ( x) 에 의해 분할되지 않음을 보여 주는 것으로 충분하다 이러한 버스트는 i () x 여기서 ){\ b( x) (는) ( x) 가 도 r 를) 가지므로 () x 코드)로 구분되지 않는다. 따라서 x ( ) 로도 분할되지 않는다.

위의 증거는 순환 코드의 버스트 오류 감지/교정을 위한 간단한 알고리즘을 제안한다: 전송된 단어(, 도 - 1 가 주어진 경우, ( 로 나눌 때 이 단어의 나머지를 계산한다 나머지가 0인 경우(즉, 단어가 분할된 경우).( ) 를 선택한 다음 유효한 코드 워드가 된다. 그렇지 않으면 오류를 보고하십시오. 이 오류를 수정하려면 전송된 단어에서 이 나머지를 빼십시오. 뺄셈 결과는 ( x) 즉, 유효한 코드 워드가 될 것이다)로 나눌 수 있다.

버스트에 대한 오류 감지 상한( by - k= 에 의해, 우리는 순환 코드가 > {\ >의 모든 버스트를 감지할 수 없다는 것을 알고 있다 그러나 순환 코드는 실제로길이 > {\d. The reason is that detection fails only when the burst is divisible by . Over binary alphabets, there exist bursts of length . Out of those, only are divisible by 따라서 검출 실패 확률이 매우 작다(- r 2 모든 버스트 길이의 균일한 분포를 한다. ( .

이제 우리는 버스트를 다른 코스메트로 분류함으로써 효율적인 버스트 오류 수정 코드를 설계하는 데 도움이 될 순환 코드에 대한 근본적인 정리를 고려한다.

정리(Distinct Cosets). 선형 코드 (는) 길이의 모든 버스트 오류가 의 고유 코세트에 있는 경우 \explaystyle -burst-error-correction 코드 입니다
Proof. Let be distinct burst errors of length which lie in same coset of code . Then is a codeword. Hence, if we receive we can decode it either to or . In contrast, if all the burst errors and do not lie in same 코제트, 그리고 나서 각각의 버스트 오차는 그것의 증후군에 의해 결정된다. 그 오류는 그 증후군을 통해 고쳐질 수 있다. 따라서 길이 의 모든 버스트 오류가 의 구별되는 코세트에 존재하는 경우에만 코드 코드 입니다
정리(버스트 오류 코드워드 분류). 을(를) 선형 -burst-error-correction 코드로 설정하십시오. 그러면 길이 의 nonzero burst가 코드 워드가 될 수 없다.
Proof. Let be a codeword with a burst of length . Thus it has the pattern , where and are words of length Hence, the words and are two bursts of length . For binary linear codes, they belong to the same coset. 이것은 구별되는 코제트 정리와 모순되므로 길이length 의 논제로 버스트는 암호어가 될 수 없다.

버스트 오류 수정 한계

버스트 오류 감지 및 수정의 상한

상한선이란 결코 넘어설 수 없는 오류 감지 능력에 대한 한계를 의미한다. 길이 의 모든 버스트 오류를 감지할 수 있는 , k) 코드를 설계하고 싶다고 가정해 봅시다 {\ 자연스런 질문: displaystyle 우리가 결코 달성할 수 없는 },d? 다시 말해, 임의의 k) 코드를 사용하여 탐지할 수 있는 버스트 길이 의 상한은? 다음의 정리는 이 질문에 대한 해답을 제공한다.

정리(버스트 오류 감지 능력). (n, ) displaystyle ()}코드의 버스트 오류 감지 능력은 ability - .
Proof. First we observe that a code can detect all bursts of length if and only if no two codewords differ by a burst of length . Suppose that we have two code words and 길이 버스트 b{\에 따라 다른. {}을 수신할 때 전송된 단어가 c 인지, 전송 오류가 없는지 또는 {을 알 수 없다. 전송 중에 발생한 버스트 오류 자, 두 개의 코드 단어마다 길이가 b{\ }에 의해 전송된 c {1}{1}가 맞더라도 다른 유효한 코드wor로 변경되지는 않을 것이다d. 그것을 받으면 우리는 {}라는 것을 알 수 있다 위의 관찰에 따르면, 우리는 두 개의 암호어가 첫 n - 기호를 공유할 수 없다는 것을 안다. The reason is that even if they differ in all the other symbols, they are still going to be different by a burst of length Therefore, the number of codewords satisfies 를 양쪽에 적용하고 재배열하면 - 을(를) 확인할 수 있다

이제 동일한 질문을 반복하지만 오류 수정에 는 n 사용할 때 수정할수 있는 버스트 길이 의 상한은? 다음 정리는 이 질문에 대한 예비적인 답을 제공한다.

정리(버스트 오류 보정 능력). 임의의(, ) k 코드의 버스트 오류 수정 능력은 - - - )+ 2 을 만족한다.
증명. 먼저 두 개의 코드 단어가 두 개의 의 버스트 합계로 차이가 나지 않는 경우에만 코드에서 길이의 모든 버스트를 수정할 수 있다는 것을 관찰한다{\ 두 개의 코드 c 1 } 2 \}{1}{\stytype}}}개씩 버스트 길이 에 따라 다르다. Upon receiving hit by a burst , we could interpret that as if it was hit by a burst . We can not tell whether the transmitted word is or . Now, suppose that every two codewords differ by more than two bursts of length . Even if the transmitted codeword is hit by a burst of length 그것은 또 다른 폭발에 의해 강타당한 또 다른 암호어처럼 보이지 않을 것이다. For each codeword let denote the set of all words that differ from by a burst of length Notice that includes 그 자체. By the above observation, we know that for two different codewords and and are disjoint. 코드 워드가 있다. Therefore, we can say that . Moreover, we have . By plugging the latter inequality into the former, then taking the base logarithm과 재배열, 우리는 위의 정리를 얻는다.

더 강한 결과는 리거 바운드에 의해 주어진다.

정리(리거 바운드).가) ( k) 선형 블록 코드의 기능을 수정하는 버스트 오류인 경우, 2 -
증명. 의 버스트 패턴 을(를) 수정할 수 있는 모든 선형 코드는 워드로 길이의 버스트cannot 2 cannot 을(를) 가질 수 없다. 코드 워드로 길이burst 이(가) 버스트인 경우, 길이 의 버스트 패턴 }으로 변경될 수 있으며 모든 코드 워드에서 길이 처음 ㎛ {\ 기호에 벡터가 0이 아닌 경우, 벡터는 배열의 서로 다른 하위 집합에서 나와야 그 가 길이 2㎛{\}의 버스트의 코드 워드가 되지 않는다 이 조건을 확실히 하면, 그러한 하위 집합의 수는 최소한 벡터의 수와 같다. Thus, the number of subsets would be at least . Hence, we have at least distinct symbols, otherwise, the difference of two such polynomials would be a codeword that is a sum of two bursts of length Thus, this proves the Rie게르 바운드.

정의. 위의 리거 바운드를 달성하는 선형 버스트-오류-수정 코드를 최적 버스트-오류-수정 코드라고 한다.

버스트 오류 수정의 추가 범위

다중 단계 버스트 보정(MPBC)을 위해 선형 블록 코드의 달성 가능한 코드 속도에 대해 두 개 이상의 상한이 있다. 그러한 경계 중 하나는 모든 하위 블록 내에서 수정 가능한 최대 주기적 버스트 길이로 제한되거나, 동등하게 모든 단계 버스트 내의 최소 오차의 자유 길이 또는 간격에 대한 제약조건으로 제한된다. 이 바운드는 단일 버스트 보정을 위한 바운드의 특별한 경우로 축소되었을 때, 주기적 버스트 길이가 블록 길이의 절반 미만일 때 에이브람슨 바운드(버스트 오류 보정을 위한 해밍 바운드의 코럴)이다.[3]

정리(버스트 수) For over a binary alphabet, there are vectors of length which are bursts of length .[1]
증명. 버스트 길이가 1 ( + ), }:{2)이므로 버스트와 관련된 고유한 버스트 설명이 있다 버스트는 패턴의 위치에서 시작할 수 있다. 각 패턴은 로 시작하며 의 길이를 포함하고 있다 는 1{\}로 시작하는 모든 문자열 으로 생각할 수 있다 따라서 - 2 -1 가능한 패턴이 있다.d a total of bursts of length If we include the all-zero burst, we have vectors representing bursts of length
정리(암호어의 수에 대한 경계). If a binary -burst error correcting code has at most codewords.
Proof. Since , we know that there are bursts of length . Say the code has codewords, then there are 는 부호 워드에서 길이 ⩽ ℓ{\displaystyle \leqslant \ell}의 붕괴로 다르2^{\ell)}}codewords. 각각의 M{M\displaystyle}, 말을 다른 코드 < 거맀을 것이며, 1{\displaystyle<1}은 별개가 되야 한다.따라서, M}⩽ 2n{\displaystyle M(2^{\ell)}+1)\leqslant 2^{n}(2ℓ − 1+1). /( - + ). )을 암시한다
정리(Abramson의 한계). 1 2(+ ) \leqslant \ell \ {1}{1)이 선형, k )이고 or) 오류 수정 코드)인 경우 블록 길이는 다음을 충족해야 한다.
교정: 선형, ) 코드의 경우 2 2 코드 워드가 있다. 우리의 이전 결과에 의하면, 우리는
를) 분리하면 - -+ 1- -+ 1 1 1 은(는) 정수여야 하므로 - k -+ +가 있다

비고. = n- 을(를) 코드의 이중화라고 하며, 에이브람슨의 한계에 대한 대체 공식에서는 + ) - 1

화재코드[3][4][5]

일반적으로 순환 코드는 버스트 오류를 감지하는 강력한 도구지만, 이제는 단일 버스트 오류 보정 기능이 우수한 Fire Code라는 이름의 이진 순환 코드 제품군을 고려한다. 단일 버스트(burst) 길이로 수신된 코드 워드가 가지고 있는 모든 오류는 자리 고정 범위 내에 있음을 의미한다.

( x) 을(를) 2 }}에 대한 의 수정 불가능한 다항식이 되도록 하고, p의 기간으로 한다 The period of , and indeed of any polynomial, is defined to be the least positive integer such that Let be a positive integer satisfying and - p p}은 ( x) p 기간 다음 발전기 다항식으로 Fire Code displaystyle G하십시오.

(가) -burst-error 수정 코드라는 것을 보여주겠다.

보조정리 1.
증명. ( x) 을(를) 두 다항식 중 가장 큰 공통점이 되도록 한다. Since is irreducible, or . Assume then for some constant . But, is a divisor of since is a divisor of . 그러나 이는 ( x) () - 1+ 따라서 ()= , {\d(으)}, 보조를 증명하는 우리의 가정과 모순된다.
보조정리 2. ( ) () period 의 다항식인 경우 (x ) - 에만
증명. p경우 - 1=( - 1+ + +++ x/ ){\^{/p 따라서 ( ) - 1. x
이제 ( ) x - x을(를) 가정해 봅시다 k p{\ 은(으에 대한 유도에의해 p {\에 의해 분리된다. 베이스 케이스 = }이가) 그 뒤를 따른다. 따라서 k> 을(를) 가정해 보십시오 p( ) 은(는) period p {\이(가 있기 때문에) 두 가지를 모두 나눈다는 것을 알고 있다
But is irreducible, therefore it must divide both and ; thus, it also divides the difference of the last two polynomials, . Then, it follows that divides . Finally, it also divides: . By the induction hypothesis, p 그 다음 k p

2에 대한 유의점은 ( x)= p - (가) 마침표 있기 때문에 p - 1}-1}을로 나눈다는 것이다

정리. 방화 코드가 -버스트 오류 수정[4][5]

버스트 길이 length} 이하가 서로 다른 코세트에서 발생한다는 것을 보여줄 수 있다면, 우리는 그들을 수정 가능한 오류 패턴을 형성하는 코세트의 리더로 사용할 수 있다. 이유는 간단하다: 우리는 각각의 코셋이 그것과 관련된 독특한 신드롬을 가지고 있다는 것을 알고 있다. 그리고 만약 다른 길이의 모든 버스트가 다른 코셋에서 일어난다면, 모든 것이 독특한 신드롬을 가지고 있어서 오류 보정을 용이하게 한다.

정리 증명

Let and be polynomials with degrees and , representing bursts of length and }}: 각각 1, . \ell i 는 버스트의 시작 위치를 나타내며, 코드의 블록 길이보다 작다. 모순을 위해, x ( x) x ( x) x가 동일한 코세트에 있다고 가정한다. ( x)= x (x)+ x ( x) )}는 유효한 코드 워드(두 용어가 모두 동일한 코세트에 있으므로)이다. 일반성의 손실 없이, 나는 j{i\leqslant j\displaystyle}⩽. 분할 정리까지 − 나는 갈g(2ℓ − 1)+r, 정수 g{\displaystyle g}과 r, 0⩽ r<>2ℓ − 1{\displaystyler,0\leqslant r<, 2\ell)}에게{\displaystyle j-i=g(2\ell))+r,}. 우리는 다항식 v())을 고쳐 쓴{\와 같이 우리가:j 쓸 수 있다displ은(는) 다음과 같다.

Notice that at the second manipulation, we introduced the term . We are allowed to do so, since Fire Codes operate on . By our assumption, is a valid codeword, and thus, must be a multiple of 앞서 언급했듯이 ( ) 의 요인이 비교적 원시적이기 때문에 v( x) 은 x - + 1ell -11}로 v( ) 에 대해 도출된 마지막 식을 자세히 살펴보면 x - 1)+ 1 1}는 x - + 1 ell -1}+1}()로 구분된다. Therefore, is either divisible by or is . Applying the division theorem again, we see that there exists a polynomial with degree 다음과 같은 경우:

그러면 우리는 다음과 같이 쓸 수 있다.

이후 ℓ 1, ℓ 2⩽ ℓ{\displaystyle \ell_{1},\ell _{2}\leqslant \ell}우리는 단언할 수 있b ⩾ ℓ+는 b대리자를 암시하 δ,{\displaystyleb\geqslant \ell +\delta,}, ℓ − 1{\displaystyle b>, \ell)}양쪽의 학위 Equating.{\displaystyle b=2\ell -\ell_{2}+\delta.}b)2ℓ − ℓ 2+δ을 준다.그리고 > 확장 시 주의할 점은:

용어)b{\displaystyle x^{b}},지만 δ<>부터 b<>2ℓ − 1{\displaystyle \delta<>b<, 2\ell)}, 결과 식 d())(x2ℓ − 1+1){\displaystyle d())(x^{2\ell)}+1)}}, 따라서)0{\displaystyle d())=0}()) 해야 xb{\displaystyle x^{b}을 함유하고 있지 않는 것으로 보인다. 그리고 subsequly ( )+ ( )= This requires that , and . We can further revise our division of by to reflect that is ( ) 로 다시 대체하면

(( ) == - << 는 deg ( ( )< ( ( )= b))가 있다. 그러나 ( x) 은(는) 수정할 수 없으므로 b( ) 및 p( x 은()}이(가) 비교적 프라임이어야 한다. ( ) 이(가) 암호어이므로 - 1+ 1}은는) p( x) 로 구분할 수 없으므로 p ( ) x1}+1}로 구분해야 한다 Therefore, must be a multiple of . But it must also be a multiple of , which implies it must be a multiple of but that is precisely the block-length of the code. - i 은(는) n 보다 작으므로 n의 배수일 수 없다 ( x) 이(가) 코드 워드라는 우리의 가정은 틀렸으며, i( ){\x^{ xj ( ){\ x 서로 다른 코세트에 있으며, 따라서 수정 가능하다.

예: 화재 코드 수정 오류 5-버스트

위의 섹션에 제시된 이론과 함께 5 -버스트 오류 수정의 구성을 고려하십시오. 방화 코드를 구성하기 위해서는 우리 코드의 버스트 오류 수정 기능을 나타내는 수정 불가능한 다항식 p( x) 정수 ℓ ) 필요하며, 2 - 1 -1}이p의 기간으로 나눌 수 없는 속성을 충족해야 한다는 것을 기억하십시오. With these requirements in mind, consider the irreducible polynomial , and let . Since is a primitive polynomial, its period is 2 - = (가) 에 의해 분리되지 않음을 확인함 따라서,

화재 코드 발생기야 2 - 의 최소 공통 배수를 평가하여 코드의 블록 길이를 계산할 수 있다 즉, n= )= n 따라서 위의 소방법은 길이 이하의 버스트를 수정할 수 있는 주기 코드다.

바이너리 리드-솔로몬 코드

리드-솔로몬과 같은 특정 코드 패밀리는 이진수보다 큰 알파벳 크기로 작동한다. 이 특성은 그러한 코드의 강력한 버스트 오류 수정 기능을 부여한다. 에서 작동하는 코드를 생각해 보십시오 알파벳의 각 기호는 비트로 나타낼 수 있다. If is an Reed–Solomon code over , we can think of as an code over .

이러한 코드가 버스트 오류 보정에 강력한 이유는 기호가 m 비트로 표시되기 때문이며, 일반적으로 이러한 비트의 개수가 잘못되었든, 단일 비트 또는 모든 비트에 오류가 포함되어 있든, 디코딩적 관점에서 보면 i.s 단일 기호 오류. 즉, 버스트 오차는 군집 내에서 발생하는 경향이 있기 때문에, 여러 이진 오차가 단일 기호 오차의 원인이 될 가능성이 크다.

+ ) 개의 오류가 최대 개의 기호에 영향을 줄 수 있으며, + 의 버스트 }은 최대 개의 기호에 영향을 줄 수 있다는 점에 유의하십시오. 그러면 t + 버스트가 t+ 기호에 영향을 미칠 수 있으며 이는 - 심볼스-오류 수정 코드가 최대 - 1) + 1 길이로 버스트를 수정할 수 있음을 의미한다

일반적으로 에 대한 Reed-Solomon 코드를 수정하는 오류 {\ {은(는) 모든 조합을 수정할 수 있다.

(를) 수정할 수 있는 것 외에 길이 의 버스트 수가 더 적음.

이진 RS 코드의 예

(를)[ ] 33RS 코드 F NASA에 의해 카시니-Hygens 우주선에 채용되었다.[6] / = 기호 오류를 수정할 수 있다. 우리는 G{\에서 Binary Code G {\ G을(를) 생성한다. 각 기호는 (= {\비트를 사용하여 작성된다 따라서 바이너리 RS 코드는[, 33 ] }}개가 될 것이다. 길이 = 의 단일 버스트를 수정할 수 있다

인터리브 코드

인터리빙은 수녀원 코드를 임의 오류 수정기에서 버스트 오류 수정기로 변환하는 데 사용된다. 인터리브 코드 사용에 대한 기본적인 아이디어는 수신기에서 기호를 섞는 것이다. 이는 수신된 오류 버스트의 무작위화로 이어지며, 이는 가까운 위치에 있으며, 우리는 무작위 채널에 대한 분석을 적용할 수 있다. 따라서 송신기에서 인터리버가 수행하는 주요 기능은 입력 기호 시퀀스를 변경하는 것이다. 수신기에서 디인터리버는 수신된 시퀀스를 변경하여 송신기에서 원래 변경되지 않은 시퀀스를 되찾는다.

인터리버 용량 수정 중 버스트 오류 발생

행 및 열 주계열 순서 그림
정리. 일부 코드의 버스트 오류 수정 기능이 , 경우, } -way interleval은 이다.
Proof: Suppose that we have an code that can correct all bursts of length Interleaving can provide us with a code that can correct all bursts of length for any given . If we want to encode a message of an arbitrary length using interleaving, first we divide it into blocks of length . We write the entries of each block into a matrix using roh 그런 다음(, ) 코드를 사용하여 각 행을 인코딩한다. 우리가 얻을 것은 행렬이다. 자, 이 행렬은 열전주 순서로 읽혀지고 전송된다. 트릭은 전송된 단어에 h 이(가) 버스트가 발생하는 경우 각 행에 약 {\}}} 연속 오류가 발생한다는 것이다(더 구체적으로는 각 행에 길이 버스트 적어도 \ \ \ \lflflflflflflpround {\t}{\t}{\lflflflflflack {\ 최대 {\{\ {h , {\h\\ell ⩽ ⩽ { {h코드는각 행을 수정할 수 있다. 만약 h입니다. 따라서 틈새 있는(λ,λ k){\displaystyle(n,\lambda k\lambda)}부호.;λ ℓ,{\displaystyle h>, \lambda \ell,} 다음 적어도 한줄}}h({\displaystyle{\tfrac{h}{\lambda}보다 더 많은 연속 오류를 포함할 것이며, 길이 h{h\displaystyle}의 폭발을 해결할 수 있습니다.그 , ) 코드가 이 코드를 수정하지 못할 수 있음. 따라서 인터리브 k 코드의 오류 수정 능력은 정확히 . {\ 인터리브 코드의 BEC 효율성은 원래 , ){\ 코드와 동일하다. 이는 다음과 같은 이유에서 사실이다.

블록 인터리버

아래 그림은 가로 세로 3의 인터리버를 나타낸다.

블록 인터리버의 예

위의 인터리버는 블록 인터리버라고 불린다. 여기서 입력 기호는 행에 순차적으로 쓰여지고 출력 기호는 열을 순차적으로 읽어 얻어진다. 따라서 이는 배열의 형태로 나타난다. 일반적으로 은(는) 코드 워드의 길이입니다.

블록 인터리버 용량: For an block interleaver and burst of length the upper limit on number of errors is This is obvious from the fact that we are reading the output column wise and the number of rows is . By th의 정리t {\까지의 오류 보정 용량에 대해 허용되는 최대 버스트 길이는 . M + 의 버스트 길이의 경우 디코더가 실패할 수 있다

블록 인터리버의 효율성( ): 디코더가 인터리버 메모리에 실패할 수 있는 버스트 길이의 비율을 취함으로써 발견된다. 따라서 을(를) as로 공식화할 수 있다.

블록 인터리버의 단점 : 그림에서 분명히 칼럼을 순차적으로 읽게 되므로 수신자는 완전한 메시지를 수신한 후에만 단일 행을 해석할 수 있고 그 전에는 해석하지 않는다. 또한 수신기는 수신한 기호를 저장하기 위해서는 상당한 양의 메모리가 필요하며, 완전한 메시지를 저장해야 한다. 따라서 이러한 요인은 두 가지 단점을 야기한다. 하나는 대기 시간이고 다른 하나는 저장 공간이다. (대단히 많은 양의 메모리)이다. 이러한 단점은 아래에 설명된 경련성 인터리버를 사용함으로써 피할 수 있다.

콘볼루션 인터리버

크로스 인터리버는 멀티플렉서-디멀티플렉서 시스템의 일종이다. 이 시스템에서 지연선은 점진적으로 길이를 증가시키기 위해 사용된다. 지연 라인은 기본적으로 신호를 특정 시간 지속시간까지 지연시키기 위해 사용되는 전자회로다. (를) 지연 라인의 수로 d{\을(를) 각 지연 라인에 의해 도입된 기호의 수로 한다. 따라서 연속 입력 간의 구분 = 기호 코드 워드 ⩽. 따라서 입력 코드 워드의 각 기호는 구별되는 지연 라인에 있게 된다. 길이 의 버스트 오류가 발생하도록 하십시오. 연속된 기호 간의 분리가 , 이므로, 디인터리브 출력에 포함될 수 있는 오류 수는 + . 위 정리에서는 까지의 오류 보정 용량에 대해 허용되는 최대 버스트 길이는( d+ )( - ). )이다( + 1)( t- )+ , 디코더의 버스트 길이가 실패할 수 있다.

콘볼루션 인터리버의 예
디인터리버의 예

크로스 인터리버의 효율성 ( ) : 디코더가 인터리버 메모리에 고장날 수 있는 버스트 길이의 비율을 취함으로써 발견된다. 이 경우 인터리버의 기억은 다음과 같이 계산할 수 있다.

따라서 다음과 같이 을(를) 공식화할 수 있다.

크로스 인터리버 성능 : 위의 인터리버 그림에서 보듯이 출력은 각 지연선 끝에서 생성되는 대각선 기호에 불과하다. 이 경우 입력 멀티플렉서 스위치가 절반 정도 전환되면 수신기에서 첫 번째 행을 읽을 수 있다. 따라서, 우리는 첫 번째 행을 읽기 위해서 수신기에 최대 반 쪽 메시지를 저장해야 한다. 이는 스토리지 요구사항을 절반으로 줄인다. 이제 첫 번째 행을 읽으려면 절반의 메시지만 필요하기 때문에 대기 시간도 절반으로 줄어 블록 인터리버에 비해 양호한 개선 효과를 볼 수 있다. 따라서, 총 인터리버 메모리는 송신기와 수신기 사이에서 분할된다.

적용들

컴팩트 디스크

코드를 수정하지 않으면 디지털 오디오는 기술적으로 실현 가능하지 않을 것이다.[7] 리드-솔로몬 코드는 모든 비트가 잘못된 기호를 쉽게 수정할 수 있는 것처럼 단일 비트 오류로 손상된 기호를 수정할 수 있다. 따라서 버스트 오류를 수정하는 데 RS 코드가 특히 적합하다.[5] 지금까지 RS코드의 가장 일반적인 적용은 컴팩트디스크에 있다. RS 코드에 의해 제공되는 기본적인 오류 수정 외에 크로스 인터리버에 의해 디스크의 긁힘으로 인한 버스트 에러로부터 보호가 제공된다.[3]

현재의 컴팩트 디스크 디지털 오디오 시스템은 네덜란드의 N. V. 필립스와 일본의 소니사가 개발하였다(1979년 체결된 협정).

콤팩트 디스크는 투명한 플라스틱 코팅으로 코팅된 120mm 알루미늄 디스크로 구성되며, 길이 약 5km의 나선 트랙으로, 최대 0.25m/s의 일정한 속도로 파장 레이저에 의해 광학적으로 스캔된다. 이 일정한 속도를 달성하기 위해 트랙의 안쪽 부분에서 스캔하는 동안 디스크 회전 속도가 최대 8rv/s에서 바깥쪽 부분에서는 최대 3.5rv/s까지 다양하다. 구덩이와 착륙은 트랙을 따라 2진수 데이터를 구성하는 강하(깊이 0.12μm)와 평평한 세그먼트(0.6μm 폭)이다.[8]

CD 프로세스는 다음 하위 프로세스의 시퀀스로 추상화될 수 있다: -> 신호 소스의 채널 인코딩 -> 마스터 디스크를 준비하고, 사용자 디스크를 만들고, 재생하는 동안 사용자 디스크에 내장된 신호를 감지하는 기계적인 하위 프로세스 – 채널 -> 사용자 디스크에서 감지된 신호 디코딩

이 과정은 버스트 오류와 무작위 오류가 모두 발생한다.[7] 버스트 오류는 디스크 소재(알루미늄 반사필름의 결함, 투명한 디스크 소재의 반사율 불량), 디스크 생산(디스크 형성 및 디스크 절단 등의 결함), 디스크 취급(scratch - 일반적으로 얇은 레이디얼 및 녹음 방향과 직교하는 직교) 및 플레이백 메커니즘의 변화를 포함한다. 무작위 오류에는 재구성된 신호파의 지터와 신호의 간섭으로 인한 오류가 포함된다. CIRC(Cross-Interleaved Reed-Solomon code)는 CD 공정에서 오류 감지 및 보정을 위한 기반이다. 순차적으로 최대 3,500비트(CD 표면에 보이는 길이 2.4mm)의 버스트를 수정하고 사소한 스크래치로 인해 발생할 수 있는 최대 12,000비트(8.5mm)의 버스트를 보정한다.

인코딩: 음파는 A/D 컨버터에 의해 샘플링되고 디지털 형태로 변환된다. 음파는 진폭에 대해 샘플링된다(44.1kHz 또는 44,100 쌍으로, 스테레오 사운드의 좌우 채널에 대해 각각 하나씩). 인스턴스의 진폭에는 길이 16의 이진 문자열이 할당된다. 따라서 각 표본은 F 또는 4 F 8 바이트의 데이터에서 2개의 이진 벡터를 생성한다. 녹음된 음의 매 초마다 44,100 × 32 = 1,411,200비트(176,400바이트)의 데이터가 나온다.[5] 1.41 Mbit/s 샘플링된 데이터 스트림은 오류 수정 시스템을 통과하여 결국 1.88 Mbit/s의 스트림으로 변환된다.

인코더를 위한 입력은 24개의 8비트 기호로 구성된다(A/D 컨버터의 16비트 샘플 12개, 좌우 데이터(음향) 소스에서 각각 6개). A frame can be represented by where and are bytes from the left and right channels from the sample of the frame.

처음에 바이트는 L 3 R R 3 3 3 R 4 로 표현되는 새로운 프레임을 형성하도록 순열된다. 여기서 , R 은(는) 2개의 간섭 프레임 후 프레임에서 i th왼쪽과 오른쪽 샘플을 나타낸다.

다음으로, 이 24개의 메시지 기호는 에 대한 RS 코드 축약인 C2(28,24,5) Reed-Solomon 코드를 사용하여 인코딩된다 최소 거리 5인 2오류 수정. 이렇게 하면 4바이트의 중복성이 추가되고, P {1}P_}}: 새로운 프레임을 형성한다: L R 5 P 2 4 . 그 결과 28개의 심볼 코드는 a(28.4) 교차 인터리버를 통과하여 28개의 인터리브 기호로 이어진다. 그런 다음 이러한 코드들은 C1(32,28,5) RS 코드를 통과하여 32개의 코드화된 출력 기호를 생성한다. 다음 코드 워드의 짝수 기호가 있는 코드 워드의 홀수 기호들을 추가로 재정렬하여 위의 4프레임 지연 인터리빙 후에도 여전히 존재할 수 있는 짧은 버스트를 분리한다. 따라서 매 24개의 입력 기호에 R= / 를 제공하는 32개의 출력 기호가 있을 것이다 마지막으로 제어 및 표시 정보의 1바이트가 추가된다.[5] 그 다음 33바이트 각각은 EFM(814 변조)과 3개의 병합 비트를 추가하여 17비트로 변환된다. 따라서 6개 샘플의 프레임은 33바이트 × 17비트(561비트)를 생성하며, 여기에 24개의 동기화 비트와 3개의 병합 비트가 추가되어 총 588비트가 생성된다.

디코딩: CD 플레이어(Circ 디코더)는 32개의 출력 기호 데이터 스트림을 수신한다. 이 하천은 디코더 D1을 먼저 통과한다. 디코딩 방법을 결정하고 제품 성능을 최적화하는 것은 CD 시스템의 개별 설계자들의 몫이다. 최소 거리 5 D1, D2 디코더는 각각 조합을 수정할 수 있으며 솔루션에서 D1은 단일 오차를 수정하도록 설계되어 있다[5] 그리고 1개 이상의 오류가 발생할 경우 이 디코더는 28개의 지우개를 출력한다. 다음 단계에서 디인터레버는 28개의 D2 암호에 걸쳐 이러한 지우개를 분배한다. 다시 대부분의 솔루션에서 D2는 삭제(간단하고 비용이 적게 드는 솔루션)만을 다루기로 되어 있다. 4개 이상의 소거가 발생하는 경우 D2에 의해 24개의 소거가 출력된다. 그 후 오류 은폐 시스템은 수정할 수 없는 기호의 경우 보간(주변 기호로부터)을 시도하며, 그러한 잘못된 기호에 해당하는 소리가 음소거된다.

CERC의 성능:[7] CERC는 단순한 선형 보간법으로 긴 버스트 오류를 은폐한다. 2.5mm의 트랙 길이(4000비트)는 수정 가능한 최대 버스트 길이, 7.7mm 트랙 길이(1만2300비트)는 보간할 수 있는 최대 버스트 길이다. 표본 보간률은 비트 오류율(BER) = -에서 10시간마다 1회, BER = - 3 = 분당 1000회 샘플링 = 10- 불가능한 오류 샘플(클릭): 마다 미만, BER = - 3 styleankset 10-daystyledaystyledaystypecastyledaystyleepecastyledaystyle 4

참고 항목

참조

  1. ^ a b c d 다중 단계 버스트 보정 및 단일 버스트 보정 코드에 대한 코딩 한계
  2. ^ 정보와 코딩의 이론: 학생판, R. J. 맥엘리체
  3. ^ a b c 링, 산, 차오핑싱. 코딩 이론: 첫 번째 과정. 영국 케임브리지: 케임브리지 UP, 2004. 인쇄하다
  4. ^ a b 문, 토드 K. 오류 수정 코딩: 수학적 방법과 알고리즘. 호보켄, NJ: 와일리-인터사이언스, 2005. 인쇄하다
  5. ^ a b c d e f 린, 슈, 다니엘 J. 코스텔로 오류 제어 코드화: 기본 및 응용 프로그램. Upper Saddle River, NJ: Pearson-Prentice Hall, 2004. 인쇄하다
  6. ^ http://quest.arc.nasa.gov/saturn/qa/cassini/Error_correction.txt Wayback Machine에 2012-06-27 보관
  7. ^ a b c 대수적 오류 제어 코드 (Autumn 2012) – 스탠포드 대학교의 유인물
  8. ^ 맥엘리스, 로버트 J 정보 부호화 이론: 의사소통을 위한 수학적 틀 MA: Addison-Wesley Pub, Advanced Book Program, 1977. 인쇄하다