터보 코드

Turbo code

정보 이론에서 터보 코드(원래 프랑스어 터보 코드)는 1990~91년경에 개발된 고성능 전방 오류 수정(FEC) 코드의 한 종류로 1993년에 처음 공개되었습니다.이 코드들은 최대 채널 용량 또는 섀넌 한계에 근접한 최초의 실용적인 코드였으며, 이는 특정 소음 수준이 주어졌을 때 신뢰할 수 있는 통신이 가능한 코드 속도의 이론상 최대값이었다.터보 코드는 3G/4G 이동통신 (: UMTS 및 LTE) 및 (심층 공간) 위성 통신뿐만 아니라 설계자가 데이터 손상 노이즈가 있는 경우 대역폭 또는 지연 시간이 제한된 통신 링크를 통해 신뢰할 수 있는 정보 전송을 달성하고자 하는 기타 애플리케이션에 사용됩니다.터보 코드는 Low-Density Parity Check(LDPC; 저밀도 패리티 체크) 코드와 경쟁합니다.LDPC 코드는 유사한 성능을 제공합니다.

"터보 코드"라는 이름은 정상적인 터보 코드 디코딩 중에 사용되는 피드백 루프에서 유래되었으며, 이는 엔진 터보 차징에 사용되는 배기 피드백과 유사합니다.Hagenauer는 부호화 [1]과정에 피드백이 없기 때문에 터보 코드라는 용어는 잘못된 명칭이라고 주장해왔다.

역사

터보 코드에 대한 기본 특허 출원은 1991년 4월 23일에 이루어졌다.특허 출원서에는 클로드 베루가 터보 코드의 유일한 발명자로 기재되어 있습니다.특허 출원 결과, 미국 특허 5,446,747을 포함한 여러 특허가 생성되어 2013년 8월 29일에 만료되었습니다.

터보 코드에 관한 최초의 공개 논문은 "Near Shannon Limit Error-correcting Coding and Decoding: Near Shannon Limit Error-correcting Coding 터보 코드"[2]입니다.이 논문은 1993년 IEEE 국제통신회의 의사록에 게재되었습니다.1993년 논문은 공간 제약으로 인해 결합된 세 개의 개별 제출물로 구성되었다.이 합병에 의해, Berrou, Glavieux, 및 Titimajshima3명의 저자가 게재되었습니다.그러나, 원래의 특허 출원으로부터, Berrou가 터보 코드의 유일한 발명자이며, 논문의 다른 저자들이 핵심 [improper synthesis]개념 이외의 자료를 제공했다는 것은 명백하다.

터보 코드는 도입 당시 매우 혁명적이어서 코딩 분야의 많은 전문가들은 보고된 결과를 믿지 않았다.성능이 확인되었을 때 코딩 분야에서 작은 혁명이 일어나 다른 많은 유형의 반복 신호 처리를 조사하게 되었습니다.

터보 코드의 첫 번째 클래스는 병렬 연결 컨볼루션 코드(PCCC)였습니다.1993년 최초의 병렬 터보 코드가 도입된 이후 직렬 버전의 직렬 연결 컨볼루션 코드 및 반복 누적 코드를 포함하여 많은 다른 종류의 터보 코드가 발견되었습니다.반복 터보 디코딩 방법은 반복 디코더의 실제 구현에는 너무 복잡하지만 리드-솔로몬 보정 컨볼루션 코드를 포함한 보다 전통적인 FEC 시스템에도 적용되어 왔다.터보 이퀄라이제이션도 터보 코딩의 개념에서 나왔다.

터보 코드와 더불어, Berrou는 특허에 기술된 터보 코드의 구현 예에 사용되는 재귀 체계적 컨볼루션(RSC) 코드도 발명했다.RSC 코드를 사용하는 터보 코드는 RSC 코드를 사용하지 않는 터보 코드보다 성능이 우수합니다.

터보 코드 이전에는 RSV 코드라고도 알려진 내부 Viterbi 복호화된 짧은 구속조건 길이 컨볼루션 코드와 결합된 외부 리드-솔로몬 오류 수정 코드를 기반으로 한 직렬 연결 코드였습니다.

이후 논문에서 베루는 "G. Battail, J. Hagenauer, P"의 직관에 공을 돌렸다.Hoher는 80년대 후반에 확률론적 처리의 관심을 강조했습니다."그는 "R"를 추가한다. 갤러거와 M.태너는 이미 일반적인 원리가 밀접하게 관련되어 있는 코딩과 복호화 기술을 상상하고 있었다."라고 말했지만,[3] 그 당시 필요한 계산은 실용적이지 않았다.

인코더 예시

터보 코드에는 다양한 컴포넌트인코더, 입출력비, 인터리버 및 펑크 패턴을 사용하는 다양한 인스턴스가 있습니다.이 인코더 구현 예에서는 전형적인 터보 인코더를 설명하고 병렬 터보 코드의 일반적인 설계를 보여 줍니다.

이 인코더 실장에서는 3개의 비트 서브블록이 송신됩니다.첫 번째 서브블록은 페이로드 데이터의 m비트블록입니다두 번째 서브블록은 페이로드 데이터에 대한 n/2 패리티 비트이며, 재귀적 시스템 컨볼루션 코드(RSC 코드)를 사용하여 계산됩니다.세 번째 서브블록은 payload 데이터의 기존 치환에 대한 n/2 패리티 비트이며, RSC 코드를 사용하여 다시 계산됩니다.따라서 패리티 비트의 용장하지만 다른2개의 서브블록이 payload와 함께 전송됩니다.전체 블록에는 코드 레이트 m/(m + n)인 m + n 비트의 데이터가 있습니다.페이로드 데이터의 순열인터리버라고 불리는 장치에 의해 수행됩니다.

하드웨어 면에서는 이 터보 코드인코더는 그림에 나타나듯이2개의 동일한 RSC 코드1 C2 C로 구성됩니다.이들은 병렬 연결이라고 불리는 연결 방식을 사용하여 서로 연결됩니다.

Turbo encoder.svg

그림에서 M은 메모리 레지스터입니다.지연 라인과 인터리버는 입력 비트d를k 다른 시퀀스로 표시합니다.첫 번째 반복에서는 인코더의 계통성에 의해 입력 시퀀스 dk 인코더의 양쪽 출력k x, y1k 또는2k y에 나타난다.인코더1 C2 C를 n2 n의 반복으로 사용하는1 경우, 그 환율은 각각 다음과 같습니다.

디코더

디코더는, 상기의 인코더와 같은 방법으로 구축되어 있습니다.두 개의 기본 디코더는 서로 연결되지만 병렬이 아닌 직렬로 연결됩니다. C (\display \ DEC_{1 저속(1 \ \ R_{으로 동작합니다. C 1 (\ \ C_1})는 })에 됩니다 C_ 대응합니다. C 1 지연의 이 되는 소프트한 결정을 내립니다.같은 지연이 인코더 내의 지연 회선에 의해 발생합니다. E \으로 L 2 지연이 합니다.

Turbo decoder.svg

여기서 2개의 디코더 사이에 설치된 인터리버는 1 \ DEC_ 출력에서 하는 에러 버스트를 분산하기 위해 사용됩니다.DI 블록은 다중 해제 및 삽입 모듈입니다.스위치로 동작하며 입력 비트를 D 1 DEC_ 리다이렉트하고 다른 한 시점에서는 D C DEC_})로 리다이렉트 합니다.OFF 상태에서는 y(\displaystyle 입력 에 패딩 비트(제로)를 사용합니다.

메모리리스 AWGN 채널을 고려하여 k번째 반복 시 디코더가 랜덤 변수 쌍을 수신한다고 가정합니다.

서 kdisplaystyle \k})는 이 동일한 독립된 노이즈 컴포넌트입니다 y 2 \ \ }) 。k\ \ \ textstyle y_k} {ncoder 출력.

중복 정보는 DI를 통해 k k}= 2 됩니다.

1 DEC_ 다음과 같이 쉽게 결정할 수 있습니다.

E 2 ( k) \ (_ { } )는 우도비(LLR )의 로그라고 불립니다.p( k ) , { , , p _ p _ tyle p _ p _ 데이터 비트). \}) 비트를i(\ i로 해석할 가능성을 나타냅니다.LLR하면 2(\ DEC_{ 어려운 결정입니다.

Viterbi 알고리즘은 APP를 계산할 수 없기 때문에 1 DEC_에서는 사용할 수 없습니다.대신 변경된 BCJR 알고리즘을 사용합니다. C DEC_의 경우 Viterbi 알고리즘이 적합합니다.

단, 1 DEC_ 사용 가능한 다중 정보의 적절한 부분만을 사용하기 에 표시된 구조는 최적의 구조가 아닙니다.구조를 개선하기 위해 피드백 루프가 사용됩니다(그림의 점선 참조).

소프트 의사결정 접근법

디코더 프론트 엔드는 데이터 스트림의 각 비트에 대해 정수를 생성합니다.이 정수는 비트가 0 또는1일 가능성을 나타내는 척도로 소프트비트라고도 불립니다.정수는 [-127, 127] 범위에서 추출할 수 있습니다.

  • -param은 "param 0"을 의미합니다.
  • -100은 "0"을 의미합니다.
  • 0은 "0 또는 1 중 하나"를 의미합니다.
  • 100은 "매우 가능성이 높은 1"을 의미합니다.
  • 127은 "1"을 의미합니다.

이로 인해 프런트 엔드에서 데이터 스트림에 확률론적 측면이 도입되지만 0 또는 1보다 각 비트에 대한 더 많은 정보가 전달됩니다.

예를 들어, 각 비트에 대해 기존의 무선 수신기의 프론트 엔드는 내부 아날로그 전압이 소정의 역치 전압 레벨보다 높은지 또는 낮은지를 판단해야 합니다.터보 코드 디코더의 경우 프론트 엔드는 내부 전압이 지정된 임계값에서 얼마나 떨어져 있는지를 나타내는 정수 측도를 제공합니다.

데이터의 m + n비트 블록을 디코딩하기 위해 디코더 프런트 엔드는 데이터 스트림의 각 비트에 대해 하나의 우도 측정값 블록을 생성합니다.2개의 병렬 디코더가 있으며 각 디코더는n'2비트 패리티 서브블록두 디코더 모두 payload 데이터에 대해 m 가능성 하위 블록을 사용합니다.두 번째 패리티 서브블록에서 동작하는 디코더는 코더가 이 서브블록에 사용한 치환을 인식하고 있습니다.

비트를 찾기 위해 가설을 해결하는 중

터보 코드의 주요 혁신은 두 디코더 간의 차이를 조정하기 위해 우도 데이터를 사용하는 방법입니다.2개의 컨볼루션 디코더 각각은 페이로드 서브블록의 m비트 패턴에 대한 가설을 생성한다(파생 우도 포함).가설의 비트 패턴을 비교하고 서로 다를 경우 디코더는 가설의 각 비트에 대해 갖는 파생 우도를 교환합니다.각 디코더는 다른 디코더로부터 도출된 우도 추정치를 짜넣어 페이로드 내의 비트에 대한 새로운 가설을 생성한다.그런 다음 이 새로운 가설을 비교합니다.이 반복 프로세스는 2개의 디코더가 payload의 m비트 패턴에 대해 동일한 가설을 제시할 때까지 계속됩니다(일반적으로 15~18 사이클).

이 과정과 크로스워드나 스도쿠와 같은 크로스 레퍼런스 퍼즐을 푸는 과정 사이에 유추할 수 있다.부분적으로 완성되어 있는 크로스워드 퍼즐을 생각해 봅시다.두 명의 퍼즐 해결사(디코더)가 이 문제를 해결하기 위해 노력하고 있다. 하나는 "다운" 단서(패리티 비트)만 가지고 있고 다른 하나는 "크로스" 단서만 가지고 있다.먼저, 두 해결사 모두 각각의 글자에 대해 얼마나 자신 있는지를 적으면서 자신의 단서에 대한 답(하이포테즈)을 추측합니다(페이로드 비트).그런 다음 서로 답을 주고받고 신뢰 등급을 주고받으며 어디서 어떻게 다른지 알아봅니다.이 새로운 지식을 바탕으로 두 사람 모두 최신 답변과 신뢰도를 제시하며 동일한 솔루션으로 수렴될 때까지 모든 과정을 반복합니다.

성능

터보 코드는 물리적으로 실현 가능한 디코딩 구조와 함께 채널에 랜덤하게 나타나는 코드의 매력적인 조합으로 인해 성능이 우수합니다.터보 코드는 에러 플로어의 영향을 받습니다.

터보 코드를 사용한 실용적인 응용 프로그램

통신:

베이지안 공식

인공지능의 관점에서 터보 코드는 베이지안 네트워크에서 [5]루피한 믿음 전파의 한 예로 간주될 수 있다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Joachim Hagenauer, Joachim; et al. "Iterative Decoding of Binary Block and Convolutional Codes" (PDF). Archived from the original (PDF) on 11 June 2013. Retrieved 20 March 2014.
  2. ^ Berrou, Claude; Glavieux, Alain; Thitimajshima, Punya, Near Shannon Limit Error – Correcting, retrieved 11 February 2010
  3. ^ Berrou, Claude, The ten-year-old turbo codes are entering into service, Bretagne, France, retrieved 11 February 2010
  4. ^ 디지털 비디오 방송(DVB), 위성 디스트리뷰션 시스템용 인터랙션 채널, ETSI EN 301 790, V1.5.1, 2009년 5월
  5. ^ McEliece, Robert J.; MacKay, David J. C.; Cheng, Jung-Fu (1998), "Turbo decoding as an instance of Pearl's "belief propagation" algorithm" (PDF), IEEE Journal on Selected Areas in Communications, 16 (2): 140–152, doi:10.1109/49.661103, ISSN 0733-8716.

추가 정보

출판물

  • 바타일, 제라드"터보 코드를 이해하기 위한 개념적 프레임워크." IEEE 저널 16.2(1998년) : 245~254.
  • Brejza, Matthew F. 등「에너지 제약이 있는 무선 애플리케이션을 위한 터보 코딩과 에너지 인식 설계 가이드 라인 20년간」IEEEE Communications Survey & Tutorials 18.1 (2016) : 8 ~28 。
  • 가르손 보호르케스, 로날드, 샤벨 압델 누르, 캐서린 두야드."패리티 펑크 제한 인터리버로 5G용 터보 코드 개선"터보 코드 및 반복 정보 처리(ISTC), 2016년 제9회 국제 심포지엄 on.IEEE, 2016.

외부 링크