KR101554488B1 - 저밀도 패리티 체크 코드의 디코딩 방법 및 장치 - Google Patents

저밀도 패리티 체크 코드의 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR101554488B1
KR101554488B1 KR1020130147101A KR20130147101A KR101554488B1 KR 101554488 B1 KR101554488 B1 KR 101554488B1 KR 1020130147101 A KR1020130147101 A KR 1020130147101A KR 20130147101 A KR20130147101 A KR 20130147101A KR 101554488 B1 KR101554488 B1 KR 101554488B1
Authority
KR
South Korea
Prior art keywords
decoding
bit
codeword
error
llr
Prior art date
Application number
KR1020130147101A
Other languages
English (en)
Other versions
KR20150062445A (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 한국과학기술원
Priority to KR1020130147101A priority Critical patent/KR101554488B1/ko
Publication of KR20150062445A publication Critical patent/KR20150062445A/ko
Application granted granted Critical
Publication of KR101554488B1 publication Critical patent/KR101554488B1/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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3905Maximum a posteriori probability [MAP] decoding or approximations thereof based on trellis or lattice decoding, e.g. forward-backward algorithm, log-MAP decoding, max-log-MAP decoding
    • H03M13/3927Log-Likelihood Ratio [LLR] computation by combination of forward and backward metrics into LLRs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables

Landscapes

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

Abstract

본 발명은 디코딩 방법 및 장치에 관한 것으로, 더욱 상세하게는 저밀도 패리티 체크 코드(LDPC)의 디코딩 방법 및 장치에 관한 것이다.
본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법은 수신된 코드워드(received codeword)를 디코딩하여 임시 코드워드(tentative codeword)를 생성하는 임시 코드워드 생성 단계; 상기 임시 코드워드가 에러를 포함하는지 판별하는 제1 에러 판별 단계; 상기 임시 코드워드가 에러를 포함하면, 미리 설정된 LLR(Log Likelihood Ration)값보다 큰 LLR값을 갖는 비트 노드(bit node)의 채널 출력(channel output)값을 최대로 변경하는 비트 피닝(bit-pinning) 단계; 및 상기 임시 코드워드를 최대-합 알고리즘(Max-Sum Algorithm)을 사용하여 디코딩하는 디코딩 단계;를 포함한다.

Description

저밀도 패리티 체크 코드의 디코딩 방법 및 장치{METHOD AND APPARATUS FOR DECORDING OF LOW DENSITY PARITY CHECK CODE}
본 발명은 디코딩 방법 및 장치에 관한 것으로, 더욱 상세하게는 저밀도 패리티 체크 코드(LDPC)의 디코딩 방법 및 장치에 관한 것이다.
저밀도 패리티 체크(Low Density Parity Check, 이하 LDPC) 코드(code)는 LDPC 행렬(matrix)을 기반으로 만들어지는 선형 블록 코드(linear block code)이다.
LDPC 코드는 다른 종류의 에러 제어 코딩(Error Control Coding, ECC)과 대비하여 샤논 한계(Shannon limit)에 다다르는 매우 좋은 성능을 가지고 있는 장점이 있는 반면, 디코딩 과정의 복잡도가 높고, 비교적 높은 SNR(Signal-to-Noise Ratio) 구역에서는 에러 발생률의 감소하는 경향이 더뎌지는 에러 플로우(error floor)를 보이게 되는 단점을 갖고 있다. 따라서 다소 높은 디코딩 복잡도를 감수하면서 낮은 에러 발생률을 목적으로 하는 통신 및 네트워크 시스템이나 스토리지 시스템에서 많이 사용되고 있다.
LDPC 코드는 (M×N)크기의 H 행렬(H matrix)를 가지는데, 이는 N개의 비트 노드(bit node)와 M개의 체크 노드(check node)를 갖는 이분 그래프(bipartite graph)로 표현이 가능하다. 각 비트/체크 노드들은 H 행렬의 1의 위치에 따라서 서로 엣지(edge)로 연결되어 상기 이분 그래프를 완성할 수 있다. 각 비트 노드들은 채널 검출기(channel detector)를 통해서 받은 선험적인(a priori) 값을 가지며 일종의 반복 코드 프로세서(repetition code processor)처럼 작동한다. 그리고, 체크 노드들은 일종의 단일 패리티 검사 코드 프로세서(single parity check code processor)처럼 작동하면서 서로 정보를 반복적으로 주고받게 된다. 이 과정에서 체크 노드 프로세서(check node processor)의 작업에 따라 디코딩 방법이 나뉘게 되는데, 이론적으로 부합하는 합-곱 알고리즘(Sum-Product Algorithm, SPA)는 실제 하드웨어 상에서 상당히 높은 복잡도를 요하기 때문에 이를 간략화한 최소-합 알고리즘(Min-Sum Algorithm, MSA)을 사용하기도 한다.
SPA는 비트 노드가 특정 체크 노드로 정보를 전달할 때, 상기 특정 체크 노드를 제외한 모든 다른 연결된 체크 노드로부터 받은 정보를 합하고, 채널 검출기로부터 받은 선험적인(a priori) 값까지 합한 양을 상기 특정 체크 노드로 전달한다.
반면, MSA은, 도1에 도시된 바와 같이, 체크 노드에서 특정 비트 노드로 보내는 정보인 LLR(Log Likelihood Ratio) 값은 해당 체크 노드와 연결된 다른 비트 노드로부터 받은 LLR의 크기 중 가장 작은 값으로 선택하고 부호는 그 LLR값들의 모든 부호의 곱으로 주어진다. 이를 식으로 표현하면 아래의 <수학식 1>과 같다.
Figure 112013109354639-pat00001
이처럼 비트 노드와 체크 노드가 반복하여 LLR 값을 주고받게 하는 동시에 매 디코딩 반복마다 각 비트 노드들의 총 LLR값을 구하여 유효한 코드워드(valid codeword)가 맞는지를 확인한다. 이 때 비트 노드들은 연결된 체크 노드들에게서 받은 메시지들을 모두 합한 값인 APP(A Posteriori Probability)값과 채널 검출기로부터 받은 LLR인 Lch를 더한 값 Λn을 적절한 기준점(threshold)에 따라 하드 디씨젼(hard decision)하여 코드워드(codeword)를 얻는다. 이렇게 얻은 코드워드는 H 행렬을 통해 유효 코드워드인지 여부를 검사하고 유효(valid)인 경우 반복 디코딩을 빠져 나오게 된다. Λn를 구하는 식은 아래의 <수학식 2>와 같다.
Figure 112013109354639-pat00002
위 <수학식 2>에서, N(n)은 n-th 비트 노드와 연결된 모든 체크 노드들의 세트(set)이다.
위와 같은 LDPC 코드의 디코딩 과정은 미리 정해놓은 반복 디코딩 횟수만큼 돌리고, 그 후에도 수정이 안 되는 경우 에러가 발생된 것으로 취급하는데, 보통 높은 SNR에서는 트래핑 셋(trapping set)이라는 소규모의 비트/체크 노드 군에 의해 에러 플로우(error floor)를 발생하게 된다. 상기 트래핑 셋은 비교적 작은 크기이면서 매우 안정화된 상태를 유지하기 때문에, 기존의 디코딩 방법을 반복하더라도 상기 트래핑 셋을 제거할 수 없다.
트래핑 셋의 예시는 도 2와 같다. 도 2를 참조하면, 트래핑 셋은 두 가지(K, s)의 파라미터로 구성되는데, 하나(K)는 잘못된(erroneous) 비트 노드의 개수이고, 다른 하나(s)는 불만족된 체크 노드(unsatisfied check node)의 개수이다.
비트 노드들(v1, v2, v3, v4, v5)는 모두 잘못된(erroneous) 비트 노드들이기 때문에, 체크 노드들(c1, c2, c3, c4, c5, c6) 중 짝수 개의 엣지(edge)로 비트 노드와 연결된 체크 노드들(c2, c3, c4, c5)은 패리티(parity)가 0이 되어 미스-만족된(mis-satisfied) 체크 노드라고 부르고, 홀수 개의 엣지(edge)로 비트 노드와 연결된 체크 노드들(c1, c6)은 불만족된(unsatisfied) 체크 노드라 한다.
트래핑 셋 안의 비트 노드들이 수정되지 못한 채로 남아있게 되는 것은, 트래핑 셋 외부의 비트들은 모두 올바른 값을 갖고 있으므로, 상기 불만족된 체크 노드(unsatisfied check node)가 외부의 좋은 정보를 들여보낼 수 있는 창구 역할을 하는데 비하여 내부의 미스-만족된 체크 노드(mis-satisfied check node)의 개수가 많기 때문이다.
US 8219878 B1 (2012.07.10)
본 발명은 비교적 높은 SNR에서 발생하는 에러 플로우(error floor)를 낮출 수 있는 저밀도 패리티 체크 코드의 디코딩 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 디코딩 횟수를 줄여 복잡도를 낮출 수 있는 저밀도 패리티 체크 코드의 디코딩 방법 및 장치를 제공하기 위한 것이다.
본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 본 발명의 기재로부터 당해 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법은 채널 검출기로부터 수신된 코드워드(received codeword)를 디코딩하여 임시 코드워드(tentative codeword)를 생성하는 임시 코드워드 생성 단계; 상기 임시 코드워드가 에러를 포함하는지 판별하는 제1 에러 판별 단계; 상기 임시 코드워드가 에러를 포함하면, 상기 임시 코드워드의 비트 노드(bit node)들 중에서 LLR(Log Likelihood Ration)의 절대값이 미리 설정된 LLR값보다 큰 비트 노드를 선택하고, 상기 선택된 비트 노드의 채널 출력(channel output)값을 변경하는 비트 피닝(bit-pinning) 단계; 및 상기 비트 피닝 단계가 적용된 상기 임시 코드워드를 최대-합 알고리즘(Max-Sum Algorithm)을 사용하여 디코딩하는 디코딩 단계;를 포함하고, 상기 LLR의 절대값은 상기 선택된 비트 노드와 연결된 모든 체크 노드(check node)들로부터 수신된 LLR값들의 합의 절대값이고, 상기 선택된 비트 노드의 상기 채널 출력값은 상기 채널 검출기로부터 받은 LLR값이다.
여기서, 상기 디코딩 단계는, 상기 최대-합 알고리즘을 대신하여 소정의 디코딩 알고리즘을 사용하고, 상기 소정의 디코딩 알고리즘은, 상기 비트 피닝 단계가 적용된 상기 임시 코드 워드의 체크 노드와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱이다.
여기서, 상기 제1 에러 판별 단계 이후에, 상기 임시 코드워드의 체크 노드들 중에서 홀수 개의 엣지로 에러가 발생한 비트 노드와 연결된 불만족된 체크 노드(unsatisfied check node)의 개수와 미리 설정된 불만족된 체크 노드의 개수를 비교하는 비교 단계를 더 포함하고, 상기 비교 단계에서 상기 불만족된 체크 노드의 개수가 미리 설정된 불만족된 체크 노드의 개수보다 작으면, 상기 비트 피닝 단계가 수행된다.
여기서, 상기 비교 단계에서 상기 불만족된 체크 노드의 개수가 미리 설정된 불만족된 체크 노드의 개수보다 크면, 상기 임시 코드워드의 디코딩이 실패되었음을 선언하고 상기 임시 코드워드의 디코딩을 종료한다.
여기서, 상기 디코딩 단계에서 출력된 코드워드가 에러를 포함하는지 판별하는 제2 에러 판별 단계; 상기 제2 에러 판별 단계의 수행 결과, 상기 출력된 코드워드가 에러를 포함하면, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수를 미리 설정된 최대 반복 횟수와 비교하는 비교 단계; 및 상기 비교 단계의 수행 결과, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수가 미리 설정된 최대 반복 횟수보다 작으면, 상기 비트 피닝 단계와 상기 디코딩 단계를 다시 수행한다.
여기서, 상기 비교 단계의 수행 결과, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수가 미리 설정된 최대 반복 횟수보다 크면, 상기 출력된 코드워드의 디코딩이 실패되었음을 선언하고 상기 출력된 코드워드의 디코딩을 종료한다.
여기서, 상기 비트 피닝 단계는, 상기 선택된 비트 노드가 상기 임시 코드워드의 체크 노드들 중에서 홀수 개의 엣지로 에러가 발생한 비트 노드와 연결된 불만족된 체크 노드(unsatisfied check node)와 연결된 것이면, 상기 선택된 비트 노드의 상기 채널 출력값을 변경하지 않는다.
삭제
본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 장치는 채널 검출기로부터 수신된 코드워드(codeword)를 디코딩하여 임시 코드워드(tentative codeword)를 생성하는 제1 디코딩부; 상기 임시 코드워드가 에러를 포함하는지 판별하고, 상기 임시 코드워드가 에러를 포함하면 상기 임시 코드워드를 출력하는 판별부; 상기 판별부로부터 상기 임시 코드워드를 수신하고, 상기 임시 코드워드의 비트 노드(bit node)들 중에서 LLR(Log Likelihood Ration)의 절대값이 미리 설정된 LLR값보다 큰 비트 노드를 선택하고, 상기 선택된 비트 노드의 채널 출력(channel output)값을 변경하는 비트 피닝(bit-pinning)부; 및 상기 비트 피닝부에서 출력된 상기 임시 코드워드를 최대-합 알고리즘(Max-Sum Algorithm)을 사용하여 디코딩하는 제2 디코딩부;를 포함하고, 상기 LLR의 절대값은 상기 선택된 비트 노드와 연결된 모든 체크 노드들로부터 수신된 LLR값들의 합의 절대값이고, 상기 선택된 비트 노드의 상기 채널 출력값은 상기 채널 검출기로부터 받은 LLR값이다.
여기서, 상기 제2 디코딩부는 상기 최대-합 알고리즘을 대신하여 소정의 디코딩 알고리즘을 사용하고, 상기 소정의 디코딩 알고리즘은, 상기 비트 피닝부에서 출력된 상기 임시 코드워드의 체크 노드(check node)와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱이다.
본 발명의 실시형태에 따른 디코딩 방법 및 장치를 사용하면, 비교적 높은 SNR에서 발생하는 에러 플로우(error floor)를 낮출 수 있는 이점이 있다.
또한, 디코딩 횟수를 줄여 복잡도를 낮출 수 있는 이점이 있다.
도 1은 종래의 최소-합 알고리즘을 설명하기 위한 이분 그래프.
도 2는 트래핑 셋의 일 예.
도 3은 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 설명하기 위한 순서도.
도 4는 도 3에 도시된 저밀도 패리티 체크 코드의 디코딩 방법을 좀 더 구체적으로 표현한 순서도.
도 5는 도 3 및 도 4에 도시된 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법의 효과를 설명하기 위한 그래프.
도 6은 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 장치의 블록도.
이하, 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명된다. 그러나, 본 발명의 실시형태는 여러 가지의 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명하는 실시형태로만 한정되는 것은 아니다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있으며, 도면들 중 인용부호들 및 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 인용부호들로 표시됨을 유의해야 한다. 참고로 본 발명을 설명함에 있어서 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 3은 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 방법은 임시 코드워드 생성 단계(S100), 에러 판별 단계(S200), 비트 피닝(bit-pinning) 단계(S300) 및 디코딩 단계(S400)를 포함할 수 있다. 이하 각 단계를 구체적으로 설명하도록 한다.
임시 코드워드 생성 단계(S100)는 채널 검출기(channel detector)로부터 소정의 코드워드(codeword)를 수신하고, 수신된 코드워드를 표준 디코딩 방법을 수행하여 임시 코드워드(tentative codeword)로 생성한다.
채널 검출기는 통신 시스템의 수신단에 포함된 것으로서, 유/무선 채널(channel)을 통해 상기 수신단에 수신된 무선 신호를 복조하여 소정의 코드워드를 출력할 수 있다.
표준 디코딩 방법은 최소-합 알고리즘(Min-Sum Algorithm) 뿐만 아니라, 합-곱 알고리즘(Sum-Product Algorithm)일 수 있다. 최소-합 알고리즘은 체크 노드에서 특정 비트 노드로 보내는 정보인 LLR(Log Likelihood Ratio) 값은 해당 체크 노드와 연결된 다른 비트 노드로부터 받은 LLR의 크기 중 가장 작은 값으로 선택하고 부호는 그 LLR값들의 모든 부호의 곱으로 주어지는 알고리즘이고, 합-곱 알고리즘은 비트 노드가 특정 체크 노드로 정보를 전달할 때, 상기 특정 체크 노드를 제외한 모든 다른 연결된 체크 노드로부터 받은 정보를 합하고, 채널 검출기로부터 받은 선험적인(a priori) 값까지 합한 양을 상기 특정 체크 노드로 전달하는 알고리즘이다.
에러 판별 단계(S200)는 임시 코드워드 생성 단계(S100)를 수행하여 생성된 임시 코드워드에 에러가 포함되어 있는지 여부를 판별하는 단계이다. 여기서, 에러는 도 2에서 설명한 트래핑 셋일 수 있다. 임시 코드워드에 에러가 포함되어 있으면 S300 단계를 수행하고, 임시 코드워드에 에러가 포함되어 있지 않으면 종료한다.
비트 피닝 단계(S300)는 S200 단계에서 임시 코드워드에 에러가 포함된 경우에 수행되는 단계로서, 미리 설정된 LLR값보다 큰 LLR값을 갖는 비트 노드(bit node)의 채널 출력(channel output)값을 최대로 변경한다. 여기서, 채널 출력값이란 앞서 S100 단계에서 설명한 채널 검출기에서 출력되는 소정의 정보를 의미한다.
디코딩 단계(S400)는 S300 단계가 수행된 이후에 임시 코드워드를 소정의 디코딩 알고리즘을 사용하여 디코딩하는 단계이다. 여기서, 소정의 디코딩 알고리즘은 최대-합 알고리즘(Max-Sum Algorithm)일 수 있다.
최대-합 알고리즘은, 최소-합 알고리즘과 달리, 체크 노드와 연결된 다른 비트 노드들로부터 받은 복수의 LLR값들 중에서 크기 중 작은 LLR값이 아닌, 가장 큰 LLR값으로 선택하여 특정 비트 노드로 전달하는 알고리즘이다. LLR값의 부호는 최소-합 알고리즘과 같다. 이러한 최대-합 알고리즘은 아래의 <수학식 3>과 같이 표현될 수 있다.
Figure 112013109354639-pat00003
한편, 소정의 디코딩 알고리즘은 최대-합 알고리즘을 변경한 알고리즘일 수 있다. 구체적으로, 소정의 디코딩 알고리즘은 체크 노드(check node)와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱인 것일 수 있다.
도 4는 도 3에 도시된 저밀도 패리티 체크 코드의 디코딩 방법을 좀 더 구체적으로 표현한 순서도이다.
도 4에 도시된 저밀도 패리티 체크 코드의 디코딩 방법은 도 3에 도시된 저밀도 패리티 체크 코드의 디코딩 방법의 모든 단계들뿐만 아니라 다른 여러 단계들도 포함한다. 순서대로 설명하도록 한다.
도 4를 참조하면, 먼저 채널 검출기로부터 수신된 코드워드를 최소-합 알고리즘에 의해 미리 결정된 복수회(Ncount)만큼 반복적으로 디코딩을 수행한다(S100). 이렇게 반복적인 디코딩을 수행하여 임시 코드워드를 생성한다. 한편, 상기 채널의 출력값인 yLLR을 별도로 미리 저장할 수 있다.
S100 단계를 수행하여 생성된 임시 코드워드에 에러가 포함되어 있는지 여부를 판별한다(S200). 여기서, 에러는 도 2에 도시된 트래핑 셋일 수 있다. 판별 결과, 임시 코드워드에 트래핑 셋이 포함되어 있으면, S500 단계를 수행하고, 임시 코드워드에 트래핑 셋이 포함되어 있지 않으면, S100 단계의 디코딩이 성공되었음을 선언하고, 디코딩을 종료한다(S800).
S200 단계의 수행 결과, 임시 코드워드에 트래핑 셋이 포함되어 있으면, 임시 코드워드의 불만족된 체크 노드(unsatisfied check node)의 개수(Nusc)와 미리 설정된 불만족된 체크 노드의 개수(Tusc)를 비교한다(S500). 비교 결과, 불만족된 체크 노드의 개수(Nusc)가 미리 설정된 불만족된 체크 노드의 개수(Tusc)보다 작으면 S300 단계를 수행하고, 불만족된 체크 노드의 개수(Nusc)가 미리 설정된 불만족된 체크 노드의 개수(Tusc)보다 크면 디코딩이 실패되었음을 선언하고, 디코딩을 종료한다(S900).
여기서, 불만족된 체크 노드는, 도 2에 도시된 바와 같이, 임시 코드워드의 체크 노드들 중에서 홀수 개의 엣지로 에러가 발생한 비트 노드와 연결된 체크 노드를 의미하고, 미스-만족된 체크 노드는 임시 코드워드의 체크 노드들 중에서 짝수 개의 엣지로 에러가 발생한 비트 노드와 연결된 체크 노드를 의미한다.
S500 단계의 수행 결과, 불만족된 체크 노드의 개수(Nusc)가 미리 설정된 불만족된 체크 노드의 개수(Tusc)보다 작으면, 비트 피닝(bit-pinning)을 수행한다(S300). 비트 피닝은 비트 노드들 중에서 LLR의 절대값(|Lex(v)|)이 미리 설정된 LLR값(Tex)보다 큰 비트 노드를 선택하고, 선택된 비트 노드의 채널 출력값을 최대화하는 것을 의미한다. 여기서, 선택된 비트 노드의 채널 출력값을 최대화하는 것을 수식으로 표현하면 아래의 <수학식 4>와 같다.
Figure 112013109354639-pat00004
여기서, 상기 LLR의 절대값(|Lex(v)|)은 상기 비트 노드와 연결된 모든 체크 노드로부터 수신된 LLR값들의 합의 절대값일 수 있다.
또한, 여기서, 상기 선택된 비트 노드가 불만족된 체크 노드와 연결된 것이면, 상기 비트 노드의 채널 출력값을 최대화시키지 않을 수 있다.
S300 단계를 수행한 후의 임시 코드워드를 최대-합 알고리즘을 이용하여 디코딩한다(S400). 여기서, 임시 코드워드를 디코딩하는 알고리즘은 최대-합 알고리즘을 변경한 알고리즘일 수 있다. 구체적으로, 최대-합 알고리즘을 변경한 알고리즘은 체크 노드(check node)와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱인 것일 수 있다.
S400 단계를 수행하여 출력된 코드워드에 에러가 포함되어 있는지 여부를 판별한다(S600). 여기서, 에러는 트래핑 셋일 수 있다. 판별 결과, 출력된 코드워드에 트래핑 셋이 포함되어 있으면 S700을 수행하고, 출력된 코드워드에 트래핑 셋이 포함되어 있지 않으면 디코딩이 성공되었음을 선언하고, 디코딩을 종료한다(S800).
S600 단계를 수행한 결과, 출력된 코드워드에 트래핑 셋이 포함되어 있으면 S300 단계와 S400 단계를 하나의 셋트로 하였을 때, 상기 셋트의 반복 횟수(i)를 미리 설정된 반복 횟수(Imax)와 비교한다(S700). 비교 결과, 상기 셋트의 반복 횟수(i)가 미리 설정된 반복 횟수(Imax)보다 작으면 상기 셋트, 즉 S300 단계와 S400 단계를 다시 수행하고, 상기 셋트의 반복 횟수(i)가 미리 설정된 반복 횟수(Imax)보다 크면 디코딩이 실패되었음을 선언하고, 디코딩을 종료한다(S900).
도 3 및 도 4에 도시된 저밀도 패리티 체크 코드의 디코딩 방법을 사용하면, 도 5에 도시된 바와 같이, 트래핑 셋 내의 비트 디그리(bit degree)가 2인 작은 트래핑 셋의 영향을 받는 LDPC 코드의 경우 트래핑 셋에 의한 실패된 코드워드를 수정할 수 있어 10번의 추가적인 디코딩 횟수만으로도 에러 플로우를 약 1 order 정도 낮출 수 있음을 IEEE 802.11n LDPC code로 확인하였다.
도 6은 본 발명의 실시 형태에 따른 저밀도 패리티 체크 코드의 디코딩 장치의 블록도이다.
도 6에 도시된 저밀도 패리티 체크 코드의 디코딩 장치는, 도 3 및 도 4에 도시된 저밀도 패리티 체크 코드의 디코딩 방법을 수행하는 장치이다.
도 6을 참조하면, 저밀도 패리티 체크 코드의 디코딩 장치(1000)는, 제1 디코딩부(1100), 판별부(1200), 비트 피닝부(1300) 및 제2 디코딩부(1400)를 포함할 수 있다.
제1 디코딩부(1100)는 채널 검출기로부터 수신된 코드워드를 디코딩하여 임시 코드워드를 생성한다. 여기서, 임시 코드워드는 도 3 및 도 4에 도시된 S100 단계에서 설명한 방법을 통해 생성할 수 있다.
판별부(1200)는 제1 디코딩부(1100)에서 출력된 임시 코드워드에 에러가 있는지 여부를 판별한다. 여기서 에러는 도 2에 도시된 트래핑 셋일 수 있다. 판별부(1200)는 임시 코드워드에 트래핑 셋이 포함되어 있으면 비트 피닝부(1300)로 임시 코드워드를 출력한다.
여기서, 판별부(1200)는 임시 코드워드에 트래핑 셋이 포함되어 있으면 임시 코드워드의 불만족된 체크 노드(unsatisfied check node)의 개수(Nusc)와 미리 설정된 불만족된 체크 노드의 개수(Tusc)를 비교할 수 있다. 비교 결과, 불만족된 체크 노드의 개수(Nusc)가 미리 설정된 불만족된 체크 노드의 개수(Tusc)보다 작으면 임시 코드워드를 비트 피닝부(1300)로 출력할 수 있다.
비트 피닝부(1300)는 판별부(1200)로부터 수신된 임시 코드워드에서 미리 설정된 LLR값보다 큰 LLR값을 갖는 비트 노드의 채널 출력값을 최대로 변경한다. 비트 피닝부(1300)의 구체적인 동작은 도 3 및 도 4에서 S300 단계를 설명한 부분으로 대체한다.
제2 디코딩부(1400)는 비트 피닝부(1300)에서 변경된 임시 코드워드를 소정의 디코딩 알고리즘을 이용하여 디코딩하여 디코딩된 코드워드를 출력한다. 여기서, 소정의 디코딩 알고리즘은 앞서 상술한 최대-합 알고리즘일 수도 있고, 최대-합 알고리즘을 변경한 알고리즘일 수 있다. 구체적으로, 최대-합 알고리즘을 변경한 알고리즘은 체크 노드(check node)와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱인 것일 수 있다.
제2 디코딩부(1400)에서 출력된 디코딩된 코드워드는 다시 판별부(1200)로 입력될 수 있다. 그러면, 판별부(1200)는 디코딩된 코드워드에 에러(예를 들어, 트래핑 셋)가 포함되어 있는지 여부를 판별할 수 있다. 판별 결과, 디코딩된 코드워드에 트래핑 셋이 포함되어 있으면 이를 다시 비트 피닝부(1300)로 출력할 수 있다.
또한, 판별부(1200)는 제2 디코딩부(1400)에서 입력되는 디코딩된 코드워드가 비트 피닝부(1300)와 제2 디코딩부(1400)를 미리 설정된 횟수만큼 반복되었는지를 판별할 수 있다. 만약, 디코딩된 코드워드가 비트 피닝부(1300)와 제2 디코딩부(1400)를 통과한 횟수가 미리 설정된 최대 반복 횟수보다 작으면 계속해서 디코딩된 코드워드를 비트 피닝부(1300)로 출력하고, 디코딩된 코드워드가 비트 피닝부(1300)와 제2 디코딩부(1400)를 미리 설정된 횟수보다 크면 디코딩된 코드워드를 비트 피닝부(1300)로 출력하지 않을 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시 형태를 설명하였지만, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 형태들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해되어야 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1100: 제1 디코딩부
1200: 판별부
1300: 비트 피닝부
1400: 제2 디코딩부

Claims (10)

  1. 채널 검출기로부터 수신된 코드워드(received codeword)를 디코딩하여 임시 코드워드(tentative codeword)를 생성하는 임시 코드워드 생성 단계;
    상기 임시 코드워드가 에러를 포함하는지 판별하는 제1 에러 판별 단계;
    상기 임시 코드워드가 에러를 포함하면, 상기 임시 코드워드의 비트 노드(bit node)들 중에서 LLR(Log Likelihood Ration)의 절대값이 미리 설정된 LLR값보다 큰 비트 노드를 선택하고, 상기 선택된 비트 노드의 채널 출력(channel output)값을 변경하는 비트 피닝(bit-pinning) 단계; 및
    상기 비트 피닝 단계가 적용된 상기 임시 코드워드를 최대-합 알고리즘(Max-Sum Algorithm)을 사용하여 디코딩하는 디코딩 단계;를 포함하고,
    상기 LLR의 절대값은 상기 선택된 비트 노드와 연결된 모든 체크 노드(check node)들로부터 수신된 LLR값들의 합의 절대값이고,
    상기 선택된 비트 노드의 상기 채널 출력값은 상기 채널 검출기로부터 받은 LLR값인, 저밀도 패리티 체크 코드의 디코딩 방법.
  2. 제 1 항에 있어서,
    상기 디코딩 단계는, 상기 최대-합 알고리즘을 대신하여 소정의 디코딩 알고리즘을 사용하고,
    상기 소정의 디코딩 알고리즘은, 상기 비트 피닝 단계가 적용된 상기 임시 코드 워드의 체크 노드와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱인, 저밀도 패리티 체크 코드의 디코딩 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제1 에러 판별 단계 이후에, 상기 임시 코드워드의 체크 노드들 중에서 홀수 개의 엣지로 에러가 발생한 비트 노드와 연결된 불만족된 체크 노드(unsatisfied check node)의 개수와 미리 설정된 불만족된 체크 노드의 개수를 비교하는 비교 단계를 더 포함하고,
    상기 비교 단계에서 상기 불만족된 체크 노드의 개수가 미리 설정된 불만족된 체크 노드의 개수보다 작으면, 상기 비트 피닝 단계가 수행되는, 저밀도 패리티 체크 코드의 디코딩 방법.
  4. 제 3 항에 있어서,
    상기 비교 단계에서 상기 불만족된 체크 노드의 개수가 미리 설정된 불만족된 체크 노드의 개수보다 크면, 상기 임시 코드워드의 디코딩이 실패되었음을 선언하고 상기 임시 코드워드의 디코딩을 종료하는, 저밀도 패리티 체크 코드의 디코딩 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 디코딩 단계에서 출력된 코드워드가 에러를 포함하는지 판별하는 제2 에러 판별 단계;
    상기 제2 에러 판별 단계의 수행 결과, 상기 출력된 코드워드가 에러를 포함하면, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수를 미리 설정된 최대 반복 횟수와 비교하는 비교 단계; 및
    상기 비교 단계의 수행 결과, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수가 미리 설정된 최대 반복 횟수보다 작으면, 상기 비트 피닝 단계와 상기 디코딩 단계를 다시 수행하는, 저밀도 패리티 체크 코드의 디코딩 방법.
  6. 제 5 항에 있어서,
    상기 비교 단계의 수행 결과, 상기 비트 피닝 단계와 상기 디코딩 단계의 반복 횟수가 미리 설정된 최대 반복 횟수보다 크면, 상기 출력된 코드워드의 디코딩이 실패되었음을 선언하고 상기 출력된 코드워드의 디코딩을 종료하는, 저밀도 패리티 체크 코드의 디코딩 방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 비트 피닝 단계는, 상기 선택된 비트 노드가 상기 임시 코드워드의 체크 노드들 중에서 홀수 개의 엣지로 에러가 발생한 비트 노드와 연결된 불만족된 체크 노드(unsatisfied check node)와 연결된 것이면, 상기 선택된 비트 노드의 상기 채널 출력값을 변경하지 않는, 저밀도 패리티 체크 코드의 디코딩 방법.
  8. 삭제
  9. 채널 검출기로부터 수신된 코드워드(codeword)를 디코딩하여 임시 코드워드(tentative codeword)를 생성하는 제1 디코딩부;
    상기 임시 코드워드가 에러를 포함하는지 판별하고, 상기 임시 코드워드가 에러를 포함하면 상기 임시 코드워드를 출력하는 판별부;
    상기 판별부로부터 상기 임시 코드워드를 수신하고, 상기 임시 코드워드의 비트 노드(bit node)들 중에서 LLR(Log Likelihood Ration)의 절대값이 미리 설정된 LLR값보다 큰 비트 노드를 선택하고, 상기 선택된 비트 노드의 채널 출력(channel output)값을 변경하는 비트 피닝(bit-pinning)부; 및
    상기 비트 피닝부에서 출력된 상기 임시 코드워드를 최대-합 알고리즘(Max-Sum Algorithm)을 사용하여 디코딩하는 제2 디코딩부;를 포함하고,
    상기 LLR의 절대값은 상기 선택된 비트 노드와 연결된 모든 체크 노드들로부터 수신된 LLR값들의 합의 절대값이고,
    상기 선택된 비트 노드의 상기 채널 출력값은 상기 채널 검출기로부터 받은 LLR값인, 저밀도 패리티 체크 코드의 디코딩 장치.
  10. 제 9 항에 있어서,
    상기 제2 디코딩부는 상기 최대-합 알고리즘을 대신하여 소정의 디코딩 알고리즘을 사용하고,
    상기 소정의 디코딩 알고리즘은, 상기 비트 피닝부에서 출력된 상기 임시 코드워드의 체크 노드(check node)와 연결된 비트 노드들로 임의 또는 무작위로 설정된 LLR값을 전달하고, 상기 LLR값의 부호는 상기 비트 노드들로 전달되는 복수의 LLR값들의 모든 부호의 곱인, 저밀도 패리티 체크 코드의 디코딩 장치.
KR1020130147101A 2013-11-29 2013-11-29 저밀도 패리티 체크 코드의 디코딩 방법 및 장치 KR101554488B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130147101A KR101554488B1 (ko) 2013-11-29 2013-11-29 저밀도 패리티 체크 코드의 디코딩 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130147101A KR101554488B1 (ko) 2013-11-29 2013-11-29 저밀도 패리티 체크 코드의 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150062445A KR20150062445A (ko) 2015-06-08
KR101554488B1 true KR101554488B1 (ko) 2015-09-21

Family

ID=53500458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130147101A KR101554488B1 (ko) 2013-11-29 2013-11-29 저밀도 패리티 체크 코드의 디코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101554488B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107241103B (zh) * 2017-04-20 2021-01-05 广东工业大学 一种针对ldpc码的局部动态bp译码方法
CN109412607B (zh) * 2017-08-16 2022-08-26 深圳市海思半导体有限公司 译码方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219878B1 (en) 2007-12-03 2012-07-10 Marvell International Ltd. Post-processing decoder of LDPC codes for improved error floors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219878B1 (en) 2007-12-03 2012-07-10 Marvell International Ltd. Post-processing decoder of LDPC codes for improved error floors

Also Published As

Publication number Publication date
KR20150062445A (ko) 2015-06-08

Similar Documents

Publication Publication Date Title
EP2372919B1 (en) Rate compatible low-density parity-check (LDPC) codes for H-ARQ systems
KR101021465B1 (ko) 저밀도 패리티 검사 코드를 사용하는 통신 시스템에서 신호수신 장치 및 방법
US7716561B2 (en) Multi-threshold reliability decoding of low-density parity check codes
CN111628785B (zh) 使用硬选取硬译码模式下的译码器产生软信息的方法
KR101535225B1 (ko) 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
ES2383835T3 (es) Procedimiento y dispositivo de decodificación para códigos LDPC, y aparato de comunicación que comprende dicho dispositivo
KR101431162B1 (ko) 주변 신뢰도에 따른 서열화를 이용한 메시지 전달 디코딩 방법
EP2482464B1 (en) Encoding apparatus, decoding apparatus, encoding method, decoding method, and communication system
KR20090126829A (ko) 반복 복호 방법과 반복 복호 장치
KR101718543B1 (ko) 개선된 비트 반전 알고리즘 기반의 저밀도 패리티 검사 부호를 위한 복호 방법, 장치 및 이를 위한 기록 매체
JP2007512741A (ja) 信頼性のないメッセージの交換を取消す信念伝播復号化器
KR20130012549A (ko) Ldpc 부호화, 복호화 방법 및 그 방법을 이용하는 장치
KR101554488B1 (ko) 저밀도 패리티 체크 코드의 디코딩 방법 및 장치
CN108206722B (zh) 高码率数据发送方法和装置
CN107615666A (zh) Ldpc截短码的译码方法和译码设备
Nguyen et al. Two-bit bit flipping decoding of LDPC codes
KR101630114B1 (ko) 최소합 알고리즘을 이용한 ldpc 복호화 장치 및 방법
KR101484066B1 (ko) 엘디피시 부호의 디코딩 방법
KR102045438B1 (ko) Ldpc 부호의 복호를 위한 방법 및 장치
KR101606040B1 (ko) 실패검사노드를 이용한 저밀도패리티 검사부호 복호장치 및 그 방법
CN115882873B (zh) 低密度奇偶校验码译码方法、装置、通信设备及存储介质
EP4135205A1 (en) Apparatus and method for low density parity check code decoding
RU2575399C1 (ru) Способ декодирования ldpc-кодов и устройство его реализующее
Kim et al. A low-complexity decoding algorithm for concatenated tree codes
CN112165333A (zh) 空间耦合ldpc码的译码器错误传播的消除方法及装置

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
FPAY Annual fee payment

Payment date: 20180823

Year of fee payment: 4