KR20000066035A - 터보 인터리빙 어드레스 발생 장치 및 방법 - Google Patents

터보 인터리빙 어드레스 발생 장치 및 방법 Download PDF

Info

Publication number
KR20000066035A
KR20000066035A KR1019990012859A KR19990012859A KR20000066035A KR 20000066035 A KR20000066035 A KR 20000066035A KR 1019990012859 A KR1019990012859 A KR 1019990012859A KR 19990012859 A KR19990012859 A KR 19990012859A KR 20000066035 A KR20000066035 A KR 20000066035A
Authority
KR
South Korea
Prior art keywords
address
value
bits
output
counter
Prior art date
Application number
KR1019990012859A
Other languages
English (en)
Other versions
KR100480286B1 (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
Priority to KR10-1999-0012859A priority Critical patent/KR100480286B1/ko
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Priority to CA002332990A priority patent/CA2332990C/en
Priority to DE60015272T priority patent/DE60015272T2/de
Priority to US09/541,774 priority patent/US6590951B1/en
Priority to JP2000610134A priority patent/JP3447270B2/ja
Priority to CNB008004617A priority patent/CN1140966C/zh
Priority to EP00915576A priority patent/EP1092270B1/en
Priority to RU2000130216/09A priority patent/RU2186460C1/ru
Priority to PCT/KR2000/000301 priority patent/WO2000060751A1/en
Priority to BR0005569-7A priority patent/BR0005569A/pt
Priority to AU36817/00A priority patent/AU746913B2/en
Publication of KR20000066035A publication Critical patent/KR20000066035A/ko
Application granted granted Critical
Publication of KR100480286B1 publication Critical patent/KR100480286B1/ko

Links

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
    • 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/275Interleaver wherein the permutation pattern is obtained using a congruential operation of the type y=ax+b modulo c
    • 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
    • H03M13/2764Circuits therefore
    • 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

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)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명에는 터보 인터리빙 동작을 위한 어드레스를 발생하는 장치가 개시되어 있다. 이러한 본 발명은 터보 인터리빙 동작을 위해 발생되는 일련의 어드레스중에서 삭제되어야 할 터보 인터리버 크기 값 이상의 어드레스가 일정한 규칙(rule)을 가진다는 사실에 착안하여, 사전에 상기 삭제될 어드레스에 대응하는 값이 카운팅되지 않도록 하고 있다. 이에 따라 카운터는 실제 터보 인터리빙 동작을 위해 사용될 어드레스만을 발생시키기 위한 값을 연속적으로 카운팅하게 된다. 결과적으로 본 발명의 장치는 터보 인터리빙 동작을 위해 사용될 실제 어드레스만을 일정한 주기를 가지고 연속적으로 발생한다.

Description

터보 인터리빙 어드레스 발생 장치 및 방법 {ADDRESS GENERATING APPARATUS AND METHOD FOR TURBO INTERLEAVING}
본 발명은 무선 통신시스템의 터보 인터리버에 관한 것으로, 특히 터보 인터리빙 동작을 위한 어드레스를 발생하는 장치 및 방법에 관한 것이다.
일반적으로 위성시스템, ISDN(Integrated Services Digital Network), 디지털 셀룰라, W-CDMA(Code Division Multiple Access), IMT-2000(CDMA 2000) 등과 같은 무선 통신시스템의 부호화기(encoder)로는 터보부호(Turbo code)를 사용하는 부호화기(이하 "터보 부호화기"라 칭함)가 사용될 수 있다. 이러한 터보 부호화기의 내부에는 인터리버(interleaver)가 포함되는데, 이 인터리버는 부호화기에 입력되는 정보를 랜덤화(randomization)함으로써 코드워드의 디스턴스 특성(distance property)를 개선시키는 것으로 터보 부호화기의 성능을 좌우하는 중요한 요소이다.
도 1은 본 발명이 적용되는 터보 인터리버의 구성을 보여주는 도면으로, 이 구성은 1995년 8월 29일자로 등록된 미합중국 특허 5,446,747호에 상세하게 개시되어 있다.
상기 도 1에 도시된 바와 같이 터보 부호화기는 입력 프레임 데이터 dk를 부호화하여 Y1k로 출력하는 제1구성 부호기(constituent encoder) 10과, 상기 입력 프레임 데이터 dk를 인터리빙하는 인터리버(interleaver) 30과, 상기 인터리버 30의 출력을 부호화하여 Y2k로 출력하는 제2구성 부호기 20으로 구성된다. 즉 터보 부호화기는 입력 프레임 데이터 dk를 부호화 처리하지 않고 바로 Xk로 출력할 뿐만 아니라 부호화 처리하여 Y1k를 출력하고, 인터리빙 및 부호화 처리하여 Y2k를 출력한다. 상기 제1 및 제2구성 부호기 10 및 20은 이미 당해 기술 분야에서 잘 알려진 RSC(Recursive Systematic Convolutional) 부호기를 사용할 수 있다. 이러한 구성부호기는 부호화율에 따라서 그 내부 구성이 달라질 수 있다.
상기 인터리버 30은 입력되는 데이터의 프레임 크기와 동일한 크기를 가지며, 상기 제2구성 부호기 20으로 입력되는 데이터 비트의 입력 순서를 바꿈으로써 데이터 비트들 사이의 상관(correlation)을 줄여주기 위한 것이다.
상기 인터리버 30은 어드레스 생성부 32와, 카운터 34와 인터리버 메모리 36으로 구성된다. 어드레스 생성부 32는 입력 데이터 프레임 크기 및 심볼 클럭에 따라 데이터의 순서를 바꾸기 위한 리드(READ)어드레스를 생성하여 인터리버 메모리 36으로 출력한다. 인터리버 메모리 36은 라이트모드시 입력 프레임 데이터 dk를 순서대로 저장하고, 리드모드시 상기 어드레스 생성부 32에서 제공된 리드어드레스에 따라 데이터를 출력한다. 카운터 34는 심볼 클럭을 입력하며, 상기 클럭을 카운팅한 값을 상기 인터리버 메모리 36의 라이트(WRITE) 어드레스로 출력한다. 상기 인터리버 30은 라이트모드시 입력 프레임 데이터 dk를 카운터 34에서 발생된 라이트어드레스에 따라 인터리버 메모리 36에 순서대로 저장하고, 리드모드시 상기 어드레스 생성부 32에서 발생된 리드어드레스에 따라 상기 인터리버 메모리 36에 저장되어 있는 데이터를 제2구성 부호기 20으로 출력한다.
이러한 터보 부호화기의 내부 인터리버로는 PN(Pseudo Noise) 랜덤 인터리버, 랜덤(random) 인터리버, 블록(block) 인터리버, 비선형(non-linear) 인터리버, S-랜덤 인터리버 등 다양한 방식의 제안된 인터리버가 사용될 수 있다. 그러나 이러한 인터리버들은 아직까지 구현의 관점보다는 학문적인 연구분야로서 성능개선에 주안점을 두고 설계된 알고리즘들로 볼 수 있다. 따라서 실제 시스템의 구현을 고려할 때 하드웨어(H/W) 구현의 복잡성(implementation complexity)이라는 측면에서는 재고가 필요한 방식들이라고 할 수 있다.
한편, 최근에 IMT-2000(CDMA 2000) 스펙(specification) 및 IS-95C 스펙에서는 터보 인터리버로서 도 1에 도시된 바와 같은 구성을 가지는 LCS(Linear Congruential Sequence) 터보 인터리버를 확정한 바 있다. 구체적으로 말하면, IMT-2000 및 IS-95C의 에어 인터페이스(air interface)에서 데이터 전송채널(data transmission channel)로서 사용되는 부가채널(supplemental channel)과 ETSI(European Telecommunications Standards Institute)에서 추진중인 UMTS(Universal Mobile Telecommunications System)의 데이터 채널에서 터보 부호를 사용하는 것으로 확정하였다.
도 2를 참조하면, 입력 카운터 110에서 출력되는 두 개의 값중에서 하위 5비트(bits)는 룩업 테이블(lookup table) 130의 어드레스를 결정하고, 또한 비트반전기(bit reverser) 140의 동작에 의해 그룹(group)을 결정하는 값으로 사용된다. 이때 비트반전기 140에 의해 비트반전된 값은 어드레스 선택 발생기 160로 인가된다. 반면에 입력 카운터 110에서 출력되는 상위 n비트는 각각의 그룹에서 2n개의 인덱스(index)를 서로 치환(permutation)하기 위한 변수로 사용된다. 즉 상기 입력 카운터 110에서 출력되는 상위 n비트의 값은 가산기 120에 의해 1이 가산된 후 곱셈&모듈로 연산기 150으로 인가된다. 곱셈&모듈로 연산기 150은 이 인가되는 값과 룩업테이블 130에서 읽어오는 각각의 그룹에 대한 C값(Value)을 곱셈(multiplication) 및 모듈로(modulo) 연산한 최종 값을 어드레스 선택 발생기 160으로 인가한다. 이때 모듈로 연산한다는 것은 가산기 120의 출력과 룩업테이블 130의 출력을 곱한 결과로부터 하위 n비트를 절단(truncation)한다는 것을 의미한다. 어드레스 선택 발생기 160은 비트반전기 140의 출력을 상위 5비트로 하고 모듈로 연산기 150의 출력을 하위 n비트로 하는 어드레스를 구성하여 터보 인터리빙 동작을 위한 어드레스로서 출력한다. 이때 상기 어드레스 선택 발생기 160은 출력되는 어드레스가 터보 인터리버 크기(size)보다 크거나 같은 경우에는 이를 삭제(discard)하고, 터보 인터리버 크기보다 작은 경우에만 출력한다. 즉 어드레스 선택 발생기 160은 비트반전기 140의 출력과 곱셈&모듈로 연산기 150의 출력을 어드레스로서 구성하고, 이 구성된 어드레스중에서 터보 인터리버 크기보다 작은 어드레스만을 출력어드레스로서 발생한다. 이때 발생된 출력어드레스는 터보 인터리버의 메모리 블록의 어드레스로서 제공되게 된다.
상기 도 2에 도시된 바와 같은 방식의 어드레스 발생 장치에서 출력되는 어드레스중 상당 부분은 천공(puncturing)되기 때문에 어드레스는 불연속적인 시간간격으로 발생되게 된다. 여기서 어드레스가 불연속적으로 발생된다는 것은 실제 시스템을 구현할 때 하드웨어적인 구현의 복잡성을 증가시키는 문제점이 있다는 것을 의미하는 것이나, 유감스럽게도 이러한 문제점에 대한 해결책이 구체적으로 제시되지는 않은 상태이다.
또한 어드레스가 불연속적인 시간간격으로 발생되기 때문에 실질적으로 일정한 어드레싱이 불가능하다. 이는 실제 하드웨어 구현에 있어서 터보 복호화기(Turbo decoder)의 클럭 타이밍을 일정하게 유지할 수 없음을 의미하는 것으로, 이에 따라 터보 복호화기의 구현이 매우 복잡하게 될 수밖에 없다. 왜냐하면 터보 복호화기의 동기(synchronization)는 대부분 인터리버의 심볼클럭 또는 어드레싱 클럭에 기준을 두기 때문이다.
따라서 본 발명의 목적은 무선 통신시스템의 터보 인터리빙 동작을 위한 어드레스의 발생 주기를 일정하게 하는 장치 및 방법을 제공함에 있다.
본 발명의 다른 목적은 무선 통신시스템의 터보 복호화기의 클럭 타이밍을 일정하게 유지할 수 있도록 하는 장치 및 방법을 제공함에 있다.
본 발명의 또다른 목적은 무선 통신시스템에서 터보 복호화기를 구현함에 있어 하드웨어적인 복잡성을 제거할 수 있도록 하는 장치 및 방법을 제공함에 있다.
이러한 목적들을 달성하기 위한 본 발명은 터보 인터리빙 동작을 위해 발생되는 일련의 어드레스중에서 삭제되어야 할 터보 인터리버 크기(입력 프레임 데이터) 값 이상의 어드레스가 일정한 규칙(rule)을 가진다는 사실에 착안하여, 사전에 상기 삭제될 어드레스에 대응하는 값이 카운팅되지 않도록 하고 있다. 이에 따라 카운터는 실제 터보 인터리빙 동작을 위해 사용될 어드레스만을 발생시키기 위한 값을 연속적으로 카운팅하게 된다. 결과적으로 본 발명의 장치는 터보 인터리빙 동작을 위해 사용될 실제 어드레스만을 일정한 주기를 가지고 연속적으로 발생한다.
도 1은 본 발명이 적용되는 일반적인 터보 인터리버의 구성을 보여주는 도면.
도 2는 종래기술에 따른 터보 인터리빙 어드레스 발생 장치의 구성을 보여주는 도면.
도 3은 본 발명에 따른 터보 인터리빙 어드레스 발생 장치의 구성을 보여주는 도면.
도 4는 도 2에 도시된 카운터의 구성을 구체적으로 보여주는 도면.
도 5는 본 발명의 제1실시예에 따른 어드레스 발생 동작의 처리흐름을 보여주는 도면.
도 6은 본 발명의 제2실시예에 따른 어드레스 발생 동작의 처리흐름을 보여주는 도면.
이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 하기에서 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한한 동일한 부호를 가지도록 하고 있음에 유의해야 한다.
우선 본 출원의 발명자는 터보 인터리빙 동작을 위해 발생되는 어드레스중에서 삭제되어야 할 터보 인터리버 크기(혹은 입력 프레임 크기) 값 이상의 어드레스가 일정한 규칙(rule)이 있음을 발견하였음을 밝혀두는 바이다. 이러한 규칙에 대해서는 후술될 것이다. 상기 삭제되는 어드레스에 일정한 규칙이 있기 때문에 사전에 상기 삭제되는 어드레스에 대응하는 값이 카운팅되지 않도록 할 수 있을 것이다. 즉 본 발명은 아예 삭제될 어드레스는 발생시키지 않는 것이다. 그러면 최종적으로 터보 인터리빙 동작을 위한 어드레스는 일정한 주기를 가지고 연속적으로 발생되게 되며, 어드레스의 발생 주기가 불연속적임에 따라 야기되던 문제점은 해소될 수 있을 것이다. 본 출원의 발명자는 터보 인터리빙 어드레스 발생 장치를 도 3에 도시된 바와 같이 구성하여, 실제 사용될 어드레스만이 일정한 주기를 가지고 발생되도록 하고 있다. 이러한 본 발명은 터보 디인터리버가 터보 인터리버의 역과정에 해당하는 것으로 구조상 모든 부분이 동일하며 단지 리드/라이트 모드에서 입력되는 순서만이 다르다는 사실을 고려해 볼 때 터보 인터리버 뿐만 아니라 터보 디인터리버에도 동일하게 적용될 수 있을 것이다. 따라서 본 발명은 설명의 편의를 위해 터보 인터리버에 적용되는 동작으로 제한되어 설명되지만, 본 발명은 터보 디인터리버에도 동일하게 적용될 수 있음을 유의하여야 할 것이다.
도 3을 참조하면, 본 발명에 따른 어드레스 발생장치는 제어부 200과, 카운터 블록인 I_COUNTER 210과, 랜덤화(randomization) 동작을 수행한 후 랜덤화 처리된 어드레스를 터보 인터리빙 동작을 위한 어드레스로 발생하는 블록 120,130,140,150으로 이루어진다. 상기 구성요소들중에서 가산기 120, 룩업테이블 130, 비트 반전기 140, 곱셈&모듈로 연산기 150은 도 2에 도시된 종래기술에 따른 어드레스 발생장치의 구성으로부터 알 수 있는 바와 같이 일반적인 구성요소들이다. 나머지 구성요소들인 제어부 200, I_COUNTER 210은 본 발명에 따른 특징적인 구성요소들이다.
상기 제어부 200은 미리 정해지는 터보 인터리버 크기 값(Nturbo)(입력 프레임의 크기)을 대응하는 이진수로 변환하고 이 변환된 이진수를 분석함으로써 상기 터보 인터리버 크기 값에 의해 정해지는 일련의 어드레스중에서 상기 터보 인터리버 크기 값 이상의 삭제할 어드레스를 결정한다. 상기 I_COUNTER 210은 상기 제어부 200의 제어하에 상기 결정된 삭제 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅 출력한다.
구체적으로 말하면, 상기 제어부 200은 상기 변환된 이진수의 상위 5비트들의 값을 분석하여 그 값보다 큰 값의 상위 5비트들을 가지는 어드레스를 삭제 어드레스로서 결정한다. I_COUNTER 210은 상기 제어부 200에 제어되어 상기 결정된 삭제 어드레스를 제외한 나머지 어드레스만이 발생되도록 카운팅 동작을 수행한다. 사실 I_COUNTER 210에 의해 카운팅되는 하위 5비트들은 비트반전기 140에 의해 반전된 후 출력 어드레스의 상위 5비트들을 구성하므로, I_COUNTER 210은 상기 이진수의 상위 5비트들의 값보다 큰 값의 상위 5비트들을 비트 반전한 경우 얻어지는 값을 제외한 나머지 값들을 하위 5비트들의 값으로 카운팅 출력한다.
또한 상기 제어부 200은 상기 변환된 이진수의 상위 5비트들의 값과 동일한 값의 상위 5비트를 가지는 어드레스에 대해서는 선택적으로 출력 어드레스를 발생하도록 결정한다. 왜냐하면 상기 변환된 이진수의 상위 5비트들의 값이 동일하다고 할지라도 이 상위 5비트들과 나머지 하위 n비트들에 의해 정해되는 값이 터보 인터리버의 크기 값 이상인 경우의 출력 어드레스는 삭제될 어드레스이고, 터보 인터리버의 크기 값보다 작은 경우의 출력 어드레스는 발생될 어드레스이기 때문이다. 따라서 출력 어드레스의 선택적 발생(삭제 어드레스의 선택적 결정) 기준은 상기 변환된 이진수의 하위 n비트들의 값을 가지고 판단한다. 즉 제어부 200은 상기 하위 n비트들의 값 이상의 값에 대응하는 값을 상위 n비트의 값으로 I_COUNTER 210이 카운팅 출력하지 않도록 제어하고, 그 대응하는 값 이외의 값만을 상위 n비트의 값으로 카운팅 출력하도록 I_COUNTER 210을 제어한다.
이와 같이 I_COUNTER 210은 제어부 200에 제어되어 터보 인터리버 크기 값 이상의 어드레스를 발생시키기 위한 카운팅 값을 출력하지는 않는다. 즉 도 1에 도시된 종래기술에 따른 카운터 110은 터보 인터리버 크기 값 이상의 어드레스를 발생시키기 위한 2n+5만큼의 카운팅 값 [0..... 2n+5-1]을 출력하지만, 본 발명에 따른 카운터인 I_COUNTER 210은 터보 인터리버 크기 값보다 작은 어드레스만을 발생시키기 위한 카운팅 값 [0 ..... Nturbo-1]을 출력한다. 상기 제어부 200의 삭제 어드레스 결정 동작 및 그에 따른 I_COUNTER 210의 카운팅 동작은 하기에서 참조될 각종 표들과의 관련된 설명으로부터 보다 명확해질 것이다.
상기 가산기 120, 룩업테이블 130, 비트 반전기 140, 곱셈 및 모듈로 연산기 150으로 이루어져 랜덤화기로서 동작하는 블록은 상기 I_COUNTER 210에 의해 카운팅되는 값(입력 어드레스)을 랜덤화 처리하여 출력한다. 이러한 랜덤화기는 소위 LCS(Linear Congruential Sequence) 점화식에 따른 연산 동작을 수행하는 것이다. 상기 가산기 120은 I_COUNTER 210에 의해 카운팅되는 상위 n비트들의 값에 특정 크기의 값("1")을 가산하여 출력한다. 즉 I_COUNTER 210에 의해 카운팅되는 값이 j=0,1,2, .....이라고 가정하면, 가산기 120은 j+1=1,2,3, .....을 출력한다. 룩업 테이블(look-up table) 130은 인터리빙 그룹 각각에 대응하는 다수의 시드(seeds) 값(혹은 C values)을 저장하고 있으며, I_COUNTER 210에 의해 카운팅되는 하위 5비트들의 값에 대응하는 n비트의 시드값을 출력한다. 곱셈&모듈로 연산기 150은 가산기 120의 출력과 룩업 테이블 130의 출력을 곱셈 및 모듈로 연산하고 그 연산된 결과를 터보 인터리빙 동작을 위한 출력 어드레스의 하위 n비트의 값으로 출력한다. 이때 곱셈&모듈로 연산기 150에 의한 연산 결과는 가산기 120의 출력과 룩업 테이블 130의 출력을 곱한 결과로부터 하위 n비트를 절단(truncation)한 결과와 동일하다. 비트 반전기(bit reverser) 140은 I_COUNTER 210에 의해 카운팅되어 출력되는 하위 5비트들의 값을 비트 반전시켜 터보 인터리빙 동작을 위한 출력 어드레스의 상위 5비트 값으로 출력한다.
상기 도 3에 도시된 어드레스 발생장치가 터보 인터리버에 적용되는 경우에 (5+n)비트의 출력 어드레스는 도 1에 도시된 바와 같이 터보 인터리버의 출력단인 인터리버 메모리 36에 리드어드레스로서 제공된다. 이와 달리 상기 도 3에 도시된 어드레스 발생장치가 터보 디인터리버에 적용되는 경우에 (5+n)비트의 출력 어드레스는 디인터리버 메모리의 라이트어드레스로서 제공된다.
도 4는 도 3에 도시된 I_COUNTER 210의 구성을 구체적으로 보여주는 도면이다.
도 4를 참조하면, I_COUNTER 210은 하위 5비트들의 값 [4:0]을 카운팅 출력하는 G_COUNTER(Group Counter) 212와, 상위 n비트들의 값 [n-1:0]을 카운팅 출력하는 J_COUNTER(Index Counter) 214로 구성된다. 상기 G_COUNTER 212에 의해 카운팅되어 출력되는 하위 5비트들의 값은 룩업 테이블 130의 어드레스를 결정하는 값과, 비트 반전기 140의 동작에 의하여 인터리빙 블록의 그룹을 결정하는 값으로 사용된다. 상기 J_COUNTER 214에 의해 카운팅 출력되는 상위 n비트들의 값은 인터리빙 블록의 각 그룹에서 2n개의 인덱스를 서로 치환(permutation)하기 위한 변수로 사용된다. 상기 G_COUNTER 212에 의한 카운팅 동작시 발생되는 캐리(Carry) 값은 J_COUNTER 214의 캐리 입력으로 인가되며, 또한 제어부 200으로도 인가된다. 상기 제어부 200은 상기 캐리값이 입력될 시 상기 J_COUNTER 214에 의한 카운팅 값을 판단하여 선택적으로 G_COUNTER 212의 카운팅 동작을 증가시킨다. 즉 G_COUNTER 212는 초기의 값(Initial Value) [00000]으로부터 순차적으로 카운팅 동작을 수행하다가 제어부 200에 의해 제어되는 시점에는 그 시점에 대응하는 값에 대한 카운팅 동작을 스킵(skip)하고 다음 값을 카운팅한다. 상기 G_COUNTER 212의 초기 값은 [00000]으로 설정되며, J_COUNTER 214의 초기 값은 [00...00]으로 설정된다.
이와 같이 I_COUNTER 210은 상위 카운터(upper counter)로서의 J_COUNTER 214와, 하위 카운터(lower counter)로서의 G_COUNTER 212를 포함하여 이루어진다. 이때 G_COUNTER 212는 이후에 출력 어드레스의 상위 5비트의 값을 결정하기 위한 하위 5비트의 값을 카운팅 출력하고, J_COUNTER 214는 이후에 출력 어드레스의 하위 n비트의 값을 결정하기 위한 상위 n비트의 값을 출력한다. 즉 I_COUNTER 210은 전체 n+5비트, 즉 터보 인터리버 크기 값(Nturbo)에 의해 정해지는 일련의 어드레스를 발생하기 위한 값을 입력 어드레스로서 생성하는데, 이때 제어부 200의 제어에 의해 삭제될 어드레스를 발생하기 위한 값은 카운팅 출력하지 않는다.
이하 출력 어드레스중에서 삭제될 어드레스를 분석한 결과 일정한 규칙이 있으며, 이러한 규칙에 해당하는 입력 어드레스에 대해서는 I_COUNTER 210이 카운팅하지 않도록 제어부 200이 제어함으로써 출력 어드레스가 불연속적으로 발생되는 문제점이 해소될 수 있다. 하기의 설명은 IS-95C에 채택된 LCS 터보 인터리버의 구현 방법을 기준으로 한다. 즉 현재 1X 터보 코덱에서는 데이터 전송율(RS: Rate Set)을 RS1, RS2로 구분할 수 있으므로, 이들을 기준으로 설명될 것이다.
상기 <표 1>에서 Nturbo(=L)은 실제 터보 인터리버의 크기(입력 프레임의 데이터 크기) 값을 나타낸다. n은 미리 정해지는 터보 인터리버의 크기 값에 대응하여 인터리빙 블록의 각 그룹의 데이터 비트 수를 결정하는 값이다. 예를 들어, IS-95C의 스펙(Specification)에 따르면, 터보 인터리버의 크기 값이 378로 정해지는 경우 이를 만족하는 어드레스의 수는 512(29)개이므로, 각 그룹의 데이터 비트는 24으로 결정된다. 왜냐하면, IS-95C에서는 인터리빙 블록의 그룹수는 25(32)으로 결정되기 때문이다. M은 2n으로 LCS(Linear Congruential Sequence)의 주기를 나타낸다. Nturbo(2) 또는 L(2)는 터보 인터리버의 크기 값(Nturbo)을 이진수로 변환한 값이다. FLAG는 상기 변환된 이진수 L(2)의 상위 5비트 값을 나타낸다. THLD는 출력 어드레스가 터보 인터리버의 크기 값(Nturbo)보다 작게 하기 위해서 사용되는 임계값(threshold value)으로 상기 변환된 이진수 L(2)의 상기 상위 5비트를 제외한 하위 n비트의 10진값을 나타낸다.
상기 <표 1>을 참조하면, 터보 인터리버의 크기 값을 이진수로 변환한 경우에 상위 5비트들의 값은 RS1 및 RS2에 따라 동일함을 알 수 있다. 터보 인터리버의 크기 값이 가변되더라도, RS1의 경우에는 변환된 이진수의 상위 5비트들의 값이 "10111"로 동일하며, RS2의 경우에는 변환된 이진수의 상위 5비트들의 값이 "10001"로 동일함을 알 수 있다. 사실 RS1의 경우에는 상기 "10111"의 값보다 큰 값을 출력 어드레스의 상위 5비트들의 값으로 가지는 어드레스는 삭제될 어드레스에 해당하며, RS2의 경우에는 상기 "10001"의 값보다 큰 값을 출력 어드레스의 상위 5비트들의 값으로 가지는 어드레스는 삭제될 어드레스에 해당한다. 그러므로 I_COUNTER 210이 카운팅 동작을 수행할 시 삭제될 어드레스의 상위 5비트들의 값에 대응하는 하위 5비트들의 값을 출력하지 않도록 제어하면 출력 어드레스의 불연속적인 발생을 제거할 수 있을 것이다. 즉 상기 출력 어드레스의 상위 5비트들의 값은 I_COUNTER 210에 의해 카운팅 출력되는 하위 5비트들의 값을 비트 반전한 값이므로, 상기 삭제될 어드레스를 결정하는 상위 5비트들의 값보다 큰 값의 상위비트들을 비트 반전한 후 이 비트 반전된 값에 대해서는 I_COUNTER 210이 카운팅 동작을 행하지 않도록 하면 출력 어드레스는 연속적으로 발생될 수 있을 것이다. 상기 RS1의 삭제될 어드레스를 결정하는 기준 값인 상위 5비트들의 값 "10111"을 비트 반전하면 "11101"의 FLAG 값이 얻어지며, RS2의 삭제될 어드레스를 결정하는 기준 값인 상위 5비트들의 값 "10001"을 비트 반전하면 "10001"의 FLAG값이 얻어진다. 그러므로 제어부 200이 이렇게 얻어진 FLAG값보다 큰 값을 하위 5비트로 가지는 어드레스를 카운팅 출력하지 않도록 I_COUNTER 210을 제어하면 출력 어드레스는 연속적으로 발생될 수 있을 것이다.
하기의 <표 2> 및 <표 3>은 터보 인터리버 크기 값에 의해 정해지는 일련의 출력 어드레스중에서 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값을 나타낸다. <표 2>는 RS 1의 경우에 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값이고, <표 3>은 RS 2의 경우에 삭제될 어드레스에 대응하여 구해지게 되는 G_COUNTER 212의 카운팅 값이다.
ADDRESS_OUT[n+4:n] = FLAG G_COUNTER[4:0] Deletion Number of discarded ADDRESS_OUT
10111 11101 (29) Partially discarded <2n
11000 00011 (3) All discarded 2n
11001 10011 (19) All discarded 2n
11010 01011 (11) All discarded 2n
11011 11011 (27) All discarded 2n
11100 00111 (7) All discarded 2n
11101 10111 (23) All discarded 2n
11110 01111 (15) All discarded 2n
11111 11111 (31) All discarded 2n
상기 <표 2>를 참조하면, RS 1의 경우에는 출력 어드레스를 상위 5비트의 값에 따라 세가지로 분류할 수 있다. 출력 어드레스 ADDRESS_OUT[n+4:n]이 00000(0)∼10110(22) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되지 않고 발생되어야 할 어드레스들이다. 출력 어드레스 ADDRESS_OUT [n+4:n]이 11000(24)∼11111(31) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되어야 할 어드레스들이다. 출력 어드레스 ADDRESS[n+4:n]이 10111(23)인 경우, 이때의 출력 어드레스들은 나머지 하위 n비트들의 값에 따라 부분적으로 삭제되거나 발생되어야 할 어드레스들이다.
상기 <표 2>에서 알 수 있는 바와 같이, 출력 어드레스 ADDRESS_OUT[n+4:n]중에서 삭제될 어드레스에 대응하는 G_COUNTER 212에 의해 카운팅되는 입력 어드레스들을 오름차순으로 정리하면 다음의 <수학식 1>과 같이 초항이 3이고, 등차가 4인 등차수열로 정리된다.
G_COUNTER[4:0] = { 3, 7, 11, 15, 19, 23, 27, 31 }
따라서 G_COUNTER 212의 카운팅 값이 위 <수학식 1>인 경우에 해당되는 모든 I_COUNTER 210의 값을 발생시키지 않으면 항상 출력 어드레스는 터보 인터리버 크기 값 Nturbo보다 작은 값을 갖게 된다. 이러한 동작은 출력 어드레스중에서 삭제할 어드레스를 결정하는 동작을 사전에 입력 카운터 210에서 조정함으로써 아예 인덱스의 발생 자체를 금지하도록 설계하는 것을 의미한다. 또한 위 시퀀스가 등차가 4인 등차수열을 구성하므로, 실제 입력 어드레스로서의 카운팅 값인 I_COUNTER [n+4:0]의 구현이 규칙적이며 용이해진다. 즉 G_COUNTER 212는 삭제될 어드레스를 제외한 어드레스만을 발생시키기 위한 값을 다음의 <수학식 2>와 같이 카운팅하면 된다.
G_RS1 =
{0,1,2,4,5,6,8,9,10,12,13,14,16,17,18,20,21,22,24,25,26,28,29,30}
상기 <수학식 2>와 같은 그룹에 해당되는 모든 카운팅 값에 대응하는 어드레스만을 LCS 터보 인터리버의 출력 어드레스로서 사용한다. 이때 출력 어드레스로서 사용되는 G_COUNTER의 시퀀스는 RS1에 속하는 모든 터보 인터리버 크기 값에 대해서 동일하게 적용된다. 즉 n값에 관계없이 RS1에 속하는 모든 경우에 G_COUNTER 212는 상기 <수학식 2>와 같은 시퀀스를 발생시키면 된다.
그러나 출력 어드레스의 상위 5비트 값이 10111(23)인 경우(= ADDRESS_OUT[n+4:0]=(10111)인 경우), 즉 G_COUNTER[4:0]=(11101)인 경우에는 부분적으로 출력 어드레스로서 사용하고 나머지는 삭제 어드레스로서 결정한다. 이때 삭제 어드레스로서 결정하는 기준에 대해서는 후술될 J_COUNTER[n-1:0]와 C값에 따라 결정된다.
ADDRESS_OUT[n+4:n] G_COUNTER[4:0] Deletion Number of discarded ADRESS_OUT
10001 10001 (17) Partially discarded <2n
10010 01001 (9) All discarded 2n
10011 11001 (25) All discarded 2n
10100 00101 (5) All discarded 2n
10101 10101 (21) All discarded 2n
10110 01101 (13) All discarded 2n
10111 11101 (29) All discarded 2n
11000 00011 (3) All discarded 2n
11001 10011 (19) All discarded 2n
11010 01011 (11) All discarded 2n
11011 11011 (27) All discarded 2n
11100 00111 (7) All discarded 2n
11101 10111 (23) All discarded 2n
11110 01111 (15) All discarded 2n
11111 11111 (31) All discarded 2n
상기 <표 3>을 참조하면, RS 2의 경우에는 이미 언급한 RS 1의 경우와 같이 출력 어드레스를 상위 5비트의 값에 따라 세가지로 분류할 수 있다. 출력 어드레스 ADDRESS_OUT[n+4:n]이 00000(0)∼10000(16) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되지 않고 발생되어야 할 어드레스들이다. 출력 어드레스 ADDRESS_OUT [n+4:n]이 10010(18)∼11111(31) 범위의 값인 경우, 이때의 출력 어드레스들은 삭제되어야 할 어드레스들이다. 출력 어드레스 ADDRESS[n+4:n]이 10001(17)인 경우, 이때의 출력 어드레스들은 나머지 하위 n비트들의 값에 따라 부분적으로 삭제되거나 발생되어야 할 어드레스들이다.
상기 <표 3>에서 알 수 있는 바와 같이, 출력 어드레스 ADDRESS_OUT[n+4:n]중에서 삭제될 어드레스에 대응하는 G_COUNTER 212에 의해 카운팅되는 입력 어드레스들을 오름차순으로 정리하면 다음의 <수학식 3>과 같이 초항이 3이고, 등차가 2인 등차수열로 정리된다.
G_COUNTER[4:0] = {3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}
따라서 G_COUNTER 212의 카운팅 값이 위 <수학식 3>인 경우에 해당되는 모든 I_COUNTER 210의 값을 발생시키지 않으면 항상 출력 어드레스는 터보 인터리버 크기 값 Nturbo보다 작은 값을 갖게 된다. 이러한 동작은 출력 어드레스중에서 삭제할 어드레스를 결정하는 동작을 사전에 입력 카운터 210에서 조정함으로써 아예 인덱스의 발생 자체를 금지하도록 설계하는 것을 의미한다. 또한 위 시퀀스가 등차가 2인 등차수열을 구성하므로, 실제 입력 어드레스로서의 카운팅 값인 I_COUNTER [n+4:0]의 구현이 규칙적이며 용이해진다. 즉 G_COUNTER 212는 삭제될 어드레스를 제외한 어드레스만을 발생시키기 위한 값을 다음의 <수학식 4>와 같이 카운팅하면 된다.
G_RS2 = {0,1,2,4,6,8,10,12,14,16,17,18,20,22,24,26,28,30}
상기 <수학식 4>와 같은 그룹에 해당되는 모든 카운팅 값에 대응하는 어드레스만을 LCS 터보 인터리버의 출력 어드레스로서 사용한다. 이때 출력 어드레스로서 사용되는 G_COUNTER의 시퀀스는 RS2에 속하는 모든 터보 인터리버 크기 값에 대해서 동일하게 적용된다. 즉 n값에 관계없이 RS2에 속하는 모든 경우에 G_COUNTER 212는 상기 <수학식 4>와 같은 시퀀스를 발생시키면 된다.
그러나 출력 어드레스의 상위 5비트 값이 10001(17)인 경우(= ADDRESS_OUT[n+4:0]=(10001)인 경우), 즉 G_COUNTER[4:0]=(10001)인 경우에는 부분적으로 출력 어드레스로서 사용하고 나머지는 삭제 어드레스로서 결정한다. 이때 삭제 어드레스로서 결정하는 기준에 대해서는 후술될 J_COUNTER[n-1:0]와 C값에 따라 결정된다.
전술한 바와 같이 입력 어드레스를 구성하는 카운팅 값을 출력하는 카운터 210의 카운팅 동작을 제어함으로써 출력 어드레스의 일부를 삭제함에 따라 출력 어드레스가 불연속적으로 발생되는 문제점을 해결할 수 있음을 알 수 있다. 즉 상기 <수학식 2> 및 <수학식 4>와 같은 시퀀스를 가지는 값을 하위 5비트의 값으로 카운팅 출력하도록 G_COUNTER 212를 설계하면, 매 심볼 간격으로 규칙적인 출력이 나오도록 설계하는 것이 가능하게 된다. 남은 문제는 부분적으로만 어드레스를 삭제해야 하는 경우이다. RS1의 경우에는 ADDRESS_OUT[n+4:n]=(10111), 즉 G_COUNTER[4:0]=(11101)=29인 경우에 부가적인 처리가 요구된다. RS2의 경우에는 ADDRESS_OUT[n+4:n]=(10001), 즉 G_COUNTER [4:0]=(10001)=17인 경우에 부가적인 처리가 요구된다.
다음의 <표 4a>, <표 4b>, <표 5a>, <표 5b>는 IS-95C에서 사용되는 LCS 터보 인터리버의 파라메터중에서 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 이러한 관계는 룩업 테이블 130에 저장되는 것으로 이미 규정된 바 있으나, 본 발명에서는 특정 그룹에 대해서는 밑줄로 표시하였고, 특정 그룹에 대해서는 진하게 표시하였다는 사실에 유의할 필요가 있다. 상기 표들에 있어서 밑줄로 표시된 부분은 위에서 설명한 바와 같이 삭제되는 어드레스를 가지는 그룹을 의미하며, 진하게 표시된 부분은 부분적으로 삭제되는 어드레스를 가지는 그룹을 의미하는 것이다. 즉 밑줄로 표시된 그룹에 대해서는 입력 카운터 210이 카운팅 동작을 수행하지 않고, 진하게 표시된 그룹에 대해서는 입력 카운터 210이 선택적으로 카운팅 동작을 수행한다. 밑줄로 혹은 진하게 표시된 그룹에 대한 입력 카운터 210의 카운팅 동작을 제어함으로써 LCS 터보 인터리버의 출력단을 천공(puncturing)하지 않고도 모든 인터리빙된 어드레스를 출력할 수 있다.
하기의 <표 4a> 및 <표 4b>는 RS 1의 경우에 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 표로부터 알 수 있는 바와 같이, 테이블 인덱스(Table Index)가 3,7,11,15, 19,23,27,31인 그룹에 대해서 입력 카운터 210은 카운팅 동작을 수행하지 않는다.
하기의 <표 5a> 및 <표 5b>는 RS 2의 경우에 각각의 n값과 각 그룹에 대한 C값과의 관계를 보여주고 있다. 표로부터 알 수 있는 바와 같이, 테이블 인덱스가 3,5,7,9,11,13,15,19,21,23,25, 27,29,31인 그룹에 대해서 입력 카운터 210은 카운팅 동작을 수행하지 않는다.
Table Index n=4 Enties n=5 Enties n=6 Enties n=7 Enties n=8 Enties n=9 Enties n=10 Enties
0 5 27 3 15 3 3 1
1 15 3 27 127 1 31 3
2 5 1 15 89 5 9 927
3 15 15 13 1 83 355 1
4 1 13 29 31 19 203 3
5 9 17 5 15 179 407 1
6 9 23 1 61 19 257 1
7 15 13 31 47 99 1 589
8 13 9 3 127 23 3 937
9 15 3 9 17 1 1 375
10 7 15 15 119 3 503 615
11 11 3 31 15 13 1 1
12 15 13 17 57 13 3 737
13 3 1 5 123 3 395 1
14 15 13 39 95 17 1 3
15 5 29 1 5 1 415 85
Table Index n=4 Enties n=5 Enties n=6 Enties n=7 Enties n=8 Enties n=9 Enties n=10 Enties
16 13 21 19 85 63 199 981
17 15 19 27 17 131 111 329
18 9 1 15 55 17 219 109
19 3 3 13 57 131 495 949
20 1 29 45 15 211 93 167
21 3 17 5 41 173 239 589
22 15 25 33 93 231 111 675
23 1 29 15 87 171 131 297
24 13 9 13 63 23 383 879
25 1 13 9 15 147 209 109
26 9 23 15 13 243 355 161
27 15 13 31 15 213 407 187
28 11 13 17 81 189 171 999
29 3 1 5 57 51 111 727
30 15 13 15 31 15 363 67
31 5 13 33 69 67 105 875
Table Index n=4 Enties n=5 Enties n=6 Enties n=7 Enties n=8 Enties n=9 Enties n=10 Enties
0 5 27 3 15 3 3 1
1 15 3 27 127 1 31 3
2 5 1 15 89 5 9 927
3 15 15 13 1 83 355 1
4 1 13 29 31 19 203 3
5 9 17 5 15 179 407 1
6 9 23 1 61 19 257 1
7 15 13 31 47 99 1 589
8 13 9 3 127 23 3 937
9 15 3 9 17 1 1 375
10 7 15 15 119 3 503 615
11 11 3 31 15 13 1 1
12 15 13 17 57 13 3 737
13 3 1 5 123 3 395 1
14 15 13 39 95 17 1 3
15 5 29 1 5 1 415 85
Table Index n=4 Enties n=5 Enties n=6 Enties n=7 Enties n=8 Enties n=9 Enties n=10 Enties
16 13 21 19 85 63 199 981
17 15 19 27 17 131 111 329
18 9 1 15 55 17 219 109
19 3 3 13 57 131 495 949
20 1 29 45 15 211 93 167
21 3 17 5 41 173 239 589
22 15 25 33 93 231 111 675
23 1 29 15 87 171 131 297
24 13 9 13 63 23 383 879
25 1 13 9 15 147 209 109
26 9 23 15 13 243 355 161
27 15 13 31 15 213 407 187
28 11 13 17 81 189 171 999
29 3 1 5 57 51 111 727
30 15 13 15 31 15 363 67
31 5 13 33 69 67 105 875
이제 본 발명의 남은 문제인 터보 인터리버 크기 값에 의해 정해지는 출력 어드레스의 상위 5비트들의 값과 동일한 값을 상위 5비트들의 값으로 가지는 어드레스를 선택적으로 제어하여 일부 어드레스는 삭제시키고 나머지 어드레스를 출력 어드레스로서 발생하는 동작을 설명한다. 이러한 동작은 상기 <표 4b>의 그룹 29 및 <표 5b>의 그룹 17에 해당하는 것으로, 이 동작은 I_COUNTER 210의 J_COUNTER 214을 제어하는 동작과 관련이 있는 것이다.
다음의 <표 6> 및 <표 7>을 참조하면, 출력 어드레스의 상위 5비트들의 값과 동일한 값을 상위 5비트들의 값으로 가지는 어드레스를 발생시킬 것이냐, 삭제시킬 것이냐의 결정은 나머지 하위 n비트들의 값인 THLD의 값에 의해 결정됨을 알 수 있다. 왜냐하면, 우선 출력 어드레스중에서 상위 5비트들의 값을 제외한 나머지 n비트들의 값 이상의 값에 대응하는 값을 상위 n비트들의 값으로 가지는 입력 어드레스가 J_COUNTER 214에 의해 카운팅되지 않아야 할 값들로 결정되기 때문이다. 예를 들어, 출력 어드레스중에서 하위 n비트의 값(THLD값)이 <표 6>과 같이 10인 경우에는 10보다 큰 값을 하위 n비트의 값으로 가지는 어드레스가 삭제될 어드레스로 결정된다. 즉 ADDRESS_OUT[n-1:0] = {10,11,12,13, 14,15}인 경우의 어드레스는 삭제될 어드레스로 결정된다. 그러므로 상기 결정된 하위 n비트들의 값에 대응하는 값들을 상위 n비트의 값으로 가지는 입력 어드레스를 카운터 210은 카운팅하지 말아야 한다. 상기 결정된 하위 n비트들의 값에 대응하는 값은 J_COUNTER 214에 의해 카운팅된 n비트가 가산기 120 및 곱셈&모듈로 연산기 150에 의해 처리된 후 출력되는 값, 즉 LCS연산(함수) 처리된 값이므로, LCS 연산을 역으로 취함으로써 얻어질 수 있을 것이다. 일예로, 상기 결정된 하위 n비트들의 값 {10,11,12,13,14,15}에 대응하는 값은 {3,4,8,9,13,14}로 구해진다. 따라서 I_COUNTER 210의 J_COUNTER 214은 상기 결정된 하위 n비트들의 값 {10,11,12,13,14,15}에 대응하는 값인 J_COUNTER[n-1] = {3,4,8,9,13,14}에 대해서는 카운팅 동작을 수행하지 않아야 한다.
RS1(G_COUNTER =29) n=4 n=5 n=6 n=7 n=8
C 3 1 5 57 51
THLD 10 26 58 122 250
ADDRESS_OUT[n-1:0] : Discarded index {10,11,12, 13,14,15} {26,27,28, 29,30,31} {58,59,60, 61,62,63} {122,123,124, 125,126,127} {250,251,252,253,254,255}
J_COUNTER[n-1:0] : Discarded index {3,4,8, 9,13,14} {25,26,27, 28,29,30} {11,24,37, 49,50,62} {73,82,91, 100,109,118} {4,9,14, 19,24,29}
RS2(G_COUNTER =17) n=4 n=5 n=6 n=7 n=8
C 19 27 17 131
THLD 26 58 122 250
ADDRESS_OUT[n-1:0] : Discarded index {26,27,28, 29,30,31} {58,59,60, 61,62,63} {122,123,124, 125,126,127} {250,251,252, 253,254,255}
J_COUNTER[n-1:0] : Discarded index {4,9,14, 19,24,29} {6,13,25, 32,44,51} {14,29,44, 59,74,89} {40,83,126, 169,212,253}
상기 <표 6>은 RS 1에서 출력 어드레스의 상위 5비트들의 값(10111)과 동일한 값의 상위 비트들을 가지는 어드레스의 일부를 상기 출력 어드레스의 나머지 하위 n비트들의 값에 따라 선택적으로 삭제하는 동작을 나타내고 있다. 일예로, 터보 인터리버 크기 값이 <표 1>에 나타난 바와 같이 378인 경우에 출력 어드레스의 상위 5비트들의 값은 10111(29)이고, 나머지 n비트들의 값인 THLD값은 1010(10)이다. 이때 상기 THLD값 이상의 값인 {10,11,12,13,14,15}을 하위 n비트들의 값으로 가지는 어드레스는 삭제될 어드레스이다. 그러므로, 상기 {10,11,12,13,14,15} 각각에 대해 상관관계(LCS 역함수)를 가지는 대응하는 값 {3,4,8,9,13,14}를 상위 n비트들의 값으로 가지는 입력 어드레스가 발생되지 않도록 I_COUNTER 210의 J_COUNTER 214를 제어하면 삭제될 어드레스의 발생을 위한 입력 어드레스는 발생되지 않게 된다. 이와 같이 삭제될 어드레스의 발생을 위한 입력 어드레스가 발생되지 않으므로, I_COUNTER 210은 삭제될 어드레스를 제외한 나머지 어드레스를 출력 어드레스로서 발생하기 위한 입력 어드레스(카운팅 값)을 연속하여 카운팅하게 된다.
상기 <표 7>은 RS 2에서 출력 어드레스의 상위 5비트들의 값(10001)과 동일한 값의 상위 비트들을 가지는 어드레스의 일부를 상기 출력 어드레스의 나머지 하위 n비트들의 값에 따라 선택적으로 삭제하는 동작을 나타내고 있다. 일예로, 터보 인터리버 크기 값이 <표 1>에 나타난 바와 같이 570인 경우에 출력 어드레스의 상위 5비트들의 값은 10001(17)이고, 나머지 n비트들의 값인 THLD값은 11010(26)이다. 이때 상기 THLD값 이상의 값인 {26,27,28,29,30,31}을 하위 n비트들의 값으로 가지는 어드레스는 삭제될 어드레스이다. 그러므로, 상기 {26,27,28,29,30,31} 각각에 대해 상관관계(LCS 역함수)를 가지는 대응하는 값 {4,9,14,19,24,29}를 상위 n비트들의 값으로 가지는 입력 어드레스가 발생되지 않도록 I_COUNTER 210의 J_COUNTER 214를 제어하면 삭제될 어드레스의 발생을 위한 입력 어드레스는 발생되지 않게 된다. 이와 같이 삭제될 어드레스의 발생을 위한 입력 어드레스가 발생되지 않으므로, I_COUNTER 210은 삭제될 어드레스를 제외한 나머지 어드레스를 출력 어드레스로서 발생하기 위한 입력 어드레스(카운팅 값)을 연속하여 카운팅하게 된다.
상기 <표 6>에서 RS 1의 G_COUNTER[4:0]=29, n=4, C=3, THLD=10인 경우의 동작을 정리해보면 다음의 <표 8>과 같다. 하기의 <표 8>에서 ADDRESS_OUT[8:4]=10111(23)은 G_COUNTER[4:0] =11101(29)의 비트 반전값을 나타낸다. 따라서 어드레스가 삭제되는 경우는 J_COUNTER[3:0]∈{3,4,8,9,13,14}인 6가지 경우가 되는데, 이는 상기 <표 6>에 나타낸 결과와 동일한 결과를 의미한다. J_COUNTER[3:0]이 상기 6가지 경우에 속하면 I_COUNTER 210의 G_COUNTER 212는 +1 증가되어 다음 그룹으로 천이한다. 따라서 실제로는 그룹 29에 해당되는 인덱스는 출력되지 않고 그룹 30으로 I_COUNTER[n+4:0]이 천이된다.
J_COUNTER[3:0] LCS ADDRESS_OUT[3:0] ADDRESS_OUT[8:4]
0 (0+1)×3 mod 16 3 10111(23)
1 (1+1)×3 mod 16 6 10111(23)
2 (2+1)×3 mod 16 9 10111(23)
3 (3+1)×3 mod 16 12 * discarded 10111(23)
4 (4+1)×3 mod 16 15 * discarded 10111(23)
5 (5+1)×3 mod 16 2 10111(23)
6 (6+1)×3 mod 16 5 10111(23)
7 (7+1)×3 mod 16 8 10111(23)
8 (8+1)×3 mod 16 11 * discarded 10111(23)
9 (9+1)×3 mod 16 14 * discarded 10111(23)
10 (10+1)×3 mod 16 1 10111(23)
11 (11+1)×3 mod 16 4 10111(23)
12 (12+1)×3 mod 16 7 10111(23)
13 (13+1)×3 mod 16 10 * discarded 10111(23)
14 (14+1)×3 mod 16 13 * discarded 10111(23)
15 (15+1)×3 mod 16 0 10111(23)
상기 <표 6>에서 RS 1의 G_COUNTER[4:0]=29, n=5, C=1, THLD=26인 경우의 동작을 정리해보면 다음의 <표 9A> 및 <표 9B>와 같다. 하기의 <표 9A> 및 <표 9B>에서 ADDRESS_OUT[8:4]=10111(23)은 G_COUNTER[4:0] =11101(29)의 비트 반전값을 나타낸다. 따라서 어드레스가 삭제되는 경우는 J_COUNTER[3:0]∈{25,26,27,28,29,30}인 6가지 경우가 되는데, 이는 상기 <표 6>에 나타낸 결과와 동일한 결과를 의미한다. J_COUNTER[3:0]이 상기 6가지 경우에 속하면 I_COUNTER 210의 G_COUNTER 212는 +1 증가되어 다음 그룹으로 천이한다. 따라서 실제로는 그룹 29에 해당되는 인덱스는 출력되지 않고 그룹 30으로 I_COUNTER[n+4:0]이 천이된다.
J_COUNTER[4:0] LCS ADDRESS_OUT[4:0] ADDRESS_OUT[9:5]
0 (0+1)×1 mod 32 1 10111(23)
1 (1+1)×1 mod 32 2 10111(23)
2 (2+1)×1 mod 32 3 10111(23)
3 (3+1)×1 mod 32 4 10111(23)
4 (4+1)×1 mod 32 5 10111(23)
5 (5+1)×1 mod 32 6 10111(23)
6 (6+1)×1 mod 32 7 10111(23)
7 (7+1)×1 mod 32 8 10111(23)
8 (8+1)×1 mod 32 9 10111(23)
9 (9+1)×1 mod 32 10 10111(23)
10 (10+1)×1 mod 32 11 10111(23)
11 (11+1)×1 mod 32 12 10111(23)
12 (12+1)×1 mod 32 13 10111(23)
13 (13+1)×1 mod 32 14 10111(23)
14 (14+1)×1 mod 32 15 10111(23)
15 (15+1)×1 mod 32 16 10111(23)
J_COUNTER[3:0] LCS ADDRESS_OUT[3:0] ADDRESS_OUT[8:4]
16 (16+1)×1 mod 32 17 10111(23)
17 (17+1)×1 mod 32 18 10111(23)
18 (18+1)×1 mod 32 19 10111(23)
19 (19+1)×1 mod 32 20 10111(23)
20 (20+1)×1 mod 32 21 10111(23)
21 (21+1)×1 mod 32 22 10111(23)
22 (22+1)×1 mod 32 23 10111(23)
23 (23+1)×1 mod 32 24 10111(23)
24 (24+1)×1 mod 32 25 10111(23)
25 (25+1)×1 mod 32 26 * discarded 10111(23)
26 (26+1)×1 mod 32 27 * discarded 10111(23)
27 (27+1)×1 mod 32 28 * discarded 10111(23)
28 (28+1)×1 mod 32 29 * discarded 10111(23)
29 (29+1)×1 mod 32 30 * discarded 10111(23)
30 (30+1)×1 mod 32 31 * discarded 10111(23)
31 (31+1)×1 mod 32 0 10111(23)
도 5 및 도 6은 본 발명의 제1 및 제2실시예에 따른 인터리빙 동작의 처리흐름을 보여주는 도면이다. 상기 도 5는 RS 1의 경우에 수행되는 인터리빙 동작의 처리흐름을 보여주는 도면이고, 상기 도 6은 RS 2의 경우에 수행되는 인터리빙 동작의 처리흐름을 보여주는 도면이다. 상기 처리흐름에 따른 동작은 도 4에 도시된 바와 같이 G_COUNTER 212의 카운팅 값과 J_COUNTER 214의 카운팅 값을 입력하는 제어부 200에 의해 제어된다. 초기 상태에서 상기 G_COUNTER 212 및 J_COUNTER 214는 리셋 상태로 있게 된다.
도 5를 참조하면, 제어부 200은 G_COUNTER 212의 카운팅 값이 상기 <수학식 2>에 나타낸 G_RS1의 시퀀스에 해당하는 값인 것으로 402단계에서 판단되는 경우, 410단계에서 G_COUNTER 212의 카운팅 값을 증가시키면서 I_COUNTER 210에 의해 카운팅되는 값을 406단계에서 랜덤화 및 비트반전하여 결과적으로 인터리빙을 위한 어드레스로 출력한다. 상기 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 402단계에서 판단되는 경우, 제어부 200은 404단계 및 406단계를 수행하지 않고 408단계로 바로 진행함으로써 삭제될 어드레스에 대응하는 입력 어드레스의 발생동작이 수행되지 않도록 한다.
이러한 출력 어드레스의 발생 동작을 수행하는 도중에 404단계에서 G_COUNTER 212의 카운팅 값이 29이고 J_COUNTER 214의 카운팅 값이 <표 6>에 나타낸 바와 같이 삭제값인 것으로 판단되는 경우에는 출력 어드레스가 부분적으로 삭제될 어드레스에 해당하므로, 제어부 200은 412단계에서 G_COUNTER 212를 리셋시키고, J_COUNTER 214의 카운팅 값을 증가시키면서 출력 어드레스가 삭제될 어드레스인지 여부를 판단한다. 출력 어드레스가 삭제될 어드레스에 해당하는 값을 J_COUNTER 214가 카운팅하는 것으로 404단계에서 판단되는 경우, 제어부 200은 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 402단계에서 판단되는 경우와 마찬가지로 406단계의 동작을 수행하지 않는다.
그러나 J_COUNTER 214의 카운팅 값이 출력 어드레스가 삭제될 어드레스가 아님을 나타내는 것으로 404단계에서 판단되는 경우, 제어부 200은 406단계를 수행함으로써 I_COUNTER 210에 카운팅되고, 랜덤화 및 비트반전된 어드레스를 인터리빙 어드레스로 출력한다.
위와 같은 동작은 G_COUNTER 212의 카운팅 값이 31이고 J_COUNTER 214의 카운팅 값이 모두 1인 것으로 414단계에서 판단될 때까지 반복적으로 수행되게 된다.
도 6을 참조하면, 제어부 200은 G_COUNTER 212의 카운팅 값이 상기 <수학식 4>에 나타낸 G_RS2의 시퀀스에 해당하는 값인 것으로 502단계에서 판단되는 경우, 510단계에서 G_COUNTER 212의 카운팅 값을 증가시키면서 I_COUNTER 210에 의해 카운팅되는 값으로 입력 어드레스를 구성함으로써 506단계에서 랜덤화 및 비트반전되어 결과적으로 인터리빙을 위한 어드레스가 출력되도록 한다. 상기 G_RS1의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 502단계에서 판단되는 경우, 제어부 200은 504단계 및 506단계를 수행하지 않고 508단계로 바로 진행함으로써 삭제될 어드레스에 대응하는 입력 어드레스의 발생동작이 수행되지 않도록 한다.
이러한 출력 어드레스의 발생 동작을 수행하는 도중에 504단계에서 G_COUNTER 212의 카운팅 값이 17이고 J_COUNTER 214의 카운팅 값이 <표 7>에 나타낸 바와 같이 삭제값인 것으로 판단되는 경우에는 출력 어드레스가 부분적으로 삭제될 어드레스에 해당하므로, 제어부 200은 512단계에서 G_COUNTER 212를 리셋시키고, J_COUNTER 214의 카운팅 값을 증가시키면서 출력 어드레스가 삭제될 어드레스인지 여부를 판단한다. 출력 어드레스가 삭제될 어드레스에 해당하는 값을 J_COUNTER 214가 카운팅하는 것으로 504단계에서 판단되는 경우, 제어부 200은 G_RS2의 시퀀스에 해당하지 않는 값이 G_COUNTER 212에 의해 카운팅되는 것으로 502단계에서 판단되는 경우와 마찬가지로 506단계의 동작을 수행하지 않는다.
그러나 J_COUNTER 214의 카운팅 값이 출력 어드레스가 삭제될 어드레스가 아님을 나타내는 것으로 504단계에서 판단되는 경우, 제어부 200은 506단계를 수행함으로써 I_COUNTER 210에 카운팅된 후 비트반전 및 랜덤화된 어드레스를 인터리빙을 위한 어드레스로서 발생되도록 한다.
위와 같은 동작은 G_COUNTER 212의 카운팅 값이 31이고 J_COUNTER 214의 카운팅 값이 모두 1인 것으로 514단계에서 판단될 때까지 반복적으로 수행되게 된다.
상술한 바와 같이 본 발명은 터보 인터리버 및 디인터리버 동작을 위해 발생되는 어드레스중에서 삭제되는 어드레스가 일정한 규칙(rule)이 있다는 사실에 기초하여, 사전에 상기 삭제되는 어드레스에 대응하는 값이 카운팅되지 않도록 함으로써, 출력 어드레스의 발생 주기가 일정하도록 한다. 이에 따라 터보 복호화기의 클럭 타이밍을 일정하게 유지할 수 있으며, 터보 복호화기를 구현함에 있어 하드웨어적인 복잡성을 제거할 수 있는 이점이 있다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도내에서 여러가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 않되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (29)

  1. 미리 정해지는 입력 프레임의 크기 값에 대응하는 이진수를 분석하여 일련의 출력어드레스중에서 삭제할 어드레스를 결정하는 제어부와,
    상기 결정된 삭제 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 카운터와,
    상기 카운터에 의해 카운팅되는 특정 상위 비트들을 랜덤화 처리하는 랜덤화기와,
    상기 카운터에 의해 카운팅되는 상기 특정 상위 비트들을 제외한 나머지 하위 비트들을 비트 반전하는 반전기를 포함하며,
    상기 반전기의 출력을 상위 비트로 하고 상기 랜덤화기의 출력을 하위 비트로 하는 출력어드레스를 발생하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  2. 제1항에 있어서, 상기 제어부는, 상기 이진수의 특정 상위 비트들의 값을 분석하여 상기 삭제 어드레스를 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  3. 제2항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값보다 큰 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  4. 제3항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들을 비트 반전하고 그 비트 반전된 값을 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  5. 제4항에 있어서, 상기 제어부는, 상기 비트 반전된 값을 하위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 발생 장치.
  6. 제3항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  7. 제6항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우 상기 이진수의 나머지 비트들의 값에 따라 선택적으로 상기 삭제 어드레스를 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  8. 제7항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들을 비트 반전하고 그 비트 반전된 값을 하위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  9. 제8항에 있어서, 상기 제어부는, 상기 출력어드레스의 나머지 비트들의 값 이상인 값에 대응하는 값을 상위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  10. 미리 정해지는 입력 프레임의 데이터 크기 값을 이진수로 변환하는 과정과,
    상기 이진수의 값을 분석하여 일련의 출력어드레스중에서 삭제할 어드레스를 결정하는 과정과,
    상기 결정된 삭제 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 과정과,
    상기 카운팅되는 어드레스의 특정 상위 비트를 랜덤화 처리하는 과정과,
    상기 카운팅되는 상기 특정 상위 비트들을 제외한 나머지 하위 비트들을 비트 반전하는 과정을 포함하며,
    상기 비트 반전된 결과를 상위 비트로 하고 상기 랜덤화 처리된 결과를 하위 비트로 하는 어드레스를 발생하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  11. 제10항에 있어서, 상기 이진수의 특정 상위 비트들의 값을 분석하여 상기 삭제 어드레스를 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  12. 제11항에 있어서, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값보다 큰 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  13. 제12항에 있어서, 상기 출력어드레스의 특정 상위 비트들을 비트 반전하고 그 비트 반전된 값을 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  14. 제13항에 있어서, 상기 비트 반전된 값을 하위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  15. 제12항에 있어서, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  16. 제15항에 있어서, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우 상기 이진수의 나머지 비트들의 값에 따라 선택적으로 상기 삭제 어드레스를 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  17. 제16항에 있어서, 상기 출력어드레스의 특정 상위 비트들을 비트 반전하고 그 비트 반전된 값을 하위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  18. 제17항에 있어서, 상기 출력어드레스의 나머지 비트들의 값 이상의 값에 대응하는 값을 상위 비트들의 값으로 가지는 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  19. 미리 정해지는 입력 프레임의 데이터 크기 값에 대응하여 결정되는 일련의 출력어드레스중에서 상기 입력 프레임의 데이터 크기 값에 대응하는 이진수의 값보다 큰 값을 가지는 어드레스를 삭제할 어드레스로 결정하는 제어부와,
    상기 결정된 삭제 어드레스의 비트들이 반전된 결과에 따른 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 카운터와,
    상기 카운터에 의해 카운팅되는 특정 상위 비트들을 랜덤화 처리하는 랜덤화기와,
    상기 카운터에 의해 카운팅되는 상기 특정 상위 비트들을 제외한 나머지 하위 비트들을 비트 반전하는 반전기를 포함하며,
    상기 반전기의 출력을 상위 비트로 하고 상기 랜덤화기의 출력을 하위 비트로 하는 어드레스를 발생하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  20. 제19항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값보다 큰 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  21. 제20항에 있어서, 상기 제어부는, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우에도 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  22. 제21항에 있어서, 상기 카운터는,
    상기 반전된 비트들을 하위 비트들로 가지는 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 제1카운터와,
    상기 나머지 비트들의 값 이상의 값에 대응하는 값을 상위 비트들의 값으로 가지는 어드레스를 제외한 어드레스를 연속하여 카운팅하는 제2카운터로 이루어짐을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
  23. 미리 정해지는 입력 프레임의 데이터 크기 값을 이진수로 변환하는 과정과,
    상기 입력 프레임의 데이터 크기 값에 대응하여 결정되는 일련의 어드레스중에서 상기 이진수의 값보다 큰 값을 가지는 어드레스를 삭제할 어드레스로 결정하는 과정과,
    상기 결정된 삭제 어드레스의 비트들을 반전시키는 과정과,
    상기 반전된 비트들을 가지는 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 과정과,
    상기 카운팅되는 어드레스의 특정 상위 비트들을 랜덤화 처리하는 과정과,
    상기 카운터되는 어드레스의 상기 특정 상위 비트들을 제외한 나머지 하위 비트들을 비트 반전하는 과정을 포함하며,
    상기 반전 결과를 상위 비트로 하고 상기 랜덤화 처리 결과를 하위 비트로 하는 어드레스를 발생하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  24. 제23항에 있어서, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값보다 큰 경우 이 어드레스를 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  25. 제24항에 있어서, 상기 반전된 비트들을 하위 비트들로 가지는 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  26. 제23항에 있어서, 상기 출력어드레스의 특정 상위 비트들의 값이 상기 이진수의 특정 상위 비트들의 값과 동일한 경우 이 어드레스도 상기 삭제 어드레스로 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  27. 제26항에 있어서, 상기 이진수의 특정 상위 비트들의 값과 동일한 값의 상위 비트들을 가지는 어드레스에 대해서는 상기 이진수의 나머지 비트들의 값에 따라 선택적으로 상기 삭제 어드레스를 결정하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  28. 제27항에 있어서, 상기 나머지 비트들의 값 이상의 값에 대응하는 값을 상위 비트들의 값으로 가지는 어드레스를 제외한 어드레스를 연속하여 카운팅하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 방법.
  29. 미리 정해지는 입력 프레임의 데이터 크기 값에 대응하여 결정되는 일련의 어드레스중에서 상기 입력 프레임의 데이터 크기 값에 대응하는 이진수의 값보다 큰 값을 가지는 어드레스를 제1삭제 어드레스로 결정하고, 동일한 값을 가지는 어드레스에 대해서는 선택적으로 제2삭제 어드레스로 결정하는 제어부와,
    상기 제1삭제 어드레스 비트들의 반전 결과에 따른 값을 하위 비트들의 값으로 가지는 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 제1카운터와,
    상기 제2삭제 어드레스 비트들의 값에 대응하는 값을 상위 비트들의 값으로 가지는 어드레스를 제외한 나머지 어드레스를 연속하여 카운팅하는 제2카운터와,
    상기 제1카운터의 카운팅 출력을 비트 반전하는 반전기와,
    상기 제2카운터의 카운팅 출력을 랜덤화 처리하는 랜덤화기를 포함하며,
    상기 반전기의 출력을 상위 비트로 하고 상기 랜덤화기의 출력을 하위 비트로 하는 어드레스를 발생하는 것을 특징으로 하는 터보 인터리빙 어드레스 발생 장치.
KR10-1999-0012859A 1999-04-02 1999-04-02 터보 인터리빙 어드레스 발생 장치 및 방법 KR100480286B1 (ko)

Priority Applications (11)

Application Number Priority Date Filing Date Title
KR10-1999-0012859A KR100480286B1 (ko) 1999-04-02 1999-04-02 터보 인터리빙 어드레스 발생 장치 및 방법
DE60015272T DE60015272T2 (de) 1999-04-02 2000-04-03 Adressgenerator und adresserzeugungsverfahren zur anwendung in einem turboverschateler/entschachteler
US09/541,774 US6590951B1 (en) 1999-04-02 2000-04-03 Address generator and address generating method for use in a turbo interleaver/deinterleaver
JP2000610134A JP3447270B2 (ja) 1999-04-02 2000-04-03 ターボインタリーバ/デインタリーバに使用するためのアドレス発生装置及び方法
CA002332990A CA2332990C (en) 1999-04-02 2000-04-03 Address generator and address generating method for use in a turbo interleaver/deinterleaver
CNB008004617A CN1140966C (zh) 1999-04-02 2000-04-03 Turbo交错器/解交错器中使用的地址发生器和地址发生方法
EP00915576A EP1092270B1 (en) 1999-04-02 2000-04-03 Address generator and address generating method for use in a turbo interleaver/deinterleaver
RU2000130216/09A RU2186460C1 (ru) 1999-04-02 2000-04-03 Адресный генератор и способ генерирования адреса для использования в турбоперемежителе/обращенном перемежителе
PCT/KR2000/000301 WO2000060751A1 (en) 1999-04-02 2000-04-03 Address generator and address generating method for use in a turbo interleaver/deinterleaver
BR0005569-7A BR0005569A (pt) 1999-04-02 2000-04-03 Gerador de endereço e método de geração de endereço para uso em um turbo intercalador / desintecalador
AU36817/00A AU746913B2 (en) 1999-04-02 2000-04-03 Address generator and address generating method for use in a turbo interleaver/deinterleaver

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-1999-0012859A KR100480286B1 (ko) 1999-04-02 1999-04-02 터보 인터리빙 어드레스 발생 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20000066035A true KR20000066035A (ko) 2000-11-15
KR100480286B1 KR100480286B1 (ko) 2005-04-06

Family

ID=19579577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-0012859A KR100480286B1 (ko) 1999-04-02 1999-04-02 터보 인터리빙 어드레스 발생 장치 및 방법

Country Status (11)

Country Link
US (1) US6590951B1 (ko)
EP (1) EP1092270B1 (ko)
JP (1) JP3447270B2 (ko)
KR (1) KR100480286B1 (ko)
CN (1) CN1140966C (ko)
AU (1) AU746913B2 (ko)
BR (1) BR0005569A (ko)
CA (1) CA2332990C (ko)
DE (1) DE60015272T2 (ko)
RU (1) RU2186460C1 (ko)
WO (1) WO2000060751A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030069431A (ko) * 2002-02-20 2003-08-27 삼성전자주식회사 통신 시스템에 적용되는 모뎀 에이직의 터보 부호화 장치및 그 부호화 방법
KR100510643B1 (ko) * 2000-11-01 2005-08-30 엘지전자 주식회사 이동통신 시스템에서의 인터리빙 방법
KR101017530B1 (ko) * 2002-09-30 2011-02-28 알카텔-루센트 유에스에이 인코포레이티드 인터리브된 어드레스를 발생시키는 방법 및 장치

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871303B2 (en) * 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
US6553517B1 (en) * 1999-04-09 2003-04-22 Sony Corporation Interleavers and de-interleavers
US6789218B1 (en) * 2000-01-03 2004-09-07 Icoding Technology, Inc. High spread highly randomized generatable interleavers
US7302621B2 (en) * 2000-01-03 2007-11-27 Icoding Technology, Inc. High spread highly randomized generatable interleavers
US6954885B2 (en) * 2001-12-14 2005-10-11 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel
KR100860660B1 (ko) * 2002-01-09 2008-09-26 삼성전자주식회사 통신시스템의 인터리빙 장치 및 방법
JP3607683B2 (ja) * 2002-03-13 2005-01-05 株式会社東芝 ディスク記憶装置及びデータ記録再生方法
US7620111B2 (en) 2002-08-13 2009-11-17 Nokia Corporation Symbol interleaving
EP1418675B1 (en) * 2002-10-29 2019-12-25 Samsung Electronics Co., Ltd. Method and apparatus for deinterleaving interleaved data stream in a communication system
DE10306302A1 (de) * 2003-02-14 2004-08-26 Infineon Technologies Ag Verfahren und Schaltung zur Adressgenerierung von Pseudo-Zufalls-Interleavern oder -Deinterleavern
WO2005099099A1 (en) * 2004-03-05 2005-10-20 Thomson Licensing Address generation apparatus for turbo interleaver and deinterleaver in w-cdma systems
DE602004016947D1 (de) * 2004-03-10 2008-11-20 Ericsson Telefon Ab L M Addressgenerator für einen Verschachtelungsspeicher und einen Entschachtelungsspeicher
US7437650B2 (en) * 2005-04-12 2008-10-14 Agere Systems Inc. Pre-emptive interleaver address generator for turbo decoders
US8848913B2 (en) 2007-10-04 2014-09-30 Qualcomm Incorporated Scrambling sequence generation in a communication system
US8787181B2 (en) 2008-01-14 2014-07-22 Qualcomm Incorporated Resource allocation randomization
EP2101257A1 (en) * 2008-03-13 2009-09-16 Panasonic Corporation Configurable pseudo-random sequence generator
US8923249B2 (en) * 2008-03-26 2014-12-30 Qualcomm Incorporated Method and apparatus for scrambling sequence generation in a communication system
US8200733B1 (en) 2008-04-15 2012-06-12 Freescale Semiconductor, Inc. Device having interleaving capabilities and a method for applying an interleaving function
US8219782B2 (en) * 2008-09-18 2012-07-10 Xilinx, Inc. Address generation
KR20120082230A (ko) * 2011-01-13 2012-07-23 에스케이하이닉스 주식회사 랜덤 코드 발생회로를 포함하는 반도체 장치 및 반도체 시스템과, 데이터 프로그래밍 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2675971B1 (fr) 1991-04-23 1993-08-06 France Telecom Procede de codage correcteur d'erreurs a au moins deux codages convolutifs systematiques en parallele, procede de decodage iteratif, module de decodage et decodeur correspondants.
JPH05300028A (ja) * 1992-04-22 1993-11-12 Fujitsu Ltd インターリーブアドレス発生回路
JP3415693B2 (ja) * 1993-12-23 2003-06-09 ノキア モービル フォーンズ リミテッド インターリーブプロセス
JP3249280B2 (ja) 1994-01-11 2002-01-21 富士通株式会社 インターリーブ回路
US5659580A (en) * 1994-11-29 1997-08-19 Lucent Technologies Inc. Data interleaver for use with mobile communication systems and having a contiguous counter and an address twister
JPH08335887A (ja) * 1995-06-08 1996-12-17 Fujitsu Ltd 複数インタリーブ・マトリクスのインタリーブアドレス生成回路
JPH09102748A (ja) * 1995-10-04 1997-04-15 Matsushita Electric Ind Co Ltd インターリーブ回路
KR100193846B1 (ko) * 1996-10-02 1999-06-15 윤종용 인터리브 리드 어드레스 생성기
US6434203B1 (en) * 1999-02-26 2002-08-13 Qualcomm, Incorporated Memory architecture for map decoder
US6353900B1 (en) * 1998-09-22 2002-03-05 Qualcomm Incorporated Coding system having state machine based interleaver
KR100350459B1 (ko) * 1998-12-26 2002-12-26 삼성전자 주식회사 통신시스템의인터리빙/디인터리빙장치및방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100510643B1 (ko) * 2000-11-01 2005-08-30 엘지전자 주식회사 이동통신 시스템에서의 인터리빙 방법
KR20030069431A (ko) * 2002-02-20 2003-08-27 삼성전자주식회사 통신 시스템에 적용되는 모뎀 에이직의 터보 부호화 장치및 그 부호화 방법
KR101017530B1 (ko) * 2002-09-30 2011-02-28 알카텔-루센트 유에스에이 인코포레이티드 인터리브된 어드레스를 발생시키는 방법 및 장치

Also Published As

Publication number Publication date
DE60015272D1 (de) 2004-12-02
EP1092270B1 (en) 2004-10-27
AU746913B2 (en) 2002-05-02
JP3447270B2 (ja) 2003-09-16
CN1297616A (zh) 2001-05-30
WO2000060751A1 (en) 2000-10-12
AU3681700A (en) 2000-10-23
US6590951B1 (en) 2003-07-08
CA2332990A1 (en) 2000-10-12
KR100480286B1 (ko) 2005-04-06
RU2000130216A (ru) 2004-02-20
CA2332990C (en) 2006-10-17
CN1140966C (zh) 2004-03-03
EP1092270A1 (en) 2001-04-18
BR0005569A (pt) 2001-03-06
RU2186460C1 (ru) 2002-07-27
JP2002541711A (ja) 2002-12-03
EP1092270A4 (en) 2003-06-11
DE60015272T2 (de) 2005-04-21

Similar Documents

Publication Publication Date Title
KR100480286B1 (ko) 터보 인터리빙 어드레스 발생 장치 및 방법
KR100350459B1 (ko) 통신시스템의인터리빙/디인터리빙장치및방법
JP3996514B2 (ja) ターボ復号器のためのバッファアーキテクチャ
JP4790103B2 (ja) 通信システムのためのレートマッチングおよびチャネル・インターリービング
US6625234B1 (en) Efficient implementations of proposed turbo code interleavers for third generation code division multiple access
EP1060564B1 (en) Interleaving/deinterleaving device and method for communication system
US6591381B1 (en) 2-dimensional interleaving apparatus and method
JP2004531116A (ja) ターボデコーダ用インタリーバ
EP1537673A2 (en) Method of interleaving/deinterleaving in a communication system
KR101614482B1 (ko) 터보 인터리버의 인터리빙 주소 결정 장치 및 방법
Masera et al. Low-cost IP-blocks for UMTS turbo decoders
KR100561631B1 (ko) 터보 인터리버의 출력 주소 산출 장치
KR20040061283A (ko) 터보 디코딩의 인터리버 주소 발생 방법
KR20030058177A (ko) 터보 인터리버의 출력 주소 산출기

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130227

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140227

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160226

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170224

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180227

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee