KR20070062534A - 저밀도 패리티 체크(ldpc) 디코더 - Google Patents

저밀도 패리티 체크(ldpc) 디코더 Download PDF

Info

Publication number
KR20070062534A
KR20070062534A KR1020077007394A KR20077007394A KR20070062534A KR 20070062534 A KR20070062534 A KR 20070062534A KR 1020077007394 A KR1020077007394 A KR 1020077007394A KR 20077007394 A KR20077007394 A KR 20077007394A KR 20070062534 A KR20070062534 A KR 20070062534A
Authority
KR
South Korea
Prior art keywords
messages
ldpc
group
node messages
processing
Prior art date
Application number
KR1020077007394A
Other languages
English (en)
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 KR20070062534A publication Critical patent/KR20070062534A/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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1165QC-LDPC codes as defined for the digital video broadcasting [DVB] specifications, e.g. DVB-Satellite [DVB-S2]
    • 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
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal 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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Error Detection And Correction (AREA)

Abstract

위성 수신기는 프론트 엔드, 복조기 및 LDPC 디코더를 포함한다. 프론트 엔드는 DVB-S2 LDPC 코딩된 신호를 수신하고, 하향 변환된 신호를 복조기에 제공한다. 복조기는 하향 변환된 신호를 복조하고, 복조된 신호를 LDPC 디코더에 제공한다. LDPC 디코더는 부분 병렬 아키텍처를 가지며, 비트 노드 메시지들을 N/360 그룹들로, 그리고 체크 노드 메시지들을 q 그룹들로 분할하는데, q=M/360이다. 각각의 그룹은 360 비트 노드 프로세서들 또는 360 체크 노드 프로세서들에 의해 각각 처리된다. 예를 들어, LDPC 디코더는 비트 노드 그룹들과 연관된 메시지들이 연속적으로 어드레스되도록 분할된 메모리를 포함한다. 대안으로, LDPC 디코더는 체크 노드 그룹들과 연관된 메시지들이 연속적으로 어드레스되도록 분할된 메모리를 포함한다.
저밀도 패리티 체크(LDPC) 디코더, 체크 노드 메시지, 비트 노드 메시지, 복조기, 프로세서

Description

저밀도 패리티 체크(LDPC) 디코더{A LOW DENSITY PARITY CHECK (LDPC) DECODER}
본 발명은 일반적으로 통신 시스템에 관한 것으로서, 구체적으로는 저밀도 패리티 체크(LDPC) 인코딩된 데이터를 처리하는 수신기에 관한 것이다.
최근에, LDPC 코드들은 니어-쉐넌(near-Shannon) 리미트 에러 보정 능력으로 인해 인기가 높아지고 있다. 예를 들어, 디지털 비디오 방송 표준의 제2 세대(DVB-S2)는 제1 세대 DVB 표준에서 사용되는 컨볼루션 코드들을 대체하는 주요 에러 보정 코드로서 LDPC 코드들을 채택하였다(예를 들어, European Telecommunications Standards Institute (ETSI) Draft EN 302307, v.1.1.1, June 2004 참조).
일반적으로, (N,K) LDPC 코드는 패리티 체크 코드인데, 여기서 K는 인코딩되는 비트들의 수이고, N은 결과적인 코딩된 블록의 크기(길이)이며, (N-K)는 코드에 의해 추가된 추가적인 에러 보정 비트들이다. (N,K) LDPC 코드는 행렬식 HxT=0T의 해들의 세트 x로서 행렬 형태로 표현될 수 있다. 이 방정식은 "패리티 체크 방정식"으로도 지칭되는데, 여기서 위첨자 T는 관련 행렬의 전치를 지칭하고, H는 차수 M x N을 가진 "패리티 체크 행렬"로 지칭되며, 여기서 N은 전술한 바와 같이 결과적인 코딩된 블록의 크기에 대응하고, M=N-K이다. "저밀도"라는 수식어는, 패리티 체크 행렬 H 내의 0이 아닌 요소들의 비율이 작고, 특히 이것은 코드 블록 길이 N에서 선형이라는 사실을 나타낸다. (대조적으로, "랜덤" 선형 블록 코드들은 예상되는 1들의 수가 N2의 차수로 많아지는 코드들이다.)
이 분야에 공지된 바와 같이, LDPC 코드는 LDPC 디코딩 프로세스를 이해하는 데 유용한 이분 그래프에 의해 표현될 수도 있다. 차수 M x N을 가진 패리티 체크 행렬 H와 관련하여, 대응 이분 그래프는 패리티 체크 행렬의 N개 열에 대응하는 N개 비트 노드(변수 노드 또는 메시지 노드라고도 함)를 포함하며, 또한 패리티 체크 행렬의 M개 행에 대응하는 M개 체크 노드를 포함한다. 각각의 체크 노드는 하나 이상의 비트 노드에 연결된다. 구체적으로, Hm ,n=1인 경우, 그리고 그러한 경우에만, 에지(또는 브랜치)가 체크 노드 m을 변수 노드 n에 연결시키는데, 여기서 0≤n<N 및 0≤m<M이다. 이분 그래프에 대해, "비트 노드의 등급"(또는 비트 노드 등급)이라는 용어는 비트 노드가 연결되는 체크 노드들의 수를 지칭한다. 마찬가지로, "체크 노드의 등급"(또는 체크 노드 등급)이라는 용어는 체크 노드가 연결되는 비트 노드들의 수를 지칭한다. 체크 노드 등급 및 비트 노드 등급은 패리티 체크 행렬 H의 각각의 행들 및 열들 내의 "1"의 수에도 대응한다는 점을 또한 알아야 한다. 도 1을 참조하면, 예시적인 패리티 체크 행렬(5) 및 대응하는 이분 그래프(6)가 도시되어 있는데, 여기서 N=7 및 M=3이다. 예를 들어, 비트 노드 x7에 대 한 비트 노드 등급은 1이고, 체크 노드 c3에 대한 체크 노드 등급은 4이다.
전술한 바와 같이, 이분 그래프는 LDPC 디코딩 프로세스를 이해하는 데 유용하다. 이와 관련하여, LDPC 디코더에서, 체크 노드는 체크 노드 프로세서와 연관되며, 비트 노드는 비트 노드 프로세서와 연관된다. 불행히도, LDPC 디코더를 위한 디코딩 알고리즘은 개념적으로 단순하지만, 큰 코드 블록 또는 니어-랜덤 패리티 체크 행렬에 대한 LDPC 디코더의 아키텍처는 심각한 구현 문제를 발생시킨다. LDPC 디코더를 구현하기 위한 3개의 공지된 아키텍처가 존재한다. 첫 번째는, 모든 체크 노드, 비트 노드 및 이들의 연결들이 하드웨어로 맵핑되는 완전 병렬 아키텍처이다. 이 아키텍처는 매우 높은 속도의 디코더를 산출한다. 그러나, 이 아키텍처는 높은 하드웨어 복잡성으로 인해, 블록 길이가 긴 LDPC 코드들을 디코딩하는 데에는 실용적이지 않다. 두 번째는, 단지 하나의 체크 노드 처리 유닛(CPU) 및 하나의 비트 노드 처리 유닛(BPU)이 구현되고, 모든 디코딩 동작을 달성하기 위해 여러 번 재사용되는 직렬 아키텍처이다. 불행히도, 모든 처리는 직렬 방식으로 수행되므로, 직렬 아키텍처는 매우 낮은 속도의 디코더를 산출한다. 마지막으로, 세 번째는, 첫 번째 아키텍처와 두 번째 아키텍처 사이의 중간 입장인 부분 병렬 아키텍처이다. 여기서, 다수의 비트 노드 처리 유닛(BPU) 및 다수의 체크 노드 유닛(CPU)가 구현되고 재사용되어, 사실상 원하는 LDPC 디코더에 대한 하드웨어 복잡성과 디코딩 지연 간을 트레이드오프한다. 불행히도, 부분 병렬 LDPC 디코더를 효율적으로 구현하기 위한 일관된 설계 접근법이 존재하지 않는다.
<발명의 요약>
우리는 LDPC 패리티 체크 행렬들의 소정의 특성들을 이용함으로써 LDPC 디코더의 복잡성을 줄일 수 있고, 따라서 부분 병렬 아키텍처를 가진 보다 효율적인 LDPC 디코더를 설계할 수 있다는 것을 알게 되었다. 따라서, 그리고 본 발명의 원리에 따르면, 수신기가 LDPC 디코딩 방법을 수행하는데, 이 방법은 LDPC 인코딩된 데이터를 수신하는 단계; 및 디코딩된 데이터를 제공하기 위하여 상기 수신된 LDPC 인코딩된 데이터를 처리하는 단계를 포함하고, 상기 처리 단계는 상기 비트 노드 메시지들을 Y 그룹들로, 그리고 상기 체크 노드 메시지들을 q 그룹들로 분할하고, q는 상기 수신된 LDPC 인코딩된 데이터와 연관된 코드 레이트의 함수로서 변한다.
본 발명의 일 실시예에서, 위성 수신기는 프론트 엔드, 복조기 및 LDPC 디코더를 포함한다. 프론트 엔드는 DVB-S2 LDPC 코딩된 신호를 수신하고, 하향 변환된 신호를 복조기에 제공한다. 복조기는 하향 변환된 신호를 복조하고, 복조된 신호를 LDPC 디코더에 제공한다. LDPC 디코더는 부분 병렬 아키텍처를 가지며, 비트 노드 메시지들을 N/360 그룹들로, 그리고 체크 노드 메시지들을 q 그룹들로 분할하는데, q=M/360이다. 각각의 그룹은 360 비트 노드 프로세서들 또는 360 체크 노드 프로세서들에 의해 각각 처리된다. 예를 들어, LDPC 디코더는 비트 노드 그룹들과 연관된 메시지들이 연속적으로 어드레스되도록 분할된 메모리를 포함한다.
본 발명의 일 실시예에서, 위성 수신기는 프론트 엔드, 복조기 및 LDPC 디코더를 포함한다. 프론트 엔드는 DVB-S2 LDPC 코딩된 신호를 수신하고, 하향 변환된 신호를 복조기에 제공한다. 복조기는 하향 변환된 신호를 복조하고, 복조된 신호 를 LDPC 디코더에 제공한다. LDPC 디코더는 부분 병렬 아키텍처를 가지며, 비트 노드 메시지들을 N/360 그룹들로, 그리고 체크 노드 메시지들을 q 그룹들로 분할하는데, q=M/360이다. 각각의 그룹은 360 비트 노드 프로세서들 또는 360 체크 노드 프로세서들에 의해 각각 처리된다. 예를 들어, LDPC 디코더는 체크 노드 그룹들과 연관된 메시지들이 연속적으로 어드레스되도록 분할된 메모리를 포함한다.
도 1은 LDPC 코딩과 관련된 패리티 체크 행렬 및 이분 그래프를 나타내는 도면이다.
도 2는 몇몇 DVB-S2 LDPC 코딩 파라미터를 나타내는 테이블 1을 도시한다.
도 3-5는 DVB-S2 LDPC 패리티 체크 행렬들에 대한 몇몇 공지된 관측을 나타내는 도면이다.
도 6은 DVB-S2 LDPC 코딩에 대한 몇몇 관측을 더 나타내는 테이블 2를 도시한다.
도 7-12는 본 발명의 원리에 따른 패리티 체크 행렬의 재구성을 나타내는 도면이다.
도 13은 본 발명의 원리를 구현하는 예시적인 통신 시스템의 일부를 나타내는 도면이다.
도 14는 본 발명의 원리에 따른 수신기의 예시적인 실시예를 나타내는 도면이다.
도 15는 본 발명의 원리에 따른 LDPC 디코더의 예시적인 실시예를 나타내는 도면이다.
도 16 및 17은 본 발명의 원리에 따른 LDPC 디코더에서 사용하기 위한 예시적인 메모리 구조를 나타내는 도면이다.
도 18은 도 15의 LDPC 디코더에서 사용하기 위한 본 발명의 원리에 따른 예시적인 흐름도이다.
도 19는 도 15에 도시된 실시예와 관련된 메시지 전달을 나타내는 도면이다.
도 20은 본 발명의 원리에 따른 LDPC 디코더에서 사용하기 위한 예시적인 메모리 구조를 나타내는 도면이다.
도 21은 도 15의 순환 시프터의 동작을 나타내는 도면이다.
도 22는 도 15의 LDPC 디코더에서 사용하기 위한 예시적인 체크 노드 처리 유닛을 나타내는 도면이다.
도 23 및 24는 도 15의 LDPC 디코더에서 사용하기 위한 예시적인 비트 노드 처리 유닛을 나타내는 도면이다.
도 25-28은 본 발명의 원리에 따른 다른 예시적인 실시예를 나타내는 도면이다.
도 29는 본 발명의 원리에 따른 또 다른 예시적인 실시예를 나타내는 도면이다.
본 발명의 개념 이외에, 도면들에 도시된 요소들은 공지되어 있으며, 상세히 설명되지 않는다. 예를 들어, 본 발명의 개념 이외에, 위성 트랜스폰더, 다운링크 신호, 심볼 배열, 캐리어 복구, 보간, 위상 동기 루프(PLL), 무선 주파수(rf) 프론트 엔드, 또는 저잡음 블록 다운컨버터와 같은 수신기 섹션, 전송 비트 스트림을 생성하기 위한 (동화상 전문가 그룹(MPEG) 2 시스템 표준 (ISO/IEC 13818-1), LDPC 코드 등과 같은) 포맷팅 및 인코딩 방법, 및 로그-가능도 비율 같은 디코딩 방법, 소프트 입력 소프트 출력(SISO) 디코더, 비터비 디코더는 공지되어 있으며, 본 명세서에서는 설명되지 않는다. 또한, 본 발명의 개념은 통상의 프로그래밍 기법을 이용하여 구현될 수 있으며, 따라서 이는 본 명세서에서는 설명되지 않는다. 또한, 위성 기반 시스템(예를 들어, DVB-S2) 및 전술한 ETSI Draft EN 302307, v.1.1.1, June 2004와의 친숙함이 가정되며, 본 명세서에서 상세히 설명되지 않는다. 마지막으로, 도면 상의 동일 부호는 동일 요소를 나타낸다.
본 발명의 개념의 설명을 계속하기 전에, LDPC 디코더를 위한 종래의 디코딩 알고리즘에 대한 간략한 검토가 제공된다. LDPC 디코더를 위한 디코딩 알고리즘은 때때로, 이 분야에 공지된 바와 같이, 메시지 전달 알고리즘 또는 신뢰 전파 알고리즘이라고 한다. 메시지 전달 알고리즘 자체는 다소 간단한 것으로 보인다. 구체적으로, 한 세트의 체크 노드
Figure 112007025055705-PCT00001
및 한 세트의 비트 노드
Figure 112007025055705-PCT00002
를 정의한다.
Figure 112007025055705-PCT00003
l 번째 반복 동안 체크 노드 m에서 비트 노드 n으로의 메시지라고 하고,
Figure 112007025055705-PCT00004
l 번째 반복 동안 비트 노드 n에서 체크 노드 m으로의 메시지라고 하며,
Figure 112007025055705-PCT00005
l번 반복 후 n 번째 비트의 후천적 로그-가능도 비(LLR)의 추정치라고 한다. LDPC 코드 블록의 채널 관측이 벡터 r로 표시되는 경우, 메시지 전달 알고리즘은 다음과 같다. 초기화시, 다음이 계산된다.
Figure 112007025055705-PCT00006
Figure 112007025055705-PCT00007
Figure 112007025055705-PCT00008
Figure 112007025055705-PCT00009
모든 및 에 대해, 라고 한다.
초기화 후, 즉 반복들
Figure 112007025055705-PCT00010
에 대해, 다음 계산이 각각의 체크 노드 업데이트 및 비트 노드 업데이트에 대해 수행된다. 각각의 체크 노드 업데이트에 대해:
Figure 112007025055705-PCT00011
Figure 112007025055705-PCT00012
에 대해, 다음을 계산한다.
Figure 112007025055705-PCT00013
여기서,
Figure 112007025055705-PCT00014
이다.
그리고, 각각의 비트 노드 업데이트에 대해:
Figure 112007025055705-PCT00015
Figure 112007025055705-PCT00016
에 대해, 다음을 계산한다.
Figure 112007025055705-PCT00017
디코딩 알고리즘을 위한 경판정(hard-decision) 및 종료 기준은 다음과 같다.
Figure 112007025055705-PCT00018
Figure 112007025055705-PCT00019
그렇지 않은 경우
여기서, 비트 시퀀스
Figure 112007025055705-PCT00020
가 패리티 체크 행렬 H에 의해 정의되는 모든 패리티 체크 방정식을 만족시키는 경우에 체크가 이루어진다. 그러한 경우, 반복이 종료되고, 그렇지 않은 경우,
Figure 112007025055705-PCT00021
라고 하고, 최대 반복 수에 이를 때까지 반복을 계속한다.
전술한 바와 같이, 메시지 전달 알고리즘 자체는 다소 간단하다. 그러나, LDPC 디코더의 실제 구현은 하드웨어 제한, LDPC 코드의 길이, 및 비트 노드와 체크 노드 간의 니어-랜덤 연결로 인해 항상 간단하지는 않다. 이것은 DVB-S2 위성 시스템에서 사용되는 LDPC 코드에 의해 구체적으로 설명되는데, 이는 본 발명의 개념을 설명하는 데 이용될 것이다. 그러나, 본 발명의 개념은 이에 한정되는 것은 아니며, 위성 시스템의 일부인지의 여부에 관계없이 모든 타입의 LDPC 디코더에 적용될 수 있다.
DVB-S2에서는, 4개의 가능한 변조 방식, 즉 QPSK(quadrature phase shift keying), 8-PSK, 16-APSK(amplitude phase shift keying) 및 32-APSK가 존재한다. 변조 전에, LDPC 코드가 내측 코드이고 BCH(Bose-Chaudhuri-Hochquenghem) 코드가 외측 코드인 직렬 연결 코드 방식을 이용하여 데이터가 인코딩된다. QPSK 변조를 제외하고, LDPC 코드워드 비트들은 또한 변조 전에 인터리브된다. 코딩 프로세스와 관련하여, BCH 코드는 매우 약한 코드인데, 이는 10-7 패킷 에러 레이트를 달성하기 위하여 LDPC 디코딩 프로세스 후에 잔여 에러들을 보정하는 데 사용된다. LDPC 코딩과 관련하여, 두 가지 타입의 LDPC 코드가 존재한다. 제1 타입은 64800 비트의 코드 블록 길이를 가진 "정상(normal) LDPC 코드"로서 본 명세서에서 지칭된다. 제2 타입은 16200 비트의 코드 블록 길이를 가진 짧은 LDPC 코드이다. 두 가지 타입의 코드는 유사한 구조를 가지므로, 정상 LDPC 코드가 본 명세서에서 설명된다. 단지 편의를 위해, 그리고 달리 언급되지 않는 한, "LDPC 코드"라는 용어의 임의의 후속 지칭은 정상 LDPC 코드를 의미한다. 그러나, 청구범위에서의 용어 "LDPC 코드"의 사용은 그와 같이 제한되는 것은 아니다.
DVB-S2 시스템에 대해(예를 들어, 전술한 ETSI Draft EN 302307, v.1.1.1, June 2004 참조), 도 2의 테이블 1에 도시된 바와 같이 이용 가능한 다수의 상이한 LDPC 코드 레이트가 존재한다. "레이트"로 표시된 테이블의 제1 열은 이들 상이한 LDPC 코드 레이트를 열거하고 있다. 다음 열 "K"는 특정 LDPC 코드 레이트로 LDPC 코딩 블록에 인코딩된 데이터의 양을 열거하고 있다. DVB-S2 시스템과 관련하여, 이 데이터는 전술한 BCH 코딩 데이터를 포함한다. 예를 들어, 1/4 코드 레이트에 대해, 인코딩되지 않은 데이터 블록은 16008 비트의 크기를 갖는다(테이블 1에 도시되지 않음). 이어서, 이 인코딩되지 않은 데이터 블록은 16200 비트(LDPC 1/4 코드 레이트에 대해 테이블 1 내의 K에 대한 각각의 값)의 BCH 코딩 블록으로 BCH 코딩된다. 이어서, 이 BCH 코딩 블록은 특정 코드 레이트로 LDPC 코딩된다. 이 예에서 LDPC 코드 레이트는 1/4이므로, 결과적인 LDPC 코딩 블록의 크기는 68400 비트이다(테이블 1에는 도시되지 않음). 대응 수신기는 수신된 DVB-S2 신호 포맷의 소정 부분에 포함된 데이터로부터 코드 레이트를 결정한다는 점에 유의해야 한다.
테이블 1로부터 관측할 수 있는 바와 같이, 1/4에서 9/10까지 범위의 11개의 가능한 코드 레이트가 존재한다. 그러나, DVB-S2에 정의된 바와 같이 상이한 레이트를 가진 코드는 상이한 패리티 체크 행렬을 갖는다. 따라서, 높은 레이트의 코드 워드는 낮은 레이트의 코드 워드의 펑크처링(puncturing)에 의해 얻어질 수 없다. 따라서, 큰 코드 블록 길이 및 다수의 코드 레이트는 LDPC 디코더의 하드웨어 구현을 매우 복잡하게 한다.
전술한 바와 같이, LDPC 디코더 구현을 위한 3개의 중요한 아키텍처가 존재한다. DVB-S2와 관련하여, LDPC 코드 블록 길이는 다소 큰 64800 비트이다. 또한, DVB-S2 디코더는 낮은 지연을 요구한다. 따라서, 완전 병렬 또는 직렬 아키텍처는 디코더 구현에 적합하지 않으며, 부분 병렬 아키텍처가 설계될 필요가 있다. 그러나, 효율적인 부분 병렬 LDPC 디코더를 구현하기 위한 일관된 설계 접근법이 존재하지 않는다.
이러한 어려움을 극복하기 위하여, 그리고 본 발명의 원리에 따르면, DVB-S2 패리티 체크 행렬들의 소정의 특성들을 이용함으로써 LDPC 디코더의 복잡성을 줄일 수 있다. 불규칙한 LDPC 코드에 대해, 하나의 바람직한 규칙은 체크 노드 등 급(Dc)의 분포가 가능한 한 균일해야 한다는 것이다. DVB-S2 LDPC 코드와 관련하여, 각각의 관련된 패리티 체크 행렬에 대해 각 체크 노드는 (Dc-1)의 등급을 가진 패리티 체크 행렬의 제1 체크 노드를 제외하고는 동일한 체크 노드 등급(Dc)을 갖는 것으로 결정될 수 있다. 따라서, DVB-S2에서의 LDPC 코드는 전술한 규칙을 따른다.
또한, 모든 DVB-S2 패리티 체크 행렬은 도 3에 도시된 바와 같이 형태 [A|T]를 갖는다는 것이 공지되어 있다. 행렬 A는 차수 M x K의 직사각 행렬인데, M=N-K이다. 행렬 A는 도 4에 더 도시되어 있다. 행렬 A 자체는 2개의 부행렬 A1 및 A2로 구성되는 패리티 체크 행렬로서 다루어질 수 있는데, 여기서 A1은 차수 M x L을 가진 행렬이고, A2는 차수 M x (K-L)을 가진 행렬이라는 점에 유의해야 한다. 행렬 A1 내의 비트 노드들은 DV1으로 표시되는 동일한 등급을 가지며, 마찬가지로 행렬 A2 내의 비트 노드들의 등급은 동일하고 DV2=3으로 고정된다. 이제, 행렬 T를 참조하면, 이 행렬은 도 5에 도시된 바와 같이 특수 M x M 하위 삼각 행렬이다. 이러한 타입의 구조는 때때로 계단 구조라고 하는데, 이는 주어진 등급 분포에 대해 등급 2, 즉 DV3=2의 비트 노드들을 제공한다. 더욱이, 이 하위 삼각 구조는 고속 LDPC 인코딩을 가능하게 한다는 점에 유의해야 한다(예를 들어, ETSI Draft EN 302307, v.1.1.1, June 2004 참조).
이제 도 6을 참조하면, 테이블 2는 상이한 DVB-S2 코드 레이트들에 대해 전 술한 L, DV1, q 및 Dc에 대한 값을 나타낸다. "레이트" 및 "K"로 표시된 테이블 2의 최초 두 열은 도 1의 테이블 1에 도시된 열들과 동일하다.
본 발명의 원리에 따르면, 행렬 A의 구조에 대한 추가적인 분석은 LDPC 디코더 구현시에 추가적인 빛을 발한다. 구체적으로, 360 비트 노드 {360 x k,...,360 x k+359}의 모든 그룹에 대해, 이들이 포함하는 체크 노드들은 인덱스 (360 x k)를 가진 제1 비트 노드의 체크 노드들에 의해 지정될 수 있다. 예를 들어, 그룹 내의 제1 비트 노드가 한 세트의 체크 노드
Figure 112007025055705-PCT00022
를 포함하는 경우(여기서 DV는 비트 노드들의 등급이다), 인덱스 (360 x k+m)을 가진 비트 노드는 다음과 같이 주어지는 한 세트의 체크 노드를 포함한다.
Figure 112007025055705-PCT00023
여기서,
Figure 112007025055705-PCT00024
이다.
전술한 관측에 비추어, 그리고 본 발명의 원리에 따르면, 비트 노드들 및 체크 노드들은 비트 노드 업데이트 또는 체크 노드 업데이트 동작을 동시에 수행하기 위하여 다수의 그룹으로 각각 구성된다. 이러한 특정 예와 관련하여, 그리고 수학식 6으로 나타낸 바와 같이, 모든 360 비트 노드
Figure 112007025055705-PCT00025
는 하나의 그룹으로서 처리될 수 있는데, 즉 비트 노드들은 다음과 같이 연속적으로 그룹화된다.
n∈{0,1,...,(K/360)_1}에 대해, n 번째 비트 노드 그룹은 비트 노드
Figure 112007025055705-PCT00026
를 포함하게 된다. 이들 비트 노드는 본 명세서에서 체계적 비트 노드로도 지칭된다.
체크 노드들과 관련하여, 체크 노드들은 다음과 같이 q 그룹들로 재배열된다(여기서, 전술한 바와 같이,
Figure 112007025055705-PCT00027
, 즉 q는 코드 레이트의 함수로서 변한다).
그룹 0:
Figure 112007025055705-PCT00028
그룹 1:
Figure 112007025055705-PCT00029
그룹 q-2:
Figure 112007025055705-PCT00030
그룹 q-1:
Figure 112007025055705-PCT00031
LDPC 코딩 블록은 N=64800 비트의 크기를 가지므로, 본 발명의 개념을 더 설명하기 위하여, 보다 작은 크기의 A 행렬이 후술된다. 도 7은 본 발명의 원리에 따라 재구성된 행렬(10)(A 형태의 행렬)을 나타낸다. 행렬(10)은 다음 파라미터들을 가진 LDPC 코드에 대한 것이다.
Figure 112007025055705-PCT00032
Figure 112007025055705-PCT00033
L=360.
각각의 정사각형(11)은 차수 360 x 360의 부행렬을 나타낸다. 본 발명의 개념 이외에, 도 7에 도시된 표시는 유사 코드 구성과 관련하여 이 분야에 공지되어 있다는 점에 유의해야 한다(예를 들어, David J. C. Mackay, Simon T. Wilson and Matthew C. Davey, "Comparison of Constructions of irregular Gallager Codes", IEEE Transactions on Communications, Vol. 47, pp. 1449-1454, Oct. 1999; and D. Sridhara, T. Fuja and R. M. Tanner, "Low density parity check codes from permutation matrices," Conf. On Info. Science and Sys., The John Hopkins University, March 2001 참조). 구체적으로, 빈 정사각형은 요소들이 모두 0인 행렬을 나타내고, 정사각형 내의 원 내의 정수는 주변 정사각형 상에 중첩된 순환 항등 행렬들의 수를 나타낸다. 숫자 1은 특정 오프셋을 가진 단일 순환 항등 행렬을 나타내지만, 숫자 2는 2개의 순환 항등 행렬의 조합을 나타낸다. 이것은 도 8 및 9에 더 도시되어 있다. 먼저 도 8을 참조하면, 이 도면은 좌측 시프트된 순환 항등 행렬과 관련된 상이한 오프셋들을 나타낸다. 행렬 21은 항등 행렬을 나타낸다. 이것은 본 명세서에서 시프트가 없는, 즉 0의 오프셋을 가진 순환 항등 행렬로도 지칭된다. 도 8에서 좌에서 우로 이동하면, 행렬 21은 한 번 좌측 시프트되어, 행렬 22가 된다. 행렬 22의 요소 24의 위치를 행렬 21에서의 그의 이전 위치와 비교하면, 요소 24는 동일 행에 나타나지만, 좌측으로 1 열 시프트되었다는 것을 알 수 있다(사실상 열들은 랩어라운드됨). 따라서, 행렬 22는 1의 오프셋을 가진 순환 항등 행렬이다. 행렬 22는 다시 한번 좌측 시프트되어 행렬 23이 된다. 다시, 도 8로부터, 요소 24는 행렬 22에서의 그의 이전 위치로부터 좌측으로 1 열 시프트되 었다는 것을 알 수 있다. 행렬 23은 2회 좌측 시프트의 결과이므로, 행렬 23은 2의 오프셋을 가진 순환 항등 행렬이다. 다른 오프셋들은 유사한 방식으로 도출될 수 있으며, 도 8에는 도시되지 않았지만, 우측 시프팅 동작들도 다른 방향에서 동일하게 수행될 수 있다. 편의를 위해, 본 명세서에서는 좌측 시프트 순환 항등 행렬이 행렬 I(y)로서 표시되며, 위첨자의 값은 오프셋의 값을 나타낸다.
이제, 도 9를 참조하면, 조합된 순환 항등 행렬의 개념이 도시되어 있다. 조합된 순환 항등 행렬은 둘 이상의 순환 항등 행렬의 조합이다. 도 9와 관련하여, 이 도면은 두 순환 항등 행렬의 조합을 나타낸다. 구체적으로, 행렬 26은 도 8의 행렬 21 및 22의 조합이고, 행렬 27은 도 8의 행렬 22 및 23의 조합이며, 행렬 28은 도 8의 행렬 21 및 23의 조합이다. 다른 조합들은 유사한 방식으로 도출될 수 있다.
위에 비추어, 도 10은 다시 도 7의 행렬 10(A 형태의 행렬)을 나타내는데, 여기에서는 특정 좌측 시프트된 순환 항등 행렬들 및 조합된 순환 항등 행렬들의 패턴이 도시되어 있다. 부행렬 내에 라인들이 존재하는 경우, 이것은 라인이 가로지르는 대응 부행렬 요소들이 "1"의 값을 가지며 나머지 부행렬 요소들은 "0"의 값을 갖는다는 것을 나타낸다. 내부에 라인이 없는 부행렬에 대해, 이것은 요소들이 모두 0인 부행렬을 나타낸다.
결과적으로, 도 7 및 10으로부터, 모든 LDPC 코드에 대해, 패리티 체크 행렬의 A 행렬은 세 가지 타입의 차수 360 x 360의 부행렬들을 포함한다는 것을 알 수 있다.
- 0 행렬
- 0≤y≤359에 대해 순환 항등 행렬 I(y); 및
- x≠y 및 0≤x,y≤359에 대해, 조합된 순환 항등 행렬 I(x)+I(y).
이제, LDPC 패리티 체크 행렬을 기술하기 위한 새로운 방법이 존재한다. 구체적으로,
Figure 112007025055705-PCT00034
이 체크 노드 그룹 m 및 비트 노드 그룹 n에 대응하는 패리티 체크 행렬의 A 행렬의 부행렬을 표시하고 0이 아닌 부행렬들만을 표시하도록 한다. 패리티 비트 누산기 테이블의 어드레스 내의 n 번째 행에 대해(본 발명의 개념 이외에, 패리티 비트 누산기의 어드레스는 ETSI Draft EN 302307, v.1.1.1, June 2004에 기술되어 있다), n 번째 비트 노드 그룹에 대응하는 한 세트의 부행렬이 얻어진다. 테이블의 n 번째 행 내의 주어진 수 x에 대해, 대응 체크 노드 그룹은 m=x mod q이고, 좌측 순환 시프트 수의 값은
Figure 112007025055705-PCT00035
이며, 대응 부행렬은
Figure 112007025055705-PCT00036
이다. 예를 들어, 도 6으로부터, 레이트 1/2 코드에 대해, q의 값은 90이고, ETSI Draft EN 302307, v.1.1.1, June 2004의 부록 B로부터, 패리티 비트 누산기 테이블의 어드레스의 0 번째 행(n=0)은 다음과 같다.
Figure 112007025055705-PCT00037
(ETSI 드래프트에서의 명명법에 의하면, 레이트 1/2 코드에 대한 패리티 비트 누산기 테이블의 0 번째 행은 열 내에 "1"이 존재하는 0 번째 비트 노드에 대한 패리티 행렬의 행들에 대응한다.)
따라서, A 행렬에 대한 대응 부행렬들은 다음과 같다.
Figure 112007025055705-PCT00038
Figure 112007025055705-PCT00039
Figure 112007025055705-PCT00040
마찬가지로, (다시, ETSI Draft EN 302307, v.1.1.1, June 2004의 부록 B로부터)동일 패리티 비트 누산기 테이블로부터 첫 번째 행(n=1)을 고려한다.
Figure 112007025055705-PCT00041
따라서, A 행렬에 대한 대응 부행렬들은 다음과 같다.
Figure 112007025055705-PCT00042
Figure 112007025055705-PCT00043
Figure 112007025055705-PCT00044
첫 번째 행과 관련하여 3033 및 7263에 대한 계산들은 모두 동일 부행렬
Figure 112007025055705-PCT00045
을 산출하지만, 각각 상이한 순환 항등 행렬 I(33) 및 I(80)을 갖는다. 따라서, 전술한 바와 같이, 부행렬
Figure 112007025055705-PCT00046
은 이들 2개의 순환 항등 행렬의 합이다.
전술한 바와 같이, 모든 DVB-S2 패리티 체크 행렬은
Figure 112007025055705-PCT00047
의 형태를 갖는다. 본 발명의 원리에 따르면, 행렬 T에서, 비트 노드들은 행렬 A 내의 비트 노드들에 비해 상이한 방식으로 그룹화된다.
Figure 112007025055705-PCT00048
에 대해, n 번째 비트 노드 그룹은 다음과 같은 비트 노드를 포함한다.
Figure 112007025055705-PCT00049
일 비트 노드 그룹 내의 패리티 비트 노드들의 불연속성은 패리티 체크 방정식들의 재배열에 기인한다. 결과적인 T 행렬의 예가 도 11에 도시되어 있다. 도 11로부터, 행렬 T 내에 3개의 가능한 차수 360 x 360의 정방 행렬이 존재한다는 것을 알 수 있다.
- 0 행렬;
- 항등 행렬 I(0); 및
- 도 12에 도시된 차수 360 x 360의 특수 부행렬을 포함하는 정방 행렬 H(0,(N/360)-1).
이제, 전술한 패리티 체크 행렬의 재배열은 본 발명의 원리에 따른 LDPC 디 코더를 구현하는 데 이용된다. 본 발명의 원리에 따른 통신 시스템의 예시적인 일부가 도 13에 도시되어 있다. 도 13으로부터 알 수 있는 바와 같이, 수신기(105)에 의해 신호(104)가 수신된다. 신호(104)는 제어 시그널링, 콘텐츠(예를 들어, 비디오) 등을 나타내는 정보를 전달한다. 이 예와 관련하여, 신호(104)는 안테나(도시되지 않음)에 의해 수신된 후의 DVB-S2 다운링크 위성 신호를 나타내는 것으로 가정한다. 수신기(105)는 본 발명의 원리에 따른 신호(104)를 처리하고(후술함), 텔레비젼(TV) 상에 표시하기 위해 특정 콘텐츠를 텔레비젼으로 표현되는 바와 같은 멀티미디어 엔드포인트로 전달하기 위한 신호(106)를 제공한다.
이제 도 14를 참조하면, 본 발명의 원리에 따른 수신기(105)의 예시적인 일부가 도시되어 있다. 수신기(105)는 프론트 엔드 필드(110), 아날로그/디지털(A/D) 컨버터(115), 복조기(120), LDPC 디코더(125) 및 BCH 디코더(135)를 포함한다. 프론트 엔드 필터(110)는 수신된 신호(104)를 (예를 들어, 위성 전송 대역으로부터) 하향 변환하고, 필터링하여, 근 기저 대역 신호를 A/D 컨버터(115)로 제공하며, A/D 컨버터는 하향 변환된 신호를 샘플링하고, 이 신호를 디지털 도메인으로 변환하여, 샘플들의 시퀀스인 신호(116)를 복조기(120)로 제공한다. 복조기는 신호(116)의 복조를 수행하고(캐리어 복구 포함), 복조된 신호(121)를 LDPC 디코더(125)로 제공하며, LDPC 디코더는 본 발명의 원리에 따라 복조된 신호 포인트 스트림(121)을 디코딩하여, BCH 코딩 신호 또는 데이터 스트림을 나타내는 신호(126)를 제공한다. 신호(126)는 신호(136)로 표현되는 바와 같은 전송된 데이터의 복구를 위해 BCH 디코더(135)에 인가된다. 신호(136)로부터의 데이터의 적어도 일부는 최종적으로 신호(106)를 통해 TV(90)로 제공된다(도 14에는 도시되지 않음). (이와 관련하여, 수신기(105)는 TV(90)에 인가하기 전에 데이터를 추가 처리하고, 그리고/또는 데이터를 TV(90)로 직접 제공할 수 있다.)
본 발명의 원리에 따른 LDPC 디코더(125)의 예시적인 실시예가 도 15에 도시되어 있다. LDPC 디코더(125)는 로그-가능도 비(LLR) 컴퓨팅 소자(205), LLR 버퍼(210), 멀티플렉서(mux; 215), 에지 메모리(220), 순환 시프터(225, 235), 복수의 체크 노드 처리 유닛(그룹 CPU 처리; 230), 복수의 비트 노드 처리 유닛(그룹 BPU 처리; 240), 반복 종료 판정 소자(245) 및 제어기(290)를 포함한다. 제어기는 저장 프로그램 제어식 프로세서(예를 들어, 마이크로프로세서 및 관련 메모리) 또는 상태 머신 등을 나타낸다.
LLR 컴퓨팅 소자(205)는 복조된 신호 포인트 스트림 신호(121)를 수신하고, 이 분야에 공지된 바와 같이 LLR을 계산하여, 수신된 LDPC 코딩 블록을 나타내는 계산된 LLR 값을 나타내는 신호(206)를 제공한다. 구체적으로, LLR 컴퓨팅 소자(205)는 변조 방식 및 수신된 신호의 신호 대 잡음비에 기초하여
Figure 112007025055705-PCT00050
로서 코드워드 비트들의 LLR을 계산한다. 간명화를 위해, 이 기능을 구현하기 위해 탐색표(도시되지 않음)가 사용된다. 또한, LLR 컴퓨팅 소자(205)는 LLR 값들을 신호(206)를 통해 LLR 버퍼(210)로 전송하기 전에 디인터리브한다(전술한 바와 같이, QPSK 변조가 이용되지 않은 경우, LDPC 코딩 비트 스트림은 변조 전에 인터리브되었다). LLR 버퍼(210)는 기억 소자이며, 예를 들어 수 신된 LDPC 코딩 블록을 나타내는 데이터를 교대로 저장하기 위한 더블 버퍼 구조를 포함한다. 따라서, 하나의 버퍼가 채워지고 있을 때, 다른 버퍼로부터의 데이터는 신호(211)를 통해, 이전 수신된 LDPC 코딩 블록의 디코딩을 위해 처리된다. 행렬 A의 체계적 비트 노드들에 대해 LLR 버퍼에서 사용하기 위한 예시적인 메모리 구조(315)가 도 16에 도시되어 있으며, 행렬 T의 비트 노드들에 대해 LLR 버퍼에서 사용하기 위한 예시적인 메모리 구조(320)가 도 17에 도시되어 있다. 도 16 및 17로부터, 요구되는 메모리 워드의 수는 N/360=64800/360=180인데, 여기서 초기 채널 정보
Figure 112007025055705-PCT00051
를 저장하기 위해 6 비트가 필요한 것으로 가정하면, 일 메모리 워드의 비트 폭은 360 x 6=2160 비트이다. 따라서, LLR 버퍼(210)는 LDPC 코딩 블록들을 신호(211)를 통해 mux(215)로 제공한다. mux는 점선 화살표로 간단히 표시된 바와 같이 LDPC 디코더(125)의 다양한 소자를 제어하는 제어기(290)로 표시되는 바와 같은 프로세서에 의해 제어된다. mux(215)는 신호(216)를 통해 세 가지 타입의 데이터 중 하나, 즉 디코딩을 위한 수신된 LDPC 코딩 블록(신호(211)을 통해), 비트 노드 처리 데이터(신호(241)을 통해), 또는 체크 노드 처리 데이터(신호(236)을 통해)를 에지 메모리(220)에 제공한다.
이제, LDPC 디코딩을 수행하기 위한 LDPC 디코더(125)에서 이용되는 전체 프로세스의 예시적인 흐름도를 나타내는 도 18을 참조해야 한다. 단계 405에서, LDPC 코딩 블록이 저장을 위해 LLR 버퍼(210)에서 에지 메모리(220)로 제공된다. 단계 410 및 415에서, LDPC 디코딩이 수행된다. 구체적으로, 체크 노드 업데이트(단계 410) 및 비트 노드 업데이터(단계 415)가 에지 메모리(220)(전술함)에 저장 된 데이터 상에 동작한다. 단계 420에서, 예를 들어 위의 수학식 5로부터 디코딩 프로세스가 종료되어야 하는지를 체크한다. 프로세스가 종료되는 경우, 실행은 단계 405로 복귀하여 다음 LDPC 코딩 블록의 디코딩을 시작하고, 그렇지 않은 경우, 단계 410 및 415를 통해 다른 라운드의 체크 노드 및 비트 노드 업데이트로 디코딩을 계속한다. 도 18의 흐름도에는 간략화를 위해 에러 조건이 도시되지 않았다는 점에 유의해야 한다.
전술한 바와 같이, 에지 메모리(220)는 LDPC 코딩 데이터를 저장하며, 도 18에 도시된 체크 노드 업데이트 및 비트 노드 업데이트 단계들 양자에서 액세스된다. 에지 메모리(220)는 기억 소자를 나타낸다. 에지 메모리(220)는 고속 액세스를 허용하는(비록 설계 복잡도는 더 높지만) 레지스터를 이용하여 구현될 수 있지만, 바람직하게는 LDPC 코딩 블록의 길이가 주어질 때 메모리 뱅크가 보다 적절한 구현이다. LDPC 디코딩 프로세스에서, 메시지들이 비트 노드와 체크 노드 사이에서 이분 그래프의 에지를 통해 전달된다. 이것은 예시적인 이분 그래프의 일부를 나타내는 도 19에 개념적으로 도시되어 있다. 예를 들어, 비트 노드 n가 에지(40)에 의해 체크 노드 m에 결합되는데, 이는 그들 사이의, 비트 노드 메시지(41) 및 체크 노드 메시지(42)로 표시되는 바와 같은 메시지들의 전달을 가능하게 한다. LDPC 디코딩 프로세스에 사용되는 메모리는 체크 노드와 비트 노드 간의 에지와 연관되므로, 이 메모리는 본 명세서에서 에지 메모리로 지칭된다. 따라서, 에지 메모리(220)는 신호(236)를 통해 체크 노드에서 비트 노드로의 메시지
Figure 112007025055705-PCT00052
를 저장 하거나, 신호(241)를 통해 비트 노드에서 체크 노드로의 메시지
Figure 112007025055705-PCT00053
를 저장한다. 구체적으로, 그리고 도 18의 흐름도로부터 알 수 있는 바와 같이, LDPC 디코더(125)는 적어도 2개의 단계, 즉 체크 노드 업데이트 단계(예를 들어, 도 18의 단계 410) 및 비트 노드 업데이트 단계(예를 들어, 도 18의 단계 415)를 갖는다. 체크 노드 업데이트 단계의 개시시에, 에지 메모리(220)의 메모리 위치에
Figure 112007025055705-PCT00054
가 저장되고, 체크 노드 업데이트 단계의 종료시에
Figure 112007025055705-PCT00055
가 계산되어 동일 메모리 위치에 저장된다. 마찬가지로, 비트 노드 업데이트 단계에서,
Figure 112007025055705-PCT00056
가 판독되고,
Figure 112007025055705-PCT00057
가 계산되어 동일 메모리 위치에 저장된다. 따라서, 부분 병렬 아키텍처에서, 동일 메모리 위치가 LDPC 디코더의 단계에 따라
Figure 112007025055705-PCT00058
또는
Figure 112007025055705-PCT00059
를 저장하는 데 사용된다.
본 발명의 원리에 따르면, 에지 메모리(220)는 전술한 패리티 행렬의 재구성에 따라 비트 노드들과 관련하여 또는 체크 노드들과 관련하여 구성될 수 있다. 특정 패리티 체크 행렬에 대해 에지들의 수는 일정하므로 필요한 전체 메모리 양은 두 경우에서 동일하다는 점에 유의해야 한다.
일 실시예에서, 에지 메모리(220)는 비트 노드들과 관련하여 예시적으로 구성된다. 이 경우, 순환 시프트된 항등 행렬(전술함)에 대응하는 모든 메시지를 저장하기 위해 하나의 메모리 워드가 사용된다. 비트 노드 그룹과 연관된 메모리 워드들은 연속적인 어드레스 위치들에 저장되는데, 이는 비트 노드 업데이트를 간편하게 한다. 에지 메모리(220)에 사용하기 위한 예시적인 메모리 구조(325)가 도 20에 도시되어 있다. 에지 메모리(220)의 메모리는 비트 노드들과 관련하여 구성되므로, 이 메모리는 비트 노드 메모리 뱅크로도 지칭될 수 있다.
다시 도 15를 참조하면, 에지 메모리(220)에 저장된 데이터는 신호(221)를 통해 비트 노드 처리 경로 또는 체크 노드 처리 경로로 제공된다. 체크 노드 처리 경로와 관련하여, 이 경로는 체크 노드 업데이트 단계(도 18의 단계 410)에서 액티브하다. 구체적으로, 데이터(초기 LDPC 코딩 데이터 또는 후속 메시지 데이터인지에 관계없이)
Figure 112007025055705-PCT00060
가 순환 시프터(225)를 통해 그룹 CPU 처리(230)로 제공된다. 에지 메모리(220)는 비트 노드들과 관련하여 구성되므로, 순환 시프터(225)는 메모리 워드 내의 데이터를 순환 시프트하여, 하나의 체크 노드 그룹에 대한 데이터가 정렬되게 한다. 이것은 체크 노드 그룹 0/비트 노드 그룹 0에 대한 순환 시프트의 양을 나타내는 도 21에 도시되어 있다. 그룹 CPU 처리(230)는
Figure 112007025055705-PCT00061
를 계산하고 이를 순환 시프터(235)로 제공하기 위한 360 체크 노드 처리 유닛들(후술함)을 포함하는데, 순환 시프터는 메모리 워드 내의 데이터를 재배열하여 하나의 비트 노드 그룹에 대한 데이터가 정렬되게 한다. 순환 시프터(235)는 신호(236)를 통해
Figure 112007025055705-PCT00062
를 mux(215) 및 신호(216)을 통해 에지 메모리(220)로 제공한다. 시간 도메인에서 하나의 순환 시프터의 동작을 다중화함으로써 하나의 순환 시프터가 2개의 순환 시프터 대신 사용될 수 있다는 점에 유의해야 한다. 이제 비트 노드 처리 경로를 참조하면, 이 경로는 비트 노드 업데이트 단계(도 18의 단계 415)에서 액티브하다. 구체적으로, 데이터
Figure 112007025055705-PCT00063
가 그룹 BPU 처리(240)로 제공된다. 그룹 BPU 처리(240)는
Figure 112007025055705-PCT00064
를 계산하고
Figure 112007025055705-PCT00065
를 신호(241)를 통해, mux(215) 및 신호(216)를 통해 에지 메모리(220)로 제공하기 위한 360 비트 노드 처리 유닛들(후술함)을 포함한다.
전술한 바와 같이, 그룹 CPU 처리(230)는 360 체크 노드 처리 유닛들을 포함한다. 예시적인 체크 노드 처리 유닛(CPU) 230-J(0<J≤360)이 도 22에 도시되어 있다. CPU(230-J)는 한 세트의 입력 메시지
Figure 112007025055705-PCT00066
를 처리하여 대응하는 출력 메시지 세트
Figure 112007025055705-PCT00067
를 제공한다. 전술한 바와 같이, 수학식 3은 출력 메시지 세트를 생성하기 위해 LDPC 디코딩에 이용된다. 그러나, 수학식 3 내의 정확한 공식이 구현되는 경우, 각 체크 노드 처리 유닛의 복잡성은 증가한다. 실제로, 최대 가능 체크 노드 등급은 30이므로, 가산기 어레이 및 모든 함수
Figure 112007025055705-PCT00068
의 구현은, 함수
Figure 112007025055705-PCT00069
가 간단한 탐색표에 의해 구현될 수 있다 하여도, 매우 복잡하게 된다. 체크 노드 처리 유닛의 복잡성을 줄이기 위하여, CPU(230-J)는 다음의 접근법을 구현한다. 구체적으로,
Figure 112007025055705-PCT00070
가 체크 노드 처리 유닛(CPU)으로의 입력 메시지 세트인 것으로 가정한다. 이어서, 다음을 계산한다.
Figure 112007025055705-PCT00071
Figure 112007025055705-PCT00072
이제, 세트
Figure 112007025055705-PCT00073
에서 3개의 최소값을 선택하고, 이들의 대응 인덱스를
Figure 112007025055705-PCT00074
라고 한다. 이후, 다음 4개의 값이 계산된다.
Figure 112007025055705-PCT00075
Figure 112007025055705-PCT00076
Figure 112007025055705-PCT00077
Figure 112007025055705-PCT00078
.
여기서,
Figure 112007025055705-PCT00079
,
Figure 112007025055705-PCT00080
.
이어서, 한 세트의 출력 메시지
Figure 112007025055705-PCT00081
가 다음과 같이 계산된다.
Figure 112007025055705-PCT00082
여기서,
Figure 112007025055705-PCT00083
. 전술한 접근법에서, 입력 메시지들 중 3개의 최소값만이 CPU의 출력 메시지를 계산하는 데 사용된다. 시뮬레이션은 이러한 접근법에 기인한 성능 손실이 DVB-S2에서의 모든 LDPC 코드에 대해 사소하다는 것을 보여준다.
이제 비트 노드 처리를 참조하면, 그룹 BPU 처리(240)는 360 비트 노드 처리 유닛들을 포함한다. 예시적인 비트 노드 처리 유닛(BPU; 240-I)(0<I≤360)이 도 23에 도시되어 있다. BPU(240-I)는 한 세트의 입력 메시지
Figure 112007025055705-PCT00084
를 처리하여 대응하는 출력 메시지 세트
Figure 112007025055705-PCT00085
를 제공한다. 비트 노드 처리 동작은 다소 간단하며, 도 24에서 더 설명된다. 도 24에서, LLR이라는 용어는 LLR 버퍼(210)로부터 신호(211)를 통해 제공되는 관련 비트 노드의 로그-가능 도 비를 나타낸다.
LDPC 디코더(125)의 최종 소자는 전술한 도 18의 단계 420을 구현하는 반복 종료 판정 소자(245)이다. 도 15 및 23으로부터 알 수 있는 바와 같이, 신호(242)가 사용을 위해 비트 노드 처리 경로에서 반복 종료 판정 소자(245)로 제공된다. LDPC 디코딩이 종료되는 경우, 결과적인 LDPC 디코딩 데이터는 신호(126)를 통해 전술한 BCH 디코더(135)로 제공된다. 반복 종료 판정 소자(245)는 LDPC 디코딩 프로세스를 계속하거나, 예를 들어 다음 LDPC 코딩 블록에 대해 새롭게 시작하는 것과 관련하여 제어기(290)로 시그널링(도시되지 않음)을 제공한다.
전술한 바와 같이, DVB-S2는 소정의 패리티 행렬로 다수의 코드 레이트를 지원하며, 수신기는 수신된 DVB-S2 신호 포맷의 소정 부분에 포함된 데이터로부터 코드 레이트를 결정한다. 이와 관련하여, 제어기(290)는 결정된 변조 타입을 이용하여 전술한 LLR 계산 및 (DVB-S2에 정의된 바와 같은) 상이한 인터리빙 방식에 대한 상이한 탐색표(도시되지 않음)를 선택한다. 제어기(290)는 또한 본 발명의 원리에 따른 LDPC 디코더(125)를 구성하여, 전술한 원리에 따라 재구성된 패리티 행렬들에 따라 상이한 코드 레이트로 수신된 LDPC 코딩 신호들을 처리한다. 예를 들어, 전술한 부행렬 계산치 (H(m,n))는 도 6의 테이블 2에 도시된 바와 같은 상이한 파라미터들에 대해 수신된 LDPC 코딩 데이터를 처리하는 데 후속 사용하기 위해 메모리(예를 들어, 도 15의 구성 메모리 295)에 선험적으로 저장될 수 있다.
LDPC 디코더(125)의 다른 예시적인 실시예가 도 25에 도시되어 있다. 이 배열은 도 15에 도시된 것과 유사하며, 에지 메모리(220)가 체크 노드들과 관련하여 구성된다(또한 체크 노드 메모리 뱅크로도 지칭될 수 있다)는 점을 제외하고는 유사한 방식으로(예를 들어, 도 18, 22, 23 및 24 참조) 기능한다. 따라서, 이제 2개의 순환 시프터(225, 235)는 그룹 BPU 처리(240)의 전후에 배치된다. 다시, 하나의 순환 시프터의 동작을 시간 도메인에서 다중화함으로써 하나의 순환 시프터가 2개의 순환 시프터 대신 사용될 수 있다는 점에 유의해야 한다.
체크 노드들과 관련하여 에지 메모리(220)를 구성한다는 점에서, 하나의 체크 노드 그룹에 대응하는 체크 노드 메모리가 구성되며, 하나의 메모리 위치, 예를 들어 워드를 이용하여 특정 순환 항등 행렬에 대응하는 모든 메시지를 저장한다. 즉, 하나의 메모리 워드는 특정 순환 항등 행렬과 연관된 에지들을 통해 전송된 모든 메시지를 저장한다. 전술한 바와 같이, 그리고 도 6의 테이블 2에 도시된 바와 같이, LDPC 코드들에 대해, 모든 체크 노드의 등급 Dc는 체크 노드 등급 (Dc-1)을 갖는 0 번째 체크 노드를 제외하고는 동일하다. 일례로서, 1/2 레이트 LDPC 코드를 이용하는 아래의 예를 고려하는데, 여기서 도 6의 테이블 2로부터, Dc=7이고, 63 번째 체크 노드 그룹은 (전술한 바와 같이 계산되는) 패리티 체크 행렬 내의 부행렬인 다음의 정방 행렬에 대응한다.
Figure 112007025055705-PCT00086
Figure 112007025055705-PCT00087
Figure 112007025055705-PCT00088
63 번째 체크 노드 그룹에 대응하는 에지 메모리(220) 내의 예시적인 메모리 뱅크(305)가 도 26에 도시되어 있다. 메모리 뱅크(305)의 각각의 행이 단일 메모리 워드로서 처리되는 경우, Dc=7 메모리 워드들만이 도시된 바와 같이 체크 노드 그룹에 대해 요구된다. 실제로, 이어서 모든 체크 노드에 대한 모든 메모리 뱅크가 구성되고 선형 방식으로 어드레스된다. 에지 메모리(220)에 대한 이러한 예시적인 메모리 구조(310)는 도 27에 도시되어 있다. 메모리 구조(310)에 대한 에지 메모리(220)의 어드레스 공간은
Figure 112007025055705-PCT00089
이다. 즉, 어드레스 공간의 크기는 (q x Dc)이다. 상이한 LDPC 코드 레이트에 대해 요구되는 메모리 공간은 도 28의 테이블 3에 도시되어 있다. 테이블 3으로부터 알 수 있듯이, 요구되는 최대 메모리 워드 수는 792이다. 각각의 비트 노드 메시지 또는 체크 노드 메시지가 6 비트 폭인 것으로 다시 가정하는 경우, 메모리 워드의 비트 폭은 360 x 6=2160 비트이다.
본 발명의 개념의 다른 예시적인 실시예가 도 29에 도시되어 있다. 이 예시적인 실시예에서, 수신기(도시되지 않음)에서 사용하기 위한 집적 회로(IC; 705)는 LDPC 디코더(720), 및 버스(751)에 결합되는 적어도 하나의 레지스터(710)를 포함한다. 예를 들어, IC(705)는 집적 복조기/디코더이다. 그러나, 본 발명의 개념과 관련된 IC(705)의 부분들만이 도시되어 있다. 예를 들어, 아날로그/디지털 컨버 터, 필터, 디코더 등은 간략화를 위해 도시되지 않았다. 버스(751)는 프로세서(750)로 표현되는 바와 같은 수신기의 다른 컴포넌트들과의 통신을 제공한다. 레지스터(710)는 IC(705)의 하나 이상의 레지스터를 나타내는데, 각각의 레지스터는 IC(705)의 동작을 제어하기 위한 비트(709)로 표현되는 바와 같은 하나 이상의 비트를 포함한다. IC(705)의 레지스터들 또는 그들의 일부는 판독 전용, 기입 전용 또는 판독/기입용일 수 있다. LDPC 디코더(720)는 내부 버스(711)를 통해 레지스터(710)에 결합되는데, 내부 버스는 다른 신호 경로 및/또는 이 분야에 공지된 바와 같이 LDPC 디코더(720)와 레지스터(710)를 인터페이스하기 위한 IC(705)의 컴포넌트를 나타낸다. 본 발명의 원리에 따르면, LDPC 디코더(720)는 전술한 그룹 CPU 및 그룹 BPU를 포함한다. 도 14와 관련하여, IC(705)는 IC(705)의 입력 핀 또는 리드를 통해 처리를 위한 IF 신호(701)(예를 들어, 도 14의 116)를 수신한다. 이 신호의 파생 신호가 전술한 바와 같은(예를 들어, 도 15 및 24) 본 발명의 원리에 따른 LDPC 디코딩을 위해 LDPC 디코더(720)로 인가된다. LDPC 디코더(720)는 LDPC 디코딩 비트 스트림인 신호(721)를 제공한다. IC(705)는 신호(706)으로 표현되는 바와 같은 하나 이상의 복구 신호를 제공한다. 예를 들어, 신호(706)는 IC(705)의 BCH 디코더(도시되지 않음)로부터의 신호(136)를 나타낸다. IC(705)의 다른 변형에 있어서, 신호(706)는 도 13의 신호(106)를 나타낸다.
전술한 바와 같이, 그리고 본 발명의 원리에 따라, 다양한 상이한 코드 레이트를 처리할 수 있는 LDPC 디코더가 설명되고 도시된다. 또한, 전술한 순환 시프트된 항등 행렬은 치환 행렬로 등가적으로 일반화될 수 있다는 점에 유의해야 한 다. 이 경우, 전술한 순환 시프터는 치환 네트워크로 대체된다.
위에 비추어, 위성 통신 시스템과 관련하여 설명되었지만, 본 발명의 개념은 이에 한정되지 않는다는 점에 유의해야 한다. 예를 들어, 도 13의 요소들은 다른 타입의 시스템 및 다른 형태의 멀티미디어 엔드포인트를 나타낼 수 있다. 예를 들어, 위성 라디오, 지상 방송, 케이블 TV 등. 또한, 본 명세서에서 단일 복조기와 관련하여 설명되었지만, 본 발명의 개념은 정보가 상이한 신호 계층들 상에서 전달될 수 있는 다중 변조 수신기에 적용될 수 있다는 점에 유의해야 한다. 예를 들어, 계층화된 변조 수신기, 계층 구조 변조 수신기, 또는 이들의 조합. 실제로, 본 발명은 LDPC 디코딩이 수행되는 임의 타입의 수신기에 적용할 수 있다. 따라서, 본 발명의 개념은 DVB-S2 LDPC 코드로 한정되지 않는다.
따라서, 위의 설명은 단지 본 발명의 원리를 설명하고자 하는 것이며, 따라서 이 분야의 전문가들은 본 명세서에는 명시적으로 설명하지 않았지만 본 발명의 원리를 구현하고 본 발명의 사상 및 범위 내에 있는 다양한 대안적인 배열을 구상할 수 있다는 것을 이해할 것이다. 예를 들어, 개별 기능 소자들과 관련하여 설명되었지만, 이러한 기능 소자들은 하나 이상의 집적 회로(IC) 상에 구현될 수 있다. 마찬가지로, 개별 소자들로서 도시되었지만, 소자들 중 임의 또는 모두는 저장 프로그램 제어식 프로세서, 예를 들어 도 14, 15 및/또는 24 등에 도시된 소자들 중 하나 이상에 대응하는 관련 소프트웨어 실행하는 예를 들어 디지털 신호 프로세서(DSP) 또는 마이크로프로세서에서 구현될 수 있다. 더욱이, 개별 소자들로서 도시되었지만, 그 안의 소자들은 그의 임의 조합으로 상이한 유닛에 분산될 수 있다. 예를 들어, 수신기(105)는 TV(90)의 일부이거나, 수신기(105)는 콘텐츠를 네트워크의 다른 노드 및/또는 수신기로 재전송하는 분산 시스템 내에 더 상향에, 예를 들어 헤드 엔드에 위치할 수 있다. 따라서, 예시적인 실시예에 대한 다양한 변형이 이루어질 수 있으며, 첨부된 청구범위에 의해 정해지는 바와 같은 본 발명의 사상 및 범위로부터 벗어나지 않고 다른 배열이 구상될 수 있다는 것을 이해해야 한다.

Claims (20)

  1. 수신기에서 이용하기 위한 방법으로서,
    저밀도 패리티 체크(LDPC) 인코딩된 데이터를 수신하는 수신 단계; 및
    체크 노드 메시지들 및 비트 노드 메시지들을 이용하여 상기 수신된 LDPC 인코딩된 데이터를 처리하여 디코딩된 데이터를 제공하는 처리 단계
    를 포함하고,
    상기 처리 단계는 상기 비트 노드 메시지들을 Y 그룹들로, 그리고 상기 체크 노드 메시지들을 q 그룹들로 분할하고, q는 상기 수신된 LDPC 인코딩된 데이터와 연관된 코드 레이트의 함수로서 가변하는 방법.
  2. 제1항에 있어서,
    상기 수신된 LDPC 인코딩된 데이터는 수신된 디지털 비디오 방송 시스템-2 신호로부터 도출되는 방법.
  3. 제1항에 있어서,
    상기 수신된 LDPC 인코딩된 데이터는 (N,K) LDPC 코드를 나타내고, M=N-K 및 q=Y(N-K)/N인 방법.
  4. 제3항에 있어서,
    Y=N/360인 방법.
  5. 제1항에 있어서,
    상기 수신된 LDPC 인코딩된 데이터는 차수 M x N의 패리티 행렬을 가진 (N,K) LDPC 코드를 나타내고,
    상기 처리 단계는
    J개의 프로세서로 체크 노드 메시지들의 각각의 그룹을 처리하는 단계; 및
    J개의 프로세서로 비트 노드 메시지들의 각각의 그룹을 처리하는 단계
    를 포함하고,
    J는 정방 부행렬의 차수를 나타내며, 따라서 정수 개의 정방 부행렬들이 상기 패리티 행렬에 맞추어지도록 하는 방법.
  6. 제5항에 있어서,
    상기 체크 노드 메시지들을 처리하는 단계는
    체크 노드 메시지들의 각각의 그룹을 순환적으로 시프트시키는 단계;
    J개의 프로세서로 각각의 순환적으로 시프트된 체크 노드 메시지의 그룹을 처리하여 새로운 메시지들의 그룹을 제공하는 단계; 및
    각각의 새로운 메시지들의 그룹을 순환적으로 시프트시켜 비트 노드 메시지들의 그룹을 형성하는 단계를 포함하는 방법.
  7. 제5항에 있어서,
    상기 비트 노드 메시지들을 처리하는 단계는
    비트 노드 메시지들의 각각의 그룹을 순환적으로 시프트시키는 단계;
    J개의 프로세서로 각각의 순환적으로 시프트된 비트 노드 메시지의 그룹을 처리하여 새로운 메시지들의 그룹을 제공하는 단계; 및
    각각의 새로운 메시지들의 그룹을 순환적으로 시프트시켜 체크 노드 메시지들의 그룹을 형성하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 수신된 LDPC 인코딩된 데이터는 차수 M x N의 패리티 행렬을 가진 (N,K) LDPC 코드를 나타내고,
    상기 처리 단계는
    J개의 프로세서로 체크 노드 메시지들의 각각의 그룹을 처리하는 단계; 및
    J개의 프로세서로 비트 노드 메시지들의 각각의 그룹을 처리하는 단계를 포함하고,
    J=N/Y인 방법.
  9. 제8항에 있어서,
    상기 체크 노드 메시지들을 처리하는 단계는
    체크 노드 메시지들의 각각의 그룹을 순환적으로 시프트시키는 단계;
    J개의 프로세서로 각각의 순환적으로 시프트된 체크 노드 메시지의 그룹을 처리하여 새로운 메시지들의 그룹을 제공하는 단계; 및
    각각의 새로운 메시지들의 그룹을 순환적으로 시프트시켜 비트 노드 메시지들의 그룹을 형성하는 단계
    를 포함하는 방법.
  10. 제8항에 있어서,
    상기 비트 노드 메시지들을 처리하는 단계는
    비트 노드 메시지들의 각각의 그룹을 순환적으로 시프트시키는 단계;
    J개의 프로세서로 각각의 순환적으로 시프트된 비트 노드 메시지의 그룹을 처리하여 새로운 메시지들의 그룹을 제공하는 단계; 및
    각각의 새로운 메시지들의 그룹을 순환적으로 시프트시켜 체크 노드 메시지들의 그룹을 형성하는 단계
    를 포함하는 방법.
  11. 수신기에서 이용하기 위한 장치로서,
    LDPC 인코딩된 데이터를 제공하기 위한 복조기;
    상기 LDPC 인코딩된 데이터를 디코딩하여 디코딩된 데이터를 제공하기 위한 LDPC 디코더
    를 포함하고,
    상기 LDPC 디코더는 비트 노드 메시지들을 Y 그룹들로, 그리고 체크 노드 메시지들을 q 그룹들로 분할함으로써 상기 LDPC 인코딩된 데이터를 처리하고, q는 상기 LDPC 인코딩된 데이터와 연관된 코드 레이트의 함수로서 가변하는 장치.
  12. 제11항에 있어서,
    상기 LDPC 인코딩된 데이터는 수신된 디지털 비디오 방송 시스템-2 신호로부터 도출되는 장치.
  13. 제11항에 있어서,
    상기 LDPC 인코딩된 데이터는 (N,K) LDPC 코드를 나타내고, M=N-K 및 q=Y(N-K)/N인 장치.
  14. 제13항에 있어서,
    Y=N/360인 장치.
  15. 제11항에 있어서,
    상기 LDPC 인코딩된 데이터는 차수 M x N의 패리티 행렬을 가진 (N,K) LDPC 코드를 나타내고,
    LDPC 인코더는
    비트 노드 메시지들의 각각의 그룹을 처리하기 위한 J개의 프로세서; 및
    체크 노드 메시지들의 각각의 그룹을 처리하기 위한 J개의 프로세서를 포함하고,
    J는 정방 부행렬의 차수를 나타내고, 따라서 정수 개의 정방 부행렬들이 상기 패리티 행렬에 맞추어지도록 하는 장치.
  16. 제11항에 있어서,
    상기 LDPC 인코딩된 데이터는 차수 M x N의 패리티 행렬을 가진 (N,K) LDPC 코드를 나타내고,
    LDPC 인코더는
    비트 노드 메시지들의 각각의 그룹을 처리하기 위한 J개의 프로세서; 및
    체크 노드 메시지들의 각각의 그룹을 처리하기 위한 J개의 프로세서를 포함하고,
    J=N/Y인 장치.
  17. 제11항에 있어서,
    상기 LDPC 디코더는
    상기 체크 노드 메시지들 및 상기 비트 노드 메시지들을 저장하기 위한 메모리;
    상기 체크 노드 메시지들을 시프트시키기 위한 순환 시프터;
    상기 순환적으로 시프트된 체크 노드 메시지들을 처리하여 새로운 메시지들 을 제공하기 위한 비트 노드 프로세서들의 그룹;
    상기 새로운 메시지들을 시프트시켜 새로운 비트 노드 메시지들을 형성하기 위한 순환 시프터;
    상기 비트 노드 메시지들을 처리하여 상기 메모리에 저장하기 위한 새로운 체크 노드 메시지들을 제공하기 위한 체크 노드 프로세서들의 그룹을 포함하고,
    상기 메모리는 새로운 비트 노드 메시지들이 연속적으로 저장되도록 구성되는 장치.
  18. 제11항에 있어서,
    상기 LDPC 디코더는
    상기 체크 노드 메시지들 및 상기 비트 노드 메시지들을 저장하기 위한 메모리;
    상기 체크 노드 메시지들을 처리하여 상기 메모리에 저장하기 위한 새로운 비트 노드 메시지들을 제공하기 위한 비트 노드 프로세서들의 그룹;
    상기 비트 노드 메시지들을 시프트시키기 위한 순환 시프터;
    상기 순환적으로 시프트된 비트 노드 메시지들을 처리하여 새로운 메시지들을 제공하기 위한 체크 노드 프로세서들의 그룹; 및
    상기 새로운 메시지들을 시프트시켜 새로운 체크 노드 메시지들을 형성하기 위한 순환 시프터를 포함하고,
    상기 메모리는 새로운 체크 노드 메시지들이 연속적으로 저장되도록 구성되 는 장치.
  19. 제11항에 있어서,
    상기 LDPC 디코더는 비트 노드 메시지들의 그룹들이 연속적으로 저장되도록 구성된 메모리를 포함하는 장치.
  20. 제11항에 있어서,
    상기 LDPC 디코더는 체크 노드 메시지들의 그룹들이 연속적으로 저장되도록 구성된 메모리를 포함하는 장치.
KR1020077007394A 2004-10-01 2005-09-19 저밀도 패리티 체크(ldpc) 디코더 KR20070062534A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US61541804P 2004-10-01 2004-10-01
US60/615,418 2004-10-01

Publications (1)

Publication Number Publication Date
KR20070062534A true KR20070062534A (ko) 2007-06-15

Family

ID=35414744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077007394A KR20070062534A (ko) 2004-10-01 2005-09-19 저밀도 패리티 체크(ldpc) 디코더

Country Status (7)

Country Link
US (1) US20080104474A1 (ko)
EP (1) EP1800408A1 (ko)
JP (1) JP2008515342A (ko)
KR (1) KR20070062534A (ko)
CN (1) CN101032084B (ko)
BR (1) BRPI0515948A (ko)
WO (1) WO2006055086A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477925B1 (ko) * 2013-10-08 2014-12-30 세종대학교산학협력단 Ldpc 복호기를 이용한 데이터 경로 설정 방법 및 이를 위한 ldpc 복호기

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1958335A1 (en) * 2005-12-01 2008-08-20 Thomson Licensing Apparatus and method for decoding low density parity check coded signals
JP4807063B2 (ja) * 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
KR101154995B1 (ko) * 2006-07-14 2012-06-15 엘지전자 주식회사 Ldpc 부호화를 수행하는 방법
US7895500B2 (en) * 2006-07-28 2011-02-22 Via Telecom Co., Ltd. Systems and methods for reduced complexity LDPC decoding
JP4283829B2 (ja) * 2006-08-17 2009-06-24 株式会社モバイルテクノ 低密度パリティチェック符号復号装置
US8369448B2 (en) * 2006-09-18 2013-02-05 Availink, Inc. Bit mapping scheme for an LDPC coded 32APSK system
US20110173509A1 (en) * 2006-09-18 2011-07-14 Availink, Inc. Bit mapping scheme for an ldpc coded 16apsk system
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
EP2023492A3 (en) * 2007-08-06 2012-05-30 Broadcom Corporation Multi-code LDPC (low density parity check) decoder
TWI390856B (zh) * 2007-11-26 2013-03-21 Sony Corp Data processing device and data processing method
TWI410055B (zh) * 2007-11-26 2013-09-21 Sony Corp Data processing device, data processing method and program product for performing data processing method on computer
JP4985386B2 (ja) * 2007-12-25 2012-07-25 住友電気工業株式会社 受信装置
WO2009104898A2 (en) * 2008-02-18 2009-08-27 Samsung Electronics Co., Ltd. Apparatus and method for encoding and decoding channel in a communication system using low-density parity-check codes
PT2093887E (pt) * 2008-02-18 2013-11-25 Postech Acad Ind Found Aparelho e método para a codificação e descodificação de canal num sistema de comunicação utilizando códigos de verificação de paridade de densidade esparsa
US8201049B2 (en) * 2008-02-23 2012-06-12 Montage Technology Inc. Low density parity check (LDPC) decoder
WO2009123728A1 (en) * 2008-03-31 2009-10-08 Sirius Xm Radio Inc. Efficient, programmable and scalable low density parity check decoder
US8370711B2 (en) 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
CN102077471B (zh) * 2008-07-04 2014-03-12 三菱电机株式会社 校验矩阵生成装置、校验矩阵生成方法、校验矩阵生成程序、发送装置、接收装置以及通信系统
US8219873B1 (en) 2008-10-20 2012-07-10 Link—A—Media Devices Corporation LDPC selective decoding scheduling using a cost function
KR101733506B1 (ko) * 2009-01-23 2017-05-10 엘지전자 주식회사 신호 송수신 장치 및 방법
KR101691841B1 (ko) 2009-02-12 2017-01-02 엘지전자 주식회사 신호 송신 장치 및 방법
US8503551B2 (en) 2009-02-13 2013-08-06 Lg Electronics Inc. Apparatus for transmitting and receiving a signal and method of transmitting and receiving a signal
US9350490B2 (en) 2009-02-18 2016-05-24 Lg Electronics Inc. Apparatus for transmitting and receiving a signal and method of transmitting and receiving a signal
EP2282471A1 (en) 2009-08-07 2011-02-09 Thomson Licensing Data transmission using low density parity check coding and constellation mapping
EP2282470A1 (en) * 2009-08-07 2011-02-09 Thomson Licensing Data reception using low density parity check coding and constellation mapping
US8176400B2 (en) * 2009-09-09 2012-05-08 Lsi Corporation Systems and methods for enhanced flaw scan in a data processing device
US8566668B1 (en) * 2010-01-04 2013-10-22 Viasat, Inc. Edge memory architecture for LDPC decoder
US8832534B1 (en) 2010-01-04 2014-09-09 Viasat, Inc. LDPC decoder architecture
TW201126537A (en) * 2010-01-20 2011-08-01 Sunplus Technology Co Ltd Memory utilization method for low density parity check code, low density parity check code decoding method and apparatus thereof
JP5112468B2 (ja) * 2010-03-26 2013-01-09 株式会社東芝 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置
CN102859885B (zh) * 2010-04-09 2015-10-07 Sk海尼克斯存储技术公司 Ldpc选择性解码调度的实现
CN102315902A (zh) * 2010-07-07 2012-01-11 中国科学院微电子研究所 一种准循环低密度奇偶校验码的通用寻址装置及方法
EP2525497A1 (en) * 2011-05-18 2012-11-21 Panasonic Corporation Bit-interleaved coding and modulation (BICM) with quasi-cyclic LDPC codes
US8707123B2 (en) * 2011-12-30 2014-04-22 Lsi Corporation Variable barrel shifter
CN102594365B (zh) * 2012-02-29 2015-02-18 中山大学 一种ldpc码的动态异步bp译码方法
CN103684474B (zh) * 2012-08-31 2016-08-17 中国科学院上海高等研究院 一种高速ldpc译码器的实现方法
US9219504B2 (en) 2012-10-29 2015-12-22 Avago Technologies General Ip (Singapore) Pte. Ltd. LEH memory module architecture design in the multi-level LDPC coded iterative system
US9281841B2 (en) * 2012-10-31 2016-03-08 Avago Technologies General Ip (Singapore) Pte. Ltd. Load balanced decoding of low-density parity-check codes
US8930789B1 (en) 2013-01-23 2015-01-06 Viasat, Inc. High-speed LDPC decoder
US9094132B1 (en) 2013-01-23 2015-07-28 Viasat, Inc. High data rate optical transport network using 8-PSK
JPWO2014123016A1 (ja) * 2013-02-08 2017-02-02 サターン ライセンシング エルエルシーSaturn Licensing LLC データ処理装置、及びデータ処理方法
CN104969478B (zh) * 2013-02-08 2019-05-07 索尼公司 数据处理装置以及数据处理方法
EP2833554B8 (en) * 2013-07-31 2018-06-06 Alcatel Lucent Encoder and decoder
GB2510932B (en) 2013-08-27 2015-01-21 Imagination Tech Ltd An improved decoder for low-density parity-check codes
US20150227419A1 (en) * 2014-02-12 2015-08-13 Kabushiki Kaisha Toshiba Error correction decoder based on log-likelihood ratio data
CN104124980B (zh) * 2014-07-16 2018-04-20 上海交通大学 适合连续变量量子密钥分发的高速秘密协商方法
CA2864640C (en) * 2014-08-14 2017-06-06 Sung-Ik Park Low density parity check encoder having length of 16200 and code rate of 2/15, and low density parity check encoding method using the same
US9595977B2 (en) 2014-09-29 2017-03-14 Apple Inc. LDPC decoder with efficient circular shifters
KR102287623B1 (ko) * 2015-02-16 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 4/15인 ldpc 부호어 및 1024-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102287627B1 (ko) * 2015-02-16 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 4/15인 ldpc 부호어 및 4096-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102287620B1 (ko) * 2015-02-16 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 2/15인 ldpc 부호어 및 1024-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102287625B1 (ko) * 2015-02-16 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 2/15인 ldpc 부호어 및 4096-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
US10128869B2 (en) 2016-05-17 2018-11-13 Apple Inc. Efficient convergence in iterative decoding
US10326479B2 (en) 2016-07-11 2019-06-18 Micron Technology, Inc. Apparatuses and methods for layer-by-layer error correction

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7072417B1 (en) * 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US7000177B1 (en) * 2000-06-28 2006-02-14 Marvell International Ltd. Parity check matrix and method of forming thereof
WO2002099976A2 (en) * 2001-06-06 2002-12-12 Seagate Technology Llc A method and coding apparatus using low density parity check codes for data storage or data transmission
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
EP1526647B1 (en) * 2002-07-02 2008-10-01 Mitsubishi Electric Corporation Generation of a check matrix for irregular low-density parity-check (LDPC) codes
CA2457420C (en) * 2002-07-03 2016-08-23 Hughes Electronics Corporation Bit labeling for amplitude phase shift constellation used with low density parity check (ldpc) codes
KR100543154B1 (ko) * 2002-07-26 2006-01-20 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사 코드 생성 방법 및 시스템
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
KR100996029B1 (ko) * 2003-04-29 2010-11-22 삼성전자주식회사 저밀도 패리티 검사 코드의 부호화 장치 및 방법
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7260763B2 (en) * 2004-03-11 2007-08-21 Nortel Networks Limited Algebraic low-density parity check code design for variable block sizes and code rates
US7281192B2 (en) * 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7165205B2 (en) * 2004-05-14 2007-01-16 Motorola, Inc. Method and apparatus for encoding and decoding data
US7143333B2 (en) * 2004-08-09 2006-11-28 Motorola, Inc. Method and apparatus for encoding and decoding data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101477925B1 (ko) * 2013-10-08 2014-12-30 세종대학교산학협력단 Ldpc 복호기를 이용한 데이터 경로 설정 방법 및 이를 위한 ldpc 복호기

Also Published As

Publication number Publication date
CN101032084B (zh) 2010-05-05
US20080104474A1 (en) 2008-05-01
WO2006055086A1 (en) 2006-05-26
JP2008515342A (ja) 2008-05-08
CN101032084A (zh) 2007-09-05
BRPI0515948A (pt) 2008-08-12
EP1800408A1 (en) 2007-06-27

Similar Documents

Publication Publication Date Title
KR20070062534A (ko) 저밀도 패리티 체크(ldpc) 디코더
JP6772346B2 (ja) 並列ビットインターリーバ
KR100915368B1 (ko) 중복 부분 행렬 기반의 저밀도 패리티 체크 디코더
KR101929145B1 (ko) 데이터 처리 장치, 및 데이터 처리 방법
AU2008330661B9 (en) Data processing device and data processing method
EP2237429B1 (en) Interleaving of parity bits of a ldpc code word in the context of dvb
CA2867660C (en) Data processing apparatus and data processing method
US20060085720A1 (en) Message passing memory and barrel shifter arrangement in LDPC (Low Density Parity Check) decoder supporting multiple LDPC codes
KR20150116378A (ko) 데이터 처리 장치, 및 데이터 처리 방법
US20150358032A1 (en) Data processing device and data processing method
US8010881B2 (en) Multi-code LDPC (low density parity check) decoder
US9806742B2 (en) Data processing device and data processing method
KR20180133947A (ko) 데이터 처리 장치 및 데이터 처리 방법
US20160065244A1 (en) Data processing device and data processing method
US20160079998A1 (en) Data processing device and data processing method
KR20220110714A (ko) 길이가 64800이며, 부호율이 3/15인 ldpc 부호어 및 4096-심볼 맵핑에 상응하는 bicm 수신 장치 및 방법
KR20180133948A (ko) 데이터 처리 장치 및 데이터 처리 방법
US20150349802A1 (en) Data processing device and data processing method
KR20220110712A (ko) 길이가 64800이며, 부호율이 4/15인 ldpc 부호어 및 4096-심볼 맵핑에 상응하는 bicm 수신 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application