KR20090072972A - 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치 - Google Patents

저밀도 패리티 체크 코드를 복호화하는 방법 및 장치 Download PDF

Info

Publication number
KR20090072972A
KR20090072972A KR1020080130072A KR20080130072A KR20090072972A KR 20090072972 A KR20090072972 A KR 20090072972A KR 1020080130072 A KR1020080130072 A KR 1020080130072A KR 20080130072 A KR20080130072 A KR 20080130072A KR 20090072972 A KR20090072972 A KR 20090072972A
Authority
KR
South Korea
Prior art keywords
message
node
variable node
variable
check
Prior art date
Application number
KR1020080130072A
Other languages
English (en)
Inventor
박범진
루콩총
왕단
웨이리준
박성진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20090072972A publication Critical patent/KR20090072972A/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
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • 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
    • 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/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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/6522Intended application, e.g. transmission or communication standard
    • H03M13/6544IEEE 802.16 (WIMAX and broadband wireless access)
    • 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/1165QC-LDPC codes as defined for the digital video broadcasting [DVB] specifications, e.g. DVB-Satellite [DVB-S2]

Landscapes

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

Abstract

본 발명은 디지털 통신 시스템용 부호화 및 복호화 기술에 관한 것으로서, 특히 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치에 관한 것이다.
이를 달성하기 위해, LDPC(저밀도 패리티 체크)를 복호화하는 장치가, 가변 노드 메시지 벡터를 저장하는 가변 노드 메시지 메모리; 노드 연산 수단으로 하여금 상기 가변 노드 메시지 메모리에 기입하고/상기 가변 노드 메시지 메모리로부터 판독하도록 제어하고 장치의 반복 과정을 제어하는 제어기; 및 체크 노드 메시지와 가변 노드 메시지를 갱신하고 판정 메시지를 계산하는 노드 연산 수단을 포함하며, 상기 노드 연산 수단은, 상기 노드 메시지 벡터에 따라 체크 노드 메시지 계산 수단에서 사용할 상기 노드 메시지를 계산하는 가변 노드 메시지 생성 수단; 상기 체크 노드 메시지를 갱신하는 체크 노드 메시지 계산 수단; 대응하는 가변 노드 메시지를 갱신하는 가변 노드 메시지 갱신 수단; 및 대응하는 가변 노드에 대한 경판정 메시지를 계산하는 경판정 계산 수단과; 패리티 비트를 계산하고 결과를 상기 복호화 종료 제어기에 출력하는 패리티 체크 수단을 포함하는 것을 특징으로 하는 한다. 따라서 본 발명에 따르면, 체크 노드들에 대한 복호화 복잡도가 감소될 뿐만 아니라 반복 횟수가 또한 감소되며, 더욱이, 성능 요건이 잘 충족된다.
Figure P1020080130072
가변노드 메시지, 체크노드 메시지, 노드제어 신호

Description

저밀도 패리티 체크 코드를 복호화하는 방법 및 장치{METHOD AND DEVICE FOR DECODING LOW DENSITY PARITY CHECK CODE}
본 발명은 디지털 통신 시스템용 부호화 및 복호화 기술에 관한 것으로서, 특히 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치에 관한 것이다.
통신 시스템에서, 채널 부호화 기술은 잡음이 있는 채널에서 신뢰성 있는 통신을 보증함에 있어서 중요하다. 현재에, 터보 코딩, 저밀도 패리티 체크 코딩과 같은 최신 부호화 기법이 순방향 오류 정정을 위한 일부의 통신 표준에서 적용되었다. 표준 IEEE 802.16e 모바일 와이맥스(mobile worldwide interoperability for microwave access; mobile WiMAX)에서, 터보 코드와 LDPC 코드는 FEC(포워드 에러 정정) 코드로서 동시에 사용되고 있다. 또한, LDPC 코딩은 칭화 대학교에 의해 제안된 디지털 지상파 TV 방송(DVB-T)과 위성 디지털 텔레비젼 방송(DVB-S2), 및 티미 코포레이션(TiMi corporation)에 의해 제안된 CMMB(China Mobile Multimedia Broadcasting) 시스템과 같은 시스템에서 채널 코딩으로서 채택된다.
LDPC 코드가 우수한 오류 정정 성능을 가지며 복호화 복잡도가 덜 하기 때문에, LDPC 코드가 터보 코드보다 효율적이다. 하지만, LDPC 복호화 과정을 설계할 때에 일부 인자들을 상세히 고려하는 것이 필요하다. 우선, 복호기를 위한 병렬 스테이지를 특정하는 것이 필요하다. 블록-레벨 병렬 구조와 서브-블록-레벨 병렬 구조는 구현 복잡도와 복호기의 처리량 간에서 양호한 트레이드오프에 도달함에 있어서 공통적으로 사용된다. 다음으로, 반복적인 복호화 동안에 메시지 저장을 위한 방식을 고려하는 것이 필요하다. 종래의 신뢰도 확산(BP) 알고리즘에서(문헌 1 참조: 2001년 IEEE Trans. Inf. Theory, 47(2) page 498~519, F.R. Kschischang and B.J. Frey and H.A. Loeliger의 Factor graphs and the sum-product algorithm), 현재의 반복 메시지들은 이전의 반복 결과를 이용한다. 따라서, 모든 반복 메시지들은 저장될 필요가 있다.
하지만, 가변 노드 메시지 벡터(VN_M [3]) 기반 BP 알고리즘과 중앙 체크 노드(CN_C) 기반 BP 알고리즘에서, 메시지는 트리거 스케쥴로 갱신된다. 이전의 반복결과를 저장하는 것은 필요하지 않다. 따라서, 이러한 알고리즘에서 소수의 메시지 메모리가 배치된다. 또한, 복호화에 필요한 반복 횟수는 LDPC 복호기의 중요한 특성이다. 종래기술 BP 알고리즘에서, 복호화에 필요한 반복 횟수는 성능 요건에 따라 일반적으로 30 내지 50의 범위이다. 언급한 것과 동일한 성능을 획득할 목적으로, CN_C BP 알고리즘에서 복호화에 필요한 반복 횟수는 대략적으로 종래기술의 BP 알고리즘에서 반복 횟수의 절반이다. 마지막으로, 설계자가 체크 노드에 대한 복호화 복잡도를 가능한 많이 감소하는 것이 필요하다.
병렬 복호화를 구현하기 위해, LDPC 코드를 위한 체크 행렬은 특수 구조를 갖는다. 와이맥스 시스템과 DVB-T 시스템 모두는 순환 행렬에 기초한 준순환 LDPC 코드를 채택하였다. 또한 DVB-S2 시스템과 CMMB 시스템에서, LDPC 코드가 적용된 구조는 더욱 확률적이다. 이 코드는 기본 행렬과 일정한 확장가능 규칙들에 기반하여 구성된다. 이는 잠재적으로 병렬 속성을 갖는다. 복호기에 대한 병렬 브랜치의 개수 및 메시지 저장과 갱신 방식은 LDPC 코드를 위한 체크 행렬의 구조와 시스템 처리량에 따라 결정된다.
하기에서, 종래기술 BP 알고리즘과 CN_C BP 알고리즘에 대해 간단히 소개한다. BP 알고리즘에 관한 정보에 대해 도 1에서 2개 섹션의 도면으로 도시된다. 2개의 섹션의 도면은 2개의 세트의 노드들을 포함하며, 그 하나는 (101)에 도시된 코드 워드 비트와 대응하는 가변 노드 세트이고, 다른 하나는 (102)에 도시된 제약 관계와 대응하는 체크 노드 세트이다.
M(n)(0≤n≤N-1)(예를 들어, (103)에서 M(3)={1,2})는 가변 노드(n)와 연결된 체크 노드의 세트이고, N(m)(0≤m≤M-1)(예를 들어, (104)에서 N(3)={4,5,6,7})은 m번째 체크 방정식에서 동작하는 가변 노드 세트이다. M(n)\m은 m개의 요소들이 제거된 M(n)의 나머지 요소들의 세트이고, 마찬가지로, N(m)\n은 n개의 요소들이 제거된 N(m)의 나머지 요소들의 세트이다. 이에 부가하여, qn→m(0)(qn→m(1))은 조건부 확률이며, 가변 노드(n)로부터 체크 노드(m)로 송신된 정보는 가변 노드(n)가 세트 M(n)\m에 기초하여 0 (또는 1)이 됨을 표시한다. 마찬가지로, rm→n (0)(rm→n(1))은 조건부 확률이며, 체크 노드(m)로부터 가변 노드(n)로 송신된 정보는 가변 노드(n)가 세트 N(m)\n에 기초하여 0 (또는 1)이 됨을 표시한다. 마지 막으로, x = (x0, x1, ..., xN-1)과 y = (y0, y1, ..., yN-1) 각각은 송신 벡터와 수신 벡터이다.
확률 도메인에서, BP 복호화 알고리즘의 입력들은 후시적 확률(APP), 즉 qn→m(0) = Px/y(x = 0|yn) 및 qn→m(1) = Px/y(x = 1|yn)이며, 이들은 채널 통계 특성에 따라 계산된다. 이에 부가하여, 대수 근사화 확률비(Log Likelihood Ratio: LLR)는 LLRs zn→m(xn)≡log(qn→m(0)/qn→m(1))(가변 메시지(105), 즉 V_M) 및 Lm→n(xn)≡log(rm→n(0)/rm→n(1))(체크 메시지(106))로 정의된다.
종래기술 BP 알고리즘
쌍곡탄젠트 규칙에 의하면, 종래기술 BP 알고리즘은 하기와 같이 설명된다.
초기화에서 각 가변 노드(n)는 후시적 확률 L(xn|yn)=log(P(xn = 0|yn)/P(x = 1|yn))(이는 채널 정보 Ch_M 를 가리킴)을 갖는 것으로 가정한다. 여기서, zn →m(xn)=L(xn|yn), m ∈ M(n).
메시지 갱신단계를 하기와 같다.
단계 1: (체크 노드 갱신): 각 체크 노드 m 과 n ∈ N(m)에 대해, <수학식 1>을 계산한다.
<수학식 1>
Lm→n (xn) = 〔∏n'∈ N(m)\n sign(zn'→m(xn)) 〕× 2tanh-1 〔∏n'∈ N(m)\n tanh( |zn'→m(xn)|/2)〕
단계 2: (가변 노드 갱신): 각 변수 노드 n에 대해, <수학식 2>와 <수학식 3>을 계산한다.
<수학식 2>
각 m ∈ M(n)에 대해, zn' →m(xn) = L(xn|yn) + ∑m' ∈ M(n)\m Lm' →n (xn)
<수학식 3>
zn(xn) = L(xn|yn) + ∑m∈M(n) Lm→n (xn)
복호화에서 판정 과정을 하기와 같다.
Z(xn)≥0인 경우, x^n=0 이다. Z(xn)< 0인 경우, x^n=1 이다. 따라서, 벡터 x^ = (x^0,x^1,...,x^N-1)가 획득된다. x^HT = 0인 경우, 복호화 과정이 중지되며, 그렇지 않으면 단계 1이 반복된다. 복호화의 반복 횟수가 소정의 최대값 itmax에 도달하였지만, x^HT = 0 을 만족하지 않은 경우, 복호화가 실패하였음을 표시한다.
현재 반복 과정 동안에 각 노드로부터의 출력 메시지를 계산하기 위해, 이전의 반복 결과들 zn →m 및 Lm →n은 <수학식 1> 및 <수학식 2>을 통해 획득되어야 한다. 이전의 반복 결과들을 저장하기 위해, LDPC 복호기에서 (2dv + 1)BN 비트(여기서, dv는 노드의 평균 차수를 표시하며, B는 메시지를 위한 비트 개수를 표시함)의 메모 리가 필요하다.
CN _C BP 알고리즘
CN_C BP 알고리즘에서, 계산은 체크 노드들에 초점을 두어 수행된다. 체크 노드 메시지들은 차례로 갱신되며, 대응하는 가변 노드 메시지들 V_M은 체크 노드 메시지가 갱신된 직후에 갱신된다. 주목할 사항으로서, 가변 노드 메시지들이 체크 노드 메시지들의 갱신 직후에 갱신되기 때문에, 이미 갱신된 가변 노드 메시지는 (동일한 반복 동안에) 후속 체크 노드 메시지의 갱신에 사용되며, 즉, 신뢰성이 높은 가변 노드 메시지들이 반복에서 적용되어 메시지 집중을 신속하게 하고 복호화를 위한 반복 회수를 감소시킨다. CN_C BP 복호화 알고리즘은 하기와 같이 설명된다.
초기화에서 각 V_M은 채널 메시지 Ch_M와 대응하며, 모든 체크 노드 메시지가 0인 것으로 가정한다.
메시지 갱신 단계는 하기와 같다.
단계 1: m = 0 이 된다.
단계 2: <수학식 1>을 사용하여, 각 n ∈에 대해 체크 노드 메시지 Lm →n(xn)를 계산한다.
단계 3: <수학식 2>를 사용하여, 각 n ∈ M(m)과 j ∈ N(n)에 대해 가변 노드 메시지 zn →j(xn)를 갱신하고, zn(xn)을 계산한다.
단계 4: m++, m = M-1인 경우, 일 반복 과정이 완료되며, 만일 m < M-1 인 경우, 단계 2로 진행한다.
복호화에서 판정 과정은 하기와 같다.
Z(xn)≥0인 경우, x^n=0 이다. Z(xn)< 0인 경우, x^n=1 이다. 따라서, 벡터 x^ = (x^0,x^1,...,x^N-1)가 획득된다. x^HT = 0인 경우, 복호화 과정이 중지되며, 그렇지 않으면 단계 1이 반복된다. 복호화의 반복 횟수가 소정의 최대값 itmax에 도달하였지만, x^HT = 0 을 만족하지 않는 경우, 복호화가 실패되었음을 표시한다.
가변 노드 메시지 벡터
LDPC 복호화를 위한 메모리를 더욱 감소시키기 위해, 가변 노드 메시지 벡터가 도 2에 도시된 같이 가변 노드 메시지 저장 및 갱신을 위해 제안된다. 제 1 비트(201)는 가변 노드의 경판정 비트(hard decision bit)와 대응한다. 후속 Ch_M (202)(B 비트)는 가변 노드의 채널 메시지와 대응한다. VM_E (204)는 가변 노드의 외부 메시지(V_M)와 가변 노드 표시(VN_F (203))를 나타낸다. VM_E는 메시지들을 갱신하여 저장하도록 채택되며, VN_F는 반복 복호화 과정을 제어하도록 채택된다.
VN_M에서, i번째 체크 노드(i=0,1,...,dv-1)에 송신된 가변 노드 메시지는 하기 <수학식 4>와 같다.
<수학식 4>
V_M(i) = VM_E(i) + Ch_M
가변 노드와 대응하는 경판정 메시지(D_M)는 수학식 (5)에 의해 계산된다.
<수학식 5>
D_M = Ch_M + (∑i∈{0,1 ...,dv-1} VM_E(i))/(dv-1)
dv개의 체크 노드(c0,c1,...,cdv-1)와 관련된 가변 노드(v)의 경우에, 반복(it) 동안에 체크 노드에 송신된 메시지들은 C_M (it,0), C_M(it,1),...,C_M(it, dv-1)로서 정의되고, 가변 노드 외부 메시지들은 VM_E(it,0), VM_E(it,1),...,VM_E(it, dv-1)로서 정의된다. cj와 대응하는 체크 노드 메시지 C_M(it,j)는 반복 it+1을 통해 C_M(it+1,j)로 갱신되며, 이후에 ref.3의 갱신 규칙에 따라, 가변 노드 메시지 벡터는 j∈{0,1,...,dv-1}과 k∈N(v)\k에 대해 <수학식 6>을 통해 갱신되는 것으로 가정한다.
<수학식 6>
VM_E(it+1,k)= C_M(it+1,j) + VM_E(it,k) - (∑l∈N(v)\j VM_E(it,l) - (dv-2) VM_E(it,j))/(dv-1)
전술한 바와 같이, 종래 BP 알고리즘은 이전의 반복 결과들을 저장해야 하며, 이에 따라 더욱 많은 메모리가 필요하다. 또한, 종래 BP 알고리즘에서, 각 체크 노드는 서브코드로서 프로세싱된다. 서브코드가 작은 코드워드 비트를 갖기 때문에, 신뢰성 있는 정보는 반복에서 천천히 집중된다. 대조적으로, CN_C BP 알고리즘에서 가변 노드 메시지의 트리거-스케줄링된 갱신에 있어서, 후속 체크 노드 메시지의 갱신은 신뢰성이 높은 가변 노드 메시지를 이용하며, 이에 따라 신속한 집중이 가능하다. 이에 부가하여, 가변 노드 메시지 벡터에 기반한 CN_C BP 알고리즘은 적은 메모리를 필요로 한다.
CN_C BP 알고리즘이 고속 집중과 적은 메모리 점유의 이점이 있지만은, 종래기술의 BP 알고리즘만큼 주목되지 않았다(문헌 2 참조: Dielissen, A. Hekstra and V. Berg., 2006. Philips Research, High Tech Campus 5, 5656 AE Eindhoven, The Netherlands, Low cost LDPC decoder for DVB-S2). 특히, CN_C BP 알고리즘이나 혹은 가변 노드 메시지 벡터에 기반한 복호기는 서비스되지 않고 있다.
본 발명의 목적은 가변 노드 메시지 벡터와 CN_C BP에 기반하여 LDPC를 복호화하는 방법 및 상기 복호화 방법을 이용한 복호기를 제공하는 것이다. 제안된 복호화 방법과 대응하는 복호기를 사용하여, 우수한 성능과 고속 집중이 획득가능하다.
상기 목적을 달성하기 위한 LDPC(저밀도 패리티 체크)를 복호화하는 장치는, 가변 노드 메시지 벡터를 저장하는 가변 노드 메시지 메모리, 노드 연산 수단으로 하여금 상기 가변 노드 메시지 메모리에 기입하고/상기 가변 노드 메시지 메모리로부터 판독하도록 제어하는 메모리 접근 제어기, 장치의 반복 과정을 제어하기 위해 상기 노드 연산 수단으로부터 종료 제어 신호를 획득하거나 소정의 반복 최대 횟수에 따라 종료 제어 신호를 출력하는 복호화 종료 제어기, 및 체크 노드 메시지와 가변 노드 메시지를 갱신하고 판정 메시지를 계산하는 노드 연산 수단을 포함하며, 상기 노드 연산 수단은 상기 노드 메시지 벡터에 따라 체크 노드 메시지 계산 수단에서 사용할 상기 노드 메시지를 계산하는 가변 노드 메시지 생성 수단, 상기 체크 노드 메시지를 갱신하는 체크 노드 메시지 계산 수단, 대응하는 가변 노드 메시지를 갱신하는 가변 노드 메시지 갱신 수단, 대응하는 가변 노드에 대한 경판정 메시지를 계산하는 경판정 계산 수단, 및 패리티 비트를 계산하고 결과를 상기 복호화 종료 제어기에 출력하는 패리티 체크 수단을 포함하는 것을 특징으로 한다.
또한, 상기 목적을 달성하기 위한 LDPC를 복호화하는 방법은, 주소 테이블, 노드 연산 수단 및 가변 노드 메시지 메모리를 초기화하는 (a)단계; 가변 노드 메시지 벡터를 판독하며, 체크 노드 메시지와 상기 가변 노드 메시지를 갱신하고 판정 메시지를 계산하는 (b)단계; 복호화 종료 제어 신호에 응답하여 LDPC 복호화의 반복 과정을 제어하거나 혹은 소정의 반복 최대 횟수에 따라 복호화 종료 제어 신호를 출력하는 (c)단계를 포함하며, 상기 (b)단계는, 상기 가변 노드 메시지 벡터에 따라 상기 체크 노드 메시지 계산 수단에 인가된 상기 가변 노드 메시지를 계산하는 (b1)단계, 상기 체크 노드 메시지를 갱신하는 (b2)단계, 대응하는 가변 노드 메시지들을 갱신하는 (b3)단계, 대응하는 가변 노드들에 대한 경판정 메시지를 계산하는 (b4)단계, 및 체크 비트를 계산하고 그 결과를 복호화 종료 제어기에 출력하는(b5)단계를 더 포함하는 것을 특징으로 한다.
본 발명에 따르면, 체크 노드들에 대한 복호화 복잡도가 감소될 뿐만 아니라 반복 횟수가 또한 감소되며. 더욱이, 성능 요건이 잘 충족되는 효과가 있다.
하기에서 본 발명의 목적, 해결책 및 특성을 명확하게 하기 위한 상세한 설명을 도면을 참조하여 설명된다.
본 발명의 주요 착상은 가변 노드 메시지 벡터와 CN_C BP 알고리즘에 기반한 새로운 LDPC 복호기를 설계하는 것이며, 복호기 내부에서 메시지의 메모리 감소와 평균 반복 횟수 감소에서 우수한 성능을 획득하는 것이다.
하기에서, 복호기의 동작 과정을 설명하기 위해 1/2 코드율을 갖는 LDPC를 일 예로서 설명된다 (문헌 4 참조: 이동 멀티미디어 방송 파트 1, 프레임 구조, 채널 코딩 및 방송 채널 변조, 페이지 53).
도 3은 본 발명의 LDPC 복호기에 대한 구조를 도시하고 있다. 복호기는 가변 노드 메시지 메모리(301), 메모리 접근 제어기(302), 노드 연산 수단(303) 및 복호화 종료 제어기(304)를 포함한다. 채널 정보 벡터가 복호기에 입력(305)되고, 복호기는 경판정 코드워드 비트를 출력(306)한다. 도 3에서,화살표 307은 데이터 스트림을 나타내고, 화살표308은 제어신호를 나타낸다. 복호기에서 수단들의 기능은 하기와 같다.
가변 노드 메시지 메모리(301)은 노드 연산 수단은 메모리 접근 제어기의 제어하에서 메모리(301)에 대한 판독 동작 및 기입 동작을 수행하며, 이에 따라 가변 노드 메시지 벡터를 저장한다. 또한 메모리(301)는 메모리 접근 제어기(302)의 제 어하에 9216개의 가변 노드메시지 벡터들을 저장한다.
메모리 접근 제어기(302)는 가변 노드 메시지 메모리(301)에 대한 판독 동작 및 기입 동작을 수행하도록 노드 연산 수단을 제어한다.
복호화 종료 제어기 (304)는 노드 연산 수단으로부터 복호화 종료 제어 신호를 획득하거나 혹은 소정의 반복 최대 횟수에 따라 복호화 종료 제어 신호를 출력함으로써 LDPC 복호화의 반복 과정을 제어한다.
노드 연산 수단 (303)은 체크 노드 메시지 또는 가변 노드 메시지를 갱신하는 동작들을 수행하고, 판정 메시지의 계산 등을 수행한다.
도 4는 본 발명에 따라 제안된 CN_C BP 알고리즘과 가변 노드 메시지 벡터에 기반한 복호기의 세부적인 블록도를 도시한다. 여기서, NB는 LDPC 복호기의 병렬 브랜치의 개수이다. 일반적으로, NB는 체크 노드의 개수(M)에 의해 정확하게 나뉘어지는 정수이다. NB=1인 경우, 도면의 복호기는 완전 직렬-구조이다. NB=M인 경우, 복호기는 완전 병렬-구조이다. 그리고, NB가 임의의 다른 값인 경우, 복호기는 블록-레벨 병렬 구조 또는 서브-블록-레벨 병렬 구조이다. NB는 시스템 처리량 수요를 만족하도록 특정되어야 한다.
도 4에 도시된 바와 같이, 가변 노드 메시지 메모리(VN_M RAM; 401)와 셔플링 네트워크(shuffling network)(∏:402)는 가변 노드 메시지 저장소를 구성한다. VN_M RAM은 가변 노드 메시지 벡터를 저장하는데 사용되며, 셔플링 네트워크(∏:402)는 노드 연산 수단(N_CMP)과 VN_M RAM 간의 인터페이스를 제공한다. NB개의 N_CMP 수단들은 검사 결과를 복호화 종료 제어기(405)에게 피드백한다. 피드백 결과에 따라, 복호화 종료 제어기는 복호기가 복호화된 비트를 출력하는 시간을 제어한다.
STiMi가 채택한 LDPC 코드의 경우, 코드워드 길이 N=9216이고, 패리티 체크 비트의 개수 M=4608이다. NB=16 인 것으로, 즉 LDPC 복호기에서 16개의 브랜치가 병렬로 동시에 수행되는 것으로 가정한다.
도 4에서, 16개의 각 가변 노드 메시지 메모리(401)는 576개의 가변 노드 메시지 벡터들을 저장한다(상세 내용에 대해 문헌 5 참조: LDPC 코드를 위한 새로운 메모리 아키텍쳐 및 접근 방법, Samsung BST). 셔플링 네트워크(∏; 402) 간의 맵핑 관계는 LDPC 코드에 대한 체크 행렬에 의해 특정된다. 상세한 내용은 문헌 5에서 설명된다. LDPC 복호기의 메시지 저장 수단(301)은 가변 노드 메시지 메모리와 셔플링 네트워크(∏:402)로 구성된다. 메모리 접근 제어기(403)의 제어하에서, 노드 연산 수단(404)은 메시지 저장 수단에 대한 판독 동작과 기입 동작을 수행한다. 16개의 노드 연산 수단들은 패리티 체크 결과들을 복호화 종료 제어기(405)에 피드백한다. 이 결과들에 따라, 복호화 종료 제어기는 복호기가 복호화된 비트들을 출력하는 시간을 제어한다.
도 5는 본 발명에서 제안된 LDPC 복호화 방법의 흐름도이다. 채택된 변수들은 하기와 같다.
It: 현재의 반복 횟수,
s: 현재의 고유 반복 횟수,
Smax: 최대 고유 반복 횟수, 즉 M/NB,
Ms: 현재의 코드워드의 수반 행렬, 즉 x^HT
도 5에서 도시된 바와 같이, LDPC 반복 과정은 하기의 단계들에 의해 외부 복호화 시작 신호기로 시작된다.
단계 501: 복호기의 모든 관련 주소 테이블, 계수기 및 고유 레지스터를 초기화한다.
단계 502: 채널 정보를 판독하고, 가변 노드 메시지 메모리 VN_M RAM을 초기화한다.
단계 503: it=0 이 된다.
단계 504: s=0 이 된다. NB개 즉, 16개의 병렬 브랜치 모두가 동시에 동작한다.
단계 505: 계산을 위해 대응하는 가변 노드 메시지 벡터를 판독한다. 여기서, 주목할 사항으로서, 반복 복호화 동작은 체크 노드에 초점을 두어 수행된다. 현재의 계산은 하나의 체크 노드에 기초한다. 따라서, 인가된 가변 노드 메시지 벡터는 체크 노드와 관련된 가변 노드들과 대응한다.
단계 506: 체크 노드 메시지들을 갱신한다.
단계 507: 가변 노드 메시지 벡터를 판독한다.
단계 508: 수반 행렬(Ms)을 연산한다.
단계 509: s = Smax-1 인 경우, 단계(511)로 진행한다. 그렇지 않으면, 단계(510)로 진행한다.
단계 510: s++, 단계(505)로 진행한다.
단계 511: Ms = 0인 경우, 복호화 과정을 종료하고, 복호화된 비트를 출력하는 단계(516)를 진행한다. 그렇지 않으면, 단계(512)로 진행한다.
단계 512: it++
단계 513: it = itmax -1인 경우, 복호화 과정을 종료하고 복호화된 비트를 출력하는 단계(515)를 진행한다. 그렇지 않으면, 단계(504)로 진행한다.
전술한 설명에서, 가변 노드 메시지 벡터와 CN_C BP 알고리즘에 기반한 LDPC 복호기 및 복호기의 구현 방법이 제공되었다. 본 발명에서, 노드 연산 수단의 구현 방법 및 수단에 초점을 두어 설명된다. 또한, 메모리 접근 제어기, 복호화 종료 제어기 및 가변 노드 메시지 메모리의 구현에 대한 간략한 설명이 제공된다. 다시 말하면, 임의의 유용한 방법들이 이러한 기능 모듈들을 구현하도록 채택가능하다. 여기서, 대응하는 가변 노드 메시지 벡터는 획득된 것으로 가정한다.
노드 연산 수단의 구조에 관해, 체크 노드 메시지들의 갱신과 가변 노드 메 시지들의 갱신은 노드 연산 수단에서 수행된다. 노드 연산 수단은 복호기의 중요 콤포넌트이다. 이는 가변 노드 메시지 벡터의 저장과 갱신 방법에 기초하여 설계된다.
도 6은 노드 연산 수단의 구조에 관해 도시하고 있다. 이는 주요 구성요소로서 가변 메시지 생성 수단(V_M_Gnrt; 610), 체크 노드 계산 수단(C_M_Calc; 612), 가변 노드 메시지 갱신 수단(VN_M_Updt; 614), 경판정 계산 수단(H_D_Calc; 613) 및 패리티 체크 수단(Prt_Chk; 611)으로 구성된다. 도면 좌측의 점선 블록은 임시 가변 노드 메모리 수단(VN_M RAM)을 나타낸다. 복호화 시작 신호, 반복 시작 신호 및 메모리 판독 및 기입 제어 신호는 노드 연산 수단에 대한 외부 제어 신호들이다. 이들은 노드 연산 수단을 협력하여 제어한다. 노드 연산 수단의 콤포넌트들의 기능은 하기와 같다.
가변 메시지 생성 수단은 가변 노드 메시지 벡터에 따라 체크 메시지 계산 수단에 인가된 가변 메시지들을 계산한다. 체크 메시지 계산 수단은 <수학식 1> 또는 임의의 다른 식에 의해 체크 메시지를 갱신한다. 가변 노드 메시지 갱신 수단은 대응하는 가변 노드 메시지를 갱신한다. 경판정 계산 수단은 대응하는 가변 노드들에 대한 경판정 메시지들을 계산한다. 패리티 체크 수단은 패리티 체크 비트들을 계산하고 계산 결과들을 복호화 종료 제어기에 출력한다. 패리티 체크 비트들은 부호화 과정 동안의 비트들과는 다르다. 이들은 대응하는 LDPC 체크 행렬에서 체크 방정식의 검사 결과를 가리킨다.
도 7은 노드 계산 수단에서 수행된 계산 과정을 도시한 흐름도이다. 이는 하나의 체크 노드와 이러한 체크 노드와 관련된 가변 노드들 간의 메시지를 갱신하는 과정을 예시한다. 주목할 사항으로서, 이 수단은 복호화 시작 신호와 반복 시작 신호의 동시적인 제어하에 있다. 이러한 2개의 신호가 인에이블(enable) 즉 하이(high)인 경우에 이 수단은 서비스된다. 종료 신호는 반복 시작 신호의 하강 에지에서 로우(low) 레벨이 된다. 종료 신호가 로우 레벨에 있다는 것은 이전의 반복 복호화가 계속되고 있으며 반복 과정이 즉시 종료되어야 함을 의미한다. 종료 신호가 하이 레벨에 있는 경우, 반복 과정은 반복 횟수가 소정의 최대값에 도달할때 까지 계속된다.
여기서, 제 1 체크 노드에서 수행되는 과정이 예시된다. STiMi에서, 제 1 체크 노드와 관련된 가변 노드들의 인덱스는, 1/2 코드율을 갖는 LDPC 코드의 체크 행렬에 의해 0, 6, 12, 18, 25 및 30으로서 특정된다. 노드 연산 수단에서 수행되는 동작 흐름은 하기와 같다.
도 7에 도시된 바와 같이, 노드 연산 수단의 동작 흐름은 하기와 같다.
단계 701: 노드 연산 수단 내부의 레지스터들을 초기화한다.
단계 702: j=0 이 된다.
단계 703: 현재 가변 노드 메시지 벡터(VN_Mj)인 0,6,12,18,25 및 30으로 인덱스된 가변 노드 메시지 벡터(VN_Mj)를 판독한다.
단계 704: 대응하는 가변 메시지(V_Mj)를 계산한다.
단계 705: j=dc -1인 경우, 단계(701)로 진행하며, 그렇지 않으면, 단계(706)로 진행한다.
단계 706: j++ 이면, 단계(703)로 진행한다.
단계 707: 패리티 체크 과정을 수행하고, 이후 단계(708)에서 현재의 체크 메시지를 계산한다.
단계 709: j=0 이 된다.
단계 710: 가변 노드 메시지 벡터(VN_Mj)를 갱신한다.
단계 711: 가변 노드 메시지 벡터(VN_Mj)를 가변 노드 메시지 벡터 메모리(VN_M RAM)에 기입한다.
단계712 : 경판정 계산하고 경판정 출력을 수행한다.
단계 713: j=dc -1인 경우, 단계(714)로 진행하며, 그렇지 않으면, 단계(715)로 진행한다.
단계 714: j++ 이면, 단계(710)로 진행한다.
단계 715: 노드 연산 과정은 종료한다.
단계(715) 이후에, 복호기는 후속 체크 노드에 대한 계산을 수행하거나, 현재 반복을 중단하면서 후속 반복을 시작하거나, 혹은 전체 복호화 과정을 종료한다. 주목할 사항으로서, VN_M의 판독 동작과 기입 동작들은 직렬 방식으로 수행된다. 이러한 동작들은 노드 연산 수단에 대한 일부 변형이 가해진 이후에 병렬로 수행가능하다. 콤포넌트들의 바람직한 구현 사례에 대한 상세한 설명이 하기 에서 소개된다.
가변 메시지 생성(V_M_Gnrt) 수단은 체크 메시지와 가변 노드 메시지의 갱신에 필요한 가변 메시지들을 생성한다. 더욱 명확하게 설명하기 위해, 현재 프로세싱되는 체크 노드의 인덱스는 i_Cur_CN으로서 표시된다. 체크 노드와 관련된 가변 노드의 대응하는 메시지 벡터의 VN_F는 1과 일치한다. 여기서, i_Cur_CN은 값이 1인 VN_F의 인덱스를 표시하도록 채택된다(즉, VN_F(i_Cur_CN) = 1). 주목할 사항으로서, 값이 1인 VN_F의 첨자들은 상이한 가변 노드 메시지 벡터에 대해 서로 다를 수 있다. 하지만, 이들 모두는 현재 프로세싱되는 체크 노드의 인덱스와 대응한다.
여기서, i_Cur_CN = 0 이고, 체크 노드와 관련된 6개의 가변 노드 메시지 벡터들에 대한 지시 신호들(VN_F(0) 내지 VN_F(2))은 각각 100, 100, 100, 100, 100, 100이다.
가변 메시지 생성 수단은 제어 신호 생성기(801), 가변 메시지 생성기(802) 및 임시 가변 노드 외부 메시지(VM_E_temp) 생성기(803)로 구성된다.
제어 신호 생성기(801)는 가변 메시지를 계산하는데 사용된다. 우선, 제어신호 생성시는 노드 제어 신호(V_control)를 생성하는데 필요하다. 제어 신호는 각 VN_M에서 dv )개의 가변 노드 표시(VN_F(0) ~ VN_F(dv -1))에 따라 획득되는 것으로, 이는 dv개의 비트의 벡터이다.
따라서, 제어 신호는 각 VN_M에서 3개의 노드 표시(VN_F(0) ~ VN_F(2))에 따 라 획득되며, 이는 3비트 벡터이다(VN_F(0) 내지 VN_F(2)는 동일할 수 있다).
V_control 신호는 프로세싱에서 체크 노드의 인덱스를 나타낸다. 이 신호에 의해, 가변 메시지 생성기와 VM_E_temp 생성기는 VN_M으로부터 적당한 VM_E를 선택한다. 또한, 이 신호는 VN_M_Updt 수단으로 송신된다.
가변 메시지 생성기(802)는 <수학식 4>에 의해 가변 메시지들을 계산하는데 사용된다. V_control로 제어 함수를 수행하기 위해, 현재의 가변 노드 외부 메시지(VM_E)가 채택된다(즉, VM_E(i_Cur_CN)). 획득된 V_M은 가변 노드로부터 현재의 체크 노드(i_Cur_CN)로 송신되는 메시지이다.
<수학식 4>에서 VM_E(0)을 획득하기 위해 신호(V_control)에 의해 사용되고 제어되는 VM_E를 선택한다. 이때 획득된 V_M은 가변 노드로부터 체크 노드(0)로 송신되는 메시지이다.
임시 가변 노드 외부 메시지 생성기(803)는 VN_M_Updt 수단을 위한 VM_E_temp 메시지를 생성하는데 사용된다. 가변 노드 외부 메시지 생성기로 임시 가변 노드 외부 메시지를 생성하는 과정 동안에, VM_E_temp (i_Cur_CN)은 유지된다. 메시지의 나머지 부분은 <수학식 6>의 최우측의 마지막 2개의 항목 간의 차이로부터 획득된다. 여기서, 입력 채널 정보(Ch_M)는 VN_M_Updt 수단으로 송신되는 임시 채널 정보 CH_M_temp 신호로서 사용된다.
여기서 변수 VM_E_temp(0)는 유지되며, Ch_M_temp 신호는 VN_M_Updt 수단으로 송신된다.
체크 메시지 계산 수단은 체크 메시지들을 갱신하는데 사용된다. 이 수단에서 2개의 구현 구조들이 적용가능하다. 하나는 직렬 구조이고, 다른 하나는 병렬 구조이다. 병렬 구조에서, 모든 dc개 즉, 6개의 가변 메시지가 계산 수단에 도달할때 까지 계산 과정이 시작되지 않아야 한다. 체크 메시지를 갱신하기 위한 임의의 방법들이 적용가능하다.
가변 노드 메시지 갱신(VN_M_Updt) 수단은 가변 노드 메시지 벡터의 갱신을 수행한다. 도 9에서 도시된 바와 같이, 가변 노드 메시지 갱신 수단은 주요 구성요소로서 VN_M_Updt 제어기(901) 및 VM_E_Updt 생성 수단(902)을 포함한다.
VN_M_Updt 제어기의 입력은 V_control이며, 이 제어기로부터 2개의 제어 신호들이 출력된다. 하나는(dv-비트 벡터(3- 비트벡터))VM_E_Updt 생성 수단으로 송신되며, 다른 하나는(1 비트 신호) 경판정 계산 수단(H_D_Calc)으로 송신된다. 경판정 계산 인에이블 신호(H_D_Calc_En)는 VN_F(dv-1)과 일관된다. VN_F(dv-1(2))=1 이면, H_D_Calc_En는 인에이블된다.
이 노드 연산 과정에서, 6개의 가변 노드들과 대응하는 VN_F(2)는 모두 0과 일치한다. 따라서, H_D_Calc_En은 디스에이블된다. 현재 계산에서 체크 노드의 인덱스가 2 이고(그리고, 대응하는 가변 노드들의 인덱스가 0. 8. 13, 20, 32 및 8270 이고), 가변 노드 메시지 벡터 제로의 노드 표시(VN_F(0)~VN_F(2))가 001 이면, H_D_Calc_En은 디스에이블된다.
다음으로, M_E_Updt 생성 수단의 입력은 C_M 및 VM_E_temp 신호들이며, 이들로부터 갱신된 가변 노드 외부 메시지 신호(VM_E_Updt)가 출력된다. 제어 신호(903)는 현재의 갱신을 위해 정확한 VM_E_Temp 신호를 계산하여 선택하는데 사용된다. 다시 말하면, 갱신은 인덱스(i_Cur_CN)를 갖는 <수학식 6>에 의해 수행되며, 여기서 VM_E_temp는 변경되지 않는다. 주목할 사항으로서, <수학식 6>의 마지막 2개의 항목 간의 차이, 즉 VM_E_temp는 V_M_Gnrt 수단에서 계산된다. 따라서, 갱신 계산에서 가산 동작만이 채택된다. VM_E_Updt 생성 수단은 VM_E_Updt를 다시 VN_M 메모리에 기입하고, 판정 메시지를 계산하기 위해 VM_E_Updt(이는 H_D_Calc_VM_E로서 재진술됨)를 H_D_Calc 수단으로 송신한다. 또한, Ch_M_temp(이는 H_D_Calc_Ch_M으로서 재진술됨)는 H_D_Calc 수단으로 송신된다.
경판정 계산 수단은 가변 노드 경판정 메시지를 계산하여 경판정 비트들을 출력하는데 사용된다. 신호(H_D_Calc_En)가 하이 레벨인 경우, 이 수단은 동작하기 시작한다. 이는 <수학식 7>(<수학식 5>와 동일함)에 의해 가변 노드에 대한 경판정 메시지(D_M)을 계산하여 D_M의 MSB(이는 M_M의 부호를 나타냄)를 출력한다. 갱신된 가변메시지 벡터들과 부호비트와 관련된 경판정 결과들 모두는 VN_M메모리에 재기입된다. 현재의 체크 노드의 계산 결과가 0이면, 경판정 계산수단은 작동하지 않는다.
<수학식 7>
D_M = Ch_M + (∑i∈{0,1 ...,dv-1} H_D_Calc_VM_E(i))/(dv-1)
패리티 체크수단에 관해, 복호화 시작 신호와 반복 시작 신호의 제어하에서, 패리티 체크 수단은 현재의 체크 지점에 대한 체크 방정식을 만족하는지를 검사한다. 이는 체크 메시지 갱신 수단과 병렬로 동작하며, 패리티 체크 방정식을 만족하는지 여부를 표시하기 위해 패리티 체크 비트를 출력한다. 출력 결과들은 복호화 종료 제어기로 송신된다. 모든 패리티 체크 방정식을 만족하면, 복호화 과정은 정확한 것이 되며 종료된다.
구현 예에서 설명된 LDPC 복호기에 대한 성능 시물레이션이 수행되었다. 종래의 BP 알고리즘보다 양호한 성능이 획득되었다. 평균 반복 횟수는 대략 절반으로 감소되었다. 도 12 및 도 13은 각각은 부동소수점과 고정소수점 BER 성능 곡선을 도시하고 있다. 여기서, SNR은 Eb/N0을 가리키며, 변조 방식은 BPSK이고, 채널은 가우시안 모델이다. 비교를 위해, 종래의 BP 알고리즘에 기반한 복호기의 성능이 또한 도면들에서 제공된다.
도 14에서는 본 발명과 종래기술 알고리즘에서의 평균 반복 횟수들을 제공하는 것으로써, 시물레이션 결과로부터 하기의 결론들이 도출된다.
CN_C BP 알고리즘(원형)과 종래기술 BP 알고리즘(정사각형)의 부동소수점 성능 곡선들이 도 12에서 예시된다. 전자의 성능은 후자보다 더 양호하다. 이는 CN_C BP 알고리즘이 종래기술의 BP 알고리즘보다 효율적인 것임을 증명한다.
CN_C BP 알고리즘(원형)과 종래기술의 BP 알고리즘(정사각형)의 7-비트 고정소수점 곡선들이 도 13에서 예시된다. a) 결론과 마찬가지로, 전자의 성능이 후자보다 더 양호하다.
다른 신호-대-잡음비 하에서 CN_C BP 복호화와 종래기술의 BP 복호화에 필요한 평균 반복 횟수들이 도 14에서 제공된다. 도면으로부터, CN_C BP 알고리즘이 대략 절반의 평균 반복을 저감시키며, 종래기술의 BP 알고리즘보다 양호한 복호화 성능을 획득함을 알 수 있다.
도 1은 LDPC 코드에 대한 2개의 섹션의 도면.
도 2는 가변 노드 메모리 벡터의 개략도.
도 3은 일반적인 LDPC 복호기의 블록도.
도 4는 CN_C BP 알고리즘과 가변 노드 메시지 벡터 기반의 복호기의 구조도.
도 5는 LDPC 복호화 과정의 흐름도.
도 6은 본 발명의 노드 연산 수단의 블록도.
도 7은 본 발명의 노드 계산 과정의 흐름도.
도 8은 가변 노드 메시지 생성 수단의 블록도.
도 9는 가변 노드 메시지 벡터 갱신 수단의 블록도.
도 10은 경판정 계산 수단의 블록도.
도 11은 패리티 체크 수단의 블록도.
도 12는 N_C BP 알고리즘의 부동소수점 성능 곡선.
도 13은 N_C BP 알고리즘의 7-비트 고정소수점 성능 곡선.
도 14는 CN_C BP 알고리즘의 평균 반복 횟수의 비교를 도시한 도면.

Claims (19)

  1. LDPC(저밀도 패리티 체크)를 복호화하는 장치로서,
    가변 노드 메시지 벡터를 저장하는 가변 노드 메시지 메모리;
    노드 연산 수단으로 하여금 상기 가변 노드 메시지 메모리에 기입하고/상기 가변 노드 메시지 메모리로부터 판독하도록 제어하고 장치의 반복 과정을 제어하는 제어기; 및
    체크 노드 메시지와 가변 노드 메시지를 갱신하고 판정 메시지를 계산하는 노드 연산 수단을 포함하며,
    상기 노드 연산 수단은,
    상기 노드 메시지 벡터에 따라 체크 노드 메시지 계산 수단에서 사용할 상기 노드 메시지를 계산하는 가변 노드 메시지 생성 수단;
    상기 체크 노드 메시지를 갱신하는 체크 노드 메시지 계산 수단;
    대응하는 가변 노드 메시지를 갱신하는 가변 노드 메시지 갱신 수단; 및
    대응하는 가변 노드에 대한 경판정 메시지를 계산하는 경판정 계산 수단과; 패리티 비트를 계산하고 결과를 상기 복호화 종료 제어기에 출력하는 패리티 체크 수단을 포함하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  2. 제 1 항에 있어서, 상기 가변 메시지 생성 수단은:
    노드 제어 신호(V_control)를 생성하는 제어 신호 생성기;
    상기 생성된 노드 제어 신호의 제어하에서 가변 메시지를 생성하기 위해 정확한 가변 노드 외부 메시지(VM_E)를 선택하는 가변 메시지 생성기; 및
    상기 가변 노드 메시지 갱신 수단을 위한 임시 가변 노드 외부 메시지를 생성하는 임시 가변 노드 외부 메시지 생성기를 포함하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  3. 제 2 항에 있어서, 상기 제어 신호 생성기는 각 가변 노드 메시지의 가변 노드 표시에 따라 상기 노드 제어 신호(V_control)를 생성하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  4. 제 2 항에 있어서, 상기 가변 메시지 생성기는 하기 <수학식 4> 에 의해 가변 메시지들을 생성하며, 여기서, V_M(i)는 노드(i)의 가변 노드 외부 메시지를 표시하며, Ch_M은 대응 노드에 대한 채널 정보를 표시하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
    <수학식 4>
    V_M(i) = VM_E(i) + CH_M
  5. 제 2 항에 있어서, 상기 임시 가변 노드 외부 메시지 생성기는 상기 가변 노드 외부 메시지로 임시 가변 노드 외부 메시지를 생성하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  6. 제1 항에 있어서, 상기 가변 노드 메시지 갱신 수단은:
    노드 제어 신호들로 노드 외부 메시지 갱신 생성 수단과 상기 경판정 계산 수단을 제어하는 가변 노드 메시지 갱신 제어기;
    대응 노드에 대한 체크 메시지(C_M)와 임시 가변 노드 외부 메시지(VM_E_temp)에 따라 상기 가변 노드 외부 메시지들을 갱신하고, 갱신된 가변 노드 외부 메시지들을 판정 메시지 계산을 위한 상기 경판정 계산 수단에 송신하는 가변 노드 외부 메시지 갱신 생성 수단을 포함하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  7. 제 6 항에 있어서, 상기 가변 노드 외부 메시지 갱신 생성 수단은 상기 갱신된 가변 노드 외부 메시지를 상기 가변 노드 메시지 메모리에 기입하고, 상기 경판정 계산 수단에게 임시 채널 메시지(Ch_M_temp)를 송신하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  8. 제1 항에 있어서, 상기 가변 노드에 대한 경판정 메시지(D_M)는 경판정 계산 인에이블 신호(H_D_Calc_En)와 채널 메시지(H_D_Calc_Ch_M)와 그리고 가변 노드 외부 메시지(H_D_Calc_VM_E)를 상기 경판정 계산 수단에 입력함으로써 획득되며, D_M의 부호 비트는 출력되고, 그리고 상기 경판정 메시지와 갱신된 가변 노드 메시지 벡터 모두는 상기 가변 노드 메시지 메모리에 재기입되는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  9. 제1 항에 있어서, 상기 패리티 체크 수단은 복호화 시작 신호와 반복 시작 신호의 제어하에서, 상기 현재 체크 노드에 대한 체크 방정식을 만족하는지를 검사하며, 상기 체크 방정식을 만족하는지를 표시하는 체크 비트를 출력하고, 상기 복호화 종료 제어기에게 그 결과를 송신하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  10. 제 1 항에 있어서, 상기 복호화 종료 제어기는 상기 장치를 위한 반복 과정을 제어하기 위해 상기 노드 연산 수단으로부터 종료 제어 신호를 획득하거나 혹은 소정의 반복 최대 횟수에 따라 종료 제어 신호를 출력하는 것을 특징으로 하는 LDPC(저밀도 패리티 체크)를 복호화하는 장치.
  11. LDPC(저밀도 패리티 체크)를 복호화하는 방법에 있어서,
    주소 테이블, 노드 연산 수단 및 가변 노드 메시지 메모리를 초기화하는 (a)단계;
    가변 노드 메시지 벡터를 판독하며, 체크 노드 메시지와 상기 가변 노드 메시지를 갱신하고 판정 메시지를 계산하는 (b)단계;
    복호화 종료 제어 신호에 응답하여 LDPC 복호화의 반복 과정을 제어하거나 혹은 소정의 반복 최대 횟수에 따라 복호화 종료 제어 신호를 출력하는 (c)단계를 포함하며,
    상기 (b)단계는,
    상기 가변 노드 메시지 벡터에 따라 상기 체크 노드 메시지 계산 수단에 인가된 상기 가변 노드 메시지를 계산하는 (b1)단계,
    상기 체크 노드 메시지를 갱신하는 (b2)단계,
    대응하는 가변 노드 메시지들을 갱신하는 (b3)단계,
    대응하는 가변 노드들에 대한 경판정 메시지를 계산하는 (b4)단계 및
    체크 비트를 계산하고 그 결과를 복호화 종료 제어기에 출력하는 (b5)단계를 더 포함하는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  12. 제 11 항에 있어서, (b1)단계에서, 노드 제어 신호(V_control)가 생성되며, 상기 생성된 노드 제어 신호의 제어하에서 가변 메시지를 생성하기 위해 정확한 가변 노드 외부 메시지(VM_E)를 선택하고, 그리고 대응하는 가변 노드 메시지 갱신 수단을 위한 임시 가변 노드 외부 메시지를 생성하는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  13. 제 12 항에 있어서, 상기 노드 제어 신호(V_control)는 각 가변 노드 메시지의 가변 노드 표시에 따라 생성되는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  14. 제 12 항에 있어서, 상기 가변 메시지는 하기 <수학식 4>에 의해 생성되며, 여기서, V_M(i)는 노드(i)의 가변 노드 메시지를 표시하며, VM_E(i)는 노드(i)의 가변 노드 외부 메시지를 표시하고, Ch_M은 대응 노드에 대한 채널 정보를 표시하는 것을 특징으로 하는 LDPC를 복호화하는 방법.
    <수학식 4>
    V_M(i) = VM_E(i) + CH_M
  15. 제 12 항에 있어서, 상기 임시 가변 노드 외부 메시지는 가변 노드 외부 메시지로 생성되는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  16. 제11 항에 있어서, (b3)단계에서, 노드 외부 메시지 갱신 생성 수단과 경판정 계산 수단은 상기 노드 제어 신호들의 제어하에 있으며, 상기 가변 노드 외부 메시지는 대응 노드에 대한 체크 메시지(C_M)와 상기 임시 가변 외부 메시지(VM_E_temp)에 따라 갱신되고, 이후 상기 갱신된 가변 노드 외부 메시지는 상기 판정 메시지의 계산을 위해 상기 경판정 계산 수단으로 송신되는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  17. 제 16 항에 있어서, 상기 갱신된 가변 노드 외부 메시지는 상기 가변 노드 메시지 메모리에 재기입되고, 상기 임시 채널 메시지(Ch_M_temp)는 상기 경판정 계산 수단으로 송신되는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  18. 제 12 항에 있어서, 상기 가변 노드에 대한 경판정 메시지(D_M)는 경판정 계산 인에이블 신호(H_D_Calc_En)와 채널 메시지(H_D_Calc_Ch_M)와 그리고 가변 노드 외부 메시지(H_D_Calc_VM_E)를 상기 경판정 계산 수단에 입력함으로써 획득되며, D_M의 부호 비트는 출력되고, 그리고 상기 경판정 메시지와 갱신된 가변 노드 메시지 벡터 모두는 상기 가변 노드 메시지 메모리에 재기입되는 것을 특징으로 하는 LDPC를 복호화하는 방법.
  19. 제11 있어서, 상기 체크 계산은 복호화 시작 신호와 반복 시작 신호의 제어하에서, 상기 현재 체크 노드에 대한 체크 방정식을 만족하는지를 검사하며, 상기 체크 방정식을 만족하는지를 표시하는 체크 비트를 출력하고, 상기 복호화 종료 제어기에게 그 결과를 송신하는 것을 특징으로 하는 LDPC를 복호화하는 방법.
KR1020080130072A 2007-12-28 2008-12-19 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치 KR20090072972A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN200710307835.1 2007-12-28
CNA2007103078351A CN101471674A (zh) 2007-12-28 2007-12-28 低密度奇偶校验码译码方法及装置

Publications (1)

Publication Number Publication Date
KR20090072972A true KR20090072972A (ko) 2009-07-02

Family

ID=40800158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080130072A KR20090072972A (ko) 2007-12-28 2008-12-19 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치

Country Status (3)

Country Link
US (1) US20090172493A1 (ko)
KR (1) KR20090072972A (ko)
CN (1) CN101471674A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140032524A (ko) * 2012-08-27 2014-03-17 삼성전자주식회사 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
KR20150121966A (ko) * 2014-04-22 2015-10-30 아주대학교산학협력단 저밀도 패리티 검사 코드의 복호화 방법 및 그 장치
KR20170124469A (ko) * 2016-05-02 2017-11-10 유니베르시떼 데 브르타뉴주 에스유디 코드 디코딩 에러 정정 방법 및 장치
CN114584259A (zh) * 2022-02-18 2022-06-03 阿里巴巴(中国)有限公司 译码方法、装置、设备及存储介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101286858B1 (ko) * 2009-12-21 2013-07-17 한국전자통신연구원 저밀도 패리티 검사 부호를 위한 고속 복호 방법
US8555131B2 (en) 2010-03-31 2013-10-08 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
US8433970B2 (en) * 2010-03-31 2013-04-30 Silicon Laboratories Inc. Techniques to control power consumption in an iterative decoder by control of node configurations
WO2012106937A1 (zh) * 2011-07-27 2012-08-16 华为技术有限公司 译码装置
CN102957436B (zh) * 2011-08-17 2017-11-10 北京泰美世纪科技有限公司 一种低密度奇偶校验码译码装置和译码方法
US9294129B2 (en) * 2013-01-16 2016-03-22 Maxlinear, Inc. Low-power low density parity check decoding
GB2517850B (en) 2013-08-27 2015-08-05 Imagination Tech Ltd An improved decoder for low-density parity-check codes
US9595977B2 (en) 2014-09-29 2017-03-14 Apple Inc. LDPC decoder with efficient circular shifters
CN104852746B (zh) * 2015-05-27 2017-11-03 北京邮电大学 Ldpc码的译码器和译码方法
CN106997777B (zh) * 2015-09-18 2021-01-05 爱思开海力士有限公司 具有改进的硬解码吞吐量的vss ldpc解码器
US20170109233A1 (en) * 2015-10-20 2017-04-20 Sandisk Technologies Inc. Data encoding using an adjoint matrix
US10128869B2 (en) 2016-05-17 2018-11-13 Apple Inc. Efficient convergence in iterative decoding
CN106656208A (zh) * 2016-12-14 2017-05-10 天津大学 一种纠正同步错误的符号级硬判决迭代译码的级联码方法
CN108429605B (zh) * 2018-03-09 2020-04-07 西安电子科技大学 基于可靠度分级的置信传播译码方法
CN111181570A (zh) * 2018-11-12 2020-05-19 北京环佳通信技术有限公司 基于fpga的编译码方法和装置
CN111510162B (zh) * 2020-05-20 2023-08-29 桂林电子科技大学 一种基于节点刷新机制的低复杂度多元ldpc译码方法
CN113055025B (zh) * 2021-03-12 2022-11-22 上海大学 可重构的极化码与低密度奇偶校验码译码器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US20040109507A1 (en) * 2002-12-06 2004-06-10 Ido Kanter Sequential decoding of parity check codes
KR20060032464A (ko) * 2004-10-12 2006-04-17 삼성전자주식회사 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
KR101192898B1 (ko) * 2005-06-27 2012-10-18 톰슨 라이센싱 반복 디코더의 전력 감소를 위한 방법 및 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140032524A (ko) * 2012-08-27 2014-03-17 삼성전자주식회사 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
KR20150121966A (ko) * 2014-04-22 2015-10-30 아주대학교산학협력단 저밀도 패리티 검사 코드의 복호화 방법 및 그 장치
US9503124B2 (en) 2014-04-22 2016-11-22 Ajou University Industry-Academic Cooperation Foundation Method and apparatus for decoding low-density parity-check code
KR20170124469A (ko) * 2016-05-02 2017-11-10 유니베르시떼 데 브르타뉴주 에스유디 코드 디코딩 에러 정정 방법 및 장치
CN114584259A (zh) * 2022-02-18 2022-06-03 阿里巴巴(中国)有限公司 译码方法、装置、设备及存储介质
CN114584259B (zh) * 2022-02-18 2024-02-09 阿里巴巴(中国)有限公司 译码方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20090172493A1 (en) 2009-07-02
CN101471674A (zh) 2009-07-01

Similar Documents

Publication Publication Date Title
KR20090072972A (ko) 저밀도 패리티 체크 코드를 복호화하는 방법 및 장치
US7395487B2 (en) Common circuitry supporting both bit node and check node processing in LDPC (Low Density Parity Check) decoder
US7587659B2 (en) Efficient front end memory arrangement to support parallel bit node and check node processing in LDPC (Low Density Parity Check) decoders
US7409628B2 (en) Efficient design to implement LDPC (Low Density Parity Check) decoder
KR101431479B1 (ko) 다수의 체크―노드 알고리즘들을 이용하는 오류―정정 디코더
US10361723B2 (en) Decoding of non-binary LDPC codes
US8880973B1 (en) Detector-decoder interface for GF(q) iterative decoding
US20050257124A1 (en) Node processors for use in parity check decoders
KR20080053346A (ko) 저밀도 패리티 검사 디코더용 방법 및 장치
WO2003032499A1 (en) Node processors for use in parity check decoders
CN107404321B (zh) 用于纠错码解码的方法和设备
KR20090126829A (ko) 반복 복호 방법과 반복 복호 장치
US20180076830A1 (en) Elementary check node processing for syndrome computation for non-binary ldpc codes decoding
KR20070039353A (ko) 저밀도 패러티 검사 복호기에서의 검사 노드 갱신 방법
KR20080096387A (ko) 디코딩 장치
US7383485B2 (en) Fast min*- or max*-circuit in LDPC (low density parity check) decoder
Zhang et al. On bit-level decoding of nonbinary LDPC codes
US8543889B2 (en) Method of list decoding and relative decoder for LDPC codes
KR101657912B1 (ko) 비이진 저밀도 패리티 검사 코드의 복호화 방법
US7447985B2 (en) Efficient design to implement min**/min**- or max**/max**- functions in LDPC (low density parity check) decoders
CN111034055A (zh) 在非二进制ldpc解码器中简化的校验节点处理
TWI487290B (zh) 用於準循環低密度奇偶校驗碼之再定址解碼器與解碼方法
US11476870B2 (en) Variable node processing methods and devices for message-passing decoding of non-binary codes
Guan et al. Adaptive extended min-sum algorithm for nonbinary LDPC decoding
Wang et al. A new min-sum based decoding algorithm for non-binary LDPC codes

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid