KR101613984B1 - 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치 - Google Patents

입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치 Download PDF

Info

Publication number
KR101613984B1
KR101613984B1 KR1020130068471A KR20130068471A KR101613984B1 KR 101613984 B1 KR101613984 B1 KR 101613984B1 KR 1020130068471 A KR1020130068471 A KR 1020130068471A KR 20130068471 A KR20130068471 A KR 20130068471A KR 101613984 B1 KR101613984 B1 KR 101613984B1
Authority
KR
South Korea
Prior art keywords
message block
encoding matrix
bits
input data
column
Prior art date
Application number
KR1020130068471A
Other languages
English (en)
Other versions
KR20140145825A (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 KR1020130068471A priority Critical patent/KR101613984B1/ko
Priority to PCT/KR2014/005114 priority patent/WO2014200259A1/ko
Publication of KR20140145825A publication Critical patent/KR20140145825A/ko
Application granted granted Critical
Publication of KR101613984B1 publication Critical patent/KR101613984B1/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/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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking 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/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/1191Codes on graphs other than LDPC codes

Abstract

본 발명은 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치에 관한 것이다. 개시된 부호화 방법 및 장치는 n개 비트로 이루어진 입력 데이터에서 최초로 '1'이 존재하는 비트가 제k 번째 비트일 경우, 제k 행(row)을 나머지 각각의 행들에 비하여 상대적인 밀도가 높도록 구성되거나, 제k 열(column)을 나머지 각각의 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성하는 단계; 부호화 행렬을 이용하여 코드워드(codeword)를 생성하는 단계; 및 생성된 코드워드를 전송하는 단계로 이루어진다. 따라서 입력 데이터의 특성(특징)과 상대적인 밀도 특성(density)이 적용된 부호화 행렬을 이용하여 코드워드를 생성함으로써, 부호화 과정에서의 복잡도, 속도 및 기능 면에서 현저하게 개선 향상된다.

Description

입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치{METHOD AND DEVICE OF ENCODING USING RELATIVE HIGH-DENSITY OF INPUT DATA}
본 발명은 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치에 관한 것으로서, 입력 데이터의 특성이 반영된 부호화 행렬을 생성하고, 생성한 부호화 행렬의 데이터의 밀도(density)를 이용하여 메시지를 쉽게 부호화 할 수 있는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치에 관한 것이다.
일반적으로, 많은 통신 장치나 기록 재생 장치에 있어서는 입력 정보 계열을 부호화한 부호 계열을 전송함으로써 디지털 전송 정보의 비트 오류율(Bit Error Rate, BER)의 저감이 도모되고 있다.
최근, 예를 들어 이동 통신이나 우주 통신 등의 통신 분야, 및 지상파 또는 위성 디지털 방송이라는 방송 분야의 연구가 활발하게 진행되고 있으며, 그에 수반하여 오류 정정 부호화 및 복호의 효율성을 목적으로 한 부호 이론에 관한 연구도 꾸준하게 행하여지고 있다.
부호 성능의 이론적 한계의 예로 섀넌(C.E.Shannon)의 통신로 부호화 정리에 의해 부여되는 섀넌 한계가 알려져 있다. 이에 부호 이론에 관한 연구의 목적 중 하나는 이 섀넌 한계에 가까운 성능을 나타내는 부호를 개발하는 것이다.
그러나 기존에 개발된 코딩(encoding/decoding) 방법은 부호화(encoding) 단계에서 효율적이지 못하고, 계산이 복잡해지는 문제점이 발생한다.
이에 부호화 단계에서부터 계산 과정을 현저하게 줄일 수 있는 코딩 방법의 필요성이 크게 대두되고 있다.
본 발명은 이와 같은 문제점을 해결하기 위한 것으로, 본 발명은 입력 데이터의 특징을 구현한 부호화 행렬을 생성하고, 생성된 부호화 행렬을 사용하여 코드워드를 효율적으로 생성함으로써, 부호화에 사용되는 계산을 현저하게 감소시킬 수 있는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법을 제공하는 데에 그 목적이 있다.
나아가, 본 발명은 상기 부호화 방법을 실행하기 위한 입력 데이터의 상대적 고밀도를 이용한 부호화 장치를 제공하는 데에 그 목적이 있다.
본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법에 따르면, 부호화 방법은 n개 비트로 이루어진 입력 데이터에서 최초의 '1'이 제k 번째 비트일 경우, 제k 행(row)을 나머지 각각의 행들에 비하여 상대적인 밀도가 높도록 구성되거나, 제k 열(column)을 나머지 각각의 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성하는 단계; 상기 부호화 행렬을 이용하여 코드워드(codeword)를 생성하는 단계; 및 상기 생성된 코드워드를 전송하는 단계로 이루어진다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬에서의 제k 행(row) 또는 제k 열(column)에 존재하는 '1'의 개수가 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수보다 상대적으로 많도록 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성한다.
일 예로, 상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터를 그대로 배열하는 방법과 상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터의 '0'과 '1'을 랜덤하게 섞어서 배열하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성할 수 있다.
다른 예로, 상기 제k 행(row) 또는 제k 열(column)에서 상기 입력 데이터의 제k 번째 비트부터 모두 '1'로 구성하는 방법과 상기 제k 행(row) 또는 제k 열(column)의 모든 비트를 '1'로 구성하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성할 수 있다.
또 다른 예로, 상기 제k 행(row) 또는 제k 열(column)에 입력 데이터 길이와 동일한 n개 비트로 이루어진 랜덤데이터를 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성할 수 있다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계에서, 상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 행들 또는 열들 각각은 '1'이 하나만 존재하도록 한다.
본 발명의 다른 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계에서, 상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수와 상기 k 행 또는 제k 열에 존재하는 '1'의 개수가 상대적으로 차이가 나도록 구성할 수 있다.
본 발명의 실시예들에 있어서, 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에 상기 부호화 행렬의 크기는 a×b이고, 상기 상대적으로 밀도가 높은 열이 제k 열인 경우에 상기 부호화 행렬의 크기는 b×a이며, 여기서, a는 상기 k보다 크거나 같고, b는 양의 정수이다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에 외부로부터 데이터를 수신하는 단계; 상기 수신한 데이터를 '1'을 기준으로 절단(chopping)하여 복수개의 절단된 블록들로 생성하는 단계; 상기 절단된 블록들 중 적어도 하나의 절단된 블록으로 구성된 메시지 블록을 생성하는 단계; 상기 생성된 메시지 블록들 중에서 적어도 하나의 '1'을 포함하는 메시지 블록들을 입력 데이터로 출력하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 있어서, 상기 수신한 데이터를 복수개의 블록들로 절단(chopping)하는 단계에서는 상기 수신한 데이터를 최초의 비트를 기준으로 '1'이 나오는 비트가 나올 때마다 상기 '1'이 존재하는 비트와 다음 비트 사이를 절단한다.
그리고 상기 메시지 블록을 생성하는 단계에서, 상기 메시지 블록은 상기 절단된 블록들 전체로 구성된 제1 메시지 블록과, 상기 제1 메시지 블록에서 상기 절단된 블록을 하나씩 제거하여 생성된 제2 메시지 블록 내지 제c 메시지 블록들로 이루어진다.
이어서, 상기 메시지 블록을 부호화 행렬의 생성을 위한 입력 데이터로 출력하는 단계에서, 상기 제1 메시지 블록 내지 제c 메시지 블록을 순서대로 입력 데이터로 출력한다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에 외부로부터 데이터를 수신하는 단계; 상기 수신한 데이터를 제1 메시지 블록으로 생성하고, 이전 메시지 블록으로부터 최초의'1'을 기준으로'1'앞에 있는'0'비트들과'1'을 포함하여 삭제한 후에 나머지 비트들로 구성된 메시지 블록을 상기 제1 메시지 블록의 후속 메시지 블록으로 생성하는 메시지 블록을 생성하는 단계; 및 상기 생성된 메시지 블록을 순서대로 입력 데이터로 출력하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에 외부로부터 데이터를 수신하는 단계; 상기 수신한 데이터를 이용하여 사전에 설정된 길이인 n개 비트로 이루어진 메시지 블록을 생성하는 단계; 상기 메시지 블록을 상기 생성된 입력 데이터로 출력하는 단계로 이루어진다. 이 때, 상기 메시지 블록을 생성하는 단계에서, 이전 메시지 블록에서 최초로 '1'이 나오는 비트까지의 데이터를 제외시키고, 상기 제외시킨 데이터의 비트 수 만큼을 상기 수신한 데이터로부터 채워서 후속 메시지 블록을 구성한다.
또한, 메시지 블록을 생성하는 단계에서, 상기 수신한 데이터로부터 상기 후속 메시지 블록을 구성하지 못하는 경우, 상기 이전 메시지 블록에서 제외된 비트 수 만큼의 데이터를 '1'로 채워서 상기 후속 메시지 블록을 생성할 수 있다.
또한, 메시지 블록을 생성하는 단계에서, 상기 수신한 데이터로부터 상기 후속 메시지 블록을 구성하지 못하는 경우, 상기 이전 메시지 블록에서 제외된 비트 수 만큼의 데이터를 후속으로 수신한 데이터로부터 채워서 상기 후속 메시지 블록을 생성할 수 있다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에 외부로부터 데이터를 수신하는 단계; 상기 수신한 데이터를 이용하여 사전에 설정된 길이인 n개 비트로 이루어진 메시지 블록을 생성하는 단계; 상기 메시지 블록을 상기 생성된 입력 데이터로 출력하는 단계로 이루어진다. 이 때, 상기 메시지 블록을 생성하는 단계에서, 이전 메시지 블록에서 최초로 '1'이 나오는 비트까지의 데이터를 제외시키고, 상기 제외시킨 데이터의 비트 수 만큼을 '1'로 채워서 상기 후속 메시지 블록을 생성할 수 있다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 행들을 순서대로 연결하는 방식으로 코드워드를 생성한다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 열들을 순서대로 연결하는 방식으로 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성한다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 열을 코드워드로 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성할 수도 있다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 행 내지 제k 행의 각 행을 코드워드로 정의하여 k개의 코드워드를 생성할 수도 있다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 열 내지 제k 열의 각 열을 코드워드로 정의하여 k개의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 행 내지 제n 행의 각 행을 코드워드로 정의하여 n-k개의 코드워드를 생성할 수도 있다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 열 내지 제n 열의 각 열을 코드워드로 정의하여 n-k개의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬을 생성하지 않고 모두 '0'으로 이루어진 코드워드(codeword)를 바로 생성할 수 있다.
본 발명의 실시예들에 있어서, 상기 부호화 행렬을 이용하여 생성한 코드워드의 길이가 m이고, 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬을 생성하지 않고 상기 m이 아닌 다른 길이로 이루어진 코드워드(codeword)를 생성할 수 있다.
본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치는 n개 비트로 이루어진 입력 데이터에서 최초의 '1'이 제k 번째 비트일 경우, 제k 행(row)을 나머지 각각의 행들에 비하여 상대적인 밀도가 높도록 구성되거나, 제k 열(column)을 나머지 각각의 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성하는 부호화 행렬 생성부; 상기 부호화 행렬을 이용하여 코드워드(codeword)를 생성하는 코드워드 생성부; 및 상기 생성한 코드워드를 외부로 전송하는 코드워드 전송부를 포함한다.
이상에서 설명한 바와 같은 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치에 따르면 다음과 같은 효과가 있다.
첫째, 데이터를 복수개의 블록들로 절단하고, 최초 입력 데이터 이후의 입력 데이터는 상기 절단된 블록들의 일부 블록들로 구성함으로써, 계산 부담을 감소시킬 수 있다.
둘째, 입력 데이터 또는 입력 데이터의 순서를 섞어서 입력 데이터의 특성이 반영된 행 또는 열에 배치하고, 나머지 행 또는 열에는 '1'의 개수를 최소화 하는 부호화 행렬을 생성함으로써, 부호화의 복잡도가 낮아지고 특히 저밀도 부호화 행렬을 생성할 수 있다.
셋째, 입력 데이터의 특성을 반영하여 부호화 행렬의 특정 행 또는 열의 상대적인 밀도를 나머지 행 또는 열보다 높도록 구성함으로써, 추후 부호화된 데이터를 복호화 할 때에도 밀도 특성만을 이용하여 입력 데이터를 복호화할 수 있도록 할 수 있다.
넷째, 부호화 행렬의 행 또는 열의 순서대로 연접하여 생성된 코드워드를 이용하여 송신함으로써, 부호화 성능을 더 향상시킬 수 있다.
다섯째, 부호화 행렬의 제k 행(제k 열)이 나머지 행(열)들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행(열)을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 복잡도, 속도 및 성능을 크게 향상시킬 수 있다.
여섯째, 부호화 행렬의 제k 행(제k 열)이 나머지 행(열)들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 행(열) 내지 제k 행(열)의 각 행(열)을 코드워드로 정의하여 k개의 코드워드를 생성하여 부호화 복잡도, 속도 및 성능을 크게 향상시킬 수 있다.
일곱째, 부호화 행렬의 제k 행(제k 열)이 나머지 행(열)들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 행(열) 내지 제n 행(열)의 각 행(열)을 코드워드로 정의하여 n-k개의 코드워드를 생성하여 부호화 복잡도, 속도 및 성능을 크게 향상시킬 수 있다.
여덟째, 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬을 이용하여 단수 또는 복수개의 코드워드를 생성하여 부호화 복잡도, 속도 및 성능을 크게 향상시킬 수 있다.
아홉째, 부호화 행렬의 크기는 입력 데이터의 크기와 무관하게 정의하여 부호화 복잡도, 속도 및 성능을 크게 향상시킬 수 있다.
[도 1]은 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치를 설명하기 위한 블록도
[도 2]는 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법을 설명하기 위한 순서도
[도 3]은 본 발명의 다른 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치를 설명하기 위한 블록도
[도 4]는 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법을 설명하기 위한 순서도
첨부한 도면을 참조하여 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나, 개략적인 구성을 이해하기 위하여 실제보다 축소하여 도시한 것이다.
또한, 제1 및 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 한편, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치(100)는 데이터 수신부(110), 절단부(120), 블록부(130), 입력 데이터 출력부(140), 부호화 행렬 생성부(150), 코드워드 생성부(160) 및 전송부(170)를 포함한다.
데이터 수신부(110)는 외부로부터 데이터를 수신한다.
본 발명의 실시예들에 따르면, 절단부(120)는 상기 수신한 데이터를 '1'을 기준으로 절단(chopping)하여 복수개의 절단된 블록들로 생성한다. 예를 들어, 절단부(120)는 상기 수신한 데이터를 최초의 비트를 기준으로(첫 번째 비트로부터) '1'이 나오는 비트가 나올 때마다 상기 '1'이 존재하는 비트와 다음 비트 사이를 절단할 수 있다. 예를 들어, 데이터가 '0001011010'일 경우, 절단부(120)는 '0001', '01', '1', '01', '0'로 데이터를 절단한다.
본 발명의 실시예들에 따르면, 블록부(130)는 절단부(120)에서 절단한 블록들 중 적어도 하나의 절단된 블록으로 구성된 메시지 블록을 생성한다. 본 발명의 실시예들에 있어서, 블록부(130)는 상기 절단된 블록들 전체로 구성된 제1 메시지 블록과, 상기 제1 메시지 블록에서 상기 절단된 블록을 하나씩 제거하여 생성된 제2 메시지 블록 내지 제c 메시지 블록들로 메시지 블록을 생성할 수 있다. 예를 들어, 절단부(120)가 '0001011010'인 수신한 데이터를 '0001', '01', '1', '01', '0'로 절단한 경우, 블록부(130)는 절단된 블록 전체로 이루어진 제1 메시지 블록인'0001011010'과 제2 메시지 블록 내지 제5 메시지 블록인 '011010', '1010', '010', '0'으로 각각 생성할 수 있다. 즉, 블록부(130)는 절단부(120)가 절단한 데이터와 같거나 데이터보다 길이(크기)가 작은 메시지 블록을 생성할 수 있다. 그리고 블록부(130)는 생성한 메시지 블록들을 연속하여 입력 데이터 출력부(140)로 전달한다.
본 발명의 실시예들에 따르면, 절단부(120)를 생략하고 블록부(130)는 첫 번째 메시지 블록은 원본 메시지이고 그 다음의 후속 메시지 블록은 이전의 메시지 블록으로부터 최초의 '1'을 기준으로 '1' 앞에 있는 '0' 비트들과 '1'을 포함하여 삭제한 후에 나머지 비트들로 구성된 데이터가 후속 메시지 블록을 생성한다. 예를 들어, 블록부(130)는 절단된 블록 전체로 이루어진 제1 메시지 블록인 '0001011010'과 제2 메시지 블록 내지 제5 메시지 블록인 '011010', '1010', '010', '0'으로 각각 생성할 수 있다. 그리고 블록부(130)는 생성한 메시지 블록들을 연속하여 입력 데이터 출력부(140)로 전달한다.
본 발명의 실시예들에 있어서, 블록부(130)가 생성한 제c 메시지 블록은 모두 '0'으로 이루어진 블록, 하나의 '1'로만 이루어진 블록 및 적어도 하나의 '0'과 하나의 '1'로 이루어진 블록들 중 하나가 될 수 있다.
한편, 데이터가 '0'으로만 이루어진 경우에는 상기 데이터를 상기 코드워드로 바로 생성한다. 예를 들어, 데이터가 '0'으로만 이루어진 경우, 데이터가 그대로 절단부(120)와 블록부(130)를 거쳐 메시지 블록으로 생성될 수 있다. 이 때, 블록부(130)는 상기 메시지 블록을 입력 데이터 출력부(140), 부호화 행렬 생성부(150)로 출력하지 않고 코드워드 생성부(160)로 출력한다. 그리고 코드워드 생성부(160)는 상기 데이터를 코드워드로 바로 생성할 수 있다. 즉, 데이터가 '0'으로만 이루어진 경우에는 절단부(120)와 블록부(130)만 거쳐 코드워드 생성부(160)로 바로 전달될 수 있다.
한편 데이터가 '0'으로만 이루어진 경우, 절단부(120)와 블록부(130)를 거치지 않고 상기 데이터를 코드워드 생성부(160)로 바로 전달하도록 장치를 구성할 수도 있을 것이다.
마찬가지로, 절단부(120)가 절단한 블록들 중에서 '0'으로만 이루어진 영 블록이 존재하는 경우에도, 상기 영 블록은 블록부(130)를 거쳐 바로 코드워드 생성부(160)로 전달되어 코드워드로 생성된다. 예를 들어, 데이터가 '0001010100'인 경우, 절단부(120)는 순서대로 절단하여 '0001', '01', '01', '00'이 절단된 블록으로 생성될 수 있다. 이 때, 마지막 블록은 '00'으로 이루어진 영 블록이므로, 입력 데이터 출력부(140), 부호화 행렬 생성부(150)로 전달되지 않고, 코드워드 생성부(160)로 바로 전달되어 코드워드로 생성될 수 있다.
입력 데이터 출력부(140)는 블록부(130)로부터 전달받은 메시지 블록들을 입력 데이터로 순서대로 출력한다. 본 발명의 실시예들에 있어서, 입력 데이터 출력부(140)는 상기 생성된 메시지 블록들 중에서 적어도 하나의 '1'을 포함하는 메시지 블록들을 입력 데이터로 출력한다. 한편, 입력 데이터 출력부(140)는 블록부(130)에서 생성한 메시지 블록들 중 적어도 하나의 '1'을 포함하는 메시지 블록을 부호화 행렬 생성부(150)로 전달하는 기능을 하는 것이므로, 블록부(130)에서 입력 데이터 출력부(140)의 기능과 동일한 기능을 추가적으로 수행하도록 장치를 구성할 수 있다. 이 경우에는 블록부(130)와 입력 데이터 출력부(140)가 일체로 구성되는 것이다.
입력 데이터 출력부(140)는 절단된 메시지 블록들 전체로 구성된 제1 메시지 블록을 최초 입력 데이터로 출력하고, 상기 데이터에서 상기 구분된 복수개의 블록들 중에서 하나의 블록을 제외한 나머지 블록들로 이루어진 데이터를 후속 입력 데이터로 출력한다. 본 발명의 실시예들에 있어서, 입력 데이터 출력부(140)는 이전에 출력한 입력 데이터의 첫 번째 비트로부터 최초의 '1'이 포함된 블록을 제외한 나머지 블록들로 이루어진 데이터를 후속 입력 데이터로 출력하는 단계를 반복한다.
또한, 입력 데이터 출력부(140)는 상기 데이터에서 블록부(130)로부터 전달받은 제c 메시지 블록까지 입력 데이터로 출력하는 것을 반복할 수 있다. 예를 들어, 데이터가 '0001011010'일 경우, 입력 데이터 출력부(140)는 데이터인 '0001011010'을 최초의 입력 데이터인 제1 입력 데이터로 출력하고, 제일 앞의 블록인'0001'블록을 제외한 나머지 데이터인 '011010'을 후속 입력 데이터인 제2 입력 데이터로 출력한다. 이어서, 입력 데이터 출력부(140)는 제2 입력 데이터에서 제일 앞의 블록인 '01'을 제외한 '1010'을 제3 입력 데이터로 출력하며, 제3 입력 데이터에서 제일 앞의 블록인 '1'을 제외한 '010'을 제4 입력 데이터로 출력한다.
한편, 절단부(120), 블록부(130)와 입력 데이터 출력부(140)가 데이터를 블록들로 절단하고, 출력하는 입력 데이터의 블록들을 정하는 방식은 위에서 설명한 사항에 한정되지 않으며, 데이터를 절단하고 블록화 하여 이전에 출력한 입력 데이터에서 특정 블록을 제외하고 입력 데이터를 출력하는 소위 서브루틴(sub-routine) 방식을 통하여 계산 부담을 줄일 수 있는 모든 방식은 본 발명의 권리범위에 다 포함된다고 할 것이다.
부호화 행렬 생성부(150)는 입력 데이터 출력부(140)로부터 전달받은 n 개 비트로 이루어진 입력 데이터의 특성을 이용하여 부호화 행렬을 생성한다.
구체적으로, 부호화 행렬 생성부(150)는 입력 데이터에서 최초로 '1'이 존재하는 비트가 제k 번째 비트일 경우, 제k 행(row)을 나머지 각각의 행들에 비하여 상대적인 밀도가 높도록 구성되거나, 제k 열(column)을 나머지 각각의 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성한다.
본 발명의 실시예들에 있어서, 부호화 행렬 생성부(150)는 상기 부호화 행렬에서의 제k 행(row) 또는 제k 열(column)에 존재하는 '1'의 개수가 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수보다 상대적으로 많도록 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성한다. 즉, 부호화 행렬의 행들 간 또는 열들 간 상대적인 밀도라 함은 각 행 또는 열의 구성성분(비트, component) 중'1'의 개수가 많은 것을 의미한다. 즉, 각 행이 10개의 비트로 이루어진 경우, 제1 행에존재하는 '1'의 개수가 8개이고, 제2 행에 존재하는 '1'의 개수가 3개인 경우, 제1 행이 제2 행보다 상대적인 밀도가 높다고 할 것이다.
예를 들어, 입력 데이터가 '0001011010'인 경우, '1'이 최초로 나타나는 비트가 4번째 비트이므로, 부호화 행렬 생성부(150)는 부호화 행렬의 제4 행을 다른 행보다 상대적인 밀도가 높도록 행렬을 구성하거나, 부호화 행렬의 제4 열을 다른 열보다 상대적인 밀도가 높도록 행렬을 구성한다. 다시 말하면, 부호화 행렬 생성부(150)는 제4 행 또는 제4 열에 존재하는 '1'의 개수를 다른 행 또는 열에 존재하는 '1'의 개수보다 많도록 부호화 행렬을 구성할 수 있다.
일 예로, 부호화 행렬 생성부(150)는 전달된 입력 데이터를 이용하여 제k 행 또는 제k 열을 구성할 수 있다. 예를 들어, 부호화 행렬 생성부(150)는 전달된 입력 데이터를 부호화 행렬의 제k 행(row) 또는 제k 열(column)에 입력 데이터를 그대로 배열할 수 있다. 또는 부호화 행렬 생성부(150)는 부호화 행렬의 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터의 '0'과 '1'을 랜덤하게 섞어서 배열할 수 있다. 즉, 부호화 행렬 생성부(150)는 입력 데이터 길이와 동일한 n개 비트로 이루어진 랜덤데이터를 배열하는 것이다.
만일, 입력 데이터가 '0001011010'인 경우에 입력 데이터에서 최초로 '1'이 나타나는 비트가 4번째 비트이므로, 부호화 행렬 생성부(150)는 아래의 수학식 1과 같이 제4 행에 입력 데이터를 그대로 배열하는 부호화 행렬을 구성할 수 있다. 이는 일반적으로 입력 데이터의 상대적인 밀도가 높다는 것, 즉 입력 데이터에 '1'이 상대적으로 많다는 것을 이용한 것이다.
[수학식 1]
Figure 112013053100052-pat00001
다른 예로, 부호화 행렬 생성부(150)는 제k 행(row) 또는 제k 열(column)에서 상기 입력 데이터의 제k 번째 이후의 비트를 모두 '1'로 구성할 수 있다. 만일, 입력 데이터가 '0001011010'인 경우에 입력 데이터에서 최초로 '1'이 나타나는 비트가 4번째 비트이므로, 부호화 행렬 생성부(150)는 아래의 수학식 2와 같이 제4 행의 상대적인 밀도를 높게 형성하고, 구체적으로 4번째 비트부터 모두 '1'로 구성하는 것이다.
[수학식 2]
Figure 112013053100052-pat00002
또 다른 예로, 부호화 행렬 생성부(150)는 제k 행(row) 또는 제k 열(column)의 모든 비트를 '1'로 구성할 수 있다. 만일, 입력 데이터가 '0001011010'인 경우에 입력 데이터에서 최초로 '1'이 나타나는 비트가 4번째 비트이므로, 부호화 행렬 생성부(150)는 아래의 수학식 3과 같이 제4 행의 상대적인 밀도를 높게 형성하고, 구체적으로 전체 비트를 모두 '1'로 구성하는 것이다.
[수학식 3]
Figure 112013053100052-pat00003
또 다른 예로, 부호화 행렬 생성부(150)는 제k 행(row) 또는 제k 열(column)에서 '1'과 '0'을 랜덤하게 배열하는 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성할 수 있다. 만일, 입력 데이터가 '0001011010'인 경우에 입력 데이터에서 최초로 '1'이 나타나는 비트가 4번째 비트이므로, 부호화 행렬 생성부(150)는 아래의 수학식 4와 같이 제4 행에 특정 규칙 없이 랜덤하게 '0'과 '1'을 배열하여 제4 행을 다른 행에 비하여 상대적인 밀도를 높게 형성시킬 수 있다. 즉, 입력 데이터에서 최초로 '1'이 나타나는 비트에 대응되는 행 또는 열의 상대적인 밀도를 다른 행 또는 열에 비하여 높게 형성하면 되는 것이고, 입력 데이터에 포함된 '1'의 개수와는 상관없게 부호화 행렬을 구성하는 것이다.
[수학식 4]
Figure 112013053100052-pat00004
한편, 부호화 행렬 생성부(150)는 입력 데이터의 특성(최초로 '1'이 나타나나는 비트)이 반영된 상대적인 밀도가 높은 행 또는 열을 제외한 나머지 각각의 행 또는 열에는 '1'이 하나만 존재하도록 배열할 수 있다.
일 예로, 부호화 행렬 생성부(150)는 상기 k행을 제외한 나머지 행들에 존재하는 '1'을 상기 제k 행에서 최초로 '1'이 나타나는 열을 제외하고, 행의 순서 또는 열의 순서대로 각 행과 각 열에 '1'이 하나씩 존재하도록 나머지 행을 구성할 수 있다. 즉 수학식 1 내지 4를 참조하면, 만일 입력 데이터가 '0001011010'인 경우에 제4 행을 제외한 나머지 행들에는 '1'이 행과 열의 순서대로 배열된다. 제1 행에는 제1 열(첫 번째 비트)에 '1'이 존재하고, 제2 행에는 제2 열(두 번째 비트)에 '1'이 존재하고, 제5행에는 제5 열(다섯 번째 비트)에 '1'이 존재하고, 제4 행을 제외한 나머지 행에는 단위행렬(identity matrix)과 동일하거나 유사한 형태로 '1'이 배열될 수 있다.
다른 예로, 부호화 행렬 생성부(150)는 행과 열의 순서대로 '1'이 배열되는 단위행렬 형식이 아니라, 하나의 행에는 하나의 '1'이 랜덤하게 존재하도록 부호화 행렬의 나머지 행들을 구성할 수 있다.
또 다른 예로, 부호화 행렬 생성부(150)는 행과 열의 순서대로 '1'이 배열되는 단위행렬 형식이 아니라, 복수 개의 '1'들이 존재하도록 부호화 행렬의 나머지 행들을 구성할 수 있다.
즉, 부호화 행렬 생성부(150)는 아래의 수학식 5와 같이 제4 행의 상대적인 밀도를 가장 높도록 배열하고, 나머지 행들은 '1'을 랜덤하게 배열하되, 제4 행보다 밀도가 낮도록 구성할 수 있다.
[수학식 5]
Figure 112013053100052-pat00005
본 발명의 다른 실시예들에 있어서, 부호화 행렬 생성부(150)는 입력 데이터의 특성(최초로 '1'이 나타나나는 비트)이 반영된 상대적인 밀도가 높은 제k 행 또는 제k 열에 존재하는 '1'의 개수와 나머지 각각의 행 또는 열에 존재하는 '1'의 개수가 상대적으로 차이가 나도록 부호화 행렬의 나머지 행들을 구성할 수 있다.
또한, 부호화 행렬 생성부(150)는 입력 데이터의 특성(최초로 '1'이 나타나나는 비트)이 반영된 상대적인 밀도가 높은 제k 행 또는 제k 열에 존재하는 '1'의 개수와 나머지 각각의 행 또는 열에 존재하는 '1'의 개수 차이가 적어도 2개의 차이가 나도록 부호화 행렬의 나머지 행들을 구성할 수 있다. 만일, 부호화 행렬의 상대적인 밀도가 가장 높은 제k 행에 '1'의 개수가 7개인 경우, 나머지 각각의 행들의 '1'의 개수는 5개 이하로 구성된다.
본 발명의 실시예들에 있어서, 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에 부호화 행렬 생성부(150)는 a×b의 크기를 갖는 부호화 행렬을 생성할 수 있다. 상기 상대적으로 밀도가 높은 열이 제k 열인 경우에 부호화 행렬 생성부(150)는 b×a의 크기를 갖는 부호화 행렬을 생성할 수 있다. 이 때, a는 상기 k보다 크거나 같고, b는 양의 정수이다.
위에서 b는 3보다 크거나 같게 구성할 수도 있을 것이다. 이 때, b를 3보다 크게 설정한 이유는 행 또는 열의 비트 수가 한 개 또는 두 개일 경우에 행들 간 또는 열든 간의 밀도 차이를 갖도록 하는 것이 힘들기 때문이다.
본 발명의 실시예들에 있어서, 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에, 부호화 행렬 생성부(150)는 부호화 행렬의 크기를 입력 데이터의 길이와 상관없이 정의할 수 있다.
예를 들어, 부호화 행렬 생성부(150)는 n개 비트로 이루어진 입력 데이터에 대해서 n×n 크기의 부호화 행렬을 생성할 수 있다. 또한, 부호화 행렬 생성부(150)는 입력 데이터의 제k 번째 비트에서 최초로 '1'이 존재할 경우, k×n, k×3, (k+1)×4 크기의 부호화 행렬을 생성할 수도 있다.
특히, 부호화 행렬 생성부(150)는 입력 데이터에서 최초의 '1'이 제k 번째 비트일 경우, 부호화 행렬을 아래의 수학식 6과 같이 제k 행에만 '1'을 배열하고, n×1 크기의 부호화 행렬을 생성할 수도 있다. 상기 부호화 행렬의 크기를 a×b의 크기로 정의하였다면, a는 k보다 크거나 같고, b가 1이 되는 것이다. 후술하겠지만, 이 때에는 코드워드 생성부(160)는 단수의 코드워드를 생성한다.
[수학식 6]
Figure 112013053100052-pat00006
한편, 부호화 행렬 생성부(150)는 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에, 부호화 행렬의 크기를 입력 데이터의 길이와 상관없이 설정하여 부호화 행렬을 생성할 수도 있다.
코드워드(codeword) 생성부(160)는 부호화 행렬 생성부(150)에서 생성한 부호화 행렬을 이용하여 코드워드를 생성한다. 예를 들어, 코드워드 생성부(160)는 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 행들을 순서대로 연결하는 방식으로 코드워드를 생성한다. 또한, 코드워드 생성부(160)는 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 열들을 순서대로 연결하는 방식으로 코드워드를 생성한다.
또한 부호화 행렬 생성부(150)가 생성한 부호화 행렬의 크기가 n×n 크기일 경우, 코드워드 생성부(160)는 생성된 부호화 행렬을 이용하여 n2 길이의 코드워드를 생성한다.
코드워드 생성부(160)는 수학식 1의 부호화 행렬에 대해서 '1000000000010000000000100000000001011010000010000000000100000000001000000000010000000000100000000001'의 코드워드를 생성할 수 있으며, 수학식 5의 부호화 행렬에 대해서 '1000100000010000010110000000001011011101001010001100000100000000001001101000010000000000100000000001'의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성할 수도 있다. 또한, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 열을 코드워드로 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성할 수 있다.
예를 들어, 코드워드 생성부(160)는 수학식 1의 부호화 행렬에 대해서 '1000000000', '0100000000', '0010000000', '0001011010', '0000100000', '0000010000', '0000001000', '0000000100', '0000000010', '0000000001'인 10개의 코드워드를 생성한다.
본 발명의 다른 실시예들에 있어서, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 행 내지 제k 행의 각 행을 코드워드로 정의하여 k개의 코드워드를 생성할 수도 있다. 또한, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 열 내지 제k 열의 각 열을 코드워드로 정의하여 k개의 코드워드를 생성할 수도 있다.
예를 들어, 코드워드 생성부(160)는 수학식 1의 부호화 행렬에 대해서 '1000000000', '0100000000', '0010000000', '0001011010'인 4개의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 행 내지 제n 행의 각 행을 코드워드로 정의하여 n-k개의 코드워드를 생성할 수도 있다. 또한, 코드워드 생성부(160)는 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 열 내지 제n 열의 각 열을 코드워드로 정의하여 n-k개의 코드워드를 생성할 수 있다.
예를 들어, 코드워드 생성부(160)는 수학식 1의 부호화 행렬에 대해서 '0000100000', '0000010000', '0000001000', '0000000100', '0000000010', '0000000001'인 6개의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 코드워드 생성부(160)는 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬을 이용하여 단수 또는 복수개의 코드워드를 생성한다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬을 이용하여 단수 또는 복수개의 코드워드를 생성한다.
예를 들어 코드워드 생성부(160)는 수학식 6과 같은 부호화 행렬에 대하여는 단수의 코드워드 '0001000000'를 생성하며 수학식 1 내지 수학식 5의 부호화 행렬에 대해서는 상기 복수의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 코드워드 생성부(160)는 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 부호화 행렬을 생성하지 않고 모두 '0'으로 이루어진 코드워드를 바로 생성한다.
본 발명의 다른 실시예들에 있어서, 코드워드 생성부(160)는 부호화 행렬을 이용하여 생성한 코드워드의 길이가 m이고, 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 부호화 행렬을 생성하지 않고 상기 m이 아닌 다른 길이로 이루어진 코드워드를 생성한다.
즉, 코드워드 생성부(160)는 입력 데이터가 모두 '0'으로 이루어진 경우 부호화 행렬 생성부(150)를 거치지 않고, 모두 '0'으로 이루어진 코드워드를 생성하거나, 부호화 행렬 생성부(150)를 거친 경우의 코드워드 길이와 다른 길이의 코드워드를 생성한다.
코드워드 생성부(160)는 부호화 행렬 생성부(160)에서 생성한 부호화 행렬의 개수와 동일한 코드워드를 생성한다.
코드워드 생성부(160)는 부호화 행렬 생성부(160)에서 생성한 부호화 행렬의 개수와 다른 코드워드를 생성한다.
전송부(170)는 코드워드 생성부(160)에서 생성된 코드워드를 외부로 전송한다.
한편, 전송부(170)와 코드워드 생성부(160)는 일체로 형성될 수도 있고, 별개의 모듈로 형성될 수 있다.
이와 같이, 입력 데이터의 상대적 고밀도를 이용한 부호화 장치(100)는 데이터를 절단하고, 메시지 블록들로 블록화하는 특징, 수신한 데이터로부터 블록들 중 일부 블록만 입력 데이터로 출력하는 특징, 출력된 입력 데이터의 특징을 이용하여 상대적으로 고밀도의 행과 저밀도의 나머지 행들로 구성된 부호화 행렬을 생성하는 특징, 부호화 행렬을 이용하여 코드워드를 생성하여 전송하는 특징으로, 기존의 부호화 장치에 비하여 계산 부담을 감소시킬 수 있다.
또한, 입력 데이터의 상대적 고밀도를 이용한 부호화 장치(100)는 데이터를 절단하는 절단부(120)를 생략하고, 블록부(130)에서 메시지 블록들로 블록화하는 특징, 수신한 데이터로부터 블록들 중 일부 블록만 입력 데이터로 출력하는 특징, 출력된 입력 데이터의 특징을 이용하여 상대적으로 고밀도의 행과 저밀도의 나머지 행들로 구성된 부호화 행렬을 생성하는 특징, 부호화 행렬을 이용하여 코드워드를 생성하여 전송하는 특징으로, 기존의 부호화 장치에 비하여 계산 부담을 감소시킬 수 있다.
도 2는 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법을 설명하기 위한 순서도이다.
도 2를 참조하면, 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법에 따르면, 데이터를 수신하고(S110), 상기 데이터를 복수개의 블록들로 절단하며(S120), 절단된 블록들 중 적어도 하나의 절단된 블록으로 구성된 메시지 블록을 생성하고(S130), 상기 생성된 메시지 블록을 입력 데이터로 출력한다(S140). 상기 입력 데이터를 근거로 부호화 행렬을 생성하고(S150), 상기 부호화 행렬을 이용하여 코드워드를 생성하고(S160), 이를 외부로 전송한다(S170).
도 2에서, 상기 데이터를 복수개의 블록들로 절단하는 단계(S120)를 생략하고, 메시지 블록을 생성하며(S130), 상기 생성된 메시지 블록을 입력 데이터로 출력하고(S140), 상기 입력 데이터를 근거로 부호화 행렬을 생성하고(S150), 상기 부호화 행렬을 이용하여 코드워드를 생성하고(S160), 이를 외부로 전송할 수도 있다(S170).
상기 데이터를 수신하고, 복수개의 블록들로 절단하며, 절단된 블록들로 구성된 메시지 블록을 생성하고, 생성된 메시지 블록을 입력 데이터로 출력하는 단계는 도 1을 참조하여 상세하게 설명하였으므로 구체적인 설명은 생략하고, 입력 데이터를 근거로 부호화 행렬을 생성하는 단계부터 설명하기로 한다.
본 발명의 실시예들에 있어서, 전달받은 n 개 비트로 이루어진 입력 데이터의 특성을 이용하여 부호화 행렬을 생성한다. 구체적으로, 입력 데이터에서 최초로 '1'이 존재하는 비트가 제k 번째 비트일 경우, 제k 행(row)을 나머지 각각의 행들에 비하여 상대적인 밀도가 높도록 구성되거나, 제k 열(column)을 나머지 각각의 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성한다.
여기서, 상대적인 밀도가 높다는 것은 부호화 행렬에서의 제k 행(row) 또는 제k 열(column)에 존재하는 '1'의 개수가 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수보다 상대적으로 많도록 배열되는 것을 말한다. 다시 말하면, 부호화 행렬의 행들 간 또는 열들 간 상대적인 밀도라 함은 각 행 또는 열의 구성성분(비트, component) 중'1'의 개수가 많은 것을 의미한다.
예를 들어, 입력 데이터가 '0001011010'인 경우, '1'이 최초로 나타나는 비트가 4번째 비트이므로, 부호화 행렬의 제4 행을 다른 행보다 상대적인 밀도가 높도록 행렬을 구성하거나, 부호화 행렬의 제4 열을 다른 열보다 상대적인 밀도가 높도록 행렬을 구성한다. 다시 말하면, 제4 행 또는 제4 열에 존재하는 '1'의 개수를 다른 행 또는 열에 존재하는 '1'의 개수보다 많도록 부호화 행렬을 구성할 수 있다.
일 예로, 전달된 입력 데이터를 부호화 행렬의 제k 행(row) 또는 제k 열(column)에 입력 데이터를 그대로 배열하거나, 부호화 행렬의 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터의 '0'과 '1'을 랜덤하게 섞어서 배열하여 부호화 행렬을 생성할 수 있다.
다른 예로, 부호화 행렬의 제k 행(row) 또는 제k 열(column)에서 상기 입력 데이터의 제k 번째 이후의 비트를 모두 '1'로 구성하는 부호화 행렬을 생성할 수 있다.
또 다른 예로, 부호화 행렬의 제k 행(row) 또는 제k 열(column)의 모든 비트를 '1'로 구성하는 부호화 행렬을 생성할 수 있다.
또 다른 예로, 부호화 행렬의 제k 행(row) 또는 제k 열(column)에서 '1'과 '0'을 랜덤하게 배열하는 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성할 수 있다. 즉, 입력 데이터에서 최초로 '1'이 나타나는 비트에 대응되는 행 또는 열의 상대적인 밀도를 다른 행 또는 열에 비하여 높게 형성하면 되는 것이고, 입력 데이터에 포함된 '1'의 개수와는 상관없게 부호화 행렬을 구성하는 것이다.
본 발명의 실시예들에 있어서, 입력 데이터의 특성(최초로 '1'이 나타나나는 비트)이 반영된 상대적인 밀도가 높은 행 또는 열을 제외한 나머지 각각의 행 또는 열에는 '1'이 하나만 존재하도록 배열할 수 있다.
일 예로, 부호화 행렬을 생성하는 단계에서, 상기 k행을 제외한 나머지 행들에 존재하는 '1'을 상기 제k 행에서 최초로 '1'이 나타나는 열을 제외하고, 행의 순서 또는 열의 순서대로 각 행과 각 열에 '1'이 하나씩 존재하도록 나머지 행을 구성할 수 있다.
다른 예로, 부호화 행렬을 생성하는 단계에서, 행과 열의 순서대로 '1'이 배열되는 단위행렬 형식이 아니라, 상기 제k 행을 제외한 나머지 각 행에는 하나의 '1'이 존재하도록 부호화 행렬의 나머지 행들을 구성할 수 있다.
또 다른 예로, 부호화 행렬을 생성하는 단계에서, 행과 열의 순서대로 '1'이 배열되는 단위행렬 형식이 아니라, 상기 제k 행을 제외한 나머지 각 행에는 복수 개의 '1'들이 존재하도록 부호화 행렬의 나머지 행들을 구성할 수 있다.
본 발명의 실시예들에 있어서, 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에, 부호화 행렬 생성하는 단계에서 a×b의 크기를 갖는 부호화 행렬을 생성할 수 있다. 상기 상대적으로 밀도가 높은 열이 제k 열인 경우에 부호화 행렬 생성하는 단계에서 b×a의 크기를 갖는 부호화 행렬을 생성할 수 있다. 이 때, a는 상기 k보다 크거나 같고, b는 양의 정수이다.
본 발명의 실시예들에 있어서, 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에, 부호화 행렬 생성하는 단계에서 부호화 행렬의 크기는 입력 데이터의 길이와 상관없이 정의할 수 있다.
이어서, 코드워드 생성하는 단계에서는 생성한 부호화 행렬을 이용하여 코드워들 생성할 수 있다. 예를 들어, 코드워드 생성하는 단계에서 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 행들을 순서대로 연결하는 방식으로 코드워드를 생성한다. 또한, 코드워드 생성하는 단계에서 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 열들을 순서대로 연결하는 방식으로 코드워드를 생성한다.
코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성할 수 있다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 열을 코드워드로 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성하는 분산된 코드워드의 개념을 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성할 수도 있다.
코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 행 내지 제k 행의 각 행을 코드워드로 정의하여 k개의 코드워드를 생성할 수도 있다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제1 열 내지 제k 열의 각 열을 코드워드로 정의하여 k개의 코드워드를 생성할 수도 있다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 행 내지 제n 행의 각 행을 코드워드로 정의하여 n-k개의 코드워드를 생성한다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬에서 제k+1 열 내지 제n 열의 각 열을 코드워드로 정의하여 n-k개의 코드워드를 생성한다.
본 발명의 실시예들에 있어서, 상기 코드워드를 생성하는 단계에서, 상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬을 이용하여 단수 또는 복수개의 코드워드를 생성한다. 또한, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬을 이용하여 단수 또는 복수개의 코드워드를 생성한다.
한편, 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 부호화 행렬을 생성하지 않고 모두 '0'으로 이루어진 코드워드를 바로 생성한다.
또한 부호화 행렬을 이용하여 생성한 코드워드의 길이가 m이고, 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 부호화 행렬을 생성하지 않고 상기 m이 아닌 다른 길이로 이루어진 코드워드를 생성할 수 있다.
즉, 코드워드 생성하는 단계에서 입력 데이터가 모두 '0'으로 이루어진 경우 부호화 행렬 생성 단계를 거치지 않고, 모두 '0'으로 이루어진 코드워드를 생성하거나, 부호화 행렬 생성 단계를 거친 경우의 코드워드 길이와 다른 길이의 코드워드를 생성한다.
이어서 생성된 코드워드를 외부로 전송한다.
이와 같이, 입력 데이터의 상대적 고밀도를 이용한 부호화 방법은 입력 데이터의 특징을 이용하여 상대적으로 고밀도의 행과 저밀도의 나머지 행들로 구성된 부호화 행렬을 생성하는 특징, 부호화 행렬을 이용하여 코드워드를 생성하여 전송하는 특징으로, 기존의 부호화 방법에 비하여 계산 부담을 감소시킬 수 있다.
도 3은 본 발명의 다른 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치를 설명하기 위한 블록도이고, 도 4는 본 발명의 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법을 설명하기 위한 순서도이다.
도 3 및 도 4를 참조하면, 본 발명의 다른 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 장치(100)는 절단부(120)를 구비하지 않고 다른 방식에 의하여 수신한 데이터를 블록화하는 블록부(180)를 제외하고는 나머지 구성요소는 실질적으로 동일하므로, 절단부(120)에 대해서만 구체적으로 설명하기로 한다.
또한, 본 발명의 다른 실시예들에 따른 입력 데이터의 상대적 고밀도를 이용한 부호화 방법에 대해서도 메시지 블록을 생성하는 단계(S220)를 제외하고는 나머지 단계는 실질적으로 동일하므로, 메시지 블록을 생성하는 단계(S220)에 대해서만 구체적으로 설명하기로 한다.
본 발명의 다른 실시예에 있어서, 블록부(180)는 데이터 수신부(110)로부터 전달받은 데이터를 고정된 길이인 n개 비트로 이루어진 메시지 블록을 생성한다. 이 때, 메시지 블록의 길이는 사용자의 설정 또는 초기화 설정값 등에 따라 정해질 수 있다.
만일 수신 데이터가 100 비트이고, 메시지 블록의 길이가 30 비트로 고정되는 경우에, 메시지 블록은 30 비트이고 잔여 비트가 70 비트로 설정될 수도 있고, 각각 30 비트의 길이를 가지는 3개의 메시지 블록과 10 비트의 길이를 가지는 잔여 비트로 나누어질 수도 있다. 또한, 각각 30 비트의 길이를 가지는 3개의 메시지 블록과 나머지 10비트에 더미 비트가 채워져서 30 비트의 길이를 가지는 메시지 블록으로 구성될 수도 있다.
블록부(130)는 전달받은 데이터로부터 사전에 설정된 길이만큼 추출하고, 해당 메시지 블록을 부호화 행렬 생성부(140)로 전달한다.
블록부(130)는 메시지 블록에서 최초로 '1'이 나오는 비트까지의 데이터를 삭제하고, 상기 삭제된 비트 수 만큼을 데이터 수신부(110)로부터 전달받은 데이터에서 메시지 블록의 후속 데이터 비트들로 채운다. 여기서 메시지 블록에서 남아있는 데이터가 먼저오고 다음으로 보완되는 비트들 순으로 메시지 블록을 구성할 수 있다.
또한 블록부(130)는 상기 메시지 블록에서 상기 삭제된 데이터의 비트 수 만큼을 상기 수신한 데이터에서 메시지 블록의 후속 데이터 비트들로 채우지 못하는 경우, 상기 채우지 못하는 만큼의 데이터를 '1'로 채워서 후속 메시지 블록을 구성한다.
이와 달리, 블록부(130)는 상기 메시지 블록에서 상기 삭제된 데이터의 비트 수 만큼을 상기 수신한 데이터에서 메시지 블록의 후속 데이터 비트들로 채우지 못하는 경우, 상기 이전 메시지 블록에서 제외된 비트 수 만큼의 데이터를 후속으로 수신한 데이터부터 채워서 상기 후속 메시지 블록을 생성할 수 있다.
채우지 못하는 만큼의 데이터를 '1'로 채워서 후속 메시지 블록을 구성한다.
또는 메시지 블록에서 삭제된 데이터 비트 수만큼 상기 수신한 데이터를 이용하지 않고 비트 '1'을 사용하여 메시지 블록을 생성할 수도 있다. 따라서 후속 메시지 블록은 절단된 만큼의 비트 수가 상기 수신한 데이터로부터 메시지 블록의 후속 데이터에 이어서 보충되거나 또는 비트 '1'만을 사용하여 보충함으로써, 항상 사전에 설정된 길이를 갖도록 한다.
예를 들어, 상기 수신한 데이터의 길이가 9인 '001011010'에 대하여 메시지 블록의 길이를 5로 설정하면, 제1 메시지 블록은 '00101'이고, 상기 제1 메시지 블록을 이용하여 제1 부호화 행렬이 생성된다.
상기 제1 메시지 블록의 후속 메시지 블록인 제2 메시지 블록은 제1 메시지 블록에서 최초로 '1'이 나오는 비트까지의 데이터인 '001'을 삭제한 후 제1 메시지 블록에서 남아 있는 두 개의 비트들 '01'과 상기 수신한 데이터에서 제1 메시지 블록의 후속 데이터 '1010'에서 삭제된 3개의 비트 수 만큼 '1010'에서 순차적으로 취하여 '101'을 얻을 수 있으며 상기 제1 메시지 블록에서 남아있던 두 개의 비트들 '01'과 순차적으로 결합하면 설정된 길이가 5인 제2 메시지 블록 '01101'을 얻는다.
상기 제2 메시지 블록의 후속 메시지 블록인 제3 메시지 블록은 제2 메시지 블록에서 최초로 '1'이 나오는 비트까지의 데이터인 '01'을 삭제하면 제2 메시지 블록에서 남아 있는 세 개의 비트들 '101'에 두 개의 비트를 추가하여야 한다. 이 때, 상기 제2 메시지 블록에서 삭제된 비트 수 만큼 채우기 위해 상기 수신한 데이터에 남아있는 '0'을 제2 메시지 블록의 남아있는 '101'과 순차적으로 결합하여 '1010'을 얻을 수 있다. 그러나 설정된 메시지 블록의 길이인 5를 충족하지 못하므로 비트 '1'을 마지막에 추가하여 제3 메시지 블록 '10101'을 얻을 수 있다. 다시 말해서, 제3 메시지 블록에서 '마지막 한 개의 비트 '1'을 보충하지 않으면 상기 수신한 데이터의 잔여 데이터(비트)가 없어서, 상기 수신한 데이터로부터는 후속 메시지 블록을 채워줄 수 없다. 이와 같은 경우, 후속 메시지 블록에는 '1'로 채워진다.
제4 메시지 블록은 제3 메시지 블록에서 최초로 '1'이 나타나는 비트까지 즉 '1'을 삭제하고 제3 메시지 블록에서 남아있는 비트들 '0101'과 상기 수신한 데이터에서 제3 블록 메시지의 후속 데이터가 더 이상 없기 때문에 설정된 블록 메시지 길이를 충족하지 못하는 비트 수 만큼 '1'로서 채워간다. 따라서 제4 메시지 블록은 '01011'이 된다.
제5 메시지 블록은 제4 메시지 블록에서 최초로 '1'이 나타나는 비트까지 즉 '01'을 삭제한 후에 남아있는 있는 비트들 '011'과 추가 두 개의 비트 '11'을 순차적으로 결합하여 제5 메시지 블록은 '01111'이 된다.
그러므로 총 길이가 9인 수신 데이터 '001011010'에 대하여 제 1 메시지 블록으로부터 제5 메시지 블록이 생성된다. 상기 메시지 블록들이 생성되는 것을 정리하면 아래 표 1과 같다.
메시지 블록 보완된 후속데이터 비트 '1'로 보완
제 1 메시지 블록 00101
제 2 메시지 블록 01101 101
제 3 메시지 블록 10101 0 1
제 4 메시지 블록 01011 1
제 5 메시지 블록 01111 11
다른 한편으로 상기 수신한 데이터를 이용하지 않고 비트 '1'을 사용하여 삭제된 비트들을 보완할 수 있다.
구체적으로, 상기 수신한 데이터의 길이를 메시지 블록의 길이로 설정하면 상기 수신한 데이터 '001011010'의 길이인 9를 메시지 블록의 길이로 설정한 경우, 제1 메시지 블록은 상기 수신한 데이터와 동일하고 제2 메시지 블록은 제1 메시지 블록에서 최초로 '1'이 나타나는 비트까지 즉 '001'을 삭제한 후 제1 메시지 블록에서 남아있는 비트들 '011010'과 삭제된 비트만큼 '1'로 보완하면 제2 메시지 블록은 '011010111'이고, 제3 메시지 블록은 제2 메시지 블록에서 최초로 '1'이 나타나는 비트까지 즉 '01'을 삭제하고 제2 메시지 블록에서 남아있는 비트들 '1010111'과 삭제된 비트만큼 비트 '1'로 보완하여 제3 메시지 블록은 '101011111'이며, 제4 메시지 블록은 제3 메시지 블록에서 최초로 '1'이 나타나는 비트까지 즉 '1'을 삭제하고 제3 메시지 블록에서 남아있는 비트들 '01011111'와 삭제된 비트만큼 비트 '1'을 보완하여 제4 메시지 블록으로 '010111111'을 얻는다. 제5 메시지 블록은 제4 메시지 블록에서 최초로 '1'이 나타나는 비트까지 '01'을 삭제하고 제4 메시지 블록에서 남아있는 비트들 '0111111'와 삭제된 비트 수 만큼 비트 '1'을 보완하여 제5 메시지 블록 '01111111'을 얻는다.
그러므로 상기 수신한 데이터의 길이를 메시지 블록의 길이로 설정한 경우에는 제1 메시지 블록으로부터 제5 메시지 블록까지 생성된다. 상기 메시지 블록들이 생성되는 것을 정리하면 아래 표 2와 같다.
메시지 블록 비트 '1'로 보완
제 1 메시지 블록 001011010
제 2 메시지 블록 011010111 111
제 3 메시지 블록 101011111 11
제 4 메시지 블록 010111111 1
제 5 메시지 블록 011111111 11
또한, 상기 수신한 데이터가 복수개의 부분 수신 데이터로 분할하는 경우, 각 부분 수신 데이터에 대하여 메시지 블록을 생성하는 다양한 방법을 동시에 또는 각각 적용할 수 있다. 예를 들어, 상기 수신한 데이터보다 작은 비트 수를 갖는 부분 수신 데이터들 각각에 대해서 동일한 방법을 사용하여 메시지 블록을 생성할 수도 있고, 부분 수신 데이터들을 구성하는 비트의 종류에 따라 각각의 부분 수신 데이터들마다 다른 방법을 사용하여 메시지 블록을 생성할 수도 있다.
나아가, 상기 수신한 데이터가 복수개의 부분 수신 데이터로 분할하는 경우, 이웃하는 부분 수신 데이터로부터 이전 메시지 블록에서 삭제된 데이터의 비트 수 만큼을 이전 메시지 블록의 후속 데이터로 채워서 고정된 길이인 n 개 비트로 이루어진 후속 메시지 블록을 생성한다. 그리고 이웃하는 부분 수신 데이터로부터 이전 메시지 블록에서 삭제된 데이터의 비트 수 만큼을 전부 채우지 못하는 경우, 상기 채우지 못하는 만큼의 데이터를 비트 '1'로 채워서 고정된 길이인 n 개 비트로 이루어진 후속 메시지 블록을 생성할 수 있다. 즉, 복수의 부분 수신 데이터들이 서로 연동하여 메시지 블록을 생성하는데 사용될 수 있다.
한편, 상기 수신한 데이터의 길이와 상기 메시지 블록의 길이가 서로 동일할 수도 있다. 즉, 상기 수신한 데이터를 그대로 메시지 블록으로 사용하는 경우이다. 이 경우, 메시지 블록을 생성할 때에는 이전 메시지 블록에서 삭제된 비트에 대해서 후속 메시지 블록에 보충할 수신 데이터가 없으므로, 비트 '1'로 후속 메시지 블록을 채울 수 있다.
위와 같은 방법으로 블록부(180)가 고정된 길이의 메시지 블록을 생성하여 부호화 행렬 생성부(140)로 전달하는 경우에는, 부호화 성능을 향상시킬 수 있다.
위에서 설명한, 실시예는 구체적인 설명을 위하여 기본적인 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치의 구조 및 과정을 예를 들어 서술한 것일 뿐, 그에 한정되는 것은 아니다. 본 발명이 속하는 기술 분야의 통상의 지식을 가진 당업자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100 : 부호화 장치 110 : 데이터 수신부
120 : 절단부 130 : 블록부
140 : 입력 데이터 출력부 150 : 부호화 행렬 생성부
160 : 코드워드 생성부 170 : 전송부

Claims (47)

  1. 복수의 n(n>1)개 비트로 이루어진 입력 데이터에서 최초의 '1'이 제k 번째 비트일 경우, 제k 행(row) 또는 제k 열(column)에 존재하는 '1'의 개수가 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수보다 상대적으로 많도록 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성하는 단계;
    상기 부호화 행렬을 이용하여 코드워드(codeword)를 생성하는 단계; 및
    상기 생성된 코드워드를 전송하는 단계를 포함하되,
    상기 부호화 행렬을 이용하여 상기 코드워드를 생성하는 단계는
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 행들을 순서대로 연결하는 방식으로 코드워드 를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 열들을 순서대로 연결하는 방식으로 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 열을 코드워드로 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제1 행 내지 제k 행의 각 행을 코드워드로 정의하여 k 개의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제1 열 내지 제k 열의 각 열을 코드워드로 정의하여 k 개의 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제k+1 행 내지 제n 행의 각 행을 코드워드로 정의하여 n-k 개의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제k+1 열 내지 제n 열의 각 열을 코드워드로 정의하여 n-k 개의 코드워드를 생성하는 방식 중에서 선택된 하나의 방식으로 코드워드를 생성하는 방식 중 선택된 하나의 방식에 의하여 코드워드를 생성하는 것(여기서, 입력 데이터의 n개 비트가 모두 ‘0’으로만 이루어진 경우를 제외한다)을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계에서
    상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터를 그대로 배열하는 방법과 상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터의 '0'과 '1'을 랜덤하게 섞어서 배열하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  4. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계에서
    상기 제k 행(row) 또는 제k 열(column)에서 상기 입력 데이터의 제k 번째 비트부터 모두 '1'로 구성하는 방법과 상기 제k 행(row) 또는 제k 열(column)의 모든 비트를 '1'로 구성하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  5. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계에서
    상기 제k 행(row) 또는 제k 열(column)에서 입력 데이터 길이와 동일한 n개 비트로 이루어진 랜덤데이터를 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 부호화 행렬을 생성하는 단계에서
    상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 행들 또는 열들 각각은 '1'이 하나만 존재하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  7. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 부호화 행렬을 생성하는 단계에서
    상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수와 상기 k 행 또는 제k 열에 존재하는 '1'의 개수가 상대적으로 차이가 나도록 부호화 행렬을 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  8. 제1항에 있어서,
    상기 부호화 행렬에서 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에 상기 부호화 행렬의 크기는 a×b이고, 상기 상대적으로 밀도가 높은 열이 제k 열인 경우에 상기 부호화 행렬의 크기는 b×a이며, 여기서, a는 상기 k보다 크거나 같고, b는 양의 정수인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  9. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에
    외부로부터 데이터를 수신하는 단계;
    상기 수신한 데이터를 최초의 비트를 기준으로 '1'이 나오는 비트가 나올 때마다 상기 '1'이 존재하는 비트와 다음 비트 사이를 절단(chopping)하여 복수개의 절단된 블록들로 생성하는 단계;
    상기 절단된 블록들 중 적어도 하나의 절단된 블록으로 구성된 메시지 블록을 생성하는 단계; 및
    상기 생성된 메시지 블록들 중에서 적어도 하나의 '1'을 포함하는 메시지 블록들을 입력 데이터로 출력하는 단계를 더 포함하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  10. 삭제
  11. 제9항에 있어서, 상기 메시지 블록을 생성하는 단계에서
    상기 메시지 블록은 상기 절단된 블록들 전체로 구성된 제1 메시지 블록과, 상기 제1 메시지 블록에서 상기 절단된 블록을 하나씩 제거하여 생성된 제2 메시지 블록 내지 제c 메시지 블록들로 이루어지는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  12. 제11항에 있어서, 상기 메시지 블록을 입력 데이터로 출력하는 단계는
    상기 제1 메시지 블록 내지 제c 메시지 블록을 순서대로 입력 데이터로 출력하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  13. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에
    외부로부터 데이터를 수신하는 단계;
    상기 수신한 데이터를 이용한 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제된 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 단계; 및
    상기 메시지 블록을 순서대로 입력 데이터로 출력하는 단계를 더 포함하되,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 나머지 비트들로 구성되는 과정이 상기 제1 메시지 블록에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  14. 삭제
  15. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에
    외부로부터 데이터를 수신하는 단계;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 상기 수신한 데이터에서 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 단계; 및
    상기 메시지 블록을 상기 생성된 입력 데이터로 출력하는 단계를 더 포함하고,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 상기 수신한 데이터로부터 채우는 과정이 상기 수신한 데이터에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하고,
    상기 제i 메시지 블록을 생성하는 단계에서
    상기 수신한 데이터로부터 상기 제i 메시지 블록을 n개 비트로 구성하기 위한 데이터의 비트 수가 부족한 경우, 상기 제i-1 메시지 블록에서 제외된 비트 수 만큼의 데이터를 '1'로 채워서 상기 후속 메시지 블록을 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  16. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에
    외부로부터 데이터를 수신하는 단계;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 상기 수신한 데이터에서 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 단계; 및
    상기 메시지 블록을 상기 생성된 입력 데이터로 출력하는 단계를 더 포함하고,
    상기 제i 메시지 블록을 생성하는 단계에서
    상기 수신한 데이터로부터 상기 제i 메시지 블록을 n개 비트로 구성하기 위한 데이터의 비트 수가 부족한 경우, 상기 제i-1 메시지 블록에서 제외된 비트 수 만큼의 데이터를 후속으로 추가 수신한 데이터로부터 채워서 상기 후속 메시지 블록을 생성하는 것을 특징으로 하고,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 상기 수신한 데이터로부터 채우는 과정이 상기 수신한 데이터 및 상기 추가 수신한 데이터에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  17. 제1항에 있어서, 상기 부호화 행렬을 생성하는 단계 이전에
    외부로부터 데이터를 수신하는 단계;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 ‘1’을 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 단계; 및
    상기 메시지 블록을 상기 생성된 입력 데이터로 출력하는 단계를 더 포함하고,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 ‘1’을 채우는 과정이 상기 제1 메시지 블록에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 제1항에 있어서, 상기 코드워드를 생성하는 단계에서
    입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬을 생성하지 않고 모두 '0'으로 이루어진 코드워드(codeword)를 바로 생성하는 것을 특징으로 하는 특정 밀도를 기반으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  23. 제1항에 있어서, 상기 코드워드를 생성하는 단계에서
    상기 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬을 생성하지 않고 그렇지 않은 경우(상기 입력 데이터가 적어도 하나의 ‘1’을 포함하는 경우)와 다른 길이로 이루어진 코드워드(codeword)를 생성하는 것을 특징으로 하는 특정 밀도를 기반으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 방법.
  24. 복수의 n(n>1)개 비트로 이루어진 입력 데이터에서 최초의 '1'이 제k 번째 비트일 경우, 제k 행(row) 또는 제k 열(column)에 존재하는 '1'의 개수가 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수보다 상대적으로 많도록 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성된 부호화 행렬을 생성하는 부호화 행렬 생성부;
    상기 부호화 행렬을 이용하여 코드워드(codeword)를 생성하는 코드워드 생성부; 및
    상기 생성한 코드워드를 외부로 전송하는 코드워드 전송부를 포함하되,
    상기 코드워드 생성부는
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 행들을 순서대로 연결하는 방식으로 코드워드 를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 열들을 순서대로 연결하는 방식으로 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 행을 코드워드로 정의하여 부호화 행렬의 행의 수만큼의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 각 열을 코드워드로 정의하여 부호화 행렬의 열의 수만큼의 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제1 행 내지 제k 행의 각 행을 코드워드로 정의하여 k 개의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제1 열 내지 제k 열의 각 열을 코드워드로 정의하여 k 개의 코드워드를 생성하는 방식,
    상기 부호화 행렬의 제k 행이 나머지 행들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제k+1 행 내지 제n 행의 각 행을 코드워드로 정의하여 n-k 개의 코드워드를 생성하고, 상기 부호화 행렬의 제k 열이 나머지 열들에 비하여 상대적인 밀도가 높도록 구성된 경우에는 상기 부호화 행렬의 제k+1 열 내지 제n 열의 각 열을 코드워드로 정의하여 n-k 개의 코드워드를 생성하는 방식 중에서 선택된 하나의 방식으로 코드워드를 생성하는 방식 중 선택된 하나의 방식에 의하여 코드워드를 생성하는 것(여기서, 입력 데이터의 n개 비트가 모두 ‘0’으로만 이루어진 경우를 제외한다)을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  25. 삭제
  26. 제24항에 있어서,
    상기 부호화 행렬 생성부는 상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터를 상기 제k 행(row) 또는 제k 열(column)로 그대로 배열하는 방법과 상기 제k 행(row) 또는 제k 열(column)에 상기 입력 데이터의 '0'과 '1'을 랜덤하게 섞어서 배열하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  27. 제24항에 있어서,
    상기 부호화 행렬 생성부는 상기 제k 행(row) 또는 제k 열(column)에서 상기 입력 데이터의 제k 번째 비트부터 모두 '1'로 구성하는 방법과 상기 제k 행(row) 또는 제k 열(column)의 모든 비트를 '1'로 구성하는 방법 중 어느 하나의 방법을 이용하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  28. 제24항에 있어서,
    상기 부호화 행렬 생성부는 상기 제k 행(row) 또는 제k 열(column)에서 입력 데이터 길이와 동일한 n개 비트로 이루어진 랜덤데이터를 배열하여 상기 제k 행(row) 또는 제k 열(column)을 나머지 각각의 행들 또는 열들에 비하여 상대적인 밀도가 높도록 구성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  29. 제26항 내지 제28항 중 어느 한 항에 있어서,
    상기 부호화 행렬 생성부는 상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 각각의 행들 또는 열들에는 '1'이 하나만 존재하도록 상기 부호화 행렬을 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  30. 제26항 내지 제28항 중 어느 한 항에 있어서,
    상기 부호화 행렬 생성부는 상대적으로 밀도가 높은 제k 행 또는 제k 열을 제외한 나머지 각각의 행들 또는 열들에 존재하는 '1'의 개수와 상기 k 행 또는 제k 열에 존재하는 '1'의 개수가 상대적으로 차이가 나도록 부호화 행렬을 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  31. 제24항에 있어서,
    상기 부호화 행렬에서 상기 상대적으로 밀도가 높은 행이 제k 행인 경우에 상기 부호화 행렬의 크기는 a×b이고, 상기 상대적으로 밀도가 높은 열이 제k 열인 경우에 상기 부호화 행렬의 크기는 b×a이며, 여기서, a는 상기 k보다 크거나 같고, b는 양의 정수인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  32. 제24항에 있어서,
    외부로부터 데이터를 수신하는 데이터 수신부;
    상기 수신한 데이터를 최초의 비트를 기준으로 '1'이 나오는 비트가 나올 때마다 상기 '1'이 존재하는 비트와 다음 비트 사이를 절단(chopping)하여 복수개의 절단된 블록들로 생성하는 절단부;
    상기 절단된 블록들 중 적어도 하나의 절단된 블록으로 구성된 메시지 블록을 생성하는 블록부; 및
    상기 생성된 메시지 블록들 중에서 적어도 하나의 '1'을 포함하는 메시지 블록들을 입력 데이터로 출력하는 입력 데이터 출력부를 더 포함하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  33. 삭제
  34. 제32항에 있어서,
    상기 블록부가 생성한 상기 메시지 블록은 상기 절단된 블록들 전체로 구성된 제1 메시지 블록과, 상기 제1 메시지 블록에서 상기 절단된 블록을 하나씩 제거하여 생성된 제2 메시지 블록 내지 제c 메시지 블록들로 이루어지는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  35. 제34항에 있어서,
    상기 입력 데이터 출력부는 상기 제1 메시지 블록 내지 제c 메시지 블록을 순서대로 입력 데이터로 출력하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  36. 제24항에 있어서,
    외부로부터 데이터를 수신하는 데이터 수신부;
    상기 수신한 데이터를 이용하여 제1 메시지 블록으로 생성하고, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제된 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 메시지 블록을 생성하는 블록부; 및
    상기 생성된 메시지 블록을 순서대로 입력 데이터로 출력하는 입력 데이터 출력부를 더 포함하되,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 나머지 비트들로 구성되는 과정이 상기 제1 메시지 블록에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  37. 삭제
  38. 제24항에 있어서,
    외부로부터 데이터를 수신하는 데이터 수신부;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 상기 수신한 데이터에서 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 블록부; 및
    상기 생성된 메시지 블록을 순서대로 입력 데이터로 출력하는 입력 데이터 출력부를 더 포함하고,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 상기 수신한 데이터로부터 채우는 과정이 상기 수신한 데이터에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하고,
    상기 블록부가 상기 수신한 데이터로부터 상기 제i 메시지 블록을 n개 비트로 구성하기 위한 데이터의 비트 수가 부족한 경우, 상기 제i-1 메시지 블록에서 제외된 비트 수 만큼의 데이터를 '1'로 채워서 상기 후속 메시지 블록을 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  39. 제24항에 있어서,
    외부로부터 데이터를 수신하는 데이터 수신부;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 상기 수신한 데이터에서 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 블록부; 및
    상기 생성된 메시지 블록을 순서대로 입력 데이터로 출력하는 입력 데이터 출력부를 더 포함하고,
    상기 블록부가 상기 수신한 데이터로부터 상기 제i 메시지 블록을 n개 비트로 구성하기 위한 데이터의 비트 수가 부족한 경우, 상기 제i-1 메시지 블록에서 제외된 비트 수 만큼의 데이터를 후속으로 추가 수신한 데이터로부터 채워서 상기 후속 메시지 블록을 생성하는 것을 특징으로 하고,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 상기 수신한 데이터로부터 채우는 과정이 상기 수신한 데이터 및 상기 추가 수신한 데이터에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  40. 제24항에 있어서,
    외부로부터 데이터를 수신하는 데이터 수신부;
    상기 수신한 데이터를 이용하여 상기 수신한 데이터의 비트 수와 동일하거나 작은 n개 비트로 이루어진 제1 메시지 블록과, 상기 제1 메시지 블록에서 적어도 하나의 비트가 삭제되고 상기 삭제된 비트 수만큼 ‘1’을 채워서 n개 비트를 유지하는 후속 메시지 블록인 제i(i>1) 메시지 블록을 포함하는 메시지 블록을 생성하는 블록부; 및
    상기 블록부에서 생성한 메시지 블록을 입력 데이터로 출력하는 입력 데이터 출력부를 더 포함하되,
    상기 제i 메시지 블록은
    제i-1 메시지 블록으로부터 최초의 ‘1’을 기준으로 최초의 ‘1’과 그 ‘1’앞에 있는 ‘0’비트들을 포함하여 삭제한 후에 삭제된 만큼의 비트 수 만큼 ‘1’을 채우는 과정이 상기 제1 메시지 블록에 포함된 ‘1’의 개수와 동일한 횟수 또는 ‘1’의 개수보다 하나 작은 횟수만큼 반복되어 생성되는 메시지 블록인 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 제24항에 있어서,
    입력 메시지의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬 생성부를 거치지 않고 상기 코드워드 생성부가 모두 '0'으로 이루어진 코드워드(codeword)를 바로 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  46. 제24항에 있어서, 상기 코드워드 생성부는
    상기 입력 데이터의 n개 비트가 모두 '0'으로만 이루어진 경우에는 상기 부호화 행렬을 생성하지 않고 그렇지 않은 경우(상기 입력 데이터가 적어도 하나의 ‘1’을 포함하는 경우)와 다른 길이로 이루어진 코드워드(codeword)를 생성하는 것을 특징으로 하는 입력 데이터의 상대적 고밀도를 이용한 부호화 장치.
  47. 삭제
KR1020130068471A 2013-06-14 2013-06-14 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치 KR101613984B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130068471A KR101613984B1 (ko) 2013-06-14 2013-06-14 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치
PCT/KR2014/005114 WO2014200259A1 (ko) 2013-06-14 2014-06-11 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130068471A KR101613984B1 (ko) 2013-06-14 2013-06-14 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR20150010497A Division KR20150037772A (ko) 2015-01-22 2015-01-22 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20140145825A KR20140145825A (ko) 2014-12-24
KR101613984B1 true KR101613984B1 (ko) 2016-04-20

Family

ID=52022486

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130068471A KR101613984B1 (ko) 2013-06-14 2013-06-14 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치

Country Status (2)

Country Link
KR (1) KR101613984B1 (ko)
WO (1) WO2014200259A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100989860B1 (ko) 2008-02-12 2010-10-29 전북대학교산학협력단 블록 길이를 유지하면서 부호화율을 낮추는 행 분할 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030142742A1 (en) * 2002-01-30 2003-07-31 Rf Saw Components, Incorporated Modulation by combined multi-pulse per group with simultaneous phase and time shift keying and method of using the same
US8233545B2 (en) * 2006-08-21 2012-07-31 Texas Instruments Incorporated Run length encoding in VLIW architecture
JP5397179B2 (ja) * 2009-11-17 2014-01-22 富士通株式会社 データ符号化プログラム、データ復号化プログラムおよび方法
KR20120121144A (ko) * 2011-04-26 2012-11-05 삼성전자주식회사 무선통신 시스템에서 데이터 송?수신 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100989860B1 (ko) 2008-02-12 2010-10-29 전북대학교산학협력단 블록 길이를 유지하면서 부호화율을 낮추는 행 분할 방법

Also Published As

Publication number Publication date
WO2014200259A1 (ko) 2014-12-18
KR20140145825A (ko) 2014-12-24

Similar Documents

Publication Publication Date Title
KR101701083B1 (ko) 순환 버퍼를 포함하는 장치 및 순환 버퍼에 리던던시 버전들을 할당하는 방법
KR100808664B1 (ko) 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
US8631299B2 (en) Error correction encoding method and device, and communication system using the same
CN101073205B (zh) 低密度奇偶校验编码器和解码器以及低密度奇偶校验编码和解码方法
CN108400838B (zh) 数据处理方法及设备
KR101366284B1 (ko) 골레이 부호를 이용한 블록 부호 생성 방법, 데이터 부호화방법 및 데이터 부호화 장치
KR100949519B1 (ko) 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법
KR100970645B1 (ko) 블록 코드를 이용한 다양한 길이를 가진 정보의 채널 코딩방법
KR101702358B1 (ko) 저밀도 패리티 검사 코드를 사용하는 통신 시스템에서의 채널 부호화/복호화 방법 및 장치
KR20130052506A (ko) 멀티미디어 통신 시스템에서 준순환 저밀도 패리티 검사 부호 송/수신 장치 및 방법
KR20220142404A (ko) 고정 길이 시그널링 정보 부호화를 위한 제로 패딩 장치 및 이를 이용한 제로 패딩 방법
CN107408951A (zh) 发送器及其奇偶校验置换方法
CN107592959A (zh) 发送器及其缩减方法
KR102453475B1 (ko) 가변 길이 시그널링 정보 부호화를 위한 제로 패딩 장치 및 이를 이용한 제로 패딩 방법
KR102453471B1 (ko) 고정 길이 시그널링 정보 부호화를 위한 제로 패딩 장치 및 이를 이용한 제로 패딩 방법
JP5371623B2 (ja) 通信システム及び受信装置
CN107567686A (zh) 发送器及其用于产生附加奇偶校验的方法
CN107733441B (zh) 编码方法及装置、译码方法及装置
KR101425506B1 (ko) 보완적인 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
KR101772008B1 (ko) 통신 및 방송시스템에서 송수신 방법 및 장치
KR101613984B1 (ko) 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치
CN107408950A (zh) 发送器及其奇偶校验置换方法
KR20090064709A (ko) Ldpc 부호의 패리티 검사 행렬 생성 장치 및 그방법과, 그를 이용한 ldpc 부/복호화 장치
KR20150037772A (ko) 입력 데이터의 상대적 고밀도를 이용한 부호화 방법 및 장치
KR101493999B1 (ko) 선형 부호 생성 장치 및 방법

Legal Events

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