KR20220064187A - 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법 - Google Patents

비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법 Download PDF

Info

Publication number
KR20220064187A
KR20220064187A KR1020200150417A KR20200150417A KR20220064187A KR 20220064187 A KR20220064187 A KR 20220064187A KR 1020200150417 A KR1020200150417 A KR 1020200150417A KR 20200150417 A KR20200150417 A KR 20200150417A KR 20220064187 A KR20220064187 A KR 20220064187A
Authority
KR
South Korea
Prior art keywords
input
memory
value
llr
values
Prior art date
Application number
KR1020200150417A
Other languages
English (en)
Other versions
KR102476160B1 (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 KR1020200150417A priority Critical patent/KR102476160B1/ko
Priority to PCT/KR2020/016696 priority patent/WO2022102843A1/ko
Publication of KR20220064187A publication Critical patent/KR20220064187A/ko
Application granted granted Critical
Publication of KR102476160B1 publication Critical patent/KR102476160B1/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

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

Abstract

비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법은 데이터 통신 시스템에 적용되는 오류정정부호 중 하나인 NB LDPC(Non-Binary Low Density Parity Check Codes)를 저지연, 저복잡으로 복호할 수 있는 하드웨어 구조를 제공하고, 한 사이클에 2개의 최솟값을 출력값으로 동시에 출력하여 복잡도를 낮추고 지연 시간을 크게 줄일 수 있다.
본 발명은 복호기에서 한 사이클에 두 개의 결과값을 처리하여 복잡도의 증가없이 지연 시간을 줄일 수 있는 효과가 있다.
본 발명은 CNP와 VNP에서 의존성이 있는 연산의 순서를 변경하면, CNP와 VNP를 동시에 진행할 수 있어 병렬화를 통해 오류 정정 능력의 저하없이 지연 시간을 줄일 수 있는 효과가 있다.

Description

비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법{NON-BINARY LOW DENSITY PARITY CHECK CODES DECODER AND DECODING METHOD USING THE SAME}
본 발명은 LDPC 복호기에 관한 것으로서, 더욱 상세하게는 데이터 통신 시스템에 적용되는 오류정정부호 중 하나인 NB LDPC(Non-Binary Low Density Parity Check Codes)를 저지연, 저복잡으로 복호할 수 있는 하드웨어 구조를 제공하고, 한 사이클에 2개의 최솟값을 출력값으로 동시에 출력하여 복잡도를 낮추고 지연 시간을 크게 줄일 수 있는 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법에 관한 것이다.
통상적으로 통신 시스템에서는 데이터의 전송 시, 전송되는 데이터를 부호화하여 전송함으로써, 전송의 안정성을 높이고 재전송을 최소화시켜 전송 효율을 향상시키고 있다. 이러한 부호화 방법 하나로 저밀도 패리티 검사(LDPC) 부호가 있다.
저밀도 패리티 검사 코드(Low Density Parity Check Codes: LDPC)는 1962년 처음으로 제안된 에러 정정코드(error correction codes)로서, 선형 블록 코드(Linear Block Code)에 속하는 전방 에러 정정 코드(forward error correction codes)의 일종이다.
비이진 저밀도 패리티 검사 코드(Non-Binary LDPC)는 오류정정부호의 하나로 데이터 통신 과정에서 발생하는 오류를 제거할 수 있는 기술 중 하나이다.
NB-LDPC 코드는 비슷한 길이를 가지는 Binary LDPC 보다 오류 정정 능력이 좋고, 사이클이 긴 패리티 검사 행렬을 생성하기 유리하여 낮은 에러 플로어를 가진다.
오류정정부호가 메모리와 통신 시스템에 사용되기 위해서는 저지연, 저복잡으로 동작하는 복호기가 요구된다.
NB-LDPC 코드 복호기는 알고리즘의 복잡도와 하드웨어의 복잡도가 높고, 복호에 많은 사이클을 요구하는 단점이 있다.
이러한 단점을 극복하기 위한 복잡도를 줄인 EMS(Extended Min-Sum) 복호기가 제안되었지만, CN Processing(CNP) 과정과 VN Processing(VNP) 과정에서 한 사이클에 최대 하나의 결과값을 출력하기 때문에 복호화 시간이 길어지는 문제점이 있었다.
KR 10-1657912 B1
이와 같은 문제점을 해결하기 위하여, 본 발명은 데이터 통신 시스템에 적용되는 오류정정부호 중 하나인 NB LDPC(Non-Binary Low Density Parity Check Codes)를 저지연, 저복잡으로 복호할 수 있는 하드웨어 구조를 제공하고, 한 사이클에 2개의 최솟값을 출력값으로 동시에 출력하여 복잡도를 낮추고 지연 시간을 크게 줄일 수 있는 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 특징에 따른 비이진 저밀도 패리티 검사 코드 복호기는,
단위 블럭인 ECN(Elementary Check Node)이 복수개로 구성되어 입력된 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하는 체크 노드 프로세싱(Check Node Processing); 및
단위 블록인 EVN(Elementary Variable Node)이 복수개 구성되어 입력된 C2V(check to variable) 메시지를 처리하여 V2C(variable to check) 메시지를 출력하는 변수 노드 프로세싱(Variable Node Processing)를 포함하며,
상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)에서 한 사이클에 두 개의 결과값을 동시에 각각 출력하고, 상기 CNP와 상기 VNP를 반복적으로 진행하여 복호화를 수행하는 것을 특징으로 한다.
각각의 ECN은 입력 U 메모리와 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리;
상기 입력 U 메모리와 상기 입력 V 메모리로부터 한 번에 4쌍의 LLR 값, GF 값을 읽어오고, LLR 값을 가산기(Adder)로 전송하고, 상기 GF 값을 논리합 연산기(XOR)로 전송하는 제1 분배기; 및
상기 가산기와 상기 논리합 연산기를 거쳐서 나온 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받고, 기저장된 4개의 LLR 값과 새로 입력된 상기 2개의 E1(LLR 값), E2(LLR 값)를 비교 연산하여 한 사이클마다 상기 6개의 버블 후보(LLR 값) 중 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 제1 정렬기를 포함하는 것을 특징으로 한다.
각각의 EVN은 채널을 입력받아 저장한 입력 U 메모리와 C2V 메시지를 입력받아 저장한 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리;
상기 입력 U 메모리와 상기 입력 V 메모리로부터 입력된 LLR 값을 가산기(Adder)로 전송하고, 상기 GF 값을 그대로 전송하는 제2 분배기; 및
상기 가산기와 상기 논리합 연산기를 거쳐서 나온 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받아 비교 연산하여 한 사이클마다 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 제2 정렬기를 포함하는 것을 특징으로 한다.
본 발명의 특징에 따른 비이진 저밀도 패리티 검사 코드 복호화 방법은,
단위 블럭인 ECN(Elementary Check Node)이 복수개로 구성되어 입력된 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하는 체크 노드 프로세싱(Check Node Processing)을 수행하는 제1 단계;
단위 블록인 EVN(Elementary Variable Node)이 복수개 구성되어 입력된 C2V(check to variable) 메시지를 처리하여 V2C(variable to check) 메시지를 출력하는 변수 노드 프로세싱(Variable Node Processing)를 수행하는 제2 단계; 및
상기 제1 단계와 상기 제2 단계를 일정 횟수만큼 반복하여 복호화를 수행하는 제3 단계를 포함하는 것을 특징으로 한다.
체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)는 한 사이클에 첫 번째 최솟값과 두 번째 최솟값의 두 개의 결과값을 동시에 각각 출력하는 단계를 더 포함한다.
전술한 구성에 의하여, 본 발명은 복호기에서 한 사이클에 두 개의 결과값을 처리하여 복잡도의 증가없이 지연 시간을 줄일 수 있는 효과가 있다.
본 발명은 CNP와 VNP에서 의존성이 있는 연산의 순서를 변경하면, CNP와 VNP를 동시에 진행할 수 있어 병렬화를 통해 오류 정정 능력의 저하없이 지연 시간을 줄일 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 CN degree 4일 때 CNP 구조를 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 ECN(Elementary Check Node)의 구조를 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른 ECN 동작의 일례를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 VNP(Variable Node Processing) 구조를 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 EVN(Elementary Variable Node)의 구조를 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른 EVN 동작의 일례를 나타낸 도면이다.
도 7은 본 발명의 실시예에 따른 복호기의 타이밍 다이어그램을 나타낸 도면이다.
도 8은 종래의 복호기와 본 발명의 복호기의 FER(Frame Error Rate)을 비교한 결과를 나타낸 도면이다.
도 9는 본 발명의 실시예에 따른 복호기의 전체 제어 흐름을 나타낸 도면이다.
도 10은 본 발명의 실시예에 따른 ECN의 제어 흐름을 나타낸 도면이다.
도 11은 본 발명의 실시예에 따른 EVN의 제어 흐름을 나타낸 도면이다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
메시지 패싱 알고리즘은 일반적인 복호화 방법이며 이는 V2C(variable to check) 메시지를 처리하는 VN Processing(VNP) 과정과 C2V(check to variable) 메시지를 처리하는 CN Processing(CNP) 과정으로 나누어진다.
CNP와 VNP를 반복적으로 진행하여 복호화가 진행되며, 하드웨어 구현에 주로 사용되는 EMS(Extended Min-Sum)은 전달되는 메시지의 크기를 줄여서 복잡도를 낮춘 알고리즘이다.
도 1은 본 발명의 실시예에 따른 CN degree 4일 때 CNP 구조를 나타낸 도면이다.
유한체는 유한개의 원소를 가지는 체를 말하며, 보통 q개의 원소를 가지는 체를 GF(q)라고 정의된다. 여기서, GF는 갈로아 필드(Galois field)를 나타낸다.
예를 들어, 0과 1을 원소로 갖는 이진 체는 GF(2)로 정의된다. LDPC 코드는 패리티 검사 행렬(H)의 원소가 GF(2) 상의 원소로 구성된 경우 이진 LDPC 코드라 불리며, q가 2보다 큰 GF(q) 상의 원소로 구성된 경우 비이진 LDPC 코드라 불린다.
LDPC 코드는 복호 과정에서 행렬(H)을 시작적으로 나타낸 태너 그래프(Tanner Graph)에 의해 표현될 수 있다. 태너 그래프에서 행렬(H)의 행들은 M개의 체크 노드(Check Node, CN)로 정의되고 열들은 N개의 변수 노드(Variable Node, VN)로 정의된다.
유한체 GF(q)에서 정의되는 비이진 LDPC 코드의 변수 노드는 비트의 심볼(symbol)로 구성되기 때문에 비이진 LDPC 코드는 q개의 심볼 각각에 대한 사전 확률을 기반으로 복호된다.
비이진 LDCP 코드의 태너 그래프의 노드들 간에 교환되는 메시지는 q개의 원소 각각에 대한 확률인 q개의 LLR(Log Likelihood Ratio)을 포함하는 LLR 벡터(Log Likelihood Ratio Vector: LLRV)와 각각의 LLR과 매칭되는 원소를 나태내기 위한 GF 인덱스(GF index)로 구성된다.
전/후방 알고리즘(Forward-Backward (FB) Algorithm)은 특정 연산을 전방 연산(forward process)과 후방 연산(backward process)으로 분해하여 이를 반복적으로 수행하고 전/후방 연산의 결과를 다시 조합(merge)하는 구조로 수행된다.
체크 노드 프로세싱(Check Node Processing)는 단위 블럭인 ECN(Elementary Check Node)(100)이 복수개로 구성되어 입력된 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력한다.
도 2는 본 발명의 실시예에 따른 ECN(Elementary Check Node)의 구조를 나타낸 도면이고, 도 3은 본 발명의 실시예에 따른 ECN 동작의 일례를 나타낸 도면이다.
ECN(100)은 체크 노드 프로세싱(Check Node Processing)을 수행하는 단위 블럭이다. 도 1과 같이, ECNinter와 ECNmerge는 기본적으로 수행하는 기능이 같다.
ECN(100)은 메시지 길이(
Figure pat00001
)를 가진 행렬 T를 입력받고, 반복 카운터
Figure pat00002
=1을 입력받으며,
Figure pat00003
값을 가진 C2V 메시지를 출력한다.
입력 메모리(입력 U 메모리(111) 또는 입력 V 메모리(112))(110)는 2개의 요소(Element)를 읽어온다. 각 요소는 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어져 있다.
제1 분배기(120)는 입력 U 메모리(111)와 입력 V 메모리(112)로부터 한 번에 4쌍의 LLR 값, GF 값을 읽어오게 된다.
제1 분배기(120)는 입력 메모리(110)에서 읽어온 LLR 값을 가산기(Adder)(121)로 전송하고, 입력 메모리(110)에서 읽어온 GF 값을 논리합 연산기(XOR)(122)로 전송한다.
제1 정렬기(130)는 가산기(121)와 논리합 연산기(122)를 거쳐서 나온 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받는다.
제1 정렬기(130)는 기저장된 4개의 LLR 값과 새로 입력된 2개의 E1(LLR 값), E2(LLR 값)를 비교 연산하여 한 사이클마다 6개의 버블 후보(LLR 값) 중 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하게 된다(Step1 extraction). 여기서, GF 값은 비교 연산에 사용되지 않고 LLR 값과 함께 이동된다.
다시 말해, 제1 정렬기(130)는 T(1,1), T(2,1), T(1,2) 값과 3개의 최대값으로 초기화하고, 제1 정렬기(130)에서 첫 번째 최소값과 두 번째 최솟값인
Figure pat00004
,
Figure pat00005
을 추출하여 출력 메모리(140)에 저장한다.
후보 계산기(150)는 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)에 대응하는 위치 정보를 이용하여 다음 사이클에 입력 메모리(110)에서 가져올 요소의 위치인 fir_new, sec_new를 계산한다.
후보 계산기(150)에서 fir_new, sec_new를 계산하는 방법은 하기의 ECN 알고리즘에서 Step2 candidate calculation에 설명되어 있다.
후보 계산기(150)는 각 최솟값에 대해 가져올 다음 후보의 인덱스(index)를 계산하는데, imin = 1과 같은 경우, inew = 1, jnew = jmin + 2이고, imin = 2와 같은 경우, inew = 2, jnew = jmin + 1이고, jmin = 1과 같은 경우, inew = imin + 2, jnew = 1이고, 위의 3가지 경우가 아닌 경우, inew = imin + 1, jnew = 2가 된다.
도 3에 도시된 바와 같이, 입력 행렬 T는 입력 U를 가로축으로, 입력 V를 세로축으로 하고, 행렬의 각 요소(Element)는 해당하는 입력의 LLR 값을 더한 것이다.
예를 들어, T(i,j)이라고 하면, 입력 V의 i번째 요소의 LLR 값과 입력 U의 j번째 요소의 LLR 값을 서로 더한 것이다.
Figure pat00006
은 입력 메모리(110)와 출력 메모리(140)의 크기를 의미한다.
첫 번째 사이클에 나타난 것처럼 6개의 요소를 제1 정렬기(130)에서 초기화한다.
제1 정렬기(130)는 Step 1에서 첫 번째 최소값과 두 번째 최솟값인
Figure pat00007
,
Figure pat00008
을 출력한다.
후보 계산기(150)는 앞서 추출한 첫 번째 최솟값의 위치
Figure pat00009
, 두 번째 최솟값의 위치
Figure pat00010
를 이용해 Step 2에서 다음 사이클에 입력 메모리(110)에서 읽을 값의 위치
Figure pat00011
,
Figure pat00012
를 계산한다.
입력 메모리(110)는 다음 사이클에 입력 메모리(110)로부터 읽을 값의 위치
Figure pat00013
,
Figure pat00014
에서 값을 읽어서
Figure pat00015
)과
Figure pat00016
을 얻고 이를 제1 정렬기(130)에 추가한다.
Step 4에서 첫 번째 사이클이라면, Sorter에서 초기화 단계에서 임시로 넣었던 최대값을 새로 초기화한다. Step 1 에서 Step 4까지
Figure pat00017
/2번 반복하면서 총
Figure pat00018
개의 출력값을 만들어낸다.
위에서 설명한 ECN 알고리즘은 다음과 같다.
Figure pat00019
ECN(100)은 새로운 버블의 위치를 계산하는 방식과 첫 번째 최솟값과 두 번째 최솟값을 동시에 출력해 지연 시간을 줄일 수 있다.
도 3에 도시된 바와 같이, ECN(100)의 3개 사이클 동안의 동작 예시이다.
첫 번째 사이클에서 T(1,1), T(2,1), T(1,2)와 3개의 최대값(maximum value) 31로 제1 정렬기(130)를 초기화한다. 그리고 그 중 2개의 최솟값인 T(1,1), T(2,1)을 출력하고 이들의 위치를 이용해 T(1,3), T(2,2)가 새롭게 제1 정렬기(130)에 추가된다.
6개의 LLR 값 중에서 2개의 최솟값 T(3,1), T(1,2)를 출력하고 이들의 위치를 이용해 T(5,1), T(1,4)가 제1 정렬기(130)에 추가된다.
제1 정렬기(130)는 총 6개의 버블 후보(LLR 값) 중에서 이 중 2개의 최솟값을 매 사이클마다 결과값으로 출력한다. 그리고 제1 정렬기(130)는 선택된 버블(2개의 최솟값)의 위치에 기반하여 새로 추가할 버블의 위치를 계산한다.
버블은 기존에 정의된 경로를 따라 이동하기 때문에 간단한 컨트롤 로직을 가진다. 이러한 알고리즘을 통해 ECN(100)은 낮은 복잡도를 가지며, 알고리즘에 소모되는 사이클의 수를 약 50% 줄일 수 있는 효과가 있다.
도 4는 본 발명의 실시예에 따른 VNP(Variable Node Processing) 구조를 나타낸 도면이고, 도 5는 본 발명의 실시예에 따른 EVN(Elementary Variable Node)의 구조를 나타낸 도면이다.
도 4에 도시된 바와 같이, 변수 노드 프로세싱(Variable Node Processing)는 단위 블록인 EVN(Elementary Variable Node)(200)이 복수개 구성되어 입력된 C2V(check to variable) 메시지를 처리하여 V2C(variable to check) 메시지를 출력한다.
EVN(200)은 변수 노드 프로세싱(Variable Node Processing)을 수행하는 단위 블록이고, Decsion은 추정된 심볼을 계산하기 위한 블록으로 종래에 존재하는 알고리즘으로 상세한 설명을 생략한다.
EVN(200)은 메시지 길이(
Figure pat00020
)를 가진 채널과 C2V 메시지를 입력받고,
Figure pat00021
값을 가진 V2C 메시지를 출력한다.
입력 메모리(입력 U 메모리 또는 입력 V 메모리)(210)는 2개의 요소를 읽어온다. 각 요소는 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어져 있다.
입력 U 메모리(211)는 채널을 입력받아 저장하는 채널 메모리이고, 입력 V 메모리(213)는 C2V 메시지를 입력받아 저장하는 C2V 메모리이다.
U CAM(Content Addressable Memory)(212)은 2개의 GF 값을 입력으로 받아서 대응되는 LLR 값을 출력한다.
입력 메모리(210)는 입력 V 메모리(213)에서 읽어온 값과 일치하는 값을 입력 U 메모리(211)에서 읽어 오기 위해 U CAM(212)에서 확인한다.
입력 메모리(210)는 하나의 메모리를 처음부터 끝까지 순서대로 읽는 스캔 동작을 수행하고, Step 1에서 입력 V 메모리(213)을 순서대로 읽어오고, Step 2에서 입력 U 메모리(211)를 순서대로 읽어온다.
Step 1는 입력 V 메모리(213)를 순서대로 읽어서 2개의 GF 값을 U CAM(212)의 입력으로 전달하고, 입력 U 메모리(211)에 일치하는 GF 값이 있는 경우 해당하는 LLR 값을 출력한다.
Step 2는 입력 U 메모리(211)를 순서대로 2개의 LLR 값과, 2개의 GF 값을 읽어들이고, 입력 V 메모리(213)에서 마지막 요소(
Figure pat00022
번째)의 LLR 값을 읽어온다. 이를 통해 각 사이클에 4개의 LLR 값과 2개의 GF 값이 제2 분배기(220)에 입력된다.
제2 분배기(220)는 입력된 LLR 값을 가산기(Adder)(221)로 전송하고, GF 값을 제2 정렬기(230)에 입력한다. 한 사이클에 2 쌍의 LLR 값과, GF 값이 제2 정렬기(230)에 입력된다.
V(i)와 Vgf(i)는 각각 입력 V 메모리(213)에서 i번째 LLR 값과 GF 값을 의미한다.
U(j)는 입력 U 메모리(211)에서의 j번째 LLR 값을 의미한다.
Step 1는 입력 V 메모리(213)에서 값을 순서대로 읽어오면서 입력 U 메모리(211)에 GF 값이 일치하는 부분이 있는지 확인한다.
즉, 입력 메모리(210)는 입력 V 메모리(213)에서 i번째 GF 값 Vgf(i)와 같은 값이 입력 U 메모리(211)의 j번째 위치에 있는 GF 값 Ugf(j)이 있는 경우(Vgf(i) = Ugf(j)), 입력 U 메모리(211)의 j번째 위치에 있는 LLR 값인 U(j)를 V(i)와 더해준 값(E)을 제2 정렬기(230)에 입력한다. 이때, Egf는 입력 V 메모리(213)에서 i번째 GF 값 Vgf(i)가 된다(Egf = Vgf(i)).
만약, 입력 메모리(210)는 입력 V 메모리(213)에서 i번째 GF 값 Vgf(i)와 같은 값이 입력 U 메모리(211)의 j번째 위치에 있는 GF 값 Ugf(j)이 없는 경우, 입력 U 메모리(211)의
Figure pat00023
-1 번째 값인 U(
Figure pat00024
-1)을 읽어와서 offsetU를 계산하고, 계산한 offsetU와 입력 V 메모리(213)의 i번째 LLR 값 V(i)를 더해준 값(E)을 제2 정렬기(230)에 입력한다. 이때, Egf는 입력 V 메모리(213)에서 i번째 GF 값 Vgf(i)가 된다(Egf = Vgf(i)).
입력 메모리(210)는 이렇게 계산된 E1과 E1gf를 제2 정렬기(230)에 입력하게 된다. 한 사이클에 입력 V 메모리(213)에서 2개의 요소를 읽어오기 때문에 2쌍의 E1과 E1gf가 제2 정렬기(230)에 입력된다.
제2 정렬기(230)는 Step 1의 과정을
Figure pat00025
/2 사이클을 반복한다.
Step 2는 입력 U 메모리(211)를 순서대로 스캔하는데, 입력 U 메모리(211)에서 2개씩 순서대로 읽어오면서 각 U(i)에 대해서 offsetV를 더해주게 된다.
입력 U 메모리(211)의 i번째 LLR 값 U(i)와 입력 V 메모리(213)에서
Figure pat00026
-1 번째 있는 LLR(V(
Figure pat00027
-1))에 1을 더하여 계산한 offsetV를 더해준 값(E)을 제2 정렬기(230)에 입력한다. 이때, Egf는 입력 U 메모리(211)에서 i번째 GF 값 Ugf(i)가 된다(Egf = Ugf(i)).
마찬가지로 한 사이클에 입력 U 메모리(211)에서 2개의 요소를 읽어오기 때문에 2쌍의 E와 Egf가 제2 정렬기(230)에 입력되며,
Figure pat00028
+2 사이즈의 제2 정렬기(230)에서 2개의 최솟값을 동시에 출력한다. 제2 정렬기(230)는 Step 2의 과정을
Figure pat00029
/2 사이클을 반복하여 총
Figure pat00030
개의 출력값을 만들어낸다.
다시 말해, 입력 메모리(210)는 C2V 메모리인 입력 V 메모리(213)를 먼저 스캔하면서 매 사이클마다 연산된 2개의 값을 제2 정렬기(230)에 입력하고, C2V 스캔이 완료되면, 채널 메모리인 입력 U 메모리(211)를 스캔하면서 연산된 2개의 값을 제2 정렬기(230)에 입력한다. 제2 정렬기(230)는 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리(240)에 저장한다. 스캔을 완료하면, 총
Figure pat00031
개의 출력값을 출력 메모리(240)에 저장하게 된다.
본 발명은 한 사이클에 2개씩 처리하여 EVN 처리에 필요한 사이클의 수를 절반으로 감소할 수 있다.
위에서 설명한 EVN 알고리즘은 다음과 같다.
Figure pat00032
EVN(200)은 첫 번째 최솟값과 두 번째 최솟값을 동시에 출력해 지연 시간을 줄일 수 있다.
도 6은 본 발명의 실시예에 따른 EVN 동작의 일례를 나타낸 도면이다.
도 6의 왼쪽 그림은 종래의 복호기로 채널 메모리를 먼저 스캔하는 방식을 사용한다. 이러한 방식에서 ECN과 EVN을 병렬적으로 진행하려고 하는 경우, EVN의 Step 1에서 C2V 메모리가 모두 업데이트가 되지 않은 상태이기 때문에 C2V 메모리에서 일치하는 GF 값을 완전히 찾을 수 없는 문제점이 발생한다.
이러한 문제점을 극복하기 위하여 본 발명의 복호기는 도 6의 오른쪽 그림과 같이, C2V 메모리(입력 V 메모리(213))를 먼저 스캔하는 방식을 사용하여 채널 메모리(입력 U 메모리(211))가 ECN, EVN에 관계없이 항상 값이 준비되어 있기 때문에 ECN, EVN을 병렬적으로 진행하더라도 C2V 메모리에서 읽어온 GF 값과 일치하는 채널 메모리의 값을 찾을 수 있다.
이와 같이, 본 발명의 복호기는 스캔 순서를 변경하여 CNP와 VNP를 동시에 진행할 수 있어 병렬화를 통해 오류 정정 능력의 저하없이 지연 시간을 줄일 수 있는 효과가 있다.
도 7은 본 발명의 실시예에 따른 복호기의 타이밍 다이어그램을 나타낸 도면이고, 도 8은 종래의 복호기와 본 발명의 복호기의 FER(Frame Error Rate)을 비교한 결과를 나타낸 도면이다.
도 7은 본 발명의 복호기가 각 사이클에 어떤 기능을 수행하는지 나타낸 타이밍 다이어그램이다.
EVN은 Phase 1(Step 1), Phase 2(Step2)로 나누어져 있고,
Figure pat00033
/2 사이클로 구성된다. ECN_FB는 도 1에 도시된 ECNinter에 대응되고, ECN_MERGE는 도 1에 도시된 ECNmerge에 대응되고,
Figure pat00034
/2 + 1 사이클로 구성된다.
ECN과 EVN은 병렬적으로 수행되고, 하나의 iteration에 13개의 사이클이 필요하다. 미리 지정된 iteration 횟수가 끝나면, 복호화가 완료된다.
ECN과 EVN은 각각 한 사이클에 2개의 결과값을 출력하기 때문에 CNP와 VNP에 소모되는 사이클의 수가 약 50% 감소된다.
도 8에 도시된 바와 같이, 시뮬레이션에 사용한 코드는 64-ary, 길이 160 심볼, 1/2 rate을 가지는 NB-LDPC 코드이다. 본 발명의 복호기는 종래의 복호기에 비해 떨어지지 않는 오류 정정 성능을 가지는 것을 볼 수 있다.
도 9는 본 발명의 실시예에 따른 복호기의 전체 제어 흐름을 나타낸 도면이다.
도 9는 CNP와 VNP가 반복적으로 진행되는 NB-LDPC 복호기의 플로우 차트이다.
본 발명의 NB-LDPC 복호기는 채널 정보를 입력받아(S100), 체크 노드 프로세싱(Check Node Processing)와 변수 노드 프로세싱(Variable Node Processing)을 iteration의 횟수가 10이 될 때까지 반복한다((S101, S102, S103).
CNP와 VNP는 여러 개의 ECN과 EVN으로 나누어져 복호화가 진행된다.
도 10은 본 발명의 실시예에 따른 ECN의 제어 흐름을 나타낸 도면이다.
ECN(100)은 입력 메시지를 입력받고(S100), 제1 정렬기(130)를 초기화하고(S111), 제1 정렬기(130)에서 첫 번째 최솟값과 두 번째 최솟값을 출력하고(S112), 이들의 위치를 이용해 새로운 버블의 위치를 계산하고(S113), 계산한 새로운 버블의 위치를 이용해 새로운 버블을 제1 정렬기(130)에 추가하는 과정을 반복하며(S114), iteration의 횟수가
Figure pat00035
/2 사이클이 될 때까지 최솟값 출력 과정을 반복한다(S115). 필요한 사이클의 수가
Figure pat00036
/2로 50% 정도 감소한다.
도 11은 본 발명의 실시예에 따른 EVN의 제어 흐름을 나타낸 도면이다.
EVN(200)은 입력 메시지를 입력받고(S120), C2V 메모리를 스캔하는 과정(S121)과, 제2 정렬기(230)에 연산된 값 2개를 추가하고(S122), iteration의 횟수가
Figure pat00037
/2 사이클이 될 때까지 Step 1 과정을 반복한다(S123).
EVN(200)은 채널 메모리를 스캔하는 과정(S124)과, 제2 정렬기(230)에 연산된 값 2개를 추가하고(S125), 제2 정렬기(230)에서 2개의 최솟값을 출력하며(S126), iteration의 횟수가
Figure pat00038
/2 사이클이 될 때까지 Step 2 과정을 반복한다(S127).
본 발명은 메모리 및 스토리지 분야 뿐만 아니라 통신 시스템 전반에 사용되는 복호기에 사용될 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
100: ECN
110: 입력 메모리
111: 입력 U 메모리
112: 입력 V 메모리
120: 제1 분배기
130: 제1 정렬기
140: 출력 메모리
150: 후보 계산기
200: EVN
210: 입력 메모리
220: 제2 분배기
230: 제2 정렬기
240: 출력 메모리

Claims (12)

  1. 단위 블럭인 ECN(Elementary Check Node)이 복수개로 구성되어 입력된 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하는 체크 노드 프로세싱(Check Node Processing); 및
    단위 블록인 EVN(Elementary Variable Node)이 복수개 구성되어 입력된 C2V(check to variable) 메시지를 처리하여 V2C(variable to check) 메시지를 출력하는 변수 노드 프로세싱(Variable Node Processing)를 포함하며,
    상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)에서 한 사이클에 두 개의 결과값을 동시에 각각 출력하고, 상기 CNP와 상기 VNP를 반복적으로 진행하여 복호화를 수행하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  2. 제1항에 있어서,
    상기 각각의 ECN은 입력 U 메모리와 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리;
    상기 입력 U 메모리와 상기 입력 V 메모리로부터 한 번에 4쌍의 LLR 값, GF 값을 읽어오고, LLR 값을 가산기(Adder)로 전송하고, 상기 GF 값을 논리합 연산기(XOR)로 전송하는 제1 분배기; 및
    상기 가산기와 상기 논리합 연산기를 거쳐서 나온 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받고, 기저장된 4개의 LLR 값과 새로 입력된 상기 2개의 E1(LLR 값), E2(LLR 값)를 비교 연산하여 한 사이클마다 상기 6개의 버블 후보(LLR 값) 중 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 제1 정렬기를 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  3. 제2항에 있어서,
    상기 첫 번째 최솟값의 위치
    Figure pat00039
    , 두 번째 최솟값의 위치
    Figure pat00040
    를 이용해 다음 사이클에 다음 사이클에 상기 입력 메모리에서 읽을 값의 위치
    Figure pat00041
    ,
    Figure pat00042
    를 계산하는 후보 계산기를 더 포함하며,
    상기 입력 메모리는 다음 사이클에 상기 입력 메모리로부터 읽을 값의 위치
    Figure pat00043
    ,
    Figure pat00044
    에서 값을 읽어서
    Figure pat00045
    Figure pat00046
    을 얻고 이를 상기 제1 정렬기에 추가하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  4. 제1항에 있어서,
    상기 각각의 EVN은 채널을 입력받아 저장한 입력 U 메모리와 C2V 메시지를 입력받아 저장한 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리;
    상기 입력 U 메모리와 상기 입력 V 메모리로부터 입력된 LLR 값을 가산기(Adder)로 전송하고, 상기 GF 값을 그대로 전송하는 제2 분배기; 및
    상기 가산기와 상기 논리합 연산기를 거쳐서 나온 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받아 비교 연산하여 한 사이클마다 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 제2 정렬기를 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  5. 제4항에 있어서,
    상기 입력 메모리는 상기 C2V 메모리인 입력 V 메모리를 스캔하면서 매 사이클마다 연산된 2개의 제1 값을 상기 제2 정렬기에 입력하고, 상기 채널 메모리인 입력 U 메모리를 스캔하면서 연산된 2개의 제2 값을 상기 제2 Sorter에 입력하며, 상기 채널 메모리인 입력 U 메모리의 스캔보다 상기 C2V 메모리인 입력 V 메모리의 스캔을 먼저 수행하여 상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)를 병렬화하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  6. 제5항에 있어서,
    상기 입력 메모리는 상기 입력 V 메모리에서 값을 순서대로 읽어오고, 상기 입력 V 메모리에서 i번째 GF 값 Vgf(i)와 같은 값이 상기 입력 U 메모리의 j번째 위치에 있는 GF 값 Ugf(j)이 있는 경우(Vgf(i) == Ugf(j)), 상기 입력 U 메모리의 j번째 위치에 있는 LLR 값 U(j)를 상기 입력 V 메모리의 i번쩨 위치에 있는 LLR 값 V(i)와 더해준 값(E)을 상기 제2 정렬기에 입력하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  7. 제4항에 있어서,
    상기 입력 메모리는 상기 입력 V 메모리에서 값을 순서대로 읽어오고, 상기 입력 V 메모리에서 i번째 GF 값 Vgf(i)와 같은 값이 상기 입력 U 메모리의 j번째 위치에 있는 GF 값 Ugf(j)이 없는 경우, 상기 입력 U 메모리의
    Figure pat00047
    -1 번째 값인 U(
    Figure pat00048
    -1)을 읽어와서 offsetU를 계산하고, 상기 offsetU와 상기 입력 V 메모리의 i번째 LLR 값 V(i)를 더해준 값(E)을 상기 제2 정렬기에 입력하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기.
  8. 제4항에 있어서,
    상기 입력 메모리는 상기 입력 U 메모리에서 값을 순서대로 읽어오고, 상기 입력 U 메모리의 i번째 LLR 값 U(i)와 상기 입력 V 메모리에서
    Figure pat00049
    -1 번째 있는 LLR(V(
    Figure pat00050
    -1))에 1을 더하여 계산한 offsetV를 더해준 값(E)을 상기 제2 정렬기에 입력하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호기
  9. 단위 블럭인 ECN(Elementary Check Node)이 복수개로 구성되어 입력된 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하는 체크 노드 프로세싱(Check Node Processing)을 수행하는 제1 단계;
    단위 블록인 EVN(Elementary Variable Node)이 복수개 구성되어 입력된 C2V(check to variable) 메시지를 처리하여 V2C(variable to check) 메시지를 출력하는 변수 노드 프로세싱(Variable Node Processing)를 수행하는 제2 단계; 및
    상기 제1 단계와 상기 제2 단계를 일정 횟수만큼 반복하여 복호화를 수행하는 제3 단계를 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
  10. 제9항에 있어서,
    상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)는 한 사이클에 첫 번째 최솟값과 두 번째 최솟값의 두 개의 결과값을 동시에 각각 출력하는 단계를 더 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
  11. 제9항에 있어서,
    상기 체크 노드 프로세싱(Check Node Processing)을 수행하는 제1 단계는,
    입력 U 메모리와 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리로부터 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받고, 기저장된 4개의 LLR 값과 새로 입력된 상기 2개의 E1(LLR 값), E2(LLR 값)를 비교 연산하여 한 사이클마다 상기 6개의 버블 후보(LLR 값) 중 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 단계;
    상기 첫 번째 최솟값의 위치
    Figure pat00051
    , 두 번째 최솟값의 위치
    Figure pat00052
    를 이용해 다음 사이클에 다음 사이클에 상기 입력 메모리에서 읽을 값의 위치
    Figure pat00053
    ,
    Figure pat00054
    를 계산하는 단계; 및
    상기 입력 메모리는 상기 다음 사이클에 상기 입력 메모리로부터 읽을 값의 위치
    Figure pat00055
    ,
    Figure pat00056
    에서 값을 읽어서
    Figure pat00057
    )과
    Figure pat00058
    을 얻고 이를 상기 제1 정렬기에 추가하는 단계를 더 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
  12. 제9항에 있어서,
    상기 변수 노드 프로세싱(Variable Node Processing)를 수행하는 제2 단계는,
    상기 각각의 EVN은 채널을 입력받아 저장한 입력 U 메모리와 C2V 메시지를 입력받아 저장한 입력 V 메모리에서 LLR(Log Likelihood Ratio) 값과 해당 LLR 값에 대응되는 갈로아 필드(Galois Field, GF)값으로 이루어진 요소를 복수개 저장한 입력 메모리로부터 E1(LLR 값), E1gf의 한 쌍과, E2(LLR 값), E2gf의 한 쌍을 입력받아 비교 연산하여 한 사이클마다 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리에 저장하는 단계; 및
    상기 입력 메모리는 상기 입력 V 메모리를 스캔하면서 매 사이클마다 연산된 2개의 제1 값을 제2 정렬기에 입력하고, 상기 입력 U 메모리를 스캔하면서 연산된 2개의 제2 값을 상기 제2 정렬기에 입력하며, 상기 입력 U 메모리의 스캔보다 상기 입력 V 메모리의 스캔을 먼저 수행하여 상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)를 병렬화하는 단계를 더 포함하는 것을 특징으로 하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
KR1020200150417A 2020-11-11 2020-11-11 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법 KR102476160B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200150417A KR102476160B1 (ko) 2020-11-11 2020-11-11 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법
PCT/KR2020/016696 WO2022102843A1 (ko) 2020-11-11 2020-11-24 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200150417A KR102476160B1 (ko) 2020-11-11 2020-11-11 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법

Publications (2)

Publication Number Publication Date
KR20220064187A true KR20220064187A (ko) 2022-05-18
KR102476160B1 KR102476160B1 (ko) 2022-12-08

Family

ID=81602429

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200150417A KR102476160B1 (ko) 2020-11-11 2020-11-11 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법

Country Status (2)

Country Link
KR (1) KR102476160B1 (ko)
WO (1) WO2022102843A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150137430A (ko) * 2014-05-29 2015-12-09 삼성전자주식회사 통신 시스템에서 비-이진 ldpc 부호를 복호화하는 방법 및 장치
KR101657912B1 (ko) 2015-11-23 2016-09-19 충남대학교산학협력단 비이진 저밀도 패리티 검사 코드의 복호화 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014127140A1 (en) * 2013-02-13 2014-08-21 Qualcomm Incorporated Design for lifted ldpc codes having high parallelism, low error floor, and simple encoding principle
KR102080069B1 (ko) * 2013-09-25 2020-04-14 삼성전자주식회사 비이진 ldpc 부호를 사용하는 수신기에서 데이터를 복호하는 방법 및 장치
KR102231278B1 (ko) * 2017-06-07 2021-03-23 한국전자통신연구원 이진 로그를 사용하는 저밀도 패리티 검사 복호기 및 그것의 복호 방법
KR102092634B1 (ko) * 2018-10-12 2020-04-23 고려대학교 산학협력단 Ldpc 부호 복호기 및 복호 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150137430A (ko) * 2014-05-29 2015-12-09 삼성전자주식회사 통신 시스템에서 비-이진 ldpc 부호를 복호화하는 방법 및 장치
KR101657912B1 (ko) 2015-11-23 2016-09-19 충남대학교산학협력단 비이진 저밀도 패리티 검사 코드의 복호화 방법

Also Published As

Publication number Publication date
KR102476160B1 (ko) 2022-12-08
WO2022102843A1 (ko) 2022-05-19

Similar Documents

Publication Publication Date Title
US10630316B2 (en) Bit flipping algorithm for providing soft information during hard decision hard decoding
US9793923B2 (en) LDPC post-processor architecture and method for low error floor conditions
JP4062435B2 (ja) 誤り訂正符号復号装置
CN100581064C (zh) 低密度奇偶校验码解码装置和方法
KR100703271B1 (ko) 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US7590914B2 (en) Decoding apparatus for low-density parity-check codes using sequential decoding, and method thereof
JP4320418B2 (ja) 復号装置および受信装置
KR20040049864A (ko) 패리티 검사 디코더에 사용하기 위한 노드 처리기
KR20060032464A (ko) 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
WO2010073922A1 (ja) 誤り訂正符号化装置、復号装置、符号化方法、復号方法、及びそのプログラム
Thi et al. Two-extra-column trellis min–max decoder architecture for nonbinary LDPC codes
Lewandowsky et al. Optimum message mapping LDPC decoders derived from the sum-product algorithm
US20170134048A1 (en) Message-passing based decoding using syndrome information, and related methods
KR102476160B1 (ko) 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법
Sarkis et al. Reduced-latency stochastic decoding of LDPC codes over GF (q)
WO2007082626A2 (en) Method and apparatus for error correction decoding
CN109245775B (zh) 一种译码器及其实现译码的方法
CN113595564B (zh) 基于信息截断的低复杂度多进制ldpc码译码器装置
Nguyen et al. Neural normalized min-sum message-passing vs. viterbi decoding for the CCSDS line product code
US11075650B1 (en) Sub-matrix reduction for quasi-cyclic LDPC codes
JP4492352B2 (ja) 復号装置及びその方法並びにプログラム
Xia et al. High throughput polar decoding using two-staged adaptive successive cancellation list decoding
Islam LDPC Codes Incorporating Source, Noise, and Channel Memory
KR101267756B1 (ko) 가변 부호화율 불규칙 반복 다상 누산 부호화 및 복호화 방법과 이를 위한 장치
US11848687B1 (en) Acceleration of S-polar ECC throughput by scheduler

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant