KR20090040225A - 복호장치, 복호방법 및 프로그램 - Google Patents

복호장치, 복호방법 및 프로그램 Download PDF

Info

Publication number
KR20090040225A
KR20090040225A KR1020080101735A KR20080101735A KR20090040225A KR 20090040225 A KR20090040225 A KR 20090040225A KR 1020080101735 A KR1020080101735 A KR 1020080101735A KR 20080101735 A KR20080101735 A KR 20080101735A KR 20090040225 A KR20090040225 A KR 20090040225A
Authority
KR
South Korea
Prior art keywords
matrix
unit
message
decoding
shift
Prior art date
Application number
KR1020080101735A
Other languages
English (en)
Inventor
타카시 요코카와
Original Assignee
소니 가부시끼 가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20090040225A publication Critical patent/KR20090040225A/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
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • 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
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1165QC-LDPC codes as defined for the digital video broadcasting [DVB] specifications, e.g. DVB-Satellite [DVB-S2]
    • 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
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

부호(F)가 정수 P의 1 이외의 약수(non-unity measure)를 나타낼 때, 수신값(received value)을 복호하고 F개의 메시지를 출력하는 처리를 수행하도록 구성된 메시지 연산부(message computation section)와, F개의 메시지에 F×F 사이클릭 시프트 연산(cyclic shift operation)을 수행하고 F개의 메시지를 출력하도록 구성된 시프트부(shift section)와, F개의 메시지를 저장하고 저장된 F개의 메시지가 독출되거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하도록 하며 저장된 F 개의 수신값이 독출되게 하도록 구성된 저장부(storage section)와, 수신값에 적어도 열 재배열 처리(column rearrangement process) 또는 열 재배열 처리와 동등한 처리를 수행함으로써 F 개의 수신값으로 구성된 단위(unit)를 메시지 연산부에 공급하는 동작을 제어하도록 구성된 제어부(control section) 포함하여 구성된 LDPC 코드를 복호하기 위한 복호장치가 개시된다.

Description

복호장치, 복호방법 및 프로그램{Decoding apparatus, decoding method and program}
본 발명은 2007년 10월 19일 일본 특허청에 출원된 일본특허문헌 JP 2007-272519호에 관련된 주제와, 참조로서 여기에 포함된 모든 내용을 포함한다.
본 발명은 복호장치, 복호방법 및 프로그램에 관한 것이다. 더 상세하게는, 본 발명은 서로 다른 구조를 가지는 복수의 LDPC(Low Density Parity Check) 부호의 복호가 가능하고 작은 회로 규모를 가지는 복호장치에 관한 것이다. 본 발명은 또한 상기 복호장치에 적용되는 복호방법 및 그 방법을 수행하는 프로그램에 관한 것이다.
통신 시스템에 있어서는, 잡음이 있는 통신채널을 통하여 신뢰성 있는 통신을 수행하기 위하여 코딩(coding) 기술을 적용한다. 예를 들면, 위성 네트워크와 같은 무선 시스템(wireless system)(또는 무선(radio) 시스템)에서는, 지리적 및 환경적 요인으로 인해 많은 잡음원(noise source)이 존재한다. 각각의 통신채널은 고정된 용량을 가지는 채널인 것으로 간주될 수 있고, 특정 신호대 잡음비(SNR, Signal to Noise Ratio)에 있어서의 심볼당 비트 수를 나타낼 수 있고 일 명 섀넌 리미트(Shannon limit)로 알려진 이론적 상한을 규정할 수 있는 채널인 것으로 간주될 수 있다. 이러한 이유로, 코딩 설계는 이 섀넌 리미트에 가까워지는 레이트(rate)를 달성하는 것을 목적으로 하고 있다. 이러한 목적은, 제한된 대역폭(limited-bandwidth)의 위성 시스템과 특히 밀접한 관계가 있다.
최근에는, 섀넌 리미트에 가까운 성능을 각각 나타내는 코딩방법이 개발되어 왔다. 각각의 코딩방법은 또한 병렬 연접 컨벌루션 부호(PCCCs ; Parallel Concatenated Convolutional Codes) 및 종렬 연접 컨벌루션 부호(SCCCs ; Serially Concatenated Convolutional Codes)와 같은 터보 코드(turbo codes)에 근거한 코딩처리에 적용되는 소위 터보 코딩 기술(turbo coding technique)이라 불린다. 이러한 터보 코드가 개발되는 동시에, 저밀도 패리티 검사 코드(LDPC code ; Low Density Parity Check codes)가 많은 주목을 받고 있다. LDPC 코드는 종래부터 알려진 코딩방법에 사용되는 코드이다.
LDPC 코드는 R. G. Gallager에 의해 "Low Density Parity Check Codes", Cambridge, Massachusetts: MIT Press, 1963에 최초로 제안되었다. 그 후, LDPC 코드는 D. J. C. MacKay, "Good error correcting codes based on very parse matrices", Submitted to IEEE Trans. Inf. Theory, IT-45, pp.399-431, 1999 및 M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi and D. A. Spielman, "Analysis of low density codes and improved designs using irregular graphs", in Proceedings of ACM Symposium on Theory of Computing, pp.249-258, 1998 에 개시된 바와 같이 다시 주목받게 되었다.
근년의 연구결과들은, LDPC 코드의 경우, 터보 부호와 같은 방식으로 부호 길이를 증가시킴으로써, 섀넌 리미트에 가까운 성능을 나타낼 수 있다는 것을 나타내고 있다. 또, LDPC 코드는 최소 거리(minimum distance)가 코드 길이에 비례한다고 하는 특성을 가진다. 따라서 LDPC 코드는 블록에러 확률특성(block error possibility characteristic)이 좋고 소위 에러 플로어 현상(error floor phenomenon)의 발생이 거의 없다는 장점을 제공한다는 특징이 있다. 에러 플로어 현상은 터보 코드와 같은 코드의 복호 특성에서 관측된다.
이러한 LDPC 코드에 대하여 이하에 상세히 설명한다. 여기서, LDPC 코드는 선형 부호(linear code)이며, 반드시 2차원 코드(two-dimensional code)일 필요는 없다. 그러나, 여하의 설명에서는 LDPC 코드가 2차원 코드인 것으로 하여 설명한다.
LDPC 코드의 가장 큰 특징은 그 LDPC 코드를 정의하는 패리티 검사 행렬(parity check matrix)이 드문드문한 행렬(sparse matrix)인 것이다. 드문드문한 행렬이란 각각 1의 값을 가지는 원소의 수가 매우 작은 행렬이다. 드문드문한 패리티 검사 행렬을 부호(H)로 나타내는 것으로 한다. 도 1은 대표적인 드문드문한 패리티 검사 행렬(H)을 나타내는 다이어그램이다. 도 1에 나타낸 바와 같이, 각 열(column)의 해밍 중량(Hamming weight)은 3이고 각 행(row)의 해밍 중량은 6이다. 행 또는 열의 해밍 중량은 1의 값을 각각 가지는 하나의 원소로서 하나의 행이나 열에 각각 포함되는 행렬 원소(matrix elements)의 수이다.
상기한 바와 같이 각 열에 대하여 일정한 해밍 중량을 가지는 패리티 검사 행렬(H)에 의해 정의되는 LDPC 코드는 규칙(regular) LDPC 코드라 부른다. 한편, 열에서 열로 변화하는 해밍 중량과 행에서 행으로 변화하는 해밍 중량을 가지는 패리티 검사 행렬(H)에 의해 정의되는 LDPC 코드는 불규칙(irregular) LDPC 코드라 부른다.
이러한 LDPC 코드에 근거한 코딩 처리는 LDPC 코드를 정의하는 패리티 검사 행렬(H)에 근거하여 생성 행렬(generated matrix)(G)을 작성함으로써 수행된다. 그리고 나서, 이 생성 행렬(G)은 부호어(coded word)(c)를 생성하기 위해 2차원의 정보 메시지(two-dimensional information massage)(u)와 곱해진다. 구체적으로는, LDPC 코드에 근거한 코딩처리를 수행하는 코딩장치는 LDPC 코드를 정의하는 패리티 검사 행렬(H)로부터 유도된 전치행렬(rearranged matrix)(HT)에 대하여, 식 GHT = 0을 참(true)으로 유지하는 생성 행렬(G)을 작성한다. 여기서, 생성 행렬(G)이 k×n행렬인 경우, 코딩장치는 n 비트로 구성되는 부호어 c(=uG)를 생성하기 위해 생성 행렬(G)에 k 비트의 정보 메시지를 곱한다. 이하의 설명에서, k 비트의 정보 메시지는 또한 벡터(u)로 언급된다. 코딩장치는 0의 값을 가지는 각각의 부호어 비트(coded-word bit)를 +1로 매핑(napping)하고 1의 값을 가지는 각각의 부호어 비트를 -1로 매핑함으로써, 최종적으로 부호어(c)를 미리 정해진 통신로를 통하여 수신 측에 전송한다. 즉, 코딩장치는 패리티 검사 행렬(H)에 의해 정의된 LDPC 코드에 근거하여 정보 메시지(u)를 부호어(c)로 인코딩한다.
여기서, 예를 들면, n 비트로 구성된 부호어(c)가 n-k 패리티 비트가 이어지 는 k 비트의 정보 메시지(u)로 구성된 n-비트열(n-bit sequence)과 일치하는 조직 코드(organization code)인 경우, 도 2의 다이어그램에 나타낸 바와 같이, (n-k)행과 n열로 구성된 (n-k)행×n열 패리티 검사 행렬(H)에 있어서, n 비트로 구성된 부호어(c)의 k 비트의 정보 메시지(u)에 대응하는 (n-k)행×k열 행렬 부분을 정보부(information portion)라 하는 반면, n 비트로 구성된 부호어(c)의 (n-k) 패리티 비트에 대응하는 (n-k)행 (n-k)열 행렬 부분을 패리티부(parity portion)라 한다. 패리티부가 하 삼각 행렬(lower triangular matrix) 또는 상 삼각 행렬(upper triangular matrix)이면, LDPC 코드에 근거한 코딩방법을 적용하여 정보 메시지(u)를 코딩하기 위한 처리는 LDPC 코드를 정의하는 패리티 검사 행렬(H)을 이용함으로써 수행될 수 있다.
즉, 도 2의 다이어그램에 나타낸 바와 같이, 패리티 검사 행렬(H)이 정보부와 패리티부로서 기능하는 하 삼각 행렬을 포함하는 반면 패리티부로서 기능하는 하 삼각의 행렬의 모든 원소는 1이다. 이 경우, 패리티 비트의 열(sequence)은 다음과 같다. 먼저, 부호어(c)의 패리티 비트 열의 첫 번째 패리티 비트는, 1의 값을 가지는 원소로서 패리티 검사 행렬(H)의 정보부의 제 1행에 포함되는 행렬 원소에 대응하는 비트로서 정보 메시지(u)에 포함되는 각 비트에 EXOR(배타적 논리합) 처리를 수행한 결과로서 얻어진 값을 가진다.
그리고 부호어(c)의 패리티 비트 열의 2번째 패리티 비트는, 1의 값을 가지는 원소로서 패리티 검사 행렬(H)의 정보부의 제 2행에 포함되는 행렬 원소에 대응하는 비트로서 정보 메시지(u)에 포함되는 각 메시지 비트와 패리티 비트열의 첫 번째 패리티 비트에 EXOR 처리를 수행한 결과로서 얻어진 값을 가진다.
계속해서, 부호어(c)의 패리티 비트 열의 3번째 패리티 비트는, 1의 값을 가지는 원소로서 패리티 검사 행렬(H)의 정보부의 제 3행에 포함되는 행렬 원소에 대응하는 비트로서 정보 메시지(u)에 포함되는 각 메시지 비트와 패리티 비트열의 첫 번째 및 두 번째 패리티 비트에 EXOR 처리를 수행한 결과로서 얻어진 값을 가진다.
이후, 동일한 방법으로 패리티 비트 열의 4번째 및 그 이후의 패리티 비트를 구한다. 일반화하면, 부호어(c)의 패리티 비트 열의 i번째의 패리티 비트는, 1의 값을 가지는 원소로서 패리티 검사 행렬(H)의 정보부의 제 i행에 포함되는 행렬 원소에 대응하는 비트로서 정보 메시지(u)에 포함되는 각 메시지 비트와 패리티 비트열의 첫 번째 에서 (i-1)번째까지의 패리티 비트에 EXOR 처리를 수행한 결과로서 얻어진 값을 가진다.
패리티 비트 열의 (n-k) 패리티 비트는 상기한 바와 같이 하여 계산되고 패리티 비트 열은 그 후 n 비트의 부호어(c)를 생성하기 위해 k 비트로 구성된 정보 메시지(u)에 이어지는 위치에 배치된다.
한편, LDPC 코드를 이용한 복호 처리는 또한 각각 메시지 노드(message node) 및 체크 노드(check node)로도 언급되는 배리어블 노드(variable node) 구성된 소위 태너 그래프(Tanner graph) 상에서의 확률 전파(belief propagation)에 근거한 메시지 패싱 알고리즘(massage passing algorithm)에 따라 수행될 수 있다. 메시지 패싱 알고리즘은 확률 복호(Probabilistic Decoding)라 불리는 알고리즘으로서 Gallager에 의해 제안된 알고리즘이다. 여기서, 이하, 배리어블 노드와 체 크 노드를 간단히 노드라 한다.
그러나 확률 복호 알고리즘의 경우, 노드 사이를 통과하는 메시지는 실제 값(real value)이다. 따라서 메시지를 해석적으로(analytically) 풀기(solve) 위해서는, 연속적인 값(continuous value)을 가지는 메시지의 확률 분포(probability distribution)를 추적(track)할 필요가 있다. 즉, 극도로 어려운 해석을 수행할 필요가 있다. 이러한 문제를 다시 해결하기 위해, Gallager는 각각 LDPC 코드를 복호하는데 사용되거나, 또는, 엄밀히 말하면, LDPC 코드를 사용하여 사전에 인코딩된 데이터를 복호하는 알고리즘으로서 알고리즘 A 또는 알고리즘 B를 제안하였다.
LDPC 코드를 사용하여 코딩된 데이터를 복호하는 복호처리는 일반적으로 도 3에 나타낸 플로차트에 제시된 과정에 따라 수행된다. 이하의 설명에서는, LDPC 코드를 사용하여 코딩된 데이터를 복호하는 처리를 또한 간단히 LDPC 코드를 복호하는 처리라 하는 반면 복호수단의 목적으로서 기능하는 LDPC 코드는 LDPC 코드를 사용하여 이미 인코딩된 데이터를 의미한다. 여기서, 상기 과정에서, 부호(U0(u0i))는 특정한 코드 길이를 가지는 LDPC 코드에 근거한 수신 데이터 코드의 i번째 값을 나타내고, 부호(Uj)는 체크 노드로부터 출력되는 j번째의 메시지, 또는, 엄밀히 말하면, 체크 노드에 접속된 j번째의 에지(edge)로부터 출력되는 메시지를 나타내는 반면 부호(Vi)는 배리어블 노드로부터 출력되는 i번째의 메시지, 또는, 엄밀히 말하면, 배리어블 노드에 접속된 i번째의 에지로부터 출력되는 메시지를 나타 낸다. 또한, 이 경우, 메시지란 0의 값의 가능성을 나타내는 소위 대수우도비(對數尤度比, log likelihood ratio)를 표현하는 실제 값이다.
도 3에 나타낸 바와 같이, 플로차트는 데이터값(U0(u0i))이 수신되는 반면 각각의 메시지(uj)와 변수(k)가 0으로 초기화되는 단계(S101)로 시작되는 복호처리의 과정을 나타내고 있다. 변수(k)는 반복 처리(repetitive processing)의 수를 나타내는 정수이다. 그 후, 복호처리의 흐름은 단계(S102)로 진행한다. 단계(S102)에서, 수신된 데이터값(U0(u0i))은 메시지(vi)를 구하기 위한 식 (1)에 따른 배리어블 노드에서의 처리를 수행하기 위해 메시지(ui)와 함께 사용된다. 그리고 나서, 메시지(vi)는 메시지(uj)를 구하기 위한 식 (2)에 따른 체크 노드에서의 처리를 수행하기 위해 사용된다.
Figure 112008072106457-PAT00001
Figure 112008072106457-PAT00002
여기서, 식(1)에서 사용된 부호(dv)는 세로(또는 열) 방향에서 각각 1의 값을 가지는 원소의 수를 나타내는 파라미터를 가리키는 반면 식(2)에서 사용된 부호(dc)는 가로(또는 행) 방향에서 각각 1의 값을 가지는 원소의 수를 나타내는 파라미터를 지시한다. 즉, 부호(dv, dc)는 각각, 각 열의 해밍 중량과 각 행의 해밍 중량을 각각 나타내는 파라미터를 의미한다. 이들 파라미터(dv, dc)의 값은 임의로 선택될 수 있다. 예를 들면, 코드(3, 6)의 경우에는, 각 열의 해밍 중량의 값은 3으로 설정되고(즉, dv=3), 각 행의 해밍 중량의 값은 6으로 설정된다(즉, dc=6).
여기서, 식 (1)에 따른 합산처리(summation process)에 있어서, 메시지를 출력하려고 하는 에지로부터 입력된 메시지가 처리의 대상으로서 사용되지 않는다. 따라서 합산처리의 범위가 1에서 시작하여 (dv-1)에서 끝난다. 마찬가지로, 식 (2)에 따른 곱셈처리(multiplication process)에 있어서, 메시지를 출력하려고 하는 에지로부터 입력된 메시지가 처리의 대상으로서 사용되지 않는다. 따라서 곱 셈처리의 범위가 1에서 시작하여 (dc-1)에서 끝난다. 또한, 식 (2)에 따라 메시지(uj)의 값을 구하기 위한 곱셈처리는 식 (3) 및 식 (4)에 따라 다음과 같이 수행될 수 있다. 2개의 주어진 입력(v1, v2)에 대한 함수(R(v1, v2))의 값 1의 테이블이 식 (3)에 따른 테이블로서 미리 작성된다. 식 (3)에 의해 알 수 있는 바아 같이, 함수(R(v1, v2))의 값(x)은 입력(v1, v2)의 함수이다. 그 후, 메시지(uj)의 값은, 테이블로부터 구해진 값(x)을 이용하여, 식 (4)에 따른 귀납적(recursive) 방법으로 구할 수 있다.
Figure 112008072106457-PAT00003
Figure 112008072106457-PAT00004
또한, 단계(S102)에 있어서, 변수(k)는 1 증가(increment) 된다. 그 후, 복호처리의 흐름은 단계(S103)로 진행한다. 단계(S103)에 있어서, 변수(k)는 변 수(k)가 소정의 반복 복호 회수(N) 이상인지 아닌지에 대한 판정결과를 생성하기 위해 미리 정해진 반복 복호 회수(N)와 비교된다. 단계(S103)에서 수행된 처리에 의해 생성된 판정결과가 변수(k)가 미리 정해진 반복 복호 회수(N) 이상은 아니라는 것을 나타내면, 복호처리의 흐름은 단계(S102)로 돌아가 단계(S102)와 단계(S103)의 처리를 반복한다.
반대로, 단계(S103)에서 수행된 처리에 의해 생성된 판정결과가 변수(k)가 미리 정해진 반복 복호 회수(N) 이상이라는 것을 나타내면, 복호처리의 흐름은 단계(S104)로 진행하여 식 (5)에 따른 처리를 수행함으로써 최종적으로 출력될 복호 결과로서의 메시지(v)가 구해진다. 그 후, LDPC 코드를 사용하여 코딩된 데이터의 복호처리는 종료된다.
Figure 112008072106457-PAT00005
식 (5)에 따른 연산처리는 배리어블 노드에 접속된 모든 에지로부터의 메시지(uj)를 이용하여 수행된다는 점에서 식 (5)에 따른 연산처리는 식 (1)에 따른 연산처리와는 다르다.
LDPC 코드를 사용하여 코딩된 데이터를 복호하기 위한 복호처리에 있어서, 예를 들면, 코드(3, 6)의 경우, 메시지는, 도 4의 다이어그램에 나타낸 바와 같이, 각 노드 사이에서 교환된다(exchanged). 여가서, 도 4의 다이어그램에 있어서, "=" 등호(equal symbol)에 의해 지시되는 각 노드는 식 (1)에 따른 합산 처리가 수행되는 배리어블 노드이다. 한편, "+" 덧셈 연산자(plus operator)로 지시되는 각 노드는 식 (2)에 따른 곱셈연산이 수행되는 체크 노드이다.
특히, 이전에 참조된 알고리즘 A에 대해서는, 메시지는 2차원적으로 이루어지고, "+" 덧셈 연산자에 의해 지시되는 체크 노드에서, 체크 노드에 공급되는 (dc-1)개의 입력 메시지(vi)에 배타적 논리합 연산이 수행되고, 반면, "=" 등호에 의해 지시되는 배리어블 노드에서, 배리어블 노드에 공급되는 메시지(uj)가 모두 다른 비트 값을 가지는 경우 수신 데이터(R)의 부호(sign)는 데이터(R)가 출력되기 전에 반전된다.
또한, 근래, LDPC 코드를 사용하여 코딩된 데이터를 복호하는 처리를 수행하는 방법의 실행에 대한 연구가 행해지고 있다. LDPC 코드를 사용하여 코딩된 데이터를 복호하는 처리를 수행하는 방법에 대하여 설명하기 전에, 먼저 LDPC 코드를 사용하여 코딩된 데이터를 복호하는 처리의 모델을 생성하여 설명한다.
도 5는 1/2의 인코딩률(encoding ratio)과 12의 코드길이를 가지는 LDPC 코드로서 (3, 6) 코드의 LDPC 코드를 정의하는 대표적인 패리티 검사 행렬(parity check matrix)(H)을 나타내는 다이어그램이다. LDPC 코드를 정의하는 행렬로서 도 5의 다이어그램에 나타낸 패리티 검사 행렬(H)은 도 6의 다이어그램에 나타낸 것과 같은 태너 그래프(Tanner graph)에 의해 표현될 수 있다. 도 6의 다이어그램에 있어서,"=" 등호로 지시되는 각 노드는 배리어블 노드이고, 반면, "+" 덧셈 연산자로 지시되는 각 노드는 체크 노드이다. 체크 노드와 배리어블 노드는 패리티 검사 행렬(H)의 행과 열에 대응한다. 체크 노드와 배리어블 노드를 서로 연결하는 선은 1의 값을 가지는 행렬 원소에 대응하는 에지로서 언급된다. 즉, j번째 행과 i번째 열의 교차점(intersection)으로서 패리티 검사 행렬(H)에 존재하는 교차점에서 행렬 원소가 1의 값을 가지면, 도 6의 다이어그램의 위(top)에서부터 i번째의 배리어블 노드(즉, "=" 등호에 의해 지시되는 i번째 노드)와, 도 6의 다이어그램의 위(top)에서부터 j번째의 체크 노드(즉, "+" 덧셈 연산자에 의해 지시되는 j번째 노드)는 행렬 원소가 1의 값을 가지는 교차점에 대응하는 에지에 의해 서로 접속된다. 배리어블 노드와 체크 노드를 서로 연결하는 에지는 배리어블 노드와 관련된 비트로서 LDPC 코드를 사용하여 코딩된 수신 데이터에 포함되는 비트가 체크 노드에 대한 구속조건(condition of constraint)을 가지는 것을 나타낸다. 여기서, 도 6의 다이어그램에 나타낸 태너 그래프는 상기한 바와 같이 도 5의 다이어그램에 나타낸 패리티 검사 행렬(H)을 표현하는 것이다.
LDPC 코드를 사용하여 코딩된 데이터를 복호하는 방법으로서 기능하는 섬 프로덕트 알고리즘(Sum Product Algorithm)은 배리어블 노드의 연산과 체크 노드의 연산을 반복적으로 수행하는 알고리즘이다.
배리어블 노드에서는, 도 7의 다이어그램에 나타낸 바와 같이 배리어블 노드 의 처리로서 식 (1)에 의해 표현되는 합산 처리가 수행된다. 도 7의 다이어그램에 나타낸 합산처리에 있어서, 배리어블 노드에 접속된 에지들 중에서 존재하는 i번째 에지에 대응하는 메시지(vi)는 배리어블 노드에 접속된 나머지의 에지들로부터 오는 메시지(u1, u2)와 수신 데이터 값(u0i)으로부터 계산된다. 다른 에지에 대응하는 메시지도 같은 방법으로 계산된다.
체크 노드에서 수행되는 연산에 대하여 설명하기 전에, 식 (2)는 이하의 관계를 이용하여 식(6)으로 다시 쓰여진다. a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b) 여기서, sign(x)는, x≥0일 때 1(또는 0의 논리 값)의 값을 가지며, x<0일 때 ―1(또는 1의 논리 값)의 값을 가진다.
Figure 112008072106457-PAT00006
또한, x≥0일 때, 비선형 함수 φ(x)=-ln(tanh(x/2))를 정의한다. 이 경우, 비선형 함수 φ(x)의 역함수 φ- 1(x)는 다음과 같이 표현될 수 있다. : φ-1(x) =2tanh-1(e-x). 따라서 식 φ-1(x) =2tanh-1(e-x)로부터 식 (6)은 다음과 같이 식 (7)로 다시 쓸 수 있다.
Figure 112008072106457-PAT00007
체크 노드에서는, 도 8의 다이어그램에 나타낸 바와 같이 식 (7)에 따른 체크 노드 연산이 수행된다. 도 8의 다이어그램에 나타낸 곱셈 처리에 있어서, 체크 노드에 접속된 에지들 중에 존재하는 j번째 에지에 대응하는 메시지(uj)는 체크 노드에 연결된 나머지 에지로부터 오는 메시지(v1, v2, v3, v4, v5)로부터 계산된다. 다른 에지에 대응하는 메시지도 같은 방법으로 계산된다.
여기서, 비선형 함수 φ(x)는 다음과 같이 표현될 수도 있다. : φ(x) =ln((ex+1)/(ex-1)). 이 경우, x>0일 때, φ(x)=φ-1(x). 즉, 비선형 함수 φ(x)의 연산 처리결과와 비선형함수 φ(x)의 역함수 φ-1(x)의 연산 처리결과는 동일하다. 실제로, 하드웨어가 각각의 비선형 함수φ(x)와 비선형함수 φ(x)의 역함수 φ- 1(x)를 실행하기 위해 사용된다. 각각의 비선형 함수φ(x)와 비선형함수 φ(x)의 역함수 φ- 1(x)를 실행하기 위해 사용되는 하드웨어는, 일반적으로 LUT(Look Up Table)이다. 따라서, 이 경우는, 비선형 함수φ(x)와 비선형함수 φ(x)의 역함수 φ-1(x)에 공통인 LUT가 사용될 수 있다.
또한, 식 (1)에 따른 합산처리와 같은 배리어블 노드에서 수행되는 처리는 식 (5)에 따른 합산처리와 식 (8)에 따른 감산처리로 나누어질 수 있다.
Figure 112008072106457-PAT00008
따라서, 식 (5) 및 식 (8)에 따른 처리를 반복함으로써 배리어블 노드의 처리가 반복될 수 있고, 즉, 식 (1)에 따른 배리어블 노드 연산이 반복될 수 있다. 마찬가지로, 식(7)에 따른 처리를 반복함으로써 체크 노드의 처리가 반복될 수 있다. 이 경우, 식 (5) 및 식 (8)에 따른 처리의 반복한 결과로서 얻어지는 식(8)에 따른 마지막 연산의 결과가 복호처리의 최종 결과로서 그대로 사용될 수 있다.
복호장치에 대한 알고리즘으로서 섬 프로덕트 알고리즘이 하드웨어에 의해 실행되면, 적절한 크기를 가지는 회로를 사용함으로써 적절한 동작 주기(operating frequency)로 배리어블 노드 연산과 체크 노드 연산을 반복할 필요가 있다. 배리어블 노드 연산은 식 (1) 또는 식(5) 및 식 (8)에 따라 모든 배리어블 노드에서 수행되는 연산이고 반면 체크 노드 연산은 식(7)에 따라 모든 체크 노드에서 수행되는 연산이다.
이하, 이러한 복호장치의 예에 대하여 설명한다.
LDPC 코드를 사용하여 코딩된 데이터를 복호하기 위해 사용되는 알고리즘은 매우 높은 성능을 가진 완전 병렬처리 복호장치(full parallel-processing decoding apparatus)의 실현을 가능하게 한다. 그러나 긴 코드 길이를 가지는 데이터를 위한 완전 병렬처리 복호장치는, 극도로 큰 회로 규모를 가지므로 장치를 실현하기가 곤란하다.
이러한 문제를 해결하기 위해, 근래, DVB-S.2(ETSI EN302307)와 같은 통신 시스템에 사용되는 LDPC 코드로서 실용적인 회로 규모를 가지는 복호장치의 구현에 적합한 구조를 가지는 LDPC 코드가 제안되었다. 이러한 이유로, 이하의 설명에서 제시된 LDPC 코드는 DVB-S.2 LDPC 코드에 관한 것으로 한다.
DVB-S.2 LDPC 코드는, 후술하는 바와 같이, 패리티 검사행렬의 행과 열을 재배열함으로써(rearranging) 얻어지는 구조를 가지는 행렬에 의해 정의될 수 있다.
즉, LDPC 코드는 P×P 단위행렬(unit matrix)(여기서, P=360), P×P 준단위행렬(semi unit matrix), P×P 시프트행렬(shift matrix), P×P 합행렬(sum matrix) 및 P×P 영행렬(zero matrix)을 포함하는 복수의 구성행렬(configuration matrix)을 조합함으로써(combining) 얻어지는 구조를 가지는 패리티 검사행렬에 의해 표현될 수 있다. 준단위행렬은 단위행렬의 각각 1의 값을 가지는 하나 이상의 각 행렬원소가 0으로 설정된 단위행렬이다. 시프트행렬은 단위행렬 또는 준단위행렬에 사이클릭 시프트 연산(cyclic shift operation)을 수행한 결과로서 얻어지는 행렬이다. 합행렬은 단위행렬, 준단위행렬 및 시프트행렬 중 적어도 둘 이상에 행렬 덧셈(matrix addition operation)을 수행한 결과로서 얻어지는 행렬이다. 여기서, 이하의 설명에서는, 이러한 구조를 가지는 패리티 검사행렬을 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬이라 하고, 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬에 의해 정의되는 LDPC 코드를 P 코드라 한다.
이러한 P 코드를 사용함으로써, 각각 P개의 수신값을 나타내는 P비트 및 각각 P개의 메시지를 나타내는 P비트를 동시에 처리하는 복호장치를 구현할 수 있다.
그러나 이하의 설명에서는, 설명을 간단히 하기 위해, P=6인 경우로 하여 설명한다. 도 9는 코딩률(coding ratio)이 2/3, 부호길이가 108인 LDPC 코드를 정의하는 패리티 검사행렬(H)을 나타내는 다이어그램이다. 도 9에 나타낸 패리티 검사행렬(H)은 각각 6×6 구조를 가지는 구성행렬로 구성된 대표적인 패리티 검사행렬이다. 각각 6×6 구조를 가지는 각각의 구성행렬의 구분을 쉽게 하기 위하여, 도 9에 나타낸 패리티 검사행렬(H)의 6×6의 구성행렬의 사이에는 간격(gap)을 두고 있다. 도 9의 다이어그램을 보기 쉽게 하기 위해, 패리티 검사행렬(H)의 각각 0의 값을 가지는 각 행렬원소는 "."으로 표기되어 있다. 즉, 도 9의 다이어그램에 나타낸 패리티 검사행렬은 6×6 단위행렬, 6×6 준단위행렬, 6×6 시프트 행렬, 6×6 합행렬, 6×6 영행렬을 포함하는 복수의 구성행렬의 조합에 의해 얻어지는 구조를 가진다. 상술한 바와 같이, 준단위행렬은 각각 1의 값을 가지는 하나 이상의 각 행렬원소가 0으로 설정된 단위행렬이다.
도 10은 상기한 바와 같이 P=6인 LDPC 코드를 사용하여 코딩된 데이터를 복호하는 대표적인 종래의 복호장치를 나타내는 블록도이다.
도 10의 블록도에 나타낸 종래의 복호장치의 구성은, 수신값 버퍼(received-value buffer)(200), 수신값 저장 메모리(received-value storage memory)(201), 노드 연산부(node processing session)(202), 시프트부(shift section)(203), 메시지 저장 메모리(message storage memory)(204) 및 복호결과 저장 메모리(decoding-result storage memory)(205)를 포함한다.
수신값 버퍼(200)는 데이터(D200)가 데이터(D201)로서 수신값 저장 메모리(201)에 전송되기 전에 1 코드의 크기를 가지는 데이터로서 통신로(communication line)를 통해 수신된 데이터(D200)를 저장하기 위한 버퍼이다. 데이터(D200)를 수신값 버퍼(200)에 전송하는 전송방법에 따라서는, 수신값 버퍼(200)에 저장되는 데이터(D200)의 부호비트(code bit)를 재배열(rearrange)하는 처리가 경우에 따라 수행될 수도 있다.
데이터(D201)는 도 9에 나타낸 패리티 검사행렬(H)의 열의 순서에 따라 각각 6비트로 구성된 6개의 단위(six-piece units)에서 동시에 수신값 저장 메모리(201) 로부터 읽어내 진다. 즉, 데이터(D201)는 각각 6개의 행과 6개의 열로 구성된 행렬을 단위로 수신값 저장 메모리(201)로부터 읽어내 지고 수신 데이터(D202)로서 노드 연산부(202)에 공급된다.
노드 연산부(202)는, 각각 부호(210-1 - 210-6)로 지시된 6개의 노드 연산기(node processor)로 구성된다. 각각의 6개의 노드 연산기(210-1 - 210-6)는 수신값 저장 메모리(201)로부터 읽어내진 6개의 데이터(D202) 중 소정의 하나 및 메시지 저장 메모리(204)로부터 수신되는 6개의 메시지(D205) 중 소정의 하나에, 도 10의 블록도에 도시하지 않은 제어부(control section)에 의해 지시된 명령(command)에 따라 체크 노드 처리(check-node process) 또는 배리어블 노드 처리(variable node process)를 동시에 수행하고 처리의 결과로서 메시지(D203)를 시프트부(203)에 출력한다. 즉, 노드 연산기(210-1 - 210-6)는 동시에 수행된 처리의 결과로서 6개의 메시지(D203)를 각각 시프트부(203)에 공급한다. 또한, 노드 연산기(210-1 - 210-6)는 노드 연산기(210-1 - 210-6)에 의해 동시에 수행된 배리어블 노드 처리의 각 6개의 복호결과(D206)를 복호결과 저장메모리(205)에 동시에 출력한다.
노드 연산부(202)에 적용된 노드 연산기(210-1 - 210-6)가 시프트부(203)에 6개의 메시지(D203)를 각각 공급할 때, 도 10의 블록도에 도시하지 않은 제어부는 시프트부(203)에 6개의 메시지(D203)에 대응하는 에지(edge)가 도 9의 패리티 검사행렬(H)의 원소행렬(element matrix)로서 기능하는 단위행렬과 같은 구성행렬에 사이클릭 시프트 연산이 수행된 에지인지를 나타내는 정보를 제공한다. 이 정보에 근거하여, 시프트부(203)는 6개의 메시지(D203)를 재배열하기 위한 사이클릭 시프트 연산을 수행하고 그 연산의 결과로서 6개의 메시지(D204)를 메시지 저장 메모리(204)에 출력한다.
메시지 저장 메모리(204)에 있어서, 시프트부(203)로부터 수신된 6개의 메시지(D204)는 도 10의 블록도에 도시하지 않은 제어부에 의해 지정된 주소에 저장된다. 메시지 저장 메모리(204)는 도 10의 블록도에 도시하지 않은 제어부에 의해 지정된 주소로부터 읽어낸 6개의 데이터를 6개의 메시지(D205)로서 노드 연산부(202)에 출력한다.
복호결과 저장 메모리(205)는 노드 연산부(202)의 노드 연산기(210-1 - 210-6)에 의해 수행된 배리어블 노드 처리의 6개의 복호결과(D206)를 저장하기 위해 사용된다. 6개의 복호결과(D206)는 6비트의 실제 데이터이다. 복호처리가 완료한 후, 6비트의 데이터가 복호결과(D207)로서 출력된다.
여기서, 각각의 메모리에 데이터를 쓰는 순서, 각각의 메모리로부터 데이터를 읽어내는 순서 및 시프트량(shift quantity)을 적절히 제어함으로써, 도 10에 나타낸 종래의 복호장치는 단일의 코드뿐만 아니라 동일한 구조(identical structure)를 가지는 다른 코드의 복호도 가능하다.
도 11은 노드 연산부(202)에 적용된 6개의 각각의 노드 연산기(210-1 - 210-6)의 대표적인 구성을 나타내는 블록도이다. 이하의 설명에서는, 6개의 노드 연산기(210-1 - 210-6)를 서로 구별할 필요가 없는 경우는, 6개의 각각의 노드 연산기(210-1 - 210-6)를 단순히 일반적인 참조부호(210)로 나타낸다.
도 11의 블록도에 나타낸 대표적인 구성을 가지는 노드 연산기(210)는 식 (1)에 따른 배리어블 노드 연산과 식 (7)에 따른 체크 노드 연산을 서로 전환하여(switching) 교대로(alternately) 수행할 수 있다.
노드 연산기(210)는 외부 소스(external source)로부터 메시지 또는 데이터를 수신하기 위해 각각 사용되는 입력포트(P301, P302)를 가지고 있다. 더 상세하게는, 도 10의 블록도에 나타낸 종래의 복호장치에 있어서, 입력 포트(P301)는 수신값 저장 메모리(201)로부터 데이터(D202)를 수신하기 위해 사용되는 포트인 반면 입력포트(P302)는 메시지 저장 메모리(204)로부터 메시지(D205)를 수신하기 위해 사용되는 포트이다.
또한, 노드 연산기(210)는 메시지 또는 처리결과를 출력하기 위해 각각 사용되는 출력포트(P303, P304)를 가지고 있다. 더 상세하게는, 도 10의 블록도에 나타낸 종래의 복호장치에 있어서, 출력 포트(P303)는 시프트부(203)로 메시지(D203)를 출력하기 위해 사용되는 포트인 반면 출력포트(P304)는 복호결과 저장 메모리(204)에 복호결과(D206)를 공급하기 위해 사용되는 포트이다.
그 상부(top)에, 노드 연산기(210)는 또한 각각 V 및 C 입력단자(input terminal)를 가지는 셀렉터(selector)(301, 316, 318)를 포함한다. 각 셀렉터(301, 316, 318)로 V 입력단자를 선택하면, 노드 연산기(210)는 배리어블 노드 연산을 행한다. 각 셀렉터(301, 316, 318)로 C 입력단자를 선택하면, 노드 연산기(210)는 체크 노드 연산을 행한다.
먼저, 배리어블 노드로서 기능하는 노드 연산기(210)에 의해 수행되는 배리 어블 노드 연산에 대하여 설명한다.
노드 연산기(210)는 도 10의 블록도에 나타낸 종래의 복호장치의 메시지 저장 메모리(204)로부터 체크 노드에 의해 발생된(originated) 1열 분의 메시지(D205)를 입력포트(P302)를 통하여 수신한다. 메시지(D205)는 메시지(D301)(또는 메시지 uj)로서 하나씩 차례로 셀렉터(301)에 순차적으로 공급된다. 셀렉터(301)는 메시지(D306)로서 메시지(D301)를 가산기(adder)(302)에 공급한다. 가산기(302)는 또한 셀렉터(317)에 의해 출력된 데이터(D323)도 수신한다. 가산기(302)는 이후 레지스터(register)(303)에 저장되는 합계(sum)를 구하기 위해 셀렉터(317)에 의해 출력된 데이터(D323)를 메시지(D306)에 가산한다.
셀렉터(317)가 데이터(D307)를 출력하는 레지스터(303)에 연결된 그것의 입력단자를 선택하면, 가산기(302)는 레지스터(303)에 의해 셀렉터(317)를 통하여 가산기(302)에 공급되는 데이터(D307)를 이후 레지스터(303)에 재저장되는 합계를 구하기 위해 셀렉터(301)에 의해 출력되는 메시지(D306)에 가산한다.
반면, 셀렉터(317)가 데이터(D322)를 출력하는 셀렉터(318)에 연결된 그것의 입력단자를 선택하면, 가산기(302)는 셀렉터(318)에 의해 셀렉터(317)를 통하여 가산기(302)에 공급되는 데이터(D322)를 합계를 구하기 위해 셀렉터(301)에 의해 출력되는 메시지(D306)에 가산한다. 한편, 셀렉터(318)에 의해 출력되는 데이터(D322)는 데이터(D300)로서 입력포트(P301)에 의해 수신되는 데이터(D202)(또는 u0i)이다. 따라서, 가산기(302)는 수신된 데이터(D202)(또는 u0i)를 레지스 터(303)에 저장되는 합계를 구하기 위해 셀렉터(301)에 의해 출력되는 메시지(D306)에 가산한다.
상기한 바와 같은 동작이 1개의 열에 대하여 반복되면, 합 Σuj가 j=1에서 dv까지의 범위일 때 Σuj + u0i와 같은(equal) 합계(amount)를 가지는 데이터(D307)가 레지스터(303)에 축적된다(accumulated). Σuj + u0i와 같은(equal) 합계(amount)를 가지는 데이터(D307)는 그 후 셀렉터(304)를 통하여 레지스터(305)에 전송된다.
한편, 지연용 FIFO(delay FIFO)(310)는 합 Σuj가 j=1에서 dv까지의 범위일 때 Σuj + u0i와 같은(equal) 합계(amount)를 가지는 새로운 데이터(new data)(D308)가 레지스터(305)에 의해 출력될 때까지 체크 노드로부터 발생된 메시지로서 셀렉터(301)에 의해 출력된 메시지(D306)를 지연용 FIFO(310) 내에 유지함으로써(keeping) 메시지(D306)를 지연하기(delaying) 위해 사용된다. 지연용 FIFO(310)는 그 후 지연된 메시지(D306)를 지연 입력 메시지(delayed input message)(D315)로서 감산기(subtractor)(312)에 출력한다.
감산기(312)는 지연용 FIFO(310)에 의해 출력된 지연 입력 메시지(D315)를 합 Σuj가 j=1에서 dv까지의 범위일 때 Σuj + u0i와 같은 크기(magnitude)를 가지는 차(difference)(D316)를 구하기 위해 레지스터(305)에 의해 출력된 새로운 데이터(D308)로부터 감산한다. 감산기(312)는 차(D316)를 셀렉터(316)에 출력한다. 그 후, 셀렉터(316)는 차(D316)를 메시지(D203)로서 출력포트(P303)에 출력한다. 마지막으로, 출력포트(303)는 메시지(D321)를 출력 메시지(D203)로서 도 10의 블록도에 나타낸 종래의 복호장치에 적용된 시프트부(203)에 전달한다.
다시 말하면, 식 (1)에 따른 배리어블 노드의 처리가 수행될 때, 배리어블 노드로서 기능하는 노드 연산기(210)는 배리어블 노드로서 기능하는 노드 연산기(210)에 연결된 모든 체크 노드로부터 수신되는 메시지와 수신된 데이터의 합으로부터 특정 체크 노드에 의해 공급되는 메시지를 감산함으로써 에지를 통하여 특정 체크 노드에 출력되는 메시지를 계산한다.
다음으로, 체크 노드로서 기능하는 노드 연산기(210)에 의해 수행되는 체크 노드 연산에 대하여 설명한다.
노드 연산기(210)는 도 10의 블록도에 나타낸 종래의 복호장치의 메시지 저장 메모리(204)로부터 배리어블 노드에 의해 발생된 1행의 메시지(one-row message)(D205)를 입력포트(P302)를 통하여 수신한다. 메시지(D205)는 입력포트(P302)에 의해 메시지(D301)(또는 메시지 vi)로서 하나씩 순차적으로 전달되고 절대값(D303)(또는 |vi|)으로서 LUT(300)에 공급된다.
LUT(300)는 절대값(D303)(또는 |vi|)인 인수(argument)(x)에 각각 관련된 값으로서 체크 노드 연산을 표현하는 식(7)에 사용되는 비선형 함수 φ(x)의 값을 저장하기 위한 LUT이다. 즉, LUT(300)는 값(D305)(또는 φ(|vi|))을 저장하기 위해 사용된다. 절대값(D303)(또는 |vi|)이 LUT(300)에 공급되면, LUT(300)는 값(D305)(또는 φ(|vi|))을 출력한다.
LUT(300)로부터 읽어내진 값(D305)(또는 φ(|vi|))은 셀렉터(301)을 통하여 메시지(D306)로서 가산기(302)에 공급된다. 가산기(302)는 이후 레지스터(303)에 저장되는 합계를 생성하기 위해 셀렉터(301)에 의해 출력된 메시지(D306)를 셀렉터(317)에 의해 출력된 데이터(D323)에 가산한다. 이 경우, 셀렉터(317)는 데이터(D307)를 출력하는 레지스터(303)에 연결된 입력단자를 선택한다. 따라서 가산기(302)는, 이후 레지스터(303)에 저장되는 합계를 생성하기 위해 셀렉터(317)를 통하여 레지스터(303)에 의해 가산기(302)에 공급된 데이터(DD307)를 셀렉터(301)에 의해 출력된 메시지(D306)에 가산한다. 그러므로, 데이터(D307)는 값(D305)(또는 φ(|vi|))의 누적값(cumulative sum)이다.
1개의 행에 대한 메시지(D301)(메시지(vi))에 대하여 LUT(300)로부터 읽어내진 값(D305)(또는 φ(|vi|))이 1라인 누적값(one-line cumulative sum)(D307)을 산출하기 위해 누적되어 합산될 때, i=1에서 dc까지의 범위에서 계산된 Σφ(|vi|))와 동일한 크기를 가지는 합(D307)이 셀렉터(304)를 통하여 레지스터(305)에 공급된다.
한편, 지연용 FIFO(310)는 i=1에서 dc까지의 범위에서 계산된 Σφ(|vi|))와 동일한 합계를 가지는 새로운 데이터(D308)가 레지스터(305)에 의해 출력될 때까지 메시지(D306)를 지연용 FIFO(310)에 유지함으로써 셀렉터(301)에 의해 출력된 메시 지(D306)를 지연하기 위해 사용된다. 즉, 지연용 FIFO(310)는 LUT(300)로부터 읽어내진 값(D305)(또는 φ(|vi|))을 지연하기 위해 사용된다. 그 후 지연용 FIFO(310)는 지연된 값(D305)을 지연 입력 메시지(D315)로서 감산기(312)에 출력한다.
감산기(312)는 i=1에서 (dc-1)까지의 범위에서 계산된 Σφ(|vi|))와 동일한 크기를 가지는 차(D316)를 산출하기 위해 레지스터(305)에 의해 출력된 새로운 데이터(D308)로부터 지연 입력 메시지(D315)를 감산한다. 그 후 감산기(312)는 차(D316)를 LUT(314)에 출력한다.
LUT(314)는 다음과 같이 동작하는 LUT이다. LUT(314)에 있어서, 차(D316)는 인수(x)로서 취급된다. 인수(X)에 대하여, 비선형 함수 φ(x)의 역함수 φ-1(x)로서 식 (7)에 따른 체크 노드 연산에 사용되는 역함수φ-1(x)의 값이 LUT(314)로부터 읽어내 진다. 더 상세하게는, 감산기(312)가 i=1에서 (dc-1)까지의 범위에서 계산된 Σφ(|vi|))와 동일한 크기를 가지는 차(D316)를 LUT(314)에 공급할 때, LUT(314)는 역함수 φ-1(Σφ(|vi|))의 값인 값(D318)(= φ-1(Σφ(|vi|)))을 출력한다.
상기한 처리와 병행하여, EXOR 회로(306)는 배타적 논리합(exclusive logical sum)(D309)을 산출하고 다시 그 합(D309)을 레지스터(307)에 저장하기 위해 각 메시지(D301)(또는 각 메시지(vi))의 부호비트(sign bit)(D304)(또는 sign(vi))와 레지스터(307)에 저장된 값(D310)에 배타적 논리합 처리를 수행한다. 메시지(D301)의 부호비트(D304)는 메시지(D301)가 양의 메시지(positive message)인지 또는 음의 메시지(negative message)인지를 나타내는 비트이다.
1개의 행에 대한 메시지(D301)(또는 메시지(vi))의 부호비트가 EXOR 회로(306)에 의해 누적되고 레지스터(307)에 저장될 때, 레지스터(307)는 i=1에서 dc까지의 범위에서 계산된 Πsign(vi)에 의해 표현되는 누적값(D310)을 셀렉터(308)를 통하여 레지스터(309)에 공급한다.
한편, 지연용 FIFO(310)는 i=1에서 dc까지의 범위에서 계산된 Πsign(vi)에 의해 표현되는 새로운 데이터(D311)가 레지스터(309)에 의해 출력될 때까지, 지연용 FIFO(310)에 부호비트(D304)(또는 sign(vi))를 유지함으로써, 적산에 사용되는 부호비트(D304)(또는 sign(vi))를 지연하기 위해 사용된다. 지연용 FIFO(310)는 그 후 지연된 부호비트(D304)를 지연 부호비트(D313)로서 EXOR 회로(315)에 공급한다.
EXOR 회로(315)는 i=1에서 (dc-1)까지의 범위에서 계산된 Πsign(vi)에 의해 표현되는 부호비트(D319)를 산출하고 부호비트(D319)를 셀렉터(316)에 공급하기 위해 레지스터(309)에 의해 지연용 FIFO(310)로부터 수신된 지연 부호비트(D313)와 레지스터(309)에 저장된 누적값(D311)에 배타적 논리합 처리를 수행한다.
최종적으로, 메시지(D321)를 산출하고 이후 메시지(D321)를 도 10의 블록도 에 나타낸 종래의 복호장치의 시프트부(203)에 전달하는 출력포트(P303)에 메시지(D321)를 출력하기 위해 셀렉터(316)는 LUT(314)에 의해 출력된 값(D318)(= φ-1(Σφ(|vi|))) 에 EXOR 회로(315)로부터 수신된 부호비트(D319)를 부가(append)한다.
다시 말하면, 식 (7)에 따른 체크 노드의 연산을 수행할 때, 노드 연산기(210)는 체크 노드로서 기능하는 노드 연산기(210)에 연결된 모든 체크 노드로부터 수신되는 메시지의 합으로부터 특정한 배리어블 노드에 의해 공급되는 메시지를 감산함으로써, 에지를 통하여 특정한 배리어블 노드에 출력되는 메시지를 산출한다.
복호의 최종단계에서, 노드 연산기(210)는 식 (1)에 따른 배리어블 노드 연산 대신에, 식 (5)에 따른 연산을 수행하고 처리의 결과로부터의 데이터(D308)를 복호결과(D206)로서 도 10의 블록도에 나타낸 종래의 복호장치의 복호결과 저장 메모리(205)에 출력포트(P304)를 통하여 출력한다. 복호의 최종단계는 일반적으로 N이 미리 정해진 정수일 때 배리어블 노드 처리와 체크 노드 처리를 N회 반복한 후 수행되는 마지막 배리어블 노드 처리이다.
여기서, 도 10의 블록도에 나타낸 종래의 복호장치는 P=6인 코드를 복호하는 복호장치이나, 6 이외의 P를 가지는 P 코드를 복호하는 복호장치도 기본적으로 도 10의 블록도에 나타낸 종래의 복호장치와 동일한 구성을 가지도록 설계될 수 있다.
그러나 만약, P 코드를 복호하기 위한 복호장치가 종래의 기술을 사용하고 도 10의 블록도에 나타낸 종래의 복호장치와 동일한 구성을 가지도록 구현된다면, 병렬로 연결된 6 노드 연산기 대신에 병렬로 연결된 P 노드 연산기가 요구된다. 또한, 시프트부도 6×6 사이클릭 시프트 동작 대신에 P×P 사이클릭 시프트 동작을 수행할 필요가 있다. 더욱이, 각종 메모리도 단순히 6개의 데이터 대신에 P개의 데이터를 동시에 읽고 쓸 수 있어야 한다.
따라서, P의 값이 큰 경우에는, 복호장치 전체의 회로규모가 바람직하지 못하게 커져 버린다는 문제가 발생한다.
또한, 종래의 복호 장치는 P 코드 이외의 코드를 복호 할 수 없다. 예를 들면, 종래의 복호 장치는 Q 코드를 복호 할 수 없다. 따라서, 하나의 전송 시스템에서 사용되는 코드는 모두 P 코드이어야만 했다. 그 결과, 일반적으로 P 코드를 사용하는 시스템은 각각 높은 전송 레이트를 가지는 고정식 수신기(stationary receiver) 전용의 서비스를 위한 것이고 Q 코드는 각각 낮은 전송 레이트를 가지나 소비전력에 큰 제한이 있는 휴대용 수신기 전용의 서비스를 위한 것으로, P 코드와 Q 코드에 공통인 수신기를 구성하기 위해서는 P 코드를 복호하는 전용의 복호장치와 Q 코드를 복호하는 전용의 복호장치를 각각 별도로 설계해야만 한다는 바람직하지 못한 또 다른 문제가 발생한다.
상기한 바와 같은 문제에 중점을 두어, 본 발명의 발명자들은 구조가 다른 LDPC 코드를 사용하여 코딩된 복수의 코드를 복호 할 수 있고 그 회로규모를 감소할 수 있는 복호장치를 제안하였다.
상기한 바와 같은 문제를 해결하기 위해, 본 발명의 실시예에 따르면, LDPC(Low Density Parity Check) 코드를 복호하는 복호장치가 제공된다. 복호장치에 있어서, 상기 LDPC 코드는 P×P 단위행렬(unit matrix), 상기 P×P 단위행렬의 하나 이상의 각 행렬원소(matrix elements)의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬(semi unit matrix), 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산(cyclic shift operation)을 수행한 결과로서 얻어지는 P×P 시프트 행렬(shift matrix), 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬(zero matrix) 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 P×P 합행렬(sum matrix)을 포함하는 복수의 제 1 구성행렬(first configuration mztrix)을 조합하여(combining) 얻어지는 제 1 구조(first structure)를 가지는 오리지널 패리티 검사행렬(original parity check matrix)에 의해 표현되거나, 또는, 부호 P가 정수(integer)일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행(row)과 한 열(column)을 재배열(rearranging)함으로써 얻어지는 행렬에 의해 표현된다.
상기 복호장치는, 부호 F가 상기 정수 P의 1 이외의 약수(non-unity measure)일 때, F개의 체크 노드 연산(check-node process) 또는 F개의 배리어블 노드 연산(variable-node process)을 병렬적으로(concurrently) 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값(received value)을 복호하고, 상기 F개의 체크 노드 연산 또는 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산수단(message computation means)과,
상기 메시지 계산수단에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트 수단(shift means)과,
상기 시프트 수단에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 저장수단(storing means)을 포함하여 구성된다.
상기 복호장치는, 제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리(column rearrangement process) 또는 상기 열 재배열 처리와 동등한(equivalent) 처리를 수행함으로써 상기 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위(unit)를 상기 메시지 계산수단에 공급하는 동작을 제어하는 제어수단(means for controlling)을 더 포함한다.
상기한 바와 같은 문제를 해결하기 위해, 본 발명의 다른 실시예에 따르면, LDPC(Low Density Parity Check) 코드를 복호하는 복호장치로서 상기한 본 발명의 실시예에 따라 제공된 복호장치에 적용되는 복호방법을 실행하는 프로그램이 제공된다. 상기 LDPC 코드는 P×P 단위행렬, 상기 P×P 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬, 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 P×P 시프트 행렬, 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 P×P 합행렬을 포함하는 복수의 제 1 구성행렬을 조합하여 얻어지는 제 1 구조를 가지는 오리지널 패리티 검사행렬에 의해 표현되거나, 또는, 부호 P가 정수일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행과 한 열을 재배열함으로써 얻어지는 행렬에 의해 표현된다. 상기 프로그램은,
부호 F가 상기 정수 P의 1 이외의 약수일 때, F개의 체크 노드 연산 또는 F 개의 배리어블 노드 연산을 병렬적으로 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값을 복호하고, 상기 F개의 체크 노드 연산 또는 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 단계와,
상기 단계에서 메시지 계산 처리로 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 단계와,
상기 시프트 연산에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된 F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 단계를 포함하여 구성된 처리를 실행한다.
상기 프로그램에 의해 실행되는 처리는, 제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리 또는 상기 열 재배열 처리와 동등한 처리를 수행함으로써 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조 를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위를 상기 메시지 계산수단에 공급하는 동작을 제어하는 단계를 더 포함한다.
본 발명에 따르면, LDPC(Low Density Parity Check) 코드를 복호 할 수 있는 복호장치를 제공할 수 있다. 특히, 본 발명에 따른 복호장치는 서로 다른 구조를 가지는 LDPC 코드를 복호 할 수 있다.
본 발명의 실시예를 설명하기 전에, 개시된 발명과 실시예의 관계를 다음의 비교내용에서 설명한다. 여기서, 본 명세서에는 기재되어 있으나 본 발명에 따른 실시예로서 이하의 비교내용에 포함되지 않는 실시예가 있다고 하더라도, 그러한 실시예는 본 발명에 대응하지 않는 실시예로서 해석되지 않는다. 바꾸어 말하면, 특정한 발명에 따른 실시예로서 이하의 비교내용에 포함되는 실시예가 그 특정한 발명 이외의 발명에 대응하지 않는 실시예로서 해석되는 것은 아니다.
또한, 이하의 비교내용은 본 명세서에 개시된 모든 발명을 커버하는 포괄적인 기재로서 해석되는 것은 아니다. 다시 말하면, 이하의 비교내용은 본 명세서에 개시어 있으나 특허출원을 위한 발명으로서 청구항에 포함되지 않은 발명의 존재를 부정하는 것이 아니다. 즉, 이하의 비교내용은, 본 명세서에 대한 보정에 포함되거나 또는 차후에 추가되는, 특허로서 별도의 출원에 포함되는 발명의 존재를 부정하는 것이 아니다.
본 발명의 실시예에 따르면, LDPC(Low Density Parity Check) 코드를 복호 하기 위한 복호장치가(도 12의 블록도에 나타낸 복호장치와 같은) 제공된다. LDPC 코드는 LDPC 코드를 이용하여 인코딩된 데이터이다. LDPC 코드는, P×P 단위행렬(unit matrix), 상기 P×P 단위행렬의 하나 이상의 각 행렬원소(matrix elements)의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬(semi unit matrix), 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산(cyclic shift operation)을 수행한 결과로서 얻어지는 P×P 시프트 행렬(shift matrix), 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬(zero matrix) 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 P×P 합행렬(sum matrix)을 포함하는 복수의 제 1 구성행렬(first configuration mztrix)을 조합하여(combining) 얻어지는 제 1 구조(first structure)를 가지는 오리지널 패리티 검사행렬(original parity check matrix)(P=6에 대한 행렬로서 도 9에 나타낸 패리티 검사행렬과 같은)에 의해 표현되거나, 또는, 부호 P가 정수(integer)일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행(row)과 한 열(column)을 재배열(rearranging)함으로써 얻어지는 행렬에 의해 표현된다. 상기 복호장치는,
부호 F가 상기 정수 P의 1 이외의 약수(non-unity measure)일 때, F개의 체크 노드 연산(check-node process) 또는 F개의 배리어블 노드 연산(variable-node process)을 병렬적으로(concurrently) 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값(received value)을 복호하고, 상기 F개의 체크 노드 연 산 또는 상기 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산수단(message computation means)(F=3에 대하여 세 개의 노드 연산기(510-1 - 510-3)를 포함하는 노드 연산부(502)로서 도 12의 블록도에 나타낸 복호장치에 이용되는 노드 연산부(502)와 같은)과,
상기 메시지 계산수단에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트 수단(shift means)(도 12의 블록도에 나타낸 복호장치에 이용되는 시프트부(502)와 같은)과,
상기 시프트 수단에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 저장수단(storing means)(도 12의 블록도에 나타낸 복호장치에 이용되는 메시지 저장부(504) 및 수신값 저장부(501)와 같은)과,
제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬(제 1 구성행렬로서 도 13에 나타낸 6×6 시프트 행렬의 행과 열을 재배열하도록 수행 되는 처리의 결과로서 얻어지는 구성행렬 중 하나로서 도 14의 점선 블록에 각각 포함되는 3×3 구성행렬과 같은)을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리(column rearrangement process) 또는 상기 열 재배열 처리와 동등한(equivalent) 처리를 수행함으로써 상기 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위(unit)를 상기 메시지 계산수단에 공급하는 동작을 제어하는 제어수단(means for controlling)(도 12의 블록도에 나타낸 복호장치에 이용되는 제어부(506)와 같은)를 포함하여 구성된다.
상기 복호장치는, 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 상기 수신값을 버퍼링하는 버퍼수단(buffer means)(도 12의 블록도에 나타낸 복호장치에 이용되는 수신값 버퍼(500)와 같은)을 더 포함한다. 상기 제어수단은, 인커밍 형태(incoming shape)를 상기 제 2 구조를 가지는 상기 행렬에 적합한(conforming) 다른 형태로 변환하기 위해 상기 버퍼수단의 상기 제 1 구조를 가지는 상기 행렬에 적합한 상기 인커밍 형태로 수신된 상기 수신값을 재배열하는 버퍼링 제어(buffering control)를 실행한다. 상기 제어수단은, 상기 제 2 구조를 가지는 상기 행렬에 적합한 상기 다른 형태로 상기 버퍼수단에 이미 버퍼링된 상기 수신값을 상기 제 2 구조를 가지는 상기 행렬의 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 각각 구성된 단위로 상기 저장수단을 통하여 상기 메시지 계산수단 에 공급하는 제어를 실행한다.
다음으로, 본 발명의 기술(techniques)에 대하여 이하에 설명한다.
본 명세서에서 사용되는 기술용어(technical term)인 "P 코드"는 LDPC 코드 중 하나이다. LDPC코드는 QC(Quasi Cyclic) 코드의 특성을 가진다.
QC 코드란, 오리지널 부호어(original coded word)와 다른 또 다른 부호어를 생성하기 위해 임의의 오리지널 부호어에 N 주기(cycle)(N은 자연수) 만큼 사이클릭 시프트 연산을 행함으로써 얻어지는 비트열의 부호어이다.
QC 코드의 패리티 검사행렬은 일반적으로 순회행렬(cyclic matrix)을 이용하여 표현될 수 있다. 본 명세서에서 순회행렬은 시프트 행렬로서 언급된다. 시프트 행렬로서 언급되는 순회행렬은 또한 모든 다른 행렬의 모든 열로부터 선택된 특정한 열에 사이클릭 시프트 연산을 수행함으로써 얻어지는 행렬로서 정의된다. 상기 특정한 열의 예는 첫 번째 열(first column)이다.
상기한 바와 같이, P 코드를 정의하는 패리티 검사행렬에 포함되는 시프트 행렬은 P×P 단위행렬 또는 준단위행렬에 사이클릭 시프트 연산을 수행함으로써 얻어진 행렬이다. 더 상세하게는, 한 열씩 순차적으로 P×P 단위행렬 또는 P×P 준단위행렬의 특정한 열에 사이클릭 시프트 연산을 수행함으로써, 서로 다른 종류(type)의 시프트 행렬들이 한 행렬씩 순차적으로 생성된다. P×P 단위행렬 또는 P×P 준단위행렬의 P개의 열에 수행되는 사이클릭 시프트 연산이 완료되면, 오리지널 P×P 단위행렬 또는 P×P 준단위행렬이 재생성(regenerated)된다. 즉, 사이클릭 시프트의 단위는 P개의 열이다.
여기서, 유의해야 할 점은, 엄밀히 말하면, P 코드를 정의하기 위해 이용되는 P×P 준단위행렬 및 그 준단위행렬의 P×P 시프트 행렬은 QC 코드를 정의하는 행렬에는 포함되지 않는다는 것이다. 즉, P 코드를 포함하는 DVB-S2 LDPC 코드를 정의하는 패리티 검사행렬의 우 상단(right-upper corner)의 오직 1개의 위치에만 준단위행렬이 나타난다. 그러므로, 이러한 관점에서, 엄밀히 말하면, DVB-S2 LDPC 코드는 QC 코드가 아니다. 그러나 DVB-S2 LDPC 코드를 복호하는 복호장치에 있어서는, 이러한 결여된 부분(defective portion)에 간단한 예외처리(exception process) 만이 수행된다. 따라서 DVB-S2 LDPC 코드를 복호하는 복호장치와 QC 코드를 복호하는 복호장치의 구조(architecture) 사이에는 아무런 차이가 없다. 상기한 이유로부터, P 코드는 QC 코드 중 하나라고 불리지 않는다. 대신에, 상기한 내용은 P 코드는 QC 코드의 특성을 가지는 LDPC 코드임을 나타낸다.
다시 말하면, 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬은 P×P 단위행렬, P×P 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬, P×P 단위행렬 또는 P×P 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 P×P 시프트 행렬, 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 P×P 합행렬을 포함하는 구성행렬을 규칙적으로 배치하여(regularly laying out) 얻어지는 행렬이다. P 코드는 이러한 규칙적인 구조를 가지는 패리티 검사행렬로서 표현될 수 있으므로, P 코드 는 QC(quasi cyclic) 코드의 특성을 가지는 LDPC 코드라 일컬어진다.
즉, P 코드는 P×P 단위행렬, P×P 준단위행렬, P×P 시프트 행렬, P×P 합행렬 및 P×P 영행렬과 같은 P×P 구성행렬을 단위로서 규칙적으로 배열하여 구성된 구조를 가지는 패리티 검사행렬에 의해 표현될 수 있음을 의미하는 규칙성(regularity characteristic)을 가진다. 따라서, P 코드를 복호하는 복호장치가 도 10의 블록도에 나타낸 종래의 복호장치와 동일한 구성을 가지도록 종래기술을 적용하여 구현되는 경우, 병렬로 연결된 6개의 노드 연산기 대신에 병렬로 연결된 P개의 노드 연산기가 요구된다. 또한, 시프트부도 6×6 사이클릭 시프트 연산 대신에 P×P 사이클릭 시프트 연산을 수행할 필요가 있다. 더욱이, 각 메모리도 6개의 데이터 대신에 P개의 데이터를 동시에 읽고 쓸 수 있도록 해야 한다.
상기한 문제를 해결하기 위해, 본 발명의 발명자들은 기술을 혁신하였다(innovated). 이러한 기술에 따라, 규칙적으로 배치된 또는 배열처리(arrangement process)와 등가인(equivalent) 처리가 수행된 F×F 구성행렬을 가지는 행렬을 생성하기 위해 각각 P×P의 구조를 가지는 구성행렬로 구성된 패리티 검사행렬의 행과 열을 재배열함으로써 수행되는 재배열처리가 수행되고, 최종적으로, F×F 구성행렬을 가지는 배열 후 행렬(post-arrangement matrix)에 따른 데이터로서 재배열처리(rearrangement process) 또는 배열처리와 등가인 처리의 결과로서 얻어지는 데이터에 복호처리가 수행된다. 이 경우, F는 정수 P의 약수를 나타낸다. 이하의 설명에서는, 재배열처리 및 배열처리와 등가인 처리를 모두 간단히 재배열처리라 한다. F×F 구성행렬은 P×P 구성행렬과 동일한 카테고리로 분류된다. 즉, F×F 구성행렬은, F×F 단위행렬, F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, F×F 단위행렬 또는 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, F×F 단위행렬, F×F 준단위행렬, F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 F×F 합행렬의 카테고리로 분류된다.
여기서, 재배열처리 또는 배열처리와 등가인 처리를 모두 간단히 재배열처리라 함은 다음과 같은 이유 때문이다. 데이터를 복호하는 처리 전에(또는 노드 연산기에 데이터를 공급하기 전에), 각각 F×F 구조를 가지는 구성행렬로 구성된 배열 후 행렬을 생성하기 위해 각각 P×P 구조를 가지는 구성행렬로 구성된 오리지널 행렬로서 버퍼에 저장된 패리티 검사행렬의 행 및/또는 열을 실제로 재배열함으로써 재배열처리를 수행하고 배열 후 행렬을 노드 연산기 바로 전단(a stage immediately preceding)에 설치된 메모리를 통하여 노드 연산기에 공급하기 전에 배열 후 행렬을 버퍼에 대시 저장하는 것이 필수적인 것은 아니다. 즉, 배열처리와 등가인 처리를 위해 설치된 등가의 기술에 따라, 등가인 처리가 또한 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬을 구성하는 인커밍 형태 그대로 버퍼에 저장하고, 그 후, 노드 연산기에 데이터를 공급하는 동작 전에 각각 F×F 구조를 가지는 구성행렬로 구성된 배열 후 행렬을 생성하기 위해 메모리에 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬의 행 및/또는 열을 재배열하기 전에 버퍼로부터 메모리에 데이터를 전송하기 위해 수행될 수 있다. 다시 말하면, 노드 연산기로부터 알 수 있듯이, 재배열처리 및 등가인 처리는, 각각 F×F 구조를 가지는 구성행렬로 구성된 행렬을 생성하기 위해 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬의 행 및/또는 열이 재배열된 상태와 동일한 결과를 나타낸다. 이러한 상태는 노드 연산기의 처리요구(processing need)에 적합하다.
달리 말하면, 본 발명에 의해 제공된 기술은 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬에 의해 표현되는 값으로서 버퍼에 저장된 수신값의 적어도 열에 재배열하는 처리 또는 상기 처리와 등가인 처리를 포함하는 재배열처리를 수행하는 기술이다. 따라서 본 발명에 의해 제공된 기술은, 노드 연산기에 수신값을 공급하는 동작의 제어로서 F×F 구성행렬에 대응하는 각각 F개의 수신값으로 구성된 단위로 노드 연산기에 수신값을 공급하는 동작을 실행하는 기술이라고도 할 수 있다.
따라서 본 발명에 의해 제공된 기술을 적용함으로써, P 코드를 복호하는 처리에서도, P개의 노드 연산기에 의해 연속적으로 수행되는 P개의 병렬처리가 단지 F개의 노드 연산기에 의해 동시에 수행되는 F개의 병렬처리로 감소될 수 있다. 또한, 시프트부도 P×P 사이클릭 시프트 연산 대신에 F×F 사이클릭 시프트 연산만 수행하면 된다. 더욱이, 각 메모리도 P개의 데이터 대신에 F개의 데이터만 동시에 읽고 쓸 수 있도록 하면 된다.
상기한 바와 같이, 본 발명에 의해 제공된 기술을 적용함으로써, 종래의 복호장치보다 전체적인 복호장치의 회로규모를 매우 작게 할 수 있다. 그러나, 상 세한 내용은 후술하나, 복수의 P의 약수가 존재하는 경우가 있다. 이러한 경우, 약수 F로서 가장 작은 약수를 취할 필요는 없다. 대신에, 약수 F로서, 전송 레이트(transmission rate) 및 동작 주파수(operation frequency)에 적절한 약수를 선택하는 것이 적합하다.
또한, 상세한 내용은 후술하나, 정수 P와는 다른 값이며 1이 아닌 정수 Q가 약수 F를 가지는 경우가 있다. 즉, 약수 F는 정수 P와 Q의 공약수이다. 이 경우, 본 발명에 의해 제공된 기술에 따른 F개의 병렬 노드 연산기를 이용하는 복호장치는 P 코드를 복호할 수 있을 뿐만 아니라 P 코드 또는 Q 코드를 선택적으로 복호할 수도 있다.
다음으로, 본 발명의 실시예에 따른 복호장치를 이하에 상세히 설명한다. 정수 P를 6(P=6)이라 하고 정수 P의 약수 F를 3(F=3)이라 한다. 이 경우, 본 발명에 의해 제공된 기술을 적용함으로써, 도 12의 블록도에 나타낸 바와 같은 구성을 가지는 복호장치를 구성할 수 있다. 즉, 도 12는 본 발명의 실시예가 적용된 복호장치의 대표적인 구성을 나타내는 블록도이다.
도 12의 블록도에 나타낸 복호장치는, 수신값 버퍼(500), 수신값 저장 메모리(501), 노드 연산부(5020, 시프트부(503), 메시지 저장 메모리(504), 복호결과 저장 메모리(505) 및 제어부(506)를 포함하는 구성을 가진다.
도 12의 블록도에 나타낸 대표적인 복호장치의 전체적인 구성은 제어부(506)를 제외하고 기본적으로는 도 10의 블록도에 나타낸 종래의 복호장치와 동일하다. 즉, 도 12의 블록도에 나타낸 대표적인 복호장치에서 각각 기능적 구성요소를 나 타내는 블록의 연결 및 각각의 개별적인(individual) 기능적 구성요소 중 하나에 의해 개별적인 기능적 구성요소의 기능으로서 수행되는 역할은 제어부(506)를 제외하고는 기본적으로 도 10의 블록도에 나타낸 종래의 복호장치와 동일하다. 그러나, 각 기능적 구성요소의 시점(standpoint)에서 보면, 도 12의 블록도에 나타낸 대표적인 복호장치와 도 10의 블록도에 나타낸 종래의 복호장치는 다음과 같은 차이가 있다.
복호장치와 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 각각의 수신값 버퍼(200), 수신값 저장 메모리(201), 메시지 저장 메모리(204) 및 복호결과 저장 메모리(205)는 P=6에 대하여 6개의 데이터(6비트)를 동시에 읽고 쓸 수 있도록 하는 구성을 가진다. 반면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 각각의 수신값 버퍼(500), 수신값 저장 메모리(501), 메시지 저장 메모리(504) 및 복호결과 저장 메모리(505)는 F=3에 대하여 3개의 데이터(3비트)를 동시에 읽고 쓸 수 있도록 하는 구성을 가진다.
또한, 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 시프트부(203)는 P=6일 때 P×P 사이클릭 시프트 연산을 수행할 수 있는 구성을 가진다. 반면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 시프트부(503)는 F=3일 때 F×F 사이클릭 시프트 연산을 수행할 수 있는 구성을 가진다.
더욱이, 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 노드 연산부(202)는 6개(P=6)의 노드 연산기(210-1 내지 210-6)를 가진다. 반면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 노드 연산부(502)는 단지 3개(F=3) 의 노드 연산기(510-1 내지 510-3) 만을 가진다.
따라서 도 10의 블록도에 나타낸 종래의 복호장치와 도 12의 블록도에 나타낸 대표적인 복호장치는 상기한 바와 같이 각 기능적 구성요소의 관점에서 본 차이가 있으므로, 도 10의 블록도에 나타낸 종래의 복호장치에 비하여 도 12의 블록도에 나타낸 대표적인 전체의 복호장치는 작은 회로규모를 가지는 장치로서 구성될 수 있다.
여기서 도 11의 블록도에 나타낸 구성을 가지는 노드 연산기(210)는 그대로 각각의 노드 연산기(510-1 내지 510-3)로서 사용될 수 있다. 노드 연산기(510-1 내지 510-3) 자신이 각각 도 11의 블록도에 나타낸 것과 다른 구성을 가진다고 하더라도, 본 발명이 도 12의 블록도에 나타낸 복호장치에 적용될 수 있음은 말할 것도 없다.
또한, 각각 배리어블 노드 연산기 및 체크 노드 연산기로서 사용되는 노드 연산기(510-1 내지 510-3) 대신에 3개의 체크 노드 연산기와 별개의 회로로서 3개의 배리어블 노드 연산기를 별도로 포함하는 구성을 가지는 복호장치에도 본 발명이 적용될 수 있음도 말할 것도 없다.
더욱이, 노드 연산기(510-1 내지 510-3)를 사용하지 않고 배리어블 노드 연산이 수행되는 경우에도 본 발명이 적용될 수 있음도 또한 말할 것도 없다.
다음으로, 도 12의 블록도에 나타낸 대표적인 복호장치에 의해 수행되는 동작에 대하여 설명한다.
여기서, 후술하는 바와 같이, 도 12의 블록도에 나타낸 것과 같은 대표적인 복호장치는 P가 약수 F를 가지는 임의의 정수값일 때 P 코드를 복호할 수 있다. 그러나, 도 12의 블록도에 나타낸 대표적인 복호장치와 도 10의 블록도에 나타낸 종래의 복호장치의 비교를 쉽게 하기 위해, 이하의 도 12의 블록도에 나타낸 복호장치에 의해 수행되는 동작의 설명에 있어서, 복호대상은 도 9에 나타낸 바와 같이 각각 6×6 구조를 구성행렬로 구성된 가지는 패리티 검사행렬에 의해 정의되는 P(=6) 코드인 것으로 가정한다.
수신값 버퍼(500)는 데이터(D500)가 데이터(D501)로서 수신값 저장 메모리(501)에 전송되기 전에 통신로(communication line)로부터 수신된 1 코드의 크기를 가지는 데이터(D500)를 저장하기 위해 사용되는 버퍼이다.
패리티 검사행렬의 열을 재배열하는 재배열처리는 코드-비트 열(code-bit sequence)의 코드 비트를 재배열하는 처리에 해당한다. 따라서 제어부(506)에 의해 실행되는 제어에 따라, 수신값 버퍼(500)에 저장된 데이터(D500)의 재배열처리가 다음과 같이 수행된다.
도 9에 나타낸 패리티 검사행렬은 각각 재배열 단위(rearrangement unit)로서 취해지는 6×6 구성행렬의 집합체(aggregate)로서 취급된다. 각각의 6×6 구성행렬은 6×6 구성행렬을 도 13 및 도 14에 나타낸 바와 같이 미리 정해진 규칙에 근거하여 3×3 구성행렬의 집합체인 재배열 후 행렬(post-rearrangement matrix)로 재배열하는 재배열처리된다. 미리 정해진 규칙에 따라, 도 14에 나타낸 각각의 3×3 구성행렬은 각각의 행 번호를 2로 나눈 결과로서 얻어지는 나머지가 동일하게 되는 행을 가지는 특정한 행과 각각의 열 번호를 2로 나눈 결과로서 얻어지는 나머 지가 동일하게 되는 열을 가지는 특정한 열로 구성되는 행렬이다. 따라서 3×3 구성행렬은, 각각 짝수 또는 홀수의 행 번호를 가지는 행과 각각 짝수 또는 도 14에 나타낸 바와 같은 열 번호를 가지는 열로 구성된 행렬이다. 다시 말하면, 도 13에 나타낸 6×6 구성행렬은 도 14에 나타낸 3×3 구성행렬과 같이 4개로 구분될 수 있다.
더 상세하게는, 도 13을 참조하면, 도 13은 도 9에 나타낸 바와 같이 각각 6×6 구조를 가지는 구성행렬로 구성된 패리티 검사행렬의 대표적인 6×6 시프트 행렬을 나타내는 도면이다. 도 13에 있어서, 원(○)으로 둘러싸인 각 숫자는 열 번호인 반면 사각형(□)으로 둘러싸인 숫자는 행 번호이다.
일례로서, 6×6 시프트 행렬을 도 14에 나타낸 바와 같이 4개의 3×3 구성행렬로 구성된 재배열 후 행렬로 변환하기 위해 도 13에 나타낸 6×6 시프트 행렬에 상기한 규칙에 따른 재배열처리가 행해진다. 도 14에 나타낸 재배열 후 행렬은 점선을 사용하여 도 14에 나타낸 바와 같이 2개의 3×3 영행렬, 하나의 3×3 준단위행렬 및 하나의 3×3의 시프트 행렬로 구성되는 4개의 3×3 구성행렬로 구분된다는 것은 명백하다.
도 9에 나타낸 바와 같이 각각 6×6 구조를 가지는 구성행렬로 구성된 패리티 검사행렬을 구성하는 각각의 다른 6×6 구성행렬에 상기한 재배열처리가 행해진다. 결과적으로, 도 9에 나타낸 바와 같이 각각 6×6 구조를 가지는 구성행렬로 구성된 패리티 검사행렬은 도 15에 나타낸 구조를 가지는 재배열 후 행렬로 재배열된다. 여기서, 각각 3×3 구조를 가지는 구성행렬로서 도 9에 나타낸 바와 같은 6×6 구조를 각각 가지는 구성행렬로 구성된 패리티 검사행렬을 재배열하는 처리의 결과로서 얻어지는 각각의 구성행렬을 구분하기 쉽게 하기 위해, 도 15에 나타낸 패리티 검사행렬의 3×3 구성행렬 사이에는 간격(gap)을 비우고 있다. 도 15에 나타낸 대표적인 배열 후 행렬은 3×3 단위행렬, 3×3 준단위행렬, 3×3 시프트 행렬, 3×3 합행렬, 3×3 영행렬을 포함한다.
따라서, 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 수신값 저장 메모리(201)에 이어지는 단(following stage)에서 수행되는 동작이 P=8에 대한 동작인 반면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 F=3에 대한 동작인 점만 제외하면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 수신값 저장 메모리(201)에 이어지는 단에서 수행되는 동작과 유사하다. 다시 말하면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 도 12의 블록도에 나타낸 대표적인 복호장치가 P=3일 때 P 코드를 복호하는 장치인 것처럼 수행되는 동작과 완전히 동일하다.
재배열된 코드 비트를 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 버퍼(500)에 통신로를 통하여 출력하기 전에 수신된 코드 비트를 재배열하는 방법이 전송방식으로서 첫 번째로 실행되면, 코드 비트는 상기한 재배열처리와 동시에 반전법(inverse manner)으로 수신값 버퍼(500)에서 재배열된다. 상기 한 재배열처리와 동시에 반전법으로 코드 비트를 재배열하는 대신에, 코드 비트는 재배열처리 전 또는 후에 수신값 버퍼(500)에서 재배열될 수 있다.
상기한 설명에서는, 정수 P인 6(P=6)의 약수로서 약수 F는 3(F=3)을 채용하였다. 물론, 상기한 바와 같이 약수는 1이 아닌 약수이어야 하므로 약수 F는 1을 제외하고 정수 P(=6)의 다른 약수 F(즉, 약수 F는 2) 또한 채용될 수 있다. 그러나, 이 경우, 재배열처리는 상기한 바와 같이 미리 장해진 규칙에 따라 도 9에 나타낸 각각 6×6 구조를 가지는 구성행렬로 구성된 패리티 검사행렬에 수행된다. 각각의 6×6 구성행렬에 6×6 구성행렬을 도 16에 나타낸 재배열 후 행렬로 재배열하는 처리가 행해진다. 도 16에 나타낸 바와 같이, 재배열 후 행렬은 각 행렬이 각각의 행 번호를 3으로 나눈 결과로서 얻어지는 나머지가 동일하게 되는 행 번호를 가지는 특정한 행과 각각의 열 번호를 3으로 나눈 결과로서 얻어지는 나머지가 동일하게 되는 열번호를 가지는 특정한 열로 구성되는 2×2 구성행렬의 집합체이다.
구체적으로는, 예를 들면, 6×6 시프트 행렬을 도 16에 나타낸 바와 같은 9개의 2×2 구성행렬로 구성된 재배열 후 행렬로 변환하기 위해 도 13에 나타낸 6×6 시프트 행렬에 상기한 규칙에 따른 재배열처리가 행해진다. 도 16에 나타낸 재배열 후 행렬이 점선을 사용하여 2×2 영행렬, 2×2 준단위행렬 및 2×2 시프트 행렬로 구성되는 9개의 2×2 구성행렬로 구분된다는 것은 명백하다.
따라서, 약수 F가 2인 경우도, 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 수신값 저장 메모리(201)에 이어지는 단에서 수행되는 동작은 6=P에 대한 동작인 반면 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 F=2에 대한 동작이라는 점을 제외하면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 도 10의 블록도에 나타낸 종래의 복호장치에 이용되는 수신값 저장 메모리(201)에 이어지는 단에서 수행되는 동작과 유사하다. 다시 말하면, 도 12의 블록도에 나타낸 대표적인 복호장치에 이용되는 수신값 저장 메모리(501)에 이어지는 단에서 수행되는 동작은 도 12의 블록도에 나타낸 대표적인 복호장치가 P=2에 대한 LDPC 코드를 복호하는 장치인 것처럼 수행되는 동작과 완전히 동일하다.
즉, F=2에 대하여, 복호장치는 도 12의 블록도에 나타낸 구성을 적용할 필요는 없다. 다시 말하면, 2개의 병렬 노드 연산기, 2×2 사이클릭 시프트 연산을 수행하는 시프트부 및 각각 2개의 데이터(또는 2비트)를 동시에 읽고 쓸 수 있도록 하는 메모리를 포함하는 구성을 취하면 적합하다.
또한, 지금까지 상기한 실시예는 P=6에 대한 실시예이었다. 그러나, 당연히 본 발명은 6 이외의 정수 P의 경우에도 적용될 수 있다. 예를 들면, 본 발명은 P=360일 때 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬에 적용될 수 있다. 이러한 식으로, 본 발명에 따른 기술은 임의의 P값의 경우에도 적용될 수 있다. 또한, 본 발명에 의해 제공되는 기술에 따르면, 정수 P의 값이 결정된 후, 1 이외의 임의의 약수를 F를 채용할 수 있다.
즉, 정수 P의 값과 그 정수 P의 1이 아닌 약수 F가 결정된 후, 이하의 규칙 에 따른 재배열처리가, F개의 병렬 노드 연산기, F×F 사이클릭 시프트 연산을 수행하는 시프트부 및 각각 F개의 데이터(또는 F비트)를 동시에 읽고 쓸 수 있도록 하는 메모리를 포함하는 구성을 구현하기 위해 LDPC 코드에 속하는 P 코드를 정의하는 패리티 검사행렬로서 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬에 수행된다.
상기한 규칙에 따르면, 일반적으로, 각각 P×P 구조를 가지는 각각의 구성행렬은, 행 번호가 패리티 검사행렬을 구성하는 각각의 P×P 구성행렬에 포함되는 P개의 행에 각각 할당되는 번호로서 0에서 (P-1)까지의 범위에 포함되는 번호이고 열 번호가 패리티 검사행렬을 구성하는 각각의 P×P 구성행렬에 포함되는 P개의 열에 각각 할당되는 번호로서 0에서 (P-1)까지의 범위에 포함되는 번호이고 일 때, 식 P=F×J로부터 유도되는 J(=P/F)로 행 번호를 나눈 결과로서 얻어지는 나머지가 동일한 행 번호를 각각 가지는 행과 J로 열 번호를 나눈 결과로서 얻어지는 나머지가 동일한 열 번호를 각각 가지는 열로 각각 구성된 F×F 구성행렬로 구분된다.
여기서, 상기한 바와 같이, 재배열처리는, 각각 F×F 구조를 가지는 구성행렬로 구성된 배열 후 행렬을 생성하기 위해 각각 P×P 구조를 가지는 구성행렬로 구성된 행렬로서 버퍼에 저장된 패리티 검사행렬을 재배열하고 메모리를 통하여 노드 연산기에 배열 후 행렬을 공급하기 전에 배열 후 행렬을 버퍼에 다시 저장하는 처리에 한정되는 것을 아니다. 즉, 상기한 실시예의 경우, 재배열처리는, 각각 F×F 구조를 가지는 구성행렬로 구성된 배열 후 행렬을 생성하기 위해 각각 P×P 구조를 가지는 구성행렬로 구성된 행렬로서 수신값 버퍼(500)에 저장된 패리티 검 사행렬을 재배열하고 수신값 저장 메모리(501)를 통하여 노드 연산부(502)에 배열 후 행렬을 공급하기 전에 배열 후 행렬을 수신값 버퍼(500)에 다시 저장하기 위해 수행되었다. 그러나, 배열처리와 등가인 처리를 제공하는 동등한 기술에 따르면, 등가의 처리도 또한 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬을 구성하는 인커밍 형태 그대로 수신값 버퍼(500)에 데이터를 저장하고, 그 후, 노드 연산부(502)에 데이터를 공급하기 위한 동작 전에 각각 F×F 구조를 가지는 구성행렬로 구성된 배열 후 행렬을 생성하기 위해 상기한 소정의 규칙에 따라 수신값 저장 메모리(501)에서 각각 P×P 구조를 가지는 구성행렬로 구성된 패리티 검사행렬의 행 및/또는 열을 재배열하기 위해 수행될 수 있다. 즉, 데이터는 미리 정해진 규칙에 따라 수신값 저장 메모리(501)로부터 선택적으로 읽어내 지고 노드 연산부(502)에 공급된다. 다시 말하면, 재배열처리는 등가의 기술에 따른 등가의 처리를 포함하는 광범위한 개념(broad concept)의 처리이다. 여기서, 상기한 소정의 규칙에 따라 수신값 저장 메모리(501)로부터 데이터를 읽어내는 동작의 제어를 위한 부분으로서 제어부를 설계하는 것에 의해, 제어가 용이하게 실행될 수 있다. 도 12의 블록도에 나타낸 복호장치의 경우, 제어부(506)는 이러한 제어부로서 기능한다.
또한, 상기한 실시예는, 예시에 지나지 않는 인코딩률(encoding ratio) 2/3 및 코드길이 108에 대하여 제공된 실시예이다. 즉, 예를 들면, P=6이고 에지의 총 수(total number)가 같거나 작으면, 임의의 코드길이와 임의의 인코딩률이 채용되더라도, 단순히 제어신호를 바꾸는 것만으로 동일한 복호장치가 데이터를 복호하 기 위해 사용될 수 있다. 더욱이, 동일한 P값, 미리 정해진 값을 초과하지 않는 코드길이 및 미리 정해진 정수보다 크지 않은 총 에지 수를 사용한다는 조건을 만족하는 데이터를 복호하는 장치로서 설계된 복호장치는 또한 상기 조건을 만족하는 코드길이를 가지나 인코딩률이 다른 데이터도 복호할 수 있다.
지금까지 설명한 내용을 정리하면 다음과 같다. 본 발명을 적용함으로써, P값에 복호처리의 병렬도(degree of parallelism)를 나타내는 약수 F의 값이 정수 P 자신의 값에 의해 구속되는 일이 없이 전송률과 동작주파수에 따라 정수 P의 약수의 범위 내에서 임의로 선택될 수 있다. 그 결과, 복호장치의 회로규모가 더 작아질 수 있다.
예를 들면, P=360일 때, 그 약수 F는 360, 180 및 120의 값을 포함하는 범위에서 임의로 선택될 수 있다. 약수 F가 상기한 바와 같이 병렬 노드 연산기의 수인 것으로부터도 명백한 바와 같이, 본 발명의 적용은 또한 약수 F의 값이 복호장치의 병렬도를 나타내는 값이라 할 수 있음을 의미한다. 이러한 이유로, 복호장치의 개발자들은 복호장치의 병렬도를 고려하면서 전송률과 동작주파수에 대하여 최적인 약수 F를 선택하도록 하였다.
즉, 요구되는 전송률에 대하여 정수 P의 큰 약수 F가 선택되면, 복호장치의 병렬도가 실제로 요구되는 값보다 높아질 수 있다. 따라서 데이터는, 복호처리를 수행하기 위해 요구되는 시간이 복호장치의 높은 병렬도로 인해 짧으므로 복호처리를 수행하기 위해 요구되는 시간의 길이보다 긴 간격(interval)으로만 도착한다. 이러한 이유로, 최적의 약수 F는 따라서 각각의 간격이 복호처리를 수행하 기 위해 요구되는 시간의 길이와 거의 동일하도록 정수 P의 약수의 범위에서 선택된다. 이 경우, 약수 F는 복호장치의 병렬도를 줄이도록 감소된다. 그 결과, 복호장치의 회로규모가 더 작아질 수 있다. 또한, 복호장치의 회로가 장래 고속으로 동작하게 되면, 복호장치에 낮은 병렬도를 제공하기 위해 훨씬 더 작은 약수 F가 선택될 수 있다. 이러한 경우라도, 종래의 복호장치와 동일한 성능을 달성할 수 있다.
또한, 정수 P와 정수 P보다 작은 정수 Q(P > Q)가 공약수를 가지면, 복호장치의 병렬도를 나타내는 약수 F로서 그 공약수를 채택하는 복호장치는 P와 Q 코드 모두를 복호할 수 있다.
따라서, 큰 P값을 가지는 코드가 높은 전송률이 요구되는 서비스에 대하여 선택되고 반면 작은 Q값을 가지는 코드가 높은 전송률이 요구되지 않는 휴대형 수신기의 서비스에 대하여 선택되더라도, 두 개의 서비스에 공통인 수신장치로서 높은 전송률이 요구되는 서비스의 코드와 휴대형 수신기를 위한 서비스의 코드를 복호할 수 있는 복호기능을 가지는 수신장치를 구현하기 위해 동일한 복호장치가 사용될 수 있다.
즉, 공통 수신장치의 실현은 P 코드와 Q 코드가 모두 전송 시스템 내에 공존하도록 한다.
예를 들면, DVB-S.2 LDPC 코드가 8 PSK(Phase Shift Keying) 및 30 Msym/s로 송신되는 경우, 코드 비트의 비트 레이트(bit rate)는 90 Mbps이다. 패리티 검사행렬의 열 중량치(column weight)의 평균은 약 3.5 정도이므로, 복호처리가 50회 반복된다고 가정하면, 각각의 코드 비트에 대하여 요구되는 연산량은 대략 3.5×50×2=350 정도이다. 따라서 클럭 주파수(clock frequency)는 회로의 효율성을 반영하는 값 1.5를 연산량에 곱한 결과로서 얻어지는 곱(product)으로 설정될 필요가 있다. 따라서 복호장치는, 코드 비트의 비트 레이트의 값이 90 Mbps이고, 각각의 코드에 대하여 요구되는 처리량의 값이 350이며, 회로의 효율성을 반영하는 값이 1.5이고, 복호장치의 병렬도를 나타내는 값이 360일 때, 131.25 MHz(= 90 Mbps×350×1.5/360)의 동작주파수로 동작할 필요가 있다.
이 경우, 복호처리의 병렬성을 나타내는 P=360에 대한 종래의 복호장치는 360개의 데이터를 동시에 읽고 쓸 수 있도록 하는 메모리로서 다수의 RAM을 요구하였다. 이러한 RAM은 큰 비트 수의 데이터를 저장하기 위해 요구되는 각각의 RAM의 저장용량을 나타내는 워드 수가 작은 이유로 인해 나쁜 면적 효율(poor area efficiency)을 나타낸다. 또한, 종래의 복호장치는 360개의 노드 연산기도 요구한다. 그 결과, 종래의 복호장치의 회로규모는 극도로 큰 것이었다.
따라서, DVB-S.2 LDPC 코드가 상술의 90 Mbps보다 낮은 전송률을 가지는 전송 시스템에 적용되는 경우를 가정하면, 복호처리의 병렬도를 나타내는 약수 F를 60(F=60)으로 설정한다고 해도, 동일한 동작주파수와 동일한 복호처리의 반복회수를 실현할 수 있고, 따라서, 동일한 복호성능을 달성할 수 있다. 90 Mbps보다 낮은 전송률의 예로서는, 15 Mbps의 전송률이 있다.
복호처리의 병렬도를 나타내는 약수 F가 60(F=60)으로 설정되면, 메모리는 60개의 데이터만을 동시에 읽고 쓸 수 있도록 하면 충분하다. 따라서, 메모리를 구성하는 경우에, 저장되는 데이터의 비트 수가 더 작으므로, 기존에 사용되던 RAM의 6배의 워드 수를 각각 가지는 새로운 RAM을 총 수가 동일하게 채택할 수 있다. 상기한 바와 같이 나쁜 면적 효율을 나타내는 RAM으로서 기존에 사용되던 RAM과 비교하여, 각각의 새로운 RAM은 면적 효율을 크게 개선하는 작은 물리적 크기를 가져야 한다. 선택적으로, 기존에 사용되던 RAM과 동일한 워드 수를 각각 가지는 더 적은 수의 새로운 RAM이 사용될 수 있다. 어느 경우에도, 같은 비트 수를 저장하기 위해 사용되는 면적의 효율은 실질적으로 더욱 개선된다. 또한, 요구되는 병렬 노드 연산기의 수도 단지 60개뿐이므로, 종래의 복호장치의 회로규모가 훨씬 더 감소 될 수 있다.
즉, DVB-S.2 LDPC 코드가, 예를 들면, 지상파 방송에 이용되는 경우, 소비전력의 문제로 인해 휴대형 이동 수신기를 사용하여 지상파를 수신하는 것은 어렵다. 이러한 어려움을 해결하기 위해, 예를 들면, 휴대형 이동 수신기 전용 서비스로서 Q=60에 대한 코드보다 더 짧은 코드길이를 가지는 코드를 이용하여 서비스가 실시되는 경우를 가정할 수 있다. 이러한 경우에 대하여도, 본 발명을 적용함으로써, 복호처리의 병렬도를 나타내는 값으로서 60으로 설정된 약수 F(F=60)를 가지는 복호장치를 용이하게 구현할 수 있다. 이러한 복호장치는 코드길이가 64,800인 코드까지 복호할 수 있고 P(=360) 코드와 Q(=60) 코드를 모두 복호할 수 있다. 따라서 이러한 복호장치를 가지는 수신기는, 고정 수신기(stationary receiver)용 서비스 및 휴대형 수신기용 서비스를 수신할 수 있다. 고정 수신기용 서비스는 P(=360) 코드를 사용하는 서비스인 반면 휴대형 수신기용 서비스 는 Q(=60) 코드를 사용하는 서비스이다.
지금까지 설명한 내용을 정리하면 다음과 같다. 본 발명을 적용함으로써, 종수 P의 약수 F에 근거하여 큰 P값을 가지는 LDPC 코드를 복호하는 복호장치를 구현할 수 있다. 즉, 낮은 비트 레이트를 가지는 전송 시스템 및 처리속도가 증가된 회로를 가지는 미래의 시스템을 위한 복호장치를 구현할 수 있다. 종래의 복호장치와 비교하여, 본 발명의 실시예에 따른 복호장치는 작은 회로규모를 가진다.
또한, 본 발명을 적용함으로써, 복수의 약수 F를 가지는 정수 P에 근거하는 코드가 모든 약수 F에 근거하여 설계된 복호장치에 의해 복호될 수 있다. 따라서, 서로 다른 전송률 및 서로 다른 수신기용의 다른 서비스에 따라 적합하게 조정된 크기를 가지는 LDPC 코드가 하나의 전송 시스템에서 공존할 수 있게 된다.
즉, 상기한 대표적인 전송 시스템에서는 P 코드와 Q 코드의 오직 2개의 다른 종류만이 사용되었으나, 일반적으로는, 부호(α)가 사용되는 코드의 종류(type)를 나타내고 부호(K)는 사용된 코드의 다른 종류의 수를 나타낸다고 할 때, K개의 다른 종류의 α코드(P 코드 및 Q 코드와 같은)가 사용될 수 있다. 다른 종류의 수는 2와 같거나 크다(K≥2). 부호(K)는 또한 시스템 설계자 등에 의해 각각 1이 아닌 약수 F인 복수의 다른 정수로부터 선택된 정수의 수를 나타낸다. 즉, 사용될 수 있는 서로 다른 α코드의 수도 또한 K이다.
그런데 상기한 일련의 처리는, 하드웨어 및/또는 소프트웨어의 실행에 의해 수행될 수 있다.
상기한 일련의 처리가 소프트웨어의 실행에 의해 수행되는 경우, 소프트웨어 를 구성하는 프로그램은 본 발명의 실시예에 따른 복호장치를 구현하는 컴퓨터에 의해 실행된다. 컴퓨터는 도 17의 블록도에 나타낸 것과 같은 구성을 가진다.
도 17의 블록도에 나타낸 복호장치에 있어서, CPU(Central Processing Unit)(1001)는 ROM(Read Only Memory)(1002)에 저장된 프로그램 또는 저장부(1008)로부터 RAM(Random Access Memory)(1003)으로 로드된 프로그램의 실행에 의해 다양한 처리를 수행한다. RAM(1003)은 또한 CPU(1001)가 각종 처리의 실행에 요구되는 데이터와 같은 각종 정보를 적절하게 저장하기 위해서도 사용된다.
CPU(1001), ROM(1002) 및 RAM(1003)은 버스(1004)를 통하여 서로 접속되어 있으며, 또한, 입력/출력 인터페이스(1005)에도 접속되어 있다.
입력/출력 인터페이스(1005)는 입력부(input block)(1006), 출력부(output block)(1007), 상기한 저장부(storage block)(1008)) 및 통신부(communication block)(1009)와 연결되어 있다. 입력부(1006)는 키보드와 마우스를 포함하는 반면 출력부(1007)는 표시부(display unit)를 포함한다. 저장부(1008)는 하드디스크를 포함한다. 통신부(1009)는 모뎀이나 터미널 어댑터(terminal adaptor)를 가진다. 통신부(1009)는 네트워크(인터넷과 같은)를 통하여 도면의 블록도에는 도시하지 않은 다른 장치와 통신처리를 수행하는 부분이다.
입력/출력 인터페이스(1005)는 또한 필요에 따라 기록매체가 탑재된 드라이브(1010)에 접속된다. 기록매체는 자기 디스크, 광디스크, 광자기 디스크 또는 반도체 메모리가 될 수 있는 리무버블 매체(removable medium)(1111)이다. 상기한 바와 같이, CPU(1001)에 의해 실행되는 컴퓨터 프로그램은 리무버블 매체(1111) 로부터 저장부(1008)에 설치된다(installed).
앞서 설명한 바와 같이, 상기한 일련의 처리는, 하드웨어 및/또는 소프트웨어의 실행에 의해 수행될 수 있다. 상기한 일련의 처리가 소프트웨어의 실행에 의해 수행되는 경우에는, 그 소프트웨어를 구성하는 프로그램이 일반적으로 네트워크 또는 리무버블 매체(1111)로부터 전용의 하드웨어, 범용 개인용 컴퓨터(general-purpose personal computer) 등에 포함되는 컴퓨터에 설치될 수 있다. 이 경우, 컴퓨터 또는 개인용 컴퓨터는 복호장치로서 기능하는 컴퓨터로서 상기한 바와 같은 컴퓨터이다. 범용 개인용 컴퓨터는 퍼스널 컴퓨터로서, 다양한 종류의 프로그램을 퍼스널 컴퓨터에 설치함으로써 다양한 기능을 수행할 수 있도록 만들어질 수 있다.
컴퓨터 또는 개인용 컴퓨터에 의해 각각 실행되는 프로그램으로서 컴퓨터 또는 개인용 컴퓨터에 설치되는 프로그램을 기록하기 위한 상기 리무버블 매체(1111)는 도 17의 블록도에 나타낸 바와 같이 복호장치의 본체(main unit)와는 별도로 사용자에게 제공되는 리무버블 기록매체이다. 리무버블 기록매체의 예는 또한 플렉시블 디스크(flexible disk)를 포함하는 자기 디스크, CD-ROM(Compact Disk-Read Only Memory) 또는 DVD(Digital Versatile Disk와 같은 광디스크, MD(Mini-Disk) 와 같은 광학 자기 디스크 및 반도체 메모리를 포함하는 패키지 매체(package medium)로서 언급된다. 리무버블 기록매체로부터 프로그램을 설치하는 대신에, 프로그램은 복호장치 본체에 포함되는 내장 기록매체에 미리 저장될 수도 있다. 내장 기록매체의 예로서는 저장부(1008)에 포함되는 하드디스크 및 ROM(1002)이 있 다.
여기서, 본 명세서에서, 상기한 플로차트의 단계는 시간축(time axis)을 따라 상기한 순서로 수행될 수 있는 것뿐만 아니라, 병렬적 또는 개별적으로 수행될 수도 있다.
또한, 본 발명의 청구의 범위 또는 그와 동등한 범위 내에서 설계상의 필요(design requirements) 및 기타 다양한 요인(factor)에 따라, 당업자에 의해 다양한 수정(modifications), 결합(combinations), 부분결합(sub-combinations) 및 대체(alternations) 등이 일어날 수 있음은 당연한 일이다.
또, 본 명세서에 사용된 "시스템"이란 기술용어는 복수의 장치를 포함하는 집합체(confluence)의 구성을 의미하는 것이다.
도 1은 LDPC 코드를 정의하는 대표적인 성긴(sparse) 패리티 검사행렬을 나타내는 도면이다.
도 2는 LDPC 코드를 정의하는 패리티 검사행렬로서 하 삼각행렬을 포함하는 대표적인 패리티 검사행렬을 나타내는 도면이다.
도 3은 LDPC 코드를 복호하기 위해 수행되는 일련의 처리를 설명하기 위한 플로차트(flow chart)이다.
도 4는 메시지의 흐름을 설명하기 위한 설명도이다.
도 5는 (3, 6) 코드의 LDPC 코드를 정의하는 대표적인 패리티 검사행렬을 나타내는 도면이다.
도 6은 도 5에 나타낸 패리티 검사행렬을 표현하는 태너 그래프를 나타내는 도면이다.
도 7은 메시지를 계산하기 위해 배리어블 노드에서 수행되는 처리의 설명에 참조되는 설명도이다.
도 8은 메시지를 계산하기 위해 체크 노드에서 수행되는 처리의 설명에 참조되는 설명도이다.
도 9는 각각 6×6 구조를 가지는 구성행렬로 구성된 대표적인 패리티 검사행렬을 나타내는 도면이다.
도 10은 P=6인 LDPC 코드로서 상기한 바와 같은 LDPC 코드를 사용하여 코딩된 데이터를 복호하기 위한 대표적인 종래의 복호 장치를 나타내는 블록도이다.
도 11은 도 10에 나타낸 복호장치에 포함된 노드 처리부에 이용되는 노드 연산기의 대표적인 구성을 나타내는 블록도이다.
도 12는 P=6인 LDPC 코드로서 상기한 바와 같은 LDPC 코드를 사용하여 코딩된 데이터를 복호하기 위한 본 발명의 실시예에 의해 제공된 대표적인 복호장치를 나타내는 블록도이다.
도 13은 패리티 검사행렬의 구성행렬로서 사용되는 대표적인 6×6 시프트 행렬을 나타내는 도면이다.
도 14는 3×3 구성행렬을 생성하기 위하여 도 13에 나타낸 시프트 행렬에서 행과 열을 재배열하기 위해 수행되는 처리의 과정을 설명하기 위해 참조되는 설명도이다.
도 15는 도 9에 나타낸 대표적인 6×6 구조의 패리티 검사행렬에 도 14의 설명도에 나타낸 처리의 실행결과로서 얻어지는 후재배열 행렬(post-rearrangement matrix)로서 각각 3×3 구조를 가지는 구성행렬로 구성된 후재배열 행렬을 나타내는 도면이다.
도 16은 2×2 구성행렬을 생성하기 위해 도 13에 나타낸 6×6 시프트 행렬의 행과 열을 재배열하기 위해 수행되는 처리의 과정을 설명하기 위해 참조되는 설명도이다.
도 17은 본 발명의 다른 실시예에 따른 복호장치로서 컴퓨터 기능(computer functioning)의 대표적인 구성을 나타내는 블록도이다.
[부호의 설명]
500. 수신값 버퍼 501. 수신값 저장 메모리
502. 노드 연산부 503. 시프트부
504. 복호결과 저장 메모리 505. 메시지 저장 메모리
1001. CPU 1002. ROM
1003. RAM 1005. 입력/출력 인터페이스
1006. 입력부 1007. 출력부
1008. 저장부 1009. 통신부
1110. 드라이브 1111. 리무버블 미디어

Claims (7)

  1. P×P 단위행렬(unit matrix), 상기 P×P 단위행렬의 하나 이상의 각 행렬원소(matrix elements)의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬(semi unit matrix), 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산(cyclic shift operation)을 수행한 결과로서 얻어지는 P×P 시프트 행렬(shift matrix), 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬(zero matrix) 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 P×P 합행렬(sum matrix)을 포함하는 복수의 제 1 구성행렬(first configuration mztrix)을 조합하여(combining) 얻어지는 제 1 구조(first structure)를 가지는 오리지널 패리티 검사행렬(original parity check matrix)에 의해 표현되거나, 또는, 부호 P가 정수(integer)일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행(row)과 한 열(column)을 재배열(rearranging)함으로써 얻어지는 행렬에 의해 표현되는 LDPC(Low Density Parity Check) 코드를 복호하는 복호장치에 있어서,
    상기 복호장치는,
    부호 F가 상기 정수 P의 1 이외의 약수(non-unity measure)일 때, F개의 체크 노드 연산(check-node process) 또는 F개의 배리어블 노드 연산(variable-node process)을 병렬적으로(concurrently) 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값(received value)을 복호하고, 상기 F개의 체크 노드 연 산 또는 상기 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산수단(message computation means)과,
    상기 메시지 계산수단에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트 수단(shift means)과,
    상기 시프트 수단에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 저장수단(storing means)과,
    제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산(matrix addition operation)을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리(column rearrangement process) 또는 상기 열 재배열 처리와 동등한(equivalent) 처리를 수행함으로써 상기 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위(unit)를 상기 메시지 계산수단에 공급하는 동작을 제어하는 제어수단(means for controlling)을 포함하여 구성된 것을 특징으로 하는 복호장치.
  2. 제 1항에 있어서,
    상기 열 재배열 처리는, 상기 제 1 구조를 가지는 상기 패리티 검사행렬을 구성하는 각각의 상기 제 1 구성행렬에 포함되는 각 P개의 열에 할당되는(assigned) 번호(number)로서 0에서 (P-1)까지의 범위에 포함되는 번호를 열 번호(column number)라 할 때, 식 P=F×J로부터 유도되는, P/F인, J로 상기 열 번호를 나눈(dividing) 결과로 얻어지는 나머지(remainder)가 동일한 열 번호를 각각 가지는 열로 각각 구성된 상기 제 2 구성행렬로 각각의 상기 제 1 구성행렬을 구분하기(compartmentalize) 위한 처리단위(process unit)로서 각각의 상기 제 1 구성행렬을 취하는(taking) 것에 의해 각각 처리대상(process object)으로서 기능하는 각각의 상기 제 1 구성행렬의 열을 재배열하는 동작을 행함으로써 수행되는 처리를 포함하도록 구성된 것을 특징으로 하는 복호장치.
  3. 제 1항에 있어서,
    상기 복호장치는, 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 상기 수신값을 버퍼링하는 버퍼수단(buffer means)을 더 포함하고,
    상기 제어수단은, 인커밍 형태(incoming shape)를 상기 제 2 구조를 가지는 상기 행렬에 적합한(conforming) 다른 형태로 변환하기 위해 상기 버퍼수단의 상기 제 1 구조를 가지는 상기 행렬에 적합한 상기 인커밍 형태로 수신된 상기 수신값을 재배열하는 버퍼링 제어(buffering control)를 실행하며,
    상기 제어수단은, 상기 제 2 구조를 가지는 상기 행렬에 적합한 상기 다른 형태로 상기 버퍼수단에 이미 버퍼링된 상기 수신값을 상기 제 2 구조를 가지는 상기 행렬의 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 각각 구성된 단위로 상기 저장수단을 통하여 상기 메시지 계산수단에 공급하는 제어를 실행하도록 구성된 것을 특징으로 하는 복호장치.
  4. 제 1항에 있어서,
    상기 제어수단은, 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 적합한 인커밍 형태로 수신된 상기 수신값으로부터 상기 수신값의 후 재배열 형태(post-rearrangement shape)에 적합한 상기 제 2 구조를 가지는 상기 행렬의 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값을 선택하고, 상기 F개의 수신값을 상기 저장수단을 통하여 상기 메시지 계산수단에 공급하도록 구성된 것을 특징으로 하는 복호장치.
  5. LDPC(Low Density Parity Check) 코드를 복호하는 복호장치에 적용되는 복호방법에 있어서,
    상기 LDPC 코드는,
    P×P 단위행렬, 상기 P×P 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬, 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 P×P 시프트 행렬, 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 P×P 합행렬을 포함하는 복수의 제 1 구성행렬을 조합하여 얻어지는 제 1 구조를 가지는 오리지널 패리티 검사행렬에 의해 표현되거나, 또는, 부호 P가 정수일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행과 한 열을 재배열함으로써 얻어지는 행렬에 의해 표현되고,
    상기 복호장치는,
    부호 F가 상기 정수 P의 1 이외의 약수(non-unity measure)일 때, F개의 체크 노드 연산(check-node process) 또는 F개의 배리어블 노드 연산(variable-node process)을 병렬적으로(concurrently) 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값(received value)을 복호하고, 상기 F개의 체크 노드 연산 또는 상기 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산수단(message computation means)과,
    상기 메시지 계산수단에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트 수단(shift means)과,
    상기 시프트 수단에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상 기 F개의 메시지를 읽어내거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 저장수단(storing means)을 포함하여 구성되며,
    상기 복호장치가,
    제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리 또는 상기 열 재배열 처리와 동등한 처리를 수행함으로써 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위를 상기 메시지 계산수단에 공급하는 동작을 제어하는 단계를 실행하도록 구성된 것을 특징으로 하는 복호방법.
  6. LDPC(Low Density Parity Check) 코드를 복호하는 복호장치로서 기능하는 컴퓨터에 의해 실행되는 프로그램에 있어서,
    상기 LDPC 코드는,
    P×P 단위행렬, 상기 P×P 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬, 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 P×P 시프트 행렬, 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 P×P 합행렬을 포함하는 복수의 제 1 구성행렬을 조합하여 얻어지는 제 1 구조를 가지는 오리지널 패리티 검사행렬에 의해 표현되거나, 또는, 부호 P가 정수일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행과 한 열을 재배열함으로써 얻어지는 행렬에 의해 표현되고,
    상기 복호장치는,
    부호 F가 상기 정수 P의 1 이외의 약수(non-unity measure)일 때, F개의 체크 노드 연산(check-node process) 또는 F개의 배리어블 노드 연산(variable-node process)을 병렬적으로(concurrently) 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값(received value)을 복호하고, 상기 F개의 체크 노드 연산 또는 상기 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산수단(message computation means)과,
    상기 메시지 계산수단에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트 수단(shift means)과,
    상기 시프트 수단에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된(cited above) F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 하는 저장수단(storing means)을 포함하여 구성되며,
    상기 프로그램은,
    제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리 또는 상기 열 재배열 처리와 동등한 처리를 수행함으로써 메시지 계산수단에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위를 상기 메시지 계산수단에 공급하는 동작을 제어하는 단계를 포함하여 구성된 것을 특징으로 하는 프로그램.
  7. P×P 단위행렬, 상기 P×P 단위행렬의 하나 이상의 각 행렬원소의 값을 1부 터 0까지로 설정함으로써 얻어지는 P×P 준단위행렬, 상기 P×P 단위행렬 또는 상기 P×P 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 P×P 시프트 행렬, 상기 P×P 단위행렬, 상기 P×P 준단위행렬, 상기 P×P 시프트행렬 및 P×P 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 P×P 합행렬을 포함하는 복수의 제 1 구성행렬을 조합하여 얻어지는 제 1 구조를 가지는 오리지널 패리티 검사행렬에 의해 표현되거나, 또는, 부호 P가 정수일 때 상기 제 1 구조를 가지는 행렬로서 상기 오리지널 패리티 검사행렬의 적어도 한 행과 한 열을 재배열함으로써 얻어지는 행렬에 의해 표현되는 LDPC(Low Density Parity Check) 코드를 복호하는 복호장치에 있어서,
    상기 복호장치는,
    부호 F가 상기 정수 P의 1 이외의 약수일 때, F개의 체크 노드 연산 또는 F개의 배리어블 노드 연산을 병렬적으로 실행함으로써 상기 LDPC 코드를 수신한 결과로서 각각 얻어지는 수신값을 복호하고, 상기 F개의 체크 노드 연산 또는 상기 F개의 배리어블 노드 연산의 결과로서 얻어지는 F개의 메시지를 출력하는 처리를 수행하는 메시지 계산부(message computation section)와,
    상기 메시지 계산부에 의해 생성된 상기 F개의 메시지에 F×F 사이클릭 시프트 연산을 수행하고 상기 F×F 사이클릭 시프트 연산의 결과로서의 F개의 메시지를 출력하는 시프트부(shift section)와,
    상기 시프트부에 의해 생성된 상기 F개의 메시지를 저장하고, 저장된 상기 F개의 메시지를 읽어내거나 또는 이전에 참조된 F개의 수신값을 저장하며, 저장된 상기 F개의 수신값을 읽어내도록 구성되는 저장부(storing section)와,
    제 2 구조가 F×F 단위행렬, 상기 F×F 단위행렬의 하나 이상의 각 행렬원소의 값을 1부터 0까지로 설정함으로써 얻어지는 F×F 준단위행렬, 상기 F×F 단위행렬 또는 상기 F×F 준단위행렬에 사이클릭 시프트 연산을 수행한 결과로서 얻어지는 F×F 시프트 행렬, 상기 F×F 단위행렬, 상기 F×F 준단위행렬, 상기 F×F 시프트행렬 및 F×F 영행렬 중 적어도 두 개에 행렬 덧셈 연산을 수행하여 얻어지는 F×F 합행렬을 포함하는 복수의 제 2 구성행렬을 조합하여 얻어지는 구조일 때 상기 제 1 구조를 가지는 상기 패리티 검사행렬에 의해 표현되는 상기 수신값에 적어도 열 재배열 처리 또는 상기 열 재배열 처리와 동등한 처리를 수행함으로써 상기 메시지 계산부에 상기 수신값을 공급하는 동작으로서, 상기 제 1 구성행렬로부터 유도되는 상기 제 2 구성행렬로서 상기 제 2 구조를 가지는 행렬에 포함되는, 상기 제 2 구성행렬에 대응하는 상기 F개의 수신값으로 구성된 단위를 상기 메시지 계산부에 공급하는 동작을 제어하도록 구성되는 제어부(control section)를 포함하여 구성된 것을 특징으로 하는 복호장치.
KR1020080101735A 2007-10-19 2008-10-16 복호장치, 복호방법 및 프로그램 KR20090040225A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007272519A JP4487213B2 (ja) 2007-10-19 2007-10-19 復号装置および方法、並びにプログラム
JPJP-P-2007-272519 2007-10-19

Publications (1)

Publication Number Publication Date
KR20090040225A true KR20090040225A (ko) 2009-04-23

Family

ID=40257089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080101735A KR20090040225A (ko) 2007-10-19 2008-10-16 복호장치, 복호방법 및 프로그램

Country Status (6)

Country Link
US (1) US8281205B2 (ko)
EP (1) EP2051386A3 (ko)
JP (1) JP4487213B2 (ko)
KR (1) KR20090040225A (ko)
CN (1) CN101414834B (ko)
TW (1) TWI371930B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8358447B2 (en) 2007-07-31 2013-01-22 Samsung Electronics Co., Ltd. Scanner module and image scanning apparatus employing the same
US8379275B2 (en) 2007-07-31 2013-02-19 Samsung Electronics Co., Ltd. Scanner module and image scanning apparatus employing the same
JP4487212B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP5320964B2 (ja) * 2008-10-08 2013-10-23 ソニー株式会社 サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム
US8612823B2 (en) * 2008-10-17 2013-12-17 Intel Corporation Encoding of LDPC codes using sub-matrices of a low density parity check matrix
JP5488472B2 (ja) * 2008-11-07 2014-05-14 日本電気株式会社 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置
JP5445828B2 (ja) * 2009-05-29 2014-03-19 ソニー株式会社 受信装置、受信方法、およびプログラム、並びに受信システム
JP5445829B2 (ja) * 2009-05-29 2014-03-19 ソニー株式会社 受信装置、受信方法、およびプログラム、並びに受信システム
CN101777921B (zh) * 2010-01-28 2013-04-17 中国人民解放军国防科学技术大学 用于显式存储片上系统的结构化ldpc码译码方法及装置
CN102480336B (zh) * 2010-11-30 2014-04-09 中国科学院微电子研究所 一种准循环低密度奇偶校验码的通用快速译码协处理器
JP5952072B2 (ja) * 2012-04-26 2016-07-13 ルネサスエレクトロニクス株式会社 符号化装置、復号化装置及び伝送システム
US8972834B2 (en) * 2012-08-28 2015-03-03 Hughes Network Systems, Llc System and method for communicating with low density parity check codes
KR102068030B1 (ko) 2012-12-11 2020-01-20 삼성전자 주식회사 메모리 컨트롤러 및 그 동작방법
EP2833554B8 (en) * 2013-07-31 2018-06-06 Alcatel Lucent Encoder and decoder
CN104868925B (zh) * 2014-02-21 2019-01-22 中兴通讯股份有限公司 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
CN104917536B (zh) * 2014-03-11 2019-11-12 中兴通讯股份有限公司 一种支持低码率编码的方法及装置
CN107437946A (zh) * 2014-09-10 2017-12-05 上海数字电视国家工程研究中心有限公司 Ldpc码的编码方法
US10050642B2 (en) * 2016-03-17 2018-08-14 Silicon Motion Inc. Low power scheme for bit flipping low density parity check decoder
KR102589918B1 (ko) * 2016-07-19 2023-10-18 삼성전자주식회사 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
CN107659317A (zh) * 2017-10-30 2018-02-02 南京扬贺扬微电子科技有限公司 快速转化生成矩阵的方法
CN110048805B (zh) * 2018-12-11 2021-08-31 西安电子科技大学 低密度奇偶校验码的译码控制系统及方法、无线通信系统
CN110298847B (zh) * 2019-06-27 2021-06-04 浙江工业大学 一种长时间背景收集的背景建模方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030033570A1 (en) * 2001-05-09 2003-02-13 Khannanov Roman R. Method and apparatus for encoding and decoding low density parity check codes and low density turbo product codes
EP1518328B1 (en) * 2002-07-03 2007-04-18 The DIRECTV Group, Inc. Encoding of low-density parity check (ldpc) codes using a structured parity check matrix
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
US7296208B2 (en) * 2003-07-03 2007-11-13 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
FI121431B (fi) * 2004-09-13 2010-11-15 Tamfelt Pmc Oy Paperikoneessa käytettävä kudosrakenne ja menetelmä sen valmistamiseksi
US7996746B2 (en) * 2004-10-12 2011-08-09 Nortel Networks Limited Structured low-density parity-check (LDPC) code
CN100550655C (zh) * 2004-11-04 2009-10-14 中兴通讯股份有限公司 一种低密度奇偶校验码的编码器/译码器及其生成方法
EP1819056B1 (en) 2004-12-02 2013-07-17 Mitsubishi Electric Corporation Decoding device and communication device
JP4595650B2 (ja) * 2005-04-25 2010-12-08 ソニー株式会社 復号装置および復号方法
JP4622654B2 (ja) * 2005-04-25 2011-02-02 ソニー株式会社 復号装置および復号方法
JP2006340016A (ja) 2005-06-01 2006-12-14 Toshiba Microelectronics Corp 誤り訂正符号復号装置及びそれを用いた復号方法
KR100946905B1 (ko) * 2005-09-27 2010-03-09 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
US7707479B2 (en) * 2005-12-13 2010-04-27 Samsung Electronics Co., Ltd. Method of generating structured irregular low density parity checkcodes for wireless systems
KR100899738B1 (ko) * 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
US7805652B1 (en) * 2006-02-10 2010-09-28 Marvell International Ltd. Methods for generating and implementing quasi-cyclic irregular low-density parity check codes
JP2007272519A (ja) 2006-03-31 2007-10-18 Ntt Comware Corp ドキュメント暗号化制御装置及びドキュメント暗号化制御方法
JP4702632B2 (ja) * 2007-04-06 2011-06-15 ソニー株式会社 符号化方法および符号化装置、並びにプログラム
US20100199142A1 (en) * 2007-04-13 2010-08-05 University College Dublin, National University Of Ireland Encoding scheme, and a decoding scheme using a series of ldpc codes based on finite inversive spaces
JP2008301152A (ja) 2007-05-31 2008-12-11 Sony Corp 復号装置および方法、並びにプログラム
PL2091156T3 (pl) * 2008-02-18 2014-01-31 Samsung Electronics Co Ltd Urządzenie i sposób do kodowania i dekodowania kanału w systemie komunikacyjnym z wykorzystaniem kodów kontroli bitów parzystości o niskiej gęstości

Also Published As

Publication number Publication date
EP2051386A2 (en) 2009-04-22
CN101414834B (zh) 2011-10-19
CN101414834A (zh) 2009-04-22
JP4487213B2 (ja) 2010-06-23
EP2051386A3 (en) 2010-03-31
JP2009100423A (ja) 2009-05-07
TW200926616A (en) 2009-06-16
US20090106620A1 (en) 2009-04-23
US8281205B2 (en) 2012-10-02
TWI371930B (en) 2012-09-01

Similar Documents

Publication Publication Date Title
KR20090040225A (ko) 복호장치, 복호방법 및 프로그램
JP4224777B2 (ja) 復号方法および復号装置、並びにプログラム
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
US7299397B2 (en) Decoding apparatus, decoding method, and program to decode low density parity check codes
JP4622654B2 (ja) 復号装置および復号方法
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
Bates et al. A low-cost serial decoder architecture for low-density parity-check convolutional codes
Marchand Implementation of an LDPC decoder for the DVB-S2,-T2 and-C2 standards
JP4729964B2 (ja) 復号装置および復号方法
JP4730592B2 (ja) 復号装置および復号方法
JP4284600B2 (ja) 復号装置
JP4821724B2 (ja) 復号装置および復号方法
JP4822071B2 (ja) 復号装置および復号方法
Wenjun et al. A 223Mbps FPGA implementation of (10240, 5120) irregular structured low density parity check decoder
JP4288582B2 (ja) 復号装置および復号方法、並びにプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20150113

Effective date: 20160623