KR101433620B1 - 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 - Google Patents

처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 Download PDF

Info

Publication number
KR101433620B1
KR101433620B1 KR1020070082549A KR20070082549A KR101433620B1 KR 101433620 B1 KR101433620 B1 KR 101433620B1 KR 1020070082549 A KR1020070082549 A KR 1020070082549A KR 20070082549 A KR20070082549 A KR 20070082549A KR 101433620 B1 KR101433620 B1 KR 101433620B1
Authority
KR
South Korea
Prior art keywords
error
codeword
syndrome
memory
calculating
Prior art date
Application number
KR1020070082549A
Other languages
English (en)
Other versions
KR20090018252A (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 KR1020070082549A priority Critical patent/KR101433620B1/ko
Priority to US12/191,458 priority patent/US8479085B2/en
Priority to TW097131216A priority patent/TWI482167B/zh
Priority to JP2008209891A priority patent/JP5473275B2/ja
Publication of KR20090018252A publication Critical patent/KR20090018252A/ko
Application granted granted Critical
Publication of KR101433620B1 publication Critical patent/KR101433620B1/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 디코더의 동작 방법이 개시된다. 상기 디코더의 동작 방법은 제1 코드워드를 제1메모리로 전송하면서 상기 제1 코드워드로부터 제1신드롬 값들을 계산하는 단계, 및 상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 동안 제2 코드워드를 제2메모리로 전송하면서 상기 제2 코드워드로부터 제2신드롬 값들을 계산하는 단계를 포함한다.
BCH 디코더, 리드-솔로몬 디코더, 치엔 서치, 포니 알고리즘

Description

처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 디코더 및 그 디코딩 방법{Decoder for increasing throughput using double buffering structure and pipelining technique and decoding method thereof}
본 발명은 디코딩 기술에 관한 것으로, 특히 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 디코더 및 그 디코딩 방법에 관한 것이다.
채널을 통하여 수신기로 디지털 정보를 전송하는 디지털 데이터 통신 시스템에서, 노이즈들 및/또는 왜곡들 때문에, 수신된 디지털 정보는 종종 많은 비트 에러들을 포함한다. 이러한 문제점들을 극복하기 위하여, BCH 인코딩 기술과 BCH 디코딩 기술이 종종 사용된다. 상기 BCH 인코딩 기술과 BCH 디코딩 기술은 Bose, Chaudhuri, 및 Hocquenghem에 의하여 각각 독립적으로 발전되었다.
리드-솔로몬(Reed-Solomon; RS) 코드들은 디지털 통신과 데이터 저장 장치(예컨대, 컴팩트 디스크(compact disk), 또는 DVD, 등)과 같이 넓은 분야에서 사용되는 블락-기반 에러 정정 코드들(block-based error correction codes)이다. RS 코드들은 BCH 코드들의 서브셋(subset)이고, 선형 블락 코드들이다.
도 1은 일반적인 리드-솔로몬 디코더의 블락도를 나타낸다. 도 1을 참조하면, 리드-솔로몬(Reed-Solomon; RS) 디코더(10)는 신드롬 계산기(20), 키-방정식 솔버(30), 치엔 서치와 포니 계산 블락(40), 에러 정정 블락(50), 및 데이터 버퍼(60)를 포함한다.
신드롬 계산기(20)는 수신된 코드워드(R(x))로부터 신드롬 값들(S(x))을 계산한다. 신드롬 값들(S(x))이 모두 "0"인 경우, 즉, 수신된 코드워드(R(x))에 에러가 하나도 포함되지 않은 경우 데이터 버퍼(60)에 저장된 코드워드(R(x))는 에러 정정 없이 바로 출력된다.
그러나, 신드롬 값들(S(x))이 모두 "0"이 아닌 경우, Berlekamp-Massey 알고리즘 또는 유클리디언 알고리즘(Euclidean Algorithm)을 이용하는 키-방정식 솔버(30)는 키-방정식(Key-Equation)을 풀기 위하여 신드롬 값들(S(x))로부터 에러 위치 다항식(Error Location(or Locator) Polynomial; Λ(x))과 에러 값 다항식 (Error Valve (or Evaluator) Polynomial; Ω(x))을 계산한다.
치엔 서치와 포니 계산 블락(40)은 치엔 서치(Chien Search)를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 위치들을 계산하고, 포니 알고리즘(Forney Algorithm)을 이용하여 에러 값 다항식(Ω(x))으로부터 에러 값들(또는 에러 패턴)을 계산한다. 즉, 치엔 서치와 포니 계산 블락(40)은 에러 다항식(E(x))을 발생한다. 에러 다항식(E(x))의 계수들이 에러 위치들과 에러 값들이다.
에러 정정 블락(50)은 치엔 서치와 포니 계산 블락(40)으로부터 출력되는 에러 위치들과 에러 값들에 기초하여 데이터 버퍼(60)로부터 출력되는 코드워드의 에 러를 정정하고, 에러 정정된 코드워드(C(x))를 출력한다. 데이터 버퍼(60)는 디코더(10)가 신드롬 값들(S(x))을 계산하고 키-방정식을 푸는 동안 코드워드(R(x))를 수신하고 저장한다.
수신된 코드워드(R(x))에 적어도 하나의 에러가 포함된 경우, 키-방정식을 풀기 위하여 필요한 구성 요소를 제외한 나머지 구성 요소들 각각의 동작은 정지된다. 예컨대, 키-방정식 솔버(30)가 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))을 계산하는 동안, 신드롬 계산기(20), 치엔 서치와 포니 계산 블락(40), 및 에러 정정 블락(50)의 동작은 정지된다. 따라서, 디코더(10)의 성능, 특히 읽기 성능과 처리량(throughput)은 저하된다. 따라서, 읽기 성능과 처리량을 증가시킬 수 있는 디코더와 디코딩 방법이 요구된다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 처리량을 높이기 위하여 더블 버퍼링(double buffering) 구조와 파이프라이닝(pipelining) 기법을 이용하는 디코더 및 상기 디코더의 동작 방법을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 디코더의 동작 방법은 제1 코드워드를 제1메모리로 전송하면서 상기 제1 코드워드로부터 제1신드롬 값들을 계산하는 단계; 및 상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 동안, 상기 제1 코드워드에 연속적인 제2 코드워드를 제2메모리로 전송하면서 상기 제2 코드워드로부터 제2신드롬 값들을 계산하는 단계를 포함한다.
상기 디코더의 동작 방법은 상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계; 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함한다. 상기 에러 위치들을 계산하는 단계는 치엔 서치 (Chien Search)를 이용하여 상기 에러 위치들을 계산한다.
상기 디코더의 동작 방법은 상기 제1신드롬 값들로부터 에러 값 다항식을 계산하는 단계; 상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계; 상기 에러 값 다항식으로부터 에러 값들을 계산하는 단계; 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 디코더는 제1메모리, 제2메모리, 신드롬 계산기, 에러 위치 다항식을 계산하기 위한 키 방정식 솔버, 및 컨트롤러를 포함한다. 상기 컨트롤러는 상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안 상기 제1신드롬 값들로부터 상기 에러 위치 다항식을 계산할 수 있도록 상기 키 방정식 솔버를 제어한다.
상기 디코더는 상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기, 및 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함한다.
상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는 상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기, 상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기, 및 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함한다.
상기 기술적 과제를 달성하기 위한 디코더는 제1메모리, 제2메모리, 신드롬 계산기, 상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하는 컨트롤러, 상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 키 방정식 솔버, 상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기, 및 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 컨트롤러로부터 출력된 제어 신호에 응답하여 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1코드워드를 출력하기 위한 에러 정정기를 포함한다.
상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는 상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기를 더 포함한다.
상기 에러 정정기는, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 제어 신호에 응답하여 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력한다.
본 발명의 실시 예에 따른 디코더는 더블 버퍼링 구조와 파이프라이닝 기법을 이용하여 처리량을 높일 수 있는 효과가 있다. 따라서, 상기 디코더의 성능은 향상된다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도 면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명의 일 실시 예에 따른 디코더의 블락 도를 나타내고, 도 4는 도 2에 도시된 디코더의 동작 방법을 설명하기 위한 타이밍 도이다.
도 2와 도 4를 참조하면, BCH 디코더로서 이용될 수 있는 더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 본 발명의 실시 예에 따른 디코더(100)는 신드롬 계산기(110), 키-방정식 솔버(Key Equation Solver; 120), 에러 위치 계산기(Error Location Calculator; 130), 에러 정정기(Error Corrector; 140), 디멀티플렉서 (De-multiplexer; 150), 제1메모리(151), 제2메모리(153), 멀티플렉서 (Multiplexer; 160), 및 컨트롤러(170)를 포함한다.
신드롬 계산기(110)는 수신된 코드워드(R(x))로부터 신드롬 값들(S(x))을 계산한다. 신드롬 값들(S(x))은 키-방정식을 풀기 위하여 사용된다.
디멀티플렉서(150)는 컨트롤러(170)로부터 출력된 제1선택 신호(SEL1)에 응답하여 연속적으로 입력되는 코드워드들 각각을 교대로 제1메모리(151)와 제2메모리(153)로 전송한다. 멀티플렉서(160)는 컨트롤러(170)로부터 출력된 제2선택 신호(SEL2)에 응답하여 제1메모리(151)와 제2메모리(153) 각각에 저장된 코드워드를 교대로 에러 정정기(140)로 출력한다. 예컨대, 디멀티플렉서(150)는 짝수 번째 코드워드를 제2메모리(153)로 전송하는 경우, 멀티플렉서(160)는 제1메모리(151)에 저장된 홀수 번째 코드워드를 에러 정정기(140)로 전송할 수 있다.
우선, 디코더(100)의 동작이 시작되면, 디멀티플렉서(150)가 컨트롤러(170)로부터 출력된 제1레벨(예컨대, 하이 레벨)을 갖는 제1선택 신호(SEL1)에 응답하여 i(i는 자연수)번째 코드워드를 제1메모리(151)로 전송하는 동안, 인에이블된 신드롬 계산기(110)는 상기 i번째 코드워드로부터 신드롬 값들(S(x))을 계산한다(도 4의 S1).
이때, 키-방정식 솔버(120), 에러 위치 계산기(130), 또는 에러 정정기(140) 중에서 적어도 하나는 컨트롤러(170)의 제어하에 디스에이블된다.
따라서, 신드롬 계산기(110)가 i번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, 디멀티플렉서(150)는 상기 i번째 코드워드를 제1메모리(151)로 전송한다(도 4의 S1).
컨트롤러(170)는 신드롬 값들(S(x))을 수신하고, 수신된 신드롬 값들(S(x))에 기초하여 i번째 코드워드에 적어도 하나의 에러가 포함되어 있는지의 여부를 판단한다.
만일, 수신된 신드롬 값들(S(x))이 모두 "0"인 경우, 즉, i번째 코드워드에 적어도 하나의 에러도 포함되어 있지 않은 경우, 컨트롤러(170)는 제1레벨을 갖는 제2선택 신호(SEL2)를 발생한다. 따라서, 제1메모리(151)에 저장된 i번째 코드워드는 멀티플렉서(160)를 통하여 에러 정정기(140)로 출력된다. 컨트롤러(170)의 제어하에 인에이블된 에러 정정기(140)는 i번째 코드워드를 그대로 출력한다.
그 후, i번째 코드워드에 연속적인 (i+1)번째 코드워드가 신드롬 계산기 (110)로 입력된다. 이 경우, 디멀티플렉서(150)는 컨트롤러(170)로부터 출력된 제2레벨(예컨대, 로우 레벨)을 갖는 제1선택 신호(SEL1)에 응답하여 (i+1)번째 코드워드를 제2메모리(153)로 전송할 수 있다. 그러나, 디멀티플렉서(150)는 컨트롤러 (170)로부터 출력된 제1레벨을 갖는 제1선택 신호(SEL1)에 응답하여 (i+1)번째 코드워드를 제1메모리(151)로 전송할 수도 있다.
이하에서는 연속적으로 입력되는 다수의 코드워드들 각각에 적어도 하나의 에러가 포함된 경우, 파이프라이닝 기법과 더블 버퍼링 구조를 갖는 본 발명의 실시 예에 따른 디코더(100)의 동작 방법을 상세히 설명한다.
수신된 신드롬 값들(S(x))이 모두 "0"이 아닌 경우, 즉, i번째 코드워드에 적어도 하나의 에러가 포함된 경우, 컨트롤러(170)의 제어하에 인에이블된 키-방정식 솔버(120)는 수신된 신드롬 값들(S(x))로부터 에러 위치 다항식(Λ(x))을 계산한다(도 4의 S5). 예컨대, 키-방정식 솔버(120)는 페터슨(Peterson) 알고리즘, 또는 Berlekamp-Massey 알고리즘을 이용하여 키-방정식을 풀 수 있다.
키-방정식 솔버(120)에 의하여 i번째 코드워드에 대한 에러 위치 다항식(Λ(x))의 계산이 시작될 때, (i+1)번째 코드워드는 신드롬 계산기(110)와 디멀티플렉서(150)로 입력된다(도 4의 S3). 이때, 디멀티플렉서(150)는 제2레벨을 갖는 제1선택 신호(SEL1)에 응답하여 (i+1)번째 코드워드를 제2메모리(153)로 전송한다(도 4의 S3).
따라서, 키-방정식 솔버(120)가 i번째 코드워드에 대한 에러 위치 다항식(Λ(x))을 계산하는 동안(도 4의 S5), 신드롬 계산기(110)는 (i+1)번째 코드워드로 부터 신드롬 값들(S(x))을 계산하고 (i+1)번째 코드워드는 제2메모리(153)로 전송된다(도 4의 S3).
에러 위치 다항식(Λ(x))의 계산이 종료된 후, 키-방정식 솔버(120)는 에러 타입에 대한 정보(EET)를 컨트롤러(170)로 출력한다. 예컨대, 상기 에러 타입에 대한 정보(EET)는 예측된 에러들의 개수에 대한 정보일 수 있다.
에러 위치 다항식(Λ(x))의 계산이 종료된 후, 신드롬 계산기(110)가 (i+1)번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, 컨트롤러(170)의 제어하에 인에이블된 에러 위치 계산기(130)는 치엔 서치(Chien Search)를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 위치들을 계산하고, 에러 다항식(E(x))을 출력한다(도 4의 S7). 예컨대, 에러 다항식(E(x))의 계수들은 계산된 에러 위치들이다.
에러 위치들을 계산이 종료되면, 에러 위치 계산기(130)는 에러 개수에 대한 정보(EN)를 컨트롤러(170)로 출력한다. 예컨대, 에러 개수에 대한 정보(EN)는 실제로 계산된 에러들의 개수에 대한 정보일 수 있다.
컨트롤러(170)는 에러 개수에 대한 정보(EN)에 응답하여 제1레벨(예컨대, 하이 레벨)을 갖는 제2선택 신호(SEL2)를 발생한다. 멀티플렉서(160)는 제1레벨을 갖는 제2선택 신호(SEL2)에 응답하여 제1메모리(151)에 저장된 i번째 코드워드를 에러 정정기(160)로 출력한다.
이때, 컨트롤러(140)의 제어하에 인에이블된 에러 정정기(140)는 에러 위치 계산기(130)에 의하여 계산된 에러 위치들과 제1메모리(151)로부터 출력된 i번째 코드워드에 기초하여 i번째 코드워드에 포함된 적어도 하나의 에러를 정정하고(도 4의 S9), 에러 정정된 i번째 코드워드(C(x))를 출력한다(도 4의 S11).
즉, 파이프라이닝 기법을 이용하는 디코더(100)에서, 신드롬 계산기(110)가 (i+1)번째 코드워드로부터 신드롬 값들(S(x))을 계산하고 (i+1)번째 코드워드를 제2메모리(153)로 버퍼링하는 동안(도 4의 S3), 에러 정정기(140)는 에러 정정된 i번째 코드워드(C(x))를 출력한다(도 4의 S11). 예컨대, 에러 정정기(140)는 배타 논리합 회로 또는 가산기로 구현될 수 있다.
또한, 에러 정정기(140)가 에러 정정된 i번째 코드워드(C(x))를 출력하는 동안, 키-방정식 솔버(120)는 (i+1)번째 코드워드에 대한 에러 위치 다항식(Λ(x))을 계산하고(도 4의 S13), 신드롬 계산기(110)는 (i+2)번째 코드워드로부터 신드롬 값들을 계산할 수 있다. 또한, 신드롬 계산기(110)가 (i+2)번째 코드워드로부터 신드롬 값들을 계산하는 동안, 컨트롤러(170)는 제1레벨을 갖는 제1선택 신호(SEL1)를 출력하므로, (i+2)번째 코드워드는 디멀티플렉서(150)를 통하여 제1메모리(151)로 버퍼링된다.
신드롬 계산기(110)가 (i+2)번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, (i+2)번째 코드워드는 디멀티플렉서(150)를 통하여 제1메모리(151)로 버퍼링되고, 키-방정식 솔버(120)는 (i+1)번째 코드워드에 대한 에러 위치 다항식(Λ(x))을 계산하고(도 4의 S13), 에러 위치 계산기(130)는 치엔 서치를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 값들을 계산한다(도 4의 S15).
또한, 신드롬 계산기(110)가 (i+2)번째 코드워드로부터 신드롬 값들을 계산하는 동안, 컨트롤러(170)는 에러 위치 계산기(130)로부터 출력된 에러 개수에 대 한 정보(EN)에 응답하여 제2레벨을 갖는 제2선택 신호(SEL2)를 발생한다. 이때 멀티플렉서(160)는 제2레벨을 갖는 제2선택 신호(SEL2)에 응답하여 제2메모리(153)에 저장된 (i+1)번째 코드워드를 에러 정정기(160)로 출력한다.
이때, 컨트롤러(140)의 제어하에 인에이블된 에러 정정기(140)는 에러 위치 계산기(130)에 의하여 계산된 에러 위치들과 제2메모리(153)로부터 출력된 (i+1)번째 코드워드에 기초하여 (i+1)번째 코드워드에 포함된 적어도 하나의 에러를 정정하고(도 4의 S17), 에러 정정된 (i+1)번째 코드워드(C(x))를 출력한다(도 4의 S19). 따라서, 파이프라이닝 기법을 이용하는 본 발명의 실시 예에 따른 디코더(100)의 처리량은 증가한다.
도 3은 본 발명의 다른 실시 예에 따른 디코더의 블락 도이다. 리드-솔로몬 디코더로서의 이용될 수 있고 더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 본 발명의 실시 예에 따른 디코더(200)는 신드롬 계산기(110), 키-방정식 솔버 (121), 에러 위치 및 에러 값 계산 블락(131), 에러 정정기(140), 디멀티플렉서(150), 제1메모리(151), 제2메모리(153), 멀티플렉서(160), 및 컨트롤러(170)를 포함한다.
제1메모리(151)와 제2메모리(153) 각각은 FIFO로 구현될 수 있다. 이 경우, 제1메모리(151)와 제2메모리(153) 각각의 데이터 기입 동작 또는 데이터 독출 동작은 컨트롤러(170)에 의하여 제어될 수 있다.
또한, 제1메모리(151)와 제2메모리(153) 각각은 RAM(Random Access memory)로 구현될 수 있다. 이 경우, 상기 디코더(200)는 컨트롤러(170)로부터 출력된 제 어 신호에 응답하여 제1메모리(151)와 제2메모리(153) 각각의 데이터 기입 동작 또는 데이터 독출 동작을 제어하기 위한 메모리 컨트롤러(미 도시)를 더 포함한다.
신드롬 계산기(110)는 수신된 코드워드(R(x))로부터 신드롬 값들(S(x))을 계산한다. 신드롬 값들(S(x))은 키-방정식을 풀기 위하여 사용된다.
키-방정식 솔버(121)는 신드롬 값들(S(x))로부터 에러 위치 다항식(Λ(x))과 에러 값 다항식(Error Value(or Evaluator) Polynomial; Ω(x))을 생성한다. 예컨대, 키-방정식 솔버(121)는 Peterson-Gorenstein-Zierler 알고리즘, Berlekamp-Massey 알고리즘, 또는 Euclidean 알고리즘을 이용하여 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))을 생성할 수 있다.
에러 위치 및 에러 값 계산 블락(131)은 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))으로부터 에러 위치들(EP)과 에러 값들(EV)을 계산한다. 에러 위치 및 에러 값 계산 블락(131)은 치엔 서치를 이용하여 에러 위치 다항식(Λ(x))으로부터 에러 위치들(EP)을 계산하기 위한 에러 위치 계산기(133), 및 포니 알고리즘(Forney Algorithm)을 이용하여 에러 값 다항식(Ω(x))으로부터 에러 값들(또는 에러 패턴들; EV)을 계산하기 위한 에러 값 계산기(135)를 포함한다.
에러 값 계산기(135)는 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))으로부터 에러 값들(또는 에러 패턴들; EV)을 계산한다.
에러 정정기(140)는 에러 위치들(EP), 에러 값들(EV), 및 제1메모리(151)와 제2메모리(153) 중에서 어느 하나로부터 출력된 코드워드를 수신하고, 수신된 코드워드의 에러를 정정하고, 에러 정정된 코드워드(C(x))를 출력한다.
디멀티플렉서(150)는 컨트롤러(170)로부터 출력된 제1선택 신호(SEL1)에 응답하여 연속적인 코드워드들 각각을 교대로 제1메모리(151)와 제2메모리(153)로 전송하고, 멀티플렉서(160)는 컨트롤러(170)로부터 출력된 제2선택 신호(SEL2)에 응답하여 제1메모리(151)와 제2메모리(153) 각각에 저장된 코드워드를 교대로 에러 정정기(140)로 출력한다.
도 3과 도 4를 참조하여 연속적인 코드워드들 각각이 에러가 포함된 경우, 본 발명의 실시 예에 따른 디코더(200)의 동작을 간단히 설명하면 다음과 같다.
우선, 신드롬 계산기(110)가 i번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, 상기 i번째 코드워드는 디멀티플렉서(150)를 통하여 제1메모리(151)로 전송된다(도 4의 S1).
키-방정식 솔버(121)가 i번째 코드워드의 신드롬 값들(S(x))로부터 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))을 계산하는 동안(도 4의 S5), 신드롬 계산기(110)는 (i+1)번째 코드워드로부터 신드롬 값들을 계산한다(도 4의 S3). 이때, (i+1)번째 코드워드는 디멀티플렉서(150)를 통하여 제2메모리(153)로 버퍼링된다(도 4의 S3).
또한, 신드롬 계산기(110)가 (i+1)번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, 에러 위치 및 에러 값 계산 블락(131)은 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))으로부터 에러 위치들(EP)과 에러 값들(EV)을 계산한다(도 4의 S7).
에러 위치들(EP)과 에러 값들(EV)이 계산된 후, 신드롬 계산기(110)가 (i+1) 번째 코드워드로부터 신드롬 값들(S(x))을 계산하는 동안, 에러 정정기(140)는 에러 위치들(EP), 에러 값들(EV), 및 멀티플렉서(160)를 통하여 제1메모리(151)로부터 출력된 i번째 코드워드에 기초하여 i번째 코드워드의 에러를 정정하고(도 4의 S9), 에러 정정된 i번째 코드워드를 출력한다(도 4의 S11).
즉, 본 발명의 실시 예에 따른, 파이프라이닝 기법을 사용하는 디코더(200)는 i번째 코드워드에 에러가 포함된 경우라도 정지 없이 i번째 코드워드에 대한 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))을 계산하는 동시에 (i+1)번째 코드워드에 대한 신드롬 값들을 동시에 계산할 수 있다.
또한, 디코더(200)는 에러 정정된 i번째 코드워드를 출력하는 동안에(도 4의 S11), (i+1)번째 코드워드에 대한 에러 위치 다항식(Λ(x))과 에러 값 다항식(Ω(x))의 계산(도 4의 S13)과 (i+2)번째 코드워드에 대한 신드롬 값들의 계산을 동시에 수행할 수 있다.
예컨대, 신드롬 계산기(110)는 n(n는 자연수, 예컨대 n은 코드워드 길이(codeword length)) 사이클 동안 동작하고, 키 방정식 솔버(120)와 에러 위치 계산기(130)는 n/2 사이클 동안 동작하도록 설계할 수 있다.
따라서, 본 발명의 실시 예에 따른 디코더(100 또는 200)는 파이프라이닝 기법을 이용하여 디코딩을 수행하므로, 연속적으로 입력되는 다수의 코드워드들 각각에 적어도 하나의 에러가 포함된 경우라도 정지 없이 디코딩을 수행할 수 있다. 따라서 디코더(100 또는 200)의 성능은 향상되고 처리량도 높아진다.
본 발명의 실시 예에 따른 디코더(100 또는 200)는 EEPROM 기반의 불-휘발성 메모리 장치에 저장된 코드워드를 디코딩하기 위하여 사용될 수 있다. 본 발명의 실시 예에 따른 디코더(100 또는 200)는 싱글 채널 또는 멀티 채널에서 사용될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 일반적인 리드-솔로몬 디코더의 블락도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 디코더의 블락도를 나타낸다.
도 3은 본 발명의 다른 실시예에 따른 디코더의 블락도이다.
도 4는 도 2 또는 도 3에 도시된 디코더의 동작 방법을 설명하기 위한 타이밍 도이다.

Claims (18)

  1. 제1 코드워드를 제1메모리로 전송하면서 상기 제1 코드워드로부터 제1신드롬 값들을 계산하는 단계; 및
    상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 동안, 상기 제1 코드워드에 연속적인 제2 코드워드를 제2메모리로 전송하면서 상기 제2 코드워드로부터 제2신드롬 값들을 계산하는 단계를 포함하는 디코더의 동작 방법.
  2. 제1항에 있어서, 상기 디코더의 동작 방법은,
    컨트롤러로부터 출력된 선택 신호에 응답하여 동작하는 디멀티플렉서를 이용하여 상기 제1 코드워드를 상기 제1메모리로 전송하고 상기 제2 코드워드를 상기 제2메모리로 전송하는 단계를 더 포함하는 디코더의 동작 방법.
  3. 제1항에 있어서, 상기 디코더의 동작 방법은,
    상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계;
    상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및
    상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함하는 디코더의 동작 방법.
  4. 제3항에 있어서, 상기 에러 위치들을 계산하는 단계는 치엔 서치 (Chien Search)를 이용하여 상기 에러 위치들을 계산하는 단계인 디코더의 동작 방법.
  5. 제3항에 있어서, 상기 제1 코드워드의 에러를 정정하는 단계는,
    상기 에러 위치들, 및 멀티플렉서를 통하여 상기 제1메모리로부터 출력된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계인 디코더의 동작 방법.
  6. 제1항에 있어서, 상기 디코더의 동작 방법은,
    상기 제1신드롬 값들로부터 에러 값 다항식을 계산하는 단계;
    상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계;
    상기 에러 값 다항식으로부터 에러 값들을 계산하는 단계;
    상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및
    상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함하는 디코더의 동작 방법.
  7. 제6항에 있어서, 상기 에러 위치 다항식으로부터 상기 에러 위치들을 계산하 는 단계는 치엔 서치를 이용하여 상기 에러 위치들을 계산하는 단계인 디코더의 동작 방법.
  8. 제6항에 있어서, 상기 에러 값 다항식으로부터 상기 에러 값들을 계산하는 단계는 포니 알고리즘(Forney Algorithm)을 이용하여 상기 에러 값들을 계산하는 단계인 디코더의 동작 방법.
  9. 제6항에 있어서, 상기 제1 코드워드의 에러를 정정하는 단계는,
    상기 에러 위치들과 멀티플렉서를 통하여 상기 제1메모리로부터 출력된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계인 디코더의 동작 방법.
  10. 제1메모리;
    제2메모리;
    신드롬 계산기;
    에러 위치 다항식을 계산하기 위한 키 방정식 솔버; 및
    상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안 상기 제1신드롬 값들로부터 상기 에러 위치 다항식을 계산할 수 있도록 상기 키 방정식 솔버를 제어하는 컨트롤러를 포함하는 디코더.
  11. 제10항에 있어서, 상기 디코더는,
    상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기; 및
    상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함하는 디코더.
  12. 제10항에 있어서, 상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는,
    상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기;
    상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기; 및
    상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함하는 디코더.
  13. 제10항에 있어서, 상기 디코더는,
    상기 컨트롤러로부터 출력된 선택 신호에 응답하여, 상기 제1 코드워드를 상기 제1메모리로 전송하거나 상기 제2 코드워드를 상기 제2메모리로 전송하기 위한 디멀티플렉서를 더 포함하는 디코더.
  14. 제11항 또는 제12항에 있어서, 상기 디코더는,
    상기 컨트롤러로부터 출력된 선택 신호에 응답하여, 상기 제1메모리에 저장된 상기 제1 코드워드 또는 상기 제2메모리에 저장된 상기 제2 코드워드를 상기 에러 정정기로 출력하기 위한 멀티플렉서를 더 포함하는 디코더.
  15. 제11항 또는 제12항에 있어서, 상기 에러 위치 계산기는 치엔 서치(Chien search)를 이용하여 상기 에러 위치 다항식으로부터 상기 에러 위치들을 찾는 디코더.
  16. 제10항에 있어서, 상기 제1메모리와 상기 제2메모리가 RAM(Random Access memory)들인 경우,
    상기 디코더는,
    상기 컨트롤러로부터 출력된 제어 신호에 응답하여 상기 제1메모리와 상기 제2메모리 각각의 데이터 기입 동작 또는 데이터 독출 동작을 제어하기 위한 메모리 컨트롤러를 더 포함하는 디코더.
  17. 제1메모리;
    제2메모리;
    신드롬 계산기;
    상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하는 컨트롤러;
    상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 키 방정식 솔버;
    상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기; 및
    상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 컨트롤러로부터 출력된 제어 신호에 응답하여 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1코드워드를 출력하기 위한 에러 정정기를 포함하는 디코더.
  18. 제17항에 있어서, 상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는,
    상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기를 더 포함하며,
    상기 에러 정정기는, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 제어 신호에 응답하여 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1코드워드를 출력하는 디코더.
KR1020070082549A 2007-08-17 2007-08-17 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 KR101433620B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070082549A KR101433620B1 (ko) 2007-08-17 2007-08-17 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
US12/191,458 US8479085B2 (en) 2007-08-17 2008-08-14 Memory system with error correction decoder architecture having reduced latency and increased throughput
TW097131216A TWI482167B (zh) 2007-08-17 2008-08-15 具有錯誤修正解碼器可以減少延遲並增加產率的記憶系統
JP2008209891A JP5473275B2 (ja) 2007-08-17 2008-08-18 レイテンシを減らし、処理量を増加させうるエラー訂正デコーダ構造を含むメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070082549A KR101433620B1 (ko) 2007-08-17 2007-08-17 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법

Publications (2)

Publication Number Publication Date
KR20090018252A KR20090018252A (ko) 2009-02-20
KR101433620B1 true KR101433620B1 (ko) 2014-08-25

Family

ID=40433160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070082549A KR101433620B1 (ko) 2007-08-17 2007-08-17 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법

Country Status (4)

Country Link
US (1) US8479085B2 (ko)
JP (1) JP5473275B2 (ko)
KR (1) KR101433620B1 (ko)
TW (1) TWI482167B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101154923B1 (ko) * 2010-12-09 2012-06-14 한국과학기술원 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
KR101126359B1 (ko) * 2010-12-09 2012-03-23 한국과학기술원 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
US8756473B1 (en) 2010-12-23 2014-06-17 Sk Hynix Memory Solutions Inc. Solid state device coding architecture for chipkill and endurance improvement
KR101807538B1 (ko) * 2010-12-30 2017-12-12 삼성전자주식회사 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템
KR101747794B1 (ko) * 2011-03-29 2017-06-16 삼성전자주식회사 에러 정정 디코더 및 그것의 에러 정정 방법
JP2013029882A (ja) * 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US8640013B2 (en) * 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device
CN103166649B (zh) 2011-12-19 2016-06-15 国际商业机器公司 用于解码循环码的方法、装置和解码器
US8918705B1 (en) 2012-01-11 2014-12-23 Sk Hynix Memory Solutions Inc. Error recovery by modifying soft information
US9183095B1 (en) 2013-06-28 2015-11-10 Sk Hynix Memory Solutions Inc. Recovering from a program failure by combining write data
US9208863B1 (en) * 2014-05-19 2015-12-08 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US9720769B2 (en) * 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US9484960B1 (en) * 2015-01-21 2016-11-01 Inphi Corporation Reconfigurable FEC
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
KR102412781B1 (ko) * 2015-11-03 2022-06-24 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 독출 방법
KR101805073B1 (ko) * 2016-04-01 2017-12-05 고려대학교 산학협력단 폴딩된 곱셈기가 적용된 bch 디코더
US10608673B2 (en) 2017-12-22 2020-03-31 Massachusetts Institute Of Technology Decoding signals by guessing noise
US11087846B1 (en) * 2020-02-12 2021-08-10 SK Hynix Inc. Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder
US11431368B2 (en) 2020-03-16 2022-08-30 Massachusetts Institute Of Technology Noise recycling
US11870459B2 (en) 2020-06-08 2024-01-09 Massachusetts Institute Of Technology Universal guessing random additive noise decoding (GRAND) decoder
US11855658B1 (en) 2022-08-05 2023-12-26 Samsung Electronics Co., Ltd. Efficient hard decision decoding of generalized Reed-Solomon codes in presence of erasures and errors within the singleton bound
KR102611828B1 (ko) * 2023-03-17 2023-12-08 주식회사 프라터 에러 정정을 위한 리드-솔로몬 디코더

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154940A (ja) * 1996-11-22 1998-06-09 Asahi Kasei Micro Syst Kk リード・ソロモン符号の復号回路
US20020083394A1 (en) * 2000-12-22 2002-06-27 Kpenu Method and apparatus for data reproduction
KR20050078270A (ko) * 2004-01-29 2005-08-05 삼성전자주식회사 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5323402A (en) * 1991-02-14 1994-06-21 The Mitre Corporation Programmable systolic BCH decoder
JP3782840B2 (ja) * 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
US5996103A (en) * 1996-07-31 1999-11-30 Samsung Information Systems America Apparatus and method for correcting errors in a communication system
JP3233860B2 (ja) * 1996-10-25 2001-12-04 松下電器産業株式会社 リードソロモン復号器
JP3343201B2 (ja) * 1997-06-12 2002-11-11 株式会社日立製作所 復号回路および情報処理装置
WO2000079405A1 (fr) * 1999-06-21 2000-12-28 Hitachi, Ltd. Processeur de donnees
KR100403634B1 (ko) * 2001-10-17 2003-10-30 삼성전자주식회사 고속 파이프라인 리드-솔로몬 디코더에 적용하기 위한메모리 장치와 메모리 액세스 방법 및 그 메모리 장치를구비한 리드-솔로몬 디코더
US7051267B1 (en) 2002-04-08 2006-05-23 Marvell International Ltd. Efficient high-speed Reed-Solomon decoder
TWI227395B (en) * 2003-06-02 2005-02-01 Genesys Logic Inc Method for parallel processing of memory data and error correction code and related device thereof
TW595117B (en) * 2003-06-20 2004-06-21 Univ Nat Chiao Tung Viterbi decoder algorithm applied for memory basis
US20060059409A1 (en) * 2004-09-10 2006-03-16 Hanho Lee Reed-solomon decoder systems for high speed communication and data storage applications
JP4036338B2 (ja) 2005-03-04 2008-01-23 国立大学法人東京工業大学 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
KR100688549B1 (ko) * 2005-05-24 2007-03-02 삼성전자주식회사 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법
US7430701B2 (en) * 2005-06-16 2008-09-30 Mediatek Incorporation Methods and systems for generating error correction codes
TW200723709A (en) * 2005-07-21 2007-06-16 Wionics Research Deinterleaver and dual-viterbi decoder architecture
US7716562B1 (en) * 2005-10-18 2010-05-11 Link—A—Media Devices Corporation Reduced processing in high-speed reed-solomon decoding
US7617435B2 (en) * 2006-02-23 2009-11-10 Yuwei Zhang Hard-decision iteration decoding based on an error-correcting code with a low undetectable error probability
US7814398B2 (en) * 2006-06-09 2010-10-12 Seagate Technology Llc Communication channel with Reed-Solomon encoding and single parity check

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154940A (ja) * 1996-11-22 1998-06-09 Asahi Kasei Micro Syst Kk リード・ソロモン符号の復号回路
US20020083394A1 (en) * 2000-12-22 2002-06-27 Kpenu Method and apparatus for data reproduction
KR20050078270A (ko) * 2004-01-29 2005-08-05 삼성전자주식회사 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로

Also Published As

Publication number Publication date
JP2009048640A (ja) 2009-03-05
TW200910363A (en) 2009-03-01
KR20090018252A (ko) 2009-02-20
US20090070656A1 (en) 2009-03-12
TWI482167B (zh) 2015-04-21
US8479085B2 (en) 2013-07-02
JP5473275B2 (ja) 2014-04-16

Similar Documents

Publication Publication Date Title
KR101433620B1 (ko) 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
KR100921748B1 (ko) Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법
JP5424596B2 (ja) 面積効率が高いエラー訂正デコーダ構造を含むマルチチャンネルメモリシステム
US6639865B2 (en) Memory device, method of accessing the memory device, and reed-solomon decoder including the memory device
US7788570B1 (en) Optimized Reed-Solomon decoder
US8671325B1 (en) Forward error correcting code decoder method and apparatus
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
US20140173377A1 (en) Memory controller, semiconductor storage device, and decoding method
KR101314232B1 (ko) 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱
KR20220057087A (ko) 리드-솔로몬 코드의 소프트-디시젼 디코딩 방법 및 장치
US8196004B1 (en) Fast erasure decoding for product code columns
US20020108088A1 (en) Reed-solomon decoder for processing (M) or (2M) bit data, and decoding method therefor
WO2019030860A1 (ja) 誤り検出用冗長ビットの生成方法および装置
KR100594002B1 (ko) 가변 처리가 가능한 파이프라인 구조의 리드 솔로몬 복호기
US7840867B2 (en) Iterative n-dimensional decoding
KR100589814B1 (ko) 디지털 데이터의 에러정정 방법
KR0149298B1 (ko) 리드-솔로몬 디코더
KR100979366B1 (ko) 다양한 오류 정정 능력을 갖는 리드-솔로몬 부호의 복호기
KR102705065B1 (ko) 낮은 레이턴시를 갖는 에러정정코드 디코더
JPH1141113A (ja) 誤り訂正装置
US9063872B2 (en) Forward error correction with configurable latency
JPH05189257A (ja) ディスクアレイ装置の誤り制御方式
KR20080058890A (ko) 리드-솔로몬 곱 부호의 오류 검출/정정 장치 및 방법

Legal Events

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

Payment date: 20180731

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 6