이하 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지 도록 하고 있음에 유의해야 한다.
그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하에서 설명되는 본 발명에서는 간단한 부호화와 우수한 성능을 보일 수 있는 새로운 LDPC 코드를 제안한다. 이를 위해 새로운 패리티 검사 매트릭스(parity check matrix)를 정의한다. 즉, 새로운 패리티 검사 매트릭스를 이용한 새로운 LDPC 코드를 제안한다. 또한, 본 발명에 따른 새로운 LDPC 코드가 선형 연산에 의해 간단히 부호화가 가능함을 보이고, 이를 위한 부호화 방법을 제시한다. 그리고 마지막으로 본 발명에서 제안하는 LDPC 코드가 belief propagation decoding에 의해 CDMA2000 1xEV-DV 표준(standard)에서 사용되고 있는 터보 부호(turbo code)보다 우수한 복호 성능을 가짐을 보인다.
이하에서 설명되는 본 발명에서는 논의의 편의를 위해 부호화 율(code rate)이 1/2인 LDPC 코드에 대한 성능 및 구현을 설명한다. 그러나, 부호화 율은 본 발명의 요지 내에서 리프팅이 가능함을 미리 밝혀둔다.
1. 패리티 검사 매트릭스 디자인(Parity check matrix design)
본 절에서는 어레이 코드(array code)와 비정규 반복 축적 코드(irregular repeat accumulate code)를 정의하는 패리티 검사 매트릭스 구조를 접목, 응용하여 생성한 새로운 패리티 검사 매트릭스를 정의한다. 그리고, 이러한 방식으로 생성된 기초 매트릭스(basic matrix)의 성질을 유지하면서 보다 큰 크기를 갖는 매트릭스를 생성하는 방법에 대해서도 살펴보기로 한다.
A. 배열 코드 구조(Array code structure)
일반적으로 (p, r) 어레이 코드에 대한 패리티 검사 매트릭스는 도 1과 같이 정의된다. 도 1은 일반적인 (p, r) 어레이 코드에 대한 패리티 검사 매트릭스를 도시한 도면이다. 그러면 도 1을 참조하여 일반적인 (p, r) 어레이 코드에 대한 패리티 검사 매트릭스에 대하여 설명하기로 한다.
상기 도 1에서 p는 prime number이다. 그리고, p의 크기를 가지는 정방행렬인 pxp 항등 매트릭스(identity matrix)인 I의 각 행들을 j만큼 순환 이동(cyclic shift)하여 얻은 pxp 순환 순열 매트릭스(cyclic permutation matrix)를 σj로 표기하였다. 이러한, σj의 집합으로 이루어진 행(row)과, 열(column)을 각각 서브-매트릭스 행(sub-matrix row)과, 서브-매트릭스 열(sub-matrix column)이라 부르도록 한다. 배열 코드(Array code)를 정의하는 패리티 검사 매트릭스(parity check matrix)의 열과 행은 각각 p개와 r개의 1을 균일하게 가진다. 그리고, p가 적당히 클 경우 매트릭스에서 1이 차지하는 비율은 줄어들어 저밀도 패리티 검사 코드의 구조를 갖게 된다. 또한, 이러한 배열 코드(array code)는 길이가 4인 사이클(cycle) 구조를 갖지 않는다. 즉, 패리티 검사 매트릭스에서 사각형 - 싸이클(cylce) 4 - 을 이루는 4개의 부분 행렬 σia, σib, σja, σ
jb (i≠j)에 속해 있는 원소들이 싸이클 4의 구조를 갖는다면 하기 <수학식 1>과 같은 식이 성립되어야 한다.
즉, 상기 <수학식 1>에서 a = b 이어야 한다. 그러나, 임의의 서로 다른 행(row) 부분에 존재하는 a, b는 항상 다른 값을 갖기 때문에 상기 <수학식 1>은 성립할 수 없다. 따라서, 상술한 바와 같은 패리티 검사 매트릭스를 갖는 배열 코드는 싸이클 4의 구조를 갖지 않는다.
본 발명에서는 이상에서 상술한 바와 같은 배열 코드의 패리티 검사 매트릭스 구조를 변형하여 새로운 매트릭스 구조를 생성하여 사용한다. 그러면 본 발명에서 사용할 새로운 매트릭스 구조를 생성하는 과정을 살펴보도록 한다. 또한 이와 같은 변형을 수행하는 목적은 싸이클 4의 구조를 갖지 않는 배열 코드 구조를 기반으로 하되, 생성하고자 하는 매트릭스의 각 열에 존재하는 1의 분포가 다양하게 존재하는 비정규 구조(irregular structure)를 얻기 위함이다. 또, 이러한 과정에서 각 행(row)에 존재하는 1의 분포는 비교적 균일하게 하도록, 즉 최대 2가지 종류만 존재하도록 한다. 그러면 본 발명에서 사용하는 새로운 매트릭스 구조의 생성 방법을 살피기로 한다.
(1) 배열 코드를 구성하는 패리티 검사 매트릭스의 임의의 j번째 서브 매트릭스 열(sub-matrix column)은 하기 <수학식 2>와 같은 서브 매트릭스(sub matrix)들로 이루어져 있다.
(2) 미리 정의된 분포도(degree distribution)에 따라 각 서브 매트릭스 열(sub-matrix column)에 대한 degree sequence를 하기 <수학식 3>과 같이 정의한다.
상기 <수학식 3>에서 dj는 j번째 서브 매트릭스 열에 해당되는 column degree를 의미하며, s는 총 서브 매트릭스 열의 수이다. 또한 상기 s는 임의의 열에 존재하는 최대 1의 개수 d
v 와 같도록 한다.
(3) 상기 (2)에서 정의된 degree sequence D에 따라 임의의 j번째 서브 매트릭스 열을 하기 <수학식 4>와 같이 변형하여 정의한다.
즉, 상기 <수학식 4>에서 t
j는
j번째 서브 매트릭스 열
에서 0이 아닌 서브 매트릭스가 존재하기 시작하는 서브 매트릭스 열 번호(sub-matrix row number)이다.
(4) 생성하고자 하는 매트릭스 H
d 는 각 서브 매트릭스 열(sub-matrix column)들을 열 벡터(column vector)로 갖는 하기 <수학식 5>와 같은 행렬이다.
이상에서 상술한 과정에 따라 매트릭스의 임의의 한 서브 매트릭스 열(sub-matrix column)을 정의하면, 각 서브 매트릭스 열 내에 존재하는 임의의 한 열에는 해당 서브 매트릭스 열에 할당된 degree만큼의 1의 개수만이 항상 존재하게 된다. 또한, 위와 같은 서브 매트릭스 열들로 이루어지는 매트릭스는 각 매트릭스들간의 서브 매트릭스 중첩(sub-matrix overlap)이 최소화될 것이다. 그러므로 전체 매트릭스의 임의의 한 행에 존재하는 1의 개수도 최소화될 것이다. 즉, 전체 매트릭스에서 한 행에서 1의 숫자는 항상 2개 또는 1개만을 가질 것임을 쉽게 알 수 있다. 그리고, 위와 같이 생성된 행렬 H
d 는 배열 코드(array code)구조에서 일부 서브 매트릭스를 제거한 형태이므로, 배열 코드와 마찬가지로 싸이클 4의 구조가 항상 존재하지 않음을 쉽게 알 수 있다.
도 2는 임의의 한 열에 존재하는 1의 최대 개수가 d
v 이고, 그러한 서브 매트릭스 열의 수가 n
v 이며, 나머지 서브 매트릭스 열들에 존재하는 1의 수는 항상 3인 경우의 매트릭스 H
d 를 예로서 도시한 도면이다.
본 발명에서는 상기 도 2에 도시한 바와 같은 배열 코드 구조를 기반으로 정의된 패리티 검사 매트릭스 H의 정보(information) 부분 매트릭스 H
d (220)은 본 발 명에서 정의하고자 하는 저밀도 패리티 코드의 패리티 검사 매트릭스의 H의 서브 매트릭스로 사용할 것이다. 그러면 이하에서 상기 패리티 검사 매트릭스 H의 패리티 부분을 구성하는 서브 매트릭스의 생성을 위해 비정규 반복 축적 코드(irregular repeat accumulate code) 구조에 대하여 살피도록 한다.
B. 일반화된 이중 대각선 매트릭스(Generalized dual-diagonal matrix)
비정규 반복 축적 코드(Irregular repeat accumulate(IRA) code)는 간단한 부호기(encoder) 구조를 가지면서 메시지 패싱 복호기(message passing decoder)에 의해 비교적 우수한 성능을 얻을 수 있다고 알려져 있다. 이러한 비정규 반복 축적 코드는 저밀도 패리티 검사 코드의 한 형태로 볼 수 있다.
도 3은 비정규 반복 축적 코드의 펙터 그래프(factor graph) 구조를 도시한 도면이다. 그러면 도 3을 참조하여 반복 축적 코드의 펙터 그래프 구조에 대하여 살펴보기로 한다. 상기 도 3의 비정규 반복 축적 코드의 펙터 그래프는 시스테메틱(systematic) 버전(version)으로서, 코드워드(codeword)의 패리티(parity) 심볼에 해당하는 패리티 노드(parity node)들은 하나의 패리티 노드만을 제외하고는 모두 degree 2를 갖는다. 즉, 각 패리티 노드들(301, 302, 303, …, 304, 305, 306, 307)과 연결되는 가지(edge)들은 2개씩으로 구성된다. 패리티 노드의 이러한 구조는 주어진 정보 심볼(information symbol)에 의한 패리티 심볼(parity symbol)의 생성을 선형 연산만으로 쉽게 이루어지도록 할 수 있는 장점을 갖는다. 또한 상기 도 3에 도시한 바에서 알 수 있듯이 비정규 반복 축적 코드의 정보 노드는 다양한 degree 분포를 가질 수 있다. 이러한 정보 노드의 값들은 무작위 순열(random permutation)(320)을 통해 검사 노드와 연결된다.
상기 도 3과 같은 펙터 그래프를 가지는 비정규 반복 축적 코드를 매트릭스 형태로 도시하면 도 4와 같이 도시할 수 있다. 도 4는 비정규 반복 축적 코드를 가지는 저밀도 패리티 코드의 매트릭스를 도시한 도면이다.
상기 도 4의 저밀도 패리티 코드의 매트릭스 중에서 패리티 부분의 사선은 '1'을 뜻하며, 각 사선들간의 offset f(401)는 일반적인 비정규 반복 축적 코드에서 1의 값을 갖는다. 따라서, 비정규 반복 축적 코드를 정의하는 패리티 검사 매트릭스의 패리티 부분에 해당하는 서브 매트릭스는 이중 사선 매트릭스(dual-diagonal matrix) 형태를 갖게 된다. 그리고, 패리티 검사 매트릭스의 정보 부분의 각 열에 존재하는 1의 개수는 비정규 분포(irregular distribution)를 가진다. 이들의 분포는 도 4의 무작위 순열부(random permutation unit)에 의해 정의된다.
본 발명에서는 비정규 반복 축적 코드 구조의 패리티 부분만을 고려한다. 따라서 패리티 부분만을 일반화하고, 새로운 형태의 매트릭스를 제안한다.
상기 도 4에서 일반적인 비정규 반복 축적 코드에서는 각 사선들간의 옵셋인 f = 1인 값을 갖는 경우를 도시하였다. 본 발명에서는 상기 옵셋 값(offset value) f를 임의의 값을 갖도록 리프팅하면 패리티 부분의 이중 사선 매트릭스는 도 5와 같이 일반화되어 도시할 수 있다. 상기 도 5의 제1사선(501)은 상기 매트릭스의 최상위 열과 최상위 행의 위치부터 최종 열의 최종 행으로 사선을 이룬다. 그리고, 제2사선의 제1부분 사선(502a)은 상기 옵셋 값만큼 열 이동한 위치의 첫 번째 위치에서 '0'의 값을 가지고, 나머지는 동일한 옵셋 값으로 제2사선의 제1부분 사선(502a)의 마지막 부분까지 1을 가지며, 제2사선의 제2부분 사선(502b)은 그 다음 행의 첫 번째 열부터 1의 값을 가지고 사선을 이루어 구성된다.
이와 같은 상기 도 5는 본 발명에 따라 이중 사선 매트릭스의 옵셋 값을 임의의 값으로 리프팅한 경우의 패리티 매트릭스를 도시한 도면이다. 상기 도 5에 도시한 바와 같이 옵셋 값이 변경되어도 특정한 열에 "1"이 하나만 존재하는 열은 반드시 존재하게 된다. 즉, 주의해야 할 점은 모든 열에 존재하는 "1"의 개수가 2이면, 이중 사선 매트릭스의 계수(rank)가 매트릭스의 행보다 작아지게 된다. 따라서 상기 도 5에 도시한 바와 같이 두 번째 사선의 첫 번째 행에는 "1"이 존재하지 않도록 즉, "0"이 되도록 한다는 점이다. 상기 도 5와 같은 매트릭스의 크기가 r인 정방 행렬 즉, r x r 매트릭스인 경우, 이중 사선 매트릭스의 옵셋 값 f와 상기 매트릭스의 크기 r이 공통 인수를 갖지 않으면 임의의 주어진 정보 심볼들의 셋(set)에 대해 r번의 덧셈 연산만으로 r개의 모든 패리티 심볼을 생성할 수 있다. 이의 증명을 위해 우선 다음과 같은 정리를 생각한다.
정리 1(Theorem 1) : 임의의 아벨리안 그룹(Abelian group) AGr = {0, 1, 2, …, r-1}의 임의의 한 원소(element) 가운데, r과 서로 소이며 0이 아닌 임의의 원소 f는 항상 자기 자신에 대한 r번 또는 그 이하의 덧셈으로 AGr의 모든 원소를 생성한다. 이를 증명하기 위해 만일 r과 서로 소이며 0이 아닌 임의의 원소 f가 r번 또는 그 이하의 덧셈에 의해 AGr의 모든 원소를 생성할 수 없다면, r보다 작은 어떠한 k에 대해 하기 <수학식 6>의 조건을 만족시키는 k가 존재하게 된다.
그러나, 상기 <수학식 6>은 f와 r이 서로 소라는 가정에 위배된다. 즉, 상기 <수학식 6>을 만족시키는 k의 최소 값은 항상 r이어야 한다. 따라서, 원소
f는 r번의 덧셈 연산에 의해 AGr의 모든 원소를 생성할 수 있게 된다.
또한 상기 도 5에 도시한 이중 사선 매트릭스(dual diagonal matrix)이 임의의 패리티 검사 매트릭스의 패리티 부분에 해당하는 행렬이다. 따라서, 상기 도 5의 행렬에서 임의의 i번째 열은 패리티 검사 매트릭스의 나머지 정보(information) 부분에 해당하는 행렬의 i번째 열로부터 항상 하기 <수학식 7>과 같은 정보를 얻을 수 있다.
상기 <수학식 7>에서 di 는 i번째 정보(information) 심볼이며, ai 는 패리티 검사 매트릭스의 정보 부분에 해당하는 행렬의 i번째 열에 존재하는 1의 수이다. 그리고 덧셈은 GF(2) 상에서의 덧셈 연산을 뜻한다. 상기 GF(2)란 Galois Field over 2의 뜻으로, modulo 2상에서 정의되는 유한체 집합(Finite Field)을 뜻한다. 상기 유한체 집합(Finite Field)이란 원소의 개수가 유한하고, 덧셈과 곱셈(over modulo 2)에 대해 닫혀 있으며, 덧셈에 대한 항등원 및 역원이 각각 존재하고, 곱셈에 대한 항등원과 0이 아닌 원소에 대한 역원이 존재하며, 덧셈 및 곱셈에 대하여 교환, 결합 및 분배 법칙이 성립하는 집합을 뜻한다. 따라서, GF(2)란 이러한 성질을 만족하는 {0, 1}의 집합을 뜻한다. 그러므로 상기 도 5에 도시한 행렬에서 첫 번째 열에 해당하는 패리티 검사 방정식(parity check equation)에 의해 얻을 수 있는 첫 번째 패리티 심볼은 하기 <수학식 8>과 같다.
그리고 상기 도 5의 행렬 구조에서 사선(diagonal line)과 옵셋 사선(offset diagonal line)에 존재하는 임의의 1에 대한 열 인덱스(column index)와 행 인덱스(row index)는 각각 하기 <수학식 9>와 같은 관계를 갖는다.
상기 <수학식 9>에 도시된 2개의 식을 이용하면, p
r-f 를 구할 시,
p
0 를 이용하여 하기 <수학식 10>과 같이 계산됨을 알 수 있다.
또한 상기 도 5에 도시한 바와 같이 패리티 검사 행렬이 이중 사선 매트릭스 구조를 가지므로, 이를 이용하면, 상기 <수학식 10>은 하기 <수학식 11>과 같이 변경이 가능하다.
이와 같이 상기 <수학식 11>에 의해 임의의 패리티 심볼 p
r-if 를 얻을 수 있고, 상기 '(정리 1)'에 의해 r과 f가 서로 소이면, i가 증가함에 따라 (r-if
) (mod r)의 값은 1부터 r-1까지의 모든 값을 반드시, 오직 한 번만 갖게 된다. 이에 따라 r과 f가 서로 소이면 위의 과정을 통해 모든 패리티 심볼의 값을 구할 수 있게 된다. 그러므로, 이상에서 상술한 방법을 통해 상기 도 5와 같은 패리티 부분을 가지는 패리티 검사 매트릭스는 항상 선형 연산에 의해 간단한 부호화가 가능하게 된다. 도 6은 상기 도 5와 같은 부호화 과정에서 p
0 , p
r-f , p
r-2f , … 의 값들을 순차적으로 구하는 과정을 도시한 도면이다.
상기 도 6을 참조하여 간략히 살펴보면, 참조부호 601과 같이 제0열 제0행의 값으로부터 제0열의 제r-f행의 위치 값이 연결되어 있다. 그리고, 상기 제0열의 제r-f행의 위치 값은 참조부호 602와 같이 제r-f열의 제r-f행의 위치 값과 연결되어 있음을 알 수 있다. 이와 같이 상기 제1사선(610)과 제2사선의 제1부분 사선(620a)과 제2사선의 제2부분 사선(620b)의 영역에만 1이 위치한다. 그리고, 상기 사선들 중에서 첫 번째 열에는 1의 값이 하나만 존재하기 때문에 상기한 바와 같이 계속적으로 1의 값을 찾아 2차 함수를 풀어보면, 결과적으로 모든 값들을 찾을 수 있게 된다.
지금까지 설명한 일반화된 이중 사선 매트릭스 구조는 본 발명에서 정의하고 자 하는 저밀도 패리티 검사 코드의 패리티 검사 매트릭스(parity check matrix) H의 패리티 부분의 서브 매트릭스(sub-matrix) H
p 로 사용될 것이다. 이제 본 발명에서 정의하고자 하는 저밀도 패리티 검사 코드의 패리티 검사 매트릭스를 생성하는 방법에 관해 살펴보도록 한다.
C. 패리티 검사 매트릭스 구조(Parity check matrix construction)
그러면 이하에서는 A절에서 살핀 배열 코드 구조와, B절에서 살핀 일반화된 이중 사선 매트릭스 구조를 이용하여 본 발명에 따른 새로운 패리티 검사 매트릭스(parity check matrix) H를 생성하는 방법과, 그 구조에 대하여 설명하도록 한다. 이하에서 설명되는 패리티 검사 매트릭스는 A절에서 살핀, 배열 코드(array code) 구조를 기반으로 정의된 매트릭스 H
d 를 패리티 검사 매트릭스
H의 정보(information) 부분으로 정의한다. 그리고, B절에서 살핀 일반화된 이중 사선 매트릭스 H
p 를 상기 정보 부분 매트릭스 H의 패리티 부분으로 정의한다. 따라서 본 발명에서 설계하고자 하는 저밀도 패리티 검사 코드를 정의하는 패리티 검사 매트릭스 H는 하기 <수학식 12>와 같은 구조를 가진다.
상기 <수학식 12>에서 패리티 검사 매트릭스의 정보 부분 행렬 H
d 의 각 서브 매트릭스 열(column)들은 미리 정의된 분포도(degree distribution)에 따른 degree sequence D에 의해 정의되고, 각 서브 매트릭스 열(sub-matrix column)을 이루는 단위 서브 매트릭스 σij는 크기가 p인 pxp의 항등 매트릭스(identity matrix)를 서브 매트릭스 열 인덱스 i와 서브 매트릭스 행 인덱스 j의 곱인 ij만큼 열을 이동시킨(column shift) 주기적 순열 매트릭스(cyclic permutation matrix)이다. 이때 p는 항상 소수(prime number)이다. 그리고, H
p 는 H
d 의 구조와 일치시키기 위해 매트릭스 내에 존재하는 1과 0을 각각 pxp 매트릭스와 0 행렬로 'lifting'시킨다.
그러면 이하에서 상기한 바와 같이 본 발명에 따른 저밀도 패리티 검사 코드를 생성하기 위한 과정들을 차례로 살피기로 한다.
(가) 분포도와 패리티 검사 서브 매트릭스
H
d
구조(Degree distribution and
H
d
construction)
리차드슨(Richardson) 등은 저밀도 패리티 코드를 정의하는 펙터 그래프(factor graph) 상에서 메시지 패싱 디코딩(message passing decoding)이 이루어질 때, sum-product algorithm에 의한 가변 노드와 검사 노드의 메시지 갱신(variable & check node message update) 과정과 이들의 반복 처리(iterative processing) 과정에 의한 메시지들의 변화를 그들의 확률적 분포(probabilistic distribution)의 변화를 통해 추적할 수 있음을 보였다. 그리고, 이러한 density evolution 방법을 통해 주어진 분포도(degree distribution)를 갖는 펙터 그래프(factor graph)로 정의되는 저밀도 패리티 코드의 평균 에러 확률(probability of error)이 0으로 수렴하는지의 여부를 결정할 수 있는 채널 파라미터 임계 값(channel parameter threshold)이 존재함을 보였다. 또한, 상기 채널 파라미터 임계 값보다 작은 채널 파라미터(channel parameter)에 대해서는 복호 과정에서 무한대의 반복(iteration)을 가정하였을 때 비트 에러 확률(probability of bit error)이 항상 0으로 수렴할 수 있음을 보였다. 따라서, 이러한 density evolution technique은 특정한 채널 환경에 대한 임계(threshold) 값을 개선시킬 수 있는 저밀도 패리티 코드의 분포도(degree distribution)를 최적화(optimize)할 수 있는 디자인 방법(design tool)으로 사용될 수 있다. 따라서, 저밀도 패리티 코드에 대한 최적화된 분포도(degree distribution)와 그때의 임계(threshold)값을 구하기 위해 많은 연구들이 수행되어 왔다.
본 발명에서는 이미 정의된 최적화된 가변 노드 분포도(variable node degree distribution)를 본 발명에서 정의하고자 하는 패리티 검사 매트릭스(parity check matrix) H의 가변 노드 분포도(variable node degree distribution)로 근사화 시켜 사용하도록 한다. 이 때, degree 2인 가변 노드는 모두 H의 패리티(parity) 부분, 즉 H
p 의 각 열(column)로 할당하고, 그 이상의 degree를 갖는 가변 노드는 H의 정보(information) 부분, 즉 H
d 의 각 열(column)로 할당하도록 한다. 그리고, A 절에서 살핀 '배열 코드 구조'와 B 절에서 살핀 '일반화된 이중 대각선 매트릭스'의 서브 매트릭스 구조(sub-matrix construction)로부터 패리티 검사 매트릭스 H의 check node degree는 주어진 모든 1의 개수에 있어서 항상 최소화된 두 가지 또는 한 가지의 종류만을 갖게 된다.
이제 본 발명에서 정의하고자 하는 패리티 검사 매트릭스의 정보 부분 H
d 를 정의하기 위한 degree sequence를 정하도록 한다. 저밀도 패리티 검사 코드를 정의하는 펙터 그래프(factor graph) 상의 maximum variable node degree를 d
v 라 하면, 가변 노드 상에 존재하는 각 에지(edge)의 분포는 하기 <수학식 13>과 같은 다항식으로 도시할 수 있다.
상기 <수학식 13>에서 λi는 degree가 i인 가변 노드에 존재하는 에지(edge)의 비율을 나타낸다. 그리고, 주어진 λ(x)에 대해 펙터 그래프 상에서 degree가 j인 가변 노드의 비율 c
j 은 하기 <수학식 14>와 같이 표현될 수 있다.
상기와 같이 주어지는 <수학식 14>에서 구현을 고려하여 maximum variable node degree의 값이 15인 경우에 대하여 패리티 검사 매트릭스의 구성을 살펴보도록 한다. 저밀도 패리티 코드를 정의하는 펙터 그래프 상의 maximum variable node degree의 값이 15인 경우에 2진 입력 백색 가우시안 잡음을 가지는 채널(binary input additive white Gaussian noise(BI-AWGN) channel) 환경에서의 부호율(code rate) 1/2에 대한 최적의 분포도(degree distribution)는 density evolution에 의해 하기 <수학식 15>와 같음이 알려져 있다.
이때, 각 가변 노드(variable node)들의 에러 확률(probability of error)을 0으로 수렴하도록 하는 백색 가우시안 잡음 채널에서 최대 채널 파라미터 잡음 변화(channel parameter noise variance in AWGN channel) σ*는 0.9622이며, 이를 Eb/No으로 환산하면 0.3348 dB가 된다. 즉, 위와 같은 degree distribution을 갖는 펙터 그래프에 의해 정의되는 저밀도 패리티 코드는 무한 블록 크기(infinite block size), 무한 반복(infinite iteration)을 가정한 belief propagation decoding에 의해 Shannon의 제한 용량(capacity limit)에 0.3348 dB만큼의 근접한 성능을 보이게 된다. 이상의 설명에서와 같은 degree distribution을 갖는 펠터 그래프 상에서 각 degree를 갖는 가변 노드의 비율은 하기 <수학식 16>과 같다.
본 발명에서 정의하고자 하는 패리티 검사 매트릭스에서 degree 2인 가변 노 드는 항상 패리티 부분 H
p 에 할당되어야 하고, 정보 부분 H
d
에는 항상 degree 2 이외의 가변 노드만이 할당되어야 한다. 그리고, 정보 부분 H
d 의 각 서브 매트릭스 열(sub-matrix column) 내의 모든 열들은 동일한 열 가중치(column weight)를 갖도록 되어 있다. 그러므로, 패리티 검사 매트릭스 H의 펙터 그래프 상에서 각 degree를 갖는 가변 노드의 비율은 하기 <수학식 17>과 같이 근사화 된다.
상기 <수학식 17>과 같은 가변 노드 비율을 이용하여 다시 degree distribution 다항식 λ(x)를 구하고, 이에 따른 degree distribution에 의해 정의되는 저밀도 패리티 코드의 AWGN에서 임계 값(threshold) σ*를 구하면 하기 <수학식 18>과 같다.
상기 <수학식 18>에 도시한 바와 같은 값은 부호화 율 1/2인 저밀도 패리티 코드에 해당하는 값이다. 상기한 값을 도출할 때, 해석 기술(analysis technique)로는 가우시안 근사 값(Gaussian approximation)에 의한 density evolution 방법을 사용하였고, 예측된 비트 오류 확률(estimated probability of bit error)이 10-6보 다 작으면 error free인 경우로 간주하여 계산된 값이다. 이를 이용하여 정보 부분 H
d 의 각 서브 매트릭스 열에 할당되는 degree sequence는 하기 <수학식 19>와 같이 정의될 수 있다.
본 발명에서는 배열 코드 구조를 설명한 A 절의 설명에서와 같이 패리티 검사 매트릭스 H의 정보 부분 H
d 는 상기 <수학식 18>에서와 같이 정의된 degree sequence에 따른 배열 코드 구조를 기반으로 하여 정의될 수 있다.
도 7은 maximum variable node degree가 15인 경우, 전술한 A 절의 설명에서와 같은 방식으로 생성한 패리티 검사 매트릭스의 정보 부분 H
d 의 일례를 도시한 도면이다. 상기 도 7에 도시한 바와 같은 매트릭스 구조에서 각 열 및 각 행은 서브 매트릭스 열 및 행을 의미한다. 또한 각 열 및 각 행에 해당하여 도시한 숫자들은 각 서브 매트릭스 열 및 행의 서브 매트릭스들의 순환 이동(cyclic shift)을 나타낸다. 그리고, 상기 각 숫자들은 pxp 서브 매트릭스로 구성되며, 상기 서브 매트릭스에서 p는 89인 경우이다. 따라서 상기한 바와 같이 생성된 정보 부분 Hd의 매트릭스는 (d
v
· p)x(d
v
· p) 매트릭스가 된다.
(나) 매트릭스 리프팅과 패리티 매트릭스 구조(Lifting and
H
p
construction)
일반적으로 매트릭스의 리프팅(lifging)은 임의의 위치에 0과 1을 가지는 매트릭스에서 대하여 서브 매트릭스 교체(sub-matrix replacement)에 의해 기본 매트릭스의 크기를 리프팅 하는 방법을 말한다. 그러면 이를 도 8을 참조하여 설명하기로 한다. 도 8은 임의의 4x4 매트릭스의 각 원소를 3x3 항등 매트릭스(identity matrix) 또는 3x3 0 매트릭스(matrix)로 대치하는 방식에 의해 기본 4x4 매트릭스를 12x12 매트릭스로 매트릭스 리프팅(lifting)시킨 행렬을 도시한 도면이다.
상기 도 8에 도시한 바와 같이 매트릭스의 리프팅은 0의 원소에 대하여는 리프팅하고자 하는 크기의 배수만큼 0의 원소만을 가진 정방행렬로 구성한다. 즉, 첫 번째 행에 대하여만 살펴보기로 한다. 첫 번째 행에 위치한 각 열들의 원소들은 {0, 0, 1, 0}이 되며, 그에 대하여는 각각 801, 802, 803, 804의 참조부호를 부여하였다. 상기 각 원소들 중 0의 값을 가지는 3개의 원소들(801, 802, 804)은 각각 3x3 매트릭스로 리프팅시켜 참조부호 801a, 802a, 804a로 리프팅 시켰다. 그리고, 1의 원소를 가지는 첫 번째 행의 원소(803)는 3x3의 크기를 가지는 항등 행렬로 리프팅 하였다. 이는 다른 열의 원소에 대하여도 동일하게 적용하여 구성한 것이다.
위에서 설명한 바와 같이 매트릭스 리프팅(lifting)이란, 일반적으로 0과 1로 이루어진 기본 매트릭스(base matrix)의 각 원소들의 위치에 kxk 서브 매트릭스를 삽입하여 매트릭스의 크기를 확장하는 방법을 말한다. 이때, 삽입되는 kxk 매트릭스는 일반적으로 항등 매트릭스(identity matrix)의 각 열을 순환 이동(cyclic shift)한 순환 순열 매트릭스(cyclic permutation matrix)를 사용한다.
본 발명에서 정의하고자 하는 패리티 검사 매트릭스 H의 패리티 부분 H
p 는 B 절에서 설명한 바와 같이 일반화된 이중 사선 매트릭스(generalized dual-diagonal matrix)이다. 또한 상기 C 절의 (가)에서 설명한 바와 같이 생성한 H
d 가
pxp 서브 매트릭스들로 이루어져 있음을 고려하여, H
p
또한
rx
r의 일반화된 이중 사선 매트릭스(generalized dual-diagonal matrix)를 pxp 서브 매트릭스를 이용하여 리프팅(lifting)하여 구성하도록 한다.
도 9는
px
p 순환 치환 서브 매트릭스에 의한 매트릭스 리프팅(lifting)을 통해 구성한 패리티 매트릭스
H
p 을 도시한 도면이다. 그러면 도 9를 참조하여 패리티 매트릭스 리프팅에 대하여 설명하도록 한다. 상기 순환 치환 서브 매트릭스에 의한 리프팅된 매트릭스는 저밀도 패리티 코드의 선형 시간 부호화(linear time encoding) 및 각 행들간의 선형 독립(linear independency)을 위해
의 첫 번째 행에 존재하는 1은 제거한다. 도 9와 같이 구성된 패리티 부분
H
p 는 (
rp
)x(
rp) 매트릭스가 되며, 각 서브 매트릭스
에서
j
i 는 각 서브 매트릭스마다 할당된 순환 열 이동(cyclic column shift)을 위한 옵셋 값(offset value)이다. 그러면 이제 선형 연산에 의한 부호화가 가능하도록 하는 방법에 대해 살펴보도록 한다.
전술한 B 절(일반화된 이중 사선 매트릭스)에서 살핀 바를 도 9와 같이 리프팅(lifting)된 패리티 부분
H
p 에 적용하면,
r과
f가 서로 소일 때
r번의 연산에 의 해 패리티 부분
H
p 의 각 서브 매트릭스 열(sub-matrix column)은 반드시, 오직 한 번씩만 선택됨을 알 수 있다. 그리고, 이 한 번의 선택 과정에서는 서브 매트릭스 열 내의 임의의 한 열에 해당하는 패리티 심볼을 구하는 연산을 수행할 수 있다. 따라서, 임의의 한
px
p 서브 매트릭스
의 모든 열에 해당하는 패리티 심볼들을 구하기 위해서는
rp 만큼의 연산 동안
p개의 열에 해당하는 패리티 심볼에 대한 연산이 반드시, 오직 한 번씩만 이루어져야 한다. 이제 이러한 조건이 만족되기 위한 서브 매트릭스의 옵셋 값(offset value)에 대한 조건을 살펴보도록 한다.
상기 도 9와 같은 패리티 부분
H
p 의 매트릭스 구조에서 서선(diagonal line)에서 서브 매트릭스 행 인덱스(sub-matrix row index)
i인 서브 매트릭스 내의 행 인덱스(row index)
와 열 인덱스(column index)
의 관계는 하기 <수학식 20>과 같이 정의된다.
또한 옵셋 사선(offset diagonal line)의 서브 매트릭스 행 인덱스(sub-matrix row index)
i인 서브 매트릭스 내의 행 인덱스(row index)
와 열 인덱스(column index)
의 관계는 하기 <수학식 21>과 같이 정의된다.
그러면, 상기한 <수학식 20>과 <수학식 21>로부터 서브 매트릭스 행 인덱스 0인 서브 매트릭스(sub-matrix)
의 첫 번째 행으로부터 하기 <수학식 22>와 같이 패리티 심볼
의 값을 얻을 수 있다.
이때, 상기 <수학식 22>에서 v0는 패리티 검사 매트릭스의 정보 부분 H
d
의 첫 번째 행으로부터 얻게 되는 partial check-sum value이다. 그리고, 열 인덱스가 j0일 때, 이와 동일한 열을 공유하는 옵셋 사선의 서브 매트릭스 내의 행 인덱스는 하기 <수학식 23>과 같이 도시할 수 있다.
그리고, 이와 동일한 행 인덱스를 공유하는 사선의 서브 매트릭스 내의 열 인덱스는 하기 <수학식 24>와 같이 도시할 수 있다.
상기 <수학식 23>과 <수학식 24>의 r과 f가 서로 소이면 이와 같은 과정의
r번 반복 동안 패리티 부분 H
p
내의 모든 서브 매트릭스들을 반드시, 오직 한 번만 선택할 수 있다. 그러므로, 상기와 같은 과정을 r번 반복하여 다시 얻게 되는 서브 매트릭스 내의 행 인덱스는 하기 <수학식 25>와 같이 도시할 수 있다.
상기 <수학식 25>에서 다른 모든 서브 매트릭스의 열 인덱스로 리프팅하면, 임의의
r번의 연산을 통해 사선에 존재하는 서브 매트릭스
에 대해 업데이트 되는 열 인덱스의 변화량 x는 항상 하기 <수학식 26>과 같음을 알 수 있다.
정리 2(Theorem 2) : 임의의 소수(prime number) p에 의해 정의되는 유한 필드(Finite field) Fp = {0, 1, 2, …, p-1}의 0이 아닌 임의의 모든 원소는 항상 자기 자신에 대한 p번 또는 그 이하의 덧셈에 의해 Fp의 모든 원소를 반드시, 오직 한 번 생성할 수 있다. 이를 증명하기 위해 상기 유한 필드 Fp의 0이 아닌 임의의 원소 a에 대해 하기 <수학식 27>을 만족시키는 p보다 작은 k가 존재한다면 p
가 소수(prime number)라는 가정에 위배된다. 그러므로, 하기 <수학식 27>을 만족하는 k의 최소 값은 항상 p이다.
따라서, 유한 필드 F
p의 0이 아닌 임의의 원소
a는 p번 또는 그 이하의 덧셈 연산에 의해 F
p의 모든 원소를 생성할 수 있게 된다. 정리 2로부터
r번의 선형 연산에 의해 업데이트 되는 임의의 서브 매트릭스
의 열 인덱스 변화량이 0이 아니면, 이러한
r번의 선형 연산을 모두
p번 반복하면 각 서브 매트릭스들의
p개의 열 인덱스에 대한 패리티 심볼을 생성할 수 있다. 따라서
rp개의 모든 패리티 심볼을 생성할 수 있게 된다. 즉, 하기 <수학식 28>과 같은 조건을 만족하게 된다.
상기 <수학식 28>과 같은 r번의 연산을 p번 반복하여 서브 매트릭스 내의 모든 열에 해당하는 패리티 심볼을 생성할 수 있게 된다. 아울러, 사선상에 존재하는 나머지 (r-1)개의 각 서브 매트릭스 내의 임의의 한 열에 해당하는 패리티 심볼은 위 r번의 연산 동안 하나씩 생성될 수 있게 된다. 따라서, 다음과 같은 rp번의 선형 연산에 의해 rp개의 서로 다른 열 인덱스를 갖는 패리티 심볼을 반드시, 오직 한 번 생성할 수 있게 됨을 알 수 있다.
이상에서 설명한 방법에 의거하여 패리티 부분 H
p 의 매트릭스를 생성하는 과정을 도 10을 참조하여 설명하도록 한다. 도 10은 본 발명의 바람직한 실시 예에 따라 패리티 부분의 매트릭스를 생성하기 위한 흐름도이다.
패리티 부분의 매트릭스를 생성하기 위해 1000단계에서 패리티 심볼 계산 인 덱스(parity symbol calculation index)
n을 0으로 한다. 그런 후 1002단계로 진행하여 서브 매트릭스 열 인덱스가 0인 서브 매트릭스 상의 첫 번째 열에 대하여 정보 부분
H
d 의 매트릭스 구성에 따라 정보 심볼의 합(information symbol sum) v
0를 구하고, 해당 서브 매트릭스 상의 첫 번째 행에 대한 패리티 심볼
을 v
0로 한다. 그리고, 1004단계로 진행하여 패리티 부분
H
p 의 사선상에서 서브 매트릭스 열 인덱스 0인 서브 매트릭스 상에 존재하는 패리티 심볼에 대한 열 인덱스
를 j
0로 초기화 한다.
이와 같이 행의 첫 번째 행에 대하여 정보 부분
H
d 의 매트릭스 구성에 따라 정보 심볼의 합 v
0을 계산하여 첫 번째 행에 대한 패리티 심볼
를 결정하고, 열 인덱스를 초기화 한 후에 1006단계로 진행한다. 1006단계로 진행하면, 임의의 열 인덱스
에 대하여, 이와 동일한 열을 공유하는 옵셋 사선(offset diagonal line)에 존재하는 서브 매트릭스 내의 행 인덱스
을 하기 <수학식 29>와 같이 구한다.
그런 후, 옵셋 사선상의 행 인덱스
와 동일한 행 인덱스를 갖는 사선 상에 존재하는 서브 매트릭스 내의 열 인덱스
를 하기 <수학식 30>과 같은 식으로 계산한다.
그리고, 1010단계로 진행하여 서브 매트릭스 행 인덱스
i+(
r-f)인 서브 매트릭스 내의 행 인덱스
인 행에 존재하는 정보 심볼의 합(sum)
를 구한다.
그리고, 행 인덱스
에 해당하는 패리티 심볼
을 하기 <수학식 31>과 같은 식을 이용하여 계산한다.
그런 후 1014단계로 진행하여 상기 n을 1만큼 증가시킨다. 그리고, 1016단계로 진행하여 서브 매트릭스 행 인덱스 i를 하기 <수학식 32>와 같이 갱신(update)한다.
그리고, 1018단계로 진행하여, 상기 n이 rp인가를 검사한다. 상기 1018단계의 검사는 부호화가 완료되었는가를 검사하는 것이다. 상기 1018단계의 검사결과 n
이 rp인 경우 부호화가 완료되었으므로 상기 루틴을 중지한다. 그러나, 1018단계의 검사결과 n이 rp가 아닌 경우 1006단계로 진행하여 그 이하 과정을 반복함으로써 부호화를 계속 수행한다.
이상의 과정에서 주의할 사항은 모든 인덱스 연산 - 서브 매트릭스 행 인덱스(sub-matrix row index), 행 인덱스(row index) - 은 모듈러(modulo) p 연산을 의미하며, 인덱스 연산 과정의 첨자에 대한 연산 또한 모듈러 p 연산이라는 점이다. 그리고, 패리티 심볼 또는 정보 심볼을 구하는 과정의 덧셈은 모듈러 2 연산이다. 이와 같은 조건을 만족하도록 하면서 생성한 H
p 의 한 예를 도시하면, 도 11과 같이 도시할 수 있다. 상기 도 11에 도시한 각 숫자들의 값들은 서브 매트릭스들의 옵셋 값(offset value)을 뜻한다.
(다) 저밀도 패리티 코드의 전제적 구조(Overall construction of
H
)
본 발명에서 정의하고자 하는 저밀도 패리티 코드에 대한 패리티 검사 매트릭스 H는 시스테메틱 부호화(systematic encoding)를 위해 매트릭스를 정보 부분 H
d 와, 패리티 부분 H
p 으로 나누고 이들을 결합(concatenation)시켜 정의한다. 정보 부분 H
d 와 패리티 부분 H
p 의 생성은 각각 (가) 절과 (나) 절에서 설명한 방식에 의해 이루어지고, 생성된 정보 부분 H
d 와 패리티 부분 H
p 는 각각 (dv·p)x(dv·p), (rp)x(rp) 매트릭스가 된다. 이 때, d
v 는 비정규 저밀도 패리티 코드 상에서 존재하는 maximum variable node degree이며, p는 서브 매트릭스의 차원(dimension), r은 패리티 부분 Hp를 리프팅(lifting)시키기 전의 기본 매트릭스의 차원(dimension)이다. 따라서, 결합(concatenation)을 위해서는 r = d
v 이어야 한다.
각각의 매트릭스 정보 부분 H
d , 패리티 부분 H
p
내부에는 길이가 4인 싸이클(cycle)이 존재하지 않음을 쉽게 알 수 있다. 또한, 패리티 부분 H
p 의 사선 옵셋 f를 r/2에 가까운 값으로 정하면, 열 가중치(column weight)가 r/2보다 작은 정보 부분 H
d 의 서브 매트릭스 열과 패리티 부분 H
p 의 임의의 열 사이에도 길이가 4인 싸이클이 존재하지 않음을 쉽게 알 수 있다. 다만, 정보 부분 H
d 에서 maximum variable node degree를 가중치로 갖는 열들의 경우에는 패리티 부분 H
p 의 열들과 길이가 4인 싸이클이 존재할 가능성이 있다. 이는 패리티 부분 H
p 의 서브 매트릭스 옵셋(sub-matrix offset) 값을 적절히 선택하면 쉽게 제거하여 전체 패리티 검사 매트릭스 H에 길이가 4인 싸이클이 존재하지 않도록 할 수 있다.
2. 저밀도 패리티 코드의 성능(Performance of LDPC code)
지금까지 선형 연산에 의해 시스테메틱 부호화(systematic encoding)가 쉽게 이루어 질 수 있는 부호율(rate) 1/2 비정규 저밀도 패리티 코드를 정의하기 위한 패리티 검사 매트릭스의 구조에 관하여 살펴보았다. 1장에서 정의한 패리티 검사 매트릭스는 주어진 정보 심볼에 따라 코드워드(codeword)의 패리티 심볼을 생성하기 위해 매트릭스를 정보 부분과 패리티 부분으로 나누어 생각하였다. 그리고, 정 보 부분의 행렬은 배열 코드(array code) 구조를 기반으로 한 매트릭스 구조에 각 열의 가중치가 가변 노드의 optimum irregular degree distribution에 근사한 degree를 갖도록 구성하였으며, 패리티 부분의 행렬은 일반화된 이중 사선 매트릭스(generalized dual-diagonal matrix) 구조를 임의의 옵셋(random offset)을 갖는 서브 매트릭스를 이용하여 리프팅시켜 구성하였다. 이때, degree가 2인 가변 노드는 항상 패리티 부분의 열로 할당되도록 하였다.
이제 이와 같이 정의한 패리티 검사 매트릭스에 의해 구성되는 저밀도 패리티 검사 코드의 성능을 살펴보도록 한다. 이를 위해 저밀도 패리티 검사 코드의 성능을 평가하기 위한 복호화 알고리즘(decoding algorithm) 및 실험 환경을 먼저 설명하도록 한다.
A. 반복적 신뢰 증식 복호(Iterative belief propagation decoding)
MxN 패리티 검사 매트릭스(parity check matrix)에 의해 정의되는 저밀도 패리티 검사 코드는 M개의 검사 노드와 N개의 가변 노드에 의해 구성되는 펙터 그래프(factor graph)에 의해 표현될 수 있다. 그리고, degree가 d c 인 검사 노드와, degree가 d v 인 가변 노드에서의 메시지 갱신(message update) 과정을 로그 도메인(log-domain)에서 요약하면 검사 노드의 메시지 갱신은 하기 <수학식 33>과 같이 도시할 수 있으며, 가변 노드의 메시지 갱신은 하기 <수학식 34>와 같이 도시할 수 있고, 로그 우도율(LLR : Log Likelihood Ratio)의 갱신을 하기 <수학식 35> 와 같이 도시할 수 있다.
상기 <수학식 33>의
은 준 반복 복호 과정에서 j 번째 반복 복호 과정에서 얻게 되는 값으로 검사 노드 m에서 변수 노드 n으로 전달하는 메시지이다. 그리고,
는 j 번째 반복 복호 과정에서 변수 노드 I로부터 검사 노드 m으로 전달되는 메시지이다. 이때, i 는 검사 노드 m에 연결된 변수 노드들을 0부터
까지 재 정렬한 값이다. 따라서 i 가 0인 경우에는 변수 노드 n을 의미한다.
상기 <수학식 34>에서
은 j 번째 반복 복호 과정에서 얻게 되는 값으로 변수 노드 n에서 검사 노드 m으로 전달하는 메시지이다. 이때
은 j 번째 반복 과정에서 검사 노드 i로부터 변수 노드 n으로 전달되는 메시지이며, i는 변수 노드 n에 연결된 검사 노드들을 0부터
까지 재 정렬한 값이다. 따라서 i가 0 인 경우에는 검사 노드 m을 의미한다.
상기 <수학식 35>에서
은 j번째 반복 복호 과정에서 변수 노드 n에 정의되는 LLR 값이다.
그러면 상기 <수학식 33> 내지 상기 <수학식 35>의 과정을 이용하여 반복적 신뢰 증식 복호 과정(iterative belief propagation decoding)을 설명하기로 한다. 도 12는 상기 <수학식 33> 내지 <수학식 35>를 이용한 반복적 신뢰 증식 복호 과정의 흐름도이다.
도 12는 수신기의 입장에서 수신된 메시지를 복호하는 과정이다. 따라서 수신된 메시지에 대한 변수 노드 n의 초기 메시지는 수신 부호어의 n번째 심볼의 채널 신뢰도(channel reliability)로 정의하며, 이를 수학식으로 도시하면 하기 <수학식 36>과 같이 도시할 수 있다.
상기 <수학식 36>에서
은 최초 정의되는 변수 노드 메시지의 초기 값이고,
은 최초 정의되는 변수 노드에 대한 초기 LLR 값이다. 이와 같이 메시지 갱 신 시에 1200단계에서 상기 <수학식 36>과 같이 수신된 부호어의 n번째 심볼의 채널 신뢰도로 정의한다. 또한 반복 횟수 카운터를 리셋한다. 그런 후 1202단계로 진행하여 검사 노드의 메시지를 갱신한다. 이러한 갱신은 상술한 <수학식 33>과 같은 방법으로 갱신을 수행할 수 있다. 그리고, 1204단계로 진행하여 가변 노드와 로그 우도율을 갱신한다. 상기 가변 노드의 메시지 갱신은 상기 <수학식 34>와 같은 방법으로 갱신을 수행하며, 로그 우도율의 갱신은 <수학식 35>와 같은 방법을 통해 갱신한다.
상기 과정을 통해 검사 노드, 가변 노드 및 로그 우도율이 모두 갱신된 이후에 1206단계로 진행하여 상기 갱신된 로그 우도율의 값을 경판정(Hard decision)한다. 그리고 1208단계로 진행하여 경판정된 값을 바탕으로 수신된 메시지에 대하여 패리티 검사를 수행한다. 상기 패리티 검사 결과가 0의 값을 가지는 경우 복호가 성공적으로 수행된 것이므로, 1216단계로 복호를 중단한다. 그러나, 패리티 검사 결과 0의 값을 가지지 않는 경우 1210단계로 진행하여 미리 결정된 횟수만큼 반복이 이루어졌는가를 검사한다. 상기 1210단계의 검사결과 미리 결정된 횟수만큼 반복이 이루어진 경우 더 이상 복호를 수행하여도 성공할 확률이 적은 경우이므로, 1214단계로 진행하여 복호 실패 처리를 수행한다. 그러나 1210단계의 검사결과 미리 결정된 횟수만큼 반복이 이루어지지 않은 경우 1212단계로 진행하여 상기 반복 카운터를 1 증가시키고, 1202단계로 진행한다.
B. 시뮬레이션 환경(Simulation environment)
본 발명에서 정의한 패리티 검사 매트릭스에 의해 구성되는 저밀도 패리티 검사 코드의 성능을 평가하기 위한 실험 환경은 하기 <표 1>과 같은 환경에서 수행하였다.
- Code rate = 1/2, maximum variable node degree = 15 - Offset (f) inH
p = 7 - Frame size = 435(p=29), 795 (p=53), 1545(p=103), 3855(p=257) - Binary antipodal signaling over AWGN channel - Iterative belief propagation decoding - Floating point simulation - Maximum number of iterations = 160 - Stop by parity check at each iteration - Frame error rate (FER) & information bit error rate (BER) evaluation |
또한 본 발명에서는 논의의 편의를 위해 저밀도 패리티 코드의 부호율을 1/2로 한정하였다. 하지만, 보다 다양한 부호율을 지원하기 위한 저밀도 패리티 코드의 패리티 검사 매트릭스 디자인(parity check matrix design)은 본 발명에 정의된 방식을 부호율에 맞추어 리프팅 하는 방식으로 논의될 수 있을 것이다. 그리고, 본 발명에서 정의한 패리티 검사 매트릭스에 의한 저밀도 패리티 코드의 펙터 그래프상에서 maximum variable node degree는 15로 정하였는데, 이는 우수한 성능을 얻을 수 있는 동시에 구현상에서 하드웨어의 크기(H/W size)가 커지지 않도록 하기 위함이다. 패리티 부분 H
p 매트릭스에서 옵셋(offset) f는 7로 정하였다. 이와 같은 옵셋을 정한 이유는, 본 발명의 C절의 (다)에서 설명한 바와 같이 길이가 4인 싸이클을 패리티 검사 매트릭스 내에서 쉽게 없애기 위함이다. 본 발명에서 실험한 저밀도 패리티 검사 코드의 프레임 크기(frame size)는 cdma2000 1xEV-DV 표준(standard)에 명시된 부호화 패킷(encoder packet : EP) 크기와 유사하게 설정하여 cdma2000 1xEV-DV 표준에서 현재 사용되고 있는 터보 복호기의 성능과 비교하 도록 하였다. 이때, 성능 비교를 위한 터보 코드의 복호 과정에서는 로그-맵 알고리즘(Log-MAP algorithm)을 사용하였고, 최대 반복 복호 회수는 8회로 제한하였다.
한편, 저밀도 패리티 검사 코드의 반복적 신뢰 증식 복호(iterative belief propagation decoder)의 최대 반복 횟수는 160회로 정하였는데, 이는 일반적으로 density evolution 기법 상에서 비정규 저밀도 패리티 검사 코드의 수렴 속도가 비교적 늦은 사실을 감안한 것이다. 그리고, 복호기(decoder)에 관한 실험은 extrinsic & 로그 우도율 정보(LLR information)를 실제 값(real value)으로 표현하는 부동 소수점 시뮬레이션(floating point simulation)을 수행하였다. 검사 노드의 갱신 과정에서
함수의 오버 플로우(overflow)를 방지하기 위해 |x|<10
-8인 x에 대해
의 값을 20으로 제한하였다. 저밀도 패리티 검사 코드의 복호기 상에서는 매 반복(iteration)마다 패리티 검사를 수행하여 stopping criterion으로 삼고 패리티 검사에서 오류가 검출되지 않았으나, 실제로 오류가 발생한 경우에는 비검출 오류(undetected error)가 발생한 프레임(frame)으로 분류하였다. 마지막으로 본 발명에서 설계한 저밀도 패리티 검사 코드의 성능을 평가하는 measure로는 프레임 오류율(frame error rate)과 비트 오류율(bit error rate)을 사용하였다. 이때 프레임/비트 오류(frame/bit error)란 정보 심볼에 오류가 발생한 경우만을 고려하였다. 이제 위에서 제시한 실험 환경에서 실험한 저밀도 패리티 검사 코드의 성능을 보이도록 한다.
C. 시뮬레이션 결과들(Simulation results)
도 13a는 n = 870, p = 29인 경우 정보 부분 Hd의 매트릭스를 예로서 도시한 도면이며, 도 13b는 n = 870, p = 29인 경우 패리티 부분 Hp의 매트릭스를 예로서 도시한 도면이고, 도 13c는 저밀도 패리티 검사 코드와 터보 부호의 성능을 비교한 시뮬레이션 결과 그래프이다.
상기 도 13a와 도 13b에 도시한 정보 부분의 매트릭스와 패리티 부분의 매트릭스는 이상에서 설명한 본 발명에 따라 구성한 것으로 실제로는 두 매트릭스가 결합되어 부호화를 수행하게 된다. 그러면 상기 도 13c에 도시한 바와 같은 성능을 나타낸 경우의 조건들에 대하여 살펴본다. 두 부호화 방법의 성능의 비교를 위해 cdma2000 1xEV-DV 표준의 부호화 패킷(EP) 크기가 408이고, 부호화율(code rate)이 1/2인 경우의 성능을 함께 나타내었다. 도 13c에서 보는 바와 같이 블록 크기(block size)가 작은 경우 cdma2000 1xEV-DV 표준에서 사용되는 터보 부호(turbo code)의 성능이 본 발명에서 제안한 저밀도 패리티 검사 코드의 성능보다 프레임 에러율(FER) 및 비트 에러율(BER) 모두 약간 우수함을 알 수 있다. 이는 본 발명에서 제안한 저밀도 패리티 검사 코드를 정의하는 패리티 검사 매트릭스 구조가 블록 크기가 작은 코드워드(codeword)의 복호 성능 면에서는 최적화된 구조가 아님을 나타내고 있는 것이다. 즉, 저밀도 패리티 검사 코드의 부호화 블록 크기가 작은 경우, 기존에 알려진 터보 부호의 성능과 비교하여 저밀도 패리티 검사 코드가 우수한 성능을 나타내기 위해서는 패리티 검사 매트릭스에 대한 최적화 작업이 보다 더 수행되어야 함을 나타낸다고 할 수 있다. 그러나, 블록 크기가 큰 코드워 드의 복호 성능면에서는 터보 부호보다 성능 개선 효과가 있음을 확인할 수 있다.
하기 <표 2>는 n=870인 경우, 각 Eb/No에 따른 평균 반복 복호 회수를 나타낸 것이다. 주어진 저밀도 패리티 검사 코드에 대해 최대 160회의 반복 복호를 수행하지만, 실제 복호 결과는 20회 이내에서 높은 SNR을 고려하면 10회 이내의 반복 복호만으로 충분한 성능을 얻을 수 있음을 나타낸다.
Eb/No (dB) |
Average number of iterations |
1.6 |
15.085 |
1.8 |
11.353 |
2.0 |
9.317 |
2.2 |
8.01 |
2.4 |
7.087 |
도 14a는 n = 1590, p = 53인 경우 정보 부분 Hd의 매트릭스를 예로서 도시한 도면이며, 도 14b는 n = 1590, p = 53인 경우 패리티 부분 Hp의 매트릭스를 예로서 도시한 도면이고, 도 14c는 저밀도 패리티 검사 코드와 터보 부호의 성능을 비교한 시뮬레이션 결과 그래프이다.
상기 도 14a와 도 14b에 도시한 정보 부분의 매트릭스와 패리티 부분의 매트릭스는 이상에서 설명한 본 발명에 따라 구성한 것으로 실제로는 두 매트릭스가 결합되어 부호화를 수행하게 된다.
그러면 상기 도 14c에 도시한 바와 같은 성능을 나타낸 경우의 조건들에 대하여 살펴본다. 두 부호화 방법의 성능의 비교를 위해 cdma2000 1xEV-DV 표준의 부호화 패킷의 크기가 792이고, 부호율이 1/2인 경우의 성능을 함께 나타내었다. 상기 도 14c를 살펴보면, 저밀도 패리티 검사 코드의 블록 크기가 증가함에 따라 프 레임 오류율은 기존에 사용되는 터보 코드의 그것과 거의 비슷한 성능을 보인다. 하지만, 비트 오류율은 터보 코드에 비해 여전히 좋지 않은 성능을 보이고 있다. 이는 터보 코드의 오류가 발생한 프레임에 존재하는 비트 오류의 비율이 저밀도 패리티 검사 코드에 비해 낮기 때문이다. 즉, 터보 코드는 동일한 Eb/No에서 BER/FER의 비율이 저밀도 패리티 코드보다 낮은 값을 갖게 되며, 이와 같이 BER/FER의 비율이 낮은 경우에는 오류가 발생한 프레임에 존재하는 평균 비트 오류의 개수가 저밀도 패리티 검사 코드에 비해 적음을 뜻한다. 하지만, 복합 자동 재전송(Hybrid ARQ)을 적용하는 실제 무선 통신 시스템에서는 비트 오류율보다 프레임 오류율의 성능이 우수한 것이 보다 유리하기 때문에 도 14c에 따라 n = 1590인 경우에 본 발명의 저밀도 패리티 검사 코드는 cdma2000 1xEV-DV 표준의 터보 부호에 필적하는 성능을 갖는다고 볼 수 있다.
하기 <표 3>은 n = 1590인 경우, 각 Eb/No에 따른 평균 반복 복호 회수를 나타낸 것이다. 블록 크기가 증가함에 따라 평균 반복 복호 회수는 상기 <표 2>의 경우에 비해 다소 증가했음을 알 수 있다. 하지만, 충분히 높은 SNR에서는 20회 안팎의 반복 복호만으로도 충분한 성능을 얻을 수 있음을 알 수 있다.
Eb/No (dB) |
Average number of iterations |
1.1 |
40.308 |
1.3 |
21.504 |
1.5 |
14.858 |
1.7 |
12.018 |
1.8 |
11.020 |
도 15a는 n = 3090, p = 103인 경우 정보 부분 Hd의 매트릭스를 예로서 도시 한 도면이며, 도 15b는 n = 3090, p = 103인 경우 패리티 부분 Hp의 매트릭스를 예로서 도시한 도면이고, 도 15c는 저밀도 패리티 검사 코드와 터보 부호의 성능을 비교한 시뮬레이션 결과 그래프이다.
상기 도 15a와 도 15b에 도시한 정보 부분의 매트릭스와 패리티 부분의 매트릭스는 이상에서 설명한 본 발명에 따라 구성한 것으로 실제로는 두 매트릭스가 결합되어 부호화를 수행하게 된다.
그러면 상기 도 15c에 도시한 바와 같은 성능을 나타낸 경우의 조건들에 대하여 살펴본다. 두 부호화의 성능의 비교를 위해 cdma2000 1xEV-DV 표준의 부호화 패킷 크기가 1560이고, 부호화 율이 1/2인 경우의 성능을 함께 나타내었다. 상기 도 15c는 저밀도 패리티 검사 코드의 블록 크기가 증가함에 따라 프레임 에러율이 비슷한 프레임 크기의 터보 부호에 비해 더 나은 성능을 보이고 있음을 나타내고 있다. 비트 에러율은 도 14c와 마찬가지로 터보 부호에 비해 여전히 좋지 않은 성능을 보이고 있으나, 그 차이는 많이 줄어들어 터보 부호의 성능에 매우 근접하고 있음을 보이고 있다.
하기 <표 4>는 n = 3090인 경우, 각 Eb/No에 따른 평균 반복 복호 회수를 나타낸 것이다. 블록의 크기가 증가함에 따라 평균 반복 복호 회수는 상기 <표 2>의 경우에 비해 다소 증가했음을 알 수 있다. 하지만, 충분히 높은 SNR에서는 20회 안팎의 반복 복호만으로도 충분한 성능을 얻을 수 있음을 알 수 있다.
Eb/No (dB) |
Average number of iterations |
1.1 |
38.495 |
1.2 |
22.051 |
1.4 |
16.190 |
1.5 |
14.623 |
도 16a는 n = 7710, p = 257인 경우 정보 부분 H
d 의 매트릭스를 예로서 도시한 도면이며, 도 16b는 n = 7710, p = 257인 경우 패리티 부분 H
p 의 매트릭스를 예로서 도시한 도면이고, 도 16c는 저밀도 패리티 검사 코드와 터보 부호의 성능을 비교한 시뮬레이션 결과 그래프이며, 도 16d는 저밀도 패리티 검사 코드의 반복 횟수 변화에 따른 시뮬레이션 결과 그레프이다.
상기 도 16a와 도 16b에 도시한 정보 부분의 매트릭스와 패리티 부분의 매트릭스는 이상에서 설명한 본 발명에 따라 구성한 것으로 실제로는 두 매트릭스가 결합되어 부호화를 수행하게 된다.
그러면 상기 도 16c에 도시한 바와 같은 성능을 나타낸 경우의 조건들에 대하여 살펴본다. 성능의 비교를 위해 cdma2000 1xEV-DV 표준의 부호화 패킷의 크기가 3864이고, 부호율이 1/2인 경우의 성능을 함께 나타내었다. 도 16c는 저밀도 패리티 검사 코드의 블록 크기가 매우 큰 경우에는 비슷한 프레임 크기의 터보 코드에 비해 매우 우수한 성능을 보이고 있음을 나타내고 있다. 특히, cdma2000 1xEV-DV 표준에서 사용되고 있는 프레임 길이가 3864인 터보 부호는 높은(high) 신호대 잡음비(SNR)에서 프레임 에러율(frame error rate)과 비트 에러율(bit error rate) 모두 에러 마루(error floor)가 발생하고 있음을 알 수 있다. 그러나, 본 발명에서 정의한 저밀도 패리티 검사 코드의 경우에는 이러한 오류 마루가 발생하지 않음을 확인할 수 있었다. 이러한 성능은 H-ARQ를 사용하는 통신 시스템에서 매우 유리한 점이다. 이에 따라 본 발명에서 정의한 저밀도 패리티 검사 코드가 기존의 표준에서 사용되고 있는 터보 부호에 비해 성능면에서 매우 우수함을 나타낸다고 할 수 있을 것이다. 하기 <표 5>는 n = 7710인 경우, 각 Eb/No에 따른 평균 반복 복호 회수를 나타낸 것이다.
Eb/No (dB) |
Average number of iterations |
0.9 |
41.036 |
1.0 |
31.034 |
1.1 |
25.507 |
1.2 |
22.170 |
상기 <표 5>에서 저밀도 패리티 검사 코드의 블록 크기가 증가함에 따라 평균 반복 복호 회수는 상기 <표 4>의 경우에 비해 증가했음을 알 수 있다. 즉, cdma2000 1xEV-DV 표준과 유사한 최대 프레임 크기를 지원하는 저밀도 패리티 검사 코드의 경우에는 높은 신호대 잡음비에서도 20회 이상의 반복 복호가(iterative decoding)이 필요하게 되며, 따라서 최소의 지연만을 가지면서도 최적의 성능을 발휘하기 위해서는 반복 횟수(iteration number)에 따른 저밀도 패리티 검사 복호기(LDPC decoder)의 성능을 관찰할 필요가 있다.
도 16d는 상기 도 16a 및 도 16b와 같은 구성을 가지는 저밀도 패리티 검사 코드에서 최대 반복 횟수(iteration number)를 40, 80, 120, 160회로 제한하였을 때 얻을 수 있는 각각의 FER/BER 성능을 나타낸 도면이다. 지금까지의 경우와는 달리 최대 반복 복호 회수를 각각 40, 80, 120회로 제한하였을 경우에는 약간의 성능 저하가 나타났다. 그러나, 최대 반복 복호 회수를 40회로 제한한 경우를 제외하고는 발생한 성능 열화는 그리 크지 않은 것으로 생각되어 최대 반복 복호 회수를 80회 정도로 제한하더라도 성능면에서 크게 문제되지는 않을 것이다. 특히, 블록 크기가 이보다 작은 경우에는 최대 반복 복호를 80회로 제한함에 따른 성능 열화는 더욱 감소하여 매우 미미해질 것이다. 따라서, 본 발명에서 제안한 저밀도 패리티 검사 코드는 최대 부호 블록 크기를 7710회 정도로 가정하였을 때, 최대 반복 복호 회수를 80회 정도로만 하면, 복호시 충분한 성능을 얻을 수 있다.
3. 결론(Conclusions)
본 발명에서는 부호율(code rate) = 1/2인 경우에 한해, 효율적인 부호화가 가능하고, 우수한 복호 성능을 얻을 수 있는 저밀도 패리티 검사 코드를 정의하였다. 그리고, 이를 위해 저밀도 패리티 검사 코드를 정의하는 패리티 검사 매트릭스를 두 부분으로 구분(partition)하여, 패리티 검사 매트릭스에서 코드워드의 정보에 해당하는 부분은 행 가중치(column weight)가 2보다 큰 배열 코드(array code) 구조를 이용하여 정의하였다. 그리고, 패리티 검사 매트릭스에서 코드워드의 패리티에 해당하는 부분은 행 가중치가 모두 2인 일반화된 이중 사선 매트릭스(generalized dual diagonal matrix) 형태로 정의하였다. 이러한 방식으로 정의된 패리티 검사 매트릭스는 maximum variable node degree가 dv=15인 비정규 저밀도 패리티 검사 코드를 생성하며, 유사 가우시안(Gaussian approximation)에 의한 density evolution technique에 의해 백색 가우시안 잡음 채널(AWGN channel)에 서 error free를 위한 임계치(threshold)가 0.9352임을 확인할 수 있었다. 이는 부호율 1/2인 부호에 대해 쉐논(Shannon)의 채널 용량에 비해 0.5819 dB만큼 근접한 형태의 성능이다.
일단, 선형 부호화가 가능하다는 점을 먼저 생각하면, 실제 선형 부호화의 가능 여부를 고려하지 않고, 보다 임의의(random) 방식으로 패리티 검사 매트릭스(parity check matrix)를 설계하면, Shannon의 임계치에 0.5819 dB보다 훨씬 근접하는 우수한 저밀도 패리티 검사 코드를 생성할 수 있다. 그러나, 이러한 경우는 부호화 과정이 복잡하게 되어 실제 구현에 문제가 있을 수 있다. 선형 부호화를 가능하게 하는 것은 저밀도 패리티 검사 코드를 정의하는 패리티 검사 매트릭스에 하나의 제한 조건으로 작용하기 때문에, 패리티 검사 매트릭스(parity check matrix)가 임의의 구조(structure)를 가져야 한다. 따라서 좋은 성능을 보이기 위한 가능성은 선형 부호화를 고려하지 않고 임의로 정의한 패리티 검사 매트릭스(parity check matrix)보다 줄어들게 될 것이다. 그러므로 본 발명을 적용하게 되면, 선형 부호화를 고려하여 비교적 우수한 성능을 보이게 된다. 즉, 상기한 선형 부호화에 따른 패리티 검사 매트릭스(parity check matrix)의 제약에도 불구하고 비교적 우수한 성능을 보인다.
그리고, 복호시 우수한 성능을 보이기 위해서는 패리티 검사 매트릭스(parity check matrix)의 degree distribution을 정의하는데 있어 부호어의 크기를 증가시키고, 이에 따라 maximum variable node degree를 높이면 Shannon의 한계치에 거의 근접하는 성능을 갖는 저밀도 패리티 검사 코드를 설계할 수 있 다. 하지만, 이 경우 maximum variable node degree가 증가할수록 복호시 복호기의 복잡도가 증가하기 때문에, 실제 구현과는 거리가 먼 이야기라고 할 수 있다. 따라서, 복호기 복잡도가 가능하다고 한 것은 구현을 하는데 있어 어느 정도 합당한(reasonable) maximum variable node degree를 설정한 것이다.
본 발명에서 정의한 패리티 검사 매트릭스에 의한 저밀도 패리티 검사 코드는 패리티 검사 매트릭스에서 코드워드의 패리티 부분이 pxp 항등 매트릭스의 순환 순열(cyclic permutation)에 의해 리프팅된 일반화된 이중 사선 매트릭스 형태를 가진다. 따라서 간단한 선형 연산에 의해 쉽게 부호화가 가능하다. 그리고, iterative belief propagation에 의한 복호 성능을 cdma2000 1xEV-DV 표준에서 사용되고 있는 터보 부호의 성능과 비교하였을 때, 유사한 프레임 크기에 대해 보다 우수한 프레임 오류율(frame error rate)을 얻을 수 있음을 실험을 통해 확인하였다. 특히, 터보 부호에 비해 우수한 프레임 오류율을 갖는 것은 본 발명의 저밀도 패리티 검사 코드를 hybrid-ARQ technique과 접목하여 사용할 경우, 매우 우수한 장점이 될 것이다. 따라서, 본 발명에서 정의한 저밀도 패리티 검사 코드는 간단한 선형 연산에 의해 쉽게 부호화가 가능하다. 또한, 복호기의 구현에 있어서도 각 서브 매트릭스(sub-matrix_의 행(row) 및 열(column) 별로 검사 노드 프로세서(check node processor)와 가변 노드 프로세서(variable node processor)를 병렬로 구현하여 매우 빠른 속도의 복호가 가능하다.
본 발명에서 정의한 저밀도 패리티 검사 코드는 패리티 검사 매트릭스를 구성하는 서브 매트릭스들의 배열 구조의 특성상 저밀도 패리티 검사 코드를 정의하 는 펙터 그래프에서 길이가 4인 싸이클은 존재하지 않음을 쉽게 확인할 수 있다.