KR20190065420A - Ldpc 코드를 인코딩 및 디코딩하기 위한 방법 및 장치 - Google Patents

Ldpc 코드를 인코딩 및 디코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20190065420A
KR20190065420A KR1020197014018A KR20197014018A KR20190065420A KR 20190065420 A KR20190065420 A KR 20190065420A KR 1020197014018 A KR1020197014018 A KR 1020197014018A KR 20197014018 A KR20197014018 A KR 20197014018A KR 20190065420 A KR20190065420 A KR 20190065420A
Authority
KR
South Korea
Prior art keywords
rows
columns
matrix
row
punctured
Prior art date
Application number
KR1020197014018A
Other languages
English (en)
Other versions
KR102155539B1 (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 KR20190065420A publication Critical patent/KR20190065420A/ko
Application granted granted Critical
Publication of KR102155539B1 publication Critical patent/KR102155539B1/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/033Theoretical methods to calculate these checking codes
    • H03M13/036Heuristic code construction methods, i.e. code construction or code search based on using trial-and-error
    • 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/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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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/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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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
    • H03M13/6368Error control coding in combination with rate matching by puncturing using rate compatible puncturing or complementary puncturing
    • H03M13/6393Rate compatible 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

비정칙 QC-LDPC 행렬의 기저 행렬에 기초하여 효율적으로 디코딩 가능한 QC-LDPC 코드를 제공하며, 상기 기저 행렬은 열과 행으로 형성되고, 상기 열은 펑처드 변수 노드(즉, 인코더에 의해 사용되지만 디코더에 송신되지 않거나 디코더에 의해 수신되지 않은 것으로 효과적으로 처리되는 정보 비트들에 대응하는 변수 노드)와에 대응하는 하나 이상의 열과 비펑처드 변수 노드에 대응한 열로 분할 가능하고, 상기 행은 고밀도 행(즉, 제1 가중치보다 높은 가중치를 갖는 행)과 저밀도 행(즉, 제2 가중치보다 낮은 가중치를 갖는 행, 여기서 제2 가중치는 제1 가중치 이하임)으로 분할 가능하며, 저밀도 행과, 비펑처드 변수 노드에 대응하는 열의 중첩에 의해 정의되는 행렬은 직교 행의 그룹으로 분할 가능하다.

Description

LDPC 코드를 인코딩 및 디코딩하기 위한 방법 및 장치
본 발명은 통신 분야에 관한 것으로, 특히 데이터를 인코딩 및 디코딩하는 기술에 관한 것이다.
저밀도 패리티 검사(Low density parity check, LDPC) 코드는 순방향 오류 정정(forward error correcting, FEC) 방식에 사용되는 채널 코드이다. LDPC 코드는 양호한 성능으로 잘 알려져 있으며 최근 몇 년 동안 많은 주목을 받았다. 이것은 Shannon 한계에 가까운 성능을 달성할 수 있는 능력, 하드웨어에서 높은 병렬화를 달성하는 코드를 설계할 수 있는 능력 및 고속 데이터 레이트 지원 덕분이다. 결과적으로, 현재 액티브한 전기 통신 표준의 많은 부분은 그것들의 물리 계층 FEC 방식에서 LDPC 코드를 갖는다. LDPC 코드는 차세대 통신 시스템 인코딩 표준으로 생각되고 있다.
준순환 저밀도 패리티 검사(Quasi-Cyclic Low-Density Parity-Check, QC-LDPC) 코드는 비정칙(irregular) QC-LDPC 행렬의 기저 행렬(base matrix)을 기초로 하고, 기저 행렬은 열(column)과 행(row)으로 구성되며, 열은 펑처드 변수 노드(punctured variable node)(즉, 인코더에 의해 사용되지만 디코더에 송신되지 않거나 디코더에 의해 수신되지 않은 것으로서 효과적으로 취급되는 정보 비트에 대응하는 변수 노드)에 대응하는 하나 이상의 열과 비펑처드 변수 노드(not-punctured variable node)에 대응하는 열로 분할 가능하고, 행은 고밀도 행(즉, 제1 가중치보다 높은 가중치를 갖는 행)과 저밀도 행(즉, 제2 가중치보다 낮은 가중치를 갖는 행, 여기서 제2 가중치는 제1 가중치 이하임)으로 분할 가능하다.
채널 코딩에 대한 알려진 접근 방식은 다양한 시나리오에서 잘 수행되는 것으로 입증되었지만 적절한 인코딩/디코딩 자원으로 높은 데이터 처리량을 달성하는 정교한 방안을 제공하기 위한 연구가 계속 진행 중이다.
본 발명의 제1 측면에 따르면, 방법이 제공되며, 상기 방법은, 일련의 정보 비트(sequence of information bit)를 인코딩 또는 디코딩하기 위한 비정칙 QC-LDPC 코드의 기저 행렬의 엔트리를 제공하는 단계 - 상기 엔트리는 비정칙 QC-LDPC 행렬의 블록을 나타내고, 각각의 블록은 시프트된 순환 행렬(shifted circulant matrix) 또는 영 행렬(zero matrix)을 나타냄 -, 상기 기저 행렬의 행을 제1 세트와 제2 세트로 분할하는 단계 - 상기 제1 세트의 행은 상기 제2 세트의 행보다 높은 가중치를 가짐 -, 상기 제2 세트의 행으로 형성되는 행렬의 열의 수를 선택하는 단계 - 상기 선택된 열로 형성되는 서브행렬의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 최대 수의 직교 행으로 이루어지며, 상기 선택은 서로 다른 그룹의 수에 기초함 -; 및 선택되지 않은 열에 대응하는 정보 비트를 펑처드(punctured)로서 지시하는 단계를 포함한다.
비정칙 QC-LDPC 행렬의 하나 이상의 높은 가중치 열에 대응하는 정보 비트를 펑처링(puncturing)하는 것은, 높은 가중치 열에 관한 플러딩 디코딩과 조합하여 "나머지" 직교 서브행(또는 행 벡터)의 상이한 그룹에 관한 계층화된 디코딩을 가능하게 하므로, 고 품질의 코드를 유지하면서 디코딩 중에 고도의 병렬성을 달성할 수 있다. 따라서, 펑처링되지 않은 비펑처드 열을 선택하는 것은 너무 많은 열(예: 임계 값에 의해 주어진 것보다 많음)에 대응하는 정보 비트가 펑처링될 것을 회피하면서 직교 서브행(또는 행 벡터)의 상이한 그룹의 수를 가능한 많이 한 유지하는 것을 도모한다.
이와 관련하여, 유의해야 할 것은, 설명 및 청구범위에 걸쳐 사용된 용어 "순환 행렬(circulant matrix)"은 크기
Figure pct00001
의 이차 행렬(quadratic matrix), 예컨대 단위 행렬(identity matrix)을 가리키며, 각각의 행 벡터는 앞의 행 벡터에 대해 하나의 요소가 오른쪽으로 시프트된다는 것이다. 또한, 용어 "순환 크기(circulant size)"는 순환의 크기
Figure pct00002
을 가리킨다. 또한, 설명 및 청구범위 전반에 걸쳐 사용되는 용어 "기저 행렬"은 시프트 값(shift value)으로 라벨링된 배열을 가리킨다. 기저 행렬의 각각의 시프트 값은 순환, 즉 단위 행렬의 행이 순환하여 (오른쪽으로) 시프트되어 기저 형렬에 의해 정의되는 QC-LDPC 행렬의 대응 서브행렬(corresponding submatrix)을 생성하는 횟수를 제공한다.
또한, 유의해야 할 것은 QC-LDPC 코드 및 LDPC 코드는 종종 번갈아 사용되지만, 당업자라면 이들의 의미를 이해할 수 있다는 것이다. 설명 및 청구범위 전반에 걸쳐 사용되는 용어 "가중치(weight)"는 특히 시프트 값으로 라벨링된 기저 행렬의 행 또는 열 내의 엔트리의 수, 즉 영 행렬로 표현되지 않는 기저 행렬의 행 또는 열 내의 엔트리의 수를 가리키며, 이는 QC-LDPC 행렬의 대응하는 행 및 열에서 "1"의 수와 동일하다. 이와 관련하여, 설명 및 청구범위 전반에 걸쳐 사용되는 용어 "가중치"는 동일하거나 유사한 의미를 갖는 용어 "노드 정도(node degree)" 또는 "밀도(density)"로 호환될 수 있다. 또한, 정보 비트(또는 대응하는 변수 노드 또는 대응하는 열)과 관련하여 설명 및 청구범위 전반에 걸쳐 사용되는 용어 "펑처드(punctured)"는 특히 정보 비트가 오직 인코더에 의해서만 사용되고, 디코더에 송신되지 않거나 디코더에 의해 수신되지 않은 것으로 효과적으로 취급된다는 것을 나타낸다. 또한, 열, 노드 및 정보 비트와 관련하여 설명 및 청구범위 전반에 걸쳐 사용되는 "대응(corresponding)"이라는 용어는 특히, QC-LDPC 행렬의 태너 그래프 표현법(Tanner graph representation)의 관점에서 열과 변수 노드/정보 비트 간의 매핑을 가리킨다.
또한, 유의해야 할 것은, "행렬"을 형성하는 값은 반드시 행렬(또는 배열) 형태로 물리적으로 저장 또는 제시될 필요가 없거나, 또는 행렬을 포함하는 프로세스를 전반에 걸쳐 행렬 대수로 사용될 필요도 없다는 것이다. 오히려 설명 및 청구범위에 전반에 걸쳐 사용되는 용어 "행렬"은 할당된 행 및 열 색인을 갖는 (정수) 값의 세트 또는 (논리) 메모리 어레이에 저장되는 (정수) 값의 세트를 동일하게 가리킬 수 있다. 또한, 행렬 대수를 포함하지 않으면, 또는 각각의 행렬 대수 루틴이 적절하게 재정의되지 않으면, 행과 열의 개념을 변경하거나 자유롭게 선택할 수도 있다. 그러나, 설명 및 청구범위 전반에 걸쳐, 이는 해당 기술분야에서 통상적으로 사용되는 수학적 개념 및 표기법에 따르며, 이들은 동등한 수학적 개념 및 표기법을 포함하는 것으로 이해되어야 한다.
제1 측면에 따른 방법의 제1 가능한 구현 형태에서, 상기 선택되지 않은 열의 수는 하나 또는 둘이다.
따라서 비교적 적은 수의 선택되지 않은 열이 있을 수 있지만, 비교적 높은 가중치(예: 선택된 열의 평균 가중치의 두배 또는 세배 이상)를 가지므로, 나머지(선택된) 서브행(또는 행 벡터)의 그룹 내에서 직교성(orthogonality)을 달성하기 위해 "분리"(또는 비중첩 세트 또는 그룹으로 분할)되어야 하는 비교적 적은 수의 열로 인하여 디코딩 중에 고도의 병렬성을 효과적으로 가능하게 하면서 직교 서브행(또는 행 벡터)의 그룹의 양호한 "연결성"을 제공한다.
제1 측면 그 자체 또는 제1 측면의 제1 가능한 구현 형태에 따른 방법의 제2 가능한 구현 형태에서, 상기 제2 세트의 행으로 형성되는 행렬의 열의 수를 선택하는 단계는, 상기 제2 세트의 행으로 형성되는 행의 열을 가중치로 순서화(ordering) 또는 그룹화(grouping)하고, 임계 값 이하의 가중치를 갖는 열을 선택하는 단계를 포함한다.
따라서 많은 수의 직교 서브행(또는 행 벡터)를 갖는 그룹이 달성될 수 있으며, 이는 디코딩 중에 더 높은 수준의 병렬성을 가능하게 한다.
제1 측면 그 자체 또는 제1 측면의 제1 또는 제2 가능한 구현 형태에 따른 방법의 제3 가능한 구현 형태에서, 상기 제1 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 이중 대각선 구조 또는 삼각형 구조를 갖는다.
따라서, 불균칙 QC-LDPC 행렬의 고밀도 부분은 이중 대각선 구조 또는 삼각형 구조를 갖는 패리티 부분을 가짐으로써 인코딩을 용이하게 한다. 이는 또한 저밀도 부분에서 제거된 행의 수(그리고 예를 들어, 행 제거기 빈 열을 남기게 되면 대응하는 열의 수)가 코드 레이트를 변경할 수 있지만, 고밀도 부분의 인코딩/디코딩 속성에는 효과적으로 관여하지 않기 때문에 레이트 적응성(rate-adaptiveness)에 대한 코드의 민감성이 향상시킨다. 이와 관련하여, 상기 방법은 또한 비정칙 QC-LDPC 코드의 레이트를 적응시키기 위해 비정칙 QC-LDPC 행렬의 제2 세트의 행 (및 대응하는 열)을 몇 개 제거하는 것을 포함할 수 있다.
제1 측면 그 자체 또는 제1 측면의 제1 내지 제3 가능한 구현 형태 중 어느 하나에 따른 방법의 제4 가능한 구현 형태에서, 상기 제2 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 삼각형 구조 또는 단위 행렬 구조를 갖는다.
따라서, 인코딩은 고밀도 부분의 서브열(또는 열 벡터)에 기초하여 입력 시퀀스를 인코딩하는 것과 저밀도 부분의 서브열(또는 열 벡터)에 기초하여 인코딩된 출력 시퀀스를 인코딩하는 것을 포함하는 2단계 절차로 수행될 수 있어, 랩터형(raptor-like) 인코딩 프로세스를 이용한다.
제1 측면 그 자체 또는 제1 측면의 제1 내지 제4 가능한 구현 형태 중 어느 하나에 따른 방법의 제5 가능한 구현 형태에서, 상기 비펑처드(non-punctured) 정보 비트에 대응하는 상기 제1 세트의 행으로 형성되는 행렬의 열로 형성되는 행렬의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 직교 행(orthogonal row)으로 이루어진다.
따라서, 직교 서브행(또는 행 벡터)의 그룹(또는 서브세트)은 고밀도 세트 및 저밀도 세트로 형성될 수 있어, 디코딩 중에 훨씬 더 고도의 병렬성을 가능하게 한다.
제1 측면 그 자체 또는 제1 측면의 제1 내지 제5 가능한 구현 형태 중 어느 하나에 따른 방법의 제6 가능한 구현 형태에서, 상기 방법은, 제공된 상기 기저 행렬의 엔트리에 기초하여 상기 일련의 정보 비트에 대응하는 코드워드를 결정하는 단계; 및 펑처드로서 지시되는 정보 비트를 제외하고 상기 코드워드를 송신하는 단계를 더 포함한다.
따라서, QC-LDPC 코드의 레이트를 높일 수 있다.
제1 측면 그 자체 또는 제1 측면의 제1 내지 제6 가능한 구현 형태 중 어느 하나에 따른 방법의 제7 가능한 구현 형태에서, 상기 방법은, 제공된 상기 기저 행렬의 엔트리 및 어느 정보 비트가 펑처링되어 있는지에 관한 정보에 기초하여, 수신된 일련의 정보 비트를 디코딩하는 단계를 더 포함하며, 상기 디코딩은 플러딩 및 계층화된 디코딩 작업(flooding and layered decoding operation)을 포함하며, 상기 계층은 서로 다른 그룹에 대응한다.
따라서, 디코딩 수렴은 디코딩 프로세스의 높은 병렬성을 유지하면서 향상될 수 있다. 이와 관련하여, 유의해야 할 것은, 설명 및 청구 범위에 전반에 걸쳐 사용되는 용어 "계층화된 디코딩(layered decoding)"은 특히 계층의 행들이 병렬로 처리되지만 계층은 (실질적으로) 연속적으로 처리되는 디코딩 프로세스를 가리킨다는 것이다.
본 발명의 제2 측면에 따르면, 디코더가 제공되며, 상기 디코더는, 비정칙 QC-LDPC 코드의 기저 행렬의 엔트리를 저장하는 비일시적인 메모리를 포함하고, 상기 기저 행렬의 열은 제1 세트와 제2 세트로 분할되고, 상기 제1 세트는 하나 이상의 열을 포함하고, 상기 제2 세트의 열은 직교 행의 그룹을 포함하는 행렬을 형성하며; 상기 디코더는 상기 제1 세트의 하나 이상의 열에 대응하는 변수 노드에 대한 플러딩 디코딩 프로세스(flooding decoding process) 및 상기 제2 세트의 열에 대응하는 노드에 대한 계층화된 디코딩 프로세스(layered decoding process)에 기초하여, 수신된 일련의 정보 비트를 디코딩하도록 구성된다.
따라서, 디코딩 수렴이 디코딩 프로세스의 코드 품질 및 높은 병렬성을 유지 가능하게 하면서 개선될 수 있으며, 이에 따라 낮은 오류율로 높은 처리량을 가능하게 한다.
제2 측면에 따른 디코더의 제1 가능한 구현 형태에서, 상기 제1 세트의 하나 이상의 열에 대응하는 변수 노드는 펑처드로서 지시된다.
따라서, 비정칙 QC-LDPC 코드의 레이트를 높일 수 있다.
제2 측면 자체 또는 제2 측면의 제1 가능한 형태에 따른 디코더의 제2 가능한 구현 형태에서, 상기 제1 세트의 열의 수는 하나 또는 둘이다.
따라서 제1 세트에는 비교적 적은 수의 열이 있을 수 있지만, 비교적 높은 가중치(예: 제2 세트의 열의 평균 가중치의 두배 또는 세배 이상)를 가지므로, 계층의 "연결성"을 향상시킨다.
제2 측면 자체 또는 제2 측면의 제1 또는 제2 가능한 형태에 따른 디코더의 제2 가능한 구현 형태에서, 상기 기저 행렬의 행은 제1 세트와 제2 세트로 분할되고, 상기 제1 세트의 행은 상기 제2 세트의 행보다 가중치가 크다.
이는 코드의 품질을 실질적으로 저하시키지 않으면서 제2 세트의 행(및 제2 세트의 대응하는 열)을 제거(또는 무시)함으로써 코드를 레이트 적응에 훨씬 더 민감하게 만든다.
제2 측면의 제3 가능한 형태에 따른 디코더의 제4 가능한 구현 형태에서, 상기 제1 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 이중 대각선 구조 또는 삼각형 구조를 갖는다.
따라서, 비정칙 QC-LDPC 행렬의 고밀도 부분은 이중 대각선 구조 또는 삼각형 구조를 갖는 패리티 부분을 가짐으로써 인코딩을 용이하게 한다.
제2 측면의 제3 또는 제4 구현 형태에 따른 디코더의 제5 가능한 구현 형태에서, 상기 제2 세트의 행으로 형성되는 상기 행렬의 열의 서브세트로 이루어지는 행렬은 삼각형 구조 또는 단위 행렬 구조를 갖는다.
따라서, 디코더에 의한 재전송 요청에 대한 필요성을 감소시키거나 제거하는 랩터형 인코딩 프로세스를 이용하여 인코딩이 수행될 수 있다.
제2 측면의 제3 내지 제5 구현 형태 중 어느 하나에 따른 디코더의 제6 가능한 구현 형태에서, 상기 제2 세트의 열의 엔트리를 중첩시켜 형성되는 행렬의 행과 상기 제1 세트의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 직교 행으로 이루어진다.
따라서, 디코딩 중에 더욱 고도의 병렬상이 달성될 수 있다.
본 발명의 제3 측면에 따르면, 명령어를 저장한, 컴퓨터로 판독 가능한 비일시적인 매체가 제공되며, 상기 명령어는 컴퓨터에 의해 수행될 때, 상기 컴퓨터로 하여금 비정칙 QC-LDPC 행렬의 기저 행렬을 제공하게 하고, 상기 기저 행렬은 열과 행으로 형성되고, 상기 열은 펑처드 변수 노드에 대응하는 하나 이상의 열과 비펑처드 변수 노드에 대응하는 열로 분할 가능하고, 상기 행은 제1 가중치보다 큰 가중치를 갖는 제1 행과, 제2 가중치보다 작은 가중치를 갖는 제2 행으로 분할 가능하고, 상기 제2 가중치는 상기 제1 가중치 이하이며, 상기 제2 행과 상기 비펑처드 변수 노드에 대응하는 열의 중첩은 직교 행 벡터의 그룹으로 분할 가능하다.
비정칙 QC-LDPC 행렬의 기저 행렬의 하나 이상의 높은 가중치 열에 대응하는 변수 노드를 펑 처링하는 것은 높은 가중치 열에 관한 플러딩 디코딩과 조합하여 "나머지" 직교 서브행(또는 행 벡터)의 상이한 그룹에 관한 계층화된 디코딩을 가능하게 하므로, 고 품질 코드를 유지하면서 디코딩 중에 고도의 병렬성을 달성할 수 있다.
도 1은 본 발명에 따른 가능한 애플리케이션 시나리오의 개략도를 도시한다.
도 2는 디지털 통신 시스템의 개략도를 도시한다.
도 3은 일련의 정보 비트를 인코딩 또는 디코딩하기 위한 비정칙 QC-LDPC 코드를 제공하는 프로세스의 흐름도를 도시한다.
도 4는 비정칙 QC-LDPC 코드의 기저 행렬 구조를 도시한다.
도 5는 비정칙 QC-LDPC 코드의 기저 행렬을 도시한다.
도 5a는 비정칙 QC-LDPC 코드의 다른 기저 행렬을 도시한다.
도 6은 기저 행렬의 기본 그래프이다.
도 7은 기저 행렬의 다른 기본 그래프이다.
도 8은 디코딩 프로세스의 흐름도의 제1 부분을 도시한다.
도 9는 디코딩 프로세스의 흐름도의 제2 부분을 도시한다.
도 10은 디코딩 프로세스의 흐름도의 제3 부분을 도시한다.
도 11은 디코딩 프로세스의 제1 하드웨어 구현의 스케줄을 도시한다.
도 12는 디코딩 프로세스의 제2 하드웨어 구현의 스케줄을 도시한다.
도 1은 본 개시에 따른 가능한 애플리케이션 시나리오를 도시한다. 도 1에 도시된 바와 같이, 단말기(예컨대, 사용자 장비(user equipment), 약칭하여 UE) 중 적어도 하나는 무선 액세스 네트워크(radio access network, 약칭하여 RAN) 및 코어 네트워크(core network, 약칭하여 CN)에 연결된다. 본 개시에서 설명되는 기술은 5G 통신 시스템, 또는 다양한 무선 액세스 기술을 사용하는 다른 무선 통신 시스템, 예를 들어, 코드 분할 다중 액세스, 주파수 분할 다중 액세스, 시분할 다중 액세스, 직교 주파수 다중 액세스, 단일 캐리어 주파수 분할 다중 액세스 및 기타 무선 액세스 기술을 사용하는 시스템에 적용될 수 있다. 또한, 본 개시에서 설명되는 기술은 또한 진화된 통신 시스템에도 적용될 수 있다. 가능한 구현에서, 단말기는 무선 액세스 네트워크 및 코어 네트워크를 통해 IP 멀티미디어 서브시스템 네트워크에 접속할 수 있다.
본 발명에 관련된 용어 "단말기"는 휴대형 기기(hand device), 차량내 기기(in-vehicle device), 웨어러블 기기(wearable device), 컴퓨팅 기기 또는 무선 모뎀에 연결된 다른 처리 기기를 포함할 수 있으며, 여기서 기기는 무선 기능을 갖고, 사용자 장비(User Equipment, 약칭하여 UE), 이동국(Mobile station, 약칭하여 MS), 단말기(terminal), 단말 장비(Terminal Equipment) 등의 다양한 형태의 단말기를 포함할 수 있다.
무선 액세스 네트워크는 하나 이상의 기지국을 포함한다. 기지국(base station, 약칭하여 BS)은 무선 액세스 네트워크에 배치되고 또한 UE에 무선 통신 기능을 제공하도록 구성된 장치이다. 기지국은 다양한 형태의 매크로 기지국, 마이크로 기지국, 중계국, 액세스 포인트 등을 포함할 수 있다. 상이한 무선 액세스 기술의 경우, 기지국의 기능을 갖는 기기의 명칭은 상이할 수 있다.
도 2는 본 개시의 프로세스가 구현될 수 있는 디지털 통신 시스템(10)을 나타내는 블록도이다. 디지털 통신 시스템(10)은 인코더(12)를 포함하는 송신 측 및 디코더(14)를 포함하는 수신 측을 포함한다. 인코더 또는 디코더는, 예를 들어 칩셋으로 구현되는 하나 이상의 프로세서로 구현될 수 있다. 하나 이상의 프로세서 또는 칩셋이 기지국 또는 단말기에 설치할 수 있다. 송신 측에서의 인코더(12)의 입력은, 예를 들어, 인코더(12)에 의해 수행되는 인코딩 동작(encoding operation)에서
Figure pct00003
비트의 리던던시 시퀀스(redundancy sequence)가 부가되는
Figure pct00004
비트의 정보 시퀀스 IS 1 이며, 이에 따라 변조기(16)에 전달될 수 있는
Figure pct00005
비트의 인코딩된 정보 시퀀스(information sequence) IS 2 를 생성한다.
변조기(16)는 인코딩된 시퀀스 IS 2 를, 예를 들어 도선(conductive wire), 광섬유, 무선 채널, 마이크로파 채널 또는 적외선 채널과 같은 유선 또는 무선 채널(18)을 통해 송신되는 변조된 신호 벡터 CH_IN로 변환할 수 있다. 채널(18)은 일반적으로 노이즈 외란(noisy disturbances)을 받기 쉽기 때문에, 채널 출력 CH_OUT은 채널 입력 CH_IN과 상이할 수 있다.
수신 측에서, 채널 출력 벡터 CH_OUT는 몇 개의 우도비(likelihood ratio)를 생성하는 복조기(20)에 의해 처리될 수 있다. 디코더(14)는 수신된 정보 시퀀스 IS 3 의 리던던시를 사용하여 디코더(14)에 의해 수행되는 디코딩 동작에서, 수신된 정보 시퀀스 IS 3 의 에러를 정정하고 디코딩된 정보 시퀀스 IS 4 를 생성할 수 있다(참조: M. P. C. Fossorier et al., "Reduced Complexity Iterative Decoding of Low-Density Parity Check Codes Based on Belief Propagation", IEEE TRANSACTIONS ON COMMUNICATIONS, May 1999, Volume 47, Number 5, Pages 673-680, and J. Chen et al., "Improved min-sum decoding algorithms for irregular LDPC codes", PROCEEDINGS OF THE 2005 IEEE INTERNATIONAL SYMPOSIUM ON INFORMATION THEORY, Pages 449-453, September 2005). 디코딩된 정보 시퀀스 IS 4 는 정보 시퀀스 IS 1 (추정치)가 추출될 수 있은 인코딩된 정보 시퀀스 IS1 2 의 추정치이다.
인코딩 동작 및 디코딩 동작은 LDPC 코드에 의해 제어될 수 있다. 채널 코딩의 일반적인 공식에서, LDPC 코드는 인코더(12)에 의해 수행되는 인코딩 동작을 위한 생성기 행렬(generator matrix) G 및 디코더(14)에 의해 수행되는 디코딩 동작을 위한 패리티 검사 행렬(parity-check matrix) H를 채용할 수 있다. 크기
Figure pct00006
의 정보 시퀀스 IS 1 , 크기
Figure pct00007
의 코드워드 IS 2 , 및
Figure pct00008
비트의 리던던시(패리티) 시퀀스를 갖는 LDPC 코드의 경우, 생성기 행렬 G는 크기
Figure pct00009
를 가지고 패리티 검사 행렬 H는 크기
Figure pct00010
를 갖는다.
패리티 검사 행렬
Figure pct00011
및 생성기 행렬
Figure pct00012
은 직교성을 향유하는데, 이는 선형적으로 독립적인
Figure pct00013
개의 행을 갖는 임의의 생성기 행렬
Figure pct00014
에 대해 선형적으로 독립적인
Figure pct00015
개의 행을 갖는 패리티 검사 행렬
Figure pct00016
이 존재하는 것을 말한다. 따라서, 생성기 행렬
Figure pct00017
의 임의의 행은 패리티 검사 행렬
Figure pct00018
의 행과 직교하여, 다음 식이 충족되도록 한다:
Figure pct00019
(1)
인코딩 동작은 정보 시퀀스 IS 1 과 생성기 행렬
Figure pct00020
사이의 승산에 의해 수행될 수 있고, 여기서 승산의 결과는 인코딩된 정보 시퀀스 IS 2 이다:
Figure pct00021
(2)
수신 측에서는, 생성기 행렬
Figure pct00022
과 패리티 검사 행렬
Figure pct00023
의 직교성으로 인해, 다음 식을 충족해야 한다:
Figure pct00024
(3)
여기서 IS 4 는 디코딩된, 크기
Figure pct00025
의 수신된 정보 시퀀스이다. 위의 식이 검증된다면, 정보 시퀀스 추정치 IS 4 가 올바른 것으로 가정될 수 있다.
일단 패리티 검사 행렬
Figure pct00026
이 생성되면, 생성기 행렬
Figure pct00027
을 획득할 수 있고 그 반대의 경우도 마찬가지이다. 따라서, 패리티 검사 행렬
Figure pct00028
을 결정하는 임의의 프로세스는 생성기 행렬
Figure pct00029
을 획득하는 등가 프로세스에 맵핑될 수 있으며, 그 반대의 경우도 마찬가지이므로, 패리티 검사 행렬
Figure pct00030
을 결정하는 것과 관련하여 설명 및 청구범위에 전반에 걸쳐 개시된 임의의 프로세스는 생성기 행렬
Figure pct00031
을 획득하는 등가의 프로세스를 포함하는 것으로 이해되어야 해며, 그 반대의 경우도 마찬가지이다.
또한, 유의해야 할 것은, 예를 들어, 이중 대각선 구조의 패리티 부분을 갖는 패리티 검사 행렬
Figure pct00032
과 같은 특정 구조의 패리티 검사 행렬
Figure pct00033
을 갖는 LDPC 코드는 (오직) 패리티 검사 행렬
Figure pct00034
를 사용하여 정보 시퀀스 IS 1 의 인코딩을 가능하므로 생성기 행렬
Figure pct00035
을 획득하는 것이 필요하지 않을 수 있다는 것이다(참조: T. J. Richardson and R. L. Urbanke, "Efficient encoding of low-density parity-check codes", IEEE TRANSACTIONS ON INFORMATION THEORY, Volume 47, Issue 2, Pages 638-656, August 2002).
패리티 검사 행렬
Figure pct00036
의 구체적인 형태는 이차 서브행렬
Figure pct00037
, 즉 순환 행렬(또는 약칭하여 "순환")으로 분할될 수 있는 정칙(regular) QC-LDPC 행렬
Figure pct00038
이며, 이는 예를 들어,
Figure pct00039
단위 행렬
Figure pct00040
Figure pct00041
위치에 따라 순환하여 오른쪽 시프트함으로써 획득될 수 있다:
Figure pct00042
(4)
Figure pct00043
(참조: M. P. C. Fossorier, "Quasi-Cyclic Low-Density Parity-Check Codes from Circulant Permutation Matrices", IEEE TRANSACTIONS ON INFORMATION THEORY, Volume 50, Issue 8, Pages 1788-1793, August 2004). 따라서, 정칙 QC-LDPC 행렬
Figure pct00044
은 다음 식을 충족하는 기저 행렬 B에 의해 정의될 수 있다:
Figure pct00045
(5)
또한, 비정칙 QC-LDPC 행렬
Figure pct00046
의 기저 행렬 B
Figure pct00047
로 구할 수 있으며, 여기서, "
Figure pct00048
"는 하다마드 곱(Hadamard product)을 나타내고,
Figure pct00049
(6)
Figure pct00050
를 갖는 마스크 행렬(mask matrix)을 나타낸다. 대안으로, 비정칙 QC-LDPC 행렬
Figure pct00051
의 기저 행렬 B는 크기
Figure pct00052
의 영 행렬을 나타내는 라벨링되지 않은 엔트리(때로는 "-1" 또는 별표 "*" 값으로 표현됨) 갖는 시프트 값
Figure pct00053
을 갖는 기저 행렬 B를 부분적으로 라벨링함으로써(만) 획득될 수 있다.
따라서, 인코더(12) 및 디코더(14)에서 QC-LDPC 코드를 채용하기 위해, 인코더(12) 및 디코더(14)는 순환 행렬, 시프트 값, 즉 기저 행렬 B의 라벨링된 엔트리에 대응하는 값, 및 (선택적으로) 마스크 행렬
Figure pct00054
를 제공받을 수 있다. 예를 들어, QC-LDPC 행렬
Figure pct00055
을 결정하기 위한 시프트 값을 선택하도록 구성된 장치는 시프트 값을 인코더(12) 및/또는 디코더(14)에 제공할 수 있다. 또한, 인코더(12) 및 디코더(14) 하나 이상의 비정칙 QC-LDPC 행렬
Figure pct00056
을 생성하기 위해 마스크 행렬
Figure pct00057
을 제공받을 수 있다.
또한, 유의해야 할 것은, QC-LDPC 행렬
Figure pct00058
(및 보다 일반적으로 임의의 LDPC 코드)은 그것의 등가 이분 그래프(equivalent bipartite graph)("태너 그래프(Tanner graph)")로 기술될 수 있으며, 태너 그래프의 각각의 에지는 복수의 변수 노드 중 하나의 변수 노드를 복수의 검사 노드 중 하나의 검사 노드에 연결한다는 것이다. 예를 들어,
Figure pct00059
행 및
Figure pct00060
열의 QC-LDPC 행렬
Figure pct00061
은 QC-LDPC 행렬
Figure pct00062
에서 대응하는 "1"이 존재하면 검사 노드와 변수 노드 사이에 에지를 갖는
Figure pct00063
개의 변수 노드와
Figure pct00064
개의 검사 노드를 갖는 등가 이분 그래프로 표현될 수 있다. (참조: R. Tanner, "A Recursive Approach to Low Complexity Codes", IEEE TRANSACTIONS IN INFORMATION THEORY, Volume 27, Issue 5, Pages 533-547, September 1981). 이와 관련하여, 유의해야 할 것은, 변수 노드는 코드워드 비트를 나타내고 검사 노드는 패리티 검사 방정식을 나타낸다는 것이다.
도 3은 각각, 정보 시퀀스 IS 1 IS 3 과 같은 일련의 정보 비트를 인코딩 또는 디코딩하기 위한 비정칙 QC-LDPC 코드를 제공하는 프로세스(22)의 흐름도를 도시한다. 프로세스(22)는, 예를 들어 컴퓨터로 구현될 수 있다. 예를 들어, 프로세스(22)는, 컴퓨터에 의해 실행되면, 컴퓨터로 하여금 프로세스(22)를 수행하게 하는 영구 저장된, 컴퓨터로 판독 가능한 명령어에 의해 구현될 수 있다. 비정칙 QC-LDPC 코드의 제공된 기저 행렬 B는 예를 들어, 디지털 통신 시스템(10)의 인코더(12) 및 디코더(14)에 제공되고, 인코더(12) 및 디코더(14)에 의해 각각 수행되는 인코딩 또는 디코딩, 즉 일련의 정보 비트를 인코딩 또는 디코딩하는 데 사용된다.
일련의 정보 비트를 인코딩 또는 디코딩하기 위한 비정칙 QC-LDPC 코드를 제공하는 프로세스(22)는 비정칙 QC-LDPC 코드의 기저 행렬 B의 엔트리를 제공하는 단계 24에서 시작할 수 있으며, 엔트리는 비정칙 QC -LDPC 행렬의 블록을 나타내고 각각의 블록은 시프트된 순환 행렬 또는 영 행렬을 나타낸다. 기저 행렬 B의 가능한 구조는 도 4에 도시되어 있다. 고밀도 부분에 "코어" 기저 행렬(도 4의 왼쪽 위에 회색으로 표시)이 있다. 코어 기저 행렬(core base matrix)은 인코딩이 용이하도록 이중 대각선 구조의 패리티 부분을 가지고 있다. 가장 높은 레이트가 요구되면, 정보 시퀀스는 코어 기저 행렬의 시프트 값만을 사용하여 인코딩된다. 보다 낮은 레이트가 용인될 수 있으면, 추가의 행과 열을 기저 행렬에 추가할 수 있다. 도 4에 도시된 바와 같이, 추가의 행과 열 사이의 중첩은 단위 행렬을 형성할 수 있지만, 하부 삼각형 형태도 또한 가능할 수 있다. 추가 행은 일반적으로 코어 기저 행렬의 행보다 낮은 가중치를 가지며, 송신될 코드워드에 추가의 패리티 비트를 (추가된 '대응 열'과 함께) 제공한다.
유의해야 할 것은, 기저 행렬 B는 m행 n열의 행렬이며, m 및 n은 정수라는 것이다. 기저 행렬 B는 더 많은 열과 행을 포함하여 확장될 수 있다. 예를 들어, 기저 행렬 B는 46행 68열의 행렬이거나, 또는 기저 행렬 B는 90행 112열의 행렬이거나 등등이다. 본 개시는 기저 행렬의 크기를 제한하지 않는다.
확장 부분은 일반적으로 확장 부분의 다른 모든 열보다 실질적으로 더 높은 가중치를 갖는 하나, 둘, 셋, 또는 그 이상의 높은 가중치 열을 포함한다. 예를 들어, 하나, 둘 또는 모든 높은 가중치 열은 빈 셀을 없을 수 있다. 즉, 영 행렬을 나타내는 엔트리가 없을 수 있다. 도 4에 도시된 바와 같이, 두 개의 높은 가중치 열에 대응하는 변수 노드는 펑처드로서 지시되고, "나머지" 서브행은 직교 서브행(또는 행 벡터)의 (중첩되지 않는) 계층으로 그룹화된다.
도 5는 크기 19×35(19행 35열)의 기저 행렬 B의 제공된 엔트리의 수치 예를 도시하며, 여기서 기저 행렬 B의 라벨링된 엔트리(셀)는 대응하는 시프트 값으로 지시되고 라벨링되지 않은 엔트리(영 행렬에 대응)는 비어 있다. 도 5에 도시된 바와 같이, 기저 행렬 B의 행은 17보다 큰 가중치를 갖는 상부와, 9보다 작은, 즉 상부의 행의 가중치의 절반보다 작은 가중치를 갖는 하부로 분할될 수 있다. 따라서, 도 5에 도시된 기저 행렬 B는 도 3에 도시된 프로세스(22)의 단계 26에 나타낸 바와 같이 행 1 내지 3을 포함하는 고밀도 부분 및 행 4 내지 19를 포함하는 저밀도 부분으로 분할될 수 있다 .
또한, 도 5에 도시된 바와 같이, 열 2 내지 35와 저밀도 부분의 중첩에 의해 형성된 서브행렬의 행은 직교 행의 계층(또는 그룹)으로 분할될 수 있으며, 각각의 계층은 거의 동일한 수의 셀을 포함한다. 또한, 고밀도 부분은 고밀도 부분의 0이 아닌 열에 기초하여 일련의 정보 비트를 용이하게 인코딩할 수 있게 하는 이중 대각선 서브행렬을 포함한다. 또한, 저밀도 부분은 코드 워드의 용이한 인코딩을 가능하게 하는 아래 삼각형 형태(lower triangular form)를 갖는 패리티 부분을 갖는 랩터형 확장을 제공한다.
도 5a는 크기 46×68(46행 68열)의 기저 행렬 B의 제공된 엔트리의 수치 예를 도시한다. 도 5a에서, 열 1 및 2는 펑처링된다. 행 3 내지 6에 대해서는, 행 9에서 시작하여, 여러 개의 직교 행 그룹이 있다. 직교 행은 열 방향 관점에서 중첩되지 않는 행이다. 예를 들어, 행 9와 10은 직교하고, 행 11과 12는 직교한다.
도 6 및 도 7은 기저 행렬의 기본 그래프의 상이한 설계를 도시한다. 본 개시에서의 용어 "기본 그래프"는 다수의 정사각형 상자를 포함하고, 각각의 정사각형 상자는 기본 패리티 검사 행렬 내의 요소를 나타낸다. 기본 패리티 검사 행렬의 0이 아닌 각각의 요소는 표시된 상자로 나타낸다. 각각의 표시된 상자는 기저 행렬에서의 시프트 값과 연관된다. 또한, 도 6 및 도 7에서, 열 1 및 2는 펑처드 열이다. 펑처드 열은 하나 이상의 열일 수 있다.
구체적으로, 도 6은 14행 36열을 갖는 기저 행렬의 기본 그래프의 예를 도시한다. 비펑처드 열(즉, 열 1 및 2를 제외함)의 경우, 행 7에서부터 시작하는, 즉 7행에서 14행까지, 이러한 행은 비충돌 의사 행 직교(non-conflict quasi-row orthogonal)이다. 특히, 행 7에서부터 시작하여, 행의 그룹 각각(예: 두 개의 인접한 행 각각)은 비충돌 의사 행 직교이다. 도 6에서 볼 수 있듯이, 표시된 상자는 중첩되지 않는다. 예를 들어, 행 7과 8은 직교하고, 행 9와 10은 직교하고, 행 11과 12는 직교하고, 행 13과 14는 직교한다. 이러한 행, 행 (7, 8), (9, 10) 및 (11, 12)를 직교 행(orthogonal row)이라고 한다. 직교 행의 경우, 각각 행의 표시된 상자는 열 방향 관점에서 중첩되치지 않는다. 그 그룹을 또한 직교 그룹이라고 할 수 있다.
이 실시예에서, 제1 세트의 행은 행 1 내지 6이다. 제2 세트의 행은 행 7에서 시작하여 행 14까지이다. 이 설계에서, 행 1 내지 6이 코어 기저 행렬의 행으로 간주되고, 행 7 내지 14는 확장 부분의 행으로 간주되며, 확장 부분의 모든 행은 비충돌 의사 행 직교이다. 행 1 내지 5가 코어 기저 행렬의 행으로 간주되고, 행 6 내지 14가 확장 부분의 행으로 간주되면, 코어 기저 행렬로부터 멀리 떨어져 있는 연장 부분의 대부분의 행은 비충돌 의사 행 직교이다.
유의해야 할 것은 도 6에서 직교 그룹은 두 개의 행을 포함한다는 것이다. 직교 그룹은 두 개보다 많은 행을 포함할 수도 있다. 상이한 직교 그룹이 동일한 수의 행 또는 상이한 수의 행을 가질 수 있다.
도 7은 13행 35열의 기저 행렬의 기본 그래프를 도시한다. 도 7에서, 행 확장의 직교 그룹은 행 8에서부터 시작한다. 예를 들어, 행 8과 9는 직교하고, 행 10 과 11은 직교하고, 행 12와 13은 직교한다. 도 7에서의 직교 그룹은 인접한 두 개의 직교 행, 즉 행 8과 9, 행 10과 11, 및 행 12와 13을 포함한다. 이 실시 예에서, 각각의 그룹은 두 개의 직교 행을 갖는다. 또한 각 그룹이 서로 다른 수의 행, 예를 들어 세 개의 직교 행 또는 네 개의 직교 행 등을 갖도록 수정될 수도 있다.
도 3에 도시된 프로세스(22)의 단계 28에서 더 나타낸 바와 같이, 기저 행렬 B의 열 1이 펑처링된다. 기저 행렬 B의 제공된 엔트리에 기초하여 인코더(12)에 의해 일련의 정보 비트를 인코딩하고 대응하는 코드워드(펑처링드 노드에 대응하는 정보 비트를 제외하고)를 채널(18)을 통해 디코더(14)에 전송한 후에, 인코더(14)는 도 8, 도 9 및 도 10의 단계 A, B 및 C로 도시된 바와 같이 플러딩 및 계층화된 디코딩 단계를 조합한 정규화된 최소 합 디코딩 프로세스(Min-Sum decoding process)를 사용하여 수신된 정보 비트를 반복적으로 디코딩할 수 있다. 또한, 디코딩 프로세스에서, 행렬의 확장된 부분(도 5의 어두운 회색으로 도시됨)에 대응하는 펑처드 열의 시프트 값이 행 및 열 시프팅 동작을 사용하여 0으로 설정될 수 있다는 사실을 이용할 수 있다. 또한, 디코딩 동작의 병렬성은, 계층화된 디코딩 단계가 적용되는 고밀도 부분(즉, 비펑처드 열에 대응하는 부분)에 직교 행의 그룹을 제공함으로써 증가될 수 있다.
도 8에 도시된 단계 A로 나타낸 바와 같이, 펑처드 열의 대수 우도비(log-likelihood-ratios, llr-s)는 길이 N의 벡터인 llr, sg0 j , sg j , min j , submin j , col j , v2c j , csg j , c2v j , nsg0 j , сmin j , psg j , pmin j , psubmin j , pcol j , nsg j , nmin j , nsubmin j , ncol j ,nc2v j 와 정규화된 최소 합 디코딩 프로세스의 스케일 파라미터를 나타내는 alpha를 갖는 다음 식을 사용하여 계산된다:
llr 은 ASIC(Application-Specific Integrated Circuit) 레지스터에 저장될 수 있은 펑처드 노드의 llr-s 벡터를 나타낸다.
sg0 j 는 랜덤 액세스 메모리(random access memory, RAM)에 저장될 수 있는 그룹 내의 제j 행과 펑처드 노드의 메시지(v2c)를 검사하는 변수의 부호를 나타낸다.
sg j , min j , submin j , col j 는 1 <= j <= n 인 주어진 직교성 그룹(orthogonality group)의 제j 행에서의 부호, 최소 값, 하위 최소 값(sub-minimums) 및 0 기준(zero-based) argMinimums의 승산을 나타낸다. 이러한 모든 값은 디코딩 프로세스를 시작하기 전에 계산되어 메모리에 저장될 수 있다.
psg j , pmin j , psubmin j , pcol j 는 현재 직각성 그룹의 제j 행에서의 부호, 최소 값, 하위 최소 값 및 argMinimum의 갱신된 승산을 나타낸다. 이 값은 펑처드 열 이외의 각각의 열에 대해 결정된다.
먼저, csg j , |c2v j |, 및 c2v는 1 <= j <= n에 대해 다음과 같이 계산된다:
csg j = sg j * sg0 j ,
● |c2v j | = (col j ==0)? submin j : min j , 및
c2v = csg * |c2v|.
그런 다음 nsg0 j , cmin j v2c j 는 다음과 같이 계산된다:
nsg0 j = sign(v2c j ),
сmin j = | v2c j |* alpha,
v2c j = llr - c2v j .
이제, 도 9에 도시된 단계 B로 나타낸 바와 같이, 현재의 직교성 그룹의 각 행에서 펑처드 열의 부호뿐만 아니라 새로운 최소 값, 서브 최소 값 및 argMinimums가 1 <= j <= n에 대해 다음과 같이 계산된다:
sg0 j = nsg0 j
nsg j = nsg0 j * psg j ,
ncol j =(cmin j > pmin j )? pcol j : 0,
nmin j =(cmin j > pmin j )? pmin j : cmin j
nsubmin j =(cmin j > pmin j )?((cmin j > psubmin j )? psubmin j : cmin j ) : pmin j .
이 값들은 sg j , min j , submin j , col j sg0 j 가 다음의 디코딩 반복을 위해 현재 저장된 값을 대체하는 메모리에 저장된다.
마지막으로, 펑처링드 노드의 psum, c2vsum 및 새로운 llr-s는 도 10에 도시된 단계 C로 나타낸 바와 같이 다음과 같이 계산된다:
psum = psg 1 * pmin 1 + . + psg n * pmin n ,
c2vsum = c2v 1 + . + c2v n , 및
llr = llr - c2vsum + psum.
또한, 직교 행렬의 각각의 그룹이 3 클록 사이클 내에 처리되고, 모든 llr-s가 레지스터에 저장되며, 가용 프로세서의 수는 QC-LDPC 행렬의 열의 수와 같고
sg j , min j , submin j , col j 가 제1 클록 사이클이 시작되기 전에 레지스터에 로드되는 다음의 예로부터 명백해지는 바와 같이, 제안된 방식은 하드웨어로 효율적으로 구현될 수 있다.
비펑처드 열의 처리는 동일한 방식을 사용하여 이루어지고, 펑처드 열의 처리는 전술한 식들에 따라 이루어진다:
클록 사이클 1. 펑처드 열 이외의 모든 열에 대해 c2v 메시지가 계산된다. 계산된 c2v 메시지는 llr-s에서 감산되기 때문에, llr-s가 저장되었던 동일한 레지스터에 저장되는 v2c 메시지를 획득한다. 획득된 v2c 메시지는 부분 최소 값을 결정하는 데 사용되는 nsg0cmin을 결정하는 데 사용된다. 또한, 클록 사이클 1에서, 이전(previous) 그룹의 펑처링드 열의 11r-s가 따라서 획득된다. 그 후, 이들 llr-s는 시프트되어 레지스터에 저장된다. 결과적으로, 펑처드 열의 llr-s는 다른 열의 llr-s보다 1 클록 사이클 후에 계산되지만, 1 클록 사이클 후(두 번째 클록 사이클에서)에도 사용된다.
클록 사이클 2. 최소 값(즉, psg j , pmin j , psubmin j , pcol j )은 부분 최소 값으로부터 계산된다. 또한 nsg0, cminc2v는 펑처드 열에 대해 계산된다. 그 후 nsg j , nmin j , nsubmin j , ncol j 의 값이 계산되어 메모리에 저장된다.
클록 사이클 3. 펑처드 열 이외의 모든 열에 대해 nsg j , nmin j , nsubmin j , ncol j 의 획득된 값에서, 새로운 c2v 메시지가 계산될 수 있다. 그 후, 그 값은 v2c 메시지로 요약되고 모든 비펑처드 열의 llr-s가 획득된다. 그런 다음 획득된 llr-s가 레지스터에 저장된다. 또한이 이 클록 사이클에서, psumc2vsum이 계산된다.
기저 행렬의 하나 보다 많은 열이 펑처드로서 지시되는 경우, 전술한 변경된 최소 합 디코딩 프로세스는 그에 따라 확장되어야 한다. 예를 들어, 두 개의 펑처드 열의 처리는 다음 방식에 따라 이루어질 수 있다:
클록 사이클 1a) 모든 비펑처드 열에 대해 c2v 메시지가 계산된다. c2v 메시지는 llr-s에서 감산된다. 결과적으로, v2c 메시지는 llr-s와 동일한 레지스터에 저장될 수 있도록 획득된다. 이러한 v2c 메시지를 사용하여 nsg0cmin 값을 얻을 수 있다. 이 값은 부분 최소 값을 얻는 데 사용된다.
클록 사이클 1b) 또한, 제1 클록 사이클에서 2개의 펑처드 열의 llr-s가 이전(previous)의 직교 그룹에 대해 획득될 수 있다. 그 후에, 이들 llr-s는 시프트되어 레지스터에 저장될 수 있다. 결과적으로, 펑처드 열에 대한 llr-s는 1 클록 후에 획득될 수 있지만 1 클록 뒤에 필요하기 때문에 문제가 되지 않는다.
클록 사이클 2a) 최소 값은 부분 최소 값으로부터 수집되며, 즉 psg j , pmin j , psubmin j , pcol j 에 대한 값이 획득된다.
클록 사이클 2b) 이 클록 사이클에서, nsg0, cminc2v 가 2개의 펑처드 열에 대해 계산된다. 그 후, nsg j , nmin j , nsubmin j ,ncol j 의 값이 계산되어 메모리에 저장된다.
클록주기 3a) 모든 비펑처드 열에 대해 nsg j , nmin j , nsubmin j , ncol j 의 획득된 값으로부터, 메시지 c2v가 계산되고, 후에 v2c 메시지로 합산된 후, 모든 비펑처드 열의 llr-s가 제공된다. llr-s는 시프트되어 레지스터에 저장된다.
클록 사이클 3b) 이 클록 사이클에서, 메시지 nc2v와 합 c2vsumnc2vsum이 계산된다.
전술한 방식을 사용하면, 단계 1a), 2a), 3a)에 펑처드 노드를 위한 특별한 프로세서가 필요할 수 있고, 또한 연산 1b, 2b), 3b)을 수행하는 각각의 비펑처드 열을 위한 프로세서가 필요할 수 있다. QC-LDPC 행렬이 m개의 직교 서브행 그룹을 갖는다면, 반복 당 3 * m 클록이 필요할 수 있다. 모든 서브프로세서 1a), 2a, 3a), 1b), 2b), 3b)는 이용 가능한 3 클록 중에서 2 클록에 대해 지연(stall)을 갖게될 것이다.
프로세서 당 4 클록이지만 프로세서 수가 적은(펑처드 열에 1개의 프로세서, 네 개의 비펑처드 열에 1개의 프로세서) 다른 훨씬 더 좋은 메모리 효율적인 방식이 사용될 수 있다.
Clock Ia) 1a)로부터의 계산이 비펑처드 열의 1/4(first quarter)에 대해 수행된다.
Clock Ib) 이전 그룹의 제1 행의 펑처드 열의 llr-s가 계산된다. 그 후에, llr-s는 시프트되어 레지스터에 저장된다.
클록 IIa) 2)의 동작은 비펑처드 열에 대해 수행되고 1a)의 동작은 비펑처드 열의 2/4(second quarter)에 대해 수행된다.
클록 IIb) 펑처드 열에 대해 nsg0, cminc2v nsg0가 계산되고 nsg j , nmin j , nsubmin j , ncol j 가 획득되어 레지스터에 저장된다.
클록 IIIa) 3a)의 동작은 펑처링되지 않은 것(비펑처드)의 1/4에 대해 수행된다. 2a)의 동작은 비펑처드 열의 2/4에 대해 수행된다. 1a)의 동작은 비펑처드 열의 3/4(third quarter)에 대해 수행된다.
클록 IIIb) nsg j , nmin j , nsubmin j ,ncol j 의 값이 결정되고 메모리에 저장된다. 또한 c2vsum 합이 계산된다.
클록 IVa) 3a)의 동작이 비펑처드 열의 2/4에 대해 수행된다. 2a)의 동작은 비펑처드 열의 3/4에 대해 수행된다. 1a)의 열은 비펑처드 열의 4/4(fourth quart)에 대해 수행된다.
클록 IVb) 메시지 nc2v 및 합 nc2vsum이 계산된다.
예를 들어, 프로세서의 수가 감소되고 그에 따라 처리량이 감소되는 경우,이 접근법의 일반화가 가능하다.
문자 A-I로 처리 단계를 나타내는 경우:
● A - 비펑처드 노드에 대해 c2v를 계산. v2c 결정하고 llr-s를 대체하는 레지스터에 저장. nsg0cmin을 계산. 부분 최소 값 계산.
● B - 부분 최소 값, psg j , pmin j , psubmin j , pcol j 에서 최소 값을 얻음.
● C - 모든 비펑처드 노드에 대해 nsg j , nmin j , nsubmin j , ncol j 로부터 새로운 c2v를 계산하여 v2c와 합산하여 이들 열의 llr-s를 획득한 다음, 이를 시프트하여 레지스터에 저장.
● D - 펑처드 노드에 대해 nsg0, cmin c2v를 계산.
● E - nsg j , nmin j , nsubmin j ,ncol j 결정.
● F - c2vsum 계산.
● G - nc2vsum 계산.
● H - nc2v 계산.
● I - 펑처드 열의 llr-s 계산. 이를 시프트하여 레지스터에 저장.
예를 들어, (고밀도 및 저밀도 부분에서) 세 개의 직교 서브행의 그룹은 각각 다음과 같이 표시되는 두 개의 직교 행을 포함한다:
● 1-2 - 제1 그룹
● 3-4 - 제2 그룹
● 5-6 - 제3 그룹
12개의 비펑처드 열은 다음을 같다:
j.1 - 제j 행에 있는 비어 있지 않은 셀의 전반부(first half), 1 <= j <= 6 및
j.2 - 제j 행의 비어 있지 않은 셀의 후반부(second half), 1 <= j <= 6,
동작 A, B 및 C는 비펑처드 열에 대해 수행되고 동작 D, E, F, G, H 및 I는 펑처드 열에 대해 수행되며, 도 11 및 도 12는 3 클록 사이클 방식에 대한 스케줄 및 4 클록 사이클 스케줄을 나타낸다. 도 11 및 도 12로부터 알 수 있는 바와 같이, 높은 병렬성이 달성될 수 있다.
또한, 유의해야 할 것은, 인코더(12) 및 디코더(14)는 제공된 기저 행렬 B에 기초하여 인코딩 및 디코딩 동작을 수행할 수 있을 뿐만 아니라, 인코더(12) 및 디코더(14)는 제공된 기저 행렬 B를 사용하여 서로 다른 송신 시나리오, 예컨대 채널 품질 및/또는 처리량 요건에서 서로 다른 송신 시나리오에 따라, 예를 들어, 제공된 기저 행렬 B의 저밀도 부분의 행 및/또는 패리티 부분의 열을 제거(또는 무시)함으로써, 상이한 레이트의 비정칙한 QC-LDPC 자식 코드를 유도할 수 있다.
본 발명에서의 인코더 또는 디코더, 또는 기지국, 단말기 또는 코어 네트워크 장치의 기능을 수행하도록 구성된 적어도 하나의 프로세서는 CPU(Central Processing Unit), 범용 프로세서, DSP(Digital Signal Processor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그램 가능한 논리 디바이스, 트랜지스터 논리 디바이스, 하드웨어 구성요소 또는 이들의 임의의 조합일 수 있다. 제어기/프로세서는 본 발명에 개시된 내용을 참조하여 기술된 다양한 예시적인 논리 블록, 모듈 및 회로를 구현하거나 실행할 수 있다. 대안적으로, 프로세서는 연산 기능을 구현하는 프로세스들의 조합, 예를 들어 하나 이상의 마이크로 프로세서의 조합, 또는 DSP와 마이크로 프로세서의 조합일 수 있다.
본 발명에 개시된 내용을 참조하여 기술된 방법 또는 알고리즘의 단계들은 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들의 조합을 사용하여 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 휴대형 디스크, CD-ROM, 또는 해당 기술분야에 공지된 임의 다른 형태의 저장 매체에 위치할 수 있다. 예를 들어, 저장 매체는 프로세서에 결합되어, 프로세서가 저장 매체로부터 정보를 판독하거나 정보를 저장 매체에 기록할 수 있도록 한다. 물론, 저장 매체는 또한 프로세서의 구성요소일 수도 있다. 프로세서 및 저장 매체는 ASIC에 위치할 수 있다. 또한, ASIC은 사용자 장비에 위치할 수 있다. 물론, 프로세서 및 저장 매체는 개별 구성요소로서 사용자 장비에 존재할 수 있다.
기저 행렬과 연관된 파라미터, 기저 행렬 또는 기저 행렬을 기반으로 확장된 행렬은 메모리에 저장될 수 있다. 메모리는 적어도 하나의 프로세서와 독립적일 수 있다. 메모리는 적어도 하나의 프로세서에 통합될 수 있다. 메모리는 컴퓨터로 판독 가능한 저장 매체의 일종이다.
전술한 실시예의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어 프로그램이 실시예를 구현하는 데 사용될 때, 실시예는 완전히 또는 부분적으로 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 컴퓨터 프로그램 명령어가 컴퓨터상에 로딩되어 실행될 때, 본 발명의 실시예에 따른 프로시저 또는 기능의 전부 또는 일부가 생성된다. 컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크 또는 다른 프로그램 가능한 장치일 수 있다. 컴퓨터 명령어은 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있거나, 컴퓨터로 판독 가능한 저장 매체로부터 또 다른 컴퓨터로 판독 가능한 저장 매체로 전송될 수 있다. 예를 들어, 컴퓨터 명령어는 웹사이트, 컴퓨터, 서버 또는 데이터 센터에서 다른 웹사이트, 컴퓨터, 서버 또는 데이터 센터로 유선 방식(예: 동축 케이블, 광섬유 또는 디지털 가입자 라인(digital subscriber line, DSL)) 또는 무선 방식(예: 적외선, 라디오 및 마이크로웨이브 등) 방식으로 송신될 수 있다. 컴퓨터로 판독 가능한 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 사용 가능한 매체 또는 하나 이상의 사용 가능한 매체를 통합하는 서버 또는 데이터 센터와 같은 데이터 저장 장치일 수 있다. 사용 가능한 매체는 자기 매체(예: 소프트 디스크, 하드 디스크 또는 자기 테이프), 광학 매체(예: DVD(Digital Versatile Disc)), 반도체 매체(예를 들어, SSD(Solid State Disk)) 등을 포함할 수 있다.
본 개시에 대한 이상의 설명은 당업자라면 누구나 본 개시를 사용 또는 실시할 수 있게 하기 위해 제공되었다. 당업자라면 본 개시에 대한 다양한 수정을 쉽게 알 수 있을 것이며, 본 명세서에 정의된 일반적인 원리는 본 개시의 사상 또는 범위를 벗어나지 않고 다른 변형에 적용될 수 있다. 따라서, 본 개시는 본 명세서에 기재된 예 및 설계에 한정되는 것이 아니라 본 명세서에 개시된 원리 및 신규한 특징과 모순되지 않는 가장 넓은 범위를 부여하려는 것이다.

Claims (35)

  1. 일련의 정보 비트를 인코딩 또는 디코딩하기 위한 비정칙 QC-LDPC 코드의 기저 행렬의 엔트리를 제공하는 단계 - 상기 엔트리는 비정칙 QC-LDPC 행렬의 블록을 나타내고, 각각의 블록은 시프트된 순환 행렬 또는 영 행렬을 나타냄 -;
    상기 기저 행렬의 행을 제1 세트와 제2 세트로 분할하는 단계 - 상기 제1 세트의 행은 상기 제2 세트의 행보다 높은 가중치를 가짐 -;
    상기 제2 세트의 행으로 형성되는 행렬의 열의 수를 선택하는 단계 - 상기 선택된 열로 형성되는 서브행렬의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 최대 수의 직교 행으로 이루어지며, 상기 선택은 서로 다른 그룹의 수에 기초함 -; 및
    선택되지 않은 열에 대응하는 정보 비트를 펑처드(punctured)로서 지시하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 선택되지 않은 열의 수는 하나 또는 둘인, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제2 세트의 행으로 형성되는 행렬의 열의 수를 선택하는 단계는, 상기 제2 세트의 행으로 형성되는 행의 열을 가중치로 순서화(ordering) 또는 그룹화(grouping)하고, 임계 값 이하의 가중치를 갖는 열을 선택하는 단계를 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 이중 대각선 구조 또는 삼각형 구조를 갖는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 삼각형 구조 또는 단위 행렬 구조를 갖는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 비펑처드(non-punctured) 정보 비트에 대응하는 상기 제1 세트의 행으로 형성되는 행렬의 열로 형성되는 행렬의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 직교 행(orthogonal row)으로 이루어지는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 방법은,
    제공된 상기 기저 행렬의 엔트리에 기초하여 상기 일련의 정보 비트에 대응하는 코드워드를 결정하는 단계; 및
    펑처드로서 지시되는 정보 비트를 제외하고 상기 코드워드를 송신하는 단계를 더 포함하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 방법은, 제공된 상기 기저 행렬의 엔트리 및 어느 정보 비트가 펑처링되어 있는지에 관한 정보에 기초하여, 수신된 일련의 정보 비트를 디코딩하는 단계를 더 포함하며, 상기 디코딩은 플러딩 및 계층화된 디코딩 작업(flooding and layered decoding operation)을 포함하며, 상기 계층은 서로 다른 그룹에 대응하는, 방법.
  9. 디코더로서,
    비정칙 QC-LDPC 코드의 기저 행렬의 엔트리를 저장하는 비일시적인 메모리를 포함하고, 상기 기저 행렬의 열은 제1 세트와 제2 세트로 분할되고, 상기 제1 세트는 하나 이상의 열을 포함하고, 상기 제2 세트의 열은 직교 행의 그룹을 포함하는 행렬을 형성하며;
    상기 디코더는 상기 제1 세트의 하나 이상의 열에 대응하는 변수 노드에 대한 플러딩 디코딩 프로세스(flooding decoding process) 및 상기 제2 세트의 열에 대응하는 노드에 대한 계층화된 디코딩 프로세스(layered decoding process)에 기초하여, 수신된 일련의 정보 비트를 디코딩하도록 구성되는,
    디코더.
  10. 제9항에 있어서,
    상기 제1 세트의 하나 이상의 열에 대응하는 변수 노드는 펑처드(punctured)로서 지시되는, 디코더.
  11. 제9항 또는 제10항에 있어서,
    상기 제1 세트의 열의 수는 하나 또는 둘인, 디코더.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 기저 행렬의 행은 제1 세트와 제2 세트로 분할되고, 상기 제1 세트의 행은 상기 제2 세트의 행보다 가중치가 큰, 디코더.
  13. 제12항에 있어서,
    상기 제1 세트의 행으로 형성되는 행렬의 열의 서브세트로 이루어지는 행렬은 이중 대각선 구조 또는 삼각형 구조를 갖는, 디코더.
  14. 제12항 또는 제13항에 있어서,
    상기 제2 세트의 행으로 형성되는 상기 행렬의 열의 서브세트로 이루어지는 행렬은 삼각형 구조 또는 단위 행렬 구조를 갖는, 디코더.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 제2 세트의 열의 엔트리를 중첩시켜 형성되는 행렬의 행과 상기 제1 세트의 행은 서로 다른 그룹으로 분할되고, 각각의 그룹은 직교 행으로 이루어지는, 디코더.
  16. 명령어를 저장한, 컴퓨터로 판독 가능한 비일시적인 매체로서,
    상기 명령어는 컴퓨터에 의해 수행될 때, 상기 컴퓨터로 하여금 비정칙 QC-LDPC 행렬의 기저 행렬을 제공하게 하고, 상기 기저 행렬은 열과 행으로 형성되고, 상기 열은 펑처드 변수 노드에 대응하는 하나 이상의 열과 비펑처드 변수 노드에 대응하는 열로 분할 가능하고, 상기 행은 제1 가중치보다 큰 가중치를 갖는 제1 행과, 제2 가중치보다 작은 가중치를 갖는 제2 행으로 분할 가능하고, 상기 제2 가중치는 상기 제1 가중치 이하이며, 상기 제2 행과 상기 비펑처드 변수 노드에 대응하는 열의 중첩은 직교 행 벡터의 그룹으로 분할 가능한,
    컴퓨터로 판독 가능한 비일시적인 매체.
  17. 장치로서,
    기저 행렬에 기초하여 일련의 정보 비트를 인코딩 또는 디코딩하도록 구성된 하나 이상의 프로세서를 포함하고,
    상기 기저 행렬은 복수의 행 및 복수의 열을 포함하며, 상기 복수의 열은 하나 이상의 펑처드 열과 복수의 비펑처드 열을 포함하고,
    상기 복수의 행은 제1 세트와 제2 세트를 포함하며, 상기 비펑처드 열에 대한 상기 제2 세트의 행은 하나 이상의 그룹을 포함하고, 상기 하나 이상의 그룹 각각은 둘 이상의 연속하는 직교 행을 포함하는,
    장치.
  18. 제17항에 있어서,
    상기 비펑처드 열에 대한 상기 제2 세트의 행은 둘 이상의 그룹을 포함하고, 상기 둘 이상의 그룹은 연속하는, 장치.
  19. 제17항 또는 제18항에 있어서,
    상기 제2 세트의 각각의 인접한 두 행은 직교인, 장치.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 기저 행렬은 46행 68열을 포함하는, 장치.
  21. 제17항 내지 제20항 중 어느 한 항에 있어서,
    제1 열과 제2 열이 상기 펑처드 열인, 장치.
  22. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 기저 행렬은 상기 제1 행에서부터 시작하는 복수의 행를 갖는 코어 기저 행렬을 포함하고, 상기 행의 제1 세트는 상기 제1 행에서부터 시작하고 상기 행의 제2 세트는 상기 제1 세트의 마지막 행의 다음 행에서부터 시작하는, 장치.
  23. 제17항 내지 제22항 중 어느 한 항에 있어서,
    상기 제2 세트의 행은 제4 행에서부터 시작하거나 상기 제4 행보다 큰 행에서부터 시작하는, 장치.
  24. 방법으로서,
    코딩 또는 디코딩될 일련의 정보 비트를 획득하는 단계; 및
    기저 행렬에 기초하여 상기 시퀀스 정보 비트를 인코딩 또는 디코딩하는 단계 - 상기 기저 행렬은 복수의 행과 복수의 열을 포함하며, 상기 복수의 열은 하나 이상의 펑처드 열과 복수의 비펑처드 열을 포함하고, 상기 복수의 행은 제1 세트와 제2 세트를 포함하며, 상기 비펑처드 열에 대한 상기 제2 세트의 행은 하나 이상의 그룹을 포함하고, 상기 하나 이상의 그룹 각각은 둘 이상의 연속하는 직교 행을 포함함 -
    를 포함하는 방법.
  25. 장치로서,
    코딩 또는 디코딩될 일련의 정보 비트를 획득하기 위한 수단; 및
    기저 행렬에 기초하여 시퀀스 정보 비트를 인코딩 또는 디코딩하기 위한 수단 - 상기 기저 행렬은 복수의 행과 복수의 열을 포함하며, 상기 복수의 열은 하나 이상의 펑처드 열과 복수의 비펑처드 열을 포함하고, 상기 복수의 행은 제1 세트와 제2 세트를 포함하며, 상기 비펑처드 열에 대한 상기 제2 세트의 행은 하나 이상의 그룹을 포함하고, 상기 하나 이상의 그룹 각각은 둘 이상의 연속하는 직교 행을 포함함 -
    을 포함하는 장치.
  26. 제24항 또는 제25항에 있어서,
    상기 비펑처드 열에 대한 상기 제2 세트의 행은 둘 이상의 그룹을 포함하고, 상기 둘 이상의 그룹은 연속하는, 방법 또는 장치.
  27. 제24항 내지 제26항 중 어느 한 항에 있어서,
    상기 제2 세트의 각각의 인접한 두 개의 행은 직교하는, 방법 또는 장치.
  28. 제24항 내지 제27항 중 어느 한 항에 있어서,
    상기 기저 행렬은 46행 68열을 포함하는, 방법 또는 장치.
  29. 제24항 내지 제28항 중 어느 한 항에 있어서,
    제1 열 및 제2 열이 상기 펑처드 열인, 방법 또는 장치.
  30. 제24항 내지 제29항 중 어느 한 항에 있어서,
    상기 기저 행렬은 상기 제1 행에서부터 시작하는 복수의 행를 갖는 코어 기저 행렬을 포함하고,
    상기 행의 제1 세트는 상기 제1 행에서부터 시작하고, 상기 행의 제2 세트는 상기 제1 세트의 마지막 행의 다음 행에서부터 시작하는, 방법 또는 장치.
  31. 제24항 내지 제30항 중 어느 한 항에 있어서,
    상기 제2 세트의 행은 제4 행에서부터 시작하거나 상기 제4 행보다 큰 행에서부터 시작하는, 방법 또는 장치.
  32. 제17항 내지 제31항 중 어느 한 항에 있어서,
    상기 장치는 기지국 또는 단말기에 배치되는, 장치.
  33. 제17항 내지 제31항 중 어느 한 항에 따른 장치를 포함하는 통신 시스템.
  34. 컴퓨터상에서 실행될 때, 컴퓨터로 하여금 제24항 내지 제31항 중 어느 한 항에 따른 방법을 실행하게 하는 명령어를 포함하는, 컴퓨터로 판독 가능한 저장 매체.
  35. 컴퓨터상에서 실행될 때, 컴퓨터로 하여금 제24항 내지 제31항 중 어느 한 항에 따른 방법을 실행하게 하는 명령어를 포함하는 컴퓨터 프로그램 제품.
KR1020197014018A 2016-11-03 2017-05-25 Ldpc 코드를 인코딩 및 디코딩하기 위한 방법 및 장치 KR102155539B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/RU2016/000746 WO2018084735A1 (en) 2016-11-03 2016-11-03 Efficiently decodable qc-ldpc code
RUPCT/RU2016/000746 2016-11-03
PCT/CN2017/086017 WO2018082290A1 (en) 2016-11-03 2017-05-25 Method and apparatus for encoding and decoding ldpc codes

Publications (2)

Publication Number Publication Date
KR20190065420A true KR20190065420A (ko) 2019-06-11
KR102155539B1 KR102155539B1 (ko) 2020-09-14

Family

ID=57680462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197014018A KR102155539B1 (ko) 2016-11-03 2017-05-25 Ldpc 코드를 인코딩 및 디코딩하기 위한 방법 및 장치

Country Status (9)

Country Link
US (2) US10567002B2 (ko)
EP (2) EP3533146A4 (ko)
JP (1) JP7152394B2 (ko)
KR (1) KR102155539B1 (ko)
CN (2) CN109891753A (ko)
AU (1) AU2017355038B2 (ko)
BR (1) BR112019009090A2 (ko)
RU (1) RU2739465C2 (ko)
WO (2) WO2018084735A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018084735A1 (en) * 2016-11-03 2018-05-11 Huawei Technologies Co., Ltd. Efficiently decodable qc-ldpc code
WO2018128559A1 (en) 2017-01-09 2018-07-12 Huawei Technologies Co., Ltd. Efficiently decodable qc-ldpc code
SG11202009379VA (en) * 2017-03-24 2020-10-29 Zte Corp Processing method and device for quasi-cyclic low density parity check coding
CN109120276B (zh) 2017-05-05 2019-08-13 华为技术有限公司 信息处理的方法、通信装置
US10879927B2 (en) * 2017-05-17 2020-12-29 Futurewei Technologies, Inc. Compact low density parity check (LDPC) base graph
AU2017418080B9 (en) 2017-06-15 2021-01-28 Huawei Technologies Co., Ltd. Information processing method and communication apparatus
CN109150197A (zh) 2017-06-27 2019-01-04 华为技术有限公司 信息处理的方法、装置和通信设备
JP6789446B2 (ja) * 2018-05-29 2020-11-25 三菱電機株式会社 送信機、受信機、通信システム、符号化率の変更方法、制御回路およびプログラム
WO2020145516A1 (ko) * 2019-01-07 2020-07-16 엘지전자 주식회사 무선 통신 시스템에서 저밀도 패리티 체크 행렬을 이용한 채널 코딩을 수행하는 방법 및 장치
CN109936379B (zh) * 2019-01-24 2021-07-09 南京大学 一种多码率ldpc码的构造方法及其解码装置
CN110611510B (zh) * 2019-09-17 2021-03-23 天地信息网络研究院(安徽)有限公司 一种二元ldpc短码构造方法及其构造装置、终端、存储介质
CN112583420B (zh) * 2019-09-30 2024-01-09 上海华为技术有限公司 一种数据处理方法和译码器
US10872038B1 (en) * 2019-09-30 2020-12-22 Facebook, Inc. Memory organization for matrix processing
CN112751571A (zh) 2019-10-30 2021-05-04 华为技术有限公司 一种ldpc的编码方法及装置
CN113422611B (zh) * 2021-05-19 2022-11-04 上海大学 一种qc-ldpc编码器的高度并行编码方法
US11513895B1 (en) 2021-06-11 2022-11-29 Western Digital Technologies, Inc. Data storage device processing problematic patterns as erasures
US11929762B2 (en) 2021-11-24 2024-03-12 Samsung Electronics Co., Ltd. Low density parity check decoder and storage device
CN117081605A (zh) * 2022-05-10 2023-11-17 华为技术有限公司 Ldpc的编译码方法和相关装置
KR20230164328A (ko) * 2022-05-25 2023-12-04 삼성전자주식회사 통신 시스템에서 저밀도 패리티 검사 부호의 레이어드 복호화 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100739510B1 (ko) * 2004-06-16 2007-07-13 포항공과대학교 산학협력단 반구조적 블록 저밀도 패리티 검사 부호 부호화/복호 장치및 방법
KR101433375B1 (ko) * 2006-12-04 2014-08-29 삼성전자주식회사 통신 시스템에서 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
KR101445080B1 (ko) * 2008-02-12 2014-09-29 삼성전자 주식회사 하이브리드 자동 반복 요구 방식을 사용하는 통신 시스템에서 신호 송신 방법 및 장치

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1166448B1 (de) * 1999-04-07 2003-12-03 Siemens Aktiengesellschaft Verfahren zur kanalcodierung
KR100834662B1 (ko) * 2001-11-21 2008-06-02 삼성전자주식회사 부호분할 다중접속 이동통신시스템에서의 부호화 장치 및 방법
US7376883B2 (en) * 2003-10-27 2008-05-20 The Directv Group, Inc. Method and system for providing long and short block length low density parity check (LDPC) codes
US7127659B2 (en) * 2004-08-02 2006-10-24 Qualcomm Incorporated Memory efficient LDPC decoding methods and apparatus
DE602005026754D1 (de) * 2004-08-10 2011-04-21 Samsung Electronics Co Ltd Gerät und Methode für das Kodieren und Dekodieren von Blockparitätsprüfcodes geringer Dichte (LDPC)
US7757150B2 (en) * 2004-08-13 2010-07-13 Nokia Corporation Structured puncturing of irregular low-density parity-check (LDPC) codes
WO2006039801A1 (en) * 2004-10-12 2006-04-20 Nortel Networks Limited System and method for low density parity check encoding of data
US7783961B2 (en) * 2005-07-01 2010-08-24 Nec Laboratories America, Inc. Rate-compatible low density parity check coding for hybrid ARQ
KR100946905B1 (ko) * 2005-09-27 2010-03-09 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
US20090183047A1 (en) * 2006-03-06 2009-07-16 Mattias Lampe Method for Generating Ldpc Codes and Apparatus Using Ldpc Codes
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
KR100834650B1 (ko) * 2006-09-04 2008-06-02 삼성전자주식회사 통신 시스템에서 신호 송수신 장치 및 방법
US8161363B2 (en) * 2006-12-04 2012-04-17 Samsung Electronics Co., Ltd Apparatus and method to encode/decode block low density parity check codes in a communication system
TW201334425A (zh) * 2007-01-24 2013-08-16 Qualcomm Inc 可變大小之封包的低密度同位檢查編碼與解碼
US8359522B2 (en) * 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
TWI362855B (en) * 2007-07-10 2012-04-21 Ind Tech Res Inst Multiplexing method and apparatus thereof for data switching
CN101459430B (zh) * 2007-12-14 2010-12-08 中兴通讯股份有限公司 低密度生成矩阵码的编码方法及装置
KR101503059B1 (ko) * 2008-02-26 2015-03-19 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널 부호/복호 방법 및 장치
PL2099135T3 (pl) * 2008-03-03 2018-07-31 Samsung Electronics Co., Ltd. Urządzenie i sposób kodowania i dekodowania kanałowego w systemie komunikacyjnym wykorzystującym kody sprawdzania parzystości o niskiej gęstości
JP2010114862A (ja) * 2008-10-10 2010-05-20 Panasonic Corp 符号化器、送信装置及び符号化方法
WO2010135857A1 (zh) * 2009-05-25 2010-12-02 华为技术有限公司 采用线性分组码的编码方法、装置及线性分组码生成方法、装置
US8375278B2 (en) * 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
US8495450B2 (en) 2009-08-24 2013-07-23 Samsung Electronics Co., Ltd. System and method for structured LDPC code family with fixed code length and no puncturing
KR101867311B1 (ko) * 2010-12-21 2018-07-19 주식회사 골드피크이노베이션즈 Ack/nack 자원 할당 방법 및 장치와 이를 이용한 ack/nack 신호 전송 방법
US8739001B2 (en) * 2011-04-23 2014-05-27 Analogies Sa LDPC encoding and decoding techniques
NL2007421C2 (nl) * 2011-09-15 2013-03-18 Debski Reddingius Houder voor een vloeistof.
US8595589B2 (en) * 2011-09-30 2013-11-26 Mitsubishi Electric Research Laboratories, Inc. Quasi-cyclic low-density parity-check codes
WO2013136523A1 (ja) * 2012-03-16 2013-09-19 株式会社 東芝 パリティ検査行列作成方法、符号化装置及び記録再生装置
US9264972B2 (en) * 2012-06-11 2016-02-16 Qualcomm Incorporated Home networking with integrated cellular communication
US9178653B2 (en) * 2013-01-16 2015-11-03 Broadcom Corporation Very short size LDPC coding for physical and/or control channel signaling
JP6542132B2 (ja) * 2013-02-13 2019-07-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated 高レート、高並列性、および低エラーフロアのために、疑似巡回構成を使用し、パンクチャするldpc設計
CN104868925B (zh) * 2014-02-21 2019-01-22 中兴通讯股份有限公司 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
US9432052B2 (en) * 2014-09-18 2016-08-30 Broadcom Corporation Puncture-aware low density parity check (LDPC) decoding
WO2018084735A1 (en) * 2016-11-03 2018-05-11 Huawei Technologies Co., Ltd. Efficiently decodable qc-ldpc code
WO2018143743A1 (ko) * 2017-02-06 2018-08-09 엘지전자 주식회사 행-직교 구조(row-orthogonal)를 이용한 LDPC 코드 전송 방법 및 이를 위한 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100739510B1 (ko) * 2004-06-16 2007-07-13 포항공과대학교 산학협력단 반구조적 블록 저밀도 패리티 검사 부호 부호화/복호 장치및 방법
KR101433375B1 (ko) * 2006-12-04 2014-08-29 삼성전자주식회사 통신 시스템에서 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
KR101445080B1 (ko) * 2008-02-12 2014-09-29 삼성전자 주식회사 하이브리드 자동 반복 요구 방식을 사용하는 통신 시스템에서 신호 송신 방법 및 장치

Also Published As

Publication number Publication date
BR112019009090A2 (pt) 2019-11-12
RU2019116852A3 (ko) 2020-12-03
US20200162107A1 (en) 2020-05-21
EP3533146A1 (en) 2019-09-04
AU2017355038B2 (en) 2020-09-03
US10567002B2 (en) 2020-02-18
KR102155539B1 (ko) 2020-09-14
AU2017355038A1 (en) 2019-05-16
EP4224718A1 (en) 2023-08-09
WO2018082290A1 (en) 2018-05-11
US20190260390A1 (en) 2019-08-22
RU2019116852A (ru) 2020-12-03
JP2019536341A (ja) 2019-12-12
JP7152394B2 (ja) 2022-10-12
WO2018084735A1 (en) 2018-05-11
CN109891753A (zh) 2019-06-14
CN110572163A (zh) 2019-12-13
EP3533146A4 (en) 2019-10-09
CN110572163B (zh) 2020-09-08
RU2739465C2 (ru) 2020-12-24
US11265014B2 (en) 2022-03-01

Similar Documents

Publication Publication Date Title
KR102155539B1 (ko) Ldpc 코드를 인코딩 및 디코딩하기 위한 방법 및 장치
US11095317B2 (en) Efficiently decodable QC-LDPC code
US10320419B2 (en) Encoding method, decoding method, encoding device and decoding device for structured LDPC
JP4602418B2 (ja) 検査行列生成方法、符号化方法、復号方法、通信装置、符号化器および復号器
US10651872B2 (en) Stopping criterion for decoding Quasi-Cyclic LDPC codes
US20160173132A1 (en) Construction of Structured LDPC Convolutional Codes
US20200220556A1 (en) Generalized low-density parity check codes in digital communication system
WO2017105291A1 (en) Generalized quasi-cyclic ldpc convolutional codes for digital communication systems
WO2021063217A1 (zh) 一种译码方法及装置
CN103199877A (zh) 一种结构化ldpc卷积码构造编码方法
US10419026B2 (en) Method and apparatus for efficient data decoding
EP3047575B1 (en) Encoding of multiple different quasi-cyclic low-density parity check (qc-ldpc) codes sharing common hardware resources
US10476524B2 (en) Method and apparatus for efficient data decoding
Lu et al. An efficient majority-logic based message-passing algorithm for non-binary LDPC decoding
WO2018084732A1 (en) Ldpc codes for incremental redundancy harq (ir-harq) schemes
WO2018126914A1 (zh) 准循环低密度奇偶校验码的编码方法及装置、存储介质
Mahdi et al. Simplified multi-level quasi-cyclic LDPC codes for low-complexity encoders
EP3526899A1 (en) Decoding of low-density parity-check convolutional turbo codes
Sulek et al. Construction of Structured Nonbinary Low-Density Parity-Check Codes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant