KR20100027631A - 무선통신 시스템에서 데이터 복호 방법 - Google Patents
무선통신 시스템에서 데이터 복호 방법 Download PDFInfo
- Publication number
- KR20100027631A KR20100027631A KR1020080086624A KR20080086624A KR20100027631A KR 20100027631 A KR20100027631 A KR 20100027631A KR 1020080086624 A KR1020080086624 A KR 1020080086624A KR 20080086624 A KR20080086624 A KR 20080086624A KR 20100027631 A KR20100027631 A KR 20100027631A
- Authority
- KR
- South Korea
- Prior art keywords
- qpp interleaver
- interleaver address
- subblock
- qpp
- address
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/27—Coding, 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2957—Turbo codes and decoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J11/00—Orthogonal multiplex systems, e.g. using WALSH codes
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
무선통신 시스템에서 터보 코딩(Turbo Coding)을 이용한 데이터 복호 방법은 데이터를 복수의 서브블록으로 나누는 단계, 각 서브블록의 시작 지점을 구하는 단계 및 상기 서브블록 별로 병렬로 복호화를 수행하는 단계를 포함하되, 상기 복호화는 상기 각 서브블록의 시작 지점에 더하여진 트레이닝 윈도우로부터 순차적으로 구하여진 QPP 인터리버 주소들에 따라 수행된다. 데이터 복호를 위한 QPP 인터리버 주소를 효율적으로 찾을 수 있다.
Description
본 발명은 무선통신에 관한 것으로, 보다 상세하게는 무선통신 시스템에서 데이터를 복호하는 방법에 관한 것이다.
통신 시스템에서 데이터를 전송하는 과정에서 발생하는 에러를 미연에 방지하거나 수신단에서 효율적으로 에러를 복원하도록 하는 절차를 에러정정 코드라 한다. 일반적으로 에러정정코드는 페이딩(Fading)의 영향을 받아 발생하는 랜덤성 에러를 정정하는데 주로 이용된다. 그러나, 페이딩의 영향이 심하거나 버스트 에러(Burst Error)가 발생할 경우에는 에러정정 코드만으로 대처하는 것이 용이하지 않다. 이에, 인터리빙(Interleaving)이 이용되는데, 인터리빙은 부호어를 분산시키고 비트와 비트를 서로 독립적으로 배치시켜, 각 비트가 서로 독립적으로 페이딩의 영향을 받도록 하는 것이다. 버스트 에러는 다수 부호어에 속하는 다수 비트군에 영향을 미치게 되고, 메시지 전체에 영향을 주어 메시지 복원에 매우 큰 영향을 미치게 된다, 그러나, 버스트 에러가 발생하더라도 인터리빙을 이용하면 결국 랜덤성 에러로 변환되므로, 메시지를 정확하게 복원할 수 있다.
터보 코드는 에러정정코드의 일종으로, 재귀 구조 컨벌루션 인코더(Recursive Systematic Convolution Encoder)와 인터리버(Interleaver)로 구성된다. 터보 코드의 실제 구현시 병렬 복호화를 용이하게 하기 위하여 QPP(Quadratic Polynomial Permutation) 인터리버가 있다. QPP 인터리버는 특정의 데이터 블록 크기에만 좋은 성능을 유지한다고 알려져 있다. 터보 코드의 성능은 데이터 블록 크기가 증가할수록 좋은 것으로 알려져 있는데, 실제 통신 시스템에서는 실제 구현의 편리함을 위하여 일정 크기 이상의 데이터 블록의 경우 여러 개의 작은 데이터 블록으로 나누어 부호화를 수행하게 된다.
나누어진 작은 데이터 블록을 코드블록(Code Block)이라 부른다. 코드블록은 일반적으로 같은 크기이나, QPP 인터리버의 크기 제한 때문에 여러 개의 코드블록 중 하나 또는 그 이상의 코드블록은 다른 크기를 가질 수도 있다. 정해진 인터리버의 크기 또는 코드블록 단위로 에러정정 부호화 과정을 거친 후 무선 채널로 전송시 발생하는 버스트 에러(Burst Error)의 영향을 줄이기 위해 인터리빙(Interleaving)이 수행된다. 그리고, 인터리빙된 데이터는 실제 무선 자원에 매핑(Mapping)되어 전송된다.
부호화된 데이터는 수신단에서 복호화된다. 데이터를 복호하기 위하여 데이터의 QPP 인터리버 주소를 알아야 한다. 따라서, QPP 인터리버 주소를 효율적으로 찾는 방법이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 터보 코딩 데이터의 QPP 인터리버 주소를 효율적으로 찾는 방법을 제공한다.
본 발명의 일 양태에 따른 무선통신 시스템에서 터보 코딩(Turbo Coding)을 이용한 데이터 복호 방법은 데이터를 복수의 서브블록으로 나누는 단계, 각 서브블록의 시작 지점을 구하는 단계 및 상기 서브블록 별로 병렬로 복호화를 수행하는 단계를 포함하되, 상기 복호화는 상기 각 서브블록의 시작 지점에 더하여진 트레이닝 윈도우로부터 순차적으로 구하여진 QPP 인터리버 주소들에 따라 수행된다.
터보 코딩 데이터의 QPP 인터리버 주소를 효율적으로 찾을 수 있다. 따라서, 하드웨어의 크기를 줄이면서, 소프트웨어의 부담을 줄일 수 있다.
이하 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 명세서 전체에 걸쳐서 동일한 참조 번호는 동일한 구성요소를 나타낸다.
도 1은 무선통신 시스템을 나타낸 블록도이다. 무선통신 시스템은 음성, 패킷 데이터 등과 같은 다양한 통신 서비스를 제공하기 위해 널리 배치된다.
도 1을 참조하면, 무선통신 시스템은 단말(10; User Equipment, UE) 및 기지국(20; Base Station, BS)을 포함한다. 단말(10)은 고정되거나 이동성을 가질 수 있으며, MS(Mobile Station), UT(User Terminal), SS(Subscriber Station), 무선기기(wireless device) 등 다른 용어로 불릴 수 있다. 기지국(20)은 일반적으로 단말(10)과 통신하는 고정된 지점(fixed station)을 말하며, 노드-B(Node-B), BTS(Base Transceiver System), 액세스 포인트(Access Point) 등 다른 용어로 불릴 수 있다. 하나의 기지국(20)에는 하나 이상의 셀이 존재할 수 있다.
이하에서 하향링크(downlink; DL)는 기지국(20)에서 단말(10)로의 통신을 의미하며, 상향링크(uplink; UL)는 단말(10)에서 기지국(20)으로의 통신을 의미한다. 하향링크에서, 송신기는 기지국(20)의 일부일 수 있고 수신기는 단말(10)의 일부일 수 있다. 상향링크에서, 송신기는 단말(10)의 일부일 수 있고 수신기는 기지국(20)의 일부일 수 있다.
무선통신 시스템은 OFDM(Orthogonal Frequency Division Multiplexing) /OFDMA(Orthogonal Frequency Division Multiple Access) 기반 시스템일 수 있다. OFDM은 다수의 직교 부반송파를 이용한다. OFDM은 IFFT(inverse fast Fourier Transform)과 FFT(fast Fourier Transform) 사이의 직교성 특성을 이용한다. 송신기에서 데이터는 IFFT를 수행하여 전송된다. 수신기에서 수신신호에 FFT를 수행하여 원래 데이터를 복원한다. 송신기는 다중 부반송파들을 결합하기 위해 IFFT를 사용하고, 수신기는 다중 부반송파들을 분리하기 위해 대응하는 FFT를 사용한다.
도 2는 터보 부호기의 일 예를 나타내는 블록도이다.
도 2를 참조하면, 터보 부호기(100)는 두 개의 구성 부호기(Constituent Encoder)(110, 120), 하나의 인터리버(Interleaver)(130) 및 P/S 컨버터(Parallel to serial Converter)(140)를 포함한다. 정보 비트들(X)는 구조적 비트(Systematic Bit), 제 1 구성 부기(110)를 통과한 제 1 패리티 비트(Y) 및 제 2 구성 부호기(120)를 통과한 제 2 패리티 비트(Z)의 형태로 출력된다. 구조적 비트(X), 제 1 패리티 비트(Y) 및 제 2 패리티 비트(Z)는 P/S 컨버터(140)를 통과하여 시리얼 형태로 출력된다.
도 3은 터보 복호기의 일 예를 나타내는 블록도이다.
도 3을 참조하면, 터보 복호기(200)는 S/P컨버터(Serial to Parallel Converter)(210), 제 1 복호기(220), 제 2 복호기(230), 인터리버(240) 및 디인터리버(250)를 포함한다. 터보 복호기(200)는 반복 복호기(Iterative Decoder)일 수 있다.
컨버터(210)는 수신 신호를 시스템 비트(X), 제 1 패리티 비트(Y) 및 제 2 패리티 비트(Z)로 분리한다. 제 1 복호기는 제 1 패리티 비트(Y) 및 제 2 복호기의 출력(W2)을 디인터리버(150)에 의하여 디인터리빙한 정보를 이용하여 제 1 출력(W1)을 출력하고, 제 1 복호기는 제 2 패리티 비트(Z) 및 제 1 복호기의 출력 (W1)을 인터리버(240)에 의하여 인터리빙한 정보를 이용하여 제 2 출력(W2)을 출력한다. 제 1 복호기 및 제 2 복호기에서 사용되는 복호 알고리즘으로는 MAP(Maximum A Posteriori), Log-MAP, Max-Log-MAP, SOVA(Soft Output Viterbi Algorithm) 등이 있다.
이하, 터보 코딩 데이터를 복호화하는 방법에 대하여 살펴본다. 특히, 터보 코딩 데이터를 복호화하는 과정에서 QPP(Quadratic Polynomial Permutation) 인터 리버 주소를 발생시키는 방법을 구체적으로 살펴본다. 여기서, 터보 코딩 데이터를 복호하기 위하여 상기 데이터를 복수의 서브블록으로 나누고, 서브블록 별로 병렬 프로세서를 이용하여 복호한다.
<병렬 프로세서와 QPP 인터리버 주소의 관계>
도 4는 본 발명의 일 실시예에 따라 터보 코딩 데이터의 복호화를 위한 병렬 프로세서와 QPP 인터리버 주소 간의 관계를 나타내는 도면이다.
도 4를 참조하면, 터보 코딩 데이터를 복호화하기 위하여 복수의 병렬 프로세서가 사용된다. 이에 따라, 복호화 속도를 높일 수 있다. 처리되어야 할 블록 크기는 K이고, M개의 병렬 프로세서를 사용하여 터보 코딩 데이터를 복호화하는 경우, 각 병렬 프로세서는 W(=K/M)크기의 서브블록을 처리한다. 즉, 제 1 병렬 프로세서는 0 내지 W-1까지의 서브블록을 처리하고, 제 2 병렬 프로세서는 W 내지 2W-1의 서브블록을 처리하며, 제 M 병렬 프로세서는 (M-1)W 내지 K까지의 서브블록을 처리한다. 여기서, 제 1 병렬 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소는 π(0), 제 2 병렬 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소는 π(W), 제 M 병렬 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소는 π((M-1)W)로 나타낼 수 있다.
또한, 각 프로세서는 슬라이딩 윈도우(Sliding Window;L) 단위마다 순방향으로 QPP 인터리버 주소를 결정하고, 상기 QPP 인터리버 주소를 이용하여 역방향으로 각 슬라이딩 윈도우 내의 QPP 인터리버 주소들을 결정할 수 있다. 예를 들어, 제 1 병렬 프로세서에서 π(0), π(L), π(2L) 등을 순방향으로 결정하고, 상기 π(L)로 부터 π(L-1), π(L-2), π(L-3) 등을 역방향으로 결정하고, 상기 π(2L)로부터 π(2L-1), π(2L-2), π(2L-3) 등을 역방향으로 결정한다.
이하, QPP 인터리버의 주소 발생 방법에 관하여 설명한다.
먼저, 크기가 K인 블록에 대한 x번째 인터리빙된 출력은 하기 수학식 1과 같이 나타낼 수 있다.
여기서, x=0,1,...,K-1이고, K는 블록 크기이다.
하기 표 1은 K에 따라 정해지는 f1 및 f2 값을 나타낸다.
터보 코딩 데이터를 복호하기 위하여 서브블록 단위로 병렬 프로세서를 사용하는 경우, 하나의 프로세서에 대한 QPP 인터리버 주소는 인접 프로세서에 대한 QPP 인터리버 주소로부터 계산할 수 있다. 즉, 제 N 프로세서 내의 특정 위치에 대한 QPP 인터리버 주소를 π(x)라고 가정하면, 제 (N+1) 프로세서 내의 동일한 위치에 대한 QPP 인터리버 주소는 π(x+W)가 된다. 상기 수학식 1을 사용하여 π(x+W)를 구하면, 하기 수학식 3과 같이 나타낼 수 있다.
여기서, 이다. 하나의 QPP 인터리버 주소로부터 W만큼 떨어진 QPP 인터리버 주소는 q(x)만큼의 오프셋을 가진다. 즉, 제 (N+1) 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소는 제 N 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소에 대하여 q(x)만큼의 오프셋을 가진다. 상기 q(x)를 간단히 표현하기 위하여, 하기 수학식 4를 이용할 수 있다.
여기서, 병렬 프로세서의 개수(M) 및 블록 크기(K)에 따라, 하기 표 2와 같이 나타낼 수 있다.
프로세서의 개수(M) | 코드블록의 크기(K) | f2W2 mod K |
2 | - | 0 |
4 | - | 0 |
8 | K<992 | ≠0 |
K≥992 | 0 |
따라서, 병렬 프로세서의 개수(M)가 8개이고, 블록 크기(K)가 K<992인 경우를 제외하면, q(x)는 하기 수학식 5와 같이 나타낼 수 있다.
이하, x가 W의 배수인 경우와 W의 배수가 아닌 경우로 나누어 QPP 인터리버 주소를 결정한다.
여기서, 이므로, 로 나타낼 수 있다. 이므로, 로 나타낼 수 있다. 여기서, 이다. 따라서, x가 W의 배수인 경우, QPP 인터리버 주소는 하기 수학식 7과 같이 나타낼 수 있다.
상기 수학식 7에서, π((n+1)W)와 π(nW)는 서로 인접하여 위치하는 병렬 프로세서 내에서 순방향으로 동일한 위치에 있는 QPP 인터리버 주소를 나타내는 것이다. 여기서, l1W mod K는 π((n+1)W)와 π(nW) 사이의 오프셋을 의미한다.
여기서, 이고, 이다. 여기서, 에서 2f2가 M의 배수가 아니라면, q(nW+x)는 q(nW)와 만큼의 차이가 발생한다. 만약, x가 짝수인 경우라면, 2xf2는 M의 배수이므로, 항상 0이 되어 q(nW+x)=q(nW)가 된다. 따라서, M=1,2,4인 경우에는 q(nW+x)=q(nW)이고, M=8인 경우에는 가 된다. 따라서, x가 W의 배수가 아닌 경우를 정리하면, 하기 수학식 9와 같이 나타낼 수 있다.
따라서, 제 1 병렬 프로세서가 처리하는 서브블록의 특정 위치에 대한 QPP 인터리버 주소와 제 N 병렬 프로세서가 처리하는 서브블록의 특정 위치에 대한 QPP 인터리버 주소의 관계는 하기 수학식 10과 같이 나타낼 수 있다.
<순방향 연산을 이용한 QPP 인터리버 주소>
이하, 순방향 연산을 이용하여 터보 코딩 데이터의 복호화를 위한 QPP 인터리버 주소를 결정하는 방법을 살펴본다.
도 5는 본 발명의 일 실시예에 따라 순방향 연산에서 각 병렬 프로세서가 처리하는 서브블록의 QPP 인터리버 주소를 결정하는 방법을 나타낸다. 각 병렬 프로세서가 처리하는 서브블록의 시작 지점의 QPP 인터리버 주소를 알면, 다음 QPP 인터리버 주소는 상기 수학식 2를 이용하여 계산할 수 있다.
도 5를 참조하면, 제 1 병렬 프로세서는 0 내지 W-1까지의 서브블록을 처리하고, 제 2 병렬 프로세서는 W 내지 2W-1까지의 서브블록을 처리하며, 제 3 병렬 프로세서는 2W 내지 3W-1까지의 서브블록을 처리한다. 그런데, 제 1 병렬 프로세서를 제외한 나머지 병렬 프로세서에 있어서, 초기 순방향 상태 메트릭(Forward State Metric)을 알 수 없다. 따라서, 일정한 트레이닝 윈도우(Training Window) 구간을 거친 후, 신뢰도 높은 상태 메트릭을 계산하는 것이 바람직하다. 예를 들어, 상기 트레이닝 윈도우는 슬라이딩 윈도우(L)와 같이 설정할 수 있다. 따라서, 제 N 병렬 프로세서는 π(nW)로부터 L만큼 앞선 π(nW-L)로부터 처리를 한다. 또한, 각 병렬 프로세서는 슬라이딩 윈도우(L) 구간씩 분리하여 순방향으로 QPP 인터 리버 주소를 결정한다. 즉, 제 N 병렬 프로세서는 π(nW-L), π(nW), π(nW+L), π(nW+2L) 등과 같은 QPP 인터리버 주소를 계산한다.
도 5에서, 오프셋 1은 서로 인접한 병렬 프로세서가 처리하는 서브블록 내의 순방향으로 동일한 위치의 QPP 인터리버 주소 사이의 오프셋을 의미하고, 오프셋 2는 각 병렬 프로세서가 처리하는 서브블록 시작 지점의 QPP 인터리버 주소와 트레이닝 윈도우 시작 지점의 QPP 인터리버 주소 사이의 오프셋을 의미한다. 구체적으로, 오프셋 1은 상기 수학식 7의 l1W mod K이고, 오프셋 2는 하기 수학식 11의 T이다. 상기 오프셋 1 및 오프셋 2는 모든 병렬 프로세서에 대하여 공통된다.
π(nW-L)은 하기 수학식 11과 같이 나타낼 수 있다.
트레이닝 윈도우 시작 지점의 QPP 인터리버 주소 π(nW-L)가 결정되면, 수학식 2를 이용하여 다음 QPP 인터리버 주소 π(nW-L+1), π(nW-L+2) 등을 순차적으로 계산할 수 있다. 여기서, 수학식 2를 이용하여 각 병렬 프로세서의 차후 QPP 인터리버 주소를 결정하기 위하여 g(nW-L)을 알아야한다. g(nW-L)은 하기 수학식 13과 같이 나타낼 수 있다.
따라서, g(nW)는 하기 수학식 15와 같이 나타낼 수 있다.
도 6은 본 발명의 일 실시예에 따라 각 병렬 프로세서에 대한 트레이닝 윈도우 구간 내에서 QPP 인터리버 주소를 결정하는 방법을 요약한 순서도이다.
도 6을 참조하면, QPP 인터리버 주소 결정은 π(0) 및 g(0)로부터 시작한 다(S100). 즉, 제 1 병렬 프로세서가 처리하는 서브블록의 시작 지점 QPP 인터리버 주소로부터 시작한다. 여기서, π(0)는 항상 0이고, g(0)는 수학식 2로부터 (f1+f2) mod K임을 알 수 있다.
다음으로, π(0) 및 g(0)로부터 π(W) 및 g(W)를 계산한다(S110). 즉, 제 1 병렬 프로세서가 처리하는 서브블록의 시작 지점 QPP 인터리버 주소로부터 제 2 병렬 프로세서가 처리하는 서브블록의 시작 지점 QPP 인터리버 주소를 계산한다. 여기서, 상기 수학식 7을 이용하여 π(0)로부터 π(W)를 계산할 수 있고, 상기 수학식 15를 이용하여 g(0)로부터 g(W)를 계산할 수 있다.
다음으로, π(W) 및 g(W)를 이용하여 π(W-L) 및 g(W-L)을 계산한다(S120). 즉, 제 2 병렬 프로세서가 처리하는 서브블록의 시작 지점 QPP 인터리버 주소로부터 상기 제 2 병렬 프로세서의 트레이닝 윈도우 시작 지점의 QPP 인터리버 주소를 계산한다. 여기서, 상기 수학식 11을 이용하여 π(W)로부터 π(W-L)을 계산할 수 있고, 상기 수학식 13을 이용하여 g(W)로부터 g(W-L)을 계산할 수 있다.
다음으로, 상기 π(W-L) 및 g(W-L)로부터 각 병렬 프로세서가 처리하는 서브블록의 QPP 인터리버 주소들을 계산한다(S130). 여기서, 상기 QPP 인터리버 주소는 상기 수학식 2를 이용하여 순차적으로 계산할 수 있다.
도 6에 따르면, 제 2 병렬 프로세서의 트레이닝 윈도우 구간에 대한 QPP 인터리버 주소를 결정할 수 있다. 제 3 병렬 프로세서, 제 4 병렬 프로세서 등에 대한 트레이닝 구간에 대한 QPP 인터리버 주소는 상기 제 2 병렬 프로세서에 대한 QPP 인터리버 주소에 상기 수학식 7 및 수학식 9과 같은 오프셋을 더하여 계산할 수 있다. 상기 수학식 10은 제 1 병렬 프로세서를 기준으로 각 병렬 프로세서의 오프셋을 더한 것이다. 이에 따르면, 제 2 병렬 프로세서를 기준으로 제 N 병렬 프로세서에 대한 오프셋은 제 1 병렬 프로세서를 기준으로 제 (N-1) 병렬 프로세서에 대한 오프셋과 같다.
트레이닝 윈도우 구간을 거친 후의 QPP 인터리버 주소는 제 1 병렬 프로세서를 기준으로 계산한다. 즉, 제 2 병렬 프로세서, 제 3 병렬 프로세서의 QPP 인터리버 주소는 오프셋을 더하여 계산한다. 슬라이딩 윈도우 내의 QPP 인터리버 주소는 상기 수학식 2를 이용하여 순차적으로 계산할 수 있다.
<역방향 연산을 이용한 QPP 인터리버 주소>
이하, 역방향 연산을 이용하여 터보 코딩 데이터의 복호화를 위한 QPP 인터리버 주소를 결정하는 방법을 살펴본다. 역방향 연산에서 QPP 인터리버 주소는 슬라이딩 윈도우(L) 단위로 역방향으로 계산된다. 즉, 각 병렬 프로세서에서 슬라이딩 윈도우(L) 단위마다 첫 번째 QPP 인터리버 주소를 계산하고, 상기 QPP 인터리버 주소를 이용하여 역방향으로 각 QPP 인터리버 주소를 계산할 수 있다.
먼저, 각 병렬 프로세서가 처리하는 서브블록에서 슬라이딩 윈도우(L) 단위마다 첫 번째 QPP 인터리버 주소를 계산하기 위하여 하기 수학식 16을 이용할 수 있다.
상기 수학식 16으로부터 를 얻을 수 있다. 따라서, π(L)은 π(0)에 어떤 값을 더하여 구할 수 있다. 또한, 각 프로세서 내에서 L의 배수에 해당하는 위치에 해당하는 QPP 인터리버 주소는 하기 수학식 17과 같이 나타낼 수 있다.
다음으로, 각 슬라이딩 윈도우 구간의 초기 QPP 인터리버 주소(π(x))로부터 역방향으로 다음 QPP 인터리버 주소(π(x-1))를 구하기 위하여 하기 수학식 19를 사용한다.
상기 수학식 19로부터 d(nL)을 구할 수 있고, d(nL)은 하기 수학식 20과 같이 나타낼 수 있다.
만약, 복수의 병렬 프로세서 가운데 제 1 병렬 프로세서의 마지막 윈도우가 L보다 작은 경우에는 상기 수학식들을 그대로 적용할 수 없다. 이때, 제 1 병렬 프로세서의 마지막 윈도우의 시작 지점은 제 2 병렬 프로세서에서 트레이닝 구간만큼 지난 부분과 동일하다. 따라서, 상기 제 1 병렬 프로세서의 마지막 윈도우의 시작 지점을 제 2 병렬 프로세서의 첫 번째 QPP 인터리버 주소로 사용할 수 있다. 다만, 여기서, 제 2 병렬 프로세서에 대한 d(x)는 하기 수학식 21과 같이 나타낼 수 있다
병렬 프로세서가 아닌 단일 프로세서를 이용하는 경우, 마지막 윈도우의 역 방향 연산을 위한 시작 지점은 π(K-1) 및 d(K-1)은 상기 수학식 2 및 상기 수학식 21로부터 계산할 수 있다. 즉, 상기 수학식 2와 상기 수학식 21에서 x=0이고 W=K인 경우, π(K)=π(0)이고, d(K)=d(0)이므로, 이고, 임을 알 수 있다.
도 7은 본 발명의 일 실시예에 따라 각 프로세서의 윈도우 내에서 역방향 연산으로 QPP 인터리버 주소를 결정하는 방법을 나타내는 순서도이다.
도 7을 참조하면, 먼저, 윈도우 시작 지점의 QPP 인터리버 주소를 계산한다(S200). 여기서, 윈도우 시작 지점의 QPP 인터리버 주소는 π(nL) 및 d(nL)로 나타낼 수 있다. π(nL)은 상기 수학식 17로부터 계산할 수 있고, d(nL)은 상기 수학식 20으로부터 계산할 수 있다.
다음으로, 각 윈도우 별로 역방향 연산을 위한 초기값을 계산한다(S210). 여기서, 역방향 연산을 위한 초기값은 π(nL-1) 및 d(nL-1)로 나타낼 수 있다. π(nL-1) 및 d(nL-1)은 상기 수학식 19로부터 계산할 수 있다.
다음으로, 상기 초기값을 이용하여 윈도우 내의 QPP 인터리버 주소를 역방향으로 순차적으로 계산한다(S220). 이는 상기 수학식 19를 이용하여 계산할 수 있다.
하나의 윈도우 내에서 QPP 인터리버 주소들을 계산한 후, 다음 윈도우 내의 QPP 인터리버 주소를 계산할 수 있다. 예를 들어, 첫 번째 윈도우 내의 QPP 인터리버 주소를 계산한 후, 두 번째 윈도우 내의 QPP 인터리버 주소를 계산한다. 두 번째 윈도우 내의 QPP 인터리버 주소를 계산하기 위하여, 세 번째 윈도우 내의 시작 지점(π(2L), d(2L))을 찾고, 상기 세 번째 윈도우 내의 시작 지점으로부터 두 번째 윈도우 내의 역방향 연산을 위한 초기값(π(2L-1), d(2L-1))을 찾으며, 상기 초기값으로부터 두 번째 윈도우 내의 QPP 인터리버 주소를 역방향으로 순차적으로 계산한다. 각 윈도우에 대하여 상기 역방향 연산이 반복된다. 각 윈도우 내의 시작 QPP 인터리버 주소인 π(L), π(2L), π(3L)은 상기 수학식 17에 의하여 구할 수 있고, h(L), h(2L), h(3L)은 상기 수학식 18에 의하여 구할 수 있으며, d(L), d(2L), d(3L)은 상기 수학식 20에 의하여 구할 수 있다.
하기 표 3은 본 발명의 일 실시예에 따른 QPP 인터리버 주소 결정 방법으로부터 도출한 표로, 블록 크기에 따라 적절한 병렬 프로세서의 개수를 나타낸 것이다.
블록크기(K) | 적절한 병렬 프로세서의 개수 |
40≤K≤120 | 1 |
128≤K≤248 | 1,2 |
256≤K≤976 | 1,2,4 |
992≤K≤6144 | 1,2,4,8 |
하기 표 4는 본 발명의 일 실시예에 따른 QPP 인터리버 주소 결정 방법으로부터 도출한 표로, 블록 크기에 따른 파라미터 A, B, C, D 및 E의 값을 나타낸 것이다. 여기서, L=64이다. 하기 표 4의 파라미터를 이용하여 QPP 인터리버 주소를 효율적으로 결정할 수 있다.
본 발명에 따르면, 터보 코딩 데이터를 복호화하기 위한 QPP 인터리버 주소를 효율적으로 찾을 수 있다. 따라서, 하드웨어의 크기를 줄일 수 있을 뿐만 아니라, 소프트웨어의 부담을 줄일 수 있다.
본 발명은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 하드웨어 구현에 있어, 상술한 기능을 수행하기 위해 디자인된 ASIC(application specific integrated circuit), DSP(digital signal processing), PLD(programmable logic device), FPGA(field programmable gate array), 프로세서, 제어기, 마이크로 프로세서, 다른 전자 유닛 또는 이들의 조합으로 구현될 수 있다. 소프트웨어 구현에 있어, 상술한 기능을 수행하는 모듈로 구현될 수 있다. 소프트웨어는 메모리 유닛에 저장될 수 있고, 프로세서에 의해 실행된다. 메모리 유닛이나 프로세서는 당업자에게 잘 알려진 다양한 수단을 채용할 수 있다.
이상, 본 발명의 바람직한 실시예에 대해 상세히 기술하였지만, 본 발명이 속하는 기술분야에 있어서 통상의 지식을 가진 사람이라면, 첨부된 청구 범위에 정의된 본 발명의 정신 및 범위를 벗어나지 않으면서 본 발명을 여러 가지로 변형 또는, 변경하여 실시할 수 있음을 알 수 있을 것이다. 따라서, 본 발명의 앞으로의 실시예들의 변경은 본 발명의 기술을 벗어날 수 없을 것이다.
도 1은 무선통신 시스템을 나타낸 블록도이다.
도 2는 터보 부호기의 일 예를 나타내는 블록도이다.
도 3은 터보 복호기의 일 예를 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따라 터보 코딩 데이터의 복호화를 위한 병렬 프로세서와 QPP 인터리버 주소 간의 관계를 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따라 순방향 연산에서 각 병렬 프로세서가 처리하는 서브블록의 QPP 인터리버 주소를 결정하는 방법을 나타낸다.
도 6은 본 발명의 일 실시예에 따라 각 병렬 프로세서에 대한 트레이닝 윈도우 구간 내에서 QPP 인터리버 주소를 결정하는 방법을 요약한 순서도이다.
도 7은 본 발명의 일 실시예에 따라 각 프로세서의 윈도우 내에서 역방향 연산으로 QPP 인터리버 주소를 결정하는 방법을 나타내는 순서도이다.
Claims (8)
- 무선통신 시스템에서 터보 코딩(Turbo Coding)을 이용한 데이터 복호 방법에 있어서,데이터를 복수의 서브블록으로 나누는 단계;각 서브블록의 시작 지점을 구하는 단계; 및상기 서브블록 별로 병렬로 복호화를 수행하는 단계를 포함하되,상기 복호화는 상기 각 서브블록의 시작 지점에 더하여진 트레이닝 윈도우로부터 순차적으로 구하여진 QPP 인터리버 주소들에 따라 수행되는 데이터 복호 방법.
- 제 1 항에 있어서,상기 각 서브블록의 시작 지점의 QPP 인터리버 주소는 인접 서브블록의 시작 지점의 QPP 인터리버 주소에 오프셋을 더하여 구하는 것을 특징으로 하는 데이터 복호 방법.
- 제 2 항에 있어서,상기 트레이닝 윈도우의 시작 지점의 QPP 인터리버 주소는 상기 서브블록의 시작 지점의 QPP 인터리버 주소에 오프셋을 더하여 구하는 것을 특징으로 하는 데이터 복호 방법.
- 제 1 항에 있어서,상기 서브블록은 복수의 슬라이딩 윈도우로 나누어지고, 상기 슬라이딩 윈도우 단위로 QPP 인터리버 주소들을 구하는 것을 특징으로 하는 데이터 복호 방법.
- 제 4 항에 있어서,상기 QPP 인터리버 주소는 각 슬라이딩 윈도우의 첫 번째 QPP 인터리버 주소를 구한 후, 상기 첫 번째 QPP 인터리버 주소를 이용하여 역방향으로 각 슬라이딩 윈도우 내의 QPP 인터리버 주소들을 결정하는 것을 특징으로 하는 데이터 처리 방법.
- 제 4 항에 있어서,상기 각 서브블록의 마지막 슬라이딩 윈도우 내의 QPP 인터리버 주소들을 결정하기 위하여 상기 각 서브블록에 인접한 서브블록의 시작 지점의 QPP 인터리버 주소를 이용하는 것을 특징으로 하는 데이터 처리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080086624A KR20100027631A (ko) | 2008-09-03 | 2008-09-03 | 무선통신 시스템에서 데이터 복호 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080086624A KR20100027631A (ko) | 2008-09-03 | 2008-09-03 | 무선통신 시스템에서 데이터 복호 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100027631A true KR20100027631A (ko) | 2010-03-11 |
Family
ID=42178572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080086624A KR20100027631A (ko) | 2008-09-03 | 2008-09-03 | 무선통신 시스템에서 데이터 복호 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20100027631A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012155425A1 (zh) * | 2011-05-17 | 2012-11-22 | 中兴通讯股份有限公司 | 一种交织地址的并行计算方法及系统 |
-
2008
- 2008-09-03 KR KR1020080086624A patent/KR20100027631A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012155425A1 (zh) * | 2011-05-17 | 2012-11-22 | 中兴通讯股份有限公司 | 一种交织地址的并行计算方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3610329B2 (ja) | 大最小距離を用いたターボ符号化方法及びそれを実現するシステム | |
KR101490543B1 (ko) | 무선 통신 시스템에서 다단 순환 중복 검사 코드 | |
US8443265B2 (en) | Method and apparatus for map decoding and turbo decoder using the same | |
US6904555B2 (en) | Decoding apparatus and decoding method, and data receiving apparatus and data receiving method | |
JP4194015B2 (ja) | 通信システムおよび方法 | |
US8522110B2 (en) | Apparatus and method for transmitting data using turbo code | |
US20010010089A1 (en) | Digital transmission method of the error-correcting coding type | |
CN108400844A (zh) | 信息处理的方法、装置、通信设备和通信系统 | |
EP1821415B1 (en) | Hybrid decoding using multiple turbo decoders in parallel | |
US7734983B2 (en) | Input control device and input control method | |
KR20100027631A (ko) | 무선통신 시스템에서 데이터 복호 방법 | |
JP2002026879A (ja) | データ誤り訂正装置 | |
US20040111659A1 (en) | Turbo decoder using parallel processing | |
KR100718608B1 (ko) | 무선통신 시스템에서의 전송 신호 디코딩 방법 및 장치 | |
JP2010206546A (ja) | 送信装置、受信装置および通信システム | |
JP2001257602A (ja) | データ誤り訂正方法及び装置 | |
JP4283721B2 (ja) | 復号装置及び復号方法 | |
KR101049947B1 (ko) | 컨볼루셔널 터보 코드 부호화 장치 및 컨볼루셔널 터보 코드를 사용하는 부호화 방법 | |
JP2004229169A (ja) | ターボ復号方法およびターボ復号を有する受信装置 | |
KR20080010736A (ko) | 광대역 무선접속 통신시스템에서 길쌈 터보 부호의 부호화장치 및 방법 | |
JP2001326578A (ja) | データ誤り訂正装置 | |
JP4991481B2 (ja) | 反復復号装置及び反復復号方法 | |
JP2004222197A (ja) | データ受信方法及び装置 | |
JP2010045529A (ja) | ターボデコーダおよびターボ復号方法 | |
JP2007116592A (ja) | 復号化装置および符号化・復号化システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E601 | Decision to refuse application |