KR20080112088A - 인터리빙 수행 방법 - Google Patents

인터리빙 수행 방법 Download PDF

Info

Publication number
KR20080112088A
KR20080112088A KR1020080011202A KR20080011202A KR20080112088A KR 20080112088 A KR20080112088 A KR 20080112088A KR 1020080011202 A KR1020080011202 A KR 1020080011202A KR 20080011202 A KR20080011202 A KR 20080011202A KR 20080112088 A KR20080112088 A KR 20080112088A
Authority
KR
South Korea
Prior art keywords
bit
row
column
bro
permutation
Prior art date
Application number
KR1020080011202A
Other languages
English (en)
Other versions
KR101435830B1 (ko
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 엘지전자 주식회사
Priority to US12/665,699 priority Critical patent/US8443268B2/en
Priority to PCT/KR2008/003529 priority patent/WO2008156335A2/en
Publication of KR20080112088A publication Critical patent/KR20080112088A/ko
Application granted granted Critical
Publication of KR101435830B1 publication Critical patent/KR101435830B1/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/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/2703Coding, 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 the interleaver involving at least two directions
    • H03M13/271Row-column interleaver with permutations, e.g. block interleaving with inter-row, inter-column, intra-row or intra-column permutations
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명의 일 양상에 따르는 인터리빙 수행 방법은, 입력 데이터열에 대해 BRO(Bit Reverse Ordering) 연산을 이용하여 인터리빙을 수행하는 방법에 관한 것으로서, 입력 데이터열의 각 비트를 입력 순서에 따라 메모리 행렬의 행 방향으로 기록한다. Nr을 상기 메모리 행렬에서 데이터 비트가 기록된 행의 개수라 할 때, 2R-1<Nr≤2R 을 만족하는 R에 대하여 각 행의 인덱스에 R 비트 BRO 연산을 통해 행 퍼뮤테이션을 수행한다. 행 퍼뮤테이션 수행 후에는 일정 조건을 만족하는 행에 대해 프루닝을 수행한다. 그 다음으로 열 인덱스에 대한 BRO 연산을 이용하여 열 퍼뮤테이션을 수행하고, 상기 열 퍼뮤테이션이 수행된 메모리 행렬의 열 방향으로 각 비트를 읽어 출력한다.
인터리빙, BRO, 프루닝, 메모리 행렬

Description

인터리빙 수행 방법 {Method of performing interleaving}
본 발명은 인터리빙 수행 방법에 관한 것으로서, 보다 상세하게는, 입력 데이터열에 대해 BRO(Bit Reverse Ordering) 연산을 이용하여 인터리빙을 수행하는 방법에 관한 것이다.
무선 통신 시스템의 송신단에서는 인터리빙 방법을 사용하여 데이터열을 입력 순서대로 연속적으로 보내지 않고 특정 패턴으로 순서를 바꿔서 보낸다. 인터리빙에 의해 무선 링크 상에서 자주 발생하는 버스트 에러(burst error)를 랜덤 에러(random error)로 변경할 수 있다. 즉, 무선 통신 시스템에서 페이딩(fading)에 의해 전송 데이터의 일부분을 한꺼번에 잃어버리는 경우가 종종 발생하는데, 연속적인 데이터를 한꺼번에 잃어버리면 아무리 좋은 에러 정정 코드를 사용한다 하더라도 이 에러를 복구할 수 없다. 반면, 전송 데이터의 시퀀스 중 에러 비트가 드문드문 산재되어 있을 경우는 컨볼루션 코드(convolution code), 터보 코드(turbo code), LDPC(Lowe Density Parity Check) 코드 등과 같은 에러 정정 코드를 사용하여 에러를 정정할 수 있다. 현재 일반적으로 사용되고 있는 무선 통신 시스템에서는 컨볼루션 코딩이나 터보 코딩을 사용하므로 랜덤 에러를 정정할 수 있다. 따라 서, 인터리빙 방법을 사용하여 버스트 에러를 랜덤 에러화시킬 필요가 있다.
인터리빙은 데이터열(data sequence)을 메모리에 기록 했다가(write) 미리 정해진 규칙에 따라 순서를 다르게 하여 다시 읽어드리는(read) 과정을 의미하므로, 메모리 쓰기 주소(write address) 및 메모리 읽기 주소(read address)의 발생 과정을 필요로 한다.
인터리빙을 위한 읽기 주소 발생 방법 중 하나로서 BRO(Bit Reverse Ordering) 기법이 사용된다. BRO 기법이란 10 진수인 숫자를 M 비트의 2 진수로 변환한 후 전체 M 비트에 대해서 MSB를 LSB로, LSB를 MSB로 그 순서를 뒤집은 뒤에 다시 10진수로 변환하는 연산 기법을 말한다. 예를 들어, 십진수 3을 5 비트 BRO 연산(M=5)에 의해 변환하는 순서는 다음과 같다. 먼저 3을 5비트의 2 진수로 변환하면 '00011'이 된다. '00011'의 비트 순서를 거꾸로 변경하면(reverse ordering) '11000'이 되고, 이를 10 진수로 변환하면 24가 된다. 따라서 10 진수 3의 5 비트 BRO 연산 결과는 24가 된다. 이와 같이 BRO 연산을 이용하여 쓰기 주소를 읽기 주소로 변환한 후 읽기 주소 순서를 이용하여 데이터열을 출력하면 데이터열의 순서가 변경되므로 인터리빙을 수행할 수 있다.
수학식 1은 인터리빙 폭(interleaving depth), 즉 인터리빙되는 인덱스 셋(0,1,2,..., L-1)의 크기 L이 2M인 경우의 M 비트 BRO 인터리빙 결과를 일반적으로 표현한 것이다. 여기서, BRO(i, M)은 10진수 i에 대한 M 비트 BRO 연산 결과를 나타낸다.
j= π(i) = BRO(i,M), i= 0, 1, 2, ... , L-1
인터리빙 폭 L이 2M-1보다 크고 2M보다 작은 경우에는 0 ~ (2M-1)까지의 인덱스에 대해서 M 비트 BRO 연산을 하고 L 보다 크거나 같은 인덱스는 프루닝(pruning)하는 방법에 의해 인터리빙을 수행한다. 다음은 L이 2M-1<L<2M 일 때 프루닝을 이용하여 M 비트 BRO 연산에 의해 인터리빙을 수행하는 알고리즘을 나타낸다.
i = 0
for m=0 to 2M-1
B = BRO(m , M ) // M- bits BRO 연산
if B < L // B가 L보다 작은 경우에만,
π(i) = B // B를 i의 BRO interleaving 결과로 사용함
i= i+1
end if
end for
m B= BRO(m,5) i j= π(i)
0 0 0 0
1 16 1 16
2 8 2 8
3 24 (pruning)
4 4 3 4
5 20 4 20
6 12 5 12
7 28 (pruning)
8 2 6 2
9 18 7 18
10 10 8 10
11 26 (pruning)
12 6 9 6
13 22 10 22
14 14 11 14
15 30 (pruning)
16 1 12 1
17 17 13 17
18 9 14 9
19 25 (pruning)
20 5 15 5
21 21 16 21
22 13 17 13
23 29 (pruning)
24 3 18 3
25 19 19 19
26 11 20 11
27 27 (pruning)
28 7 21 7
29 23 22 23
30 15 23 15
31 31 (pruning)
표 1은 L=24일 때 5 비트 BRO 연산과 프루닝을 이용한 인터리빙을 위한 읽기 주소 발생 결과를 나타낸 것이다. L=24인 경우, L이 24< L <25이므로 M=5인 5 비트 BRO 연산을 사용하며 5 비트 BRO 연산 결과가 24보다 크거나 같으면 프루닝한다. 표 1에서, 인덱스 i의 순서대로 비트를 출력함으로써 인터리빙이 수행될 수 있다.
0~2M-1까지 2M개 10 진수에 대한 BRO 연산 결과 중에 L 개를 인터리빙에 사용하는 경우 결과적으로 2M-L개의 BRO 연산 결과를 프루닝 해야 한다. 따라서 2M-1<L≤2M 에 대한 M 비트 BRO 인터리빙의 최대 프루닝 회수는 2M-1이며, 또한 M이 커질 수록 프루닝 회수가 증가한다. 프루닝 회수가 증가하게 되면 시스템의 성능 저하 및 부가적인 복잡도를 유발하는 문제점이 있다.
본 발명은 상기한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, 본 발명의 목적은 시스템 성능을 개선시키고 복잡도를 줄일 수 있는 인터리빙 방법을 제공하는 것이다.
본 발명의 일 양상에 따르는 인터리빙 수행 방법은, 입력 데이터열에 대해 BRO(Bit Reverse Ordering) 연산을 이용하여 인터리빙을 수행하는 방법에 관한 것으로서, 입력 데이터열의 각 비트를 입력 순서에 따라 메모리 행렬의 행 방향으로 기록한다. Nr을 상기 메모리 행렬에서 데이터 비트가 기록된 행의 개수라 할 때, 2R-1<Nr≤2R 을 만족하는 R에 대하여 각 행의 인덱스에 R 비트 BRO 연산을 통해 행 퍼뮤테이션을 수행한다. 행 퍼뮤테이션 수행 후에는 일정 조건을 만족하는 행에 대해 프루닝을 수행한다. 그 다음으로 열 인덱스에 대한 BRO 연산을 이용하여 열 퍼뮤테이션을 수행하고, 상기 열 퍼뮤테이션이 수행된 메모리 행렬의 열 방향으로 각 비트를 읽어 출력한다.
본 발명에 의하면 BRO 연산을 이용한 인터리빙 수행 시에 프루닝 회수를 줄일 수 있고, 이에 따라 시스템의 성능을 개선시키고 복잡도를 줄일 수 있는 효과가 있다.
이하에서 도면을 참조하여 설명되는 본 발명의 바람직한 실시예에 의해 본 발명의 구성, 작용 및 다른 특징들이 용이하게 이해될 수 있을 것이다.
도 1은 CDMA-2000 시스템의 송신단이 F-PDCH(Forward Packet Data Channel)을 통해 수신단으로 데이터를 전송하기 위해 채널 인터리빙을 수행하는 과정을 설명하기 위한 블록 구성도이다. 도 1에서, 채널 부호화기(channel encoder, 도면 미도시)로부터 출력된 심볼은 5개의 서브블록(subblock)으로 디멀티플렉싱(demultiplexing)되어 각 서브블록 인터리버(subblock interleaver)에 입력되고, 입력된 데이터열(data sequence)를 각 서브블록 인터리버에서 출력된 데이터열을 심볼(symbol) 단위로 그룹핑(grouping)함으로써 최종적으로 채널 인터리빙된 데이터열이 출력된다.
도 2는 본 발명의 일 실시예에 따른 인터리빙 방법의 절차 흐름도이다. 도 2의 실시예는 도 1의 각 서브블록 인터리버에서 서브블록을 입력받아 인터리빙을 수행하는 과정을 설명하기 위한 것이다.
도 2를 참조하면, 특정 서브블록 인터리버에 서브블록이 입력된다[S21]. 상기 서브블록은 터보 코딩, 컨볼루션 코딩 또는 LDPC(Low Density Parity Check) 코딩 등과 같은 채널 부호화를 수행하는 채널 부호화기로부터 출력된 데이터열의 일부 또는 전부를 포함할 수 있다. 예를 들어, 터보 코딩 기법에 의해 채널 부호화가 수행될 경우 코드워드(codeword)는 정보어 부분(information part), 제1 패리티 부분(parity part) 및 제2 패리티 부분으로 구성되는데, 각 부분 전체 또는 그 일부 가 상기 서브블록을 구성할 수 있다. 또는 각 부분에 에러 검출을 위한 CRC 코드 비트들을 추가함으로써 상기 서브블록을 구성하는 것도 가능하다. 상기 서브블록의 크기(L), 즉 상기 서브블록을 구성하는 데이터열의 길이는 가변적이며, 그 최대 크기(Lmax)는 32임을 가정한다. 32는 설명의 편의상 비교적 작은 숫자로 선택된 것으로서 실제 시스템에서는 훨씬 큰 크기의 서브블록이 사용될 것이다. 상기 서브블록 인터리버에 입력되는 서브블록의 크기는 26임을 가정한다.
상기 서브블록 인터리버에 입력된 서브블록은 인터리빙을 위한 메모리에 행 방향으로(row by row) 순차적으로 기록된다[S22]. 상기 메모리는 행의 개수 NR 및 열 개수 NC 를 갖는 행렬의 형태로 구성된다. 상기 열 개수 NC 는 2의 지수 승인 값(NC=2C)을 갖는 것이 바람직하다. 본 실시예에서 C 값은 2이고, NC=4이다. 상기 행의 개수 NR은 상기 서브블록의 최대 크기 Lmax를 고려하여 8인 것을 가정한다. 여기서, 상기 행의 개수 NR 및 열 개수 NC 상기 값들 이외에 다른 값들로 선택될 수 있음은 자명하다.
표 2는 크기 L이 26인 서브블록이 상기 서브블록 인터리버에 입력되어 메모리 행렬에 기록된 것을 나타낸 것이다. 메모리에서 데이터 비트가 기록되지 않는 어드레스(address)에는 더미 비트들이 기록된다.
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
5 20 21 22 23
6 24 25 dummy dummy
7 dummy dummy dummy dummy
표 2에서, 첫 번째 행은 각 열의 인덱스를 포함하고, 첫 번째 열은 각 행의 인덱스를 포함한다. 나머지 값들은 상기 행렬에 기록되는 각 비트의 인덱스를 의미한다.
도 2에서, 상기 서브블록이 상기 행렬에 기록된 후에는 2R-1<Nr≤2R 을 만족하는 R에 대하여 각 행의 인덱스에 대해 R 비트 BRO 연산을 하여 행 퍼뮤테이션(row permutation)을 수행하고 각 행의 인덱스에 대한 BRO 연산 결과가 Nr보다 크거나 같은 행에 대해 프루닝을 수행한다[S23]. 여기서, Nr은 상기 행렬에서 데이터 비트가 실제로 기록된 행의 개수를 의미하고, 다음의 수학식 2에 의해 구할 수 있다.
Figure 112008009078332-PAT00001
표 2에서는 Nr은 7이므로 R 값은 3이 된다. 따라서, 각 행의 인덱스에 대해 3 비트 BRO 연산을 수행한 결과인 행 퍼뮤테이션 패턴은 {0, 4, 2, 6, 1, 5, 3, 7} 이 된다. 표 3은 구해진 행 퍼뮤테이션 패턴에 따라 행 퍼뮤테이션을 수행한 결과를 나타낸다.
0 1 2 3
0 0 1 2 3
4 16 17 18 19
2 8 9 10 11
6 24 25 dummy dummy
1 4 5 6 7
5 20 21 22 23
3 12 13 14 15
7 dummy dummy dummy dummy
표 3에서 각 행의 인덱스에 대해 3 비트 BRO 연산을 수행한 결과값이 Nr, 즉 7 이상인 행에 대해서는 프루닝을 수행한다[S23]. 그 결과는 다음의 표 4와 같다.
0 1 2 3
0 0 1 2 3
4 16 17 18 19
2 8 9 10 11
6 24 25 dummy dummy
1 4 5 6 7
5 20 21 22 23
3 12 13 14 15
도 2에서, 행 퍼뮤테이션 및 프루닝을 수행한 후에는, 열 인덱스에 대한 C, 즉 2 비트 BRO 연산을 이용하여 열 퍼뮤테이션을 수행한다[S24]. 열 인덱스에 대한 2 비트 BRO 연산을 수행한 결과인 열 퍼뮤테이션 패턴은 {0, 2, 1, 3}이 되고, 이에 따라 열 퍼뮤테이션을 수행한 결과는 다음의 표 5와 같다.
0 2 1 3
0 0 2 1 3
4 16 18 17 19
2 8 10 9 11
6 24 dummy 25 dummy
1 4 6 5 7
5 20 22 21 23
3 12 14 13 15
열 퍼뮤테이션 수행 후에는 상기 행렬에 기록된 데이터열을 열 방향으로(column by column)으로 순차적으로 읽어 출력한다[S25]. 이때, 더미 비트들에 대해서는 프루닝을 수행한다. 표 1의 결과와 비교했을 때, 상기 행 퍼뮤테이션 과정에서 이미 특정 조건을 만족하는 행을 프루닝했기 때문에 메모리로부터 데이터 비트들을 읽는 과정에서는 프루닝 회수가 훨씬 줄어드는 것을 확인할 수 있다. 이에 따라 시스템 성능을 개선시키고 복잡도를 줄일 수 있다.
도 2의 실시예는 블록 인터리빙 시에 메모리에 행 방향으로 데이터열의 각 비트를 순차적으로 기록하고 행 퍼뮤테이션과 프루닝 및 열 퍼뮤테이션 수행 후에 상기 메모리로부터 열 방향으로 순차적으로 데이터열을 읽어 출력하는 예이다. 다른 예로서, 메모리에 열 방향으로 데이터열을 기록하고, 열 퍼뮤테이션과 프루닝 및 행 퍼뮤테이션을 수행한 후에 행 방향으로 순차적으로 데이터열을 읽어 출력하는 실시예를 고려할 수 있다. 이 경우에는, 메모리는 행의 행의 개수 NR 이 2의 지수 승인 값(NR=2R)이고, 열 개수는 NC인 행렬의 형태로 구성된다. 또한, 2C-1<Nc≤2C 을 만족하는 C에 대하여 각 행의 인덱스에 대해 R 비트 BRO 연산을 하여 행 퍼뮤테이션(row permutation)을 수행하고 각 행의 인덱스에 대한 BRO 연산 결과가 Nc보다 크거나 같은 행에 대해 프루닝을 수행한다. 여기서, Nc는 메모리 행렬에서 데이터 비트가 실제로 기록되는 열의 개수를 의미한다. 열 퍼뮤테이션 및 프루닝을 수행한 후에는, 행 인덱스에 대한 R 비트 BRO 연산을 이용하여 행 퍼뮤테이션을 수행한다.
도 3은 본 발명의 다른 실시예에 따른 인터리빙 수행 방법을 설명하기 위한 도면이다. 도 3의 실시예는 본 발명의 기술적 특징을 3GPP LTE(Long Term Evolution) 시스템의 송신측에 적용한 예로서, 도 3은 상기 송신측의 일부만을 도시한 블록 구성도이다.
도 3을 참조하면, 터보 인코더(31)에 입력된 데이터열은 상기 터보 인코더(31)에 의해 인코딩되어 정보어 비트열(systematic stream, S), 제1 패리티 비트열(P1) 및 제2 패리티 비트열(P2)의 세 부분으로 나누어 출력된다. 상기 터보 인코더(31)로부터 출력된 각 비트열은 각 서브블록 인터리버(32a, 32b, 32c)에 입력된다. 상기 각 서브블록 인터리버(32a, 32b, 32c)는 입력된 각 비트열에 대해 이하에서 설명되는 본 발명의 실시예에 따라 인터리빙을 수행한다. 상기 각 서브블록 인터리버(32a, 32b, 32c)로부터 출력된 데이터열들은 정해진 순서에 따라 순환 버퍼(circular buffer, 33)에 저장된다. 도 3에서, 상기 각 서브블록 인터리버(32a, 32b, 32c)는 각각 별도의 구성요소로 도시되었으나 하나의 서브블록 인터리버로 구성하여 각 입력 데이터열에 대해 순차적으로 인터리빙을 수행하도록 구성하는 것도 가능하다.
상기 터보 인코더(31) 내부의 터보 인터리버의 인터리빙 크기(interleaving size)를 KQPP라 할 경우 상기 터보 인코더(31)로부터 출력되는 정보어 비트열, 제1 패리티 비트열 및 상기 제2 패리티 비트열 각각의 길이(Ks)는 KQPP+4가 된다. 이때, "4"는 상기 터보 인코더(31)에 의해 추가되는 테일 비트들(tail bits)이다. 3GPP LTE 시스템에서 사용되는 KQPP 값은 8의 배수이므로 Ks 값은 4의 배수이다. 상기 각 서브블록 인터리버(32a, 32b, 32c)의 메모리 행렬의 열의 개수(Nc)를 4로 할 경우 상기 메모리 행렬에서 데이터가 기록되는 행의 개수(Nr)는 Ks/4가 된다. 보다 일반적인 개념에서 볼 때, 서브블록 인터리버에 입력되는 데이터열의 크기가 상기 서브블록 인터리버 메모리 행렬의 열의 개수 및/또는 행의 개수의 정수배가 되도록 설정하는 것이 바람직하다.
이하에서 상기 정보어 비트열이 입력되는 서브블록 인터리버(32a)에 의해 수행되는 인터리빙 과정을 보다 구체적으로 설명한다. 이하의 설명은 상기 제1 패리티 비트열 및 제2 패리티 비트열이 각각 입력되는 서브블록 인터리버(32b, 32c)에 의한 인터리빙 과정에 동일하게 적용될 수 있다. 상기 인터리빙 과정에서 도 2에 도시된 절차가 적용될 수 있다.
상기 서브블록 인터리버(32a)에 입력된 상기 정보어 비트열은 상기 서브블록 인터리버(32a)의 메모리 행렬의 행 방향으로 순차적으로 기록된다. 상기 메모리 행렬에 상기 정보어 비트열이 기록된 후, 각 행의 인덱스에 대해 M 비트 BRO 연산에 의해 행 퍼뮤테이션 패턴(row permutation pattern)을 구하고, 그 결과에 따라 행 퍼뮤테이션을 수행한다. 여기서, 상기 파라미터 M은 다음의 알고리즘에 의해 입력되는 정보어 비트열의 길이에 따라 가변적으로 산출될 수 있다.
M=0
while Nr>2M
M=M+1
end while
상기 파라미터 M은 KQPP의 최대값을 고려하여 특정 값(Mmax)으로 고정될 수 있다. 예를 들어, 현재 LTE 시스템에서 사용되는 KQPP의 최대값은 6144이므로 상기 서브블록 인터리버(32a)에 입력되는 정보어 비트열의 최대 길이는 6148이 된다. 상기 서브블록 인터리버(32a)의 메모리 행렬의 열의 개수가 4임을 고려할 때, 길이가 6148인 데이터열을 수용할 수 있는 상기 메모리 행렬의 행의 개수는 1537이 되고, 이 값에 대응되는 상기 파라미터 M, 즉 Mmax는 11이 된다. 이 예에서, 상기 파라미터 M 값을 11로 고정하면 상기 서브블록 인터리버(32a)에 입력되는 정보어 비트열의 길이가 6148보다 작은 경우 행 퍼뮤테이션 과정에서 프루닝을 수행한다. 다음은 M 비트 BRO 연산 및 행 퍼뮤테이션 과정을 알고리즘에 의해 설명한 것이다.
i=0
for m=0 to 2M-1
B=BRO(m, M) --M- bits BRO 연산
if B<Nr --B가 N r 값을 초과하는지 체크, 초과하면 프루닝
πr(i)=B --행 퍼뮤테이션
i=i+1
end if
end for
상기 서브블록 인터리버(32a)는 행 퍼뮤테이션을 수행한 후에 열 퍼뮤테이션을 수행한다. 상기 메모리 행렬의 열의 크기는 4이므로 각 열 인덱스(i)에 대한 열 퍼뮤테이션 패턴 πc(i)는 다음과 같이 표현될 수 있다.
πc(i)={0, 1, 2, 3}, i=0, 1, 2, 3
열 퍼뮤테이션은 상기 열 퍼뮤테이션 패턴에 따라 열의 순서를 변경함으로써 수행된다. 이상의 예에서는 행 퍼뮤테이션을 수행한 후에 열 퍼뮤테이션을 수행하였으나, 그 순서는 변경될 수 있다. 즉, 열 퍼뮤테이션을 수행한 후에 행 퍼뮤테이션을 수행하더라도 동일한 결과를 얻을 수 있다.
열 퍼뮤테이션 수행 후에 상기 서브블록 인터리버(32a)는 상기 행렬에 기록된 데이터열을 열 방향으로(column by column)으로 순차적으로 읽어 출력한다.
상기 서브블록 인터리버(32a)에 의해 수행되는 인터리빙의 전체 과정을 알고리즘에 의해 표현하면 다음과 같다.
for i=0 to Ks-1
Pcc(floor(i/Nr)) -- Column permutation
Prr(mod(i, Nr)) -- Row permutation
π(i)=4*Pr+Pc -- Column by column reading
end for
상기 알고리즘에서 π(i)가 상기 서브블록 인터리버(32a)에 입력되는 정보어 비트열의 각 비트의 인덱스에 대한 서브블록 인터리빙 패턴이 된다.
상기 제1 패리티 비트열 및 제2 패리티 비트열에 대해서도 상기한 바와 같은 인터리빙 과정이 적용될 수 있다. 다만, 상기 제2 패리티 비트열에 대한 인터리빙 수행 시에는 옵셋 값 δ이 사용될 수 있다.
인터리빙 종료 후에는 상기 서브블록 인터리버(32a)로부터 출력된 정보어 비트열이 상기 순환 버퍼(33)에 먼저 저장되고, 상기 서브블록 인터리버(32b) 및 상기 서브블록 인터리버(32c)로부터 출력된 상기 제1 패리티 비트열과 상기 제2 패리티 비트열이 인터레이싱된 비트열(interlaced version)이 그 다음 저장된다.
상기 순환 버퍼(33)에 저장된 비트열은 하이브리드 자동 재전송 요구(Hybrid Auto Repeat Request, HARQ) 방식에 따라 수신측으로 전송된다. 즉, 상기 순환 버퍼(33)로부터 출력되어 상기 수신측으로 전송된 패킷에 대한 응답으로 NACK이 수신된 경우, 다음 번 RV(Redundancy Version)의 패킷을 상기 수신측으로 재전송한다. HARQ 방식에 의한 최대 재전송 가능 회수가 4라고 가정하면, 상기 순환 버퍼(33)에는 네 개의 RV에 따른 패킷들이 저장되고, 이때 각 RV는 대응하는 패킷의 시작 위치를 나타낸다. 상기 순환 버퍼(33) 내에서 각 패킷은 동일한 간격을 두고 위치한다.
높은 코드 레이트(high code rate)에서의 터보 인코딩 성능을 개선시키기 위해서 HARQ 방식에 따른 초기 패킷 전송 시에 정보어 비트열에 대해 펑쳐링(puncturing)을 수행할 수 있다. 상기 시스템 비트열에 대한 펑쳐링은 상기 순환 버퍼(33)에서 최초의 σ 비트들을 전송에서 제외시킴으로써(skipping) 수행될 수 있다. 예를 들어, 상기 파라미터 σ는 다음의 수학식 3에 의해 산출될 수 있다.
σ=floor(Ks/0.05)
상기 순환 버퍼(33) 내에서 각 패킷의 시작 위치(Si), 즉 각 RV는 다음의 수학식 4에 의해 산출될 수 있다.
Si=i*3*Nr+σ, i=0, 1, 2, 3
도 3에 의한 실시예에 따른 서브블록 인터리버는 인터리빙 수행 시에 프루닝을 위한 더비 비트들을 추가하고 제거하는 과정이 없기 때문에 가상 순환 버퍼(virtual circular buffer, VCB) 개념에 쉽게 적용될 수 있다.
이상에서 설명된 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결 합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예에 따른 무선 통신 시스템에서의 하향링크 데이터 전송 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시예에 따른 무선 통신 시스템에서의 하향링크 데이터 전송 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프 로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
도 1은 CDMA-2000 시스템의 송신단이 F-PDCH을 통해 수신단으로 데이터를 전송하기 위해 채널 인터리빙을 수행하는 과정을 설명하기 위한 블록 구성도이다.
도 2는 본 발명의 일 실시예에 따른 인터리빙 방법의 절차 흐름도이다.
도 3은 본 발명의 다른 실시예에 따른 인터리빙 수행 방법을 설명하기 위한 도면이다.

Claims (8)

  1. 입력 데이터열에 대해 BRO(Bit Reverse Ordering) 연산을 이용하여 인터리빙을 수행하는 방법에 있어서,
    입력 데이터열의 각 비트를 입력 순서에 따라 메모리 행렬의 행 방향으로 기록하는 단계;
    Nr을 상기 메모리 행렬에서 데이터 비트가 기록된 행의 개수라 할 때, 2R-1<Nr≤2R 을 만족하는 R에 대하여 각 행의 인덱스에 R 비트 BRO 연산을 통해 행 퍼뮤테이션을 수행하는 단계;
    일정 조건을 만족하는 행을 프루닝(pruning)하는 단계;
    열 인덱스에 대한 BRO 연산을 이용하여 열 퍼뮤테이션을 수행하는 단계; 및
    상기 열 퍼뮤테이션이 수행된 메모리 행렬의 열 방향으로 각 비트를 읽어 출력하는 단계를 포함하는, 인터리빙 수행 방법.
  2. 제1항에 있어서,
    상기 일정 조건은 각 행의 인덱스에 대한 BRO 연산 결과가 Nr보다 크거나 같은지에 관한 조건인 것을 특징으로 하는, 인터리빙 수행 방법.
  3. 제1항에 있어서,
    상기 메모리 행렬의 열(column) 개수 Nc는 2의 지수 승인 값(Nc=2C)인 것을 특징으로 하는, 인터리빙 수행 방법.
  4. 제3항에 있어서,
    상기 열 퍼뮤테이션 수행 시에 각 열 인덱스에 대해 C 비트 BRO 연산을 수행하는 것을 특징으로 하는, 인터리빙 수행 방법.
  5. 제1항에 있어서,
    상기 메모리 행렬의 열 방향으로 각 비트를 읽어 출력하는 단계에서 데이터 비트가 기록되지 않거나 더미 비트가 기록된 어드레스는 프루닝하는 것을 특징으로 하는, 인터리빙 수행 방법.
  6. 상기 제3항에 있어서,
    상기 입력 데이터열의 길이는 상기 메모리 행렬의 열 개수 Nc의 정수배인 것을 특징으로 하는, 인터리빙 수행 방법.
  7. 제1항에 있어서,
    상기 파라미터 R은 상기 입력 데이터열의 최대 길이에 대응하는 값으로 고정 되는 것을 특징으로 하는, 인터리빙 수행 방법.
  8. 제1항에 있어서,
    상기 입력 데이터열은 터보 인코더로부터 출력된 정보어 비트열, 제1 패리티 비트열 및 제2 패리티 비트열 중 어느 하나인 것을 특징으로 하는, 인터리빙 수행 방법.
KR1020080011202A 2007-06-20 2008-02-04 인터리빙 수행 방법 KR101435830B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/665,699 US8443268B2 (en) 2007-06-20 2008-06-20 Method of performing interleaving and data transmission apparatus
PCT/KR2008/003529 WO2008156335A2 (en) 2007-06-20 2008-06-20 Method of performing interleaving and data transmission apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US94510407P 2007-06-20 2007-06-20
US60/945,104 2007-06-20

Publications (2)

Publication Number Publication Date
KR20080112088A true KR20080112088A (ko) 2008-12-24
KR101435830B1 KR101435830B1 (ko) 2014-08-29

Family

ID=40370107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080011202A KR101435830B1 (ko) 2007-06-20 2008-02-04 인터리빙 수행 방법

Country Status (3)

Country Link
US (1) US8443268B2 (ko)
KR (1) KR101435830B1 (ko)
WO (1) WO2008156335A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150131540A (ko) * 2014-05-15 2015-11-25 삼성전자주식회사 천공 장치 및 그의 천공 방법
CN113992303A (zh) * 2017-05-05 2022-01-28 中兴通讯股份有限公司 序列确定方法及装置、设备

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5109787B2 (ja) * 2008-05-02 2012-12-26 富士通株式会社 データ伝送システム、プログラム及び方法
US8468396B2 (en) * 2008-12-31 2013-06-18 Mediatek, Inc. Channel interleaver having a constellation-based block-wise permuation module
US20100235721A1 (en) * 2009-03-13 2010-09-16 Lsi Corporation Rate Matching and De-Rate Matching for an LTE Transport Channel
US8537755B2 (en) * 2010-05-11 2013-09-17 Qualcomm Incorporated Rate matching device
GB2523363B (en) * 2014-02-21 2017-06-28 Samsung Electronics Co Ltd Bit interleaver and bit de-interleaver
US10447312B2 (en) * 2016-11-25 2019-10-15 Lg Electronics Inc. Method of performing interleaving using LDPC and communication apparatus therefor
CN109150200B (zh) * 2017-06-27 2021-10-22 华为技术有限公司 一种信道交织的方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100350459B1 (ko) 1998-12-26 2002-12-26 삼성전자 주식회사 통신시스템의인터리빙/디인터리빙장치및방법
KR100393608B1 (ko) * 2000-09-29 2003-08-09 삼성전자주식회사 유.엠.티.에스시스템내 터보부호화기의 내부 인터리버 및인터리빙 수행 방법
KR100510643B1 (ko) 2000-11-01 2005-08-30 엘지전자 주식회사 이동통신 시스템에서의 인터리빙 방법
CA2405119C (en) 2001-02-13 2007-09-11 Samsung Electronics Co., Ltd. Apparatus and method for generating codes in communication system
KR100724921B1 (ko) 2001-02-16 2007-06-04 삼성전자주식회사 통신시스템에서 부호 생성 및 복호 장치 및 방법
KR100860660B1 (ko) 2002-01-09 2008-09-26 삼성전자주식회사 통신시스템의 인터리빙 장치 및 방법
EP1335497A3 (en) * 2002-02-06 2004-05-19 Samsung Electronics Co., Ltd. Interleaver and interleaving method in a communication system
US8386903B2 (en) * 2007-10-31 2013-02-26 Futurewei Technologies, Inc. Bit reverse interleaving methods for QAM modulation in a wireless communication system
US8751769B2 (en) * 2007-12-21 2014-06-10 Qualcomm Incorporated Efficient address generation for pruned interleavers and de-interleavers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150131540A (ko) * 2014-05-15 2015-11-25 삼성전자주식회사 천공 장치 및 그의 천공 방법
CN113992303A (zh) * 2017-05-05 2022-01-28 中兴通讯股份有限公司 序列确定方法及装置、设备

Also Published As

Publication number Publication date
WO2008156335A2 (en) 2008-12-24
US8443268B2 (en) 2013-05-14
WO2008156335A3 (en) 2009-02-26
US20110060970A1 (en) 2011-03-10
KR101435830B1 (ko) 2014-08-29

Similar Documents

Publication Publication Date Title
KR101435830B1 (ko) 인터리빙 수행 방법
US8543884B2 (en) Communications channel parallel interleaver and de-interleaver
US8520496B2 (en) Method and apparatus for rate matching within a communication system
JP4291372B2 (ja) 並列連接低密度パリティ検査符号を用いるチャンネル符号化/復号化装置及び方法
JP3636708B2 (ja) 通信システムにおける符号を生成するための装置及び方法
EP2111703B1 (en) Method for sub -packet generation with adaptive bit index
US7873893B2 (en) Method and apparatus for encoding and decoding data
US6854077B2 (en) Apparatus and method for providing turbo code interleaving in a communications system
US20040139378A1 (en) Method and apparatus for error control coding in communication systems using an outer interleaver
US8621322B2 (en) Data interleaver
KR20080067987A (ko) 큐피피 인터리브를 갖는 병렬 터보 디코딩을 위한 공식적플렉서블 충돌 방지 메모리 억세싱
US7640462B2 (en) Interleaver and de-interleaver
JP2020507990A (ja) 情報を処理するための方法および装置、通信デバイス、ならびに通信システム
KR100963463B1 (ko) 낮은 프레임 에러 레이트를 위한 개선된 터보 코드인터리버
US7873897B2 (en) Devices and methods for bit-level coding and decoding of turbo codes
KR20090044178A (ko) 통신시스템에서 병렬구조 라틴방진 인터리빙 방법 및 장치
JP5437279B2 (ja) 無線通信装置
CN113726476A (zh) 信道交织处理方法和处理模块
WO2017121473A1 (en) Window-interleaved turbo (wi-turbo) codes
KR100645730B1 (ko) 매직 매트릭스를 이용한 인터리빙 방법
CN110034847B (zh) 级联编码方法及装置
KR20080010736A (ko) 광대역 무선접속 통신시스템에서 길쌈 터보 부호의 부호화장치 및 방법
JP3514213B2 (ja) 直接連接畳込み符号器、及び、直接連接畳込み符号化方法
KR101353094B1 (ko) 오류정정부호에 대한 인터리빙 방법 및 이를 이용한 정보 송수신 시스템
JP4058065B2 (ja) ターボ復号装置並びにターボ復号装置に用いられるメモリ及びデコーダ並びにターボ復号装置をそなえた移動通信システム用受信側装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
LAPS Lapse due to unpaid annual fee