KR101181969B1 - 엘디피시 부호의 복호방법 - Google Patents

엘디피시 부호의 복호방법 Download PDF

Info

Publication number
KR101181969B1
KR101181969B1 KR1020090057339A KR20090057339A KR101181969B1 KR 101181969 B1 KR101181969 B1 KR 101181969B1 KR 1020090057339 A KR1020090057339 A KR 1020090057339A KR 20090057339 A KR20090057339 A KR 20090057339A KR 101181969 B1 KR101181969 B1 KR 101181969B1
Authority
KR
South Korea
Prior art keywords
ldpc code
block
deinterleaver
ldpc
decoding
Prior art date
Application number
KR1020090057339A
Other languages
English (en)
Other versions
KR20110000013A (ko
Inventor
김범진
박찬규
Original Assignee
(주)에프씨아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)에프씨아이 filed Critical (주)에프씨아이
Priority to KR1020090057339A priority Critical patent/KR101181969B1/ko
Priority to CN201010165037.1A priority patent/CN101931497B/zh
Publication of KR20110000013A publication Critical patent/KR20110000013A/ko
Application granted granted Critical
Publication of KR101181969B1 publication Critical patent/KR101181969B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2778Interleaver using block-wise interleaving, e.g. the interleaving matrix is sub-divided into sub-matrices and the permutation is performed in blocks of 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • H03M13/3753Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding using iteration stopping criteria
    • 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
    • H03M13/6505Memory efficient implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • H04L1/0051Stopping criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables

Landscapes

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

Abstract

본 발명은 LDPC 부호의 복호장치를 이용한 LDPC 부호의 복호방법에 있어서, LDPC 부호 블록 단위로 Demapper 또는 디인터리버(Deinterleaver)로부터 소프트(Soft) 한 LLR(Log-Likelihood Ratio) 값을 전달 받는 입력 데이터 리드 단계, 상기 전달 받은 LLR값을 초기값으로 하여 코어 프로세스(Core Process)를 반복적으로(Iterative) 수행하는 코어 프로세스 실행 단계, 상기 코어 프로세스 수행이 최대 반복수에 도달하였는지 판별하는 최대 반복 도달 단계, 상기 코어 프로세스의 매 반복(Iteration)마다 오류 정정 완료 여부 확인(Parity Check)을 통해 반복을 종료/계속할지를 판정하는 패리티 체크 단계 및 상기 정정 결과를 출력하는 디코딩 결과 출력 단계로 이루어지는 것을 특징으로 하는 LDPC 부호의 복호방법에 관한 것이다.
LDPC 부호 복호장치, LDPC 부호 복호방법, LDPC 부호, 인터리버(Interleaver), 디인터리버(Deinterleaver)

Description

엘디피시 부호의 복호방법{LDPC CODE DECODING METHOD}
본 발명은 LDPC 부호의 복호방법에 관한 것으로, 더욱 상세하게는 반복 복호(Iterative Decoding)방식을 이용하는 복호장치에서 LDPC 부호의 반복(Iteration)수를 제어하는 LDPC 부호의 복호방법 관한 것이다.
LDPC 부호는 Shannon Limit에 거의 근접하는 성능을 지닌 오류정정부호로 알려져 있으며 DVB/S2, CMMB 등의 이동 방송 통신 분야, 고밀도의 자기기록 장치, 그리고 고속의 광통신 분야 등에 주로 적용되고 있고 그 용도가 점차 확대되는 추세에 있다.
1996년 이후 LDPC 부호가 ‘재발견’되면서 반복적 복호를 사용하면서도 복잡도가 크게 증가하지 않는 이 부호의 특성 및 생성 방법에 대한 연구가 활기를 띠고 있다. 이러한 LDPC 부호가 `Shannon limit'에 가장 근접하는 오류정정부호로서,터보부호와 더불어 제4세대 이동통신시스템에 활용될 수 있는 매우 우수한 오류 정정부호로 재평가되고 있다.
interleaving의 사전적 의미는 [끼워짜기] 정도로 해석되고, 통신 시스템에서의 의미는 신호를 뒤섞는 방식을 말하며, 전송하려는 데이터의 군집에러를 줄이기 위해 행과 렬의 순서를 바꾸어 보내 줌으로써 공기 중 전달되는 신호가 다중 경로 페이팅 또는 번개나 비등에 의해서 군집에러(Burst Error)가 생길 경우에도 복구 가능한 데이터로 만들어 준다.
거의 대부분의 LDPC 부호의 복호기는 Sum-Product 알고리즘(Algorithm), Min-Sum 알고리즘 등의 반복복호(Iterative Decoding)방법을 사용하고 있다. 반복 복호방법은 하나의 LDPC 부호 블록을 특정 조건이 만족될 때까지 동일한 과정(이를 Core Process라고 하자)을 반복적으로 여러 번 수행하는 것을 말한다.
이때의 특정 조건이란 매 코어 프로세스(Core Process) 수행 후 복호의 결과가 오류 없이 성공적이었는지, 아니면 오류가 아직 포함되어 있는지 확인하는 과정에서의 확인 조건을 말한다(보통 Parity Check이라고 한다). 정정 가능한 오류가 발생한 경우에는 몇 번의 코어 프로세스를 반복하게 되면 오류를 성공적으로 정정하게 되고, 이때에는 이 특정 조건을 만족하게 되어 더 이상 코어 프로세스를 수행하지 않아도 된다.
하지만, 정정할 수 없는 오류가 발생한 경우에는 아무리 코어 프로세스를 반복적으로 수행하더라도 성공적으로 오류를 정정할 수 없다. 그래서, 보통 최대 코어 프로세스의 반복 수행 회수를 제한하는데 이를 최대 반복(Iteration)수라고 한다. 심각한 성능 저하를 방지하기 위해서 적절한 최대 반복 수를 사용해야 하는데 특히 LDPC 부호의 길이가 긴 경우 필요로 하는 최대 반복 수가 30 ~ 50 정도로 상당히 크다. 이렇게, 필요한 최대 반복 수가 증가할수록 LDPC 복호기의 복잡도는 커진다.
종래 기술은 개별 LDPC 부호 블록 단위로 최대 반복(Iteration) 수를 독립적으로 제어하는 방법인데 일반적으로 고정된 한 종류의 최대 반복 수를 사용한다. 이런 종래 기술을 적용하면 모든 LDPC 부호 블록 대해 이를 복호할 때 반복 회수를 설정된 최대 값만큼 수행한다고 가정하고 복호기를 설계해야 한다. 이것은 한번의 반복 수행 시에 허용되는 시간을 줄어들게 만들고, 이로 인해 LDPC 복호기에서 보다 많은 병렬 프로세스(Process)들이 필요하게 되어 결국 LDPC 복호기의 복잡도를 증가시키는 문제점이 있다.
그리고, 인터리버(Interleaver)가 채용된 통신 시스템에서 디인터리버(Deinterleaver)를 구현하는 종래의 기술은 더블 버퍼링(Double Buffering)이 보통이다. 즉 인터리버의 블록 크기의 두 배에 해당되는 메모리를 사용하여 디인터리버를 구현하는 것을 말하는데 하나의 디인터리버 블록(Block)에서는 디인터리버의 입력 데이터에 대한 쓰기 동작을 수행하고 동시에 다른 하나의 블록에서는 씌어진 입력 데이터에 대한 읽기 동작을 수행하여 디인터리버의 출력 데이터로 내 보낸다. 이 방법은 블록 인터리버의 블록 크기의 두 배에 해당하는 메모리를 필요로 하는데 전체 시스템 메모리에서 상당량의 차지할 수도 있는 문제점이 발생한다.
예를 들면 CMMB라는 중국 이동 방송 시스템에서는 360 x 384 크기의 블록 인터리버를 사용하는데 종래의 기술과 같은 방법으로 디인터리버를 구현하면 총 2x360x384 = 276,480words 만큼의 메모리가 필요하다(1 word = 6bits 인 경우에는 약 1.58Mbits가 필요하다).
상기한 종래 문제점을 해결하기 위한 본 발명의 목적은 LDPC 복호기의 복잡도를 줄일 수 있는 방법을 제공하는데 있다.
그리고, 본 발명의 또 다른 목적은 블록 디인터리버(Deinterleaver) 메모리를 효율적으로 사용하기 위한 방법을 제공하는데 있다.
또한, 본 발명의 또 다른 목적은 LDPC 부호와 블록 인터리버를 동시에 채용한 통신시스템에서 효율적으로 LDPC 부호 그룹의 크기를 결정하는 방법을 제공하는데 있다.
삭제
삭제
상기한 종래 문제점을 해결하고 상기 목적을 달성하기 위한 본 발명의 LDPC 부호의 복호방법은 LDPC 부호장치에서 전송되는 인터리빙된 LDPC 부호어를 디인터리빙 수행하는 디인터리버와, 상기 디인터리버로부터 출력된 데이터를 입력하여 LDPC 복호를 수행하는 LDPC 복호기로 구성되는 LDPC 복호장치를 이용한 LDPC 부호의 복호방법에 있어서, LDPC 부호 블록 단위로 Demapper 또는 디인터리버(Deinterleaver)로부터 소프트(Soft) 한 LLR(Log-Likelihood Ratio) 값을 LDPC 복호기로부터 전달 받는 입력 데이터 리드 단계; 상기 전달 받은 LLR값을 초기값으로 하여 코어 프로세스(Core Process)를 반복적으로(Iterative) 수행하는 코어 프로세스 실행 단계; 상기 코어 프로세스 수행이 최대 반복수에 도달하였는지 판별하는 최대 반복 도달 단계; 상기 코어 프로세스의 매 반복(Iteration)마다 오류 정정 완료 여부 확인(Parity Check)을 통해 반복을 종료/계속할지를 판정하는 패리티 체크 단계; 및 상기 정정 결과를 출력하는 디코딩 결과 출력 단계;로 이루어지되, 상기 코어 프로세서 실행 단계는 개별 LDPC 부호 블록의 코어 프로세스의 최대 반복(Iteration)수를 LDPC 부호 블록들의 집합인 LDPC 부호 그룹 단위로 제어하는 것을 특징으로 한다.
본 발명의 LDPC 부호의 복호방법에 있어서, 크기가 M x K(열 수 M, 행 수 K)인 블록 디인터리버(Deinterleaver)를 채용한 상기 LDPC 복호장치에서 M > K 인 경우에는 M x M으로, 그 반대의 경우에는 K x K인 정방형 메모리를 상기 디인터리버에 사용하는 것을 특징으로 한다.
본 발명의 LDPC 부호의 복호방법에 있어서, 크기 L인 상기 LDPC 부호 그룹 내에서 i 번째 부호 블록을 복호할 때 허용된 최대 블록 반복수를 하기 [수학식1]에 의해 결정하는 것을 특징으로 한다.
[수학식1]
n(i) = min {NG - ng(i) - NB,min*(L-i), NB,max}
- i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
- LDPC 부호 그룹의 최대 그룹 반복수 : NG
- LDPC 부호 그룹 내 개별 LCPC 부호 블록의 번호 : i = 0, 1, …, L-1
- i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
- NB,min값의 최대 값 : NB,max
본 발명의 LDPC 부호의 복호방법에 있어서, 상기 [수학식1]은 하기 [수학식2]의 조건을 만족할 때 크기 L인 LDPC 부호 그룹 내에서 i 번째 부호 블록을 복호할 때 허용된 최대 블록 반복수를 하기 [수학식3]에 의해 결정하는 것을 특징으로 한다.
[수학식2]
NG = L*NB,min
- LDPC 부호 그룹의 최대 그룹 반복수 : NG
- LDPC 부호 그룹 내 LDPC 부호 블록의 개수 : L
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
[수학식3]
n(i) = min {i*NB,min - ng(i), NB,max}
- i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
- LDPC 부호 그룹 내 개별 LDPC 부호 블록의 번호 : i = 0, 1, …, L-1
- i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
- NB,min값의 최대 값 : NB,max
본 발명의 LDPC 부호의 복호방법에 있어서, 상기 블록 디인터리버에 대한 읽기와 쓰기는 [규칙1]과 같이 수행하는 것을 특징으로 한다.
[규칙1]
블록 디인터리버의 동작을 설명하면, 먼저 블록 디인터리버의 입력 데이터를 M개씩 디인터리버 메모리의 열 방향으로 쓰는 것을 K번 반복한다. 한 블록(Block)의 디인터리버 메모리에 쓰기가 끝나면 행 방향으로 K개씩 읽어 나간다. 이 때 읽기와 병행하여 그 다음 디인터리버의 입력 데이터를 행 방향으로 M개씩 쓰기를 K번 반복 진행한다. 이 때 쓰는 위치가 읽어 내는 위치를 추월해서는 안 된다. 그리하여 한 블록의 디인터리버 메모리에 대해 읽기와 쓰기가 끝나면 다시 열 방향에 대해 동일한 방식으로 읽기와 쓰기를 진행한다.
본 발명의 LDPC 부호의 복호방법에 있어서, 상기 [규칙1]와 같은 디인터리버에서 LDPC 부호 그룹의 크기를 하기 [수학식4]와 같이 두는 방법을 특징으로 한다.
[수학식4]
L = floor (MxK/J) 또는 ceil (MxK/J)
- LDPC 부호의 길이 : J
- 블록 디인터리버의 열 수 : M
- 블록 디인터리버의 행 수 : K
본 발명의 LDPC 부호의 복호방법에 있어서, 상기 L, M, K, J가 주어진 상태에서 L > ceil(MxK/J) 인 경우에 디인터리버(Deinterleaver)와 LDPC 복호기 사이에 추가적인 버퍼(Buffer) 메모리를 두어 사용하는 것을 특징으로 한다.
본 발명의 LDPC 부호의 복호방법에 있어서, 상기 버퍼 메모리의 크기를 하기 [수학식5]와 같은 것을 특징으로 한다.
[수학식5]
(L - ceil(MxK/J))xJ
- LDPC 부호의 길이 : J
- ceil (M x K/J) < L
- 열 수 : M
- 행 수 : K
상기한 바와 같이, 본 발명의 LDPC 부호 블록들을 그룹 단위로 묶어 그 그룹 단위의 최대 반복수를 제어하는 방법은 하나의 LDPC 블록에 실질적으로 필요한 최대 반복수를 줄이고, 이로 인해 LDPC 복호기의 복잡도를 줄일 수 있는 효과가 있다.
또한, 본 발명의 LDPC 부호의 복호방법은 블록 인터리버(Interleaver)를 채용한 통신시스템에서 블록 디인터리버(Deinterleaver)의 메모리를 효율적으로 사용할 수 있는 장점이 있다.
그리고, 본 발명의 LDPC 부호의 복호방법은 블록 인터리버(Interleaver)와 LDPC 부호를 동시에 채용한 통신시스템에서 효율적으로 LDPC 부호 그룹의 크기를 결정하는 방법을 제공하는 효과가 있다.
삭제
삭제
이하, 첨부된 도면을 참조하여 본 발명에 따른 구체적인 실시 예를 상세하게 설명하면 다음과 같다.
도 1은 본 발명에 따른 LDPC 부호의 복호장치를 나타낸 도면이다.
도 1에 도시한 바와 같이, 본 발명에 따른 LDPC 부호의 복호장치(200)는, LDPC 부호기(110)로부터 LDPC(Low Density Parity Check) 부호를 사용하여 부호화한 후 상기 출력을 인터리버(120)를 통해 인터리빙하여 부호어를 출력하는 LDPC 부호장치(100)와, 상기 LDPC 부호어를 수신하여 디인터리빙을 수행하는 디인터리버(210) 및 상기 디인터리버(210)로부터 출력된 데이터를 입력하여 LDPC 복호를 수행하는 LDPC 복호기(220)로 구성된다.
도 2는 일반적인 개별 LDPC 부호 블록에 대한 반복 복호방법을 나타낸 순서도이다.
도 2에 도시한 바와 같이, 일반적인 개별 LDPC 부호 블록에 대한 반복복호(Iterative Decoding)방법은 다음과 같다.
먼저, 입력 데이터 리드는 일반적으로 LDPC 부호 블록 단위로 Demapper 또는 디인터리버(Deinterleaver)로부터 소프트(Soft) 한 LLR(Log-Likelihood Ratio) 값을 전달 받는다(S200). 이 전달받은 값을 초기값으로 하여 코어 프로세스(Core Process)를 반복적으로(Iterative) 수행하고(S210), 매 반복(Iteration)마다 오류 정정 완료 여부 확인(Parity Check)을 통해 반복을 종료/계속할지를 판정한다(S230).
이때, 만약 미리 설정한 최대 반복수에 도달하면 반복을 종료(S220)하고 오류 정정 결과를 출력(S240)한 다음 복호 과정을 종료한다.
도 3a는 종례의 LDPC 복호화 타이밍을 나타낸 도면이고, 도 3b는 본 발명에 따른 LDPC 복호화 타이밍을 나타낸 도면이며, 도 4는 본 발명에 따른 LDPC 부호의 복호방법을 나타낸 순서도이다.
도 3a에 도시한 바와 같이, 종래의 LDPC 복호화 타이밍(Timing)은 매 LDPC 블록(310)의 복호화 시작 시점이 일정한 간격으로 배치된다. 이 간격 내에는 미리 정해진 최대 블록 반복(Iteration)수(300)에 해당하는 값이 고정된다.
그러므로, 한 LDPC 블록의 복호화 과정이 일찍 끝나면 다음 블록의 복호화 시점까지 기다리는 것이 필요하다.
도 3b 및 도 4에 도시한 바와 같이, 본 발명의 LDPC 복호화 타이밍에 따른 LDPC 부호의 복호방법은 다음과 같다.
먼저, 처음 시작되는 LDPC 부호 블록으로부터 최대 반복수를 계산한다(S400). 그리고, 상기 LDPC 부호 그룹(410)의 i 번째(i = 0, 1, …… L-1) LDPC 블록을 디코딩(Decoding)한다(S410).
이때, LDPC 블록의 디코딩을 종료한 후 이 때까지의 누적 반복수 ng를 계산하여 갱신 처리한다(S420).
마지막으로, LDPC 부호 그룹(410)의 L-1 번째 블록까지 디코딩을 실행하 며(S430), 디코딩이 완료되면 다음 LDPC 부호 그룹의 디코딩을 수행한다.
이때, 상기 LDPC 부호 그룹의 L-1 번째 블록까지 디코딩이 실행되지 않았으면 다음 LDPC 부호 블록의 복호를 수행하기 위한 최대 반복수를 계산한다(S400).
여기에서, LDPC 복호화 타이밍은 매 LDPC 블록의 복호화 시작 시점이 일정한 간격으로 배치되지 않고 불규칙적으로 배치된다. 상기 불규칙적인 배치는 한 LDPC 블록의 복호화 과정이 끝나면 지체 없이 다음 LDPC 블록의 복호화 과정을 시작하기 위한 것이다.
이를 위해서 본 발명은 L 개의 개별 LDPC 부호 블록들을 묶어 이들의 합계 반복(Iteration)수와, 상기 합계 반복수 및 필요한 매개변수(Parameter)를 이용하여, 실시간으로 개별 LDPC 부호 블록에 대한 최대 반복수를 적응적으로 변화시켜가며 제어한다.
이때, L 개의 LDPC 부호 블록들을 묶어 하나의 LDPC 부호 그룹이라고 하고 LDPC 부호 그룹에 속한 모든 LDPC 부호 블록들의 수를 합하여 이를 그룹 반복수(410)라 한다. 그리고 이와 구별하기 위해 개별 LDPC 부호 블록의 반복수를 블록 반복수(400)라
또한, LDPC 부호 그룹의 최대 그룹 반복수를 NG라고 하고 LDPC 부호 그룹 내에서 i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수를 ng(i)라고 한다.
상기 개별 LDPC 부호 블록마다 최소로 확보해 주어야 하는 최대 블록 반복수를 NB,min이라고 하고, 이 값의 최대 값을 NB,max라고 하면 i 번째 LDPC 부호 블록 을 복호할 때 허용된 최대 블록 반복수 n(i)는 하기 [수학식1] 같이 주어진다.
만약, LDPC 부호 그룹의 최대 그룹 반복수(NG)를 하기 [수학식2]으로 설정하면 LDPC 부호 그룹 내의 LDPC 부호 블록의 평균 최대 블록 반복수는 NB,min이 되고, 최대 블록 반복수 n(i)는 하기 [수학식3]과 같다.
[수학식 1]
Figure 112009038790910-pat00006
- i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
- LDPC 부호 그룹의 최대 그룹 반복수 : NG
- LDPC 부호 그룹 내 개별 LCPC 부호 블록의 번호 : i = 0, 1, …, L-1
- i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
- NB,min값의 최대 값 : NB,max
[수학식 2]
Figure 112009038790910-pat00007
- LDPC 부호 그룹의 최대 그룹 반복수 : NG
- LDPC 부호 블록의 개수 : L
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
[수학식 3]
Figure 112009038790910-pat00008
- i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
- LDPC 부호 그룹 내 개별 LDPC 부호 블록의 번호 : i = 0, 1, … L-1
- i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
- 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
- NB,min값의 최대 값 : NB,max
상기와 같은 방식은 최소의 최대 블록 반복수 NB,min을 보장해 주면서 그룹 반복수가 여유가 있는 한도 내에서 최대 블록 반복수를 확장해 준다.
또한, 동일한 평균 최대 반복수를 가진 종래의 기술과 비교할 때 LDPC 복호기 성능을 향상시킨다. 그리고, 동일한 LDPC 복호기 성능을 가진 종래의 기술과 비교할 때 평균 최대 블록 반복수를 줄인다.
상기에서 주어진 LDPC 부호와 데이터(Data) 전송속도에 대해 최소로 필요한 최대 블록 반복수 NB,min는 LDPC 복호기의 복잡도를 결정하는 한 요소이다. LDPC 부호의 길이와 부호화율와 데이터 전송속도가 한 블록의 LDCP 부호를 복호 하는데 허용된 최대 복호 시간을 결정한다.
그리고, 평균 최대 블록 반복수에 의해 한 번의 반복에 허용된 시간이 결정 되며 이것이 코어 프로세스(Core Process)의 복잡도와 메모리 양을 좌우한다.
여기서, 한 번의 반복에 허용된 시간이 LDPC 복호기의 복잡도를 결정하는 직접적인 중요 요소가 된다.
요약하면 본 발명에서 제시하는 LDPC 부호의 복호기에서 부호 그룹 단위로 반복수를 제어하는 방법은 필요한 평균 최대 블록 반복수를 줄임으로써 한번의 반복에 허용된 시간을 줄일 수 있도록 하여 결국 복호기의 복잡도를 낮출 수 있게 한다.
이하, 일반적인 통신시스템에서 LDPC 부호와 같은 채널 부호는 연집오류(Burst Error)에 대한 영향을 줄이기 위해 인터리버(Interleaver)와 연결하여 사용된다. 인터리버에는 크게 블록 인터리버(Block Interleaver)와 회선 인터리버(Convolutional Interleaver)가 있는데 본 발명에서는 LDPC 부호를 블록 인터리버와 연결하여 사용하는 시스템에, 앞서 언급한 LDPC 부호 그룹 단위로 복호기의 반복수를 제어하는 방법에 대해 제시한다.
도 5a는 종례의 블록 인터리버의 구성을 나타낸 도면이고, 도 5b는 본 발명에 따른 블록 디인터리버의 구성을 나타낸 도면이다.
도 5a에 도시한 바와 같이, 종례의 인터리버는 상기 블록 인터리버(500)의 크기를 M x K (열 수 M, 행 수 K)라고 하면 종래 기술은 두 개의 디인터리버링(Deinterleaving) 블록으로 구성된 메모리를 이용한 더블 버퍼링(Double Buffering) 방법으로서 하나의 블록에서는 디인터리버(Deinterleaver)의 입력 데이터에 대한 쓰기 동작을, 다른 하나의 블록에서는 이미 쓰여진 입력 데이터에 대한 읽기 동작을 수행하여 이를 디인터리버 출력으로 내보낸다.
도 5b에 도시한 바와 같이, 본 발명에 따른 블록 디인터리버(600)는 (M x K)와 LDPC 부호의 길이 J와의 관계(ceil (M x K/J) = L 또는 floor (M x K/J) = L, 이 때 L은 복호기에서 관리하는 LDPC 부호 그룹의 크기임)를 이용하여 M > K 인 경우에는 디인터리버(Deinterleaver)의 메모리를 M x M으로, 그 반대의 경우에는 K x K로 구성하여 더블 버퍼링 없이 하나의 디인터리버 메모리 블록(600a, 600b)으로 디인터리버를 구현한다.
여기서, 블록 디인터리버 동작을 설명하면, 먼저 디인터리버 블록의 입력 데이터를 M개씩 디인터리버 메모리의 열(Row) 방향으로 쓰는 것을 K번 반복한다. 한 블록의 디인터리버 메모리에 쓰기가 끝나면 행(Column) 방향으로 K개씩 읽어 나간다. 이 때 읽기와 병행하여 그 다음 디인터리버의 입력 데이터를 행 방향으로 M개씩 쓰기를 K번 반복 진행한다. 이 때 쓰는 위치가 읽어 내는 위치를 추월해서는 안 된다. 그리하여 한 블록의 디인터리버 메모리에 대해 읽기와 쓰기가 끝나면 다시 열 방향에 대해 동일한 방식으로 읽기와 쓰기를 진행한다[규칙1].
이와 같은 상기 [규칙1]은 하나의 인터리버 블록보다 조금 더 큰 정방형의 메모리 블록만을 이용하여 디인터리버링(Deinterleaving)에 필요한 쓰기와 읽기를 동시에 수행한다.
또한, LDPC 부호 그룹의 크기 L을 필요에 따라 하기 [수학식4]로 두면 상기 언급한 방식으로 LDPC 복호기의 그룹 반복수를 제어한다.
[수학식 4]
Figure 112009038790910-pat00009
- LDPC 부호의 길이 : J
- 블록 디인터리버의 열 수 : M
- 블록 디인터리버의 행 수 : K
이때, 종례 CMMB의 경우를 예로 들면 M = 360, K = 384 인데 종래의 기술인 더블 버퍼링(Double Buffering)방법에서는 총 2 x 360 x 384 = 276,480words의 메모리가 필요한데 반하여 본 발명에서 제시하는 방법에서는 384 x 384 = 147,456words의 메모리 만이 필요하다. 이것은 더블 버퍼링 구성(Double Buffering Scheme)의 약 53.3%에 지나지 않는 양이다.
본 발명에서 제시하는 방법에서는 주어진 평균 최대 블록 반복수에 대해 필요한 성능을 만족시키기 위해서 L을 충분히 크게 해야 한다. 이 때 L 값이 인터리버의 크기(더 정확하게는 ceil (M x K/J))보다 큰 경우에는 디인터리버와 LDPC 복호기 사이에 추가적인 버퍼(Buffer) 메모리를 두어 구현한다.
예를 들면, 하기 [수학식5] 크기만큼의 버퍼(Buffer)를 두어 쉽게 구현한다.
[수학식 5]
Figure 112009038790910-pat00010
- LDPC 부호의 길이 : J
- ceil (MxK/J) < L
- 블록 디인터리버의 열 수 : M
- 블록 디인터리버의 행 수 : K
이상에서 설명한 바와 같이, 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시 예에 관하여 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 본 발명의 범주에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 따라서 본 발명의 권리 범위는 설명된 실시 예에 국한되어 정해져서는 안되며, 후술하는 청구범위뿐만 아니라, 이와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명에 따른 LDPC 부호의 복호장치를 나타낸 도면이다.
도 2는 일반적인 개별 LDPC 부호 블록에 대한 반복복호방법을 나타낸 순서도이다.
도 3a는 종례의 LDPC 복호화 타이밍을 나타낸 도면이다.
도 3b는 본 발명에 따른 LDPC 복호화 타이밍을 나타낸 도면이다.
도 4는 본 발명에 따른 LDPC 부호의 복호방법을 나타낸 순서도이다.
도 5a는 종례의 인터리버의 구성을 나타낸 도면이다.
도 5b는 본 발명에 따른 인터리버의 구성을 나타낸 도면이다.
*** 도면의 주요 부분에 대한 설명 ***
100 : LDPC 부호 장치 110 : LDPC 부호기
120 : 인터리버 200 : LDPC 복호 장치
210 : 디인터리버 220 : LDPC 복호기
300 : LDPC 부호 블록의 고정 반복수 310 : LDPC 부호 블록
400 : LDPC 부호 블록의 가변 반복수 410 : LDPC 부호 그룹
500 : 블록 인터리버 600 : 블록 디인터리버

Claims (9)

  1. LDPC 부호장치에서 전송되는 인터리빙된 LDPC 부호어를 디인터리빙 수행하는 디인터리버와, 상기 디인터리버로부터 출력된 데이터를 입력하여 LDPC 복호를 수행하는 LDPC 복호기로 구성되는 LDPC 복호장치를 이용한 LDPC 부호의 복호방법에 있어서,
    LDPC 부호 블록 단위로 Demapper 또는 디인터리버(Deinterleaver)로부터 소프트(Soft) 한 LLR(Log-Likelihood Ratio) 값을 LDPC 복호기로부터 전달 받는 입력 데이터 리드 단계;
    상기 전달 받은 LLR값을 초기값으로 하여 코어 프로세스(Core Process)를 반복적으로(Iterative) 수행하는 코어 프로세스 실행 단계;
    상기 코어 프로세스 수행이 최대 반복수에 도달하였는지 판별하는 최대 반복 도달 단계;
    상기 코어 프로세스의 매 반복(Iteration)마다 오류 정정 완료 여부 확인(Parity Check)을 통해 반복을 종료/계속할지를 판정하는 패리티 체크 단계; 및
    상기 정정 결과를 출력하는 디코딩 결과 출력 단계;로 이루어지되,
    상기 코어 프로세서 실행 단계는 개별 LDPC 부호 블록의 코어 프로세스의 최대 반복(Iteration)수를 LDPC 부호 블록들의 집합인 LDPC 부호 그룹 단위로 제어하고,
    크기가 M x K(열 수 M, 행 수 K)인 블록 디인터리버(Deinterleaver)를 채용한 상기 LDPC 복호장치에서 M > K 인 경우에는 M x M으로, 그 반대의 경우에는 K x K인 정방형 메모리를 상기 디인터리버에 사용하며,
    상기 블록 디인터리버에 대한 읽기와 쓰기는 [규칙1]과 같이 수행하는 것을 특징으로 하는 LDPC 부호의 복호방법.
    [규칙1]
    블록 디인터리버의 동작을 설명하면, 먼저 블록 디인터리버의 입력 데이터를 M개씩 디인터리버 메모리의 열 방향으로 쓰는 것을 K번 반복한다. 한 블록(Block)의 디인터리버 메모리에 쓰기가 끝나면 행 방향으로 K개씩 읽어 나간다. 이 때 읽기와 병행하여 그 다음 디인터리버의 입력 데이터를 행 방향으로 M개씩 쓰기를 K번 반복 진행한다. 이 때 쓰는 위치가 읽어 내는 위치를 추월해서는 안 된다. 그리하여 한 블록의 디인터리버 메모리에 대해 읽기와 쓰기가 끝나면 다시 열 방향에 대해 동일한 방식으로 읽기와 쓰기를 진행한다.
  2. 삭제
  3. 삭제
  4. 제 1항에 있어서,
    크기 L인 상기 LDPC 부호 그룹 내에서 i 번째 부호 블록을 복호할 때 허용된 최대 블록 반복수를 하기 [수학식1]에 의해 결정하는 것을 특징으로 하는 LDPC 부호의 복호방법.
    [수학식1]
    n(i) = min {NG - ng(i) - NB,min*(L-i), NB,max}
    - i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
    - LDPC 부호 그룹의 최대 그룹 반복수 : NG
    - LDPC 부호 그룹 내 개별 LCPC 부호 블록의 번호 : i = 0, 1, …, L-1
    - i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
    - 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
    - NB,min값의 최대 값 : NB,max
  5. 제 4항에 있어서,
    상기 [수학식1]은 하기 [수학식2]의 조건을 만족할 때 크기 L인 LDPC 부호 그룹 내에서 i 번째 부호 블록을 복호할 때 허용된 최대 블록 반복수를 하기 [수학식3]에 의해 결정하는 것을 특징으로 하는 LDPC 부호의 복호방법.
    [수학식2]
    NG = L*NB,min
    - LDPC 부호 그룹의 최대 그룹 반복수 : NG
    - LDPC 부호 그룹 내 LDPC 부호 블록의 개수 : L
    - 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
    [수학식3]
    n(i) = min {i*NB,min - ng(i), NB,max}
    - i 번째 LCPC 부호 블록에 허용된 최대 반복수 : n(i)
    - LDPC 부호 그룹 내 개별 LDPC 부호 블록의 번호 : i = 0, 1, …, L-1
    - i 번째 LDPC 부호 블록을 복호하기 시작할 때의 누적 그룹 반복수 : ng(i)
    - 개별 LDPC 부호 블록마다 최소로 확보해야 하는 최대 블록 반복수 : NB,min
    - NB,min값의 최대 값 : NB,max
  6. 삭제
  7. 제 1항에 있어서,
    상기 [규칙1]와 같은 디인터리버에서 LDPC 부호 그룹의 크기를 하기 [수학식4]와 같이 두는 방법을 특징으로 하는 LDPC 부호의 복호방법.
    [수학식4]
    L = floor (MxK/J) 또는 ceil (MxK/J)
    - LDPC 부호의 길이 : J
    - 블록 디인터리버의 열 수 : M
    - 블록 디인터리버의 행 수 : K
  8. 제 7항에 있어서,
    상기 L, M, K, J가 주어진 상태에서 L > ceil(MxK/J) 인 경우에 디인터리버(Deinterleaver)와 LDPC 복호기 사이에 추가적인 버퍼(Buffer) 메모리를 두어 사용하는 것을 특징으로 하는 LDPC 부호의 복호방법.
  9. 제 8항에 있어서,
    상기 버퍼 메모리의 크기를 하기 [수학식5]와 같은 것을 특징으로 하는 LDPC 부호의 복호방법.
    [수학식5]
    (L - ceil(MxK/J))xJ
    - LDPC 부호의 길이 : J
    - ceil (M x K/J) < L
    - 열 수 : M
    - 행 수 : K
KR1020090057339A 2009-06-26 2009-06-26 엘디피시 부호의 복호방법 KR101181969B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090057339A KR101181969B1 (ko) 2009-06-26 2009-06-26 엘디피시 부호의 복호방법
CN201010165037.1A CN101931497B (zh) 2009-06-26 2010-04-12 低密度奇偶校验(ldpc)码的译码装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090057339A KR101181969B1 (ko) 2009-06-26 2009-06-26 엘디피시 부호의 복호방법

Publications (2)

Publication Number Publication Date
KR20110000013A KR20110000013A (ko) 2011-01-03
KR101181969B1 true KR101181969B1 (ko) 2012-09-11

Family

ID=43370442

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090057339A KR101181969B1 (ko) 2009-06-26 2009-06-26 엘디피시 부호의 복호방법

Country Status (2)

Country Link
KR (1) KR101181969B1 (ko)
CN (1) CN101931497B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9266182B2 (en) 2012-04-06 2016-02-23 Illinois Tools Works Inc. Welding torch with a temperature measurement device
US11110537B2 (en) 2012-04-06 2021-09-07 Illinois Tool Works Inc. Welding systems having non-contact temperature measurement systems

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101043533B1 (ko) 2011-01-10 2011-06-23 이동원 고효율 전원을 구비한 led 조명장치
US8826096B2 (en) 2011-12-29 2014-09-02 Korea Advanced Institute Of Science And Technology Method of decoding LDPC code for producing several different decoders using parity-check matrix of LDPC code and LDPC code system including the same
TWI530959B (zh) * 2014-06-17 2016-04-21 慧榮科技股份有限公司 用來控制一記憶裝置之方法以及記憶裝置與控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100413421B1 (ko) * 1999-10-08 2003-12-31 엘지전자 주식회사 이중 인터리빙 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4097852B2 (ja) * 1999-08-26 2008-06-11 株式会社フィリップスエレクトロニクスジャパン データ書込読出方法、デインターリーブ方法、データ処理方法、メモリ、及びメモリ駆動装置
CN100566182C (zh) * 2005-02-26 2009-12-02 美国博通公司 解码ldpc编码信号的加速消息传递解码器和方法
CN101150377A (zh) * 2006-09-18 2008-03-26 国家广播电影电视总局广播科学研究院 用于低密度奇偶校验编码的32apsk系统的比特映射方案
CN100542049C (zh) * 2007-03-23 2009-09-16 北京航空航天大学 一种多码率的ldpc码的译码器装置及译码方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100413421B1 (ko) * 1999-10-08 2003-12-31 엘지전자 주식회사 이중 인터리빙 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9266182B2 (en) 2012-04-06 2016-02-23 Illinois Tools Works Inc. Welding torch with a temperature measurement device
US10537956B2 (en) 2012-04-06 2020-01-21 Illinois Tool Works Inc. Welding torch with a temperature measurement device
US11110537B2 (en) 2012-04-06 2021-09-07 Illinois Tool Works Inc. Welding systems having non-contact temperature measurement systems

Also Published As

Publication number Publication date
KR20110000013A (ko) 2011-01-03
CN101931497B (zh) 2014-12-17
CN101931497A (zh) 2010-12-29

Similar Documents

Publication Publication Date Title
KR101610727B1 (ko) Ldpc 선택적 디코딩 스케줄링의 구현
US7853854B2 (en) Iterative decoding of a frame of data encoded using a block coding algorithm
US8929009B2 (en) Irregular low density parity check decoder with low syndrome error handling
EP2741421A1 (en) Low density parity check decoder with miscorrection handling
US20140053037A1 (en) Multi-Level LDPC Layered Decoder With Out-Of-Order Processing
US8321746B2 (en) Systems and methods for quasi-cyclic LDPC code production and decoding
US20100192044A1 (en) Qc-ldpc code decoder and corresponding decoding method
KR100941680B1 (ko) 준순환 저밀도 패리티 검사 부호의 생성 방법 및 장치
US8583979B1 (en) Multiple interleavers in a coding system
CN103514061B (zh) 用于错误校正的装置和方法
US9048870B2 (en) Low density parity check decoder with flexible saturation
US20130275827A1 (en) Multi-Section Non-Binary LDPC Decoder
JP2006115145A (ja) 復号装置及び復号方法
KR101181969B1 (ko) 엘디피시 부호의 복호방법
US9602133B1 (en) System and method for boost floor mitigation
US20120331369A1 (en) Systems and Methods for Error Correction Using Low Density Parity Check Codes Using Multiple Layer Check Equations
US11522562B2 (en) Error correcting decoding device and error correcting decoding method
US9214959B2 (en) Systems and methods for skip layer data decoding
KR20090044178A (ko) 통신시스템에서 병렬구조 라틴방진 인터리빙 방법 및 장치
CN101847447A (zh) 存储控制器、存储控制方法及数据存取系统
WO2011144161A1 (zh) 前向纠错方法、装置及系统
US8443250B2 (en) Systems and methods for error correction using irregular low density parity check codes
CN113131947B (zh) 译码方法、译码器和译码装置
KR101484066B1 (ko) 엘디피시 부호의 디코딩 방법
JP7038910B2 (ja) 復号装置、制御回路および記憶媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150903

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160905

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170905

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190902

Year of fee payment: 8