KR100874484B1 - 준순환 저밀도 패리티 검사 부호화 방법 및 장치 - Google Patents

준순환 저밀도 패리티 검사 부호화 방법 및 장치 Download PDF

Info

Publication number
KR100874484B1
KR100874484B1 KR1020060124509A KR20060124509A KR100874484B1 KR 100874484 B1 KR100874484 B1 KR 100874484B1 KR 1020060124509 A KR1020060124509 A KR 1020060124509A KR 20060124509 A KR20060124509 A KR 20060124509A KR 100874484 B1 KR100874484 B1 KR 100874484B1
Authority
KR
South Korea
Prior art keywords
module
shift
value
input bit
input
Prior art date
Application number
KR1020060124509A
Other languages
English (en)
Other versions
KR20080052832A (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 KR1020060124509A priority Critical patent/KR100874484B1/ko
Publication of KR20080052832A publication Critical patent/KR20080052832A/ko
Application granted granted Critical
Publication of KR100874484B1 publication Critical patent/KR100874484B1/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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Abstract

본 발명은 준순환 저밀도 패리티 검사(QC-LDPC) 부호화 방법 및 장치에 관한 것이다.
이를 위하여 본 발명은 시프트 인덱스 값과 입력 비트의 길이의 절반값을 비교하는 인덱스 확인 모듈; 시프트 인덱스 값에 따라 입력 비트를 왼쪽으로 이동시키는 왼쪽 시프트 연산 모듈; 시프트 인덱스 값에서 입력 비트의 길이의 절반값을 차감하여 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 방향 변환 모듈; 방향 모듈로부터 전달되는 시프트 값에 따라, 입력 비트를 오른쪽으로 이동시키는 오른쪽 시프트 연산 모듈; 오른쪽 시프트 연산 모듈의 출력값 또는 왼쪽 시프트 연산 모듈의 출력값을 선택하여 출력하는 다중화 모듈; 및 다중화 모듈의 출력 값을 XOR 연산하여 제1 패리티 파트 값을 산출하는 XOR 연산 모듈을 포함하는 QC-LDPC 부호화 장치를 제공한다.
본 발명에 의하면, QC-LDPC 부호화를 위한 패리티 검사 행렬의 시프트에 있어서 양방향 시프트가 가능해짐에 따라, 하드웨어 면적의 최소화 및 데이터 처리 속도를 향상시키는 효과를 기대할 수 있다.
QC-LDPC, LDPC, 부호화, 채널 코딩, 와이브로, 준순환 저밀도 패리티 검사

Description

준순환 저밀도 패리티 검사 부호화 방법 및 장치{Method and Apparatus for Quasi-Cyclic LDPC Coding}
도 1은 일반적인 QC-LDPC에서 사용되는 패리티 검사 행렬의 실시예,
도 2는 본 발명의 실시예에 따른 QC-LDPC 부호기의 내부 구조를 간략하게 나타낸 블록 구성도,
도 3은 본 발명의 실시예에 따른 QC-LDPC 부호기의 행곱 연산 모듈의 내부 구조를 나타낸 블록 구성도,
도 4는 본 발명의 실시예에 따른 행곱 연산 모듈 및 A*s 연산 모듈의 연산 동작을 설명하기 위한 예시도,
도 5는 본 발명의 실시예에 따른 QC-LDPC 부호화 방법을 설명하기 위한 순서도이다.
본 발명은 준순환 저밀도 패리티 검사(QC-LDPC: Quasi-Cyclic Low Density Parity Check, 이하 'QC-LDPC'라 칭함) 부호화 방법 및 장치에 관한 것이다. 더욱 상세하게는, 고속의 데이터 처리 속도를 향상시키고, 면적 소모를 최소화하는 QC-LDPC 부호화 방법 및 장치에 관한 것이다.
이동통신 시스템의 발전에 따라 유무선 네트워크에서 전송 상의 오류를 보정하기 위해 송신단에서 송출되는 정보 비트에 부가 비트를 첨부하고, 수신단에서는 오류 정정 알고리즘을 이용하여 오류를 보정하는 방법이 사용되고 있다. 특히, 셀룰러 이동통신 시스템에서는 셀 경계에서의 채널 환경의 급격한 열화 및 고속 이동 간의 채널 환경의 급격한 열화를 극복하기 위하여, 오류 정정 능력이 우수한 채널 부호기가 요구되며, 이와 같은 요구에 부응하기 위한 시스템 성능 향상 방법으로써 오류 정정 부호(Error Control Code)가 사용된다.
대표적인 오류 정정 부호로는 터보 부호(Turbo Code)와 LDPC(Low Density Parity Check) 부호가 있다.
터보 부호는 우수한 오류 정정 능력으로 인해 4세대 이전의 이동통신 시스템에 적용되어 왔으나, 고속의 데이터 처리에 대한 한계와 오류 마루 현상에 대한 문제점이 발생하고 있다.
이에 따라, 성능면에서는 터보 부호와 유사한 성능을 내면서도, 터보 부호 방식에 비해 더 낮은 복잡도의 복호 방법을 제공하며 병렬화가 쉬워, 고속 처리가 요구되는 4세대 이후의 이동통신 시스템으로의 적용이 적합한 LDPC 부호화 방식이 많은 관심을 받고 있다.
LDPC 부호의 기본 구조는 패리티 검사 행렬(Parity Check Matrix)에 의해 정의된다. 이 행렬은 대부분의 요소(Element)가 0의 값(zero value)을 가지고, 0의 값을 가지는 요소들 이외에 극히 소수의 요소들이 0이 아닌 값(non-zero value)을 가지는 성긴(sparse) 구조로 정의된다.
LDPC 부호는 (N,J,K)로 표시되며, 여기서, N은 부호화 블록의 길이, J는 패리티 검사 행렬 상에서 각 열에 존재하는 1의 개수, K는 패리티 검사 행렬 상에서 각 행에 있는 1의 개수를 의미한다. 즉 LDPC 코드에서 패리티 검사 행렬의 각 행의 1의 개수가 모두 같고, 각 열에 있는 1의 개수가 모두 동일하다는 특징을 가지므로, (N,J,K)로써 특정 LDPC 부호를 정의할 수 있다.
이와 같이 각 행 및 열에 포함되어 있는 1의 개수가 동일한 LDPC 부호를 균일 LDPC 부호라 칭하고, 이와 반대로 1의 개수가 일정하지 않은 부호를 비균일 LDPC 부호라고 칭한다.
일반적으로 비균일 LDPC 부호가 균일 LDPC 부호보다 패리티 검사 행렬 생성 방법이 복잡하나, 오류 정정 능력이 훨씬 뛰어나므로, 실제 응용에서는 비균일 LDPC의 단점인 구현 복잡도를 줄이면서, 우수한 오류 정정 능력을 유지하기 위한 방법이 요구되고 있다.
이와 같은 요구에 따른 QC-LDPC는 패리티 검사 행렬이 0 행렬 또는 단위 행렬의 시프트(Shift)된 형태인 순환 순연(Circulant Permutation) 행렬의 집합으로 이루어진다는 특징을 포함하고 있다. QC-LDPC는 이와 같은 특징으로 인하여 부호화 과정에서 전체 패리티 검사 행렬에 정보를 알아야 할 필요가 없이, 순환 순연 행렬에 대한 정보만으로 비교적 간단히 부호화 과정을 수행할 수 있다.
도 1은 일반적인 QC-LDPC에서 사용되는 패리티 검사 행렬의 실시예이다.
일반적인 QC-LDPC에서 사용되는 패리티 검사 행렬을 정보 파트와 패리티 파트로 분할하고, 패리티 파트는 제1 패리티 파트와 제2 패리티 파트로 분할한다. 이 때, 정보 파트는 부분 블록 A와 부분 블록 C를 포함하며, 제1 패리티 파트는 부분 블록 B와 부분 블록 D를 포함하고, 제2 패리티 파트는 부분 블록 T와 부분 블록 E를 포함한다.
여기서, 정보 파트는 QC-LDPC 부호를 부호화하는 과정에서 실제 정보 블록에 매핑되는 패리티 검사 행렬의 파트를 의미하고, 제2 패리티 파트 및 제2 패리티 파트는 QC-LDPC 부호를 부호화하는 과정에서 실제 패리티에 매핑되는 패리티 검사 행렬의 파트를 나타내며, 패리티 파트를 2개로 분할한 부분이다.
이에 따라, QC-LDPC에서 사용되는 패리티 검사 행렬(H)은 수학식 1과 같은 형태로 분할될 수 있다.
Figure 112006091065157-pat00001
여기서, A는 (m-1)×kL, B는 (m-1)L×L, C는 L×kL, D는 L×L, E는 L×(m-1)L 및 n=m+k이다. 여기서, k는 입력되는 인덱스의 길이이며, L은 입력 비트의 길이이다. 이 때, C의 각각의 구성 요소는 L×L 행렬을 오른쪽으로 몇 번 시프트 시키는지에 관한 정보를 포함하고 있다.
이 때, 입력 비트를 s, 제1 패리티 파트를 p1, 제2 패리티 파트를 p2라고 하 면, 수학식 2와 같은 관계가 성립된다.
Figure 112006091065157-pat00002
이와 같은 패리티 검사 행렬을 이용한 QC-LDPC의 부호화 과정은 수학식 3과 같은 4 단계를 수행한다.
Figure 112006091065157-pat00003
여기서, 제2 단계에 기재되어 있는 P는, 행렬의 대각 요소를 0으로 가지는 T 행렬을 이루는 각각의 구성 요소를 의미한다. 그러나, 수학식 3과 같은 QC-LDPC 부호화 과정은 많은 행렬 연산을 요구하며, 계산 결과에 따른 패리티 검사 행렬(H)을 시프트함에 있어서, 단일 방향(통상적으로, 오른쪽 방향)으로만 시프트하도록 설정되어 있다. 이에 따라 많은 하드웨어 면적과 처리 속도 지연을 발생시키는 문제점이 발생한다.
이와 같은 문제점을 해결하기 위하여, 본 발명은 패리티 검사 행렬(H)을 양 방향으로 시프트할 수 있도록 설계하여, 하드웨어 면적의 최소화와 더불어 고속의 데이터 처리 속도를 향상시키는 QC-LDPC 부호화 방법 및 장치를 제공한다.
이러한 기술적 과제를 달성하기 위하여 본 발명의 제1 실시예에 따른 QC-LDPC 부호화 장치는 패리티 검사 행렬을 양방향으로 시프트하는 QC-LDPC 부호화 장치로서, 부호화를 위한 입력 비트를 수신하여 정렬하는 입력 정렬 모듈; 정렬된 입력 비트를 시프트하기 위한 시프트 인덱스를 생성하는 패리티 검사 행렬 입력 모듈; 시프트 인덱스에 따라, 입력 비트를 왼쪽 또는 오른쪽으로 시프트하여 제1 패리티 파트를 산출하는 행곱 연산 모듈; 제1 패리티 파트를 이용하여, 입력 비트를 구성하는 각각의 구성 요소에 대한 부호화 결과 값을 산출하는 제1 연산 모듈; 부호화 결과 값으로부터 제2 패리티 파트를 산출하는 제2 연산 모듈; 및 입력 비트, 제1 패리티 파트 및 제2 패리티 파트를 이용하여, QC-LDPC 부호화 값을 산출하여 출력하는 출력 정렬 모듈을 포함한다.
또한, 본 발명의 제2 실시예에 따른 QC-LDPC 부호화 장치는 패리티 검사 행렬을 양방향으로 시프트하기 위한 패리티 파트를 산출하는 QC-LDPC 부호화 장치에 있어서, 시프트 인덱스 값과 입력 비트의 길이를 비교하여, 시프트 연산 결과의 선택을 위한 신호를 생성하는 인덱스 확인 모듈; 시프트 인덱스 값에 따라 입력 비트를 왼쪽으로 이동시키는 왼쪽 시프트 연산 모듈; 시프트 인덱스 값과 입력 비트의 길이를 이용하여, 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 방향 변환 모듈; 방향 변환 모듈에서 산출된 시프트 값에 따라, 입력 비트를 오른쪽으로 이동시키는 오른쪽 시프트 연산 모듈; 인덱스 확인 모듈에서 생성된 신호에 따라, 오른쪽 시프트 연산 모듈 또는 왼쪽 시프트 연산 모듈의 출력 값을 선택하는 다중화 모듈; 및 다중화 모듈의 출력 값을 XOR 연산하여 패리티 파트를 산출하는 XOR 연산 모듈을 포함한다.
또한, 본 발명의 실시예에 따른 QC-LDPC 부호화 방법은 패리티 검사 행렬을 양방향으로 시프트하는 QC-LDPC 부호화 방법에 있어서, (a) 부호화를 위한 입력 비트를 수신하여 정렬하는 입력 정보 비트 정렬 단계; (b) 정렬된 입력 비트를 시프트하고, 시프트된 연산 결과를 합산하는 연산 단계; (c) 입력 비트의 행의 수만큼 연산 단계를 반복하고, 연산 단계의 반복이 종료되면, 시프트된 연산 결과의 합산 값을 이용하여 제1 패리티 파트 및 제2 패리티 파트를 산출하는 패리티 파트 산출 단계; 및 (d) 입력 비트, 제1 패리티 파트 및 제2 패리티 파트를 이용하여 QC-LDPC 부호화 값을 산출하여 출력하는 QC-LDPC 부호 정렬 단계를 포함한다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.
도 2는 본 발명의 실시예에 따른 QC-LDPC 부호기의 내부 구조를 간략하게 나타낸 블록 구성도이다.
본 발명의 실시예에 따른 QC-LDPC 부호기는 입력 정렬 모듈(210), 패리티 검사 행렬 입력 모듈(220), 행곱 연산 모듈(230), A*s 연산 모듈(240), p2 연산 모듈(250), 출력 정렬 모듈(260)을 포함한다.
입력 정렬 모듈(210)은 송출을 위하여 입력되는 입력 비트(s)를 수신하여, L개의 비트 그룹으로 정렬하는 부분이다. 통상적으로 패리티 검사 행렬의 정보 파트 블록(A)은 최소 24×24, 최대 96×96의 크기를 가지도록 설정되어 있다. 이에 따라서, 입력 정렬 모듈(210)은 입력되는 입력 비트(s)를 24 비트 내지 96 비트의 크기를 가지는 행렬에 정렬시키는 기능을 수행한다. 이와 같은 입력 정렬 모듈(210)에서 다수의 입력 비트(s)를 정렬에 따라 생성되는 정보 파트 블록(A)은 행곱 연산 모듈(230)로 전달된다.
패리티 검사 행렬 입력 모듈(220)은 패리티 검사 행렬(H)의 시프트 인덱스를 제공하는 부분이다. 패리티 검사 행렬의 시프트 인덱스 제공을 위하여, 패리티 검사 행렬 입력 모듈(220)은 정보 파트 블록(A)의 크기 및 부호화율에 대응되는 패리티 검사 행렬을 생성하고, 생성된 패리티 검사 행렬을 각 정보 단위 블록 별 시프트 인덱스로 구성된 행렬로 표현한다. 이에 따라, 패리티 검사 행렬 입력 모듈(220)을 통해 제공되는 행렬은 입력 정렬 모듈(210)을 통해 입력되는 입력 비트를 시프트 시키기 위한 행렬이다.
행곱 연산 모듈(230)은 패리티 검사 행렬 입력 모듈(220)로부터 전달되는 시프트 인덱스의 크기에 따라, 입력 비트를 왼쪽이나 오른쪽으로 이동시키고, 왼쪽 또는 오른쪽으로 이동된 입력 비트를 이용하여 수학식 3에 따른 부호화 과정의 제1 단계 내지 제3단계의 과정을 수행하여 L 비트의 p1 값을 산출하는 부분이다. 여기서, 행곱 연산 모듈(230)의 내부 구조 및 기능에 대해서는 도 3을 통하여 상세하게 설명하기로 한다.
A*s 연산 모듈(240)은 행곱 연산 모듈(230)을 통하여 산출된 L 비트의 p1 값을 입력 비트로 이용하여, 수학식 3의 제1 단계를 반복하여 수행하는 부분이다. 이를 통해, 입력 비트 행렬의 각각의 행에 대한 부호화 단계가 수행되며, 결과치는 행곱 연산 모듈(230)로 피드백된다. 이와 같이, A*s 연산 모듈(240)이 행곱 연산 모듈(230)과 동일한 기능을 수행함에 따라, A*s 연산 모듈(240)과 행곱 연산 모듈(230)은 동일한 내부 구성을 포함할 수 있다.
P2 연산 모듈(250)은 행곱 연산 모듈(230)로부터 산출되는 L 비트의 p1 값과, A*s 연산 모듈(240)로부터 산출되는 A*s 값을 이용하여, p2 값을 산출하는 부분이다. P2 연산 모듈(250)에서는 수학식 3의 제4 단계를 통하여 p2 값을 산출할 수 있다. 이 때, T는 1과 0의 값으로만 이루어지는 행렬이므로, A*s 값과 Bp1 값을 각각의 비트 단위로 AND 연산함으로써, p2 값을 산출할 수 있다. 이 때, P2 연산 모듈(250)은 다수의 XOR 게이트를 이용하여 구성될 수 있다.
출력 정렬 모듈(260)은 입력 정렬 모듈(210)로부터 전달되는 입력 비트(s), 행곱 연산 모듈(230)을 통하여 산출된 p1 값 및 P2 연산 모듈(250)을 통하여 산출된 p2 값을 이용하여 산출된 QC-LDPC 부호를 정렬하여 출력하는 부분이다.
도 3은 본 발명의 실시예에 따른 QC-LDPC 부호기의 행곱 연산 모듈의 내부 구조를 나타낸 블록 구성도이다.
앞서 도 2를 통하여 설명한 것과 같이, A*s 연산 모듈(240)도 행곱 연산 모듈(230)과 동일한 내부 구성을 포함할 수 있다. 그러나, 도 3에서는 행곱 연산 모듈(230)의 내부 구조에 한하여 설명하기로 한다.
본 발명의 실시예에 따른 행곱 연산 모듈(230)은 모듈로 연산 모듈(310), 인덱스 확인 모듈(320), 왼쪽 시프트 연산 모듈(330), 방향 변환 모듈(340), 오른쪽 시프트 연산 모듈(350), 다중화 모듈(360), 메모리(370), XOR 연산 모듈(380) 및 플립플롭(390)을 포함한다.
모듈로 연산 모듈(310)은 패리티 검사 행렬 입력 모듈(220)로부터 입력되는 시프트 인덱스 값을, 입력 정렬 모듈(210)로부터 입력되는 입력 비트의 길이(L)보다 작도록 변환하는 부분이다. 이와 같은 변환은 입력 비트의 길이(L)보다 큰 시프트 인덱스 값에 대한 불필요한 시프트 연산을 수행하지 않도록 하기 위하여 수행된다. 이와 같은 모듈로 연산 모듈(310)의 동작에 따라, 인덱스 확인 모듈(320), 왼쪽 시프트 연산 모듈(330) 및 방향 변환 모듈(340)로 입력 비트의 길이(L)보다 작은 값을 갖는 시프트 인덱스 값(k)이 전달된다.
인덱스 확인 모듈(320)은 모듈로 연산 모듈(310)로부터 전달되는 시프트 인덱스 값(k)과, 입력 비트의 길이(L)의 절반값(L/2)을 비교하고, 비교 결과에 따라, 시프트 연산 결과의 선택을 위한 신호를 다중화 모듈(360)로 전달하는 기능을 수행하다.
왼쪽 시프트 연산 모듈(330)은 모듈로 연산 모듈(310)로부터 전달되는 시프트 인덱스 값(k)에 따라, 입력 정렬 모듈(210)로부터 입력되는 입력 비트(s)를 왼쪽으로 이동시키는 기능을 수행한다.
방향 변환 모듈(340)은 왼쪽으로의 이동 값이 설정되어 있는 시프트 인덱스 값(k)에서 입력 비트의 길이의 절반값(L/2)을 차감하여, 입력 정렬 모듈(210)로부터 입력되는 입력 비트(s)를 오른쪽으로 이동시키기 한 오른쪽 이동 값을 산출하는 부분이다.
오른쪽 시프트 연산 모듈(350)은 방향 변환 모듈(340)로부터 전달되는 오른 쪽 이동 값에 따라, 입력 정렬 모듈(210)로부터 입력되는 입력 비트(s)를 오른쪽으로 이동시키는 기능을 수행한다.
다중화 모듈(MUX: Multiplexer)(360)은 인덱스 확인 모듈(320)로부터 전달되는 시프트 연산 결과 선택 신호에 따라, 왼쪽 시프트 연산 모듈(330)로부터 입력되는 시프트 연산 결과 또는 오른쪽 시프트 연산 모듈(350)로부터 입력되는 시프트 연산 결과를 선택하는 부분이다.
도 3에서 예시된 바에 따라, 인덱스 확인 모듈(320)은 시프트 인덱스 값(k)이 입력 비트의 길이의 절반값(L/2)보다 크면, 다중화 모듈(360)로 '1'을 전달한다. '1'을 입력받은 다중화 모듈(360)은 왼쪽 시프트 연산 모듈(330)로부터 전달되는 입력되는 시프트 연산 결과를 선택하여 메모리(370)로 전달한다.
한편, 인덱스 확인 모듈(320)은 시프트 인덱스 값(k)이 입력 비트의 길이의 절반값(L/2)보다 작으면, 다중화 모듈(360)로 '0'을 전달한다. '0'을 입력받은 다중화 모듈(360)은 오른쪽 시프트 연산 모듈(350)로부터 전달되는 입력되는 시프트 연산 결과를 선택하여 메모리(370)로 전달한다.
이 때, 인덱스 확인 모듈(320)에서 시프트 인덱스 값(k)을 확인한 결과, 시프트 인덱스 값(k)이 '-1'이면, 인덱스 확인 모듈(320)은 다중화 모듈(360)로 '2'을 전달한다. '2'을 입력받은 다중화 모듈(360)은 시프트 연산 결과를 모두 0으로 만들어 메모리(370)로 전달한다.
메모리(370)는 인덱스 확인 모듈(320)로부터 전달되는 시프트 연산 결과를 순차적으로 저장하는 부분이다.
XOR 연산 모듈(380)은 메모리(370)에 저장되어 있는 모든 다수의 시프트 연산 결과에 대하여 비트 별로 XOR 연산을 수행하여, L 비트의 p1 값을 산출하는 부분이다.
플립플롭(F/F: Flip-Flop)(390)은 XOR 연산 모듈(380)에서 산출된 p1 값을 다시 XOR 연산 모듈(380)로 피드백시키는 부분이다.
도 4는 본 발명의 실시예에 따른 행곱 연산 모듈 및 A*s 연산 모듈의 연산 동작을 설명하기 위한 예시도이다.
행곱 연산 모듈(230)을 통하여, 정보 파트 블록(A)(410)을 이루는 각각의 구성 요소에 대한 입력 비트(s)(420)와의 부호화 단계 수행을 통해 시프트 연산 결과(430)가 산출된다.
예로써, 정보 파트 블록(A)(410)의 제1열 제1행에 기재된 '2'(412)에 대한 시프트 연산 결과(432) 산출을 살펴보면, 정보 파트(A)(410)의 제1열 제1행에 기재된 '2'(412)는 입력 비트(s)(420)의 첫 번째 구성 요소인 '1101'(422)과 곱셈 연산이 수행된다. 이와 같은 곱셈 연산을 위하여 '2'(412)는 4×4의 행렬(412')로 변환된다. 정보 파트(A)(410)의 '2'(412)와 입력 비트(s)(420)의 '1101'(422)과의 곱셈 결과는 '0111'(430)로 산출된다. 이 때, 곱셈 결과 값 '0111'(430)은 입력 비트(s)의 '1101'(422)이 2만큼 왼쪽으로 이동한 값과 동일해진다. 이에 따라, 시프트 인덱스 값(k)은 '2'임을 확인할 수 있다.
이와 같은 방법을 통하여, 정보 파트 블록(A)(410)에 포함된 각각의 구성 요 소에 대한 시프트 연산 결과(430)를 산출한다. 이에 따라, 시프트 연산 결과(430)는 정보 파트 블록(A)(410)과 동일한 길이의 행렬로 구성된다.
이와 같은 행곱 연산 모듈(230)의 결과 값이 산출되면, A*s 연산 모듈(240)에서는 시프트 연산 결과(430)의 각각의 행에 대한 A*s 값(440)을 산출한다.
도 5는 본 발명의 실시예에 따른 QC-LDPC 부호화 방법을 설명하기 위한 순서도이다.
여기서, 도 5의 실시예에 따른 QC-LDPC 부호화 방법을 설명함에 있어서, 도 4를 이용하여 각각의 단계를 설명하기로 한다.
본 발명에 따른 QC-LDPC 부호화 장치에 따른 부호화를 위하여, 입력되는 다수의 정보 비트를 24 비트 내지 96 비트의 크기를 가지는 비트 그룹으로 정렬한다. 도 4에서는 입력 비트(s)를 7개의 비트 그룹으로 정렬할 수 있다(S510).
그리고, 입력 비트(s)가 정렬된 각각 비트 그룹에 시프트 인덱스를 이용하여 시프트하고, 시프트된 연산 결과를 모두 합하여 C*s 연산 단계를 수행한다. 이에 따라, 입력 비트(s)의 각각의 행에 대한 결과 값이 산출된다(S520).
그리고, 이와 같은 과정을 비트 그룹의 행의 수만큼 수행하여, A*s를 계산한다. 도 4에서는 비트 그룹이 4개의 행을 가지므로, A*s의 계산 단계는 C*s 연산 단계를 4번 수행하는 것과 동일해진다(S530).
이와 같은 S520 단계 및 S530 단계를 통하여, 수학식 3의 제1 단계가 수행된 다.
S530 단계를 통하여 A*s가 산출되면, ET*A*s를 산출하는 수학식 3의 제2 단계를 수행한다. 여기서, ET*는 보통 단위 행렬인 I로 계산되어, ET*A*s와 A*s가 동일한 값을 갖는 경우가 많다(S540).
S540 단계에서 산출된 ET*A*s와 S520 단계에서 산출된 C*s를 이용하여, p1 값을 산출한다. 이 때, p1 값을 산출함에 있어서, 수학식 3의 제3 단계에 기재된 수학식을 이용한다. 그리고, p1 값이 산출되면, (M-L)×1 크기의 B 행렬을 곱하여 B*p1을 계산한다(S550).
P2 연산 모듈(250)에서는 S550 단계를 통하여 산출된 B*p1 값과, 530 단계를 통하여 산출된 A*s를 합하여, 수학식 3의 제4 단계에 기재된 수학식에 따라 p2 값을 산출한다(S560).
그리고, 출력 정렬 모듈(260)을 이용하여, S550 단계 및 S560 단계를 통하여 산출된 p1 값 및 p2 값과, S510 단계에서 입력된 입력 비트(s)를 이용하여 QC-LDPC 부호를 정렬하여 출력함으로써, 본 발명에 따른 QC-LDPC 부호화를 수행할 수 있다(S570).
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
이상에서 설명한 바와 같이 본 발명에 의하면, QC-LDPC 부호화를 수행하기 위한 패리티 검사 행렬(H)의 시프트에 있어서, 기존의 단일 방향 시프트가 아닌 양방향 시프트가 가능해짐에 따라, 하드웨어 면적의 최소화와 더불어 고속의 데이터 처리 속도를 향상시키는 효과를 기대할 수 있다.

Claims (19)

  1. 삭제
  2. 패리티 검사 행렬을 양방향으로 시프트(Shift)하는 QC-LDPC(Quasi-Cyclic Low Density Parity Check) 부호화 장치에 있어서,
    부호화를 위한 입력 비트를 수신하여 정렬하는 입력 정렬 모듈;
    상기 정렬된 입력 비트를 시프트하기 위한 시프트 인덱스를 생성하는 패리티 검사 행렬 입력 모듈;
    상기 시프트 인덱스에 따라, 상기 입력 비트를 왼쪽 또는 오른쪽으로 시프트하여 제1 패리티 파트를 산출하는 행곱 연산 모듈;
    상기 제1 패리티 파트를 이용하여, 상기 입력 비트를 구성하는 각각의 구성 요소에 대한 부호화 결과 값을 산출하는 제1 연산 모듈;
    상기 부호화 결과 값으로부터 제2 패리티 파트를 산출하는 제2 연산 모듈; 및
    상기 입력 비트, 상기 제1 패리티 파트 및 상기 제2 패리티 파트를 이용하여, 상기 QC-LDPC 부호화 값을 산출하여 출력하는 출력 정렬 모듈
    을 포함하는 QC-LDPC 부호화 장치.
  3. 제2항에 있어서,
    상기 입력 정렬 모듈은,
    상기 QC-LDPC 부호화 장치로 입력되는 하나 이상의 입력 비트를 열 단위로 정렬시켜 정보 파트 블록을 생성하고, 상기 정보 파트 블록을 상기 패리티 검사 행렬 입력 모듈로 전달하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  4. 제2항에 있어서,
    상기 행곱 연산 모듈은,
    상기 시프트 인덱스 값과 상기 입력 비트의 길이의 절반값을 비교하여 시프트 연산 결과 선택을 위한 신호를 생성하는 인덱스 확인 모듈;
    상기 시프트 인덱스 값에 따라 상기 입력 정렬 모듈로부터 전달되는 입력 비트를 왼쪽으로 이동시키는 왼쪽 시프트 연산 모듈;
    상기 시프트 인덱스 값에서 상기 입력 비트의 길이의 절반값을 차감하여 상기 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 방향 변환 모듈;
    상기 방향 모듈로부터 전달되는 시프트 값에 따라, 상기 입력 정렬 모듈로부터 전달되는 입력 비트를 오른쪽으로 이동시키는 오른쪽 시프트 연산 모듈;
    상기 인덱스 확인 모듈에서 생성된 시프트 연산 결과 선택 신호에 따라 상기 오른쪽 시프트 연산 모듈의 출력 값 또는 상기 왼쪽 시프트 연산 모듈의 출력 값을 선택하여 출력하는 다중화 모듈; 및
    상기 다중화 모듈의 출력 값을 XOR 연산하여 상기 제1 패리티 파트 값을 산출하는 XOR 연산 모듈
    을 포함하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  5. 제4항에 있어서,
    상기 행곱 연산 모듈은,
    상기 시프트 인덱스 값을 상기 입력 비트의 길이보다 작도록 변환하는 모듈로 연산 모듈;
    상기 다중화 모듈의 출력 값을 저장하여, 상기 XOR 연산 모듈로 전달하는 메모리; 및
    상기 XOR 연산 모듈에 의해 산출된 상기 제1 패리티 파트 값을 상기 XOR 연산 모듈로 피드백하는 플립플롭
    을 추가로 포함하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  6. 제3항에 있어서,
    상기 제1 연산 모듈은,
    상기 제1 패리티 파트 값과 상기 시프트 인덱스를 이용하여, 상기 정보 파트 블록과 상기 입력 비트의 곱을 산출하는 연산 모듈인 것을 특징으로 하는 QC-LDPC 부호화 장치.
  7. 패리티 검사 행렬을 양방향으로 시프트(Shift)하기 위한 패리티 파트를 산출하는 QC-LDPC(Quasi-Cyclic Low Density Parity Check) 부호화 장치에 있어서,
    시프트 인덱스 값―상기 QC-LDPC 부호화를 위한 입력 비트를 시프트하기 위한 값임―과 상기 입력 비트의 길이를 비교하여, 시프트 연산 결과의 선택을 위한 신호를 생성하는 인덱스 확인 모듈;
    상기 시프트 인덱스 값에 따라 상기 입력 비트를 왼쪽으로 이동시키는 왼쪽 시프트 연산 모듈;
    상기 시프트 인덱스 값과 상기 입력 비트의 길이를 이용하여, 상기 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 방향 변환 모듈;
    상기 방향 변환 모듈에서 산출된 시프트 값에 따라, 상기 입력 비트를 오른쪽으로 이동시키는 오른쪽 시프트 연산 모듈;
    상기 인덱스 확인 모듈에서 생성된 신호에 따라, 상기 오른쪽 시프트 연산 모듈 또는 상기 왼쪽 시프트 연산 모듈의 출력 값을 선택하는 다중화 모듈; 및
    상기 다중화 모듈의 출력 값을 XOR 연산하여 상기 패리티 파트를 산출하는 XOR 연산 모듈
    을 포함하는 QC-LDPC 부호화 장치.
  8. 제7항에 있어서,
    상기 시프트 인덱스 값을 상기 입력 비트의 길이보다 작도록 변환하는 모듈로 연산 모듈;
    상기 다중화 모듈의 출력 값을 저장하여, 상기 XOR 연산 모듈로 전달하는 메모리; 및
    상기 XOR 연산 모듈에 의해 산출된 상기 패리티 파트를 상기 XOR 연산 모듈로 피드백하는 플립플롭
    을 추가로 포함하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  9. 제7항에 있어서,
    상기 인덱스 확인 모듈은,
    상기 시프트 인덱스 값이 상기 입력 비트의 길이의 절반값보다 크면, 상기 왼쪽 시프트 연산 모듈의 출력 값을 산출하기 위한 시프트 연산 결과 선택 신호를 생성하고,
    상기 시프트 인덱스 값이 상기 입력 비트의 길이의 절반값보다 작으면, 상기 오른쪽 시프트 연산 모듈의 출력 값을 산출하기 위한 시프트 연산 결과 선택 신호를 생성하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  10. 패리티 검사 행렬을 양방향으로 시프트(Shift)하는 QC-LDPC(Quasi-Cyclic Low Density Parity Check) 부호화 방법에 있어서,
    (a) 상기 부호화를 위한 입력 비트를 수신하여 정렬하는 입력 정보 비트 정렬 단계;
    (b) 상기 정렬된 입력 비트를 시프트하고, 상기 시프트된 연산 결과를 합산하는 연산 단계;
    (c) 상기 입력 비트의 행의 수만큼 상기 연산 단계를 반복하고, 상기 연산 단계의 반복이 종료되면, 상기 시프트된 연산 결과의 합산 값을 이용하여 제1 패리티 파트 및 제2 패리티 파트를 산출하는 패리티 파트 산출 단계; 및
    (d) 상기 입력 비트, 상기 제1 패리티 파트 및 제2 패리티 파트를 이용하여 상기 QC-LDPC 부호화 값을 산출하여 출력하는 QC-LDPC 부호 정렬 단계
    를 포함하는 QC-LDPC 부호화 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 단계 (c)는,
    (c1) 상기 시프트된 연산 결과의 합산 값을 이용하여 제1 패리티 파트를 산출하는 단계;
    (c2) 상기 제1 패리티 파트를 이용하여, 상기 입력 비트를 구성하는 각각의 구성 요소에 대한 부호화 결과 값을 산출하는 단계; 및
    (c3) 상기 제1 패리티 파트와 상기 부호화 결과 값을 이용하여 제2 패리티 파트를 산출하는 단계
    를 포함하는 것을 특징으로 하는 QC-LDPC 부호화 방법.
  13. 제10항에 있어서,
    상기 단계 (b)는,
    (b1) 상기 입력 비트를 시프트하기 위한 시프트 인덱스 값과 상기 입력 비트의 길이의 절반값을 비교하는 단계;
    (b2) 상기 비교 결과에 따라 상기 시프트 인덱스 값을 왼쪽 또는 오른쪽으로 이동시키는 단계; 및
    (b3) 상기 이동된 시프트 인덱스 값을 저장하고, 상기 저장된 시프트 인덱스 값에 따라 연산 결과를 합산하는 단계
    를 포함하는 것을 특징으로 하는 QC-LDPC 부호화 방법.
  14. 제13항에 있어서,
    상기 단계 (b2)는,
    상기 시프트 인덱스 값이 상기 입력 비트의 길이의 절반값보다 크면, 상기 시프트 인덱스 값을 왼쪽으로 이동시키고,
    상기 시프트 인덱스 값이 상기 입력 비트의 길이의 절반값보다 작으면, 상기 시프트 인덱스 값을 오른쪽으로 이동시키는 것을 특징으로 하는 QC-LDPC 부호화 방법.
  15. 제14항에 있어서,
    상기 단계 (b1)과 상기 단계 (b2) 사이에,
    상기 시프트 인덱스 값에서 상기 입력 비트의 길이의 절반값을 차감하여 상기 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 단계
    를 추가로 포함하는 것을 특징으로 하는 QC-LDPC 부호화 방법.
  16. 제14항에 있어서,
    상기 단계 (c)는,
    상기 저장된 시프트 인덱스 값을 XOR 연산하여 상기 제1 패리티 파트 값을 산출하는 것을 특징으로 하는 QC-LDPC 부호화 방법.
  17. 제6항에 있어서,
    상기 제2 연산 모듈은,
    상기 제1 연산 모듈의 출력 값과, 상기 제1 패리티 파트와 상기 제1 패리티 파트의 부분 블록의 곱을 비트 단위로 AND 연산하여 상기 제2 패리티 파트를 산출하는 연산 모듈인 것을 특징으로 하는 QC-LDPC 부호화 장치.
  18. 제7항에 있어서,
    상기 인덱스 확인 모듈은,
    상기 시프트 인덱스 값과 상기 입력 비트 길이의 절반값을 비교하여, 상기 시프트 연산 결과의 선택을 위한 시프트 연산 결과 선택 신호를 생성하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
  19. 제7항에 있어서,
    상기 방향 변환 모듈은,
    상기 시프트 인덱스 값에서 상기 입력 비트의 길이의 절반값을 차감하여 상기 입력 비트를 오른쪽으로 이동시키기 위한 시프트 값을 산출하는 것을 특징으로 하는 QC-LDPC 부호화 장치.
KR1020060124509A 2006-12-08 2006-12-08 준순환 저밀도 패리티 검사 부호화 방법 및 장치 KR100874484B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060124509A KR100874484B1 (ko) 2006-12-08 2006-12-08 준순환 저밀도 패리티 검사 부호화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060124509A KR100874484B1 (ko) 2006-12-08 2006-12-08 준순환 저밀도 패리티 검사 부호화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080052832A KR20080052832A (ko) 2008-06-12
KR100874484B1 true KR100874484B1 (ko) 2008-12-18

Family

ID=39807361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060124509A KR100874484B1 (ko) 2006-12-08 2006-12-08 준순환 저밀도 패리티 검사 부호화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100874484B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635517B2 (en) * 2011-01-31 2014-01-21 Samsung Electronics Co., Ltd. Methods and apparatus for fast synchronization using quasi-cyclic low-density parity-check (QC-LDPC) codes
CN102687445B (zh) * 2011-12-30 2015-01-21 华为技术有限公司 前向纠错编、解码方法、装置及系统
TWI643201B (zh) * 2017-11-27 2018-12-01 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器

Also Published As

Publication number Publication date
KR20080052832A (ko) 2008-06-12

Similar Documents

Publication Publication Date Title
JP6858857B2 (ja) 受信機及び復号方法
KR100502609B1 (ko) Ldpc 코드를 이용한 부호화기 및 부호화 방법
KR100808664B1 (ko) 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
JP5524287B2 (ja) さまざまな符号クラスの符号化および復号化への応用を有するインプレース変換
US7451374B2 (en) Apparatus and method for channel coding in mobile communication system
US8108760B2 (en) Decoding of linear codes with parity check matrix
KR101211433B1 (ko) 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법
KR20080048988A (ko) 무-충돌 불규칙-반복-누산 코드
KR100669152B1 (ko) 저밀도 패리티 검사 코드의 부호화 장치 및 방법
WO2019130475A1 (ja) 通信路分極を用いた誤り訂正符号化方法および装置、復号方法および装置
CN112468161B (zh) 一种rs高速编码电路
CN1136662C (zh) 寻找卷积反馈编码器起始状态的技术
KR100874484B1 (ko) 준순환 저밀도 패리티 검사 부호화 방법 및 장치
EP2309650B1 (en) A systematic encoder with arbitrary parity positions
EP2207266A1 (en) Decoding of recursive convolutional codes by means of a decoder for non-recursive convolutional codes
JP6472790B2 (ja) 共通ハードウェアリソースを共用する、異なる低密度パリティ検査(ldpc)符号のための低密度パリティ検査の符号化
Leroux et al. Turbo product code decoder without interleaving resource: From parallelism exploration to high efficiency architecture
CN112671415B (zh) 一种面向乘积码的高吞吐量编码方法
CN110730003A (zh) 一种ldpc编码方法及ldpc编码器
KR20110070730A (ko) 효율적인 ldpc 고속 부호화 방법 및 이를 이용하는 장치
KR100800775B1 (ko) 이동 통신 시스템에서 채널 부호화 장치 및 방법
Rao Convolutional Codes
KR20190063431A (ko) 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법
KR101512081B1 (ko) 특정 밀도를 기반으로 하는 저밀도 행렬을 이용한 부호화/복호화 방법 및 장치
KR100956592B1 (ko) 메시지 전달 알고리즘을 이용한 ldpc 코드 부호화 장치및 그 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141127

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171129

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20191128

Year of fee payment: 12