KR20090127878A - 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치 - Google Patents

데이터를 인코딩 및 디코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20090127878A
KR20090127878A KR1020097017892A KR20097017892A KR20090127878A KR 20090127878 A KR20090127878 A KR 20090127878A KR 1020097017892 A KR1020097017892 A KR 1020097017892A KR 20097017892 A KR20097017892 A KR 20097017892A KR 20090127878 A KR20090127878 A KR 20090127878A
Authority
KR
South Korea
Prior art keywords
interleaver
size
input block
block
interleaving
Prior art date
Application number
KR1020097017892A
Other languages
English (en)
Inventor
아지트 님발커
유페이 더블유. 블랑켄십
브라이언 케이. 클라슨
Original Assignee
모토로라 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 모토로라 인코포레이티드 filed Critical 모토로라 인코포레이티드
Publication of KR20090127878A publication Critical patent/KR20090127878A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2739Permutation polynomial interleaver, e.g. quadratic permutation polynomial [QPP] interleaver and quadratic congruence interleaver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/275Interleaver wherein the permutation pattern is obtained using a congruential operation of the type y=ax+b modulo c
    • H03M13/2753Almost regular permutation [ARP] interleaver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2771Internal interleaver for turbo codes
    • H03M13/2775Contention or collision free turbo code internal interleaver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2789Interleaver providing variable interleaving, e.g. variable block sizes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/65253GPP LTE including E-UTRA

Abstract

비경쟁 인터리버를 이용하여 터보 인코딩하기 위한 방법 및 장치가 본원에서 제공된다. 동작하는 동안 사이즈 K'의 입력 블럭이 수신된다. 원래의 입력 블럭 및 인터리빙된 입력 블럭은 코드워드 블럭을 얻기 위해 인코딩되는데, 여기에서 원래의 입력 블럭은 사이즈 K'의 인터리버 및 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하여 인터리빙되며, 여기에서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. K', f1, f2는 테이블의 적어도 하나의 행으로부터 취해진다. 코드워드 블럭은 채널을 통해 송신된다.
비경쟁 인터리버, 터보 인코딩, QPP 인터리버

Description

데이터를 인코딩 및 디코딩하기 위한 방법 및 장치{METHOD AND APPARATUS FOR ENCODING AND DECODING DATA}
본 발명은 일반적으로 데이터를 인코딩 및 디코딩하는 것에 관한 것으로, 특히 터보 인코딩 및 디코딩하기 위한 방법 및 장치에 관한 것이다.
유선 및 무선 링크들을 통한 디지털 데이터 송신은, 예를 들어, 링크 또는 채널의 노이즈에 의해, 다른 송신들로부터의 간섭에 의해, 또는 다른 환경 요인들에 의해 오류가 발생될 수 있다. 채널에 의해 도입된 에러들을 제거하기 위해서, 많은 통신 시스템들이 통신을 지원하는데에 에러 정정 기술들을 이용한다.
에러 정정을 위해 활용되는 하나의 기술은, 정보 블럭을, 채널을 통해 송신하기 전에 터보 코딩하는 것이다. 이러한 기술을 활용하여, 통신 시스템의 송신기 내의 인코더는 길이 K' 비트의 입력 블럭 u를 N 비트의 코드워드(codeword) 블럭 x로 인코딩할 것이다. 그 후 코드워드 블럭은, 아마도, IEEE 802.16e 사양서에서 정의된 바와 같은 채널 인터리빙(channel interleaving)과 같은 추가 프로세싱을 한 후에, 채널을 통해 송신된다. 수신기에서, 터보 디코더는 길이 N의 수신된 신호 벡터 y를 입력으로서 취하고, 벡터 u의 추정
Figure 112009052626307-PCT00001
을 생성한다.
일반적으로 터보 인코더는 두 개의 구성 컨볼루셔널 인코더들(constituent convolutional encoders)로 구성된다. 제1 구성 인코더는 그것의 원래의 순서로 입력으로서 입력 블럭 u를 취하고, 제2 구성 인코더는 입력 블럭 u를 터보 인터리버(turbo interleaver) π를 통해 통과시킨 후에 그것의 인터리빙된 순서로 입력 블럭 u를 취한다. 터보 인코더 출력 x는, (입력 블럭 u와 동일한) 구조적 비트들(systematic bits), 제1 구성 인코더로부터의 패리티 비트들, 및 제2 구성 인코더로부터의 패리티 비트들로 구성된다.
이에 대응하여, 통신 시스템의 수신기 내의 터보 디코더는, 각 구성 코드마다 하나씩, 두 개의 구성 컨볼루셔널 디코더들로 구성된다. 구성 디코더들은 인터리버 π 및 대응하는 디인터리버 π-1에 의해 분리된다. 로그 우도율(log-likelihood ratio : LLR)의 포맷으로 된 메세지들이 구성 디코더들 사이에 반복하여 전달된다. 결정
Figure 112009052626307-PCT00002
은 몇 차례의 반복 후에 생성된다.
터보 인터리버 π는 터보 코드 디자인 내의 중요한 구성요소이다. 이는, 의사 랜덤 방식(pseudo-random fashion)으로 입력 블럭 u을 스크램블링(scrambling)함으로써, 우수한 가중치 분포를 갖는 코드워드들 x을 제공하게 되어, 우수한 에러 정정 기능들을 제공하는 역할을 한다. 디코딩 성능 외에도, 터보 인터리버 π의 정의는 수신기 내의 터보 디코더의 구현에 많은 영향을 준다. 메모리 액세스 경쟁이 없는 높은 레벨의 병렬 프로세싱을 허용하기 위해서, 터보 인터리버 π가 비경쟁(contention-free) 특성들을 갖는 것이 필요하다.
도 1은 송신기의 블럭도.
도 2는 도 1의 터보 인코더의 블럭도.
도 3은 수신기의 블럭도.
도 4는 도 4의 터보 디코더의 블럭도.
도 5는 도 1의 수신기의 동작을 나타내는 흐름도.
도 6은 도 3의 수신기의 동작을 나타내는 흐름도.
상술된 비경쟁 인터리버들의 필요성을 다루기 위해, 비경쟁 인터리버를 이용하여 터보 인코딩하기 위한 방법 및 장치가 본원에서 제공된다.
동작 동안에, 사이즈 K'의 입력 블럭이 수신된다. 원래의 입력 블럭 및 인터리빙된 입력 블럭은 코드워드 블럭을 얻기 위해 인코딩되는데, 여기에서 원래의 입력 블럭은 사이즈 K'의 인터리버 및 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하여 인터리빙되며, 여기에서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터(factor)들이다. K', f1, f2의 값들은 표 2의 적어도 하나의 행으로부터 취해진다. 코드워드 블럭은 채널을 통해 송신된다.
본 발명의 또 다른 실시예에서, 원래의 입력 블럭은 인터리버 사이즈 K'의 인터리버 및 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하여 인터리빙되는데, 여기에서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. K', f1, f2는 표 3의 적어도 하나의 행으로부터 취해진다.
데이터를 인코딩 및 디코딩하는 것을 설명하기 전에, 필요한 배경을 설정하기 위해서 이하의 정의들이 제공된다.
Figure 112009052626307-PCT00003
K는 정보 블럭의 사이즈를 나타낸다.
Figure 112009052626307-PCT00004
K'는 인터리버 사이즈를 나타낸다(즉, 터보 코드 인터리버가 정의되는 입력 블럭 사이즈).
Figure 112009052626307-PCT00005
Kfiller는 정보 블럭에 추가된 필러 비트들(filler bits)의 수를 나타낸다.
Figure 112009052626307-PCT00006
π는 터보 코드 내부 인터리버(turbo code internal interleaver)를 나타낸다.
Figure 112009052626307-PCT00007
플로어링 연산(flooring operation)
Figure 112009052626307-PCT00008
은 x 보다 작거나 동일한 가장 큰 정수를 나타내고, 실링 연산(ceiling operation)
Figure 112009052626307-PCT00009
은 x 보다 크거나 동일한 가장 작은 정수를 나타낸다.
Figure 112009052626307-PCT00010
u는 입력 블럭을 나타내는데, 이것은 K'의 길이를 가지며, 송신기에서 터보 인코더로 보내진다.
Figure 112009052626307-PCT00011
는 추정된 입력 블럭을 나타내는데, 이것은 K'의 길이를 가지며, 수신기에서 터보 디코더에 의해 생성된다. 디코딩 에러가 없을 때
Figure 112009052626307-PCT00012
인 점에 유의한다. 그렇지 않은 경우에는
Figure 112009052626307-PCT00013
이다.
이제 동일한 참조부호들이 동일한 컴포넌트들을 나타내는 도면들로 전환하면, 도 1은 송신기(100)의 블럭도이다. 도시된 바와 같이, 송신기(100)는 필러 삽입 회로(filler insertion circuitry)(109), 터보 인코더(101), 인터리버 사이즈 결정 회로(interleaver size determination circuitry)(103), 인터리버 파라미터 테이블(105) 및 송신기(107)를 포함한다. 인코더(101)는 바람직하게는 레이트-1/3 GPP 터보 코더(rate-1/3 3GPP turbo coder)이지만, 인코더(101)를 동작시키기 위해 본원에서 설명된 기술들은, 테일 비트들(tail bits)을 이용하거나 또는 이용하지 않는 터보 코딩을 수행하는 터보 코더들, 테일 바이팅(tail biting), 바이너리(binary) 또는 듀오 바이너리(duo-binary) 터보 코더들, 또는 상이한 레이트 매칭(rate-matching) 및 펑쳐링(puncturing) 기술들을 이용하는 터보 코더들 등을 포함하나 이들에 한정되지 않는 다른 인코더들에 적용될 수 있다. 회로(103)는 인터리버 사이즈 K'를 결정하는데, 여기에서 K'는 사이즈들의 집합으로부터의 것이며; 여기에서 사이즈들의 집합은 K'=ap×f, pmin≤p≤pmax; fmin≤f≤fmax을 포함하며, 여기에서 a는 정수이고, f는 fmin 및 fmax 사이의 연속하는 정수이고, p는 pmin 및 pmax 사이의 정수값들을 취하고, a>1이고, pmax>pmin이고, pmin>1이다.
송신기(100)의 동작 동안에, 사이즈 K의 정보 블럭이 터보 인코더(101)에 의 해 인코딩될 필요가 있다. 다수의 서로 다른 K들이 이용되는 일부 통신 시스템의 경우, 모든 정보 블럭 사이즈 K에 대해 비경쟁(CF) 인터리버를 정의하는 것은 비효율적이다(그리고 종종 불가능하다). 우수하게 디자인된 CF 인터리버들의 작은 집합(K')이 모든 정보 블럭 사이즈들을 커버할 수 있다면, 그것은 바람직하다. 정보 블럭 사이즈가 K인 경우, 적합한 인터리버 사이즈 K'는, 이용 가능한 사이즈들의 집합(예를 들면, 테이블(105) 내에 리스팅된 인터리버 사이즈들)으로부터 회로(103)에 의해 선택될 수 있다. 정보 블럭은 그 후 회로(109)에 의해 사이즈 K'의 입력 블럭 내에 채워 넣어지고, 입력으로서 터보 인코더(101)에게 보내진다. 전형적인 구성은 (필러 삽입 회로(109)를 통해) Kfiller 필러 비트들로 정보 블럭을 채우는 것이다. 용어 "사이즈" 및 "길이"가 블럭 또는 벡터 내의 엘리먼트들의 수를 나타내는데에 서로 교환가능하게 이용된다는 점에 유의한다.
일단 K'가 회로(103)에 의해 선택되면, 그것은 터보 인코더(101)에 제공된다. 인코딩 동안에, 비경쟁 인터리버(도 1에 도시되지 않음)가 이용될 수 있다. 예를 들면, 인터리버는 순열 π(i)=(iP0+A+d(i)) mod K'를 이용할 수 있는데, 여기서 0≤i≤K'-1은 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, P0는 K'에 서로 소(relatively prime)인 수이고, A는 상수이고, C는 K'를 나누는 작은 수이고, d(i)는 d(i)=β(i mod C)+P0×α(i mod C) 형태의 "디더(dither)" 벡터인데, 여기서 α(·) 및 β(·)는 0≤i≤K'-1에 대해 주기적으로 적용되는, 각각이 길이 C인 벡터들이다. 또 다른 예로서, 인터리버는 순열 π(i)=(f1×i+f2×i2) mod K'를 이용할 수 있는데, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. 일반적으로 심볼은 다수의 비트들로 구성될 수 있고, 인터리빙하는 단계는 심볼 내의 비트들을 순열로 배치하는 추가 단계를 이용할 수 있다. 일반성을 잃지 않고, 하기의 논의는, 심볼이 하나의 비트만으로 구성되는 일반적인 경우를 고려하고(따라서 심볼 내의 비트들을 순열로 배치할 필요가 없고), 용어 "비트" 및 "심볼"은 서로 교환가능하게 이용될 수 있다.
터보 인코더(101)의 출력은 코드워드 블럭 x를 포함하고, x는 송신기(107)로 보내지는데, 여기서 그것은 채널을 통해 송신된다. 송신기는, 채널을 통해 코드워드 블럭 x를 송신하기 전에 레이트 매칭, 채널 인터리빙, 변조 등과 같은 추가 프로세싱을 수행할 수 있다.
도 2는 도 1의 인코더(101)의 블럭도이다. 도시된 바와 같이, 인코더(101)는 인터리버(201), 인코딩 회로(202) 및 인코딩 회로(203)를 포함한다. 인코더의 일례는 3GPP 사양서에 정의된 터보 코더이다. 3GPP에서 정의된 터보 코더의 마더 코드 레이트(mother code rate)는 R=1/3의 네이티브 코드 레이트(native code rate)를 갖는다. 터보 인코더의 출력에서, 입력 블럭 내의 각각의 비트에 대해 세 개의 비트들: (입력 블럭 내의 비트와 동일한) 하나의 구조적 비트, 구성 인코더 1 로부터의 하나의 패리티 비트, 구성 인코더 2로부터의 하나의 패리티 비트가 생성된다. 또한, 터보 인코더의 출력은 NTB 테일 비트들도 포함할 수 있는데, 이것은 구성 코드들의 트렐리스(trellis)를 종료시키는 데에 이용된다. 예를 들면, 3GPP 터보 코드의 경우, 터보 인코더의 출력에서 NTB=12 비트들이고, 구성 코드당 6 테일 비트들이다. 한편, 테일 바이팅 구성 컨볼루셔널 코드들을 이용하는 것이 가능한데, 이에 따라 NTB=0가 된다.
인터리버(201)는 비경쟁 인터리버일 수 있다. 인터리버 π(i), 0≤i≤K'는, Ψ=π(인터리버) 및 Ψ=π-1(디인터리버) 양쪽 모두에 대한 하기의 제약 조건을 만족하는 경우에 한해서 윈도우 사이즈 W에 대해 비경쟁으로 일컬어진다.
Figure 112009052626307-PCT00014
여기서 0≤j<W, 0≤t; ν<M(=K'/W), 및 t≠ν 이다. 항상 필요한 것은 아니지만, 효과적인 터보 디코더 디자인의 경우, 일반적으로 모든 M 윈도우들은 가득 차는데, 여기에서 K'=MW 이다. 수학식 1 내의 항들은, 반복 디코딩하는 동안에 출력 메모리 뱅크들에게 외재적 값들(extrinsic values)을 기록할 때, M 프로세서들에 의해 동시에 액세스되는 메모리 뱅크 주소들이다. 이들 메모리 뱅크 주소들이 각각 판독 및 기록 동안에 모두 유일하다면, 메모리 액세스의 경쟁이 생기지 않고, 이에 따라 (디)인터리빙 지연이 회피될 수 있어서, 고속의 디코더를 구현하게 된 다.
터보 인코더(101)의 동작 동안에, 길이 K' 비트들의 입력 블럭은 인터리버(201) 및 인코딩 회로(202) 양쪽 모두에 입력된다. 인터리버(201)는 사이즈 K'의 비경쟁 인터리버일 수 있다.
인터리버(201)는 입력 블럭을 인터리빙하고, 인터리빙된 순서로 입력 블럭을 인코딩 회로(203)로 보낸다. 인코딩 회로(203)는 그 후 인터리빙된 입력 블럭을 인코딩한다. 유사한 방식으로, 인코딩 회로(202)는 원래의 입력 블럭을 인코딩한다. 코드워드 블럭 x는, (입력 블럭과 동일한) 구조적 블럭, 인코딩 회로(202)의 출력, 및 인코딩 회로(203)의 출력으로 구성된다. 코드워드 블럭 x는 그 후 송신기(107)로 보내진다.
비경쟁 인터리버의 일례로서, ARP(Almost Regular Permutation) 인터리버는 하기의 식에 의해 주어진다.
π(i)=(iP0+A+d(i)) mod K'
여기서 0≤i≤K'-1은 인터리빙 후의 비트 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 비트 인덱스이고, K'는 인터리버 사이즈이고, P0는 K'에 서로 소인 수이고, A는 상수이고, C는 K'를 나누는 작은 수이고, d(i)는 d(i)=β(i mod C)+P0×α(i mod C) 형태의 디더 벡터인데, 여기서 α(·) 및 β(·)는 0≤i≤K'-1에 대해 주기적으로 적용되는, 각각이 길이 C인 벡터들이다. α(·) 및 β(·) 양쪽 모두는 C의 배수들로 구성된다. 이에 따라 구성된 전체 인 터리버 π(·)는 주기 C의 준 순환(quasi-cyclic)(즉, 주기적인) 특성들을 가지며, 테일 바이팅 터보 코드들에 이용되는 경우, 터보 코드 그 자체가 준 순환되어 코드 디자인 절차가 간소화된다.
비경쟁 인터리버의 또 다른 예로서, QPP(Quadratic Polynomial Permutation) 인터리버는 다음의 식 π(i)=(f1×i+f2×i2) mod K'에 의해 주어지는데, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. ARP 인터리버들과 유사하게, 테일 바이팅인 경우에는, 터보 코드도 준 순환이다.
인터리버(201)가 M의 다양한 값들에 대해 수학식 1을 만족시킬 수 있다면, 디코더는, (각 M마다 하나씩의) 여러 정도의 병렬 처리(various degrees of parallelism)를 이용하여 구현될 수 있다. 따라서 다양한 팩터들을 갖는 K'를 선택하는 것이 바람직하다. 길이 K'의 ARP 인터리버의 경우, 임의의 윈도우 사이즈 W가 메모리 액세스 경쟁이 없는 고속 디코딩에 이용될 수 있는데, 여기서 W는 C의 배수이고, K'의 팩터이다. 병렬 윈도우들(parallel windows)의 상이한 정의를 이용하면, K'의 임의의 팩터를 병렬 윈도우들의 수로서 이용하는 것이 가능하다. QPP 인터리버의 경우, 인터리버 사이즈 K'의 모든 팩터가 병렬 처리 M의 가능한 레벨이 된다. 이것은 병렬 처리 팩터들 M의 넓은 범위를 허용함으로써, 디코더 디자인에 있어서 유연성 및 확장성을 제공한다. 따라서, 디코딩 속도와 복잡성 사이의 좋은 절충안이 시스템(또는 유저 엘리먼트의 클래스들)의 요구사항들에 기초하여 만들어질 수 있다.
인터리버 사이즈 K' 의 선택
상술된 바와 같이, 인터리버 사이즈 결정 회로(103)는 주어진 K에 대해 인터리버 사이즈 K'를 결정하는데에 필요하다. 이 섹션은, 터보 코드 인터리버들이 정의될 수 있는 제한된 수의 사이즈들(즉, K')을 선택하는 방법을 설명한다. 상술된 바와 같이, 필러 삽입 회로는 (펑처링 또는 레이트 매칭 방법들과 함께) 임의의 정보 블럭 사이즈 K를 다루는데에 이용될 수 있다. 일반적으로, 인터리버 사이즈 선택은 필러 비트들에 기인한 디코딩 부하 및 성능 감쇠를 고려해야만 한다.
입력 블럭을 형성하기 위해 정보 블럭에 채워 넣어진 필러 비트들 Kfiller의 수는, 정보 블럭 사이즈 K의 낮은 백분율(예를 들면, 약 10-13%)로 제한되는 것이 바람직하다. 이것은, (모든 이용 가능한 K' 값들이 오름차순으로 정렬되어 있다고 가정하여) 인접한 인터리버 사이즈들, 즉, 인접한 K' 값들 사이의 차이를 제한하는 것에 의해 달성된다. 필러 비트들의 수는, K'≥K가 되도록 이용 가능한 최소의 K'를 선택함으로써 최소화된다. 필러 비트들의 수는 Kfiller=K'-K이다. 그러나, 요망된다면, K'≥K의 다른 이용 가능한 값들도 선택될 수 있다.
Kmin 및 Kmax 사이의 정보 사이즈들을 커버하도록 정의된 하기의 사이즈들의 집합을 고려한다.
K'=ap×f, pmin≤p≤pmax; fmin≤f≤fmax
여기서 a는 정수이고, f는 fmin 및 fmax 사이의 연속하는 정수이고, p는 pmin 및 pmax 사이의 정수값들을 취하고, a>1이고, pmax>pmin이고, pmin>1이다. 필요한 것은 아니지만, 필요하지 않을 수 있는 임의의 사이즈들을 폐기하면서,
Figure 112009052626307-PCT00015
, 및
Figure 112009052626307-PCT00016
가 되도록 이들 파라미터들을 선택할 수 있다. 정보 블럭 사이즈들의 범위를 커버하도록 사이즈들의 제한된 집합을 선택하는 이런 방법은 세미로그 슬라이싱(semi-log slicing)이라고 칭해진다. 사이즈 K의 정보 블럭이 주어진 경우, 사이즈 K'는 이용가능한 인터리버 사이즈들의 집합, 및 정보 블럭 사이즈 K에 기초하여 선택된다.
세미로그 슬라이싱은, 큰 동적 범위의 신호들의 압축, 예를 들면, 음성 코덱들에 이용되는 A-law 및 mu-law 압신기들(companders)에 이용되는 압신 연산과 유사하다. 세미로그 슬라이싱 규칙은 넓은 범위의 정보 블럭 사이즈들을 커버하기 위한 효과적인 디자인을 허용한다.
파라미터들을 선택하는 몇몇 방법들 중, fmin 및 fmax 값들을 선택하는 한 방법은, 인접한 p에서 기인한 K' 값들을 서로 라인업(line up) 시키는 방법인데, 즉, ap×(fmax+1)=ap +1×fmin이고, 따라서
fmax=a×fmin-1
이다. p의 값이 주어진 경우, 두 개의 인접 블럭 사이즈들 K' 사이의 간격은 ap에 의해 주어지는데, 이것은, 정보 블럭 사이즈 K가 그룹 p 내에 있고 인터리버 사이즈가 K'와 동일하다면, 최대 ap -1개의 필러 비트들이 추가된다는 것을 의미한다. 따라서, 정보 블럭 사이즈 K를 분모로 하고 필러 비트들 Kfiller를 분자로 하는 분수(fraction)는 하기와 같이 한정(bounding)되는데, 이것은, 블럭 사이즈 K가 (p,fmin)에 의해 주어진 사이즈보다 약간 크고, (p,fmin+1)에 의해 주어진 K'를 이용할 때 일어난다.
Figure 112009052626307-PCT00017
대안적으로, 인접한 p에서 기인한 K' 값들은, ap×fmax=ap +1×(fmin-1)을 통해 서로 라인업할 수 있어서, fmax=a×(fmin-1)가 된다. 이것은 유사한 Kfiller/K 한계(bound)를 줄 것이다. 따라서, 세미로그 슬라이싱에 대한 파라미터들을, 지원될 블럭 사이즈들의 범위에 따라, 또한 허용될 수 있는 필러 비트들의 분수에 따라 조정(tune)될 수 있다. fmin의 선택은 하기 두 가지의 요구사항들 사이의 균형을 필요로 한다.
Figure 112009052626307-PCT00018
fmin은 필러 비트들의 분수를 감소시키기 위해 커야 한다.
Figure 112009052626307-PCT00019
fmin은 인터리버 테이블의 사이즈를 제한하기 위해 작아야 하는데, 그 이유는, fmax=a×fmin-1을 가정할 때, 각 p에 대해 정의된 블럭 사이즈들의 수가 fmax-fmin+1=(a-1)×fmin이기 때문이다.
세미로그 슬라이싱 방법은, 임의의 블럭 사이즈의 경우에, 이용될 인터리버 사이즈 K'가 수학식 2로부터 용이하게 결정될 수 있다는 점에서 매우 간단하다.
인터리버 사이즈 선택의 예:
3GPP LTE의 경우, 40 비트와 6114 비트 사이의 각 블럭 사이즈에 대한 CF 인터리버를 정의하는 것은 필수적인 것은 아니다. 우수하게 디자인된 CF 인터리버들의 제한되거나 혹은 작은 집합은 모든 블럭 사이즈들을 커버하는데에 충분하다. 정의되지 않은 블럭 사이즈들의 경우(즉, CF 인터리버들이 정의되지 않은 경우), 제로 패딩(zero-padding)(즉, 필러 비트들을 추가하는 것)이 상술된 바와 같이 효과적으로 이용될 수 있다.
제1 예로서, 테이블(105) 내의 3GPP LTE(Long Term Evolution)에 대한 정보 블럭 사이즈들을 커버하는데에 적합한 인터리버들의 집합은, 상술된 세미로그 슬라이싱 방법에 기초하여 정의될 수 있다. 구체적으로는,
K'=2p×f, p=3,4,5,6; f=33,34,...,64
이고, 264에서 4096까지의 사이즈들을 커버한다. 40 비트들 내지 6144 비트들의 전체 범위를 커버하기 위해, 수학식 3에서 정의된 K'는 8(비트들)의 스텝 사이즈로 264에서 40까지 연장되고, 64(비트들)의 스텝사이즈로 4096에서 6144까지 연장된다. 188개의 인터리버 사이즈들의 전체 집합은 하기의 표 1에도 리스팅된다. 수학식 3에서 규정된 사이즈들이 a=2, pmin=3, pmax=6, fmin=33, fmax=64, fmax=a×(fmin-1)를 갖고, 따라서 ap×fmax=ap +1×(fmin-1)라는 것을 유의한다.
[표 1] 3GPP LTE에 대해 정의된 인터리버 사이즈들 K'의 집합.
Figure 112009052626307-PCT00020
일단 105 내의 인터리버 사이즈들이 결정되면, CF 인터리버는 각 인터리버 사이즈에 대해 디자인될 수 있다. 임의의 정보 블럭 사이즈 K의 경우, 회로(103)는, 105로부터 K와 동일하거나 더 큰 K'의 가장 작은 값을 선택함으로써 K에 대해 이용될 인터리버 사이즈 K'를 결정할 수 있다. 사이즈 K'의 인터리버와 연관된 파라미터들은 그 후, 보통은 통신 디바이스를 위한 메모리 내에 저장되는 인터리버 파라미터에 대한 저장 수단(105)으로부터 탐색된다.
표 1에 도시된 사이즈들은 최소 40 비트들 및 최대 6144 비트들을 갖는 K'에 대해 정의된 일례일 뿐이다. 또한, 간단히 하기 위해, 사이즈들은, 테일링된 구성 코드들 또는 테일 바이팅 구성 코드들을 이용하는 것 사이의 차이를 고려하지 않았다. 터보 인코더가 테일 바이팅으로 만들어지면, 7의 배수들인 K'는 이용될 수 없다. 이들은 제거되거나 혹은 변경될 것이다. 마지막으로, 인터리버들 사이의 간격을 감소시키도록 상기의 인터리버 사이즈들에 추가의 인터리버 사이즈들이 추가될 수 있다. 예를 들면, 표 1에서 간격 16을 갖는 인터리버들 사이에 추가의 인터리버들이 정의될 수 있어서, 인터리버들이 더 작은 K'에 대한 모든 바이트 인터벌(interval)에 대해 정의되게 된다.
QPP 인터리버의 예:
3GPP 롱 텀 에볼루션(LTE)을 위한 표 1의 인터리버 사이즈들을 커버하는 데에 적합한 71개의 CF QPP 인터리버들의 부분집합이 표 2에 도시된다. 이들 인터리버들은 2차의 역 다항식을 가지기 때문에 디-인터리버도 QPP이다. 또한, 3GPP 롱 텀 에볼루션(LTE)을 위한 표 1의 인터리버 사이즈들을 커버하는 데에 적합한 10개의 CF QPP 인터리버들의 부분집합이 표 3에 도시되는데, 여기에서 상기 인터리버들은 3차 또는 4차의 순열 다항식인 디-인터리버를 갖는다.
표 1의 모든 인터리버 사이즈 K'에 대해서, K'는 4의 배수(실제적으로 K'는 8의 배수임)이다. 이러한 사이즈들에 대해서, 2차 다항식 π(i)=(f1×i+f2×i2) mod K'는, f2가 K'의 모든 소인수(prime factor)에 의해 나뉘어 떨어지고, f1이 K'의 임의의 소인수에 의해 나뉘어 떨어지지 않는 경우에 한하여 유효한 인터리버이다. 표 2 및 표 3의 모든 인터리버 파라미터들이 이러한 조건을 만족한다는 것이 보여질 수 있다.
QPP 인터리버들이 순열 다항식의 형식, 즉
Figure 112009052626307-PCT00021
으로 표현될 수 있는 디-인터리버들을 가지도록 보장되지만, m 차의 디-인터리버 π- 1(x)는 f2의 모든 소인수들 중 가장 높은 차수보다 더 크지 않다고 하는 것만이 보장된다. 파라미터들(f1, f2)은 낮은 m이 요망되는 경우에는 보다 엄격한 조건들을 만족해야 한다. 따라서 양호한 에러-정정 성능을 제공하면서 낮은 차수의 디-인터리버를 갖는 QPP 인터리버들을 설계하는 것은 어려울 수 있다.
터보 디코딩의 경우, 인터리버 및 디-인터리버 양쪽 모두의 복잡성은 중요하다. m 차의 디-인터리버는 터보 디코더 구현의 복잡성에 직접적으로 영향을 줄 수 있다. 낮은 차수의 디-인터리버는 더 높은 차수의 디-인터리버보다 구현하는 것이 덜 복잡하다. 따라서, QPP 인터리버의 탐색에 있어서:
Figure 112009052626307-PCT00022
바람직하게는 2차의 디-인터리버(즉, m=2이고, 디-인터리버도 QPP임)를 갖는 인터리버가 사용되어야 한다. 예를 들면, 표 2의 각각의 QPP 인터리버는 터보 디코딩 성능을 손상시키지 않는 2차의 디-인터리버를 갖는다.
Figure 112009052626307-PCT00023
특정한 사이즈들 K'에 대해서, 인터리버가 2차의 디-인터리버를 가져야만 하는 경우에, 에러-정정 성능이 현저하게 손상되면, 약간 더 높은 차수, 예를 들면, m=3 또는 4의 디-인터리버를 갖는 인터리버가 대신 이용될 수 있다. 예를 들어, 표 3의 각각의 QPP 인터리버들은 3차 또는 4차의 디-인터리버를 가지며, 양호한 터보 코딩 성능을 제공한다.
디-인터리버에 대한 제약이 없는 경우에, 표 2의 길이 K'의 QPP는 9만큼 높은 차수의 디-인터리버들을 가질 수 있고, 표 3의 것들은 7만큼 높은 차수의 디-인터리버들을 가질 수 있다는 점에 주의를 기울여야 한다.
인터리버 파라미터에 대한 저장 수단(105)은, K'가 표 2 또는 표 3에 포함되는 경우, 표 2 또는 표 3의 적어도 하나의 행에서 취해지는 K', f1, f2의 값들을 이용하여 QPP 인터리버 파라미터들을 저장할 수 있다. 인터리버(201)는, K'가 표 2 또는 표 3에 포함되는 경우, 표 2 또는 표 3의 적어도 하나의 행에서 취해지는 K', f1, f2의 값들을 갖는 QPP 인터리버를 이용할 수 있다:
[표 2] 2차의 순열 다항식(즉, 역 2차)인 디-인터리버를 갖는 LTE에 대해 정의된 QPP 인터리버들의 부분 집합에 대한 파라미터들.
Figure 112009052626307-PCT00024
Figure 112009052626307-PCT00025
[표 3] 3차 또는 4차의 순열 다항식인 디-인터리버를 갖는 LTE에 대해 정의된 QPP 인터리버들의 부분 집합에 대한 파라미터들.
Figure 112009052626307-PCT00026
도 3은 수신기(300)의 블럭도이다. 입력에서, 필러 핸들링 회로(302)는, 채널(예를 들면, 무선)을 통해 송신되었을 수 있는 신호 벡터를 수신한다. 회로(306)는 그 후 인터리버 사이즈 K'를 결정하는데, 이것은 상술된 바와 같은 유사한 방식으로, 예를 들면, 저장소(308)로부터 테이블 룩업(lookup)을 수행함으로써, 또는 계산들을 통해 행해질 수 있다. 따라서, 정보 블럭 사이즈 K가 주어진 경우, 디코더(304)는 인코더(101)에 의해 이용된 동일한 인터리버 사이즈 K'를 이용한다. 필러 핸들링 회로(302)는, 수신된 신호 벡터 및 필러 비트들 포지션들을 적절하게 프로세싱하는 데에 이용된다(예를 들면, 필러 비트 포지션들이 알려지면, 대응하는 LLR 진폭들이, 디코딩하는 동안 매우 높은 진폭들로 설정될 수 있다). 그 후 터보 디코더(304)는 디코딩을 수행하고, 길이 K'의 입력 블럭의 추정
Figure 112009052626307-PCT00027
을 입수한다. 마지막으로 정보 블럭 추출 회로(310)는
Figure 112009052626307-PCT00028
로부터 추정된 정보 블럭을 추출한다. 필러 핸들링 회로(302)는 설명을 용이하게 하기 위해 터보 디코더의 외부에 도시되었지만, 이들 두 개는 결합되어 구현될 수 있다.
도 4는 도 3의 터보 디코더(304)의 블럭도이다. 명백한 바와 같이, 인터리 버(402) 및 디인터리버(401)는 디코딩 회로(403)와 디코딩 회로(404) 사이에 있다. 반복 디코딩이 본 기술분야에 공지된 바와 같이 행해지지만, 종래 기술의 디코더들과는 달리, 인터리버 사이즈 K'는 사이즈들의 집합으로부터 것인데; 여기에서 사이즈들의 집합은 K'=ap×f, pmin≤p≤pmax; fmin≤f≤fmax를 포함하며, 여기에서 a는 정수이고, f는 fmin 및 fmax 사이의 연속하는 정수이고, p는 pmin 및 pmax 사이의 정수값들을 취하고, a>1이고, pmax>pmin이고, pmin>1 이다. 파라미터 Kfiller는, 터보 디코더(304)에 의해 필요하게 될 수도 있고 또는 필요하게 되지 않을 수도 있어서, 도 4에 점선으로 표시된다.
인터리버(402)는 순열 π(i)=(f1×i+f2×i2) mod K'를 활용할 수 있는데, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. K'가 표 2 또는 표 3에 포함되는 경우, K', f1, f2의 값들은 바람직하게는 표 2 또는 표 3의 행으로부터 취해진다. 디인터리버(401)는 인터리버(402)의 반대의 기능을 수행한다.
도 5는 송신기(100)의 동작을 나타낸 흐름도이다. 논리 흐름은 단계 501에서 시작하며, 여기에서 회로(103)는, 사이즈들의 집합으로부터의 것인 인터리버 사이즈 K'를 결정하는데; 여기에서 사이즈들의 집합은 K'=ap×f, pmin≤p≤pmax; fmin≤f ≤fm ax를 포함하며, 여기에서 a는 정수이고, f는 fmin 및 fmax 사이의 연속하는 정수이고, p는 pmin 및 pmax 사이의 정수값들을 취하고, a>1이고, pmax>pmin이고, pmin>1 이다.
단계 503에서 필러 삽입 회로(109)는 사이즈 K의 정보 블럭을 수신하고, 사이즈 K'의 입력 블럭 u 내에 사이즈 K의 정보 블럭을 채워넣고, 입력 블럭 u를 출력한다. 인터리버(201)는 그 후 사이즈 K'의 입력 블럭을 (바람직하게는 비경쟁 인터리버를 사용하여) 인터리빙하고(단계 507), 사이즈 K'의 인터리빙된 블럭을 인코딩 회로(203)에게 보낸다(단계 509). 마지막으로, 단계 511에서, 원래의 입력 블럭 및 인터리빙된 입력 블럭이 인코딩된다.
상술된 바와 같이, 입력 블럭을 인터리빙하는 단계는 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하는 단계를 포함할 수 있는데, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 인터리버를 정의하는 팩터들이다. K'가 표 2 또는 표 3에 포함되는 경우, K', f1, f2의 값들은 바람직하게는 표 2 또는 표 3의 행으로부터 취해진다.
도 6은 도 3의 수신기의 동작을 나타낸 흐름도이다. 논리 흐름은 단계 601에서 시작하는데, 여기서 회로(306)는 인터리버 사이즈 K'를 결정한다. 단계 603에서, 회로(302)는 수신된 신호 벡터에 필러 비트 정보를 추가하는데, 예를 들면, 필러 비트들 및 필러 비트 포지션들이 알려진 경우, 회로(302)는 터보 디코더 입력 내의 이들 포지션들의 로그 우도율(LLR)을 높은 진폭으로 설정할 수 있다. 단계 607에서 터보 디코더는 사이즈 K'의 인터리버 및 디인터리버를 이용하여 디코더 입력 블럭을 디코딩하고, 길이 K'의 입력 블럭의 추정된
Figure 112009052626307-PCT00029
를 출력한다. 단계 609에서 정보 블럭 추출 회로(310)는 길이 K의 정보 블럭의 추정을 획득하기 위해 필러 비트들을 제거한다. 마지막으로 단계 611에서, 추정된 정보 블럭이 출력된다.
특정한 실시예들을 참조하여 본 발명이 상세히 도시되고 설명되었지만, 형태 및 세부사항의 다양한 변경들이 본 발명의 정신 및 범주를 벗어나지 않고 실시될 수 있다는 점이 본 기술 분야에 숙련된 자에 의해 이해될 것이다. 하나의 예에서, 인터리버 테이블은: (a) 예를 들면, 필러 비트들이 없이 또는 소수의 필러 비트들을 가지고 핸들링 되어야 하는 임의의 특별한 블럭 사이즈들을 커버하도록 정의된 인터리버 사이즈들의 추가 집합을 사용하는 경우, (b) 인터리버 사이즈들이 세미로그 슬라이스 사이즈들로부터의 작은 값을 더하거나 또는 빼는 것에 의해 약간 조정될 수 있는 경우를 포함하는 특별한 경우들을 다루기 위해 더 개선될 수 있다. 또 다른 예에서, 본 발명은 바이너리 입력 터보 인코더를 가정하여 상술 되었지만, 이와 동일한 원리는 터보 인코더가 입력으로서 심볼들을 취할 때에도 적용될 수 있다. 예를 들면, 듀오 바이너리 터보 코드는 동시에 두 바이너리 비트들의 심볼을 취하고, 터보 인터리버는 심볼들을 순열로 배치한다(또한 스크램블링, 예를 들면 심볼 내의 비트들을 교체(alternating)하는 것이 수행될 수 있다). 이러한 경우에, 입력 블럭 사이즈는 심볼들로 측정되고, 인터리버 사이즈는 입력 블럭 내의 심볼들의 수와 동일하다. 또 다른 예에서, 상기의 설명은, 인터리버 사이즈들 및 인 터리버 파라미터들이 룩업 테이블 내에 저장되는 점을 가정하였지만, 그들은 다른 수단들, 예를 들면 대수 계산(algebraic calculation)을 통해 결정될 수도 있다. 또 다른 예에서, 상기의 설명은 터보 코드를 가정하였지만, 본 방법은 또한, 예를 들면, LDPC(low-density parity check) 코드들, RS(Reed-Solomon) 코드들 등을 포함하는 다른 FEC 스킴들에도 적용가능하다. 이러한 변경들은 이하의 특허청구범위들의 범주 내에 있는 것이 의도된다.

Claims (10)

  1. 터보 인코더를 동작시키기 위한 방법으로서,
    사이즈 K'의 입력 블럭을 수신하는 단계; 및
    코드워드 블럭을 얻기 위해 상기 입력 블럭 및 인터리빙된(interleaved) 입력 블럭을 인코딩하는 단계 ― 상기 입력 블럭은 사이즈 K'의 인터리버 및 순열(permutation) π(i)=(f1×i+f2×i2) mod K'를 이용하여 인터리빙되며, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들(symbol positions)의 시퀀셜 인덱스(sequential index)이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 상기 인터리버를 정의하는 팩터들이며, K', f1, f2의 값들은 이하의 표:
    Figure 112009052626307-PCT00030
    Figure 112009052626307-PCT00031
    의 적어도 하나의 행으로부터 취해짐 ―
    를 포함하는 터보 인코더를 동작시키기 위한 방법.
  2. 제1항에 있어서, 채널을 통해 상기 코드워드 블럭을 송신하는 단계를 더 포함하는 터보 인코더를 동작시키기 위한 방법.
  3. 제2항에 있어서, 상기 인터리버는 2차의 디-인터리버(quadratic de-interleaver)를 포함하는 터보 인코더를 동작시키기 위한 방법.
  4. 터보 인코더를 동작시키기 위한 방법으로서,
    사이즈 K'의 입력 블럭을 수신하는 단계; 및
    코드워드 블럭을 얻기 위해 상기 입력 블럭 및 인터리빙된 입력 블럭을 인코딩하는 단계 ― 상기 입력 블럭은 사이즈 K'의 인터리버 및 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하여 인터리빙되며, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 상기 인터리버를 정의하는 팩터들이며, K', f1, f2의 값들은 이하의 표:
    Figure 112009052626307-PCT00032
    의 적어도 하나의 행으로부터 취해짐 ―
    를 포함하는 터보 인코더를 동작시키기 위한 방법.
  5. 제4항에 있어서, 상기 인터리버가 3차 또는 4차의 디-인터리버를 포함하는 터보 인코더를 동작시키기 위한 방법.
  6. 터보 인코더를 동작시키기 위한 장치로서,
    사이즈들의 집합으로부터 인터리버 사이즈 K'를 결정하는 인터리버 사이즈 결정 회로;
    사이즈 K의 입력 블럭을 수신하고, 상기 사이즈 K의 입력 블럭을 사이즈 K'의 입력 블럭 내에 채워 넣는(padding) 필러 삽입 회로(filler insertion circuitry); 및
    상기 사이즈 K'의 입력 블럭을 인터리빙하는 인터리버 ― 상기 인터리버는 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하며, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 상기 인터리버를 정의하는 팩터들이며, K', f1, f2의 값들은 이하의 표:
    Figure 112009052626307-PCT00033
    Figure 112009052626307-PCT00034
    의 적어도 하나의 행으로부터 취해짐 ―
    를 포함하는 터보 인코더를 동작시키기 위한 장치.
  7. 제6항에 있어서, 코드워드 블럭을 얻기 위해 상기 입력 블럭 및 상기 인터리빙된 입력 블럭을 인코딩하는 인코더를 더 포함하는 터보 인코더를 동작시키기 위한 장치.
  8. 터보 인코더를 동작시키기 위한 장치로서,
    사이즈들의 집합으로부터 인터리버 사이즈 K'를 결정하는 인터리버 사이즈 결정 회로;
    사이즈 K의 입력 블럭을 수신하고, 상기 사이즈 K의 입력 블럭을 사이즈 K'의 입력 블럭 내에 채워 넣는 필러 삽입 회로(filler insertion circuitry); 및
    상기 사이즈 K'의 입력 블럭을 인터리빙하는 인터리버 ― 상기 인터리버는 순열 π(i)=(f1×i+f2×i2) mod K'를 이용하며, 여기서 0≤i≤K'-1는 인터리빙 후의 심볼 포지션들의 시퀀셜 인덱스이고, π(i)는 포지션 i에 대응하는 인터리빙 전의 심볼 인덱스이고, K'는 심볼들의 인터리버 사이즈이고, f1 및 f2는 상기 인터리버를 정의하는 팩터들이며, K', f1, f2의 값들은 이하의 표:
    Figure 112009052626307-PCT00035
    의 적어도 하나의 행으로부터 취해짐 ―
    를 포함하는 터보 인코더를 동작시키기 위한 장치.
  9. 제8항에 있어서, 코드워드 블럭을 얻기 위해 상기 입력 블럭 및 상기 인터리빙된 입력 블럭을 인코딩하는 인코더를 더 포함하는 터보 인코더를 동작시키기 위한 장치.
  10. 제9항에 있어서, 상기 인터리버가 3차 또는 4차의 디-인터리버를 갖는 터보 인코더를 동작시키기 위한 장치.
KR1020097017892A 2007-02-28 2008-02-13 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치 KR20090127878A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/680,116 2007-02-28
US11/680,116 US7873893B2 (en) 2007-02-28 2007-02-28 Method and apparatus for encoding and decoding data

Publications (1)

Publication Number Publication Date
KR20090127878A true KR20090127878A (ko) 2009-12-14

Family

ID=39469952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097017892A KR20090127878A (ko) 2007-02-28 2008-02-13 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치

Country Status (10)

Country Link
US (1) US7873893B2 (ko)
EP (1) EP2119017A1 (ko)
JP (1) JP2008219892A (ko)
KR (1) KR20090127878A (ko)
CN (1) CN101636914A (ko)
AR (1) AR065503A1 (ko)
BR (1) BRPI0807977A2 (ko)
MX (1) MX2009009143A (ko)
TW (1) TW200845593A (ko)
WO (1) WO2008106320A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2034613A4 (en) * 2006-05-17 2009-08-12 Nec Corp ENCODER TURBO AND HARQ PROCESSING METHOD APPLIED FOR TURBO ENCODER
US8219877B2 (en) 2007-08-14 2012-07-10 Lg Electronics Inc. Method and apparatus for transmitting uplink data in a wireless access system
JP4874312B2 (ja) * 2007-09-20 2012-02-15 三菱電機株式会社 ターボ符号復号装置、ターボ符号復号方法及び通信システム
US8140932B2 (en) * 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
US8219782B2 (en) * 2008-09-18 2012-07-10 Xilinx, Inc. Address generation
CN101777925B (zh) * 2009-01-09 2014-07-16 电信科学技术研究院 一种数据处理装置及其方法
ES2559867T3 (es) * 2009-06-15 2016-02-16 Alcatel Lucent Corrección de errores sin retorno mejorada con intercalación a nivel de bits
CN101931419B (zh) * 2009-06-24 2013-04-03 中兴通讯股份有限公司 一种turbo码内交织器的计算方法及装置
JP5476902B2 (ja) * 2009-09-30 2014-04-23 富士通株式会社 ターボ復号装置及び通信装置
US20110202819A1 (en) * 2010-02-12 2011-08-18 Yuan Lin Configurable Error Correction Encoding and Decoding
US8621160B2 (en) * 2010-12-17 2013-12-31 Futurewei Technologies, Inc. System and method for contention-free memory access
CN102624404B (zh) * 2011-01-31 2014-04-30 中兴通讯股份有限公司 一种咬尾卷积码译码校验方法及装置
CN102739358A (zh) * 2012-06-01 2012-10-17 武汉邮电科学研究院 一种用于LTE的并行Turbo码内交织器的实现方法
CN103780337B (zh) * 2012-10-26 2017-06-06 华为技术有限公司 Wlan系统中的交织处理方法和设备
US9281846B2 (en) 2013-07-31 2016-03-08 Globalfoundries Inc Turbo encoding on a parallel processor
JP6193051B2 (ja) * 2013-08-15 2017-09-06 Necプラットフォームズ株式会社 アドレス生成回路及びアドレス生成方法
CN104917587B (zh) * 2014-03-13 2018-08-14 钜泉光电科技(上海)股份有限公司 通信设备中的数据块交织和解交织方法及其装置
KR102370903B1 (ko) * 2014-03-14 2022-03-08 삼성전자주식회사 인터리빙 깊이를 조절하기 위한 장치 및 방법
CN110519004B (zh) 2018-05-21 2021-12-14 华为技术有限公司 一种编码方法及相关设备
CN110266320B (zh) * 2019-07-01 2021-03-12 京信通信系统(中国)有限公司 Ldpc编码及译码方法、装置和编译码系统
CN110611551B (zh) * 2019-09-27 2020-07-07 北京理工大学 一种基于嵌套极化码的控制信道编码与盲检方法

Also Published As

Publication number Publication date
TW200845593A (en) 2008-11-16
BRPI0807977A2 (pt) 2014-06-10
US20080205636A1 (en) 2008-08-28
JP2008219892A (ja) 2008-09-18
US7873893B2 (en) 2011-01-18
CN101636914A (zh) 2010-01-27
AR065503A1 (es) 2009-06-10
WO2008106320A1 (en) 2008-09-04
MX2009009143A (es) 2009-09-03
EP2119017A1 (en) 2009-11-18

Similar Documents

Publication Publication Date Title
KR20090127878A (ko) 데이터를 인코딩 및 디코딩하기 위한 방법 및 장치
KR101459801B1 (ko) 비경쟁 인터리버들을 이용한 터보-인코딩
US7925956B2 (en) Method and apparatus for encoding and decoding data
KR100984289B1 (ko) 통신 시스템에서 가변 부호화율을 지원하는 신호 송수신장치 및 방법
JP4392924B2 (ja) 符号化装置及び方法、記憶媒体
KR20000038952A (ko) 통신시스템에서직렬쇄상구조를가지는부호화및복호화장치
KR20130057488A (ko) 절단된 인터리버들 및 디-인터리버들을 위한 능률적인 어드레스 생성기
KR20080041488A (ko) 병렬 인터리빙 장치 및 방법
KR101110201B1 (ko) 통신시스템에서 병렬구조 라틴방진 인터리빙 방법 및 장치
JP6427461B2 (ja) 受信装置、無線通信システム、及び無線通信方法
KR101433375B1 (ko) 통신 시스템에서 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
EP1906536A2 (en) Tail-biting turbo code for arbitrary number of information bits
KR20090026709A (ko) 블록 길이가 가변적인 저밀도 패리티 검사 부호를 이용한채널 부호화/복호화 방법 및 장치
KR100370780B1 (ko) 해밍 부호를 연접한 터보 부호화/복호화 방법 그리고 그의 부호기/복호기
KR101353094B1 (ko) 오류정정부호에 대한 인터리빙 방법 및 이를 이용한 정보 송수신 시스템

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid