KR20090130183A - 저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩 - Google Patents

저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩 Download PDF

Info

Publication number
KR20090130183A
KR20090130183A KR1020097021138A KR20097021138A KR20090130183A KR 20090130183 A KR20090130183 A KR 20090130183A KR 1020097021138 A KR1020097021138 A KR 1020097021138A KR 20097021138 A KR20097021138 A KR 20097021138A KR 20090130183 A KR20090130183 A KR 20090130183A
Authority
KR
South Korea
Prior art keywords
loop
variable node
closed
class
nodes
Prior art date
Application number
KR1020097021138A
Other languages
English (en)
Other versions
KR101198536B1 (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 KR20090130183A publication Critical patent/KR20090130183A/ko
Application granted granted Critical
Publication of KR101198536B1 publication Critical patent/KR101198536B1/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/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
    • 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/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
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • 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
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Abstract

이분 그래프에 의하여 표시할 수 있는 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 신규한 장치 및 방법이 제공된다. 데이터를 인코딩하기 위하여, 다수의 낮은 등급 변수 노드들의 누적 체인이 생성된다. 누적 체인은 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 폐쇄될(close) 수 있으며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지(non-loop-closing edge)를 포함한다. 일 실시예에서, 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 가질 수 있고, 작은 크기의 기본 그래프를 LDPC 코드의 그래프로 리프팅하기 위해 치환들이 사용된다.

Description

저밀도 패리티 체크(LDPC) 코드들의 인코딩 및 디코딩{ENCODING AND DECODING OF LOW DENSITY PARITY CHECK(LDPC) CODES}
본 출원은 2007년 3월 9일자로 출원된, "Methods and Apparatus for Encoding and Decoding LDPC Codes"라는 제목의 미국 가출원 번호 제60/894,183호에 대한 우선권을 주장하며, 그 모든 내용은 본 명세서에 참조로서 통합된다.
본 출원은 예를 들어, 저밀도 패리티 체크(LDPC: low density parity check) 코드들과 같은 패리티 체크 코드들의 사용을 통해 이진 데이터에서 에러들을 검출 및/또는 정정하기 위하여 데이터를 인코딩 및 디코딩하기 위한 방법들 및 장치에 관한 것이다.
에러 보정 코드들은 통신 및 데이터 저장 시스템들에서 보편적이 되었다. 최근에, 저밀도 패리티-체크(LDPC) 코드들로서 공지된 코드들의 부류에 대한 관심이 높아지고 있다.
LDPC 코드들은 종종 태너 그래프(Tanner graph)들로 불리는 이분(bipartite) 그래프들에 의하여 표시되며, 이러한 그래프에서 한 세트의 노드들, 변수 노드(variable node)들은 코드워드의 비트들 및 다른 노드들의 세트에 대응하고, 때때로 체크 노드들로 불리는 제약 노드(constraint node)들은 코드를 정의하는 한 세트의 패리티-체크 제약들에 대응한다. 그래프의 에지들은 제약 노드들에 변수 노드들을 접속시킨다. 변수 노드 및 제약 노드는 그래프에서 에지에 의하여 접속된다면, 이웃인 것으로 말하여진다. 간략화를 위하여, 일반적으로 한 쌍의 노드들이 많아야 하나의 에지에 의하여 접속되는 것으로 가정된다.
변수 노드들과 1 대 1 연관된 비트 시퀀스는 각각의 제약 노드에 대하여 제약에 이웃한(변수 노드들과의 자신의 연관을 통해) 비트들이 0 모듈로(modulo) 2에 합산되는 경우, 즉, 그들이 짝수개의 1들을 포함하는 경우 및 그러한 경우에만 코드의 코드워드이다.
몇몇 경우에, 코드워드는 펑쳐링(puncture)될 수 있다. 이것은 코드워드로부터 특정 비트들을 제거 또는 평처링하고 실제로는 특정 비트들을 전송하지 않는 동작을 지칭한다. 그러나, LDPC 코드를 인코딩할 때, 펑쳐링될 비트들이 여전히 결정된다. 따라서, 펑쳐링은 인코딩 프로세스에 거의 또는 전혀 영향을 주지 않는다. 이러한 이유로, 펑쳐링 가능성은 본 출원의 나머지 부분에서 고려되지 않을 것이다.
LDPC 코드워드들을 디코딩하는데 사용되는 디코딩 알고리즘들 및 디코더들은 에지들을 따라 그래프 내에 메시지들을 교환하고, 유입 메시지들에 기초하여 노드들에서 계산들을 수행함으로써 상기 메시지들을 업데이트함으로써 작동한다. 상기 알고리즘들은 일반적으로 메시지 전달 알고리즘들로서 지칭된다. 그래프에서 각각의 변수 노드에는 최초에 예를 들어, 통신 채널로부터 관찰에 의하여 결정되는 바와 같은, 연관된 비트들의 값의 추정을 지시하는 수신된 값으로 명명된, 소프트 비 트(soft bit)가 제공된다. 인코딩 프로세스는 또한 부분적으로 그래프의 에지들을 따라 동작하지만, 접속은 덜 정확하다.
노드, 즉, 변수 노드 또는 제약 노드에 부착되는 에지들의 수는 노드의 등급(degree)으로서 지칭된다. 정규 그래프 또는 코드는 모든 변수 노드들이 동일한 등급(j)을 갖고 모든 제약 노드들이 동일한 등급(k)을 갖는 것이다. 이러한 경우에, 코드는 (j, k) 정규 코드이다. 상기 코드들은 최초에 Gallager(1961)에 의하여 발명되었다. "정규" 코드와 대조적으로, 불규칙 코드는 상이한 등급들의 제약 노드들 및/또는 변수 노드들을 갖는다. 예를 들어, 몇몇 변수 노드들은 등급 4일 수 있고, 다른 변수 노드들은 등급 3일 수 있으며, 또 다른 변수 노드들은 등급 2일 수 있다.
불규칙 코드들은 표시 및/또는 구현하기에 더 복잡할 수 있는 반면, 불규칙 LDPC 코드들은 정규 LDPC 코드들과 비교될 때 우수한 에러 보정/검출 성능을 제공할 수 있다는 것이 밝혀졌다.
인코딩 및/또는 디코딩 시스템에 대하여 인코딩 효율 및 높은 데이터 레이트들이 광범위한 디바이스들, 예를 들어, 소비자 디바이스들에서 사용하는데 실용적인 것이 중요한 반면, 인코더들 및/또는 디코더들이 적당한 가격에 구현될 수 있는 것이 중요하다. 따라서, 예를 들어, 하드웨어 가격의 관점에서, 에러 보정 및/또는 검출을 목적으로 사용되는 인코딩/디코딩 방식들을 효율적으로 구현할 필요성이 있다.
한 특징은 데이터를 인코딩하는 방법 및 장치를 제공한다. 특히, 이분(bipartite) 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC: low density parity check) 코드를 사용하여 데이터를 인코딩하기 위한 방법이 제공된다. 데이터를 인코딩하기 위하여, 다수의 낮은 등급의 변수 노드(low degree variable node)들의 누적 체인이 생성될 수 있다. 누적 체인은 그 후, 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 폐쇄될(close) 수 있으며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지(non-loop-closing edge)를 포함한다. 일 실시예에서, 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 가질 수 있다.
방법에서, 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함할 수 있고, 높은 등급의 변수 노드는 코어 등급 3 변수 노드들을 포함할 수 있으며, 루프-폐쇄의 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드들을 포함할 수 있다.
방법은 누적 체인의 다수의 치환된 카피(permuted copy)들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된(lifted) 그래프를 사용하는 단계를 더 포함할 수 있다.
방법은 몇몇 기본(base) 변수 노드들에 대하여 리프트된 변수 노드들의 절반은 정보 노드들일 수 있고, 절반은 패리티 노드들일 수 있는 순환형 리프트된 저밀도 패리티 체크(LDPC) 코드를 사용하는 단계를 더 포함할 수 있다.
방법은 코어 등급 3 인코딩 노드의 비-루프-폐쇄 에지상에서 비-루프-폐쇄 에지 치환을 사용하는 단계 - 비-루프-폐쇄 에지 치환은 0일 수 있음 - ; 및 루프에 참여하는 코어 등급 2 변수 노드들의 에지들상에서 다른 모든 치환들에 대하여 값들 0 또는 -1 mod 2n을 사용하는 단계를 더 포함할 수 있다.
유사하게, 통신 인터페이스 및 프로세서를 포함하는 장치가 제공된다. 통신 인터페이스는 데이터를 수신 및 송신하도록 구성될 수 있다. 프로세서는 (a) 다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하고, (b) 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하도록 구성될 수 있으며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함한다.
장치는 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프의 사용을 더 포함할 수 있다.
장치는 몇몇 기본 변수 노드들에 대하여 리프트된 변수 노드들의 절반은 정보 노드들이고, 절반은 패리티 노드들인, 순환형 리프트된 저밀도 패리티 체크(LDPC) 코드의 사용을 더 포함할 수 있다.
장치는 코어 등급 3 인코딩 노드의 비-루프-폐쇄 에지상에서 비-루프-폐쇄 에지 치환의 사용 - 비-루프-폐쇄 에지 치환은 0일 수 있음 - ; 및 루프에 참여하는 코어 등급 2 변수 노드들의 에지들상에서 다른 모든 치환들에 대하여 0 또는 -1 mod 2n 값들의 사용을 포함할 수 있다.
결과적으로, (a) 다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하기 위한 수단 및 (b) 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하기 위한 수단을 포함하며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함하는 장치가 제공된다.
장치는 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하기 위한 수단을 더 포함할 수 있다.
장치는 몇몇 기본(base) 변수 노드들에 대하여 리프트된 변수 노드들의 절반은 정보 노드들이고, 절반은 패리티 노드들인 순환형 리프트된 저밀도 패리티 체크(LDPC) 코드를 사용하기 위한 수단을 더 포함할 수 있다.
장치는 코어 등급 3 인코딩 노드의 비-루프-폐쇄 에지상에서 비-루프-폐쇄 에지 치환을 사용하며, - 비-루프-폐쇄 에지 치환은 0임 - , 루프에 참여하는 코어 등급 2 변수 노드들의 에지들상에서 다른 모든 치환들에 대하여 0 또는 -1 mod 2n 값들을 사용하기 위한 수단을 더 포함할 수 있다.
유사하게, 이분 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터 인코딩을 달성하기 위한 인코더상에서 동작가능한 하나 이상의 명령들을 갖는 프로세서 판독가능 매체가 제공되며, 명령들은, 상기 프로세서에 의하여 실행될 때 프로세서가 (a) 다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하며; 그리고 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하게 하는 명령들을 포함하며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함한다.
유사하게, (a) 다수의 낮은 등급의 변수 노드들의 누적 체인의 생성; 및 (b) 한번은 낮은 등급의 변수 노드를 사용하고 한번은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위한 상기 누적 체인의 폐쇄를 달성하기 위한 기능들을 수행하도록 구성되는 프로세싱 회로를 포함하는 프로세서가 제공되며, 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함한다.
본 발명의 특징들, 성질 및 장점들은 도면들과 함께 취해질 때 하기에 개시되는 상세한 설명으로부터 보다 명백해질 수 있으며, 동일한 참조 번호들은 명세서 전반을 통해 동일하게 식별된다.
도 1은 길이 10의 정규 LDPC 코드의 작은 이분 그래프 표현을 도시한다.
도 2는 도 1에 그래픽적으로 도시된 코드의 행렬 표현이다.
도 3은 작은 LDPC 코드의 그래픽적 표현이다.
도 4는 도 3에 그래픽적으로 개시된 작은 LDPC 코드의 패리티 체크 행렬 표현을 도시한다.
도 5는 도 3에 도시된 LDPC 코드를 인코딩하기 위한 사전-전처리(pre-preprocessing)의 일 실시예를 도시한다.
도 6은 사전-계산된 행렬들을 사용하여 정보 블럭을 인코딩하기 위한 프로세스를 도시한다.
도 7은 도 3에 보여지는 LDPC 코드에 대응하는 2개의 단순한 명령들/연산들의 시퀀스로서 인코딩 프로세스를 도시한다.
도 8은 일반적 LDPC 인코더를 도시한다.
도 9는 길이 10의 정규 LDPC 코드의 큰 이분 그래프 표현을 도시한다.
도 10은 도 9에 도시된 LDPC 그래프의 패리티 체크 행렬 표현을 도시한다.
도 11은 순환형 치환 행렬들을 갖는 도 9에 보여지는 3×3 항등 행렬들을 교체하는 효과를 도시한다.
도 12는 도 11에 도시된 코드의 에지들이 변수 노드 측으로부터 어떻게 정렬되어 열거될 수 있지와, 순환형 치환이 적용된 이후에 어떻게 동일한 에지들이 제약 노드측으로부터 나타는지를 도시한다.
도 13은 도 11에 개시된 LDPC를 인코딩하기 위한 가능한 사전-프로세싱 단계를 도시한다.
도 14는 도 11에 도시된 예시적인 LDPC 코드에 대한 사전-계산된 행렬들이 제공되는 경우에 정보 블럭을 인코딩하기 위한 프로세스를 도시한다.
도 15는 연산들의 시퀀스로서 LDPC 인코딩 프로세스를 도시한다.
도 16은 도 7의 인코더를 벡터화하는 LDPC 인코더를 도시한다.
도 17은 기본 그래프의 패리티 체크 행렬을 도시한다.
도 18은 기본 인코딩 구조의 태너(Tanner) 그래프를 도시한다.
도 19는 도 17의 그래프보다 완전한(complete) 기본 그래프의 패리티 체크 행렬 표현을 도시한다.
도 20은 등급 1 변수 노드들 및 연관된 에지들이 벗겨진 보다 완전한 기본 그래프의 패리티 체크 행렬 표현을 도시한다.
도 21은 루프를 형성하기 위하여 누적기 체인을 폐쇄하는 추가적인 등급 2 변수 노드를 갖는 기본 인코딩 구조의 확장을 도시한다.
도 22는 도 21의 확장된 기본 인코딩 구조의 Z=8의 리프팅(lifting)을 도시한다.
도 23은 도 22의 그래프의 확장을 도시한다.
도 24는 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 인코더를 도시하는 블럭도이다.
도 25는 인코더상에서 동작하는 예시적인 방법을 도시한다.
하기의 설명에서, 실시예들의 전반적 이해를 제공하기 위한 특정 설명들이 주어진다. 그러나, 이러한 특정 세목들을 제외하고 실시예들이 실행될 수 있다는 것을 본 기술분야의 당업자들은 이해할 수 있을 것이다. 예를 들어, 회로들은 불필요하게 상세하여 실시예들을 애매하게 하지 않기 위하여 블럭도로 도시될 수 있다. 다른 실시예들에서, 공지된 회로들, 구조들 및 기술들이 실시예들을 애매하게 하지 않기 위하여 상세히 보여질 수 있다.
또한, 실시예들은 공정도, 흐름도, 구조도, 또는 블럭도로서 보여지는 프로 세스로서 개시될 수 있음을 유념하라. 공정도는 순차적 프로세스로서 동작들을 개시할 수 있으나, 다수의 동작들은 병렬적으로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서는 재배열될 수 있다. 프로세스는 자신의 동작들이 완료될 때 종결된다. 프로세스는 방법, 함수, 프로시져, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 프로세스의 종결은 호출 함수 또는 메인 함수로의 함수의 리턴에 대응한다.
또한, 저장 매체는 ROM(read-only memory), RAM(random access memory), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들 및/또는 정보를 저장하기 위한 다른 기계 판독가능 매체들을 포함하는 데이터를 저장하기 위한 하나 이상의 디바이스들을 의미할 수 있다. "기계 판독가능 매체"라는 용어는 휴대용 또는 고정형 저장 디바이스들, 광학 저장 디바이스들, 무선 채널들 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 운반할 수 있는 다양한 다른 매체들을 포함하나, 이에 제한되는 것은 아니다.
또한, 실시예들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 이들의 조합으로 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 저장 매체와 같은 기계 판독 가능 매체에 저장될 수 있다. 프로세서는 필요한 작업들을 수행할 수 있다. 코드 세그먼트는 프로시저, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들 또는 프로그램 명령문들의 임의의 조합을 나타 낼 수 있다. 코드 세그먼트는 정보, 데이터, 인수(argument)들, 파라미터들 또는 메모리 콘텐츠들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 연결될 수 있다. 정보, 인수, 파라미터, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적당한 수단을 통해 전달, 포워딩 또는 전송될 수 있다.
본원에 개시된 실시예들에 관련하여 설명한 다양한 예시적인 논리 블록들, 모듈들 및 회로들, 엘리먼트들 및/또는 컴포넌트들은 본명세서에서 설명하는 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 다른 프로그래밍 가능 로직 장치, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 성분, 또는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래 프로세서, 제어기, 마이크로컨트롤러 또는 상태 머신일 수도 있다. 프로세서는 또한 연산 장치들의 조합, 예를 들어 DSP와 마이크로프로세서의 조합, 다수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 구성으로 구현될 수도 있다.
본 명세서에 개시된 실시예들과 관련하여 설명되는 방법 또는 알고리즘의 단계들은 하드웨어에 직접, 또는 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 이 둘의 조합에 프로세싱 유닛, 프로그래밍 명령들, 또는 다른 지시들의 형태로 구현될 수 있으며, 단일 디바이스에 포함되거나 다수의 디바이스들에 분포될 수 있 다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드디스크, 착탈식 디스크, CD-ROM, 또는 공지된 다른 형태의 저장 매체에 상주할 수 있다. 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결될 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수도 있다.
LDPC 코드들
도 1은 길이 10 및 레이트(rate) 1/2의 (3, 6) 정규 LDPC 코드를 결정하는 이분 그래프(100)의 일 실시예를 도시한다. 길이 10은 10개의 변수 노드들 V1-V10(102)이 존재함을 지시하며, 변수 노드들 각각은 코드워드 X1-X10 중 한 비트로 식별된다. 레이트 1/2는 변수 노드들만큼 많은 체크 노드들의 절반이 존재함을, 즉, 5개 체크 노드들 C1-C5(106)이 존재함을 나타낸다. 레이트 1/2는 하기에 설명되는 바와 같이, 5개 제약들이 선형적으로 독립적임을 추가로 지시할 수 있다.
도 1은 길이 10의 코드와 연관되는 그래프를 도시하나, 길이 1000의 코드워드에 대한 그래프를 표현하는 것은 10배 더 복잡할 것임을 인지할 수 있을 것이다.
도 2는 도 1에 보여지는 LDPC 코드의 태너 그래프(또는 이분 그래프) 표현에 대한 대안일 수 있는 패리티 체크 행렬 표현을 도시한다. 패리티 체크 행렬은 전송된 비트들상의 선형적 제약들의 세트로 구성된다. 이러한 코드의 표현에서, 통상적으로 패리티 체크 행렬로서 지칭되는 행렬 H(202)는 관련 에지 접속부, 변수 노드 및 제약 노드 정보를 포함할 수 있다. 행렬 H(202)에서, 각각의 열은 변수 노드들 중 하나에 대응할 수 있는 반면, 각각의 행은 제약 노드들 중 하나에 대응 할 수 있다. 예시적인 코드에서 10개 변수 노드들 및 5개 제약 노드들이 존재하기 때문에, 행렬 H는 10개 열들 및 5개 행들을 포함한다. 그래프에 에지가 존재한다면, 즉, 2개의 노드들이 이웃한다면, 특정 변수 노드 및 특정 제약 노드에 대응하는 행렬의 엔트리는 1로 설정될 수 있으며, 그렇지 않은 경우에는 엔트리는 0으로 설정될 수 있다. 예를 들어, 변수 노드 V1이 에지에 의하여 제약 노드 C1에 접속되기 때문에, 행렬 H(202)의 최상위 왼편 코너에 1이 위치된다. 그러나, 변수 노드 V5는 제약 노드 C1에 접속되지 않아, 0이 대응 변수 노드 및 제약 노드가 접속되지 않음을 지시하는 행렬 H(202)의 제1 행의 5번째 위치에 위치된다. 행렬 H(202)의 행들이 GF[2](차수 2의 갈루아(Galois) 필드)상의 벡터들에 선형적으로 독립적이라면, 제약들은 선형적으로 독립적일 수 있다.
행렬 표현의 경우에, 전송될 코드워드 X는 프로세싱될 코드워드의 X1-Xn 비트들을 포함하는 벡터(206)로서 표현될 수 있다. 행렬(206 및 202)의 곱이 0과 같은 경우, 즉, Hx = 0인 경우에, 또는 그러한 경우에만 비트 시퀀스 X1-Xn은 코드워드일 수 있다.
LDPC 코드들의 인코딩
LDPC 코드에 대한 인코딩 프로세스는 입력 정보 비트들로부터 LDPC 코드로의 맵핑일 수 있다. 이러한 맵핑이 가질 수 있는 다수의 가능한 형태들이 존재할 수 있다.
LDPC 코드들을 인코딩하기 위한 일반적인 목적의 접근법이 2001년 2월자의 IEEE Trans. on Information Theory, pp.638-656, Vol.47, Number 2에 간행된 "Efficient Encoding of Low Density Parity Check Codes"라는 제목의 Thomas J. Richardson 및 Ruediger L. Urbanke에 의한 연구에 상세히 설명된다.
본 발명의 인코딩 프로세스는 미국 특허 출원 번호 제09/975,331호(현재 U.S. Patent No. 6,633,856)에 개시된 디코더에 의하여 지원될 수 있는 LDPC 코드들의 종류를 빠르게 병렬로 인코딩할 수 있는 범용 인코딩 디바이스와 함께 이용될 수 있다. '856 특허에서, 특정 구조의 LDPC 코드들의 종류가 고려되었으며, 그것을 위해 디코더 아키텍쳐가 제안되었다. 본 발명에서, 디코더 아키텍쳐의 특정 피쳐들이 인코더 구조의 일부로서 재현될 수 있다.
본 발명의 인코딩 프로세스에서, m×n 패리티 체크 행렬은 m<n 및 랭크 m을 가질 수 있는데, 즉, 행들은 선형적으로 독립적일 수 있다. m>n일 때, 잉여 행들은 코드를 변화시키지 않고 제거될 수 있다.
먼저, 인코더를 설계하는 프로세서의 일부인 특정 연산들이 설명될 것이다. 하기에 설명되는 사전-프로세싱 계산은 코드 설계의 일부로서 소프트웨어로 수행될 수 있으며, 인코더의 실제 구현의 일부가 아닐 수 있다.
인코더 설계의 제1 단계는 행렬 H를 근사적인 하-삼각 형태로(lower triangular form) 두도록 열들 및 행들을 재배열하기 위한 것일 수 있다.
Figure 112009061933926-PCT00001
여기서, A는 (m-g)×(n-m)이고, B는 (m-g)×g이고, T는 (m-g)×(m-g)이고, C 는 g×(n-m)이고, D는 g×g이며, E는 g×(m-g)이다. 행렬 T는 모두 1과 동일한 대각선 엔트리들을 갖는 하-삼각형일 수 있다. 왼쪽으로부터 행렬 H를
Figure 112009061933926-PCT00002
로 곱하면,
Figure 112009061933926-PCT00003
가 나온다.
다음으로, φ는 φ = (-ET-1B + D)로서 정의되고, 단수형이 아닐 수 있다. 행렬 φ-1은 그 후 계산되어 저장될 수 있다. φ가 반전될(invertible) 수 없는 경우에, H의 행은 선형적으로 독립적으로 간주될 수 있으며, 열들은 φ가 반전가능함을 보장하기 위하여 서브행렬
Figure 112009061933926-PCT00004
내에서 변경될 수 있다. H의 행들이 선형적으로 독립적이지 않다면, H의 행들 중 일부는 나머지 행들이 코드의 정의를 변화시키지 않고 선형적으로 독립적일 수 있도록 제거될 수 있다. 상기 계산의 전부는 인코딩될 데이터에 독립적일 수 있으며, 인코딩 프로세스의 일부가 아닐 수 있다는 것을 유념해야 한다. 이러한 단계들은 보통 인코더 설계의 일부로서 한번 수행될 수 있으며, 인코더 사용 동안에 반복될 수도 반복되지 않을 수도 있다.
코드워드로의 데이터의 인코딩
코드워드는 x = (s,p1,p2)로서 표시될 수 있으며, 여기서 s는 시스템적 부분을 표시할 수 있고, p1 및 p2는 패리티 부분을 표시할 수 있으며, p1은 길이 g를 갖고, p2는 길이(m-g)를 가질 수 있다. 인코딩 문제는 주어진 s에 대한 p1 및 p2를 찾아내는 것이다. 정의 방정식 HxT = 0T는 자연적으로 하기의 2개 방정식들로 분리될 수 있다:
Figure 112009061933926-PCT00005
상기 방정식으로부터
Figure 112009061933926-PCT00006
라는 결론을 얻을 수 있다. 모든 행렬들이 산재(sparse)해 있기 때문에,
Figure 112009061933926-PCT00007
는 효율적으로 계산될 수 있고,
Figure 112009061933926-PCT00008
가 주어지면,
Figure 112009061933926-PCT00009
는 z 후진 대입(back substitution)을 사용하기 위하여
Figure 112009061933926-PCT00010
를 푸는 단계에 의하여 효율적으로 발견될 수 있다. 행렬 φ-1은 일반적으로 조밀할 수 있으나, g는 설계에 의하여 작게 만들어질 수 있고, 이러한 행렬은 사전 계산될 수 있다. 따라서,
Figure 112009061933926-PCT00011
는 효율적으로 획득될 수 있다. 이제,
Figure 112009061933926-PCT00012
Figure 112009061933926-PCT00013
를 푸는 단계에 의하여 용이하고 효율적으로 결정될 수 있다.(도 6 및 7 참조)
상기 설명은 임의의 LDPC 코드를 인코딩하기 위한 방법을 제공한다. LDPC 코드들의 다수의 구조들은 다른 자연적 인코딩 메커니즘들, 예를 들어, RA 코드들을 초래할 수 있다는 것을 인지할 수 있을 것이다.
본 발명은 상기 개시된 것과 같은 이진 코드들에 대한 인코딩 방법들을 사용 하고, "벡터화된" LDPC 코드들에 대한 병렬 인코딩 엔진으로 패리티 체크 행렬들과 함께 그들을 "리프트(lift)"시킬 수 있는 병렬화된 인코더를 제공한다. 리프트는 크기(n0, k0)와 관련하여, 작은 패리티 체크 행렬인 작은 "기본(base) 코드"의 다수의 카피(copy)들로부터 큰 LDPC 코드를 생성하는 기술이다. 이것은 큰 코드에 대한 설명의 복잡성을 감소시킬 뿐 아니라, 병렬 인코딩 및 디코딩 알고리즘들의 구현을 가능하게 할 수 있다.
"Methods and Apparatus for Decoding LDPC Codes"라는 제목의 미국 특허 출원 제 09/975,331호(현재는 2003년 10월 14일자로 발행된 U.S. Patent No. 6,633,856호)에서, LDPC 그래프들의 구조화된 "벡터화" 종류가 설명되고 동기화된다. '856 특허에서, 동기화는 고도로 효율적인 디코더 아키텍쳐에 대해 제공하기 위한 것이었다. 본 발명은 '856 특허에서와 동일한 종류의 코드들을 인코딩하기에 적합할 수 있는 대응 아키텍쳐에 관한 것이다. 그러나, 본 발명은 '856 특허와 달리 아키텍쳐가 특정 LDPC 코드의 명세가 프로그래밍가능하게 허용할 수 있도록, 효율적이고 병렬적으로 수행될 수 있는 인코딩 동작들을 포함할 수 있다.
작은 LDPC 그래프
도 3은 단순한 불규칙한 LDPC의 그래프(300)를 도시한다. 코드는 5개의 변수 노드들 V1 내지 V5(302)에 의하여 지시되는 바와 같이 길이 5일 수 있다. 4개의 체크 노드들 C1 내지 C4(306)는 전체 12개 에지들에 의하여 변수 노드들(302)에 결합될 수 있다.
도 4는 행렬들(402, 404)을 사용하는 패리티 체크 행렬 형태로 도 3에 도시된 LDPC 코드를 도시한다. 에지들은 1들을 사용하여 치환 행렬 H(402)에서 표시될 수 있다. 비트 xi는 변수 노드 Vi와 연관될 수 있다.
도 5 및 6은 도 3에 보여지는 LDPC 코드에 대한 인코딩 프로세스를 도시한다. 상기 개시된 바와 같이, 인코딩 사전-프로세싱 단계는 도 4에 보여지는 패리티 체크 행렬 H(404)의 열들 및 행들을 하-삼각 형태로 재정렬하는 단계를 포함할 수 있다. 도 5는 도 4의 행렬의 재정렬의 일 실시예를 도시한다. 행렬은 행 2 및 행 4에 의하여 재정렬될 수 있다.
도 5에서, 행렬 H(501)는 재정렬 이후에 상이한 컴포넌트들을 보여준다. 주석(annotation)을 목적으로, 서브 행렬(r1, r2; c1, c2)는 최초 행렬에서 [r1, r2]의 행 인덱스 및 [c1, c2]의 열 인덱스를 갖는 모든 엔트리들을 포함하는 행렬인 것으로 정의될 수 있다. 행렬 A(502)는 행렬 A(501)의 서브-행렬(1, 3; 1, 1)로서 정의될 수 있다. 행렬 B(503)는 행렬 H의 서브-행렬(1, 3; 2, 2)로서 정의될 수 있다. 행렬 T(504)는 하-삼각 형태인 행렬 H의 서브-행렬(1, 3; 3, 5)로서 정의될 수 있다. 행렬 C(505)는 행렬 H의 서브-행렬(4, 4; 1, 1)로서 정의될 수 있다. 행렬 D(506)는 행렬 H의 서브-행렬(4, 4; 2, 2)로서 정의될 수 있다. 행렬 E(507)는 행렬 H의 서브-행렬(4, 4; 3, 5)로서 정의될 수 있다. 가우시안 소거법에 의한 φ = (-ET-1B + D)의 유도(derivation)가 φ(509) 및 그것의 역 φ-1(510)이 획득될 수 있는 508에 개시된다.
도 6은 도 5에 도시된 사전-계산된 행렬들 및 정보 블럭 s = [1](601)이 주어진 실제 인코딩 프로세스를 도시한다. 행렬에 의한 벡터의 표준 곱셈은
Figure 112009061933926-PCT00014
(602),
Figure 112009061933926-PCT00015
(603),
Figure 112009061933926-PCT00016
(604),
Figure 112009061933926-PCT00017
(605),
Figure 112009061933926-PCT00018
(606),
Figure 112009061933926-PCT00019
(607),
Figure 112009061933926-PCT00020
(608) 및
Figure 112009061933926-PCT00021
(609)의 계산을 허용할 수 있다. T-1에 의한 곱셈이 후진 대입을 사용하여 수행될 수 있다는 것을 유념해야 한다. 최종 결과에서, 코딩된 비트들 x = [p1 , p2, s]는 벡터(610)에서 보여질 수 있다.
이진 행렬에 의한 이진 벡터의 곱셈은 단순한 연산들의 시퀀스로 분해될 수 있다. 예를 들어,하드웨어 프로세서에서 이진 벡터 v(n×l)로 이진 행렬 U(m×n)를 곱셈하는 것을 고려한다. 곱셈에 앞서, 벡터 v는 인덱스 s에서 시작되는 몇몇 물리적 위치, 예를 들어, 메모리에서 이용가능할 수 있으며, 결과가 인덱스 t에서 시작되는 위치에 저장될 수 있다고 가정될 수 있다. 추가로, 행렬 U의 행 i, i ∈ [0, m - 1]은
Figure 112009061933926-PCT00022
로서 인덱싱된 열들에서 0이 아닌 엔트리들, 즉, 1들을 갖는 것으로 가정될 수 있다. 2개 명령들 (1) (0 a b) 및 (2) (l a b)은 다음과 같이 정의될 수 있다: (0 a b)는 위치 b에서 값을 판독하여, 그것을 위치 a에 기록하도록 프로세서에 지시할 수 있다; (1 a b)는 위치 b에서 값을 판독하여 그것을 x에 부가하거나 또는 위치 a에 현재 값을 부가할 수 있다. 다시 말해, 제2 동작은 위치 a에서 값을 누적할 수 있다; 먼저, 겹쳐쓴다. 이제, U에 의한 벡터 v의 곱셈은 이러한 2개의 단순한 연산들의 다음 시퀀스로 분해될 수 있 다:
Figure 112009061933926-PCT00023
Figure 112009061933926-PCT00024
Figure 112009061933926-PCT00025
Figure 112009061933926-PCT00026
. 명령들의 전체 개수는 행렬의 0이 아닌 엔트리들의 개수와 동일할 수 있다.
도 7은 도 3에 도시된 LDPC 코드에 대응하는 2개의 간단한 명령들/연산들의 시퀀스로서 인코딩 프로세스를 도시한다. 메모리 디바이스(702)는 정보 비트들, 코딩된 비트들 및 중간 변수들을 저장할 수 있다. 메모리(702)의 위치 0은 단일 정보 비트 s(7`0)를 저장하기 위하여 할당될 수 있다; 위치 1은 패리티 비트 P1(712)를 저장하기 위하여 할당될 수 있다; 메모리들 2 내지 4는 P2(714)를 저장하기 위하여 할당될 수 있다. 추가적인 메모리 공간이 중간 값들을 홀딩하기 위하여 제공될 수 있다. 예시적인 메모리(902)는
Figure 112009061933926-PCT00027
의 값 및 추후에
Figure 112009061933926-PCT00028
의 값을 저장하기 위하여 위치들 5 내지 7를 제공할 수 있다; 예시적인 메모리는
Figure 112009061933926-PCT00029
(718)를 저장하기 위하여 위치들 8 내지 10을 제공할 수 있다; 그리고 예시적인 메모리는
Figure 112009061933926-PCT00030
(720)를 저장하기 위하여 위치 11를 제공할 수 있다.
상기 메모리(702)의 할당에 관하여, 벡터들을 갖는 행렬 곱셈으로서 도 6에 도시된 인코딩 프로세스는 테이블(704)에 리스팅된(listed) 연산들 (0 a b) 및 (l a b)의 시퀀스로 분해될 수 있다. 명료성을 위하여, 테이블(704)은 자신의 개별적인 행렬 곱셈 대응부(counterpart)들과 함께, 행당 하나의 명령들의 시퀀스를 보여 준다. 예를 들어, 곱셈
Figure 112009061933926-PCT00031
는 2개의 명령들로 분해될 수 있다: (0 7 0)를 수반하는 (0 5 0). 테이블(706)은 테이블(704)상에 대응 행에 보여지는 명령이 실행될 수 있는 시간에 메모리 위치들 0 내지 11의 컨텐츠들을 보여준다. 테이블(704)상의 명령을 실행한 결과가 테이블(706)의 다음 행에 보여질 수 있다. 예를 들어, 동일한 정보 비트들이 테이블(706)의 제1 행에 개시되는 바와 같이, 위치 0에 s=[1]를 저장함으로써 도 5에 도시된 것과 같이 인코딩될 수 있다. 명령(0 7 0)을 수반하는 명령(0 5 0)을 실행하는 연산들은 블럭(706)의 3개 행에 보여지는 바와 같이, 5 내지 7의 위치들에서
Figure 112009061933926-PCT00032
의 결과를 도출해낼 수 있다. 이것은 도 5의 대응부와 동일한 결과일 수 있다. 테이블(706)은 테이블(704)에 기본 명령들의 시퀀스가 실행됨에 따른 메모리 위치들 0 내지 11의 컨텐츠의 관점에서 완전한 인코딩 프로세스를 개시한다.
테이블(704)의 시퀀스 명령들은 하드웨어 구현으로 용이하게 변환(translate)될 수 있다. 예를 들어, 이용된 하드웨어의 메모리 연산 제약들에 따르기 위하여 하드웨어 구현 동안에 직접 변경들이 이루어질 수 있다.
일반적 LDPC 인코더
도 8은 일반적 LDPC 인코더(800)를 도시한다. 단위 연산 프로세서(808)는 수신된 명령에 의하여 지시되는 3개의 가능한 연산들 중 하나를 수행할 수 있다. 단위 연산 프로세서(808)는 합산 비트를 클리어(clear)시키거나, 메모리로부터 판독된 비트로 합산 비트를 xor 연산하거나, 또는 인코딩 메모리(806)로 합산 비트를 출력할 수 있다. 수행될 연산들은 인코더 제어 모듈(800)에서 연산 제어 모듈(810)상의 연산에 의하여 선택될 수 있으며, 하나 이상의 명령들의 형태로 단위 연산 프로세서(808)에 대해 명시될 수 있다. 판독/기록 제어 모듈(804), 인코더 제어 모듈(800)은 인코딩 메모리(806)가 액세스되는 순서를 명시할 수 있다. 제어 모듈(810) 및 판독/기록 제어 모듈(806) 모듈의 형태의 타이밍은 인코더 제어 모듈(800)에서 인코더 타이밍 제어 모듈(802)에 의하여 제어될 수 있으며, 인코더 타이밍 제어 모듈(802)은 타이밍 제어 신호를 통한 인코더의 데이터 흐름을 결정한다. 인코딩 메모리(860)는 독립적으로 SIMD 판독 또는 기록 명령을 사용하여 기록되거나 판독될 수 있는 듀얼 포트 메모리 블럭일 수 있다.
인코딩 프로세스의 벡터화
벡터화된 LDPC 그래프가 참조하면, 본 발명의 인코딩 프로세스는 다음과 같이 벡터화될 수 있다. 인코더는 그것이 동시에 그리고 병렬로 프로젝팅된(projected) LDPC 코드의 인코딩 Z개 카피들인 것처럼 동작할 수 있다. 인코딩 프로세스의 제어는 프로젝팅된 LDPC 그래프에 대응할 수 있으며, Z개 카피들에 걸쳐 공유될 수 있다. 따라서, 인코더는 비트 벡터들상에서 동작하는 것으로 개시될 수 있으며, 각각의 벡터는 Z개 엘리먼트들을 갖는다. Z개의 프로젝팅된 그래프들의 순수하게 공통 원소를 갖지 않는 병렬 인코딩으로부터의 한 편차는 비트들이 인코딩 프로세스 동안에 비트 벡터 내에 재정렬되는 것일 수 있다. 이러한 재정렬 동작은 회전으로서 지칭될 수 있다. 회전은 Ψ에 의하여 정의되는 치환 연산들을 구현할 수 있으며, 여기서, Ψ는 치환들을 정의하는 그룹을 나타낼 수 있다. 회전 들로 인하여, 프로젝팅된 그래프의 Z개 카피들의 프로세싱 경로들이 혼합될 수 있어, 단일의 큰 그래프를 형성하기 위하여 프로세싱 경로들을 링크시킨다. 프로젝팅된 그래프에 대한 제어 정보 이외에도, 회전들을 명시하는 제어 정보가 획득될 수 있다. 다행히도, 회전 제어 정보는 상대적으로 적은 메모리를 사용하여 명시될 수 있다.
다양한 치환들이 회전들에 대하여 사용될 수 있는 반면, 순환형 치환들의 사용은 특히 그러한 치환들이 구현될 수 있음의 용이함으로 인하여 흥미롭다. 명료성을 위하여, Ψ는 순환형 치환들의 그룹을 포함하는 것으로 가정될 수 있다. 이러한 경우에, 큰 LDPC 그래프들은 유사-순환형 구조를 갖도록 강요될 수 있다. 이러한 실시예를 목적으로, N은 그래프의 변수 노드들의 개수일 수 있고, M은 그래프의 제약 노드들의 개수일 수 있다. N 및 M 모두는 Z의 배수이고, N = nZ 및 M = mZ인 것으로 가정될 수 있으며, 여기서, Z는 사이클의 차수를 지시할 수 있다.
노드들은 더블 인덱스의 사용을 통해 식별될 수 있다. 따라서, 변수 노드
Figure 112009061933926-PCT00033
는 프로젝팅된 그래프의 자신의 카피로부터의 j번째 변수 노드일 수 있다. Ψ는 순환형 치환들의 그룹이기 때문에, 변수 노드
Figure 112009061933926-PCT00034
Figure 112009061933926-PCT00035
에 대한 제약 노드
Figure 112009061933926-PCT00036
에 접속되는 경우, 그리고 그러한 경우에만, 변수 노드
Figure 112009061933926-PCT00037
는 제약 노드
Figure 112009061933926-PCT00038
에 접속될 수 있다.
큰 LDPC 그래프
매우 작은 그래프 표시 및 회전 정보를 사용하는 큰 그래프를 나타내기 위한 본 발명의 기술들은 도 3의 그래프 300의 벡터화와 관련되는 도 9-16을 참조로 하여 추가로 설명될 수 있다. 이러한 도면들을 참조로 하여 설명되는 본 발명의 기술들은 매우 큰 LDPC 그래프들에 적용될 수 있다.
도 3에 보여지는 작은 그래프를 복제, 즉, 다수의 카피들을 구현하고, 복제된 그래프의 다양한 카피들을 상호접속시키기 위하여 회전 연산들을 수행함으로써 큰 그래프가 생성될 수 있다. 논의를 위하여, 큰 그래프 구조 내에 작은 그래프가 이하에서는 프로젝팅된 그래프로서 지칭될 것이다.
도 9는 도 3에 개시된 작은 그래프의 3개의 병렬 카피들을 만든 결과물인 큰 그래프(900)를 도시한다. 변수 노드들(902', 902" 및 902''')은 도 3 그래프의 3개 카피들을 만드는 것으로부터 각각 초래되는 제1 내지 제3 그래프들에 대응된다. 또한, 체크 노드들(906', 906" and 906''')은 3개 카피들을 만드는 것으로부터 각각 초래되는 제1 내지 제3 그래프들에 대응된다. 3개 그래프들 중 하나의 노드들을 3개 그래프들 중 다른 하나의 노드들에 접속시키는 에지들이 존재하지 않는 것을 유념해야 한다. 따라서, 3의 팩터에 의하여 기본 그래프를 "리프트"시키는 이러한 카피 프로세스들은 3개의 공통 요소가 없는 똑같은 그래프들을 초래한다.
도 10은 행렬들(1002 및 1004)을 사용하는 상기 논의된 카피 프로세스의 결과를 도시한다. 원래의 도 3 그래프의 3개 카피들을 만들기 위하여, 도 4의 행렬(402)의 각각의 0이 아닌 엘리먼트는 3×3 항등 행렬(identity matrix)로 교체된다는 것을 유념해야 한다. 따라서, 행렬(402)의 각각의 1은 행렬(1002)를 생성하기 위하여 대각선을 따라 1들을 갖고 그 밖의 모든 곳에서 0들을 갖는 3×3 행렬로 교체된다. 행렬(1002)는 도 4의 행렬(402)가 도 2에 보여지는 기본 그래프의 3개 카피들 각각에 대하여 12개 에지들을 갖는 전체 에지들의 개수의 3배를 갖는다는 것을 유념해야 한다. 여기서, 변수 xij는 변수 노드 Vij에 대응할 수 있다.
인코더의 변경
도 8의 인코더(800)는 상기 개시된 (Z=3) 병렬 그래프들을 인코딩하기 위하여 변경될 수 있다. 단위 연산 프로세서(808)는 병렬로 동시에 3개의 똑같은 연산들을 프로세싱할 수 있는 벡터 단위 연산 프로세서로 만들어질 수 있다. 단위 연산 프로세서(808)로부터의 모든 출력들은 벡터화되어, 이전에 운반된 데이터의 3배를 운반할 수 있다. 인코딩 메모리(806)는 3배 더 넓은 폭으로 형성될 수 있어, 단일 SIMD 명령의 지시를 사용하여 3개 비트들을 병렬로 기록 또는 판독할 수 있다. 이러한 메모리들로부터의 출력들은 3-비트 폭의 벡터들일 수 있다. 그러나, 단위 연산 제어(810), 배열(판독/기록) 제어(804) 및 인코더 타이밍 제어 모듈(802)은 도 8의 유사하게 명명된 엘리먼트들과 동일하거나 유사하게 보존될 수 있다.
회전들
회전들은 도 10에 보여지는 3×3 항등 행렬들 각각을 도 11에 보여지는 바와 같은 3×3 순환형 치환 행렬들로 교환함으로써 도입될 수 있다. 도 11에 사용되는 순환형 치환 행렬에 대한 3개의 가능성들이 존재할 수 있다는 것을 유념해야 한다. 치환 행렬이 치환 행렬의 제1 행의 제1, 제2 또는 제3 위치에 위치된 "1"을 가지는지 여부를 지시함으로써 항등 행렬에 대하여 대용될 특정 치환 행렬을 지시하는 것 이 가능할 수 있다. 예를 들어, 상부 좌측에서 시작하여 하부 우측 코너로 진행되는 행렬(1102)의 경우에, 회전들은 시퀀스 (2, 2, 3, 3, 1, 1, 1, 3, 2, 1, 2, 3)에 의하여 명시될 수 있다.
도 12는 제약 노드측상에서 순환형 치환(회전)을 수행하는 효과를 도시한다. 치환이 제약 노드측으로부터 수행될 수 있기 때문에, 변수 노드측으로부터의 에지들 사이의 관계, 예를 들어, 배열은 행들(1202', 1202" and 1202''')에 보여지는 바와 같이 교환되지 않은 채로 보존된다. 그러나, 제약측으로부터, 치환은 행들(1204', 1204", 1204''')에 보여지는 바와 같이 재정렬되는 열 내에 에지들, 예를 들어, 특정 벡터 에지 내에 에지들을 초래한다. 이것은 프로젝팅된 그래프의 상이한 카피들에 대응하는 노드들 사이의 상호접속을 생성할 수 있다.
벡터 에지 치환, 연산의 결과, 제약 노드 C1,1는 이제 에지(1,1)와 대조적으로 에지(2,1)에 접속될 수 있고, 제약 노드 C2,1는 에지(2,1)와 대조적으로 에지 (3,1)에 결합될 수 있으며, 제약 노드 C3,1는 에지(3,1)와 대조적으로 에지(1,1)에 결합될 수 있다.
회전들을 수행하기 위하여 메시지 경로들로의 스위치들을 도입함으로써, LDPC 코드는 도 11에 정의된 바와 같이 인코딩될 수 있다.
벡터 인코딩 프로세스는 상기 개시된 일반적 LDPC 인코딩 프로시져를 적용함으로써 추가로 인식될 수 있다. 이진 데이터상에서 작용하는 대신에, 인코더는 프로젝팅된 그래프의 비트의 Z개 병렬 카피들에 대응하는 Z개 비트들의 벡터상에서 작용한다. 패리티 체크 행렬 H(1102)는
Figure 112009061933926-PCT00039
에 의하여 표현되는 Z×Z 올 제로(all zero) 행렬 또는 Z×Z 순환형 치환 행렬의 엔트리들을 포함할 수 있다. Z-비트 이진 벡터와 순환형 행렬
Figure 112009061933926-PCT00040
의 곱셈은 k개 비트들만큼 벡터를 우측-시프팅하는 것과 동등할 수 있다. GF(2Z)의 필드에서, 인코딩 프로세스는 φ의 반전능력(invertability)을 테스트할 때를 제외하고, 이진 데이터 경우와 동일하게 처리될 수 있으며, 행렬은 먼저 이진 표현으로 다시 복구될 수 있다.
인코딩 프로세스의 실시예
도 13 및 14는 도 11에 보여지는 LDPC 코드에 대한 예시적인 인코딩 프로세스를 개시한다. 인코딩 사전 프로세싱 단계는 패리티 체크 행렬 H의 행들 및 열들을 하-삼각 형태로 재정렬할 수 있다. 하나의 예시적인 재정렬 H'(1301)가 도 13에 개시된다. H'(1301)는 최초 행렬 H'(1102)의 행들(2 및 4)을 치환함으로서 획득될 수 있다.
인코더를 구성함에 있어, 사전-프로세싱은 특정 정보를 추출하여 저장할 수 있다. 행렬 A(1302)는 행렬 H'(1301)의 서브-행렬 (1, 3; 1, 1)일 수 있다. 행렬 B(1303)는 서브-행렬 (1, 3; 2, 2)일 수 있다. 행렬 T(1304)는 하-삼각 형태인 서브-행렬 (1, 3; 3, 5)일 수 있다. 행렬 C(1305)는 서브-행렬 (4, 4; 1, 1)일 수 있다. 행렬 D(1306)는 서브-행렬 (4, 4; 2, 2)일 수 있다. 행렬 E(1307)는 서브-행렬 (4, 4; 3, 5)일 수 있다. 가우시안 소거에 의한 φ = (-ET-1B + D)의 유도는 1308 및 1309에 개시된다; 그것의 역 φ-1(1310)이 그 후 계산된다.
오프-라인 사전-계산된 행렬들이 주어지면, 도 14는 예시적인 정보 블럭 s = [100](1401)에 대한 실제 인코딩 프로세스를 도시한다. 벡터와의 행렬 곱셈은 벡터들 Cs(1402), As(1404), T-1As(1405), ET-1As(1406), ET-lAs + Cs(1407), p1 = φ-1(ET-1 As + Cs)(1408), Bp1(1409), Bp1 + As(1410), and P2 = T-1(Bp1 + As)(l411)을 계산한다. 결과적인 코드워드가 1412에 보여진다.
상기 설명되고 도 7에 개시되는 이진 행렬 곱셈 분해와 유사하게, GF(2Z) 필드의 상기 행렬 연산들은 회전들, 즉, 순환형 시프트들을 통합할 때, 간단한 연산들의 시퀀스로 분해될 수 있다. 2개의 명령들 - (0 a r b) 및 (1 a r b) - 은 다음과 같이 정의될 수 있다: (0 a r b)는 프로세서에 위치 b에서 값을 판독하도록 지시하여, r만큼 좌측으로 순환-시프트되고, 위치 a에 결과를 기록한다; (1 a r b)는 위치 b에서 값을 판독하도록 프로세서에 지시하여, r만큼 좌측 순환-시프트되고, 결과치를 위치 a에서의 값에 부가한다.
곱셈 행렬의 분해
Z-비트 데이터의 벡터 v(n×l)와 제로 행렬들 또는 Z×Z 순환형 행렬들의 엔트리들을 포함하는 행렬 U(m×n)의 곱셈을 분해할 때, 곱셈 이전에 소스 데이터가 Z-비트 데이터 폭의 몇몇 메모리의 위치들(s, s+1, ..., s+n-1)에서 홀딩될 수 있고; 결과 데이터가 동일한 메모리에서 위치들(t, ..., t+m-1)에 저장될 것이다. 행렬 U의 행 i,i ∈ [0, m - 1]은 순환형-시프트 값들
Figure 112009061933926-PCT00041
과 함께, 열들
Figure 112009061933926-PCT00042
에서 0이 아닌 엔트리들을 갖는, 즉,
Figure 112009061933926-PCT00043
인 것으로 또한 가정될 수 있다. 이러한 가정들하에서, v와 U의 곱셈은 하기의 연산들의 시퀀스와 동등하다:
Figure 112009061933926-PCT00044
Figure 112009061933926-PCT00045
Figure 112009061933926-PCT00046
명령들의 전체 개수는 행렬의 0이 아닌 엔트리들의 개수와 동일하다.
인코딩 프로세스
도 15는 도 11에 보여지는 벡터 LDPC 코드에 대한 연산들 (O a r b) 및 (1 a r b)의 시퀀스로서 인코딩 프로세서를 개시한다. 메모리(1502)는 정보 비트들, 코딩된 비트들 및 중간 변수들을 저장할 수 있다. 메모리 위치들(0' 내지 11') 각각의 컨텐츠가 대응 메모리 위치상에 행(1503)에 보여진다. 메모리는 Z-비트 데이터 폭일 수 있는데, 즉, 단순한 SIMD 명령에 의한 액세싱 유닛은 Z-비트 벡터이고, 각각의 메모리 위치(0' 내지 11')는 Z개 비트들을 홀딩한다. 메모리(1502)의 위치 0'는 단일 정보 벡터 s를 저장하기 위하여 할당될 수 있다; 위치 1'는 패리티 벡터 p1를 저장하기 위하여 할당될 수 있다; 위치 2' 내지 4'는 패리티 벡터들 p'2를 저장하기 위하여 할당될 수 있다. 추가적인 메모리 공간이 중간 값들을 홀딩하기 위 하여 제공될 수 있다. 메모리(1502)는
Figure 112009061933926-PCT00047
의 값 및 나중에
Figure 112009061933926-PCT00048
의 값을 저장하기 위하여 위치들 5' 내지 7'를 제공할 수 있다; 메모리는
Figure 112009061933926-PCT00049
를 저장하기 위하여 위치들 9' 내지 11'를 제공할 수 있다; 메모리는
Figure 112009061933926-PCT00050
를 저장하기 위하여 위치들 12'를 제공할 수 있다.
메모리(1502)의 상기 할당에 대하여, 벡터들과의 행렬 곱셈으로서 도 14에 개시된 인코딩 프로세스는 테이블(1504)에 리스팅된 연산들 (0 a r b) 또는 (1 a r b)의 시퀀스로 분해된다. 명료성을 위하여, 테이블(1504)은 자신의 개별적인 행렬 곱셈 대응부들과 함께 명령들의 시퀀스를 보여준다. 예를 들어, 곱셈
Figure 112009061933926-PCT00051
는 (0 5 1 0) 이후에 (0 7 0 0)이 후속되는 2개 명령들로 분해될 수 있다. 도 14에서와 동일한 정보 비트들이 테이블(706)의 제1 행에 개시된 바와 같이, 위치 0에 s = [100]을 저장함으로써 인코딩될 수 있다. 도 14의 대응부들과 동일하게, 명령들 (0 5 1 0) 및 (0 7 0 0)을 실행하는 연산들은 5' 내지 7'로부터의 위치들에 결과
Figure 112009061933926-PCT00052
=(001, 000, 100)를 가져올 수 있다. 테이블(1506)은 명령들의 시퀀스가 실행됨에 따라, 메모리(1502)의 컨텐츠의 관점에서 완전한 인코딩 프로세스를 개시한다.
테이블(1504)에 리스팅된 명령들은 하드웨어 구현으로 용이하게 변환될 수 있다. 예를 들어, 명령 세트의 잉여분을 제거하는 것, 메모리의 초기화를 방지하기 위하여 명령 세트에 명령들을 부가하는 것, 또는 메모리 연산 특성들에 따르기 위하여 명령 세트를 최적화시키는 것 포함하여, 다수의 명령 세트의 변동들이 가능할 수 있다. 그러한 변동들은 본 발명의 범위 내에서 고려될 수 있다.
인코더
도 16은 인코더(1600)를 개시한다. 인코더(1600)는 회전들을 이용하여 인코더(800)를 완전히 벡터화시킬 수 있다. 인코더(1600)와 인코더(800) 사이의 유사성은 명백할 것이다. 특히, 인코더 제어 모듈(1612) 및 연산 제어 모듈(1610)은 인코더(800) 내의 자신의 개별적 대응부들(802 및 812)과 동일하거나 유사한 방식으로 기능할 수 있다. 예를 들어, 도 12 및 13에 정의된 LDPC 코드를 인코딩하기 위하여, 이러한 컴포넌트들의 연산은 도 3의 예시적 코드(300)를 인코딩할 때, 인코더(800) 내의 자신의 대응부들과 정확히 동일할 것이다. 인코딩 메모리(1606)는 인코더(800)내의 자신의 대응부들(806)의 벡터화된 버전일 수 있다. 인코더(800)에서, 메모리는 단일 비트들을 저장한 반면, 인코더(1600)의 대응 메모리들은 세트들, 즉, Z-비트 벡터들을 저장할 수 있다. 이러한 벡터들은 SIMD 명령들을 사용하여 단일 유닛들로서 기록하고 판독될 수 있다. 따라서, 정렬(판독/기록) 제어(1604)로부터 메모리로 송신된 메시지 식별자들, 즉, 메모리 인덱스들은 인코더(800)의 것들과 동등하거나 유사할 수 있다. 정렬 또는 판독/기록 제어 모듈(1604)은 예를 들어, 회전과 같은 치환 정보를 저장하고 제공하는, 인코더(800)에서 자신의 대응부(804)의 역할을 넘어서는 추가적인 역할을 한다.
인코딩 실시예(300)에서, 인코더(800)는 단일 단계들의 시퀀스를 자신의 정렬 모듈(1004)에 저장하였고, 이는 함께 일련의 행렬 곱셈들을 수행하였다. 도 11의 코드를 인코딩하기 위하여 인코더(1600)를 사용하는 것을 고려하라. 정렬 모듈(1604)은 인코딩 동안에 Z-비트 벡터들에 액세스하기 위한 동일한 상기 시퀀스를 저장하고, 또한 Z-비트 벡터들의 동일한 시퀀스와 연관되는 회전들을 설명하는 시퀀스를 저장할 수 있다. 이러한 시퀀스는 스위치(1616)가 벡터들을 회전시키기 하기 위하여 정렬 모듈(1604)에 의하여 사용되는 롯(rot) 신호를 생성하기 위한 원리로서 작용한다. 벡터 단위 연산 프로세서(1608)는 자신이 단일 비트들 대신에 Z-비트 벡터들상에서 동작하는 것(클리어링, 누적, 또는 출력)을 제외하고, 인코더(800)에서 자신의 대응부(808)와 동일한 것이다.
상기 논의된 인코딩 방법들 및 장치에 대한 몇몇 변동들은 몇몇 구현들의 경우에 복잡성을 감소시킬 수 있다. 상기 논의된 인코딩 메모리(1606) 및 제어 메모리(1604) 모두에 대한 메모리 요건을 감소시킬 수 있는 몇몇 변형들이 하기에 개시된다. 구현은 하기 개시된 변화들 중 하나 이상을 통합할 수 있다.
먼저, 명령 표시는 간략화될 수 있다: 상기 개시된 바와 같이, 다양한 실시예들에서, 인코딩 명령 세트는 실행시 실제 인코딩을 생성하는 2개의 기본 명령들 (0 a r b) 및 (1 a r b)의 정렬된 시퀀스이다. 상기 명령 시퀀스는 몇몇 벡터와의 몇몇 행렬의 곱셈들을 기본 명령들의 시퀀스로 계속해서 분해함으로써 생성될 수 있다. 몇몇 예시적 분해들은 다음의 패턴의 압도적 퍼센트의 서브 시퀀스들을 포함한다:
Figure 112009061933926-PCT00053
. 상기 서브-시퀀스에서의 반복은 중복적일 수 있다. 이러한 중복은 기본 명령을 변경함으로써 용이하게 제거될 수 있다. 차후에는, 2개의 새로운 명령들 (0 0 a) 및 (1 r a)가 다음과 같이 정의될 수 있다: (I r a)는 프로세서가 위치 a에서 값을 판독하고, r만큼 그것을 좌측으로 순환-시프트시키며, 값을 누산기의 현재 값으로 xor 연산하도록 지시할 수 있다; (0 0 a)는 프로세서가 누산기의 현재 값을 위치 a에 기록하며, 누산기의 값을 0으로 리셋시키도록 지시할 수 있다. 기존 명령들로부터 신규한 명령들로의 변형은 다음과 같을 수 있다: (0 a r b)는 (1 r b), (0 0 a)로 변형될 수 있으며; (1 a r b)는 (1 0 a), (1 r b), (0 0 a)로 변형될 수 있다. 이러한 규칙에 따라, 예시적인 시퀀스
Figure 112009061933926-PCT00054
Figure 112009061933926-PCT00055
Figure 112009061933926-PCT00056
Figure 112009061933926-PCT00057
로 변형될 수 있고, 따라서, 중복성이 제거될 수 있다. 이러한 방식으로 명령 세트를 변형하는 것은 인코딩 메모리(1606)를 구현하는데 요구되는 메모리량을 감소시킬 수 있다.
다음으로, 명령 세트의 카디널리티(cardinality)는 감소될 수 있다: 행렬들 및 벡터들 곱셈들의 시퀀스로서 LDPC를 처리할 때(1600), 인코딩 프로세스는 3개 스테이지들로 개략적으로 분할될 수 있다. 제1 스테이지에서,
Figure 112009061933926-PCT00058
는 먼저
Figure 112009061933926-PCT00059
를 풀고, 그 후
Figure 112009061933926-PCT00060
를 푸는 단계에 의하여 획득될 수 있다; 제2 스테이지에서,
Figure 112009061933926-PCT00061
가 획득될 수 있다; 마지막 스테이지에서,
Figure 112009061933926-PCT00062
가 주어지면,
Figure 112009061933926-PCT00063
Figure 112009061933926-PCT00064
를 푸는 단계에 의하여 획득될 수 있고, 이는 후진 대입을 사용하여 효율적으로 수행될 수 있다. 최초 형태로, 각각의 스테이지에서 행렬들 및 벡터 곱셈들이 명령 서브세트로 분해될 수 있다. 이러한 3개 서브세트들의 순차적 연결(sequential concatenation)은 완전한 명령 세트일 수 있으며, 명령 세트의 종 료는 인코딩 프로세스의 종료를 의미한다. 그러나, 제1 스테이지와 마지막 스테이지 사이의 명령 서브세트의 공유가 가능할 수 있으며, 따라서, 명령 세트의 카디널리티를 감소시킬 수 있다.
Figure 112009061933926-PCT00065
가 0으로 초기화된다면,
Figure 112009061933926-PCT00066
를 푸는 단계에 의하여
Figure 112009061933926-PCT00067
가 획득될 수 있다는 것을 인지할 수 있다. 다음으로, 마지막 스테이지 및 제2 스테이지에 대한 명령 서브세트의 연결이 될 명령들의 시퀀스가 정의될 수 있다. 그리하여, 이제 인코딩은 1)
Figure 112009061933926-PCT00068
가 0이도록 초기화하는 것; 2) 마지막 스테이지에 대한 명령 서브세트를 구동(
Figure 112009061933926-PCT00069
를 획득)하는 것; 3) 제 스테이지에 대한 명령 서브세트를 구동(
Figure 112009061933926-PCT00070
를 획득)하는 것; 4) 다시 마지막 스테이지에 대한 명령 서브세트를 구동(
Figure 112009061933926-PCT00071
를 획득)하는 것을 포함할 수 있다.
이러한 명령 세트 공유는 인코더 제어 디바이스(1612)에서 메모리를 감소시킬 수 있으며, 그것이 또한
Figure 112009061933926-PCT00072
Figure 112009061933926-PCT00073
에 대한 위치에서 절약될 수 있고, 절약할 필요가 없으므로, 인코딩 메모리(1606)를 또한 감소시킬 수 있다.
기본 인코딩 구조
도 17은 패리티 체크 행렬(1700)를 도시하고(그래픽 심볼을 포함하는 박스들은 1을 지시하며, 그래픽 심볼들을 갖지 않거나 빈 박스들은 0을 지시함), 도 18은 태너 그래프를 도시하며, 기본 인코딩 구조 A의 표시들 모두가 하기에 개시된다. 도 18의 그래프가 리프트될 때, 본 명세서에서 정사각형으로 도시되는 행렬의 각각 의 엔트리는 치환 행렬 또는 제로 행렬이 될 수 있다. 제로 행렬들은 빈 박스들에 대응하며, 치환 행렬들은 그래픽 심볼들을 갖는 박스들에 대응한다. 순환형 리프트의 경우에, 치환 행렬들은 순환형 치환 행렬들일 수 있다. 패리티 체크 행렬로서의 구조의 치환에서, 행들 및 열들이 치환된 것으로 나타날 수 있다는 것을 이해해야 한다. 유사하게, 태너 그래프는 치환된 방식으로 나타날 수 있다. 추가로, 행렬 및 그래프는 큰 구조의 서브-행렬들 및 서브-그래프들일 수 있다.
프로젝팅된 그래프는 또한 기본 그래프로서 공지될 수 있다. 완전한 그래프는 리프트된 그래프로서 공지될 수 있다. 리프트된 그래프는 기본 그래프의 Z개 카피들을 만드는 단계 및 카피들 중에서 유사 에지들을 치환하는 단계에 의하여 획득될 수 있다. 간략화를 위하여, 순환형 치환들이 집중된다.
기본 그래프에서 갖기에 편리한 인코딩 구조는 단일 등급 3 변수 노드와 함께 등급 2 변수 노드들의 누적 체인일 수 있다. 구조는 누적 체인의 모든 등급 2 변수 노드들(V2-V9) 및 등급 3 변수 노드들(V1)를 통과하는 단일 루프(1800)로 주로 구성된다. 루프의 등급 3 변수 노드상의 에지들 중 2개(1802, 1804)가 루프에 참여된다. 등급 3 변수 노드(V1)상의 제3 에지(1806)는 루프로부터 임의의 체크 노드에 입사할 수 있으며, 연관된 패리티 체크 행렬을 전도된 채로 방치한다. (도 18에서, 체크 노드들은 C1-C9를 포함할 수 있다.) 이러한 인코딩 구조는 기본 인코딩 구조 A로서 지칭될 수 있으며, 도 18에 보여진다. 몇몇 실시예들에서, 등급 3 노드(V1)는 누적 체인에서 모든 등급 노드들을 포함하는 루프를 형성하지 않을 수 있 다. 이러한 인코딩 구조는 기본 인코딩 구조 B로서 지칭될 수 있다. 따라서, 기본 인코딩 구조 A는 기본 인코딩 구조 B의 특별한 경우일 수 있다.
기본 그래프의 코어는 상기 언급된 루프에 참여하는 제약 노드들에 접속될 수 있는 추가적인 변수 노드들과 함께 상기 개시된 구조들로 구성될 수 있다. 도 19에 보여지는 바와 같이, 기본 그래프(1900)의 코어에 속하는 변수 노드들로부터 형성되는 추가적인 패리티 체크 비트들이 존재할 수 있다.
등급 1 변수 노드들의 인코딩은 일단 모든 다른 비트들이 결정되면 매우 간단할 수 있다. 따라서, 인코딩을 위하여, 제1 포커스는 이러한 노드들이 제거된 구조상에 있을 수 있다. 도 20은 노드들을 없애지 않고 도 19에 대응하는 일 실시예(2000)를 제공한다. 결과 구조는 코어로서 지칭될 수 있다. 도 19의 실시예에서와 같이, 코어가 구조로서 기본 인코딩 구조 A를 포함할 때, 기본 인코딩 구조 A를 사용하는 것은 정보 노드들로서 다른 변수 노드들을 설정하는 단계를 수반할 수 있으며, 이는 또한 조직 노드들로서 지칭될 수 있다. 상기 노드들과 연관되는 비트들의 값들은 정보 비트들로부터 할당된다. 기본 인코딩 구조 A와 연관되는 비트들은 그 후 인코딩을 완료하기 위하여 계산될 수 있다. 일단 기본 인코딩 구조 A의 등급 3 변수 노드의 값이 결정되면, 누적 체인 비트들은 단일 컨볼루션형 프로세스에 의하여 결정된다. GF[2]상의 코어 기본 그래프의 모든 제약들이 부가된다면, 즉, 인코딩에서 제약으로부터 변수 노드로의 짝수 개수의 에지들이 0 에지들과 동등하고 제약으로부터 변수 노드로의 홀수 개수의 에지들이 1 에지와 동등할 수 있다는 것을 유념하면, 기본 인코딩 구조 A의 등급 3 노드가 코어 기본 그래프의 홀수 등급의 단순한 다수의 정보 변수 노드들로서 기록될 수 있음이 관찰될 수 있다.
그래프가 리프트될 때, 누적 체인의 등급 2 변수 노드와 연관되는 에지들의 각각의 쌍에 동일한 리프트 값이 주어질 수 있다면, 코어 기본 그래프에 대하여 상기 개시된 주요 특성이 코어 리프트된 그래프에 대하여 보존될 수 있다. 특히, 블럭-와이즈(block-wise) 방식에서 행을 제외하고 기본 그래프의 제약들을 부가하는 것과 유사하게, 리프트된 패리티 치환 행렬들을 부가하여, 누적 체인의 등급 2 노드들과 연관되는 에지들은 정보 리프트된 노드들의 패리티로서 등급 3 리프트된 변수 노드를 남기고 서로를 효율적으로 소거시킨다. 등급 3 변수 노드와 연관되는 결과 행렬은 Φ 행렬이다.
기본 인코딩 구조 B를 리프트시키는 일 실시예에서, 등급 3 노드와 연관되는 에지들 중 2개 에지들상의 회전 값들은 형태 s 및 s+L/4를 가질 수 있는 반면, 제3 에지는 임의의 상이한 값을 취한다. 여기서, s는 임의의 정수이며, L은 리프트 크기이다. 이러한 경우에, 행렬 Φ-1은 많아야 9개 치환 행렬들의 합이 될 수 있는데, 즉, Φ-1에 의한 곱셈은 많아야 9배로 벡터를 치환하는 단계 및 많아야 9개 카피들을 부가하는 단계를 수반한다. 이러한 인코딩 구조는 리프트된 인코딩 구조 B로서 지칭될 수 있다.
기본 인코딩 구조 B를 리프트시키는 다른 실시예에서, 등급 3 노드와 연관되는 루프 에지들 중 두개 에지들상의 회전 값들은 형태 s 및 s+L/2를 가질 수 있는 반면, 제3 에지는 임의의 상이한 값을 취한다. 이러한 경우에, 행렬 Φ-1은 많아야 3개 치환 행렬들의 합이 될 수 있는데, 즉, Φ-1에 의한 곱셈은 많아야 3배로 벡터를 치환하는 단계 및 많아야 3개 카피들을 부가하는 단계를 수반한다. 이러한 인코딩 구조는 리프트된 인코딩 구조 C로서 지칭될 수 있다.
기본 인코딩 구조 B를 리프트시키는 다른 실시예에서, 등급 3 노드와 연관되는 루프 에지들 중 두개 에지들상의 회전 값들은 형태 s를 가질 수 있는 반면, 제3 에지는 임의의 상이한 값을 취한다. 이러한 경우에, 행렬 Φ-1은 단일 치환 행렬들의 합이 될 수 있는데, 즉, Φ-1에 의한 곱셈은 단일 치환만을 수반한다. 이러한 인코딩 구조는 리프트된 인코딩 구조 D로서 지칭될 수 있다.
리프트된 인코딩 구조 B, C 및 D는 모두 기본 인코딩 구조 B의 리프트들일 수 있다는 것을 유념해야 한다. 몇몇 실시예들에서, 등급 3 노드의 2개의 명시된 에지들은 기본 인코딩 구조 A의 등급 3 노드의 3개 루프 에지들일 수 있다. 리프트된 인코딩 구조 B, C 및 D 중에서, D는 최하의 복잡성을 가질 수 있는 반면, B는 최고의 복잡성을 가지고, C는 그 사이의 복잡성을 가질 수 있다. 반대로, B의 장점은 리프트된 그래프에서 등급 2 노드들을 통과하는 루프가 4개의 등급 3 노드들을 또한 통과할 수 있다는 것이며, 이는 그래프의 성능, 특히, 높은 신호-대-잡음비를 개선할 수 있다. 대조적으로, 구조 C에서, 등급 2 체인을 통한 루프는 단지 2개의 등급 3 노드들을 통과할 수 있는 반면, 구조 A에서, 이것은 단 하나의 등급 3 노드를 통과할 수 있다. 따라서, 인코딩 구조 B, C 및 A는 성능과 복잡성 사이에 상이한 교환 협정들을 제공할 수 있다.
인코딩 구조 B의 가장 리프트된 버전에 대하여, 누적 체인과 연관되는 치환들상의 전술한 제약으로, Φ 행렬은 3개 치환 행렬들의 합산이 될 것이다. 등급 3 노드의 에지들 중 2개 에지들이 동일한 치환을 갖는다면, Φ 행렬은 치환 행렬일 수 있다. 이것은 리프트된 인코딩 구조 D를 위한 경우일 수 있다. 리프트된 인코딩 구조 D가 기본 인코딩 구조 A의 리프트가고, 동일한 치환을 갖는 에지들이 등급 3 기본 노드로부터의 2개 리프트된 루프 에지들이라면, 이러한 구조는 리프트된 인코딩 구조 A로 지칭될 수 있다. 나머지 취소되지 않은 에지와 연관되는 회전이 0이거나, 또는 Φ가 항등 행렬이라면, 구조는 동일성(identity)을 갖는 리프트된 인코딩 구조 A로서 지칭될 수 있다.
디코더에서의 큰 병렬도(large degree of parallelism)을 위하여, 큰 값의 리프트 크기 Z를 갖는 것이 바람직할 수 있다. 따라서, 작은 기본 그래프들을 갖는 것이 바람직할 수 있다. 이것은 상기 개시된 인코딩 구조를 사용하는 것에 곤란함을 야기할 수 있다. 엄밀히 말해, 기본 그래프가 작다면, 누적 체인이 다소 짧을 수 있다. 인코딩 구조 A가 리프트된 구조를 사용할 때, 리프트된 등급 3 변수 노드의 한 카피 및 길이가 기본 그래프 누적 체인인 등급 2 노드들의 체인으로 구성되는 Z 루프들이 생성될 수 있다. 따라서, 이러한 인코딩 루프는 다소 짧으며, 이것은 코드의 열악한 성능을 초래할 수 있다.
본 명세서에 개시된 구조는 작은 기본 그래프를 유지하면서 L에서 2L+1로 인 코딩 루프의 누적 체인을 효율적으로 증가시키도록 허용할 수 있다. 리프트 크기 Z를 갖는 기본 그래프를 확장시킨 이후에, 3배의 기본 그래프 및 리프트 크기 Z/2를 갖는 것으로 인코딩 구조 A가 나타날 수 있다. 이러한 확장은 그래프를 변경하지 않으며, 단지 기본 그래프 및 리프트로서 그것의 해석을 변경할 뿐이다.
확장
정수들의 세트 {0,...,Z-l}는 세트 {0, 2,..., Z-2} 및 세트 {1, 3 , ..., Z-1}를 상호배치한 것이다. {0 ,..., Z-1}상의 순환형 치환은 S만큼 우측으로의 순환형으로 시프팅하는 단계에 의하여 수행될 수 있으며, 그것은 짝수 엘리먼트들 {0 ,2,..., Z-2} 및 홀수 엘리먼트들 {1, 3 , ..., Z-1}의 순환형 치환과 그 둘의 재-상호배치로서 동등하게 지칭될 수 있다. S가 짝수라면, 시퀀스들의 재-상호배치는 짝수개의 서브세트로 시작될 수 있으며, S가 홀수라면, 홀수개의 서브세트로 시작될 수 있다. 짝수개의 시퀀스의 순환형 시프트는 많아야 S/2의 가장 큰 정수인 K일 수 있으며, 홀수개의 시퀀스의 순환형 시프트는 S-K일 것이다.
기본 그래프의 크기 Z의 리프트인 그래프로 시작하여, 각각의 기본 그래프 노드가 복사되며, 하나는 짝수 노드이고, 다른 하나는 홀수 노드이며, 리프트 크기를 Z/2로 감소시키고, 상기 개시된 표시를 사용하여 최초 크기의 두배의 기본 그래프의 Z/2 리프트 크기와 정확히 동일한 그래프를 재현해낼 수 있다. 최초 그래프에서 리프트된 변수 노드가 치환 S를 갖는 리프트된 체크 노드로 접속된다면, 노드들을 복제한 이후에, S가 짝수인 경우, 변수 노드들의 짝수개의 카피가 체크 노드의 짝수개의 카피에 접속될 수 있고, 변수 노드의 홀수개의 카피가 체크 노드의 홀 수개의 카피에 접속될 수 있으며, S가 홀수인 경우, 짝수개의 변수 노드가 홀수개의 체크 노드에 접속될 수 있고, 홀수개의 변수 노드가 짝수개의 체크 노드에 접속될 수 있다. 상기 2개 에지들과 연관되는 리프트들은 K 및 S-K일 수 있다.
목표는 이러한 2배만큼 큰 기본 그래프 Z/2-리프트된 구조에서 나타나는 리프트된 인코딩 구조 A를 갖는 것이다. 따라서, 인코딩 구조는 최초 Z-리프트된 더 작은 기본 그래프 구조에서 내재되어야(implicit) 한다.
이것이 발생하기 위하여, 누적 체인의 루프를 폐쇄하는 추가적인 등급 2 노드가 기본 인코딩 구조 A에 부가될 수 있다. 기본 그래프에서, 이러한 노드는 등급 3 노드로부터의 노드들 중 2개에 평행한 에지들을 갖는다. 리프트를 수행할 때, 상기 노드상의 에지들은 정수 값들 A 및 A-1을 가질 수 있으며, 모든 값들은 모듈로(modulo) Z로서 해석된다. 이러한 방식으로, 기본 그래프의 Z개 카피들에서 나타날 등급 2 노드들을 통한 Z개 루프들은 Z배 더 긴 단일 루프가 된다. 루프상의 이러한 순환형 치환들 이외에, 인코딩 구조의 등급 3 변수 노드의 에지들은 정수들 B-1 및 B 모듈로 Z이며, 기본 그래프에서, B-1 치환은 리프트 값 A를 갖는 루프 등급 2 변수 노드상의 에지들과 동일한 제약 노드에 접속되는 에지와 연관될 수 있다. 이러한 구조에 따라, 상기 개시된 바와 같이 기본 그래프는 확장될 수 있고, 리프트 크기가 절반이 될 수 있어, 결과 그래프는 리프트된 인코딩 구조 A를 포함할 것이며, 여기서, 추가적인 등급 2 변수 노드의 한 카피는 이제 인코딩 구조에 참여하는 반면 다른 노드는 참여하지 않고, 등급 3 변수 노드의 2개 카피들 중 하나는 참여하며 다른 하나는 참여하지 않는다.
몇몇 일반화가 본 명세서에서 가능할 수 있다. 먼저, 리프트 Z가 2의 거듭제곱(power)을 갖는 것으로 가정하면, 기본 그래프를 확장할 때, 리프트 값들 S의 LSB는 기본 그래프로 이동될 수 있다. 상이한 비트들이 사용될 수 있다. k번째 비트(현재 k = 0)가 사용된다면, 상기 A-1 및 B-1 대신에 A-2k 및 B-2k가 도출될 것이다. 이러한 경우에, 리프트된 누적 구조는 하나의 큰 루프를 형성하지 않으나, 다수의 루프들을 형성할 수 있다. 두 번째로, 이러한 포커스가 Z에 대하여 2의 거듭제곱들상에 있으나, 다른 값들도 사용될 수 있다. 일반적으로, F가 Z의 팩터인 한, 이러한 방식으로 팩터 F만큼 기본 그래프를 증가시킬 수 있다.
몇몇 코드 설계들에서 바람직한 추가적인 특성은 리프트의 확장성(scalability)인데, 즉, 동일한 기본 그래프가 상이한 리프트 크기들 Z와 함께 사용될 수 있다. 또한, 상이한 크기의 리프트들이 단일 리프트으로부터 종종 유도될 수 있다. 특히, 16 내지 512 또는 1024에 이르는 2의 거듭제곱들인 Z 값들을 지원하는 것에 포커스가 맞춰진다. 추가적인 목표는 스케일링(scaling)하에서 보존되는 상기 개시된 것과 같은 인코딩 구조를 갖는 것일 수 있다. 이것은 스케일링 파라미터들을 제약한다. 최대 리프팅 크기의 리프트가 정의되고 더 작은 리프트 크기가 적절한 개수의 LSB들을 리프트 값으로부터 제거함으로써 유도되는 스케일링 규칙이 제공될 수 있다. 이러한 스케일링 법칙은 일반적으로 하기와 같이 표현될 수 있다. S가 리프트 크기 Zmax와 연관된 리프트라면, 리프트 크기
Figure 112009061933926-PCT00074
와 연관된 리프트는 최대
Figure 112009061933926-PCT00075
의 최대 정수일 수 있다. 스케일링하에서 보존되 는 인코딩 구조를 갖는 것이 바람직하다. 스케일링하에서 항상 보존되는 2개의 특별한 리프트 값들, 즉 숫자 0 및 -1 mod 2n가 존재한다. 따라서, 인코딩 구조가 이러한 단 2개의 값들만을 사용한다면, 이것은 스케일링하에서 보존될 것이다.
따라서, 하나의 옵션은 등급 3 노드의 루프 에지들상에 0 및 -1의 리프트 값들 및 비-루프 에지상에 임의의 값을 갖는 것이다. 이러한 기본 그래프가 2만큼 확장될 때, 이것은 리프트된 인코딩 구조 A를 갖는다. 값들 0 및 -1이 스케일링하에서 보존될 수 있기 때문에, 이러한 구조는 모든 2의 거듭제곱들에 의하여 스케일링하에서 보존될 수 있다. 또한, Φ-1이 확장된 그래프에서 치환 행렬임을 의미하는 리프트된 인코딩 구조 A가 이제 사용될 수 있다.
가능한 또 다른 바람직한 피쳐는 항등성을 갖는 리프트된 인코딩 구조 A를 갖는, 등급 3 인코딩 노드의 비-루프 에지상의 치환을 0이 되게 하는 것이다. 이것은 0 또는 -1 값을 갖는 인코딩 구조에서 모든 다른 순환형 치환들을 갖는 것 및 이와 동시에 그래프의 낮은 등급 변수 노드들의 짧은 루프들을 방지하는 것과 충돌한다.
그러나, 인코딩 구조의 보존이 단지 2보다 큰, 예를 들어, 16과 같은 몇몇 최소 리프트 값으로 다운된다면, 0 및 -1이 아닌 값들이 사용될 수 있다.
등급 2 리프트된 루프 구조 및 등급 3 인코딩 열의 주요 피쳐는 리프팅 치환들이 몇몇 정수 K에 대하여 값들 K 및 K-1을 취하는 것이다. 단지 K = O이 크기 2 아래의 모든 리프트들에 대하여 이것을 보존할 수 있다. 그러나, 이러한 특성이 크기 16의 리프팅들에 대하여 유지된다면, K에 대한 상이한 값들이 선택될 수 있다. K가 4 이상인 n을 갖는 Z= 2n에 대응하는 n 비트 길이라면, K의 n-3 LSB들이 0이되고 다른 것들은 임의의 수이도록 선택될 수 있다. 그 후 K-1 mod 2n의 n-3 LSB들은 1이다. 이러한 경우에, 1만큼 상이한 리프트 값들의 주요 피쳐가 보존된다. 예를 들어, K가 그러한 n-비트 수이고, J가 K의 제1 m 비트들, 다시 말해, m개의 MSB들로서 주어지는 m-비트 수라면(m은 4 이상), J-1 모듈로 2m은 K-1 모듈로 2n과 동일하다. 다시 말해, K 및 K-1로부터의 n-m LSB들이 누락된다면, 결과는 J 및 J-1 모듈로 2m의 이진 표시이다. 이것은 확장된 인코딩 구조에서, 리프트된 인코딩 구조 A에 참여하는 인코딩 등급 3 변수 노드의 카피가 치환 값 0을 갖는 리프트된 자신의 비-루프형 에지를 갖도록, 인코딩 구조에서 등급 3의 비-루프형 에지상의 치환을 설정하는데 사용될 수 있다. 따라서, 확장된 인코딩 구조는 항등성을 갖는 리프트된 인코딩 구조 A이다. 마지막 n-3 비트들이 0인 비트 수는 n-3개 0-비트 수로서 지칭될 것이다.
도 21은 변수 노드들 V1-V4 및 제약 노드들 C1-C4를 갖는 기본 인코딩 구조 A의 확장도를 도시하며, 루프(2102)를 형성하기 위하여 추가적인 등급 2 변수 노드 VX는 누적 체인을 폐쇄한다.
도 22는 도 21의 확장된 기본 인코딩 구조 A(2100)의 Z=8의 리프트를 도시한다. 짝수 및 홀수 카피들을 분간하기 위하여 그래픽 심볼들이 사용된다. 이러한 도면에서는 0 및 -1의 시프트들만이 사용된다. 등급 3 노드의 비-루프형 에지는 부착되지 않은 것으로 도시되며, 그것의 치환은 주어지지 않는다. 리프트된 등급 3 노드의 루프 에지들상의 치환들의 선택으로 인하여, 이것은 리프트된 인코딩 구조 A를 표시하지 않는다. 변수 노드들 VX,Z는 제1 내지 제8 그래프들에 대응할 수 있으며, 여기서, x는 그래프의 개수이고, z는 리프트 크기이다. 제약 노드들 CX,Z는 제1 내지 제8 그래프들에 대응할 수 있으며, 여기서, x는 그래프의 개수이고, z는 리프트 크기이다.
도 23은 크기 4의 리프트 및 2배의 기본 그래프로서 도 22에 보여지는 그래프의 확장도를 도시한다. 그래프는 이제 홀수개의 등급 3들 및 도 22의 누적 루프가 폐쇄된 등급 2의 절반부를 사용하는 리프트된 인코딩 구조 A를 포함할 수 있다는 것을 유념하라.
패리티 체크 행렬들
상기 개시된 애플리케이션은 제3세대 파트너쉽 프로젝트 2(3GPP2) 무선 통신 시스템에서 사용될 수 있다. 그러한 시스템은 공동 계류중인 미국 가출원 번호 제 60/862,730호에 어느 정도까지 설명되며, 상기 출원은 본 명세서에 참조로서 통합되고, 본 발명의 일부를 형성한다. 추가로, 상기 실시예들에 대하여 명기된 인코딩은 인코딩을 위한 원리로서 리프트된 인코딩 구조 A를 사용하는 것일 수 있다. 다시 말해, 확장된 그래프에서 나타나는 리프트된 인코딩 구조 A는 코어의 패리티 비트들을 표시한다. 실시예들의 열들 또는 변수 노드들을 재정렬하는 것은 현저히 실시예들을 변화시키지 않는다. 유사하게, 행들 또는 제약 노드들을 재정렬하는 것은 실시예들을 변화시키지 않는다. 유사하게, 열의 모든 리프트 값들에 상수들을 부가하는 것은 실시예들을 현저히 변화시키지 않을 수 있다.
도 24는 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 인코더(2400)를 도시하는 블럭도이다. 인코더는 이분 그래프로 인코딩된 데이터를 표시할 수 있다. 인코더(2400)는 데이터를 수신 및 송신할 수 있는 통신 인터페이스(2704)에 결합되는 프로세싱 회로(2402)(예를 들어, 프로세서, 프로세싱 모듈 등) 및 인코딩된 데이터를 저장하기 위한 메모리 디바이스(2406)를 포함할 수 있다. 프로세싱 회로(2402)는 프로세싱 회로(2402)에 하나 이상의 명령들을 제공하기 위하여 제어 모듈(2408)에 결합될 수 있다. 명령들은 메모리 디바이스(2406)가 액세스되는 순서 및 데이터 흐름의 타이밍을 포함할 수 있으나 이에 제한되는 것은 아니다. 프로세싱 회로(2402) (a) 다수의 낮은 등급 변수 노드들의 누적 체인을 생성하는 것; 및 (b) 한번은 낮은 등급 변수 노드를 사용하고, 한번은 낮은 등급 변수 노드보다 높은 등급 변수 노드를 사용하여 루프를 두 번 형성하도록 누적 체인을 폐쇄하는 것을 달성하는 기능들을 수행할 수 있으며, 여기서, 높은 등급 변수 노드는 비-루프-폐쇄 에지를 포함한다.
도 25는 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 인코더상에서 작동하는 예시적인 방법을 도시한다. 인코더는 이분 그래프로 인코딩된 데이터를 표시할 수 있다. 인코더가 인코딩을 위해 저밀도 패리티 체크(LDPC) 코드를 수신할 때 예시적인 방법의 동작이 개시된다(2502). 다음으로, 인코더는 낮은 등급 변수 노드들의 누적 체인을 생성할 수 있다(2504). 한 구성에서, 다수의 낮은 등급 변수 노드들이 각각의 에지상에 동일한 치환을 가질 수 있다. 다음으로, 누적 체인은 한번은 낮은 등급 변수 노드를 사용하고 한번은 낮은 등급 변수 노드보다 높은 등급 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 폐쇄될 수 있고(2506), 높은 등급 변수 노드는 비-루프-폐쇄 에지를 포함할 수 있다(2508).
다른 구성에 따라, 인코더의 회로는 이분 그래프에 의하여 표시할 수 있는 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하도록 구성될 수 있다. 동일한 회로, 상이한 회로, 또는 동일하거나 상이한 회로의 제2 섹션이 각각의 에지상에 동일한 치환을 갖는 다수의 낮은 등급 변수 노드들의 루프를 생성하는 누적 체인을 생성하도록 구성될 수 있다. 또한, 동일한 회로, 상이한 회로, 또는 동일하거나 상이한 회로의 제3 섹션이 낮은 등급 변수 노드 및 낮은 등급 변수 노드보다 높은 등급 변수 노드를 사용하여 루프를 폐쇄하도록 구성될 수 있으며, 여기서, 높은 등급 변수 노드는 비-루프-폐쇄 에지를 포함한다. 유사하게, 동일한 회로, 상이한 회로, 또는 회로의 제4 섹션이 누적 체인의 다수의 치환된 카피들, 낮은 등급 변수 노드의 다수의 치환된 카피들, 및 높은 등급 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하도록 구성될 수 있다. 본 기술분야의 당업자들은 일반적으로 본 명세서에 개시된 프로세싱의 대부분이 유사한 방식으로 구현될 수 있음을 인지할 수 있을 것이다. 회로(들) 또는 회로 섹션들 중 임의의 것은 하나 이상의 프로세서들을 갖는 집적 회로의 일부로서 독립적으로 또는 결합되어 구현될 수 있다. 회로들 중 하나 이상은 집적 회로, ARM(Advance RISC Machine) 프로세서, 디지털 신호 프로세서(DSP), 범용 프로세서 등 상에서 구현될 수 있다.
요약하면, 본 발명은 다음 중 하나 이상의 장점들을 제공할 수 있으나, 이에 제한되지는 않는다.
기본 그래프에 관하여:
1. 모든 등급 2 변수 노드들을 갖는 누적 체인은 각각의 에지상에 동일한 치환을 가질 수 있다.
2. 루프를 폐쇄하는 루프 등급 2 노드 및 추가적인 등급 2 변수 노드, 및 도한 루프를 폐쇄하는 등급 3 변수 노드. 등급 3 변수 노드의 제3 에지는 비-루프 에지들일 수 있다.
리프트들에 관하여:
3. 루프 등급 2 변수 노드 에지들상의 치환들은 n-3개의 0-비트 수 A 및 A-1 mod 2n이며, 여기서, 2n은 최대 리프팅 크기이다.
4. 등급 3 변수 노드의 루프 에지들상의 치환은 n-3개의 0-비트 수 B 및 B-1 mod 2n이며, 기본 그래프에서 B-1 치환은 리프트 값 A를 갖는 루프 등급 2 변수 노드상의 에지와 동일한 제약 노드에 접속되는 에지와 연관된다.
5. 등급 3 변수 노드의 비-루프 에지상의 치환은 C이다.
추가로, 특별한 경우로 C = 0인 경우를 들 수 있다. 구조가 확장될 때, 확 장된 그래프는 리프트된 인코딩 구조 A를 포함하고, C = 0이라면 그것은 항등성을 갖는 리프트된 인코딩 구조 A를 포함할 수 있으며, 여기서, 리프트된 인코딩 구조 A는 모든 누적 등급 2 변수 노드들로 구성되며, 루프 등급 2 변수 노드들의 절반부는 확장된 기본 그래프에서 나타나는 루프 등급 2 노드의 2개 카피들 중 하나에 대응하고, 등급 3 변수 노드들의 절반부는 확장된 기본 그래프에서 나타나는 등급 3 노드의 3개 카피들 중 하나에 대응한다.
개시된 실시예들은 다음 기술들 중 임의의 하나 또는 그들의 결합물에 적용될 수 있다: 코드 분할 다중 액세스(CDMA) 시스템들, 다중-캐리어 CDMA(MC-CDMA), 광대역 CDMA(W-CDMA), 고속 다운링크 패킷 액세스(HSDPA), 시분할 다중 액세스(TDMA) 시스템들, 주파수 분할 다중 액세스(FDMA) 시스템들, 및 직교 주파수 분할 다중 액세스(OFDMA) 시스템들.
본 명세서에 개시되는 시그널링 송신 기술들은 다양한 수단에 의하여 구현될 수 있다. 예를 들어, 상기 기술들은 하드웨어, 소프트웨어, 또는 그들의 결합물에서 구현될 수 있다. 하드웨어 구현에 대하여, 시그널링을 프로세싱(예를 들어, 압축 및 인코딩)하는데 사용되는 프로세싱 유닛들은 하나 이상의 주문형 집적 회로(ASIC)들, 디지털 신호 프로세서(DSP)들, 디지털 신호 처리 장치(DSPD)들, 프로그래밍 가능 로직 장치(PLD)들, 필드 프로그래밍 가능 게이트 어레이(FPGA)들, 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 본 명세서에서 설명하는 기능들을 수행하도록 설계되는 다른 전자 유닛들, 또는 이들의 조합 내에 구현될 수 있다. 시그널링을 디코딩 및 압축해제하는데 사용되는 프로세싱 유닛들은 또한 하나 이상의 ASIC들, DSP들 등으로 구현될 수 있다.
소프트웨어에서 구현에서, 시그널링 송신 기술들은 본 명세서에 개시된 기능들을 수행하는 모듈(예를 들어, 프로시져, 함수 등)을 통해 구현될 수 있으며, 예를 들어, 컴팩트 컴퓨터 디스크와 같은 기계 판독가능 매체상에 저장될 수 있다. 소프트웨어 코드들은 메모리 유닛에 저장될 수 있으며 프로세서들에 의해 실행될 수 있다. 메모리 유닛은 프로세서 내에 또는 프로세서 외부에 구현될 수 있다.
도 8, 16, 24 및 25에 개시되는 컴포넌트들, 단계들 및/또는 기능들 중 하나 이상은 재정렬 및/또는 단일 컴포넌트, 단계 또는 기능으로 결합되거나, 또는 다수의 컴포넌트들, 단계들 또는 기능들에 구현될 수 있다. 추가적인 엘리먼트들, 컴포넌트들, 단계들 및/또는 기능들이 본 발명의 범위를 벗어나지 않는 범위에서 또한 부가될 수 있다. 도 8, 16, 24 및 25에 개시되는 장치, 디바이스들 및/또는 컴포넌트들은 상기 개시된 방법들, 특징들 도는 단계들 중 하나 이상을 수행하도록 구성될 수 있다. 본 명세서에 개시된 신규한 알고리즘들은 효율적으로 소프트웨어에서 구현 및/또는 하드웨어에 내장될 수 있다.
당업자들은 본원에 개시된 실시예들에 관련하여 설명한 다양한 예시적인 논리 블록, 모듈, 회로 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로 구현될 수 있는 것으로 인식한다. 이러한 하드웨어와 소프트웨어의 호환성을 명확히 설명하기 위해, 각종 예시적인 성분, 블록, 모듈, 회로 및 단계들은 일반적으로 그 기능성과 관련하여 상술하였다. 이러한 기능성이 하드웨어로 구현되는지 소프트웨어로 구현되는지는 전체 시스템에 부과된 특정 애플리케 이션 및 설계 제약에 좌우된다.
본 명세서에 개시된 애플리케이션의 다양한 특징들은 본 발명의 범위를 벗어나지 않는 범위에서 상이한 시스템들에서 구현될 수 있다. 예를 들어, 애플리케이션의 몇몇 구현들은 컴퓨터들, 개인용 단말들, 디지털 오거나이저(digital organizer)들 등 상에서 수행될 수 있다.
전술한 실시예들이 단지 예시일 뿐이며, 범위를 제한하는 것으로 해석되어서는 안 된다는 것을 유념해야 한다. 실시예들의 개시는 설명을 목적으로 하는 것으로서, 청구항의 범위를 제한하도록 의도된 것이 아니다. 마찬가지로, 본 발명의 원리는 다른 타입의 장치들에 용이하게 적용될 수 있으며, 다수의 대안들, 변경들 및 변형들이 본 기술분야의 당업자들에게 명백할 것이다.

Claims (41)

  1. 이분(bipartite) 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC: low density parity check) 코드를 사용하여 데이터를 인코딩하는 방법으로서,
    다수의 낮은 등급의 변수 노드(low degree variable node)들의 누적 체인을 생성하는 단계; 및
    한번은 낮은 등급의 변수 노드를 사용하고 한번은 상기 낮은 등급의 변수 노드보다 등급이 높은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하는(close) 단계
    를 포함하며, 상기 높은 등급의 변수 노드는 상기 낮은 등급의 변수 노드보다 높으며, 비-루프-폐쇄 에지(non-loop-closing edge)를 포함하는, 데이터를 인코딩하는 방법.
  2. 제1항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환(permutation)을 갖는, 데이터를 인코딩하는 방법.
  3. 제1항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함하고;
    상기 높은 등급의 변수 노드는 코어 등급 3 변수 노드를 포함하며; 그리고
    루프-폐쇄 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드를 포함하는, 데이터를 인코딩하는 방법.
  4. 제1항에 있어서,
    상기 누적 체인의 다수의 치환된 카피(permuted copy)들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된(lifted) 그래프를 사용하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  5. 제4항에 있어서,
    상기 루프-폐쇄 낮은 등급의 변수 노드들의 다수의 치환된 카피들은 n-3개의 0-비트 수 A 및 A+C-l mod 2n 에 의한 루프-폐쇄 낮은 등급의 치환을 포함하며, 여기서, 2n 은 최대 리프팅 크기이고, C는 또한 n-3개의 0 비트 수인, 데이터를 인코딩하는 방법.
  6. 제5항에 있어서,
    상기 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들의 다수의 치환된 비-루프-폐쇄 에지들은 n-3개의 0-비트 수 B 및 B+C-1 mod 2n에 의한 비-루프- 폐쇄 치환을 포함하고, C는 n-3개 0-비트 수이며, 기본(base) 그래프에서, B+C-l 치환은 숫자 A에 의한 치환을 갖는 루프-폐쇄 낮은 등급의 변수 노드상의 에지와 동일한 제약 노드(constraint node)에 접속된 에지와 연관되는, 데이터를 인코딩하는 방법.
  7. 제1항에 있어서,
    상기 높은 등급의 변수 노드의 상기 비-루프-폐쇄 에지상의 치환은 0인, 데이터를 인코딩하는 방법.
  8. 제6항에 있어서,
    몇몇 기본 변수 노드들에 대하여 리프트된 변수 노드들의 절반은 정보 노드들이고, 절반은 패리티 노드들인 순환형(cyclic) 리프트된 저밀도 패리티 체크(LDPC) 코드를 사용하는 단계를 더 포함하는, 데이터를 인코딩하는 방법.
  9. 제8항에 있어서,
    상기 LDPC 코드의 기본 그래프 구조는 추가적인 등급 2 변수 노드를 갖는 기본 인코딩 구조 A를 가지며, 상기 추가적인 등급 2 변수 노드는 상기 구조 A의 누적 체인의 루프를 폐쇄하는 루프-폐쇄 등급 2 변수 노드를 포함하는, 데이터를 인코딩하는 방법.
  10. 제9항에 있어서,
    상기 리프트된 루프-폐쇄 등급 2 변수 노드들 이외에 모든 리프트된 노드들은 자신의 개별적인 기본 노드들에 응답하는 패리티 노드 또는 정보 노드인, 데이터를 인코딩하는 방법.
  11. 제3항에 있어서,
    상기 루프-폐쇄 코어 등급 2 변수 노드는 치환들 X 및 X+C-l 모듈로(modulo) Z를 가지며, 여기서, C는 n-3개의 0 비트 수인, 데이터를 인코딩하는 방법.
  12. 제11항에 있어서,
    C는 0인, 데이터를 인코딩하는 방법.
  13. 제1항에 있어서,
    상기 높은 등급의 변수 노드의 루프-폐쇄 에지는 연관된 리프팅 치환들 Y 및 Y+C-l 모듈로 Z를 갖는, 데이터를 인코딩하는 방법.
  14. 제9항에 있어서,
    치환 X를 갖는 에지상의 상기 루프-폐쇄 등급 2 변수 노드에 부착되는 상기 제약 노드는 치환 Y+C-l을 갖는 상기 높은 등급의 변수 노드에 접속되는, 데이터를 인코딩하는 방법.
  15. 제9항에 있어서,
    상기 기본 그래프 구조가 2의 팩터만큼 확장되고, 상기 리프트 크기가 비트를 상기 리프트으로부터 상기 기본 그래프로 이동시킴으로써 2의 팩터만큼 감소될 때, 결과적인 인코딩 구조는 항등성(identity)을 갖는 또는 항등성이 없는 리프트된 인코딩 구조 A인, 데이터를 인코딩하는 방법.
  16. 제1항에 있어서,
    코어 등급 3 인코딩 노드의 비-루프-폐쇄 에지상에서 비-루프-폐쇄 에지 치환을 사용하며, 상기 비-루프-폐쇄 에지 치환은 0이고, 상기 루프에 참여하는 코어 등급 2 변수 노드들의 에지들상에서 다른 모든 치환들에 대하여 값들 0 또는 -1 mod 2n을 사용하는, 데이터를 인코딩하는 방법.
  17. 이분 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 장치로서,
    인코딩된 데이터를 저장하기 위한 메모리 디바이스;
    제어 모듈;
    상기 메모리 디바이스와 상기 제어 모듈 사이에 결합되는 프로세싱 회로
    를 포함하며, 상기 프로세싱 회로는 다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하고, 한번은 낮은 등급의 변수 노드를 사용하고 한번은 상기 낮은 등급의 변수 노드보다 등급이 높은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하도록 구성되며, 상기 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함하는, 데이터를 인코딩하기 위한 장치.
  18. 제17항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 갖는, 데이터를 인코딩하기 위한 장치.
  19. 제17항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함하고;
    상기 높은 등급의 변수 노드는 코어 등급 3 변수 노드를 포함하며; 그리고
    루프-폐쇄의 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드를 포함하는, 데이터를 인코딩하기 위한 장치.
  20. 제17항에 있어서,
    상기 프로세싱 회로는 상기 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하도록 추가적으로 구성되는, 데이터를 인코딩하기 위한 장치.
  21. 제20항에 있어서,
    상기 루프-폐쇄 낮은 등급의 변수 노드들의 다수의 치환된 카피들은 n-3개의 0-비트 수 A 및 A+C-l mod 2n 에 의한 루프-폐쇄 낮은 등급의 치환을 포함하며, 여기서, 2n 은 최대 리프팅 크기이고, C는 또한 n-3개의 0 비트 수인, 데이터를 인코딩하기 위한 장치.
  22. 제21항에 있어서,
    상기 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들의 다수의 치환된 비-루프-폐쇄 에지들은 n-3개의 0-비트 수 B 및 B+C-1 mod 2n에 의한 비-루프-폐쇄 치환을 포함하고, 여기서, C는 n-3개 0 비트 수이며, 기본 그래프에서, B+C-l 치환은 숫자 A에 의한 치환을 갖는 루프-폐쇄 낮은 등급의 변수 노드상의 에지와 동일한 제약 노드에 접속된 에지와 연관되는, 데이터를 인코딩하기 위한 장치.
  23. 제17항에 있어서,
    상기 프로세싱 회로는 몇몇 기본 변수 노드들에 대하여 리프트된 변수 노드들의 절반은 정보 노드들이고, 절반은 패리티 노드들인, 순환형 리프트된 저밀도 패리티 체크(LDPC) 코드를 사용하도록 추가적으로 구성되는, 데이터를 인코딩하기 위한 장치.
  24. 제23항에 있어서,
    상기 LDPC 코드의 기본 그래프 구조는 추가적인 등급 2 변수 노드를 갖는 기본 인코딩 구조 A를 가지며, 상기 추가적인 등급 2 변수 노드는 상기 구조 A의 누적 체인의 루프를 폐쇄하는 루프-폐쇄 등급 2 변수 노드를 포함하는, 데이터를 인코딩하기 위한 장치.
  25. 제24항에 있어서,
    상기 리프트된 루프-폐쇄 등급 2 변수 노드들 이외의 모든 리프트된 노드들은 자신의 개별적인 기본 노드들에 응답하는 패리티 노드 또는 정보 노드인, 데이터를 인코딩하기 위한 장치.
  26. 이분 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터를 인코딩하기 위한 장치로서,
    다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하기 위한 수단; 및
    한번은 낮은 등급의 변수 노드를 사용하고 한번은 상기 낮은 등급의 변수 노드보다 등급이 높은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위하여 상기 누적 체인을 폐쇄하기 위한 수단
    을 포함하며, 상기 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함하는, 데이터를 인코딩하기 위한 장치.
  27. 제26항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 갖는, 데이터를 인코딩하기 위한 장치.
  28. 제26항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함하고;
    상기 높은 등급의 변수 노드는 코어 등급 3 변수 노드를 포함하며; 그리고
    루프-폐쇄의 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드를 포함하는, 데이터를 인코딩하기 위한 장치.
  29. 제26항에 있어서,
    상기 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하기 위한 수단을 더 포함하는, 데이터를 인코딩하기 위한 장치.
  30. 제29항에 있어서,
    상기 루프-폐쇄 낮은 등급의 변수 노드들의 다수의 치환된 카피들은 n-3개의 0-비트 수 A 및 A+C-l mod 2n 에 의한 루프-폐쇄 낮은 등급의 치환을 포함하며, 여기서, 2n 은 최대 리프팅 크기이고, C는 또한 n-3개의 0 비트 수인, 데이터를 인코딩하기 위한 장치.
  31. 제30항에 있어서,
    상기 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들의 다수의 치환된 비-루프-폐쇄 에지들은 n-3개의 0-비트 수 B 및 B+C-1 mod 2n에 의한 비-루프-폐쇄 치환을 포함하고, 여기서, C는 n-3개 0 비트 수이며, 기본 그래프에서, B+C-l 치환은 숫자 A에 의한 치환을 갖는 루프-폐쇄 낮은 등급의 변수 노드상의 에지와 동일한 제약 노드에 접속된 에지와 연관되는, 데이터를 인코딩하기 위한 장치.
  32. 이분 그래프에 의해 표시가능한 저밀도 패리티 체크(LDPC) 코드를 사용하여 데이터 인코딩을 달성하기 위해 인코더상에서 동작가능한 하나 이상의 명령들을 갖는 프로세서 판독가능 매체로서,
    상기 명령들은, 프로세서에 의하여 실행될 때 상기 프로세서가,
    다수의 낮은 등급의 변수 노드들의 누적 체인을 생성하게 하며; 그리고
    한번은 낮은 등급의 변수 노드를 사용하고 한번은 상기 낮은 등급의 변수 노드보다 등급이 높은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위 하여 상기 누적 체인을 폐쇄하게 하며
    상기 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함하는, 프로세서 판독가능 매체.
  33. 제32항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 갖는, 프로세서 판독가능 매체.
  34. 제32항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함하고;
    상기 높은 등급의 변수 노드는 코어 등급 3 변수 노드를 포함하며; 그리고
    루프-폐쇄의 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드를 포함하는, 프로세서 판독가능 매체.
  35. 제32항에 있어서,
    상기 프로세서에 의하여 실행될 때, 상기 프로세서가 상기 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하게 하는 하나 이상의 명령들을 더 포함하는, 프로세서 판독가능 매 체.
  36. 제35항에 있어서,
    상기 루프-폐쇄 낮은 등급의 변수 노드들의 다수의 치환된 카피들은 n-3개의 0-비트 수 A 및 A+C-l mod 2n 에 의한 루프-폐쇄 낮은 등급의 치환을 포함하며, 여기서, 2n 은 최대 리프팅 크기이고, C는 또한 n-3개의 0 비트 수인, 프로세서 판독가능 매체.
  37. 제36항에 있어서,
    상기 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들의 다수의 치환된 비-루프-폐쇄 에지들은 n-3개의 0-비트 수 B 및 B+C-1 mod 2n에 의한 비-루프-폐쇄 치환을 포함하고, 여기서, C는 n-3개 0 비트 수이며, 기본 그래프에서, B+C-l 치환은 숫자 A에 의한 치환을 갖는 루프-폐쇄 낮은 등급의 변수 노드상의 에지와 동일한 제약 노드에 접속된 에지와 연관되는, 프로세서 판독가능 매체.
  38. 프로세서로서,
    다수의 낮은 등급의 변수 노드들의 누적 체인의 생성; 및
    한번은 낮은 등급의 변수 노드를 사용하고 한번은 상기 낮은 등급의 변수 노드보다 등급이 높은 높은 등급의 변수 노드를 사용하여, 루프를 두 번 형성하기 위 한 상기 누적 체인의 폐쇄
    를 달성하기 위한 기능들을 수행하도록 구성되는 프로세싱 회로를 포함하고, 상기 높은 등급의 변수 노드는 비-루프-폐쇄 에지를 포함하는, 프로세서.
  39. 제38항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 각각의 에지상에 동일한 치환을 갖는, 프로세서.
  40. 제38항에 있어서,
    상기 다수의 낮은 등급의 변수 노드들은 다수의 코어 등급 2 변수 노드들을 포함하고;
    상기 높은 등급의 변수 노드는 코어 등급 3 변수 노드를 포함하며; 그리고
    루프-폐쇄의 낮은 등급의 변수 노드는 루프-폐쇄 코어 등급 2 변수 노드를 포함하는, 프로세서.
  41. 제38항에 있어서,
    상기 프로세싱 회로는 상기 누적 체인의 다수의 치환된 카피들, 루프-폐쇄 낮은 등급의 변수 노드의 다수의 치환된 카피들 및 루프-폐쇄 높은 등급의 변수 노드의 다수의 치환된 카피들을 포함하는 리프트된 그래프를 사용하도록 추가적으로 구성되는, 프로세서.
KR1020097021138A 2007-03-09 2008-03-10 저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩 KR101198536B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US89418307P 2007-03-09 2007-03-09
US60/894,183 2007-03-09
US12/044,962 2008-03-08
US12/044,962 US8261155B2 (en) 2007-03-09 2008-03-08 Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
PCT/US2008/056390 WO2008112625A1 (en) 2007-03-09 2008-03-10 Encoding and decoding of low density parity check (ldpc ) codes

Publications (2)

Publication Number Publication Date
KR20090130183A true KR20090130183A (ko) 2009-12-18
KR101198536B1 KR101198536B1 (ko) 2012-11-06

Family

ID=39742876

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097021138A KR101198536B1 (ko) 2007-03-09 2008-03-10 저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩

Country Status (7)

Country Link
US (1) US8261155B2 (ko)
EP (1) EP2132878A1 (ko)
JP (1) JP5231459B2 (ko)
KR (1) KR101198536B1 (ko)
CN (1) CN101632230B (ko)
TW (1) TW200849834A (ko)
WO (1) WO2008112625A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019107912A1 (ko) * 2017-11-29 2019-06-06 연세대학교 산학협력단 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117523B2 (en) * 2007-05-23 2012-02-14 California Institute Of Technology Rate-compatible protograph LDPC code families with linear minimum distance
KR100949519B1 (ko) * 2007-12-18 2010-03-24 한국전자통신연구원 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법
ES2386449B1 (es) * 2010-01-20 2013-08-23 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos mejorado.
ES2363846B1 (es) * 2009-02-06 2012-06-06 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos.
US8719655B2 (en) * 2009-02-06 2014-05-06 Marvell Hispania S.L. Method and device for communicating data across noisy media
JP5440836B2 (ja) * 2009-03-24 2014-03-12 ソニー株式会社 受信装置及び方法、プログラム、並びに受信システム
US8407555B2 (en) * 2009-03-30 2013-03-26 Broadcom Corporation LDPC codes robust to non-stationary narrowband ingress noise
TWI427936B (zh) * 2009-05-29 2014-02-21 Sony Corp 接收設備,接收方法,程式,及接收系統
CN101902227B (zh) * 2009-05-31 2012-11-28 中兴通讯股份有限公司 一种ldpc码的分层编码方法和装置
US8375278B2 (en) * 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8516352B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
US8516351B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
FR2951339B1 (fr) * 2009-10-09 2011-12-09 Commissariat Energie Atomique Procede de decodage de codes non binaires
US8553686B2 (en) * 2010-04-28 2013-10-08 Broadcom Corporation Performing actions on frame entries in response to receiving bulk instruction
WO2012039798A2 (en) * 2010-06-15 2012-03-29 California Institute Of Technology Rate-compatible protograph ldpc codes
JP5269936B2 (ja) * 2011-03-17 2013-08-21 株式会社東芝 符号化器及び記憶装置
US8839069B2 (en) 2011-04-08 2014-09-16 Micron Technology, Inc. Encoding and decoding techniques using low-density parity check codes
US8832520B2 (en) 2011-11-29 2014-09-09 California Institute Of Technology High order modulation protograph codes
US9154261B2 (en) * 2013-01-16 2015-10-06 Broadcom Corporation Low density parity check (LDPC) coding in communication systems
CN105075128B (zh) * 2013-02-13 2018-07-17 高通股份有限公司 用于经提升ldpc码的方法、计算机可读存储介质和设备
CN107404322B (zh) * 2014-09-17 2020-10-16 上海数字电视国家工程研究中心有限公司 针对低码率ldpc码的校验矩阵及ldpc码字
KR101776273B1 (ko) 2015-02-25 2017-09-07 삼성전자주식회사 송신 장치 및 그의 부가 패리티 생성 방법
MY196159A (en) 2015-02-25 2023-03-17 Samsung Electronics Co Ltd Transmitter And Method For Generating Additional Parity Thereof
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US10291354B2 (en) 2016-06-14 2019-05-14 Qualcomm Incorporated High performance, flexible, and compact low-density parity-check (LDPC) code
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US20190181882A1 (en) * 2016-08-12 2019-06-13 Telefonaktiebolaget Lm Ericsson (Publ) Determining elements of base matrices for quasi-cyclic ldpc codes having variable code lengths
CN107959501B (zh) * 2016-10-17 2021-06-29 上海数字电视国家工程研究中心有限公司 一种ldpc编码器
US10534838B2 (en) * 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
CN111357372B (zh) 2017-11-17 2022-06-28 中兴通讯股份有限公司 用于处理控制信息的系统和方法
CN108270450B (zh) * 2018-01-19 2021-05-14 南开大学 一种高码率下的规则准循环ldpc码的构造方法
CN110022187B (zh) * 2019-03-06 2020-08-04 华中科技大学 通信调制系统中(n,n(n-1),n-1)-PGC代数解码方法及解码器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US31734A (en) * 1861-03-19 Btjikding for preserving
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US6961888B2 (en) 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
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
CA2516716C (en) 2003-02-26 2012-08-14 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
KR100809619B1 (ko) 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US20050283707A1 (en) * 2004-06-22 2005-12-22 Eran Sharon LDPC decoder for decoding a low-density parity check (LDPC) codewords
US7458010B2 (en) 2004-08-05 2008-11-25 Nokia Corporation Irregularly structured, low density parity check codes
US7617439B2 (en) 2005-01-10 2009-11-10 Broadcom Corporation Algebraic construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
GB2434946B (en) * 2006-02-01 2008-07-23 Toshiba Res Europ Ltd Wireless communications apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019107912A1 (ko) * 2017-11-29 2019-06-06 연세대학교 산학협력단 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법

Also Published As

Publication number Publication date
JP2010521128A (ja) 2010-06-17
WO2008112625A1 (en) 2008-09-18
EP2132878A1 (en) 2009-12-16
US8261155B2 (en) 2012-09-04
CN101632230B (zh) 2014-02-19
KR101198536B1 (ko) 2012-11-06
TW200849834A (en) 2008-12-16
JP5231459B2 (ja) 2013-07-10
US20080222486A1 (en) 2008-09-11
CN101632230A (zh) 2010-01-20

Similar Documents

Publication Publication Date Title
KR101198536B1 (ko) 저밀도 패리티 체크(ldpc) 코드들의 인코딩 및 디코딩
US8751902B2 (en) Methods and apparatus for encoding LDPC codes
JP7372369B2 (ja) 構造的ldpcの符号化、復号化方法および装置
ES2445116T3 (es) Descodificación de códigos de reacción en cadena por inactivación
CA2536259C (en) Methods and apparatus for encoding ldpc codes
RU2395902C2 (ru) Способы и устройство ldpc-кодирования
CN103401564B (zh) 编码器、解码器、发送装置、接收装置及其方法
JP4339886B2 (ja) マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
US8020063B2 (en) High rate, long block length, low density parity check encoder
JP2005252820A (ja) 符号化方法および装置
US8225174B2 (en) Decoding device and decoding method
KR100550101B1 (ko) 저밀도 패리티 검사 부호의 부호화와 복호 장치 및 그방법
US8448041B1 (en) Multistage LDPC encoding
CN102057580A (zh) 针对多标准的可重新配置的Turbo交织器
US8627168B2 (en) Decoding device and decoding method
JP2006100941A (ja) 信号処理装置、低密度パリティ検査符号の符号化方法および復号方法
JP5434890B2 (ja) 符号化装置、符号化方法、プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee