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

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

Info

Publication number
KR102476160B1
KR102476160B1 KR1020200150417A KR20200150417A KR102476160B1 KR 102476160 B1 KR102476160 B1 KR 102476160B1 KR 1020200150417 A KR1020200150417 A KR 1020200150417A KR 20200150417 A KR20200150417 A KR 20200150417A KR 102476160 B1 KR102476160 B1 KR 102476160B1
Authority
KR
South Korea
Prior art keywords
input
memory
value
values
message
Prior art date
Application number
KR1020200150417A
Other languages
English (en)
Other versions
KR20220064187A (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 112020120844915-pat00001
)를 가진 행렬 T를 입력받고, 반복 카운터
Figure 112020120844915-pat00002
=1을 입력받으며,
Figure 112020120844915-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 112020120844915-pat00004
,
Figure 112020120844915-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 112020120844915-pat00006
은 입력 메모리(110)와 출력 메모리(140)의 크기를 의미한다.
첫 번째 사이클에 나타난 것처럼 6개의 요소를 제1 정렬기(130)에서 초기화한다.
제1 정렬기(130)는 Step 1에서 첫 번째 최소값과 두 번째 최솟값인
Figure 112020120844915-pat00007
,
Figure 112020120844915-pat00008
을 출력한다.
후보 계산기(150)는 앞서 추출한 첫 번째 최솟값의 위치
Figure 112020120844915-pat00009
, 두 번째 최솟값의 위치
Figure 112020120844915-pat00010
를 이용해 Step 2에서 다음 사이클에 입력 메모리(110)에서 읽을 값의 위치
Figure 112020120844915-pat00011
,
Figure 112020120844915-pat00012
를 계산한다.
입력 메모리(110)는 다음 사이클에 입력 메모리(110)로부터 읽을 값의 위치
Figure 112020120844915-pat00013
,
Figure 112020120844915-pat00014
에서 값을 읽어서
Figure 112020120844915-pat00015
)과
Figure 112020120844915-pat00016
을 얻고 이를 제1 정렬기(130)에 추가한다.
Step 4에서 첫 번째 사이클이라면, Sorter에서 초기화 단계에서 임시로 넣었던 최대값을 새로 초기화한다. Step 1 에서 Step 4까지
Figure 112020120844915-pat00017
/2번 반복하면서 총
Figure 112020120844915-pat00018
개의 출력값을 만들어낸다.
위에서 설명한 ECN 알고리즘은 다음과 같다.
Figure 112020120844915-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 112020120844915-pat00020
)를 가진 채널과 C2V 메시지를 입력받고,
Figure 112020120844915-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 112020120844915-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 112020120844915-pat00023
-1 번째 값인 U(
Figure 112020120844915-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 112020120844915-pat00025
/2 사이클을 반복한다.
Step 2는 입력 U 메모리(211)를 순서대로 스캔하는데, 입력 U 메모리(211)에서 2개씩 순서대로 읽어오면서 각 U(i)에 대해서 offsetV를 더해주게 된다.
입력 U 메모리(211)의 i번째 LLR 값 U(i)와 입력 V 메모리(213)에서
Figure 112020120844915-pat00026
-1 번째 있는 LLR(V(
Figure 112020120844915-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 112020120844915-pat00028
+2 사이즈의 제2 정렬기(230)에서 2개의 최솟값을 동시에 출력한다. 제2 정렬기(230)는 Step 2의 과정을
Figure 112020120844915-pat00029
/2 사이클을 반복하여 총
Figure 112020120844915-pat00030
개의 출력값을 만들어낸다.
다시 말해, 입력 메모리(210)는 C2V 메모리인 입력 V 메모리(213)를 먼저 스캔하면서 매 사이클마다 연산된 2개의 값을 제2 정렬기(230)에 입력하고, C2V 스캔이 완료되면, 채널 메모리인 입력 U 메모리(211)를 스캔하면서 연산된 2개의 값을 제2 정렬기(230)에 입력한다. 제2 정렬기(230)는 첫 번째 최솟값(fir_min)과 두 번째 최솟값(sec_min)을 결과값으로 동시에 출력하여 출력 메모리(240)에 저장한다. 스캔을 완료하면, 총
Figure 112020120844915-pat00031
개의 출력값을 출력 메모리(240)에 저장하게 된다.
본 발명은 한 사이클에 2개씩 처리하여 EVN 처리에 필요한 사이클의 수를 절반으로 감소할 수 있다.
위에서 설명한 EVN 알고리즘은 다음과 같다.
Figure 112020120844915-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 112020120844915-pat00033
/2 사이클로 구성된다. ECN_FB는 도 1에 도시된 ECNinter에 대응되고, ECN_MERGE는 도 1에 도시된 ECNmerge에 대응되고,
Figure 112020120844915-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 112020120844915-pat00035
/2 사이클이 될 때까지 최솟값 출력 과정을 반복한다(S115). 필요한 사이클의 수가
Figure 112020120844915-pat00036
/2로 50% 정도 감소한다.
도 11은 본 발명의 실시예에 따른 EVN의 제어 흐름을 나타낸 도면이다.
EVN(200)은 입력 메시지를 입력받고(S120), C2V 메모리를 스캔하는 과정(S121)과, 제2 정렬기(230)에 연산된 값 2개를 추가하고(S122), iteration의 횟수가
Figure 112020120844915-pat00037
/2 사이클이 될 때까지 Step 1 과정을 반복한다(S123).
EVN(200)은 채널 메모리를 스캔하는 과정(S124)과, 제2 정렬기(230)에 연산된 값 2개를 추가하고(S125), 제2 정렬기(230)에서 2개의 최솟값을 출력하며(S126), iteration의 횟수가
Figure 112020120844915-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. 비이진(Non-binary) 저밀도 패리티 검사(Low Density Parity Check, LDPC) 코드 복호기로서,
    행렬의 m개의 행들을 정의하고, 입력되는 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하기 위한 체크 노드 프로세싱(Check Node Processing)을 수행하는 복수의 체크 노드 단위 블록들; 및
    상기 행렬의 n개의 열들을 정의하고, 입력되는 C2V 메시지를 처리하여 V2C 메시지를 출력하기 위한 변수 노드 프로세싱(Variable Node Processing)을 수행하는 복수의 변수 노드 단위 블록들;을 포함하며,
    상기 비이진 LDPC 코드의 태너 그래프(tanner graph)에서의 노드들 간에 교환되는 상기 V2C 메시지 및 상기 C2V 메시지 각각이 소정의 메시지 길이(nm)에 대응하는 q(2보다 큰 자연수)개의 원소 각각에 대한 확률인 q개의 LLR(Log Likelihood Ratio)을 포함하는 LLR 벡터와 각각의 LLR과 매칭되는 원소를 나타내기 위한 갈로아 필드(Galois Field, GF) 인덱스로 구성될 때, 상기 복수의 체크 노드 단위 블록들과 복수의 변수 노드 단위 블록들은, 상기 메시지 길이(nm)를 가진 행렬을 입력 메시지로 받고, 한 사이클에 2쌍의 결과값을 출력하고, nm/2개의 사이클에 걸쳐 상기 체크 노드 프로세싱과 상기 변수 노드 프로세싱을 반복 수행하여 상기 메시지 길이(nm) 값을 가진 메시지를 출력하는, 비이진 저밀도 패리티 검사 코드 복호기.
  2. 제1항에 있어서,
    상기 복수의 체크 노드 단위 블록들에 포함된 체크 노드 단위 블록(Elementary Check Node, ECN)은 제1 입력 메모리, 상기 제1 입력 메모리에 연결되는 제1 분배기, 상기 제1 분배기에 연결되는 제1 가산기들, 상기 제1 분배기에 연결되는 논리합 연산기들, 상기 제1 가산기들과 상기 논리합 연산기들에 연결되는 제1 정렬기, 및 상기 제1 정렬기에 연결되는 제1 출력 메모리를 구비하며,
    상기 제1 분배기는 상기 제1 입력 메모리로부터 LLR(Log Likelihood Ratio) 값과 상기 LLR 값에 대응되는 갈로아 필드(Galois Field, GF) 값 각각의 복수 쌍을 읽어오고, 상기 LLR 값으로 구성된 LLR 값 복수 쌍을 상기 제1 가산기들로 전송하고, 상기 GF 값으로 구성된 GF 값 복수 쌍을 상기 논리합 연산기들로 전송하며,
    상기 제1 정렬기는 상기 제1 가산기들로부터 각각 가산된 LLR 값들인 E1 및 E2를 받고, 상기 논리합 연산기들로부터 2개의 GF 값들을 받고, 상기 E1 및 E2와 기저장된 2배의 LLR 값들을 비교 연산하여 한 사이클마다 상기 E1 및 E2와 기저장된 2배의 LLR 값들로 구성되는 버블 후보 중 첫번째 최솟값과 두번째 최솟값을 결과 값으로 출력하여 제1 출력 메모리에 저장하는, 비이진 저밀도 패리티 검사 코드 복호기.
  3. 제2항에 있어서,
    상기 체크 노드 단위 블록(ECN)은 상기 제1 정렬기에 연결되는 후보 계산기를 더 포함하며,
    상기 후보 계산기는 상기 첫번째 최솟값과 상기 두번째 최솟값의 위치를 이용하여 LDPC 코드 복원을 위한 다음 사이클에서 상기 제1 입력 메모리에서 가져올 LLR 값 후보와 GF 값 후보의 위치나 인덱스를 계산하여 상기 제1 입력 메모리에 전달하는, 비이진 저밀도 패리티 검사 코드 복호기.
  4. 제1항에 있어서,
    상기 복수의 변수 노드 단위 블록들에 포함된 변수 노드 단위 블록(Elementary Variable Node, EVN)은, 제2 입력 메모리, 상기 제2 입력 메모리에 연결되는 제2 분배기, 상기 제2 분배기에 연결되는 제2 가산기들, 상기 제2 분배기와 상기 제2 가산기들에 연결되는 제2 정렬기, 및 상기 제2 정렬기에 연결되는 제2 출력 메모리를 구비하며,
    상기 제2 입력 메모리는 상기 제2 입력 메모리에 포함되는 C2V 메모리를 먼저 스캔하면서 매 사이클마다 2개의 값을 상기 제2 분배기와 상기 제2 가산기들을 통해 상기 제2 정렬기에 입력하고, 상기 C2V 메모리의 스캔이 완료되면, 상기 제2 입력 메모리에 포함되는 채널 메모리를 스캔하면서 매 사이클마다 2개의 값을 상기 제2 분배기와 상기 제2 가산기들을 통해 상기 제2 정렬기로 입력하며,
    상기 제2 정렬기는 상기 제2 가산기들로부터 받은 복수의 LLR 값들 중 첫번째 최솟값과 두 번째 최솟값을 결과 값으로 출력하여 상기 제2 분배기로부터 받은 GF 값과 쌍 형태로 상기 제2 출력 메모리에 저장하는, 비이진 저밀도 패리티 검사 코드 복호기.
  5. 제4항에 있어서,
    상기 제2 입력 메모리는, 상기 C2V 메모리인 입력 V 메모리를 스캔하여 매 사이클마다 2개의 제1 값을 상기 제2 정렬기에 입력하고, 상기 채널 메모리인 입력 U 메모리를 스캔하여 2개의 제2 값을 상기 제2 정렬기에 입력하며,
    상기 제2 입력 메모리는, 상기 채널 메모리인 입력 U 메모리의 스캔보다 상기 입력 V 메모리의 스캔을 먼저 수행하여 상기 체크 노드 프로세싱(CNP)과 상기 변수 노드 프로세싱(VNP)을 병렬화하는, 비이진 저밀도 패리티 검사 코드 복호기.
  6. 제4항에 있어서,
    상기 제2 입력 메모리는, 상기 채널 메모리로서 상기 입력 메시지가 전송되는 채널의 채널 정보를 입력받아 저장하는 입력 U 메모리, 상기 C2V 메모리로서 C2V 메시지를 입력받아 저장하는 입력 V 메모리, 및 GF 값을 입력받고 GF 값에 대응하는 LLR 값을 출력하는 U CAM(Content Addressable Memory)을 구비하고,
    상기 제2 입력 메모리는 상기 입력 V 메모리에서 읽어온 값과 일치하는 값을 상기 입력 U 메모리에서 읽어오기 위해 상기 U CAM에서 확인하며,
    상기 제2 입력 메모리는 상기 입력 V 메모리를 기설정된 순서대로 처음부터 끝까지 읽어 2개의 GF 값을 상기 U CAM의 입력으로 전달하고, 상기 2개의 GF 값과 일치하는 GF 값이 있는 경우에 상기 일치하는 GF 값에 대응하는 LLR 값을 상기 입력 U 메모리로 출력하며,
    상기 제2 입력 메모리는 상기 입력 U 메모리를 읽은 순서대로 2개의 LLR 값과 2개의 GF 값을 읽어들이고, 상기 입력 V 메모리에서 마지막의 2개의 LLR 값을 읽어오고, 각 사이클에 4개의 LLR 값들과 2개의 GF 값들을 상기 제2 분배기로 전달하는, 비이진 저밀도 패리티 검사 코드 복호기.
  7. 제6항에 있어서,
    상기 입력 V 메모리에서 읽어온 값과 일치하는 값을 상기 U CAM에서 확인하지 못한 경우,
    상기 제2 입력 메모리는, 제1 단계(step 1)에서, 상기 입력 U 메모리에서 마지막(nm) 번째 앞에 위치하는 nm-1 번째에서 읽어온 값(U)의 제1 오프셋(offsetu)을 계산하고, 계산한 제1 오프셋과 상기 입력 V 메모리의 i(임의의 반복 횟수)번째 LLR 값을 더한 값(E)을 상기 제2 정렬기에 입력하며, 여기서 상기 값(E)에 대응하는 GF 값은 상기 입력 V 메모리에서 상기 i번째 LLR 값에 대응하는 i번째 GF 값인, 비이진 저밀도 패리티 검사 코드 복호기.
  8. 제7항에 있어서,
    상기 제2 입력 메모리는, 제2 단계(step 2)에서, 상기 입력 U 메모리에서 2개씩 순서대로 읽어오면서 각각의 읽어온 값(Ui)에 대해 제2 오프셋(offsetv)을 더한 값을 상기 제2 정렬기에 입력하며, 여기서 상기 제2 오프셋은 상기 입력 U 메모리의 상기 i번째 LLR 값과 상기 입력 V 메모리의 nm-1 번째 LLR 값에 1을 더하여 계산한 것인, 비이진 저밀도 패리티 검사 코드 복호기.
  9. 제1항에 있어서,
    상기 복수의 체크 노드 단위 블록들은 제1 ECN, 제2 ECN, 제3 ECN, 제4 ECN, 제5 ECN 및 제6 ECN을 포함하고,
    상기 제1 ECN은 제1 V2C 메시지(V2C1)와 제2 V2C 메시지(V2C2)를,
    상기 제2 ECN은 제3 V2C 메시지(V2C3)와 제4 V2C 메시지(V2C4)를,
    상기 제3 ECN은 상기 제2 ECN의 출력과 상기 제1 V2C 메시지(V2C1)를,
    상기 제4 ECN은 상기 제2 ECN의 출력과 상기 제2 V2C 메시지(V2C2)를,
    상기 제5 ECN은 상기 제1 ECN의 출력과 상기 제3 V2C 메시지(V2C3)를,
    상기 제6 ECN은 상기 제1 ECN의 출력과 상기 제4 V2C 메시지(V2C4)를 각각 체크 노드 프로세싱하는, 비이진 저밀도 패리티 검사 코드 복호기.
  10. 제9항에 있어서,
    상기 제3 ECN, 상기 제4 ECN, 상기 제5 ECN 및 상기 제6 ECN 각각은, 제1 메시지 길이를 가진 행렬을 입력받고, 매 사이클마다 상기 제1 메시지 길이를 가진 C2V 메시지를 출력하는, 비이진 저밀도 패리티 검사 코드 복호기.
  11. 소정의 메시지 길이를 가진 입력 메시지인 행렬의 m개의 행들을 정의하고, 입력되는 V2C(variable to check) 메시지를 처리하여 C2V(check to variable) 메시지를 출력하기 위한 체크 노드 프로세싱(Check Node Processing)을 수행하는 복수의 체크 노드 단위 블록들과, 상기 행렬의 n개의 열들을 정의하고, 입력되는 C2V 메시지를 처리하여 V2C 메시지를 출력하기 위한 변수 노드 프로세싱(Variable Node Processing)을 수행하는 복수의 변수 노드 단위 블록들을 포함하는 비이진(Non-binary) 저밀도 패리티 검사(Low Density Parity Check, LDPC) 코드 복호기에 의해 수행되는 비이진 저밀도 패리티 검사 코드 복호화 방법으로서,
    상기 복수의 체크 노드 단위 블록들에 포함된 체크 노드 단위 블록(Elementary Check Node, ECN)에 구비되는 제1 분배기가, 제1 입력 메모리로부터 LLR(Log Likelihood Ratio) 값과 상기 LLR 값에 대응되는 갈로아 필드(Galois Field, GF) 값 각각의 복수 쌍을 읽어오고, 상기 LLR 값으로 구성된 상기 LLR 값의 복수 쌍을 제1 가산기들로 전송하고, 상기 GF 값으로 구성된 상기 GF 값의 복수 쌍을 논리합 연산기들로 전송하는 단계;
    상기 ECN에 구비되는 제1 정렬기가, 상기 제1 가산기들로부터 각각 가산된 LLR 값들인 E1 및 E2를 받고, 상기 논리합 연산기들로부터 2개의 GF 값들을 받고, 상기 E1 및 E2와 기저장된 2배의 LLR 값들을 비교 연산하여 한 사이클마다 상기 E1 및 E2와 기저장된 2배의 LLR 값들로 구성되는 버블 후보 중 첫번째 최솟값과 두번째 최솟값을 결과 값으로 출력하여 제1 출력 메모리에 저장하는 단계; 및
    상기 ECN의 후보 계산기가 상기 첫번째 최솟값과 상기 두번째 최솟값의 위치를 이용하여 LDPC 코드 복원을 위한 다음 사이클에서 상기 제1 입력 메모리에서 가져올 LLR 값 후보와 GF 값 후보의 위치나 인덱스를 계산하여 상기 제1 입력 메모리에 전달하는 단계;를 포함하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
  12. 제11항에 있어서,
    상기 복수의 변수 노드 단위 블록들에 포함된 변수 노드 단위 블록(Elementary Variable Node, EVN)에 구비되는 제2 입력 메모리가, 상기 제2 입력 메모리에 포함되고 C2V 메시지를 저장하는 C2V 메모리를 먼저 스캔하면서 매 사이클마다 2개의 값을 제2 분배기와 제2 가산기들을 통해 제2 정렬기로 입력하는 단계;
    상기 C2V 메모리의 스캔이 완료되면, 상기 입력 메모리에 포함되고 상기 입력 메시지가 전송되는 채널의 채널 정보를 저장하는 채널 메모리를 스캔하면서 매 사이클마다 2개의 값을 상기 제2 분배기와 상기 제2 가산기들을 통해 상기 제2 정렬기에 입력하는 단계; 및
    상기 EVN에 구비되는 상기 제2 정렬기가, 상기 제2 가산기들로부터 받은 복수의 LLR 값들 중 첫번째 최솟값과 두 번째 최솟값을 결과 값으로 출력하여 상기 제2 분배기로부터 받은 GF 값과 함께 쌍 형태로 제2 출력 메모리에 저장하는 단계;
    를 더 포함하는 비이진 저밀도 패리티 검사 코드 복호화 방법.
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 KR20220064187A (ko) 2022-05-18
KR102476160B1 true 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)

Family Cites Families (6)

* 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 부호를 사용하는 수신기에서 데이터를 복호하는 방법 및 장치
KR20150137430A (ko) * 2014-05-29 2015-12-09 삼성전자주식회사 통신 시스템에서 비-이진 ldpc 부호를 복호화하는 방법 및 장치
KR101657912B1 (ko) 2015-11-23 2016-09-19 충남대학교산학협력단 비이진 저밀도 패리티 검사 코드의 복호화 방법
KR102231278B1 (ko) * 2017-06-07 2021-03-23 한국전자통신연구원 이진 로그를 사용하는 저밀도 패리티 검사 복호기 및 그것의 복호 방법
KR102092634B1 (ko) * 2018-10-12 2020-04-23 고려대학교 산학협력단 Ldpc 부호 복호기 및 복호 방법

Also Published As

Publication number Publication date
WO2022102843A1 (ko) 2022-05-19
KR20220064187A (ko) 2022-05-18

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
USRE44421E1 (en) Decoding apparatus for low-density parity-check codes using sequential decoding, and method thereof
US7373581B2 (en) Device, program, and method for decoding LDPC codes
CN100581064C (zh) 低密度奇偶校验码解码装置和方法
JP4320418B2 (ja) 復号装置および受信装置
Dumer Soft-decision decoding of Reed-Muller codes: a simplified algorithm
CN107919874A (zh) 用于非二进制ldpc码解码的校验子计算的基本校验节点处理
Xiong et al. Symbol-based successive cancellation list decoder for polar codes
Elkelesh et al. Improving belief propagation decoding of polar codes using scattered EXIT charts
Thi et al. Two-extra-column trellis min–max decoder architecture for nonbinary LDPC codes
WO2007085653A1 (en) Check-irregular ldpc codes for uep
US10554226B2 (en) Method for controlling a check node of a NB-LDPC decoder and corresponding check node
KR101657912B1 (ko) 비이진 저밀도 패리티 검사 코드의 복호화 방법
CN105556851A (zh) 用于从值的集合中识别第一极值和第二极值的方法及装置
KR102476160B1 (ko) 비이진 저밀도 패리티 검사 코드 복호기 및 이를 이용한 복호화 방법
US20170288697A1 (en) Ldpc shuffle decoder with initialization circuit comprising ordered set memory
Nguyen et al. Neural normalized min-sum message-passing vs. viterbi decoding for the CCSDS line product code
JP5523064B2 (ja) 復号装置及び方法
Zolotarev et al. Efficient multithreshold decoding of nonbinary codes
Moradi Performance and computational analysis of polarization-adjusted convolutional (PAC) codes
Xia et al. High throughput polar decoding using two-staged adaptive successive cancellation list decoding
CN111835363A (zh) 基于交替方向乘子法的ldpc码译码方法
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