KR101058324B1 - 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치 - Google Patents

멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR101058324B1
KR101058324B1 KR1020057016049A KR20057016049A KR101058324B1 KR 101058324 B1 KR101058324 B1 KR 101058324B1 KR 1020057016049 A KR1020057016049 A KR 1020057016049A KR 20057016049 A KR20057016049 A KR 20057016049A KR 101058324 B1 KR101058324 B1 KR 101058324B1
Authority
KR
South Korea
Prior art keywords
ldpc
elements
permuter
vector
reordering
Prior art date
Application number
KR1020057016049A
Other languages
English (en)
Other versions
KR20060008864A (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 KR20060008864A publication Critical patent/KR20060008864A/ko
Application granted granted Critical
Publication of KR101058324B1 publication Critical patent/KR101058324B1/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
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6356Error control coding in combination with rate matching by repetition or insertion of dummy data, i.e. rate reduction
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명의 방법들 및 장치는 통신 시스템을 구현하는데 사용될 수 있는 것으로 동일 LDPC 코드를 사용하는 서로 다른 디바이스들을 서로 다른 레벨들의 병렬 처리를 사용하여 구현할 수 있다. 신규한 클래스의 LDPC 코드들의 사용으로 이러한 병렬 처리의 차이들이 가능해진다. 본 발명의 여러 실시예들에서 인수 퍼뮤터(706)의 사용으로, 여기서 논의되는 클래스의 LDPC 코드들내의 코드들을 사용할 때 인코더 및 디코더에서 서로 다른 레벨들의 병렬 처리를 갖춘 LDPC 디바이스들의 구현이 비교적 쉬워진다. 인수 퍼뮤터(706)는 메모리(702)와 Z 원소 벡터 프로세서(710)간에 전달되는 Z 원소 벡터에 대해 재정렬 동작을 전혀 하지 않거나 1회, 또는 순차적으로 복수회 수행하는 제어가능한 다단계 스위칭 디바이스(multi-stage switching device)로서 구현될 수 있고 개별적인 벡터들의 스위칭은 구현되는 코드의 그래프 구조(720)에 따라 제어된다(718).
인수 퍼뮤터, 저밀도 패리티 검사 코드, 코드워드, 병렬 처리 유닛, 무선 터미널, 저밀도 패리티 검사 프로세스 모듈

Description

멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(LDPC)코드 동작들을 수행하는 방법 및 장치{Method and apparatus for performing low-density parity-check(LDPC)code operations using a multi-level permutation}
본 출원은 여기에 참조로서 명시적으로 통합된 각각의 2003년 2월 26일에 출원된 U.S. 가특허 출원 S.N.60/540,245 및 2003년 3월 3일에 출원된 U.S. 가특허 출원 S.N.60/451,555의 이익을 주장한다.
거의 모든 형태들의 전자 통신 및 저장 시스템들은 에러 정정 코드들을 사용한다. 에러 정정 코드들은 데이터 스트림에 리던던시(redundancy)를 도입함으로써 이들 시스템들에 정보 전송의 본연의 비신뢰성을 보상한다. 에러 정정의 수학적 기반은 샤논(Shannon)에 의해 확립되었다. 샤논은 통신 시스템들에서 신호들의 왜곡이 랜덤 프로세스로서 모델링되는 채널의 수학적 개념을 전개하였다. 샤논의 가장 기본적인 결과는 노이즈 채널 정리(noise channel theorem)로서, 이는 채널에 대해서 용량, 즉 채널을 통해 정보가 신뢰성 있게 전달될 수 있는 최대 레이트를 명시하는 양을 정의한다. 용량에 근접한 레이트들로 신뢰성 있는 전송은 에러 정정 코드들의 사용을 필요로 한다. 이에 따라, 에러 정정 코드들은 가능한 한 용량에 근접하게 하면서 충분한 신뢰성을 달성하게 설계된다. 에러 정정 코드를 구현하는 복잡성은 에러 정정 코드들의 실제 적용들에서 항시 작용하게 되는 추가의 요인이다. 터보 코드들(turbo codes) 이에 후속하여 나온 저밀도 패리티 검사(low-density parity-check;LDPC)의 재발견과 개발에 따른 에러 정정 인코딩 시스템들에 있어서의 최근의 진보에 따라, 샤논의 용량에 매우 가깝게 접근할 수 있는 실현가능한 복잡성의 인코딩 시스템들이 제공되고 있다.
LDPC 코드들은 태너 그래프들(Tanner graphs)이라고도 하는 2분 그래프들(bipartite graphs)에 의해 표현되며, 도 1의 도(100)를 보면, 한 세트의 노드들로서 가변 노드들(102)은 다수 비트의 코드워드에 대응하고, 다른 한 세트의 노드들, 즉 체크 노드라고도 하는 제약(constraint) 노드들(106)은 코드를 정의하는 한 세트의 패리티 검사 제약들에 대응한다. 그래프에서 에지들(104)은 가변 노드들을 제약 노드들에 연결한다. 가변 노드 및 제약 노드는 이들이 그래프에서 에지에 의해 연결된다면 이웃이라고 한다. 통상적으로 한 쌍의 노드들은 기껏해야 하나의 에지에 의해 접속되는 것으로 가정한다. LDPC 코드들은 동등하게 패리티 검사 행렬을 사용하여 나타낼 수 있다. 도 2는 표시된 벡터 x(204)는 Hx=0인 경우에 한해서, 코드워드(codeword)인 예를 나타내며, H(202)는 패리티 검사 행렬이다.
각각의 가변 노드(variable node)에는 1 비트의 코드워드가 관련된다. 어떤 경우들에서 이들 비트들 일부는 펑처링(punctured)되거나 알려진 것일 수도 있다. 펑처링된 비트들은 어떤 코드 구조들에서 그리고 리프팅(lifting)(후술함)에서 바람직할 수 있으며, 이들 펑처링 및 알려진 비트들은 리프팅의 배수들이 아닌 블록 길이를 달성하는데 사용될 수 있다. 펑처링 비트들 및 알려진 비트들은 전송되는 코드워드에서 제외된다.
가변 노드 시퀀스(variable node sequence)에 1 대 1로 연관되는 비트 시퀀스는, 각각의 제약 노드(constraint node)에 대해서, 제약에 이웃한 비트들은(가변 노드들에 이들의 연관을 통해) 0 모듈로(modulo) 2로 합산되는, 즉, 이들이 짝수 개의 1들을 포함하는 경우에 한해서만 코드의 코드워드이다.
LDPC 코드워드들을 디코딩하는데 사용되는 디코더들 및 디코딩 알고리즘들은 에지들을 따라 그래프 내의 메시지들을 교환하고 이들 메시지들을 인입 메시지들에 기초하여 노드들에서 계산을 수행하여 갱신함으로써 동작한다. 이러한 알고리즘은 일반적으로 메시지 전달 알고리즘들(message passing algorithms)으로 지칭된다. 그래프 내 각각의 변수 노드는, 초기에, 예를 들면 통신 채널(communication channel)로부터의 관찰에 의해 결정된 연관된 비트의 값의 추정을 지시하는, 수신 값이라고 하는 소프트 비트를 제공받는다. 이상적으로는 개개의 비트들에 대한 추정들은 통계적으로 독립적이다. 이러한 이상적인 것은 실제로는 벗어날 수 있고, 자주 그러하다.
한 노드, 즉 가변 노드 또는 제약 노드에 부속된 에지들의 수를 그 노드의 차수(degree)로 지칭된다. 정규(regular) 그래프 또는 코드는 모든 가변 노드들이 동일 차수, 즉 j를 갖고 있고 모든 제약 노드들이 동일 차수, 즉 k를 갖는 것이다. 이 경우 코드는 (j,k) 정규 코드(regular code)라고 말한다. 이들은 갤래거(Gallager)(1961)에 의해 본래 고안된 코드들이었다. "정규" 코드와는 반대로, 비정규 코드는 상이한 차수들의 제약 노드들 및/또는 가변 노드들을 갖는다. 예를 들면, 일부 가변 노드들은 차수가 4이고, 다른 노드들은 차수가 3이고 또 다른 노드들은 차수가 2이다.
비정규 코드들이 표현 및/또는 구현에 더 복잡할 수 있으나, 비정규 LDPC 코드들은 정규 코드들과 비교했을 때 우수한 에러 정정/검출 성능을 제공할 수 있음을 보였다.
인코딩 또는 디코딩 동작의 일부로서 다수 세트들의 데이터를 처리하기 위해 복수의 병렬 처리 요소들을 사용한 LDPC 인코더들 및 디코더들의 구현이 유용할 뿐만 아니라 신뢰성 있는 것으로 입증된 한편, 공지된 구현들에서, 디코더에서 사용되는 병렬 처리 요소들의 수는 인코더에서 사용되는 병렬 처리 요소들의 수와 일반적으로 동일하다. 이에 따라, 복수의 디바이스들, 예를 들면 복수의 이동 디바이스들과 상호작용하는 기지국 및/또는 위성과 같은 집중형 디바이스(centralized device)를 구비한 시스템에서, 시스템 내 디바이스들 각각에 LDPC 인코더들 및 디코더들은 통상적으로 동일 레벨의 병렬 처리를 가질 것이다.
집중형 디바이스가 복수의 이동 디바이스들에 서비스한다고 할 때, 인코더/디코더 내의 실시간 동작 및 동일 레벨의 병렬 처리를 가정하면, 집중형 디바이스는 서비스를 받고 있는 여러 이동 디바이스들에 연관된 인코딩/디코딩과 보조를 맞추기 위해서 개개의 디바이스들보다 수배 빠른 레이트로 동작해야할 것이다.
구현 관점에서, 시스템 내 서로 다른 LDPC 인코더/디코더들에서 병렬 처리 레벨이 서로 다를 수 있다면 이점이 있을 것이다. 이러한 방식은 특정 디바이스 내 인코더 및/또는 디코더의 병렬 처리 레벨을 그 디바이스에 의해 송신/수신될 데이터량과 서로 맞게 할 수 있다. 특정 디바이스 내 병렬 처리량을 최소화함으로써, 구현 비용이 최소화될 수 있다.
예를 들면, 큰 그래프 구조들에 상응하는 많은 노드들을 포함하는, 많은 양의 코드들의 사용은 오류 복구 면에서, 예를 들면 소수의 노드들만을 포함하는 적은 수의 코드들에 비해 많은 이점들을 제공한다. 작은 그래프를 사용하여 큰 그래프 구조를 구현하기 위해서, 작은 그래프 구조의 복제본들에 다양한 퍼뮤테이션들(permutation)이 적용될 수 있고 이들 복제본들을 함께 결합하여 큰 그래프 구조를 생성할 수 있다. 인코딩/디코딩 동작들에서, 이러한 퍼뮤테이션 동작들은 요소들, 예를 들면 메모리와 LDPC 동작들을 병렬로 수행하는 벡터 처리 유닛 간에 전달되는 것들로서 인코딩 동작의 경우엔 인코딩할 비트들 또는 디코딩 동작의 경우엔 메시지들에 퍼뮤테이션 동작을 적용하는 퍼뮤터(permuter)라고 여기서는 칭하는 스위칭 디바이스에 의해 구현될 수 있다.
불행히도, 대부분의 LDPC 코드들은 인코더 및 디코더에서 병렬 처리의 복수의 서로 다른 레벨들을 가능하게 할 구현엔 적합하지 않다. 또한, 순환 시프트(cyclic shift)같은 단일 단순 퍼뮤테이션 동작이, 작은 그래프로부터 생성된 큰 그래프를 사용하여 나타낼 수 있는 많은 LDPC 코드들에 사용에 적합한 퍼뮤터를 구현하는데 적합하긴 하나, 이러한 단일 순환 동작은 서로 다른 레벨들의 병렬 처리를 사용하여 구현될 수도 있을 LDPC 코드들의 구현에는 적합하지 않다.
이상 논한 바에 비추어, LDPC 인코딩 및/또는 LDPC 디코딩 동작을 수행하기 위해 동일 코드, 예를 들면 LDPC 그래프 구조를 사용하는 서로 상이한 디바이스들 에서 서로 다른 차수들의 병렬 처리가 가능하게 되도록 LDPC 인코더들/디코더들을 구현하기 위한 코드들 및 방법들과 장치의 필요성이 있음을 알 것이다. 또한, 예를 들면 작은 그래프들로부터 도출될 수 있는 비교적 큰 코드들을 디바이스들이 사용할 수 있게 하는, 그렇지만 서로 다른 디바이스들에 서로 다른 레벨들의 병렬 처리가 구현될 수 있게 하는 신규의 개선된 퍼뮤터들을 사용함으로써, 이러한 인코더들/디코더들을 구현하는 현실적인 방법의 필요성이 있다.
본 발명의 방법은 통신 시스템을 구현하는데 사용될 수 있는 것으로 동일 LDPC 코드를 사용하는 서로 다른 디바이스들은 서로 다른 레벨들의 병렬 처리를 구현할 수 있다. 고 레벨의 오류 복원성을 얻기 위해서, 비교적 긴 코드워드들이 흔히 사용된다. 예를 들면, 본 발명의 LDPC 코드를 사용하여 인코딩 동작을 수행함으로써 발생되는 단일 코드워드는 총 T 비트를 포함할 수 있는데, 여기서 T는 수백 또는 심지어는 수천 비트일 수도 있다. 본 발명의 설명의 목적상, 수신된 코드워드에 대응하는 비트들 및/또는 인코딩될 비트들은 L개의 Z 원소(element) 벡터들로 배열되는데, 여기서 Z은 1보다 큰 양의 정수이다. 각각의 Z 원소 벡터는 Z 원소들을 포함하며 메모리로부터 독출될 수도 있다. 이어서, 메모리로부터 독출된 벡터는 병렬로 Z 처리 유닛들을 사용하여 처리될 수 있다. 특정 LDPC 코드(그래프 구조)을 사용하여 코드워드들을 인코딩하는 인코더에서 병렬로 동일 수의 Z 처리 원소들을 사용하는 현존의 시스템들과는 반대로, 본 발명은 동일 코드를 사용하는 인코더들 및 디코더들에서 서로 다른 레벨들의 병렬 처리를 가능하게 한다. 일부 실시예들에서, 특정 코드를 사용하는 디바이스에서 인코더는 동일 코드를 구현하는 디코더에서 사용되는 것과는 다른 수의 병렬 처리 유닛들을 사용하여 구현된다. 인코딩은 통상적으로 디코딩보다 덜 프로세서 집중적이며, 따라서 일부 실시예들에서 단일 디바이스 내에서, 인코더에서보다 디코더에서 서로 다른 수의 처리 요소들이 병렬로 사용되며 상기 인코더는 흔히 병렬로 동작하는 더 적은 처리 요소들을 구비한다.
시스템 내에서, 서로 다른 디바이스들은 실시간으로 서로 다른 데이터량들을 인코딩해야 한다. 4 개의 무선 터미널들에 서비스를 행하는 한 기지국을 고찰한다. 각각의 무선 터미널이 동일한 량의 데이터를 송신 및 수신한다고 할 때, 기지국은 개개의 무선 터미널들 중 어느 한 터미널의 4배 많은 데이터를 인코딩 및 디코딩해야 할 것이다. 일부 실시예들에서, 복수의 노드들에 서비스를 행하는 기지국 또는 위성은 기지국 또는 위성에 의해 서비스를 받는 개개의 무선 터미널들보다 병렬로 더 많은 처리 유닛들을 사용하여 구현된다. 본 발명에 따라 구현되는 일부 시스템들에서, 동일 코드를 사용한 시스템 내의 서로 다른 무선 터미널들은 각각의 디바이스가 인코딩 및 디코딩해야 할 서로 다른 데이터 양들을 반영하기 위해 다른 수의 병렬 처리 요소들로 구현된다. 이하 논의될 새로운 클래스의 LDPC 코드들의 사용은 병렬 처리에서 이러한 차이들을 가능하게 만든다. 본 발명의 여러 실시예들에서 인수 퍼뮤터의 사용은 인코더 및 디코더에서 서로 다른 레벨들의 병렬 처리를 가진 LDPC 디바이스들을 여기서 다룬 LDPC 코드들의 분류의 코드들을 사용할 때 구현이 비교적 쉽게 되게 한다.
도 1은 이분 (태너) 그래프로서 LDCP 코드를 나타낸 도면.
도 2는 패리티 검사 행렬을 사용하여 LDPC 코드를 나타낸 도면.
도 3은 태너 그래프 상의 예시적인 리프팅을 도시한 도면.
도 4는 도 3의 태너 그래프 표현에 대응하는 패리티 검사 행렬.
도 5는 도 2의 행렬의 예시적인 리프팅된 행렬을 도시한 것으로, Z 리프팅 값=3이고 사용된 퍼뮤테이션은 순환 퍼뮤테이션들인 것을 도시한 도면.
도 6은 본 발명에 따른 방법들을 사용하여, 본 발명에 따라 구현된, 예시적인 통신 시스템의 도면.
도 7은 본 발명에 따른 LDPC 동작들을 구현하는데 사용될 수 있는 예시적인 시스템을 도시한 도면.
도 8은 본 발명에 따른 LDPC 동작을 구현하는데 사용될 수 있는 또 다른 예를 도시한 도면.
도 9 내지 11은 도 7에 도시된 시스템과 같은 시스템의 일부에 본 발명의 방법들을 사용하는 예들로서, LDPC 동작들을 수행하기 위해 인수 퍼뮤터를 사용하는 본 발명의 다양한 예시적인 방법들의 단계들을 기술하는데 사용되는 예들의 도면.
도 12는 본 발명에 따라 병렬 LDPC 프로세스 모듈에서 사용될 수 있는, XOR 회로 및 저장 디바이스, 예를 들면 누산기를 포함하는 처리 요소를 도시한 도면.
도 6은 기지국(602), 제 1 무선터미널(632), 및 제 2 무선터미널(662)을 포함하는 예시적인 통신 시스템(600)을 도시한 것이다. 제 1 및 제 2 무선 터미널들(632, 662)은 무선 링크들(630, 660)을 통해 기지국(602)과 통신한다. 디바이스들(602, 632, 662) 각각은 본 발명에 따라 구현된 인코더(604, 634, 664) 및 디코더(606, 636, 666)를 포함한다. 각각의 디바이스의 인코더들 및 디코더들은 무선 트랜시버(송신기/수신기)(608, 638, 668)에 결합되고 이를 통해 디바이스들은 서로 통신한다. 각각의 디바이스(602, 632, 662)는 또한 CPU(613, 643, 673) 및 메모리(615, 645, 675)에 저장된 한 세트의 제어 루틴들을 포함한다. 제어 루틴들은 CPU(613, 643, 673)에 의해 실행되었을 때, 각종 통신 동작들을 수행하도록 디바이스를 제어한다. 일부 실시예들에서, 루틴들(615, 645, 675)은 인수 퍼뮤테이션 동작을 포함하는 인코딩 및/또는 디코딩 동작을 수행하기 위해 본 발명에 따라 하나 이상이 코드들을 사용하는 인코더 루틴 및/또는 디코더 루틴을 포함한다. 도 6에 도시된 특정예에서, 각종의 인코딩 및 디코딩 동작들은 하드웨어로 구현된다. 본 발명의 신규의 LDPC 인코딩 및 디코딩 방법들에 따라, 동일 일반적인 구조를 갖는 디바이스가 인코딩 또는 디코딩 동작들을 위해 사용될 수 있다. 기지국 인코더(604) 및 디코더(606)의 경우에, 이들 디바이스들의 기본 구조는 이들 디바이스들의 기본 구조가 인수 퍼뮤터(612, 622)를 포함함을 알 수 있다. 퍼뮤터(612, 622)는 요소들의 벡터들을 저장하는데 사용되는 메모리(610, 620)를 결합시키는데 사용된다. 요소들의 벡터들은 병렬 LDPC 처리 모듈(614, 624)에 의해 처리되며, 병렬 LDPC 처리 모듈(614, 624)은 병렬로 패리티 검사 동작들을 수행하는 다수의 처리 요소들(616, 618) (624, 628)을 포함한다. 병렬 LDPC 처리 모듈(614)은 메모리(610)로부터 읽어낼 수 있는 한 벡터의 각각의 원소에 대해 하나의 처리 요소를 포함한다. 따라서, Z 원소 벡터들을 처리할 때(Z 원소들을 가진 벡터들) 모듈(614)은 Z 처리 요소들(616, 618)을 포함할 것이다. 인코더(604)의 경우에 Z=Me이다. 인코더 모듈(614)에서 처리 요소들의 수(Me)는 디코더 처리 모듈(624)에서 처리 요소의 수(Md)와는 다를 수 있다. 즉, 인코더 및 디코더는 이들이 동일 코드를 구현할지라도, 상이한 수의 Z 원소들을 가진 벡터들, 따라서 상이한 레벨의 병렬 처리를 사용할 수 있다. 인코더(604)는 독출하여 인코더에 의해 처리된 벡터들이 통상적으로 단일 비트 요소들, 예를 들면 인코딩할 정보 값들을 포함하는 점에서 디코더(606)와는 다르다. 디코더의 경우, 메모리에 저장되고 처리 모듈(624)에 보내지는 벡터들의 원소들은 통상적으로, 각각이 복수의 비트들, 예를 들면 디코딩되는 수신된 코드워드의 부분들에 대응하는 메시지들인 원소들을 포함한다.
인코더(604) 및 디코더(606)는 처리 요소들(616, 618)에 의해 수행되는 처리 동작이 다르다. 인코더(604)의 경우, 각각의 프로세서는 통상적으로 저장된 값으로 논리 XOR을 수행하며 XOR 연산의 결과로 그 저장된 값을 대체한다. 이에 따라, 처리 요소들(616, 618)은 XOR 회로 및 누산기로서 작용하는 저장 요소를 사용하여 구현될 수 있다. 도 12는 XOR 회로 및 저장 디바이스, 예를 들면 본 발명에 따라 병렬 LDPC 프로세서 모듈에서 사용될 수 있는 누산기를 포함하는 한 처리 요소를 도시한 것이다. 구현되는 코드(그래프 구조)에 의해 결정된 처리에서 한 시점에서, 인코더의 프로세서들(616, 618)에 유지된 결과는 메모리(610)에 저장된다. 처리 요소들(626, 628)은 가변 노드 및/또는 체크 노드 처리 동작들을 수행한다. 이들 동작들이 흔히 XOR 및 누산 연산을 수반하나, 멀티-비트 메시지들이 각각의 처리 요소(626, 628)에 의해 처리되어 디코딩 동작들을 인코딩 동작들보다 더 복잡하게 하는 추가의 처리를 수반하는 경향이 있다.
참조로 여기 통합된 몇몇의 특허 출원은 병렬 LDPC 처리 모듈 요소들(616, 618, 626, 628)이 구현될 수 있는 다양한 방법들을 상세히 논한다.
본 발명에 따라, 인수 퍼뮤터들(612, 622)은 퍼뮤터(612, 622)에 의해 처리되는 적어도 일부 벡터들에 대해, 단일 퍼뮤테이션 동작(변경없음) 또는 두 개의 퍼뮤테이션 동작들의 적(product)인 퍼뮤테이션 동작을 수행한다. 이에 따라, 인수 퍼뮤터는 벡터 내 원소들을 재정렬함이 없이 벡터를 전달(pass)하거나, 벡터 내 원소들을, 예를 들면 두 개의 순차적인 퍼뮤테이션 동작들을 재정렬된 원소들의 벡터인 출력으로써 수행하여-상기 재정렬은 두 개의 퍼뮤테이션 동작을 구성한 결과임- 벡터 내 원소들을 재정렬한다. 예시한 퍼뮤테이션 동작들을 이하의 도면에 관하여 상세히 논한다. 일부 실시예들에서 인수 퍼뮤테이션들은 멀티-레벨 스위칭 동작들로서 수행된다. 제 1 레벨의 스위칭에서 요소들은 처리할 벡터 내 원소들은, 예를 들면 n개의 동일 크기 부분들, 즉 원소들의 서브세트들을 제 1 순환 시프트를 사용하여 벡터에서 시프팅(shift)함으로써 재정렬된다. 처리된 벡터의 원소들은 부분들 사이는 아니지만 n개의 동일 크기의 부분들 내에서 원소들을 퍼뮤팅하는 제 2 퍼뮤테이션에 의해 추가로 퍼뮤팅된다. 동일 제 2 퍼뮤테이션이 n개의 동일 크기의 부분들 각각에 대해 수행되어 상기 부분들 각각에서의 원소 위치들의 동일한 변경을 가져온다. 이를 다시 설명하면 다음과 같다. Z 원소들의 벡터는 Z/n개의 동일 크기의 부분들로 제 1 분할을 사용하여 분할되고, 또한 제 2 분할을 사용하여 n개의 동일 크기의 부분들로 분할된다. 이것은 제 1 분할에서 Z/n개의 동일 크기의 부분들 각각이 제 2 분할에서 n 부분들 각각과 함께 정확히 하나의 원소를 포함하도록 행해진다. 이어서, 위의 기술된 제 1 퍼뮤테이션은 제 1 부분에 의해 정의된 Z/n개의 부분들 내에서 원소들을 재정렬하고, 각각의 재정렬은 동일하나, 제 1 분할을 변경하지 않는다. 제 2 퍼뮤테이션은 제 2 분할에 의해 정의된 n개의 부분들 내에 원소들을 재정렬하고 각각의 재정렬은 동일하나, 제 2 분할을 변경하지 않는다.
본 발명의 일부 실시예들에서, 인수 퍼뮤터(612)는 순환 시프트로도 알려진 두 순환 퍼뮤테이션들의 적을 수행한다. 단일 순환 시프트는 인수분해가능하지 않은데 이는 상기 적을 생성하는 두개의 순환 시프트들로 인수분해될 수 있기 때문이다. 구체적인 예로서, Z=4라고 가정한다. 순환 시프트 하에서, 벡터 (v0, v1, v2, v3)는 (v0+k, v1+k, v2+k, v3+k)로서 재정렬되며, 여기서 k는 [0,3]에 관한 정수이고 가산은 모듈로 4이다. 크기 2의 두 순환 시프트들의 적 하에서, 벡터 (v0, v1, v2, v3)는 (v0+2k+j, v1+2k+j, v2+2k+j, v3+2k+j)로서 재정렬되며, k는 [0, 1]에서 정수이며 모든 산술은 모듈로 4이다. 두 순환 시프트들의 적의 경우, 제 1 분할은 {v0, vl} {v2, v3}이고 제 2 분할은 {v0, v2} {vl, v3}이다. 제 1 퍼뮤테이션은 j을 선택함으로써 결정되고, 제 2 퍼뮤테이션은 k를 선택함으로써 결정된다. 후술하는 바와 같이, 수행되는 특정의 재정렬들은 처리할 벡터 원소들을, 구현되는 코드를 정의하는 그래프 내 특정 노드에 대응하는 처리 요소로 방향지시(direct)함으로써, 그래프 내 여러 노드들을 실제로 연결하는데 사용되는 재정렬들로 구현되는 코드의 함수이다.
무선 터미널들의 인코더들 및 디코더들은 기지국 인코더(604) 및 디코더(606) 각각에 관하여 기술된 것들과 유사하나, 서로 다른 레벨들의 병렬 처리를 구현할 수도 있다. 인코더들(634, 664) 및 디코더들(636, 666) 각각은 인수 퍼뮤터(642, 672, 652, 682)에 의해 병렬 LDPC 처리 모듈(644, 674, 684) 각각에 결합되는 메모리(640, 670, 650, 680)를 포함한다.
본 발명의 방법들 및 장치는 여러 가지 다른 LDPC 인코딩 패턴들 및 적용들의 맥락에서 더 잘 알 수 있다. 여기 포함된 출원들에서 기술된, LDPC 동작들을 수행하는 여러 요소들, 예를 들면 처리 요소들은 예시한 시스템에 기술된 병렬 벡터 프로세서를 구현하는데 사용될 수 있다. 여기 포함된 다양한 출원들은 퍼뮤테이션 동작들을 수행하는데 사용되는 메모리 액세스 및 스위칭 동작이 LDPC 코드(그래프) 정보를 제공하는 저장된 정보에 기초하여 어떻게 구현될 수 있는가를 논한다. 기술된 코드된 및 퍼뮤테이션 동작들이 본원에 기술된 것들과는 다르나, 메모리 액세스 및 스위칭 제어 동작들은 저장된 LDPC 코드 정보에 기초하여 동일 또는 유사한 방식으로 제어될 수 있다. 따라서, 이러한 제어 기술들을 여기서 상세히 논하도록 하겠다. 또한, 이러한 처리 요소들, 예를 들면 다른 무엇보다도 가변 노드 및 체크 노드 처리 요소들이, 포함된 출원들에 상세히 기술되어 있으므로, 이들의 구현 및 기능은 본원에 간략하게만 다루도록 하겠다.
다음의 (4 개의) 관계된 출원들은 참조로써 명시적으로 여기 통합되며 이들은 본원의 일부로 간주될 것들이다: 2003년 10월 14일 특허번호 6,633,856으로서 발행된 "LDPC 코드들을 디코딩하는 방법 및 장치(METHODS AND APPARATUS FOR DECODING LDPC CODES)"로 명명된 2001년 10월 10일 출원된 미국특허출원번호 09/975,331; 미국공개번호 US-2003-0023917-A1로서 2003년 1월 30일 공포된 "패리티 검사 디코더들에서 사용하는 노드 프로세서들(NODE PROCESSORS FOR USE IN PARITY CHECK DECODERS)"로 명명된 2002년 4월 4일 출원된 미국특허출원번호 10/117,264; "LDPC 코드들을 인코딩하는 방법 및 장치(METHODS AND APPARATUS FOR ENCODING LDPC CODES)" 명칭의 2002년 12월 18일 출원된 PCT 출원번호 PCT/US02/40573; 및 "LDPC 코드들을 인코딩 및 디코딩을 수행하는 방법 및 장치(METHODS AND APPARATUS FOR PERFORMING LDPC CODE ENCODING AND DECODING)"로 명명된 2001년 6월 15일 출원된 미국가출원 60/298,480.
도 7 및 도 8은 본 발명에 따른 LDPC 동작들, 예를 들면, 처리할 데이터와 같은 것들, 예를 들면 수신된 코드워드(디코딩 동작을 의미함) 또는 코드워드로 생성될 정보(인코딩 동작을 의미함)에 따라 인코딩 또는 디코딩 LDPC 동작을 구현하는데 사용될 수 있는 시스템들(700, 800)을 도시한 것이다.
시스템들(700, 800) 각각은 메모리(702, 802), 어드레스 생성기(716, 816), 어드레스 발생기 및 퍼뮤터 제어기(718, 818), 저장된 LDPC 코드(그래프) 정보(720, 820), Z 원소 병렬 LDPC 처리 모듈(710, 810) 및 인수 퍼뮤터(706, 806)를 포함한다. 처리할 정보는 처리를 위해 메모리를 통해 메모리(702, 802)에 저장된다. 인코딩의 경우에, 처리가 완료되었을 때 결과는 메모리(702, 802)로부터 독출된다. 처리가 진행중일 때, Z 원소 벡터들이 어드레스 발생기 및 퍼뮤터 제어기(718, 818)의 제어 하에 메모리로부터 독출되고 이에 기록된다. 어드레스 발생기 및 퍼뮤터 제어기(718, 818)는 LDPC 코드(그래프) 정보(720, 820)와, 구현된 병렬 처리의 레벨에 관한 정보, 예를 들면 병렬로 처리될 원소들 Z의 수를 사용하여, 어드레스 발생기(716, 816)를 제어함으로써 독출 및/또는 기록 동작들에 사용되는 어드레스들을 생성하고, 아울러 구현되는 코드에 대응하는 특정의 구현된 그래프 구조를 달성하는데 사용된 스위칭 동작들, 벡터 원소 재정렬을 수행하기 위해 인수 퍼뮤터(706, 806)를 제어한다. 어드레스 생성기 및 퍼뮤터 제어기(718, 818)는 임의의 주어진 시점에서 독출 또는 기록을 수행할지 여부를 지시하기 위해 메모리(702, 802)에 어드레스 생성기(716, 816)를 통해 전달되는 제어 신호를 또한 생성한다. 이에 따라, 어드레스 생성기 및 퍼뮤터 제어기(718, 818)은 인수 퍼뮤터(706, 806)에 의해 수행되는 스위칭만이 아니라 메모리(702, 802)로부터 처리될 벡터들을 독출할 시기 및 모듈들(710, 810)에 의해 발생된 처리 결과들이 메모리(702, 802)에 기록될 시기를 제어한다.
도 7과 도 8의 실시예들간의 주된 차이는 병렬 LDPC 처리 모듈(710)에 포함된 처리 요소들(712, 714)에 의해 벡터 요소들의 처리에 앞서, 재정렬된 벡터(708)를 생성하기 위해 시스템(700) 내 인수 퍼뮤터(706)가 입력 벡터(704)에 관하여 재정렬 동작들을 수행하는 것이다. 처리의 결과들, 예를 들면, Z 원소 벡터는 메모리(702)에 저장된다. 도 8의 실시예의 경우에, 인수 퍼뮤터(806)에 의해 재정렬은 처리 요소들(812, 814)에 의해 발생된 Z 원소 벡터(804)에 관하여 수행된다. 재정렬들이 모듈(710, 810)에 의한 처리에 앞서 또는 처리에 이어 수행될지 여부는 주로 설계 선택의 문제이다.
본 발명의 여러 실시예들에서 사용되는 신규 코드들 및 이러한 LDPC 코드들의 사용으로부터 이뤄지는 신규 코드워드들을 알기 위해서, "리프팅(lifting)"이 논의될 것이다. 일반적으로, "리프팅" 또는 LDPC 코드들의 벡터화(vectorization)는 다음과 같이 기술된다. 도 1 및 도 2에서처럼, 작은 LDPC 코드에 대한 태너 그래프 또는 패리티 검사 행렬 표현으로 시작한다. 먼저 패리티 검사 행렬 면에서 리프팅을 기술한다. Z-리프팅에서, 패리티 검사 행렬의 각각의 엔트리는 ZxZ 행렬로 대치된다. H내 O 엔트리들(entries)은 0 ZxZ 행렬들이 되고 H에서 1들은 퍼뮤테이션 행렬들이어서, 통상 어떤 그룹에 속하게 된다. 도 5는 행렬(502)로서 Z=3이고 사용된 퍼뮤테이션이 순환 퍼뮤테이션들인 경우 도 2의 행렬에 리프팅이 행해진 것을 나타낸다. 리프팅은 다음과 같이 태너 그래프에 관해 해석될 수 있다. 태너 그래프 내 각 노드는 Z 등가 노드들로 대체되어, 한 무리의 노드들을 형성하고, 각 에지는 한 무리의 Z 에지들로 대체된다. 한 무리의 각 원소에 0,...,Z-1 인덱스를 사용하기로 한다. 한 무리의 Z 에지들은 한 무리의 가변 노드들을 한 무리의 제약 노드들에 연결한다. 동일 인덱스의 노드들 및 에지들을 연결함으로써 각각 연결하면, 구조는 실제로 원 그래프의 Z 병렬 복제본들이 된다. 이러한 구조를, 도 1 및 도 2에 기본 예에 대응하는 도 3의 (300)에 도시하였다. 도 3에 그래프에 대응하는 패리티 검사 행렬을 도 4에 (400)으로 도시하였다. 예를 들면 제약 측에 관한 연결들이 퍼뮤팅된다면, 즉 인덱스 j를 가진 에지가 인덱스 π(j)를 - π는 0,...Z-1에 관한 퍼뮤테이션, 예를 들면 순환 퍼뮤테이션을 나타냄- 가진 제약 노드에 연결된다면, 결과적인 그래프는 완전히 연결될 수 있고 리프트된 그래프로서 간주된다. 투영(project)된 그래프는 한 쌍의 노드들 사이에 복수의 에지들을 가지지만 리프트된 그래프는 그럴 필요가 없는 것에 유의한다. 예를 들면, 복수 에지에서 에지들에 연관된 퍼뮤테이션들이 모두 서로 다른 것이라면, 리프트된 그래프는 대응하는 복수의 에지들을 갖지 않을 것이다.
벡터화된(또는 리프트된) LDPC 코드들을 지원하는 구조는 참조로 여기 포함시킨 미국특허출원 번호 09/975,331 "LDPC 코드들을 디코딩하는 방법 및 장치(Methods and apparatus for decoding LDPC codes)"에 기술되어 있다. 이 구조는 큰 클래스의 LDPC 유형의 코드들의 효율적인 고속 디코딩을 지원한다. 지원되는 코드들은 리프트된 또는 벡터화된 LDCP 코드들이다. 출원 09/975,331에서는 순환 퍼뮤테이션이 사용하기에 간단하고 바람직한 클래스의 퍼뮤테이션이었음이 제시되었다. 이들 퍼뮤테이션들을 사용하는 것은 코드에 대해 그룹 구조가 되게 하므로 병렬 처리가 리프팅의 크기, 예를 들면 순환 구조의 순서(order)의 스케일상인 효율적인 병렬 인코딩 및 디코딩으로 귀결된다.
동일 코드를 사용하는 인코더들/디코더들에서 서로 다른 레벨들의 병렬 처리의 가능성을 가능하게 하는 단지 하나의 크기가 아닌 2 이상의 크기들의 리프팅으로서 간주할 수 있는 주어진 코드를 갖는 것이 바람직한 것으로 드러나는 그러한 상황들이 있다. 이러한 실현 및 본 발명의 결과적인 코드 구조들은 동일 LDPC 코드들을 사용하는 서로 다른 레벨들의 병렬 처리를 가질 수 있는 효율적인 인코더 및/또는 디코더를 가능하게 한다. 인코더들, 디코더들, 코드워드들 및 본 발명의 코드 구조를 사용하거나 사용에 의해 발생되는 인코딩된 데이터는 본 발명의 고찰된 특징들이다.
본 발명을 설명하는데 사용되는 다음의 예를 고찰한다. 디지털 신호 프로세서(DSP)에서 인코딩하기를 원하므로, 16배의 병렬 처리(리프팅)가 바람직하나, 4 크기의 병렬 처리를 가진 소규모 디코더를 형성하기를 원한다. 16배 병렬 처리를 가진 DSP는 예를 들면 4 개의 이동 디바이스들에 서비스를 행하는 한 기지국에서 사용될 수 있고, 그 각각의 이동 디바이스는 기지국 내 인코더가 동작하는 데이터 레이트의 대략 1/4로 데이터를 수신한다. 이러한 시스템 내 각각의 이동 디바이스는 상기 인코더와 동일 코드를 사용할 수 있으나 이동 디바이스가 동일 데이터량을 처리하는 시간의 대략 4배를 갖는다는 사실을 반영하는 4 폭(wide)의 병렬 처리의 디코더로 본 발명에 따라 구현될 수 있다. 기지국이 3 개의 이동국들, 예를 들면 인코더의 데이터 레이트의 대략 1/4로 동작하는 제 1 및 제 2 이동국들과 인코더의 데이터 레이트의 1/2로 동작하는 제 3 이동국에 서비스한다고 할 때, 제 1 두 이동국들에서 4배의 병렬 처리를 사용하는 디코더들은 인코더의 레이트의 1/2로 디코딩을 지원하는 제 3 이동국에서 사용되는 8배의 병렬 처리로 사용될 수 있다.
서로 다른 레벨들의 인코더 및 디코더 병렬 처리를 지원하는 본 발명의 방법은 광범위한 다른 적용들에서도 유용하다. 또 다른 예는 다음과 같다. 큰 병렬 처리를 요하는 매우 고속의 응용을 위한 코드를 설계하기를 원한다. ASIC 구현으로 진행하기 전에 FPGA(부동 소수점 게이트 어레이(Floating Point Gate Array)) 플랫폼에 코드를 시뮬레이팅하고자 한다. FPGA는 응용에서 요구되는 병렬 처리를 지원하지 못하므로 최종 응용에 사용할 정확한 코드를 시뮬레이팅할 수 없다. 제 1 경우에, 4-리프팅 및 16-리프팅으로서 간주할 수 있는 코드를 취하는 것이 바람직할 것이다. 제 2 경우에, 동시에 64-리프팅 및 256-리프팅인 코드를 원할 수도 있을 것이다. 제 3 시나리오는 하드웨어 인코더들이 요구되는 고속 애플리케이션이다. 하드웨어 인코더들은 일반적으로 디코더들보다 빠르게 동작하므로 인코더에서 병렬 처리(게이트 카운트(gate count))를 감소시키고 이를 디코더 속도에 더욱 가깝게 맞는 낮은 속도로 동작시킬 수 있기를 원할 것이다. 제 4 시나리오는 서로 다른 스루풋들(throughputs), 예를 들면 서로 다른 속도들로 구현을 요하는 표준화된 코드이다. 제 5 시나리오는 소프트웨어 구현으로서, 코드의 구조는 전형적인 마이크로프로세들에서 본연의 병렬 처리에 부합시킬 수 있다. 본 발명은 순환 퍼뮤테이션들에 요구되는 것에 가까운 퍼뮤테이션 복잡성 레벨을 유지하면서도, 전술한 것을 가능하게 한다. 또한, 코드의 디스크립션에 관하여 복잡성 감축 가능성이 있다; 코드가 상기 구현보다 더 많은 병렬 처리를 갖고 있다면(적에 또 다른 인수를 가짐으로써), 이 추가의 구조는 코드의 보다 간결한 디스크립션을 갖게 하는데 사용될 수 있다. 이것은 단순화된 메시지 전달 제어를 가능하게 할 수 있다. 멀티-레벨 또는 적 리프팅들의 이점들이 실현되는 것은 주로 벡터-LDPC 구조의 정황에서 이다.
출원인은 단일 코드에 대해 서로 다른 레벨들의 병렬 처리를 지원하는 본 발명의 각종 실시예들에서 사용되는 LDPC 코드 구조들은 입수가능한 LDPC 문헌에 제시되었다고 본다. 본 발명의 각종 실시예들에서 사용되는 한 부류의 LDPC 코드들은 다른 LDPC 코드들에 비해 본 발명의 토대들 중 하나를 이루는 V-LDPC(벡터-LDPC)의 맥락에서 특히, 구현 이점을 제공한다는 것이 발명자들의 인식이다.
정합된 리프팅들(Matched Liftings)
적 리프팅을 기술하기 전에, 그리고 이들의 설명을 용이하게 하기 위해서, 먼저 부가적인 수학적 구조를 갖는 일반적인 클래스의 리프팅을 기술한다. 순환 그룹들에 의한 리프팅은 이러한 부류 내에 속함에 유의한다.
리프팅에서 사용되는 그룹의 차수(그룹 내 원소들의 수)가 리프팅의 크기 Z과 같다고 할 때, 수학적인 구조는 유리하게 활용될 수 있음이 밝혀진다. 이러한 리프팅을 정합된 리프팅(matched lifting)이라 칭한다. 정합된 리프팅에서, 리프팅에서 사용되는 ZxZ 퍼뮤테이션 행렬들의 GF[2]에 대해 합산하고 길이 Z의 2진 벡터들은 환(ring)의 원소들에 의해 동시에 확인될 수 있다. 환의 원소들은 길이 Z의 2진 벡터들로서 편의상 나타낼 수 있고 여기서 가산은 비트별 모듈로 2 가산이고 곱셈은 그룹 구조로부터 발생한다. 결국, 투영된 패리티 검사 행렬의 각 원소를 환의 원소로 대치함으로써, 리프트된 패리티 검사 행렬이 형성된다.
각 비트를 환의 원소로 대치하는 것은 투영된 그래프의 2진 코드워드를 리프트한다. 전체 코드는 여전히 2진이지만, 그러나 환에 대해 Z-배의 작은 코드로서 표현된다. 완전히 리프팅된 패리티 검사 행렬에 관한 2진 행렬 연산들은 환에 대한 연산들로서 모방될 수 있음을 보일 수 있다. 이것은 극적으로 인코더 추출을 단순화한다. 또한, 수학적 구조는 인코딩이 환에서 수행될 수 있음을 보증한다.
정합된 리프팅들의 수학적 구조를 제시한다. 원소들 g1,...,gz을 가진 차수 Z의 그룹 g를 갖고 있다고 가정한다. 여기서, 관례에 의해, g1은 아이덴티티(identity) 원소이다. 그룹은 gigk=gj일 경우에 한해서만 πi(k)=j라고 놓음으로써 퍼뮤테이션 p1,...,pz을 사용하여 표현될 수 있다. 대응하여, k=1,...,Z에 대해 Gj πi(k),k=1이고 모든 다른 엔트리들이 0인 ZxZ 퍼뮤테이션 행렬들 G 1,...,GZ 을 사용하여 그룹을 나타낼 수 있다.
이러한 그룹이 주어진다면, 원소들이 길이 Z의 2진 벡터들인 환을 정의한다. 2진 벡터 u=(u1,..,uZ)는 G의 서브세트로써 식별될 수 있고, 또는 동등하게 정규의 합
Figure 112011010864791-pct00001
으로 확인될 수 있다. 여기서, ui=1은 gi가 서브세트의 원소임을 나타내며, ui=0은 gi이 서브세트의 원소가 아님을 나타낸다. G i의 gi의 대응에 의해, 합을 행렬 합
Figure 112011010864791-pct00002
로서 해석할 수 있고 여기서 가산은 모듈로 2, 즉 GF[2]에 대한 것이다. 그러므로, M(u)는 GF[2]에 대한 행렬이다. 이 합이 가역성, 즉
Figure 112011010864791-pct00003
이 고유하게 u를 결정함에 유의한다.
두 개의 2진 벡터들 u 및 v가 주어졌다면 이들 적 w:uv는
Figure 112005047620659-pct00004
에 의해 고유하게 주어진다. 또한, v가 GF[2]에 대한 열(column) 벡터라고 해석한다 면 w=M(u)v인 것에 유의한다.
2진 벡터들에 대한 곱셈을 정의하였으므로,
Figure 112005047620659-pct00005
로 표기한 환을 정의하였다.
Figure 112005047620659-pct00006
의 단항 원소들은 2진 벡터 표현이 정확히 1 및 Z-1 0들을 갖는 원소들이다.
도 5에 나타낸 리프팅을 다시 고찰한다. 이제, 이 도면에서 우측에 행렬은
Figure 112009012062475-pct00007
의 원소들의 행렬로서 해석될 수 있고, 여기서
Figure 112009012062475-pct00008
은 크기 K(이 예에서 3)의 순환 퍼뮤테이션에 의해 유도된 환이다. 코드는 패리티 검사 식 Hx=0에 대한 한 세트의 해이지만, H의 원소들 및 x의 원소들은
Figure 112009012062475-pct00009
에 속한다. 이에 따라 코드워드는
Figure 112009012062475-pct00010
에 대해 길이 K의 벡터이다. 각각의 원소는 길이 Z의 2진 벡터로서 해석될 수 있으므로 코드워드는 길이 ZK의 2진 벡터이다. JxK 패리티 검사 행렬은 환의 원소들을 포함하나, 이것은 ZJxZK 크기의 2진 행렬로서 해석될 수도 있다.
정합된 리프팅된 코드들의 코드워들의 인식
코드워드 x=(x1,..,xK)는 각각의 벡터 xu=(x1u,...,xKu)가 u∈
Figure 112009012062475-pct00011
의 각각의 원소에 대해서만 코드워드인 경우에 한해서만
Figure 112009012062475-pct00012
에 대한 코드워드이다. 이 조건은 정합된 리프팅의 코드워드들을 특징화한다. 이에 따라, 적 리프팅(다음을 참조)에 기초하여 LDPC 시스템들은, 적합하게 분할된 코드가 적 환의 원소들과의 원소별 곱셈 하에 시불변이라는 사실에 의해 식별될 수 있다.
정합된 리프팅들의 인코딩
정합된 리프팅 형식은 이러한 LDPC 코드들에 대한 이해를 단순화하며, 단순화한 인코딩 프로세스로 이끌 수 있다.
일반적인 LDPC 코드에 대한 인코더를 구축하기 위해서, 제 1 단계는 H의 행들 및 열들의 퍼뮤테이션을 찾는 것이므로, 재정렬로, 다음과 같이 쓸 수 있다.
Figure 112005047620659-pct00013
여기서 T는 txt 상 삼각(upper triangular), E는 gxt, A는 txg, C는 gxg이고, B는 tx(n-m), D는 gx(n-m) 및 t+g=m이다. 또한, gxg 행렬
Figure 112011010864791-pct00014
는 가역이다(여기서 H는 최대 행 랭크(full row rank)라고 가정한다).
인코딩은 다음과 같이 진행된다. 정보 비트 xS가 주어졌다면, 역-대입(back-substitution)을 사용하여 y에 대해 다음에 대해 해를 구한다.
Figure 112005047620659-pct00015
다음에,
Figure 112005047620659-pct00016
에 대해 다음의 해를 구한다.
Figure 112005047620659-pct00017
이 단계를 위해서 행렬
Figure 112005047620659-pct00018
을 미리 계산해 둔다. 마지막으로 역-대입을 사용하여
Figure 112005047620659-pct00019
에 대해 다음의 해를 구한다.
Figure 112005047620659-pct00020
벡터
Figure 112005047620659-pct00021
는 코드워드를 구성한다.
리프트된 그래프들을 인코딩하는 생각은 투영된 패리티 검사 행렬에 관한 근사 상 삼각화(approximate upper triangulation)를 수행하는 것이지만, 이때
Figure 112011010864791-pct00022
에 대해 행렬 연산들을 해석함으로써 인코딩을 수행하는 것이다. 실제적인 세팅에서, 리프팅의 크기가 충분히 큰 경우, 성능이 눈에 띄게 상실되지 않게 g=1로 강제할 수 있다. 이 경우 행렬 ET-1A + C 및 이의 역은
Figure 112011010864791-pct00023
의 원소이다. ET-1A + C의 가역성은 리프팅에서, 즉
Figure 112011010864791-pct00024
에 대해 검사될 필요가 있다. 이것은 리프트된 2진 행렬로서 가역성에 대응하나, 투영된 행렬의 가역성에 반드시 그러하지 않다. 복수의 에지들이 있는 상태에서 대각 형렬 T를 형성할 때는 대각 엔트리들이 복수가 아닌 에지들이어서 리프팅에서 단항 원소들로 되는 것이 바람직하다.
환의 단항 원소(이의 벡터 표현에서 단지 하나의 제로가 아닌 엔트리를 가진 원소)에 의해 환에서 곱셈은 하드웨어로 스위치로서 바로 구현될 수 있다. 미국특허출원번호 09/975,331 및 미국가특허출원 번호 60/404,810에 기술된 스위치 루틴 메커니즘들은 단항 곱셈을 구현하는데 사용될 수 있는 메커니즘들이다. 단항이 아닌 원소들에 의한 곱셈은 스위치의 복수의 사용과 결과들의 가산(환에 대해)에 의해 구현된다. 이것은
Figure 112005047620659-pct00025
의 임의의 원소들의 곱셈을 단항 곱셈들의 합들로 분해하는 것에 대응한다. 이러한 방법에 의해, 본 발명의 여러 실시예들에서 사용되는 인수 퍼뮤테이션이 가능해진다.
적 리프팅(product lifting)
적 리프팅들은 리프팅을 위해 곱 그룹을 선택함으로써 달성된다. 적 리프팅은 등가적으로 다차원 리프팅(multi-dimensional lifting)으로서 간주될 수 있다. 대응답하여, 리프팅이 정합된 것이라 한다면, 환
Figure 112009012062475-pct00026
은 적 환이다. 크기 64의 리프팅이 요구되는 예를 고찰한다. 투영된 코드는 크기가 P, 즉 가변 노드들이 P개라고 가정한다. 리프팅을 위해 크기 64의 순환 그룹을 선택할 수도 있을 것이다. 본 발명에 따라 또 다르게는 크기 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, a+b mod 4)로 퍼뮤팅하는 것이다. 이 그룹은 또한 차수 64를 갖는다. 그러나, 결과적인 리프트된 그래프는 16만큼 크기 4P 코드 또는 64만큼 크기 P의 리프팅으로서 해석될 수 있다. 이에 따라, 병렬 처리 4, 16 또는 64로의 구현은 모두가 동시에 본 발명에 따라 지원된다. 이것은 병렬 처리 64에 의한 고속 디코딩이 필요한 구현들에선 바람직할 수도 있을 것이나, 훨씬 단순한 인코딩은 디지털 신호 프로세서로 수행될 것이며, 여기서 Z=16 표현이 훨씬 더 편리하다. 적 리프팅들에 의해 제공되는 이점들은 인코더 및 하드웨어 구현들의 맥락에서 실현된다. 적 리프팅들을 사용함에 의해 더해진 가치는 본 발명의 특징이다. 곱들이 아닌 그룹들, 예를 들면 순환 그룹에 의한 리프팅들은 임의의 크기의 리프팅을 가능하게 하나 적 리프팅들의 유연성은 제공하지 못한다.
본 발명에 따른 코드들의 세트는 리프팅 그룹 g가 곱 그룹인 경우이고, 이 경우 결과적인 환은 적 환이다. 본 구조에서 병렬 처리는 결과적으로 환에 대한 병렬 처리화에 해당한다. 하나의 적 환이 있을 때 서브-환들이 있으므로 이들 환들에 대해서도 병렬 처리화할 수 있어, 주어진 코드에 대한 병렬 처리 선택이 주어진다.
문헌에 나타나는 경우들은 이미 g가 순환 그룹(multiplicative group) 또는 유한 필드(finite group)의 곱셈 그룹일 때이다. 이들 경우들은 적 그룹들이 아니므로, 본 구조는 예기되지 않았다. 또한, 이의 이점들은 여기 기술된 것과 같은 병렬 구조들에 면에서만 명백하다.
예시적인 이용
본 발명의 코드들에 의해 가능하게 한 인수 퍼뮤터(706)의 사용 및 앞에 기술한 적 리프팅 특징을 도 9를 참조하여 기술한다. 도 9는 메모리(702), 인수 퍼뮤터(706) 및 병렬 Z 원소 LDPC 프로세서 모듈(710)을 포함하는 시스템(700)의 일부를 도시한 것이다. 메모리(702)는 L Z 원소 벡터들을 포함한다. 각각의 Z 원소 벡터는 원소들 1 내지 Z을 포함한다. 본 발명의 설명의 목적상 메모리(702) 내 각 Z 원소 벡터의 상측 부분은 A로 표기하였고 하측 부분은 B로 표기하였다. 인코딩 동작들의 경우 Z의 각 원소는 통상 하나의 비트, 예를 들면, 인코딩될 한 비트의 정보일 것이다. 수신된 코드워드는 T/L=Z인 총 T개의 비트를 포함할 수 있다. 코드워드 내 실제 비트 수는 패딩(pad)될 수도 있고, 또는 예를 들면 천공 코드의 경우 T/L 및 정수값을 만들기 위해 일부 비트들을 뺄 수도 있다. 디코딩 동작의 경우, 각각의 Z 벡터의 원소들은 통상 멀티-비트 메시지들일 것이다.
단계 903에서, Z 원소 벡터는 정보(720)에 의해 식별된 코드를 구현하기 위해 제어기(718)의 지휘 하에 동작하는 어드레스 발생기에 의해 결정된 순서로 메모리(702)로부터 독출된다. 단계 904는 제어기(718)의 지휘 하에 퍼뮤테이션 동작들(벡터 원소들의 재정렬들)을 수행하는 인수 퍼뮤터(706)의 입력에 공급되는 독출된 Z 원소 벡터들(704) 중 하나를 나타낸다. 인수 퍼뮤터(706)는 참조 번호(902, 904)를 사용하여 여기 언급한 제 1 및 제 2 스위칭 단계들을 수행하는 제 1 및 제 2 스위칭 디바이스(902, 904)인 2 스테이지 스위칭 디바이스로서 구현된다. 제 1 스테이지는 전체 벡터(704)에 동작하는 제 1 스위칭 회로(902)를 포함한다. 이 예에서, 스위치(902)는 입력 벡터(704)에서 이의 원소들을 S1=Z/n(이 예에서 n=2)만큼 또는 S1=0위치들로 자리를 옮기게 하는 제 1 순환 회전 R을 수행한다. 이에 따라, S1=Z/2이면 위치들 A 및 B가 서로 바뀌고, S1=0이면 바뀌지 않는다. 도 9, 도 10 및 도 11의 예들에서 n=2이다. 화살표들(911)은 제 1 퍼뮤테이션의 결과(재정렬 동작)를 정수 개 n의 동일 부분들로-이 경우 R에 의해 변경되지 않는 Z>n>1임 - 분할하는 단계를 나타낸다. 제 1 동일 부분(913) 및 제 2 동일 부분(906)에 단계 907 및 도 909에서 동일 퍼뮤테이션 Q를 행한다. 본 제 2 퍼뮤테이션 동작은 동일 부분들(904, 906) 각각의 원소들로 하여금 그 부분 내에서 재정렬되게 한다. 재정렬 R 및 Q는 동일한 재정렬(예를 들면, 0 또는 Z의 시프트) 또는 원소들의 순서에 실제적인 변화를 초래하는 어떤 양만큼의 시프트일 수 있다. 제 1 재정렬 동작과 제 2 재정렬 Q의 적용과의 조합은 인수분해가능 입력 벡터 Z에 대한 퍼뮤테이션을 가져온다. 퍼뮤테이션 동작 R 및 퍼뮤테이션 동작 Q - 여기서, Q는 n개의 동등 크기의 부분들에 적용됨 -의 순서는 기록 동작의 조합이 동작들이 수행되는 순서에 관계없이 동일 결과를 가져올 것이기 때문에 문제가 되지 않는다.
각 부분(913, 906)에 Q의 적용에 기인하여 재정렬된 Z 원소 벡터의 각각의 원소는 병렬 Z 원소 LDPC 프로세서 모듈(710)의 상이한 대응하는 처리 요소(712, 711, 713 또는 714)에 공급된다. Z 원소 벡터들이 독출되는 순서를 결정하는데 사용되는 어드레싱의 제어와 함께 인수 퍼뮤터(706)의 동작의 결과로서, 코드 정보(720)에 의해 식별되는 코드는 비교적 직접적인 방식으로 구현될 수 있다.
인수 퍼뮤터(706)를 사용함으로써, 단일 단순 순환 시프트를 사용하여 지원되지 않을 수 있는 코드 구조들이 지원될 수 있다. 전술한 바와 같이, 이러한 코드들은 동일 코드에 대해 서로 다른 레벨들의 디코더 및 인코더 병렬 처리를 가능하게 하는 이점이 있다.
도 10은 퍼뮤터(706)에 의해 수행되는 제 1 퍼뮤테이션 동작이 벡터(704)의 상측 부분 A 및 하측 부분 B의 아이덴티티(I) 퍼뮤테이션 또는 플립(F)일 수 있는 예를 도시한 것이다. 화살표(1002)는 Z 원소 벡터(704)를 독출하여 이에 퍼뮤터(706)에 의해 처리를 행하는 단계를 나타낸다. 스위칭 단계(902)에서, 제 1 처리 경로(1004)는 제 1 퍼뮤테이션이 아이덴티티 퍼뮤테이션인 경우 이어진다. 이것은 벡터(904)가 벡터(704)와 동일하게 하는 것에 유의하라. 단계(1007)은 벡터(904)의 상위 A 부분에 퍼뮤테이션 Q의 적용을 나타내고 단계(1009)는 벡터(904)의 하위 부분 B에 Q 퍼뮤테이션의 적용을 나타낸다.
단계(902)에서, R이 플립 동작이었다면 처리는 경로(1005)를 따라 진행하여 결과적인 Z 원소 벡터(906)는 상위 부분에 B와 하위 부분에 A를 포함하게 될 것이다. 이어서, 제 2 퍼뮤테이션 Q가 단계(1007´ 및 1009´)에서 이들 부분들 각각에 적용된다.
도 11은 인수 퍼뮤터(706)가 Z 원소 벡터(704)에 대해 두 개의 순차적인 퍼뮤테이션 동작들 R 및 Q를 수행하는데 사용되는 방법의 또 다른 상세한 예이다. 도 11의 예에서, 메모리(702)로부터 독출된 Z 원소 벡터(704)는 위치 1에 Y(1102)이 놓인 제 1 z/2 부분 A(1101)를 포함한다. 벡터(704)는 또한 벡터 위치 Z/2+1에 부분(B)의 시작에 위치한 원소 X(1106)을 포함하는 제 2 부분(B)을 또한 포함한다. 단계(902)는 Z 원소 벡터(704´)를 발생하기 위한 벡터(704)에 대한 제 1 퍼뮤테이션 R의 적용을 나타낸다. 이 예에서 R은 플립, 즉 벡터(704)에 적용된 Z/2만큼의 제 1 순환 시프트이다. 이 제 1 순환 회전에 의해 부분 B(1105)는 Z 원소 벡터(704´)의 상위 부분으로 옮겨지고 부분 A(1101)은 Z 원소 벡터(704´)의 하위 부분으로 옮겨지게 된다. 이것은 벡터의 원소들의 순서가 바뀌는 결과를 갖게 되므로 원소 X(1106)은 이제 제 1 위치에 있고 원소 Y(1102)는 (Z/2 +1) 위치에 있게 된다. 중간 벡터(704)의 n개(이 예에서 n=2)의 균등 크기의 부분들, 즉 Z 원소 벡터(704´)가 제 2 퍼뮤테이션의 적용을 위해 분리된 부분(1105) 및 부분(1101)은 이때 개별적으로 단계(904 및 906)에서 퍼뮤테이션 Q가 적용된다. 이 예에서 Q는 한 위치의 순환 시프트이다. 이에 따라, 원소 X(1106)은 Z 원소 출력 벡터(704''')의 제 1 부분(1105) 내의 Z/2 위치로 옮겨지게 된다. 이것은 또한 원소 Y(1102)가 Z 위치로 옮겨지게 하므로 이를 벡터(704″)에 마지막 원소 및 제 2 부분(1101´)에서 마지막 원소가 되게 한다. 인수 퍼뮤터(706)에 의해 수행되는 멀티-스테이지 재정렬 프로세스는 Z 원소 입력 벡터(704)에 단일의 순환 시프트를 사용시 가능하지 않은 재정렬로 귀결됨에 유의하라. 이 신규의 재정렬 방법에 따라, 단일 순환 시프트만을 할 수 있었던 퍼뮤터를 사용하여 구현될 수도 없었을 코드들이 구현이 가능하게 된다.
퍼뮤팅된 벡터(704″)의 제 1 내지 Z 원소들 각각은 모듈(710)의 제 1 내지 Z 병렬 처리 원소들(712, 711, 713, 714) 중 다른 것에 공급된다. 병렬 처리 원소들에 의해 발생된 처리 결과들은 일부 실시예들에서 메모리(702)에 다시 기록될 수 있고, 아니면 예를 들면 제어기(718)의 제어 하에 후속 처리를 위해 또 다른 메모리에 기록될 수 있다.
(706)의 동작이 상세히 설명되었으나, 도 8에 도시된 퍼뮤터(806)는 메모리 및 메모리(802)에 기록되는 결과들 대신 프로세서 병렬 LDPC 처리로부터 입력 벡터들이 수신되는 것을 제외하곤 동일한 방식으로 동작한다.
도 10의 예는 2개의 인수 G=G2xGZ/2에 의한 적 리프팅을 사용한다. 그룹 G2는 다음과 같이 {0, 1}에 대해 정의된 두 개의 원소들 F(플립) 및 I(아이덴티티)로 구성된다.
F(0) = 1, F(l) = 0;
I(0) = 0, I(1) = 1;
도 10에 도시된 프로세스에서 길이 L 사이클을 가정한다.
본 발명은, 무엇보다도, 신규 데이터 구조들, 예를 들면, 본 발명의 코드들 중 하나를 사용한 인코더 및 본 발명의 인코딩 방법들을 구현하는 인코더에 의해 입력 데이터로부터 발생된 하나 이상의 코드워드들을 저장하기 위해 일부 실시예들에서 사용되는 메모리(702)와 같은 기계 판독가능 매체들(machine readable media)에 저장되는 코드워드들에 관한 것이다.
특히, 본 발명의 일부 실시예들은 다음에 관계된 것이다.
통신 디바이스에서 기계 판독가능 저장 매체(machine readable storage medium)에서,
NxZ 비트의 어레이 y 형태의 데이터 구조를 포함하며, N 및 Z은 양의 정수이며, 상기 데이터 구조는 다음에 의해 발생된 것이고;
KxZ 비트 -K은 양의 정수- 어레이인 입력(u)을 수신하도록 인코더 회로를 동작시키는 단계, 및
다음 식에 따라 y를 계산하도록 상기 인코더 회로를 동작시키는 단계,
Figure 112005047620659-pct00027
여기서 y는 NxZ 비트 어레이, N 및 Z는 양의 정수,
u는 KzZ 비트의 어레이, K은 양의 정수,
G는 G의 각 원소가 Z 비트의 벡터인 원소들의 KxN 행렬의 어레이이고,
Figure 112011010864791-pct00028
, [1, N]에서 i에 대한 yi는 Z 비트 벡터,
Figure 112009012062475-pct00029
, [1, K]에서 i에 대한 ui는 Z 비트 벡터이며,
Figure 112005047620659-pct00030
여기서, [1, K]에서 i 정수 및 [1, N]에서 j 정수에 대한 Gi,j는 Z 비트 벡터이고,
Figure 112009012062475-pct00031
이며
Figure 112005047620659-pct00032
는 [1, N]에서 각 정수 i 및 벡터 [1, K]에서 각 정수 j에 대한 Z 비트 벡터이고
Figure 112009012062475-pct00033
는 Z 비트 벡터 yi를 형성하기 위해 Z 비트 벡터들 vi,1 vi,2...,vi,K의 성분끼리의 XOR을 나타내고,
여기서,
Figure 112005047620659-pct00034
는 2개의 Z비트 벡터 ui와 Gi,j와의 적을 나타내며, 여기서 두 Z 비트 벡터들의 적은 다음과 같이 정의된다:
임의의 Z 비트 벡터 a = (a1, a2,..., aZ) 및 임의의 Z 비트 벡터 b = (b1, b2,..., bZ)에 대해 이들의 적 ab는 다음에 의해 정의되는 Z 비트 벡터 d = (d1, d2,..., dZ)
Figure 112005047620659-pct00035
여기서, 모든 산술은, aibj가 비트들 ai 및 bj와의 논리 AND이고 합산은 논리 XOR를 의미하는 2진 산술이며,
또한 여기서,
Figure 112005047620659-pct00036
은 차수 Z의 인수분해가능 그룹이며, 차수 Z의 그룹 g는 그룹 연산 *과 함께 서로 구별되는 원소들 {g1,g2,...,gZ}의 세트이며 그룹 연산 *는 [1, Z]에서 정수 i, j의 각 쌍 (i, j)에 대해 gi * gj = gk이게 하는 고유 정수 k를 정의함으로써 주어진 g로 gxg를 맵핑하는 것이고, 또한 이 맵핑은 관련적(associative)이며, [1, Z]에서 모든 정수들, i, j, k에 대해
Figure 112005047620659-pct00037
를 의미하며, 그룹에 다음을 의미하는 아이덴티티 원소가 존재하는데, [1, Z]에서 어떤 정수 i*에 대해서 [1, Z] 내의 모든 j에 대해
Figure 112005047620659-pct00038
이고, 각 원소는 역을 가지며, [1, Z] 내 각 정수 j에 대해,
Figure 112011010864791-pct00039
이게 하는, [1, Z]에 정수 k가 존재함을 의미하고,
여기서, gi*는 위에 언급한 아이덴티티 원소이고 차수 Z의 인수분해가능 그룹은 차수 Z의
Figure 112005047620659-pct00040
인 그룹이고 이는 1 < ZA, ZB < Z and ZAZB = Z를 만족하고 그룹 연산 *A 및 *B를 각각 이용한 차수 ZA 및 ZB의 다음과 같은 두 개의 그룹들로 인수로 분해될 수 있고,
Figure 112005047620659-pct00041
Figure 112005047620659-pct00042
상기 인수분해는 정수들(iA, iB)의 고유하게 정렬된 쌍을 갖는 [1, Z] 내 각각의 정수 i를 식별하는 것으로 구성되고, [1, ZA] 내 iA 정수 및 [1, ZA] 내 정수 iB
Figure 112005047620659-pct00043
Figure 112005047620659-pct00044
인 경우에 또는 경우에만
Figure 112005047620659-pct00045
이고, 위에 기술한 식별 하에서, i는 쌍 (iA, iB)로써 식별되고, j는 쌍 (jA, jB)로 식별되고, k는 (kA, kB)로 식별되며, 여기서 i, j, 및 k는 [1, N]에서 정수들이며, (iA, iB), (jA, jB), (kA, kB)는 [1, ZA]에서 제 1 원소와 [1, ZB]에서 제 2 원소를 가진 정수들의 각각의 정렬된 쌍들이다.
위에 기술된 방법들은 함께 결합된, 메모리, CPU 및 하나 이상의 입력 및/또는 출력 디바이스들을 포함하는 컴퓨터 시스템에 구현될 수 있다. 메모리는 본 발명에 따라 구현되는 루틴을 포함한다. 실행되었을 때, 루틴은 CPU가 본 발명에 따라 데이터를 수신, 처리, 출력하게 한다.
대안으로, 본 발명의 단계들은 전용의 하드웨어, 예를 들면 회로들 및/또는 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수도 있다.

Claims (16)

  1. LDPC 처리 동작을 수행하기 위한 디바이스로서,
    복수의 Z 원소 벡터들을 저장하기 위한 메모리 ― 각각의 Z 원소 벡터는 Z개 원소들을 포함하고, 각각의 원소는 처리될 적어도 하나의 비트를 포함함 ― ;
    병렬로 동작하도록 배치된 Z개 처리 요소를 포함하는 병렬 LDPC 처리 모듈; 및
    상기 메모리를 상기 병렬 LDPC 처리 모듈에 결합하기 위한 제어가능 인수 퍼뮤터(controllable factorable permuter)
    를 포함하며, 상기 제어가능 인수 퍼뮤터는 스위칭 회로를 포함하고, 상기 스위칭 회로는 제어 신호에 응답하여 상기 제어가능 인수 퍼뮤터를 통과하는 Z 원소 벡터에 대해 인수 퍼뮤테이션 동작(factorable permutation operation)을 수행하고, 상기 인수 퍼뮤테이션 동작은 벡터 원소들의 제 1 및 제 2 재-정렬들이 발생하게 하는 제 1 및 제 2 퍼뮤테이션 동작들을 포함하며, 상기 제 1 및 제 2 재정렬 동작들은 크기 Z/n의 n 개의 동등 크기의 벡터 부분들에 대해 수행되며, 상기 제 1 퍼뮤테이션 동작은 적어도 2 개의 동등 크기의 벡터 부분들의 순서에서의 변화를 야기하며, 상기 제 2 퍼뮤테이션 동작은 상기 Z/n 크기의 부분들 각각 내의 원소들의 정렬에 변화를 야기하도록 상기 Z/n 크기의 부분들 각각에 수행되며, 여기서 n은 1보다 크고 Z보다 작은 정수인, LDPC 처리 동작을 수행하기 위한 디바이스.
  2. 제 1 항에 있어서,
    상기 제어가능 인수 퍼뮤터는 상기 제 1 재-정렬을 수행하기 위한 제 1 스위칭 회로와 상기 제 2 재-정렬을 수행하기 위한 제 2 스위칭 회로를 포함하며, 상기 제 1 및 제 2 스위칭 회로들은 직렬로 배치되는, LDPC 처리 동작을 수행하기 위한 디바이스.
  3. 제 1 항에 있어서,
    상기 숫자 n은 2의 정수배인, LDPC 처리 동작을 수행하기 위한 디바이스.
  4. 제 1 항에 있어서,
    상기 제 1 퍼뮤테이션 동작은 상기 제 2 퍼뮤테이션 동작 후에 수행될 수 있고, 또는 상기 제 2 퍼뮤테이션 동작은 상기 제 1 퍼뮤테이션 동작 후에 수행될 수 있는, LDPC 처리 동작을 수행하기 위한 디바이스.
  5. 제 2 항에 있어서,
    구현될 LDPC 코드의 적어도 일부를 정의하는 저장된 LDPC 코드 정보의 세트; 및
    퍼뮤터 제어기(permuter controller)
    를 더 포함하며, 상기 퍼뮤터 제어기는 상기 저장된 LDPC 코드 정보에 응답하여, 구현될 LDPC 코드의 적어도 일부에 따라 벡터 원소 재-정렬들을 구현하도록 상기 제어가능 인수 퍼뮤터를 제어하는, LDPC 처리 동작을 수행하기 위한 디바이스.
  6. 제 2 항에 있어서,
    상기 메모리에 결합된 어드레스 발생기(address generator)를 더 포함하며;
    상기 퍼뮤터 제어기는 또한 어드레스 발생기 제어기로서 동작하며, 상기 퍼뮤터 제어기는 인수 퍼뮤터 재정렬 동작들과 메모리 액세스 동작들을 조정하기 위해 상이한 시점들에서 상기 어드레스 발생기에 의해 공급되는 어드레스들의 선택을 제어하는, LDPC 처리 동작을 수행하기 위한 디바이스.
  7. 제 1 항에 있어서,
    상기 제 1 및 제 2 재정렬 동작들은 순환 시프트 동작들(cyclic shift operations)인, LDPC 처리 동작을 수행하기 위한 디바이스.
  8. 제 2 항에 있어서,
    상기 병렬 LDPC 처리 모듈의 상기 Z개의 처리 원소들 각각은 XOR 회로 및 누산기를 포함하는, LDPC 처리 동작을 수행하기 위한 디바이스.
  9. 제 2 항에 있어서,
    상기 병렬 LDPC 처리 모듈의 상기 Z개의 처리 원소들 각각은 가변 노드(variable node) 및 체크 노드 프로세서(check node processor) 중 하나인, LDPC 처리 동작을 수행하기 위한 디바이스.
  10. LDPC 처리 동작을 구현하는 방법으로서,
    상기 처리 동작은 인코딩(encoding) 동작 및 디코딩 동작(decoding operation) 중 하나이고, 상기 방법은:
    복수의 Z 원소 벡터들을 저장하는데 사용되는 메모리와 Z개 처리 원소들을 포함하는 Z 원소 벡터 프로세서 유닛 사이에 위치하는 퍼뮤터를 통해 상기 복수의 Z 원소 벡터들 각각을 순차적으로 전달하는 단계 ― 각각의 Z 원소 벡터는 Z개의 원소들을 포함하며 여기서 Z는 2보다 큰 정수 값임 ― ; 및
    적어도 하나의 Z 원소 벡터의 상기 원소들을 재정렬하기 위해, 상기 메모리와 상기 벡터 처리 유닛 간에 전달되는 상기 Z개의 원소 벡터들 중 적어도 하나에 인수 퍼뮤테이션 동작을 수행하도록 상기 퍼뮤터를 제어하는 단계
    를 포함하며, 상기 인수 퍼뮤테이션 동작을 수행하는 상기 단계는:
    상기 Z 원소 벡터 내의 상기 적어도 하나의 Z 원소 벡터의 제 1 균등 크기 서브세트들의 순서를 변경하기 위해 상기 적어도 하나의 Z 원소 벡터 내의 복수의 상기 제 1 균등 크기 서브세트들에 제 1 재정렬 동작을 수행하는 단계; 및
    상기 복수의 제 1 균등 크기 서브세트들 각각의 상기 원소들 중 적어도 일부의 순서를 변경하기 위해 상기 적어도 하나의 Z 원소 벡터 내의 상기 복수의 제 1 균등 크기 서브세트들 각각의 내용들에 제 2 재정렬 동작을 수행하는 단계
    를 포함하고, 상기 동일한 제 2 재정렬 동작이 상기 제 1 균등 크기 서브세트들 각각 내의 원소들의 순서에 동일한 변경을 생성하기 위해 상기 제 1 균등 크기 서브세트 각각에 대해 수행되는, LDPC 처리 동작을 구현하는 방법.
  11. 제 10 항에 있어서,
    상기 제 1 재정렬 동작은 상기 Z 원소 벡터 내의 서브세트들의 순환 시프트인, LDPC 처리 동작을 구현하는 방법.
  12. 제 10 항에 있어서,
    상기 제 1 및 제 2 재정렬 동작들은 순차적으로 수행되며, 상기 제 2 재정렬 동작은 상기 제 1 재정렬 동작 이전에 수행되는, LDPC 처리 동작을 구현하는 방법.
  13. 제 11 항에 있어서,
    상기 복수의 균등 크기 서브세트들 각각은 n개의 서브세트들을 포함하고, 상기 각각의 서브세트들은 Z/n개의 원소들을 포함하며, 여기서 n은 양의 정수이며, Z/n은 양의 정수이고, Z>n>1인, LDPC 처리 동작을 구현하는 방법.
  14. 제 11 항에 있어서,
    상기 벡터들의 내용을 재정렬하지 않고 적어도 일부의 Z개의 비트 벡터들을 전달하도록 상기 퍼뮤터를 동작시키는 단계를 더 포함하는, LDPC 처리 동작을 구현하는 방법.
  15. 제 14 항에 있어서,
    상기 적어도 일부의 벡터들에 대해 제 2 재정렬 동작을 수행하지 않고 적어도 일부 벡터들 내의 일부 원소들의 순서를 재배치하기 위해 제 1 순환 재정렬을 수행하도록 상기 퍼뮤터를 동작시키는 단계를 더 포함하는, LDPC 처리 동작을 구현하는 방법.
  16. 제 15 항에 있어서,
    사용되는 코딩된 LDPC의 적어도 일부를 정의하는 정보로부터 상기 퍼뮤터를 통해 전달되는 Z개 벡터에 적용될 특정한 재정렬을 결정하도록 제어기를 동작시키는 단계를 더 포함하는, LDPC 처리 동작을 구현하는 방법.
KR1020057016049A 2003-02-26 2004-02-26 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치 KR101058324B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US45024503P 2003-02-26 2003-02-26
US60/450,245 2003-02-26
PCT/US2004/005783 WO2004077733A2 (en) 2003-02-26 2004-02-26 Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation

Publications (2)

Publication Number Publication Date
KR20060008864A KR20060008864A (ko) 2006-01-27
KR101058324B1 true KR101058324B1 (ko) 2011-08-22

Family

ID=32927623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057016049A KR101058324B1 (ko) 2003-02-26 2004-02-26 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치

Country Status (6)

Country Link
EP (1) EP1597828B1 (ko)
JP (1) JP4339886B2 (ko)
KR (1) KR101058324B1 (ko)
CN (1) CN1781254B (ko)
CA (1) CA2516716C (ko)
WO (1) WO2004077733A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101840252B1 (ko) * 2012-03-12 2018-03-20 에스케이하이닉스 주식회사 저밀도 패리티 검사 부호용 장치

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7020829B2 (en) 2002-07-03 2006-03-28 Hughes Electronics Corporation Method and system for decoding low density parity check (LDPC) codes
US7864869B2 (en) 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US20040019845A1 (en) 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
KR100922956B1 (ko) 2003-10-14 2009-10-22 삼성전자주식회사 저밀도 패리티 검사 코드의 부호화 방법
ATE495582T1 (de) * 2004-08-13 2011-01-15 Dtvg Licensing Inc Codeentwurfs- und implementierungsverbesserungen für wenig dichte paritätsprüfcodes für kanäle mit mehreren eingängen und mehreren ausgängen
CN101341659B (zh) 2004-08-13 2012-12-12 Dtvg许可公司 用于多输入多输出通道的低密度奇偶校验码的码设计与实现的改进
KR101065693B1 (ko) * 2004-09-17 2011-09-19 엘지전자 주식회사 Ldpc 코드를 이용한 부호화, 복호화 방법 및 부호화또는 복호화를 위한 ldpc 코드 생성 방법
IE20050277A1 (en) * 2005-05-04 2006-11-29 Nat Univ Ireland Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings
WO2007064325A1 (en) * 2005-12-01 2007-06-07 Thomson Licensing Apparatus and method for decoding low density parity check coded signals
KR101339120B1 (ko) * 2007-01-24 2013-12-09 퀄컴 인코포레이티드 가변 크기들의 패킷들의 ldpc 인코딩 및 디코딩
US8261155B2 (en) 2007-03-09 2012-09-04 Qualcomm Incorporated Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
CN100583649C (zh) 2007-07-23 2010-01-20 华为技术有限公司 矢量编/解码方法、装置及流媒体播放器
US8612823B2 (en) * 2008-10-17 2013-12-17 Intel Corporation Encoding of LDPC codes using sub-matrices of a low density parity check matrix
KR101824227B1 (ko) 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
KR101660554B1 (ko) * 2009-11-13 2016-09-27 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 방법, 복호 방법, 부호화기 및 복호기
US10572342B2 (en) * 2016-10-24 2020-02-25 SK Hynix Inc. Memory system with LDPC decoder and operating method thereof
EP3496277A1 (en) 2017-12-07 2019-06-12 Xieon Networks S.à r.l. Parallel encoding method and system for protograph-based ldpc codes with hierarchical lifting stages
CN109379087B (zh) * 2018-10-24 2022-03-29 江苏华存电子科技有限公司 Ldpc根据闪存组件错误率调变核编译码速率的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001168733A (ja) 1999-10-12 2001-06-22 Thomson Csf Ldpcコードの構築およびコーディングのためのプロセス

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295218A (en) * 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
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
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
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
JP4062435B2 (ja) * 2002-12-03 2008-03-19 日本電気株式会社 誤り訂正符号復号装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001168733A (ja) 1999-10-12 2001-06-22 Thomson Csf Ldpcコードの構築およびコーディングのためのプロセス

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101840252B1 (ko) * 2012-03-12 2018-03-20 에스케이하이닉스 주식회사 저밀도 패리티 검사 부호용 장치

Also Published As

Publication number Publication date
EP1597828B1 (en) 2020-10-07
JP2006519560A (ja) 2006-08-24
EP1597828A2 (en) 2005-11-23
KR20060008864A (ko) 2006-01-27
WO2004077733A2 (en) 2004-09-10
CA2516716A1 (en) 2004-09-10
EP1597828A4 (en) 2006-05-24
CN1781254B (zh) 2012-03-14
CN1781254A (zh) 2006-05-31
JP4339886B2 (ja) 2009-10-07
WO2004077733A3 (en) 2004-10-21
CA2516716C (en) 2012-08-14

Similar Documents

Publication Publication Date Title
KR101058324B1 (ko) 멀티-레벨 퍼뮤테이션을 사용한 저밀도 패리티 검사(ldpc)코드 동작들을 수행하는 방법 및 장치
US6957375B2 (en) Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
EP1787397B1 (en) Ldpc encoding methods and apparatus
US7627801B2 (en) Methods and apparatus for encoding LDPC codes
US7552097B2 (en) Methods and apparatus for decoding LDPC codes
KR100937679B1 (ko) Ldpc 디코딩 방법 및 장치
WO2004019268A1 (en) Methods and apparatus for encoding ldpc codes
KR101216075B1 (ko) 채널 코드를 이용한 복호화 및 복호화 장치
US20110179337A1 (en) Memory utilization method for low density parity check code, low density parity check code decoding method and decoding apparatus thereof

Legal Events

Date Code Title Description
N231 Notification of change of applicant
N231 Notification of change of applicant
A201 Request for examination
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: 20140730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9