KR101657912B1 - 비이진 저밀도 패리티 검사 코드의 복호화 방법 - Google Patents

비이진 저밀도 패리티 검사 코드의 복호화 방법 Download PDF

Info

Publication number
KR101657912B1
KR101657912B1 KR1020150191341A KR20150191341A KR101657912B1 KR 101657912 B1 KR101657912 B1 KR 101657912B1 KR 1020150191341 A KR1020150191341 A KR 1020150191341A KR 20150191341 A KR20150191341 A KR 20150191341A KR 101657912 B1 KR101657912 B1 KR 101657912B1
Authority
KR
South Korea
Prior art keywords
check
llr
intersection
variable nodes
nodes
Prior art date
Application number
KR1020150191341A
Other languages
English (en)
Inventor
최인준
김지훈
Original Assignee
충남대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 충남대학교산학협력단 filed Critical 충남대학교산학협력단
Application granted granted Critical
Publication of KR101657912B1 publication Critical patent/KR101657912B1/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
    • H03M13/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 복호화 방법이 개시된다. 개시된 방법은, (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 -, (ii) 상기 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산하는 단계 - 상기 N개의 변수 노드와 상기 M개의 체크 노드는 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 연결 관계를 가짐 -, (iii) 상기 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 상기 N개의 변수 노드의 LLR 벡터들을 갱신하는 단계, (iv) 복호화 종료 조건이 만족되는지의 여부를 검사하는 단계, 및 (v) 상기 단계 (iv)에서 상기 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 상기 단계 (ii) 내지 단계 (iv)를 반복하는 단계를 포함할 수 있다.

Description

비이진 저밀도 패리티 검사 코드의 복호화 방법{Method of Decoding Non-Binary Low Density Parity Check Codes}
본 발명은 저밀도 패리티 검사 코드에 관한 것으로, 더 구체적으로는 비이진 저밀도 패리티 검사 코드를 복호화하는 기술에 관한 것이다.
저밀도 패리티 검사 코드(Low Density Parity Check Codes: LDPC Codes)는 1962년 처음으로 제안된 에러 정정 코드(error correction codes)로서, 선형 블록 코드(Linear Block Code)에 속하는 전방 에러 정정 코드(forward error correction codes)의 일종이다. 이 코드가 제안될 당시는 진공관이 트랜지스터로 대체되기 시작한 때였고, 그 당시만 해도 이 코드를 검증하기 위한 시뮬레이션에 필요한 엄청난 계산량과 그 구현상의 어려움 때문에 이 코드가 실질적으로 상용되지 못하였었다. 그러나 그 후 30년 이상의 정보 통신 기술의 발전과 최근의 고속능 프로세서의 등장 및 멀티미디어 이동 통신 분야에서의 고품질 서비스 제공의 필요성에 힘입에 최근에 이 코드에 대한 활용도가 재인식되면서 이 코드의 특성 및 그 부호화/복호화 방법에 대한 연구가 활기를 띠고 있다. 이 코드는 터보 코드(Turbo Codes)를 대체 할 4세대 이동 통신 시스템에서의 채널 코딩 방법으로 제안되고 있기도 하다.
LDPC 코드는 터보 코드와 같이 샤논의 채널 용량(Shannon Limit)에 근접하는 우수한 성능을 보이는 것으로 알려져 있다. LDPC 코드는 터보 코드에 비하여 성능이 우수하고 그 복호화기의 구현이 크게 복잡하지 않으며 병렬 연산이 가능하여 고속 처리가 가능할 뿐만 아니라 터보 코드와 같이 확률적 반복 복호 기법을 적용할 수 있어서, 저 오류율과 고속 데이터 처리가 요구되는 이동 통신 시스템에 적합한 것으로 알려져 있다. 이러한 LDPC 코드는 패리티 검사 행렬(Parity Check Matrix)에 해당하는 H 행렬의 구성 성분이 이진 원소(binary element)인 이진 LDPC 코드(Binary LDPC Codes)와 H 행렬의 구성 성분이 이진 원소가 아닌 비이진 LDPC 코드(Non-Binary LDPC Codes)로 나눌 수 있다. 이진 LDPC 코드는 짧은 길이 또는 중간 길이의 코드 워드(codeword)의 경우 비트 오류율(Bit Error Rate)의 면에서 약점을 보이고 있는 반면, 비이진 LDPC 코드는 짧은 길이의 코드 워드의 경우에도 그 성능이 뛰어나고 낮은 오류율에서도 오류 마루(error floor) 현상을 보이지 않는 등 이진 LDPC 코드 보다 대체로 월등한 성능을 보인다.
그러나, 비이진 LDPC 코드는 그 복호 과정에서의 갈로아 필드(Galois Field: GF) 연산이 복잡하고 GF의 차수 q가 증가함에 따라 그 복잡도가 증가한다는 단점이 있다. 이에 따라, 최근에는 LDPC 복호화기의 성능을 크게 떨어뜨리지 않으면서 복호 과정을 단순화시켜 복호 과정에서의 연산량을 줄이는 방법에 대한 연구가 활발히 진행되고 있는 추세이다.
본 발명의 과제는 비이진 LDPC 복호화기의 성능 저하를 최소화시키면서도 그 구성을 단순화시켜 고속 복호화를 가능하게 하는 비이진 LDPC 코드의 복호화 방법을 제공하는 것이다.
본 발명의 다른 과제는 비이진 LDPC 복호화기의 체크 노드(check nodes)에서의 연산량과 연산 지연을 줄일 수 있는 비이진 LDPC 코드의 복호화 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
발명의 실시예들에 따르면, 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 복호화 방법이 제공된다. 본 방법은, (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 - , (ii) 상기 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산하는 단계 - 상기 N개의 변수 노드와 상기 M개의 체크 노드는 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 연결 관계를 가짐 -, (iii) 상기 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 상기 N개의 변수 노드의 LLR 벡터들을 갱신하는 단계, (iv) 복호화 종료 조건이 만족되는지의 여부를 검사하는 단계, 및 (v) 상기 단계 (iv)에서 상기 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 상기 단계 (ii) 내지 단계 (iv)를 반복하는 단계를 포함할 수 있다.
일 실시예에서, 상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함할 수 있다.
일 실시예에서, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 버블 체크 알고리즘에 의한 상기 가장 최소의 nm개의 교차 합의 선택은, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정한 후, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 과정과 상기 후보군에 적어도 하나의 교차 합을 추가하는 과정을 반복함으로써 이루어질 수 있다.
일 실시예에서, 상기 비이진 저밀도 패리티 검사 코드는 차수 q의 갈로아 필드 GF(q)에 대해 정의된 코드이며, 상기 nm은 q와 같거나 작을 수 있다.
일 실시예에서, 상기 단계 (iv)는, 상기 갱신된 N개의 변수 노드의 값들과 상기 패리티 검사 매트릭스(H)의 전치 행렬을 이용하여 신드롬(syndrome)을 계산하는 단계, 및 상기 계산된 신드롬이 선정된 값 미만이거나 상기 단계 (ii) 내지 단계 (iv)가 선정된 횟수만큼 반복되었는지를 판단하는 단계를 포함할 수 있다.
일 실시예에서, 상기 나머지 변수 노드들의 개수는 2 보다 크며, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계는, 포워드 백워드 알고리즘(Forward Backward Algorithm)을 이용하여 수행될 수 있다.
일 실시예에서, 상기 교차 합들은 가상 매트릭스 형태로 배열되며, 상기 후보군은 상기 가상 매트릭스의 선정된 원소 위치들에 있는 교차 합들을 포함할 수 있다.
일 실시예에서, 상기 후보군에 추가되는 적어도 하나의 교차 합은 2개의 교차 합일 수 있다.
본 발명의 실시예들에 따르면, 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 다른 복호화 방법이 또한 제공된다. 이 방법은, (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 - , 및 (ii) 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는, 상기 N개의 변수 노드와의 연결 관계를 가지는 M개의 체크 노드와 상기 N개의 변수 노드와 간에 반복적인 메시지 교환에 의해 상기 수신된 코드워드를 복호화하는 단계를 포함할 수 있다.
일 실시예에서, 상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함할 수 있다.
일 실시예에서, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 버블 체크 알고리즘에 의한 상기 가장 최소의 nm개의 교차 합의 선택은, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정한 후, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 과정과 상기 후보군에 적어도 하나의 교차 합을 추가하는 과정을 반복함으로써 이루어질 수 있다.
일 실시예에서, 상기 단계 (ii)는, (a) 상기 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산하는 단계, (b) 상기 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 상기 N개의 변수 노드의 LLR 벡터들을 갱신하는 단계, (c) 복호화 종료 조건이 만족되는지의 여부를 검사하는 단계, 및 (d) 상기 단계 (c)에서 상기 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 상기 단계 (a) 내지 상기 단계 (c)를 반복하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 또 다른 복호화 방법이 제공된다. 본 방법은, (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 -, 및 (ii) 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는, 상기 N개의 변수 노드와의 연결 관계를 가지는 M개의 체크 노드와 상기 N개의 변수 노드와 간에 반복적인 메시지 교환에 의해 상기 수신된 N개의 코드워드를 복호화하는 단계를 포함할 수 있다.
일 실시예에서, 상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함할 수 있다.
일 실시예에서, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들을 원소들로 하는 가상 매트릭스를 형성하는 단계, 상기 가상 매트릭스로부터 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하는 단계 및 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 가상 매트릭스로부터 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하는 단계는, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 후보군을 결정하는 단계는, 상기 선정된 개수의 후보 교차 합의 하나씩이 상기 가상 매트릭스에서 초기화 될 때마다 적어도 하나의 최소 교차 합을 선택하는 단계를 포함할 수 있다.
일 실시예에서, 상기 후보군을 결정하는 단계는, 상기 적어도 하나의 최소 교차 합을 선택하는 단계 이후 상기 선택된 최소 교차 합을 상기 후보군에서 제외시키는 단계 및 상기 가상 매트릭스 상에서 상기 선택된 최소 교차 합에 인접한 후보 교차 합을 상기 후보군에 추가하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 비이진 저밀도 패리티 검사 코드의 복호화 방법이 또한 제공된다. 본 방법은, 상기 비이진 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 연결 관계를 가지는 N개의 변수 노드와 M개의 체크 노드 간에 반복적인 메시지 교환에 의해 길이가 N인 수신된 코드워드를 복호화하는 단계를 포함할 수 있다. 상기 복호화하는 단계는 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함할 수 있다. 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 이중 버블 체크 알고리즘(Double Bubble Check Algorithm)을 이용해 선택할 수 있다.
일 실시예에서, 상기 가장 최소의 nm개의 교차 합을 이중 버블 체크 알고리즘을 이용해 선택하는 단계는, 상기 교차 합들 중 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정하는 단계, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 단계, 및 상기 후보군에 적어도 하나의 교차 합을 추가하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면, 비이진 LDPC 복호화기의 성능 저하를 최소화시키면서도 그 체크 노드(check nodes)에서의 연산량과 연산 지연을 줄일 수 있게 되어 비이진 LDPC 코드의 고속 복호화가 가능하게 되는 기술적 효과가 있다.
도 1a는 본 발명의 일 실시예에 따른 비이진 LDPC 코드를 위한 패리티 검사 행렬(H)을 도시한 도면이다.
도 1b는 도 1a에 도시된 패리티 검사 행렬(H)을 시각적으로 나타낸 태너 그래프(Tanner Graph)의 일 실시예를 도시한 도면이다.
도 1c는 도 1b에 도시된 태너 그래프에서 노드들 간에 교환되는 메시지의 구조의 일 실시예를 도시한 도면이다.
도 2a는 도 1b의 태너 그래프의 서브 그래프로서 각 변수 노드에서 메시지가 전달되는 과정의 일 실시예를 예시한 도면이다.
도 2c는 도 1b의 태너 그래프의 서브 그래프로서 각 체크 노드에서 메시지가 전달되는 과정의 일 실시예를 예시한 도면이다.
도 3은 전/후방 알고리즘에 따라 체크 노드 연산이 이루어지는 과정의 일 실시예를 설명하기 위한 도면이다.
도 4a 내지 도 4d는 본 발명의 일 실시예에 따른 이중 버블 체크(Double bubble check) 알고리즘을 설명하기 위한 도면이다.
도 5는 본 발명의 다양한 실시예에 따라 비이진 LDPC 코드를 복호화하는 방법을 설명하기 위한 흐름도를 도시한 도면이다.
도 6은 기존의 버블 체크 알고리즘을 비이진 LDPC 코드의 복호화에 적용하여 시뮬레이션함으로써 얻은 오류율 성능과 본 발명의 일 실시예에 따른 이중 버블 체크 알고리즘을 동 부호화에 적용하여 시뮬레이션함으로써 얻은 오류율 성능을 나타낸 그래프이다.
본 발명의 이점들과 특징들 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해 질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 본 실시예들은 단지 본 발명의 개시가 완전하도록 하며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려 주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로 본 발명을 한정하려는 의도에서 사용된 것이 아니다. 예를 들어, 단수로 표현된 구성 요소는 문맥상 명백하게 단수만을 의미하지 않는다면 복수의 구성 요소를 포함하는 개념으로 이해되어야 한다. 또한, 본 발명의 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐이고, 이러한 용어의 사용에 의해 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성이 배제되는 것은 아니다. 또한, 본 명세서에 기재된 실시예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하는 기능적 부분을 의미할 수 있다.
덧붙여, 다르게 정의되지 않는 한 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 발명의 명세서에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
도 1a는 본 발명의 일 실시예에 따른 비이진 LDPC 코드를 위한 패리티 검사 행렬(H)을 도시한 도면이다. 도 1b는 도 1a에 도시된 패리티 검사 행렬(H)을 시각적으로 나타낸 태너 그래프(Tanner Graph)의 일 실시예를 도시한 도면이다. 도 1c는 도 1b에 도시된 태너 그래프에서 노드들 간에 교환되는 메시지의 구조의 일 실시예를 도시한 도면이다. 이하, 도 1a 내지 도 1c를 참조하면서 비이진 LDPC 코드를 복호하는 과정에 대해 설명하기로 한다.
유한체는 유한개의 원소를 가지는 체를 말하며, 보통 q개의 원소를 가지는 체를 GF(q)라고 정의된다(여기서, GF는 갈로아 필드(Galois field)를 나타냄). 예를 들어, 0과 1을 원소로 갖는 이진 체는 GF(2)로 정의된다. LDPC 코드는 패리티 검사 행렬(H)의 원소가 GF(2) 상의 원소로 구성된 경우 이진 LDPC 코드라 불리며, q가 2보다 큰 GF(q) 상의 원소로 구성된 경우 비이진 LDPC 코드라 불린다. 비이진 LDPC 코드를 위한 패리티 검사 행렬(H)의 일 실시예를 도 1a에 도시하였다. LDPC 코드는 대부분 0으로 구성되어 1의 개수가 매우 적은 M x N 차원의 패리티 검사 행렬(H)에 의해 정의되며, 이 때 메시지 길이는 N - M이고 패리티 비트의 수는 M개이고 전체 코드 워드의 길이는 N이 된다.
LDPC 코드(LDPC 코드의 복호 과정)는 행렬(H)을 시작적으로 나타낸 태너 그래프(Tanner Graph)에 의해 표현될 수 있다. 태너 그래프에서 행렬(H)의 행들은 M개의 체크 노드(Check Node: CN)로 정의되고 열들은 N개의 변수 노드(Variable Node: VN)로 정의된다. 도 1a에 도시된 패리티 검사 행렬(H)에 대응하는 태너 그래프(Tanner Graph)의 일 실시예를 도 1b에 도시하였다.
유한체 GF(q)에서 정의되는 비이진 LDPC 코드의 변수 노드는
Figure 112016044352009-pat00001
비트의 심볼(symbol)로 구성되기 때문에, 비이진 LDPC 코드는 q개의 심볼 각각에 대한 사전 확률을 기반으로 복호된다. 도 1c는 도 1b에 도시된 태너 그래프에서 노드들 간에 교환되는 메시지의 구조를 보여준다. 비이진 LDCP 코드의 태너 그래프의 노드들 간에 교환되는 메시지는 q개의 원소 각각에 대한 확률인 q개의 LLR(Log Likelihood Ratio)을 포함하는 LLR 벡터(Log Likelihood Ratio Vector: LLRV)와 각각의 LLR과 매칭되는 원소를 나태내기 위한 GF 인덱스(GF index)로 구성된다. 일반적인 비이진 LDPC 복호 알고리즘의 경우 LLR 데이터가 저장된 메모리의 주소가 GF 인덱스이므로 이를 따로 저장할 필요가 없지만 확장형 최소합 알고리즘(Extended Min-Sum Algorithm: EMSA)과 같이 신뢰도가 높은 nm개의 LLR만을 사용하는 복호 알고리즘의 경우 nm개의 원소 각각에 대한 GF 인덱스도 함께 저장되어야 한다. 이하의 설명에서, 비이진 LDPC 코드의 채널 LLRV, 체크 노드에서 변수 노드로 전달하는 LLRV 및 변수 노드에서 체크 노드로 전달하는 LLRV를 각각
Figure 112016044352009-pat00002
,
Figure 112016044352009-pat00003
Figure 112016044352009-pat00004
로 정의하기로 한다
초기화 단계에서 태너 그래프의 변수 노드들이 채널로부터 받은 정보로부터 계산된 채널 LLRV(
Figure 112015129420222-pat00005
)에 의해 초기화되고, 태너 그래프의 체크 노드와 변수 노드에서 반복적으로 연산을 수행하고 각 노드에서 연산된 LLRV를 메시지로서 태너 그래프의 해당 에지들(edges)을 따라 반복적으로 교환하는 QSPA(q-ary Sum-Product Algorithm)라는 복호 알고리즘이 알려져 있다. 비이진 LDPC 코드에서 변수 노드들은 GF(q)의 원소들을 표현하기 때문에,
Figure 112015129420222-pat00006
는 GF(q)의 모든 원소
Figure 112015129420222-pat00007
{1...,q}각각에 대한 LLR들의 집합으로 구성된다. 채널로부터
Figure 112015129420222-pat00008
를 받았을 때 변수 노드의 심볼 v j
Figure 112015129420222-pat00009
일 확률을 P(v j =
Figure 112015129420222-pat00010
|
Figure 112015129420222-pat00011
) 라 하면, j번째 변수 노드의 k번째 심볼의 LLR
Figure 112015129420222-pat00012
[k] 는 아래 수학식 (1)과 같이 정의된다.
Figure 112015129420222-pat00013
(1)
여기서,
Figure 112015129420222-pat00014
는 확률 P(
Figure 112015129420222-pat00015
=
Figure 112015129420222-pat00016
|
Figure 112015129420222-pat00017
)가 가장 큰 심볼을 의미하며, 이 때 j번째 변수 노드의 채널 LLRV
Figure 112015129420222-pat00018
는 수학식 (2)와 같다.
Figure 112015129420222-pat00019
(2)
도 2a는 도 1b의 태너 그래프의 서브 그래프로서 각 변수 노드에서 메시지가 전달되는 과정의 일 실시예를 예시한 도면이다. 도 2b는 도 1b의 태너 그래프의 서브 그래프로서 각 체크 노드에서 메시지가 전달되는 과정의 일 실시예를 예시한 도면이다.
도시된 바와 같이,
Figure 112015129420222-pat00020
Figure 112015129420222-pat00021
는 통해 계산되며, 이에 따라 q개의 LLR을 포함하는 LLRV와 GF 인덱스들로 구성된 메시지가 태너 그래프를 따라 전달된다. 이하의 설명에서, 메시지 전달 과정에서 단순히 LLRV의 원소들의 순서를 바꿈으로써 수행되는 교환(Permutation)과 역 교환에 대한 설명은 생략한다. 변수 노드 V j 가 체크 노드
Figure 112015129420222-pat00022
에게 메시지를 전달하는 경우, 도 2a에서와 같이 변수 노드 V j 는 자신과 에지를 통해 연결된 노드들 중 체크 노드
Figure 112015129420222-pat00023
를 제외한 노드들의 LLRV와 채널 LLRV를 전달 받아 변수 노드 연산을 수행하여 체크 노드
Figure 112015129420222-pat00024
에게 메시지를 전달한다. 체크 노드 C i 에서 변수 노드
Figure 112015129420222-pat00025
로 메시지가 전달되는 과정이 도 2b에 예시되어 있는데, 이 과정도 변수 노드의 전달 과정과 유사하다. 각 노드에서의 연산과 메시지 전달 과정을 알고리즘으로 정리하면 다음과 같다. 먼저 이하의 알고리즘 설명에 사용되는 수학식들에서의 변수들을 다음과 같이 정의한다.
Figure 112015129420222-pat00026
: GF index
Figure 112015129420222-pat00027
:체크 노드
Figure 112015129420222-pat00028
의 컨피규레이션 세트(configuration set)로
Figure 112015129420222-pat00029
의 패리티 체크 식을 만족하기 위한 GF index들의 조합;
Figure 112015129420222-pat00030
을 만족하는
Figure 112015129420222-pat00031
의 집합
Figure 112015129420222-pat00032
:
Figure 112015129420222-pat00033
을 만족하는
Figure 112015129420222-pat00034
의 집합
Figure 112015129420222-pat00035
LLR,
Figure 112015129420222-pat00036
확장형 최소합 알고리즘(Extended Min-Sum Algorithm)
A1) 초기화 및 패리티 체크
초기화: 반복 횟수 k를 0으로 설정하고, 각 변수 노드를 채널 LLRV로 초기화한다(
Figure 112015129420222-pat00037
).
A2) 신드롬(Syndrome: S) 체크 및 반복 횟수 확인
신드롬 체크: 경판정(hard decision)된 코드 워드 Z의 신드롬(S)을 계산한다
Figure 112015129420222-pat00038
GF 곱셉). 만약 신드롬 S가 0이면 복호를 정지하고, 그렇지 않으면 반복 횟수 k를 확인한다.
반복횟수 확인: 반복횟수 k가 최대 반복 횟수라면 복호를 정지하고, 그렇지 않으면 A3로 간다.
A3) CN 연산
체크 노드 연산 수행:
Figure 112015129420222-pat00039
A4) VN 연산
변수 노드 연산 수행:
Figure 112015129420222-pat00040
사후 확률 계산 및 반복 횟수 증가:
Figure 112015129420222-pat00041
;
Figure 112015129420222-pat00042
A5) 잠정적 판정 및 반복 확인
잠정적 판정:
Figure 112015129420222-pat00043
, A2로 간다.
도 3은 d c 가 4인 경우 전/후방 알고리즘에 따라 체크 노드 연산이 이루어지는 과정의 일 실시예를 설명하기 위한 도면이다. 이하, 도 3을 참조하여 전/후방 알고리즘에 따라 체크 노드 연산이 이루어지는 과정에 대해 설명한다.
전/후방 알고리즘(Forward-Backward (FB) Algorithm)은 특정 연산을 전방 연산 (forward process)과 후방 연산(backward process)으로 분해하여 이를 반복적으로 수행하고 전/후방 연산의 결과를 다시 조합(merge)하는 구조로 수행된다. 높은 차수를 갖는 체크 노드의 연산을 직접 수행하면 연산의 복잡도가 매우 커질 뿐만 아니라 같은 연산을 여러 번 반복하기 때문에 연산 지연도 매우 크다. 따라서 d c 가 3보다 큰 체크 노드의 연산의 경우 전/후방 알고리즘을 통해 ECN(elementary check node) 단위로 분해하여 전/후방 연산을 수행하고 이를 다지 조합함으로써 체크 노드 연산을 보다 효율적으로 수행할 수 있다. ECN은 체크 노드 연산을 수행하는 기본 연산 블록으로
Figure 112015129420222-pat00044
을 따라 두 개의 메시지
Figure 112015129420222-pat00045
Figure 112015129420222-pat00046
를 입력 받아 하나의 메시지 V 를 출력한다. 전/후방 연산 과정에서 계산된 메시지 V는 다시 전/후방 연산 또는 조합 연산을 위한 ECN으로 입력된다. FB 알고리즘의 마지막 단계에서 수행되는 조합 연산의 결과는 해당 체크 노드의 최종 결과이며 이는 태너 그래프에 따라 연결된 변수 노드로 전달된다.
도 4는 본 발명의 일 실시예에 따른 이중 버블 체크(Double bubble check) 알고리즘을 설명하기 위한 도면이다.
본 발명에 따른 이중 버블 체크는 2차원 가상 행렬
Figure 112015129420222-pat00047
위에서
Figure 112015129420222-pat00048
개의 최소값을 찾는 알고리즘이다. 이때 가상 행렬
Figure 112015129420222-pat00049
이며
Figure 112015129420222-pat00050
Figure 112015129420222-pat00051
는 ECN의 입력이다. 이중 버블 체크에서 버블(bubble)이란 행렬
Figure 112015129420222-pat00052
의 원소 중 n b 개의 최소 후보 군을 의미하며 n b 의 길이는 적어도 6개로 한다. 버블은 행렬
Figure 112015129420222-pat00053
에서 고정된 방향으로 이동하며 첫 번째 행에서 행 방향으로 이동하는 버블을 적어도 2개, 첫 번째 열에서 열 방향으로 이동하는 버블을 적어도 2개, 두 번째 행에서 행 방향으로 이동하는 버블을 적어도 1개, 두 번째 열에서 열 방향으로 이동하는 버블을 적어도 1개를 배치한다. 도 4는 nm이 6일 때의 이중 버블 체크 알고리즘을 예시한다.
도 5는 본 발명의 다양한 실시예에 따라 비이진 LDPC 코드를 복호화하는 방법을 설명하기 위한 흐름도를 도시한 도면이다.
본 방법의 다양한 실시예들에 따른 비이진 LDPC 코드의 복호화 방법은, 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계(S510)로부터 시작된다. 여기서, LLR 벡터들의 각각은 nm개의 원소를 가지며, 비이진 저밀도 패리티 검사 코드는 차수 q의 갈로아 필드 GF(q)에 대해 정의된 코드이며, n m 은 q와 같거나 작을 수 있다. 일 실시예에서, 상기 LLR 벡터들은 상기 수학식 (2)로부터 계산될 수 있다.
단계(S520)에서는, 단계(S510)에서 결정된 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산한다. 여기서, N개의 변수 노드와 M개의 체크 노드는 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 태너 그래프 상에서의 연결 관계를 가진다. 이 단계에서는, M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산할 수 있다. 일 실시예에서, 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터의 계산은, 해당 체크 노드에 연결된 복수의 변수 노드 중 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 n m 개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 이렇게 선택된 n m 개의 교차 합을 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 것에 의해 이루어질 수 있다. 일 실시예에서, 이러한 절차는 포워드 백워드 알고리즘(Forward Backward Algorithm)을 이용하여 수행될 수 있다.
일 실시예에서, 버블 체크 알고리즘에 의한 상기 가장 최소의 n m 개의 교차 합의 선택은, 선정된 개수(n b )의 후보 교차 합으로 구성된 후보군을 결정한 후, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 과정과 상기 후보군에 적어도 하나의 교차 합을 추가하는 과정을 반복함으로써 이루어질 수 있다. 일 실시예에서, 상기 교차 합들은 가상 매트릭스 형태로 배열되며, 상기 후보군은 상기 가상 매트릭스의 선정된 원소 위치들에 있는 교차 합들을 포함할 수 있다. 일 실시예에서, 상기 후보군에 추가되는 적어도 하나의 교차 합은 2개의 교차 합일 수 있다. 일 실시예에서 후보군에 포함되는 교차 합들의 수 n b 는 6 이상일 수 있다. 일 실시예에서, 선정된 개수의 후보 교차 합의 하나씩이 가상 매트릭스에서 초기화 될 때마다 적어도 하나의 최소 교차 합을 선택할 수 있다. 일 실시예에서, 적어도 하나의 최소 교차 합을 선택한 이후 선택된 최소 교차 합을 후보군에서 제외시키고, 가상 매트릭스 상에서 선택된 최소 교차 합에 인접한 후보 교차 합을 후보군에 추가할 수 있다.
두 변수 노드의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 n m 개(6개)의 교차 합을 버블 체크 알고리즘을 이용해 선택하는 방법을 도 4를 참조로 설명하기로 한다. 두 변수 노드의 LLR 벡터들을 LLRV 1 = {0, 6, 13, 17, 21, 24} 및 LLRV 2 = {0, 7, 15, 21, 25, 29}라 가정한다. 설명의 편의를 위해 각 LLR 벡터의 원소 값을 소수점 값이 아닌 정수 값이라 가정하였으나, 당업자는 실제의 LLR 벡터의 원소 값이 소수점 값을 가짐을 이해할 것이다. 도 4에는 LLRV 1 및 LLRV 2의 원소들을 가상 매트릭스의 행 방향과 열 방향으로 각각 나열하였고, 이들의 교차 합인 36개의 교차 합을 가상 매트릭스의 해당 위치에 나타내었다. 여기서, 후보군은 n b 개(6개)의 교차 합을 포함하는 것으로 한다.
먼저, 도 4a에 도시된 바와 같이, 동그라미 모양의 '버블'로 표시된 6개의 후보 교차 합을 후보군을 구성하는 교 차합들로 결정한다. 다음으로 도 4b에 도시된 바와 같이, 이 6개의 후보 교차 합 중에서 2개의 최소 교차 합인 '0'과 '6'을 선택하고 후보군을 새로운 교차 합으로 보충하기 위해 도시된 바와 같이 '17'과 '15'를 후보군에 추가한다. 다음 단계에서는, 도 4c에 도시된 바와 같이 후보군에서 '13'과 '7'을 선택하고 '21'과 '21'을 후보군에 추가한다. 다음으로, 도 4d에 도시된 바와 같이, 후보군에서 '13'과 '15'를 선택하고 후보군에 '21'과 '25'를 추가한다. 이와 같은 식으로 가장 최소의 6개의 교차 합을 선택할 수 있게 된다. 본 발명의 실시예들에 있어서는 종래의 버블 체크 알고리즘과는 달리 한번에 2개씩의 교차 합을 선택하는데, 이를 앞서 소개한 바와 같이 이중 버블 체크 알고리즘이라 부른다.
단계(S530)에서는, M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 N개의 변수 노드의 LLR 벡터들을 갱신한다. 변수 노드 V j 가 자신과 에지를 통해 연결된 노드들 중 체크 노드
Figure 112015129420222-pat00054
를 제외한 노드들의 LLRV와 채널 LLRV를 전달 받아 변수 노드 연산을 수행하는 방법은 도 2a와 관련하여 전술한 바 있으므로 그 상세한 설명은 생략한다.
단계(S540)에서는 단계(S530)에서 갱신된 N개의 변수 노드의 LLR 벡터들을 이용하여 복호화 종료 조건이 만족되는지의 여부를 검사한다. 이 단계에서는, 단계(S530)에서 갱신된 N개의 변수 노드의 LLR 벡터들과 패리티 검사 매트릭스(H)의 전치 행렬을 이용하여 신드롬(syndrome)을 계산할 수 있다. 일 실시예에서, 계산된 신드롬이 선정된 값 미만인 경우 복호화 종료 조건이 만족된 것으로 판단할 수 있다. 일 실시예에서, 단계(S520) 내지 단계(S530)가 선정된 횟수만큼 반복된 경우 복호화 종료 조건이 만족된 것으로 판단할 수 있다. 단계(S550)에서는, 단계(S540)에서 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 단계(S520) 내지 단계(S540)를 반복할 수 있다.
도 6은 기존의 버블 체크 알고리즘을 비이진 LDPC 코드의 복호화에 적용하여 시뮬레이션함으로써 얻은 오류율 성능(SNR 대 오류율(error rate))과 본 발명의 일 실시예에 따른 이중 버블 체크 알고리즘을 동 부호화에 적용하여 시뮬레이션함으로써 얻은 오류율 성능을 나타낸 그래프이다. 도시된 바와 같이, 이중 버블 체크 알고리즘을 적용한 경우, 기존의 버블 체크 알고리즘을 적용한 경우에 비해 성능 저하가 전혀 없음을 알 수 있다. 따라서, 본 발명의 일 실시예에 따른 이중 버블 체크 알고리즘을 적용하면 기존의 알고리즘에 비해 성능 저하는 거의 없고 체크 노드에서의 연산 시간을 2배로 줄일 수 있게 되는 기술적 효과를 얻을 수 있다.
이상으로 설명한 실시예는, 하드웨어적 측면에서 응용 주문형 집적 회로(Application Specific Integrated Circuits: ASICs), 디지털 신호 처리기(Digital Signal Processors: DSPs), 디지털 신호 처리 소자(Digital Signal Processing Devices: DSPDs), 프로그램 가능 논리 소자(Programmable Logic Devices: PLDs), 현장 프로그램 가능 게이트 어레이(Field-Programmable Gate Arrays: FPGAs), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers) 및 마이크로 프로세서(microprocessors) 중 적어도 하나를 이용하여 구현될 수 있다.
절차나 단계 또는 기능을 포함하는 실시예들은 적어도 하나의 기능 또는 동작을 수행하게 하는, 하드웨어 플랫폼(platform) 상에서 실행 가능한 펌웨어(firmware)/소프트웨어 모듈로 구현될 수 있다. 소프트웨어 코드(code)는 적절한 프로그램(program) 언어로 쓰여진 소프트웨어 애플리케이션(application)에 의해 구현될 수 있다.
본원에 개시된 실시예들에 있어서, 도시된 구성 요소들의 배치는 발명이 구현되는 환경 또는 요구 사항에 따라 달라질 수 있다. 예컨대, 일부 구성 요소가 생략되거나 몇몇 구성 요소들이 통합되어 하나로 실시될 수 있다. 또한 일부 구성 요소들의 배치 순서 및 연결이 변경될 수 있다.
이상에서는 본 발명의 다양한 실시예들에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예들에 한정되지 아니하며, 상술한 실시예들은 첨부하는 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양하게 변형 실시될 수 있음은 물론이고, 이러한 변형 실시예들이 본 발명의 기술적 사상이나 범위와 별개로 이해되어져서는 아니 될 것이다. 따라서, 본 발명의 기술적 범위는 오직 첨부된 특허청구범위에 의해서만 정해져야 할 것이다.

Claims (12)

  1. 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 복호화 방법으로서,
    (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 -,
    (ii) 상기 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산하는 단계 - 상기 N개의 변수 노드와 상기 M개의 체크 노드는 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 연결 관계를 가짐 -,
    (iii) 상기 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 상기 N개의 변수 노드의 LLR 벡터들을 갱신하는 단계,
    (iv) 복호화 종료 조건이 만족되는지의 여부를 검사하는 단계, 및
    (v) 상기 단계 (iv)에서 상기 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 상기 단계 (ii) 내지 단계 (iv)를 반복하는 단계를 포함하고,
    상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함하고,
    상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함하며,
    상기 버블 체크 알고리즘에 의한 상기 가장 최소의 nm개의 교차 합의 선택은, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정한 후, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 과정과 상기 후보군에 적어도 하나의 교차 합을 추가하는 과정을 반복함으로써 이루어지는, 복호화 방법.
  2. 제1항에 있어서,
    상기 비이진 저밀도 패리티 검사 코드는 차수 q의 갈로아 필드 GF(q)에 대해 정의된 코드이며, 상기 nm은 q와 같거나 작은, 복호화 방법.
  3. 제1항에 있어서,
    상기 단계 (iv)는
    상기 갱신된 N개의 변수 노드의 값들과 상기 패리티 검사 매트릭스(H)의 전치 행렬을 이용하여 신드롬(syndrome)을 계산하는 단계, 및
    상기 계산된 신드롬이 선정된 값 미만이거나 상기 단계 (ii) 내지 단계 (iii)가 선정된 횟수만큼 반복되었는지를 판단하는 단계를 포함하는, 복호화 방법.
  4. 제1항에 있어서,
    상기 나머지 변수 노드들의 개수는 2 보다 크며,
    상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계는, 포워드 백워드 알고리즘(Forward Backward Algorithm)을 이용하여 수행되는, 복호화 방법.
  5. 제1항에 있어서,
    상기 교차 합들은 가상 매트릭스 형태로 배열되며, 상기 후보군은 상기 가상 매트릭스의 선정된 원소 위치들에 있는 교차 합들을 포함하는, 복호화 방법.
  6. 제1항에 있어서,
    상기 후보군에 추가되는 적어도 하나의 교차 합은 2개의 교차 합인, 복호화 방법.
  7. 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 복호화 방법으로서,
    (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 -, 및
    (ii) 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는, 상기 N개의 변수 노드와의 연결 관계를 가지는 M개의 체크 노드와 상기 N개의 변수 노드와 간에 반복적인 메시지 교환에 의해 상기 수신된 코드워드를 복호화하는 단계를 포함하며,
    상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함하고,
    상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하고, 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함하며,
    상기 버블 체크 알고리즘에 의한 상기 가장 최소의 nm개의 교차 합의 선택은, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정한 후, 상기 후보군으로부터 2개의 최소 교차 합을 선택하는 과정과 상기 후보군에 적어도 하나의 교차 합을 추가하는 과정을 반복함으로써 이루어지는, 복호화 방법.
  8. 제7항에 있어서,
    상기 단계 (ii)는
    (a) 상기 N개의 변수 노드의 LLR 벡터들을 이용하여 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 계산하는 단계,
    (b) 상기 M개의 체크 노드(check nodes)에서 전달하는 LLR 벡터들을 이용하여 상기 N개의 변수 노드의 LLR 벡터들을 갱신하는 단계,
    (c) 복호화 종료 조건이 만족되는지의 여부를 검사하는 단계, 및
    (d) 상기 단계 (c)에서 상기 복호화 종료 조건이 만족되지 않은 것으로 판단된 경우, 상기 단계 (a) 내지 상기 단계 (c)를 반복하는 단계를 포함하는, 복호화 방법.
  9. 비이진 저밀도 패리티 검사 코드(Non-Binary LDPC Codes)의 복호화 방법으로서,
    (i) 길이가 N인 수신된 코드워드(codewords)에 대해 초기화를 수행하여 N개의 변수 노드의 LLR(Log Likelihood Ratio) 벡터들을 결정하는 단계 - 상기 LLR 벡터들의 각각은 nm개의 원소를 가짐 -, 및
    (ii) 상기 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는, 상기 N개의 변수 노드와의 연결 관계를 가지는 M개의 체크 노드와 상기 N개의 변수 노드와 간에 반복적인 메시지 교환에 의해 상기 수신된 N개의 코드워드를 복호화하는 단계를 포함하며,
    상기 단계 (ii)는, 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함하고,
    상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들을 원소들로 하는 가상 매트릭스를 형성하는 단계, 상기 가상 매트릭스로부터 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하는 단계 및 상기 선택된 nm개의 교차 합을 상기 해당 변수 노드로 전달되는 LLR 벡터의 원소로서 결정하는 단계를 포함하며,
    상기 가상 매트릭스로부터 가장 최소의 nm개의 교차 합을 버블 체크 알고리즘(Bubble Check Algorithm)을 이용해 선택하는 단계는, 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정하는 단계를 포함하며,
    상기 후보군을 결정하는 단계는, 상기 선정된 개수의 후보 교차 합의 하나씩이 상기 가상 매트릭스에서 초기화 될 때마다 적어도 하나의 최소 교차 합을 선택하는 단계를 포함하는, 복호화 방법.
  10. 제9항에 있어서,
    상기 후보군을 결정하는 단계는, 상기 적어도 하나의 최소 교차 합을 선택하는 단계 이후 상기 선택된 최소 교차 합을 상기 후보군에서 제외시키는 단계 및 상기 가상 매트릭스 상에서 상기 선택된 최소 교차 합에 인접한 후보 교차 합을 상기 후보군에 추가하는 단계를 포함하는, 복호화 방법.
  11. 비이진 저밀도 패리티 검사 코드의 복호화 방법으로서,
    상기 비이진 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(H)에 의해 결정되는 연결 관계를 가지는 N개의 변수 노드와 M개의 체크 노드 간에 반복적인 메시지 교환에 의해 길이가 N인 수신된 코드워드를 복호화하는 단계를 포함하고,
    상기 복호화하는 단계는 상기 M개의 체크 노드의 각각에 대하여, 상기 해당 체크 노드에 연결된 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계를 포함하고,
    상기 해당 체크 노드에 연결된 상기 복수의 변수 노드의 각각으로 전달되는 LLR 벡터를 계산하는 단계는, 상기 해당 체크 노드에 연결된 상기 복수의 변수 노드 중 상기 해당 변수 노드를 제외한 나머지 변수 노드들의 LLR 벡터들의 원소 값들에 대한 교차 합들 중 가장 최소의 nm개의 - 여기서 nm은 자연수임 - 교차 합을 이중 버블 체크 알고리즘(Double Bubble Check Algorithm)을 이용해 선택하는 단계를 포함하는, 복호화 방법.
  12. 제11항에 있어서,
    상기 가장 최소의 nm개의 교차 합을 이중 버블 체크 알고리즘을 이용해 선택하는 단계는
    상기 교차 합들 중 선정된 개수의 후보 교차 합으로 구성된 후보군을 결정하는 단계,
    상기 후보군으로부터 2개의 최소 교차 합을 선택하는 단계, 및
    상기 후보군에 적어도 하나의 교차 합을 추가하는 단계를 포함하는, 복호화 방법.
KR1020150191341A 2015-11-23 2015-12-31 비이진 저밀도 패리티 검사 코드의 복호화 방법 KR101657912B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20150164230 2015-11-23
KR1020150164230 2015-11-23

Publications (1)

Publication Number Publication Date
KR101657912B1 true KR101657912B1 (ko) 2016-09-19

Family

ID=57102855

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150191341A KR101657912B1 (ko) 2015-11-23 2015-12-31 비이진 저밀도 패리티 검사 코드의 복호화 방법

Country Status (1)

Country Link
KR (1) KR101657912B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101839749B1 (ko) 2016-11-07 2018-03-20 중앙대학교 산학협력단 협력 반복 복호 방법 및 장치
CN111294061A (zh) * 2020-02-11 2020-06-16 上海威固信息技术股份有限公司 一种原始比特错误率感知的译码软判决延迟降低方法
KR20220064187A (ko) 2020-11-11 2022-05-18 포항공과대학교 산학협력단 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법
CN115225206A (zh) * 2022-07-15 2022-10-21 山东大学 一种带有预计算的译码方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150033863A (ko) * 2013-09-25 2015-04-02 삼성전자주식회사 비이진 ldpc 부호를 사용하는 수신기에서 데이터를 복호하는 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150033863A (ko) * 2013-09-25 2015-04-02 삼성전자주식회사 비이진 ldpc 부호를 사용하는 수신기에서 데이터를 복호하는 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Bubble check: a simplified algorithm for elementary check node processing in extended min-sum non-binary LDPC decoders (Electronics Letters, 2010년 4월) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101839749B1 (ko) 2016-11-07 2018-03-20 중앙대학교 산학협력단 협력 반복 복호 방법 및 장치
CN111294061A (zh) * 2020-02-11 2020-06-16 上海威固信息技术股份有限公司 一种原始比特错误率感知的译码软判决延迟降低方法
KR20220064187A (ko) 2020-11-11 2022-05-18 포항공과대학교 산학협력단 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법
CN115225206A (zh) * 2022-07-15 2022-10-21 山东大学 一种带有预计算的译码方法及系统
CN115225206B (zh) * 2022-07-15 2023-11-03 山东大学 一种带有预计算的译码方法及系统

Similar Documents

Publication Publication Date Title
CN111628785B (zh) 使用硬选取硬译码模式下的译码器产生软信息的方法
JP4402699B2 (ja) ノードメモリ基盤のldpcデコーダ及び復号方法
US9075738B2 (en) Efficient LDPC codes
US7373581B2 (en) Device, program, and method for decoding LDPC codes
CN107370490B (zh) 结构化ldpc的编码、译码方法及装置
US8572463B2 (en) Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
CN109586732B (zh) 中短码ldpc编解码系统和方法
CN109586731B (zh) 用于解码纠错码的系统和方法
JP2008035524A (ja) 反復確率伝搬を使用して記号ブロックを復号化する装置および方法
KR101657912B1 (ko) 비이진 저밀도 패리티 검사 코드의 복호화 방법
JP2006508577A (ja) ランニングミニマム・メッセージパッシングldpc復号化
US10128869B2 (en) Efficient convergence in iterative decoding
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
Thi et al. Two-extra-column trellis min–max decoder architecture for nonbinary LDPC codes
CN106856406B (zh) 一种译码方法中校验节点的更新方法及译码器
Sridharan Design and analysis of LDPC convolutional codes
CN107615666A (zh) Ldpc截短码的译码方法和译码设备
Kakde et al. FPGA implementation of decoder architectures for high throughput irregular LDPC codes
Wanjari et al. Error performance of LDPC decoder using bit flip algorithm
KR102635444B1 (ko) 비이진 저밀도 패리티 검사 코드 디코더, 그것의 동작방법 및 메모리 시스템
Huang et al. A Markov chain model for edge memories in stochastic decoding of LDPC codes
KR101268061B1 (ko) 다상-누산 코드를 이용한 부호화 방법 및 복호화 방법
Remmanapudi et al. An FPGA Implementation of low density Parity-check codes construction & Decoding
Siegel An introduction to low-density parity-check codes
KR101221062B1 (ko) 가변 usc 부호를 이용한 부호화 및 복호화 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 4