KR101545565B1 - 최대 유사성 복호화 장치 및 방법 - Google Patents

최대 유사성 복호화 장치 및 방법 Download PDF

Info

Publication number
KR101545565B1
KR101545565B1 KR1020080122630A KR20080122630A KR101545565B1 KR 101545565 B1 KR101545565 B1 KR 101545565B1 KR 1020080122630 A KR1020080122630 A KR 1020080122630A KR 20080122630 A KR20080122630 A KR 20080122630A KR 101545565 B1 KR101545565 B1 KR 101545565B1
Authority
KR
South Korea
Prior art keywords
matrix
row
score
maximum
blocked
Prior art date
Application number
KR1020080122630A
Other languages
English (en)
Other versions
KR20100064180A (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 KR1020080122630A priority Critical patent/KR101545565B1/ko
Publication of KR20100064180A publication Critical patent/KR20100064180A/ko
Application granted granted Critical
Publication of KR101545565B1 publication Critical patent/KR101545565B1/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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes

Abstract

본 발명은 최대 유사성 복호화 장치 및 방법에 관한 것이다.
본 발명은 랩터 코드의 최대 유사성 복호화 장치에 있어서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기; 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기; 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기를 포함하는 것을 특징으로 하는 최대 유사성 복호화 장치를 제공한다.
본 발명에 의하면, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄일 수 있다.
랩터, 코드, 최대, 유사성, 복호화, 스코어, 탐색, 가우스, 소거법

Description

최대 유사성 복호화 장치 및 방법{Maximum Likelihood Decoding Apparatus and Method}
본 발명은 최대 유사성 복호화 장치 및 방법에 관한 것이다. 더욱 상세하게는, 3GPP(The 3rd Generation Partnership Project) MBMS(Multimedia Broadcast and Multicast Service)에 채택된 오류 정정 부호인 랩터 코드(Raptor Code)를 복호화하는 데 있어서, 최대 유사성 복호화(Maximum Likelihood Decoding)를 이용하면서도 복호화에 요구되는 시간을 줄일 수 있는 복호화하는 장치 및 방법에 관한 것이다.
3GPP MBMS에 채택된 오류 정정 부호인 랩터 코드(Raptor Code)는 최대 유사성 복호화(Maximum Likelihood Decoding) 방법에 의해 효율적으로 복호화될 수 있다. 여기서, 최대 유사성 복호화란 원래의 정보를 복원하기 위한 최상의 방법을 의미하는 것으로, 복호화할 때 요구되는 시간과 공간이 매우 적기 때문에 효율적으로랩터 코드를 효율적으로 복호화할 수 있다.
3GPP TS 26.346 V7.4.0,"Technical specification group services and system aspects;multimedia broadcast/multicast service;protocols and codecs, June 2007"는 3GPP 표준 문서로서, 랩터 코드(Raptor Code)에 대해 설명하고 있다. 이 표준 문서에서 제안하고 있는 최대 유사성 복호화(Maximum Likelihood Decoding) 방법은 4개의 페이즈(Phase)로 나누어져 있다. 이 표준에서 제안하는 4 개의 페이즈 중에서 첫 번째 페이즈가 가장 핵심적인 부분이라고 할 수 있으며, 첫 번째 페이즈와 두 번째 페이즈에서 소요되는 시간이 전체 복호화 시간의 95% 이상을 차지하는데, 두 개의 페이즈에서 필요 이상으로 많은 시간을 필요로 하여 복호화 시간을 크게 지연시키는 문제점이 있다.
전술한 문제점을 해결하기 위해 본 발명은, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄이는 데 주된 목적이 있다.
전술한 목적을 달성하기 위해 본 발명은, 랩터 코드의 최대 유사성 복호화 장치에 있어서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기; 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기; 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기를 포함하는 것을 특징으로 하 는 최대 유사성 복호화 장치를 제공한다.
또한, 본 발명의 다른 목적에 의하면, 랩터 코드의 최대 유사성 복호화 방법에 있어서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성 단계; 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성 단계; 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산 단계를 포함하는 것을 특징으로 하는 최대 유사성 복호화 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄일 수 있다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
A. 3GPP 표준에 따른 최대 유사성 복호화 방법
3GPP(The 3rd Generation Partnership Project) 표준에 따라 랩터 코드(Raptor Code)를 최대 유사성 복호화(Maximum Likelihood Decoding)하는 방법은 'Ac=r'이라는 방정식의 해를 구하는 것이다. 여기서, A는 MxL(단, M ≥ L) 매트릭스(Matrix)를 나타내고, c는 길이가 L인 벡터, r는 길이가 M인 벡터이다. A와 r은 이미 알고 있으며, 이들을 이용하여 위의 방정식이 유효하게 되는 c를 찾는 것이 최대 유사성 복호화의 문제라고 할 수 있다.
매트릭스 A의 첫 번째 L 행들(Rows)을 대각선화하면(Diagonalize), c를 구할 수 있다. 3GPP 표준에서 제안하는 최대 유사성 복호화 방법은 매트릭스 A의 첫 번째 L 행들을 효율적으로 대각선화하는 방법을 설명한다.
도 1은 매트릭스 A에 대해 첫 번째 페이즈를 수행한 결과인 MxL 매트릭스를 나타낸 예시도이다.
우선, 3GPP 표준에 따라 첫 번째 페이즈(Phase)를 수행하면, 원래의 매트릭스 A는 도 1에 도시한 바와 같은 형태의 MxL 매트릭스로 변하게 된다. 도 1에서, I 는 단위 행렬(Identity Matrix)를 나타내고, I 행렬 아래의 'all zero'는 모두 원소가 '0'인 매트릭스를 나타낸다. 오른쪽의 두 개의 서브매트릭스(Submatrices) U1, U2는 각각 왼쪽 서브매트릭스 I 및 all zeros를 생성하면서 얻어진 나머지 매트릭스들이다. 기본 행 연산(Elementary Row Operations)과 컬럼 교환(Column Exchanges)를 통하여 이런 형태의 매트릭스를 얻을 수 있다. 만일, 서브매트릭스 U1과 U2가 u개의 열을 차지한다면, 두 개의 서브매트릭스 U1과 U2가 차지하고 있는 Mxu 서브매트릭스를 서브매트릭스 U라고 가정한다.
도 2는 MxL 매트릭스에 대해 두 번째 페이즈를 수행한 결과인 LxL 매트릭스를 나타낸 예시도이다.
3GPP 표준의 두 번째 페이즈는 서브매트릭스 U2를 일반적인 가우스 소거법(Gaussian Elimination)을 통하여 마지막 M-L 행을 지운 후, 단위 행렬로 변환시킨다. 두 번째 페이즈가 수행되면, 도 1에 도시한 형태의 매트릭스는 도 2에 도시한 바와 같은 LxL 매트릭스로 변형된다.
3GPP 표준의 세 번째 페이즈 및 네 번째 페이즈는 오른쪽 아랫부분의 I 매트릭스를 이용하여 U1을 모든 원소가 '0'인 매트릭스로 변환시킨다. 이러한 변환이 완료되면 원래의 매트릭스 A는 단위 행렬로 변환되며, 결과적으로 c를 구할 수 있다.
B. 3GPP 표준에 따른 최대 유사성 복호화 방법의 문제점
3GPP 표준에서 제안하는 최대 유사성 복호화 방법에 따르면, 첫 번째 페이즈 에서 최대 컴포넌트 탐색(MCS: Maximum Component Search)을 실행해야 하는데, 이 작업은 상당한 시간을 소요한다. 또한, 두 번째 페이즈에서 가우스 소거법(Gaussian Elimination)을 이용하여 서브매트릭스 U2를 단위 행렬로 변형하는 과정에서, 구현을 최적화할 수 있는 여지가 있다. 마지막으로, 원래의 매트릭스 A를 단위 행렬로 변형시켜 벡터 c를 찾는데, 이 방법은 시간적인 관점에서 벡터 c를 찾기 위한 최상의 방법이 아니다.
C. 본 발명의 일 실시예에 따른 최대 유사성 복호화 방법
본 발명에서 제안하는 랩터 코드의 최대 유사성 복호화 방법은 다음과 같은 5 개의 사항을 기반으로 한다.
1. 매트릭스 A는 대체로 '1'의 개수가 상당히 희박한(Sparse) 성질이 있으므로, 매트릭스 자체를 이용하여 복호화하지 않고, 각각의 행/열에 존재하는 '1'의 위치만을 저장하여 복호화한다. 이를 통하여 복호화할 때 필요한 공간의 크기를 상당히 줄일 수 있을 뿐만 아니라, 복호화하는 과정에서 매우 자주 있는 특정 조건을 만족하는 행을 탐색하는 데에 걸리는 시간을 상당히 줄일 수 있기 때문에, 전체적인 복호화 시간을 크게 향상시킬 수 있다.
도 3은 본 발명의 일 실시예에 따라 표현된 매트릭스 A를 나타낸 예시도이다.
도 3을 참조하면, Ac=r 방정식에서 매트릭스 A를 도 3에 도시한 바와 같이, Cidx[1], …, Cidx[L], Ridx[1], …, Ridx[M]로 표현할 수 있다. 여기서 Cidx[i]는 i 번째 열에 있는 '1'의 행의 위치를 나타내며, Ridx[j]는 j 번째 행에 있는 '1'의 열의 위치를 나타낸다. 추가로, Cidx[i].Deg는 i열의 '1'의 개수를 나타내며, Cidx[i].Edge는 i열에 있는 모든 '1'의 행의 위치를 나타내며, Cidx[i].Edge[k]는 i열의 k번째 '1'의 행의 위치를 나타낸다. Ridx[j].Deg는 j행의 '1'의 개수를 나타내며, Ridx[j].iDeg는 복호화를 시작하기 전의 j행의 '1'의 개수를 나타내며, Ridx[j].Edge는 j행에 있는 모든 '1'의 열의 위치를 나타내며, Ridx[j].Edge[l]는 j행의 l 번째 '1'의 열의 위치를 나타내며, Ridx[j].score는 j행의 스코어(Score)에 대한 정보를 나타낸다. 스코어에 대해서는 후술하는 과정에서 설명한다.
2. 최대 유사성 복호화의 목적은 벡터 c를 구하는 것이다. 이를 위해 3GPP 표준과 같이, 매트릭스 A를 단위 행렬로 변환하여 c를 구할 수도 있지만, 이 경우 복호화에 많은 시간이 소요된다. 본 발명의 일 실시예에서는 매트릭스 A를 단위 행렬로 변형하지 않고, 각각의 행/열에 정확히 하나의 '1'만이 존재하는 매트릭스로 변형하는 것이다. 이와 같이 매트릭스가 변형되어도 벡터 c를 구할 수 있다.
3. Ridx/Cidx를 사용하여 탐색하면 매트릭스 상에서 탐색하는 것보다 많은 시간을 줄일 수 있다. 하지만, Ridx/Cidx에서 삭제가 있을 경우 정렬된 상태의 Ridx/Cidx를 유지하려면 많은 시간이 소요된다. 따라서, Cidx.Eidx와 Ridx.iDeg를 사용한다. Cidx.Eidx는 수학식 1과 같이 정의되며, 복호화를 시작하기 전에 수학식 1과 같이 미리 만들어 둔다.
Cidx[i].Edge[j]=k, Ridx[k].Edge[x]=i → Cidx[i].Eidx[j]=x
복호화를 시작하고 Cidx.Eidx를 이용하면, Ridx[k].Edge를 탐색하지 않고 수학식 2와 같이, 상수 시간 안에 행의 인덱스(Index)를 삭제할 수 있다.
Cidx[i].Edge[j]=k, Cidx[i].Eidx[j]=x → Ridx[k].Edge[x]=-1
도 4는 본 발명의 일 실시예에 따라 복호화가 진행된 상태의 임의의 Ridx[k]를 나타낸 예시도이다.
도 4를 참조하면, Ridx[k].Edge에 '-1'이 있는데, 이는 삭제된 인덱스이고, Ridx[k].Deg가 Ridx[k].iDeg보다 작은 것을 알 수 있다. Ridx.Edge를 탐색할 때는 iDeg만큼 탐색하고, '-1'로 해당 인덱스가 유효한지 여부를 검사하여 원하는 인덱스를 찾을 수 있다. 인덱스에서의 탐색 시간은 매트릭스에서의 탐색 시간보다 훨씬 작고, 삭제 시간도 O(1)에 할 수 있기 때문에, 프로그램의 속도를 크게 향상시킬 수 있다. 이 방법은 삭제만 일어나는 부분에서만 사용할 수 있으며, 매트릭스 U에서는 다른 방법을 사용해야 한다.
4. 최대 컴포넌트 탐색 대신 최대 스코어 탐색(LSS: Largest Score Search)를 실행한다. 기존의 최대 컴포넌트 탐색은 매트릭스 U의 크기를 줄이지만, 탐색에 너무 많은 시간이 소요되어, 결과적으로 전체 프로그램의 속도를 저하한다. 최대 스코어 탐색 방법은 최대 컴포넌트 탐색 방법보다 매트릭스 U의 크기를 작게 줄이지만, 디그리(Degree)가 '2'인 행을 탐색하는 속도를 급격히 향상시키므로, 전체 프로그램 속도를 향상시킨다. 최대 스코어 탐색은 크게 세 개의 파트(Part)로 나누어 구현된다.
(1) 파트 1: 초기 스코어(Initial Score)
파트 1에서는 최대 스코어 탐색을 위한 전 처리 단계로서, 복호화를 시작하기 전에 모든 행의 스코어의 값을 계산하고, 디그리가 '2'인 행에 대하여 스코어를 키(Key)로 가지는 스코어 테이블(Score-Table)을 구성한다.
1a. 초기 상태(Initial State)에서 각 행의 스코어는 행의 인덱스에 있는 열의 디그리의 합이다.
도 5는 초기 매트릭스의 각 행의 스코어의 값을 계산하는 과정을 설명하기 위한 예시도이다.
도 5를 참조하면, Ridx[2].Deg=3이고, Ridx[2].Edge[0]=1이고, Ridx[2].Edge[1]=4이고 , Ridx[2].Edge[2]=8이므로, 도 5에 도시한 바와 같은 초기 매트릭스의 세 번째 행의 스코어의 값은 수학식 3에 나타낸 바와 같이, 세 번째 행의 인덱스에 있는 열의 디그리의 합으로 계산된다.
Ridx[2].score = Cidx[1].Deg + Cidx[4].Deg + Cidx[8].Deg
1b. 행의 디그리가 '2'일 때, Ridx.score를 키로 사용하여 스코어 테이블에 행의 인덱스를 삽입한다. 그리고 전체에서 디그리가 '2'인 행 중에서 가장 큰 스코 어를 최대 스코어(Max Score)에 저장한다.
도 6은 본 발명의 일 실시예에 따른 스코어 테이블을 나타낸 예시도이다.
도 6을 참조하면, 제일 첫 번째 줄의 13(2, 2)에서 '13'은 스코어 또는 키를 뜻하며, 첫 번째 '2'는 행 디그리가 '2'인 행의 수이며, 두 번째 '2'는 첫 번째 줄에 속한 행의 개수이다. 처음으로 스코어 테이블을 생성할 때에는 가로 안의 두 숫자 d1, d2가 같은 값을 가진다. '31'과 '78'은 스코어를 '13'으로 가지는 행과 디그리가 '2'인 행의 인덱스이다. 도 6에서 최대 스코어는 '30'이다.
(2) 파트 2: Ridx.score & 스코어 테이블 업데이트(Score-Table Update)
첫 번째 페이즈에서 디그리가 '2'인 행을 선택하여 처리할 때, 처리하기 전 디그리가 '2'였던 행들 중 많은 행들의 개수가 처리 후 디그리가 감소한다. 또한, 처리하기 전 디그리가 '2'보다 컸던 행들 중 많은 수가 디그리가 감소하여 디그리가 '2'가 된다. 이 때문에 스코어 테이블에 있는 행의 인덱스 중에는 Ridx[i].Deg가 '2'가 아닌 인덱스가 발생한다.
따라서, 스코어 테이블에 있는 모든 인덱스에 해당하는 행의 디그리가 '2'가 되도록 유지하려면, 삽입 및 삭제에 많은 시간이 소요되는 문제점이 있다. 이 문제점을 해결하기 위해 업데이트할 때, 디그리가 '2'에서 '1'로 변하는 행에 대하여 스코어 테이블에서 인덱스를 삭제하지 않는 대신, 최대 스코어 탐색을 수행할 때, Ridx[i].Deg (여기서, i는 스코어 테이블에 있는 인덱스)가 '2'인지를 확인하면, 스코어 테이블을 유지하는 데 소요되는 시간을 크게 줄일 수 있다.
첫 번째 페이즈에서 i번째 행의 디그리가 감소하였다고 가정하고, 디그리가 감소된 행에 대해 Ridx[i].score를 업데이트한다. Ridx[i].Deg가 감소하여 '2'가 되었을 때, Ridx[i].score를 키로 사용하여 i를 스코어 테이블에 삽입한다. 이때, i는 스코어 테이블에서 배열의 끝에 삽입하여 삽입시간을 줄인다. 이때, 스코어 테이블의 'd1'과 'd2'가 '1' 씩 증가한다. 또한, Ridx[i].score와 최대 스코어를 비교하여 Ridx[i].score가 더 크면, 최대 스코어를 업데이트한다. Ridx[i].Deg가 감소하여 '1'이 되었을 때. Ridx[i].score를 키로 사용하여 스코어 테이블의 'd1'을 '1' 감소시킨다.
도 7은 본 발명의 일 실시예에 따라 업데이트된 스코어 테이블을 나타낸 예시도이다.
도 7을 참조하면, 스코어 테이블에는 삭제가 일어나지 않는다. 더 이상 디그리가 '2'가 아닌 행 인덱스(Row Index)에는 'X' 표시를 하였지만, 실제 구현할 때에는 아무 표시도 하지 않는다. 그리고 스코어 테이블에 새롭게 추가된 인덱스(이 인덱스는 배열의 가장 뒤에 저장된다.)는 이전에 있던 인덱스보다 유효할(디그리가 '2'일) 확률이 높다. 이를 어떻게 이용하는지는 후술하는 파트 3에서 설명한다.
(3) 파트 3: 최대 스코어 탐색
최대 스코어 탐색에서는 U 열의 수를 줄여 속도를 빠르게 하기 위해, 디그리가 '2'인 행을 선택할 때, 스코어가 가장 큰 행을 선택한다. 이때, 최대 스코어의 값과 스코어 테이블을 이용하면, 이른 시간에 스코어가 가장 큰 행을 찾을 수 있다. 단, 최대 스코어 탐색에서 가장 주위 할 점은 첫 번째 페이즈가 진행되면서 업데이트된 최대 스코어에 해당하는 행의 디그리가 감소하는 경우가 있다는 것이다. 이때, 최대 스코어는 '디그리가 2인 행들 중에서 가장 큰 스코어 값'과 일치하지 않는다. 하지만, 최대 스코어는 '디그리가 2인 행들 중에서 가장 큰 스코어 값'보다 항상 크거나 같으므로, 도 8에 도시한 바와 같이, 스코어 테이블을 이용하여 '디그리가 2인 행들 중에서 가장 큰 스코어 값'을 찾을 수 있다.
도 8은 본 발명의 일 실시예에 따라 최대 스코어를 탐색하는 과정을 나타낸 예시도이다.
도 8에서, ①은 최대 스코어에 해당하는 스코어 테이블의 '실제 디그리가 '2'인 인덱스의 수(d1)'을 나타낸다. 스코어가 '28'이고 디그리가 '2'인 행이 없으므로 최대 스코어를 '1'만큼 감소시킨다. 도 8에서, ②는 스코어가 '27'이고 디그리가 '2'인 행이 1개 있다. '인덱스의 총 수(d2)'를 사용하여 배열의 뒤쪽부터 탐색하여 유효한 인덱스 값을 찾는다. 119행이 실제 디그리가 '2'인 행 중에서 스코어가 가장 크다.
5. 매트릭스 U에서는 인덱스의 삽입과 삭제가 일어나고 복호화를 진행하면 밀도(Density)가 높아지기 때문에, 새로운 자료 구조가 필요하다. 따라서, 매트릭스 U에 대하여 32개의 열들을 합쳐서 표현하는 새로운 자료 구조인 블록화된 매트릭스(Blocked Matrix) U를 사용한다. 블록화된 매트릭스 U의 추가 위치와 추가해야 할 값은 수학식 4 및 수학식 5와 같이, 계산할 수 있다.
추가 위치(블록화된 매트릭스 열) = (현재 매트릭스 U의 열의 수 / 블록의 크기)보다 적은 제일 큰 정수
추가해야 할 값(Blocked Element Variable) = 2(현재 매트릭스 U의 열의 수-1%(블록의 크기))
매트릭스의 하나의 원소(Element)는 '0'과 '1'만을 값으로 가지지만, 블록화된 매트릭스의 하나의 원소는 정수 값을 가진다. 따라서, 블록화된 매트릭스의 하나의 원소는 매트릭스의 여러 개의 원소를 표현할 수 있으며, 블록화된 매트릭스의 하나의 원소가 몇 개의 매트릭스의 원소를 표현하는지는 블록의 크기에 의해 정해진다. 블록화된 매트릭스는 블록의 크기가 클수록, 매트릭스 U를 처리하는데 드는 룹(Loop)의 수가 줄어들어 복호화 시간을 줄일 수 있다. 일 예로, 프로그램에서 블록의 크기는 '32'이다. 이는 정수형(Unsigned)에서 쓸 수 있는 가장 큰 크기의 블록이다.
본 발명의 일 실시예에 따라 랩터 코드를 최대 유사성 복호화하는 방법을 종합하면 다음과 같다.
(1) 첫 번째 페이즈
a. 최소 Ridx.Deg가 '1'일 때,
우선, Ridx[i](1≤i≤M)를 순차적으로 탐색하여 Ridx[i].Deg가 '1'인 행을 탐색한다. 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 다시 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정한다. 이 때, Ridx.Deg가 감소하는 행에 대해서는 Ridx.score를 계산하고, 감소한 Ridx.Deg의 값이 '1'이면 'DIO(Degree is One)'라는 배열에 넣어준다. DIO를 이용하면, 변경된 Ridx.Deg 값이 '1'인 경우 DIO에 넣음으로써, Ridx.Deg가 '1'인 값을 탐색하는 시간을 줄이는 데에 도움이 된다. 찾은 행에 대한 처리가 끝나면 DIO에서 Ridx,Deg가 '1'인 행을 탐색하여, 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정하는 과정부터 다시 반복한다. 반복하는 과정에서 DIO에 Ridx.Deg가 '1'인 행이 더 이상 없으면, (i+1)행부터 M행까지 다시 Ridx.Deg '1'인 행을 찾아 탐색한 행에 해당하는 Ridx[i].Edge에서 유효한 열을 탐색하고 Cidx[j].Edge를 탐색하며, Ridx와 Cidx, 블록화된 매트릭스 U의 값들을 정하는 과정부터 다시 반복한다.
b. 최소 Ridx.Deg가 '2'인 경우,
최소 Ridx.Deg가 '2'인 경우에는, 최대 스코어 탐색을 통해 선택된 행에 대한 처리가 시작된다. 최대 스코어 탐색은 Ridx.Deg가 '2'인 행이 없을 때까지 계속한다. 최대 스코어 탐색을 통해 선택된 Ridx.Deg가 '2'인 행을 처리하는 과정에서 매트릭스 U가 생성된다. 블록화된 매트릭스 U 부분을 따로 처리야 하는데, 이는 매트릭스 U에서는 삽입, 삭제가 자주 일어나고 복호화가 진행됨에 따라 밀도가 높아져 인덱스를 사용할 수 없기 때문이다. 따라서, 매트릭스 U는 블록화된 매트릭스 U를 사용하여 처리한다. '블록화된 매트릭스 U를 추가'하는 과정에서 Ridx.Deg가 감소하는데, 이때 Ridx.score를 계산하고 감소한 Ridx.Deg가 '1'이면 DIO에 넣어준다. 한편, '블록화된 매트릭스 U의 추가'가 끝나면, 매트릭스 V에서는 최소 Ridx.Deg가 '1'일 때와 같이 처리할 수 있다.
(2) 두 번째 페이즈
첫 번째 페이즈를 진행할 때 처리가 끝난 행에 대한 정보를 Ridx에 기억시킨다.
도 9는 본 발명의 일 실시예에 따라 가우스 제거를 수행하기 전과 후의 블록화된 매트릭스 U를 나타낸 예시도이다.
9A는 가우스 제거를 수행하기 전의 행의 블록화된 매트릭스 U를 나타낸 것이고, 9B는 가우스 제거를 수행한 후의 블록화된 매트릭스 U를 나타낸 것이다. 일반적인 가우스 제거 방법을 수행하면 9A로부터 9B를 쉽게 얻을 수 있다.
도 10은 본 발명의 일 실시예에 따른 랩터 코드의 복호화기를 나타낸 블록 구성도이다.
이상에서 전술한 본 발명의 일 실시예는 랩터 코드의 최대 유사성 복호화 장치로 구현될 수 있다. 즉, 본 발명의 다른 실시예에 따른 랩터 코드의 최대 유사성 복호화 장치(1000)는 랩터 코드의 최대 유사성 복호화 장치로서, 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기(1010), 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기(1020) 및 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기(1030)를 포함하여 구성될 수 있다.
여기서, 블록화된 매트릭스 U 생성기(1010)는 복호화할 랩터 코드를 갖는 MxL 크기의 매트릭스의 각 행 및 각 열 중에서 '1'의 위치만을 저장하여 초기 매트릭스를 생성할 수 있다. 또한, 블록화된 매트릭스 U 생성기(1010)는 초기 매트릭스의 각 행의 초기 스코어를 계산하고 디그리가 '2'인 행에 대해 스코어를 키로 가지는 스코어 테이블을 생성할 수 있다.
여기서, 각 행의 초기 스코어는 각 행의 인덱스에 있는 열의 디그리의 합일 수 있으며, 블록화된 매트릭스 U 생성기(1010)는 각 행의 디그리가 '2'인 경우, 디그리가 '2'인 행의 스코어를 키로 사용하여 스코어 테이블에 디그리가 '2'인 행의 인덱스를 삽입할 수 있다.
또한, 블록화된 매트릭스 U는 MxL 매트릭스에 최대 스코어 탐색을 수행하여 생성된 매트릭스 U에 대해 하나 이상의 칼럼을 추가하여 생성될 수 있으며, 추가되는 하나 이상의 칼럼은 매트릭스 U의 열의 수를 기 설정된 블록의 크기로 나눈 수보다 작은 수 중 제일 큰 정수의 위치에 추가될 수 있다.
도 11은 본 발명의 다른 실시예에 따른 랩터 코드의 최대 유사성 복호화 방법을 설명하기 위한 순서도이다.
본 발명의 일 실시예에 따른 랩터 코드의 최대 유사성 복호화 장치(1000)는 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하고(S1110), 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하며(S1120), 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산한다(S1130).
이상에서 전술한 바와 같이, 본 발명의 일 실시예에 따르면, 3GPP MBMS 랩터 코드의 최대 유사성 복호화를 매우 빠르게 실행할 수 있다. 복호화를 빠르게 실행 할 경우, 데이터의 전송 속도를 증가시킬 수 있다. 또한, 배터리를 이용한 단말기 등에서 본 발명의 일 실시예와 같은 방법으로 최대 유사성 복호화를 실행할 경우, 배터리 소모량이 기존의 복호화 방법보다 적게 요구되므로, 배터리 이용 시간을 늘릴 수 있다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합하거나 결합하여 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로서는 자기 기록매체, 광 기록매체, 캐리어 웨이브 매체 등이 포함될 수 있다.
또한, 이상에서 기재된 "포함하다", "구성하다" 또는 "가지다" 등의 용어는, 특별히 반대되는 기재가 없는 한, 해당 구성 요소가 내재할 수 있음을 의미하는 것 이므로, 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것으로 해석되어야 한다. 기술적이거나 과학적인 용어를 포함한 모든 용어들은, 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다. 사전에 정의된 용어와 같이 일반적으로 사용되는 용어들은 관련 기술의 문맥상의 의미와 일치하는 것으로 해석되어야 하며, 본 발명에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이 본 발명은 3GPP MBMS에 채택된 오류 정정 부호인 랩터 코드를 복호화하는 장치와 방법과 관련된 분야에 적용되어, 랩터 코드를 최대 유사성 복호화를 이용하여 복호화할 때, 소요되는 시간을 줄일 수 있으므로 데이터의 전송 속도를 증가시킬 수 있으며, 복호화에 소요되는 전원의 소모를 줄일 수 있 는 효과를 발생하는 매우 유용한 발명이다.
도 1은 매트릭스 A에 대해 첫 번째 페이즈를 수행한 결과인 MxL 매트릭스를 나타낸 예시도,
도 2는 MxL 매트릭스에 대해 두 번째 페이즈를 수행한 결과인 LxL 매트릭스를 나타낸 예시도,
도 3은 본 발명의 일 실시예에 따라 표현된 매트릭스 A를 나타낸 예시도,
도 4는 본 발명의 일 실시예에 따라 복호화가 진행된 상태의 임의의 Ridx[k]를 나타낸 예시도,
도 5는 초기 매트릭스의 각 행의 스코어의 값을 계산하는 과정을 설명하기 위한 예시도,
도 6은 본 발명의 일 실시예에 따른 스코어 테이블을 나타낸 예시도,
도 7은 본 발명의 일 실시예에 따라 업데이트된 스코어 테이블을 나타낸 예시도,
도 8은 본 발명의 일 실시예에 따라 최대 스코어를 탐색하는 과정을 나타낸 예시도,
도 9는 본 발명의 일 실시예에 따라 가우스 제거를 수행하기 전과 후의 블록화된 매트릭스 U를 나타낸 예시도,
도 10은 본 발명의 일 실시예에 따른 랩터 코드의 복호화기를 나타낸 블록 구성도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
1010: 블록화된 매트릭스 U 생성기 1020: 변형 매트릭스 생성기
1030: 벡터 계산기

Claims (8)

  1. 랩터 코드의 최대 유사성 복호화 장치에 있어서,
    상기 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 복호화 시간을 단축하기 위해 상기 MxL 크기의 매트릭스의 각 행 및 각 열 중에서 '1'의 위치만을 저장하고, 저장된 '1'의 위치만을 이용한 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성기;
    상기 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성기; 및
    상기 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산기
    를 포함하는 것을 특징으로 하는 최대 유사성 복호화 장치.
  2. 삭제
  3. 제 1 항에 있어서, 상기 블록화된 매트릭스 U 생성기는,
    상기 MxL 크기의 매트릭스의 각 행의 초기 스코어를 계산하고 열의 수를 줄여 탐색 속도를 빠르게 하기 위해 디그리가 '2'인 행에 대해 스코어를 키로 가지는 스코어 테이블을 생성하는 것을 특징으로 하는 최대 유사성 복호화 장치.
  4. 제 3 항에 있어서, 상기 각 행의 초기 스코어는,
    상기 MxL 크기의 매트릭스의 상기 각 행의 인덱스에 있는 열의 디그리의 합인 것을 특징으로 하는 최대 유사성 복호화 장치.
  5. 제 3 항에 있어서, 상기 블록화된 매트릭스 U 생성기는,
    상기 MxL 크기의 매트릭스의 상기 각 행의 디그리가 '2'인 경우, 상기 디그리가 '2'인 행의 스코어를 키로 사용하여 상기 스코어 테이블에 상기 디그리가 '2'인 행의 인덱스를 삽입하는 것을 특징으로 하는 최대 유사성 복호화 장치.
  6. 제 1 항에 있어서, 상기 블록화된 매트릭스 U는,
    상기 MxL 크기의 매트릭스에 최대 스코어 탐색을 수행하여 생성된 매트릭스 U에 대해 하나 이상의 열을 추가한 것을 특징으로 하는 최대 유사성 복호화 장치.
  7. 제 6 항에 있어서, 상기 하나 이상의 열은,
    상기 매트릭스 U의 열의 수를 기 설정된 블록의 크기로 나눈 수보다 작은 수 중 제일 큰 정수의 위치에 추가되는 것을 특징으로 하는 최대 유사성 복호화 장치.
  8. 랩터 코드의 최대 유사성 복호화 방법에 있어서,
    상기 랩터 코드를 갖는 MxL 크기의 매트릭스에 대해 복호화 시간을 단축하기 위해 상기 MxL 크기의 매트릭스의 각 행 및 각 열 중에서 '1'의 위치만을 저장하고, 저장된 '1'의 위치만을 이용한 최대 스코어 탐색을 수행하여 블록화된 매트릭스 U를 생성하는 블록화된 매트릭스 U 생성 단계;
    상기 블록화된 매트릭스 U에 가우스 소거법을 수행하여 각 행 및 각 열에 하나의 '1'만을 갖는 변형 매트릭스를 생성하는 변형 매트릭스 생성 단계; 및
    상기 변형 매트릭스와 길이 r인 벡터를 이용하여 길이 L인 벡터를 계산하는 벡터 계산 단계
    를 포함하는 것을 특징으로 하는 최대 유사성 복호화 방법.
KR1020080122630A 2008-12-04 2008-12-04 최대 유사성 복호화 장치 및 방법 KR101545565B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080122630A KR101545565B1 (ko) 2008-12-04 2008-12-04 최대 유사성 복호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080122630A KR101545565B1 (ko) 2008-12-04 2008-12-04 최대 유사성 복호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100064180A KR20100064180A (ko) 2010-06-14
KR101545565B1 true KR101545565B1 (ko) 2015-08-19

Family

ID=42363893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080122630A KR101545565B1 (ko) 2008-12-04 2008-12-04 최대 유사성 복호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101545565B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101425506B1 (ko) * 2012-09-22 2014-08-05 최수정 보완적인 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S. Kim et al.,"An Efficient Algorithm for ML Decoding of Raptor Codes over the Binary Erasure Channel," IEEE COMMUNICATIONS LETTERS, VOL. 12, NO. 8, AUGUST 2008.*

Also Published As

Publication number Publication date
KR20100064180A (ko) 2010-06-14

Similar Documents

Publication Publication Date Title
Severinson et al. Block-diagonal and LT codes for distributed computing with straggling servers
Szpankowski Average case analysis of algorithms on sequences
CN106998208B (zh) 一种可变长Polar码的码字构造方法
CN110321566A (zh) 中文命名实体识别方法、装置、计算机设备和存储介质
CN103577278B (zh) 用于数据备份的方法和系统
CN109983705B (zh) 用于生成极化码的装置和方法
KR101545565B1 (ko) 최대 유사성 복호화 장치 및 방법
CN109672498B (zh) 译码方法和装置
CN111384972A (zh) 多进制ldpc解码算法的优化方法、装置及解码器
KR20210004897A (ko) 비트 매칭 기반으로 선형 부호를 고속 복호화하는 방법 및 장치
KR20160116980A (ko) Ldpc 복호기의 vss 알고리즘을 위한 h 행렬의 스케줄링 장치 및 그 방법
CN110472385B (zh) 一种口令破解方法及装置
CN108933604B (zh) 一种变量节点处理方法及装置
JP7251615B2 (ja) 整列処理装置、整列処理方法、及びプログラム
Bian et al. A low-latency SC polar decoder based on the sequential logic optimization
CN111224674B (zh) 多进制ldpc码的解码方法、装置及解码器
KR101976315B1 (ko) 이산대칭채널에서의 극 부호 설계 방법 및 그 장치
US8626812B2 (en) Hybrid greatest common divisor calculator for polynomials
KR20160057590A (ko) 공통 부분식 소거 방법 및 이를 이용한 필터
CN113555061B (zh) 一种无参考基因组的变异检测的数据工作流处理方法
CN105637824A (zh) 从接收信号中恢复稀疏通信信号的方法
KR102189920B1 (ko) 비트 매칭 기반으로 선형 부호를 고속 복호화하는 방법 및 장치
CN113038097B (zh) 一种投影方法、装置及存储介质
CN109450453B (zh) 一种构造ptg-ldpc码的方法
US20230403028A1 (en) Parallelized decoding of variable-length prefix codes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant