KR102569488B1 - Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder - Google Patents

Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder Download PDF

Info

Publication number
KR102569488B1
KR102569488B1 KR1020160092788A KR20160092788A KR102569488B1 KR 102569488 B1 KR102569488 B1 KR 102569488B1 KR 1020160092788 A KR1020160092788 A KR 1020160092788A KR 20160092788 A KR20160092788 A KR 20160092788A KR 102569488 B1 KR102569488 B1 KR 102569488B1
Authority
KR
South Korea
Prior art keywords
check node
equation
input
calculation module
calculation
Prior art date
Application number
KR1020160092788A
Other languages
Korean (ko)
Other versions
KR20180010535A (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 고려대학교 산학협력단
Priority to KR1020160092788A priority Critical patent/KR102569488B1/en
Publication of KR20180010535A publication Critical patent/KR20180010535A/en
Application granted granted Critical
Publication of KR102569488B1 publication Critical patent/KR102569488B1/en

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
    • 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/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • 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)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명은 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법에 관한 것으로, 특히 민스타(min*) 연산과 최소합 연산을 조합하여 슬라이스 자원 수를 효율적으로 줄일 수 있도록 한 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법에 관한 것이다.
또한, 본 발명에 따르면, 차수가 n(n은 양의 정수)인 입력 신호를 입력받는 입력부; 상기 입력부가 입력받은 입력 신호에 대하여 민스타 연산 기법과 최소합 연산 기법을 사용하여 개별 출력 신호를 산출하는 체크 노드 연산 모듈; 및 상기 체크 노드 연산 모듈에서 산출된 개별 출력 신호의 집합인 출력 신호를 출력하는 출력부를 포함하는 LDPC 복호화기의 슬라이스 절감 장치 및 방법을 제공하여 슬라이스 자원 수를 효율적으로 줄일 수 있도록 한다.
The present invention relates to a slice reduction apparatus and method for an LDPC decoder, and more particularly, to a slice reduction apparatus and method for an LDPC decoder capable of efficiently reducing the number of slice resources by combining a min* operation and a minimum sum operation. It's about how.
In addition, according to the present invention, an input unit for receiving an input signal having an order of n (n is a positive integer); a check node calculation module for calculating an individual output signal using a minstar calculation method and a minimum sum calculation method with respect to the input signal received by the input unit; and an output unit for outputting an output signal, which is a set of individual output signals calculated by the check node operation module, to efficiently reduce the number of slice resources by providing a slice saving apparatus and method for an LDPC decoder.

Description

LDPC 복호화기의 슬라이스 절감 장치 및 그 방법{Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder}Slice reduction apparatus and method of LDPC decoder {Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder}

본 발명은 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법에 관한 것으로, 특히 민스타(min*) 연산과 최소합 연산을 조합하여 슬라이스 자원 수를 효율적으로 줄일 수 있도록 한 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법에 관한 것이다.The present invention relates to a slice reduction apparatus and method for an LDPC decoder, and more particularly, to a slice reduction apparatus and method for an LDPC decoder capable of efficiently reducing the number of slice resources by combining a min* operation and a minimum sum operation. It's about how.

일반적으로 LDPC 코드(Low Density Parity Check Codes)는 1962년 Gallager에 의해 처음 제안되었고 1996년 Mackay와 Neal이 이를 재발견 한 후 채널 코딩 기술들 중에서 가장 앞선 기술로 자리매김하고 있다. In general, LDPC codes (Low Density Parity Check Codes) were first proposed by Gallager in 1962, and after Mackay and Neal rediscovered them in 1996, they have established themselves as the most advanced technology among channel coding technologies.

이 부호의 특징으로는 패리티 체크 행렬의 원소가 대부분 0으로 이루어지고, 0이 아닌 원소의 수는 부호 길이에 비하여 적은 수를 가지도록 하여 확률을 기반으로 한 반복적 복호가 가능한 점이다. A feature of this code is that most of the elements of the parity check matrix are made of 0, and the number of non-zero elements is small compared to the code length, so that iterative decoding based on probability is possible.

처음 제안된 LDPC 부호는 패리티 체크 행렬을 비체계적인(non-systematic) 형태로 정의하였고, 그것의 행과 열에 균일하게 적은 무게(weight)를 갖도록 설계되었다.The first proposed LDPC code defined a parity check matrix in a non-systematic form, and was designed to have uniformly low weight in its rows and columns.

여기서, 무게(weight)란 행렬에서 열(column) 또는 행(row)에 포함된 1의 개수를 의미한다.Here, weight means the number of 1s included in a column or row in a matrix.

LDPC 부호의 패리티 체크 행렬 H 상에 0이 아닌 원소의 밀도가 적기 때문에 낮은 복호 복잡도를 가지게 된다.Since the density of non-zero elements on the parity check matrix H of the LDPC code is small, decoding complexity is low.

아울러, 복호 성능도 기존의 부호들보다 우수하여 Shannon의 이론적인 한계에 근접하는 좋은 성능을 보인다. 하지만 LDPC 부호는 당시 하드웨어 기술로서 구현이 어려워서 30여 년이 넘게 많은 사람의 관심을 끌지 못하였다.In addition, decoding performance is superior to existing codes, showing good performance approaching the theoretical limit of Shannon. However, the LDPC code was difficult to implement as a hardware technology at the time, so it did not attract the attention of many people for more than 30 years.

1980년대 초반 그래프를 이용하여 반복적 복호를 하는 방법이 개발되어, 이를 이용하여 LDPC 부호를 실제로 복호할 수 있는 여러 알고리즘들이 개발되었다.In the early 1980s, a method for iterative decoding using a graph was developed, and various algorithms that can actually decode LDPC codes using this method have been developed.

다른 채널 코딩 기술에 비하여 LDPC 코드가 갖는 큰 장점으로는 고속 데이터 전송에 필요한 높은 코드 레이트에서의 탁월한 성능을 들 수 있다.A great advantage of LDPC codes compared to other channel coding techniques is excellent performance at high code rates required for high-speed data transmission.

LDPC(Low-Density Parity Check) 코드(codes)의 복호화 과정은 비트 노드 갱신과 검사 노드 갱신 부분으로 분리될 수 있으며, 이러한 과정들을 순차적으로 반복하면서 오류를 정정하게 된다. The decoding process of LDPC (Low-Density Parity Check) codes can be separated into bit node update and check node update parts, and errors are corrected while repeating these processes sequentially.

이때 검사 노드 갱신 과정에서는 대표적으로 합곱 알고리즘(SPA: Sum-Product Algorithm) 그리고 최소합 알고리즘(MSA: Min-Sum Algorithm)을 사용하게 되는데, 합곱 알고리즘의 경우에 상대적으로 오류정정 능력이 뛰어나지만 하드웨어 자원을 보다 많이 소모하는 특징을 가지고 있고, 반대로 최소합 알고리즘에서는 다소 오류정정 능력은 떨어지나 하드웨어 자원 소모량을 크게 줄일 수 있다. At this time, in the process of updating the check node, the sum-product algorithm (SPA: Sum-Product Algorithm) and the minimum-sum algorithm (MSA: Min-Sum Algorithm) are typically used. In the case of the sum-product algorithm, error correction capability is relatively excellent, but hardware resource Conversely, in the least sum algorithm, the error correction ability is slightly lowered, but the hardware resource consumption can be greatly reduced.

기존의 LDPC 코드 구현 과정에서는 무선이동통신 표준에 제시된 서비스 품질(QoS: Quality of Service)을 만족시키기 위하여 최소합 알고리즘보다는 합곱 알고리즘 및 유사 기법들을 이용한 트리 구조 방식의 LDPC 복호화기를 설계해왔으며, 이는 소모 슬라이스 자원 수를 줄이는데 한계점으로 작용하였다.In the existing LDPC code implementation process, a tree-structured LDPC decoder has been designed using the sum-product algorithm and similar techniques rather than the minimum-sum algorithm to satisfy the Quality of Service (QoS) presented in the wireless mobile communication standard. It served as a limitation in reducing the number of slice resources.

한편, LDPC 코드를 FPGA로 구현하는 과정에서는 연산 복잡도를 줄이기 위하여, 일반적으로 합곱 알고리즘의 곱 연산을 민스타(min*) 연산으로 바꿔 사용하게 되는데, 이때 민스타(min*) 연산 모듈 내부에는 곱 연산의 tanh- 1연산을 대체하기 위한 룩업 테이블(LUT: Look Up Table)이 포함되어 있다.On the other hand, in order to reduce the computational complexity in the process of implementing the LDPC code with an FPGA, the multiplication operation of the sum-product algorithm is generally replaced with the min star (min * ) operation. At this time, the min star (min * ) operation module contains A Look Up Table (LUT) is included to replace the tanh - 1 operation of the operation.

따라서 LDPC 코드의 코드워드 길이가 증가함에 따라, 그리고 각 검사 노드 연산 모듈의 입출력 차수가 커짐에 따라 구현 시 소모 슬라이스(slice) 수가 증가하게 되며, 이는 FPGA 구현 관점에 있어 비효율적인 부분으로 평가된다. Therefore, as the codeword length of the LDPC code increases and the input/output order of each check node calculation module increases, the number of slices consumed increases during implementation, which is evaluated as an inefficient part from the FPGA implementation point of view.

따라서 소모 슬라이스 수를 줄이기 위하여 일반적으로 MSA 기법을 사용하게 되는데, 이와 같은 방법으로는 소모 슬라이스 수는 줄일 수 있으나 오류정정 능력이 떨어지는(약 0.5dB 차이) 문제점이 발생한다. Therefore, in order to reduce the number of consumed slices, the MSA technique is generally used. In this way, the number of consumed slices can be reduced, but error correction capability is poor (about 0.5 dB difference).

따라서 이와 같은 문제점 또한 극복하기 위하여 검사 노드 갱신 연산 과정 중 두 입력 값의 최소값에 0~1 사이의 임의의 값을 곱해주는 scaled-MSA 기법, 그리고 최소값에 0~1 사이의 임의의 값을 빼주는 normalized-MSA 기법 등이 개발되었다. Therefore, to overcome this problem, a scaled-MSA technique that multiplies the minimum value of two input values by a random value between 0 and 1 during the check node update operation process, and a normalized method that subtracts a random value between 0 and 1 from the minimum value -MSA techniques, etc. have been developed.

그러나 이러한 기법들을 사용하더라도 SPA(또는 MSA)에 비해 오류정정 능력이 다소 저하되며(약 0.1~0.2dB 차이) 다중화기(multiplier) 또는 감산기(subtractor) 추가로 인한 슬라이스 소모량 증가 또한 무시할 수 없다.However, even if these techniques are used, the error correction capability is somewhat lower than that of SPA (or MSA) (about 0.1 to 0.2 dB difference), and the increase in slice consumption due to the addition of a multiplier or subtractor cannot be ignored.

[문헌 1] R. G. Gallager, “Low-Density Parity-Check Codes”. IRE Transaction on Information theory, Jan, 1962.[Document 1] R. G. Gallager, “Low-Density Parity-Check Codes”. IRE Transaction on Information theory, Jan, 1962. [문헌 2] John R. Barry, “Low-Density Parity-check Codes”, Georgia Institute of Technology, Oct, 2001.[Document 2] John R. Barry, “Low-Density Parity-check Codes”, Georgia Institute of Technology, Oct, 2001. [문헌 3] 김성운, 박창수, 황선영, “높은 throughput 성능을 갖는 DVB-S2 LDPC 부호의 복호기 구현”, 한국 통신학회 논문지 ‘08-09 Vol 33 No. 9, Sep, 2008, pp. 924-933[Document 3] Seongwoon Kim, Changsoo Park, Seonyeong Hwang, “Implementation of a DVB-S2 LDPC Code Decoder with High Throughput Performance”, Journal of the Korean Society of Communications Engineers ‘08-09 Vol 33 No. 9, Sep, 2008, p. 924-933 [문헌 4] Junyoung Wi, Sungwon Kim and Jun Heo, “Design of DVB-S2 LDPC Decoders With Various Code Rates”, ICT-CSCC 2014, Jul. 2014[Document 4] Junyoung Wi, Sungwon Kim and Jun Heo, “Design of DVB-S2 LDPC Decoders With Various Code Rates”, ICT-CSCC 2014, Jul. 2014

따라서 본 발명은 상기와 같은 문제점을 해결하기 위하여 검사 노드 갱신 연산 과정의 트리 구조에서 민스타(min*) 알고리즘과 최소합 알고리즘을 적절히 섞어 사용하여 약간의 오류정정 성능 저하에도 불구하고 슬라이스 자원 수를 줄일 수 있는 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법을 제공하는 데 있다.Therefore, in order to solve the above problem, the present invention properly mixes the min star (min * ) algorithm and the minimum sum algorithm in the tree structure of the check node update operation process to increase the number of slice resources despite a slight error correction performance degradation. It is an object of the present invention to provide an apparatus and method for reducing slices of an LDPC decoder capable of reducing slices.

본 발명의 일 측면은 차수가 n(n은 양의 정수)인 입력 신호 를 입력받는 입력부; 상기 입력부가 입력받은 입력 신호에 대하여 민스타 연산 기법과 최소합 연산 기법을 사용하여 개별 출력 신호를 산출하는 체크 노드 연산 모듈; 및 상기 체크 노드 연산 모듈에서 산출된 개별 출력 신호의 집합인 출력 신호 를 출력하는 출력부를 포함한다.An aspect of the present invention is an input signal having order n (n is a positive integer) an input unit that receives input; a check node calculation module for calculating an individual output signal using a minstar calculation method and a minimum sum calculation method with respect to the input signal received by the input unit; and an output signal that is a set of individual output signals calculated by the check node calculation module. It includes an output unit that outputs.

또한, 본 발명의 일 측면의 상기 체크 노드 연산 모듈은 상기 입력부가 입력받은 입력 신호에 대하여 토너먼트 형식으로 체크 노드 갱신 연산을 수행하는 구간에서는 민스타 연산 기법을 사용하여 출력 신호를 생성하는 제1 연산기; 및 상기 제1 연산기의 출력 신호에 대하여 역-토너먼트 형식으로 연산을 수행하는 구간에서는 최소합 기법을 사용하여 개별 출력 신호를 산출하는 제2 연산기를 포함한다.In addition, the check node calculation module according to one aspect of the present invention is a first operator generating an output signal by using a minstar calculation technique in a section in which the check node update calculation is performed in a tournament format with respect to the input signal received by the input unit. ; and a second operator calculating individual output signals by using a minimum sum technique in a section in which an operation is performed on the output signal of the first operator in an inverse-tournament format.

또한, 본 발명의 일 측면의 상기 제1 연산기는 복수개의 입력 정보를 두 개씩 묶어 각각 독립적인 연산을 수행하며, 출력이 2개가 남을 때까지 진행한다.In addition, the first calculator according to one aspect of the present invention binds a plurality of input information into two pieces, performs independent calculations, and proceeds until two outputs remain.

또한, 본 발명의 일 측면의 상기 제1 연산기는 민스타 연산을 아래 수학식 2와 3을 이용하여 수행하는 것을 특징으로 한다.In addition, the first operator of one aspect of the present invention is characterized in that it performs the minstar operation using Equations 2 and 3 below.

또한, 본 발명의 일 측면의 상기 제2 연산기는 최소합 연산을 아래 수학식 2와 4를 이용하여 수행하는 것을 특징으로 한다.In addition, the second operator of one aspect of the present invention is characterized in that it performs the minimum sum operation using Equations 2 and 4 below.

한편, 본 발명의 다른 측면은 (A) 입력부가 차수가 n(n은 양의 정수)인 입력 신호 를 입력받는 단계; (B) 체크 노드 연산 모듈이 민스타 연산 기법과 최소합 연산 기법을 사용하여 개별 출력 신호를 산출하는 단계; 및 (C) 출력부는 상기 산출된 개별 출력 신호의 집합인 출력 신호 를 출력하는 단계를 포함한다.On the other hand, another aspect of the present invention is (A) an input signal having an input unit of order n (n is a positive integer) Receiving an input; (B) calculating, by the check node calculation module, individual output signals using the minstar calculation method and the minimum sum calculation method; and (C) an output signal that is a set of the calculated individual output signals. It includes the step of outputting.

또한, 본 발명의 다른 측면의 상기 (B) 단계는 (B-1) 상기 체크 노드 연산 모듈이 상기 입력부가 입력받은 입력 신호에 대하여 토너먼트 형식으로 체크 노드 갱신 연산을 수행하는 구간에서는 민스타 연산 기법을 사용하여 출력 신호를 생성하는 단계; 및 (B-2) 상기 체크 노드 연산 모듈이 출력 신호에 대하여 역-토너먼트 형식으로 연산을 수행하는 구간에서는 최소합 기법을 사용하여 개별 출력 신호를 산출하는 단계를 포함한다.In addition, in the step (B) of another aspect of the present invention, (B-1) a minstar operation technique in a section in which the check node operation module performs a check node update operation in a tournament format with respect to the input signal received by the input unit. generating an output signal using and (B-2) calculating individual output signals by using a minimum sum technique in a section in which the check node calculation module performs calculations on output signals in an inverse-tournament format.

또한, 본 발명의 다른 측면의 상기 (B-1) 단계는 상기 체크 노드 연산 모듈이 복수개의 입력 정보를 두 개씩 묶어 각각 독립적인 연산을 수행하며, 출력이 2개가 남을 때까지 진행한다.Further, in the step (B-1) of another aspect of the present invention, the check node calculation module binds a plurality of input information into two pieces and performs independent calculations, and proceeds until two outputs remain.

또한, 본 발명의 다른 측면의 상기 (B-1) 단계의 상기 체크 노드 연산 모듈은 수학식 2와 3을 이용하여 민스타 연산을 수행한다.In addition, the check node calculation module in step (B-1) of another aspect of the present invention performs minstar calculation using Equations 2 and 3.

또한, 본 발명의 다른 측면의 상기 (B-2) 단계의 상기 체크 노드 연산 모듈은 수학식2와 4를 이용하여 최소합 연산을 수행한다.In addition, the check node calculation module in step (B-2) of another aspect of the present invention performs a minimum sum operation using Equations 2 and 4.

본 발명에 따르면, LDPC 코드의 하드웨어 구현 시 오류정정 성능 저하를 최소화하면서 소모되는 슬라이스 수를 줄일 수 있다.According to the present invention, it is possible to reduce the number of slices consumed while minimizing the degradation of error correction performance in hardware implementation of the LDPC code.

이를 위하여, 본 발명에서는 검사 노드 갱신 연산 과정의 트리 구조에서 초반 일부 구간에서는 민스타(min*) 연산 모듈을 사용하고, 후반 일부 구간에서는 최소합 연산 모듈을 혼합하여 활용하는 방법을 사용하였다. To this end, in the present invention, in the tree structure of the check node update operation process, a method of using a min star (min * ) operation module in some sections at the beginning and a minimum sum operation module in some sections in the second half is used.

그리고 이와 같은 방법을 사용했을 경우의 오류정정 결과 확인 및 합성 툴을 활용한 검증 과정을 거친 결과, 보다 효율적으로 소모되는 슬라이스 영역을 줄일 수 있음을 확인하였다. And as a result of checking the error correction result when using this method and verifying using a synthesis tool, it was confirmed that the slice area consumed more efficiently can be reduced.

도 1은 LDPC 코드의 복호화 과정을 하드웨어 구현 관점에서 표현한 상태도(state diagram)이다.
도 2는 LDPC 코드의 복호화 과정을 하드웨어 구현 관점에서 표현한 테너 그래프(tanner graph)이다.
도 3는 본 발명에서 입출력 차수가 8인 경우의 체크 노드 갱신 연산 트리 구조이다.
도 4은 구현된 본 발명의 LDPC 코드 하드웨어 구현 구조를 나타낸다.
도 5는 본 발명에서 제안된 체크 노드 갱신 연산 모듈의 트리 구조를 보여준다.
도 6은 본 발명의 일 실시예에 따른 LDPC 복호화기의 슬라이스 절감 장치의 구성도이다.
도 7은 본 발명의 일 실시예에 따른 LDPC 복호화기의 슬라이스 절감 방법의 흐름도이다.
도 8은 본 발명의 FPGA 합성 결과 소모된 슬라이스 수를 비교한 결과이다.
도 9는 본 발명 구현 시 적용된 체크 노드 연산 모듈 내부의 LUT 알고리즘을 의미한다.
도 10은 본 발명에서 제안된 체크 노드 연산 방식에 따른 BER 성능 곡선을 의미한다.
1 is a state diagram illustrating a decoding process of an LDPC code from a hardware implementation point of view.
2 is a tenor graph expressing a decoding process of an LDPC code from a hardware implementation point of view.
3 is a check node update computation tree structure in the case where the input/output order is 8 in the present invention.
Figure 4 shows the implemented LDPC code hardware implementation structure of the present invention.
5 shows a tree structure of the check node update operation module proposed in the present invention.
6 is a block diagram of a slice reduction device of an LDPC decoder according to an embodiment of the present invention.
7 is a flowchart of a slice reduction method of an LDPC decoder according to an embodiment of the present invention.
8 is a result of comparing the number of consumed slices as a result of FPGA synthesis according to the present invention.
Figure 9 means the LUT algorithm inside the check node calculation module applied in the implementation of the present invention.
10 means a BER performance curve according to the check node operation method proposed in the present invention.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 설명하기 위하여 이하에서는 본 발명의 바람직한 실시예를 예시하고 이를 참조하여 살펴본다.In order to explain the present invention and the operational advantages of the present invention and the objects achieved by the practice of the present invention, the following describes a preferred embodiment of the present invention and references it.

먼저, 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니며, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 또한 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.First, the terms used in this application are used only to describe specific embodiments, and are not intended to limit the present invention, and singular expressions may include plural expressions unless the context clearly dictates otherwise. In addition, in this application, terms such as "comprise" or "have" are intended to designate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other It should be understood that the presence or addition of features, numbers, steps, operations, components, parts, or combinations thereof is not precluded.

본 발명을 설명함에 있어서, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.In describing the present invention, if it is determined that a detailed description of a related known configuration or function may obscure the gist of the present invention, the detailed description will be omitted.

우선 LDPC 코드의 일반적인 복호화 과정은 다음과 같은 순서로 진행된다.First, the general decoding process of the LDPC code proceeds in the following order.

(1) 초기화(1) initialization

LDPC 코드의 일반적인 복호화 과정에서 초기화는 다음 수학식 1로 표현된다.Initialization in a general decoding process of an LDPC code is expressed by Equation 1 below.

(수학식 1)(Equation 1)

은 n번째 비트 노드 기준으로 에지(edge)로 연결된 인접 검사 노드 ki으로 전송되는 메시지를 의미하며, un은 N길이의 코드워드의 n번째 LLR(Log Likelihood Ratio) 값을 의미한다.여기서, 에지는 각 노드를 연결하는 선(line)을 의미한다. means a message transmitted to an adjacent check node k i connected by an edge based on the n-th bit node, and u n means the n-th LLR (Log Likelihood Ratio) value of an N-length codeword. Here, An edge means a line connecting each node.

(2) 검사 노드 갱신(2) Inspection node update

를 k번째 검사 노드에 연결된 dc개의 비트 노드로부터 들어오는 정보값이고, 를 k번째 검사 노드에서 dc개 인접한 비트 노드로 전송되는 정보값이라 할때, 아래 수학식 2와 같이 표현된다. Is the information value coming from d c bit nodes connected to the k-th check node, Assuming that is an information value transmitted from the k-th check node to d c adjacent bit nodes, it is expressed as in Equation 2 below.

(수학식 2)(Equation 2)

그리고, 여기에서 g( ) 함수는 민스타(min*) 연산을 기준으로 할 때 아래 수학식 3과 같고, 최소합 연산을 기준으로 할때 아래 수학식 4와 같다.And, here, the g( ) function is equal to Equation 3 below when based on the min star (min * ) operation, and equal to Equation 4 below when based on the minimum sum operation.

(수학식 3)(Equation 3)

(수학식 4)(Equation 4)

위 과정에서 검사 노드 갱신 연산 과정중 부분은 실제로 하드웨어 구현시에 제약 조건이 많다. 따라서 이 부분은 입력되는 정보인 a,b 값을 바탕으로 구성된 룩업 테이블(LUT)를 활용하여 구현된다.During the check node update operation process in the above process In fact, there are many constraints in hardware implementation. Therefore, this part is implemented using a look-up table (LUT) based on the values of a and b, which are input information.

(3) 비트 노드 갱신(3) Bit node update

를 n번째 비트 노드에 연결된 dv개의 검사 노드로부터 들어오는 정보값이고, 는 n번째 비트 노드에서 dv개 인접 검사 노드로 전송되는 정보값이라 할때 아래와 같이 비트 노드 갱신과정은 표현된다. is the information value coming from d v check nodes connected to the nth bit node, When is the information value transmitted from the n-th bit node to d v adjacent check nodes, the bit node update process is expressed as follows.

(수학식 5)(Equation 5)

즉, 비트 노드 갱신 후 정보 메시지를 보낼 한 개의 체크 노드를 제외한 dv-1개의 체크 노드에서 들어오는 정보 메시지와 채널 LLR 값을 더하는 과정이다.That is, it is a process of adding information messages received from d v -1 check nodes except for one check node to which an information message will be sent after updating the bit node and the channel LLR value.

(4) 경판정(hard decision) 과정(4) Hard decision process

모든 패리티 검사 방정식(parity check equation)이 경판정(hard decision) 조건식을 만족할 경우, 유효한 코드 워드(valid_codeword)가 복원된 것을 의미하며, 이후 복호화 과정을 종료한다.When all parity check equations satisfy the hard decision conditional expression, it means that a valid codeword (valid_codeword) is restored, and then the decoding process is terminated.

그리고 위에서 서술한 LDPC 코드의 복호화 과정을 하드웨어 구현 관점에서 표현한 상태도(state diagram) 및 테너 그래프(tanner graph)가 도 1과 2에 도시되어 있다.In addition, a state diagram and a tanner graph expressing the decoding process of the above-described LDPC code from a hardware implementation point of view are shown in FIGS. 1 and 2 .

도 1에서 bc_cnt라는 변수는 비트 노드(BN) 및 검사 노드(CN) 갱신 연산 과정을 컨트롤하는 카운터 역할을 수행하고, 이를 이용하여 반복적인 복호화 과정을 수행한다. In FIG. 1, a variable called bc_cnt serves as a counter to control the process of updating the bit node (BN) and check node (CN), and iteratively performs a decoding process using this variable.

이때 비트 노드 갱신 연산 모듈 부분에서는 단순히 덧셈, 뺄셈 연산만 이용하지만, 검사 노드 연산 모듈 부분에서는 민스타(min*), 최소합 연산(min), scaled, normalized 등 다양한 연산 기법이 적용될 수 있다. At this time, only addition and subtraction operations are used in the bit node update operation module part, but various operation techniques such as minstar (min*), minimum sum operation (min), scaled, and normalized can be applied to the check node operation module part.

다음으로, 도 2를 살펴보면, 임의의 검사 노드를 기준으로 입력되는 여러 정보들을 이용하여 연산을 수행하여, 이때 출력 정보는, 출력하고자 하는 방향으로부터 들어온 입력 정보를 제외한 나머지 정보들을 활용하여 계산한다. 도면에서 푸른선은 입력이며, 붉은 선은 출력이다.Next, referring to FIG. 2, calculation is performed using various information input based on an arbitrary inspection node, and at this time, the output information is calculated using the remaining information except for the input information received from the direction to be output. In the drawing, the blue line is the input and the red line is the output.

도 3은 체크 노드 연산 모듈의 입력 차수가 8인 경우의 체크 노드 갱신 연산 과정 트리 구조를 보여준다. 3 shows a tree structure of a check node update operation process when the input degree of the check node operation module is 8.

이를 살펴보면, 도입부부터 중간 과정까지는 토너먼트 형식으로 두 개 입력 값들을 묶어 병렬적으로 동시에 민스타(min*) 연산을 수행하게 된다. 그리고 이후 과정부터 마지막까지는 역-토너먼트 형식으로, 즉 입력 정보의 개수와 대응되도록 출력 정보를 생성하는 과정이다. (입력 정보의 차수가 8인 상황에서 체크 노드 갱신 연산 모듈 과정을 수행하는데 있어, 하드웨어 구현 관점에서 최소 4 단계 과정을 소모한다)Looking at this, from the introductory part to the middle part, two input values are tied together in a tournament format, and the min* operation is performed in parallel and at the same time. And from the subsequent process to the end, it is a process of generating output information in a reverse-tournament format, that is, corresponding to the number of input information. (In performing the check node update operation module process in a situation where the degree of input information is 8, at least 4 steps are consumed from the hardware implementation point of view)

이를 참조하면, 입력 신호는 8개의 개별 입력 신호의 집합인

Figure 112016071093528-pat00016
이고, 출력 신호는 8개의 개별 출력 신호의 집합인
Figure 112016071093528-pat00017
이다. Referring to this, the input signal is a set of eight individual input signals.
Figure 112016071093528-pat00016
, and the output signal is a set of eight individual output signals.
Figure 112016071093528-pat00017
am.

본 발명을 검증하는 과정에서 구현한 LDPC 코드의 FPGA 하드웨어 구조는 도 4와 같으며, DVB-S2X 방송표준에서 사용되는 LDPC 코드를 구현하였다. The FPGA hardware structure of the LDPC code implemented in the process of verifying the present invention is shown in FIG. 4, and the LDPC code used in the DVB-S2X broadcasting standard is implemented.

이 과정에서 구현된 코드워드 길이는 64,800 bits이고, 지원 가능한 부호율은 90/180, 135/180 이와 같이 두 가지를 통합적으로 지원 가능하며, 각 연산 모듈이 반복 복호 과정 중 차례로 360개 bits를 복호화하도록 부분 병렬화 구조로 설계하였다.The codeword length implemented in this process is 64,800 bits, and the supportable code rates are 90/180 and 135/180, which can be supported integrally, and each operation module decodes 360 bits in turn during the iterative decoding process. It was designed as a partial parallelization structure so that

도 3에서 살펴볼 수 있듯이, 임의의 체크 노드 갱신 연산 모듈을 기준으로 입출력 차수가 증가함에 따라 사용되는 민스타(min*) 연산기의 수는 크게 증가하게 된다. As can be seen in FIG. 3, as the input/output order increases based on an arbitrary check node update operation module, the number of min* operators used increases significantly.

또한 도 4에서 살펴볼 수 있듯이, 오류정정 부호의 FPGA 하드웨어 구현 시 처리율 향상을 위한 병렬 구조 설계 상황에서 병렬화 레벨에 비례하여 소모되는 슬라이스 자원 수가 크게 증가하게 된다.In addition, as can be seen in FIG. 4, the number of slice resources consumed in proportion to the parallelization level increases significantly in the design of a parallel structure for improving throughput when implementing an error correction code in FPGA hardware.

따라서 주어진 문제점을 해결하기 위하여 도 5와 같은 복호화 설계 구조를 제안한다. Therefore, in order to solve the given problem, a decryption design structure as shown in FIG. 5 is proposed.

한편, 도 4를 보면, 비트 노드 연산 모듈(10), 제1 로컬 메모리(20), 체크 노드 연산 모듈(30), 제2 로컬 메모리(40), 메모리 제어부(50) 및 주 제어부(60)를 포함한다.Meanwhile, referring to FIG. 4 , the bit node operation module 10, the first local memory 20, the check node operation module 30, the second local memory 40, the memory controller 50 and the main controller 60 includes

상기 비트 노드 연산 모듈(10)은 DVB-S2 표준에 근거한 패리티 검사 행렬 규칙에 따라 비트 노드를 각각의 그룹으로 묶은 모듈이다. 상기 비트 노드 연산 모듈(10)은 각기 비트 연산을 수행하는 다수개의 비트 노드 연산 모듈(11, 12,13, 14)이 병렬 연결된다.The bit node operation module 10 is a module in which bit nodes are grouped according to a parity check matrix rule based on the DVB-S2 standard. In the bit node operation module 10, a plurality of bit node operation modules 11, 12, 13, and 14 each performing bit operation are connected in parallel.

상기 제1 로컬 메모리(20)는 상기 비트 노드 연산 모듈(10)의 출력값을 저장하고, 또한 그 값들을 체크 노드 연산 모듈(30)로 제공한다. The first local memory 20 stores output values of the bit node calculation module 10 and provides the values to the check node calculation module 30 .

상기 제1 로컬 메모리(20)는 상기 다수의 비트 노드 연산 모듈(11, 12, 13,14)에 각기 대응하는 다수개의 로컬 메모리(21, 22, 23, 24)가 병렬 연결된다.In the first local memory 20, a plurality of local memories 21, 22, 23, and 24 respectively corresponding to the plurality of bit node calculation modules 11, 12, 13, and 14 are connected in parallel.

상기 체크 노드 연산 모듈(30)은 체크 노드를 DVB-S2 표준에 근거한 패리티 검사 행렬 규칙에 따라 각각의 그룹으로 묶은 모듈이다. The check node calculation module 30 is a module that groups check nodes according to parity check matrix rules based on the DVB-S2 standard.

상기 체크 노드 연산 모듈(30)은 다수개의 체크 노드 연산 모듈(31, 32, 33, 34)이 병렬 연결된다.In the check node calculation module 30, a plurality of check node calculation modules 31, 32, 33, and 34 are connected in parallel.

상기 제2 로컬 메모리(40)는 상기 체크 노드 연산 모듈(30)의 출력값을 저장하고, 또한 그 값들을 비트 노드 연산 모듈(10)로 제공한다. The second local memory 40 stores output values of the check node calculation module 30 and provides the values to the bit node calculation module 10 .

상기 제2 로컬 메모리(40)는 상기 다수의 체크 노드 연산 모듈(31, 32, 33, 34)에 각기 대응하는 다수개의 로컬 메모리(41, 42, 43, 44)가 병렬 연결된다.In the second local memory 40, a plurality of local memories 41, 42, 43, and 44 respectively corresponding to the plurality of check node calculation modules 31, 32, 33, and 34 are connected in parallel.

상기 메모리 제어부(50)는 상기 비트 노드 연산 모듈(10) 및 체크 노드 연산 모듈(30)의 출력값을 저장할 메모리의 주소를 알려 주고, 상기 비트 노드 연산 모듈(10) 및 체크 노드 연산 모듈(30)에 입력으로 제공할 값의 메모리 주소를 알려 준다.The memory control unit 50 informs addresses of memory to store the output values of the bit node operation module 10 and the check node operation module 30, and the bit node operation module 10 and the check node operation module 30 tells the memory address of the value to be provided as input.

한편, 미도시된 채널 LLR 메모리는 채널 LLR(Log Likelihood Ratio) 값들을 저장해 놓은 메모리로서, 비트 노드 연산에 사용할 채널 LLR 값을 해당 비트 노드 연산 모듈(10)에 입력한다.Meanwhile, an unshown channel LLR memory is a memory in which channel LLR (Log Likelihood Ratio) values are stored, and channel LLR values to be used for bit node calculation are input to the corresponding bit node calculation module 10 .

상기 주 제어부(60)는 상기 구성 요소들(10 ~ 50)의 전반적인 동작을 제어하여 반복 복호(iteration decoding) 동작을 수행한다.The main controller 60 controls the overall operation of the components 10 to 50 to perform an iterative decoding operation.

즉, 도 4에서 상기 주 제어부(60)는 상기 제2 로컬 메모리(40)와 채널 LLR 메모리를 제어하여 비트 노드 연산 모듈(10)의 입력값을 제어한다. 그리고 상기 비트 노드 연산 모듈(10)의 입력값을 이용하여 비트 노드 연산을 수행하고, 상기 비트 노드 연산 모듈(10)의 연산 결과값을 제1 로컬 메모리(20)에 저장한다. 그리고 상기 제1 로컬 메모리(20)에 저장한 값을 체크 노드 연산 모듈(30)의 입력값으로 사용하여 상기 체크 노드 연산 모듈(30)에서 체크 노드 연산을 수행하고, 상기 체크 노드 연산 모듈(30)의 결과값을 제2 로컬 메모리(40)에 저장한다.That is, in FIG. 4 , the main controller 60 controls the input value of the bit node calculation module 10 by controlling the second local memory 40 and the channel LLR memory. The bit node operation is performed using the input value of the bit node operation module 10 , and the operation result value of the bit node operation module 10 is stored in the first local memory 20 . Then, the value stored in the first local memory 20 is used as an input value of the check node calculation module 30 to perform a check node calculation in the check node calculation module 30, and the check node calculation module 30 ) is stored in the second local memory 40.

상기에서 복호 동작을 수행할 때, 상기 주 제어부(60)는 상기 구성 요소들(10 ~ 50)을 선택적으로 제어한다. 예컨대 상기 비트 노드 연산 모듈(10)에 입력값을 입력하는 동안에는 상기 비트 노드 연산 모듈(10) 및 체크 노드 연산 모듈(30)에서 연산 동작이 수행되지 않도록 제어하는 것이다.When performing the decoding operation in the above, the main controller 60 selectively controls the components 10 to 50. For example, the bit node calculation module 10 and the check node calculation module 30 are controlled not to perform calculation operations while an input value is input to the bit node calculation module 10 .

다시 말해, 상기 주 제어부(60)는 메모리 제어부(50)를 통해 상기 제2 로컬 메모리(40)에 저장된 비트 노드 연산 모듈(10)의 입력값과 상기 채널 LLR 메모리에 저장된 채널 LLR 값을 제어하여 상기 비트 노드 연산 모듈(10)에 입력한다. In other words, the main controller 60 controls the input value of the bit node operation module 10 stored in the second local memory 40 and the channel LLR value stored in the channel LLR memory through the memory controller 50 to input to the bit node calculation module 10.

상기 입력값을 바탕으로 각각의 비트 노드 연산 모듈(10)은 비트 노드 연산을 수행한 후 연산의 결과 값을 제1 로컬 메모리(20)에 저장한다.Based on the input value, each bit node calculation module 10 performs bit node calculation and then stores the resultant value of the operation in the first local memory 20 .

그리고 상기 제1 로컬 메모리(20)에 저장된 값들은 상기 메모리 제어부(50)의 제어에 따라 체크 노드 연산 모듈(30)에 입력된다.The values stored in the first local memory 20 are input to the check node calculation module 30 under the control of the memory controller 50 .

상기 입력값을 바탕으로 각각의 체크 노드 연산 모듈(30)은 체크 노드 연산을 수행하여 그 연산의 결과 값을 제2 로컬 메모리(40)에 저장한다. 이로써 한 번의 반복(iteration) 과정이 종료된다. 그 이후에 상술한 바와 같은 과정을 계속 반복하며 복호를 진행한다.Based on the input value, each check node calculation module 30 performs a check node calculation and stores the result of the calculation in the second local memory 40 . This completes one iteration process. After that, the above-described process is continuously repeated to proceed with decoding.

도 5는 본 발명의 검증 과정을 위해 실제로 구현된, DVB-S2X 표준 기반 LDPC 코드에서 최대 차수가 16인 경우의 체크 노드 갱신 연산 트리 구조를 나타낸다. 5 shows a check node update operation tree structure when the maximum order is 16 in the DVB-S2X standard based LDPC code, which is actually implemented for the verification process of the present invention.

이를 살펴보면 토너먼트 형식으로 체크 노드 갱신 연산을 수행하는 구간에서는 민스타(min*) 기법을 사용하고, 이후 역-토너먼트 형식으로 연산을 수행하는 구간에서는 최소합 기법을 사용하였다. Looking at this, the minstar (min * ) technique was used in the section where the check node update operation was performed in a tournament format, and the least sum technique was used in the section where the operation was performed in an inverse-tournament format.

이와 같은 기법을 사용함으로써 민스타(min*) 연산 기법에 포함되어 있던 LUT 부분을 절반으로 줄일 수 있기 때문에 소모되는 슬라이스 수를 크게 줄일 수 있다. By using such a technique, the number of consumed slices can be greatly reduced because the LUT part included in the min * operation technique can be reduced by half.

도 6은 본 발명의 일 실시예에 따른 LDPC 복호화기의 슬라이스 절감 장치의 구성도이다.6 is a block diagram of a slice reduction device of an LDPC decoder according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일 실시예에 따른 LDPC 복호화기의 슬라이스 절감 장치는 입력부(100), 체크 노드 연산 모듈(200) 및 출력부(300)를 포함한다.Referring to FIG. 6 , an apparatus for reducing a slice of an LDPC decoder according to an embodiment of the present invention includes an input unit 100 , a check node calculation module 200 and an output unit 300 .

상기 체크 노드 연산 모듈(200)은 제1 연산기(210)와 제2 연산기(220)로 구성되어 있다.The check node calculation module 200 is composed of a first calculator 210 and a second calculator 220 .

도 7은 본 발명의 일 실시예에 따른 LDPC 복호화기의 슬라이스 절감 방법의 흐름도이다.7 is a flowchart of a slice reduction method of an LDPC decoder according to an embodiment of the present invention.

도 6과 도 7을 참조하면, 입력부(100)는 입력 차수가 n일때

Figure 112016071093528-pat00018
의 입력신호를 입력받는다(S100). 6 and 7, the input unit 100 when the input order is n
Figure 112016071093528-pat00018
The input signal of is received (S100).

입력 신호는 n 개의 개별 입력 신호의 집합이며, 일반적으로 패리티 검사 행렬로 표현될 수 있다. n은 양의 정수로써, 최대 차수 이하의 임의의 값을 가질 수 있다. 따라서 다양한 차수의 입력 신호를 처리하기 위하여 각각의 복호화 방법을 요구하지 않고, 하나의 복호화 방법을 통하여 본 발명의 실시예들에서 한번에 처리가 가능하다.The input signal is a set of n individual input signals, and can generally be expressed as a parity check matrix. n is a positive integer and may have any value less than or equal to the maximum order. Therefore, in the embodiments of the present invention, it is possible to process input signals of various orders at once through one decoding method without requiring separate decoding methods.

그리고, 체크 노드 연산 모듈(200)은 입력 신호의 입력 차수를 기반으로 트리 구조를 이용하여 제1 연산기(210)와 제2 연산기(220)를 배치한다.Then, the check node operation module 200 arranges the first operator 210 and the second operator 220 using a tree structure based on the input order of the input signal.

상기 체크 노드 연산 모듈(200)은 트리 구조 연산 과정의 특성에 의해 복수개의 입력 정보를 두 개씩 묶어 각각 독립적인 연산을 수행하게 되는데, 제1 연산기(210)를 이용하여 토너먼드 형식의 병렬적 계산을 반복하는 구간에서는 민스타(min*) 기법을 사용하며, 제1 연산기(210)의 출력이 2개가 남을 때까지 진행한다(S110). 이때, 제1 연산기(210)에서는 수학식3을 사용하여 연산을 수행한다.The check node calculation module 200 performs independent calculations by grouping a plurality of input information into two pieces due to the nature of the tree structure calculation process. In the section where is repeated, the min star (min * ) technique is used, and the operation proceeds until two outputs of the first operator 210 remain (S110). At this time, the first operator 210 performs an operation using Equation 3.

그리고, 체크 노드 연산 모듈(200)은 제2 연산기(220)을 사용하여 역-토너먼트 형식으로 병렬적 계산을 반복하는 구간에서는 최소합 기법을 사용하며, 체크 노드 갱신 연산의 종료 시점까지 진행한다(S120). 이때, 제2 연산기(220)는 수학식 4를 사용하여 연산을 수행한다.In addition, the check node calculation module 200 uses the least sum technique in the section where parallel calculation is repeated in the form of an inverse-tournament using the second calculator 220, and proceeds until the end of the check node update operation ( S120). At this time, the second operator 220 performs an operation using Equation 4.

상기 출력부(300)는 산출된 개별 출력 신호의 집합인 출력 신호

Figure 112016071093528-pat00019
를 출력한다(S130). 입력 신호의 차수에 따라 출력 신호의 개별 출력 신호의 개수도 결정된다. 즉, n차수의 입력 신호는 n개의 개별 입력 신호의 집합이고, 출력 신호 역시 n개의 개별 출력 신호의 집합이 된다. 복호화 방법에 따른 입력 및 출력 과정은 본실시예의 구현 환경에 따라 다양하게 구현될 수 있는 것으로, 여기서는 구체적인 설명을 생략한다.The output unit 300 is an output signal that is a set of calculated individual output signals.
Figure 112016071093528-pat00019
Outputs (S130). The number of individual output signals of the output signal is also determined according to the order of the input signal. That is, an input signal of order n is a set of n individual input signals, and an output signal is also a set of n individual output signals. Input and output processes according to the decoding method can be implemented in various ways according to the implementation environment of the present embodiment, and detailed descriptions are omitted here.

한편, 본 실시예에 따른 LDPC 복호화기의 슬라이스 절감 장치 및 그 방법의 체크 노드 연산 모듈(200)은 도 4의 상기 체크 노드 연산 모듈(130)에 적용된다. Meanwhile, the check node calculation module 200 of the apparatus and method for slice reduction of the LDPC decoder according to the present embodiment is applied to the check node calculation module 130 of FIG. 4 .

한편, 합성 툴(Xilinx ISE tool, vertex 7 기준)을 활용한 FPGA 합성 결과는 도 8과 같다. On the other hand, the result of FPGA synthesis using the synthesis tool (Xilinx ISE tool, based on vertex 7) is shown in FIG.

이를 살펴보면 기존 민스타(min*) 연산 모듈만 이용하여 구현한 경우의 소모 슬라이스 수는 약 91529.25 slices 이고, 제안된 방법을 사용하여 구현한 경우의 소모 슬라이스 수는 약 58793 slices 이다. 즉 제안된 방식을 사용할 경우 약 36%의 소모 슬라이스 수를 줄일 수 있음을 확인하였다. Looking at this, the number of consumed slices when implemented using only the existing minstar (min * ) operation module is about 91529.25 slices, and the number of consumed slices when implemented using the proposed method is about 58793 slices. That is, it was confirmed that the number of consumed slices can be reduced by about 36% when using the proposed method.

또한 시뮬레이션 결과 오류정정 측면에서 살펴볼 때도 크게 성능 저하가 발생하지 않음을 확인할 수 있었다. 본래 반복적인 민스타(min*) 연산이 수행됨에 따라 체크 노드 업데이트 연산 모듈의 두 가지 입력 정보의 차이는 최종적으로 점점 0에 가까운 수로 수렴하게 된다. In addition, it was confirmed that there was no significant performance degradation when looking at the error correction aspect of the simulation results. Originally, as the iterative min star (min * ) operation is performed, the difference between the two input information of the check node update operation module finally converges to a number closer to 0.

따라서 이에 따라 연산 모듈의 두 입력 값을 이용한 최소값 및 절대값 차이를 기반으로 얻은 LUT 출력 값은 또한 0으로 수렴하게 된다. (도 9에 구현된 LUT 알고리즘 참조) 따라서 체크 노드 갱신 전반부에 적용된 민스타(min*) 과정을 통해 확률적으로 체크 노드 연산 모듈의 전체 입력 값에 대응되는 최소 값이 얻어질 가능성이 확률적으로 높으며, 그 이후 과정은 최소합 연산 기법을 활용해도 그리 성능 저하가 발생하지 않는다. 시뮬레이션 과정을 통해 얻은 BER 성능 곡선 결과는 도 8과 같다.Accordingly, the LUT output value obtained based on the difference between the minimum value and the absolute value using the two input values of the calculation module also converges to 0. (Refer to the LUT algorithm implemented in FIG. 9) Therefore, through the min star (min * ) process applied to the first half of the check node update, it is probabilistically possible that the minimum value corresponding to all input values of the check node calculation module is obtained. It is high, and thereafter, even if the least sum operation technique is used, performance degradation does not occur. The BER performance curve results obtained through the simulation process are shown in FIG. 8 .

도 10의 파란색 곡선은 민스타(min*) 연산 모듈을 활용한 SPA 방식을 의미하고, 빨간색 곡선은 최소합 연산 모듈을 활용한 MSA 방식을 의미한다. The blue curve in FIG. 10 means the SPA method using the min star (min * ) calculation module, and the red curve means the MSA method using the minimum sum calculation module.

그리고 가운데 초록색 곡선은 본 발명에서 제안된 민스타(min*) 연산과 최소합 연산을 혼합하여 복화하는 기법의 BER 성능 곡선 그래프를 의미한다.And the green curve in the middle means the BER performance curve graph of the method of compounding by mixing the min star (min * ) operation and the minimum sum operation proposed in the present invention.

본 발명에 따르면, LDPC 코드의 하드웨어 구현 시 오류정정 성능 저하를 최소화하면서 소모되는 슬라이스 수를 줄일 수 있다.According to the present invention, it is possible to reduce the number of slices consumed while minimizing the degradation of error correction performance in hardware implementation of the LDPC code.

이를 위하여, 본 발명에서는 검사 노드 갱신 연산 과정의 트리 구조에서 초반 일부 구간에서는 민스타(min*) 연산 모듈을 사용하고, 후반 일부 구간에서는 최소합 연산 모듈을 혼합하여 활용하는 방법을 사용하였다. To this end, in the present invention, in the tree structure of the check node update operation process, a method of using a min star (min * ) operation module in some sections at the beginning and a minimum sum operation module in some sections in the second half is used.

그리고 이와 같은 방법을 사용했을 경우의 오류정정 결과 확인 및 합성 툴을 활용한 검증 과정을 거친 결과, 보다 효율적으로 소모되는 슬라이스 영역을 줄일 수 있음을 확인하였다. And as a result of checking the error correction result when using this method and verifying using a synthesis tool, it was confirmed that the slice area consumed more efficiently can be reduced.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서 본 발명에 기재된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상이 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의해서 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely an example of the technical idea of the present invention, and various modifications and variations can be made to those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments described in the present invention are not intended to limit the technical spirit of the present invention, but to explain, and the technical spirit of the present invention is not limited by these embodiments. The protection scope of the present invention should be construed by the following claims, and all technical ideas within the equivalent range should be construed as being included in the scope of the present invention.

10, 11, 12, 13, 14 : 비트 노드 연산 모듈
20, 21, 22, 23, 24 : 제1 로컬 메모리
30, 31, 32, 33, 34 : 체크 노드 연산 모듈
40, 41, 42, 43, 44 : 제2 로컬 메모리
50, 51, 52 : 메모리 제어부
60 : 주 제어부
100 : 입력부
200 : 체크 노드 연산 모듈
300 : 출력부
10, 11, 12, 13, 14: bit node calculation module
20, 21, 22, 23, 24: first local memory
30, 31, 32, 33, 34: check node calculation module
40, 41, 42, 43, 44: second local memory
50, 51, 52: memory control unit
60: main control unit
100: input unit
200: check node calculation module
300: output unit

Claims (10)

차수가 n(n은 양의 정수)인 입력 신호 를 입력받는 입력부;
상기 입력부가 입력받은 입력 신호에 대하여 민스타 연산 기법과 최소합 연산 기법을 사용하여 개별 출력 신호를 산출하는 체크 노드 연산 모듈; 및
상기 체크 노드 연산 모듈에서 산출된 개별 출력 신호의 집합인 출력 신호 를 출력하는 출력부를 포함하고,
상기 체크 노드 연산 모듈은, 토너먼트 형식으로 체크 노드 갱신 연산을 수행하는 구간에서는 민스타 연산 기법을 사용하여 출력 신호를 생성하는 제1 연산기; 및
역-토너먼트 형식으로 연산을 수행하는 구간에서는 최소합 기법을 사용하여 개별 출력 신호를 산출하는 제2 연산기를 포함하고,
상기 제1 연산기는,
를 k번째 검사 노드에 연결된 dc개의 비트 노드로부터 들어오는 정보값이고, 를 k번째 검사 노드에서 dc개 인접한 비트 노드로 전송되는 정보값이라 할때, 아래 수학식 2와 같이 표현되는 연산을 수행하며,
(수학식 2)

여기에서 g( ) 함수는 민스타 연산을 기준으로 할 때 아래 수학식 3과 같으며, a와 b는 입력 신호이고,
(수학식 3)

상기 제2 연산기는,
를 k번째 검사 노드에 연결된 dc개의 비트 노드로부터 들어오는 정보값이고, 를 k번째 검사 노드에서 dc개 인접한 비트 노드로 전송되는 정보값이라 할때, 상기 수학식 2와 같이 표현되는 연산을 수행하며,
상기 제2 연산기에서 g( ) 함수는 최소합 연산을 기준으로 할 때 아래 수학식 4와 같으며,
(수학식 4)

여기서, a와 b는 입력 신호인, LDPC 복호화기의 슬라이스 절감 장치.
Input signal of order n, where n is a positive integer an input unit that receives input;
a check node calculation module for calculating an individual output signal using a minstar calculation method and a minimum sum calculation method with respect to the input signal received by the input unit; and
An output signal that is a set of individual output signals calculated by the check node calculation module. Including an output unit that outputs,
The check node calculation module may include: a first operator generating an output signal by using a minstar calculation technique in a section in which a check node update calculation is performed in a tournament format; and
A second operator calculating an individual output signal using a least sum technique in a section in which an operation is performed in an inverse-tournament format is included;
The first operator,
Is the information value coming from d c bit nodes connected to the k-th check node, Assuming that is an information value transmitted from the k-th check node to d c adjacent bit nodes, the operation expressed by Equation 2 below is performed,
(Equation 2)

Here, the g( ) function is as shown in Equation 3 below based on the minstar operation, a and b are input signals,
(Equation 3)

The second operator,
Is the information value coming from d c bit nodes connected to the k-th check node, Assuming that is an information value transmitted from the k-th check node to d c adjacent bit nodes, the operation expressed as in Equation 2 is performed,
In the second operator, the g( ) function is as shown in Equation 4 below based on the minimum sum operation,
(Equation 4)

Here, a and b are input signals, a slice reduction device of an LDPC decoder.
청구항 1항에 있어서,
상기 입력 신호 a와 b에 대한 의 값은 룩업 테이블을 이용하는 LDPC 복호화기의 슬라이스 절감 장치.
The method of claim 1,
for the input signals a and b The value of is a slice reduction device of the LDPC decoder using a lookup table.
청구항 1항에 있어서,
상기 제1 연산기는 복수개의 입력 정보를 두 개씩 묶어 각각 독립적인 연산을 수행하며, 출력이 2개가 남을 때까지 진행하는 LDPC 복호화기의 슬라이스 절감 장치.
The method of claim 1,
The slice saving device of the LDPC decoder, wherein the first operator performs independent operations by grouping a plurality of input information into two pieces, and proceeds until two outputs remain.
삭제delete 삭제delete (A) 입력부가 차수가 n(n은 양의 정수)인 입력 신호 를 입력받는 단계;
(B) 체크 노드 연산 모듈이 민스타 연산 기법과 최소합 연산 기법을 사용하여 개별 출력 신호를 산출하는 단계; 및
(C) 출력부는 상기 산출된 개별 출력 신호의 집합인 출력 신호 를 출력하는 단계를 포함하고,
상기 (B) 단계는
(B-1) 상기 체크 노드 연산 모듈이, 토너먼트 형식으로 체크 노드 갱신 연산을 수행하는 구간에서는 민스타 연산 기법을 사용하여 출력 신호를 생성하는 단계; 및
(B-2) 상기 체크 노드 연산 모듈이, 역-토너먼트 형식으로 연산을 수행하는 구간에서는 최소합 기법을 사용하여 개별 출력 신호를 산출하는 단계를 포함하고,
상기 (B-1) 단계의 상기 체크 노드 연산 모듈은 를 k번째 검사 노드에 연결된 dc개의 비트 노드로부터 들어오는 정보값이고, 를 k번째 검사 노드에서 dc개 인접한 비트 노드로 전송되는 정보값이라 할때, 아래 수학식 2와 같이 표현되는 연산을 수행하며,
(수학식 2)

여기에서 g( ) 함수는 민스타 연산을 기준으로 할 때 아래 수학식 3과 같으며, a와 b는 입력 신호이고,
(수학식 3)

상기 (B-2) 단계의 상기 체크 노드 연산 모듈은 를 k번째 검사 노드에 연결된 dc개의 비트 노드로부터 들어오는 정보값이고, 를 k번째 검사 노드에서 dc개 인접한 비트 노드로 전송되는 정보값이라 할때, 상기 수학식 2와 같이 표현되는 연산을 수행하며,
상기 (B-2) 단계에서 g( ) 함수는 최소합 연산을 기준으로 할 때 아래 수학식 4와 같으며,
(수학식 4)

여기서, a와 b는 입력 신호인, LDPC 복호화기의 슬라이스 절감 방법.
(A) An input signal whose degree is n (n is a positive integer) Receiving an input;
(B) calculating, by the check node calculation module, individual output signals using the minstar calculation method and the minimum sum calculation method; and
(C) The output unit is an output signal that is a set of the calculated individual output signals. Including the step of outputting,
The step (B) is
(B-1) generating an output signal by using a minstar calculation technique in a section in which the check node calculation module performs a check node update calculation in a tournament format; and
(B-2) calculating, by the check node calculation module, an individual output signal using a least sum technique in a section in which calculation is performed in an inverse-tournament format;
The check node calculation module in step (B-1) Is the information value coming from d c bit nodes connected to the k-th check node, Assuming that is an information value transmitted from the k-th check node to d c adjacent bit nodes, the operation expressed by Equation 2 below is performed,
(Equation 2)

Here, the g( ) function is as shown in Equation 3 below based on the minstar operation, a and b are input signals,
(Equation 3)

The check node calculation module in step (B-2) Is the information value coming from d c bit nodes connected to the k-th check node, Assuming that is an information value transmitted from the k-th check node to d c adjacent bit nodes, the operation expressed as in Equation 2 is performed,
In the step (B-2), the g( ) function is as shown in Equation 4 below based on the minimum sum operation,
(Equation 4)

Here, a and b are input signals, a slice reduction method of an LDPC decoder.
청구항 6항에 있어서,
상기 입력 신호 a와 b에 대한 의 값은 룩업 테이블을 이용하는 LDPC 복호화기의 슬라이스 절감 방법.
The method of claim 6,
for the input signals a and b The value of is a slice reduction method of an LDPC decoder using a lookup table.
청구항 6항에 있어서,
상기 (B-1) 단계는 상기 체크 노드 연산 모듈이 복수개의 입력 정보를 두 개씩 묶어 각각 독립적인 연산을 수행하며, 출력이 2개가 남을 때까지 진행하는 LDPC 복호화기의 슬라이스 절감 방법.
The method of claim 6,
In the step (B-1), the check node calculation module bundles a plurality of input information into two pieces, performs independent calculations, and proceeds until two outputs remain.
삭제delete 삭제delete
KR1020160092788A 2016-07-21 2016-07-21 Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder KR102569488B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160092788A KR102569488B1 (en) 2016-07-21 2016-07-21 Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160092788A KR102569488B1 (en) 2016-07-21 2016-07-21 Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder

Publications (2)

Publication Number Publication Date
KR20180010535A KR20180010535A (en) 2018-01-31
KR102569488B1 true KR102569488B1 (en) 2023-08-22

Family

ID=61082954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160092788A KR102569488B1 (en) 2016-07-21 2016-07-21 Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder

Country Status (1)

Country Link
KR (1) KR102569488B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101584669B1 (en) * 2014-07-16 2016-01-13 에이피우주항공 주식회사 Complexity reduction method for parallel operations of error correction decoder in wireless communications and apparatus thereof

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101698875B1 (en) * 2013-03-14 2017-01-24 한국전자통신연구원 Apparatus and method for decoding of ldpc code

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101584669B1 (en) * 2014-07-16 2016-01-13 에이피우주항공 주식회사 Complexity reduction method for parallel operations of error correction decoder in wireless communications and apparatus thereof

Also Published As

Publication number Publication date
KR20180010535A (en) 2018-01-31

Similar Documents

Publication Publication Date Title
USRE49225E1 (en) Structured low-density parity-check (LDPC) code
US8010869B2 (en) Method and device for controlling the decoding of a LDPC encoded codeword, in particular for DVB-S2 LDPC encoded codewords
JP5506878B2 (en) Parity check matrix generation method for low density parity check code
US8601352B1 (en) Efficient LDPC codes
WO2017080249A1 (en) Method of generating low-density parity-check code transmitted over channel and apparatus utilizing same
KR20080099191A (en) Operational parameter adaptable ldpc(low density parity check) decoder
Huang et al. Performance comparison of LDPC block and spatially coupled codes over GF $(q) $
Elkelesh et al. Improving belief propagation decoding of polar codes using scattered EXIT charts
Lacruz et al. A 630 Mbps non-binary LDPC decoder for FPGA
Jerkovits et al. Improving the decoding threshold of tailbiting spatially coupled LDPC codes by energy shaping
EP2991231A1 (en) Multilevel encoding and multistage decoding
KR101657912B1 (en) Method of Decoding Non-Binary Low Density Parity Check Codes
Schmalen et al. On the design of capacity-approaching unit-memory spatially coupled LDPC codes for optical communications
Abu-Surra et al. Low-power dual quantization-domain decoding for LDPC codes
KR102569488B1 (en) Mixed construction apparatus and method of min* and min operator to reduce the number of slices used in implementation of LDPC codes decoder
Thameur et al. A survey on decoding schedules of LDPC convolutional codes and associated hardware architectures
Kakde et al. VLSI implementation of a rate decoder for structural LDPC channel codes
Ul Hassan et al. Reduced complexity window decoding schedules for coupled LDPC codes
Chen et al. Polar decoding with schedule diversity based on LDPC-like sparse graphs
EP3591844B1 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes
Kakde et al. FPGA implementation of decoder architectures for high throughput irregular LDPC codes
Dhanorkar et al. Design of LDPC decoder using message passing algorithm
Kim Improved trellis-based decoder for non-binary LDPC codes
KR101584669B1 (en) Complexity reduction method for parallel operations of error correction decoder in wireless communications and apparatus thereof
Zhu et al. Polar codes with local-global decoding

Legal Events

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