KR101164283B1 - 복호 장치 및 복호 방법 - Google Patents

복호 장치 및 복호 방법 Download PDF

Info

Publication number
KR101164283B1
KR101164283B1 KR1020077027304A KR20077027304A KR101164283B1 KR 101164283 B1 KR101164283 B1 KR 101164283B1 KR 1020077027304 A KR1020077027304 A KR 1020077027304A KR 20077027304 A KR20077027304 A KR 20077027304A KR 101164283 B1 KR101164283 B1 KR 101164283B1
Authority
KR
South Korea
Prior art keywords
decoding
result
matrix
during
unit
Prior art date
Application number
KR1020077027304A
Other languages
English (en)
Other versions
KR20080004628A (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 소니 주식회사
Publication of KR20080004628A publication Critical patent/KR20080004628A/ko
Application granted granted Critical
Publication of KR101164283B1 publication Critical patent/KR101164283B1/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • H03M13/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • 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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • 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

Landscapes

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

Abstract

본 발명은, LDPC 부호의 복호를, 장치의 대규모화를 억제하면서 양호한 정밀도로 행할 수 있는 복호 장치 및 복호 방법에 관한 것이다. 계산부(1102)는, 복호 도중 결과 저장용 메모리(1104)로부터 사이클릭 시프트 회로(1101)를 통하여 공급되는 복호 도중 결과(D1101)를 이용하여, 3개의 체크 노드 연산에 대응하는 제1 연산을 행하고, 그 결과 얻어지는 복호 도중 결과(D1102)를 복호 도중 결과 저장용 메모리(1103)에 기억시킨다. 계산부(415)는, 복호 도중 결과 저장용 메모리(1103)로부터 사이클릭 시프트 회로를 통하여 공급되는 복호 도중 결과(D414)를 이용하여, 6개의 배리어블 노드의 연산에 대응하는 제2 연산을 행하고, 그 결과 얻어지는 복호 도중 결과(D415)를 복호 도중 결과 저장용 메모리(1104)에 기억시킨다. 본 발명은, 예를 들면, 위성 방송을 수신하는 튜너에 적용할 수 있다.
Figure R1020077027304
체크 노드, 배리어블 노드, LDPC 부호, 복호 도중 결과, 사이클릭 시프트 회로, 신드롬 판정부, 수신 데이터 저장용 메모리, 복호 연판정 결과 저장용 메모리

Description

복호 장치 및 복호 방법{DECODING APPARATUS AND DECODING METHOD}
본 발명은, 복호 장치 및 복호 방법에 관한 것으로, 특히, 저밀도 패리티 검사 부호(LDPC 부호)에 의한 부호화가 실시된 부호의 복호를 행하는 복호 장치 및 복호 방법에 관한 것이다.
최근, 예를 들면, 이동체 통신이나 심우주 통신과 같은 통신 분야, 및 지상파 또는 위성 디지털 방송과 같은 방송 분야의 연구가 현저하게 진행되고 있는데, 그것에 수반하여, 오류 정정 부호화 및 복호의 효율화를 목적으로 하여 부호 이론에 관한 연구도 활발히 행하여지고 있다.
부호 성능의 이론적 한계로서는, 소위 샤논(C.E.Shannon)의 통신로 부호화 정리에 의해 부여되는 샤논 한계가 알려져 있다. 부호 이론에 관한 연구는, 이 샤논 한계에 가까운 성능을 나타내는 부호를 개발하는 것을 목적으로 하여 행하여지고 있다. 최근에는, 샤논 한계에 가까운 성능을 나타내는 부호화 방법으로서, 예를 들면, 병렬 연접 컨볼루션 부호(PCCC(Parallel Concatenated Convolutional Codes))나, 종렬 연접 컨볼루션 부호(SCCC(Serially Concatenated Convolutional Codes))와 같은, 소위 터보 부호화(Turbo coding)라고 불리는 방법이 개발되어 있다. 또한, 이들 터보 부호가 개발되는 한편, 옛부터 알려지는 부호화 방법인 저밀 도 패리티 검사 부호(Low Density Parity Check codes)(이하, LDPC 부호라고 함)가 각광을 받고 있다.
LDPC 부호는, R.G.Gallager에 의한 「R.G.Gallager, "Low Density Parity Check Codes", Cambridge, Massachusetts:M.I.T.Press,1963」에서 최초로 제안된 것이며, 그 후, 「D.J.C.MacKay, "Good error correcting codes based on very sparse matrices", Submitted to IEEE Trans.Inf.Theory, IT-45, pp.399-431, 1999」나, 「M.G.Luby, M.Mitzenmacher, M.A.Shokrollahi and 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 부호는, 최근의 연구에 의해, 터보 부호 등과 마찬가지로, 부호 길이를 길게 해 감에 따라서, 샤논 한계에 가까운 성능이 얻어지는 것을 알고 있다. 또한, LDPC 부호는, 최소 거리가 부호 길이에 비례한다고 하는 성질이 있기 때문에, 그 특징으로서, 블록 오류 확률 특성이 좋고, 또한, 터보 부호 등의 복호 특성에서 관측되는, 소위 에러 플로어 현상이 거의 발생하지 않는 것도 이점으로서 들 수 있다.
이하, 이러한 LDPC 부호에 대하여 구체적으로 설명한다. 또한, LDPC 부호는, 선형 부호이며, 반드시 2원일 필요는 없지만, 여기서는, 2원인 것으로서 설명한다.
LDPC 부호는, 그 LDPC 부호를 정의하는 검사 행렬(parity check matrix)이 성긴 것인 것을 최대의 특징으로 하는 것이다. 여기서, 성긴 행렬이란, 행렬의 컴포넌트의 "1"의 개수가 매우 적게 구성되는 것이며, 성긴 검사 행렬을 H로 표시하는 것으로 하면, 그러한 검사 행렬 H로서는, 예를 들면, 도 1에 도시하는 바와 같이, 각 열의 허밍 가중치("1"의 수)(weight)가 "3"이며, 또한, 각 행의 허밍 가중치가 "6"인 것 등이 있다.
이와 같이, 각 행 및 각 열의 허밍 가중치가 일정한 검사 행렬 H에 의해 정의되는 LDPC 부호는, 레귤러 LDPC 부호라고 불린다. 한편, 각 행 및 각 열의 허밍 가중치가 일정하지 않은 검사 행렬 H에 의해 정의되는 LDPC 부호는, 이레귤러 LDPC 부호라고 불린다.
이러한 LDPC 부호에 의한 부호화는, 검사 행렬 H에 기초하여 생성 행렬 G를 생성하고, 이 생성 행렬 G를 2원의 정보 메시지에 대하여 승산하는 것에 의해 부호어를 생성함으로써 실현된다. 구체적으로는, LDPC 부호에 의한 부호화를 행하는 부호화 장치는, 우선, 검사 행렬 H의 전치 행렬 HT와의 사이에, 수학식 GHT=0이 성립하는 생성 행렬 G를 산출한다. 여기서, 생성 행렬 G가, k×n행렬(k행 n열의 행렬)인 경우에는, 검사 행렬 H는, n-k행 n열의 행렬이다.
또한, 예를 들면, n비트의 부호어 c가, k비트의 정보 메시지 u에 계속해서, n-k비트의 패리티 비트를 배치한 비트 열과 일치하는 조직 부호인 경우에, n-k행 n열의 검사 행렬 H에서, n비트의 부호어 c 중의 k비트의 정보 메시지 u에 대응하는 n-k행 k열의 부분을 정보부라고 함과 함께, n-k비트의 패리티 비트에 대응하는 n-k 행 n-k열의 부분을 패리티부라고 하기로 하면, 패리티부가, 하삼각 행렬 또는 상삼각 행렬로 되어 있으면, 정보 메시지 u의 LDPC 부호에의 부호화는, 검사 행렬 H를 이용하여 행할 수 있다.
즉, 예를 들면, 검사 행렬 H가, 도 2에 도시하는 바와 같이, 정보부와, 하삼각 행렬의 패리티부로 구성되고, 패리티부의 하삼각의 부분의 요소가, 모두 1인 것으로 하면, 부호어 c의 패리티 비트의 1번째의 비트는, 정보 메시지 u 중의, 검사 행렬 H의 정보부의 제1행에서 1로 되어 있는 요소에 대응하는 비트의 EXOR(배타적 논리합)을 연산한 값으로 된다.
또한, 부호어 c의 패리티 비트의 2번째의 비트는, 정보 메시지 u 중의, 검사 행렬 H의 정보부의 제2행에서 1로 되어 있는 요소에 대응하는 비트와, 패리티 비트의 1번째의 비트의 EXOR을 연산한 값으로 된다.
또한, 부호어 c의 패리티 비트의 3번째의 비트는, 정보 메시지 u 중의, 검사 행렬 H의 정보부의 제3행에서 1로 되어 있는 요소에 대응하는 비트와, 패리티 비트의 1번째 및 2번째의 비트의 EXOR을 연산한 값으로 된다.
이하, 마찬가지로 하여, 부호어 c의 패리티 비트의 i번째의 비트는, 정보 메시지 u 중의, 검사 행렬 H의 정보부의 제i행에서 1로 되어 있는 요소에 대응하는 비트와, 패리티 비트의 1 내지 i-1번째의 비트의 EXOR을 연산한 값으로 된다.
이상과 같이 하여, n-k비트의 패리티 비트를 구하고, k비트의 정보 메시지 u에 계속해서 배치함으로써, n비트의 부호어 c를 얻을 수 있다.
한편, LDPC 부호의 복호는, Gallager가 확률 복호(Probabilistic Decoding) 라고 칭하여 제안한 알고리즘으로서, 배리어블 노드(variable node(메시지 노드(message node)라고도 불림.))와, 체크 노드(check node)로 이루어지는, 소위 태너 그래프(Tanner graph) 상에서의 확률 전파(belief propagation)에 의한 메시지 패싱 알고리즘에 의해 행하는 것이 가능하다. 여기서, 이하, 적절하게, 배리어블 노드와 체크 노드를, 간단히, 노드라고도 한다.
그러나, 확률 복호에서는, 각 노드 간에서 교환되는 메시지가 실수치이기 때문에, 해석적으로 풀기 위해서는, 연속한 값을 취하는 메시지의 확률 분포 그 자체를 추적할 필요가 있어, 매우 곤란을 수반하는 해석을 필요로 하게 된다. 그래서, Gallager은, LDPC 부호의 복호 알고리즘으로서, 알고리즘 A 또는 알고리즘 B를 제안하고 있다.
LDPC 부호의 복호는, 일반적으로는, 도 3에 도시하는 바와 같은 수순에 따라서 행하여진다. 또한, 여기서는, 수신값을 U0(u0i)으로 하고, 체크 노드로부터 출력되는 메시지를 uj로 하며, 배리어블 노드로부터 출력되는 메시지를 vi로 한다. 또한, 여기서는, 메시지란, 값의 "0" 근사도를, 소위 대수 우도비(log likelihood ratio)로 표현한 실수값이다. 또한, 수신값 U0의 "0" 근사도의 대수 우도비를, 수신 데이터 u0i로 표시하는 것으로 한다.
우선, LDPC 부호의 복호에서는, 도 3에 도시하는 바와 같이, 스텝 S11에서, 수신값 U0(u0i)이 수신되어, 메시지 uj가 "0"으로 초기화됨과 함께, 반복 처리의 카 운터로서의 정수를 취하는 변수 k가 "0"으로 초기화되고, 스텝 S12로 진행한다. 스텝 S12에서, 수신값 U0(u0i)에 기초하여, 수학식 1에 표현하는 연산을 행함으로써 메시지 vi가 구해지며, 또한, 이 메시지 vi에 기초하여, 수학식 2에 표현하는 연산을 행함으로써 메시지 uj가 구해진다.
Figure 112007084337916-pct00001
Figure 112007084337916-pct00002
여기서, 수학식 1과 수학식 2에서의 dv와 dc는, 각각, 검사 행렬 H의 세로방향(행 방향)과 가로 방향(열 방향)의 "1"의 개수를 나타내는 임의로 선택 가능하게 되는 파라미터이며, 예를 들면, (3, 6) 부호의 경우에는, dv=3, dc=6으로 된다.
또한, 수학식 1 또는 수학식 2의 연산에서는, 각각, 메시지를 출력하고자 하는 브랜치(edge)로부터 입력된 메시지를, 합 또는 곱 연산의 파라미터로서는 이용하지 않기 때문에, 합 또는 곱 연산의 범위가, 1 내지 dv-1 또는 1 내지 dc-1로 되어 있다. 또한, 수학식 2에 표현하는 연산은, 실제로는, 2입력 v1, v2에 대한 1출력으로 정의되는 수학식 3에 표현하는 함수 R(v1, v2)의 테이블을 미리 작성해 두 고, 이것을 수학식 4에 표현하는 바와 같이, 연속적(재귀적)으로 이용함으로써 행하여진다.
Figure 112007084337916-pct00003
Figure 112007084337916-pct00004
스텝 S12에서는, 또한, 변수 k가 "1"만큼 인크리먼트되고, 스텝 S13으로 진행한다. 스텝 S13에서는, 변수 k가 소정의 반복 복호 횟수 N 이상인지의 여부가 판정된다. 스텝 S13에서, 변수 k가 N 이상이 아니라고 판정된 경우, 스텝 S12로 되돌아가고, 이하, 마찬가지의 처리가 반복된다.
또한, 스텝 S13에서, 변수 k가 N 이상이라고 판정된 경우, 스텝 S14로 진행하여, 수학식 5에 표현하는 연산을 행함으로써 최종적으로 출력하는 복호 결과로서의 메시지 v가 구해져 출력되고, LDPC 부호의 복호 처리가 종료한다.
Figure 112007084337916-pct00005
여기서, 수학식 5의 연산은, 수학식 1의 연산과는 달리, 배리어블 노드에 접속하고 있는 모든 브랜치로부터의 입력 메시지를 이용하여 행하여진다.
이러한 LDPC 부호의 복호는, 예를 들면 (3, 6) 부호의 경우에는, 도 4에 도 시하는 바와 같이, 각 노드 간에서 메시지의 수수가 행하여진다. 또한, 도 4에서의 "="로 표시하는 노드(배리어블 노드)에서는, 수학식 1에 표현한 연산이 행하여지고, "+"로 표시하는 노드(체크 노드)에서는, 수학식 2에 표현한 연산이 행하여진다. 특히, 알고리즘 A에서는, 메시지를 2원화하고, "+"로 표시하는 노드에서, dc-1개의 입력 메시지의 배타적 논리합 연산을 행하고, "="로 표시하는 노드에서, 수신값 R에 대하여, dv-1개의 입력 메시지가 모두 상이한 비트값이었던 경우에는, 부호를 반전하여 출력한다.
또한, 한편, 최근, LDPC 부호의 복호의 실장법에 관한 연구도 행하여지고 있다. 실장 방법에 대하여 설명하기 전에, 우선, LDPC 부호의 복호를 모식화하여 설명한다.
도 5는, (3, 6) LDPC 부호(부호화율 1/2, 부호 길이 12)의 검사 행렬 H(parity check matrix)의 예이다. LDPC 부호의 검사 행렬 H는, 도 6과 같이, 태너 그래프를 이용하여 써서 나타낼 수 있다. 여기서, 도 6에서, "+"로 표시되는 것이, 체크 노드이고, "="로 표시되는 것이, 배리어블 노드이다. 체크 노드와 배리어블 노드는, 각각, 검사 행렬 H의 행과 열에 대응한다. 체크 노드와 배리어블 노드 사이의 결선은, 브랜치(edge)이고, 검사 행렬 H의 "1"에 상당한다. 즉, 검사 행렬 H의 제j행 제i열의 컴포넌트가 1인 경우에는, 도 6에서, 위로부터 i번째의 배리어블 노드( "=" 노드)와, 위로부터 j번째의 체크 노드( "+" 노드)가, 브랜치에 의해 접속된다. 브랜치는, 배리어블 노드에 대응하는 부호 비트가, 체크 노드에 대응하는 구속 조건을 갖는 것을 나타낸다. 또한, 도 6은, 도 5의 검사 행렬 H의 태너 그래프로 되어 있다.
LDPC 부호의 복호 방법인 썸 프로덕트 알고리즘(Sum Product Algorithm)은, 배리어블 노드의 연산과 체크 노드의 연산을 반복하여 행한다.
배리어블 노드에서는, 도 7과 같이, 수학식 1의 연산을 행한다. 즉, 도 7에서, 계산하고자 하고 있는 브랜치에 대응하는 메시지 vi는, 배리어블 노드에 연결되어 있는 남은 브랜치로부터의 메시지 u1 및 u2와, 수신 정보 u0i를 이용하여 계산된다. 다른 브랜치에 대응하는 메시지도 마찬가지로 계산된다.
체크 노드의 연산에 대하여 설명하기 전에, 수학식 2를, 식 a×b=exp{ln(|a|)+ln(|b|)}×sign(a)×sign(b)의 관계를 이용하여, 수학식 6과 같이 고쳐 쓴다. 단, sign(x)은, x≥0일 때 1이고, x<0일 때 -1이다.
Figure 112007084337916-pct00006
또한, x≥0에서, φ(x)=ln(tanh(x/2))로 정의하면, φ-1(x)=2tanh-1(e-x)이기 때문에, 수학식 6은, 수학식 7과 같이 쓸 수 있다.
Figure 112007084337916-pct00007
체크 노드에서는, 도 8과 같이, 수학식 7의 연산을 행한다. 즉, 도 8에서, 계산하고자 하고 있는 브랜치에 대응하는 메시지 uj는, 체크 노드에 연결되어 있는 남은 브랜치로부터의 메시지 v1, v2, v3, v4, v5를 이용하여 계산된다. 다른 브랜치에 대응하는 메시지도 마찬가지로 계산된다.
또한, 함수φ(x)는, φ(x)=ln((ex+1)/(ex-1))로도 표현할 수 있고, x>0에서,φ(x)=φ-1(x)이다. 함수φ(x) 및 φ-1(x)을 하드웨어에 실장할 때에는, LUT(Look Up Table)를 이용하여 실장되는 경우가 있지만, 양자 모두 동일한 LUT로 된다.
썸 프로덕트 알고리즘을 하드웨어에 실장하는 경우, 수학식 1에서 표현되는 배리어블 노드 연산 및 수학식 7로 표현되는 체크 노드 연산을, 적절한 회로 규모와 동작 주파수에서 반복하여 행하는 것이 필요하다.
복호 장치의 실장의 예로서, 우선, 단순하게 각 노드의 연산을 1개씩 순차적으로 행함으로써 복호를 행하는 경우(full serial decoding)의 실장법에 대하여 설명한다.
또한, 여기서는, 예를 들면, 도 9의, 36(행)×108(열)의 검사 행렬 H로 표현되는 부호(부호화율 2/3, 부호 길이108)를 복호하는 것으로 한다. 도 9의 검사 행 렬 H의 1의 수는 323이고, 따라서, 그 태너 그래프에서는, 브랜치의 수는 323개로 된다. 여기서, 도 9의 검사 행렬 H에서는, 0을, "."로 표현하고 있다.
도 10은, LDPC 부호의 1회 복호를 행하는 복호 장치의 구성예를 도시하고 있다.
도 10의 복호 장치에서는, 그 동작하는 1클럭(clock)마다, 1개의 브랜치에 대응하는 메시지가 계산된다.
즉, 도 10의 복호 장치는, 2개의 브랜치용 메모리(100 및 102), 1개의 체크 노드 계산기(101), 1개의 배리어블 노드 계산기(103), 1개의 수신용 메모리(104), 1개의 제어부(105)로 이루어진다.
도 10의 복호 장치에서는, 브랜치용 메모리(100 또는 102)로부터 메시지 데이터가 1개씩 읽어내어지고, 그 메시지 데이터를 이용하여, 원하는 브랜치에 대응하는 메시지 데이터가 계산된다. 그리고, 그 계산에 의해 구해진 메시지 데이터가 1개씩 후단의 브랜치용 메모리(102 또는 100)에 저장되어 간다. 반복 복호를 행할 때에는, 이 1회 복호를 행하는 도 10의 복호 장치를 복수개 종렬로 연접하거나, 혹은 도 10의 복호 장치를 반복하여 이용함으로써, 반복 복호를 실현한다. 또한, 여기서는, 예를 들면, 도 10의 복호 장치가 복수개 접속되어 있는 것으로 한다.
브랜치용 메모리(100)는, 전단의 복호 장치(도시하지 않음)의 배리어블 노드 계산기(103)로부터 공급되는 메시지(D100)를, 후단의 체크 노드 계산기(101)가 읽어내는 순서대로 저장해 간다. 그리고, 브랜치용 메모리(100)는, 체크 노드 계산의 페이즈에서는, 메시지(D100)를, 저장하고 있는 순번대로, 메시지(D101)로서, 체 크 노드 계산기(101)에 공급한다.
체크 노드 계산기(101)는, 제어부(105)로부터 공급되는 제어 신호(D106)에 기초하여, 브랜치용 메모리(100)로부터 공급되는 메시지(D101)를 이용하여, 수학식 7에 따라서 연산을 행하고, 그 연산에 의해 구해진 메시지(D102)를, 후단의 브랜치용 메모리(102)에 공급한다.
브랜치용 메모리(102)는, 전단의 체크 노드 계산기(101)로부터 공급되는 메시지(D102)를, 후단의 배리어블 노드 계산기(103)가 읽어내는 순서대로 저장해 간다. 그리고, 브랜치용 메모리(102)는, 배리어블 노드 계산의 페이즈에서는, 메시지(D102)를, 저장하고 있는 순번대로, 메시지(D103)로서, 배리어블 노드 계산기(103)에 공급한다.
또한, 배리어블 노드 계산기(103)에는, 제어부(105)로부터 제어 신호(D107)가 공급됨과 함께, 수신용 메모리(104)로부터 수신 데이터(D104)가 공급된다. 배리어블 노드 계산기(103)는, 제어 신호(D107)에 기초하여, 브랜치용 메모리(102)로부터 공급되는 메시지(D103)와 수신용 메모리(104)로부터 공급되는 수신 데이터(D104)를 이용하여, 수학식 1에 따라서 연산을 행하고, 그 연산의 결과 얻어지는 메시지(D105)를, 도시하지 않는 후단의 복호 장치의 브랜치용 메모리(100)에 공급한다.
수신용 메모리(104)에는, LDPC 부호화된 수신 데이터(LDPC 부호)가 저장된다. 제어부(105)는, 배리어블 노드 연산을 제어하는 제어 신호(D106)와, 체크 노드 연산을 제어하는 제어 신호(D107)를, 각각 체크 노드 계산기(101)와 배리어블 노드 계산기(103)에 공급한다. 제어부(105)는, 브랜치용 메모리(100)에 모든 브랜치의 메시지가 저장되었을 때, 체크 노드 계산기(101)에 제어 신호(D106)를 공급하고, 브랜치용 메모리(102)에 모든 브랜치의 메시지가 저장되었을 때, 배리어블 노드 계산기(103)에 제어 신호(D107)를 공급한다.
도 11은, 체크 노드 연산을 1개씩 행하는 도 10의 체크 노드 계산기(101)의 구성예를 도시하고 있다.
또한, 도 11에서는, 각 메시지가 부호 비트를 합하여 합계 6비트(bit)로 양자화되어 있는 것으로 하여, 체크 노드 계산기(101)를 도시하고 있다. 또한, 도 11에서는, 도 9의 검사 행렬 H로 표시되는 LDPC 부호의 체크 노드 연산이 행하여진다. 또한, 도 11의 체크 노드 연산기(101)에는, 클럭 ck가 공급되고, 이 클럭 ck는, 필요한 블록에 공급되도록 되어 있다. 그리고, 각 블록은, 클럭 ck에 동기하여 처리를 행한다.
도 11의 체크 노드 계산기(101)는, 제어부(105)로부터 공급되는, 예를 들면, 1비트의 제어 신호(D106)에 기초하여, 브랜치용 메모리(100)로부터 1개씩 읽어들여지는 메시지(D101)를 이용하여, 수학식 7에 따라서 연산을 행한다.
즉, 체크 노드 계산기(101)에서는, 검사 행렬 H의 각 열에 대응하는 배리어블 노드로부터의 6비트의 메시지(D101)(메시지 vi)가 1개씩 읽어들여지고, 그 하위 비트인 절대값(D122)(|vi|)가 LUT(121)에, 그 최상위 비트인 부호 비트(D121)가 EXOR 회로(129)와 FIFO(First In First Out) 메모리(133)에 각각 공급된다. 또한, 체크 노드 계산기(101)에는, 제어부(105)로부터 제어 신호(D106)가 공급되고, 그 제어 신호(D106)는, 셀렉터(124)와 셀렉터(131)에 공급된다.
LUT(121)는, 절대값(D122)(|vi|)에 대하여, 수학식 7에서의 φ(|vi|) 의 연산을 행한 5비트의 연산 결과(D123)(φ(|vi|))를 읽어내고, 가산기(122)와 FIFO 메모리(127)에 공급한다.
가산기(122)는, 연산 결과(D123)(φ(|vi|))와 레지스터(123)에 저장되어 있는 9비트의 값(D124)을 가산함으로써, 연산 결과(D123)를 적산하고, 그 결과 얻어지는 9비트의 적산값을 레지스터(123)에 재저장한다. 또한, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)의 절대값(D122)(|vi|)에 대한 연산 결과가 적산된 경우, 레지스터(123)는 리세트된다.
검사 행렬 H의 1행에 걸친 메시지(D101)가 1개씩 읽어들여지고, 레지스터(123)에 1행분의 연산 결과(D123)가 적산된 적산값이 저장된 경우, 제어부(105)로부터 공급되는 제어 신호(D106)는, 0으로부터 1로 변화된다. 예를 들면, 행의 가중치(row weight)가 「9」인 경우, 제어 신호(D106)는, 1 내지 8클럭째까지는, 「0」으로 되고, 9클럭째에서는 「1」로 된다.
제어 신호(D106)가 「1」인 경우, 셀렉터(124)는, 레지스터(123)에 저장되어 있는 값, 즉, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)(메시지 vi)로부터 구해진 φ(|vi|)가 적산된 9비트의 값(D124)(i=1부터 i=dc까지의 Σφ (|vi|))를 선택하고, 값(D125)으로서, 레지스터(125)에 출력하여 저장시킨다. 레지스터(125)는, 저장하고 있는 값(D125)을, 9비트의 값(D126)으로 하여, 셀렉터(124)와 가산기(126)에 공급한다. 제어 신호(D106)가 「0」인 경우, 셀렉터(124)는, 레지스터(125)로부터 공급된 값(D126)을 선택하고, 레지스터(125)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)(메시지 vi)로부터 구해진 φ(|vi|)가 적산될 때까지, 레지스터(125)는, 전회 적산된 φ(|vi|)를, 셀렉터(124)와 가산기(126)에 공급한다.
한편, FIFO 메모리(127)는, 레지스터(125)로부터 새로운 값(D126)(i=1부터 i=dc까지의 Σφ(|vi|))가 출력될 때까지의 동안, LUT(121)가 출력한 연산 결과(D123)(φ(|vi|))를 지연시키고, 5비트의 값(D127)으로서 감산기(126)에 공급한다. 감산기(126)는, 레지스터(125)로부터 공급된 값(D126)으로부터, FIFO 메모리(127)로부터 공급된 값(D127)을 감산하고, 그 감산 결과를, 5비트의 감산값(D128)으로서 LUT(128)에 공급한다. 즉, 감산기(126)는, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)(메시지 vi)로부터 구해진 φ(|vi|)의 적산값으로부터, 구하고자 하는 브랜치로부터의 메시지(D101)(메시지 vi)로부터 구해진 φ((|vi|)를 감산하고, 그 감산값 (i=1부터 i=dc-1까지의 Σφ(|vi|))를 감산값(D128)으로서 LUT(128)에 공급한다.
또한, 감산기(126)는, 레지스터(125)로부터 공급되는 9비트의 값(D126)으로 부터, FIFO 메모리(127)로부터 공급되는 5비트의 값(D127)을 감산하기 때문에, 그 감산 결과는, 최대로 9비트로 될 수 있는 것에 대하여, 5비트의 감산값(D128)을 출력한다. 이 때문에, 레지스터(125)로부터 공급되는 9비트의 값(D126)으로부터, FIFO 메모리(127)로부터 공급되는 5비트의 값(D127)을 감산한 감산 결과를, 5비트로 나타낼 수 없는 경우, 즉, 감산 결과가, 5비트로 나타낼 수 있는 최대값(31(2진수로는 11111))을 초과하는 경우에는, 감산기(126)는, 감산 결과를, 5비트로 나타낼 수 있는 최대값으로 클립핑하고, 5비트의 감산값(D128)을 출력한다.
LUT(128)는, 감산값(D128)(i=1부터 i=dc-1까지의 Σφ(|vi|))에 대하여, 수학식 7에서의 φ-1(Σφ(|vi|))의 연산을 행한 5비트의 연산 결과(D129)(φ-1(Σφ(|vi|))을 출력한다.
이상의 처리와 병행하여, EXOR 회로(129)는, 레지스터(130)에 저장되어 있는 1비트의 값(D131)과 부호 비트(D121)의 배타적 논리합을 연산함으로써, 부호 비트끼리의 승산을 행하고, 1비트의 승산 결과(D130)를 레지스터(130)에 재저장한다. 또한, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)의 부호 비트(D121)가 승산된 경우, 레지스터(130)는 리세트된다.
검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)의 부호 비트(D121)가 승산된 승산 결과(D130)(i=1부터 dc까지의 Πsign(vi))이 레지스터(130)에 저장된 경우, 제어부(105)로부터 공급되는 제어 신호(D106)는, 「0」으로부터 「1」로 변화된다.
제어 신호(D106)가 「1」인 경우, 셀렉터(131)는, 레지스터(130)에 저장되어 있는 값, 즉, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)의 부호 비트(D121)가 승산된 값(D131)(i=1부터 i=dc까지의 Πsign(vi))을 선택하고, 1비트의 값(D132)으로서 레지스터(132)에 출력하여 저장시킨다. 레지스터(132)는, 저장하고 있는 값(D132)을, 1비트의 값(D133)으로서 셀렉터(131)와 EXOR 회로(134)에 공급한다. 제어 신호(D106)가 「0」인 경우, 셀렉터(131)는, 레지스터(132)로부터 공급된 값(D133)을 선택하고, 레지스터(132)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)(메시지 vi)의 부호 비트(D121)가 승산될 때까지, 레지스터(132)는, 전회 저장한 값을, 셀렉터(131)와 EXOR 회로(134)에 공급한다.
한편, FIFO 메모리(133)는, 레지스터(132)로부터 새로운 값(D133)(i=1부터 i=dc까지의 Πsign(vi))이 EXOR 회로(134)에 공급될 때까지의 동안, 부호 비트(D121)를 지연시키고, 1비트의 값(D134)으로서 EXOR 회로(134)에 공급한다. EXOR 회로(134)는, 레지스터(132)로부터 공급된 값(D133)과, FIFO 메모리(133)로부터 공급된 값(D134)의 배타적 논리합을 연산함으로써, 값(D133)을, 값(D134)으로 제산하고, 1비트의 제산 결과를 제산값(D135)으로서 출력한다. 즉, EXOR 회로(134)는, 검사 행렬 H의 1행에 걸친 모든 브랜치로부터의 메시지(D101)의 부호 비트(D121)(sign(|vi|)의 승산값을, 구하고자 하는 브랜치로부터의 메시지(D101) 의 부호 비트(D121)(sign(|vi|))로 제산하고, 그 제산값(i=1부터 i=dc-1까지의 Πsign(|vi|))을 제산값(D135)으로서 출력한다.
체크 노드 계산기(101)에서는, LUT(128)로부터 출력된 5비트의 연산 결과(D129)를 하위 5비트로 함과 함께, EXOR 회로(134)로부터 출력된 1비트의 제산값(D135)을 최상위 비트로 하는 합계 6비트가 메시지(D102)(메시지 uj)로서 출력된다.
이상과 같이, 체크 노드 계산기(101)에서는, 수학식 7의 연산이 행하여져서, 메시지 uj가 구해진다.
또한, 도 9의 검사 행렬 H의 행의 가중치의 최대는 9이기 때문에, 즉, 체크 노드에 공급되는 메시지의 최대수는 9이므로, 체크 노드 계산기(101)는, 9개의 메시지(φ(|vi|))를 지연시키는 FIFO 메모리(127)와 FIFO 메모리(133)를 갖고 있다.
행의 가중치가 9 미만인 행의 메시지를 계산할 때에는, FIFO 메모리(127)와 FIFO 메모리(133)에서의 지연량이, 그 행의 가중치의 값으로 감해진다.
도 12는, 배리어블 노드 연산을 1개씩 행하는 도 10의 배리어블 노드 계산기(103)의 구성예를 도시하고 있다.
또한, 도 12에서는, 각 메시지가 부호 비트를 합하여 합계 6비트(bit)로 양자화되어 있는 것으로 하여, 배리어블 노드 계산기(103)를 도시하고 있다. 또한, 도 12에서는, 도 9의 검사 행렬 H로 나타내는 LDPC 부호의 배리어블 노드 연산이 행하여진다. 또한, 도 12의 배리어블 노드 계산기(103)에는, 클럭 ck가 공급되고, 클럭 ck는, 필요한 블록에 공급되도록 되어 있다. 그리고, 각 블록은, 클럭 ck에 동기하여 처리를 행한다.
도 12의 배리어블 노드 계산기(103)는, 제어부(105)로부터 공급되는, 예를 들면, 1비트의 제어 신호(D107)에 기초하여, 브랜치용 메모리(102)로부터 1개씩 읽어들여지는 메시지(D103)와, 수신용 메모리(104)로부터 읽어들여지는 수신 데이터(D104)를 이용하여, 수학식 1에 따라서 연산을 행한다.
즉, 배리어블 노드 계산기(103)에서는, 검사 행렬 H의 각 행에 대응하는 체크 노드로부터의 6비트의 메시지(D103)(메시지 uj)가 1개씩 읽어들여지고, 그 메시지(D103)가, 가산기(151)와 FIFO 메모리(155)에 공급된다. 또한, 배리어블 노드 계산기(103)에서는, 수신용 메모리(104)로부터 6비트의 수신 데이터(D104)가 1개씩 읽어들여져, 가산기(156)에 공급된다. 또한, 배리어블 노드 계산기(103)에는, 제어부(105)로부터 제어 신호(D107)가 공급되며, 그 제어 신호(D107)는, 셀렉터(153)에 공급된다.
가산기(151)는, 메시지(D103)(메시지 uj)와 레지스터(152)에 저장되어 있는 9비트의 값(D151)을 가산함으로써, 메시지(D103)를 적산하고, 그 결과 얻어지는 9비트의 적산값을, 레지스터(152)에 재저장한다. 또한, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 메시지(D103)가 적산된 경우, 레지스터(152)는 리세트된다.
검사 행렬 H의 1열에 걸친 메시지(D103)가 1개씩 읽어들여지고, 레지스 터(152)에 1열분의 메시지(D103)가 적산된 값이 저장된 경우, 제어부(105)로부터 공급되는 제어 신호(D107)는, 「0」으로부터 「1」로 변화된다. 예를 들면, 열의 가중치가 「5」인 경우, 제어 신호(D107)는, 1부터 4클럭째까지는 「0」으로 되고, 5클럭째에서는 「1」로 된다.
제어 신호(D107)가 「1」인 경우, 셀렉터(153)는, 레지스터(152)에 저장되어 있는 값, 즉, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 메시지(D103)(메시지 uj)가 적산된 9비트의 값(D151)(j=1부터 dv까지의 Σuj)을 선택하고, 레지스터(154)에 출력하여 저장시킨다. 레지스터(154)는, 저장하고 있는 값(D151)을, 9비트의 값(D152)으로 하여, 셀렉터(153)와 가감산기(156)에 공급한다. 제어 신호(D107)가 「0」인 경우, 셀렉터(153)는, 레지스터(154)로부터 공급된 값(D152)을 선택하고, 레지스터(154)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 메시지(D103)(메시지 uj)가 적산될 때까지, 레지스터(154)는, 전회 적산된 값을, 셀렉터(153)와 가감산기(156)에 공급한다.
한편, FIFO 메모리(155)는, 레지스터(154)로부터 새로운 값(D152)(j=1부터 dv까지의 Σuj)이 출력될 때까지의 동안, 체크 노드로부터의 메시지(D103)를 지연시키고, 6비트의 값(D153)으로서 가감산기(156)에 공급한다. 가감산기(156)는, 레지스터(154)로부터 공급된 값(D152)으로부터, FIFO 메모리(155)로부터 공급된 값(D153)을 감산한다. 즉, 가감산기(156)는, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 메시지(D103)(메시지 uj)의 적산값으로부터, 구하고자 하는 브랜치로부 터의 메시지 uj를 감산하고, 그 감산값(j=1부터 dv-1까지의 Σuj)을 구한다. 또한, 가감산기(156)에는, 그 감산값(j=1부터 dv-1까지의 Σuj)에, 수신용 메모리(104)로부터 공급된 수신 데이터(D104)를 가산하고, 그 결과 얻어지는 6비트의 값을 메시지(D105)(메시지 vi)로서 출력한다.
이상과 같이, 배리어블 노드 계산기(103)에서는, 수학식 1의 연산이 행하여져서, 메시지 vi가 구해진다.
또한, 도 9의 검사 행렬 H의 열의 가중치의 최대는 5이기 때문에, 즉, 배리어블 노드에 공급되는 메시지의 최대수는 5이기 때문에, 배리어블 노드 계산기(103)는, 5개의 메시지(uj)를 지연시키는 FIFO 메모리(155)를 갖고 있다. 열의 가중치가 5미만인 열의 메시지를 계산할 때에는, FIFO 메모리(155)에서의 지연량이, 그 열의 가중치의 값으로 감해진다.
또한, 가감산기(156)는, 레지스터(154)로부터 공급되는 9비트의 값(D152)으로부터, FIFO 메모리(155)로부터 공급되는 6비트의 값(D153)을 감산함과 함께, 수신용 메모리(104)로부터 공급되는 6비트의 수신 데이터(D104)를 가산하는 연산을 행하기 때문에, 그 연산 결과는, 6비트의 메시지(D105)로 표시할 수 있는 최소값 미만으로 되거나, 또는 최대값을 초과하는 경우가 있다. 가감산기(156)는, 연산 결과가, 6비트의 메시지(D105)로 표시할 수 있는 최소값 미만인 경우에는, 그 최소값으로 클립핑하고, 연산 결과가, 6비트의 메시지(D105)로 표시할 수 있는 최대값 을 초과하는 경우에는, 그 최대값으로 클립핑한다.
도 10의 복호 장치에서는, 검사 행렬 H의 가중치에 따라서, 제어부(105)로부터 제어 신호가 공급된다. 그리고, 도 10의 복호 장치에 의하면, 브랜치용 메모리(100 및 102), 및 체크 노드 계산기(101) 및 배리어블 노드 계산기(103)의 FIFO 메모리(127, 133, 155)의 용량만 충분하면, 제어 신호만을 변화시킴으로써 다양한 검사 행렬 H의 LDPC 부호를 복호할 수 있다.
또한, 도시하지 않지만, 도 10의 복호 장치에서, 복호의 최종단에서는, 수학식 1의 배리어블 노드 연산 대신에, 수학식 5의 연산이 행하여지고, 그 연산 결과가, 최종적인 복호 결과로서 출력된다.
도 10의 복호 장치를 반복해서 이용하여, LDPC 부호를 복호하는 경우에는, 체크 노드 연산과 배리어블 노드 연산이 교대로 행하여진다. 즉, 도 10의 복호 장치에서는, 체크 노드 계산기(101)에 의한 체크 노드 연산의 결과를 이용하여, 배리어블 노드 계산기(103)에 의해 배리어블 노드 연산이 행하여지고, 배리어블 노드 계산기(103)에 의한 배리어블 노드 연산의 결과를 이용하여, 체크 노드 계산기(101)에 의해 체크 노드 연산이 행하여진다.
따라서, 323의 브랜치를 갖는 도 9의 검사 행렬 H를 이용한 1회의 복호에, 323×2=646클럭(clock)을 필요로 한다. 예를 들면, 50회의 반복 복호를 행하기 위해서는, 부호 길이인 108개의 부호(수신 데이터)를 1프레임으로 하여, 그 1프레임을 수신하는 동안에, 646×50=32300 클럭 동작하는 것이 필요하며, 수신 주파수의 약 300(≒32300/108)배의 고속 동작이 필요하게 된다. 수신 주파수가 수+㎒인 것 으로 하면, ㎓ 이상의 속도에서의 동작을 요구받게 된다.
또한, 도 10의 복호 장치를, 예를 들면, 50대 연접하여, LDPC 부호를 복호하는 경우에는, 1프레임(frame)째의 배리어블 노드 연산을 행하고 있는 동안에, 2프레임째의 체크 노드 연산을 행하고, 3프레임째의 배리어블 노드 연산을 행한다고 하는 식으로, 복수의 배리어블 노드 연산과 체크 노드 연산을 동시에 행할 수 있다. 이 경우, 108개의 부호를 수신하는 동안에, 323개의 브랜치를 계산하면 되므로, 복호 장치는, 수신 주파수의 약 3(≒323/108)배의 주파수에서 동작하면 되게 되어, 충분히 실현 가능하다.
그러나, 이 경우, 회로 규모가, 단순하게는, 도 10의 복호 장치의 50배로 된다.
다음으로, 전체 노드의 연산을 동시에 행함으로써 복호를 행하는 경우 (full parallel decoding)의 복호 장치의 실장법에 대하여 설명한다.
이 실장법에 대해서는, 예를 들면, 비특허 문헌 1에 기재되어 있다.
도 13은, 도 9의 검사 행렬 H로 표현되는 부호(부호화율 2/3, 부호 길이 108)를 복호하는 복호 장치의 일례의 구성을 도시하고 있다.
도 13의 복호 장치에서는, 브랜치용 메모리(202 또는 206)로부터, 323개 있는 브랜치에 대응하는 메시지 데이터를 모두 동시에 읽어내고, 그 메시지 데이터를 이용하여, 323개의 브랜치에 대응하는 새로운 메시지 데이터를 연산한다. 또한, 그 연산의 결과 구해진 새로운 메시지 데이터가 모두 동시에 후단의 브랜치용 메모리(206 또는 202)에 저장되어 간다. 그리고, 도 13의 복호 장치를 반복하여 이용 함으로써 반복 복호가 실현된다.
도 13에서, 복호 장치는, 1개의 수신용 메모리(205), 2개의 브랜치 교체 장치(200 및 203), 2개의 브랜치용 메모리(202 및 206), 36개의 체크 노드 계산기(2011 내지 20136), 108개의 배리어블 노드 계산기(2041 내지 204108)로 이루어진다. 이하, 각 부에 대하여 상세하게 설명한다.
브랜치용 메모리(206)는, 전단의 배리어블 노드 계산기(2041 내지 204108)로부터의 메시지(D2061 내지 D206108)를 모두 동시에 저장하고, 다음의 시각(다음의 클럭의 타이밍)에, 메시지(D2061 내지 D206108)를, 메시지(D2071 내지 D207108)로서 읽어내고, 다음단의 브랜치 교체 장치(200)에, 메시지(D200)(D2001 내지 D200108)로서 공급한다. 브랜치 교체 장치(200)는, 브랜치용 메모리(206)로부터 공급된 메시지(D2001 내지 D200108)의 순번을, 도 9의 검사 행렬 H에 따라서 재배열하고(교체하고), 체크 노드 계산기(2011 내지 20136)에, 메시지(D2011 내지 D20136)로서 공급한다.
체크 노드 계산기(2011 내지 20136)는, 브랜치 교체 장치(200)로부터 공급되는 메시지(D2011 내지 D20136)를 이용하여 수학식 7에 따라서 연산을 행하고, 그 연산의 결과 얻어지는 메시지(D2021 내지 D20236)를, 브랜치용 메모리(202)에 공급한다.
브랜치용 메모리(202)는, 전단의 체크 노드 계산기(2011 내지 20136)로부터 공급되는 메시지(D2021 내지 D20236)를 모두 동시에 저장하고, 다음의 시각에, 그 모든 메시지(D2021 내지 D20236)를, 메시지(D2031 내지 D20336)로서, 다음단의 브랜치 교체 장치(203)에 공급한다.
브랜치 교체 장치(203)는, 브랜치용 메모리(202)로부터 공급된 메시지(D2031 내지 D20336)의 순번을 도 9의 검사 행렬 H에 따라서 재배열하고, 배리어블 노드 계산기(2041 내지 204108)에, 메시지(D2041 내지 D204108)로서 공급한다.
배리어블 노드 계산기(2041 내지 204108)는, 브랜치 교체 장치(203)로부터 공급되는 메시지(D2041 내지 D204108)와, 수신용 메모리(205)로부터 공급되는 수신 데이터(D2051 내지 D205108)를 이용하여 수학식 1에 따라서 연산을 행하고, 그 연산의 결과 얻어지는 메시지(D2061 내지 D206108)를, 다음단의 브랜치용 메모리(206)에 공급한다.
도 14는, 체크 노드 연산을 동시에 행하는 도 13의 체크 노드 계산기(201m)(m=1, 2,…, 36)의 구성예를 도시하고 있다.
도 14의 체크 노드 계산기(201m)에서는, 도 11의 체크 노드 계산기(101)와 마찬가지로 하여, 수학식 7의 체크 노드 연산이 행하여지는데, 그 체크 노드 연산 이, 모든 브랜치에 대하여 동시에 행하여진다.
즉, 도 14의 체크 노드 계산기(201m)에서는, 브랜치 교체 장치(200)로부터 공급되는 도 9의 검사 행렬 H의 각 열에 대응하는 배리어블 노드로부터의 메시지(D2211 내지 D2219)(vi)가 모두 동시에 읽어들여지고, 각각의 하위 5비트인 절대값(D2221 내지 D2229)(|vi|)이 LUT(2211 내지 2219)에 각각 공급된다. 또한, 메시지(D2211 내지 D2219)(vi)의 최상위 비트인 1비트의 부호 비트(D2231 내지 D2239)가, EXOR 회로(2261 내지 2269)에 각각 공급됨과 함께, EXOR 회로(225)에 공급된다.
LUT(2211 내지 2219)는, 절대값(D2221 내지 D2229)(|vi|)에 대하여, 수학식 7에서의 φ(|vi|)의 연산을 행한 5비트의 연산 결과(D2241 내지 D2249)(φ(|vi|))를 각각 읽어내고, 각각을 감산기(2231 내지 2239)에 공급한다. 또한, LUT(2211 내지 2219)는, 연산 결과(D2241 내지 D2249)(φ|vi|))를 가산기(222)에 공급한다.
가산기(222)는, 연산 결과(D2241 내지 D2249)(φ(|vi|))의 값의 총합(1행분의 연산 결과의 총합)을 연산하고, 9비트의 연산 결과(D225)(i=1부터 9의 Σφ(|vi|))를, 감산기(2231 내지 2239)에 공급한다. 감산기(2231 내지 2239)는, 연산 결과(D225)로부터, 연산 결과(D2241 내지 D2249)(|vi|))를 각각 감산하고, 5비트의 감산값(D2271 내지 D2279)을, LUT(2241 내지 2249)에 공급한다. 즉, 감산기(2231 내 지 2239)는, 모든 브랜치로부터의 메시지 vi로부터 구해진 φ(|vi|)의 적산값으로부터, 구하고자 하는 브랜치로부터의 메시지 vi로부터 구해진 φ(|vi|)를 감산하고, 그 감산값(D2271 내지 D2279)(i=1부터 8까지의 Σφ(|vi|))를 LUT(2241 내지 2249)에 각각 공급한다. LUT(2241 내지 2249)는, 감산값(D2271 내지 D2279)에 대하여, 수학식 7에서의 φ-1(Σφ(|vi|))의 연산을 행한 5비트의 연산 결과(D2291 내지 D2289)를 읽어내서 출력한다.
한편, EXOR 회로(225)는, 모든 부호 비트(D2231 내지 D2239)의 배타적 논리합을 연산함으로써, 부호 비트(D2231 내지 D2239)의 승산을 행하고, 1비트의 승산값(D226)(1행분의 부호 비트의 승산값(i=1부터 9까지의 Πsign(vi)))을 EXOR 회로(2261 내지 2269)에 각각 공급한다. EXOR 회로(2261 내지 2269)는, 승산값(D226)과 부호 비트(D2231 내지 D2239) 각각과의 배타적 논리를 연산함으로써, 승산값(D226)을, 부호 비트(D2231 내지 D2239) 각각으로 제산한 1비트의 제산값(D2291 내지 D2299)(i=1부터 8까지의 Πsign(vi))을 구하여 출력한다.
체크 노드 계산기(201m)에서는, LUT(2241 내지 2249)로부터 출력된 5비트의 연산 결과(D2281 내지 D2289) 각각을 하위 5비트로 함과 함께, EXOR 회로(2261 내지 2269)로부터 출력된 제산값(D2291 내지 D2299) 각각을 최상위 비트로 하는 합계 6비트가, 체크 노드 연산의 결과 얻어지는 메시지(D2301 내지 D2309)로서 출력된다.
이상과 같이, 체크 노드 계산기(201m)에서는, 수학식 7의 연산이 행하여져서, 메시지 uj가 구해진다.
또한, 도 14에서는, 각 메시지가 부호 비트를 합하여 합계 6비트로 양자화되어 있는 것으로 하여, 체크 노드 계산기(201m)를 도시하고 있다. 또한, 도 14의 회로는 1개의 체크 노드에 상당한다. 여기서 처리의 대상으로 하고 있는 도 9의 검사 행렬 H에 대해서는, 그 행수인 36행의 체크 노드가 존재하기 때문에, 도 13의 복호 장치는, 도 14에 도시하는 바와 같은 체크 노드 계산기(201m)를 36개 갖고 있다.
여기서, 도 14의 체크 노드 계산기(201m)에서는, 9개의 메시지를 동시에 계산할 수 있다. 그리고, 여기서 처리의 대상으로 하고 있는 도 9의 검사 행렬 H의 행의 가중치는, 제1행이 8이고, 제2 내지 제36행이 9이기 때문에, 즉, 체크 노드에 공급되는 메시지의 수가, 8인 케이스가 1개, 9인 케이스가 29 있기 때문에, 체크 노드 계산기(201m)는, 도 14의 회로와 마찬가지의 8개의 메시지를 동시에 계산할 수 있는 회로 구성으로 되어 있고, 남은 체크 노드 계산기(2011 내지 20136)는, 도 14의 회로와 동일 구성으로 되어 있다.
도 15는, 배리어블 노드 연산을 동시에 행하는 도 13의 배리어블 노드 계산기(204p)(p=1, 2,…, 108)의 구성예를 도시하고 있다.
도 15의 배리어블 노드 계산기(204p)에서는, 도 12의 배리어블 노드 계산기(103)와 마찬가지로 하여, 수학식 1의 배리어블 노드 연산이 행하여지는데, 그 배리어블 노드 연산이, 모든 브랜치에 대하여 동시에 행하여진다.
즉, 도 15의 배리어블 노드 계산기(204p)에서는, 브랜치 교체 장치(203)로부터 공급되는, 검사 행렬 H의 각 행에 대응하는 체크 노드로부터의 6비트의 메시지(D2511 내지 D2515)(메시지 uj)가 모두 동시에 읽어들여지고, 각각 가산기(2521 내지 2525)에 공급됨과 함께, 가산기(251)에 공급된다. 또한, 배리어블 노드 계산기(204p)에는, 수신용 메모리(205)로부터 수신 데이터(D271)가 공급되고, 그 수신 데이터(D271)는, 가감산기(2521 내지 2525)에 공급된다.
가산기(251)는, 모든 메시지(D2511 내지 D2515)(메시지 uj)를 적산하고, 9비트의 적산값(D252)(1열분의 메시지의 총합 값(i=1부터 5까지의 Σuj))을 가감산기(2521 내지 2525)에 공급한다. 가감산기(2521 내지 2525)는, 가산값(D252)으로부터, 메시지(D2511 내지 D2515)(메시지 uj)를 각각 감산한다. 즉, 가감산기(2521 내지 2525)는, 모든 브랜치로부터의 메시지 uj의 적산값(D252)으로부터, 구하고자 하 는 브랜치로부터의 메시지(D2511 내지 D2515)(메시지 uj)를 각각 감산하고, 그 감산값(j=1부터 4까지의 Σuj)을 구한다.
또한, 가감산기(2521 내지 2525)는, 감산값(j=1부터 4까지의 Σuj)에, 수신 데이터(D271)(u0i)을 가산하여, 6비트의 가산값(D2531 내지 D2535)을, 배리어블 노드 연산의 결과로서 출력한다.
이상과 같이, 배리어블 노드 계산기(204p)에서는, 수학식 1의 연산이 행하여져서, 메시지 vi가 구해진다.
또한, 도 15에서는, 각 메시지가 부호 비트를 합하여 합계 6비트로 양자화되어 있는 것으로 하여, 배리어블 노드 계산기(204p)를 도시하고 있다. 또한, 도 15의 회로는 1개의 배리어블 노드에 상당한다. 여기서 처리의 대상으로 하고 있는 도 9의 검사 행렬 H에 대해서는, 그 열수인 108열의 배리어블 노드가 존재하기 때문에, 도 13의 복호 장치는, 도 15에 도시한 바와 같은 회로를 108개 갖고 있다.
여기서, 도 15의 배리어블 노드 계산기(204p)에서는, 5개의 메시지를 동시에 계산할 수 있다. 그리고, 여기서 처리의 대상으로 하고 있는 도 9의 검사 행렬 H는, 가중치가 5, 3, 2, 1인 열이, 각각, 18열, 54열, 35열, 1열 있으므로, 배리어블 노드 계산기(2041 내지 204108) 중의 18개는, 도 15의 회로와 동일 구성으로 되어 있고, 남은 54개, 35개, 1개는, 도 15의 회로와 마찬가지의 3, 2, 1개의 메시지를 각각 동시에 계산할 수 있는 회로 구성으로 되어 있다.
또한, 도시하지 않지만, 도 13의 복호 장치에서도, 도 10에서의 경우와 마찬가지로, 복호의 최종단에서는, 수학식 1의 배리어블 노드 연산 대신에, 수학식 5의 연산이 행하여지고, 그 연산 결과가 최종적인 복호 결과로서 출력된다.
도 13의 복호 장치에 따르면, 323개 있는 브랜치에 대응하는 메시지 전부를 1클럭에서 동시에 계산할 수 있다.
도 13의 복호 장치를 반복해서 이용하여 복호하는 경우에는, 체크 노드 연산과 배리어블 노드 연산을 교대로 행하여, 1회의 복호를 2클럭에서 행할 수 있다. 따라서, 예를 들면, 50회의 복호를 행하기 위해서는, 부호 길이가 108개인 부호를 1프레임으로 하는 수신 데이터를 수신하는 동안에 2×50=100클럭 동작하면 되게 되어, 거의 수신 주파수와 동일한 동작 주파수면 되게 된다. 일반적으로, LDPC 부호는, 부호 길이가 수천 내지 수만으로 크기 때문에, 도 13의 복호 장치를 이용하면, 복호 횟수를 극히 많게 할 수 있어, 오류 정정 성능의 향상을 기대할 수 있다.
그러나, 도 13의 복호 장치는, 태너 그래프의 모든 브랜치에 대응하는 메시지의 연산을, 병렬로 행하기 때문에, 회로 규모가, 부호 길이에 비례하여 커진다. 또한, 도 13의 복호 장치를, 임의의 부호 길이의, 임의의 부호화율의, 임의의 검사 행렬 H를 갖는 LDPC 부호의 복호를 행하는 장치로서 구성한 경우, 그 복호 장치에서, 다른 부호 길이나, 다른 부호화율, 다른 검사 행렬 H를 갖는 LDPC 부호의 복호를 행하는 것은 곤란하게 된다. 즉, 도 13의 복호 장치는, 도 10의 복호 장치와 같이, 제어 신호를 변화시키는 것 만으로는, 다양한 부호를 복호하는 것에 대처하 는 것이 곤란하여, 부호 의존성이 높다.
도 10 및 도 13의 복호 장치 이외에, 1개도 전부도 아니고, 4개씩의 메시지의 계산을 동시에 행하는 실장법에 대하여, 예를 들면, 비특허 문헌 2에 설명되어 있지만, 이 경우, 메모리의 서로 다른 어드레스로부터의 동시 읽어내기, 혹은 동시 기입을 피하는 것이 일반적으로는 용이하지 않아, 메모리 액세스 제어가 곤란하다고 하는 문제가 있다.
이 문제를 해결하기 위해서, 랜덤한 부호가 아니라, 부분적으로 병렬 복호기의 실장에 친화성이 높은 부호 및 복호 장치에 대하여 보고되어 있다(예를 들면, 비특허 문헌 3과 4 참조). 그러나, 비특허 문헌 3에 기재되어 있는 복호 장치의 실현 방법은 특정한 부호에만 대응하는 것이며, 1개의 복호기에서 다양한 부호 길이, 부호화율의 부호를 복호하는 것은 곤란하다.
또한, 도 16에 도시하는 바와 같이, 6×6의 단위 행렬, 그 단위 행렬의 1 중 1개 이상이 0으로 된 행렬(이하, 적절하게, 준단위 행렬이라고 함), 단위 행렬 또는 준단위 행렬을 사이클릭 시프트(cyclic shift)한 행렬(이하, 적절하게, 시프트 행렬이라고 함), 단위 행렬, 준단위 행렬, 또는 시프트 행렬 중의 2 이상(복수)의 합(이하, 적절하게, 합 행렬이라고 함), 6×6의 0 행렬의 조합으로 표현하는 것이 가능한 검사 행렬 H를 갖는 LDPC 부호, 혹은 행이나 열의 치환에 의해, 이들 행렬의 조합으로 표현하는 것이 가능한 검사 행렬 H를 갖는 LDPC 부호이면, 부호 길이, 부호화율이 서로 다른 부호이어도 복호 가능한 복호 장치가 있다(예를 들면, 특허 문헌1 참조).
또한, 도 16의 검사 행렬 H는, 도 9에 도시한 검사 행렬 H를, 6×6의 행렬의 단위로 간격을 두고 도시하고 있다. 또한, 도 16의 검사 행렬 H를 구성하는 6×6의 단위 행렬, 준단위 행렬, 시프트 행렬, 합 행렬, 0 행렬을, 이하, 적절하게, 구성 행렬이라고 한다.
도 17 내지 도 22를 참조하여, 도 16의 검사 행렬 H로 표현되는 LDPC 부호를 복호하는 복호 장치에 대하여 설명한다.
도 17은, 도 16의 검사 행렬 H로 표현되는 LDPC 부호를 복호하는 복호 장치(400)의 구성의 일례를 도시하는 블록도이다.
복호 장치(400)는, 복호 도중 결과 저장용 메모리(410), 사이클릭 시프트 회로(411), 6개의 계산기(4121) 내지 계산기(4126)로 이루어지는 계산부(412), 복호 도중 결과 저장용 메모리(413), 사이클릭 시프트 회로(414), 6개의 계산기(4151) 내지 계산기(4156)로 이루어지는 계산부(415), 수신용 메모리(416), 및 제어부(417)로 구성된다.
여기서, 계산기(412k)(k=1,2,…, 6)에서 행하여지는 연산과, 계산기(415k)에서 행하여지는 연산에 대하여, 수학식을 이용하여 설명한다.
구체적으로는, 계산부(412)는, 상술한 수학식 7과, 이하에 표현하는 수학식 8에 따른 제1 연산을 행하고, 그 제1 연산의 결과인 복호 도중 결과 uj를 복호 도중 결과 저장용 메모리(410)에 공급하여 저장시킨다. 계산부(415)는, 상술한 수학식 5에 따른 제2 연산을 행하고, 그 제2 연산의 결과인 복호 도중 결과 v를 복호 도중 결과 저장용 메모리(410)에 공급하여 저장시킨다.
Figure 112007084337916-pct00008
또한, 수학식 8의 udv는, 검사 행렬 H의 i열의 메시지를 구하고자 하는 브랜치로부터의 체크 노드 연산의 도중 결과(여기서는, 체크 노드 연산 결과 그 자체)를 나타내고 있다. 즉, udv는, 구하고자 하는 브랜치에 대응하는 복호 도중 결과이다.
즉, 상술한 수학식 5에 따른 제2 연산의 결과 얻어지는 복호 도중 결과 v는, 수신값 u0i와 검사 행렬 H의 i열의 각 행의 1에 대응하는 모든 브랜치로부터의 체크 노드 연산의 복호 도중 결과 uj를 가산한 것이므로, 상술한 수학식 7에 이용되는 값 vi는, 수학식 5에 따른 제2 연산의 결과 얻어지는 복호 도중 결과 v로부터, 검사 행렬 H의 i열의, 각 행의 1에 대응하는 브랜치로부터의 체크 노드 연산의 복호 도중 결과 uj 중, 메시지를 구하고자 하는 브랜치로부터의 체크 노드 연산의 복호 도중 결과 udv를 뺀 값으로 된다. 즉, 수학식 7의 연산에 이용되는 값 vi를 구하는 수학식 1의 연산은, 상술한 수학식 5와 수학식 8을 조합한 연산이다.
따라서, 복호 장치(400)에서는, 계산부(412)에 의한 수학식 7 및 수학식 8에 따른 제1 연산과, 계산부(415)에 의한 수학식 5에 따른 제2 연산이 교대로 행하여 지고, 계산부(415)가, 최후의 제2 연산의 결과를 복호 결과로서 출력함으로써, LDPC 부호의 반복 복호를 행할 수 있다.
또한, 여기서는, 수학식 7과 수학식 8에 따른 제1 연산 결과를, 복호 도중 결과 uj라고 기재하는데, 이 복호 도중 결과 uj는, 수학식 7의 체크 노드 연산 결과 uj와 동일하다.
또한, 제2 연산에 의해 구해지는 수학식 5의 v는, 수학식 1의 배리어블 노드 연산 결과 vi에 대하여, 메시지를 구하고자 하는 브랜치로부터의 체크 노드 연산 결과 uj를 가산한 것이기 때문에, 검사 행렬 H의 1열(1개의 배리어블 노드)에 대하여, 1개만 구해진다.
복호 장치(400)에서는, 계산부(412)가, 계산부(415)에 의한 제2 연산의 결과인 검사 행렬 H의 열에 대응하는 복호 도중 결과 v를 이용하여, 제1 연산을 행하고, 그 연산의 결과 얻어지는 검사 행렬 H의 i열의, 각 행의 1에 대응하는 브랜치의 메시지(각 체크 노드가 각 브랜치에 출력하는 메시지)의 브랜치로부터의 체크 노드 연산의 복호 도중 결과 uj를 복호 도중 결과 저장용 메모리(413)에 저장한다. 따라서, 복호 도중 결과 저장용 메모리(413)의 용량은, 체크 노드 연산의 결과를 저장하는 경우와 마찬가지로, 검사 행렬 H의 1의 수(전체 브랜치수)와 양자화 비트수를 승산한 값으로 된다.
한편, 계산부(415)는, 계산부(412)에 의한 제1 연산의 결과인 검사 행렬 H의 i열의, 각 행의 "1"에 대응하는 복호 도중 결과 uj와 수신값 u0i를 이용하여, 제2 연산을 행하고, 그 연산의 결과 얻어지는 i열에 대응하는 복호 도중 결과 v를 복호 도중 결과 저장용 메모리(410)에 저장한다. 따라서, 복호 도중 결과 저장용 메모리(410)에 필요한 용량은, 검사 행렬 H의 "1"의 수보다 적은 검사 행렬 H의 열수, 즉, LCPC 부호의 부호 길이와 복호 도중 결과 v의 양자화 비트수를 승산한 값으로 된다.
그 결과, 배리어블 노드 연산의 결과를 저장하는 경우에 비하여, 복호 도중 결과 저장용 메모리(410)의 메모리 용량을 삭감할 수 있고, 이에 의해, 복호 장치(400)의 회로 규모를 작게 할 수 있다.
이하, 도 17의 복호 장치(400)의 각 부의 동작에 대하여 상세하게 설명한다.
복호 도중 결과 저장용 메모리(410)에는, 계산부(415)로부터, 계산부(415)에 의한 제2 연산의 결과인 검사 행렬 H의 6개의 열에 대응하는 6개의 복호 도중 결과(D415)가 공급되고, 복호 도중 결과 저장용 메모리(410)는, 계산부(415)로부터 공급된 6개의 복호 도중 결과(D415)를, 제1 어드레스로부터 순서대로 저장(기억)한다.
즉, 복호 도중 결과 저장용 메모리(410)의 제1 어드레스에는, 검사 행렬 H의 열에 대응하는 복호 도중 결과 중, 제1열째부터 제6열째의 복호 도중 결과 v가 저장된다. 그리고, 마찬가지로, 제2 어드레스에는, 제7열째부터 제12열째의 복호 도중 결과 v가 저장되며, 제3 어드레스에는, 제13열째부터 제18열째의 복호 도중 결 과가 저장된다. 이후, 마찬가지로, 제103열째부터 제108열째까지의 복호 도중 결과 v가, 6개씩, 제4 어드레스부터 제18 어드레스까지 저장되고, 합계 108개의 복호 도중 결과 v가 복호 도중 결과 저장용 메모리(410)에 저장된다. 따라서, 복호 도중 결과 저장용 메모리(410)의 워드(word)수는, 도 16의 검사 행렬 H의 열수(LDPC 부호의 부호 길이)인 108을, 동시에 읽기쓰기하는 복호 도중 결과의 수인 6으로 나눈 18로 된다.
또한, 복호 도중 결과 저장용 메모리(410)는, 이미 저장되어 있는 복호 도중 결과(D415)로부터, 후단의 계산부(412)가 구하고자 하는 복호 도중 결과 uj의 대응하는 검사 행렬 H의 행에서 "1"로 되어 있는 복호 도중 결과 v를 6개 동시에 읽어내고, 복호 도중 결과(D410)로서, 사이클릭 시프트 회로(411)에 공급한다.
또한, 복호 도중 결과 저장용 메모리(410)는, 예를 들면, 6개의 복호 도중 결과를 동시에 읽기쓰기 가능한 싱글 포트 RAM으로 구성된다. 또한, 복호 도중 결과 저장용 메모리(410)에는, 계산부(415)의 제2 연산에 의해 연산된 열에 대응하는 복호 도중 결과(D414)가 저장되므로, 복호 도중 결과 저장용 메모리(410)에 저장되는 데이터량, 즉, 복호 도중 결과 저장용 메모리(410)에 필요로 되는 기억 용량은, 복호 도중 결과(D414)의 양자화 비트수와, 검사 행렬 H의 열수(LDPC 부호의 부호 길이)의 승산값이다.
사이클릭 시프트 회로(411)에는, 복호 도중 결과 저장용 메모리(410)로부터 6개의 복호 도중 결과(D410)가 공급됨과 함께, 제어부(417)로부터, 그 복호 도중 결과(D410)에 대응하는 검사 행렬 H의 1이, 검사 행렬 H에서 기초로 되는 단위 행렬 등을 몇 사이클릭 시프트한 것인지의 정보(Matrix 데이터)를 나타내는 제어 신호(D619)가 공급된다. 사이클릭 시프트 회로(611)는, 제어 신호(D619)를 바탕으로, 6개의 복호 결과(D410)를 재배열하는 사이클릭 시프트를 행하고, 그 결과를 복호 도중 결과(D411)로서, 계산부(412)에 공급한다.
계산부(412)는, 6개의 계산기(4121 내지 4126)로 이루어진다. 계산부(412)에는, 사이클릭 시프트 회로(411)로부터, 계산부(415)에 의한 제2 연산의 결과 얻어진 6개의 복호 도중 결과(D411)(v)이 공급됨과 함께, 복호 도중 결과 저장용 메모리(413)로부터, 전회, 계산기(4121 내지 4126)에 의한 제1 연산의 결과 얻어진 6개의 복호 도중 결과(D413)(uj)가 공급되며, 그 6개의 복호 도중 결과(D411)와 6개의 복호 도중 결과(D413)가, 계산기(4121 내지 4126)에 각각 공급된다. 또한, 계산부(412)에는, 제어부(417)로부터 제어 신호(D419)가 공급되고, 그 제어 신호(D419)가, 계산기(4121 내지 4126)에 공급된다. 또한, 제어 신호(D419)는, 6개의 계산기(4121 내지 4126)에 공통의 신호이다.
계산기(4121 내지 4126)는, 각각 복호 도중 결과(D411)와 복호 도중 결과(D413)를 이용하여, 수학식 7과 수학식 8에 따라서 제1 연산을 행하여, 복호 도중 결과(D412)(vi)를 구한다. 계산부(412)는, 계산기(4121 내지 4126)에 의한 연산의 결과 얻어지는 검사 행렬 H의 6개의 1에 대응하는 6개의 복호 도중 결과(D412) 를 복호 도중 결과 저장용 메모리(413)에 공급한다.
복호 도중 결과 저장용 메모리(413)는, 예를 들면, 6개의 복호 도중 결과를 동시에 읽기쓰기 가능한, 2개의 싱글 포트 RAM으로 구성된다. 복호 도중 결과 저장용 메모리(413)에는, 계산부(412)로부터 6개의 복호 도중 결과(D412)가 공급됨과 함께, 제어부(417)로부터 복호 도중 결과(413)의 읽기쓰기를 제어하는 제어 신호(D420)가 공급된다.
복호 도중 결과 저장용 메모리(413)는, 제어 신호(D420)에 기초하여, 계산부(412)로부터 공급되는 6개의 복호 도중 결과(D412)를 통합하여 저장함과 동시에, 이미 저장되어 있는 6개의 복호 도중 결과(D412)를 읽어내고, 복호 도중 결과(D413)로서, 계산부(412)와 사이클릭 시프트 회로(414)에 공급한다. 즉, 복호 도중 결과 저장용 메모리(413)는, 계산부(412)와 사이클릭 시프트 회로(414)에 공급하는 복호 도중 결과(D413)의 읽어내기와, 계산부(412)로부터 공급되는 복호 도중 결과(D412)의 기입을, 동시에 행한다.
또한, 복호 도중 결과 저장용 메모리(413)에는, 계산부(412)의 제1 연산에 의해 연산된 검사 행렬 H의 i열의, 각 행의 1에 대응하는 브랜치로부터의 제1 연산의 복호 도중 결과(D412)가 저장되므로, 복호 도중 결과 저장용 메모리(413)에 저장되는 데이터량, 즉, 복호 도중 결과 저장용 메모리(413)에 필요로 되는 기억 용량은, 복호 도중 결과(D412)의 양자화 비트수와, 검사 행렬 H의 1의 수의 승산값으로 된다.
사이클릭 시프트 회로(414)에는, 복호 도중 결과 저장용 메모리(413)로부터 6개의 복호 도중 결과(D413)(복호 도중 결과 uj)가 공급됨과 함께, 제어부(417)로부터, 그 복호 도중 결과(D413)에 대응하는 검사 행렬 H의 1이 검사 행렬 H에서 기초로 되는 단위 행렬 등을 몇 사이클릭 시프트한 것인지의 정보(Matrix 데이터)를 나타내는 제어 신호(D421)가 공급된다. 사이클릭 시프트 회로(414)는, 제어 신호(D421)를 바탕으로, 6개의 복호 도중 결과(D413)를 재배열하는 사이클릭 시프트를 행하고, 그 결과를 복호 도중 결과(D414)로서, 계산부(415)에 공급한다.
계산부(415)는, 6개의 계산기(4151 내지 4156)로 이루어진다. 계산부(415)에는, 사이클릭 회로(414)로부터 6개의 복호 도중 결과(D414)가 공급되고, 그 복호 도중 결과(D414)가, 계산기(4151 내지 4156)의 각각에 공급된다. 또한, 계산부(415)에는, 수신용 메모리(416)로부터 6개의 수신 데이터(D417)(LDPC 부호)가 공급되고, 그 수신 데이터(D417)가, 계산기(4151 내지 4156)의 각각에 공급된다. 또한, 계산부(415)에는, 제어부(417)로부터 제어 신호(D422)가 공급되고, 그 제어 신호(D422)가 계산기(4151 내지 4156)에 공급된다. 또한, 제어 신호(D422)는, 6개의 계산기(4151 내지 4156)에 공통의 신호이다.
계산기(4151 내지 4156)는, 각각 복호 도중 결과(D414)와 수신 데이터(D417)를 이용하여, 수학식 5에 따라서, 각각 제2 연산을 행하여, 복호 도중 결과(D415)를 구한다. 계산부(415)는, 계산기(4151 내지 4156)의 제2 연산의 결과 얻어지는 6개의 복호 도중 결과(D415)(v)를, 복호 도중 결과 저장용 메모리(410)에 공급한다. 또한, 계산부(415)는, 지금 행하는 연산이 최후의 제2 연산인 경우, 그 연산의 결과 얻어지는 6개의 복호 도중 결과(D415)를, 최종적인 복호 결과로서 출력한다.
수신용 메모리(416)는, 통신로를 통하여 수신한 수신값(부호 비트)(D416)으로부터 계산한 부호 비트의 0 근사도의 값인 수신 LLR(대수 우도비)의 데이터(수신 데이터)(D416)를 저장한다.
즉, 수신용 메모리(416)의 제1 어드레스에는, 검사 행렬 H의 열에 대응하는 수신 데이터(D416) 중, 검사 행렬 H의 제1열째부터 제6열째까지에 대응하는 수신 데이터(D416)가 저장된다. 그리고, 제2 어드레스에는, 검사 행렬 H의 제7열째부터 제12열째까지에 대응하는 수신 데이터(D416)가 저장되고, 제3 어드레스에는, 검사 행렬 H의 제13열째부터 제18열째까지에 대응하는 수신 데이터(D416)가 저장된다. 이후, 마찬가지로, 제4 어드레스부터 제18 어드레스까지, 검사 행렬 H의 제19열째부터 제108열째까지에 대응하는 수신 데이터(D416)가, 6개씩 저장된다.
그리고, 수신용 메모리(416)는, 이미 저장하고 있는 수신 데이터(D416)를, 가변 노드 연산에 필요로 되는 순서대로 6개씩 읽어내어, 수신 데이터(D417)로서 계산부(415)에 공급한다.
또한, 수신용 메모리(416)는, 예를 들면, 6개의 수신 데이터를 동시에 읽기쓰기 가능한 싱글 포트 RAM으로 구성된다. 또한, 수신용 메모리(416)에 저장되는 데이터량, 즉, 수신용 메모리(416)에 필요로 되는 기억 용량은, LDPC 부호의 부호 길이와, 수신 데이터(D416)의 양자화 비트수의 승산값이다. 또한, 수신용 메모리(416)의 워드(word)수는, LDPC 부호의 부호 길이, 즉, 검사 행렬 H의 열수인 108 을, 동시에 읽어내는 수신 데이터(D417)의 수인 6으로 나눈 값인 18이다.
제어부(417)는, 제어 신호(D418)를 사이클릭 시프트 회로(411)에, 제어 신호(D419)를 계산부(412)에 공급함으로써, 각각을 제어한다. 또한, 제어부(417)는, 제어 신호(D420)를 복호 도중 결과 저장용 메모리(413)에, 제어 신호(D421)를 사이클릭 시프트 회로(414)에, 제어 신호(D421)를 계산부(415)에 각각 공급함으로써, 각각을 제어한다.
복호 도중 결과 저장용 메모리(410), 사이클릭 시프트 회로(411), 계산부(412), 복호 도중 결과 저장용 메모리(413), 사이클릭 시프트 회로(414), 계산부(415)의 순으로, 데이터가 일주함으로써, 복호 장치(400)는, 1회의 복호를 행할 수 있다. 복호 장치(400)에서는, 소정의 횟수만큼 반복하여 복호가 행하여진 후, 계산부(415)에 의한 제2 연산의 결과인 복호 도중 결과(D415)가, 최종적인 복호 결과로서 출력된다.
도 18은, 도 17의 계산부(412)의 계산기(4121)의 구성예를 도시하는 블록도이다.
또한, 도 18에서는, 계산기(4121)에 대하여 설명하지만, 계산기(4122) 내지 계산기(4126)도 마찬가지로 구성된다.
또한, 도 18에서는, 전회의 계산부(412)에 의한 제1 연산의 결과 얻어지는 각 복호 도중 결과(udv)가 부호 비트를 합하여 합계 6비트(bit)로 양자화되고, 계산부(415)에 의한 제2 연산의 결과 얻어지는 각 복호 도중 결과(v)가 9비트로 양자화 되어 있는 것으로 하여, 계산기(4121)를 도시하고 있다. 또한, 도 18의 계산기(4121)에는, 클럭 ck가 공급되고, 이 클럭 ck는, 필요한 블록에 공급되도록 되어 있다. 그리고, 각 블록은, 클럭 ck에 동기하여 처리를 행한다.
도 18의 계산기(4121)는, 제어부(417)로부터 공급되는 제어 신호(D419)에 기초하여, 복호 도중 결과 저장용 메모리(413)로부터 1개씩 읽어들여지는, 전회의 계산부(412)에 의한 제1 연산의 결과 얻어진 복호 도중 결과(D413)(udv)와, 사이클릭 시프트 회로(411)로부터 1개씩 읽어들여지는 복호 도중 결과(D411)(v)를 이용하여, 수학식 7과 수학식 8에 따른 제1 연산을 행한다.
즉, 계산기(4121)에는, 사이클릭 시프트 회로(411)로부터 공급되는 6개의 9비트의 복호 도중 결과(D411)(v) 중의, 1개의 복호 도중 결과(D411)가 공급됨과 함께, 복호 도중 결과 저장용 메모리(413)로부터 공급되는, 전회의 계산부(412)에 의한 연산의 결과인 6개의 6비트의 복호 도중 결과(D413)(uj) 중의, 전회의 계산부(412)에 의한 연산의 결과인 1개의 복호 도중 결과(D413)가 공급되며, 그 9비트의 복호 도중 결과(D411)(v)와 6비트의 복호 도중 결과(D413)(udv)가, 감산기(431)에 공급된다. 또한, 계산기(4121)에는, 제어부(417)로부터 제어 신호(D419)가 공급되고, 그 제어 신호(D419)가 셀렉터(435)와 셀렉터(442)에 공급된다.
감산기(431)는, 9비트의 복호 도중 결과(D411)(v)로부터 6비트의 복호 도중 결과(D413)(uj)를 감산하고, 그 6비트의 감산값(D431)을 출력한다. 즉, 감산기(431)는, 수학식 8에 따라서 연산을 행하고, 그 연산의 결과인 감산값(D431)(vi)를 출력한다.
감산기(431)에 의해 출력된 6비트의 감산값(D431) 중, 최상위 비트의 정부를 나타내는 부호 비트(D432)(sign(vi))가 EXOR 회로(440)에 공급되고, 하위 5비트의 절대값(D433)(|vi|)이 LUT(432)에 공급된다.
LUT(432)는, 절대값(D433)(|vi|)에 대하여, 수학식 7에서의 φ(|vi|)의 연산을 행한 5비트의 연산 결과(D434)(φ(|vi|))를 읽어내어, 가산기(433)와 FIFO 메모리(438)에 공급한다.
가산기(433)는, 연산 결과(D434)(φ(|vi|))와 레지스터(434)에 저장되어 있는 9비트의 값(D435)을 가산함으로써, 연산 결과(D434)를 적산하고, 그 결과 얻어지는 9비트의 적산값을 레지스터(434)에 재저장한다. 또한, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)로부터 구해진 절대값(D433)(|vi|)에 대한 연산 결과가 적산된 경우, 레지스터(434)는 리세트된다.
검사 행렬 H의 1행에 걸친 복호 도중 결과(D411)가 1개씩 읽어들여지고, 레지스터(434)에 1행분의 연산 결과(D434)가 적산된 적산값이 저장된 경우, 제어부(417)로부터 공급되는 제어 신호(D419)는, 0으로부터 1로 변화된다. 예를 들면, 행의 가중치(row weight)가 「9」인 경우, 제어 신호(D419)는, 1부터 8클럭째까지 는, 「0」으로 되고, 9클럭째에서는 「1」로 된다.
제어 신호(D419)가 「1」인 경우, 셀렉터(435)는, 레지스터(434)에 저장되어 있는 값, 즉, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)(복호 도중 결과 v)로부터 구해진 φ(|vi|)가 적산된 9비트의 값(D435)(i=1부터 i=dc까지의 Σφ(|vi|))을 선택하고, 값(D436)으로서, 레지스터(436)에 출력하여 저장시킨다. 레지스터(436)는, 저장하고 있는 값(D436)을, 9비트의 값(D437)으로 하여, 셀렉터(435)와 가산기(437)에 공급한다. 제어 신호(D419)가 「0」인 경우, 셀렉터(435)는, 레지스터(436)로부터 공급된 값(D437)을 선택하고, 레지스터(436)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)(복호 도중 결과 v)로부터 구해진 φ(|vi|)가 적산될 때까지, 레지스터(436)는, 전회 적산된 φ(|vi|)를, 셀렉터(435)와 가산기(437)에 공급한다.
한편, FIFO 메모리(438)는, 레지스터(436)로부터 새로운 값(D437)(i=1부터 i=dc까지의 Σφ(|vi|))이 출력될 때까지의 동안, LUT(432)가 출력한 연산 결과(D434)(φ(|vi|))를 지연시키고, 5비트의 값(D438)으로서 감산기(437)에 공급한다. 감산기(437)는, 레지스터(436)로부터 공급된 값(D437)으로부터, FIFO 메모리(438)로부터 공급된 값(D438)을 감산하고, 그 감산 결과를, 5비트의 감산값(D439)으로서 LUT(439)에 공급한다. 즉, 감산기(437)는, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)(복호 도중 결과 v)로부터 구해진 φ(|vi|)의 적산값으로부터, 구하고자 하는 브랜치에 대응하는 복호 도중 결과, 즉, 검사 행렬 H의 소정의 1에 대응하는 복호 도중 결과(D411)(복호 도중 결과 v)로부터 구해진 φ(|vi|)를 감산하고, 그 감산값(i=1부터 i=dc-1까지의 Σφ(|vi|))을 감산값(D439)으로서 LUT(439)에 공급한다.
LUT(439)는, 감산값(D439)(i=1부터 i=dc-1까지의 Σφ(|vi|))에 대하여, 수학식 7에서의 φ-1(Σφ(|vi|))의 연산을 행한 5비트의 연산 결과(D440)(φ-1(Σφ(|vi|)))를 출력한다.
이상의 처리와 병행하여, EXOR 회로(440)는, 레지스터(441)에 저장되어 있는 1비트의 값(D442)과 부호 비트(D432)의 배타적 논리합을 연산함으로써, 부호 비트끼리의 승산을 행하고, 1 비트의 승산 결과(D441)를 레지스터(441)에 재저장한다. 또한, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)로부터 구해진 부호 비트(D432)가 승산된 경우, 레지스터(441)는 리세트된다.
검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)로부터 구해진 부호 비트(D432)가 승산된 승산 결과(D441)(i=1부터 dc까지의 Πsign(vi))가 레지스터(441)에 저장된 경우, 제어부(417)로부터 공급되는 제어 신호(D419)는, 「0」으로부터 「1」로 변화된다.
제어 신호(D419)가 「1」인 경우, 셀렉터(442)는, 레지스터(441)에 저장되어 있는 값, 즉, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)로부터 구해진 부호 비트(D432)가 승산된 값(D442)(i=1부터 i=dc까지의 Πsign(vi))을 선택하고, 1비트의 값(D443)으로서 레지스터(443)에 출력하여 저장시킨다. 레지스터(443)는, 저장하고 있는 값(D443)을, 1비트의 값(D444)으로서 셀렉터(442)와 EXOR 회로(445)에 공급한다. 제어 신호(D419)가 「0」인 경우, 셀렉터(442)는, 레지스터(443)로부터 공급된 값(D444)을 선택하고, 레지스터(443)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)(복호 도중 결과 v)로부터 구해진 부호 비트(D432)가 승산될 때까지, 레지스터(443)는, 전회 저장한 값을, 셀렉터(442)와 EXOR 회로(445)에 공급한다.
한편, FIFO 메모리(444)는, 레지스터(443)로부터 새로운 값(D444)(i=1부터 i=dc까지의 Πsign(vi))이 EXOR 회로(445)에 공급될 때까지의 동안, 부호 비트(D432)를 지연시키고, 1비트의 값(D445)으로서 EXOR 회로(445)에 공급한다. EXOR 회로(445)는, 레지스터(443)로부터 공급된 값(D444)과, FIFO 메모리(444)로부터 공급된 값(D445)의 배타적 논리합을 연산함으로써, 값(D444)을, 값(D445)으로 제산하고, 1비트의 제산 결과를 제산값(D446)으로서 출력한다. 즉, EXOR 회로(445)는, 검사 행렬 H의 1행에 걸친 모든 1에 대응하는 복호 도중 결과(D411)로부터 구해진 부호 비트(D432)(sign(vi))의 승산값을, 검사 행렬 H의 소정의 1에 대응하는 복호 도중 결과(D411)로부터 구해진 부호 비트(D432)(sign(vi))로 제산하고, 그 제산값(j=1부터 i=dc-1까지의 Πsign(vi)))을 제산값(D446)으로서 출력한다.
계산기(4121)에서는, LUT(439)로부터 출력된 5비트의 연산 결과(D440)를 하위 5비트로 함과 함께, EXOR 회로(445)로부터 출력된 1비트의 제산값(D446)을 최상위 비트로 하는 합계 6비트가 복호 도중 결과(D412)(복호 도중 결과 uj)로서 출력된다.
이상과 같이, 계산기(4121)에서는, 수학식 7과 수학식 8의 연산이 행하여져서, 복호 도중 결과 uj가 구해진다.
또한, 도 16의 검사 행렬 H의 행의 가중치의 최대는 9이기 때문에, 즉, 계산기(4121)에 공급되는 복호 도중 결과(D411)(v)와 복호 도중 결과(D413)(udv)의 최대수는 9이기 때문에, 계산기(4121)는, 9개의 복호 도중 결과(D411)로부터 구해지는 9개의 연산 결과(D434)(φ(|vi|))를 지연시키는 FIFO 메모리(438)와, 9개의 부호 비트(D432)를 지연시키는 FIFO 메모리(444)를 갖고 있다. 행의 가중치가 9 미만인 행의 메시지를 계산할 때에는, FIFO 메모리(438)와 FIFO 메모리(444)에서의 지연량이, 그 행의 가중치의 값으로 감해진다.
도 19는, 도 17의 계산부(415)의 계산기(4151)의 구성예를 도시하는 블록도이다.
또한, 도 19에서는, 계산기(4151)에 대하여 설명하지만, 계산기(4152) 내지 계산기(4156)도 마찬가지로 구성된다.
또한, 도 19에서는, 계산부(412)에 의한 제1 연산의 결과 얻어지는 각 복호 도중 결과(uj)가 부호 비트를 합하여 합계 6비트로 양자화되어 있는 것으로 하여, 계산기(4151)를 도시하고 있다. 또한, 도 19의 계산기(4151)에는, 클럭 ck가 공급되고, 이 클럭 ck는, 필요한 블록에 공급되도록 되어 있다. 그리고, 각 블록은, 클럭 ck에 동기하여 처리를 행한다.
도 19의 계산기(4151)는, 제어부(417)로부터 공급되는 제어 신호(D422)에 기초하여, 수신용 메모리(416)로부터 1개씩 읽어들여지는 수신 데이터(D417)(수신값 u0i)와, 사이클릭 시프트 회로(414)로부터 1개씩 읽어들여지는 복호 도중 결과(D414)(uj)를 이용하여, 수학식 5에 따른 제2 연산을 행한다.
즉, 계산기(4151)에서는, 사이클릭 시프트 회로(414)로부터, 검사 행렬 H의 각 행의 1에 대응하는 6비트의 복호 도중 결과(D414)(복호 도중 결과 uj)가 1개씩 읽어들여지고, 그 복호 도중 결과(D414)가, 가산기(471)에 공급된다. 또한, 계산기(4151)에서는, 수신용 메모리(416)로부터 6비트의 수신 데이터(D417)가 1개씩 읽어들여져, 가산기(475)에 공급된다. 또한, 계산기(4151)에는, 제어부(417)로부터 제어 신호(D422)가 공급되고, 그 제어 신호(D422)는, 셀렉터(473)에 공급된다.
가산기(471)는, 복호 도중 결과(D414)(복호 도중 결과 uj)와 레지스터(472) 에 저장되어 있는 9비트의 값(D471)을 가산함으로써, 복호 도중 결과(D414)를 적산하고, 그 결과 얻어지는 9비트의 적산값을, 레지스터(472)에 재저장한다. 또한, 검사 행렬 H의 1열에 걸친 모든 1에 대응하는 복호 도중 결과(D414)가 적산된 경우, 레지스터(472)는 리세트된다.
검사 행렬 H의 1열에 걸친 복호 도중 결과(D414)가 1개씩 읽어들여지고, 레지스터(472)에 1열분의 복호 도중 결과(D414)가 적산된 값이 저장된 경우, 제어부(417)로부터 공급되는 제어 신호(D422)는, 「0」으로부터 「1」로 변화된다. 예를 들면, 열의 가중치가 「5」인 경우, 제어 신호(D422)는, 1부터 4클럭째까지는 「0」으로 되고, 5클럭째에서는 「1」로 된다.
제어 신호(D422)가 「1」인 경우, 셀렉터(473)는, 레지스터(472)에 저장되어 있는 값, 즉, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 복호 도중 결과(D414)(복호 도중 결과 uj)가 적산된 9비트의 값(D471)(j=1부터 dv까지의 Σuj)을 선택하고, 레지스터(474)에 출력하여 저장시킨다. 레지스터(474)는, 저장하고 있는 값(D471)을, 9비트의 값(D472)으로 하여, 셀렉터(471)와 가산기(475)에 공급한다. 제어 신호(D422)가 「0」인 경우, 셀렉터(473)는, 레지스터(474)로부터 공급된 값(D472)을 선택하고, 레지스터(474)에 출력하여 재저장시킨다. 즉, 검사 행렬 H의 1열에 걸친 모든 브랜치로부터의 복호 도중 결과(D414)(복호 도중 결과 uj)가 적산될 때까지, 레지스터(474)는, 전회 적산된 값을, 셀렉터(473)와 가산기(475)에 공급한다.
가산기(475)는, 9비트의 값(D472)과, 수신용 메모리(416)로부터 공급된 6비트의 수신 데이터(D417)를 가산하고, 그 결과 얻어지는 6비트의 값을 복호 도중 결과(D415)(복호 도중 결과 v)로서 출력한다.
이상과 같이, 계산기(4151)에서는, 수학식 5의 연산이 행하여져서, 복호 도중 결과 v가 구해진다.
또한, 도 9의 검사 행렬 H의 열의 가중치의 최대는 5이기 때문에, 즉, 계산기(4151)에 공급되는 복호 도중 결과 uj의 최대수는 5이기 때문에, 계산기(4151)는, 6비트의 복호 도중 결과 uj를 최대 5개 가산한다. 따라서, 계산기(4151)의 출력은, 9비트의 값으로 되어 있다.
도 20은, 도 17의 복호 도중 결과 저장용 메모리(413)의 구성예를 도시하는 블록도이다.
복호 도중 결과 저장용 메모리(413)는, 스위치(501과 504), 및 2개의 싱글 포트 RAM인 복호 도중 결과 저장용 RAM(502와 503)으로 구성된다.
이 복호 도중 결과 저장용 메모리(413)의 각 부에 대하여 상세하게 설명하기 전에, 우선, 복호 도중 결과 저장용 RAM(502와 503)에의 데이터의 저장 방법에 대하여 설명한다.
복호 도중 결과 저장용 RAM(502와 503)은, 계산부(412)에 의한 제1 연산의 결과 얻어지고, 스위치(501)를 통하여 공급된 복호 도중 결과(D412)를 저장한다.
구체적으로는, 복호 도중 결과 저장용 RAM(502)의 제1 어드레스 내지 제9 어 드레스에는, 도 16의 검사 행렬 H의 제1행째부터 제6행째까지의 1에 대응하는 복호 도중 결과(D412)(D501)가, 각 행 모두 가로 방향(열 방향)으로 채운 형으로(0을 무시한 형으로) 저장된다.
즉, 제j행 제i열을, (j, i)로 표시하는 것으로 하면, 복호 도중 결과 저장용 RAM(502)의 제1 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,1)부터 (6,6)의 6×6의 단위 행렬의 1에 대응하는 데이터가, 제2 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,25)부터 (6,30)의 시프트 행렬(6×6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 시프트 행렬)의 1에 대응하는 데이터가 저장된다. 제3 어드레스 내지 제8 어드레스도 마찬가지로 도 16의 검사 행렬 H의 구성 행렬과 대응지어 데이터가 저장된다. 그리고, 제9 어드레스에는, 검사 행렬 H의 (1,102)부터 (6,108)의 시프트 행렬(6×6의 단위 행렬 중의 1행째의 1을 0으로 치환하여 1개만큼 좌측 방향으로 사이클릭 시프트한 시프트 행렬)의 1에 대응하는 데이터가 저장된다. 여기서, 도 16의 검사 행렬 H의 (1,102)부터 (6,108)의 시프트 행렬에서는, 1행째에 1이 없기 때문에, 제9 어드레스에는 데이터가 저장되지 않는다.
또한, 복호 도중 결과 저장용 RAM(502)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제13행째부터 제18행째까지의 1에 대응하는 데이터가 저장된다. 즉, 제10 어드레스에는, 검사 행렬 H의 (13,7)부터 (18,12)의 6×6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 행렬의 1에 대응하는 데이터가 저장되고, 제11 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행 렬(6×6의 단위 행렬과, 6×6의 단위 행렬을 우측 방향으로 1개만큼 사이클릭 시프트한 시프트 행렬의 합인 합 행렬)을 구성하는 시프트 행렬의 1에 대응하는 데이터가 저장된다. 또한, 제12 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행렬을 구성하는 단위 행렬의 1에 대응하는 데이터가 저장된다. 이하, 제13 어드레스 내지 제18 어드레스에 대해서도, 검사 행렬 H에 대응지어 데이터가 저장된다.
즉, 가중치가 2 이상인 구성 행렬에 대해서는, 그 구성 행렬을, 가중치가 1인 P×P의 단위 행렬, 그 컴포넌트인 1 중 1개 이상이 0으로 된 준단위 행렬, 또는 단위 행렬 혹은 준단위 행렬을 사이클릭 시프트한 시프트 행렬 중의 복수의 합의 형으로 표현하였을 때의, 그 가중치가 1인 단위 행렬, 준단위 행렬, 또는 시프트 행렬의 1의 위치에 대응하는 데이터(단위 행렬, 준단위 행렬, 또는 시프트 행렬에 속하는 브랜치에 대응하는 메시지의 복호 도중 결과)는, 동일 어드레스에 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(502)의 제19 어드레스 내지 제27 어드레스에는, 도 16의 검사 행렬 H에 대응지어, 제25행째부터 제30행째까지의 1에 대응하는 데이터가 저장된다. 즉, 복호 도중 결과 저장용 RAM(502)의 워드수는, 27이다.
복호 도중 결과 저장용 RAM(503)의 제1 어드레스 내지 제9 어드레스에는, 도 16의 검사 행렬 H의 제7행째부터 제12행째까지의 1에 대응하는 복호 도중 결과(D412)(D502)가, 각 행 모두 가로 방향(열 방향)으로 채운 형으로(0을 무시한 형으로) 저장된다.
즉, 복호 도중 결과 저장용 RAM(503)의 제1 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬(6×6의 단위 행렬을 우측 방향으로 2개만큼 사이클릭 시프트한 제1 시프트 행렬과, 우측 방향으로 4개만큼 사이클릭 시프트한 제2 시프트 행렬의 합인 합 행렬)을 구성하는 제1 시프트 행렬의 1에 대응하는 데이터가, 제2 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬을 구성하는 제2 시프트 행렬의 1에 대응하는 데이터가 저장된다. 이하, 제3 어드레스 내지 제9 어드레스도 마찬가지로 검사 행렬 H의 구성 행렬과 대응지어 데이터가 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(503)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제19행째부터 제24행째까지의 1에 대응하는 데이터가, 제19 어드레스 내지 제27 어드레스에는, 검사 행렬 H의 제31행째부터 제36행째까지의 1에 대응하는 데이터가, 도 16의 검사 행렬 H에 대응지어 저장된다. 즉, 복호 도중 결과 저장용 RAM(503)의 워드수는, 27이다.
상술한 바와 같이, 복호 도중 결과 저장용 RAM(502와 503)의 워드(word)수는, 27이다. 즉, 워드수는, 검사 행렬 H의 행의 가중치(row weight)의 9와 행수의 36을 승산하고, 그 승산 결과(검사 행렬 H의 1의 수)를, 동시에 읽어내는 복호 도중 결과(D501)의 수인 6으로 제산하고, 또한, 복호 도중 결과 저장용 메모리(413)가 갖는 복호 도중 결과 저장용 RAM의 개수인 2로 제산한 값으로 된다.
이하, 도 20의 복호 도중 결과 저장용 메모리(413)의 각 부의 동작에 대하여 상세하게 설명한다.
복호 도중 결과 저장용 메모리(413)에는, 계산부(412)에 의해 제1 연산이 행하여지는 경우, 계산부(412)로부터 제1 연산의 결과 얻어지는 복호 도중 결과(D412)(uj)가 공급되고, 그 복호 도중 결과(D412)가 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503) 중의 한 쪽의 소정의 어드레스에 기입됨과 동시에, 다른 쪽으로부터, 전회의 계산부(412)에 의한 제1 연산의 결과 얻어진 복호 도중 결과(D412)(uj)가 읽어내어져, 계산부(412)에 출력된다. 한편, 계산부(415)에 의해 제2 연산이 행하여지는 경우, 복호 도중 결과 저장용 메모리(413)는, 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503)에 기입을 행하지 않고, 어느 한 쪽의 RAM의 소정의 어드레스로부터 복호 도중 결과를 읽어내어, 사이클릭 시프트 회로(414)에 공급한다.
스위치(501)에는, 계산부(412)로부터 6개의 복호 도중 결과(D412)가 공급됨과 함께, 그 복호 도중 결과(D412)를 기입하는 메모리로서, 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503) 중 한 쪽의 선택을 나타내는 제어 신호(D4201)가 제어부(417)로부터 공급된다. 스위치(501)는, 제어 신호(D4201)에 기초하여, 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503)의 한 쪽을 선택하고, 그 선택한 한 쪽에, 6개의 복호 도중 결과(D412)를 공급한다.
복호 도중 결과 저장용 RAM(502)에는, 스위치(501)로부터 6개의 복호 도중 결과(D412)가, 복호 도중 결과(D501)로서 공급됨과 함께, 제어부(417)로부터 어드 레스를 나타내는 제어 신호(D4202)가 공급된다. 복호 도중 결과 저장용 RAM(502)은, 제어 신호(D4202)가 나타내는 어드레스에 이미 저장되어 있는 전회의 계산부(412)에 의한 제1 연산의 결과 얻어진 6개의 복호 도중 결과(D501)를 읽어내고, 복호 도중 결과(D503)로서 스위치(504)에 공급한다. 또한, 복호 도중 결과 저장용 RAM(502)은, 제어 신호(D4202)가 나타내는 어드레스에, 스위치(501)로부터 공급된 6개의 복호 도중 결과(D501)를 저장한다(기입한다).
복호 도중 결과 저장용 RAM(503)에는, 스위치(501)로부터 6개의 복호 도중 결과(D412)가, 복호 도중 결과(D502)로서 공급됨과 함께, 제어부(417)로부터 어드레스를 나타내는 제어 신호(D4203)가 공급된다. 복호 도중 결과 저장용 RAM(503)은, 제어 신호(D4203)가 나타내는 어드레스에 이미 저장되어 있는 전회의 계산부(412)에 의한 제1 연산의 결과 얻어진 6개의 복호 도중 결과(D502)를 읽어내고, 복호 도중 결과(D504)로서 스위치(504)에 공급한다. 또한, 복호 도중 결과 저장용 RAM(503)은, 제어 신호(D4203)가 나타내는 어드레스에, 스위치(501)로부터 공급된 6개의 복호 도중 결과(D502)를 저장한다(기입한다).
스위치(504)에는, 복호 도중 결과 저장용 RAM(502)으로부터 복호 도중 결과(D503)가 공급되거나, 혹은 복호 도중 결과 저장용 RAM(503)으로부터 복호 도중 결과(D504)가 공급된다. 또한, 제어부(417)로부터, 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503) 중 한 쪽의 선택을 나타내는 제어 신호(D4204)가 공급된다. 스위치(504)는, 제어 신호(D4204)에 기초하여, 복호 도중 결과 저장용 RAM(502) 또는 복호 도중 결과 저장용 RAM(503)의 한 쪽을 선택하고, 그 선택한 한 쪽으로부터 공급된 6개의 복호 도중 결과를, 6개의 복호 도중 결과(D413)로서 계산부(412)와 사이클릭 시프트 회로(414)에 공급한다.
도 21은, 복호 도중 결과 저장용 메모리(413)의 복호 도중 결과 저장용 RAM(502)과 복호 도중 결과 저장용 RAM(503)의 읽어내기와 기입의 동작을 설명하는 타이밍차트이다.
또한, 도 21에서, 횡축은, 시간(t)을 나타내고 있다. 또한, 도 21에서는, 도 22의 ○표 내에 기재된 숫자 i의 구성 행렬의 1에 대응하는 데이터의 읽어내기를 Ri로 표시하고, 그 데이터의 기입(저장)을 Wi로 표시한다.
복호 도중 결과 저장용 메모리(413)에서는, 계산부(412)에 의해 제1 연산이 행하여지는 경우, 복호 도중 결과 저장용 RAM(502)이, 제어 신호(D4202)에 기초하여, 이미 저장하고 있는, 전회의 계산부(412)의 제1 연산의 결과 얻어진 복호 도중 결과(D501) 중, 동일 어드레스에 저장하고 있는 검사 행렬 H의 제1행째부터 제6행째까지의 1에 대응하는 복호 도중 결과(D501)를, 1클럭에 6개씩, 9회(9클럭분) 읽어내고(도면 중, R0 내지 R8), 스위치(504)를 통하여, 계산부(412)에 공급한다. 즉, 도 16의 검사 행렬 H의 행 가중치는, 9이기 때문에, 검사 행렬 H의 각 행의 1에 대응하는 복호 도중 결과는 9개 있고, 복호 도중 결과 저장용 RAM(502)은, 제1행째부터 제6행째까지의 1에 대응하는 6개의 복호 도중 결과(D501)를, 6개 단위로 9회 읽어낸다.
다음으로, 복호 도중 결과 저장용 RAM(503)은, 제어 신호(D4203)에 기초하여, 이미 저장하고 있는, 전회의 계산부(412)에 의한 제1 연산의 결과 얻어진 복호 도중 결과(D502) 중, 동일 어드레스에 저장하고 있는 검사 행렬 H의 제7행째부터 제12행째까지의 1에 대응하는 복호 도중 결과(D502)를, 6개 단위로 9회 계속하여 읽어내고(R9 내지 R17), 스위치(504)를 통하여, 계산부(412)에 공급한다.
여기서, 노드를 1개씩 계산하는 계산기(4121 내지 4126 또는 4151 내지 4156)에서는, 노드 차수(node degree) 분의 지연이 발생한다. 예를 들면, 계산기(4121 내지 4126)에서는 9클럭분의 지연이 발생한다. 또한, 복호 장치(400)가 100㎒를 초과하는 고속 동작을 행하는 경우, 계산기(4121 내지 4126)에서는, 다시 3클럭분 정도의 지연이 발생하여, 3클럭분 정도의 파이프라인화가 필요로 된다.
즉, 계산부(412)가 제1 연산을 행하기 위해 필요한 시간, 즉 복호 도중 결과 저장용 메모리(413)로부터 복호 도중 결과(D413)가 읽어내어지고나서, 그 복호 도중 결과(D413)를 이용한 제1 연산의 결과 얻어지는 복호 도중 결과(D412)가 복호 도중 결과 저장 메모리(413)에 공급될 때까지의 시간은, 12클럭분의 시간 T1로 된다.
이 경우, 복호 도중 결과 저장용 RAM(502)으로부터 복호 도중 결과(D503)의 1회째의 읽어내기(R0)가 개시되고나서 T1 시간 후에, 계산부(412)로부터 복호 도중 결과 저장 메모리(413)에의, 제1 연산의 결과 얻어지는 검사 행렬 H의 제1행째부터 제6행째까지의 1에 대응하는 6개의 복호 도중 결과(D412)의 공급이 개시된다. 그 복호 도중 결과(D413)는, 스위치(501)를 통하여 복호 도중 결과(D501)로서 복호 도중 결과 저장용 RAM(502)에 공급되고, 복호 도중 결과 저장용 RAM(502)은, 그 복호 도중 결과(D501)를, 제어 신호(D4202)에 기초하여, 이미 읽어내어진 복호 도중 결과(D503)가 저장되어 있던 어드레스에 9회 계속하여 저장한다(W0 내지 W8).
즉, 복호 도중 결과 저장용 RAM(502)에 의해 복호 도중 결과(D503)의 9회의 읽어내기(R0 내지 R8)가 종료하고나서, 복호 도중 결과 저장용 RAM(502)에 의해 복호 도중 결과(D501)의 9회의 저장(W0 내지 W8)이 개시될 때까지, 3클럭분의 시간 Tw(=T1-9)의 대기 시간이 생긴다.
그 결과, 복호 도중 결과 저장용 RAM(503)으로부터의 9회의 읽어내기(R9 내지 R17)가 종료하고나서, 시간 Tw가 경과 후에 복호 도중 결과 저장용 RAM(502)에의 9회의 저장(W0 내지 W8)이 종료한다. 따라서, 복호 도중 결과 저장용 RAM(503)으로부터의 9회의 읽어내기(R9 내지 R17)가 종료하고나서, 복호 도중 결과 저장용 RAM(502)으로부터의 9회의 읽어내기(R18 내지 R26)를 개시할 때까지, 시간 Tw의 대기 시간이 필요로 된다.
또한, 썸 프로덕트 알고리즘을 근사하여 실장하는 방법 등도 제안되어 있지만, 이 방법으로는, 성능의 열화를 초래하게 된다.
이상과 같이, 썸 프로덕트 알고리즘을 하드웨어에 실장하는 경우에는, 상술 한 바와 같이, 브랜치에 대응하는 메시지의 연산(체크 노드 연산과 배리어블 노드 연산, 또는 제1 연산과 제2 연산)을, 1개씩 시리얼(serial)로 행하는 방법, 모두 병렬(풀 패러렐(full parallel))로 행하는 방법, 몇 개씩 병렬(페러렐(parallel))로 행하는 방법이 있다.
그러나, P개씩 병렬로 행하는 방법으로는, P의 값이 클 때, 특히 계산기(412)의 회로 규모가 커지게 된다. 예를 들면, P가 360, 부호 길이가 64800일 때에, 계산부(412)의 회로 규모는, 복호 장치(400)의 전체의 20%, 복호 장치(400)의 메모리(예를 들면, 복호 도중 결과 저장용 메모리(410), 복호 도중 결과 저장용 메모리(413), 수신용 메모리(416) 등)를 제외한 논리 회로의 60%에 도달하는 경우가 있다.
또한, 도 21에 도시하는 바와 같이, 복호 도중 결과 저장용 RAM(502와 503) 중 어느 쪽으로부터도 읽어내기가 행하여지지 않는 시간 Tw가 생긴다. 즉, 시간 Tw 동안, 제1 연산을 행하는 계산부(412)에는, 복호 도중 결과(D413)가 공급되지 않으므로, 계산부(412)는, 제1 연산을 행하지 않는다(이용되지 않게 됨). 특히, 노드 차수가 작은 경우, 시간 Tw는 상대적으로 길어져서, 계산부(412)를 긴 시간 무익한 것으로 하고 있게 된다.
비특허 문헌1:C.Howland and A.Blanksby, "Parallel Decoding Architectures for Low Density Parity Check Codes", Symposiumon Circuits and Systems, 2001
비특허 문헌2:E.Yeo, P.Pakzad, B.Nikolic and V.Anantharam, "VLSI Architectures for iterative Decoders in Magnetic Recording Channels", IEEE Transactions on Magnetics, Vol.37, No.2, March 2001
비특허 문헌3:T.Zhang, K.K.Parhi, "Joint(3,k)-regular LDPC Code and decoder/encoder design," IEEE Transactions on Signal Processing, Vol.52, No.4, pp.1065-1079, April 2004
비특허 문헌4:M.M.Mansour, N.R.Shanbhag, "A novel design methodology for high-performance programmable decoder cores for AA-LDPC codes," Proceedings of IEEE Workshop on Signal Processing Systems 2003(SIPS 2003), pp.29-34, Aug.2003
특허 문헌1:일본 특개 2004-364233호 공보
<발명의 개시>
<발명이 해결하고자 하는 과제>
본 발명은, 이러한 상황을 감안하여 이루어진 것으로, LDPC 부호의 복호를, 장치의 대규모화를 억제하면서 양호한 정밀도로 행할 수 있도록 하는 것이다.
<과제를 해결하기 위한 수단>
본 발명의 복호 장치는, LDPC 부호의 복호를 위한 체크 노드의 연산을 행하는 제1 연산부와, LDPC 부호의 복호를 위한 배리어블 노드의 연산을 행하는 제2 연산부를 구비하고, 제1 연산부만이 N(N은 P 미만의 양의 정수)개의 체크 노드의 연산을 동시에 행하거나, 제2 연산부만이 N개의 배리어블 노드의 연산을 동시에 행하거나, 또는 제1 연산부가 N개의 체크 노드의 연산을 동시에 행하며, 또한 제2 연산부가 N개의 배리어블 노드의 연산을 동시에 행하는 것을 특징으로 한다.
본 발명의 복호 방법은, LDPC 부호의 복호를 위한 체크 노드의 연산을 행하는 제1 연산 스텝과, LDPC 부호의 복호를 위한 배리어블 노드의 연산을 행하는 제2 연산 스텝을 포함하고, 제1 연산 스텝의 처리만이 N(N은 P 미만의 양의 정수)개의 체크 노드의 연산을 동시에 행하거나, 제2 연산 스텝의 처리만이 N개의 배리어블 노드의 연산을 동시에 행하거나, 또는 제1 연산 스텝의 처리가 N개의 체크 노드의 연산을 동시에 행하며, 또한 제2 연산 스텝의 처리가 N개의 배리어블 노드의 연산을 동시에 행하는 것을 특징으로 한다.
본 발명에서는, N(N은 P 미만의 양의 정수)개의 체크 노드의 연산을 동시에 행하거나, N개의 배리어블 노드의 연산을 동시에 행하거나, 또는 N개의 체크 노드의 연산을 동시에 행하며, 또한 N개의 배리어블 노드의 연산을 동시에 행한다.
<발명의 효과>
본 발명에 따르면, LDPC 부호의 복호를, 장치의 대규모화를 억제하면서 양호한 정밀도로 행하는 것이 가능하게 된다.
도 1은 LDPC 부호의 검사 행렬 H를 설명하는 도면.
도 2는 패리티부가 하삼각 행렬로 되어 있는 검사 행렬 H를 도시하는 도면.
도 3은 LDPC 부호의 복호 수순을 설명하는 플로우차트.
도 4는 메시지의 흐름을 설명하는 도면.
도 5는 LDPC 부호의 검사 행렬 H의 예를 도시하는 도면.
도 6은 검사 행렬 H의 태너 그래프를 도시하는 도면.
도 7은 배리어블 노드를 도시하는 도면.
도 8은 체크 노드를 도시하는 도면.
도 9는 LDPC 부호의 검사 행렬 H의 예를 도시하는 도면.
도 10은 노드 연산을 1개씩 행하는 LDPC 부호의 복호 장치의 구성예를 도시하는 블록도.
도 11은 도 10의 체크 노드 계산기의 구성예를 도시하는 블록도.
도 12는 도 10의 배리어블 노드 계산기의 구성예를 도시하는 블록도.
도 13은 노드 연산을 모두 동시에 행하는 LDPC 부호의 복호 장치의 구성예를 도시하는 블록도.
도 14는 도 13의 체크 노드 계산기의 구성예를 도시하는 블록도.
도 15는 도 13의 배리어블 노드 계산기의 구성예를 도시하는 블록도.
도 16은 6×6 단위로 분할한 검사 행렬 H를 도시하는 도면.
도 17은 노드 연산을 6개 동시에 행하는 복호 장치의 구성예를 도시하는 블록도.
도 18은 도 17의 체크 노드 계산기의 구성예를 도시하는 블록도.
도 19는 도 17의 배리어블 노드 계산기의 구성예를 도시하는 블록도.
도 20은 도 17의 복호 도중 결과 저장용 메모리의 구성예를 도시하는 블록도.
도 21은 도 17의 복호 도중 결과 저장용 RAM의 동작을 설명하는 타이밍차트.
도 22는 복호 도중 결과에 대응하는 구성 행렬의 위치를 도시하는 도면.
도 23은 본 발명을 적용한 복호 장치의 제1 실시예의 구성예를 도시하는 블록도.
도 24는 도 23의 복호 도중 결과 저장 메모리의 구성예를 도시하는 블록도.
도 25는 도 24의 복호 도중 결과 저장용 RAM의 동작을 설명하는 타이밍차트.
도 26은 복호 도중 결과에 대응하는 구성 행렬의 위치를 도시하는 도면.
도 27은 도 23의 복호 장치의 복호 처리를 설명하는 플로우차트.
도 28은 본 발명을 적용한 복호 장치의 제2 실시예의 구성예를 도시하는 블록도.
도 29는 도 28의 수신용 메모리의 구성예를 도시하는 블록도.
도 30은 도 28의 복호 도중 결과 저장용 메모리의 구성예를 도시하는 블록도.
도 31은 수신용 메모리와 복호 도중 결과 저장용 메모리의 동작을 설명하는 타이밍차트.
도 32는 본 발명을 적용한 복호 장치의 제3 실시예의 구성예를 도시하는 블록도.
도 33은 도 32의 복호 도중 결과 저장용 메모리의 구성예를 도시하는 블록도.
도 34는 본 발명을 적용한 복호 장치의 제4 실시예의 구성예를 도시하는 블록도.
도 35는 도 34의 복호 장치의 복호 처리를 설명하는 플로우차트.
<도면의 주요 부분에 대한 부호의 설명>
414 : 사이클릭 시프트 회로
415 : 계산부
416 : 수신용 메모리
1000 : 복호 장치
1101 : 사이클릭 시프트 회로
1102 : 계산부
1103, 1104 : 복호 도중 결과 저장용 메모리
1105 : 제어부
1202 내지 1205 : 복호 도중 결과 저장용 RAM
1499 : 제어부
1500 : 수신용 메모리
1600 : 복호 도중 결과 저장용 메모리
1502, 1503 : 수신 데이터 저장용 메모리
1602, 1603 : 복호 도중 결과 저장용 메모리
1799 : 제어부
1800 : 복호 도중 결과 저장용 메모리
1801, 1802 : 복호 경판정 결과 저장용 메모리
1803 : 복호 연판정 결과 저장용 메모리
2000 : 사이클릭 시프트 회로
2001 : 신드롬 판정부
2002 : 복호 도중 결과 저장용 메모리
2003 : 제어부
<발명을 실시하기 위한 최선의 형태>
이하, 본 발명을 적용한 구체적인 실시예에 대하여, 도면을 참조하면서 상세하게 설명한다.
도 23은, 도 16의 검사 행렬 H로 표현되는 LDPC 부호를 복호하는 본 발명을 적용한 복호 장치의 제1 실시예의 구성예를 도시하고 있다.
도 23의 복호 장치(1000)는, 사이클릭 시프트 회로(414), 계산부(415), 수신용 메모리(416), 사이클릭 시프트 회로(1101), 3개의 계산기(11021 내지 11023)로 이루어지는 계산부(1102), 복호 도중 결과 저장용 메모리(1103), 복호 도중 결과 저장용 메모리(1104), 및 제어부(1105)로 구성된다. 또한, 도 17과 동일한 것에는, 동일한 부호를 붙이고 있다.
사이클릭 시프트 회로(1101)에는, 복호 도중 결과 저장용 메모리(1104)로부터 6개의 복호 도중 결과(D1104)와, 수신용 메모리(416)로부터 6개의 수신 데이터(D417)(LDPC 부호)가 공급된다. 또한, 사이클릭 시프트 회로(1101)에는, 제어부(1105)로부터, 그 복호 도중 결과(D1104)에 대응하는 검사 행렬 H의 1이, 검사 행렬 H에서 기초로 되는 단위 행렬 등을 몇 사이클릭 시프트한 것인지의 정보(Matrix 데이터)를 나타내고, 또한 6개의 복호 도중 결과(D1104) 또는 수신 데이 터(D417) 중 어느 쪽을 선택할지의 정보를 나타내는 제어 신호(D1106)가 공급된다.
사이클릭 시프트 회로(1101)는, 제어 신호(D1106)를 바탕으로, 6개의 복호 도중 결과(D1104) 또는 수신 데이터(D417)를 선택하고, 재배열하는 사이클릭 시프트를 행한다. 사이클릭 시프트 회로(1101)는, 6개의 복호 도중 결과(D1104) 또는 수신 데이터(D417)를 사이클릭 시프트한 결과 중, 구성 행렬의 상반분(1행째 내지 3행째) 또는 하반분(4행째 내지 6행째)의 1에 대응하는 3개를 복호 도중 결과(D1101)로서, 계산부(1102)에 공급한다.
계산부(1102)는, 3개의 계산기(11021 내지 11023)로 이루어진다. 계산부(1102)에는, 사이클릭 시프트 회로(1101)로부터, 계산부(415)에 의한 제2 연산의 결과 얻어진 3개의 복호 도중 결과(D1101)(v)가 공급됨과 함께, 복호 도중 결과 저장용 메모리(1103)로부터, 전회 계산기(11021 내지 11023)에 의한 제1 연산의 결과 얻어진 구성 행렬의 상반분 또는 하반분의 1에 대응하는 3개의 복호 도중 결과(D1103)(uj)가 공급되고, 그 3개의 복호 도중 결과(D1101)와 3개의 복호 도중 결과(D1103)가, 계산기(11021 내지 11023)에 공급된다. 또한, 계산부(1102)에는, 제어부(1105)로부터 제어 신호(D1107)가 공급되고, 그 제어 신호(D1107)가, 계산기(11021 내지 11023)에 공급된다. 또한, 제어 신호(D1107)는, 3개의 계산기(11021 내지 11023)에 공통의 신호이다.
계산기(11021 내지 11023)는, 도 18에 도시한 계산기(4121)와 마찬가지로 구 성되고, 각각 복호 도중 결과(D1101과 D1103)를 이용하여, 수학식 7과 수학식 8에 따라서 제1 연산을 행하여, 복호 도중 결과(D1102)(vi)를 구한다. 계산부(1102)는, 계산기(11021 내지 11023)에 의한 연산의 결과 얻어지는, 구성 행렬의 상반분 또는 하반분의 3개의 1에 대응하는 3개의 복호 도중 결과(D1102)를 복호 도중 결과 저장용 메모리(1103)에 공급한다.
복호 도중 결과 저장용 메모리(1103)는, 예를 들면, 3개의 복호 도중 결과(D1102)를 동시에 읽기쓰기 가능한, 4개의 싱글 포트 RAM으로 구성된다. 복호 도중 결과 저장용 메모리(1103)에는, 계산부(1102)로부터 3개의 복호 도중 결과(D1102)가 공급됨과 함께, 제어부(1105)로부터 복호 도중 결과 저장용 메모리(1103)의 읽기쓰기를 제어하는 제어 신호(D1108)가 공급된다.
복호 도중 결과 저장용 메모리(1103)에는, 제어 신호(D1108)에 기초하여, 계산부(1102)로부터 공급되는 3개의 복호 도중 결과(D1102)가 통합하여 저장됨과 동시에, 이미 저장되어 있는 3개의 복호 도중 결과(D1102)가 읽어내어지고, 복호 도중 결과(D1103)로서, 계산부(1102)와 사이클릭 시프트 회로(414)에 공급된다. 즉, 복호 도중 결과 저장용 메모리(1103)에 대하여, 계산부(1102)와 사이클릭 시프트 회로(414)에 공급하는 복호 도중 결과(D1103)의 읽어내기와, 계산부(1103)로부터 공급되는 복호 도중 결과(D1102)의 기입이, 동시에 행하여진다.
또한, 복호 도중 결과 저장용 메모리(1103)에는, 계산부(1102)의 제1 연산에 의해 연산된 검사 행렬 H의 i열의, 각 행의 1에 대응하는 브랜치로부터의 제1 연산 의 복호 도중 결과(D1102)가 저장되므로, 복호 도중 결과 저장용 메모리(1103)에 저장되는 데이터량, 즉, 복호 도중 결과 저장용 메모리(1103)에 필요로 되는 기억 용량은, 복호 도중 결과(D1102)의 양자화 비트수와, 검사 행렬 H의 1의 수의 승산값으로 된다.
사이클릭 시프트 회로(414), 계산부(415), 및 수신용 메모리(416)는, 도 17의 그들과 동일하므로 설명은 생략한다. 또한, 사이클릭 시프트 회로(414)는, 복호 도중 결과 저장용 메모리(1103)로부터 3개씩 공급되는 6개의 복호 도중 결과(D1103)를 사이클릭 시프트하고, 6개의 복호 도중 결과(D414)를 계산부(415)에 공급한다.
복호 도중 결과 저장용 메모리(1104)에는, 사이클릭 시프트 회로(1101)로부터의 복호 결과(D1105)가 6개씩, 제1 어드레스로부터 순서대로 저장되고, 복호 도중 결과 저장용 메모리(1104)로부터는 이미 저장되어 있는 복호 결과(D1105)가 출력된다. 또한, 복호 도중 결과 저장용 메모리(1104)에는, 계산부(415)로부터 공급된 제2 연산의 결과인 검사 행렬 H의 6개의 열에 대응하는 6개의 복호 도중 결과(D415)가, 제1 어드레스로부터 순서대로 저장된다.
즉, 복호 도중 결과 저장용 메모리(1104)의 제1 어드레스에는, 도 17의 복호 도중 결과 저장용 메모리(410)와 마찬가지로, 검사 행렬 H의 열에 대응하는 복호 도중 결과 중, 제1열째부터 제6열째의 복호 도중 결과 v가 저장된다. 그리고, 마찬가지로, 제2 어드레스에는, 제7열째부터 제12열째의 복호 도중 결과 v가 저장되고, 제3 어드레스에는, 제13열째부터 제18열째의 복호 도중 결과가 저장된다. 이 후, 마찬가지로, 제19열째부터 제108열째까지의 복호 도중 결과 v가, 6개씩, 제4 어드레스부터 제18 어드레스까지 저장되고, 합계 108개의 복호 도중 결과 v가 복호 도중 결과 저장용 메모리(1104)에 저장된다.
따라서, 복호 도중 결과 저장용 메모리(1104)의 워드(word)수는, 도 16의 검사 행렬 H의 열수(LDPC 부호의 부호 길이)인 108을, 동시에 읽기쓰기하는 복호 도중 결과의 수인 6으로 제산한 18로 된다.
복호 도중 결과 저장용 메모리(1104)로부터는, 이미 저장되어 있는 복호 도중 결과(D415)로부터, 후단의 계산부(1102)가 구하고자 하는 복호 도중 결과 uj의 대응하는 검사 행렬 H의 행에서 "1"로 되어 있는 복호 도중 결과 v가 6개 동시에 읽어내어지고, 복호 도중 결과(D1104)로서, 사이클릭 시프트 회로(1101)에 공급된다.
또한, 복호 도중 결과 저장용 메모리(1104)는, 예를 들면, 6개의 복호 도중 결과를 동시에 읽기쓰기 가능한 싱글 포트 RAM으로 구성된다. 또한, 복호 도중 결과 저장용 메모리(1104)에는, 계산부(415)의 제2 연산에 의해 연산된 열에 대응하는 복호 도중 결과(D415)가 저장되므로, 복호 도중 결과 저장용 메모리(1104)에 저장되는 데이터량, 즉, 복호 도중 결과 저장용 메모리(1104)에 필요로 되는 기억 용량은, 복호 도중 결과(D415)의 양자화 비트수와, 검사 행렬 H의 열수(LDPC 부호의 부호 길이)의 승산값이다.
제어부(1105)는, 제어 신호(D1106)를 사이클릭 시프트 회로(1101)에, 제어 신호(D1107)를 계산부(1102)에 공급함으로써, 각각을 제어한다. 또한, 제어부(1105)는, 제어 신호(D1108)를 복호 도중 결과 저장용 메모리(1103)에, 제어 신호(D421)를 사이클릭 시프트 회로(414)에, 제어 신호(D422)를 계산부(415)에 각각 공급함으로써, 각각을 제어한다.
사이클릭 시프트 회로(1101), 계산부(1102), 복호 도중 결과 저장용 메모리(1103), 사이클릭 시프트 회로(414), 계산부(415), 복호 도중 결과 저장용 메모리(1104)의 순으로, 데이터가 일주함으로써, 복호 장치(1000)는, 1회의 복호를 행할 수 있다. 복호 장치(1000)에서는, 예를 들면, 소정의 횟수만큼 반복하여 복호가 행하여진 후, 계산부(415)에 의한 제2 연산의 결과인 복호 도중 결과(D1104)가, 최종적인 복호 결과로서 출력된다.
도 24는, 도 23의 복호 도중 결과 저장용 메모리(1103)의 구성예를 도시하는 블록도이다.
복호 도중 결과 저장용 메모리(1103)는, 스위치(1201과 1206), 및 4개의 싱글 포트 RAM인 복호 도중 결과 저장용 RAM(1202 내지 1205)으로 구성된다.
이 복호 도중 결과 저장용 메모리(1103)의 각 부에 대하여 상세하게 설명하기 전에, 우선, 복호 도중 결과 저장용 RAM(1202 내지 1205)에의 데이터의 저장 방법에 대하여 설명한다.
복호 도중 결과 저장용 RAM(1202 내지 1205)에는, 계산부(1102)에 의한 제1 연산의 결과 얻어지고, 스위치(1201)를 통하여 공급된 복호 도중 결과(D1102)가 저장된다.
구체적으로는, 복호 도중 결과 저장용 RAM(1202)의 제1 어드레스 내지 제9 어드레스에는, 도 16의 검사 행렬 H의 제1행째부터 제3행째까지의 1에 대응하는 복호 도중 결과(D1102)(D1201)가, 각 행 모두 가로 방향(열 방향)으로 채운 형으로(0을 무시한 형으로) 저장된다.
즉, 제j행 제i를, (j, i)로 표시하는 것으로 하면, 복호 도중 결과 저장용 RAM(1202)의 제1 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,1)부터 (6,6)의 6×6의 단위 행렬의 상반분(1 내지 3행째)의 1에 대응하는 데이터가, 제2 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,25)부터 (6,30)의 시프트 행렬(6×6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 시프트 행렬)의 상반분의 1에 대응하는 데이터가 저장된다. 제3 어드레스 내지 제8 어드레스도 마찬가지로 도 16의 검사 행렬 H의 구성 행렬의 상반분과 대응지어 데이터가 저장된다.
그리고, 제9 어드레스에는, 검사 행렬 H의 (1,103)부터 (6,108)의 시프트 행렬(6×6의 단위 행렬 중의 1행째의 "1"을 "0"으로 치환하여 1개만큼 좌측 방향으로 사이클릭 시프트한 시프트 행렬)의 상반분의 "1"에 대응하는 데이터가 저장된다. 여기서, 도 16의 검사 행렬 H의 (1,103)부터 (6,108)의 시프트 행렬에서는, 1행째에 "1"이 없기 때문에, 제9 어드레스에는 데이터가 저장되지 않는다.
또한, 복호 도중 결과 저장용 RAM(1202)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제13행째부터 제15행째까지의 "1"에 대응하는 데이터가 저장된다. 즉, 제10 어드레스에는, 검사 행렬 H의 (13,7)부터 (18,12)의 6× 6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 행렬의 상반분의 "1"에 대응하는 데이터가 저장되고, 제11 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행렬(6×6의 단위 행렬과, 6×6의 단위 행렬을 우측 방향으로 1개만큼 사이클릭 시프트한 시프트 행렬의 합인 합 행렬)을 구성하는 시프트 행렬의 상반분의 "1"에 대응하는 데이터가 저장된다.
또한, 제12 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행렬을 구성하는 단위 행렬의 상반분의 "1"에 대응하는 데이터가 저장된다. 이하, 제13 어드레스 내지 제18 어드레스에 대해서도, 검사 행렬 H의 구성 행렬의 상반분에 대응지어 데이터가 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(1202)의 제19 어드레스 내지 제27 어드레스에는, 도 16의 검사 행렬 H에 대응지어, 제25행째부터 제27행째까지의 "1"에 대응하는 데이터가 저장된다. 즉, 복호 도중 결과 저장용 RAM(1202)의 워드수는, 27이다.
또한, 복호 도중 결과 저장용 RAM(1203)의 제1 어드레스 내지 제9 어드레스에는, 도 16의 검사 행렬 H의 제4행째부터 제6행째까지의 "1"에 대응하는 복호 도중 결과(D1102)(D1202)가, 각 행 모두 가로 방향으로 채운 형으로 저장된다.
즉, 복호 도중 결과 저장용 RAM(1203)의 제1 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,1)부터 (6,6)의 6×6의 단위 행렬의 하반분(4 내지 6행째)의 "1"에 대응하는 데이터가, 제2 어드레스에는, 도 16의 검사 행렬 H의 구성 행렬인 (1,25)부터 (6,30)의 시프트 행렬(6×6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 시프트 행렬)의 하반분의 "1"에 대응하는 데이터가 저장된다. 제3 어드레스 내지 제9 어드레스도 마찬가지로 도 16의 검사 행렬 H의 구성 행렬의 하반분과 대응지어 데이터가 저장된다.
또한, 복호 도중 결과 저장용 RAM(1203)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제16행째부터 제18행째까지의 "1"에 대응하는 데이터가 저장된다. 즉, 제10 어드레스에는, 검사 행렬 H의 (13,7)부터 (18,12)의 6×6의 단위 행렬을 우측 방향으로 5개만큼 사이클릭 시프트한 행렬의 하반분의 "1"에 대응하는 데이터가 저장되고, 제11 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행렬(6×6의 단위 행렬과, 6×6의 단위 행렬을 우측 방향으로 1개만큼 사이클릭 시프트한 시프트 행렬의 합인 합 행렬)을 구성하는 시프트 행렬의 하반분의 "1"에 대응하는 데이터가 저장된다. 또한, 제12 어드레스에는, 검사 행렬 H의 (13,13)부터 (18,18)의 합 행렬을 구성하는 단위 행렬 하반분의 "1"에 대응하는 데이터가 저장된다. 이하, 제13 어드레스 내지 제18 어드레스에 대해서도, 검사 행렬 H의 구성 행렬의 하반분에 대응지어 데이터가 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(1203)의 제19 어드레스 내지 제27 어드레스에는, 도 16의 검사 행렬 H에 대응지어, 제28행째부터 제30행째까지의 "1"에 대응하는 데이터가 저장된다. 즉, 복호 도중 결과 저장용 RAM(1203)의 워드수는, 27이다.
복호 도중 결과 저장용 RAM(1204)의 제1 어드레스 내지 제9 어드레스에는, 도 16의 검사 행렬 H의 제7행째부터 제9행째까지의 1에 대응하는 복호 도중 결 과(D1102)(D1203)가, 각 행 모두 가로 방향으로 채운 형으로 저장된다.
즉, 복호 도중 결과 저장용 RAM(1204)의 제1 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬(6×6의 단위 행렬을 우측 방향으로 2개만큼 사이클릭 시프트한 제1 시프트 행렬과, 우측 방향으로 4개만큼 사이클릭 시프트한 제2 시프트 행렬의 합인 합 행렬)을 구성하는 제1 시프트 행렬의 상반분(7 내지 9행째)의 "1"에 대응하는 데이터가, 제2 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬을 구성하는 제2 시프트 행렬의 상반분의 "1"에 대응하는 데이터가 저장된다. 이하, 제3 어드레스 내지 제9 어드레스도 마찬가지로 검사 행렬 H의 구성 행렬의 상반분과 대응지어 데이터가 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(1204)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제19행째부터 제21행째까지의 "1"에 대응하는 데이터가, 제19 어드레스 내지 제27 어드레스에는, 검사 행렬 H의 제31행째부터 제33행째까지의 "1"에 대응하는 데이터가, 도 16의 검사 행렬 H에 대응지어 저장된다. 즉, 복호 도중 결과 저장용 RAM(1204)의 워드수는, 27이다.
복호 도중 결과 저장용 RAM(1205)의 제1 어드레스 내지 제9 어드레스에는, 도 16의 검사 행렬 H의 제10행째부터 제12행째까지의 "1"에 대응하는 복호 도중 결과(D1102)(D1204)가, 각 행 모두 가로 방향으로 채운 형으로 저장된다.
즉, 복호 도중 결과 저장용 RAM(1205)의 제1 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬(6×6의 단위 행렬을 우측 방향으로 2개만큼 사이클릭 시프트한 제1 시프트 행렬과, 우측 방향으로 4개만큼 사이클릭 시프트 한 제2 시프트 행렬의 합인 합 행렬)을 구성하는 제1 시프트 행렬의 하반분(10 내지 12행째)의 "1"에 대응하는 데이터가, 제2 어드레스에는, 검사 행렬 H의 구성 행렬인 (7,1)부터 (12,6)의 합 행렬을 구성하는 제2 시프트 행렬의 하반분의 "1"에 대응하는 데이터가 저장된다. 이하, 제3 어드레스 내지 제9 어드레스도 마찬가지로 검사 행렬 H의 구성 행렬의 하반분과 대응지어 데이터가 저장된다.
마찬가지로, 복호 도중 결과 저장용 RAM(1205)의 제10 어드레스 내지 제18 어드레스에는, 도 16의 검사 행렬 H의 제22행째부터 제24행째까지의 "1"에 대응하는 데이터가, 제19 어드레스 내지 제27 어드레스에는, 검사 행렬 H의 제34행째부터 제36행째까지의 "1"에 대응하는 데이터가, 도 16의 검사 행렬 H에 대응지어 저장된다. 즉, 복호 도중 결과 저장용 RAM(1205)의 워드수는, 27이다.
상술한 바와 같이, 복호 도중 결과 저장용 RAM(1202 내지 1205)의 워드(word)수는, 27이다. 즉, 워드수는, 검사 행렬 H의 행의 가중치(row weight)인 9와 행수인 36을 승산하고, 그 승산 결과(검사 행렬 H의 "1"의 수)를, 동시에 읽어내는 복호 도중 결과(D1201)의 수인 3으로 제산하고, 또한, 복호 도중 결과 저장용 메모리(1103)가 갖는 복호 도중 결과 저장용 RAM의 개수인 4로 제산한 값으로 된다.
이하, 도 24의 복호 도중 결과 저장용 메모리(1103)의 각 부의 동작에 대하여 상세하게 설명한다.
복호 도중 결과 저장용 메모리(1103)에는, 계산부(1102)에 의해 제1 연산이 행하여지는 경우, 계산부(1102)로부터 제1 연산의 결과 얻어지는 복호 도중 결 과(D1102)(uj)가 공급되고, 그 복호 도중 결과(D1102)가 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개의 소정의 어드레스에 기입됨과 동시에, 그 밖의 1개로부터, 전회의 계산부(1102)에 의한 제1 연산의 결과 얻어진 복호 도중 결과(D1102)가 읽어내어지고, 복호 도중 결과(D1103)로서 계산부(1102)에 출력된다. 한편, 계산부(415)에 의해 제2 연산이 행하여지는 경우, 복호 도중 결과 저장용 메모리(1103)에서는, 복호 도중 결과 저장용 RAM(1202 내지 1205)의 기입이 행하여지지 않고, 어느 1개의 복호 도중 결과 저장용 RAM(1202 내지 1205)의 소정의 어드레스로부터 복호 도중 결과(D1102)를 읽어내어, 복호 도중 결과(D1103)로서 사이클릭 시프트 회로(414)에 공급한다.
스위치(1201)에는, 계산부(1102)로부터 3개의 복호 도중 결과(D1102)가 공급됨과 함께, 그 복호 도중 결과(D1102)를 기입하는 메모리로서, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개의 선택을 나타내는 제어 신호(D11081)가 제어부(1105)로부터 공급된다. 스위치(1201)는, 제어 신호(D11081)에 기초하여, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개를 선택하고, 그 선택한 복호 도중 결과 저장용 RAM(1202 내지 1205)에, 3개의 복호 도중 결과(D1102)를 공급한다.
복호 도중 결과 저장용 RAM(1202 내지 1205)에는, 스위치(1201)로부터 3개의 복호 도중 결과(D1102)가, 각각 복호 도중 결과(D1201 내지 D1204)로서 공급됨과 함께, 제어부(1105)로부터 어드레스를 나타내는 제어 신호(D11082 내지 D11085)가 공급된다. 복호 도중 결과 저장용 RAM(1202 내지 1205)은, 각각 제어 신호(D11082 내지 D11085)가 나타내는 어드레스에 이미 저장되어 있는 전회의 계산부(1102)에 의한 제1 연산의 결과 얻어진 3개의 복호 도중 결과(D1201 내지 D1204)를 읽어내고, 복호 도중 결과(D1205 내지 D1208)로서 스위치(1206)에 공급한다. 또한, 복호 도중 결과 저장용 RAM(1202 내지 1205)에는, 각각, 제어 신호(D11082 내지 D11085)가 나타내는 어드레스에, 스위치(1201)로부터 공급된 3개의 복호 도중 결과(D1201 내지 D1204)가 저장된다.
스위치(1206)에는, 복호 도중 결과 저장용 RAM(1202)으로부터의 복호 도중 결과(D1205), 복호 도중 결과 저장용 RAM(1203)으로부터의 복호 도중 결과(D1206), 복호 도중 결과 저장용 RAM(1204)으로부터의 복호 도중 결과(D1207), 또는 복호 도중 결과 저장용 RAM(1205)으로부터의 복호 도중 결과(D1208)가 공급된다.
또한, 제어부(1105)로부터, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개의 선택을 나타내는 제어 신호(D11086)가 공급된다. 스위치(1206)는, 제어 신호(D11086)에 기초하여, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개를 선택하고, 그 선택한 1개로부터 공급된 3개의 복호 도중 결과(D1205 내지 D1208)가, 3개의 복호 도중 결과(D1103)로서 계산부(1102) 또는 사이클릭 시프트 회로(414)에 공급된다.
도 25는, 복호 도중 결과 저장용 메모리(1103)의 복호 도중 결과 저장용 RAM(1202) 내지 복호 도중 결과 저장용 RAM(1205)의 읽어내기와 기입의 동작을 설명하는 타이밍차트이다.
또한, 도 25에서, 횡축은, 시간(t)을 나타내고 있다. 또한, 도 25에서는, 도 26의 ○표 내에 기재된 숫자 i0의 구성 행렬의 상반분의 "1"에 대응하는 데이터의 읽어내기를 Ri0으로 표시하고, 그 데이터의 기입(저장)을 Wi0으로 표시한다. 또한, 도 26의 ○표 내에 기재된 숫자 i1의 구성 행렬의 하반분의 "1"에 대응하는 데이터의 읽어내기를 Ri1로 표시하고, 그 데이터의 기입을 Wi1로 표시한다.
복호 도중 결과 저장용 메모리(1103)에서는, 계산부(1102)에 의해 제1 연산이 행하여지는 경우, 복호 도중 결과 저장용 RAM(1202)으로부터, 제어 신호(D11082)에 기초하여, 이미 저장하고 있는, 전회의 계산부(1102)의 제1 연산의 결과 얻어진 복호 도중 결과(D1201) 중, 동일 어드레스에 저장하고 있는 검사 행렬 H의 제1행째부터 제3행째까지의 "1"에 대응하는 복호 도중 결과(D1201)(D1205)가, 3개씩 9회(9클럭분) 읽어내어져(R00 내지 R80), 스위치(1206)를 통하여, 복호 도중 결과(D1103)로서 계산부(1102)에 공급된다. 즉, 도 16의 검사 행렬 H의 행 가중치는, 9이기 때문에, 검사 행렬 H의 각 행의 "1"에 대응하는 복호 도중 결과는 9개 있고, 복호 도중 결과 저장용 RAM(1202)으로부터는, 제1행째부터 제3행째까지의 "1"에 대응하는 3개의 복호 도중 결과(D1201)가, 3개 단위로 9회 읽어내어진다.
다음으로, 복호 도중 결과 저장용 RAM(1203)으로부터는, 제어 신호(D11083) 에 기초하여, 이미 저장되어 있는, 전회의 계산부(1102)의 제1 연산의 결과 얻어진 복호 도중 결과(D1202) 중, 동일 어드레스에 저장되어 있는 검사 행렬 H의 제4행째부터 제6행째까지의 "1"에 대응하는 복호 도중 결과(D1202)가, 3개 단위로 9회 계속하여 읽어내어져(도면 중, R01 내지 R81), 스위치(1206)를 통하여, 계산부(1102)에 공급된다.
여기서, 계산부(1102)가 제1 연산을 행하기 위해 필요한 시간, 즉 복호 도중 결과 저장 메모리(1103)로부터 복호 도중 결과(D1103)가 읽어내어지고나서, 그 복호 도중 결과(D1103)를 이용한 제1 연산의 결과 얻어지는 복호 도중 결과(D1102)가 복호 도중 결과 저장 메모리(1103)에 공급될 때까지의 시간은, 12클럭분의 시간 T1인 것으로 한다.
이 경우, 복호 도중 결과 저장용 RAM(1202)으로부터 복호 도중 결과(D1205)의 1회째의 읽어내기(R00)가 개시되고나서 T1 시간 후에, 계산부(1102)로부터 복호 도중 결과 저장용 메모리(1103)에의, 제1 연산의 결과 얻어지는 검사 행렬 H의 제1행째부터 제3행째까지의 "1"에 대응하는 3개의 복호 도중 결과(D1102)의 공급이 개시된다. 그 복호 도중 결과(D1102)는, 스위치(1201)를 통하여 복호 도중 결과(D1201)로서 복호 도중 결과 저장용 RAM(1202)에 공급되고, 복호 도중 결과 저장용 RAM(1202)에는, 그 복호 도중 결과(D1202)가, 제어 신호(D11082)에 기초하여, 이미 읽어내어진 복호 도중 결과(D1205)가 저장되어 있던 어드레스에 9회 계속하여 저장된다(W00 내지 W80).
즉, 복호 도중 결과 저장용 RAM(1202)으로부터의 복호 도중 결과(D1205)의 9회의 읽어내기(R00 내지 R80)가 종료하고나서, 복호 도중 결과 저장용 RAM(1202)에의 복호 도중 결과(D1201)의 9회의 저장(W00 내지 W80)이 개시될 때까지, 3클럭분의 시간 Tw(=T1-9)가 생긴다. 그 결과, 복호 도중 결과 저장용 RAM(1203)으로부터의 9회의 읽어내기(R01 내지 R81)가 종료하고나서, 시간 Tw가 경과 후에 복호 도중 결과 저장용 RAM(1202)에의 9회의 저장(W00 내지 W80)이 종료한다.
그러나, 복호 도중 결과 저장용 메모리(1103)에서는, 다음의 제1 연산에 이용되는 검사 행렬 H의 제7행째부터 제9행째까지의 "1"에 대응하는 복호 도중 결과(D1203)가, 복호 도중 결과 저장용 RAM(1204)에 저장되어 있으므로, 복호 도중 결과 저장용 RAM(1203)으로부터의 9회의 읽어내기(R01 내지 R81) 직후에, 복호 도중 결과 저장용 RAM(1204)으로부터의 9회의 읽어내기(R90 내지 R170)를 행할 수 있다.
또한, 복호 도중 결과 저장용 RAM(1203)으로부터의 9회의 읽어내기(R01 내지 R81)가 종료하고나서 시간 Tw 후에, 복호 도중 결과 저장용 RAM(1203)에의 복호 도중 결과(D1202)의 9회의 저장(W01 내지 W81)이 개시된다.
다음으로, 복호 도중 결과 저장용 RAM(1204)으로부터의 9회의 읽어내기(R90 내지 R170)가 종료한 직후에, 다음의 제1 연산에 이용되는 검사 행렬 H의 제10행째부터 제12행째까지의 1에 대응하는 복호 도중 결과(D1204)가, 복호 도중 결과 저장 용 RAM(1205)으로부터 9회 읽어내어진다(R91 내지 R171). 또한, 복호 도중 결과 저장용 RAM(1204)으로부터의 9회의 읽어내기(R90 내지 R170)가 종료하고나서 시간 Tw 후에, 복호 도중 결과 저장용 RAM(1204)에의 복호 도중 결과(D1203)의 9회의 저장(W90 내지 W170)이 개시된다.
복호 도중 결과 저장용 RAM(1205)으로부터의 9회의 읽어내기(R91 내지 R171)가 종료한 직후에, 다음의 제1 연산에 이용되는 검사 행렬 H의 제13행째부터 제15행째까지의 "1"에 대응하는 복호 도중 결과(D1201)가, 복호 도중 결과 저장용 RAM(1202)으로부터 9회 읽어내어진다(R180 내지 R260). 또한, 복호 도중 결과 저장용 RAM(1205)으로부터의 9회의 읽어내기(R91 내지 R171)가 종료하고나서 시간 Tw 후에, 복호 도중 결과 저장용 RAM(1205)에의 복호 도중 결과(D1204)의 9회의 저장(W91 내지 W171)이 개시된다. 그리고, 이후 마찬가지의 처리가 반복된다.
이상과 같이, 복호 도중 결과 저장용 메모리(1103)에서는, 검사 행렬 H의 3행분의 "1"에 대응하는 복호 도중 결과(D1102)가, 4개의 복호 도중 결과 저장용 RAM(1202 내지 1205)에 순서대로 저장되므로, 계산부(1102)가 제1 연산을 행하기 위해 시간 T1이 필요한 경우에도, 복호 도중 결과(D1103)를 계산부(1102)에 연속하여 출력할 수 있다. 그 결과, 계산부(1102)에서는, 연속하여 제1 연산을 행할 수 있다.
도 27은, 도 23의 복호 장치(1000)의 복호 처리를 설명하는 플로우차트이다. 이 처리는, 예를 들면, 수신용 메모리(416)에 복호할 수신 데이터가 저장되었을 때, 개시된다.
스텝 S49에서, 제어부(1105)는, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개를 읽어내기 메모리로서 선택하고, 그 선택을 나타내는 제어 신호(D11086)를 스위치(1206)(도 24)에 공급한다. 스위치(1206)는, 제어 신호(D11086)에 기초하여, 복호 도중 결과 저장용 RAM(1202 내지 1205)을 선택하고, 그 선택한 복호 도중 결과 저장용 RAM(1202 내지 1205)으로부터 3개 단위로 공급되는 복호 도중 결과(D1205 내지 D1208)를, 복호 도중 결과(D1103)로서 사이클릭 시프트 회로(414)와 계산부(1102)에 공급한다.
스텝 S49의 처리 후에는, 스텝 S50으로 진행하여, 사이클릭 시프트 회로(414)는, 복호 도중 결과 저장용 메모리(1103)(의 스위치(1206))로부터 공급되는, 구성 행렬의 상반분에 대응하는 3개의 복호 도중 결과(D1103)와 하반분에 대응하는 3개의 복호 도중 결과(D1103)(uj)를 합하여, 사이클릭 시프트하고, 계산부(415)에 공급한다.
구체적으로는, 사이클릭 시프트회로(414)에는, 복호 도중 결과 저장용 메모리(1103)로부터 3개 단위로 복호 도중 결과(D1103)가 공급됨과 함께, 제어부(1105)로부터, 그 복호 도중 결과(D1103)에 대응하는 Matrix 데이터를 나타내는 제어 신호(D421)가 공급된다. 사이클릭 시프트 회로(414)는 제어 신호(D421)를 바탕으로, 구성 행렬의 상반분에 대응하는 3개의 복호 도중 결과(D1103)와 하반분에 대응하는 3개의 복호 도중 결과(D1103)를 합하여, 사이클릭 시프트하고(재배열하고), 그 결과를 복호 도중 결과(D414)로서, 계산부(415)에 공급한다.
스텝 S51에서, 계산부(415)는, 제2 연산을 행하고, 그 연산의 결과인 복호 도중 결과(D415)를 복호 도중 결과 저장용 메모리(1104)에 공급한다.
구체적으로는, 계산부(415)에는, 스텝 S50에서 사이클릭 시프트 회로(414)로부터 6개의 복호 도중 결과(D414)가 공급됨과 함께, 수신 데이터용 메모리(416)로부터 6개의 수신 데이터(D417)가 공급되며, 복호 도중 결과(D414)와 수신 데이터(D417)가, 계산부(415)의 계산기(4151 내지 4156) 각각에 1개씩 공급된다. 또한, 계산부(415)에는, 제어부(1105)로부터 제어 신호(D422)가 공급되고, 그 제어 신호(D422)가 계산기(4151 내지 4156)에 공급된다.
계산기(4151 내지 4156)는, 복호 도중 결과(D414)와 수신 데이터(D417)를 이용하여, 제어 신호(D422)에 기초하여, 수학식 5에 따라서, 각각 제2 연산을 행하고, 그 제2 연산의 결과 얻어지는 검사 행렬 H의 열에 대응하는 복호 도중 결과(D415)(v)를 복호 도중 결과 저장용 메모리(1104)에 공급한다.
또한, 수신용 메모리(416)로부터 공급된 수신 데이터(D417)에 대하여, 아직 제1 연산이 행하여져 있지 않고, 복호 도중 결과 저장용 메모리(1103)에 복호 도중 결과(D1103)가 저장되어 있지 않은 경우, 계산부(415)는, 복호 도중 결과 uj를 초기값으로 설정하고, 제2 연산을 행한다.
스텝 S51의 처리 후에는, 스텝 S52로 진행하여, 복호 도중 결과 저장용 메모 리(1104)는, 스텝 S51에서 계산부(415)로부터 공급된 복호 도중 결과(D415)(v)를, 동일 어드레스에 저장하고, 스텝 S53으로 진행한다.
스텝 S53에서, 제어부(1105)는, 계산부(415)에 의해, 검사 행렬 H의 열에 대응하는 모든 복호 도중 결과(D1104)가 연산되었는지의 여부를 판정하고, 모든 복호 도중 결과(D1104)가 연산되어 있지 않다고 판정한 경우, 스텝 S49로 되돌아가서, 상술한 처리를 반복한다.
한편, 스텝 S53에서, 제어부(1105)는, 계산부(415)에 의해, 검사 행렬 H의 열에 대응하는 모든 복호 도중 결과(D1104)가 연산되었다고 판정한 경우, 스텝 S54로 진행하여, 사이클릭 시프트 회로(1101)는, 제어부(1105)로부터 공급되는 제어 신호(D1106)를 바탕으로, 복호 도중 결과 저장용 메모리(1104)로부터 공급되는 6개의 복호 도중 결과(D1104)(v)를 사이클릭 시프트하고, 그 결과를 3개 단위로 복호 도중 결과(D1101)로서, 계산부(1102)에 공급한다.
스텝 S54의 처리 후에는, 스텝 S55로 진행하여, 계산부(1102)는, 제1 연산을 행하고, 그 제1 연산의 결과인 복호 도중 결과(D1102)를 복호 도중 결과 저장용 메모리(1103)에 공급한다.
구체적으로는, 계산부(1102)에는, 스텝 S54에서 사이클릭 시프트 회로(1101)로부터 3개의 복호 도중 결과(D1101)(v)가 공급됨과 함께, 후술하는 스텝 S57에서 이미 저장된 전회의 계산부(1102)에 의한 제1 연산의 결과 얻어진 3개의 복호 도중 결과(D1102)(D1103)(uj)가 공급되고, 그 복호 도중 결과(D1101과 D1103)가, 계산 부(1102)의 계산기(11021 내지 11023)의 각각에 1개씩 공급된다. 또한, 계산부(1102)에는, 제어부(1105)로부터 제어 신호(D1107)가 공급되고, 그 제어 신호(D1107)가 계산기(11021 내지 11023)에 공급된다.
계산기(11021 내지 11023)는, 각각 복호 도중 결과(D1101과 D1103)를 이용하여, 제어 신호(D1107)에 기초하여, 수학식 7과 수학식 8에 따라서, 각각 제1 연산을 행하고, 그 제1 연산의 결과 얻어지는 복호 도중 결과(D1102)(uj)를 복호 도중 결과 저장용 메모리(1103)에 공급한다.
또한, 수신용 메모리(416)로부터 공급된 수신 데이터(D417)에 대하여, 아직 제1 연산이 행하여져 있지 않고, 복호 도중 결과 저장용 메모리(1103)에 복호 도중 결과(D1103)가 저장되어 있지 않은 경우, 계산부(1102)는 복호 도중 결과 udv를 0으로 설정한다. 구체적으로는, 예를 들면, 수신 데이터(D417)에 대한 복호를 행하기 전에, 복호 도중 결과 저장용 메모리(1103)가 0으로 초기화되거나, 또는 계산부(1102)가 복호 도중 결과 저장용 메모리(1103)로부터의 입력을 0으로 마스크한다.
스텝 S55의 처리 후에는, 스텝 S56으로 진행하여, 제어부(1105)는, 복호 도중 결과 저장용 RAM(1202 내지 1205) 중 어느 1개를 저장 메모리로서 선택하고, 그 선택을 나타내는 제어 신호(D11081)를 스위치(1201)(도 24)에 공급한다. 스위치(1201)는, 제어 신호(D11081)에 기초하여, 3개의 복호 도중 결과(D1102)를 저장하 는 복호 도중 결과 저장용 RAM(1202 내지 1205)을 선택하고, 그 선택한 복호 도중 결과 저장용 RAM(1202 내지 1205)에, 복호 도중 결과(D1102)를 공급한다.
스텝 S56의 처리 후에는, 스텝 S57로 진행하여, 복호 도중 결과 저장용 RAM(1202 내지 1205)에는, 스텝 S56에서 스위치(1201)로부터 공급된 3개의 복호 도중 결과(D1201 내지 D1204)(D1102)가, 동일한 어드레스에 저장되고, 스텝 S58로 진행한다.
스텝 S58에서, 제어부(1105)는, 계산부(1102)에 의해, 검사 행렬 H의 모든 "1"에 대응하는 복호 도중 결과(D1102)가 연산되었는지의 여부를 판정하고, 모든 복호 도중 결과(D1102)가 연산되어 있지 않다고 판정한 경우, 스텝 S54로 되돌아가서, 상술한 처리를 반복한다.
한편, 스텝 S57에서, 제어부(1105)는, 계산부(1102)에 의해, 모든 "1"에 대응하는 복호 도중 결과(D1102)가 연산되었다고 판정한 경우, 처리를 종료한다.
또한, 복호 장치(1000)는, 복호 횟수만큼 도 27의 복호 처리를 반복하여 행하고, 최후의 제2 연산의 결과 얻어지는 메시지(D1104)가, 최종적인 복호 결과로서 출력된다.
상술한 도 23의 복호 장치(1000)에서는, 계산부(1102)가 3개의 계산기(11021 내지 11023)로 구성되었지만, 계산부(1102)가 아니라, 계산부(415)가 3개의 계산기(4151 내지 4153)로 구성되도록 해도 된다. 이 경우, 3개 단위로 제2 연산이 행하여지고, 복호 도중 결과 저장용 메모리(1104)가 3개 이상의 복호 도중 결과 저장 용 메모리로 구성된다. 또한, 계산부(415)와 계산부(1102)의 양방이, 각각 3개의 계산기(4151 내지 4153), 계산기(11021 내지 11023)로 구성되도록 해도 된다.
이상과 같이, 도 23의 복호 장치(1000)에서는, 복호 도중 결과 저장용 메모리(1103)가 4개의 복호 도중 결과 저장용 RAM(1202 내지 1205)로 구성되고, 계산부(1102)가 3개 단위로 제1 연산을 행하므로, 동작 주파수를 손상시키지 않고, 회로 규모를 삭감할 수 있다.
예를 들면, 종래의 6개의 계산기(4121 내지 4126)를 구비하는 복호 장치(400)에서는, 계산기(4121 내지 4126)에 의한 제1 연산이 필요로 하는 클럭수는 72이지만, 도 23의 복호 장치(1000)에서는, 계산기(11021 내지 11023)에 의한 제1 연산이 필요로 하는 클럭수는 117로서, 복호 장치(400)의 경우의 1.6배 정도이다. 즉, 계산기(11021 내지 11023)의 수를 반감시켰음에도 불구하고, 클럭수는 2배보다 작은 값으로 되어 있다.
또한, 계산기(4151 내지 4156)에 의한 제2 연산이 필요로 하는 클럭수는 59클럭이기 때문에, 1회의 복호에 필요로 하는 시간은, 복호 장치(400과 1000)에서 131(=72+59) 대 176(=117+59)으로 되어, 복호 장치(1000)의 복호에 필요로 하는 시간은, 복호 장치(400)에 비교하여 1.3배 정도이다. 즉, 복호 장치(1000)의 동작 주파수는, 복호 장치(400)에 비교하여 1.3배 정도이면 된다.
또한, 제1 연산이 필요로 하는 클럭수가 작은 경우에는, 복호 장치(400과 1000)에서의 1회의 복호에 필요로 하는 시간의 비율은 작아진다. 예를 들면, 검사 행렬 H의 각 행의 "1"의 수가 4인 경우, 복호 장치(400과 1000)에서의 제1 연산에 필요로 하는 시간의 비율은, 37 대 52로서, 복호 장치(1000)에서의 시간은, 복호 장치(1000)에 비교하여 1.4배 정도로 된다.
도 28은, 본 발명을 적용한 복호 장치(1000)의 제2 실시예의 구성예를 도시하는 블록도이다.
도 28의 복호 장치(1000)에서는, 도 23의 복호 장치(1000)의 수신용 메모리(416) 대신에, 수신용 메모리(1400)가, 복호 도중 결과 저장용 메모리(1104) 대신에 복호 도중 결과 저장용 메모리(1401)가, 제어부(1105) 대신에 제어부(1402)가 설치되어 있다. 수신용 메모리(1400)에는, 제어부(1402)로부터 수신 데이터 저장용 메모리(1502와 1503)(후술하는 도 29) 중 어느 한 쪽의 선택을 나타내는 제어 신호(D1400)가 공급된다. 복호 도중 결과 저장용 메모리(1401)에는, 제어부(1402)로부터 복호 도중 결과 저장용 메모리(1602와 1603)(후술하는 도 30) 중 어느 한 쪽의 선택을 나타내는 제어 신호(D1401)가 공급된다.
도 29는, 도 28의 수신용 메모리(1400)의 구성예를 도시하는 블록도이다.
도 29의 수신용 메모리(1400)는, 스위치(1501과 1504), 및 수신 데이터 저장용 메모리(1502와 1503)로 구성된다.
스위치(1501)에는, 통신로를 통하여 수신한 수신값(부호 비트)으로부터 계산한 부호 비트의 0 근사도의 값인 수신 LLR(대수 우도비)의 데이터(수신 데이터)(D416)가 공급됨과 함께, 제어부(1105)로부터 수신 데이터 저장용 메모리(1502 와 1503) 중 어느 한 쪽의 선택을 나타내는 제어 신호(D14001)가 공급된다. 스위치(1501)는, 제어 신호(D14001)에 기초하여, 수신 데이터(D416)를, 수신 데이터(D1501)로서 수신 데이터 저장용 메모리(1502)에, 또는 수신 데이터(D1502)로서 수신 데이터 저장용 메모리(1503)에 공급한다.
수신 데이터 저장용 메모리(1502)에는, 스위치(1501)로부터의 수신 데이터(D1501)가 저장되며, 또한, 수신 데이터 저장용 메모리(1502)로부터는, 이미 저장되어 있는 수신 데이터(D1501)가, 수신 데이터(D1503)로서 스위치(1504)에 공급된다. 수신 데이터 저장용 메모리(1503)에는, 수신 데이터 저장용 메모리(1502)와 마찬가지로, 스위치(1501)로부터의 수신 데이터(D1502)가 저장되며, 또한, 수신 데이터 저장용 메모리(1503)로부터는, 이미 저장하고 있는 수신 데이터(D1504)가 스위치(1504)에 공급된다.
또한, 수신 데이터 저장용 메모리(1502와 1503)의 각각에 저장되는 데이터량, 즉, 수신 데이터 저장용 메모리(1502와 1503)의 각각에 필요로 되는 기억 용량은, LDPC 부호의 부호 길이와, 수신 데이터의 양자화 비트수의 승산값이다.
스위치(1504)에는, 제어부(1105)로부터 수신 데이터 저장용 메모리(1502와 1503) 중 한 쪽의 선택을 나타내는 제어 신호(D14002)가 공급되고, 스위치(1504)는, 그 제어 신호(D14002)에 기초하여, 수신 데이터 저장용 메모리(1502)로부터의 수신 데이터(D1503) 또는 수신 데이터 저장용 메모리(1503)로부터의 수신 데이터(D1504)를, 수신 데이터(D417)로서 사이클릭 시프트 회로(1101)와 계산부(415)에 공급한 다.
또한, 제어 신호(D14001)는, 수신 데이터 저장용 메모리(1502와 1503) 중 한 쪽의 선택을 나타내고, 제어 신호(D14002)는, 다른 쪽의 선택을 나타낸다. 즉, 수신 데이터 저장용 메모리(1502와 1503) 중 한 쪽에서 기입이 행하여지고 있는 동안, 다른 쪽에서 읽어내기가 행하여진다.
이상과 같이, 수신용 메모리(1400)에서는, 2개의 수신 데이터 저장용 메모리(1502와 1503)가 설치되어 있으므로, 한 쪽에서 입력되는 수신 데이터(D416)를 저장하고 있는 동안에, 다른 쪽에서 이미 저장되어 있는 수신 데이터(D417)를 출력할 수 있다. 그 결과, 수신용 메모리(1400)에서는, 연속하여 입력되는 수신 데이터(D416)를, 수신 데이터(D417)로서 연속 출력할 수 있다.
도 30을 참조하여, 도 28의 복호 도중 결과 저장용 메모리(1401)의 구성을 상세하게 설명한다.
도 30의 복호 도중 결과 저장용 메모리(1401)는, 스위치(1601, 1604, 및 1605), 및 복호 도중 결과 저장용 메모리(1602와 1603)로 구성된다.
스위치(1601)에는, 계산부(415)로부터 3개의 복호 도중 결과(D415)가 공급됨과 함께, 제어부(1105)로부터 복호 도중 결과 저장용 메모리(1602와 1603) 중 한 쪽의 선택을 나타내는 제어 신호(D14011)가 공급된다. 스위치(1601)는, 제어 신호(D14011)에 기초하여, 복호 도중 결과(D415)를, 복호 도중 결과(D1601)로서 복호 도중 결과 저장용 메모리(1602)에, 또는 복호 도중 결과(D1602)로서 복호 도중 결 과 저장용 메모리(1603)에 공급한다.
복호 도중 결과 저장용 메모리(1602)에는, 스위치(1601)로부터의 복호 도중 결과(D1601)가 저장된다. 또한, 복호 도중 결과 저장용 메모리(1602)로부터는, 이미 저장되어 있는 복호 도중 결과(D1601)가, 복호 도중 결과(D1603)로서 스위치(1604)에 공급됨과 함께, 복호 도중 결과(D1604)로서 스위치(1605)에 공급된다. 복호 도중 결과 저장용 메모리(1603)에는, 복호 도중 결과 저장용 메모리(1602)와 마찬가지로, 스위치(1601)로부터의 복호 도중 결과(D1602)가 저장된다. 또한, 복호 도중 결과 저장용 메모리(1602)로부터는, 이미 저장되어 있는 복호 도중 결과(D1602)가, 복호 도중 결과(D1605)로서 스위치(1604)에 공급됨과 함께, 복호 도중 결과(D1606)로서 스위치(1605)에 공급된다.
또한, 복호 도중 결과 저장용 메모리(1602와 1603)의 각각에 저장되는 데이터량, 즉, 복호 도중 결과 저장용 메모리(1602와 1603)의 각각에 필요로 되는 기억 용량은, LDPC 부호의 부호 길이와, 복호 도중 결과(D415)의 양자화 비트수의 승산값이다.
스위치(1604)에는, 제어부(1105)로부터 복호 도중 결과 저장용 메모리(1602와 1603) 중 한 쪽의 선택을 나타내는 제어 신호(D14012)가 공급되고, 스위치(1604)는, 그 제어 신호(D1401)에 기초하여, 복호 도중 결과 저장용 메모리(1602)로부터의 복호 도중 결과(D1603) 또는 복호 도중 결과 저장용 메모리(1603)로부터의 복호 도중 결과(D1605)를, 복호 결과(D1402)(연판정값)로서 출력한다.
스위치(1605)에는, 제어부(1105)로부터 복호 도중 결과 저장용 메모리(1602와 1603) 중 한 쪽의 선택을 나타내는 제어 신호(D14013)가 공급되고, 스위치(1605)는, 그 제어 신호(D14013)에 기초하여, 복호 도중 결과 저장용 메모리(1602)로부터의 복호 도중 결과(D1604), 또는 복호 도중 결과 저장용 메모리(1603)로부터의 복호 도중 결과(D1606)를, 복호 도중 결과(D1403)로서 사이클릭 시프트 회로(1101)에 출력한다.
또한, 제어 신호(D14012)는, 복호 도중 결과 저장용 메모리(1602와 1603) 중 한 쪽의 선택을 나타내고, 제어 신호(D14013)는, 다른 쪽의 선택을 나타낸다. 즉, 복호 도중 결과 저장용 메모리(1602와 1603) 중 한 쪽에 저장되어 있는 복호가 완료한 복호 도중 결과(D1603 또는 D1605)가, 복호 결과(D1402)로서 출력되고 있는 동안, 다른 쪽에 저장되어 있는 복호 도중의 복호 도중 결과(D1604 또는 D1606)가, 복호 결과(D1403)로서 출력된다.
이상과 같이, 복호 도중 결과 저장용 메모리(1401)에서는, 2개의 복호 도중 결과 저장용 메모리(1602와 1603)가 설치되어 있으므로, 한 쪽에서 복호 도중의 복호 도중 결과(D1601 또는 D1602)를 저장하고, 다른 쪽에서 복호가 완료한 복호 도중 결과(D1601 또는 D1602)를 저장할 수 있다. 그 결과, 복호 도중 결과 저장용 메모리(1401)에서는, 복호 결과(D1402)를 출력하고 있는 동안에도 복호를 행할 수 있고, 이에 의해, 예를 들면, 연속하여 복호 결과(D1402)를 출력할 수 있다.
도 31은, 수신용 메모리(1400)와 복호 도중 결과 저장용 메모리(1401)의 읽 어내기(출력)와 기입(저장)의 동작을 설명하는 타이밍차트이다.
또한, 도 31에서, 횡축은 시간(t)을 나타내고 있다. 또한, 도 31에서, 수신 데이터 #i란, 수신용 메모리(1400)에 공급되는 i번째의 프레임의 수신 데이터(D416)를 나타낸다. 또한, 수신 데이터 #i의 복호 도중 결과(D1403)를 복호 도중 결과 #i로 표시하고, 수신 데이터 #i의 복호 결과(D1402)를 복호 결과 #i로 표시한다. 도 31에서, 수신 데이터 #i의 수신이 개시되고나서 종료할 때까지의 시간에, 1개의 수신 데이터에 대한 복호가 종료하는 것으로 한다.
수신용 메모리(1400)에 수신 데이터 #2가 입력되면, 수신 데이터 #2가 전부 입력될 때까지의 시간 Ta 동안, 그 수신 데이터 #2가 스위치(1501)를 통하여, 수신용 데이터 저장용 메모리(1502)에 공급되고, 저장된다. 이 때, 수신 데이터 저장용 메모리(1503)로부터, 이미 저장되어 있는 수신 데이터 #1이 스위치(1504)에 공급되고, 스위치(1504)는 수신 데이터 #1을 사이클릭 시프트 회로(1101) 및 계산부(415)에 출력한다. 그리고, 수신 데이터 #1의 복호가 행하여진다.
또한, 복호 도중 결과 저장용 메모리(1401)의 복호 도중 결과 저장용 메모리(1602)에는, 스위치(1601)를 통하여 계산부(415)로부터 공급되는 복호 도중 결과 #1이 저장되며, 또한, 복호 도중 결과 저장용 메모리(1602)로부터는, 이미 저장되어 있는 복호 도중 결과 #1이 사이클릭 시프트 회로(1101)에 공급된다. 복호 도중 결과 저장용 메모리(1603)에는, 스위치(1604)를 통하여, 이미 저장되어 있는 복호 도중 결과 #0이, 복호 결과 #0으로서 출력된다. 즉, 시간 Ta 동안에 복호 도중 결과 저장용 메모리(1401)로부터 복호 도중 결과 #0이 출력된다.
시간 Ta 후, 수신용 메모리(1400)에 수신 데이터 #3이 입력되고, 수신 데이터 #3이 전부 입력될 때까지의 시간 Tb 동안, 그 수신 데이터 #3이 스위치(1501)를 통하여, 수신 데이터 저장용 메모리(1503)에 공급되고, 저장된다. 이 때, 수신 데이터 저장용 메모리(1502)로부터는, 시간 Ta에 저장된 수신 데이터 #2가 읽어내어지고, 스위치(1504)를 통하여 사이클릭 시프트 회로(1101) 및 계산부(415)에 출력된다. 그리고, 수신 데이터 #2의 복호가 행하여진다.
또한, 복호 도중 결과 저장용 메모리(1602)로부터는, 시간 Ta 동안에 저장된 복호 도중 결과 #1이, 복호 결과 #1로서 출력된다. 즉, 시간 Ta 후, 시간 Tb 동안에 복호 도중 결과 저장용 메모리(1401)로부터 복호 도중 결과 #1이 복호 결과 #1로서 출력된다. 복호 도중 결과 저장용 메모리(1603)에는, 스위치(1601)를 통하여 계산부(415)로부터 공급되는 복호 도중 결과 #2가 저장되고, 또한, 복호 도중 결과 저장용 메모리(1603)로부터는, 이미 저장되어 있는 복호 도중 결과 #2가 사이클릭 시프트 회로(1101)에 공급된다.
시간 Tb 후, 수신용 메모리(1400)에 수신 데이터 #4가 입력되고, 시간 Tc 동안, 시간 Ta의 경우와 마찬가지의 처리가 행하여진다. 즉, 시간 Tb 후, 시간 Tc 동안, 수신 데이터 #3이 사이클릭 시프트 회로(1101)와 계산부(415)에 공급되고, 수신 데이터 #3의 복호가 행하여진다. 또한, 시간 Tb 동안에 저장된 복호 도중 결과 #2가, 복호 도중 결과 저장용 메모리(1603)로부터 복호 결과 #2로서 출력된다.
이상과 같이, 도 28의 복호 장치(1000)에서는, 연속하여 입력되는 수신 데이터(D417)를 순서대로 복호하고, 그 복호 결과를 연속하여 출력할 수 있다. 이에 의해, 고속으로 복호를 행할 수 있다. 즉, 복호 장치(1000)의 스루풋이 향상한다.
또한, 도 29의 수신용 메모리(1400)의 수신 데이터 저장용 메모리(1502)(1503)의 수와 도 30의 복호 도중 결과 저장용 메모리(1401)의 복호 도중 결과 저장용 메모리(1602)(1603)의 수는, 2개에 한정되지 않는다. 수신 데이터 저장용 메모리(1502)와 복호 도중 결과 저장용 메모리(1602)의 수를 증가시킴으로써, 복호의 반복 횟수를 증가시켜, 복호 성능을 개선할 수 있다.
예를 들면, 수신 데이터 저장용 메모리(1502)와 복호 도중 결과 저장용 메모리(1602)가, 각각 3개씩 설치되는 경우, 1개의 수신 데이터 저장용 메모리(1502)를 수신 데이터(D417)의 저장용으로, 1개의 복호 도중 결과 저장용 메모리(1602)를 복호 결과(D1402)의 출력용으로 이용하고, 남은 2개의 수신 데이터 저장용 메모리(1502)와 복호 도중 결과 저장용 메모리(1602)를 복호용으로 이용할 수 있다. 이 경우, 계산부(415와 1102)를 2개씩 설치할 필요가 있어, 회로 규모는 증대하지만, 복호의 반복 횟수를 2배 많게 할 수 있다.
도 32는, 본 발명을 적용한 복호 장치(1000)의 제3 실시예의 구성예를 도시하는 블록도이다.
도 32의 복호 장치(1000)에서는, 도 28의 복호 장치(1000)의 복호 도중 결과 저장용 메모리(1401) 대신에, 복호 도중 결과 저장용 메모리(1701)가, 제어부(1402) 대신에, 제어부(1799)가 설치되어 있다. 복호 도중 결과 저장용 메모리(1701)에는, 복호 도중 결과 저장용 메모리(1701)의 복호 경판정 결과 저장용 메모리(1802와 1803)(후술하는 도 33) 중 어느 한 쪽의 선택을 나타내는 제어 신 호(D1701)가 공급된다. 복호 도중 결과 저장용 메모리(1701)로부터는, 복호가 완료한 복호 도중 결과(D415)의 경판정값이 복호 결과(D1702)로서 출력되고, 복호 도중의 복호 도중 결과(D415)의 연판정값이 복호 도중 결과(D1703)로서 출력된다.
도 33은, 도 32의 복호 도중 결과 저장용 메모리(1701)의 구성예를 도시하는 블록도이다.
도 32의 복호 도중 결과 저장용 메모리(1701)는, 스위치(1801, 1805, 및 1806), 복호 경판정 결과 저장용 메모리(1802와 1803), 및 복호 연판정 결과 저장용 메모리(1804)로 구성된다.
스위치(1801)에는, 계산부(415)로부터 3개의 복호 도중 결과(D415)의 경판정값이 복호 경판정 결과(D1801)로서 공급됨과 함께, 제어부(1702)로부터 복호 경판정 결과 저장용 메모리(1801과 1802) 중 한 쪽의 선택을 나타내는 제어 신호(D17011)가 공급된다. 스위치(1801)는, 제어 신호(D17011)에 기초하여, 복호 경판정 결과(D1801)를, 복호 경판정 결과(D1803)로서 복호 경판정 결과 저장용 메모리(1802)에, 또는 복호 경판정 결과(D1804)로서 복호 경판정 결과 저장용 메모리(1803)에 공급한다.
복호 경판정 결과 저장용 메모리(1802)에는, 스위치(1801)로부터의 복호 도중 결과(D1803)가 저장된다. 또한, 복호 경판정 결과 저장용 메모리(1802)로부터는, 이미 저장되어 있는 복호 도중 결과(D1803)가, 복호 도중 결과(D1805)로서 스위치(1805)에 공급됨과 함께, 복호 도중 결과(D1807)로서 스위치(D1806)에 공급된 다.
복호 도중 결과 저장용 메모리(1803)에는, 복호 도중 결과 저장용 메모리(1802)와 마찬가지로, 스위치(1801)로부터의 복호 도중 결과(D1804)가 저장된다. 또한, 복호 도중 결과 저장용 메모리(1803)로부터는, 이미 저장되어 있는 복호 도중 결과(D1804)가, 복호 도중 결과(D1806)로서 스위치(1805)에 공급됨과 함께, 복호 도중 결과(D1808)로서 스위치(1806)에 공급된다.
또한, 복호 경판정 결과 저장용 메모리(1802와 1803)의 각각에 저장되는 데이터량, 즉, 복호 경판정 결과 저장용 메모리(1802와 1803)의 각각에 필요로 되는 기억 용량은, LDPC 부호의 부호 길이와, 복호 도중 결과(D415)의 경판정값의 비트수인 1비트의 승산값이다.
복호 연판정 결과 저장용 메모리(1804)에는, 계산부(415)로부터 3개의 복호 도중 결과(D415)의 상위 1비트를 제외한 연판정값이 복호 연판정 결과(D1802)로서 공급된다. 복호 연판정 결과 저장용 메모리(1804)에는, 복호 연판정 결과(D1802)가 저장되거나, 또는, 복호 연판정 결과 저장용 메모리(1804)로부터는, 이미 저장되어 있는 복호 연판정 결과(D1802)가 복호 연판정 결과(D1811)로서 출력된다.
또한, 복호 연판정 결과 저장용 메모리(1804)에 저장되는 데이터량, 즉 복호 연판정 결과 저장용 메모리(1804)에 필요로 되는 기억 용량은, LDPC 부호의 부호 길이와, 연판정값의 상위 1비트를 제외한 값의 비트수(복호 도중 결과(D415)의 양자화 비트수 -1)의 승산값이다.
스위치(1805)에는, 제어부(1702)로부터 복호 경판정 결과 저장용 메모 리(1802와 1803)의 한 쪽의 선택을 나타내는 제어 신호(D17012)가 공급되고, 스위치(1805)는, 그 제어 신호(D17012)에 기초하여, 복호 경판정 결과 저장용 메모리(1802)로부터의 복호 경판정 결과(D1805) 또는 복호 도중 결과 저장용 메모리(1803)로부터의 복호 경판정 결과(D1806)를, 복호 결과(D1702)(경판정값)로서 출력한다.
스위치(1806)에는, 제어부(1702)로부터 복호 경판정 결과 저장용 메모리(1802와 1803) 중 한 쪽의 선택을 나타내는 제어 신호(D17013)가 공급되고, 스위치(1805)는, 그 제어 신호(D17013)에 기초하여, 복호 경판정 결과 저장용 메모리(1802)로부터의 복호 경판정 결과(D1807) 또는 복호 경판정 결과 저장용 메모리(1803)로부터의 복호 도중 결과(D1808)를, 복호 경판정 결과(D1810)로서 출력한다. 스위치(1806)로부터의 복호 경판정 결과(D1810)를 상위 1비트로 하고, 그 하위 비트를 복호 연판정 결과 저장용 메모리(1804)로부터의 복호 연판정 결과(D1811)로 함으로써 얻어지는 연판정값이, 복호 도중 결과(D1703)로서 사이클릭 시프트 회로(1101)에 출력된다.
또한, 제어 신호(D17012)는, 복호 도중 결과 저장용 메모리(1802와 1803) 중 한 쪽의 선택을 나타내고, 제어 신호(D17013)는, 다른 쪽의 선택을 나타낸다. 즉, 복호 도중 결과 저장용 메모리(1802와 1803) 중 한 쪽에 저장되어 있는 복호가 완료한 복호 도중 결과(D1805 또는 D1806)가, 복호 결과(D1702)로서 출력되고 있는 동안, 다른 쪽에 저장되어 있는 복호 도중의 복호 도중 결과(D1807 또는 D1808)가, 복호 경판정 결과(D1810)로서 출력된다.
이상과 같이, 복호 도중 결과 저장용 메모리(1701)에서는, 복호 도중 결과(D415)의 경판정값이 2개의 복호 경판정 결과 저장용 메모리(1802와 1803)에 저장되고, 복호 도중 결과(D415)의 상위 1비트를 제외한 연판정값이 1개의 복호 연판정 결과 저장용 메모리(1804)에 저장되므로, 복호 도중 결과 저장용 메모리(1701)는, LDPC 부호의 부호 길이와 1비트의 승산값의 2배와, LDPC 부호의 부호 길이와 (복호 도중 결과(D415)의 양자화 비트수 -1)의 승산값을 합계한 기록 용량을 가지면 된다.
따라서, 복호 도중 결과 저장용 메모리(1701)를 갖는 도 32의 복호 장치(1000)에서는, LDPC 부호의 부호 길이와, 복호 도중 결과(D415)의 양자화 비트수의 승산값의 2배의 기억 용량이 필요한 복호 도중 결과 저장용 메모리(1401)를 갖는 도 28의 복호 장치에 비하여, 회로 규모를 삭감할 수 있다.
도 34는, 본 발명을 적용한 복호 장치(1000)의 제4 실시예의 구성예를 도시하는 블록도이다.
도 34의 복호 장치(1000)는, 3개의 신드롬 판정기(20011 내지 20013)로 이루어지는 신드롬 판정부(2001)를 설치하고, 사이클릭 시프트 회로(2000)로부터 출력되는 경판정 결과(D2000)의 신드롬 연산을 행하며, 그 연산의 결과에 기초하여 복호를 종료한다.
사이클릭 시프트 회로(2000)는, 제어 신호(D1106)를 바탕으로, 6개의 복호 도중 결과(D1104) 또는 수신 데이터(D417)를 선택하고, 재배열하는 사이클릭 시프트를 행하며, 그 결과 중, 구성 행렬의 상반분(1행째 내지 3행째분) 또는 하반분(4행째 내지 6행째분)의 "1"에 대응하는 3개를 복호 도중 결과(D1999)로서, 계산부(412)에 공급한다. 또한, 사이클릭 시프트 회로(2000)는, 6개의 복호 도중 결과(D1104) 또는 수신 데이터(D417)를 사이클릭 시프트한 결과의 경판정값을 경판정 결과(D2000)로서 신드롬 판정부(2000)에 공급한다.
신드롬 판정부(2001)는, 3개의 신드롬 판정기(20011 내지 20013)로 구성된다. 신드롬 판정부(2001)에는, 사이클릭 시프트 회로(2000)로부터 출력되는 경판정 결과(D2000)가 공급됨과 함께, 제어부(2003)로부터 신드롬의 연산을 제어하는 제어 신호(D2001)가 공급되며, 신드롬 판정기(20011 내지 20013)에 각각 공급된다.
신드롬 판정기(20011 내지 20013)는, 각각 제어 신호(D2001)에 기초하여, 경판정 결과(D2000)의 신드롬의 계산을 행한다. 구체적으로는, 신드롬 판정기(20011 내지 20013)는, 검사 행렬 H의 행에 대응하는 경판정 결과(D2000)의 배타적 논리합(EXOR)을 계산하고, 그 결과 얻어지는 값이, 모든 행에서 "0"인지의 여부를 판정한다. 신드롬 판정기(20011 내지 20013)는, 그 판정 결과(D2002)를 제어부(2003)에 공급한다.
또한, 신드롬 판정부(2001)에 의한 신드롬의 연산과 계산부(1102)에 의한 제 1 연산은, 동시에 행하여지도록 해도 된다.
제어부(2003)는, 신드롬 판정부(2000)로부터 공급되는 판정 결과(D2002)에 따라서, 복호를 종료한다. 구체적으로는, 제어부(2003)는, 판정 결과(D2002)에 따라서, 복호 도중 결과 저장용 메모리(2002)에, 복호 도중 결과(D415) 또는 복호 결과(D1105)를 복호 결과로서 출력시키는 제어 신호(D2003)를 공급한다. 복호 도중 결과 저장용 메모리(2002)로부터는, 제어부(2003)로부터의 제어 신호(D2003)에 기초하여, 이미 저장되어 있는 복호 도중 결과(D415) 또는 복호 결과(D1105)가 복호 결과로서 출력되거나, 또는 복호 도중 결과(D415)가 사이클릭 시프트 회로(2000)에 공급된다.
도 35는, 도 34의 복호 장치(1000)의 복호 처리를 설명하는 플로우차트이다. 이 처리는, 예를 들면, 수신용 메모리(416)에 복호할 수신 데이터(D416)가 저장되었을 때, 개시된다.
스텝 S71에서, 제어부(2003)는, 카운트값 K를 0으로 설정하고, 스텝 S72로 진행한다. 스텝 S72에서, 신드롬 판정부(2001)(의 신드롬 판정기(20011 내지 20013))는, 사이클릭 시프트 회로(2000)로부터 공급되는 경판정 결과(D2000)의 신드롬을 연산한다. 또한, 최초의 스텝 S72에서는, 신드롬 판정부(2001)에는, 수신 데이터(D417)가 사이클릭 시프트된 결과의 경판정값인 경판정 결과(D2000)가 공급되고, 신드롬 판정부(2001)는, 수신 데이터(D417)의 경판정 결과(D2000)의 신드롬을 연산한다.
스텝 S72의 처리 후에는, 스텝 S73으로 진행하여, 제어부(2003)는, 신드롬 판정부(2001)로부터 공급되는 판정 결과(D2002)에 기초하여, 신드롬이 "0"인지의 여부를 판정하고, 신드롬이 "0"이 아니라고 판정된 경우, 스텝 S74로 진행한다.
스텝 S74에서, 제어부(2003)는, 카운트값 K가 소정의 횟수 N 이상인지의 여부를 판정하고, 소정의 횟수 N 이상이 아니라고 판정한 경우, 스텝 S75로 진행한다.
스텝 S75 내지 S84의 처리는, 도 27의 스텝 S49 내지 S58의 처리와 마찬가지이므로, 설명은 생략한다.
스텝 S84의 처리 후에는, 스텝 S85로 진행하여, 제어부(2003)는, 카운트값 K를 1개만큼 인크리먼트하고, 스텝 S72로 되돌아간다.
스텝 S73에서, 신드롬이 "0"이라고 판정된 경우, 스텝 S86으로 진행하여, 제어부(2003)는 복호를 종료하고, 복호 도중 결과 저장용 메모리(2002)에 저장되어 있는 복호 도중 결과(D415) 또는 복호 결과(D1105)를 복호 결과로서 출력한다. 또한, 최초의 스텝 S71에서 신드롬이 "0"이라고 판정된 경우, 복호가 1회도 행하여지지 않고, 계산부(415)에 공급되는 수신 데이터(D417)(복호 결과(D1105))가, 복호 도중 결과 저장용 메모리(2002)를 통하여, 그대로 복호 결과로서 출력된다.
또한, 스텝 S74에서, 카운트값 K가 소정의 횟수 N 이상이라고 판정된 경우에도, 스텝 S86으로 진행하여, 제어부(2003)는 복호를 종료하고, 복호 도중 결과 저장용 메모리(2002)에 저장되어 있는 복호 도중 결과(D415)를 복호 결과로서 출력한다.
이상과 같이, 도 35의 복호 처리에서는, 신드롬이 "0"으로 되는 경우, 또는 카운트값 K가 소정의 횟수 N 이상으로 되는 경우(N회 복호가 행하여진 경우), 복호가 종료된다. 이에 의해, 신드롬이 "0", 즉 오류수가 0인 복호 도중 결과(D415)가 더욱 복호되어, 오류수가 다시 증가하는 것을 방지할 수 있다. 또한, 수신 데이터(D416)의 SN(Signal Noise)비가 큰 경우, 복호 성능을 열화시키지 않고, 복호 횟수를 억제할 수 있으므로, 복호 장치(1000)의 소비 전력을 저감할 수 있다.
또한, 신드롬 판정부(2001)의 회로 규모는 일반적으로 작아서, 신드롬 판정부(2001)를 설치함에 의한 복호 장치(1000)의 회로 규모의 증가는 무시할 수 있을 정도로 작다.
또한, 도 34의 복호 장치(1000)에서는, 도 23의 복호 장치(1000)에 신드롬 판정부(2001)가 설치되었지만, 2개의 페이즈의 연산(예를 들면, 체크 노드 연산과 배리어블 노드 연산, 제1 연산과 제2 연산 등)에 의해 복호를 행하는 장치이면, 어떠한 장치에 신드롬 판정부(2001)가 설치되도록 해도 된다. 예를 들면, 도 17의 복호 장치(400), 혹은 도 28 또는 도 32의 복호 장치(1000)에 신드롬 판정부(2001)가 설치되도록 해도 된다.
본 실시예에서는, 복호 도중 결과 저장 메모리(1103)는, 4개의 복호 도중 결과 저장용 RAM(1202 내지 1205)으로 구성되도록 하였지만, 복호 도중 결과 저장용 RAM(1202 내지 1205)의 수는 3개 이상이면 어떠한 수이어도 된다. 복호 도중 결과 저장용 RAM(1202 내지 1205)의 수가 증가하면 할수록, 복호 장치의 동작 속도를 빠르게 할 수 있다.
또한, 본 실시예에서는, 제1 연산과 제2 연산을 반복하여 행함으로써 복호를 행하였지만, 체크 노드 연산과 배리어블 노드 연산을 반복하여 행함으로써 복호를 행하도록 할 수도 있다.
또한, 도 24의 복호 도중 결과 저장용 RAM(1202 내지 1205), 도 29의 수신 데이터 저장용 메모리(1502와 1503), 도 30의 복호 도중 결과 저장용 메모리(1602와 1603), 도 33의 복호 경판정 결과 저장용 메모리(1802와 1803), 및 복호 연판정 결과 저장용 메모리(1804)는, 예를 들면 RAM의 물리적인 비트가 부족한 경우에는, 복수의 RAM을 이용하여 동일한 제어 신호를 부여함으로써, 논리적으로 1개의 RAM이라고 간주할 수 있다.
상술한 경우에는, 설명을 간단히 하기 위해, P가 6인 경우, 즉, 검사 행렬 H를 구성하는 구성 행렬의 행수 및 열수가 6인 경우를 예로 들었지만, 구성 행렬의 행수 및 열수 P는 반드시 6일 필요는 없으며, 검사 행렬 H에 따라 서로 다른 값을 취할 수도 있다. 예를 들면, P는 360이나 392이어도 된다.
또한, 본 실시예에서는, 부호 길이 108, 부호화율 2/3의 LDPC 부호를 이용하였지만, LDPC 부호의 부호 길이나 부호화율은, 어떠한 값이어도 된다. 예를 들면, 구성 행렬의 행수 및 열수 P가 6인 경우, 브랜치 총수가 6 이하이면, 어떠한 부호 길이, 부호화율의 LDPC 부호라도, 제어 신호를 바꾸는 것만으로, 복호 장치(1000)를 이용하여 복호 가능이다.
또한, 구성 행렬의 행수 및 열수 P가 소정의 값이고, 브랜치의 총수가 임의의 값 이하라고 하는 조건을 충족시키는, 임의의 LDPC 부호의 복호 장치는, 그 조 건을 충족시키는, 임의의 부호 길이로, 임의의 부호화율의 LDPC 부호를 복호할 수 있다.
검사 행렬 H가, 구성 행렬의 행수 및 열수 P의 배수가 아닌 경우에는, 검사 행렬 H의 단수의 외측에 모두 0(all 0)의 성분을 붙여서 P의 배수라고 간주하여 적용할 수 있는 경우가 있다.
상술한 복호 장치(1000)에서는, 계산부(1102)의 계산기(11021 내지 11023)의 수를 P/2(=313)로 하였지만, 계산기(11021 내지 11023)의 수는 P 미만이면 된다. 또한, P가 큰 소수인 경우에도, 계산기(11021 내지 11023)의 수를 P의 정수부의 1에 가까운 정수개로 하면 된다.
또한, 복호 장치(1000)에서는, 계산부(1102)가 아니라, 계산부(415)가 P 미만의 계산기로 구성되도록 해도 된다. 즉, 계산부(1102) 또는 계산부(415) 중 적어도 한 쪽이, P 미만의 계산기로 구성되어도 되고, 다른 쪽은, P개의 계산기로 구성되어도, P 미만의 계산기로 구성되어도 된다.
이상과 같이, P×P의 단위 행렬, 그 컴포넌트의 "1" 중 1개 이상이 "0"으로 된 준단위 행렬, 단위 행렬 혹은 준단위 행렬을 사이클릭 시프트한 시프트 행렬, 단위 행렬, 준단위 행렬, 혹은 시프트 행렬의 복수의 합인 합 행렬, P×P의 0행렬의 조합으로 나타낼 수 있는 검사 행렬 H를 갖는 LDPC 부호의 복호를, 제1과 제2 연산을 P개 또는 N개(N은 P 미만의 양의 정수) 동시에 행하는 아키텍처(architecture)를 채용함으로써, 제1과 제2 연산을, P개 또는 N개 동시에 행함으 로써 동작 주파수를 실현 가능한 범위로 억제할 수 있어, 다수의 반복 복호를 행하는 것을 가능하게 하면서, 메모리(FIFO나 RAM)에의 기입과 읽어내기 시에, 서로 다른 어드레스에의 동시 액세스가 발생하는 것을 방지할 수 있다.
또한, 제1 또는 제2 연산을 N개 동시에 행함으로써, 제1과 제2 연산을 P개 동시에 행하는 경우에 비하여, 제1 연산을 행하는 계산부(1102)를 구성하는 계산기(11021 내지 11023) 또는 제2 연산을 행하는 계산부(415)를 구성하는 계산기(4151 내지 4156)의 수를 삭감하여, 회로 규모를 삭감할 수 있다.
일반적으로, LDPC 부호는 부호 길이가 수천 내지 수만으로 크기 때문에, P의 값도 수백의 크기를 갖는 것이 사용된다. 그 경우에는, 더욱 본 발명에 따른 복호 장치를 이용하는 효과는 커진다.
또한, 본 발명에 따른 복호 장치는, 썸 프로덕트 알고리즘을 충실하게 실장하는 것이기 때문에, 메시지의 양자화 이외의 복호 손실이 발생하는 일은 없다.
이상의 관점으로부터, 본 발명에 따른 복호 장치를 이용함으로써, 고성능인 복호가 가능하게 된다.
또한, 상술한 LDPC 부호를 복호하는 복호 장치는, 예를 들면, (디지털) 위성 방송을 수신하는 튜너 등에 적용할 수 있다.

Claims (16)

  1. LDPC(Low Density Parity Check) 부호의 복호 장치로서,
    P×P(P는 양의 정수)의 단위 행렬, 상기 단위 행렬의 컴포넌트인 1 중의 1개 이상이 0으로 된 행렬인 준단위 행렬, 상기 단위 행렬 혹은 상기 준단위 행렬을 사이클릭 시프트한 행렬인 시프트 행렬, 상기 단위 행렬, 상기 준단위 행렬, 혹은 상기 시프트 행렬 중의 복수의 행렬의 합인 합 행렬, 또는 P×P의 0행렬을 구성 행렬로 하고, 상기 LDPC 부호의 검사 행렬이, 상기 구성 행렬의 하나 이상으로 이루어지는 조합으로 표시되는 경우에서,
    상기 LDPC 부호의 복호를 위한 체크 노드의 연산을 행하는 제1 연산부와,
    상기 LDPC 부호의 복호를 위한 배리어블 노드의 연산을 행하는 제2 연산부
    를 구비하고,
    상기 제1 연산부만이 N(N은 P 미만의 양의 정수)개의 체크 노드의 연산을 동시에 행하거나, 상기 제2 연산부만이 상기 N개의 배리어블 노드의 연산을 동시에 행하거나, 또는 상기 제1 연산부가 상기 N개의 체크 노드의 연산을 동시에 행하며, 또한 상기 제2 연산부가 상기 N개의 배리어블 노드의 연산을 동시에 행하는 것을 특징으로 하는 복호 장치.
  2. 제1항에 있어서,
    상기 N은 상기 P의 정수분의 1의 정수인 것을 특징으로 하는 복호 장치.
  3. 제1항에 있어서,
    상기 제1 연산부는, 상기 체크 노드의 연산과 상기 배리어블 노드의 연산의 일부를 행하고,
    상기 제2 연산부는, 상기 배리어블 노드의 연산의 다른 일부를 행하고,
    상기 제1 연산부만이 상기 N개의 상기 체크 노드의 연산과 상기 배리어블 노드의 연산의 일부를 동시에 행하거나, 상기 제2 연산부만이 상기 N개의 상기 배리어블 노드의 연산의 다른 일부를 동시에 행하거나, 또는 상기 제1 연산부가 상기 체크 노드의 연산과 상기 배리어블 노드의 연산의 일부를 동시에 행하며, 또한 상기 제2 연산부가 상기 N개의 상기 배리어블 노드의 연산의 다른 일부를 동시에 행하는 것을 특징으로 하는 복호 장치.
  4. 제1항에 있어서,
    상기 제1 연산부만이 상기 체크 노드의 연산을 행하는 상기 N개의 체크 노드 계산기를 갖거나, 상기 제2 연산부만이 상기 배리어블 노드의 연산을 행하는 상기 N개의 배리어블 노드 계산기를 갖거나, 또는 상기 제1 연산부가 상기 N개의 체크 노드 계산기를 갖고, 또한 상기 제2 연산부가 상기 N개의 배리어블 노드 계산기를 갖는 것을 특징으로 하는 복호 장치.
  5. 제4항에 있어서,
    상기 제1 연산부가 상기 N개의 체크 노드 계산기를 갖는 경우, 상기 N개의 체크 노드 계산기 각각에는, 상기 제2 연산부에 의해 얻어지는 제2 연산 결과가 순차적으로 입력되고, 상기 N개의 체크 노드 계산기 각각은, 그 제2 연산 결과를 이용하여 체크 노드의 연산을 행한 결과 얻어지는 제1 연산 결과를 순차적으로 출력하고, 상기 제2 연산부가 상기 N개의 배리어블 노드 계산기를 갖는 경우, 상기 N개의 배리어블 노드 계산기 각각에는, 상기 제1 연산부에 의해 얻어지는 제1 연산 결과가 순차적으로 입력되고, 상기 N개의 배리어블 노드 계산기 각각은, 그 제1 연산 결과를 이용하여 배리어블 노드의 연산을 행한 결과 얻어지는 제2 연산 결과를 순차적으로 출력하는 것을 특징으로 하는 복호 장치.
  6. 제2항에 있어서,
    상기 제1 연산부에 의해 얻어지는 제1 연산 결과를 기억하는 제1 기억부와,
    상기 제2 연산부에 의해 얻어지는 제2 연산 결과를 기억하는 제2 기억부
    를 더 구비하고,
    상기 제1 기억부는, 상기 N개의 제1 연산 결과를 동시에 기억하며, 또한 읽어내고, 또는 상기 제2 기억부는, 상기 N개의 제2 연산 결과를 동시에 기억하며, 또한 읽어내는 것을 특징으로 하는 복호 장치.
  7. 제6항에 있어서,
    상기 제1 기억부는, 상기 제1 연산 결과를, 상기 LDPC 부호의 검사 행렬의 1 을 열 방향으로 채우도록 저장하는 것을 특징으로 하는 복호 장치.
  8. 제6항에 있어서,
    상기 제1 기억부는, 상기 N개의 제1 연산 결과를 동시에 기억하며, 또한 읽어내는 것이 가능한 복수의 메모리로 구성되거나, 또는 상기 제2 기억부는, 상기 N개의 제2 연산 결과를 동시에 기억하며, 또한 읽어내는 것이 가능한 복수의 메모리로 구성되는 것을 특징으로 하는 복호 장치.
  9. 제6항에 있어서,
    상기 제1 기억부는, 상기 합 행렬을, 상기 단위 행렬, 상기 준단위 행렬, 또는 상기 시프트 행렬 중의 복수의 행렬의 합으로 분해하였을 때의, 그 복수의 행렬 각각에 대하여 얻어지는 상기 N개의 제1 연산 결과를, 동일한 어드레스에 저장하거나, 또는 상기 제2 기억부는, 상기 합 행렬을, 상기 단위 행렬, 상기 준단위 행렬, 또는 상기 시프트 행렬 중의 복수의 행렬의 합으로 분해하였을 때의, 그 복수의 행렬 각각에 대하여 얻어지는 상기 N개의 제2 연산 결과를, 동일한 어드레스에 저장하는 것을 특징으로 하는 복호 장치.
  10. 제2항에 있어서,
    P개의 상기 제1 또는 제2 연산 결과를 재배열하고, 상기 P개의 제1 또는 제2 연산 결과 중, N개의 제1 또는 제2 연산 결과를 선택하여 출력하는 재배열부를 더 구비하는 것을 특징으로 하는 복호 장치.
  11. 제10항에 있어서,
    상기 재배열부는, 배럴 시프터로 구성되는 것을 특징으로 하는 복호 장치.
  12. 제1항에 있어서,
    상기 LDPC 부호의 수신 정보를 기억하는 복수의 수신 정보 기억부와,
    상기 제2 연산부에 의해 얻어지는 연산 결과를 기억하는 복수의 연산 결과 기억부와,
    상기 수신 정보 기억부와 상기 연산 결과 기억부를 제어하는 기억 제어부
    를 더 구비하고,
    상기 기억 제어부는, 복수의 상기 수신 정보 기억부 중 어느 1개의 상기 수신 정보 기억부를 선택하여, 이후의 복호에 이용되는 상기 수신 정보를 기억시킴과 함께, 다른 상기 수신 정보 기억부로부터, 현재의 복호에 이용되는 상기 수신 정보를 읽어내게 하고, 복수의 상기 연산 결과 기억부 중 어느 1개의 상기 연산 결과 기억부로부터, 상기 LDPC 부호의 복호 결과를 읽어내게 함과 함께, 다른 상기 연산 결과 기억부를 현재의 복호에 이용하는 것을 특징으로 하는 복호 장치.
  13. 제12항에 있어서,
    상기 기억 제어부는, 이후의 복호에 이용되는 상기 수신 정보를 기억시키는 상기 수신 정보 기억부를, 상기 LDPC 부호의 부호 길이분의 상기 수신 정보가 상기 수신 정보 기억부에 기억될 때마다 절환하는 것을 특징으로 하는 복호 장치.
  14. 제12항에 있어서,
    상기 기억 제어부는, 상기 LDPC 부호의 복호 결과를 읽어내는 상기 연산 결과 기억부를, 상기 LDPC 부호의 부호 길이분의 상기 수신 정보가 상기 수신 정보 기억부에 기억될 때마다 절환하는 것을 특징으로 하는 복호 장치.
  15. 제1항에 있어서,
    상기 LDPC 부호의 수신 정보를 기억하는 복수의 수신 정보 기억부와,
    상기 제2 연산부에 의해 얻어지는 연산 결과의 경판정값을 기억하는 복수의 경판정값 기억부와,
    상기 제2 연산부에 의해 얻어지는 연산 결과의 연판정값을 기억하는 연판정값 기억부와,
    상기 수신 정보 기억부와 상기 경판정값 기억부를 제어하는 기억 제어부
    를 더 구비하고,
    상기 기억 제어부는, 복수의 상기 수신 정보 기억부 중 어느 1개의 상기 수신 정보 기억부를 선택하여, 이후의 복호에 이용되는 상기 수신 정보를 기억시킴과 함께, 다른 상기 수신 정보 기억부로부터, 현재의 복호에 이용되는 상기 수신 정보를 읽어내게 하고, 복수의 상기 경판정값 기억부 중 어느 1개의 상기 경판정값 기 억부로부터, 상기 LDPC 부호의 복호 결과를 읽어내게 함과 함께, 다른 상기 경판정값 기억부를 현재의 복호에 이용하는 것을 특징으로 하는 복호 장치.
  16. LDPC(Low Density Parity Check) 부호의 복호 장치의 복호 방법으로서,
    P×P(P은 양의 정수)의 단위 행렬, 상기 단위 행렬의 컴포넌트인 1 중의 1개 이상이 0으로 된 행렬인 준단위 행렬, 상기 단위 행렬 혹은 상기 준단위 행렬을 사이클릭 시프트한 행렬인 시프트 행렬, 상기 단위 행렬, 상기 준단위 행렬, 혹은 상기 시프트 행렬 중의 복수의 행렬의 합인 합 행렬, 또는 P×P의 0행렬을 구성 행렬로 하고, 상기 LDPC 부호의 검사 행렬이, 상기 구성 행렬의 하나 이상으로 이루어지는 조합으로 표시되는 경우에서,
    상기 LDPC 부호의 복호를 위한 체크 노드의 연산을 행하는 제1 연산 스텝과,
    상기 LDPC 부호의 복호를 위한 배리어블 노드의 연산을 행하는 제2 연산 스텝을 포함하고,
    상기 제1 연산 스텝의 처리만이 N(N은 P 미만의 양의 정수)개의 체크 노드의 연산을 동시에 행하거나, 상기 제2 연산 스텝의 처리만이 상기 N개의 배리어블 노드의 연산을 동시에 행하거나, 또는 상기 제1 연산 스텝의 처리가 상기 N개의 체크 노드의 연산을 동시에 행하며, 또한 상기 제2 연산 스텝의 처리가 상기 N개의 배리어블 노드의 연산을 동시에 행하는 것을 특징으로 하는 복호 방법.
KR1020077027304A 2005-04-25 2006-04-20 복호 장치 및 복호 방법 KR101164283B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00125962 2005-04-25
JP2005125962A JP4622654B2 (ja) 2005-04-25 2005-04-25 復号装置および復号方法
PCT/JP2006/308300 WO2006115164A1 (ja) 2005-04-25 2006-04-20 復号装置および復号方法

Publications (2)

Publication Number Publication Date
KR20080004628A KR20080004628A (ko) 2008-01-09
KR101164283B1 true KR101164283B1 (ko) 2012-07-09

Family

ID=37214782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077027304A KR101164283B1 (ko) 2005-04-25 2006-04-20 복호 장치 및 복호 방법

Country Status (6)

Country Link
US (1) US8086934B2 (ko)
EP (1) EP1876716A4 (ko)
JP (1) JP4622654B2 (ko)
KR (1) KR101164283B1 (ko)
CN (1) CN101208864B (ko)
WO (1) WO2006115164A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4729964B2 (ja) * 2005-04-25 2011-07-20 ソニー株式会社 復号装置および復号方法
JP4743156B2 (ja) 2007-04-27 2011-08-10 ソニー株式会社 復号装置
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
JP4858335B2 (ja) 2007-07-10 2012-01-18 ソニー株式会社 符号化方法および符号化装置
JP4674226B2 (ja) * 2007-08-22 2011-04-20 日本電信電話株式会社 通信路符号化方法及び通信路符号化システム及び階層的通信路符号化プログラム及び階層的通信路復号プログラム
JP4487212B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
CN101414833B (zh) * 2007-10-19 2010-08-04 中兴通讯股份有限公司 低密度生成矩阵码的编码方法及装置
JP4487213B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、並びにプログラム
CN101615913B (zh) * 2009-07-17 2011-04-27 清华大学 Ldpc码的快速收敛译码方法
TWI425519B (zh) * 2009-12-09 2014-02-01 Nat Chip Implementation Ct Nat Applied Res Lab 低複雜度低密度同位元檢查碼解碼器之記憶體配置方法及其解碼器結構
TW201126537A (en) * 2010-01-20 2011-08-01 Sunplus Technology Co Ltd Memory utilization method for low density parity check code, low density parity check code decoding method and apparatus thereof
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
JP5786409B2 (ja) * 2011-03-31 2015-09-30 ソニー株式会社 受信装置、受信方法、プログラム、および受信システム
JP2015179960A (ja) 2014-03-19 2015-10-08 ソニー株式会社 データ処理装置、及び、データ処理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004186940A (ja) 2002-12-03 2004-07-02 Nec Corp 誤り訂正符号復号装置
JP2004531972A (ja) 2001-06-15 2004-10-14 フラリオン テクノロジーズ,インコーポレーテッド Ldpc符号を復号する方法と装置
JP2005065066A (ja) 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4042841B2 (ja) * 2002-03-29 2008-02-06 富士通株式会社 行列演算処理装置
KR100674523B1 (ko) 2002-07-03 2007-01-26 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사(ldpc) 디코더의 라우팅을 위한방법 및 시스템
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
JP4224777B2 (ja) 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
US7296208B2 (en) 2003-07-03 2007-11-13 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
FR2858649B1 (fr) * 2003-08-05 2005-09-23 Snecma Moteurs Turbine basse-pression de turbomachine
JP2005093038A (ja) * 2003-09-19 2005-04-07 Fujitsu Ltd 記録再生装置および記録再生回路
JP3891186B2 (ja) * 2004-03-22 2007-03-14 住友電気工業株式会社 復号装置および前処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004531972A (ja) 2001-06-15 2004-10-14 フラリオン テクノロジーズ,インコーポレーテッド Ldpc符号を復号する方法と装置
JP2004186940A (ja) 2002-12-03 2004-07-02 Nec Corp 誤り訂正符号復号装置
JP2005065066A (ja) 2003-08-19 2005-03-10 Sony Corp 復号装置および復号方法、並びにプログラム

Also Published As

Publication number Publication date
US20090217121A1 (en) 2009-08-27
CN101208864A (zh) 2008-06-25
CN101208864B (zh) 2012-06-06
EP1876716A4 (en) 2008-07-23
JP4622654B2 (ja) 2011-02-02
KR20080004628A (ko) 2008-01-09
US8086934B2 (en) 2011-12-27
JP2006304129A (ja) 2006-11-02
EP1876716A1 (en) 2008-01-09
WO2006115164A1 (ja) 2006-11-02

Similar Documents

Publication Publication Date Title
KR101164283B1 (ko) 복호 장치 및 복호 방법
KR101090001B1 (ko) 복호 장치 및 복호 방법, 및 기록 매체
KR101158919B1 (ko) 복호 방법 및 복호 장치, 및 기록 매체
JP4595650B2 (ja) 復号装置および復号方法
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
US8166363B2 (en) Decoding device and method
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP2007036776A (ja) 復号装置および復号方法
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP4729964B2 (ja) 復号装置および復号方法
JP4730592B2 (ja) 復号装置および復号方法
JP4822071B2 (ja) 復号装置および復号方法
JP2007081602A (ja) 復号装置および復号方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150626

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190716

Year of fee payment: 8