The present application claims priority under 35 U.S.C 119(a) to Korean Application No. 10-2016-0158370, filed on Nov. 25, 2016, which is herein incorporated by references in its entirety.
Various embodiments of the present disclosure relate to error correction circuits and memory controllers including the same.
Nonvolatile memory devices retain their stored data even when their power supplies are interrupted, and data storage units including the nonvolatile memory devices may be widely used in portable systems such as smart phones, digital cameras or computers. The nonvolatile memory devices, particularly, NAND-type flash memory devices have been developed using multi-level cell (MLC) techniques and advanced process techniques to increase the integration density of the NAND-type flash memory devices. The MLC techniques have been proposed to increase the number of bits which are capable of storing data in a single cell, and the advanced process techniques may be proposed to reduce a minimum feature size of patterns constituting memory cells of semiconductor devices. Recently, three-dimensional and vertical cell structures have been developed to overcome the limitation of planar-type memory cell array structures in which memory cells are two dimensionally arrayed and to more efficiently Increase the Integration density of the NAND-type flash memory devices.
The process techniques for forming fine patterns and the MLC techniques for increasing the number of bits in a limited area may lead to degradation of the reliability of the NAND-type flash memory devices, since cell-to-cell interference occurs if a pattern size is reduced. Furthermore, data error easily occurs if multi-bits are realized in a single cell using the MLC techniques. Accordingly, an error correction code (ECC) scheme has been used to guarantee the reliability of the semiconductor devices which are fabricated using the advanced process techniques and the MLC techniques.
In case of the nonvolatile memory devices such as phase change random access memory (PCRAM) devices, magnetoresistive RAM (MRAM) devices, nano floating gate memory (NFGM) devices, resistive RAM (RRAM) devices or polymer RAM devices, a read margin for recognizing a difference between a data “0” and a data “1” may be relatively narrow due to the nature of cells thereof. Thus, the nonvolatile memory devices including the PCRAM devices, the MRAM device, the NFGM devices, the RRAM devices and the polymer RAM devices may exhibit a relatively high error rate as compared with the NAND-type flash memory devices even though a single level cell (SLC) structure is employed therein. Accordingly, it may be advantageous to employ the ECC scheme in nonvolatile memory devices including the PCRAM devices, the MRAM device, the NFGM devices, the RRAM devices and the polymer RAM devices.
If the semiconductor devices employing the ECC scheme exhibit a relatively low error rate, a Hamming code may be used to detect and correct the data errors. In contrast, if the semiconductor devices employing the ECC scheme exhibit a relatively high error rate, a Bose-Chaudhuri-Hocquenghem (BCH) code or a Reed-Solomon (RS) code may be used to detect and correct the data errors. A binary BCH code may be designed to have a high code rate and may be realized using a relatively simple circuit, as compared with the RS code.
A decoding algorithm of the BCH code may include a syndrome calculation operation, an error location polynomial calculation operation, an error location calculation operation and an error correction operation. The error location polynomial calculation operation may be performed according to a Berlekamp-Massey (BM) algorithm. Since the error location polynomial calculation operation according to the BM algorithm is executed by a recursive operation, many clock pulses are required to execute the error location polynomial calculation operation. Accordingly, if the BCH code is used in an error correction circuit, a total decoding time may increase which degrades the performance of the error correction circuit.
Various embodiments are directed to error correction circuits and memory controllers including the same.
According to an embodiment, an error correction circuit includes a syndrome calculator suitable for generating syndromes from an “n”-bit codeword for a single unit of time, an error location polynomial calculator suitable for generating error location polynomial coefficients based on the syndromes provided for the single unit of time, an error location calculator suitable for calculating error locations based on the error location polynomial coefficients for the single unit of time, and an error corrector suitable for correcting errors of the codeword based on the error locations for the single unit of time. The error correction circuit operates in a pipelining manner.
According to another embodiment, an error correction circuit includes a syndrome calculator suitable for generating “2t”-number of parallel syndromes from an “n”-bit parallel codeword, an error location polynomial calculator suitable for generating error location polynomial coefficients based on the parallel syndromes, an error location calculator suitable for generating error locations based on the parallel error location polynomial coefficients, and an error corrector suitable for generating decoded data of the codeword by correcting errors of the codeword based on the error locations.
Various embodiments of the present disclosure will become more apparent in view of the attached drawings and accompanying detailed description, in which:
In the following description of the embodiments, it will be understood that the terms “first” and “second” are intended to identify an element, but not used to define only the element itself or to mean a particular sequence. In addition, when an element is referred to as being located “on”, “over”, “above”, “under” or “beneath” another element, it is intended to mean relative position relationship, but not used to limit certain cases in which the element directly contacts the other element, or at least one intervening element is present therebetween. Accordingly, the terms such as “on”, “over”, “above”, “under”, “beneath”, “below” and the like that are used herein are for the purpose of describing particular embodiments only and are not intended to limit the scope of the present disclosure. Further, when an element is referred to as being “connected” or “coupled” to another element, the element may be electrically or mechanically connected or coupled to the other element directly, or may form a connection relationship or coupling relationship by replacing the other element therebetween.
Referring to
Referring to
The syndrome calculator 210 may calculate and output syndromes necessary for calculation of an error location polynomial based on a codeword outputted from the memory device 20.
The error location polynomial calculator 220 may receive the syndromes from the syndrome calculator 210 to calculate and output coefficients of the error location polynomial to which the BM algorithm is applied.
The error location calculator 230 may calculate and output an error location signal using the coefficients of the error location polynomial, which are outputted from the error location polynomial calculator 220.
The error corrector 240 may correct an error of data by inverting a logic level of an erroneous bit corresponding to the error location signal outputted from the error location calculator 230.
In the present embodiment, each of the syndrome calculator 210, the error location polynomial calculator 220, the error location calculator 230 and the error corrector 240 may complete its operation for one clock cycle. Accordingly, the ECC decoding operation may be performed in a pipelined manner of a single clock cycle.
Referring to
The first bit data r0 of the “n”-bit codeword may be directly inputted to the XOR arithmetic element 213. The second bit data r1 of the “n”-bit codeword and a primitive element a1 of a Galois field may be inputted to the first Galois field multiplier 212(1) of the first syndrome calculation block 211-1. The third bit data r2 of the “n”-bit codeword and a primitive element a2 of the Galois field may be inputted to the second Galois field multiplier 212(2) of the first syndrome calculation block 211-1. The (n−1)th bit data rn−2 of the “n”-bit codeword and a primitive element an−2 of the Galois field may be inputted to the (n−2)th Galois field multiplier 212(n−2) of the first syndrome calculation block 211-1. The nth bit data rn−1 of the “n”-bit codeword and a primitive element an−1 of the Galois field may be inputted to the (n−1)th Galois field multiplier 212(n−1) of the first syndrome calculation block 211-1.
Output data of the first to (n−1)th Galois field multipliers 212(1) to 212(n−1) of the first syndrome calculation block 211-1 and the first bit data r0 of the “n”-bit codeword may be inputted to the XOR arithmetic element 213 of the first syndrome calculation block 211-1. The XOR arithmetic element 213 of the first syndrome calculation block 211-1 may perform XOR operations of the output data of the first to (n−1)th Galois field multipliers 212(1) to 212(n−1) and the first bit data r0 of the “n”-bit codeword to generate the first syndrome S0.
Similarly, the second bit data r1 of the “n”-bit codeword and a primitive element (a1)2t of the Galois field may be inputted to the first Galois field multiplier 212(1) of the 2tth syndrome calculation block 211-2t. The third bit data r2 of the “n”-bit codeword and a primitive element (a2)2t of the Galois field may be inputted to the second Galois field multiplier 212(2) of the 2tt syndrome calculation block 211-2t. The (n−1)th bit data rn−2 of the “n”-bit codeword and a primitive element (an−2)2t of the Galols field may be inputted to the (n−2)th Galois field multiplier 212(n−2) of the 2tth syndrome calculation block 211-2t. The nth bit data rn−1 of the “n”-bit codeword and a primitive element (an−1)2t of the Galois field may be inputted to the (n−1)th Galois field multiplier 212(n−1) of the 2tth syndrome calculation block 211-2t.
Output data of the first to (n−1)th Galois field multipliers 212(1) to 212(n−1) of the 2tth syndrome calculation block 211-2t and the first bit data r0 of the “n”-bit codeword may be inputted to the XOR arithmetic element 213 of the 2tth syndrome calculation block 211-2t. The XOR arithmetic element 213 of the 2tth syndrome calculation block 211-2t may perform XOR operations of the output data of the first to (n−1)th Galois field multipliers 212(1) to 212(n−1) and the first bit data r0 of the “n”-bit codeword to generate the 2tth syndrome S2t−1.
As described above, each of the first to 2tth syndrome calculation blocks 211-1 to 211-2t may be comprised of only a combinational logic circuit including the first to (n−1)th Galois field multipliers 212(1) to 212(n−1) and the XOR arithmetic element 213 without any sequential logic circuits such as flip-flops.
The first to 2tth syndrome calculation blocks 211-1 to 211-2t may receive the bit data r0 to rn−1 of the “n”-bit codeword in parallel to generate the first to 2tth syndromes S0 to S2t−1 in parallel. Accordingly, the syndrome generation operation performed may be executed for one clock cycle by the first to 2tth syndrome calculation blocks 211-1 to 211-2t. Thus, a total ECC decoding operation may be performed in a pipelined manner of a single clock cycle.
The error location polynomial calculator 220 may output coefficients δi(t)(where, i=0,1, . . . , t) of the error location polynomial under each of a plurality of conditions through the Galois field multiplying operations and the XOR operations of the first to (2t−1)th syndromes S0 to S2t−1 which are provided according to a simplified inversionless Berlekamp-Massey (SiBM) algorithm. The number of conditions may be set to be “2(t−1)”. As a result, the total number of the coefficients generated by the error location polynomial calculator 220 may be “2(t−1)×(t+1)”.
The error location polynomial calculator 220 according to the present embodiment may be available if the maximum error correctability “t” is three, which is merely an example. That is, the error location polynomial calculator 220 may be easily modified to provide an error location polynomial calculator which is available for various maximum error correctability “t”. If the maximum error correctability “t” is three, first to (2t−1)th syndromes, that is, five syndromes S0 to S4 may be inputted to the error location polynomial calculator 220. In such a case, the error location polynomial calculator 220 may output “(t+1)”-number of coefficients, that is, four error location polynomial coefficients for each of first to fourth conditions TT, TF, FT and FF. Since four error location polynomial coefficients for each of the first to fourth conditions TT, TF, FT and FF are outputted from the error location polynomial calculator 220, the error location polynomial calculator 220 may output substantially sixteen error location polynomial coefficients.
Only twelve coefficients among the sixteen error location polynomial coefficients may be generated by an operation of the error location polynomial calculator 220. Accordingly, four error location polynomial coefficients that is, δ3(3), δ2(3), δ0(3), and δ1(3), obtained without calculation of the error location polynomial calculator 220 are omitted in
Each of the sixteen error location polynomial coefficients outputted from the error location polynomial calculator 220 may be represented by an equation expressed by only Galois field multiplying operations and XOR operations through pre-calculation steps using the SiBM algorithm. The pre-calculation steps will be described in detail hereinafter with reference to
Referring to
Referring to
As such, the remaining error location polynomial coefficients δt(1) to δ6(1) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(1) to δ6(1) is expressed by “0”, “1” and/or the syndromes.
A second step SIBM2 may be performed after the first step SiBM1 terminates. At the second step SiBM2, a first high-order condition and a second high-order condition may be set and variables for each of the first and second high-order conditions may be set.
The first high-order condition may correspond to a case in which the error location polynomial coefficient δ0(0) is not “0” and the control signal k(0) is equal to or greater than “0”. The second high-order condition may correspond to a case in which the error location polynomial coefficient δ0(0) is “0” or the control signal k(0) is less than “0”.
Since the control signal k(0) is initialized to have a value of “0” at the initialization step, the first high-order condition and the second high-order condition may be distinct from each other according to whether or not the error location polynomial coefficient δ0(0) is “0”.
In case of the first high-order condition, the variables θ0(1), θ1(1), θ2(1), θ5(1) and θ6(1) may be set to have values of “S1”, “S2”, “S3”, “1” and “0” respectively, and the control signals γ(1) and k(1) may be set to have values of “S0” and “0” respectively.
In case of the second high-order condition, the variables θ0(1), θ1(1), θ2(1), θ5(1) and θ6(1) may be set to have values of “S0”, “S1”, “S2”, “0” and “1” respectively, and both of the control signals γ(1) and k(1) may be set to have a value of “1”. In the first and second high-order conditions, both of the variables θ3(1) and θ4(1) may be set to have a value of “0”.
Referring to
As such, the remaining error location polynomial coefficients δ1(2) to δ6(2) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(2) to δ6(2) is expressed by “0”, “1” and/or the syndromes.
Under the second high-order condition, the same calculations as described above may also be performed to obtain the error location polynomial coefficients δ0(2) to δ6(2).
Referring to
The third high-order condition may correspond to a case in which the error location polynomial coefficient δ0(1) is not “0” and the control signal k(1) is equal to or greater than “0”. The fourth high-order condition may correspond to a case that the error location polynomial coefficient δ0(1) is “0” or the control signal k(1) is less than “0”.
Since the control signal k(1) is equal to or greater than “0”, the third high-order condition and the fourth high-order condition may be distinct from each other according to whether or not the error location polynomial coefficient δ0(1) is “0”.
In case of the third high-order condition, the variables θ0(2), θ3(2), θ4(2), θ5(2) and θ6(2) may be set to have values of “S3+S0. S2”, “1”, “S0”, “0” and “0” respectively, and the control signals γ(2) and k(2) may be set to have values of “S2+S0·S1” and “0” respectively. In addition, both of the variables θ1(2) and θ2(2) may be set to have a value of “0”.
The first condition TT may be defined as a case that meets the first and third high-order conditions. That is, the first condition TT may correspond to a case in which both of the error location polynomial coefficients δ0(0) and δ0(1) are not “0” and both of the control signals k(0) and k(1) are equal to or greater than “0”. The third condition FT may be defined as a case that meets the second and third fourth high-order conditions. The third condition FT may correspond to a case in which the error location polynomial coefficient δ0(0) is “0” or the control signals k(0) is less than “0”, the error location polynomial coefficient δ0(1) is not “0”, and the control signal k(1) is equal to or greater than “0”.
The fourth high-order condition may include a first case that satisfies the first high-order condition and a second case that satisfies the second high-order condition. The fourth high-order condition satisfying the first high-order condition may correspond to a case in which the error location polynomial coefficient δ0(0) is not “0”, the control signal k(0) is equal to or greater than “0”, and the error location polynomial coefficient δ0(1) is “O” or the control signal k(1) is less than “0”. The fourth high-order condition satisfying the second high-order condition may correspond to a case that the error location polynomial coefficient δ0(0) Is “0” or the control signal k(O) is less than “0”, and the error location polynomial coefficient δ0(1) is “0” or the control signal k(1) is less than “0”.
The second condition TF may correspond to the fourth high-order condition satisfying the first high-order condition, and the fourth condition FF may correspond to the fourth high-order condition satisfying the second high-order condition.
In case of the second condition TF, the variables θ0(2), θ3(2), θ4(2), θ5 (2) and θ6(2) may be set to have values of “S1”, “0”, “0”, “1” and “0” respectively, and the control signals γ(2) and k(2) may be set to have “S0” and “1” respectively. In addition, both of the variables θ1(2) and θ2(2) may be set to have a value of “0”. In case of the fourth condition FF, the variables θ0(2), θ3(2), θ4(2), θ5(1) and θ6(2) may be set to have values of “S0”, “0”, “0”, “0” and “1” respectively, and both of the control signals γ(2) and k(2) may be set to have a value of “1”. In addition, both of the variables θ1(2) and θ2(2) may be set to have a value of “0”.
Referring to
Under the first condition TT, the error location polynomial coefficients δ0(3) to δ3(3) may be calculated using the error location polynomial coefficients δ0(2) to δ6(2) obtained under the first high-order condition of the second operation round “(r=1)” and the variables θ0(2) to θ6(2), γ(2) and k(2) set under the third high-order condition of the second operation round “(r=1)”. For example, since the data “S2+S0·S1”, “S0”, “S0·(S4+S0·S3)+(S2+S0·S1)·S2” and “0” are respectively set as the values of the variables γ(2), δ2(2), δ0(2) and θ1(2) of the error location polynomial coefficient δ0(3), the error location polynomial coefficient δ0(3) may be calculated as “(S2+S0·S1)·S0” which is expressed by the syndromes “S2”, “S0” and “S1”.
As such, the remaining error location polynomial coefficients δ1(3) to δ3(3) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(3) to δ3(3) is expressed by “0”, “1” and/or the syndromes.
Under the second condition TF, the error location polynomial coefficients δ0(3) to δ3(3) may be calculated using the error location polynomial coefficients δ0(2) to δ6(2) obtained under the first high-order condition of the second operation round “(r=1)” and the variables θ0(2) to θ6(2), γ(2) and k(2) set under the fourth high-order condition satisfying the first high-order condition. For example, since the data “S0”, “S0”, “S0·(S4+S0·S3)+(S2+S0·S1)·S2” and “0” are respectively set as the values of the variables γ(2), δ2(2), δ0(2) and θ1(2) of the error location polynomial coefficient δ0(3), the error location polynomial coefficient δ0(3) may be calculated as “S0·S0” which is expressed by the syndrome “S0”.
As such, the remaining error location polynomial coefficients δ1(3) to δ3(3) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(3) to δ3(3) is expressed by “0”, “1” and/or the syndromes.
Under the third condition FT, the error location polynomial coefficients δ0(3) to δ3(3) may be calculated using the error location polynomial coefficients δ0(2) to δ6(2) obtained under the second high-order condition of the second operation round “(r=1)” and the variables θ0(2) to θ6(2), γ(2) and k(2) set under the third high-order condition. For example, since the data “S2+S0·S1”, “1”, “(S4+S0·S3)+(S2+S0·S1)·St” and “0” are respectively set as the values of the variables γ(2), δ2(2), δ0(2) and θ1(2) of the error location polynomial coefficient δ0(3), the error location polynomial coefficient δ0(3) may be calculated as “(S2+S0·S1)·1” which is expressed by the syndromes “S2”, “S0” and “S1”.
As such, the remaining error location polynomial coefficients δ1(3) to δ3(3) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(3) to δ3(3) is expressed by “0”, “1” and/or the syndromes.
Under the fourth condition TT, the error location polynomial coefficients δ0(3) to δ3(3) may be calculated using the error location polynomial coefficients δ0(2) to δ6(2) obtained under the second high-order condition of the second operation round “(r=1)” and the variables θ0(2) to θ6(2), γ(2) and k(2) set under the fourth high-order condition satisfying the second high-order condition. For example, since the data “1”, “1”, “(S4+S0·S3)+(S2+S0·S1)·S1” and “0” are respectively set as the values of the variables γ(2), δ2(2), δ0(2) and θ1(2) of the error location polynomial coefficient δ0(3), the error location polynomial coefficient δ0(3) may be calculated as “1”.
As such, the remaining error location polynomial coefficients δ1(3) to δ3(3) may also be calculated in the same manner so that each of the remaining error location polynomial coefficients δ1(3) to δ3(3) is expressed by “0”, “1” and/or the syndromes.
As described above, each of the error location polynomial coefficients δ0(3) to δ3(3) under the first to fourth conditions TT, TF, FT and FF may be expressed by an arithmetic equation including “0”, “1” and/or at least one of the syndromes S0, S1, S2, S3 and S4 using the pre-calculation steps illustrated in
Referring again to
Each of the first to third common calculation blocks 310, 320 and 330 may include a logic circuit which is used in calculations of the twelve error location polynomial coefficients in common.
Specifically, the first common calculation block 310 may include a first Galois field multiplier 350-1 receiving the first and second syndromes S0 and S1 as input data and a first XOR arithmetic element 360-1 receiving an output data of the first Galois field multiplier 350-1 and the third syndrome S2 as input data. The second common calculation block 320 may include a second Galois field multiplier 350-2 receiving the first and fourth syndromes S0 and S3 as input data and a second XOR arithmetic element 360-2 receiving an output data of the second Galois field multiplier 350-2 and the fifth syndrome S4 as input data. The third common calculation block 330 may include a third Galois field multiplier 350-3 having two input terminals to which the first syndrome S0 is simultaneously applied.
The first common calculation block 310 may perform a Galois field multiplying operation of the first and second syndromes S0 and S1, and may perform an XOR operation of the Galois field multiplying operation result and the third S2 to output the XOR operation result.
Thus, the first common calculation block 310 may perform an operation corresponding to an equation “S2+S0·S1”. As illustrated in
The second common calculation block 320 may perform a Galois field multiplying operation of the first and fourth syndromes S0 and S3 and may perform an XOR operation of the Galois field multiplying operation result and the fifth S4 to output the XOR operation result. Thus, the second common calculation block 320 may perform an operation corresponding to an equation “S4+S0·S3”. As illustrated in
Accordingly, an output signal of the second common calculation block 320 may be used in the calculation of all of the error location polynomial coefficients including the equation “S4+S0·S3”.
The third common calculation block 330 may perform a Galois field multiplying operation of the first syndrome S0 and the first syndrome S0 to output the Galois field multiplying operation result. Thus, the third common calculation block 330 may perform an operation corresponding to an equation “S0·S0”. As illustrated in
In
The first output signals δ0_TT, δ1_TT, δ2_TT may correspond to the error location polynomial coefficients δ0(3), δ1(3), δ2(3) and δ3(3) under the first condition TT, respectively. The second output signals δ0_TF, δ1_TF and δ2_TF may correspond to the error location polynomial coefficients δ0(3), δ1(3) and δ2(3) under the second condition TF, respectively. The third output signals δ0_FT, δ1_FT, δ2_FT and δ3_FT may correspond to the error location polynomial coefficients δ0(3), δ1(3), δ2(3) and δ3(3) under the third condition FT, respectively. The fourth output signal δ3_FF may correspond to the error location polynomial coefficient δ3(3) under the fourth condition FF.
The error location polynomial coefficient δ3(3) having a value of “0” under the second condition TF and the error location polynomial coefficient δ2(3) having a value of “O” under the fourth condition FF are omitted in
An output signal of the first common calculation block 310 may be the fourth output signal δ3_FF, that is, the error location polynomial coefficient δ3(3) under the fourth condition FF. An output signal of the third common calculation block 330 may be the second output signal δ0_TF, that is, the error location polynomial coefficient δ0(3) under the second condition TF.
The error location polynomial calculator 220 may further include fourth to twelfth Galois field multipliers 350-4 to 350-12 and third to sixth XOR arithmetic elements 360-3 to 360-6 which are coupled between output terminals of the first to third common calculation blocks 310 to 330 and output terminals of the error location polynomial calculator 220.
The fourth Galois field multiplier 350-4 may perform a Galois field multiplying operation of the first syndrome S0 and an output signal “S2+S0·S1” of the first common calculation block 310. As a result, an output signal of the fourth Galois field multiplier 350-4 may be the first output signal S0_TT, that is, the error location polynomial coefficient δ0(3) under the first condition TT. The fifth Galois field multiplier 350-5 may perform a Galois field multiplying operation of an output signal “S2+S0·S1” of the first common calculation block 310 and an output signal “S0·S0” of the third common calculation block 330. As a result, an output signal of the fifth Galois field multiplier 350-5 may be the first output signal δ1_TT, that is, the error location polynomial coefficient δ1(3) under the first condition TT. The sixth Galois field multiplier 350-6 may perform a Galois field multiplying operation of an output signal “S2+S0·S1” of the first common calculation block 310 and an output signal “S2+S0·S1” of the first common calculation block 310. An output signal of the sixth Galois field multiplier 350-6 may be inputted to the third and sixth XOR arithmetic elements 360-3 and 360-6.
The seventh Galols field multiplier 350-7 may perform a Galols field multiplying operation of the first syndrome S0 and an output signal “S4+S0·S3” of the second common calculation block 320. An output signal of the seventh Galois field multiplier 350-7 may be inputted to the fourth XOR arithmetic element 360-4. The eighth Galois field multiplier 350-8 may perform a Galois field multiplying operation of the third syndrome S2 and an output signal “S2+S0·S1” of the first common calculation block 310. An output signal of the eighth Galols field multiplier 350-8 may be Inputted to the fourth XOR arithmetic element 360-4. The ninth Galois field multiplier 350-9 may perform a Galois field multiplying operation of the first syndrome S0 and an output signal “S0·(S+S0·S3)+(S2+S0·St) S2” of the fourth XOR arithmetic element 360-4. An output signal of the ninth Galois field multiplier 350-9 may be the first output signal δ3_TT, that is, the error location polynomial coefficient δ3(3) under the first condition TT.
The tenth Galois field multiplier 350-10 may perform a Galois field multiplying operation of the first syndrome S0 and an output signal “S0·S0” of the third common calculation block 330. An output signal of the tenth Galois field multiplier 350-10 may be the second output signal δ1_TF, that is, the error location polynomial coefficient δ1(3) under the second condition TF. The eleventh Galois field multiplier 350-11 may perform a Galois field multiplying operation of the second syndrome S1 and an output signal “S2+S0·S1” of the first common calculation block 310. An output signal of the eleventh Galois field multiplier 350-11 may be inputted to the fifth XOR arithmetic element 360-5. The twelfth Galois field multiplier 350-12 may perform a Galois field multiplying operation of the first syndrome S0 and an output signal “(S4+S0·S3)+(S2+S0·S1)·S1” of the fifth XOR arithmetic element 360-5. An output signal of the twelfth Galois field multiplier 350-12 may be inputted to the sixth XOR arithmetic element 360-6.
The fourth XOR arithmetic element 360-4 may perform an XOR operation of an output signal “S0(S4+S0·S3)” of the seventh Galois field multiplier 350-7 and an output signal “(S2+S0·S1)·S2” of the eighth Galois field multiplier 350-8. An output signal of the fourth XOR arithmetic element 360-4 may be inputted to the ninth Galois field multiplier 350-9 and the third XOR arithmetic element 360-3. The third XOR arithmetic element 360-3 may receive an output signal “S0·(S4+S0·S3)+(S2+S0·S1)·S2” of the fourth XOR arithmetic element 360-4 and an output signal “(S2+S0·St) (S2+S0·S1)” of the sixth Galois field multiplier 350-6 to perform an XOR operation of the output signal “S0·(S4+S0·S3)+(S2+S0·S1)·S2” of the fourth XOR arithmetic element 360-4 and the output signal “(S2+S0·S1)·(S2+S0·S1)” of the sixth Galois field multiplier 350-6. An output signal of the third XOR arithmetic element 360-3 may be the first output signal δ2_TT, that is, the error location polynomial coefficient δ2(3) under the first condition TT.
The fifth XOR arithmetic element 360-5 may perform an XOR operation of an output signal “S4+S0·S3” of the second common calculation block 320 and an output signal “(S2+S0·S1)·S1” of the eleventh Galois field multiplier 350-11 and may output the XOR operation result. An output signal of the fifth XOR arithmetic element 360-5 may be the third output signal δ2_FT, that is, the error location polynomial coefficient δ2(3) under the third condition FT. The sixth XOR arithmetic element 360-6 may perform an XOR operation of an output signal “(S2+S0·S1)·(S2+S0·S1)” of the sixth Galols field multiplier 350-6 and an output signal “((S4+S0·S3)+(S2+S0·S1)·S1)·S0” of the twelfth Galois field multiplier 350-12 to output the XOR operation result. An output signal of the sixth XOR arithmetic element 360-6 may be the third output signal δ3_FT, that is, the error location polynomial coefficient δ3(3) under the third condition FT.
As described above, the error location polynomial calculator 220 may perform Galois field multiplying operations with the first to twelfth Galois field multipliers 350-1 to 350-12 and XOR operations with the first to sixth XOR arithmetic elements 360-1 to 360-6 to generate all of the error location polynomial coefficients. While the operations of the error location polynomial calculator 220 are performed, no recursive operation is required. Thus, the error location polynomial calculator 220 may be designed without any sequential logic circuits such as flip-flops and registers. The error location polynomial calculator 220 may receive the syndromes S0 to S4 in parallel and may perform combinational logic operations of the syndromes S0 to S4 using the first to twelfth Galois field multipliers 350-1 to 350-12 and the first to sixth XOR arithmetic elements 360-1 to 360-6 to generate and output the error location polynomial coefficients in parallel. As a result, the error location polynomial coefficients may be generated for one clock cycle.
Referring to
The error location calculator 230 may include a plurality of XOR arithmetic elements which are respectively arrayed at cross points of “n”-number of rows and “t”-number of columns and a plurality of Galois field multipliers that provide input signals of the XOR arithmetic elements. If the maximum error correctability “t” is three, the error location calculator 230 may include “3n”-number of XOR arithmetic elements 410-11 to 410-n3 which are respectively arrayed at cross points of “n”-number of rows and three columns. In addition, the error location calculator 230 may include “(3n−3)”-number of Galois field multipliers 420-21 to 420-n3 that provide input signals of the XOR arithmetic elements 410-21 to 410-n3 which are arrayed in the second to nth rows.
The error location polynomial coefficient δ0(3) may be Inputted to the XOR arithmetic elements 410-11 to 410-n1 which are arrayed in the first column. Output data of the XOR arithmetic elements 410-11 to 410-n1 may be respectively inputted to the XOR arithmetic elements 410-12 to 410-n2 which are arrayed in the second column. Output data of the XOR arithmetic elements 410-12 to 410-n2 may be respectively inputted to the XOR arithmetic elements 410-13 to 410-n3 which are arrayed in the third column. The XOR arithmetic elements 410-13 to 410-n3 may output the “n”-bit output data X(a_0) to X(a_n−1), respectively. Erroneous bits of the “n”-bit output data X(a_0) to X(a_n−1) may have a value of “1”, and non-erroneous bits of the “n”-bit output data X(a_0) to X(a_n−1) may have a value of “0”.
The error location polynomial coefficient δ1(3) may be inputted to the XOR arithmetic element 410-11 which is located at a cross point of the first row and the first column. The error location polynomial coefficient δ2(3) may be inputted to the XOR arithmetic element 410-12 which is located at a cross point of the first row and the second column. In addition, the error location polynomial coefficient δ3(3) may be inputted to the XOR arithmetic element 410-13 which is located at a cross point of the first row and the third column. The error location polynomial coefficient δ1(3) may be inputted to all of the Galois field multipliers 420-21 to 420-n1, which are arrayed in the first column. The error location polynomial coefficient δ2(3) may be inputted to all of the Galois field multipliers 420-22 to 420-n2, which are arrayed in the second column. The error location polynomial coefficient δ3(3) may be inputted to all of the Galois field multipliers 420-23 to 420-n3, which are arrayed in the third column. The primitive elements a1 to a(n−1) of the Galois field may be inputted to the Galois field multipliers 420-21 to 420-n1 arrayed in the first column, respectively. The primitive elements (a1)2 to (an−1)2 of the Galois field may be inputted to the Galois field multipliers 420-22 to 420-n2 arrayed in the second column, respectively. The primitive elements (a1)3 to (an−1)3 of the Galois field may be inputted to the Galois field multipliers 420-23 to 420-n3 arrayed in the third column, respectively.
Referring to
The first multiplexer 510-1 may have a first input terminal IN1 to which an output signal of the first inverter 520-1 receiving the first bit data r0 of the “n”-bit codeword is inputted and a second input terminal IN2 to which the first bit data r0 of the “n”-bit codeword is directly inputted. The second multiplexer 510-2 may have a first input terminal IN1 to which an output signal of the second Inverter 520-2 receiving the second bit data r1 of the “n”-bit codeword is inputted and a second input terminal IN2 to which the second bit data r1 of the “n”-bit codeword is directly inputted. Similarly, the nth multiplexer 510-n may have a first input terminal IN1 to which an output signal of the nth inverter 520-n receiving the nth bit data rn−1 of the “n”-bit codeword is inputted and a second input terminal IN2 to which the nth bit data rn−1 of the “n”-bit codeword is directly inputted.
The “n”-bit decoded output data DEC_OUT(0) to DEC_OUT(n−1) outputted from the first to nth multiplexers 510-1 to 510-n may be determined by the “n”-bit output data X(a_0) to X(a_n−1) outputted from the error location calculator 230, respectively.
The first bit of output data X(a_0) outputted from the error location calculator 230 may be inputted to the first multiplexer 510-1 to act as a control signal of the first multiplexer 510-1. If the first bit of output data X(a_0) is “1”, the first bit data r0 of the “n”-bit codeword may correspond to an erroneous bit data. Thus, the first multiplexer 510-1 may output an inverted signal of the first bit data r0 of the codeword that is, a signal inputted to the first input terminal IN1 of the first multiplexer 510-1 as the first bit of decoded output data DEC_OUT(O). In contrast, if the first bit of output data X(a_0) is “0”, the first bit data r0 of the “n”-bit codeword may correspond to a non-erroneous bit data. Thus, the first multiplexer 510-1 may output the first bit data r0 of the codeword that is, a signal inputted to the second input terminal IN2 of the first multiplexer 510-1 as the first bit of decoded output data DEC_OUT(0).
The second bit of output data X(a_1) outputted from the error location calculator 230 may be inputted to the second multiplexer 510-2 to act as a control signal of the second multiplexer 510-2. If the second bit of output data X(a_1) is “1”, the second bit data r1 of the “n”-bit codeword may correspond to an erroneous bit data. Thus, the second multiplexer 510-2 may output an inverted signal of the second bit data r1 of the codeword that is, a signal inputted to the first input terminal IN1 of the second multiplexer 510-2, as the second bit of decoded output data DEC_OUT(1). In contrast, if the second bit of output data X(a_1) is “0”, the second bit data r1 of the “n”-bit codeword may correspond to a non-erroneous bit data. Thus, the second multiplexer 510-2 may output the second bit data r1 of the codeword that is, a signal inputted to the second input terminal IN2 of the second multiplexer 510-2, as the second bit of decoded output data DEC_OUT(1).
Similarly, The nth bit of output data X(a_n−1) outputted from the error location calculator 230 may be inputted to the nth multiplexer 510-n to act as a control signal of the nth multiplexer 510-n. If the nh bit of output data X(a_n−1) is “1”, the nth bit data rn−1 of the “n”-bit codeword may correspond to an erroneous bit data. Thus, the nth multiplexer 510-n may output an inverted signal of the nth bit data rn−1 of the codeword that is, a signal inputted to the first input terminal IN1 of the nth multiplexer 510-n as the nth bit of decoded output data DEC_OUT(n−1). In contrast, if the nm bit of output data X(a_n−1) is “0”, the nth bit data rn−1 of the “n”-bit codeword may correspond to a non-erroneous bit data. Thus, the nth multiplexer 510-n may output the nth bit data rn−1 of the codeword that is, a signal inputted to the second input terminal IN2 of the nth multiplexer 510-n as the nth bit of decoded output data DEC_OUT(n−1).
Referring to
During the second clock cycle after the syndrome calculation of the first codeword terminates, the error location polynomial calculator 220 may calculate and output the error location polynomial coefficients using syndromes generated by the syndrome calculation of the syndrome calculator 210 during the first clock cycle. As described with reference to
During the third clock cycle after the error location polynomial calculation of the first codeword terminates, the error location calculator 230 may calculate the error locations using the error location polynomial coefficients generated by the error location polynomial calculator 220 during the second clock cycle. As described with reference to
During the fourth clock cycle after the error location calculation of the first codeword terminates, the error corrector 240 may generate first decoded data OUTPUT_A corresponding to the first codeword, using the output data outputted from the error location calculator 230 during the third clock cycle. As described with reference to
As described above, an ECC decoding operation performed by an error correction circuit according to an embodiment may include a syndrome calculation step, an error location polynomial calculation step, an error location calculation step, and an error correction step which are simultaneously executed during each clock cycle after first to third clock cycles, and the ECC decoding operation may be performed according to a pipelining scheme that outputs decoded output data including a plurality of bits in parallel during each clock cycle. That is, a first syndrome calculation step may be performed during a first clock cycle, a first error location polynomial calculation step may be performed during a second clock cycle after the first clock cycle, and a first error location calculation step may be performed during a third clock cycle after the second clock cycle. In such a case, decoded data of a single codeword may be outputted from the error correction circuit during each clock cycle after the first to third clock cycles.
According to the embodiments, each of various steps constituting an encoding algorithm for error correction using a BCH code may be performed for one clock cycle. Thus, a total encoding operation may be executed in a pipelined manner of a single clock cycle.
The embodiments of the present disclosure have been disclosed above for Illustrative purposes. Those of ordinary skill in the art will appreciate that various modifications, additions, and substitutions are possible, without departing from the scope and spirit of the present disclosure as disclosed in the accompanying claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2016-0158370 | Nov 2016 | KR | national |