KR100992048B1 - Multi-code ldpclow density parity check decoder - Google Patents

Multi-code ldpclow density parity check decoder Download PDF

Info

Publication number
KR100992048B1
KR100992048B1 KR1020080077191A KR20080077191A KR100992048B1 KR 100992048 B1 KR100992048 B1 KR 100992048B1 KR 1020080077191 A KR1020080077191 A KR 1020080077191A KR 20080077191 A KR20080077191 A KR 20080077191A KR 100992048 B1 KR100992048 B1 KR 100992048B1
Authority
KR
South Korea
Prior art keywords
code
ldpc
memories
engines
bit
Prior art date
Application number
KR1020080077191A
Other languages
Korean (ko)
Other versions
KR20090014998A (en
Inventor
앤드류 제이. 블랜크스바이
알빈 레이 린
Original Assignee
브로드콤 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/843,553 external-priority patent/US8010881B2/en
Application filed by 브로드콤 코포레이션 filed Critical 브로드콤 코포레이션
Publication of KR20090014998A publication Critical patent/KR20090014998A/en
Application granted granted Critical
Publication of KR100992048B1 publication Critical patent/KR100992048B1/en

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
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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/6527IEEE 802.11 [WLAN]
    • 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables

Landscapes

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

Abstract

다중 코드 LDPC(Low Density Parity Check; 저밀도 패리티 체크) 디코더에 관한 것이다. 다중 LDPC 코딩 신호들은 다중 LDPC 코딩 신호들의 각각을 디코딩하기 위해 필요한 최소한의 요구조건을 위해 준비된 하드웨어를 사용하여 디코딩될 수 있다. 각 LDPC 행렬(예를 들어 각 LDPC 코딩 신호를 디코딩하기 위해 적용된)이 공통 개수의 0이 아닌 부분 행렬들을 포함하는 실시예들에서, 각 LDPC 코딩 신호를 디코딩할 때 동일 개수의 메모리들이 적용된다. 그러나, 그들 특정 메모리들은 각 LDPC 코딩 신호를 디코딩할 때 상이한 부분집합들이 될 수 있다. 각 LDPC 코드가 해당 LDPC 행렬내의 0이 아닌 부분 행렬들의 상이한 개수의 메모리들을 포함하는 실시예에서, 각 LDPC 코딩 신호를 디코딩할 때 상이한 개수의 메모리들이 적용된다. 또한, 상이한 LDPC 코딩 신호들을 디코딩할 때 디코딩에서의 다양한 병렬 정도가 적용될 수 있으며, 상이한 개수들의 비트 엔진들 및 체크 엔진들이 적용될 수 있다.

Figure R1020080077191

A multiple code Low Density Parity Check (LDPC) decoder. Multiple LDPC coded signals can be decoded using hardware prepared for the minimum requirements necessary to decode each of the multiple LDPC coded signals. In embodiments in which each LDPC matrix (eg applied to decode each LDPC coded signal) includes a common number of nonzero partial matrices, the same number of memories is applied when decoding each LDPC coded signal. However, those particular memories may be different subsets when decoding each LDPC coded signal. In an embodiment where each LDPC code includes a different number of memories of nonzero partial matrices in the corresponding LDPC matrix, different numbers of memories are applied when decoding each LDPC coded signal. Also, various degrees of parallelism in decoding may be applied when decoding different LDPC coded signals, and different numbers of bit engines and check engines may be applied.

Figure R1020080077191

Description

다중 코드 저밀도 패리티 체크 디코더{MULTI-CODE LDPC(LOW DENSITY PARITY CHECK) DECODER}Multi-code low density parity check decoder {MULTI-CODE LOW DENSITY PARITY CHECK (DEPCR)}

본 발명은 일반적으로 통신 시스템에 관한 것이며, 특히 통신 시스템내에서 LDPC(Low Density Parity Check; 저밀도 패리티 체크) 코딩 신호의 디코딩에 관한 것이다.TECHNICAL FIELD The present invention generally relates to communication systems, and more particularly to decoding of Low Density Parity Check (LDPC) coded signals within a communication system.

데이터 통신 시스템은 수년동안 계속해서 발전해 왔다. 최근 크게 관심을 받아온 통신 시스템의 한 분야는 반복적 오류 검출 코드를 적용하는 통신 시스템이다. 특히 관심은 LDPC(Low Density Parity Check; 저밀도 패리티 체크) 코드를 적용하는 통신 시스템에 있다. 반복적 코드가 있는 통신 시스템들은 흔히 주어진 SNR(신호 대 잡음비)에 대해 다른 코드들보다 더 낮은 BER(비트 오류율)을 얻을 수 있다.Data communication systems have evolved over the years. One area of communication systems that has received a great deal of attention recently is a communication system employing an iterative error detection code. Of particular interest is in communication systems that apply Low Density Parity Check (LDPC) codes. Communication systems with repetitive codes can often achieve a lower bit error rate (BER) than other codes for a given signal-to-noise ratio (SNR).

이 영역의 계속적이고 가장 지배적인 발전은 통신 시스템 내의 주어진 BER 을 얻도록 요구되는 SNR을 낮추도록 계속해서 시도되어 왔다. 이상적인 목표는 통신 채널에서 샤논의 한계(Shannon limit)에 도달하도록 시도하여 왔다. 샤논의 한계는 통신 채널을 통해 오류가 없는 송신을 달성하는 특정 SNR을 갖는 통신 채널에 서 사용되는 데이터 레이트(rate)로서 볼 수 있다. 다른 말로 하면, 샤논 한계는 주어진 변조 및 코드 레이트에 대해 채널 용량에 대한 이론적인 한계이다.The continuing and most dominant development in this area has been continually attempted to lower the SNR required to achieve a given BER in a communication system. The ideal goal has been to try to reach Shannon's limit in the communication channel. Shannon's limitation can be seen as the data rate used in a communication channel with a specific SNR that achieves error-free transmission over the communication channel. In other words, the Shannon limit is a theoretical limit on channel capacity for a given modulation and code rate.

LDPC 코드는 일부 경우에서 샤논 한계에 도달할 수 있는 뛰어난 디코딩 성능을 제공한다는 것이 알려졌다. 예를 들면, 일부 LDPC 디코더들은 이론적인 샤논 한계로부터 0.3 dB(데시벨)이내로 나타난다는 것이 밝혀졌다. 한편 이 예시는 100만 길이의 변칙적인 LDPC 코드를 사용하여 달성되었고, 그럼에도 불구하고 통신 시스템 내에서 LDPC 코드들의 매우 고무적인 응용을 제시한다.LDPC codes have been found to provide excellent decoding performance in some cases to reach the Shannon limit. For example, it has been found that some LDPC decoders appear within 0.3 dB (decibels) from the theoretical Shannon limit. This example, on the other hand, has been achieved using a million lengths of anomalous LDPC codes and nonetheless presents very encouraging application of LDPC codes in communication systems.

LDPC 코딩 신호의 사용은 다수의 새로운 응용 영역들에서 계속해서 개척되었다. LDPC 코딩 신호를 사용할 수 있는 어떤 예시적인 가용 통신 시스템은 고속 이더넷 응용들(예를 들면, IEEE 802.3an(10GBASE-T) 최신 표준에 따른 10Gbps(초당 기가비트) 이더넷 동작)을 위한 4선 꼬인 쌍 케이블을 사용하는 통신 시스템뿐만 아니라 무선 환경내에서(예를 들면, IEEE 802.11n 최신 표준을 포함하는 IEEE 802.11 환경 공간에서) 동작하는 통신 시스템을 포함한다.The use of LDPC coded signals has continued to pioneer in many new application areas. Some exemplary available communication systems that can use LDPC coded signals include four-wire twisted pair cable for Fast Ethernet applications (eg, 10 Gbps (Gigabit per second) Ethernet operation in accordance with IEEE 802.3an (10GBASE-T) latest standard). Communication systems that operate within a wireless environment (e.g., in an IEEE 802.11 environment space that includes the latest IEEE 802.11n standard).

임의의 이들 특정 통신 시스템 응용 영역들에서, 오류 검출 코드를 얻는 근사적 용량은 매우 바람직하다. 종래의 연결된 코드들을 사용하여 포함될 수 있는 잠재적 제한들은 초고속 데이터 레이트 통신 시스템 응용 영역내의 이러한 응용들에서 상기 코드들의 사용을 단순히 배제한다.In any of these specific communication system application areas, an approximate capacity for obtaining an error detection code is highly desirable. Potential limitations that may be included using conventional linked codes simply preclude the use of such codes in such applications within the high speed data rate communication system application area.

일반적으로 말해서, LDPC 코드를 사용하는 통신 시스템들의 배경내에서, 인코더 성능을 가진 통신 채널의 한 끝의 제1 통신 장치, 및 디코더 성능을 가진 통신 채널의 다른 끝의 제2 통신 장치가 있다. 많은 경우들에서, 이들 통신 장치들 중 하나 또는 모두는 인코더 및 디코더 성능(예를 들면, 양방향성 통신 시스템)을 가진다. LDPC 코드는 또한 스토리지 매체에 기록하기 전에 데이터가 인코딩되는 데이터 스토리지(예를 들면, 하드 디스크 드라이브(HDD) 응용들 및 다른 메모리 스토리지 장치들)의 어떤 형태를 사용하는 것들을 포함하는 다양한 부가적인 응용들에 적용될 수 있고, 이후에 데이터는 스토리지 매체로부터 판독/검출된 후에 디코딩된다.Generally speaking, within the context of communication systems using LDPC codes, there is a first communication device at one end of a communication channel with encoder capability, and a second communication device at the other end of a communication channel with decoder capability. In many cases, one or both of these communication devices have encoder and decoder capabilities (eg, bidirectional communication system). The LDPC code may also be used for various additional applications, including those using some form of data storage (eg, hard disk drive (HDD) applications and other memory storage devices) in which data is encoded before writing to the storage medium. The data may then be decoded after being read / detected from the storage medium.

이러한 다수의 종래 기술의 통신 장치들에서, LDPC 코딩 신호를 디코딩할 수 있는 통신 장치들 및/또는 효과적인 장치들의 설계의 최대의 난관 및 장애 중 하나는 반복적 디코딩 프로세싱(예를 들면, 체크 엔진과 비트 엔진 사이에서 각각 체크 에지 메시지들 및 비트 에지 메시지들을 전후로 저장하고 전달할 때) 동안 업데이트되고 사용되는 모든 업데이트된 비트 에지 메시지들과 체크 에지 메시지들을 저장하고 관리하는데에 통상적으로 큰 면적과 메모리가 요구된다는 점이다. LDPC 코드들의 콘텍스트에서의 상대적으로 큰 블록 크기들을 처리할 때, 이를 체크 에지들 메시지들 및 비트 에지들 메시지들을 처리하는데 필요한 상기 메모리 요구조건들 및 메모리 관리는 핸들링하기 매우 어려울 수 있다. LDPC 코딩 신호를 디코딩하여 그 안에 있는 정보를 추출하기 위한 보다 나은 수단들에 대한 계속적인 필요가 있어왔다.In many of these prior art communication devices, one of the biggest challenges and obstacles in the design of communication devices and / or effective devices capable of decoding an LDPC coded signal is the iterative decoding processing (e.g., check engine and bit). Large areas and memory are typically required to store and manage all updated bit edge messages and check edge messages that are updated and used during the storage and forwarding of check edge messages and bit edge messages back and forth, respectively, between engines. Is the point. When dealing with relatively large block sizes in the context of LDPC codes, the memory requirements and memory management required to process check edges and bit edges messages can be very difficult to handle. There is a continuing need for better means for decoding LDPC coded signals and extracting the information therein.

더욱이, LDPC 코딩 신호를 디코딩하기 위해 적용된 저밀도 패리티 체크 행렬, H의 크기가 어떠한 크기에 이를 때, 제1 프로세싱 모듈 및 제2 프로세싱 모듈(예를 들어 체크 엔진 및 비트 엔진) 사이의 상호성(interconnectivity)은 현저하 게 증가될 수 있다.Moreover, the low density parity check matrix applied to decode the LDPC coded signal, the interconnectivity between the first processing module and the second processing module (e.g. check engine and bit engine) when the size of H reaches a certain size. Can be increased significantly.

본 발명에 의한 장치 및 방법은 하기의 첨부된 도면들, 상세한 설명, 청구범위에서 보다 상세하게 설명될 것이다.The apparatus and method according to the present invention will be described in more detail in the following appended drawings, detailed description, and claims.

본 발명의 일측면에 의하면, 저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더가 제공된다. 상기 디코더는,In accordance with one aspect of the present invention, a decoder is provided that is operable to decode a Low Density Parity Check (LDPC) coded signal. The decoder,

복수의 메모리들;A plurality of memories;

복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories;

복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And

제1 LDPC 코딩 신호의 디코딩 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들 및 상기 복수의 체크 엔진들을 선택적으로 연결하고; 및Selectively connect the plurality of bit engines and the plurality of check engines to first selected memories of the plurality of memories during decoding processing of a first LDPC coded signal; And

제2 LDPC 코딩 신호의 디코딩 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들 및 상기 복수의 체크 엔진들을 선택적으로 연결하도록 동작가능한 복수의 멀티플렉서들을 포함한다.And a plurality of multiplexers operable to selectively connect the plurality of bit engines and the plurality of check engines to second selection memories of the plurality of memories during decoding processing of a second LDPC coded signal.

상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes;

상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; 및The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal; And

상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하다.The decoder is operable to decode the second LDPC coded signal corresponding to the second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bits in the second LDPC coded signal.

바람직하게는,Preferably,

상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 복수의 O이 아닌(non-null) 부분 행렬들을 서로에게 중첩시킴에 의해 결정된다.The number of memories in the plurality of memories is determined by overlapping each other with a plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes.

바람직하게는, Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행하는 것에 의해 결정된다.The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search.

바람직하게는, Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행함에 의해 결정되며;The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search;

상기 그리디(greedy), 깊이 우선 탐색은 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려한다.The greedy, depth-first search is a column similarity metric indicating a coupling relationship for at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. Consider at least a portion of the column affinity metric.

바람직하게는, Preferably,

통신 장치내의 상기 복수의 메모리들의 설계는, 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려함에 의해 생성된 병합 패턴에 기반한다.The design of the plurality of memories in a communication device includes a column similarity metric that indicates a coupling relationship for at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. column affinity metric) based on the merge pattern generated by at least some consideration.

바람직하게는, Preferably,

상기 복수의 메모리들은 복수의 병합 메모리들을 포함하며, 상기 복수의 병합 메모리들의 병합 메모리는 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬에 상응하고, 아울러 상기 제2 LDPC 행렬내 제2 0이 아닌 부분 행렬에 상응한다.The plurality of memories includes a plurality of merge memories, the merge memory of the plurality of merge memories corresponding to a first non-zero partial matrix in the first LDPC matrix, and wherein a second 0 in the second LDPC matrix is Corresponds to a non-partial matrix.

바람직하게는, Preferably,

상기 복수의 LDPC 행렬들의 상기 제1 LDPC 행렬은 제1 복수의 0이 아닌 부분 행렬들을 포함하며;The first LDPC matrix of the plurality of LDPC matrices comprises a first plurality of nonzero partial matrices;

상기 복수의 LDPC 행렬들의 상기 제2 LDPC 행렬은 제2 복수의 0이 아닌 부분 행렬들을 포함하며;The second LDPC matrix of the plurality of LDPC matrices includes a second plurality of nonzero partial matrices;

상기 복수의 메모리들의 하나의 메모리는, 상기 제1 LDPC 코딩 신호의 디코 딩 동안, 상기 제1 복수의 0이 아닌 부분 행렬들의 제1 0이 아닌 부분 행렬을 처리할 때 적용되고, 상기 제2 LDPC 코딩 신호의 디코딩동안 상기 제2 복수의 0이 아닌 부분 행렬들의 제1 0이 아닌 부분 행렬을 처리할 때 또한 적용된다.One memory of the plurality of memories is applied when processing the first non-zero partial matrix of the first plurality of non-zero partial matrices during decoding of the first LDPC coded signal, and the second LDPC It also applies when processing the first non-zero partial matrix of the second plurality of non-zero partial matrices during decoding of the coded signal.

바람직하게는,Preferably,

상기 복수의 LDPC 행렬들의 상기 제1 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 부분집합을 포함하며; The first LDPC matrix of the plurality of LDPC matrices comprises a subset of the plurality of nonzero partial matrices;

상기 복수의 LDPC 행렬들의 상기 제2 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 상기 부분집합 및 적어도 하나의 추가 0이 아닌 부분 행렬을 포함한다.The second LDPC matrix of the plurality of LDPC matrices includes the subset of the plurality of nonzero partial matrices and at least one additional nonzero partial matrix.

바람직하게는, Preferably,

상기 복수의 메모리들의 하나의 메모리는 상기 제1 LDPC 코딩 신호의 디코딩동안 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬을, 그리고 상기 제2 LDPC 코딩 신호의 디코딩동안 상기 제2 LDPC 행렬내의 제2 0이 아닌 부분 행렬을 적용할 때 적용되며;One memory of the plurality of memories stores a first non-zero partial matrix in the first LDPC matrix during decoding of the first LDPC coded signal, and a first in the second LDPC matrix during decoding of the second LDPC coded signal. Applies when applying a nonzero partial matrix;

상기 제1 LDPC 행렬내의 상기 제1 0이 아닌 부분 행렬의 행 및 열 위치는 상기 제2 LDPC 행렬내의 상기 제2 0이 아닌 부분 행렬의 행 및 열 위치와 동일하다.Row and column positions of the first non-zero partial matrix in the first LDPC matrix are the same as row and column positions of the second non-zero partial matrix in the second LDPC matrix.

바람직하게는,Preferably,

상기 복수의 메모리들의 하나의 메모리는, 상기 제1 LDPC 코딩 신호를 디코딩할 때 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬을 적용하고, 상기 제2 LDPC 코딩 신호를 디코딩할 때 상기 제2 LDPC 행렬내의 제2 0이 아닌 부분 행렬을 적용할 때, 적용되며;One memory of the plurality of memories applies a first non-zero partial matrix in the first LDPC matrix when decoding the first LDPC coded signal and the second when decoding the second LDPC coded signal. Applies when applying a second non-zero partial matrix in an LDPC matrix;

상기 제1 0이 아닌 부분 행렬은 상기 제1 LDPC 행렬내의 제1 행 및 제1 열 위치를 가지며;The first non-zero partial matrix has a first row and first column position in the first LDPC matrix;

상기 제2 0이 아닌 부분 행렬은 상기 제2 LDPC 행렬내의 제2 행 및 제2 열 위치를 가진다.The nonzero partial matrix has a second row and a second column position within the second LDPC matrix.

바람직하게는,Preferably,

비트 노드 프로세싱동안, 상기 복수의 멀티플렉서들의 멀티플렉서는 상기 복수의 메모리들의 메모리에 상기 복수의 비트 엔진들의 비트 엔진을 결합하시키고;During bit node processing, the multiplexer of the plurality of multiplexers couples the bit engines of the plurality of bit engines to a memory of the plurality of memories;

체크 노드 프로세싱동안, 상기 복수의 멀티플렉서들의 멀티플렉서는 상기 복수의 메모리들의 메모리에 상기 복수의 비트 엔진들의 체크 엔진을 결합시킨다.During check node processing, the multiplexer of the plurality of multiplexers couples the check engine of the plurality of bit engines to a memory of the plurality of memories.

바람직하게는,Preferably,

상기 디코더는 집적회로내에 구현될 수 있다.The decoder may be implemented in an integrated circuit.

바람직하게는,Preferably,

상기 디코더는 통신 채널로부터 상기 제1 LDPC 코딩 신호 또는 상기 제2 LDPC 코딩 신호를 수신하도록 동작가능한 통신 장치 내에 구현되고,The decoder is implemented in a communication device operable to receive the first LDPC coded signal or the second LDPC coded signal from a communication channel,

상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템, 및 광섬유 통신 시스템 중 적어도 하나 내에 구현된다.The communication device is implemented in at least one of a satellite communication system, a wireless communication system, a wired communication system, and an optical fiber communication system.

본 발명의 다른 측면에 의하면,According to another aspect of the present invention,

저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더가 제공되며, 상기 디코더는,A decoder is provided that is operable to decode a Low Density Parity Check (LDPC) coded signal, the decoder comprising:

복수의 메모리들;A plurality of memories;

복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories;

복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And

제1 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들의 제1 선택 비트 엔진들을 연결하고;Connect first select bit engines of the plurality of bit engines to first select memories of the plurality of memories during bit node processing when decoding a first LDPC coded signal;

제1 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 체크 엔진들의 제1 선택 체크 엔진들을 연결하고;Connect first select check engines of the plurality of check engines to first select memories of the plurality of memories during check node processing when decoding a first LDPC coded signal;

제2 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들의 제2 선택 비트 엔진들을 연결하고;Connect second select bit engines of the plurality of bit engines to second select memories of the plurality of memories during bit node processing when decoding a second LDPC coded signal;

제2 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 체크 엔진들의 제2 선택 체크 엔진들을 연결하도록 동작가능한 복수의 멀티플렉서들을 포함한다.And a plurality of multiplexers operable to couple second select check engines of the plurality of check engines to second select memories of the plurality of memories during check node processing when decoding a second LDPC coded signal.

상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들 내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes;

상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; 및The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal; And

상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하다.The decoder is operable to decode the second LDPC coded signal corresponding to the second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bits in the second LDPC coded signal.

바람직하게는,Preferably,

상기 복수의 비트 엔진들의 상기 제1 선택 비트 엔진들은 상기 복수의 비트 엔진들의 상기 제2 선택 비트엔진들이며;The first selected bit engines of the plurality of bit engines are the second selected bit engines of the plurality of bit engines;

상기 복수의 체크 엔진들의 상기 제1 선택 체크 엔진들은 상기 복수의 체크 엔진들의 상기 제2 선택 비트 엔진들이다.The first selected check engines of the plurality of check engines are the second selected bit engines of the plurality of check engines.

바람직하게는,Preferably,

상기 복수의 비트 엔진들의 상기 제1 선택 비트 엔진들은 상기 복수의 비트 엔진들의 모든 비트엔진들이며;The first selected bit engines of the plurality of bit engines are all bit engines of the plurality of bit engines;

상기 복수의 체크 엔진들의 상기 제1 선택 체크 엔진들은 상기 복수의 체크 엔진들의 모든 체크 엔진들이다.The first selected check engines of the plurality of check engines are all check engines of the plurality of check engines.

바람직하게는,Preferably,

상기 제1 LDPC 코딩 신호의 디코딩동안 사용되지 않는 어떠한 메모리라도, 상기 제1 LDPC 코딩 신호의 디코딩 동안, 복수의 비트 엔진들내의 모든 비트 엔진들로부터 및 상기 체크 엔진들내의 모든 체크 엔진들로부터 연결해제된다.Any memory not used during the decoding of the first LDPC coded signal, during the decoding of the first LDPC coded signal, disconnects from all the bit engines in the plurality of bit engines and from all the check engines in the check engines. do.

바람직하게는,Preferably,

상기 제1 LDPC 코딩 신호의 디코딩동안, 상기 복수의 멀티플렉서들내의 멀티플렉서는 비트 노드 프로세싱동안 적어도 하나의 비트 엔진에 상기 복수의 메모리들의 메모리를 연결하도록 동작하고;During the decoding of the first LDPC coded signal, the multiplexer in the plurality of multiplexers is operative to connect a memory of the plurality of memories to at least one bit engine during bit node processing;

상기 제1 LDPC 코딩 신호의 디코딩동안, 상기 복수의 멀티플렉서들내의 멀티플렉서는 체크 노드 프로세싱동안 적어도 하나의 체크 엔진에 상기 복수의 메모리들의 메모리를 연결하도록 동작하고;During the decoding of the first LDPC coded signal, the multiplexer in the plurality of multiplexers is operative to connect a memory of the plurality of memories to at least one check engine during check node processing;

상기 제2 LDPC 코딩 신호의 디코딩동안, 상기 복수의 멀티플렉서들내의 멀티플렉서는 복수의 비트 엔진들내의 모든 비트 엔진들 및 상기 복수의 체크 엔진들내의 모든 체크 엔진들로부터 상기 복수의 메모리들의 상기 메모리를 연결해제시키도록 동작가능하다.During decoding of the second LDPC coded signal, a multiplexer in the plurality of multiplexers connects the memory of the plurality of memories from all bit engines in a plurality of bit engines and all check engines in the plurality of check engines. Operable to release.

바람직하게는,Preferably,

상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 복수의 O이 아닌(non-null) 부분 행렬들을 서로에게 중첩시킴에 의해 결정된다.The number of memories in the plurality of memories is determined by overlapping each other with a plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes.

바람직하게는,Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행하는 것에 의해 결정된다.The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search.

바람직하게는, Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행함에 의해 결정되며;The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search;

상기 그리디(greedy), 깊이 우선 탐색은 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려한다.The greedy, depth-first search is a column similarity metric indicating a coupling relationship for at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. Consider at least a portion of the column affinity metric.

바람직하게는, Preferably,

통신 장치내의 상기 복수의 메모리들의 설계는, 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려함에 의해 생성된 병합 패턴에 기반한다.The design of the plurality of memories in a communication device includes a column similarity metric that indicates a coupling relationship for at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. column affinity metric) based on the merge pattern generated by at least some consideration.

바람직하게는, Preferably,

상기 복수의 메모리들은 복수의 병합 메모리들을 포함하며, 상기 복수의 병합 메모리들의 병합 메모리는 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬에 상응하고, 아울러 상기 제2 LDPC 행렬내 제2 0이 아닌 부분 행렬에 상응한다.The plurality of memories includes a plurality of merge memories, the merge memory of the plurality of merge memories corresponding to a first non-zero partial matrix in the first LDPC matrix, and wherein a second 0 in the second LDPC matrix is Corresponds to a non-partial matrix.

바람직하게는, Preferably,

상기 복수의 LDPC 행렬들의 상기 제1 LDPC 행렬은 제1 복수의 0이 아닌 부분 행렬들을 포함하며;The first LDPC matrix of the plurality of LDPC matrices comprises a first plurality of nonzero partial matrices;

상기 복수의 LDPC 행렬들의 상기 제2 LDPC 행렬은 제2 복수의 0이 아닌 부분 행렬들을 포함하며;The second LDPC matrix of the plurality of LDPC matrices includes a second plurality of nonzero partial matrices;

상기 복수의 메모리들의 하나의 메모리는, 상기 제1 LDPC 코딩 신호의 디코딩 동안, 상기 제1 복수의 0이 아닌 부분 행렬들의 제1 0이 아닌 부분 행렬을 처리할 때 적용되고, 상기 제2 LDPC 코딩 신호의 디코딩동안 상기 제2 복수의 0이 아닌 부분 행렬들의 제1 0이 아닌 부분 행렬을 처리할 때 또한 적용된다.One memory of the plurality of memories is applied when processing the first non-zero partial matrix of the first plurality of non-zero partial matrices during decoding of the first LDPC coded signal, and the second LDPC coding It also applies when processing the first non-zero partial matrix of the second plurality of non-zero partial matrices during decoding of the signal.

바람직하게는,Preferably,

상기 복수의 LDPC 행렬들의 상기 제1 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 부분집합을 포함하며; The first LDPC matrix of the plurality of LDPC matrices comprises a subset of the plurality of nonzero partial matrices;

상기 복수의 LDPC 행렬들의 상기 제2 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 상기 부분집합 및 적어도 하나의 추가 0이 아닌 부분 행렬을 포함한다.The second LDPC matrix of the plurality of LDPC matrices includes the subset of the plurality of nonzero partial matrices and at least one additional nonzero partial matrix.

바람직하게는, Preferably,

상기 복수의 메모리들의 하나의 메모리는 상기 제1 LDPC 코딩 신호의 디코딩동안 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬을, 그리고 상기 제2 LDPC 코딩 신호의 디코딩동안 상기 제2 LDPC 행렬내의 제2 0이아닌 부분 행렬을 적용할 때 적용되며;One memory of the plurality of memories stores a first non-zero partial matrix in the first LDPC matrix during decoding of the first LDPC coded signal, and a first in the second LDPC matrix during decoding of the second LDPC coded signal. Applies when applying a non-zero partial matrix;

상기 제1 LDPC 행렬내의 상기 제1 0이 아닌 부분 행렬의 행 및 열 위치는 상기 제2 LDPC 행렬내의 상기 제2 0이 아닌 부분 행렬의 행 및 열 위치와 동일하다.Row and column positions of the first non-zero partial matrix in the first LDPC matrix are the same as row and column positions of the second non-zero partial matrix in the second LDPC matrix.

바람직하게는,Preferably,

상기 복수의 메모리들의 하나의 메모리는, 상기 제1 LDPC 코딩 신호를 디코딩할 때 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬을 적용하고, 상기 제2 LDPC 코딩 신호를 디코딩할 때 상기 제2 LDPC 행렬내의 제2 0이 아닌 부분 행렬을 적용할 때, 적용되며;One memory of the plurality of memories applies a first non-zero partial matrix in the first LDPC matrix when decoding the first LDPC coded signal and the second when decoding the second LDPC coded signal. Applies when applying a second non-zero partial matrix in an LDPC matrix;

상기 제1 0이 아닌 부분 행렬은 상기 제1 LDPC 행렬내의 제1 행 및 제1 열 위치를 가지며;The first non-zero partial matrix has a first row and first column position in the first LDPC matrix;

상기 제2 0이 아닌 부분 행렬은 상기 제2 LDPC 행렬내의 제2 행 및 제2 열 위치를 가진다.The nonzero partial matrix has a second row and a second column position within the second LDPC matrix.

바람직하게는,Preferably,

비트 노드 프로세싱동안, 상기 복수의 멀티플렉서들의 멀티플렉서는 상기 복수의 메모리들의 메모리에 상기 복수의 비트 엔진들의 비트 엔진을 결합하시키고;During bit node processing, the multiplexer of the plurality of multiplexers couples the bit engines of the plurality of bit engines to a memory of the plurality of memories;

체크 노드 프로세싱동안, 상기 복수의 멀티플렉서들의 멀티플렉서는 상기 복수의 메모리들의 메모리에 상기 복수의 비트 엔진들의 체크 엔진을 결합시킨다.During check node processing, the multiplexer of the plurality of multiplexers couples the check engine of the plurality of bit engines to a memory of the plurality of memories.

바람직하게는,Preferably,

상기 디코더는 집적회로내에 구현될 수 있다.The decoder may be implemented in an integrated circuit.

바람직하게는,Preferably,

상기 디코더는 통신 채널로부터 상기 제1 LDPC 코딩 신호 또는 상기 제2 LDPC 코딩 신호를 수신하도록 동작가능한 통신 장치 내에 구현되고,The decoder is implemented in a communication device operable to receive the first LDPC coded signal or the second LDPC coded signal from a communication channel,

상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템, 및 광섬유 통신 시스템 중 적어도 하나 내에 구현된다.The communication device is implemented in at least one of a satellite communication system, a wireless communication system, a wired communication system, and an optical fiber communication system.

본 발명의 또 다른 측면에 의하면,According to another aspect of the present invention,

저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더가 제공되며, 상기 디코더는,A decoder is provided that is operable to decode a Low Density Parity Check (LDPC) coded signal, the decoder comprising:

복수의 메모리들;A plurality of memories;

복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories;

복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And

제1 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to first select memories of the plurality of memories during bit node processing when decoding a first LDPC coded signal;

제1 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 체크 엔진들을 연결하고;Connect the plurality of check engines to first selected memories of the plurality of memories during check node processing when decoding a first LDPC coded signal;

제2 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to second select memories of the plurality of memories during bit node processing when decoding a second LDPC coded signal;

제2 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 체크 엔진들을 연결하고;Connect the plurality of check engines to second selected memories of the plurality of memories during check node processing when decoding a second LDPC coded signal;

제3 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메 모리들의 제3 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to third select memories of the plurality of memories during bit node processing when decoding a third LDPC coded signal;

제3 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제3 선택 메모리들에 상기 복수의 체크 엔진들을 연결하도록 동작가능한 복수의 멀티플렉서들을 포함한다.And a plurality of multiplexers operable to couple the plurality of check engines to third selected memories of the plurality of memories during check node processing when decoding a third LDPC coded signal.

상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes;

상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal;

상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하며;The decoder is operable to decode the second LDPC coded signal corresponding to a second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of encoded bits in the second LDPC coded signal;

상기 디코더는 상기 제3 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제3 LDPC 행렬에 상응하는 상기 제3 LDPC 코딩 신호를 디코딩하도록 동작가능하다.The decoder is operable to decode the third LDPC coded signal corresponding to the third LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bits in the third LDPC coded signal.

바람직하게는,Preferably,

상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 복수의 O이 아닌(non-null) 부분 행렬들을 서로에게 중첩시킴에 의해 결정된다.The number of memories in the plurality of memories is determined by overlapping each other with a plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes.

바람직하게는, Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행하는 것에 의해 결정된다.The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search.

바람직하게는, Preferably,

상기 복수의 메모리들내의 메모리들의 개수는 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩의 그리디(greedy), 깊이 우선 탐색을 수행함에 의해 결정되며;The number of memories in the plurality of memories is a greedy, depth first of overlap of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. Determined by performing a search;

상기 그리디(greedy), 깊이 우선 탐색은 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열, 상기 제2 LDPC 행렬내의 열, 및 상기 제3 LDPC 행렬내의 열중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려한다.The greedy, depth-first search is a combination of at least one of another column in the first LDPC matrix, a column in the second LDPC matrix, and a column in the third LDPC matrix of any column in the first LDPC matrix. Consider at least a portion of the column affinity metric indicative of the relationship.

바람직하게는, Preferably,

통신 장치내의 상기 복수의 메모리들의 설계는, 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열, 상기 제2 LDPC 행렬내의 열, 및 상기 제3 LDPC 행렬내의 열중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려함에 의해 생성된 병합 패턴에 기반한다.The design of the plurality of memories in a communication device is coupled to at least one of another column in the first LDPC matrix, a column in the second LDPC matrix, and a column in the third LDPC matrix of a column in the first LDPC matrix. It is based on a merging pattern generated by considering at least a portion of a column affinity metric indicative of a relationship.

바람직하게는, Preferably,

상기 복수의 메모리들은 복수의 병합 메모리들을 포함하며, 상기 복수의 병 합 메모리들의 병합 메모리는 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬에 상응하고, 상기 제2 LDPC 행렬내 제2 0이 아닌 부분 행렬에 상응하고, 상기 제3 LDPC 행렬내 제3 0이 아닌 부분 행렬에 상응한다.The plurality of memories includes a plurality of merge memories, wherein the merge memory of the plurality of merge memories corresponds to a first non-zero partial matrix in the first LDPC matrix, and a second 0 in the second LDPC matrix is Corresponding to a non-partial matrix and corresponding to a third non-zero partial matrix in the third LDPC matrix.

바람직하게는,Preferably,

상기 복수의 LDPC 행렬들의 상기 제1 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 부분집합을 포함하며; The first LDPC matrix of the plurality of LDPC matrices comprises a subset of the plurality of nonzero partial matrices;

상기 복수의 LDPC 행렬들의 상기 제2 LDPC 행렬은 상기 복수의 0이 아닌 부분 행렬들의 상기 부분집합 및 적어도 하나의 추가 0이 아닌 부분 행렬을 포함한다.The second LDPC matrix of the plurality of LDPC matrices includes the subset of the plurality of nonzero partial matrices and at least one additional nonzero partial matrix.

바람직하게는,Preferably,

상기 복수의 메모리들의 하나의 메모리는, 상기 제1 LDPC 코딩 신호를 디코딩할 때 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬을 적용하고, 상기 제2 LDPC 코딩 신호를 디코딩할 때 상기 제2 LDPC 행렬내의 제2 0이 아닌 부분 행렬을 적용할 때, 적용되며;One memory of the plurality of memories applies a first non-zero partial matrix in the first LDPC matrix when decoding the first LDPC coded signal and the second when decoding the second LDPC coded signal. Applies when applying a second non-zero partial matrix in an LDPC matrix;

상기 제1 0이 아닌 부분 행렬은 상기 제1 LDPC 행렬내의 제1 행 및 제1 열 위치를 가지며;The first non-zero partial matrix has a first row and first column position in the first LDPC matrix;

상기 제2 0이 아닌 부분 행렬은 상기 제2 LDPC 행렬내의 제2 행 및 제2 열 위치를 가진다.The nonzero partial matrix has a second row and a second column position within the second LDPC matrix.

바람직하게는,Preferably,

상기 디코더는 집적회로내에 구현될 수 있다.The decoder may be implemented in an integrated circuit.

바람직하게는,Preferably,

상기 디코더는 통신 채널로부터 상기 제1 LDPC 코딩 신호 또는 상기 제2 LDPC 코딩 신호를 수신하도록 동작가능한 통신 장치 내에 구현되고,The decoder is implemented in a communication device operable to receive the first LDPC coded signal or the second LDPC coded signal from a communication channel,

상기 통신 장치는 위성 통신 시스템, 무선 통신 시스템, 유선 통신 시스템, 및 광섬유 통신 시스템 중 적어도 하나 내에 구현된다.The communication device is implemented in at least one of a satellite communication system, a wireless communication system, a wired communication system, and an optical fiber communication system.

본 발명의 다른 특징들 및 장점들은 첨부된 도면들을 참조하여 이루어질 본 발명의 상세한 설명으로부터 명확해질 것이다.Other features and advantages of the present invention will become apparent from the following detailed description of the invention made with reference to the accompanying drawings.

LDPC(Low Density Parity Check) 코드 기법들은 점점 더 많은 수의 통신 표준들(예를 들어 IEEE 802.3an, IEEE 802.11n, 802.20, DVB-S2)에서 채택되고 있는 용량 접근 방식(capacity approaching) 순방향 오류 정정 코드(ECCs: erro correcting codes)이다. 관련된 응용 분야들은 자기 레코딩(magnetic recording), 무선이나 구리 및 광섬유를 통한 고속 데이터 전송 등을 포함한다.Low Density Parity Check (LDPC) code schemes are capacity approaching forward error correction adopted in an increasing number of communication standards (e.g. IEEE 802.3an, IEEE 802.11n, 802.20, DVB-S2). Codes (ECCs: erro correcting codes). Related applications include magnetic recording, high speed data transmission over wireless or copper and fiber optics.

일 실시예에서, LDPC 디코딩 프로세싱은 메시지(예를 들어 체크 노드 프로세싱(check node processing)(종종 체크 엔진 프로세싱이라고 달리 불리기도 함) 및 비트 노드 프로세싱(bit node processing)(종종 비트 엔진 프로세싱이라고 불리기도 함)을 수행할 경우에 체크 에지 메시지들(check edge messages) 및 비트 에지 메시지들(bit edge messages)[또는 "가변 에지 메시지들(variable edge messages)"이라고 불리기도 함])가 앞뒤로 전달되는 방식인 반복적 디코딩 방식을 이용하여 수행된다. 이는 종종 메시지 전달 디코딩 프로세싱(message passing decoding processing)이라고 불리며, 해당 코드의 그래프 방식 표현(graph representation) 상에서 작동한다(예를 들어 LDPC 이분형(bipartite) 그래프(본 기술 분야에서 "태너(Tanner)" 그래프라고 불리기도 함)).In one embodiment, LDPC decoding processing may include messages (e.g., check node processing (sometimes referred to as check engine processing)) and bit node processing (often referred to as bit engine processing). Check edge messages and bit edge messages (also called "variable edge messages") back and forth when performing Is performed using an iterative decoding scheme. This is often called message passing decoding processing and operates on a graph representation of the code in question (e.g., LDPC bipartite graph ("Tanner" in the art). Also called a graph)).

LDPC 코딩 신호들을 이용하는 많은 통신 응용분야 내에서, 하나 이상의 코딩 기법을 지원하는 것이 필수적이거나 내지는 바람직하다. 어떤 한 시점에서 보면, 서로 다른 코딩 기법들 중 각각이 서로 다른 노이즈 환경이나 데이터 특성들 하에서 이용될 수 있다. 예를 들어, 통신 시스템 내의 동작 환경이 변화하면(예를 들어 SNR이 변화), 사용되고 있던 특정 코드도 그러한 변화된 환경들을 수용할 수 있도록 적응적으로 변화될 수 있어야 하겠지만, 여전히 용인될 수 있는 수준의 성능(예를 들어 용인될 만큼의 낮은 오류율을 가진 상태에서 용인될 만큼 높은 처리량)을 유지하여야 한다. 다른 시점에서 보더라도, 어떤 송수신기는 다중 프로토콜 송수신기로서 구현되어 서로 다른 통신 프로토콜들에 대한 일군의 코드들을 지원할 수 있을 수 있다. 많은 응용 제품들이 또한 그 상응하는 LDPC 행렬들이 부분행렬(sub-matrix) 기반이며, 그러한 LDPC 행렬들 중 일부는 순열된(permuted) 행렬들을 이용하는 것이 특징인 LDPC 코드들을 이용하여 동작한다.Within many communications applications using LDPC coded signals, it is necessary or desirable to support one or more coding schemes. At some point in time, each of the different coding techniques may be used under different noise environments or data characteristics. For example, if the operating environment within a communication system changes (e.g., the SNR changes), the specific code being used should also be able to adapt adaptively to accommodate such changed environments, but still to an acceptable level. Maintain performance (eg throughput high enough to be tolerated with an error rate low enough). From another point of view, some transceivers may be implemented as multi-protocol transceivers to support a group of codes for different communication protocols. Many applications also operate using LDPC codes, whose corresponding LDPC matrices are sub-matrix based, some of which use permuted matrices.

예를 들어, IEEE 802.11n 표준은 부분행렬 구축(sub-matrix construction)을 기반으로 하는 12 가지의 서로 다른 LDPC 코드들을 특정하고 있다. 이와 유사하게, IEEE 802.16e 표준은 마찬가지로 부분행렬 구축을 기반으로 하는 24 개의 서로 다른 LDPC 코드들을 특정한다. 이들은 단지 본 발명의 특정 측면들이 채택될 수 있는 몇몇 응용분야들의 예에 불과하다.For example, the IEEE 802.11n standard specifies twelve different LDPC codes based on sub-matrix construction. Similarly, the IEEE 802.16e standard specifies 24 different LDPC codes that are based on submatrix construction as well. These are merely examples of some applications in which certain aspects of the invention may be employed.

본 출원에서 제공되는 이러한 수단은 디코더가 지원할 필요가 있는 일군의 코드들(family of codes)의 LDPC 행렬들의 부분행렬 구축을 활용함으로써, 디코더의 구현 복잡도를 줄이는 효과적인 접근 방식에 관련된다. 통상적으로 디코더는 어떤 한 시점(예를 들어 어떤 특정 LDPC 코드를 가지고 생성된, 특정한 코딩 신호를 디코딩할 경우)에 상기 코드군 중에서 선택된 하나의 코드만 지원할 필요가 있음에 따라, 본 출원에서 제공되는 디코더의 구조는 메모리 요소들과 계산 유닛들이 효율적으로 공유될 수 있는 방식으로 제공된다. 이는 디코더의 메모리 저장 공간과 계산 유닛의 요구량을 감소시키며 더 작은 디코더 면적이라는 결과를 가져온다.This means provided in the present application relates to an effective approach that reduces the implementation complexity of the decoder by utilizing submatrix construction of a group of LDPC matrices of a family of codes that the decoder needs to support. As a decoder typically needs to support only one code selected from the above code group at any point in time (e.g., when decoding a particular coded signal, generated with a certain LDPC code), The structure of the decoder is provided in such a way that memory elements and computational units can be efficiently shared. This reduces the memory storage space of the decoder and the computational unit requirements and results in a smaller decoder area.

나아가, 본 출원에서는, 다수의 관련된 기술들이, 어떤 특정 응용 분야 내에서 반드시 지원되어야 하는 일군의 LDPC 코드들 내의 모든 LDPC 코드들의 중첩(superposition)으로부터 어떤 "병합된(merged)" 디코더 구조를 유도해 내는 데에 이용될 수 있는 수단이 또한 제공된다. 이러한 병합 기술들은 개별 코드들의 구축에 있어서 영(null) 부분행렬들을 이용할 수 있고, 또한 LDPC 코드들의 그래프 표현에 이어서 근접도(proximity)에 기초한 메트릭(metric)들을 이용할 수 있다.Further, in this application, a number of related techniques derive some "merged" decoder structure from the superposition of all LDPC codes in a group of LDPC codes that must be supported within a particular application. Means are also provided which can be used to produce. Such merging techniques can use null submatrices in the construction of individual codes, and can also use metrics based on proximity following the graphical representation of LDPC codes.

본 출원에서 제공되는 수단은 또한 앞서 설명한 바 있는, 각각 "Distributed processing LDPC(Low Density Parity Check) decoder"라는 제목을 가진 미국 가특허출원 및 미국 실용실안 출원에 설명된 구조들을 포함하는 다른 LDPC 디코딩 구조들 내에서도 적용될 수 있다. Means provided in this application also include other LDPC decoding structures, including the structures described in the U.S. Provisional Patent Application and U.S. Utility Model Application, each entitled "Distributed processing Low Density Parity Check (LDPC) decoder," as previously described. It can also be applied in the field.

본 출원에는 단일한 통신 장치 내지 하드웨어가 다양한 LDPC 코딩 신호들의 디코딩을 수행하는 데에 채택될 수 있게 하는 새로운 수단이 제공된다. 이러한 LDPC 코딩 신호들의 각각은 디코딩 프로세싱이 수행되게 할 수 있는 소정의 상응하는 LDPC 행렬을 가진다. 몇몇 실시예에서는, 이러한 LDPC 코드들의 각각에 상응하는 이러한 LDPC 행렬들의 각각이 같은 수의 부분행렬들을 가질 수 있다. 다른 실시예들에서는, 이러한 LDPC 행렬들의 각각 내에 있는 부분행렬의 수는 같지 않아야 할 필요가 있다. 이러한 접근 방식은 통신 장치 내의 면적 초과부분(overhead)을 최소화하는 것을 촉진하며, 또한 그 내부의 경로 혼잡도(routing congestion)를 줄일 수 있다.The present application provides new means that enable a single communication device or hardware to be employed to perform decoding of various LDPC coded signals. Each of these LDPC coded signals has a predetermined corresponding LDPC matrix that can cause decoding processing to be performed. In some embodiments, each of these LDPC matrices corresponding to each of these LDPC codes may have the same number of submatrices. In other embodiments, the number of submatrices within each of these LDPC matrices need not be the same. This approach facilitates minimizing the area overhead in the communication device and can also reduce routing congestion therein.

이러한 방식은 복수의 LDPC 코딩 신호들을 디코딩하도록 동작할 수 있는 통신 장치를 설계하는 데에 이용될 수도 있다. 예를 들어, 일 실시예는 IEEE 802.11n 표준에 따라 채택되는 12 가지의 코드들 중 어느 하나를 이용하여 생성된 LDPC 코딩 신호들을 디코딩하도록 동작할 수 있는 통신 장치가 결국 되도록 이용될 수 있다. 나아가, 본 출원에 제공되는 방식은 메모리들(예를 들어, 서로 다른 LDPC 행렬들의 상호 배타적인 부분행렬들을 디코딩할 때에 이용되는 것과 같은 종류의 메모리들)의 병합을 이용하여 최적화될 수 있다.This approach may be used to design a communication device that is operable to decode a plurality of LDPC coded signals. For example, one embodiment may be used so that a communications device that is operable to decode LDPC coded signals generated using any one of twelve codes adopted in accordance with the IEEE 802.11n standard. Furthermore, the scheme provided in this application can be optimized using the merging of memories (eg, the same kind of memories used when decoding mutually exclusive submatrices of different LDPC matrices).

여러 LDPC 코딩 신호들을 디코딩하도록 동작할 수 있는 어떤 통신 장치 내의 최소 개수의 제공 하드웨어에 도달할 수 있는 접근 방식은 여러 가지가 있다. 예를 들어, 어떤 직선적인 접근 방식은 LDPC 코드들의 각각에 상응하는 LDPC 행렬들의 각각을 서로 중첩(superimpose)시키는 것을 수반한다. 그 결과로 얻은, 중첩된 LDPC 행렬 내의 부분행렬 자리가 0이 아닌 요소(non-null entry)를 가지고 있는 때마다, 그 부분행렬 위치를 위한 소정의 메모리 공간이 제공된다. 이러한 직선적인 중첩 방식은 여러 가지의 LDPC 코딩 신호들을 디코딩하기 위한 충분한 하드웨어 제공이라는 결과를 가져온다. 추가적으로, 아래의 다른 실시예들에서 설명될 바와 같이, 이러한 직선적인 중첩 방식으로부터 달성될 수 있는 추가적인 하드웨어 절감이 있을 수 있다.There are many approaches that can reach the minimum number of providing hardware in any communication device that can operate to decode multiple LDPC coded signals. For example, some linear approaches involve superimposing each of the LDPC matrices corresponding to each of the LDPC codes. Whenever the resulting submatrix position in the nested LDPC matrix has a non-null entry, a predetermined memory space is provided for that submatrix position. This linear superposition approach results in sufficient hardware provision for decoding various LDPC coded signals. Additionally, as will be described in other embodiments below, there may be additional hardware savings that can be achieved from this linear superposition scheme.

디지털 통신 시스템들의 목표는 디지털 데이터를 한 장소 또는 서브시스템에서 다른 장소로 오류 없이 또는 용인될 수 있는 수준의 낮은 오류율을 가지고 전송하는 것이다. 도 1에 나타나 있듯이, 데이터는 대단히 다양한 종류의 통신 시스템들에서 다양한 통신 채널을 통해 즉 자기 매체, 유선, 무선, 유선, 광케이블, 구리선 및 그 밖의 유사한 형태의 매체를 통해 전송될 수 있다.The goal of digital communication systems is to transmit digital data from one location or subsystem to another with no errors or with acceptable low error rates. As shown in FIG. 1, data can be transmitted over a wide variety of communication systems through various communication channels, ie, through magnetic media, wired, wireless, wired, optical cable, copper, and other similar types of media.

도 1 및 도 2는 각각 다양한 통신 시스템들(100, 200)의 실시예들을 예시하는 도면이다. 1 and 2 are diagrams illustrating embodiments of various communication systems 100 and 200, respectively.

도 1을 참조하면, 통신 시스템(100)의 실시예는 소정의 통신 채널(199)을 이용하는 것으로서, 상기 통신 채널(199)은 상기 통신 채널(199)의 한쪽 종단에 놓인 통신 장치(110)(이는 인코더(114)를 가지는 송신기(112)를 포함하며 또한 디코더(118)를 가지는 수신기(116)를 포함함)를 그 통신 채널(199)의 다른 쪽 종단에 있는 또 다른 통신 장치(120)(이는 인코더(128)를 가지는 송신기(126)를 포함하며 또한 디코더(124)를 가지는 수신기(122)를 포함함)에 통신 가능하도록 결합한다. 일부 실시예들에서는, 상기 통신 장치들(110, 120) 중 어느 하나는 오직 송신기 또는 수신기만을 포함할 수도 있다. 상기 통신 채널(199)이 구현될 수 있는 매체의 방식에는 여러 가지 서로 다른 형태가 있다(예를 들어, 위성 접시 안테나들(132, 134)을 이용하는 위성 통신 채널(130), 무선 타워들(142, 144) 내지 국지 안테나들(152, 154)을 이용하는 무선 통신 채널(140), 유선 통신 채널(150), 내지는 전기-광학(E/O: electrical to optical) 인터페이스(162)와 광학-전기(O/E: optical to electrical) 인터페이스(164)를 이용하는 광학 통신 채널(160) 각각 또는 이들의 조합). 또한, 하나 이상의 종류의 매체가 구현되고 서로 인터페이싱되어 통신 채널(199)을 형성할 수도 있다.Referring to FIG. 1, an embodiment of a communication system 100 utilizes a predetermined communication channel 199, which communication channel 199 is located at one end of the communication channel 199. This includes a transmitter 112 with an encoder 114 and also a receiver 116 with a decoder 118) at another communication device 120 (at the other end of its communication channel 199). It includes a transmitter 126 having an encoder 128 and also communicatively coupled to a receiver 122 having a decoder 124). In some embodiments, either one of the communication devices 110, 120 may include only a transmitter or a receiver. There are many different forms of media in which the communication channel 199 may be implemented (e.g., satellite communication channel 130 using satellite dish antennas 132, 134, wireless towers 142). 144, a wireless communication channel 140 using local antennas 152, 154, a wired communication channel 150, or an electrical to optical (E / O) interface 162 and an optical-electric ( O / E: optical communication channel 160 using optical to electrical interface 164 or a combination thereof). In addition, one or more types of media may be implemented and interfaced with each other to form a communication channel 199.

통신 시스템 내에 원치 않게 발생할 수 있는 송신 오류들을 줄일 수 있도록, 오류 정정 기법 및 채널 코딩 기법들이 종종 이용된다. 일반적으로, 이러한 오류 정정 기법 및 채널 코딩 기법은 송신기 측에서는 인코더의 이용과 수신기 측에서는 디코더의 이용을 수반한다.Error correction techniques and channel coding techniques are often used to reduce transmission errors that may occur undesirably in a communication system. In general, such error correction and channel coding techniques involve the use of an encoder at the transmitter side and a decoder at the receiver side.

도 2의 통신 시스템(200)을 참조하면, 통신 채널(299)의 송신 측 종단에서, 정보 비트들(201)이 송신기(297)에 제공되는데, 이 송신기(297)는 인코더 및 심볼 매퍼(encoder and symbol mapper, 220, 이는 각각 개별 기능 블록들(222, 224)로 인식될 수도 있음)를 이용하여 이들 정보 비트들(201)의 인코딩을 수행하고 그럼으로써 이산 값 변조 심볼들로 된 시퀀스(203)를 생성하도록 동작할 수 있으며, 이 시퀀스(203)는 송신기 구동부(230)로 제공되고, 송신기 구동부(230)는 디지털 아날로그 변환기(DAC: Digital to Analog Converter)(232)를 이용하여 연속 시간 송신 신호(204)를 생성하며 또한 송신 필터(transmit filter)(234)를 이용하여 상기 통신 채널(299)에 실질적으로 적합한 필터링된 연속 시간 송신 신호(205)를 생성한다. 통신 채널(299)의 수신 측 종단에서는, 연속 시간 수신 신호(206)가 아날로그 프론트엔드(AFE: Analog Front End)(260)에 제공되는데, 이 AFE(260)는 수신 필터(262)(이는 필터링된 연속 시간 수신 신호(207)를 생성한다)와 아날로그 디지털 변환기(ADC: Analog to Digital Converter, 264, 이는 이산 시간 수신 신호들(208)을 생성한다)를 포함한다. 메트릭 생성기(metric generator, 270)는 심볼 메트릭들(209)을 계산하며, 이 심볼 메트릭들(209)은 디코더에 의해 상기 이산 값 변조 심볼들 및 거기에 인코딩되어 포함된 정보 비트들에 관한 최선 추정값들(best estimates)(210)을 산출하는 데에 이용된다.Referring to the communication system 200 of FIG. 2, at the transmitting end of the communication channel 299, information bits 201 are provided to the transmitter 297, which is an encoder and symbol mapper. and symbol mapper 220, which may be encoded as separate functional blocks 222 and 224, respectively, to perform encoding of these information bits 201 and thereby a sequence 203 of discrete value modulation symbols. A sequence 203 is provided to the transmitter driver 230, and the transmitter driver 230 transmits continuous time using a digital to analog converter (DAC) 232. Generate signal 204 and generate filtered continuous time transmission signal 205 that is substantially suitable for communication channel 299 using transmit filter 234. At the receiving end of the communication channel 299, a continuous time receive signal 206 is provided to an analog front end (AFE) 260, which is the receiving filter 262 (which is filtering). Generate a continuous time received signal 207) and an analog-to-digital converter (ADC: 264, which produces discrete time received signals 208). A metric generator 270 calculates symbol metrics 209, which are best estimated by the decoder for the discrete value modulation symbols and the information bits encoded therein. Are used to calculate the best estimates 210.

앞의 실시예들 중 어느 하나에 포함된 디코더들은 본 발명의 다양한 측면들 내지 실시예들을 그 안에 포함하도록 구현될 수 있다. 추가적으로, 이어지는 다수의 도면들은 본 발명의 특정 측면들 내지 실시예들에 따라 구현될 수 있는 장치, 시스템, 기능 내지 방법들을 지원하는 데에 이용될 수 있는 다른 특정 실시예들을 (일부는 더욱 상세하게) 설명한다. 본 발명의 일부 측면들 내지 실시예들에 따라 처리되는 한 가지 특정 형태의 신호는 LDPC 코딩 신호이다. 아래의 좀더 상세한 내용들이 제공되기에 앞서, LDPC 코드들에 관한 일반적인 설명이 제공된다.Decoders included in any one of the above embodiments may be implemented to include various aspects to embodiments of the present invention therein. In addition, the following several drawings illustrate other specific embodiments that may be used to support devices, systems, functions, or methods that may be implemented in accordance with certain aspects to the embodiments of the present invention (some in more detail). ) Explain. One particular type of signal that is processed in accordance with some aspects to embodiments of the present invention is an LDPC coded signal. Prior to providing further details below, a general description of LDPC codes is provided.

도 3은 LDPC 디코딩 프로세싱을 수행하도록 동작할 수 있는 장치(300)의 실시예를 예시한 것이다. 상기 장치(300)는 프로세싱 모듈(320) 및 메모리(310)를 포함한다. 상기 메모리(310)는 프로세싱 모듈에 결합되고, 상기 메모리는 상기 프로세싱 모듈(320)이 다양한 기능들을 수행할 수 있도록 만드는 동작 명령어들을 저장하도록 동작할 수 있다. 상기 프로세싱 모듈(320)은 LDPC 디코딩 프로세싱이 본 출원에 설명된 여타 실시예 또는 그에 등가인 구성에 따라 수행되도록 하는 그러한 방법을 수행하거나 내지는 그러한 방법을 통제하도록 동작할 수 있다.3 illustrates an embodiment of an apparatus 300 that may be operable to perform LDPC decoding processing. The apparatus 300 includes a processing module 320 and a memory 310. The memory 310 is coupled to a processing module, and the memory may be operable to store operational instructions that enable the processing module 320 to perform various functions. The processing module 320 may be operative to perform or control such a method such that LDPC decoding processing is performed in accordance with other embodiments or equivalent configurations described herein.

상기 프로세싱 모듈(320)은 공유되는 처리 장치(shared processing device)나, 개별적인 처리 장치들(individual processing devices), 또는 복수의 처리 장치들을 이용하여 구현될 수 있다. 이러한 처리 장치는 마이크로프로세서(microprocessor), 마이크로컨트롤러(microcontroller), 디지털 신호 처리 장치(digital signal processor), 마이크로컴퓨터(microcomputer), 중앙 처리 장치(central processing unit), FPGA(field programmable gate array), PLD(programmable logic device), 상태 머신(state machine), 논리 회로, 아날로그 회로, 디지털 회로, 내지 그 밖에 동작을 지시하는 명령어들에 기초하여 신호들(아날로그 신호 또는 디지털 신호)을 조작할 수 있는 여하한 장치들이 될 수 있다. 그러한 메모리(310)는 단일한 메모리 장치 또는 복수의 메모리 장치들일 수 있다. 이러한 메모리 장치는 읽기 전용 메모리(read-only memory), 임의 접근 메모리(random access memory), 휘발성 메모리(volatile memory), 비휘발성 메모리(non-volatile memory), 정적 메모리(static memory), 동적 메모리(dynamic memory), 플래쉬 메모리(flash memory) 및 기타 디지털 정보를 저장할 수 있는 여하한 장치가 될 수 있다. 상기 프로세싱 모듈(320)이 그 기능들 중 하나 또는 그 이상의 기능들을 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로를 통해 구현한 경우에, 상기 상응하는 동작에 관한 명령어들을 저장하는 메모리는 상기의 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로들로 구성된 회로부와 함께 칩에 내장될 수 있다는 점을 주목한다.The processing module 320 may be implemented using a shared processing device, individual processing devices, or a plurality of processing devices. Such processing units include microprocessors, microcontrollers, digital signal processors, microcomputers, central processing units, field programmable gate arrays (FPGAs), and PLDs. (programmable logic device), state machine, logic circuit, analog circuit, digital circuit, or any other that can manipulate signals (analog signal or digital signal) based on instructions instructing operation The devices can be. Such memory 310 may be a single memory device or a plurality of memory devices. Such memory devices include read-only memory, random access memory, volatile memory, non-volatile memory, static memory, and dynamic memory ( It can be any device capable of storing dynamic memory, flash memory and other digital information. When the processing module 320 implements one or more of the functions through state machines, analog circuits, digital circuits, or logic circuits, the memory storing instructions for the corresponding operation is stored in the above state. Note that it can be embedded in a chip with circuitry consisting of machines, analog circuits, digital circuits or logic circuits.

만약 일부 실시예들의 경우에 바람직하다면, 상기 LDPC 디코딩 프로세싱이 수행되는 방식(예를 들어, 일부분, 모듈 내지 기능 블록이 체크 엔진으로부터 비트 엔진으로 옮겨지는 식)이 상기 장치(300)으로부터 어떤 통신 시스템(340), 즉 원하는 LDPC 코드를 이용한 LDPC 코딩을 이용하고 또한 이를 수행하도록 동작하는 통신 시스템으로 제공될 수 있다. 예를 들어, 현재 사용되고 있는 LDPC 코딩에 상응하는 정보(예를 들어, 상기 LDPC 코드의 패리티 체크 행렬)는 또한 프로세싱 모듈(320)에서 상기 통신 시스템(340) 내에 구현된 다양한 통신 장치들 중 어느 하나(330)에 마찬가지로 제공될 수 있다. 또한, 그러한 LDPC 디코딩이 상기 통신 시스템(340) 내에 구현된 어떤 다양한 통신 장치들 중 어느 하나(330) 내에서 수행되게 되는 방식은 또한 상기 프로세싱 모듈(320)에서 제공될 수 있다. If desired for some embodiments, the manner in which the LDPC decoding processing is performed (e.g., a portion, a module or functional block being moved from the check engine to the bit engine) is determined from any communication system from the device 300. 340, that is, a communication system that uses LDPC coding using a desired LDPC code and is operative to perform it. For example, information corresponding to the currently used LDPC coding (eg, the parity check matrix of the LDPC code) may also be any of the various communication devices implemented within the communication system 340 in the processing module 320. 330 may be provided as well. In addition, the manner in which such LDPC decoding is to be performed in any one 330 of any of various communication devices implemented in the communication system 340 may also be provided in the processing module 320.

만약 원한다면, 상기 장치(320)는 여러 가지 요구 내지 요청들에 따라 LDPC 디코딩을 수행하는 다수의 수단을 생성하도록 설계될 수 있다. 몇몇 실시예에서는, 상기 프로세싱 모듈(320)은 서로 다른 통신 장치들 내지 통신 시스템들에 대해 서로 다른 정보(예를 들어, 서로 다른 LDPC 코드들 등에 상응하는 것과 같은)를 선택적으로 제공할 수 있다. 그러한 방식으로, 서로 다른 통신 장치들 사이의 서로 다른 통신 링크들은 서로 다른 LDPC 코드들, 내지는 LDPC 디코딩을 수행하는 수단을 이용할 수 있다. 분명히, 상기 프로세싱 모듈(320)은 또한 본 발명의 범위와 사상으로부터 벗어나지 않고서 서로 다른 통신 장치들 내지 그뿐 아니라 서로 다른 통신 시스템들의 각각에 대해 똑같은 정보를 제공할 수도 있다.If desired, the apparatus 320 may be designed to generate multiple means for performing LDPC decoding according to various needs or requests. In some embodiments, the processing module 320 may optionally provide different information (eg, corresponding to different LDPC codes, etc.) for different communication devices or communication systems. In that way, different communication links between different communication devices may use different LDPC codes, or means for performing LDPC decoding. Obviously, the processing module 320 may also provide the same information for each of the different communication devices as well as different communication systems without departing from the scope and spirit of the present invention.

도 4는 LDPC 디코딩 프로세싱을 수행하도록 동작할 수 있는 장치의 다른 실 시예(400)를 예시한 것이다. 상기 장치(400)는 프로세싱 모듈(420)과 메모리(410)를 포함한다. 상기 메모리(410)는 프로세싱 모듈과 결합되어 있고, 상기 메모리는 상기 프로세싱 모듈(420)이 다양한 기능들을 수행할 수 있도록 만드는 동작 명령어들을 저장하도록 동작할 수 있다. 상기 프로세싱 모듈(420)은 (상기 메모리(410)에 의해 서비스를 받아) LDPC 디코딩 프로세싱이 본 출원에 설명된 여타 실시예 또는 그에 등가인 구성에 따라 수행되도록 하는 그러한 방법을 수행하거나 내지는 그러한 방법을 통제하도록 동작할 수 있다.4 illustrates another embodiment 400 of an apparatus that may be operable to perform LDPC decoding processing. The apparatus 400 includes a processing module 420 and a memory 410. The memory 410 is coupled to a processing module, and the memory may be operable to store operational instructions that enable the processing module 420 to perform various functions. The processing module 420 performs or otherwise implements such a method that (as serviced by the memory 410) LDPC decoding processing is performed in accordance with other embodiments or equivalent configurations described herein. Can operate to control.

상기 프로세싱 모듈(420)은 공유되는 처리 장치나, 개별적인 처리 장치들, 또는 복수의 처리 장치들을 이용하여 구현될 수 있다. 이러한 처리 장치는 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 처리 장치, 마이크로컴퓨터, 중앙 처리 장치, FPGA, PLD, 상태 머신, 논리 회로, 아날로그 회로, 디지털 회로, 내지 그 밖에 동작을 지시하는 명령어들에 기초하여 신호들(아날로그 신호 또는 디지털 신호)을 조작할 수 있는 여하한 장치들이 될 수 있다. 그러한 메모리(410)는 단일한 메모리 장치 또는 복수의 메모리 장치들일 수 있다. 이러한 메모리 장치는 읽기 전용 메모리, 임의 접근 메모리, 휘발성 메모리, 비휘발성 메모리, 정적 메모리, 동적 메모리, 플래쉬 메모리 및 기타 디지털 정보를 저장할 수 있는 여하한 장치가 될 수 있다. 상기 프로세싱 모듈(420)이 그 기능들 중 하나 또는 그 이상의 기능들을 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로를 통해 구현한 경우에, 상기 상응하는 동작에 관한 명령어들을 저장하는 메모리는 상기의 상태 머신, 아날로그 회로, 디지털 회로 내지 논리 회로들로 구성된 회로부와 함께 칩에 내장될 수 있다는 점을 주목한다.The processing module 420 may be implemented using shared processing units, individual processing units, or a plurality of processing units. Such processing devices may be based on microprocessors, microcontrollers, digital signal processing devices, microcomputers, central processing units, FPGAs, PLDs, state machines, logic circuits, analog circuits, digital circuits, or other instructions directing operation. It may be any device capable of manipulating signals (analog signal or digital signal). Such memory 410 may be a single memory device or a plurality of memory devices. Such a memory device may be any device capable of storing read-only memory, random access memory, volatile memory, nonvolatile memory, static memory, dynamic memory, flash memory and other digital information. When the processing module 420 implements one or more of its functions through a state machine, analog circuitry, digital circuitry or logic circuitry, the memory storing instructions for the corresponding operation is stored in the above state. Note that it can be embedded in a chip with circuitry consisting of machines, analog circuits, digital circuits or logic circuits.

만약 일부 실시예들의 경우에 바람직하다면, 상기 장치(400)는 다양한 통신 장치들(430) 중 여하한 것 또는 그러한 어느 통신 장치(430)의 어느 부분 또는 일부라도 될 수 있다. 상기 프로세싱 모듈(420) 내지 상기 메모리(410)를 포함하는 여하한 그러한 통신 장치는 또한 다양한 통신 시스템들 중 여하한 시스템 내에 구현될 수 있다. 본 출원에 제시된 바와 같은 LDPC 디코딩 프로세싱 및 그의 등가인 구성에 따르는 LDPC 디코딩 프로세싱의 다양한 실시예들은 다양한 형태의 통신 시스템들 내지 통신 장치들에 적용될 수 있다는 점이 지적되어야 한다.If desired for some embodiments, the device 400 may be any of various communication devices 430 or any portion or part of any such communication device 430. Any such communication device including the processing module 420 to the memory 410 may also be implemented in any of a variety of communication systems. It should be pointed out that various embodiments of LDPC decoding processing as presented herein and their equivalent configuration may be applied to various types of communication systems or communication devices.

도 5는 LDPC(저밀도 패리티 체크) 코드의 이분형(bipartite) 그래프(500)의 일 실시예를 예시한 것이다. 본 기술 분야에서 LDPC 이분형 그래프는 종종 "태너(Tanner)" 그래프라고도 불릴 수 있다. LDPC 코드는 이진 패리티 체크 행렬을 가지는, 그럼으로써 그 행렬의 거의 전부의 요소들이 영의 값들을 가지는(예를 들어, 상기 이진 패리티 체크 행렬이 듬성듬성한), 그러한 코드라고 볼 수 있다. 예를 들어, H = (hi ,j)M×N는 블록 길이 N을 가지는 LDPC 코드의 패리티 체크 행렬이라고 볼 수 있다.5 illustrates one embodiment of a bipartite graph 500 of LDPC (Low Density Parity Check) code. LDPC binary graphs in the art can often be referred to as "Tanner" graphs. An LDPC code may be considered such a code having a binary parity check matrix, whereby almost all elements of the matrix have zero values (eg, sparse of the binary parity check matrix). For example, H = (h i , j ) M × N may be regarded as a parity check matrix of an LDPC code having a block length N.

LDPC 코드들은 선형 블록 코드이며, 따라서 모든 코드워드들 x∈C의 집합이 패리티 체크 행렬 H의 영 공간(null space)에 미친다(span).LDPC codes are linear block codes, so the set of all codewords x∈C spans the null space of the parity check matrix H.

HxT = 0, ∀x ∈ CHx T = 0, ∀x ∈ C

LDPC 코드들에 관하여, H는 mxn 차원의 저밀도(sparse) 이진 행렬이다. H의 각 행(row)은 한 차례의 패리티 체크(parity check)에 상응하며, 한 집합 요소 hij는 패리티 체크 i에 참여하는 데이터 심볼 j를 의미한다. H의 각 열(column)은 한 코드워드 심볼에 상응한다. For LDPC codes, H is a sparse binary matrix of mxn dimension. Each row of H corresponds to one parity check, and one set element h ij denotes a data symbol j participating in parity check i. Each column of H corresponds to one codeword symbol.

각 코드워드 x에 대해, n 개의 심볼들이 있고 그 중에 m은 패리티 심볼들이다. 다라서, 코드율 r은 다음과 같이 주어진다.For each codeword x, there are n symbols, where m are parity symbols. Therefore, the code rate r is given by

r = (n-m) / rr = (n-m) / r

행 가중치 및 열 가중치는 각각 주어진 H의 행 또는 열 내의 집합 요소들의 개수로서 정의된다. H의 집합 요소들은 상기 코드의 성능 요구 조건들을 만족시킬 수 있도록 선택된다. 패리티 체크 행렬 H의 i 번째 열 중에 1의 개수는 dυ(i)라고 표시될 수 있으며, 이 패리티 체크 행렬 H의 j 번째 행 중에 있는 1의 개수는 dc(j)라고 표시될 수 있다. 만약 모든 i에 대해 dυ(i) = dυ이고, 또한 모든 j에 대해 dc(j) = dc라면, 상기 LDPC 코드는 (dυ, dc) 정규(regular) LDPC 코드라고 불리며, 그렇지 않은 경우에는 상기 LDPC 코드는 비정규(irregular) LDPC 코드라고 불린다.Row weights and column weights are defined as the number of aggregate elements within a given row or column of H, respectively. The aggregation elements of H are chosen to meet the performance requirements of the code. The number of 1s in the i-th column of the parity check matrix H may be expressed as d υ (i), and the number of 1s in the j-th row of the parity check matrix H may be represented as d c (j). If d υ (i) = d υ for all i and d c (j) = d c for all j, then the LDPC code is called (d υ , d c ) regular LDPC code, Otherwise, the LDPC code is called an irregular LDPC code.

LDPC 코드들은 아래에 참조된 [1]에서(그리고 마찬가지로 아래에서 참조된 [2] 내에서) R. Gallager과, 역시 아래에서 참조되는 [3]에서 M. Luby 등에 의해 소개되었다.LDPC codes were introduced by R. Gallager in [1] referenced below (and similarly in [2] referenced below), and by M. Luby et al. In [3], also referenced below.

[1] R. Gallager, Low-Density Party-Check Codes, Cambridge, MA: MIT Press, 1963.[1] R. Gallager, Low-Density Party-Check Codes, Cambridge, MA: MIT Press, 1963.

[2] R. G. Gallager, "Low density parity check codes", IRE Trans, Info. Theory, vol. IT-8, 1962년 1월, pp. 21-28.[2] R. G. Gallager, "Low density parity check codes", IRE Trans, Info. Theory, vol. IT-8, January 1962, pp. 21-28.

[3] M.G. Luby, M. Mitzenmacher, M.A. Shokrollahi, D.A. Spielman 및 V. Stemann, "Practical Loss-Resilient Codes", Proc. 29회 Thery of Computing 심포지움, 1997년, pp. 150-159.[3] M.G. Luby, M. Mitzenmacher, M.A. Shokrollahi, D.A. Spielman and V. Stemann, "Practical Loss-Resilient Codes", Proc. 29th Thery of Computing Symposium, 1997, pp. 150-159.

정규 LDPC 코드는 이분형 그래프(500)로서 표현될 수 있는데, 그 패리티 체크 행렬들을, 코드 비트의 변수를 나타내는 좌측 노드들(또는 다른 표현으로는 LDPC 코딩 신호들을 디코딩하는 비트 디코딩 방식에서는 "변수 노드"(또는 "비트 노드들")(510))과, 체크 등식들(check equations)을 나타내는 우측 노드들(또는 다른 표현으로는 "체크 노드들"(520))를 가지고 표현한 것이다. H로 정의되는 LDPC 코드의 상기 이분형 그래프(500)(또는 태너 그래프(500)이라고 종종 불림)는 N 개의 변수 노드들(예를 들어 N 비트 노드들)과 M 개의 체크 노드들로 정의될 수 있다. N 변수 노드들(510)의 각 변수 노드는 정확히 dυ(i) 에지들(edges)을 가지며, 그러한 에지(예시적인 에지 하나가 참조 번호 530를 이용하여 표시되어 있음)가 비트 노드 vi(512)를 (M 개 체크 노드들 중에서) 하나 또는 다수의 체크 노드들에 연결한다. 상기 에지(530)는 비트 노드 vi(512)에서부터 체크 노드 cj(522)까지 연결하는 것으로 특히 나타나 있다. dυ 에지들의 이러한 개수(dυ(514)로 표현되어 있 음)는 변수 노드 i의 도수(degree)라고 할 수 있다. 이러한 관계와 유사하게, M 체크 노드들(520)의 각 체크 노드는 정확히 dc(j) 에지들을 가지며, 그러한 에지(dc(524)로 표시되어 있음)가 이 노드와 하나 또는 다수의 변수 노드들(또는 비트 노드들)(510)에 연결한다. dc 에지들의 이러한 개수는 체크 노드 j의 도수라고 할 수 있다. The regular LDPC code may be represented as a binary graph 500, which in the bit decoding scheme decodes the parity check matrices to the left nodes representing the variable of the code bit (or, in other words, the LDPC coded signals) to "variable node.""(Or" bit nodes ") 510) and the right nodes (or in other words" check nodes "520) representing the check equations. The binary graph 500 (or sometimes called the Tanner graph 500) of the LDPC code, defined as H, may be defined as N variable nodes (e.g., N bit nodes) and M check nodes. have. Each variable node of N variable nodes 510 has exactly d υ (i) edges, and such an edge (one exemplary edge is indicated using reference numeral 530) is represented by bit node v i ( 512 connects to one or multiple check nodes (among M check nodes). The edge 530 is particularly shown to connect from bit node v i 512 to check node c j 522. This number of d υ edges (represented by d υ 514) can be referred to as the degree of the variable node i. Similar to this relationship, each check node of M check nodes 520 has exactly d c (j) edges, and such an edge (denoted by d c 524) is one or more variables with this node. Nodes (or bit nodes) 510. This number of d c edges may be referred to as the frequency of the check node j.

변수 노드 vi(또는 비트 노드 bi)(512)와 체크 노드 cj(522) 사이의 에지(530)는 e=(i,j)에 의해 정의될 수 있다. 그러나, 반면에, 에지 e=(i,j)가 주어진 경우에, 이 에지의 노드들은 다른 방식으로 e=(v(e),c(e))로(또는 e=(b(e),c(e))로) 표현될 수 있다. 달리 표현하면, 상기 그래프의 에지들은 H의 집합 요소들에 상응하는데, 여기서 집합 요소 hji는 한 에지가 한 비트 노드(예를 들어 변수 노드) i를 패리티 체크 노드 j로 연결한다는 것을 의미한다.The edge 530 between variable node v i (or bit node b i ) 512 and check node c j 522 may be defined by e = (i, j). However, on the other hand, given the edge e = (i, j), the nodes at this edge are otherwise e = (v (e), c (e)) (or e = (b (e), c (e))). In other words, the edges of the graph correspond to the aggregate elements of H, where the aggregate element h ji means that one edge connects one bit node (eg variable node) i to parity check node j.

어떤 변수 노드 vi(또는 비트 노드 bi)가 주어졌을 경우에, 상기 노드 vi(또는 비트 노드 bi)로부터 방출되는 에지들의 집합은 Ev(i)={e|v(e)=i}로써(또는 Eb(i)={e|b(e)=i}로써) 정의할 수 있을 것이다. 이 경우에, 이들 에지들은 비트 에지들(bit edges)이라 불리며, 이러한 비트 에지들에 상응하는 메시지들(messages)은 비트 에지 메시지들이라고 불린다.If a variable node v i (or bit node b i) is given, the node v i the set of edges emitting from (or bit node b i) is E v (i) = {e | v (e) = i} (or E b (i) = {e | b (e) = i}). In this case, these edges are called bit edges, and messages corresponding to these bit edges are called bit edge messages.

어떤 체크 노드 cj가 주어졌을 경우에, 상기 노드 cj로부터 방출되는 에지들 의 집합은 Ec(j)={e|c(e)=j}로써 정의할 수 있을 것이다. 이 경우에, 이들 에지들은 체크 에지들(check edges)이라 불리며, 이러한 체크 에지들에 상응하는 메시지들은 체크 에지 메시지들이라고 불린다.Given a check node c j , the set of edges emitted from node c j may be defined as E c (j) = {e | c (e) = j}. In this case, these edges are called check edges and the messages corresponding to these check edges are called check edge messages.

일반적으로 말해서, 어떤 이분형 그래프로서 표현될 수 있는 여하한 코드들은 그래프 코드(graph code)로써 특성화될 수 있다. 또한, 어떤 비정규 LDPC 코드도 마찬가지로 이분형 그래프를 이용하여 설명될 수 있다는 점이 주지되어야 한다. 그렇지만, 어떤 비정규 LDPC 코드 내의 각각의 노드들의 집합의 도수는 어떤 분포에 따라 정해질 수 있다. 따라서, 어떤 비정규 LDPC 코드에서 두 개의 서로 다른 변수 노드들

Figure 112008056592010-pat00001
Figure 112008056592010-pat00002
에 대해,
Figure 112008056592010-pat00003
Figure 112008056592010-pat00004
과 같지 않을 수 있다. 이러한 관계는 또한 어느 두 체크 노드들에 대해서도 유지된다. 비정규 LDPC 코드들의 개념은 원래 위에서 언급한 참고 문헌[3]에서 M. Luby 외 다수에 의해 도입되었다.Generally speaking, any code that can be represented as a binary graph can be characterized as a graph code. It should also be noted that any irregular LDPC code can likewise be described using a binary graph. However, the frequency of each set of nodes in a particular LDPC code may be determined according to some distribution. Thus, two different variable nodes in some denormalized LDPC code
Figure 112008056592010-pat00001
And
Figure 112008056592010-pat00002
About,
Figure 112008056592010-pat00003
silver
Figure 112008056592010-pat00004
May not be the same as This relationship is also maintained for either two check nodes. The concept of non-normal LDPC codes was originally introduced by M. Luby et al. In the above mentioned references [3].

일반적으로, LDPC 코드의 그래프를 이용하여, 위에서 언급한 M. Luby 외 다수의 참고 문헌[3] 내에서, 그리고 또한 다음의 참고 문헌[4]에서 설명된 바와 같이, LDPC 코드의 파라미터들은 분포의 도수(degree of distribution)에 의해 정의될 수 있다. In general, using a graph of LDPC codes, within the above mentioned M. Luby et al. Reference [3], and also as described in the following reference [4], the parameters of the LDPC code are determined by the distribution of the distribution. It can be defined by the degree of distribution.

[4] T.J. Richardson 및 R. L. Urbanke, "The capacity of low-density parity-check code under message-passing decoding," IEEE Trans . Inform . Theory, Vol. 47, No.2, Feb.2001, pp. 599-618.[4] TJ Richardson and RL Urbanke, "The capacity of low-density parity-check code under message-passing decoding," IEEE Trans . Inform . Theory , Vol. 47, No. 2, Feb. 2001, pp. 599-618.

이러한 분포는 다음과 같이 설명될 수 있다.This distribution can be explained as follows.

Figure 112008056592010-pat00005
가 도수 i를 갖는 변수 노드들로부터 발산하는 에지들 중 일부를 나타내고,
Figure 112008056592010-pat00006
는 도수 i를 갖는 체크 노드들로부터 발산하는 에지들 중 일부를 나타낸다고 하자. 그러다면, 도수 분포 쌍(degree distribution pair)
Figure 112008056592010-pat00007
은 다음과 같이 정의된다.
Figure 112008056592010-pat00005
Represents some of the edges emanating from the variable nodes with frequency i,
Figure 112008056592010-pat00006
Assume some of the edges emanating from the check nodes with frequency i. If so, the degree distribution pair
Figure 112008056592010-pat00007
Is defined as

Figure 112008056592010-pat00008
Figure 112008056592010-pat00009
.
Figure 112008056592010-pat00008
And
Figure 112008056592010-pat00009
.

이때,

Figure 112008056592010-pat00010
Figure 112008056592010-pat00011
은 각각 변수 노드들 및 체크 노드들의 최대 도수들을 의미한다.At this time,
Figure 112008056592010-pat00010
And
Figure 112008056592010-pat00011
Denotes the maximum frequencies of the variable nodes and the check nodes, respectively.

본 출원에 설명된 예시적인 실시예들의 다수가 정규 LDPC 코드의 예들을 이용하고 있지만, 본 발명의 일정 측면들 및 실시예들은 또한 정규 LDPC 코드들과 비정규 LDPC 코드들 양자 모두를 수용하여 동작할 수 있음을 주목할 필요가 있다.Although many of the example embodiments described in this application utilize examples of regular LDPC codes, certain aspects and embodiments of the present invention may also operate by accepting both regular LDPC codes and non-normal LDPC codes. It is worth noting that.

또한 본 출원에 설명된 실시예들 중 다수가 "비트 노드" 및 "비트 에지 메시지들", 또는 이들의 등가 용어를 포함하는 용어 체계를 이용한다는 점을 주목한다. 종종, LDPC 디코딩 기술 분야에서는, "비트 노드" 및 "비트 에지 메시지"는 "변수 노드" 및 "변수 에지 메시지들"로 달리 표현되기 도 하며, 그러한 점에서, 비트 값들(또는 변수 값들)은 추정되고자 시도되는 대상을 가리킨다. 본 발명의 특정 측면들에 따르면 어느 용어 체계라도 이용될 수 있다.It is also noted that many of the embodiments described herein utilize a term system that includes "bit node" and "bit edge messages", or equivalent terms thereof. Often in the art of LDPC decoding, "bit node" and "bit edge message" are also represented differently as "variable node" and "variable edge messages", in which point the bit values (or variable values) are estimated Pointer to the target being attempted to be. In accordance with certain aspects of the present invention, any term system may be used.

도 6은 LDPC 디코딩 기능(600)의 실시예를 예시한 것이다. m 비트 신호 시퀀 스를 가진 LDPC 코딩 신호의 디코딩을 수행하는 데에, 이 도면에 있는 기능이 이용될 수 있다. 대체적으로 말하면, 참조 번호 601에 의해 표현된 바와 같이, 연속 시간 신호가 통신 채널로부터 수신된다. 이 통신 채널은 유선 통신 채널, 무선 통신 채널, 광섬유 통신 채널, HDD의 읽기 채널 또는 그 밖에 LDPC 코드를 이용하여 코딩되어 있는 연속 시간 신호를 운반할 수 있는 종류의 통신 채널을 포함한 여하한 형태의 채널일 수 있으나, 여기에 한정되는 것은 아니다. 6 illustrates an embodiment of LDPC decoding function 600. The functionality in this figure can be used to perform decoding of an LDPC coded signal with an m bit signal sequence. In general terms, as represented by reference numeral 601, a continuous time signal is received from the communication channel. This communication channel may be any type of channel including a wired communication channel, a wireless communication channel, a fiber optic communication channel, a read channel of an HDD, or another type of communication channel capable of carrying a continuous time signal coded using an LDPC code. It may be, but is not limited thereto.

아날로그 프론트 엔드(AFE)(610)는 상기 연속 시간 신호에 관하여 여타 최초의 프로세싱을 수행하고(예를 들어, 여하한 종류의 하나 또는 다수의 필터링(아날로그 필터링 내지 디지털 필터링), 이득 조절 등을 수행함으로써), 디지털 샘플링을 수행하여, 이산 시간 신호(611)를 출력한다. 이러한 이산 시간 신호(611)는 다른 표현으로는 디지털 신호, 기저대역 신호 내지 그 밖에 본 기술 분야에서 알려진 적절한 용어 체계로 불릴 수 있다. 종종, 상기 이산 시간 신호(611)는 해당 신호의 I, Q(In-phase, Quadrature) 값들로 분할된다.Analog Front End (AFE) 610 performs other initial processing on the continuous time signal (e.g., performs one or more filtering of any kind (analog filtering to digital filtering), gain adjustment, and the like. Digital sampling is performed to output the discrete time signal 611. This discrete time signal 611 may be referred to in other words as a digital signal, a baseband signal or other appropriate terminology known in the art. Often, the discrete time signal 611 is divided into In-phase, Quadrature (I, Q) values of the signal.

메트릭 생성기(620)는 상기 이산 시간 신호(611)(예를 들어, 이는 상응하는 I, Q 값들을 가질 수 있다)를 수신하고, 상응하는 비트 메트릭 값들 내지는 상기 이산 시간 신호(611) 내에 있는 수신된 값들에 각각 상응하는 로그 유사도 비율(LLR:log likelihood ratios)을 계산하도록 동작할 수 있다. 몇몇 실시예에서는, 이러한 비트 메트릭/LLR 심볼 메트릭들(621)의 계산은 두 단계의 절차로서, 상기 메트릭 생성기(620)가 먼저 상기 이산 시간 신호(611)의 심볼들에 상응하는 심볼 메트릭들을 계산하도록 동작하고, 그런 후에 생기 메트릭 생성기가 두 번째로 상기 심볼 메트릭들을 이용하여 그러한 비트 메트릭들을 비트 메트릭/LLR들(621)로 분해하도록 동작할 수 있다. 이러한 비트 메트릭들/LLR들(621)은 이어서 비트 엔진(630)에 의해 비트 에지 메시지들(참조 번호 629로써 표시됨)을 초기화하는 데에 이용되고, 이 비트 에지 메시지들은 LDPC 코딩 신호에 관한 반복 디코딩 프로세싱(635)을 수행(예를 들어, 비트 엔진(630) 및 체크 엔진(640)에 의해 수행되는 것과 같은)할 때에 이용된다.Metric generator 620 receives the discrete time signal 611 (eg, it may have corresponding I, Q values), and receives within corresponding bit metric values or the discrete time signal 611. And calculate log likelihood ratios (LLRs) corresponding to the calculated values. In some embodiments, the calculation of these bit metric / LLR symbol metrics 621 is a two step procedure wherein the metric generator 620 first calculates the symbol metrics corresponding to the symbols of the discrete time signal 611. And then the animation metric generator may secondly operate to decompose such bit metrics into bit metrics / LLRs 621 using the symbol metrics. These bit metrics / LLRs 621 are then used by the bit engine 630 to initialize bit edge messages (denoted by reference number 629), which bit edge messages are repeated decoding on the LDPC coded signal. It is used when performing processing 635 (eg, as performed by bit engine 630 and check engine 640).

각각의 변수 노드 i에 대해, 상응하는 수신 심볼

Figure 112008056592010-pat00012
의 로그 유사도 비(LLR)
Figure 112008056592010-pat00013
의 값으로서 비트 에지 메시지들을 초기화하는 것은 다음과 같이 정의된다.For each variable node i, the corresponding received symbol
Figure 112008056592010-pat00012
Log similarity ratio (LLR)
Figure 112008056592010-pat00013
Initializing bit edge messages as the value of is defined as follows.

Figure 112008056592010-pat00014
Figure 112008056592010-pat00014

또한, 비트 노드들에서, 비트 엔진(630)은 가장 최근에 업데이트된 비트 엔진 메시지들을 이용하여 상기 비트들의 상응하는 소프트 정보(soft information)(예를 들면 소프트 정보(632)로 표시되는 것)를 계산하도록 동작할 수 있다. 그러나, 다중 디코딩 반복들이 수행되는 것이 통상적이며, 따라서 초기화된 비트 에지 메시지들이 체크 엔진(640)으로 전달되고, 여기서 첫 디코딩 반복 연산 동안에 체크 엔진(640)이 체크 에지 메시지들을 업데이트하는 데에 상기 초기화된 비트 에지 메시지들을 활용하도록 동작할 수 있다.Also at the bit nodes, the bit engine 630 uses the most recently updated bit engine messages to obtain the corresponding soft information of the bits (e.g., represented by soft information 632). Operate to calculate. However, it is common for multiple decoding iterations to be performed, so that initialized bit edge messages are passed to the check engine 640 where the initialization is performed by the check engine 640 updating the check edge messages during the first decoding iteration operation. May operate to utilize the specified bit edge messages.

각각의 체크 노드에서, LDPC 디코딩 프로세싱은 착신 메시지들의 부호(sign) 에 관하여 패리티 체크 결과(XOR)를 형성한다. 이러한 동작은 상응하는 인가 메시지의 부호를 패리티 체크 결과로 XOR한 것로서 각각의 발신 메시지의 부호를 정함으로써 수행된다.At each check node, LDPC decoding processing forms a parity check result (XOR) with respect to the sign of incoming messages. This operation is performed by determining the sign of each outgoing message by XORing the sign of the corresponding authorization message as a result of the parity check.

디코딩 프로세싱은 이어서 다음의 수학식에 따라 체크 노드 j로부터 비트(예를 들면, 변수) 노드 i로의 발신 메시지(outgoing message) 신뢰도(reliablity)를 계산한다.The decoding processing then calculates the outgoing message reliability from the check node j to the bit (eg variable) node i according to the following equation.

Figure 112008056592010-pat00015
Figure 112008056592010-pat00015

몇몇 바람직한 실시예에서, 이 계산은 다음과 같이 로그 영역에서 수행되면 곱셈을 덧셈으로 변환할 수 있다.In some preferred embodiments, this calculation may convert the multiplication to addition if performed in the logarithmic region as follows.

Figure 112008056592010-pat00016
Figure 112008056592010-pat00016

이후에, 비트 엔진(630)은 체크 엔진(640)으로부터 업데이트된 에지 메시지들(예를 들면, 체크 에지 메시지들(641)로 표현된 것)을 수신하고, 이들을 이용하여 비트 에지 메시지들을 업데이트하도록 동작할 수 있다. 또한, 비트 엔진(630)은 LDPC 디코딩에 따라 비트 에지 메시지들의 업데이트를 수행할 때에, 상기 메트릭 생성기(620)로부터 수신되는 비트 메트릭들/LLR들(621)을 이용하도록 동작할 수 있 다. 또한, 이러한 업데이트된 체크 에지 메시지들(641)은 이어서 비트 노드들로(예를 들면, 비트 엔진(630)으로) 다시 전달되고, 여기서 상기 비트들의 소프트 정보(632)가 비트 메트릭들/LLR들(621)과, 체크 에지 메시지들의 현재 반복 값들을 이용하여 계산된다. 각각의 비트(예를 들면, 변수) 노드에서, 소프트 정보의 계산은 체크 노드로부터의 착신 메시지들(예를 들면, 체크 에지 메시지들(641))과 수신된 심볼의 LLR의 합을 형성하는 것을 포함한다. 디코딩된 비트

Figure 112008056592010-pat00017
는 합산 결과의 부호에 따라 주어진다. 다음 차례의 디코더 반복을 위한 발신 메시지 각각은 상기 합산 결과로부터 상기 상응하는 착신 메시지를 차감함으로써 계산된다. 반복 디코딩 프로세싱(635)을 계속할 수 있도록, 이러한 비트 에지 메시지들(631)은, 업데이트가 되고 나면, 다시 체크 엔진(640)으로 전달된다.The bit engine 630 then receives the updated edge messages (e.g., represented by the check edge messages 641) from the check engine 640 and uses them to update the bit edge messages. It can work. In addition, the bit engine 630 may operate to use the bit metrics / LLRs 621 received from the metric generator 620 when performing update of bit edge messages in accordance with LDPC decoding. In addition, these updated check edge messages 641 are then passed back to the bit nodes (eg, to the bit engine 630) where the soft information 632 of the bits is bit metrics / LLRs. 621 and the current repetition values of the check edge messages. At each bit (e.g., variable) node, the calculation of the soft information is to form the sum of the incoming messages (e.g., check edge messages 641) from the check node and the LLR of the received symbol. Include. Decoded bits
Figure 112008056592010-pat00017
Is given according to the sign of the sum result. Each outgoing message for the next decoder iteration is computed by subtracting the corresponding incoming message from the summation result. To continue the iterative decoding processing 635, these bit edge messages 631 are passed back to the check engine 640 once updated.

또 다른 디코딩 반복이 수행될 수 있는데, 체크 노드들에서, 체크 엔진(640)은 비트 노드들로부터(예를 들어 비트 엔진(630)으로부터) 전달되는 업데이트된 비트 에지 메시지들(631)을 수신하고, 이에 따라 체크 에지 메시지들을 업데이트하도록 동작할 수 있다. 업데이트된 체크 에지 메시지들(641)은 이어서 비트 노드들(예를 들면 비트 엔진(630))로 다시 전달되고, 여기서 비트들의 소프트 정보(632)는 비트 메트릭들/LLR들(621)과, 체크 에지 메시지들의 현재 반복 값들을 사용하여 계산된다. 그 이후에, 비트들에 관하여 방금 계산된 이러한 소프트 정보(632)를 이용하여, 비트 엔진(630)은 다시 상기 체크 에지 메시지들의 이전 값들(바로 이전 반복 연산으로부터 얻은)을 이용하여 비트 에지 메시지들을 업데이트하도록 동작할 수 있다. 반복 프로세싱(635)은 현재 디코딩되고 있는 신호를 인코딩하는 데에 적 용되었던 LDPC 코드 이분형 그래프에 따라 비트 노드들과 체크 노드들 사이에서 계속된다.Another decoding iteration may be performed, at the check nodes, the check engine 640 receives updated bit edge messages 631 from the bit nodes (eg, from the bit engine 630) and Thus, it may be operable to update the check edge messages accordingly. The updated check edge messages 641 are then passed back to the bit nodes (eg, the bit engine 630), where the soft information 632 of the bits is checked with the bit metrics / LLRs 621, and the check. It is calculated using the current repetition values of the edge messages. Subsequently, using this soft information 632 just computed with respect to the bits, the bit engine 630 again uses the previous values of the check edge messages (obtained directly from the previous iteration operation) to retrieve the bit edge messages. May be operative to update. Iterative processing 635 continues between the bit nodes and the check nodes in accordance with the LDPC code bipartite graph that was applied to encode the signal that is currently being decoded.

비트 노드 엔진(630)과 체크 노드 엔진(640)에 의해 수행된 이러한 반복 디코딩 프로세싱 단계들은, 참조 번호 661에 의해 표시된 것과 같이 소정의 정지 기준이 부합하게 될 때(예를 들면, 미리 정해진 또는 적응적으로 결정된 횟수의 반복 연산들이 수행된 후라든가, LDPC 코드의 모든 신드롬들(syndromes)이 모두 0(예를 들면 모든 패리티 체크들이 충족되는 경우)이 된 후라거나, 내지는 그 밖의 정지 기준이 만족된 경우)까지 반복된다. LDPC 디코딩이 정지될 수 있는 또 다른 가능한 방법은 LDPC 코드워드인

Figure 112008056592010-pat00018
의 현재 추정 값이 다음 관계식을 만족할 때이다. These iterative decoding processing steps performed by the bit node engine 630 and the check node engine 640 may occur when certain stop criteria are met (eg, predetermined or adaptive) as indicated by reference numeral 661. After a number of iterative operations are determined, all the syndromes in the LDPC code are all zeros (for example, if all parity checks are met), or other stop criteria are met. Is repeated). Another possible way in which LDPC decoding can be stopped is by LDPC codeword
Figure 112008056592010-pat00018
This is when the current estimated value of satisfies the following relation.

Figure 112008056592010-pat00019
Figure 112008056592010-pat00019

매 차례의 디코딩 반복 연산 동안에, 소프트 정보(632)가 비트 엔진(630) 내에서 생성될 수 있다. 이러한 실시예에서, 이러한 소프트 정보(632)는 하드 리미터(hard limiter, 650)에 제공될 수 있고, 여기서 경판정(hard decision)들이 수행될 수 있고, 그러한 하드 정보(예를 들면, 하드/최상 추정 값(651))는 LDPC 코드의 신드롬(syndrome)들이 모두 0과 같은지 여부를 판정하도록 동작할 수 있는 신드롬 계산기(syndrome calculator, 660)에 제공될 수 있다. 다시 말해서, 신드롬 계산기(660)는 LDPC 코드와 관련된 각각의 신드롬이 LDPC 코드워드의 현재 추정 값에 기초하여 0과 같은 값인지 여부를 판정하도록 동작할 수 있다.During each decoding iteration operation, soft information 632 may be generated in the bit engine 630. In this embodiment, this soft information 632 may be provided to a hard limiter 650 where hard decisions may be performed and such hard information (eg, hard / best). Estimation value 651 may be provided to a syndrome calculator 660 that is operable to determine whether the syndromes of the LDPC code are all equal to zero. In other words, the syndrome calculator 660 may be operable to determine whether each syndrome associated with the LDPC code is equal to zero based on the current estimated value of the LDPC codeword.

만약 신드롬들이 0이 아닐 경우에, 상기 반복 디코딩 프로세싱(635)은 각각 의 비트 엔진(630)과 체크 엔진(640) 사이에서 비트 에지 메시지들과 체크 에지 메시지들을 적절히 업데이트하고 전달함으로써 다시 계속될 수 있다. 이러한 반복 디코딩 프로세싱 단계들 전부가 수행된 후에, 비로서 상기 비트들의 하드/최상 추정 ㄱ값들(651)이 소프트 정보(632)에 기초하여 출력된다.If the syndromes are not zero, the iterative decoding processing 635 can be continued again by appropriately updating and delivering bit edge messages and check edge messages between each bit engine 630 and the check engine 640. have. After all of these iterative decoding processing steps are performed, the hard / best estimates a-values 651 of the bits as a ratio are output based on soft information 632.

또한, 양호한 디코딩 성능을 위해서는, 그래프 내에서 사이클의 길이들은 가능한 한 긴 것이 중요하다는 점이 주목된다. 짧은 사이클은, 예를 들어 길이가 4인 사이클과 같은 경우는, 어떤 LDPC 코딩 신호를 디코딩하는 메시지 전달 디코딩 방식의 성능을 저하시킬 가능성이 크다.It is also noted that for good decoding performance, it is important that the lengths of the cycles in the graph be as long as possible. Short cycles are likely to degrade the performance of a message transfer decoding scheme that decodes any LDPC coded signal, for example, a cycle of length four.

이러한 메시지 전달 디코딩 방식에 쓰인 수학 식들은 쌍곡선 및 로그 함수들(위의 수학식 5를 참조할 것)을 이용하는데, 하드웨어 구현 시에는 이러한 함수들은 대안적으로 룩업 테이블(LUT: look-up tables)로 근사화되거나, 또는 논리 회로들에 직접 실체화될 수 있다. 상기 산술적 계산은 오직 합산, 감산, 그리고 XOR 연산들만을 수반한다. 고정 소수점 구현에 필요한 비트들의 개수는 요구되는 코딩 성능, 디코더 수렴의 속도, 그리고 오류 바닥면(error floor)가 참고 문헌 [5] 내에 설명된 바대로 억제되어야 하는지 여부에 따라 결정된다.Equations used in this message-pass decoding scheme use hyperbolic and logarithmic functions (see Equation 5 above). In hardware implementations, these functions may alternatively be look-up tables (LUTs). Can be approximated or instantiated directly to logic circuits. The arithmetic calculation involves only summation, subtraction, and XOR operations. The number of bits required for a fixed point implementation depends on the required coding performance, the speed of decoder convergence, and whether the error floor should be suppressed as described in Ref. [5].

[5] Zhang, T., Wang, Z., Parhi, K., "On finite precision implementation of low density parity check codes decode", Proceedings of ISCAS, 시드니, 호주, 2001년 5월, pp. 202-205.[5] Zhang, T., Wang, Z., Parhi, K., "On finite precision implementation of low density parity check codes decode", Proceedings of ISCAS, Sydney, Australia, May 2001, pp. 202-205.

도 7은 다중 LDPC 행렬들의 0이 아닌 부분행렬들의 중첩에 관한 실시예(700)를 예시한 것이다. 이 실시예(700)는 두 개의 개별 LDPC 코드들에 상응하는 두 LDPC 행렬들(코드 1, LDPC 행렬(700) 및 코드 2, LDPC 행렬(720))을 묘사한다. 이들 특정한 LDPC 행렬들(710, 720)의 각각은 4 개의 부분행렬들을 포함하며, 이들 중 2 개는 0 부분행렬(null sub-matrix)이고 2 개는 0이 아닌 부분행렬(non-null sub-matrix)들이다. 이들 LDPC 행렬들(710, 720)의 각각은 만약 중첩될 경우에는 중첩된 LDPC 행렬(730)을 생성한다. 도면에서 볼 수 있는 바와 같이, 상기 0이 아닌 부분행렬(711) 및 0이 아닌 부분행렬(712)은 상기 중첩된 LDPC 행렬(730) 내의 동일한 장소를 차지한다. 이 예제에서, 상기 중첩된 LDPC 행렬(730) 내에서는 오직 하나의 0 부분행렬만 남게 된다.7 illustrates an embodiment 700 for superposition of nonzero submatrices of multiple LDPC matrices. This embodiment 700 depicts two LDPC matrices (code 1, LDPC matrix 700 and code 2, LDPC matrix 720) corresponding to two separate LDPC codes. Each of these particular LDPC matrices 710, 720 includes four submatrices, two of which are null sub-matrix and two are non-null sub-matrix. matrices. Each of these LDPC matrices 710, 720 generates an overlapped LDPC matrix 730 if overlapped. As can be seen in the figure, the nonzero submatrix 711 and the nonzero submatrix 712 occupy the same place in the nested LDPC matrix 730. In this example, only one zero submatrix remains within the nested LDPC matrix 730.

도 8은 도 7의 중첩 LDPC 행렬(730)의 0이 아닌 부분행렬들에 대한 프로세싱을 수용하기 위한 메모리 공간의 공급에 관한 실시예(800)를 예시한다. 상기 중첩 LDPC 행렬(730) 내에 표현된 각각의 LDPC 코드의 디코딩을 수행할 수 있는 독자적인 구조가 세 개의 메모리들(810, 메모리(811), 메모리(812) 및 메모리(813)를 포함하는 것으로 표시됨)을 이용하거나, 또는 두 개의 메모리들(820, 메모리(821) 및 메모리(822)를 포함하는 것으로 표시됨)을 이용하여 구현될 수 있다. 어느 실시예에서든, 상기 메모리들의 각각은 비트 에지 메시지들 및 체크 에지 메시지들의 업데이트를 위한 비트 노드 프로세싱 및 체크 노드 프로세싱을 수행할 수 있도록 비트 엔진 및 체크 엔진에 각각 선택적으로 연결될 수 있다.FIG. 8 illustrates an embodiment 800 of supplying memory space to accommodate processing for nonzero sub-matrices of the overlapping LDPC matrix 730 of FIG. 7. A unique structure capable of decoding each LDPC code represented in the overlapping LDPC matrix 730 is shown as including three memories 810, memory 811, memory 812, and memory 813. ), Or using two memories 820, indicated as including memory 821 and memory 822). In either embodiment, each of the memories may be selectively coupled to a bit engine and a check engine, respectively, to perform bit node processing and check node processing for updating bit edge messages and check edge messages.

도 9a 및 도 9b는 도 7의 중첩 LDPC 행렬(730)의 0이 아닌 부분행렬들의 프로세싱을 수용하기 위한 디코딩 구조들에 관한 실시예들(901, 902)을 예시한다. 9A and 9B illustrate embodiments 901 and 902 regarding decoding structures to accommodate processing of nonzero submatrices of the overlapping LDPC matrix 730 of FIG. 7.

도 9a를 참조하면, 이 실시예는 세 개의 메모리들(즉 메모리(811), 메모 리(812) 및 메모리(813))을 포함한다. 비트 메트릭/LLR들이 복수의 비트 엔진들(즉, 비트 엔진(931) 및 비트 엔진(932))에 제공된다. 스위칭 모듈(991)이 상기 비트 엔진들(931, 932) 및 상기 메모리들(811, 812, 813) 사이에 구현된다. 또 다른 스위칭 모듈(992)이 체크 엔진들(921, 922) 및 메모리들(811 내지 813) 사이에 구현된다. Referring to FIG. 9A, this embodiment includes three memories (ie, memory 811, memory 812, and memory 813). Bit metrics / LLRs are provided to a plurality of bit engines (ie, bit engine 931 and bit engine 932). A switching module 991 is implemented between the bit engines 931, 932 and the memories 811, 812, 813. Another switching module 992 is implemented between the check engines 921, 922 and memories 811-813.

상기 스위칭 모듈(991)(뿐만 아니라 본 출원에 설명되고 묘사된 다른 스위칭 모듈들)은 다수의 입력/출력을 가지는 하나의 멀티플렉서(MUX), 복수의 MUX들을 이용하여, 또는 그 밖에 상기 메모리들과 비트 엔진들, 그리고 이들 메모리들과 체크 엔진들 사이의 선택적인 연결을 가능하게 할 수 있는 여하한 개수의 원하는 수단을 이용하여 구현될 수 있다는 점을 주지한다.The switching module 991 (as well as other switching modules described and depicted in the present application) is one multiplexer (MUX) having multiple inputs / outputs, using a plurality of MUXs, or else with the memories. Note that the bit engines can be implemented using any number of desired means, which can enable selective connections between these memories and the check engines.

상기 LDPC 코드 1을 디코딩할 경우에, 하나의 메모리는 사용되지 않으며(예를 들어, 이 도면에서는 메모리(812)), 상기 메모리(811)가 부분행렬(711)을 프로세싱하는 데에 이용되고, 상기 메모리(813)는 부분행렬(712)을 프로세싱하는 데에 이용되며, 또는 그 반대로도 될 수 있다.When decoding the LDPC code 1, one memory is not used (e.g., memory 812 in this figure), and the memory 811 is used to process the submatrix 711, The memory 813 is used to process the submatrices 712, or vice versa.

이와 다르게, 단일한 스위칭 모듈이 이용될 수도 있다(예를 들어, 상기 스위칭 모듈(991)에 마찬가지로 결합된 체크 엔진들(921, 922)의 변형 형태로서 묘사될 수 있는 것과 같은 방식).Alternatively, a single switching module may be used (eg, such as may be depicted as a variant of the check engines 921, 922 likewise coupled to the switching module 991).

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(931, 932)은 소프트 정보를 생성하도록 동작하며, 코드 1에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있 는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 931, 932 are operative to generate soft information, the LDPC coded signal encoded according to code 1 Optimal estimates can be made from the soft information with respect to the bits that are encoded within.

도 9b를 참조하면, LDPC 코드 2의 디코딩 시에, 하나의 메모리(예를 들어 이 도면에서는 메모리(813))는 사용되지 않으며, 상기 메모리(811)는 부분행렬(721)을 프로세싱하는 데에 이용되고, 상기 메모리(812)는 부분행렬(722)을 프로세싱하는 데에 이용되며, 그 반대로 될 수도 있다.Referring to FIG. 9B, upon decoding LDPC code 2, one memory (e.g., memory 813 in this figure) is not used, and the memory 811 is used to process the submatrix 721. The memory 812 is used to process the submatrix 722 and vice versa.

다시 한번, 이와 다른 실시예들에서는, 단일한 스위칭 모듈이 이용될 수 있다(예를 들어, 상기 스위칭 모듈(991)에 마찬가지로 결합된 체크 엔진들(921, 922)의 변형 형태로서 묘사될 수 있는 것과 같은 방식).Once again, in other embodiments, a single switching module can be used (eg, depicted as a variant of the check engines 921, 922 likewise coupled to the switching module 991). Same way).

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(931, 932)은 소프트 정보를 생성하도록 동작하며, 코드 2에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 931, 932 operate to generate soft information, and the LDPC coded signal encoded according to code 2 Optimal estimates can be made from the soft information with respect to the bits encoded therein.

도 9a 및 도 9b의 이러한 실시예들은 세 개의 개별적인 메모리들이 이용되는 직선적인 중첩 방식을 보여주고 있다. 아래에서는, 동일한 2 개의 LDPC 코드들에 따라 LDPC 코딩 신호들이 오직 2 개의 메모리들만을 채택한 구조를 이용하여 디코딩될 수 있다.These embodiments of FIGS. 9A and 9B show a linear superposition scheme in which three separate memories are used. In the following, LDPC coded signals can be decoded using a structure employing only two memories according to the same two LDPC codes.

도 10은 도 7의 중첩 LDPC 행렬(730)의 0이 아닌 부분행렬들의 프로세싱을 수용하기 위한 디코딩 구조에 관한 실시예를 예시한다. 이 실시예는 어떻게 3 개의 메모리들을 사용하는 것과 대조적으로, 동일한 LDPC 행렬들(710, 720)의 디코딩을 수행하는 데에 오직 두 개의 메모리들만이 이용될 수 있는지를 보여준다. 도면에서 볼 수 있듯이, (LDPC 행렬(710)의) 부분행렬(712) 및 (LDPC 행렬(720)의) 부분행렬(722)은 상기 LDPC 행렬들(710, 720) 각각 내의 동일한 부분행렬 위치를 차지하지 않는다. 이러한 두 부분행렬 위치들은 상기 LDPC 행렬들(710, 720) 내에서 상호 배타적이다. 따라서, LDPC 코드 1에 따라 인코딩된 제1 LDPC 코딩 신호를 디코딩할 때에 부분행렬(712)의 디코딩 프로세싱을 실현하고, 또한 LDPC 코드 2에 따라 인코딩된 제1 LDPC 코딩 신호를 디코딩할 때에 부분행렬(722)의 디코딩 프로세싱을 실현하는 데에 단일한 메모리(예를 들어 병합된(merged) 메모리)가 이용될 수 있는 것이다. FIG. 10 illustrates an embodiment of a decoding structure for accommodating the processing of nonzero submatrices of the overlapping LDPC matrix 730 of FIG. 7. This embodiment shows how only two memories can be used to perform decoding of the same LDPC matrices 710, 720 as opposed to using three memories. As can be seen, the submatrix 712 (of LDPC matrix 710) and the submatrix 722 (of LDPC matrix 720) represent the same submatrix location within each of the LDPC matrices 710, 720. Does not occupy These two submatrix positions are mutually exclusive in the LDPC matrices 710 and 720. Accordingly, the decoding processing of the submatrices 712 is realized when decoding the first LDPC coded signal encoded according to LDPC code 1, and the submatrix (when decoding the first LDPC coded signal encoded according to LDPC code 2). A single memory (eg, merged memory) can be used to realize the decoding processing of 722.

메모리들을 병합하는 것에 관하여, 만약 어떤 특정 메모리가 아무런 LDPC 코드에 의해서도 이용되지 않는다면, 분명히 그 메모리는 제거될 수 있을 것이다. 따라서, 메모리들은, 결과적으로 얻은, 중첩된 LDPC 행렬로서 영이 아닌(0이 아닌) 요소들을 가지는 LDPC 행렬 내에 있는 이들 부분행렬들에 대해서만 공급될 필요가 있다. 또한, 각 메모리는 그 메모리가 활성화되는(예를 들어, 그 LPDC 코드를 디코딩하는 데에 이용되는) 적어도 하나의 0이 아닌 LDPC 코드를 가진다.Regarding merging memories, if any particular memory is not used by any LDPC code, then that memory can be removed. Thus, memories need only be supplied for those submatrices in the LDPC matrix that have nonzero (nonzero) elements as the resulting nested LDPC matrix. In addition, each memory has at least one non-zero LDPC code that is activated (eg, used to decode its LPDC code).

다시 한번, 위에서 언급되었던 바와 같이, 상호 배타적인 0이 아닌 부분행렬에 상응하는 메모리 요소들을 병합함으로써 좀더 큰 효율이 달성될 수 있다. 활성 코드들의 상호 배타적인 집합들을 가지는 메모리들의 이러한 그룹은 단일한 메모리로 병합될 수 있다. 활성 코드들의 상호 배타적인 집합들을 가지는 메모리가 더 많 이 있을수록(그리고 이는 적절하게 식별될 수 있다), 더 큰 수준의 병합이 달성될 수 있으며, 더 많은 하드웨어 절감(예를 들어, 이용되는 메모리 수가 감소)을 얻을 수 있다.Once again, as mentioned above, greater efficiency can be achieved by merging memory elements corresponding to mutually exclusive nonzero sub-matrices. This group of memories having mutually exclusive sets of active codes can be merged into a single memory. The more memory (and this can be appropriately identified) with mutually exclusive sets of active codes, the greater the level of merging can be achieved, and the more hardware savings (eg, memory used). Decrease in number).

도 10을 참조하면, 이 실시예는 오직 두 개의 메모리들(예를 들어, 메모리(1011)와 메모리(1012))를 포함한다. 비트 메트릭/LLR들이 복수의 비트 엔진들(즉, 비트 엔진(1031) 및 비트 엔진(1032))에 제공된다. 스위칭 모듈(1091)이 상기 비트 엔진들(1031, 1032) 및 상기 메모리들(1011, 1012) 사이에 구현된다. 또 다른 스위칭 모듈(1092)이 체크 엔진들(1021, 1022) 및 메모리들(1011, 1012) 사이에 구현된다.Referring to FIG. 10, this embodiment includes only two memories (eg, memory 1011 and memory 1012). Bit metrics / LLRs are provided to a plurality of bit engines (ie, bit engine 1031 and bit engine 1032). A switching module 1091 is implemented between the bit engines 1031 and 1032 and the memories 1011 and 1012. Another switching module 1092 is implemented between the check engines 1021 and 1022 and the memories 1011 and 1012.

다른 실시예들에서와 마찬가지로, 상기 스위칭 모듈(1091)(뿐만 아니라 본 출원에 설명되고 묘사된 다른 스위칭 모듈들)은 다수의 입력/출력을 가지는 하나의 멀티플렉서(MUX), 복수의 MUX들을 이용하여, 또는 그 밖에 상기 메모리들과 비트 엔진들, 그리고 이들 메모리들과 체크 엔진들 사이의 선택적인 연결을 가능하게 할 수 있는 여하한 개수의 원하는 수단을 이용하여 구현될 수 있다는 점을 주지한다.As in other embodiments, the switching module 1091 (as well as other switching modules described and depicted in the present application) may use one multiplexer (MUX) with multiple inputs / outputs, and multiple MUXs. It should be noted that, or else, may be implemented using any number of desired means capable of enabling selective connectivity between the memories and bit engines and these memories and check engines.

상기 LDPC 코드 1을 디코딩할 경우에, 메모리들(1011, 1012) 양자 모두가 이용된다. 상기 메모리(1011)는 부분행렬(711)을 프로세싱하는 데에 이용되고, 상기 메모리(1012)는 부분행렬(712)을 프로세싱하는 데에 이용되며, 또는 그 반대로도 될 수 있다.In decoding the LDPC code 1, both memories 1011 and 1012 are used. The memory 1011 is used to process submatrices 711, and the memory 1012 is used to process submatrices 712, or vice versa.

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(1031, 1032)은 소프트 정보 를 생성하도록 동작하며, 코드 1에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 1031 and 1032 are operative to generate soft information, and the LDPC coded signal encoded according to code 1 Optimal estimates can be made from the soft information with respect to the bits encoded therein.

상기 LDPC 코드 2를 디코딩할 경우에, 다시 한번 메모리들(1011, 1012) 양자 모두가 이용된다. 상기 메모리(1011)는 부분행렬(721)을 프로세싱하는 데에 이용되고, 상기 메모리(1012)는 부분행렬(722)을 프로세싱하는 데에 이용되며, 또는 그 반대로도 될 수 있다.In decoding the LDPC code 2, both memories 1011 and 1012 are used once again. The memory 1011 is used to process submatrices 721, and the memory 1012 is used to process submatrices 722, or vice versa.

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(1031, 1032)은 소프트 정보를 생성하도록 동작하며, 코드 2에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 1031 and 1032 are operative to generate soft information, and the LDPC coded signal encoded according to code 2 Optimal estimates can be made from the soft information with respect to the bits encoded therein.

이와 다르게, 다른 실시예들에서는, 단일한 스위칭 모듈이 이용될 수 있다(예를 들어, 상기 스위칭 모듈(1091)에 마찬가지로 결합된 체크 엔진들(1021, 1022)의 변형 형태로서 묘사될 수 있는 것과 같은 방식).Alternatively, in other embodiments, a single switching module may be used (eg, as may be depicted as a variant of the check engines 1021, 1022 similarly coupled to the switching module 1091). The same way).

이 도면에서 볼 수 있는 바와 같이, 병합 메모리(merger memory, 예를 들어 이 도면 내에서 메모리(1012)로 설명된 것과 같은)는 코드 1에 관한 0이 아닌 부분행렬(712)에 대한 프로세싱을 수행하는 데에 그리고 코드 2에 관한 0이 아닌 부분행렬(722)에 대한 프로세싱을 수행하는 데에 이용될 수 있다. 상호 배타적인 0이 아닌 부분행렬들의 디코딩 프로세싱을 수행하는 데에 병합된 메모리를 이용하는 이 러한 원리는 물론 더 큰 LDPC 행렬들에도 확장 적용될 수 있다.As can be seen in this figure, the merge memory (such as described as memory 1012 within this figure) performs processing on the nonzero submatrix 712 for code 1. And perform processing on the nonzero submatrix 722 for code 2. This principle of using merged memory to perform decoding processing of mutually exclusive nonzero submatrices can be extended to larger LDPC matrices as well.

도 11은 중첩된 LDPC 행렬의 0이 아닌 부분행렬들의 프로세싱을 수용하기 위한 디코딩 구조의 일 실시예(1100)를 예시한 것이다. 이 실시예는 여하한 원하는 크기의 LDPC 행렬들을 가지는 코딩 신호들의 디코딩을 수용하는 데에 일반화될 수 있다.FIG. 11 illustrates one embodiment 1100 of a decoding structure to accommodate processing of nonzero submatrices of a superimposed LDPC matrix. This embodiment can be generalized to accommodate decoding of coded signals having LDPC matrices of any desired size.

도 11을 참조하면, 이 실시예는 복수의 메모리들(1110)(즉, 메모리(1111 내지 1113)로 설명된 것)을 포함한다. 비트 메트릭/LLR들이 복수의 비트 엔진들(즉, 비트 엔진들(1113 내지 1133))에 제공된다. 스위칭 모듈(1191)이 상기 복수의 비트 엔진들(1131 내지 1133) 및 복수의 메모리들(1110) 사이에 구현된다. 또 다른 스위칭 모듈(1192)이 체크 엔진들(1121, 1122) 및 복수의 메모리들(1110) 사이에 구현된다.Referring to FIG. 11, this embodiment includes a plurality of memories 1110 (ie, those described as memories 1111 to 1113). Bit metrics / LLRs are provided to a plurality of bit engines (ie, bit engines 1113 to 1133). The switching module 1191 is implemented between the plurality of bit engines 1131 to 1133 and the plurality of memories 1110. Another switching module 1192 is implemented between the check engines 1121 and 1122 and the plurality of memories 1110.

다시 한번, 다른 실시예들에서와 마찬가지로, 상기 스위칭 모듈(1191)(뿐만 아니라 본 출원에 설명되고 묘사된 다른 스위칭 모듈들)은 다수의 입력/출력을 가지는 하나의 멀티플렉서(MUX), 복수의 MUX들을 이용하여, 또는 그 밖에 상기 복수의 메모리들(1110)과 복수의 비트 엔진들(1131 내지 1133), 그리고 이들 메모리들(1110)과 상기 복수의 체크 엔진들(1121 내지 1123) 사이의 선택적인 연결을 가능하게 할 수 있는 여하한 개수의 원하는 수단을 이용하여 구현될 수 있다는 점을 주지한다.Once again, as in other embodiments, the switching module 1191 (as well as other switching modules described and depicted in the present application) is one multiplexer (MUX) with multiple inputs / outputs, multiple MUX Or else optional between the plurality of memories 1110 and the plurality of bit engines 1131 to 1133 and between these memories 1110 and the plurality of check engines 1121 to 1123. Note that it can be implemented using any number of desired means capable of enabling the connection.

제1 LDPC 코드에 따라 인코딩된 제1 신호를 디코딩할 경우에, 상기 메모리들(1110) 중의 제1 부분집합이 상기 제1 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부 분행렬들을 프로세싱하는 데에 이용된다. When decoding a first signal encoded according to a first LDPC code, a first subset of the memories 1110 is used to process nonzero sub-matrices in an LDPC matrix of the first LDPC code. do.

제2 LDPC 코드에 따라 인코딩된 제2 신호를 디코딩할 경우에, 상기 메모리들(1110) 중의 제2 부분집합이 상기 제2 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부분행렬들을 프로세싱하는 데에 이용된다. When decoding a second signal encoded according to a second LDPC code, a second subset of the memories 1110 is used to process nonzero submatrices in an LDPC matrix of the second LDPC code. .

제3 LDPC 코드에 따라 인코딩된 제3 신호를 디코딩할 경우에, 상기 메모리들(1110) 중의 제3 부분집합이 상기 제3 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부분행렬들을 프로세싱하는 데에 이용된다. When decoding a third signal encoded according to a third LDPC code, a third subset of the memories 1110 is used to process nonzero submatrices in the LDPC matrix of the third LDPC code. .

이런 식으로 계속된다.It continues in this way.

일부 실시예들에 있어서는, 각각의 코딩 신호를 디코딩할 때에, 복수의 메모리들(1110) 중에서 동일한 개수의 메모리들이 이용된다. 다른 실시예들에서는, 서로 다른 개수의 메모리들이 서로 다르게 코딩 신호를 디코딩할 때에 이용된다. 예를 들어, 바로 위에서 설명된 제1 부분집합, 제2 부분집합 및 제3 부분집합의 각각은 동일한 개수의 메모리들을 가질 수 있지만, 또한 이들 메모리들은 다양한 실시예들에서 서로 다른 개수의 메모리들을 각각 가질 수 있다.In some embodiments, the same number of memories among the plurality of memories 1110 are used when decoding each coded signal. In other embodiments, different numbers of memories are used when decoding the coded signal differently. For example, each of the first subset, second subset, and third subset described immediately above may have the same number of memories, but these memories may also each have a different number of memories in various embodiments. Can have

스위치 모듈들(1191, 1192)은 비트 에지 메시지들의 업데이트를 수행하는 용도로써 체크 에지 메시지들에 액세스할 수 있도록 상기 복수의 비트 엔진들(1131 내지 1133) 및 상기 복수의 메모리들(1110) 사이의 적절한 연결성을 보장하도록 동작할 수 있으며, 또한 상기 스위칭 모듈들(1191, 1192)은 체크 에지 메시지들의 업데이트를 수행하는 용도로써 비트 에지 메시지들에 액세스할 수 있도록 상기 복수의 체크 엔진들(1121 내지 1123) 및 상기 복수의 메모리들(1110) 사이의 적절한 연 결성을 보장하도록 동작할 수 있다.The switch modules 1191 and 1192 are provided between the plurality of bit engines 1131 to 1133 and the plurality of memories 1110 to access check edge messages for the purpose of performing update of bit edge messages. May operate to ensure proper connectivity, and the switching modules 1191 and 1192 may also access the plurality of check engines 1121 to 1123 to access bit edge messages for the purpose of performing update of check edge messages. ) And proper connectivity between the plurality of memories 1110.

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(1131 내지 1132)은 소프트 정보를 생성하도록 동작하며, 관심 대상인 특정 LDPC 코드에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 1131 to 1132 operate to generate soft information, encoded according to the particular LDPC code of interest. Optimal estimates can be made from the soft information with respect to the bits encoded in the LDPC coded signal.

도 12는 중첩된 LDPC 행렬의 0이 아닌 부분행렬들의 프로세싱을 수용하기 위한 디코딩 구조의 다른 실시예(1200)를 예시한 것이다. 12 illustrates another embodiment 1200 of a decoding structure to accommodate processing of nonzero submatrices of a superimposed LDPC matrix.

도 12를 참조하면, 이 실시예는 복수의 메모리들(1210)(즉, 메모리(1211 내지 1213)로 설명된 것)을 포함한다. 비트 메트릭/LLR들이 복수의 비트 엔진들(즉, 비트 엔진들(1213 내지 1233))에 제공된다. 스위칭 모듈(1291)이 상기 복수의 비트 엔진들(1231 내지 1233) 및 복수의 메모리들(1210) 사이에 구현된다. 바로 이 스위칭 모듈(1291)이 체크 엔진들(1221, 1222) 및 상기 복수의 메모리들(1210) 사이의 선택적 연결성을 위해 제공된다.Referring to FIG. 12, this embodiment includes a plurality of memories 1210 (ie, those described as memories 1211-1213). Bit metrics / LLRs are provided to a plurality of bit engines (ie, bit engines 1213-1233). The switching module 1291 is implemented between the plurality of bit engines 1231 to 1233 and the plurality of memories 1210. This switching module 1291 is provided for selective connectivity between the check engines 1221 and 1222 and the plurality of memories 1210.

제1 LDPC 코드에 따라 인코딩된 제1 신호를 디코딩할 경우에, 상기 메모리들(1210) 중의 제1 부분집합이 상기 제1 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부분행렬들을 프로세싱하는 데에 이용된다. When decoding a first signal encoded according to a first LDPC code, a first subset of the memories 1210 is used to process nonzero submatrices in an LDPC matrix of the first LDPC code. .

제2 LDPC 코드에 따라 인코딩된 제2 신호를 디코딩할 경우에, 상기 메모리들(1210) 중의 제2 부분집합이 상기 제2 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부분행렬들을 프로세싱하는 데에 이용된다. When decoding a second signal encoded according to a second LDPC code, a second subset of the memories 1210 is used to process nonzero submatrices in the LDPC matrix of the second LDPC code. .

제3 LDPC 코드에 따라 인코딩된 제3 신호를 디코딩할 경우에, 상기 메모리들(1210) 중의 제3 부분집합이 상기 제3 LDPC 코드의 LDPC 행렬 내의 0이 아닌 부분행렬들을 프로세싱하는 데에 이용된다. When decoding a third signal encoded according to a third LDPC code, a third subset of the memories 1210 is used to process nonzero submatrices in the LDPC matrix of the third LDPC code. .

이런 식으로 계속된다.It continues in this way.

일부 실시예들에 있어서는, 각각의 코딩 신호를 디코딩할 때에, 복수의 메모리들(1210) 중에서 동일한 개수의 메모리들이 이용된다. 다른 실시예들에서는, 서로 다른 개수의 메모리들이 서로 다르게 코딩 신호를 디코딩할 때에 이용된다. 예를 들어, 바로 위에서 설명된 제1 부분집합, 제2 부분집합 및 제3 부분집합의 각각은 동일한 개수의 메모리들을 가질 수 있지만, 또한 이들 메모리들은 다양한 실시예들에서 서로 다른 개수의 메모리들을 각각 가질 수 있다.In some embodiments, the same number of memories among the plurality of memories 1210 are used when decoding each coded signal. In other embodiments, different numbers of memories are used when decoding the coded signal differently. For example, each of the first subset, second subset, and third subset described immediately above may have the same number of memories, but these memories may also each have a different number of memories in various embodiments. Can have

상기 스위치 모듈(1291)은 비트 에지 메시지들의 업데이트를 수행하는 용도로써 체크 에지 메시지들에 액세스할 수 있도록 상기 복수의 비트 엔진들(1231 내지 1233) 및 상기 복수의 메모리들(1210) 사이의 적절한 연결성을 보장하도록 동작할 수 있으며, 또한 상기 스위칭 모듈(1291)은 체크 에지 메시지들의 업데이트를 수행하는 용도로써 비트 에지 메시지들에 액세스할 수 있도록 상기 복수의 체크 엔진들(1221 내지 1223) 및 상기 복수의 메모리들(1210) 사이의 적절한 연결성을 보장하도록 동작할 수 있다.The switch module 1291 may have appropriate connectivity between the plurality of bit engines 1231 to 1233 and the plurality of memories 1210 to access check edge messages for the purpose of performing update of bit edge messages. And a plurality of check engines 1221 to 1223 and the plurality of check engines to access bit edge messages for the purpose of performing update of check edge messages. Operate to ensure proper connectivity between memories 1210.

적절한 비트 노드 프로세싱 및 체크 노드 프로세싱이 수행된 후에, 그리고 소정의 정지 기준이 충족하게 되면, 상기 비트 엔진들(1231 내지 1232)은 소프트 정보를 생성하도록 동작하며, 관심 대상인 특정 LDPC 코드에 따라 인코딩된 LDPC 코딩 신호 내에 인코딩되어 있는 비트들에 관하여 상기 소프트 정보로부터 최적의 추정 값들이 만들어질 수 있다.After proper bit node processing and check node processing are performed, and if a predetermined stop criterion is met, the bit engines 1231-1232 operate to generate soft information, encoded according to the particular LDPC code of interest. Optimal estimates can be made from the soft information with respect to the bits encoded in the LDPC coded signal.

도 13 및 도 14는 중첩 LDPC 행렬의 0이 아닌 부분행렬들의 디코딩을 위한 하드웨어 설비에 관한 실시예들(1300, 1400)을 예시한 것이다.13 and 14 illustrate embodiments 1300 and 1400 of a hardware facility for decoding nonzero submatrices of an overlapping LDPC matrix.

도 13을 참조하면, 이 실시예(1300)에 따라 디코딩되는 LDPC 코딩 신호들의 각각은 동일한 갯수의 0이 아닌 부분행렬들을 가진다. 이들 LDPC 코드들의 각각에 따라 인코딩된 LDPC 코딩 신호들의 각각을 디코딩하는 데에 있어서 유일한 차이는, 각각의 코딩 신호에 대하여 이용되는 메모리들의 부분집합들이 서로 다를 수 있다는 점이다.Referring to FIG. 13, each of the LDPC coded signals to be decoded according to this embodiment 1300 has the same number of nonzero submatrices. The only difference in decoding each of the LDPC coded signals encoded according to each of these LDPC codes is that the subsets of memories used for each coded signal may be different.

예를 들어, 코드 1에 따라 인코딩된 신호들을 디코딩할 때에, 상응하는 LDPC 행렬은 'X'개의 0이 아닌 부분행렬들을 포함하고, 준비된 모든 비트 엔진들은 비트 노드 프로세싱을 위해 이용되며, 준비된 모든 체크 엔진들은 체크 노드 프로세싱을 위해 이용되고, 총 이용 가능 개수가 'Y'인 메모리들 중에 개수가 'X'인 메모리들이 이용되며, 이러한 'Y' 개의 메모리들 중의 부분집합 1이 이용된다.For example, when decoding signals encoded according to code 1, the corresponding LDPC matrix contains 'X' nonzero submatrices, all prepared bit engines are used for bit node processing, and all prepared checks Engines are used for check node processing, memories of the number 'X' of the total available number of 'Y' memories, and subset 1 of these 'Y' memories.

코드 2에 따라 인코딩된 신호들을 디코딩할 때에, 상응하는 LDPC 행렬은 'X'개의 0이 아닌 부분행렬들을 포함하고, 준비된 모든 비트 엔진들은 비트 노드 프로세싱을 위해 이용되며, 준비된 모든 체크 엔진들은 체크 노드 프로세싱을 위해 이용되고, 총 이용 가능 개수가 'Y'인 메모리들 중에 개수가 'X'인 메모리들이 이용되며, 이러한 'Y' 개의 메모리들 중의 부분집합 2이 이용된다.When decoding signals encoded according to code 2, the corresponding LDPC matrix contains 'X' nonzero submatrices, all prepared bit engines are used for bit node processing, and all prepared check engines are checked nodes. Of the memories that are used for processing and the total number of available 'Y' memory is the number 'X', subset 2 of these 'Y' memories is used.

도면에 표현된 바와 같이 이런 식으로 계속된다.It continues in this way as represented in the figure.

도면에서 볼 수 있는 바와 같이, 유일한 차이는 이 실시예(1300)에서 서로 다른 LDPC 코딩 신호들을 디코딩할 때에는 서로 다른 부분집합에 속하는 메모리들이 이용된다는 점이다.As can be seen in the figure, the only difference is that in this embodiment 1300, memories belonging to different subsets are used to decode different LDPC coded signals.

도 13에서는 이러한 LDPC 코드들의 각각에 따라 인코딩된 LDPC 코딩 신호들의 각각을 디코딩할 때에, 동일한 개수의 비트 엔진들과 동일한 개수의 체크 엔진들이 이용될 수 있다.In FIG. 13, the same number of bit engines and the same number of check engines may be used when decoding each of the LDPC coded signals encoded according to each of these LDPC codes.

도 14를 참조하면, 이 실시예(1400)는 다양한 수준의 병렬화가 이용될 수 있는 대안적인 실시예들을 묘사한다. 이 실시예(1400)는 서로 다른 LDPC 코딩 신호들을 디코딩하는 경우에, 어떻게 광범위한 수준의 가변성 및 유연성이 이용될 수 있는가를 보여준다.Referring to FIG. 14, this embodiment 1400 depicts alternative embodiments in which various levels of parallelism may be used. This embodiment 1400 shows how a wide range of variability and flexibility can be used when decoding different LDPC coded signals.

예를 들면, 코드 a에 따라 인코딩된 신호들을 디코딩할 때, 대응하는 LDPC 행렬은 'a1'개의 0이 아닌 부분 행렬들을 포함하고, 전체 수 'M'개의 제공된 비트 엔진들 중 부분 집합 a2가 비트 노드 프로세싱을 위해 적용되고, 전체 수 'L'개의 제공된 체크 엔진들의 부분 집합 a3는 체크 노드 프로세싱을 위해 적용되고, 전체 수 'Z'개의 이용가능한 메모리들 중 'a2 또는 'a3' 개수의 메모리들이 적용되며, 이들 'Z' 개의 메모리들 중 부분 집합 a4가 적용된다.For example, when decoding signals encoded according to code a, the corresponding LDPC matrix contains 'a1' nonzero partial matrices, and subset a2 of the total number 'M' provided bit engines is a bit. The subset a3 of the total number 'L' provided check engines applied for node processing is applied for the check node processing, and the 'a2' or 'a3' number of memories out of the total number 'Z' available memories The subset a4 of these 'Z' memories is applied.

코드 b에 따라 인코딩된 신호들을 디코딩할 때, 대응하는 LDPC 행렬은 'b1'개의 0이 아닌 부분 행렬들을 포함하고, 전체 수 'M'개의 제공된 비트 엔진들 중 부분 집합 b2가 비트 노드 프로세싱을 위해 적용되고, 전체 수 'L'개의 제공된 체크 엔진들의 부분 집합 b3는 체크 노드 프로세싱을 위해 적용되고, 전체 수 'Z'개의 이용가능한 메모리들 중 'b2' 또는 'b3' 개수의 메모리들이 적용되며, 이들 'Z'개의 메모리들 중 부분 집합 b4가 적용된다.When decoding signals encoded according to code b, the corresponding LDPC matrix contains 'b1' nonzero sub-matrices, and subset b2 of the total number 'M' provided bit engines is for bit node processing. A subset b3 of the total number 'L' provided check engines is applied for check node processing, a 'b2' or 'b3' number of memories from the total number 'Z' available memories are applied, A subset b4 of these 'Z' memories is applied.

그리고, 이 도면에서 도시된 코드 c, 코드 d, 및 코드 e도 도면에 따라 적용된다.Code c, code d, and code e shown in this drawing are also applied according to the drawing.

이 실시예(1400)에서, 예를 들면, 각각의 부분 반복(예컨대, 비트 노드 프로세싱 또는 체크 노드 프로세싱)은 다중 주기들을 사용하여 수행될 수 있다. 일 실시예에서 비트 노드 프로세싱을 보면, 비트 에지 메시지들의 전반부는 제공된 수의 비트 엔진들을 사용하여 첫 번째 시간 동안 업데이트될 수 있고, 비트 에지 메시지들의 후반부는 두 번째 시간 동안 제공된 수의 비트 엔진들을 사용하여 업데이트될 수 있다. 이는 부분 병렬 비트 노드 프로세싱 접근 방식으로 볼 수 있고, 여기서 2개의 개별적인 단계들이 부분 반복(예컨대, 비트 노드 프로세싱)의 디코딩을 수행하도록 적용된다.In this embodiment 1400, for example, each partial repetition (eg, bit node processing or check node processing) may be performed using multiple periods. Looking at bit node processing in one embodiment, the first half of the bit edge messages can be updated during the first time using the provided number of bit engines, and the second half of the bit edge messages use the provided number of bit engines during the second time. Can be updated. This can be viewed as a partial parallel bit node processing approach, where two separate steps are applied to perform decoding of partial repetition (eg, bit node processing).

다른 실시예에서, 체크 노드 프로세싱을 보면, 체크 에지 메시지들의 첫 번째 1/3이 제공된 수의 체크 엔진들을 사용하여 첫 번째 시간 동안 업데이트될 수 있고, 체크 에지 메시지의 두 번째 1/3은 두 번째 시간 동안 제공된 수의 체크 엔진들을 사용하여 업데이트될 수 있고, 체크 에지 메시지들의 마지막 1/3은 세 번째 시간 동안 제공된 수의 체크 엔진들을 사용하여 업데이트될 수 있다. 이는 병렬 체크 노드 프로세싱 접근 방식으로 볼 수 있고, 여기서 3개의 개별적 단계들이 부분 반복 디코딩(예컨대, 체크 노드 프로세싱)을 수행하도록 적용된다.In another embodiment, looking at the check node processing, the first 1/3 of the check edge messages can be updated during the first time using the provided number of check engines, the second 1/3 of the check edge messages being the second It can be updated using the provided number of check engines during the time, and the last third of the check edge messages can be updated using the provided number of check engines during the third time. This can be viewed as a parallel check node processing approach, where three separate steps are applied to perform partial iterative decoding (eg, check node processing).

명백하게, 다른 변경들이 또한 본 발명의 사상과 범위에 벗어나지 않고 적용 될 수 있고, 여기서 각각의 부분 반복을 위해 적용되는 주기들의 수는 특정 실시예에서 원하는 대로 역시 변경될 수 있다.Obviously, other changes may also be applied without departing from the spirit and scope of the invention, where the number of periods applied for each partial repetition may also be changed as desired in the specific embodiment.

다시 이 실시예(1400)에서, 각각의 LDPC 행렬은 동일한 수의 0이 아닌 부분 행렬들을 가질 필요가 없다. 특정 LDPC 행렬을 위해 0인 부분 행렬들에 대응하는 메모리들은 모든 제공되는 메모리들을 요구하지 않는 특정 LDPC 코딩 신호를 디코딩할 때 연결이 해제된다. 특정 메모리가 특정 신호의 디코딩 동안 사용되지 않을 때, 메모리는 유휴 메모리가 동작 계산에 오류를 일으키는 것을 방지하고, 또한 에너지를 절약하기 위해 회로의 나머지로부터 끊어진다(예컨대, 연결 해제됨). 메모리의 이러한 끊어짐은 특정 코드를 디코딩하기 위해 0인 부분 행렬인 특정의 사용되지 않은 부분 행렬과 관련된 각각의 변수 노드들 및 체크 노드들에 대해 각각 입력을 0(또는 최대값)이 되도록 설정하는 것에 의해 달성될 수 있다.Again in this embodiment 1400, each LDPC matrix need not have the same number of nonzero partial matrices. Memories corresponding to zero partial matrices for a particular LDPC matrix are disconnected when decoding a particular LDPC coded signal that does not require all provided memories. When a particular memory is not used during the decoding of a particular signal, the memory is disconnected (e.g. disconnected) from the rest of the circuit to prevent the idle memory from making an error in the operation calculation and also to save energy. This break in memory consists in setting the input to be zero (or maximum) for each variable node and check nodes associated with a particular unused submatrix, which is a submatrix that is zero to decode a particular code. Can be achieved by

도 15 및 16은 적어도 하나의 병합된 메모리를 적용하는 실시예를 도시한다. 이 실시예들에서, 다음과 같이 메모리 공유가 있다.15 and 16 illustrate embodiments of applying at least one merged memory. In these embodiments, there is memory sharing as follows.

메모리 A는 코드 0 및 코드 1과 관련하여 인코딩된 신호들을 디코딩할 때 활성이고, 모든 다른 코드들로 인코딩된 신호들을 디코딩할 때 유휴이다.Memory A is active when decoding signals encoded with respect to code 0 and code 1 and is idle when decoding signals encoded with all other codes.

메모리 B는 코드 2 및 코드 3과 관련하여 인코딩된 신호들을 디코딩할 때 활성이고, 모든 다른 코드들로 인코딩된 신호들을 디코딩할 때 유휴이다.Memory B is active when decoding signals encoded with respect to codes 2 and 3 and is idle when decoding signals encoded with all other codes.

도 15는 LDPC 디코딩 프로세싱에 따라 체크 노드 프로세싱을 위해 적용된 상호 배타적인 제공된 메모리들 사이의 연결의 실시예(1500)를 도시한다. 이 실시예는 코드 0 및 코드 1에 따라 인코딩된 신호들을 디코딩할 때 메모리 A가 적용될 수 있는 방법, 및 모든 다른 코드들로 인코딩된 신호들을 디코딩할 때 메모리 A가 하드웨어로부터 효과적으로 연결 해제(예컨대, 끊어짐)될 수 있는 방법을 도시한다. 메모리 A가 특정 신호들의 디코딩동안 사용되지 않을 때, 메모리 A는 유휴 메모리 A가 동작 계산에 오류를 일으키는 것을 방지하고, 또한 에너지를 절약하기 위해 하드웨어/회로의 나머지로부터 끊어진다(예컨대, 연결 해제됨). 메모리의 이러한 끊어짐은 각각 특정 코드를 디코딩하기 위해 0인 부분 행렬인 특정의 사용되지 않은 부분 행렬과 관련하여 각각의 변수 노드들 및 체크 노드들에 대해 입력을 메모리에 0(또는 MUX를 사용하여 최대값)으로 설정하는 것에 의해 달성될 수 있다.15 illustrates an embodiment 1500 of connections between mutually exclusive provided memories applied for check node processing in accordance with LDPC decoding processing. This embodiment provides a method in which memory A can be applied when decoding signals encoded according to code 0 and code 1, and memory A is effectively disconnected from hardware (e.g., when decoding signals encoded with all other codes). Shows how it can be broken). When memory A is not used during the decoding of certain signals, memory A is disconnected from the rest of the hardware / circuit (e.g. disconnected) to prevent idle memory A from making an error in operation calculations and also save energy. ). This break in memory causes input to each variable node and check nodes to be zero (or using MUX) for each variable node and check nodes in relation to a particular unused submatrix, each of which is a submatrix that is zero to decode a particular code. Value).

이 실시예는 또한 코드 2 및 코드 3에 따라 인코딩된 신호들을 디코딩할 때 메모리 B가 적용될 수 있는 방법, 및 모든 다른 코드들로 인코딩된 신호들을 디코딩할 때 메모리 B가 하드웨어로부터 효과적으로 연결 해제(예컨대, 끊어짐)될 수 있는 방법을 도시한다. 메모리 B가 특정 신호들의 디코딩동안 사용되지 않을 때, 메모리 B는 유휴 메모리 B가 동작 계산에 오류를 일으키는 것을 방지하고, 또한 에너지를 절약하기 위해 하드웨어/회로의 나머지로부터 끊어진다(예컨대, 연결 해제됨). 메모리의 이러한 끊어짐은 각각 특정 코드를 디코딩하기 위해 0인 부분 행렬인 특정의 사용되지 않은 부분 행렬과 관련하여 각각의 변수 노드들 및 체크 노드들에 대해 입력을 메모리에 0(또는 MUX를 사용하여 최대값)으로 설정하는 것에 의해 달성될 수 있다.This embodiment also shows how memory B can be applied when decoding signals encoded according to code 2 and code 3, and memory B is effectively disconnected from hardware (e.g., when decoding signals encoded with all other codes). , Broken). When memory B is not used during the decoding of certain signals, memory B is disconnected from the rest of the hardware / circuit (e.g., disconnected) to prevent idle memory B from making an error in operation calculations and also save energy. ). This break in memory causes input to each variable node and check nodes to be zero (or using MUX) for each variable node and check nodes in relation to a particular unused submatrix, each of which is a submatrix that is zero to decode a particular code. Value).

메모리들(A, B)로의 변수/비트 엔진 연결은 이 도면에 도시되지 않고, 메모리 C로의 변수/비트 엔진 연결들이 다음 도면에 도시되지 않는다는 것이 주목된다. 그러나, 본원에 도시된 체크 엔진 연결로 도시될 때 당해 기술 분야의 평균적 기술을 가진 자들은 상관성 있는 변수/비트 노드 연결을 또한 이해할 수 있을 것이다.It is noted that the variable / bit engine connections to memories A, B are not shown in this figure, and the variable / bit engine connections to memory C are not shown in the following figure. However, those of ordinary skill in the art, when shown with the check engine connections shown herein, may also understand correlated variable / bit node connections.

볼 수 있는 바와 같이, 메모리들(A, B)은 단일 메모리 C로 병합될 수 있다. 이후에 메모리 C는 코드 0, 1, 2, 및 코드 3에 따라 인코딩된 신호들을 디코딩할 때 활성이고, 모든 다른 코드들로 인코딩된 신호들을 디코딩할 때 유휴이다.As can be seen, the memories A and B can be merged into a single memory C. Memory C is then active when decoding signals encoded according to codes 0, 1, 2, and 3, and idle when decoding signals encoded with all other codes.

여기서 병합된 메모리들이 독립적으로 제공되지 않는다면, 병합된 메모리들은 존재할 수 있는 모든 연결을 유지한다는 것이 주목된다. 도 15 및 도 16에 도시된 실시예에서, 메모리 A 및 메모리 B(도 15)의 원래의 연결은 메모리 C(도 16)를 사용할 때 유지된다.It is noted here that if the merged memories are not provided independently, the merged memories maintain all connections that may exist. In the embodiment shown in Figures 15 and 16, the original connection of memory A and memory B (Figure 15) is maintained when using memory C (Figure 16).

예를 들면, 메모리 A 및 메모리 B가 상호 배타적인 코드 세트들을 갖는 실시예를 고려하고, 또한 메모리 A가 메모리 B와 다른 부분 행렬 행에 있는 것을 고려할 때(예컨대, 각각의 메모리 A 및 메모리 B는 전체적인 LDPC 행렬내의 다른 위치들에서 부분 행렬들에 대응한다), 메모리 A 및 메모리 B는 다른 체크 노드들로 연결할 수 있고, 메모리 C로 병합될 수 있다. 또한 메모리 C는 메모리 A가 연결된 체크 노드들 모두에 연결을 유지해야 하고, 또한 메모리 B가 연결된 체크 노드들에 연결을 유지해야 한다.For example, considering an embodiment in which memory A and memory B have mutually exclusive code sets, and also considering that memory A is in a different partial matrix row than memory B (eg, each memory A and memory B Corresponding to partial matrices at different locations in the overall LDPC matrix), memory A and memory B can be connected to other check nodes and merged into memory C. In addition, memory C must maintain a connection to all of the check nodes to which memory A is connected, and also maintain a connection to the check nodes to which memory B is connected.

도 16은 LDPC 디코딩 프로세싱에 따라 체크 노드 프로세싱을 위해 적용된 병합된 메모리의 연결의 실시예(1600)를 도시한다. 3개의 MUX들이 있는 2 스테이지의 실시예는 단일 메모리 C가 메모리들(A, B) 모두를 교체하는 것을 허용한다.16 shows an embodiment 1600 of a concatenation of merged memory applied for check node processing in accordance with LDPC decoding processing. The two stage embodiment with three MUXs allows a single memory C to replace all of the memories A and B.

도 17은 LDPC 코딩 신호를 처리하기 위한 방법(1700)의 실시예이다.17 is an embodiment of a method 1700 for processing an LDPC coded signal.

도 17을 참조하면, 방법(1700)은 최초에 블럭(1710)으로 도시된 것과 같이, 연속 시간 신호를 수신하는 단계를 포함한다. 연속 시간 신호의 수신하여 프로세싱하는 단계는 또한 제1 연속 시간 신호의 임의의 필요한 하향 전환(down conversion)을 수행하고 이에 따라 제2 연속 시간 신호를 생성하는 단계를 포함할 수 있다(1712). 수행될 필요가 있을 수 있는 임의의 주파수 변환은 가능하게는 반송파(carrier) 주파수로부터 기저대역 주파수로의 직접 변환에 의해 수행될 수 있다. 이 주파수 변환은 대안적으로는 IF(Intermediate Frequency)를 통해 수행될 수 있다. 어느 실시예에서나, 수신된 연속 시간 신호는 통상 이 방법을 수행할 때 주파수에서 기저대역 연속 시간 신호로 떨어뜨려진다. 또한, 특정 유형의 이득 조정/이득 제어는 수신된 연속 시간 신호에 적용될 수 있다.Referring to FIG. 17, the method 1700 includes receiving a continuous time signal, as initially shown at block 1710. Receiving and processing the continuous time signal may also include performing any necessary down conversion of the first continuous time signal and thereby generating a second continuous time signal (1712). Any frequency conversion that may need to be performed may possibly be performed by direct conversion from carrier frequency to baseband frequency. This frequency conversion may alternatively be performed via intermediate frequency (IF). In either embodiment, the received continuous time signal is typically dropped from base to baseband continuous time signal when performing this method. In addition, certain types of gain adjustment / gain control may be applied to the received continuous time signal.

블럭에 의해 도시된 것과 같이(1720), 방법(1700)은 또한 제1(또는 제2) 연속 시간 신호를 샘플링하는 단계를 포함하고, 이에 따라 이산 시간 신호를 생성하고 I, Q 요소를 검출하는 단계를 포함한다. 이 샘플링은 적절하게 하향 전환된(및 잠재적으로 또한 필터링되고, 이득 조정되고, 등) 수신된 연속 시간 신호로부터 이산 시간 신호를 생성하도록 ADC(Analog to Digital Converter) 또는 등가의 수단을 사용하여 수행될 수 있다. 이산 시간 신호의 개별적인 샘플들의 I, Q 요소들은 또한 이 단계로 검출된다. 방법(1700)은 이후에 I, Q 요소들을 복조하는 단계를 포함하고, (콘스텔레이션(constellation) 포인트들의 맵핑을 갖는 콘스텔레이션 형상으로) I, Q 요소들의 심볼 맵핑(mapping)을 수행하는 단계를 포함할 수 있고, 이에 따라 블럭(1730)에 도시된 것과 같이 이산 값의 변조 심볼들의 열(sequence)을 생 성한다.As shown by the block 1720, the method 1700 also includes sampling the first (or second) continuous time signal, thereby generating a discrete time signal and detecting the I, Q elements. Steps. This sampling may be performed using an analog-to-digital converter (ADC) or equivalent means to generate a discrete time signal from an appropriately downconverted (and potentially also filtered, gain adjusted, etc.) received continuous time signal. Can be. The I and Q components of the individual samples of the discrete time signal are also detected at this stage. The method 1700 then includes demodulating the I, Q elements, and performing symbol mapping of the I, Q elements (in a constellation shape with a mapping of constellation points). And a sequence of discrete values of modulation symbols as shown in block 1730.

블럭(1740)에 의해 도시된 것과 같이, 방법(1700)의 다음 단계는 정지 조건이 부합될 때까지(예를 들면, 미리 정해진 수의 반복들에 대해, 모든 신드롬들이 0일때까지, 또는 일부의 다른 정지 기준이 만족될때까지) 에지 메시지들의 업데이트를 수행하는 단계를 포함한다. 이 단계는 상기 기재된 임의의 다양한 실시예에 따라 LDPC 디코딩을 수행하는 단계로서 보일 수 있다. 이 LDPC 디코딩은 일반적으로 비트 에지 메시지들(예를 들면, 변수 에지 메시지들)을 업데이트하기위한 비트 엔진 프로세싱(1742)뿐만 아니라 체크 에지 메시지들을 업데이트하기 위한 체크 엔진 프로세싱(1744)을 포함한다. As shown by block 1740, the next step of the method 1700 is until the stop condition is met (eg, for a predetermined number of iterations, until all syndromes are zero, or some Performing an update of the edge messages until another stop criterion is satisfied. This step can be seen as performing LDPC decoding in accordance with any of the various embodiments described above. This LDPC decoding generally includes check engine processing 1744 for updating check edge messages as well as bit engine processing 1742 for updating bit edge messages (eg, variable edge messages).

블럭(1746)에 도시된 것과 같이, 방법(1700)은 또한 관심 있는 특정 LDPC 코딩 신호를 디코딩할 때 선택된 LDPC 코드를 위해 선택된 하드웨어 제공을 적용하는 단계를 포함한다. 예를 들면, 방법(1700)은 다른 LDPC 코드들을 사용하여 생성된 다른 LDPC 코딩 신호들의 프로세싱을 수행하도록 동작가능하다(또한 결과적으로 각각의 다른 LDPC 행렬들을 가질 수 있다). 어느 신호가 디코딩되는지에 기초하여, 방법(1700)은 관심있는 특정 LDPC 코딩 신호의 디코딩을 수행하기 위해 적절한 하드웨어 제공을 선택하도록 동작가능하다.As shown at block 1746, the method 1700 also includes applying the selected hardware provision for the selected LDPC code when decoding the particular LDPC coded signal of interest. For example, the method 1700 is operable to perform processing of other LDPC coded signals generated using different LDPC codes (and may in turn have respective different LDPC matrices). Based on which signal is to be decoded, the method 1700 is operable to select an appropriate hardware provision to perform decoding of the particular LDPC coded signal of interest.

블럭(1750)에 도시된 것과 같이, 정지 기준이 만족된 후에, 방법(1700)은 가장 최근에 업데이트된 비트 에지 메시지들에 대응하는 소프트 정보에 기초하여 경판정들을 만드는 단계를 포함한다. 블럭(1760)에 의해 도시된 것과 같이, 방법(1700)은 최종적으로 수신된 연속 시간 신호로부터 검출된 (정보 비트들을 포함 하는) LDPC 코딩 비트들(LDPC 코드워드, 또는 LDPC 코드 블럭)의 최상의 추정을 출력하는 단계를 포함한다.As shown at block 1750, after the stop criterion is satisfied, the method 1700 includes making hard decisions based on soft information corresponding to the most recently updated bit edge messages. As shown by block 1760, the method 1700 provides the best estimate of LDPC coding bits (including information bits) (LDPC codeword, or LDPC code block) detected from the last received continuous time signal. The step of outputting.

도 18은 LDPC 코딩 신호를 프로세싱하기 위하 방법(1800)의 실시예를 도시한다.18 shows an embodiment of a method 1800 for processing an LDPC coded signal.

방법(1800)은 블럭(1810)에 도시된 것과 같이, 모든 LDPC 코딩 신호들을 디코딩하기 위해 필요로 되는 모든 LDPC 행렬들을 식별하는 단계로 시작한다.The method 1800 begins with identifying all LDPC matrices needed to decode all LDPC coded signals, as shown at block 1810.

이후에 방법(1800)은 블럭(1820)에 도시된 것과 같이, 모든 LDPC 행렬들의 중첩된 결과를 생성하는 단계로 이어진다(예컨대, 모든 LDPC 행렬들의 각각의 부분 행렬 위치들의 중첩을 포함).The method 1800 then continues with generating an overlapping result of all the LDPC matrices, as shown at block 1820 (eg, including an overlap of the respective partial matrix positions of all the LDPC matrices).

이후에 방법(1800)은 블럭(1830)에 도시된 것과 같이, 중첩된 결과의 각각의 부분 행렬을 수용하도록 메모리들을 제공하는 단계로 이어진다. 이는 임의의 수의 방법들로 수행될 수 있고, 임의의 수의 단계들을 포함할 수 있다. 일 실시예에서, 필요한 메모리 수를 판단하기 위해 중첩된 LDPC 행렬 결과의 그리디(greedy), 깊이 우선 탐색을 수행하는 단계를 포함한다.The method 1800 then continues with providing memories to accommodate each partial matrix of superimposed results, as shown at block 1830. This can be done in any number of ways, and can include any number of steps. In one embodiment, performing a greedy, depth-first search of the superimposed LDPC matrix results to determine the required number of memories.

다항의 시간 병합 검색 알고리즘이 메모리 제공 방법에 도달하기 위해 적용될 수 있지만, 이것이 항상 최소 메모리 방법을 제공하지는 않는다. 4 노드 예시에서, 노드들은 알파벳 순서로 고려될 수 있다.Although the polynomial temporal merge search algorithm can be applied to arrive at a memory provisioning method, this does not always provide a minimal memory method. In a four node example, the nodes may be considered in alphabetical order.

메시지 그룹Message group 병합 가능성Mergeability A A B,C B, C B B A,D A, D C C A A D D B  B

메모리 A는 메모리 B와 병합될 수 있고, 이후에 추가적인 병합이 일어나지 않을 수 있다. 이 4 노드 실시예의 최소 메모리 방법은 메모리 A 및 메모리 B를 (예컨대 메모리 E로) 병합하고 메모리 C 및 메모리 D를 (예컨대, 메모리 F로) 병합하는 것이 될 것이다.Memory A may be merged with memory B, after which no further merging may occur. The minimum memory method of this four node embodiment would be to merge memory A and memory B (eg to memory E) and merge memory C and memory D (eg to memory F).

깊이 우선 탐색은 또한 최소 메모리 방법에 도달하기 위해 적용될 수 있다. 이러한 풀(full) 깊이 우선 탐색은 본래 소모적(exhaustive)이고, 실제 최소 메모리 방법을 발견할 것이다. 그러나, 특정 실시예들은 이 접근 방식을 사용함에 어려움을 보인다. IEEE 802.11n 표준, 및 모든 12 LDPC 코드들(각각은 자신의 대응하는 LDPC 행렬을 갖는다)을 수용하도록 적응된 방법을 위해 트리 루트(tree root)를 고려할 때, IEEE 802.11n 표준을 위한 트리 루트는 2041개의 브랜치(branch)들을 갖는다. 이는 대략적으로 105의 최대 트리 깊이를 초래한다. (O(2041)105)의 검색 분야는 많은 양의 프로세싱, 시간 등이 없이는 실행불가능한 전체 검색을 만든다.Depth-first search can also be applied to reach the minimum memory method. This full depth first search is inherently exhaustive and will find a real minimum memory method. However, certain embodiments present difficulties with using this approach. Considering the tree root for the IEEE 802.11n standard, and for a method adapted to accommodate all 12 LDPC codes (each with its own LDPC matrix), the tree root for the IEEE 802.11n standard is: It has 2041 branches. This results in a maximum tree depth of approximately 105. The search field of (O 2041) 105 makes a full search that is not feasible without a large amount of processing, time, and the like.

하나 또는 그 이상의 발견적 방법(heuristics)은 최소 메모리 요구(또는 상대적으로 최소인 메모리 요구)의 검색, 및 쉽게 중첩된 LDPC 행렬 결과내의 메모리들의 병합을 행하도록 적용될 수 있다. 이 선들을 따라 적용될 수 있는 하나의 메트릭은 열(컬럼) 유사성이다. 부가하여, 병합 검색 발견적 방법(merge search heuristics)을 운용하기 위해 만들어진 특정 가정들은 다음을 포함할 수 있다: (1) 변수/비트 노드는 서로 상대적으로 작고, 체크 노드들은 중첩된 LDPC 행렬 결과내의 더 큰 영역상에 퍼지며, (2) 제공되는 메모리들은 변수/비트 노드들 둘레에 견고하게 밀집된다.One or more heuristics may be applied to perform a search of a minimum memory request (or a relatively minimal memory request), and the merging of memories within an easily nested LDPC matrix result. One metric that can be applied along these lines is column (column) similarity. In addition, certain assumptions made to operate the merge search heuristics may include the following: (1) The variable / bit nodes are relatively small with each other, and the check nodes are in nested LDPC matrix results. Spreading over a larger area, (2) provided memories are tightly packed around variable / bit nodes.

검색은 중첩된 또한 LDPC 행렬 결과의 열에 속하는 메모리들이 견고하게 밀집되며, 체크 노드들이 다른 열들을 함께 연결하는 발견적 방법을 적용할 수 있다.The search can be applied to a heuristic, in which the memories that overlap and also belong to the columns of the LDPC matrix result are tightly packed, and check nodes connect other columns together.

이후에, 열 유사성 메트릭은 특정 부분 행렬 뿐만 아니라 중첩된 LDPC 행렬 결과내의 다른 부분 행렬들내의 다른 열들로의 열의 연결에 기초하여 생성될 수 있다. 다른 실시예에 또한 기재된 것과 같이, 열 유사성 메트릭은 중첩된 결과의 LDPC 행렬의 그리디(greedy), 깊이 우선 탐색을 조정/운용하기 위해 적용될 수 있다.The column similarity metric can then be generated based on the concatenation of the columns to other columns in other partial matrices in the nested LDPC matrix result as well as the particular partial matrix. As also described in other embodiments, the column similarity metric can be applied to adjust / operate the greedy, depth-first search of the superimposed LDPC matrix.

이는 또한 블럭(1824)에 도시된 것과 같이, 병합된 메모리들로 활성 코드들의 상호 배타적인 세트들과 메모리들의 그룹들을 병합하는 단계를 포함한다. 방법(1800)은 또한 블럭(1826)에 도시된 것과 같이, 메모리들의 병합 패턴을 생성하는 단계(예컨대, 그리디(greedy), 깊이 우선 탐색 및 상호 배타적인 병합에 기초함), 및 이에 기초하여 메모리들을 설계하는 단계를 포함할 수 있다.It also includes merging groups of memories and mutually exclusive sets of active codes into merged memories, as shown at block 1824. The method 1800 also includes generating a merging pattern of memories (eg, based on greedy, depth first search, and mutually exclusive merging), and based on the same, as shown at block 1826. Designing memories may be included.

이후에 방법(1800)은 블럭(1831)에 도시된 것과 같이, 1번째 대응하는 LDPC 행렬을 갖는 1번째 LDPC 코딩 신호를 디코딩하기 위해 제공된 메모리들의 부분 집합 1을 적용하는 단계로 이어진다.The method 1800 then continues with applying subset 1 of the provided memories to decode the first LDPC coded signal having the first corresponding LDPC matrix, as shown at block 1831.

블럭(1832)에 도시된 것과 같이, 만일 다중 LDPC 코딩 신호들이 디코딩된다면, 방법(1800)은 또한 n번째 대응하는 LDPC 행렬을 갖는 n번째 LDPC 코딩 신호를 디코딩하기 위해 제공된 메모리들의 n번째 부분 집합을 적용하는 단계를 포함할 수 있다.As shown at block 1832, if multiple LDPC coded signals are decoded, the method 1800 also stores the nth subset of memories provided for decoding the nth LDPC coded signal with the nth corresponding LDPC matrix. May include applying.

도 19는 다양한 LDPC 코딩 신호들을 프로세싱하기 위한 하드웨어를 제공하기 위한 방법(1900)의 실시예를 도시한다.19 illustrates an embodiment of a method 1900 for providing hardware for processing various LDPC coded signals.

방법(1900)은 블럭(1910)에 도시된 것과 같이, 디코딩된 모든 LDPC 코딩 신호들에 필요로 되는 모든 LDPC 행렬들을 식별하는 모든 다른 열로의 열의 결합 관계에 기초하여 열 유사성을 생성하는 단계로 시작한다.The method 1900 begins with generating column similarity based on the combined relationship of columns to all other columns that identifies all LDPC matrices needed for all decoded LDPC coded signals, as shown at block 1910. do.

이후에, 방법(1900)은 블럭(1920)에 도시된 것과 같이, 모든 LDPC 행렬들의 중첩된 결과를 생성하는 단계로 이어진다(예컨대, 모든 LDPC 행렬들의 각각의 부분 행렬 위치들의 중첩 포함).Thereafter, the method 1900 continues with generating an overlapping result of all LDPC matrices, as shown at block 1920 (eg, including overlap of respective submatrix positions of all LDPC matrices).

이후에 방법(1900)은 블럭(1930)에 도시된 것과 같이, 메트릭으로서 열 유사성을 사용하여, 필요한 메모리 수 및 병합 세트들(예컨대, 병합 패턴)을 결정하기 위해 중첩된 결과의 그리디, 깊이 우선 탐색을 수행하는 단계로 이어진다.The method 1900 then uses the column similarity as a metric, as shown in block 1930, to determine the required memory number and merged sets (e.g., merge pattern), the greedy depth of the nested result. The first step is to perform a search.

이후에 방법(1900)은 블럭(1940)에 도시된 것과 같이, 병합 패턴에 기초하여 중첩된 결과의 각각의 부분 행렬들을 수용하도록 메모리들을 제공하는 단계로 이어진다.The method 1900 then continues with providing memories to accommodate respective partial matrices of the superimposed result based on the merge pattern, as shown at block 1940.

도 20은 중첩된 LDPC 행렬의 대안적인 실시예(2000)를 도시한다. 이 실시예(2000)는 IEEE 802.11n 표준내에서 적용된 12 코드들의 디코딩 프로세싱을 수행하도록 요구되는 12개의 개별 LDPC 행렬의 중첩에 대응한다. 12개의 개별 LDPC 행렬(및, 이들 각각의 부분 행렬들)을 중첩할 때, 중첩된 LDPC 행렬 결과에서 총 205개의 0이 아닌 부분 행렬들이 존재한다.20 illustrates an alternative embodiment 2000 of a nested LDPC matrix. This embodiment 2000 corresponds to the superposition of twelve individual LDPC matrices required to perform decoding processing of twelve codes applied within the IEEE 802.11n standard. When overlapping twelve separate LDPC matrices (and their respective submatrices), there are a total of 205 non-zero partial matrices in the overlapping LDPC matrix result.

각각의 0이 아닌 부분 행렬에 대응하는 메시지들은 메모리들에 저장될 수 있다. 체크 및 비트 엔진들이 구현되고, 이에 따라 이들은 대략적으로 및 선택적으로 메시지들을 판독할 수 있고, IEEE 802.11n 표준내에서 적용된 12 코드들 중 하나에 따라 인코딩된 특정 신호를 위해 요구되는 적절한 0이 아닌 부분 행렬들 각각을 나타내기 위해 구현된 메모리들로 메시지들을 기록한다.Messages corresponding to each nonzero sub-matrix may be stored in memories. Check and bit engines are implemented so that they can read messages approximately and selectively, and the appropriate non-zero portion required for a particular signal encoded according to one of the 12 codes applied within the IEEE 802.11n standard. Write messages to memories implemented to represent each of the matrices.

이 실시예에서, 단지 205개 중에 88개의 메모리들만이 임의의 시간에 적용/활성화된다. 205개 중에 적어도 117개의 메모리들은 항상 유휴이다. 명백하게, 205 메모리들 중 88개의 첫 번째 부분 집합은 두 번째 코딩 신호를 디코딩할 때 적용될 수 있다.In this embodiment, only 88 memories out of 205 are applied / activated at any time. At least 117 of the 205 memories are always idle. Clearly, the first subset of 88 of the 205 memories can be applied when decoding the second coded signal.

205개의 제공된 메모리들의 수는 병합 패턴을 적용하고 필요로되는 메모리들의 수를 판단하기 위해 중첩된 LDPC 행렬 결과의 그리디(greedy), 깊이 우선 탐색을 사용하여 발견되는 것으로서 최소 수(이는 실제로 최소일 필요는 없을 것이다)를 적용하는 것에 의해 현저하게 감소될 수 있다. 이러한 병합 패턴은 이하 첨부 자료에 도시되고, 특정 병합 패턴이 메트릭으로서 열 유사성이 있는 LDPC 행렬 중첩 결과의 그리디(greedy), 깊이 우선 탐색을 사용하여 달성되었다. 이러한 병합 패턴은 단지 102개의 제공된 메모리들(205에 대비됨)의 사용을 요구한다. 볼 수 있는 바와 같이, 이는 대략 50%의 메모리 절약이 있고, 또한 매우 무시해도 좋은 라우팅 효과(routing impact)를 결과한다. 실제로 102개보다 더 적은 메모리들이 요구되는 방법을 발견하는 것이 가능한 한편(예컨대, 풀(full) 깊이 우선 탐색을 사용), 102개의 제공된 메모리들(예컨대, 그리디(greedy), 깊이 우선 탐색을 사용하여 발견된 것)의 사용이 상대적으로 양호한 면적과 혼잡도의 트레이드-오프(trade-off)를 제공했다는 것이 발견되었다.The number of 205 provided memories is the minimum number (which is actually the minimum) as found using a greedy, depth-first search of the superimposed LDPC matrix results to apply the merge pattern and determine the number of memories needed. Need not be)). This merging pattern is shown below in the appendix, where a particular merging pattern was achieved using a greedy, depth-first search of LDPC matrix overlap results with column similarity as a metric. This merging pattern requires the use of only 102 provided memories (as opposed to 205). As can be seen, this results in approximately 50% memory savings and also results in a very negligible routing impact. While it is possible to find out how actually less than 102 memories are required (e.g., using full depth first searching), while using 102 provided memories (e.g. greedy, depth first searching) Has been found to provide a relatively good area and trade-off of congestion.

특정 신호의 디코딩 동안 특정 메모리가 사용되지 않을 때, 이 메모리는 유휴 메모리가 동작 계산에 오류를 일으키는 것을 방지하고, 또한 에너지를 절약하기 위해 회로의 나머지로부터 효과적으로 끊어질 수 있다(예컨대, 연결 해제됨). 메모 리의 이러한 끊어짐은 특정 코드를 디코딩하기 위해 0인 부분 행렬인 특정의 사용되지 않은 부분 행렬과 관련된 각각의 변수 노드들 및 체크 노드들에 대해 각각 입력을 0(또는 최대값)이 되도록 설정하는 것에 의해 달성될 수 있다.When a particular memory is not used during the decoding of a particular signal, this memory can be effectively disconnected from the rest of the circuit (e.g., disconnected) to prevent idle memory from making an error in operation calculations and also save energy. ). This break in memory consists in setting the input to be zero (or maximum) for each variable node and check nodes associated with a particular unused submatrix, which is a submatrix that is zero to decode a particular code. Can be achieved by

또한 본원에서 제공되는 다중 코드 접근 방식은 임의의 부분 행렬/부분 블럭 기반 LDPC 디코더상에서 적용될 수 있고, 여기서 부분 행렬들/부분 블럭들에 대응하는 메시지들은 일부 종류의 메모리(예컨대, SRAM, 레지스터들의 집합, 등)에 저장된다. 게다가, 더 효율적인 메모리 방법에 도달하기 위해 시도할 때 적용되는 발견적 방법은 백엔드(backend) 구현 상세 사항에 의존하여 더 정밀하게 수정될 수 있다. 다른 말로 하면, 다중 코드 LDPC 디코더가 구현되도록 요구되는 특정 응용에 의존하여, 발견적 방법은 특정 응용을 위해 더 정밀하게 수정될 수 있다.In addition, the multiple code approach provided herein can be applied on any partial matrix / partial block based LDPC decoder, where messages corresponding to partial matrices / partial blocks may contain some kind of memory (eg, SRAM, collection of registers). , Etc.). In addition, the heuristics applied when attempting to reach more efficient memory methods can be modified more precisely depending on the backend implementation details. In other words, depending on the particular application in which the multiple code LDPC decoder is required to be implemented, the heuristic method may be modified more precisely for that particular application.

본원에 기재된 다양한 모듈들(예를 들면, 인코더들, 디코더들, 프로세싱 모듈들 등)은 단일 프로세싱 장치 또는 복수의 프로세싱 장치들일 수 있다. 이러한 프로세싱 장치는 마이크로프로세서, 마이크로-제어기, 디지털 신호 프로세서, 마이크로컴퓨터, 중앙 처리 유닛, FPGA(field programmable gate array), PLD(programmable logic device), 상태 기계(state machine), 논리 회로, 아날로그 회로, 디지털 회로, 및/또는 동작 명령들에 기초하여 신호들(아날로그 및/또는 디지털)을 조작하는 임의의 장치일 수 있다. 동작 명령들은 메모리에 저장될 수 있다. 메모리는 단일 메모리 장치 또는 복수의 메모리 장치들일 수 있다. 이러한 메모리 장치는 ROM(read-only memory), RAM(random access memory), 휘발성 메모리, 비휘발성 메모리, 정적 메모리, 동적 메모리, 플래시 메모리, 및/또는 디지털 정보 를 저장하는 임의의 장치일 수 있다. 프로세싱 모듈이 상태 기계, 아날로그 회로, 디지털 회로, 및/또는 논리 회로를 통해 하나 또는 그 이상의 기능들을 구현할 때, 대응하는 동작 명령들을 저장하는 메모리는 상태 기계, 아날로그 회로, 디지털 회로, 및/또는 논리 회로를 포함하는 회로로 내장된다. 이러한 실시예에서, 메모리는 본원에 기재된 및/또는 도시된 단계들 및/또는 기능들의 적어도 일부에 대응하는 동작 명령들을 저장하고, 메모리에 연결된 프로세싱 모듈은 본원에 기재된 및/또는 도시된 단계들 및/또는 기능들의 적어도 일부에 대응하는 동작 명령들을 실행한다.The various modules described herein (eg, encoders, decoders, processing modules, etc.) may be a single processing device or a plurality of processing devices. Such processing devices include microprocessors, micro-controllers, digital signal processors, microcomputers, central processing units, field programmable gate arrays (FPGAs), programmable logic devices (PLDs), state machines, logic circuits, analog circuits, Digital circuitry and / or any device that manipulates signals (analog and / or digital) based on operational instructions. Operation instructions may be stored in memory. The memory may be a single memory device or a plurality of memory devices. Such a memory device may be read-only memory (ROM), random access memory (RAM), volatile memory, nonvolatile memory, static memory, dynamic memory, flash memory, and / or any device that stores digital information. When the processing module implements one or more functions through state machines, analog circuits, digital circuits, and / or logic circuits, the memory that stores corresponding operation instructions may be state machine, analog circuits, digital circuits, and / or logic. It is built into a circuit that includes a circuit. In such an embodiment, the memory stores operational instructions corresponding to at least some of the steps and / or functions described and / or depicted herein, and the processing module coupled to the memory stores the steps described and / or shown herein and And / or execute operating instructions corresponding to at least some of the functions.

본 발명은 지금까지 특정된 기능들의 수행 및 이들 사이의 관계들을 예시한 방법 단계들을 이용하여 위와 같이 설명되었다. 이러한 기능적인 구성 블록들 및 방법 단계들의 경계 및 순서(boundaries and sequences)는 설명의 편의를 위해 임의적으로 설명되었다. 이러한 특정 기능들 및 이들 사이의 관계들이 적절하게 수행되는 한, 그와 다른 경계 및 순서도 정의될 수 있다. 그러한 어떠한 다른 경계 또는 순서들도 청구 범위에 기재된 발명의 영역 및 사상 내에 포함된다.The present invention has been described above with the use of method steps illustrating the performance of the specified functions and the relationships between them. The boundaries and sequences of these functional building blocks and method steps have been arbitrarily described for convenience of description. As long as these specific functions and the relationships between them are performed properly, other boundaries and orders may be defined. Any other such boundaries or sequences are included within the scope and spirit of the invention as set forth in the claims.

본 발명은 또한 몇몇 중요 기능들의 수행을 예시한 기능적인 구성 블록들을 이용하여 위와 같이 설명되었다. 이러한 구성 블록들의 경계는 설명의 편의를 위해 임의적으로 정의되었다. 상기 중요 기능들이 적절히 수행되는한, 이와 다른 경계도 정의될 수 있다. 유사하게, 순서도의 블록들도 역시 중요한 기능(functionality)을 예시하기 위해 정의되었다. 순서도 블록의 경계들 및 순서는 다른 식으로 정의되었어도 여전히 그러한 중요한 기능을 수행할 수 있을 것이다. 기능적인 구성 블록들과 순서도 블록들 및 순서들에 대한 그러한 다른 식의 정의들은 따라서 청구 범위 에 기재된 발명의 영역 및 사상 내에 포함된다.The present invention has also been described above using functional building blocks illustrating the performance of some important functions. The boundaries of these building blocks have been arbitrarily defined for convenience of description. Other boundaries may also be defined, as long as the critical functions are performed properly. Similarly, blocks in the flowchart have also been defined to illustrate important functionality. The boundaries and order of the flowchart block may still perform such an important function, although defined differently. Such other definitions of functional building blocks and flowchart blocks and sequences are thus included within the scope and spirit of the invention as set forth in the claims.

당해 기술 분야의 통상의 기술을 가진 자는 또한 이러한 기능적 구성 블록들 및 이 명세서에 있는 그 밖의 예시적인 블록들, 모듈 및 구성품은, 예시된 대로 구현되거나, 또는 개별 부품, 주문형 집적 회로(application specific integrate circuits, ASIC), 적절한 소프트웨어나 이와 유사한 것을 실행하는 프로세서들, 또는 이들의 조합들에 의해 구현될 수 있다.Those skilled in the art will also appreciate that these functional building blocks and other exemplary blocks, modules, and components in this specification may be implemented as illustrated, or may be discrete components, application specific integrated circuits. circuits, ASICs), processors executing appropriate software or the like, or combinations thereof.

더 나아가, 비록 상술한 실시예를 이용하여 간단 명료함 및 이해를 목적으로 상세하게 설명하였지만, 본 발명은 이러한 실시예들에 한정되지 않는다. 본 발명의 사상과 범위가 첨부된 청구 범위의 기재에 의해서만 제한되는 바대로, 당해 기술 분야의 동상의 지식을 가진 자에게 본 발명의 사상과 범위 내에서 다양한 변화와 변경이 실시될 수 있음은 명백할 것이다.Furthermore, although described in detail for purposes of simplicity and clarity and understanding using the embodiments described above, the invention is not limited to these embodiments. As the spirit and scope of the invention are limited only by the description of the appended claims, it will be apparent to those skilled in the art that various changes and modifications may be made within the spirit and scope of the invention. something to do.

첨부 자료 소개Attachment Introduction

병합 패턴이 다중 LDPC 코딩 신호들을 디코딩하는데 사용하기 위한 단일 장치에서 사용하는 하드웨어의 제공을 지시하도록 생성될 수 있는 여러 수단 및 실시예들이 있다. 한가지 가능한 실시예는 IEEE 802.11n 표준 내에서 적용된 모든 12 코드들을 디코딩하도록 지시된다.There are several means and embodiments in which a merge pattern can be generated to instruct the provision of hardware for use in a single device for use in decoding multiple LDPC coded signals. One possible embodiment is directed to decode all 12 codes applied within the IEEE 802.11n standard.

이 실시예에서, 병합 검색을 적용할 때, 단지 102 메모리들이 직접적 중첩 접근 방식을 사용할 때 적용되는 205에 대비되어 요구된다.In this embodiment, when applying merge search, only 102 memories are required as opposed to 205 which is applied when using the direct overlapping approach.

첨부 자료(병합 패턴)Attached document (merging pattern)

병합되지 않은 메모리, 행 0 열 O, 코드 0 (0, 0), 코드 1 (0, 0), 코드 2 (0, 0), 코드 3 (0, 0), 코드 4 (0, 0), 코드 5 (0, 0), 코드 6 (0, 0), 코드 7 (0, 0), 코드 8 (0, 0), 코드 9 (0, 0), 코드 10 (0, 0), 코드 11 (0, 0) Unmerged memory, row 0 column O, code 0 (0, 0), code 1 (0, 0), code 2 (0, 0), code 3 (0, 0), code 4 (0, 0), Code 5 (0, 0), Code 6 (0, 0), Code 7 (0, 0), Code 8 (0, 0), Code 9 (0, 0), Code 10 (0, 0), Code 11 (0, 0)

병합되지 않은 메모리, 행 0 열 2, 코드 1 (0, 2), 코드 2 (0, 2), 코드 3 (0, 2), 코드 4 (0, 2), 코드 5 (0, 2), 코드 6 (0, 2), 코드 7 (0, 2), 코드 8 (0, 2), 코드 9 (0, 2), 코드 10 (0, 2), 코드 11 (0, 2) Unmerged memory, row 0 column 2, code 1 (0, 2), code 2 (0, 2), code 3 (0, 2), code 4 (0, 2), code 5 (0, 2), Code 6 (0, 2), Code 7 (0, 2), Code 8 (0, 2), Code 9 (0, 2), Code 10 (0, 2), Code 11 (0, 2)

병합되지 않은 메모리, 행 0 열 3, 코드 1 (0, 3), 코드 2 (0, 3), 코드 3 (0, 3), 코드 5 (0, 3), 코드 6 (0, 3), 코드 7 (0, 3), 코드 9 (0, 3), 코드 10 (0, 3), 코드 11 (0, 3) Unmerged memory, row 0 column 3, code 1 (0, 3), code 2 (0, 3), code 3 (0, 3), code 5 (0, 3), code 6 (0, 3), Code 7 (0, 3), Code 9 (0, 3), Code 10 (0, 3), Code 11 (0, 3)

병합되지 않은 메모리, 행 0 열 4, 코드 0 (0, 4), 코드 2 (0, 4), 코드 3 (0, 4), 코드 4 (0, 4), 코드 5 (0,4), 코드 6 (0, 4), 코드 7 (0, 4), 코드 8 (0,4), 코드 9 (0, 4), 코드 10 (0, 4), 코드 11 (0,4) Unmerged memory, row 0 column 4, code 0 (0, 4), code 2 (0, 4), code 3 (0, 4), code 4 (0, 4), code 5 (0, 4), Code 6 (0, 4), Code 7 (0, 4), Code 8 (0, 4), Code 9 (0, 4), Code 10 (0, 4), Code 11 (0, 4)

병합되지 않은 메모리, 행 0 열 7, 코드 0 (0, 7), 코드 1 (0, 7), 코드 2 (0, 7), 코드 3 (0, 7), 코드 7 (0, 7), 코드 8 (0, 7), 코드 9 (0, 7), 코드 10 (0, 7), 코드 11 (0, 7) Unmerged memory, row 0 column 7, code 0 (0, 7), code 1 (0, 7), code 2 (0, 7), code 3 (0, 7), code 7 (0, 7), Code 8 (0, 7), Code 9 (0, 7), Code 10 (0, 7), Code 11 (0, 7)

병합되지 않은 메모리, 행 0 열 8, 코드 0 (0, 8), 코드 3 (0, 8), 코드 4 (0, 8), 코드 5 (0, 8), 코드 6 (0, 8), 코드 7 (0, 8), 코드 8 (0, 8), 코드 9 (0, 8), 코드 11 (0, 8) Unmerged memory, row 0 column 8, code 0 (0, 8), code 3 (0, 8), code 4 (0, 8), code 5 (0, 8), code 6 (0, 8), Code 7 (0, 8), Code 8 (0, 8), Code 9 (0, 8), Code 11 (0, 8)

병합되지 않은 메모리, 행 0 열 23, 코드 0 (0, 23), 코드 1 (0, 23), 코드 2 (0, 23), 코드 3 (0, 23), 코드 4 (0, 23), 코드 5 (0, 23), 코드 6 (0, 23), 코드 7 (0, 23), 코드 8 (0, 23), 코드 9 (0, 23), 코드 10 (0, 23), 코드 11 (0,23) Unmerged memory, row 0 column 23, code 0 (0, 23), code 1 (0, 23), code 2 (0, 23), code 3 (0, 23), code 4 (0, 23), Code 5 (0, 23), Code 6 (0, 23), Code 7 (0, 23), Code 8 (0, 23), Code 9 (0, 23), Code 10 (0, 23), Code 11 (0,23)

병합되지 않은 메모리, 행 1 열 O, 코드 0 (1, 0), 코드 1 (1, 0), 코드 2 (1, 0), 코드 3 (1, 0), 코드 5 (1,0), 코드 6 (1, 0), 코드 7 (1, 0), 코드 8 (1, 0), 코드 9 (1, 0), 코드 10 (1, 0), 코드 11 (1, 0) Unmerged memory, row 1 column O, code 0 (1, 0), code 1 (1, 0), code 2 (1, 0), code 3 (1, 0), code 5 (1,0), Code 6 (1, 0), Code 7 (1, 0), Code 8 (1, 0), Code 9 (1, 0), Code 10 (1, 0), Code 11 (1, 0)

병합되지 않은 메모리, 행 1 열 1, 코드 1 (1, 1), 코드 2 (1, 1), 코드 3 (1, 1), 코드 4 (1, 1), 코드 5 (1, 1), 코드 6 (1, 1), 코드 7 (1, 1), 코드 8 (1, 1), 코드 9 (1, 1), 코드 10 (1, 1), 코드 11 (1, 1) Unmerged memory, row 1 column 1, code 1 (1, 1), code 2 (1, 1), code 3 (1, 1), code 4 (1, 1), code 5 (1, 1), Code 6 (1, 1), Code 7 (1, 1), Code 8 (1, 1), Code 9 (1, 1), Code 10 (1, 1), Code 11 (1, 1)

병합되지 않은 메모리, 행 1 열 2, 코드 0 (1, 2), 코드 1 (1, 2), 코드 2 (1, 2), 코드 3 (1, 2), 코드 5 (1, 2), 코드 6 (1, 2), 코드 7 (1, 2), 코드 9 (1, 2), 코드 10 (1, 2), 코드 11 (1,2) Unmerged memory, row 1 column 2, code 0 (1, 2), code 1 (1, 2), code 2 (1, 2), code 3 (1, 2), code 5 (1, 2), Code 6 (1, 2), Code 7 (1, 2), Code 9 (1, 2), Code 10 (1, 2), Code 11 (1,2)

병합되지 않은 메모리, 행 1 열 4, 코드 0 (1, 4), 코드 1 (1,4), 코드 2 (1, 4), 코드 3 (1, 4), 코드 4 (1, 4), 코드 5 (1,4), 코드 6 (1, 4), 코드 7 (1,4), 코드 8 (1,4), 코드 9 (1, 4), 코드 10 (1, 4), 코드 11 (1,4) Unmerged memory, row 1 column 4, code 0 (1, 4), code 1 (1,4), code 2 (1, 4), code 3 (1, 4), code 4 (1, 4), Code 5 (1,4), Code 6 (1, 4), Code 7 (1,4), Code 8 (1,4), Code 9 (1, 4), Code 10 (1, 4), Code 11 (1,4)

병합되지 않은 메모리, 행 1 열 5, 코드 0 (1, 5), 코드 3 (1, 5), 코드 6 (1, 5), 코드 7 (1, 5), 코드 9 (1, 5), 코드 10 (1, 5), 코드 11 (1,5) Unmerged memory, row 1 column 5, code 0 (1, 5), code 3 (1, 5), code 6 (1, 5), code 7 (1, 5), code 9 (1, 5), Code 10 (1, 5), Code 11 (1,5)

병합되지 않은 메모리, 행 1 열 7, 코드 0 (1, 7), 코드 2 (1, 7), 코드 3 (1, 7), 코드 4 (1, 7), 코드 5 (1, 7), 코드 6 (1, 7), 코드 7 (1, 7), 코드 9 (1, 7), 코드 10 (1, 7), 코드 11 (1, 7) Unmerged memory, row 1 column 7, code 0 (1, 7), code 2 (1, 7), code 3 (1, 7), code 4 (1, 7), code 5 (1, 7), Code 6 (1, 7), Code 7 (1, 7), Code 9 (1, 7), Code 10 (1, 7), Code 11 (1, 7)

병합되지 않은 메모리, 행 1 열 8, 코드 0 (1, 8), 코드 1 (1, 8), 코드 2 (1, 8), 코드 3 (1, 8), 코드 4 (1,8), 코드 7 (1,8), 코드 10 (1,8), 코드 11 (1,8) Unmerged memory, row 1 column 8, code 0 (1, 8), code 1 (1, 8), code 2 (1, 8), code 3 (1, 8), code 4 (1,8), Code 7 (1,8), Code 10 (1,8), Code 11 (1,8)

병합되지 않은 메모리, 행 1 열 22, 코드 0 (1, 22), 코드 1 (1,22), 코드 2 (1, 22), 코드 3 (1, 22), 코드 4 (1, 22), 코드 5 (1, 22), 코드 6 (1, 22), 코드 7 (1, 22), 코드 8 (1, 22), 코드 9 (1, 22), 코드 10 (1, 22), 코드 11 (1,22) Unmerged memory, row 1 column 22, code 0 (1, 22), code 1 (1,22), code 2 (1, 22), code 3 (1, 22), code 4 (1, 22), Code 5 (1, 22), Code 6 (1, 22), Code 7 (1, 22), Code 8 (1, 22), Code 9 (1, 22), Code 10 (1, 22), Code 11 (1,22)

병합되지 않은 메모리, 행 1 열 23, 코드 0 (1, 23), 코드 1 (1, 23), 코드 2 (1, 23), 코드 3 (1, 23), 코드 4 (1, 23), 코드 5 (1, 23), 코드 6 (1, 23), 코드 7 (1, 23), 코드 8 (1, 23), 코드 9 (1, 23), 코드 10 (1, 23), 코드 11 (1,23) Unmerged memory, row 1 column 23, code 0 (1, 23), code 1 (1, 23), code 2 (1, 23), code 3 (1, 23), code 4 (1, 23), Code 5 (1, 23), Code 6 (1, 23), Code 7 (1, 23), Code 8 (1, 23), Code 9 (1, 23), Code 10 (1, 23), Code 11 (1,23)

병합되지 않은 메모리, 행 2 열 O, 코드 0 (2, 0), 코드 1 (2, 0), 코드 2 (2, 0), 코드 3 (2, 0), 코드 4 (2, 0), 코드 5 (2, 0), 코드 6 (2, 0), 코드 7 (2, 0), 코드 9 (2, 0), 코드 10 (2, 0), 코드 11 (2, 0) Unmerged memory, row 2 column O, code 0 (2, 0), code 1 (2, 0), code 2 (2, 0), code 3 (2, 0), code 4 (2, 0), Code 5 (2, 0), Code 6 (2, 0), Code 7 (2, 0), Code 9 (2, 0), Code 10 (2, 0), Code 11 (2, 0)

병합되지 않은 메모리, 행 2 열 1, 코드 1 (2, 1), 코드 2 (2, 1), 코드 3 (2, 1), 코드 5 (2, 1), 코드 6 (2, 1), 코드 7 (2, 1), 코드 8 (2, 1), 코드 9 (2, 1), 코드 10 (2, 1), 코드 11 (2, 1) Unmerged memory, row 2, column 1, code 1 (2, 1), code 2 (2, 1), code 3 (2, 1), code 5 (2, 1), code 6 (2, 1), Code 7 (2, 1), Code 8 (2, 1), Code 9 (2, 1), Code 10 (2, 1), Code 11 (2, 1)

병합되지 않은 메모리, 행 2 열 2, 코드 1 (2, 2), 코드 2 (2, 2), 코드 3 (2, 2), 코드 4 (2, 2), 코드 5 (2, 2), 코드 6 (2, 2), 코드 7 (2, 2), 코드 9 (2, 2), 코드 10 (2, 2), 코드 11 (2, 2) Unmerged memory, row 2, column 2, code 1 (2, 2), code 2 (2, 2), code 3 (2, 2), code 4 (2, 2), code 5 (2, 2), Code 6 (2, 2), Code 7 (2, 2), Code 9 (2, 2), Code 10 (2, 2), Code 11 (2, 2)

병합되지 않은 메모리, 행 2 열 3, 코드 1 (2, 3), 코드 2 (2, 3), 코드 3 (2, 3), 코드 5 (2, 3), 코드 6 (2, 3), 코드 7 (2, 3), 코드 8 (2, 3), 코드 9 (2, 3), 코드 10 (2, 3), 코드 11 (2, 3) Unmerged memory, row 2, column 3, code 1 (2, 3), code 2 (2, 3), code 3 (2, 3), code 5 (2, 3), code 6 (2, 3), Code 7 (2, 3), Code 8 (2, 3), Code 9 (2, 3), Code 10 (2, 3), Code 11 (2, 3)

병합되지 않은 메모리, 행 2 열 4, 코드 0 (2, 4), 코드 2 (2, 4), 코드 3 (2, 4), 코드 4 (2, 4), 코드 5 (2, 4), 코드 6 (2, 4), 코드 7 (2, 4), 코드 8 (2,4), 코드 9 (2, 4), 코드 10 (2, 4), 코드 11 (2,4) Unmerged memory, row 2, column 4, code 0 (2, 4), code 2 (2, 4), code 3 (2, 4), code 4 (2, 4), code 5 (2, 4), Code 6 (2, 4), Code 7 (2, 4), Code 8 (2,4), Code 9 (2, 4), Code 10 (2, 4), Code 11 (2,4)

병합되지 않은 메모리, 행 2 열 8, 코드 0 (2, 8), 코드 2 (2, 8), 코드 3 (2, 8), 코드 4 (2, 8), 코드 6 (2, 8), 코드 7 (2, 8), 코드 8 (2, 8), 코드 10 (2, 8), 코드 11 (2, 8) Unmerged memory, row 2 column 8, code 0 (2, 8), code 2 (2, 8), code 3 (2, 8), code 4 (2, 8), code 6 (2, 8), Code 7 (2, 8), Code 8 (2, 8), Code 10 (2, 8), Code 11 (2, 8)

병합되지 않은 메모리, 행 2 열 21, 코드 0 (2, 21), 코드 1 (2, 21), 코드 2 (2, 21), 코드 3 (2, 21), 코드 4 (2, 21), 코드 5 (2, 21), 코드 6 (2, 21), 코드 7 (2, 21), 코드 8 (2,21), 코드 9 (2, 21), 코드 10 (2, 21), 코드 11 (2,21) Unmerged memory, row 2 column 21, code 0 (2, 21), code 1 (2, 21), code 2 (2, 21), code 3 (2, 21), code 4 (2, 21), Code 5 (2, 21), Code 6 (2, 21), Code 7 (2, 21), Code 8 (2,21), Code 9 (2, 21), Code 10 (2, 21), Code 11 (2,21)

병합되지 않은 메모리, 행 2 열 22, 코드 0 (2, 22), 코드 1 (2,22), 코드 2 (2, 22), 코드 3 (2, 22), 코드 4 (2, 22), 코드 5 (2, 22), 코드 6 (2, 22), 코드 7 (2, 22), 코드 8 (2, 22), 코드 9 (2, 22), 코드 10 (2, 22), 코드 11 (2, 22) Unmerged memory, row 2 column 22, code 0 (2, 22), code 1 (2,22), code 2 (2, 22), code 3 (2, 22), code 4 (2, 22), Code 5 (2, 22), Code 6 (2, 22), Code 7 (2, 22), Code 8 (2, 22), Code 9 (2, 22), Code 10 (2, 22), Code 11 (2, 22)

병합되지 않은 메모리, 행 3 열 O, 코드 0 (3, 0), 코드 1 (3, 0), 코드 2 (3, 0), 코드 3 (3, 0), 코드 4 (3, 0), 코드 5 (3, 0), 코드 6 (3, 0), 코드 7 (3, 0), 코드 8 (3, 0), 코드 9 (3, 0), 코드 10 (3, 0), 코드 11 (3, 0) Unmerged memory, row 3 column O, code 0 (3, 0), code 1 (3, 0), code 2 (3, 0), code 3 (3, 0), code 4 (3, 0), Code 5 (3, 0), Code 6 (3, 0), Code 7 (3, 0), Code 8 (3, 0), Code 9 (3, 0), Code 10 (3, 0), Code 11 (3, 0)

병합되지 않은 메모리, 행 3 열 1, 코드 0 (3, 1), 코드 1 (3, 1), 코드 2 (3, 1), 코드 3 (3, 1), 코드 5 (3, 1), 코드 6 (3, 1), 코드 7 (3, 1), 코드 9 (3, 1), 코드 10 (3, 1), 코드 11 (3, 1) Unmerged memory, row 3, column 1, code 0 (3, 1), code 1 (3, 1), code 2 (3, 1), code 3 (3, 1), code 5 (3, 1), Code 6 (3, 1), Code 7 (3, 1), Code 9 (3, 1), Code 10 (3, 1), Code 11 (3, 1)

병합되지 않은 메모리, 행 3 열 2, 코드 1 (3, 2), 코드 2 (3, 2), 코드 3 (3, 2), 코드 5 (3,2), 코드 6 (3, 2), 코드 7 (3, 2), 코드 9 (3, 2), 코드 10 (3, 2), 코드 11 (3, 2) Unmerged memory, row 3, column 2, code 1 (3, 2), code 2 (3, 2), code 3 (3, 2), code 5 (3,2), code 6 (3, 2), Code 7 (3, 2), Code 9 (3, 2), Code 10 (3, 2), Code 11 (3, 2)

병합되지 않은 메모리, 행 3 열 3, 코드 0 (3, 3), 코드 2 (3, 3), 코드 3 (3, 3), 코드 4 (3, 3), 코드 5 (3, 3), 코드 6 (3, 3), 코드 7 (3, 3), 코드 9 (3, 3), 코드 10 (3, 3), 코드 11 (3, 3) Unmerged memory, row 3, column 3, code 0 (3, 3), code 2 (3, 3), code 3 (3, 3), code 4 (3, 3), code 5 (3, 3), Code 6 (3, 3), Code 7 (3, 3), Code 9 (3, 3), Code 10 (3, 3), Code 11 (3, 3)

병합되지 않은 메모리, 행 3 열 4, 코드 0 (3, 4), 코드 1 (3, 4), 코드 2 (3, 4), 코드 3 (3, 4), 코드 4 (3, 4), 코드 5 (3,4), 코드 6 (3, 4), 코드 7 (3, 4), 코드 8 (3, 4), 코드 10 (3, 4), 코드 11 (3, 4) Unmerged memory, row 3, column 4, code 0 (3, 4), code 1 (3, 4), code 2 (3, 4), code 3 (3, 4), code 4 (3, 4), Code 5 (3,4), Code 6 (3, 4), Code 7 (3, 4), Code 8 (3, 4), Code 10 (3, 4), Code 11 (3, 4)

병합되지 않은 메모리, 행 3 열 5, 코드 0 (3, 5), 코드 2 (3, 5), 코드 3 (3, 5), 코드 5 (3, 5), 코드 6 (3, 5), 코드 7 (3, 5), 코드 8 (3, 5), 코드 9 (3, 5), 코드 10 (3, 5), 코드 11 (3, 5) Unmerged memory, row 3, column 5, code 0 (3, 5), code 2 (3, 5), code 3 (3, 5), code 5 (3, 5), code 6 (3, 5), Code 7 (3, 5), Code 8 (3, 5), Code 9 (3, 5), Code 10 (3, 5), Code 11 (3, 5)

병합되지 않은 메모리, 행 3 열 8, 코드 0 (3, 8), 코드 1 (3, 8), 코드 2 (3, 8), 코드 3 (3, 8), 코드 4 (3, 8), 코드 7 (3, 8), 코드 8 (3, 8), 코드 9 (3, 8), 코드 10 (3, 8), 코드 11 (3, 8) Unmerged memory, row 3 column 8, code 0 (3, 8), code 1 (3, 8), code 2 (3, 8), code 3 (3, 8), code 4 (3, 8), Code 7 (3, 8), Code 8 (3, 8), Code 9 (3, 8), Code 10 (3, 8), Code 11 (3, 8)

병합되지 않은 메모리, 행 3 열 20, 코드 0 (3, 20), 코드 1 (3, 20), 코드 2 (3, 20), 코드 3 (3, 20), 코드 4 (3, 20), 코드 5 (3, 20), 코드 6 (3, 20), 코드 7 (3, 20), 코드 8 (3, 20), 코드 9 (3, 20), 코드 10 (3, 20), 코드 11 (3,20) Unmerged memory, row 3 column 20, code 0 (3, 20), code 1 (3, 20), code 2 (3, 20), code 3 (3, 20), code 4 (3, 20), Code 5 (3, 20), Code 6 (3, 20), Code 7 (3, 20), Code 8 (3, 20), Code 9 (3, 20), Code 10 (3, 20), Code 11 (3,20)

병합되지 않은 메모리, 행 3 열 21, 코드 0 (3, 21), 코드 1 (3, 21), 코드 2 (3, 21), 코드 3 (3, 21), 코드 4 (3, 21), 코드 5 (3, 21), 코드 6 (3, 21), 코드 7 (3, 21), 코드 8 (3,21), 코드 9 (3, 21), 코드 10 (3, 21), 코드 11 (3,21) Unmerged memory, row 3 column 21, code 0 (3, 21), code 1 (3, 21), code 2 (3, 21), code 3 (3, 21), code 4 (3, 21), Code 5 (3, 21), Code 6 (3, 21), Code 7 (3, 21), Code 8 (3,21), Code 9 (3, 21), Code 10 (3, 21), Code 11 (3,21)

병합되지 않은 메모리, 행 4 열 1, 코드 0 (4, 1), 코드 1 (4, 1), 코드 2 (4, 1), 코드 3 (4, 1), 코드 5 (4, 1), 코드 6 (4, 1), 코드 7 (4, 1), 코드 9 (4, 1), 코드 10 (4, 1), 코드 11 (4, 1) Unmerged memory, row 4 column 1, code 0 (4, 1), code 1 (4, 1), code 2 (4, 1), code 3 (4, 1), code 5 (4, 1), Code 6 (4, 1), Code 7 (4, 1), Code 9 (4, 1), Code 10 (4, 1), Code 11 (4, 1)

병합되지 않은 메모리, 행 4 열 2, 코드 1 (4,2), 코드 2 (4, 2), 코드 3 (4, 2), 코드 4 (4, 2), 코드 5 (4, 2), 코드 6 (4, 2), 코드 7 (4, 2), 코드 9 (4, 2), 코드 10 (4, 2), 코드 11 (4,2) Unmerged memory, row 4 column 2, code 1 (4,2), code 2 (4, 2), code 3 (4, 2), code 4 (4, 2), code 5 (4, 2), Code 6 (4, 2), Code 7 (4, 2), Code 9 (4, 2), Code 10 (4, 2), Code 11 (4,2)

병합되지 않은 메모리, 행 4 열 3, 코드 1 (4, 3), 코드 2 (4, 3), 코드 3 (4, 3), 코드 6 (4,3), 코드 7 (4, 3), 코드 9 (4, 3), 코드 10 (4, 3), 코드 11 (4,3) Unmerged memory, row 4 column 3, code 1 (4, 3), code 2 (4, 3), code 3 (4, 3), code 6 (4,3), code 7 (4, 3), Code 9 (4, 3), Code 10 (4, 3), Code 11 (4,3)

병합되지 않은 메모리, 행 4 열 4, 코드 0 (4, 4), 코드 2 (4, 4), 코드 3 (4,4), 코드 4 (4, 4), 코드 5 (4,4), 코드 6 (4, 4), 코드 7 (4, 4), 코드 8 (4,4), 코드 9 (4, 4), 코드 10 (4, 4), 코드 11 (4,4) Unmerged memory, row 4 column 4, code 0 (4, 4), code 2 (4, 4), code 3 (4,4), code 4 (4, 4), code 5 (4,4), Code 6 (4, 4), Code 7 (4, 4), Code 8 (4,4), Code 9 (4, 4), Code 10 (4, 4), Code 11 (4,4)

병합되지 않은 메모리, 행 4 열 5, 코드 1 (4, 5), 코드 2 (4, 5), 코드 3 (4, 5), 코드 5 (4, 5), 코드 6 (4, 5), 코드 7 (4, 5), 코드 8 (4, 5), 코드 10 (4, 5), 코드 11 (4, 5) Unmerged memory, row 4 column 5, code 1 (4, 5), code 2 (4, 5), code 3 (4, 5), code 5 (4, 5), code 6 (4, 5), Code 7 (4, 5), Code 8 (4, 5), Code 10 (4, 5), Code 11 (4, 5)

병합되지 않은 메모리, 행 5 열 O, 코드 0 (5, 0), 코드 1 (5, 0), 코드 2 (5, 0), 코드 3 (5, 0), 코드 4 (5, 0), 코드 5 (5, 0), 코드 6 (5, 0), 코드 7 (5, 0), 코드 8 (5, 0), 코드 9 (5,0), 코드 10 (5, 0), 코드 11 (5,0) Unmerged memory, row 5 column O, code 0 (5, 0), code 1 (5, 0), code 2 (5, 0), code 3 (5, 0), code 4 (5, 0), Code 5 (5, 0), Code 6 (5, 0), Code 7 (5, 0), Code 8 (5, 0), Code 9 (5,0), Code 10 (5, 0), Code 11 (5,0)

병합되지 않은 메모리, 행 5 열 1, 코드 1 (5, 1), 코드 2 (5, 1), 코드 3 (5, 1), 코드 4 (5, 1), 코드 5 (5, 1), 코드 6 (5, 1), 코드 7 (5, 1), 코드 8 (5, 1), 코드 9 (5, 1), 코드 10 (5, 1), 코드 11 (5, 1) Unmerged memory, row 5, column 1, code 1 (5, 1), code 2 (5, 1), code 3 (5, 1), code 4 (5, 1), code 5 (5, 1), Code 6 (5, 1), Code 7 (5, 1), Code 8 (5, 1), Code 9 (5, 1), Code 10 (5, 1), Code 11 (5, 1)

병합되지 않은 메모리, 행 5 열 2, 코드 1 (5, 2), 코드 2 (5, 2), 코드 3 (5, 2), 코드 5 (5, 2), 코드 6 (5, 2), 코드 7 (5, 2), 코드 8 (5, 2), 코드 9 (5, 2), 코드 10 (5, 2), 코드 11 (5, 2) Unmerged memory, row 5, column 2, code 1 (5, 2), code 2 (5, 2), code 3 (5, 2), code 5 (5, 2), code 6 (5, 2), Code 7 (5, 2), Code 8 (5, 2), Code 9 (5, 2), Code 10 (5, 2), Code 11 (5, 2)

병합되지 않은 메모리, 행 5 열 4, 코드 0 (5, 4), 코드 1 (5, 4), 코드 2 (5, 4), 코드 3 (5, 4), 코드 5 (5, 4), 코드 6 (5, 4), 코드 7 (5, 4), 코드 9 (5, 4), 코드 10 (5, 4), 코드 11 (5,4) Unmerged memory, row 5, column 4, code 0 (5, 4), code 1 (5, 4), code 2 (5, 4), code 3 (5, 4), code 5 (5, 4), Code 6 (5, 4), Code 7 (5, 4), Code 9 (5, 4), Code 10 (5, 4), Code 11 (5,4)

병합되지 않은 메모리, 행 5 열 6, 코드 1 (5, 6), 코드 2 (5, 6), 코드 3 (5, 6), 코드 5 (5, 6), 코드 6 (5, 6), 코드 7 (5, 6), 코드 8 (5, 6), 코드 9 (5, 6), 코드 11 (5, 6) Unmerged memory, row 5, column 6, code 1 (5, 6), code 2 (5, 6), code 3 (5, 6), code 5 (5, 6), code 6 (5, 6), Code 7 (5, 6), Code 8 (5, 6), Code 9 (5, 6), Code 11 (5, 6)

병합되지 않은 메모리, 행 5 열 8, 코드 0 (5, 8), 코드 1 (5, 8), 코드 2 (5, 8), 코드 3 (5, 8), 코드 4 (5, 8), 코드 7 (5, 8), 코드 8 (5, 8), 코드 11 (5, 8) Unmerged memory, row 5, column 8, code 0 (5, 8), code 1 (5, 8), code 2 (5, 8), code 3 (5, 8), code 4 (5, 8), Code 7 (5, 8), Code 8 (5, 8), Code 11 (5, 8)

병합된 메모리, 코드 0 (11, 8), 코드 1 (2, 5), 코드 3 (2, 5), 코드 4 (11, 8), 코드 6 (2, 5), 코드 7 (2, 5), 코드 8 (11, 8), 코드 10 (2, 5), 코드 11 (2, 5) Merged Memory, Code 0 (11, 8), Code 1 (2, 5), Code 3 (2, 5), Code 4 (11, 8), Code 6 (2, 5), Code 7 (2, 5 ), Code 8 (11, 8), code 10 (2, 5), code 11 (2, 5)

병합된 메모리, 코드 0 (8, 3), 코드 1 (1, 3), 코드 2 (1, 3), 코드 3 (1, 3), 코드 4 (8, 3), 코드 5 (1,3), 코드 6 (1, 3), 코드 7 (1, 3), 코드 8 (1, 3), 코드 9 (1, 3), 코드 10 (1, 3), 코드 11 (1,3) Merged Memory, Code 0 (8, 3), Code 1 (1, 3), Code 2 (1, 3), Code 3 (1, 3), Code 4 (8, 3), Code 5 (1,3 ), Code 6 (1, 3), Code 7 (1, 3), Code 8 (1, 3), Code 9 (1, 3), Code 10 (1, 3), Code 11 (1,3)

병합된 메모리, 코드 0 (4, 19), 코드 1 (4, 19), 코드 2 (4, 19), 코드 3 (3, 19), 코드 4 (4, 19), 코드 5 (4, 19), 코드 6 (4, 19), 코드 7 (3, 19), 코드 8 (4, 19), 코드 9 (4, 19), 코드 10 (4, 19) Merged Memory, Code 0 (4, 19), Code 1 (4, 19), Code 2 (4, 19), Code 3 (3, 19), Code 4 (4, 19), Code 5 (4, 19 ), Code 6 (4, 19), Code 7 (3, 19), Code 8 (4, 19), Code 9 (4, 19), Code 10 (4, 19)

병합된 메모리, 코드 0 (10, 0), 코드 1 (7, 2), 코드 2 (4, 17), 코드 3 (3, 17), 코드 4 (10, 0), 코드 5 (7, 2), 코드 6 (3, 17), 코드 8 (10, 0), 코드 9 (7,2), 코드 10 (3, 17), 코드 11 (3, 17) Merged Memory, Code 0 (10, 0), Code 1 (7, 2), Code 2 (4, 17), Code 3 (3, 17), Code 4 (10, 0), Code 5 (7, 2 ), Code 6 (3, 17), Code 8 (10, 0), Code 9 (7,2), Code 10 (3, 17), Code 11 (3, 17)

병합된 메모리, 코드 0 (9, 0), 코드 1 (6, 1), 코드 3 (0, 20), 코드 4 (9, 0), 코드 5 (6, 1), 코드 6 (5, 7), 코드 7 (0, 20), 코드 8 (9, 0), 코드 9 (6, 1), 코드 10 (4, 11), 코드 11 (0,20) Merged Memory, Code 0 (9, 0), Code 1 (6, 1), Code 3 (0, 20), Code 4 (9, 0), Code 5 (6, 1), Code 6 (5, 7 ), Code 7 (0, 20), code 8 (9, 0), code 9 (6, 1), code 10 (4, 11), code 11 (0,20)

병합된 메모리, 코드 0 (6, 18), 코드 1 (6, 18), 코드 2 (2, 18), 코드 3 (2, 18), 코드 4 (6, 18), 코드 5 (6, 18), 코드 6 (2, 18), 코드 7 (2, 18), 코드 8 (6, 18), 코드 9 (6, 18), 코드 10 (2, 18), 코드 11 (2, 18) Merged Memory, Code 0 (6, 18), Code 1 (6, 18), Code 2 (2, 18), Code 3 (2, 18), Code 4 (6, 18), Code 5 (6, 18 ), Code 6 (2, 18), Code 7 (2, 18), Code 8 (6, 18), Code 9 (6, 18), Code 10 (2, 18), Code 11 (2, 18)

병합된 메모리, 코드 0 (4, 20), 코드 1 (4, 20), 코드 2 (4, 20), 코드 3 (1, 20), 코드 4 (4, 20), 코드 5 (4, 20), 코드 6 (4, 20), 코드 7 (1, 20), 코드 8 (4, 20), 코드 9 (4, 20), 코드 10 (4, 20), 코드 11 (1, 20) Merged Memory, Code 0 (4, 20), Code 1 (4, 20), Code 2 (4, 20), Code 3 (1, 20), Code 4 (4, 20), Code 5 (4, 20 ), Code 6 (4, 20), Code 7 (1, 20), Code 8 (4, 20), Code 9 (4, 20), Code 10 (4, 20), Code 11 (1, 20)

병합된 메모리, 코드 0 (7, 0), 코드 1 (7,0), 코드 2 (0, 18), 코드 3 (0, 18), 코드 4 (7, 0), 코드 5 (7, 0), 코드 6 (0, 18), 코드 8 (7, 0), 코드 9 (7, 0), 코드 10 (0, 18), 코드 11 (0, 18) Merged Memory, Code 0 (7, 0), Code 1 (7,0), Code 2 (0, 18), Code 3 (0, 18), Code 4 (7, 0), Code 5 (7, 0 ), Code 6 (0, 18), code 8 (7, 0), code 9 (7, 0), code 10 (0, 18), code 11 (0, 18)

병합된 메모리, 코드 0 (11, 13), 코드 1 (7, 13), 코드 3 (3, 13), 코드 4 (11, 13), 코드 6 (3, 13), 코드 7 (3, 13), 코드 8 (11, 13), 코드 9 (7, 13), 코드 10 (3, 13), 코드 11 (3, 13) Merged Memory, Code 0 (11, 13), Code 1 (7, 13), Code 3 (3, 13), Code 4 (11, 13), Code 6 (3, 13), Code 7 (3, 13 ), Code 8 (11, 13), code 9 (7, 13), code 10 (3, 13), code 11 (3, 13)

병합된 메모리, 코드 0 (8, 0), 코드 1 (7, 1), 코드 2 (2, 16), 코드 3 (2, 16), 코드 4 (8, 0), 코드 5 (7, 1), 코드 6 (2, 16), 코드 7 (2, 16), 코드 8 (8, 0), 코드 9 (7, 1), 코드 10 (2, 16), 코드 11 (2, 16) Merged Memory, Code 0 (8, 0), Code 1 (7, 1), Code 2 (2, 16), Code 3 (2, 16), Code 4 (8, 0), Code 5 (7, 1 ), Code 6 (2, 16), Code 7 (2, 16), Code 8 (8, 0), Code 9 (7, 1), Code 10 (2, 16), Code 11 (2, 16)

병합된 메모리, 코드 0 (11,0), 코드 1 (5,3), 코드 2 (5,3), 코드 3 (2, 19), 코드 4 (11, 0), 코드 5 (5, 3), 코드 6 (5, 3), 코드 8 (11, 0), 코드 9 (5,3), 코드 10 (5, 3), 코드 11 (2, 19) Merged Memory, Code 0 (11,0), Code 1 (5,3), Code 2 (5,3), Code 3 (2, 19), Code 4 (11, 0), Code 5 (5, 3 ), Code 6 (5, 3), Code 8 (11, 0), Code 9 (5,3), Code 10 (5, 3), Code 11 (2, 19)

병합된 메모리, 코드 0 (6, 17), 코드 1 (6, 17), 코드 3 (2, 17), 코드 4 (6, 17), 코드 5 (6, 17), 코드 6 (4, 16), 코드 7 (2, 17), 코드 8 (6, 17), 코드 9 (6, 17), 코드 10 (2, 17), 코드 11 (2, 17) Merged Memory, Code 0 (6, 17), Code 1 (6, 17), Code 3 (2, 17), Code 4 (6, 17), Code 5 (6, 17), Code 6 (4, 16 ), Code 7 (2, 17), Code 8 (6, 17), Code 9 (6, 17), Code 10 (2, 17), Code 11 (2, 17)

병합된 메모리, 코드 0 (4, 0), 코드 1 (4,0), 코드 2 (4, 0), 코드 3 (1, 19), 코드 4 (4, 0), 코드 5 (4, 0), 코드 6 (4, 0), 코드 7 (1, 19), 코드 8 (4, 0), 코드 9 (4, 0), 코드 10 (4,0), 코드 11 (1, 19) Merged Memory, Code 0 (4, 0), Code 1 (4,0), Code 2 (4, 0), Code 3 (1, 19), Code 4 (4, 0), Code 5 (4, 0 ), Code 6 (4, 0), Code 7 (1, 19), Code 8 (4, 0), Code 9 (4, 0), Code 10 (4,0), Code 11 (1, 19)

병합된 메모리, 코드 0 (8, 16), 코드 1 (0, 16), 코드 2 (5, 16), 코드 3 (0, 16), 코드 4 (8, 16), 코드 5 (0, 16), 코드 6 (0, 16), 코드 7 (0, 16), 코드 8 (8, 16), 코드 9 (0, 16), 코드 10 (5, 16), 코드 11 (0, 16) Merged Memory, Code 0 (8, 16), Code 1 (0, 16), Code 2 (5, 16), Code 3 (0, 16), Code 4 (8, 16), Code 5 (0, 16 ), Code 6 (0, 16), Code 7 (0, 16), Code 8 (8, 16), Code 9 (0, 16), Code 10 (5, 16), Code 11 (0, 16)

병합된 메모리, 코드 0 (5, 19), 코드 1 (5, 19), 코드 2 (5, 19), 코드 3 (0, 19), 코드 4 (5, 19), 코드 5 (5, 19), 코드 6 (5, 19), 코드 7 (0, 19), 코드 8 (5, 19), 코드 9 (5, 19), 코드 10 (5, 19), 코드 11 (0, 19) Merged Memory, Code 0 (5, 19), Code 1 (5, 19), Code 2 (5, 19), Code 3 (0, 19), Code 4 (5, 19), Code 5 (5, 19) ), Code 6 (5, 19), Code 7 (0, 19), Code 8 (5, 19), Code 9 (5, 19), Code 10 (5, 19), Code 11 (0, 19)

병합된 메모리, 코드 0 (7, 17), 코드 1 (7, 17), 코드 2 (1, 17), 코드 3 (1, 17), 코드 4 (7,17), 코드 5 (7,17), 코드 6 (1,17), 코드 7 (1, 17), 코드 8 (7,17), 코드 9 (7, 17), 코드 11 (1, 17) Merged Memory, Code 0 (7, 17), Code 1 (7, 17), Code 2 (1, 17), Code 3 (1, 17), Code 4 (7,17), Code 5 (7,17 ), Code 6 (1,17), Code 7 (1, 17), Code 8 (7,17), Code 9 (7, 17), Code 11 (1, 17)

병합된 메모리, 코드 0 (5, 12), 코드 1 (6, 5), 코드 2 (5, 12), 코드 3 (2, 12), 코드 4 (5, 12), 코드 5 (5, 12), 코드 6 (2, 12), 코드 7 (2, 12), 코드 8 (5, 12), 코드 9 (2, 12), 코드 10 (2, 12), 코드 11 (2, 12) Merged Memory, Code 0 (5, 12), Code 1 (6, 5), Code 2 (5, 12), Code 3 (2, 12), Code 4 (5, 12), Code 5 (5, 12 ), Code 6 (2, 12), Code 7 (2, 12), Code 8 (5, 12), Code 9 (2, 12), Code 10 (2, 12), Code 11 (2, 12)

병합된 메모리, 코드 0 (9, 15), 코드 1 (7, 15), 코드 3 (2, 15), 코드 4 (9, 15), 코드 5 (7, 15), 코드 6 (5, 15), 코드 7 (2, 15), 코드 8 (9, 15), 코드 9 (7, 15), 코드 10 (5, 15), 코드 11 (2, 15) Merged Memory, Code 0 (9, 15), Code 1 (7, 15), Code 3 (2, 15), Code 4 (9, 15), Code 5 (7, 15), Code 6 (5, 15 ), Code 7 (2, 15), Code 8 (9, 15), Code 9 (7, 15), Code 10 (5, 15), Code 11 (2, 15)

병합된 메모리, 코드 0 (11, 12), 코드 1 (7, 6), 코드 2 (4, 12), 코드 3 (3, 18), 코드 4 (11, 12), 코드 5 (7, 6), 코드 6 (4, 12), 코드 7 (3, 18), 코드 8 (11, 12), 코드 9 (4, 12), 코드 10 (4, 12), 코드 11 (3, 18) Merged Memory, Code 0 (11, 12), Code 1 (7, 6), Code 2 (4, 12), Code 3 (3, 18), Code 4 (11, 12), Code 5 (7, 6 ), Code 6 (4, 12), Code 7 (3, 18), Code 8 (11, 12), Code 9 (4, 12), Code 10 (4, 12), Code 11 (3, 18)

병합된 메모리, 코드 0 (8, 15), 코드 1 (4, 15), 코드 2 (3, 15), 코드 3 (3, 15), 코드 4 (8, 15), 코드 6 (3, 15), 코드 7 (3, 15), 코드 8 (8, 15), 코드 9 (6, 9), 코드 10 (4, 15), 코드 11 (3, 15) Merged Memory, Code 0 (8, 15), Code 1 (4, 15), Code 2 (3, 15), Code 3 (3, 15), Code 4 (8, 15), Code 6 (3, 15 ), Code 7 (3, 15), Code 8 (8, 15), Code 9 (6, 9), Code 10 (4, 15), Code 11 (3, 15)

병합된 메모리, 코드 0 (9, 2), 코드 1 (6, 12), 코드 4 (9, 1), 코드 5 (6, 12), 코드 6 (5, 13), 코드 7 (1, 12), 코드 8 (10, 2), 코드 9 (6, 12), 코드 10 (1, 12), 코드 11 (1, 12) Merged Memory, Code 0 (9, 2), Code 1 (6, 12), Code 4 (9, 1), Code 5 (6, 12), Code 6 (5, 13), Code 7 (1, 12 ), Code 8 (10, 2), code 9 (6, 12), code 10 (1, 12), code 11 (1, 12)

병합된 메모리, 코드 0 (6, 0), 코드 1 (6, 0), 코드 2 (0, 17), 코드 3 (0, 17), 코드 4 (6, 0), 코드 5 (6, 0), 코드 6 (5, 17), 코드 7 (0, 17), 코드 8 (6, 0), 코드 9 (6, 0), 코드 10 (5, 17) Merged Memory, Code 0 (6, 0), Code 1 (6, 0), Code 2 (0, 17), Code 3 (0, 17), Code 4 (6, 0), Code 5 (6, 0 ), Code 6 (5, 17), code 7 (0, 17), code 8 (6, 0), code 9 (6, 0), code 10 (5, 17)

병합된 메모리, 코드 0 (8, 4), 코드 1 (3, 12), 코드 2 (3, 12), 코드 3 (3, 12), 코드 4 (8, 4), 코드 5 (3, 12), 코드 7 (3, 12), 코드 8 (8,4), 코드 9 (7, 14) Merged Memory, Code 0 (8, 4), Code 1 (3, 12), Code 2 (3, 12), Code 3 (3, 12), Code 4 (8, 4), Code 5 (3, 12 ), Code 7 (3, 12), code 8 (8,4), code 9 (7, 14)

병합된 메모리, 코드 0 (9, 4), 코드 1 (1, 15), 코드 2 (1, 15), 코드 3 (1, 15), 코드 4 (9, 4), 코드 5 (1, 15), 코드 6 (1, 15), 코드 7 (1, 15), 코드 8 (9, 4), 코드 9 (1, 15), 코드 11 (1, 15) Merged Memory, Code 0 (9, 4), Code 1 (1, 15), Code 2 (1, 15), Code 3 (1, 15), Code 4 (9, 4), Code 5 (1, 15 ), Code 6 (1, 15), Code 7 (1, 15), Code 8 (9, 4), Code 9 (1, 15), Code 11 (1, 15)

병합된 메모리, 코드 0 (0, 12), 코드 1 (0, 12), 코드 2 (5, 10), 코드 3 (0, 12), 코드 4 (0, 12), 코드 6 (0, 12), 코드 7 (0, 12), 코드 8 (0, 12), 코드 9 (5, 10), 코드 10 (5, 10), 코드 11 (0, 12) Merged Memory, Code 0 (0, 12), Code 1 (0, 12), Code 2 (5, 10), Code 3 (0, 12), Code 4 (0, 12), Code 6 (0, 12 ), Code 7 (0, 12), code 8 (0, 12), code 9 (5, 10), code 10 (5, 10), code 11 (0, 12)

병합된 메모리, 코드 0 (10, 4), 코드 2 (0, 15), 코드 3 (0, 15), 코드 4 (10, 4), 코드 5 (0, 15), 코드 7 (0, 15), 코드 8 (10,4), 코드 9 (0,15), 코드 10 (0, 15) Merged Memory, Code 0 (10, 4), Code 2 (0, 15), Code 3 (0, 15), Code 4 (10, 4), Code 5 (0, 15), Code 7 (0, 15 ), Code 8 (10,4), code 9 (0,15), code 10 (0, 15)

병합된 메모리, 코드 0 (5, 18), 코드 1 (5, 18), 코드 2 (5, 18), 코드 3 (1, 18), 코드 4 (5, 18), 코드 5 (5, 18), 코드 6 (5, 18), 코드 7 (1, 18), 코드 8 (5, 18), 코드 9 (5, 18), 코드 10 (5, 18) Merged Memory, Code 0 (5, 18), Code 1 (5, 18), Code 2 (5, 18), Code 3 (1, 18), Code 4 (5, 18), Code 5 (5, 18 ), Code 6 (5, 18), Code 7 (1, 18), Code 8 (5, 18), Code 9 (5, 18), Code 10 (5, 18)

병합된 메모리, 코드 0 (10, 13), 코드 1 (6, 7), 코드 2 (1, 13), 코드 3 (1, 13), 코드 4 (10, 13), 코드 5 (1, 13), 코드 6 (1, 13), 코드 7 (1, 13), 코드 8 (10, 13), 코드 9 (6, 7), 코드 11 (1, 13) Merged Memory, Code 0 (10, 13), Code 1 (6, 7), Code 2 (1, 13), Code 3 (1, 13), Code 4 (10, 13), Code 5 (1, 13 ), Code 6 (1, 13), Code 7 (1, 13), Code 8 (10, 13), Code 9 (6, 7), Code 11 (1, 13)

병합된 메모리, 코드 0 (7, 16), 코드 1 (7, 16), 코드 3 (1, 16), 코드 4 (7, 16), 코드 5 (7, 16), 코드 8 (7, 16), 코드 9 (7, 16), 코드 10 (1, 16) Merged Memory, Code 0 (7, 16), Code 1 (7, 16), Code 3 (1, 16), Code 4 (7, 16), Code 5 (7, 16), Code 8 (7, 16 ), Code 9 (7, 16), code 10 (1, 16)

병합된 메모리, 코드 0 (11, 4), 코드 1 (2, 13), 코드 2 (2, 13), 코드 3 (2, 13), 코드 4 (11, 4), 코드 5 (2, 13), 코드 7 (2, 13), 코드 8 (11, 4), 코드 9 (2, 13) Merged Memory, Code 0 (11, 4), Code 1 (2, 13), Code 2 (2, 13), Code 3 (2, 13), Code 4 (11, 4), Code 5 (2, 13 ), Code 7 (2, 13), code 8 (11, 4), code 9 (2, 13)

병합된 메모리, 코드 0 (9, 8), 코드 1 (3, 16), 코드 2 (3, 16), 코드 3 (3, 16), 코드 4 (10, 5), 코드 5 (3, 16), 코드 7 (3, 16), 코드 8 (9, 8), 코드 9 (3, 16), 코드 11 (3, 16) Merged Memory, Code 0 (9, 8), Code 1 (3, 16), Code 2 (3, 16), Code 3 (3, 16), Code 4 (10, 5), Code 5 (3, 16 ), Code 7 (3, 16), Code 8 (9, 8), Code 9 (3, 16), Code 11 (3, 16)

병합된 메모리, 코드 0 (10, 1), 코드 1 (4, 13), 코드 3 (3, 7), 코드 4 (10, 1), 코드 5 (4, 13), 코드 6 (3, 7), 코드 7 (3, 7), 코드 8 (8, 1), 코드 9 (4, 13), 코드 10 (4, 13), 코드 11 (3, 7) Merged Memory, Code 0 (10, 1), Code 1 (4, 13), Code 3 (3, 7), Code 4 (10, 1), Code 5 (4, 13), Code 6 (3, 7 ), Code 7 (3, 7), Code 8 (8, 1), Code 9 (4, 13), Code 10 (4, 13), Code 11 (3, 7)

병합된 메모리, 코드 0 (10, 14), 코드 1 (6, 14), 코드 3 (2, 14), 코드 4 (10, 14), 코드 5 (6, 14), 코드 6 (2, 14), 코드 7 (2, 14), 코드 8 (10, 14), 코드 9 (2, 14), 코드 11 (2, 14) Merged Memory, Code 0 (10, 14), Code 1 (6, 14), Code 3 (2, 14), Code 4 (10, 14), Code 5 (6, 14), Code 6 (2, 14 ), Code 7 (2, 14), Code 8 (10, 14), Code 9 (2, 14), Code 11 (2, 14)

병합된 메모리, 코드 0 (11, 11), 코드 1 (4, 7), 코드 2 (4, 7), 코드 3 (3, 11), 코드 4 (3, 11), 코드 5 (4, 7), 코드 6 (3, 11), 코드 7 (3, 11), 코드 8 (3, 11), 코드 9 (3, 11), 코드 11 (3, 11) Merged Memory, Code 0 (11, 11), Code 1 (4, 7), Code 2 (4, 7), Code 3 (3, 11), Code 4 (3, 11), Code 5 (4, 7 ), Code 6 (3, 11), code 7 (3, 11), code 8 (3, 11), code 9 (3, 11), code 11 (3, 11)

병합된 메모리, 코드 0 (9, 14), 코드 2 (4, 14), 코드 3 (1, 14), 코드 4 (9, 14), 코드 5 (4, 14), 코드 6 (4, 14), 코드 7 (1, 14), 코드 8 (9, 14), 코드 10 (1, 14) Merged Memory, Code 0 (9, 14), Code 2 (4, 14), Code 3 (1, 14), Code 4 (9, 14), Code 5 (4, 14), Code 6 (4, 14 ), Code 7 (1, 14), code 8 (9, 14), code 10 (1, 14)

병합된 메모리, 코드 0 (2, 11), 코드 1 (2, 11), 코드 2 (2, 11), 코드 3 (2, 11), 코드 4 (9, 11), 코드 5 (2, 11), 코드 7 (2, 11), 코드 8 (6, 11) Merged Memory, Code 0 (2, 11), Code 1 (2, 11), Code 2 (2, 11), Code 3 (2, 11), Code 4 (9, 11), Code 5 (2, 11 ), Code 7 (2, 11), code 8 (6, 11)

병합된 메모리, 코드 0 (11, 5), 코드 1 (0, 14), 코드 2 (5, 14), 코드 3 (0, 14), 코드 4 (9, 6), 코드 5 (5, 14), 코드 6 (0, 14), 코드 7 (0, 14), 코드 8 (9, 5), 코드 9 (5, 14), 코드 10 (0, 14), 코드 11 (0, 14) Merged Memory, Code 0 (11, 5), Code 1 (0, 14), Code 2 (5, 14), Code 3 (0, 14), Code 4 (9, 6), Code 5 (5, 14 ), Code 6 (0, 14), Code 7 (0, 14), Code 8 (9, 5), Code 9 (5, 14), Code 10 (0, 14), Code 11 (0, 14)

병합된 메모리, 코드 0 (7, 11), 코드 1 (7, 11), 코드 2 (0, 13), 코드 3 (0, 13), 코드 4 (11, 6), 코드 5 (7, 11), 코드 7 (0, 13), 코드 8 (11, 6), 코드 9 (7, 11), 코드 10 (0, 13), 코드 11 (0, 13) Merged Memory, Code 0 (7, 11), Code 1 (7, 11), Code 2 (0, 13), Code 3 (0, 13), Code 4 (11, 6), Code 5 (7, 11 ), Code 7 (0, 13), Code 8 (11, 6), Code 9 (7, 11), Code 10 (0, 13), Code 11 (0, 13)

병합된 메모리, 코드 0 (6, 4), 코드 1 (3, 14), 코드 2 (3, 14), 코드 3 (3, 14), 코드 4 (6, 4), 코드 5 (6, 4), 코드 7 (3, 14), 코드 8 (6, 4), 코드 10 (3, 14), 코드 11 (3, 14) Merged Memory, Code 0 (6, 4), Code 1 (3, 14), Code 2 (3, 14), Code 3 (3, 14), Code 4 (6, 4), Code 5 (6, 4 ), Code 7 (3, 14), code 8 (6, 4), code 10 (3, 14), code 11 (3, 14)

병합된 메모리, 코드 0 (10, 6), 코드 1 (5, 11), 코드 2 (3, 10), 코드 3 (3, 10), 코드 4 (11,7), 코드 5 (7,3), 코드 6 (5, 11), 코드 7 (3, 10), 코드 8 (7, 3), 코드 9 (7, 3), 코드 10 (5, 11), 코드 11 (3, 10) Merged Memory, Code 0 (10, 6), Code 1 (5, 11), Code 2 (3, 10), Code 3 (3, 10), Code 4 (11,7), Code 5 (7,3 ), Code 6 (5, 11), Code 7 (3, 10), Code 8 (7, 3), Code 9 (7, 3), Code 10 (5, 11), Code 11 (3, 10)

병합된 메모리, 코드 0 (7, 10), 코드 1 (6, 10), 코드 3 (0, 10), 코드 4 (6, 10), 코드 6 (0, 10), 코드 7 (0, 10), 코드 8 (11, 10), 코드 9 (6, 10) Merged Memory, Code 0 (7, 10), Code 1 (6, 10), Code 3 (0, 10), Code 4 (6, 10), Code 6 (0, 10), Code 7 (0, 10 ), Code 8 (11, 10), code 9 (6, 10)

병합된 메모리, 코드 0 (10, 7), 코드 2 (1, 11), 코드 3 (1, 11), 코드 4 (7, 5), 코드 5 (7, 5), 코드 6 (1, 11), 코드 7 (1, 11), 코드 8 (7, 7), 코드 9 (1, 11), 코드 11 (1, 11) Merged Memory, Code 0 (10, 7), Code 2 (1, 11), Code 3 (1, 11), Code 4 (7, 5), Code 5 (7, 5), Code 6 (1, 11 ), Code 7 (1, 11), code 8 (7, 7), code 9 (1, 11), code 11 (1, 11)

병합된 메모리, 코드 0 (2, 10), 코드 2 (2, 10), 코드 3 (2, 10), 코드 4 (2, 10), 코드 5 (2, 10), 코드 6 (2, 10), 코드 7 (2, 10), 코드 8 (10, 9), 코드 11 (2, 10) Merged Memory, Code 0 (2, 10), Code 2 (2, 10), Code 3 (2, 10), Code 4 (2, 10), Code 5 (2, 10), Code 6 (2, 10 ), Code 7 (2, 10), code 8 (10, 9), code 11 (2, 10)

병합된 메모리, 코드 0 (8, 9), 코드 2 (0, 11), 코드 3 (0, 11), 코드 4 (0, 11), 코드 5 (0, 11), 코드 7 (0, 11), 코드 8 (0, 11), 코드 10 (0, 11), 코드 11 (0, 11) Merged Memory, Code 0 (8, 9), Code 2 (0, 11), Code 3 (0, 11), Code 4 (0, 11), Code 5 (0, 11), Code 7 (0, 11 ), Code 8 (0, 11), code 10 (0, 11), code 11 (0, 11)

병합된 메모리, 코드 0 (9, 10), 코드 1 (4, 10), 코드 2 (4, 10), 코드 4 (10, 10), 코드 5 (4, 10), 코드 6 (4, 10), 코드 8 (4, 10), 코드 9 (4, 10), 코드 10 (4, 10) Merged Memory, Code 0 (9, 10), Code 1 (4, 10), Code 2 (4, 10), Code 4 (10, 10), Code 5 (4, 10), Code 6 (4, 10 ), Code 8 (4, 10), code 9 (4, 10), code 10 (4, 10)

병합된 메모리, 코드 0 (5, 9), 코드 1 (5, 9), 코드 2 (5, 9), 코드 4 (7, 9), 코드 5 (5, 9), 코드 6 (5, 9), 코드 8 (9, 9), 코드 10 (5,9) Merged Memory, Code 0 (5, 9), Code 1 (5, 9), Code 2 (5, 9), Code 4 (7, 9), Code 5 (5, 9), Code 6 (5, 9 ), Code 8 (9, 9), code 10 (5,9)

병합된 메모리, 코드 0 (4, 6), 코드 1 (1, 10), 코드 2 (4,6), 코드 3 (1, 10), 코드 4 (4, 6), 코드 5 (1, 10), 코드 6 (4, 6), 코드 7 (1, 10), 코드 8 (1, 10), 코드 10 (1, 10), 코드 11 (1, 10) Merged Memory, Code 0 (4, 6), Code 1 (1, 10), Code 2 (4,6), Code 3 (1, 10), Code 4 (4, 6), Code 5 (1, 10 ), Code 6 (4, 6), Code 7 (1, 10), Code 8 (1, 10), Code 10 (1, 10), Code 11 (1, 10)

병합된 메모리, 코드 0 (0, 9), 코드 1 (0, 9), 코드 2 (0, 9), 코드 3 (0, 9), 코드 4 (8, 7), 코드 5 (0, 9), 코드 7 (0, 9), 코드 8 (8, 7), 코드 9 (0, 9), 코드 11 (0, 9) Merged Memory, Code 0 (0, 9), Code 1 (0, 9), Code 2 (0, 9), Code 3 (0, 9), Code 4 (8, 7), Code 5 (0, 9 ), Code 7 (0, 9), code 8 (8, 7), code 9 (0, 9), code 11 (0, 9)

병합된 메모리, 코드 0 (6, 6), 코드 1 (1, 6), 코드 2 (4, 9), 코드 3 (1, 6), 코드 4 (4, 9), 코드 5 (6, 6), 코드 6 (1, 6), 코드 7 (1, 6), 코드 8 (6, 6), 코드 9 (4, 9), 코드 10 (4, 9), 코드 11 (1,6) Merged Memory, Code 0 (6, 6), Code 1 (1, 6), Code 2 (4, 9), Code 3 (1, 6), Code 4 (4, 9), Code 5 (6, 6 ), Code 6 (1, 6), Code 7 (1, 6), Code 8 (6, 6), Code 9 (4, 9), Code 10 (4, 9), Code 11 (1,6)

병합된 메모리, 코드 0 (6, 2), 코드 1 (6, 2), 코드 2 (1, 9), 코드 3 (1, 9), 코드 4 (1, 9), 코드 5 (6, 2), 코드 6 (1, 9), 코드 7 (1, 9), 코드 9 (6, 2), 코드 11 (1, 9) Merged Memory, Code 0 (6, 2), Code 1 (6, 2), Code 2 (1, 9), Code 3 (1, 9), Code 4 (1, 9), Code 5 (6, 2 ), Code 6 (1, 9), Code 7 (1, 9), Code 9 (6, 2), Code 11 (1, 9)

병합된 메모리, 코드 0 (8, 8), 코드 1 (3, 6), 코드 2 (3, 6), 코드 3 (3, 6), 코드 4 (8, 8), 코드 6 (3, 6), 코드 7 (3, 6), 코드 8 (8, 8), 코드 9 (3, 6), 코드 10 (3, 6), 코드 11 (3, 6) Merged Memory, Code 0 (8, 8), Code 1 (3, 6), Code 2 (3, 6), Code 3 (3, 6), Code 4 (8, 8), Code 6 (3, 6 ), Code 7 (3, 6), Code 8 (8, 8), Code 9 (3, 6), Code 10 (3, 6), Code 11 (3, 6)

병합된 메모리, 코드 1 (2, 9), 코드 2 (5, 5), 코드 3 (2, 9), 코드 4 (5, 5), 코드 6 (5, 5), 코드 7 (2, 9), 코드 8 (2, 9), 코드 9 (5, 5), 코드 10 (5, 5), 코드 11 (2, 9) Merged Memory, Code 1 (2, 9), Code 2 (5, 5), Code 3 (2, 9), Code 4 (5, 5), Code 6 (5, 5), Code 7 (2, 9 ), Code 8 (2, 9), code 9 (5, 5), code 10 (5, 5), code 11 (2, 9)

병합된 메모리, 코드 0 (6, 3), 코드 1 (6, 3), 코드 2 (0, 6), 코드 3 (0, 6), 코드 4 (6,3), 코드 5 (6, 3), 코드 6 (0,6), 코드 7 (0, 6), 코드 9 (6, 3), 코드 10 (0, 6), 코드 11 (0, 6) Merged Memory, Code 0 (6, 3), Code 1 (6, 3), Code 2 (0, 6), Code 3 (0, 6), Code 4 (6,3), Code 5 (6, 3 ), Code 6 (0,6), code 7 (0, 6), code 9 (6, 3), code 10 (0, 6), code 11 (0, 6)

병합된 메모리, 코드 0 (4, 8), 코드 1 (2, 7), 코드 2 (2, 7), 코드 3 (2, 7), 코드 4 (4, 8), 코드 5 (2, 7), 코드 6 (4, 8), 코드 7 (2, 7), 코드 8 (4, 8), 코드 10 (2, 7), 코드 11 (2, 7) Merged Memory, Code 0 (4, 8), Code 1 (2, 7), Code 2 (2, 7), Code 3 (2, 7), Code 4 (4, 8), Code 5 (2, 7 ), Code 6 (4, 8), Code 7 (2, 7), Code 8 (4, 8), Code 10 (2, 7), Code 11 (2, 7)

병합된 메모리, 코드 0 (7, 8), 코드 1 (7, 8), 코드 3 (2, 6), 코드 4 (7, 8), 코드 5 (7, 8), 코드 6 (2, 6), 코드 7 (2, 6), 코드 8 (7, 8), 코드 9 (2, 6), 코드 10 (2, 6), 코드 11 (2,6) Merged Memory, Code 0 (7, 8), Code 1 (7, 8), Code 3 (2, 6), Code 4 (7, 8), Code 5 (7, 8), Code 6 (2, 6 ), Code 7 (2, 6), Code 8 (7, 8), Code 9 (2, 6), Code 10 (2, 6), Code 11 (2,6)

병합된 메모리, 코드 0 (7, 4), 코드 1 (7, 4), 코드 3 (3, 9), 코드 4 (7, 4), 코드 5 (3, 9), 코드 6 (3, 9), 코드 7 (3, 9), 코드 8 (7, 4), 코드 9 (7, 4), 코드 10 (3, 9), 코드 11 (3, 9) Merged Memory, Code 0 (7, 4), Code 1 (7, 4), Code 3 (3, 9), Code 4 (7, 4), Code 5 (3, 9), Code 6 (3, 9 ), Code 7 (3, 9), Code 8 (7, 4), Code 9 (7, 4), Code 10 (3, 9), Code 11 (3, 9)

병합된 메모리, 코드 0 (6, 8), 코드 1 (0, 5), 코드 2 (0, 5), 코드 3 (0, 5), 코드 4 (6, 8), 코드 5 (6, 8), 코드 6 (0, 5), 코드 7 (0, 5), 코드 8 (6, 8), 코드 9 (6, 8), 코드 10 (0, 5), 코드 11 (0, 5) Merged Memory, Code 0 (6, 8), Code 1 (0, 5), Code 2 (0, 5), Code 3 (0, 5), Code 4 (6, 8), Code 5 (6, 8 ), Code 6 (0, 5), Code 7 (0, 5), Code 8 (6, 8), Code 9 (6, 8), Code 10 (0, 5), Code 11 (0, 5)

병합된 메모리, 코드 0 (l0, 8), 코드 1 (0, 1), 코드 2 (0, 1), 코드 3 (0, 1), 코드 4 (l0, 8), 코드 5 (0, 1), 코드 6 (0, 1), 코드 7 (0, 1), 코드 8 (l0, 8), 코드 9 (0, 1), 코드 10 (0, 1), 코드 11 (0, 1) Merged Memory, Code 0 (l0, 8), Code 1 (0, 1), Code 2 (0, 1), Code 3 (0, 1), Code 4 (l0, 8), Code 5 (0, 1 ), Code 6 (0, 1), Code 7 (0, 1), Code 8 (l0, 8), Code 9 (0, 1), Code 10 (0, 1), Code 11 (0, 1)

도 1 및 도 2는 통신 시스템의 다양한 실시예를 도시한다.1 and 2 illustrate various embodiments of a communication system.

도 3은 LDPC 디코딩 프로세싱을 수행하도록 동작가능한 장치의 실시예를 도시한다.3 illustrates an embodiment of an apparatus operable to perform LDPC decoding processing.

도 4는 LDPC 디코딩 프로세싱을 수행하도록 동작가능한 장치의 대안적인 실시예를 도시한다.4 illustrates an alternative embodiment of an apparatus that is operable to perform LDPC decoding processing.

도 5는 LDPC 코드 이분형 그래프의 실시예를 도시한다.5 illustrates an embodiment of an LDPC code binary graph.

도 6은 LDPC 디코딩 기능의 실시예를 도시한다.6 illustrates an embodiment of an LDPC decoding function.

도 7은 다중의 LDPC 행렬들의 0이 아닌 부분 행렬들의 중첩의 실시예를 도시한다.7 illustrates an embodiment of superposition of nonzero partial matrices of multiple LDPC matrices.

도 8은 도 7로부터 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 프로세싱을 적응시키기 위한 메모리들의 제공의 실시예를 도시한다.FIG. 8 shows an embodiment of the provision of memories to adapt the processing of nonzero partial matrices of an overlapped LDPC matrix from FIG. 7.

도 9a 및 도 9b는 도 7로부터 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 프로세싱을 적응시키기 위한 디코딩 구조의 실시예를 도시한다.9A and 9B show an embodiment of a decoding structure for adapting the processing of nonzero partial matrices of an overlapped LDPC matrix from FIG. 7.

도 10은 도 7로부터 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 프로세싱을 적응시키기 위한 디코딩 구조의 실시예를 도시한다.FIG. 10 illustrates an embodiment of a decoding structure for adapting the processing of nonzero partial matrices of an overlapped LDPC matrix from FIG. 7.

도 11은 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 프로세싱을 적응시키기 위한 디코딩 구조의 실시예를 도시한다.11 illustrates an embodiment of a decoding structure for adapting the processing of nonzero partial matrices of nested LDPC matrices.

도 12는 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 프로세싱을 적응시키기 위한 디코딩 구조의 대안적인 실시예를 도시한다.12 illustrates an alternative embodiment of a decoding structure for adapting the processing of nonzero partial matrices of nested LDPC matrices.

도 13 및 도 14는 중첩된 LDPC 행렬의 0이 아닌 부분 행렬들의 디코딩을 위한 하드웨어 제공의 실시예들을 도시한다.13 and 14 illustrate embodiments of hardware provision for decoding nonzero partial matrices of a superimposed LDPC matrix.

도 15는 LDPC 디코딩 프로세싱에 따른 체크 노드 프로세싱을 위해 적용된 2개의 상호 배제 제공 메모리들 사이에서 연결성의 실시예를 도시한다.15 illustrates an embodiment of connectivity between two mutual exclusion providing memories applied for check node processing in accordance with LDPC decoding processing.

도 16은 LDPC 디코딩 프로세싱에 따른 체크 노드 프로세싱을 위해 적용된 병합 메모리의 연결성의 실시예를 도시한다.16 illustrates an embodiment of the connectivity of a merge memory applied for check node processing in accordance with LDPC decoding processing.

도 17은 LDPC 코딩 신호를 프로세싱하기 위한 방법의 실시예를 도시한다.17 illustrates an embodiment of a method for processing an LDPC coded signal.

도 18은 LDPC 코딩 신호를 프로세싱하기 위한 방법의 실시예를 도시한다.18 illustrates an embodiment of a method for processing an LDPC coded signal.

도 19는 다양한 LDPC 코딩 신호들을 프로세싱하기 위한 하드웨어의 제공을 위한 방법의 실시예를 도시한다.19 illustrates an embodiment of a method for providing hardware for processing various LDPC coded signals.

도 20은 중첩된 LDPC 행렬의 대안적인 실시예를 도시한다.20 illustrates an alternative embodiment of a nested LDPC matrix.

Claims (10)

저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더로서,A decoder operable to decode a Low Density Parity Check (LDPC) coded signal, 복수의 메모리들;A plurality of memories; 복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories; 복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And 제1 LDPC 코딩 신호의 디코딩 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들 및 상기 복수의 체크 엔진들을 선택적으로 연결하고; 및Selectively connect the plurality of bit engines and the plurality of check engines to first selected memories of the plurality of memories during decoding processing of a first LDPC coded signal; And 제2 LDPC 코딩 신호의 디코딩 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들 및 상기 복수의 체크 엔진들을 선택적으로 연결하도록 동작가능한 복수의 멀티플렉서들을 포함하되;A plurality of multiplexers operable to selectively connect said plurality of bit engines and said plurality of check engines to second selected memories of said plurality of memories during decoding processing of a second LDPC coded signal; 상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes; 상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; 및The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal; And 상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하며,The decoder is operable to decode the second LDPC coded signal corresponding to a second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bits in the second LDPC coded signal, 상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩(superposition)의 그리디(greedy), 깊이 우선 탐색(depth first search: DFS)을 수행하는 것에 의해 결정되는 디코더.The number of memories in the plurality of memories is a greedy of the superposition of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. A decoder determined by performing a depth first search (DFS). 삭제delete 삭제delete 청구항 1에 있어서,The method according to claim 1, 상기 그리디, 깊이 우선 탐색은 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계(connectedness)를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려하는 디코더. The greedy, depth-first search is a column similarity metric indicating a connectedness to at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. A decoder that takes at least part of column affinity metric into account. 청구항 1에 있어서,The method according to claim 1, 통신 장치내의 상기 복수의 메모리들의 설계는, 상기 제1 LDPC 행렬내의 어떤 열의 상기 제1 LDPC 행렬내의 또다른 열 및 상기 제2 LDPC 행렬내의 열 중 적어도 하나에 대한 결합관계를 표시하는 열 유사성 메트릭(column affinity metric)을 적어도 일부분 고려함에 의해 생성된 병합 패턴에 기반하는 디코더.The design of the plurality of memories in a communication device includes a column similarity metric that indicates a coupling relationship for at least one of another column in the first LDPC matrix and a column in the second LDPC matrix of a column in the first LDPC matrix. A decoder based on a merging pattern generated by considering at least a portion of a column affinity metric. 청구항 1에 있어서,The method according to claim 1, 상기 복수의 메모리들은 복수의 병합 메모리들을 포함하며, 상기 복수의 병합 메모리들의 병합 메모리는 상기 제1 LDPC 행렬내의 제1 0이 아닌 부분 행렬에 상응하고, 아울러 상기 제2 LDPC 행렬내 제2 0이 아닌 부분 행렬에 상응하는 디코더.The plurality of memories includes a plurality of merge memories, the merge memory of the plurality of merge memories corresponding to a first non-zero partial matrix in the first LDPC matrix, and wherein a second 0 in the second LDPC matrix is Decoder corresponding to a non-partial matrix. 저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더로서,A decoder operable to decode a Low Density Parity Check (LDPC) coded signal, 복수의 메모리들;A plurality of memories; 복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories; 복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And 제1 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들의 제1 선택 비트 엔진들을 연결하고;Connect first select bit engines of the plurality of bit engines to first select memories of the plurality of memories during bit node processing when decoding a first LDPC coded signal; 제1 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 체크 엔진들의 제1 선택 체크 엔진들을 연결하고;Connect first select check engines of the plurality of check engines to first select memories of the plurality of memories during check node processing when decoding a first LDPC coded signal; 제2 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들의 제2 선택 비트 엔진들을 연결하고;Connect second select bit engines of the plurality of bit engines to second select memories of the plurality of memories during bit node processing when decoding a second LDPC coded signal; 제2 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 체크 엔진들의 제2 선택 체크 엔진들을 연결하도록 동작가능한 복수의 멀티플렉서들을 포함하되;A plurality of multiplexers operable to couple second select check engines of the plurality of check engines to second select memories of the plurality of memories during check node processing when decoding a second LDPC coded signal; 상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes; 상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; 및The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal; And 상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하며,The decoder is operable to decode the second LDPC coded signal corresponding to a second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bits in the second LDPC coded signal, 상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩(superposition)의 그리디(greedy), 깊이 우선 탐색(depth first search: DFS)을 수행하는 것에 의해 결정되는 디코더.The number of memories in the plurality of memories is a greedy of the superposition of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. A decoder determined by performing a depth first search (DFS). 청구항 7에 있어서,The method of claim 7, 상기 복수의 비트 엔진들의 상기 제1 선택 비트 엔진들은 상기 복수의 비트 엔진들의 상기 제2 선택 비트엔진들이며;The first selected bit engines of the plurality of bit engines are the second selected bit engines of the plurality of bit engines; 상기 복수의 체크 엔진들의 상기 제1 선택 체크 엔진들은 상기 복수의 체크 엔진들의 상기 제2 선택 비트 엔진들인 디코더.The first selected check engines of the plurality of check engines are the second selected bit engines of the plurality of check engines. 청구항 7에 있어서,The method of claim 7, 상기 복수의 비트 엔진들의 상기 제1 선택 비트 엔진들은 상기 복수의 비트 엔진들의 모든 비트엔진들이며;The first selected bit engines of the plurality of bit engines are all bit engines of the plurality of bit engines; 상기 복수의 체크 엔진들의 상기 제1 선택 체크 엔진들은 상기 복수의 체크 엔진들의 모든 체크 엔진들인 디코더.And the first selected check engines of the plurality of check engines are all check engines of the plurality of check engines. 저밀도 패리티 체크(Low Density Parity Check: LDPC) 코딩 신호를 디코딩하도록 동작가능한 디코더로서,A decoder operable to decode a Low Density Parity Check (LDPC) coded signal, 복수의 메모리들;A plurality of memories; 복수의 비트 엔진들로서, 상기 복수의 비트 엔진들내의 각 비트 엔진들은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 비트 엔진들;A plurality of bit engines, each bit engine in the plurality of bit engines comprising: a plurality of bit engines operable to be coupled to at least one of the plurality of memories; 복수의 체크 엔진들로서, 상기 복수의 체크 엔진들내의 각 체크 엔진은 상기 복수의 메모리들 중 적어도 하나의 메모리에 결합되도록 동작가능한 복수의 체크 엔진들; 및A plurality of check engines, each check engine in the plurality of check engines comprising: a plurality of check engines operable to be coupled to at least one of the plurality of memories; And 제1 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to first select memories of the plurality of memories during bit node processing when decoding a first LDPC coded signal; 제1 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제1 선택 메모리들에 상기 복수의 체크 엔진들을 연결하고;Connect the plurality of check engines to first selected memories of the plurality of memories during check node processing when decoding a first LDPC coded signal; 제2 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to second select memories of the plurality of memories during bit node processing when decoding a second LDPC coded signal; 제2 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제2 선택 메모리들에 상기 복수의 체크 엔진들을 연결하고;Connect the plurality of check engines to second selected memories of the plurality of memories during check node processing when decoding a second LDPC coded signal; 제3 LDPC 코딩 신호를 디코딩할 때 비트 노드 프로세싱동안 상기 복수의 메모리들의 제3 선택 메모리들에 상기 복수의 비트 엔진들을 연결하고;Connect the plurality of bit engines to third select memories of the plurality of memories during bit node processing when decoding a third LDPC coded signal; 제3 LDPC 코딩 신호를 디코딩할 때 체크 노드 프로세싱동안 상기 복수의 메모리들의 제3 선택 메모리들에 상기 복수의 체크 엔진들을 연결하도록 동작가능한 복수의 멀티플렉서들을 포함하되;A plurality of multiplexers operable to couple said plurality of check engines to third selected memories of said plurality of memories during check node processing when decoding a third LDPC coded signal; 상기 복수의 메모리들은 복수의 LDPC 코드들에 상응하는 복수의 LDPC 행렬들내에 복수의 0이 아닌(non-null) 부분 행렬을 나타내도록 동작가능한 사전결정된 개수의 메모리들을 포함하며;The plurality of memories comprises a predetermined number of memories operable to represent a plurality of non-null partial matrices in a plurality of LDPC matrices corresponding to a plurality of LDPC codes; 상기 디코더는 상기 제1 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬들의 제1 LDPC 행렬에 상응하는 상기 제1 LDPC 코딩 신호를 디코딩하도록 동작가능하며; The decoder is operable to decode the first LDPC coded signal corresponding to the first LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of the encoded bit in the first LDPC coded signal; 상기 디코더는 상기 제2 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제2 LDPC 행렬에 상응하는 상기 제2 LDPC 코딩 신호를 디코딩하도록 동작가능하며;The decoder is operable to decode the second LDPC coded signal corresponding to a second LDPC matrix of the plurality of LDPC matrices by generating an optimal estimate of encoded bits in the second LDPC coded signal; 상기 디코더는 상기 제3 LDPC 코딩 신호내의 인코딩된 비트의 최적의 추정치를 생성함에 의해 상기 복수의 LDPC 행렬의 제3 LDPC 행렬에 상응하는 상기 제3 LDPC 코딩 신호를 디코딩하도록 동작가능하며,The decoder is operable to decode the third LDPC coded signal corresponding to a third LDPC matrix of the plurality of LDPC matrices by generating an optimum estimate of the encoded bits in the third LDPC coded signal, 상기 복수의 메모리들내의 메모리들의 개수는, 상기 복수의 LDPC 코드들에 상응하는 상기 복수의 LDPC 행렬들내의 상기 복수의 0이 아닌(non-null) 부분 행렬들의 중첩(superposition)의 그리디(greedy), 깊이 우선 탐색(depth first search: DFS)을 수행하는 것에 의해 결정되는 디코더.The number of memories in the plurality of memories is a greedy of the superposition of the plurality of non-null partial matrices in the plurality of LDPC matrices corresponding to the plurality of LDPC codes. A decoder determined by performing a depth first search (DFS).
KR1020080077191A 2007-08-06 2008-08-06 Multi-code ldpclow density parity check decoder KR100992048B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US95418207P 2007-08-06 2007-08-06
US60/954,182 2007-08-06
US11/843,553 2007-08-22
US11/843,553 US8010881B2 (en) 2007-07-02 2007-08-22 Multi-code LDPC (low density parity check) decoder

Publications (2)

Publication Number Publication Date
KR20090014998A KR20090014998A (en) 2009-02-11
KR100992048B1 true KR100992048B1 (en) 2010-11-05

Family

ID=40391009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080077191A KR100992048B1 (en) 2007-08-06 2008-08-06 Multi-code ldpclow density parity check decoder

Country Status (4)

Country Link
KR (1) KR100992048B1 (en)
CN (1) CN101364809B (en)
HK (1) HK1129781A1 (en)
TW (1) TWI407703B (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102982849B (en) * 2012-12-05 2015-10-28 清华大学 For the ECC decode control method that data store
CN108540142B (en) * 2017-03-06 2021-11-12 瑞昱半导体股份有限公司 Receiving apparatus and control method thereof
TWI697907B (en) * 2020-01-14 2020-07-01 慧榮科技股份有限公司 Memory controller and method of accessing flash memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296208B2 (en) * 2003-07-03 2007-11-13 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
US7237174B2 (en) * 2003-09-04 2007-06-26 The Directv Group, Inc. Method and system for providing short block length low density parity check (LDPC) codes in support of broadband satellite applications
KR100762619B1 (en) * 2004-05-21 2007-10-01 삼성전자주식회사 Apparatus and Method for decoding symbol with Low Density Parity Check Code
CN1822509B (en) * 2004-10-04 2011-06-08 美国博通公司 Low density parity check decoder and its method

Also Published As

Publication number Publication date
HK1129781A1 (en) 2009-12-04
CN101364809B (en) 2011-09-07
TW200926615A (en) 2009-06-16
CN101364809A (en) 2009-02-11
KR20090014998A (en) 2009-02-11
TWI407703B (en) 2013-09-01

Similar Documents

Publication Publication Date Title
KR100975547B1 (en) Distributed processing LDPCLow Density Parity Check decoder
KR100915368B1 (en) Overlapping sub-matrix based ldpc(low density parity check) decoder
KR100695380B1 (en) Method and apparatus for providing reduced memory low density parity checkldpc codes
US8341492B2 (en) Quasi-cyclic LDPC (low density parity check) code construction
US8799736B2 (en) Communication device architecture for in-place constructed LDPC (low density parity check) code
US8392787B2 (en) Selective merge and partial reuse LDPC (Low Density Parity Check) code construction for limited number of layers Belief Propagation (BP) decoding
US8091013B2 (en) Multi-code LDPC (low density parity check) decoder
KR20080099191A (en) Operational parameter adaptable ldpc(low density parity check) decoder
US20160087648A1 (en) Puncture-aware low density parity check (LDPC) decoding
US20100031119A1 (en) Permuted accelerated LDPC (Low Density Parity Check) decoder
US20090013239A1 (en) LDPC (Low Density Parity Check) decoder employing distributed check and/or variable node architecture
KR20050040116A (en) Method and system for providing long and short block length low density parity check(ldpc) codes
US8407555B2 (en) LDPC codes robust to non-stationary narrowband ingress noise
KR102075946B1 (en) Method and apparatus for decoding of nonbinary parity-check codes in broadcasting and communication systems
KR100992048B1 (en) Multi-code ldpclow density parity check decoder
EP2991231A1 (en) Multilevel encoding and multistage decoding
EP2843844A1 (en) Transmitter and receiver
Blad Early-decision decoding of LDPC codes
EP2023492A2 (en) Multi-code LDPC (low density parity check) decoder
Kim Reduced-complexity VLSI architectures for binary and nonbinary LDPC codes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131018

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee