KR20090095288A - 패리터 검사 행렬 생성 방법 - Google Patents

패리터 검사 행렬 생성 방법 Download PDF

Info

Publication number
KR20090095288A
KR20090095288A KR1020080020549A KR20080020549A KR20090095288A KR 20090095288 A KR20090095288 A KR 20090095288A KR 1020080020549 A KR1020080020549 A KR 1020080020549A KR 20080020549 A KR20080020549 A KR 20080020549A KR 20090095288 A KR20090095288 A KR 20090095288A
Authority
KR
South Korea
Prior art keywords
parity check
check matrix
matrix
rows
parity
Prior art date
Application number
KR1020080020549A
Other languages
English (en)
Other versions
KR101435831B1 (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 KR1020080020549A priority Critical patent/KR101435831B1/ko
Publication of KR20090095288A publication Critical patent/KR20090095288A/ko
Application granted granted Critical
Publication of KR101435831B1 publication Critical patent/KR101435831B1/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/1131Scheduling of bit node or check node processing
    • 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

Landscapes

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

Abstract

본 발명의 일 양상에 따르는 패리티 검사 행렬 생성 방법은, 입력 데이터열을 LDPC(Low Density Parity Check) 코딩 기법에 의해 부호화거나 부호화된 코드워드를 복호화하는 경우 사용되는 패리티 검사 행렬을 생성하는 방법에 있어서, 모델 행렬의 형식으로 표현되는 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 적어도 하나 이상의 분할 패턴에 따라 분할함으로써 적어도 하나 이상의 패리티 검사 행렬을 생성하는 단계, 상기 적어도 하나 이상의 행을 각 분할 패턴에 따라 분할함으로써 생성된 상기 적어도 하나 이상의 패리티 검사 행렬의 각각에 대해 싸이클(cycle) 특성을 체크하는 단계 및 상기 싸이클 특성 체크 결과에 따라 상기 적어도 하나 이상의 패리티 검사 행렬 중에서 특정 패리티 검사 행렬을 최종 패리티 검사 행렬로 결정하는 단계를 포함하여 구성된다.
행 분할, 모델 행렬, 패리티 검사 행렬, 분할 패턴

Description

패리터 검사 행렬 생성 방법{Method of generating parity check matrix}
본 발명은 패리티 검사 행렬 생성 방법에 관한 것으로서, 보다 상세하게는, 입력 데이터열을 LDPC(Low Density Parity Check) 코딩 기법에 의해 부호화거나 부호화된 코드워드를 복호화하는 경우 사용되는 패리티 검사 행렬을 생성하는 방법에 관한 것이다.
일반적으로 부호화(encoding)라 함은 송신측에서 송신된 데이터가 통신 채널을 통하여 전송되는 과정에서 발생되는 신호의 일그러짐, 손실 등에 의한 오류의 발생에도 불구하고 수신측에서 원래의 데이터를 복원할 수 있도록 하기 위하여 송신측에서 데이터 처리를 하는 과정을 의미한다. 복호화(decoding)은 부호화되어 송신된 신호를 수신측에서 원래의 데이터로 복원하는 과정이다.
최근에 LDPC 코드를 이용한 부호화 방법이 부각되고 있다. LDPC 코드는 패리티 검사 행렬(parity check matrix) Η의 원소(element)들의 대부분이 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 코드의 패리티 검사 행렬은 1의 개수가 매우 적기 때문에 매우 큰 블록 크기에서도 반복 복호를 통하여 복호가 가능하여 블록 크기가 매우 커지면 터보 코드처럼 섀넌(Shannon)의 채널 용량 한계에 근접하는 성능을 보인다.
LDPC 코드는 (n-k)×n 패리티 검사 행렬 Η에 의해 설명될 수 있다. 상기 패리티 검사 행렬 Η에 대응하는 생성 행렬(generator matrix) G는 다음의 수학식1에 의해 구할 수 있다.
ΗㆍG = 0
LDPC 코드를 이용한 부호화 및 복호화 방법에 있어서는 송신측에서 상기 패리티 검사 행렬 Η와 수학식1의 관계에 있는 상기 생성 행렬 G를 이용하여 다음의 수학식2에 의해 입력 데이터를 부호화한다.
c = Gㆍu (여기서, c는 코드워드(codeword)이고, u는 데이터 프레임임.)
상기한 바와 같이, LDPC 코드를 이용한 부호화 방법에서는 상기 패리티 검사 행렬 Η가 가장 중요한 요소라 할 수 있다. 상기 패리티 검사 행렬 Η는 대략 1000 ×2000 정도의 크기를 갖기 때문에 부호화 및 복호화 과정에서 많은 연산이 요구되고, 구현이 매우 복잡하며, 많은 저장 공간을 요구한다.
일반적으로 패리티 검사 행렬 H에 더 많은 무게(weight)를 부가하는 것은, 패리티 검사 방정식들(parity check equations)에 더 많은 변수를 부가하는 것이기 때문에 LDPC 코드에 의한 부호화 및 복호화 방법에서 더 좋은 성능을 발휘할 수 있다. 여기서, 무게란 패리티 검사 행렬에서 각 열(column) 또는 행(row)에 포함된 '1'의 개수를 의미한다. 그러나, 패리티 검사 행렬 H에 더 많은 무게를 부가하면 패리티 검사 행렬 전체에 싸이클-4(cycle-4)이나 싸이클-6(cycle-6)을 형성하는 경우가 많아져 이에 따라 LDPC 코드에 의한 부호화 및 복호화 과정의 복잡도를 증가시키고 성능을 저하시킬 수 있는 위험성도 따른다.
싸이클-4은 패리티 검사 행렬 Η의 두 행이 두 개의 지점에 동시에 1을 갖는 경우를 의미하고, 싸이클-6은 임의의 세 행 중에서 선택된 모든 조합 가능한 두 개의 행이 같은 지점에 1을 갖는 경우를 의미한다. 패리티 검사 행렬이 싸이클-4이나 싸이클-6을 많이 갖고 있다고 하는 것은 부호화 또는 복호화 성능이 저하될 가능성이 높음을 의미한다.
상기한 바와 같이, LDPC 코드를 이용한 부호화 및 복호화 방법에 있어서 패리티 검사 행렬 각 행 또는 열의 무게를 어떻게 배분할 것인지와 싸이클-4이나 싸이클-6과 등과 같은 싸이클을 어떻게 제어할 것인지는 부호화 및 복호화 성능에 지대한 영향을 미치게 된다.
본 발명은 상기한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, 본 발명의 목적은 LDPC 코드를 이용한 부호화 및 복호화 방법에서 그 성능을 향상시킬 수 있는 패리티 검사 행렬 생성 방법을 제공하는 것이다.
본 발명의 다른 목적은 패리티 검사 행렬의 싸이클 특성을 용이하게 제어할 수 있는 방안을 제공하는 것이다.
본 발명의 일 양상에 따르는 패리티 검사 행렬 생성 방법은, 입력 데이터열을 LDPC(Low Density Parity Check) 코딩 기법에 의해 부호화거나 부호화된 코드워드를 복호화하는 경우 사용되는 패리티 검사 행렬을 생성하는 방법에 있어서, 모델 행렬의 형식으로 표현되는 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 적어도 하나 이상의 분할 패턴에 따라 분할함으로써 적어도 하나 이상의 패리티 검사 행렬을 생성하는 단계, 상기 적어도 하나 이상의 행을 각 분할 패턴에 따라 분할함으로써 생성된 상기 적어도 하나 이상의 패리티 검사 행렬의 각각에 대해 싸이클(cycle) 특성을 체크하는 단계 및 상기 싸이클 특성 체크 결과에 따라 상기 적어 도 하나 이상의 패리티 검사 행렬 중에서 특정 패리티 검사 행렬을 최종 패리티 검사 행렬로 결정하는 단계를 포함하여 구성된다.
본 발명에 따르면 다음과 같은 효과가 있다.
첫째, 패리티 검사 행렬 생성 시에 싸이클-4이나 싸이클-6 등과 같은 싸이클 수의 제어가 가능하다.
둘째, LDPC 코드를 이용한 부호화 및 복호화 효율을 증대시킬 수 있다.
이하에서 첨부된 도면을 참조하여 설명되는 본 발명의 실시예들에 의해 본 발명의 구성, 작용 및 다른 특징들이 용이하게 이해될 수 있을 것이다.
본 발명의 실시예들은 구조화된(structured) LDPC 부호화 및 복호화 방법을 전제로 하므로, 이하에서 구조화된 LDPC 부호화 및 복호화 방법에 대해 설명하도록 한다.
LDPC 코드를 사용하기 위해서는 패리티 검사 행렬을 사용한다. 전술한 바와 같이, 패리티 검사 행렬은 이진 행렬(binary matrix)로서 대부분의 원소(element)는 '0'이고, 일부는 '1'이다. 실제 부호화 또는 복호화에 사용되는 패리티 검사 행렬의 크기는 105 비트 이상이기 때문에 패리티 검사 행렬을 저장하기 위해 대용량의 메모리가 필요하다.
구조화된 LDPC 부호화 기법에서는 패리티 검사 행렬은 모델 행렬(model matrix)의 형식으로 저장된다. 모델 행렬은 각각 특정 서브 행렬(sub-matrix)을 지시하는 다수의 인덱스들(indexes)로 이루어진다. 즉, 각 서브 행렬은 일정 크기(z×z)의 행렬로서 특정 인덱스에 의해 표현된다. 부호화 또는 복호화 수행 시에 상기 모델 행렬의 각 인덱스를 그 인덱스가 지시하는 서브 행렬로 대체함으로써 패리티 검사 행렬로 확장되어 사용된다.
도 1은 모델 행렬의 일 예를 도시한 것이다. 도 1에서, 각 정수는 해당 서브 행렬의 인덱스를 의미한다. 예를 들어, 인덱스가 '-1'인 경우는 특정한 크기의 영 행렬(zero matrix)을 의미하며, 인덱스가 '0'인 경우는 특정한 크기의 단위 행렬(identity matrix)을 의미한다. '-1'과 '0'을 제외한 양의 정수인 인덱스는 해당 서브 행렬이 생성된 소정 규칙을 의미할 수 있다. 예를 들어, 양의 정수인 인덱스는 쉬프트 수(shift number)를 나타낸다. 즉, 각 서브 행렬이 단위 행렬의 각 행 또는 열을 일정 방향으로 쉬프트시켜 생성된 퍼뮤테이션 행렬이라고 할 경우, 상기 쉬프트 수를 해당 서브 행렬의 인덱스로 할 수 있다. 예를 들어, 서브 행렬을 '1'이라는 인덱스로 표현하는 경우, 해당 서브 행렬은 단위 행렬의 각 행 또는 열을 특정한 방향으로 한 칸(행 또는 열)씩 쉬프트함으로써 생성된 것이다. 모델 행렬 내에서 영 행렬인 서브 행렬을 표시하기 위해 아무런 인덱스를 사용하지 않을 수도 있다. 이하의 실시예들에 있어서는 영 행렬인 서브 행렬를 표시하기 위해서 인덱스를 사용하지 않는다.
도 2는 상술한 인덱스, 즉 쉬프트 수(shift number)에 따른 행렬의 표현 방법을 설명하기 위한 도면이다. 특정한 패리티 검사 행렬을 4×4 크기의 행렬(즉, 서브 행렬)로 구조화하여 표현하는 경우, '3'이라는 인덱스를 갖는 서브 행렬은 4×4 크기의 단위 행렬의 각 열을 오른쪽으로 세 개의 열만큼 쉬프트시킴으로써 생성된 퍼뮤테이션 행렬이 된다.
부호화된 구조화된 LDPC 기법에 따라 각 서브 행렬을 하나의 인덱스로 표현한 모델 행렬을 저장하고 부호화 또는 복호화 시에 저장된 모델 행렬을 원래의 패리티 검사 행렬로 확장하여 사용함으로써 패리티 검사 행렬을 저장하기 위한 메모리 용량을 절약할 수 있다.
이하에서는 기본 모델 행렬의 적어도 하나 이상의 행을 분할(split)하여 새로운 모델 행렬을 생성하는 방법에 대해 설명하도록 한다.
도 3은 기본 모델 행렬의 일 예를 도시한 것으로서, 각 서브 블록에 표시된 인덱스는 쉬프트 수를 나타낸다. 또한, 도 3에서 쉬프트 수가 표시되지 않은 서브 블록은 '-1'의 인덱스를 갖는 서브 블록이다. 즉, 쉬프트 수가 표시되지 않은 서브 블록은 영 행렬(zero matrix)을 나타낸다.
도 3에 도시된 바와 같이, 도 3의 모델 행렬은 4개의 행(row)과 24개의 열(columnm)로 구성된다. 도 3의 모델 행렬은 5/6의 부호율을 지원한다. 도 3의 모델 행렬은 정보 비트에 상응하는 정보어 부분과 패리티 비트에 상응하는 패리티 부분으로 구분된다. 즉, 도 3에서, 인덱스 0에 의해 표시되는 열(이하, '0번 열'이라 칭한다)부터 인덱스 19에 의해 표시된 열(이하, '19번 열'이라 칭한다)까지는 정보어 부분이다. 또한, 인덱스 20에 의해 표시되는 열(이하, '20번 열'이라 칭한다)부터 인덱스 23에 의해 표시된 열(이하, '23번 열'이라 칭한다)까지는 패리티 부분이 다.
도 4는 도 3의 기본 모델 행렬의 하나의 행을 2개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것이다. 즉, 도 3의 504 행은 도 4의 504A 및 504B의 행으로 분리된다. 이 경우, 0번 내지 23번 열의 무게를 갖는 성분은 배타적으로 분리된다. 여기서, 무게를 갖는 성분이 배타적으로 분리된다 함은 분리된 이후의 두 행들의 대응하는 열들은 동시에 무게를 갖지 않도록 분리되는 것을 의미한다. 또한, 24번 열에는 '127'의 쉬프트 수가 추가되는 것을 알 수 있다. 이 경우, 24번 열의 무게의 합은 짝수이므로, 모듈로 연산에 의해 그 영향이 무시된다. 따라서, 도 4의 모델 행렬은 도 3의 모델 행렬과 등가(equivalent)인 행렬인 것을 알 수 있다. 한편, 도 4의 행렬은 행과 열의 개수가 하나 증가했으므로 4/5의 부호율을 지원한다.
도 5는 도 4의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것다. 도 14의 503 행은 도 5의 503A 및 503B의 행으로 분리된다. 이 경우, 0번 내지 23번 열의 무게를 갖는 성분은 배타적으로 분리된다. 또한, 25번 열에는 '119'의 쉬프트 수가 추가되는 것을 알 수 있다. 이 경우, 25번 열의 무게의 합은 짝수이므로, 모듈로 연산에 의해 그 영향이 무시된다. 따라서, 도 5의 모델 행렬은 도 3 또는 도 4의 모델 행렬과 등가의 행렬이다. 한편, 도 5의 행렬은 행과 열의 개수가 하나 증가했으므로 20/26의 부호율을 지원한다.
도 6은 도 5의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭 게 생성된 모델 행렬을 도시한 것이다. 도 5의 501 행은 도 6의 501A 및 501B의 행으로 분리된다. 이 경우, 0번 내지 23번 열의 무게를 갖는 성분은 배타적으로 분리된다. 또한, 26번 열에는 '117'의 쉬프트 수가 추가되는 것을 알 수 있다. 이 경우, 26번 열의 무게의 합은 짝수이므로, 모듈로 연산에 의해 그 영향이 무시된다. 따라서, 도 6의 모델 행렬은 도 3 내지 도 5의 모델 행렬과 등가인 행렬이다. 한편, 도 6의 행렬은 행과 열의 개수가 하나 증가했으므로 3/4의 부호율을 지원한다.
도 7은 도 6의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것이다. 도 6의 502 행은 도 7의 502A 및 502B의 행으로 분리된다. 이 경우, 0번 내지 23번 열의 무게를 갖는 성분은 배타적으로 분리된다. 또한, 27번 열에는 '113'의 쉬프트 수가 추가되는 것을 알 수 있다. 이 경우, 27번 열의 무게의 합은 짝수이므로, 모듈로 연산에 의해 그 영향이 무시된다. 따라서, 도 7의 모델 행렬은 도 3 내지 도 6의 모델 행렬과 등가인 행렬이다. 도 7의 행렬은 행과 열의 개수가 하나 증가했으므로 20/28의 부호율을 지원한다.
도 4 내지 도 7의 모델 행렬에서 행이 분리되는 경우, 열의 합이 짝수가 되도록 영이 아닌 성분을 추가로 포함했다. 이 경우, 추가되는 영이 아닌 성분은 싸이클-4와 싸이클-6의 특성을 고려하는 것이 바람직하다. 즉, 추가되는 영이 아닌 성분은 싸이클-4와 싸이클-6의 개수가 최소화되도록 결정되는 것이 바람직하다.
도 4 내지 도 7의 모델 행렬이 패리티 검사 행렬로 확장되는 경우, 다음과 같은 싸이클 특성을 갖는다. 표 1 모델 행렬의 각 서브 행렬이 24×24 크기인 경우이다.
Cycle-4 Cycle-6 Average VAR degree
도 3 (r=5/6) 0 9672 3.08
도 4 (r=4/5) 0 5832 3.04
도 5 (r=10/13) 0 3384 3.00
도 6 (r=3/4) 0 1944 2.96
도 7 (r=5/7) 0 1056 2.93
위와 같이 추가되는 영이 아닌 성분을 통해 낮은 부호율의 패리티 검사 행렬보다 더 적은 개수의 싸이클과 더 적은 개수의 무게를 갖는다.
도 8의 본 발명의 일 실시예에 따른 패리티 검사 행렬 생성 방법의 절차 흐름도를 도시한 것이다. 도 8의 실시예는 모델 행렬의 형식으로 표현되는 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 적어도 하나 이상의 분할 패턴에 따라 분할함으로써 적어도 하나 이상의 패리티 검사 행렬을 생성하고, 생성된 적어도 하나 이상의 패리티 검사 행렬 중에서 최적의 싸이클 특성을 갖는 특정 패리티 검사 행렬을 최종 패리티 검사 행렬로 선택하는 예이다.
도 9는 본 발명의 일 실시예에 따른 패리티 검사 행렬 생성 방법을 설명하기 위해 모델 행렬 형식으로 표현된 기본 패리티 검사 행렬의 일 예를 도시한 것으로서, IEEE 802.16e 기술 표준(technical specification)에서 사용되는 코드 레이트 5/6의 패리티 검사 행렬이다. 도 9의 모델 행렬은 정보어 부분과 패리티 부분으로 구성된다.
도 8 및 도 9를 참조하면, 우수한 싸이클 특성을 갖는 패리티 검사 행렬을 생성하기 위해 도 9의 기본 패리티 검사 행렬의 적어도 하나 이상의 행(row)을 적어도 하나 이상의 분할 패턴에 따라 분할한다[S81].
상기 적어도 하나 이상의 분할 패턴은 상기 기본 패리티 검사 행렬의 특정 행을 분할하는 구체적인 방법을 설명하는 패턴을 의미하는 것으로서, 도 10은 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행으로 분할할 수 있는 다양한 패턴을 설명하기 위한 도면이다. 도 10에서 각 패턴의 차수는 분할되는 행, 즉 도 9의 기본 패리티 검사 행렬의 세 번째 행의 무게를 갖는 성분들 중에서 이웃하는 몇 개의 성분들이 분할에 의해 생성되는 첫 번째 행 또는 두 번째 행에 포함되는지를 의미한다. 예를 들어, 2차 패턴의 경우 도 9의 기본 패리티 검사 행렬의 세 번째 행의 무게를 갖는 성분들 중에서 이웃하는 두 개의 성분들이 순차적으로 분할에 의해 생성되는 첫 번째 행 또는 두 번째 행에 포함되도록 분할된다. 도 10의 각 패턴에 포함된 숫자는 해당 성분이 분할 후에 포함되는 행을 의미한다. 즉 각 패턴에서 '1'로 표시된 성분은 분할 후에 첫 번째 행의 대응하는 열에 포함되고, '2'로 표시된 성분은 분할 후에 두 번째 행의 대응하는 열에 포함된다.
도 11a는 도 10의 1차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법을 설명하기 위한 도면이다. 1차 패턴의 경우 열의 무게를 갖는 성분은 배타적으로 분리된다. 즉, 분리된 이후의 두 행들의 대응하는 열들은 동시에 무게를 갖지 않도록 분리된다. 보다 구체적으로 설명하면, 도 9의 기 본 패리티 검사 행렬의 세 번째 행에서 홀수 번째 무게를 갖는 성분들은 도 11a의 분리된 두 행들 중 첫 번째 행의 대응하는 열에 위치하고, 짝수 번째 무게를 갖는 성분들은 도 11a의 분리된 행들 중 두 번째 행의 대응하는 열에 위치하도록 분리된다. 도 9의 세 번째 행에서 무게를 갖지 않는 성분들(인덱스 '-1')의 경우, 도 11a의 분리된 두 행들의 대응하는 열들이 무게를 갖지 않도록 분리된다. 즉, 분리되기 전에 무게를 갖지 않는 성분에 대응하는 열은 분리된 후에도 무게를 갖지 않게 된다.
도 11b는 도 10의 1차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할함으로써 새롭게 생성된 패리티 검사 행렬을 도시한 것이다. 분리된 두 행들의 패리티 부분에는 새로운 패리티 부분이 추가된다. 이때, 하나 이상의 행을 분리하여 새로운 패리티 검사 행렬을 생성하는 경우 새로 생성된 패리티 검사 행렬의 패리티 부분의 행과 열의 개수가 동일하게 되도록 새로운 패리티 부분이 추가된다. 예를 들어, 행의 분리에 의해 새로운 패리티 검사 행렬에 두 개의 행들이 추가되는 경우 패리티 부분에는 두 개의 열들을 갖는 추가 패리티 부분을 추가한다. 도 11b에서는 도 9의 세 번째 행을 분리하여 새로운 패리티 검사 행렬에는 하나의 행이 추가되었으므로 쉬프트 수(인덱스)가 '0'인 성분을 포함하는 하나의 열이 추가 패리티 부분으로 추가된다.
도 12a 내지 도 12h는 각각 2차 패턴 내지 9차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법을 설명하기 위한 도면들이다. 예를 들어, 3차 패턴의 경우, 도 9의 세 번째 행에서 무게를 갖는 처음 세 개의 성분들은 분할 후 생성되는 첫 번째 행(제1행)의 대응하는 열에 위치하고, 무게를 갖는 그 다음 세 개의 성분들은 분할 후 생성되는 두 번째 행(제2행)의 대응하는 열에 위치한다. 그 이후의 성분들도 동일한 방식으로 분리된다. 상기한 바와 같이, 하나 이상의 행을 분리하여 새로운 패리티 검사 행렬을 생성하는 경우 새로 생성된 패리티 검사 행렬의 패리티 부분의 행과 열의 개수가 동일하게 되도록 새로운 패리티 부분이 추가된다. 다른 차수의 패턴의 경우에도 동일한 설명이 가능하다.
도 12a 내지 도 12h는 도 10에 도시된 하나의 분할 패턴을 사용하여 기본 패리티 검사 행렬의 특정 행을 분할하는 방법을 설명하기 위한 것들이다. 다른 실시예로, 둘 이상의 분할 패턴을 복합적으로 사용한 복합 분할 패턴을 이용하여 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 분할하여 새로운 패리티 검사 행렬을 생성하는 것도 가능하다. 도 13a 내지 도 13c는 본 발명의 일 실시예에 따라 복합 분할 패턴을 이용하여 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법들을 설명하기 위한 도면들로서, 각각 도 10의 1차 패턴 및 2차 패턴을 혼합하여 복합 분할 패턴을 사용하는 예들이다. 이때, 각 분할 패턴을 규칙적으로 또는 불규칙적으로 혼합하여 복합 분할 패턴을 형성하는 것이 가능하다. 1차 패턴과 2차 패턴을 번갈아 가며 혼합하는 경우가 규칙적으로 복합 분할 패턴을 형성하는 예(도 13b)이고, 복합 분할 패턴에 포함되는 1차 패턴 및 2차 패턴의 회수를 랜덤하게 하는 경우가 불규칙적으로 복합 분할 패턴을 형성하는 예(도 13a, 도 13c)이다. 도 13a 내지 도 13c는 예시적인 것들로서, 이 외에 도 10의 분할 패턴들 중에서 둘 이상의 분할 패턴들을 다양한 방법에 의해 혼합하여 복합 분할 패턴을 형성할 수 있다.
다시 도 8을 참조하면, 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 상기한 방법에 의해 적어도 하나 이상의 분할 패턴을 이용하여 분할함으로써 적어도 하나 이상의 패리티 검사 행렬이 생성되면, 생성된 패리티 검사 행렬의 각각에 대해 싸이클 특성을 체크한다[S82]. 패리티 검사 행렬의 싸이클 특성 중에서 주로 문제가 되는 것은 싸이클-4 및 싸이클 6로서, 전술한 바와 같이, 싸이클-4는 패리티 검사 행렬 Η의 두 행이 두 개의 지점에 동시에 1을 갖는 경우를 의미하고, 싸이클-6은 임의의 세 행 중에서 선택된 모든 조합 가능한 두 개의 행이 같은 지점에 1을 갖는 경우를 의미한다. 특정 패리티 검사 행렬이 어느 정도의 싸이클-4 및 싸이클-6을 포함하고 있는지는 종래의 다양한 기법들에 의해 파악될 수 있다.
상기 생성된 적어도 하나 이상의 패리티 검사 행렬의 각각에 대해 싸이클 특성을 체크한 후에는, 그 결과에 따라 최종적으로 하나의 패리티 검사 행렬을 선택한다[S83]. 이때, 상기 선택된 패리티 검사 행렬은 상기 생성된 적어도 하나 이상의 패리티 검사 행렬 중에서 가장 적은 수의 싸이클-4 및/또는 싸이클-6을 포함하는 것일 수 있다. 바람직하게는, 가장 적은 수의 싸이클-4 및 싸이클-6을 포함하는 패리티 검사 행렬을 최종 패리티 검사 행렬로 결정할 수 있다.
도 8에서, S81 단계 및 S82 단계는 반복적으로 수행될 수 있다. 즉, 특정 분할 패턴 또는 복합 분할 패턴에 의해 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 분할함으로써 패리티 검사 행렬을 생성하여 생성된 패리티 검사 행렬에 대해 싸이클 특성을 체크하고, 다른 분할 패턴을 이용하여 다른 패리티 검사 행렬을 생성한 다음 싸이클 특성을 체크하는 동작을 반복적으로 수행할 수 있다. 일정 회수만큼 반복 수행한 결과 생성된 패리티 검사 행렬들 중에서 가장 좋은 싸이클 특성을 갖는 최종 패리티 검사 행렬을 선택할 수 있다.
본 발명의 실시예들에 의해 생성된 패리티 검사 행렬을 이용하여 부호화를 수행하는 경우 생성 행렬(generator matrix)을 이용하여 입력 소스 데이터를 부호화할 수 있다. 즉, k 비트의 입력 소스 데이터 s1 ×k는 생성 행렬에 부호화되어 n 비트의 코드워드 x1×k이 된다. 코드워드 xx=[s p]=[s0, s1, ..., sk -1, p0, p1, ... , pm -1] 의 구성을 갖는다(여기서, (p0, p1, ... , pm -1)은 패리티 검사 비트(parity check bits)이고, (s0, s1, ... , sk -1)은 시스템 비트(systematic bits)이다.).
그러나, 상기 생성 행렬을 이용한 부호화 방법은 매우 복잡하다. 따라서, 이러한 복잡도를 줄이기 위해 상기 생성 행렬에 의하지 않고, 패리티 검사 행렬 H를 이용해 직접 입력 소스 데이터를 부호화하는 것이 바람직하다. 즉, x=[s p]이므로, H·x = 0인 특성을 이용하면 H·x = H·[s p] = 0이 되고, 이 식으로부터 패리티 검사 비트 p를 얻을 수 있어, 결과적으로 코드워드 x=[s p]를 구할 수 있다.
본 발명의 실시예들에 의해 생성된 패리티 검사 행렬을 이용하여 복호화(decoding)를 수행하는 방법에 대하여 설명하도록 한다. 디코더는 부호화 결과인 코드워드(c)에서 정보 비트(x)를 구해야 하는데, cHT=0인 성질을 이용하여 찾아낸다. 즉, 예를 들어, 수신측에서 수신된 코드워드를 c'이라 할 때, c'HT의 값을 계산하여 결과가 0 이면, c'의 앞의 k개의 비트들을 디코딩된 정보 비트로 결정한다. c'HT의 값이 0이 아닌 경우, 종래기술에 따른 그래프를 통한 합 곱(sum-product) 알고리즘, 신뢰도 전파(belief propagation) 알고리즘 등을 사용하여, c'HT의 값이 0을 만족하는 c'를 찾아 x를 복구한다.
본 문서에서 사용된 용어는 동일한 의미를 갖는 다른 용어들로 대체될 수 있다. 예를 들어, 모델 행렬은 '기본 행렬(base matrix)'이라는 용어에 의해 대체 가능하다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
도 1은 모델 행렬의 일 예를 도시한 것이다.
도 2는 쉬프트 수(shift number)에 따른 행렬의 표현 방법을 설명하기 위한 도면이다.
도 3은 기본 모델 행렬의 일 예를 도시한 것이다.
도 4는 도 3의 기본 모델 행렬의 하나의 행을 2개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것이다.
도 5는 도 4의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것다.
도 6은 도 5의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것이다.
도 7은 도 6의 모델 행렬의 하나의 행을 두 개의 행으로 분할함으로써 새롭게 생성된 모델 행렬을 도시한 것이다.
도 8의 본 발명의 일 실시예에 따른 패리티 검사 행렬 생성 방법의 절차 흐름도를 도시한 것이다.
도 9는 본 발명의 일 실시예에 따른 패리티 검사 행렬 생성 방법을 설명하기 위해 모델 행렬 형식으로 표현된 기본 패리티 검사 행렬의 일 예를 도시한 것이다.
도 10은 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행으로 분할할 수 있는 다양한 패턴을 설명하기 위한 도면이다.
도 11a는 도 10의 1차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법을 설명하기 위한 도면이다.
도 11b는 도 10의 1차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할함으로써 새롭게 생성된 패리티 검사 행렬을 도시한 것이다.
도 12a 내지 도 12h는 각각 2차 패턴 내지 9차 패턴에 따라 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법을 설명하기 위한 도면들이다.
도 13a 내지 도 13c는 본 발명의 일 실시예에 따라 복합 분할 패턴을 이용하여 도 9의 기본 패리티 검사 행렬의 세 번째 행을 두 개의 행들로 분할하는 방법들을 설명하기 위한 도면들이다.

Claims (4)

  1. 입력 데이터열을 LDPC(Low Density Parity Check) 코딩 기법에 의해 부호화거나 부호화된 코드워드를 복호화하는 경우 사용되는 패리티 검사 행렬을 생성하는 방법에 있어서,
    모델 행렬의 형식으로 표현되는 기본 패리티 검사 행렬의 적어도 하나 이상의 행을 적어도 하나 이상의 분할 패턴에 따라 분할함으로써 적어도 하나 이상의 패리티 검사 행렬을 생성하는 단계;
    상기 적어도 하나 이상의 행을 각 분할 패턴에 따라 분할함으로써 생성된 상기 적어도 하나 이상의 패리티 검사 행렬의 각각에 대해 싸이클(cycle) 특성을 체크하는 단계; 및
    상기 싸이클 특성 체크 결과에 따라 상기 적어도 하나 이상의 패리티 검사 행렬 중에서 특정 패리티 검사 행렬을 최종 패리티 검사 행렬로 결정하는 단계를 포함하는, 패리티 검사 행렬 생성 방법.
  2. 제1항에 있어서,
    상기 특정 패리티 검사 행렬은 상기 적어도 하나 이상의 패리터 검사 행렬 중에서 가장 적은 수의 싸이클-4를 갖는 것임을 특징으로 하는, 패리티 검사 행렬 생성 방법.
  3. 제1항에 있어서,
    상기 특정 패리티 검사 행렬은 상기 적어도 하나 이상의 패리터 검사 행렬 중에서 가장 적은 수의 싸이클-6을 갖는 것임을 특징으로 하는, 패리티 검사 행렬 생성 방법.
  4. 제1항에 있어서,
    상기 특정 패리티 검사 행렬은 상기 적어도 하나 이상의 패리터 검사 행렬 중에서 가장 적은 수의 싸이클-4 및 싸이클-6을 갖는 것임을 특징으로 하는, 패리티 검사 행렬 생성 방법.
KR1020080020549A 2008-03-05 2008-03-05 패리티 검사 행렬 생성 방법 KR101435831B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080020549A KR101435831B1 (ko) 2008-03-05 2008-03-05 패리티 검사 행렬 생성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080020549A KR101435831B1 (ko) 2008-03-05 2008-03-05 패리티 검사 행렬 생성 방법

Publications (2)

Publication Number Publication Date
KR20090095288A true KR20090095288A (ko) 2009-09-09
KR101435831B1 KR101435831B1 (ko) 2014-08-29

Family

ID=41295609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080020549A KR101435831B1 (ko) 2008-03-05 2008-03-05 패리티 검사 행렬 생성 방법

Country Status (1)

Country Link
KR (1) KR101435831B1 (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101187072B1 (ko) * 2006-05-04 2012-09-27 엘지전자 주식회사 패리티 검사 행렬을 이용한 부호화 방법

Also Published As

Publication number Publication date
KR101435831B1 (ko) 2014-08-29

Similar Documents

Publication Publication Date Title
KR101208546B1 (ko) 저밀도 패리티 체크 행렬을 이용한 부호화 및 복호화 방법
JP4168055B2 (ja) 低密度パリティ検査符号の生成方法及び装置
KR102347823B1 (ko) 구조화된 ldpc의 부호화 및 복호화 방법 및 장치
KR100641052B1 (ko) Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법
CN101395804B (zh) 使用ldpc码编码和解码的方法
US8347170B2 (en) Method and apparatus for performing decoding using LDPC code
US8438459B2 (en) Apparatus and method for decoding using channel code
KR20080102902A (ko) 가변 부호화율을 가지는 ldpc 부호 설계 방법, 장치 및그 정보 저장 매체
KR20060135451A (ko) 저밀도 패리티 검사 행렬 부호화 방법 및 장치
US20080270877A1 (en) Method of Encoding and Decoding Using Low Density Parity Check Code
KR101147768B1 (ko) 채널 코드를 이용한 복호화 방법 및 장치
CN101764620B (zh) 用于使用信道代码解码的装置和方法
KR101065693B1 (ko) Ldpc 코드를 이용한 부호화, 복호화 방법 및 부호화또는 복호화를 위한 ldpc 코드 생성 방법
KR101370903B1 (ko) Ldpc 코드를 이용한 부호화 및 복호화 방법
KR20080030329A (ko) 사전에 지정한 패리티를 검사한 결과를 이용해 ldpc코드를 부호화하는 방법
CN112367088B (zh) 一种基于索引矩阵的编码方法及装置
KR101073907B1 (ko) Ldpc 코드를 이용한 부호화 방법 및 부호화를 위한컴퓨터로 읽을 수 있는 기록 매체
KR101405961B1 (ko) Ldpc 코드를 이용한 부호화/복호화 방법
KR20090095288A (ko) 패리터 검사 행렬 생성 방법
KR20070025522A (ko) Ldpc 부호의 복호 방법
Xunhuan et al. An improved forming algorithm of error-patterns for two-dimensional codes
KR20060013197A (ko) Ldpc 코드를 이용한 부호화 방법 및 부호화를 위한컴퓨터로 읽을 수 있는 기록 매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
LAPS Lapse due to unpaid annual fee