KR100936335B1 - Ldpc 디코딩 방법 및 장치 - Google Patents

Ldpc 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR100936335B1
KR100936335B1 KR1020087018375A KR20087018375A KR100936335B1 KR 100936335 B1 KR100936335 B1 KR 100936335B1 KR 1020087018375 A KR1020087018375 A KR 1020087018375A KR 20087018375 A KR20087018375 A KR 20087018375A KR 100936335 B1 KR100936335 B1 KR 100936335B1
Authority
KR
South Korea
Prior art keywords
code
information
decoder
decoding
ldpc
Prior art date
Application number
KR1020087018375A
Other languages
English (en)
Other versions
KR20080081993A (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 KR20080081993A publication Critical patent/KR20080081993A/ko
Application granted granted Critical
Publication of KR100936335B1 publication Critical patent/KR100936335B1/ko

Links

Images

Classifications

    • 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/0057Block 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
    • 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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
    • 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
    • H03M13/6513Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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

Abstract

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

Description

LDPC 디코딩 방법 및 장치{LDPC DECODING METHODS AND APPARATUS}
본 발명은 저밀도 패리티 검사(LDPC) 디코딩 동작을 수행하기 위한 방법 및 장치, 특히 코드워드, 예컨대 적 리프팅(product lifting)으로서 표현될 수 있는 코드 구조를 사용하여 생성된 코드워드에 대응하는 데이터를 디코딩하는데 적합한 디코딩 방법에 관한 것이다.
에러 정정 코드들은 통신 및 데이터 저장 시스템들에서 일반적으로 사용되고 있다. 최근에는 저밀도 패리티 검사(LDPC) 코드들로서 알려진 부류의 코드들에 대하여 관심이 증대되고 있다. LDPC 코드들은 입증할 수 있는 우수한 코드들이다. 다양한 채널들상에서, LDPC 코드들은 채널 용량, 즉 Claude Shannon에 의하여 설정된 전송 레이트에 대한 상한치인 것으로 제시되었다.
LDPC 코드들은 노드들 중 한 세트, 즉 가변 노드들(102)이 코드워드의 비트들에 대응하고 노드들의 다른 세트, 즉 종종 검사(check) 노드들로 불리는 제약(constraint) 노드들(106)이 코드를 한정하는 패리티 검사 제약들의 세트에 대응하는 태너 그래프(Tanner graph)들로 불리는 이분 그래프들(도 1의 전형적인 그래프(100) 참조)에 의하여 표현된다. 그래프(100)에서 에지들(104)은 제약 노드 들(106)에 가변 노드들(102)을 접속시킨다. 가변 노드 및 제약 노드는 만일 그들이 그래프에서 에지에 의하여 접속되는 경우에 이웃들이라고 불린다. LDPC 코드들의 태너 그래프 표현에 대한 대안은 패리티 검사 매트릭스 표현 H(202)이다(도 2 참조). 비트 시퀀스 x(206)는 비트 시퀀스 및 H의 적(product)이 모두- 영(all-zero)인 경우에만, 즉 Hx=0인 경우에만 코드워드이다.
가변 노드들과 일대일 연관된 비트 시퀀스는 각각의 제약 노드에 대하여 (가변 노드들과의 연관관계를 통해) 제약 노드에 인접하는 비트들이 합이 0 모듈로 2(0 modulo 2)가 되는 경우, 즉 이들이 짝수의 비트들을 포함하는 경우에만 코드의 코드워드이다.
일부의 경우에, 이들 코딩된 비트들 중 일부는 펑처링(puncture)되거나 또는 알려질 수 있다. 펑처링된 비트들은 임의의 코드 구조들에서 바람직할 수 있으며, 리프팅들(이하 참조)에서, 펑처링된 것과 알려진 비트들 모두가 상기 리프팅의 배수들이 아닌 블록 길이들을 달성하기 위하여 사용될 수 있다. 펑처링된 비트들 및 알려진 비트들은 전송된 코드워드로부터 제외될 수 있으며, 종종 제외된다.
노드, 즉 가변 노드 또는 제약 노드에 부착된 에지들의 수는 노드의 정도(degree)로서 언급된다. 정규(regular) 그래프 또는 코드는 모든 가변 노드들이 동일한 정도, 즉 j를 가지고 모든 제약 노드들이 동일한 정도, 즉 k를 가지는 그래프 또는 코드이다. 이러한 경우에, 상기 코드는 (j,k) 정규 코드라고 한다. 이들은 본래 Gallager(1961)에 의하여 고안된 코드들이다. "정규" 코드와 대조적으로, 비정규 코드는 다른 정도들을 가진 제약 노드들 및/또는 가변 노드들을 가진다. 예컨대, 일부 가변 노드들은 정도 4를 가질 수 있으며, 다른 가변 노드들은 정도 3을 가질 수 있으며, 또 다른 가변 노드들은 정도 2를 가질 수 있다.
비정규 코드들이 표현 및/또는 구현하기에 더 복잡할 수 있는 반면에, 비정규 LDPC 코드들이 정규 LDPC 코드들과 비교할 때 우수한 에러 정정/검출 성능을 제공할 수 있다는 것이 알려져 있다.
LDPC 코딩과 함께 생성된 수신된 워드들이 원래의 코드워드의 재구성된 버전을 생성하기 위하여 LDPC 디코딩 동작, 예컨대 에러 정정 및 검출 동작들을 수행함으로써 처리될 수 있다는 것을 알 것이다. 그 다음에, 재구성된 코드워드는 코딩된 원래의 데이터를 복원하기 위하여 데이터 디코딩에 이용될 수 있다. 데이터 디코딩 프로세스는 예컨대 재구성된 코드워드로부터 비트들의 특정 서브셋을 단순히 선택하는 것일 수 있다.
LDPC 디코딩 동작들은 일반적으로 메시지-패싱(passing) 알고리즘들을 포함한다. 잠재적으로 유용한 많은 메시지-패싱 알고리즘들이 존재하며, 이러한 알고리즘의 사용은 LDPC 디코딩에 제한되지 않는다. 메시징-패싱 알고리즘의 원리는 모든 노드가 에지와 연관된 비트에 대한 신뢰성에 대해 접속 에지를 통해 그 이웃들과 반복적으로 통신하는 것이며, 여기서 다음 반복의 신뢰는 현재 반복에 대한 수신된 신뢰들에 따른다.
큰 그래프 구조들에 대응하는 큰 블록 길이 LDPC 코드들은 에러 복원성과 관련하여 작은 코드들보다 많은 장점을 제공한다.
작은 그래프를 사용하여 큰 그래프 구조를 구현하기 위하여, 작은 그래프 구 조의 사본들에 다양한 퍼뮤테이션(permutation)들이 적용되며 이러한 사본들은 큰 그래프 구조를 생성하기 위하여 함께 링크될 수 있다. 디코딩 동작들에 있어서, 이러한 퍼뮤테이션 동작들은, 여기에서 퍼뮤터로서 지칭되고, 또한 예컨대 디코딩 동작의 경우의 메시지들이 LDPC 동작들을 병렬로 수행하는 벡터 처리 유닛 및 메모리 사이에서 전송되기 때문에 엘리먼트들에 퍼뮤테이션 동작을 적용하는, 퍼뮤테이터로서 지칭되는, 스위칭 장치에 의하여 구현될 수 있다.
다양한 LDPC 디코더 구현들이 공지되어 있는 한편, LDPC 디코더 하드웨어 구현 비용을 절감시킬 수 있으며 그리고/또는 디코딩할 수 있는 LDPC 코드들의 수 및/또는 LDPC 디코더에 의하여 디코딩될 수 있는 코드워드들의 길이와 관련하여 LDPC 디코더를 유연성 있게 할 수 있는 방법 및 장치에 대한 필요성이 존재한다.
본 발명은 LDPC 디코더들, 특히 하드웨어 효율적 방식으로 구현될 수 있으며 및/또는 다른 길이들의 코드워드들 및/또는 다른 코드 구조들에 대응하는 코드워드들의 디코딩을 지원함으로써 자유도를 허용하는 LDPC 디코더들에 관한 것이다.
본 발명의 모든 실시예가 아니라 일부 실시예들에서, 본 발명의 LDPC 디코더는 프로그램가능하게 만들어진다. 디코더 동작을 제어하기 위하여 사용되는 코드, 예컨대 마이크로코드를 변경시킴으로써, 다른 코드 구조에 따라 생성되는 코드워드들의 디코딩이 가능할 수 있다. 본 발명의 디코더를 포함하는 장치, 예컨대 무선 단말과 같은 통신장치는 다른 코드 구조들을 기술하는 제어 코드를 저장할 수 있다. 통신 스트림에서 또는 사용자로부터 수신된 정보에 기초하여, 수신되어 처리될 LDPC 코딩된 데이터에 대응하는 코드는 메모리로부터 식별 및 검색된다. 그 다음에, 코드는 디코더내로 로드되며, 디코딩될 데이터에 대응하는 것으로 결정되는 코드 구조의 함수로서 디코딩을 제어하기 위하여 사용된다.
일부 실시예들에 있어서, 디코더는 디코딩을 제어하기 위하여 장치에 의하여 사용될 미리 선택된 단일 코드 구조에 대응하는 제어 코드(예컨대, 마이크로코드)로써 로드된다. 제어 코드가 특정 실시예에서 고정될 수 있는 반면에, 동일한 제어 코드가 코드워드의 디코딩을 지원하기 위하여 이용가능한 메모리 및/또는 레지스터들의 최대용량에 의하여 결정된 최대 코드워드 크기까지의 다른 크기들의 코드들을 디코딩하기 위하여 본 발명에 따라 사용될 수 있다. 코드워드 크기에 따라, 디코더에 저장된 제어 명령이 실행되는 횟수가 변화할 수 있다.
선택된 코드 리프팅 팩터(code lifting factor)로서 표현될 수 있는, 코드워드 크기 표시자(indicator)는 디코딩될 코드워드의 크기를 디코더에 특정하기 위하여 사용될 수 있다. 코드워드 크기 표시자는 보통 최소 블록 크기의 배수로써 코드워드 크기를 지시할 것이다.
본 발명의 다양한 디코더들이 다른 LDPC 코드 구조들 및 다른 길이들의 코드워드들에 따라 엔코딩된 데이터를 디코딩하도록 하는 프로그램가능성을 지원하는 한편, 본 발명의 방법들 및 장치들은 단일 코드 구조 및 단일 코드워드 크기에 따라 생성된 데이터에 대하여 LDPC 디코딩 동작들을 수행하는 디코더를 구현하기 위하여 사용될 수 있다. 즉, 본 발명의 방법들 및 장치들은 다른 크기들의 코드워드들의 지원 및 프로그램가능성이 문제가 되지 않는 경우들에서조차 유용하다.
본 발명의 다양한 실시예들은 전체 LDPC 그래프가 주로 다수의 사본들 Z으로, 예컨대 작은 그래프의 Z 배로 구성되는 것처럼 보이는 임의의 계층적 구조를 가지는 LDPC 그래프들로서 표현될 수 있는 코드 구조들을 이용하여 인코딩되는 데이터에 관한 것이며, 여기서 Z는 정수이다. Z 그래프 사본들은 동일할 수 있다. 본 발명을 설명하기 위하여, 투영된 그래프로서 작은 그래프를 지칭하고, 리프팅된 그래프로서 전체 그래프를 지칭하고 리프팅 팩터로서 Z를 지칭할 것이다.
1,...,j,...,Z로써 투영된 LDPC 그래프들을 인덱싱하는 것을 고려한다. 엄격하게 말해서, 그래프 j에서 병렬 그래프 가변 노드들은 그래프 j에서 제약 노드들에만 접속된다. 본 발명에 따르면, 각각의 그래프 사본으로부터 각각 하나의 대응 에지를 포함하는 하나의 벡터 에지를 선택하며, Z 개의 에지들 내에서 퍼뮤테이션을 허용하며, 예컨대 퍼뮤팅될, 예컨대 리-오더링(re-order)될 벡터 에지내의 에지들에 대응하는 제약 노드들을 허용한다.
Ψ 로서 표시된 Z×Z 퍼뮤테이션 매트릭스들의 서브세트(보통 그룹)의 공간 내로 상기 퍼뮤테이션들을 제약할 수 있다. Ψ에서 상기 퍼뮤테이션들의 역(inverse)들은 또한 Ψ에 있다고 가정한다. 서브세트 Ψ는 일반적으로 다양한 기준을 사용하여 선택될 수 있다. 앞의 구조에 대한 주요 목적중 한 목적은 디코더들 및 엔코더들의 하드웨어 구현을 단순화하는 것이다. 따라서, 하드웨어, 예컨대 스위칭 네트워크에서 효율적으로 구현될 수 있는 퍼뮤테이션들로 Ψ을 제한하는 것이 유리할 수 있다.
미국특허 제6,633,856호에는 리프팅 구조의 장점을 취한 LDPC 디코더가 기술된다. 이러한 구조에서는 디코딩 프로세스를 벡터화한다. 특히, 벡터 에지내의 Z 개의 에지들이 퍼뮤테이션 되거나 또는 가변 노드측으로부터 제약 노드 측으로 진행할 때 투영된 그래프의 사본들 사이에서 교환되도록 한다. Z 개의 병렬 투영 그래프들에 대응하는 벡터화 메시지 패싱(디코딩) 프로세스에 있어서, 이러한 교환은 벡터화된 그래프의 한 측면으로부터 다른 측면으로 진행할 때 벡터 메시지 내의 메시지들을 퍼뮤팅함으로써 구현된다.
벡터화 디코더의 전형적인 구현을 간략하게 검토한다. 가변 노드로부터 검사 노드들로의 메시지들을 저장하고 및/또는 검사 노드로부터 가변 노드들로의 메시지들을 저장하는 메모리는 Z×E m-비트 저장 위치들에 배치된다고 가정하며, 여기서 E는 에지들의 수이며, m은 메시지에서 반송되고 1보다 큰 정수인 비트들의 수이다. 메모리는 Z 개의 m-비트 단위로 액세스되며, 다시 말해서 각각의 액세스는 Z 개의 m-비트로 판독 또는 기록한다. 이들 Z 개의 m-비트는 리프팅 그래프의 Z 개의 리프팅 에지들상의 Z 개의 메시지들에 대응한다. 설명을 편리하게 하기 위하여, 투영된 그래프의 대응 에지에 Z 개의 m-비트 메시지들의 각각의 세트를 연관시킨다. 예컨대, 투영된 그래프에서 에지 e의 메시지들을 액세스할때, 실제로는 리프팅 그래프의 Z 개의 에지들에 대응하는 Z 개의 m-비트 메시지들을 액세스한다.
일반적인 메시지-패싱 알고리즘을 상기하면, 노드에서의 메시지 업데이팅은 노드의 이웃들로부터의 모든 메시지들에 따른다. 투영된 그래프의 노드가 d개의 에지들 e1,e2,...,ed를 가진다고 가정한다. 메시지 업데이팅을 위한 에지-기반 구현은 ej의 메시지들을 판독하고, 대응 리오더링을 적용할 수 있으며; 이제 리오더링된 메시지들은 리프팅 그래프의 모든 Z-노드들에 대하여 적절한 이웃하는 그룹핑들에 속한다. 미국특허 제6,633,856호에서, 디코더 구조는 노드 처리를 위하여 Z 개의 병렬 프로세싱 유닛들을 가진다. 하나 이상의 스테이지들에서, 메시지들은 효율적으로 용이하게 구현하기 위하여 포맷 변환을 가질 수 있다. 예컨대, 다른 포맷들이 가변 노드측 및 검사 노드측상에서 사용될 수 있다.
벡터 디코더의 장점은 벡터 디코더가 구조화된 병렬처리를 제공함으로써 높은 스루풋을 달성될 수 있다는 점이다. 리프팅 구조는 업데이트된 Z 개의 노드들이 투영된 그래프의 동일한 노드에 대응하고 그들의 모든 이웃하는 각각 에지들이 투영된 그래프의 동일한 에지에 대응하기 때문에 병렬화된 프로세싱 유닛들을 단순화된 방식으로 기술한다. 리프팅(벡터) 디코더의 설명은 큰 그래프 구조를 특정하기 위하여 사용되는 작은(투영된) 그래프의 설명 외에 각 에지에 연관된 리오더링 및 노드 정보를 저장하는 것을 수반한다. 각각의 에지가 일정한 크기를 가진다고 가정하면, 디코더 정보에 대한 전체 저장 요구 사항은 투영된 그래프의 에지들의 수에 비례한다. 설명을 편리하게 하기 위하여, 본 디코더 기술 정보의 세트를 상기하면, 제어 코드는 때때로 리프팅 그래프의 디코딩 마이크로코드로도 지칭된다. 따라서, 동일한 블록 길이에 대하여, 리프팅 팩터의 증가는 일반적으로 디코딩 마이크로코드의 크기를 감소시킨다. 큰 블록 길이에 대하여, 이는 마이크로코드 저장 메모리의 크기를 현저하게 감소시킬 수 있다.
마이크로코드에 있어서 절반은 가변 노드 처리를 기술하며 다른 절반은 검사 노드 처리를 기술한다. 디코딩 프로세스는 각각이 디코딩 반복의 절반으로서 표시되는 마이크로코드의 각각의 절반을 순차적으로 실행한다. 미국특허 제6,633,856호의 실시예들은 선택적으로 또는 동시에 하나의 전체 반복으로서 공지된 LDPC 디코딩 반복의 2개의 절반(가변 노드 처리가 하나의 절반이며 검사 노드 처리가 다른 절반이다)를 수행하는 구조를 포함한다. 성공적인 디코딩은 보통 약간의 전체 반복들을 포함할 것이며, 예컨대 다수의 반복들은 그것이 공지된 코드워드로 수렴하는 포인트로 수정되는 수신 코드워드를 디코딩 처리가 생성할 때까지 요구될 수 있다.
벡터화 병렬 프로세싱에 있어서의 한 엘리먼트는 스위칭 네트워크에 의하여 용이하게 수행되는 리오더링 모듈이다. Z 개의 사본들의 내부 접속은 리오더링 모듈의 사용을 통해 이루어진다. 메시지 리오더링후에, 프로세싱은 단순히 투영된 그래프의 사본에 각각 대응하는 Z 개의 병렬 유닛들을 포함한다.
본 발명에 따라 구현되는, 구현 병렬처리 Z를 구비하는 벡터(리프팅된) LDPC 디코더는 병렬처리 1을 가진 디코더와 비교할 때 Z배의 높은 데이터 스루풋을 달성한다. 그 트레이드 오프는 이것이 하드웨어가 복잡도에 있어서 대략 Z배의 더 많은 게이트들을 수반한다는 것이다. 비록 리프팅된 그래프의 리프팅 팩터가 편리하기 때문에 구현 병렬처리를 동일하게 세팅할지라도, 이것은 필수는 아니다. 많은 경우에 이것은 바람직하지 않을 수 있다.
예컨대, 큰 리프팅 팩터 Z가 마이크로코드 저장 메모리 절약이라는 전술한 장점에 대해 큰 그래프를 기술할 때 사용된다고 가정한다. 리프팅 팩터 Z와 동일하게 구현 병렬처리를 세팅하면 초과 스루풋이 달성된다.
하드웨어 복잡성이 구현 병렬처리에 비례하나 그래프 기술 복잡성이 리프팅 팩터 Z에 비례한다면, 결과적인 스루풋이 큰 리프팅 팩터 Z를 사용하여 기술된 리프팅 그래프를 사용하는 동안 결과적인 스루풋이 과도하지 않고 요건과 매칭되도록 구현 병렬처리를 세팅할 수 있는 것이 바람직하다. 이는 프로세싱 유닛 복잡성 및 디코더 기술 저장과 관련한 장점을 가진다.
본 발명은 리프팅 팩터 Z을 가진 디코더 기술을 사용하여 구현 병렬처리 N()여기서, N은 Z의 제수임)를 이용하여 벡터 LDPC 디코더를 구현하기 위한 방법들 및 장치에 관한 것이다. 구현 병렬처리 N은 요구된 스루풋과 매칭되도록 선택될 수 있으며, 이에 따라 하드웨어 복잡성이 최소로 될 수 있다.
이는 다음과 같이 이루어질 수 있다. 리프팅 팩터 Z=K×N을 가진 리프팅 그래프에 대한 마이크로코드를 가정하면, 본 발명은 각각의 디코딩 반복을 K 반복으로 확장하는 구현 병렬처리 N을 구비한 디코더를 특정한다. 각각의 반복은 전체 마이크로코드를 통해 한번 수행되며, 구현 병렬처리 Z를 이용한 디코더에 의한 디코딩 반복의 1/K에서 종료된다. N 병렬 프로세싱 유닛이 존재하기 때문에, 전체 프로세싱 시간량은 예상된 것과 동일하게 된다. 본질적으로, 마이크로코드를 변화시키지 않고, 병렬 프로세싱을 순차 프로세싱으로 변환한다 - 리프팅 팩터 N을 사용하여 디코더를 기술한다.
더욱이, 본 발명에 따르면, 구현 병렬처리 N을 이용한 벡터 LDPC 디코더는 리프팅 팩터 Z를 구비한 디코더를 기술하는 동일한 마이크로코드로부터 동일한 레이트이나 다른 코드워드 크기를 사용하여 LDPC 코드들의 클래스를 디코딩할 수 있다. 특히, 예로서, Z이 K1×K2×N으로 팩터링 될 수 있고 투영된 그래프 코드 크기가 n이라고 가정하면(여기서, Z, K1, K2, N 및 n의 각각은 양의 정수임), 디코더는 블록 크기들, N×n, K2×N×n 및 K1×K2×N×n의 상이한 코드들을 디코딩할 수 있다.
본 발명의 다수의 추가 특징, 장점 및 이점들은 이하의 상세한 설명에 기술될 것이다.
본 발명은 LDPC 디코더들, 특히 하드웨어 효율적 방식으로 구현될 수 있는 LDPC 디코더들에 관한 것이다. 본 발명의 디코딩 방법들 및 장치는 프로그램가능 장치들 및/또는 코드워드 길이 표시자 정보를 수신하고 다른 길이들의 코드워드들을 디코딩할 수 있는 장치들로서 구현될 수 있다. 따라서, 본 발명의 디코더들이 특정 코드워드 길이의 코드워드들을 디코딩하기 위하여 사용되는 고정 장치들로서 구현될 수 있는 반면에, 다른 길이들의 코드워드들 및/또는 다른 코드 구조들에 대응하는 코드워드들의 디코딩을 지원함으로써 자유도가 향상될 수 있다.
"다중레벨 퍼뮤테이션을 사용하여 저밀도 패리티 검사(LDPC) 코드 동작을 수행하는 방법 및 장치"라는 명칭으로 2004년 2월 26일에 출원된 미국특허 출원번호 제10/788,115호는 LDPC 코드들과 함께 사용될 수 있는 프로덕트 리프팅 방법들을 개시하고 있으며, 이 출원은 여기에 참조문헌으로서 통합된다. 프로덕트 리프팅은 부그룹들의 직접-프로덕트(direct-product)로 분해될 수 있는 그룹들이 되도록 리프팅에서 사용되는 Z×Z 퍼뮤테이션 매트릭스들의 그룹을 추가로 제한한다. 예컨대, Ψ이 두 개의 그룹의 직접-프로덕트, 즉 Ψ=Ψ1×Ψ2이라고 가정한다. Ψ의 크기는 Ψi의 크기의 프로덕트와 동일하며, 여기서 Ψi는 Ki×Ki 퍼뮤테이션 매트릭스들이며, Ki는 정수이다. 추가로, 그룹 Ψi의 크기가 그룹내의 매트릭스의 크기와 동일하며, 이에 따라 Z=K2×K2이라고 가정한다.
본 발명에 따르면, 리프팅 그룹 Ψ을 프로덕트 리프팅 그룹인 것으로 한정한다. 프로덕트 리프팅은 등가적으로 다중-크기(multi-dimensional) 리프팅으로 보여질 수 있다. 투영된 코드는 크기 P, 즉 P 가변 노드들인 것으로 가정한다. 리프팅을 위하여 크기 64의 순환(cyclic) 그룹이 선택될 수 있다. 본 발명의 대안은 크기 16의 순환 그룹 및 크기 4의 순환 그룹의 프로덕트이다. 이러한 그룹은 다음과 같이 표현될 수 있다. 가역 맵 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)로 퍼뮤팅하는 것이다. 또한 이러한 그룹은 차수(order) 64를 가진다. 그러나, 결과적인 리프팅된 그래프는 16에 의한 크기 4P 코드 또는 4에 의한 크기 16P 크기 또는 64에 의한 크기 P 코드의 리프팅으로서 해석될 수 있다. 프로덕트 리프팅들에 의하여 제공된 장점들은 본 발명의 디코더와 관련하여 실현된다. 프로덕트 리프팅들을 사용하여 추가된 값은 본 발명의 특징이다. 프로덕트들이 아닌 그룹들, 예컨대 순환 그룹에 의한 리프팅들은 임의의 크기의 리프팅들을 위하여 허용되나 프로덕트 리프팅들의 융통성을 제공하지 않는다.
여기에 참조문헌으로서 통합되는 미국특허 출원번호 제10/788,115호는 프로덕트 그래프들 및 이러한 그래프들을 사용하는 잠재적 장점들을 기술한다.
본 발명은 통합된 특허 출원에 개시된 기본적인 원리들을 확장한다. 특히, 이러한 출원은 리프팅 팩터 Z=K×N를 사용하여 디코더를 구현하는 방법들 및 장치들과 구현 병렬처리 N을 사용하여 그래프를 디코딩하는 대응 방법 및 장치를 개시하고 있으며, 여기서 K, N 및 Z은 정수들이며, N<Z이다. 따라서, 본 발명은 디코더 병렬처리의 레벨을 실행하며, 예컨대 리프팅 팩터 Z보다 소수의 검사 노드들 및 /또는 가변 노드들(예컨대, N 노드들)을 병렬로 사용하는 디코더에 관한 것이다.
리프팅 팩터 Z=K×N을 가진 리프팅된 LDPC 그래프를 가진다고 가정한다. 리프팅 그룹 Ψ은 프로덕트-리프팅 그룹 Ψ=Ψ1×Ψ2인 것으로 가정되며, 여기서 K는 그룹 Ψ1의 크기이며, N은 그룹 Ψ2의 크기이다. 따라서, 전체 리프팅은 두 개의 작은 리프팅들의 프로덕트이다.
벡터화된 병렬 프로세싱의 엘리먼트는 스위칭 네트워크에 의하여 용이하게 수행되는 리오더링 모듈이다. 메시지들은 그들의 연관된 노드들, 예컨대 수행된 프로세싱에 따라 리오더링된다. Z 개의 병렬 실시예에 있어서, 구현된 프로세싱 유닛들은 투영된 그래프의 한 사본에 각각 대응하는 Z 개의 병렬 유닛들을 포함한다.
본 발명에 따르면, Z 개의 병렬 유닛들 대신에 N 개의 병렬 유닛들을 사용한다. 프로세싱시에, 본 발명의 디코더에서는 Z 개의 노드들과 대조적인 N 개의 노드들과 연관된 프로세싱을 병렬로 수행한다. 이러한 구현에 있어서, Z배의 프로덕트 리프팅에 의하여 특정된 코드를 프로세싱하는 것과 연관된 디코딩은 N 개의 병렬 유닛들이 투영된 그래프의 N 개의 사본들에 대하여 메시지 업데이트를 수행할 때마다 마이크로코드 K번 실행함으로써 수행된다. 따라서, 디코딩 또는 디코딩 패스의 j번째 실행시에, 메시지들은 투영된 그래프의 j번째 N 개의 사본들에 대하여 업데이트된다. Z=N×K이라는 것을 상기하라. 따라서, K번째 반복의 끝에서, 디코딩 패스는 완료되어야 한다.
원래의 메시지 벡터 d를 d=(d1, d2,...,dK)로 기재하며, 각각의 dj는 N m-비트 벡터이다. 리프팅 그룹이 프로덕트 리프팅 Ψ=Ψ1×Ψ2인 것으로 주어지면, 각 각의 디코더 기술로 반송된 리오더링 정보를 r=(r1, r2)로 기재하며, 여기서 r1는 그룹 Ψ1에서 리오더링 크기이며, r2는 그룹 Ψ2에서 리오더링 크기이다. 그룹 Ψi에서 벡터 d(Ki 엘리먼트의)에 대한 크기 r의 리오더링을 표현하기 위하여 기수법 Ψi(d,r)을 사용한다. 리오더링은 원래의 위치 j에서의 엘리먼트 dj가 리오더링된 데이터에서 Ψi,r(j)로서 표시된 새로운 위치로 진행하도록 위치 퍼뮤테이션으로 생각될 수 있다. 그후에 리오더링은 2-레벨 리오더링 절차로 간주될 수 있다. 제 1 레벨은 벡터 d'=(Ψ2(d1,r2), Ψ2(d2,r2), ..., Ψ2(dK,r2))를 생성하기 위해 N개의(m-비트) 엘리먼트들을 그룹 Ψ2 내에서 리오더링한다. 그후에 제 2 레벨은 벡터 d"=Ψ1(d', r1)을 발생하기 위해 K(N개의 m-비트) 엘리먼트들을 그룹 Ψ1 내에서 리오더링한다. 리오더링된 데이터 d"는 노드 처리 유니트들에 제공된다. 편리함을 위해, Ψ1,r - 1(j)는 함수 Ψ1,r(j)의 역을 표시한다.
따라서, j번째 N 사본들에 대하여, 그들의 원래의 Z 개의 m-비트 벡터 내에서의 위치는
Figure 112009039828395-pat00001
이다. j번째 디코딩 과정에서의 에지까지, 데이터
Figure 112009039828395-pat00002
를 판독하였으며, 그 어드레스는 a 및 j 모두의 함수이고, 그룹 Ψ2 내에서 r2의 양만큼 판독된 데이터를 리오더링하여 Ψ2(d1, r2)을 생성한다. 상기 메시지들의 세트는 처리 중에 N 노드들과 연관되며 적절히 정렬된 에지 메시지들의 세트에 상응한다.
이해를 돕기 위해, 우리는 한가지 예를 고려한다. 도 3의 도면부호 700는 상기 리프팅 팩터를 매칭하는 병렬 레벨을 사용하여 최대 리프팅 팩터 Z=64를 가지는 예시적인 리프팅 그래프에 대한 디코딩 프로세스를 도시한다. 리프팅 그룹은 순환(cyclic) 그룹 4 및 순환 그룹 16의 직접-프러덕트이다. 본 발명의 설명을 위해, 우리는 Z=64와 동일한 병렬 레벨을 사용하여 투영된 그래프에서 노드 v에 상응하는 64개의 다양한 노드들의 세트에 대한 디코딩 절차를 설명할 것이며, 상기 경우에 노드 v는 정도(degree) 2를 갖는다. 2와 다른 정도에 대한 디코딩 절차 또는 검사 노드들은 동일한 특성을 가질 것이다. v에 접속된 2개의 에지들로부터의 메시지들은 2개의 클럭들, a=(a0,a1,a2,a3)(701), b=(b0,b1,b2,b3)(702)에서 판독되며, 각각의 aj(bj)는 16 엘리먼트 m-비트 엘리먼트 벡터(711)이다. 시간 진행은 화살표(710)에 의해 표시된다. 상기 2개의 64 엘리먼트 데이터(701, 702)는 (r1,r2)로 표시된 리오더링 정보(708)에 의해 제어되는 64 엘리먼트 퍼뮤터를 통과하며, 상기 r1은 제 1 순환 그룹에 대한 퍼뮤테이션 정보를 나타내고, r2는 제 2 순환 그룹의 퍼뮤테이션 정보를 나타낸다. 상기 예에서, 데이터 a(701)에 대한 리오더링 정보는 (3,4)이고, 데이터 b(702)에 대한 리오더링 정보는 (1,6)이다. 따라서 리오더링 이후에, a'=(a1 4,a2 4,a3 4,a0 4)(704)이고, b'=(b3 6,b0 6,b1 6,b2 6)(705)이며, 상기 di는 순환 그룹(16) 내의 양 i 만큼 데이터 d를 퍼뮤팅한 결과를 나타낸다. 리오더링된 데이터(704, 705)는 64개의 병렬 구성가능한 노드-프로세싱 유니트들(706)을 포함하는 노드 프로세싱 모듈을 통과하며, 각각의 유니트에 의해 수행되는 상기 병렬 프로세싱은 서로 독립적이다. 그러므로, 출력 데이터 c=(c0,c1,c2,c3)(707)에서, c0는 오직 a1 및 b3에 의해 결정되고, c1는 a2 및 b0에 의해 결정되고, c2는 a3 및 b1에 의해 결정되고, c3는 a0 및 b2에 의해 결정된다. 디코더 마이크로코드 명령은 리오더링 정보 r=(r1,r2)(708) 및 노드 정보(709)를 전달한다.
도면부호 800을 포함하는 도 4는 전체 리프팅 팩터 Z=64를 지원하는 마이크로코드를 따르는 병렬처리 64(퍼뮤터 및 병렬 프로세싱 유니트 모두에서) 보다는 구현 병렬처리 16(N=16)을 이용하여 도 3에 도시된 동일한 디코딩 절차를 구현할 수 있는 방법을 도시한다. 디코딩은 4(K=4) 루프들에서 마이크로코드를 실행할 때 수행되며, 상기 Z=NxK이다. 데이터는 본 발명에 따라 디코딩을 제어하기 위해 사용된 마이크로코드에 의해 규정된 루프 카운터 및 재코딩 제어 정보 r1의 함수(function)로서 액세스된다.
디코딩의 시작시, 메모리(912)는 예컨대, 데이터 입력(901)을 통해 수신된 신호로부터 발생된 디코딩될 데이터로써 로드된다. 상기 디코딩될 데이터는 수신된 코드워드로 간주될 수 있다. 채널 간섭 및/또는 수신된 신호에 에러를 발생할 수 있는 다른 팩터들의 결과로서, 수신된 디코딩될 코드 워드는 디코딩 프로세스에 의해 검출 및/또는 정정될 에러들을 포함할 수 있다. 디코딩은 수신된 코드워드가 코드에 의해 지원되는 코드워드로 디코딩되었음을 표시하는 충족된 코드워드에 부 과된 모든 제약들에 의해서와 같이 다양한 방식들로 종료되는 것으로 결정될 수 있다. 이는 공지된 코드 워드로 수렴하는 수신된 코드워드로서 설명될 수 있다. 디코딩된 코드워드는 메모리(912)로부터 판독되고/또는 노드 처리 모듈(906)로부터 직접 출력될 수 있다.
예컨데, 제 1 프로세싱 반복과 같은 제 1 루프(827)에서 디코더는 데이터 a1(801) 및 b3(802)를 액세스하며; 제 2 루프(828)에서 디코더는 데이터 a2(803) 및 b0(804)를 액세스하며; 제 3 루프(829)에서 디코더는 데이터 a3(805) 및 b1(806)에 액세스하며; 제 4 루프(830)에서 디코더는 a0(807) 및 b2(808)에 액세스하며; 상기 ai 및 bi 는 예를 들면, 디코딩 프로세스의 일부로서 통과되는 메시지들과 같은 16 개의 m-비트 엘리먼트들을 나타낸다. 각각의 메시지는 일반적으로 메시지들의 일부에서 전달될 수 있는 신뢰도 정보를 포함하는 소프트 값과 같은 다수의 비트들을 포함한다. 예시적인 4개의 데이터 세트들은 디코딩을 제어하기 위해 사용될 코드 구조에 상응하는 전체 가변 노드들의 세트의 처리와 같은 디코딩 처리를 수행하기 위해 사용되는 전체 마이크로 코드 세트를 종료하기 위해 사용된 루프 및 다른 가변 노드들이 제공되기 때문에 연속적이지 않을 수 있다. 각각의 액세스된 데이터 유니트(801, 802, 803, 804, 805, 806, 807, 808)의 상기 16 개의 엘리먼트들은 리오더링 정보 r2(825)에 의해 제어되는 16-엘리먼트 퍼뮤터(810)를 통과한다. 리오더링된 데이터(a4 1(811),b6 3(812),a4 2(813), b6 0(814),a4 3(815),b6 1(816),a4 0(817),b6 2(818))는 디코딩 명령에서 전송된 노드 정보(826)에 의해 제어되는 16 개의 병렬 노드-처리 유니트들(820)을 포함하는 노드 처리 모듈을 통과한다. 시퀀스 c0(821), c1(822), c2(823), c3(824)은 상기 명령으로부터 발생된다. 따라서 도 3에서와 동일한 메시지 통과 결과는 대략 1/4의 하드웨어 복잡성을 가지는 4배의 처리 시간을 사용하여 도 4의 구조에 의해 달성될 수 있다. 즉, 도 4에서 디코더는 64 대신 16의 병렬 레벨을 사용하여 구현될 수 있다.
상기 설명은 리프팅 팩터 Z를 가지는 마이크로코드를 사용하여 디코딩하기 위한 병렬처리 N을 사용하는 방법을 개시하며, 상기 Z=NxK이다.
우리는 병렬 레벨 Z를 사용하는 효과를 달성하기 위해 병렬 레벨 N을 사용하여 본 발명의 K-루프 디코딩 프로세스를 구현하는 도 5에 도시된 예시적인 LDPC 디코더(900) 구현을 설명할 것이다.
도 5는 본 발명에 따라 구현된 예시적인 프로그램 가능 디코더(900)를 도시한다. 디코더(900)는 서로 다른 코드 기술 정보 세트들을 사용하여 입력(953)을 통해 로딩될 수 있다. 다른 실시예들에서, 본 발명의 디코더가 프로그램 가능하지 않은 경우에, 디코더(900)는 예를 들어 단일 코드 기술 정보 세트로써 미리 로딩되고, 입력(953)은 생략된다.
예시적인 LDPC 디코더(900)는 메모리 소스 모듈(902), N개의 엘리먼트 제어가능 퍼뮤터 모듈(904), 노드 프로세싱 모듈(N 개의 병렬 노드 프로세서들;906), 제어 모듈(910), 및 코드 리프팅 기반의 블럭 선택 모듈(908)을 포함한다. 메모리 소스 모듈(902)은 각각의 저장 위치가 다수의 비트들을 저장할 수 있는 (NxKxL) 메모리 (저장 위치들;912), 어드레스 발생 모듈(916), 및 몇몇 실시예들에서 선택적인 압축해제 모듈(914)을 포함한다. 압축 해제 모듈(914)은 노드들 사이의 디코딩 프로세스의 일부로서 통과되는 메시지들이 압축된 포맷에 저장되는 실시예에서 사용된다. 상기 경우에, 메시지들은 발생되어 압축된 포맷으로 저장될 수 있고, 추가의 처리를 위해 사용되기 전에 압축이 해제될 수 있다. 압축은 몇몇 실시예들에서 요구되지 않고 사용되지 않지만, 메시지 압축은 메모리 요구조건들을 저장할 수 있고, 따라서 몇몇 실시예들에서 구현된다.
제어 모듈(910)은 저장된 디코더 기술 정보 모듈(942), 내부 루프 카운터(940) 및 외부 루프 카운터(944)를 포함한다. 저장된 디코더 기술 정보 모듈(942)은 예를 들면, 마이크로코드와 같은 제어 코드와 같은 정보를 포함하며, 상기 코드는 디코딩될 코드 워드들의 발생을 제어하기 위해 사용된 코드의 구조를 반영하고, 따라서 수신된 엔코딩된 LDPC 코드워드들의 디코딩을 제어하는데 사용될 것이다. 제어 코드는 일반적으로 선택된 코드 리프팅 팩터 SK에 의해 표시되는 횟수, 즉 최대 지원 리프팅 팩터 K를 구현하는 명령들의 시퀀스를 포함하며, 상기 K 및 SK는 정수들이다.
도 5의 예시적인 LDPC 디코더(900)에서, 제어 모듈(910)은 마이크로 코드와 같은 제어 코드 내의 어떤 명령이 내부 루프 카운터(940)의 값에 기초하여 실행 될지를 결정한다. 내부 루프 카운터(940)는 각각의 단계에서 1만큼 증분하며, 디코딩을 제어하기 위해 사용된 저장된 코드 설명에 상응하는 마이크로 코드 내의 명령 들의 횟수와 같이 최대 카운트에 도달하면 리셋된다.
예시적인 디코더 실시예에서, 내부 루프 카운터(940)로부터 수신된 제어 신호에 응답하여 실행되는 저장된 마이크로 코드의 각각의 라인은 다음과 같은 포맷을 갖는다:
op r α nci
상기 op는 기록 동작을 표시하고,
상기 r은 예를 들면, 메시지 로테이션(rotation)과 같은 퍼뮤테이션을 제공하는 횟수이고, 정보 - r은 단일 값 r에 결합되지 않고 명령에 선택적으로 포함될 수 있는 개별 로테이션 값들 r1, r2의 압축된 표현으로 사용되며, 일반적으로 퍼뮤테이션 정보 신호들 r1 및 r2를 발생하기 위해 디코더 설명 모듈(942)에 의해 처리되고;
상기 메모리 위치 표시자 α는 특정 동작이 수행될 때 메모리(912) 내의 메모리 위치가 액세스되어야 하는 정보를 제공하기 위해 사용되는 값과 같은 메모리 위치 표시자이고;
상기 nci는 노드 처리 모듈(906)이 그 내부에 가변 노드들 또는 검사 노드들로 포함되는 노드들을 구성해야 하는지의 여부 및/또는 얼마나 많은 에지들이 노드들에 의해 처리될 것인지 및/또는 개별 노드들과 결합된 개별 비트들이 펑처링되었는지 또는 알려졌는지를 표시하는 노드 구성 정보이다.
노드에 의해 처리될 에지들의 수는 비정규 코드의 경우에 그래프와 같은 코드 구조 내의 어떤 노드가 특정 시점에서 구현되는지에 따라 변화할 것이다. 노드 제어 정보의 사용에도 불구하고, 노드 처리 모듈은 개별 검사 노드 및 가변 노드 처리 모듈들의 필요성을 방지하는 가변 노드 및 검사 노드 처리 동작들 모두를 행하도록 재구성될 수 있다.
그러나, 개별 가변 노드 및 검사 노드 처리 모듈들을 가지는 구현들이 가능하며, 이는 본 발명의 사상 내에 있다. 상기 실시예들에서, 노드 제어 구성 정보(952)는 가변 노드 및 검사 노드 처리 모듈들 모두에 제공되며, 각각의 모듈은 특정 모듈과 관련된 제어 정보를 사용할 것이다.
디코더(900)의 동작이 하기에 추가로 설명될 것이다. 저장된 디코더 기술 정보 모듈(942)은 디코딩을 제어하기 위해 사용된 코드 기술 정보를 저장한다. 내부 루프 카운터(940)에 의해 유도되는 저장된 디코더 기술 정보 모듈(942)은 예를 들면, 명령, 즉 디코딩 명령을 실행하기 위해 적절한 제어 신호들을 출력함으로써 실행된다. N개의 엘리먼트 퍼뮤터 모듈이 데이터 세트를 처리하는 각각의 클럭 사이클 동안, N개의 엘리먼트들의 세트가 메모리(912)로부터 판독된다. 기록 신호(928)가 인에이블될 때, 데이터는 예를 들면, 기록이 수행될 것임을 표시하는 저장된 제어 코드로부터 발생된 op 신호에 응답하여 인에이블된다. 판독 및 기록은 동일한 퍼뮤터 클럭 사이클에서 발생할 수 있다. 이는 기록 신호(928)가 인에이블될 때 판독이 일반적으로 기록 신호(928)의 값에 대해 각각의 퍼뮤터 클럭 사이클 관계들 동안 발생하는 것으로 주어진다면 발생할 것이다. 이는 퍼뮤터(904) 클럭 사이클에서 메모리(912)로의 기록 및 판독 모두가 발생하는 것을 허용할 때 이중 포트 메모리를 사용하거나 메모리 모듈(902)을 퍼뮤터(904)의 레이트의 2배로 동작시킴으로써 이뤄질 수 있다. 일반적으로, 디코더(900)의 엘리먼트들의 각각은 공통 클럭 신호에 의해 유도된다. 그러나, 몇몇 실시예들에서 메모리(912)는 퍼뮤터(904) 및/또는 노드 처리 모듈(906)의 주기에서 기록 및 판독 모두를 허용하도록 더 높은 레이트로 클로킹될 수 있다. 전술된 것과 같이, 명령은 예를 들면, 연산자(operator) op, 메모리 위치 표시자 α, 리오더링 정보 r 및 노드 구성 정보 nci를 포함한다.
연산자 op는 기록 신호(928)의 값을 규정하며, 예를 들어, "1"은 기록 인에이블을 표시하도록 사용될 수 있고, "0"은 기록 디스에이블을 표시할 수 있다. 기록 신호(928)는 저장된 디코더 기술 정보 모듈(942)로부터 출력되고, 메모리 소스 모듈(902)에 입력된다. 메모리 위치 정보 a는 모듈(942)로부터 메모리 소스 모듈(902)로 제공되는 제 1 어드레스 제어 신호(930)를 발생하도록 사용된다. 상기 방식에서, 메모리 소스 모듈(902)의 어드레스 발생 모듈(916)은 실행될 명령에 상응하는 정보 a를 수신한다. 리오더링 횟수 r은 2개의 부분들(r1 , r2)로 구분된다. 다양한 실시예들에서, (r1 , r2)은 각각 그룹 Ψ1 및 Ψ2 내의 엘리먼트의 리오더링을 규정하며, 상기 그룹은 노드들이 2개의 유사한 리프팅들의 함수로서 그래프 리프팅을 구현하도록 배열되는 그룹들이다. 제어값들 r1 및 r2은 값 r에 저장된다. 예시적인 실시예에서 주어진 구현을 위해 r에 의해 규정된 r1은 구현된 노드 병렬 레벨을 표시하는 N에 의해 나누어질 때 r의 정수 제수로서 값 r로부터 결정된다. 즉, r1=r 나누기 N이다. 상기 실시예에서, r2는 r/N의 모듈러스(modulus)를 취함 으로써 값 r로부터 결정된다. 예를 들어, N=16이라 가정한다. 만약 r=43이고 N=16이면, r1=(r 나누기 N)=(43 나누기 16)=2이고, r2=(r 모듈로 N)=(43 모듈로 16)임을 고려하자. 모듈(942)에 의해 r로부터 발생된 리오더링 부분 r1은 저장된 디코더 기술 모듈(942)로부터 출력된 블럭 정렬 정보 신호(r1;934)를 규정한다. 신호 r1은 코드 리프팅 블럭 선택 모듈(908)에 입력으로 제공되며, 리오더링 부분 r2은 모듈(942)로부터 출력된 리오더링 제어 신호(r2;950)의 값을 결정한다. 신호 r2는 N개의 엘리먼트 제어가능한 퍼뮤터 모듈(904)에 입력으로 제공된다.
실행된 명령 내에 포함된 노드 구성 정보는 모듈(942)로부터 출력된 노드 구성 제어 신호(952)를 결정한다. 노드 구성 정보 신호(952)는 병렬로 배열된 N개의 구성가능한 노드 프로세서들을 포함하는 노드 프로세싱 모듈(906)에 입력으로 제공된다. 대부분의, 그러나 모든 경우는 아닌 실시예들에서, 노드 구성 정보는 모듈(906) 내의 N개의 노드 프로세서들의 각각이 동일한 시점에서 동일한 방식으로 동작되도록 한다. 노드 프로세서들은 가변 노드들 및 검사 노드들로 구성된 사이에서 스위칭될 수 있다.
저장된 디코더 기술 정보 모듈(942)은 몇몇 실시예들, 예컨데 디코더(900)가 프로그램 가능한 실시예들에서, 디코딩될 코드워드들을 발생할 때 사용된 코드 구조를 반영하는 디코더 제어 명령들과 같은 코드 기술 정보를 수신하기 위한 입력(953)을 포함한다.
내부 루프 카운터(940)에 의해 발생된 내부 루프 카운트 신호(946)는 외부 루프 카운터(944)에 증분 제어 신호로 제공된다. 내부 루프 카운터(940)가 예를 들면, 영사 그래프 내의 에지들의 수와 같은 최대 내부 루프 카운트 값에 도달할 때, 상기 카운터는 외부 루프 카운터(944)가 1만큼 증분되도록 트리거하며, 예를 들면 카운터가 둘러싸는 것과 같이 0으로부터 카운팅하는 것을 재시작한다. 외부 루프 카운터(944)는 전체 반복에서 1부터 SK까지 어떤 루프가 실행중인지를 결정하며, 상기 SK는 1 내지 K의 범위가 될 수 있는 선택된 리프팅 팩터이고, 상기 K 및 SK는 정수이다. 외부 루프 카운터(944)가 코드 리프팅 팩터 제어 신호(SK;948)를 통해 세팅된 최대값에 도달하면, 디코더(900)는 전체 반복을 종료하고, 외부 루프 카운터(944)는 0으로 리셋한다. 리프팅 팩터가 고정된 몇몇 실시예들에서, SK 신호 입력은 생략되고, 최대 외부 루프 카운터 값은 K로 세팅된다.
코드 리프팅 기반의 블럭 선택 모듈(908)은 제어 모듈(910)로부터의 명령에서 리오더링 횟수 r의 r1 성분으로부터 결정되는 제어 모듈(910)의 저장된 디코더 정보 모듈(942)로부터 블럭 오더링 정보 신호(r1;934)를 수신한다. 외부 루프 제어 신호(936)를 통해 제어 모듈(910)의 외부 루프 카운터(944)에 의해 유도되고, 블럭 오더링 정보 신호(r1;934)에 의해 제어되는 코드 리프팅 기반의 블럭 선택 모듈(908)은 제 2 어드레스 제어 신호(블럭 어드레스 선택 신호;932)를 발생시켜 출력한다.
메모리 모듈(902)은 기록 신호(928) 및 제어 모듈(910)로부터 연산자 및 메모리 위치 a를 전달하는 제 1 어드레스 제어 신호(a)(930)을 수신한다. 제 1 어드 레스 제어 신호(a)(930) 및 제 2 어드레스 제어 신호(932)는 메모리 소스 모듈(902)의 어드레스 생성 모듈(916)에 의해 수신된다. 어드레스 생성 모듈(916)은 제 1 및 제 2 어드레스 제어 신호들(930, 932) 내의 정보에 의해 규정된 메모리 액세스 신호(920)를 발생하여 메모리 액세스 신호(920)를 메모리(912)로 전송한다. 신호(920)는 판독 어드레스 신호로서 기능한다. 정보는 N개의 엘리먼트 제어가능한 퍼뮤터(904)의 각각의 처리 사이클 동안 한번씩 메모리(912)로부터 판독된다. 메모리 어드레스 신호(920)는 기록 어드레스 제어 신호(956)를 발생하기 위해 지연(954)만큼 지연된다. 956 및 920 사이에서 지연된 사이클들의 개수는 노드 구성 제어 신호(952)의 일부에 의해 제어될 수 있다. 기록 출력 제어 신호(955)는 신호(956)와 동일할 수 있고, 디코딩 결과가 기록되는 어드레스를 표시할 수 있다. 기록 어드레스 제어 신호는 기록 신호(928)가 인에이블될 때 노드 처리 모듈(906)의 출력이 기록될 위치를 제어한다.
도시된 것과 같이, 메모리 모듈(902)은 데이터 입력(928)을 통한 노드 프로세싱 모듈(906)의 출력 또는 입력(901)을 통한 초기 입력을 수신한다. 초기 입력은 예를 들어, 디코딩될 코드워드의 일부분 또는 수신된 코드워드가 될 수 있다.
메모리 모듈(902)은 Kx(N×L) m-비트 저장 위치들에 배치되는 메모리(912)를 포함하며, 상기 m은 예를 들면 노드들 사이에서 통신되는 소프트 값과 같은 저장된 메시지 내의 비트들의 수를 나타낸다. 편리함을 위해, 우리는 블럭 1, ..., K와 같은 (NxL) m-비트 위치들 중 K개의 블럭들을 가지는 저장 위치들을 식별한다. 메모리(912)는 제 1 어드레스 제어 신호 a(930) 및 제 2 어드레스 제어 신호 k(932)의 함수인 위치에서 액세스된다. 메모리 어드레스 발생 모듈(916)은 그러한 함수를 지시한다. (a,k)가 주어질 때, 메모리 소스 모듈(902)은 k번째 블럭에서 위치 a에 상응하는 N개의 엘리먼트 벡터를 판독한다. 지연된 (a,k)가 주어질 때, 기록 신호에 따라, 메모리 소스 모듈(902)은 k번째 블럭의 위치 a에 N개의 엘리먼트 벡터 입력을 기록한다. 메모리(912)를 위한 기록 및 판독 동작은 이중 포트 메모리를 사용하거나 메모리를 2배의 속도로 구동함으로써 동시에 발생한다. 메모리(912)는 몇몇 실시예들에서의 값들의 임시 저장을 위한 부가의 메모리를 포함할 수 있다.
메시지들은 각각의 엘리먼트가 m개의 비트들을 포함하는 N개의 엘리먼트 유니트들 내의 메모리(912)로부터 판독 및 메모리(912)에 기록된다. N개 유니트들의 세트(922)가 메모리에서 판독되어 N개의 엘리먼트 제어가능한 퍼뮤터 모듈(904)의 입력에 제공된다. 메시지 압축이 사용되는 몇몇 실시예들에서, 압축해제 모듈(914)은 메모리(912)로부터 판독된 N개의 엘리먼트들(918)을 수신하여 압축 해제를 수행하며, 제어가능한 퍼뮤터에 N개의 엘리먼트들을 출력하며, 상기 경우에 압축 해제의 결과로서 신호(922) 내의 N개의 엘리먼트들의 각각은 메모리로부터 원래 판독된 더 많은 비트들을 포함한다. 압축해제 모듈(914)이 사용되지 않는 실시예에서, 메모리(912)로부터 판독된 N개의 엘리먼트 유니트(918)는 퍼뮤터 모듈(904)의 입력에 제공된다. 압축 해제 능력을 지원하며, 노드 처리 모듈이 압축된 포맷으로 메시지들을 발생하도록 하는 실시예들은 메시지들이 압축 해제 이후에 각각의 메시지에 포함된 비트들의 수보다 적은 m 비트들을 사용하여 저장되도록 한다. N 개의 엘리먼트 제어가능한 퍼뮤터 모듈(904)은 제공된 N개의 메시지들의 리오더링을 실행한다. 이는 그룹 Ψ2에서의 리오더링을 나타낸다.
노드 처리 모듈(906)에 제공되기 전에 메모리로부터 판독된 N개의 엘리먼트들의 리오더링을 수행하도록 퍼뮤터(904)를 제어하는 리오더링 제어 신호 r2(950)는 제어 모듈(910)에 의해 제공되며, 실행중인 모듈(942)의 저장된 명령으로부터 발생된다.
퍼뮤터 모듈(904)로부터의 리오더링된 N개의 엘리먼트 벡터 출력은 N개의 엘리먼트 노드 처리 모듈(906)의 N개의 엘리먼트 벡터 입력(924)에 접속된다. 노드 처리 모듈(906)은 상기 제어 모듈(910)로부터의 명령에 의해 전달된 노드 구성 제어 신호(952)에 의해 제어된다. 설명된 실시예에서, 노드 처리 모듈(906)의 출력(926)은 예를 들어 성공적인 디코딩이 종료될 때의 결과를 저장하기 위해 사용되는 몇몇 추가 메모리 및/또는 메모리 모듈(902)에 제공된다.
개시된 디코더 실시예에 대한 한가지 변형은 엔코더 구현과 유사한 디코더 구조를 사용하는 것이며, 이는 2004년 7월 21일에 제출된 LDPC 엔코딩 방법들 및 장치"라는 명칭의 미국 특허 출원 10/895547에 개시되고, 대리인 문서 번호 [플라리온-108]에서 확인되며, 본 명세서에서 참조로서 통합된다. 본 발명에 따라 구현된 상기 디코더는 내부 루프 반복을 사용하고, 임시의 노드 처리 결과들을 저장하기 위해 K개의 N-엘리먼트 레지스터들을 포함한다. 상기 변형은 본 발명의 사상 내인 것으로 간주되는 것이 당업자에게 명백할 것이다. 본 명세서에서 논의되는 상기 구현은 다수의 메모리 모듈(902), 퍼뮤터 모듈(904) 및 저장된 디코더 기술 정보 모듈(942) 특징들을 포함한다.
요약하면, 리프팅 팩터 Z=KxN 및 코드 워드 길이 = KxNxL을 가지는 리프팅 그래프에 대한 마이크로코드가 제공될 때, 본 발명은 예를 들면 디코딩될 코드워드의 코딩을 제어하기 위해 사용되는 코드 구조를 규정할 때 사용될 수 있는 더 작은 그래프의 Z 개의 사본들에 상응하는 리프팅 그래프와 연관된 전체 디코딩 루프를 종료하기 위해 사용되는 K 개의 단계들의 각각 동안 동일한 디코더 제어 코드를 K회 실행하는 N개의 처리 유니트들을 가지는 디코더를 규정한다.
본 발명의 다양한 실시예들에서, 본 발명의 디코더들은 투영된 그래프와 동일한 레이트를 공유하지만, 다른 코드 워드 길이를 가지는 코드들의 클래스에 상응하는 코드워드들을 디코딩할 수 있다. 이는 선택된 리프팅 팩터 SK를 사용하여 수행되며, 상기 SK는 k의 제수이고, 디코더 제어 코드가 전체 루프를 제어하기 위해 사용되는 루프들의 수와 같다.
특히, 그러한 프러덕트 리프팅의 그룹 Ψ1은 여전히 2개의 그룹들 Ψ111×Ψ12의 직접-프러덕트일 수 있고, SK는 행렬 Ψ12의 크기이고 J는 Ψ11의 크기이며, 따라서 K=J×SK이다. 특별한 경우로서, Ψ12는 단일 엘리먼트 1의 그룹이 될 수 있고, Ψ11는 Ψ1이며, 따라서 SK=1이고 J=K이다. 임의의 경우에, 리프팅 그래프에서, 리프팅 그룹 내의 Ψ11 컴포넌트를 무시하면, 리프팅 팩터 Z/J=SKxN를 가지는 리프팅 그래프를 갖게 된다. 이를 위한 다른 방식은 원래의 그래프를 취득하여 이 를 리프팅 그룹 Ψ11으로 투영하는 것이며, 따라서 패리티 검사 행렬에서, ZxZ 퍼뮤테이션 행렬을 지시하는 모든 비제로(nonzero) 입력은 이제 Z/J×Z/J 퍼뮤테이션 행렬로 투영된다. 상기와 같이, 더 큰 그래프에서 디코딩 프로세스의 동일한 시퀀스는 투영된 그래프를 보유한다.
따라서, 리프팅 팩터 Z를 가지는 더 큰 그래프를 기술하는 마이크로코드는 본 발명에 따라 Z/J=SKxN을 가지는 투영된 그래프를 기술하는 마이크로코드로서도 사용될 수 있다. Z에 대한 경우와 동일한 논의 선상에서, 우리는 리프팅 그래프에 상응하는 디코더 프로세싱 하나의 반복을 종료하기 위해 SK 루프들에서 마이크로코드를 실행함으로써 리프팅 팩터 SKxN을 사용하여 코드를 디코딩하기 위해 N개의 m-비트 벡터 연산을 사용하는 동일한 디코더를 사용할 수 있다.
동일한 마이크로코드를 공유하는 서로 다른 코드워드들(예컨대, 블록) 길이들의 다른 코드들은 Ψ1이 2개의 다른 그룹들의 직접-프로덕트 Ψ111'×Ψ12'로 기록될 수 있는 경우에 존재한다. 본 발명에 따라 병렬처리 N을 가지는 동일한 디코더는 리프팅 팩터 Z/J'를 사용하여 그러한 코드를 디코딩할 수 있고, 상기 J'는 상응하는 SK를 규정함으로써 Ψ11'의 크기(dimension)가 된다. Ψ1 내의 부가 구조는 서로 다른 블럭 길이들의 더 많은 코드들이 동일한 하드웨어에서 디코딩 가능하도록 할 수 있다. 따라서, 특정 디코딩 구현에서 사용될 그룹 구조에 따라 SK를 제어함으로써, 디코더는 서로 다른 코드워드 길이들을 가지는 코드워드들을 디코딩할 수 있다.
도 5의 예시적인 LDPC 디코더(900)에서, 코드 리프팅 팩터 제어 신호(SK;948)를 통해 코드 리프팅 팩터가 특정될 수 있다. 신호(948)는 외부 루프 카운터(944)에 연결되어, 외부 루프 카운터(944)의 최대 카운트를 결정한다.
본 발명의 방법 및 장치는 예를 들어 무선 단말, 기지국, 데이터 저장 장치 및 에러를 차단 및/또는 정정하기 위한 데이터의 엔코딩 및/또는 디코딩이 유용할 수 있는 다른 타입의 장치들을 포함하는 광범위한 장치들의 구현에 사용될 수 있다.
도 6은 본 발명의 방법들을 이용하는 LDPC 엔코더/디코더 장치에 따라 구현된 예시적인 무선 단말(WT;1000), 예를 들어 이동 노드의 도면이다. 예시적인 WT(1000)는 수신기(1002), 수신기 안테나(1004), 프로그래밍 가능한 LDPC 디코더(1006), 송신기(1008), 송신기 안테나(1010), 프로그래밍 가능한 LDPC 엔코더(1012), 프로세서(1014), 사용자 I/O 장치(1015) 및 메모리(1016)를 포함한다. (도 5의 디코더(900)를 이용하여 구현될 수 있는) 프로그래밍 가능한 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)은 특정 애플리케이션에 사용될 코드 구조 및 이에 따라 대응하는 디코더 코드 기술 정보(1030, 1032)의 선택을 담당한다. 이 선택은 통신 루틴(1020)으로부터 수신된 정보, 수신기(1002)에 의해 수신되거나 사용자 입력부로부터의 정보를 기초로 이루어질 수 있다. 디코더 코드 및 코드워드 길이 선 택 루틴(1024)은 선택된 코드 및 코드워드 길이에 따라 디코딩을 수행하도록 이미 구성되었다면, 선택된 코드 기술 정보를 프로그래밍 가능한 LDPC 디코더(1006)에 로딩하고 정보, 예를 들어 선택된 코드 리프팅 팩터를 프로그래밍 가능한 디코더(1006)에 공급하는 것을 담당한다.
엔코딩 및 디코딩에 관련하여 상술한 루틴 및 정보 외에도, 메모리(1016)는 수신된 디코더 정보(1038), 예를 들어 디코딩에 사용될 코드 구조 및 코드워드 길이를 지시하는 디코더 코드 및 코드워드 길이 선택 루틴(1024)에 의해 사용되는 수신된 정보를 저장하는데 사용될 수 있다. 더욱이, 수신된 엔코더 정보(1044), 예를 들어 엔코딩에 사용될 코드 구조 및 코드워드 길이를 지시하는 엔코더 코드 및 코드워드 길이 선택 루틴(1022)에 의해 사용된 수신 정보가 메모리(1016)에 저장될 수 있다. 디코딩에 관련된 사용자 입력 정보(1036) 및 엔코딩에 관련된 사용자 입력 정보(1042) 또한 메모리(1016)에 저장된다. 이러한 정보는 디코더 정보(1038) 및 엔코더 정보(1044)와 동일하거나 비슷할 수도 있지만, 수신기(1002)를 통하기보다는 사용자 I/O 장치(1015)를 통해 사용자로부터 취득된다.
도 7a 및 도 7b의 결합을 포함하는 도 7은 본 발명에 따라 엔코딩 및 디코딩을 수행하도록 본 발명에 따라 구현된 예시적인 통신 장치, 예를 들어 WT(1000)를 작동시키는 예시적인 방법의 흐름도(1100)이다. 단계(1102)에서 동작이 시작하여, WT(1000)에 전원이 들어와 초기화된다. 동작은 단계(1102)에서 단계(1104, 1106, 1108)로 진행한다.
단계(1104)에서, WT(1000)는 엔코딩/디코딩 정보를 수신하고 그리고/또는 수 신된 데이터로부터 제어 정보를 생성하도록 동작한다. 엔코딩/디코딩 정보, 예를 들어 프로그래밍 가능한 LDPC 엔코더(1012) 및/또는 프로그래밍 가능한 LDPC 디코더(1006)에 대한 제어 정보는 수신기(1002)를 통해 처리되는 수신 신호에 의해 그리고/또는 사용자 I/O 장치(1015)에 의해 수신된 사용자 입력으로서 수신될 수 있다. 추가로, 수신된 엔코딩된 데이터는 제어 정보를 생성하도록 처리될 수 있다. 예를 들어, 서로 다른 코드 구조 정보 및/또는 서로 다른 코드워드 길이를 이용하여 다수의 디코딩 시도가 수행될 수 있다. 성공적인 디코딩시, 어떤 실시예들에서는 인입(incoming) 데이터를 디코딩하는데, 그리고 어떤 실시예에서는 인출(outgoing) 데이터 또한 엔코딩하는데 사용되어야 하는 코드 구조 및/또는 코드워드 길이를 지시하는 제어 정보가 생성된다. 동작은 단계(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 엔코더(1012)로서 사용될 수 있는, 그리고 어떤 실시예에서는 사용되고 있는 예시적인 프로그래밍 가능한 LDPC 엔코더의 상세할 설명을 위해, "LDPC 엔코딩 방법 및 장치"라는 명칭으로 2004년 7월 21일자 출원된 미국 특허출원 S.N. 10/895547을 참조할 것이며, 이는 첫 페이지에서 대리인 적요 Flarion-108로 식별되고 발명자 이름이 Tom Richardson 및 Hui Jin이며, 여기서 본원에 참조로 포함된다.
상술한 루틴 및 저장된 엔코더/디코더 정보를 이용하여, 무선 단말은 수신된 정보, 예를 들어 수신기(1002)에 의해 수신된 정보 또는 사용자 정보의 함수로 엔코딩 및 디코딩을 위해 서로 다른 코드 구조 및 코드워드 길이의 이용 사이를 전환할 수 있고 전환한다. 엔코더/디코더 변화는 특정 시점에 실행되는 특정 통신 루틴(1020)에 의해 일어날 수도 있다. 따라서 본 발명은 서로 다른 코드 구조에 대응하는 코드 업데이트들의 이용 및/또는 코드워드 길이 제어 파라미터의 변경을 통해 용이하게 변경될 수 있는 단일 세트의 하드웨어를 이용한 LDPC 코드의 엔코딩 및 디코딩에 있어 상당한 유연성을 허용한다.
다음 특허 출원 및 특허는 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는 도 1에 그래프적으로 기술된 코드의 매트릭스 표현을 도시한 도면.
도 3 및 도 4는 마이크로코드의 단순 세트의 실행을 K 스텝들로 분해하는 아이디어를 기술한 도면.
도 5는 본 발명에 따른 예시적인 디코더 구조를 도시한 도면.
도 6은 본 발명에 따라 구현되는 예시적인 프로그램가능 LDPC 디코더를 사용하는 장치, 예컨대 이동장치를 도시한 도면.
도 7은, 도 7A 및 도 7B를 포함하며, 본 발명에 따른 엔코딩 및 디코딩을 수행하기 위하여 본 발명에 따른 예시적인 통신장치를 동작시키는 예시적인 방법을 기술한 흐름도.

Claims (21)

  1. LDPC 인코더를 이용하여 이전에 인코딩된 정보를 디코딩하도록 LDPC 디코더를 동작시키는 방법으로서, 상기 방법은:
    디코딩될 제 1 코드워드(codeword)들의 길이를 지시하는 제 1 코드워드 길이 정보를 수신하는 단계 - 상기 제 1 코드워드 길이 정보는 커맨드(command)들이 반복적으로 실행되어야하는 횟수를 지시하는데 이용되는 제 1 코드 리프팅 팩터(code lifting factor)임 - ;
    디코딩될 코드워드들을 포함하는 데이터를 수신하는 단계; 및
    상기 수신된 데이터를 디코딩하는 단계를 포함하며, 상기 디코딩은 상기 수신된 데이터 내의 코드워드를 상기 수신된 코드워드 길이 정보의 함수(function)로서 디코딩하기 위해 상기 커맨드들의 세트가 반복적으로 수행되는 횟수를 제어하는 것을 포함하는, LDPC 디코더를 동작시키는 방법.
  2. 제 1 항에 있어서,
    디코딩될 추가적인 코드워드들의 길이를 지시하는 제 2 코드워드 길이 정보를 수신하는 단계를 더 포함하며, 상기 추가적인 코드워드들의 길이는 상기 제 1 코드워드 길이 정보에 의해 지시되는 비트들의 제 1 개수와 상이한 비트들의 제 2 개수인, LDPC 디코더를 동작시키는 방법.
  3. 제 1 항에 있어서,
    상기 디코더의 모듈에 제1 세트의 코드 구조 기술 정보를 저장하는 단계; 및
    LDPC 디코딩 동작을 수행하기 위해 상기 저장된 제 1 세트의 코드 기술 정보를 이용하는 단계를 더 포함하는 LDPC 디코더를 동작시키는 방법.
  4. 제 3 항에 있어서,
    상기 디코더의 상기 모듈에 제 2 세트의 코드 구조 기술 정보를 저장하는 단계를 더 포함하며, 상기 제 2 세트의 코드 구조 기술 정보는 상기 제 1 세트의 코드 구조 정보가 대응하는 코드 구조와 상이한 구조를 갖는 LDPC 코드에 대응하는, LDPC 디코더를 동작시키는 방법.
  5. 제 4 항에 있어서,
    제 1 장치와 통신할 때, 상기 제 1 세트의 코드 구조 정보를 이용하여 데이터를 디코딩하는 단계; 및
    제 2 장치와 통신할 때, 제 2 세트의 코드 구조 정보를 이용하여 데이터를 디코딩하는 단계를 더 포함하는 LDPC 디코더를 동작시키는 방법.
  6. 제 5 항에 있어서,
    상기 제1 세트의 코드 구조 정보는, 상기 제2 세트의 코드 구조 정보가 이용될 때로부터와 상이한 시점에서 이용되는, LDPC 디코더를 동작시키는 방법.
  7. 제 3 항에 있어서,
    상기 제 1 세트의 코드 기술 정보를 저장하는 단계는 상기 제 1 세트의 코드 기술 정보에 대응하는 코드워드들이 디코딩될 것을 지시하는 신호의 수신에 응답적인, LDPC 디코더를 동작시키는 방법.
  8. 제 3 항에 있어서,
    상기 제 1 세트의 코드 기술 정보를 저장하는 단계는 상기 제 1 세트의 코드 기술 정보에 대응하는 코드 구조에 따라 엔코딩된 코드워드들을 포함하는 신호의 수신에 응답적인, LDPC 디코더를 동작시키는 방법.
  9. 제 3 항에 있어서,
    상기 제 1 세트의 코드 기술 정보는 디코더 제어 명령들을 포함하는, LDPC 디코더를 동작시키는 방법.
  10. 제 9 항에 있어서,
    각각의 디코더 제어 명령은 판독 및 기록 동작 표시자 중 하나를 포함하는, LDPC 디코더를 동작시키는 방법.
  11. 제 10 항에 있어서,
    각각의 디코더 제어 명령은 로테이션(rotation) 제어 정보를 더 포함하는, LDPC 디코더를 동작시키는 방법.
  12. 제 10 항에 있어서,
    각각의 디코더 제어 명령은 메모리 어드레스 정보를 더 포함하는, LDPC 디코더를 동작시키는 방법.
  13. 제 12 항에 있어서,
    각각의 디코더 제어 명령은 노드 프로세싱 유닛이 가변 노드 프로세싱 유닛 및 검사 노드 프로세싱 유닛 중 하나로서 구성되어야 함을 지시하는 노드 구성 정보를 더 포함하는, LDPC 디코더를 동작시키는 방법.
  14. LDPC 인코더를 이용하여 이전에 인코딩된 정보를 디코딩하기 위한 프로그래머블 LDPC 디코더로서:
    저장되는 커맨드(command)들의 세트를 저장하는 수단;
    디코딩될 제 1 코드워드들의 길이를 지시하는 제 1 코드워드 길이 정보를 수신하는 수단 - 상기 제 1 코드워드 길이 정보는 커맨드들이 반복적으로 실행되어야 하는 횟수를 지시하는데 이용되는 제 1 코드 리프팅 팩터임 - ;
    디코딩될 코드워드들을 포함하는 데이터를 수신하는 수단; 및
    상기 수신된 데이터를 디코딩하는 수단을 포함하며, 상기 디코딩 수단은 커맨드들의 세트를 반복적으로 수행하는 수단 및 상기 수신된 데이터 내의 코드워드를 상기 수신된 코드워드 길이 정보의 함수(function)로서 디코딩하기 위해 상기 커맨드들의 세트가 반복적으로 수행되는 횟수를 제어하는 수단을 포함하는, 프로그래머블 LDPC 디코더.
  15. 제 14 항에 있어서,
    상기 디코딩을 제어하는데 이용되는 디코더 정보를 수신하는 수단을 더 포함하는 프로그래머블 LDPC 디코더.
  16. LDPC 인코더를 이용하여 이전에 인코딩된 정보를 디코딩하는 LDPC 디코더로서:
    저장되는 커맨드들의 세트를 포함하는 메모리;
    디코딩될 제 1 코드워드들의 길이를 지시하는 제 1 코드워드 길이 정보를 수신하는 코드 워드 길이 정보 입력 - 상기 제 1 코드워드 길이 정보는 커맨드들이 반복적으로 실행되어야 하는 횟수를 지시하는데 이용되는 제 1 선택되는 코드 리프팅 팩터 신호임 - ;
    디코딩될 코드워드들을 포함하는 데이터를 수신하는 데이터 입력;
    상기 커맨드들의 세트에 따라 상기 커맨드들을 실행(implement)하여 코드워드들을 포함하는 상기 수신된 데이터에 대한 디코딩 동작들을 수행하는 프로세싱 회로; 및
    상기 수신된 데이터 내의 코드워드를 상기 수신된 코드워드 길이 정보의 함수(function)로서 디코딩하기 위해 상기 프로세싱 회로가 상기 커맨드들의 세트를 반복적으로 수행하는 횟수를 제어하는 제어 모듈을 포함하는 LDPC 디코더.
  17. 제 16 항에 있어서,
    상기 디코더는 프로그램가능(programmable)하며, 상기 디코더는:
    상기 디코딩을 제어하는데 이용되는 저장된 디코더 제어 정보를 더 포함하는 LDPC 디코더.
  18. LDPC 디코딩 방법을 구현하는 디코더 회로를 제어하는 기계 실행가능 명령(machine executable instruction)들을 포함하는 메모리 장치로서, 상기 방법은:
    디코딩될 제 1 코드워드들의 길이를 지시하는 제 1 코드워드 길이 정보를 수신하는 단계 - 상기 제 1 코드워드 길이 정보는 커맨드들이 반복적으로 실행되어야 하는 횟수를 지시하는데 이용되는 제 1 코드 리프팅 팩터임 - ;
    디코딩될 코드워드들을 포함하는 데이터를 수신하는 단계; 및
    상기 수신된 데이터를 디코딩하는 단계를 포함하며, 상기 디코딩은 커맨드들의 세트를 반복적으로 수행하는 것을 포함하고, 상기 디코딩은 상기 수신된 데이터 내의 코드워드를 상기 수신된 코드워드 길이 정보의 함수(function)로서 디코딩하기 위해 상기 커맨드들의 세트가 반복적으로 수행되는 횟수를 제어하는 것을 포함하는, 메모리 장치.
  19. 제 18 항에 있어서,
    상기 디코더의 모듈 내의 제 1 세트의 코드 구조 기술(description) 정보를 저장하는 단계; 및
    LDPC 디코딩 동작을 수행하기 위해 상기 저장된 제 1 세트의 코드 기술 정보를 이용하는 단계를 수행하도록 상기 디코더 회로를 제어하는 추가적인 기계 실행가능 명령들을 포함하는, 메모리 장치.
  20. LDPC 디코딩 방법을 구현하기 위해 장치를 제어하기 위한 일련의 명령들을 처리하는 처리기를 포함하는 장치로서, 상기 명령들은:
    디코딩될 제 1 코드워드들의 길이를 지시하는 제 1 코드워드 길이 정보를 수신하는 명령 - 상기 제 1 코드워드 길이 정보는 커맨드들이 반복적으로 실행되어야 하는 횟수를 지시하는데 이용되는 제 1 코드 리프팅 팩터임 - ;
    디코딩될 코드워드들을 포함하는 데이터를 수신하는 명령; 및
    상기 수신된 데이터를 디코딩하는 명령을 포함하며, 상기 디코딩 명령은 커맨드들의 세트를 반복적으로 수행하는 명령을 포함하고, 상기 디코딩 명령은 상기 수신된 데이터 내의 코드워드를 상기 수신된 코드워드 길이 정보의 함수(function)로서 디코딩하기 위해 상기 커맨드들의 세트가 반복적으로 수행되는 횟수를 제어하는 명령을 포함하는, LDPC 디코딩 방법을 구현하기 위해 장치를 제어하기 위한 일련의 명령들을 처리하는 처리기를 포함하는 장치.
  21. 제 20 항에 있어서,
    상기 명령들은:
    디코더의 모듈 내의 제 1 세트의 코드 구조 기술 정보를 저장하는 명령; 및
    LDPC 디코딩 동작을 수행하기 위해 상기 저장된 제 1 세트의 코드 기술 정보를 이용하는 명령을 더 포함하는, LDPC 디코딩 방법을 구현하기 위해 장치를 제어하기 위한 일련의 명령들을 처리하는 처리기를 포함하는 장치.
KR1020087018375A 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치 KR100936335B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/895,645 2004-07-21
US10/895,645 US7395490B2 (en) 2004-07-21 2004-07-21 LDPC decoding methods and apparatus

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
KR20080081993A KR20080081993A (ko) 2008-09-10
KR100936335B1 true KR100936335B1 (ko) 2010-01-12

Family

ID=35658677

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020077004104A KR100883459B1 (ko) 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치
KR1020087018375A KR100936335B1 (ko) 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치
KR1020087018377A KR100937679B1 (ko) 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020077004104A KR100883459B1 (ko) 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020087018377A KR100937679B1 (ko) 2004-07-21 2005-07-20 Ldpc 디코딩 방법 및 장치

Country Status (13)

Country Link
US (3) US7395490B2 (ko)
EP (3) EP2369749A3 (ko)
KR (3) KR100883459B1 (ko)
CN (3) CN101895301B (ko)
AU (4) AU2005329064B2 (ko)
CA (2) CA2577794C (ko)
HK (3) HK1131474A1 (ko)
NO (1) NO20070969L (ko)
NZ (1) NZ553353A (ko)
RU (1) RU2392737C2 (ko)
UA (2) UA94695C2 (ko)
WO (1) WO2006098748A2 (ko)
ZA (1) ZA200701499B (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7617432B2 (en) * 2004-11-10 2009-11-10 Qualcomm Incorporated Hierarchical design and layout optimizations for high throughput parallel LDPC decoders
US7958424B2 (en) * 2005-06-22 2011-06-07 Trident Microsystems (Far East) Ltd. Multi-channel LDPC decoder architecture
US7934147B2 (en) * 2005-08-03 2011-04-26 Qualcomm Incorporated Turbo LDPC decoding
US7853862B2 (en) * 2005-08-03 2010-12-14 Qualcomm Incorporated Systems and methods for a turbo low-density parity-check decoder
US8196025B2 (en) * 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
US8180605B1 (en) * 2005-11-23 2012-05-15 Livermore Software Technology Corporation Methods and systems for creating a smooth contact-impact interface in finite element analysis
US7818649B1 (en) * 2005-11-30 2010-10-19 Aquantia Corporation Efficient message passing scheme of iterative error correcting decoders
KR101102396B1 (ko) * 2006-02-08 2012-01-05 엘지전자 주식회사 이동통신 시스템에서의 코드워드 크기 정합 방법 및 송신장치
TW201334425A (zh) * 2007-01-24 2013-08-16 Qualcomm Inc 可變大小之封包的低密度同位檢查編碼與解碼
US8151171B2 (en) 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
US8095860B2 (en) * 2007-05-23 2012-01-10 The Royal Institution For The Advancement Of Learning/Mcgill University Method for implementing stochastic equality nodes
US8166364B2 (en) 2008-08-04 2012-04-24 Seagate Technology Llc Low density parity check decoder using multiple variable node degree distribution codes
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
US8443270B2 (en) * 2008-12-09 2013-05-14 Entropic Communications, Inc. Multiple input hardware reuse using LDPC codes
JP5440836B2 (ja) * 2009-03-24 2014-03-12 ソニー株式会社 受信装置及び方法、プログラム、並びに受信システム
US8407550B2 (en) * 2009-08-14 2013-03-26 Mitsubishi Electric Research Laboratories, Inc. Method and system for decoding graph-based codes using message-passing with difference-map dynamics
TWI419481B (zh) * 2009-12-31 2013-12-11 Nat Univ Tsing Hua 低密度奇偶檢查碼編解碼器及其方法
US8971261B2 (en) 2010-06-02 2015-03-03 Samsung Electronics Co., Ltd. Method and system for transmitting channel state information in wireless communication systems
US8732565B2 (en) 2010-06-14 2014-05-20 Samsung Electronics Co., Ltd. Method and apparatus for parallel processing in a gigabit LDPC decoder
US9634693B2 (en) * 2010-08-12 2017-04-25 Samsung Electronics Co., Ltd Apparatus and method for decoding LDPC codes in a communications system
US8650464B1 (en) * 2010-09-07 2014-02-11 Applied Micro Circuits Corporation Symmetric diagonal interleaving and encoding/decoding circuit and method
US8650456B2 (en) * 2010-09-08 2014-02-11 Marvell World Trade Ltd. Decoder based data recovery
CN107276717B (zh) * 2010-10-08 2020-06-26 黑莓有限公司 用于获得改进的码性能的消息重新排布
US8769365B2 (en) 2010-10-08 2014-07-01 Blackberry Limited Message rearrangement for improved wireless code performance
US8875000B2 (en) * 2010-11-01 2014-10-28 Marvell World Trade Ltd. Methods and systems systems for encoding and decoding in trellis coded modulation systems
US8726122B2 (en) * 2011-05-11 2014-05-13 Samsung Electronics Co., Ltd. High throughput LDPC decoder
US9203434B1 (en) 2012-03-09 2015-12-01 Western Digital Technologies, Inc. Systems and methods for improved encoding of data in data storage devices
US9230596B2 (en) * 2012-03-22 2016-01-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for variable rate coding in a data processing system
EP2847876B1 (en) 2012-05-11 2016-10-05 BlackBerry Limited Method and system for uplink harq and csi multiplexing for carrier aggregation
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
US8689076B2 (en) * 2012-07-02 2014-04-01 Lsi Corporation Systems and methods for enhanced bit correlation usage
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
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
US9619317B1 (en) 2012-12-18 2017-04-11 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US8966339B1 (en) 2012-12-18 2015-02-24 Western Digital Technologies, Inc. Decoder supporting multiple code rates and code lengths for data storage systems
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
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
RU2522299C1 (ru) * 2013-01-11 2014-07-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ и устройство помехоустойчивого декодирования сигналов, полученных с использованием кода проверки на четность с низкой плотностью
KR101698875B1 (ko) * 2013-03-14 2017-01-24 한국전자통신연구원 Ldpc 부호의 복호 방법 및 장치
US9564931B1 (en) * 2014-01-09 2017-02-07 Marvell International Ltd. Systems and methods for using decoders of different complexity in a hybrid decoder architecture
EP2903166A1 (en) * 2014-02-03 2015-08-05 Centre National de la Recherche Scientifique (C.N.R.S.) Multiple-vote symbol-flipping decoder for non-binary LDPC codes
CN104052500B (zh) * 2014-06-24 2017-07-07 清华大学 Ldpc码译码器及实现方法
US9153283B1 (en) 2014-09-30 2015-10-06 Western Digital Technologies, Inc. Data storage device compensating for hysteretic response of microactuator
US20160173130A1 (en) * 2014-12-10 2016-06-16 Qualcomm Incorporated Early decode attempt of lower rate lte code blocks that are repeat combined multiple times
CN105846830B (zh) * 2015-01-14 2019-07-30 北京航空航天大学 数据处理装置
US9935654B2 (en) * 2015-02-06 2018-04-03 Alcatel-Lucent Usa Inc. Low power low-density parity-check decoding
US9590657B2 (en) 2015-02-06 2017-03-07 Alcatel-Lucent Usa Inc. Low power low-density parity-check decoding
CN104853403B (zh) 2015-04-20 2019-02-12 小米科技有限责任公司 控制智能设备接入的方法和装置
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
US9917675B2 (en) 2016-06-01 2018-03-13 Qualcomm Incorporated Enhanced polar code constructions by strategic placement of CRC bits
US10313057B2 (en) 2016-06-01 2019-06-04 Qualcomm Incorporated Error detection in wireless communications using sectional redundancy check information
US10291354B2 (en) 2016-06-14 2019-05-14 Qualcomm Incorporated High performance, flexible, and compact low-density parity-check (LDPC) code
KR102227250B1 (ko) * 2016-07-20 2021-03-12 후아웨이 테크놀러지 컴퍼니 리미티드 코드를 인코딩 및 디코딩하기 위한 방법과 시스템
CA3026317C (en) 2016-07-27 2023-09-26 Qualcomm Incorporated Design of hybrid automatic repeat request (harq) feedback bits for polar codes
EP3293885B1 (en) * 2016-09-09 2024-01-03 Université de Bretagne Sud Check node processing for syndrome computation in the decoding of non-binary codes, in particular non-binary ldpc codes
PT3327936T (pt) * 2016-11-23 2021-06-18 Grdf Código ldpc adaptado às aplicações de baixo débito/baixo consumo tais como a leitura remota, codificador e descodificador associados
WO2018128559A1 (en) * 2017-01-09 2018-07-12 Huawei Technologies Co., Ltd. Efficiently decodable qc-ldpc code
EP3577768A4 (en) * 2017-02-06 2020-11-25 Telefonaktiebolaget LM Ericsson (Publ) SEGMENTATION OF LDPC CODE BLOCKS
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
WO2019018120A1 (en) 2017-07-07 2019-01-24 Qualcomm Incorporated COMMUNICATION TECHNIQUES APPLYING A BASIC GRAPH SELECTION FOR A LOW DENSITY PARITY CHECK CODE
CN109639392B (zh) * 2018-11-09 2020-03-27 清华大学 广播信道传输的空间耦合ldpc码的构造方法及系统
CN109952729B (zh) * 2019-01-31 2021-12-03 香港应用科技研究院有限公司 并行ldpc解码器
CN110995285B (zh) * 2019-12-27 2023-05-05 成都达安众科技有限公司 一种uhf rfid分步式指令解码方法及芯片
US11265016B2 (en) * 2020-07-06 2022-03-01 Intel Corporation Decoding apparatus, device, method and computer program
RU2747050C1 (ru) * 2020-11-13 2021-04-23 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ декодирования данных на основе LDPC кода

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990045138A (ko) * 1997-11-07 1999-06-25 루센트 테크놀러지스 인크 적응 디지털 무선 통신 시스템
KR20030036227A (ko) * 2000-06-16 2003-05-09 어웨어, 인크. Ldpc 코드형 변조를 위한 시스템 및 방법

Family Cites Families (67)

* 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
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
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6195777B1 (en) 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
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
DE69931751T2 (de) 1998-08-20 2006-10-19 Samsung Electronics Co., Ltd. Vorrichtung und verfahren zur einfügung von vorher bekannten bits in die eingangsstufe eines kanalkodierers
ATE270795T1 (de) 1998-09-28 2004-07-15 Comtech Telecomm Corp Turbo produktkode decodierer
US6247158B1 (en) 1998-11-30 2001-06-12 Itt Manufacturing Enterprises, Inc. Digital broadcasting system and method
US6397240B1 (en) 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system
US6795947B1 (en) * 1999-10-07 2004-09-21 The Regents Of The University Of California Parity check outer code and runlength constrained outer code usable with parity bits
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
US7184486B1 (en) * 2000-04-27 2007-02-27 Marvell International Ltd. LDPC encoder and decoder and method thereof
AU2001283012A1 (en) 2000-07-28 2002-02-13 Incyte Genomics, Inc. Protein phosphatases
US6631494B2 (en) * 2000-12-07 2003-10-07 Maxtor Corporation Ameliorating the adverse impact of burst errors on the operation of ISI detectors
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
US6567465B2 (en) 2001-05-21 2003-05-20 Pc Tel Inc. DSL modem utilizing low density parity check codes
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6842873B1 (en) * 2001-07-10 2005-01-11 Lsi Logic Corporation Advanced forward error correction
US6895547B2 (en) * 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
WO2003021440A1 (en) 2001-09-01 2003-03-13 Bermai, Inc. Decoding architecture for low density parity check codes
JP3808769B2 (ja) * 2001-12-27 2006-08-16 三菱電機株式会社 Ldpc符号用検査行列生成方法
US6718504B1 (en) 2002-06-05 2004-04-06 Arc International Method and apparatus for implementing a data processor adapted for turbo decoding
JP3917563B2 (ja) 2002-07-03 2007-05-23 ヒューズ・エレクトロニクス・コーポレーション 低密度のパリティチェック(ldpc)コードをデコードする方法およびシステム
US7178080B2 (en) 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US6961888B2 (en) 2002-08-20 2005-11-01 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
JP2006508577A (ja) * 2002-11-27 2006-03-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ランニングミニマム・メッセージパッシングldpc復号化
JP4062435B2 (ja) 2002-12-03 2008-03-19 日本電気株式会社 誤り訂正符号復号装置
US6957375B2 (en) 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
US7139959B2 (en) 2003-03-24 2006-11-21 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
US6724327B1 (en) * 2003-05-29 2004-04-20 Texas Instruments Incorporated Lower latency coding/decoding
US7222284B2 (en) * 2003-06-26 2007-05-22 Nokia Corporation Low-density parity-check codes for multiple code rates
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
JP4123109B2 (ja) * 2003-08-29 2008-07-23 日本ビクター株式会社 変調装置及び変調方法並びに復調装置及び復調方法
US7174495B2 (en) 2003-12-19 2007-02-06 Emmanuel Boutillon LDPC decoder, corresponding method, system and computer program
US7395495B2 (en) * 2004-01-12 2008-07-01 Intel Corporation Method and apparatus for decoding forward error correction codes
US8374284B2 (en) 2004-02-12 2013-02-12 Apple, Inc. Universal decoder
US7260763B2 (en) * 2004-03-11 2007-08-21 Nortel Networks Limited Algebraic low-density parity check code design for variable block sizes and code rates
US7251769B2 (en) * 2004-03-17 2007-07-31 Lucent Technologies Inc. Methods and apparatus for communication using generalized low density parity check codes
KR100678176B1 (ko) * 2004-04-28 2007-02-28 삼성전자주식회사 가변 블록 길이를 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7458010B2 (en) * 2004-08-05 2008-11-25 Nokia Corporation Irregularly structured, low density parity check codes
US11079672B2 (en) 2018-10-31 2021-08-03 Taiwan Semiconductor Manufacturing Company Ltd. Method and system for layout enhancement based on inter-cell correlation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990045138A (ko) * 1997-11-07 1999-06-25 루센트 테크놀러지스 인크 적응 디지털 무선 통신 시스템
KR20030036227A (ko) * 2000-06-16 2003-05-09 어웨어, 인크. Ldpc 코드형 변조를 위한 시스템 및 방법

Also Published As

Publication number Publication date
CN101895300A (zh) 2010-11-24
CA2672074C (en) 2013-10-08
EP2369749A2 (en) 2011-09-28
WO2006098748A3 (en) 2008-09-25
EP1787396A4 (en) 2010-06-30
AU2010200777A1 (en) 2010-03-25
RU2392737C2 (ru) 2010-06-20
EP2369749A3 (en) 2012-08-15
CA2577794C (en) 2009-10-06
CN101895301B (zh) 2012-11-14
US8683289B2 (en) 2014-03-25
UA96108C2 (ru) 2011-09-26
AU2010200776B2 (en) 2011-03-17
AU2005329064B2 (en) 2010-07-01
US7395490B2 (en) 2008-07-01
AU2010200776A1 (en) 2010-03-25
US20060020868A1 (en) 2006-01-26
HK1150476A1 (en) 2011-12-30
EP1787396A2 (en) 2007-05-23
KR100883459B1 (ko) 2009-02-16
CN101895300B (zh) 2012-07-04
RU2007106457A (ru) 2008-08-27
HK1150475A1 (en) 2011-12-30
KR20080081993A (ko) 2008-09-10
EP2369750A3 (en) 2012-08-01
CN101449463B (zh) 2012-02-01
AU2005329064A1 (en) 2006-09-21
US20090063933A1 (en) 2009-03-05
AU2010200777B2 (en) 2011-11-24
CA2577794A1 (en) 2006-09-21
ZA200701499B (en) 2009-09-30
KR20080081352A (ko) 2008-09-09
NO20070969L (no) 2007-04-23
US8595569B2 (en) 2013-11-26
KR20070039152A (ko) 2007-04-11
HK1131474A1 (en) 2010-01-22
WO2006098748A2 (en) 2006-09-21
CN101449463A (zh) 2009-06-03
AU2010200778A1 (en) 2010-03-25
NZ553353A (en) 2010-02-26
CA2672074A1 (en) 2006-09-21
UA94695C2 (ru) 2011-06-10
EP2369750A2 (en) 2011-09-28
CN101895301A (zh) 2010-11-24
KR100937679B1 (ko) 2010-01-19
US20090063925A1 (en) 2009-03-05
AU2010200778B2 (en) 2011-03-10

Similar Documents

Publication Publication Date Title
KR100936335B1 (ko) Ldpc 디코딩 방법 및 장치
EP1787397B1 (en) Ldpc encoding methods and apparatus

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
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: 20121227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 10