KR20080095908A - Ldpc 인코딩 방법 및 장치 - Google Patents

Ldpc 인코딩 방법 및 장치 Download PDF

Info

Publication number
KR20080095908A
KR20080095908A KR1020087022801A KR20087022801A KR20080095908A KR 20080095908 A KR20080095908 A KR 20080095908A KR 1020087022801 A KR1020087022801 A KR 1020087022801A KR 20087022801 A KR20087022801 A KR 20087022801A KR 20080095908 A KR20080095908 A KR 20080095908A
Authority
KR
South Korea
Prior art keywords
code
information
encoder
description information
encoding
Prior art date
Application number
KR1020087022801A
Other languages
English (en)
Other versions
KR100905814B1 (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 KR20080095908A publication Critical patent/KR20080095908A/ko
Application granted granted Critical
Publication of KR100905814B1 publication Critical patent/KR100905814B1/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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • 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/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • 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/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 적응성이 있고 상대적으로 하드웨어 효율적인 LDPC 인코더에 관한 것이다. 인코더는 인코딩 프로세스를 제어하기 위해 사용되는 코드 구조의 전체 병렬 계산보다 적은 병렬 계산의 레벨로 실행될 수 있다. 코드 구조를 설명하기 위해 사용된 상대적으로 간단한 마이크로코드의 각각의 명령은 코드워드의 인코딩을 완료하기 위해 수차례 저장되고 실행된다. 상이한 코드워드 길이는 동일한 세트의 마이크로코드 명령을 이용하여 지원될 수 있지만, 코드는 사용하기 위해 선택된 리프팅 팩터에 따라 상이한 회수로 실행된다. LDPC 인코더는 인코딩 프로세스를 제어하기 위해 사용된 코드 리프팅 팩터를 간단히 변화시킴으로써, 저장된 코드 서술 정보를 변화시킬 필요 없이 상이한 길이의 인코딩 코드워드들 사이에서 스위칭될 수 있다. 최대 지원 코드워드 길이보다 짧은 코드워드를 코딩시, 소정의 블록 저장 위치 및/또는 레지스터가 사용되지 않을 수도 있다.

Description

LDPC 인코딩 방법 및 장치{LDPC ENCODING METHODS AND APPARATUS}
본 발명은 예를 들어, 저-밀도(low-density) 패러티-검사(LDPC) 코드들과 같은 패러티 검사 코드들을 사용하여, 에러들을 검출 및/또는 정정을 용이하도록 하기 위해 데이터를 인코딩하는 방법 및 장치에 관한 것이다.
에러 정정 코드들은 통신 및 데이터 저장 시스템들에서 널리 사용된다. 에러 정정 코드들은 데이터 스트림에 리던던시를 도입함으로써 이러한 시스템들에서 정보 전달시에 내재하는 비신뢰성 문제를 보상해 준다. 최근에, 저-밀도 패러티-검사(LDPC) 코드로 알려진 한 클래스의 코드들에 대한 관심이 증가하였다. LDPC 코드들은 우수한 코드로 입증되었다. 다양한 채널들에서, LDPC 코드들은 채널 용량-클라우드 새논에 의해 설정된 전송에 대한 상한-에 매우 근접한 것으로 입증되었다.
LDPC 코드들은 종종 태너(Tanner) 그래프로 지칭되는 2분(bipartite) 그래프들로 표현되고, 여기서 한 세트의 노드들(가변 노드들)은 코드워드들의 비트들에 대응하고, 나머지 한 세트의 노드들(제약 노드들, 종종 검사 노드로 지칭됨)은 코드를 정의하는 한 세트의 패러티-검사 제약(constraints)들에 대응한다. 그래프의 에지들은 가변 노드들을 제약 노드들에 연결한다. 가변 노드(variable node) 및 제약 노드(constraint node)는 이들이 그래프 에지에 의해 연결되는 경우 이웃(neighbors)들로 지칭된다.
각 제약 노드에 있어서, 그 제약 노드에 이웃하는 비트들(가변 노드들과의 관련을 통해)이 0 모듈로 2로 합산되는 경우, 즉 이들은 짝수를 포함하는 경우에만, 가변 노드들과 일 대 일로 관련되는 비트 시퀀스가 그 코드의 코드워드이다.
길이 10 및 레이트 1/2의 예시적인 (3,6) 정규 LDPC 코드를 결정하는 2분 그래프(100)가 도1에 제시된다. 길이 10은 10개의 가변 노드들 V1-V10이 존재함을 의미하고, 이들 각각은 1 비트의 코드워드 X1-X10로 식별된다. 가변 노드들 세트 V1-V10은 도면 부호(102)에 의해 도1에서 식별된다. 레이트 1/2는 가변 노드의 절반 만큼의 검사 노드가 존재함을 의미하고, 즉 도면 부호(106)에 의해 식별되는 5개의 검사 노드들 C1-C5가 존재한다. 레이트 1/2는 또한 5개의 제약들이 선형적으로 독립적임을 의미한다. 예시적인 2분 그래프(100)는 에지(104)를 포함하고, 여기서 예시적인 (3,6) 정규 LDPC 코드는 각각의 가변 노드에 연결된 3개의 에지들 및 각각의 제약 노드에 연결된 6개의 에지들, 그리고 임의의 이들 2개의 노드들 사이에 최대 1개의 에지를 갖는다.
도1은 길이 10의 코드와 관련된 그래프를 도시하지만, 길이 1000의 코드워드에 대한 그래프를 표현하는 것은 이보다 100배 더 복잡할 것임을 이해할 수 있을 것이다.
LDPC 코드들의 태너 그래프 표현에 대한 대안적인 표현은 도2의 200에 제시 된 바와 같이 패러티 검사 매트릭스 표현이다. 이러한 코드 표현에서, 매트릭스 H 202(일반적으로 패러티 검사 매트릭스로 지칭됨)는 관련 에지 연결, 가변 노드 및 제약 노드 정보를 포함한다. 매트릭스 H 202에서, 각각의 칼럼은 가변 노드들 중 하나에 대응하고, 각각의 로우는 제약 노드들 중 하나에 대응한다. 예시적인 코드에서 10개의 가변 노드들 및 5개의 제약 노드들이 존재하기 때문에, 매트릭스 H 202는 10개의 칼럼과 5개의 로우를 포함한다. 특정 가변 노드 및 특정 제약 노드에 대응하는 매트릭스(202)의 엔트리는 에지가 그래프에서 존재하는 경우, 즉 2개의 노드들이 이웃인 경우 1로 설정되고, 그렇지 않은 경우에는 0으로 설정된다. 예를 들어, 가변 노드 V1은 에지에 의해 제약 노드 C1에 연결되기 때문에, 매트릭스(202)의 최상부 좌측 코너에 1이 위치한다. 그러나, 가변 노드 V5는 제약 노드 C1에 연결되지 않기 때문에, 매트릭스(202)의 제1 로우의 5번째 위치에는 0이 위치되고, 이는 대응하는 가변 노드들 및 제약 노드들이 연결되지 않음을 표시한다. H 202의 로우들이 GF[2]에 대해 선형적으로 독립적인 벡터들이면, 제약들은 선형적으로 독립적이다라고 우리는 말할 수 있고, 여기서 GF[2]는 이진 갈루아(Galois) 필드이다.
매트릭스 표현의 경우, 전송될 코드워드 X는 벡터(204)로서 표현될 수 있고, 벡터(204)는 처리될 코드워드의 비트들 X1-Xn을 포함한다. 비트 시퀀스 X1-Xn은 매트릭스(202) 및 매트릭스(204)의 곱이 0인 경우, 즉 HX=0인 경우에만 코드워드이다.
LDPC 코드들의 인코딩은 한 세트의 정보 비트들로부터 코드워드를 생성하는 절차이다. LDPC 그래프 표현 또는 매트릭스 표현을 사전 처리함으로써, 정보 비트들에 대응하는 가변 노드들 세트가 실제 인코딩에 앞서 결정될 수 있다.
일반적인 LDPC 코드에 대한 인코더를 구축하기 위해서, 제1 단계는 리오더링(reodering)에 따라 m x n 매트릭스 H를 서브 매트릭스
Figure 112008065762299-PAT00001
로 분할할 수 있도록 H의 로우 및 칼럼들의 순열(permutation)을 발견하는 것이며, 여기서 T는 t x t 상위 삼각 서브-매트릭스로서 주 대각 아래의 모든 엔트리들이 0이며, E는 g x t 서브 매트릭스이고, A는 t x g 서브 매트릭스이고, C는 g x g 서브 매트릭스이고, B는 t x (n-m) 서브 매트릭스이고, D는 g x (n-m) 서브 매트릭스이고, t+g=m이다. 또한, g x g 매트릭스
Figure 112008065762299-PAT00002
는 가역적이다(invertible)(여기서, 우리는 H는 풀(full) 로우 랭크라고 가정한다).
그리고 나서 인코딩은 다음과 같이 진행한다. 코드 워드
Figure 112008065762299-PAT00003
를 인코딩하기 위해서, 정보 비트
Figure 112008065762299-PAT00004
가 주어지면, 우리는 후방 대입(back-substitution)을 사용하여 y에 대해 다음 식을 푼다.
Figure 112008065762299-PAT00005
그리고 우리는
Figure 112008065762299-PAT00006
에 대해 다음 식을 푼다.
*
Figure 112008065762299-PAT00007
이러한 단계에서, 매트릭스
Figure 112008065762299-PAT00008
는 미리-계산된다. 마지막으로, 우리는 후방 대입을 사용하여 에 대해 다음 식을 푼다.
Figure 112008065762299-PAT00010
벡터
Figure 112008065762299-PAT00011
는 코드워드를 구성한다.
효율적인 인코딩 및 높은 데이터 레이트가 중요하지만, 다양한 장치들, 예를 들면 소비자 장치들에서 실제로 사용되는 인코딩 시스템에 있어서, 인코더가 저렴한 비용으로 구현될 수 있는 것이 중요하다. 따라서, 에러 정정 및/또는 검출 목적으로 사용되는 인코딩 방식들을 하드웨어 비용의 관점에서 효율적으로 구현하는 능력이 중요한 고려사항이다.
위에서 살펴본 바와 같이, LDPC 코드들을 구현하는 효율적인 구조를 제공하는 인코더 장치 및 방법이 필요하다. 상이한 길이를 갖는 코드워드들을 인코딩하는데 있어서 동일한 하드웨어를 재사용할 수 있는 장치 및 방법이 바람직하다. 왜냐하면, 이는 인코더 사용 시에 보다 큰 유연성을 제공하고, 상이한 크기의 코드워드들을 사용하여 상이한 데이터 세트들이 인코딩될 수 있도록 하여주며, 따라서 특정 인코딩 애플리케이션, 예를 들면 통신 세션 또는 데이터 저장 애플리케이션에 대해 이러한 유연성을 제공하기 위해 다수의 인코더 없이도 코드워드 크기들이 선택될 수 있도록 하여주기 때문이다.
본 발명은 인코딩 방법 및 장치, 예를 들면 저 밀도 패러티 검사(LDPC) 인코더를 구현하는 방법 및 장치에 관한 것이다. 본 발명의 다양한 실시예들은 상이한 길이의 코드워드들을 인코딩하는데 있어서 단지 하나의 인코더가 사용될 수 있도록 하여주는 특히 유연한 인코더에 관한 것이다. 이는 본 발명의 LDPC 인코더가 제1 애플리케이션(예를 들면, 제1 통신 애플리케이션 또는 데이터 저장 애플리케이션)에 대한 제1 길이 코드워드 인코딩 및 제2 애플리케이션에 대한 제2 길이 코드워드 인코딩 사이에서 스위칭할 수 있도록 하여준다. 사실, 다양한 코드워드 길이들이 동일한 하드웨어를 사용하여 지원될 수 있고, 이는 인코더에서 사용되는 코드워드 서술(description)에서 단순한 변경을 통해 코드워드 길이의 변경을 허용한다. 코드워드 서술은 필요에 따라 특정 애플리케이션에 대해 실행될 수 있는 상대적으로 간단한 마이크로코드에서 반영될 수 있다.
본 발명의 인코더는 상이한 코드들 구조에 대응하는 마이크로코드의 다수의 세트들을 저장할 수 있다. 인코딩에 사용될 코드 구조가 선택되는 경우, 대응하는 마이크로코드가 선택되고 선택된 코드 구조에 대응하는 특정 길이의 코드워드가 생성된다. 주어진 코드 구조에 있어서, 상이한 길이의 코드워드들이 상이한 코드 리프팅(lifting) 인자들을 선택함으로써 생성된다. 최대 지원 코드 리프팅 인자보다 작은 코드 리프팅 인자의 사용은 약간의 메모리 위치(예를 들면, 블록 저장 위치)를 사용하게 되고, 인코더 메모리가 사용되지 않게 된다. 메모리에 제공되는 블록 저장 위치들의 수는 일반적으로 최대 지원 코드워드 사이즈에 의해 결정된다.
본 발명의 인코더는 상이한 리프팅 인자들 사이에서 스위칭할 수 있고, 따라서 인코더는 상이한 길이를 갖는 생성 코드워드들 사이에서 스위칭할 수 있다. 따라서, 본 발명의 인코더는 특정 애플리케이션에 잘 들어맞고 하나의 길이를 갖는 생성 코드들에 대한 하드웨어에 의해 제약되지 않는 길이를 갖는 코드워드를 생성하는데 사용될 수 있다. 그러나, 많은 경우들에서 최대 지원 코드워드 길이는 인코딩 동안 비트들 블록들을 저장하는데 가용한 메모리 양의 함수이다.
최대 지원 코드워드 사이즈는 K x N x L이고, 최대 K배 까지의 (N x L)의 정수배를 포함하는 상이한 사이즈의 코드워드들이 존재하게 되고, 여기서 K, N, 및 L은 양의 정수이다.
본 발명의 인코더는 임의의 계층적 구조를 갖는 코드를 정의하는 LDPC 그래프들에 따라 생성될 수 있는 코드워드들을 인코딩하는데 특히 적합하고, 여기서 풀 LDPC 그래프는 대부분에서 다수의 카피들(Z)로 구성되는 것으로 보여지고, 예를 들어 Z 배 작은 그래프로 구성되는 것으로 보여진다. 반드시 그럴 필요는 없지만, Z개의 카피들은 동일할 수 있다. 본 발명을 설명한 목적으로, 이러한 보다 작은 그래프를 투영(projected) 그래프로 지칭할 것이고, 풀 그래프를 리프트(lifted) 그래프로 지칭할 것이고, Z를 리프팅(lifting) 인자로 지칭할 것이다. 따라서, 투영 그래프는 인코딩을 제어하기 위해서 사용되는 코드 구조를 서술한 보다 큰 리프트 그래프를 생성 또는 서술하는 기초로서 역할을 수행한다.
투영 LDPC 그래프들을 각각 1, ...,j,..,Z로 인덱싱하고, 여기서 j는 투영 그래프 인덱스로서 사용되는 정수이고, z는 리프트 그래프를 정의하는데 사용되는 투영 그래프들의 총 수이다. 리프트 그래프가 단순히 투영 그래프를 Z번 카피함으로써 생성되는 엄격한 병렬 그래프에서, 그래프 j의 가변 노드들은 단지 그래프 j의 제약 노드들에만 연결된다. 즉, 보다 큰 리프트 그래프를 형성하기 위해서 사용되는 투영 그래프들의 에지들 사이에서는 어떠한 상호작용도 존재하지 않을 것이다.
본 발명의 인코더는 그렇게 제한되지 않는다. 본 발명에 따라, Z개의 그래프 카피들 각각으로부터 하나의 대응하는 에지를 포함하는 하나의 벡터 에지를 취하는 것이 가능하고, Z개의 에지들 내에서 순열을 허용할 수 있으며, 예를 들어 우리는 벡터 에지 내의 에지들에 대응하는 제약 노드들이 순열(예를 들면, 리오더링)되는 것을 허용한다.
우리는 Ψ로 표시되는, 한 세트(일반적으로 한 그룹)의 Z x Z 순열 매트릭스들의 공간 내에 그 순열이 존재하도록 제한할 수 있다. 따라서, Ψ는 일반적으로 한 그룹의 순열 매트릭스들인 한 세트의 순열 매트릭스들을 지칭하는데 사용된다. 우리는 Ψ 순열의 역이 또한 Ψ라고 가정한다. 세트 Ψ는 일반적으로 다양한 기준들을 사용하여 선택될 수 있다. 상술한 구조에 대한 주요한 동기들 중 하나는 디코더 및 인코더의 하드웨어 구현을 간락화하는 것이다. 따라서, 하드웨어(예를 들면, 스위칭 네트워크)에서 효율적으로 구현될 수 있는 순열들로 Ψ를 제한하는 것이 바람직하다.
본 발명에 따르면, LDPC 인코딩 절차(다양한 실시예들에서 매트릭스의 합산 및 곱셈 연산의 순서화된 시퀀스로 제시됨)는 일련의 명령들로 해석될 수 있다. 설명의 편의를 위해서, 예시적인 그래프 G에 대한 이러한 일련의 인코딩 명령들은 G 마이크로코드 인코딩으로 표시한다. 그리고 나서, 실제적인 인코딩은 정보 비트(예를 들면 인코딩될 비트)로 사전에 로딩된 물리적인 메모리 상에서 마이크로코드에 따라 다양한 연산들을 수행하는 본 발명의 인코더를 사용하여 G 마이크로코드를 순차적으로 실행함으로써 이뤄진다. 각 명령은 연산자(op) 및 메모리 위치 표시자를 포함한다. 연산자(op)에 따라, 인코더 제어 논리부는 메모리 위치 표시자에 의해 결정된 메모리의 비트 위치를 판독하여 이를 레지스터에 누산하거나, 또는 위치 a에 레지스터 값을 기록하고 그 레지스터 값을 0으로 리셋한다. 마이크로 코드의 사이즈(즉, 명령들의 수)는 그래프 G의 에지들의 수와 적어도 동일하다: 종종 이들은 대략적으로 동일할 수 있다.
리프팅 인자 Z를 갖는 리프트 LDPC 그래프를 고려해보자. 보다 큰 그래프를 형성하기 위해서 사용되는 작은, 투영 그래프(예를 들면, 투영 그래프)가 주어지면, H의 각 엘리먼트를 Z x Z 매트릭스로 대체함으로써 Z 배만큼 큰 LDPC 그래프를 형성할 수 있다. H의 0 엘리먼트들은 제로 매트릭스(0으로 표시됨)로 대체된다. H의 1 엘리먼트들 각각은 Ψ로부터의 매트릭스로 대체된다. 이러한 방식에서, 우리는 LDPC 그래프를 Z 배만큼 큰 그래프로 "리프트"한다. 표현의 복잡도는 H를 표현하는데 필요한 복잡도 더하기 순열 매트릭스
Figure 112008065762299-PAT00012
를 규정하는데 필요한 비트들의 합을 포함하고, 여기서
Figure 112008065762299-PAT00013
는 H에서 1들의 수를 나타내고,
Figure 112008065762299-PAT00014
는 Ψ에서 별개의 순열들의 수를 나타낸다. 예를 들어, Ψ가 순환적인 순열 공간이면,
Figure 112008065762299-PAT00015
이다. 실제로, 우리는
Figure 112008065762299-PAT00016
에 대해 예를 들어 Z=16을 가지며, 여기서 n은 코드워드 블록 길이이다. 작은 패러티 검사 매트릭스 H를 리프팅하는 일 예는 아래에서 제시되고, 여기서 1인 H의 각 엘리먼트는 투영 그래프로 대체되어 우측에 제시된 보다 큰 투영 매트릭스 H가 생성된다.
Figure 112008065762299-PAT00017
매트릭스 H에서,
Figure 112008065762299-PAT00018
는 가변 노드 측으로부터 인덱스되는 여기서 제시된 Ψ의 엘리먼트들(매트릭스들)이다.
Figure 112008065762299-PAT00019
인 경우에만, 벡터 x가 코드워드임을 상기하자. 리프트 매트릭스 표현에서, x는 이진 엘리먼트 벡터 대신에
Figure 112008065762299-PAT00020
의 엘리먼트 벡터로서 취급될 수 있고, 여기서
Figure 112008065762299-PAT00021
Figure 112008065762299-PAT00022
엘리먼트들의 갈루아 필드이다. 이러한 관점에서, 배경서술 부분에서 제시된 매트릭스-벡터 곱셈 및 벡터 합산으로서의 인코딩 처리는 다음과 같이 표현될 수 있다: 투영 그래프의 매트릭스의 모든 넌-제로 엘리먼트 1은 그 대응하는 Z x Z 순열 매트릭스로 대체된다: 벡터의 모든 비트는 Z-비트 벡터로 대체된다.
투영 그래프로서 G를 사용하는 LDPC 그래프의 인코딩 절차는 투영 그래프에 대한 상술한 인코딩 처리의 리프팅으로 크게 규정될 수 있다. 이는 원래 알고리즘의 비트 연산들을 리프트 알고리즘의 비트 벡터 연산들로 대체함으로써 달성된다. 인코딩 처리의 적어도 하나 이상의 포인트들에서, 메모리로부터 판독된 후에, Z 비트 벡터들은 순열 연산(예를 들면, 리오더링 연산)을 겪게 된다. 리오더링 연산은 랜덤 연산 또는 간단히 로테이션(rotation)일 수 있다. 이러한 로테이션 연산은 일반적으로 하나의 큰 그래프를 형성하기 위해서 투영 그래프의 Z개의 카피들을 상호 연결하는 벡터 에지에 관련된 로테이션들에 대응한다. 따라서, 리프트 마이크로코드에서, 각각의 명령은 연산자(op), 로테이션 번호(r), 및 메모리 위치 식별자를 포함한다.
큰 부분에서 투영 그래프의 마이크로코드 리프팅은 리프트 그래프에 대한 인코딩을 규정한다. 매트릭스
Figure 112008065762299-PAT00023
를 계산하기 위한 매트릭스 인버젼(inversion)이 투영 그래프에 존재하는 경우, 예외가 있다. 이러한 경우, 이러한 인버젼은 리프트 그래프의 매트릭스 인버젼으로 바로 리프트되지 않는다. 대신, 매트릭스 인버젼은 Z x Z 순열 매트릭스에 대한 링(ring)에서 이뤄지고, 대응하는 인코딩 명령들은 매트릭스 인버젼을 규정하는 새로운 명령들 세트를 생성한다. 이러한 명령들에서, 요구되는 로테이션들은 LDPC 표현에 대한 적절한 처리 후에 명확해진다.
따라서, 리프트 그래프를 서술하기 위해서 본 발명에 따라 사용되는 마이크로코드의 사이즈는 투영 그래프의 에지들의 수에 인버젼을 규정하는 추가적인 명령들의 수(이는 종종 작음)를 더한 값과 거의 동일하다. 따라서, 동일한 블록 길이 에 대해서, 리프팅 인자를 증가시키는 것은 일반적으로 인코딩 마이크로코드의 사이즈를 감소시킨다. 큰 블록 길이에 있어서, 이는 마이크로코드 서술(description) 메모리를 상당히 절약할 수 있고, 예를 들어 상대적으로 작은 메모리가 인코딩을 위해 사용될 큰 그래프를 서술하는 정보를 저장하는데 사용될 수 있다.
*실제적인 통신 또는 데이터 저장 시스템에서, 인코더의 처리량(throughput)은 디코더의 처리량과 매칭되어야 한다. 리프팅 인자 Z를 갖는 리프트 그래프에서, 인코더 및 디코더 모두에서 하드웨어 병렬성(parallelism) Z를 구현하는 것은 디코더 처리량을 매칭하기 위해서 필요한 것보다 높은 처리량이 인코더에 대해 요구되는데, 왜냐하면 디코더는 수렴하기 위해서(예를 들어, 코드워드 디코딩을 완료하기 위해서) 약간 많은 반복들을 필요로 하기 때문이다.
본 발명에 따르면 인코더는 디코더보다 적은 구현 병렬성을 사용하는 것이 가능하고, 주어진 시간 주기에서 처리되는 코드워드들의 수의 관점에서 동일한 처리량을 달성할 수 있다.
또 다른 예로서, 상술한 바와 같이 큰 그래프를 서술하는 메모리의 절약의 관점에서 큰 리프팅 인자 Z가 사용되는 경우, 구현 병렬성 Z를 사용하는 것은 과도한 처리량을 생성하는데 보다 많은 수의 병렬 유닛들을 필요로 한다.
하드웨어 복잡도가 구현 병렬성 N에 비례하지만, 그래프 복잡도가 리프팅 인자 Z에 비례한다는 사실을 고려하면, 큰 리프팅 인자 Z를 사용하여 서술된 리프트 인자를 사용하면서 결과적인 처리량이 과도함이 없이 요구조건에 매칭하도록 구현 병렬성이 이뤄지도록 하는 것이 바람직하다.
본 발명의 다양한 특징들은 리프팅 인자 Z를 갖는 리프트 그래프를 서술하는 마이크로코드를 사용하는 구현 병렬성 N을 통해 벡터 LDPC 인코더를 구현하는 방법 및 장치에 관한 것이며, 여기서 N은 Z의 제수(divisor)이다. 구현 병렬성 N은 요구되는 처리량을 매칭하도록 선택되며, 따라서 최소 하드웨어 복잡도를 사용한다.
또한, 본 발명에 따르면, 구현 병렬성 N을 갖는 벡터 LDPC 인코더는 리프팅 인자 Z를 갖는 리프트 그래프를 서술하는 동일한 마이크로코드로부터, 동일한 레이트를 갖지만 상이한 블록 사이즈를 갖는 LDPC 코드 클래스에 대응하는 코드워드들을 생성하기 위한 데이터를 생성(예를 들면, 인코딩)할 수 있다. 구체적으로, 예를 들어, Z가
Figure 112008065762299-PAT00024
로 인수분해되고, 투영 그래프가 n개의 가변 노드들을 가지면, 신규한 인코더는 상이한 코드워드 사이즈들(
Figure 112008065762299-PAT00025
,
Figure 112008065762299-PAT00026
, 및
Figure 112008065762299-PAT00027
)을 갖는 3개의 상이한 코드들을 생성할 수 있다.
따라서, 본 발명의 인코더를 사용하는 장치는 애플리케이션에 따라 저장된 마이크로코드에서 서술된 상이한 그래프를 사용하여 인코딩 사이에서 스위칭할 수 있고, 따라서 생성된 코드워드들은 특정 애플리케이션에 적절한 블록 사이즈를 가질 수 있다. 예를 들어, 제1 사이즈의 코드워드는 무선 통신을 위해 생성되고, 제2 사이즈의 코드워드는 광 섬유 통신을 위해 생성될 수 있다.
본 발명은 LDPC 인코더를 구현하는 방법 및 장치에 관한 것이다. 본 발명의 다양한 실시예들은 생성된 코드워드들의 사이즈 및 인코딩 동안 사용될 수 있는 코드 구조에 있어서 상대적으로 유연하면서, 하드웨어 효율적인 방식으로 구현될 수 있는 인코딩 방법 및 LDPC 인코더에 관한 것이다.
도3은 본 발명에 따라 구현된 예시적인 LDPC 인코더(300)를 보여주는 도이다. 인코더는 메모리 모듈(302), 제어 모듈(312), 코드 리프팅 기반 블록 선택 모듈(310), N 엘리먼트 제어가능한 퍼뮤터(permuter)(304), N 엘리먼트 벡터 누산기 모듈(306), 및 제어가능한 저장 장치(308)를 포함하며, 이들은 도3에서 제시된 바와 같이 함께 연결된다. 본 명세서에서 퍼뮤터(permuter) 및 퍼뮤테이터(permutator)는 서로 교환가능하게 사용될 수 있으며, 동일한 장치를 지칭한다. LDPC 인코더(300)의 다양한 엘리먼트들 및 그들의 기능은 아래에서 상세히 설명될 것이다.
상술한 바와 같이, 본 발명의 인코더(300)는 동일한 코드 서술(description)을 위해 상이한 리프팅 인자들에 의해 표시된 바와 같이, 상이한 코드워드 길이들 및/또는 상이한 코드 서술들을 사용하여 상이한 코드들을 지원할 수 있다. 메모리 모듈(302)은 한 세트의 K x N x L 메모리 위치들(318, 320, 322)을 포함하고, 여기서 K x N x L은 최대 지원 코드워드 사이즈다. 입력(301)은 인코딩될 데이터가 상기 메모리에 기록될 수 있도록 하여준다. 출력(303)은 인코딩이 완료되면 메모리(314)에 저장된 코드워드가 판독될 수 있도록 하여준다. 메모리 모듈(302)은 또 한 임시적인 값들을 저장하기 위해서 사용되는 한 세트의 K x N x 1 메모리 위치들(319, 321, 323)을 포함한다. 다른 실시예들은 임시 저장 값들을 필요하지 않을 수도 있고, 이들을 사용하지 않을 수도 있다. 보다 작은 사이즈의 코드워드들이 메모리(314)를 사용하여 지원될 수도 있다. 메모리(314)의 메모리 위치들은 코드워드 값들, BLK 1(318), BLK 2(320), BLK K(322)를 저장하는데 사용되는 K개의 N x L 블록들 및 임시 값들 BLK 1(319), BLK 2(321), BLK K(323)을 저장하는데 사용되는 K개의 N x 1 블록들로 배열된다. K x N x L 메모리 위치들 각각은 일반적으로 1 비트이다. K x N x 1 메모리 위치들 각각 역시 일반적으로 1 비트이다. 메모리(314)의 메모리 위치들로부터의 판독 및 이들로의 기록은 메모리 어드레스 논리부(316)에 의해 제어되고, 메모리 어드레스 논리부(316)는 메모리의 다른 컴포넌트들에 의해 생성된 다양한 입력들에 응답하여 메모리 액세스 신호(324)(어드레스 및 판독/기록 신호)를 생성한다. N 비트들은 메모리 모듈(314)로부터 한 번에 판독되거나, 메모리 모듈(314)로 기록된다. N 비트 폭을 갖는 버스(340)는 메모리 모듈(302)의 N 비트 폭 판독 출력을 N 엘리먼트 제어가능한 퍼뮤터(304)의 N 비트 폭 입력과 연결하고, 퍼뮤터(304)는 N 비트 폭 버스(342) 상에서 N 엘리먼트 벡터 누산기(306)로 제공되기에 앞서 비트들을 리오더링할 수 있다. N개의 엘리먼트 제어가능한 퍼뮤터(304)는 저장된 코드 서술 정보(예를 들면, 마이크로코드와 같은 제어 코드)의 함수로서 생성된 리오더링 제어 신호(r2)(373)를 수신한다. 이러한 신호(r2)(373)는 N 엘리먼트 벡터 누산기 모듈(306)에 비트들이 제공되기에 앞서 메모리로부터 획득된 N 비트들에 대해 비트들의 어떤 리오더링이 수행될 것인지를 제 어한다.
N 엘리먼트 벡터 누산기 모듈(306)은 병렬로 배치된 N 개의 누산기 회로들을 포함한다. N 누산기 회로들 각각은 제어가능한 저장 장치(308)로부터 판독된 N 비트들 중 대응하는 하나 및 N 엘리먼트 제어가능한 퍼뮤터(304)로부터의 N 입력 비트들 중 하나에 대응하는 1 비트 이진 합(sum)을 생성한다. 이는 XOR 연산을 구현하는 효율적인 방법이다. 따라서 각각의 누산기 회로는 XOR 연산을 수행한다. 이러한 방식으로, N 엘리먼트 벡터 누산기(306)는 병렬적으로 N개의 누산된 값들을 생성한다. 누산기 모듈(306)에 의해 생성된 N개의 값들은 N 비트 폭 버스(304) 상에서 병렬적으로 제어가능한 저장 장치(308)로 제공된다. 제어가능한 저장 장치(308)는 입력 MUX(328), 출력 MUX(308), 및 한 세트의 K 개의 N-비트 레지스터(326)를 포함한다. 입력 MUX(328)는 벡터 누산기 모듈의 출력이 제어가능한 저장 장치(308)에 저장될 것이라고 판독/기록 신호(350)가 표시하는 경우에, N 비트 블록이 K 개의 N 비트 레지스터(332,334,336)들 중 어떤 레지스터로 기록될 것인지를 결정하기 위해서 블록 선택 제어 신호(360)에 의해 제어된다. 출력 MUX(330)는 N 비트 폭 버스(346)에 연결되어, 판독 연산이 수행될 것이라고 판독/기록 제어 신호(350)가 표시하는 경우 블록 선택 제어 신호(360)에 의해 표시된 N 비트 블록을 출력한다. 제어가능한 저장 장치(308)로부터 판독된 N 비트들 각각의 세트는 메모리 모듈(302) 및 N 엘리먼트 벡터 누산기 모듈(306) 모두로 제공된다. N 비트들은 예를 들면 저장된 코드 서술에 의해 결정된 대로, 일련의 누산기 연산들의 끝에서 메모리에 기록된다.
제어 모듈(312)은 시간적으로 특정한 포인트에서 사용되도록 선택된, 인코더 서술 정보 모듈(372)에 저장된, 예컨대 마이크로코드와 같은 제어 코드인, 특정한 코드 서술의 함수로서 다양한 제어 신호들을 생성한다. 프로그래밍 가능한 실시예들에서, 코드 서술 정보는 예컨대 입력(371)을 통해 메인 메모리와 같은 장치들로부터 저장된 인코더 서술 정보 모듈(372)로 로딩될 수 있다. 단일 코드 서술이 미리 로딩되고 예컨대 동일한 코드 구조에 대응하는 상이한 길이들의 코드워드들에 대하여 사용되는 실시예들에서, 입력(371)은 생략될 수 있다. 인코더 서술 정보 모듈(372)에 의해 생성되는 신호들의 생성은 외부 루프 카운터(374)에 의해 생성된 제어 신호(375)에 의해 수행된다. 외부 루프 카운터(374)는 내부 루프 카운터(370)에 의해 생성된 내부 루프 제어 신호(377)에 의해 구동된다. 내부 루프 카운터(370)는 제 2 선택 모듈 제어 신호(356) 및 제어값으로서 내부 루프 카운터(370)에 제공되는 코드 리프팅 인자 제어 신호 SK(348)의 함수로서 내부 루프 제어 신호(377)를 생성한다. 코드 리프팅 인자 제어 신호는 생성될 코드워드의 길이를 특정하기 위해 사용될 수 있고 1부터 K까지의 값을 가정할 수 있으며, 여기서 K는 메모리(314)에 있는 NxL 비트 블록들의 총수를 나타낸다. 그리하여, 상이한 코드 리프팅 인자들을 사용함으로써, 상이한 크기들의 코드워드들이 생성될 수 있으며, 지원되는 상이한 코드워드 크기들 각각은 NxL의 정수배일 것이다. SK<K인 경우에, 메모리(314)에 있는 하나 이상의 블록들과 레지스터들의 세트(326)에 있는 하나 이상의 레지스터들은 보통 사용되지 않을 것이다.
저장된 인코더 서술 정보 모듈(372)은 예컨대 마이크로코드와 같은 제어 코 드를 포함한다. 외부 루프 제어 신호(375)에 응답하여 실행될 때, 이러한 코드는 마이크로코드의 실행 라인에 포함된 op 값에 의해 특정된 판독/기록 신호(350)를 생성한다. 신호(350)는 메모리 모듈(302) 및 제어가능한 저장 장치(308) 모두에 제공된다. 저장된 인코더 서술 정보 모듈(372)은 또한 판독/기록 연산이 수행되어야 하는 경우에 메모리 모듈(302)로 제공되는 메모리 주소 제어 신호(352), 코드 리프팅 기반 블록 선택 모듈(310)로 제공되는 제 1 선택 모듈 제어 신호 r1(354) 및 메모리 모듈(302)로부터 판독된 값들의 리오더링(reordering)을 제어하기 위해 제어가능한 퍼뮤터(permuter)(304)로 제공되는 리오더링 제어 신호 r2(373)를 생성한다.
코드 리프팅 기반 블록 선택 모듈(310)은 저장된 인코더 서술 정보 모듈(372)로부터의 제 1 선택 모듈 제어 신호 r1(354)과 내부 루프 카운터(370)에 의해 생성된 제 2 선택 모듈 제어 신호(356)를 수신한다. 코드 리프팅 기반 블록 선택 모듈(310)은 시간적으로 특정한 포인트에서 액세스될 메모리(314)의 특정한 블록을 표시하기 위해 메모리 주소 로직(316)으로 제공되는 블록 주소 선택 신호(358)를 생성한다. 코드 리프팅 기반 블록 선택 모듈(310)은 또한 어떤 블록의 정보, 예를 들어, 어떤 레지스터(332, 334, 336) 비트들이 시간적으로 특정한 포인트에서 제어가능한 저장 장치(308)에서 액세스되어야 하는지를 제어하기 위해 사용되는 블록 선택 제어 신호(360)를 생성한다.
인코더(300)의 다양한 컴포넌트들은 공통 클록 신호에 의해 구동되며, 그 결과 다양한 연산들 및 카운터들(370, 374)의 증가는 동기화된 방식으로 동작한다.
다수의 프로세싱 상호 작용 후에, 메모리 모듈(314)에 초기에 저장된 정보 비트들의 세트는 저장된 인코더 서술 정보 모듈(372)의 지시에 따라 수행되는 인코더 처리 연산들 및 메모리 액세스 연산들의 결과로서 코드워드로 변환될 것이다. 이러한 코드워드는 판독될 수 있으며, 예컨대 전송되거나 저장될 수 있다.
상위 레벨의 에러 복원성(resiliency)을 획득하기 위해, 상대적으로 긴 코드워드들이 자주 사용된다. 예를 들어, 인코딩 연산을 수행함으로써 생성된 단일 코드워드는 전체 T개의 비트들을 포함할 수 있으며, 여기서 T는 수백 또는 수천 비트일 수 있다. 본 발명을 설명하기 위한 목적으로서, 인코딩되는 비트들은 KxLxN 비트 벡터들로 배치될 수 있으며, N은 양의 정수이고 K는 1보다 큰 양의 정수인 것을 이해하도록 한다. 각각의 N 비트 벡터는 메모리로부터 판독될 수 있다. 그 다음에 메모리로부터 판독된 벡터는 병렬적으로 N개의 프로세싱 유니트들을 사용하여 처리될 수 있다. 리프팅 인자 Z를 가지는 특정한 리프팅된 LDPC 코드를 사용하여 코드워드들을 인코딩하는 인코더에서 Z와 동일한 N개의 병렬 구현을 이용하는 기존의 시스템들과 대조적으로, 본 발명은 전체 지원되는 리프팅 인자 Z와 상이한, 보다 구체적으로, Z=KxN(K는 1보다 큰 정수)인 인코더에서의 병렬 레벨을 허용한다. 그리하여, 본 발명에 따라, 다양한 구현들에서, 병렬 레벨 N은 리프팅 인자 Z보다 작다. 또한, 몇몇 실시예들에서, 상이한 크기들의 코드워드들은 동일한 세트의 코드 서술 정보를 이용하여 생성될 수 있다. K보다 작은, 코드 리프팅 인자 제어값 SK를 선택함으로써, 주어진 구현(L x K x N)에 대한 최대 코드워드 크기보다 작은 코드워드들이 생성될 수 있다. 코드워드들의 상이한 크기는 NxL 비트들의 배수일 것이다.
출원번호가 10/788,115이고 출원일이 2004년 2월 26일이고 발명의 명칭이 "METHOD AND APPARATUS FOR PERFORMING LOW-DENSITY PARITY-CHECK(LDPC) CODE OPERATIONS USING A MULTI-LEVEL PERMUTATION"인 미국 특허 출원과 동일한 발명의 명칭 및 출원일을 가지는 대응하는 PCT 출원 PCT/US2004/005783은 모두 여기에 참조로서 통합된다. 이러한 특허 출원들은 LDPC 코드들의 곱(product) 리프팅 방법을 설명한다. 이러한 곱 리프팅들은 서브-그룹들의 직접-곱으로 분해될 수 있는 그룹들에 대한 리프팅들에서 사용되는 ZxZ 순열 행렬들의 그룹을 제한한다. 예를 들어, Ψ는 세 개의 서브-그룹들의 직접-곱, 즉, Ψ=Ψ123이라고 가정한다. Ψ의 차원은 Ψi의 차원들의 곱과 같으며, 여기서 Ψi는 KixKi 순열 행렬들의 그룹이다. 그리하여, 큰 리프팅은 다수의 더 작은 연속적인 리프팅들로서 구현될 수 있다. 그룹 Ψi의 차원은 그룹 내에서 행렬의 차원과 동일하다고 가정하며, 그리하여 Z=K1xK2xK3이고, K1, K2, K3은 각각 Ψ1, Ψ2, Ψ3의 차원들이다.
본 발명에 따르면, 곱-리프팅 그룹이 되도록 리프팅 그룹 Ψ를 제한한다. 위에서 논의된 바와 같이, 곱 리프팅은 등가적으로 다중-차원 리프팅으로서 보여질 수 있다. 그에 따라, 본 발명의 인코더(300)는 다중-차원 리프팅들로서 구현될 수 있는 리프팅들을 사용한다. 투영된(projected) 코드는 크기 P, 즉, P개의 가변적인 노드들을 가진다고 가정한다. 리프팅을 위해 크기 64의 순환적인 그룹을 선택할 수 있다. 본 발명에 따른, 대안은 크기 16의 순환적인 그룹과 크기 4의 순환적 인 그룹의 곱(16x4=64에 유의)일 것이다. 이러한 그룹은 다음과 같이 표현될 수 있다. 가역성(invertible) 맵 L=4a+b에 의한 쌍들 (a,b)(a=0,. . . ,15 및 b=0,. . . ,3)를 사용하는 L=0,. . . 63의 인덱싱을 고려하도록 한다. 이러한 곱 그룹의 엘리먼트는 쌍 (c,d)(c=0,. . . ,15 및 d=0,. . . ,3)이다. (a,b)에 대한 (c,d)의 동작은 쌍 (a,b)를 (a+c mod 16, d+b mod 4)로 치환시키는 것이다. 이러한 그룹은 또한 차수 64를 가진다. 그러나, 결과적으로 리프팅된 그래프는 16에 의한 크기 4P 코드 또는 4에 의한 크기 16P 코드 또는 64에 의한 크기 P 코드의 리프팅으로서 해석될 수 있다.
곱 리프팅들에 의해 제공되는 다양한 장점들은 본 발명의 인코더 및 하드웨어 구현과 관련하여 실현된다. 인코더에서 곱 리프팅을 이용함으로써 추가된 값은 본 발명의 많은 특징들 중 하나이다. 곱들이 아닌 그룹들, 예컨대 순환적인 그룹들에 의한 리프팅들은 임의의 크기의 리프팅을 허용하나 곱 리프팅의 유연성을 제공하지 않는다.
출원번호가 10/788,115이고 발명의 명칭이 "METHOD AND APPARATUS FOR PERFORMING LOW-DENSITY PARITY-CHECK(LDPC) CODE OPERATIONS USING A MULTI-LEVEL PERMUTATION"인 미국 특허 출원은 곱 리프팅 그래프들과 이러한 그래프들을 사용하는 잠재적인 이점들에 대하여 설명한다.
본 발명은 리프팅 인자 Z=KxN을 사용하는 신규한 인코더(300)를 설명함으로써 상기 출원에서 설명된 몇몇 기본적인 개념들을 확장시킨다. 본 발명의 다양한 특징들은 유연하나 상대적으로 하드웨어 효율적인 방식으로 병렬 구현 N을 통해 그 래프를 인코딩하기 위한 방법 및 장치들에 적용된다. K는 리프팅 제어 인자로서 사용될 수 있으며, N이 고정되면 생성될 코드워드의 크기를 나타낼 수 있다.
리프팅 인자 Z=KxN인 리프팅된 LDPC 그래프를 가진다고 가정한다. 리프팅 그룹 Ψ는 곱-리프팅 그룹 Ψ=Ψ12이며, 여기서 K는 그룹 Ψ1의 차원이고, N은 그룹 Ψ2의 차원이다. 리프팅 인자 Z를 가지는 리프팅된 그래프에 대한 마이크로코드를 생성할 수 있으며, 마이크로코드는 명령들의 시퀀스이고, 명령들 각각은 연산자 op, 로테이션 수 r 및 메모리 위치 a를 전달한다. 병렬 계산 Z를 이용하여 구현된 인코더(300)는 다음의 방식으로 각각의 명령을 실행한다: op가 판독을 나타내면, 제어기는 위치 a에서 메모리로부터 Z-비트 벡터를 판독하고, 벡터를 양(amount) r로 리오더링하고 리오더링된 값을 Z-비트 레지스터에 누산시킨다; op가 기록을 나타내면, 제어기는 Z-비트 레지스터의 값을 위치 a의 메모리에 기록한다. 상기 인코딩은 명령들의 전체 시퀀스를 실행함으로써 달성된다.
실행되는 마이크로코드는 인코더 서술 정보 모듈(372)에 저장될 수 있으며, 인코더 서술 정보 모듈(372)은 사용될 마이크로코드를 저장하는 것 이외에도 마이크로코드에 포함된 명령들을 액세스하고 실행한다.
마이크로코드 명령, 예를 들어, 본 발명의 명령을 실행한 동일한 결과는 병렬 계산 Z=KxN 대신에 병렬 계산 N, 즉, N개의 병렬 프로세싱 유니트들을 사용하여 획득될 수 있다. 그러나, N 구현에서는, 동일한 기본 명령을 K번 수행하며, 각각의 횟수에서 Z 비트의 프로세싱에 대한 작업 중 1/K를 완료한다.
본 발명의 인코딩 프로세스를 보다 잘 이해하기 위해서, 먼저 위치 a로부터 Z-비트 벡터를 판독하고 양 r에 의해 리오더링을 수행하고 그 다음에 리오더링된 값을 Z-비트 레지스터에 누산하는 명령을 고려하도록 한다. 원래의 데이터 벡터 d=(d1, d2,. . . ,dK)를 기록하며, 각각의 dj는 N-비트 벡터이고, j는 인덱스로서 사용되는 정수값이다. 주어진 리프팅 그룹은 곱 리프팅 Ψ=Ψ12이고, 여기서 Ψ1는 차원 K를 가지고 Ψ2는 차원 N을 가지며, 리오더링 양 r=(r1, r2)을 기록하도록 하고, 여기서 r1은 그룹 Ψ1에서의 리오더링 양, 예를 들어, 순환적인 로테이션의 양이고 r2는 그룹 Ψ2에서의 리오더링 양, 예를 들어, 순환적인 로테이션의 양이다. 그룹 Ψ1의 (K개의 엘리먼트 중에서) 벡터 d에 대하여 양 r에 의한 리오더링을 표현하기 위하여 표시 Ψ1(d,r)을 사용하며, 그룹 Ψ2의 (N개의 엘리먼트 중에서) 벡터 d에 대하여 양 r에 의한 리오더링을 표현하기 위하여 표시 Ψ2(d,r)을 사용한다. 리오더링은 또한 위치 치환으로 볼 수 있으며, 그 결과 원래의 위치 j에서의 엘리먼트 dj는 리오더링된 데이터에서 Ψl,r(j)로 표시되는 새로운 위치로 이동한다. 그 다음에 리오더링은 2-스테이지 리오더링 절차로 볼 수 있다. 제 1 스테이지는 벡터 d'=(Ψ2(d1,r2), Ψ2(d2,r2),. . . , Ψ2(dK,r2))를 생성하기 위해 N(1-비트)개의 엘리먼트들에 대하여 그룹 Ψ2에서 리오더링을 수행한다. 그 다음에 제 2 스테이지 는 벡터 d''=Ψ1(d',r1)를 생성하기 위해 K(N-비트)개의 엘리먼트들에 대하여 그룹 Ψ1에서 리오더링을 수행한다. 그 다음에 리오더링된 데이터 d''는 Z-비트 레지스터에 누산된다. 아래에서 논의될 바와 같이, 도 3의 구현에서, Z 비트 레지스터는 K개의 N-비트 레지스터들(332, 334, 336)의 세트로서 구현된다.
이제 LDPC 인코더(300)와 같은 LDPC 인코더를 구현하기 위해 위에서 언급된 병렬 계산 Z를 이용한 단일 단계 판독-리오더링-누산을 병렬 계산 N을 이용하는 판독-리오더링-누산의 K개의 단계들로 어떻게 분해하는지에 대하여 설명한다. 이것은 인코더(300)에 의해 사용되는 이러한 K개의 단계들의 시퀀스이다. K개의 레지스터들(332, 334, 336)을 가진다고 가정하고, 위치 a에서의 Z-비트 벡터 d는 물리적으로 K개의 N-비트 벡터들(d1, d2,. . . ,dk)로서 배치되고 N-비트 벡터 dj는 블록 j의 위치 a에 저장된다고 가정한다. 단계 j에서 데이터 dj를 판독하고, 여기서 주소는 a 및 j 모두에 의해 결정되며, 예를 들어, N 엘리먼트 제어가능한 퍼뮤터(304)를 사용하여 그룹 Ψ2에서 양 r2에 의해 상기 판독된 데이터를 리오더링하면, Ψ2(d1,r2)를 생성하게 된다. 그 다음에, 리오더링된 데이터를 이러한 K개의 레지스터들(332, 334, 336) 중 Ψl, r1(j)번째 레지스터에 누산시킨다. 이것은 j번째 단계를 완료시킨다. j=1,. . . ,K를 통해 실행함으로써, Z-비트 벡터 연산을 통해 명령을 실행하는 것과 동일한 결과를 얻게 되나, 이러한 결과는 더 낮은 인코더 병렬 계산 N(여기서, N<Z)을 통해 달성된다.
Z-비트 레지스터를 위치 a에 기록하고 Z-비트 레지스터를 리셋(reset)하는 명령은 또한 보다 간단한 방식으로 본 발명에 따라 K개의 단계들로 분해될 수 있다. 단계 j에서, j 및 위치 a에 의해 결정된 위치에 K개의 N-비트 레지스터들(332, 334, 336) 중 j번째 레지스터를 기록하며, 상기 레지스터(332, 334 또는 336)를 리셋시킨다. j=1,. . . ,K를 통해 실행함으로써, Z-비트 벡터 연산들을 통해 명령을 실행하는 것과 동일한 결과를 얻게 된다.
위의 논의는 원칙적으로 리프팅 인자 Z에 대응하는 마이크로코드, 예컨대 인인코더 서술 정보 모듈(372)에 저장된 마이크로코드를 구현하기 위해 어떻게 병렬 계산 N을 이용할 수 있는지를 설명한다.
도 3과 관련하여, 이제 보다 상세하게 리프팅 인자 Z(여기서, Z>N)가 사용될 때 병렬 계산 N을 허용하는 K-단계 인코딩 프로세스를 구현하기 위해 사용되는 예시적인 인코더(300)를 설명한다.
도 300에서, 제어 모듈(312)은 내부 루프 카운터(370)를 통해 명령을 실행하는 다수의 단계들을 제어한다. 카운터(370)는 각각의 단계에서 1만큼 증가하며 코드 리프팅 인자 제어 신호(348)에 의해 결정되면 최대 카운터에 도달하면 리셋된다. 내부 루프 카운터(370)가 최대치에 도달할 때마다, 내부 루프 카운터(370)는 외부 루프 카운터(374)가 1만큼 증가하도록 트리거링한다. 외부 루프 카운터(374)는 저장된 인코더 서술 정보 모듈(372)을 액세스함으로써 현재 실행되는 인코딩 명령을 결정한다. 저장된 인코더 서술 정보 모듈(372)은, 명령에 따라 생성되는 다양한 신호들의 형태로, 외부 루프 카운터(374)에 의해 결정되는 위치에 적용되도록 명령을 출력한다. 명령은 연산자 op, 리오더링 수 r 및 메모리 위치 a를 전달한다. 연산자 op는 메모리 모듈(302)에 대한 판독/기록 신호(350)를 특정하고, 메모리 위치 a는 메모리 모듈(302)과 결합된 메모리 주소 제어 신호(352)를 결정하고, 리오더링 수 r은 각각 그룹 Ψ1 및 Ψ2에서 리오더링 엘리먼트를 특정하는 두 개의 부분들 (r1, r2)로 분리된다. 신호 r1(354)은 메모리 모듈(302)에 있는 어떤 메모리 블록이 액세스될 것인지를 제어하기 위해 사용되는 블록 주소 선택 신호(358)를 생성하는데 이용하도록 코드 리프팅 기반 블록 선택 모듈(310)로 제공되며, 신호 r2(373)는 메모리(302)로부터 판독된 블록의 N개의 엘리먼트에 대한 치환을 제어하기 위해 퍼뮤터(304)에 제공된다.
신호 r1(354)을 수신하기 위해, 코드 리프팅 기반 블록 선택 모듈(310)은 상기 제어 모듈(312)로부터의 명령에 있는 리오더링 수 r의 부분 r1과 연결된 제 1 선택 모듈 제어 신호(354)를 가진다. 제어 모듈(312)의 내부 루프 카운터(370)에 의해 생성된 제 2 선택 제어 신호(356)에 의해 구동되고, 제어 신호 r1(354)에 의해 제어되는, 코드 리프팅 기반 블록 선택 모듈(310)은 1부터 K까지의 값들을 가지는 블록 주소 선택 신호(358)와
Figure 112008065762299-PAT00028
의 값들을 가지는 블록 선택 제어 신호(360)를 출력한다.
메모리 모듈(302)은 저장된 인코더 서술 정보의 연산자 op 출력과 연결된 판 독/기록 신호(350)를 수신하기 위한 입력과 시간적으로 특정한 포인트에서 실행되는 모듈(372)에 저장된 마이크로코드 명령에 의해 제공되는 메모리 위치 a에 대응하는 메모리 주소 제어 신호(352)를 수신하기 위한 다른 입력을 가진다.
*메모리 모듈(302)은 K x (N x L) 1-비트 저장 위치들(318, 320, 322)과 K x (N x 1) 1-비트 저장 위치들(319, 321, 323)로 배치된 메모리(314)를 포함한다. 편의를 위해, 코드워드 저장을 위해 사용되는 블록 1,. . . ,K로서 (N x L) 1-비트 위치들의 K 블록들을 가지는 저장 위치들을 식별하고, 임시적인 값들의 저장을 위해 사용되는 블록 1,. . . ,K로서 (N x 1) 1-비트 위치들의 K 블록들을 가지는 저장 위치들을 식별한다. 메모리(314)는 메모리 주소 제어 신호 a(352) 및 블록 주소 선택 신호 k(358)의 함수인 위치에서 액세스된다. 메모리 주소 로직 모듈(316)은 이러한 함수를 구현한다. 주어진 (a,k)에서, 메모리 모듈(302)은 판독/기록 신호(350)가 판독 또는 기록 연산이 수행되어야 하는지를 나타내는지 여부에 따라 k번째 블록의 위치 a에 대하여 N-비트 벡터를 판독하거나 또는 기록한다.
메모리 모듈(302)의 판독-출력은 메모리(314)로부터의 N-비트 벡터(340)를 출력한다. 이러한 N 비트 벡터는 N 엘리먼트 제어가능한 퍼뮤터 모듈(304)로 제공된다. 모듈(304)은 그룹 Ψ2에서 리오더링을 수행한다; 리오더링 제어 신호는 저장된 인코더 서술 정보 모듈(372)의 r2 신호 출력과 연결된다. 시간적으로 특정한 포인트에서 사용되는, r2 신호가 획득되는 리오더링 수 r은 상기 시간적으로 특정한 포인트에서 실행되는 정보 모듈(372)로부터의 마이크로코드 명령으로부터 획득된다.
퍼뮤터 모듈(304)의 리오더링된 N-비트 벡터 출력은 N 엘리먼트 벡터 누산기 모듈(306)의 제 1 N-비트 벡터 입력(342)과 연결된다. 누산기 모듈(306)의 제 2 N-비트 벡터 입력(346)은 K개의 N 비트 레지스터들(332, 334, 336)을 포함하는 제어가능한 저장 장치 모듈(308)로부터 제공된다. 벡터 누산기 모듈(306)은 두 개의 N-비트 벡터 입력들의 XOR 합으로서 N-비트 벡터 출력을 생성한다. 다양한 실시예들에서, 벡터 누산기 모듈(306)은 병렬적으로 배치된 N개의 XOR 회로들을 사용하여 구현되며, 각각의 XOR 회로는 N개의 XOR 회로들 중 특정한 하나에 의해 생성되는 가장 최근에 생성된 XOR 결과에 XOR 연산의 결과를 합산하기 위한 상이한 합산기와 연결된다. 누산기 모듈의 N 비트 길이의 출력은 제어가능한 저장 장치 모듈(308)의 입력(344)과 연결된다.
제어가능한 저장 장치 모듈(308)은 K개의 레지스터들을 포함하며, 각각의 레지스터는 N-비트를 저장한다. 코드 리프팅 기반 블록 선택 모듈(310)과 연결된, 블록 선택 제어 신호(360)는 시간적으로 특정한 포인트에서 K개의 레지스터들 중 어떤 레지스터가 액세스될 것인지를 결정한다. 제어 모듈(312)로부터의 명령에 포함된 연산자 op와 연결된, 판독/기록 제어 신호(350)는, 예를 들어, 판독 또는 기록 액세스 모드와 같은 액세스 모드를 결정한다. 블록 선택 제어 신호(360)는 j를 말한다고 가정한다. 제어 신호가 판독을 나타내면, 제어가능한 저장 장치(308)로부터의 N-비트 출력 벡터는 j번째 레지스터의 값을 취하고, N 엘리먼트 벡터 누산 기 모듈(306)로부터의 누산된 값은 j번째 레지스터에 기록된다. 다시 말하면, N 엘리먼트 제어가능한 퍼뮤터(304)로부터의 리오더링된 값은 블록 선택 제어 신호(360)에 의해 표시된 j번째 레지스터로 누산된다. 판독/기록 제어 신호(350)가 기록을 나타내면, 출력 벡터는 다시 j번째 레지스터의 값을 나타내며, 그 다음에 j번째 레지스터를 0으로 리셋시킨다.
요약하면, 리프팅 인자 Z=K x N을 가지는 리프팅된 그래프에 대한 주어진 마이크로코드를 가지고, 본 발명의 다양한 실시예들은 N-비트 벡터 연산들을 수행하는 인코더에 적용된다. 각각의 N 비트 벡터 연산은 인코딩을 위해 사용될 코드 구조를 설명하는 마이크로코드에 있는 명령의 실행을 포함한다. Z 비트들을 포함하는 코드워드의 인코딩을 구현하기 위해, 각각의 N 비트 명령은 저장된 마이크로코드 명령 정보 및 하나 이상의 카운터들 중 일부에 의해 제어되는 연속적인 K개의 단계들로 구현된다.
본 발명의 다양한 실시예들에서, 제안된 인코더는 투영된 그래프로서 동일한 레이트를 공유하는 상이한 코드들을 생성할 수 있으나, 상이한 코드워드 길이들을 가진다. 이것은 다수의 단계들이 각각의 명령에 대하여 실행되면서, K 대신에 K의 제수인 선택된 리프팅 인자 제어값인 SK를 이용하여 달성된다. 보다 구체적으로, 곱 리프팅의 그룹 Ψ1은 여전히 두 개의 그룹들 Ψ11112의 직접-곱일 수 있으며, 여기서 SK는 행렬 Ψ12의 차원이고 J는 Ψ11의 차원이며, 그리하여 K=J x SK이다. 특별한 경우로서, Ψ11은 단일 엘리먼트 1의 그룹일 수 있고 Ψ12는 Ψ1이며, 그리하여 SK=K이고 J=1일 수 있다. 어떤 경우에도, 리프팅된 그래프에서, 리프팅 그룹에 있는 Ψ11 컴포넌트를 무시하면, 리프팅 그래프는 리프팅 인자 Z/J=SK x N을 가지게 된다. 이것을 보기 위한 다른 방법은 원래의 그래프를 취하여 리프팅 그룹 Ψ11을 통해 투영하는 것이며, 그리하여 패리티 검사 행렬에서, Z x Z 치환 행렬을 나타내는 모든 0이 아닌 엔트리는 이제 Z/J x Z/J 치환 행렬로 투영된다. 이와 같이, 더 큰 그래프에서의 행렬 곱셈으로서 인코딩 프로세스의 동일한 시퀀스는 여전히 그룹 이론의 첫번째 원리에 의해 행렬 역변환
Figure 112008065762299-PAT00029
에 대하여 투영된 그래프를 보유한다.
그리하여, 리프팅 인자 Z를 가지는 더 큰 그래프를 서술하는 마이크로코드는 또한 리프팅 인자 Z/J=SK x N를 가지는 사용된 그래프를 서술하는 마이크로코드이다. Z에 대한 경우와 관련하여 위에서 설명된 바와 같은 동일한 논의 선상에서, 저장된 인코더 서술 정보 모듈(372)에 저장된 명령 정보의 일부에 의해 제어되는 시퀀스의 SK 단계들의 마이크로코드 내에 있는 각각의 명령을 실행함으로써 리프팅 인자 SK x N을 가지는 코드를 인코딩하기 위해 N-비트 벡터 연산을 수행하는 동일한 인코더를 사용할 수 있다.
Ψ1이 여전히 본 발명의 다양한 구현들에 있는 경우인 두 개의 다른 그룹들의 직접-곱 Ψ111'xΨ12'로서 기록될 수 있다면, 동일한 마이크로코드를 공유하는 상이한 블록 길이들의 다른 코드들이 존재한다. 본 발명에 따른, 병렬 계산 N을 가지는 동일한 인코더는 대응하는 SK를 특정함으로써 리프팅 인자 Z/J'를 가지는 코드를 인코딩할 수 있으며, 여기서 J'는 Ψ11'의 차원이다. 또한 Ψ1의 추가적인 구조는 동일한 인코더 하드웨어를 통해 인코딩 가능한 상이한 블록 길이들을 가지는 더 많은 코드들이 생기게 할 수 있다. 그러므로, 그룹 구조에 따라 SK를 제어함으로써, 인코더는 상이한 블록 길이들을 가지는 LDPC 코드들의 클래스를 생성할 수 있다.
도 300에서, 코드워드 길이 선택 신호는 생성된 코드워드들의 길이를 제어할 것이기 때문에, 코드워드 길이 선택 신호로서 서비스될 수 있는 선택된 코드 리프팅 인자는 코드 리프팅 인자 제어 신호(348)를 통해 특정될 수 있다. 신호(348)는 내부 루프 카운터(370)로 제공되며 내부 루프 카운터(370)의 최대 카운터를 결정한다.
본 발명의 인코더의 유연성과 이러한 유연성이 제어 코드의 사용을 통해 구현될 수 있는 용이성은 다음의 제어 코드 예로부터 명백해질 것이다. 다음의 코드는 저장된 인코더 서술 정보 모듈(372)에 저장되며, 인코딩 연산을 구현하기 위해 예컨대 한번에 하나의 라인이 실행되는 코드 서술 정보로서 제공될 수 있다.
다음의 테이블 1은 최대 리프팅 인자 Z=64를 가지는 코드 구조에 대응하는, 예시적인 제어 코드, 예컨대 마이크로코드의 명령들의 리스트인 테이블 1A 및 1B의 조합으로 구성된다. 예를 들어, 코드는 N=16, K=4 및 L=10의 경우에 대하여 설계되었다. Z=KxN이고 그리하여 Z=64=4x16이다. 지원되는 최대 코드워드 길이는 KxNxL일 것이며, 상기 예에서는 640이다. 코드에 의해 설명되는 투영된 그래프는 4개의 검사 노드들과 10개의 변수 노드들을 가진다. 최대 리프팅 인자 Z에 의해 리프팅될 때, 이것은 256(64x4)개의 검사 노드들과 640(64x10)개의 변수 노드들을 가지는 코드 구조를 가지게 된다. 하드웨어는 병렬 계산 N(N=16)의 레벨에서 동작하도록 설계된다. 이러한 실시예에서, 코드워드 길이를 특정하기 위해 사용되는 리프팅 인자 제어 신호 SK는 K의 임의의 제수일 수 있으며, 여기서 위에서 논의된 바와 같이 K는 4(K=Z/N=64/16), 즉, 지원되는 최대 리프팅 인자 제어값이다. 그리하여, 테이블 1의 마이크로코드의 다수의 반복들을 제어하기 위해 상이한 리프팅 인자 제어 신호들을 선택함으로써, 3개의 상이한 길이들에 대응하는 코드워드들을 인코딩할 수 있으며, 예를 들어, SK=1이면 코드워드 길이는 160(1x16x10) 비트일 것이고, SK=2이면 코드워드 길이는 320(2x16x10) 비트일 것이고, SK=K=4이면 코드워드 길이는 640(4x16x10) 비트일 것이다. 테이블 1에 도시된 마이크로코드의 op 열에서, 1은 판독을 표시하기 위해 사용되며, 0은 기록 명령을 표시하기 위해 사용된다. 제어값들 r1 및 r2는 값 r에 저장된다. r1은 N에 의해 나누어질 때 r의 정수 제수로서 값 r로부터 선택된다. 즉, r1=r div N이다. r2는 r/N의 모듈러스(modulus)를 취함으로써 값 r로부터 선택된다. 이번 예에서, N=16이다. 예시적으로, 제 1 명령은 1 43 4로 가정한다. 이러한 명령은 판독(op=1) 명령으로서 해석될 것이며, r1=(r div N)=(43 div 16)=2이고, r2=(r mod N)=(43 mod 16)=11이 된다. 제어값 a는 테이블로부터 직접 제공되며, 제 1 명령의 경우에는 4이다. 제어값 a가 예시적인 마이크로코드에 대하여 0. . . L-1, 예를 들어, 0. . . 9 사이의 범위 내에 있으면, 액세스된 메모리는 코드워드 저장을 위해 사용되며, 예컨대 K개 의 블록들(318, 320, 322) 중 하나가 액세스된다. 제어값 a가 상기 범위 0. . . L-1을 벗어나면, 예를 들어, 예시적인 마이크로코드에서 제어값 a가 10이면, 액세스된 메모리는 값들의 임시적인 저장을 위해 사용되며, 예컨대 K개의 블록들(319, 321, 323) 중 하나가 액세스된다.
테이블 1A
Figure 112008065762299-PAT00030
테이블 1B
Figure 112008065762299-PAT00031
본 발명의 방법들 및 장치는, 예를 들어, 에러들을 예방 및/또는 정정하기 위한 인코딩 및/또는 디코딩이 유용할 수 있는 무선 터미널들, 기지국들, 데이터 저장 장치들 및 다른 타입들의 장치들을 포함하는 폭넓고 다양한 장치들을 구현하기 위해 사용될 수 있다.
도 4는 본 발명의 방법들을 이용하는 LDPC 인코더/디코더 장치에 따라 구현 된 예시적인 무선 단말(WT;1000), 예를 들어 이동 노드의 도면이다. 예시적인 WT(1000)는 수신기(1002), 수신기 안테나(1004), 프로그래밍 가능한 LDPC 디코더(1006), 송신기(1008), 송신기 안테나(1010), 프로그래밍 가능한 LDPC 인코더(1012), 프로세서(1014), 사용자 I/O 장치(1015) 및 메모리(1016)를 포함한다. (도 3의 디코더(300)를 이용하여 구현될 수 있는) 프로그래밍 가능한 LDPC 디코더(1006), 프로그래밍 가능한 LDPC 인코더(1012), 프로세서(1014), 사용자 I/O 장치(1015) 및 메모리(1016)는 각종 엘리먼트가 데이터 및 정보를 교환할 수 있는 버스(1018)에 의해 함께 연결된다.
수신기(1002)는 WT(1000)가 다른 장치로부터의 신호들, 예를 들어 기지국으로부터의 인코딩된 다운링크 신호들을 수신할 수 있는 수신기 안테나(1004)에 연결된다. 수신기(1002)는 또한 본 발명에 따라 수신된 다운링크 신호들을 디코딩할 수 있는 프로그래밍 가능한 LDPC 디코더(1006)에 연결된다. 수신된 신호들은 예를 들어 LDPC 코딩된 데이터 외에도, 수신되고 있는 데이터를 인코딩하는데 사용되는 LDPC 코드 구조 및/또는 수신된 데이터에 포함된 코드워드의 코드워드 길이를 지시하는데 사용되는 신호들, 예를 들어 제어 신호를 포함할 수 있다. 수신된 데이터는 서로 다른 애플리케이션에 대응하는 코드워드들을 포함할 수 있다. 발명에 따르면, 디코더는 제 1 코드 구조 및 코드워드 길이에 대응하는 데이터의 디코딩으로부터 제 2 코드 구조 및 제 2 코드워드 길이에 대응하는 데이터의 디코딩으로 전환할 수 있다. 제 1 및 제 2 코드워드 구조는 수신된 정보에 포함된 정보에 응답하여 적절한 코드 구조 정보, 예를 들어 마이크로코드 형태의 제어 코드로 로딩되는 디코더에 따라 다를 수도 있다. 제어 정보는 보통 제어 정보의 고속 검출 및 해석을 용이하게 하기 위해 LDPC 코드를 사용하여 인코딩되지 않는다. 제 1 및 제 2 코드워드 길이 또한 다를 수 있다. 어떤 경우에, 제 1 및 제 2 코드 구조는 동일하지만 서로 다른 애플리케이션에 대응하는 데이터의 코드워드 길이가 다를 수도 있다. 이러한 경우, 코드 구조 정보는 서로 다른 크기의 코드워드를 디코딩하기 위해 업데이트될 필요가 없으며, 수신된 데이터의 코드워드 길이가 변경될 때 단지 코드워드 길이 정보, 예를 들어 리프팅 팩터 정보가 디코더에 공급될 필요가 있다. 코드워드 길이 정보는 사용되는 코드 구조에 대한 코드 리프팅 팩터로서 지정될 수 있다. 후술하는 바와 같이, 디코딩 목적으로 코드워드 길이를 설정하기 위해 코드워드 길이 정보가 사용될 수 있는 동시에 프로그래밍 가능한 LDPC 디코더를 제어하기 위해 코드 구조 정보, 예를 들어 제어 코드가 사용될 수 있다. 이러한 정보는 메모리(1016)로부터 버스(1018)를 통해 디코더(1006)로 전달될 수 있다.
송신기(1008)는 WT(1000)가 인코딩된 업링크 신호들을 포함하는 업링크 신호들을 기지국에 전송할 수 있게 하는 송신기 안테나(1010)에 연결된다. 송신기(1008)는 전송 전에 각종 업링크 신호들, 예를 들어 서로 다른 애플리케이션에 대응하는 데이터 신호들을 인코딩하는 프로그래밍 가능한 LDPC 인코더(1012)에 연결된다. 인코더는 서로 다른 코드 구조에 대응하는 서로 다른 코드 서술 정보 세트, 예를 들어 마이크로코드와 같은 서로 다른 제어 코드 세트로 로딩될 수 있다. 게다가, 인코더(1012)에는 인코더(1012)에 의해 생성된 코드워드의 길이를 제어하는데 사용되는 코드워드 길이 정보가, 예를 들어 코드 리프팅 팩터 정보 형태로 공 급될 수 있다. 코드워드 구조 및/또는 코드워드 길이를 선택하는 정보가 수신된 정보로부터 취득될 수 있는데, 예를 들면 인코더가 데이터를 생성하는 특정 애플리케이션에 의도된 수신 데이터를 디코딩하는데 사용된 것과 동일한 코드워드 구조 및 코드워드 길이를 이용하여 애플리케이션에 의해 생성된 데이터를 인코딩할 수 있다. 따라서 인코더는 무선 단말이 상호 작용하고 있는 다른 장치에 의해 사용되고 있는 인코딩 구조 및 코드워드 길이를 매칭시키도록 프로그래밍될 수 있다. 대안으로, 장치의 사용자는 특정 코드워드 구조 및/또는 코드워드 길이의 사용을 지정할 수도 있고, 또는 이러한 정보가 무선 단말에 저장된 통신 루틴 또는 다른 프로그램에 의해 지정될 수도 있다.
예를 들어 제어 명령 세트 형태의 코드 구조 정보 및/또는 코드워드 길이 정보가 메모리(1016)로부터 버스(1018)를 통해 프로그래밍 가능한 LDPC 디코더(1006) 및 프로그래밍 가능한 LDPC 인코더(1012)에 전달될 수 있다. 사용자 I/O 장치(1015), 예를 들어 키패드, 스피커, 마이크, 디스플레이 등은 사용자가 데이터 및 정보, 예를 들어 인코딩되어 다른 WT로 전달될 데이터 및 정보를 입력하고 사용자가 수신된 데이터/정보, 예를 들어 디코딩된 피어 노드로부터 수신된 데이터 및 정보를 출력 및/디스플레이하기 위한 인터페이스를 제공한다. 사용자 I/O 장치(1015)는 프로그래밍 가능한 LDPC 디코더(1006) 및/또는 프로그래밍 가능한 LDPC 인코더(1012)에 의해 사용될 데이터 세트, 코드 길이 표시자 및/또는 코드 서술 정보 세트와 관련된 코드를 사용자가 선택 및/또는 지정하게 하는 인터페이스를 제공한다.
프로세서(1014), 예를 들어 CPU는 루틴을 실행하고 메모리(1016)의 데이터/정보를 사용하여 무선 단말(1000)의 동작을 제어하고 본 발명의 방법들을 구현한다.
메모리(1016)는 인코더 코드 서술 정보 세트(1026, 1028) 그룹(1025) 및 디코더 코드 서술 정보 세트(1030, 1032) 그룹(1029)을 포함한다. 각 인코더 코드 서술 정보 세트(1026, 1028)는 데이터 인코딩에 사용될 코드의 코드 구조를 반영하는 제어 코드, 예를 들어 마이크로코드를 포함한다. 각 정보(1026, 1028) 세트는 서로 다른 코드 구조에 대응한다. 인코더 코드 서술 정보는 프로그래밍 가능한 LDPC 인코더(1012)의 인코더 제어 모듈에 로딩될 수 있으며, 예를 들어 저장된 인코더 서술 정보로서 데이터의 인코딩 제어에 사용될 수 있다. 마찬가지로, 디코더 코드 서술 정보 세트(1030, 1032) 각각은 데이터 디코딩에 사용될 코드의 코드 구조를 반영하는 제어 코드, 예를 들어 마이크로코드를 포함한다. 디코더 코드 서술 정보(1030, 1032)의 각 세트는 서로 다른 코드 구조에 대응한다. 디코더 코드 서술 정보는 프로그래밍 가능한 LDPC 디코더(1006)의 제어 모듈에 로딩될 수 있으며, 예를 들어 저장된 디코딩 서술 정보로서 데이터의 디코딩 제어에 사용될 수 있다.
메모리(1016)는 통신 루틴(102), 인코더 코드 및 코드워드 길이 선택 루틴(1022) 및 디코더 코드 및 코드워드 길이 선택 루틴(1024)을 포함한다. 통신 루틴(102)은 다른 무선 장치들과의 일반 통신 및 상호 작용을 제어할 수 있다. 소정 애플리케이션에 대해 구현되는 통신 루틴은 LDPC 코드를 이용한 데이터 인코딩 및/또는 디코딩시 특정 통신 애플리케이션에 사용될 코드 구조 및/또는 코드워드 길이 를 지정할 수 있다. 인코더 코드 및 코드워드 선택 루틴(1022)은 특정 애플리케이션에 사용될 코드 구조 및 이에 따라 대응하는 인코더 코드 서술 정보(1026, 1028)의 선택을 담당한다. 이 선택은 통신 루틴(1020)으로부터 수신된 정보, 수신기(1002)에 의해 수신되거나 사용자 입력부로부터의 정보를 기초로 이루어질 수 있다. 인코더 코드 및 코드워드 길이 선택 루틴(1022)은 선택된 코드 및 코드워드 길이에 따라 인코딩을 수행하도록 이미 구성되었다면, 선택된 코드 서술 정보를 프로그래밍 가능한 LDPC 인코더(1012)에 로딩하고 정보, 예를 들어 선택된 코드 리프팅 팩터를 프로그래밍 가능한 인코더(1012)에 공급하는 것을 담당한다. 선택된 코드 및 코드워드 길이에 따라 디코딩을 수행하도록 아직 구성되지 않았다면, 디코더 코드 및 코드워드 길이 선택 루틴(1024)은 선택된 코드 서술 정보를 프로그래밍 가능한 LDPC 디코더(1006)에 로딩하고 정보, 예를 들어 선택된 코드 리프팅 팩터를 프로그래밍 가능한 디코더(1006)에 공급하는 것을 담당한다.
인코딩 및 디코딩에 관련하여 상술한 루틴 및 정보 외에도, 메모리(1016)는 수신된 디코더 정보(1038), 예를 들어 디코딩에 사용될 코드 구조 및 코드워드 길이를 지시하는 디코더 코드 및 코드워드 길이 선택 루틴(1024)에 의해 사용되는 수신된 정보를 저장하는데 사용될 수 있다. 더욱이, 수신된 인코더 정보(1044), 예를 들어 인코딩에 사용될 코드 구조 및 코드워드 길이를 지시하는 인코더 코드 및 코드워드 길이 선택 루틴(1022)에 의해 사용된 수신 정보가 메모리(1016)에 저장될 수 있다. 디코딩에 관련된 사용자 입력 정보(1036) 및 인코딩에 관련된 사용자 입력 정보(1042) 또한 메모리(1016)에 저장된다. 이러한 정보는 디코더 정보(1038) 및 인코더 정보(1044)와 동일하거나 비슷할 수도 있지만, 수신기(1002)를 통하기보다는 사용자 I/O 장치(1015)를 통해 사용자로부터 취득된다.
소정의 실시예에서 이용가능한 프로그램 가능한 LDPC 디코더의 예에 대한 상세한 설명에 대해서는, 발명가 Tom Richardson, Hui Jin and Vladimir Novichkov에 의한, 2005년 7월 21일 출원된 미국 특허 출원, 10/895,645를 참조할 수 있으며, 이는 본 명세서에서 참조로써 통합된다. 또한 배경 정보를 제공하기 위한 참조로서, 미국 특허 6,633,856을 참조할 수 있다.
전술한 루틴 및 저장된 인코더/디코더 정보를 이용함으로써, 무선 터미널은 예를 들어, 수신기(1002)를 통해 수신된 사용자 정보 또는 정보인 수신된 정보의 함수로서 인코딩 및 디코딩 목적을 위해 상이한 코드 구조 및 코드워드 길이의 이용 사이에서 스위칭할 수 있다. 인코더/디코더 변화는 적시에 특정한 포인트에서 실행된 특정한 통상의 루틴(1020)에 의해 트리거링될 수 있다. 결론적으로, 본 발명은 코드워드 길이 제어 파라미터에서 상이한 코드 구조 및/또는 변화에 대응하는 코드 업데이트의 사용을 통해 용이하게 변경될 수 있는 하드웨어의 단일 세트를 갖는 인코딩 및 디코딩에서 상당한 정도의 유연성을 허용한다.
본 발명이 구축된 LDPC 코드 구조와 관련한 다양한 컨셉이 2003년 7월 11일 출원된, "METHOD AND APPARATUS FOR ENCODING LDPC CODES"라는 명칭의 미국 특허 출원 10/618,325DP 개시된다. 본 발명의 장치 및 발명의 장점 및 특징은 통합된 출원에서의 논의를 기초로 볼 때 이해할 수 있다.
도 5a 및 도 5b의 결합을 포함하는 도 5는 본 발명에 따라 인코딩 및 디코딩 을 수행하도록 본 발명에 따라 구현된 예시적인 통신 장치, 예를 들어 WT(1000)를 작동시키는 예시적인 방법의 흐름도(1100)이다. 단계(1102)에서 동작이 시작하여, WT(1000)에 전원이 들어와 초기화된다. 동작은 단계(1102)에서 단계(1104, 1106, 1108)로 진행한다.
단계(1104)에서, WT(1000)는 인코딩/디코딩 정보를 수신하고 그리고/또는 수신된 데이터로부터 제어 정보를 생성하도록 동작한다. 인코딩/디코딩 정보, 예를 들어 프로그래밍 가능한 LDPC 인코더(1012) 및/또는 프로그래밍 가능한 LDPC 디코더(1006)에 대한 제어 정보는 수신기(1002)를 통해 처리되는 수신 신호에 의해 그리고/또는 사용자 I/O 장치(1015)에 의해 수신된 사용자 입력으로서 수신될 수 있다. 추가로, 수신된 인코딩된 데이터는 제어 정보를 생성하도록 처리될 수 있다. 예를 들어, 서로 다른 코드 구조 정보 및/또는 서로 다른 코드워드 길이를 이용하여 다수의 디코딩 시도가 수행될 수 있다. 성공적인 디코딩시, 어떤 실시예들에서는 들어오는 데이터를 디코딩하는데 사용되어야 하는 코드 구조 및/또는 코드워드 길이를 지시하는 제어 정보가 생성되고, 어떤 실시예에서는 나가는 데이터 또한 인코딩한다. 동작은 단계(1104)로부터 연결 노드 A(1110)를 통해 단계(1112)로 진행한다. 단계(1112)에서, WT(1000)는 수신된 인코딩/디코딩 제어 정보의 타입을 결정하도록 동작한다. 단계(1112)의 결정을 기초로, 동작은 단계(1114, 1116, 1118 또는 1120)로 진행한다.
단계(1112)에서 제어 정보의 타입이 인코더 코드 구조 정보라고 판단되면, 동작은 단계(1114)로 진행한다. 단계(1114)에서, WT(1000)는 인코더(1012)에 코드 서술 정보 세트, 예를 들어 제어 정보에 의해 지시된 코드 구조 정보에 대응하는 제어 코드를 로딩하도록 동작한다. 동작은 단계(1114)로부터 접속 노드 B(1122)로 진행한다.
단계(1112)에서 정보의 타입이 인코더 코드워드 길이 정보라고 판단되면, 동작은 단계(1116)로 진행한다. 단계(1116)에서, WT(1000)는 인코더(1012)에 제어 정보에 의해 지시된 코드워드 길이에 대응하는 코드워드 길이 표시자, 예를 들어 선택된 리프팅 팩터를 공급하도록 동작한다. 동작은 단계(1116)로부터 접속 노드 B(1122)로 진행한다.
단계(1112)에서 제어 정보의 타입이 디코더 코드 구조 정보라고 판단되면, 동작은 단계(1118)로 진행한다. 단계(1118)에서, WT(1000)는 디코더(1006)에 코드 서술 정보 세트, 예를 들어 제어 정보에 의해 지시된 코드 구조에 대응하는 제어 코드를 로딩하도록 동작한다. 동작은 단계(1118)로부터 접속 노드 B(1122)로 진행한다.
단계(1112)에서 정보의 타입이 디코더 코드워드 길이 정보라고 판단되면, 동작은 단계(1120)로 진행한다. 단계(1120)에서, WT(1000)는 디코더(1006)에 코드워드 길이 표시자, 예를 들어 지시된 코드워드 길이에 대응하는 선택된 리프팅 팩터를 공급하도록 동작한다. 동작은 단계(1120)로부터 접속 노드 B(1122)로 진행한다.
접속 노드 B(1122)로부터 동작은 단계(1104)로 돌아가, WT(1104)는 다른 인코딩/디코딩 정보, 예를 들어 프로그래밍 가능한 디코더(1006) 및/또는 프로그래밍 가능한 인코더(1012)의 구성을 완성하기 위한 정보, 및/또는 디코더(1006) 및/또는 인코더(1012)의 선택된 설정, 예를 들어 코드워드 길이 설정을 변경하기 위한 정보를 기다린다.
단계(1106)에서, 이전에 구성된 프로그래밍 가능한 디코더(1006)를 포함하는 WT(1000)는 WT(1000)의 피어 노드로부터 디코딩될 데이터, 예를 들어 인코딩된 사용자 데이터를 수신기(1002)를 통해 수신하도록 동작한다. 수신된 데이터는 디코더(1006)에 전달된다. 동작은 단계(1106)에서 단계(1124)로 진행한다. 단계(1124)에서, 디코더(1006)는 디코더(1006)에 저장된 코드 서술 정보 및 디코더에 공급된 코드워드 길이 표시자 정보에 따라 데이터를 디코딩하도록 동작한다. 동작은 단계(1124)에서 단계(1106)로 진행하여, 디코딩될 추가 데이터가 수신된다.
단계(1108)에서, 이전에 구성된 프로그래밍 가능한 인코더(1012)를 포함하는 WT(1000)는 인코딩될 데이터, 예를 들어 인코딩되어 WT(1000)의 피어 노드에 전달될 WT(1000)의 사용자로부터의 입력 데이터를 사용자 I/O 장치(1015)를 통해 수신하도록 동작한다. 수신된 데이터는 인코더(1012)에 전달된다. 동작은 단계(1108)에서 단계(1126)로 진행한다. 단계(1126)에서, 인코더(1012)는 저장된 코드 서술 정보 및 인코더에 공급된 코드워드 길이 표시자 정보에 따라 데이터를 디코딩하도록 동작한다. 동작은 단계(1126)에서 단계(1108)로 진행하여, 인코딩될 추가 데이터가 수신된다.
시간에 따라, 인코더(1012) 및 디코더(1006)에 로딩된 코드워드 길이 정보에 대응하는 제어 정보, 예를 들어 선택된 리프팅 팩터가 변경되면, 코드워드 길이가 변경될 것이다. 따라서 코드워드 길이는 무선 단말이 제 1 장치 및/또는 애플리케이션에 대응하는 데이터의 수신으로부터 제 2 장치 및/또는 애플리케이션에 대응하는 데이터의 처리로 전환할 때 변경될 수 있고, 각종 구현에서는 변경될 것이다. 추가로, 인코더(1012) 및/또는 디코더(1006)에 의해 사용되는 코드 구조 정보는 무선 단말이 다른 장치와 상호 작용하고 그리고/또는 다른 애플리케이션을 구현할 때 시간에 따라 변경될 수 있다. 따라서 제 1 시점에 인코더 및 디코더는 제 1 길이 및/또는 코드 구조에 대응하는 코드워드를 처리할 수 있고, 다른 시점에는 제 2 길이 및/또는 코드 구조에 대응하는 코드워드를 처리할 수 있다. 또 다른 시점에는 본 발명의 프로그래밍 가능한 LDPC 인코더(1012) 및 디코더(1006)가 다른 코드 구조 및/또는 코드워드 길이를 사용할 수 있다. 지원되는 각종 코드워드 길이는 보통 이용 가능한 메모리의 양 및/또는 인코더(1012) 및 디코더(1006)의 가용 레지스터 수와 크기로 결정된 최대 크기까지일 것이다.
다음 특허 출원 및 특허는 LDPC 코드의 인코딩 및/또는 디코딩에 관한 정보를 제공하며, 특별히 본원에 참조로 통합된다. 2004년 2월 26일자 제출된 미국 특허 출원 S.N. 10/788,115; 2002년 4월 4일자 제출된 미국 특허 출원 S.N. 10/117,264; 및 미국 특허 출원 S.N. 10/618,325 및 US 특허 6,633,856.
본 발명의 방법 및 장치에 관한 다수의 변형이 가능하다. 예를 들어, 본 발명의 각종 특징은 하드웨어 및/또는 소프트웨어에 구현될 수 있다. 본 발명의 구현에 사용되는 모듈들은 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합으로서 구현될 수 있다. 발명의 어떤 형태들은 프로세서 실행 프로그램 명령으 로 구현될 수도 있다. 대안으로, 또는 추가로, 본 발명의 어떤 형태들은 예를 들어 ASIC와 같은 집적 회로로 구현될 수 있다. 본 발명의 장치는 소프트웨어, 하드웨어 및/또는 소프트웨어와 하드웨어의 조합에 관련된다. 본 발명에 따른 하나 이상의 방법 단계를 구현하도록 기계를 제어하는데 사용되는 명령들을 포함하는 기계 판독 가능 매체가 구상되어, 본 발명의 일부 실시예들의 범위 내에서 고려된다.
이와 같이, 본 발명은 무엇보다도 본 발명에 따라 인코딩 및/또는 디코딩을 수행하도록 프로세서를 제어하는데 사용될 수 있는 소프트웨어에 관련된다. 본 발명의 방법 및 장치는 OFDM 통신 시스템뿐 아니라 CDMA 시스템을 포함하는 다른 타입의 통신 시스템에 사용될 수 있다.
도1은 길이 10을 갖는 예시적인 정규 LDPC 코드의 2분 그래프 표현을 보여주는 도이다.
도2는 도1에 그래픽적으로 도시된 코드의 매트릭스 표현이다.
도3은 본 발명에 따라 구현되고, 본 발명의 인코딩 방법에 따라 생성되는 인코더 내의 다양한 신호들 및 메시지들의 흐름이 설명되는 예시적인 인코더를 보여주는 도이다.
도4는 본 발명에 따라 구현된 예시적인 프로그램가능한 LDPC 인코더를 사용하는 장치(예를 들면, 이동 노드)를 보여주는 도이다.
도5는 도5a 및 도 5b의 조합으로 구성되며, 본 발명에 따라 인코딩 및 디코딩을 수행하기 위해서 본 발명에 따라 구현된 예시적인 통신 장치를 동작시키는 예시적인 방법에 대한 흐름도이다.

Claims (21)

  1. LDPC 인코더를 이용하여 정보를 인코딩하는 방법으로서,
    생성될 코드워드들의 길이를 표시하는 제1 코드워드 길이 정보를 수신하는 단계;
    상기 코드워드 길이 정보를 LDPC 인코더의 제어 입력으로 제공하는 단계;
    인코딩될 데이터를 수신하도록 상기 LDPC 인코더를 동작시키는 단계; 및
    생성될 상기 코드워드들의 표시된 길이에 대한 수신된 데이터로부터 코드워드들을 생성하도록 상기 LDPC 인코더를 동작시키는 단계를 포함하는,
    LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  2. 제1항에 있어서,
    생성될 추가의 코드워드들의 길이를 표시하는 제2 코드워드 길이 정보를 수신하는 단계를 더 포함하는데, 상기 추가의 코드워드들의 길이는 상기 제1 코드워드 길이 정보에 대응하는 제1 개수의 비트들과 상이한 제2 개수의 비트들인 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  3. 제2항에 있어서,
    상기 제1 코드워드 길이 정보는 제1 선택된 코드 리프팅 팩터 신호인 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  4. 제1항에 있어서,
    상기 인코더의 모듈에 제1 세트의 코드 구조 서술 정보를 저장하는 단계; 및
    LDPC 인코딩 동작을 실행하기 위해 저장된 제1 세트의 코드 서술 정보를 이용하는 단계를 더 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  5. 제4항에 있어서,
    상기 인코더의 상기 모듈에 제2 세트의 코드 구조 서술 정보를 저장하는 단계를 더 포함하며, 상기 제2 세트의 코드 구조 서술 정보는 상기 제1 세트의 코드 구조 정보가 대응하는 코드 구조와는 상이한 구조를 갖는 LDPC 코드에 대응하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  6. 제5항에 있어서,
    제1 장치와 통신할 경우, 상기 제1 세트의 코드 구조 정보를 이용하여 데이터를 인코딩하는 단계; 및
    제2 장치와 통신할 경우, 상기 제2 세트의 코드 구조 정보를 이용하여 데이터를 인코딩하는 단계를 더 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  7. 제6항에 있어서,
    상기 제1 세트의 코드 구조 정보는 상기 제2 세트의 코드 구조 정보가 사용되는 때로부터 적시에 상이한 포인트에서 사용되는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  8. 제4항에 있어서,
    상기 제1 세트의 코드 서술 정보를 저장하는 단계는, 상기 제1 세트의 코드 서술 정보에 대응하는 코드워드들이 사용될 것을 나타내는 신호의 수신에 응답하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  9. 제4항에 있어서,
    상기 제1 세트의 코드 서술 정보를 저장하는 단계는 상기 제1 세트의 코드 서술 정보에 대응하는 코드 구조에 따라 인코딩된 코드워드들을 포함하는 신호의 수신에 응답하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  10. 제4항에 있어서,
    상기 제1 세트의 코드 서술 정보는 인코더 제어 명령들을 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  11. 제10항에 있어서,
    각각의 인코더 제어 명령은 판독 및 기록 동작 표시자 중 하나를 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  12. 제11항에 있어서,
    각각의 인코더 제어 명령은 순환 제어 정보를 더 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  13. 제11항에 있어서,
    각각의 인코더 제어 명령은 메모리 어드레스 정보를 더 포함하는 것을 특징으로 하는 LDPC 인코더를 이용하여 정보를 인코딩하는 방법.
  14. 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법으로서,
    제1 시간 기간 동안, 제1 세트의 코드 구조 서술 정보를 LDPC 인코더의 모듈에 저장하는 단계 -여기서, 상기 제1 세트의 코드 구조 서술 정보는 제1 LDPC 코드 구조에 대응함-;
    상기 저장된 제1 세트의 코드 서술 정보를 이용하여 LDPC 인코딩 연산을 실행하도록 상기 LDPC 인코더를 동작시키는 단계;
    제2 시간 기간 동안, 제2 세트의 코드 구조 서술 정보를 LDPC 인코더의 모듈에 저장하는 단계 -여기서, 상기 제2 세트의 코드 구조 서술 정보는 제2 LDPC 코드 구조에 대응함-; 및
    상기 저장된 제2 세트의 코드 서술 정보를 이용하여 LDPC 인코딩 연산을 실행하도록 상기 인코더를 동작시키는 단계를 포함하는,
    프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  15. 제14항에 있어서,
    상기 제1 및 제2 세트의 저장된 코드 구조 서술 정보는 인코딩 연산들을 실행하기 위해 상이한 시간 기간 동안 이용되는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  16. 제14항에 있어서,
    상기 제1 세트의 코드 서술 정보를 저장하는 단계는, 상기 제1 세트의 코드 서술 정보에 대응하는 코드워드들이 사용될 것을 나타내는 신호의 수신에 응답하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  17. 제14항에 있어서,
    상기 제1 세트의 코드 서술 정보를 저장하는 단계는, 상기 제1 세트의 코드 서술 정보에 대응하는 코드 구조에 따라 인코딩된 코드워드들을 포함하는 신호의 수신에 응답하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  18. 제14항에 있어서,
    상기 제1 세트의 코드 서술 정보는 인코더 제어 명령들을 포함하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  19. 제18항에 있어서,
    각각의 인코더 제어 명령은 판독 및 기록 연산 표지자 중 하나를 포함하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  20. 제19항에 있어서,
    각각의 인코더 제어 명령은 순환 제어 정보를 더 포함하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
  21. 제20항에 있어서,
    각각의 인코더 제어 명령은 메모리 어드레스 정보를 더 포함하는 것을 특징으로 하는 프로그램 가능한 LDPC 인코더 시스템을 구현하는 방법.
KR1020087022801A 2004-07-21 2005-07-20 Ldpc 인코딩 방법 KR100905814B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/895,547 US7346832B2 (en) 2004-07-21 2004-07-21 LDPC encoding methods and apparatus
US10/895,547 2004-07-21

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077004105A Division KR100905813B1 (ko) 2004-07-21 2005-07-20 Ldpc 인코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080095908A true KR20080095908A (ko) 2008-10-29
KR100905814B1 KR100905814B1 (ko) 2009-07-02

Family

ID=35658679

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020077004105A KR100905813B1 (ko) 2004-07-21 2005-07-20 Ldpc 인코딩 방법 및 장치
KR1020087022801A KR100905814B1 (ko) 2004-07-21 2005-07-20 Ldpc 인코딩 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020077004105A KR100905813B1 (ko) 2004-07-21 2005-07-20 Ldpc 인코딩 방법 및 장치

Country Status (12)

Country Link
US (2) US7346832B2 (ko)
EP (1) EP1787397B1 (ko)
KR (2) KR100905813B1 (ko)
CN (3) CN101917200B (ko)
AU (3) AU2005269729B2 (ko)
CA (2) CA2577793C (ko)
NO (1) NO20070970L (ko)
NZ (1) NZ553354A (ko)
RU (1) RU2395902C2 (ko)
UA (1) UA91513C2 (ko)
WO (1) WO2006014742A2 (ko)
ZA (1) ZA200701497B (ko)

Families Citing this family (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
CN101395804B (zh) * 2004-09-17 2011-09-07 Lg电子株式会社 使用ldpc码编码和解码的方法
US7900127B2 (en) * 2005-01-10 2011-03-01 Broadcom Corporation LDPC (Low Density Parity Check) codes with corresponding parity check matrices selectively constructed with CSI (Cyclic Shifted Identity) and null sub-matrices
KR101102396B1 (ko) * 2006-02-08 2012-01-05 엘지전자 주식회사 이동통신 시스템에서의 코드워드 크기 정합 방법 및 송신장치
US7801200B2 (en) * 2006-07-31 2010-09-21 Agere Systems Inc. Systems and methods for code dependency reduction
US7779331B2 (en) 2006-07-31 2010-08-17 Agere Systems Inc. Systems and methods for tri-column code based error reduction
US7802163B2 (en) * 2006-07-31 2010-09-21 Agere Systems Inc. Systems and methods for code based error reduction
US20080059869A1 (en) * 2006-09-01 2008-03-06 The Regents Of The University Of California Low cost, high performance error detection and correction
US20080155148A1 (en) * 2006-10-26 2008-06-26 Ozgur Oyman Cooperative communication of data
US7971125B2 (en) * 2007-01-08 2011-06-28 Agere Systems Inc. Systems and methods for prioritizing error correction data
EP2106635A2 (en) 2007-01-24 2009-10-07 QUALCOMM Incorporated Ldpc encoding and decoding of packets of variable sizes
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
US7930621B2 (en) 2007-06-01 2011-04-19 Agere Systems Inc. Systems and methods for LDPC decoding with post processing
US8196002B2 (en) * 2007-06-01 2012-06-05 Agere Systems Inc. Systems and methods for joint LDPC encoding and decoding
JP2010541375A (ja) * 2007-09-28 2010-12-24 アギア システムズ インコーポレーテッド 複雑度を低減したデータ処理のためのシステムおよび方法
US8473824B1 (en) * 2008-09-08 2013-06-25 Marvell International Ltd. Quasi-cyclic low-density parity-check (QC-LDPC) encoder
US8095859B1 (en) * 2008-01-09 2012-01-10 L-3 Communications, Corp. Encoder for low-density parity check codes
US8161348B2 (en) * 2008-02-05 2012-04-17 Agere Systems Inc. Systems and methods for low cost LDPC decoding
US8245104B2 (en) 2008-05-02 2012-08-14 Lsi Corporation Systems and methods for queue based data detection and decoding
US8018360B2 (en) * 2008-05-19 2011-09-13 Agere Systems Inc. Systems and methods for mitigating latency in a data detector feedback loop
US8166364B2 (en) * 2008-08-04 2012-04-24 Seagate Technology Llc Low density parity check decoder using multiple variable node degree distribution codes
US8660220B2 (en) * 2008-09-05 2014-02-25 Lsi Corporation Reduced frequency data processing using a matched filter set front end
US8261166B2 (en) * 2008-09-17 2012-09-04 Seagate Technology Llc Node processor for use with low density parity check decoder using multiple variable node degree distribution codes
US8245120B2 (en) * 2008-09-17 2012-08-14 Lsi Corporation Power reduced queue based data detection and decoding systems and methods for using such
US8321752B1 (en) 2008-11-12 2012-11-27 Marvell International Ltd. Integrated 2-level low density parity check (LDPC) codes
US20110080211A1 (en) * 2008-11-20 2011-04-07 Shaohua Yang Systems and Methods for Noise Reduced Data Detection
US7990642B2 (en) * 2009-04-17 2011-08-02 Lsi Corporation Systems and methods for storage channel testing
US8443267B2 (en) * 2009-04-28 2013-05-14 Lsi Corporation Systems and methods for hard decision assisted decoding
US8250434B2 (en) * 2009-06-18 2012-08-21 Lsi Corporation Systems and methods for codec usage control during storage pre-read
US8352841B2 (en) * 2009-06-24 2013-01-08 Lsi Corporation Systems and methods for out of order Y-sample memory management
US8312343B2 (en) * 2009-07-28 2012-11-13 Lsi Corporation Systems and methods for re-using decoding parity in a detector circuit
US8458553B2 (en) 2009-07-28 2013-06-04 Lsi Corporation Systems and methods for utilizing circulant parity in a data processing system
US8250431B2 (en) * 2009-07-30 2012-08-21 Lsi Corporation Systems and methods for phase dependent data detection in iterative decoding
US8321746B2 (en) 2009-07-30 2012-11-27 Lsi Corporation Systems and methods for quasi-cyclic LDPC code production and decoding
US8266505B2 (en) 2009-08-12 2012-09-11 Lsi Corporation Systems and methods for retimed virtual data processing
US8176404B2 (en) * 2009-09-09 2012-05-08 Lsi Corporation Systems and methods for stepped data retry in a storage system
US8880976B2 (en) * 2009-09-25 2014-11-04 Stmicroelectronics, Inc. Method and apparatus for encoding LBA information into the parity of a LDPC system
US8688873B2 (en) 2009-12-31 2014-04-01 Lsi Corporation Systems and methods for monitoring out of order data decoding
US8683306B2 (en) * 2010-01-04 2014-03-25 Lsi Corporation Systems and methods for data detection including dynamic scaling
US8578253B2 (en) 2010-01-04 2013-11-05 Lsi Corporation Systems and methods for updating detector parameters in a data processing circuit
US8743936B2 (en) * 2010-01-05 2014-06-03 Lsi Corporation Systems and methods for determining noise components in a signal set
US8448041B1 (en) * 2010-02-01 2013-05-21 Sk Hynix Memory Solutions Inc. Multistage LDPC encoding
US8443257B1 (en) 2010-02-01 2013-05-14 Sk Hynix Memory Solutions Inc. Rate-scalable, multistage quasi-cyclic LDPC coding
US8572463B2 (en) * 2010-02-01 2013-10-29 Sk Hynix Memory Solutions Inc. Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
US8504894B1 (en) 2010-03-04 2013-08-06 Sk Hynix Memory Solutions Inc. Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
CN101800627B (zh) * 2010-03-16 2012-12-05 北京海格神舟通信科技有限公司 一种多码率兼容的高速ldpc编码器的硬件实现
US8161351B2 (en) 2010-03-30 2012-04-17 Lsi Corporation Systems and methods for efficient data storage
US9343082B2 (en) 2010-03-30 2016-05-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for detecting head contact
US8418019B2 (en) 2010-04-19 2013-04-09 Lsi Corporation Systems and methods for dynamic scaling in a data decoding system
US8443249B2 (en) 2010-04-26 2013-05-14 Lsi Corporation Systems and methods for low density parity check data encoding
US8527831B2 (en) 2010-04-26 2013-09-03 Lsi Corporation Systems and methods for low density parity check data decoding
US8381071B1 (en) 2010-05-21 2013-02-19 Lsi Corporation Systems and methods for decoder sharing between data sets
US8381074B1 (en) 2010-05-21 2013-02-19 Lsi Corporation Systems and methods for utilizing a centralized queue based data processing circuit
US8208213B2 (en) 2010-06-02 2012-06-26 Lsi Corporation Systems and methods for hybrid algorithm gain adaptation
US8979860B2 (en) 2010-06-24 2015-03-17 DePuy Synthes Products. LLC Enhanced cage insertion device
US8773794B2 (en) 2010-09-13 2014-07-08 Lsi Corporation Systems and methods for block-wise inter-track interference compensation
US8295001B2 (en) 2010-09-21 2012-10-23 Lsi Corporation Systems and methods for low latency noise cancellation
US9219469B2 (en) 2010-09-21 2015-12-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for filter constraint estimation
US8443250B2 (en) 2010-10-11 2013-05-14 Lsi Corporation Systems and methods for error correction using irregular low density parity check codes
US8385014B2 (en) 2010-10-11 2013-02-26 Lsi Corporation Systems and methods for identifying potential media failure
US8560930B2 (en) 2010-10-11 2013-10-15 Lsi Corporation Systems and methods for multi-level quasi-cyclic low density parity check codes
US8661071B2 (en) 2010-10-11 2014-02-25 Lsi Corporation Systems and methods for partially conditioned noise predictive equalization
US8750447B2 (en) 2010-11-02 2014-06-10 Lsi Corporation Systems and methods for variable thresholding in a pattern detector
US8566379B2 (en) 2010-11-17 2013-10-22 Lsi Corporation Systems and methods for self tuning target adaptation
US8667039B2 (en) 2010-11-17 2014-03-04 Lsi Corporation Systems and methods for variance dependent normalization for branch metric calculation
WO2012094179A1 (en) 2011-01-07 2012-07-12 Marvell World Trade Ltd. Low latency simd architecture for multiple iterative decoders arranged parallel
EP2477335B1 (en) * 2011-01-18 2019-05-29 Samsung Electronics Co., Ltd. Apparatus and method for transmitting and reveiving data in communication/broadcasting system
US8810940B2 (en) 2011-02-07 2014-08-19 Lsi Corporation Systems and methods for off track error recovery
US8699167B2 (en) 2011-02-16 2014-04-15 Lsi Corporation Systems and methods for data detection using distance based tuning
US8446683B2 (en) 2011-02-22 2013-05-21 Lsi Corporation Systems and methods for data pre-coding calibration
US8854753B2 (en) 2011-03-17 2014-10-07 Lsi Corporation Systems and methods for auto scaling in a data processing system
US8693120B2 (en) 2011-03-17 2014-04-08 Lsi Corporation Systems and methods for sample averaging in data processing
US8611033B2 (en) 2011-04-15 2013-12-17 Lsi Corporation Systems and methods for selective decoder input data processing
US8670955B2 (en) 2011-04-15 2014-03-11 Lsi Corporation Systems and methods for reliability assisted noise predictive filtering
US8887034B2 (en) 2011-04-15 2014-11-11 Lsi Corporation Systems and methods for short media defect detection
US8560929B2 (en) 2011-06-24 2013-10-15 Lsi Corporation Systems and methods for non-binary decoding
US8566665B2 (en) 2011-06-24 2013-10-22 Lsi Corporation Systems and methods for error correction using low density parity check codes using multiple layer check equations
US8499231B2 (en) 2011-06-24 2013-07-30 Lsi Corporation Systems and methods for reduced format non-binary decoding
US8819527B2 (en) 2011-07-19 2014-08-26 Lsi Corporation Systems and methods for mitigating stubborn errors in a data processing system
US8879182B2 (en) 2011-07-19 2014-11-04 Lsi Corporation Storage media inter-track interference cancellation
US8830613B2 (en) 2011-07-19 2014-09-09 Lsi Corporation Storage media inter-track interference cancellation
US8539328B2 (en) 2011-08-19 2013-09-17 Lsi Corporation Systems and methods for noise injection driven parameter selection
US8854754B2 (en) 2011-08-19 2014-10-07 Lsi Corporation Systems and methods for local iteration adjustment
US9026572B2 (en) 2011-08-29 2015-05-05 Lsi Corporation Systems and methods for anti-causal noise predictive filtering in a data channel
US8661324B2 (en) 2011-09-08 2014-02-25 Lsi Corporation Systems and methods for non-binary decoding biasing control
US8681441B2 (en) 2011-09-08 2014-03-25 Lsi Corporation Systems and methods for generating predictable degradation bias
US8767333B2 (en) 2011-09-22 2014-07-01 Lsi Corporation Systems and methods for pattern dependent target adaptation
US8850276B2 (en) 2011-09-22 2014-09-30 Lsi Corporation Systems and methods for efficient data shuffling in a data processing system
US8689062B2 (en) 2011-10-03 2014-04-01 Lsi Corporation Systems and methods for parameter selection using reliability information
US8578241B2 (en) 2011-10-10 2013-11-05 Lsi Corporation Systems and methods for parity sharing data processing
US8479086B2 (en) 2011-10-03 2013-07-02 Lsi Corporation Systems and methods for efficient parameter modification
US8862960B2 (en) 2011-10-10 2014-10-14 Lsi Corporation Systems and methods for parity shared data encoding
US8443271B1 (en) 2011-10-28 2013-05-14 Lsi Corporation Systems and methods for dual process data decoding
US8683309B2 (en) 2011-10-28 2014-03-25 Lsi Corporation Systems and methods for ambiguity based decode algorithm modification
US8527858B2 (en) 2011-10-28 2013-09-03 Lsi Corporation Systems and methods for selective decode algorithm modification
US8751913B2 (en) 2011-11-14 2014-06-10 Lsi Corporation Systems and methods for reduced power multi-layer data decoding
US8531320B2 (en) 2011-11-14 2013-09-10 Lsi Corporation Systems and methods for memory efficient data decoding
US8954822B2 (en) * 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9203434B1 (en) 2012-03-09 2015-12-01 Western Digital Technologies, Inc. Systems and methods for improved encoding of data in data storage devices
KR101840252B1 (ko) * 2012-03-12 2018-03-20 에스케이하이닉스 주식회사 저밀도 패리티 검사 부호용 장치
US8605383B1 (en) 2012-05-21 2013-12-10 Western Digital Technologies, Inc. Methods, devices and systems for characterizing polarities of piezoelectric (PZT) elements of a two PZT element microactuator
CN103684477B (zh) * 2012-09-24 2017-02-01 华为技术有限公司 混合极性码的生成方法和生成装置
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9122625B1 (en) 2012-12-18 2015-09-01 Western Digital Technologies, Inc. Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US8966339B1 (en) 2012-12-18 2015-02-24 Western Digital Technologies, Inc. Decoder supporting multiple code rates and code lengths for data storage systems
US9619317B1 (en) 2012-12-18 2017-04-11 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US8797664B1 (en) 2012-12-22 2014-08-05 Western Digital Technologies, Inc. Polarity detection of piezoelectric actuator in disk drive
US9306601B2 (en) * 2013-02-13 2016-04-05 Qualcomm Incorporated LDPC design for high parallelism, low error floor, and simple encoding
US9705532B2 (en) * 2013-03-15 2017-07-11 Arris Enterprises Llc Parallel low-density parity check (LDPC) accumulation
US9513989B2 (en) 2013-03-26 2016-12-06 Seagate Technology Llc Priori information based post-processing in low-density parity-check code decoders
CN105144589B (zh) * 2013-05-02 2019-06-28 索尼公司 数据处理装置以及数据处理方法
WO2015066925A1 (zh) 2013-11-11 2015-05-14 华为技术有限公司 一种Polar码编码方法、装置
EP3113400B1 (en) 2014-03-21 2019-09-11 Huawei Technologies Co., Ltd. Polar code retransmission method and device
RU2571587C2 (ru) * 2014-04-10 2015-12-20 Самсунг Электроникс Ко., Лтд. Способ и устройство кодирования и декодирования данных в скрученном полярном коде
CN107437948B (zh) * 2014-09-17 2020-08-07 上海数字电视国家工程研究中心有限公司 针对低码率ldpc码的校验矩阵及编码方法
US9153283B1 (en) 2014-09-30 2015-10-06 Western Digital Technologies, Inc. Data storage device compensating for hysteretic response of microactuator
CN104917588A (zh) * 2015-04-13 2015-09-16 李焱 提高非视距毫米波室内通信系统传输可靠性信道编码方法
BR112017000548B1 (pt) * 2015-10-13 2023-04-11 Huawei Technologies Co., Ltd Dispositivo e método de decodificação e sistema de transmissão de sinal
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US11043966B2 (en) 2016-05-11 2021-06-22 Qualcomm Incorporated Methods and apparatus for efficiently generating multiple lifted low-density parity-check (LDPC) codes
US10454499B2 (en) 2016-05-12 2019-10-22 Qualcomm Incorporated Enhanced puncturing and low-density parity-check (LDPC) code structure
US10313057B2 (en) 2016-06-01 2019-06-04 Qualcomm Incorporated Error detection in wireless communications using sectional redundancy check information
US9917675B2 (en) 2016-06-01 2018-03-13 Qualcomm Incorporated Enhanced polar code constructions by strategic placement of CRC bits
US10291354B2 (en) 2016-06-14 2019-05-14 Qualcomm Incorporated High performance, flexible, and compact low-density parity-check (LDPC) code
CN109417392B (zh) * 2016-07-20 2021-10-15 华为技术有限公司 Ldpc码的编解码方法及系统
CA3026317C (en) 2016-07-27 2023-09-26 Qualcomm Incorporated Design of hybrid automatic repeat request (harq) feedback bits for polar codes
JP6810790B2 (ja) 2016-08-12 2021-01-06 テレフオンアクチーボラゲット エルエム エリクソン(パブル) Ldpc符号のためのレートマッチング方法
US10243638B2 (en) 2016-10-04 2019-03-26 At&T Intellectual Property I, L.P. Forward error correction code selection in wireless systems
US10270559B2 (en) 2016-10-04 2019-04-23 At&T Intellectual Property I, L.P. Single encoder and decoder for forward error correction coding
CN110024295B (zh) * 2016-11-14 2021-02-12 华为技术有限公司 可变长度准循环低密度奇偶校验qc-ldpc码的编、解码方法和装置
CN108111251B (zh) * 2016-11-24 2020-11-06 上海交通大学 应用于广播通信系统的信令码编码方法及对应的译码方法
CN108400838B (zh) * 2017-02-06 2021-05-18 华为技术有限公司 数据处理方法及设备
CN113676188A (zh) * 2017-03-03 2021-11-19 华为技术有限公司 高码率的长ldpc码
CN110583023B (zh) 2017-05-04 2022-03-01 三星电子株式会社 在通信或广播系统中用于信道编码和解码的方法和设备
KR102302366B1 (ko) * 2017-05-04 2021-09-16 삼성전자 주식회사 통신 또는 방송 시스템에서 채널 부호화/복호화 방법 및 장치
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
US10940016B2 (en) 2017-07-05 2021-03-09 Medos International Sarl Expandable intervertebral fusion cage
WO2019018120A1 (en) 2017-07-07 2019-01-24 Qualcomm Incorporated COMMUNICATION TECHNIQUES APPLYING A BASIC GRAPH SELECTION FOR A LOW DENSITY PARITY CHECK CODE
JP7464521B2 (ja) * 2017-09-11 2024-04-09 中興通訊股▲ふん▼有限公司 Ldpcコード化データを処理する方法および装置
CN113014270B (zh) * 2021-02-22 2022-08-05 上海大学 码长可配置的部分折叠极化码译码器
CN113300717B (zh) * 2021-05-19 2022-06-10 西南交通大学 一种基于码率自适应的高效化ldpc编码器电路

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3542756A (en) 1968-02-07 1970-11-24 Codex Corp Error correcting
US3665396A (en) 1968-10-11 1972-05-23 Codex Corp Sequential decoding
US4295218A (en) 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
US5293489A (en) 1985-01-24 1994-03-08 Nec Corporation Circuit arrangement capable of centralizing control of a switching network
US5271042A (en) 1989-10-13 1993-12-14 Motorola, Inc. Soft decision decoding with channel equalization
US5157671A (en) 1990-05-29 1992-10-20 Space Systems/Loral, Inc. Semi-systolic architecture for decoding error-correcting codes
US5313609A (en) 1991-05-23 1994-05-17 International Business Machines Corporation Optimum write-back strategy for directory-based cache coherence protocols
US5455704A (en) * 1991-11-08 1995-10-03 Mitsubishi Denki Kabushiki Kaisha Optical-fiber light amplifier
US5396518A (en) 1993-05-05 1995-03-07 Gi Corporation Apparatus and method for communicating digital data using trellis coding with punctured convolutional codes
US5457704A (en) 1993-05-21 1995-10-10 At&T Ipm Corp. Post processing method and apparatus for symbol reliability generation
US5526501A (en) 1993-08-12 1996-06-11 Hughes Aircraft Company Variable accuracy indirect addressing scheme for SIMD multi-processors and apparatus implementing same
US5615298A (en) 1994-03-14 1997-03-25 Lucent Technologies Inc. Excitation signal synthesis during frame erasure or packet loss
US5860085A (en) 1994-08-01 1999-01-12 Cypress Semiconductor Corporation Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
US5671221A (en) 1995-06-14 1997-09-23 Sharp Microelectronics Technology, Inc. Receiving method and apparatus for use in a spread-spectrum communication system
US5867538A (en) 1995-08-15 1999-02-02 Hughes Electronics Corporation Computational simplified detection of digitally modulated radio signals providing a detection of probability for each symbol
US5721745A (en) 1996-04-19 1998-02-24 General Electric Company Parallel concatenated tail-biting convolutional code and decoder therefor
US5968198A (en) 1996-08-16 1999-10-19 Ericsson, Inc. Decoder utilizing soft information output to minimize error rates
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US6438180B1 (en) 1997-05-09 2002-08-20 Carnegie Mellon University Soft and hard sequence detection in ISI memory channels
GB2326253A (en) 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6195777B1 (en) 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6339834B1 (en) 1998-05-28 2002-01-15 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry Through The Communication Research Centre Interleaving with golden section increments
WO2000011791A1 (en) 1998-08-20 2000-03-02 Samsung Electronics Co., Ltd. Device and method for inserting previously known bits in input stage of channel encoder
JP2002526965A (ja) 1998-09-28 2002-08-20 アドバンスト ハードウェア アーキテクチャーズ,インコーポレイテッド ターボプロダクト符号復号器
ES2197683T3 (es) * 1998-10-13 2004-01-01 Interdigital Technology Corporation Intercalador hibrido para turbo codigos.
US6247158B1 (en) 1998-11-30 2001-06-12 Itt Manufacturing Enterprises, Inc. Digital broadcasting system and method
US6304991B1 (en) 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6397240B1 (en) 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system
US6473010B1 (en) 2000-04-04 2002-10-29 Marvell International, Ltd. Method and apparatus for determining error correction code failure rate for iterative decoding algorithms
KR20100046063A (ko) * 2000-06-16 2010-05-04 어웨어, 인크. Ldpc 코드형 변조를 위한 시스템 및 방법
US6754804B1 (en) 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US6731700B1 (en) 2001-01-04 2004-05-04 Comsys Communication & Signal Processing Ltd. Soft decision output generator
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6718504B1 (en) 2002-06-05 2004-04-06 Arc International Method and apparatus for implementing a data processor adapted for turbo decoding
EP1525664B9 (en) 2002-07-03 2015-09-02 Dtvg Licensing, Inc Method and system for memory management in low density parity check (ldpc) decoders
US7178080B2 (en) 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
CA2536259C (en) * 2002-08-20 2011-05-24 Flarion Technologies, Inc. Methods and apparatus for encoding ldpc codes
KR20040036460A (ko) * 2002-10-26 2004-04-30 삼성전자주식회사 Ldpc 복호화 장치 및 그 방법
US7702986B2 (en) * 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
KR100550414B1 (ko) * 2002-12-24 2006-02-08 한국전자통신연구원 하이브리드 재전송 시스템에서 ldpc 부호를 사용하는인코딩 장치 및 디코딩 장치
US7254769B2 (en) * 2002-12-24 2007-08-07 Electronics And Telecommunications Research Insitute Encoding/decoding apparatus using low density parity check code
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
JP4123109B2 (ja) * 2003-08-29 2008-07-23 日本ビクター株式会社 変調装置及び変調方法並びに復調装置及び復調方法
US7395495B2 (en) * 2004-01-12 2008-07-01 Intel Corporation Method and apparatus for decoding forward error correction codes
JP4555334B2 (ja) * 2004-04-28 2010-09-29 サムスン エレクトロニクス カンパニー リミテッド 可変ブロック長を有するブロック低密度パリティ検査符号の符号化/復号化装置及び方法
US7346832B2 (en) * 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
WO2006016209A1 (en) * 2004-08-05 2006-02-16 Nokia Corporation Irregularly structured, low denisty parity check codes

Also Published As

Publication number Publication date
KR100905814B1 (ko) 2009-07-02
WO2006014742A3 (en) 2009-06-18
US8533568B2 (en) 2013-09-10
AU2010200854A1 (en) 2010-04-01
CN101917199A (zh) 2010-12-15
EP1787397A2 (en) 2007-05-23
AU2010200854B2 (en) 2012-05-17
CN101432968A (zh) 2009-05-13
AU2010200856A1 (en) 2010-04-01
CN101917200A (zh) 2010-12-15
AU2005269729A1 (en) 2006-02-09
EP1787397B1 (en) 2022-11-16
CN101917200B (zh) 2012-08-15
CA2672073A1 (en) 2006-02-09
AU2005269729B2 (en) 2010-10-07
US20080163027A1 (en) 2008-07-03
RU2007106450A (ru) 2008-08-27
KR20070037643A (ko) 2007-04-05
US20060020872A1 (en) 2006-01-26
NZ553354A (en) 2010-06-25
EP1787397A4 (en) 2010-07-28
CA2577793C (en) 2009-10-06
CA2672073C (en) 2013-09-10
NO20070970L (no) 2007-04-23
CN101432968B (zh) 2012-01-11
AU2010200856B2 (en) 2012-01-12
UA91513C2 (uk) 2010-08-10
KR100905813B1 (ko) 2009-07-02
US7346832B2 (en) 2008-03-18
RU2395902C2 (ru) 2010-07-27
ZA200701497B (en) 2009-10-28
WO2006014742A2 (en) 2006-02-09
CN101917199B (zh) 2012-06-27
CA2577793A1 (en) 2006-02-09

Similar Documents

Publication Publication Date Title
KR100905814B1 (ko) Ldpc 인코딩 방법
KR100937679B1 (ko) Ldpc 디코딩 방법 및 장치
CA2516716C (en) Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130531

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 11