KR100727316B1 - 저밀도채리티체크 채널 디코딩 방법 및 장치 - Google Patents

저밀도채리티체크 채널 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR100727316B1
KR100727316B1 KR1020050046524A KR20050046524A KR100727316B1 KR 100727316 B1 KR100727316 B1 KR 100727316B1 KR 1020050046524 A KR1020050046524 A KR 1020050046524A KR 20050046524 A KR20050046524 A KR 20050046524A KR 100727316 B1 KR100727316 B1 KR 100727316B1
Authority
KR
South Korea
Prior art keywords
node
variable
check
values
memory
Prior art date
Application number
KR1020050046524A
Other languages
English (en)
Other versions
KR20060125947A (ko
Inventor
김용운
김동주
서재원
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050046524A priority Critical patent/KR100727316B1/ko
Priority to US11/258,459 priority patent/US7571375B2/en
Priority to JP2006091919A priority patent/JP2006340341A/ja
Priority to TW095118214A priority patent/TW200703923A/zh
Priority to DE200610026180 priority patent/DE102006026180A1/de
Priority to CN2006100923303A priority patent/CN1874164B/zh
Publication of KR20060125947A publication Critical patent/KR20060125947A/ko
Application granted granted Critical
Publication of KR100727316B1 publication Critical patent/KR100727316B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/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/65Purpose and implementation aspects
    • H03M13/6563Implementations using multi-port memories

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

저밀도채리티체크 채널 디코더는 노드 단위로 액세스 가능한 메모리를 이용하여 메시지 통과 알고리즘에 따른 노드 프로세스를 수행한다.
메시지 통과 디코딩, LDPC, 채널 디코딩, 메모리 최적화, Edge memory

Description

저밀도채리티체크 채널 디코딩 방법 및 장치{Method and apparatus for LDPC channel decoding}
도 1a, 도 1b, 도 1c는 각각 본 발명의 일 실시예에 따른 패리티 체크 행렬의 예를 보여주는 도면이다.
도 2a, 2b, 2c는 각각 도 1a, 도 1b, 도 1c의 패리티 체크 행렬을 이분 그래프(bipartite graph)로 표현한 예를 보여주는 도면이다.
도 3은 본 발명의 일 실시예에 따른 가변 노드 프로세스의 개념을 보여주는 도면이다.
도 4a, 도 4b는 본 발명의 일 실시예에 따른 체크 노드 프로세스의 개념을 보여주는 도면이다.
도 5는 본 발명의 일 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
도 6, 도 6b는 도 5의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다.
도 7은 본 발명의 다른 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
도 8은 도 7의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다.
도 9는 본 발명의 또 다른 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
도 10은 도 9의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 메모리 구조를 보여주는 도면이다.
도 12는 본 발명의 다른 실시예에 따른 메모리 구조를 보여주는 도면이다.
도 13은 본 발명의 또 다른 실시예에 따른 메모리 구조를 보여주는 도면이다.
도 14는 본 발명의 또 다른 실시예에 따른 메모리 구조를 보여주는 도면이다.
도 15는 본 발명의 일 실시예에 따른 수신기의 구성을 보여주는 블록도이다.
도 16은 본 발명의 다른 실시예에 따른 수신기의 구성을 보여주는 블록도이다.
도 17은 본 발명의 일 실시예에 따른 수신기의 동작을 보여주는 흐름도이다.
본 발명은 채널 코딩 분야에 관한 것으로서, 보다 상세하게는 저밀도패리티체크(LDPC)를 이용한 에러 정정 분야에 관한 것이다.
일반적으로 비디오, 오디오, 텍스트와 같은 다양한 정보들은 비트라고 불리는 이진 데이터로 표현되고, 이진 데이터로 표현된 정보들은 저장 시스템에 저장되 거나 또는 통신 시스템을 통해 전송된다. 저장 또는 전송 과정 중에 “0” 과 “1 ”로 표현된 정보에 “0 ”과 “1” 이 뒤바뀌거나 “0” 인지 “1” 인지 구별할 수 없는 에러가 발생할 수 있다. 일반적으로 신뢰성이 적은 채널에서 에러 발생을 줄이기 위하여 정보를 채널 코딩을 하고, 채널 코딩된 데이터를 전송한다.
채널 코딩 알고리즘은 크게 블록 코드와 컨볼루션 코드로 나눌 수 있다.
블록 코드는 선형 코드(linear code)와 순환 코드(cyclic code)로 나눌 수 있다. 선형 블록 인코더는 k비트의 입력 정보를 길이 n인 코드워드로 변환시킨다. 즉, 입력 정보에 전송 중에 발생한 에러를 검출하고 정정하는데 사용할 n-k비트들이 부가되어 코드워드가 된다. 순환 블록 인코더는 임의의 코드워드를 단순히 한 비트씩 한 방향으로 순환시켜 입력 정보를 코딩한다. 예를 들어 선형 코드의 임의 코드워드를 C = (C0, C1, ...Cn-1)라 하면, 이것을 순차적으로 한번 우측으로 순환시킬 경우 (C1,C2,...,...Cn-1,Cn)이 되고, 2번 순환시킬 경우 (C2, C3, ...C0,C1)이 된다. 이렇게 쉬프트 시키는 방법 등을 이용하여 전송 중 발생된 에러를 검출하고 정정한다. 블록 코드에는 Reed-Solomon 코드, BCH 코드, 블록 터보 코드, LDPC(Low Density Parity Check) 코드 등이 알려져 있다.
컨볼루션 인코더는 블록 인코더와 마찬가지로 k비트의 입력정보에 대하여 n비트의 코드워드를 발생시킨다. 그러나 각각의 코딩된 블록은 현재 해당되는 k비트 정보뿐만 아니라 컨볼루션 인코더의 기억소자의 차수 m에도 영향을 받아서 이전 m개의 비트들에도 영향을 받는다. 입력비트k,출력비트n,기억소자 차수 m인 부호를 (n, k, m)컨볼루션 코드라 한다. 컨볼루션 코드에는Tail-biting 컨볼루션 코드, Zero-tailing 컨볼루션 코드, 컨볼루셔널 터보 코드 등이 알려져 있다.
최근에 LDPC 코드는 매우 뛰어난 에러 정정 능력 때문에 많은 주목을 받아왔다. LDPC 코드는 Robert G. Gallager가 1963년 발표한 "Low Density Parity Check Codes"라는 논문을 통해 제안되었으며, 최근에 연구에 의하면 샤논의 한계에 근접한 성능을 보여준다.
LDPC 코드는 일반적으로 패리티 체크 행렬로 정의되는 블록 코드의 하나이지만, 패리티 체크 행렬 내에 존재하는 “1”의 개수에 “0”의 개수에 비해 상당히 적다는 특징을 갖는다. LDPC 방식으로 채널 코딩된 신호는 신뢰 전파 알고리즘(Belief Propagation Algorithm)으로 불리기도 하는 메시지 통과 알고리즘(Message Passing Algorithm)에 의해 디코딩된다.
빠른 속도와 낮은 복잡도를 갖는 LDPC 디코더를 구현하기 위하여 다양한 방법이 제안되고 있다. 예를 들면, 대한민국 공개특허 2004-0049864호는 로그 우도 값(log likelihood value)들을 1/2 ln2의 정수 배수들로 양자화하고, 양자화된 값에 대하여 검사 노드 및 가변 노드 프로세스를 수행하는 채널 디코더를 개시하고 있다. 대한민국 공개특허 2005-0004118호는 효율적인 메모리 사용을 위하여 맵핑된 행렬을 구성하고, 맵핑된 행렬을 이용한 채널 디코더를 개시하고 있다. 대한민국 공개특허 2003-0016720호는 신호대잡음비에 따라 디코딩에서 최대 반복 횟수를 설정하는 채널 디코더를 개시하고 있다. 미국등록특허 6539367호는 매우 다양한 코드들의 반복적 디코딩을 수행하기 위한 채널 디코더의 아키텍처를 개시하고 있다. Jason Kwok-San Lee의 논문 "Memory-Efficient Decoding of LDPC Codes"는 넌 유니폼 양자화된 신뢰 전파 알고리즘을 사용한 채널 디코더를 위한 노드 유닛의 아키텍처를 개시하고 있다. 대한민국공개특허 2005-0021108호는 최소 사이클 길이가 충분히 길도록 하는 블록 LDPC 방식의 채널 디코더를 개시하고 있다.
이와 같이 다양한 방식으로 구현된 기존의 채널 디코더들은 좋은 성능을 얻기 위하여 반복적인 노드 프로세스(iterative node process)를 수행한다. 노드 프로세스 과정은 필요한 데이터를 읽고 갱신된 데이터를 저장하는 메모리 동작을 필요로 한다. 실제로 반복적인 메모리 읽기 동작과 쓰기 동작은 노드 프로세스를 위한 시간의 상당부분을 차지한다. 따라서, 노드 프로세스에서 메모리 동작에 필요한 시간을 줄이는 것은 고속 채널 디코더를 구현하기 위하여 중요하다.
본 발명은 상기와 같은 필요에 따라 안출된 것으로, 최적화된 메모리 동작을 갖는 채널 디코더와 채널 디코딩 방법을 제공하는 것을 그 목적으로 한다.
본 발명은 채널 디코더를 위한 최적화된 메모리 동작을 갖는 메모리 아키텍처를 제공하는 것을 다른 목적으로 한다.
본 발명은 고속으로 동작 가능한 채널 디코더를 포함한 수신장치 및 수신방법을 제공하는 것을 또 다른 목적으로 한다.
이상의 목적들은 예시적인 것으로서 본 발명은 목적은 이상의 목적들에 한정되지 않는다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 채널 디코더 는 노드 단위로 액세스 가능한 메모리, 및 입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며, 상기 노드 프로세스 중에, 상기 프로세서는 상기 에지 값들을 상기 메모리로부터 노드 단위로 동시에 읽고, 상기 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 노드 단위로 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 채널 디코더는 노드 단위로 액세스 가능한 메모리, 및 입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며, 상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시에 수행하고, 어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 메모리로부터 동시에 읽고, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 또 다른 실시예에 따른 채널 디코더는 노드 단위로 액세스 가능한 제1 및 제2 메모리와, 입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며, 상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시에 수행하고, 어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 채널 디코딩 방법은 입력 값들을 받는 단계, 및 상기 입력 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 비트들을 출력하도록 노드 프로세스를 수행하는 단계를 포함하며, 상기 노드 프로세스 중에서 상기 에지 값들은 상기 메모리로부터 노드 단위로 동시에 읽히고, 상기 노드 프로세스에 의해 갱신된 에지 값들은 상기 메모리에 노드 단위로 동시에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 채널 디코딩 방법은 입력 값들을 받는 단계, 및 상기 입력 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며, 어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 메모리로부터 동시에 읽고, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 또 다른 실시예에 따른 채널 디코딩 방법은 입력 값들을 받는 단계, 및 상기 입력 값들 및 노드 단위로 액세스 가능한 제1 및 제2 메모리들에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며, 어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메시지 통과 디코딩 시스템에서 사용되는 메모리 장치는 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고, 하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되며, 특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명령에 응답해서 상기 노드와 연결된 에지 값들이 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되고, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 서로 다른 서브 메모리 블록에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 메시지 통과 디코딩 시스템에서 사용되는 메모리 장치는 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고, 하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되는 제1 메모리, 및 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고, 하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되는 제2 메모리를 포함하고, 특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명령에 응답해서 상기 노드와 연결된 에지 값들이 상기 제1 메모리의 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되면, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 제2 메모리의 상기 서로 다른 서브 메모리 블록에 저장되고, 상기 특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명령에 응답해서 상기 노드와 연결된 에지 값들이 상기 제2 메모리의 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되면, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 제1 메모리의 상기 서로 다른 서브 메모리 블록에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메시지 통과 디코딩 시스템에서 사용하기 위한, 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하는 메모리 장치의 동작 방법은 노드에 대한 노드 프로세스에서 프로세서로부터 노드에 대한 읽기 명령을 받는 단계, 상기 읽기 명령에 응답하여 상기 노드와 연결된 에지 값들을 상기 프로세서에 동시에 제공하는 단계, 상기 프로세서로부터 노드에 대한 저장 명령을 받는 단계, 및 상기 저장 명령에 응답하여 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 저장하는 단계를 포함하며, 상기 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 메시지 통과 디코딩 시스템에서 사용하기 위한, 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하는 제1 및 제2 메모리를 포함하는 메모리 장치 의 동작 방법은 노드에 대한 노드 프로세스에서 프로세서로부터 노드에 대한 읽기 명령을 받는 단계, 상기 읽기 명령에 응답하여 상기 제1 및 상기 제2 메모리 중 어느 한 메모리에서 상기 노드와 연결된 에지 값들을 상기 프로세서에 동시에 제공하는 단계, 상기 프로세서로부터 노드에 대한 저장 명령을 받는 단계, 및 상기 저장 명령에 응답하여 상기 제1 및 상기 제2 메모리 중 다른 메모리에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 저장하는 단계를 포함하며, 상기 제1 및 상기 제2 메모리에서, 상기 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시예에 따른 수신기는 수신된 신호를 복조하는 복조기, 및 상기 복조기로부터 채널 코딩된 값을 입력받아 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코더를 포함하며, 상기 채널 디코더는 노드 단위로 액세스 가능한 메모리, 및 상기 채널 코딩된 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 상기 정보 비트들을 출력하는 프로세서를 포함하며, 상기 노드 프로세스 중에, 상기 프로세서는 상기 에지 값들을 상기 메모리로부터 노드 단위로 동시에 읽고, 상기 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 노드 단위로 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 수신기는 수신된 신호를 복조하는 복조기, 및 상기 복조기로부터 채널 코딩된 값들을 입력받아 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코더를 포함하며, 상기 채널 디코더는 노드 단위로 액세스 가능한 제1 및 제2 메모리, 및 상기 채널 코딩된 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 상기 정보 비트들을 출력하는 프로세서를 포함하며, 상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시에 수행하고, 어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장한다.
상기와 같은 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 수신 방법은 수신된 신호를 복조하는 단계, 및 상기 복조 단계를 통해 받은 채널 코딩된 값들을 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코딩 단계를 포함하며, 상기 채널 디코딩 단계는 상기 채널 코딩된 값들을 입력받는 단계, 및 상기 채널 코딩된 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 상기 정보 비트들을 출력하도록 노드 프로세스를 수행하는 단계를 포함하며, 상기 노드 프로세스 중에서 상기 에지 값들은 상기 메모리로부터 노드 단위로 동시에 읽히고, 상기 노드 프로세스에 의해 갱신된 에지 값들은 상기 메모리에 노드 단위로 동시에 저장된다.
상기와 같은 목적을 달성하기 위한 본 발명의 또 다른 실시예에 따른 수신 방법은 수신된 신호를 복조하는 단계, 및 상기 복조 단계를 통해 받은 채널 코딩된 값들을 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디 코딩 단계를 포함하며, 상기 채널 디코딩 단계는 상기 채널 코딩된 값들을 받는 단계, 및 상기 채널 코딩된 값들 및 노드 단위로 액세스 가능한 제1 및 제2 메모리들에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며, 어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장한다.
이하, 본 발명의 바람직한 실시예를 첨부 도면을 참조하여 상세히 설명한다. 이하의 실시예들은 본 발명의 이해를 돕기 위한 예시적인 것으로서, 한정적인 것이 아니다.
도 1a는 규칙(regular) 코드 방식의 패리티 체크 행렬을 보여주고 있고, 도 1b는 불규칙(irregular) 코드 방식의 패리티 체크 행렬을 보여주고 있으며, 도 1c는 블록 패리티 체크 행렬을 보여주고 있다. 도 1a, 1b, 및 1c가 보여주는 패리티 체크 행렬들은 설명의 편의를 위한 것으로 실제 LDPC 코드의 패리티 체크 행렬은 달라질 수 있다.
LDPC 코드는 패리티 체크 행렬에 의해 정의될 수 있다. 패리티 체크 행렬을 가변 노드와 체크 노드 및 에지 정보를 포함한다. 패리티 체크 행렬에서 각각의 열은 가변 노드들 중 하나에 대응되고, 각각의 행은 체크 노드들 중 하나에 대응된 다. 패리티 체크 행렬에서 1의 값은 가변 노드와 체크 노드가 에지로 연결되었음을 나타낸다. LDPC 코드는 패리티 체크 행렬에 존재하는 1의 개수가 0의 개수보다 적은 것을 특징으로 한다.
도 1a를 참조하면, 가변 노드관점에서 가변 노드(V1)는 체크 노드들(C1, C3)과 연결되고, 가변 노드(V2)는 체크 노드들(C2, C4)과 연결되고, 가변 노드(V3)는 체크 노드들(C2, C3)과 연결되고, 가변 노드(V4)는 체크 노드들(C1, C4)과 연결되고, 가변 노드(V5)는 체크 노드들(C1, C2)과 연결되고, 가변 노드(V6)는 체크 노드들(C3, C4)과 연결되고, 가변 노드(V7)는 체크 노드들(C2, C4)과 연결되고, 가변 노드(V8)는 체크 노드들(C1, C3)과 연결된다. 체크 노드관점에서 체크 노드(C1)는 가변 노드들(V1, V4, V5, V8)과 연결되고, 체크 노드(C2)는 가변 노드들(V2, V3, V5, V7)과 연결되고, 체크 노드(C3)는 가변 노드들(V1, V3, V6, V8)과 연결되고, 체크 노드(C4)는 가변 노드들(V2, V4, V6, V7)과 연결된다. 즉, 모든 가변 노드는 2개의 체크 노드들과 연결되고, 모든 체크 노드는 4개의 가변 노드들과 연결된다. 이와 같이 가변 노드에 연결된 체크 노드들의 수가 일정하고, 체크 노드에 연결된 가변 노드들의 수가 일정한 패리티 체크 행렬에 의해 정의되는 LDPC 코드를 규칙 코드(regular code)라 한다.
도 1b를 참조하면, 가변 노드관점에서 가변 노드(V1)는 체크 노드들(C1, C3)과 연결되고, 가변 노드(V2)는 체크 노드(C2)와 연결되고, 가변 노드(V3)는 체크 노드들(C2, C3)과 연결되고, 가변 노드(V4)는 체크 노드(C4)와 연결되고, 가변 노드(V5)는 체크 노드들(C1, C2)과 연결되고, 가변 노드(V6)는 체크 노드들(C3, C4) 과 연결되고, 가변 노드(V7)는 체크 노드들(C2, C4)과 연결되고, 가변 노드(V8)는 체크 노드들(C1, C3)과 연결된다. 체크 노드관점에서 체크 노드(C1)는 가변 노드들(V1, V5, V8)과 연결되고, 체크 노드(C2)는 가변 노드들(V2, V3, V5, V7)과 연결되고, 체크 노드(C3)는 가변 노드들(V1, V3, V6, V8)과 연결되고, 체크 노드(C4)는 가변 노드들(V4, V6, V7)과 연결된다. 즉, 어떤 가변 노드는 2개의 체크 노드들과 연결되지만, 다른 어떤 가변 노드는 1개의 체크 노드와 연결된다. 마찬가지로 어떤 체크 노드는 4개의 가변 노드들과 연결되지만, 다른 체크 노드는 3개의 가변 노드들과 연결된다. 이와 같이 가변 노드에 연결된 체크 노드들의 수가 일정하지 않고, 체크 노드에 연결된 가변 노드들의 수가 일정하지 않은 패리티 체크 행렬에 의해 정의되는 LDPC 코드를 불규칙 코드(irregular code)라 한다.
도 1c는 도 1a의 패리티 체크 행렬 확장한 블록 패리티 체크 행렬의 예를 보여주고 있다. 도 1c의 블록 패리티 체크 행렬에 의해 정의되는 블록 LDPC 코드는 도 1a나 도 1b와 같은 기존의 LDPC 코드보다 병렬 처리가 쉽다는 장점을 갖는다. 즉, 기존의 패리티 체크 행렬의 “1”을 Z x Z 행렬로 대치함으로써 전체 코드워드의 크기를 확장할 수 있다. 이 때 Z를 리프팅 팩터 또는 확장 팩터라 부를 수 있다. 가장 간편하게 블록 패리티 체크 행렬을 생성하는 방법은 Z x Z 단위 행렬(identity matrix)로 기존 패리티 체크 행렬의 “1”을 대체하는 것이다. 그렇지만, 좋은 성능의 채널 코딩을 위해서는 최소 사이클을 크게 할 필요가 있다. 최소 사이클은 가변 노드와 연결 노드를 연결하는 에지가 구성하는 루프의 길이로 정의된다.
도 1c를 참조하면, 확장 팩터는 3이고, 최소 사이클을 길게 하기 위하여 3 3의 P 행렬로 도 1a의 패리티 체크 행렬을 확장했다. 즉, 가변 노드들과 체크 노드들은 3 x 1 벡터 값에 대응된다. 한편, 블록 패리티 체크 행렬은 규칙 패리티 체크 행렬이 아닌 불규칙 패리티 체크 행렬을 확장할 수도 있다. 이와 같은 패리티 체크 행렬은 아래와 같이 이분 그래프로 표현될 수 있다.
도 2a, 2b, 2c는 각각 도 1a, 도 1b, 도 1c의 패리티 체크 행렬을 이분 그래프로 표현한 예를 보여주는 도면이다.
도 2a를 참조하면, 가변 노드들(210)은 에지들(220)을 통해 체크 노드들(230)과 연결된다. 즉, 각각의 가변 노드들(V1 내지 V8)은 두 개의 체크 노드들과 연결되고, 각각의 체크 노드들(C1 내지 C4)은 4개의 가변 노드들과 연결됨을 알 수 있다.
도 2b를 참조하면, 가변 노드들(211)은 에지들(221)을 통해 체크 노드들(231)과 연결된다. 그러나 도 2a와 달리 일부 가변 노드들(V2, V4)은 각각 하나의 체크 노드와 연결되고, 일부 체크 노드들(C1, C4)은 각각 3개의 가변 노드들과 연결됨을 알 수 있다.
도 2c를 참조하면, 각 가변 노드는 3개의 가변 서브노드들을 포함하고, 각 체크 노드는 3개의 체크 서브노드들을 포함한다. 예를 들면 가변 노드(V1)는 가변 서브노드들(V11, V12, V13)을 포함하고, 체크 노드(C1)는 체크 서브노드들(C11, C12, C13)을 포함한다.
도 2a와 마찬가지로 가변 노드(V1)는 체크 노드들(C1, C3)과 연결되고, 가변 노드(V2)는 체크 노드들(C2, C4)과 연결되고, 가변 노드(V3)는 체크 노드들(C2, C3)과 연결되고, 가변 노드(V4)는 체크 노드들(C1, C4)과 연결되고, 가변 노드(V5)는 체크 노드들(C1, C2)과 연결되고, 가변 노드(V6)는 체크 노드들(C3, C4)과 연결되고, 가변 노드(V7)는 체크 노드들(C2, C4)과 연결되고, 가변 노드(V8)는 체크 노드들(C1, C3)과 연결된다. 구체적으로 가변 노드(V1)에 포함되는 가변 서브노드들의 연결을 살펴보면, 가변 서브노드(V11)는 체크 서브노드(C12)와 연결되고, 가변 서브노드(V12)는 체크 서브노드(C13)와 연결되고, 가변 서브노드(V13)는 체크 서브노드(C11)와 연결된다. 또한 가변 서브노드(V11)는 체크 서브노드(C32)와 연결되고, 가변 서브노드(V12)는 체크 서브노드(C32)와 연결되고, 가변 서브노드(V13)는 체크 서브노드(C32)와 연결된다.
도 2c를 참조하면, 각각의 가변 서브노드는 두 개의 체크 서브노드들과 연결되고, 각각의 체크 서브노드는 4 개의 가변 서브노드들과 연결된 것을 알 수 있다.
본 발명은 이와 같은 규칙 패리티 체크 행렬, 불규칙 패리티 체크 행렬, 또는 블록 패리티 체크 행렬들 중 어떤 것도 사용할 수 있다.
채널 디코딩 과정은 메시지 통과 알고리즘을 사용할 수 있다. 가변 노드에서 체크 노드로의 메시지를 V2C로 표시하고, 체크 노드에서 가변 노드로의 메시지를 C2V로 표시한다. 메시지는 가변 노드와 체크 노드간의 에지 값이 된다.
먼저 에지 값들을 0으로 설정하여 초기화된다. 가변 노드 프로세서는 가변 노드 프로세스를 수행하여 메시지(V2C)를 생성(또는 초기 값을 갱신)하고, 메시지(V2C)는 체크 노드 프로세스에 제공된다. 체크 노드 프로세서는 메시지(V2C)로 체 크 노드 프로세스를 수행하여 메시지(C2V)를 생성(또는 초기 값을 갱신)하고, 메시지(C2V)는 가변 노드 프로세서에 제공된다. 종료될 때까지 가변 노드 프로세서와 체크 노드 프로세서는 반복적으로 수행되며, 메시지(V2C)와 메시지(C2V)는 갱신된다.
일 실시예에 있어서 채널 디코딩 과정에서 모든 가변 노드에 대한 가변 노드 프로세스가 끝나면 체크 노드 프로세스가 수행되고, 모든 체크 노드에 대한 체크 노드 프로세스가 끝나면 가변 노드 프로세스가 수행될 수 있다. 다른 실시예에 있어서, 일부 가변 노드들에 대한 가변 노드 프로세스가 끝났을 때 체크 노드 프로세스가 수행되고, 일부 체크 노드들에 대한 체크 노드 프로세스가 끝났을 때 가변 노드 프로세스가 수행될 수 있다. 또 다른 실시예에 있어서, 가변 노드 및 체크 노드에 대한 노드 프로세스가 동시에 수행될 수도 있다.
노드 프로세스에 대해서는 도 3 및 도 4를 참조하여 설명한다. 설명의 편의상 규칙 패리티 체크 행렬에 의해 정의되는 도 1a 혹은 도 2a를 기준으로 설명한다. 그러나 이는 예시적인 것으로서, 도 1b 혹은 도 2b와 같은 불규칙 패리티 체크 행렬이나 도 1c 혹은 도 2c와 같은 블록 패리티 체크 행렬로 정의되는 LDPC 코드에 대한 채널 디코딩도 가능하다.
도 3은 본 발명의 일 실시예에 따른 가변 노드 프로세스의 개념을 보여주는 도면이다.
가변 노드 프로세스는 가변 노드 단위로 크게 채널 코딩된 값과 에지 값들을 읽는 단계와, 연산을 통해 가변 노드 값과 에지 값들을 갱신하는 단계로 나눌 수 있다. 에지 값들을 읽거나 저장할 때 가변 노드 단위로 동시에 읽거나 동시에 저장한다.
먼저 채널 코딩된 값과 에지 값들을 읽는 단계에서, C2V1은 체크 노드(C1)로부터 가변 노드로 보내는 메시지(에지 값)를 의미하고, C2V2는 체크 노드(C2)로부터 가변 노드로 보내는 메시지(에지 값)를 의미하고,C2V3은 체크 노드(C3)로부터 가변 노드로 보내는 메시지(에지 값)를 의미하고, C2V4는 체크 노드(C4)로부터 가변 노드로 보내는 메시지(에지 값)를 의미한다. LLR-Y는 수신된 채널 코딩된 값으로서, 로그형 값(log-likelihood value)이다.
예를 들어 도 1a에 대한 가변 노드(V1)에 대한 가변 노드 프로세스를 살펴본다. C2V1은 에지(1)를 통해 체크 노드(C1)에서 가변 노드(V1)로 전달되는 메시지이고, C2V3은 에지(2)를 통해 체크 노드(C3)에서 가변 노드(V1)로 전달되는 메시지이다. 가변 노드(V1)와 체크 노드들(C2, C4)은 연결되어 있지 않기 때문에 메시지들(C2V2, C2V4)은 0 의 값을 갖는다. 마찬가지로 가변 노드(V2)에 대하여, C2V2는 에지(3)를 통해 체크 노드(C2)에서 가변 노드(V2)로 전달되는 메시지이고, C2V4는 에지(4)를 통해 체크 노드(C4)에서 가변 노드(V1)로 전달되는 메시지이다.
다음으로 연산을 통해 가변 노드 값과 에지 값들을 갱신하는 단계를 살펴보면, V2C1은 가변 노드에서 체크 노드(C1)로 보내는 메시지를 의미하고, V2C2는 가변 노드에서 체크 노드(C2)로 보내는 메시지를 의미하고, V2C3은 가변 노드에서 체크 노드(C3)로 보내는 메시지를 의미하고, V2C4는 가변 노드에서 체크 노드(C4)로 보내는 메시지를 의미한다. V2C1은 C2V1, C2V2, C2V3, C2V4, 및 LLR-Y를 더한 값 에서 C2V1을 빼서 구하고, V2C2는 C2V1, C2V2, C2V3, C2V4, 및 LLR-Y를 더한 값에서 C2V2를 빼서 구하고, V2C3은 C2V1, C2V2, C2V3, C2V4, 및 LLR-Y를 더한 값에서 C2V3을 빼서 구하고, V2C4는 C2V1, C2V2, C2V3, C2V4, 및 LLR-Y를 더한 값에서 C2V4를 빼서 구한다. 한편, 가변 노드 값은 C2V1, C2V2, C2V3, C2V4, 및 LLR-Y를 더한 값이 되며, 종료 조건이 되면 가변 노드 값의 부호로부터 코드워드를 구성하는 비트 값이 결정된다. 코드워드가 결정되면 채널 코딩되기 전의 원래 정보 비트들이 결정된다.
예를 들어 도 1a에 대한 가변 노드(V1)에 대한 가변 노드 프로세스를 살펴본다. V2C1은 에지(1)를 통해 가변 노드(V1)에서 체크 노드(C1)로 전달되는 메시지이고, V2C3은 에지(2)를 통해 가변 노드(V1)에서 체크 노드(C3)로 전달되는 메시지이다. 마찬가지로 가변 노드(V2)에 대하여, C2V2는 에지(3)를 통해 체크 노드(C2)에서 가변 노드(V2)로 전달되는 메시지이고, C2V4는 에지(4)를 통해 체크 노드(C4)에서 가변 노드(V1)로 전달되는 메시지이다.
도 4a는 체크 노드 프로세스에서 메시지 값의 크기를 구하는 과정을 보여준다.
체크 노드 프로세스는 체크 노드 단위로 크게 에지 값들(메시지들)을 읽는 단계와, 연산을 통해 에지 값들(메시지들)을 갱신하는 단계로 나눌 수 있다. 메시지를 읽거나 저장할 때는 체크 노드 단위로 동시에 읽거나 동시에 저장한다.
V2C1은 가변 노드(V1)에서 체크 노드로 보내는 메시지를 의미하고, V2C2는 가변 노드(V2)에서 체크 노드로 보내는 메시지를 의미하고, V2C3은 가변 노드(V3) 에서 체크 노드로 보내는 메시지를 의미하고, V2C4는 가변 노드(V4)에서 체크 노드로 보내는 메시지를 의미하고, V2C5는 가변 노드(V5)에서 체크 노드로 보내는 메시지를 의미하고, V2C6은 가변 노드(V6)에서 체크 노드로 보내는 메시지를 의미하고, V2C7은 가변 노드(V7)에서 체크 노드로 보내는 메시지를 의미하고, V2C8은 가변 노드(V8)에서 체크 노드로 보내는 메시지를 의미한다.
예를 들어, 도 2a에 대한 체크 노드(C1)에 대한 체크 노드 프로세스를 살펴본다. V2C1은 에지(1)를 통해 가변 노드(V1)에서 체크 노드(C1)로 전달되는 메시지이고, V2C4는 에지(7)를 통해 가변 노드(V4)에서 체크 노드(C1)로 전달되는 메시지이고, V2C5는 에지(9)를 통해 가변 노드(V5)에서 체크 노드(C1)로 전달되는 메시지이고, V2C8은 에지(15)를 통해 가변 노드(V8)에서 체크 노드(C1)로 전달되는 메시지이다. 마찬가지로 체크 노드(C2)에 대한 체크 노드 프로세스를 살펴본다. V2C2는 에지(3)를 통해 가변 노드(V2)에서 체크 노드(C2)로 전달되는 메시지이고, V2C3은 에지(5)를 통해 가변 노드(V3)에서 체크 노드(C2)로 전달되는 메시지이고, V2C5는 에지(10)를 통해 가변 노드(V5)에서 체크 노드(C2)로 전달되는 메시지이고, V2C7은 에지(13)를 통해 가변 노드(V7)에서 체크 노드(C2)로 전달되는 메시지이다.
C2V1은 체크 노드로부터 가변 노드(V1)로 보내는 메시지의 크기를 의미하고, C2V2는 체크 노드로부터 가변 노드(V2)로 보내는 메시지의 크기를 의미하고, C2V3은 체크 노드로부터 가변 노드(V3)로 보내는 메시지의 크기를 의미하고, C2V4는 체크 노드로부터 가변 노드(V4)로 보내는 메시지의 크기를 의미하고, C2V5는 체크 노드로부터 가변 노드(V5)로 보내는 메시지의 크기를 의미하고, C2V6은 체크 노드로 부터 가변 노드(V6)로 보내는 메시지의 크기를 의미하고, C2V7은 체크 노드로부터 가변 노드(V7)로 보내는 메시지의 크기를 의미하고, C2V8은 체크 노드로부터 가변 노드(V8)로 보내는 메시지의 크기를 의미한다. C2V1은 V2C1, V2C2, V2C3, V2C4, V2C5, V2C6, V2C7, V2C8을 각각 비선형 함수 Φ()에 입력하여 얻은 값들을 더한 값에서 V2C1을 비선형 함수 Φ()에 입력하여 얻은 값을 빼서 구한다. C2V2는 V2C1, V2C2, V2C3, V2C4, V2C5, V2C6, V2C7, V2C8을 각각 비선형 함수 Φ()에 입력하여 얻은 값들을 더한 값에서 V2C2를 비선형 함수 Φ()에 입력하여 얻은 값을 빼서 구한다. 마찬가지로 C2V3, C2V4, C2V5, C2V6, C2V7, C2V8 값을 구할 수 있다. 비선형 함수 Φ()의 출력을 계산할 때 직접 계산할 수도 있지만, 맵핑 테이블을 사용하는 방식이 사용하거나 ln2로 양자화하는 방식으로 계산할 수도 있다.
예를 들어, 도 2a에 대한 체크 노드(C1)에 대한 체크 노드 프로세스를 살펴본다. C2V1은 에지(1)를 통해 체크 노드(C1)에서 가변 노드(V1)로 전달되는 메시지의 크기이고, C2V4는 에지(7)를 통해 체크 노드(C1)에서 가변 노드(V4)로 전달되는 메시지의 크기이고, C2V5는 에지(9)를 통해 체크 노드(C1)에서 가변 노드(V5)로 전달되는 메시지의 크기이고, C2V8은 에지(15)를 통해 체크 노드(C1)에서 가변 노드(V8)로 전달되는 메시지의 크기이다. 마찬가지로 체크 노드(C2)에 대한 체크 노드 프로세스를 살펴본다. C2V2는 에지(3)를 통해 체크 노드(C2)에서 가변 노드(V2)로 전달되는 메시지의 크기이고, C2V3은 에지(5)를 통해 체크 노드(C2)에서 가변 노드(V3)로 전달되는 메시지의 크기이고, C2V5는 에지(10)를 통해 체크 노드(C2)에서 가변 노드(V5)로 전달되는 메시지의 크기이고, C2V7은 에지(13)를 통해 체크 노드(C2)에서 가변 노드(V7)로 전달되는 메시지의 크기이다.
도 4b는 체크 노드 프로세스에서 메시지 값의 부호를 구하는 과정을 보여준다.
V2C1은 가변 노드(V1)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C2는 가변 노드(V2)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C3은 가변 노드(V3)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C4는 가변 노드(V4)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C5는 가변 노드(V5)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C6은 가변 노드(V6)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C7은 가변 노드(V7)에서 체크 노드로 보내는 메시지의 부호를 의미하고, V2C8은 가변 노드(V8)에서 체크 노드로 보내는 메시지의 부호를 의미한다.
예를 들어, 도 2a에 대한 체크 노드(C1)에 대한 체크 노드 프로세스를 살펴본다. V2C1은 에지(1)를 통해 가변 노드(V1)에서 체크 노드(C1)로 전달되는 메시지이고, V2C4는 에지(7)를 통해 가변 노드(V4)에서 체크 노드(C1)로 전달되는 메시지이고, V2C5는 에지(9)를 통해 가변 노드(V5)에서 체크 노드(C1)로 전달되는 메시지이고, V2C8은 에지(15)를 통해 가변 노드(V8)에서 체크 노드(C1)로 전달되는 메시지이다. 마찬가지로 체크 노드(C2)에 대한 체크 노드 프로세스를 살펴본다. V2C2는 에지(3)를 통해 가변 노드(V2)에서 체크 노드(C2)로 전달되는 메시지이고, V2C3은 에지(5)를 통해 가변 노드(V3)에서 체크 노드(C2)로 전달되는 메시지이고, V2C5는 에지(10)를 통해 가변 노드(V5)에서 체크 노드(C2)로 전달되는 메시지이고, V2C7은 에지(13)를 통해 가변 노드(V7)에서 체크 노드(C2)로 전달되는 메시지이다.
C2V1은 체크 노드로부터 가변 노드(V1)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V2는 체크 노드로부터 가변 노드(V2)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V3은 체크 노드로부터 가변 노드(V3)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V4는 체크 노드로부터 가변 노드(V4)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V5는 체크 노드로부터 가변 노드(V5)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V6은 체크 노드로부터 가변 노드(V6)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V7은 체크 노드로부터 가변 노드(V7)로 보내는 메시지의 부호를 결정하는 데 사용되고, C2V8은 체크 노드로부터 가변 노드(V8)로 보내는 메시지의 부호를 결정하는 데 사용된다. 메시지의 부호는 C2V값이 0보다 클 때 양수이고, 0보다 작을 때 음수이다.
이 때, 체크 노드 프로세서의 부호를 연산하는 데에 사용하는 연산은 모두 논리적 Exclusive OR (XOR) 연산이므로 도 4b에서 도시된 산술적인 +, - 연산은 모두 논리적 XOR 연산으로 대치된다. 따라서 모든 연산 결과에서는 짝수 개의 음수가 있으면 그 출력은 0이 되고, 홀수 개의 음수가 존재하면 출력은 1이 된다.
예를 들어, 도 2a에 대한 체크 노드(C1)에 대한 체크 노드 프로세스를 살펴본다. C2V1은 에지(1)를 통해 체크 노드(C1)에서 가변 노드(V1)로 전달되는 메시지의 부호와 관계되고, C2V4는 에지(7)를 통해 체크 노드(C1)에서 가변 노드(V4)로 전달되는 메시지의 부호와 관계되고, C2V5는 에지(9)를 통해 체크 노드(C1)에서 가변 노드(V5)로 전달되는 메시지의 부호와 관계되고, C2V8은 에지(15)를 통해 체크 노드 (C1)에서 가변 노드(V8)로 전달되는 메시지의 부호와 관계된다.. 마찬가지로 체크 노드(C2)에 대한 체크 노드 프로세스를 살펴본다. C2V2는 에지(3)를 통해 체크 노드(C2)에서 가변 노드(V2)로 전달되는 메시지의 부호와 관계되고, C2V3은 에지(5)를 통해 체크 노드(C2)에서 가변 노드(V3)로 전달되는 메시지의 부호와 관계되고, C2V5는 에지(10)를 통해 체크 노드(C2)에서 가변 노드(V5)로 전달되는 메시지의 부호와 관계되고, C2V7은 에지(13)를 통해 체크 노드(C2)에서 가변 노드(V7)로 전달되는 메시지의 부호와 관계된다.
도 5는 본 발명의 일 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
채널 디코더는 채널 코딩된 값들을 입력받는 버퍼(510)와 노드 프로세스를 수행하는 프로세서(520)와 메모리(530)를 포함한다.
버퍼(510)는 노드 프로세스에 사용될 채널 코딩된 값(수신된 코드워드)들을 저장한다. 채널 코딩된 값들은 잡음 등에 의해 왜곡된 값을 포함할 수 있다.
메모리(530)는 노드 프로세스에서 필요한 에지 값들을 노드 단위로 동시에 읽거나 갱신된 에지 값들을 노드 단위로 동시에 저장한다. 즉, 메모리(530)는 노드 단위로 액세스 가능한데, 노드 단위로 액세스 가능한 메모리의 아키텍처에 대해서는 도 11 내지 도 14를 참조하여 후술한다.
프로세서(520)는 메모리(530)에 저장된 에지 값들을 노드 단위로 동시에 읽어 노드 프로세스를 수행하고, 그 결과 갱신된 에지 값들을 메모리(530)에 노드 단위로 동시에 저장한다.
예를 들어, 도 2a에서 가변 노드(V1)에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 에지(1) 및 에지(2)의 값들을 동시에 읽는다. 또 프로세서(520)는 노드 프로세스 결과로 갱신된 에지(1) 및 에지(2)의 값들을 메모리(530)에 동시에 저장한다. 가변 노드(V2)에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 에지(3) 및 에지(4)의 값들을 동시에 읽는다. 또 프로세서(520)는 노드 프로세스 결과로 갱신된 에지(3) 및 에지(4)의 값들을 메모리(530)에 동시에 저장한다. 마찬가지로 다른 가변 노드들에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 가변 노드 단위로 에지 값들을 동시에 읽거나 가변 노드 단위로 에지 값들을 동시에 저장한다. 프로세서(520)는 이와 같은 가변 노드 프로세스만을 수행하기 위한 하드웨어인 가변 노드 프로세스(522)를 포함할 수 있다.
예를 들어, 도 2a에서 체크 노드(C1)에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 에지(1), 에지(7), 에지(9) 및 에지(15)의 값들을 동시에 읽는다. 또 프로세서(520)는 노드 프로세스 결과로 갱신된 에지(1), 에지(7), 에지(9) 및 에지(15)의 값들을 메모리(530)에 동시에 저장한다. 체크 노드(C2)에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 에지(3), 에지(5), 에지(10) 및 에지(13)의 값들을 동시에 읽는다. 또 프로세서(520)는 노드 프로세스 결과로 갱신된 에지(3), 에지(5), 에지(10) 및 에지(13)의 값들을 메모리(530)에 동시에 저장한다. 마찬가지로 다른 체크 노드들에 대한 노드 프로세스를 수행할 때, 프로세서(520)는 메모리(530)에서 체크 노드 단위로 에지 값 들을 동시에 읽거나 체크 노드 단위로 에지 값들을 동시에 저장한다. 프로세서(520)는 이와 같은 체크 노드 프로세스만을 수행하기 위한 하드웨어인 체크 노드 프로세스(524)를 포함할 수 있다.
메시지 통과 알고리즘에 따른 가변 노드 프로세스와 체크 노드 프로세스를 계속수행하며 종료 조건이 되면 가변 노드 프로세스에서 갱신된 가변 노드 값들로부터 코드워드를 결정하고, 코드워드에 따른 채널 코딩되기 전의 원래 비트들을 출력한다. 프로세서(520)는 이와 같은 과정을 수행하기 위한 하드웨어인 판정기(526)를 포함할 수 있다.
이와 같이 가변 노드 프로세서와 체크 노드 프로세서 및 판정기가 하나의 프로세서에 포함되도록 채널 디코더를 구현할 수 있지만, 개별적으로 채널 디코더 내에 존재하도록 구현할 수도 있다. 프로세서가 소프트웨어를 실행시키면서 가변 노드 프로세서와 체크 노드 프로세서 및 판정기의 역할을 하도록 구현하는 것도 가능하다.
도 6a, 도 6b는 도 5의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다. 먼저 에지 값들을 초기화한다(S602). 예를 들면, 가변 노드 프로세스에 처음 사용될 에지 값들을 "0"으로 설정한다. 에지 값이 초기화되면, 채널 코딩된 값들을 입력받는다(S604). 일 실시예에 있어서, 채널 코딩된 값들은 로그형 값으로 입력받거나, 입력받은 값을 로그형 값으로 변환시킨다. 한편, S602와 S604의 순서가 바뀔 수도 있다.
초기화와 채널 코딩된 값들의 입력이 끝나면 가변 노드 프로세스(S610)를 수 행한다. 가변 노드 프로세스(S610)는 에지 값들을 가변 노드 단위로 동시에 읽는 단계(S612)와, 에지 값들과 가변 노드 값을 갱신하는 단계(S614)와, 갱신된 에지 값들을 가변 노드 단위로 동시에 저장하는 단계(S616), 및 모든 가변 노드 프로세스를 수행했는지를 판단하는 단계(S618)를 포함한다.
구체적으로 동작을 살펴보면, 가변 노드(V1)에 대한 에지 값들을 동시에 읽는다(S612). 그리고 에지 값들과 가변 노드 값을 갱신한다(S614). 갱신된 에지 값들을 동시에 메모리에 저장한다(S616). 그리고 나서 모든 가변 노드 프로세스가 수행됐는지를 판단하는데(S618), 가변 노드 프로세스가 수행되지 않은 가변 노드들이 있으므로 단계 S612를 다시 수행한다. 즉, 가변 노드(V2)에 대한 에지 값들을 동시에 읽고(S612), 가변 노드(V2)에 대한 에지 값들 및 가변 노드 값을 갱신하고(S614), 갱신된 에지 값들을 동시에 메모리에 저장한다(S616). 그리고 나서 모든 가변 노드 프로세스가 수행됐는지를 판단하고(S618), 단계(S612)를 다시 수행한다. 이와 같은 단계는 남은 가변 노드들(V3 내지 V8)에 대해 수행된다.
이와 같은 가변 노드의 순서는 예시적인 것으로서, 예를 들면, 가변 노드(V8)에 대한 가변 노드 프로세스를 먼저 수행하고 마지막으로 가변 노드(V1)에 대한 가변 노드 프로세스를 수행할 수 있다.
모든 가변 노드에 대한 가변 노드 프로세스가 수행됐으며, 체크 노드 프로세스를 수행한다.
체크 노드 프로세스(S620)는 에지 값들을 체크 노드 단위로 동시에 읽는 단계(S622)와, 에지 값들을 갱신하는 단계(S624)와 갱신된 에지 값들을 체크 노드 단 위로 동시에 저장하는 단계(S626), 및 모든 체크 노드 프로세스를 수행했는지를 판단하는 단계(S628)를 포함한다.
구체적으로 동작을 살펴보면, 체크 노드(C1)에 대한 에지 값들을 동시에 읽는다(S622). 그리고 에지 값들을 갱신한다(S624). 갱신된 에지 값들을 동시에 메모리에 저장한다(S626). 그리고 나서 모든 체크 노드 프로세스가 수행됐는지를 판단하는데(S628), 체크 노드 프로세스가 수행되지 않은 체크 노드들이 있으므로 단계 S622를 다시 수행한다. 즉, 체크 노드(C2)에 대한 에지 값들을 동시에 읽고(S622), 체크 노드(C2)에 대한 에지 값들을 갱신하고(S624), 갱신된 에지 값들을 동시에 메모리에 저장한다(S626). 그리고 나서 모든 체크 노드 프로세스가 수행됐는지를 판단하고(S628), 단계(S622)를 다시 수행한다. 이와 같은 단계는 남은 체크 노드들(C3, C4)에 대해 수행된다.
이와 같은 체크 노드의 순서는 예시적인 것으로서, 예를 들면, 체크 노드(C4)에 대한 체크 노드 프로세스를 먼저 수행하고 마지막으로 체크 노드(C1)에 대한 체크 노드 프로세스를 수행할 수 있다.
한편, 모든 가변 노드들에 대한 가변 노드 프로세스를 마치고 체크 노드들에 대한 체크 노드 프로세스를 진행할 수도 있지만, 일부 가변 노드들에 대한 가변 노드 프로세스와 일부 체크 노드들에 대한 노드 프로세스를 교대로 진행할 수도 있다.
모든 노드들에 대한 노드 프로세스가 끝나면 종료 조건이 됐는지를 판단한다(S630).
일 실시예에 있어서, 체크 노드 프로세스에 의해 갱신된 에지 값들의 부호들의 XOR값이 0이 되면 종료 조건이 만족된다. 즉, 체크 노드 프로세스에 의해 갱신된 에지 값들이 모두 양수가 되거나 짝수 개의 음수만을 포함하는 경우에 종료 조건이 만족된다. 다른 실시예에 있어서, 노드 프로세스를 수행한 횟수가 사전에 설정된 최대 반복 횟수에 도달한 경우에 종료 조건이 만족된다. 최대 반복 횟수는 고정된 값일 수도 있지만, 통신 환경에 따라 적응적으로 변화되는 값일 수도 있다.
종료 조건이 만족되지 않은 경우에 노드 프로세스(S610, S620)를 반복적으로 수행하며, 종료 조건이 만족되면 코드워드를 결정하고 결정된 코드워드에 대응되는 비트들을 출력한다(S640).
7은 본 발명의 다른 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
채널 디코더는 채널 코딩된 값들을 입력받는 버퍼(710)와 노드 프로세스를 수행하는 프로세서(720)와 메모리(730)를 포함한다.
버퍼(710)는 노드 프로세스에 사용될 채널 코딩된 값(수신된 코드워드)들을 저장한다. 채널 코딩된 값들은 잡음 등에 의해 왜곡된 값을 포함할 수 있다.
메모리(730)는 노드 프로세스에서 필요한 에지 값들을 노드 단위로 동시에 읽거나 갱신된 에지 값들을 노드 단위로 동시에 저장한다.
도 7의 채널 디코더의 프로세서(720)는 복수의 노드들에 대한 노드 프로세스를 동시에 수행할 수 있는 노드 프로세서들(720-1 내지 720-n)과 판정기(도시되지 않음)를 포함한다. 이러한 복수의 노드 프로세서들과 판정기는 하나의 프로세서에 포함되지 않고 개별적으로 떨어져서 구현될 수도 있다.
개별 노드 프로세서는 가변 노드 프로세스와 체크 노드 프로세스 중 어느 하나만을 수행하도록 구현될 수도 있지만, 양쪽 모두를 수행하도록 구현될 수도 있다.
또한, 프로세서(720)가 소프트웨어를 실행시키면서 복수의 노드 프로세서들(720-1 내지 720-n)과 판정기(도시되지 않음)의 역할을 하도록 구현하는 것도 가능하다.
도 8은 도 7의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다. 설명의 편의상 두 개의 노드 프로세서를 포함하는 채널 디코더의 동작을 설명한다.
먼저 에지 값들을 초기화한다(S802). 예를 들면, 가변 노드 프로세스에 처음 사용될 에지 값들을 "0"으로 설정한다. 에지 값이 초기화되면, 채널 코딩된 값들을 입력받는다(S804). 일 실시예에 있어서, 채널 코딩된 값들은 로그형 값으로 입력받거나, 입력받은 값을 로그형 값으로 변환시킨다. 한편, S802와 S804의 순서가 바뀔 수도 있다.
초기화와 채널 코딩된 값들의 입력이 끝나면 복수의 노드에 대한 에지 값들을 동시에 읽는다(S812). 예를 들어, 가변 노드들(V1, V2)에 대한 에지 값들을 동시에 읽는다.
그리고 나서 가변 노드(V1)에 대한 노드 프로세스와 가변 노드(V2)에 대한 연산을 하여 가변 노드들(V1, V2)의 에지 값들과 가변 노드 값들을 갱신한다(S814). 그리고 나서 갱신된 에지 값들을 메모리에 동시에 저장한다(S816). 그리 고 나서 모든 노드에 대한 프로세스가 끝났는지를 판단한다(S818). 남아 있는 노드들이 있으므로 다시 단계(S812)를 수행한다. 이러한 방식으로 두 개씩 가변 노드들에 대한 연산을 하여 모든 가변 노드들에 대한 연산이 끝나면, 두 개씩 체크 노드들에 대한 연산을 한다.
모든 노드 프로세스가 수행되면 종료 조건이 만족됐는지를 판단하고(S820), 종료 조건이 만족되지 않은 경우에 노드 프로세스(S812 내지 S818)를 반복적으로 수행한다.
종료 조건이 만족되면 결정된 비트들을 출력한다(S830).
이와 같은 노드 프로세스에서 대상 노드의 순서는 바뀔 수 있다. 예를 들면, 가변 노드(V1)와 체크 노드(C1)가 동시에 수행될 수도 있다.
도 9는 본 발명의 또 다른 실시예에 따른 채널 디코더의 구성을 보여주는 블록도이다.
채널 디코더는 채널 코딩된 값들을 입력받는 버퍼(910)와 노드 프로세스를 수행하는 프로세서(920)와 제1 메모리(930-1) 및 제2 메모리(930-2)를 포함한다.
버퍼(910)는 노드 프로세스에 사용될 채널 코딩된 값(수신된 코드워드)들을 저장한다. 채널 코딩된 값들은 잡음 등에 의해 왜곡된 값을 포함할 수 있다.
제1 및 제2 메모리(930-1, 930-2)는 노드 프로세스에서 필요한 에지 값들을 노드 단위로 동시에 읽거나 갱신된 에지 값들을 노드 단위로 동시에 저장한다.
도 9의 채널 디코더의 프로세서(920)는 복수의 노드들에 대한 노드 프로세스를 동시에 수행할 수 있는 노드 프로세서들(920-1 내지 920-n)과 판정기(도시되지 않음)를 포함한다. 이러한 복수의 노드 프로세서들과 판정기는 하나의 프로세서에 포함되지 않고 개별적으로 떨어져서 구현될 수도 있다.
개별 노드 프로세서는 가변 노드 프로세스와 체크 노드 프로세스 중 어느 하나만을 수행하도록 구현될 수도 있지만, 양쪽 모두를 수행하도록 구현될 수도 있다. 설명의 편의상 노드 프로세서의 수는 2개이고, 하나는 가변 노드 프로세스를 수행하는 가변 노드 프로세서이고, 다른 하나는 체크 노드 프로세스만을 수행하는 체크 노드 프로세서인 것을 기준으로 설명한다.
가변 노드 프로세서는 가변 노드 단위로 체크-가변 에지 값들을 제1 메모리(930-1)로부터 동시에 읽어 가변 노드 프로세스를 수행한다. 가변 노드 프로세서는 가변 노드 프로세스를 수행하여 갱신시킨 가변-체크 에지 값들을 제2 메모리(930-2)에 동시에 저장한다.
예를 들어, 도 2a에서 가변 노드(V1)에 대한 노드 프로세스를 수행할 때, 가변 노드 프로세서는 제1 메모리(930-1)에서 체크-가변 에지(1) 및 체크-가변 에지(2)의 값들을 동시에 읽는다. 가변 노드 프로세서는 노드 프로세스 결과로 갱신된 가변-체크 에지(1) 및 가변-체크 에지(2)의 값들을 제2 메모리(930-2)에 동시에 저장한다. 가변 노드(V2)에 대한 노드 프로세스를 수행할 때, 가변 노드 프로세서는 제1 메모리(930-1)에서 체크-가변 에지(3) 및 체크-가변 에지(4)의 값들을 동시에 읽는다. 가변 노드 프로세서는 노드 프로세스 결과로 갱신된 가변-체크 에지(3) 및 가변-체크 에지(4)의 값들을 제2 메모리(930-2)에 동시에 저장한다. 마찬가지로 가변 노드 프로세서는 체크-가변 에지들(4 내지 16)을 제1 메모리(930-1)로부터 가변 노드 단위로 동시에 읽고, 갱신된 가변-체크 에지들(4 내지 16)을 제2 메모리(930-2)에 가변 노드 단위로 동시에 저장한다.
체크 노드 프로세서는 체크 노드 단위로 가변-체크 에지 값들을 제2 메모리(930-2)로부터 동시에 읽어 체크 노드 프로세스를 수행한다. 체크 노드 프로세서는 체크 노드 프로세스를 수행하여 갱신시킨 체크-가변 에지 값들을 제1 메모리(930-1)에 동시에 저장한다.
예를 들어, 도 2a에서 체크 노드(C1)에 대한 노드 프로세스를 수행할 때, 체크 노드 프로세서는 제2 메모리(930-2)에서 가변-체크 에지들(1, 7, 9, 14)의 값들을 동시에 읽는다. 체크 노드 프로세서는 노드 프로세스 결과로 갱신된 체크-가변 에지들(1, 7, 9, 14)의 값들을 제1 메모리(930-1)에 동시에 저장한다. 체크 노드(C2)에 대한 노드 프로세스를 수행할 때, 체크 노드 프로세서는 제2 메모리(930-2)에서 가변-체크 에지들(3, 5, 10, 13)의 값들을 동시에 읽는다. 체크 노드 프로세서는 노드 프로세스 결과로 갱신된 체크-가변 에지들(3, 5, 10, 13)의 값들을 제1 메모리(930-1)에 동시에 저장한다. 체크 노드(C3)에 대한 노드 프로세스를 수행할 때, 체크 노드 프로세서는 제2 메모리(930-2)에서 가변-체크 에지들(2, 6, 11, 16)의 값들을 동시에 읽는다. 체크 노드 프로세서는 노드 프로세스 결과로 갱신된 체크-가변 에지들(2, 6, 11, 16)의 값들을 제1 메모리(930-1)에 동시에 저장한다. 체크 노드(C4)에 대한 노드 프로세스를 수행할 때, 체크 노드 프로세서는 제2 메모리(930-2)에서 가변-체크 에지들(4, 8, 12, 14)의 값들을 동시에 읽는다. 체크 노드 프로세서는 노드 프로세스 결과로 갱신된 체크-가변 에지들(4, 8, 12, 14)의 값 들을 제1 메모리(930-1)에 동시에 저장한다.
가변 노드 프로세스와 체크 노드 프로세스는 교대로 진행될 수도 있지만, 동시에 진행될 때 채널 디코딩의 속도가 빨라진다.
도 9의 채널 디코더는 제1 메모리에서 에지 값을 읽어 갱신하고 갱신된 에지 값을 제2 메모리에 저장하지만, 제1 메모리에서 에지 값을 읽어 갱신하고 갱신된 에지 값을 제1 메모리에 저장하도록 채널 디코더를 구현할 수 있다. 또한, 노드 단위로 액세스 가능한 메모리는 3이상이 포함되도록 채널 디코더를 구현할 수도 있다.
본 발명의 실시예에 따른 채널 디코더들은 버퍼, 프로세서, 메모리가 모두 하나의 칩에 포함된 주문형반도체(ASIC)로 구현될 수 있고, 버퍼와, 프로세서, 메모리가 모두 개별적인 컴포넌트로 구현될 수도 있다. 또한, 일부 구성요소(예를 들면, 버퍼)를 제외한 구성요소들(예를 들면, 프로세서, 메모리)이 하나의 칩에 포함된 주문형반도체(ASIC)로 구현될 수도 있다.
도 10은 도 9의 채널 디코더의 채널 디코딩 과정을 보여주는 흐름도이다.
먼저 에지 값들을 초기화한다(S1002). 예를 들면, 가변 노드 프로세스에 처음 사용될 에지 값들을 "0"으로 설정한다. 에지 값이 초기화되면, 채널 코딩된 값들을 입력받는다(S1004). 일 실시예에 있어서, 채널 코딩된 값들은 로그형 값으로 입력받거나, 입력받은 값을 로그형 값으로 변환시킨다. 한편, S1002와 S1004의 순서가 바뀔 수도 있다.
초기화와 채널 코딩된 값들의 입력이 끝나면 동시에 두 개의 노드 프로세스 가 수행된다. 예를 들면, 가변 노드 프로세스와 체크 노드 프로세스가 동시에 수행될 수 있다.
한 노드 프로세스는 제1 메모리로부터 노드에 대한 에지 값들을 동시에 읽는 단계(S1012)와, 에지 값들 및 가변 노드 값을 갱신하는 단계(S1014)와, 갱신된 에지 값들을 제2 메모리에 노드 단위로 동시에 저장하는 단계(S1016)와, 종료 조건이 만족되는지를 판단하는 단계(S1020)를 포함한다.
다른 노드 프로세스는 제2 메모리로부터 노드에 대한 에지 값들을 동시에 읽는 단계(S1013)와, 에지 값들 및 노드 값을 갱신하는 단계(S1015)와, 갱신된 에지 값들을 제1 메모리에 노드 단위로 동시에 저장하는 단계(S1017)와, 종료 조건이 만족되는지를 판단하는 단계(S1021)를 포함한다.
종료 조건이 만족되면 코드워드를 결정하고 코드워드에 대응되는 비트들을 출력한다(S1030).
도 11은 본 발명의 일 실시예에 따른 메모리 구조를 보여주는 도면이다.
메모리는 복수의 서브메모리 블록들을 포함한다. 도 11에서 서브 메모리 블록의 경계(1110)는 점선으로 표시된다. 도 11의 각 서브 메모리 블록은 독립적으로 동작하도록 구현된다. 예를 들면 서브 메모리 블록(SMB2)에 대한 읽기 동작을 수행할 때 서브 메모리 블록(SMB3)에 대한 읽기 동작도 수행할 수 있다. 그렇지만 디램, 에스램, 플래시 메모리 등에서는 어느 영역에 대한 읽기 동작을 수행할 때 다른 영역에 대한 읽기 동작을 수행할 수 없다. 이렇게 독립적인 서브 메모리 블록들을 포함하는 메모리는 통상의 메모리들을 사용하는 구현할 수도 있지만, 새롭게 구현할 수도 있다. 전자의 경우에 통상의 메모리 하나를 서브 메모리 블록으로 설정하고, 복수개의 통상의 메모리들을 묶어 도 11의 메모리 구조를 구현한다. 후자의 경우에는 주문형반도체(ASIC) 기술 또는 FPGA 기술로 독립적으로 동작할 수 있는 구조의 서브 메모리 블록들을 기능을 포함하도록 메모리를 구현한다.
A1 내지 A32, B1 내지 B32는 에지 값들이 저장되는 공간이다. 도시된 바와 같이 각 노드에 대응되는 에지 값들을 서로 다른 서브 메모리 블록에 저장된다. 예를 들면, 가변 노드(V1)에 대응되는 에지 들이 저장되는 공간은 A1, A2, A3, A4, B1, B2, B3, B4가 된다. 이들은 모두 다른 서브 메모리 블록에 포함된다. A1, A2, A3, A4는 가변 노드 프로세스에서 읽는 체크-가변 에지 값들을 저장하는 공간이다. B1, B2, B3, B4는 가변 노드 프로세스 결과 갱신된 에지 값들을 저장하는 공간으로서, 체크 노드 프로세스에서 사용될 가변-체크 에지 값들을 저장한다.
도 2a의 패리티 체크 행렬에 의한 LDPC 코드를 디코딩하는 것을 기준으로 메모리의 동작을 설명한다.
가변 노드(V1)에 대한 가변 노드 프로세스를 수행할 때 가변 노드(V1)와 체크 노드들(C1, C3)에 속하는 체크-가변 에지 값들을 동시에 읽는다. 즉, 에지(1)의 값은 A1에서 읽고, 에지(2)의 값은 A3에서 읽는다. 가변 노드 프로세스를 통해 갱신된 가변-체크 에지 값들을 동시에 저장한다. 즉, 에지(1)의 값은 B1에 저장하고, 에지(2)의 값은 B3에 저장한다. 마찬가지로 가변 노드(V2)에 대한 가변 노드 프로세스를 수행할 때 A6, A8에서 각각 에지(3)와 에지(4)의 값을 읽고, B6, B8에 각각 갱신된 에지(3)와 에지(4)의 값을 저장한다.
체크 노드(C1)에 대한 체크 노드 프로세스를 수행할 때 체크 노드(C1)와 가변 노드들(V1, V4, V5, V8)에 속하는 가변-체크 에지 값들을 동시에 읽는다. 즉, 에지들(1, 7, 9, 15)의 값들은 B1, B13, B17 B29에서 읽는다. 체크 노드 프로세스를 통해 갱신된 체크-가변 에지 값들을 동시에 저장한다. 즉, 에지들(1, 7, 9, 15)의 값들은 A1, A13, A17 A29에 저장한다. 마찬가지로 체크 노드(C2)에 대한 체크 노드 프로세스를 수행할 때 에지들(3, 5, 10, 13)의 값들을 B6, B10, B18, B26에서 읽고, 갱신된 에지들(3, 5, 10, 13)의 값들을 A6, A10, A18, A26에 저장한다.
한편, 경계(1120)를 기준으로 분리된 두 개의 메모리들을 이용하여 노드 프로세스를 수행할 때는, 하나의 가변 노드와 하나의 체크 노드에 대한 노드 프로세스를 동시에 수행할 수 있다. 즉, 가변 노드(V1)에 대한 읽기 동작과 체크 노드(C1)에 대한 읽기 동작을 동시에 수행할 수 있고, 가변 노드(V1)에 대한 저장과 체크 노드(C1)에 대한 저장을 동시에 할 수 있다. 이와 같이 메모리에 맵핑되는 에지 값들의 위치를 변경하거나 메모리 경계를 구분하면 복수의 노드들에 대한 노드 프로세스가 수행될 수 있다.
도 11에서 각 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호가 증가함에 따라 서브 메모리 블록 내의 주소(이하, "서브 메모리 로컬 주소"라 함)가 증가하거나 감소한다. 서브 메모리 로컬 주소는 서브 메모리 블록의 경계(1110)와 수직한 방향으로 정의될 수 있다. 즉, B4의 로컬 주소를 1이라고 하면, B3과 B8의 로컬 주소는 2이고, B2, B7, B12의 로컬 주소는 3이라고 할 수 있다.
도 2c의 패리티 체크 행렬에 의한 LDPC 코드를 디코딩하는 것을 기준으로 메모리의 동작을 설명하면, 도 2a와 거의 유사하다. 다만, A1 내지 A32와 B1 내지 B32는 각각 3개의 에지 값들을 저장한다. 예를 들면, A1은 가변 서브노드들(V11, V12, V13)의 가변 노드 프로세스를 위한 에지 값들을 저장하고, 가변 노드 프로세스 결과 갱신된 에지 값들은 B1에 저장된다. B1에 저장된 에지 값들은 체크 서브노드들(C11, C12, C13)의 체크 노드 프로세스에 사용된다.
도 11과 같은 메모리 구조를 가질 때, 도 11의 메모리는 노드 단위로 액세스 가능하다고 할 수 있다.
이러한 메모리 구조는 다양하게 바뀔 수 있다.
도 12와 도 13은 본 발명의 다른 실시예에 따른 메모리 구조들을 보여주는 도면이다.
서브 메모리 블록간의 경계(1210)는 점선으로 표시된다.
도 12의 메모리는 도 11의 메모리와 비교할 때, 서브 메모리 블록의 번호가 증가함에 따라 가변 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호에 상관없이 일정하다. 반면 체크 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호가 증가할 때 함께 증가한다.
도 12의 메모리 구조는 도 11에 메모리에 비하여 효율이 좋다. 즉, 도 11의 메모리에 보면 에지 값들이 저장되는 영역(검정색 정사각형) 사이에 빈 공간(흰색 정사각형)이 있지만, 도 12의 메모리에는 이러한 공간이 없다.
도 12의 메모리 동작은 도 11의 메모리와 마찬가지로 동작한다. 또한, 경계 (1220)를 따라 메모리를 두 개로 분리하면, 2개의 메모리를 이용하여 동시에 2개의 노드 프로세스 수행을 할 수 있다.
도 12의 메모리 구조는 도 13과 같이 바뀔 수도 있다. 도 113의 메모리는 도 12의 메모리와 비교할 때, 서브 메모리 블록의 번호가 증가함에 따라 가변 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호에 상관없이 일정하다. 반면, 체크 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호가 증가할 때 감소한다.
또한, 서브 메모리 블록의 번호가 증가함에 따라 체크 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호에 상관없이 일정하게 하고, 가변 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호가 증가할 때 함께 증가하도록 메모리를 구현할 수도 있다. 마찬가지로, 서브 메모리 블록의 번호가 증가함에 따라 체크 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호에 상관없이 일정하게 하고, 가변 노드에 대한 에지 값들이 저장되는 위치는 서브 메모리 블록의 번호가 증가할 때 함께 감소하도록 메모리를 구현할 수도 있다.
한번 도 12에서 경계(1220)를 따라 두 개의 메모리들, 즉, 제1 메모리와 제2 메모리를 구현할 때, 제1 메모리에서는 도 12의 메모리와 같이 가변 노드에 대한 에지 값들이 저장되는 위치가 일정하도록 하고, 제2 메모리에서는 체크 노드에 대한 에지 값들이 저장되는 위치가 일정하도록 할 수도 있다.
도 14는 본 발명의 또 다른 실시예에 따른 메모리 구조를 보여주는 도면이다.
도 11 내지 도 13의 메모리 구조에서는 낭비되는 공간이 있다. 즉, 도 11 내지 도 13의 메모리들은 노드 단위로 에지 값들을 읽거나 저장하기에 유리한 구조를 갖지만, 빈 공간(흰색 정사각형)을 갖는다. 또한 도 11 내지 도 13의 메모리들 은 어드레싱을 쉽게 할 수 있도록 불필요한 공간을 갖는다. 예를 들면, 가변 노드(V1)는 A1, A3, B1, B3을 필요로 하지만 A2, A4, B2, B4는 불필요하다. 도 14의 메모리는 이러한 낭비가 없는 효율적인 메모리 구조이다. 서브 메모리 블록의 경계(1410)와 경계(1420)의 역할은 앞서 설명한 다른 메모리와 동일하다.
도 14의 메모리 구조는 노드의 에지 값들을 저장하는 공간이 서로 다른 서브 메모리 블록에 속한다. 이와 같은 구조에서 노드 단위로 에지 값들을 동시에 읽고 노드 단위로 에지 값들을 동시에 저장하려면 에지 값들이 저장되는 위치를 알려주는 맵핑 테이블을 필요로 한다.
도 2a를 기준으로 작성한 맵핑 테이블을 다음과 같이 작성할 수 있다.
1 7 9 15
3 10 13 5
6 2 16 11
12 4 8 14
맵핑 테이블 안의 번호는 에지 번호를 의미한다. 예를 들어, 가변 노드(V1)에 대한 가변 노드 프로세스를 수행하기 위해서는 에지들(1, 2)의 위치인 A1과 A10에서 에지 값들을 읽고, 갱신된 에지들(1, 2)은 각각 B1과 B10에 저장한다. 체크 노드(C1)에 대한 체크 노드 프로세스를 수행하기 위해서는 에지들(1, 7, 9, 15)의 위치인 B1, B2, B3, B4에서 에지 값들을 읽고, 갱신된 에지들(1, 7, 9, 15)을 A1, A2, A3, A4에 저장한다. 이와 같이 맵핑 테이블을 이용하면 보다 효율적인 노드 단위로 액세스 가능한 메모리를 구현할 수 있다. 이와 같은 맵핑 테이블은 바뀔 수 있다. 또한, 가변 노드와 체크 노드의 연결관계가 달라지면 매핑 테이블은 바뀐다.
도 15는 본 발명의 일 실시예에 따른 수신기의 구성을 보여주는 블록도이다.
수신기(1500)는 무선 매체를 통해 전송된 신호를 수신하기 위한 안테나(1510)와 원하는 대역의 신호를 선택하는 필터(1520)와 필터링된 신호를 복조하는 복조기(1530)와 복조된 신호를 디코딩하여 비트들을 얻는 채널 디코더(1540)를 포함한다.
안테나(1510)를 통해 수신된 신호는 무선 매체를 통해 전송되는 과정의 잡음, 페이딩, 신호간 간섭 등에 의해 원래의 신호와는 다른 왜곡된 형태로 수신된다. 복조기(1530)를 통해 복조하여 얻은 채널 코딩된 값들은 송신기(도시되지 않음)에서 채널 코딩한 원래의 값과는 다를 수 있다.
채널 디코더(1540)는 채널 코딩된 값들을 메시지 통과 알고리즘에 따라 디코딩하여 비트들을 출력한다. 채널 디코더(1540)는 메시지 통과 알고리즘을 이용하여 디코딩하는 과정에서 노드 단위로 액세스 가능한 메모리를 사용한다. 채널 디코더(1540)는 앞서 설명한 채널 디코더 중 어느 하나일 수 있으며, 앞서 설명한 채널 디코딩 방법 중 어느 하나의 동작을 수행할 수 있다.
이와 같은 수신기(1500)는 휴대폰과 같은 양방향 통신장치에 포함될 수도 있고, 디지털 텔레비전과 같은 단방향 통신장치에 포함될 수도 있다. 양방향 통신장치일 경우에 수신기(1500)이외에 송신기(도시되지 않음)를 더 포함한다.
도 16은 본 발명의 다른 실시예에 따른 수신기의 구성을 보여주는 블록도이다.
노드 단위로 액세스 가능한 메모리를 구비하고 메시지 통과 알고리즘을 이용 하여 디코딩을 하는 채널 디코더를 채용한 수신기는 유선 수신기 일 수 있다.
수신기(1600)는 유선 매체(1610)를 통해 전송된 신호를 수신하여 원하는 대역의 신호를 선택하는 필터(1620)와 필터링된 신호를 복조하는 복조기(1630)와 복조된 신호를 디코딩하여 비트들을 얻는 채널 디코더(1640)를 포함한다.
채널 디코더(1640)의 동작은 도 15의 채널 디코더(1640)의 동작과 동일하다.
본 발명의 실시예들에 따른 채널 디코더는 무선 또는 유선 수신기에만 적용되는 것은 아니면, 스토리지 리더에 적용할 수도 있다. 즉, 스토리지 리더는 채널 코딩된 정보를 저장하는 스토리지에서 채널 코딩된 값을 읽고, 채널 코딩된 값으로부터 원래의 데이터를 얻는다.
이와 같이 본 발명의 실시예들에 따른 채널 디코더는 다양한 어플리케이션에 적용될 수 있다.
도 17은 본 발명의 일 실시예에 따른 수신기의 동작을 보여주는 흐름도이다.
이와 같이 본 발명의 실시예들에 따른 채널 디코딩 방법은 다양한 어플리케이션에 적용될 수 있다. 예를 들면, 무선 수신기, 유선 수신기, 스토리지 리더에 적용될 수 있다.
먼저 신호를 수신한다(S1702). 수신된 신호는 무선 매체를 통해 전송된 신호일 수도 있고, 유선 매체를 통해 전송된 신호일 수도 있다. 또한 스토리지로부터 읽은 신호일 수도 있다.
그리고 나서 수신된 신호를 복조한다(S1704). 수신된 신호가 스토리지로부터 읽은 신호의 경우에는 복조 과정은 불필요하다.
복조 과정을 통해 채널 코딩된 신호를 얻으면 메시지 통과 알고리즘에 따라 노드 프로세스를 수행한다(S1710). 노드 프로세스에서 필요한 에지 값들은 노드 단위로 동시에 읽고, 갱신된 에지 값들은 노드 단위로 동시에 저장한다.
그리고 나서 모든 노드에 대한 노드 프로세스를 수행했는지를 판단한다(S1720).
모든 노드에 대한 노드 프로세스를 수행하면 종료 조건을 만족하는지를 판단한다(1730). 종료 조건이 만족되지 않으면 다시 노드 프로세스를 수행하고(S1710), 종료 조건이 만족되면 결정된 비트들을 출력한다(S1740).
이상의 설명에서 노드 프로세스를 수행할 때 각 노드에 대해 에지 값들을 동시에 읽거나 동시에 저장한다. 그러나 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 일부 노드에 대한 노드 프로세스를 수행할 때 에지 값들을 순차적으로 읽거나 갱신하는 디코더도 생각할 수 있을 것이다. 그러므로 이상에서 설명한 실시예들은 예시적인 것이며, 한정적인 것이 아니다.
이와 같이 본 발명은 실시예를 참조하여 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명은 실시예에 따르면, 채널 디코더는 노드 프로세스에 최적화된 메모리를 갖는다. 따라서 채널 디코딩 과정에서 채널 디코더는 반복적인 노드 프로세 스를 위한 에지 값들의 읽기와 쓰기에 필요한 시간을 최소화할 수 있다. 따라서, 고속으로 동작하는 채널 디코더를 손쉽게 구현할 수 있다.
채널 디코더의 쓰루풋은 수학식 1에 따라 결정할 수 있다.
Figure 112005029095284-pat00001
여기서 Z는 확장 팩터를 의미하고,
Figure 112005029095284-pat00002
는 가변 노드의 수를 의미하고, R은 코드율을 의미하고, CLK는 사용하는 시스템의 클럭을 의미하고, Latency는 노드 프로세스를 위해 초기 에지 메모리 데이터를 파이프라인으로 옮기는 클럭 레이턴시를 의미하고,
Figure 112005029095284-pat00003
는 가변 노드와 체크 노드 중에 노드 수가 더 많은 노드의 수를 의미하고, N은 반복(iteration) 횟수를 의미한다.
Latency가 커질수록 쓰루풋은 작아지고, Latency가 작아질수록 쓰루풋이 커짐을 알 수 있다. 본 발명의 실시예들은 노드 단위로 동시에 에지 값들을 읽고 동시에 저장하기 때문에 작은 Latency를 가질 수 있다. 또한, Z가 커지면 쓰루풋이 커지는 것을 알 수 있다. 따라서, 도 1a 보다는 도 1c에 의해 정의되는 LDPC 디코더의 효율이 더 좋다.
이와 같이 작은 Latency를 갖기 위해서는 노드 단위로 액세스 가능한 메모리가 필요하고 이는 본 발명의 실시예들처럼 다양하게 구현할 수 있다.
본 발명의 실시예들에 따른 채널 디코더는 고속 동작이 필요한 유선 또는 무 선 장치에 사용가능하다.

Claims (49)

  1. 노드 단위로 액세스 가능한 메모리; 및
    입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며,
    상기 노드 프로세스 중에, 상기 프로세서는 상기 에지 값들을 상기 메모리로부터 노드 단위로 동시에 읽고, 상기 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 노드 단위로 동시에 저장하는 것을 특징으로 하는 채널 디코더.
  2. 제1항에 있어서,
    상기 입력 값들을 저장하는 버퍼를 더 포함하는 것을 특징으로 하는 채널 디코더.
  3. 제1항 또는 제2항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코더.
  4. 제1항에 있어서,
    상기 프로세서는 가변 노드 프로세스를 수행하는 가변 노드 프로세서와 체크 노드 프로세스를 수행하는 체크 노드 프로세서 및 판정기를 포함하며,
    상기 가변 노드 프로세서는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 판정기는 노드 프로세스가 종료될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코더.
  5. 제4항에 있어서,
    노드 프로세스가 종료되는 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코더.
  6. 노드 단위로 액세스 가능한 메모리; 및
    입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며,
    상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시 에 수행하고,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 메모리로부터 동시에 읽고, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 동시에 저장하는 것을 특징으로 하는 채널 디코더.
  7. 제6항에 있어서,
    상기 입력 값들을 저장하는 버퍼를 더 포함하는 것을 특징으로 하는 채널 디코더.
  8. 제6항 또는 제7항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코더.
  9. 제6항에 있어서,
    상기 프로세서는 가변 노드 프로세스를 수행하는 가변 노드 프로세서와 체크 노드 프로세스를 수행하는 체크 노드 프로세서 및 판정기를 포함하며,
    상기 가변 노드 프로세서는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 판정기는 노드 프로세스가 종료될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코더.
  10. 제9항에 있어서,
    노드 프로세스가 종료되는 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코더.
  11. 노드 단위로 액세스 가능한 제1 및 제2 메모리; 및
    입력 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 비트들을 출력하는 프로세서를 포함하며,
    상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시에 수행하고,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장하는 것을 특징으로 하는 채널 디코더.
  12. 제11항에 있어서,
    상기 입력 값들을 저장하는 버퍼를 더 포함하는 것을 특징으로 하는 채널 디코더.
  13. 제11항 또는 제12항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코더.
  14. 제11항에 있어서,
    상기 프로세서는 가변 노드 프로세스를 수행하는 가변 노드 프로세서와 체크 노드 프로세스를 수행하는 체크 노드 프로세서 및 판정기를 포함하며,
    상기 가변 노드 프로세서가 체크-가변 에지 값들을 상기 제1 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 제2 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서는 상기 가변-체크 에지 값들을 상기 제2 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 제1 메모리에 체크 노드 단위로 동시에 저장하며,
    상기 판정기는 노드 프로세스가 종료될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코더.
  15. 제14항에 있어서,
    노드 프로세스가 종료되는 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코더.
  16. 입력 값들을 받는 단계; 및
    상기 입력 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 비트들을 출력하도록 노드 프로세스를 수행하는 단계를 포함하며,
    상기 노드 프로세스 중에서 상기 에지 값들은 상기 메모리로부터 노드 단위로 동시에 읽히고, 상기 노드 프로세스에 의해 갱신된 에지 값들은 상기 메모리에 노드 단위로 동시에 저장되는 것을 특징으로 하는 채널 디코딩 방법.
  17. 제16항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코딩 방법.
  18. 제16항에 있어서,
    상기 노드 프로세스를 수행하는 단계는 가변 노드 프로세스를 수행하는 단계와 체크 노드 프로세스를 수행하는 단계 및 출력되는 비트들을 결정하는 단계를 포함하며,
    상기 가변 노드 프로세스를 수행하는 단계는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서를 수행하는 단계는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 가변 노드 프로세스 및 상기 체크 노드 프로세스는 종료 조건이 만족될 때까지 반복적으로 수행되며,
    상기 결정하는 단계는 상기 종료 조건이 만족될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코딩 방법.
  19. 제18항에 있어서,
    상기 종료 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코딩 방법.
  20. 입력 값들을 받는 단계; 및
    상기 입력 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 메모리로부터 동시에 읽고, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 동시에 저장하는 것을 특징으로 하는 채널 디코딩 방법.
  21. 제20항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코딩 방법.
  22. 제20항에 있어서,
    상기 노드 프로세스를 수행하는 단계는 가변 노드 프로세스를 수행하는 단계와 체크 노드 프로세스를 수행하는 단계 및 출력되는 비트들을 결정하는 단계를 포 함하며,
    상기 가변 노드 프로세스를 수행하는 단계는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서를 수행하는 단계는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 가변 노드 프로세스 및 상기 체크 노드 프로세스는 종료 조건이 만족될 때까지 반복적으로 수행되며,
    상기 결정하는 단계는 상기 종료 조건이 만족될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코딩 방법.
  23. 제22항에 있어서,
    상기 종료 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코딩 방법.
  24. 입력 값들을 받는 단계; 및
    상기 입력 값들 및 노드 단위로 액세스 가능한 제1 및 제2 메모리들에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장하는 것을 특징으로 하는 채널 디코딩 방법.
  25. 제24항에 있어서,
    상기 입력 값들은 로그형 값(log-likelihood value)인 것을 특징으로 하는 채널 디코딩 방법.
  26. 제20항에 있어서,
    상기 노드 프로세스를 수행하는 단계는 가변 노드 프로세스를 수행하는 단계와 체크 노드 프로세스를 수행하는 단계 및 출력되는 비트들을 결정하는 단계를 포함하며,
    상기 가변 노드 프로세스를 수행하는 단계는 체크-가변 에지 값들을 상기 제1 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 입력 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 제2 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서를 수행하는 단계는 상기 가변-체크 에지 값들을 상기 제2 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 제1 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 가변 노드 프로세스 및 상기 체크 노드 프로세스는 종료 조건이 만족될 때까지 반복적으로 수행되며,
    상기 결정하는 단계는 상기 종료 조건이 만족될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 비트들을 결정하는 것을 특징으로 하는 채널 디코딩 방법.
  27. 제26항에 있어서,
    상기 종료 조건은 상기 체크-가변 에지 값들의 부호들의 XOR값이 0이 되거나, 노드 프로세스가 사전 설정된 최대 반복 횟수(maximum iteration number)에 도달한 경우인 것을 특징으로 하는 채널 디코딩 방법.
  28. 메시지 통과 디코딩 시스템에서 사용하기 위한 메모리 장치에 있어서,
    적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고,
    하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되며,
    특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명령에 응답해서 상기 노드와 연결된 에지 값들이 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되고, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 서로 다른 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  29. 제28항에 있어서,
    상기 노드는 가변 노드 및 체크 노드를 포함하며 상기 가변 노드에 대한 각 에지 값은 각 서브 메모리 블록의 번호가 증가함에 따라 감소되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되고, 상기 체크 노드에 대한 각 에지 값은 상기 각 서브 메모리 블록의 번호가 증가함에 따라 감소되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  30. 제28항에 있어서,
    상기 노드는 가변 노드 및 체크 노드를 포함하며, 상기 가변 노드에 대한 각 에지 값은 서로 동일한 서브 메모리 로컬 주소를 가지도록 각 서브 메모리 블록에 저장되고, 상기 체크 노드에 대한 각 에지 값은 상기 각 서브 메모리 블록의 번호가 증가함에 따라 증가되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  31. 제28항에 있어서,
    상기 노드는 가변 노드 및 체크 노드를 포함하며, 상기 가변 노드에 대한 각 에지 값은 서로 동일한 서브 메모리 로컬 주소를 가지도록 각 서브 메모리 블록에 저장고, 상기 체크 노드에 대한 각 에지 값은 상기 각 서브 메모리 블록의 번호가 증가함에 따라 감소되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  32. 제28항에 있어서,
    각 노드에 대해 에지 값들이 저장되는 서브 메모리 블록의 번호와 서브 메모리 로컬 주소에 관한 정보를 가진 맵핑 테이블을 더 포함하는 것을 특징으로 하는 메모리 장치.
  33. 메시지 통과 디코딩 시스템에서 사용하기 위한 메모리 장치에 있어서,
    적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고, 하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되는 제1 메모리; 및
    적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하고, 하나의 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되는 제2 메모리를 포함하고,
    특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명 령에 응답해서 상기 노드와 연결된 에지 값들이 상기 제1 메모리의 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되면, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 제2 메모리의 상기 서로 다른 서브 메모리 블록에 저장되고,
    상기 특정 노드에 대한 노드 프로세스에서, 프로세서의 상기 노드에 대한 읽기 명령에 응답해서 상기 노드와 연결된 에지 값들이 상기 제2 메모리의 서로 다른 서브 메모리 블록으로부터 동시에 상기 프로세서에 제공되면, 상기 프로세서의 상기 노드에 대한 저장 명령에 응답하여 상기 노드와 연결된 갱신된 에지 값들이 상기 제1 메모리의 상기 서로 다른 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  34. 제33항에 있어서,
    상기 노드에 대한 각 에지 값은 상기 제1 메모리 또는 상기 제2 메모리에서, 각 서브 메모리 블록의 번호가 증가함에 따라 감소되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록의 서브 메모리 로컬 주소에 저장되거나, 서브 메모리 로컬 주소상기 각 서브 메모리 블록의 번호가 증가함에 따라 감소되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  35. 제33항에 있어서,
    상기 노드에 대한 각 에지 값은 상기 제1 메모리 또는 상기 제2 메모리에서, 서로 동일한 서브 메모리 로컬 주소를 가지도록 각 서브 메모리 블록에 저장되거나, 상기 각 서브 메모리 블록의 번호가 증가함에 따라 증가되는 서브 메모리 로컬 주소를 가지도록 상기 각 서브 메모리 블록에 저장되는 것을 특징으로 하는 메모리 장치.
  36. 삭제
  37. 제33항에 있어서,
    각 노드에 대해 에지 값들이 상기 제1 메모리 또는 상기 제2 메모리에서, 저장되는 서브 메모리 블록의 번호와 서브 메모리 로컬 주소에 관한 정보를 가진 맵핑 테이블을 더 포함하는 것을 특징으로 하는 메모리 장치.
  38. 메시지 통과 디코딩 시스템에서 사용하기 위한, 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하는 메모리 장치의 동작 방법에 있어서,
    노드에 대한 노드 프로세스에서 프로세서로부터 노드에 대한 읽기 명령을 받는 단계;
    상기 읽기 명령에 응답하여 상기 노드와 연결된 에지 값들을 상기 프로세서에 동시에 제공하는 단계;
    상기 프로세서로부터 노드에 대한 저장 명령을 받는 단계; 및
    상기 저장 명령에 응답하여 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 동시에 저장하는 단계를 포함하며,
    상기 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되어 있는 것을 특징으로 하는 메모리 동작 방법.
  39. 메시지 통과 디코딩 시스템에서 사용하기 위한, 적어도 하나 이상의 에지 값들을 저장하는 복수의 서브 메모리 블록들을 포함하는 제1 및 제2 메모리를 포함하는 메모리 장치의 동작 방법에 있어서,
    노드에 대한 노드 프로세스에서 프로세서로부터 노드에 대한 읽기 명령을 받는 단계;
    상기 읽기 명령에 응답하여 상기 제1 및 상기 제2 메모리 중 어느 한 메모리에서 상기 노드와 연결된 에지 값들을 상기 프로세서에 동시에 제공하는 단계;
    상기 프로세서로부터 노드에 대한 저장 명령을 받는 단계; 및
    상기 저장 명령에 응답하여 상기 제1 및 상기 제2 메모리 중 다른 메모리에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 동시에 저장하는 단계를 포함하며,
    상기 제1 및 상기 제2 메모리에서, 상기 노드와 연결된 에지 값들은 서로 다른 서브 메모리 블록들에 저장되어 있는 것을 특징으로 하는 메모리 동작 방법.
  40. 수신된 신호를 복조하는 복조기; 및
    상기 복조기로부터 채널 코딩된 값을 입력받아 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코더를 포함하며,
    상기 채널 디코더는
    노드 단위로 액세스 가능한 메모리; 및
    상기 채널 코딩된 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 상기 정보 비트들을 출력하는 프로세서를 포함하며,
    상기 노드 프로세스 중에, 상기 프로세서는 상기 에지 값들을 상기 메모리로부터 노드 단위로 동시에 읽고, 상기 노드 프로세스에 의해 갱신된 에지 값들을 상기 메모리에 노드 단위로 동시에 저장하는 것을 특징으로 하는 수신기.
  41. 제40항에 있어서,
    상기 프로세서는 가변 노드 프로세스를 수행하는 가변 노드 프로세서와 체크 노드 프로세스를 수행하는 체크 노드 프로세서 및 판정기를 포함하며,
    상기 가변 노드 프로세서는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 채널 코딩된 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 판정기는 노드 프로세스가 종료될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 정보 비트들을 결정하는 것을 특징으로 하는 수신기.
  42. 제40항에 있어서,
    상기 프로세서는 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 것을 특징으로 하는 수신기.
  43. 수신된 신호를 복조하는 복조기; 및
    상기 복조기로부터 채널 코딩된 값들을 입력받아 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코더를 포함하며,
    상기 채널 디코더는
    노드 단위로 액세스 가능한 제1 및 제2 메모리; 및
    상기 채널 코딩된 값들과 에지 값들을 이용하여 노드 프로세스를 수행하여 상기 정보 비트들을 출력하는 프로세서를 포함하며,
    상기 프로세서는 적어도 2 이상의 노드들에 대해 상기 노드 프로세스를 동시에 수행하고,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 프로세서는 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장하는 것을 특징으로 하는 수신기.
  44. 제43항에 있어서,
    상기 프로세서는 가변 노드 프로세스를 수행하는 가변 노드 프로세서와 체크 노드 프로세스를 수행하는 체크 노드 프로세서 및 판정기를 포함하며,
    상기 가변 노드 프로세서가 체크-가변 에지 값들을 상기 제1 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 채널 코딩된 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 제2 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서는 상기 가변-체크 에지 값들을 상기 제2 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 제1 메 모리에 체크 노드 단위로 동시에 저장하며,
    상기 판정기는 노드 프로세스가 종료될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 정보 비트들을 결정하는 것을 특징으로 하는 수신기.
  45. 수신된 신호를 복조하는 단계; 및
    상기 복조 단계를 통해 받은 채널 코딩된 값들을 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코딩 단계를 포함하며,
    상기 채널 디코딩 단계는
    상기 채널 코딩된 값들을 입력받는 단계; 및
    상기 채널 코딩된 값들 및 노드 단위로 액세스 가능한 메모리에 저장된 에지 값들을 이용하여 상기 정보 비트들을 출력하도록 노드 프로세스를 수행하는 단계를 포함하며,
    상기 노드 프로세스 중에서 상기 에지 값들은 상기 메모리로부터 노드 단위로 동시에 읽히고, 상기 노드 프로세스에 의해 갱신된 에지 값들은 상기 메모리에 노드 단위로 동시에 저장되는 것을 특징으로 하는 수신 방법.
  46. 제45항에 있어서,
    상기 노드 프로세스를 수행하는 단계는 가변 노드 프로세스를 수행하는 단계와 체크 노드 프로세스를 수행하는 단계 및 상기 출력되는 정보 비트들을 결정하는 단계를 포함하며,
    상기 가변 노드 프로세스를 수행하는 단계는 체크-가변 에지 값들을 상기 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 채널 코딩된 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 메모리에 가변 노드 단위로 동시에 저장하고,
    상기 체크 노드 프로세서를 수행하는 단계는 상기 가변-체크 에지 값들을 상기 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 가변 노드 프로세스 및 상기 체크 노드 프로세스는 종료 조건이 만족될 때까지 반복적으로 수행되며,
    상기 결정하는 단계는 상기 종료 조건이 만족될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 정보 비트들을 결정하는 것을 특징으로 하는 수신 방법.
  47. 제45항에 있어서,
    상기 노드 프로세스는 적어도 2 이상의 노드들에 대해 동시에 수행되는 것을 특징으로 하는 수신 방법.
  48. 수신된 신호를 복조하는 단계; 및
    상기 복조 단계를 통해 받은 채널 코딩된 값들을 메시지 통과 디코딩 방식으로 디코딩하여 정보 비트들을 출력하는 채널 디코딩 단계를 포함하며,
    상기 채널 디코딩 단계는
    상기 채널 코딩된 값들을 받는 단계; 및
    상기 채널 코딩된 값들 및 노드 단위로 액세스 가능한 제1 및 제2 메모리들에 저장된 에지 값들을 이용하여 비트들을 출력하도록 적어도 2 이상의 노드들에 대해 동시에 노드 프로세스를 수행하는 단계를 포함하며,
    어느 한 노드에 대한 노드 프로세스 중에, 상기 노드에 대한 에지 값들을 상기 제1 메모리로부터 동시에 읽은 경우에 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제2 메모리에 동시에 저장하고, 상기 노드에 대한 에지 값들을 상기 제2 메모리로부터 동시에 읽은 경우에, 상기 노드에 대한 노드 프로세스에 의해 갱신된 에지 값들을 상기 제1 메모리에 동시에 저장하는 것을 특징으로 하는 수신 방법.
  49. 제48항에 있어서,
    상기 노드 프로세스를 수행하는 단계는 가변 노드 프로세스를 수행하는 단계와 체크 노드 프로세스를 수행하는 단계 및 상기 출력되는 정보 비트들을 결정하는 단계를 포함하며,
    상기 가변 노드 프로세스를 수행하는 단계는 체크-가변 에지 값들을 상기 제1 메모리로부터 가변 노드 단위로 동시에 읽고, 상기 채널 코딩된 값들과 상기 체크-가변 에지 값들을 이용하여 가변-체크 에지 값들과 가변 노드 값들을 갱신하고, 상기 갱신된 가변-체크 에지 값들을 상기 제2 메모리에 가변 노드 단위로 동시에 저장하고, 가변-체크 에지 값들을 상기 제2 메모리로부터 체크 노드 단위로 동시에 읽고, 상기 가변-체크 에지 값들을 이용하여 상기 체크-가변 에지 값들을 갱신하고, 상기 갱신된 체크-가변 에지 값들을 상기 제1 메모리에 체크 노드 단위로 동시에 저장하고,
    상기 가변 노드 프로세스 및 상기 체크 노드 프로세스는 종료 조건이 만족될 때까지 반복적으로 수행되며,
    상기 결정하는 단계는 상기 종료 조건이 만족될 때 상기 가변 노드 값들을 이용하여 상기 출력되는 정보 비트들을 결정하는 것을 특징으로 하는 수신 방법.
KR1020050046524A 2005-06-01 2005-06-01 저밀도채리티체크 채널 디코딩 방법 및 장치 KR100727316B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020050046524A KR100727316B1 (ko) 2005-06-01 2005-06-01 저밀도채리티체크 채널 디코딩 방법 및 장치
US11/258,459 US7571375B2 (en) 2005-06-01 2005-10-25 Methods for message passing decoding using simultaneous memory accesses
JP2006091919A JP2006340341A (ja) 2005-06-01 2006-03-29 同時メモリアクセスを利用したメッセージ伝達デコーディング装置及び方法
TW095118214A TW200703923A (en) 2005-06-01 2006-05-23 Apparatus and methods for message passing decoding using simultaneous memory accesses
DE200610026180 DE102006026180A1 (de) 2005-06-01 2006-05-29 Decodierverfahren, Speicher, Vorrichtung, Empfänger und Computerprogrammprodukt
CN2006100923303A CN1874164B (zh) 2005-06-01 2006-06-01 使用同时存储器存取的消息传递译码装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050046524A KR100727316B1 (ko) 2005-06-01 2005-06-01 저밀도채리티체크 채널 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20060125947A KR20060125947A (ko) 2006-12-07
KR100727316B1 true KR100727316B1 (ko) 2007-06-12

Family

ID=37484471

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050046524A KR100727316B1 (ko) 2005-06-01 2005-06-01 저밀도채리티체크 채널 디코딩 방법 및 장치

Country Status (4)

Country Link
US (1) US7571375B2 (ko)
KR (1) KR100727316B1 (ko)
CN (1) CN1874164B (ko)
TW (1) TW200703923A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818649B1 (en) * 2005-11-30 2010-10-19 Aquantia Corporation Efficient message passing scheme of iterative error correcting decoders
US7661055B2 (en) * 2005-12-05 2010-02-09 Broadcom Corporation Partial-parallel implementation of LDPC (Low Density Parity Check) decoders
US7530002B2 (en) * 2006-01-03 2009-05-05 Broadcom Corporation Sub-matrix-based implementation of LDPC (Low Density Parity Check) decoder
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
US7613981B2 (en) * 2006-10-06 2009-11-03 Freescale Semiconductor, Inc. System and method for reducing power consumption in a low-density parity-check (LDPC) decoder
WO2008142683A2 (en) * 2007-05-21 2008-11-27 Ramot At Tel Aviv University Ltd. Memory-efficient ldpc decoding
US8230312B1 (en) 2008-01-09 2012-07-24 Marvell International Ltd. Iterative decoder memory arrangement
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
US8756479B2 (en) * 2011-01-14 2014-06-17 Marvell World Trade Ltd. LDPC multi-decoder architectures
US9362933B1 (en) 2011-07-12 2016-06-07 Marvell International Ltd. Noise-predictive detector adaptation with corrected data
US8996952B2 (en) 2012-01-04 2015-03-31 Marvell World Trade Ltd. High-throughput iterative decoding's defect scan in retry mode of storage system channel
KR101840252B1 (ko) * 2012-03-12 2018-03-20 에스케이하이닉스 주식회사 저밀도 패리티 검사 부호용 장치
KR101698875B1 (ko) * 2013-03-14 2017-01-24 한국전자통신연구원 Ldpc 부호의 복호 방법 및 장치
JP2016144052A (ja) * 2015-02-02 2016-08-08 株式会社東芝 復号装置および復号方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010009726A (ko) * 1999-07-13 2001-02-05 정선종 디지털 통신용 채널 부호기
KR20040061482A (ko) * 2002-12-31 2004-07-07 엘지전자 주식회사 채널 인터리빙 방법
KR100543154B1 (ko) 2002-07-26 2006-01-20 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사 코드 생성 방법 및 시스템
KR100567698B1 (ko) 2002-07-26 2006-04-05 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사 코드를 이용하는 위성 통신 시스템

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4234927B2 (ja) * 2000-04-14 2009-03-04 富士通株式会社 光波長多重伝送システム及び光出力制御方法及び光波長多重伝送装置
US7415079B2 (en) * 2000-09-12 2008-08-19 Broadcom Corporation Decoder design adaptable to decode coded signals using min* or max* processing
JP4443784B2 (ja) * 2000-12-07 2010-03-31 株式会社エヌ・ティ・ティ・ドコモ 画像符号化・復号方法、画像符号化装置及び画像復号装置
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
JP4225163B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号装置および復号方法、並びにプログラム
US7159170B2 (en) * 2003-06-13 2007-01-02 Broadcom Corporation LDPC (low density parity check) coded modulation symbol decoding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010009726A (ko) * 1999-07-13 2001-02-05 정선종 디지털 통신용 채널 부호기
KR100543154B1 (ko) 2002-07-26 2006-01-20 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사 코드 생성 방법 및 시스템
KR100567698B1 (ko) 2002-07-26 2006-04-05 휴우즈 일렉트로닉스 코오포레이션 저밀도 패리티 검사 코드를 이용하는 위성 통신 시스템
KR20040061482A (ko) * 2002-12-31 2004-07-07 엘지전자 주식회사 채널 인터리빙 방법

Also Published As

Publication number Publication date
TW200703923A (en) 2007-01-16
CN1874164A (zh) 2006-12-06
US7571375B2 (en) 2009-08-04
CN1874164B (zh) 2010-06-16
KR20060125947A (ko) 2006-12-07
US20060274772A1 (en) 2006-12-07

Similar Documents

Publication Publication Date Title
KR100727316B1 (ko) 저밀도채리티체크 채널 디코딩 방법 및 장치
US11381255B2 (en) Vertical layered finite alphabet iterative decoding
US8739001B2 (en) LDPC encoding and decoding techniques
CA2577794C (en) Ldpc decoding methods and apparatus
US8533568B2 (en) LDPC encoding methods and apparatus
US7917827B2 (en) Method of encoding and decoding using LDPC code and apparatus thereof
JP2011072009A (ja) 高並列map復号器
US20080294963A1 (en) Method and apparatus for designing low density parity check code with multiple code rates, and information storage medium thereof
KR20200093688A (ko) 멀티-스테이지 소프트 입력 디코딩을 위한 방법 및 시스템
US7814403B2 (en) Method of encoding and decoding using low density parity check code
US20160094245A1 (en) Ldpc decoder with efficient circular shifters
US8327215B2 (en) Apparatus and method for encoding LDPC code using message passing algorithm
KR101073636B1 (ko) 저밀도 패리티 검사 부호를 이용한 복호화 장치
US20080304614A1 (en) Electronic multimode data shift device, in particular for coding/decoding with an ldpc code
US20110202819A1 (en) Configurable Error Correction Encoding and Decoding
KR20230078478A (ko) 복호화 장치, 복호화 방법 및 전자 장치
KR20130112442A (ko) Qc-ldpc 복호 방법
EP1800406A2 (en) Method of encoding and decoding using ldpc code and apparatus thereof

Legal Events

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

Payment date: 20130531

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160531

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 13