KR101433620B1 - 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 - Google Patents
처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online 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
본 발명은 디코딩 기술에 관한 것으로, 특히 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝 기법을 이용하는 디코더 및 그 디코딩 방법에 관한 것이다.
채널을 통하여 수신기로 디지털 정보를 전송하는 디지털 데이터 통신 시스템에서, 노이즈들 및/또는 왜곡들 때문에, 수신된 디지털 정보는 종종 많은 비트 에러들을 포함한다. 이러한 문제점들을 극복하기 위하여, 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 코드워드에 연속적인 제2 코드워드를 제2메모리로 전송하면서 상기 제2 코드워드로부터 제2신드롬 값들을 계산하는 단계를 포함하는 디코더의 동작 방법.
- 제1항에 있어서, 상기 디코더의 동작 방법은,컨트롤러로부터 출력된 선택 신호에 응답하여 동작하는 디멀티플렉서를 이용하여 상기 제1 코드워드를 상기 제1메모리로 전송하고 상기 제2 코드워드를 상기 제2메모리로 전송하는 단계를 더 포함하는 디코더의 동작 방법.
- 제1항에 있어서, 상기 디코더의 동작 방법은,상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계;상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함하는 디코더의 동작 방법.
- 제3항에 있어서, 상기 에러 위치들을 계산하는 단계는 치엔 서치 (Chien Search)를 이용하여 상기 에러 위치들을 계산하는 단계인 디코더의 동작 방법.
- 제3항에 있어서, 상기 제1 코드워드의 에러를 정정하는 단계는,상기 에러 위치들, 및 멀티플렉서를 통하여 상기 제1메모리로부터 출력된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계인 디코더의 동작 방법.
- 제1항에 있어서, 상기 디코더의 동작 방법은,상기 제1신드롬 값들로부터 에러 값 다항식을 계산하는 단계;상기 에러 위치 다항식으로부터 에러 위치들을 계산하는 단계;상기 에러 값 다항식으로부터 에러 값들을 계산하는 단계;상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계; 및상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 에러 정정된 제1 코드워드를 출력하는 단계를 더 포함하는 디코더의 동작 방법.
- 제6항에 있어서, 상기 에러 위치 다항식으로부터 상기 에러 위치들을 계산하 는 단계는 치엔 서치를 이용하여 상기 에러 위치들을 계산하는 단계인 디코더의 동작 방법.
- 제6항에 있어서, 상기 에러 값 다항식으로부터 상기 에러 값들을 계산하는 단계는 포니 알고리즘(Forney Algorithm)을 이용하여 상기 에러 값들을 계산하는 단계인 디코더의 동작 방법.
- 제6항에 있어서, 상기 제1 코드워드의 에러를 정정하는 단계는,상기 에러 위치들과 멀티플렉서를 통하여 상기 제1메모리로부터 출력된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하는 단계인 디코더의 동작 방법.
- 제1메모리;제2메모리;신드롬 계산기;에러 위치 다항식을 계산하기 위한 키 방정식 솔버; 및상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안 상기 제1신드롬 값들로부터 상기 에러 위치 다항식을 계산할 수 있도록 상기 키 방정식 솔버를 제어하는 컨트롤러를 포함하는 디코더.
- 제10항에 있어서, 상기 디코더는,상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기; 및상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함하는 디코더.
- 제10항에 있어서, 상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는,상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기;상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기; 및상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1 코드워드를 출력하기 위한 에러 정정기를 더 포함하는 디코더.
- 제10항에 있어서, 상기 디코더는,상기 컨트롤러로부터 출력된 선택 신호에 응답하여, 상기 제1 코드워드를 상기 제1메모리로 전송하거나 상기 제2 코드워드를 상기 제2메모리로 전송하기 위한 디멀티플렉서를 더 포함하는 디코더.
- 제11항 또는 제12항에 있어서, 상기 디코더는,상기 컨트롤러로부터 출력된 선택 신호에 응답하여, 상기 제1메모리에 저장된 상기 제1 코드워드 또는 상기 제2메모리에 저장된 상기 제2 코드워드를 상기 에러 정정기로 출력하기 위한 멀티플렉서를 더 포함하는 디코더.
- 제11항 또는 제12항에 있어서, 상기 에러 위치 계산기는 치엔 서치(Chien search)를 이용하여 상기 에러 위치 다항식으로부터 상기 에러 위치들을 찾는 디코더.
- 제10항에 있어서, 상기 제1메모리와 상기 제2메모리가 RAM(Random Access memory)들인 경우,상기 디코더는,상기 컨트롤러로부터 출력된 제어 신호에 응답하여 상기 제1메모리와 상기 제2메모리 각각의 데이터 기입 동작 또는 데이터 독출 동작을 제어하기 위한 메모리 컨트롤러를 더 포함하는 디코더.
- 제1메모리;제2메모리;신드롬 계산기;상기 신드롬 계산기가 제1 코드워드로부터 제1신드롬 값들을 계산하는 동안 상기 제1 코드워드를 상기 제1메모리로 전송하는 것을 제어하고, 상기 신드롬 계산기가 상기 제1 코드워드에 연속적인 제2 코드워드로부터 제2신드롬 값들을 계산하는 동안 상기 제2 코드워드를 상기 제2메모리로 전송하는 것을 제어하는 컨트롤러;상기 제1신드롬 값들로부터 에러 위치 다항식을 계산하는 키 방정식 솔버;상기 에러 위치 다항식으로부터 에러 위치들을 계산하기 위한 에러 위치 계산기; 및상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 컨트롤러로부터 출력된 제어 신호에 응답하여 상기 에러 위치들과 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1코드워드를 출력하기 위한 에러 정정기를 포함하는 디코더.
- 제17항에 있어서, 상기 키 방정식 솔버가 상기 제1신드롬 값들로부터 에러 값 다항식을 더 계산하는 경우, 상기 디코더는,상기 에러 값 다항식으로부터 에러 값들을 계산하기 위한 에러 값 계산기를 더 포함하며,상기 에러 정정기는, 상기 신드롬 계산기가 상기 제2 코드워드로부터 상기 제2신드롬 값들을 계산하는 동안, 상기 제어 신호에 응답하여 상기 에러 위치들, 상기 에러 값들, 및 상기 제1메모리에 저장된 상기 제1 코드워드에 기초하여 상기 제1 코드워드의 에러를 정정하고, 에러 정정된 제1코드워드를 출력하는 디코더.
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)
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)
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)
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 |
-
2007
- 2007-08-17 KR KR1020070082549A patent/KR101433620B1/ko active IP Right Grant
-
2008
- 2008-08-14 US US12/191,458 patent/US8479085B2/en active Active
- 2008-08-15 TW TW097131216A patent/TWI482167B/zh active
- 2008-08-18 JP JP2008209891A patent/JP5473275B2/ja active Active
Patent Citations (3)
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 |