KR20170092672A - 무선 통신 시스템을 위한 sc-ldpc 코드들 - Google Patents

무선 통신 시스템을 위한 sc-ldpc 코드들 Download PDF

Info

Publication number
KR20170092672A
KR20170092672A KR1020177018681A KR20177018681A KR20170092672A KR 20170092672 A KR20170092672 A KR 20170092672A KR 1020177018681 A KR1020177018681 A KR 1020177018681A KR 20177018681 A KR20177018681 A KR 20177018681A KR 20170092672 A KR20170092672 A KR 20170092672A
Authority
KR
South Korea
Prior art keywords
ldpc
code
decoder
protograph
window
Prior art date
Application number
KR1020177018681A
Other languages
English (en)
Other versions
KR102539474B1 (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 KR20170092672A publication Critical patent/KR20170092672A/ko
Application granted granted Critical
Publication of KR102539474B1 publication Critical patent/KR102539474B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1154Low-density parity-check convolutional codes [LDPC-CC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1177Regular LDPC codes with parity-check matrices wherein all rows and columns have the same row weight and column weight, respectively
    • 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/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Error Detection And Correction (AREA)

Abstract

이동국 또는 기지국과 같은 수신 노드가 제공된다. 수신 노드는 송신 노드로부터 공간적으로 결합된 저밀도 패리티 검사(spatially coupled low density parity check, SC-LDPC) 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신하도록 구성된 수신기, 및 슬라이딩 윈도우를 사용하여 적어도 하나의 코드워드를 디코딩하도록 구성된 디코더를 포함한다. 여기서, 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동한다.

Description

무선 통신 시스템을 위한 SC-LDPC 코드들{SC-LDPC CODES FOR WIRELESS COMMUNICATION SYSTEMS}
본 발명은 일반적으로는 무선 통신, 보다 구체적으로는 무선 통신 시스템에서의 데이터 인코딩 및 디코딩에 관한 것이다.
정보 이론에서, 저밀도 패리티 검사(low-density parity-check, LDPC) 코드는 잡음이 많은 전송 채널을 통해 메시지를 전송하기 위한 오류 정정 코드이다. LDPC 코드들은 일종의 선형 블록 코드들이다. LDPC 및 다른 오류 정정 코드들은 완벽한 전송을 보장할 수 없지만, 정보가 손실될 확률은 원하는 만큼 작게 만들 수 있다. LDPC는 샤논 한계로 알려진 이론적인 최대값에 가까운 데이터 전송률을 허용하는 최초의 코드였다. LDPC 코드들은 0.0045 ㏈의 샤논 한계로 수행할 수 있다. LDPC는 1963년에 개발되었을 때 구현하기에는 비실용적이었다. 1993년에 발견된 터보 코드들은 1990년대 후반에 선택의 코딩 방식이 되었다. 터보 코드들은 딥-스페이스 위성 통신과 같은 어플리케이션들에 사용된다. LDPC는 복잡한 처리가 필요하지만 2007년 현재까지 발견된 가장 효율적인 방식이다. LDPC 코드들은 큰 최소 거리(이하 "dmin")를 산출하여 디코딩 복잡성을 줄일 수 있다.
본 개시의 일 양태는 종래의 저밀도 패리티 검사(low-density parity-check, LDPC) 코드들보다 높은 성능을 갖는 LDPC 코드들을 제공한다.
제1 실시 예에서는 장치가 제공된다. 장치는 송신기로부터 프로토그래프 기반의 공간적으로 결합된 저밀도 패리티 검사(spatially coupled low density parity check, SC-LDPC) 코드를 수신하도록 구성된 입력 버퍼를 포함한다. 또한, 장치는 패리티 검사 행렬을 포함하는 SC-LDPC 코드에 대한 SC-LDPC 디코딩 동작을 수행하도록 구성된 디코더 처리 회로를 포함한다. SC-LDPC 디코딩 동작은 디코딩 계산들이 반복적으로 수행되는 프로토그래프 섹션들의 부분 집합을 포함하는 슬라이딩 윈도우를 포함한다. 또한, SC-LDPC 디코딩 동작은 슬라이딩 윈도우에서 하나 이상의 검사 노드(check node, CN)의 신드롬의 함수로서 디코딩 계산들을 중단시키도록 구성된 중지 규칙을 포함한다.
제2 실시 예에서는 방법이 제공된다. 방법은 송신기로부터 프로토그래프 기반의 SC-LDPC 코드를 수신하는 단계를 포함한다. 또한, 방법은 패리티 검사 행렬을 포함하는 SC-LDPC 코드에 대한 SC-LDPC 디코딩 동작을 수행하는 단계를 포함한다. SC-LDPC 디코딩 동작은 슬라이딩 윈도우를 포함한다. 슬라이딩 윈도우는 디코딩 계산들이 반복적으로 수행되는 프로토그래프 섹션들의 부분 집합을 포함한다. 또한, SC-LDPC 디코딩 동작은 슬라이딩 윈도우에서 하나 이상의 CN의 신드롬의 함수로서 디코딩 계산들을 중단시키도록 구성된 중지 규칙을 포함한다.
제3 실시 예에서는 수신기가 제공된다. 수신기는 적어도 하나의 안테나 및 슬라이딩 윈도우-디코더를 포함한다. 안테나는 송신기로부터 프로토그래프 기반의 SC-LDPC 코드를 수신하도록 구성된다. 슬라이딩 윈도우-디코더는 슬라이딩 윈도우를 사용하여 SC-LDPC 코드에 대한 SC-LDPC 디코딩 동작을 수행하도록 구성된다. SC-LDPC 코드는 패리티 검사 행렬을 포함한다. 슬라이딩 윈도우는 디코딩 계산들이 반복적으로 수행되는 프로토그래프 섹션들의 부분 집합을 포함한다. 슬라이딩 윈도우-디코더는 슬라이딩 윈도우에서 CN들의 신드롬의 함수로서 디코딩 계산들을 중단시키도록 구성된 중지 규칙을 수행한다.
제4 실시 예에서는 장치가 제공된다. 장치는 송신 노드로부터 SC-LDPC 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신하도록 구성된 수신기, 및 슬라이딩 윈도우를 사용하여 적어도 하나의 코드워드를 디코딩하도록 구성된 디코더를 포함한다. 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동한다.
제5 실시 예에서는 방법이 제공된다. 통신 시스템의 수신 노드를 동작시키는 방법은 송신 노드로부터 SC-LDPC 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신하는 단계, 및 슬라이딩 윈도우를 사용하여 적어도 하나의 코드워드를 디코딩하는 단계를 포함한다. 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동한다.
다른 기술적 특징들은 다음의 도면들, 설명들 및 청구항들로부터 당업자에게 쉽게 명백해질 수 있다.
아래의 상세한 설명에 들어가기 전에, 본 특허 문서 전체에서 사용되는 특정 단어 및 어구들의 정의를 기재하는 것이 본 발명을 이해하는데 도움이 될 수 있다. 용어 "커플(couple)" 및 그 파생어는 두 개 이상의 구성 요소 사이의 어떤 직접 또는 간접 통신을 나타내거나, 이들 요소가 서로 물리적으로 접촉하고 있는지의 여부를 나타낼 수 있다. 용어 "송신(transmit)", "수신(receive)" 그리고 "통신(communicate)"뿐만 아니라 그 파생어 또한, 이들의 직/간접 통신을 포함한다. 용어 "포함한다(include)" 및 "구성한다(comprise)" 뿐만 아니라 그 파생어 또한, 제한 없이 포함을 의미한다. 용어 "또는(or)"은 포괄적 의미로써, '및/또는'을 의미한다. 문구 "~와 관련되다(associated with)" 뿐만 아니라 그 파생어 또한 ~을 포함한다(include), ~에 포함된다(be included within), ~와 결합하다(interconnect with), ~을 함유하다(contain), ~에 함유되어 있다(be contained within), ~에 연결한다(connect to or with), ~와 결합하다(couple to or with), ~ 전달한다(be communicable with), 와 협력하다(cooperate with), ~를 끼우다(interleave), ~을 나란히 놓다(juxtapose), ~에 인접하다(be proximate to), 구속하다/구속되다(be bound to or with), 소유하다(have), 속성을 가지다(have a property of), ~와 관계를 가지다(have a relationship to or with) 등을 의미할 수 있다. 용어 "제어기(controller)"는 적어도 하나의 동작을 제어하는 어떤 장치, 시스템 또는 그 일부를 의미한다. 이러한 제어기는 하드웨어 또는 하드웨어와 소프트웨어의 조합 및/또는 펌웨어로 구현될 수 있다. 특정 제어기와 관련된 기능은 로컬 또는 원격으로 중앙 집중식으로(centralized) 또는 분산(distributed)처리될 수 있다. 문구 "적어도 하나"가 나열된 항목과 사용될 때, 나열된 항목 중 하나 이상의 상이한 조합이 사용될 수 있음을 의미한다. 예를 들어, "A, B, C 중 적어도 하나"는 A, B, C, A와 B, A와 C, B와 C, 그리고 A와 B와 C 결합들을 중 어느 하나를 포함한다.
특정 단어들 및 구문들의 정의가 본 개시 전반에 걸쳐서 제공되고, 통상의 기술자는 대부분의 경우에, 이러한 정의들이 정의된 단어들 및 구문들로 미래뿐 아니라 이전의 사용들에도 적용될 수 있음을 이해하여야 한다.
디코딩 성능이 개선될 수 있다.
본 개시 및 효과의 더 완벽한 이해를 위해, 첨부된 도면과 함께 다음의 상세한 설명이 참조되었으며, 도면의 참조 번호는 해당 부분을 나타낸다.
도 1은 본 개시에 따른 예시적인 무선 네트워크를 도시한다.
도 2a 및 도 2b는 본 개시에 따른 예시적인 무선 송신 및 수신 경로들을 도시한다.
도 3은 본 개시에 따른 예시적인 UE(user equipment)를 도시한다.
도 4는 본 개시에 따른 예시적인 eNB(enhanced NodeB)를 도시한다.
도 5a, 도 5b, 도 5c 및 도 5d는 예시적인 프로토그래프 기반의 SC-LDPC 코드 구조를 도시한다.
도 6은 본 개시에 따른 리프팅 팩터 Z=112를 갖는 (3, 6, 720) 프로토그래프 기반의 SC-LDPC 코드의 일 예를 도시한다.
도 7은 본 개시에 따른 슬라이딩 윈도우 디코더를 도시한다.
도 8은 본 개시에 따른 조기 중지 규칙을 갖는 슬라이딩 윈도우 디코더 800을 도시한다.
도 9는 본 개시에 따른 이러한 중지 규칙의 BER(bit error rate) 및 FER(frame error rate) 성능을 보여준다.
도 10a 및 도 10b는 본 개시에 따른 지그재그 윈도우 디코더 상태들을 도시한다.
도 10c및 도 10d는 본 개시에 따른 제안된 지그재그 윈도우 디코더에 대한 디코딩 윈도우 스케줄을 도시한다.
도 10e는 본 개시에 따른 슬라이딩 윈도우 디코더와 제안된 지그재그 윈도우 디코더를 비교한 일 예를 도시한다.
도 11a 및 도 11b는 본 개시에 따른 지그재그 윈도우 디코더의 1회 Z 라운드 및 2회 Z 라운드의 예를 도시한다.
도 12a 및 도 12b는 본 개시에 따른 각각의 지그재그 윈도우 디코더의 성능을 도시한다.
도 13은 본 개시에 따른 지그재그 윈도우 디코더의 1회 Z 라운드로 크기 x 프로토그래프 섹션들의 발산을 정정하는 확률을 도시한다.
도 14는 본 개시에 따른 상이한 Z 윈도우 크기를 갖는 지그재그 윈도우 디코더의 FER(점선) 및 BER(실선) 성능을 도시한다.
도 15는 본 개시에 따른 상이한 Z 윈도우 크기를 갖는 조기 코드워드 실패 검출 규칙을 적용한 지그재그 윈도우 디코더의 평균 반복 횟수 성능을 도시한다.
도 16은 본 개시에 따른 (3, 6) 프로토그래프 기반의 SC-LDPC 코드를 도시한다.
도 17은 본 개시에 따른 펑처링 패턴을 사용하여 레이트-3/4로 펑처링된 레이트-1/2 프로토그래프 기반의 SC-LDPC 코드를 도시한다.
도 18은 본 개시에 따른 디바이더 프로토그래프 섹션들을 사용하여 몇 개의 블록 LDPC 코드로 분할된 무한히 긴 SC-LDPC 코드를 도시한다.
도 19는 본 개시에 따른 동일하지 않은 오류 보호를 사용하여 몇 개의 블록 LDPC 코드로 분할된 매우 긴 SC-LDPC 코드를 도시한다.
도 20은 본 개시에 따른 디바이더 프로토그래프 섹션들을 생성하기 위해 더 강한 헤더 보호를 사용하는 방법을 도시한다.
도 21은 본 개시에 따른 패킷 헤더를 전달하기 위해 반복, 또는 단축 후 반복 프로세스를 사용하여 SC-LDPC 코드워드의 일부분을 강화하는 일 예를 도시한다.
도 22는 본 개시에 따른 SC-LDPC 코딩 방식을 사용하는 HARQ(hybrid automatic repeat request) 지원에 대한 일 예를 도시한다.
도 23은 본 개시에 따른 펑처링 행렬 [1, 0, 1; 1, 1, 0]을 사용하여 레이트-3/4로 (3, 6, L) SC-LDPC 앙상블을 펑처링하는 일 예를 도시한다.
도 24는 본 개시에 따른 레이트-4/5, 레이트-3/4, 레이트-2/3, 또는 레이트-ㅍ로 단축될 수 있는 레이트-5/6 (3, 18) LDPC 코드 프로토그래프를 도시한다.
도 25는 본 개시에 따른 레이트-4/5, 레이트-3/4, 레이트-2/3, 또는 레이트-ㅍ로 단축될 수 있는 레이트-5/6을 갖는 (3, 18, L) SC-LDPC 코드 프로토그래프를 도시한다.
도 26은 본 개시에 따른 펑처링된 코드 군과 단축된 코드 군의 FER 성능 비교를 도시한다.
도 27은 본 개시에 따른 펑처링된 코드 군과 단축된 코드 군의 반복 횟수 성능 비교를 도시한다.
도 28은 본 개시에 따른 단축을 기반으로 하는 예시적인 SC-LDPC 코드 군들을 도시한다.
도 29는 본 개시에 따른 수신 노드의 동작 프로세스를 도시한다.
아래에 논의된 도 1 내지 도 29 및 본 개시의 원리를 설명하기 위해 이용되는 다양한 실시 예들은 단지 예시를 위한 것으로 어떠한 방식으로든 본 개시의 범위를 한정하는 의미로 해석되어서는 안 된다. 통상의 기술자들은 본 개시의 원리가 적절하게 배치된 무선 통신 시스템으로 구현될 수 있음을 이해할 것이다.
다음의 문헌들은 그 전체 내용이 본 개시에 기재된 것처럼 참조로 포함된다. D. J. Costello, Jr., L. Dolecek, T. E. Fuja, J. Kliewer, D. G. M. Mitchell, and R. Smarandache, "Spatially Coupled Sparse Codes on Graphs - Theory and Practice," arXive, October 2013 (REF-1); Michael Lentmaier, Maria Mellado Prenda, and Gerhard P. Fettweis, "Efficient Message Passing Scheduling for Terminated LDPC Convolutional Codes," IEEE ISIT, August 2011 (REF-2); Shrinivas Kudekar, Tom Richardsony and Rㄸudiger Urbanke , "Threshold Saturation via Spatial Coupling: Why Convolutional LDPC Ensembles Perform so well over the BEC," arXiv, October 2010 (REF-3); Vikram Arkalgud Chandrasetty, Sarah J. Johnson and Gottfried Lechner, "Memory Efficient Quasi-Cyclic Spatially Coupled LDPC Codes", arXive October 2013 (REF-4); and Najeeb ul Hassan, Michael Lentmaier, and Gerhard P. Fettweis, "Comparison of LDPC Block and LDPC Convolutional Codes Based on their Decoding Latency," IEEE ISTC August 2012 (REF-5); D. Hocevar, "A reduced complexity decoder architecture via layered decoding of LDPC codes," IEEE Workshop on Signal Processing Systems, 2004., pp. 107 - 112, Oct. 2004 (REF-6); Shadi Abu-Surra, Eran Pisek, Thomas Henige, and Sridhar Rajagopal, "Low-Power Dual Quantization-Domain Decoding for LDPC Codes," IEEE Globecom 2014 (REF-7); M. Davey and D. J. Mackay, "Low density parity check codes over GF(q)," IEEE Commun. Letters, vol. 2, pp. 165-167, Jun 1998 (REF-8); J. Chen, A Dholakia, E. Eleftheriou, M. Fossorier, "Reduced-Complexity Decoding of LDPC Codes," IEEE Trans. on Commun., vol. 53, pp. 1288-1299, Aug. 2005 (REF-9); R. G. Gallager, "Low-density parity-check codes", Cambridge, MA: MIT Press, 1963 (REF-10); D. J. C. MacKay and R. M. Neal, "Near Shannon limit performance of low density parity check codes," Electronics Letters, vol. 32, pp. 1645-1646, Aug. 1996 (REF-11); IEEE 802.11ad standard spec., Part 11: Wireless LAN medium access control(MAC) and physical layer(PHY) Specifications, Amendment 3: Enhancements for very high throughput in the 60 GHz Band, (REF-12); R. G. Gallager, "A simple derivation of the coding theorem and some applications," IEEE Trans. on Information Theory, vol. 11, pp. 3-18, Jan. 1965 (REF-13); IEEE 802.11n-2009 standard spec., Part 11: Wireless LAN Medium Access Control(MAC)and Physical Layer(PHY) Specifications Amendment 5: Enhancements for Higher Throughput, retrieved from the Internet <URL: http://standards.ieee.org/getieee802/download/802.11ad-2012.pdf> (REF-14); 3GPP, "Evolved Universal Terrestrial Radio Access (E-UTRA); Physical channels and modulation; (release 11)," 3GPP, 2013, retrieved from the Internet <URL: http://www.3gpp.org/ftp/Specs/html-info/36211.htm> (REF-15); D. J. Costello, Jr., L. Dolecek, T. E. Fuja, J. Kliewer, D. G. M. Mitchell, and R. Smarandache, "Spatially Coupled Sparse Codes on Graphs - Theory and Practice," arXive, October 2013, (REF-16); Michael Lentmaier, Maria Mellado Prenda, and Gerhard P. Fettweis, "Efficient Message Passing Scheduling for Terminated LDPC Convolutional Codes," IEEE ISIT, Aug. 2011, (REF-17); S. Abu-Surra, E. Pisek, and T. Henige, "Gigabit Rate Achieving Low-Power LDPC Codes: Design and Architecture," IEEE Wireless Commun. And Networking Conf., Mar. 2011, (REF-18); and D. Divsalar, S. Dolinar, and C. Jones, "Construction of Protograph LDPC Codes with Linear Minimum Distance," IEEE ISIT, Jul. 2006, (REF-19).
통신 시스템에서, 채널 코딩은 용량 접근 성능을 얻는 데 중요하다. 터보 코드 및 LDPC 블록 코드들과 같은 많은 방식들이 무선 통신 표준에 사용된다. 그러나, 이들 코딩 방식은 한계가 있다. 예를 들어, 터보 코드들의 구조는 매우 큰 기가비트/초(gigabits per second, GB/s) 처리량을 달성하는 데 필요한 충분한 병렬 처리 능력을 제공하지 못한다. 대안적으로, LDPC 블록 코드들의 구조는 큰 병렬 처리 팩터를 제공하지만, 그 세분성은 코드의 고정된 블록 크기에 의해 제한된다.
공간적으로 결합된 저밀도 패리티 검사(spatially-coupled low-density parity-check, SC-LDPC) 코드들은 터보 코드 및 LDPC 블록 코드 양쪽의 장점을 결합한 새로운 용량 달성 코드이다. SC-LDPC 코드들은 높은 데이터율을 달성할 가능성이 있으며, LDPC 블록 코드들에 비해 작은 세분성을 갖는다.
본 개시의 실시 예들은 SC-LDPC 코드들의 설계 및 디코딩과 관련된다. 본 개시의 특정 실시 예들은 SC-LDPC 코드 구조 (특히, 종료) 및 그것을 무선 통신 표준에서 실현하는 방법을 다룬다. 이들 실시 예의 일부는 WLAN 시스템에 맞춰져 있지만, 다른 실시 예들은 이동 통신 표준과 같은 다른 표준에서의 채택을 커버하기 위해 하위 레벨의 세부 사항들을 갖는다. 본 개시의 특정 실시 예들은 SC-LDPC 코드 성능을 개선하고 반복 횟수를 줄일 수 있는, 지그재그 윈도우 디코더로 지칭되는 새로운 디코더를 제안한다.
본 개시의 실시 예들은 통신 시스템에 SC-LDPC를 추가하기 위한 SC-LDPC 코드 체계를 제안한다. SC-LDPC 코드들은 낮은 전력 소비로 수 기가비트/초(gigabits per second, GB/s)를 달성할 수 있는 높은 병렬 팩터를 갖는다. 이들은 동적 무선 환경에서 높은 효율을 가능하게 하기 위해 낮은 세분성 및 확장 가능한 코드워드 길이를 갖는다. 또한, 본 개시의 특정 실시 예들은 슬라이딩 윈도우 디코더보다 좋은 성능을 달성할 수 있는 새로운 지그재그 윈도우 디코더에 의한 사용을 위해 구성된 것과 같은 새로운 디코딩 방식을 제안한다.
도 1은 본 개시에 따른 예시적인 무선 네트워크 100을 도시한다. 도 1에 도시된 무선 네트워크 100의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위에서 벗어나지 않고 무선 네트워크 100의 다른 실시 예들이 사용될 수 있다.
도 1에 도시된 바와 같이, 무선 네트워크 100은 eNB(eNodeB) 101, eNB 102, 및 eNB 103을 포함한다. eNB 101은 eNB 102 및 eNB 103과 통신한다. 또한, eNB 101은 인터넷, 전용 IP 네트워크, 또는 다른 데이터 네트워크와 같은 적어도 하나의 인터넷 프로토콜(internet protocol, IP) 네트워크 130과 통신한다.
네트워크 유형에 따라, "기지국" 또는 "액세스 포인트"와 같은 다른 잘 알려진 용어들이 "eNodeB" 또는 "eNB" 대신에 사용될 수 있다. 편의를 위해, 본 특허 문서에서 용어 "eNodeB" 및 "eNB"는 원격 단말들에 무선 액세스를 제공하는 네트워크 인프라구조 구성 요소들을 나타내기 위해 사용된다. 또한, 네트워크 유형에 따라, "이동국", "가입자국", "원격 단말", "무선 단말", 또는 "사용자 장치"와 같은 다른 잘 알려진 용어들이 "사용자 단말(user equipment)" 또는 "UE" 대신해 사용될 수 있다. 편의를 위해, 본 특허 문서에서 용어 "사용자 단말(user equipment)" 또는 "UE"는, UE가 (휴대폰 또는 스마트폰과 같은) 이동 장치이든, (데스크톱 컴퓨터 또는 자동 판매기와 같은) 고정 장치로 일반적으로 간주되든, eNB에 무선으로 액세스하는 원격 무선 단말을 나타내기 위해 사용된다.
eNB 102는 eNB 102의 커버리지 영역 120 내의 제1의 복수의 사용자 단말(user equipment, UE)에 네트워크 130에 대한 무선 광대역 액세스를 제공한다. 제1의 복수의 UE는 소기업(small business, SB)에 위치할 수 있는 UE 111, 대기업(enterprise, E)에 위치할 수 있는 UE 112, WiFi 핫스팟(hotspot, HS)에 위치할 수 있는 UE 113, 제1 거주지(residence, R)에 위치할 수 있는UE 114, 제2 거주지(residence, R)에 위치할 수 있는 UE 115, 및 휴대폰, 무선 랩톱, 또는 무선 PDA 등과 같은 이동 장치(mobile device, M)일 수 있는 UE 116을 포함한다. eNB 103은 eNB 103의 커버리지 영역 125 내의 제2의 복수의 UE에 네트워크 130에 대한 무선 광대역 액세스를 제공한다. 제2의 복수의 UE는 UE 115 및 UE 116을 포함한다. 일부 실시 예들에서, 하나 이상의 eNB 101 내지 103은 5G, LTE, LTE-A, WiMAX, 또는 다른 진화된 무선 통신 기술들을 사용하여 서로 및 UE 111 내지 UE 116과 통신할 수 있다.
점선은 단지 예시 및 설명을 위해 대략적인 원형으로 도시되는 커버리지 영역 120 및 커버리지 영역 125의 대략적인 범위를 나타낸다. 커버리지 영역 120 및 커버리지 영역 125와 같이, eNB들과 관련된 커버리지 영역들은 천연 및 인공 장애물들과 관련된 무선 환경에서의 변동 및 eNB들의 구성에 따라, 불규칙한 형상을 포함하여 다른 형상들을 가질 수 있다는 것을 명확히 이해해야 한다.
보다 상세히 후술되는 바와 같이, 하나 이상의 eNB 101 내지 103은 본 개시의 실시 예들에 기술된 바와 같은 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 인코딩하도록 구성된다. 특정 실시 예들에서, 하나 이상의 eNB 101 내지 103은 본 개시의 실시 예들에 기술된 바와 같은 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 디코딩하도록 구성된다. 특정 실시 예들에서, 하나 이상의 UE 111 내지 116은 본 개시의 실시 예들에 기술된 바와 같은 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 인코딩하도록 구성된다. 특정 실시 예들에서, 하나 이상의 UE 111 내지 116은 본 개시의 실시 예들에 기술된 바와 같은 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 디코딩하도록 구성된다.
도 1은 무선 네트워크 100의 일 예를 도시하지만, 도 1에 대해 다양한 변경 예들이 이루어질 수 있다. 예를 들어, 무선 네트워크 100은 모든 적절한 배치에서 임의의 개수의 eNB 및 임의의 개수의 UE를 포함할 수 있다. 또한, eNB 101은 임의의 개수의 UE와 직접 통신할 수 있고, 이들 UE에 네트워크 130에 대한 무선 광대역 액세스를 제공할 수 있다. 마찬가지로, eNB 102 및 eNB 103 각각은 네트워크 130과 직접 통신할 수 있고, UE들에 네트워크 130에 대한 직접적인 무선 광대역 액세스를 제공할 수 있다. 또한, eNB 101, eNB 102, 및/또는 eNB 103은 외부 전화 네트워크 또는 다른 유형의 데이터 네트워크들과 같은 다른 또는 추가적인 외부 네트워크들에 대한 액세스를 제공할 수 있다.
도 2a 및 도 2b는 본 개시에 따른 예시적인 무선 송신 경로 및 수신 경로를 도시한다. 다음의 설명에서, 송신 경로 200은 (eNB 102와 같이) eNB에서 구현되는 것으로 기술될 수 있고, 수신 경로 250은 (UE 116과 같이) UE에서 구현되는 것으로 기술될 수 있다. 그러나, 수신 경로 250이 eNB에서 구현될 수 있고, 송신 경로 200이 UE에서 구현될 수 있다는 것을 이해할 것이다. 특정 실시 예들에서, 송신 경로 200은 본 개시의 실시 예들에 기술된 바와 같이 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 인코딩하도록 구성된다. 특정 실시 예들에서, 수신 경로 250은 본 개시의 실시 예들에 기술된 바와 같이 지그재그 윈도우 및 SC-LDPC 코드들을 사용하여 데이터를 디코딩하도록 구성된다.
송신 경로 200은 채널 코딩 및 변조 블록 205, 직렬-병렬 변환(serial-to-parallel, S-to-P) 블록 210, 크기 N의 역 고속 푸리에 변환(inverse fast fourier transform, IFFT) 블록 215, 병렬-직렬 변환(parallel-to-serial, P-to-S) 블록 220, 추가 순환 전치 블록 255, 및 업컨버터(up-converter, UC) 230을 포함한다. 수신 경로 250은 다운컨버터(down-converter, DC) 255, 제거 순환 전치 블록 260, 직렬-병렬 변환(serial-to-parallel, S-to-P) 블록 265, 크기 N의 고속 푸리에 변환(fast fourier transform, FFT) 블록 270, 병렬-직렬 변환(parallel-to-serial, P-to-S) 블록 275, 및 채널 디코딩 및 복조 블록 280을 포함한다.
송신 경로 200에서, 채널 코딩 및 변조 블록 205는 정보 비트들의 집합을 수신하고, (저밀도 패리티 검사(low-density parity check, LDPC) 코딩과 같은) 코딩을 적용하고, 주파수 도메인 변조 심볼들의 시퀀스를 생성하기 위해 (직교 위상 시프트 키잉(quadrature phase shift keying, QPSK) 또는 직교 진폭 변조(quadrature amplitude modulation, QAM) 등을 사용하여) 입력 비트들을 변조한다. 직렬-병렬 변환 블록 210은 N개의 병렬 심볼 스트림을 생성하기 위해 직렬 변조된 심볼들을 병렬 데이터로 (디멀티플렉싱하는 것과 같이) 변환하고, 여기서 N은 eNB 102 및 UE 116에서 사용되는 IFFT/FFT 크기이다. 크기 N의 IFFT 블록 215는 시간 도메인 출력 신호들을 생성하기 위해 N개의 병렬 심볼 스트림에 대해 IFFT 연산을 수행한다. 병렬-직렬 변환 블록 220은 직렬 시간 도메인 신호를 생성하기 위해 크기 N의 IFFT 블록 215로부터의 병렬 시간 도메인 출력 심볼들을 (멀티플렉싱하는 것과 같이) 변환한다. 추가 순환 전치 블록 225는 시간 도메인 신호에 순환 전치를 삽입한다. 업컨버터 230은 무선 채널을 통해 전송을 위한 RF 주파수로 추가 순환 전치 블록 225의 출력을 (업컨버팅하는 것과 같이) 변조한다. 또한, 신호는 RF 주파수로의 변환 전에 기저대에서 필터링될 수 있다.
eNB 102로부터의 전송된 RF 신호는 무선 채널을 통과한 후에 UE 116에 도달하고, eNB 102에서의 동작들에 대한 역 동작들이 UE 116에서 수행된다. 다운컨버터 255는 수신된 신호를 기저대 주파수로 다운컨버팅하고, 제거 순환 전치 블록 260은 직렬 시간 도메인 기저대 신호를 생성하기 위해 순환 전치를 제거한다. 직렬-병렬 변환 블록 265는 시간 도메인 기저대 신호를 병렬 시간 도메인 신호들로 변환한다. 크기 N의 FFT 블록 270은 N개의 병렬 주파수 도메인 신호들을 생성하기 위해 FFT 알고리즘을 수행한다. 병렬-직렬 변환 블록 275는 병렬 주파수 도메인 신호들을 변조된 데이터 심볼들의 시퀀스로 변환한다. 채널 디코딩 및 복조 블록 280은 원래의 입력 데이터 스트림을 복구하기 위해 변조된 심볼들을 복조하고 디코딩한다.
eNB 101 내지 eNB 103의 각각은 UE 111 내지 UE 116으로의 하향링크에서의 전송 단계와 유사한 송신 경로200을 구현할 수 있고, UE 111 내지 UE 116으로부터의 상향링크에서의 수신 단계와 유사한 수신 경로 250을 구현할 수 있다. 마찬가지로, UE 111 내지 UE 116의 각각은 eNB 101 내지 eNB 103으로의 상향링크에서의 전송 단계에 대한 송신 경로 200을 구현할 수 있고, eNB 101 내지 eNB 103으로부터의 하향링크에서의 수신 단계에 대한 수신 경로 250을 구현할 수 있다.
도2a 및 도 2b의 구성 요소들 각각은 하드웨어만을 사용하거나, 하드웨어와 소프트웨어/펌웨어의 조합을 사용하여 구현될 수 있다. 특정 예로서, 도 2a 및 도 2b의 구성 요소들 중 적어도 일부는 소프트웨어로 구현될 수 있는 반면에, 다른 구성 요소들은 구성 가능한 하드웨어, 또는 구성 가능한 하드웨어와 소프트웨어의 혼합체에 의해 구현될 수 있다. 예를 들어, FFT 블록 270 및 IFFT 블록 215는 구성 가능한 소프트웨어 알고리즘들로서 구현될 수 있고, 여기서, 크기 N의 값은 구현에 따라 수정될 수 있다.
또한, FFT 및 IFFT를 사용하여 기술하지만, 이것은 단지 예시를 위한 것이며 본 개시의 범위를 제한하는 것으로 해석되어서는 안된다. 이산 푸리에 변환(discrete fourier transform, DFT) 및 역 이산 푸리에 변환(inverse discrete fourier transform, IDFT) 함수와 같은 다른 유형의 변환들이 사용될 수 있다. DFT 및 IDFT 함수에 대한 변수 N의 값은 (1, 2, 3, 4 등과 같은) 임의의 정수일 수 있고, FFT 및 IFFT 함수에 대한 변수 N의 값은 (1, 2, 4, 8, 16 등과 같은) 2의 거듭제곱인 임의의 정수일 수 있다는 것을 이해할 것이다.
도 2a 및 도 2b는 무선 송신 및 수신 경로들의 예를 도시하지만, 다양한 변경 예들이 도2a 및 도 2b에 대해 이루어질 수 있다. 예를 들어, 도2a 및 도 2b에서의 다양한 구성 요소들은 결합되거나, 더 세분화되거나, 생략될 수 있고, 추가 구성 요소들이 특정 요구에 따라 추가될 수 있다. 또한, 도 2a 및 도 2b는 무선 네트워크에서 사용될 수 있는 송신 및 수신 경로 유형들의 예를 도시하기 위한 것이다. 다른 적합한 아키텍처들이 무선 네트워크에서의 무선 통신을 지원하기 위해 사용될 수 있다.
도 3은 본 발명에 따른 예시적인 UE 116을 도시한다. 도 3에 도시된 UE 116의 실시 예는 단지 예시를 위한 것이고, 도 1의 UE 111 내지 UE 115는 동일하거나 유사한 구성을 가질 수 있다. 그러나, UE들은 매우 다양한 구성을 가지며, 도 3은 UE의 특정 구현으로 본 발명의 범위를 제한하지 않는다.
UE 116은 안테나 305a 내지 305n, 무선 주파수(radio frequency, RF) 송수신기 310a 내지 310n, 송신(TX) 처리 회로 315, 마이크로폰320, 및 수신(RX) 처리 회로325를 포함한다. TX 처리 회로 315 및 RX 처리 회로 325는 각각 RF 송수신기 310a 내지 RF 송수신기 310n의 각각에 예를 들어, 안테나 305a, 안테나 305b 및 N번째 안테나 305n에 각각 결합되는 RF 송수신기 310a, RF 송수신기 210b 내지 N번째 RF 송수신기 310n에 결합된다. 특정 실시 예들에서, UE 116은 하나의 안테나 305a 및 하나의 RF 송수신기 310a를 포함한다. 또한, UE 116은 스피커 330, 메인 프로세서 340, 입출력(input/output, I/O) 인터페이스(interface, IF) 345, 키패드 350, 디스프레이 355, 및 메모리 360을 포함한다. 메모리 360은 기본 운영 체계(operating system, OS) 프로그램 361 및 하나 이상의 어플리케이션 362를 포함한다.
RF 송수신기들 310a 내지 310n은 네트워크 100의 eNB 또는 AP에 의해 전송된 입력 RF 신호를 각각의 안테나 305a 내지 305n으로부터 수신한다. 특정 실시 예들에서, 각각의 RF 송수신기 310a 내지 310n 및 각각의 안테나 305a 내지 305n은 특정 주파수 대역 또는 기술 유형에 맞게 구성된다. 예를 들어, 제1 RF 송수신기 310a 및 안테나 305a는 BLUETOOTH®과 같은 근거리 무선 통신을 통해 통신하도록 구성될 수 있는 반면에, 제2 RF 송수신기 310b 및 안테나 305b는 Wi-Fi와 같은 IEEE 802.11 통신을 통해 통신하도록 구성될 수 있고, 다른 RF 송수신기 310n 및 안테나 305n은 3G, 4G, 5G, LTE, LTE-A, 또는 WiMAX과 같은 셀룰러 통신을 통해 통신하도록 구성될 수 있다. 특정 실시 예들에서, 하나 이상의 RF 송수신기 310a 내지 310n 및 각각의 안테나 305a 내지 305n은 특정 주파수 대역 또는 동일한 기술 유형에 맞게 구성된다. RF 송수신기들 310a 내지 310n은 중간 주파수(intermediate frequency, IF) 또는 기저대 신호를 생성하기 위해 입력 RF 신호를 다운컨버팅한다. IF 또는 기저대 신호는 기저대 또는 IF 신호를 필터링, 디코딩, 및/또는 디지털화함으로써 처리된 기저대 신호를 생성하는 RF 처리 회로 325에 전송된다. RF 처리 회로 325는 (웹 브라우징 데이터 등에 대한) 추가 처리를 위해 메인 프로세서 340에 또는 (음성 데이터 등을 위해) 스피커 330에 처리된 기저대 신호를 전송한다.
TX 처리 회로 315는 마이크로폰 320으로부터 아날로그 또는 디지털 음성 데이터를 수신하거나, 메인 프로세서 340으로부터 (웹 데이터, 이메일, 또는 인터랙티브 비디오 게임 데이터와 같은) 다른 출력 기저대 데이터를 수신한다. TX 처리 회로 315는 처리된 기저대 또는 IF 신호를 생성하기 위해 출력 기저대 데이터를 인코딩, 멀티플렉싱, 및/또는 디지털화한다. RF 송수신기 310a 내지 310n은 TX 처리 회로 315로부터 출력 처리된 기저대 또는 IF 신호를 수신하고, 하나 이상의 안테나 305a 내지 305n을 통해 전송되는 RF 신호로 기저대 또는 IF 신호를 업컨버팅한다.
메인 프로세서 340은 하나 이상의 프로세서 또는 다른 처리 장치들을 포함할 수 있고, UE 116의 전체 동작을 제어하기 위해 메모리 360에 저장된 기본 OS 프로그램 361을 실행할 수 있다. 예를 들어, 메인 프로세서 340은 잘 알려진 원리들에 따라 RF 송수신기 310a 내지 310n, RX 처리 회로 325 및 TX 처리 회로 315에 의해 순방향 채널 신호들의 수신 및 역방향 채널 신호들의 전송을 제어할 수 있다. 일부 실시 예들에서, 메인 프로세서 340은 적어도 하나의 마이크로프로세서 또는 마이크로제어기를 포함한다. 메인 프로세서 340은 중지 기능을 갖는 슬라이딩 윈도우 인코더, 중지 기능을 갖는 슬라이딩 윈도우 디코더, 지그재그 윈도우 인코더, 지그재그 윈도우 디코더, 또는 이들의 조합 등을 포함하여 데이터 정보를 인코딩 또는 디코딩하도록 구성된 처리 회로를 포함한다.
또한, 메인 프로세서 340은 본 개시의 실시 예들에 기재된 바와 같이 지그재그 윈도우 및 SC-LDPC 코드들을 사용하기 위한 동작들과 같이 메모리 360에 상주하는 다른 프로세스 및 프로그램들을 실행할 수 있다. 메인 프로세서 340은 실행하는 프로세스에 의해 필요에 따라 메모리 360의 안으로 또는 밖으로 데이터를 이동시킬 수 있다. 일부 실시 예에서, 메인 프로세서 340은 작업자 또는 eNB들로부터 수신된 신호들에 응답하여, 또는 OS 프로그램 361을 기반으로 하여 어플리케이션 362를 실행하도록 구성된다. 또한, 메인 프로세서 340은 UE 116에 랩톱 컴퓨터 및 핸드헬드 컴퓨터들과 같은 다른 장치들에 연결하는 능력을 제공하는 I/O 인터페이스 345와 결합된다. I/O 인터페이스 345는 메인 제어기 340과 이들 부속 장치 간의 통신 경로이다.
또한, 메인 프로세서 340은 키패드 350 및 디스플레이 유닛 355에 결합된다. UE 116의 사용자는 UE 116에 데이터를 입력하기 위해 키패드 350을 사용할 수 있다. 디스플레이 355는 액정 디스플레이 또는, 예를 들어 웹 사이트들로부터의 텍스트 또는 적어도 제한된 그래픽들을 랜더링할 수 있는 다른 디스플레이, 또는 이들의 조합일 수 있다.
메모리 360은 메인 프로세서 340에 결합된다. 메모리 360의 일부는 랜덤 액세스 메모리(random access memory, RAM)를 포함할 수 있고, 메모리 360의 다른 일부는 플래시 메모리 또는 다른 읽기 전용 메모리(read-only memory, ROM)를 포함할 수 있다.
도 3은 UE 116의 일 예를 도시하지만, 다양한 변경 예들이 도 3에 대해 이루어질 수 있다. 예를 들어, 도 3의 다양한 구성 요소들은 결합되거나, 더 세분화되거나, 생략될 수 있고, 추가 구성 요소들이 특정 요구에 따라 추가될 수 있다. 특정 예로서, 메인 프로세서 340은 하나 이상의 중앙 처리 유닛(central processing unit, CPU) 및 하나 이상의 그래픽 처리 유닛(graphics processing unit, GPU)과 같이 복수의 프로세서로 나뉠 수 있다. 또한, 도 3은 휴대 전화 또는 스마트폰으로서 구성된 UE 116을 도시하지만, UE들은 다른 유형의 이동 장치 또는 고정 장치들로서 동작하도록 구성될 수 있다.
도 4는 본 발명에 따른 예시적인 eNB 102를 도시한다. 도 4에 도시된 eNB 102의 실시 예는 단지 예시를 위한 것이고, 도 1의 다른 eNB들은 동일하거나 유사한 구성을 가질 수 있다. 그러나, eNB들은 매우 다양한 구성들을 가지며, 도 4는 eNB의 특정 구현으로 본 발명의 범위를 한정하지 않는다.
eNB 102는 복수의 안테나 405a 내지 405n, 복수의 RF 송수신기 410a 내지 410n, 송신(TX) 처리 회로 415, 및 수신(RX) 처리 회로 420을 포함한다. 또한, eNB 102는 제어기/프로세서 425, 메모리 430, 및 백홀 또는 네트워크 인터페이스 435를 포함한다.
RF 송수신기 410a 내지 410n은 UE 또는 다른 eNB들에 의해 전송된 신호들과 같은 입력 RF 신호들을 안테나 405a 내지 405n으로부터 수신한다. RF 송수신기 410a 내지 410n은 IF 또는 기저대 신호들을 생성하기 위해 입력 RF 신호들을 다운컨버팅한다. IF 또는 기저대 신호들은 기저대 또는 IF 신호들을 필터링, 디코딩, 및/또는 디지털화함으로써, 처리된 기저대 신호들을 생성하는 RF 처리 회로 420에 전송된다. RF 처리 회로 420은 추가 처리를 위해 제어기/프로세서 425에 처리된 기저대 신호들을 전송한다.
TX 처리 회로 415는 제어기/프로세서 425로부터 (음성 데이터, 웹 데이터, 이메일, 또는 인터랙티브 비디오 게임 데이터와 같은) 아날로그 또는 디지털 데이터를 수신한다. TX 처리 회로 415는 처리된 기저대 또는 IF 신호들을 생성하기 위해 출력 기저대 데이터를 인코딩, 멀티플렉싱, 및/또는 디지털화한다. RF 송수신기 410a 내지 410n은 TX 처리 회로 415로부터 출력 처리된 기저대 또는 IF 신호를 수신하고, 안테나 405a 내지 405n을 통해 전송되는 RF 신호들로 기저대 또는 IF 신호들을 업컨버팅한다.
제어기/프로세서 425는 eNB 102의 전체 동작을 제어하는 하나 이상의 프로세서 또는 다른 처리 장치들을 포함할 수 있다. 예를 들어, 제어기/프로세서 425는 잘 알려진 원리들에 따라 RF 송수신기 410a 내지 410n, RX 처리 회로 420, 및 TX 처리 회로 415에 의해 순방향 채널 신호들의 수신 및 역방향 채널 신호들의 전송을 제어할 수 있다. 제어기/프로세서 425는 본 개시의 실시 예들에 기재된 바와 같이 지그재그 윈도우 및 SC-LDPC 코드들을 사용하는 것과 같은 추가 기능들도 지원할 수 있다. 매우 다양한 다른 기능들 중 어느 하나가 제어기/프로세서 425에 의해 eNB 102에서 지원될 수 있다. 일부 실시 예들에서, 제어기/프로세서 425는 적어도 하나의 마이크로프로세서 또는 마이크로제어기를 포함한다. 제어기/프로세서 425는 중지 기능을 갖는 슬라이딩 윈도우 인코더, 중지 기능을 갖는 슬라이딩 윈도우 디코더, 지그재그 윈도우 인코더, 지그재그 윈도우 디코더, 또는 이들의 조합 등을 포함하여 데이터 정보를 인코딩 또는 디코딩하도록 구성된 처리 회로를 포함한다.
또한, 제어기/프로세서 425는 기본 OS와 같이 메모리430에 상주하는 다른 프로세스 및 프로그램들을 실행할 수 있다. 제어기/프로세서 425는 실행하는 프로세스에 의해 필요에 따라 메모리 430의 안으로 또는 밖으로 데이터를 이동시킬 수 있다.
또한, 제어기/프로세서 425는 백홀 또는 네트워크 인터페이스 435에 결합된다. 백홀 또는 네트워크 인터페이스 435는 eNB 102가 네트워크를 통해 또는 백홀 연결을 통해 다른 장치 또는 시스템들과 통신할 수 있도록 한다. 인터페이스 435는 모든 적합한 유선 또는 무선 연결(들)을 통해 통신을 지원할 수 있다. 예를 들어, eNB 102가 (5G, LTE, 또는 LTE-A를 지원하는 것과 같이) 셀룰러 통신 시스템의 일부로서 구현되는 경우, 인터페이스 435는 eNB 102가 유선 또는 무선 백호 연결을 통해 다른 eNB들과 통신할 수 있도록 할 수 있다. eNB 102가 액세스 포인트로서 구현되는 경우, 인터페이스 435는 eNB 102가 (인터넷과 같이) 더 큰 네트워크에 유선 또는 무선 연결을 통해 또는 유선 또는 무선 근거리 네트워크를 통해 통신할 수 있도록 할 수 있다. 인터페이스 435는 이터넷 또는 RF 송수신기와 같이 유선 또는 무선 연결을 통해 통신을 지원하는 모든 적합한 구조를 포함한다.
메모리 430은 제어기/프로세서 425에 결합된다. 메모리 430의 일부는 RAM을 포함할 수 있고, 메모리 430의 다른 일부는 플래시 메모리 또는 다른 ROM을 포함할 수 있다.
보다 상세히 후술되는 바와 같이, (RF 송수신기 410a 내지 410n, TX 처리 회로 415, 및/또는 RX 처리 회로 420을 사용하여 구현되는) eNB 102의 송신 경로 및 수신 경로는 FDD 셀 및 TDD 셀들의 집합과의 통신을 지원한다.
도 4는 eNB 102의 일 예를 도시하지만, 다양한 변경 예들이 도 4에 대해 이루어질 수 있다. 예를 들어, eNB 102는 도 4에 도시된 각각의 구성 요소의 임의의 개수를 포함할 수 있다. 특정 예로서, 액세스 포인트는 다수의 인터페이스 435를 포함할 수 있고, 제어기/프로세서 425는 상이한 네트워크 주소 간에 데이터를 라우팅하는 라우팅 기능들을 지원할 수 있다. 다른 특정 예로서, TX 처리 회로 415의 단일 인스턴스 및 RX 처리 회로 420의 단일 인스턴스를 포함하는 것으로 도시되지만, eNB 102는 (RF 송수신기 당 하나와 같이) 각각의 복수의 인스턴스를 포함할 수 있다.
LDPC 코드들은 최근에 많은 주목을 받았다. 이는 샤논 한계에 가까운 성능을 달성하는 그들의 능력, 하드웨어에서의 높은 병렬화를 용이하게 하는 코드들을 설계하는 능력, 및 그들의 높은 데이터율 지원 때문이다. LDPC 코드들의 가장 일반적으로 배치된 형태는 블록 LDPC 코드들이다. 그러나, 매우 동적인 무선 통신 시스템들에서, 채널 조건들 및 사용자 당 데이터 할당이 연속적으로 변화하는 경우, 블록 LDPC 코드들은 다소 제한된 유연성을 제공한다.
블록 LDPC 코드들을 사용하는 것은 불필요한 패딩을 피하기 위해 코드의 블록 길이의 배수로 데이터를 할당할 필요가 있고, 이는 링크 효율을 감소시킨다. 사양의 일부로 LDPC를 채택한 무선 표준 사이에서, 블록 LDPC 코드들의 세분성 제한을 처리하기 위해 다음의 세 가지 접근법이 언급될 수 있다: (1) IEEE 802.11ad와 같이 하나의 매우 짧은 블록 길이를 갖는 코드들의 사용, 블록 길이가 작을수록, 코드의 세분성이 미세해지지만, 짧은 블록 길이를 갖는 블록 LDPC 코드들은 성능이 부족하고, 이는 링크 효율을 또한 감소시킨다; 2) IEEE 802.11n과 같이 복수의 블록 길이를 갖는 블록 LDPC 코드들의 사용, 본 접근법은 복수의 코드를 지원하기 위한 요건으로 인해 보다 복잡한 디코더를 구현하는 대신에 성능 저하를 완화한다; 및 3) 3GPP와 같이 터보 코드들을 사용. 터보 코드들의 돌림형 구조는 디코더의 복잡성을 증가시키지 않고 높은 세분성을 갖는 확장 가능한 코드 길이를 제공할 수 있다. 그러나, 터보 코드들은 충분한 병렬 처리 능력을 제공하지 못하고, 이는 결국 수 기가비트/초(gigabits per second, Gb/s) 처리량을 달성하는 그들의 능력을 제한한다.
공간적으로 결합된 저밀도 패리티 검사(spacially-coupled low-density parity-check, SC-LDPC) 코드들은 새로운 용량 달성 코드들이다. SC-LDPC 코드들은 터보 코드들과 LDPC 블록 코드들 양쪽의 장점을 결합한다. SC-LDPC 코드들은 비교적 작은 신드롬 포머 메모리를 갖는 특별한 종류의 LDPC 코드들을 형성한다. 따라서, SC-LDPC 코드들은 돌림형 구조를 갖는 패리티 검사 행렬들을 갖는다. 이러한 구조는 다른 블록 LDPC 코드들에 비해 높은 세분성을 갖는 확장 가능한 코드 길이를 허용한다. 또한, SC-LDPC 코드들은 LDPC 코드들의 높은 병렬 처리 능력을 이어받기 때문에, 수 GB의 처리량을 지원할 수 있다.
임의의 다른 블록 LDPC 코드로서 종료된 SC-LDPC 코드들을 디코딩할 수 있지만, 그렇게 하는 것은 SC-LDPC 코드들의 미세한 세분성 및 유연한 길이의 장점들을 없앤다. 또한, 이러한 접근법의 대기 시간 및 하드웨어 복잡성은 매우 큰 블록 길이를 갖는 SC-LDPC 코드들에 대해서는 비실용적이다. SC-LDPC 코드 패트릭 검사 행렬의 돌림형 구조로 인해, 이러한 디코더는 그것이 수렴하기 전에 많은 횟수의 반복을 또한 필요로 한다. 대안적으로, SC-LDPC 코드들은 슬라이딩 윈도우 디코더를 사용하여 디코딩될 수 있다. 이러한 접근법은 전체 블록 디코더 문제들의 대부분을 완화시키는 것으로 보인다. 그러나, 해결해야 할 몇 가지 중요한 성능 문제들이 여전히 존재한다.
첫째, 현재의 SC-LDPC 디코더 평균 반복 횟수가 높다, 예를 들어, 윈도우 크기 15를 갖는 SC-LDPC 코드에 대해 슬라이딩 윈도우 디코더를 실행하면, 윈도우 당 고정된 10회 반복은 변수 노드(variable node, VN) 당 150회 반복을 실행한다. 처리량을 증가시키기 위해서는 슬라이딩 윈도우 디코더 내의 VN 당 평균 반복 횟수까지 감소시킬 필요가 있다. 또한, 현재의 윈도우의 디코딩을 종료하고 다음 윈도우의 디코딩을 시작하기 위해서는 간단한 조기 중지 규칙을 사용할 필요가 있다. VN에 대한 소프트 비트 표시기를 기반으로 하여 디코딩 윈도우 내의 BER(bit error rate)을 추정하는 조기 중지 규칙이 REF-4에서 제안되었다. 그러나, 이러한 규칙의 평가는 룩업 테이블 및 Nt개의 실수 추가를 필요로 하고, 여기서, Nt는 디코딩 윈도우 내의 타겟 변수 노드(variable node, VN) 개수이다. 대신에, 본 개시의 실시 예들은 부분 신드롬 계산을 기반으로 하는 간단한 중지 규칙을 제안하고 평가한다(섹션 Ⅲ 참조).
둘째, 전체 블록 디코더는 디코딩 임계값을 개선하기 위해 SC-LDPC 코드의 양쪽 종단을 사용하는 반면에, 슬라이딩 윈도우 디코더는 시작 종단만을 사용한다. 따라서, 전체 블록 디코더는 슬라이딩 윈도우 디코더를 능가한다. 두 개의 디코더 간의 갭을 더 줄이기 위해, 본 개시의 실시 예들은 지그재그 윈도우 디코더를 소개한다. 또한, 본 개시의 실시 예들은 지그재그 윈도우 디코더가 슬라이딩 윈도우 디코더보다 VN 당 평균 반복 횟수를 더 적게 필요로 한다는 것을 보여준다.
셋째, 동적 무선 채널에 적응하기 위해, 무선 시스템의 코딩 방식은 복수의 코드 레이트를 지원해야 한다. 본 개시의 실시 예들은 복수의 코드 레이트를 지원하는 SC-LDPC 코드 군을 설계하는 문제를 해결한다. 특히, 두 가지 접근법이 BER 성능 및 디코딩 복잡성 면에서 비교된다. 제1 접근법은 코드 펑처링을 사용하고, 제2 접근법은 코드 단축을 사용한다. 결과들은 단축을 기반으로 하는 SC-LDPC 코드 군이 펑처링을 기반으로 하는 SC-LDPC 코드 군보다 빠르게 수렴하고 우수한 오류 성능을 갖는다는 것을 보여준다.
SC-LDPC 코드들: 리뷰 및 예
도 5a, 도5b, 도 5c, 및 도 5d는 예시적인 프로토그래프 기반의 SC-LDPC 코드 구조를 도시한다. 도 5a 내지 도 5d에 도시된 SC-LDPC 코드 구조들의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
프로토그래프 기반의 SC-LDPC 코드는 비교적 적은 개수의 VN 505 및 검사 노드(check node, CN) 510을 갖는 태너 그래프인 프로토그래프 500으로 시작한다. 정규 (3,6) LDPC 코드 프로토그래프의 예가 도 5a에 도시된다. 도 5b에 도시된 바와 같이 (3, 6, L) SC-LDPC 코드 앙상블이 L개의 프로토그래프 복사본을 사용하여 생성된다. 도 5c에 도시된 바와 같이 프로토그래프들 500은 각각의 CN에 결합된 VN을 갖는 사이클들과 상호 연결되지 않는다. 오히려, 도 5d에 도시된 바와 같이 프로토그래프들 500은 체인 520에 결합된다. 체인 520에서 각각의 프로토그래프 500은 그 왼쪽으로 최대 m개의 프로토그래프 복사본 및 그 오른쪽으로 최대 m개의 프로토그래프 복사본에 결합되고, 여기서 m은 신드롬 포머 메모리, 또는 간단히 코드의 메모리라 불린다. 복수의 단계 리프팅을 갖는 프로토그래프 기반의 블록 LDPC 코드들과 대조적으로, SC-LDPC 코드들은 작은 코드의 메모리을 갖는, 즉, m<<L이며, 이는 SC-LDPC 코드들의 패리티 검사 행렬이 돌림형 구조임을 나타낸다. 처음 및 마지막의 m개의 프로토그래프 복사본 내의 CN들 510은 다른 프로토그래프 복사본 내의 그들의 해당 CN들 510보다 낮은 차수를 갖는다는 것을 유의해야 한다. 이것은 SC-LDPC 결합된 체인의 시작 및 끝에서 더 강한 CN들을 의미하고, 이것은 코드 레이트에서의 작은 감소의 비용으로 SC-LDPC 코드들의 반복적인 디코딩 임계값을 개선한다. 결합된 체인에서 처음 m개의 프로토그래프 복사본은 시작-종단 525로 불리고, 마지막 m개의 프로토그래프 복사본은 종료-종단 530으로 불리고, 이들은 도 5d에서 음영 처리된 색상으로 도시된다.
도 6은 본 개시에 따른 리프팅 팩터 Z=112를 갖는 (3, 6, 720) 프로토그래프 기반의 SC-LDPC 코드의 일 예를 도시한다. 도 6에 도시된 프로토그래프 기반의 SC-LDPC 코드의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
예를 들어, (3, 6, 720) SC-LDPC 코드 600은 도 5a에 도시된 프로토그래프를 사용하여 설계된다. 먼저, 도 5d에서와 같이 720개의 프로토그래프 복사본의 체인 520을 결합함으로써 코드 앙상블이 구성된 후, 리프팅 팩터 Z=112를 갖는 결합된 체인을 리프팅함으로써 코드가 구성된다. 설계된 SC-LDPC 코드 600에 대한 패리키 검사 행렬 605가 도 6에 도시된다. 패리티 검사 행렬 605에서 숫자 x는 x 위치들을 오른쪽으로 주기적으로 이동시킨 ZxZ 단위 행렬을 표시한다. 패리티 검사 행렬 605의 빈 항목들은 모든 원소가 0인 ZxZ 행렬이다. 패리티 검사 행렬의 각각의 두 개의 열은 번호로 표시되며, 이는 이들 2Z개의 VN이 속하는 프로토그래프 섹션을 표시한다. 각각의 프로토그래프 섹션에서, 처음 Z개의 VN은 정보 비트이고, 두 번째 Z개의 VN들은 패리티 비트이다. 설계된 SC-LDPC 코드 600은 주기가 3인 시변 준 순환(quasi-cyclic, QC) SC-LDPC 코드이다. 이러한 패리티 검사 행렬에서 순열 행렬들은 처음 9개의 프로토그래프 섹션의 거스를 극대화하기 위해 선택되었다. 이 코드의 주기가 3이기 때문에, 전체 코드의 거스는 처음 9개의 프로토그래프 섹션의 거스와 동일하다.
전형적으로, SC-LDPC 코드 패리티 검사 행렬들은 시작 이전의 항목들이 0이고, 끝 이후의 항목들이 0이라는 가정들로부터 기인한 처음과 끝 부분에서의 뷸규칙성을 갖는다. 패리티 검사 행렬 600은 처음의 시작 종단 610 및 종료 종단 615를 포함한다. SC-LDPC 코드 600은 다음의 두 섹션에서 성능 결과들을 생성하는 단계에서 사용될 것이다.
도 7은 본 개시에 따른 슬라이딩 윈도우 디코더 700을 도시한다. 도 7에 도시된 슬라이딩 윈도우 디코더 700의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
SC-LDPC 코드 600은 블록 LDPC 코드처럼 디코딩될 수 있지만, 매우 큰 길이의 SC-LDPC 코드워드들이 사용되면, 블록 LDPC 코드처럼 SC-LDPC 코드 600을 디코딩하는 것은 일반적으로 비실용적이다. 또한, 블록 디코더를 사용하는 것은 SC-LDPC 코드들의 미세한 세분성 및 유연한 길이의 장점들을 없앤다. 특정 시스템들은 SC-LDPC 코드들을 디코딩하기 위해 슬라이딩 윈도우 디코더를 사용한다. 슬라이딩 윈도우 디코더가 도 7에 도시된다. 디코더는 프로토그래프 섹션의 개수 W, 예를 들어, 크기 W 710으로 정의되는 윈도우 705에서 VN들을 처리한다. 디코더는 최대 반복 횟수를 실행하거나, 조기 종결 기준이 충족되면 중지한다. 그 후, 디코더는 제1 프로토그래프 섹션(또는, 처음 S개 섹션)의 값을 결정한 다음, 제1 프로토그래프 섹션(또는, 처음 S개 섹션)을 출력하고 디코딩 윈도우에서 마지막 섹션 이후의 프로토그래프 섹션(또는 S개 섹션)을 입력함으로써 디코딩 윈도우를 단계 S715에 의해 진행한다.
슬라이딩 윈도우 디코더 700에서, 크기 W 710의 디코딩 윈도우 705는 SC-LDPC 코드 600의 프로토그래프 섹션들을 따라 이동한다. 디코딩 윈도우 705의 위치 p는 윈도우 705의 해당 프로토그래프 섹션을 나타낸다. 슬라이딩 윈도우 디코더 700은 디코딩 윈도우 705가 제1 위치에 있는 경우, 즉 P=1인 경우에 반복적인 디코딩 알고리즘이 수행된 다음, 디코딩 윈도우 705가 제2 위치에 있는 경우, 즉 P=2인 경우에 반복적인 디코딩 알고리즘이 수행된 다음, 디코딩 윈도우 705가 제3 위치에 있는 경우, 즉 P=3인 경우에 반복적인 디코딩 알고리즘이 수행되는 등과 같이 실행된다.
특정 시스템에서, 디코딩 윈도우는 (중지 규칙 없이) 고정된 반복 횟수 후에 중지되거나, 그들은 VN들에 대한 소프트 비트 오류 표시기들의 계산을 필요로 하는 추정된 비트 오류율 메트릭을 사용한다. 평균 반복 횟수를 줄이기 위해(디코딩 전력 소비를 줄이기 위해), 조기 중지 규칙이 구현되어야 한다. 그러나, 다른 시스템들에서의 중지 규칙은 계산하기 복잡하다.
미리 결정된 반복 횟수의 사용은 매우 효율적이지 않지만, 최악의 채널 조건에 대해서는 설정되어야 한다. 대신에, BER을 추정하는 단계를 기반으로 하는 실시간 조기 중지 규칙이 디코딩 윈도우 내의 타겟 VN들의 로그 우도 비(log-likelihood-ratio, LLR)를 사용하여 제안되었다. 추정된 BER이 임계치의 BER보다 작거나, 최대 반복 횟수에 도달하는 경우, 디코딩 윈도우 705는 앞으로 이동한다. BER은 타겟 VN들의 소프트 비트 오류 표시기들의 평균을 구함으로써 추정되고, 여기서 LLR Γ를 갖는 VN에 대한 소프트 비트 오류 표시기는 1/(1+exp(|Γ|))이다. 그러나, 소프트 비트 오류 표시기의 평가는 룩업 테이블을 필요로 하고, 평균을 계산하는 단계는 각 반복 후에 Nt, 예를 들어, Nt=2Z·s번의 실 가산이 필요하다.
도 8은 본 개시에 따른 조기 중지 규칙을 갖는 슬라이딩 윈도우 디코더 800을 도시한다. 도 8에 도시된 슬라이딩 윈도우 디코더 800의 실시 예는 단지 예시를 위한 것이다. 슬라이딩 윈도우 디코더 800은 슬라이딩 윈도우 디코더 700과 동일할 수 있지만, 중지 규칙을 또한 포함한다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다. 슬라이딩 윈도우 디코더 800은 크기 W=10의 디코딩 윈도우705 및 크기 Ws=5의 부분 신드롬 검사 윈도우 810을 포함한다.
본 개시의 실시 예들은 디코딩 윈도우 내의 단지 몇 개의 CN에만 관련되는 코드의 신드롬의 일부만 검사하는 단계를 기반으로 하는 간단한 중지 규칙을 사용한다. 여기서, Ws는 도 8에 도시된 바와 같이 (프로토그래프 섹션의 개수에서) 부분 신드롬 검사 윈도우 폭 810으로 정의된다. 제안된 중지 규칙: 신드롬 검사를 통과하거나 최대 반복 횟수에 도달하면, Ws에서의 CN들에 대한 신드롬을 검사한 다음, S 내의 VN들에 대한 결정이 출력되고, 그 후, 슬라이딩 윈도우의 위치가 업데이트된다.
본 개시의 실시 예들은 디코딩 윈도우 705 내의 단지 몇 개의 CN의 신드롬을 검사하는 단계를 기반으로 하는 간단한 중지 규칙을 사용하도록 제안한다. 이러한 실시 예들에서, 크기 Ws의 부분 신드롬 검사 윈도우 810은 디코딩 윈도우 705에서 처음의 Ws개의 프로토그래프 섹션들로서 정의된다. 슬라이딩 윈도우 디코더 800에서, 크기 W의 디코딩 윈도우 705는 SC-LDPC 코드 600의 프로토그래프 섹션들을 따라 이동한다. 디코딩 윈도우의 위치, Pi는 윈도우에서의 제1 프로토그래프 섹션을 나타낸다. 업데이트된 슬라이딩 윈도우 디코더 800은 다음과 같다:
모든 윈도우 위치 pi=pi-1+s에 대해, 여기서 s는 윈도우 단계 크기, i=1,…,L 및 p1=1,
1) 최대 반복 회수 Iw에 대해,
- 반복적인 LDPC 코드 디코딩 알고리즘에 따라 디코딩 윈도우 805 내의 모든 VN 및 CN을 업데이트한다.
- 부분 신드롬 검사 윈도우 내의 CN들에 대한 신드롬을 계산한다. 모든 CN이 충족되거나 최대 반복 횟수에 도달하면, 다음 단계로 간다. 그렇지 않으면, 다음 반복을 계속한다.
2) 타겟 VN들의 값을 결정한다. 디코딩 윈도우의 처음 S개의 섹션 내의 VN들은 타겟 VN이라 불린다.
디코딩 윈도우 705 내에서, 합-곱(sum-product), 최소-합(min-sum), 이중 양자화 도메인(dual-quantization domain) 등과 같은 LDPC 코드들에 사용된 반복적인 디코딩 알고리즘들 중 어느 하나가 사용될 수 있다. 또한, 디코딩 윈도우 705 내의 CN들을 업데이트하는 단계는 디코딩 윈도우 외부의 VN들에 대한 외부 정보에 대한 액세스가 필요하다는 점에 유의해야 한다. 특히, 디코딩 윈도우 705 직전의 m개의 프로토그래프 섹션들 내의 VN들. 이들 VN은 이전 윈도우로부터의 마지막 업데이트를 기반으로 하여 그들의 외부 정보를 전송한다. 최대 반복 횟수는 윈도우 내에서의 타겟된 오류 확률을 달성하기 위해 선택될 수 있다. 이것은 밀도 진화 기술을 사용하여 수행될 수 있다.
도 9는 상이한 부분 신드롬 검사 윈도우 크기 Ws=5, Ws=4, 및 Ws=3을 갖고, W=15, s=1 및 Iw=90을 갖는 슬라이딩 윈도우 디코더 800을 사용하여 이러한 중지 규칙의 BER 및 FER(frame error rate) 성능을 보여준다. 또한, 결과들은 최대 1000회 반복되는 전체 블록 디코더를 사용한 결과와 비교되었다. 슬라이딩 윈도우 디코더의 FER 성능이 Ws<5에 대해 저하되기 시작한다는 것은 주목할 만하다. Ws>5에 대한 결과들은 Ws=5와 유사한 성능을 갖는 것으로 나타난다. 윈도우 705 내의 CN들이 타겟 VN들에 직접 연결되기 때문에, 이 코드에 대한 Ws 는 3 이상이어야 함을 유의해야 한다.
지그재그 윈도우 디코더
도 10a 및 도 10b는 본 개시에 따른 지그재그 윈도우 디코더 상태들을 도시한다. 지그재그 윈도우 디코더 상태들의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
슬라이딩 윈도우 디코더 800에서, 윈도우는 시작 종단 610에서 종료 종단 615로 한 방향으로 이동한다. 이것은 정보가 단지 한 방향으로 디코딩 윈도우들 705 사이에서 흐를 수 있게 하고, 이로 인해 전체 블록 디코더에 비해 성능이 약간 저하된다. 또한, 슬라이딩 윈도우 디코더 800을 사용한 시뮬레이션들은 디코딩 윈도우가 수렴하지 못할 때 즉, 최대 반복 횟수에 도달하고, 부분 신드롬 검사 윈도우 805 내의 CN들이 충족되지 못할 때, 몇 개의 연속적인 디코딩 윈도우가 또한 발산하지만, 그 이후, 슬라이딩 윈도우 디코딩 800은 올바른 결정으로 다시 수렴할 것이라는 것을 보여주었다. 이것은 도 10a에 도시되고, 여기서 원들은 슬라이딩 윈도우 디코더 800이 SC-LDPC 코드 600의 프로토그래프 섹션들을 따라 이동할 때의 디코딩 윈도우들의 상태를 나타낸다. 흰색 원 1005는 디코딩 윈도우가 올바른 결정에 수렴했음을 표시하고, 회색 원 1010은 디코딩 윈도우가 수렴하지 않았음을 표시한다. 여기서, 발산은 수렴에 실패한 연속적인 프로토그래프 섹션들의 집합으로 정의되고, 발산 크기는 발산 내의 프로토그래프 섹션의 개수로 정의된다. 예를 들어, 도 10a의 발산은 4의 크기를 갖는다.
특정 실시 예들은 지그재그 윈도우 디코더라고 불리는 새로운 디코더를 제공한다. 지그재그 윈도우 디코더에서, 디코딩 윈도우는 도 10c, 도 10d 및 도 10e에 도시된 바와 같이 두 개의 방향을 갖는다.
순방향: 조기 중지 규칙이 충족되거나 최대 반복 횟수에 도달하면, 디코딩 윈도우는 하나의 프로토그래프 섹션(또는, SW개의 섹션들)을 오른쪽으로 진행시켜서 정보를 왼쪽에서 오른쪽으로 밀어낸다. 조기 중지 규칙이 충족되면, 타겟된 프로토그래프 섹션(들)은 디코딩을 통과하도록 설정된다. 그렇지 않으면, 디코딩 실패로 설정한다. 디코딩에 실패한 연속적인 프로토그래프 섹션들은 발산이라고 불린다.
역방향: 발산의 끝에서, 디코딩 윈도우는 그 방향을 변경하여 정보를 오른쪽에서 왼쪽으로 밀어낸다. 이러한 방향은 디코딩 윈도우가 발산의 시작에 도달할 때까지 계속되고, 이후, 순방향으로 전환한다.
지그재그 윈도우 디코더에서, 디코딩 윈도우는 발산의 끝에서 정보를 발산의 끝에서의 올바른 상태에서 다시 발산으로 밀어냄으로써 발산을 교정하기 위해 그 방향을 역전시킨다. 도 10b는 지그재그 윈도우 디코더의 방향을 도시한다. 디코딩 윈도우는 두 개의 방향 즉, 디코딩 윈도우가 시작 종단에서 종료 종단 (오른쪽)으로 이동하는 순방향, 및 디코딩 윈도우가 종료 종단에서 시작 종단(왼쪽)으로 이동하는 역방향을 갖는다. 지그재그 윈도우 디코더 프로세스는 다음과 같다:
1) 윈도우 위치 p=1, window_direction=순반향, 및 previous_window_converged = 참을 설정한다.
2) 최대 반복 횟수 Iw에 대해,
- 반복적인 LDPC 코드 디코딩 알고리즘에 따라 디코딩 윈도우 내의 모든 VN 및 CN을 업데이트한다.
- 부분 신드롬 검사 윈도우 내의 CN들에 대한 신드롬을 계산한다.
- 모든 CN이 충족되면, window_converged = 참을 설정하고, 3 단계로 이동한다.
- 최대 반복 횟수에 도달하면, window_converged = 거짓을 설정하고, 3 단계로 이동한다.
3) 디코딩 윈도우 방향을 검사한다.
- window_direction = 순방향인 경우,
- window_converged = 거짓이고, previous_window_converged = 참인 경우,
- divergence_start_position = p.
- window_converged = 참, previous_window_converged = 거짓이고, Z 라운드 수는 최대 Z 라운드 수보다 적은 경우,
- divergence_end_position = p.
- window_direction = 역방향.
- p=p-2s.
- window_converged = 참인 경우,
- 타겟 VN들의 값을 결정한다.
- previous_window_converged = window_converged.
- p=p+s.
- window_direction = 역방향인 경우,
(a) p>divergence_start_position인 경우,
- p=p-s.
(b) 그밖에
- p=p+s.
- window_direction = 순방향.
- previous_window_converged = 참.
- p<L인 경우, 2단계로 이동하고, 그렇지 않으면, 중지한다.
제안된 지그재그 윈도우 디코더에서, Z 라운드는 발산이 발생할 때 순방향, 역방향, 그 다음 순방향 윈도우의 조합으로서 정의된다. 대안적으로, Z 라운드는 '윈도우 반복', '윈도우 라운드', '윈도우 역전' 등으로 언급될 수 있다. 특정 실시 예들에서, 발산에서의 일부 프로토그래프 섹션들이 Z 라운드의 제2 순방향 윈도우에서 수렴하지 않는 경우, 제2 Z 라운드는 제1 Z 라운드 내에 중첩된다. 이러한 개념의 예시가 도 11a 및 도 11b에 도시된다. 도 11a는 발산이 발생할 때 순방향 1115, 역방향 1120, 그 다음 순방향 1125 윈도우를 갖는 1회의 Z 라운드 1105를 도시한다. 도 11b는 발산이 발생할 때 순방향 1115, 역방향 1120, 제2 순방향 1125, 제2 역방향 1130 및 그 다음 제3 순방향 1135 윈도우를 갖는 1회의 Z 라운드 1110을 도시한다. 마찬가지로, 복수의 Z 라운드가 수행될 수 있다. 그러나, 낮은 SNR 영역에서 VN들의 집합 내에서의 무제한 바운싱을 방지하기 위해, 최대 Z 라운드 수는 지정되어야 한다.
지그재그 윈도우 디코더의 실제 구현은 Z 윈도우 1015라 불리는 미리 결정된 최대 발산 크기를 지원한다. Z 윈도우 1015는 지원된 최대 발산 크기이다. 특정 실시 예들에서, 구현 메모리는 W+Zw+m에 비례한다. 발산 크기>Z 윈도우인 경우, 지그재그 윈도우 디코더는 코드워드 디코딩을 종료하고, 재전송을 요청한다.
도 12a 및 도 12b는 본 개시에 따른 각각의 지그재그 윈도우 디코더의 성능을 도시한다. 도 12a는 1회의 Z 라운드, ZR=1에 대한 지그재그 윈도우 디코더의 성능을 도시하고, 도 12b는 2회의 Z 라운드, ZR=2에 대한 지그재그 윈도우 디코더의 성능을 도시한다. 도 12a 및 도 12b에 도시된 성능들은 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예 및 데이터들이 사용될 수 있다.
도 12a 및 도 12b는 상이한 최대 반복 횟수 Iw 및 상이한 최대 Z 라운드 수 ZR에 대한 지그재그 윈도우 디코더의 성능을 보여준다. 시뮬레이션은 AWGN 채널을 통한 BPSK 변조를 사용하여 수행되고, 디코딩 윈도우 내에서 사용된 디코더는 플러딩 스케줄링으로 스케일링된 최소 합(min-sum)이다. ZR=0을 갖는 지그재그 윈도우 디코더는 슬라이딩 윈도우 디코더이다. 지그재그 윈도우 디코더는 정보가 발산의 끝에서 역방향으로 흐르는 것을 허용함을 유의해야 한다. 그에 따라, 지그재그 윈도우 디코더의 BER/FER 성능은 슬라이딩 윈도우 디코더보다 양호하다. 또한, 지그재그 윈도우 디코더는 BER 성능을 저하시키지 않고 슬라이딩 윈도우 디코더에 비해 작은 값의 최대 반복 횟수를 사용하는 것을 허용한다. ZR=1 및 IW=5를 갖는 지그재그 윈도우 디코더는 IW=90을 갖는 슬라이딩 윈도우 디코더보다 0.25 데시벨(decibel, dB) 양호함을 유의해야 한다. 또한, 도 12b는 ZR=1 및 IW=5를 갖는 지그재그 윈도우 디코더가 Iw=90을 갖는 슬라이딩 윈도우 디코더보다 적은 VN 당 평균 반복 횟수를 필요로 한다는 것을 보여준다. 마지막으로, 도 12a 및 도 12b는 ZR=1 이상으로 Z 라운드 수를 증가시키면 리턴이 감소한다는 것을 보여준다.
도 12a 및 도 12b의 결과들은 발산 크기에 제한이 없다고 가정한다. 그러나, 지그재그 윈도우 디코더의 실현 가능한 구현은 최대 발산 크기를 지정해야 한다. 지그재그 윈도우 디코더를 구현하기 위해 필요한 메모리는 지원된 최대 발산 크기를 증가시킬 때 증가한다. 최대 발산 크기는 Z 윈도우 크기, ZW라고 불린다. 필요한 구현 메모리는 W+ZW+m에 비례한다.
특정 실시 예들에서, 블록 LDPC 코드들을 디코딩하는 과정에서 사용된 디코딩 알고리즘들 중 어느 하나가 디코딩 윈도우 내의 VN 및 CN들을 업데이트 하는 데 사용될 수 있다. 일반적으로 사용된 디코더들의 일부는 곱-합(product-sum), 스케일링된 최소 합(scaled min-sum, SMS), 및 이중 양자화 도메인(dual-quantization domain, DQD)이다. 디코딩 윈도우 내의 알고리즘은 플러딩 또는 레이어드 스케줄링을 실행할 수 있다. 또한, 윈도우 내의 CN 및 VN들의 처리는 병렬 또는 직렬로 수행될 수 있다.
SC-LDPC 코드들은 유한한 코드의 메모리를 가지며, 다음과 같이 정의된다는 것을 상기한다: 임의로 주어진 프로토그래프 섹션 내의 비트들의 값이 해당 프로토그래프 섹션 이전 또는 이후의 최대 m개의 프로토그래프 섹션 내의 비트들의 값에 의존하는 경우, SC-LDPC 코드는 메모리 m을 갖는다. SC-LDPC 코드들에 대해, m은 전형적으로 작은 수이다, 예를 들어, 도 6에서 SC-LDPC 코드 600 메모리 m=2이다.
이러한 SC-LDPC 코드들의 속성은 SC-LDPC의 윈도우 W에서 작업하는 레이어드 디코딩 기계의 병렬 팩터를 증가시키기 위해 사용될 수 있다. 일반적으로, LDPC 코드들의 병렬 팩터는 Z이지만, SC-LDPC 코드 600의 구조는 Z보다 높은 병렬 팩터를 허용함을 유의해야 한다.
특정 실시 예들에서, 메모리 m의 SC-LDPC 코드는 ZxZ 순환 행렬을 사용하여 구성되고, 레이어드 스케줄링에서 크기 W의 디코딩 윈도우로 디코딩된다. 병렬 경합이 없는(두 개의 CN이 동시에 동일한 VN 메모리에 액세스할 필요가 없는) 상태에서 Z*floor(W/(m+1))개의 CN을 처리하는 것이 가능하다.
일 예로서, W=15의 지그재그 윈도우 디코더 (또는, 슬라이딩 윈도우 디코더)를 사용하는 SC-LDPC 코드 600은 전형적인 레이어드 디코더에서 반복 당 15개의 레이어를 필요로 한다(각각의 레이어가 Z=112개의 CN을 처리한다). 그러나, 상기의 실시 예에 따르면, 3개의 레이어에서 반복을 끝내는 것이 가능하다. 제1 레이어에서 디코딩 윈도우의 1행, 4행, 7행, 10행, 및 13행의 112*5개의 CN을 처리한다. 제2 레이어에서 디코딩 윈도우의 2행, 5행, 8행, 11행, 및 14행의 112*5개의 CN을 처리한다. 제3 레이어에서 디코딩 윈도우의 3행, 6행, 9행, 12행, 및 15행의 112*5개의 CN을 처리한다.
도 13은 본 개시에 따른 지그재그 윈도우 디코더의 1회의 Z 라운드를 갖는 크기 x의 프로토그래프 섹션들의 발산을 정정할 확률을 도시한다. 도 14는 본 개시에 따른 상이한 Z 윈도우 크기를 갖는 지그재그 윈도우 디코더의 FER(점선) 및 BER(실선) 성능을 도시한다. 도 13 및 도 14에 도시된 예들은 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예 및 데이터들이 사용될 수 있다.
도 13은 발산을 정정할 확률이 그 크기에 따라 감소한다는 것을 보여준다. 도 14는 상이한 Z 윈도우 크기(Zw=5, Zw=10, Zw=15, Zw=20, 및 무한대)에 대한 지그재그 윈도우 디코더의 성능을 보여준다. 결과들은 증가하는 Z 윈도우 크기가 성능을 개선하지만, 더 많은 구현 메모리를 필요로 한다는 것을 보여준다. Zw 및 Iw의 선택을 최적하기 위해서는 향후 연구가 필요하다. 예를 들어, 성능을 유지하기 위해 Zw는 감소시키고 Iw는 증가시키는 것이 가능하다.
특정 실시 예들에서, 지그재그 윈도우 디코더는 코드워드 실패 검출 규칙을 포함한다. Zw보다 큰 크기의 발산을 관찰하는 유한한 Z 윈도우 크기 Zw를 갖는 지그재그 윈도우 디코더는 블록 디코딩 실패의 조기 표시로서 사용된다. 이 경우, 지그재그 윈도우 디코더는 SC-LDPC 코드워드의 나머지를 디코딩하는 단계를 중지할 수 있고, 이후 수신기는 송신기로부터 SC-LDPC 코드워드의 재전송을 요청할 수 있다. 이러한 조기 코드워드 실패 검출 규칙은 특히 낮은 SNR에서 평균 반복 횟수를 감소시킨다, 예를 들어, 도 15를 참조하면, 이는 디코더의 전력 소비를 감소시킨다. 또한, 조기 코드워드 실패 검출 규칙은 수신기가 자동 반복 요청(automatic repeat request, ARQ) 또는 하이브리드 ARQ(hybrid ARQ, HARQ)를 통해 재전송을 빠르게 요청하는 것을 허용하고, 이는 피드백 오류 정정 방식의 대기 시간을 감소시킨다.
레이트-1/2 프로토그래프 기반의 SC-LDPC 코드 설계:
도 16은 본 개시에 따른 (3,6) 프로토그래프 기반의 SC-LDPC 코드를 도시한다. 도 16에 도시된 (3,6) 프로토그래프 기반의 SC-LDPC 코드 1600의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
본 개시의 실시 예들은 모두 0인 행렬들에 대해 공백 대신에 "ZZ" 값들을 갖는 도 6의 SC-LDPC 코드 600과 동일하거나 유사할 수 있는 SC-LDPC 코드 1600을 참조하여 설명된다. SC-LDPC 코드 1600 또는 SC-LDPC 코드 600은 본 발명 전반에 걸쳐 예로서 사용된다. 그러나, 본 개시의 실시 예들은 본 예에 국한되지 않고, 모든 SC-LDPC 코드에 적용될 수 있다.
SC-LDPC 코드 1600은 (3,6) 정규 프로토그래프의 여러 개의 복사본으로부터 구성된다. 리프팅 팩터는 Z=112이고, 도 16의 행렬은 SC-LDPC 코드 1600을 구성하는 순환 순열 행렬들에 대한 ID를 보여준다. 도 16에 도시된 예에서, A(1), A(2),…, 및 A(18)은 각각 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 3, 6, 14, 12, 28, 21 및 39의 값을 갖는다. ID 0을 갖는 순환 순열 행렬은 ZxZ 단위 행렬임을 유의해야 한다. 또한, ID i를 갖는 순환 순열 행렬은 i 위치를 오른쪽으로 주기적으로 시프트시킨 ZxZ 단위 행렬이다. 또한, 도 16에 도시된 예에서, ZZ는 모든 원소가 0인 ZxZ 행렬을 나타낸다. 이러한 행렬의 행들은 검사 노드(check node, CN)에 해당하고, 열들은 변수 노드(variable node, VN)에 해당한다.
순환 순열들의 두 개의 열 각각은 번호로 표시되고, 이는 이들 2Z개의 VN이 속하는 프로토그래프 섹션을 표시한다. 각각의 프로토그래프 섹션에서, 첫 번째 Z의 VN들은 정보 비트를 나타내고, 두 번째 Z의 VN들은 패리티 비트를 나타낸다. 또한, 패리티 비트를 나타내는 첫 번째 Z의 VN 및 정보 비트를 나타내는 두 번째 Z의 VN들을 갖는 것도 가능하다. 도 16은 720개의 프로토그래프 섹션들을 도시하지만, 이러한 SC-LDPC 코드 1600의 길이는 하나의 코드워드에서 인코딩될 필요가 있고 이용 가능한 정보 비트의 양에 따라 달라질 수 있다. 일반적으로, 코드워드(codeword, CW)의 길이는 실(ceil)(정보 비트의 #/Z)*Z/R이고, 여기서 R은 코드 레이트(본 예에서 R = 1/2)이다. 이러한 코드의 작은 세분성(세분성=Z개의 정보 비트) 및 CW 길이 유연성을 유의하는 것이 중요하고, 이는 무선 통신 표준화에서 프로토그래프 기반의 SC-LDPC 코드들을 채택하기 좋게 만든다. 프로토그래프 기반의 SC-LDPC 코드들은 돌림형/터보 코드들의 CW 길이 유연성 및 작은 세분성을 갖고, 프로토그래프 기반의 SC-LDPC 코드들은 높은 처리량 시스템들에서 필요한 LDPC 코드들의 높은 병렬화 팩터를 갖는다.
또한, CW 길이가 증가함에 따라 반복되는 SC-LDPC 코드 1600을 구성하기 위해 단지 18개의 순환 순열들이 사용됨을 유의해야 한다. 예를 들어, 섹션 1 1605의 프로토그래프에서 사용된 순환 순열들은 프로토그래프 섹션 4 1620, 섹션 7 1635, 섹션 10 등에서 재사용되고, 섹션 2 1610의 프로토그래프에서 사용된 순환 순열들은 프로토그래프 섹션 5 1625, 섹션 8 1640, 섹션 11 등에서 재사용되고, 프로토그래프 섹션 3 1615에서 사용된 프로토그래프 섹션들은 섹션 6 1630, 섹션 9 1645, 섹션 12 등에서 사용된다.
더 높은 레이트를 얻기 위해 설계된 레이트-1/2 SC-LDPC를 펑처링하는 단계:
도 17은 본 개시에 따른 펑처링 패턴을 사용하여 레이트-3/4 로 펑처링된 레이트-1/2 프로토그래프 기반의 SC-LDPC 코드를 도시한다. 도 17에 도시된 SC-LDPC 코드 1700의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
프로토그래프 기반 코드들은 더 높은 레이트를 갖는 코드들을 얻기 위해 펑처링될 수 있다. 예를 들어, SC-LDPC 코드 1600은 레이트-1/2를 갖지만, SC-LDPC 코드 1600은 펑처링 패턴 [1, 0; 1, 1]을 사용하여 레이트-2/3으로, 펑처링 패턴 [1, 0, 1; 1, 1, 0]을 사용하여 레이트-3/4 로, 또는 펑처링 패턴 [1, 0, 1, 0, 1; 1, 1, 0, 1, 0]을 사용하여 레이트-5/6으로 펑처링될 수 있다. 이들 패턴은 돌림형 코드들을 평처링하기 위해 일반적으로 사용된 패턴들과 유사해 보이지만, 여기서 펑처링 패턴은 프로토그래프 섹션들에 적용된다. 예를 들어, 펑처링 패턴 [1, 0, 1; 1, 1, 0]은 SC-LDPC 코드 1600의 세 개의 연속적인 프로토그래프 섹션마다 적용된다. 세미콜론 이전의 값들은 각각의 프로토그래프 섹션의 Z개의 정보 비트를 전송할 지 펑처링할 지를 표시한다. 세미콜론 이후의 값들은 각각의 섹션의 Z개의 패리티 비트를 전송('1'의 값)할 지 펑처링('0'의 값)할 지를 표시한다.
프로토그래프 기반의 SC-LDPC 코드들의 종료:
일반적으로, 블록 LDPC 코드에 대한 SC-LDPC 코드 이득은 SC-LDPC 코드의 종료로부터 온다. 이러한 종료는 전형적으로 코드의 그래프의 가장자리에서 낮은 차수의 CN들로 표시된다. 예를 들어, 도 16의 SC-LDPC 코드 1600에서, 모든 CN은 프로토그래프 섹션 1, 프로토그래프 섹션 2, 프로토그래프 섹션 721 및 프로토그래프 섹션 722의 CN들을 제외하고, 차수 6을 갖는다(섹션 1 및 섹션 722의 CN들은 차수 2를 갖고, 프로토그래프 섹션 2 및 프로토그래프 섹션 721의 CN들은 차수 4를 갖는다). 다른 관점에서, 도 16의 SC-LDPC 코드 1600은 무한히 긴 코드로부터의 섹션으로서 보일 수 있지만, 프로토그래프 섹션 0, 프로토그래프 섹션 -1, 프로토그래프 섹션 -2,… 및 프로토그래프 섹션 721, 프로토그래프 섹션 722, 프로토그래프 섹션 723,…내의 정보 및 패리티 비트들은 0의 값을 갖는다.
특정 실시 예들에서, SC-LDPC 코드 1600과 같은 SC-LDPC 코드는 무한히 긴 SC-LDPC 코드로부터의 섹션으로 볼 수 있지만, 시작 종단 프로토그래프 섹션들 이전 및 종료 종단 프로토그래프 섹션들 이후의 프로토그래프 섹션들 내의 정보 및 패리티 비트들은 고정되거나 (확실하게 패턴을 알고 있다). 예를 들어, SC-LDPC 코드 1600에서 프로토그래프 섹션 0, 프로토그래프 섹션 -1, 프로토그래프 섹션 -2,… 및 프로토그래프 섹션 721, 프로토그래프 섹션 722, 프로토그래프 섹션 723,…내의 비트는 고정되고 알려진 값들을 갖는다. SC-LDPC 코드의 코드워드들은 사용한 고정된 패턴에 의존한다는 것을 유의해야 한다. 이들 고정된 값을 바꾸면 코드의 코드워드가 바뀐다(코드를 바꾼다).
특정 실시 예들에서, SC-LDPC 코드워드는 디바이더 프로토그래프 섹션들의 종료 비트들을 변경함으로써 바꿀 수 있다. 이들 비트는 암호화되어 보안 링크를 통해 수신기로 전송될 수 있다. 특정 실시 예들에서, 이들 비트는 수신된 SC-LDPC 코드워드를 디코딩할 수 있도록 SC-LDPC 디코더를 초기화하는 데 사용된다.
SC-LDPC 코드들은 다음과 같이 정의되는 유한한 코드의 메모리(즉, 신드롬 포머 메모리)를 갖는다: SC-LDPC 코드는 임의로 주어진 프로토그래프 섹션의 비트들의 값이 해당 프로토그래프 섹션 이전 또는 이후의 최대 m개의 프로토그래프 섹션의 비트들의 값에 의존하는 경우 메모리 m을 갖는다. 도 16의 SC-LDPC 코드 1600에서, 코드의 메모리 m=2이다.
도 18은 본 개시에 따른 디바이더 프로토그래프 섹션들을 사용하여 몇 개의 블록 LDPC 코드로 분할된 무한히 긴 SC-LDPC 코드를 도시한다. 도 18에 도시된 분할된 SC-LDPC 코드 1800의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
특정 실시 예들에서, 메모리 m을 갖는 SC-LDPC 코드는 무한히 긴 SC-LDPC 코드로부터의 섹션으로 보이지만, 시작 종단 프로토그래프 섹션들의 이전 및 종료 종단 프로토그래프 섹션들 이후의 m개의 프로토그래프 섹션들 내의 정보 및 패리티 비트들은 고정되거나 긍정적으로 알려진 패턴을 갖는다. 예를 들어, 도 16의 SC-LDPC 코드 1600에서, 프로토그래프 섹션 0, 프로토그래프 섹션 -1, 프로토그래프 섹션 721, 및 프로토그래프 섹션 722 내의 비트들은 고정되고 알려진 값들을 갖는다. 이는 -1 이전 및 722 이후의 프로토그래프 섹션들 내의 비트들의 값에 상관없이 참이다. 알려진 비트 값들을 갖는 임의의 m개의 연속적인 프로토그래프 섹션들은 디바이더 프로토그래프 섹션들 1805로 지칭된다. 두 개의 디바이더 프로토그래프 섹션 1805 사이의 SC-LDPC 코드의 프로토그래프 섹션들은 블록 LDPC 코드 1810을 형성한다는 것을 유의해야 한다. 전형적인 블록 LDPC 코드들과 달리, 분할된 SC-LDPC 코드 1800은 디바이더 프로토그래프 섹션들 1805의 이전 및 이후의 프로토그래프 섹션들과 공동으로 SC-LDPC 디코더를 사용하여 디코딩될 수 있다. 도 18에 도시된 예에서, LDPC 블록들 1810의 길이는 동일할 필요가 없다는 것을 유의해야 한다.
디바이더 프로토그래프 섹션들 1805에서 '0'의 값(또는 알려진 고정된 패턴)의 사용은 코드의 레이트를 감소시킨다.
특정 실시 예들에서, 디바이더 프로토그래프 섹션들 내의 알려진 고정 패턴을 사용하는 대신에, 디바이더 섹션 1805는 몇 가지 방법을 사용하여 정확성을 위해 검사할 수 있는 정보 및 패리티 비트들을 전달할 수 있다. 일 예로서, 전송된 패킷들은 일반적으로 패킷 정확성을 검사하기 위해 순환 중복 검사(cyclic redundancy check, CRC)를 수행한다. CRC 코드워드의 일부인 m개의 연속적인 프로토그래프 섹션들 내의 비트들이 CRC 검사를 통과하면, 이들 비트는 비트의 알려진 고정된 패턴, 다시 말해서 디바이더 프로토그래프 섹션들 1805로서 처리될 수 있다.
도 19는 본 개시에 따른 동일하지 않은 오류 보호를 사용하여 몇 개의 블록 LDPC 코드로 분할된 매우 긴 SC-LDPC 코드를 도시한다. 도 19에 도시된 분할된 SC-LDPC 코드 1900의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
특정 실시 예들에서, 디바이더 프로토그래프 섹션들 1805 내의 알려진 고정된 패턴을 사용하는 대신에, 디바이더 섹션 1805는 코드워드 내의 다른 비트들보다 작은 비트 오류 확률을 갖는 정보 및 패리티 비트들을 전달한다. 예를 들어, 도 19에 도시된 예에 도시된 바와 같은 디바이더 프로토그래프 섹션들을 생성하기 위해 동일하지 않은 오류 보호 방법들이 사용될 수 있다. 이들 방법은 a) 더 낮은 변조 및 코딩 방식(modulation and coding scheme, MCS), 즉 더 낮은 변조 차수 및/또는 낮은 코딩 레이트; b) 더 좁은 아날로그 빔; 및 c) MIMO 전송의 경우 더 적은 수의 MIMO 스트림을 포함한다.
도 20은 본 개시에 따른 디바이더 프로토그래프 섹션들을 생성하기 위해 더 강한 헤더 보호를 사용하는 방법을 도시한다. 도 21은 본 개시에 따른 패킷 헤더를 전송하기 위해 반복, 또는 단축 후 반복 프로세스를 사용하여 SC-LDPC 코드워드의 일부를 강화하는 일 예를 도시한다. 도 20 및 도 21에 도시된 실시 예들은 단지 예시를 위한 것이다. 본 개시를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
특정 실시 예들에서, WLAN IEEE 802.11과 같은 패킷 기반 통신 시스템에서 각각의 패킷 2000은 헤더 2005 및 데이터(페이로드) 2010으로 구성된다. 헤더가 데이터보다 더 많이 보호되어야 한다는 것이 일반적이다. 특정 실시 예들에서, 하나의 파일 전송 또는 하나의 데이터 스트림과 같은 큰 덩어리에 속하는 모든 패킷들의 경우, 패킷들 2000은 하나의 SC-LDPC 코드워드 2015로서 인코딩된다. 패킷들 2000의 헤더 2005는 디바이더 프로토그래프 섹션들로서의 역할을 할 것이다. 헤더 2005는 낮은 변조 차수(QPSK), 펑처링 없음, 반복, 단축 또는 이들 방법의 조합을 사용하여 더 잘 보호될 수 있다. 도 21에 도시된 예에서, 헤더 정보 비트들은 단지 예시 목적을 위해 하나의 프로토그래피 섹션을 점유한다. 실제 시스템에서, 헤더 정보 비트들은 하나 이상의 프로토그래프 섹션을 점유할 수 있고, 프로토그래프 섹션들에 맞추기 위해 패딩이 필요할 수 있다.
특정 실시 예들에서, 헤더 2005는 내부 코드를 사용하여 먼저 인코딩될 수 있고, 이후, 내부 코드의 정보 및 패리티 비트들이 SC-LDPC 코드를 사용하여 인코딩된다. 이 경우, SC-LDPC는 헤더 섹션에 관한 외부 코드일 것이다.
헤더 2005가 패킷 데이터 2010을 복조하고 디코딩하는 방법에 관한 정보를 포함하기 때문에, 헤더 2005가 헤더 2005 다음의 데이터 2010과 무관하게 디코딩될 수 있어야 한다는 점을 지적하는 것은 중요하다. 이는 몇 가지 방법으로 수행될 수 있다 즉, 하나의 방법은 헤더가 적어도 W개의 프로토그래프 섹션(하나의 디코딩 가능한 윈도우의 크기)를 점유한다는 것을 확실히 하고, 이후 섹션들이 반복 및 패리티 비트들을 전달하는 동안 헤더 정보 비트를 처음 몇 개의 섹션에 넣는 것이다. 대안적으로, 헤더 2005를 디코딩하기 위해 내부 코드를 사용하고 나서, 디바이더 프로토그래프 섹션으로서 데이터 2010을 디코딩하기 위해 복구된 헤더를 사용할 수 있다.
특정 실시 예들에서, 하나의 SC-LDPC 코드워드를 사용하여 하나로 여러 개의 패킷 2000을 인코딩하는 도 20 및 도 21에 도시된 구조는 해당 패킷 다음에 연속 패킷이 존재한다는 것을 표시하거나 해당 패킷 다음에 연속 패킷이 존재하지 않음을 표시하기 위해 패킷 헤더 2005의 필드를 사용하여 시그널링될 수 있다. 대안적으로, 공동으로 인코딩된 패킷 수, 종료 유형, 종료 빈도, 데이터 변조 및 코딩 방식 등과 같은 SC-LDPC 인코딩 구조를 셋업하는 MAC 레벨 메시지들과 같은 상위 레벨 시그널링이 존재할 수 있다.
도 22는 본 개시에 따른 SC-LDPC 코딩 방식을 사용하는 HARQ 지원에 대한 일 예를 도시한다. 도 22에 도시된 SC-LDPC 코딩 방식 2200의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
특정 실시 예들에서, SC-LDPC 코딩 방식은 다음의 방법으로 하이브리드 자동 반복 요청(hybrid automatic repeat request, HARQ)을 지원한다: 이들 섹션 내의 정보 비트들을 복구할 수 있는 한 수신기는 SC-LDPC 코드 1600의 프로토그래프 섹션들을 디코딩한다. 디코더가 실패하면 2205, 디코더는 관련 패킷의 재전송을 요청한 후, 디코더는 수신된 정보를 계속 버퍼링하면서 재전송된 정보를 기다린다. 대안적으로, 디코더는 적어도 실패한 패킷, 모든 패킷, 또는 실패의 시작에서부터의 섹션들을 버퍼링할 수 있고, 다음 패킷의 헤더를 디코딩하기 시작할 수 있다.
재전송은
(1) (예를 들어, 수신기에서 결합된 체이스가 되는) 실패한 패킷과 관련된 모든 비트의 재전송
(2) 해당 패킷과 관련된 (만약 있다면) 펑처링된 비트의 일부 또는 전부를 전송하는 것에 의한 증분 중복 재전송
(3) 실패한 프로토그래프 섹션 및 실패한 패킷의 끝까지의 모든 다음 섹션들과 관련된 모든 비트(또는 증분 중복)의 재전송
(4) 실패한 프로토그래프 섹션과만 관련되거나 그 이후의 몇 개의 섹션과 관련된 모든 비트(또는 증분 중복)의 재전송일 수 있다.
위의 재전송 방식 3 및 재전송 방식 4는 수신기가 프로토그래프 섹션이 실패한 것에 대한 정보를 피드백하도록 요구한다.
코드 군 설계: 단축 대 펑처링
본 섹션에서는 복수의 코드 레이트를 지원하는 SC-LDPC 코드들의 군을 설계하는 문제가 해결된다. 다음의 두 가지 후보 접근법이 고려된다: 1) 낮은 코드 레이트를 갖는 SC-LDPC 앙상블을 설계한 후, 더 높은 코드 레이트를 갖는 코드들을 얻기 위해 그것을 펑처링한다. 이 접근법은, 여기서의 펑처링이 비트 레벨에서 보다는 프로토그래프 섹션 레벨에서 수행되는 것을 제외하고, 돌림형 코드들과 함께 사용된 방법과 유사하다 즉, SC-LDPC 코드 내의 VN 유형이 펑처링되면, 리프팅된 SC-LDPC 코드 내의 해당 유형의 모든 Z개의 VN이 펑처링될 것이다. 2) 높은 코드 레이트를 갖는 SC-LDPC 코드 앙상블을 설계한 후, 그것을 더 낮은 코드 레이트를 갖는 코드들로 단축시킨다. 이 접근법은 참조 19에서 논의된 AR4JA LDPC 코드 군을 설계하는 과정에서 사용된 방법과 유사하다.
본 개시의 실시 예들은 (접근법 당 하나씩) SC-LDPC 코드들의 두 가지 예시 군을 설계하고 시뮬레이션함으로써 두 개의 코드 군 설계 방법들을 도시하고 비교한다. 그리고 그렇게 제시된 결과들은 BER 성능 및 수렴 속도면에서 이들 두 가지 접근법을 비교하는 방법 및 그것이 계산 복잡성으로 변화되는 방법에 대한 이해를 돕기 위한 것이다. 또한, 본 개시에서는 (종단들을 제외하고 규칙적인) 규칙적인 차수 분포를 갖는 코드들만 고려된다. 규칙적인 SC-LDPC 코드들은 최적화된 불규칙한 설계들과 견줄 만한 좋은 디코딩 임계값을 갖는다.
도 23은 본 개시에 따른 펑처링 행렬 [1, 0, 1; 1, 1, 0]을 사용하여 레이트-3/4로 (3, 6, L) SC-LDPC 앙상블을 펑처링하는 일 예를 도시한다. 도 23에 도시된 펑처링된 코드 구조 2200의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
제1 코드 군에서, (3, 6, 720) SC-LDPC 코드 1600은 가장 낮은 레이트 (~ 레이트-1/2)를 갖는다. SC-LDPC 코드 1600은 각각 펑처링 패턴 [1, 0; 1, 1], [1, 0, 1; 1, 1, 0], 또는 [1, 0, 1, 0, 1; 1, 1, 0, 1, 0]을 사용하여 "대략" 레이트-2/3, 레이트-3/4, 또는 레이트-5/6으로 펑처링된다. 레이트-3/4로 (3, 6, 720) SC-LDPC 코드 1600을 펑처링하는 것에 대한 일 예가 도 23에 주어지고, 여기서 회색 원 2305는 펑처링된 VN들을 표시하고, 흰색 원 2310은 전송된 VN들을 표시한다.
도 24는 본 개시에 따른 레이트-4/5, 레이트-3/4, 레이트-2/3 또는 레이트-1/2로 단축될 수 있는 레이트-5/6 (3,18) LDPC 코드 프로토그래프를 도시한다. 도 24에 도시된 프로토그래프 2400의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
제2 코드 군에서, (3, 18, L) SC-LDPC 코드 앙상블이 도 24의 프로토그래프 2400을 기반으로 하여 설계된다. 그 다음, 이 코드는 Z=112 순환 순열 행렬들을 사용하여 주기가 3인 시변 준 순환 SC-LDPC 코드로 리프팅된다. 설계된 코드에 대한 패리티 검사 행렬 2500이 도 25에 도시된다. 순열 행렬들은 계층적 방법으로 선택되었다: 먼저, 코드의 처음 9개의 프로토그래프 섹션들의 거스를 극대화하기 위해 i1 2405 및 p1 2410, 제5 열 및 제6 열 2505를 리프팅하는 순열 행렬들이 선택되었고, 여기서 모든 다른 순열들은 모든 원소가 0인 ZxZ 행렬로 설정되었다. 그 다음, 거스를 극대화하기 위해 i2 2415, i3 2420, i4 2425, 및 마지막으로 i5 2430을 리프팅하는 순열 행렬들이 추가되었다. 이 코드를 레이트-4/5 코드로 단축시키기 위해, 모든 제1 열 2510이 삭제되었다(즉, i5의 모든 VN을 '0'으로 설정한 후, 전송 전에 이들을 삭제). 코드를 레이트-3/4 코드로 단축시키기 위해, 모든 제1 열 2510 및 제2 열 2515가 삭제되는 등, 레이트-2/3 코드 및 레이트-1/2 코드를 얻기 위해서 코드는 더 단축될 수 있다.
펑처링된 코드 군에서, 코드워드 내의 정보 비트 수는 고정되고 80416 비트와 동일하다. 단축된 코드 군에서, 프로토그래프 복사본의 개수 L은 코드워드 내의 정보 비트 수 80416을 유지하기 위해 각각의 코드 레이트에 맞게 조정된다. 따라서, 레이트-1/2, 레이트-2/3, 레이트-3/4 및 레이트-5/6에 대해 각각 L=720, L=360, L=240, 및 L=144이다. 또한, 공정한 비교를 유지하려고 노력하면, 디코딩 윈도우의 크기는 디코딩 윈도우 내의 VN의 개수가 30이 되도록 달라진다. 즉, 펑처링된 코드 군 내의 모든 코드에 대해 W=15이고, 단축된 코드 군의 레이트-1/2, 레이트-2/3, 레이트-3/4 및 레이트-5/6 각각에 대해 W=15, W=10, W=7 및 W=5이다(레이트-3/4인 경우, W는 7.5이어야 하지만, 7로 근사치를 계산하였다).
도 26 및 도 27의 FER 및 평균 반복 횟수 결과들은 펑처링된 코드 군 및 단축된 코드 군의 레이트-1/2 코드들은 유사한 성능을 갖는다는 것을 보여준다. 단축된 코드 군의 레이트-2/3 코드는 펑처링된 코드 군의 레이트-2/3 코드보다 약간 더 잘 수행된다. 단축된 코드 군의 레이트-3/4 코드는 FER 성능 면에서 0.6dB 만큼 펑처링된 코드 군의 레이트-3/4 코드를 능가하고, 임의로 주어진 SNR 포인트에서 VN 당 평균 12회 이상의 반복 감소를 제공한다. 단축된 코드 군의 레이트-5/6 코드는 단축된 코드 군이 펑처링된 코드 군보다 더 잘 수행되도록 설계된 FER 면에서 0.9dB 만큼 펑처링된 코드 군의 레이트-5/6을 능가한다.
단축된 코드 군의 코드들은 VN 당 평균 반복 횟수가 적지만, 이것이 반드시 계산 복잡성을 낮출 수 있는 것은 아니다. 단축된 코드 군의 코드들은 펑처링된 코드 군의 코드들보다 큰 차수의 CN들을 갖는다는 것을 유의해야 하고, 이것은 계산 복잡성 비교에서 고려되어야 한다. 계산 복잡성의 경우, (반복 당) 차수 dc를 갖는 CN이 스케일링을 위해 두 가지 추가 연산 즉, 최소값을 찾기 위한 3(dc-2)번의 비교 연산 및 부호를 계산하기 위한 2dc -1번의 XOR 연산을 필요로 하는 스케일링된 최소-합(Min-Sum) 디코더의 사용을 가정한다. 또한, 차수 dv를 갖는 VN은 반복 당 2dv-1번의 추가 연산이 필요하다. 또한, 한 번의 추가 연산 한 번의 비교 연산, 또는 8번의 XOR 연산에 해당한다고 가정하면, 단축된/펑처링된 복합성 비는 펑처링된 코드 군의 VN을 디코딩하는 단계마다의 XOR 연산의 횟수로 나뉜 단축된 코드 군의 VN을 디코딩하는 단계마다의 XOR 연산의 횟수로서 정의된다. 또한, 비교는 동일한 SNR 포인트 또는 동일한 FER 성능에서 이루어질 수 있다. 복잡성 비는 표 1에 요약된다.
본 개시의 실시 예들은 SC-LDPC 코드들의 윈도우 디코딩에 대한 조기 중지 규칙을 제공한다. 조기 중지 규칙은 XOR 연산들만을 수행하는 부분 신드롬 검사를 기반으로 한다. 또한, 본 개시의 실시 예들은 발산의 끝에서 뒤로 정보를 밀어낼 수 있는 지그재그 윈도우 디코더를 제안한다. 제안된 조기 중지 규칙과 함께 제안된 지그재그 윈도우 디코더는 전체 블록 디코더와 유사한 FER 성능을 가지며, VN 당 평균 반복 횟수를 FER=1e-2에서 전체 블록 디코더에 대한 55회에서 30회로 감소시킨다.
펑처링 또는 단축을 통해 상이한 레이트를 지원하는 코드 군들의 두 가지 예를 비교하였다. 결과들은 단축된 코드 군이 펑처링된 코드 군보다 잘 수행되고, 특히 높은 레이트 코드들의 경우 더 낮은 계산 복잡성을 가짐을 보여준다.
도 28은 본 개시에 따른 단축을 기반으로 하는 예시적인 SC-LDPC 코드 군들을 도시한다. 도 28에 도시된 SC-LDPC 코드 군들 2800의 실시 예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
도 28은 군에서 가장 높은 코드 레이트를 갖는 코드에 대한 패리티 검사 행렬의 세 가지의 프로토그래프 섹션을 도시하고, 여기서 ZZ는 모든 원소가 0인 ZxZ행렬을 나타내고, 값 A(i,j)는 (리프팅 팩터 Z에 따라) 아래의 행렬들의 i번째 행과 j번째 열에서 취한다.
Z=112인 경우, 리프팅 행렬의 일 예는 아래의 표와 같다.
Figure pct00001
Z=42인 경우, 리프팅 행렬의 일 예는 아래의 표와 같다.
Figure pct00002
Z=27인 경우, 리프팅 행렬의 일 예는 아래의 표와 같다.
Figure pct00003
Z=24인 경우, 리프팅 행렬의 일 예는 아래의 표와 같다.
Figure pct00004
도 29는 본 개시에 따른 수신 노드의 동작 프로세스를 도시한다. 흐름도는 순차적인 일련의 단계들을 도시하지만, 명시적으로 언급하지 않는 한, 수행의 구체적인 순서, 중복 방식 또는 동시적이 아닌 순차적인 단계들 또는 그의 부분들의 수행, 또는 개입 또는 중간 단계들의 발생 없이 독점적으로 도시되는 단계들의 수행과 관련하여 해당 순서로부터 어떠한 추론도 이끌어내어서는 안된다. 도시된 예에 도시된 프로세스는 예를 들어 기지국 또는 단말기와 같은 수신 노드에서 구현된다.
도 29를 참조하면, 단계 2901에서, 수신 노드는 송신 노드로부터 SC-LDPC 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신한다. 적어도 하나의 코드워드는 SC-LDPC 코드를 사용하여 송신 노드에 의해 생성된다. 적어도 하나의 코드워드는 헤더 및 페이로드를 포함하는 패킷을 포함하고, 헤더는 하나 이상의 SC-LDPC 코드의 프로토그래프 섹션들을 분할하기 위한 디바이더 프로토그래프 섹션으로서 구성된다.
그 후, 단계 2903에서, 수신 노드는 슬라이딩 윈도우를 사용하여 적어도 하나의 코드워드를 디코딩한다. 여기서, 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동한다. 슬라이딩 윈도우는 현재의 슬라이딩 윈도우에서 하나 이상의 CN의 신드롬을 기반으로 하여 역방향으로 이동한다. 특히, 수신 노드는 중지 규칙이 충족될 때까지 반복적으로 디코딩 계산들을 수행한다. 중지 규칙은 현재의 슬라이딩 윈도우에서 하나 이상의 CN의 신드롬의 함수로서 정의된다.
SC-LDPC 코딩 방식은 HARQ를 지원한다. 이 경우, 수신 노드는 디코더가 프로토그래프 섹션들 내의 정보 비트들을 복구할 수 있는 한 SC-LDPC 코드의 프로토그래프 섹션들을 디코딩하고, 관련 패킷의 재전송을 요청하고, 디코더 실패에 응답하여 재전송된 관련 패킷을 기다리는 동안 수신된 정보를 계속 버퍼링한다. 다른 실시 예에서, 수신 노드는 적어도 실패한 패킷, 모든 패킷, 또는 실패의 시작부터의 섹션들을 버퍼링하고, 디코더 실패에 응답하여 다음 패킷의 헤더를 디코딩하기 시작한다, 재전송은 실패한 패킷과 관련된 모든 비트의 재전송, 패킷과 관련된 펑처링된 비트의 일부 또는 전부의 전송을 포함하는 증분 중복 재전송, 실패한 프로토그래프 섹션 및 실패한 패킷의 끝까지의 모든 다음 섹션들과 관련 모든 비트 또는 증분 중복의 재전송, 및 실패한 프로토그래프 섹션과만 관련되거나 실패한 프로토그래프 섹션 이후의 몇 개의 섹션들과 관련된 모든 비트 또는 증분 중복의 재전송 중 하나이다. 또한, 수신 노드는 단축 동작에 의해 SC-LDPC 코드의 레이트를 감소시킬 수 있다.
특허청 및 본 출원에 공표된 모든 특허의 독자들이 첨부된 청구 범위들을 해석하는 것을 돕기 위해, 출원인들은 "~를 위한 수단" 또는 "~를 위한 단계"라는 단어들이 특정 청구 범위에 명시적으로 사용되지 않는 한, 첨부된 청구 범위 또는 청구 범위 요소들의 어느 것도 35U.S.C.§112(f)를 적용하는 것을 의도하지 않는다는 점을 유의하기를 바란다. 청구 범위 내에서 "메커니즘", "모듈", "장치", "유닛", "구성 요소", "요소", "부재", "장치", "기계", "시스템", "프로세서", 또는 "제어기"를 제한 없이 포함하여 모든 다른 용어의 사용은 당업자들에게 알려진 구조들을 언급하는 것으로 출원인들에 의해 이해되며, 35U.S.C.§112(f)를 적용하기 위해 의도된 것은 아니다.
본 개시는 예시적인 실시 예로 설명되었지만, 다양한 변경 예 및 수정 예가 당업자에게 제안될 수 있다. 본 개시는 첨부된 청구 범위의 범위 내에 속하는 이러한 변경 예 및 수정 예들을 포함하는 것으로 의도된다.

Claims (15)

  1. 통신 시스템의 장치로서, 상기 장치는
    송신 노드로부터 공간적으로 결합된 저밀도 패리티 검사(spatially coupled low density parity check, SC-LDPC) 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신하도록 구성된 수신기; 및
    슬라이딩 윈도우를 사용하여 상기 적어도 하나의 코드워드를 디코딩하도록 구성된 디코더를 포함하고,
    상기 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동하는 장치.
  2. 제1 항에 있어서, 상기 슬라이딩 윈도우는 현재의 슬라이딩 윈도우 내의 하나 이상의 검사 노드(check node, CN)의 신드롬을 기반으로 하여 역방향으로 이동하는 장치.
  3. 제1 항에 있어서, 상기 디코더는 중지 규칙이 충족될 때까지 반복적으로 디코딩 계산들을 수행하도록 더 구성되고,
    상기 중지 규칙은 현재의 슬라이딩 윈도우 내의 하나 이상의 검사 노드(check node, CN)의 신드롬의 함수로서 정의되는 장치.
  4. 제3 항에 있어서, 상기 디코더는
    상기 하나 이상의 CN에 대한 부분 신드롬을 검사하고,
    신드롬 검사를 통과하거나 최대 반복 횟수에 도달하는 경우에는 각각의 프로토그래프 섹션들 내의 변수 노드(variable node, VN)들에 대한 결정을 출력하고,
    상기 슬라이딩 윈도우의 위치를 업데이트함으로써 상기 중지 규칙이 충족되는 지 여부를 결정하도록 더 구성되는 장치.
  5. 제1 항에 있어서, 상기 순방향은 상기 슬라이딩 윈도우가 적어도 하나의 프로토그래프 섹션에 의해 오른쪽으로 진행하는 방향이고,
    상기 역방향은 상기 슬라이딩 윈도우가 상기 적어도 하나의 프로토그래프 섹션에 의해 왼쪽으로 진행하는 방향인 장치.
  6. 제1 항에 있어서, 상기 적어도 하나의 코드워드는 헤더 및 페이로드를 포함하는 패킷을 포함하고,
    상기 헤더는 하나 이상의 SC-LDPC 코드의 프로토그래프 섹션들을 분할하기 위해 디바이더 프로토그래프 섹션으로서 구성되는 장치.
  7. 제6 항에 있어서,
    상기 헤더가 낮은 변조 차수, 펑처링 없음, 반복, 및 단축 중 적어도 하나를 사용하여 보호되거나
    상기 헤더 정보 비트들이 하나 이상의 프로토그래프 섹션을 점유하는 것 중 적어도 하나인 장치.
  8. 제6 항에 있어서, 상기 헤더가 내부 코드를 사용하여 먼저 인코딩된 후, 상기 내부 코드의 정보 및 패리티 비트들이 상기 SC-LDPC 코드를 사용하여 인코딩되고,
    상기 헤더는
    복수의 프로토그래프 섹션을 점유하도록 상기 헤더를 구성하는 단계;
    이후의 섹션들이 반복 및 패리티 비트들을 전달하는 동안, 처음 몇 개의 섹션에 정보 비트들을 배치하는 단계;
    상기 헤더를 디코딩하기 위해 내부 코드를 사용한 후, 디바이더 프로토그래프 섹션으로서 및 데이터를 디코딩하기 위해 디코딩된 헤더를 사용하는 단계 중 적어도 하나에 의해 헤더 다음의 데이터와 무관하게 디코딩 가능하도록 구성되는 장치.
  9. 제6 항에 있어서, 여러 패킷이 하나의 SC-LDPC 코드워드를 사용하여 하나로 인코딩되고,
    연속 패킷이 상기 패킷 다음에 온다는 것; 및
    연속 패킷이 상기 패킷 다음에 오지 않는 것 중 하나를 표시하기 위해 상기 헤더의 필드를 사용하여 시그널링되는 장치.
  10. 제6 항에 있어서, 상기 SC-LDPC 코딩 방식은 하이브리드 자동 반복 요청(hybrid automatic repeat request, HARQ)을 지원하고,
    디코더가 프로토그래프 섹션들 내의 정보 비트들을 복구할 수 있는 한 상기 디코더는 SC-LDPC 코드의 프로토그래프 섹션들을 디코딩하도록 더 구성되고,
    디코더 실패에 응답하여, 상기 디코더는
    관련 패킷의 재전송을 요청하고, 재전송된 관련 패킷을 기다리는 동안 수신된 정보를 계속 버퍼링하거나;
    적어도 실패한 패킷, 모든 패킷, 또는 실패의 시작부터의 섹션들을 버퍼링하고, 다음 패킷의 헤더를 디코딩하기 시작하도록 더 구성되는 장치.
  11. 제10 항에 있어서, 상기 디코더는 단축 동작에 의해 상기 SC-LDPC 코드의 레이트를 감소시키도록 더 구성되는 장치.
  12. 제10 항에 있어서, 상기 재전송은
    실패한 패킷과 관련된 모든 비트의 재전송;
    상기 패킷과 관련된 펑처링된 비트의 일부 또는 전부의 전송을 포함하는 증분 중복 재전송;
    실패한 프로토그래프 섹션 및 상기 실패한 패킷의 끝까지의 모든 다음 섹션들과 관련된 모든 비트 또는 증분 중복의 재전송; 및
    상기 실패한 프로토그래프 섹션과만 관련되거나 상기 실패한 프로토그래프 섹션 이후의 몇 개의 섹션과 관련된 모든 비트 또는 증분 중복의 재전송 중 하나인 장치.
  13. 통신 시스템에서 수신 노드를 동작시키는 방법으로서, 상기 방법은
    송신 노드로부터 공간적으로 결합된 저밀도 패리티 검사(spatially coupled low density parity check, SC-LDPC) 코드를 기반으로 하여 적어도 하나의 코드워드를 포함하는 신호들을 수신하는 단계; 및
    슬라이딩 윈도우를 사용하여 상기 적어도 하나의 코드워드를 디코딩하는 단계를 포함하고,
    상기 슬라이딩 윈도우는 선택적으로 순방향 또는 역방향으로 이동하는 방법.
  14. 제13 항에 있어서, 상기 슬라이딩 윈도우는 현재의 슬라이딩 윈도우 내의 하나 이상의 검사 노드(check node, CN)의 신드롬을 기반으로 하여 역방향으로 이동하는 방법.
  15. 제13 항에 있어서, 상기 디코더는 중지 규칙이 충족될 때까지 반복적으로 디코딩 계산들을 수행하도록 더 구성되고,
    상기 중지 규칙은 현재의 슬라이딩 윈도우 내의 하나 이상의 검사 노드(check node, CN)의 신드롬의 함수로서 정의되는 방법.
KR1020177018681A 2014-12-05 2015-12-04 무선 통신 시스템을 위한 sc-ldpc 코드들 KR102539474B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201462087912P 2014-12-05 2014-12-05
US62/087,912 2014-12-05
US201562109404P 2015-01-29 2015-01-29
US62/109,404 2015-01-29
US14/823,744 2015-08-11
US14/823,744 US9712187B2 (en) 2014-12-05 2015-08-11 SC-LDPC codes for wireless communication systems: framework and zigzag-window decoder
PCT/KR2015/013215 WO2016089157A1 (en) 2014-12-05 2015-12-04 Sc-ldpc codes for wireless communication systems

Publications (2)

Publication Number Publication Date
KR20170092672A true KR20170092672A (ko) 2017-08-11
KR102539474B1 KR102539474B1 (ko) 2023-06-02

Family

ID=56092022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177018681A KR102539474B1 (ko) 2014-12-05 2015-12-04 무선 통신 시스템을 위한 sc-ldpc 코드들

Country Status (4)

Country Link
US (1) US9712187B2 (ko)
EP (1) EP3228034B1 (ko)
KR (1) KR102539474B1 (ko)
WO (1) WO2016089157A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200111610A (ko) * 2019-03-19 2020-09-29 웨스턴 디지털 테크놀로지스, 인코포레이티드 Ldpc 코드 길이 조정

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10367530B2 (en) 2016-01-14 2019-07-30 Qualcomm Incorporated Unified code block segmentation providing a cyclic redundancy check for low density parity check code codewords
US20170279464A1 (en) * 2016-03-22 2017-09-28 Lg Electronics Inc. Method of ldpc code encoding for reducing signal overhead and apparatus therefor
EP3264610A1 (en) * 2016-06-27 2018-01-03 Alcatel Lucent Forward error correction with variable coding rate
CN110249565B (zh) 2016-11-23 2022-04-15 弗劳恩霍夫应用研究促进协会 接收器、发送器、通信网络系统及改善通信网络系统中重发过程的方法
US10735138B2 (en) 2017-05-02 2020-08-04 Futurewei Technologies, Inc. Multi-label offset lifting method
KR101835341B1 (ko) * 2017-06-09 2018-03-07 엘지전자 주식회사 Sc-ldpc 코드의 쌍방향 슬라이딩 윈도우 복호 방법 및 이를 위한 장치
WO2018225885A1 (ko) * 2017-06-09 2018-12-13 엘지전자 주식회사 Sc-ldpc 코드 부호화 방법 및 이를 위한 장치
US10877842B2 (en) * 2017-09-08 2020-12-29 Intel Corporation Detecting silent data corruption for mass storage devices
CN109787641B (zh) * 2017-11-15 2024-02-06 中兴通讯股份有限公司 staircase码的解码方法、装置及存储介质
KR102475279B1 (ko) 2017-12-18 2022-12-07 삼성전자주식회사 컨볼루션 타입의 저밀도 패리티 체크 코드를 이용하여 인코딩 및 디코딩을 수행하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP7038910B2 (ja) * 2019-06-13 2022-03-18 三菱電機株式会社 復号装置、制御回路および記憶媒体
US11159175B2 (en) * 2019-06-21 2021-10-26 Intel Corporation Non-uniform iteration-dependent min-sum scaling factors for improved performance of spatially-coupled LDPC codes
US20210152282A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Scheduling method for ldpc decoding
CN114731166A (zh) * 2019-12-13 2022-07-08 华为技术有限公司 空间耦合fec编码方法和使用gel码的分量码的设备
CN112234998A (zh) * 2020-08-17 2021-01-15 西安电子科技大学 一种使用滑动窗口译码空间耦合ldpc码的方法及装置
CN112165333A (zh) * 2020-08-17 2021-01-01 西安电子科技大学 空间耦合ldpc码的译码器错误传播的消除方法及装置
CN112737598B (zh) * 2020-12-01 2024-04-09 西安电子科技大学 自适应掺杂方法、系统、存储介质、计算机设备及应用
US20240031055A1 (en) * 2022-07-19 2024-01-25 Qualcomm Incorporated Mutual information based channel decoder power savings

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012220334B3 (de) * 2012-11-08 2013-11-28 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zum Wiederherstellen verlorengegangener und/oder beschädigter Daten

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7254769B2 (en) * 2002-12-24 2007-08-07 Electronics And Telecommunications Research Insitute Encoding/decoding apparatus using low density parity check code
EP2282433A1 (en) 2009-08-04 2011-02-09 Deutsches Zentrum für Luft- und Raumfahrt e.V. Method for recovery of lost and/ or corrupted data
US9912786B2 (en) * 2012-03-13 2018-03-06 Panasonic Corporation Wireless communication device and method to detect header information errors
JP2013198017A (ja) * 2012-03-21 2013-09-30 Toshiba Corp 復号装置及び通信装置
GB2506159A (en) 2012-09-24 2014-03-26 Ibm 2 Stage RLL coding, standard coding with global/interleave constraints, then sliding window substitution with sequences having different constraints

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012220334B3 (de) * 2012-11-08 2013-11-28 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zum Wiederherstellen verlorengegangener und/oder beschädigter Daten

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Spatially coupled sparse codes on graphs: theory and practice (IEEE communications magazine, July 2014)* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200111610A (ko) * 2019-03-19 2020-09-29 웨스턴 디지털 테크놀로지스, 인코포레이티드 Ldpc 코드 길이 조정

Also Published As

Publication number Publication date
US9712187B2 (en) 2017-07-18
EP3228034A4 (en) 2018-01-03
EP3228034A1 (en) 2017-10-11
US20160164538A1 (en) 2016-06-09
EP3228034B1 (en) 2023-02-01
KR102539474B1 (ko) 2023-06-02
WO2016089157A1 (en) 2016-06-09

Similar Documents

Publication Publication Date Title
KR102539474B1 (ko) 무선 통신 시스템을 위한 sc-ldpc 코드들
US8560911B2 (en) System and method for structured LDPC code family
US8495450B2 (en) System and method for structured LDPC code family with fixed code length and no puncturing
US9362956B2 (en) Method and system for encoding and decoding data using concatenated polar codes
US11451243B2 (en) Method and apparatus for decoding data in communication or broadcasting system
US8627166B2 (en) LDPC code family for millimeter-wave band communications in a wireless network
WO2018059588A1 (zh) 准循环ldpc编译码方法、装置及ldpc编译码器
US20230275696A1 (en) Method and apparatus for encoding/decoding channel in communication or broadcasting system
US9264073B2 (en) Freezing-based LDPC decoder and method
JP6936854B2 (ja) 行直交(row−orthogonal)構造を用いたLDPC符号の伝送方法及びそのための装置
JP2019522435A (ja) Ldpc符号の符号化および復号化のための方法およびシステム
JP2007006494A (ja) 構造的低密度パリティ検査符号を用いる通信システムにおけるデータ送信/データ受信のための装置及び方法
US11082061B2 (en) High-rate long LDPC codes
KR101998199B1 (ko) 다중 ldpc 코드에서 ldpc 베이스 코드를 선택하는 방법 및 이를 위한 장치
KR102080069B1 (ko) 비이진 ldpc 부호를 사용하는 수신기에서 데이터를 복호하는 방법 및 장치
KR20180107692A (ko) 통신 또는 방송 시스템에서 harq 적용시 전송 방법 및 장치
KR102509968B1 (ko) 통신 또는 방송 시스템에서 harq 적용시 전송 방법 및 장치
AU2018288953A1 (en) Method and apparatus for channel encoding and decoding in communication or broadcasting system
US20230253984A1 (en) Method and apparatus for data decoding in communication or broadcasting system
JP7030932B2 (ja) Ldpc符号の符号化および復号化のための方法およびシステム
KR20180107701A (ko) 통신 또는 방송 시스템에서 harq 적용시 전송 방법 및 장치

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