KR20110005897A - 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들 - Google Patents

패리티 검사 디코더들에서 사용하기 위한 노드 처리기들 Download PDF

Info

Publication number
KR20110005897A
KR20110005897A KR1020107026785A KR20107026785A KR20110005897A KR 20110005897 A KR20110005897 A KR 20110005897A KR 1020107026785 A KR1020107026785 A KR 1020107026785A KR 20107026785 A KR20107026785 A KR 20107026785A KR 20110005897 A KR20110005897 A KR 20110005897A
Authority
KR
South Korea
Prior art keywords
node
message
messages
sum
variable
Prior art date
Application number
KR1020107026785A
Other languages
English (en)
Inventor
톰 리처드슨
블라디미르 노비치코브
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/975,331 external-priority patent/US6633856B2/en
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20110005897A publication Critical patent/KR20110005897A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • H03M13/112Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule with correction functions for the min-sum rule, e.g. using an offset or a scaling factor
    • 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/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • 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
    • 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/1134Full parallel processing, i.e. all bit nodes or check nodes are 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/1105Decoding
    • H03M13/1145Pipelined decoding at code word level, e.g. multiple code words being decoded simultaneously
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • 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
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/658Scaling by multiplication or division
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/6583Normalization other than scaling, e.g. by subtraction

Abstract

예를 들면 LDPC 디코더들과 같은 메시지 통과 디코더들을 구현하기 위한 기술들이 설명된다. 하드웨어 구현을 용이하게 하기 위해, 메시지들은 1/2 ln 2의 정수 배수들로 양자화된다. 메시지들은 더 콤팩트한 가변 및 덜 콤팩트한 제한 노드 메시지 표현 포맷들 사이에서 변환된다. 가변 노드 메시지 포맷은 단순한 가산들 및 감산들에 의해 가변 노드 메시지 동작들이 수행되도록 하고, 제한 노드 표현은 단순한 가산들 및 감산들에 의해 제한 노드 메시지 처리가 수행되도록 한다. 가변 및 제한 노드들은 누산기 모듈(1302), 감산기 모듈(1304) 및 지연 파이프라인(1306)을 사용하여 구현된다. 누산기 모듈(1302)은 누적된 메시지 합계(1316)를 생성한다. 노드에 대한 누적된 메시지 합계(1316)는 저장되고 그 후 지연 파이프라인(1306)으로부터의 지연된 입력 메시지들은 출력 메시지들(1321)을 생성하도록 그로부터 감산된다. 지연 파이프라인(1306)은 상이한 차수들의 노드들에 대응하는 처리 동작들을 순차적으로 수행하는 것이 가능하게 하는 가변 지연 엘리먼트를 포함한다.

Description

패리티 검사 디코더들에서 사용하기 위한 노드 처리기들{Node processors for use in parity check decoders}
관련 출원
본 출원은 2001년 10월 10일 출원된 미국 가출원 제60/328,469호의 이익 및 2001년 6월 15일 출원된 제60/298,480호의 이익을 청구하고, 2001년 10월 10일 출원된 미국 특허 출원 제09/975,331호의 일부 계속 출원이며, 상기 출원들 각각은 참조문헌으로서 포함된다.
본 발명은 예를 들면 저밀도 패리티 검사(LDPC) 코드들과 같은 패리티 검사 코드들의 사용을 통해 2진 데이터에서 에러들을 검출 및/또는 보정하기 위한 방법들 및 장치에 관한 것이다.
에러 보정 코드들은 통신들 및 데이터 저장 시스템들에 존재한다. 최근에 저밀도 패리티 검사(LDPC) 코드들로서 공지된 코드들의 클래스에 대한 상당한 관심이 증가되고 있다.
LDPC 코드들은 노드들의 하나의 세트, 즉 가변 노드들(variable nodes)이 코드워드(codeword)의 비트들에 대응하고, 노드들의 다른 세트, 즉 종종 검사 노드들(check nodes)이라 칭하는 제한 노드들(constraint nodes)이 코드를 한정하는 패리티 검사 제한(parity-check constraint)들의 세트에 대응하는, 종종 태너 그래프들(Tanner graphs)이라 칭하는 2분 그래프들에 의해 표현될 수 있다. 가변 노드 및 제한 노드는 이들이 그래프의 에지(edge)에 의해 접속되는 경우 이웃들이라 칭한다. 단순화를 위해, 일반적으로 한 쌍의 노드들이 최대 하나의 에지에 의해 접속되는 것을 가정한다. 각각의 가변 노드들에는 코드워드의 하나의 비트가 연관된다. 몇몇 경우들에, 이들 비트들의 몇몇은 펑쳐링된다(punctured), 즉 코드워드로부터 제거된다. 단순화를 위해, 일반적으로 펑쳐링이 사용되지 않는 것을 가정할 것이다.
가변 노드 시퀀스와 1대1로 연관된 비트 시퀀스는, 각각의 제한 노드에 대해서 제한에 이웃하는 비트들(이들의 가변 노드들과의 연관을 통해)이 합계가 0 모듈로 2(0 modulo 2)인 경우, 즉 이들이 짝수의 비트들을 포함하는 경우 및 이러한 경우에만, 코드의 코드워드이다.
LDPC 코드워드들을 디코딩하는데 사용되는 디코더들 및 디코딩 알고리즘들은 에지들을 따라 그래프 내에서 메시지들을 교환함으로써 그리고 입력 메시지들에 기초해서 노드들에서 계산들을 수행하여 이들 메시지들을 갱신함으로써 작동한다. 이러한 알고리즘들은 일반적으로 메시지 통과 알고리즘들로서 지칭될 수 있다. 그래프 내의 각각의 가변 노드에는 예를 들면 통신 채널로부터의 관측들에 의해 결정될 때 연관된 비트 값의 평가를 나타내는 수신된 값이라 칭하는 소프트 비트가 초기에 제공된다. 이상적으로는, 개별 비트들에 대한 평가들은 통계적으로 독립적이다. 이 이상은 실제로는 종종 위배될 수 있다. 수신된 값들의 집합은 수신된 워드를 구성한다. 본 출원의 경우, 예를 들면 수신된 워드를 통해 통신 시스템 내의 수신기에 의해 관측된 신호를 식별할 수도 있다.
노드, 즉 가변 노드 또는 제한 노드에 부착된 에지들의 수는 노드의 차수라 칭한다. 규칙(regular) 그래프 또는 코드는 모든 가변 노드들이 동일 차수, 말하자면 j를 갖고 모든 제한 노드들이 동일 차수, 말하자면 k를 갖는 것이다. 이 경우 코드는 (j,k) 규칙 코드(regular code)라 칭한다. 이들 코드들은 갤라거(1961)에 의해 최초로 창안되었다. "규칙" 코드와는 대조적으로, 불규칙(irregular) 코드는 상이한 차수들의 제한 노드들 및/또는 가변 노드들을 갖는다. 예를 들면, 몇몇 가변 노드들은 차수 4일 수도 있고, 다른 노드들은 차수 3 및 또 다른 노드들은 차수 2일 수도 있다.
불규칙 코드들이 표현 및/또는 구현하는데 더 복잡할 수 있지만, 불규칙 LDPC 코드들은 규칙 LDPC 코드들과 비교할 때 우수한 에러 보정/검출 성능을 제공할 수 있는 것으로 판명되었다.
디코딩 처리를 더 명확하게 설명하기 위해, LDPC 그래프들을 설명하는데 있어 소켓의 개념을 도입한다. 소켓은 그래프 내의 노드에 대한 그래프 내의 에지의 연관성(association)으로서 해석될 수 있다. 각각의 노드는 그에 부착된 각각의 에지를 위한 하나의 소켓을 갖고, 에지들은 소켓들에 "플러그 접속"된다. 따라서, 차수 d의 노드는 그에 부착된 d개의 소켓들을 갖는다. 그래프가 L개의 에지들을 가지면, 그래프의 가변 노드측에 가변 소켓들이라 칭하는 L개의 소켓들이 존재하고, 그래프의 제한 노드측에 제한 소켓들이라 칭하는 L개의 소켓들이 존재한다. 식별 및 순서화 목적들을 위해, 가변 소켓들은 하나의 가변 노드에 부착된 가변 소켓들이 연속적으로 나타나도록 1,...,L로 열거될 수도 있다. 이러한 경우, 처음의 3개의 가변 노드들이 각각 d1, d2 , 및 d3의 차수들을 가지면, 가변 소켓들(1,...,d1)은 제 1 가변 노드에 부착되고, 가변 소켓들(d1+1,...,d1+d2)은 제 2 가변 노드에 부착되고, 가변 소켓들(d1+d2+1,...,d1+d2+d3)은 제 3 가변 노드에 부착된다. 제한 노드 소켓들은 유사하게 하나의 제한 노드에 부착된 제한 소켓들이 연속적으로 나타나도록 1,..,L로 열거될 수도 있다. 에지는 소켓들의 쌍으로서 보여질 수 있고, 각각의 쌍 중 하나가 그래프의 각각의 측으로부터 도래한다. 따라서, 그래프의 에지들은 예를 들면 가변 노드측과 같은 그래프의 한 측으로부터 예를 들면 제한 노드측과 같은 다른측으로의 소켓들의 인터리버(interleaver) 또는 치환을 표현한다. 이들 시스템들과 연관된 치환들은 종종 복잡하다.
길이 10 및 전송률 1/2의 (3,6) 규칙 LDPC를 결정하는 예시적인 2분 그래프(100)가 도 1에 도시된다. 길이 10은, 일반적으로 도면 부호 102로 나타내는 코드워드(X1 내지 X10)(이 경우 펑쳐링이 없음)의 하나의 비트로 각각 식별되는 10개의 가변 노드들(V1 내지 V10)이 존재한다는 것을 나타낸다. 전송률 1/2은 가변 노드들의 절반 수의 검사 노드들이 존재한다, 즉 도면 부호 106으로 나타내는 5개의 검사 노드들(C1 내지 C5)이 존재한다는 것을 나타낸다. 전송률 1/2은 또한 이하에 설명하는 바와 같이 5개의 제한들이 선형 독립적이라는 것을 나타낸다. 각각의 라인들(104)은 예를 들면 라인이 접속되는 가변 노드들과 검사 노드들 사이의 통신 경로 또는 접속과 같은 에지를 표현한다. 각각의 에지는 두 개의 소켓들, 즉, 하나의 가변 소켓 및 하나의 제한 소켓을 식별한다. 에지들은 그들의 가변 소켓들 또는 그들의 제한 소켓들에 따라 열거될 수 있다. 가변 소켓들 열거는 이들이 가변 노드들에 접속되는 지점에서 가변 노드측에 나타남에 따라 에지 순서화(위에서 아래로)에 대응한다. 제한 소켓들 열거는 이들이 제한 노드들에 접속되는 지점에서 제한 노드측에 나타남에 따라 에지 순서화(위에서 아래로)에 대응한다. 디코딩 동안, 메시지들은 에지들을 따라 양방향으로 통과된다. 따라서, 디코딩 처리의 일부로서, 메시지들이 제한 노드로부터 가변 노드로 또는 그 반대로 에지를 따라 통과된다.
코드들을 표현하기 위해 그래프를 사용하는 대안은 도 2에 도시된 바와 같은 행렬 표현을 사용하는 것이다. 코드의 행렬 표현에서, 통상적으로 패리티 검사 행렬이라 칭하는 행렬(H202)은 관련 에지 접속, 가변 노드 및 제한 노드 정보를 포함한다. 단순화를 위해, 최대 하나의 에지가 임의의 쌍의 노드들과 접속되는 것으로 가정한다. 행렬 H에서, 각각의 열은 가변 노드들 중 하나에 대응하고, 각각의 행은 제한 노드들 중 하나에 대응한다. 예시적인 코드에 10개의 가변 노드들 및 5개의 제한 노드들이 존재하기 때문에, 행렬 H는 10개의 열들 및 5개의 행들을 포함한다. 특정 가변 노드 및 특정 제한 노드에 대응하는 행렬의 엔트리는 에지가 그래프에 존재하면, 즉 두 개의 노드들이 이웃들이면 1로 설정되고, 그렇지 않으면 0으로 설정된다. 예를 들면, 가변 노드(V1)가 에지에 의해 제한 노드(C1)에 접속되기 때문에, 1이 행렬(202)의 최상부 좌측 코너에 위치된다. 그러나, 가변 노드(V4)는 제한 노드(C1)에 접속되지 않으므로, 행렬(202)의 제 1 행의 제 4 위치에 0이 위치되어 대응하는 가변 및 제한 노드들이 접속되지 않음을 나타낸다. H의 행들이 GF[2]에 걸쳐 선형 독립적인 벡터들이면 제한들이 선형 독립적이라고 칭한다. 소켓들, 가변 또는 제한에 의한 에지들의 열거는 H에 1들을 열거하는 것에 대응한다. 가변 소켓 열거는 행렬(208)에 도시한 바와 같이 열들 내에서 위에서 아래로의 열거 및 열마다 좌측에서 우측으로의 진행에 대응한다. 제한 소켓 열거는 행렬(210)에 도시한 바와 같이 행들을 가로질러 좌측에서 우측으로의 열거 및 행마다 위에서 아래로의 진행에 대응한다.
행렬 표현의 경우, 전송될 코드워드(X)는 처리될 코드워드의 비트들(X1 내지 Xn)을 포함하는 벡터(206)로서 표현될 수 있다. 비트 시퀀스(X1 내지 Xn)는 행렬(206 및 202)의 적(product)이 0인 경우, 즉 Hx=0인 경우 및 이러한 경우에만 코드워드이다.
LDPC 그래프들과 연관된 코드워드들을 논의하는 것과 관련해서, 몇몇 경우들에서는 코드워드가 펑쳐링될 수도 있다는 것을 이해해야 한다. 펑쳐링은 더 짧은 코드워드를 실제로 산출하도록 코드워드로부터 비트들을 제거하는 행위이다. LDPC 그래프들의 경우, 이는 그래프 내의 가변 노드들의 일부가 실제로 전송되지 않는 비트들에 대응한다는 것을 의미한다. 이들 가변 노드들 및 이들과 연관된 비트들은 종종 상태 변수들로서 칭한다. 펑쳐링이 사용될 때, 디코더는 통신 채널을 통해 물리적으로 전달되지 않는 코드워드의 부분을 재구성하는데 사용될 수 있다. 펑쳐링된 코드워드가 전송되는 경우 수신 장치는 예를 들면 임의의 방식으로 1들 또는 0이 할당된 손실 수신 워드값들(비트들)을 이들 값들이 완전히 비신뢰적이라는 지시, 즉 이들 값들이 소거되었다는 지시(소프트 비트)와 함께 초기에 실장할 수도 있다. 단순화를 위해, 사용시에 이들 수신기 실장 값들은 처리될 수신된 워드의 부분이라고 가정할 것이다.
예를 들면 도 3에 도시된 시스템(350)을 고려한다. 시스템(350)은 인코더(352), 디코더(357) 및 통신 채널(356)을 구비한다. 인코더(350)는 코드워드(X)를 생성하도록 입력 데이터(A)를 처리하는 인코딩 회로(353)를 구비한다. 코드워드(X)는, 에러 검출 및/또는 보정을 위해, 어느 정도의 중복성을 갖는다. 코드워드(X)는 통신 채널을 통해 전송될 수도 있다. 대안적으로, 코드워드(X)는 소정 데이터 선택 기술에 의해 각각 제 1 및 제 2 부분(X', X")으로 데이터 선택 장치(354)를 경유하여 분할될 수 있다. 다음, 코드워드 부분들 중 하나, 예를 들면 제 1 부분(X')은 통신 채널을 통해 디코더(357)를 구비하는 수신기로 전송될 수도 있는 반면에 제 2 부분(X")은 펑쳐링된다. 통신 채널(356)에 의해 생성된 왜곡(distortion)들의 결과로서, 전송된 코드워드의 부분들은 손실되거나 손상될 수도 있다. 디코더의 관점에서, 펑쳐링된 비트들은 손실된 비트들로서 해석될 수도 있다.
수신기에서, 소프트 비트들이 손실된 또는 펑쳐링된 비트들을 대신하도록 수신된 워드 내로 삽입된다. 삽입된 소프트 비트들은 X" 비트들의 소거 및/또는 전송시의 손실된 비트들을 나타낸다.
디코더(357)는 수신된 워드(Y) 및 임의의 삽입된 소프트 비트들로부터 풀 코드워드(X)를 재구성하도록 시도하고, 이어서 재구성된 코드워드(X)로부터 A를 생성하도록 데이터 디코딩 동작을 수행할 수 있다.
디코더(357)는 수신된 워드(Y) 및 임의의 삽입된 소프트 비트들로부터 완전 코드워드(X)를 재구성하기 위해 예를 들면 LDPC 디코더와 같은 채널 디코더(358)를 구비한다. 게다가, 디코더(357)는 재구성된 코드워드(X)로부터 원래 입력 데이터(A)를 생성하기 위해 코드워드 내에 포함된 중복(redundant) 정보를 제거하기 위한 데이터 디코더(359)를 구비한다.
LDPC 코딩과 관련하여 생성된 수신된 워드들은, 원래 코드워드의 재구성 버전을 생성하도록 예를 들면 에러 보정 및 검출 동작들과 같은 LDPC 디코딩 동작들을 수행함으로써 처리될 수 있다는 것을 이해할 수 있을 것이다. 이어서, 재구성된 코드워드는 코딩된 원래 데이터를 복구하도록 데이터 디코딩이 실시될 수 있다. 데이터 디코딩 처리는 예를 들면 재구성된 코드워드로부터 비트들의 특정 부분 집합을 단순히 선택하는 것일 수도 있다.
상술한 바와 같이, LDPC 디코딩 동작들은 일반적으로 메시지 통과 알고리즘들을 포함한다. 다수의 잠재적으로 유용한 메시지 통과 알고리즘들이 존재하고, 이러한 알고리즘들의 사용이 LDPC 디코딩에 한정되는 것은 아니다. 이하에 설명하는 바와 같이, 본 발명은 다수의 상황들에서 매우 양호하고 종종 거의 최적의 성능을 제공하는 디코더 알고리즘의 단순한, 예를 들면 낮은 하드웨어 복잡성의 구현을 제공하는 방법들 및 장치에 관한 것이다. 제안된 알고리즘은 공지된 신뢰적인 전파 알고리즘(belief propagation algorithm)의 근사한 것으로서 보여질 수 있다.
이어지는 단락들에서 설명되는 본 발명의 이해를 용이하게 하기 위해, 이제 신뢰적인 전파의 간략한 수학적 설명을 제공할 것이다.
(2진) LDPC 코드들을 위한 신뢰적인 전파는 이하와 같이 표현될 수 있다. 그래프의 에지들을 따라 전송된 메시지들은 가변 노드와 연관된 비트에 대한 로그 우도들(log-likelihoods)
Figure pat00001
로서 해석된다. 여기서, (p0, p1)은 연관된 비트 상의 조건적 확률 분포를 표현하고, px는 비트가 값 x를 취하는 확률을 나타낸다. 수신기에 의해 디코더에 제공된 소프트 비트들이 또한 로그 우도의 형태로 제공된다. 따라서, 수신된 값들, 즉 수신된 워드의 원소들은 통신 채널에 의해 제공된 비트들의 관측에 따른 연관된 비트들의 로그 우도들이다. 일반적으로, 메시지 m은 로그 우도 m을 표현하고, 수신된 값 y는 로그 우도 y를 표현한다. 펑쳐링된 비트들에 대해서 로그 우도 수신된 값 y는 0으로 설정되고, p0=p1=1/2을 나타낸다.
신뢰적인 전파의 메시지-통과 규칙들을 고려한다. 메시지들은 검사 노드들로부터 가변 노드들로의 메시지들에 대해 mC2V로, 가변 노드들로부터 검사 노드들로의 메시지들에 대해 mV2C로 나타낸다. d개의 에지들을 갖는 가변 노드를 고려한다. 각각의 에지 j=1,...,d에서, mC2V(i)는 에지 i의 입력 메시지를 나타낸다. 디코딩 처리의 초기화시에, 모든 에지에 대해 mC2V=0으로 설정한다. 일반적으로 가변 노드들로부터의 출력 메시지들은
Figure pat00002
에 의해 제공된다. 이 연산에 대응하는 노드로부터의 출력 디코딩된 소프트 값(에지 메시지가 아님)은
Figure pat00003
에 의해 제공된다. 이 출력과 연관된 출력 경 판정(hard decision)은 xout의 부호로부터 얻어진다.
검사 노드들에서, 이들의 '부호' 및 크기들을 사용하여 메시지들을 표현하는 것이 종종 더 편리하다. 따라서, 메시지 m에 대해, mp∈GF[2]가 메시지의 '패리티'를 나타낸다고 하자, 즉 m≥0이면 mp=0이고 m<0이면 mp=1이다. 부가적으로, mr∈[0,∞]를 m의 크기를 나타낸다고 하자. 따라서,
Figure pat00004
을 갖는다. 검사 노드에서, mp 및 mr에 대한 갱신들은 개별적이다. 차수 d의 검사 노드에 대해,
Figure pat00005
여기서, 모든 가산이 GF[2]에 걸치고,
Figure pat00006
여기서, F(x):=ln coth(x/2)로 정의한다. 상기 수학식들 모두에서 상첨자 V2C는 제한 노드에서의 입력 메시지들을 나타낸다. F는 고유의 역함수, 즉 F-1(x)=F(x)인 것을 주목한다.
본 발명은 메시지 통과 디코딩 기술들과 관련하여 사용되는 디코딩 동작들을 수행하기 위한 방법들 및 장치에 관한 것이다. 본 발명의 기술들은 LDPC 코드들을 사용하기에 특히 양호하게 적합하다.
본 출원의 배경 기술 설명에서, LDPC 디코딩과 관련하여 사용될 수 있는 신뢰적인 전파 알고리즘의 수학적인 설명을 제공하였다. 본 발명의 설명에 따르면 알고리즘을 구현하는데 마주치는 주된 어려움은 함수 F 및 그 역함수와 관련되는 것이 명백하다. 다른 요구되는 연산들은 비교적 구현하는데 간단한 것으로 의도된다.
LDPC 디코더의 하드웨어 구현을 용이하게 하기 위해, 본 발명의 몇몇 실시예들에서, 로그 우도 값들이 1/2 ln 2의 정수 배수들로 양자화된다. 로그 우도 값들은 예를 들면 로그 우도비들 또는 그의 근사값들일 수도 있다.
로그 우도비들은 이하와 같이 설명될 수도 있다. x를 비트라 한다. x는, 가능하게는 다른 비트들과 함께 신호로서 전송되고, 수신기가 결과로서 z를 관측한다고 가정하자. x에 대한 로그 우도비는
Figure pat00007
로서 정의되고, 여기서 p(z|x=i)는 주어진 조건 x=i에서의 z를 관찰할 조건부 확률(conditional probability)을 나타낸다. 신호화 체계, 채널 모델 등에 의존하여 y를 계산하기 위한 다수의 가능한 방법들 및 형태들이 존재한다. x에 대한 두가지 확률들이 선험적으로 확률 동등적이라고 가정하면, 우도비
Figure pat00008
은 주어진 z에 대한 x의 사후 확률, 즉
Figure pat00009
과 동일하다. 따라서, 종종 로그 우도비를 단순히
Figure pat00010
로 나타내고, 여기서 pi는 x=i일 조건부 확률을 나타낸다. 본 발명의 다양한 LDPC 디코딩 실시예들에서, 컨디셔닝(conditioning) 정보가 각각의 반복에 의해 증가되는 경우의 이러한 로그 우도비들(예를 들면, 메시지들)을 적어도 근사적으로 계산한다.
실제의 디지털 메시지 통과 디코더 구현에 있어서, 디코더 메시지들은 유한수의 비트들에 의해 표현된다. 본 발명에 따른 양자화의 사용을 예상하여, 스케일링 파라미터 δ를 도입한다. 본 발명의 설명된 예시적인 구현들에 있어서, 메시지들은 정수들 m이고, 메시지의 해석은 그 메시지가 로그 우도 mδ를 나타낸다는 것이다. 따라서, 예시적인 실시예들에서, 본 발명의 메시지들은 본 발명에 따라 δ에 의해 스케일링될 때 연관된 로그 우도들을 결정하는 정수들이다.
본 발명에 따르면, 본 출원의 배경 기술 섹션에서 설명된 함수 F를 구현을 더 양호하게 제공하는 다른 함수로 대체함으로써 근사한다. 다양한 실시예들에서, 최종 디코더가 정확한 신뢰적인 전파 디코더에 더 근접하도록 본 발명에서 설명하는 초기 근사를 그 역함수와 함께 약간 수정한다.
근사의 개념은 이하와 같이 e-δx의 급수(series)에 F(δx)를 확장함으로써 이해될 수 있다.
Figure pat00011
따라서, 큰 δx의 값들에서 함수 ln(coth(δx/2))는
Figure pat00012
에 의해 양호하게 근사될 수 있다. 본 발명의 목적은 낮은 복잡성의 구현을 찾는 것이라는 것을 상기하면,
Figure pat00013
에 의한 함수 F(x)의 근사가 매우 적당하다. F(x)를
Figure pat00014
로 단순히 대체하면 검사 노드 갱신의 크기 부분이,
Figure pat00015
의 형태를 취하고, 여기서 [x]는 x의 정수 부분을 나타낸다.
δ=ln2를 선택하면 검사 노드 신뢰성 갱신을 위해 요구되는 계산이 특히 단순해져, 가산 및 시프트 연산을 사용하는 구현을 허용한다는 것을 주목하라. 대략 1/5보다 큰 코드 전송률에서 δ=ln2로의 설정은 거의 완전한 신뢰적인 전파 성능을 달성하기에 충분한 분해도를 제공하는 것으로 판명되었다. 더 낮은 전송률에서는 이 양자화는 너무 개략적이고 δ=1/2 ln 2로 설정하는 것이 바람직할 수 있다. 이 방식으로 δ를 선택하는 주요 장점은 ln 연산의 계산을 매우 단순화하는 것이다.
δ=ln2인 경우를 고려한다. 이 경우 제한 노드 갱신 계산들은 이하의 형태를 취한다.
Figure pat00016
그것은 로그 함수의 정수 부분이기 때문에, 함수는 우선 순위 인코더로서 구현될 수 있다, 즉 독립변수의 2진 표현에서의 최초 1의 위치를 단순히 결정함으로써 함수를 구현할 수 있다.
Figure pat00017
에 의한 ln(coth(δx/2))의 근사는 δx의 작은 값들의 경우 비교적 큰 에러들을 초래할 수 있다. 정함수 및 역함수의 부드러운 조정에 의해 에러를 다소 보상할 수 있다. 더 구체적으로는, 본 발명의 다양한 실시예들에서 작은 오프셋들이 제한 노드 갱신 중에 인가될 수 있다. 이렇게 함으로써, 갱신 보상들은 가변 노드들에서,
Figure pat00018
의 형태를 취하고, 검사 노드들에서는,
Figure pat00019
의 형태를 취하며, 여기서 C1 및 C2는 상수들이고, "우선 순위"는 독립변수의 적합한 2진 표현에서의 최초 '1'을 찾는 연산을 칭한다. 이어지는 상세한 설명에서는 우선 순위 인코더의 의미있는 예시적인 구현들을 설명할 것이다.
이제, 하드웨어를 고려한다. 잠시동안 변환들을 무시하면, 메시지 갱신들을 위한 주된 계산은 이하의 단순화 형태를 갖는다:
Figure pat00020
시간에 따라 연속적으로 메시지 통과 동작들을 수행하는 것을 제안한다. 입력 메시지들은 예를 들면 클럭 사이클마다 한번 도달한다. 따라서, 클럭 사이클 당 하나의 출력 에지 메시지를 생성할 수 있는 효과적인 파이프라인 구조를 갖는 것이 바람직하다. 본 발명은 또한 이러한 방식으로 상기 계산 규칙을 구현하기 위한 특정 구조, 노드 처리기의 설명을 포함한다. 특정 구현은 메시지 통과 동작들의 효과적인 능률적 계산을 제공한다.
도 1은 길이 10의 예시적인 규칙 LDPC 코드의 2분 그래프 표현을 도시하는 도면.
도 2는 도 1에 도식적으로 도시된 코드의 행렬 표현.
도 3은 데이터의 코딩, 전송, 및 디코딩을 도시하는 도면.
*도 4는 예시적인 불규칙 LDPC 코드의 2분 그래프 표현.
도 5는 도 5a 내지 도 5d의 조합을 포함하고, 도 4에 도시된 LDPC 코드에 따른 LDPC 디코딩 동작의 부분으로서 수행되는 단계들을 도시하는 도면.
도 6은 본 발명에 따라 구현된 노드 처리기들을 포함하는 직렬 LDPC 디코더를 도시하는 도면.
도 7은 가변 노드 처리기의 구현을 도시하는 도면.
도 8은 제한 노드 처리기의 구현을 도시하는 도면.
도 9 및 도 10은 1/2 ln 2 양자화 스텝 크기들이 6 비트 메시지들에 사용되는 제한 노드 처리와 각각 연관된 제 1 및 제 2 변환 동작들을 도시하는 도면.
도 13은 메시지 통과 디코더에 사용하기 위한 본 발명에 따라 구현된 노드 처리기의 일반적인 구조를 도시하는 도면.
도 14는 도 13에 도시된 노드 처리기에 의해 순차적으로 상이한 차수들의 노드들에 대응하는 메시지의 처리 중에 생성된 다양한 메시지들 및 값들을 도시하는 도면.
도 15는 수신기에 의해 검출된 값들로부터 양자화된 로그 우도 값들을 생성하기 위해 사용될 수 있는 장치를 도시하는 도면.
상술한 바와 같이, 본 발명의 디코딩 방법들 및 장치가 LDPC 디코더 실시예와 관련한 설명을 위해 기술될 것이다. LDPC 코드의 디코딩에 수반되는 단계들은 먼저 본 발명의 더욱 상세한 설명으로 이어지는 도 4 및 도 5를 참조하여 설명할 것이다.
도 4는 2분 그래프(400)를 사용하는 예시적인 불규칙 LDPC 코드를 도시한다. 그래프는 m개의 검사 노드들(402), n개의 가변 노드들(406), 및 복수의 에지들(404)을 포함한다. 검사 노드들과 가변 노드들 사이의 메시지들은 에지들(404)을 거쳐 교환된다. 수신된 워드(Y)에 대응하는 소프트 입력 비트들(y1 내지 yn), 및 소프트(또는 하드) 출력들(x1 내지 xn)은 도면 부호 408로 나타낸다. m번째 검사 노드는 도면 부호 402'를 사용하여 식별하고, n번째 가변 노드는 도면 부호 406'을 사용하여 식별하고, n번째 소프트 입력(yn) 및 n번째 소프트 출력(xn)은 각각 도면 부호들 410, 409를 사용하여 도 4에 나타낸다.
가변 노드들(406)은 그 가변 노드들에 대응하는 출력 변수들(x1,...,xn)의 값을 갱신하고 제한 노드들을 위한 메시지들을 생성하기 위해 수신된 워드(y1,...,yn)로부터의 입력 소프트 값들과 함께 제한 노드들(402)로부터의 메시지들을 처리한다. 하나의 메시지가 그에 접속된 각각의 에지에 대한 가변 노드에 의해 생성된다. 생성된 메시지는 가변 노드로부터 에지에 부착된 제한 노드로 에지를 따라 전송된다. 설명을 위해, 본 출원에서 가변 노드들로부터 제한 노드들로의 메시지들은 종종 약어 V2C를 사용하여 나타낼 수 있고, 제한 노드들로부터 가변 노드들로의 메시지들은 약어 C2V를 사용하여 나타낼 수도 있을 것이다. 특정 메시지의 소스/목적지로서 기능하는 가변 노드들 및 제한 노드들 중 특정의 하나를 나타내기 위해 이 약어의 V 및 C 성분들에 지수들이 부가될 수도 있다. 각각의 제한 노드(402)는 에지들을 경유하여 가변 노드들로부터 수신된 메시지들을 처리하는 기능을 한다. 가변 노드들로부터 수신된 V2C 메시지들은 그 후에 각각의 제한 노드에 부착된 에지들을 따라 재전송되는 C2V 메시지들을 생성하도록 제한 노드들(402)에 의해 처리된다. 다음, 가변 노드들(406)은 새로운 V2C 메시지들을 생성하여 전송하고 소프트 출력들 xi를 생성하도록 소프트 입력 값들과 함께 C2V 메시지들을 처리한다. 검사 노드들(402)로 생성된 메시지들을 전송하는 단계, 가변 노드들에서 소프트 출력들 xi를 생성하는 단계, 및 검사 노드들로부터 메시지들을 수신하는 단계를 포함하는 가변 노드들(406)에서 처리를 수행하는 시퀀스는, 가변 노드들(406)로부터의 출력들 xi이 코드워드가 성공적으로 디코딩되거나 예를 들면 고정된 횟수의 메시지 통과 반복들의 완료와 같은 소정의 다른 중단 기준이 만족되는 것을 나타낼 때까지 되풀이하여, 즉 반복적으로 수행될 수도 있다. 상술한 동작들의 시퀀스는 반드시 설명된 순서로 수행될 필요는 없다는 것을 이해해야 한다. 노드 처리는 비동기적으로 처리될 수도 있고, 가변 및 제한 노드 처리는 동시에 수행될 수도 있다. 그럼에도, 반복 처리의 논리는 설명한 바와 같다.
메시지들(V2C, C2V)은 하나 이상의 비트들, 예를 들면 각각 K 개의 비트들일 수도 있고, 여기서 K는 0이 아닌 양의 정수값이다. 유사하게, 소프트 출력들 xi는 하나 이상의 비트들일 수도 있다. 여러 비트 메시지들 및 출력들이 메시지 또는 출력의 확실성 또는 신뢰도 정보를 중계하는 기회를 제공한다. 다중 비트(소프트) 출력의 경우, 소프트 출력값의 부호가 가변 노드에 대응하는 디코딩 처리의 단일 비트 하드 출력, 예를 들면 디코딩된 코드워드의 비트들을 제공하는데 사용될 수도 있다. 출력 소프트 값들은 디코딩된 소프트 값들, 또는 대안적으로 LDPC 디코더가 단지 하나의 모듈 내에 있는 다른 더 큰 반복 처리에서 사용될 수도 있는 소위 외부 정보(대응 입력 정보를 제외함)에 대응할 수도 있다.
이제, LDPC 코드의 디코딩과 연관된 반복적인 메시지 통과 처리를 도 5a 내지 도 5d를 참조하여 더욱 설명할 것이다.
LDPC 코드를 디코딩할 때, 각각의 제한 및 가변 노드에서의 처리는 독립적으로 수행될 수도 있다. 따라서, 가변 및/또는 제한 노드 처리는 몇몇 또는 모든 가변 및 제한 노드 처리가 디코딩 처리의 특정 반복에 대해 완료될 때까지, 시간적으로, 예를 들면 순차적으로 하나의 노드를 수행할 수도 있다. 이는 처리 하드웨어의 단일 유닛으로 하여금 각각의 가변 및/또는 제한 노드들의 각각과 연관된 처리를 수행하기 위해 제공되거나 필요한 경우에는 재사용되게 한다. LDPC 디코딩의 다른 중요한 특징은 특정 처리 반복 중에 사용된 V2C 및 C2V 메시지들이 예를 들면 동일한 처리 반복 중에 동시에 생성될 필요가 없다는 것이다. 이는 이용된 메시지들이 최종 갱신되었기 때문에 제한 및 가변 노드 처리가 비동기적으로 및 시간 지연과 관련하지 않고 병렬적으로 수행될 수 있는 구현들을 허용한다. 모든 가변 및 제한 노드들이 수신 메시지들을 처리하고 갱신된 메시지들을 생성하는 충분한 횟수의 메시지 갱신들 및 반복들 이후에, 가변 노드들의 (하드) 출력은 그래프가 적절하게 설계되고 처리되는 수신된 워드에 비보정 에러들이 잔류하지 않는다고 가정하면 수렴할 것이다.
각각의 검사 노드 및 가변 노드에서의 처리가 독립적인 동작으로 관찰될 수 있는 경우에, 단일의 예시적인 검사 노드 Cn(502') 및 가변 노드 Vn(506')에서 수행되는 반복 처리가 도 5a 내지 도 5d를 참조하여 더 상세히 설명될 것이다. 설명을 위해, 양자화된 신뢰적인 전파 알고리즘을 가정할 것이다. 따라서, 수신된 값들 및 메시지들은 실수들이다. 양수는 0의 경 비트 판정(hard bit decision)에 대응하고 음수는 1의 경 비트 판정에 대응한다. 더 큰 크기들은 더 큰 신뢰도를 나타낸다. 따라서, 숫자 0은 절대 비신뢰도를 나타내고 부호(양 또는 음)는 관계없다. 알고리즘에서 수행되는 계산들의 상세사항들은 이전의 섹션에서 설명되었다.
도 5a는 LDPC 디코딩 처리의 초기 단계를 도시한다. 초기에, 가변 노드 Vn(506')에 소프트 입력, 예를 들면 처리될 수신된 워드로부터의 수신된 값들(로그 우도를 표현하는 1 이상의 비트들) yn이 제공된다. 디코딩 동작의 시작시에 C2V 메시지들 및 소프트 출력 Xn(509)은 초기에 0으로 설정된다. 수신된 입력들, 예를 들면 0의 값인 C2V 메시지들 및 입력들 yn에 기초하여, 가변 노드 Vn(506')은 자신이 접속되어 있는 각각의 검사 노드를 위한 하나의 V2C 메시지를 생성한다. 통상적으로, 초기 단계에서, 각각의 이들 메시지들은 yn이다.
도 5b에서, 생성된 V2C 메시지들은 가변 노드 Vn(506')에 접속된 에지들 각각을 따라 전송되는 것으로 도시되어 있다. 따라서, 갱신된 V2C 메시지들은 검사 노드 Cm(502')을 포함하는, 가변 노드 Vn(506')에 결합된 검사 노드들(502) 각각으로 전송된다.
V2C 메시지들을 생성하는 것에 부가하여, 가변 노드 처리는 처리 중인 가변 노드에 대응하는 소프트 출력 Xn(509')의 갱신을 초래한다. 소프트 출력 Xn은 도 5c에 갱신된 것으로 도시되어 있다. 상이한 단계들로서 도시되었지만, 소프트 출력은 V2C 메시지들이 출력되는 것과 동시에 출력될 수도 있다.
이하에 더 설명하는 바와 같이, 본 발명의 몇몇 실시예들에 따르면, 소프트 출력들(또는 이들의 연관 하드 판정들)은 코드워드가 수신된 워드로부터 복원될 때, 즉 패리티 제한들이 출력값들에 의해 만족될 때를 결정하기 위해서 사용될 수도 있다. 이는 성공적인 디코딩(발견된 코드워드가 부정확할 수도 있지만, 즉 전송된 것이 아닐 수도 있지만)을 나타내고, 이에 의해 예를 들면 소정의 고정된 최대 허용 수의 메시지 통과 반복들이 완료되기 전에 반복 디코딩 처리가 적시에 중단되게 할 수 있다.
검사 노드 처리는 일단 검사 노드, 예를 들면 검사 노드 Cm(502')가 자신이 접속되어 있는 에지들을 따라 V2C 메시지들을 수신하면, 수행될 수 있다. 수신된 V2C 메시지들은 특정 검사 노드에 접속된 각각의 에지에 대해 하나씩 갱신된 C2V 메시지들을 생성하도록 검사 노드에서 처리된다. 검사 노드 처리의 결과, 에지를 따라 가변 노드로 전송된 C2V 메시지는 C2V 메시지가 전송되는 특정 가변 노드로부터 수신된 V2C 메시지에 의존하지 않고(일반적으로 및 바람직하게는), 검사 노드에 접속된 다른 에지들에 수신된 V2C 메시지들의 각각의 값에 의존할 수 있다. 따라서, C2V 메시지들은 메시지가 전송되는 노드 이외의 가변 노드들로부터 수신된 메시지들로부터 생성된 정보를 전송하는데 사용된다.
도 5d는 노드(506')를 포함하는 가변 노드들로의 갱신된 C2V 메시지들의 전달을 도시한다. 특히, 도 5d에서, 제한 노드 Cm(502')은 갱신된 Cm2Vn 메시지가 가변 노드 Vn(506')로 공급되는 것으로서 두 개의 갱신된 C2V 메시지들을 출력하는 것으로 도시되어 있다. Vn(506')은 또한 자신이 접속된 다른 제한 노드(들)로부터 부가의 갱신된 C2Vn 메시지(들)를 수신한다.
갱신된 C2V 메시지들의 수신에 의해, 가변 노드 처리는 갱신된 V2C 메시지들 및 소프트 출력들을 생성하도록 반복될 수 있다. 다음, C2V 메시지들의 갱신은 디코더 중단 기준이 만족될 때까지 더욱 반복될 수 있다.
따라서, 도 5a 내지 도 5d에 도시된 처리는 디코딩 처리가 중단될 때까지 초기값들에 대향되는 갱신된 메시지 값들을 사용하여 최초 반복 후에 반복될 것이다.
본 발명은 전달된 메시지들의 형태, 그에 대한 수행된 계산, 및 이들 계산들을 수행하는 하드웨어 구조들에 관한 것이다. 본 발명을 이러한 상황에 놓기 위해, LDPC 디코더 구현을 간략히 설명할 것이다. 이 구현은 예시를 위한 것이다. 효과적인 구현 구조들은 본원에 참조로서 명시적으로 통합되어 있는 2001년 10월 10일 출원된 발명의 명칭이 "LDPC 코드들을 디코딩하기 위한 방법들 및 장치"인 미국 특허 출원 제09/975,333호에 설명되어 있다.
본 발명의 한 특징에 따르면, 메시지 통과 디코딩 입력 값들 y는 1/2 ln 2의 정수 배수들로 양자화된 로그 우도 값들의 형태이다. 양자화된 로그 우도 값들의 생성은 수신된 값들로부터 로그 우도 값들, 예를 들면 비율들 또는 그의 근사값들을 생성하기 위해 그 수신된 값들을 처리하는 것을 포함할 수도 있다. 다음으로, 로그 우도 값들은 양자화된 로그 우도 값들을 생성하도록 1/2 ln 2의 정수 비율들인 스텝 크기들을 사용하여 양자화된다. 다양한 실시예들에서, 로그 우도 값들은 로그 우도비들 또는 그의 근사값들이다. 이러한 양자화된 로그 우도비들의 사용은 디코더 구현을 용이하게 한다.
수신된 값들로부터 양자화된 로그 우도 값들, 예를 들면 비율들을 생성하기 위한 회로는 예를 들면 도 6에 도시된 디코더(600)와 같이 본 발명의 메시지 통과 디코더 앞에 있는 통신 채널(356)의 부분을 형성하는 수신기 내로 직접 통합될 수도 있다.
다양한 회로들이 본 발명에 따른 양자화된 로그 우도비들을 생성하는데 사용될 수도 있다. 이제, 도 15를 간략히 참조하면, 수신된 값들(yin)로부터 양자화된 로그 우도비(y0)를 생성하기 위한 예시적인 회로(1500)가 도시되어 있다. 도 15의 회로는 각각의 수신된 값이 연관된 비트에 대한 로그 우도비에 비례한다고 가정할 수도 있는 경우 부가의 가우시안 노이즈를 갖는 BPSK(+1,-1) 신호화의 경우에 적합하다. 이 경우, 수신된 값은 상수를 단순히 곱함으로써 로그 우도비로 변환될 수도 있다.
값 yin은 본 발명의 메시지 통과 디코더에 의해 공급되는 로그 우도비(y0)을 생성하도록 처리되는 수신기 회로에 의해 수신된 값일 수도 있다. 회로(1500)는 입력값(Yin)에 (2/s2)을 곱함으로써 로그 우도비를 생성하기 위한 곱셈기(1502)를 포함하고, 여기서 s2은 통신 채널에 의해 수신된 신호 내로 도입되는 부가의 가우시안 노이즈에 대응하는 상수이다. 다음, 최종 로그 우도비는 양자화기(1504)에 의해 1/2 ln 2의 정수 배수로 양자화된다. 양자화기(1504)는 곱셈기(1502)에 의해 생성된 로그 우도비를 1/2 ln 2로 나누고, 크기가 15를 초과할 때 결과를 +15 또는 -15로 포화시키고, 그렇지 않으면 이후에 디코더 회로(600)로의 입력으로서 공급될 수도 있는 양자화된 로그 우도비(Y0)로서 최종 값의 5 lsb들(최하위 비트들)을 취함으로써 구현될 수도 있다.
도 6은 한번에 하나의 에지에서 순차적으로 메시지 처리 동작들을 수행하는 단순한 직렬 디코더(600)를 도시한다. LDPC 디코더(600)는 디코더제어 모듈(610), V2C 에지 메모리(630), C2V 에지 메모리(650), 가변 노드 처리기(620), 제한 노드 처리기(640), 및 출력 버퍼(660)를 포함한다. 단순화를 위해, 본 발명의 설명에 있어서, 고정된 횟수의 반복들 동안에 디코더가 실행된다는 것, 즉 수렴 검출(convergence detection)이 수행되지 않는다고 가정한다.
V2C 및 C2V 에지 메모리들(630, 650)은 각각 하나의 에지에 대응하는 각각의 K 비트 위치를 갖는 L개의 K 비트 메모리 위치들을 포함하고, 여기서 L은 사용되는 LDPC 그래프의 에지들의 총 수이고, K는 에지를 따라 교환되는 메시지 당 비트들의 수이다. 출력 버퍼(660)는 하드(1 비트) 또는 소프트(1 비트보다 큼) 값들일 수도 있는 가변 노드 출력값들 x를 저장하기 위한 메모리를 포함한다.
디코더 제어 모듈(610)은 저장된 형태로 그래프를 설명하는 정보를 포함한다. 이는 이하에 설명하는 바와 같은 메시지 통과를 제어하기 위해 이 정보를 사용한다. 각각의 수신된 값 및 메시지는 K 비트들로 구성되는 것으로 가정된다. 디코더는 연속해서 작동한다. 그 디코더는 먼저 가변 노드 갱신 동작들을 수행하고 그 후에 제한 노드 갱신 동작들을 수행한다. 이는 최종 가변 노드 갱신 후에 종료하는 소정의 고정된 수의 횟수들로 이 사이클을 반복한다. 초기에 C2V 메시지 메모리는 0들로 실장된다. (가변 노드 처리 및 제한 노드 처리는 물리적으로 동시에 수행될 수도 있다는 것을 주목하라. 상술한 순서는 처리 중에 정보의 흐름을 나타낸다.)
이제, 가변 노드 갱신을 설명한다. 디코더 제어 모듈(610)은 가변 노드 소켓 순서로 C2V 메시지들이 C2V 메시지 메모리로부터 판독되도록 하고 가변 노드 처리기(620)로 전달되도록 한다. 디코더 제어 모듈(610)은 메시지가 그 시점에 판독되었음을 나타내는 메시지 식별자(예를 들면, 메모리 위치 또는 포인터)를 C2V 에지 메시지 메모리(650)에 시그널링한다. 도 1을 참조하면, 예를 들면, 가변 노드 처리기(620)로 전달된 최초 3개의 메시지들이 가변 노드 v1로 입력되는 메시지들이다. 가변 노드 처리기(620)로 전달된 그 다음의 3개의 메시지들은 가변 노드 v2 등에 입력되는 메시지들이다.
소정 노드에 대한 메시지들은 가변 노드 처리기(620)에 의해 처리된다. 가변 노드 처리기(620)는 디코더 제어 모듈(610)로부터 노드 경계들을 나타내는 신호, 노드 클럭 신호를 수신한다. 이 신호는 현재 처리되는 노드의 차수에 대해 실제로 가변 노드 처리기에 통지한다. 다양한 실시예들에서, 신호는 예를 들면 특정 노드에 대응하는 최종 입력 메시지들의 도달과 동일한 시점에 전송될 수 있다.
노드 갱신 계산들은 가변 노드 처리기(620)에서 수행된다. 출력되는 V2C 메시지들은 입력 메시지들의 에지 순서에 대응하는 가변 소켓 순서로 송출되고, 이들 메시지들은 V2C 에지 메시지 메모리(630)에 저장된다. 소프트 또는 하드 출력값들이 출력 버퍼(660)에 저장된다. 가변 노드 갱신의 완료시에, 그것이 최종 갱신이 아니면, 디코더는 제한 노드 갱신을 수행하기 시작한다.
이제, 제한 노드 갱신을 설명한다. 이는 가변 노드 갱신과 매우 유사하고 간략히 설명할 것이다. 디코더 제어 모듈(610)은 제한 소켓 순서로 V2C 메시지들이 V2C 메시지 메모리(630)로부터 판독되게 하고 제한 노드 처리기(640)로 전달되게 한다. 디코더 제어 모듈(610)은 메시지가 판독되었음을 나타내는 메시지 식별자(예를 들면, 메모리 위치)를 V2C 에지 메시지 메모리(630)로 시그널링한다. 소정 제한 노드를 위한 메시지들은 제한 노드 처리기(640)에 의해 처리된다. 제한 노드 처리기(640)는 디코더 제어 모듈(610)로부터 노드 경계들을 나타내는 신호, 노드 클럭 신호를 수신한다. 출력되는 C2V 메시지들은 제한 소켓 순서, 즉 입력 메시지들의 에지 순서에 대응하여 송출되고, 이들 메시지들은 C2V 에지 메시지 메모리(650)에 저장된다.
가변 노드 갱신과 함께 제한 노드 갱신은 완전 반복을 포함한다. (상술한 바와 같이, 가변 및 제한 노드 처리는 동시에 수행될 수도 있다.)
본 발명의 다양한 가변 노드 처리기 특징들을 도 6에 도시된 예시적인 LDPC 디코더 시스템(600)과 관련하여 설명할 것이다. 본 발명에 따른 LDPC 디코딩에 사용될 수도 있는 계산들 및 메시지 포맷들의 특정 세트를 설명할 것이다. 도 6의 직렬 디코더에 노드 처리기들을 구현하는데 설명된 동일한 계산들이, 소정 노드에 대한 복수의 또는 모든 메시지들이 동시에 처리기에 도달하고 복수의 또는 모든 메시지들의 노드 처리가 동시에 진행되는 병렬 구현들에 사용될 수 있다는 것이 주시된다. 더욱이, 노드 처리기는 다수의 노드들의 병렬 처리를 동시에 제공하도록 복제될 수도 있다.
본 발명을 실시하는 예시적인 5-비트 메시지 기반 알고리즘의 명확한 설명을 제공한다. 입력 소프트 값들 및 메시지들은 본 발명에 따른 로그 우도비 형태이고 δ=ln2의 배수들로 양자화된다. 따라서, 메시지의 5 비트들은 가능한 정수 값들 {-15, -14,...,-1, 0, 1,...,15}을 표현한다. 실제로는 "부호 및 크기"로서 이들 소프트 값들을 표현하는 것이 편리하다. 부호는 연관된 비트에 대해 예를 들면 연관된 경판정(hard decision)과 같은 바람직한 값을 나타내는 값 0 또는 1을 취한다. 크기는 부호의 신뢰성을 나타낸다: 더 큰 크기들은 더 높은 신뢰성을 나타낸다. (소정의 M<15에 대해 입력 소프트 값들 크기들을 범위 {0, 1,...,M}로 제한하는 것이 일반적으로 좋은 아이디어이다. 또한 이 표현에서 실제로는 부호 0을 갖는 값과 부호 1을 갖는 값인 두 개의 '0' 크기 값들이 존재한다는 것을 주목하라.) 따라서, 메시지를 쌍(mp, mr)으로서 기록할 수 있고, 여기서 mp는 부호 비트를 나타내고, mr은 신뢰성을 나타내며, 본 예에서는 4비트의 비-음의 값이다. 이러한 메시지가 제공되면 대표적인 스케일링된 로그 우도비를 나타내도록 m을 사용한다, 즉
Figure pat00021
. 가변 노드들에 대한 갱신 식은 이하의 식으로 제공된다.
Figure pat00022
출력 메시지 mV2C(j)가 값 0을 가질 때 부호는 임의적으로 선택될 수도 있다. 출력 메시지 크기가 15를 초과할 때 포화된다, 예를 들면 15로 설정된다.
도 7 및 도 8은 상술한 직렬 디코더에 있어서의 상기 규칙의 예시적인 구현을 도시한다. 도 7은 도 6에 도시된 디코더에 적합한 가변 노드 처리기(700)의 구현을 도시한다. 특정 가변 노드를 위한 메시지들(m)이 순차적으로 도달한다. 각각의 메시지(m)는 K개의 비트들을 포함한다. 각각의 수신된 메시지는 이전 합계, 즉 유닛 지연 엘리먼트(712)에 의해 출력된 누적된 메시지 합계와 합산기(710)에 의해 합계된다. 합산기(710)에 공급된 누적된 메시지 합계는 새로운 노드에 대응하는 메시지의 수신에 의해 "0"으로 재설정된다. 수신된 소프트 입력 값 y는 지연(712)에 의해 출력되는 누적된 메시지 합계에 가산기(720)에 의해 가산되어 새로운 누적된 합계(SUM)를 형성한다. 처리되는 노드에 대응하는 모든 메시지들이 가산되어 완전한 누적된 총 합계를 형성하면, 값(SUM)은 래치되고 래치(730)에 저장된다. 이러한 래칭은 완전 합계가 래칭되는 것을 보장하도록 그 타이밍이 제어되는 외부 노드 클럭 신호의 결과로서 수행된다. 노드 클럭 신호는 노드 차수의 함수로서 결정된다.
각각의 수신된 메시지는 또한 그 지속기간이 구현되는 노드의 차수에 대응하는 가변 지연 엘리먼트(760)를 포함하는 지연 라인을 통과한다.
처리되는 특정 가변 노드에 연관된 제 1 메시지는 지연 라인으로부터 나타나고, 그 메시지의 값은 감산기(740)에 의해 래치(730)에 저장된 래칭된 총 합계로부터 감산된다. 출력 결과는 출력 메시지 값이 소정의 범위에 있도록, 예를 들면 K-비트들로 제한되도록 보장하기 위해 포화 연산기(770)를 이어서 통과한다. 포화 연산기(770)의 전후에 위치된 유닛 지연 엘리먼트들(742, 772)이 제한 노드 처리 동작들을 가변 노드 처리 동작들과 동기화시키는데 사용된다.
도 8은 도 6에 도시된 디코더에 사용하기에 적합한 제한 노드 처리기(800)의 구현을 도시한다. 검사 노드 처리기(800)는 스플리터 회로(801), 부호처리 회로(802), 크기 처리 회로(804) 및 조합 회로(899)를 포함한다. 가변 노드 처리기(700)의 경우와 마찬가지로, 특정 검사 노드에 대한 메시지들(m)이 순차적으로 도달한다. 제한 노드 갱신은 메시지 내의 크기 정보로부터 부호 비트를 분리하는데 사용되는 분할기(801)에 의해 부호 및 크기 갱신 처리로 분리된다. 수신된 메시지의 단일 부호 비트는 분리 회로(801)에 의해 분할되고 처리를 위해 부호 비트 처리 회로(802)로 공급된다. K-비트 메시지(m)의 나머지 K-1 비트들은 메시지 처리 회로(804)로 공급된다. 게다가, 노드 클럭 및 노드 차수 신호들이 부호 및 크기 처리 회로들(802, 804)의 대응 입력부들에 공급된다.
부호 처리 회로(802)에 의해 수행되는 바와 같은 부호 갱신 처리를 먼저 설명한다. 입력되는 신호 비트들은 배타적 OR(XOR) 논리 회로(810)의 입력부로 공급되기 전에 유닛 지연 엘리먼트(803)에 의해 하나의 클럭 사이클만큼 지연된다. XOR 회로(810)는 XOR 회로(810)의 제 2 입력으로 공급되기 전에 제 2 유닛 지연 엘리먼트(815)에 의해 지연된 이전 XOR 결과와 입력 신호 비트의 배타적 OR 또는 모듈로 2 합계를 수행한다. 이 방식으로, 처리되는 노드에 대응하는 모든 부호 비트들의 XOR 연산이 반복 처리를 통해 총 XOR 결과 또는 적(SUMsign)을 생성한다. 값(SUMsign)은 노드에 대응하는 지연된 부호 비트들과의 후속적인 XOR 연산을 위해 노드 클럭 신호(830)의 제어 하에 래치(830)에 저장된다. 다중화기(MUX)(813)는 노드에 대응하는 제 1 메시지의 부호 비트와 XOR 연산되는 값 0을 출력하는데 사용된다. 다른 시간들에 이는 지연된 XOR 결과를 출력한다.
지연 엘리먼트(803)로 시작하여 XOR 경로를 통과하는 것에 부가하여, 각각의 부호 비트는 또한 가변 지연 엘리먼트(820)를 포함하는 지연 라인을 통과한다. 엘리먼트(820)의 지연은 부호 비트에 부과된 지연의 지속기간이 노드의 차수에 대응할 수 있도록 노드 차수 신호에 의해 제어된다. 노드에 대응하는 모든 부호 비트들이 조합되어 있을 때, SUMsign으로서 나타내는 총 합계(배타적-OR)가 래치(830)에 저장된다. 값(SUMsign)의 래칭은 상술한 가변 노드 갱신 처리에서와 마찬가지로 외부 노드 클럭 신호의 지시 하에 수행된다. 이 부호는 또한 다중화기(813)의 출력을 제어하는데 사용된다.
가변 노드 갱신에서와 마찬가지로, 부호 비트들은 지연 라인으로부터 순차적으로 나타난다. 지연 부호 비트의 값은 가산기(840)에서 SUMsign으로부터 감산된다(배타적-OR 연산). 결과는 출력 메시지의 부호를 구성한다. 몇몇 부가의 지연 엘리먼트들(841, 843)이 회로(804)에 의해 수행된 크기 갱신과 동기화된 부호 갱신을 유지하도록 처리기(802) 내로 삽입되어 있다는 것을 주목하라.
이제, 크기 처리 회로(804)에 의해 수행된 크기 갱신 처리를 설명할 것이다. 제 1 단계에서, (K-1) 비트들을 사용하여 표현된 입력 크기들
Figure pat00023
은 제한 도메인 값들로 변환된다. 이는 변환 회로(850)를 사용하여 값
Figure pat00024
으로 메시지
Figure pat00025
를 대체하는 것이 된다. 이 변환 처리의 목표는 단순한 합계들 및 감산들의 사용을 통해 제한 처리가 구현될 수 있는 형태로 메시지 값들을 표현하는 것이다. 실제로, 이 변환은 시프트 연산으로서 구현될 수 있다: 값 C는 2진 형태로 저장되고 변환된 메시지를 얻기 위해
Figure pat00026
에 의해 우측으로 시프트된다. 5 비트 디코더 예에서, 유효한 것으로 판명된 값 C는 16진법으로 6000으로 제공된다.
메시지의 크기부의 더 콤팩트한 예컨대 4비트 가변 노드 도메인 표현으로부터, 메시지의 크기부의 더 긴 예컨대 15 비트 제한 노드 도메인 표현으로 변화되는 정변환(forward transform) 처리(900)를 설명하는 상세한 흐름도인 도 9를 참조한다. 단계 906에서, 가변 노드 및 제한 노드 도메인들 사이에서 변환하는데 사용된 상수 C는 수신된 메시지의 크기부에 의해 나타내는 지점들의 10진값(수)만큼 우측으로 시프트된다. 게다가, 시프트 연산의 결과로서 비워진 좌측 비트 위치들(고차수 비트들)에는 0들이 삽입된다.
예를 들면, 단계(902)에서 2의 10진값을 갖는 4비트들(0010)의 입력을 가정한다. 단계 906에서, 2진 상수 C=110000000000000이 우측으로 두 지점 시프트되고 최좌측 비트들은 0들로 채워져 001100000000000의 제한 노드(2진) 도메인 크기 값을 초래한다.
단계(908)에서, 이제 제한 노드 형태의 메시지의 크기부(910)(예를 들면, 15 비트들)가 부가의 처리를 위해 출력된다. 출력값은 가산 연산들을 통해 제한 노드 처리에 적합한 변환된 크기 값을 표현한다.
도 8을 재차 참조하면, 합산기(860) 및 가변 지연 엘리먼트(880)에 공급되기 전에 변환된 크기들이 유닛 지연 엘리먼트(851)를 통과하는 것을 알 수 있다.
변환된 에지 메시지 크기들의 합계는 합산기(860)의 지연된 출력에 지연 엘리먼트(851)에 의해 출력된 에지 메시지를 가산하도록 합산기(860)를 사용하여 생성되고 이에 의해 누적된 합계 SUMmag를 생성한다. 누적된 합계 SUMmag는 노드에 대응하는 모든 에지 메시지들이 함께 합산되는 것을 나타내는 노드 클럭 신호의 수신시에 래치(870)에 저장된다. 노드 클럭 신호는 또한 노드에 대응하는 제 1 메시지가 합산기(860)에 공급될 때 "0"을 출력하도록 다중화기(863)를 제어하는데 사용된다. 따라서, 다중화기(860)는 복수의 노드들 각각에 대응하는 메시지들의 처리의 처음에 상기 누적된 합계의 재설정을 허용한다.
지연되는 변환된 에지 메시지 크기들은 지연 라인(880)으로부터 후속해서 나오고, 이들의 값들은 유닛 지연 엘리먼트(891)로 공급되기 전에 가산기(890)에서 저장된 합계(SUMmag)로부터 감산된다. 다음, 역변환이 변환 회로(895)에 의해 지연 엘리먼트(891)로부터 얻어진 지연된 출력 크기에 수행된다.
제한 노드로부터 가변 노드 메시지 표현으로의 변환을 수행하는 이러한 제 2 변환 회로는 한 예시적인 실시예에서 이하와 같이 작동한다. 우선 순위 인코더는 제한 도메인 크기 메시지의 2진 표현으로 최초 1의 위치를 결정한다. 이 위치를 우측으로부터 표현하자. 따라서, v를 제한 도메인 크기를 나타내는 것으로 하고 1(v)를 그의 "위치"를 나타내는 것으로 한다. 일반적으로 v의 10진 정수 값이 2j 내지 2j+1-1의 범위에 있으면, 1(v)=j이다. v가 0이면 1(v)는 0이다. 1(v)가 15 이상이면(4 비트 가변 노드 메시지 크기들의 경우), 출력 크기는 0으로 설정된다. 그렇지 않으면, 출력 크기는 15-1(v)이다.
도 10은 제한 노드 도메인으로부터 가변 노드 도메인 표현으로 메시지 크기 값의 변환을 수반하는 단계(895)에서 수행된 변환 처리(1000)를 도시하는 흐름도이다. 이 지점에서 메시지 크기는 단계들(860 및 891)에서 수행된 메시지 합산 및 감산 연산들에 기인하여 단계(850)의 출력(예를 들면, 메시지가 15 비트들 길이인 경우)에서보다 많은 비트들(예를 들면, 메시지가 20 비트들 길이)을 포함할 수도 있다는 것을 주목하라.
단계(1004)에서, 제한 노드 도메인 형태의 메시지의 크기부(1002)가 수신되고 좌측으로부터의 최초 "1"의 위치가 우측으로부터의 비트 위치들을 계수함으로써 결정된다. 예를 들면, 크기부(1002)가 (00000010000000000100)이면, 좌측으로부터의 최초 1 비트가 우측으로부터 측정된 비트 위치 14에서 발생하는 것을 결정하는데 우선 순위 인코더가 사용된다.
다음, 단계(1006)에서, 결정된 비트 위치는 가변 노드 도메인 형태의 메시지 크기들을 표현하는데 사용된 비트들의 수에 의해 표현될 수 있는 최대값과 비교된다. 예를 들면 4 비트들이 가변 노드 도메인에서 메시지 크기들에 사용되었으면, 최대값은 15이다. 이러한 경우, 결정된 비트 위치가 15보다 크면, 동작은 단계(1008)로 진행된다. 그렇지 않으면, 동작은 단계(1006)로부터 단계(1010)로 진행된다.
단계(1008)에서 가변 노드 도메인 메시지 크기 표현들의 모든 비트들, 예를 들면 4 비트들이 0으로 설정되어 수신된 제한 노드 메시지 크기(1002)의 가변 노드 도메인 형태를 생성한다.
이제, 단계(1010)에서의 처리를 설명한다. 단계(1010)에서, 가변 도메인 형태의 메시지 크기는 가변 노드 도메인 형태의 메시지 크기를 표현하는데 사용된 비트들의 수를 사용하여 표현될 수 있는 최대값으로부터 단계(1006)에서 얻어진 식별된 비트 위치의 수를 감산함으로써 생성된다. 예를 들면 가변 노드 도메인의 4 비트 크기의 표현을 가정하면, 단계(1010)에서 예를 들면 본 예의 경우 단계(1006)로부터의 예컨대 14인 비트 위치가 15로부터 감산되어, (0001)과 같은 2진수로 표현되는 1(15-14=1)의 가변 노드 메시지 크기를 산출한다.
단계(1012)에서, 이제 가변 노드 도메인 크기 형태인 메시지 크기(1014)가 예를 들면 지연 엘리먼트(897)로 출력된다.
*제한 노드 처리기의 몇몇 구현들에서, 제한 도메인 형태보다는 가변 도메인 형태로 지연 라인(880)의 신뢰도들을 저장하는 것이 더 편리할 수 있다. 이는 가변 도메인 형태가 제한 도메인 형태보다 상당히 더 적은 비트들을 필요로 하기 때문에 복잡성을 감소시킬 수 있다. 이 실시예에 대한 도 8을 변경하기 위해, 기능 블록(850)은 지연 라인(880)의 출력에서 복제될 수 있고, 지연 라인으로의 입력은 기능 블록(880) 이후보다는 이전에 취해질 수 있다.
상기 예들에서 5 비트 가변 노드 메시지들(1개의 부호 비트 및 4개의 크기 비트들)을 사용하였지만, 설명된 규칙들은 필요에 따라 단순히 이용 범위를 감소시키거나 증가시키고 상수들을 조정함으로써 더 적거나 더 많은 비트들을 갖는 메시지들에 적용될 수 있다.
또한 몇몇 경우들에 로그 우도비들을 위한 2ln2의 간격은 설명된 예시적인 ln2 간격보다 더 바람직할 수도 있다는 것을 이해할 수 있을 것이다. 이 경우는 통상적으로 더 적은 비트들로 구성된 메시지들과 관련하여 사용될 수 있을 것이다. 이 ln2로부터 2ln2로의 변경은 가변 노드들이 아니라 제한 노드들에서의 상술된 갱신 규칙들을 변경할 것이다. 제한 노드들에서의 변형은 모든 메시지들이 ln2 간격의 경우와 마찬가지이지만 균일한 값을 갖는 크기들이 허용되고, 이 경우 크기의 최종 비트는 항상 0이고, 다양한 실시예들에서는 그렇지 않지만 메시지의 부분으로서 통과될 필요는 없다는 통보를 초래한다.
몇몇 다른 경우들에는 1/2 ln 2의 간격이 바람직할 수도 있다. 도 11 및 도 12는 ln2 간격 실시예에 대해 도 9 및 도 10 각각에 도시된 변환들에 대응하는 1/2 ln 2 간격 실시예들에 대한 정변환 및 역변환 처리들(1100, 1200)을 도시한다. 또한, 갱신 규칙들, 예를 들면 변환 동작들(850, 895)이 가변 노드들이 아니라 제한 노드들에서 변경된다. 크기의 최하위 비트(least significant bit)(주어진 비트 순서에서 이 경우 최우측 비트)가 0일 때 제한 노드 도메인으로의 변환은 최하위 비트, 예를 들면 입력 크기의 5 비트 크기 표현의 제5 비트가 강하되는, 즉 메시지 크기 값이 1만큼 우측으로 시프트되거나 또는 동등하게는 2로 분할되는 것을 제외하고는 ln2 간격의 경우와 같이 진행된다. 최하위 비트가 1일 때 동일한 동작이 수행되지만 변환에 사용된 상수 C는 상이할 것이다. 이 경우, 상수 C는 C와 C/2 사이에 있는 약간 더 작은 값으로 대체될 수 있다. 제한 노드 처리는 처리되는 메시지의 크기부의 잔여 비트들을 사용하여 역변환의 지점까지 이전과 같이 진행된다.
도 11은 1/2 ln 2 간격이 사용되는 경우 제한 노드 도메인 형태로 가변 노드 도메인 형태의 크기 메시지부(1102)를 변환하는 처리(1100)를 도시한다. 단계(1104)에 도시한 바와 같이, LSB, 예를 들면 비트 5가 메시지의 크기부로부터 분할되어 단계(1100)로 공급되고 잔여 비트들, 예를 들면 4개의 고차 비트들이 단계(1106)로 공급된다. 단계(1100)에서, LSB는 변환 처리에서 상수 C에 사용되어야 하는 값 s값을 결정하도록 0과 비교된다. LSB=0이면, 동작은 C가 제 1 값 110000000000000으로 설정되는 단계(1113)로 진행된다. 그러나, LSB=1이면, 동작은 단계(1100)로부터 C가 제 2 값 100001000000000으로 설정되는 단계(1114)로 진행된다. 값 C는 단계(1113 또는 1114)로부터 메시지 크기부(1102)의 예를 들면 4비트들인 잔여 고차 비트들을 또한 수신하는 단계(1106)로 공급된다.
단계(1106)에서 상수 C는 메시지 크기의 잔여 비트들(예를 들면, 4 비트들)의 10진값에 의해 규정되는 지점들의 수만큼 우측으로 시프트되고, 0들이 시프트 동작의 결과로서 비어 있는 좌측 비트 위치들 내로 삽입된다. 다음, 단계(1108)에서 이제 제한 노드 도메인 크기 형태인 메시지 크기(1110)(15 비트들)가 예를 들면 지연 엘리먼트(851)로 출력된다.
1/2 ln 2 경우에서, 예를 들면 제한 노드 도메인 표현에서 가변 노드 도메인 표현으로의 역변환은 출력 메시지의 최하위 비트를 결정하는데 사용되는 ln2 간격 경우에 존재하는 것 이외의 부가의 단계를 수반한다. ln2 간격 규칙을 사용하여 얻어진 값은 메시지에 다른 고차의 비트들을 제공한다.
1/2 ln 2 경우의 최하위 비트의 값을 결정하기 위해, 제한 노드 도메인 크기의 최초 1의 우측으로의 몇몇 비트들이 검사된다. 임계값이 최하위 비트가 0인지 1인지를 결정하는데 사용된다. 하나의 특정 1/2 ln 2 실시예에서, 제한 노드 도메인 값(v)은 임계값(t21 (v))과 비교되고, 여기서 t는 소정의 적절한 미리 결정된 상수이다. v가 t21 (v)보다 크면, LSB는 0으로 설정되고, 그렇지 않으면 1로 설정된다. 동일한 임계값 규칙을 사용하는 다수의 대안적인 구현들이 존재한다는 것을 이해할 수 있을 것이다.
도 12는 제한 노드 도메인의 메시지의 크기부(1202)를 가변 노드 도메인 형태로 변환하는 처리(1200)를 도시한다. 처리는 우측으로부터 측정될 때 좌측으로부터의 최초 "1"의 위치가 결정되는 단계(1204)에서 시작된다. 우선 순위 인코더가 이 동작을 수행하는데 사용될 수도 있다. 다음, 단계(1206)에서 식별된 비트 위치가 가변 노드 도메인의 메시지 크기를 표현하는데 사용되는 LSB를 배제하는 비트들의 수에 의해 표현될 수 있는 최대 수보다 큰 지의 여부에 대한 결정이 수행된다. 예를 들면, 5 비트들이 가변 노드 도메인의 크기를 표현하는데 사용된다고 가정하면, LSB에 대한 5비트들-1=4비트들이 15의 최대 10진값을 허용한다. 이 경우, 단계(1206)에서, 식별된 비트 위치가 최대 수 15를 초과하는지 여부에 대한 결정이 수행된다. 대답이 예이면, 동작은 단계(1208)로 진행된다. 그렇지 않으면, 동작은 단계(1212)로 진행된다.
메시지 크기가 0으로 설정되어야 한다는 결정의 결과에 따라 처리는 단계(1208)로 진행된다. 단계(1208)에서, 가변 노드 도메인 메시지 크기 표현 내의 모든 비트들은 0으로 설정되어 가변 노드 도메인 형태의 메시지 크기(예를 들면, 00000)를 생성한다. 변환이 완료되면, 동작은 단계(1208)에서 단계(1214)로 진행한다.
단계(1208)로의 다른 처리 경로를 나타내는 단계(1210)에서, 식별된 수, 즉 비트 위치의 수는 가변 노드 도메인 형태의 메시지 크기의 비-LSB 비트들의 수에 의해 표현될 수 있는 가장 큰 값으로부터 감산된다. 예를 들면, 가변 노드 도메인 형태의 5 비트 크기 표현을 가정하면, LSB에 부가하여 4개의 비트들이 존재한다. 4개의 비트들에 의해 표현될 수 있는 가장 큰 수는 15이다. 따라서, 이러한 실시예에서, 단계(1210)에서, 식별된 비트 위치의 수는 가변 노드 도메인의 크기 값의 4 고차 비트들을 생성하도록 15로부터 감산될 수 있다.
단계(1212)에서, 예를 들면 5 비트 예시적인 크기 값의 제5 비트인 LSB는 하나 이상의 비트들의 값으로부터 메시지 크기의 제한 노드 도메인 표현(1202)에 크기 값에 존재하는 최좌측 "1"의 우측으로 결정된다.
단계(1214)에서, 이제 가변 노드 형태인 생성된 메시지 크기(1216), 예를 들면 5 비트들이 예를 들면 유닛 지연 엘리먼트(897)로 출력된다.
도 7 및 도 8은 도 13을 참조하여 추가로 설명하는 기본 구조에 대한 하나 및 두 개의 예들을 각각 포함한다. 메시지 갱신들의 주된 계산이 단순한 형태를 갖는다는 것을 상기하라:
Figure pat00027
클럭 사이클 당 하나의 출력 에지 메시지를 생성할 수 있는 효율적인 파이프라인 구조를 갖는 것이 바람직하다. 본 발명의 하드웨어 디자인은 이하의 관측들의 고려에 기인하여 제공되고 이하에 열거된 특징들을 지원한다:
입력 및 출력 데이터 사이에 명백한 의존성이 없어, 파이프라인이 매우 높은 클럭 전송률을 허용하도록 충분히 깊은 것을 허용한다;
파이프라인은 가변 차수의 노드들을 처리하는 동안 그 효율을 유지하는 것이 가능하다;
상기 식의 가산 및 감산은 역을 갖고 연관 법칙(모듈로 가산/감산, 곱셈/나눗셈 등)을 따르는 임의의 연산으로 일반화될 수 있다;
파이프라인은 함수 변환, 포화, 지연 엘리먼트들 등과 같은 부가의 전- 및 후-처리 스테이지들을 포함할 수도 있다.
일반화된 제안 파이프라인 구조를 나타내는 메시지 처리 시스템(1300)은 도 13에 도시된다. 처리 시스템(1300)은 다양한 시스템 부품들을 구동하는데 사용되는 에지 클럭 신호에 의해 결정된 바와 같은 클럭 사이클 당 하나인 입력 메시지들(A)을 순차적으로 수신한다. 이는 또한 노드 클럭 신호 및 노드 차수 신호를 수신한다. 노드 클럭 신호는 노드 프레이밍 신호로서 기능하고, 새로운 노드에 대응하는 메시지가 누산기 모듈(1302)의 메시지 입력부에 공급될 때 단언(assert)된다. 이하에 설명하는 바와 같이, 노드 클럭 신호가 각각의 노드에 대해 생성된 실행 메시지 합계의 초기화 및 총 합계의 래칭을 포함하는 다양한 동작들을 제어하는데 사용된다. 노드 클럭 신호는 처리가 구현되는 노드에 대응하는 예를 들면 메시지들의 수와 같은 차수의 함수로서 생성된다. 노드 차수 신호는 처리가 수행되는 노드의 차수 및 그에 따라 노드에 대응하는 메시지들의 수를 나타낸다. 이하에 설명하는 바와 같이, 노드 차수 신호는 수신된 메시지들을 지연하는데 사용되는 가변 지연 엘리먼트(1306)를 제어하는데 사용된다. 시스템(1300)의 동작을 도 14에 도시된 대응 데이터 흐름을 참조하여 이하에 더욱 설명할 것이다. 단순화를 위해, 임의의 전- 및 후-처리 스테이지들을 생략하고 단순한 가산 및 감산 연산들을 가정한다.
처리 시스템(1300)은 종종 모듈들로 칭하는 두 개의 계산 스테이지들, 즉 누적 모듈(A)(1302) 및 감산 모듈(S)(1304)을 포함한다. 감산 모듈은 출력 메시지들을 생성하기 때문에, 종종 또한 메시지 발생 모듈이라 칭한다. 시스템(1300)은 또한 지연된 메시지들(D)을 출력하는 가변 지연 엘리먼트(1306)를 포함하는 가변 메시지 지연 경로를 포함한다.
누적 모듈(A)(1302)은 입력 메시지들을 순차적으로 수신하고, 노드에 대응하는 메시지들의 각각의 세트에 대해 총 합계를 발생한다. 누적 모듈(1302)은 합산기(1310), 유닛 지연 엘리먼트(1312), 다중화기(1314) 및 노드 합계 래치(1316)를 포함한다. 유닛 지연 엘리먼트(1312)는 합산기(1310)에 의해 생성된 수행 합계(running sum)를 저장하는데 사용된다. 다중화기(1314)는 합산기(1310)의 입력부들 중 하나에 지연 엘리먼트(1312)에 의해 출력된 수행 합계 또는 0을 공급한다. 다중화기는 노드에 대응하는 제 1 메시지가 합산기(1310)의 다른 입력부에 공급될 때 0을 출력하고 다른 모든 시간들에는 수행 합계(B)를 출력하도록 노드 클럭 신호에 의해 제어된다. 이 방식으로, 합산기는 노드에 대한 총 합계를 발생하도록 노드에 대응하는 수신된 메시지들을 가산할 것이다.
노드 클럭 신호는 또한 노드 합계 래치(1316) 내로 수행 합계를 저장하는데 사용된다. 노드 클럭 신호가 단언되고 값이 래치될 때, 수행 합계는 노드에 대한 총 합계를 표현한다.
감산 또는 메시지 발생 모듈(S)(1304)은 가변 지연 엘리먼트(1306)에 의해 지연된 입력 메시지들 및 누적 모듈(1302)에 의해 생성된 총 합계를 입력으로서 수신한다. 스테이지(S)(1304)는 클럭 사이클 당 하나의 메시지와 같이 예를 들면 노드 N과 같은 노드에 대한 출력 메시지를 생성하는 노드 합계 래치(1316)에 저장된 총 합계(C)로부터 지연된 입력 메시지들을 순차적으로 감산한다. 감산 연산의 결과들인, 출력 메시지(E)는 스테이지(A)(1302) 및 스테이지(S)(1304)의 연산에 의한 출력이 완전히 중첩되거나 겹치기 전에 출력 레지스터(1321)에 저장된다. 예를 들면, 스테이지(A)(1302)가 노드 N+1에 대한 처리를 수행하는 동안, 스테이지(S)는 노드 N에 대한 처리를 수행할 수 있다.
지연 엘리먼트(1306)를 포함하는 가변 지연 라인의 목적은 노드 N+1에 대한 입력 메시지들을 저장하면서, 노드 N에 대해 "D"로서 표현되는 지연된 원래 입력 메시지들을 감산 스테이지(S)로 공급하는 것이다. 노드에 대응하는 메시지들에 적용된 지연 엘리먼트(1308)의 처리 클럭 사이클들의 유닛들의 지연은 메시지들이 대응하는 현재의 노드의 차수에 상당한다. 예를 들면, 차수 4의 노드에 대응하는 메시지는 가변 지연 엘리먼트(1306)에 의해 4 클럭 사이클 지연될 수 있고 차수 2의 노드에 대응하는 메시지들은 2 클럭 사이클 지연될 수 있다. 다중 노드 차수들을 지원하기 위해, 일 실시예에서, 가변 지연 엘리먼트(1306)는 지원될 최대 노드 차수만큼 많은 메시지들을 저장하기에 적어도 충분한 저장 공간을 갖도록 구현된다.
가변 지연 엘리먼트(1306) 및 지연된 메시지(D)의 사용은 겹쳐진 파이프라인 동작에 요구되는 중복 판독들을 제거함으로써 메시지 메모리 대역폭을 절약한다. 지연 엘리먼트(1306)를 포함하는 지연 라인은 외부 지연 값 제어(예를 들면 가변 출력 탭과의 시프트 레지스터) 또는 내부 지연 값 제어(예를 들면, 내장형 FIFO)에 의해 실제적으로 구현될 수 있다는 것을 주목하라. 제 1 방법은 지연 제어 논리가 다중 처리 노드들에 걸쳐 공유될 수 있기 때문에 벡터 디코더들에 바람직할 수도 있다.
상술한 파이프라인 구조는 노드 프레이밍 신호를 위해 사용된 노드 클럭 신호의 주파수를 변경하고 지연 엘리먼트(1306)에 의해 부과된 메시지 지연을 제어하는데 사용된 차수 신호를 변화시킴으로써 자유롭게 노드 차수가 변화될 수 있게 한다. 이 제어 신호들을 통해, 파이프라인 깊이가 용이하게 변경될 수 있다. 이 개념에서, 파이프라인 깊이는 제 1 입력 메시지(노드 N에 대한)가 처리를 위해 시스템(1300) 내로 공급된 시간으로부터 제 1 출력 메시지(E)(노드 N에 대한)가 파이프라인 출력에 나타나는 시간까지의 지연으로서 해석될 수도 있다. 가변적인 깊이의 파이프라인은, 반복마다 요구되는 사이클들의 총 수가 차수 범위(최대 및 최소 차수들 사이의 차이)와 그래프 내의 에지들의 수의 합과 동일하기 때문에 불규칙 LDPC 코드들이 지원되는 경우 상당한 성능 장점을 제공할 수 있다.
대조적으로, 고정 파이프라인 설계는 특히 차수 범위가 큰 경우, 에지들의 수보다 현저히 클 수 있는 반복 당 (최대 에지 차수)*(노드들의 수) 사이클들을 필요로 할 수 있다.
도 14는 노드 차수 3으로부터 노드 차수 4로의 전환이 발생하는 경우의 시점에서 시스템(1300) 내에 존재하는 다양한 값들(A 내지 D)의 예를 포함하는 차트(1400)를 도시한다.
도 14는 4개의 노드들, 즉, 노드 1(n1), 노드 2(n2), 노드 3(n3), 및 노드 4(n4)에 대응하는 메시지들과 연관된 처리를 도시한다. 단일 라인을 포함하는 도 14의 차트의 셀들은 n1에 대응한다. 두 개의 라인들을 포함하는 셀들은 n2에 대응한다. 3개의 라인들을 포함하는 셀들은 n3에 대응한다. 게다가, 4개의 라인들을 포함하는 셀들은 n4에 대응한다. 제 1 열(1401)에 도시한 바와 같이, 노드들 n1 및 n2는 차수 3이고, 노드들 n3 및 n4는 차수 4이다. 차트(1400)의 각각의 행은 상이한 클럭 사이클에 대응하고 행들은 지시된 바와 같은 상이한 값들에 대응한다.
제 2 열(1402)은 이들이 수신되는 순서로 클럭 사이클 당 하나에서 수신된 메시지들(A)을 목록화한다. 제 3 열(1404)은 각각의 처리 클럭 사이클 동안의 수행 합계(B)를 열거한다. 열(1404)에서, 노드 지시기, 예를 들면 메시지 n1_e0으로부터의 n1은 간략화를 위해 열(1404)에서 생략되어 있다는 것을 주목하라. 제 4 열(1406)은 메시지 처리의 부분으로서 각각의 노드에 대해 생성된 래치된 총 합계(C)를 열거한다. 제 5 열(1408)은 출력 메시지(E)를 생성하도록 열의 합계(C)로부터 감산된 지연 엘리먼트(1306)에 의해 출력된 지연된 값(D)을 열거한다. 생성된 출력 메시지들은 제 6 열(1410)에 열거된다.
물론, 파이프라인 깊이 변화에 기인하여, 비어 있는 슬롯들이 출력 데이터 스트림에 발생한다. 노드들이 단조로운 순서(증가 또는 감소)로 차수에 의해 분류되면, 반복 당 비어 있는 슬롯들의 총 수는 차수 범위와 동일하고 처리된 메시지들의 수에 비교할 때 매우 작으며, 따라서 매우 높은 파이프라인 이용이 성취된다.
상술한 LDPC 디코딩 방법들 및 노드 처리기 구현들은 LDPC 디코딩이 필드 프로그램 가능 게이트 어레이들 또는 특정 용도 집적 회로와 같은 다양한 하드웨어 플랫폼들 상에서 수행될 수 있게 한다. 본 발명은 단순한 병렬 처리 및 구현이 용이한 노드들이 명백하게 이용될 수 있는 이들 설정들에 특히 유용하다.
본 발명의 디코딩 방법들 및 장치의 다수의 부가의 변형들이 본 발명의 상기 설명의 관점에서 당 기술 분야의 숙련자들에게 명백할 것이다. 이러한 변형들은 본 발명의 범주 내에 있는 것으로 고려된다.

Claims (22)

  1. 메시지 통과 디코딩 처리의 일부로서 노드 처리 동작들을 수행하는 장치로서,
    복수의 노드들에 대응하는 입력 메시지들을 순차적으로 처리하는 누산기 모듈(accumulator module)을 포함하고,
    상기 입력 메시지들의 하나의 세트가 노드마다 수신되고, 노드에 대응하는 메시지들의 세트 내의 메시지들의 수는 상기 노드의 차수(D)(degree)와 같고, 여기서 D는 0이 아닌 양의 정수이며,
    상기 누산기 모듈은,
    노드에 대응하는 메시지들의 세트 내의 각각의 수신된 메시지의 값의 함수로써 총 노드 합계를 발생시키는 합계 회로 ― 수신된 메시지들의 각각의 세트에 대해 하나의 총 노드 합계가 발생됨 ―;
    상기 발생된 총 노드 합계를 저장하는 저장 장치;
    상기 입력 메시지들이 대응하는 상기 노드의 차수에 비례하는 시간 기간에 의해 각각의 총 합계를 발생시키기 위해서, 상기 합계 회로에 의해 처리된 상기 입력 메시지들을 저장하는 제어 가능한 지연 유닛; 및
    노드에 대응하는 상기 총 합계 및 상기 노드에 대응하는 지연된 메시지들로부터 상기 노드에 대응하는 출력 메시지들을 발생시키는 메시지 발생 모듈 ― 상기 메시지 발생 모듈은 노드에 대응하는 각각의 입력 메시지에 대한 하나의 출력 메시지를 발생함 ―을 포함하고,
    상기 노드 처리 동작들은 룩업 테이블들 또는 곱셈 연산들을 사용하지 않고 가산들 및 감산 회로들을 사용하여 수행되는, 노드 처리 동작들 수행 장치.
  2. 제 1 항에 있어서, 상기 메시지 발생 모듈은,
    노드에 대응하는 총 합계로부터 상기 노드에 대응하는 각각의 지연된 메시지 값을 감산하기 위해 상기 저장 장치 및 지연 엘리먼트에 접속되는 감산 회로를 더 포함하는, 노드 처리 동작들 수행 장치.
  3. 제 2 항에 있어서, 상기 제어 가능한 지연 유닛은 상기 제어 가능한 지연 유닛에 의해 수신되는 메시지들에 대응하는 노드의 차수를 나타내는 노드 차수 신호를 수신하기 위한 입력을 포함하는, 노드 처리 동작들 수행 장치.
  4. 제 3 항에 있어서, 상기 제어 가능한 지연 유닛은 선입선출 데이터 저장 장치로서 구현되는, 노드 처리 동작들 수행 장치.
  5. 제 2 항에 있어서, 상기 합계 회로는,
    입력 메시지들을 수신하기 위한 제 1 입력을 포함하는 합산기;
    상기 합산기에 의해 발생된 수행 합계(running sum)를 저장하고 상기 저장된 수행 합계를 출력하기 위해, 상기 합산기 및 상기 저장 장치에 접속된 추가 저장 장치; 및
    상기 추가 저장 장치로부터 상기 저장된 수행 합계를 수신하고, 상기 저장된 수행 합계 및 0 중 하나를 노드 클럭 신호의 제어 하에서 상기 합산기의 제 2 입력으로 출력하기 위해, 상기 추가 저장 장치에 접속되는 다중화기(multiplexer)를 포함하는, 노드 처리 동작들 수행 장치.
  6. 제 5 항에 있어서,
    상기 저장 장치는 상기 노드 클럭 신호를 수신하기 위한 제어 입력을 더 포함하고,
    상기 저장 장치는 상기 노드 클럭 신호의 지시 하에서 상기 총 노드 합계로서 사용될 상기 저장된 수행 합계를 저장하는, 노드 처리 동작들 수행 장치.
  7. 제 6 항에 있어서,
    상기 노드 클록 신호는 상기 다중화기로 하여금 노드에 대응하는 제 1 메시지가 상기 합계 회로에 의해 수신될 때 0을 출력하도록 하는, 노드 처리 동작들 수행 장치.
  8. 제 7 항에 있어서, 상기 노드 클럭 신호는, 상기 다중화기로 하여금 0을 출력하게 하는 것과 동시에 상기 저장 장치가 상기 총 노드 합계로서 상기 수행 합계를 저장하도록 하는, 노드 처리 동작들 수행 장치.
  9. 메시지 통과 디코딩 시스템에서 사용하기 위한 노드 처리기로서,
    노드에 대응하는 수신된 메시지들의 세트로부터 총 메시지 합계를 발생시키는 누산기 모듈;
    저장되는 메시지가 대응하는 노드의 차수에 직접 비례하는 시간 기간 동안 수신된 메시지들의 각각의 세트에 메시지들을 저장하기 위한 가변 지연 엘리먼트를 포함하는 메시지 지연 라인; 및
    상기 누산기 모듈 및 상기 메시지 지연 라인에 접속되는 감산기 모듈을 포함하며,
    상기 감산기 모듈은 감산되는 지연된 메시지들과 동일한 노드에 대응하는 수신된 메시지들의 세트로부터의 상기 누산기 모듈에 의해 발생된 상기 총 메시지 합계로부터 노드에 대응하는 각각의 지연된 메시지를 감산하고,
    상기 메시지 통과 디코딩 시스템은 룩업 테이블 또는 곱셈 연산들을 사용하지 않고 가산 및 감산 모듈들을 사용하는, 노드 처리기.
  10. 제 9 항에 있어서,
    상기 누산기 모듈은 메시지들이 처리되고 있는 노드에 대응하는 누적된 합계를 저장하기 위한 래치를 포함하고,
    상이한 노드들에 대응하는 누적된 합계들이 상기 래치에 순차적으로 저장되는, 노드 처리기.
  11. 제 10 항에 있어서, 상기 노드 처리기는,
    노드에 대응하는 메시지들의 수행 합계를 발생시키기 위한 수단; 및
    상기 래치에 상기 수행 합계를 저장하는데 사용되는 제어 신호에 응답하여 상기 수행 합계를 리셋(reset)하기 위한 수단을 더 포함하고,
    상기 저장된 수행 합계는 누적된 합계인, 노드 처리기.
  12. 제 11 항에 있어서,
    상기 노드 처리기는 가변 노드 처리기이고,
    상기 누산기 모듈은 상기 메시지들의 수행 합계가 상기 래치 내에 저장되기 이전에 상기 메시지들의 수행 합계에 입력값을 가산하기 위한 합산기를 더 포함하는, 노드 처리기.
  13. 제 11 항에 있어서,
    상기 가변 지연 엘리먼트는 복수의 메시지 저장 위치들을 포함하고,
    상기 복수의 메시지 저장 위치들에서의 메시지 저장 위치들의 수는 적어도 처리 동작들이 상기 노드 처리기에 의해 수행될 노드의 최고 차수만큼 큰, 노드 처리기.
  14. 제 13 항에 있어서, 상기 가변 지연 엘리먼트는 상기 가변 지연 엘리먼트에 의해 수신되는 메시지들에 대응하는 노드의 차수를 나타내는 신호를 수신하기 위한 제어 입력을 더 포함하는, 노드 처리기.
  15. 메시지 통과 디코더에서 노드 처리 동작들을 수행하는 방법으로서,
    처리될 메시지들을 순차적으로 수신하는 단계 ― 각각의 메시지는 노드에 대응하고, 동일 노드에 대응하는 메시지들은 메시지들의 세트의 일부이고, 복수의 상이한 노드들에 대응하는 메시지들의 세트들은 시간 기간에 걸쳐 수신됨 ―;
    노드에 대응하는 수신된 메시지들의 각각의 세트로부터 총 메시지 합계를 발생시키는 단계 ― 상기 총 메시지 합계는 상기 총 메시지 합계를 발생시키는데 사용되는 상기 메시지들의 세트와 동일한 노드에 대응함 ―;
    개별 수신된 메시지가 대응하는 노드의 차수에 직접 비례하는 시간 기간 동안 각각의 개별 수신된 메시지를 지연시키는 단계; 및
    출력 메시지를 발생시키기 위해 상기 지연된 메시지와 동일한 노드에 대응하는 상기 총 메시지 합계로부터 각각의 지연 메시지를 감산하는 단계를 포함하고,
    상기 노드 처리 동작들은 룩업 테이블들 또는 곱셈 연산들을 사용하지 않고 가산들 및 감산 회로들을 사용하여 수행되는, 노드 처리 동작들 수행 방법.
  16. 제 15 항에 있어서, 상기 각각의 개별 수신된 메시지를 지연시키는 단계는,
    처리를 위해 수신된 메시지가 대응하는 노드의 차수를 나타내는 제어 신호를 수신하는 단계를 포함하는, 노드 처리 동작들 수행 방법.
  17. 제 16 항에 있어서,
    수신된 메시지들의 각각의 세트에 대한 상기 총 메시지 합계를 발생시키기 위해 수신된 메시지들의 수행 합계에 각각의 수신된 메시지를 가산하는 단계를 더 포함하는, 노드 처리 동작들 수행 방법.
  18. 제 17 항에 있어서,
    메시지들의 세트 내의 최종 메시지가 상기 수행 합계에 가산되면 저장 장치 내로 상기 수행 합계를 래치(latch)하는 단계를 더 포함하고,
    상기 래치된 수행 합계는 상기 총 메시지 합계인, 노드 처리 동작들 수행 방법.
  19. 제 18 항에 있어서,
    상기 저장 장치 내로 상기 수행 합계를 래치하기 전에 상기 수행 합계에 입력값을 가산하는 단계를 더 포함하는, 노드 처리 동작들 수행 방법.
  20. 제 18 항에 있어서, 바로 직전에 수신된 메시지와 상이한 노드에 대응하는 메시지가 수신될 때마다 상기 수행 합계를 0으로 초기화하는 단계를 더 포함하는, 노드 처리 동작들 수행 방법.
  21. 제 18 항에 있어서, 래치 및 초기화는 동일 제어 신호에 의해 제어되는, 노드 처리 동작들 수행 방법.
  22. 제 17 항에 있어서, 발생된 출력 메시지들을 순차적으로 한 번에 하나씩 출력하는 단계를 더 포함하는, 노드 처리 동작들 수행 방법.
KR1020107026785A 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들 KR20110005897A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US32846901P 2001-10-10 2001-10-10
US09/975,331 US6633856B2 (en) 2001-06-15 2001-10-10 Methods and apparatus for decoding LDPC codes
US60/328,469 2001-10-10
US09/975,331 2001-10-10
US10/117,264 2002-04-04
US10/117,264 US6938196B2 (en) 2001-06-15 2002-04-04 Node processors for use in parity check decoders

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020097024971A Division KR101093313B1 (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들

Publications (1)

Publication Number Publication Date
KR20110005897A true KR20110005897A (ko) 2011-01-19

Family

ID=27381960

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020047005278A KR100958234B1 (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들
KR1020097024971A KR101093313B1 (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들
KR1020107026785A KR20110005897A (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020047005278A KR100958234B1 (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들
KR1020097024971A KR101093313B1 (ko) 2001-10-10 2002-10-07 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들

Country Status (9)

Country Link
US (1) US6938196B2 (ko)
EP (2) EP1442527B1 (ko)
JP (5) JP4221503B2 (ko)
KR (3) KR100958234B1 (ko)
AT (1) ATE495581T1 (ko)
DE (1) DE60238934D1 (ko)
ES (1) ES2356767T3 (ko)
TW (1) TW569548B (ko)
WO (1) WO2003032499A1 (ko)

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673223B2 (en) * 2001-06-15 2010-03-02 Qualcomm Incorporated Node processors for use in parity check decoders
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US7587659B2 (en) * 2002-05-31 2009-09-08 Broadcom Corporation Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
US7577207B2 (en) 2002-07-03 2009-08-18 Dtvg Licensing, Inc. Bit labeling for amplitude phase shift constellation used with low density parity check (LDPC) codes
US7020829B2 (en) 2002-07-03 2006-03-28 Hughes Electronics Corporation Method and system for decoding low density parity check (LDPC) codes
EP1525664B9 (en) * 2002-07-03 2015-09-02 Dtvg Licensing, Inc Method and system for memory management in low density parity check (ldpc) decoders
US6829308B2 (en) * 2002-07-03 2004-12-07 Hughes Electronics Corporation Satellite communication system utilizing low density parity check codes
US7266750B1 (en) * 2002-07-10 2007-09-04 Maxtor Corporation Error recovery strategies for iterative decoders
US20040019845A1 (en) * 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7864869B2 (en) * 2002-07-26 2011-01-04 Dtvg Licensing, Inc. Satellite communication system utilizing low density parity check codes
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
JP2004088470A (ja) * 2002-08-27 2004-03-18 Sony Corp 復号装置及び復号方法
KR100502608B1 (ko) * 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
US7139959B2 (en) * 2003-03-24 2006-11-21 Texas Instruments Incorporated Layered low density parity check decoding for digital communications
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
KR100809619B1 (ko) 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7340671B2 (en) * 2003-10-10 2008-03-04 Regents Of The University Of California Decoding low density parity codes
EP1536568A1 (en) * 2003-11-26 2005-06-01 Matsushita Electric Industrial Co., Ltd. Belief propagation decoder cancelling the exchange of unreliable messages
CN1301012C (zh) * 2003-12-03 2007-02-14 北京泰美世纪科技有限公司 一种基于ldpc的成帧方法
KR100744343B1 (ko) * 2003-12-19 2007-07-30 삼성전자주식회사 이동 통신 시스템에서 불균일 오류 확률을 갖는 부호화에따른 데이터 송수신 방법 및 장치
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
US20050193320A1 (en) * 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
CN101924565B (zh) * 2004-04-02 2014-10-15 苹果公司 Ldpc编码器、解码器、系统及方法
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
KR100659266B1 (ko) 2004-04-22 2006-12-20 삼성전자주식회사 다양한 코드율을 지원하는 저밀도 패러티 검사 코드에 의한데이터 송수신 시스템, 장치 및 방법
WO2005112272A1 (en) * 2004-05-14 2005-11-24 University Of Alberta Method and apparatus for digit-serial communications for iterative digital processing algorithms
KR100762619B1 (ko) * 2004-05-21 2007-10-01 삼성전자주식회사 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법
JP4138700B2 (ja) * 2004-05-31 2008-08-27 株式会社東芝 復号装置および復号回路
FR2871965B1 (fr) * 2004-06-17 2006-09-01 Turboconcept Soc Par Actions S Procede et dispositif de decodage de codes correcteurs d'erreurs et systemes les mettant en oeuvre
JP4282558B2 (ja) 2004-06-30 2009-06-24 株式会社東芝 低密度パリティチェック符号復号器及び方法
US7181676B2 (en) * 2004-07-19 2007-02-20 Texas Instruments Incorporated Layered decoding approach for low density parity check (LDPC) codes
US7395490B2 (en) 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7730377B2 (en) * 2004-07-22 2010-06-01 Texas Instruments Incorporated Layered decoding of low density parity check (LDPC) codes
US7127659B2 (en) * 2004-08-02 2006-10-24 Qualcomm Incorporated Memory efficient LDPC decoding methods and apparatus
CN101341659B (zh) 2004-08-13 2012-12-12 Dtvg许可公司 用于多输入多输出通道的低密度奇偶校验码的码设计与实现的改进
WO2006055086A1 (en) * 2004-10-01 2006-05-26 Thomson Licensing A low density parity check (ldpc) decoder
US20060085720A1 (en) * 2004-10-04 2006-04-20 Hau Thien Tran Message passing memory and barrel shifter arrangement in LDPC (Low Density Parity Check) decoder supporting multiple LDPC codes
KR20060032464A (ko) * 2004-10-12 2006-04-17 삼성전자주식회사 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
KR100640399B1 (ko) * 2004-10-27 2006-10-30 삼성전자주식회사 저밀도 패리티 검사 채널 부호의 천공 방법
US7617432B2 (en) * 2004-11-10 2009-11-10 Qualcomm Incorporated Hierarchical design and layout optimizations for high throughput parallel LDPC decoders
KR100703271B1 (ko) * 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US7752520B2 (en) 2004-11-24 2010-07-06 Intel Corporation Apparatus and method capable of a unified quasi-cyclic low-density parity-check structure for variable code rates and sizes
DE102004059331B4 (de) * 2004-12-09 2021-02-18 Robert Bosch Gmbh Handwerkzeugmaschine mit einer Kupplung
US7441178B2 (en) * 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
US7475103B2 (en) 2005-03-17 2009-01-06 Qualcomm Incorporated Efficient check node message transform approximation for LDPC decoder
KR101390544B1 (ko) * 2005-05-13 2014-04-30 닛본 덴끼 가부시끼가이샤 Ldpc 부호화 방식에 의한 인코더 및 디코더
KR101157246B1 (ko) * 2005-05-16 2012-06-15 삼성전자주식회사 저밀도 패리티 검사 부호의 패딩 및 천공 방법
JP4293172B2 (ja) * 2005-09-13 2009-07-08 ソニー株式会社 復号装置および復号方法
JP4819470B2 (ja) * 2005-10-11 2011-11-24 三星電子株式会社 復号装置および復号方法
US7757149B2 (en) * 2005-10-12 2010-07-13 Weizhuang Xin Broadcast message passing decoding of low density parity check codes
US20070089019A1 (en) * 2005-10-18 2007-04-19 Nokia Corporation Error correction decoder, method and computer program product for block serial pipelined layered decoding of structured low-density parity-check (LDPC) codes, including calculating check-to-variable messages
US20070089016A1 (en) * 2005-10-18 2007-04-19 Nokia Corporation Block serial pipelined layered decoding architecture for structured low-density parity-check (LDPC) codes
US7818649B1 (en) * 2005-11-30 2010-10-19 Aquantia Corporation Efficient message passing scheme of iterative error correcting decoders
US8122315B2 (en) * 2005-12-01 2012-02-21 Electronics And Telecommunications Research Institute LDPC decoding apparatus and method using type-classified index
US8819518B2 (en) * 2005-12-01 2014-08-26 Thomson Licensing Apparatus and method for decoding low density parity check coded signals
US7661055B2 (en) * 2005-12-05 2010-02-09 Broadcom Corporation Partial-parallel implementation of LDPC (Low Density Parity Check) decoders
JP4807063B2 (ja) * 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
US7530002B2 (en) * 2006-01-03 2009-05-05 Broadcom Corporation Sub-matrix-based implementation of LDPC (Low Density Parity Check) decoder
GB2434946B (en) * 2006-02-01 2008-07-23 Toshiba Res Europ Ltd Wireless communications apparatus
JPWO2007108396A1 (ja) * 2006-03-17 2009-08-06 三菱電機株式会社 通信装置、復号装置、情報伝送方法および復号方法
US7941737B2 (en) * 2006-04-19 2011-05-10 Tata Consultancy Services Limited Low density parity check code decoder
JP4662278B2 (ja) 2006-04-28 2011-03-30 富士通株式会社 エラー訂正装置、符号器、復号器、方法及び情報記憶装置
US7793201B1 (en) 2006-05-11 2010-09-07 Seagate Technology Llc Bit error detector for iterative ECC decoder
TWI318507B (en) * 2006-05-19 2009-12-11 Univ Nat Chiao Tung Method and apparatus for self-compensation on belief-propagation algorithm
JP4253332B2 (ja) 2006-07-03 2009-04-08 株式会社東芝 復号装置、方法およびプログラム
US20080109698A1 (en) * 2006-07-25 2008-05-08 Legend Silicon Hybrid min-sum decoding apparatus with low bit resolution for ldpc code
US20080052594A1 (en) * 2006-07-28 2008-02-28 Yedidia Jonathan S Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes
CA2664918C (en) * 2006-10-26 2014-06-03 Qualcomm Incorporated Coding schemes for wireless communication transmissions
US8892979B2 (en) 2006-10-26 2014-11-18 Qualcomm Incorporated Coding schemes for wireless communication transmissions
GB0624572D0 (en) * 2006-12-08 2007-01-17 Cambridge Silicon Radio Ltd Data Proccessing in Signal Transmissions
KR100976886B1 (ko) 2006-12-22 2010-08-18 크로스텍 캐피탈, 엘엘씨 부동 베이스 판독 개념을 갖는 cmos 이미지 센서
KR20080068218A (ko) * 2007-01-18 2008-07-23 삼성전자주식회사 통신 시스템에서 데이터 수신 방법 및 장치
US20100122143A1 (en) * 2007-03-27 2010-05-13 Hughes Network Systems, Llc Method and system for providing low density parity check (ldpc) coding for scrambled coded multiple access (scma)
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
US8682982B2 (en) 2007-06-19 2014-03-25 The Invention Science Fund I, Llc Preliminary destination-dependent evaluation of message content
US8984133B2 (en) 2007-06-19 2015-03-17 The Invention Science Fund I, Llc Providing treatment-indicative feedback dependent on putative content treatment
US9374242B2 (en) 2007-11-08 2016-06-21 Invention Science Fund I, Llc Using evaluations of tentative message content
TW200906073A (en) * 2007-07-31 2009-02-01 Univ Nat Chiao Tung Calculation method applied to Low Density Parity check Code (LDPC) decoder and circuit thereof
US8065404B2 (en) 2007-08-31 2011-11-22 The Invention Science Fund I, Llc Layering destination-dependent content handling guidance
US8082225B2 (en) 2007-08-31 2011-12-20 The Invention Science Fund I, Llc Using destination-dependent criteria to guide data transmission decisions
US20090100313A1 (en) * 2007-10-11 2009-04-16 The Royal Institution For The Advancement Of Learning/Mcgill University Methods and apparatuses of mathematical processing
US7930389B2 (en) 2007-11-20 2011-04-19 The Invention Science Fund I, Llc Adaptive filtering of annotated messages or the like
TWI410055B (zh) * 2007-11-26 2013-09-21 Sony Corp Data processing device, data processing method and program product for performing data processing method on computer
TWI390856B (zh) * 2007-11-26 2013-03-21 Sony Corp Data processing device and data processing method
TW200926612A (en) * 2007-12-07 2009-06-16 Univ Nat Chiao Tung Multi-mode parallelism data exchange method and its device
JP4650485B2 (ja) * 2007-12-20 2011-03-16 住友電気工業株式会社 復号装置
US8266493B1 (en) * 2008-01-09 2012-09-11 L-3 Communications, Corp. Low-density parity check decoding using combined check node and variable node
US8255758B2 (en) * 2008-01-21 2012-08-28 Apple Inc. Decoding of error correction code using partial bit inversion
JP4572937B2 (ja) * 2008-01-23 2010-11-04 ソニー株式会社 復号装置および方法、プログラム、並びに記録媒体
KR101503058B1 (ko) * 2008-02-26 2015-03-18 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서의 채널 부호화/복호화 방법 및 장치
US8327242B1 (en) 2008-04-10 2012-12-04 Apple Inc. High-performance ECC decoder
US8166364B2 (en) * 2008-08-04 2012-04-24 Seagate Technology Llc Low density parity check decoder using multiple variable node degree distribution codes
US8301979B2 (en) * 2008-10-07 2012-10-30 Sandisk Il Ltd. Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders
TW201037529A (en) * 2009-03-02 2010-10-16 David Reynolds Belief propagation processor
US8458114B2 (en) * 2009-03-02 2013-06-04 Analog Devices, Inc. Analog computation using numerical representations with uncertainty
US8429498B1 (en) 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
TWI427936B (zh) * 2009-05-29 2014-02-21 Sony Corp 接收設備,接收方法,程式,及接收系統
US8453038B2 (en) * 2009-06-30 2013-05-28 Apple Inc. Chien search using multiple basis representation
US8601352B1 (en) * 2009-07-30 2013-12-03 Apple Inc. Efficient LDPC codes
US8566668B1 (en) 2010-01-04 2013-10-22 Viasat, Inc. Edge memory architecture for LDPC decoder
US8832534B1 (en) * 2010-01-04 2014-09-09 Viasat, Inc. LDPC decoder architecture
WO2011085355A1 (en) 2010-01-11 2011-07-14 David Reynolds Belief propagation processor
US8650464B1 (en) * 2010-09-07 2014-02-11 Applied Micro Circuits Corporation Symmetric diagonal interleaving and encoding/decoding circuit and method
US8879640B2 (en) 2011-02-15 2014-11-04 Hong Kong Applied Science and Technology Research Institute Company Limited Memory efficient implementation of LDPC decoder
JP5991580B2 (ja) * 2012-08-01 2016-09-14 Necエンジニアリング株式会社 ターボ復号器、それに用いられる対数尤度比演算装置、ターボ復号方法、対数尤度比演算方法、ターボ復号プログラム及び対数尤度比演算プログラム
US9612903B2 (en) * 2012-10-11 2017-04-04 Micron Technology, Inc. Updating reliability data with a variable node and check nodes
US9191256B2 (en) * 2012-12-03 2015-11-17 Digital PowerRadio, LLC Systems and methods for advanced iterative decoding and channel estimation of concatenated coding systems
US9094132B1 (en) 2013-01-23 2015-07-28 Viasat, Inc. High data rate optical transport network using 8-PSK
US8930789B1 (en) * 2013-01-23 2015-01-06 Viasat, Inc. High-speed LDPC decoder
KR102241416B1 (ko) 2013-09-16 2021-04-16 삼성전자주식회사 디지털 비디오 방송 시스템에서 LDPC(Low Density Parity Check) 복호기 및 LDPC 복호기의 복호화 방법
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
US9276610B2 (en) 2014-01-27 2016-03-01 Tensorcom, Inc. Method and apparatus of a fully-pipelined layered LDPC decoder
US9391817B2 (en) 2014-03-24 2016-07-12 Tensorcom, Inc. Method and apparatus of an architecture to switch equalization based on signal delay spread
CN103916134B (zh) * 2014-03-24 2017-01-11 清华大学 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器
US10084481B2 (en) 2014-12-18 2018-09-25 Apple Inc. GLDPC soft decoding with hard decision inputs
KR101813132B1 (ko) * 2015-10-13 2017-12-28 후아웨이 테크놀러지 컴퍼니 리미티드 디코딩 장치 및 방법과 신호 전송 시스템
KR102504550B1 (ko) * 2015-12-28 2023-02-28 삼성전자주식회사 저밀도 패리티 검사 코드를 지원하는 통신 시스템에서 신호를 수신하는 장치 및 방법
US10848182B2 (en) 2018-09-13 2020-11-24 Apple Inc. Iterative decoding with early termination criterion that permits errors in redundancy part
WO2020245877A1 (ja) * 2019-06-03 2020-12-10 日本電気株式会社 量子アニーリング計算装置、量子アニーリング計算方法および量子アニーリング計算プログラム
KR20210033258A (ko) 2019-09-18 2021-03-26 삼성전자주식회사 시퀀스 처리 방법 및 장치

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3542756A (en) * 1968-02-07 1970-11-24 Codex Corp Error correcting
US3665396A (en) * 1968-10-11 1972-05-23 Codex Corp Sequential decoding
US4295218A (en) * 1979-06-25 1981-10-13 Regents Of The University Of California Error-correcting coding system
US5293489A (en) * 1985-01-24 1994-03-08 Nec Corporation Circuit arrangement capable of centralizing control of a switching network
US5271042A (en) * 1989-10-13 1993-12-14 Motorola, Inc. Soft decision decoding with channel equalization
US5157671A (en) * 1990-05-29 1992-10-20 Space Systems/Loral, Inc. Semi-systolic architecture for decoding error-correcting codes
JPH04152455A (ja) * 1990-10-16 1992-05-26 Nec Corp データ探索方法およびその装置
US5337002A (en) * 1991-03-01 1994-08-09 Mercer John E Locator device for continuously locating a dipole magnetic field transmitter and its method of operation
US5313609A (en) * 1991-05-23 1994-05-17 International Business Machines Corporation Optimum write-back strategy for directory-based cache coherence protocols
US5396518A (en) * 1993-05-05 1995-03-07 Gi Corporation Apparatus and method for communicating digital data using trellis coding with punctured convolutional codes
US5457704A (en) * 1993-05-21 1995-10-10 At&T Ipm Corp. Post processing method and apparatus for symbol reliability generation
US5526501A (en) * 1993-08-12 1996-06-11 Hughes Aircraft Company Variable accuracy indirect addressing scheme for SIMD multi-processors and apparatus implementing same
US5615298A (en) * 1994-03-14 1997-03-25 Lucent Technologies Inc. Excitation signal synthesis during frame erasure or packet loss
US5860085A (en) * 1994-08-01 1999-01-12 Cypress Semiconductor Corporation Instruction set for a content addressable memory array with read/write circuits and an interface register logic block
US5671221A (en) * 1995-06-14 1997-09-23 Sharp Microelectronics Technology, Inc. Receiving method and apparatus for use in a spread-spectrum communication system
US5867538A (en) * 1995-08-15 1999-02-02 Hughes Electronics Corporation Computational simplified detection of digitally modulated radio signals providing a detection of probability for each symbol
US5968198A (en) * 1996-08-16 1999-10-19 Ericsson, Inc. Decoder utilizing soft information output to minimize error rates
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US6438180B1 (en) * 1997-05-09 2002-08-20 Carnegie Mellon University Soft and hard sequence detection in ISI memory channels
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US5933650A (en) * 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6195777B1 (en) * 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6073250A (en) * 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6339834B1 (en) * 1998-05-28 2002-01-15 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry Through The Communication Research Centre Interleaving with golden section increments
US6247158B1 (en) * 1998-11-30 2001-06-12 Itt Manufacturing Enterprises, Inc. Digital broadcasting system and method
US6397240B1 (en) * 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system
FR2799592B1 (fr) 1999-10-12 2003-09-26 Thomson Csf Procede de construction et de codage simple et systematique de codes ldpc
US6473010B1 (en) * 2000-04-04 2002-10-29 Marvell International, Ltd. Method and apparatus for determining error correction code failure rate for iterative decoding algorithms
US6539367B1 (en) * 2000-05-26 2003-03-25 Agere Systems Inc. Methods and apparatus for decoding of general codes on probability dependency graphs
US20020002695A1 (en) * 2000-06-02 2002-01-03 Frank Kschischang Method and system for decoding
JP2001352257A (ja) * 2000-06-08 2001-12-21 Sony Corp 復号装置及び復号方法
JP4389373B2 (ja) * 2000-10-11 2009-12-24 ソニー株式会社 2元巡回符号を反復型復号するための復号器
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US6731700B1 (en) * 2001-01-04 2004-05-04 Comsys Communication & Signal Processing Ltd. Soft decision output generator
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6842872B2 (en) * 2001-10-01 2005-01-11 Mitsubishi Electric Research Laboratories, Inc. Evaluating and optimizing error-correcting codes using projective analysis
US6718504B1 (en) * 2002-06-05 2004-04-06 Arc International Method and apparatus for implementing a data processor adapted for turbo decoding
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications

Also Published As

Publication number Publication date
JP4221503B2 (ja) 2009-02-12
US6938196B2 (en) 2005-08-30
KR20040049864A (ko) 2004-06-12
TW569548B (en) 2004-01-01
EP1442527A1 (en) 2004-08-04
KR20100005231A (ko) 2010-01-14
JP5579798B2 (ja) 2014-08-27
US20030023917A1 (en) 2003-01-30
EP1442527B1 (en) 2011-01-12
KR101093313B1 (ko) 2011-12-14
EP2302803A1 (en) 2011-03-30
DE60238934D1 (de) 2011-02-24
JP2005506733A (ja) 2005-03-03
KR100958234B1 (ko) 2010-05-17
ATE495581T1 (de) 2011-01-15
EP1442527A4 (en) 2008-06-04
JP2009010970A (ja) 2009-01-15
ES2356767T3 (es) 2011-04-13
JP2012257287A (ja) 2012-12-27
JP2015216645A (ja) 2015-12-03
JP2014180034A (ja) 2014-09-25
WO2003032499A1 (en) 2003-04-17

Similar Documents

Publication Publication Date Title
KR101093313B1 (ko) 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들
US7673223B2 (en) Node processors for use in parity check decoders
JP2005506733A5 (ko)
US7676734B2 (en) Decoding apparatus and method and information processing apparatus and method
US7603607B2 (en) Decoding unit and preprocessing unit implemented according to low density parity check code system
JP4320418B2 (ja) 復号装置および受信装置
US8880973B1 (en) Detector-decoder interface for GF(q) iterative decoding
KR20080099191A (ko) 동작 파라미터 적응형 ldpc 디코더
CN110771047B (zh) 具有f功能和g功能的llr域计算的极性解码器
JP2006508577A (ja) ランニングミニマム・メッセージパッシングldpc復号化
JP2014099944A (ja) ハードウェア共用および直列和積アーキテクチャを用いる低密度パリティ検査復号の方法および装置
JP5333233B2 (ja) 復号装置、データ蓄積装置、データ通信システム、および復号方法
US20170134048A1 (en) Message-passing based decoding using syndrome information, and related methods
US11476870B2 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes
Song et al. A novel iterative reliability-based majority-logic decoder for NB-LDPC codes
JP2011217138A (ja) 符号化装置、および符号化方法
US20210250047A1 (en) Check node processing methods and devices with insertion sort
CN114268325A (zh) 使用索引消息进行ldpc解码的方法和设备
KR101268060B1 (ko) 결합 상태-체크 코드를 이용한 부호화 방법 및 복호화 방법

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
WITB Written withdrawal of application