KR20160140512A - Decoder and memory controller including the same - Google Patents
Decoder and memory controller including the same Download PDFInfo
- Publication number
- KR20160140512A KR20160140512A KR1020160066044A KR20160066044A KR20160140512A KR 20160140512 A KR20160140512 A KR 20160140512A KR 1020160066044 A KR1020160066044 A KR 1020160066044A KR 20160066044 A KR20160066044 A KR 20160066044A KR 20160140512 A KR20160140512 A KR 20160140512A
- Authority
- KR
- South Korea
- Prior art keywords
- decoder
- syndrome
- serial operation
- bit groups
- completed
- 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
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M9/00—Parallel/series conversion or vice versa
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
Description
본 발명의 기술적 사상은 디코더 및 이를 포함하는 메모리 컨트롤러에 관한 것으로, 보다 상세하게는 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성할 수 있는 신드롬 계산기를 포함하는 디코더 및 이를 포함하는 메모리 컨트롤러에 관한 것이다.The present invention is directed to a decoder and a memory controller including the decoder. More particularly, the present invention relates to a decoder and a memory controller including the decoder and the memory controller. And a syndrome calculator capable of generating the syndrome values, and a memory controller including the decoder.
일반적으로 디코더를 설계함에 있어서 복잡도를 최소로 하기를 원하는 경우, 곱셈기가 덧셈기 같은 하나의 리소스를 매 클럭마다 반복적으로 사용하는 구조로 설계되었다. 또한, 디코더를 설계함에 있어서 고속 처리가 필요한 경우, 여러 개의 곱셈기와 덧셈기를 사용하여 한 클럭에 필요한 연산을 동시에 처리할 수 있는 구조로 설계되었다. Generally, when it is desired to minimize the complexity in designing a decoder, the multiplier is designed to repeatedly use one resource such as an adder every clock. In addition, when high speed processing is required in designing a decoder, it is designed to be capable of simultaneously processing necessary operations for one clock by using a multiplier and an adder.
하지만, 복잡도 최소화 및 고속 처리가 모두 필요한 경우에 대해서는 체계화된 방법이나 구조가 제안되지 않아, 경우에 따라 각 서브블록들을 직렬화하거나 병렬화하는 방식으로 설계되어 왔다.However, when both complexity minimization and high-speed processing are required, a structured method or structure is not proposed, and in some cases, the subblocks have been designed to be serialized or parallelized.
BCH(Bose-Chaudhuri-Hoquenbhem) 디코더와 관련하여서도, 직렬/병렬 정도를 자유롭게 조절할 수 있는 체계화된 구조가 없어 확장성(scalability)이 제한되며 효율성이 떨어지고 해당 목적에 맞는 최적의 구조를 보장해 주기 어려운 문제가 있었다. 특히, 다항식 나눗셈을 수행하여야 하는 BCH 코드의 특성상 유연한 직렬화나 병렬화가 쉽지 않은 신드롬 연산 단계와 관련하여 문제되고 있다.As for BCH (Bose-Chaudhuri-Hoquenbhem) decoder, scalability is limited because there is no structured structure capable of freely adjusting serial / parallel degree, efficiency is low and it is difficult to guarantee optimal structure for the purpose There was a problem. Especially, the problem of BCH code which has to perform polynomial division is problematic with respect to the syndrome operation step which is not easy to be flexible serialization or parallelization.
본 발명의 기술적 사상에 따른 디코더 및 이를 포함하는 메모리 컨트롤러가 이루고자 하는 기술적 과제는, 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성할 수 있는 신드롬 계산기를 포함하는 디코더 및 이를 포함하는 메모리 컨트롤러를 제공하는 것이다.Technical Solution According to an aspect of the present invention, there is provided a decoder and a memory controller including the decoder. The decoder includes a plurality of bit groups, each of which includes a plurality of bits, And a syndrome calculator capable of generating the syndrome values, and a memory controller including the same.
본 발명의 기술적 사상에 의한 일 양태에 따른 디코더(decoder)는 수신된 코드워드(codeword)로부터 신드롬(syndrome) 값들을 생성하는 신드롬 계산기를 포함하고, 상기 신드롬 계산기는 상기 코드워드를 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성하는 곱셈기들과 덧셈기들을 포함한다.A decoder according to an aspect of the technical idea of the present invention includes a syndrome calculator for generating syndrome values from a received codeword and the syndrome calculator is operable to convert the codeword into a plurality of bits, And multipliers and adders for receiving the syndrome values in units of bit groups included therein and generating the syndrome values by performing a serial operation on each of the bit groups input in parallel.
일부 실시 예에서, 상기 코드워드에 포함된 상기 비트 그룹들 각각에 포함된 상기 복수의 비트들은, 상기 덧셈기들을 통하여 입력될 수 있다.In some embodiments, the plurality of bits contained in each of the bit groups included in the codeword may be input via the adders.
일부 실시 예에서, 상기 비트 그룹들 각각은 적어도 3이상의 비트들을 포함하며, 상기 곱셈기들은 각각이 상기 덧셈기들 사이에 배치되는 누적 곱셈기들을 포함할 수 있다.In some embodiments, each of the bit groups includes at least three or more bits, and the multipliers may include accumulative multipliers, each of which is disposed between the adders.
일부 실시 예에서, 상기 누적 곱셈기들은 서로 동일한 값을 가지는 갈로이스 필드 엘리먼트(Galois Field element)를 누적적으로 곱할 수 있다.In some embodiments, the accumulative multipliers may cumulatively multiply Galois Field elements having the same value.
일부 실시 예에서, 상기 신드롬 계산기는 상기 비트 그룹들 중에서 어느 하나의 비트 그룹에 대한 직렬 연산이 완료되면, 직렬 연산이 완료된 비트 그룹에 대한 처리 데이터를 임시 저장하기 위한 레지스터(register)를 더 포함할 수 있다.In some embodiments, the syndrome calculator further includes a register for temporarily storing processing data for a bit group for which serial operation is completed, when the serial operation for any one of the bit groups is completed .
일부 실시 예에서, 상기 곱셈기들은 직렬 연산이 완료된 상기 비트 그룹에 대하여 단위 갈로이스 필드 엘리먼트를 곱하는 단위 곱셈기를 포함할 수 있다.In some embodiments, the multipliers may include a unit multiplier that multiplies a unit Galois field element for the group of bits for which the serial operation is complete.
일부 실시 예에서, 상기 신드롬 계산기는 상기 레지스터와 상기 단위 곱셈기 사이에 제1스위치를 더 포함하고, 상기 제1스위치는 상기 비트 그룹들 중에서 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off)되고, 상기 첫번째 비트 그룹의 직렬 연산이 완료된 이후에는 턴-온(turn-on)되도록 제어될 수 있다.In some embodiments, the syndrome calculator further comprises a first switch between the register and the unit multiplier, wherein the first switch is turned off before the serial operation of the first bit group among the bit groups is completed off of the first bit group, and may be controlled to be turned on after the serial operation of the first bit group is completed.
일부 실시 예에서, 상기 신드롬 계산기는 상기 신드롬 계산기의 출력단에 위치한 제2스위치를 더 포함하고, 상기 제2스위치는 상기 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프되고, 상기 비트 그룹들 모두에 대한 직렬 연산이 완료된 이후에는 턴-온되도록 제어될 수 있다.In some embodiments, the syndrome calculator further comprises a second switch located at an output of the syndrome calculator, wherein the second switch is turned off before serial operation on all of the bit groups is completed, And may be controlled to be turned on after serial operation on all of the groups is completed.
일부 실시 예에서, 상기 디코더는 상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키 방정식 솔버(key equation solver), 상기 에러 위치 다항식에 기초하여 에러 위치를 구하는 치엔 서치 블록(chien search block) 및 상기 에러 위치에 기초하여 상기 수신 데이터의 에러를 수정하고, 수정된 수신 데이터를 출력하는 에러 수정 블록을 더 포함할 수 있다.In some embodiments, the decoder includes a key equation solver that generates an error locator polynomial based on the syndrome values, a chien search block that finds an error locus based on the error locator polynomial, And an error correction block for correcting the error of the received data based on the error position and outputting the corrected received data.
본 발명의 기술적 사상에 의한 일 양태에 따른 메모리 컨트롤러(memory controller)는 상기 디코더를 포함할 수 있다.The memory controller according to an aspect of the technical idea of the present invention may include the decoder.
본 발명의 기술적 사상에 의한 실시 예에 따른 방법과 장치는, 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행하여 상기 신드롬 값들을 생성함으로써 디코딩 처리 과정을 고속화하면서도 디코더 구조의 복잡도를 최소화 할 수 있는 효과가 있다.A method and an apparatus according to an embodiment of the present invention may be implemented in parallel by a bit group unit including a plurality of bits and performing serial operation on each of bit groups input in parallel to generate the syndrome values The complexity of the decoder structure can be minimized while speeding up the decoding process.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 디코더의 블록도이다.
도 2는 도 1에 도시된 신드롬 계산기의 일 실시 예를 나타낸 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템의 블록도이다.BRIEF DESCRIPTION OF THE DRAWINGS A brief description of each drawing is provided to more fully understand the drawings recited in the description of the invention.
1 is a block diagram of a decoder in accordance with an embodiment of the present invention.
FIG. 2 is a diagram showing an embodiment of the syndrome calculator shown in FIG. 1. FIG.
3 is a block diagram of a memory system in accordance with one embodiment of the present invention.
본 발명의 기술적 사상은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명의 기술적 사상을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 기술적 사상의 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are intended to provide further explanation of the invention as claimed. However, it should be understood that the technical idea of the present invention is not limited to the specific embodiments but includes all changes, equivalents, and alternatives included in the technical idea of the present invention.
본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS [0029] In the following description of the present invention, a detailed description of known technologies will be omitted when it is determined that the gist of the present invention may be unnecessarily obscured. In addition, numerals (e.g., first, second, etc.) used in the description of the present invention are merely an identifier for distinguishing one component from another.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.Also, in this specification, when an element is referred to as being "connected" or "connected" with another element, the element may be directly connected or directly connected to the other element, It should be understood that, unless an opposite description is present, it may be connected or connected via another element in the middle.
또한, 본 명세서에 기재된 "~부(유닛)", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.It should be noted that the terms such as " unit, "" to, "" Or a combination of hardware and software.
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.It is to be clarified that the division of constituent parts in this specification is merely a division by each main function of each constituent part. That is, two or more constituent parts to be described below may be combined into one constituent part, or one constituent part may be divided into two or more functions according to functions that are more subdivided. In addition, each of the constituent units described below may additionally perform some or all of the functions of other constituent units in addition to the main functions of the constituent units themselves, and that some of the main functions, And may be carried out in a dedicated manner.
이하, 본 발명의 기술적 사상에 따른 실시예들을 차례로 상세히 설명한다.Hereinafter, embodiments according to the technical idea of the present invention will be described in detail.
도 1은 본 발명의 일 실시 예에 따른 디코더의 블록도이다.1 is a block diagram of a decoder in accordance with an embodiment of the present invention.
도 1을 참조하면, 실시 예에 따라, 디코더(decoder, 100)는 BCH(Bose-Chaudhuri-Hoquenbhem) 디코더로 구현될 수 있다.Referring to FIG. 1, according to an embodiment, a
디코더(100)는 데이터 버퍼(data buffer, 110), 신드롬 계산기(syndrome calculator, 120), 키 방정식 솔버(key equation solver, 130), 치엔 서치 블록(chien search block, 140), 및 에러 정정 블록(error correcting block, 150)을 포함할 수 있다.The
데이터 버퍼(110)는 수신된 코드워드(R(x))를 임시로 저장하였다가 에러 정정 블록(150)으로 제공할 수 있다.The
신드롬 계산기(120)는 수신된 코드워드(R(x))에 기초하여 신드롬 값들(S(x))을 생성한다. 수신된 코드워드(R(x))에 에러가 없는 경우 신드롬 값들(S(x))은 모두 "0"의 값을 가지며, 수신된 코드워드(R(x))에 에러가 있는 경우 신드롬 값들(S(x))은 "0"이 아닌 값을 포함한다.
신드롬 값들(S(x))이 모두 "0"의 값을 가지는 경우, 데이터 버퍼(110)에 저장된 코드워드(R(x))는 별도의 에러 정정없이 디코더(100)로부터 출력될 수 있다.The codeword R (x) stored in the
신드롬 값들(S(x))이 "0"이 아닌 값을 포함하는 경우, 에러 정정을 위하여 신드롬 값들(S(x))이 키 방정식 솔버(130)로 전달된다.Syndrome values S (x) are passed to the
본 발명의 실시 예에 따른 신드롬 계산기(120)의 구체적인 구조에 대해서는 도 2를 참조하여 상세히 설명된다.The concrete structure of the
키 방정식 솔버(130)는 수신된 신드롬 값들(S(x))에 기초하여 에러 위치 다항식(∧(x))을 생성하여 치엔 서치 블록(140)으로 전달할 수 있다.The
실시 예에 따라, 키 방정식 솔버(130)는 벌러캠프-매시(Berlekamp-Massey) 알고리즘, 스텝-바이-스텝(Step-By-Step(SBS)) 알고리즘, 유클리드(Euclidean) 알고리즘, 또는 수정 유클리드(modified Euclidean) 알고리즘 등을 이용하여 에러 위치 다항식(∧(x))을 생성할 수 있다.According to an embodiment, the
치엔 서치 블록(140)은 키 방정식 솔버(130)로부터 전달된 에러 위치 다항식(∧(x))에 기초하여, 에러 위치들을 계산하고 계산 결과에 따라 에러 다항식(E(x))을 생성할 수 있다. 치엔 서치 블록(140)은 생성된 에러 다항식(E(x))을 에러 정정 블록(150)으로 전달할 수 있다.The
에러 정정 블록(150)은 치엔 서치 블록(140)으로부터 전달된 에러 다항식(E(x))에 기초하여 데이터 버퍼(110)로부터 버퍼링되어 수신된 코드워드(R(x))의 에러를 정정하고, 에러가 정정된 코드워드(C(x))를 출력할 수 있다.The
도 2는 도 1에 도시된 신드롬 계산기의 일 실시 예를 나타낸 도면이다.FIG. 2 is a diagram showing an embodiment of the syndrome calculator shown in FIG. 1. FIG.
도 1과 도 2를 참조하면, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 신드롬 값들(Si)을 생성하는 곱셈기들(122-1~122-4)과 덧셈기들(124-1~124-4)을 포함할 수 있다.1 and 2, the
도 2에서는 수신된 코드워드(R(x))를 4비트의 비트 그룹 단위로 병렬로 입력받는 경우를 설명하지만 이에 한정되지 않으며, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 적어도 2이상의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받을 수 있다.2, a
실시 예에 따라, 수신된 코드워드(R(x))가 비트 그룹의 비트 수로 나누어 떨어지지 않는 경우(예컨대, 3비트의 비트 그룹으로 구성되는 경우), 마지막 비트 그룹에 "0" 값이 삽입되는 형태로 비트 그룹이 구성될 수도 있다.According to the embodiment, when the received codeword R (x) is not divided by the number of bits of the bit group (for example, if it consists of a group of 3 bits), a value of "0 & Bit groups may be formed.
이하에서는 코드워드(R(x))의 비트 그룹의 개념 이해를 위하여 신드롬 값들(Si)의 연산 과정을 함께 설명한다.Hereinafter, the calculation process of the syndrome values (S i ) will be described together to understand the concept of the bit group of the code word (R (x)).
신드롬 값들(Si)은 기본적으로 아래의 [수식 1]에 따라 구해질 수 있다.Syndrome values (S i ) can be basically obtained according to [Equation 1] below.
[수식 1][Equation 1]
Si= = R0 + R1αi + R2α2i +… + RN-1αi(N-1) S i = = R 0 R 1 + R 2 α i + α 2i + ... + R N-1 ? I (N-1)
신드롬 값들(Si)의 병렬 처리를 위하여, 신드롬 값들(Si)을 구하기 위한 [수식 1]은 [수식 2]와 같이 변형될 수 있다.For parallel processing of the syndrome values (S i), [formula 1] to obtain the syndrome values (S i) can be modified as [Equation 2].
[수식 2][Equation 2]
Si=(((RN- 1α3i + RN- 2α2i+ RN- 3αi+ RN- 4)α4i+(RN- 5α3i + RN- 6α2i+ RN- 7αi+ RN-8)) α4i+...)α4i+ R3α3i + R2α2i+ R1αi+ R0 S i = (((R N- 1 ? 3i N- 2i + R 2 α R + N- α i + 3 R 4 N-) α 4i + (R 5 N- α 3i N- α 2i + R 6 R + 7 N- α i + N-R 8)) α + ... 4i) α 4i + α 3i R 3 + R 2 α 2i + α i + R 1 R 0
즉, 코드워드(R(x))는 복수의 비트들을 포함하는 비트 그룹 단위로 구분되어 병렬로 입력될 수 있다. 예컨대, 코드워드(R(x))가 4비트의 비트 그룹으로 구분되는 경우, 첫번째 비트 그룹은 RN-4, RN-3, RN-2, RN-1을 포함하고, 두번째 비트 그룹은 RN-8, RN-7, RN-6, RN- 5을 포함하고, 마지막 비트 그룹은 R0, R1, R2, R3을 포함할 수 있다.That is, the code word R (x) may be divided into unit groups including a plurality of bits and input in parallel. For example, if the code word R (x) is divided into 4 bit groups, the first bit group includes R N-4, R N-3 , R N-2 , R N-1 , The group includes R N-8 , R N-7 , R N-6 and R N- 5 , and the last bit group may include R 0, R 1 , R 2 , and R 3 .
[수식 2]에 따라 신드롬 값들(Si)을 구하는 경우, 본 발명의 실시 예에 따른 도 2의 신드롬 계산기(120)의 구조가 활용될 수 있다.The structure of the
신드롬 계산기(120)는 복수의 덧셈기들(124-1~124-4), 복수의 곱셈기들(122-1~122-4), 레지스터(register, 126), 및 스위치들(SW1, SW2)을 포함할 수 있다.The
코드워드(R(x))에 포함된 비트 그룹들 각각에 포함된 비트들 각각은 복수의 덧셈기들(124-1~124-4)을 통하여 입력될 수 있다.Each of the bits included in each of the bit groups included in the code word R (x) may be input through a plurality of adders 124-1 to 124-4.
첫번째 비트 그룹의 RN-4, RN-3, RN-2, RN-1 각각이 덧셈기들(124-1~124-4) 각각으로 입력되면, 첫번째 비트 그룹의 RN-4, RN-3, RN-2, RN-1에 대한 직렬 연산이 수행될 수 있다.When each of R N-4, R N-3 , R N-2 and R N-1 of the first bit group is input to each of adders 124-1 through 124-4 , A serial operation on R N-3 , R N-2 , R N-1 can be performed.
제1스위치(SW1)는 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off) 상태로 제어될 수 있다.The first switch SW1 may be controlled in a turn-off state before the serial operation of the first bit group is completed.
첫번째 비트 그룹의 RN-1은 제1덧셈기(124-1)로 입력되며, 제1누적 곱셈기(122-2)에 의해 갈로이스 필드 엘리먼트(Galois Field element) αi가 곱해져서, RN-1αi가 출력될 수 있다.R N-1 of the first group of bits is input to the first adder 124-1, a first cumulative multiplier 122-2 Royce field element (Galois Field element) to go by α i haejyeoseo the product, N- R 1 α i can be output.
제1누적 곱셈기(122-2)의 출력인 RN- 1αi에는 제2덧셈기(124-2)로 입력된 첫번째 비트 그룹의 RN-2가 더해져서, RN-1αi+ RN-2가 출력 될 수 있다.First accumulation multiplier 122-2 output N- R 1 α i, the second adder haejyeoseo (124-2), a first bit group of N-R 2 is further input to a, R N-1 α i + R of N-2 can be output.
제2누적 곱셈기(122-3)에 의해, 제2덧셈기(124-2)의 출력인 RN- 1αi+ RN-2에 갈로이스 필드 엘리먼트αi가 곱해져서, RN-1α2i+ RN-2αi가 출력될 수 있다.Second accumulation by the multiplier 122-3, a second adder (124-2) outputs the N- R 1 α i + R Royce field element go to the N-2, α i is multiplied, R N-1 of α 2i + R N-2 ? I can be output.
제2누적 곱셈기(122-3)의 출력인 RN- 1α2i+ RN- 2αi에는 제3덧셈기 (124-3)로 입력된 첫번째 비트 그룹의 RN-3가 더해져서, RN- 1α2i+ RN- 2αi+ RN-3 가 출력될 수 있다.Second cumulative multiplier 122-3 output N- R 1 α 2i + α i R 2 N- is a third adder (124-3) haejyeoseo the first bit of the group R N-3 are further input to, the R N- 1 ? 2i + RN - 2 ? I + RN-3 can be output.
제3누적 곱셈기(122-4)에 의해, 제3덧셈기(124-3)의 출력인 RN- 1α2i+ RN- 2αi+ RN-3에 갈로이스 필드 엘리먼트αi가 곱해져서, RN- 1α3i+ RN- 2α2i+ RN-3 αi 가 출력 될 수 있다.The third cumulative multiplier by a (122-4), the third field element Royce go to the output of R N- 1 α 2i + R N- 2 α i + R N-3 of the adder (124-3) is multiplied by α i RN - 1 ? 3i + RN - 2 ? 2i + RN -3 ? I can be output.
제3누적 곱셈기(122-4)의 출력인 RN- 1α3i+ RN- 2α2i+ RN-3 αi에는 제4덧셈기 (124-4)로 입력된 첫번째 비트 그룹의 RN-4가 더해져서, RN- 1α3i+ RN- 2α2i+ RN-3 αi+ RN-4가 출력 될 수 있다.The third cumulative multiplier (122-4) outputs the N- 1 α 3i + R N- R 2 α 2i + α i is R N-3 of the first group of bits input to the fourth adder (124-4) of N R -4 can be added so that RN - 1 ? 3i + RN - 2 ? 2i + RN -3 ? I + RN-4 can be output.
제2스위치(SW2)는 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프 상태로 제어되기 때문에, 제4덧셈기(124-4)의 출력인 RN - 1α3i+ RN- 2α2i+ RN-3 αi+ RN- 4은 루프(loop)를 통하여 레지스터(126)로 입력되어 저장될 수 있다. 레지스터(126)로 입력된 데이터는 두번째 비트 그룹이 입력되는 타이밍에 맞추어 다시 출력될 수 있다.A second switch (SW2) is previously turned to series operation for all of the bit group is completed - because it is controlled to the OFF state, the fourth adder (124-4), an output of the N R - 1 α R 3i + N- 2 α 2i + R N-3 α i + R N- 4 , may be stored is input to register 126 via a loop (loop). The data input to the
첫번째 비트 그룹의 직렬 연산이 완료되면, 제1스위치(SW1)는 턴-온 상태로 제어될 수 있다.When the serial operation of the first bit group is completed, the first switch SW1 can be controlled to be turned on.
두번째 비트 그룹의 RN-8, RN-7, RN-6, RN-5 각각이 덧셈기들(124-1 ~124-4) 각각으로 입력되면, 첫번째 비트 그룹에 대한 직렬 연산결과를 활용하여 두번째 비트 그룹의 RN-8, RN-7, RN-6, RN-5에 대한 직렬 연산이 수행될 수 있다.When each of the RN -8, RN -7 , RN -6 , and RN -5 of the second bit group is input to each of the adders 124-1 through 124-4, A serial operation on R N-8, R N-7 , R N-6 , and R N-5 of the second bit group may be performed.
레지스터(126)로 저장되어 있던 첫번째 비트 그룹에 대한 직렬 연산결과인 RN-1α3i+ RN- 2α2i+ RN-3 αi+ RN-4에는 단위 곱셈기(122-1)에 의해 갈로이스 필드 엘리먼트α4i가 곱해져서, (RN-1α3i+ RN-2α2i+ RN-3 αi+ RN-4)α4i가 출력될 수 있다.A unit multiplier 122-1 is added to RN -1 ? 3i + RN - 2 ? 2i + RN -3 ? I + RN -4 as a result of serial operation on the first bit group stored in the
이후, 첫번째 비트 그룹과 마찬가지로 병렬로 입력되는 두번째 비트 그룹 및 나머지 비트 그룹들에 대해서도 곱셈기들(122-2~122-4)과 덧셈기들(124-1~124-4)에 의해 직렬 연산을 수행하게 되면, 최종적으로 제4덧셈기(124-4)로부터 (((RN- 1α3i + RN-2α2i+ RN- 3αi+ RN- 4)α4i+(RN- 5α3i + RN- 6α2i+ RN- 7αi+ RN-8))α4i +?)α4i+ R3α3i + R2α2i+ R1αi+ R0값이 출력되며, 이 때 제2스위치(SW1)가 턴-온 되면서 제4덧셈기(124-4)의 출력이 신드롬 계산기(120)의 출력 값으로서 출력될 수 있다. Then, the second bit group and the remaining bit groups input in parallel as in the first bit group are subjected to serial operation by the multipliers 122-2 to 122-4 and the adders 124-1 to 124-4 (((RN - 1 ? 3i ) from the fourth adder 124-4 + R N-2 α 2i + R N- 3 α i + R N- 4) α 4i + (R N- 5 α 3i + R N- 6 α 2i + R N- 7 α i + R N-8)) α 4i +?) α 4i + R 3 α 3i R 2 R 1 + α 2i + α i + R 0 value is output, at this time the second switch (SW1) is turned on, while the output value of the fourth adder (124-4)
즉, 누적 곱셈기들(122-2~122-4)은 덧셈기들(124-1~124-4) 사이에 배치되며, 누적 곱셈기들(122-2~122-4)과 덧셈기들(124-1~124-4)은 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행할 수 있으며, 비트 그룹은 병렬로 입력받은 이후에 직렬 연산을 통해 처리하기 위해 구분되는 코드워드(R(x))의 비트들의 단위를 의미할 수 있다.That is, the accumulative multipliers 122-2 to 122-4 are disposed between the adders 124-1 to 124-4, and the accumulative multipliers 122-2 to 122-4 and the adders 124-1 To 124-4 may perform a serial operation on each of the bit groups input in parallel, and the bit group may include a codeword R (x) divided for processing through a serial operation after being input in parallel, Lt; / RTI > of bits.
비트 그룹이 2비트로 구성되면, 누적 곱셈기의 개수가 1개로 구성될 수 있기 때문에, 비트 그룹이 4이상의 비트로 구성될 때 누적 곱셈기들(122-2~122-4)는 누적적으로 갈로이스 필드 엘리먼트를 곱하여 신드롬 계산기(120)의 구조를 단순화시키는 효과를 가진다.When the bit group is composed of two bits, since the number of accumulative multipliers can be made to be one, when the bit group is composed of four or more bits, the accumulative multipliers 122-2 to 122-4 cumulatively add the Galois field elements So as to simplify the structure of the
실시 예에 따라, 누적 곱셈기들(122-2~122-4)은 서로 동일한 값을 가지는 갈로이스 필드 엘리멘트, 예컨대, αi를 누적적(cumulative)으로 곱할 수 있다.According to an embodiment, the accumulative multipliers 122-2 through 122-4 may cumulatively multiply a galois field element having the same value, e.g., [alpha] i .
실시 예에 따라, 단위 곱셈기(122-1)는 직렬 연산이 완료된 비트 그룹에 대하여 일정한 값을 가지는 갈로이스 필드 엘리먼트를 곱하며, 단위 곱셈기(122-1)에서 곱해지는 갈로이스 필드 엘리먼트의 크기는 비트 그룹의 크기에 따라 결정될 수 있다. 예컨대, 비트 그룹이 4비트로 구성되는 경우, 단위 곱셈기(122-1)는 α4i를 곱하고, 비트 그룹이 8비트로 구성되는 경우, 단위 곱셈기(122-1)는 α8i를 곱할 수 있다.According to the embodiment, the unit multiplier 122-1 multiplies the bit group for which the serial operation is completed by the Galois field element having a constant value, and the size of the Galois field element multiplied by the unit multiplier 122-1 is May be determined according to the size of the bit group. For example, when the bit group is composed of 4 bits, the unit multiplier 122-1 multiplies? 4i , and when the bit group is composed of 8 bits, the unit multiplier 122-1 can multiply? 8i .
실시 예에 따라, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 적어도 3이상의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받는 경우, 2 이상의 누적 곱셈기들을 포함하여 더욱 효율적인 구조로 구현될 수 있다.According to an embodiment, when the received codeword R (x) is input in parallel in units of a bit group including at least three or more bits, the
다른 실시 예에 따라, 신드롬 계산기(120)는 수신된 코드워드(R(x))를 2^n(n은 2이상의 자연수) 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받는 경우, 2 이상의 누적 곱셈기들을 포함하면서도 코드워드(R(x))가 비트 그룹 단위로 나누어 떨어지므로 더욱 효율적인 구조로 구현될 수 있다.According to another embodiment, when the
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템의 블록도이다.3 is a block diagram of a memory system in accordance with one embodiment of the present invention.
도 1 내지 도 3을 참조하면, 메모리 시스템(200)은 호스트(host, 210), 메모리 장치(memory device, 220), 및 메모리 컨트롤러(memory controller, 230)를 포함할 수 있다.1 through 3, the
실시 예에 따라, 메모리 시스템(200)은 전자 장치 또는 휴대용 장치(portable device)로 구현될 수 있다. 상기 휴대용 장치는 이동 전화기 (cellular phone), 스마트폰(smart phone), 또는 태블릿(tablet) PC 등으로 구현될 수 있다.According to an embodiment, the
호스트(210)는 내부의 프로세스 처리에 필요한 데이터를 읽기 위한 요청 또는 프로세스 처리 결과에 따른 데이터를 저장하기 위한 요청을 메모리 컨트롤러(230)로 전송할 수 있다.The
메모리 장치(220)는 호스트(210)에 의해 관리되는 데이터를 저장할 수 있으며, 불휘발성 메모리인 EEPROM(electrically erasable programmable read-only Memory), 플래시 메모리(flash memory), MRAM (magnetic RAM), 스핀전달토크 MRAM(spin-transfer torque MRAM), Conductive bridging RAM(CBRAM), FeRAM (ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(resistive RAM (RRAM)), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM (polymer RAM: PoRAM), 나노 부유 게이트 메모리(nano floating gate memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자 (molecular electronics memory device), 또는 절연 저항 변화 메모리(insulator resistance change memory), 휘발성 메모리인 RAM(random access memory), 예컨대 DRAM(dynamic RAM) 또는 SRAM(static RAM) 등으로 구현될 수 있으나 본 발명의 범위가 이에 한정되는 것은 아니다.The
메모리 컨트롤러(230)는 호스트(210)와 메모리 장치(220) 사이의 데이터 송수신을 제어할 수 있다. 메모리 컨트롤러(230)는 인터페이스(interface, 232), 인코더(encoder, 234), 및 디코더(decoder, 236)를 포함할 수 있다.The
인터페이스(232)는 호스트(210)와 메모리 컨트롤러(230) 간의 신호 송수신을 인터페이싱할 수 있다.The
인코더(234)는 호스트(210)로부터 수신된 데이터를 인코딩하여 메모리 장치(220)로 출력할 수 있다. The
실시 예에 따라, 도 3의 디코더(236)는 도 1의 디코더(100)와 같은 형태로 구현될 수 있다. 디코더(236)는 메모리 장치로부터 출력되는 데이터(R(x))의 오류를 검사하고 오류를 정정하여 정정된 데이터(C(x))를 인터페이스(232)를 통하여 호스트(210)로 전송할 수 있다.According to an embodiment, the
이상, 본 발명의 기술적 사상을 다양한 실시예들을 들어 상세하게 설명하였으나, 본 발명의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, Various modifications and variations are possible.
100, 236 : 디코더
110 : 데이터 버퍼
120 : 신드롬 계산기
130 : 키 방정식 솔버
140 : 치엔 서치 블록
150 : 에러 정정 블록
200 : 메모리 시스템
210 : 호스트
220 : 메모리 장치
230 : 메모리 컨트롤러100, 236: decoder
110: data buffer
120: Syndrome Calculator
130: Key equation solver
140: Chien Search Block
150: error correction block
200: Memory system
210: Host
220: memory device
230: Memory controller
Claims (10)
상기 신드롬 계산기는,
상기 코드워드를 복수의 비트들을 포함하는 비트 그룹 단위로 병렬로 입력받고, 병렬로 입력된 비트 그룹들 각각에 대하여 직렬 연산을 수행함으로써 상기 신드롬 값들을 생성하는 곱셈기들과 덧셈기들을 포함하는, 디코더(decoder).
And a syndrome calculator for generating syndrome values from the received codeword,
The syndrome calculator includes:
A decoder for receiving the codeword in units of bit groups including a plurality of bits in parallel and multipliers and adders for generating the syndrome values by performing a serial operation on each of the bit groups input in parallel, decoder.
상기 코드워드에 포함된 상기 비트 그룹들 각각에 포함된 상기 복수의 비트들은, 상기 덧셈기들을 통하여 입력되는, 디코더.
The method according to claim 1,
Wherein the plurality of bits contained in each of the bit groups included in the codeword are input through the adders.
상기 비트 그룹들 각각은 적어도 3이상의 비트들을 포함하며,
상기 곱셈기들은,
각각이 상기 덧셈기들 사이에 배치되는 누적 곱셈기들을 포함하는, 디코더.
3. The method of claim 2,
Each of the bit groups comprising at least three or more bits,
The multipliers,
Wherein each of the adders comprises cumulative multipliers disposed between the adders.
상기 누적 곱셈기들은,
서로 동일한 값을 가지는 갈로이스 필드 엘리먼트(Galois Field element)를 누적적으로 곱하는, 디코더.
The method of claim 3,
The accumulative multipliers are operable,
And cumulatively multiplies Galois Field elements having the same value with each other.
상기 신드롬 계산기는,
상기 비트 그룹들 중에서 어느 하나의 비트 그룹에 대한 직렬 연산이 완료되면, 직렬 연산이 완료된 비트 그룹에 대한 처리 데이터를 임시 저장하기 위한 레지스터(register)를 더 포함하는, 디코더.
5. The method of claim 4,
The syndrome calculator includes:
Further comprising a register for temporarily storing processing data for a bit group in which a serial operation is completed, when a serial operation for any one of the bit groups is completed.
상기 곱셈기들은,
직렬 연산이 완료된 상기 비트 그룹에 대하여 단위 갈로이스 필드 엘리먼트를 곱하는 단위 곱셈기를 포함하는, 디코더.
6. The method of claim 5,
The multipliers,
And a unit multiplier for multiplying the unit group field element with the bit group for which the serial operation has been completed.
상기 신드롬 계산기는,
상기 레지스터와 상기 단위 곱셈기 사이에 제1스위치를 더 포함하고,
상기 제1스위치는 상기 비트 그룹들 중에서 첫번째 비트 그룹의 직렬 연산이 완료되기 이전에는 턴-오프(turn-off)되고, 상기 첫번째 비트 그룹의 직렬 연산이 완료된 이후에는 턴-온(turn-on)되도록 제어되는, 디코더.
The method according to claim 6,
The syndrome calculator includes:
Further comprising a first switch between the register and the unit multiplier,
The first switch is turned off before the serial operation of the first bit group among the bit groups is completed and is turned on after the serial operation of the first bit group is completed. Controlled.
상기 신드롬 계산기는,
상기 신드롬 계산기의 출력단에 위치한 제2스위치를 더 포함하고,
상기 제2스위치는 상기 비트 그룹들 모두에 대한 직렬 연산이 완료되기 이전에는 턴-오프되고, 상기 비트 그룹들 모두에 대한 직렬 연산이 완료된 이후에는 턴-온되도록 제어되는, 디코더.
8. The method of claim 7,
The syndrome calculator includes:
Further comprising a second switch located at the output of the syndrome calculator,
Wherein the second switch is turned off before the serial operation for all of the bit groups is completed and is turned on after the serial operation for all of the bit groups is completed.
상기 디코더는,
상기 신드롬 값들에 기초하여 에러 위치 다항식을 생성하는 키 방정식 솔버(key equation solver);
상기 에러 위치 다항식에 기초하여 에러 위치를 구하는 치엔 서치 블록(chien search block); 및
상기 에러 위치에 기초하여 상기 수신 데이터의 에러를 수정하고, 수정된 수신 데이터를 출력하는 에러 수정 블록을 더 포함하는, 디코더.
The method according to claim 1,
The decoder includes:
A key equation solver for generating an error locator polynomial based on the syndrome values;
A chien search block for finding an error position based on the error locator polynomial; And
And an error correction block for correcting the error of the received data based on the error position and outputting the corrected received data.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150076192 | 2015-05-29 | ||
KR20150076192 | 2015-05-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160140512A true KR20160140512A (en) | 2016-12-07 |
KR101791637B1 KR101791637B1 (en) | 2017-10-30 |
Family
ID=57572969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160066044A KR101791637B1 (en) | 2015-05-29 | 2016-05-29 | Decoder and memory controller including the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101791637B1 (en) |
-
2016
- 2016-05-29 KR KR1020160066044A patent/KR101791637B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR101791637B1 (en) | 2017-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5913560B2 (en) | Encoding and decoding techniques using low density parity check codes | |
US8621329B2 (en) | Reconfigurable BCH decoder | |
US8689078B2 (en) | Determining a message residue | |
US10291258B2 (en) | Error correcting code for correcting single symbol errors and detecting double bit errors | |
US10236913B2 (en) | Error checking and correcting decoder | |
CN114389752B (en) | Cyclic redundancy check code generation method, device, equipment, medium and program product | |
US20180034483A1 (en) | Variable t bch encoding | |
US8332731B1 (en) | Error-correcting code and process for fast read-error correction | |
US9281844B2 (en) | Configurable and low power encoder for cyclic error correction codes | |
US10193574B1 (en) | Efficient syndrome calculation in processing a GLDPC code | |
KR101791637B1 (en) | Decoder and memory controller including the same | |
WO2016181978A1 (en) | Matrix operation device, matrix operation method, and program | |
KR101619049B1 (en) | Parallel BCH decoder | |
JP2015019276A (en) | Storage device, crc generation device and crc generation method | |
US10171109B2 (en) | Fast encoding method and device for Reed-Solomon codes with a small number of redundancies | |
CN106603085B (en) | Generating method and generating device for generating polynomial, encoder, controller and electronic equipment | |
WO2008069465A1 (en) | Method and apparatus for checking correction errors using cyclic redundancy check | |
US10389387B2 (en) | Coding device and coding method for a DVB-like LDPC code and a LDPC code in an ETRI format | |
US8775893B2 (en) | Variable parity encoder | |
US11438013B2 (en) | Low-power error correction code computation in GF (2R) | |
US12034454B2 (en) | Verifying data integrity in a receiver | |
US8381080B2 (en) | Reducing a degree of a polynomial in a polynomial division calculation | |
US20230370091A1 (en) | Error Correction With Fast Syndrome Calculation | |
KR20120064377A (en) | Bch decoder, memory system having the same and bch decoding method | |
Chen et al. | Using hash table and cyclotomic coset method for decoding the quadratic residue code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |