KR102054556B1 - 사전 정렬된 입력을 사용하는 기본 검사 노드 기반의 신드롬 디코딩 - Google Patents
사전 정렬된 입력을 사용하는 기본 검사 노드 기반의 신드롬 디코딩 Download PDFInfo
- Publication number
- KR102054556B1 KR102054556B1 KR1020170138697A KR20170138697A KR102054556B1 KR 102054556 B1 KR102054556 B1 KR 102054556B1 KR 1020170138697 A KR1020170138697 A KR 1020170138697A KR 20170138697 A KR20170138697 A KR 20170138697A KR 102054556 B1 KR102054556 B1 KR 102054556B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- check node
- components
- messages
- component
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/458—Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1171—Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/134—Non-binary linear block codes not provided for otherwise
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/03—Shaping networks in transmitter or receiver, e.g. adaptive shaping networks
- H04L25/03006—Arrangements for removing intersymbol interference
- H04L25/03178—Arrangements involving sequence estimation techniques
- H04L25/03312—Arrangements specific to the provision of output signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Error Detection And Correction (AREA)
Abstract
본 발명의 실시예들은 인코딩된 신호의 추정치를 결정하기 위한 디코더로서, 하나 이상의 변수 노드 처리부(23) 및 메시지들을 교환하는 하나 이상의 검사 노드 처리부(25)를 포함하고, 각각의 메시지는 하나 이상의 컴포넌트를 포함하며, 상기 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하고,
- 적어도 1개의 벡터 퍼뮤테이션부(24)로서, 적어도 1개의 변수 노드 처리부로부터 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 퍼뮤테이션된 메시지를 생성하며, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 순서에 따라 정렬되는, 상기 벡터 퍼뮤테이션부(24); 및
- 적어도 1개의 검사 노드 처리부(25-1)로서,
2개 이상의 기본 검사 노드 처리부(26)에서, 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하고,
상기 신드롬들의 세트로부터 적어도 1개의 검사 노트 메시지를 생성하며,
신호 추정부(29)에 상기 적어도 1개의 검사 노드 메시지를 전송하는, 상기 검사 노드 처리부(25-1)를 포함하는, 상기 디코더를 제공한다.
- 적어도 1개의 벡터 퍼뮤테이션부(24)로서, 적어도 1개의 변수 노드 처리부로부터 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 퍼뮤테이션된 메시지를 생성하며, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 순서에 따라 정렬되는, 상기 벡터 퍼뮤테이션부(24); 및
- 적어도 1개의 검사 노드 처리부(25-1)로서,
2개 이상의 기본 검사 노드 처리부(26)에서, 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하고,
상기 신드롬들의 세트로부터 적어도 1개의 검사 노트 메시지를 생성하며,
신호 추정부(29)에 상기 적어도 1개의 검사 노드 메시지를 전송하는, 상기 검사 노드 처리부(25-1)를 포함하는, 상기 디코더를 제공한다.
Description
본 발명은 일반적으로 디지털 통신에 관한 것으로, 특히 에러 정정 코드를 사용하여 인코딩된 신호를 디코딩하는 방법 및 장치에 관한 것이다.
에러 정정 코드들은 잡음 및/또는 간섭으로 인해 데이터 전송 또는 저장 중에 발생하는 에러에 대해 데이터를 보호하기 위해 개발된다. 데이터 보호는 원본 데이터에 중복 데이터를 추가하여 에러를 감지 및/또는 수정할 수 있게 한다.
데이터 저장 또는 전송을 위해 사용되는 다양한 장치 및 시스템은 잡음이 있는 전송 매체의 존재에서 데이터의 신뢰성 있고 에러 없는 전송을 보장하기 위한 에러 정정 코드를 구현한다. 예시적인 응용은, 예를 들어, 무선 애드-혹 네트워크(예를 들어, Wi-Fi 802.11로 표준화됨), 무선 통신 시스템(예를 들어, 3G, 4G/LTE, 5G 이상 등), 광 통신 시스템, 디지털 비디오 방송(예를 들어, DVB-C2, DVB-S2X 및 DVB-T2로 표준화됨)에서의 목소리 및 멀티미디어 송신을 포함한다.
기존의 에러 정정 코드들은 선형 코드들을 포함하는데, 이 선형 코드는 일반적으로 블록 코드 및 컨볼루션 코드로 분류될 수 있다. 선형 코드란 코드워드 벡터들의 어떠한 임의의 선형 조합도 코드워드 벡터인 선형성을 만족하는 코드를 말한다. 선형 블록 코드는 비선형 코드보다 덜 복잡하고 구현이 쉽기 때문에 널리 사용된다. 선형 블록 코드의 예로 해밍 코드, 리드 솔로몬 코드, 터보코드 및 저밀도 패리티 체크(low-density parity-check, LDPC) 코드가 있다.
LDPC 코드는 최적의 채널 용량, 즉 통신 채널을 통해 전송될 수 있는 이론적인 최대 정보량에 접근하는 높은 전송 속도를 제공할 수 있는 매우 효율적인 선형 블록 코드이다. 특히, 비-바이너리 LDPC 코드는 고 스펙트럼 효율 코딩을 제공하는데 매우 효율적이며, 바이너리 LDPC 코드보다 양호한 에러 정정 성능을 달성할 수 있다.
선형성 특성이 주어지면, 임의의 선형 에러 정정 코드는 생성기 행렬 및 패리티 검사 행렬에 의해 표현될 수 있다. 생성기 및 패리티 검사 행렬의 엔트리는 에러 정정 코드가 구성되는 대수적 구조에 속한다.
패리티 검사 행렬은 코드 워드들이 만족하도록 설계된 패리티 검사 제약 조건을 정의한다. 특히, LDPC 코드는 0이 아닌 엔트리의 수보다 훨씬 많은 다수의 0의 엔트리를 포함하는 스파스 패리티 검사 행렬에 의해 명시된다.
선형 에러 정정 코드를 사용하여 인코딩된 데이터의 디코딩은 코드의 그래프 표현, 즉, 기본 코드의 패리티 검사 행렬과 연관된 '태너 그래프(Tanner graph)'에 기초하여 수행될 수 있다. 선형 오류 정정 코드의 그래프 표현은 '변수 노드'라고 하는 노드들의 첫 번째 집합과 '검사 노드'라고 하는 노드의 두 번째 집합의 두 집합으로 구성된다. 변수 노드와 검사 노드는 에지로 연결된다. 변수 노드와 검사 노드는 처리 단위를 구성한다. 각 변수 노드는 패리티 검사 행렬의 열과 연관된다. 각각의 검사 노드는 패리티 검사 행렬의 행, 즉 패리티 검사 방정식과 연관된다. 변수 노드와 검사 노드 사이의 연결은 패리티 검사 행렬의 0이 아닌 엔트리에 의해 결정된다.
반복 디코더를 사용하여 선형 블록 오류 수정 코드를 사용하여 인코딩된 데이터를 디코딩할 수 있다. 예를 들어, 통신 채널의 출력을 나타내는 인코딩된 심볼들의 잡음 시퀀스가 주어지면, 반복 디코더는 다수의 반복 동안 잡음이 있는 시퀀스를 처리하여, 각각의 반복에서 원래의 인코딩된 시퀀스에 더 근접하도록 한다.
태너 그래프 표현은 반복 디코딩을 구현하는 데 사용될 수 있다. 따라서, 디코딩 프로세스는 그래프에서 변수 노드 및 검사 노드를 연결하는 상이한 에지들을 통해 이들과 연관된 처리부들 간의 메시지의 반복적인 교환에 의해 수행될 수 있다. 각각의 변수 노드 처리부 및 검사 노드 처리부는 그래프 내의 대응하는 접속 노드로부터 입력 메시지(검사 노드 메시지 및 변수 노드 메시지 각각)를 수신하고, 입력 메시지를 처리 한 후에, 그래프의 연결된 노드에 대응하는 적어도 하나의 처리부에 메시지(변수 노드 메시지 및 검사 노드 메시지 각각)를 출력한다. 디코딩 프로세스는 모든 패리티 검사 제약 조건이 충족되면 디코딩된 코드 워드를 반환하거나, 모든 패리티 검사 제약 조건을 충족시키지 않고도 최대 반복 횟수에 도달하면 중지된다.
상이한 변수 노드 처리부와 검사 노드 처리부 사이에 패스된 메시지는 인코딩된 심볼과 연관된 정보를 전달한다. 메시지는 심볼들 및 심볼의 신뢰도를 측정하는 지표들(이하, '신뢰도 지표'라 함)을 포함할 수 있다. 심볼의 신뢰도 지표는, 예를 들어, 추정된 확률 밀도 함수에 해당 할 수 있으며, 이 심볼이 코드 구성의 대수 구조에서 각 값과 같을 확률을 나타낸다.
초기 반복 디코딩 알고리즘은 바이너리 코드용으로 설계되어 바이너리 LDPC 코드에 적용된다. 디코딩 알고리즘은 합-곱(이하, sum-product) 알고리즘('신뢰 전파(belief propagation)' 또는 '메시지 전달' 알고리즘이라고도 함)과 최소-합(이하, min-sum) 알고리즘을 포함하며 모두 문헌[N. Wibereg, H-A. Loeliger, and R. Kotter, Codes and Iterative Decoding on General Graphs, European Transactions on Telecommunications and Related Technologies, special issue on Turbo Coding, June 1995]에서 공개되었다. 디코딩 알고리즘은 에러 디코딩 확률 면에서 거의 최적의 성능을 제공한다.
비-바이너리 코드 용으로 설계된 반복 디코딩 알고리즘은 'sum-product' 알고리즘에서 영감을 얻었다. 비-바이너리 코드들에 대한 예시적인 반복 디코더들은 'q-ary sum-product' 알고리즘을 포함하며, 이는, 예를 들어, 다음에서 개시되었다:
- 문헌["M. Davey and D. MacKay, Low-density parity check codes over , IEEE Communications Letters, vol. 2, no. 6, pages 165-167, June 1998"]
- 문헌["D.J.C. Mackay and M. Davey, Evaluation of Gallager Codes for Short Block Length and High Rate Applications, In Proceedings of IMA Workshop on Codes, Systems and Graphical Models, 1999"], 및
- 문헌["L. Barnault and D. Declercq, Fast decoding algorithm for LDPC over, In Proceedings of IEEE Information Theory Workshop, pages 70-73, April 2003"].
일부 반복 디코딩 알고리즘은 곱 연산을 간단한 합산 연산으로 변환하여 계산 복잡도를 줄이기 위한 로그(logarithmic) 스케일 계산에 기반한다. 이러한 디코딩 방식은 다음을 포함한다:
- 문헌["H. Sadjadpour, Maximum A Posteriori Decoding Algorithms For Turbo Codes, In Proceedings of SPIE, vol. 4045, 2000"]에서 개시된 "최대 로그 맵" 터보 코드 디코더;
- 문헌["D. Declercq and M. Fossorier, Decoding algorithms for non-binary LDPC codes over GF, IEEE Transactions on Communications, vol, 55, no. 4, pages 633-643, April 2007"]에 개시된 확장된 최소-합(EMS) 비-바이너리 LDPC 코드 디코더;
- 문헌["V. Savin, Min-max decoding for non-binary LDPC codes, In Proceedings of IEEE International Symposium on Information Theory, pages 960-964, July 2008"]에 개시된 최소-최대 비바이너리 LDPC 코드 디코더; 및
- 문헌["J. O. Lacruz, F. Garcia-Herrero, J. Valls and D. Declercq, One Minimum Only Trellis Decoder for Non-Binary Low-Density Parity-Check Codes, in IEEE Transactions on Circuits and Systems I: Regular Papers, vol. 62, no. 1, pages 177-184, Jan. 2015"] 및 문헌["E. Li, F. Garcia-Herrero, D. Declercq, K. Gunnam, J. O. Lacruz and J. Valls, "Low latency T-EMS decoder for non-binary LDPC codes," 2013 Asilomar Conference on Signals, Systems and Computers, Pacific Grove, CA, 2013, pp. 831-835"]에 개시된 Trellis EMS 디코더.
EMS 알고리즘은 변수 노드 처리부와 검사 노드 처리부 간의 교환된 메시지의 로그 영역 계산에 기초한다. EMS 알고리즘의 가장 큰 복잡성은 검사 노드 처리부에 의해 수행되는 계산이기 때문에, EMS 알고리즘은 검사 노드 처리부에서 계산 복잡성 및 메모리 요구 사항을 더욱 완화하기 위해 처리된 메시지의 정렬 및 절단을 적용한다. 메시지 정렬은 수신된 메시지에 포함된 심볼들과 연관된 신뢰도 지표들의 순서에 따라 수행된다. 메시지 절단은 주어진 입력 및/또는 출력 메시지에서 가장 신뢰도 높은 심볼을 유지하기 위해 수행된다.
정렬되고 절단된 입력 메시지들(즉, 변수 노드 메시지들)로부터 검사 노드 처리부들의 레벨에서 검사 노드 메시지들의 계산은 다양한 아키텍처들에 따라 수행될 수 있다. 기존 아키텍처는 "포워드-백워드" 아키텍처와 신드롬 기반 아키텍처를 포함한다.
"포워드-백워드" 아키텍처에서, 검사 노드 처리부에 의해 수행되는 계산은 다수의 기본 검사 노드 처리부(이하, '기본 검사 노드 처리부'라 함)가 연관되는 다수의 직렬 계산으로 분할된다. 각 기본 검사 노드 처리부는 둘 이상의 입력 메시지를 처리하여 이후 단계에서 나머지 기본 검사 노드 프로세서들에 의해 후속적으로 사용되는 중간 메시지를 생성한다. 계산된 중간 메시지들은 디코딩된 심볼들과 연관된 신뢰도 지표들에 기초하여 정렬된다. 또한, 중복되는 심볼들 중 가장 신뢰할 수 있는 메시지를 유지하면서 동일한 심볼을 포함하는 메시지들을 억제하기 위해 각 기본 검사 노드 프로세서에 의해 중복의 제거가 수행된다. 기본 검사 노드 처리를 위한 예시적인 알고리즘은 다음을 포함한다:
- 문헌["E. Boutillon and L. Conde-Canencia, Bubble check: a simplified algorithm for elementary check node processing in extended min-sum non-binary LDPC decoders, Electronics Letters, vol. 46, no. 9, pp. 633-634, April 2010"]에 개시된 '버블 검사'; 및
- 문헌["E. Boutillon, L. Conde-Canencia, and A. Al Ghouwayel, Design of a GF(64)-LDPC Decoder based on the EMS algorithm, IEEE Transactions on Circuits and Systems, vol. 60, no. 10, pages 2644-2656, October 2013"]에 개시된 'L-버블 검사'로 알려진 '버블 검사' 알고리즘의 개선된 버전.
버블 검사 및 L-버블 검사 알고리즘은 2개의 입력 메시지에서 기본 검사 노드 프로세서에 의해 계산된 최상의 중간 결과의 검색 공간을 줄이는 것에 기반한다.
신드롬 기반 아키텍처에서, 검사 노드 처리부는 신드롬 기반 디코딩을 구현한다. 정렬되고 절단된 입력 메시지로부터의 검사 노드 메시지들의 계산은 2 단계를 필요로 한다. 제1 단계에서, 상기 검사 노드 처리부는 모든 입력 메시지들을 포함하는 '신드롬(syndromes)'이라고 지칭되는 값들의 세트를 계산한다. 제2 단계에서, 상관 해제 작업은 각각의 검사 노드 메시지와 연관하여 수행된다. 상관 해제 작업은 계산된 신드롬으로부터, 계산된 검사 노드 메시지의 수신자인 변수 노드 처리부로부터 이전에 수신된 입력 메시지의 기여를 제거하는 것으로 구성된다. 신드롬 기반 아키텍처는 다음의 문헌에서 개시되어 있다:
- 문헌[P. Schlafer, N. When, M. Alles, T. Lehnigk-Emden, and E. Boutillon, Syndrome based check node processing of high order NB-LDPC decoders, In Proceedings of the International Conference on Telecommunications, pages 156-162, April 2015"];
- 문헌["P. Schlafer, et al., A new Architecture for High Speed, Low Latency NB-LDPC Check Node Processing, In Proceedings of IEEE International Symposium on Personal, Indoor and Mobile Radio Communications, August 2015"]; 및
- 문헌["V. Rybalkin, P. Schlafer and N. Wehn, A New Architecture for High Speed, Low Latency NB-LDPC Check Node Processing for GF(256), In Proceedings of IEEE 83rd Vehicular Technology Conference (VTC Spring), Nanjing, pages 1-5, 2016"].
신드롬 기반 아키텍처는 병렬 계산을 허용하며, 이는 더 높은 차원의 갈루아 필드에 특히 유리한다. 그러나, 이러한 아키텍처에서, 계산 복잡도는 입력 메시지의 수가 증가함에 따라 증가하는 계산된 신드롬의 수에 의해 좌우된다.
포워드-백워드 아키텍처를 사용하면 하드웨어 비용을 줄일 수 있다. 그러나, 이는 시스템 처리량의 저하를 초래하는 높은 레이턴시를 초래한다. 상기 신드롬 기반 아키텍처는 주로 계산되는 신드롬의 수가 증가함에 따라 높은 복잡성을 야기한다. 실용적인 디코딩 시스템에서의 신드롬 기반 아키텍처의 구현은 항상 이용 가능한 것은 아닌 상당한 계산 및 저장 자원을 필요로 한다. 특히, 이 아키텍처의 몇몇 실용적인 구현은 높은 코딩율를 갖는 비-바이너리 코드의 디코딩에 적용되지 않는다.
따라서, 특히 EMS 디코더 및 일반적으로 임의의 태너 그래프 기반 반복 디코더에서 구현되는 검사 노드 처리부를 위한 보다 효율적이고 보다 낮은 복잡도의 아키텍처를 개발할 필요가 있다.
이러한 그리고 다른 문제들을 해결하기 위해, 인코딩된 신호의 추정치를 결정하기 위한 디코더가 제공된다. 상기 디코더는 하나 이상의 변수 노드 처리부 및 메시지들을 교환하는 하나 이상의 검사 노드 처리부를 포함한다. 각각의 메시지는 하나 이상의 컴포넌트를 포함한다. 상기 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함한다. 상기 디코더는 다음을 포함한다:
- 적어도 1개의 벡터 퍼뮤테이션부(vector permutation unit)로서, 적어도 1개의 변수 노드 처리부로부터 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 퍼뮤테이션된 메시지를 생성하며, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 순서에 따라 정렬되는, 상기 벡터 퍼뮤테이션부; 및
- 적어도 1개의 검사 노드 처리부로서,
2개 이상의 기본 검사 노드 처리부에서, 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하고,
상기 신드롬들의 세트로부터 적어도 1개의 검사 노트 메시지를 생성하며,
신호 추정부에 상기 적어도 1개의 검사 노드 메시지를 전송하는, 상기 검사 노드 처리부.
일 실시예에 따르면, 상기 퍼뮤테이션된 메시지들은 적어도 3개의 변수 노드 메시지의 세트에 하나 이상의 벡터 퍼뮤테이션을 적용함으로써 결정될 수 있다. 그러한 실시예들에서, 퍼뮤테이션 인덱스는 각각의 벡터 퍼뮤테이션과 연관되며, 상기 적어도 1개의 벡터 퍼뮤테이션부는 상기 퍼뮤테이션 인덱스에 따라 상기 적어도 3개의 변수 노드 메시지들의 컴포넌트를 추출할 수 있다. 상기 벡터 퍼뮤테이션은 상기 추출된 컴포넌트들의 신뢰도 지표들의 주어진 순서에 따라 상기 적어도 3개의 변수 노드 메시지들을 퍼뮤테이션하기 위해 적용될 수 있다.
일 실시예에서, 상기 벡터 퍼뮤테이션의 개수는 사전에 정의될 수 있다.
일 실시예에서, 상기 적어도 1개의 변수 노드 처리부는 다수의 반복 동안 적어도 1개의 검사 노드 처리부와 적어도 3개의 메시지를 교환하도록 구성될 수 있다. 상기 신호는 적어도 1개의 에러 정정 코드를 사용하여 인코딩될 수 있다. 상기 벡터 퍼뮤테이션의 개수는 신호대 잡음비, 상기 변수 노드 메시지들에 포함되는 컴포넌트의 개수, 상기 적어도 1개의 에러 정정 코드 및 상기 반복 횟수 등으로 이루어진 군 중에서 선택된 적어도 1개의 기준에 따라 결정될 수 있다.
일 실시예에서, 벡터 퍼뮤테이션과 연관되는 상기 퍼뮤테이션 인덱스는 상기 변수 노드 메시지의 개수 및/또는 상기 변수 노드 메시지들의 복수의 컴포넌트에 포함된 상기 신뢰도 지표들 및/또는 상기 적어도 1개의 에러 정정 코드에 따라 달라질 수 있다.
일 실시예에 따르면, 신드롬은 심볼, 상기 심볼과 연관되는 신뢰도 지표 및 바이너리 벡터를 포함할 수 있다. 각각의 기본 검사 노드 처리부는 제1 메시지 및 제2 메시지로부터 중간 메시지를 결정하고, 상기 제1 메시지 및 제2 메시지는 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 도출될 수 있다. 상기 중간 메시지는 하나 이상의 중간 컴포넌트 및 각각의 중간 컴포넌트와 연관되는 중간 바이너리 벡터를 포함하며, 각각의 중간 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함할 수 있다. 상기 하나 이상의 중간 컴포넌트는 상기 심볼과 연관되는 신뢰도 지표들의 순서에 따라 정렬되고, 상기 둘 이상의 기본 검사 노드 처리부는 상기 적어도 3개의 퍼뮤테이션된 메시지 모두로부터 결정되는 중간 메시지로부터 상기 신드롬들의 세트를 계산할 수 있다.
일 실시예에서, 적어도 1개의 기본 검사 노드 처리부는 상기 적어도 1개의 에러 정정 코드 구성의 대수적 구조에서 가산 연산을 적용함으로써 중간 컴포넌트에 포함되는 상기 심볼을 결정하고, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼 및 상기 제2 메시지의 컴포넌트에 포함된 심볼에 적용될 수 있다.
일 실시예에서, 적어도 1개의 기본 검사 노드 처리부는 주어진 대수적 구조에서 가산 연산을 적용함으로써 중간 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표를 결정하고, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표 및 상기 제2 메시지의 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표에 적용될 수 있다. 일부 실시예에서, 상기 주어진 대수적 구조는 실수 필드, 정수 필드 및 자연수 필드로 이루어진 군 중에서 선택될 수 있다.
일 실시예에서, 상기 적어도 3개의 퍼뮤테이션된 메시지에 포함된 각각의 컴포넌트는 초기 바이너리 값과 연관될 수 있다. 상기 제1 메시지 및 상기 제2 메시지의 각각의 컴포넌트는 상기 초기 바이너리 값들로부터 도출되는 바이너리 벡터와 연관될 수 있다. 적어도 1개의 기본 검사 노드 처리부는 벡터 결합 연산을 적용함으로써 상기 중간 메시지의 각 중간 컴포넌트와 연관되는 상기 중간 바이너리 벡터를 결정하도록 구성되며, 상기 벡터 결합 연산은 상기 제1 메시지의 컴포넌트와 연관되는 바이너리 벡터 및 상기 제2 메시지의 컴포넌트와 연관되는 바이너리 벡터에 적용될 수 있다.
일 실시예에 따르면, 상기 초기 바이너리 값은 심볼들과 연관되는 신뢰도 지표들에 따라 변할 수 있다. 특히, 각 퍼뮤테이션된 메시지에 대해, 가장 신뢰도 높은 심볼을 포함하는 상기 퍼뮤테이션된 메시지의 컴포넌트는 사전에 정의된 제1 값과 동일한 초기 바이너리 값과 연관되고, 상기 퍼뮤테이션된 메시지의 나머지 컴포넌트들은 사전에 정의된 제2 값과 동일한 초기 바이너리 값과 연관될 수 있다.
일 실시예에서, 상기 사전에 정의된 제1 값은 0과 동일하고, 상기 사전에 정의된 제2 값은 1과 동일할 수 있다.
다른 실시예에서, 상기 사전에 정의된 제1 값은 1과 동일하고, 상기 사전에 정의된 제2 값은 0과 동일할 수 있다.
일 실시예에서, 상기 적어도 1개의 검사 노드 처리부는 둘 이상의 컴포넌트를 포함하는 제1 메시지 및 1개의 컴포넌트를 포함하는 제2 메시지로부터 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부를 포함하고, 상기 중간 메시지는 적어도 2개의 중간 컴포넌트들을 포함할 수 있다.
일 실시예에서, 상기 적어도 1개의 검사 노드 처리부는 2개의 컴포넌트를 포함하는 제1 메시지 및 둘 이상의 컴포넌트를 포함하는 제2 메시지로부터 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부를 포함하고, 상기 결정된 중간 메시지는 적어도 3개의 중간 컴포넌트를 포함할 수 있다.
또한, 일 실시예에서, 상기 적어도 1개의 검사 노드 처리부는 1개의 중간 컴포넌트를 포함하는 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부를 포함하고, 상기 1개의 중간 컴포넌트는 제1 메시지에 포함된 가장 신뢰도 높은 컴포넌트 및 제2 메시지에 포함된 가장 신뢰도 높은 컴포넌트로부터 결정될 수 있다.
일 실시예에 따르면, 상기 적어도 1개의 검사 노드 처리부는 적어도 1개의 변수 노드 처리부와 연관되는 검사 노드 메시지에 포함된 검사 노드 컴포넌트들을 결정하도록 구성되고, 상기 결정은,
- 신드롬들의 세트로부터, 상기 신드롬들의 세트에 포함되는 바이너리 벡터들에 따라 후보 검사 노드 컴포넌트들의 세트를 결정하는 단계로서, 상기 후보 검사 노드 컴포넌트들은 하나 이상의 컴포넌트를 포함하고, 각각의 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하는, 상기 단계, 및
- 상기 심볼들과 연관되는 상기 신뢰도 지표들에 따라 상기 후보 검사 노드 컴포넌트들의 세트로부터 사전에 정의된 개수의 컴포넌트를 선택하여, 적어도 1개의 변수 노드 처리부와 연관되는 상기 검사 노드 메시지의 검사 노드 컴포넌트들을 제공하는 단계에 의할 수 있다.
일 실시예에서, 상기 후보 검사 노드 컴포넌트들은 동일한 심볼을 포함하는 둘 이상의 컴포넌트를 포함할 수 있다.
일 실시예에서, 상기 검사 노드 컴포넌트는 별개의 심볼을 포함할 수 있다.
일 실시예에 따르면, 상기 디코더는 각각의 검사 노드 처리부와 연관되는 벡터 퍼뮤테이션부를 포함할 수 있다.
다른 실시예들에서, 상기 디코더는 둘 이상의 검사 노드 처리부를 포함하고, 상기 둘 이상의 검사 노드 처리부와 연관되는 1개의 벡터 퍼뮤테이션부를 포함할 수 있다.
일 실시예에 따르면, 상기 기본 검사 노드 처리부는 직렬 아키텍처로 구현될 수 있다.
다른 실시예들에서, 상기 기본 검사 노드 처리부는 트리 아키텍처로 구현될 수 있다.
또한, 다른 실시예들에서, 상기 기본 검사 노드 처리부는 직렬 아키텍처로 구현된 하나 이상의 기본 검사 노드 처리부 및 트리 아키텍처로 구현된 하나 이상의 기본 검사 노드를 포함하는 하이브리드 아키텍처로 구현될 수 있다.
일 실시예에서, 상기 적어도 1개의 에러 정정 코드는 비-바이너리 에러 정정 코드일 수 있다.
인코딩된 신호의 추정치를 결정하기 위한 디코딩 방법이 제공된다. 상기 디코딩은 하나 이상의 변수 노드 처리부 및 하나 이상의 검사 노드 처리부 사이에서 메시지를 교환하는 단계를 포함한다. 각각의 메시지는 하나 이상의 컴포넌트를 포함한다. 상기 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함한다. 상기 방법은
- 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지들의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 퍼뮤테이션된 메시지를 생성하는 단계로서, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 순서들에 따라 정렬되는 단계,
- 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하는 단계,
- 상기 신드롬들의 세트로부터 적어도 1개의 검사 노드 메시지를 생성하는 단계, 및
- 상기 적어도 1개의 검사 노드 메시지로부터 상기 인코딩된 신호의 추정치를 결정하는 단계를 포함한다.
유리하게는, 다양한 실시예들에 따르면, 검사 노드 처리부들에서 검사 노드 메시지들의 계산에 포함되는 계산되는 신드롬들의 수를 감소시킬 수 있다. 따라서, 검사 노드 처리부에서의 계산 복잡성이 감소될 수 있다.
또한, 기본 검사 노드 처리부의 레벨에서의 프로세싱에 앞선 입력 메시지의 사전 정렬은 신드롬들을 계산하는 데 필요한 구성 요소의 수의 관점에서 기본 검사 노드 처리부의 상당한 단순화를 허용한다. 이러한 단순화는 검사 노드 처리부의 계산 및 하드웨어 구현 비용을 추가로 감소시킬 수 있게 한다.
게다가, 다양한 실시예들은 신드롬 기반 디코딩의 병렬성 및 기본 검사 노드 프로세싱의 선형 복잡성으로 인해 검사 노드 프로세싱에 있어 복잡성이 낮고 지연이 적은 아키텍처를 제공한다. 신드롬 디코딩과 기본 검사 노드 프로세싱의 조합은 검사 노드 처리부의 하드웨어 구현 비용을 감소시킨다.
본 발명의 상기 및 다른 이점은 첨부된 도면을 참조하여 설명된다.
본 명세서에 편입되고 본 명세서의 일부를 구성하는 첨부 도면은, 위에 부여된 본 발명의 일반적인 설명 및 이하에 부여된 실시예의 상세한 설명과 함께, 본 발명의 각종 실시예를 예시한다.
도 1은 일 실시예에 따른 통신 시스템에 대한 본 발명의 예시적인 적용을 도시하는 블록도;
도 2는 벡터 퍼뮤테이션부가 각각의 검사 노드 처리부와 연관되는 실시예에 따른 디코더를 도시하는 블록도;
도 3은 벡터 퍼뮤테이션부가 복수의 검사 노드 처리부와 연관되는 실시예에 따른 디코더를 도시하는 블록도;
도 4는 일 실시예에 따른, 기본 검사 노드 처리부의 구조를 도시하는 블록도
도 5는 기본 검사 노드 처리부가 직렬 아키텍처로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 6은 기본 검사 노드 처리부가 트리 구조로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 7은 기본 검사 노드 처리부가 하이브리드 아키텍처로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 8은 일 실시예에 따른, 복수의 기본 검사 노드 처리부들을 사용하는 신드롬 디코딩에 기초하여 사전 정렬된 변수 노드 메시지들로부터 검사 노드 처리부에서 검사 노드 메시지들을 결정하는 방법을 도시하는 흐름도;
도 9는 NB-LDPC 코드가 갈루아 필드 GF(64)에서 코딩율 5/6으로 구성되는 일 실시예에 따른, 가우시안 전송 채널에서 비-바이너리 LDPC 반복적 디코더를 사용하여 얻어진 프레임 에러율을 도시하는 도면;
도 10은 NB-LDPC 코드가 갈루아 필드 GF(64)에서 코딩율 5/6으로 구성되는 일 실시예에 따른, 기본 검사 노드 처리부의 수 및 기본 검사 노드 처리부의 입력 및 출력의 개수의 관점에서 복잡성을 도시하는 표;
도 11은 일 실시예에 따른, FPGA 구현에서의 슬라이스 수 및 기본 검사 노드 처리부의 레이턴시(사이클 수 단위)의 관점에서 복잡성을 도시하는 표; 및
도 12는 일 실시예에 따라, FPGA 구현에서 점유된 슬라이스 수 및 검사 노드 처리부의 레이턴시(사이클 수 단위)의 복잡성을 도시하는 표이다.
도 1은 일 실시예에 따른 통신 시스템에 대한 본 발명의 예시적인 적용을 도시하는 블록도;
도 2는 벡터 퍼뮤테이션부가 각각의 검사 노드 처리부와 연관되는 실시예에 따른 디코더를 도시하는 블록도;
도 3은 벡터 퍼뮤테이션부가 복수의 검사 노드 처리부와 연관되는 실시예에 따른 디코더를 도시하는 블록도;
도 4는 일 실시예에 따른, 기본 검사 노드 처리부의 구조를 도시하는 블록도
도 5는 기본 검사 노드 처리부가 직렬 아키텍처로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 6은 기본 검사 노드 처리부가 트리 구조로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 7은 기본 검사 노드 처리부가 하이브리드 아키텍처로 구현되는 일 실시예에 따른 검사 노드 처리부의 구조를 도시하는 블록도;
도 8은 일 실시예에 따른, 복수의 기본 검사 노드 처리부들을 사용하는 신드롬 디코딩에 기초하여 사전 정렬된 변수 노드 메시지들로부터 검사 노드 처리부에서 검사 노드 메시지들을 결정하는 방법을 도시하는 흐름도;
도 9는 NB-LDPC 코드가 갈루아 필드 GF(64)에서 코딩율 5/6으로 구성되는 일 실시예에 따른, 가우시안 전송 채널에서 비-바이너리 LDPC 반복적 디코더를 사용하여 얻어진 프레임 에러율을 도시하는 도면;
도 10은 NB-LDPC 코드가 갈루아 필드 GF(64)에서 코딩율 5/6으로 구성되는 일 실시예에 따른, 기본 검사 노드 처리부의 수 및 기본 검사 노드 처리부의 입력 및 출력의 개수의 관점에서 복잡성을 도시하는 표;
도 11은 일 실시예에 따른, FPGA 구현에서의 슬라이스 수 및 기본 검사 노드 처리부의 레이턴시(사이클 수 단위)의 관점에서 복잡성을 도시하는 표; 및
도 12는 일 실시예에 따라, FPGA 구현에서 점유된 슬라이스 수 및 검사 노드 처리부의 레이턴시(사이클 수 단위)의 복잡성을 도시하는 표이다.
본 발명의 실시예들은 감소된 계산 복잡도를 갖는 에러 정정 코드를 사용하여 인코딩된 신호를 디코딩하기 위한 장치들, 방법들 및 컴퓨터 프로그램 제품들을 단독으로 또는 조합하여 제공한다. 특히, 본 발명의 실시예들은 적어도 1개의 비-바이너리 에러 정정 코드를 사용하여 인코딩된 신호를 디코딩하는데 사용되는 반복 디코딩 알고리즘에서 검사 노드 처리부의 효율적인 구현을 위한 장치들, 방법들 및 컴퓨터 프로그램 제품들을 제공한다.
다양한 실시예에 따른 장치들, 방법들 및 컴퓨터 프로그램 제품들은 여러 유형의 디지털 데이터 전송 및 저장 장치 및 다양한 유형의 응용에 사용되는 시스템에서 구현될 수 있다. 예시적인 장치 및 시스템은 컴퓨터, 디스크, 랩톱, 전화, 스마트폰, 레코더, 기지국, 무인 항공기, 위성 등을 포함한다. 예시적인 응용은 자기 및 광학 레코딩, 디지털 텔레비전 및 비디오 방송, 디지털 통신 등을 포함한다.
본 발명의 일 실시예에 대한 다음의 설명은 단지 예시적인 목적으로 디지털 통신 시스템에 대한 것이다. 그러나, 당업자라면, 본 발명의 다양한 실시예가 위치 확인 시스템이나 우주선 시스템과 같은 다른 응용에 사용되는 다른 유형의 시스템에 통합될 수 있음을 쉽게 이해할 것이다.
도 1을 참조하면, 디지털 통신 시스템(100)에서의 본 발명의 예시적인 적용예가 도시되어있다. 예시적인 통신 시스템(100)은 다음을 포함할 수 있다.
- 유선(예를 들어, 광섬유 기반 또는 T- 선);
- 무선(예를 들어, 무선 또는 가시 광선 통신 시스템);
- 음향(예를 들어, 수중 음향 통신 시스템); 및
- 분자(예를 들어, 터널 및 파이프 라인 또는 수중 환경과 같은 지하 구조물에서 사용됨).
통신 시스템(100)은 적어도 송신기 장치(10) 및 수신기 장치(12)를 포함할 수 있다. 송신기 장치(10)(이하, "송신기")는 수신기 장치(12)(이하, "수신기")와 전송 채널(11)을 통해 데이터 정보를 통신하도록 구성된다.
컴퓨터 네트워킹 시스템과 같은 유선 통신 시스템에 본 발명을 적용함에 있어서, 송신기(10) 및/또는 수신기(12)는 유선 네트워크에서 동작하도록 구성된 임의의 장치일 수 있다. 그러한 애플리케이션의 예시적인 장치는 협역 또는 광역 유선 네트워크에 연결된 컴퓨터, 라우터 또는 스위치를 포함한다. 전송 채널(11)은 이 경우 서로 다른 접속된 디바이스들간에 데이터의 전송을 보장하기 위해 사용되는 임의의 유형의 물리적 케이블일 수 있다.
애드혹 무선 네트워크, 무선 센서 네트워크 및 무선 통신 시스템과 같은 무선 통신 시스템에 본 발명을 적용함에 있어서, 송신기(10) 및 수신기(12)는 무선 환경에서 동작하도록 구성된 임의의 유형의 고정 또는 이동 무선 장치일 수 있다. 그러한 애플리케이션에서 예시적인 장치는 랩탑, 이동 전화 및 기지국을 포함한다. 전송 채널(11)은 이 경우 임의의 무선 전파 매체일 수 있다. 또한, 전송 채널(11)은 몇몇 송신기들(10) 및 수신기들(12)을 수용할 수 있다. 그러한 실시예들에서, 다중 액세스 기술들 및/또는 네트워크 코딩 기술들은 에러 정정 코드들과 조합하여 사용될 수 있다. 예시적인 다중 액세스 기술은 TDMA(Time Division Multiple Access), FDMA(Frequency Division Multiple Access), CDMA(Code Division Multiple Access) 및 SDMA(Space Division Multiple Access)를 포함한다.
광섬유-기반 시스템과 같은 광통신 시스템에 본 발명을 적용함에 있어서, 송신기(10) 및 수신기(12)는 광 링크를 통해 전파되는 데이터 정보를 각각 송신 및 수신하도록 구성되는 임의의 광 트랜시버 장치일 수 있다. 광통신 시스템의 예시로 편광 분할 다중화(PMD) 및 모드 분할 다중화(MDM) 시스템이 있다.
임의 유형의 유선, 무선 또는 광 통신 시스템에 있어서, 전송 채널(11)은 임의의 노이즈 채널일 수 있다. 노이즈는 시스템 컴포넌트들의 열 잡음 또는 안테나에 의한 방해 간섭 복사로 인해 발생할 수 있다. 노이즈원의 예로 스위칭, 인위적 방해, 전기 스파크 및 번개가 있다. 일부 실시예에서, 전체 잡음은 부가적인 백색 가우시안 잡음(AWGN: additive white Gaussian noise)에 의해 모델링될 수 있다.
또한, 디지털 대용량 저장 장치에 적용되는 일부 실시예에 따르면, 전송 채널(11)은, 예를 들어, 소거 채널, 바이너리 대칭 채널 또는 가우시안 채널에 의해 모델링될 수 있다. 이러한 실시예에서, 전송 채널(11)은 전송(기록)될 수 있고 수신(판독)될 수 있는 임의의 유형의 저장 장치일 수 있다.
또한, 송신기(10) 및 수신기(12)는 단일 또는 다중 안테나를 구비할 수 있다. 특히, 다수의 송신 및/또는 수신 안테나가 존재하는 경우, 시공간 코딩 및 디코딩 기술은 에러 정정 코딩 및 디코딩과 함께 사용될 수 있다.
또한, 인코딩된 데이터는 하나 또는 다수의 주파수 대역을 통해 전송될 수 있다. 인코딩된 데이터가 다중 주파수 대역을 통해 전송되는 경우, 변조기(105)는 직교 주파수 분할 멀티플렉싱(OFDM) 및 필터 뱅크 다중 캐리어(FBMC)와 같은 다중-캐리어 변조 포맷을 사용할 수 있다.
본 발명의 일 실시예에 따르면, 송신기(10)는 선형 블록 에러 정정 코드를 사용하여 u로 표시되는 디지털 입력 데이터 블록(101)을 코드워드(c)로 인코딩하도록 구성되는 에러 정정 코드(ECC) 인코더(103)를 포함할 수 있다. 수신기(12)는 전송 채널(11)을 통해 인코딩된 데이터 또는 코드워드의 노이즈 복사본(p)을 수신하도록 구성될 수 있다. 수신기(12)는 디지털 출력 데이터 블록(125)을 원래의 디지털 입력 데이터 블록(101)의 추정치(u')로서 전송하도록 구성되는 에러 정정 코드 디코더(123)를 포함할 수 있다.
디지털 입력 데이터(101)는 ECC 인코더(103)에 의해 인코딩되기 이전에 사전에 압축될 수 있다. 정보 처리량을 증가시키는 임의의 소스 코딩 방식(도 1에 도시되지 않음)이 압축을 수행하기 위해 사용될 수 있다. ECC 인코더(103)에 의해 인코딩된 데이터는 변조기(105)에 의해 추가로 변조될 수 있다. 변조기(105)는 인코딩된 데이터를 아날로그 신호(s)에 매핑하고 그것을 전송 채널(11)로 맵핑하도록 구성될 수 있다.
수신기(12)는 역기능을 수행하도록 구성되는 동종 처리 수단을 포함할 수 있다. 수신기는 ECC 디코더(123)에 의한 ECC 디코딩에 앞서 전송 채널로부터 수신된 신호(p)를 복조하여 신호(y)를 생성하도록 구성되는 복조기(121)를 포함할 수 있다. 복조기(121)는 수신된 신호 또는 채널 출력을 기저 대역으로 다시 이동시키고, 저역 통과 필터링, 샘플링 및 양자화를 수행하도록 구성될 수 있다. ECC 디코더(123)에 의해 디코딩된 데이터는 임의의 소스 디코더(도 1에 도시되지 않음)를 사용하여 더 압축 해제될 수 있다. ECC 디코더(123)는 본 발명의 다양한 실시예에 따른 다수의 검사 노드 처리부를 포함하는 반복 디코딩 알고리즘을 구현하도록 구성될 수 있다.
또한, 본 발명의 일 실시예에 대한 이하의 설명은 단지 예시적인 목적으로 선형 블록 에러 정정 코드에 대하여 이루어질 것이다. 그러나, 당업자는 컨벌루션 코드를 포함하는 임의의 선형 코드 및 일반적 임의의 에러 정정 코드에도 본 발명의 다양한 실시예가 적용된다는 것을 용이하게 이해할 것이다.
따라서, ECC 인코더(103)는 C(n,k)로 지정되는 선형 블록 에러 정정 코드를 구현할 수 있다. 여기서, n 및 k는 각각 코드 워드의 길이 및 인코딩된 데이터 블록의 길이를 나타낸다. ECC 인코더(103)는 길이(k)의 메시지 벡터(u)를 코드워드(c)로 인코딩하고, 여기서 c는 길이 n의 벡터이다. 따라서 코드워드(c)는 "심볼"이라고도 불리는 n개의 요소로 구성된다. n개의 심볼 중 n-k개의 심볼은 '패리티 심볼'이라고도 불리는 중복(redundancy) 심볼에 해당한다. 여분의 패리티 심볼들은 송신 동안 발생하는 임의의 에러를 수신기(12)가 검출하고 가능하면 정정하도록 하는 역할을 한다.
선형 코드(C(n,k))는 G로 표시되는 생성 행렬 및 H로 표시되는 패리티 검사 행렬을 사용하여 행렬 형태로 나타낼 수 있다. 벡터의 행 표시법을 사용하면, 생성 행렬 G는 의 k x n의 차원을 갖는 반면, 패리티 검사 행렬은 (n-k) x n의 차원을 갖는다. 두 행렬은 G.Ht=0 관계로 연관된다. 또한 두 행렬의 엔트리들은 에러 정정 코드가 구성되는 대수적 구조에 속한다. 행렬 표현을 사용하면, 임의의 코드 워드 c는 방정식 c.Ht=0을 만족한다. 이 방정식을 "패리티 검사 방정식"이라고도 한다. 이는 어떠한 임의의 코드 워드도 만족하도록 설계된 n개의 패리티 검사 제약 조건을 정의한다.
행렬 표현과 연관하여, 선형 코드(C(n,k))는 "태너 그래프(tanner graph)"라고 하는 양분 그래프 H를 사용하여 표현될 수 있다. 이 그래프는 n개의 변수 노드와 n-k개의 검사 노드로 구성된다.
각 변수 노드(vn∈ 1, 2, ..., n)는 패리티 검사 행렬의 열과 연관된다. 각 검사 노드(cn∈ 1, 2, ..., n-k)는 패리티 검사 행렬의 행, 즉 패리티 검사 방정식과 연관된다. 변수 노드(vn)는 패리티 검사 행렬의 엔트리(Hvn,cn)가 0이 아닌 경우, 즉, Hvn,cn≠0이면 검사 노드(cn)에 연결된다.
Hv(vn)는 변수 노드(vn)에 연결된 검사 노드들의 세트를 나타낸다. 마찬가지로, Hc(cn)는 검사 노드(cn)에 연결된 변수 노드들의 세트를 나타낸다.
변수 노드(vn)(검사 노드(cn)과 동등)의 차수는 세트 Hv(vn)의 카디널리티(여기서, 세트 Hc(cn)의 카디널리티와 동등)에 해당한다.
일 실시예에 따르면, 에러 정정 코드의 구성의 대수적 구조는 "필드"라고도 불리는 임의의 0이 아닌 가환 나눗셈환(non-zero commutative division rings)일 수 있다. 필드의 예시로 실수 필드, 복소수 필드, 유리수 필드 및 유한 필드('갈루아 필드'라고도 함)를 포함할 수 있다.
일 실시예에 대한 다음의 설명은 단지 예시적인 목적으로 유한 필드에 대한 것이다. 그러나, 당업자는 본 발명이 0이 아닌 가환 나눗셈환과 같은 임의의 나눗셈환형 대수적 구조 및 유한 나눗셈 근환(finite division near-rings)과 같은 임의의 근환에 적용될 수 있음을 쉽게 이해할 것이다. 유한 나눗셈 근환에 대한 비-바이너리 에러 정정 코드의 설계는 문헌["Non-binary LDPC codes over finite division near rings," 2016 23rd International Conference on Telecommunications(ICT), Thessaloniki, 2016, pp. 1-7"]을 참조한다.
일반적으로 GF(q)로 표시되는 갈루아 필드(Galois field)를 통해 구성되는 선형 코드의 경우, q≥2인 q는 코드의 카디널리티(cardinality)를 나타내며, 심볼들은 GF(q) 내의 값들을 취한다. 따라서, 코드워드(c)는 각각 GF(q)에 속하는 n개의 심볼들의 벡터이다. 심볼이 GF(2)에 속하면 코드는 바이너리이다. 반면, q>2 일 때, 코드는 비-바이너리라고 한다.
다음의 일부 실시예의 설명은 단지 예시적인 목적으로, 비-바이너리 LDPC 코드를 사용하여 데이터를 인코딩하는 ECC 인코더(103)에 대한 것이다. 그러나, 당업자는 본 발명의 다양한 실시예가 다른 비-바이너리 코드들 및 일반적으로 바이너리 및 비-바이너리 선형 블록 에러 정정 코드들과 비-바이너리 터보 코드들에도 적용된다는 것을 쉽게 이해할 것이다. 비-바이너리 에러 정정 코드는 고 스펙트럼 효율 코딩에 유리하게 사용될 수 있다.
예를 들어, ECC 디코더(123)는 비-바이너리 LDPC 코드를 이용하여 ECC 인코더(103)에 의해 인코딩된 데이터를 디코딩하기 위한 비-바이너리 LDPC 코드 디코더를 구현한다. ECC 디코더(123)는, 확장된 최소-합(extended min-sum)(이하, "EMS") 알고리즘' 또는 '최소-최대(이하, "min-max") 알고리즘'과 같은 임의의 반복 비-바이너리 LDPC를 구현할 수 있다.
EMS 알고리즘에 적용되는 특정 적용예에 따르면, 본 발명의 다양한 실시예는 EMS 알고리즘을 사용하는 반복 디코딩 프로세스에 포함된 검사 노드 처리부들을 효율성과, 낮은 레이턴시 및 낮은 복잡도를 제공하도록 구현한다. 본 발명의 설명은 EMS 알고리즘에 대한 것이다. 그러나, 당업자는 다양한 실시예가 min-max 디코딩 알고리즘과 같은 반복 비-바이너리 LDPC 코드 디코더에도 적용된다는 것을 쉽게 이해할 것이다.
도 2를 참조하면, EMS 알고리즘을 사용하는 일 실시예에 따른 반복 비-바이너리 LDPC 디코더(123)의 구조가 도시되어 있다.
반복 디코더(123)는 수신된 잡음 시퀀스(y)로부터 송신기(10)에 의해 송신된 코드워드(c)의 추정치(c')를 결정하도록 구성될 수 있다. 여러 반복을 통해 신호를 처리하여, 각 반복마다 신호를 전송된 코드워드(c)에 더 가깝게 만들 수 있다.
반복 디코더(123)는 송신기(10)에서 사용되는 코드 C(n,k)의 태너 그래프 표현에 기초하여 추정치(c')를 결정하도록 구성될 수 있다. 따라서, 반복 디코더(123)는 n개의 변수 노드 처리부(23-1 내지 23-n) 및 n-k개의 검사 노드 처리부(25-1 내지 25-(n-k))를 포함할 수 있다.
각 변수 노드 처리부(23-vn)는 태너 그래프의 하나의 변수 노드에 매핑된다. 각 검사 노드 처리부(25-cn)는 태너 그래프의 하나의 검사 노드에 매핑된다. 여기서, 변수 노드 처리부(23-vn) 및 검사 노드 처리부(25-cn)는 메시지를 반복적으로 교환하여 잡음 시퀀스(y)로부터 가장 신뢰도있는 코드워드(c')를 추정하도록 구성될 수 있고, 여기서 vn=1, …, n이고, cn=1, …, n이다.
이하에서, 변수 노드 처리부에 의해 전달되는 메시지는 '변수 노드 메시지'라고 하고, 검사 노드 처리부로부터 전달되는 메시지는 '검사 노드 메시지'라고 한다.
변수 노드(vn)에 대응하는 변수 노드 처리부(23-vn)는 세트 Hv(vn)에 대응하는 검사 노드 처리부(25-cn)로부터 검사 노드 메시지들을 메시지를 수신하도록 구성될 수 있다. 변수 노드 처리부(23-vn)는 또한 이들 검사 노드 메시지들을 처리하고 세트 Hv(vn) 내의 검사 노드들에 대응하는 적어도 1개의 검사 노드 처리부(25-cn)에 변수 노드 메시지들을 전달하도록 구성될 수 있다.
마찬가지로, 검사 노드 cn에 대응하는 검사 노드 처리부(25-cn)는 세트 Hc(cn) 에 대응하는 변수 노드 처리부(23-vn)로부터 변수 노드 메시지들을 수신하도록 구성될 수 있다. 검사 노드 처리부(25-cn)는 세트 Hc(cn) 내의 변수 노드들에 대응하는 적어도 1개의 변수 노드 처리부(23-vn)에 검사 노드 메시지들을 전달하도록 구성될 수 있다.
다양한 변수 노드 처리부(23-vn) 및 검사 노드 처리부(25-cn)에 의해 수행되는 프로세싱은 몇몇 스케줄링 메카니즘에 따라 구현될 수 있다.
제1 구현예에 따르면, 모든 변수 노드 처리부들(23-vn)은 제1 라운드에서 동작하도록 구성될 수 있고, 그 다음 모든 검사 노드 처리부들(25-cn)이 대응하는 세트들 Hc(cn) 내의 변수 노드 처리부들로 전송될 메시지들을 업데이트하도록 구성될 수 있으며, 여기서, vn=1, …, n이고 cn=1, …, n-k이다. 이러한 특정 스케줄링은 "플러딩 스케줄링"이라고 한다. 특히, 검사 노드 처리부들(25-cn)은 2 내지 n-k개의 검사 노드 처리부들(25-cn)이 동시에 동작하는 경우, 직렬 또는 병렬로 동작하도록 구성될 수 있다.
"수평 스케쥴링"에 기초한 제2 구현예에 따르면, 검사 노드 처리부들(25-cn)은 직렬로 동작하여, 이에 연결된 모든 변수 노드 처리부들(23-vn)을 업데이트할 수 있고, 여기서 cn=1,…,n-k이다. 특히, 검사 노드 처리부들(25-cn)들의 그룹은 병렬로 동작하여, 변수 노드 처리부(23-vn)가 충돌(예를 들어, 2개의 검사 노드 처리부들(25-cn)이 동일한 변수 노드 처리부(23-vn)와 연결되는 경우)하지 않는다면, 모든 연결된 변수 노드 처리부들(23-vn)을 업데이트하도록 구성될 수 있다.
"수직 스케줄링"에 기초한 제 3 구현예에 따르면, 변수 노드 처리부들(23-vn)은 직렬로 동작하여, 이들에 연결된 모든 검사 노드 처리부(25-cn)를 업데이트하도록 구성될 수 있다.
메시지 교환은 변수 노드 처리부들(23-vn)에 의해 초기화될 수 있다. 처리된 신호가 패리티 검사 방정식을 만족시키거나 모든 패리티 검사 제약 조건을 충족시키지 않더라도 최대 반복 횟수에 도달하면 종료될 수 있다.
따라서, 반복 디코더(123)는, 디코딩 프로세스의 각 반복에서, 검사 노드 처리부(25-cn)에 의해 전달되는 검사 노드 메시지를 수신하도록 구성되는 신호 추정부(29)를 포함하고,
- 처리된 신호가 패리티 검사 방정식을 만족하면, 원래의 코드 워드의 추정치로서 처리된 신호를 전달하거나,
- 모든 패리티 검사 제약 조건을 만족시키지 않더라도 최대 반복 횟수에 도달하면, 디코딩 실패를 선언하지만, 그럼에도 마지막 반복에서 추정된 코드워드를 출력한다.
도 2에 도시된 바와 같이, 반복 디코더(123)는 수신된 시퀀스(y)를 저장하도록 구성되는 저장 유닛(22)을 더 포함할 수 있다. 반복 디코더는 또한 저장부(22)로부터 로딩된 수신되는 시퀀스(y)에 기초하여 변수 노드 처리부들(23-vn)에 의해 전달될 변수 노드 메시지들의 초기 값들을 결정하도록 구성되는 계산부(21)를 포함할 수 있다.
변수 노드 처리부들(23-vn)과 검사 노드 처리부들(25-cn) 사이에 교환된 메시지들은 심볼들에 대한 대표 정보를 전달할 수 있다
일 실시예에 따르면, 교환된 메시지의 길이는 선형 코드를 구성하는데 사용된 갈루아 필드의 차수와 동일할 수 있다. 따라서, 각각의 교환된 메시지는 GF(q)에서 구성되는 코드들에 대한 길이(q)의 벡터일 수 있다.
연결정(soft-decision) 디코딩과 관련한 다른 실시예에서, 교환된 메시지들은 심볼들 및 그의 신뢰도를 측정하는 지표(이하, '신뢰도 지표'라고도 함)들의 값들을 전달할 수 있다. 신뢰도 지표의 값은 심볼의 신뢰도와 관련된다. 이러한 실시예들에서, 각각의 교환된 메시지는 q개의 컴포넌트를 포함하는 벡터이고, 여기서 컴포넌트는 GF(q) 내의 심볼의 값 및 그 신뢰도 지표를 포함할 수 있다.
일 실시예에서, 심볼의 신뢰도 지표는 심볼이 올바를 확률을 나타내는 심볼의 확률 밀도 함수에 대응할 수 있다. 특히, 신뢰도 지표는 로그 우도비(LLR; logarithmic likelihood ratio) 값에 의해 로그 영역에서 표현될 수 있다.
반복 디코딩 프로세스의 계산 복잡도는 검사 노드 처리부(25-cn)에 의해 수행되는 계산에 달려있다. 비-바이너리 LDPC 코드를 디코딩하기 위해 EMS 알고리즘을 사용하는 일 실시예에서, 검사 노드 처리부(25-cn)에 의해 수행되는 프로세싱의 계산 복잡성은, 디코딩 에러 성능을 손상시키지 않으면서도 감소될 수 있다.
검사 노드 처리부들(25-cn)에서 처리 과정에서의 계산 복잡성을 감소시키기 위해, 복수의 기본 검사 노드 처리부에 의해 수행되는 기본 계산들에 기초한 검사 노드 처리부들의 사전 정렬 기술 및 구현 아키텍처들이 제공된다.
사전 정렬 기술의 목적은 상기 변수 노드 메시지들의 변수 노드 컴포넌트들에 포함된 심볼들과 연관된 신뢰도 지표들에 따라 변수 노드 메시지들을 정렬함으로써 검사 노드 처리부(25-cn)에 의해 처리될 변수 노드 메시지들의 통계를 분극화하는 것이다. 이러한 사전 정렬 기술은 검사 노드 메시지들을 계산하는데 필요한 컴포넌트의 개수를 감소 시키는 장점을 가질 수 있고, 검사 노드 처리부에서의 계산 복잡성을 감소시킬 수 있다.
일 실시예에 따르면, 사전 정렬 기술은 검사 노드 처리부(25-cn) 내에서 구현될 수 있다.
다른 실시예에서, 사전 정렬 기술들은 검사 노드 처리부들(25-cn) 내에 구현되지 않은 벡터 퍼뮤테이션부 내에서 구현될 수 있다. 따라서, 디코더(123)는 변수 노드 처리부들(23-vn)로부터 변수 노드 메시지들의 세트를 수신하고 각각의 검사 노드 처리부(25-cn)로 전달될 퍼뮤테이션된 메시지들을 생성하도록 구성되는 적어도 1개의 벡터 퍼뮤테이션부(24)를 포함할 수 있다. 여기서, 변수 노드 처리부들(23-vn)로부터 발생되는 변수 노드 메시지들이 상기 검사 노드 처리부에 제공되며, 이때, vn은 1과 n 사이에서 가변한다.
일 실시예(도 2에 도시)에서, 디코더(123)는 각 검사 노드 처리부(25-cn)와 연관되는 벡터 퍼뮤테이션부(24)를 포함할 수 있다. 예를 들어, 이러한 구성은 검사 노드 처리부들(25-cn)이 병렬로 동작하는 실시예들에 해당할 수 있다.
도 3에 도시된 다른 실시예에서, 디코더(123)는 복수의 검사 노드 처리부(25-cn)와 연관되는 벡터 퍼뮤테이션부(31)를 포함할 수 있다. 예를 들어, 이러한 구성은 검사 노드 처리부들(25-cn) 중 적어도 일부가 병렬로 동작하고 다른 일부는 직렬로 동작하는 실시예들에 해당할 수 있다.
다음의 실시예는 단지 설명의 목적으로 각 검사 노드 처리부(25-cn)와 연관되는 벡터 퍼뮤테이션부(24)에 대한 것이다. 또한, 일부 실시예에 대한 설명의 이해를 돕기 위해, 검사 노드 처리부(25-cn)의 레벨이 표시되며, 여기서 cn은 1 내지 n-k 사이의 값을 갖는다. 검사 노드 처리부(25-cn)의 차수는 dcn으로 표시된다. 즉, 태너 그래프(H) 내에서 대응하는 검사 노드는 세트 Hc(cn)를 구성하는 dcn개의 변수 노드들에 연결된다. 유리하게, 검사 노드 처리부(25-cn)의 차수는 dcn≥3을 만족시킬 수 있다.
세트 Hc(cn) 내의 노드들과 연관되는 변수 노드 처리부들에 의해 전송되는 변수 노드 메시지들은 U1,U2,...Udcn으로 표시된다. 검사 노드 처리부(25-cn)에 의해 생성되어 세트 Hc(cn) 내의 변수 노드 처리부(23-vn)로 제공되는 검사 노드 메시지들은 V1,V2,...Vdcn으로 표시된다.
GF(q) 내의 차수(d_cn)의 검사 노드 식은 검사 노드 처리부(25-cn)와 연관하여 다음과 같이 정의될 수 있다:
EMS 알고리즘을 사용하는 일부 실시예에 따르면, 변수 노드 처리부(23-vn)로부터 전달되는 메시지는 가장 신뢰도가 높은 nm,in개의 컴포넌트만을 유지하기 위해 정렬 및 절단될 수 있고, 여기서 nm,in은 q보다 아주 작다(nm,in ≪q). 정렬은 심볼들과 연관되는 신뢰도 지표들의 주어진 순서(예를 들어, 오름순 또는 내림순)로 수행될 수 있다. 또한, 정렬 및 절단 작업은 변수 노드 처리부들(23-vn) 또는 벡터 퍼뮤테이션부들(24)에 의해 수행될 수 있다.
다음의 설명은, 단지 설명의 목적으로, 변수 노드 처리부(23-vn)에 의해 전송된 변수 노드 메시지들의 정렬 및 절단에 기초하는 소프트-출력 디코딩을 사용하는 일부 실시예에 대한 것이다. 이러한 실시예들에서, 각각의 변수 노드 메시지(Ui)는 다음 식(2)에 의해 주어지는 1열 벡터 표현의 nm,in개의 변수 노드 컴포넌트를 포함하는 벡터이다:
여기서, 변수 노드 컴포넌트()는 로 표시되는 심볼을 포함하고, 상기 심볼과 연관되는 신뢰도 지표는 Ui +[j]로 표시되며, 이때, j=0, ... , nm,in-1이다. 가장 신뢰도가 높은 심볼을 포함하는 컴포넌트가 컴포넌트 Ui[0]에 대응하고 Ui +[j+1]≥ Ui +[j]이도록, 각각의 변수 노드 메시지의 컴포넌트들이 정렬될 수 있으며, 여기서 i=1, ... , dcn이고 j=0, ... , nm,in -2이다.
벡터 퍼뮤테이션부들(24)에 의해 사전 정렬 기술이 수행되는 실시예에서, 검사 노드 처리부(25-cn)와 연관되는 벡터 퍼뮤테이션부(24)는, 세트(Hc(cn))에 대응하는 변수 노드 처리부들에 의해 송신되는 변수 노드 메시지들 U1, U2, ... , Udcn을 포함하는, UIN= U1, U2, ... ,Udcn으로 표시되는 적어도 3개의 변수 노드 메시지들의 세트를 수신하도록 구성될 수 있다. 변수 노드 메시지들의 1열 벡터 표시법을 사용하면, 세트 UIN은 다음과 같이 쓸 수 있다:
벡터 퍼뮤테이션부(24)는 하나 이상의 벡터 퍼뮤테이션을 변수 노드 메시지들에 포함된 심볼()과 연관되는 신뢰도 지표 Ui +[j]에 따라 변수 노드 메시지들의 세트(UIN= U1, U2, ... , Udcn)에 적용함으로써, UP1, UP2, ... , UPdcn로 표시되는 퍼뮤테이션된 메시지들을 결정하도록 구성될 수 있다. 벡터 퍼뮤테이션은 πt로 표시되며, 여기서 t=1, ..., Tmax이고, Tmax는 하나 이상의 벡터 퍼뮤테이션의 수를 지정한다.
일 실시예에 따르면, 벡터 퍼뮤테이션부(24)는, 각 벡터 퍼뮤테이션(πt)과 연관하여, jt로 표시되며 1 내지 nm,in 사이의 값을 취하는 퍼뮤테이션 인덱스를 결정하도록 구성될 수 있다.
퍼뮤테이션 인덱스(jt가 주어지는 경우, 벡터 퍼뮤테이션(πt)는, 변수 노드 메시지들(Ui) 내의 jt번째 신뢰도 있는 컴포넌트들에 대응하는 컴포넌트들 Ui[jt]의 신뢰도 지표들에 따라 세트(UIN= U1, U2, ... ,Udcn) 내의 변수 노드 메시지들 중 둘 이상을 퍼뮤테이션하도록 적용될 수 있다.
벡터 퍼뮤테이션(πt)의 결과로 퍼뮤테이션된 메시지들을 포함하는 퍼뮤테이션 세트UP1 t, UP2 t, ... , UPt dcn은 다음과 같은 형태로 표현될 수 있다:
벡터 퍼뮤테이션(24)은 다음과 같은 4 단계를 수행함으로써 벡터 퍼뮤테이션(πt)에 대응하는 퍼뮤테이션된 메시지들를 결정하도록 구성될 수 있다.
1) 변수 노드 메시지들의 세트(UIN)에서 컴포넌트들 Ui[jt]에 대응하는 벡터 Pt를 다음과 같이 추출한다:
변수 노드 메시지의 벡터 표시법을 사용하면, 추출된 벡터(P)에 포함된 컴포넌트들은 다음과 같이 변수 노드의 컴포넌트들에 해당한다:
2) i=1, ... , dcn에 대하여, 컴포넌트 Ui[jt]에 포함된 신뢰도 지표들 Ui +[jt]의 주어진 순서로 벡터 Pt를 정렬하여 벡터Pt 를 결정한다. 정렬은 신뢰도 지표들의 오름순 또는 내림순으로 수행될 수 있다.
3) 생성된 벡터(SPt)로부터, 벡터(Pt)의 정렬과 연관되는 퍼뮤테이션(πt)을 결정한다. 정렬된 벡터(SPt)는 다음과 같이 표현될 수 있다:
4) 변수 노드 메시지들의 세트에 퍼뮤테이션(πt)을 적용하여 식(4)에 따라 세트(UPt)를 얻는다.
일 실시예에 따르면, 하나 이상의 벡터 퍼뮤테이션(πt)의 개수(Tmax)는 사전에 정의될 수 있다.
다른 실시예에 따르면, 하나 이상의 벡터 퍼뮤테이션(πt)의 개수(Tmax)는 신호 대 잡음비, 변수 노드 메시지들(Ui,i = 1, ... ,dcn)에 포함된 컴포넌트의 개수(nm,in), 에러 정정 코드(C(n,k))(예를 들어, 코드 구성의 대수적 구조) 및 반복 디코딩 프로세스의 반복 횟수에 따라 결정될 수 있다.
또한, 일 실시예에서, 벡터 퍼뮤테이션부(24)는 변수 노드 메시지의 개수, 즉, 검사 노드 처리부(25-cn)의 차수, 및/또는 변수 노드 메시지들의 컴포넌트들의 일부에 포함된 신뢰도 지표들, 및/또는 에러 정정 코드(C(n,k)) 구성의 대수적 구조에 따라 퍼뮤테이션 인덱스(jt)를 결정하도록 구성될 수 있다.
예를 들어, 일 실시예에서, 벡터 퍼뮤테이션의 개수(Tmax)는 1과 동일할 수 있고, 즉, 단일 퍼뮤테이션(πl)에 대응하는 Tmax=1이다.
이러한 실시예에서, 퍼뮤테이션 인덱스는 유리하게 1과 동일할 수 있고, 즉, j1=1일 수 있다. 따라서, 변수 노드 벡터들은 컴포넌트들(U1[1], U2[1], Udcn[1])이 신뢰도 지표들(Ui +[1])의 주어진 순서로 정렬되는 방식으로 퍼뮤테이션될 수 있고, 여기서 i=1, ... ,dcn이다.
다음으로, 결정된 퍼뮤테이션된 메시지들(UP1, UP2,, ... ,UPdcn)은 세트(Hc(cn))의 변수 노드들과 연관되는 변수 노드 처리부들로부터 변수 노드 메시지들을 수신하도록 구성되는 검사 노드 처리부(25-cn)로 보내진다. 검사 노드 처리부(25-cn)는 세트(Hc(cn)) 내의 변수 노드들과 연관되는 각 변수 노드 처리부(23-vn)와 연관되는 검사 노드 메시지(Vi)를 적어도 3개의 퍼뮤테이션된 메시지들(UP1, UP2, , ... , UPdcn)로부터 생성하도록 구성되어, 검사 노드 메시지()가 퍼뮤테이션된 메시지(UPi)와 연관될 수 있고, 여기서 i=1, ... , dcn이다.
일부 실시예에서, 검사 노드 처리부(25-cn)에 의해 생성된 검사 노드 메시지들은 검사 메시지(Vi)가 다음과 같은 형태로 nm,out개의 검사 노드 컴포넌트를 포함하는 벡터가 되도록 정렬되고 절단될 수 있다:
검사 노드 컴포넌트()는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하고, 여기서 j=0, ..., n(m,out)-1이다. 변수 노드 메시지와 마찬가지로, 각 검사 노드 메시지는 신뢰도 지표들의 주어진 순서(오름순 또는 내림순)에 따라 정렬될 수 있다. 특히, 검사 노드 메시지의 검사 노드 컴포넌트들은, 가장 신뢰도 높은 심볼을 포함하는 컴포넌트가 컴포넌트(Vi[0])에 대응하고, Vi +[j+1]≥Vi +[j]를 만족하도록 정렬될 수 있으며, 여기서 i=1, ... , dcn이고, j=0, ... , n(m,out)-2이다.
일 실시예에 따르면, 검사 노드 메시지들에 포함된 검사 노드 컴포넌트의 계산은 기본 계산에 기초하여 수행가능하며, 상당한 복잡성 감소를 가능하게 한다.
따라서, 검사 노드 처리부(25-cn)는 퍼뮤테이션된 메시지들(UP1, UP2,, ... , UPdcn)로부터 S={S1, S2, ... , SNS}로 표시되는 NS개의 신드롬들의 세트를 계산하도록 구성되는 둘 이상의 기본 검사 노드 처리부(26)를 포함할 수 있다. 여기서, 검사 노드 메시지들에 포함된 검사 노드 컴포넌트들은 신드롬들의 세트에서 도출된다.
신드롬들의 세트의 계산을 위한 기본 검사 노드 처리부들(26)의 사용은 신드롬 디코딩의 계산 복잡성을 감소시킬 수 있다. 실제로, 기본 검사 노드 처리부(26)의 사용으로, 검사 노드 메시지를 결정하기 위해 사용되는 계산된 신드롬의 수가 감소되어, 계산되는 신드롬들의 많은 개수로 인해 일반적으로 발생하는 계산 복잡성을 경감시키면서 신드롬 디코딩의 병렬성을 이용할 수 있도록 한다. 또한, 기본 검사 노드 처리부들(26)은 계산된 중간 메시지들에서(심볼들의 신뢰도 지표들의 순서에 따라) 정렬된 컴포넌트들을 제공한다. 결과적으로, 종래에는 신드롬 계산 이후에 적용되던 정렬 연산을 생략할 수 있어, 정렬 처리에 요구되는 계산 복잡성을 감소시킬 수 있을 뿐만 아니라 구현 비용 또한 감소시킬 수 있다.
일부 실시예에 따르면, 신드롬들의 세트(S={S1, S2, ... , SNS})는 둘 이상의 기본 검사 노드 처리부(26)에 의해 계산된 복수의 중간 메시지로부터 결정될 수 있다.
보다 구체적으로, 차수(dcn)의 검사 노드 처리부(25-cn)는 d_cn-1개의 기본 검사 노드 처리부(26)를 포함할 수 있다. 각각의 기본 검사 노드 처리부(26)는 제1 및 제2 메시지로부터 중간 메시지를 결정하도록 구성될 수 있으며, 제1 및 제2 메시지는 퍼뮤테이션된 메시지들(UP1, UP2,, ... , UPdcn)로부터 파생된다.
여기서, UP't로 표시되는 중간 메시지는 nt ≥ 1개의 정렬된 중간 컴포넌트 및 각각의 중간 컴포넌트와 연관되는 중간 바이너리 벡터를 포함할 수 있으며, 중간 컴포넌트는 이에 포함된 심볼의 신뢰도 지표들의 주어진 순서에 따라 정렬된다.
일 실시예에서, 각 기본 검사 노드 처리부(26)는 갈루아 필드에서 (일반적으로 에러 정정 코드가 구성되는 구조에서) 가산 연산을 적용함으로써 중간 메시지의 중간 컴포넌트에 포함된 심볼을 결정하도록 구성될 수 있으며, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼 및 상기 제2 메시지의 컴포넌트에 포함된 심볼에 적용된다.
또한, 각각의 기본 검사 노드 처리부(26)는, 상기 제1 메시지의 컴포넌트에 포함된 신뢰도 지표 및 상기 제2 메시지의 컴포넌트에 포함된 신뢰도 지표에 대해, 주어진 대수적 구조에서 가산 연산을 적용함으로써, 중간 메시지의 중간 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표를 결정하도록 구성될 수 있다.
일 실시예에 따르면, 대수적 구조는 실수 필드(R), 정수 필드(Z) 및 자연수 필드(N)로 이루어진 군에서 선택될 수 있다.
예를 들어, 양자화된 하드웨어 구현 및 소프트웨어 구현에서, 각각의 기본 검사 노드 처리부(26)는, 정수 필드(Z) 또는 자연수 필드(N)에서 가산 연산을 적용함으로써, 중간 메시지의 중간 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표를 결정하도록 구성되어, 복잡도를 감소시킬 수 있다.
일 실시예에 따르면, 검사 노드 처리부(25-cn)는 또한 초기 바이너리 값과 퍼뮤테이션된 메시지들(UP1)의 각각의 컴포넌트()를 연관시키도록 구성될 수 있고, 여기서 j=0, ... , n(m,out)-1이고 i=1, ... ,dcn이다.
일 실시예에 따르면, 컴포넌트들(UPi[j])에 연관되는 초기값은 상기 컴포넌트들에 포함된 심볼()과 연관되는 신뢰도 지표들(UPi +[j])에 따라 달라질 수 있다. 특히, 검사 노드 처리부(25-cn)는 사전에 정의된 제1 값과 동일한 초기 바이너리 값을 가장 신뢰도가 높은 심볼을 포함하는 컴포넌트와 연관시키고 사전에 정의된 제2 값과 동일한 초기 바이너리 값을 나머지 컴포넌트들과 연관시킬 수 있다.
일 실시예에 따르면, 사전에 정의된 제1 값은 영(0)과 같을 수 있고 사전에 정의된 제2 값은 일(1)과 같을 수 있다. 그러한 실시예에서, 컴포넌트(UPi[j])와 연관되는 바이너리 값은 UPi DBV[j]로 표기될 수 있고, 다음과 같이 나타낼 수 있다:
정렬된 퍼뮤테이션된 메시지를 고려하면, 조건식(9)은 상기 컴포넌트에 포함된 심볼이 가장 신뢰도 높은 심볼이면, 퍼뮤테이션된 메시지에 포함된 컴포넌트와 연관되는 초기 바이너리 값에 비트 값 '0'을 할당함을 나타낸다.
다른 실시예들에 따르면, 사전에 정의된 제1 값은 일('1')과 같고 사전에 정의된 제2 값은 영('0')과 같을 수 있다. 따라서, 이 컴포넌트에 포함된 심볼이 가장 신뢰도 높은 심볼이면, 퍼뮤테이션된 메시지에 포함된 컴포넌트와 연관되는 초기 바이너리 값에 비트 값 '1'을 할당한다. 이는 다음과 같이 표현될 수 있다:
따라서, 주어진 기본 검사 노드 처리부(26)에 의해 처리되는 제1 및 제2 메시지의 각각의 컴포넌트는 초기 바이너리 값으로부터 도출되는 바이너리 벡터와 연관될 수 있다. 이 실시예에서, 각각의 기본 검사 노드 처리부(26)는, 벡터 결합 연산을 적용함으로써, 중간 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성될 수 있으며, 벡터 결합 연산은 상기 제1 메시지의 컴포넌트와 연관되는 바이너리 벡터 및 상기 제2 메시지의 컴포넌트와 연관되는 바이너리 벡터에 적용된다.
또한, dcn-1개의 기본 검사 노드 처리부들(26) 중에서, 적어도 1개의 기본 검사 노드 처리부(26)는, 2개의 퍼뮤테이션된 메시지로부터의 중간 메시지의 각각의 컴포넌트와 연관되는 중간 메시지 및 중간 바이너리 벡터를 결정하도록 구성될 수 있고, 여기서 제1 메시지 및 제2 메시지는 제1 퍼뮤테이션 및 제2 퍼뮤테이션된 메시지와 각각 동일하다.
기본 검사 노드 처리부(26)에 의한 중간 메시지의 계산에 대한 다음의 설명은 제1 메시지 및 제2 메시지가 모두 퍼뮤테이션된 메시지와 동일한 경우의 프로세싱에 대한 것이다. 도 4는 그러한 실시예에 따른 기본 검사 노드 처리부(26)를 도시한다. 따라서, 기본 검사 노드 처리부(26)는 제1 퍼뮤테이션된 메시지(UP1) 및 제2 퍼뮤테이션(UPp) 메시지를 처리하도록 구성될 수 있으며, 여기서 l 및 p≠l인 p는 1 내지 dcn의 세트 내에서 변화한다. 각각 심볼의 n_(m,in)개의 컴포넌트들 및 그 신뢰도 지표를 포함하는 이들 2개의 퍼뮤테이션된 메시지들로부터, 기본 검사 노드 처리부(26)는 nt개의 중간 컴포넌트()를 포함하는 UP't표시되는 중간 메시지를 결정하고, 각각의 중간 컴포넌트(UPt'[j])와 연관되는 UPt'DBV[j]로 표시되는 중간 바이너리 벡터를 결정하도록 구성될 수 있다. 중간 메시지에 포함된 중간 컴포넌트들은 그 안에 포함된 심볼들의 신뢰도 지표들에 따라 주어진 순서에 따라 정렬되어, 모든 j=0, ..., nt-2에 대하여 를 만족할 수 있다.
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 제1 메시지(UP_l)로부터의 n1≤nm,in개의 컴포넌트들 및/또는 제2 메시지(UP_p)로부터의 np≤nm,in개의 컴포넌트들을 처리함으로써 중간 메시지를 결정하도록 구성될 수 있다.
제1 및 제2 메시지가 퍼뮤테이션된 메시지와 다른, 즉, 아키텍처 내의 이전 기본 검사 노드 처리부(26)에 의해 전달된 중간 메시지에 대응하는 일 실시예에 따르면, 제1 메시지로부터 처리되는 컴포넌트의 개수(nl) 및/또는 제2 메시지로부터 처리되는 컴포넌트의 개수(np)는 기본 검사 노드 처리부(26)에 의해 이전에 전달된 컴포넌트의 개수에 상응할 수 있다. 즉, 주어진 기본 검사 노드 처리부(26)에 의해 처리되는 컴포넌트의 개수는 아키텍처의 내의 이전 단계에 위치한 기본 검사 노드 처리부에 의해 처리되는 이전 중간 메시지들에 포함되는 컴포넌트의 개수에 따라 달라질 수 있다.
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 3 단계에 따라 중간 메시지를 결정하도록 구성될 수 있다.
제1 단계에서, 기본 검사 노드 처리부(26)는 제1 메시지(UP1)의 컴포넌트 및 제2 메시지(UPP)의 컴포넌트로부터 보조 컴포넌트들의 세트를 결정하도록 구성될 수 있다. 보조 구성 요소는 "버블(bubble)"이라고 한다. 이때, Bt[u][v]로 표시되는 버블은 제1 메시지(UPl)에 포함된 컴포넌트(UPl[u]) 및 제2 메시지(UPp)에 포함된 컴포넌트(UPp[v])로부터 얻어지는 버블을 말한다. 인덱스(u)는 0,1, ..., n_l-1에서 변하고 인덱스(v)는 0,1, ..., n_p-1에서 변한다. 버블()는 다음을 포함하는 컴포넌트이다:
- Bt +[u][v]로 표시되는 신뢰도 지표.
또한, Bt DBV[u][v]로 표시되는 바이너리 벡터는 버블(Bt[u][v])과 연관될 수 있다.
고려된 버블들의 총 개수는 nt 와 nl× np 사이에서 변화하며, 즉, nt개 이상이고, nl× np개 이하일 수 있다.
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 에러 정정 코드 구성의 대수적 구조에서 가산 연산을 적용함으로써, 보조 컴포넌트(Bt[u][v])의 심볼()을 결정하도록 구성될 수 있다. 갈루아 필드에서 구성되는 코드들에 대해, 가산 연산은 갈루아 필드(GF(q))에서 수행된다. 가산 연산은 제1 메시지(UPl)의 컴포넌트(UPl[u])에 포함된 심볼() 및 제2 메시지(UPp)의 컴포넌트(UPp[v])에 포함된 심볼()에 다음과 같이 적용된다:
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 주어진 대수적 구조에서 가산 연산을 적용함으로써, 보조 컴포넌트(Bt[u][v])의 신뢰도 지표 (Bt +[u][v])를 결정하도록 구성될 수 있다. 가산 연산은 제1 메시지(UPl)의 컴포넌트(UPl[u])에 포함된 신뢰도 지표(UPl +[u]) 및 제2 메시지(UPp)의 컴포넌트(UPp[v])에 포함된 신뢰도 지표(UPp +[v])에 다음과 같이 적용된다:
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 벡터 결합 연산을 적용함으로써 보조 컴포넌트(Bt[u][v])와 연관되는 바이너리 벡터(Bt DBV[u][v])를 결정하도록 구성될 수 있다. 벡터 결합 연산은 제1 메시지(UPl)의 컴포넌트(UPl[u])완 연관되는 바이너리 벡터(UPl DBV[u]) 및 제2 메시지(UPp)의 컴포넌트(UPp[v])와 연관되는 바이너리 벡터(UPpDBV[v])에 다음과 같이 적용된다.
식(13)에서, 연산자 ||는 둘 이상의 입력 스칼라 또는 벡터로부터 벡터 형식의 목록을 제공하는 결합 연산을 나타내며, 목록의 요소는 결합된 입력들과 같다.
제2 단계에서, 기본 검사 노드 처리부(26)는 이들 컴포넌트들에 포함된 심볼들의 신뢰도 지표들의 주어진 순서에 따라, 결정된 보조 컴포넌트들(버블들)을 정렬하도록 구성될 수 있다.
제3 단계에서, 기본 검사 노드 처리부(26)는 정렬된 보조 컴포넌트들 중에서, 가장 신뢰도있는 심볼들을 포함하는 nt개의 컴포넌트들을 선택하여, 중간 메시지(UPt') 및 상기 중간 메시지에 포함된 nt개의 컴포넌트의 각 컴포넌트와 연관되는 바이너리 벡터를 제공하도록 구성될 수 있다.
또한, 중간 메시지에 포함된 컴포넌트의 개수(nt)는 고려된 버블의 개수보다 적을 수 있다.
하나 이상의 벡터 퍼뮤테이션(πt)을 사용하는 변수 노드 메시지들의 사전 정렬은 기본 검사 노드 처리부(26)를 사용하는 기본 계산들과 조합하여 여러 이점을 나타낸다. 기본 검사 노드 처리부들(26)에 의해 수행되는 작업은 단순화될 수 있다. 기본 검사 노드 처리부들(26)은 상이한 동작을 수행한다는 점에서 상이한 아키텍처를 가질 수 있으며, 따라서 최적의 에러 디코딩 성능을 제공하면서도 복잡성이 감소된 고속 구현을 가능하게 한다.
따라서, 일 실시예에서, 검사 노드 처리부(25-cn)는 둘 이상의 컴포넌트(즉, nt≥2)를 포함하는 제1 메시지(UPl) 및 1개의 컴포넌트(즉, np=1)를 포함하는 제2 메시지(UPp)로부터 중간 메시지를 결정하도록 구성되는 적어도 1개의 기본 검사 노드 처리부(26)를 포함할 수 있고, 결정된 중간 메시지(UPt') 적어도 2개의 중간 컴포넌트(즉, nt≥2)를 포함할 수 있다. 이 기본 검사 노드 처리부(26)는 'S-1B'라고 불린다.
일 실시예에서, 검사 노드 처리부(25-cn)는 둘 이상의 컴포넌트(즉, nt≥2)를 포함하는 제1 메시지(UPl) 및 2개의 컴포넌트(즉, np=2)를 포함하는 제2 메시지(UPp)로부터 중간 메시지를 결정하도록 구성되는 적어도 1개의 기본 검사 노드 처리부(26)를 포함할 수 있고, 결정된 중간 메시지(UPt')는 적어도 3개의 중간 컴포넌트(즉, nt≥3)를 포함할 수 있다. 이러한 기본 검사 노드 처리부(26)는 'S-1B+1'라고 불린다.
또한, 일 실시예에서, 검사 노드 처리부(25-cn)는 1개의 컴포넌트(즉, nl=1)를 포함하는 제1 메시지(UPl) 및 1개의 컴포넌트(즉, np=1)를 포함하는 제2 메시지(UPp)로부터 중간 메시지를 결정하도록 구성되는 적어도 1개의 기본 검사 노드 처리부(26)를 포함하며, 결정된 중간 메시지(UPt')는 1개의 중간 컴포넌트(즉, nt=1)를 포함할 수 있다. 이러한 기본 검사 노드 처리부(26)는 '1B'라고 불린다.
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 직렬 아키텍처로 구현될 수 있다.
도 5는 직렬 아키텍처에서 구현되는 dcn-1개의 기본 검사 노드 처리부(51-1)를 포함하는 차수(dcn)의 검사 노드 처리부(25-cn)의 구조를 도시하며, 여기서 l=1, ... , dcn-1이다. 특히, 검사 노드 처리부(25-cn)는 2개의 퍼뮤테이션된 메시지들(UPl 및 UPp)을 처리함으로써 중간 메시지 및 그 중간 메시지와 연관되는 중간 바이너리 벡터를 결정하도록 구성되는 기본 검사 노드 처리부(51-1)를 포함할 수 있다. l=2, ... , dcn-1 에 대한 나머지 기본 검사 노드 처리부(51-1)는 직렬 아키텍처의 이전 스테이지에서 동작하는 기본 검사 노드 처리부(51-a)에 의해 이전에 결정된 1개의 퍼뮤테이션된 메시지 및 1개의 중간 메시지를 처리함으로써 중간 메시지 및 상기 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성될 수 있으며, 여기서 a=1, ... ,l-2이다.
일 실시예에 따르면, 기본 검사 노드 처리부(26)는 트리 구조로 구현될 수 있다. 이 실시예에서, 검사 노드 처리부(25-cn)는 2개의 퍼뮤테이션된 메시지를 처리함으로써 중간 메시지 및 상기 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하는 적어도 1개의 기본 검사 노드 처리부(26)를 포함할 수 있다. 나머지 기본 검사 노드 처리부(26)는 2개의 퍼뮤테이션된 메시지를 처리하거나 트리 아키텍처의 이전 스테이지에서 동작하는 2개의 기본 검사 노드 처리부(26)에 의해 이전에 결정된 2개의 중간 메시지를 처리함으로써 중간 메시지 및 상기 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성될 수 있다.
도 6은 트리 구조에서 dcn-1개의 기본 검사 노드 처리부를 구현하는 차수(dcn=8)의 검사 노드 처리부(25-cn)의 구조를 도시한다. 도시된 바와 같이, 트리 구조는 3개의 스테이지(이하, '레이어'라고 함)로 구성된다. 제1 레이어에 포함된 기본 검사 노드 처리부들(61)은 각각 2개의 퍼뮤테이션된 메시지를 처리함으로써 중간 메시지를 결정하도록 구성될 수 있다. 제2 레이어에 포함된 기본 검사 노드 처리부들(63)은 각각 아키텍처의 제1 레이어에서 기본 검사 노드(61)에 의해 전달된 2개의 중간 메시지를 처리함으로써 중간 메시지를 결정하도록 구성될 수 있다. 제 3 레이어에 포함된 기본 검사 노드 처리부(65)는 각각 아키텍처의 제2 레이어에서 기본 검사 노드(63)에 의해 전달된 2개의 중간 메시지를 처리함으로써 중간 메시지를 결정하도록 구성될 수 있다.
일 실시예에 따르면, 검사 노드 처리부(25-cn)는, 예를 들어, 도 7에 도시된 바와 같이, 직렬 및 트리 구조를 혼합하는 하이브리드 구조로 구현된 dcn-1개의 기본 검사 노드 처리부(26)를 포함할 수 있다. 이러한 실시예들에서, 검사 노드 처리부(25-cn)는 2개의 퍼뮤테이션된 메시지들을 처리함으로써 중간 메시지 및 상기 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하는 적어도 1개의 기본 검사 노드 처리부(71) 및 퍼뮤테이션된 메시지 및 하이브리드 아키텍처의 이전 스테이지에 위치하는 기본 검사 노드 처리부(71)에 의해 생성된 중간 메시지를 처리함으로써 중간 메시지 및 상기 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하는 적어도 1개의 기본 검사 노드 처리부(73)를 포함할 수 있다.
일 실시예에 따르면, 신드롬들의 세트(S={S1,S2, ... ,SNS})는 모든 퍼뮤테이션된 메시지들로부터 계산된 중간 메시지로부터 결정될 수 있다.
예를 들어, 도 5에 도시된 바와 같이 기본 검사 노드 처리부들의 직렬 아키텍처를 사용하는 실시예에서, 신드롬들의 세트는 기본 검사 노드 처리부(51-dcn-1)에 의해 전달된 중간 메시지로부터 결정될 수 있다.
도 6에 예시된 바와 같이, 트리 구조를 사용하는 다른 예에서, 신드롬들의 세트는 트리 구조의 마지막 단계에 위치하는 기본 검사 노드 처리부(65)에 의해 전달된 중간 메시지로부터 결정될 수 있다.
여기서, 로 표시되는 신드롬은 ,+로 표시되는 GF(q) 심볼, 상기 심볼과 연관되며 Sr +로 표시되는 신뢰도 지표 및 Sr DBV로 표시되는 바이너리 벡터를 포함할 수 있고, 여기서 r은 r=1, ... , NS이다.
식(14)에서, i=1, ... , dcn에 대한 각 인덱스(ui)는 세트({0, 1, ... , nm,in-1}) 내에서 변한다.
게다가, 신드롬(Sr +)에 포함된 바이너리 벡터 (Sr DBV)는, 퍼뮤테이션된 메시지들의 각 컴포넌트와 연관되는 초기 바이너리 값들의 함수로서, 다음과 같이 표현될 수 있다:
식(16)에 따르면, 신드롬(Sr)에 포함된 바이너리 벡터Sr DBV 는 dcn개의 비트를 포함한다.
일 실시예에 따르면, 신드롬(NS)의 개수는 각 퍼뮤테이션된 메시지의 컴포넌트의 개수보다 크거나 같을 수 있고 갈루아 필드의 차수에 따라 달라질 수 있다.
예를 들어, GF(64)에서, 신드롬의 개수는 NS=3nm,out=10n,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 통상 n(m,out)=20일 수 있다.
GF(256)를 고려하는 다른 예에서, 신드롬의 개수는 NS=3nm,out=20n,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 일반적으로 n(m,out)=60일 수 있다.
GF(1024)를 고려하는 또 다른 예에서, 신드롬의 개수는 NS=3nm,out=45n,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 일반적으로 n(m,out)=150일 수 있다.
결정된 신드롬들의 세트(S={S1, S2, ... , SNS})가 주어지면, 세트(Hc(cn))에서 변수 노드들과 연관하여 변수 노드 처리부에 전달될 검사 노드 메시지들(Vi)에 포함되는 검사 노드 컴포넌트들(Vi[j])은 다음과 같이 결정될 수 있다:
1) 신드롬들의 세트로부터, 상기 신드롬들의 세트에 포함된 바이너리 벡터들에 의존하는 후보 검사 노드 컴포넌트들의 세트를 결정하는 단계로서, 상기 후보 검사 노드 컴포넌트들은 심볼 및 신뢰도 지표를 포함하는 하나 이상의 컴포넌트를 포함하며, 일부 실시예에서, 후보 검사 노드 컴포넌트들은 동일한 심볼을 포함하는 둘 이상의 컴포넌트들을 포함할 수 있는, 상기 후보 검사 노드 컴포넌트들의 세트를 결정하는 단계, 및
2) 상기 심볼들과 연관되는 상기 신뢰도 지표들에 따라, 상기 결정된 후보 검사 노드 컴포넌트들의 세트로부터 다수의 검사 노드 컴포넌트들(n(m, out))을 선택하는 단계로서, 상기 검사 노드 컴포넌트들은 별개의 심볼들을 포함하는, 상기 검사 노드 컴포넌트들(n(m, out))을 선택하는 단계.
따라서, 검사 노드 처리부(25-cn)는, 각각의 검사 노드 메시지(Vi)와 연관하여, NS개의 신드롬들(S)의 결정된 세트로부터, Vi'로 표시되는 후보 검사 노드 컴포넌트들의 세트를 결정하도록 구성되는 상관 해제부(27)를 포함할 수 있다. 각각의 후보 검사 노드 컴포넌트()는 심볼() 및 상기 심볼과 연관되는 신뢰도 지표(V'i +[z])를 포함한다.
더 구체적으로, 일 실시예(도면에 도시되지 않음)에 따르면, 상관 해제부(27)는 dcn개의 기본 상관 해제부들을 포함할 수 있으며, 각각의 기본 상관 해제부는 검사 노드 메시지(Vi)와 연관되고 신드롬들의 세트(S)의 각 신드롬에 포함된 바이너리 벡터들에 의존하는 후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하도록 구성된다.
따라서, DBV(Discard Binary Vectors)라고 불리는 바이너리 벡터는 신드롬이 폐기되어야 하고, 따라서 상관 해제부(27)에 의해 선택되지 않아야 하는 출력 에지를 지시하는데 사용될 수 있다. 보다 정확하게는, 기본 상관 해제부는, 결정된 신드롬들의 세트(S) 중에서 바이너리 벡터들()을 포함하는 신드롬들을 선택함으로써, 각각의 검사 노드 메시지(Vi)와 연관되는 후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하도록 구성되어, 검사 노드 메시지(Vi와 연관되는 비트(Sr DBV[i])가 주어진 값과 동일하도록 한다. 신드롬에 포함된 바이너리 벡터 내의 비트의 판독은 신드롬의 선택을 유효화하거나 유효화하지 않음으로써, 주어진 검사 노드 메시지와 연관하여 후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하기 위해 사용될 수 있다. 따라서, 각각의 기본 상관 해제부는, 선택된 유효 신드롬들에 포함된 심볼들 및 그의 신뢰도 지표들로부터 후보 검사 노드 컴포넌트들의 세트를 결정하도록 구성될 수 있으며, 후보 검사 노드 컴포넌트들은 유효성 있는 신드롬들에 포함된 컴포넌트들에 대응하고, 후보 검사 노드 컴포넌트들의 세트 내의 컴포넌트의 개수는 선택된 유효 신드롬의 개수와 동일하다.
일 실시예들에 따르면, 기본 상관 해제부는, 결정된 신드롬들의 세트(S) 중에서 바이너리 벡터들()을 포함하는 신드롬들을 선택함으로써, 각 검사 노드 메시지(Vi)와 연관되는 후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하도록 구성되어, 검사 노드 메시지(Vi)와 연관되는 비트(Sr DBV[i])가 영('0')이 되도록 한다.
다른 실시예에 따르면, 기본 상관 해제부는, 결정된 신드롬들의 세트(S) 중에서 바이너리 벡터()를 포함하는 신드롬들을 선택함으로써, 각 검사 노드 메시지(Vi)와 연관되는 후보 검사 노드 컴포넌트(Vi')들의 세트를 결정하도록 구성되어, 검사 노드 메시지(Vi)와 연관되는 비트(Sr DBV[i])가 일('1')이 되도록 한다.
후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하기 위해 선택된 유효 신드롬들은,VS[z]로 표시되는 NVSi≤NS개의 유효 신드롬을 포함하며, 여기서 z=0, ... ,NVSi-1이다. 유효 신드롬(은 심볼(), 심볼과 연관되는 신뢰도 지표(VS+[z]), 및 VSDBV[z]로 표시되는 바이너리 벡터를 포함한다. 유효 신드롬들은 신뢰도 지표(VS+[z])의 순서(오름순 또는 내림순)에 따라 정렬되어, 가장 신뢰도 높은 심볼을 포함하는 유효 심볼이 VS[0]에 대응되고, VS+[z]≤VS+[z+1]이 되도록 하며, 여기서 z=0, ... ,NVSi-2이다.
유효 신드롬들이 주어졌을 때, 후보 검사 노드 컴포넌트들()은 선택된 유효 신드롬에 포함된 심볼() 및 그의 신뢰도 지표(VS+[z])의 값들로부터 결정될 수 있고, 여기서 z=0, ... , NVSi-1이다. 보다 구체적으로, 후보 검사 노드 컴포넌트(Vi'[z])에 포함된 심볼()은 다음과 같이 결정될 수 있다:
Vi'+[z]=VS+[z] (18)
검사 노드 처리부(25-cn)는 심볼들()과 연관되는 신뢰도 지표(Vi'+[z])에 의존하는 후보 검사 노드 컴포넌트들의 결정된 세트로부터, n(m,out)개의 검사 노드 컴포넌트를 선택하도록 구성되는 선택부(28)를 더 포함할 수 있고, 후보 검사 노드 컴포넌트들의 세트(Vi')는 NVSi개의 컴포넌트들로 구성된다.
일 실시예에 따르면, 선택부(28)는 후보 검사 노드 컴포넌트들의 세트로부터 별개의 심볼들을 포함하는 n(m,out)개의 검사 노드 컴포넌트들을 선택하도록 구성될 수 있다. 따라서, 선택부(28)는, 우선, 동일한 심볼을 포함하는 컴포넌트들 가운데서(즉, 중복 심볼들을 포함하는 컴포넌트들 가운데서) 가장 신뢰도 높은 심볼을 포함하는 컴포넌트를 유지하기 위해, 후보 검사 노드 컴포넌트들의 세트(Vi')에서 중복 제거를 수행하도록 구성될 수 있다. 제2 단계에서, 선택부(28)는, 처리된 후보 검사 노드 컴포넌트들에 포함된 심볼들의 신뢰도 지표들에 따라, 처리된 후보 검사 노드 컴포넌트들로부터 n( m,out )≤NVSi개의 컴포넌트들을 선택하여, 가장 신뢰도 높은 별개의 심볼들을 포함하는 n(m,out)개의 컴포넌트들이 선택되도록 구성될 수 있다.
다른 실시예에 따르면, 선택부(28)는 후보 검사 노드 컴포넌트들의 세트(Vi')에서 중복 제거만 수행함으로써, 결정된 후보 검사 노드 컴포넌트로부터 n(m,out)개의 검사 노드 컴포넌트들을 선택하도록 구성될 수 있다. 다른 말로 하자면, 선택된 n(m,out)개의 후보 검사 노드 컴포넌트들의 세트(Vi')은 별개의 심볼들을 포함하는 후보 검사 노드 컴포넌트들(Vi'[z])에 대응할 수 있다. 후보 검사 노드 컴포넌트의 세트(Vi')가 동일한 심볼을 갖는 컴포넌트들을 갖는 포함하지 않는 실시예에서, 선택된 n(m,out)개의 검사 노드 컴포넌트들은 선택된 유효 신드롬들에 포함되는 컴포넌트에 대응할 수 있으며, 이 경우, n( m,out )은 유효 신드롬의 개수, 즉, n(m,out)=NVSi이다.
다른 실시예들에 따르면, 선택부(28)는, 중복 심볼들을 포함하는 후보 검사 노드 컴포넌트들 중에서 중복 제거를 수행하지 않고, 결정된 후보 검사 노드 컴포넌트들(Vi')로부터 n(m,out)개의 검사 노드 컴포넌트들을 선택하도록 구성될 수 있다. 이러한 실시예에서, 선택부(28)는 NVS개의 검사 노드 컴포넌트 중에서, 가장 신뢰도 높은 n(m,out)≤NVSi개의 컴포넌트들을 포함하도록 구성될 수 있다.
또 다른 실시예에서, 선택부(28)는, 중복 제거를 수행하지 않고, 결정된 후보 검사 노드 컴포넌트(Vi')로부터 n( m,out )=NVSi개의 검사 노드 컴포넌트들을 선택하도록 구성될 수 있으며, 여기서, 검사 노드 컴포넌트의 개수(n( m,out ))는 선택된 유효 신드롬의 개수(NVSi)와 동일하고, 선택된 검사 노드 컴포넌트들은 선택된 유효 신드롬들에 포함되는 컴포넌트들에 대응한다.
선택부(28)가 중복 제거를 수행하지 않는 실시예들에서, 검사 노드 컴포넌트들은 동일한 심볼을 포함하는 둘 이상의 컴포넌트를 포함할 수 있다. 그러한 실시예들에서, 리던던시 제거는 검사 노드 메시지들의 변수 노드 처리부 수신기들의 레벨에서 수행될 수 있다. 일부 실시예에 따르면, 다양한 검사 노드 처리부들(25-cn)에서 구현되는 선택부들(28)은 동일한 개수(n( m,out ))의 검사 노드 컴포넌트들을 선택하여 검사 노드 메시지들을 결정할 수 있고, 여기서 cn은 1, ..., n-k에서 변화한다.
다른 실시예에 따르면, 하나 이상의 검사 노드 처리부들(25-cn)에서 구현되는 선택부들(28)은 상이한 개수(n( m,out ))의 검사 노드 컴포넌트들을 선택하도록 구성될 수 있다. 이 실시예에서, 이들 검사 노드 메시지들의 변수 노드 처리부(27-vn) 수신자들은 각 수신된 메시지에서 동일한 수의 컴포넌트를 보유하기 위해 절단 작업을 수행하도록 구성될 수 있다.
또한, 일 실시예에 따르면, 검사 노드 컴포넌트의 개수(n( m,out ))는 퍼뮤테이션된 메시지내의, 또는 동등하게, 변수 노드 메시지내의 컴포넌트의 개수(nm,in)와 다를 수 있다. 특히, 검사 노드 컴포넌트의 개수는 n( m,out )≥ nm,in을 만족시킬 수 있다.
일 실시예에서, 검사 노드 컴포넌트의 개수(n( m,out ))는 퍼뮤테이션된 메시지들에 포함되는 컴포넌트의 개수(nm,in)에 따라 달라질 수 있다.
검사 노드 컴포넌트의 개수(n( m,out ))는 에러 정정 코드(예를 들어, 그 위에 코드가 구성되는 대수적 구조) 및/또는 반복 디코딩 프로세스의 디코딩 반복 횟수 및/또는 신호 대 잡음비 및/또는 검사 노드 처리부들(215-cn)의 계산 및 저장 성능에 따라 달라진다.
일 실시예에서, 검사 노드 컴포넌트의 개수(n( m,out ))는 이전에 언급된 인자들의 조합에 따라 달라질 수 있다.
예를 들어, GF(64)의 갈루아 필드의 경우, 검사 노드 컴포넌트의 개수(n(m,out))는 nm,out=3nm,in 에 따라 퍼뮤테이션된 메시지에 포함된 컴포넌트의 개수와 연관될 수 있다. GF(1024)의 갈루아 필드의 경우, 검사 노드 컴포넌트의 개수(n(m,out))는 nm,out=15nm,in 에 따라 퍼뮤테이션된 메시지에 포함된 컴포넌트의 개수와 연관될 수 있다.
검사 노드 처리부(25-cn)는, 변수 노드 메시지들을 퍼뮤테이션하기 위해 수행되는 벡터 퍼뮤테이션 작업의 역에 대응하는 스위칭 동작을 수행한 후에, 검사 노드 메시지들을, 대응하는 변수 노드 처리부들에 전달하도록 구성될 수 있다. 스위칭 동작은, 각 검사 노드 메시지를, 각각의 검사 노드 처리부(25-cn)에 대한 세트(Hc(cn))내의 변수 노드들과 연관되는 해당 변수 노드 처리부(23-vn)와 연관시키는 것을 가능하게 한다.
일 실시예에 따르면, 검사 노드 처리부(25-cn)는 검사 노드 메시지들을 신호 추정부(29)에 전송하도록 구성될 수 있다. 신호 추정부(29)는
- 최대 반복 횟수의 반복에 아직 도달하지 않고 패리티 검사 방정식이 만족되지 않은 경우, 검사 노드 메시지들을 검사 노드 메시지의 변수 노드 처리부(23-vn) 수신자들에 전송하거나,
- 처리된 신호가 패리티 검사 방정식을 만족하는 경우, 원래 코드워드의 추정치로서 처리된 신호를 전달하거나,
- 모든 패리티 검사 제약 조건을 만족시키지 않더라도 최대 반복 횟수에 도달하는 경우, 디코딩 실패를 선언하지만, 그럼에도 마지막 반복에서 추정된 코드워드를 출력한다.
도 8은 다양한 실시예들에 따른 비선형 LDPC 코드를 디코딩하기 위한 EMS 알고리즘에서 구현되는 검사 노드 처리부에서 검사 노드 메시지를 결정하는 방법을 설명하기 위한 흐름도로서, 여기서 복수의 기본 검사 노드 처리부들을 이용한 기본 계산들을 포함하는 사전 정렬 신드롬 디코딩은 검사 노드 처리부에서 수행된다. 따라서, 변수 노드 처리부들에 의해 검사 노드 처리부들로 전송되는 변수 노드 메시지들은 변수 노드 메시지들의 컴포넌트들에 포함된 심볼들의 신뢰도 지표들에 따라 사전 정렬된다.
다음의 일 실시예의 설명은 단지 설명의 목적으로, LLR 값에 의해 로그 영역으로 표현된 소프트-출력 디코딩 및 신뢰도 지표들에 대한 것이다. 그러나, 당업자는 심볼의 신뢰도를 측정하기 위해 다른 유형의 디코딩 및 신뢰도 지표가 사용될 수 있음을 쉽게 이해할 것이다.
검사 노드 처리부에서의 검사 노드 메시지들의 계산 방법은 EMS 알고리즘의 반복 디코딩 프로세스 동안 수행되는 메시지 교환의 일부이다. 상기 디코딩 방법은 신뢰 전달 디코딩 규칙을 적용함으로써, 벡터(y=(y1, ... ,yn)에 의해 표현되는 수신된 잡음 시퀀스로부터 원래의 코드워드(c)의 추정치()를 결정하도록 수행될 수 있다. 코드워드(c=c1, ... ,cn)는 q>2 인 갈루아 필드(GF(q))에 대해 구성되는, C(n,k)로 지정되는 비-바이너리 LDPC 코드를 사용하여 송신기에서 인코딩될 수 있다.
LLR은 심볼의 신뢰도를 측정하는 지표이다. LLR 지표의 하나의 정의는 고정된 기준 심볼을 포함한다. 여기서, Bi로 표시되는 심볼(ci)의 참조 심볼은 다음을 만족시키는 가장 신뢰도 높은 심볼에 대응할 수 있다:
식(19)에서, at 는 GF 심볼을 나타낸다.
LLR 지표의 이러한 정의를 사용하면 가장 신뢰도 높은 심볼들은 가장 작은 LLR 값들을 갖는 심볼들이다. 따라서, i번째 심볼(ci)에 대하여, at와 동일할 이 심볼에 대한 LLR 값은, LLRt(ci)로 표시될 수 있으며, 다음과 같이 표현될 수 있다:
설명의 명료성을 위해, 일 실시예에 대한 다음 설명은 변수 노드 메시지들의 세트로부터 벡터 퍼뮤테이션부에 의해 생성된 퍼뮤테이션된 메시지들을 수신하는 검사 노드 처리부에서의 프로세싱에 초점을 맞추어 이루어진다. 여기서, dcn개의 정렬되고 절단된 퍼뮤테이션된 메시지(UP1,UP2, ... ,UPdcn)를 수신하고, dcn개의 검사 노드 메시지들(V1,V2, ... ,Vn)을 생성하도록 구성된 차수(dcn)의 검사 노드 처리부의 레벨 표시가 다음에서 고려된다.
단계(801)는, 태너 그래프 내의 연결된 변수 노드들에 대응하는 변수 노드 처리부들로부터 검사 노드 처리부로 전송될 변수 노드 메시지들을 퍼뮤테이션하도록 구성되는 벡터 퍼뮤테이션부의 레벨에서 수행될 수 있다. 따라서, dcn개의 변수 노드 메시지(UP1,UP2, ... ,UPdcn)의 세트가 수신될 수 있다. 변수 노드 메시지들은 정렬되고 절단될 수 있다. 따라서, 각각의 변수 노드 메시지는 각 컴포넌트에 포함된 신뢰도 지표들의 주어진 순서로 정렬된 nmin≪q개의 컴포넌트들을 포함할 수 있다. 특히, LLR이 심볼의 신뢰도를 측정하는 지표인 실시예에서, 가장 신뢰도 높은 심볼들은 가장 작은 LLR 값들을 갖는 심볼이다. 따라서, 각 변수 노드 메시지(Ui)는 에 따른 벡터 표시법으로 쓰여져, j=0, ... ,nm,in-1 에 대하여 각각의 컴포넌트()는 로 표시되는 심볼 및 상기 심볼과 연관되는 Ui +[j]로 표시되는 LLR 지표를 포함하고, 가장 신뢰도 높은 심볼을 운반하는 컴포넌트는 컴포넌트(Ui[0])에 대응하며, 이고, 여기서, i=1, ... , dcn이고, 이다.
검사 노드 메시지 는 n(m,out)개의 검사 노드 컴포넌트를 포함하는 벡터일 수 있다. 검사 노드 컴포넌트()는 심볼 및 상기 심볼과 연관되는 LLR 지표를 포함하며, 여기서 j=0, ... ,nm,out-1이다. 변수 노드 메시지와 마찬가지로, 각각의 검사 노드 메시지는 LLR 지표들의 오름순에 따라 정렬되어, 가장 신뢰도 높은 심볼을 포함하는 검사 노드 컴포넌트는 컴포넌트(Vi[o])에 대응하며, Vi +[j+1]≥Vi +[j]이고, 여기서 i=1, ... , dcn이며, j=0, ... , nm,out-2이다.
변수 노드 메시지들의 세트는 UIN=(U1,U2,...Udcn)로 쓰여질 수 있고, 식(3)과 같이 표현될 수 있다.
단계(803)에서, 변수 노드 메시지들(U1,U2,...Udcn)에 포함되는 심볼들()과 연관되는 신뢰도 지표들()에 따라 하나 이상의 벡터 퍼뮤테이션(π_t)이 변수 노드 메시지들의 세트에 적용되어 퍼뮤테이션된 메시지들(UP1,UP2,...UPdcn)이 결정되고, 여기서 각 벡터 퍼뮤테이션(πt)은 퍼뮤테이션 인덱스(jt)와 연관되고, 퍼뮤테이션 인덱스는 1과 nmin 사이의 값을 취하며,t=1,...Tmax이다.
더 구체적으로, 벡터 퍼뮤테이션(πt)은 j번째 신뢰도 높은 심볼을 포함하는 컴포넌트에 대응하는 컴포넌트들(Ui[jt])의 신뢰도 지표들에 따라 세트(UIN) 내의 둘 이상의 변수 노드 메시지들을 퍼뮤테이션하기 위해 적용될 수 있다.
벡터 퍼뮤테이션(πt)을 사용하는 퍼뮤테이션된 메시지들의 결정은 다음의 4 단계로 수행될 수 있다:
1) 식(4) 및 식(5)에 따라, 변수 노드 메시지들의 세트(UIN)로부터, 컴포넌트들(Ui[jt])에 대응하는 벡터(Pt)를 추출하는 단계'
2) 컴포넌트들(Ui[jt])에 포함된 신뢰도 지표들(Ui+[jt])의 주어진 순서로 벡터(Pt)를 정렬하여 벡터(SP')를 결정하는 단계로서, i=1, ... , dcn이고, 정렬은 신뢰도 지표의 오름순 또는 내림순으로 수행될 수 있으며, 특히, LLR 지표들에 의해 측정되는 심볼들의 신뢰도가 측정되는 실시예에서, 벡터(Pt)의 정렬은 지표들(Ui+[jt])의 오름순으로 수행될 수 있는 단계;
3) 상기 생성된 벡터(SP')로부터, 정렬된 벡터(SP')를 식(7)과 같이 표현할 수 있도록 상기 벡터(Pt)의 정렬과 연관되는 퍼뮤테이션(πt)을 결정하는 단계; 및
4) 변수 노드 메시지들의 세트에 퍼뮤테이션(πt)을 적용하여 세트(UPt)를 얻는 단계.
일 실시예에 따르면, 하나 이상의 벡터 퍼뮤테이션(πt)의 개수(Tmax)는 사전에 정의될 수 있다.
다른 실시예들에 따르면, 하나 이상의 벡터 퍼뮤테이션(πt)의 개수(Tmax)는 신호 대 잡음비, 변수 노드 메시지들(Ui,i = 1, ... ,dcn)에 포함된 컴포넌트의 개수(nmin), 에러 정정 코드(C(n,k))(예를 들어, 코드 구성의 대수적 구조) 및 반복 디코딩 프로세스의 반복 횟수에 따라 결정될 수 있다.
또한, 일 실시예에서, 퍼뮤테이션 인덱스(jt)는, 변수 노드 메시지의 개수, 즉, 검사 노드 처리부(25-cn)의 차수, 및/또는 변수 노드 메시지들의 컴포넌트들의 일부에 포함된 신뢰도 지표들, 및/또는 에러 정정 코드(C(n,k))의 구성의 대수적 구조(예를 들어, 갈루아 필드에서 구성되는 코드들의 갈루아 필드의 차수)에 따라 결정될 수 있다.
특정 실시예에서, 벡터 퍼뮤테이션의 개수(Tmax)는 1과 동일할 수 있는데, 즉, 단일 퍼뮤테이션(π1)에 대응하는 Tmax=1이다. 이러한 실시예들에서, 퍼뮤테이션 인덱스는 유리하게 1과 동일할 수 있고, 즉, j1 = 1일 수 있다. 따라서, 변수 노드 벡터들은 컴포넌트(U1[1], U2[1], ... , Udcn[1])이 신뢰도 지표(Ui+[1])의 주어진 순서로 정렬되는 방식으로 퍼뮤테이션될 수 있고, 여기서 i=1, ... , dcn이다. 특히, 변수 노드 벡터들은 퍼뮤테이션되어 성분들(U1[1], U2[1], ... , Udcn[1])이 LLR 값의 오름순으로 정렬될 수 있다.
변수 노드 메시지의 컴포넌트의 개수(nm,in)는 퍼뮤테이션된 메시지의 컴포넌트의 개수와 같다. 또한, 각 퍼뮤테이션된 메시지는 컴포넌트()의 신뢰도 지표들의 주어진 순서로 정렬되고, 여기서 j=0, ... , nm,in-1이다. 특히, 각 퍼뮤테이션된 메시지는 LLR 지표들의 오름순으로 정렬되어, 가장 신뢰도가 높은 심볼을 운반하는 컴포넌트는 컴포넌트 (UPi[O])에 대응하며, UPi+[u]≤UPi+[v])이고, 여기서 i=1, ... , dcn이고, 0≤u<v≤nm,in-1이다.
단계(804)에서, 상기 결정된 퍼뮤테이션된 메시지(UP1, UP2, ... , UPdcn)는, 단계(803)에서 사전 정렬되기 전에, 세트(Hc(cn)) 내의 변수 노드들과 연관되는 변수 노드 처리부들로부터 상기 적어도 3개의 변수 노드 메시지들을 수신하도록 구성된 적어도 1개의 검사 노드 처리부(25-cn)로 전송된다. 상기 퍼뮤테이션된 메시지들은 유리하게 적어도 3개의 메시지와 같을 수 있다.
단계(805)에서, 초기 바이너리 값이 퍼뮤테이션된 메시지들(UPi)에 포함된 각각의 컴포넌트(UPi[j])와 연관될 수 있으며, 여기서 j=0, ... , nm,in-1이고, i=1, ... , dcn이다.
일 실시예에 따르면, 컴포넌트들(UPi[j])과 연관되는 초기 바이너리 값은 상기 컴포넌트들에 포함된 심볼들()과 연관되는 신뢰도 지표들(UPi +[j])에 따라 달라질 수 있다. 특히, 사전에 정의된 제1 값과 동일한 초기 바이너리 값은 가장 신뢰도 있는 심볼을 포함하는 컴포넌트와 연관될 수 있고, 사전에 정의된 제2 값과 동일한 초기 바이너리 값은 나머지 구성 요소들과 연관될 수 있다.
일 실시예에 따르면, 사전에 정의된 제1 값은 영('0')와 같을 수 있고 사전에 정의된 제2 값은 일('1')과 같을 수 있다. 그러한 실시예에서, 컴포넌트(UPi[j])와 연관되는 바이너리 값은 식(9)와 같이 나타낼 수 있다.
다른 실시예에 따르면, 사전에 정의된 제1 값은 일('1')과 같고 사전에 정의된 제2 값은 영('0')과 같을 수 있다. 따라서, 식(10)에서 주어진 바와 같이, 컴포넌트에 포함된 심볼이 가장 신뢰도 높은 심볼이면, 퍼뮤테이션된 메시지에 포함된 상기 컴포넌트와 연관되는 초기 바이너리 값은 비트 '1'과 같을 수 있다.
단계(807)이 수행되어 복수의 기본 검사 노드 처리부(26)를 사용하여 퍼뮤테이션된 메시지들로부터 NS개의 신드롬을 포함하고 S={S1, S2, ... , SNS}로 표시되는 신드롬들의 세트가 결정될 수 있다. 신드롬()은 로 표시되는 심볼, 상기 심볼과 연관되고 Sr+ 로 표시되는 LLR 지표 및 SrDBV로 표시되는 바이너리 벡터를 포함할 수 있다.
일 실시예에 따르면, 신드롬(S)들의 세트는 각 기본 검사 노드 처리부(26)에 의해 개별적으로 결정되는 중간 메시지로부터 결정될 수 있다. 보다 구체적으로, 신드롬들의 세트는 모든 퍼뮤테이션된 메시지로부터 결정되는 중간 메시지에 의해 결정될 수 있다.
여기서, UPt'로 표시되는 중간 메시지는 nt개의 정렬된 중간 컴포넌트들 및 각 중간 컴포넌트와 연관되는 중간 바이너리 벡터를 포함할 수 있고, 주어진 중간 메시지에 포함된 중간 컴포넌트들은 그 안에 포함된 심볼들의 LLR 지표들의 오름순으로 정렬된다.
일 실시예에 따르면, 중간 메시지는 퍼뮤테이션된 메시지로부터 도출되는 제1 메시지 및 제2 메시지를 처리함으로써 결정될 수 있다.
따라서, 일 실시예에서, 갈루아 필드에서 (일반적으로 그 위에 에러 정정 코드가 구성되는 구조에서) 가산 연산을 적용함으로써, 중간 메시지의 중간 컴포넌트에 포함된 심볼이 결정될 수 있으며, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼 및 상기 제2 메시지의 컴포넌트에 포함된 심볼에 적용될 수 있다.
또한, 중간 메시지의 중간 컴포넌트에 포함되는 심볼과 연관되는 LLR 지표가 주어진 대수적 구조에서 가산 연산을 적용함으로써 결정될 수 있으며, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 신뢰도 지표 및 상기 제2 메시지의 컴포넌트에 포함된 신뢰도 지표에 적용될 수 있다.
일 실시예에 따르면, 대수적 구조는 실수 필드(R), 정수 필드(Z) 및 자연수 필드(N)로 이루어진 군에서 선택될 수 있다.
예를 들어, 양자화된 하드웨어 구현 및 소프트웨어 구현에서, 중간 메시지의 중간 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표는 정수 필드(Z) 또는 자연수 필드(N)에 대해 가산 연산을 적용함으로써 결정되도록 구성되어, 복잡도를 감소시킬 수 있다.
또한, 일 실시예에 따르면, 제1 메시지 및 제2 메시지의 각각의 컴포넌트는 초기 바이너리 값들로부터 도출된 바이너리 벡터와 연관될 수 있다. 이러한 실시예에서, 중간 컴포넌트와 연관되는 중간 바이너리 벡터는 벡터 결합 작업을 적용함으로써 결정될 수 있으며, 벡터 결합 작업은, 제1 메시지의 컴포넌트와 연관되는 바이너리 벡터 및 제2 메시지의 컴포넌트와 연관되는 바이너리 벡터에 적용될 수 있다.
중간 메시지의 계산 단계에 따라, 제1 및 제2 메시지는, 기본 계산 동안, 퍼뮤테이션된 메시지 또는 이전에 결정된 적어도 1개의 중간 메시지에 대응할 수 있다.
제1 메시지 및 제2 메시지가 퍼뮤테이션된 메시지와 다른 일부 실시예에 따르면, 제1 메시지로부터 처리되는 컴포넌트의 개수(nl) 및/또는 제2 메시지로부터 처리되는 컴포넌트의 개수(np)는 이전 중간 메시지들 내에 포함된 컴포넌트의 개수에 상응할 수 있다.
각각 UPl 및 UPp로 표시되는 2개의 퍼뮤테이션된 메시지를 처리함으로써 결정되는 중간 메시지에 있어서, UPt'로 표시되는 중간 메시지는 퍼뮤테이션된 메시지들의 컴포넌트들로부터 결정되며, 여기서 l 및 p≠l인 p는 1부터 dcn까지의 세트 내에서 변화한다. 중간 메시지의 각 중간 컴포넌트와 연관되는 중간 바이너리 벡터는 퍼뮤테이션된 메시지들의 각 컴포넌트와 연관되는 초기 바이너리 값으로부터 결정될 수 있다. 따라서, 중간 메시지(UPt')는 nt개의 컴포넌트들(UPt'[j]) 및 각 중간 컴포넌트(UPt'[j])와 연관되는 중간 바이너리 벡터(UP'tDBV[j])를 포함할 수 있으며, 여기서 j=0, ... , nt-1이다. 컴포넌트()는 심볼() 및 상기 심볼과 연관되는 LLR 지표(UP't+[j])를 포함할 수 있고, 여기서 j=0, ... , nt-1이다.
중간 메시지에 포함된 중간 컴포넌트들은 그 안에 포함된 심볼들의 신뢰도 지표들에 따라 주어진 순서에 따라 정렬될 수 있으며, 그 결과, 모든 j=0, ... , nt-2에 대해 이다.
일 실시예에 따르면, 중간 메시지는, 제1 메시지로부터의 nl≤nm,in개의 컴포넌트 및/또는 제2 메시지로부터 np≤nm,in개의 컴포넌트를 처리함으로써 결정된다.
일 실시예에 따르면, 중간 메시지는 다음과 같은 3 단계를 통해 결정될 수 있다.
제1 단계에서, 제1 메시지(UPl)의 컴포넌트 및 제2 메시지(UPp)의 컴포넌트로부터 보조 컴포넌트의 세트가 결정될 수 있다. 보조 컴포넌트를 "버블"이라고 한다. Bt[u][v]로 표시되는 버블은 제1 메시지(UPl)에 포함된 컴포넌트(UPl[u]) 및 제2 메시지(UPp)에 포함된 컴포넌트(UPp[v])로부터 얻어지는 버블을 참조할 수 있다. 인덱스(u)는 0, 1,..., nl-1 에서 변하고 인덱스(v)는 0, 1, ..., np-1에서 변한다. 버블()는 다음을 포함하는 컴포넌트이다:
- Bt DBV[u][v]로 표시되는 신뢰도 지표.
또한, Bt DBV[u][v]로 표시되는 바이너리 벡터는 버블(Bt[u][v])과 연관될 수 있다.
고려된 버블의 총 개수는 nt와 nl×np 사이에서 변화하며, 즉, nt개 이상이고, nl×np개 이하일 수 있다.
일 실시예에 따르면, 보조 컴포넌트(Bt[u][v])에 포함된 심볼()은 상기 식(11)에서 표현된 바와 같이 갈루아 필드상의 가산에 따라 결정될 수 있으며, 여기서 u=0, 1, ..., nl-1이고, v=0, 1, ... , np-1이다.
일 실시예에 따르면, 보조 컴포넌트(Bt[u][v])에 포함된 LLR 지표(Bt +[u][v])는 상기 식(12)에서 표현된 바와 같이 정수 필드상의 가산에 따라 결정될 수 있으며, 여기서 u=0, 1, ..., nl-1이고, v=0, 1, ... , np-1이다.
일 실시예에 따르면, 보조 컴포넌트(Bt[u][v])와 연관되는 바이너리 벡터(Bt DBV[u][v])는 상기 식(13)에서 표현된 바와 같이 벡터 결합 연산에 따라 결정될 수 있으며, 여기서 u=0, 1, ..., nl-1이고, v=0, 1, ... , np-1이다.
여기서, nl×np개의 보조 컴포넌트의 계산 이후에, 각 보조 컴포넌트에 포함된 LLR 지표들의 증가하는 순서로 이들 컴포넌트들을 정렬하는 정렬 단계가 수행될 수 있다.
마지막 단계에서, nl×np개의 정렬된 보조 컴포넌트들 중에서, 중간 메시지(UPt') 및 상기 중간 메시지에 포함된 nt개의 정렬된 중간 컴포넌트 각각과 연관되는 바이너리 벡터를 제공하는 nt개의 컴포넌트를 선택하기 위해 절단 동작이 수행될 수 있다.
일 실시예에 따르면, 중간 메시지(UPt)에 포함된 컴포넌트의 개수(nt)는 고려된 버블들의 총 개수보다 적을 수 있다.
특히, 중간 노드 메시지를 얻기 위해 보유할 수 있는 버블의 개수에 관한 흥미로운 단순화는 변수 노드 메시지의 사전 정렬로 달성될 수 있다.
예를 들어, 일 실시예에서, 적어도 2개의 중간 컴포넌트(즉, nl=≥2)를 포함하는 중간 메시지(UPt')는 둘 이상의 컴포넌트(즉, nl=≥2)를 포함하는 제1 메시지(UPl) 및 1개의 컴포넌트(즉, np=1)를 포함하는 제2 메시지(UPp)로부터 결정될 수 있다.
다른 실시예에서, 적어도 3개의 중간 컴포넌트(즉, nl=≥3)를 포함하는 중간 메시지(UPt')는 둘 이상의 컴포넌트(즉, nl=≥2)를 포함하는 제1 메시지(UPl) 및 2개의 컴포넌트(즉, np=2)를 포함하는 제2 메시지(UPp)로부터 결정될 수 있다.
또 다른 실시예에서, 1개의 중간 컴포넌트(즉, nt=1)를 포함하는 중간 메시지(UPt')는 1개의 컴포넌트(즉, nl=1)를 포함하는 제1 메시지(UPl) 및 1개의 컴포넌트(즉, np=1)를 포함하는 제2 메시지(UPp)로부터 결정될 수 있다.
신드롬들의 세트는 모든 퍼뮤테이션된 메시지들을 사용하여 계산된 중간 메시지로부터 결정될 수 있다.
직렬 아키텍처를 사용하는 실시예들에서, 신드롬들의 세트는 아키텍처 내의 마지막 기본 검사 노드 처리부에 의해 수행될 수 있는 마지막 기본 계산으로부터 전달되는 중간 메시지로부터 결정될 수 있다.
트리 구조를 사용하는 실시예들에서, 신드롬들의 세트는 트리 아키텍처의 마지막 단계에 위치한 기본 검사 노드 처리부에 의해 전달되는 중간 메시지로부터 결정될 수 있다.
중간 메시지를 전달하기 위한 기본 계산을 수행하도록 구성된 다양한 기본 검사 노드 처리부(26) 구현 아키텍처 유형에 관계없이, 신드롬들의 세트()는 퍼뮤테이션된 메시지들의 함수로 표현될 수 있고, 여기서 r=1, ... , NS이다.
따라서, 신드롬(Sr)에 포함되는 심볼()은 식(14)에 따라 r=1, ... , NS에 대해서 퍼뮤테이션된 메시지들(UPi)에 포함되는 심볼들()의 갈루아 필드에서의 합계로 표현될 수 있고, 여기서이고, i=1, ... , dcn이고 ui∈[0,nm,in-1]이다.
또한, r=1, ... , NS에 대하여 신드롬(Sr)에 포함되는 LLR 지표(Sr+)는 식(15)에 따라 퍼뮤테이션된 메시지들(UPi)에 포함되는 LLR 지표들(UPi+[ui])의 대수적 구조에서의 합계로 표현될 수 있고, 여기서 ui∈[0,nm,in-1]이고, i=1, ... , dcn이다. 대수 구조는 실수 필드 또는 정수 필드 또는 자연수 필드에 해당할 수 있다.
또한, 신드롬(Sr)에 포함되는 바이너리 벡터(SrDBV)는 식(16)에 따라 퍼뮤테이션된 메시지들(UPi)에 포함되는 초기 바이너리 값들(UPiDBV[ui])의 벡터 결합으로 표현될 수 있고, 여기서 ui∈[0,nm,in-1]이고, r=1, ... , NS이며, i=1, ... , dcn이다. 따라서, 신드롬(Sr)에 포함된 바이너리 벡터(SrDBV)는 dcn개의 비트를 포함하고, 각각의 바이너리 값 SrDBV[i]은 검사 노드 메시지(Vi)와 연관되며, 여기서 i=1, ... , dj이다.
일 실시예에 따르면, 신드롬(NS)의 개수는 각 퍼뮤테이션된 메시지 내의 컴포넌트의 개수보다 크거나 같을 수 있고 및/또는 갈루아 필드의 차수에 따라 달라질 수 있다.
예를 들어, GF(64)에서, 신드롬의 개수는 NS=3nm,out=10nm,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 일반적으로 n( m,out )=20일 수 있다.
GF(256)를 고려하는 다른 예에서, 신드롬의 개수는 NS=3nm,out=20nm,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 일반적으로 n(m,out)=60일 수 있다.
GF(1024)를 고려하는 또 다른 예에서, 신드롬의 개수는 NS=3nm,out=45nm,in으로 주어질 수 있고, 각 검사 노드 메시지에 포함되는 컴포넌트의 개수는 일반적으로 n(m,out)=150일 수 있다.
단계(809)는 각각의 신드롬(Sr)에 포함된 바이너리 벡터(SrDBV)에 따르는 상관 해제 작업을 적용함으로써, 결정된 신드롬들의 세트로부터 각 검사 노드 메시지(Vi)와 연관되는, Vi'로 표시되는 후보 검사 노드 컴포넌트들의 세트를 결정하도록 수행될 수 있다. 따라서, 바이너리 벡터는, 검사 노드 메시지에 대해서, 신드롬이 후보 검사 노드 컴포넌트들의 세트를 결정하기 위하여 폐기되거나 선택되어야 하는지를 지시할 수 있다. 바이너리 벡터(SrDBV)가, 각각의 비트(SrDBV[i])가 검사 노드 메시지(Vi)와 연관되는 dcn개의 비트를 포함하기 때문에, 비트(SrDBV[i])의 값은 후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하기 위해 신드롬(Sr)의 선택을 유효화하도록 사용되거나 그렇지 않을 수 있다.
일 실시예에 따르면, 검사 노드 메시지(Vi)와 연관되는 비트(SrDBV[i])가 영('0')이 되도록 하는 바이너리 벡터들(SrDBV=(SrDBV[1]ll SrDBV[2], ... ,SrDBV[dcn]))을 포함하는 신드롬들이 유효 신드롬들로서 선택될 수 있다.
다른 실시예에 따르면, 검사 노드 메시지(Vi)와 연관되는 비트(SrDBV[i])가 일('1')이 되도록 하는 바이너리 벡터들(SrDBV=(SrDBV[1]ll SrDBV[2], ... ,SrDBV[dcn]))을 포함하는 신드롬들이 유효 신드롬들로서 선택될 수 있다.
후보 검사 노드 컴포넌트들의 세트(Vi')를 결정하기 위해 선택되는 유효 신드롬들은 VS[z]로 표시되는 NVSi≤NS개의 유효 신드롬을 포함하며, 여기서 z=0, ... ,NVSi-1이다. 유효 신드롬()은 심볼(), 상기 심볼과 연관되는 신뢰도 지표(VS+[z]), 및 VSDBV[z]로 표시되는 바이너리 벡터를 포함한다. 유효 신드롬들은 신뢰도 지표(VS+[z])의 순서(오름순 또는 내림순)에 따라 정렬되어, 가장 신뢰도 높은 심볼을 포함하는 유효 심볼이 VS[0]에 대응하고,VS+[z]≤VS+[z+1]이고, 여기서 z=0, ... , NVSi-2이다.
후보 검사 노드 컴포넌트들()은 NVSi개의 선택된 유효 신드롬들에 포함된 심볼들 및 그의 신뢰도 지표들로부터 결정될 수 있다. 보다 구체적으로, 후보 검사 노드 컴포넌트(Vi'[z])에 Vi'[z]포함된 심볼()은 식(17)에 따라 결정될 수 있고, 후보 검사 노드 컴포넌트(Vi'[z]) 내에 포함된 신뢰도 지표(Vi'+[z])는 식(18)에 따라 결정될 수 있다.
일 실시예에서, 결정된 후보 검사 노드 컴포넌트들은 동일한 심볼을 포함하는 둘 이상의 컴포넌트들을 포함할 수 있다.
단계(811)에서, 동일한 심볼을 포함하는 컴포넌트 중에서, 가장 작은 LLR 지표에 해당하는 가장 신뢰도 높은 심볼을 포함하는 컴포넌트를 유지하기 위해, 각 검사 노드 메시지와 연관되는 결정된 후보 검사 노드 컴포넌트의 세트에서 중복 제거가 수행될 수 있다. 다시 말해, 동일한 심볼 값을 발생시키는 컴포넌트들은 가장 작은 LLR 지표와 연관되는 중복 심볼을 포함하는 컴포넌트가 유지되도록 처리된다.
단계(813)는 후보 검사 노드 컴포넌트들의 처리된 세트들로부터 검사 노드 메시지들(Vi)의 검사 노드 컴포넌트들을 생성하기 위해 수행될 수 있고, 여기서 i=1, ... ,dcn이다. 검사 노드 메시지(Vi)의 검사 노드 컴포넌트들은, 후보 검사 노드 컴포넌트들의 처리된 세트로부터 가장 신뢰도가 높은 nm,out개의 컴포넌트를 선택함으로써, 즉, 가장 작은 LLR 지표들과 연관되는 심볼들을 포함하는 nm,out개의 컴포넌트들을 선택함으로써 결정될 수 있다.
일 실시예에 따르면, 검사 노드의 컴포넌트의 개수(nm,out)는 퍼뮤테이션된 메시지들 내의, 또는 동등하게 변수 노드 메시지들 내의 컴포넌트의 개수(nm,in)와 다를 수 있다. 특히, 검사 노드 컴포넌트의 개수는 nm,out≥ nm,in을 만족시킬 수 있다.
일 실시예에서, 검사 노드 컴포넌트의 개수(nm,out)는 퍼뮤테이션된 메시지들에 포함된 컴포넌트의 개수(nm,in)에 따라 달라질 수 있다.
검사 노드 컴포넌트의 개수(nm,out)는 그 위에 코드가 구성되는 대수적 구조 및/또는 반복 디코딩 프로세스의 디코딩 반복 횟수 및/또는 신호 대 잡음비 및/또는 검사 노드 처리부들(215-cn)의 계산 및 저장 성능에 따라서도 달라질 수 있다.
일 실시예에서, 검사 노드 컴포넌트의 개수(nm,out)는 상기에 언급된 인자들의 조합에 따라 달라질 수 있다.
예를 들어, GF(64)의 갈루아 필드의 경우, 검사 노드 컴포넌트의 개수(nm,out)는 nm,out=3nm,in에 따라 퍼뮤테이션된 메시지에 포함된 컴포넌트의 개수와 관련될 수 있다. GF(1024)의 갈루아 필드의 경우, 검사 노드 컴포넌트의 개수(nm,out)는 nm,out =15nm,in에 따라 퍼뮤테이션된 메시지에 포함된 컴포넌트의 개수와 연관될 수 있다.
단계(815)에서, 검사 노드 메시지들이 그의 대응하는 변수 노드 처리부에 전달될 수 있다. 변수 노드 메시지들을 퍼뮤테이션하기 위해 수행되는 벡터 퍼뮤테이션 작업의 역에 대응하는 스위칭 동작이 수행되어 각 검사 노드 메시지를 그의 대응하는 변수 노드 처리부와 연관시킬 수 있다.
흐름도 8은 세트(Hc(cn)) 내의 변수 노드들과 연관되는 변수 노드 처리부들로부터 도출되는 퍼뮤테이션된 메시지들의 세트를 수신하는 검사 노드 처리부(25-cn)의 레벨에서의 처리를 도시한다는 것에 유의한다. 검사 노드 처리부들에서의 프로세싱이 반복 디코딩 프로세스의 일부이기 때문에, 전달된 검사 노드 메시지들은, 패리티 검사 방정식이 만족되는지를 검사하기 위해, 그리고 반복 디코딩 프로세스를 계속할지 중지할지 결정하기 위해 (예를 들어, 신호 추정부(29)에 의해) 추가적으로 처리될 수 있다. 더 구체적으로:
- 최대 횟수의 반복에 아직 도달하지 않고 패리티 검사 방정식이 만족되지 않은 경우, 검사 노드 처리부(25-cn)에 의해 전달된 검사 노드 메시지들이 검사 노드 메시지들의 변수 노드 처리부(23-vn) 수신자들에 전송될 수 있고, 여기서 cn-1, ... , n-k이며;
- 처리된 신호가 상기 패리티 검사 방정식을 만족하는 경우, 디코딩 프로세스는 종료되고, 원래 코드워드의 추정치로서 상기 처리된 신호가 전달될 수 있고;
- 모든 패리티 검사 제약 조건을 만족시키지 않더라도, 최대 반복 횟수에 도달하는 경우, 디코딩 실패를 선언하지만, 그럼에도 마지막 반복에서 추정된 코드워드를 원래 코드워드의 추정치로서 출력할 수 있다.
제안된 아키텍처는 따라서 레이턴시의 관점에서의 상당한 개선 외에도 디코딩 계산 복잡성 및 구현 하드웨어 비용의 상당한 감소와 함께 최적의 디코딩 성능을 제공 할 수 있도록 한다.
도 9는 몇몇 실시예들에 따른 EMS 알고리즘을 사용하여 AWGN 채널에서 변수 노드와 검사 노드 사이의 메시지 교환 프로세스의 10 회의 반복을 통해 GF(64)에서 구성되는 (576,480) 비-바이너리 LDPC 코드 디코딩의 프레임 에러율(FER)에 관해서 평가한 에러 확률 성능을 도시한다. fER은 EMS 알고리즘의 세 가지 구현에 대해 평가된다.
1. 'FB-CN,nm-20'(도 9에서, nm은 nm,in을 나타냄)은 (nl=20, np=20, nt=20)에 의해 표현되는 기본 검사 노드 처리부들이 사용되는 S-Bubble 알고리즘에 기초한 종래의 포워드-백워드 아키텍처를 사용하는 예시를 말한다.
2. 'SB-CN, 직렬 NS=60, nm,in=6, nm,out=20, 새로운 ECN'은 변수 노드 메시지들의 사전 정렬이 11개의 기본 검사 노드 처리부(26)의 직렬 구현과 함께 적용되는 본 발명에 따른 일부 실시예를 말한다. 상응하는 직렬 구현은 (nl=1, np=1, nt=1) 튜플에 의해 표현되는 유형(1B)의 5개의 기본 검사 노드 처리부(26) 및 튜플(nl=2, np=1, nt=2)에 의해 표현되는 유형(S-1B)의 1개의 기본 검사 노드 프로세서(26)를 포함한다.
3. 'SB-CN, 직렬 NS=60, nm,in=6, nm,out=20, 표준 ECN'은 변수 노드 메시지들의 사전 정렬이, 종래의 포워드-백워드 아키텍처에서 사용되는 기본 검사 노드 처리부들(26)이 종래 작업을 수행하는 기본 검사 노드 처리부들(26)의 직렬 구현과 함께 적용되는 예시를 말한다.
본 발명의 실시예들에 따른 기본 검사 노드 처리부에 의해 수행되는 작업들과 달리, 기본 검사 노드 처리부에 의해 수행되는 종래 작업들은 보조 컴포넌트들 또는 버블들로부터 중복 컴포넌트들을 제거하는 중복 제거 작업을 포함한다.
도시된 에러 성능 결과들은 기본 검사 노드 처리부들을 사용하는 신드롬 디코딩의 제안된 사전 정렬 직렬 구현이 포워드-백워드 아키텍처와 동일한 성능을 제공함하며, 따라서 본 발명의 실시예들에 따른 방법의 적절성을 보여준다. 또한, 수치 결과는 종래의 기본 검사 노드 처리부에서 사용되는 연산에 대비하여 본 발명의 다양한 실시예에 따른 기본 검사 노드 처리부의 효율을 보여준다. 실제로, 신드롬 계산에 적용될 때, 종래의 기본 검사 노드 처리부에 의해 수행되는 프로세싱은 최적의 에러 성능을 달성하지 못하고 특히 높은 신호 대 잡음비 값에서 상당한 손실을 나타낸다. 이 성능 손실은 기본 검사 노드 처리부 레벨에서 수행되는 중복 제거 작업으로 인한 것이다.
에러 확률 성능에 추가적으로, '포워드-백워드 아키텍처', '트리 SB-CN','직렬 SB-CN','트리 정렬 SB-CN','직렬 정렬 SB-CN'의 구현의 복잡성이, 기본 검사 노드 처리부(ECN)의 개수, 정렬된 입력 컴포넌트의 개수, ENC 출력의 총 개수의 관점에서 평가되었다. 상기 측정의 결과는 도 10에 도시되었으며, 이는 도 9에 도시된 결과들에 상응하는 디코딩 프로세스와 동일한 조건에서 측정되었다. 수치 결과는 종래의 포워드-백워드 아키텍처들에 비하여, 신드롬-기반 디코더의 제안된 직렬 정렬 및 트리 SB-CN 구현이 복잡성을 감소시킴을 보여준다. 본 발명의 실시예들에 따른 아키텍처는 더 적은 수의 기본 검사 노드 프로세서를 사용한다. 종래의 포워드-백워드 아키텍처에 비해, 본 발명의 실시예들에 따른 아키텍처에서는 ECN의 수가 3(dcn-2) 에서 (dcn-1)로 감소하고, ECN 입력의 수가 상당히 감소하며, ECN 출력의 수도 또한 크게 감소한다.
도 11은, 변수 노드 메시지의 사전 정렬이 사용되는 본 발명의 몇몇 실시예들에서 구현되는 일부 단순화된 기본 검사 노드 처리부의 복잡성을 FPGA 구현에서의 슬라이스 개수 및 레이턴시(사이클 개수 단위) 관점에서 나타내는 표이다. 유형들('1B', 'S-1B', 'S-1B + 1')의 기본 검사 노드 처리부들의 복잡성이 종래의 S-버블 알고리즘의 ECN 아키텍처에 상응하는 유형들('S-2B', 'S-4B')의 기본 검사 노드 처리부들의 복잡성과 비교된다. 수치 결과는 본 발명의 일부 실시예에서 제안되는 단순화된 아키텍처가 최적의 디코딩 성능을 제공하면서도 더 낮은 레이턴시 및 상당히 감소된 점유 슬라이스 수를 제공한다는 것을 보여준다.
도 12는 EMS 알고리즘의 3가지 구현예를 구현하는 검사 노드 처리부들의 점유 슬라이스 개수 및 레이턴시(사이클 개수 단위) 관점에서의 복잡성을 설명하는 표이다. '포워드-백워드'는 기존의 포워드-백워드 아키텍처를 말하고, '직렬 SB-CN'는 변수 노드 메시지들의 사전 정렬 없이 기본 검사 노드 처리 기반의 신드롬 디코딩에 해당하며, '직렬 정렬 SB-CN'는 본 발명의 일부 실시예에 따른 기본 검사 노드 처리부들을 사용하는 사전 정렬 신드롬 디코딩을 말한다. 도시된 결과는, 기존의 포워드-백워드 아키텍처 및 변수 노드 메시지들의 사전 정렬을 구현하지 않는 직렬 SB-CN과 비교하여, (직렬 SB-CN을 제안된 직렬 정렬 SB-CN과 비교하였을 때) 사전 정렬 프로세스에 따른 레이턴시의 개선과 제안된 직렬 정렬 SB-CN을 사용하는 점유 슬라이스 개수의 감소를 보여준다.
따라서, 본 발명의 실시예들에 따른 아키텍처들은 디코딩 연산 복잡도 및 구현 하드웨어 비용의 상당한 감소로 최적의 디코딩 성능을 제공한다.
본 명세서에 설명된 방법들 및 장치들은 다양한 수단에 의해 구현될 수 있다. 예를 들어, 이들 기술은 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 하드웨어 구현에 있어서, 반복 디코더(123)의 프로세싱 요소들은, 예를 들어, 하드웨어 전용 구성(예를 들어, 대응하는 메모리를 갖는 하나 이상의 FPGA, ASIC 또는 VLSI 집적 회로에서) 또는 VLSI와 DSP를 모두 사용하는 구성에 따라 구현될 수 있다.
본 발명의 실시예들이 다양한 예시와 함께 설명되었고, 상당히 상세하게 설명되었지만, 첨부된 청구 범위의 범위를 그러한 세부 사항으로 제한하는 것은 본 출원인의 의도는 아니다. 추가적인 장점들 및 수정들은 당업자가 명백하게 이해할 수 있을 것이다. 따라서, 보다 넓은 관점에서의 본 발명은 도시되고 설명된 특정 세부 사항, 대표적인 방법 및 예시적인 실시예에 제한되지 않는다.
특히, 본 발명의 일부 실시예에 대한 설명이 EMS 알고리즘에 대한 특정 구현예를 참조하여 수행되었지만, 본 발명은 min-max 알고리즘과 같은 다른 반복 디코딩 알고리즘에도 적용될 수 있음에 유의해야 한다.
또한, 본 발명의 몇몇 실시예들이 갈루아 필드를 통해 구성되는 에러 정정 코드를 참조하여 기술되었지만, 당업자는 신드롬 계산을 위한 기본 검사 노드 프로세싱에 기초한 제안된 실시예가 임의의 LDPC 코드 및 다항식 코드(예를 들어, 순환 코드)와 같은 비가환적 그룹에서 구성되는 그래프 에러 수정 코드에도 적용될 수 있다는 것을 쉽게 이해할 것이다.
또한, 비록 본 발명이 통신 시스템에 대한 응용에 있어서 몇 가지 이점을 갖는다 할지라도, 본 발명은 이러한 통신 장치에 제한되지 않고 데이터 저장 장치와 같은 다수의 장치에 통합될 수 있음을 이해할 것이다.
본 명세서에서 설명된 방법은 본 명세서에 특정된 기능/동작을 구현하기 위해 명령을 실행하는 처리부를 갖는 기계를 생산하기 위해 임의의 유형의 컴퓨터의 처리부에 공급되는 컴퓨터 프로그램 명령에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령어들은 또한 컴퓨터가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 저장될 수 있다. 이를 위해, 컴퓨터 프로그램 명령은 컴퓨터 상에 로딩되어 일련의 동작 단계의 수행을 야기하고, 그에 의해 실행된 인스트럭션이 본 명세서에서 특정된 기능을 구현하기 위한 프로세스를 제공하는 컴퓨터 구현 프로세스를 생성할 수 있다.
Claims (25)
- 인코딩된 신호의 추정치를 결정하기 위한 디코더로서,
하나 이상의 검사 노드 처리부(25)에 변수 노드 메시지들을 전달하도록 구성된 하나 이상의 변수 노드 처리부(23) 및 적어도 1개의 검사 노드 메시지를 전달하도록 구성된 검사 노드 처리부(25)를 포함하며, 각각의 변수 노드 메시지와 검사 노드 메시지는 하나 이상의 컴포넌트를 포함하고, 상기 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하고,
상기 디코더는,
- 적어도 1개의 벡터 퍼뮤테이션부(vector permutation unit)(24)로서, 적어도 1개의 변수 노드 처리부로부터 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지들의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 상기 적어도 3개의 변수 노드 메시지들로부터 퍼뮤테이션된 메시지를 생성하며, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 오름순 또는 내림순에 따라 정렬되는, 상기 벡터 퍼뮤테이션부(24); 및
- 적어도 1개의 검사 노드 처리부(25-1)로서,
2개 이상의 기본 검사 노드 처리부(26)에서, 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하고,
상기 신드롬들의 세트로부터 적어도 1개의 검사 노드 메시지를 생성하며,
신호 추정부(29)에 상기 적어도 1개의 검사 노드 메시지를 전송하는, 상기 검사 노드 처리부(25-1)를 포함하는, 디코더. - 제1항에 있어서, 상기 퍼뮤테이션된 메시지들은 적어도 3개의 변수 노드 메시지의 세트에 하나 이상의 벡터 퍼뮤테이션을 적용함으로써 결정되고, 퍼뮤테이션 인덱스는 각각의 벡터 퍼뮤테이션과 연관되며, 상기 벡터 퍼뮤테이션부(24)는 상기 퍼뮤테이션 인덱스에 따라 상기 적어도 3개의 변수 노드 메시지들의 컴포넌트를 추출하고, 상기 벡터 퍼뮤테이션은 상기 추출된 컴포넌트들의 신뢰도 지표들의 오름순 또는 내림순에 따라 상기 적어도 3개의 변수 노드 메시지들을 퍼뮤테이션하기 위해 적용되는, 디코더.
- 제2항에 있어서, 상기 벡터 퍼뮤테이션의 개수는 사전에 정의되는, 디코더.
- 제2항에 있어서, 상기 적어도 1개의 변수 노드 처리부는 다수의 반복 동안 적어도 1개의 검사 노드 처리부와 적어도 3개의 메시지를 교환하도록 구성되며, 상기 신호는 적어도 1개의 에러 정정 코드를 사용하여 인코딩되고, 상기 벡터 퍼뮤테이션의 개수는 신호대 잡음비, 상기 변수 노드 메시지들에 포함되는 컴포넌트의 개수, 상기 적어도 1개의 에러 정정 코드 및 상기 반복 횟수 등으로 이루어진 군 중에서 선택된 적어도 1개의 기준에 따라 결정되는, 디코더.
- 제4항에 있어서, 벡터 퍼뮤테이션과 연관되는 퍼뮤테이션 인덱스는 상기 변수 노드 메시지의 개수, 상기 변수 노드 메시지들의 복수의 컴포넌트에 포함된 상기 신뢰도 지표들 및 상기 적어도 1개의 에러 정정 코드 중 적어도 하나에 따라 좌우되는, 디코더.
- 제1항에 있어서, 신드롬은 심볼, 상기 심볼과 연관되는 신뢰도 지표 및 바이너리 벡터를 포함하고, 각각의 기본 검사 노드 처리부(26)는 제1 메시지 및 제2 메시지로부터 중간 메시지를 결정하고, 상기 제1 메시지 및 제2 메시지는 상기 적어도 3개의 퍼뮤테이션된 메시지로부터 도출되며, 상기 중간 메시지는 하나 이상의 중간 컴포넌트 및 각각의 중간 컴포넌트와 연관되는 중간 바이너리 벡터를 포함하며, 각각의 중간 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하고, 상기 하나 이상의 중간 컴포넌트는 상기 심볼과 연관되는 신뢰도 지표들의 오름순 또는 내림순에 따라 정렬되고, 상기 2개 이상의 기본 검사 노드 처리부(26)는 상기 적어도 3개의 퍼뮤테이션된 메시지 모두로부터 결정되는 중간 메시지로부터 상기 신드롬들의 세트를 계산하도록 구성되는, 디코더.
- 제6항에 있어서, 상기 디코더는, 상기 신호의 인코딩에 사용된 적어도 1개의 에러 정정 코드 구성의 대수적 구조에서 가산 연산을 적용함으로써 중간 컴포넌트에 포함되는 상기 심볼을 결정하는 적어도 1개의 기본 검사 노드 처리부(26)를 포함하고, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼 및 상기 제2 메시지의 컴포넌트에 포함된 심볼에 적용되며, 상기 적어도 1개의 에러 정정 코드 구성의 상기 대수적 구조는 0이 아닌 가환 나눗셈환(non-zero commutative division ring)인, 디코더.
- 제6항에 있어서, 적어도 1개의 기본 검사 노드 처리부(26)는 주어진 대수적 구조에서 가산 연산을 적용함으로써 중간 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표를 결정하고, 상기 가산 연산은 상기 제1 메시지의 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표 및 상기 제2 메시지의 컴포넌트에 포함된 심볼과 연관되는 신뢰도 지표에 적용되며, 상기 주어진 대수적 구조는 실수 필드, 정수 필드 및 자연수 필드로 이루어진 군 중에서 선택되는, 디코더.
- 제6항에 있어서, 상기 적어도 3개의 퍼뮤테이션된 메시지에 포함된 각각의 컴포넌트는 초기 바이너리 값과 연관되고, 상기 제1 메시지 및 상기 제2 메시지의 각각의 컴포넌트는 상기 초기 바이너리 값들로부터 도출되는 바이너리 벡터와 연관되며, 적어도 1개의 기본 검사 노드 처리부(26)는 벡터 결합 연산을 적용함으로써 상기 중간 메시지의 각 중간 컴포넌트와 연관되는 상기 중간 바이너리 벡터를 결정하도록 구성되며, 상기 벡터 결합 연산은 상기 제1 메시지의 컴포넌트와 연관되는 바이너리 벡터 및 상기 제2 메시지의 컴포넌트와 연관되는 바이너리 벡터에 적용되고, 상기 초기 바이너리 값은 컴포넌트에 포함된 신뢰도 지표에 따라 결정되며, 상기 벡터 결합 연산은 둘 이상의 입력 스칼라 또는 벡터로부터 벡터 형식의 목록을 제공하는 연산을 나타내며, 상기 목록의 요소들은 상기 둘 이상의 입력 스칼라와 같은, 디코더.
- 제9항에 있어서, 상기 초기 바이너리 값은 심볼들과 연관되는 신뢰도 지표들에 따라 변하고, 각 퍼뮤테이션된 메시지에 대해, 가장 신뢰도 높은 심볼을 포함하는 상기 퍼뮤테이션된 메시지의 컴포넌트는 사전에 정의된 제1 값과 동일한 초기 바이너리 값과 연관되고, 상기 퍼뮤테이션된 메시지의 나머지 컴포넌트들은 사전에 정의된 제2 값과 동일한 초기 바이너리 값과 연관되는, 디코더.
- 제10항에 있어서, 상기 사전에 정의된 제1 값은 0과 동일하고, 상기 사전에 정의된 제2 값은 1과 동일한, 디코더.
- 제10항에 있어서, 상기 사전에 정의된 제1 값은 1과 동일하고, 상기 사전에 정의된 제2 값은 0과 동일한, 디코더.
- 제6항에 있어서, 상기 적어도 1개의 검사 노드 처리부(25-1)는 둘 이상의 컴포넌트를 포함하는 제1 메시지 및 1개의 컴포넌트를 포함하는 제2 메시지로부터 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부(26)를 포함하고, 상기 중간 메시지는 적어도 2개의 중간 컴포넌트들을 포함하는, 디코더.
- 제6항에 있어서, 상기 적어도 1개의 검사 노드 처리부(25-1)는 2개의 컴포넌트를 포함하는 제1 메시지 및 둘 이상의 컴포넌트를 포함하는 제2 메시지로부터 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부(26)를 포함하고, 상기 결정된 중간 메시지는 적어도 3개의 중간 컴포넌트를 포함하는, 디코더.
- 제6항에 있어서, 상기 적어도 1개의 검사 노드 처리부(25-1)는 1개의 중간 컴포넌트를 포함하는 중간 메시지를 결정하는 적어도 1개의 기본 검사 노드 처리부(26)를 포함하고, 상기 1개의 중간 컴포넌트는 제1 메시지에 포함된 가장 신뢰도 높은 컴포넌트 및 제2 메시지에 포함된 가장 신뢰도 높은 컴포넌트로부터 결정되는, 디코더.
- 제6항에 있어서, 상기 적어도 1개의 검사 노드 처리부(25-1)는 적어도 1개의 변수 노드 처리부와 연관되는 검사 노드 메시지에 포함된 검사 노드 컴포넌트들을 결정하도록 구성되고, 상기 결정은,
- 신드롬들의 세트로부터, 상기 신드롬들의 세트에 포함되는 바이너리 벡터들에 따라 후보 검사 노드 컴포넌트들의 세트를 결정하는 단계로서, 상기 후보 검사 노드 컴포넌트들은 하나 이상의 컴포넌트를 포함하고, 각각의 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하는, 상기 후보 검사 노드 컴포넌트들의 세트를 결정하는 단계, 및
- 상기 심볼들과 연관되는 상기 신뢰도 지표들에 따라 상기 후보 검사 노드 컴포넌트들의 세트로부터 사전에 정의된 개수의 컴포넌트를 선택하여, 적어도 1개의 변수 노드 처리부와 연관되는 상기 검사 노드 메시지의 검사 노드 컴포넌트들을 제공하는 단계에 의하는, 디코더. - 제16항에 있어서, 상기 후보 검사 노드 컴포넌트들은 동일한 심볼을 포함하는 둘 이상의 컴포넌트를 포함하는, 디코더.
- 제16항 또는 제17항에 있어서, 상기 검사 노드 컴포넌트들은 별개의 심볼들을 포함하는, 디코더.
- 제1항에 있어서, 상기 디코더는 각각의 검사 노드 처리부와 연관되는 벡터 퍼뮤테이션부(24)를 포함하는, 디코더.
- 제1항에 있어서, 상기 디코더는 둘 이상의 검사 노드 처리부를 포함하고, 상기 둘 이상의 검사 노드 처리부와 연관되는 1개의 벡터 퍼뮤테이션부(24)를 포함하는, 디코더.
- 제1항에 있어서, 상기 기본 검사 노드 처리부(26)는 직렬 아키텍처로 구현되고, 상기 직렬 아키텍처는, 2개의 퍼뮤테이션된 메시지를 처리함으로써 컴포넌트를 포함하는 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성된 기본 검사 노드 처리부를 포함하되, 상기 직렬 아키텍처는 하나 이상의 기본 검사 노드 처리부를 더 포함하고, 상기 하나 이상의 기본 검사 노드 처리부 각각은 1개의 퍼뮤테이션된 메시지 및 1개의 중간 메시지를 처리함으로써 컴포넌트를 포함하는 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성되는, 디코더.
- 제1항에 있어서, 상기 기본 검사 노드 처리부(26)는 트리 아키텍처로 구현되고, 상기 트리 아키텍처는, 2개의 퍼뮤테이션된 메시지를 처리함으로써 컴포넌트를 포함하는 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성된 기본 검사 노드 처리부를 적어도 하나 포함하되, 상기 트리 아키텍처는, 2개의 퍼뮤테이션된 메시지를 처리하거나 2개의 중간 메시지를 처리함으로써 컴포넌트를 포함하는 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성된 기본 검사 노드 처리부를 하나 이상 더 포함하는, 디코더.
- 제1항에 있어서, 상기 기본 검사 노드 처리부(26)는 직렬 아키텍처로 구현된 하나 이상의 기본 검사 노드 처리부(26) 및 트리 아키텍처로 구현된 하나 이상의 기본 검사 노드(26)를 포함하는 하이브리드 아키텍처로 구현되고, 상기 하이브리드 아키텍처는, 2개의 퍼뮤테이션된 메시지를 처리함으로써 컴포넌트를 포함하는 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성된 기본 검사 노드 처리부를 적어도 하나 포함하되, 상기 하이브리드 아키텍처는, 퍼뮤테이션된 메시지 및 중간 메시지를 처리함으로써 중간 메시지 및 중간 메시지의 각각의 컴포넌트와 연관되는 중간 바이너리 벡터를 결정하도록 구성된 기본 검사 노드 처리부를 하나 이상 더 포함하는, 디코더.
- 제4항에 있어서, 상기 적어도 1개의 에러 정정 코드는 비-바이너리 에러 정정 코드인, 디코더.
- 인코딩된 신호의 추정치를 결정하기 위한 디코딩 방법으로서,
상기 디코딩은 변수 노드 메시지들을 전달하도록 구성된 하나 이상의 변수 노드 처리부(23) 및 검사 노드 메시지들을 전달하도록 구성된 하나 이상의 검사 노드 처리부(25) 사이에서 메시지를 교환하는 단계를 포함하며, 각각의 변수 노드 메시지와 검사 노드 메시지는 하나 이상의 컴포넌트를 포함하고, 상기 컴포넌트는 심볼 및 상기 심볼과 연관되는 신뢰도 지표를 포함하며,
상기 방법은,
- 변수 노드 컴포넌트들을 포함하는 적어도 3개의 변수 노드 메시지들의 세트를 수신하고, 상기 변수 노드 컴포넌트들에 포함된 복수의 신뢰도 지표에 따라 상기 적어도 3개의 변수 노드 메시지들로부터 퍼뮤테이션된 메시지를 생성하는 단계로서, 상기 변수 노드 메시지들은 상기 신뢰도 지표들의 오름순 또는 내림순에 따라 정렬되는, 상기 퍼뮤테이션된 메시지를 생성하는 단계,
- 적어도 3개의 퍼뮤테이션된 메시지로부터 신드롬들의 세트를 계산하는 단계,
- 상기 신드롬들의 세트로부터 적어도 1개의 검사 노드 메시지를 생성하는 단계, 및
- 상기 적어도 1개의 검사 노드 메시지로부터 상기 인코딩된 신호의 추정치를 결정하는 단계를 포함하는, 디코딩 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16306397.7A EP3316486B1 (en) | 2016-10-25 | 2016-10-25 | Elementary check node-based syndrome decoding with input pre-sorting |
EP16306397.7 | 2016-10-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180045832A KR20180045832A (ko) | 2018-05-04 |
KR102054556B1 true KR102054556B1 (ko) | 2019-12-10 |
Family
ID=57286410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170138697A KR102054556B1 (ko) | 2016-10-25 | 2017-10-24 | 사전 정렬된 입력을 사용하는 기본 검사 노드 기반의 신드롬 디코딩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10476523B2 (ko) |
EP (1) | EP3316486B1 (ko) |
KR (1) | KR102054556B1 (ko) |
CN (1) | CN107979445B (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10715276B2 (en) * | 2018-05-26 | 2020-07-14 | Ntwine, Llc | Bandwidth constrained communication systems with optimized low-density parity-check codes |
EP3591845B1 (en) * | 2018-07-05 | 2023-08-09 | Universite De Bretagne Sud | Sorting device and method for elementary check node processing for message-passing decoding of non-binary codes |
EP3637622A1 (en) * | 2018-10-08 | 2020-04-15 | Universite De Bretagne Sud | Offset value determination in a check node processing unit for message-passing decoding of non-binary codes |
US11240083B2 (en) | 2020-03-10 | 2022-02-01 | Ntwine, Llc | Bandwidth constrained communication systems with frequency domain information processing |
US11152956B1 (en) * | 2020-09-24 | 2021-10-19 | Gylicon Ltd | Coset probability based decoding for non-binary LDPC codes |
US11990922B2 (en) | 2021-01-11 | 2024-05-21 | Ntwine, Llc | Bandwidth constrained communication systems with neural network based detection |
EP4142161B1 (en) * | 2021-08-27 | 2023-12-13 | Universite De Bretagne Sud | A method for decoding a codeword encoded using a non-binary code, corresponding device and computer program |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100107030A1 (en) | 2008-10-29 | 2010-04-29 | Agere Systems Inc. | Ldpc decoders using fixed and adjustable permutators |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005096510A1 (en) * | 2004-04-02 | 2005-10-13 | Nortel Networks Limited | Ldpc encoders, decoders, systems and methods |
KR20060032464A (ko) * | 2004-10-12 | 2006-04-17 | 삼성전자주식회사 | 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치 |
KR100703271B1 (ko) * | 2004-11-23 | 2007-04-03 | 삼성전자주식회사 | 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치 |
US20100037121A1 (en) * | 2008-08-05 | 2010-02-11 | The Hong Kong University Of Science And Technology | Low power layered decoding for low density parity check decoders |
US8307255B2 (en) * | 2008-11-12 | 2012-11-06 | Texas Instruments Incorporated | Scalable decoder architecture for low density parity check codes |
US8458556B2 (en) * | 2009-10-09 | 2013-06-04 | Stmicroelectronics, Sa | Low complexity finite precision decoders and apparatus for LDPC codes |
US8341486B2 (en) * | 2010-03-31 | 2012-12-25 | Silicon Laboratories Inc. | Reducing power consumption in an iterative decoder |
US8756478B2 (en) * | 2011-09-07 | 2014-06-17 | Lsi Corporation | Multi-level LDPC layer decoder |
US20130139022A1 (en) * | 2011-11-28 | 2013-05-30 | Lsi Corporation | Variable Sector Size LDPC Decoder |
US8918704B2 (en) * | 2012-03-15 | 2014-12-23 | David Declercq | Decoding method and apparatus for non-binary, low-density, parity check codes |
US8996971B2 (en) * | 2012-09-04 | 2015-03-31 | Lsi Corporation | LDPC decoder trapping set identification |
US9612903B2 (en) * | 2012-10-11 | 2017-04-04 | Micron Technology, Inc. | Updating reliability data with a variable node and check nodes |
US8996969B2 (en) * | 2012-12-08 | 2015-03-31 | Lsi Corporation | Low density parity check decoder with miscorrection handling |
US9178653B2 (en) * | 2013-01-16 | 2015-11-03 | Broadcom Corporation | Very short size LDPC coding for physical and/or control channel signaling |
US9048874B2 (en) * | 2013-03-15 | 2015-06-02 | Lsi Corporation | Min-sum based hybrid non-binary low density parity check decoder |
US20150095726A1 (en) * | 2013-09-29 | 2015-04-02 | Broadcom Corporation | SNR margin determination based on FEC code and/or ECC decoding statistics |
CN104601178B (zh) * | 2013-10-30 | 2018-02-02 | 群联电子股份有限公司 | 解码方法、解码电路、存储器存储装置与控制电路单元 |
EP2903166A1 (en) * | 2014-02-03 | 2015-08-05 | Centre National de la Recherche Scientifique (C.N.R.S.) | Multiple-vote symbol-flipping decoder for non-binary LDPC codes |
US9503125B2 (en) * | 2014-05-08 | 2016-11-22 | Sandisk Technologies Llc | Modified trellis-based min-max decoder for non-binary low-density parity-check error-correcting codes |
US10078540B2 (en) * | 2014-06-13 | 2018-09-18 | Cisco Technology, Inc. | Accurate and fast in-service estimation of input bit error ratio of low density parity check decoders |
CN105763203B (zh) * | 2016-02-14 | 2020-04-24 | 广西大学 | 一种基于硬可靠度信息的多元ldpc码译码方法 |
EP3293885B1 (en) * | 2016-09-09 | 2024-01-03 | Université de Bretagne Sud | Check node processing for syndrome computation in the decoding of non-binary codes, in particular non-binary ldpc codes |
-
2016
- 2016-10-25 EP EP16306397.7A patent/EP3316486B1/en active Active
-
2017
- 2017-10-03 US US15/723,813 patent/US10476523B2/en active Active
- 2017-10-24 KR KR1020170138697A patent/KR102054556B1/ko active IP Right Grant
- 2017-10-25 CN CN201711015043.7A patent/CN107979445B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100107030A1 (en) | 2008-10-29 | 2010-04-29 | Agere Systems Inc. | Ldpc decoders using fixed and adjustable permutators |
Also Published As
Publication number | Publication date |
---|---|
EP3316486A1 (en) | 2018-05-02 |
US20180115323A1 (en) | 2018-04-26 |
CN107979445A (zh) | 2018-05-01 |
EP3316486B1 (en) | 2023-06-14 |
KR20180045832A (ko) | 2018-05-04 |
CN107979445B (zh) | 2021-04-13 |
US10476523B2 (en) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102054556B1 (ko) | 사전 정렬된 입력을 사용하는 기본 검사 노드 기반의 신드롬 디코딩 | |
KR102061938B1 (ko) | 비-2진 ldpc 코드 디코딩을 위한 신드롬 계산을 위한 기본 체크 노드 처리 | |
KR101895164B1 (ko) | 코드 디코딩 에러 정정 방법 및 장치 | |
CN110999093B (zh) | 用于非二进制ldpc码的扩展最小和(ems)解码的校验节点处理的混合架构 | |
US11133827B2 (en) | Simplified, presorted, syndrome-based, extended min-sum (EMS) decoding of non-binary LDPC codes | |
US11290128B2 (en) | Simplified check node processing in non-binary LDPC decoder | |
CN112889221B (zh) | 用于非二进制码的消息传递解码的校验节点处理单元中的偏移值确定 | |
US11245421B2 (en) | Check node processing methods and devices with insertion sort |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |