KR101355633B1 - 인코더 및 인코딩 방법 - Google Patents

인코더 및 인코딩 방법 Download PDF

Info

Publication number
KR101355633B1
KR101355633B1 KR1020070112851A KR20070112851A KR101355633B1 KR 101355633 B1 KR101355633 B1 KR 101355633B1 KR 1020070112851 A KR1020070112851 A KR 1020070112851A KR 20070112851 A KR20070112851 A KR 20070112851A KR 101355633 B1 KR101355633 B1 KR 101355633B1
Authority
KR
South Korea
Prior art keywords
bit
bit string
encoder
bits
data
Prior art date
Application number
KR1020070112851A
Other languages
English (en)
Other versions
KR20090046608A (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 KR1020070112851A priority Critical patent/KR101355633B1/ko
Priority to US12/149,214 priority patent/US8171382B2/en
Priority to JP2010531953A priority patent/JP5336501B2/ja
Priority to PCT/KR2008/002773 priority patent/WO2009061048A1/en
Publication of KR20090046608A publication Critical patent/KR20090046608A/ko
Application granted granted Critical
Publication of KR101355633B1 publication Critical patent/KR101355633B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/22Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/27Coding, 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 using interleaving techniques
    • H03M13/2732Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received

Landscapes

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

Abstract

인코더 및 인코딩 방법이 제공된다. 본 발명의 인코더는 C 비트의 입력 비트열을 인코딩하여 C 비트의 제1 비트열을 생성하는 제1 인코더, 및 상기 제1 비트열을 M 개 수신하고, 상기 수신된 M 개의 제1 비트열의 데이터를 혼합하여 M 개의 제2 비트열을 생성하는 제2 인코더를 포함하는 것을 특징으로 하며, 이를 통해 오류 정정 가능성(error correctability)을 높인다.
셔플링, 랜더마이즈, 오류 제어 코드, 오류 정정 코드

Description

인코더 및 인코딩 방법 {ENCODER AND ENCODING METHOD}
본 발명은 오류 제어 코드(error control codes)에 관한 것으로서, 특히 오류 제어 코드를 위한 비트열(bit stream)의 인코딩 방법 및 인코더에 관한 것이다.
일반적으로 정보를 전송하는 경로를 채널(channel)이라 부를 수 있다. 정보가 유선 통신을 이용하여 전송되면, 채널은 정보가 전송되는 전송선(transmission line)이고, 정보가 무선 통신을 이용하여 전송되면, 채널은 정보를 포함하는 전자기파가 통과하는 대기(air)이다.
반도체 메모리 장치가 정보를 저장하고, 저장된 정보를 반도체 메모리 장치로부터 읽어 내는 과정도 채널이 될 수 있다. 채널은 반도체 메모리 장치가 정보를 저장한 순간부터 저장된 정보를 반도체 메모리 장치로부터 읽어 낼 때까지의 시간적 경과일 수도 있고, 반도체 메모리 장치가 정보를 저장하고 저장된 정보를 반도체 메모리 장치로부터 읽어 내는 물리적 경로일 수도 있다.
채널을 경유하여 정보가 전송되는 동안 정보가 오염될 수 있다. 오염된 정보는 오류를 포함하며, 오염된 정보로부터 오류를 검출하고, 검출된 오류를 제거하여 최초의 정보를 복원하기 위한 장치 및 방법에 관한 연구는 꾸준히 진행되고 있 다.
정보를 전송하기 전에 최초의 정보에 오류 제어 코드를 부가하여 전송 정보를 생성하는 과정을 오류 제어 코드 인코딩이라 하고, 전송 정보를 수신한 뒤 수신된 전송 정보로부터 오류 제어 코드를 분리하여 최초의 정보를 복원하는 과정을 오류 제어 코드 디코딩이라 한다.
채널의 특성에 따라서는, 채널에서 발생하는 오류의 비율이 매우 클 수 있다. 오류의 비율이 크면 클수록 이러한 오류를 극복하여 원하는 성능을 달성하기 위한 오류 제어 코드 인코딩 및 디코딩을 구현하기 위한 하드웨어 복잡도는 증가한다.
채널이 멀티 비트 메모리 장치인 경우, 채널의 특성 상 발생하는 오류의 경향이 있을 수 있다. 본 명세서에서는, 채널이 멀티 비트 메모리 장치인 경우에 오류 정정 성능을 향상시키기 위한 인코더 및 인코딩 방법이 제안된다.
본 발명은 상술한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, 데이터 셔플링(data shuffling)을 통하여 오류가 특정 데이터 영역에서 집중적으로 발생하는 것을 방지한다.
또한, 본 발명은 데이터 셔플링을 통하여 페이지 단위의 오류의 분포(distribution)를 조정하여, 데이터가 오류 정정 성능(error correcting capability) 이내의 오류 비율(error rate)을 가지도록 한다.
또한, 본 발명은 데이터 셔플링(data shuffling) 및 랜덤화 과정(randomizing)을 통하여 오류 비율을 조정하여 오류 정정 가능성(error correctability)을 높인다.
또한, 본 발명은 멀티 비트 셀을 포함하는 메모리에 대한 프로그래밍 과정에서 페이지 당 오류 비율을 평탄화(equalize)하는 장치 및 방법을 제공한다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명의 인코더는 C 비트의 입력 비트열을 인코딩하여 C 비트의 제1 비트열을 생성하는 제1 인코더 및 상기 제1 비트열을 M 개 수신하고, 상기 수신된 M 개의 제1 비트열의 데이터를 혼합하여 M 개의 제2 비트열을 생성하는 제2 인코더를 포함하는 것을 특징으로 한다.
또한, 본 발명의 다른 측면에 따른 인코딩 방법은 C 비트의 입력 비트열을 제1 인코딩하여 C 비트의 제1 비트열을 생성하는 단계 및 상기 제1 비트열을 M 개 수신하고, 상기 수신된 M 개의 제1 비트열의 데이터를 혼합하여 M 개의 제2 비트열을 생성하는 단계를 포함하는 것을 특징으로 한다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 인코더(100)를 도시하는 도면이다.
도 1을 참조하면, 인코더(100)는 제1 인코더(110) 및 제2 인코더(120)를 포함한다.
제1 인코더(110)는 C 비트의 입력 비트열(input bit stream)을 인코딩하여 C 비트의 제1 비트열을 생성한다.
제2 인코더(120)는 M 개의 제1 비트열을 수신한다. 수신된 M 개의 제1 비트열의 데이터를 혼합하여(shuffle) M 개의 제2 비트열을 생성한다.
이 때, 제2 인코더(120)는 M x C 비트의 비트열의 데이터를 혼합하여 M 개의 제2 비트열을 생성한다.
실시예에 따라서는, 인코더(100)는 프로그래밍부(도시되지 않음)를 더 포함할 수 있다. 프로그래밍부는 C 개의 멀티 비트 셀들을 포함하는 페이지 어레이에 제2 비트열을 프로그래밍할 수 있다. 제2 비트열은 C 비트이고, 하나의 멀티 비트 셀에는 1비트의 데이터가 프로그램될 수 있다.
이 때, 프로그래밍부는 M번의 페이지 프로그래밍 동작을 수행하여 멀티 비트 셀 각각에 M 비트의 데이터를 저장할 수 있다.
실시예에 따라서는, 제1 인코더(110)는 N 비트의 입력 비트열을 인코딩하여 C 비트의 제1 비트열을 생성할 수도 있다. 이 때, C가 N보다 크면, (C-N)비트의 잉여 비트(redundant bit)가 입력 비트열에 부가되는 것으로 생각할 수 있다. 이 때, 생성된 제1 비트열은 C 비트 코드워드(codeword)로 구성되었다고 한다.
실시예에 따라서는, 제2 인코더(120)는 C 비트의 제1 비트열을 인코딩하여 (C+P) 비트의 제2 비트열을 생성할 수도 있다. 이 때, 제2 인코더(120)는 C 비트의 제1 비트열에 대하여 P 비트의 부가 정보(redundant information) 또는 패리티(parity)를 추가할 수 있다.
제2 인코더(120)는 M 개의 제1 비트열을 인코딩하고, 제1 비트열 각각은 C 비트이므로, 제2 인코더(120)는 M x C 비트의 정보를 동시에 인코딩한다.
제2 인코더(120)가 M 개의 제1 비트열을 인코딩하여 M 개의 제2 비트열을 생성하는 과정을 생성자 행렬(generator matrix) G를 이용하여 하기 수학식 1 내지 수학식 3과 같이 나타낼 수 있다.
[수학식 1]
v = [B[0] B[1] ㆍㆍㆍ B[C-1] B[C] ㆍㆍㆍ B[(M-1)C-1] ]
v 는 M 개의 제1 비트열을 하나의 행 벡터(row vector)로 나타낸 것이다.
[수학식 2]
w = [S[0] S[1] ㆍㆍㆍ S[C+P-1] S[C+P] ㆍㆍㆍ S[(M-1)(C+P)-1] ]
w 는 M 개의 제2 비트열을 하나의 행 벡터(row vector)로 나타낸 것이다.
[수학식 3]
w = v x G
생성자 행렬 G는 MC x M(C+P) 행렬이며, 제1 비트열의 행 벡터 v 와 G 가 곱해져서 제2 비트열의 행 벡터 w가 생성된다.
간단한 G의 예로서, M=2, C=2, P=1 인 경우가 하기 수학식 4와 같이 나타내어질 수 있다.
[수학식 4]
Figure 112007079736036-pat00001
G는 제1 비트열에 대한 데이터 셔플링 및 패리티 추가에 대응하는 생성자 행렬이다.
실시예에 따라서는, P=0인 경우 G는 제1 비트열에 대한 패리티 추가 없이 데이터 셔플링만을 수행할 수도 있다.
실시예에 따라서는, 제1 비트열의 코드워드를 구성하는 비트 수와 하나의 페이지 어레이에 포함되는 멀티 비트 셀들의 수가 다를 수도 있다. 본 명세서의 이하에서는, 간단한 설명을 위하여 제1 비트열의 코드워드의 비트 수 및 하나의 페이지 어레이에 포함되는 멀티 비트 셀들의 수를 모두 C라고 가정한다.
도 3은 도 1의 인코더(100)가 오류 정정 가능성(error correctability)을 높이는 과정을 도시하는 도면이다.
도 3을 참조하면, 가로축은 페이지 별 오류 개수를 나타내고, 세로축은 해당하는 페이지의 수를 나타낸다.
하나의 페이지 어레이는 C 개의 멀티 비트 셀들을 포함한다. 멀티 비트 셀들 각각은 M 비트의 데이터를 저장하므로, 하나의 페이지 어레이는 C x M 비트의 데이터를 저장한다.
하나의 페이지는 페이지 어레이에 동시에 프로그래밍되는 C 비트의 데이터를 가리킨다. 하나의 페이지를 페이지 어레이에 프로그래밍하는 동작을 페이지 프로그래밍 동작이라 한다.
본 실시예에서는, 설명을 단순화하기 위한 목적으로, 제2 비트열은 하나의 페이지에 대응한다고 가정한다.
멀티 비트 메모리 장치(도시되지 않음)는, 하나의 페이지가 하나의 페이지 어레이에 프로그래밍된 후 페이지 어레이로부터 저장된 페이지를 읽는다.
멀티 비트 메모리 장치는 읽은 페이지가 프로그래밍된 페이지와 일치하는지 여부를 확인하기 위해 페이지에 오류 제어 코드(error control codes, ECC)를 삽입한다.
멀티 비트 메모리 장치는 미리 정해진 ECC 규칙에 따라 읽은 페이지에 오류가 있는지 여부를 판정한다.
ECC의 종류에 따라서는 멀티 비트 메모리 장치는, 읽은 페이지에 몇 개의 오류가 있는지를 판정할 수 있다.
ECC의 종류에 따라서는 멀티 비트 메모리 장치는, 읽은 페이지에 최대 오류 정정 능력(maximum error correcting capability)보다 많지 않은 오류가 있으면 페이지의 오류를 정정할 수 있다.
멀티 비트 메모리 장치가 읽은 페이지에 최대 오류 정정 능력보다 많지 않은 오류가 있어, 멀티 비트 메모리 장치가 페이지의 오류를 정정할 수 있는 경우에 오류 정정 가능성(error correctability)이 있다고 한다.
도 3의 가로축은 페이지 별 오류의 개수를 나타낸다. 세로축은, 멀티 비트 메모리 장치의 페이지들 중에서, 가로축에 대응하는 오류의 개수를 가지는 페이지의 수를 나타낸다.
산포(310)는 제1 비트열의 오류의 개수에 대응하는 페이지의 산포를 나타낸다.
산포(350)는 제2 비트열의 오류의 개수에 대응하는 페이지의 산포를 나타낸다.
오류 개수(330) 및 오류 개수(370)는 각각 제1 비트열 및 제2 비트열의 오류의 개수의 평균값을 나타낸다.
오류 개수(340) 및 오류 개수(380)는 멀티 비트 메모리 장치의 최대 오류 정정 능력을 나타낸다.
산포(320)는, 제1 비트열에 대하여, 멀티 비트 메모리 장치가 오류를 정정할 수 없는 페이지의 수를 나타낸다.
산포(360)는, 제2 비트열에 대하여, 멀티 비트 메모리 장치가 오류를 정정할 수 없는 페이지의 수를 나타낸다.
인코더(100)는 제1 비트열 및 제2 비트열에 대하여 동일한 페이지 별 오류의 평균값을 제공한다.
제2 인코더(120)는, 제1 비트열에 대하여, 오류 개수(330)보다 많은 오류를 가지는 페이지와 오류 개수(330)보다 적은 오류를 가지는 페이지의 데이터를 섞는다(shuffle). 따라서 제2 인코더(120)는, 제1 비트열에 대하여, 오류 개수(330)보다 많은 오류를 가지는 페이지의 수를 줄이고, 오류 개수(330)보다 적은 오류를 가지는 페이지의 수를 늘린다.
제2 인코더(120)는 데이터 셔플링(data shuffling)을 통하여 오류가 특정 데이터 영역에서 집중적으로 발생하는 것을 방지한다.
제2 인코더(120)는 데이터 셔플링을 통하여 페이지 단위의 오류의 산포(distribution)를 조정하여, 데이터가 오류 정정 성능(error correcting capability) 이내의 오류 비율(error rate)을 가지도록 한다.
따라서 제2 인코더(120)는 데이터 셔플링(data shuffling)을 통하여 오류 비율을 조정하여 오류 정정 가능성(error correctability)을 높인다.
제2 인코더(120)는 페이지 당 오류 비율을 평탄화(equalize)한다.
도 3을 참조하면, 산포(360)가 산포(320)보다 매우 작은 것을 알 수 있다.
제2 인코더(120)는 페이지 별 오류 개수의 산포를 조정하여, 오류 정정 가능성을 높인다.
다른 실시예에 따라서는, 인코더(100)는 프로그래밍부(도시되지 않음)를 더 포함할 수 있다. 프로그래밍부는 C 개의 멀티 비트 셀들을 포함하는 페이지 어레 이에 제2 비트열을 프로그래밍할 수 있다.
이 때, 프로그래밍부는 L번의 페이지 프로그래밍 동작을 수행하여 멀티 비트 셀 각각에 L 비트의 데이터를 저장할 수 있다. 제2 인코더(120)는 K 개의 워드 라인에 연결되는 멀티 비트 셀들에 저장되는 L x K 개의 제1 비트열을 수신한다. 이 때, M = L x K 의 관계식이 성립한다. 제2 인코더(120)는 M 개의 제1 비트열의 데이터를 섞어(shuffle) M 개의 제2 비트열을 생성한다.
다른 실시예에 따라서는, 하나의 페이지 어레이는 C 개의 멀티 비트 셀들을 포함하고, 인코더(100)는 N 비트의 코드워드(codeword)에 대하여 인코딩을 수행할 수 있다. 예를 들어, C = 1024 이고, N =100인 경우, 인코더(100)는 입력 비트열을 100비트의 코드워드 단위로 나누어 코드워드 각각에 대하여 인코딩을 수행할 수 있다. 하나의 페이지 어레이에 대하여 인코더(100)는 10번의 인코딩 과정을 수행하고 나머지 24개의 멀티 비트 셀들에 대하여는 미리 정해진 값을 프로그래밍할 수 있다.
도 2는 본 발명의 다른 실시예에 따른 인코더(200)를 도시하는 도면이다.
도 2를 참조하면, 인코더(200)는 제1 인코더(210), 제2 인코더(220) 및 제3 인코더(230)를 포함한다.
제1 인코더(210)는 C 비트의 입력 비트열을 인코딩하여 제1 비트열을 생성한다.
제2 인코더(220)는 제1 비트열을 M 개 수신하고, 수신된 M 개의 제1 비트열의 데이터를 섞어(shuffle) M 개의 제2 비트열을 생성한다.
제3 인코더(230)는 제2 비트열을 수신하고, 수신된 제2 비트열을 랜덤화하여(randomize) 제3 비트열을 생성한다.
제3 인코더(230)는 랜덤화 다항식(randomizer polynomial) f(X)를 이용하여 제2 비트열을 랜덤화한다.
랜덤화 다항식 f(X)의 일 예는 하기 수학식 5와 같이 나타낼 수 있다.
[수학식 5]
f(X) = f0 + f1X + f2X2 + ㆍㆍㆍ + fnXn
여기서, f0, f1, ㆍㆍㆍfn 은 다항식의 계수이다.
도 4는 본 발명의 일 실시예에 따른 ECC 인코더 및 ECC 디코더를 포함하는 시스템(400)을 도시하는 도면이다.
도 4를 참조하면, 시스템(400)은 ECC 인코더(410), 셔플러(shuffler)(420), 랜더마이저 (randomizer)(430), 메모리 채널(440), 디랜더마이저 (de-randomizer)(450), 디셔플러 (de-shuffler)(460) 및 ECC 디코더(470)를 포함한다.
ECC 인코더(410)는 입력 비트열을 수신하고, 수신된 입력 비트열을 ECC 인코딩하여 제1 비트열을 생성한다. 셔플러(420)는 M 개의 제1 비트열을 수신하고, 수신된 M 개의 제1 비트열을 섞어 M 개의 제2 비트열을 생성한다.
랜더마이저(430)는 제2 비트열을 수신하고, 수신된 제2 비트열을 랜덤화하여 제3 비트열을 생성한다.
제3 비트열은 메모리 채널(440)로 전송되고, 메모리 채널(440)에 의해 제4 비트열로 변환된다.
메모리 채널(440)은 메모리 장치에 데이터가 저장된 후 데이터가 읽히기까지의 시간적 경과일 수도 있고, 메모리 장치에 데이터가 저장되고 데이터가 읽히는 과정일 수도 있다.
제4 비트열 및 제3 비트열의 차이가 제4 비트열의 오류이다.
디랜더마이저(450)는 제4 비트열을 수신하고, 수신된 제4 비트열을 디랜더마이즈(de-ramdomize)하여 제5 비트열을 생성한다.
이 때, 디랜더마이즈 과정은 랜덤화 과정을 역으로 수행하는 과정이다.
디셔플러(460)는 제5 비트열을 수신하고, 수신된 제5 비트열을 디셔플(de-shuffle)하여 제6 비트열을 생성한다.
이 때, 디셔플 과정은 데이터 셔플링 과정을 역으로 수행하는 과정이다.
ECC 디코더(470)는 제6 비트열을 수신하고, 수신된 제6 비트열을 ECC 디코딩하여 제7 비트열을 생성한다.
ECC 디코더(470)는 제6 비트열에 포함된 오류가 최대 오류 정정 능력보다 크지 않으면 제6 비트열에 포함된 오류를 정정한다. ECC 디코더(470)는 제6 비트열에 포함된 오류를 정정하여 오류 없는(error free) 제7 비트열을 생성한다.
다시 도 1을 참조하면, 제2 인코더(120)는 제1 비트열의 데이터를 섞어(shuffle) 제2 비트열을 생성한다.
제2 인코더(120)가 제2 비트열을 생성하는 과정은 도 5 및 도 6을 통하여 설 명한다.
도 5는 제1 비트열의 일 예를 도시하는 도면이다.
도 5를 참조하면, R개의 제1 비트열이 도시된다.
제1 비트열은 비트열(510), 비트열(520) 및 비트열(530)을 포함한다.
비트열(510)은 B[0] 내지 B[C-1]을 포함하는 C 비트의 비트열이다.
비트열(520)은 B[C] 내지 B[2C-1]을 포함하는 C 비트의 비트열이다.
비트열(530)은 B[C(R-1)] 내지 B[C(R-1)+(C-1)]을 포함하는 C 비트의 비트열이다.
도 6은 제2 인코더(120)가 제2 비트열을 생성하는 과정의 일 실시예를 도시하는 도면이다.
도 6을 참조하면, 생성된 제2 비트열은 비트열(610) 및 비트열(620)이다.
제2 비트열의 i번째 원소 Si는 제1 비트열의 j번째 원소 B[j]로부터 하기 수학식 6에 의해 얻어질 수 있다.
[수학식 6]
j = ( i x C + D ) mod ( M x C )
Si = B[j]
여기서, D는 데이터 셔플링 과정의 오프셋이다.
A mod B 는 A를 B로 나눈 나머지를 의미하는 모듈로(modulo) 연산이다.
도 6에서는 M = 2인 경우의 데이터 셔플링 과정이 도시된다.
D는 데이터 셔플링 과정에서 i의 값에 따라 조정된다.
본 실시예에서는, 0 이상 (M-1) 이하인 i에 대해서는 D=0 이 할당되고, M 이상 (2M-1) 이하인 i에 대해서는 D=1 이 할당된다.
S0에 대해서는 j = 0 mod 2C = 0 이므로 S0 = B[0]의 관계식이 성립된다.
S1에 대해서는 j = C mod 2C = C 이므로 S1 = B[C]의 관계식이 성립된다.
제2 인코더(120)는 S0 및 S1을 포함하는 비트열(610)을 제2 비트열로 생성한다.
S2에 대해서는 j = 1 mod 2C = 1 이므로 S2 = B[1]의 관계식이 성립된다.
S3에 대해서는 j = (C+1) mod 2C = C+1 이므로 S2 = B[C+1]의 관계식이 성립된다.
제2 인코더(120)는 S2 및 S3을 포함하는 비트열(620)을 제2 비트열로 생성한다.
도 7은 제2 인코더(120)가 제2 비트열을 생성하는 과정의 다른 실시예를 도시하는 도면이다.
도 7을 참조하면, 생성된 제2 비트열은 비트열(710) 및 비트열(720)이다.
본 실시예에서는, 0 이상 (M-1) 이하인 i에 대해서는 D=0 이 할당되고, M 이상 (2M-1) 이하인 i에 대해서는 D=1 이 할당된다.
S0에 대해서는 j = 0 mod (M x C) = 0 이므로 S0 = B[0]의 관계식이 성립된다.
S1에 대해서는 j = C mod (M x C) = C 이므로 S1 = B[C]의 관계식이 성립된다.
S2에 대해서는 j = 2C mod (M x C) = 2C 이므로 S2 = B[2C]의 관계식이 성립된다.
S3에 대해서는 j = 3C mod (M x C) = 3C 이므로 S3 = B[3C]의 관계식이 성립된다.
S(M-1)에 대해서는 j = {(M-1) x C} mod (M x C) = (M-1) x C 이므로 S(M-1) = B[(M-1)C]의 관계식이 성립된다.
제2 인코더(120)는 S0, S1, S2, S3 및 S(M-1)을 포함하는 비트열(710)을 제2 비트열로 생성한다.
S(M)에 대해서는 j = (M x C + 1) mod (M x C) = 1 이므로 S(M) = B[1]의 관계식이 성립된다.
S(M+1)에 대해서는 j = {(M+1) x C + 1} mod (M x C) = C+1 이므로 S(M+1) = B[C+1]의 관계식이 성립된다.
S(M+2)에 대해서는 j = {(M + 2) x C + 1} mod (M x C) = 2C+1이므로 S(M+2) = B[2C+1]의 관계식이 성립된다.
S(M+3)에 대해서는 j = {(M + 3) x C + 1} mod (M x C) = 3C+1 이므로 S(M+3) = B[3C+1]의 관계식이 성립된다.
S(2M-1)에 대해서는 j = {(2M-1) x C} mod (M x C) = (M-1)C+1 이므로 S(2M-1) = B[(M-1)C+1]의 관계식이 성립된다.
제2 인코더(120)는 S(M), S(M+1), S(M+2), S(M+3) 및 S(2M-1)을 포함하는 비트열(720)을 제2 비트열로 생성한다.
실시예에 따라서는, 제2 인코더(120)는 S0, S1, .... S(C-1) 까지 C 비트를 포함하는 비트열을 제2 비트열로 생성할 수도 있다. 만일 C가 M보다 매우 큰 경우라면, 제2 인코더(120)는 S0, S1, S(M-1), S(M), S(M+1), .... S(2M),...S(3M), ... S(C-1)를 포함하는 C비트의 제2 비트열을 생성할 수 있다.
실시예에 따라서는, 제2 인코더(120)는 하나의 페이지 어레이(도시되지 않음)의 멀티 비트 셀들에 저장되는 데이터를 셔플링할 수 있다.
이 때, 멀티 비트 셀 각각은 M 비트의 데이터를 저장할 수 있고, 하나의 페이지 어레이는 M x C 비트의 데이터를 저장할 수 있다.
하나의 페이지 어레이에는 M 번의 페이지 프로그래밍 동작이 수행되어 데이터가 저장될 수 있다.
다른 실시예에 따라서는, 제2 인코더(120)는 K개의 페이지 어레이들의 멀티 비트 셀들에 저장되는 데이터를 셔플링할 수 있다.
이 때, 멀티 비트 셀 각각은 L 비트의 데이터를 저장할 수 있고, 하나의 페이지 어레이는 L x C 비트의 데이터를 저장할 수 있다.
하나의 페이지 어레이에는 L번의 페이지 프로그래밍 동작이 수행되어 데이터가 저장될 수 있다.
이 때, M, L, K 간에는 M = L x K의 관계식이 성립한다.
도 8은 본 발명의 다른 실시예에 따른 제2 인코더(800)를 도시하는 도면이다.
도 8을 참조하면, 제 2 인코더(800)는 직렬/병렬(Series/Parallel) 신호처리 부(810), 버퍼(820) 및 다중화기(multiplexer)(830)를 포함한다.
직렬/병렬 신호처리부(810)는 A 개의 제1 비트열을 수신하고, 수신된 입력 비트열에 대한 직렬/병렬 신호 처리(signal processing)를 수행하여 C x A 비트의 비트열을 생성한다.
버퍼(820)는 C x A 비트의 비트열을 저장하고, 다중화기(830)로 저장된 비트열을 전달한다.
다중화기(830)는 A 대 1 의 다중화(multiplexing)를 수행한다. 다중화기는 C x A 비트의 비트열을 다중화하여 C 비트의 제2 비트열을 생성한다.
도 9는 본 발명의 또 다른 실시예에 따른 제3 인코더(900)를 도시하는 도면이다.
도 9를 참조하면, 제3 인코더(900)는 2개의 레지스터(register)(910, 920)를 포함한다.
모듈로 가산기(940)는 제2 비트열을 수신하고, 수신된 제2 비트열에 대한 모듈로 덧셈을 수행하여 제3 비트열을 생성한다.
모듈로 가산기(940)의 출력은 곱셈기(970)로 전달된다. 곱셈기(970)는 계수 f2를 비트열에 곱하여 곱셈기(950) 및 곱셈기(960)로 전달한다. 곱셈기(950)는 계수 f0를 비트열에 곱하여 레지스터(910)에 전달한다. 곱셈기(960)는 계수 f1를 비트열에 곱하여 모듈로 가산기(930)로 전달한다.
모듈로 가산기(930)는 레지스터(910) 및 곱셈기(960)의 출력을 합산하여 레 지스터(920)로 전달한다.
제3 인코더(900)에 의해 수행되는 랜덤화 과정은 랜덤화 다항식 f(X) = f0 + f1 X + f2 X2 으로 나타내어질 수 있다.
도 10은 본 발명의 일 실시예에 따른 인코딩 방법을 나타낸 동작 흐름도이다.
도 10을 참조하면, 인코딩 방법은 C 비트의 입력 비트열을 제1 인코딩하여 C 비트의 제1 비트열을 생성한다(S1010).
인코딩 방법은 제1 비트열을 M 개 수신한다(S1020).
인코딩 방법은 수신된 M 개의 제1 비트열의 데이터를 셔플하여 M개의 제2 비트열을 생성한다(S1030).
인코딩 방법은 제2 비트열을 수신한다(S1040).
인코딩 방법은 수신된 제2 비트열을 랜덤화하여 제3 비트열을 생성한다(S1050).
실시예에 따라서는, 인코딩 방법은 C 개의 멀티 비트 셀들을 포함하는 페이지 어레이에 제2 비트열을 프로그래밍할 수 있다.
이 때, 하나의 멀티 비트 셀은 M 비트의 데이터를 저장할 수 있다.
실시예에 따라서는, 제2 비트열의 i번째 원소 Si는 제1 비트열의 j번째 원소 B[j]로부터 하기 수학식 7에 의해 얻어질 수 있다.
[수학식 7]
j = ( i x C + D ) mod ( M x C )
Si = B[j]
여기서, D는 데이터 셔플링 과정의 오프셋이다.
A mod B 는 A를 B로 나눈 나머지를 의미하는 모듈로(modulo) 연산이다.
본 발명에 따른 인코딩 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 인코더(100)를 도시하는 도면이다.
도 2는 본 발명의 다른 실시예에 따른 인코더(200)를 도시하는 도면이다.
도 3은 도 1의 인코더(100)가 오류 정정 가능성(error correctability)을 높이는 과정을 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 ECC 인코더 및 ECC 디코더를 포함하는 시스템(400)을 도시하는 도면이다.
도 5는 제1 비트열의 일 예를 도시하는 도면이다.
도 6은 제2 인코더(120)가 제2 비트열을 생성하는 과정의 일 실시예를 도시하는 도면이다.
도 7은 제2 인코더(120)가 제2 비트열을 생성하는 과정의 다른 실시예를 도시하는 도면이다.
도 8은 본 발명의 다른 실시예에 따른 제2 인코더(800)를 도시하는 도면이다.
도 9는 본 발명의 또 다른 실시예에 따른 제3 인코더(900)를 도시하는 도면이다.
도 10은 본 발명의 일 실시예에 따른 인코딩 방법을 나타낸 동작 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 제1 인코더
120: 제2 인코더

Claims (11)

  1. 입력 비트열을 인코딩하여 C 비트의 제1 비트열을 생성하는 제1 인코더; 및
    상기 제1 비트열을 M 개 수신하고, 상기 수신된 M 개의 제1 비트열의 데이터를 혼합하여 제2 비트열을 생성하는 제2 인코더
    를 포함하는 것을 특징으로 하는 인코더.
  2. 제1항에 있어서,
    상기 제2 비트열을 수신하고, 상기 수신된 제2 비트열을 랜덤화하여 제3 비트열을 생성하는 제3 인코더
    를 더 포함하는 것을 특징으로 하는 인코더.
  3. 제1항에 있어서,
    복수의 멀티 비트 셀들을 포함하는 페이지 어레이에 상기 제2 비트열을 프로그래밍하는 프로그래밍부
    를 더 포함하고,
    상기 하나의 멀티 비트 셀은 M 비트의 데이터를 저장하는 것을 특징으로 하는 인코더.
  4. 제1항에 있어서,
    복수의 멀티 비트 셀들을 포함하는 페이지 어레이에 상기 제2 비트열을 프로그래밍하는 프로그래밍부
    를 더 포함하고,
    하나의 상기 멀티 비트 셀은 L 비트의 데이터를 저장하고,
    상기 제2 인코더는 K 개의 워드 라인에 연결되는 멀티 비트 셀들에 저장되는 상기 제2 비트열을 생성하고,
    M = L x K 의 관계식이 성립하는 것을 특징으로 하는 인코더.
  5. 제1항에 있어서,
    상기 제2 비트열의 i번째 원소 Si는 상기 제1 비트열의 j번째 원소 B[j]로부터 하기 수학식 1에 의해 얻어지는 것을 특징으로 하는 인코더.
    [수학식 1]
    j = ( i x C + D ) mod ( M x C )
    Si = B[j]
    여기서, D는 혼합 과정의 오프셋이다.
  6. 제5항에 있어서,
    상기 제2 비트열의 i번째 원소 Si는 상기 오프셋 D를 i의 값에 따라 조정하여 얻어지는 것을 특징으로 하는 인코더.
  7. 제1 인코더에서, 입력 비트열을 제1 인코딩하여 C 비트의 제1 비트열을 생성하는 단계; 및
    제2 인코더에서, 상기 제1 비트열을 M 개 수신하고, 상기 수신된 M 개의 제1 비트열의 데이터를 혼합하여 제2 비트열을 생성하는 단계
    를 포함하는 것을 특징으로 하는 인코딩 방법.
  8. 제7항에 있어서,
    제3 인코더에서, 상기 제2 비트열을 수신하고, 상기 수신된 제2 비트열을 랜덤화하여 제3 비트열을 생성하는 단계
    를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  9. 제7항에 있어서,
    프로그래밍부에서, 복수의 멀티 비트 셀들을 포함하는 페이지 어레이에 상기 제2 비트열을 프로그래밍하는 단계
    를 더 포함하고,
    상기 하나의 멀티 비트 셀은 M 비트의 데이터를 저장하는 것을 특징으로 하는 인코딩 방법.
  10. 제7항에 있어서,
    상기 제2 비트열의 i번째 원소 Si는 상기 제1 비트열의 j번째 원소 B[j]로부터 하기 수학식 2에 의해 얻어지는 것을 특징으로 하는 인코딩 방법.
    [수학식 2]
    j = ( i x C + D ) mod ( M x C )
    Si = B[j]
    여기서, D는 혼합 과정의 오프셋이다.
  11. 제7항 내지 제10항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020070112851A 2007-11-06 2007-11-06 인코더 및 인코딩 방법 KR101355633B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070112851A KR101355633B1 (ko) 2007-11-06 2007-11-06 인코더 및 인코딩 방법
US12/149,214 US8171382B2 (en) 2007-11-06 2008-04-29 Encoding system and method for encoding error control codes within bit streams
JP2010531953A JP5336501B2 (ja) 2007-11-06 2008-05-19 ビット列間のエラー制御コードをエンコードする方法およびエンコードシステム
PCT/KR2008/002773 WO2009061048A1 (en) 2007-11-06 2008-05-19 Encoding system and method for encoding error control codes within bit streams

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070112851A KR101355633B1 (ko) 2007-11-06 2007-11-06 인코더 및 인코딩 방법

Publications (2)

Publication Number Publication Date
KR20090046608A KR20090046608A (ko) 2009-05-11
KR101355633B1 true KR101355633B1 (ko) 2014-01-29

Family

ID=40589384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070112851A KR101355633B1 (ko) 2007-11-06 2007-11-06 인코더 및 인코딩 방법

Country Status (4)

Country Link
US (1) US8171382B2 (ko)
JP (1) JP5336501B2 (ko)
KR (1) KR101355633B1 (ko)
WO (1) WO2009061048A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013173961A1 (en) * 2012-05-21 2013-11-28 Nokia Siemens Networks Oy Interference randomization
WO2018187902A1 (en) 2017-04-10 2018-10-18 Qualcomm Incorporated An efficient interleaver design for polar codes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000010353A (ko) * 1998-07-31 2000-02-15 윤종용 통신시스템의 채널 부호화 및 복호화 장치
WO2006136883A1 (en) * 2005-06-22 2006-12-28 Adaptive Spectrum And Signal Alignment, Inc. Dynamic minimum-memory interleaving
JP2007049723A (ja) * 1993-03-25 2007-02-22 Matsushita Electric Ind Co Ltd 送信装置、受信装置、送信方法、受信方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930001190A (ko) * 1991-06-29 1993-01-16 강진구 디지탈 데이타의 에러 정정장치
JPH05204751A (ja) 1992-01-29 1993-08-13 Hitachi Ltd メモリ回路
JP2755067B2 (ja) * 1992-09-25 1998-05-20 日本電気株式会社 フレーム同期回路
JP3130716B2 (ja) * 1993-11-16 2001-01-31 株式会社東芝 Ofdm送信装置及びofdm受信装置
JPH07226026A (ja) * 1994-02-15 1995-08-22 Sony Corp ディジタル信号記録再生装置
JP3304632B2 (ja) * 1994-09-21 2002-07-22 ソニー株式会社 インターリーブ方法およびインターリーブ回路
US5757822A (en) * 1995-08-24 1998-05-26 Quantum Corporation Bit-interleaved rate 16/17 modulation code with three-way byte-interleaved ECC
US5745522A (en) * 1995-11-09 1998-04-28 General Instrument Corporation Of Delaware Randomizer for byte-wise scrambling of data
US6332042B1 (en) * 1997-10-23 2001-12-18 Sony Corporation Apparatus and method for encoding and decoding data in a lossy transmission environment
KR19990058425A (ko) 1997-12-24 1999-07-15 윤종용 메모리 제어장치
KR100272708B1 (ko) * 1997-12-30 2000-11-15 전주범 D-vhs시스템에서 셔플링을 이용한 디지털 데이터의 코딩/디코딩 방법
KR100266748B1 (ko) * 1997-12-31 2000-10-02 윤종용 반도체 메모리 장치 및 그 장치의 에러 정정 방법
CN1595811A (zh) * 1998-01-09 2005-03-16 皇家菲利浦电子有限公司 包含二进制源信号的数据比特流的记录载体
KR100526512B1 (ko) 1999-05-20 2005-11-08 삼성전자주식회사 이동 통신시스템의 직렬 쇄상 컨볼루션 부호화를 위한 인터리빙장치 및 방법
WO2002078196A1 (en) * 2001-03-22 2002-10-03 University Of Florida Method and coding means for error-correction utilizing concatenated parity and turbo codes
JP2003304176A (ja) * 2002-04-08 2003-10-24 Matsushita Electric Ind Co Ltd 通信システム、受信装置及び受信方法
KR100630143B1 (ko) * 2002-09-30 2006-09-29 삼성전자주식회사 통신 시스템에서 셔플링 데이터의 수신 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007049723A (ja) * 1993-03-25 2007-02-22 Matsushita Electric Ind Co Ltd 送信装置、受信装置、送信方法、受信方法
KR20000010353A (ko) * 1998-07-31 2000-02-15 윤종용 통신시스템의 채널 부호화 및 복호화 장치
WO2006136883A1 (en) * 2005-06-22 2006-12-28 Adaptive Spectrum And Signal Alignment, Inc. Dynamic minimum-memory interleaving

Also Published As

Publication number Publication date
WO2009061048A1 (en) 2009-05-14
JP2011503955A (ja) 2011-01-27
KR20090046608A (ko) 2009-05-11
US8171382B2 (en) 2012-05-01
JP5336501B2 (ja) 2013-11-06
US20090119569A1 (en) 2009-05-07

Similar Documents

Publication Publication Date Title
KR101451338B1 (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
US8996969B2 (en) Low density parity check decoder with miscorrection handling
US6516436B1 (en) Error control coding for transmission equipment protection
US8555139B1 (en) Integrated 2-level low density parity check (LDPC) codes
US20090235142A1 (en) Systems Using Low Density Parity Check Codes For Correcting Errors
JP5805727B2 (ja) 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化
JP2011514743A (ja) 受信したシンボル列におけるフェーズドバーストエラー、消失、シンボルエラー、及び、ビットエラーを検出及び訂正するための方法及びシステム
US20170214415A1 (en) Memory system using integrated parallel interleaved concatenation
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
US8365053B2 (en) Encoding and decoding data using store and exclusive or operations
KR101355633B1 (ko) 인코더 및 인코딩 방법
US6405339B1 (en) Parallelized programmable encoder/syndrome generator
KR101436973B1 (ko) 슈퍼차지드 코드들
KR102109589B1 (ko) 고속직렬인터페이스용 송수신 오류 정정기법이 포함된 오버헤드최소화 코딩 기법과 하드웨어 구현 방법
US9160364B1 (en) Code word formatter of shortened non-binary linear error correction code
JP4224818B2 (ja) 符号化方法及び符号化装置並びに復号方法及び復号装置
KR101073636B1 (ko) 저밀도 패리티 검사 부호를 이용한 복호화 장치
US20210314003A1 (en) Deinterleaving method and deinterleaving system performing the same
KR20240043364A (ko) G-ldpc 디코더 및 g-ldpc 디코딩 방법
KR101728567B1 (ko) 병렬 처리 복호화 장치 및 방법
JP2011078115A (ja) 情報処理装置および情報処理方法

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: 20170102

Year of fee payment: 4