KR100898467B1 - 데이터를 병렬로 인코딩하기 위한 방법 및 장치 - Google Patents

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

Info

Publication number
KR100898467B1
KR100898467B1 KR1020047004125A KR20047004125A KR100898467B1 KR 100898467 B1 KR100898467 B1 KR 100898467B1 KR 1020047004125 A KR1020047004125 A KR 1020047004125A KR 20047004125 A KR20047004125 A KR 20047004125A KR 100898467 B1 KR100898467 B1 KR 100898467B1
Authority
KR
South Korea
Prior art keywords
bits
code
encoder
coding
data
Prior art date
Application number
KR1020047004125A
Other languages
English (en)
Other versions
KR20040037092A (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 콸콤 인코포레이티드
Publication of KR20040037092A publication Critical patent/KR20040037092A/ko
Application granted granted Critical
Publication of KR100898467B1 publication Critical patent/KR100898467B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • H03M13/296Particular turbo code structure
    • H03M13/2972Serial concatenation using convolutional component codes

Abstract

본 발명은 다수의 비트들을 병렬로 코딩하며, 캐스케이드로 연결된 제 1 (외부) 인코더, 메모리 및 제 2 (내부) 인코더를 포함하는 연결 인코더에 관한 것이다. 제 1 인코더는 MR개의 코드 비트들을 생성하기 위해 제 1 코딩 방식에 따라 M개의 데이터 비트들을 병렬로 수신하여 코딩한다. 메모리는 제 1 인코더로부터 MR개의 코드 비트들 중 천공되지 않는 것을 수신하여 저장한다. 제 2 인코더는 코딩된 데이터를 생성하기 위해 N개의 코드 비트들을 수신하여 제 2 코딩 방식에 따라 코딩한다. M 및 N은 임의의 값일 수 있다(예, M≥8, N≥4). 각각의 인코더는 특정 다항식 생성기를 구현하는 컨볼루션 인코더(예, 레이트 1/2)일 수 있고, 하나 이상이 룩-업 테이블, 상태 머신 또는 몇몇 다른 설계를 통해 구현될 수 있다.

Description

데이터를 병렬로 인코딩하기 위한 방법 및 장치{METHOD AND APPARATUS FOR ENCODING DATA IN PARALLEL}
본 발명은 데이터 통신에 관한 것이다. 특히, 본 발명은 코딩과 연관된 지연을 감소시키기 위하여 데이터의 다수의 비트들을 병렬로(예컨대, 다중-포트 메모리를 사용하여) 코딩하는 것에 관한 것이다.
통상적인 데이터 통신 시스템에서, 하나 이상의 수신기 유닛에 전송되는 변조된 신호를 발생시키기 위하여 송신기 유닛에서 데이터가 처리, 변조 및 조정(condition)된다. 데이터 처리는 예컨대 데이터를 특정 프레임 포맷으로 포맷화하는 단계, 수신기 유닛들에서 에러 검출 및/또는 정정을 수행하기 위하여 특정 코딩 방식을 사용하여 포맷화된 데이터를 코딩하는 단계, 코딩된 데이터를 채널화하는 단계(즉, 커버링하는 단계), 및 시스템 대역폭 전반에 걸쳐 채널화된 데이터를 확산시키는 단계를 포함한다. 데이터 처리는 통상적으로 구현되는 표준 또는 시스템에 의하여 규정된다.
수신기 유닛에서는 전송된 신호를 복원하기 위하여 전송된 신호를 수신, 조정, 복조 및 디지털 처리한다. 수신기 유닛에서의 처리는 송신기 유닛에서 실행되는 처리와 상호 보완적이며, 예컨대 전송된 데이터를 복원하기 위하여 수신된 샘플들을 역확산하는 단계, 역확산된 샘플들을 디커버링하는 단계, 및 복원된 심벌들을 디코딩하는 단계를 포함한다.
전송 에러들을 정정하기 위한 능력은 데이터 전송의 신뢰성을 강화시킨다. 많은 디지털 통신 시스템들은 수신기 유닛들에서 에러 정정 능력을 제공하기 위하여 컨볼루션 코드 또는 터보 코드를 사용한다. 컨볼루션 코드들은 일련의 데이터, 하나 또는 몇몇 비트에 대해 동시에 동작한다. 오리지널 데이터를 복원하기 위하여 수신된 코딩 정보 시퀀스들을 디코딩하기 위한 다양한 알고리즘들 및 다양한 컨볼루션 코드들이 존재한다. 터보 코딩은 특히 병렬 연결 컨볼루션 코딩 방식이다. 연결(concatenated) 코드는 두 개 이상의 코드의 직렬 결합이며, 추가 에러 정정 능력들을 제공하기 위하여 사용된다. 연결 코드에 대하여, 코딩 스테이지들 사이의 코드 비트들은 시간 다이버시티를 제공하도록 인터리빙(재정렬)되며 이에 따라 성능이 더 개선된다. 코드 비트들의 전체 패킷 또는 프레임은 통상적으로 재정렬이 수행되기 전에 저장된다. 그 다음에, 재정렬된 코드 비트들은 직렬로 검색된 후 다음 코딩 스테이지에 의하여 코딩된다.
종래에, 컨볼루션 및 터보 코딩은 입력 비트 스트림에 대해 직렬로 수행된다. 각각의 클록 사이클 동안, 하나의 데이터 비트가 인코더에 제공되며, 인코더의 코드 레이트에 따라 두 개 이상의 코드 비트들이 발생한다. 다른 코드 레이트로 코드 비트들을 얻기 위하여 코드 비트들의 일부는 천공(puncture)(즉, 삭제)될 수 있다.
디지털 다중 액세스 통신 시스템들은 통상적으로 활성 사용자들 간에 시스템 자원들을 효율적으로 공유하기 위하여 패킷들 또는 프레임들로 데이터를 전송한다. 긴 지연을 허용할 수 없는 서비스들(예컨대, 음성, 비디오)에 대하여, 패킷들은 듀레이션이 짧게(예컨대, 10msec) 선택되며, 이에 따라 코드들은 더 짧은 처리 지연을 갖도록 선택된다. 그러나 개선된 코딩 효율성을 위해, 큰 크기의 패킷들을 처리 및 코딩하는 것이 바람직하지만, 이는 데이터를 직렬 코딩하는 종래의 기술을 사용하여 처리 지연을 더 길어지게 할 수 있다. 긴 처리 지연은 통신 시스템의 성능에 악영향을 미칠 수 있다. 예컨대, 통신 링크의 상태에 기초하여 특정 데이터 전송을 위하여 특정 사용자 또는 데이터 레이트가 선택될 수 있다. 처리 지연이 너무 긴 경우에, 링크 상태들은 데이터 전송 시간에 따라 변화했을 수도 있으며, 성능이 저하되거나 악영향을 받을 수 있다.
알 수 있는 바와 같이, 더 짧은 처리 지연을 갖고 데이터를 효율적으로 코딩하기 위하여 사용될 수 있는 기술들이 매우 바람직하다.
일 특징에 따르면, 인코더들은 코딩 시간을 더 단축하기 위하여 다수의 비트들을 병렬로 코딩할 수 있다. CDMA 통신 시스템들에 공통으로 사용되는 터보 인코더와 같은 연결 인코더를 형성하기 위하여 두 개 이상의 인코더가 직렬로 연결될 수 있다. 제 1(외부) 인코더를 사용하여 M개의 비트를 병렬로 코딩하고 제 2(내부) 인코더를 사용하여 N개의 비트를 병렬로 코딩함으로써, 연결 인코더에 대한 전체 코딩 지연이 상당히 감소할 수 있다. 통상적으로 인터리버가 제 1 인코더 및 제 2 인코더를 연결하고, 기록 동작 동안 다수의 코드 비트들을 수신하는 능력으로 병렬 코딩을 지원하며, 판독 동작 동안 다수의 코드 비트들을 제공한다.
일 실시예는 다수의 데이터 비트들을 병렬로 코딩하기 위한 연결 인코더를 제공한다. 연결 인코더는 캐스케이드 접속된 제 1(외부) 인코더, 메모리, 및 제 2(내부) 인코더를 포함한다. 제 1 인코더는 MR개의 코드 비트들을 생성하기 위하여 M개의 데이터 비트들을 수신하여 제 1 코딩 방식에 따라 병렬로 코딩한다. 메모리는 제 1 인코더로부터 천공되지 않은(즉, 제거되지 않은) MR개의 코드 비트들을 수신하여 저장한다. 제 2 인코더는 코딩된 데이터를 생성하기 위하여 N개의 코드 비트들을 수신하여 제 2 코딩 방식에 따라 병렬로 코딩한다. M 및 N은 임의의 값일 수 있다. 예컨대, M은 8 이상일 수도 있고 N은 4 이상일 수도 있다.
제 1 인코더 및 제 2 인코더 각각은 특정 다항식 생성기 행렬(예컨대, 레이트 1/2 컨볼루션 코드)을 실행하는 컨볼루션 인코더일 수 있다. 각각의 인코더는 하나 이상의 룩-업 테이블, 상태 머신, 또는 임의의 다른 설계로 실행될 수 있다. 메모리 요건들을 줄이기 위하여, 다른 패킷에 대하여 코딩이 시작되기 전에 양 인코더에 의하여 특정 패킷에 대한 코딩이 실행 및 완료될 수 있다. 처리 지연을 감소시키기 위하여, 제 1 인코더가 한 패킷을 코딩할 수 있는 동안, 제 2 인코더는 다른 패킷을 코딩한다(즉, 파이프라인형 코딩).
메모리는 P개의 포트(P>1), 단일 메모리 유닛, 또는 다중 메모리 유닛들을 가진 다중-포트 메모리로 구현될 수 있다. 메모리는 기록 동작 동안 W개의 워드들을 병렬로 저장하고 판독 동작 동안 R개의 워드들을 병렬로 제공하도록 설계될 수 있으며, 각 워드는 특정 수의 비트(예컨대, 8비트)를 포함한다. 메모리는 메모리 내에 저장된 코드 비트들을 인터리빙하도록 동작할 수 있다. 예컨대, W개의 워드들은 기록 동작에 의하여 메모리의 순차 행들에 저장될 수 있으며, R개의 워드들은 판독 동작에 의하여 메모리의 치환된(permutated) 행들로부터 검색될 수 있다.
연결 인코더는 N개의 코드 비트들을 제 2 인코더에 병렬로 제공하기 위하여 사용된 N개의 멀티플렉서들로 이루어진 세트를 추가로 포함할 수 있다. 각각의 멀티플렉서는 메모리로부터 각각의 워드를 수신하며, 검색된 워드에서 코드 비트들 중 한 비트를 선택하며, 선택된 비트를 제 2 인코더에 제공한다.
다른 실시예는 다수의 데이터 비트들을 병렬로 코딩하기 위한 컨볼루션 인코더를 제공한다. 컨볼루션 인코더는 출력 생성기에 접속된 상태 머신을 포함한다. 상태 머신은 M개의 데이터 비트들을 병렬로 수신하며, 상태 머신의 다음 상태를 나타내는 한 세트의 값들을 제공한다. 다음 상태는 M개의 데이터 비트들 및 상태 머신의 현재 상태에 대한 함수이다. 출력 생성기는 M개의 데이터 비트들 및 현재 상태를 수신하며 이에 응답하여 MR개의 코드 비트들을 생성한다. M 및 MR은 1보다 큰 임의의 수(예컨대, M≥8, MR≥16)일 수 있다.
상태 머신은 통상적으로 특정 다항식 생성기 행렬을 구현하며, 레지스터들의 세트에 접속된 논리 엘리먼트들의 세트(예컨대, 게이트들)로 구현될 수 있다. 각각의 논리 엘리먼트는 상태 머신의 1비트에 대한 특정 논리함수를 실행하기 위하여 현재의 상태값들 및 M개의 데이터 비트들 중 선택된 것들에 접속한다. 레지스터들은 논리 엘리먼트들로부터 출력값들을 저장하며, 레지스터 출력들은 상태 머신의 현재 상태를 포함한다.
데이터의 패킷들을 코딩하기 위하여, 출력 생성기는 제 1 출력 생성기 및 제 2 출력 생성기를 포함할 수 있다. 제 1 출력 생성기는 M개의 데이터 비트들 및 현재 상태를 수신하고 제 1 코딩 위상 동안 상기 수신에 응답하여 MR개의 코드 비트(예컨대, 데이터)를 생성한다. 제 2 출력 생성기는 M개의 데이터 비트들 및 현재 상태를 수신하고 제 2 코딩 위상 동안 상기 수신에 응답하여 MR개의 코드(예컨대, 코드-테일(code-tail))를 생성한다. 제 1 또는 제 2 출력 생성기 중 한 생성기로부터의 코드 비트들은 실행된 코딩 위상에 따라 선택된다. 상태 머신은 통상적으로 제 2 코딩 위상에서 알려진 상태(예컨대, 모두 0인 상태)로 세팅된다.
또 다른 실시예는 다수의 비트들을 병렬로 코딩하기 위한 데이터 인코더를 제공한다. 데이터 인코더는 입력 인터페이스, 다중-비트 인코더, 메모리, 및 출력 인터페이스를 포함한다. 입력 인터페이스는 M개의 데이터 비트들을 수신하고 수신된 비트들을 다중-비트 인코더에 제공한다. 다중-비트 인코더는 MR개의 코드 비트들을 생성하기 위하여 M개의 데이터 비트들을 병렬로 수신하여 코딩하거나 또는 NR개의 코드 비트들을 생성하기 위하여 N개의 코드 비트들을 병렬로 수신 및 코딩하도록 선택될 수 있다. 메모리는 다중-비트 인코더로부터 MR개의 코드 비트들 중 천공되지 않은 비트들을 저장하며, 전송될 때 N개의 코드 비트들을 다중-비트 인코더에 제공한다. 출력 인터페이스는 다중-비트 인코더로부터 NR개의 코드 비트들을 수신하며, NR개의 코드 중 천공되지 않은 비트들을 코딩된 데이터로서 제공한다. 데이터 인코더는 통상적으로 메모리에 대한 기록 동작 및 판독 동작 동안에 어드레스들을 발생시키는 어드레스 생성기를 더 포함한다.
또 다른 실시예는 통신 시스템(예컨대, CDMA 시스템)에서 사용하기 위한 송신기 유닛을 제공한다. 송신기 유닛은 캐스케이드 접속된 인코더, 변조기 및 송신기를 포함한다. 인코더는 MR개의 코드 비트들을 생성하기 위하여 M개의 데이터 비트들을 수신하여 제 1 코딩 방식에 따라 병렬로 코딩하고, MR개의 코드 비트들 중 천공되지 않은 비트들을 저장하며, NR개의 코드 비트들을 생성하기 위하여 N개의 코드 비트들을 수신하여 제 2 코딩 방식에 따라 병렬로 코딩하며, NR개의 코드 비트들 중 천공되지 않은 비트들을 코딩된 데이터로서 제공한다. 변조기는 코딩된 데이터를 수신한 후 변조된 데이터를 생성하기 위하여 특정 변조 방식을 사용하여 변조한다. 그리고 송신기는 변조된 데이터를 수신 및 처리하여 전송에 적합한 변조된 신호를 발생시킨다. 인코더는 터보 코드 또는 연결 코드를 구현하도록 설계될 수 있다.
다른 실시예는 다수의 데이터 비트들의 연결 코딩을 병렬로 수행하기 위한 방법을 제공한다. 본 방법에 따르면, MR개의 코드 비트들을 생성하기 위하여 M개의 데이터 비트가 수신되어 제 1 코딩 방식에 따라 병렬로 코딩된다. MR개의 코드 비트들 중 0비트 이상은 특정 천공 방식으로 천공될 수 있으며, 천공되지 않은 코드 비트들은 메모리에 저장된다. 적절한 시간에, N개의 코드 비트들이 메모리로부터 검색되며, 제 2 코딩 방식에 따라 병렬로 코딩되어 코딩된 데이터를 생성한다. 효율적인 지연 감소를 위해, 천공되지 않은 코드 비트들 중 W개의 워드들은 메모리의 W개의 포트들에 동시에 기록될 수 있으며, 코드 비트들의 R개의 워드들은 메모리의 R개의 포트로부터 동시에 판독될 수 있다. 인터리빙을 제공하기 위하여, W개의 워드들은 기록 동작으로 메모리 내의 순차적 행들에 저장될 수 있으며, R개의 워드들은 판독 동작으로 메모리 내의 천공되지 않은 행들로부터 검색될 수 있다.
본 발명의 다른 특징 및 실시예들은 도면을 참조로 하여 이하에서 더 상세히 설명될 것이다.
도 1은 통신 시스템의 블록도.
도 2는 본 발명의 일부 실시예들을 실행하도록 설계될 수 있는 인코더의 블록도.
도 3은 일 실시예에 따라 다항식 생성기 행렬들의 특정 세트를 실행하는 연결 인코더를 나타낸 도면.
도 4는 일 실시예에 따라 다수의 데이터 비트들을 병렬로 코딩하기 위한 컨볼루션 인코더에 대한 블록도.
도 5a 및 도 5b는 다양한 실시예에 따라 특정 다항식 생성기 행렬을 구현하고 8개의 데이터 비트들을 코딩하는 컨볼루션 인코더의 개략도.
도 6은 다른 특정 다항식 생성기 행렬을 구현하고 4개의 코드 비트들을 병렬로 코딩할 수 있는 컨볼루션 인코더의 일 실시예를 도시한 개략도.
도 7a는 인터리버에 대한 도면.
도 7b 및 도 7c는 다양한 실시예들에 따라 천공 없는 그리고 천공을 갖는 인터리버와 외부 컨볼루션 인코더 사이의 인터페이스에 대한 도면.
도 8은 일 실시예에 따른 인코더의 블록도.
도 9는 일 실시예에 따라 병렬로 다수의 데이터 비트들의 연결 코딩을 수행하는 방법에 대한 흐름도.
도 1은 본 발명의 다양한 양상들이 구현될 수 있는 통신 시스템(100)에 대한 실시예의 간략화된 블록도이다. 송신기 유닛(110)에서, 트래픽 데이터는 일반적으로 패킷 또는 프레임 형태로 데이터 소스(112)로부터 인코더(114)로 전송되고, 상기 인코더는 특정 코딩 방식을 사용하여 데이터를 포맷화 및 코딩한다. 인코더(114)는 일반적으로 코드 비트들의 인터리빙(즉, 재배열)을 추가로 수행한다. 변조기(116)는 코딩된 데이터를 수신, 채널화(커버링), 및 확산하여 심벌들을 발생시키고, 이러한 심벌들은 하나 또는 그 이상의 아날로그 신호로 변환된다. 아날로그 신호들은 전송기(118)에 의해 필터링, (직교) 변조, 증폭, 및 업컨버팅되어 변조된 신호들을 발생시키고, 변조된 신호들은 안테나(120)를 통해 하나 또는 그 이상의 수신기 유닛들로 전송된다.
수신기 유닛(130)에서, 전송된 신호는 안테나(132)에 의해 수신되어 수신기(134)로 제공된다. 수신기(134) 내에서, 수신된 신호는 증폭, 필터링, 다운컨버팅, 직교 복조, 및 디지털화되어 샘플들을 제공한다. 샘플들은 복조기(136)에 의해 역확산, 디커버링, 및 복조되어 복조된 심벌들을 발생시킨다. 그리고 나서 디코더(138)는 복조된 심벌들을 디코딩하고 (가능하게는) 디코딩된 데이터를 재배열하여 전송된 데이터를 복원한다. 복조기(136) 및 디코더(138)에 의해 수행되는 처리는 전송기 유닛(110)에서 수행되는 처리와 상보적이다. 그리고 나서 복원된 데이터는 데이터 싱크(140)로 제공된다.
상술한 신호 처리는 음성, 비디오, 패킷 데이터, 메시징, 및 일 방향 통신의 다른 타입들의 전송을 지원한다. 양-방향 통신 시스템은 2-방향 데이터 전송을 지원한다. 그러나 다른 방향에 대한 신호 처리는 간략화를 위해 도 1에서 제시되지 않는다.
통신 시스템(100)은 코드 분할 다중 접속(CDMA), 시분할 다중 접속(TDMA)(예를 들면 GSM), 주파수 분할 다중 접속(FDMA) 통신 시스템, 및 지상 링크 사용자들 사이에 음성 및 데이터 통신을 지원하는 다른 다중 접속 통신 시스템일 수 있다.
다중 접속 통신 시스템에서 CDMA 기술들의 사용은 미국 특허 번호 4,901,307호 제목 " 위성 또는 지상 리피터들을 사용하는 확산 스펙트럼 다중 접속 통신 시스템" 및 미국 특허 번호 5,103,459호 제목 "CDMA 셀룰러 전화 시스템에서 파형들을 발생시키는 시스템 및 방법"에 제시되어 있다. 다른 CDMA 시스템은 1997년 11월 3일에 출원된 미국 특허 출원 번호 08/963,386호 제목 "고속 패킷 데이터 전송을 위한 방법 및 장치"(이하 HDR 시스템으로 지칭됨)에 제시되어 있다. 이러한 특허들 및 특허출원은 본 발명의 양수인에게 양도되었고, 본 명세서에서 참조된다.
CDMA 시스템들은 일반적으로 " TIA/EIA/IS-95-A 듀얼 모드 광역 확산 스펙트럼 셀룰러 시스템용 이동국-기지국 호환 표준" (이하 IS-95-A 표준으로 지칭됨), "TIA/EIA/IS-98 듀얼 모드 광역 확산 스펙트럼 셀룰러 이동국용 권고 최소 표준"(이하 IS-98 표준으로 지칭됨), "3세대 파트너십 프로젝트"에 의해 제공되고 문서 번호 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, 및 3G TS 25.214를 포함하는 문서들의 세트에 제시된 표준(이하 W-CDMA 표준으로 지칭됨), 및 "TR-45.5 cdma2000 확산 스펙트럼 시스템용 물리 계층 표준"(이하 cdma2000 표준으로 지칭됨)과 같은 하나 또는 그 이상의 표준에 일치하도록 설계된다. 새로운 CDMA 표준들이 계속해서 제안 및 채택된다. 이러한 CDMA 표준들은 본 명세서에서 참조된다.
도 2는 본 발명의 일부 실시예들을 구현하도록 설계된 인코더(200)의 블록도이다. 인코더(200)는 도 1의 인코더(114)에 사용될 수 있다. 이러한 실시예에서, 인코더(200)는 연결(concatenated) 코드를 구현하고 외부 컨볼루션 인코더(212), 인터리버(214), 및 직렬로 연결된 내부 컨볼루션 인코더(216)를 포함한다. 외부 컨볼루션 인코더(212)는 입력 데이터를 수신하고 컨볼루션 코딩하여 코드 비트들을 생성하고, 이러한 코드 비트들은 저장을 위해 인터리버(214)로 제공된다. 코드 비트들의 전체 패킷이 인터리버(214)에 저장되면, 코드 비트들이 검색(retrieve)되어 내부 컨볼루션 인코더(216)로 제공된다. 인터리빙을 달성하기 위해서, 코드 비트들은 인터리버(214)에 기록된 순서와는 다른 순서로 판독된다. 외부 컨볼루션 인코더(212)는 코드 비트들을 수신하고 컨볼루션 코딩하여 코딩된 데이터를 발생시키고, 코딩된 데이터는 이어지는 처리 단계로 제공된다.
기존의 컨볼루션 인코더는 한 번에(즉, 클록 사이클당) 한 비트씩 직렬로 데이터를 수신 및 코딩한다. 큰 패킷들에서 데이터를 전송하는 통신 시스템들에서, 데이터의 직렬 코딩은 긴 처리 지연을 초래할 수 있다. 또한, 직렬로 연결된 다수의 컨볼루션 인코더들로 구성된 연결 코더에 있어서, 이러한 처리 지연은 매우 길어질 수 있는데, 외부 및 내부 컨볼루션 인코더들 모두가 비트들을 직렬로 코딩하는 경우에 특히 그러하다.
일 양상에서, 컨볼루션 인코더는 다수(M) 비트를 병렬로 수신 및 코딩할 수 있다. 이러한 능력은 기존의 컨볼루션 인코더에 의해 요구되는 시간의 대략 (1/M)의 시간에서 컨볼루션 인코더가 데이터 패킷을 코딩할 수 있게 한다. 이러한 이점들은 각각의 개별 컨볼루션 인코더들이 병렬로 비트들을 처리하는 경우 연결 인코더(예를 들어, 터보 코더)에 대해 두드러진다.
또 다른 양상에 따라, 인터리버는 다수의 데이터 비트들을 병렬로 저장 및 제공할 수 있다. 인터리버는 예를 들어 다중 포트 메모리를 사용하여 구현될 수 있다. 여기서 제시되는 컨볼루션 인코더들의 조합들이 사용되는 경우, 인터리버로부터 데이터가 짧은 순간에 기록 및 판독될 수 있기 때문에 인터리버는 처리 지연을 추가로 감소시킬 수 있다.
명확화를 위해서, 앞서 언급된 미국 특허 출원번호 08/963, 386(즉 HDR 시스템)에 제시된 통신 시스템의 다운링크 데이터 전송에 사용되는 인코더에 대한 실시예가 기술된다. HDR 시스템은 외부 컨볼루션 코드, 인터리빙, 및 내부 컨볼루션 코드로 구성되는 연결 코드를 사용한다. HDR 시스템은 또한 테이블 1에 제시된 특성들을 갖는 2개의 패킷 포맷을 정의한다.
테이블 1
파라미터 패킷 포맷 1 패킷 포맷 2 단위
총 비트/패킷 1024 2048 비트
외부 컨볼루션 인코더
입력 데이터 비트/패킷 1018 2042 비트
코드-테일 비트/패킷 4 4 비트
외부 코드 레이트 1/2 2/3
외부 코드 천공 패턴 (1111) (1011)
외부 코드 비트/패킷 2044 3069 비트
인터리버 깊이 2048 3072 비트
내부 컨볼루션 인코더
입력 코드 비트/패킷 2044 3069 비트
코드-테일 비트/패킷 4 3 비트
내부 코드 레이트 1/2 3/4
내부 코드 천공 패턴 (111111) (111001)
출력 코드 비트/패킷 4096 4096 비트
전체 코드 레이트 1/4 1/2
HDR 시스템에서, 외부 컨볼루션 인코더는 다음 다항식 생성기 행렬에 의해 정의되는 레이트 1/2 컨볼루션 코드를 실행한다;
Figure 112004011528117-pct00001
HDR 시스템에서 내부 컨볼루션 인코더는 다음 다항식 생성기 행렬에서 의해 정의되는 레이트 1/2 컨볼루션 코드를 실행한다;
Figure 112004011528117-pct00002
도 3은 등식(1) 및 (2)에 의해 정의되는 외부 및 내부 컨볼루션 코드들을 구현하는 인코더(300)에 대한 도면이다. 데이터 비트들(u)은 등식(1)을 구현하며 2개의 출력들(yoa, yob)을 발생시키는 외부 컨볼루션 인코더(310)로 제공된다. 인코더(310) 내에서, 데이터 비트들(u)은 합산기(312)로 제공되고, 합산기(312)는 (지연 세트를 실행하기 위해 사용되는) 레지스터들(314a-314d)과 직렬 연결된다. 합산기(312) 및 레지스터들(314A, 314B, 314D)로부터의 출력들은 합산기(316A, 316B, 316C)들에 의해 합산되어 등식(1)에 표현된 다항식 생성기 행렬에서 제 2 엘리먼트의 분자를 구현한다. 레지스터들(314C, 314D)로부터의 출력들은 합산기(318)에 의해 합산되고 합산기(312)로 제공되어 등식(1)의 제 2 엘리먼트의 분모를 구현한다. 입력 데이터 비트들(u)은 제 1 출력(yoa)으로서 제공되고 합산기(316c)로부터의 출력은 제 2 출력(yob)을 구성한다.
외부 컨볼루션 인코더(310)의 출력들(yoa, yob)에서의 코드 비트들은 천공될 수 있다(간략화를 위해 도 3에서 미도시). 그리고 나서 천공되지 않은 코드 비트들은 인터리버(330)로 제공되어 재배열된다. 재배열된 코드 비트들(v)은 식(2)을 구현하여 2개의 출력(yia, yib)을 발생시키는 내부 컨볼루션 인코더(340)로 제공된다. 인코더(340) 내에서, 코드 비트들(v)은 레지스터들(344A, 344B)과 직렬로 연결되는 합산기(342)로 제공된다. 합산기(342) 및 레지스터(344A, 344B)로부터의 출력들은 합산기들(346A, 346B)에 의해 합산되어 등식(2)으로 표현된 다항식 생성기 행렬에서 제 2 엘리먼트의 분자를 구현한다. 레지스터(344A)로부터의 출력은 합산기(342)로 제공되어 등식(2)의 제 2 엘리먼트의 분모를 구현한다. 입력 코드 비트들(v)은 제 1 출력(yia)으로서 제공되고, 합산기(346B)로부터의 출력은 출력(yib)을 구성한다.
기존에, 데이터 비트들(u)은 직렬로 인코더(310)로 제공되고 코드 비트들(v)은 또한 직렬로 인코더(340)로 제공된다. 각 입력 데이터 비트에 있어서, 외부 컨볼루션 인코더(310)는 2개의 코드 비트들을 생성한다. 인터리버(330)는 코드 비트들을 수신 및 저장하고, 코드 비트들을 직렬로 내부 컨볼루션 인코더(340)로 제공한다. 직렬 방식으로의 이러한 비트들의 코딩은 긴 처리 지연을 야기한다.
일 실시예에 따른 컨볼루션 인코더는 병렬로 다수의 비트들을 코딩하여 코딩 지연을 상당히 단축할 수 있다. 각 클록 사이클 동안, 다수의 코드 비트들을 생성하기 위해서 다수(예를 들면, M)의 데이터 비트들이 수신 및 코딩될 수 있다. 레이트 1/2 인코더에 있어서, 2M개의 코드 비트들이 M개의 데이터 비트에 대해 생성된다. M은 예를 들면 4, 8, 16, 32 등과 같이 임의로 선택될 수 있다. 이러한 컨볼루션 인코더의 다양한 대안적인 실시예들이 아래에서 기술될 것이다.
HDR 시스템과 같은 많은 디지털 통신 시스템들은 데이터를 패킷 형태로 전송한다. 패킷 내의 비트 수(즉, 패킷 사이즈)는 예를 들면 데이터 레이트, 전송 데이터량, 처리 지연 요건 등과 같은 다수의 기준에 의해 선택된다. 수신기 유닛에서 디코더가 각 패킷의 시작에서 알려진 상태로 시작할 수 있게 하기 위해서, 인코더는 각 패킷의 시작에서 알려진 상태(예를 들면 모두 제로)로 초기화되며, 이는 디코딩 시간을 단축하고 성능을 개선한다. 이러한 초기화는 선행 패킷의 말단에 한 세트의 코드 테일 비트들을 삽입함으로써 달성된다. 이러한 코드 테일 비트들은 인코더가 알려진 상태로 설정되도록 선택된다.
일 실시예에서, 실시예에 따른 컨볼루션 인코더는 룩-업 테이블로 구현된다. 도 3을 참조하면, 외부 컨볼루션 인코더(310)는 레지스터들(314A-314D)의 출력들에 의해 정의된 4비트 상태를 갖는 상태 머신으로 관측될 수 있다. 룩-업 테이블의 내용을 생성하기 위해서, 시간 인덱스 n에서의 M개의 입력 데이터 비트는 벡터(Un )로 표현될 수 있고, 2M개의 코드 비트들은 벡터(Yn )로 표현될 수 있으며, 현재 인코더 상태는 벡터(Xn )로 표현될 수 있다. 인코더에 대한 다음 상태(Xn +1) 및 인코더 출력 벡터(Yn )는 다음과 같이 표현될 수 있다;
Figure 112004011528117-pct00003
등식(3, 4) 각각은 입력이 데이터인 경우에 사용할 하나의 등식과 인코더 입력이 코드 테일 비트들을 포함할 때 사용할 다른 하나의 등식을 제공한다.
등식(3, 4)은 입력 데이터 비트들 및 인코더 상태들의 모든 가능한 조합들에 대해 계산될 수 있다. 예를 들어, 등식(4)에 있어서, 출력 코드 비트들은 입력 벡터 Un =0...00 및 Xn =0...00의 인코더 상태, 입력 벡터 Un =0...01 및 Xn =0..00의 인코더 상태,....., 그리고 입력 벡터 Un =1..11 및 Xn =0...00의 인코더 상태에 대해 계산될 수 있다. 출력 코드 비트들은 입력 벡터 Un Xn =0..01의 인코더 상태의 가능한 모든 조합에 대해 계산될 수 있다. 상기 처리는 입력 벡터 및 인코더 상태의 모든 조합들이 계산될 때까지 계속된다. 등식(3) 역시 유사한 방식으로 계산될 수 있다.
등식(3, 4)에 대한 계산들로부터의 결과들은 룩-업 테이블을 구현하는 메모리에 저장될 수 있다. 요구되는 메모리 사이즈는 병렬로 코딩되는 데이터 비트들의 수 및 구현되는 특정 다항식 생성기 행렬에 의존한다. 예를 들어, 8개의 데이터 비트들이 등식(1)에 제시된 컨볼루션 코드와 병렬로 코딩되는 경우, 12개의 어드레스 비트 및 20개의 데이터 비트로 구성되는 사이즈(즉 4096 × 20)를 갖는 메모리가 사용될 수 있다. 12 비트 어드레스는 8개의 입력 데이터 비트 및 현재 인코더 상태에 대한 4비트로 구성된다. 20 비트 출력은 16개의 코드 비트 및 다음 인코더 상태에 대한 4비트를 포함한다.
메모리가 적절하게 정의되면, 입력 데이터 벡터(Un ) 및 현재 인코더 상태(Xn )가 메모리의 어드레스 입력에 제공될 수 있고, 상기 메모리는 출력 벡터(Yn ) 및 다음 인코더 상태(Xn +1)를 제공한다. 다음 인코더 상태(Xn +1)는 다음 입력 데이터 벡터(Un +1)에 사용하기 위해 적절하게 저장된다.
또 다른 실시예에서, 컨볼루션 인코더는 상태 머신으로 구현된다. 인코더 상태 및 출력은 등식(3, 4)에서 제시된 바와 같이 표현될 수 있다. 등식(3, 4) 각각은 귀납적으로 풀 수 있고, 이에 따른 등식들은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 인코더에 대한 귀납식들은 다음과 같이 풀 수 있다. Xn T=[x4 x3 x2 x1]은 전치된(transposed) 상태 벡터를 나타내고 u0은 시간 인덱스 0에서 입력 데이터 비트를 나타내는 것으로 한다. 다음 상태 및 인코더의 출력은 다음과 같이 표현될 수 있다;
Figure 112004011528117-pct00004
여기서 A, B, C 및 D는 구현되는 특정 다항식 생성기 행렬에 의존하는 스칼라, 벡터들, 및 행렬이다. 인코더 상태 등식(5)은 다음과 같이 귀납적으로 풀 수 있다;
Figure 112004011528117-pct00005
인코더 출력 등식(6)은 또한 비슷한 방식으로 귀납적으로 풀 수 있다.
등식(5, 6)은 하나의 데이터 비트(u)를 동시에 코딩하는데 사용된다. M개의 데이터 비트들을 병렬로 코딩하기 위해 유사한 등식들의 세트가 유도될 수 있다. 예를 들어, 8개의 데이터 비트(즉, M = 8)를 병렬로 코딩하기 위해, 시간 지수(n)에서의 입력 데이터 벡터의 전치 행렬(transpose)은
Figure 112008070810053-pct00006
= [un7 un6 un5 un4 un3 un2 un1 un0]으로서 정의될 수 있고, 출력 코드 벡터의 전치 행렬은
Figure 112008070810053-pct00007
= [yn7 yn6 yn5 yn4 yn3 yn2 yn1 yn0]로서 정의될 수 있다. Un Yn 에 대해 정의된 벡터 기수법(vector notation)을 사용하여, 등식(5, 6)은 다음과 같이:
식(7) Xn +1 = FXn + GUn
식(8) Yn = HXn + IUn
표현될 수 있는데, 여기서 F, G, H 및 I는 실행될 특정한 다항식 생성기 행렬, 현재의 인코더 상태(Xn ) 및 입력 데이터 벡터(Un )에 의존하는 벡터와 행렬들이다. 등식(7)은 M개의 데이터 비트들이 코딩된 후에 다음의 인코더 상태(Xn +1)를 생성하기 위해 사용되고, 등식(8)은 입력 벡터(Un )에 대해 인코더 출력(Yn )을 생성하기 위해 사용된다.
등식(7, 8)에서 F, G, H 및 I를 결정하기 위해, 등식(5, 6)은 다양한 기법을 사용하여 귀납적으로 풀릴 수 있고, 상기 귀납적인 계산의 결과는 등식(7, 8)을 구현하는데 사용될 수 있다. 예를 들어, 테이블은 각각의 입력 데이터 비트에 대한 인코더의 상태 및 출력을 테이블화하기 위해 사용될 수 있다. 그 후에 상기 테이블의 엔트리들은 아래에서 설명되는 바와 같이 등식(7, 8)을 구현하는데 사용될 수 있다.
테이블 2은 8개의 입력 데이터 비트(u0-u7)가 도 3의 종래의 인코더(310)에 직렬로 제공된 후의 인코더 상태 및 출력을 보여주는데, 이는 등식(1)을 구현한다. 도 3에서 도시된 바와 같이, 레지스터(314A-314D)는 처음에 x1, x2, x3 및 x4의 값을 각각 저장한다. 제 1 클록 사이클 때, 제 1 데이터 비트(u0)는 인코더(310)에 제공되고, 합산기(312)의 출력은 x4 + x3 + u0로서 계산되고, 이는 테이블 2의 2행, 2열에 저장된다. 인코더 출력은 ya0 = u0 및 yb0 = (x4 + x3 + u0) + x4 + x2 + x1 = x3 + x2 + x1 + u0로서 계산된다(각각의 합산기(316)는 모듈로(modulo)-2 덧셈을 수행한다). 다음의 클록 사이클 때, 합산기(312) 및 레지스터(314A-314C)로부터의 값은 레지스터(314A-314D)로 각각 변환된다. 다음의 데이터 비트(u1)는 인코더에 제공되고, 합산기(312)의 출력은 x3 + x2 + u1로서 계산되는데, 이는 테이블 2의 제 2 행, 제 2 열에 저장된다. 인코더 출력은 ya1 = u1 및 yb2 = (x3 + x2 + u1) + x3 + x1 + (x4 + x3 + u0) = x4 + x3 + x2 + x1 + u0 + u1로서 계산된다. 상기 연산은 제 8 데이터 비트(u7)가 수신되고 처리될 때까지 계속된다.
인코더 출력 벡터: Yb = [yb7 yb6 yb5 yb4 yb3 yb2 yb1 yb0]는 입력 벡터 U = [u7 u6 u5 u4 u3 u2 u1 u0 ]에 대응되고, 테이블 2의 마지막 열의 엔트리에 기초하여 생성된다. 제 8 데이터 비트(u7)가 코딩된 후의 인코더 상태(Xn +1)는 테이블 2의 마지막 행에 있는 엔트리에 기초하여 생성된다. 테이블 2에 도시된 바와 같이, 인코더 출력 벡터(Yb) 및 다음의 인코더 상태(Xn +1)는 각각 현재의 인코더 상태(Xn ) = [x4 x3 x2 x1 ] 및 입력 벡터(U)의 함수이다. 데이터 위상에 대해, 인코더 출력 벡터(Ya)는 단순히 입력 벡터(U)의 함수(즉, Ya = U)이다.
테이블 2
Figure 112004011528117-pct00008
다시 테이블 1을 참고하면, HDR 시스템의 외부 컨볼루션 인코더는 패킷 형태(1)인 각각의 패킷에 대해 108개의 데이터 비트들, 4개의 코드-테일 비트를 수신한다. 8개의 비트가 병렬로 코딩된다면, 129개의 클록 사이클이 하나의 데이터 패킷을 코딩하는데 사용된다. 처음 127개의 클록 사이클이 1016개의 데이터 비트(즉 127x8 = 1016)를 코딩하는데 사용되고, 128번째 클록 사이클이 2개의 데이터 비트와 4개의 코드-테일 비트를 코딩하는데 사용된다. 처음 127개의 클록 사이클은 "데이터 위상"으로 지칭되고, 마지막 클록 사이클은 "코드-테일 위상"으로 지칭된다.
외부 컨볼루션 인코더는 패킷 형태(2)인 각각의 패킷에 대해 2042개의 데이터 비트와 4개의 코드-테일 비트를 수신한다. 8개의 비트가 병렬로 코딩된다면, 256개의 클록 사이클이 하나의 데이터 패킷을 코딩하는데 사용된다. 처음 255개의 클록 사이클은 2040개의 데이터 비트(즉, 255×8 = 2040)를 코딩하는데 사용되고, 256번째 클록 사이클은 나머지 2개의 데이터 비트와 4개의 코드-테일 비트를 코딩하는데 사용된다. 처음 255개의 클록 사이클은 데이터 위상으로 지칭되고, 마지막 클록 사이클은 코드-테일 위상으로 지칭된다.
테이블 3은 2개의 데이터 비트(u0, u1)와 4개의 코드-테일 비트가 도 3의 컨볼루션 인코더(310)에 직렬로 제공된 후에 인코더 상태와 출력을 보여준다. 반복하면, 레지스터(314A-314D)는 처음에 x1, x2, x3 및 x4의 값을 각각 저장한다. 처음 2개의 클록 사이클 때, 2개의 데이터 비트(u0, u1)가 인코더에 직렬로 제공된다. 인코더 상태(x1-x4) 및 인코더 출력(yc, yd)은 전술한 바와 유사한 방식으로 계산된다. 따라서, 테이블 3의 2행 및 3행은 테이블 2의 2행 및 3행과 동일하다. 제 3 클록 사이클 때, x2 + x1의 값을 갖는 처음의 코드-테일 비트가 인코더에 제공된다. 코드-테일 비트의 값은 합산기(312)의 출력이 0과 동일하도록 선택되는데, 이는 컨볼루션 인코더를 플러싱 아웃하기(flush out) 위해 사용된다. 인코더 출력은 yc2 = x2 + x1 및 yd2 = x4+u0+u1으로서 계산된다. 다음의 클록 사이클 때, 합산기(312) 및 레지스터(314A-314C)의 값은 각각 레지스터(314A-314D)로 변환된다. 제 2 코드-테일 비트는 x4 + x3 + x2 + u0이 되도록 선택되어, 합산기(312)의 출력을 0으로 다시 설정하고 인코더를 플러싱 아웃한다. 상기 연산은 인코더에 제공된 마지막 2개의 비트가 0의 값을 가지도록 계속된다.
테이블 3에 도시된 바와 같이, 인코더 출력(Yc, Yd)은 입력 벡터(U) 및 현재의 인코더 상태(Xn ) 모두의 함수이다. 코드-테일 위상에 대해, 다음의 인코더 상태(Xn +1)는 공지의 모두 0인 상태(즉, X8 = [0 0 0 0])로 설정된다.
테이블 3
Figure 112004011528117-pct00009
도 4는 다중 입력 데이터 비트를 병렬로 코딩할 수 있는 컨볼루션 인코더(400)의 실시예에 대한 블록도이다. 컨볼루션 인코더(400)는 (예를 들어 테이블 2 및 3에서 각각 정의된 바와 같은) 데이터 및 코드-테일 위상을 구현하는데 사용된다. 도 4에서 도시된 인코더 구조는, 예를 들어, 도 3의 외부 컨볼루션 인코더(310) 또는 내부 컨볼루션 인코더(340)를 구현하는데 사용될 수 있다.
컨볼루션 인코더(400) 내에서, 입력 데이터 비트는 인코더 상태 머신(410), 데이터 위상 출력 생성기(420) 및 코드-테일 위상 출력 생성기(430)에 데이터 벡터(U)로서 병렬로 제공될 수 있다. 인코더 상태 머신(410)은 또한 현재의 인코더 상태(X)를 수신하고 상기 수신된 입력 벡터(U) 및 현재의 인코더 상태(X)에 기초하여 새로운 인코더 상태를 결정한다. 인코더 상태 머신(410)은, 예를 들어, 테이블 2의 마지막 행을 구현할 수 있다.
데이터 위상 출력 생성기(420) 및 코드-테일 위상 출력 생성기(430)는 또한 현재의 인코더 상태(X)를 수신하고 수신된 입력(X 및 U)에 각각 기초하여 데이터 위상 및 코드-테일 위상에 대한 인코더 출력을 결정한다. 데이터 위상 출력 생성기(420)는, 예를 들어, 테이블 2의 마지막 2개의 열을 구현할 수 있고, 코드-테일 출력 생성기(430)는, 예를 들어, 테이블 3의 마지막 2개의 열을 구현할 수 있다. 데이터 위상 출력 생성기(420)로부터의 제 1 및 제 2 출력(Ya, Yb)은 각각 멀티플렉서(MUX)(440A, 440B)에 제공된다. 마찬가지로, 코드-테일 위상 출력 생성기(430)로부터의 제 1 및 제 2 출력(Yc, Yd)은 각각 멀티플렉서(440A, 440B)에 제공된다. 멀티플렉서(440A, 440B)는 데이터 위상에서 동작하고 있을 때 데이터 위상 출력 생성기(420)로부터 각각 출력(Ya, Yb)을 제공하고, 코드-테일 위상에서 동작하고 있을 때 코드-테일 위상 출력 생성기(430)로부터 각각 출력 (Yc, Yd)을 제공한다.
각 패킷의 출발부에서 인코더 상태의 재설정 없이, 수신되는 대로 입력 데이터 비트를 연속적으로 코딩하는 컨볼루션 인코더를 구현하기 위해서, 인코더 상태 머신(410) 및 데이터 위상 출력 생성기(420)만이 요구된다. 데이터가 패킷으로 전송되고, 코드-테일 비트가 각 패킷의 시작부에서 공지된 상태로 컨볼루션 인코더를 재설정하기 위해 사용되는 통신 시스템(예를 들어, HDR 시스템)에 대해, 코드-테일 위상 출력 생성기(430) 및 멀티플렉서(440)가 필요한 인코더 출력을 제공하는데 사용된다.
인코더 상태 머신(410) 및 데이터 위상 출력 생성기(420)의 설계는 구현될 특정한 다항식 생성기 행렬 및 병렬로 코딩될 데이터 비트의 수에 의존한다. 코드-테일 위상 출력 생성기(430)의 설계는 다항식 생성기 행렬, 병렬로 코딩될 데이터 비트의 수 및 특정한 프레임 형태(즉, 코드-테일 위상에서 코딩될 데이터 및 코드-테일 비트의 수)에 의존한다. 특정한 컨볼루션 인코더(400)의 설계가 이하 설명된다.
도 5a는 8개의 입력 데이터 비트를 병렬로 코딩할 수 있고 등식(1)에 표현된 다항식 생성기 행렬을 구현하는 컨볼루션 인코더(500)의 특정한 실시예의 개략적인 도면이다. 컨볼루션 인코더(500)는 테이블 2에 정의된 상태 머신을 구현하는 인코더 상태 머신(510), 및 테이블 2에 정의된 인코더 출력을 생성하는 데이터 위상 출력 생성기(520)를 포함한다. 인코더 상태 머신(510) 및 데이터 위상 출력 생성기(520)는 각각 도 4의 인코더 상태 머신(410) 및 데이터 위상 출력 생성기(420)에 대응한다. 본 실시예에서, 인코더 상태 머신(510)은 AND 게이트(512A-512D) 및 레지스터(514A-514D)로 구현되고, 데이터 위상 출력 생성기(520)는 AND 게이트(522A-522H)로 구현된다.
도 5a에서 도시된 바와 같이, 8개의 입력 데이터 비트(u0-u7)가 인코더 상태 머신(510) 및 데이터 위상 출력 생성기(520)로의 입력에 대해 병렬로 제공되는데, 이들 각각은 또한 x1 내지 x4로 정의된 현재의 인코더 상태를 수신한다. 인코더 상태 머신(510) 내의 각각의 AND 게이트(512)는 테이블 2의 마지막 행으로 정의되는 바와 같이, 입력(u0-u7 및 x1-x4)에 선택적으로 결합한다. 예를 들어, AND 게이트(512A)는 테이블 2의 마지막 행, 제 3열(x1)의 엔트리에 의해 정의되는 바와 같이, 입력(x3, x2, x1, u1, u3, u4, u7)에 결합한다. AND 게이트(512A-512D)의 출력은 레지스터(514A-514D)의 입력에 각각 결합한다. 레지스터(514A-514D)의 출력은 각각 상태 머신 출력(x1-x4)을 포함한다.
마찬가지로, 데이터 위상 출력 생성기(520) 내의 각각의 AND 게이트(522)는 테이블 2의 마지막 열에 의해 정의되는 바와 같이, 입력(u0-u7 및 x1-x4)에 선택적으로 결합한다. 예를 들어, AND 게이트(522A)는 테이블 2의 제 2행, 마지막 열(yb0)의 엔트리에 의해 정의되는 바와 같이, 입력(x3, x2, x1 및 u0)에 결합한다. 입력(u0-u7)은 인코더 출력(ya0-ya7)(간략화를 위해 도 5a에는 도시되지 않음)을 각각 포함하고, AND 게이트(522A-522H)의 출력은 인코더 출력(ya0-ya7)을 각각 포함한다.
도 5b는 등식(1)으로 표현되고 테이블 1에 도시된 패킷 형태(1 및 2)로 표현된 다항식 생성기 행렬의 코드-테일 위상을 구현하는 코드-테일 위상 출력 생성기(530) 및 멀티플렉서(540A, 540B)의 특정한 실시예에 대한 개략적인 도면이다. 코드-테일 위상 출력 생성기(530) 및 멀티플렉서(540A, 540B)는 각각 도 4의 코드-테일 위상 출력 생성기(430) 및 멀티플렉서(440A, 440B)에 대응한다. 본 실시예에서, 코드-테일 위상 출력 생성기(530)는 AND 게이트(532A, 532J)로 구현되고, 테이블 3에 정의된 코드-테일 위상에 대한 인코더 출력(Yc, Yd)을 생성한다. 멀티플렉서(540a)는 2×1 멀티플렉서(542A-542F)로 구현되고, 제 1 인코더 출력(Y0a)을 제공한다. 마찬가지로, 멀티플렉서(540B)는 2×1 멀티플렉서(544A-544H)로 구현되고, 제 2 인코더 출력(Yab)을 제공한다.
도 5a 및 도 5b의 인코더 상태 머신(510), 데이터 위상 출력 생성기(520), 코드-테일 위상 출력 생성기(530) 및 멀티플렉서(540A, 540B)는 컨볼루션 인코더(400)의 특정한 구현을 형성한다. 이러한 특정한 구현은 등식(1)으로 표현되고 테이블 1에 기재된 패킷 형태로 표현된 다항식 생성기 행렬을 구현하는데 사용된다. 패킷 형태(1)에 대해, 1018개의 데이터 비트들이 128 클록 사이클 동안에 컨볼루션 인코더(500)에 제공된다. 처음의 127 클록 사이클 각각에 대해, 8개의 데이터 비트들이 인코더(500)에 제공되고, 멀티플렉서(540A, 540B)가 데이터 위상 출력 생성기(520)로부터 출력(Ya, Yb)을 제공하도록 선택된다. 128번째 클록 사이클 때, 나머지 2개의 데이터 비트, 4개의 코드-테일 비트 및 2개의 0이 인코더(500)에 제공된다. 레지스터(514A-514D)는 0으로 (동시적으로) 재설정되고, 멀티플렉서(540A, 540B)는 코드-테일 위상 출력 생성기(530)로부터 출력(Yc, Yd)을 제공하도록 선택된다. 패킷 형태(2)에 대해, 2042개의 데이터 비트들이 256 클록 사이클 동안 컨볼루션 인코더(500)에 제공된다. 처음의 255 클록 사이클 각각에 대해, 데이터 위상에 대응하여, 8개의 데이터 비트들이 병렬로 코딩되고, 멀티플렉서(540A, 540B)는 각각 출력(Ya, Yb)을 제공한다. 256번째 클록 사이클 때, 코드-테일 위상에 대응하여, 2개의 데이터 비트, 4개의 코드-테일 비트 및 2개의 0이 병렬로 코딩되고, 멀티플렉서(540A, 540B)는 각각 출력(Ya, Yb)을 제공한다.
도 5a 및 도 5b에 도시된 특정한 구현은 더 분명한 이해를 제공하기 위해 기술되었다. 다른 구현이 또한 고려될 수 있으며 본 발명의 범위 내에 있다는 것을 유의해야 한다. 나아가, 통상적으로 다른 다항식 생성기 행렬, 다른 개수의 입력 데이터 비트 또는 다른 패킷 형태에 대해 다른 설계가 사용된다.
비슷한 방식으로, 또 다른 컨볼루션 인코더가 등식(2)에 표현된 다항식 생성기 행렬을 구현하도록 설계될 수 있다. 일 실시예에서, 컨볼루션 인코더는 4개의 코드 비트들을 수신하고 코딩하도록 설계된다. 다음의 인코더 상태 및 출력에 대한 등식(5, 6)이 각각 전술한 방식으로 귀납적으로 풀릴 수 있다.
테이블 4는 4개의 입력 코드 비트(v0-v3)가 도 3의 컨볼루션 인코더(340)에 직렬로 제공된 후의 인코더 상태 및 출력을 보여준다. 레지스터(344A, 344B)는 처음에 각각 x1 및 x2의 값을 저장한다. 제 1 클록 사이클 때, 제 1 코드 비트(v0)는 인코더(340)에 제공되고, 합산기(342)의 출력은 x1 + v0으로 계산되고, 이는 테이블 4의 제 2행, 제 2 열에 저장된다. 인코더 출력은 ye0 = v0 이고 yf0 = (x1+v0) + x2 + x1 = x2 + v0로서 계산된다. 다음의 클록 사이클 때, 합산기(312) 및 레지스터(344A)로부터의 값은 레지스터(344A, 344B)로 각각 변환된다. 다음의 코드 비트(v1)는 인코더(340)에 제공되고, 합산기(342)의 출력은 x1 + v0 + v1으로서 계산되고, 이는 제 3 행, 제 2 열에 저장된다. 출력은 ye1 = v1이고 yf1 = (x1 + v0 + v1) + (x1 + v0) + x1 = x1 + v1로 계산된다. 상기 연산은 4번째 코드 비트(v3)가 수신되고 처리될 때까지 계속된다.
인코더 출력 벡터(Yf)는 테이블 4의 마지막 열의 엔트리에 기초하여 생성된다. 제 4 코드 비트 v3이 코딩된 이후의 인코더 상태 Xn +1은 테이블 4의 가장 아래 행의 기재사항들에 기초하여 발생한다. 테이블 4에 도시된 바와 같이, 인코더 출력 벡터 Yf 및 후속 인코더 상태 Xn +1은 각각 현재 인코더 상태 Xn = [x2 x1] 및 입력 벡터 V의 함수이다. 데이터 위상에 대하여, 인코더 출력 벡터 Ye 는 단순히 입력 벡터 V의 함수이다.
테이블 4
Figure 112004011528117-pct00010
다시 테이블 1을 참조로 하여, HDR 시스템의 내부 컨볼루션 인코더는 패킷 포맷 1 내의 각각의 패킷에 대하여 2044개의 코드 비트와 4개의 코드-테일 비트를 수신한다. 4개의 비트가 병렬로 코딩된다면, 512개의 클록 사이클이 하나의 패킷을 코딩하는데 사용된다. 최초 511개의 클록 사이클은 2044개의 코드 비트(즉, 511×4=2044)를 코딩하는데 사용되며, 512번째 클록 사이클은 4개의 코드-테일 비트를 코딩하는데 사용된다. 컨볼루션 인코더는 패킷 포맷 2 내의 각각의 패킷에 대하여 3079개의 코드 비트와 3개의 코드-테일 비트를 수신한다. 4개의 비트가 병렬로 코딩된다면, 768개의 클록 사이클이 데이터 중 하나의 패킷을 코딩하는데 사용된다. 최초의 767개의 클록 사이클은 3068개의 코드 비트(즉, 767×4=3068)를 코딩하는데 사용되고, 768번째 클록 사이클은 최종 코드 비트와 3개의 코드-테일 비트를 코딩하는데 사용된다.
테이블 5는 패킷 포맷 1에 대한 코드-테일 위상을 위한 내부 컨볼루션 인코더의 상태들과 출력들을 도시한다. 제 1 클록 사이클을 통해, x1의 값을 가지는 제 1 코드-테일 비트가 인코더에 제공된다. 코드-테일 비트값은 합산기(342)의 출력이 0과 동일하도록 선택된다. 인코더 출력들은 yg0=x1 및 yh0=x2+x1과 같이 계산된다. 처리는 남아있는 3개의 코드-테일 비트에 대하여 유사한 방식으로 계속된다.
테이블 5
Figure 112004011528117-pct00011
테이블 6은 패킷 포맷 2에 대한 코드-테일 위상을 위한 내부 컨볼루션 인코더의 상태들과 출력들을 도시한다. 제 1 클록 사이클을 통해, 최종 코드 비트 v0이 인코더에 제공되고, 인코더 상태들 x1 및 x2와 출력들 yi0 및 yj0은 전술된 방식과 유사하게 계산된다. 테이블 6의 두 번째 행은 테이블 4의 두 번째 행과 동일하다. 제 2 클록 사이클을 통해, x1+v0의 값을 가지는 제 1 코드-테일 비트가 인코더에 제공된다. 코드-테일 비트값은 합산기(342)의 출력이 0과 동일하도록 선택된다. 인코더 출력들은 yi1=x1+v0 및 yj1=v0과 같이 계산된다. 처리는 남아있는 코드-테일 비트들에 대하여 유사한 방식으로 계속된다.
테이블 6
Figure 112004011528117-pct00012
도 6은 4개의 입력 코드 비트들을 병렬로 코딩하여 식(2)에 나타난 다항 생성 행렬을 구현할 수 있는 컨볼루션 인코더(600)의 특정 실시예를 도시한다. 컨볼루션 인코더(600)는 테이블 4에 의해 정의되는 상태 머신을 구현하는 인코더 상태 머신(610), 테이블 4부터 6에 정의된 인코더 출력들을 생성하는 출력 생성기(620), 및 패킷 포맷들 1 및 2에 대한 데이터 및 코드-테일 위상들을 위한 적절한 인코더 출력들을 제공하는 멀티플렉서들(640A, 640B)을 포함한다.
도 6에 도시된 바와 같이, 4개의 입력 코드 비트들(v0-v3)은 인코더 상태 머신(610)과 출력 생성기(620)의 입력들에 병렬로 제공되며, 그 각각은 Xn =[x2 x1]이라 정의된 현재 인코더 상태를 수신한다. 인코더 상태 머신(610) 내의 각각의 AND 게이트(612)는 테이블 4의 마지막 행에서 정의된 것과 같이 입력들 v0-v3과 x1-x2에 선택적으로 접속된다. 예를 들어, AND 게이트(612A)는 테이블 4의 마지막 행 제 3 열(x1)의 기재사항에 의해 정의된 것과 같이 입력들 x1, v0, v1, v2, v3, 및 v4에 접속된다. AND 게이트들(612A, 612B)의 출력들은 각각 레지스터들(614A, 614B)에 접속된다. 레지스터들(614A, 614B)의 출력들은 각각 상태 머신 출력들 x1 및 x2를 포함한다.
유사하게, 출력 생성기(620) 내의 각각의 AND 게이트(622)는 입력들 v0-v3 및 x1-x2에 선택적으로 접속된다. 예를 들어, AND 게이트(622A)는 입력들 x2 및 v4에 접속에 접속되고 yf0을 생성하며(테이블 4의 두 번째 행 마지막 열), AND 게이트(622B)는 입력들 x2 및 x1에 접속에 접속되고 yh0을 생성하며(테이블 5의 두 번째 행 마지막 열), AND 게이트(622C)는 입력들 x2 및 v0에 접속에 접속되고 yj0을 생성한다(테이블 6의 두 번째 행 마지막 열). 다른 인코더 출력들은 테이블 4-6에 지시된 바와 같이 발생한다.
멀티플렉서(640A)는 내부 컨볼루션 인코더(600)에 대하여 각각 제 1 인코더 출력(yia0-yia3)을 제공하는 3×1 멀티플렉서들(642A-642D)을 포함한다. 데이터 위상들 동안, ye0 내지 ye3은 각각 멀티플렉서들(642A-642D)을 통해 제공된다. 코드-테일 위상 동안, 멀티플렉서들(642A-642D)은 각각 패킷 포맷 1에 대하여 yg0 내지 yg3 및 패킷 포맷 2에 대하여 yi0 내지 yi3을 각각 제공한다. 유사하게, 멀티플렉서(640B)는 내부 컨볼루션 인코더(600)에 대하여 각각 제 2 인코더 출력(yib0-yib3)을 제공하는 3×1 멀티플렉서들(644A-644D)을 포함한다. 데이터 위상들 동안, yf0 내지 yf3은 각각 멀티플렉서들(644A-644D)을 통해 제공된다. 코드-테일 위상 동안, 멀티플렉서들(644A-644D)은 각각 패킷 포맷 1에 대하여 yh0 내지 yh3 및 패킷 포맷 2에 대하여 yj0 내지 yj3을 각각 제공한다.
본 발명의 또 다른 양상은 외부 컨볼루션 인코더에 의해 병렬로 발생하는 다수의 코드 비트들을 저장하여 내부 컨볼루션 인코더에 상기 다수의 코드 비트들을 병렬로 제공할 수 있는 인터리버를 제공한다. 도 2를 다시 참조하여, 인터리버는 외부 및 내부 컨볼루션 인코더들 사이에 접속된다. 인터리버는 코드 비트들의 하나 또는 그 이상의 패킷들을 저장하도록 설계된다. 전체 패킷이 저장된 이후에, 코드 비트들은 기록 순서와 다른 판독 순서로 복원되어 코드 비트들의 인터리빙을 수행한다. 인터리빙을 원하지 않는다면, 코드 비트들은 인터리버로부터 동일한 순서로 복원될 수 있다.
예시적인 실시예의 외부 컨볼루션 인코더는 M개의 데이터 비트들을 수신하여 코딩한 후 MㆍR개의 코드 비트들을 생성하도록 설계될 수 있으며, 상기 R은 외부 컨볼루션 인코더의 코드 레이트와 관련된다(예, 레이트가 1/2인 인코더에 대하여 R=2). 처리를 촉진하고 지연을 감소시키기 위해, 인터리버는 코드 비트들이 인코더에 의해 생성되는 것과 같이 외부 컨볼루션 인코더로부터 MㆍR개의 코드 비트들을 저장하도록 설계될 수 있다. 유사하게, 내부 컨볼루션 인코더는 N개의 코드 비트들을 병렬로 수신하여 코딩하도록 설계될 수 있다. 다시, 처리를 촉진하고 지연을 감소시키기 위해, 인터리버는 단일 판독 동작을 통해 내부 컨볼루션 인코더에 적어도 N개의 코드 비트들을 병렬로 제공하도록 설계될 수 있다.
외부 및 내부 컨볼루션 인코더들의 각각으로부터의 코드 비트들은 다른 코드 레이트로 코드 비트들을 제공하도록 천공될 수 있다. 예를 들어, 테이블 1을 다시 참조하여, 외부 컨볼루션 인코더로부터의 출력들은 패킷 포맷 1이 1/2의 코드 레이트를 획득하도록 천공되지 않으며, 패킷 포맷 2가 2/3의 코드 레이트를 획득하도록 천공된다. 유사하게, 내부 컨볼루션 인코더로부터의 출력들은 패킷 포맷 1이 1/2의 코드 레이트를 획득하도록 천공되지 않으며, 패킷 포맷 2가 3/4의 코드 레이트를 획득하도록 천공된다. 인코더와 인터리버 간의 인터페이스는 심벌 천공을 효율적으로 수행하도록 설계될 수 있다.
도 7a는 인터리버(700)의 일 실시예의 도면이다. 상기 실시예에서, 인터리버(700)는 P개의 포트를 가지는 다중-포트 메모리(710)를 사용하여 구현되며, 상기 P는 1 이상이다. 인터리버를 구현하는데 사용되는 특정 메모리 유닛에 따라, P개의 포트 각각은 기록 및 판독 포트 모두로 사용될 수도 있고 지정된 기록 또는 판독 포트가 될 수 있다. 도 7a에 도시된 실시예에서, 메모리(710)는 기록 포트(D1-DW)로 지정되며, R개의 포트가 판독 포트(Q1-QR)로 지정된다. 메모리(710)는 또한 P개의 포트의 각각에 대해 하나의 어드레스 입력을 가지는 P개의 어드레스 입력(A1-AP)을 더 포함한다. 각각의 기록 및 판독 포트는 C개의 비트를 병렬로 전송할 수 있다.
어드레스 생성기(720)는 입력 어드레스 ADDR를 수신하여, 각각의 활성 포트에 대한 필수 어드레스들을 생성하고 상기 생성된 어드레스들을 메모리(710)의 어드레스 입력(A1-AP)에 제공한다. 도 7a에 도시되지는 않았지만, 어드레스 생성기(720)는 메모리(710)가 기록 또는 판독 동작을 수행하도록 지시하는 하나 또는 그 이상의 제어 신호들을 발생한다.
일 실시예에서, 메모리(710)는 다중 행들과 다중 열들을 가지는 2차원 메모리로 구성된다. 일 실시예에서, 코드 비트들은 메모리(710)의 연속하는 행들에 기록된다. 효율성을 위해, 각각의 행의 폭은 각 포트의 폭(즉, C 비트들)에 상응할 수 있다. 이는 W개까지의 코드 비트의 행들이 각각의 기록 동작에 대하여 메모리(710)의 W개의 기록 포트들에 기록되도록 한다. 전체 패킷에 대한 코드 비트들이 메모리(710)에 저장되면, 코드 비트들은 메모리로부터 복원될 수 있다. 일 실시예에서, 코드 비트들은 또한 메모리(710)로부터 행들로 판독된다. 도 7a에 도시된 실시예에 대하여, R까지의 코드 비트들의 행들은 각각의 판독 동작에 대하여 R개의 판독 포트로부터 복원될 수 있다.
인터리버(700)로부터 내부 컨볼루션 인코더로 코드 비트들을 제공하기 위해 다양한 설계가 사용될 수 있다. 특정 설계는 구현을 위해 특정 시스템 요구에 따라 결정된다. 일 설계에서, R개의 멀티플렉서(730A-730R)는 R개의 판독 포트(Q1-QR)에 각각 접속된다. 각각의 판독 동작에 대하여, R까지의 코드 비트들의 행들이 메모리(710)로부터 복원되어 멀티플렉서들(730A-730R)에 제공되며, 제어 신호(AD1-ADR)를 각각 수신한다. 각각의 멀티플렉서(730)는 C개의 코드 비트들을 수신하여, 개별 제어 신호(ADX)를 기초로 하여 코드 비트들 중 하나를 선택하며, 상기 선택된 코드 비트를 멀티플렉서 출력에 제공한다. 제어 신호(AD1-ADR)은 코드 비트들의 각각의 복원된 행으로부터 특정 코드 비트를 선택한다. R개의 멀티플렉서(730)는 내부 컨볼루션 인코더에 R까지의 코드 비트들을 병렬로 제공하도록 사용될 수 있다.
이해를 명확히 하기 위해, 도 5a, 도 5b 및 도 6에서 전술된 외부 및 내부 컨볼루션 인코더들과 함께 사용되기 위한 인터리버의 특정 설계가 설명된다. 상기 인코더 설계들에서, 외부 컨볼루션 인코딩은 하나의 클록 사이클 내에서 8개의 데이터 비트들을 수신하여 코딩한 후 16개의 비트를 생성하며, 내부 컨볼루션 인코더는 4개의 코드 비트들을 병렬로 수신하여 코딩한다. 상기 특정 인터리버 설계에서, 8-포트 메모리가 사용되며, 4개의 포트는 기록 동작시 코드 비트들을 수신하는데 사용되고 4개의 포트는 판독 동작시 코드 비트들을 제공하는데 사용된다. 상기 설계에서, 각각의 포트는 8개의 비트를 병렬로 수신하거나 제공할 수 있다. 따라서, 상기 특정 설계에서 32개까지의 코드 비트들은 기록 동작시 인터리버에 기록될 수 있고 판독 동작시 인터리버로부터 판독될 수 있다.
도 7b는 외부 컨볼루션 인코더와 천공을 수행하지 않는 인터리버 간의 인터페이스의 일 실시예를 도시한다. 상기 실시예에서, 외부 컨볼루션 인코더에 의해 생성되는 코드 비트들은 4개의 레지스터들(732A-732D)에 제공된다. 레지스터들(732A, 732B)은 제 1 클록 사이클에서 생성되는 16개의 코드 비트들을 수신하고 레지스터들(732C, 732D)은 제 2 (예를 들어, 선택적인) 클록 사이클에서 생성되는 16개의 코드 비트들을 수신한다. 천공이 전혀 수행되지 않는 경우, 레지스터들(732A-732D)을 통한 모두 32개의 비트는 기록 동작시 메모리의 포트들(D1-D4)에 각각 제공된다.
도 7c는 외부 컨볼루션 인코더와 천공을 수행하는 인터리버 간의 인터페이스의 일 실시예를 도시한다. 테이블 1을 다시 참조하여, 외부 코드에 대한 코드 비트들은 패킷 포맷 2에 대한 천공 패턴(1011)으로 천공된다. 따라서, 하나의 클록 사이클에서 16개의 코드 비트들이 발생하고, 4개의 코드 비트들은 천공되며, 12개의 코드 비트들은 저장된다. 초기에, 제 1 클록 사이클에서 생성된 16개의 코드 비트들은 레지스터들(732A, 732B)에 저장되고, 제 2 클록 사이클에서 생성된 16개의 코드 비트들은 레지스터들(732C, 732D)에 저장된다. 천공 이후에, 24개의 코드 비트들은 도 7c에 도시된 것과 같이 남아있으며, 3개의 기록 포트들(예, D1-D3)에 제공된다.
어드레스 생성기는 메모리 내의 연속적인 행들에 천공되지 않은 코드 비트들을 기록하기 위한 적절한 어드레스들을 제공한다. 코드 비트들을 기록하기 위해 사용되는 각각의 활성 포트에 대하여 하나의 어드레스가 생성된다. 따라서, 어드레스 생성기는 천공이 수행되지 않을 때 포트(D1-D4)에 대한 4개의 어드레스를 생성하며, 천공이 수행될 때 포트(D1-D3)에 대한 3개의 어드레스를 생성한다.
내부 컨볼루션 인코더에 병렬로 4개의 코드 비트들을 제공하기 위해, 코드 비트들의 4개의 행들이 메모리로부터 복원되어 4개의 8×1 멀티플렉서에 제공된다. 각각의 멀티플렉서는 복원된 행 내의 특정 비트를 선택하여 내부 컨볼루션 인코더에 제공하는 개별적인 3-비트 제어 신호(ADX)를 수신한다. 각각의 복원된 비트에 대한 어드레스는 2개의 부분들로 분할될 수 있는데, 제 1 부분은 메모리 내의 특정 행을 식별하고, 제 2 부분은 행 내의 특정 위치를 식별한다. 어드레스의 제 1 부분은 메모리의 적절한 어드레스 입력으로 제공되고, 제 2 부분은 제어 신호(ADX)로서 제공된다. 어드레스의 제 1 및 제 2 부분은 구현될 시스템 또는 표준에 의해 정의된 특정 인터리빙 방식에 따라 발생한다.
예시적인 실시예의 인터리버는 다른 메모리들을 사용하여 구현될 수 있다. 예를 들면, 단일 포트 메모리 유닛 또는 다중 메모리 유닛들은 다수의 비트들을 동시에 저장하고 병렬로 제공하도록 사용될 수 있다. 단일 포트 메모리 유닛에 대하여, 생성된 코드 비트들에 다수의 기록 동작들이 저장되도록 사용될 수 있고, 요구된 코드 비트들을 복원하도록 다수의 판독 동작들이 사용될 수 있다. 다중 메모리를 사용하는 설계들에서, 각각의 메모리 유닛은 다중 포트 메모리의 일부분(또는 한 쌍의 포트들)과 유사하게 동작할 수 있다. 따라서, 새로운 설계들이 인터리버를 구현하는데 사용될 수 있으며, 이는 본 발명의 영역 내에 있다.
위에 설명된 실시예에서는, 외부 및 내부 컨볼루션 인코더들 사이에 인터리버가 사용된다. 그러한 구성은 특정의 장점을 제공할 수 있는 터보 인코더를 구현하는데 사용된다. 다른 인코더 설계에 있어서는, 외부 컨볼루션 인코더 다음에 인터리빙은 필요하지 않을 수도 있고, 메모리가 외부 컨볼루션 인코더 이후에 필요하지 않을 수도 있고 버퍼로서 단순히 사용될 수도 있다.
예시적인 실시예의 연관된 인코더는 여러 방식으로 동작할 수 있다. 한 특정 설계에서, 인코더는 하나의 데이터 패킷을 동시에 코딩하도록 동작한다. 도 2를 다시 참조하면, 특정 데이터 패킷이 외부 컨볼루션 인코더에 의해 코딩될 수 있으며 인터리버에 저장될 수 있다. 전체 패킷이 외부 컨볼루션 인코더에 의해 코딩된 이후에는, 코드 비트들이 인터리버에 의해 검색되며 내부 컨볼루션 인코더에 의해 코딩된다. 일단 전체 패킷이 내부 컨볼루션 인코더에 의해 코딩되면, 그 다음 패킷이 외부 컨볼루션 인코더에 의해 코딩된다. 그러한 설계는 인터리버를 위한 메모리 요건을 감소시키며, 이는 일부 응용들에 있어서 바람직할 수 있다.
또 다른 특정 설계에 있어서, 인터리버는 코드 비트들로 이루어진 두 개 이상의 패킷들을 저장하기 위한 용량을 갖도록 구현된다. 예컨대, 인터리버를 구현하는데 사용되는 메모리는 두 개의 뱅크들로 분할될 수 있는데, 각각의 메모리 뱅크는 코드 비트들로 이루어진 전체 패킷을 저장할 수 있다. 두 메모리 뱅크들은 외부 및 내부 컨볼루션 인코더들이 두 패킷들에 대해 동시에 동작할 수 있게 한다. 외부 컨볼루션 인코더는 제 1 패킷을 코딩하며, 그 패킷에 대한 코드 비트들을 하나의 메모리 뱅크에 저장한다. 전체적인 제 1 패킷이 메모리에 저장된 후에는, 외부 컨볼루션 인코더가 제 2 패킷을 코딩하며, 그 패킷에 대한 코드 비트들을 제 2 메모리 뱅크에 저장한다. 외부 컨볼루션 인코더는 현재 패킷에 대한 코드 비트들을 코딩하여 하나의 메모리 뱅크에 저장하는 반면에, 내부 컨볼루션 인코더는 다른 메모리 뱅크로부터 이전 패킷에 대한 코드 비트들을 검색하여 코딩할 수 있다. 이러한 설계는 처리의 지연을 감소시킬 수 있다.
도 8은 일부 실시예들을 구현하는데 사용될 수 있는 인코더(800)의 특정 설계에 대한 블록도이다. 인코더(800)는 도 1의 인코더(114)를 구현하는데 사용될 수 있다. 인코더(800)는 어드레스 생성기(820) 및 메모리(830)에 연결된 처리 유닛(810)을 포함한다. 처리 유닛(810)은 버퍼(802)로부터의 데이터 및 제어 소스(미도시)로부터의 제어 정보를 수신하고, 수신된 데이터를 상기 제어 정보에 따라 제어하며, 코딩된 데이터를 버퍼(850)에 제공한다.
도 8에 도시된 실시예에서, 처리 유닛(810)은 입력 인터페이스(812), 다중-비트 인코더(814), 출력 인터페이스(816), 및 제어 유닛(818)을 구비한다. 입력 인터페이스(812)는 버퍼(802)에 대한 어드레스들 및 제어 신호들을 생성하고, 상기 생성된 어드레스들 및 제어 신호들에 응답하여 버퍼(808)가 제공한 데이터를 수신하며, 수신된 데이터를 다중-비트 인코더(814)에 보낸다. 다중-비트 인코더(814)는 외부 및 내부 컨볼루션 인코더들을 구현하며, 도 4에서 설명된 것과 같은 하나 이상의 룩-업 테이블이나 하나 이상의 인코더들로 구현될 수 있다. 외부 컨볼루션 인코더로서 동작할 때, 다중-비트 인코더(814)는 입력 인터페이스(812)로부터의 데이터를 코딩하며, 생성된 코드 비트들을 메모리(830)에 제공한다. 그리고 내부 컨볼루션 인코더로서 동작할 때, 다중-비트 인코더(814)는 메모리(830)로부터의 코드 비트들을 코딩하며 생성된 코드 비트들을 출력 인터페이스(816)에 제공한다. 다음으로, 출력 인터페이스(816)는 상기 코딩된 데이터를 버퍼(850)에 제공한다.
제어 유닛(818)은, 예컨대, 코딩할 특정 데이터 패킷, 버퍼(802)에서 패킷의 위치, 패킷 포맷, 사용할 코딩 방식, 버퍼(850)에 코딩된 패킷을 저장하기 위한 위치 등과 같은 여러 제어 정보를 수신한다. 다음으로, 제어 유닛(818)은 입력 인터페이스(812)에 버퍼(802)로부터 적합한 데이터 비트들을 검색하라고 지시하고, 인코더 상태 머신(814)에 적합한 코딩 방식을 사용하라고 지시하며, 또한 출력 인터페이스(816)에 코딩된 데이터를 버퍼(850)의 적합한 위치에 제공하라고 지시한다.
어드레스 생성기(820)는 코딩 비트들을 메모리(830)에 기록하는 것과 코드 비트들을 상기 메모리로부터 판독하는 것 둘 모두를 위한 적합한 어드레스들을 생성한다. 어드레스 생성기(820)는 논리, 룩-업 테이블, 또는 일부 다른 설계를 통해 구현될 수 있다.
메모리(830)는 다중-비트 인코더(814)에 의해 생성된 코드 비트들을 저장하며, 또한 상기 저장된 코드 비트들을 다중-비트 인코더(814)에 제공한다. 어드레스들을 적절하게 생성함으로써, 메모리(830)는 코드 비트들의 인터리빙을 제공하도록 동작할 수 있다. 메모리(830)는 위에서 설명된 바와 같이 다중-포트 메모리를 통해서나 또는 하나 이상의 메모리 유닛들을 통해서 구현될 수 있다.
도 9는 다수의 데이터 비트들의 연관된 코딩을 동시에 수행하기 위한 방법의 실시예에 대한 흐름도이다. 처음에, 단계 912에서 특정 데이터 패킷으로부터의 다수(M)의 데이터 비트들이 검색되며, 단계 914에서 다수(MR)의 코드 비트들을 생성하기 위해 제 1 (예컨대, 컨볼루션) 코딩 방식에 따라 동시에 코딩된다. 제 1 코딩 방식에 의해 생성된 코드 비트들의 수는 상기 방식의 특정 코드 레이트에 따라 다르다. 생성된 코드 비트들 중 0개 이상의 코드 비트가 단계 916에서 제 1 천공 방식으로 천공될 수 있음으로써, 다른 코드 레이트로 코드 비트들을 제공한다. 다음으로, 천공되지 않은 코드 비트들은 단계 918에서 메모리에 저장된다.
도 9에 도시된 실시예에서, 전체 패킷은 제 1 코딩 방식에 의해 코딩되며, 제 2 코딩 방식에 의한 후속적인 코딩에 앞서 저장된다. 이는 위에서 설명된 바와 같은 코드 비트들의 인터리빙을 허용한다. 따라서, 단계 920에서는, 전체 패킷이 코딩되었는지 여부가 결정된다. 응답이 부정적이라면, 처리는 단계 912로 돌아가고, 또 다른 M(또는 그보다 적은)개의 데이터 비트들이 수신된다.
그렇지 않고, 전체 패킷이 코딩되었다면, 단계 922에서 다수(N)의 비트들이 메모리로부터 검색되고, 단계 924에서는 다수(NR)의 코드 비트들을 생성하기 위해 제 2 (예컨대 컨볼루션) 코딩 방식에 따라 동시에 코딩된다. 또한, 제 2 코딩 방식에 의해 생성된 코드 비트들의 수는 상기 방식의 특정 코드 레이트에 따라 다르다. 또한, 생성된 코드 비트들 중 0개 이상의 코드 비트가 단계 926에서 제 2 천공 방식으로 천공될 수 있음으로써, 또 다른 코드 레이트로 코드 비트들을 제공한다. 다음으로, 천공된 코드 비트들이 단계 928에서 그 다음 처리 유닛(예컨대, 도 1의 변조기(116))에 코딩된 데이터로서 제공된다.
효율성 및 감소한 지연을 위해서, W개의 워드가 메모리에 (예컨대 W개의 기록 포트들을 통해서) 동시에 기록될 수 있고, R개의 워드가 상기 메모리로부터 (예컨대 R개의 판독 포트를 통해서) 동시에 검색될 수 있다. W개의 워드들은 제 1 코딩 방식으로부터 천공되지 않은 코드 비트들의 동시 저장을 허용하며, R개의 워드들은 N개의 코드 비트들이 제 2 코딩 방식에 동시 제공되도록 허용한다. 메모리는 코드 비트들의 인터리빙을 달성하기 위해서 상술한 방식으로 동작할 수 있다. 예컨대, W개의 워드들은 메모리의 순차적인 행들에 기록될 수 있으며, R개의 워드들은 메모리의 치환된 행들로부터 판독될 수 있다.
예시적인 실시예의 인코더 및 인터리버는 코딩 시간을 상당히 단축하는데 사용될 수 있다. 외부 컨볼루션 인코더를 통해 M개의 데이터 비트들을 동시에 코딩하고 내부 컨볼루션 인코더를 통해 N개의 코드 비트들을 동시에 코딩함으로써, 전체적인 코딩 지연이 상당히 감소할 수 있다. 본 발명의 인터리버는 기록 동작을 위한 다수의 코드 비트들을 수신하고 판독 동작을 위한 다수의 코드 비트들을 제공하는 능력을 통해서 병렬 코딩을 지원한다. M=8 및 N=4를 갖는 특정 설계 및 HDR 시스템에서 패킷 포맷 1 및 2에 대한 처리 지연의 개선이 테이블 7에 도시되어 있다.
테이블 7
Figure 112004011528117-pct00013
테이블 7에 제시된 특정 설계에 있어서, 전체 코딩 지연은 패킷 포맷 1에 대해서는 인자 4.8만큼 감소하고, 패킷 포맷 2에 대해서는 인자 5.0만큼 감소한다. 처리 지연에 있어서의 더 나은 개선은 특히 내부 컨볼루션 인코더에 대해서 동시에 코딩할 비트의 수를 증가시킴으로써(즉, N 증가) 달성될 수 있다.
본 발명의 인코더 및 인터리버에 의해 제공되는 더 짧은 처리 지연은 여러 장점을 제공한다. 그러한 장점들 중 일부가 아래에서 간략히 설명된다.
첫째로, 더 짧은 처리 지연이 음성 및 비디오와 같은 특정 유형의 서비스를 지원하기 위해 사용될 수 있는데, 이러한 유형의 서비스는 더욱 엄격한 지연 요건을 갖는다. 따라서, 더 짧은 처리 지연은 지연에 민감한 응용들을 위한 더욱 효율적인 코딩 방식들의 사용을 가능하게 한다.
둘째로, 더 짧은 처리 지연은 시스템 성능을 향상시킬 수 있다. 예컨대, 특정 사용자나 데이터 레이트가 특정 시간에 결정되는 통신 링크의 상황들에 기초하여 특정 전송을 위해 선택된다면, 더 짧은 처리 지연은 상기 링크 상황들이 데이터 전송 시간에 의해 변경되지 않을 가능성을 높인다. 링크 상황들은 통상적으로 시간이 지남에 따라 변하고, 더 긴 처리 지연은 링크 상황들이 데이터 전송 시간에 의해 변경될 가능성을 증가시키며, 이는 성능을 떨어뜨릴 수 있다.
셋째로, 더 짧은 처리 지연은 일부 통신 시스템들의 용량을 향상시킬 수 있다. 예컨대, HDR 시스템에서, 전력 제어 데이터는 트래픽 데이터와 곱해지며 사용자 단말기에 전송된다. 더 짧은 처리 지연은 사용자 단말기의 전송 전력에 대한 더욱 정확한 제어를 가능하게 하며, 이는 시스템 용량을 증가시킬 수 있고 성능을 향상시킬 수 있다.
넷째로, 더 짧은 처리 지연은 하드웨어 설계의 전체 영역을 감소시키기 위해 다중 전송 엔티티(즉, 3 섹터 시스템에서의 3명의 사용자)에 의해 하나의 처리 시간 슬롯(즉, HDR 시스템에서 순방향 링크 슬롯)에서 하드웨어 자원(즉, 인코더)의 순차적인 공유를 가능하게 한다.
명확성을 위해서, 본 발명의 인코더의 특정 양상들 및 실시예들은 HDR 시스템에서의 순방향 링크에 대하여 상세히 설명되었다. 그러나 본 발명은 동일하거나, 유사하거나, 또는 상이한 코딩 방식들을 사용하는 다른 통신 시스템들에서도 사용될 수 있다. 예컨대, 본 발명의 인코더는 다수의 데이터 비트들을 동시에 수신 및 코딩할 수 있는 컨볼루션 인코더를 구현하는데 사용될 수 있다. 본 발명의 인코더는 또한 다수의 데이터 비트들을 수신하여 동시에 코딩할 수 있는 터보 인코더와 같은 연관된 인코더를 구현하는데 사용될 수 있다. 인코더의 특정 설계는 예컨대 구현되는 특정 다항식 매트릭스, 동시에 코딩할 비트 수, 패킷 포맷, 코드-테일 비트의 사용 등과 같은 여러 인자에 따라 다르다.
본 발명의 인코더는 통신 시스템의 기지국이나 사용자 단말기(예컨대, 이동 유닛, 전화기 등)에서 유리하게 사용될 수 있다. 순방향 링크(즉, 다운링크) 및 역방향 링크(즉, 업링크)를 위한 코딩은 다를 수 있으며, 통상적으로 구현되는 특정 CDMA 시스템이나 표준에 따라 다르다. 따라서, 본 발명의 인코더는 자신이 사용되는 특정 응용을 위해서 통상 특별히 설계된다.
테이블 2 및 3에 제시된 특정 설계를 참조하면, 외부 컨볼루션 인코더에 대한 그 다음 상태들 및 출력들이 7개까지의 항을 갖는 함수를 통해 생성될 수 있다. 테이블 4-6에 제시된 특정 설계를 참조하면, 내부 컨볼루션 인코더에 대한 그 다음 상태들 및 출력들이 5개까지의 항을 갖는 함수를 통해 생성될 수 있다. 그러한 함수들은 해당분야에 알려져 있는 방식으로 논리 게이트들을 사용하여 쉽게 생성될 수 있다. 외부 및 내부 컨볼루션 인코더의 다른 엘리먼트들(예컨대, 레지스터들, 멀티플렉서들) 또한 해당분야에 알려진 방식으로 구현될 수 있다.
본 발명의 인코더에 대해서 상술한 엘리먼트들 중 일부나 모두(예컨대, 다중-비트 인코더, 입력 및 출력 인터페이스들, 제어 유닛, 인코더 상태 머신, 출력 생성기, 멀티플렉서 등)는 하나 이상의 ASIC(application specific integrated circuits), DSP(digital signal processors), PLD(programmable logic device), CPLD(Complex PLD), 제어기들, 마이크로-제어기들, 마이크로프로세서들, 본 명세서에서 기술된 기능들을 수행하도록 설계된 다른 전자 유닛들, 또는 그것들의 결합을 통해 구현될 수 있다. 본 발명의 인코더의 엘리먼트들 중 일부나 모두는 프로세서에서 실행되는 소프트웨어나 펌웨어를 사용하여 구현될 수도 있다.
본 발명의 인터리버를 구현하는데 사용되는 것들과 같은 메모리들 및 메모리 유닛들은 예컨대 RAM(random access memory), DRAM(dynamic RAN), 플래시 메모리 등과 같은 여러 메모리 기술들을 통해 구현될 수 있다. 메모리 유닛은 또한 예컨대 하드디스크, CD-ROM 드라이브 등과 같은 저장 엘리먼트들로 구현될 수 있다. 메모리 유닛들의 다양한 다른 구현이 본 발명의 범위 내에서 가능하다.
바람직한 실시예에 대한 상술한 설명은 당업자로 하여금 본 발명을 수행하거나 사용할 수 있도록 하기 위해 제공된다. 그러한 실시예들의 다양한 변경이 당업자들에게 자명하며, 본 명세서에서 정의된 일반적인 원리들은 신규한 기능을 사용하지 않고도 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본 명세서에 도시된 실시예들로 제한되도록 의도되지 않으며, 본 명세서에서 설명된 원리들 및 신규한 특징들에 따른 가장 넓은 범위를 제공해야 한다.

Claims (31)

  1. 다수의 데이터 비트들을 병렬로 코딩하는 연결(concatenated) 인코더로서,
    MR개(MR > M)의 코드 비트들을 생성하기 위해 M개의 데이터 비트들을 수신하고 제 1 코딩 방식에 따라 병렬로 코딩하도록 동작하는 제 1 인코더;
    상기 제 1 인코더에 연결되며, 상기 제 1 인코더로부터 상기 MR개의 코드 비트들 중 천공되지 않은(unpunctured) 비트들을 수신하여 저장하도록 동작하는 메모리; 및
    상기 메모리에 연결되며, 코딩된 데이터를 생성하기 위해 N개의 코드 비트들을 수신하고 제 2 코딩 방식에 따라 병렬로 코딩하도록 동작하는 제 2 인코더를 포함하는, 연결 인코더.
  2. 제 1 항에 있어서,
    상기 메모리는 1보다 큰 P개의 포트를 가진 다중-포트 메모리로 구현되는, 연결 인코더.
  3. 제 2 항에 있어서,
    상기 메모리는 기록 동작을 위해 W개의 워드들을 병렬로 저장하고 판독 동작을 위해 R개의 워드들을 병렬로 제공하도록 동작하며, 각각의 워드는 특정 수의 코드 비트들을 포함하는, 연결 인코더.
  4. 제 3 항에 있어서,
    인터리빙을 제공하기 위해, 상기 W개의 워드들은 기록 동작을 위해 상기 메모리의 순차적인 행들에 저장되며, 상기 R개의 워드들은 판독 동작을 위해 상기 메모리의 치환된 행들로부터 검색되는, 연결 인코더.
  5. 제 2 항에 있어서,
    N개의 멀티플렉서들로 이루어진 한 세트를 더 포함하며, 각각의 멀티플렉서는 상기 다중-포트 메모리의 한 포트에 연결되고, 상기 메모리로부터 개별 워드를 수신하고, 상기 수신된 워드의 코드 비트들 중 하나를 선택하여, 상기 선택된 코드 비트를 제공하도록 동작하고, 상기 N개의 멀티플렉서들로부터 선택된 N개의 코드 비트들은 상기 제 2 인코더에 병렬로 제공되는 N개의 코드 비트들을 포함하는, 연결 인코더.
  6. 제 1 항에 있어서,
    상기 제 1 인코더 및 제 2 인코더는 각각 특정 다항식 생성기 행렬을 구현하는 컨볼루션 인코더인, 연결 인코더.
  7. 제 1 항에 있어서,
    상기 제 1 인코더 및 제 2 인코더는 각각 레이트 1/2 컨볼루션 인코더인, 연결 인코더.
  8. 제 1 항에 있어서,
    상기 제 1 인코더 및 제 2 인코더 중 적어도 하나는 하나 이상의 룩-업 테이블들로 구현되는, 연결 인코더.
  9. 제 1 항에 있어서,
    상기 제 1 인코더 및 제 2 인코더 중 적어도 하나는 상태 머신으로 구현되는, 연결 인코더.
  10. 제 1 항에 있어서,
    상기 제 1 인코더는 제 1 컨볼루션 코딩 방식에 따라 적어도 8개의 데이터 비트들을 병렬로 수신하여 코딩하도록 동작하는, 연결 인코더.
  11. 제 1 항에 있어서,
    상기 제 2 인코더는 제 2 컨볼루션 코딩 방식에 따라 적어도 4개의 코드 비트들을 병렬로 수신하여 코딩하도록 동작하는, 연결 인코더.
  12. 제 1 항에 있어서,
    상기 메모리는 상기 메모리 내에 저장된 코드 비트들의 인터리빙을 제공하도록 동작하는, 연결 인코더.
  13. 제 1 항에 있어서,
    메모리 요건들을 줄이기 위해, 제 2 패킷에 대한 코딩이 시작되기 전에 상기 제 1 인코더 및 제 2 인코더에 의해 제 1 패킷에 대한 코딩이 수행되고 완료되는, 연결 인코더.
  14. 제 1 항에 있어서,
    처리 지연들을 감소시키기 위해, 상기 제 1 인코더에 의해 제 1 패킷에 대한 코딩이 수행되는 동시에 상기 제 2 인코더에 의해 제 2 패킷에 대한 코딩이 수행되는, 연결 인코더.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 통신 시스템의 송신기 유닛으로서,
    MR개(MR > M)의 코드 비트들을 생성하기 위해 M개의 데이터 비트들을 수신하여 제 1 코딩 방식에 따라 병렬로 코딩하고, 상기 MR개의 코드 비트들 중 천공되지 않은 코드 비트들을 저장하며, 특정 패킷에 대한 코드 비트들을 인터리빙하며, NR개의 코드 비트들을 생성하기 위해 N개의 코드 비트들을 수신하여 제 2 코딩 방식에 따라 병렬로 코딩하고, 상기 NR개의 코드 비트들 중 천공되지 않은 코드 비트들을 코딩된 데이터로서 제공하도록 동작하는 인코더;
    상기 인코더에 연결되며, 변조된 데이터를 생성하기 위해 상기 코딩된 데이터를 수신하여 특정 변조 방식에 따라 변조하도록 동작하는 변조기; 및
    상기 변조기에 연결되며, 전송을 위해 변조된 신호를 생성하기 위해 상기 변조된 데이터를 수신하여 처리하도록 동작하는 송신기를 포함하는, 송신기 유닛.
  24. 제 23 항에 있어서,
    상기 인코더는 터보 코드 또는 연결(concatenated) 코드를 구현하도록 구성되는, 송신기 유닛.
  25. 다수의 데이터 비트들의 연결(concatenated) 코딩을 병렬로 수행하는 방법으로서,
    M개의 데이터 비트들을 수신하는 단계;
    MR개(MR > M)의 코드 비트들을 생성하기 위해 제 1 코딩 방식에 따라 상기 M개의 데이터 비트들을 병렬로 코딩하는 단계;
    상기 MR개의 코드 비트들 중 천공되지 않은 코드 비트들을 메모리에 저장하는 단계;
    상기 메모리로부터 N개의 코드 비트들을 검색(retrieve)하는 단계; 및
    코딩된 데이터를 생성하기 위해 제 2 코딩 방식에 따라 상기 N개의 코드 비트들을 병렬로 코딩하는 단계를 포함하는, 다수의 데이터 비트들의 연결 코딩 방법.
  26. 제 25 항에 있어서,
    상기 저장 단계는:
    상기 메모리의 W개의 포트들에 상기 천공되지 않은 코드 비트들의 W개의 워드들을 기록하는 단계를 포함하는, 다수의 데이터 비트들의 연결 코딩 방법.
  27. 제 25 항에 있어서,
    상기 검색 단계는:
    상기 메모리의 R개의 포트들로부터 R개의 워드들의 코드 비트를 판독하는 단계를 포함하는, 다수의 데이터 비트들의 연결 코딩 방법.
  28. 제 25 항에 있어서,
    상기 제 1 코딩 방식 및 제 2 코딩 방식은 각각 컨볼루션 코드인, 다수의 데이터 비트들의 연결 코딩 방법.
  29. 제 25 항에 있어서,
    상기 N개의 코드 비트들은 상기 코드 비트들의 인터리빙을 제공하기 위해, 상기 MR개의 코드 비트들 중 천공되지 않은 코드 비트들을 저장하는데 사용되는 기록 순서와는 다른 판독 순서로 상기 메모리로부터 검색되는, 다수의 데이터 비트들의 연결 코딩 방법.
  30. 제 25 항에 있어서,
    상기 M개의 데이터 비트들을 코딩하는 단계 및 상기 N개의 코드 비트들을 코딩하는 단계는 각각:
    상기 M개의 데이터 비트들 또는 N개의 코드 비트들이 코드-테일 비트들을 포함하지 않는다면 제 1 개별 세트의 코딩 식들을 적용하는 단계; 및
    상기 M개의 데이터 비트들 또는 N개의 코드 비트들이 하나 이상의 코드-테일 비트들을 포함한다면 제 2 개별 세트의 코딩 식들을 적용하는 단계를 포함하는, 다수의 데이터 비트들의 연결 코딩 방법.
  31. 다수의 데이터 비트들을 병렬로 코딩하는 방법으로서,
    8 이상인 M개의 데이터 비트들을 수신하는 단계;
    MR개(MR > M)의 코드 비트들을 생성하기 위해 제 1 컨볼루션 코딩 방식에 따라 상기 M개의 데이터 비트들을 병렬로 코딩하는 단계 - 상기 M개의 데이터 비트들을 코딩하는 단계는:
    상기 M개의 데이터 비트들이 코드-테일 비트들을 포함하지 않는다면 제 1 세트의 코딩 식들을 적용하는 단계; 및
    상기 M개의 데이터 비트들이 하나 이상의 코드-테일 비트들을 포함한다면 제 2 세트의 코딩 식들을 적용하는 단계를 포함함 -;
    상기 MR개의 코드 비트들 중 천공되지 않은 코드 비트들을 메모리에 제 1 순서로 저장하는 단계;
    상기 메모리로부터 제 2 순서로 4 이상인 N개의 코드 비트들을 검색하는 단계; 및
    코딩된 데이터를 생성하기 위해, 제 2 컨볼루션 코딩 방식에 따라 상기 N개의 코드 비트들을 병렬로 코딩하는 단계를 포함하며, 상기 N개의 코드 비트들을 코딩하는 단계는:
    상기 N개의 코드 비트들이 코드-테일 비트들을 포함하지 않는다면 제 3 세트의 코딩 식들을 적용하는 단계; 및
    상기 N개의 코드 비트들이 하나 이상의 코드-테일 비트들을 포함한다면 제 4 세트의 코딩 식들을 적용하는 단계를 포함하는, 다수의 데이터 비트들의 병렬 코딩 방법.
KR1020047004125A 2001-09-20 2002-09-06 데이터를 병렬로 인코딩하기 위한 방법 및 장치 KR100898467B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/957,820 2001-09-20
US09/957,820 US6701482B2 (en) 2001-09-20 2001-09-20 Method and apparatus for coding bits of data in parallel
PCT/US2002/028462 WO2003026137A2 (en) 2001-09-20 2002-09-06 Method and apparatus for encoding data in parallel

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020087024884A Division KR100925095B1 (ko) 2001-09-20 2002-09-06 데이터를 병렬로 인코딩하기 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20040037092A KR20040037092A (ko) 2004-05-04
KR100898467B1 true KR100898467B1 (ko) 2009-05-21

Family

ID=25500189

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087024884A KR100925095B1 (ko) 2001-09-20 2002-09-06 데이터를 병렬로 인코딩하기 위한 방법 및 장치
KR1020047004125A KR100898467B1 (ko) 2001-09-20 2002-09-06 데이터를 병렬로 인코딩하기 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020087024884A KR100925095B1 (ko) 2001-09-20 2002-09-06 데이터를 병렬로 인코딩하기 위한 방법 및 장치

Country Status (11)

Country Link
US (2) US6701482B2 (ko)
EP (2) EP2211473A1 (ko)
JP (1) JP4159990B2 (ko)
KR (2) KR100925095B1 (ko)
CN (1) CN1589533B (ko)
AT (1) ATE467274T1 (ko)
AU (1) AU2002331827A1 (ko)
BR (1) BR0212658A (ko)
DE (1) DE60236301D1 (ko)
TW (1) TWI223529B (ko)
WO (1) WO2003026137A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058086B2 (en) * 1999-05-26 2006-06-06 Xm Satellite Radio Inc. Method and apparatus for concatenated convolutional encoding and interleaving
US9100457B2 (en) 2001-03-28 2015-08-04 Qualcomm Incorporated Method and apparatus for transmission framing in a wireless communication system
US8121296B2 (en) 2001-03-28 2012-02-21 Qualcomm Incorporated Method and apparatus for security in a data processing system
US8077679B2 (en) 2001-03-28 2011-12-13 Qualcomm Incorporated Method and apparatus for providing protocol options in a wireless communication system
US7352868B2 (en) 2001-10-09 2008-04-01 Philip Hawkes Method and apparatus for security in a data processing system
US7649829B2 (en) 2001-10-12 2010-01-19 Qualcomm Incorporated Method and system for reduction of decoding complexity in a communication system
US6954885B2 (en) * 2001-12-14 2005-10-11 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel
US20040103359A1 (en) * 2002-11-27 2004-05-27 Molina Robert Jose Dynamic real time generation of 3GPP turbo decoder interleaver sequence
US7599655B2 (en) 2003-01-02 2009-10-06 Qualcomm Incorporated Method and apparatus for broadcast services in a communication system
US7693928B2 (en) * 2003-04-08 2010-04-06 Analog Devices, Inc. Galois field linear transformer trellis system
US8098818B2 (en) 2003-07-07 2012-01-17 Qualcomm Incorporated Secure registration for a multicast-broadcast-multimedia system (MBMS)
US8718279B2 (en) 2003-07-08 2014-05-06 Qualcomm Incorporated Apparatus and method for a secure broadcast system
US8724803B2 (en) 2003-09-02 2014-05-13 Qualcomm Incorporated Method and apparatus for providing authenticated challenges for broadcast-multicast communications in a communication system
US7746800B2 (en) * 2003-11-21 2010-06-29 Nokia Corporation Flexible rate split method for MIMO transmission
US7853859B2 (en) * 2004-01-23 2010-12-14 Broadcom Corporation Convolutional coding method for multi-band communications
KR20070034532A (ko) 2004-05-28 2007-03-28 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 확장형 컨벌루션 인코더 디바이스, 무선 시스템, 컨벌루션코드 확장 방법
FR2879337A1 (fr) * 2004-12-15 2006-06-16 St Microelectronics Sa Circuit memoire, tel que dram, comportant un mecanisme correcteur d'erreur
WO2006075218A2 (en) * 2005-01-14 2006-07-20 Nxp B.V. Channel encoding with two tables containing two sub-systems of a z system
US7430701B2 (en) * 2005-06-16 2008-09-30 Mediatek Incorporation Methods and systems for generating error correction codes
US8050622B2 (en) * 2006-02-10 2011-11-01 Cisco Technology, Inc. Method and system for detecting messages using enhanced distributed signaling
WO2007098804A1 (en) * 2006-02-28 2007-09-07 Mentor Graphics Corp. Memory-based trigger generation scheme in an emulation environment
US20080063105A1 (en) * 2006-09-13 2008-03-13 Via Telecom, Inc. System and method for implementing preamble channel in wireless communication system
US7853858B2 (en) * 2006-12-28 2010-12-14 Intel Corporation Efficient CTC encoders and methods
KR100868649B1 (ko) 2007-05-17 2008-11-12 주식회사 동부하이텍 반도체 소자 및 그의 제조방법
KR101480383B1 (ko) * 2007-07-25 2015-01-09 삼성전자주식회사 코드 인코딩 장치
US8156413B2 (en) * 2007-11-28 2012-04-10 Qualcomm Incorporated Convolutional encoding with partitioned parallel encoding operations
JP4935778B2 (ja) * 2008-08-27 2012-05-23 富士通株式会社 符号化装置、送信装置および符号化方法
CN101615997B (zh) * 2009-07-20 2011-06-29 北京派瑞根科技开发有限公司 扩展网络通讯能力的设备
CN101615975B (zh) * 2009-07-20 2012-07-25 北京派瑞根科技开发有限公司 扩展网络通讯能力的方法
KR101221670B1 (ko) * 2009-11-24 2013-01-14 한국전자통신연구원 병렬 구조를 갖는 트랜스 포트 채널 인코더
JP5052639B2 (ja) * 2010-03-31 2012-10-17 株式会社東芝 送信装置および受信装置
US9294321B2 (en) * 2010-05-14 2016-03-22 The Boeing Company Bit signal structure for differentially encoded broadcasts
JP5708210B2 (ja) * 2010-06-17 2015-04-30 富士通株式会社 プロセッサ
KR101286019B1 (ko) * 2012-01-20 2013-07-19 주식회사 이노와이어리스 터보 인코더 장치
EP2693673A1 (en) * 2012-08-01 2014-02-05 Alcatel Lucent Bit-interleaver for an optical line terminal
US10193566B2 (en) * 2012-09-21 2019-01-29 Nippon Telegraph And Telephone Corporation Encoding/decoding system for parallel data
US9577854B1 (en) * 2015-08-20 2017-02-21 Micron Technology, Inc. Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding
JP6541916B2 (ja) * 2017-03-09 2019-07-10 三菱電機株式会社 誤り訂正装置および誤り訂正方法
CN107682121B (zh) * 2017-10-16 2021-04-27 中国科学院微电子研究所 一种编码方法及装置
US10727937B1 (en) * 2019-03-01 2020-07-28 Huawei Technologies Co., Ltd. Multi-layer encoding of optical signals

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0108566A1 (en) * 1982-11-01 1984-05-16 Corning Glass Works Apparatus for mixing viscous material
US5107505A (en) * 1988-07-07 1992-04-21 Schlumberger Industries Circuit of encoding and formatting data for rotating head recorders
WO2000072448A1 (en) * 1999-05-20 2000-11-30 Samsung Electronics Co., Ltd. Interleaving apparatus and method for use in serial concatenated convolutional code encoder in a mobile communication system
JP2001044856A (ja) * 1999-08-02 2001-02-16 Sony Corp 符号化装置および方法、並びに提供媒体

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4534040A (en) * 1983-01-04 1985-08-06 At&T Information Systems Method and apparatus for coding a binary signal
US4696045A (en) * 1985-06-04 1987-09-22 Acr Electronics Ear microphone
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US4908827A (en) * 1987-07-27 1990-03-13 Tiw Systems, Inc. Forward error correction system
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
FR2675968B1 (fr) * 1991-04-23 1994-02-04 France Telecom Procede de decodage d'un code convolutif a maximum de vraisemblance et ponderation des decisions, et decodeur correspondant.
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.
EP0696320B1 (en) * 1993-04-20 2002-09-25 Merck & Co., Inc. Human n-methyl-d-aspartate receptor subunits, nucleic acids encoding same and uses therefor
US5682154A (en) * 1995-05-12 1997-10-28 Optex Corporation M=4 (1,2) runlength limited code for multi-level data
US6023783A (en) * 1996-05-15 2000-02-08 California Institute Of Technology Hybrid concatenated codes and iterative decoding
US6549242B1 (en) * 1997-04-04 2003-04-15 Harris Corporation Combining adjacent TV channels for transmission by a common antenna
KR100243468B1 (ko) * 1997-06-26 2000-02-01 전주범 듀얼 포트 메모리를 이용한 길쌈 인터리버 /디인터리버
US6185244B1 (en) * 1997-08-29 2001-02-06 Telefonaktiebolaget Lm Ericsson Cell searching in a CDMA communications system
US6574211B2 (en) * 1997-11-03 2003-06-03 Qualcomm Incorporated Method and apparatus for high rate packet data transmission
EP0962094B1 (en) * 1997-12-22 2003-09-17 Koninklijke Philips Electronics N.V. Embedding supplemental data in an encoded signal
US6199190B1 (en) * 1998-02-11 2001-03-06 Conexant Systems, Inc. Convolution decoding terminated by an error detection block code with distributed parity bits
TW421925B (en) * 1998-04-24 2001-02-11 Koninkl Philips Electronics Nv Video rate D/A converter with sigma/delta modulator
EP1160989A4 (en) * 1999-03-01 2005-10-19 Fujitsu Ltd TURBO DECODING DEVICE
EP1085660A1 (en) * 1999-09-15 2001-03-21 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Parallel turbo coder implementation
US6392572B1 (en) * 2001-05-11 2002-05-21 Qualcomm Incorporated Buffer architecture for a turbo decoder

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0108566A1 (en) * 1982-11-01 1984-05-16 Corning Glass Works Apparatus for mixing viscous material
US5107505A (en) * 1988-07-07 1992-04-21 Schlumberger Industries Circuit of encoding and formatting data for rotating head recorders
WO2000072448A1 (en) * 1999-05-20 2000-11-30 Samsung Electronics Co., Ltd. Interleaving apparatus and method for use in serial concatenated convolutional code encoder in a mobile communication system
JP2001044856A (ja) * 1999-08-02 2001-02-16 Sony Corp 符号化装置および方法、並びに提供媒体

Also Published As

Publication number Publication date
TWI223529B (en) 2004-11-01
JP4159990B2 (ja) 2008-10-01
WO2003026137A3 (en) 2003-07-17
ATE467274T1 (de) 2010-05-15
EP2211473A1 (en) 2010-07-28
AU2002331827A1 (en) 2003-04-01
JP2005527999A (ja) 2005-09-15
BR0212658A (pt) 2007-03-06
WO2003026137A2 (en) 2003-03-27
KR20080094969A (ko) 2008-10-27
DE60236301D1 (de) 2010-06-17
US20030101401A1 (en) 2003-05-29
CN1589533A (zh) 2005-03-02
EP1430608A2 (en) 2004-06-23
US20040139383A1 (en) 2004-07-15
KR20040037092A (ko) 2004-05-04
CN1589533B (zh) 2010-05-05
EP1430608B1 (en) 2010-05-05
US6701482B2 (en) 2004-03-02
KR100925095B1 (ko) 2009-11-05

Similar Documents

Publication Publication Date Title
KR100898467B1 (ko) 데이터를 병렬로 인코딩하기 위한 방법 및 장치
US6954885B2 (en) Method and apparatus for coding bits of data in parallel
EP2323265B1 (en) Efficient multi-symbol deinterleaver
US6392572B1 (en) Buffer architecture for a turbo decoder
US7523377B2 (en) Random-access multi-directional CDMA2000 turbo code interleaver
JP4955150B2 (ja) 高並列map復号器

Legal Events

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