KR101208505B1 - Ldpc 코드에 의한 복호화 방법 및 그 장치 - Google Patents

Ldpc 코드에 의한 복호화 방법 및 그 장치 Download PDF

Info

Publication number
KR101208505B1
KR101208505B1 KR1020050135352A KR20050135352A KR101208505B1 KR 101208505 B1 KR101208505 B1 KR 101208505B1 KR 1020050135352 A KR1020050135352 A KR 1020050135352A KR 20050135352 A KR20050135352 A KR 20050135352A KR 101208505 B1 KR101208505 B1 KR 101208505B1
Authority
KR
South Korea
Prior art keywords
value
function
values
variable
decoding
Prior art date
Application number
KR1020050135352A
Other languages
English (en)
Other versions
KR20070071676A (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 KR1020050135352A priority Critical patent/KR101208505B1/ko
Priority to EP06835465A priority patent/EP1966897A4/en
Priority to PCT/KR2006/005763 priority patent/WO2007075043A2/en
Priority to US12/159,083 priority patent/US8151161B2/en
Priority to CN2006800498330A priority patent/CN101595644B/zh
Publication of KR20070071676A publication Critical patent/KR20070071676A/ko
Application granted granted Critical
Publication of KR101208505B1 publication Critical patent/KR101208505B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1151Algebraically constructed LDPC codes, e.g. LDPC codes derived from Euclidean geometries [EG-LDPC codes]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

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

Abstract

본 발명은 LDPC(Low Density Parity Check) 코드에 의해 부호화된 데이터를 복호화하는 방법 및 그 장치에 관한 것이다. 본 발명에 따른 LDPC 코드를 이용한 복호화 방법은, LDPC 코드에 의해 부호화된 데이터를 복호화(decoding)하기 위하여 확률값을 갱신하는 과정을 포함하는 복호화 방법에 있어서, 두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 단계와, 전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 단계와, 상기 산출된 함수값들을 이용하여 확률값을 갱신하는 단계를 포함하되, |x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2의 정수지수(2m, m은 정수)인 것을 특징으로 한다.
LDPC, 부호화, 복호화, 패리티 검사 행렬, 양자화

Description

LDPC 코드에 의한 복호화 방법 및 그 장치 {Method of decoding using LDPC code and apparatus thereof}
도1은 이동통신 시스템의 송수신기의 개략 구성도임.
도2는 LDPC 코드를 이용한 복호화 시 사용되는 이분법 그래프(Biparite graph)를 도시한 것임.
도3은 이상적인 함수값과 종래기술에 따른 최소합 알고리즘을 사용했을 때의 함수값을 비교한 도면임.
도4 내지 도6은 종래기술에 따른 함수값 산출 방법을 설명하기 위한 도면임.
도7은 본 발명의 바람직한 일 실시예를 설명하기 위한 도면임.
도8은 본 발명의 바람직한 다른 실시예를 설명하기 위한 도면임.
도9는 본 발명에 따른 LDPC 코드를 이용한 복호화 장치의 바람직한 일 실시예의 구성도임.
도10은 부호율(code rate)이 1/2 이고, 부호어의 길이(code-length)가 576 비트로 동일한 조건일 때를 예로 들어 성능을 비교한 성능 그래프임.
본 발명은 복호화 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 LDPC(Low Density Parity Check) 코드에 의해 부호화된 데이터를 복호화하는 방법 및 그 장치에 관한 것이다.
도1은 이동통신 시스템의 송수신기의 개략 구성도이다. 도1에서, 송신기(10)와 수신기(30)가 무선 채널(20)을 매개로 통신을 수행한다. 상기 송신기(10)에서는 데이터 소스(11)로부터 출력된 k 비트의 소스 데이터(u)가 부호기(13)에서의 채널 부호화(channel encoding) 과정을 통해 n 비트의 코드워드(c)가 된다. 코드워드(c)는 변조기(15)에 의해 무선 변조되어 안테나(17)를 통하여 전송된다. 무선채널(20)을 통과한 신호는 상기 수신기(30)의 안테나(31)를 통해 수신되고, 상기 수신기(30)에서는 상기 송신기(10)에서 일어났던 과정의 역과정을 거친다. 즉, 수신된 데이터가 복조기(33)에 의해 복조되고, 복호기(35)에 의해 복호되어 최종적으로 소스 데이터(u)를 얻을 수 있다.
일반적으로 부호화(encoding)라 함은 송신측에서 송신된 데이터가 통신 채널을 통하여 전송되는 과정에서 발생되는 신호의 일그러짐, 손실 등에 의한 오류의 발생에도 불구하고 수신측에서 원래의 데이터를 복원할 수 있도록 하기 위하여 송신측에서 데이터 처리를 하는 과정을 의미한다. 복호화(decoding)는 부호화되어 송신된 신호를 수신측에서 원래의 데이터로 복원하는 과정이다.
채널 부호화 및 복호화를 위해 종래에는 콘볼루션 코딩(convolution coding), 터보 코딩(turbo coding) 등이 많이 사용되고 있으며, 최근에는 LDPC(Low Density Parity Check) 코드를 이용한 부호화 방법이 부각되고 있다. LDPC 코드는 패리티 검사 행렬(parity check matrix) Η의 원소들의 대부분이 '0'이어서 저밀도(low density)인 선형 블록 부호(linear block code)로서 1962년 갤러거(Gallager)에 의해 제안되었다. LDPC 부호는 매우 복잡하여 제안 당시의 기술로는 구현이 불가능하였기 때문에 잊혀져 있다가 1995년에 재발견되어 성능이 매우 우수함이 입증된 이래로 최근에 그에 관한 연구가 활발히 진행되고 있는 상황이다. (참고문헌: [1] Robert G. Gallager, "Low-Density Parity-Check Codes", The MIT Press, September 15, 1963. [2] D.J.C.Mackay, Good error-correcting codes based on very sparse matrices, IEEE Trans. Inform. Theory, IT-45, pp.399-431(1999))
LDPC 코드의 특징으로는 패리티 체크 행렬의 원소가 대부분 '0'으로 이루어지고, '0'이 아닌 원소의 수는 부호 길이에 비하여 적은 수를 가지도록 하여 확률을 기반으로 한 반복적 복호가 가능한 점이다. 처음 제안된 LDPC 부호는 패리티 체크 행렬을 비체계적인(non-systematic) 형태로 정의하였고, 그것의 행과 열에 균일하게 적은 수의 비중(weight)을 갖도록 설계되었다. 여기서, 비중이란 행렬에서 열(column) 또는 행(row) 방향의 '1'의 개수를 의미한다.
LDPC 코드의 패리티 검사 행렬은 '1'의 개수가 매우 적기 때문에 매우 큰 블록 크기에서도 반복 복호를 통하여 복호가 가능하여 블록 크기가 매우 커지면 터보 코드처럼 섀넌(Shannon)의 채널 용량 한계에 근접하는 성능을 보인다. 1980년대 초반 그래프를 이용하여 반복적 복호를 하는 방법이 개발되었고, 이를 이용하여 LDPC 부호를 실제로 복호할 수 있는 여러 알고리즘들이 개발되었다. 대표적 알고리즘으로는 BP 알고리즘(Belief Propagation Algorithm)이나 합곱 알고리즘(sum-product Algorithm) 등을 들 수 있다.
LDPC 코드는 (n-k)×n 패리티 검사 행렬 Η에 의해 설명될 수 있다. 상기 패리티 검사 행렬 Η에 대응하는 생성 행렬(generator matrix) G는 다음의 수학식1에 의해 구할 수 있다.
ΗㆍG = 0
LDPC 코드를 이용한 부호화 방법에 있어서는 송신측에서 상기 패리티 검사 행렬 Η와 수학식1의 관계에 있는 상기 생성 행렬 G를 이용하여 다음의 수학식2에 의해 입력 데이터를 부호화할 수 있다.
일반적인 LDPC 코드를 이용한 부호화 방법에서는 LDPC 패리티 체크 행렬(Parity Check Matrix) Η로부터 생성 행렬 G를 유도해 내어 정보 비트들(information bits)를 부호화한다. G를 유도하기 위해, Η를 가우시안 감소(Gaussian Reduction) 방법을 통해 [PT : I]를 구성한다. 정보 비트들의 수를 k라 하고, 코드워드(codeword)의 크기를 n이라고 할 때, P는 행 크기가 k 열 크기가 n-k인 행렬이고 I는 행 크기가 k 열 크기가 k인 단위 행렬(Identity Matrix)이다.
G 행렬은 Η 행렬이 [PT : I]와 같이 표현되었을 때, [I : P] 가 된다. 부호화되는 k 비트의 정보 비트 행렬을 x(행 크기 1, 열 크기 k인 행렬)라 할 때, 부호화된 코드워드 c는 다음의 수학식 2와 같다.
c = xㆍG = [x : xP]
수신단의 디코딩(decoding) 블록에서는 송신단의 인코딩 결과인 코드워드 c에서 정보 비트 x 를 구해야 하는데, c?ΗT=0인 성질을 이용하여 찾아낸다. 즉, 수신된 코드워드를 c'이라 할 때, c'?ΗT의 값을 계산하여 결과가 0 이면, c'의 앞의 k 개의 비트들을 디코딩된 정보 비트들로 결정한다. c'?ΗT의 값이 0이 아닌 경우, 그래프를 통한 합-곱 알고리즘, BP 알고리즘 등을 사용하여, c'?ΗT의 값이 0을 만족하는 c'을 찾아 x를 복구한다.
도2는 LDPC 코드를 이용한 복호화 과정에서 사용되는 이분법 그래프(Biparite graph)를 도시한 것으로서, 다 변수의 전체 함수(global function)가 어떻게 국소 함수(local function)들의 곱으로 인수분해 되는지를 표현한 두 갈래의 그래프이다. 이분법 그래프는 패리티 검사를 위한 검사 노드(check node)와 정보어 심볼 또는 부호어 심볼을 나타내는 비트 노드(variable node)로 구성된다. 이분법 그래프 상에서 디코딩 알고리즘을 적용하여 디코딩하는 과정은 다음의 세 단계의 단위 과정을 포함하여 구성된다.
1) 제1단계: 검사 노드에서 비트 노드로의 확률값 갱신(check-to-variable βi,j): βi,j는 i번째 검사 노드에서 j번째 비트 노드로 갱신되는 확률값
2) 제2단계: 비트 노드에서 검사 노드로의 확률값 갱신(variable-to-check αi,j): αi,j는 i번째 비트 노드에서 j번째 검사 노드로 갱신되는 확률값
3) 제3단계: 비트 노드의 확률을 통한 복호값 결정
수신측에서의 LDPC 코드에 의한 복호화 과정은 상기 제1단계 및 제2단계 과정을 거친 후 제3단계 과정에서 검사식 c?ΗT=0 을 만족하는 경우, 그 값을 복호된 값으로 결정하고, 그렇지 않을 경우 정해진 정지 조건을 만족할 때까지 상기 제1단계 및 제2단계 과정을 반복하게 된다. 상기 제1단계 및 제2단계에서 이루어지는 확률의 갱신 과정은 패리티 검사 행렬의 각 행 혹은 열에 속한 '1'의 수만큼 각각의 갱신 과정을 반복하게 된다. 상기 제1단계 및 제2단계의 갱신 과정을 반복할수록 검사 노드와 비트 노드 간의 확률값의 신뢰도가 높아지고, 결과적으로 구하고자 하는 부호어(codeword)의 참값에 보다 근접하게 된다. 이때, 수신정보의 특정 비트가 '0'인 확률(p0) 및 '1'인 확률(p1)의 비를 로그(log)를 이용하여 나타낸 것을 로그 우도 비(LLR: Log-Likelihood Ratio) 이라 하고 다음의 수학식 3과 같이 나타낸다.
LLR = Λ(p0, p1) = ln(p0 / p1)
예를 들어, 로그 우도 비를 이용하여 상기 제1단계 및 제2단계 과정을 잘 알려진 BP 알고리즘(belief propagation algorithm)에 적용하면, 각각 다음의 수학식 4 및 수학식 5와 같이 정리할 수 있다. 즉, 두 개의 입력 메시지 Λ1, Λ2에 대하여, 수학식 4에서 CHK(Λ1, Λ2)는 검사 노드에서 비트 노드로 갱신되는 확률값이고, 수학식 5에서 VAR(Λ1, Λ2)는 비트 노드에서 검사 노드로 갱신되는 확률값을 의미한다.
CHK(Λ1, Λ2) = ln(cosh((Λ1 + Λ2)/2)) - ln(cosh((Λ1 - Λ2)/2))
= 2tanh-1(tanh(Λ1/2)?tanh(Λ2/2))
VAR(Λ1, Λ2) = Λ1 + Λ2
위에서 설명한 바와 같이 BP 알고리즘을 적용하면 적절한 성능을 얻을 수 있으나, 구현에 있어 ln(cosh()) 함수 혹은 tanh() 함수를 그대로 사용할 경우, 상당히 복잡한 연산 문제를 야기한다. 따라서, 실제로 적용되는 알고리즘은 ln(cosh()) 함수 혹은 tanh() 함수의 값들을 참조표(look-up table)를 이용하여 저장한 다음 연산 과정 중 필요한 값들을 불러내어 사용하게 된다. 참조표를 사용하지 않고 필요한 메모리를 감소시키는 방법으로 대표적인 근사함수인, 최소합(Min-Sum) 알고리즘이 있다. 상기 최소합 알고리즘은 ln(cosh(x)) 함수가 x ? 1 의 범위에서 |x| - ln2 로 수렴하는 성질을 이용하여 다음의 수학식 6을 이용하는 방법이다.
Figure 112005078426332-pat00001
CHK(Λ1, Λ2)|(Λ1 + Λ2)/2| - |(Λ1 - Λ2)/2|
= sgn(Λ1)sgn(Λ2)min(|Λ1|, |Λ2|)
상기 수학식 6에 따른 최소합 알고리즘은 단순한 비교 연산과 메시지의 부호 를 검사하는 연산만이 필요하므로 연산을 위해 참조표가 필요 없고, 또 매우 빠른 연산을 할 수 있다. 도3은 이상적인 함수값과 종래기술에 따른 최소합 알고리즘을 사용했을 때의 함수값을 비교한 도면이다.
전술한 바와 같은 LDPC 코드를 이용한 복호기를 구현하기 위해 이용되는 다양한 방법은 근사식을 사용하거나, 메모리 상의 참조표(LUT: look-up table)를 이용하여 구현되는 경우가 많다. 참조표를 사용하여 구현할 경우, 보다 정밀한 근사값을 얻기 위해서는 보다 많은 양의 메모리를 사용해야 한다는 단점이 발생한다.
참조표를 사용하지 않고 선형함수를 결합하여 근사화하는 대표적인 종래기술인 최소합 알고리즘의 경우, 전 구간에 걸쳐 |x|-ln2 값을 사용함으로써 1? |x| 인 구간에서는 거의 근사한 값을 구할 수 있지만, 도3에 도시된 바와 같이, |x|의 값이 1 근처의 값, 혹은 그 이내의 범위에 속할 때에는 상당한 오차가 발생하는 문제점이 있다.
도4 내지 도6은 상기의 문제점을 해결할 수 있는 다른 종래기술을 설명하기 위한 도면으로서, 본 발명의 출원인에 의해 출원되어(출원번호: 10-2002-0034987) 기등록된 발명에 관한 것이다.
도4 내지 도6은 전체 변수 구간을 다수의 구간으로 나누어 각 구간별로 비선형 함수에 근사화시킬 수 있는 선형 함수를 선택하여 함수값을 구하는 방법으로 |x|의 값이 1 근처의 값, 혹은 그 이내의 범위에 속할 때에는 상당한 오차가 발생하는 종래기술의 문제점을 해결할 수 있는 방안이다. 도4 내지 도6에서는 변수의 절대값이 큰 구간에서는 선형 함수를 |x|-ln2를 사용하고, 나머지 구간에서는 상기 비선형 함수에 근사화시키기 위한 선형 함수로서 상수값이나 기울기가 1이 아닌 선형 함수를 사용하는 방법을 개시하고 있다.
도5의 경우에는 |x|<1.185인 구간에서 선형 함수 0.40625|x|를 사용하고, 도6의 경우에는 0.404<|x|<1.602인 구간에서 선형 함수 0.71875(|x|-0.404)+0.398를 사용하여 원래의 비선형 함수 ln(cosh(x))에 더 근접하게 근사화시킴으로써 원래 함수와의 최대 오차를 줄일 수 있어 상기 최소합 알고리즘에 비해 더 좋은 성능을 발휘할 수 있지만, 기울기가 1이 아니기 때문에 함수값을 구하는 과정에서 곱셈 연산이 발생하여 구현상의 복잡도 및 연산량이 증가되는 문제점이 있다.
본 발명은 상기한 바와 같은 종래기술의 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 복잡도 및 연산량을 감소시키면서도 뛰어난 성능을 발휘할 수 있는 LDPC 코드를 이용한 복호화 방법 및 그 장치를 제공하는 것이다.
본 발명은 최소합 알고리즘의 성능 열화 부분을 개선하기 위하여 |x| ? 1 이외의 구간에 대해 좀더 정밀하게 근사화시키는 방법을 개시한다. 즉, 본 발명은 함수값이 선형구간을 지나는 |x| ? 1 의 범위에서는 최소합 알고리즘 내지는 최소합 알고리즘과 유사한 방법을 사용하고, 원래 함수의 값과 최소합 알고리즘을 사용한 값의 차이가 상대적으로 많은, |x|의 값이 1 근처의 값이나 혹은 그 이내의 값을 가질 경우는 조금 더 정밀한 근사 함수나 값을 사용하여 성능을 향상시키는 방 법에 관한 것이다.
|x|-ln2 내지는 이와 유사한 값을 이용하여 충분히 정확한 값을 얻을 수 있는 |x| ? 1 이외의 구간에서는 추가적인 선형 함수를 통해 근사화시켜야 한다. 이때, 함수를 추가하여 |x| ? 1 이외의 구간을 근사화시키려면, 기울기가 1인 아닌 값을 갖는 경우가 발생하게 된다. 근사화의 필요성이 원래의 함수 계산의 복잡성에 기인한다는 점을 상기하면, 추가적인 함수는 구현의 측면에서 가능한 간단해야 한다. 따라서, 가능한 추가적인 함수의 수가 적고, 구현이 간단해야 하며, 양자화 과정을 거쳐도 성능의 열화가 적은 형태가 바람직하다.
본 발명의 일 양상으로서, 본 발명에 따른 LDPC 코드를 이용한 복호화 방법은, LDPC 코드에 의해 부호화된 데이터를 복호화(decoding)하기 위하여 확률값을 갱신하는 과정을 포함하는 복호화 방법에 있어서, 두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 단계와, 전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 단계와, 상기 산출된 함수값들을 이용하여 확률값을 갱신하는 단계를 포함하되, |x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2의 정수지수(2m, m은 0이 아닌 정수)인 것을 특징으로 한다.
본 발명의 다른 양상으로서, 본 발명에 따른 LDPC 코드를 이용한 복호화 장치는, LDPC 코드에 의해 부호화된 데이터를 복호화(decoding)하는 복호화 장치에 있어서, 두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 수단과, 전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수(|x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2의 정수지수(2m, m은 0이 아닌 정수)임.)를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 수단과, 상기 산출된 함수값들을 이용하여 확률값을 갱신하는 수단을 포함하여 구성됨을 특징으로 한다.
본 발명의 세부적 특징으로서, |x|≥a인 구간에서의 선형 함수는 |x|-c (여기서, a 및 c는 0이 아닌 상수임.)이고, 상기 c는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 ln2에 가장 근접하는 수인 것이 바람직하다. 상기 d는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 원래의 함수값에 가장 근접하는 수인 것이 바람직하다.
전술한 바와 같이, 도2에 도시된 바와 같은 이분법 그래프(biparite graph) 상에서 디코딩 알고리즘을 적용하여 디코딩하는 과정은, 검사 노드(check node)에서 비트 노드(variable node)로의 확률값을 갱신하는 제1단계와, 비트 노드에서 검사 노드로의 확률값을 갱신하는 제2단계와, 비트 노드의 확률을 통한 복호값을 결정하는 제3단계의 단위 과정을 통하여 이루어진다. 또한, 상기 제1단계 및 제2단계 과정을 거친 후 제3단계 과정에서 검사식 c?ΗT=0 을 만족하는 경우, 그 값을 복호 된 값으로 결정하고, 그렇지 않을 경우 정해진 정지 조건을 만족할 때까지 상기 제1단계 및 제2단계 과정을 반복한다. 본 발명은 상기 제1단계 과정의 복잡도를 줄이면서도 뛰어난 성능을 갖는 복호화 방법 및 장치에 관한 것이다. 이하에서 첨부된 도면을 참조하여 설명되는 본 발명의 바람직한 실시예들에 의해 본 발명의 구성, 작용 및 다른 특징들이 용이하게 이해될 수 있을 것이다.
도7 본 발명의 바람직한 일 실시예를 설명하기 위한 도면으로서, 비트 노드에서 검사 노드로의 확률값을 갱신하는 과정을 수행하기 위하여 비선형 함수인 ln(cosh(x))의 전체 변수 구간을 네 개의 구간으로 나누어 각 구간별로 서로 다른 선형 함수를 이용하여 상기 비선형 함수에 근사화시킨 실시예를 설명하고 있다. 즉, 도7은 |x|≥1.375인 구간에서는 선형 함수 y=|x|-0.6875를 이용하고, |x|<1.375인 구간에서는 선형 함수 y=0.5|x|를 이용하여 상기 비선형 함수 ln(cosh(x))를 근사화시킨 예이다.
종래기술에서 설명한 바와 같이, 비선형 구간(도5의 경우에는 |x|<1.185, 도6의 경우에는 0.404<|x|<1.602인 구간)에서는 함수값을 산출하기 위하여 기울기에 따른 곱셈 연산을 필요로 하는데, 그 절대값이 2의 정수지수로 표현이 가능한 수는 곱셈이나 나눗셈 연산시, 간단한 쉬프트 만으로 계산이 가능하다. 따라서, 절대값이 2의 정수 지수로 표현 가능한 기울기를 갖는 선형 함수의 조합으로 비선형 함수 ln(cosh(x))를 근사화시키면, 그렇지 않은 기울기를 갖는 근사 함수에 비해 현저히 낮은 복잡도를 갖는 연산이 가능하며, ln(cosh(x)) 함수의 특성상 2의 정수 지수 또는 0의 기울기를 갖는 근사함수만으로도 충분한 성능을 얻을 수 있는 좋은 복호기를 구현할 수 있게 된다.
변수값에 0.5(=2-1)를 곱셈하는 연산은 변수값을 1비트 오른쪽으로 쉬프트시킨 결과와 같고, 0.6875, 1.375 는 0.1011(2), 1.0110(2) 와 같이 적은 비트수로 양자화 가능한 수이므로 낮은 복잡도로 근사화가 가능하다. 근사화에 사용되는 상수값은 다음과 같은 적은 비트수로 조합이 가능한 수를 사용하는 것이 바람직하다. 아래에서 각 숫자 뒤에 표기된 비트 수는 각각 양자화 했을 때, 그 수를 표시하는데 필요한 최소 비트 수이다.
0.5 (2-1) = 0.1(2) - 1 비트
0.25 (2-2) = 0.01(2) - 2 비트
0.125 (2-3) = 0.001(2) - 3 비트
0.0625 (2-4) = 0.0001(2) - 4 비트
0.03125 (2-5) = 0.00001(2) - 5 비트
또한, 종래기술에 있어서는, 선형 구간(|x| ? 1)에서 상기 비선형 함수 ln(cosh(x))를 선형 함수 y=|x|-ln2로 근사화시켰지만, 계산을 더욱 간단히 하기 위해서는 상수값 ln2를 양자화 과정에서 사용되는 비트수에 따라 ln2의 값에 가장 근접하는 수를 사용하는 것이 바람직하다. 예를 들어, 소수점 이하의 양자화 과정에서 4비트를 사용하는 경우 상기 상수값을 4비트로 표현 가능한 수 중에서 ln2(=0.693147...)에 가장 근접하는 0.6875를 사용하여 y=|x|-0.6875로 근사화시키는 것이다.
두 개의 메시지 값들(Λ1, Λ2)이 입력되면, 상기 두 메시지 값의 합과 차의 1/2값을 각각 구한다. 두 메시지 값의 합의 1/2값은 (Λ1+Λ2)/2, 차의 1/2값은 (Λ1-Λ2)/2 이 된다. 상기 구해진 두 개의 값을 변수값(x)으로 하여 각 변수값이 속하는 구간에 따라 구간별로 정해진 선형 함수를 이용하여 함수값을 산출한다. 즉, 도7에서, 각 변수값의 절대값이 1.375보다 작으면 함수값은 y=0.5|x|에 의한 연산에 의해 산출되고, 각 변수값의 절대값이 1.375 이상이면 함수값은 y=|x|-0.6875의 연산에 의해 산출된다. 이를 수학식으로 표현하면 다음의 수학식 7과 같다.
Figure 112005078426332-pat00002
ln(cosh(x))|x|-0.6875, |x|≥1.375
Figure 112005078426332-pat00003
0.5|x|, |x|<1.375
상기한 방법에 의해 산출된 두 함수값의 차(difference)를 구하면 수학식 4에 따라 CHK(Λ1, Λ2) 값이 구해지고, CHK(Λ1, Λ2) 값이 최종적으로 검사 노드에서 비트 노드로 갱신되는 확률값이 된다.
입력되는 메시지 값이 세 개 이상이라면 첫 번째 및 두 번째 메시지 값에 대하여 상기한 방식에 의해 구해진 함수값 CHK(Λ1, Λ2)를 하나의 메시지 값으로 보고, 세 번째 메시지 값(Λ3) 및 CHK(Λ1, Λ2)에 대하여 상기 방식에 따른 과정을 재귀적으로 반복 수행한다. 예를 들어, 입력되는 메시지 값이 4개라면, 제1 및 제2 입력 메시지에 대해 수학식 7과 같은 근사식을 이용하여 체크 함수 CHK(Λ1, Λ2)에 적용한 제1출력값을 먼저 구한 다음, 제3 입력 메시지 값인 Λ3 과 상기 제1출력값 CHK(Λ1, Λ2)를 수학식 7의 근사식을 이용하여 CHK[Λ3, CHK(Λ1, Λ2)]에 적용하여 제2출력값을 구하며, 최종적으로 제4 입력 메시지 값인 Λ4와 상기 제2 출력값 CHK[Λ3, CHK(Λ1, Λ2)]를 체크 함수 CHK{Λ4, CHK[Λ3, CHK(Λ1, Λ2)]}에 적용하여 제3출력값을 구한다.
도8은 본 발명의 바람직한 또 다른 실시예를 설명하기 위한 도면으로서, 상기 비선형 함수인 ln(cosh(x))의 전체 변수 구간을 다섯 개의 구간으로 나누어 각 구간별로 서로 다른 선형 함수를 이용하여 상기 비선형 함수에 근사화시킨 실시예에 관한 것이다. 도8의 실시예는 선형적인 구간(|x|≥1.125)에서의 근사화된 선형 함수의 상수값을 소수점 이하를 4비트로 양자화 했을 때 ln2에 가장 근접한 수인 0.6875로 하고, 비선형 구간(|x|<1.125)에서 근사화된 선형 함수의 기울기를 2의 정수 지수(2-1) 또는 0으로 한 것이다. 도8의 실시예에 따라 근사화된 선형 함수를 수학식으로 표현하면 다음의 수학식 11과 같다.
Figure 112005078426332-pat00004
ln(cosh(x))|x|-0.6875, |x|≥1.125
Figure 112005078426332-pat00005
0.5|x|-0.125, 0.25<|x|<1.125
Figure 112005078426332-pat00006
0 |x|≤0.25
도8의 실시예에 있어서, 두 개의 메시지 값들(Λ1, Λ2) 또는 세 개 이상의 메시지 값들이 입력되는 경우의 확률값 갱신 과정은, 분할된 구간의 개수 및 각 구간별 근사화된 선형 함수를 제외하고는 도7의 실시예에서 설명된 것과 동일하므로 상세한 설명은 생략한다.
도9는 본 발명에 따른 LDPC 코드를 이용한 복호화 장치의 바람직한 일 실시예의 구성도로서, 상기 복호화 장치는 두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 변수값 획득 모듈(10)과, 전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수(|x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2의 정수지수(2m, m은 0이 아닌 정수)임.)를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 함수값 산출 모듈(20)과, 상기 산출된 함수값들을 이용하여 확률값을 갱신하는 확률값 갱신 모듈(30)을 포함하여 구성됨을 특징으로 한다. 상기 각 구성요소별 기능은 상기한 바와 같은 본 발명의 바람직한 실시예들을 통하여 설명한 바와 같고, 각 구성요소는 소프트웨어나 하드웨어 또는 양자의 조합에 의해 구현될 수 있음은 자명하다. 또한, 도9에서는 각 구성요소가 물리적으로 분리된 것처럼 도시되어 있지만, 소프트웨어나 하드웨어 또는 양자의 조합에 의해 모든 구성요소를 하나의 구성요소로 일체화시켜 구현하는 것도 가능할 것이다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명에 따르면, 종래기술에 따른 알고리즘에 비하여 연산의 복잡도를 감소시키면서도 뛰어난 성능을 발휘할 수 있는 효과가 있다. 즉, 본 발명에서 제안한 조건의 기울기 및 상수 값을 사용한 선형 함수로 근사화시킬 경우, 구현시에 그렇지 않은 경우에 비해 상당한 연산량의 감소, 즉 복잡도의 감소를 기대할 수 있는 효과가 있다.
도10은 부호율(code rate)이 1/2 이고, 부호어의 길이(code-length)가 576 비트로 동일한 조건일 때를 예로 들어 성능을 비교한 것으로서, 각각 이상적인 ln(cosh(x))를 사용한 복호기의 성능, 본 발명에서 제안된 근사화 함수를 사용한 복호기의 성능, 그리고 최소합 알고리즘을 사용한 복호기의 성능을 비교한 그래프이다. 본 발명에서 제안된 방법을 사용할 경우 이상적인 함수를 사용하였을 때와 거의 유사한 성능을 얻을 수 있음을 확인할 수 있다.

Claims (17)

  1. LDPC 코드에 의해 부호화된 데이터를 복호화(decoding)하기 위하여 확률값을 갱신하는 과정을 포함하는 복호화 방법에 있어서,
    두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 단계;
    전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 단계; 및
    상기 산출된 함수값들을 이용하여 확률값을 갱신하는 단계를 포함하되,
    |x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2m(m은 0이 아닌 정수)인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  2. 제1항에 있어서,
    상기 변수값들을 산출하는 연산 방법은 상기 입력되는 두 개의 메시지 값들의 합과 차를 2로 나누는 것임을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  3. 제2항에 있어서,
    상기 특정 비선형 함수는 ln(cosh(x))인 것(여기서, x는 변수값임.)을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  4. 제1항 내지 제3항의 어느 한 항에 있어서,
    |x|≥a인 구간에서의 선형 함수는 |x|-c (여기서, a 및 c는 0이 아닌 상수임.)인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  5. 제4항에 있어서,
    상기 c는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 ln2에 가장 근접하는 수인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  6. 제1항에 있어서,
    상기 d는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 상기 비선형 함수의 함수값에 가장 근접하는 수인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  7. 제1항에 있어서,
    상기 d는 0인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  8. 제1항에 있어서,
    상기 확률값 갱신 단계에서 갱신된 확률값은 상기 함수값들의 차(difference)인 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  9. 제8항에 있어서,
    입력되는 새로운 메시지 값 및 상기 갱신된 확률값을 하나의 메시지 값으로 하여 상기 각 단계를 수행하는 단계를 더 포함하는 것을 특징으로 하는 LDPC 코드를 이용한 복호화 방법.
  10. LDPC 코드에 의해 부호화된 데이터를 복호화(decoding)하는 복호화 장치에 있어서,
    두 개의 입력 메시지 값들을 연산하여 변수값들을 획득하는 수단;
    전체 변수 구간을 적어도 세 개 이상의 구간으로 나누어 각 구간별로 특정 비선형 함수에 근사화시키기 위하여 선택된 구간별 선형 함수(|x|<a에 속하는 특정 구간에서의 선형 함수는 b|x|+d (여기서, b 및 d는 상수임.)이고, b는 2m(m은 0이 아닌 정수)를 이용하여, 상기 각 변수값이 속하는 구간의 선형 함수에 따라 각 변수값의 함수값을 산출하는 수단; 및
    상기 산출된 함수값들을 이용하여 확률값을 갱신하는 수단을 포함하는 복호화 장치.
  11. 제10항에 있어서,
    상기 변수값들을 산출하는 연산 방법은 상기 입력되는 두 개의 메시지 값들의 합과 차의 절대값을 2로 나누는 것임을 특징으로 하는 복호화 장치.
  12. 제11항에 있어서,
    상기 특정 비선형 함수는 ln(cosh(x))인 것(여기서, x는 변수값임.)을 특징으로 하는 복호화 장치.
  13. 제10항 내지 제12항의 어느 한 항에 있어서,
    |x|≥a인 구간에서의 선형 함수는 |x|-c (여기서, a 및 c는 0이 아닌 상수임.)인 것을 특징으로 하는 복호화 장치.
  14. 제13항에 있어서,
    상기 c는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 ln2에 가장 근접하는 수인 것을 특징으로 하는 복호화 장치.
  15. 제10항에 있어서,
    상기 d는 양자화 과정에 n 비트를 사용하는 경우 n 비트로 표현 가능한 수 중에서 상기 비선형 함수의 함수값에 가장 근접하는 수인 것을 특징으로 하는 복호 화 장치.
  16. 제10항에 있어서,
    상기 d는 0인 것을 특징으로 하는 복호화 장치.
  17. 제15항에 있어서,
    상기 확률값 갱신 수단에 의해 갱신된 확률값은 상기 함수값들의 차(difference)인 것을 특징으로 하는 복호화 장치.
KR1020050135352A 2005-12-27 2005-12-30 Ldpc 코드에 의한 복호화 방법 및 그 장치 KR101208505B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020050135352A KR101208505B1 (ko) 2005-12-30 2005-12-30 Ldpc 코드에 의한 복호화 방법 및 그 장치
EP06835465A EP1966897A4 (en) 2005-12-27 2006-12-27 DEVICES AND METHODS FOR DECODING USING A CHANNEL CODE OR LPDC
PCT/KR2006/005763 WO2007075043A2 (en) 2005-12-27 2006-12-27 Methods and apparatuses for decoding or encoding using channel code or ldpc
US12/159,083 US8151161B2 (en) 2005-12-27 2006-12-27 Apparatus and method for decoding using channel code
CN2006800498330A CN101595644B (zh) 2005-12-27 2006-12-27 使用信道码解码的设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050135352A KR101208505B1 (ko) 2005-12-30 2005-12-30 Ldpc 코드에 의한 복호화 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20070071676A KR20070071676A (ko) 2007-07-04
KR101208505B1 true KR101208505B1 (ko) 2012-12-05

Family

ID=38506784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050135352A KR101208505B1 (ko) 2005-12-27 2005-12-30 Ldpc 코드에 의한 복호화 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101208505B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491338B1 (ko) 2002-06-21 2005-05-27 엘지전자 주식회사 근사화 함수를 사용하는 오류정정부호의 복호 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491338B1 (ko) 2002-06-21 2005-05-27 엘지전자 주식회사 근사화 함수를 사용하는 오류정정부호의 복호 방법

Also Published As

Publication number Publication date
KR20070071676A (ko) 2007-07-04

Similar Documents

Publication Publication Date Title
US7178081B2 (en) Simplified message-passing decoder for low-density parity-check codes
US8151161B2 (en) Apparatus and method for decoding using channel code
US8108760B2 (en) Decoding of linear codes with parity check matrix
US7222284B2 (en) Low-density parity-check codes for multiple code rates
US7500172B2 (en) AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes
EP1668780B1 (en) Method for compressing a set of correlated signals
US8166363B2 (en) Decoding device and method
KR101208547B1 (ko) Ldpc 코드를 이용한 부호화 및 복호화 방법
US9432052B2 (en) Puncture-aware low density parity check (LDPC) decoding
EP1837999A1 (en) Encoding method, decoding method, and device thereof
US8601337B2 (en) Decoding method and decoding device
US20040199859A1 (en) Ldpc code inspection matrix generation method and inspection matrix generation device
CN101595644B (zh) 使用信道码解码的设备和方法
KR101216075B1 (ko) 채널 코드를 이용한 복호화 및 복호화 장치
KR101208505B1 (ko) Ldpc 코드에 의한 복호화 방법 및 그 장치
JP5523064B2 (ja) 復号装置及び方法
EP3526899B1 (en) Decoding of low-density parity-check convolutional turbo codes
Jooshin et al. Reliability Analysis of the Sum-Product Decoding Algorithm for the PSK Modulation Scheme
Ratzer Low-density parity-check codes on Markov channels
US11245421B2 (en) Check node processing methods and devices with insertion sort
KR100639914B1 (ko) 병렬연접 ldpc 부호의 패러티 검사 행렬 형성 방법.
JP4973647B2 (ja) 誤り訂正符号の復号評価装置
Aqil et al. Reliability Ratio Weighted Bit Flipping–Sum Product Algorithm for Regular LDPC Codes
CN115706587A (zh) 用于低密度奇偶校验码解码的装置和方法
Bocharova et al. Low-complexity fixed-to-fixed joint source-channel coding

Legal Events

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

Payment date: 20151023

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee