KR101134885B1 - 인터리빙 어드레스 발생 방법 - Google Patents

인터리빙 어드레스 발생 방법 Download PDF

Info

Publication number
KR101134885B1
KR101134885B1 KR1020050015116A KR20050015116A KR101134885B1 KR 101134885 B1 KR101134885 B1 KR 101134885B1 KR 1020050015116 A KR1020050015116 A KR 1020050015116A KR 20050015116 A KR20050015116 A KR 20050015116A KR 101134885 B1 KR101134885 B1 KR 101134885B1
Authority
KR
South Korea
Prior art keywords
row
column
address
rectangular matrix
columns
Prior art date
Application number
KR1020050015116A
Other languages
English (en)
Other versions
KR20060093959A (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 KR1020050015116A priority Critical patent/KR101134885B1/ko
Publication of KR20060093959A publication Critical patent/KR20060093959A/ko
Application granted granted Critical
Publication of KR101134885B1 publication Critical patent/KR101134885B1/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/2771Internal interleaver for turbo 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
    • H03M13/276Interleaving address generation
    • 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/6502Reduction of hardware complexity or efficient processing

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

본 발명은 터보 디코더에 있어서, 특히 터보 디코더의 디코딩을 위한 인터리빙 어드레스 발생 방법에 관한 것이다.
본 발명은 터보 디코더에 슬라이딩 윈도우 디코딩 방식을 적용했을 때 역방향 귀납 과정의 각 윈도우의 시작 지점부터 유효한 인터리빙 어드레스를 발생함으로써, 매트릭스 내에 0이 채워진 부분에 대한 불필요한 어드레스를 발생시키지 않아, 연속적인 디코딩 동작이 가능하도록 함에 있다.
터보 디코더, 인터리빙 어드레스, radix-4

Description

인터리빙 어드레스 발생 방법{Generation method for interleaving address}
도 1은 터보 디코더의 블록 구성도.
도 2는 종래 인터리빙 어드레스 발생을 위해 메모리를 사용하는 방식을 나타낸 도면.
도 3은 종래 인터리빙 어드레스 발생을 위해 메모리를 사용하지 않는 방식을 나타낸 도면.
도 4는 본 발명에 따른 인터리빙 어드레스 발생 방법을 나타낸 순서도.
도 5 내지 도 7은 본 발명에 있어서, 3가지 경우의 직사각형 매트릭스의 인터리빙 전/후를 나타낸 도면.
도 8은 본 발명 실시 예에 따른 블랭크 비트 위치 레지스터를 나타낸 도면.
도 9는 본 발명 실시 예에 따른 직사각형 매트릭스의 인터리빙 후 열과 행을 계산하는 예를 나타낸 도면.
도 10은 본 발명 실시 예에 따른 열과 행의 갱신 과정을 나타낸 도면.
도 11은 본 발명 실시 예에 따른 코드 블록 크기에 따른 q 시퀀스의 일부를 나타낸 도면.
본 발명은 터보 디코더에 있어서, 특히 터보 디코더의 디코딩을 위한 인터리빙 어드레스 발생 방법에 관한 것이다.
터보 코드(turbo code)는 유니버설 모바일 전화 표준(UMTS) 등의 제 3세대(3G) 무선 표준에서 데이터 전송을 위한 가장 중요한 성분들 중의 하나이다. 터보 코딩은 예외 코딩 이득을 갖는 순방향 오류 정정을 제공하고 전부에 대해서는 아니지만 거의 모든 오류 없는 데이터 전송들에 대해 가장 낮은 신호-대-잡음비(SNR) 환경들을 제공한다. 터보 코딩 구조의 키 부품은 2개의 구성 인코더들 간의 데이터 시퀀스를 교환시키는 인터리버(interleaver)이다. 터보 코드들의 전체적인 성능은 블록들 간의 인터리버의 '무작위성(randomness)'에 직접적으로 관련된다는 연구가 보고되었다.3GPP 표준은 터보 코드의 인터리버를 40 에서 5114비트들의 범위의 블록 크기들로 제한한다. 3GPP 인터리버는 의사-랜덤 인터리빙 패턴을 발생시키기 위해 복잡한 인터-로우(inter-row) 및 인트라-로우(intra-row) 교환을 갖는 기본 블록 인터리버 구조를 이용한다. 이들 교환들은 우수한 알고리즘의 성능을 제공하지만, 이들 교환은 인터리버의 하드웨어 구현을 매우 복잡하게 만든다.
도 1은 터보 디코더의 블록 구성도이다.
먼저, 입력 데이터는 제 1맵(MAP 1: Maximum A Posteriori 1) 디코더(10)로 디코딩되고 인터리버(20)를 거친 후 제 2맵 디코더(30)에 의해 디코딩되며, 그 결과를 디인터리버(De-interleaver)(40)를 거쳐 다시 제 1맵 디코더(10)로 입력된다. 이러한 동작을 반복적으로 수행한 후 마지막 반복 과정에서 제 2맵 디코더(30)의 출력이 디인터리버(50)를 거쳐 경판정(hard decision)(60)을 통해 출력된다.
터보 디코더의 디코딩 과정은 역방향 귀납(backward recursion) 과정과 순방향 귀납(forward recursion) 과정으로 구성된다. 상기 역방향 귀납 과정을 수행하기 위해서는 인터리밍된 순서의 역방향으로 입력 데이터들이 입력되어야 한다.
도 2 및 도 3은 시간의 흐름에 따른 종래의 디코딩 과정을 나타낸 도면이다.
도 2는 메모리를 사용하는 방식이며, 도 3은 메모리를 사용하지 않는 방식이다.
도 2에 도시된 바와 같이, 메모리를 사용하는 경우는 제 1맵 디코더의 디코딩 과정(S1) 동안 제 2맵 디코더에서 필요로 하는 인터리버 어드레스를 미리 생성하여 메모리에 저장한다(S12). 그리고 제 1맵 디코더의 디코딩이 끝나면 제 2맵 디코더의 디코딩 동안(S3), 상기 저장된 메모리의 인터리버 어드레스 값을 읽어 인터리버와 디인터리버를 수행하게 된다(S4,S5). 도 3에 도시된 바와 같이, 메모리를 사용하지 않은 경우는 제 1맵 디코더에 의해 디코딩 과정(S11) 동안 인터리버 매트릭스 내의 슬라이딩 윈도우(W1)의 시작 시점에 해당되는 열과 행에 대해 순차적으로 모두 계산하여 레지스터에 저장하고(S12), 제 2맵 디코더의 디코딩이 시작되면(S13), 상기 레지스터로부터 해당 슬라이딩 윈도우(W1)의 열과 행을 읽어와 인터리버 및 디인터리버 어드레스를 계산하게 된다. 그러나, 인터리버 매트릭스에 0 이 채워진 부분에 대해서도 불필요한 어드레스를 발생하게 된다.
상기 도 2와 같이 메모리를 사용하는 경우는 3GPP 25.212에 따라 계산하면 최대 5114 크기의 코드 블록을 고려하면 5114x13bits를 저장해야 하며, 도 3과 같이 메모리를 사용하지 않는 경우는 슬라이딩 윈도우에 따라 인터리버 어드레스를 생성해야 하기 때문에 인터리버 매트릭스에서 각 슬라이딩 윈도우의 시작에 해당하는 열과 행을 계산해서 레지스터(register)에 저장해야 한다. 최대 크기의 열과 행은 3GPP 25.212에 의하면 각각 20과 256이므로 열과 행을 위한 레지스터는 14비트가 되며, 슬라이딩 윈도우 크기를 256으로 할 경우 최대 5114 크기의 코드 블록에 대해 20개가 된다. 따라서 총 20x14=280bits에 해당하는 레지스터가 필요하다. 슬라이딩 윈도우의 크기를 줄이면 필요한 레지스터의 개수가 증가하고 반대로 증가시키면 터보 디코더 내부에 다른 메모리의 크기가 커지게 된다. 이는 하드웨어(hardware) 크기에 부담이 되며 연속적인 어드레스가 발생하지 않은 경우는 하드웨어 내부 제어의 복잡성(complexity)이 증가하며 불필요한 동작들이 요구되며 디코딩 속도와 소비되는 전력(power)에 부정적이다. 따라서 종래의 방식에 대한 문제점들은 다음과 같다.
첫 번째 메모리를 사용하는 방식은 5114x13bits 크기의 메모리가 하드웨어 전체 크기에 부담이 된다. 그리고 레딕스 4(radix-4)와 같은 형태의 디코딩 방식에서 동시에 두 개의 어드레스를 필요로 하므로 듀얼 포트 타입(dual port type)의 메모리를 사용해야 하므로 하드웨어(hardware)부담이 더욱 가중된다.
두 번째 메모리를 사용하지 않는 방식은 필요한 전체 레지스터의 크기도 다소 부담이 되지만 연속적인 인터리빙 어드레스가 발생하지 않고 불필요한 어드레스를 발생하여 복잡성이 증가하게 된다. 따라서 디코딩 속도를 높이는데 제약을 초래한다.
본 발명은 인터리버 매트릭스에서 입력되는 코드 블록과의 차이에 의해 발생되는 0의 위치를 제외하는 유효한 인터리빙 어드레스를 연속적으로 발생할 수 있도록 한 인터리빙 어드레스 발생 방법을 제공함에 있다.
본 발명은 슬라이딩 윈도우 방식에 적합한 방법으로 인터리버 매트릭스의 블랭크 위치를 제외한 특정 위치에서 어드레스를 발생할 수 있게 하는 방법으로 인터리버 매트릭스의 열과 행을 계산하고, 슬라이딩 윈도우 마다 갱신할 수 있도록 인터리빙 어드레스를 발생하는 방법을 제공함에 있다.
상기한 목적 달성을 위한 본 발명에 따른 인터리빙 어드레스 발생 방법은,
입력되는 코드 블록의 크기에 따른 직사각형 매트릭스의 종류를 결정하고, 상기 결정된 직사각형 매트릭스에 대해 인터리빙을 수행하는 단계;
상기 인터리빙된 직사각형 매트릭스에서 슬라이딩 윈도우의 시작 지점을 찾아 그 지점부터 유효한 인터리빙 어드레스를 연속적으로 발생시키는 단계를 포함하는 것을 특징으로 한다.
바람직하게, 상기 직사각형 매트릭스에서 0이 포함된 열에서 0의 각각의 행의 위치를 찾는 것을 베이스 시퀀스 S를 이용하는 것을 특징으로 한다.
바람직하게, 상기 코드 블록의 크기가 직사각형 매트릭스 크기 보다 작은 경우 나머지 부분에 0을 채워 넣은 후, 인터리빙 어드레스 발생시 0으로 채워진 부분은 열과 행의 계산시 제외시키는 것을 특징으로 한다.
바람직하게, 상기 인터리빙 어드레스 발생시, 직사각형 매트릭스의 특정 열에 0인 행을 행 크기의 블랭크 비트 위치 레지스터에 표시하여, 그 0이 채워진 위치를 검출하는 것을 특징으로 한다.
바람직하게, 상기 각 윈도우의 시작 시점은 매 클럭마다 열을 음수일 때까지 감산하여, 각 윈도우의 시작지점에 해당되는 열과 행을 구하는 것을 특징으로 한다.
바람직하게, 상기 열 스텝은 칼럼 단위로 감산하는 것을 특징으로 한다.
바람직하게, 상기 윈도우의 첫 번째 시작 지점은 인터리버 초기화 구간 동안 계산되는 것을 특징으로 한다.
바람직하게, 상기 계산된 윈도우별 시작 지점은 시작 지점 레지스터에 저장되는 것을 특징으로 한다.
바람직하게, 상기 시작 지점 레지스터는 최대 열과 행 값을 모두 표시할 수 있는 크기인 것을 특징으로 한다. 본 발명의 다른 실시 예에 따른 인터리빙 어드레스 발생방법은,
터보 디코더에 있어서, 제 1디코더에 의해 디코딩을 수행하는 단계; 상기 제 1디코더에 의해 디코딩 동안, 첫 번째 윈도우의 시작 지점에 대한 열과 행을 계산하여 시작지점 레지스터에 저장하는 단계; 제 2디코더에서 상기 첫 번째 윈도우 구간을 디코딩하는 동안, 두 번째 윈도우의 시작 지점에 대한 열과 행을 계산하여 상기 시작지점 레지스터에 갱신하는 단계를 포함하는 것을 특징으로 한다.
바람직하게, 상기 디코딩 및 각 윈도우에 대한 열과 행을 계산하여 상기 시 작 지점 레지스터에 갱신하는 단계들을 마지막 윈도우가 될 때까지 반복하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시 예에 따른 인터리빙 어드레스 발생 방법에 있어서,
터보 디코더의 인터리빙 어드레스를 발생시키는 방법에 있어서, 직사각형 매트릭스의 윈도우 시작 시점에 해당되는 열과 행을 기준으로 복수 개의 후보 지점을 역방향으로 계산하는 단계; 상기 계산된 후보 지점에 대해 열과 그 열의 블랭크 비트 위치를 먼저 확인한 후, 0으로 채워진 위치에 대해 점프를 수행하고, 복수개의 지점에 대해 어드레스를 발생시키는 단계를 포함하는 것을 특징으로 한다.
바람직하게, 상기 복수개의 어드레스 중 마지막 번째의 어드레스가 발생된 지점 이후부터 복수개의 후보 지점의 열과 행을 계산하고, 두 지점을 선택하여 복수개의 어드레스를 차례대로 발생시키는 단계를 더 포함하는 것을 특징으로 한다.
바람직하게, 상기 후보 지점은 3개이며, 그 3개의 후보 지점 중에서 2개 지점에 대해 인터리빙 어드레스를 발생시키는 것을 특징으로 한다.
바람직하게, 상기 터보 디코더는 Radix-4 방식을 사용하는 것을 특징으로 한다.
본 발명 실시 예에 따른 인터리빙 어드레스 발생 방법에 대하여 설명하면 다음과 같다.
먼저, 인터리버의 기본 동작은 3GPP TS 25.212의 베이스 시퀀스(base sequence)(S)를 기본으로 하는 인트라 로우 교환 패턴(intra-row permutation pattern)과 인터 로우 교환 패턴(inter-row permutation pattern)에 따른 q 시퀀스 를 사용하여 각각 직사각형 매트릭스(rectangular matrix)의 열과 행의 위치를 변화시킨다. 이에 따라 발생시키고자 하는 어드레스는 원래의 열과 행의 위치를 통해 계산할 수 있다.
이러한 인터리빙된 어드레스를 생성하는 통상적인 방법으로는 입력된 데이터 비트들을 직사각형 매트릭스로 포맷하고, 직사각형 매트릭스에 대한 인트라 로우 및 인터 로우 교환을 수행하며, 가지치기하면서 직사각형 매트릭스로부터 데이터 비트들을 출력하게 된다.
도 4는 본 발명에 따른 인터리빙 어드레스 발생 방법에 나타낸 흐름도이다.
도 4를 참조하면, 직사각형 매트릭스 포맷에 대해 인트라 로우 교환 패턴을 사용하는 베이스 시퀀스(S)를 계산하여(S81), 메모리에 저장한다(S82).
그리고, 입력되는 코드 블록 크기에 따라 직사각형 매트릭스에서 0으로 채워지는 케이스(case a, case b, case c)를 선택하고(S83) 블랭크 비트 위치 레지스터(bbp_reg) 값을 초기 값으로 설정하게 된다(S84). 이후, 인터 로우 교환 패턴에 따른 q 시퀀스를 계산하고(S85), 각 윈도우의 열과 행의 시작 지점(S(r,c))을 계산 한다(S86). 이후, 각 윈도우의 시작 지점을 통해 인터리빙 어드레스를 발생하고 마지막 윈도우까지 반복하게 된다(S86,S87). 이때 케이스(a,b,c)에 따라 0으로 채워진 부분 또는 위치는 상기 블랭크 비트 위치 레지스터 및 특정 열에 대해서 계산에서 생략된다.
구체적으로 설명하면, 레딕스 4(Radix-4) 방식은 두 비트씩 디코딩됨에 따라 제 2 맵 디코더(MAP2)의 디코딩 구간 동안 각 비트에 대한 인터리빙 어드레스를 동 시에 발생시켜야 한다. 상기 터보 디코더의 인터리버는 기본적으로 블록 인터리버 형태를 취하므로, 코드 블록과 직사각형 매트릭스의 크기를 비교하게 된다. 이때 코드 블록 크기가 블록 인터리버인 직사각형 매트릭스(RM: Rectangular Matrix) 크기 보다 작은 경우 나머지 부분에 0을 채워 넣고, 이 0은 나중에 인터리버의 출력에서 제거된다. 이때, 상기 코드 블록 크기에 따라 직사각형 매트릭스(RM)에서 0을 포함한 열의 개수가 최대 3개(즉, 3종류)까지 존재할 수 있으며 그 3가지 중 어느 하나로 직사각형 매트릭스가 존재할 수 있다. 여기서, 최대 크기의 열과 행은 각각 20과 256이 되며, 최대 슬라이딩 윈도우의 개수는 256단위로 나눌 경우 20개가 될 수 있다.
도 5 내지 도 7은 3가지 경우에 대한 직사각형 매트릭스를 인터리빙 이전(a,b,c)과 이후(a',b',c')에 나타낸 것이다.
첫 번째 경우- 도 5와 같이 직사각형 매트릭스의 인터리빙 전/후(a/a )를 나타낸 것이다. 이에 도시된 바와 같이 직사각형 매트릭스의 각 열(0~19)은 인터 로우 교환 패턴에 의해 순서가 결정되며, 마지막 번째(19)의 열은 인터리빙을 거친 후 항상 첫 번째(0) 열로 이동된다. 0으로 표시된 밑줄 친 부분은 비트 크기와는 무관하게 표시된 것이다.
두 번째 경우- 도 6과 같이 직사각형 매트릭스의 각 열(0-19)은 인터 로우 교환 패턴에 의해 순서가 결정되며, 마지막 번째(19)의 열은 인터리빙을 거친 후(b'), 항상 첫 번째(0) 열로 이동되며, 18번째(18) 열은 항상 10번째(9) 열로 이동된다.
세 번째 경우- 도 7과 같이 직사각형 매트릭스의 각 열은 인터 로우 교환 패턴에 의해 순서가 결정되며 마지막 20번째(19)의 열은 인터리빙을 거친 후(c'), 항상 첫 번째(0) 열로 이동되고, 19 번째(18) 열은 항상 10번째(9) 열로 이동되며, 18번째(17) 열은 14번째(13) 열로 이동된다. 세 번째의 경우는 코드 블록의 크기가 641~648에 해당하는 경우로 18번째 열이 14번째로 이동된다.그리고, 베타 메트릭(Beta metric) 연산은 슬라이딩 윈도우 방식의 역방향 귀납이므로, 인터리버 어드레스는 윈도우의 마지막부터 역순으로 발생해야 한다. 따라서 직사각형 매트릭스에서 윈도우의 마지막에 해당하는 열과 행을 계산하고 그 지점으로부터 역순으로 윈도우 크기만큼 어드레스를 발생시킨다. 여기서, 알파 메트릭 연산은 순방향 귀납이다.
도 5에서 일부 0이 채워진 열의 데이터를 구분하는 방법은 베이스 시퀀스(S)를 이용한다. 첫 번째 경우(Case a) 마지막 20번째(19)의 열의 인트라 로우 교환이 베이스 시퀀스(S)와 동일하게 된다. 따라서 마지막 20번째(19)의 열의 각 행에 대응하는 베이스 시퀀스(S)가 나머지 데이터 사이즈 보다 크면 그 자리가 0으로 채워지고, 0으로 채워진 위치는 열과 행 계산 시 제외시킨다. 도 6과 같이 두 번째 경우(Case b)는 19번째 열이 10번째로 변경되고 이때의 인트라 로우 교환(intra-row permutation)이 수행된다.
여기서, 인트라 로우 교환은 다음과 같이 수행된다.
(C=p)이면, Uj(i) = S([c*qj]%(p-1)]), c=0,1,2,...,(p-2). , Uj(p-1)=0
여기서, C는 칼럼이며, p는 소수를 나타내며, Uj(i)는 j번째 로우의 교환 후 c번째 출력의 입력 비트 위치이다. 상기 두 번째 경우의 인트라 로우 교환이 S[(c*q(9))%(p-1)]과 같은 연산을 수행하여 인트라 로우 어드레스를 발생하게 된다.
여기서 q(9)는 표 1에서 q 시퀀스 인덱스 9에 해당하는 값으로, 코드 블록 사이즈에 따라 다르다. 도 11은 본 발명에 따른 전체 코드 블록 중 일부만을 표기한 것이다.
도 7과 같이 세 번째 경우(Case c)는 20번째 및 19번째 열은 두 번째 경우와 동일하며, 18번째 열이 14번째(13) 열로 이동하고, 역시 인트라 로우 교환은 S[(c*q(13))%(p-1)]과 같은 연산을 수행하여 인트라 로우 교환 어드레스를 발생하게 된다. 여기서 q(13)는 도 11에서 q 시퀀스 인덱스 13에 해당한다. 여기서, 일부 0이 채워진 열의 최대 데이터 사이즈는 199이며 그때의 코드 블록 사이즈는 4001이고 직사각형 매트릭스 사이즈(rectangular matrix size)는 4200이고 열과 행은 각각 20과 210이다. 특정 열에서 0인 행을 표기하기 위해 행 크기의 레지스터를 이용한다. 최대 행 사이즈는 256이고, 256 비트의 레지스터를 이용하여 0인 행에 해당하는 곳의 비트를 1로 표기한다.
도 8은 본 발명에 따른 블랭크 비트 위치(bbp: blank bit position) 레지스터(bbp_reg)를 나타낸 구성이다.
도 8에 도시된 바와 같이, 블랭크 비트 위치 레지스터(70)의 초기 값은 0으 로 표기되며, 특정 로우에서 0인 칼럼이 해당되는 위치의 비트를 1로 표기하게 된다. 상기 레지스터의 초기 값은 0이고 전체 디코딩 과정에서 제 1맵 디코더(MAP1)의 디코딩 동안 한번 생성된다. 실제 레지스터에서 마지막 윈도우에 포함된 칼럼의 레지스터의 비트 위치의 값은 계산될 필요가 없다. 이는 마지막 윈도우의 열과 행의 위치는 항상 매트릭스의 마지막 열과 행(도 9의 LW(R,C))에 해당되기 때문이다.
인트라 로우 교환 생성과정을 보면, 3가지의 변수(Row, Column, prime) 중 행(C)과 소수(p)의 관계에 따라 인트라 로우 교환의 크기가 차이가 있지만 베이스 시퀀스(S)의 크기는 0~p-2까지로 일정하고 열과 행을 계산하는데 베이스 시퀀스만으로도 충분하다. 여기서, 구현의 편의성을 위해 블랭크 비트 위치 레지스터(bbp_reg)는 매트릭스의 전체 칼럼의 크기와 상관없이 0부터 p-2까지만 설정한다. 여기서, p는 처리 중인 데이터 블록의 블록 크기에 의존하는 소수이다.도 9는 상기 도 6과 같은 두 번째 경우(case b)에 해당하는 경우의 열과 행을 계산하는 과정을 표현한 것이다. 계산해야 할 윈도우(W)에 대해 로우 스텝(row_step)을 음수일 때까지 매 클럭(clock) 빼면서 칼럼 카운터(col_cnt)를 증가시켜 행을 구한다. 이런 방식으로 열과 행을 계산하게 된다.
이때, 0으로 채워진 블랭크 로우(blank row)는 로우 스텝(row_step)과 블랭크 비트 위치 레지스터(bbp_reg)를 이용하여 계산하게 된다.
그리고 블랭크 비트 위치 레지스터(bbp_reg)는 매 클럭(clock)의 시퀀스(S) 값을 읽어와 계산하므로 매트릭스 행 크기만큼의 클럭이 소요된다. 다음 윈도우는 이전 윈도우에서 256만큼 증가하므로 이전 윈도우에서 로우 스텝(row_step)을 뺀 음수의 결과에 256만큼 더한 값에서 로우 스텝(row_step)(256-8)을 뺀다. 이는 로우 스텝(row_step)이 행 단위로 뺄셈이 이루어지기 때문이다.
윈도우별 각 시작 지점(S(R,C))은 인터리버 초기화 구간 동안, 시작 열과 행을 계산해서 레지스터에 저장한다. 여기서, 레지스터는 13비트인데, 최대 열(max r)은 20이고 최대 행(max c)은 256이므로 각각 5비트, 8비트로 두 값을 13비트 레지스터 rc_reg[12:0]에 저장한다. 하나의 레지스터(rc_reg)를 사용하여 제 1맵(MAP1) 디코더의 디코딩 동안 첫 번째 윈도우에 대한 열과 행(r,c) 을 저장하고 제 2맵(MAP2) 디코더의 첫 번째 윈도우 구간을 디코딩하는 동안 두 번째 윈도우에 대한 열과 행을 계산해서 상기 레지스터(rc_reg)를 업데이트해서 사용한다. 그리고, 인터리버 어드레스를 발생시키는 과정에서 도 5에서처럼 0으로 채워진 위치는 불필요한 어드레스가 된다. 이 부분에 대한 연산을 생략하기 위해 점프하게 되며 블랭크 비트 위치 레지스터(bbp_reg)를 이용하면 도 5의 케이스(case a)에 따라 0인 부분을 사전에 예측할 수 있고, 따라서 불필요한 어드레스를 발생시키지 않게 된다.
레딕스 4(Radix-4)연산을 위해 복수개의 인터리빙 어드레스를 동시에 발생시켜야 한다. 따라서 시작 열과 행을 기준으로 첫 번째 어드레스를 oitlv_addr, 그리고 두 번째 어드레스를 etilv_addr라 하면 연산과정은 도 10과 같다. 도 10은 본 발명에 따른 두 번째 경우의 열과 행을 갱신하는 과정을 나타낸 도면이다.
도 10에 도시된 바와 같이, 시작 열과 행(S(R,C))을 기준으로 사전에 3개의 후보 지점(cnt_row 0, cnt_row 1, cnt_row 2)을 계산하고, 계산된 3개의 후보지점을 레지스터(bbp_reg)의 상태와 해당 열(row=9)를 통해 블랭크 비트 위치(cnt_row 0)에 대해 점프한 후 두 개의 열과 행에 대해 어드레스(oitlv_addr, eitlv_addr)를 각각 발생시킨다. 즉, 인터리빙된 직사각형 매트릭스의 1번째(0) 열은 0으로 채워졌다는 것을 알고 있고, 또 10번째(row=9)의 열에 대해서만 0의 위치를 찾아 0의 위치(cnt_row 0)에서 점프하여 두 비트의 어드레스를 발생시키면 된다. 이를 위해 row=9의 위치와 블랭크 비트 위치 레지스터를 이용하여 row=9에서의 0의 위치를 정확하게 계산할 수 있고, 이 위치를 제외한 복수개의 열과 행에 대해 복수개의 어드레스를 발생시켜 주게 된다.
그리고, 다음 어드레스는 시작 로우가 eitlv_addr이 계산된 지점(cnt_row1) 이후부터 역시 3개의 후보지점을 계산하고 두 지점을 선택해서 어드레스를 발생시킨다. 따라서 전체 인터리버 어드레스는 중간에 끊김 없이 연속적으로 발생한다. 즉, 두 개의 어드레스를 발생하기 위해 시작 열과 행을 기준으로 사전에 3개의 후보 지점을 계산하고, 계산된 3개의 후보 지점을 레지스터 bbp_reg의 상태와 해당 열을 통해 선택하여 어드레스를 발생하게 된다. 이때 0인 부분(cnt_row0)은 점프하여 다음 위치부터 어드레스를 발생하게 된다. 다음 어드레스는 상기 두 번째 어드레스가 계산된 지점 이후부터 다시 3개의 후보 지점을 선택해서 어드레스를 발생시키게 된다. 이러한 수순으로 마지막 윈도우까지 진행하게 됨에 따라 전체 인터리버 어드레스를 중간에 끊김 없이 연속적으로 발생시킬 수 있다.
이러한 본 발명은 이동통신 시스템(예: 3GPP HSDPA)에 지원되는 radix-4 터보 디코더를 위한 인터리버 어드레스 발생 방법으로 메모리를 사용하지 않고 레지스터의 크기를 줄이고 불필요한 어드레스를 발생시키지 않고 유효한 인터리빙 어드 레스(또는 터보 디코딩을 위한 어드레스)를 연속적으로 발생함으로써, 연속적인 디코딩 동작이 가능하여 속도 향상과 하드웨어 사이즈와 복잡성을 줄여주게 된다.
이제까지 본 발명에 대하여 그 바람직한 실시 예를 중심으로 살펴보았으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 기술 범위 내에서 상기 본 발명의 상세한 설명과 다른 형태의 실시 예들을 구현할 수 있을 것이다. 여기서 본 발명의 본질적 기술범위는 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
상술한 바와 같이 본 발명은 이동통신 시스템에 지원되는 터보 디코더를 위한 인터리빙 어드레스 발생 방법으로 메모리를 사용하지 않고 레지스터의 크기를 줄이고 불필요한 어드레스를 발생시키지 않고 유효한 어드레스를 발생함으로써, 연속적인 디코딩 동작이 가능하여 속도 향상과 하드웨어 사이즈와 복잡성을 줄여주는 효과가 있다.

Claims (18)

  1. 입력되는 코드 블록의 크기에 따른 직사각형 매트릭스의 종류를 결정하고, 상기 결정된 직사각형 매트릭스에 대해 열(row)와 행(column)의 위치를 변화시키는 단계;
    상기 위치가 변화된 직사각형 매트릭스에서 슬라이딩 윈도우의 시작 지점을 찾아 그 지점부터 유효한 인터리빙 어드레스를 연속적으로 발생시키는 단계를 포함하고,
    상기 코드 블록 크기가 직사각형 매트릭스보다 작은 경우 나머지 부분에 0을 채워 넣은 후, 상기 인터리빙 어드레스 발생시 상기 직사각형 매트릭스에 0으로 채워진 부분은 열과 행 계산 시 제외되며,
    상기 직사각형 매트릭스의 0이 포함된 열에서 0 각각의 행의 위치는 베이스 시퀀스 S를 이용하여 검출되는 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  2. 삭제
  3. 삭제
  4. 제 1항에 있어서,
    상기 직사각형 매트릭스의 열과 행의 위치를 변화시킬 때, 특정 열에 0인 행을 행 크기의 블랭크 비트 위치 레지스터에 표시하여, 그 0이 채워진 위치를 검출하는 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  5. 삭제
  6. 삭제
  7. 제 1항에 있어서,
    첫 번째 윈도우의 시작 지점은 인터리버 초기화 구간 동안 계산되는 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  8. 제 7항에 있어서,
    상기 계산된 윈도우별 시작 지점은 시작 지점 레지스터에 저장되는 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  9. 제 7항에 있어서,
    상기 시작 지점 레지스터는 최대 열 값과 최대 행 값을 모두 표시할 수 있는 크기인 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  10. 삭제
  11. 삭제
  12. 터보 디코더에 있어서,
    직사각형 매트릭스의 윈도우 시작 시점에 해당되는 열과 행을 기준으로 복수 개의 후보 지점을 역방향으로 계산하는 단계;
    상기 계산된 후보 지점에 대해 열과 그 열의 블랭크 비트 위치를 먼저 확인한 후, 0으로 채워진 위치에 대해 점프를 수행하고, 복수개의 지점에 대해 어드레스를 발생시키는 단계; 및
    상기 복수개의 어드레스 중 마지막 번째의 어드레스가 발생된 지점 이후부터 복수개의 후보 지점의 열과 행을 계산하고, 두 지점을 선택하여 복수 개의 어드레스를 차례대로 발생시키는 단계를 포함하는 인터리빙 어드레스 발생방법.
  13. 삭제
  14. 삭제
  15. 제 12항에 있어서,
    상기 터보 디코더는 Radix-4 방식을 사용하는 것을 특징으로 하는 인터리빙 어드레스 발생방법.
  16. 삭제
  17. 삭제
  18. 삭제
KR1020050015116A 2005-02-23 2005-02-23 인터리빙 어드레스 발생 방법 KR101134885B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050015116A KR101134885B1 (ko) 2005-02-23 2005-02-23 인터리빙 어드레스 발생 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050015116A KR101134885B1 (ko) 2005-02-23 2005-02-23 인터리빙 어드레스 발생 방법

Publications (2)

Publication Number Publication Date
KR20060093959A KR20060093959A (ko) 2006-08-28
KR101134885B1 true KR101134885B1 (ko) 2012-04-13

Family

ID=37601923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050015116A KR101134885B1 (ko) 2005-02-23 2005-02-23 인터리빙 어드레스 발생 방법

Country Status (1)

Country Link
KR (1) KR101134885B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100869567B1 (ko) * 2008-07-03 2008-11-21 주식회사 유비콘테크놀로지 무선 usb 시스템의 데이터 송수신 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040019905A (ko) * 2002-08-30 2004-03-06 루센트 테크놀러지스 인크 고기수 log map 프로세서
KR20040061283A (ko) * 2002-12-30 2004-07-07 엘지전자 주식회사 터보 디코딩의 인터리버 주소 발생 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040019905A (ko) * 2002-08-30 2004-03-06 루센트 테크놀러지스 인크 고기수 log map 프로세서
KR20040061283A (ko) * 2002-12-30 2004-07-07 엘지전자 주식회사 터보 디코딩의 인터리버 주소 발생 방법

Also Published As

Publication number Publication date
KR20060093959A (ko) 2006-08-28

Similar Documents

Publication Publication Date Title
JP3996514B2 (ja) ターボ復号器のためのバッファアーキテクチャ
CN107017892B (zh) 一种校验级联极化码编码方法及系统
US7058874B2 (en) Interleaver address generator and method of generating an interleaver address
US20090019338A1 (en) Communications device and wireless communications system
JP3880964B2 (ja) 通信システムにおけるインターリーバー及びインターリービング方法
KR850700196A (ko) 오차 정정 부호의 복호방법 및 복호장치
US20070089043A1 (en) Viterbi decoder and Viterbi decoding method
JP2004531116A (ja) ターボデコーダ用インタリーバ
WO2002013449A2 (en) Apparatus and method for providing turbo code interleaving in a communications system
CN100566185C (zh) 用于turbo编码器和解码器中的交织器的地址产生装置和方法
JP5700035B2 (ja) 誤り訂正符号復号装置、誤り訂正符号復号方法および誤り訂正符号復号プログラム
EP1471677A1 (en) Method of blindly detecting a transport format of an incident convolutional encoded signal, and corresponding convolutional code decoder
US20070101231A1 (en) Multi-standard turbo interleaver using tables
KR101134885B1 (ko) 인터리빙 어드레스 발생 방법
KR100628201B1 (ko) 터보 디코딩 방법
US20150155886A1 (en) QPP Interleaver/DE-Interleaver for Turbo Codes
EP1537673A2 (en) Method of interleaving/deinterleaving in a communication system
WO2007021057A1 (en) Viterbi decoder and method thereof
JP5169771B2 (ja) 復号器および復号方法
CN1311620A (zh) 在维特比译码器中储存线路节拍的方法
CN1787386A (zh) 一种维特比译码器路径度量存储的方法
US9467252B2 (en) Turbo decoders with extrinsic addressing and associated methods
JP2006217042A (ja) ターボ復号装置
CN113765622B (zh) 分支度量初始化方法、装置、设备及存储介质
KR100762134B1 (ko) 블록 인터리빙을 위한 읽기 주소 발생 방법

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160324

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee