KR20080096387A - 디코딩 장치 - Google Patents

디코딩 장치 Download PDF

Info

Publication number
KR20080096387A
KR20080096387A KR1020080033163A KR20080033163A KR20080096387A KR 20080096387 A KR20080096387 A KR 20080096387A KR 1020080033163 A KR1020080033163 A KR 1020080033163A KR 20080033163 A KR20080033163 A KR 20080033163A KR 20080096387 A KR20080096387 A KR 20080096387A
Authority
KR
South Korea
Prior art keywords
log
ratio
probability
parity check
log likelihood
Prior art date
Application number
KR1020080033163A
Other languages
English (en)
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 소니 가부시끼가이샤
Publication of KR20080096387A publication Critical patent/KR20080096387A/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
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/6566Implementations concerning memory access contentions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

본 발명에서는, LDPC(Low Density Parity Check) 코딩의 디코딩을 행하는 디코딩 장치에 있어서, 1코드워드 분의 로그 우도비(對數尤度比; logarithmic likelihood) 또는 로그 사후 확률비(對數事後確率比; logarithmic posteriori probability ratio)를, 저장 수단의 서로 각각 독립된 어드레스에 저장하도록 구성된 복수의 저장 수단과; 저장 수단에 저장된 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 1행에서의 비제로값의 요소에 대응하는 로그 우도비 또는 로그 사후 확률비를 복수개, 동시에 판독출력하도록 구성된 판독출력 수단을 구비하는 디코딩 장치가 제공된다.
디코딩 장치, LDPC 코드, 변수 노드 처리부, 체크 노드 처리부, 연산기, 검사 행렬, 부호 판정 수단.

Description

디코딩 장치{DECODING APPARATUS}
본 발명은, 그 전체 내용이 본원 명세서에 참고용으로 병합되어 있는, 2007년 4월 27일자로 일본 특허청에 출원된 일본특허출원 제2007-119090호에 관련된 주제를 포함한다.
본 발명은, LDPC 코드의 디코딩 처리를 실행하는 디코딩 장치에 관한 것이다.
요즈음, 예를 들면 이동체 통신이나 심우주(深宇宙; deep space) 통신을 포함하는 통신 분야 및, 지상파 또는 위성 디지털 방송을 포함하는 방송 분야의 연구가 현저하게 진행되고 있다. 그 연구에 수반해서, 에러 정정 코딩 및 디코딩의 효율화를 향상시키기 위해서, 코딩 이론에 관한 연구도 활발히 행해지고 있다.
코드 성능의 이론적 한계로서는, 이른바 섀넌(C. E. Shannon)의 채널 코딩 이론(channel coding theory)에 의해서 부여되는 섀넌 한계가 알려져 있다. 코딩 이론에 관한 연구는, 이 섀넌 한계에 가까운 성능을 나타내는 코드를 개발하는 것 을 목적으로 행해지고 있다. 요즈음에는, 섀넌 한계에 가까운 성능을 나타내는 코딩 방법으로서, 예를 들면 병렬 연접 컨벌루션 코딩(PCCC; Parallel Concatenated Convolutional Codes)나, 직렬 연접 컨벌루션 코딩(SCCC; Serially Concatenated Convolutional Codes))라고 하는 이른바 터보 코딩(Turbo coding)라고 불리는 수법이 개발되어 있다. 또, 이들 터보 코딩이 개발되는 한편으로, 옛날부터 알려진 코딩 방법인 저밀도 패리티 검사 코딩(Low Density Parity Check codes)(이하, LDPC 코드라고 한다)가 각광을 받고 있다.
LDPC 코드는, R.G.Gallager에 의해 1963년 Cambridge, Massachusetts: M.I.T. 출판 "Low Density Parity Check Codes"에서 최초로 제안된 것이다. 그 후, D.J.C.MacKay에 의한 "Good error correction codes based on very sparse matrices", IEEE Trans. Inf. Theory, IT-45, pp. 399-431, 1999나, M.G.Luby, M. Mitzenmacher, M.A.Shokrollahi 및 D.A. Spielman에 의한 "Analysis of low density codes and improved designs using irregular graphs," in Proceedings of ACM Symposium on Theory of Computing, pp. 249-258, 1998 등에서 다시 주목받았다.
LDPC 코드는, 요즈음의 연구에 의해, 터보 코드 등과 마찬가지로, 코드 길이가 길어짐에 따라, 섀넌 한계에 가까운 성능이 얻어지는 것을 알 수 있다. 또, 예를 들면 R.G.Gallager, "Low density parity check codes," IRE Trans. Inform. Theory, vol. 8, pp. 21-28, Jan., 1962(이하, 비특허 문헌 1이라고 한다)에 개시되어 있는 바와 같이, LDPC 코드는, 최소 거리가 코딩 길이에 비례하는 성질이 있 기 때문에, 그 특징으로서 블록 에러 확률 특성이 좋고, 또 터보 코딩 등의 디코딩 특성에서 관측되는 이른바 에러 플로어(error floor) 현상이 거의 생기지 않는 것을 이점으로서 들 수 있다.
LDPC 코드는 비제로값의(non-zero) 요소의 수가 매우 작은 스파스(sparse) 패리티 검사 행렬 H에 의해 정의되는 선형 코드이며, 검사 행렬 H의 각 행 및 각 열의 비제로값의 요소의 수가 일정한 것으로 규정되는 코드를 규칙(regular) LDPC 코드, 그렇지 않은 것을 불규칙(irregular) LDPC 코드라 한다.
LDPC 코드의 코딩은, 검사 행렬(H)에 가우시안 소거법(Gaussian elimination)과 적절한 열의 교체를 적용하여 생성 행렬 G를 생성하고, k비트의 정보 비트인 벡터 s와 생성 행렬 G에 의거해서, n비트의 코드워드의 벡터 c를 생성한다. 상기 코딩에 관한 더욱 상세한 내용은, D.J.C.MacKay, "Good error-correcting codes based on very sparse matrices," IEEE Trans. Inform. Theory, vol. 45, pp. 399-431, Oct. 1999.(이하, 비특허 문헌 2라고 한다)에 개시되어 있다.
LDPC 코드의 대표적인 디코딩 방법으로서는, sum-product 디코딩법이 있다. 이것은 기본적으로는 Belief Propagation(BP)으로서 알려져 있는 알고리즘과 등가인 것이다.
또, LDPC 코드를 정의하고 있는 테너(Tanner) 그래프 상에서 동작하는 메시지 전달(passing) 알고리즘에 의거한 반복 디코딩 알고리즘에 의거해서 디코딩된다.
테너 그래프에서는, 변수 노드의 각각은, 검사 행렬 H의 각 열에 대응하고, 체크 노드의 각각은, 검사 행렬 H의 각 행에 대응한다. 또, 이 알고리즘의 목표는, 수신값으로부터 각 송신 심볼에 대응하는 사후 확률(事後確率; posteriori probability)을 구하는 것이지만, 일반적으로 LDPC 코드의 테너 그래프는 루프(loop)를 포함하기 때문에, BP에 의해 정확한 사후 확률은 계산할 수 없고 근사 계산이 이용된다. 단, 그래프가 스파스형인(드문드문한) 경우에는, 이 근사 수법이 비교적 양호한 결과를 부여한다는 것이 알려져 있다.
또, sum-product 디코딩법에서의 체크 노드로부터 변수 노드로의 메시지 α의 갱신에 이용하는 변수 노드로부터 체크 노드에의 메시지 β를 검사 행렬의 행마다 갱신함으로써, 반복(iteration) 횟수(回數)가 적을지라도 통상의 sum-product 디코딩법과 동등한 성능을 실현할 수 있고, 메모리량도 삭감할 수 있는 알고리즘(Layered BP 알고리즘)도 제안되어 있다. 이 Layered BP 알고리즘은 예를 들면 D.E.Hocevar, "A reduced complexity decoder architecture via layered decoding of LDPC codes," IEEE Workshop on Signal Processing Systems, pp. 107-112, 2004(이하, 비특허 문헌 3이라 한다)에 개시되어 있다.
이와 같은 LDPC 디코딩에서는, 검사 행렬의 행마다 1코드워드에 대한 로그 우도비(對數尤度比; logarithmic likelihood) 벡터?=[λ1 λ2 …λn …λN] 또는 로그 사후 확률비(對數事後確率比; logarithmic posteriori probability ratio) 벡터 Q=[ q1 q2 …qn … qN] 중에서 M행 N열의 검사 행렬 H의 m행 n번째의 요소를 hmn으로 했을 때, hmn=1을 만족시키는 것을 선택할 필요가 있다. 예를 들면, hmn=1을 만족시 키는 세트가 NH 세트 있었다고 하고, 시간 간격을 TS라고 하면, 각각에 대해서 변수 노드로부터 체크 노드에의 메시지의 갱신을 행하고, 또 체크 노드로부터 변수 노드에의 메시지의 갱신을 행하기 위해, 2×NH×TS의 시간이 필요하다. 또, 이 변수 노드로부터 체크 노드에의 메시지의 갱신 및 체크 노드로부터 변수 노드에의 메시지의 갱신을 NI회 반복해서 행한다고 하면, 수신 코드워드(reception codeword)를 디코딩하는데 걸리는 시간은, 2×NH×NI×TS로 된다. 일반적으로, 디코딩에 허용되는 대기시간(latency)은, 2×NH×NI×TS보다도 작은 경우가 많고, 이러한 구성을 포함하는 것은 다소 어렵다.
그래서, sum-product 디코딩법에 있어서, 전체(全) 노드에서의 메시지 갱신의 계산을 동시에 계산하는 구성이 제안되어 있으며, 이것은 예를 들면 C.Howland and A.Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes," IEEE International Symposium on Circuits and Systems, vol. 4, pp.742-745, May. 2001(이하, 비특허 문헌 4라고 한다)에 개시되어 있다. 이 sum-product 디코딩법의 구성의 경우, NH세트의 계산을 1클럭 내에서 행하기 때문에, 디코딩에 걸리는 시간은, 2×NI×TS로 되며, 이것에 의해 대기시간이 현저히 감소될 수 있다.
또, 검사 행렬에 대해, 행치환(row replacement)이나 열치환(column replacement)을 행하여 이 검사 행렬을 구성 행렬(component matrices)로 변환하는 구성이 제안되는데, 이러한 성분행렬은 예컨대, P×P의 단위 행렬, 그 단위 행렬의 성분 중 하나 이상의 1이 0으로 변경되는 준단위(準單位; quasi-unit) 행렬, 단위 행렬 또는 준단위 행렬을 주기적으로 시프트(cyclically shift)한 시프트 행렬, 단위 행렬, 준단위 행렬, 또는 시프트 행렬의 복수 개의 합(和; sum)인 합 행렬, 또는 P×P의 영 행렬의 조합으로 나타낼 수 있다. 이러한 구성에 의해, LDPC 코드의 디코딩에서의 체크 노드로부터 변수 노드에의 메시지의 갱신 및, 변수 노드로부터 체크 노드에의 메시지의 갱신의 계산을 P개 병렬로 행하는 것이 가능하게 되는 구성도 제안되어 있다. 이 구성은 예를 들면 일본공개특허공보 제(特開)2004-343170호(이하, 특허 문헌 1이라 한다)에 개시되어 있다. 이 구성에 의해, 디코딩에 이용되는 클럭수를 억제하면서, 회로 규모도 실현가능한 범위로 억제하는 것이 가능하게 된다. 이 구성의 경우, 디코딩에 소요되는(걸리는) 시간은 2×NH×NI×TS/P로 된다. 또, 검사 행렬이 상기한 구성 행렬의 조합으로 표현될 때는, 구성 행렬이 영행렬일 때에 0, 영행렬이 아닐 때에는 1로 치환해서 표현한 M/P행 N/P열의 행렬을 가중 행렬(weight matrix)이라고 부른다.
그렇지만, 비특허 문헌 4의 기술에서는, 모든 노드에서의 메시지 갱신의 계산을 병렬로 행할 필요가 있기 때문에, 증가한 회로 규모가 필수적이라는 문제가 있다. 또, 이 구성의 경우, 노드 사이의 접속을 배선에 의해서 행하기 때문에, 복 수의 검사 행렬에 대해서 디코더를 공유하는 것이 어렵다는 문제점이 있다.
또, Layered BP 디코딩법의 경우에는, 검사 행렬의 각 행에서의 hmn=1을 만족시키는 복수의 로그 사후 확률비 qn을 한꺼번에 판독출력(讀出; read out)하고, 검사 행렬 1행 분의(1행에 대한) 메시지 갱신의 계산을 병렬로 행하는 구성이 이용될 수 있다. 그러나, 이 구성을 실현하기 위해서는, 로그 사후 확률비 qn을 레지스터에 저장(store)하고, 예를 들면 코딩 길이 수와 똑같은, 즉 N개와 등가인 로그 사후 확률비 qn중에서, 각 행에서의 hmn=1을 만족시키는 복수의 로그 사후 확률비 qn을 선택하는 선택기가 필요하게 된다. 일반적으로, LDPC의 코딩 길이는 수천 내지 수만으로서 크기 때문에, 이러한 구성은 증가한 회로 규모를 요하는 것으로 추정된다.
또한, 차세대 무선 LAN 등에 이용되는 경우에 포함될 어플리케이션에 따라, 요구되는 대기시간이 매우 엄밀하여, 특허 문헌 1의 구성에 의해서도 요구 대기시간을 만족시킬 수 없는 경우가 생긴다.
그러므로 간단한 구성으로 LDPC 코드의 디코딩 처리를 고속으로 실행할 수 있는 디코딩 장치를 제공하는 것이 요구된다.
본 발명의 일 실시예에 따르면, LDPC(Low Density Parity Check: 저밀도 패리티 검사) 코드의 디코딩을 행하는 디코딩 장치에 있어서, 1코드워드 분의 로그 우도비 또는 로그 사후 확률비를, 서로(각각) 독립된 어드레스에 저장(格納; store)하는 복수의 저장부(storage section)와, 상기 복수의 저장 수단의 각각에 저장된 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, 상기 LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 1행에서의 비제로값의 요소에 해당하는 복수 개의 로그 우도비 또는 로그 사후 확률비를 동시에 판독출력하도록 구성된 판독출력부(read out section)를 구비하는 디코딩 장치가 제공된다.
상기 저장부의 개수는, 상기 검사 행렬의 행 가중치(row weight)의 최대값보다 더 작을 수 있다.
이 경우, 상기 검사 행렬의 임의의 행에서의 비제로값 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 모두, 상기 복수의 저장부로부터 판독출력하는데 필요한 판독출력 횟수는, 상기 검사 행렬의 행 가중치의 최대값을 상기 저장 부의 개수로 나눔으로써 얻어진 값을 반올림해서 디지털 값으로 얻은 수일 수 있다.
이 경우, 상기 디코딩 장치는, 상기 검사 행렬의 행 가중치의 최대값을 상기 저장부의 개수로 나눔으로써 얻어진 값의 소수점 이하를 반올림해서 얻어지는 수의 판독출력 횟수만큼, 상기 검사 행렬의 임의의 행에서의 비제로값의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 모두, 상기 복수의 저장부로부터 판독출력할 수 있도록, 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비를 개별적으로 상기 복수의 저장 수단에 저장하는 저장 위치 결정부를 더 구비하도록 할 수가 있다.
이 경우, 디코딩 장치는, 상기 각각의 저장부가, 상기 LDPC 코드의 코딩 길이 또는 검사 행렬의 가중 행렬의 열수를, 상기 저장부의 개수로 나눔으로써 얻어지는 값, 또는 이렇게 얻어진 값에 1을 가산한 값, 또는 얻어진 값에서 1을 감산한 값에 대응하는 어드레스수를 가지고, 상기 1코드워드에 대한 로그 우도비 또는 로그 사후 확률비가 상기 복수의 저장부에 각각 저장되도록 구성될 수 있다.
이 경우, 상기 저장 위치 결정부는, 상기 1코드워드에 대한 로그 우도비 또는 로그 사후 확률비 각각이 저장된 어드레스와 저장부 중 하나를 지정하는 저장 위치 결정 정보를 생성하고, 상기 판독출력부는, 상기 저장 위치 결정 정보에 의거해서, 상기 로그 우도비 또는 로그 사후 확률비를 복수개로, 동시에 판독출력하도록 할 수가 있다.
상기 검사 행렬은, P행 및 P열을 가지는 복수개의 소행렬을 포함하는 경우, 각각의 소 픽셀의 P개의 요소에 대응하는 P개의 로그 우도비 또는 로그 사후 확률비를, 하나의 상기 저장부의 하나의 어드레스에 저장하도록 할 수가 있다.
본 발명의 디코딩 장치에서는, 1코드워드 분의 로그 우도비 또는 로그 사후 확률비가, 서로 독립된 어드레스에 저장되고, 상기 복수의 저장부의 각각에 저장된 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, 상기 LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 행에서의 비제로값의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비가 복수개로, 동시에 판독출력된다.
본 발명의 디코딩 장치에 따르면, 간단한 구성으로 LDPC 코드의 디코딩 처리를 고속으로 실행할 수가 있다.
본 발명의 상기 및 그밖의 특징과 장점은, 첨부 도면과 관련하여 취해진 이하의 설명과 부수하는 특허청구범위로부터 명백해질 것이며, 첨부 도면에서는 동일하거나 유사한 부분을 같은 참조 번호로 나타난다.
이하에 본 발명의 실시예를 설명하지만, 본 발명의 구성 요건과, 명세서 또는 도면에 기재된 실시예와의 대응 관계를 예시하면, 다음과 같다. 본 설명은, 본 발명을 지지하는 실시예가, 명세서 또는 도면에 기재되어 있는 것을 단지 확인하기 위한 것이다. 따라서, 명세서 또는 도면 중에 기재되어 있지만, 본 발명의 구성 요건에 대응하는 실시예로서 여기에는 기재되어 있지 않은 실시예가 있었다고 해도, 그것은, 그 실시예가, 그 구성 요건에 대응하지 않음을 의미하는 것은 아니다. 거꾸로, 실시예가 구성 요건에 대응하는 것으로서 여기에 기재되어 있었다고 해도, 그것은, 그 실시예가, 그 구성 요건 이외의 구성 요건에는 대응하지 않음을 의미하지도 않는다.
본 발명의 일 실시예에 따르면, LDPC(Low Density Parity Check) 코딩의 디코딩을 행하는 디코딩 장치에 있어서, 1코드워드 분의 로그 우도비 또는 로그 사후 확률비를, 각각 독립적인 어드레스에 저장하는 복수의 저장 수단(예를 들면, 도 4의 RAM(100) 내지 RAM(103))과, 상기 복수의 저장 수단의 각각에 저장된 상기 1코 드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, 상기 LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 행에서의 비제로값 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 복수개로, 동시에 판독출력하는 판독출력 수단(예를 들면, 도 9의 단계 S203의 처리를 실행하는 도 5의 디코딩부(202))을 구비한다.
이 디코딩 장치는, 상기 검사 행렬의 행 가중치의 최대값을, 상기 저장 수단의 개수로 나눈 값의 소수점 이하를 반올림해서 정수화한 수의 판독출력 횟수만큼, 상기 검사 행렬의 임의의 행에서의 비제로값의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 모두, 상기 복수의 저장 수단으로부터 판독출력할 수 있도록, 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비를, 상기 복수의 저장 수단에 저장하는 저장 위치 결정 수단(예를 들면, 도 5의 저장 위치 결정부(201))을 더 구비할 수 있다.
이하, 도면을 참조해서, 본 발명의 실시예에 대해서 설명한다.
우선, 본 실시예에서 이용되는 LDPC(Low Density Parity Check) 코드의 디코딩에 대해서 설명한다.
LDPC 코드는, 예를 들면 이동체 통신이나 심우주 통신(deep space communication)을 포함하는 통신 분야 및, 지상파 또는 위성 디지털 방송을 포함하는 방송 분야에서 이용되는 저밀도 패리티 검사 코딩의 에러 정정 코딩 및 디코딩의 방식이다.
코드 성능의 이론적 한계로서, 이른바 섀넌(C.E.Shannon)의 채널 코딩 정리 에 의해서 부여되는 섀넌 한계가 알려져 있다. 코딩 이론에 관한 연구는, 이 섀넌 한계에 가까운 성능을 나타내는 코딩을 개발하기 위해 행해지고 있다.
요즈음에는, 섀넌 한계에 가까운 성능을 나타내는 코딩 방법으로서, 예를 들면 병렬 연접 컨벌루션 코딩(PCCC(Parallel Concatenated Convolutional Codes))나, 종렬 연접 컨벌루션 코딩(SCCC(Serially Concatenated Convolutional Codes))라고 하는, 이른바 터보 코딩(Turbo coding)라고 불리는 수법이 개발되어 있다. 이들 터보 코딩이 개발되는 한편으로, 옛날부터 알려진 코딩 방법인 LDPC 코드가 각광을 받고 있다.
최근 연구에 의해, 터보 코딩 등과 마찬가지로, LDPC 코드가 코딩 길이를 연장함에 따라, 섀넌 한계에 가까운 성능이 얻어진다는 것을 알 수 있다. 또, LDPC 코드는 최소 거리가 코딩 길이에 비례하는 성질을 가지기에, 블록 에러 확률 특성이 좋고, 또 터보 코딩 등의 디코딩 특성에서 관측되는, 이른바 에러 플로어 현상이 거의 생기지 않는다는 것도 이점으로서 들 수 있다.
LDPC 코드는, 행렬내의 비제로값의 요소의 수가 매우 적고, 스파스(sparse) 패리티 검사 행렬 H에 의해 정의되는 선형 코딩이며, 검사 행렬 H의 각 행 및 각 열의 비제로값 요소의 수가 일정한 것으로 규정되는 코딩을 regular LDPC 코드, 그렇지 않은 것을 irregular LDPC 코드라고 부른다.
이하에서는 이원(二元; two-dimensional) LDPC 코드를 예로 설명한다. LDPC 코드의 코딩은, 검사 행렬 H에 의거해서 생성 행렬 G를 생성하고, 이 생성 행렬 G를 이원의 정보 메시지에 대해서 승산(multiply)하는 것에 의해서 코드워드를 생성 함으로써 실현된다. 구체적으로는, LDPC 코드에 의한 코딩을 행하는 코딩 장치는, 우선, 검사 행렬 H의 전치 행렬(轉置行列; transposed matrix) HT와의 사이에, 식 G·HT=0이 성립하는 생성 행렬 G를 산출한다. 여기서, 생성 행렬 G가, K×N 행렬인 경우에는, 코딩 장치는, 생성 행렬 G에 대해서 K비트로 이루어지는 정보 메시지(벡터 s)를 곱하여, N비트로 이루어지는 코드워드의 벡터 c(=s·G)를 생성한다. 이 코딩 장치에 의해서 생성된 코드워드는, 예를 들면 값이 "0"인 코딩 비트가 "+1"로 매핑되고, 값이 "1"인 코딩 비트가 "-1"로 매핑된다고 하는 바와 같이 매핑되고, 이와 같이 매핑된 상태로 송신되고, 소정의 통신 경로(communication path)를 통해 수신측에서 수신된다.
LDPC 코드의 코딩은, 검사 행렬을 H, 생성 행렬을 G, K비트의 정보 비트의 벡터를 s, N비트의 코드워드의 벡터를 c로 나타내면, 이하의 식 (1)에 의해서 실행되게 된다.
Figure 112008025621817-PAT00001
한편, LDPC 코드의 디코딩은, Gallager가 확률 디코딩(Probabilistic Decoding)으로서 제안한 알고리즘으로서, 변수 노드(variable node(메시지 노드(message node)라고도 불린다))와, 체크 노드(check node)로 이루어지는 이른바 테너 그래프(Tanner graph) 상에서의 확률 전달(Belief Propagation)에 의한 메시 지 전달 알고리즘(message passing algorithm)에 의해서 행하는 것이 가능하다.
LDPC 코드의 대표적인 디코딩법으로서는, sum-product 디코딩법이 있다. 이것은, 기본적으로는 Belief Propagation(BP)으로서 알려져 있는 알고리즘과 등가인 것이다.
여기서, 테너 그래프라 함은, 검사 행렬 H가 식 (2)와 같이 주어졌을 때, 도 1에 의해 도시되는 것이며, 도면중의 상측의 흰색 원(○)으로 표시된 노드를 변수 노드(variable node)라고 부르고, 하측의 검은색 원(●)으로 표시된 노드를 체크 노드(check node)라고 부른다. 변수 노드의 각각은 검사 행렬 H의 각 열에 대응하고, 체크 노드의 각각은 검사 행렬 H의 각 행에 대응한다. 또, 이 알고리즘의 목표는, 수신값으로부터 각 송신 심볼에 대응하는 사후 확률을 구하는 것이지만, 일반적으로 LDPC 코드의 테너 그래프는 루프를 포함하기 때문에, BP에 의해 정확한 사후 확률이 계산될 수 없고 근사 계산이 이용된다. 단, 그래프가 드문드문한(스파스형인) 경우에는, 이 근사 수법이 비교적 양호한 결과를 제공한다는 것이 알려져 있다.
Figure 112008025621817-PAT00002
여기서, 이원의 LDPC 코드에 대해서 sum-product 디코딩법의 과정( procedure)을 설명한다.
벡터 c는, 코딩 길이가 N이고, 검사 기호 개수가 M인 이원 LDPC 코드이고, 수학식 3으로 표현되는 검사 행렬 H에 의해 정의되는 것이라고 간주한다. 또한, 이하에서, "←" 또는 "→"의 기호는, 변수 등에의 값의 대입을 나타내고 있으며, "≡"의 기호는, 소정의 값, 변수 등의 정의를 나타내는 것으로 한다.
Figure 112008025621817-PAT00003
여기서, hmn은 검사 행렬 H의 m번째행 n번째열의 요소이고, 변수 m과 변수 n은 각각 1≤m≤M, 1≤n≤N을 만족시키는 정수이다.
예를 들면, 수신 신호로부터 얻어지는 1코드워드 분의 로그 우도비 벡터 Λ=[λ1 λ2 …λn …λN]중, 제n번째 비트의 로그 우도비를 λn, m번째 체크 노드로부터 n번째 변수 노드에 보내지는 메시지를 αmn, n번째 변수 노드로부터 m번째 체크 노드에 보내지는 메시지를 βmn으로 나타내면, sum-product 디코딩법에서는, 이하의 단계 A1 내지 단계 A6의 각 단계의 처리를 행하는 것에 의해 디코딩을 실행한다.
여기서, 로그 우도비 λn은, 수학식 4와 같이 정의된다. 또, P(x|y)는, 수신 신호가 y였을 때에, 본래의 송신 신호가 x인 조건부 확률(conditional probability)을 나타낸다. 또, 전송선은 AWGN(부가 백색 가우시안 잡음: Additive White Gaussian Noise) 채널이라고 가정할 수 있고, 그 잡음의 분산이 σ2로 표현될 때, 로그 우도비 λn은 수학식 5와 같이 나타낼 수가 있다.
Figure 112008025621817-PAT00004
Figure 112008025621817-PAT00005
단계 A1:초기화
hmn=1을 만족시키는 모든 세트(m, n)에 대해서, 메시지 αmn을 0으로 설정한다. 또, 루프 카운터(1)를 1로 설정한다. 수신된 워드 벡터 y=[y1 y2 … yn … yN]로부터, 모든 n에 대해서, 로그 우도비 λn을 상기에서 주어진 수학식 5에 따라 계산한다.
단계 A2:변수 노드 처리
hmn=1을 만족시키는 모든 세트(m, n)에 대해서, m번째 메시지 βmn를 이하에 주어지는 식 (6)에 따라서 계산한다. 여기서, n번째 변수 노드에 접속할 체크 노드의 번호의 집합을 B(n)으로 표현한다.
Figure 112008025621817-PAT00006
단계 A3:체크 노드 처리
hmn=1을 만족시키는 모든 세트(m, n)에 대해서, 메시지 αmn을 이하에 주어지는 수학식 7에 따라서 계산한다. 여기서, m번째 체크 노드에 접속할 변수 노드의 번호의 집합을 A(m)에 의해 표현한다.
Figure 112008025621817-PAT00007
여기서,
Figure 112008025621817-PAT00008
Figure 112008025621817-PAT00009
이다.
단계 A4:추정 코드워드의 결정
1≤n≤N의 범위내의 모든 n에 대해서, 이하에 주어지는 수학식 10을 계산하 고, 또 상기 수학식 10에 의거해서 얻어진 값 qn을 이용해서, 이하에 주어지는 식 (11)을 계산해서, (이하, 명세서의 문장 중에서는, c_h라고 기재하고, 수식 중에서는 문자 c 위에 ^마크를 부가한 기호로 기재하는)추정 코드워드(estimated codeword) 벡터 c hat=[c_h1 c_h2 …c_hn …c_hN]을 구한다. 여기서, 식 (10)의 qn은 로그 사후 확률비이다.
[수학식 10]
Figure 112008025621817-PAT00010
[수학식 11]
Figure 112008025621817-PAT00011
단계 A5:패리티 검사
추정 코드워드 벡터 c_h=[c_h1 c_h2 …c_hn …c_hN]가, 이하에 주어지는 식 (12)를 만족시키는 경우, 추정 코드워드 벡터 c_h=[c_h1 c_h2 …c_hn …c_hN]을 추정 코드워드로서 출력하고, 처리는 종료된다.
[수학식 12]
Figure 112008025621817-PAT00012
단계 A6:카운터 증가
1≤1max를 만족시키면, 1을 1←1+1로 증가시킨 후, 처리를 단계 A2로 리턴한다. 한편, 1≤1max를 만족시키지 않으면, 추정 코드워드 벡터 c_h=[c_h1 c_h2 …c_hn …c_hN]을 추정 코드워드로서 출력하고, 처리는 종료된다. 또, 이 sum-product 디코딩법에 의한 디코딩이, 상기 비특허 문헌 2에 상세하게 기술되어 있다는 점이 주목되어야 한다.
또, 상술한 sum-product 디코딩법에 의한 로그 사후 확률비 qn의 갱신 과정을 행마다 실행함으로써, 반복 횟수가 적더라도, 통상의 sum-product 디코딩법과 동등한 성능을 실현할 수 있고, 메모리량도 삭감할 수 있는 알고리즘(Layered BP 알고리즘)도 제안되어 있다. Layered BP (알고리즘) 디코딩법에서는, 이하의 단계 B1 내지 단계 B5의 각 단계의 처리를 행하는 것에 의해 디코딩을 실행한다.
단계 B1:초기화
hmn=1을 만족시키는 모든 세트(m, n)에 대해서 메시지 αmn을 0으로 설정한다. 또, 루프 카운터(1)을 1로 설정한다. 수신된 워드 벡터 y=[y1 y2 … yn … yN]으로부터, 1≤n≤N의 범위 내의 모든 n에 대해서, 로그 우도비 λn을 상기에서 주어진 식 (5)에 따라서 계산하고, 로그 사후 확률비 qn에 대입한다.
단계 B2:검사 행렬의 각 행에 대한 변수 노드-체크 노드 처리
검사 행렬의 행마다, hmn=1을 만족시키는 모든 세트(m, n)에 대해서, 이하에 주어지는 수학식 13 내지 15를 순서대로 계산한다. 즉, 수학식 13에서 구한 βn의 값을 이용해서 수학식 14를 계산하고, 수학식 14에서 구한 αmn을 이용해서 수학식 15를 계산한다. 그 후, 검사 행렬 H의 행마다, 로그 사후 확률비 qn을 갱신한다.
Figure 112008025621817-PAT00013
Figure 112008025621817-PAT00014
Figure 112008025621817-PAT00015
단계 B3:추정 코드워드의 결정
1≤n≤N의 범위 내의 모든 n에 대해서, 단계 B2의 처리 결과로서 얻어지는 로그 사후 확률비 qn을 이용해서, 상기에서 주어진 식 (11)을 계산하여, 추정 코드워드 벡터 c_h=[c_h1 c_h2 …c_hn …c_hN]을 구한다.
단계 B4:패리티 검사
추정 코드워드 벡터 c_h=[c_h1 c_h2 …c_hn …c_hN]이 수학식 12를 만족시키는 경우, c_h=[c_h1 c_h2 …c_hn …c_hN]을 추정 코드워드로서 출력하고, 처리는 종 료된다.
단계 B5:카운터 증가
1≤1max를 만족시키면, 1을 1←1+1로 증가시킨 후, 처리를 단계 B2로 리턴한다. 1≤1max를 만족시키지 않으면, c_h=[c_h1 c_h2 …c_hn …c_hN]을 추정 코드워드로서 출력하고, 처리는 종료된다.
이와 같이, LDPC 코드의 디코딩의 패리티 검사에서는, 수학식 12로 표현되는 바와 같이, 검사 행렬 H의 전치 행렬과, 추정 코드워드와의 곱(積)이 수학적으로 연산되고, 그 수학적 연산 결과가 0인지의 여부가 판정된다. 그 때문에, 검사 행렬 H의 각 행에서의 비제로값("1")의 요소의 위치에 대응하는, 즉 hmn=1을 만족시키는 (m, n)에 대응하는 추정 코드워드의 비트를 추출하고, 그 추출된 비트 간에 배타적 논리합(exclusive OR)을 논리적으로 연산할 필요가 있다.
그리고, 검사 행렬 H의 전치 행렬과 추정 코드워드와의 곱이 0이 아닌 경우, 변수 노드 처리 및 체크 노드 처리가 다시 실행되고, 로그 사후 확률비 qn가 다시 수학적으로 연산되어 갱신된다. 이 때, 다시 수학적으로 연산되어 갱신되는 로그 사후 확률비 qn은, 상술한 배타적 논리합의 수학적 연산에 이용되는 비트에 대응하는 로그 사후 확률비 qn, 즉 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 사후 확률비 qn만일 수 있다.
이와 같이, LDPC 코드의 디코딩을 실행하는 경우에는, 로그 사후 확률비 qn 을 갱신하기 위해서, 수학식 6 내지 7 및 수학식 13 내지 15의 수학적 연산 처리를, 검사 행렬 H의 각 행마다 실행할 필요가 있다. 따라서, M개의 행을 포함하는 검사 행렬 H의 행마다, N개의 로그 우도비 λn(1≤n≤N) 또는 N개의 로그 사후 확률비 qn(1≤n≤N) 중에서, hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn만을 선택해서 추출할 수 있도록 하지 않으면, 효율적인 디코딩 처리를 실현할 수가 없다.
따라서, 예를 들면 LDPC 코드의 디코딩을 행하도록 디코딩 장치를 구성하는 경우, 검사 행렬 H의 M행마다, 메모리나 레지스터 등에 저장되어 있는 N개의 로그 우도비 λn(1≤n≤N) 또는 N개의 로그 사후 확률비 qn(1≤n≤N) 중에서, hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn을 선택해서 출력하는 선택기가 종래 기술에서 제공된다.
예를 들면, 디코딩 장치의 디코딩 대기시간(decoding latency)에 충분한 여유(margin)가 있는 경우에는, N개의 로그 우도비 λn 또는 N개의 로그 사후 확률비 qn을, 하나의 RAM(Random Access Memory: 랜덤 액세스 메모리)에 저장하고, 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn을, RAM의 어드레스를 지정하는 것에 의해 하나씩 판독출력해서 계산에 이용하면 좋다. 이 구성을, 이하에서는 구성 A라고 칭한다.
그러나, 구성 A의 경우, 디코딩이 완료할 때까지 필요한 처리에 소요되는 시 간이 증대한다. 예를 들면, 검사 행렬 H에서, hmn=1을 만족시키는 NH개 세트(m, n)를 포함하고, 디코딩의 반복 횟수가 NI이라고 가정한다. 본 경우, 검사 행렬 H의 M행 분의 디코딩을 실행하기 위해서, NH개의 요소에 대해서, 각각 변수 노드 처리 및 체크 노드 처리의 계산이 행해지므로, 2×NH 클럭의 처리가 필요하게 된다. 또, 이 디코딩을 NI회 반복하게 되므로, 수신된 코드워드를 디코딩하는데 걸리는 시간은, 시간 간격을 TS로 표현하면, 2×NH×NI×TS가 된다.
예를 들면, 다음에 수신되는 코드워드가 레지스터나 메모리에 모두 저장(store)될 때까지의 클럭수를 NB로 표현하면, NB >2×NH×NI이면, 이 구성 A를 채용하는 것도 가능하다. 그러나, NB <2×NH×NI인 경우, 구성 A를 채용할 수는 없다. 또, 구성 A에서는, 대기시간을 작게 하고 싶은 경우, 디코딩이 완료할 때까지 필요한 처리의 클럭수가 많기 때문에, 고속인 동작 주파수가 필요하게 된다. 따라서, 그 구성 A를 실장하는 것이 용이하지 않다.
sum-product 디코딩법의 디코딩 장치의 구성으로서는, 검사 행렬 H의 M행 분의 변수 노드 처리 및 체크 노드 처리의 계산을 동시에 실행하는 구성도 제안되어 있다. 이 구성을, 이하에서는 구성 B라고 칭한다. 구성 B의 경우, 검사 행렬 H의 M행 분의 NH개의 요소에 대한, 변수 노드 처리 및 체크 노드 처리의 계산을 개별적으로(각각) 1클럭으로 행하기 때문에, 디코딩에 걸리는 시간은 2×NI×TS로 된다. 따 라서, 예를 들면 구성 A의 경우와 비교했을 때 대기시간을 현저하게 작게 하는 것이 가능하게 된다.
그렇지만, 구성 B의 경우, 검사 행렬 H의 M행 분의 계산을 병렬로 실행할 필요가 있기 때문에, 회로 규모가 증가하는 문제가 있다. 또, 구성 B의 경우, 코딩 길이가 다른 LDPC 코드, 코딩율(coding rate)이 다른 LDPC 코드 및 다른 검사 행렬을 가지는 LDPC 코드의 디코딩을 행하는 디코딩 장치를, 하나의(single) 디코딩 장치로서 실현하는 것은 곤란하다. 따라서, 구성 B는 코딩 의존성이 높은 구성이라고 생각할 수 있다.
한편, Layered BP 디코딩법의 디코딩 장치를 구성하는 경우에는, 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 한 번에 판독출력하고, 검사 행렬 H의 1행 분의 변수 노드 처리 및 체크 노드 처리의 계산을 병렬로 실행하도록 한 구성이 생각된다. 그러나, 상술한 바와 같은 구성을 실현하기 위해서는, 레지스터 등에 저장된 N(코딩 길이)개의 로그 사후 확률비 qn중에서, 각 행에서의 hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn을 순서대로 선택하는 선택기가 필요하게 된다. 일반적으로 LDPC 코드의 코딩 길이는 수천 내지 수만으로 매우 크기 때문에, 상기한 바와 같은 이 구성을 적용하는 경우에는, 회로 규모가 매우 커지게 된다.
검사 행렬에 대해서, 행치환이나 열치환을 실시하는 것에 의해서, 예를 들면 P×P(P행 및 P열)의 단위 행렬을 구성 행렬로 하고, 구성 행렬의 조합으로 표현될 수 있는 검사 행렬로 변환하고, 그렇게 함으로써 LDPC 코드의 디코딩에서의 체크 노드 처리 및 변수 노드 처리의 계산을 P개의 구성 행렬에 대해서 병렬로 실행하는 구성도 제안되어 있다. 이 구성을, 이하에서는 구성 C라고 칭한다. 구성 C에 따르면, 수신 코드워드를 디코딩하는데 걸리는 시간은, 2×NH×NI×TS/P로 된다. 이것에 의해, 구성 C에 의하면, 디코딩에 걸리는 시간을 억제하면서, 회로 규모도 실현가능한 범위로 억제하는 것이 가능하게 되지만, 차세대 무선 LAN의 경우와 같이 극히 작은 대기시간(low latency)이 요구되는 경우에는, 역시 고속인 동작 주파수가 필요하게 되며, 이 구성 C를 실장하는 것이 용이하지 않다.
그렇지만, 만일 단순한 구성에 의해, 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 복수개, 최단시간에 동시에 선택하는 기능을 실현할 수 있으면, 디코딩에 걸리는 시간을 저감할 수 있고, 또 회로 규모도 그다지 커지지 않는다.
그래서, 본 발명의 실시예에서는, 로그 우도비 λn 또는 로그 사후 확률비 qn을 1개씩, P개씩, 또는 1행분 전체에 대해 선택하는 것이 아니라, 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 복수개(v개 또는 v×P개)로 최단시간에 동시에 선택하는 구성을 채용한다.
상술한 바와 같은 구성에 의해, 예를 들면 구성 C의 경우와 비교했을 때, 디 코딩에 걸리는 시간을 더욱더 억제할 수 있음과 동시에, 구성 B의 경우와 비교했을 때, 회로 규모를 작게 하는 것도 가능하게 된다.
예를 들면, N개의 로그 우도비 λn 또는 로그 사후 확률비 qn중에서, 복수개의 로그 우도비 λn 또는 복수개의 로그 사후 확률비qn을 추출하기 위해서, 복수의 RAM을 준비하고, 각 RAM의 하나의 어드레스에 1개의 로그 우도비 λn 또는 1개의 로그 사후 확률비 qn을 저장한다. 또는, 검사 행렬이 P행 P열의 구성 행렬로 형성(구성)되어 있는 경우에는, P개의 로그 우도비 λn 또는 로그 사후 확률비 qn으로 구성되는 데이터를 동시에 추출하기 위해서, 각 RAM의 하나의 어드레스에 P개의 로그 우도비 λn 또는 P개의 로그 사후 확률비 qn을 저장한다.
그러나, 단순히, 예를 들면 수신 코드워드의 제1 비트로부터 시작해서 순차(순서대로), 복수의 RAM에 로그 우도비 λn 또는 로그 사후 확률비 qn을 저장하면, 로그 우도비 λn 또는 로그 사후 확률비 qn을 추출할 때에는, 하나의 RAM의 다른 어드레스로의 동시 액세스가 발생할 가능성이 높다. 이것에 의해, 검사 행렬 H에서의 모든 행으로부터, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 복수개로 최단시간에 동시에 판독출력하는 것은 불가능하게 된다.
이는 간단한 예를 이용해서 설명한다. 예를 들면, 이하에 주어지는 수학식 16에 의해 표현되는 바와 같은 코딩율 1/2 및 코딩 길이 24의 코드워드를 코딩 또는 디코딩하기 위한 검사 행렬 H로부터 이하에 주어지는 수학식 17에 의해 표현되는 24개의 로그 사후 확률비 qn을 4개의 RAMa 내지 RAMd에 나누어서 저장하는 경우, 즉 4개씩 동시에 순서대로 추출하는 경우를 가정한다.
Figure 112008025621817-PAT00016
Figure 112008025621817-PAT00017
본 경우, 코딩 길이 N은 N=24이므로, 로그 사후 확률비 qn을 4개의 RAM에 분할해서 저장하는 경우, 각 RAM에는 6(=24/4)개의 어드레스가 필요하게 된다. 예를 들면, 코드워드의 제1 비트로부터 시작해서, 로그 사후 확률비 qn을, RAMa 내지 RAMd에 순서대로 저장해 가면, 예를 들면 도 2에 도시한 바와 같이 된다.
다음에, 도 2에 도시한 바와 같이 저장된 로그 사후 확률비 qn 중에서, 검사 행렬 H의 각 행에서 hmn=1을 만족시키는 로그 사후 확률비 qn을 판독출력한다.
이러한 경우, 검사 행렬 H의 제1행째에서는, (m, n)=(1, 1), (1, 2), (1, 4), (1, 6), (1, 10), (1, 13) 및 (1, 14)가 hmn=1을 만족시킨다. 그러므로, 24개의 로그 사후 확률비 qn중에서, 이들 7개의 (m, n)에 대응하는 q1, q2, q4, q6, q10, q13 및 q14를 상기와 같이 판독출력시키면 좋다. 그렇지만, 로그 사후 확률비 qn이 도 2에 도시되는 바와 같이 저장된 경우, q2, q6, q10 및 q14가 동일한 RAM, 즉 RAMb에 저장되어 있으며, 예를 들면 이들 7개의 로그 사후 확률비 qn을, 4개의 RAM으로부터 7개의 값을 판독출력하려고 할 때의 최단 시간인 2클럭에 판독출력하려고 하면, 예를 들면 RAMb의 어드레스 "1" 및 어드레스 "2"를 동시에 판독출력하고, 또 그리고 RAMb의 어드레스 "3" 및 어드레스 "4"를 동시에 판독출력하는 등과 같이, 다른 2개의 어드레스에 동시에 액세스하지 않으면 안된다. 또, RAMb의 다른 어드레스에 동시에 액세스하는 일없이, 7개의 로그 사후 확률비 qn을 모두 판독출력하려고 하면, 4클럭이 요구되는데, 이는 효율적이지 않다.
다음에, 도 3에 도시되는 바와 같이 로그 사후 확률비 qn을 RAMa 내지 RAMd에 저장하는 경우를 생각한다. 이 경우, 검사 행렬 H의 제1행째에서 판독출력해야 할 q1, q2, q4, q6, q10, q13 및 q14는, 모두 4개의 RAM의 각각에 균등하게 저장되어 있으며, 검사 행렬 H의 제1행째에서 판독출력해야 할 7개의 로그 사후 확률비 qn을 모두, 다른 어드레스에 동시에 액세스하는 일없이 2클럭에 판독출력할 수가 있다.
또, 도 3에 도시되는 바와 같이, 로그 사후 확률비 qn을, RAMa 내지 RAMd에 저장하면, 검사 행렬 H의 제2행째 이후에서 판독출력해야 할 로그 사후 확률비 qn도, 제1행째의 경우와 마찬가지로 2클럭에 판독출력할 수가 있다.
따라서, 도 3에 도시되는 바와 같이, 검사 행렬 H의 제1행째 내지 제12행째의 각 행에서 판독출력해야 할 로그 사후 확률비 qn을, 모두 2클럭 이하 내에서 판독출력할 수 있도록, 로그 사후 확률비 qn의 RAM에의 저장 위치를 적절히 설정하면, 로그 사후 확률비 qn을 1개씩 판독출력하는 경우와 비교해서, 효율적으로 고속으로 로그 사후 확률비 qn을 판독출력하는 것이 가능하게 된다. 또, 도 3에 도시되는 바와 같이, 로그 사후 확률비 qn의 RAM에의 저장 위치를 적절히 설정하고, 기억해 두도록 하면, 어드레스의 지정에 의해 원하는 로그 사후 확률비 qn을 추출하는 것이 가능하게 되므로, 예를 들면 복수개의 로그 사후 확률비 qn중에서, hmn=1을 만족시키는 (m, n)에 대응하는 로그 사후 확률비 qn을 순차 선택하는 선택기도 불필요하게 된다.
또한, 로그 사후 확률비 qn의 RAM에의 저장 위치를 적절히 설정하기 위한 처리에 대해서는 후술한다.
또한, 도 3에 도시되는 바와 같이 로그 사후 확률비 qn의 RAM에의 저장 위치를 적절히 설정하면, 1열 분의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 사후 확률비 qn이, 각 행에서의 판독출력의 최단 기간인 2클럭에 판독출력된다. 따라서, 판독출력된 로그 사후 확률비 qn을 이용해서 행해지는 변수 노드 처리 및 체크 노드 처리를 2회로 분할해서 행하도록 하면 좋으므로 회로의 공유화가 달성된다. 또, 1행 분의 변수 노드 처리 및 체크 노드 처리를, 통합해서 한번에 행하는 대체(alternative) 구성의 경우와 비교했을 때, 회로 규모를 1/ Nrd로, 지금의 경우는 Nrd=2로 삭감하는 것이 가능하게 된다.
도 3에 도시되는 바와 같이, 로그 사후 확률비 qn의 RAM에의 저장 위치가 적절히 설정된 경우, 코딩 길이를 N, 검사 행렬 H의 행 가중치의 최대값을 wRMax, 로그 우도비 λn 또는 로그 사후 확률비 qn을 보존하는 RAM의 수를 Nram, RAM의 어드레스수를 Naddr, 검사 행렬 H의 1행 분의 로그 우도비 λn 또는 로그 사후 확률비 qn을 취출하는데 필요한 클럭수를 Nrd로 표현하면, 이하에 주어지는 수학식 18이 충족된다. Nram은, 탑재할 시스템에서의 요구 대기시간을 만족시키도록, 동작 주파수, 검사 행렬, 호 반복 횟수 등으로부터 결정한다. 또, 검사 행렬이 P×P의 소행렬의 조합으로 표현될 때, 각 RAM의 하나의 어드레스에 P개의 로그 우도비 λn 또는 로그 사후 확률비 qn을 저장하기 위해서, 외관상의(apparent) 코딩 길이 N'를 이하에 주어지는 수학식 19로 나타내는 바와 같이 정의한다. 여기서, 외관상의 코딩 길이 N'가 Nram에 의해 나누어떨어지고(割切; divided), 그 Nram개의 RAM에 균등하게 로그 우도비 λn 또는 로그 사후 확률비 qn이 저장된다고 하면, RAM의 어드레스수 Naddr은 이하에 주어지는 수학식 20과 같이 표현된다.
Figure 112008025621817-PAT00018
Figure 112008025621817-PAT00019
수학식 19에 있어서, 위쪽은 H가 P×P 행렬의 조합으로 표현될 때이고, 아래쪽은 그 외의 경우이다.
Figure 112008025621817-PAT00020
또한, 검사 행렬 H의 행 가중치의 최대값 wRMax는, 검사 행렬 H의 임의의(arbitrary) 1행에서의 비제로값을 가지는 픽셀의 최를 나타내고 있다. 예를 들 면, 식 (16)의 검사 행렬 H에는, 1행당, 최대로 7개의 요소 "1"이 포함되어 있으므로, 행 가중치의 최대값 wRMax는 7로 된다.
또, 검사 행렬 H가, 예를 들면 이하에 주어지는 수학식 21로 표현되는 바와 같은 주기적(cyclic) 구조를 가지는 P×P(P행 및 P열)의 소행렬(지금의 경우, P=4)의 조합으로 구성되어 있는 경우에는, P×P 행렬을 하나의 hmn의 요소로서 간주하면, 상술한 방식을 적용할 수가 있다. 이 예에서는, 검사 행렬 H가 점선으로 구분지어진 복수의 소행렬에 의해 구성되어 있다. 즉, 점선으로 구분지어진 1구획이 1개의 소행렬이며, 이하에 주어지는 수학식 21은, 4×8=32개의 소행렬로 구성되고, 각각의 소행렬은 4×4(4행 및 4열) 행렬로 구성되어 있다.
Figure 112008025621817-PAT00021
여기서, 주기적 구조라 함은, 행렬의 요소를, 예를 들면 좌우 방향으로 이동(시프트)시키면, 다른 행렬이 얻어지는 구조를 말한다. 예를 들면, 식 (21)의 가 장 왼쪽 상측 코너에서의 소행렬의 제1행째 내지 제4행째의 요소를 모두, 오른쪽 방향으로 1만큼 시프트시키면, 그 소행렬의 우측에 인접하는 소행렬과 동일하게 된다.
수학식 21을, 수학식 22와 같이 간주하고, 각 RAM에 저장할 로그 우도비 λn 또는 로그 사후 확률비 qn의 수를 1개에서 4개로 변경하면, 본 발명의 실시예에 따른 구성을 적용하는 것이 가능하다. 그렇지만, 그 때에는, Nram×P개의 데이터를 병렬로 처리할 필요가 있기 때문에, 변수 노드 처리 및 체크 노드 처리를 행하는 회로의 규모도 P배로 증가한다.
본 발명의 실시예에서는, 1코드워드 분의 로그 사후 확률비 qn을 갱신할 때에 필요한 메시지 αmn 또는 로그 사후 확률비 qn의 값을, 복수의 RAM에 분할해서 저장하고 갱신하는 것에 의해, 한번에 복수의 값의 판독출력 및 기입(書入; writing)을 실행하는 디코딩 장치를 실현한다.
이하, 본 발명의 실시예를, Layered BP 디코딩법에 적용한 경우의 예에 대해서, 도면을 참조해서 설명한다.
도 4는, 본 발명의 실시예를 적용한 디코딩 장치의 구성예를 도시하는 블록도이다. 도 4를 참조하면, 이 디코딩 장치(10)는, 예를 들면 도시하지 않은 다른 장치로부터 LDPC 코드의 형태로 송신되어 온 코드워드를 수신하고, 그 수신한 코드워드의 에러 정정 및 디코딩을 실행하도록 이루어져 있다.
또, 여기에서는, 이 디코딩 장치(10)가, 예를 들면 수학식 16에 의해 표현되는 검사 행렬 H를 이용해서, LDPC 코드의 형태로 코딩된 코드워드를 디코딩하고 있다. 수학식 16에 의해 나타내어지는 검사 행렬 H는, 12행 및 24열을 포함하므로, 검사 행렬의 행과 열을 나타내는 변수 m, n은 각각 1≤m≤12, 1≤n≤24를 만족시키는 정수로 된다.
도 4에 도시되는 디코딩 장치(10)에서는, 수신 코드워드의 로그 우도비 λn 또는 로그 사후 확률비 qn을 저장하는 RAM이, 4개의 RAM, 즉 RAM(100) 내지 RAM(103)에 의해 형성(구성)되어 있다. 지금의 경우, RAM의 수 Nram이 Nram=4이기 때문에, 식 (20)에 따라서, 각 RAM의 어드레스 개수 Naddr=6이 산출된다. 그리고, RAM(100) 내지 RAM(103)의 어드레스 개수는 6개, 즉 어드레스 [1] 내지 어드레스 [6]으로 되어 있다.
한편, 검사 행렬 H의 행 가중치의 최대값 wRMax는 wRMax=7이기 때문에, 수학식 18 로부터, 검사 행렬 H의 1행 분의 로그 우도비 λn 또는 로그 사후 확률비 qn을 취출하는데 필요한 클럭 수 Nrd가 Nrd=2로서 산출된다.
또, 이 예에서는, 메시지 αmn을 저장(기억)하는 RAM이, 4개의 RAM(104 내지 107)을 포함하고 있다. 지금의 경우, RAM(104 내지 107)의 어드레스수는 24개, 즉 어드레스 [1] 내지 어드레스 [24]로 되어 있다.
제어기(112)는, 메모리 등을 포함하며, 후술하는 바와 같이, 미리 결정된 수 신 코드워드의 로그 우도비 λn 또는 로그 사후 확률비 qn의 적절한 저장 위치를 저장(기억)하도록 이루어져 있다. 제어기(112)는 그 메모리에 기억된 정보에 의거해서, 디코딩 장치(10)의 각 부(component)를 제어한다.
디코딩 장치(10)에 의한 디코딩이 행해지는 경우, 최초로, 디코딩해야 할 코드워드가 수신되고, 예를 들면 그 코드워드의 각 비트(개별 비트)에 대응하는 로그 우도비 λn이, 스위치(108 내지 111)에 공급된다. 코딩 길이가 24비트인 경우, 24개의 로그 우도비 λn이, λ1 내지 λ24의 순으로, 스위치(108 내지 111)에 순차 공급된다.
이 때, 제어기(112)는, 내부의 메모리 등에 기억되어 있는 저장 위치에 의거해서, 스위치(108 내지 111)를 제어하기 위한 제어 신호 c11 내지 c14를 출력한다. 결과적으로, 24개의 로그 우도비 λn은, 스위치(108 내지 111)로부터 각각, 신호 d1 내지 d4로서 출력되고, RAM(100 내지 103)의 적절한 어드레스에 저장되게 된다.
이 예에서는, RAM(100 내지 103)의 저장 위치가 q1 내지 q24로 나타나며, 이들 저장 위치는, 도 3을 참조해서 상술한 저장 위치와 마찬가지이다. 또, 아직 로그 사후 확률비 qn이 산출되어 있지 않을 때, 즉 수신 코드워드의 로그 우도비 λn이 RAM(100 내지 103)에 저장될 때는, 로그 우도비 λ1 내지 λ24가 각각, 저장 위치 q1내지 q24로 나타내어진 저장 위치에 저장(기억)된다.
그리고, 제어기(112)는, 내부의 메모리 등에 기억되어 있는 저장 위치와, 검 사 행렬 H의 정보에 의거해서, 제어 신호 c21 내지 c24를 출력하며, RAM(100 내지 103)으로부터, 검사 행렬 H의 제1 행째에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn을, 갱신 전의 로그 사후 확률비 qn으로서 판독출력하며, 그 로그 사후 확률비 qn을 변수 노드 처리부(113)에 공급한다. 여기에서는, 최대로 4개의 로그 우도비 λn 또는 4개의 로그 사후 확률비 qn이 동시에 판독출력되고, 신호 g1 내지 g4로서 변수 노드 처리부(113)에 공급된다.
또한, 메시지 αmn의 값은, 초기에 값 0으로서 RAM(104 내지 107)에 기억되거나, 또는 최초의 판독출력이 행해지기 전에 0으로 초기화되어 있으며, 제어기(112)로부터 출력된 제어 신호 c31 내지 c34에 의거해서, 수학적 연산에 필요로 되는 메시지 αmn이, RAM(104 내지 107)으로부터 신호 a1 내지 a4로서 판독출력되고, 변수 노드 처리부(113)에 공급된다.
변수 노드 처리부(113)는, 식 (13)에 의해 나타내어지는 수학적 연산을 행하여, βn의 값을 산출하고, 산출된 βn의 값을, 신호 b1 내지 b4로서 체크 노드 처리부(114) 및 지연 회로(125)에 공급한다. 여기에서는, RAM(100 내지 103)으로부터 동시에 판독출력된 로그 우도비 λn(갱신전의 로그 사후 확률비 qn)에 대해서, 동시에 수학적 연산이 실행된다.
체크 노드 처리부(114)는, 식 (14)에 의해 표현되는 수학적 연산을 행하여, 메시지 αmn을 갱신한다. 갱신된 메시지 αmn은, 신호 a1′ 내지 a4′로서, 연산기(115)와 RAM(104 내지 107)에 각각 공급되어, 그 RAM(104 내지 107)에 기억되어 있는 메시지 αmn의 값이 갱신된다.
지연 회로(125)는, 체크 노드 처리부(114)에서, 메시지 αmn의 갱신을 위한 계산으로 인해 발생하는 지연분만큼, 신호 b1 내지 b4를 지연시킨다.
연산기(115)는, 수학식 15에 의해 표현되는 수학적 연산을 행하여, 갱신된 로그 사후 확률비 qn을 산출한다. 여기에서는, 지연 회로(125) 및 체크 노드 처리부(114)로부터 동시에 공급된 βn의 값 및 갱신된 메시지 αmn에 대응하는 로그 사후 확률비 qn의 수가 산출되고, 각각 신호 g1′내지 g4′로서 스위치(108 내지 111)에 공급된다.
이 때, 제어기(112)는, 내부의 메모리 등에 기억되어 있는 저장 위치에 의거해서, 제어 신호 c11 내지 c14를 출력하고, 갱신된 로그 사후 확률비 qn을, 스위치(108 내지 111)로부터 각각 신호 d1 내지 d4로서 출력한다. 신호 d1 내지 d4는 RAM(100 내지 103)의 적절한 어드레스에 저장(기억)되어, 그 RAM(100 내지 103)에 저장되어 있는 값이 갱신된다. 이 조작을 검사 행렬 H의 모든 행에 대해서 행하여, 24개의 로그 사후 확률비 qn을 갱신한다.
검사 행렬 H의 1행 분의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn이 모두 판독출력되고, 변수 노드 처리부(113) 내지 연산기(115)의 처리에 의해 갱신된 로그 사후 확률비 qn이 산출된 후, RAM(100 내지 103)에 저장되어 있는 로그 사후 확률비 qn의 값이 판독출력되며, 패리티 검사부(116)에 공급된다. 또, 상술한 바와 같이, 검사 행렬 H의 1행 분의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn은 모두, Nrd(=2)회의 판독출력 동작에 의해 판독출력되게 된다.
패리티 검사부(116)는, 상술한 Layered BP 디코딩법의 단계 B3 및 B4에서의 처리를 행해서, 패리티 검사의 결과(OK 또는 NG)를 나타내는 신호 p를 생성하고, 그 신호 p를 제어기(112)에 공급한다.
패리티 검사부(116)로부터 결과 NG를 나타내는 신호 p가 공급된 경우, 제어기(112)는, 내부의 메모리 등에 기억되어 있는 저장 위치와, 검사 행렬 H의 정보에 의거해서, 제어신호 c21 내지 c24와 제어 신호 c31 내지 c34를 출력하고, RAM(100 내지 103)으로부터, 검사 행렬 H의 제1행째에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 사후 확률비 qn을 판독출력하고, 또 RAM(104 내지 107)으로부터, 그 로그 사후 확률비 qn들에 대응하는 메시지 αmn을 판독출력한다. 그리고, 제어기(112)는 로그 사후 확률비 qn 및 메시지 αmn을 변수 노드 처리부(113)에 공급한다. 이것에 의해, RAM(100 내지 103)에 저장되어 있는 값이 더 갱신된다.
한편, 패리티 검사부(116)로부터 결과 OK를 나타내는 신호 p가 공급된 경우, 제어기(112)는, 제어 신호 c4를 출력해서, 스위치(117)로부터 1코드워드 분의 로그 사후 확률비 qn을 부호 판정부(118)에 출력시킨다.
그리고, 부호 판정부(118)는, 공급된 신호가 양의 부호를 가지는지 혹은 음의 부호를 가지는지의 여부를 판정한다. 그리고, 예를 들면 그 부호가 양의 부호라면, 그 신호는 "0"으로 매핑되지만, 그 부호가 음의 부호라면, 그 신호는 "1"로 매핑되며, 디코딩 결과인 1코드워드 분, 즉 24비트의 데이터를 출력한다.
도 5에는, 제어기(112)의 기능적 구성예를 도시하고 있다.
도 5를 참조하면, 도시된 제어기(112)는 저장 위치 결정부(201)를 구비하고, 그 저장 위치 결정부(201)는, RAM(100 내지 103)에서의 로그 우도비 λn 또는 로그 사후 확률비 qn의 저장 위치, 예를 들면 RAM을 지정하기 위한 ID를 결정하는 처리를 제어하는 것이다.
저장 위치 결정부(201)에 의해 결정된 저장 위치는, 제어부(203)에 공급되고, 제어기(112)의 내부 메모리 등에 기억된다.
디코딩부(202)은, 저장 위치 결정부(201)에 의해 결정된 저장 위치에 의거해서, RAM(100 내지 103)에 기억되어 있는 로그 우도비 λn 또는 로그 사후 확률비 qn을 판독출력하고, 수신 코드워드를 디코딩하는 처리를 제어한다. 즉, 디코딩부(202)는, 상술한 Layered BP 디코딩법의 단계 B1 내지 B5에서의 처리를, 디코딩 장치(10)에 실행시킨다.
제어부(203)는, 예를 들면 저장 위치 결정부(201) 및 디코딩부(202)에 처리의 실행을 지령해서, 디코딩 장치(10)의 각 부를 제어하기 위한 제어 신호의 생성 등과 같은 각종 처리를 제어한다. 또, 제어부(203)는, 저장 위치 결정부(201)에 의해 결정된 저장 위치 및, 미리 설정된 검사 행렬 H를, 내부 메모리 등에 기억한다. 그리고, 제어부(203)는, 저장 위치 또는 검사 행렬 H를 메모리로부터 판독출력하고, 저장 위치 결정부(201) 또는 디코딩부(202)에, 그 판독출력한 저장 위치 또는 검사 행렬 H를 공급한다.
또한, 여기에서는, 저장 위치 결정부(201)가, 제어기(112)의 기능 블록으로서 설치되어 있다고 설명했지만, 저장 위치 결정부(201)가, 반드시 디코딩 장치(10)에 설치되어 있을 필요는 없다. 예를 들면, 디코딩 장치(10)는 예를 들면 퍼스널 컴퓨터 등과 같이 디코딩 장치(10)과는 다른 장치에, 저장 위치 결정부(201)와 동등한 기능 블록이 설치되는 것으로 하고, 그 기능 블록에 의해 결정된 저장 위치의 정보가, 예를 들면 통신에 의해 디코딩 장치(10)에 송신되고, 디코딩 장치(10)의 제어기(112)의 내부의 메모리에 저장 위치가 기억되도록 하는 것도 가능하다.
도 6은, 로그 우도비 λn 또는 로그 사후 확률비 qn이 저장될 RAM(100 내지 103)에의 저장 위치를 적절히 설정하기 위한 저장 위치 결정 처리를 설명하는 흐름도이다. 이 처리를 실행하는 것에 의해, 디코딩 장치(10)는 디코딩이 실행될 때 짧은 시간 주기 내에 로그 우도비 λn 또는 로그 사후 확률비 qn를 추출하기 위해, 각각의 로그 우도비 λn 또는 로그 사후 확률비 qn를 어느 RAM의 어느 어드레스에 저장해야 할지를 찾아낸다. 즉, 이 처리가 실행되는 것에 의해, 도 3을 참조해서 상술한 바와 같은 저장 위치가 결정된다. 여기에서는, 이 처리가, 예를 들면 미리 디코딩 회로와는 별개의(다른) 장치 등에 의해서 실행되고, 그 처리에 의해 결정된 저장 위치가 제어기(112)의 내부 메모리에 저장되는 것으로 한다.
또, 여기에서는, 로그 우도비 λn 또는 로그 사후 확률비 qn을 저장하기 위한, 예를 들면 4개의 RAM(RAM(100 내지 103))과 같은 복수의 RAM의 각각에 대해서, 예를 들면 1, 2, 3 또는 4와 같이 번호를 할당하기로 한다. 이하에서 이용하는 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]는, 로그 사후 확률비 qn이 어느 RAM에 저장되는지를 나타내고 있다. 예를 들면, r′8=4이면, 로그 사후 확률비 q8의 데이터는 번호 "4"의 RAM, 즉 RAM(103)에 저장되는 것을 나타낸다.
도 6을 참조하면, 처음에 단계 S101에서, 저장 위치 결정부(201)는, 복수의 RAM에의 저장 위치 후보(candidate)의 생성 개수(generation number)를 카운트하는 변수 itr을, 0으로 초기화한다.
단계 S102에서, 변수 itr을 1만큼 증가시킨다.
단계 S103에서, 저장 위치 결정부(201)는, 도 7을 참조해서 후술하는 저장 위치 후보 생성 처리를 실행하여, 제1회 째의 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]를 생성한다. 지금의 경우, 코딩 길이 N은 24이므로, 외관상의 코딩 길이 N′도, 식 (19)로부터 24로 된다. 따라서, 여기에서는 r′1 내지 r′24의 저장 위치 후보가 생성되게 된다.
단계 S104에서, 저장 위치 결정부(201)는, 도 8을 참조해서 후술하는 저장 위치 후보 체크 처리를 실행한다. 이것에 의해, 단계 S103의 처리에 의해 생성된 제1회째의 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]에, N개의 로그 우도비 λn 또는 N개의 로그 사후 확률비 qn이 저장된 경우, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을, Nrd 클럭 이하로 판독출력할 수 있는지 여부가 판정된다.
지금의 경우, RAM(RAM(100 내지 103))의 개수는 4개이므로, Nram=4로 되고, 어드레스수 Naddr이 Naddr=6이고, 행 가중치의 최대값 wRMax이 wRMax=7이므로, 수학식 18로부터, 검사 행렬 H의 1행 분의 로그 우도비 λn 또는 로그 사후 확률비 qn을 추출하는데 필요한 클럭수 Nrd가 Nrd=2로 된다. 다시 말해, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 2회 이하로 판독출력할 수 있으면, 그 저장 위치 후보는, 도 3을 참조해서 상술한 바와 같이 적절히 설정된 저장 위치라고 생각(간주)할 수 있다. 그리고, 저장 위치 후보 체크 처리의 체크 결과는 OK로 된다.
한편, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사 후 확률비 qn를, 2클럭 이하로 판독출력할 수 없으면, 그 저장 위치 후보는, 적절히 설정된 저장 위치라고 생각할 수 없지만, 저장 위치 후보를 더 생성할 필요가 있다고 생각된다. 따라서, 저장 위치 후보 체크 처리의 체크 결과는 NG로 된다.
단계 S104의 처리후, 단계 S105에서, 저장 위치 결정부(201)는, 저장 위치 후보 체크 처리의 체크 결과가 OK인지 여부를 판정한다. 체크 결과가 OK가 아니라고, 즉 NG라고 판정된 경우, 저장 위치 후보를 더 생성할 필요가 있다. 따라서, 처리는, 단계 S107로 진행된다.
단계 107에서, 변수 itr이 후보의 총수(total number) nMAX와 다른지 여부를 판정한다. 변수 itr이 총수 nMAX와 다르면, 아직 생성가능한 후보가 존재하므로, 처리를 단계 S102로 리턴해서, 다음 후보의 생성을 실행한다.
그리고, 제2회째의 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]가, 단계 S103의 처리에 의해 생성되고, 그 후 제2회째의 저장 위치 후보 r′에, N개의 로그 우도비 λn 또는 N개의 로그 사후 확률비 qn이 저장된 경우, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을, Nrd 클럭 이하로 판독출력할 수 있는지 여부가, 단계 S105에서 판정된다.
이와 같이, 저장 위치 후보 체크 처리의 체크 결과가 OK라고 단계 S105에서 판정될 때까지, 단계 107 및 단계 S102 내지 S105의 처리가 반복해서 실행된다. 저장 위치 후보 체크 처리의 체크 결과가 OK라고 단계 S105에서 판정된 경우, 단계 106에서는, 저장 위치 후보 r′를 최종적으로 결정된 저장 위치 r로서 설정하고, 저장 위치 결정 처리는 종료한다. 이 경우, 예를 들면 도 3을 참조해서 상술한 바와 같은 적절한 저장 위치가 결정되게 된다.
변수 itr이 총수 nMAX와 일치하고 있으면, 모든 후보가 다 생성된 것을 의미하므로, 처리는 종료된다. 이 경우, 예외적으로, 로그 우도비 λn 또는 로그 사후 확률비 qn의 저장 위치로서 존재할 수 있는 저장 위치 후보를 모두 생성해서 체크했다고 하더라도, 적절하게 설정된 저장 위치는 성공적으로 발견되지 않는다.
다음에, 도 7의 흐름도를 참조해서, 도 6의 단계 S103의 저장 위치 후보 생성 처리의 상세한 예에 대해서 설명한다.
단계 S121에서, 저장 위치 결정부(201)는, 변수 itr이 1인지 여부를 판정한다. 예를 들면, 저장 위치 후보 생성 처리에 의해 제1회째의 저장 위치 후보가 생성되는 경우, 변수 itr이 1이므로, 처리는 단계 S124로 진행되게 된다.
단계 S124에서, 저장 위치 결정부(201)는, 변수 i를 1로 설정하고, 저장 위치 후보 r′i를 1로 설정한다.
그리고, 처리는 단계 S123으로 진행되고, 저장 위치 결정부(201)는, 저장 위치 후보 r′i의 값이 RAM의 수 Nram보다도 큰지의 여부를 판정한다. 지금의 경우, Nram=4이며, 단계 S124의 처리에 의해 설정된 변수 i의 값이 1이므로, 저장 위치 후보 r′1은 r′1(=1)≤Nram(=4)로 되며, 처리는 단계 S125로 진행된다.
단계 S125에서, 변수 i의 값이 1만큼 증가하고, 단계 S126에서는, 변수 i가 N′ 이하인지 여부가 판정된다. 지금의 경우, 변수 i는 i(=2)≤N′(=24)로 되며, 처리는 단계 S127로 진행된다.
단계 S127에서, 저장 위치 결정부(201)는, 저장 위치 후보 r′i를 1로 설정한다. 지금의 경우, 저장 위치 후보 r′i는 r′2=1로 된다. 그리고, 처리는, 단계 S123으로 리턴한다.
그리고, 단계 S123에서 r′2(=1)≤Nram(=4)이므로, 처리는 단계 S123으로부터 단계 S125 내지 S127로 진행된다.
이와 같이, 단계 S123 및 S125 내지 S127의 처리가 반복해서 실행되고, 변수 i의 값이 25로 되었을 때, 저장 위치 후보 r′는 r′=[1 1 … 1], 즉 r′1=1, r′2=1, r′3=1, … r′24=1로 되어 있으며, 이것이 최초로 생성된 저장 위치 후보이다.
단, 이 저장 위치 후보가 생성된 경우, N개의 로그 우도비 λn 또는 N개의 로그 사후 확률비 qn이 모두 RAM(100)에 저장되게 되므로, 이 경우의 저장 위치는 실제의 저장 위치로서는 부적절하다. 따라서, 체크 결과는,당연히 단계 S104의 처리에 의해 NG로 된다.
제2회째의 저장 위치 후보가 생성되는 경우, 도 6의 단계 S102에서 변수 itr이 2이므로, 도 7의 단계 S121의 판정 결과에 의거해서, 처리는 단계 S122로 진행된다.
단계 S122에서, 저장 위치 결정부(201)는, 변수 i를 1만큼 디크리먼트한다. 이것에 의해, 변수 i는 24(=25-1)로 된다. 그리고, 저장 위치 후보 r′i를 1만큼 인크리먼트한다. 지금의 경우, 저장 위치 후보 r′24는 2(1+1)로 설정된다.
그리고, 처리는 단계 S123으로 진행되고, 저장 위치 후보 r′i의 값이 RAM의 수 Nram보다도 큰지의 여부를 판정한다. 지금의 경우, 저장 위치 후보 r′24는 r′24(=2)≤Nram(=4)로 되며, 처리는 단계 S125로 진행된다.
단계 S125에서는, 변수 i의 값이 1만큼 증가하고, 단계 S126에서, 변수 i가 외관상의 코드 길이 N′ 이하인지 여부가 판정된다. 지금의 경우, 변수 i는 i(=25)>N′(=24)로 되며, 처리가 종료된다. 지금의 경우, 저장 위치 후보 r′1=1, r′2=1, r′3=1, … r′23=1, r′24=2로 되어 있다.
마찬가지로, 제3회째의 저장 위치 후보가 생성되는 경우, 저장 위치 후보 r′1=1, r′2=1, r′3=1, … r′23=1, r′24=3으로 되며, 제4회째의 저장 위치 후보가 생성되는 경우, 저장 위치 후보 r′1=1, r′2=1, r′3=1, … r′23=1, r′24=4로 된다.
제5회째의 저장 위치 후보가 생성되는 경우, 도 7의 단계 S121의 판정 결과에 의거해서, 처리는 단계 S122에 진행되고, 저장 위치 결정부(201)는, 변수 i를 1만큼 감소시킨다. 이것에 의해, 변수 i는 24(=25-1)로 된다. 또, 저장 위치 후보 r ′i를 1만큼 증가시킨다. 지금의 경우, 저장 위치 후보 r′24가 5(=4+1)로 설정되게 된다.
그리고, 처리는 단계 S123으로 진행된다. 이 경우, 저장 위치 후보 r′24는 r′24(=5)>Nram(=4)로 된다. 그 후, 단계 S123의 판정 결과로서, 처리는 단계 S128로 진행된다.
단계 S128에서, 저장 위치 결정부(201)는, 변수 i의 값이 1인지 여부를 판정한다. 이 경우, 변수 i는 i=24이므로, 처리는 단계 S122로 리턴한다.
단계 S122에서, 저장 위치 결정부(201)는, 변수 i를 1만큼 디크리먼트한다. 이것에 의해, 변수 i는 i=23(=24-1)으로 된다. 그리고, 저장 위치 후보 r′i를 1만큼 증가시킨다. 이것에 의해, r′23은 2(=1+1)로 된다.
그 후, 처리는 단계 S123으로 진행되고, 저장 위치 후보 r′i의 값이 RAM의 수 Nram보다도 큰지의 여부가 판정된다. 지금의 경우, 저장 위치 후보 r′23은 r′23(=2)≤Nram(=4)로 된다. 그 후, 처리는 단계 S125로 진행된다.
그리고, 처리는 단계 S125와 S126의 처리를 거쳐서 단계 S127로 진행된다. 단계 S127에서, 저장 위치 후보 r′24가 1로 설정된다. 그리고, 처리는 단계 S123으로 리턴한다.
또한, 단계 S123 및 S125 내지 S126의 처리를 거쳐서, 처리는 종료된다. 지 금의 경우, 저장 위치 후보 ri는 r′1=1, r′2=1, r′3=1, … r′23=2, r′24=1로 되어 있다.
마찬가지로, 제6회 째의 저장 위치 후보가 생성되는 경우, 저장 위치 후보 r′1=1, r′2=1, r′3=1, … r′23=2, r′24=2로 설정되지만, 제7회째의 저장 위치 후보가 생성되는 경우는, 저장 위치 후보가 r′1=1, r′2=1, r′3=1, … r′23=2, r′24=3으로 설정된다.
이와 같이 저장 위치 후보를 반복적으로 생성하는 것에 의해, 최대로 Nram N =424(4의 24승)과 같은 저장 위치 후보 r′이 생성되게 된다. 즉, 제424회째의 저장 위치 후보가 생성되는 경우, r′1=4, r′2=4, r′3=4, …r′24=4의 저장 위치 후보가 생성되게 된다. 또, 제424회째의 저장 위치 후보가 생성된 후, 처리는 도 6의 단계 S104 및 S105의 처리를 거쳐서, S107의 처리로 진행된다. 도 6의 단계 S107의 처리에 의해, 변수 itr이 후보의 총수 nMAX(= 424)과 동일하다고 판정되므로, 저장 위치 결정 처리가 종료하게 된다.
이제, 도 8의 흐름도를 참조해서, 도 6의 단계 S104의 저장 위치 후보 체크 처리의 상세한 예에 대해서 설명한다.
단계 S161에서, 저장 위치 결정부(201)는, 단계 S102의 처리에 의해 생성된 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]에 의거해서, RAM(100 내지 103)에 로그 우도비 λn 또는 로그 사후 확률비 qn을 저장한 경우, 검사 행렬 H의 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn이, RAM(100 내지 103)에 몇개 저장되어 있는지를 카운트하고, 그 카운트 결과를 카운터값으로서 보존유지(保持; retain)한다.
예를 들면, RAM(100)에 저장되어 있는 로그 우도비 λn 또는 로그 사후 확률비 qn의 개수의 카운터값, RAM(101)에 저장되어 있는 로그 우도비 λn 또는 로그 사후 확률비 qn의 개수의 카운터값, …과 같이, 4개의 RAM에 각각(개별적으로) 대응해서 4개의 카운터값이 보존유지된다. 또, 카운터값은, 검사 행렬 H의 각 행(12행 분)에 대해서 취득되므로, 지금의 경우, 총합 48(=12×4)의 카운터값이 보존유지되게 된다.
예를 들면, 카운터값을 저장하는 변수인 카운터 cntm, k를, 미리 정의해 둔다. 여기에서, 변수 m과 변수 k를, 1≤m≤M′, 1≤k≤Nram으로 설정하며, 여기서 M′는 수학식 23에 의해 주어지는 바와 같이 정의되는 것이다.
Figure 112008025621817-PAT00022
수학식 23에 있어서, 위쪽은 H가 P×P 행렬의 조합으로 표현될 때이고, 아래쪽은 그 외 경우이다.
이 카운터 cntm, k에는, 4개의 RAM의 각각에 저장되어 있는 로그 우도비 λn 또는 로그 사후 확률비 qn의 개수의 카운터값을 보존유지한다.
예를 들면, 단계 S103의 처리에 의해 생성된 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]가 [1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4]이었을 경우, 검사 행렬 H가 수학식 16으로 나타내어지는 것이면, 검사 행렬 H의 제1행째에서의 hmn=1을 만족시키는 것은, (m, n)=(1, 1), (1, 2), (1, 4), (1, 6), (1, 10), (1, 13), (1, 14)이다. 또, r′1=1, r′2=1, r′4=1, r′6=1, r′10=2, r′13=3, r′14=3이므로, 검사 행렬 H의 제1행째에서의 추출하고자 하는 로그 사후 확률비 qn, 즉 q1, q2, q4, q6, q10, q13, q14는, 번호 "1"의 RAM, 즉 RAM(100)에 4개의 로그 사후 확률비 qn이, 번호 "2"의 RAM, 즉 RAM(101)에 1개의 로그 사후 확률비 qn이, 번호 "3"의 RAM, 즉 RAM(102)에 2개의 로그 사후 확률비 qn이, 또 번호 "4"의 RAM, 즉 RAM(103))에 0개의 로그 사후 확률비 qn이 저장되게 된다. 따라서,, cnt1, 1=4, cnt1, 2=1, cnt1, 3=2, cnt1, 4=0으로 된다.
단계 S162에서, 저장 위치 결정부(201)는, 단계 S161의 처리에 의해 얻어진 48개의 다른 카운터값 중 하나가 클럭수 Nrd를 초과하고 있는지의 여부를 판정한다. 지금의 경우, 클럭수 Nrd는 2이기 때문에, RAM(100 내지 103)의 어느 하나에, 각 행에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn이, 3개 이상 저장되어 있는 경우, 단계 S162에서, 카운터값 중의 어느것인가가, 클럭수 Nrd를 초과하고 있었다고 판정된다. 그 후, 처리는 단계 S164로 진행된다.
이 경우, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을, Nrd 클럭 이하로 판독출력할 수 없으므로, 체크 결과 NG를 나타내는 플래그 등이 설정된다. 또, 상술한 예의 경우, cnt1, 1은 cnt1, 1(=4)>Nrd(=2)이므로, 이 저장 위치 후보는 부적당하며, 체크 결과 NG로 된다.
한편, 저장 위치 결정부(201)에 의해서, 단계 S161의 처리에 의해 얻어진 48개의 카운터 값 중의 어느 것도, 클럭수 Nrd를 초과하고 있지 않다고 단계 S162에서 판정된 경우, 처리는 단계 S163으로 진행된다.
이 경우, 예를 들면 도 3에 도시되는 바와 같이, hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을, 클럭수 Nrd회 이하의 클럭수로 판독출력할 수 있게 된다. 따라서, 체크 결과 OK를 나타내는 플래그 등이 설정된다.
이와 같이 해서, 생성된 저장 위치 후보가 적절한지 여부가 체크된다. 즉, 검사 행렬 H의 임의의 1행에서, 판독출력해야 할 로그 우도비 λn 또는 로그 사후 확률비 qn을, 2회의 판독출력 동작에 의해 모두 판독출력할 수 있는지의 여부가 체크된다.
또한, 도 6 내지 도 8을 참조해서 상술한 처리는, 로그 우도비 λn 또는 로그 사후 확률비 qn의 RAM(100 내지 103)에의 저장 위치를 적절히 설정하기 위한 처리의 1예이며, 그외 다른 방식을 저장 위치가 적절히 설정되도록 이용해도 좋다.
예를 들면, 저장 위치 후보 r′로서, 균등한 개수의 로그 우도비 λn 또는 로그 사후 확률비 qn이 각 RAM에 저장되도록 하는 것이 가능한 후보만을 생성해도 좋다. 즉, 식 (19)에 따라서 구해지는 외관상의 코드 길이 N′가 RAM의 수 Nram으로 나누어떨어질 때는, Naddr=N′/Nram을 만족시키도록 저장 위치 후보가 생성되지만, 외관상의 코딩 길이 N′가 RAM의 수 Nram으로 나누어떨어지지 않을 때에는, Naddr=ceil(N′/Nram) 또는 Naddr=floor(N′/Nram)을 만족시키도록 저장 위치 후보가 생성된다. 지금의 경우, 1코드워드 분의 24개의 로그 우도비 λn 또는 로그 사후 확률비 qn이, 4개의 RAM에 6개씩 저장되도록, 저장 위치 후보가 생성된다. 또, 이 경우, RAM(100 내지 103)의 각각이, LDPC 코드의 코딩 길이 또는 검사 행렬의 가중 행렬 의 열수를 RAM의 개수로 나눈 값, 또는, 그 얻어진 값에 1을 가산한 값 또는 그 얻어진 값으로부터 1을 감산한 값에 대응하는 어드레스수를 가지게 된다.
도 7을 참조해서 상술한 처리에서는, 생성되는 후보의 총수는 Nram N 로 표현할 수 있다고 설명했지만, 이 방식에 따라서 저장 위치 후보를 생성한 경우, 생성되는 저장 위치 후보의 총수 nMAX는, 식 (24)에 의해 표현할 수가 있다. 단, 기호 "!"는 계승(factorial)을 나타내고, xCy는 x개로부터 다른 y개의 것을 선택하는 조합의 총수를 나타낸다. 이와 같이 함으로써, 저장 위치 후보 생성 처리에 의해 생성되는 후보의 수를 삭감할 수 있어, 보다 효율적인 검색이 가능하다.
Figure 112008025621817-PAT00023
수학식 24에 있어서, 위쪽은 N′가 Nram으로 나누어떨어질 때이고, 아래쪽은 그 외의 경우이다.
이와 같이, 도 6 내지 도 8을 참조해서 상술한 처리와는 다른 방식으로 저장 위치를 적절히 설정할 수도 있다. 다시 말해, 도 3을 참조해서 상술한 바와 같은 적절한 저장 위치가 결정되도록 할 필요가 있다.
또, 상술한 바와 같이, 저장 위치 결정부(201)에 의해, 예를 들면 도 6 내지 도 8을 참조해서 상술한 바와 같은 처리의 실행에 의해 결정된 저장 위치는, 제어부(203)에 공급되고, 미리 제어기(112)의 내부 메모리 등에 기억된다. 즉, 도 6의 단계 S106의 처리에 의해, 저장 위치 후보 r′가, 결정된 저장 위치 r로서, 제어기(112) 내부의 메모리 등에 기억된다.
다음에, 도 9의 흐름도를 참조해서, 디코딩 장치(10)에 의한 디코딩 처리를 설명한다. 이 처리는, 예를 들면 디코딩해야 할 코드워드를 수신했을 때 실행되는 것으로 한다.
단계 S201에서, 변수 m 및 l을 1로 초기화한다.
단계 S202에서, 디코딩부(202)는, 로그 우도비 λn을, RAM(100 내지 103)에 저장한다.
이 때, 예를 들면 그 코드워드의 각 비트에 대응하는 로그 우도비 λn이, 스위치(108 내지 111)에 공급되고, 제어기(112)의 내부의 메모리 등에 기억되어 있는 저장 위치에 의거해서, 스위치(108 내지 111)를 제어하기 위한 제어 신호 c11 내지 c14가 출력된다. 이것에 의해, 24개의 로그 우도비 λn이, RAM(100 내지 103)의 적절한 어드레스에 순차적으로 저장된다.
또한, 이후의 처리에 의해, RAM(100 내지 103)의 어드레스에 저장된 24개의 로그 우도비 λn이, 24개의 로그 사후 확률비 qn으로서 갱신된다.
단계 S203에서, 디코딩부(202)는, 검사 행렬 H의 제m행째에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn을, RAM(100 내지 103)으로부터 판독출력한다.
이 때, 제어기(112)의 내부의 메모리 등에 기억되어 있는 저장 위치와, 검사 행렬 H의 정보에 의거해서, 제어 신호 c21 내지 c24가 출력되고, RAM(100 내지 103)으로부터, 검사 행렬 H의 제1행째에서의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn이, 갱신 전의 로그 사후 확률비 qn으로서 판독출력되고, 변수 노드 처리부(113)에 공급된다. 또, 제어 신호 c31 내지 c34에 의거해서, 수학적 연산에 필요한 메시지 αmn이, RAM(104 내지 107)으로부터 신호 a1 내지 a4로서 판독출력되고, 변수 노드 처리부(113)에 공급된다.
단계 S204에서, 디코딩부(202)는, αmn 및 βn의 값을 계산(산출)한다.
이 때, 변수 노드 처리부(113)는, 수학식 13에 의해 표현되는 수학적 연산을 행하고, 산출된 βn을, 체크 노드 처리부(114)에 공급한다. 또, 체크 노드 처리부(114)는, 수학식 14에 의해 표현되는 수학적 연산을 행한다.
단계 S205에서, 디코딩부(202)는, 검사 행렬 H의 1행 분의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 모두, RAM(100 내지 103)으로부터 판독출력했는지의 여부를 판정한다. 아직 로그 우도비 λn 또는 로그 사후 확률비 qn을 모두 판독출력하고 있지 않다고 판정된 경우, 처리는 단계 S203으로 리턴해서, 단계 S203 내지 S205의 처리가 반복해서 실행된다.
또한, 도 6 내지 도 8을 참조해서 상술한 처리가 실행되어 저장 위치가 결정되므로, RAM(100 내지 103)으로부터의 추후 1회(한번 더)의 판독출력에 의해, 검사 행렬 H의 1행 분의 hmn=1을 만족시키는 (m, n)에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn은, 모두 판독출력되게 된다.
단계 S205에서, 로그 우도비 λn 또는 로그 사후 확률비 qn을 모두, 이미 판독출력했다고 판정된 경우, 즉 단계 S203 내지 S205가 2회씩 실행된 후, 처리는 단계 S206으로 진행된다.
단계 S206에서, 디코딩부(202)는, 식 (13)에 따라서 구한 검사 행렬 H의 1행 분의 βn을 이용해서, 체크 노드 처리부(114)가 갱신된 메시지 αmn을 수학적으로 연산하도록 제어하고, 갱신된 메시지 αmn을, 신호 a1′내지 a4′로서 연산기(115)와 RAM(104 내지 107)에 공급한다. 또, 연산기(115)가 식 (15)에 의해 표현되는 수학적 연산을 행하여, 로그 사후 확률비 qn이 산출되고, RAM(100 내지 103)에 저장되어 있는 값이 갱신된다.
단계 S207에서는, 검사 행렬 H의 M열 분, 즉 모든 검사 행렬 H에 대해서, 로그 사후 확률비 qn의 갱신을 행했는지의 여부를 판정한다. 지금의 경우, M은 12이다. 변수 m이 열수 M과 동일하지 않다고 단계 S207에서 판정된 경우, 아직 모든 행 에 대해서 계산이 종료하지 않았으므로, 처리는 단계 S208로 진행되고, 변수 m을 1만큼 증가시킨다. 그 후, 처리는 단계 S203으로 리턴한다. 한편, 변수 m이 열수 M과 동일하다고 단계 S207에서 판정된 경우, 모든 행에 대해서 계산이 이미 종료했으므로, 처리는 단계 S209로 진행된다.
단계 S209에서, 디코딩부(202)는 패리티 검사를 행한다. 이 때, 패리티 검사부(116)가, 상술한 Layered BP 디코딩법의 단계 B3과 B4의 처리를 행해서, 패리티 검사의 결과(OK 또는 NG)를 나타내는 신호 p를 생성하고, 그 신호 p를 제어기(112)에 공급한다.
단계 S210에서, 디코딩부(202)는, 단계 S209에서의 패리티 검사의 결과가 OK였는지의 여부, 또는 반복 횟수를 나타내는 변수 l이 반복 횟수의 상한 lmax에 도달했는지의 여부를 판정한다. 패리티 검사의 결과가 OK가 아니라고, 즉 패리티 검사의 결과가 NG라고 판정된 경우, 처리는 단계 S211로 진행된다.
단계 S211에서, 디코딩부(202)는, 변수 m의 값을 1로 초기화하고, 변수 l의 값을 1만큼 증가시킨다. 그 후, 처리는 단계 S203으로 리턴하여, 그 단계 S203 이후의 처리가 반복적으로 실행된다.
한편, 결과가 OK라고 판정된 경우, 또는 반복 횟수를 나타내는 변수 l이 반복 횟수의 상한 lmax에 도달했다고 단계 S210에서 판정된 경우, 처리는 단계 S212로 진행되고, 디코딩부(202)에서는 그 디코딩 결과를 출력한다.
이 때, 제어 신호 c4가 출력되고, 1코드워드 분의 로그 사후 확률비 qn이 스 위치(117)로부터 부호 판정부(118)에 출력된다. 그리고, 부호 판정부(118)는, 그곳에 공급된 신호의 정 또는 부의 부호를 판정하고, 예를 들면 정 또는 부의 데이터에 대해서 "0" 및 "1"을 각각 매핑한다. 그 후, 부호 판정부(118)는, 디코딩 결과의 1코드워드 분(24비트)의 결과 데이터를 출력한다.
상술한 바와 같이 해서 LDPC 코드의 디코딩이 행해진다.
이와 같이, 상기한 실시예에 따르면, 로그 우도비 λn 또는 로그 사후 확률비 qn이 복수개의 RAM, 즉 Nram개의 RAM에 저장되고, 검사 행렬의 각 행에서의 hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn을 복수개로 동시에 판독출력하고 있다. 그러므로, 로그 우도비 λn 또는 로그 사후 확률비 qn을 하나의 RAM에 보존하고, 어드레스 지정을 통해 하나씩 판독출력하는 대체 구성의 경우와 비교해서, 디코딩에 필요한 클럭수를 Nram 분의 1로 억제하는 것이 가능하게 된다.
또, 상기한 실시예에 따르면, 검사 행렬 1행 분의 계산, 즉 메시지 αmn, βn 및 로그 사후 확률비 qn의 값의 수학적 연산이, Nrd회로 나눠서 행해진다. 그러므로, 검사 행렬 1행 분의 로그 우도비 λn 또는 로그 사후 확률비 qn을, 한번에 모두 판독출력하고, 1행 분의 계산을 병렬로 행하는 대체 구성의 경우와 비교해서, 회로 규모를 1/Nrd로 삭감하는 것이 가능함과 동시에, 계산 회로의 공유를 도모하는 것도 가능하다.
또, 검사 행렬 1행 분의 로그 우도비 λn 또는 로그 사후 확률비 qn을 한번에 모두 판독출력하는 대체 구성의 경우, 레지스터 등에 보존유지(기억)되어 있는 로그 우도비 λn 또는 로그 사후 확률비 qn 중에서, 원하는 로그 우도비 λn 또는 로그 사후 확률비 qn을 순서대로(순차) 선택하는 선택기가 필요하게 된다. 이에 반해, 상기한 실시예에에서는, 상기한 바와 같은 선택기가 불필요하게 되므로, 회로 규모의 삭감이 가능하게 된다.
또, 본 발명의 실시예를, 예를 들면 식 (21)에 의해 표현되는 바와 같은 주기적 구조를 가지는 소행렬에 의해 형성(구성)되는 검사 행렬을 이용하는 LDPC 코드의 디코딩 장치에 적용하는 것도 가능하다. 상술한 바와 같이, 식 (21)은, 32개의 소행렬을 포함하고 있으며, 각각의 소행렬은, 4행 및 4열을 포함하는 4×4 행렬로서 형성되어 있다.
도 10은, 본 발명의 실시예를 적용한 디코딩 장치의 다른 구성예를 도시하는 블록도이다. 도 10에 도시되는 디코딩 장치(11)는, 식 (21)에 의해 표현되는 검사 행렬 H를 이용해서, LDPC 코드의 디코딩을 행한다.
도 10에 도시되는 디코딩 장치(11)에서는, 도 4에 도시되는 디코딩 장치(10)와는 달리, RAM(100 내지 107)의 각 RAM의 1어드레스에 대해서 1개가 아닌 P개(지금의 경우, 4개)의 데이터를 기입하고 있다. 그 때문에, 디코딩 장치(11)는, 최초로 기입되는 로그 우도비 λn을 P개 축적하고, 그 P개의 로그 우도비 λn을 1개의 데이터로 통합하는 심볼 연접 회로(123)를 구비하고 있다.
예를 들면, 1개의 로그 우도비 λn 또는 1개의 로그 사후 확률비 qn이 1옥텟(octet)의 데이터로서 표현되는 경우, RAM(100 내지 107)의 각 RAM의 1어드레스에는, 4옥텟의 데이터가 기입되게 된다.
또, 도 10에 도시되는 디코딩 장치(11)는, 디코딩 결과를 출력하기 전에, 통합된 1개의 데이터 백(통합해서 1개의 데이터로 되어 있던 것)을, 원래의 P개(지금의 경우, 4개)의 데이터로 변환(복원)하는 심볼 분할 회로(124)를 구비하고 있다.
따라서, 도 10에서 RAM(100 내지 103)에 공급될 데이터를 나타내는 신호 d1 내지 d4, RAM(100 내지 103)으로부터 판독출력된 데이터를 나타내는 신호 g1 내지 g4 및, RAM(104 내지 107)로부터 판독출력된 데이터를 나타내는 신호 a1 내지 a4는, 예를 들면 4옥텟 분의 각 데이터에 대응하는 신호로 된다.
또, 도 10에 도시되는 디코딩 장치(11)에서는, RAM(100 내지 103)으로부터 출력된 4개의 데이터의 비트 위치를 각각 시프트 시키는 주기적 시프터(cyclic shifter)(119 내지 122)를 구비하고 있다. 주기적 시프터(119 내지 122)는, 예를 들면 4개의 로그 우도비 λn 또는 4개의 로그 사후 확률비 qn에 대응하는 4옥텟의 데이터를 형성(구성)하는 각 옥텟을 시프트시키는 것이다.
수학식 21을 구성하는 32개의 소행렬은, 4행 및 4열의 행렬로 형성되어 있지만, 이들 각각의 소행열에서, 값이 1, 즉 비제로값인 요소는, 1행당 1개뿐이다. 따라서, 변수 노드 처리부(113)에 4개의 로그 우도비 λn 또는 4개의 로그 사후 확률비 qn을 공급하는 경우, 4개의 로그 우도비 λn 또는 4개의 로그 사후 확률비 qn중 에서, 검사 행렬 H의 비제로값의 요소에 대응하는 로그 우도비 λn 또는 로그 사후 확률비 qn, 즉 hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn을 특정할 필요가 있다.
주기적 시프터(119 내지 122)는, 4개의 로그 우도비 λn 또는 4개의 로그 사후 확률비 qn에 대응하는 4옥텟의 데이터 중에서, hmn=1을 만족시키는 로그 우도비 λn 또는 로그 사후 확률비 qn에 대응하는 옥텟의 데이터를, 예를 들면 제1 옥텟으로 시프트시킨다. 또한, 주기적 시프터(119 내지 122)는, 제어기(112)로부터 출력되는 제어 신호 c51 내지 c54에 의해 제어되고, 상술한 바와 같이 데이터를 시프트시킨다.
따라서, 도 10에서 주기적 시프터(119 내지 122)로부터 출력되는 데이터를 나타내는 신호 g11 내지 g14는 각각, 신호 g1 내지 g4의 데이터의 옥텟 위치를 시프트함으로써 얻어진 4옥텟 분의 데이터에 대응한다.
또, 도 10의 변수 노드 처리부(113) 내지 연산기(115) 및 지연 회로(125)는 각각, 도 4의 경우와 마찬가지 처리를 행하는 것이지만, 예를 들면 각각 4개의 연산 회로가 병렬로 접속된 구성으로 되고, 4개의 데이터에 대해서 처리가 병렬로(동시에) 행해진다.
따라서, 도 10에서의 변수 노드 처리부(113)로부터 출력되는 데이터를 나타내는 신호 b1 내지 b4, 체크 노드 처리부(114)로부터 출력되는 데이터를 나타내는 신호 a1′ 내지 a4′ 및, 연산기(115)로부터 출력되는 데이터를 나타내는 신호 g1′ 내지 g4′는, 예를 들면 4옥텟 분의 데이터에 각각(개별적으로) 대응한다.
도 10에 도시되는 디코딩 장치(11)의 그 밖의 부분은, 도 4에 도시되는 디코딩 장치(10)의 경우와 마찬가지이다.
이와 같이, 본 발명의 실시예를 적용해서, 주기적 구조를 가지는 소행렬에 의해서 구성되는 검사 행렬을 이용하는 LDPC 코드의 디코딩 장치를 구성할 수도 있다.
또, 본 발명의 실시예에 따르면, 코딩 길이가 코딩 길이 N(지금의 경우, 24) 이하의 것이면, 다른 코딩율, 다른 코딩 길이 또는 다른 검사 행렬을 이용하는 LDPC 코드의 디코딩을 행하는 것이 가능하다.
예를 들면, 상술한 예와는 다른 코딩율, 다른 코딩 길이 또는 다른 검사 행렬을 이용하는 경우, 도 6 내지 도 8을 참조해서 상술한 처리를 다시 실행하고, 저장 위치 결정부(201)에 의해 새로운 저장 위치를 결정시킨다.
그리고, 제어기(112)에, 새로운 저장 위치와 검사 행렬에 대응해서, 제어 신호 c11 내지 c14, 제어 신호 c21 내지 c24 및, 제어 신호 c31 내지 c34를 출력시키도록 하면 좋다.
단, 새롭게 정해지는 Nrd×M′의 값이, 원래의 Nrd×M′의 값 이하일 필요가 있다.
그 예로서, 예를 들면 식 (16)에 의해 표현되는 검사 행렬 H 대신에, 이하에 주어지는 수학식 25에 의해 표현되는 검사 행렬 H를 이용하는 경우를 생각(연구)한다. 수학식 25의 검사 행렬 H는, 코딩율이 2/3인 LDPC 코드에 이용되며, 행 가중치의 최대값 wRMax는 wRMax=11로 된다. 지금의 경우, Nram=4이므로, 식 (18)로부터 Nrd=3(=ceil(wRMax/Nram)=ceil(11/4))로 된다.
Figure 112008025621817-PAT00024
이 경우, 도 6 내지 도 8을 참조해서 상술한 처리에 의해, 저장 위치를 결정한 경우, 결정된 저장 위치 후보 r′=[r′1 r′2 … r′i … r′N′]로서 예를 들면 r′=[1 1 1 1 2 3 2 3 3 4 2 4 4 2 2 1 3 2 3 3 1 4 4 4]가 얻어진다. 이 저장 위치에 로그 사후 확률비 qn 등을 저장함으로써, 검사 행렬이 수학식 16에 의해 표현되는 경우와 비교해서 회로 구성을 변경하는 일없이, 도 4 또는 도 10을 참조해서 상술한 구성의 디코딩 장치(10, 11)에 의해, 수학식 25에 의해 표현되는 검사 행렬 H를 이용한 LDPC 코드를 디코딩하는 것이 가능하다.
또, 이상에서는 Layered BP 디코딩법의 경우를 예로서 설명했지만, 본 발명의 실시예를 sum-product 디코딩법을 이용하는 디코딩 장치에 적용하는 것도 가능하다.
또한, 상술한 일련의 처리는, 하드웨어에 의해 실행시킬 수도 있고, 소프트웨어에 의해 실행시킬 수도 있다. 상술한 일련의 처리를 소프트웨어에 의해 실행시키는 경우에는, 그 소프트웨어를 구성하는 프로그램이, 전용 하드웨어에 실장(내장)되어 있는 컴퓨터, 또는 각종 프로그램을 설치(install)함으로써 각종 기능을 실행하는 것이 가능한, 예를 들면 도 11에 도시되는 바와 같은 범용 퍼스널 컴퓨터(500) 등에, 네트워크나 기록 매체로부터 설치된다.
도 11을 참조하면, CPU(Central Processing Unit)(501)는, ROM(Read Only Memory)(502)에 기억되어 있는 프로그램, 또는 기억부(508)로부터 RAM(Random Access Memory)(503)에 로딩된 프로그램에 따라서 각종 처리를 실행한다. 또, RAM(503)에는, CPU(501)가 각종 처리를 실행하는데 있어서 필요한 데이터도 적당히 기억된다.
CPU(501), ROM(502) 및 RAM(503)은, 버스(504)에 의해 상호 접속되어 있다. 또, 이 버스(504)에는, 입출력 인터페이스(505)도 접속되어 있다.
입출력 인터페이스(505)에는, 키보드와 마우스 등을 포함하는 입력부(506), CRT(Cathode Ray Tube) 또는 LCD(Liquid Crystal Display)유닛으로 이루어지는 디스플레이 유닛과 스피커 등으로 이루어지는 출력부(507), 하드디스크 등으로 형성(구성)되는 기억부(508) 및, 모뎀과 LAN(Local Area Network) 카드와 같은 네트워크 인터페이스 카드 등으로 구성되는 통신부(509)가 접속되어 있다. 통신부(509)는, 인터넷 등의 네트워크를 거쳐서 통신 처리를 행한다.
또, 입출력 인터페이스(505)에는, 필요에 따라서, 드라이브(510)가 접속된 다. 드라이브(510)에는, 자기 디스크, 광 디스크, 광자기 디스크 및 반도체 메모리 등의 리무버블 미디어(511)가 적당히 장착되고, 이 장착 미디어로부터 판독출력된 컴퓨터 프로그램이, 필요에 따라서, 기억부(508)에 인스톨된다.
상술한 일련의 처리를 소프트웨어에 의해 실행시키는 경우에는, 그 소프트웨어를 구성하는 프로그램이, 인터넷 등의 네트워크나, 제거가능한(removable) 미디어(511) 등으로 이루어지는 기록 매체로부터 설치된다.
또, 이 프로그램 기록 매체는, 프로그램이 기록되어 있는 자기 디스크(플로피 디스크(등록 상표)를 포함한다), 광 디스크(CD-ROM(Compact Disk-Read Only Memory), DVD(Digital Versatile Disk)를 포함한다), 광자기 디스크(MD(Mini-Disk)(등록 상표)를 포함한다) 또는 반도체 메모리 등으로 형성(구성)되고, 장치 본체와는 별도로 유저에게 프로그램을 제공하기 위해서 배포(distribute)되는, 도 11에 도시되는 바와 같은 제거가능한 미디어(511)에 의해 구성할 수도 있다. 그 이외에도, 프로그램 기록 매체는, 프로그램이 기록되어 있는 ROM(502)이나, 기억부(508)에 포함되는 하드디스크 등으로 구성할 수도 있다.
본 명세서에서 상술한 일련의 처리를 실행하는 단계는, 기재된 순서에 따라서 시계열적으로 행해지는 처리는 물론, 반드시 시계열적으로 처리되지 않더라도, 병렬적 또는 개별적으로 실행되는 처리도 포함하는 것이다.
또한, 본 발명의 바람직한 실시예에 대해서 특정 항목(term)을 이용해서 설명해 왔지만, 그와 같은 설명은 단지 예시를 목적으로 해서 한 것일 뿐이며, 이하의 특허청구범위의 요지 및 범주를 벗어나지 않는 범위내에서 각종 변경 및 수정이 이루어질 수 있다는 것을 이해하기 바란다.
도 1은 테너(Tanner) 그래프의 예를 도시하는 개략도.
도 2는 RAM의 부적절한 저장 위치의 예를 도시하는 도면.
도 3은 RAM의 적절한 저장 위치의 예를 도시하는 도면.
도 4는 본 발명의 일 실시예를 적용한 디코딩 장치의 구성예를 도시하는 블록도.
도 5는 도 4에 도시한 제어기에 의해 실행되는 소프트웨어의 기능적 구성예를 도시하는 블록도.
도 6은 저장 위치 결정 처리의 예를 설명하는 흐름도.
도 7은 저장 위치 후보 생성 처리의 예를 설명하는 흐름도.
도 8은 저장 위치 후보 체크 처리의 예를 설명하는 흐름도.
도 9는 디코딩 처리의 예를 설명하는 흐름도.
도 10은 본 발명의 다른 실시예를 적용한 디코딩 장치의 다른 구성예를 도시하는 블록도.
도 11은 퍼스널 컴퓨터의 구성예를 도시하는 블록도.

Claims (8)

  1. LDPC(Low Density Parity Check) 코드의 디코딩을 행하는 디코딩 장치에 있어서,
    1코드워드 분의 로그 우도비(對數尤度比; logarithmic likelihood) 또는 로그 사후 확률비(對數事後確率比; logarithmic posteriori probability ratio)를, 서로 각각 독립된 저장 수단의 어드레스에 저장하는 복수의 저장 수단과;
    상기 저장 수단에 저장된 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, 상기 LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 1행에서의 비제로값(non-zero value)의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 복수개로 동시에 판독출력하는 판독출력 수단
    을 구비하는, 디코딩 장치.
  2. 제1항에 있어서,
    상기 저장 수단의 개수는, 상기 검사 행렬의 행 가중치(row weight)의 최대값 미만인, 디코딩 장치.
  3. 제1항에 있어서,
    상기 검사 행렬의 임의의 1행에서의 비제로값의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 모두 상기 복수의 저장 수단으로부터 판독출력는 데 필요한 판독출력 횟수는, 상기 검사 행렬의 행 가중치의 최대값을 상기 저장 수단의 개수로 나눔으로써 얻어진 값을 반올림해서 디지털 값으로 얻어지는 수인, 디코딩 장치.
  4. 제3항에 있어서,
    상기 검사 행렬의 임의의 행에 있는 비제로값 요소에 대응하는 로그 우도비 또는 로그 사후 확률비 모두를, 상기 검사 행렬의 행 가중치의 최대값을 상기 저장 수단의 개수로 나눔으로써 디지털 값으로 얻어지는 판독 횟수만큼 상기 저장 수단으로부터 판독할 수 있도록, 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비를 상기 저장 수단에 저장하는 저장 위치 결정 수단을 더 구비하는, 디코딩 장치.
  5. 제4항에 있어서,
    상기 저장 수단 각각은, 상기 LDPC 코드의 코딩 길이 또는 검사 행렬의 가중 행렬의 열수(列數)를, 상기 저장 수단의 개수로 나눔으로써 얻어지는 값, 또는 그 얻어지는 값에 1을 가산한 값, 또는 그 얻어지는 값에서 1을 감산한 값에 대응하는 어드레스수를 가지고, 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비는, 상기 저장 수단에 각각 개별적으로 저장되는, 디코딩 장치.
  6. 제5항에 있어서,
    상기 저장 위치 결정 수단은, 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 각각이 저장된 상기 저장 수단과 상기 어드레스 중 하나를 지정하는 저장 위치 결정 정보를 생성하고, 상기 판독출력 수단은 상기 저장 위치 결정 정보에 의거해서 복수의 상기 로그 우도비 또는 로그 사후 확률비를 동시에 판독출력하는, 디코딩 장치
  7. 제1항에 있어서,
    상기 검사 행렬은, P행 및 P열을 가지는 복수개의 소행렬을 포함하는 경우, 상기 소행렬의 P개의 요소에 대응하는 P개의 로그 우도비 또는 로그 사후 확률비를 하나의 상기 저장 수단의 하나의 어드레스에 저장하는, 디코딩 장치.
  8. LDPC(Low Density Parity Check) 코드의 디코딩을 행하는 디코딩 장치에 있어서,
    1코드워드 분의 로그 우도비 또는 로그 사후 확률비를, 저장 수단의 서로 각각 독립된 어드레스에 저장하도록 구성된 복수의 저장부와;
    상기 저장부에 저장된 상기 1코드워드 분의 로그 우도비 또는 로그 사후 확률비 중에서, 상기 LDPC 코드의 코딩 처리에서 이용된 검사 행렬의 소정의 1행에서의 비제로값의 요소에 대응하는 상기 로그 우도비 또는 로그 사후 확률비를 복수개로 동시에 판독출력하도록 구성된 판독출력부를 구비하는, 디코딩 장치.
KR1020080033163A 2007-04-27 2008-04-10 디코딩 장치 KR20080096387A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2007-00119090 2007-04-27
JP2007119090A JP4743156B2 (ja) 2007-04-27 2007-04-27 復号装置

Publications (1)

Publication Number Publication Date
KR20080096387A true KR20080096387A (ko) 2008-10-30

Family

ID=39651352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080033163A KR20080096387A (ko) 2007-04-27 2008-04-10 디코딩 장치

Country Status (5)

Country Link
US (1) US8205130B2 (ko)
EP (1) EP1986329A1 (ko)
JP (1) JP4743156B2 (ko)
KR (1) KR20080096387A (ko)
CN (1) CN101295988B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2944660B1 (fr) * 2009-04-16 2011-09-09 St Microelectronics Sa Decodeur ldpc
US8255759B2 (en) * 2009-10-29 2012-08-28 Qualcomm Incorporated APP (a priori probability) storage design for LTE turbo decoder with quadratic permutation polynomial interleaver
US8918695B2 (en) * 2009-12-23 2014-12-23 Intel Corporation Methods and apparatus for early stop algorithm of turbo decoding
US8996948B2 (en) * 2009-12-23 2015-03-31 Intel Corporation Methods, systems, and apparatus for tail termination of turbo decoding
US8930791B2 (en) 2009-12-23 2015-01-06 Intel Corporation Early stop method and apparatus for turbo decoding
RU2497277C2 (ru) * 2010-07-29 2013-10-27 Российская Федерация, от имени которой выступает государственный заказчик-Государственная корпорация по атомной энергии "Росатом" Способ сжатия двоичных данных в виде структурированных информационных блоков
WO2012019480A1 (en) * 2010-08-13 2012-02-16 Huawei Technologies Co., Ltd. Arrangement and method for improving harq feedback in telecommunication systems
US8819517B1 (en) 2011-01-06 2014-08-26 Intel Corporation Systems and methods for a turbo decoder in a universal mobile telecommunication system (UMTS)
US8495455B1 (en) 2011-01-06 2013-07-23 Mindspeed Technologies, Inc. Systems and methods for parallel dual-mode turbo decoders
CN103532568A (zh) * 2012-07-03 2014-01-22 联咏科技股份有限公司 迭代译码装置及其相关译码方法
CN103401655B (zh) * 2013-08-14 2016-05-18 山东大学 一种用ldpc译码消息存储结构进行译码的方法
CA2970901A1 (en) * 2015-02-10 2016-08-18 Panasonic Intellectual Property Management Co., Ltd. Transmission method, transmission device, reception method, and reception device
US10548158B2 (en) * 2016-03-10 2020-01-28 Huawei Technologies Co., Ltd. Message passing algorithm decoder and methods
KR102589918B1 (ko) * 2016-07-19 2023-10-18 삼성전자주식회사 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
CN110768679B (zh) * 2019-10-30 2023-08-22 湖南国科微电子股份有限公司 64进制ldpc的码字校验方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928602B2 (en) * 2001-07-18 2005-08-09 Sony Corporation Encoding method and encoder
JP3837742B2 (ja) * 2003-02-21 2006-10-25 ソニー株式会社 復号装置および復号方法、記録再生装置、プログラム格納媒体、並びに、プログラム
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
JP4224777B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
KR20040101743A (ko) * 2003-05-26 2004-12-03 삼성전자주식회사 통신 시스템에서 저밀도 패리티 검사 코드의 복호 장치 및방법
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
JP4772689B2 (ja) * 2004-10-08 2011-09-14 三菱電機株式会社 検査行列生成方法及び通信方法
JP4622654B2 (ja) * 2005-04-25 2011-02-02 ソニー株式会社 復号装置および復号方法
JP4730592B2 (ja) * 2005-07-11 2011-07-20 ソニー株式会社 復号装置および復号方法
WO2007007801A1 (ja) * 2005-07-13 2007-01-18 Mitsubishi Electric Corporation 通信装置および復号方法
US8103935B2 (en) * 2005-08-10 2012-01-24 Mitsubishi Electric Corporation Test matrix generating method, encoding method, decoding method, communication apparatus, communication system, encoder and decoder
JP4607732B2 (ja) 2005-10-25 2011-01-05 株式会社フジシールインターナショナル 帯状フィルムの接続方法
JP4748007B2 (ja) * 2006-09-12 2011-08-17 富士通株式会社 Ldpc復号器の演算制御データ生成方法及びldpc復号器

Also Published As

Publication number Publication date
JP4743156B2 (ja) 2011-08-10
CN101295988A (zh) 2008-10-29
US8205130B2 (en) 2012-06-19
EP1986329A1 (en) 2008-10-29
JP2008278184A (ja) 2008-11-13
CN101295988B (zh) 2012-06-06
US20080270868A1 (en) 2008-10-30

Similar Documents

Publication Publication Date Title
JP4743156B2 (ja) 復号装置
US7299397B2 (en) Decoding apparatus, decoding method, and program to decode low density parity check codes
KR101158919B1 (ko) 복호 방법 및 복호 장치, 및 기록 매체
US7343548B2 (en) Method and apparatus for encoding and decoding data
KR101227264B1 (ko) Ldpc 코드용 디코더
JP4702632B2 (ja) 符号化方法および符号化装置、並びにプログラム
JP4622654B2 (ja) 復号装置および復号方法
US8166363B2 (en) Decoding device and method
JP4519694B2 (ja) Ldpc符号検出装置及びldpc符号検出方法
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
US9825650B2 (en) Decoder architecture for cyclically-coupled quasi-cyclic low-density parity-check codes
WO2011109084A1 (en) Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size
WO2006115166A1 (ja) 符号装置および符号化方法
JP2007036776A (ja) 復号装置および復号方法
Bajpai et al. A new construction method for large girth quasi-cyclic ldpc codes with optimized lower bound using chinese remainder theorem
JP4729964B2 (ja) 復号装置および復号方法
KR100678521B1 (ko) 비균일 저밀도 패리티 검사 부호의 부호화 장치 및 방법
Angarita et al. Modified shuffled based architecture for high-throughput decoding of LDPC codes
CN112470406A (zh) 用于针对非二进制码的消息传递解码的基本校验节点处理的排序设备和方法
JP2007081602A (ja) 復号装置および復号方法
Zhao et al. An efficient decoding for low density parity check codes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application