KR101046289B1 - 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치 - Google Patents

데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101046289B1
KR101046289B1 KR1020047009163A KR20047009163A KR101046289B1 KR 101046289 B1 KR101046289 B1 KR 101046289B1 KR 1020047009163 A KR1020047009163 A KR 1020047009163A KR 20047009163 A KR20047009163 A KR 20047009163A KR 101046289 B1 KR101046289 B1 KR 101046289B1
Authority
KR
South Korea
Prior art keywords
encoder
address
counter
bits
output
Prior art date
Application number
KR1020047009163A
Other languages
English (en)
Other versions
KR20040065268A (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 KR20040065268A publication Critical patent/KR20040065268A/ko
Application granted granted Critical
Publication of KR101046289B1 publication Critical patent/KR101046289B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • 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
    • 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
    • H03M13/235Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
    • 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/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
    • 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/65Purpose and implementation aspects
    • H03M13/6563Implementations using multi-port memories
    • 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/6575Implementations based on combinatorial logic, e.g. Boolean circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0065Serial concatenated codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0067Rate matching
    • H04L1/0068Rate matching by puncturing
    • H04L1/0069Puncturing patterns
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0071Use of interleaving

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 출력들이 반복적으로 발생할 때 다수의 비트들을 인코딩하기 위한 방법 및 장치에 관한 것이다. 각각의 클럭 사이클 동안, 인코더(1500)는 다수의 비트들을 처리하고 종래의 컨벌루션 인코더에서 다수의 클럭 사이클들을 통해 순차적으로 발생한 출력들과 일치하는 출력들을 발생한다. 일 실시예에서, 입력 데이터는 다수의 메모리 저장 유닛들(1104 내지 1106)에 저장되며, 각각 병렬 인코더에 데이터를 제공하기 위해 유일하게 처리된다.

Description

데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치{METHOD AND APPARATUS FOR CODING BITS OF DATA IN PARALLEL}
본 발명은 데이터 통신들에 관한 것이다. 특히, 본 발명은 다수의 데이터 비트들을 병렬로 코딩하여(예를 들면, 다중 포트 메모리를 사용하여) 코딩과 연관된 지연들을 상당히 감소시키는 것과 관련된다.
일반적인 디지털 통신 시스템에서, 데이터는 하나 또는 그 이상의 수신기 유닛들에 전송되는 변조된 신호를 발생하기 위해 송신기 유닛에서 프로세싱되고, 변조되며, 컨디셔닝된다. 데이터 프로세싱은 예를 들면, 데이터를 특정 프레임 포맷으로 포맷화하고, 포맷화된 데이터를 특정 코딩 방식을 사용해서 코딩하여 에러 검출 및/또는 정정을 수신기 유닛들에 제공하고, 코딩된 데이터를 채널화(즉, 커버링)하며, 시스템 대역폭에 걸쳐 채널화된 데이터를 확산시킨다. 데이터 프로세싱은 일반적으로 구현된 시스템 또는 표준에 의해 정의된다.
수신기 유닛에서, 전송된 신호는 수신되고, 컨디셔닝되고, 복조되고, 디지털 처리되어 전송된 데이터를 커버링한다. 수신기 유닛에서의 프로세싱은 송신기 유닛에서 수행되는 프로세싱과 보완적이며, 예를 들면, 수신된 샘플들을 역확산하고, 역확산된 샘플들을 디커버링하며, 디커버링된 심볼들을 디코딩하여 전송된 데이터를 커버링한다.
전송 에러들을 정정하는 능력은 데이터 전송의 실현가능성을 증진시킨다. 다수의 디지털 통신 시스템들은 수신기 유닛들에 에러 정정 능력을 제공하기 위해 컨벌루션 코드 또는 터보 코드를 사용한다. 컨벌루션 코드들은 직렬 데이터, 즉, 한번에 하나 또는 몇 개의 비트들에서 동작한다. 수신된 코딩된 정보 시퀀스들을 디코딩하여 원래의 데이터를 커버링하기 위해 다양한 컨벌루션 코드들, 및 다양한 알고리즘들이 존재한다. 터보 코딩은 특히 병렬-연결된 컨벌루션 코딩 방식이다. 연결된 코드는 둘 또는 그 이상의 코드들의 직렬 조합이며 추가의 에러 정정 능력들을 제공하기 위 사용된다. 연결된 코드에 대하여, 코딩 단계들 사이의 코드 비트들은 성능을 더 개선할 수 있는 시간(temporal) 다이버시티를 제공하기 위해 인터리빙(즉, 재배치)될 수 있다. 코드 비트들의 전체 패킷 또는 프레임은 일반적으로 재배치가 수행되기 이전에 저장된다. 재배치된 코드 비트들은 그 후에 후속 코딩 단계에 의해 직렬로 검색되고 코딩된다.
관습적으로, 컨벌루션 및 터보 코딩은 입력 비트 스트림을 통해 직렬로 수행된다. 각각의 클럭 사이클 동안, 하나의 데이터 비트는 인코더에 제공되고 둘 또는 그 이상의 비트들은 인코더의 코드 레이트에 따라 발생한다. 임의의 코드 비트들은 그 후에 펑처링(즉, 삭제)되어 다른 코드 레이트들로 코드 비트들을 획득할 수 있다.
디지털 다중 액세스 통신 시스템들은 일반적으로, 동작중인 사용자들 중에서 시스템 소스들의 효율적인 공유를 고려하여 패킷들 또는 프레임들 내의 데이터를 전송한다. 긴 지연들을 허용할 수 없는 서비스들(예를 들어, 음성, 비디오)에 대하여, 패킷들은 지속기간이 짧아지도록(예를 들면, 10msec) 선택되며, 따라서 코드들은 더 짧은 처리 지연들을 가지도록 선택된다. 그러나 개선된 코딩 효율에 대하여, 더 큰 크기의 패킷들을 처리 및 코딩하는 것이 바람직하며, 직렬로 데이터를 코딩하는 컨벌루션 기술을 사용할 때 더 긴 처리 지연들이 발생할 수 있다. 긴 처리 지연들은 통신 시스템의 성능에 악영향을 줄 수 있다. 예를 들면, 특정 사용자 또는 데이터 레이트는 통신 링크의 상태들에 기초하는 특정 데이터 전송을 위해 선택될 수 있다. 만약, 처리 지연들이 대단히 길면, 링크 상태는 데이터 전송 시간에 의해 변경될 수 있고, 성능은 절충되거나 반대로 악영향을 줄 수 있다.
도시된 바와 같이, 더 짧은 처리 지연들로 데이터를 효율적으로 코딩하기 위해 사용될 수 있는 기술들은 매우 바람직하다.
일 측면에 따라, 무선 통신 시스템 내에서 인터리버에 대한 어드레스들을 생성하기 위한 방법은 인터리버 어드레스를 생성하기 위한 카운터 값으로 카운터를 증분(increment)시키는 단계, 카운터 값이 무효(invalid) 인터리버 어드레스에 대응하면 카운터 값을 다음 유효 어드레스로 조절하는 단계, 및 조절된 카운터 값에 기초하여 어드레스를 생성하는 단계를 포함한다.
또 다른 측면에서, 무선 통신 시스템에서 인터리버에 대한 어드레스 생성 장치는 카운터, 및 카운터에 각각 접속된 다수의 어드레스 생성기들을 포함하며, 상기 다수의 어드레스 생성기들은 카운터에 접속되어 다수의 카운터 값들과 상응하는 카운터 오프셋 값들을 저장하는 메모리 저장 디바이스와 디바이스와 접속되고 이전에 발생한 어드레스에 카운터 오프셋을 추가하기 위해 사용되는 제 2 카운터를 갖는다.
또 다른 측면에서, 데이터 인코더는 연속하는 입력 정보 비트들을 저장하기 위한 다수의 메모리들, 입력 정보 비트들을 스크램블하기 위한 다수의 인터리버들, 상기 메모리들 중 제 1 메모리에 접속되며 연속하는 입력 정보 비트들을 인코딩하기 위해 사용되는 제 1 인코더, 및 다수의 메모리들에 접속되어 인터리빙된 입력 정보 비트들을 인코딩하기 위해 사용되는 제 2 인코더를 포함한다.
또 다른 측면에서, 데이터를 인코딩하는 방법은 다수의 입력 비트들을 수신하고, 상기 다수의 입력 비트들과 상기 상태값들의 제 1 세트에 기초하여 상태값들의 제 2 세트를 계산하고, 다수의 입력 비트들과 상태값들의 제 1 및 제 2 세트들에 기초하여 상태값들의 제 3 세트를 계산하며, 상태값들의 제 1, 제 2, 및 제 3 세트들에 기초하여 인코딩된 출력들의 세트를 생성하는 것을 포함한다.
본 발명의 다른 측면들과 실시예들이 하기에 기술된다.
본 발명의 특징들, 속성들, 및 장점들은 하기의 도면을 참조로 하여 상세히 설명된다.
도 1은 통신 시스템의 블럭 다이어그램이다.
도 2는 일 실시예에 따라 직렬 연결된 인코더이다.
도 3은 일 실시예에 따른 생성 다항식 행렬들의 특정 세트들 구현하는 연결 인코더의 다이어그램이다.
도 4는 일 실시예에 따라 다수의 데이터 비트들을 병렬로 코딩하기 위한 컨벌루션 인코더의 블럭 다이어그램이다.
도 5A 및 5B는 특정 생성 다항식 행렬을 구현하며 다양한 실시예들에 따라 8개의 데이터 비트들을 병렬로 코딩하기 위한 컨벌루션 인코더의 개략적인 다이어그램들이다.
도 6은 또 다른 특정 생성 다항식 행렬을 구현하며 4개의 코드 비트들을 병렬로 코딩할 수 있는 컨벌루션 인코더의 일 실시예의 개략적인 다이어그램이다.
도 7A는 인터리버의 다이어그램이다.
도 7B 및 7C는 다양한 실시예들에 따라 펑처링을 사용하지 않는/사용하는 외부 컨벌루션 인코더와 인터리버 간의 인터페이스의 다이어그램들이다.
도 8은 일 실시예에 따른 인코더의 블럭 다이어그램이다.
도 9는 일 실시예에 따라 다수의 데이터 비트들을 병렬로 연결하여 코딩을 수행하기 위한 방법의 흐름도이다.
도 10은 무선 통신 시스템이다.
도 11은 일 실시예에 따른 병렬 연결된 인코더이다.
도 12는 일 실시예에 따른 병렬 연결된 인코더의 기능도이다.
도 13은 일 실시예에 따른 터보 인코더의 기능도이다.
도 14는 일 실시예에 다른 터보 인코더에서 인터리버에 대한 어드레스 생성 회로의 기능도이다.
도 15는 일 실시예에 다른 병렬 연결된 터보 인코더들의 인터리버에 대한 어드레스 생성 회로의 기능도이다.
도 16은 일 실시예에 따른 터보 인코더의 기능도이다.
도 17은 터보 인코더 인터리버에 대한 어드레스 생성의 기능도이다.
다수의 비트들의 병렬 코딩
도 1은 본 발명의 다양한 측면들이 구현될 수 있는 통신 시스템(100)의 일 실시예의 간략한 블럭 다이어그램이다. 송신기 유닛(110)에서, 트래픽 데이터는 일반적으로 패킷들 또는 프레임들 내에서 데이터 소스(112)로부터 인코더(114)로 전송되며 특정 코딩 방식을 사용하여 데이터를 포맷화하여 코딩한다. 인코더(114)는 일반적으로 코드 비트들의 인터리빙(즉, 재배치)을 추가 수행한다. 그 후에 복조기(MOD:116)는 코딩된 데이터를 수신하고, 채널화(즉, 커버링)되며, 확산하여 하나 또는 그 이상의 아날로그 신호들로 변환되는 심볼들을 발생한다. 아날로그 신호들은 송신기(TMTR:118)에 의해 필터링되고, (직교) 변조되고, 증폭되며, 상향 변환되어 복조된 신호를 발생하며, 안테나(120)를 통해 하나 또는 그 이상의 수신기 유닛들로 전송된다.
수신기 유닛(130)에서, 전송된 신호는 안테나(132)에 의해 수신되어 수신기(RCVR:134)로 제공된다. 수신기(134) 내에서, 수신된 신호는 증폭되고, 필터링되며, 하향변환되고, 직교 변조되며, 디지털화되어 샘플들을 제공한다. 샘플들은 복조기(DEMOD:136)에 의해 역확산되고, 디커버링되며, 복조되어 복조된 심볼들을 발생한다. 디코더(138)는 복조된 심볼들을 디코딩한 후 디코딩된 데이터를 재배치하여 전송된 데이터를 커버링한다. 복조기(136) 및 디코더(138)에 의해 수행되는 프로세싱은 송신기 유닛(110)에서 수행되는 프로세싱과 상호보완적이다. 커버링된 데이터는 그 후에 데이터 싱크(140)에 제공된다.
전술된 신호 프로세싱은 음성, 비디오, 패킷 데이터, 메시지, 및 다른 형태의 통신들의 한 방향의 전송들을 지원한다. 양방향 통신 시스템은 양방향 데이터 전송을 지원한다. 그러나 다른 방향을 위한 신호 프로세싱은 간략함을 위해 도 1에 도시되지 않는다.
통신 시스템(100)은 코드 분할 다중 액세스(CDMA) 시스템, 시간 분할 다중 액세스(TDMA) 통신 시스템(예를 들어, GSM 시스템), 주파수 분할 다중 액세스(FDMA) 통신 시스템, 또는 육상 링크를 통해 사용자들 간의 음성 및 데이터 통신을 지원하는 다른 다중 액세스 통신 시스템이 될 수 있다.
다중 액세스 통신 시스템에서 CDMA 기술들을 사용은 "SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS"라는 명칭의 USP 4,901,307 및 "SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEPHONE SYSTEM"라는 명칭의 USP 5,103,459에 개시된다. 또 다른 특정 CDMA 시스템은 1997년 11월 3일에 제출된 "METHOD AND APPARATUS FOR HIGH RATE PACKET DATA TRANSMISSION"라는 명칭의 USP 출원 08/963,386에 개시된다. 상기 특허들 및 특허 출원은 본 발명의 양수인에게 양수되고 참조로서 통합된다.
CDMA 시스템들은 "TIA/EIA/IS-95-B Mobile Station-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System"(이하에서 IS-95 표준이라 참조되는), "TIA/EIA/IS-98 Recommended Minimum Standard for Dual-Mode Wideband Spread Spectrum Cellular Mobile Station"(이하에서 IS-98 표준이라 참조되는), "3rd Generation Partnership Project"(3GPP)라는 명칭의 협회에 의해 제공되고 문서번호들 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, 및 3G TS 25.214를 포함하는 문서들의 세트에서 실시되는 표준(이하에서 W-CDMA 표준이라 참조되는), 및 "TR-45.5 Physical Layer Standard for cdma2000 Spread Spectrum Systems"(이하에서 CDMA-2000 표준이라 참조되는)과 같은 하나 또는 그 이상의 표준들을 따르도록 설계된다. 새로운 CDMA 표준들은 사용을 위해 계속해서 제안되고 채택된다. 상기 CDMA 표준들은 여기에서 참조로서 통합된다.
도 2는 본 발명의 임의의 실시예들을 구현하도록 설계될 수 있는 인코더(200)의 블럭 다이어그램이다. 인코더(200)는 도 1의 인코더(114)를 위해 사용될 수 있다. 상기 실시예에서, 인코더(200)는 연결된 코드를 구현하며, 직렬로 접속된 외부 컨벌루션 인코더(212), 인터리버(214), 및 내부 컨벌루션 인코더(216)를 포함한다. 외부 컨벌루션 인코더(212)는 입력 데이터를 수신한 후 컨벌루션 코딩하여 저장을 위해 인터리버(214)에 제공되는 코드 비트들을 발생한다. 코드 비트들의 전체 패킷이 인터리버(214)에 저장되면, 코드 비트들은 검색되어 내부 컨벌루션 인코더(216)에 제공된다. 인터리빙을 달성하기 위해, 코드 비트들은 비트들이 인터리버(214)에 기록된 순서와는 다른 순서로 판독된다. 외부 컨벌루션 인코더 (212)는 코드 비트들을 수신하고 컨벌루션 코딩하여 코딩된 데이터를 발생하며, 이는 후속 프로세싱 단계에 제공된다.
종래의 컨벌루션 인코더는 데이터를 직렬로, 즉, 한번에(즉, 클럭 사이클당) 한 비트씩 수신하여 코딩한다. 큰 패킷들 내의 데이터를 전송하는 통신 시스템들에 대하여, 데이터의 직렬 코딩은 긴 프로세싱 지연들을 발생할 수 있다. 또한, 직렬로 접속된 다수의 컨벌루션 인코더들로 구성된 연결된 코더에 대하여, 프로세싱 지연들은 특히 외부 및 내부 컨벌루션 인코더들 모두가 비트들을 직렬로 코딩하는 경우에 과도하게 길어질 수 있다.
일 측면에서, 컨벌루션 인코더는 다수의(M) 비트들을 수신하여 직렬로 코딩할 수 있다. 상기 능력은 컨벌루션 인코더가 종래의 컨벌루션 인코더에 의해 요구되는 대략 (1/M)th의 시간 내에 데이터의 패킷을 코딩하도록 허용한다. 장점들은 개별 컨벌루션 인코더들 각각이 비트들을 병렬로 처리할 때 연결된 코더(예를 들면, 터보 코더)에 대해 더 명백해진다.
또 다른 측면에 따라, 인터리버는 다수의 데이터 비트들을 병렬로 저장 및 제공할 수 있다. 인터리버는 예를 들면, 멀티-포트 메모리를 사용하여 구현될 수 있다. 본 명세서에서 설명된 컨벌루션 인코더들과 결합하여 사용될 때, 인터리버는 약간의 시간 내에 인터리버에 기록되거나 인터리버로부터 판독되기 때문에 처리 지연들을 추가 감소시킬 수 있다.
명확성을 위해, 예시적인 실시예는 전술된 USP 출원 08/963,386에 기술된 통신 시스템 (즉, HDR 시스템)에서의 다운링크 데이터 전송을 위해 사용되는 인코더를 위해 설명된다. HDR 시스템은 외부 컨벌루션 코드, 인터리빙, 내부 컨벌루션 코드로 구성된 연결된 코드를 사용한다. HDR 시스템은 또한 테이블 1에 열거된 속성들을 가지는 두 개의 패킷 포맷들을 정의한다.
테이블 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 112004025423789-pct00001
식(1)
HDR 시스템에서 내부 컨벌루션 인코더는 다음의 생성 다항식 행렬에 의해 정의되는 1/2 레이트 컨벌루션 코드를 구현한다:
Figure 112004025423789-pct00002
식(2)
도 3은 식(1 및 2)에 의해 정의되는 외부 및 내부 컨벌루션 코드들을 구현하는 인코더(300)의 다이어그램이다. 데이터 비트들 u은 외부 컨벌루션 인코더(310)에 제공되어 식(1)을 실행하고 두 개의 출력들 yoa 및 yob를 발생한다. 인코더(310) 내에서, 데이터 비트들 u은 합산기(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은 그 후에 내부 컨벌루션 인코더(340)에 제공되어 식(2)을 실행하고 두 개의 출력들(yia 및 yib)을 발생한다. 인코더(340) 내에서, 코드 비트들 v은 합산기(342)에 제공되어 레지스터들(344A 및 344B)과 직렬 접속된다. 합산기(342)와 레지스터들(344A 및 34B)의 출력들은 합산기들(346A 및 346B)에 의해 합산되어 식(2)에 표현된 생성 다항식 행렬 내의 제 2 엘리먼트의 분자를 구현한다. 레지스터(344A)로부터의 출력은 합산기(342)에 제공되어 식(2)의 제 2 엘리먼트의 분모를 구현한다. 입력 코드 비트들 v은 제 1 출력 yia로서 제공되고 합산기(346B)는 제 2 출력 yib를 포함한다.
종래에, 데이터 비트들 u은 인코더(310)에 직렬로 제공되고 코드 비트들 v은 인코더(340)에 직렬로 제공된다. 각각의 입력 데이터 비트에 대하여, 외부 컨벌루션 인코더(310)는 두 개의 코드 비트들을 생성한다. 인터리버(330)는 코드 비트들을 수신하여 저장하고, 내부 컨벌루션 인코더(340)에 코드 비트들을 직렬로 제공한다. 직렬 방식의 비트들의 코딩은 긴 프로세싱 지연들을 발생한다.
일 실시예의 컨벌루션 인코더는 코딩 지연들이 상당히 짧아지도록 다수의 비트들을 병렬로 코딩할 수 있다. 각각의 클럭 사이클 동안, 다수의(예를 들면, M) 데이터 비트들이 수신되어 다수의 코드 비트들을 발생한다. 1/2 레이트 인코더에 대하여, 2M개의 코드 비트들이 M개의 데이터 비트들을 위해 발생한다. M은 예를 들면, 4, 8, 16, 32 등등과 같은 임의의 수들로 선택될 수 있다. 상기 컨벌루션 인코더의 다양한 선택적인 실시예들이 하기에서 설명된다.
HDR 시스템과 같은 다수의 디지털 통신 시스템들은 패킷들 내의 데이터를 전송한다. 하나의 패킷 내의 비트들의 개수(즉, 패킷 크기)는 예를 들면, 데이터 레이트, 전송할 데이터량, 프로세싱 지연 요청들, 등등과 같은 다수의 기준에 기초하여 선택된다. 수신기 유닛에서 디코더가 디코딩 시간을 짧아지도록 하고 성능을 개선하는 각 패킷의 시작시 공지된 상태에서 시작하도록 하기 위해, 인코더는 각 패킷의 시작시 공지된 상태(예를 들면, 모두 0)에서 초기화된다. 초기화는 선행하는 패킷의 종료시 코드 단부 비트들의 세트를 삽입함으로써 수행된다. 코드 단부 비트들은 인코더가 공지된 상태로 세팅되도록 선택된다.
일 실시예에서, 예시적인 실시예의 컨벌루션 인코더는 검색(lookup) 테이블을 사용하여 구현된다. 도 3을 참조로 하여, 외부 컨벌루션 인코더(310)는 레지스터들(314A부터 314D까지)의 출력들에 의해 정의되는 4-비트의 상태를 가지는 상태 머신으로서 간주될 수 있다. 검색 테이블의 컨텐츠를 발생하기 위해, 시간 인덱스 n에서 M개의 입력 데이터 비트는 벡터 Un에 의해 표시될 수 있고, 2M개의 코드 비트들은 벡터 Yn에 의해 표시될 수 있고, 현재의 인코더 상태는 벡터 Xn에 의해 표시될 수 있다. 인코더에 대한 다음 상태 Xn+1와 인코더 출력 벡터 Yn은 다음과 같이 표현될 수 있다:
데이터 코드-단부
Figure 112004025423789-pct00003
식(3)
Figure 112004025423789-pct00004
식(4)
식들(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를 제공하는 메모리의 어드레스 입력에 제공될 수 있다. 다음 인코더 상태 Xn+1는 다음 입력 데이터 벡터 Un+1와 함께 사용하기 위해 적절히 저장된다.
또 다른 실시예에서, 컨벌루션 인코더는 상태 머신을 사용하여 구현된다. 인코더 상태 및 출력은 식(3 및 (4)에 도시된 것과 같이 표현될 수 있다. 식(3 및 4)은 각각 반복해서 계산될 수 있고, 결과 식들은 하드웨어, 소프트웨어, 또는 그들의 조합에서 구현된다. 인코더를 위한 반복되는 식들은 다음과 같이 계산될 수 있다.
Figure 112007089295699-pct00005
은 이항된(transposed) 상태 벡터를 표시하고, u0는 시간 인덱스 0에서 입력 데이터 비트를 표시한다. 다음 상태 및 인코더의 출력은 다음과 같이 표시될 수 있다:
Figure 112004025423789-pct00006
식(5)
Figure 112004025423789-pct00007
식(6)
상기 A, B, C, 및 D는 구현된 특정 생성 다항식 행렬에 따라 결정되는 스칼라, 벡터, 및 행렬이다. 인코더 상태식(5)은 다음과 같이 반복해서 계산될 수 있다:
Figure 112004025423789-pct00008
인코더 출력식(6)은 유사한 방식으로 반복해서 계산될 수 있다.
식들(5 및 6)은 한번에 하나의 데이터 비트 u를 코딩하기 위해 사용된다. 유사한 식들의 세트는 M개의 데이터 비트들을 병렬로 코딩하기 위해 유도될 수 있다. 예를 들어, 8개의 데이터 비트들(즉, M=8)을 병렬로 코딩하기 위해, 시간 인 덱스 n에서 입력 데이터 벡터의 이항은
Figure 112004025423789-pct00009
와 같이 정의될 수 있고, 출력 코드 벡터의 이항은
Figure 112004025423789-pct00010
와 같이 정의될 수 있다. Un 및 Yn을 위해 정의된 벡터 표시들을 사용하여, 식들(5 및 6)은 다음과 같이 표현될 수 있다:
Figure 112004025423789-pct00011
식(7)
Figure 112004025423789-pct00012
식(8)
상기 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)에 직렬로 제공된 이후의 인코더 상태들 및 출력들을 도시한다. 도 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로 계산된다. (각각의 합산기는 모듈로-2 덧셈을 수행한다.) 다음 클럭 사이클을 통해, 합산기(312) 및 레지스터들(314A부터 314C까지)은 각각 레지스터들(314A부터 314D까지)로 쉬프트된다. 다음 데이터 비트 u1는 인코더에 제공되며, 합산기(312)의 출력은 x3+x2+u1로 계산되어 테이블 2의 제 2행 제 3 열에 저장된다. 인코더 출력들은 ya1=yu1 및 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는 간단히 입력 벡터의 함수이다(즉, Ya=U).
테이블 2
Figure 112004025423789-pct00013
테이블 1을 다시 참조하여, HDR 시스템 내의 외부 컨벌루션 인코더는 패킷 포맷 1 내의 각각의 패킷에 대하여 1018개의 데이터 비트들과 4개의 코드-단부 비트들을 수신한다. 만약 8개의 비트들이 병렬로 코딩되면, 하나의 데이터 패킷을 코딩하기 위해 128개의 클럭 사이클들이 사용된다. 최초 127개의 클럭 사이클들은 1016개의 데이터 비트들(즉, 127×8=1016)을 코딩하기 위해 사용되고 128번째 클럭 사이클은 남아있는 2개의 데이터 비트들과 4개의 코드-단부 비트들을 코딩하기 위해 사용된다. 최초 127개의 클럭 사이클들은 "데이터 위상"이라 참조되고 최종 클럭 사이클은 "코드-단부 위상"이라 참조된다.
외부 컨벌루션 인코더는 패킷 포맷 2 내의 각각의 패킷에 대하여 2024개의 데이터 비트들과 4개의 코드-단부 비트들을 수신한다. 만약 8개의 비트들이 병렬로 코딩되면, 하나의 데이터 패킷을 코딩하기 위해 256개의 클럭 사이클들이 사용된다. 최초 255개의 클럭 사이클들은 2040개의 데이터 비트들(즉, 255×8=2040)을 코딩하기 위해 사용되고 256번째 클럭 사이클은 남아있는 2개의 데이터 비트들과 4개의 코드-단부 비트들을 코딩하기 위해 사용된다. 최초 255개의 클럭 사이클들은 데이터 위상이라 참조되고 최종 클럭 사이클은 코드-단부 위상이라 참조된다.
테이블 3은 도 3의 컨벌루션 인코더(310)에 두 개의 데이터 비트들 u0 및 u1과 4개의 코드-단부 비트들이 직렬로 제공된 이후의 인코더 상태들과 출력들을 도시한다. 다시 말해서, 레지스터들(314A부터 314D까지)은 초기에 x1, x2, x3 및 x4의 값을 각각 저장한다. 최초 2개의 클럭 사이클에서, 두 개의 데이터 비트들 u0 및 u1은 인코더로 직렬 제공된다. 인코더 상태들(x1부터 x4까지) 및 인코더 출력들(yc 및 yd)은 전술된 것과 유사한 방식으로 계산된다. 따라서, 테이블 3의 제 2 및 제 3 행들은 테이블 2의 제 2 및 제 3행들과 동일하다. 제 3 클럭 사이클을 통해, x2+x1의 값을 가지는 제 1 코드-단부 비트는 인코더에 제공된다. 코드-단부 비트의 값은 합산기(312)의 출력이 0과 동일하도록 선택되며, 컨벌루션 인코더를 제외하는데(flushed out) 사용된다. 인코더 출력들은 yc2=x2+x1 및 yd2=x4+u0+u1로 계산된다. 다음 클럭 사이클을 통해, 합산기(312) 및 레지스터들(314A부터 314C까지)로부터의 값들은 각각 레지스터들(314A로부터 314D까지)로 쉬프트된다. 제 2 코드-단부 비트는 x4+x3+x1+u0가 되도록 선택되고, 다시 합산기(312)의 출력을 0으로 세팅시키고 인코더를 플러시 아웃(flush out)한다. 프로세싱은 0의 값들을 가지는 인코더에 제공되는 최종 2개의 비트들을 사용하여 계속된다.
도 3에 도시된 것과 같이, 인코더 출력들 Yc 및 Yd은 모두 입력 벡터 U와 현재 인코더 상태 Xn의 함수들이다. 코드-단부 위상에 대하여, 다음 인코더 상태 Xn+1은 모두 0인 공지된 상태(즉, XS=[0 0 0 0])로 세팅된다.
테이블 3
Figure 112004025423789-pct00014
도 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 열의 입력에 의해 정의된 것과 같은 입력들 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에 접속된다. 입력들 u부터 u까지는 각각 인코더 출력들 ya0부터 ya7까지를 포함하며, AND 게이트들의 출력들(522A부터 522H까지)은 각각 인코더 출력들 yb0부터 yb7까지를 포함한다.
도 5B는 식(1)에 표현되며 테이블 1에 도시된 패킷 포맷들 1 및 2를 위한 생성 다항식 행렬의 코드-단부 위상을 구현하는 코드-단부 위상 출력 발생기(530) 및 멀티플렉서들(540A 및 540B)의 특정 실시예의 개략적인 다이어그램이다. 코드-단부 위상 출력 발생기(530) 및 멀티플렉서들(540A 및 540B)은 각각 도 4의 코드-단부 위상 출력 발생기(430) 및 멀티플렉서들(440A 및 440B0과 상응한다. 상기 실시예에서, 코드-단부 위상 출력 발생기(530)는 AND 게이트들(532A부터 532J까지)로 구현되어 테이블 3에 정의된 코드-단부 위상을 위한 인코더 출력들 Yc 및 Yd를 발생한다. 멀티플렉서(540A)는 2×1 멀티플렉서들(542A부터 542F까지)로 구현되며 제 1 인코더 출력 Yoa을 제공한다. 유사하게, 멀티플렉서(540B)는 2×1 멀티플렉서들(544A부터 544H까지)로 구현되며 제 2 인코더 출력 Yob를 제공한다.
도 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)은 각각 출력들 Yc 및 Yd을 제공한다.
도 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 112004025423789-pct00015
테이블 1을 다시 참조하여, HDR 시스템 내의 내부 컨벌루션 인코더는 패킷 포맷 1 내의 각각의 패킷에 대하여 2044개의 코드 비트들과 4개의 코드-단부 비트들을 수신한다. 만약 4개의 비트들이 병렬로 코딩되면, 512개의 클럭 사이클들은 하나의 패킷을 코딩하기 위해 사용된다. 최초 511개의 클럭 사이클들은 2044개의 코드 비트들(즉, 511×4=2044)을 코딩하기 위해 사용되고 512번째 클럭 사이클은 4개의 코드-단부 비트들을 코딩하기 위해 사용된다. 컨벌루션 인코더는 3079개의 코드 비트들과 패킷 포맷 2 내의 각각의 패킷에 대하여 3개의 코드-단부 비트들을 수신한다. 만약 4개의 비트들이 병렬로 코딩되면, 768개의 클럭 사이클들이 하나의 데이터 패킷을 코딩하기 위해 사용된다. 최초 767개의 클럭 사이클들은 3068개의 코드 비트들(즉, 767×4=3068)을 코딩하기 위해 사용되고 768번째 클럭 사이클은 4 마지막 코드 비트와 3개의 코드-단부 비트들을 코딩하기 위해 사용된다.
테이블 5는 패킷 포맷 1에 대한 코드-단부 위상을 위한 내부 컨벌루션 인코더들의 상태들 및 출력들을 도시한다. 제 1 클럭 사이클을 통해 x1의 값을 가지는 제 1 코드-단부 비트가 인코더에 제공된다. 코드-단부 비트값은 합산기(342)의 출력이 0과 동일하도록 선택된다. 인코더 출력들은 yg0=x1 및 yh0=x2 +x1로 계산된다. 프로세싱은 남아있는 3개의 코드-단부 비트들에 대하여 유사한 방식으로 계속된다.
테이블 5
Figure 112004025423789-pct00016
테이블 6은 패킷 포맷 2에 대한 코드-단부 위상을 위한 내부 컨벌루션 인코더들의 상태들 및 출력들을 도시한다. 제 1 클럭 사이클을 통해, 최종 코드 비트 v0가 인코더에 제공되고, 인코더 상태들 x1 및 x2 와 출력들 yi0 및 yj0가 전술된 것과 유사한 방식으로 계산된다. 따라서 테이블 6의 제 2 행은 테이블 4의 제 2 행과 동일하다. 제 2 클럭 사이클을 통해 x1+v0의 값을 가지는 제 1 코드-단부 비트가 인코더에 제공된다. 코드-단부 비트값은 합산기(342)의 출력이 0과 동일하도록 선택된다. 인코더 출력들은 yi1=x1+v0 및 yj1=v0로 계산된다. 프로세싱은 남아있는 코드-단부 비트들에 대하여 유사한 방식으로 계속된다.
테이블 6
Figure 112004025423789-pct00017
도 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)는 테이블 4부터 6까지의 마지막 2개의 열들에 의해 정의된 바와 같은 입력들 v0 - v3 및 x1 - x2에 선택적으로 접속된다. 예를 들면, AND 게이트(622A)는 입력들 x2 및 v0에 접속되어 yf0(테이블 4의 제 2행, 마지막 열)을 발생하고, AND 게이트(622B)는 입력들 x2 및 x1에 접속되어 yh0(테이블 5의 제 2행, 마지막 열)을 발생하며, AND 게이트(622C)는 입력들 x2 및 v0에 접속되어 yj0(테이블 4의 제 2행, 마지막 열)을 발생한다. 다른 인코더 출력들은 테이블 4부터 6까지에 표시된 것과 같이 발생한다.
멀티플렉서(640A)는 각각 내부 컨벌루션 인코더(600)에 대한 제 1 인코더 출력들 yia0부터 yia3까지를 제공하는 3×1 멀티플렉서들(642A부터 642D까지)을 포함한다. 데이터 위상들 동안, ye0부터 ye3까지는 각각 멀티플렉서들(652A부터 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개의 코드 비트들을 병렬로 저장하도록 설계될 수 있다. 유사하게, 내부 컨벌루션 인코더는 D개의 코드 비트들을 병렬로 검색 및 코딩하도록 설계될 수 있다. 다시 프로세싱을 촉진하고 지연들을 감소시키기 위해, 인터리버는 단순한 판독 동작을 통해 내부 컨벌루션 인코더에 최소 N개의 코드 비트들을 병렬로 제공하도록 설계된다.
외부 및 내부 컨벌루션 인코더들의 각각으로부터의 코드 비트들은 다른 코드 레이트들로 코드 비트들을 제공하도록 펑처링될 수 있다. 예를 들면, 테이블 1을 다시 참조하여, 외부 컨벌루션 인코더로부터의 출력들은 코드 레이트 1/2를 획득하기 위해 패킷 포맷 1에 대해서는 펑처링되지 않고, 코드 레이트 2/3을 획득하기 위해 패킷 포맷 2에 대해서는 펑처링된다. 유사하게, 내부 컨벌루션 인코더로부터의 출력들은 코드 레이트 1/2를 획득하기 위해 패킷 포맷 1에 대해서는 펑처링되지 않고 코드 레이트 3/4를 획득하기 위해 패킷 포맷 2에 대해서는 펑처링된다. 인코더와 인터리버 간의 인터페이스는 심볼 펑처링을 효율적으로 수행하도록 설계될 수 있다.
도 7A는 인터리버(700)의 일 실시예의 블럭 다이어그램이다. 상기 실시예에서, 인터리버(700)는 P개의 포트들을 가지는 멀티-포트 메모리(710)로 구현되며, 상기 P는 1 이상이다. 인터리버를 구현하기 위해 사용되는 특정 메모리 유닛에 따라, P개의 포트들의 각각은 기록 및 판독 포트 모두로 사용될 수 있거나 지정된 기록 또는 판독 포트가 될 수 있다. 도 7A에 도시된 실시예에서, 메모리(710)는 판독 포트들 D1부터 DW까지로 지정된 W개의 포트들과 기록 포트들 Q1부터 QR까지로 지정된 R개의 포트들을 포함한다. 메모리(710)는 또한 P개의 어드레스 입력들 A1부터 AP까지를 포함하며, 하나의 어드레스 입력은 P개의 포트들의 각각을 위한 것이다. 각각의 기록 및 판독 포트는 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개까지의 코드 비트들은 기록 동작시 인터리버에 기록될 수 있고, 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)에 저장된다. 펑처링 이후에, 도 7C에 도시된 것과 같이 24개의 코드 비트들이 남아서 3개의 기록 포트들(예를 들면, D1부터 D3까지)에 제공된다.
어드레스 생성기는 메모리 내의 순차적인 행들에 펑처링되지 않은 코드 비트들을 기록하기 위한 적절한 어드레스들을 제공한다. 하나의 어드레스는 코드 비트들을 기록하기 위해 사용되는 각각의 활성 포트를 위해 발생한다. 따라서, 어드레스 생성기는 펑처링이 수행되지 않을 때 포트 D1부터 D4까지에 대한 4개의 어드레스를 생성하고 펑처링이 수행될 때 포트 D1부터 D3까지에 대한 3개의 어드레스를 생성한다.
내부 컨벌루션 인코더에 4개의 코드 비트들을 병렬로 제공하기 위해, 4개의 코드 비트들의 행들이 메모리로부터 검색되어 4개의 8×1 멀티플렉서들에 제공된다. 각각의 멀티플렉서는 또한 검색된 행에서 내부 컨벌루션 인코더에 제공하기 위한 특정 비트를 선택하는 각각 3비트의 제어 신호 ADX를 수신한다. 각각의 검색된 비트에 대한 어드레스는 따라서 두 개의 부분들로 분할될 수 있고, 제 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)에 의해 제공되는 데이터를 수신하고, 상기 수신된 데이터를 멀티-비트 인코더(814)로 라우팅한다. 멀티-비트 인코더(814)는 외부 및 내부 컨벌루션 인코더들을 구현하고 하나 또는 그 이상의 검색 테이블들 또는 도 4에 전술된 것과 같은 하나 또는 그 이상의 인코더들로 구현될 수 있다. 외부 컨벌루션 인코더로서 동작할 때, 멀티-비트 인코더(814)는 입력 인터페이스(812)로부터 데이터를 코딩하여, 발생한 코드 비트들을 메모리(830)에 제공한다. 내부 컨벌루션 인코더로서 동작할 때, 멀티-비트 인코더(814)는 메모리(830)로부터 코드 비트들을 코딩하여 발생한 코드 비트들을 출력 인터페이스(816)에 제공한다. 출력 인터페이스(816)는 그 후에 버퍼(850)에 코딩된 데이터를 제공한다.
제어 유닛(818)은 예를 들면, 코딩할 특정 데이터 패킷, 버퍼(802)내의 패킷의 위치, 패킷 포맷, 사용할 코딩 방식, 버퍼(850) 내에 코딩된 패킷을 저장하기 위한 위치, 등등과 같은 다양한 제어 정보를 수신한다. 제어 유닛(818)은 입력 인터페이스(912)가 버퍼(802)로부터 적절한 데이터 비트들을 검색하도록 지시하고, 인코더 상태 머신(814)이 적절한 코딩 방식을 사용하도록 지시하며, 출력 인터페이스(816)가 버퍼(850)내의 적절한 위치에 코딩된 데이터를 제공하도록 지시한다.
어드레스 생성기(820)는 메모리(830)에 코드 비트들을 기록하고 메모리로부터 코드비트들을 판독하기 위한 적절한 어드레스를 생성한다. 어드레스 생성기(820)는 로직, 검색 테이블, 또는 임의의 다른 설계들로 구현될 수 있다.
메모리(830)는 멀티-비트 인코더(814)에 의해 발생한 코드 비트들을 저장하고 멀티-비트 인코더(814)에 저장된 코드 비트들을 제공한다. 어드레스들을 적절히 발생시키기 위해, 메모리(830)는 코드 비트들의 인터리빙을 제공하도록 동작할 수 있다. 메모리(830)는 전술된 것과 같은 멀티-포트 메모리 또는 하나 또는 그 이상의 메모리 유닛들로 구현될 수 있다.
도 9는 다수의 데이터 비트들의 연결된 코딩을 병렬로 수행하기 위한 방법의 일 실시예의 흐름도이다. 초기에, 단계(912)에서 특정 데이터 패킷으로부터 다수(M)의 데이터 비트들이 수신되어, 단계(914)에서 다수(MR)의 코드 비트들을 발생하기 위해 제 1 (예를 들면, 컨벌루션) 코딩 방식에 따라 병렬로 코딩된다. 제 1 코딩 방식에 의해 발생한 코드 비트들의 개수는 상기 방식의 특정 코드 레이트에 다라 결정된다. 단계(916)에서, 0 또는 그 이상의 발생한 코드 비트들은 제 1 펑처링 방식으로 펑처링되어 서로 다른 코드 레이트로 코드 비트들을 제공할 수 있다. 단계(918)에서, 펑처링되지 않은 코드 비트들은 그 후에 메모리에 저장된다.
도 9에 도시된 실시예에서, 전체 패킷은 제 1 코딩 방식에 의해 코딩되어 제 2 코딩 방식에 의한 후속 코딩 이전에 저장된다. 이는 전술된 것과 같은 코드 비트들의 인터리빙을 고려한다. 따라서, 단계(920)에서 전체 패킷이 코딩되었는지의 여부가 결정된다. 만약 아니면, 프로세스는 단계(912)로 복귀하여 또 다른 (M개 또는 그 미만) 데이터 비트들이 수신된다.
그와 달리, 만약 전체 패킷이 코딩되었다면, 단계(922)에서 다수(N)의 코드 비트들이 메모리로부터 검색되어 단계(924)에서 다수(NR)의 코드 비트들을 발생하기 위해 제 2 (예를 들면, 컨벌루션) 코딩 방식에 따라 병렬로 코딩된다. 다시 말해서, 제 2 코딩 방식에 의해 발생한 코드 비트들의 개수는 상기 방식의 특정 코드 레이트에 따라 결정된다. 그리고 단계(926)에서, 0 또는 그 이상의 발생한 코드 비트들은 제 2 펑처링 방식에 따라 펑처링되어 또 다른 코드 레이트로 코드 비트들을 제공할 수 있다. 단계(928)에서, 펑처링되지 않은 코드 비트들은 그 후에 다음 프로세싱 유닛(예를 들면, 도 1의 복조기(116))에 코딩된 데이트로서 제공된다.
효율성과 감소한 지연들을 위해, W개의 워드들이 메모리에 병렬로(예를 들면, W개의 기록 포트들을 통해) 저장될 수 있고, R개의 워드들이 메모리로부터 병렬로(예를 들면, R개의 판독 포트들을 통해) 검색될 수 있다. W개의 워드들은 제 1 코딩 방식으로부터 펑처링되지 않은 코드 비트들의 병렬 저장을 고려하며, R개의 워드들은 제 2 코딩 방식에 병렬로 제공될 N개의 코드 비트들을 고려한다. 메모리는 코드비트들의 인터리빙을 수행하기 위해 전술된 방식으로 동작할 수 있다. 예를 들면, W개의 워드들이 메모리 내의 순차적인 행들에 기록될 수 있고 R개의 워드들이 메모리 내의 치환된 행들로부터 판독될 수 있다.
예시적인 실시예의 인코더 및 인터리버는 코딩 시간을 훨씬 단축하도록 사용될 수 있다. 외부 컨벌루션 인코더와 병렬로 M개의 데이터 비트들을 코딩하고 내부 인코더와 병렬로 N개의 데이터 비트들을 코딩함으로써, 전체 코딩 지연들은 상당히 감소할 수 있다. 본 발명의 인터리버는 기록 동작을 위해 다수의 코드 비트들을 수신하고 판독 동작을 위해 다수의 코드 비트들을 제공하는 능력으로 병렬 코딩을 지원한다. HDR 시스템에서 M=8 및 N=4이고 패킷 포맷들 1 및 2에 대한 특정 설계에서 프로세싱 지연들의 개선은 테이블 7에 도시된다.
테이블 8
패킷 포맷 1 패킷 포맷 2
병렬 직렬 병렬 직렬
외부 컨벌루션 인코더
입력 비트들 1018 2042
코드-단부 비트들 4 4
전체 입력 비트들 1022 2046
요구되는 클럭 사이클들 128 1024 256 2048
내부 컨벌루션 인코더
입력 비트들 2044 3069
코드-단부 비트들 4 3
전체 입력 비트들 2048 3072
요구되는 클럭 사이클들 512 2048 768 3072
코딩 시간(20MHz 클럭)
외부 인코더(μsec) 6.4 51.2 12.8 102.4
내부 인코더(μsec) 25.6 102.4 38.4 153.6
전체 코딩 시간(μsec) 32.0 153.6 51.2 256.0
테이블 8에 도시된 특정 설계에 대하여, 전체 코딩 지연들은 인코더에 의해 제공되는 지연들에 대하여 인수(factor) 4.8 만큼 감소하며 본 발명의 인터리버는 새로운 장점들을 제공한다. 상기 장점들 중 몇 가지가 하기에서 간단히 설명된다.
먼저, 더 짧은 프로세싱 지연들은 음성 및 비디오와 같이 더 절박한 지연 요구들을 가지는 특정 서비스 형태들을 지원하기 위해 사용될 수 있다. 더 짧은 프로세싱 지연들은 지연에 민감한 애플리케이션들을 위해 더 효율적인 코딩 방식들의 사용을 고려할 수 있다.
두 번째로, 더 짧은 프로세싱 지연들은 시스템 성능을 개선할 수 있다. 예를 들면, 만약 특정 사용자 또는 데이터 레이트가 특정 시간에 결정되는 통신 링크의 조건들에 기초하여 특정 전송을 위해 선택되면, 더 짧은 프로세싱 지연들은 링크 조건들이 데이터 전송 시간에 의해 변경되지 않을 가능성을 증가시킨다. 링크 조건들은 일반적으로 시간을 통해 변화하며, 더 긴 처리 지연들은 링크 조건이 성능을 감소시킬 수 있는 데이터 전송 시간에 의해 변경되지 않을 가능성을 증가시킨다.
셋째, 더짧은 프로세싱 지연들은 임의의 통신 시스템들의 용량을 개선할 수 있다. 예를 들면, HDR 시스템에서, 전력 제어 데이터는 트래픽 데이터와 함께 멀티플렉싱되어 사용자 터미널들에 전송된다. 더짧은 프로세싱 지연들은 사용자 터미널들의 전송 전력의 더 정확한 제어를 고려하며, 시스템 용량을 증가시키고 성능을 개선할 수 있다.
넷째, 더짧은 프로세싱 지연들은 다수의 전송 엔티티들(즉, 3개의 섹터 시스템에서 세 명의 사용자들)에 의해 하나의 프로세싱 타임 슬롯(즉, HDR 시스템의 순방향 링크 슬롯)에서 하드웨어 소스(즉, 인코더)의 순차적인 공유가 하드웨어 설계의 전체 영역을 감소시키도록 한다.
명확함을 위해, 본 발명의 인코더의 특정 측면들과 실시예들은 특히 HDR 시스템의 순방향 링크를 위해 설명된다. 그러나 본 발명은 동일한, 유사한, 또는 서로 다른 코딩 방식들을 사용하는 다른 통신 시스템들에서 사용될 수 있다. 예를 들면, 본 발명의 인코더는 다수의 데이터 비트들을 병렬로 수신하고 코딩할 수 있는 컨벌루션 인코더를 구현하기 위해 사용될 수 있다. 본 발명의 인코더는 또한 터보 인코더와 같이 다수의 비트들을 병렬로 수신 및 코딩할 수 있는 연속된 인코더를 구현하기 위해 사용될 수 있다. 인코더의 특정 설계는 예를 들면, 구현된 특정 생성 다항식 행렬, 병렬로 코딩할 비트들의 개수, 패킷 포맷, 코드-단부 비트들의 사용 등등과 같은 다양한 인자들에 따라 결정된다.
본 발명의 인코더는 통신 시스템의 기지국 또는 사용자 터미널(예를 들면, 이동 유닛, 전화기, 등등)에서 유리하게 사용될 수 있다. 순방향 링크(즉, 다운링크) 및 역방향 링크(즉, 업링크)에 대한 코딩은 서로 다를 수 있고, 일반적으로, 특정 CDMA 시스템 또는 표준이 구현되는 것에 따라 결정된다. 따라서, 본 발명의 인코더는 일반적으로 사용되는 특정 애플리케이션을 위해 특히 설계된다.
테이블 2 및 3에 도시된 특정 설계를 참조하여, 외부 컨벌루션 인코더에 대한 다음 상태들 및 출력들은 7개까지의 항들을 가지는 함수들을 사용하여 발생할 수 있다. 테이블들 4 내지 6에 도시된 특정 설계를 참조하여, 내부 컨벌루션 인코더에 대한의 다음 상태들 및 출력들은 5개의 항들을 가지는 함수들을 사용하여 발생할 수 있다. 상기 함수들은 당업자에게 공지된 방식으로 로직 게이트들을 사용하여 용이하게 발생할 수 있다. 외부 및 내부 컨벌루션 인코더들의 다른 엘리먼트들(예를 들면, 레지스터들, 멀티플렉서들)은 당업자에게 공지된 방식으로 구현될 수 있다.
본 발명의 인코더를 위해 전술된 몇 개의 또는 모든 엘리먼트들(예를 들면, 멀티-비트 인코더, 입력 및 출력 인터페이스, 제어 유닛, 인코더 상태 머신, 출력 발생기, 멀티플렉서, 등등)은 하나 또는 그 이상의 응용 집적 회로들(ASICs), 디지털 신호 처리기들(DSPs), 프로그램가능한 로직 디바이스(PLD), 콤플렉스 PLD(CPLD), 제어기들, 마이크로-제어기들, 마이크로프로세서들, 여기에서 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 또는 그들의 조합 내에서 구현될 수 있다. 본 발명의 인코더의 임의의 또는 모든 엘리먼트들은 프로세서에서 수행되는 소프트웨어 또는 펌웨어를 사용하여 구현될 수 있다.
본 발명의 인터리버를 구현하기 위해 사용되는 것들과 같은 메모리들 및 메모리 유닛들은 예를 들면, 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 플래시 메모리, 및 다른 메모리들과 같은 다양한 메모리 기술들로 구현될 수 있다. 메모리 유닛은 예를 들면, 하드 디스크, CD-ROM 드라이브, 등등과 같은 저장 엘리먼트들로 구현될 수 있다. 메모리 유닛들의 다양한 다른 구현이 가능하며, 본 발명의 영역 내에 있다.
다수의 비트들의 반복적인 병렬 코딩
선택적인 실시예에 따라, 인코더들은 출력 데이터량의 두 배를 제공하기 위해 병렬로 구성되며, 상기 인코더에 의해 다수의 비트들이 처리된다. 데이터 출력의 증가는 특히 프레임들이 신속히 인코딩되기 위한 높은 데이터 레이트의 통신 시스템에 적합하다. 예시적인 실시예는 클럭 사이클당 다수의 비트들을 인코딩하며, 따라서 데이터 전송의 시간 제약들을 충족시킨다. 상기 실시예는 다수의 섹터를 통해 단일 인코더를 공유함으로써 섹터 당 하나의 인코더의 사용을 피한다. 선택적인 실시예들은 임의의 개수의 인코더들을 병렬로 구현할 수 있다. 섹터들을 통해 인코딩 섹션을 공유함으로써, 개별 인코더의 속도는 덜 제한될 수 있다.
예시적인 실시예의 일 측면에 따라, 프레임 버퍼 메모리들은 각각의 프레임들의 다수개의 카피들을 저장한다. 병렬 검색 테이블(LUT)과 곱셈 회로들이 터보 인터리버 어드레스 생성기들을 구현하기 위해 사용된다. 설계는 병렬 인코딩을 구현하기 위해 AND-XOR 트리들을 사용한다. 비트 펑처링/재배치는 인코딩 프로세스 다음에 병렬로 수행된다.
도 10은 다수의 사용자를 지원하고 본 발명의 적어도 몇 가지 측면들과 실시예들을 구현할 수 있는 통신 시스템(1000)의 일례를 제공한다. 여러 가지 알고리즘들 및 방법들 중 임의의 것들은 시스템(1000)에서 전송들을 스케줄링하기 위해 사용될 수 있다. 시스템(1000)은 다수의 셀들(1020A부터 1020G까지)을 위한 통신을 제공하며, 그 각각은 상응하는 기지국(1040A부터 1040G까지)에 의해 각각 서비스된다. 예시적인 실시예에서, 임의의 기지국들(1040)은 다수의 수신 안테나들을 가지며, 다른 기지국들은 하나의 수신 안테나만을 갖는다. 유사하게, 임의의 기지국들(1040)은 다수의 송신 안테나들을 가지며, 다른 기지국들은 단일 송신 안테나만을 갖는다. 송신 안테나들과 수신 안테나들의 결합에는 제한이 없다. 그러므로, 기지국(1040)은 다수의 송신 안테나들과 단일 수신 안테나를 가질 수 있거나 다수의 수신 안테나들과 단일 송신 안테나를 가질 수 있거나, 단일 또는 다수의 송신 및 수신 안테나들 모두를 가질 수 있다.
커버리지 영역 내의 터미널들(1060)은 고정(즉, 안정된)되어가 이동가능할 수 있다. 도 1에 도시된 것과 같이, 다양한 터미널들(1060)은 시스템을 통해 분산된다. 각각의 터미널(1060)은 예를 들면, 소프트 핸드오프가 사용되는지의 여부 또는 터미널이 다수의 기지국들로부터의 다수의 전송을 (동시에 또는 순차적으로)수신하도록 설계되고 동작하는지의 여부에 따라 임의의 주어진 순간에 다운링크 및 업링크를 통해 적어도 하나 및 가능한 많은 기지국들(1040)과 통신한다. CDMA 통신 시스템들에서의 소프트 핸드오프는 당업자에게 공지되고 "Method and system for providing a Soft Handoff in a CDMA Cellular Telephone System"이란 명칭의 미국 특허 5,101,501에 상세히 설명되며, 본 발명의 양수인에게 양수된다.
다운링크는 기지국으로부터 터미널로의 전송을 말하고 업링크는 터미널로부터 기지국으로의 전송을 말한다. 예시적인 실시예에서, 임의의 단말들(1060)은 다수의 수신 안테나들을 가지며, 다른 단말들은 하나의 수신 안테나만을 가진다. 도 1에서, 기지국(1040A)은 다운링크를 통해 데이터를 단말들(1060A 및 1060J)에 전송하고, 기지국(1040B)은 데이터를 터미널들(1060B 및 1060J)에 전송하고, 기지국(1040C)은 데이터를 터미널(1060C)에 전송한다.
예시적인 실시예에 따라, 무선 통신 시스템은 병렬로 구성된 다수의 컨벌루션 인코더들을 사용하여 전송하기 위해 인코딩 정보에 적응된다. 개별 인코더들의 각각은 유사한 구조를 가지며, 하나의 인터리버를 통해 접속된다. 병렬 인코더들은 다수의 출력을 제공하며, 즉 병렬인 두 개의 인코더들에 대하여, 상기 조합은 다수의 출력값들의 두 배의 값들을 제공한다. 추가의 처리시 사용될 상기 출력값들에 대한 출력이 선택된다. 다수의 비트들은 병렬 인코더들을 통해 처리된다. 각각의 인코더 내의 처리는 병렬로 수행된다.
예시적인 실시예는 시스템 클럭 사이클당 다수의 비트들, 예를 들면, 사이클당 4개의 비트들을 처리한다. 예시적인 실시예의 인코더는 하드웨어와 소프트웨어의 조합을 사용하여 구현된다. 하드웨어는 정보 입력 비트들을 저장 및 처리하기 위해 사용된다. 소프트웨어는 하드웨어를 제어하기 위한 명령들 및 예를 들면 인코딩 프로세스 동안 임시값들을 발생하는 다른 인코딩 계산들을 포함한다.
도 11은 클럭 당 4개의 비트들을 인코딩하는 일 실시예에 다른 터보 인코더 블럭(1500)을 도시한다. 도 11에 도시된 터보 인코더 블럭(1500)은 병렬로 접속된 두 개의 개략적인 컨벌루션 인코더들(1502, 1552)과 제 2 컨벌루션 인코더(1552) 바로 앞의 인터리버(1522)를 사용한다. 인터리버(1522)는 터보 인터리버로 지칭된다. 두 개의 컨벌루션 코드들은 터보 코드의 구성 코드라 불린다. 구성 인코더들의 출력들은 원하는 개수의 터보 인코더 출력 심볼들을 달성하기 위해 펑처링되고 반복된다. 일 실시예에 따른 구성 코드의 전달 함수는 다음과 같다:
Figure 112004025423789-pct00018
식(9)
상기
Figure 112004025423789-pct00019
식(10)
Figure 112004025423789-pct00020
및 식(11)
Figure 112004025423789-pct00021
식(12)
구성 인코더들(1502, 1552) 각각은 다수의 레지스터를 포함하며, 특히 인코더(1502) 내에는 레지스터들(1510, 1412, 및 1514)이 존재하고 인코더(1552) 내에는 레지스터들(1560, 1562, 및 1564)이 존재한다. 초기에, 구성 인코더들(1502, 1552) 내의 레지스터들의 상태들은 0으로 세팅된다. 각각의 인코더(1502, 1552)는 입력 스위치(1501, 1551)를 통해 각각 클럭된다. 정보 비트들은 스위치(1501)를 통해 제 1 인코더(1502)에 입력으로 제공된다. 입력 정보 비트는 Nturbo개의 비트들을 포함하며, 이는 인코더(1500)로의 유효한 비트들의 개수이다. 입력 정보 비트들은 터보 인터리버(1522)에 추가 제공되며, 상기 비트들은 인터리빙, 즉 스크램블링되어 데이터 전송의 정확성을 증가시킨다. 터보 인터리버(1522)의 출력은 스위치(1551)를 통해 제 2 인코더(1552)에 제공된다. 각각의 인코더들(1502 및 1552)의 동작은 유사하며 따라서 이하에서 인코더(1502)의 동작이 상세히 설명된다. 선택적인 실시예들은 터보 인코더 블럭(1500)에 포함된 각각의 인코더를 위한 서로 다른 형태의 인코더들을 구현할 수 있다.
인코더(1502)로의 입력이 스위치에 제공되며, 상기 스위치는 시스템 클럭에 의해 제어된다(미도시). 정보 비트는 스위칭 업된 각각의 Nturbo 데이터 비트 주기 동안 한번 클럭되고; 스위칭 다운된 각각의 단부 비트 주기들 동안 여러 번 클럭 된다. 일 실시예에 따라, 정보 비트들은 각각의 인코더(1502, 1552)에 대하여 3개의 클럭들을 포함하는 단부 비트 주기에 동안 6번 클럭된다. 인코딩된 데이터 출력 심볼들은 구성 인코더들(1502, 1552)을 업 위치의 스위치들을 사용하여 Nturbo번 클럭하고 미리 결정된 펑처링 패턴에 따라 출력들을 펑처링함으로써 발생한다. 인코더(1500)의 출력은 시퀀스:X, Y0, Y1, X', Y'0, Y'1에서 발생한다. 예시적인 실시예에 따라, 심볼 반복은 출력 심볼의 발생시 수행되지 않는다. 터보 인코더(1500)는 인코딩된 데이터 출력 심볼들에 부가된 단부 출력 심볼들을 발생한다. 단부 출력 심볼들은 구성 인코더들(1502, 1552)이 Nturbo 번 클럭된 이후에 발생한다.
터보 인터리버(1522)의 동작은 입력 비트의 각각의 시퀀스가 어드레스들의 시퀀스에서 어레이에 순차적으로 기록되는 것과 기능적으로 등가인 결과를 생성하도록 설계되며, 상기 시퀀스는 미리 결정된 인터리빙 절차 또는 프로토콜에 의해 정의된 어드레스들의 또 다른 시퀀스들로부터 판독된다. 인터리버 동작은 도 12를 참조로 하여 더 상세히 설명된다.
도 11에 연속하여, 스위치(1501)의 하나의 노드가 입력에 연결된다. 스위치(1051)의 제 2 노드는 배타적 OR(XOR) 게이트(1504)에 연결된다. XOR 게이트(1504)의 출력은 직렬 레지스터들 또는 지연 엘리먼트들(1510, 1512, 1514)에 접속된다. 각각의 지연 엘리먼트는 연관된 상태를 가지며, 지연 엘리먼트(1510) 내에 저장된 정보는 "상태 0"으로 간주되고. 지연 엘리먼트(1512)에 저장된 정보는 "상태 1"로 간주되고, 지연 엘리먼트(1514)에 저장된 정보는 "상태 2"로 간주된다. 지연 엘리먼트(1510)의 출력은 "S0"로 식별되고, 지연 엘리먼트(1512)의 출력은 "S1"로 식별되며, 지연 엘리먼트(1514)의 출력은 "S2"로 식별된다.
지연 엘리먼트(1512 및 1514)의 출력들은 각각 XOR 게이트(1516)로의 입력들에 접속된다. XOR 게이트(1516)의 출력은 그 후에 스위치(1501)의 제 3 노드 및 XOR 게이트(1504)의 입력에 접속된다. XOR 게이트(1504)는 XOR 게이트(1508)로의 입력에 추가 접속된다. XOR(1508)로의 다른 입력들은 지연 엘리먼트들(1510, 1512, 및 1514)의 개별 출력들의 각각으로부터 수신된다. XOR 게이트(1504)의 출력은 여전히 XOR 게이트(1506)로의 입력에 추가 접속된다. XOR 게이트(1506)로의 다른 입력들은 지연 엘리먼트들(1510 및 1514)의 개별 출력들로부터 수신된다.
인코더(1502)의 출력은 입력 스위치(1501), XOR 게이트(1506)로부터의 패리티 비트 출력 Y0 성분, 및 XOR 게이트(1508)의 출력으로부터의 제 2 패리티 비트 출력 Y1 성분을 포함한다. 출력들 X, Y0, 및 Y1은 각각 심볼 펑처링 및 반복 유닛(1520)에 제공된다.
기능적으로, 인코더(1520)의 구성은 다음 등식들을 수행한다:
Figure 112004025423789-pct00022
식(13)
Figure 112004025423789-pct00023
식(14)
Figure 112004025423789-pct00024
식(15)
상기 I는 입력 정보 비트들을 표시하고, S0, S1, 및 S2는 지연 엘리먼트들(1510, 1512, 및 1514)의 출력들을 각각 표시하며, 연산
Figure 112007089295699-pct00025
은 논리 XOR 연산을 표시한다. 디지털 논리의 조합 및 배분 규칙을 적용함으로써, 식들(10 및 11)은 다음과 같이 축소될 수 있다:
Figure 112004025423789-pct00026
식(16)
Figure 112004025423789-pct00027
식(17)
예시적인 실시예에 따라, 터보 인코더는 두 개의 단계들을 갖는다. 제 1 단계 동안, 프레임은 외부 소스로부터 판독 입력된다. CRC는 제 1 단계 동안 계산된다. 제 2 단계 동안 프레임은 인코딩되고, 펑처링되며, 반복된다. 터보 인코더에 대한 코드 레이트는 1/3 또는 1/5가 될 수 있다.
제 2 단계 동안, 4개의 비트들이 인코더(1500)에서 수신되며, 상기 4개의 비트들은 병렬로 처리되어 인코더의 스루풋을 증가시킨다. 효율적으로, 입력 정보 비트들 I[0]:I[3]은 인코더(1500)에 동시에 제공되고, 입력 정보 비트들은 인코더(1500)에 직렬로 제공되면 처리된다. 이는 입력 데이터에 식들(16 및 17)을 반복 적용함으로써 성립된다. 개별 시스템 클럭 사이클 동안, 상태들의 값들이 결정되며, 즉 각각 SO[O]:S0[4], S1[0]:S1[4], S2[0]:S2[4]이다.
도 12는 일 실시예에 다른 인터리버의 동작들을 설명한다. 도시된 바와 같이, 인터리버(1300)는 ADD 회로(1302)를 증분하기 위해 카운터(미도시)로부터 입력을 수신한다. 기능적으로, 어드레스 생성은 메모리 저장 행들의 어레이로 카운터 값들을 기록하는 것과 동등하다. 행들은 비트-반전 또는 다른 규칙에 따라 재구성되며 각각의 행 내의 엘리먼트들은 행-특정 선형 합동 시퀀스에 따라 치환된다. 출력 어드레스들은 그 후에 열 단위로 판독 출력된다. 선형 합동 시퀀스는 다음과 같이 제공될 수 있다:
x(i+1) = (x(i)+c) mod 2n, 식(18)
상기 x(0)=c이고 c는 검색 테이블로부터의 행-특정 값이다.
도 12에 연속하여, 카운터 값으로부터의 최상위 비트(MSB)정보가 유닛(1302)에 제공된다. 덧셈(add) 유닛(1302)은 카운터의 MSB값을 증분시키며, 그 결과값을 곱셈 유닛(1304)에 제공한다. 일 실시예에서, 결과값은 출력으로서 미리 결정된 비트들의 개수를 제공하기 위해 변경된다. 카운터 값으로부터의 최하위 비트(LSB) 정보는 검색 테이블(LUT:1308)과 비트 반전 유닛(1310)에 제공된다. LSB 정보는 LUT(1308)를 처리하기 위해 사용되며, 상기 위치에 저장된 값은 곱셈 유닛(1304)에 제공된다. 곱셈 유닛(1304)으로의 입력들은 함께 곱셈되어 그 결과값이 선택 유닛(1306)에 제공된다. 일 실시예에서, 곱셈 유닛(1304)은 곱셈값의 LSB 부분과 같이 곱셈값의 일부분만이 선택 유닛(1306)에 출력으로 제공된다. 비트 반전 유닛(1310)은 카운터 값의 LSB 부분에서 전술된 바와 같은 비트 반전 연산을 수행한다. 비트 반전 유닛(1310)의 출력은 선택 유닛(1306)에 제공된다. 예시적인 실시예에 따라, 곱셈 유닛(1304)으로부터 수신된 선택 유닛(1306)으로의 입력은 LSB 부분으로 사용되고 비트 반전 유닛(1310)으로부터 수신된 입력은 MSB 부분으로 사용된다. 선택 유닛(1306)은 결과적인 출력 어드레스가 유효 어드레스인지를 결정한다. 만약 어드레스가 유효하지 않다면, 선택 유닛은 상기 결과값을 제외하고, 다음 카운터 증분을 통해 새로운 어드레스가 발생한다. 선택적인 실시예들은 병렬 컨벌루션 인코더들 사이에 적용된 선택적인 인터리빙 방식들을 구현할 수 있다.
도 11의 인코더(1500)는 무선 트랜시버 내의 다수의 변조기 블럭들에 의해 공유될 수 있으며, 따라서 예시적인 실시예의 인코더는 클럭 사이클당 다수의 비트들을 인코딩하여 고속 데이터 전송 시스템의 속도 요구들을 만족시킴에 유의하라. 예를 들면, 도 13에 도시된 바와 같이, 인코더(1100)의 기능적인 동작은 클럭 사이클당 4개의 비트들을 인코딩하며, 상기 인코더(1100)는 40MHz 클럭을 사용하여 약 32㎲에서 최대 크기의 프레임을 인코딩하도록 설계된다. 전술된 바와 같이, 인코더(1100)는 두 단계들로 동작한다. 제 1 단계 동안, 프레임은 외부 소스로부터 판독 출력되어 CRC가 계산된다. 제 2 단계 동안, 프레임은 인코딩되고, 펑처링되며, 반복된다. 예시적인 실시예의 설명에서 사용되는 것과 같이, 프레임은 오버헤드 부분과 페이로드 부분을 가지는 데이터 전송 유닛이다.
도 13는 예시적인 실시예에 따른 인코더(1100)의 동작을 기능적으로 도시한다. 인코더(1100)는 일 실시예에 따라 다수의 랜덤 액세스 메모리들(RAMs)이 되는 외부 소스로부터 16비트 워드들로서 정보 비트들을 수신한다. 5개의 동일한 카피들은 인코더(1100) 내의 메모리들에 저장된다. 비트들은 디멀티플렉서(1130)를 통해 병렬 인코더(1132)에 선택적으로 제공된다. 예시적인 실시예에 따라, 16개의 비트들이 메모리(1128)로부터 디멀티플렉서(1130)로 제공되고, 병렬 인코더(1132)에 제공하기 위해 한번에 4 비트들을 선택한다. 병렬 인코더는 4개의 입력 비트들을 수신하여 3개의 출력 X, Y0 및 Y1을 발생한다. 상기 출력들의 각각은 4비트 출력이며, 상기 병렬 인코더는 각각의 클럭 사이클 동안 4 비트 출력을 생성하기 위해 반복 프로세싱을 사용한다.
전술된 것과 같이, CRC 발생기(1134)는 제 1 상태 동안 동작하며, 상기 16 비트 CRC는 동시에 처리되는 패킷들에서 계산된다. 패킷은 페이로드, CRC 부분 및 단부 부분을 포함한다. 일 실시예는 다양한 길이의 패킷들을 지원한다. 데이터는 클럭 사이클당 16 비트들로 판독되기 때문에, BRB 발생기(1134)는 매 사이클마다 CRC를 계산한다. 제 1 단계의 종료에서, CRC가 준비된다. 상기 시점에서, CRC는 메모리 저장 유닛(MEM:1128) 및 4개의 메모리 저장 디바이스들(MEM:1104 내지 1106)로 기록된다. 제 1 단계 동안, 정보 비트들은 MEM들(1104 내지 1106)에 제공된다. 정보 비트들은 MEM들(1104 내지 1106)에서 클럭되며, 상기 16 비트들은 각각의 클럭 사이클에서 클럭된다. 예시적인 실시예에서, MEM들(1104 내지 1106)은 4개의 메모리를 포함하지만, 선택적인 실시예들은 선택적인 개수의 메모리들을 포함할 수 있다. MEM들(1104 내지 1106)은 각각 멀티플렉서(1136)로의 입력들에 접속된 어드레스 생성기(1124) 및 카운터(1126)로부터 어드레싱 제어 정보를 수신한다. 멀티플렉서(1136)의 출력은 MEM들(1104 내지 1106)에 제어 신호를 제공한다. 어드레스 생성기(1124)는 4개의 값들의 저장을 위해 어드레싱을 증분시킨다. MEM들(1104 내지 1106)로의 기록 동작 동안, MEM들(1104 내지 1106)의 각각은 동일한 어드레스를 수신한다. MEM들(1104 내지 1106)로부터의 판독 동작 동안, MEM들(1104 내지 1106)의 각각은 서로 다른 어드레스를 수신한다. 도 13에 도시된 바와 같이, MEM(1128)은 병렬 인코더들 중 하나(1132)를 지원하는 반면, MEM들(1104 내지 1106)은 제 2 병렬 인코더(1144)를 지원한다. 각각 출력 세트들 X, Y0, 및 Y1을 제공하는 병렬 인코더들(1132 1144)로부터, 출력 비트들은 도 11에의 블럭(1520)과 같은 심볼 반복 및 펑처링 블럭에 제공된다.
도 14에 도시된 것과 같이, 정보 비트들 I[0]:I[3]은 인코더(1500 및 1100)와 유사한 인코더(1200)에 제공된다. 인코더(1100)는 식(16 및 17)을 입력 정보 비트들 I[0]:I[3]에 적용시키기 위한 룩어헤드(lookahead) 상태 발생기(1200)를 포함한다. 룩어헤드 상태 발생기(1202)는 상태 정보를 발생하여 상태들 S0[4], S1[4], S2[4]을 레지스터 또는 메모리 저장 디바이스(1204)에 저장한다. 상태 정보는 각각의 시스템 클럭 사이클을 통해 업데이트된다. 제 1 값들이 저장되기 이전에 메모리 저장 디바이스(1204)는 미리 결정된 상태값들로 초기화된다. 상태값들 SO[O]:SO[3], S1[0]:S1[3], S2[0]:S2[3]은 멀티-비트 출력 발생기들(1206, 1208)에 제공된다. 입력 정보 비트들 I[0]:I[3]은 출력들 X[0]:X[3]로 제공된다. 멀티-비트 출력 발생기(1206)는 출력들 Y0[0]:Y0[3]을 발생하는 반면, 멀티-비트 출력 발생기(1208)는 출력들 Y1[0]:Y1[3]을 발생한다. 멀티-비트 출력 발생기(1206 및 1208)는 전자에서 주어진 식들(16 및 17)에 기초하여 값들을 반복 계산한다.
전술된 바와 같이, 예시적인 실시예의 어드레스 생성은 4개의 터보 인터리버 메모리들(1104,..., 1106)에 4개의 판독 어드레스들을 제공한다. 터보 인터리빙 어드레스들은 인식할 수 있는 패턴을 가지지 않으며, 따라서 클럭 당 4개의 비트들의 판독 스루풋율을 획득하기 위해 각 어드레스에 대하여 4개의 카피들을 발생하는 것이 바람직하다. 인터리버 메모리들(1104, ..., 1106)의 각각은 판독 워드로서 하나의 16비트인 워드를 제공하며; 하나의 비트는 다수의 16:1 멀티플렉서들을 통해 각각의 16비트인 판독 워드로부터 선택된다. 예시적인 실시예에서, 각각의 인터리버(1104, ..., 1106)는 각각 멀티플렉서(1140, ..., 1142)와 접속된다. 4개의 비트들(즉, 각각의 인터리버(1104, ..., 1106)로부터 하나의 비트씩)는 제 2 인코더(1144)로 진행된다.
전체 인코드 시간은 제 1 단계 동안 메모리들에서 비트들을 판독하는데 걸리는 시간과 제 2 단계 동안 인코딩하는데 걸리는 시간의 합이다. 예를 들어, 4096 비트의 프레임 크기를 고려할 때, 프레임을 인코딩하기 위한 사이클들의 대략의 개수는 다음과 같다:
Figure 112004025423789-pct00028
식(19)
그러므로 40MHz 시스템 클럭을 가지는 시스템에 대하여, 4096 비트 프레임은 인코딩하는데 약 32㎲ 걸릴 것이며, 이는 목표 40㎲ 인코드 시간 주기 내에 있다.
전술된 바와 같이, 두 개의 단계의 인코더는 내부 메모리 구조에 상주하는 모든 패킷을 제공한다. 상기 구조에서, 입력 정보는 4개의 비트들을 프로세싱할 수 있는 판독 포트, 즉, 쿼드(quad) 판독 포트를 통해 인코더에 제공된다. 외부 프레임 소스 메모리는 일반적으로 하나의 판독 포트이며, 따라서 상기 메모리로부터 직접 프레임을 인코딩하기 위해서는 선택적인 방법이 사용된다. 예시적인 실시예는 각각의 클럭 사이클당 4개의 인코딩된 비트들을 제공하기 위해 클럭 사이클당 다수의 정보 비트들을 반복 처리한다.
CRC 발생기(1134) 및 인코더들(1132 및 1144)은 클럭 사이클당 1 비트 이상의 레이트로 데이터를 동작시킨다. 예시적인 실시예는 병렬 프로세싱을 위해 도처에 AND-XOR 트리 구조를 구현한다. 선택적인 실시예들은 식들(13, 14, 및 15)을 반복 수행하는 임의의 논리적인 구조를 구현할 수 있다. 각각의 AND-XOR 트리는 AND-XOR 트리의 탭들을 결정하는 유일한 2차원 비트들의 어레이로 제공된다. 예를 들면, 인코더들(1132, 1144)을 고려할 때, 각각은 패리티 비트 출력들, 즉 Y0, Y1에 대하여 서로 다른 XOR 탭들을 가지는 내부 3비트 상태를 포함한다. 각각의 인코더(1132, 1144)는 병렬 실행시 클럭 사이클당 4개의 비트들을 인코딩하며, 1/3 레이트 인코더는 클럭당 12 비트들의 데이터, 즉, 4개의 X 비트들, 4개의 Y0 비트들, 4개의 Y1 비트들을 생성할 것이다. 각각의 출력 비트는 모두 4개의 입력 비트들뿐만 아니라 현재 상태에 따라 결정된다. 각각의 인코더는 4비트 출력값들의 다음 두 개의 그룹들뿐만 아니라 다음 3비트 상태를 발생하는 3개의 AND-XOR 트리들을 포함한다. X 출력은 입력으로부터 인코더로 직접 제공되며, AND-XOR 트리를 통해 제공되지는 않는다.
예시적인 실시예에서, 다수의 유효 어드레스들은 클럭 사이클마다 요구된다. 예시적인 실시예에 따라, 다수의 어드레스는 4개의 어드레스를 포함한다. 4개의 독립적인 회로들은 4개의 독립적인 판독 어드레스들을 생성하기 위해 사용된다. 인코더(1144)에 대하여, 4개의 입력 비트들은 클럭 사이클마다 사용된다. 상기 4개의 입력 비트들은 4개의 프레임 메모리들 내의 4개의 서로 다른 인터리버 어드레스 위치들로부터 제공되며, 따라서, 4개의 어드레스 생성기들은 4개의 어드레스를 제공한다.
도 11의 인코더들(1502 및 또는 1552)에 의해 수행되고 도 14의 특정 동작에서 설명되는 반복적인 동작들의 일 예로서 하기의 애플리케이션을 고려하자. 엘리먼트들(1510, 1512, 및 1514)에서 발생하고 저장되는 상태들은 각각 상태들 S0, S1, 및 S2로 식별된다. 주어진 반복을 통해 각각의 상태에 대한 계산은 하기의 식들의 세트에 의해 결정된다.
S0[n+1] = I[n]
Figure 112004025423789-pct00029
S1[n]
Figure 112004025423789-pct00030
S2[n] 식(20)
S1[n+1] = S0[n] 식(21)
S2[n+1] = S1[n] 식(22)
상기 n은 반복 인덱스이다. 인코더(1500)는 반복 0에서 입력에 상응하는 입력 I[0]를 수신한다. 이에 상응하여, 엘리먼트들(1510, 1512, 및 1514)의 각각은 값들 S0[0], S1[0], 및 S2[0]로 초기화된다. 상기 경우에, 반복 n=1에 대하여, 식들은 다음과 같이 구현된다:
S0[1] = I[0]
Figure 112004025423789-pct00031
S1[0]
Figure 112004025423789-pct00032
S2[0] 식(23)
S1[1] = S0[0] 식(24)
S2[1] = S1[0] 식(25)
상기 입력 값들 및 상태값들은 n=0에 대한 값들이다(초기화시). 유사하게, 반복 n=2에서, 반복 n=1로부터의 값들은 엘리먼트들(1510, 1512, 및 1514)에 저장되며 다음과 같은 상태값들을 계산하기 위해 사용된다:
S0[2] = I[1]
Figure 112004025423789-pct00033
S1[1]
Figure 112004025423789-pct00034
S2[1] 식(26)
S1[2] = S0[1] 식(27)
S2[2] = S1[1] 식(28)
이전에 발생한 값들과 관계식들을 사용하여, 식들(26, 27, 및 28)에 의해 다음 식들이 발생한다:
S0[2] = I[1]
Figure 112004025423789-pct00035
S1[1]
Figure 112004025423789-pct00036
S2[1] 식(29)
S0[2] = I[1]
Figure 112004025423789-pct00037
S0[0]
Figure 112004025423789-pct00038
S1[0] 식(30)
S1[2] = S0[1] 식(31)
S1[2] = I[0]
Figure 112004025423789-pct00039
S1[0]
Figure 112004025423789-pct00040
S2[0] 식(32)
S2[2] = S1[1] 식(33)
S2[2] = S0[0] 식(34)
반복 n=3에 대한 결과들은 다음과 같이 제공된다:
S0[3] = I[2]
Figure 112004025423789-pct00041
S1[2]
Figure 112004025423789-pct00042
S2[2] 식(35)
S0[3] = I[2]
Figure 112004025423789-pct00043
(I[0]
Figure 112004025423789-pct00044
S1[0]
Figure 112004025423789-pct00045
S2[0])
Figure 112004025423789-pct00046
S0[0] 식(36)
S1[3] = S0[2] 식(37)
S1[3] = I[1]
Figure 112004025423789-pct00047
S0[0]
Figure 112004025423789-pct00048
S1[0] 식(38)
S2[3] = S1[2] 식(39)
S2[3] = I[0]
Figure 112004025423789-pct00049
S1[0]
Figure 112004025423789-pct00050
S2[0] 식(40)
유사하게, 반복 n=4에 대한 결과들은 다음과 같이 제공된다:
S0[4] = I[3]
Figure 112004025423789-pct00051
S1[3]
Figure 112004025423789-pct00052
S2[3] 식(41)
S0[4] = I[3]
Figure 112004025423789-pct00053
(I[1]
Figure 112004025423789-pct00054
S0[0]
Figure 112004025423789-pct00055
S1[0])
Figure 112004025423789-pct00056
(I[0]
Figure 112004025423789-pct00057
S1[0]
Figure 112004025423789-pct00058
S2[0]) 식(42)
S0[4] = I[0]
Figure 112004025423789-pct00059
(I[1]
Figure 112004025423789-pct00060
I[3]
Figure 112004025423789-pct00061
S0[0])
Figure 112004025423789-pct00062
S2[0] 식(43)
S1[4] = S0[3] 식(44)
S1[4] = I[2]
Figure 112004025423789-pct00063
I[0]
Figure 112004025423789-pct00064
S1[0]
Figure 112004025423789-pct00065
S2[0]
Figure 112004025423789-pct00066
S0[0] 식(45)
S2[4] = S1[3] 식(46)
S2[4] = I[1]
Figure 112009053006658-pct00067
S0[0]
Figure 112009053006658-pct00068
S1[0] 식(47)
임의의 반복들은 인코더 설계 및 동작시 이용될 수 있는 유사한 상태 계산 관계식들을 생성함을 유의하도록 한다.
인코더(1100)의 동작에 연속하여, 제 1 단계 동안, 인코더 내의 메모리들은 동일한 메모리 어드레스들에서 동일한 데이터를 사용하여 기록된다. 제 2 단계 동안, 메모리들은 서로 다른 어드레스들에서 독립적으로 판독된다.
도 12로 다시 돌아가서, 도 12의 회로는 클럭 사이클당 하나의 어드레스를 생성한다. 입력 카운터는 2개의 전원을 가지며, 따라서, 임의의 어드레스들은 터보 인터리버 블럭 크기에 의해 정의되는 범위 이상이 되도록 생성될 수 있다. 무효 어드레스들은 어드레스 생성기에 의해 검출되어 스킵된다(skipped). 파이프라인(pipeline) 레지스터는 동작 속도를 증가시키기 위해 어드레스 생성 회로를 통해 1/2 방향에 삽입된다.
일 실시예에 따른 터보 인터리버 어드레스 생성 회로(1400)는 도 15에 도시되어 있다. 인에이블 신호 및 패킷 크기 표시자는 어드레스 포인터(1402)에 제공된다. 어드레스 포인터(1402)의 출력은 병렬 회로 경로들 및 어드레스 값들을 증분시키기 위해 사용되는 LUT들(1404, 1454)에 제공된다. 덧셈 유닛들(1406, 1456)은 각각의 LUT들(1404, 1454)로부터 수신된 2개의 비트들에 각각 1비트를 추가한다. 덧셈 유닛들(1406, 1456)의 출력들은 합산기(1408, 1458)에 제공된다. 합산 연산의 결과값들은 멀티플렉서들(1410, 1460)에 제공한다. 인에이블 신호는 각각의 멀티플렉서들(1410, 1460)에 제공되며, 각각 12 비트들을 생성한다. 멀티플렉서들(1410, 1460)의 출력들은 지연 엘리먼트(1412, 1462)에 제공되어 합산기들(1408, 1458)로 피드백된다. 지연 엘리먼트들(1412, 1462)의 출력들은 터보 인코더 LUT들(1414, 1464)을 포함하는 지연 엘리먼트들의 네트워크에 제공된다. 지연 엘리먼트들(1412,1462)의 출력의 7개의 MSB들은 지연 엘리먼트(1416, 1466)에 제공된다. 5개의 LSB들은 LUT들(1414, 1464) 및 지연 엘리먼트들(1420, 1470) 모두에 제공된다. 지연 엘리먼트들(1416 및 1418)의 출력들은 지연 엘리먼트(1422)에 접속된 곱셈기의 입력들에 접속된다. 지연 엘리먼트들(1466, 1468)의 출력들은 지연 엘리먼트(1472)에 접속된 곱셈기 게이트의 입력들에 접속된다. 지연 엘리먼트(1420)의 출력은 비트 반전 유닛(1424)에 접속된다. 지연 엘리먼트(1470)의 출력은 비트 반전 유닛(1474)에 접속된다. 결국, 각각의 경로는 지연 엘리먼트(1426, 1476)에 각각 제공된다.
일 실시예에 따라, 유효 어드레스들은 4개의 그룹으로 배분된다. 유효한 어드레스에서 발생하는 각각의 카운터 값들 뿐만 아니라 무효 어드레스에서 발생하는 카운터 값들이 결정된다. 카운터 값들의 어드레스들로의 맵핑은 LUT들(1404, 1454)에 저장된다. 각각의 개별 LUT에 대하여, 카운터 값이 무효 어드레스에 상응하는 값으로 증분할 때, LUT는 유효 어드레스에 상응하는 다음 카운터 값을 제공하기 위해 적절한 오프셋값을 출력한다. 상기 방식에서, 어드레스 생성기는 유효 어드레스들만을 발생한다. 프로세스는 불필요한 어드레스 계산, 즉 이후에 제외되는 무효 어드레스들의 계산을 회피한다.
도 15의 어드레스 생성 회로는 도 16의 인코더(1600)와 같은 인코더 구성에 적용될 수 있다. 인코더(1600)는 인코딩될 프레임을 제공하는 외부 메모리에 응답한다. 5개의 카피들은 입력 데이터로 구성되어 각각 MEM1, MEM2, MEM3, MEM4, 및 MEM5라 지칭되는 메모리들(1622, 1624, 1626, 1628, 및 1630)의 각각에 저장된다. MEM1은 4개의 순차적인 비트들을 인코더(1650)로 제공한다. MEM1 내의 어드레스들은 순차적으로 액세스된다. 인코더(1650)는 X, Y0, 및 Y1의 각각에 대하여 4비트 출력들을 제공한다.
어드레스 생성기들(1632, 1634, 1636, 및 1638)은 MEM2, MEM3, MEM4 및 MEM5에 각각 접속된다. MEM2, MEM3, MEM4 및 MEM5는 각각 인코더(1652)에 한 개의 비트를 제공한다. 인코더(1652)는 또한 X, Y0, 및 Y1의 각각에 대하여 4비트 출력들을 제공한다.
어드레스 생성기들(1632, 1634, 1636, 및 1638)은 관련된 메모리들의 각각에 대한 어드레스 위치들의 유일한 시리즈를 생성한다. 예를 들어, 한가지 방식에서, 어드레스 생성기(1632)는 어드레스 위치들 0, 4, 8 등을 생성하고, 어드레스 생성기(1634)는 어드레스 위치들 1, 5, 9 등을 생성하고, 어드레스 생성기(1636)는 어드레스 위치들 2, 6, 10 등을 생성하고, 어드레스 생성기(1638)는 어드레스 위치들 3, 7, 11 등을 생성한다. 발생한 어드레스들이 인터리버의 블럭 크기를 초과하면, 어드레스 생성기는 상기 어드레스를 스킵한다.
도 17은 병렬 터보 인코더에서 사용되는 것과 같은 인터리빙을 위한 어드레스들을 생성하는 방법(2000)을 도시한다. 방법은 단계(2002)에서 카운터를 증분시킨다. 카운터 값은 도 16에 도시된 실시예와 같은 터보 인코더에서 입력 데이터를 인터리빙하기 위한 어드레스를 생성하기 위해 사용된다. 결정 다이아몬드(2004)에서, 카운터 값은 카운터 값이 무효 어드레스를 생성시킬 것인지의 여부를 결정하도록 검사된다. 무효 어드레스들은 미리 결정되며, 상기 무효 어드레스들에 상응하는 카운터 값들은 메모리 저장 디바이스에 저장된다. 무효 어드레스들은 데이터 패킷의 크기보다 더 큰 어드레스들이다. 만약 카운터 값이 무효 어드레스를 생성하면, 프로세스는 다음 유효 어드레스로 카운터를 조절하기 위해 단계(2006)까지 계속된다. 그 밖의 프로세싱은 원래 발생하거나 조절된 카운터 값에 기초한 어드레스를 생성하기 위해 단계(2008)까지 진행한다. 만약 패킷이 결정 다이아몬드(2010)에서 종료되면, 프로세싱은 종료한다. 그 밖의 프로세싱은 단계(2002)로 복귀한다.
본 발명은 다양한 출력들을 프로세싱하는 반복적인 방법을 사용하여 다수의 비트들을 병렬로 인코딩하는 방법을 제공한다. 각각의 클럭 사이클 동안, 인코더는 다수의 비트들을 처리하며, 종래의 컨벌루션 인코더에서 순차적으로 발생하는 출력들과 일치하는 출력들을 발생한다. 일 실시예에서, 입력 데이터는 다수의 메모리 저장 유닛들에 저장되며, 그 후에 예를 들면, 터보 인코더를 구현하는 두 개의 병렬 인코더에 데이터를 제공하기 위해 유일하게 처리된다.
따라서, 제공된 다양한 출력들을 처리하는 반복적인 방법을 사용하여 다수의 비트들을 병렬로 인코딩하기 위한 신규하고 개선된 방법 및 장치가 제공된다. 어드레스들은 다수의 메모리 저장 디바이스들의 사용에 의한 인터리빙 동작을 위해 발생하며, 상기 인터리버 어드레스들의 발생을 위해 카운터가 사용되고 무효 어드레스들을 식별하기 위해 맵핑이 제공된다. 당업자는 상기 설명을 통해 참조될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 전자기장들, 또는 전자기 입자들, 광학계들 또는 광학 입자들, 또는 그들의 임의의 조합에 의해 표시될 수 있음을 인식할 것이다. 당업자는 또한 본 명세서에 개시된 실시예들과 관련하여 설명된 논리적인 블럭들, 모듈들, 회로들, 및 알고리즘 단계들이 전자하드웨어, 컴퓨터 소프트웨어, 또는 그들의 조합으로서 실행될 수 있음을 인식할 것이다. 다양한 요소들, 블럭들, 모듈들, 회로들, 및 단계들은 일반적으로 그들의 기능성에 관련하여 설명된다. 상기 기능성이 하드웨어로 실행되는지 또는 소프트웨어로 실행되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 따라 결정한다. 당업자는 상기 상황들에서 하드웨어와 소프트웨어의 상호 교환가능성 및 각각의 특정 애플리케이션을 위해 설명된 기능성을 실행하는 방법을 인식할 것이다. 예로써, 본 명세서에서 개시된 실시예와 관련하여 다양하게 설명되는 논리 블럭들, 모듈들, 회로들, 및 알고리즘 단계들은 범용 프로세서, 디지털 신호 처리기(DSP), 응용 집적 회로(ASIC), 현장 프로그램가능한 게이트 어레이(FPGA), 또는 다른 프로그램가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 예를 들면, 레지스터들 및 FIFO와 같은 이산 하드웨어 요소들, 펌웨어 지시들의 세트를 수행하는 프로세서, 임의의 종래의 프로그램가능한 소프트웨어 모듈 및 프로세서, 또는 본 명세서에 개시된 기능을 수행하도록 설계된 그들의 임의의 조합을 사용하여 실행되거나 수행될 수 있다. 프로세서는 유리하게 마이크로프로세서가 될 수 있지만, 선택적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 프로그램가능한 로직 디바이스, 로직 엘리먼트들의 어레이 또는 상태 머신이 될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거가능한 디스크, CD-ROM 또는 당업자에게 공지된 임의의 다른 저장 매체 형태 내에 상주할 수 있다. 예시적인 프로세서는 유리하게 저장 매체로부터 정보를 판독하고 정보를 기록하기 위해 저장 매체에 접속된다. 선택적으로, 저장 매체는 프로세서에 통합된다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수 있다. ASIC은 사용자 터미널 내에 상주할 수 있다. 선택적으로, 프로세서 및 저장 매체는 전화기 또는 사용자 터미널에 상주할 수 있다. 프로세서는 DSP 및 마이크로프로세서의 조합, 또는 DSP 코어와 결합한 두 개의 마이크로프로세서, 등등으로서 실행될 수 있다.
개시된 실시예의 전술된 설명은 당업자가 본 발명을 구현하고 이용하기에 용이하도록 하기 위하여 제공되었다. 이들 실시예에 대한 여러 가지 변형은 당업자에게 자명하며, 여기서 한정된 포괄적인 원리는 본 발명의 사용 없이도 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 설명된 실시예에 한정되는 것이 아니며, 여기에 개시된 원리 및 신규한 특징에 나타낸 가장 넓은 범위에 따른다.

Claims (43)

  1. 무선 통신 시스템에서 인코더의 인터리버에 대한 어드레스들을 생성하는 방법으로서,
    제 1 유효 어드레스에 대응하는 카운터의 제 1 카운터 값을 결정하는 단계;
    상기 제 1 카운터 값으로부터 상기 제 1 유효 어드레스를 생성하는 단계;
    제 2 유효 어드레스에 대응하는 상기 카운터의 제 2 카운터 값을 결정하는 단계; 및
    상기 제 2 카운터 값에 기초하여 상기 제 2 유효 어드레스를 생성하는 단계를 포함하며, 상기 카운터의 카운터 값은 입력 비트들을 인터리빙하기 위한 어드레스를 생성하기 위해 사용되며,
    상기 카운터는 다수의 어드레스 생성기들 각각과 연결되고, 대응하는 카운터 오프셋 값들을 가지는 다수의 카운터 값들은 상기 어드레스 생성기의 메모리 저장 디바이스에 저장되고, 상기 제 2 카운터 값은 상기 제 1 카운터 값에 카운터 오프셋을 더함으로써 결정되는, 어드레스들을 생성하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 카운터 값과 상기 제 2 카운터 값은 유효 어드레스들에 대응하는 카운터 값들의 세트에 포함되는, 어드레스들을 생성하는 방법.
  3. 제 2 항에 있어서,
    상기 어드레스 생성 단계는 상기 카운터 값에 오프셋을 더하는 단계를 포함하는, 어드레스들을 생성하는 방법.
  4. 삭제
  5. 삭제
  6. 무선 통신 시스템에서 인터리버에 대한 어드레스 생성 장치로서,
    제 1 유효 어드레스에 대응하는 카운터의 제 1 카운터 값을 결정하기 위한 수단;
    상기 제 1 카운터 값으로부터 상기 제 1 유효 어드레스를 생성하기 위한 수단;
    제 2 유효 어드레스에 대응하는 상기 카운터의 제 2 카운터 값을 결정하기 위한 수단; 및
    상기 제 2 카운터 값에 기초하여 상기 제 2 유효 어드레스를 생성하기 위한 수단을 포함하며, 상기 카운터의 카운터 값은 입력 비트들을 인터리빙하기 위한 어드레스를 생성하기 위해 사용되며,
    상기 카운터는 다수의 어드레스 생성기들 각각과 연결되고, 대응하는 카운터 오프셋 값들을 가지는 다수의 카운터 값들은 상기 어드레스 생성기의 메모리 저장 디바이스에 저장되고, 상기 제 2 카운터 값은 상기 제 1 카운터 값에 카운터 오프셋을 더함으로써 결정되는, 어드레스 생성 장치.
  7. 삭제
  8. 무선 통신 시스템에서 인터리버에 대한 어드레스 생성 장치로서,
    입력 비트들을 인터리빙하기 위한 어드레스를 생성하기 위해 사용되는 카운터; 및
    상기 카운터에 각각 연결된 다수의 어드레스 생성기들을 포함하며, 상기 다수의 어드레스 생성기들 각각은,
    상기 카운터에 연결되며, 대응하는 카운터 오프셋 값들을 갖는 다수의 카운터 값들을 저장하는 메모리 저장 디바이스; 및
    상기 메모리 저장 디바이스에 연결되며, 이전에 생성된 어드레스에 상기 카운터 오프셋 값을 더하기 위한 제 2 카운터를 포함하는, 어드레스 생성 장치.
  9. 제 8 항에 있어서,
    상기 제 2 카운터는,
    상기 메모리 저장 디바이스에 연결된 제 1 입력을 갖는 합산기;
    상기 합산기의 출력에 연결되는 제 1 입력 및 미리 결정된 초기값에 연결되는 제 2 입력을 가지는 멀티플렉서; 및
    상기 멀티플렉서의 출력에 연결되며, 상기 합산기의 제 2 입력에 연결되는 출력을 갖는 제 2 메모리 저장 디바이스를 포함하는, 어드레스 생성 장치.
  10. 제 9 항에 있어서,
    상기 메모리 저장 디바이스와 상기 제 2 카운터 사이에 연결되며, 상기 메모리 저장 디바이스의 출력에 미리 결정된 값을 추가하는 부가 회로를 더 포함하는, 어드레스 생성 장치.
  11. 제 10 항에 있어서,
    상기 제 1 메모리 저장 디바이스는 검색(lookup) 테이블인, 어드레스 생성 장치.
  12. 데이터 인코더로서,
    입력 정보 비트들을 인터리빙하기 위한 어드레스를 생성하기 위해 사용되는 카운터;
    다수의 메모리들 ― 상기 메모리들 각각은 동일한 연속적인(sequential) 입력 정보 비트들을 저장함 ―;
    상기 메모리들 중 하나에 연결되며, 상기 연속적인 입력 정보 비트들을 인코딩하기 위한 제 1 인코더;
    상기 카운터 및 상기 메모리들 중 나머지 메모리들로 연결되는 다수의 어드레스 생성기들 ― 상기 어드레스 생성기들은 상기 연속적인 입력 정보 비트들을 스크램블링하기 위해 이전에 생성된 어드레스에 카운터 오프셋 값들을 더함으로써 상기 메모리들 중 나머지 메모리들 각각에 대한 고유한 어드레스들을 생성함 ―; 및
    상기 메모리들 중 나머지 메모리들로 연결되며, 스크램블링된 입력 정보 비트들을 인코딩하기 위한 제 2 인코더를 포함하는, 데이터 인코더.
  13. 제 12 항에 있어서,
    상기 제 1 인코더 및 상기 제 2 인코더는 시스템 클럭 사이클당 다수의 비트들을 처리하는, 데이터 인코더.
  14. 제 13 항에 있어서,
    상기 제 1 인코더 및 상기 제 2 인코더는 다수의 AND-XOR 트리들을 포함하는, 데이터 인코더.
  15. 제 14 항에 있어서,
    상기 제 1 인코더 및 상기 제 2 인코더는 다수의 비트들을 반복적으로 처리하는, 데이터 인코더.
  16. 인코더를 사용하여 데이터를 인코딩하는 방법으로서,
    상기 인코더에서 다수의 입력 정보 비트들을 수신하는 단계;
    상기 다수의 입력 정보 비트들에 기초하여 상기 인코더에 대한 지연 엘리먼트 상태 값들의 제 1 세트를 계산하는 단계; 및
    상기 상태 값들의 제 1 세트와 상기 다수의 입력 정보 비트들을 사용하여 인코딩된 출력 값들의 제 1 세트를 생성하고, 반복적으로
    Figure 112009053006658-pct00092
    ; 및
    Figure 112009053006658-pct00093
    를 적용하는 단계를 포함하며,
    I는 입력 정보 비트를 표시하고, S0 및 S1은 제 1 및 제 2 지연 엘리먼트들의 상태 값들을 표시하고, Y0은 제 1 패리티 비트 출력이고, Y1은 제 2 패리티 비트 출력이고,
    Figure 112009053006658-pct00094
    는 디지털 논리 XOR 연산을 표시하며,
    S0[n+1] = I[n]
    Figure 112009053006658-pct00095
    S1[n]
    Figure 112009053006658-pct00096
    S2[n];
    S1[n+1] = S0[n]; 및
    S2[n+1] = S1[n]이며,
    S2는 제 3 지연 엘리먼트의 상태 값이고, "n"은 반복 인덱스인, 데이터를 인코딩하는 방법.
  17. 제 16 항에 있어서,
    상기 방법은 시스템 클럭 사이클당 다수의 입력 정보 비트들 I를 처리하는, 데이터를 인코딩하는 방법.
  18. 제 17 항에 있어서,
    상기 인코딩된 출력 값들의 제 1 세트는 I, Y0 Y1 을 포함하며, Y0 는 다수 비트 제 1 패리티 비트 출력을 표시하고, Y1 은 다수 비트 제 2 패리티 비트 출력을 표시하는, 데이터를 인코딩하는 방법.
  19. 제 16 항에 있어서,
    상기 다수의 입력 정보 비트들은 I=I[0]:I[3]으로서 표시되며,
    상기 방법은 개별적인 시스템 클록 사이클 동안 상기 지연 엘리먼트 상태 값들 S0[0]:S0[3], S1[0]:S1[3], S2[0]:S2[3]을 결정하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  20. 제 19 항에 있어서,
    메모리 저장 디바이스에 상기 지연 엘리먼트 상태 값들을 저장하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  21. 제 17 항에 있어서,
    상기 입력 정보 비트들은 상기 인코더에 동시에 제공되는, 데이터를 인코딩하는 방법.
  22. 제 16 항에 있어서,
    상기 인코더는 터보 인코더에 있는 컨벌루션 인코더인, 데이터를 인코딩하는 방법.
  23. 제 22 항에 있어서,
    상기 터보 인코더는 상기 인코더와 병렬로 위치하는 제 2 컨벌루션 인코더 및 상기 제 2 컨벌루션 인코더에 선행하는 인터리버를 포함하며,
    상기 방법은,
    상기 다수의 입력 정보 비트들을 인터리빙하는 단계;
    상기 다수의 인터리빙된 입력 정보 비트들에 기초하여 상기 제 2 컨벌루션 인코더에 대한 지연 엘리먼트 상태 값들의 제 1 세트를 계산하는 단계; 및
    상기 다수의 인터리빙된 입력 정보 비트들 및 상기 제 2 컨벌루션 인코더에 대한 상기 지연 엘리먼트 상태 값들의 제 1 세트를 사용하여 인코딩된 출력 값들의 제 2 세트를 생성하는 단계를 포함하는, 데이터를 인코딩하는 방법.
  24. 제 23 항에 있어서,
    상기 인터리빙하는 단계는,
    상기 다수의 입력 정보 비트들을 어드레스들의 시퀀스에 있는 하나의 어레이로서 기록하는 기능; 및 상기 다수의 입력 정보 비트들을 판독하기 위해 출력 어드레스들의 다른 시퀀스를 생성하는 기능을 수행하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  25. 제 23 항 또는 제 24 항에 있어서,
    상기 인터리빙하는 단계는,
    카운터를 증분(increment)시키는 단계 ― 카운터 값은 입력 데이터를 인터리빙하기 위한 어드레스를 생성하기 위해 사용됨 ―;
    상기 카운터 값이 무효(invalid) 어드레스를 출력할 것인지 여부를 결정하는 단계 ― 무효 어드레스들은 메모리 저장 디바이스에 저장됨 ―;
    상기 카운터 값이 무효 어드레스를 출력할 것이라면, 상기 카운터를 다음 유효 어드레스로 조절하는 단계; 및
    상기 카운터 값에 기초하여 어드레스를 생성하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  26. 제 25 항에 있어서,
    무효 어드레스는 데이터 패킷보다 큰, 데이터를 인코딩하는 방법.
  27. 제 25 항에 있어서,
    유효 어드레스들로의 카운터 값들의 매핑은 검색 테이블(LUT)에 저장되는, 데이터를 인코딩하는 방법.
  28. 제 23 항에 있어서,
    상기 인터리빙하는 단계는,
    카운터로부터 카운터 값을 수신하는 단계;
    상기 카운터 값으로부터 최상위 비트(MSB) 정보를 결정하는 단계;
    상기 MSB 정보를 증분시키는 단계;
    상기 카운터 값으로부터 최하위 비트(LSB) 정보를 결정하는 단계;
    검색 테이블(LUT)을 어드레싱하기 위해 상기 LSB 정보를 사용하는 단계 ― 상기 LUT는 카운터 값들의 어드레스들로의 매핑을 저장함 ―;
    곱(product)을 생성하기 위해 상기 LSB 정보에 의해 어드레싱된 상기 LUT의 위치에 저장된 값과 상기 증분된 MSB 정보를 곱하는 단계;
    상기 LSB 정보를 비트 반전시키는 단계; 및
    상기 비트 반전된 LSB 정보 및 상기 곱에 기초하여 출력 어드레스를 생성하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  29. 제 28 항에 있어서,
    생성된 출력 어드레스가 유효한지 여부를 결정하는 단계; 및
    상기 생성된 출력 어드레스가 유효하지 않으면, 상기 생성된 출력 어드레스를 버리는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  30. 인코더 장치로서,
    다수의 입력 정보 비트들을 수신하기 위한 수단;
    상기 다수의 입력 정보 비트들에 기초하여 지연 엘리먼트 상태 값들의 제 1 세트를 계산하기 위한 수단; 및
    상기 상태 값들의 제 1 세트와 상기 다수의 입력 정보 비트들을 사용하여 인코딩된 출력 값들의 제 1 세트를 생성하고, 반복적으로
    Figure 112009053006658-pct00097
    ; 및
    Figure 112009053006658-pct00098
    를 적용하기 위한 수단을 포함하며,
    I는 입력 정보 비트를 표시하고, S0 및 S1은 제 1 및 제 2 지연 엘리먼트들의 상태 값들을 표시하고, Y0은 제 1 패리티 비트 출력이고, Y1은 제 2 패리티 비트 출력이고,
    Figure 112009053006658-pct00099
    는 디지털 논리 XOR 연산을 표시하며,
    S0[n+1] = I[n]
    Figure 112009053006658-pct00100
    S1[n]
    Figure 112009053006658-pct00101
    S2[n];
    S1[n+1] = S0[n]; 및
    S2[n+1] = S1[n]이며,
    S2는 제 3 지연 엘리먼트의 상태 값이고, "n"은 반복 인덱스인, 인코더 장치.
  31. 제 30 항에 있어서,
    상기 인코더 장치는 시스템 클럭 사이클당 다수의 입력 정보 비트들 I를 처리하도록 구성되는, 인코더 장치.
  32. 제 31 항에 있어서,
    상기 인코딩된 출력 값들의 제 1 세트는 I, Y0 Y1 을 포함하며, Y0 는 다수 비트 제 1 패리티 비트 출력을 표시하고, Y1 은 다수 비트 제 2 패리티 비트 출력을 표시하는, 인코더 장치.
  33. 제 30 항에 있어서,
    상기 다수의 입력 정보 비트들은 I=I[0]:I[3]으로서 표시되며,
    상기 장치는 개별적인 시스템 클록 사이클 동안 상기 지연 엘리먼트 상태 값들 S0[0]:S0[3], S1[0]:S1[3], S2[0]:S2[3]을 결정하도록 구성되는, 인코더 장치.
  34. 제 33 항에 있어서,
    상기 지연 엘리먼트 상태 값들을 저장하기 위한 수단을 더 포함하는, 인코더 장치.
  35. 제 31 항에 있어서,
    상기 입력 정보 비트들은 상기 인코더에 동시에 제공되는, 인코더 장치.
  36. 제 30 항에 있어서,
    상기 장치는 터보 인코딩을 위한 제 1 컨벌루션 인코더를 포함하는, 인코더 장치.
  37. 제 36 항에 있어서,
    상기 장치는,
    상기 제 1 컨벌루션 인코더와 병렬로 위치하는 제 2 컨벌루션 인코더;
    상기 다수의 입력 정보 비트들을 인터리빙하도록 구성된, 상기 제 2 컨벌루션 인코더에 선행하는 인터리버;
    상기 다수의 인터리빙된 입력 정보 비트들에 기초하여 상기 제 2 컨벌루션 인코더에 대한 지연 엘리먼트 상태 값들의 제 1 세트를 계산하기 위한 수단; 및
    상기 다수의 인터리빙된 입력 정보 비트들 및 상기 제 2 컨벌루션 인코더에 대한 상기 지연 엘리먼트 상태 값들의 제 1 세트를 사용하여 인코딩된 출력 값들의 제 2 세트를 생성하기 위한 수단을 포함하는, 인코더 장치.
  38. 제 37 항에 있어서,
    상기 인터리버는,
    상기 다수의 입력 정보 비트들을 어드레스들의 시퀀스에 있는 하나의 어레이로서 기록하는 기능; 및 상기 다수의 입력 정보 비트들을 판독하기 위해 출력 어드레스들의 다른 시퀀스를 생성하는 기능을 수행하기 위한 수단을 더 포함하는, 인코더 장치.
  39. 제 37 항 또는 제 38 항에 있어서,
    상기 인터리버는,
    카운터를 증분시키기 위한 수단 ― 카운터 값은 입력 데이터를 인터리빙하기 위한 어드레스를 생성하기 위해 사용됨 ―;
    상기 카운터 값이 무효 어드레스를 출력할 것인지 여부를 결정하기 위한 수단 ― 무효 어드레스들은 메모리 저장 디바이스에 저장됨 ―;
    상기 카운터 값이 무효 어드레스를 출력할 것이라면, 상기 카운터를 다음 유효 어드레스로 조절하기 위한 수단; 및
    상기 카운터 값에 기초하여 어드레스를 생성하기 위한 수단을 더 포함하는, 인코더 장치.
  40. 제 39 항에 있어서,
    무효 어드레스는 데이터 패킷보다 큰, 인코더 장치.
  41. 제 39 항에 있어서,
    유효 어드레스들로의 카운터 값들의 매핑은 검색 테이블(LUT)에 저장되는, 인코더 장치.
  42. 제 37 항에 있어서,
    상기 인터리버는,
    카운터로부터 카운터 값을 수신하기 위한 수단;
    상기 카운터 값으로부터 최상위 비트(MSB) 정보를 결정하기 위한 수단;
    상기 MSB 정보를 증분시키기 위한 수단;
    상기 카운터 값으로부터 최하위 비트(LSB) 정보를 결정하기 위한 수단;
    검색 테이블(LUT)을 어드레싱하기 위해 상기 LSB 정보를 사용하기 위한 수단 ― 상기 LUT는 카운터 값들의 어드레스들로의 매핑을 저장함 ―;
    곱(product)을 생성하기 위해 상기 LSB 정보에 의해 어드레싱된 상기 LUT의 위치에 저장된 값과 상기 증분된 MSB 정보를 곱하기 위한 수단;
    상기 LSB 정보를 비트 반전시키기 위한 수단; 및
    상기 비트 반전된 LSB 정보 및 상기 곱에 기초하여 출력 어드레스를 생성하기 위한 수단을 더 포함하는, 인코더 장치.
  43. 제 42 항에 있어서,
    생성된 출력 어드레스가 유효한지 여부를 결정하기 위한 수단; 및
    상기 생성된 출력 어드레스가 유효하지 않으면, 상기 생성된 출력 어드레스를 버리기 위한 수단을 더 포함하는, 인코더 장치.
KR1020047009163A 2001-12-14 2002-12-12 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치 KR101046289B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/020,532 2001-12-14
US10/020,532 US6954885B2 (en) 2001-12-14 2001-12-14 Method and apparatus for coding bits of data in parallel
PCT/US2002/040049 WO2003052997A2 (en) 2001-12-14 2002-12-12 Method and apparatus for coding bits of data in parallel

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020107011555A Division KR20100080847A (ko) 2001-12-14 2002-12-12 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20040065268A KR20040065268A (ko) 2004-07-21
KR101046289B1 true KR101046289B1 (ko) 2011-07-04

Family

ID=21799121

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020047009163A KR101046289B1 (ko) 2001-12-14 2002-12-12 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치
KR1020107011555A KR20100080847A (ko) 2001-12-14 2002-12-12 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107011555A KR20100080847A (ko) 2001-12-14 2002-12-12 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치

Country Status (10)

Country Link
US (1) US6954885B2 (ko)
EP (2) EP1459450B1 (ko)
JP (4) JP4326956B2 (ko)
KR (2) KR101046289B1 (ko)
CN (1) CN100481738C (ko)
AU (1) AU2002361684A1 (ko)
BR (1) BR0214915A (ko)
ES (1) ES2474215T3 (ko)
TW (1) TWI306698B (ko)
WO (1) WO2003052997A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10207146A1 (de) * 2002-02-20 2003-08-28 Infineon Technologies Ag Hardware-Schaltung zur Punktierung und Wiederholungscodierung von Datenströmen und Verfahren zum Betrieb der Hardware-Schaltung
US7318189B2 (en) * 2002-08-01 2008-01-08 Zarbana Digital Fund Llc Parallel convolutional encoder
US7738596B2 (en) * 2002-09-13 2010-06-15 Broadcom Corporation High speed data service via satellite modem termination system and satellite modems
US20040267968A1 (en) * 2003-06-25 2004-12-30 Agilent Technologies Belgium S.A./N.V Implementation of a column interleaving function with a limited amount of columns
US7315549B2 (en) * 2003-07-24 2008-01-01 Intel Corporation Formatting data for a buffer
US7305593B2 (en) * 2003-08-26 2007-12-04 Lsi Corporation Memory mapping for parallel turbo decoding
US7600163B2 (en) * 2003-09-23 2009-10-06 Realtek Semiconductor Corp. Convolutional interleaver and deinterleaver
US7712004B1 (en) * 2003-09-30 2010-05-04 Emc Corporation Method of and system for error checking in a data storage system
KR101050570B1 (ko) * 2003-12-03 2011-07-19 삼성전자주식회사 시공간 트렐리스 코드를 사용하는 이동 통신 시스템에서 성능 개선을 위한 데이터 송수신 장치 및 방법
KR100762134B1 (ko) 2004-10-07 2007-10-02 엘지전자 주식회사 블록 인터리빙을 위한 읽기 주소 발생 방법
EP1880473A2 (en) * 2005-01-14 2008-01-23 Nxp B.V. Channel encoding with two tables containing two sub-systems of a z system
US7340669B2 (en) * 2005-03-11 2008-03-04 Via Telecom Co., Ltd. Memory efficient streamlined transmitter with a multiple instance hybrid ARQ
US7219292B2 (en) * 2005-04-14 2007-05-15 Industrial Technology Research Institute Cyclic redundancy check modification for length detection of message with convolutional protection
FR2896359A1 (fr) * 2006-01-19 2007-07-20 France Telecom Procede d'encodage et de decodage rapides et dispositifs associes.
KR20070080921A (ko) * 2006-02-09 2007-08-14 삼성전자주식회사 통신시스템에서 인터리빙 장치 및 방법
US7962827B2 (en) * 2006-03-08 2011-06-14 Marvell World Trade Ltd. Systems and methods for achieving higher coding rate using parity interleaving
US8493973B2 (en) * 2006-04-04 2013-07-23 Samsung Electronics Co., Ltd. Method of and apparatus for transmitting digital broadcasting signal in advanced-VSB (A-VSB) system in which transport packet without adaptation field is provided at fixed location in data field slices
US7830957B2 (en) * 2006-05-02 2010-11-09 Qualcomm Incorporated Parallel bit interleaver for a wireless system
US20080120530A1 (en) * 2006-11-22 2008-05-22 Yu-Min Chuang Transceiver puncture circuit of wireless communication system
US8140946B2 (en) * 2007-03-27 2012-03-20 Hughes Network Systems, Llc Method and apparatus for generating low rate turbo codes
US8156413B2 (en) 2007-11-28 2012-04-10 Qualcomm Incorporated Convolutional encoding with partitioned parallel encoding operations
CN101286816B (zh) * 2008-03-05 2011-05-18 中国科学院嘉兴无线传感网工程中心 一种应用于多媒体传感网的并行信道编码装置
JP4935778B2 (ja) * 2008-08-27 2012-05-23 富士通株式会社 符号化装置、送信装置および符号化方法
US8397123B2 (en) * 2009-09-30 2013-03-12 Qualcomm Incorporated Recursive realization of polynomial permutation interleaving
JP5499760B2 (ja) * 2010-02-23 2014-05-21 富士通株式会社 符号化装置
EP2525497A1 (en) * 2011-05-18 2012-11-21 Panasonic Corporation Bit-interleaved coding and modulation (BICM) with quasi-cyclic LDPC codes
EP2525495A1 (en) * 2011-05-18 2012-11-21 Panasonic Corporation Bit-interleaved coding and modulation (BICM) with quasi-cyclic LDPC codes
US9892188B2 (en) * 2011-11-08 2018-02-13 Microsoft Technology Licensing, Llc Category-prefixed data batching of coded media data in multiple categories
EP2693673A1 (en) * 2012-08-01 2014-02-05 Alcatel Lucent Bit-interleaver for an optical line terminal
JP5918378B2 (ja) * 2012-09-21 2016-05-18 日本電信電話株式会社 並列データ符号復号化システム
EP2899991A1 (en) * 2014-01-24 2015-07-29 Alcatel Lucent Space time switch and bit interleaver
US9577854B1 (en) * 2015-08-20 2017-02-21 Micron Technology, Inc. Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding
KR102359265B1 (ko) 2015-09-18 2022-02-07 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법
WO2017116293A1 (en) * 2015-12-31 2017-07-06 Telefonaktiebolaget Lm Ericsson (Publ) Communication device and method therein for transmitting data packets in a wireless communication network
US11071162B2 (en) * 2017-03-20 2021-07-20 Qualcomm Incorporated Broadcast or multicast physical layer configuration and channel structure
FR3113214A1 (fr) * 2020-07-31 2022-02-04 Airbus Defence And Space Sas Dispositif et procédé d’encodage de codes LDPC
CN112290952B (zh) * 2020-10-10 2023-07-18 中科驭数(北京)科技有限公司 一种并行数据编码装置及方法
US12021548B2 (en) 2022-05-10 2024-06-25 Samsung Display Co., Ltd. System and method for efficient transition encoding for decimation CDR

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001020787A1 (en) 1999-09-15 2001-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Parallel turbo coder implementation

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488142A (en) * 1981-12-31 1984-12-11 International Business Machines Corporation Apparatus for encoding unconstrained data onto a (1,7) format with rate 2/3
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US4922507A (en) * 1987-12-01 1990-05-01 California Institute Of Technology Multiple trellis coded modulation
US5101501A (en) 1989-11-07 1992-03-31 Qualcomm Incorporated Method and system for providing a soft handoff in communications in a cdma cellular telephone system
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
US5392037A (en) * 1991-05-21 1995-02-21 Matsushita Electric Industrial Co., Ltd. Method and apparatus for encoding and decoding
US5592492A (en) * 1994-05-13 1997-01-07 Lsi Logic Corporation Convolutional interleaving/de-interleaving method and apparatus for data transmission
US5675590A (en) * 1994-11-23 1997-10-07 At&T Wireless Services, Inc. Cyclic trellis coded modulation
US6023783A (en) * 1996-05-15 2000-02-08 California Institute Of Technology Hybrid concatenated codes and iterative decoding
US5912898A (en) * 1997-02-27 1999-06-15 Integrated Device Technology, Inc. Convolutional interleaver/de-interleaver
KR100237745B1 (ko) * 1997-05-23 2000-01-15 김영환 회전형 인터리버/디인터리버의 메모리 주소 발생장치 및 그 방법
JP3277856B2 (ja) * 1997-08-29 2002-04-22 日本電気株式会社 ビタビデコーダ
US6028541A (en) * 1998-03-12 2000-02-22 Liquid Audio Inc. Lossless data compression with low complexity
US6178530B1 (en) * 1998-04-24 2001-01-23 Lucent Technologies Inc. Addressing scheme for convolutional interleaver/de-interleaver
JP2000068863A (ja) * 1998-08-19 2000-03-03 Fujitsu Ltd 符号化装置及びその方法
JP3612022B2 (ja) 1998-08-27 2005-01-19 ヒューズ・エレクトロニクス・コーポレーション 一般的なターボコードトレリスの終端方法
JP2000114986A (ja) * 1998-10-08 2000-04-21 Oki Electric Ind Co Ltd 符号化方法及び装置
US6304991B1 (en) * 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6625234B1 (en) * 1998-12-10 2003-09-23 Nortel Networks Limited Efficient implementations of proposed turbo code interleavers for third generation code division multiple access
US6463556B1 (en) * 1999-01-04 2002-10-08 Motorola, Inc. Method and apparatus for interleaving in a communication system
EP1650873B1 (en) * 1999-02-26 2011-05-11 Fujitsu Ltd. Turbo decoding apparatus and interleave-deinterleave apparatus
JP2000286722A (ja) * 1999-03-30 2000-10-13 Kokusai Electric Co Ltd インターリーバ
JP3246471B2 (ja) * 1999-03-31 2002-01-15 日本電気株式会社 マルチレート送信装置
US6314534B1 (en) * 1999-03-31 2001-11-06 Qualcomm Incorporated Generalized address generation for bit reversed random interleaving
KR100480286B1 (ko) * 1999-04-02 2005-04-06 삼성전자주식회사 터보 인터리빙 어드레스 발생 장치 및 방법
WO2000064058A1 (fr) * 1999-04-16 2000-10-26 Fujitsu Limited Codeur et decodeur
KR100526512B1 (ko) * 1999-05-20 2005-11-08 삼성전자주식회사 이동 통신시스템의 직렬 쇄상 컨볼루션 부호화를 위한 인터리빙장치 및 방법
JP3345396B2 (ja) * 1999-10-07 2002-11-18 松下電器産業株式会社 インターリーブアドレス生成装置及びインターリーブアドレス生成方法
US6549998B1 (en) * 2000-01-14 2003-04-15 Agere Systems Inc. Address generator for interleaving data
JP2001332980A (ja) * 2000-05-19 2001-11-30 Sony Corp インタリーブ装置及びインタリーブ方法
US6854077B2 (en) * 2000-08-05 2005-02-08 Motorola, Inc. Apparatus and method for providing turbo code interleaving in a communications system
SG97926A1 (en) * 2000-08-29 2003-08-20 Oki Techno Ct Singapore Pte Soft-in soft-out decoder used for an iterative error correction decoder
US6845482B2 (en) * 2001-02-28 2005-01-18 Qualcomm Incorporated Interleaver for turbo decoder
US6701482B2 (en) * 2001-09-20 2004-03-02 Qualcomm Incorporated Method and apparatus for coding bits of data in parallel
US6871270B2 (en) * 2001-12-03 2005-03-22 Samsung Electronics Co., Ltd. Device and method for minimizing puncturing-caused output delay

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001020787A1 (en) 1999-09-15 2001-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Parallel turbo coder implementation

Also Published As

Publication number Publication date
AU2002361684A1 (en) 2003-06-30
US6954885B2 (en) 2005-10-11
KR20100080847A (ko) 2010-07-12
BR0214915A (pt) 2004-12-07
TW200301624A (en) 2003-07-01
JP2015159582A (ja) 2015-09-03
JP5886235B2 (ja) 2016-03-16
ES2474215T3 (es) 2014-07-08
JP2005513867A (ja) 2005-05-12
EP2251982A1 (en) 2010-11-17
EP1459450B1 (en) 2014-03-19
CN100481738C (zh) 2009-04-22
JP4326956B2 (ja) 2009-09-09
JP2013176114A (ja) 2013-09-05
WO2003052997A2 (en) 2003-06-26
US20030140304A1 (en) 2003-07-24
CN1618175A (zh) 2005-05-18
KR20040065268A (ko) 2004-07-21
WO2003052997A3 (en) 2003-10-09
EP1459450A2 (en) 2004-09-22
JP2009194916A (ja) 2009-08-27
JP6077041B2 (ja) 2017-02-08
TWI306698B (en) 2009-02-21
AU2002361684A8 (en) 2003-06-30

Similar Documents

Publication Publication Date Title
KR101046289B1 (ko) 데이터 비트들을 병렬로 코딩하기 위한 방법 및 장치
KR100898467B1 (ko) 데이터를 병렬로 인코딩하기 위한 방법 및 장치
KR100860245B1 (ko) 코드 분할 다중 접속 시스템에서 역 레이트 매칭을수행하는 방법 및 장치
JP5133760B2 (ja) ランダムアクセスマルチ方向cdma2000のターボコードインターリーバ
KR100963718B1 (ko) 터보 디코더용 버퍼 아키텍처
EP2267903A2 (en) Turbo code interleaver using linear congruential sequences
EP1695443B1 (en) Multi-standard turbo interleaver using tables
KR100468249B1 (ko) 인터리브 어드레스 생성 장치, 터보 부호화 장치, 터보 복호화 장치, 통신 단말 장치, 기지국 장치 및 인터리브 어드레스 생성 방법
JP3345396B2 (ja) インターリーブアドレス生成装置及びインターリーブアドレス生成方法
AU2003204597B2 (en) Rate matching device and method for a data communication system
EP1950902A2 (en) Forward error correction scheme for data channels using turbo codes
WO2004095766A1 (en) Communication unit and method of encoding/decoding data therein

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20100426

Effective date: 20110318

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 9