The present application claims priority under 35 U.S.C. 119(a) to Korean Application number 10-2017-0004429 filed on Jan. 11, 2017, which is herein incorporated by reference in its entirety.
Various embodiments of the present disclosure generally relate to error correction code (ECC) decoders and, more particularly, to ECC decoders sharing logic operations, memory controllers including the ECC decoders, and methods of decoding ECCs.
Nonvolatile memory devices retain their stored data even when their power supplies are interrupted, and for that reason the nonvolatile memory devices are widely used as data storage in portable electronic systems such as smart phones, digital cameras, and computers. In order to increase data capacity of the nonvolatile memory devices such as NAND-type flash memory devices, multi-level cell (MLC) techniques may be used. Such MLC flash memories may store more than one bit per cell. In addition, advanced fabrication techniques may increase the data capacity by reducing the minimum feature size of patterns constituting memory cells of semiconductor devices. Recently, three-dimensional cell structures (e.g., vertical cell structures) are regarded as the most promising alternative to two-dimensional cell structures because the three-dimensional cell structures can overcome the limitations of the two-dimensional cell structures in increasing the integration density of the NAND-type flash memory devices.
The decrease in the minimum feature size of patterns and the increase in the number of bits stored per cell may lead to degradation of the reliability of the NAND-type flash memory devices. This is because a cell-to-cell interference may occur if a pattern size is reduced and data errors may easily occur if multi-bit data is stored in a single cell using the MLC techniques. Accordingly, an error correction code (ECC) is been used to guarantee the reliability of the semiconductor devices fabricated using the advanced process techniques and the semiconductor devices using the MLC techniques.
In the case of other types of 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, and polymer RAM devices, a read margin may be tight due to the nature of cells thereof. Thus, error rates of the PCRAM devices, the MRAM device, the NFGM devices, the RRAM devices, and the polymer RAM devices may be higher than the NAND-type flash memory devices, even if they have a single level cell (SLC) structure. Accordingly, error correction scheme such as the ECC is becoming more essential to the PCRAM devices, the MRAM device, the NFGM devices, the RRAM devices, and the polymer RAM devices.
If the semiconductor devices have a relatively low error rate, a Hamming code may be used to detect and correct the data errors. In contrast, if the semiconductor devices have 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.
An ECC decoding algorithm of the BCH code may include a syndrome operation, an error location polynomial operation, an error location operation, and an error correction operation. Most operations for executing the ECC decoding algorithm may be performed using exclusive OR (XOR) operations and Galois field multiplying operations. Thus, a lot of XOR arithmetic elements and a lot of Galois field multipliers may be required to realize an ECC decoder performing the XOR operations and Galois field multiplying operations, and logic components such as the XOR arithmetic elements and the Galois field multipliers occupy most of the space in the ECC decoder.
Various embodiments are directed to ECC decoders sharing logic operations, memory controllers including the ECC decoders, and methods of decoding ECCs.
According to an embodiment, an ECC decoder may include a finite state machine (FSM) controller and a shared logic circuit. The FSM controller may generate a first control signal and a second control signal each corresponding to a certain state. The shared logic circuit may include a plurality of shared Galois field (GF) multipliers, a plurality of shared XOR arithmetic elements, and a plurality of shared multiplexers (MUXs), which are used for an operation selected between a syndrome operation, an error location polynomial operation, an error location operation, and an error correction operation, in response to the first and second control signals.
According to an embodiment, there is provided a memory controller coupled between a host and a memory device to control the memory device in response to a command output from the host. The memory controller may include an error correction code (ECC) encoder performing an error correction encoding operation on data to be written into the memory device to generate a codeword including parity bits and an ECC decoder performing an error correction decoding operation on data output from the memory device. The ECC decoder may include a finite state machine (FSM) controller and a shared logic circuit. The FSM controller may generate a first control signal and a second control signal corresponding to a certain state. The shared logic circuit may include a plurality of shared Galois field (GF) multipliers, a plurality of shared XOR arithmetic elements, and a plurality of shared multiplexers (MUXs), which are used for an operation selected between a syndrome operation, an error location polynomial operation, an error location operation, and an error correction operation, in response to the first and second control signals.
According to an embodiment, there is provided a method of decoding ECCs. The method may include providing a shared logic circuit including a plurality of shared Galois field (GF) multipliers, a plurality of shared XOR arithmetic elements and a plurality of shared multiplexers (MUXs). A finite state machine (FSM) controller is provided to generate a first control signal and a second control signal each corresponding to a certain state. The shared logic circuit including the plurality of shared GF multipliers, the plurality of shared XOR arithmetic elements, and the plurality of shared MUXs may be driven to perform an operation selected between a syndrome operation, an error location polynomial operation, an error location operation, and an error correction operation, in response to the first and second control signals.
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 that 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.
If a level of the input control signal X changes from a logic “low(0)” level into a logic “high(1)” level, a state of the FSM controller 220 may change from the first state ST0 into the second state ST1. The second state ST1 may be defined as a syndrome operation state. After the FSM controller 220 enters the second state ST1, the input control signal X may turn into a logic “low(0)” level. While the input control signal X has a logic “low(0)” level after the FSM controller 220 enters the second state ST1, the FSM controller 220 may maintain the second state ST1. While being in the second state ST1, the FSM controller 220 may output the first control signal Y1 having a logic level combination “01” and the second control signal Y2 having a logic level combination “00.” The shared logic circuit 210 may perform the syndrome operation in response to the first control signal Y1 having a logic level combination “01” and the second control signal Y2 having a logic level combination “00.”
If a logic level of the input control signal X changes from a logic “low(0)” level into a logic “high(1)” level, a state of the FSM controller 220 may change from the second state ST1 into the third state ST2. The third state ST2 may be defined as an error location polynomial operation state. After the FSM controller 220 enters the third state ST2, the input control signal X may turn into a logic “low(0)” level. While the input control signal X has a logic “low(0)” level after the FSM controller 220 enters the third state ST2, the FSM controller 220 may maintain the third state ST2. While being in the third state ST2, the FSM controller 220 may output the first control signal Y1 having a logic level combination “10” and the second control signal Y2 having a logic level combination “01.” The shared logic circuit 210 may perform the error location polynomial operation in response to the first control signal Y1 having a logic level combination “10” and the second control signal Y2 having a logic level combination “01.”
If a logic level of the input control signal X changes from a logic “low(0)” level into a logic “high(1)” level, a state of the FSM controller 220 may change from the third state ST2 into the fourth state ST3. The fourth state ST3 may be defined as an error location operation state. After the FSM controller 220 enters the fourth state ST3, the input control signal X may turn into a logic “low(0)” level. While the input control signal X has a logic “low(0)” level after the FSM controller 220 enters the fourth state ST3, the FSM controller 220 may maintain the fourth state ST3. While being in the fourth state ST3, the FSM controller 220 may output the first control signal Y1 having a logic level combination “11” and the second control signal Y2 having a logic level combination “00.” The shared logic circuit 210 may perform the error location operation in response to the first control signal Y1 having a logic level combination “11” and the second control signal Y2 having a logic level combination “00.”
If a level of the input control signal X changes from a logic “low(0)” level into a logic “high(1)” level, a state of the FSM controller 220 may change from the fourth state ST3 into the fifth state ST4. The fifth state ST4 may be defined as an error correction operation state. After the FSM controller 220 enters the fifth state ST4, the input control signal X may turn into a logic “low(0)” level. While the input control signal X has a logic “low(0)” level after the FSM controller 220 enters the fifth state ST4, the FSM controller 220 may maintain the fifth state ST4. While being in the fifth state ST4, the FSM controller 220 may output the first control signal Y1 having a logic level combination “00” and the second control signal Y2 having a logic level combination “10.” The shared logic circuit 210 may perform the error correction operation in response to the first control signal Y1 having a logic level combination “00” and the second control signal Y2 having a logic level combination “10.” If the input control signal X having a logic “high(1)” level is input to the FSM controller 220 while the FSM controller 220 maintains the fifth state ST4, a state of the FSM controller 220 may change from the fifth state ST4 into the first state ST0.
Each of the first to (n−1)th shared GF multipliers 401(1)-1, 401(2)-1, . . . , 401(n−2)-1 and 401(n−1)-1 included in the first syndrome calculating block 450-1 may receive any one among bit data D<1>, D<2>, . . . , D<n−2> and D<n−1> other than a least significant bit (LSB) D<0> in the “n”-bit codeword D<0:n−1>, and may receive any one among GF primitive elements α1, α2, . . . , α(n−2) and α(n−1). In such a case, the exponents 1, 2, . . . , (n−2) and (n−1) of the GF primitive elements input to the first syndrome calculating block 450-1 may be equal to the bit numbers 1, 2, . . . , (n−2) and (n−1) of the codeword D<0:n−1>, respectively. For example, the second bit D<1> of the codeword D<0:n−1> and the GF primitive element α1 may be input to the first shared GF multiplier 401(1)-1, and the third bit D<2> of the codeword D<0:n−1> and the GF primitive element α2 may be input to the second shared GF multiplier 401(2)-1. Similarly, the (n−1)th bit D<n−2> of the codeword D<0:n−1> and the GF primitive element α(n−2) may be input to the (n−2)th shared GF multiplier 401(n−2)-1, and the nth bit datum D<n−1> of the codeword D<0:n−1> and the GF primitive element α(n−1) may be input to the (n−1)th shared GF multiplier 401(n−1)-1.
Each of first to (n−1)th shared GF multipliers 401(1)-2t, 401(2)-2t, . . . , 401(n−2)-2t and 401(n−1)-2t included in the (2t)th syndrome calculating block 450-2t may receive any one among the bit data D<1>, D<2>, . . . , D<n−2> and D<n−1> other than the LSB D<0> in the “n”-bit codeword D<0:n−1>, and may receive any one among elements (α1)2t, (α2)2t, . . . , (α(n−2))2t and (α(n−1))2t corresponding to the GF primitive elements (α1, α2, . . . , α(n−2) and α(n−1)) to the 2tth. In such a case, the exponents 1, 2, . . . , (n−2) and (n−1) of the GF primitive elements input to the (2t)th syndrome calculating block 450-2t may be equal to the bit numbers 1, 2, . . . , (n−2) and (n−1) of the codeword D<0:n−1>, respectively. For example, the second bit D<1> of the codeword D<0:n−1> and the GF primitive element (α1)2t may be input to the first shared GF multiplier 401(1)-2t, and the third bit D<2> of the codeword D<0:n−1> and the GF primitive element (α2)2t may be input to the second shared GF multiplier 401(2)-2t. Similarly, the (n−1)th bit D<n−2> of the codeword D<0:n−1> and the GF primitive element (α(n−2))2t may be input to the (n−2)th shared GF multiplier 401(n−2)-2t, and the nth bit D<n−1> of the codeword D<0:n−1> and the GF primitive element (α(n−1))2t may be input to the (n−1)th shared GF multiplier 401(n−1)-2t.
Each of the first to (2t)th syndrome calculating blocks 450-1, . . . , and 450-2t may include a plurality of shared XOR arithmetic elements 411-1, 411-2, . . . , and 411-f, which are hierarchically arranged from a first level corresponding to the highest-order level to a fth level corresponding to the lowest-order level. The shared XOR arithmetic elements 411-1 may be at the first level, and the shared XOR arithmetic element 411-f may be at the fth level. The first to (2t)th syndrome calculating blocks 450-1, 450-2, . . . , and 450-2t have substantially the same configuration as those described above. Thus, each of the second to (2t)th syndrome calculating blocks 450-2, . . . , and 450-2t may also include a plurality of shared XOR arithmetic elements 411-1, 411-2, . . . , and 411-f, which are hierarchically arranged from a first level corresponding to the highest-order level to the fth level corresponding to the lowest-order level. Accordingly, a configuration and an operation of only the shared XOR arithmetic elements 411-1, 411-2, . . . , and 411-f included in the first syndrome calculating block 450-1 will be described in detail hereinafter.
Each of the shared XOR arithmetic elements 411-1 at the first level may perform an XOR operation on two output signals output from two of the first to (n−1)th shared GF multipliers 401(1)-1, . . . , and 401(n−1)-1, and may output the result of the XOR operation. For example, the first shared XOR arithmetic elements 411-1 at the first level (e.g., the leftmost shared XOR arithmetic elements 411-1 in the drawing) may receive output signals A and B of the first and second shared GF multipliers 401(1)-1 and 401(2)-1, and may perform an XOR operation on the output signals A and B to output the result of the XOR operation. Since one of the shared XOR arithmetic elements 411-1 receives output signals of two of the first to (n−1)th shared GF multipliers 401(1)-1, 401(2)-1, . . . , 401(n−2)-1 and 401(n−1)-1, the rightmost shared XOR arithmetic elements 411-1 at the first level in the drawing may receive an output signal of the (n−1)th shared GF multiplier 401(n−1)-1 receiving the nth bit D<n−1> (e.g., a most significant bit [MSB]) of the codeword D<0:n−1> and an output signal of the (n−2)th shared GF multiplier 401(n−2)-1 receiving the (n−1)th bit D<n−2> of the codeword D<0:n−1>. The number of the shared XOR arithmetic elements 411-1 at the first level may be expressed by an equation of “(n−1)/2” (where “n” is the number of bits in the codeword D<0:n−1>). In an embodiment, if the “n” is thirty one, each of the syndrome calculating blocks 450-1, . . . and 450-2t may have fifteen shared XOR arithmetic elements 411-1 at the first level.
Each of the shared XOR arithmetic elements 411-2 at the second level may perform an XOR operation on two output signals output from two of the shared XOR arithmetic elements 411-1 at the first level, and may output the result of the XOR operation. The number of the shared XOR arithmetic elements 411-2 at the second level may be expressed by an equation of “z1/2” if the number of the shared XOR arithmetic elements 411-1 at the first level is an even number “z1.” If the number of the shared XOR arithmetic elements 411-1 at the first level is an odd number “z2,” the number of the shared XOR arithmetic elements 411-2 at the second level may be expressed by an equation of “(z2−1)/2.” In such a case, none of the shared XOR arithmetic elements 411-2 at the second level receives an output signal of one (e.g., a rightmost XOR arithmetic element) of the shared XOR arithmetic elements 411-1 at the first level. In an embodiment, if the “n” is thirty one, each of the syndrome calculating blocks 450-1, . . . and 450-2t may have seven second shared XOR arithmetic elements 411-2 at the second level ((15−1)/2=7) because the number of the first shared XOR arithmetic elements 411-1 at the first level is fifteen, which is an odd number.
Configurations and operations of the XOR arithmetic elements at a third level and a fourth level may be the same as those described above. Only a single shared XOR arithmetic element 411-(f−1) may be at the (f−1)th level, and only a single shared XOR arithmetic element 411-f may also be at the fth level corresponding to the last level. The (f−1)th shared XOR arithmetic element 411-(f−1) may perform an XOR operation on output signals of the XOR arithmetic elements at a previous level (e.g., (f−2)th level) of the (f−1)th level, and may output the result of the XOR operation. The fth shared XOR arithmetic element 411-f may perform an XOR operation on an output signal of the (f−1)th shared XOR arithmetic element 411-(f−1) and the LSB D<0> of the codeword D<0:n−1>, and may output the result of the XOR operation as a first syndrome S1. Similarly, in the (2t)th syndrome calculating block 450-2t, the fth shared XOR arithmetic element 411-f may perform an XOR operation on an output signal of the (f−1)th shared XOR arithmetic element 411-(f−1) and the LSB D<0> of the codeword D<0:n−1>, and may output the result of the XOR operation as a (2t)th syndrome S2t.
Since each of the first to (2t)th syndrome calculating blocks 450-1, 450-2, . . . , and 450-2t includes “(n−1)” shared XOR arithmetic elements, the number of all of the shared XOR arithmetic elements used in the syndrome operation may be expressed by an equation of “2t(n−1).” In an embodiment, if the maximum number “t” of error correctable bits is two, and if the “n” (i.e., the number of bits included in the codeword) is thirty one, the number of all of the shared XOR arithmetic elements used in the syndrome calculator 211 may be one hundred and twenty (2×2×30=120). In an embodiment, if the maximum number “t” of error correctable bits is two, and if the “n” is thirty, the number of all of the shared XOR arithmetic elements used in the syndrome calculator 211 may be one hundred and sixteen (2×2×29=116).
First, referring to
The second MUX 501-2 may have an input terminal, a first state input terminal ST21, a second state input terminal ST22, and a third state input terminal ST23. The second MUX 501-2 may receive the first control signal Y1 from the FSM controller 220 through the input terminal. The second MUX 501-2 may receive the GF primitive element α1 necessary to the syndrome operation through the first state input terminal ST21. The second MUX 501-2 may receive an error location polynomial coefficient δ1(r), which will be used for the error location polynomial operation, through the second state input terminal ST22. The second MUX 501-2 may receive the GF primitive element α1, which will be used for the error location operation, through the third state input terminal ST23. The second MUX 501-2 may output one of the GF primitive element α1 and the error location polynomial coefficient δ1(r) according to the first control signal Y1.
If the first control signal Y1 output from the FSM controller 220 has a logic level combination “01,” both of the first and second MUXs 501-1 and 501-2 may operate in a syndrome operation mode. That is, the first MUX 501-1 may output the second bit D<1> of the codeword D<0:n−1> input through the first state input terminal ST11 in response to the first control signal Y1 having a logic level combination “01,” and the second MUX 501-2 may output the GF primitive element α1 input through the first state input terminal ST21 in response to the first control signal Y1 having a logic level combination “01.” The second bit D<1> of the codeword D<0:n−1> output from the first MUX 501-1 and the GF primitive element α1 output from the second MUX 501-2 may be input to the GF multiplier 501-3. The GF multiplier 501-3 may perform a GF multiplying operation on the second bit D<1> of the codeword D<0:n−1> and the GF primitive element α1 to generate the output signal A (D<1>·α1).
Next, referring to
The second MUX 502-2 may have an input terminal, a first state input terminal ST21, a second state input terminal ST22, and a third state input terminal ST23. The second MUX 502-2 may receive the first control signal Y1 from the FSM controller 220 through the input terminal. The second MUX 502-2 may receive the GF primitive element α2, which will be used for the syndrome operation, through the first state input terminal ST21. The second MUX 502-2 may receive a control signal θ0(r), which will be used for the error location polynomial operation, through the second state input terminal ST22. The second MUX 502-2 may receive the GF primitive element α2, which will be used for the error location operation, through the third state input terminal ST23. The second MUX 502-2 may output one of the GF primitive element α2 and the control signal θ0(r) according to the first control signal Y1.
As illustrated in
Each of the remaining shared GF multipliers 401(3)-1, . . . , 401(n−2)-1, 401(n−1)-1, . . . , 401(1)-2t, 401(2)-2t, . . . , 401(n−2)-2t and 401(n−1)-2t included in the syndrome calculator 211 may have the same or substantially the same configuration as the first shared GF multiplier 401(1)-1 illustrated in
If the number of bits included in the codeword D<0:n−1> is “n” and the bits of the codeword D<0:n−1> are r0, r1, r2, . . . , rn−2 and rn−1, syndromes Si may be calculated by the following equation 1.
Si=r0+r1αi+r2(α2)i+r3(α3)i+ . . . +rn−1(α(n−1))i (Equation 1)
In the equation 1, a variable number “i”=1, 2, . . . or 2t−1, and equation, and “t” denotes the maximum number of error-correctable bits.
If the variable number “i” in the syndrome equation 1 is one, the shared GF multipliers 401(1)-1, 401(2)-1, . . . , 401(n−2)-1 and 401(n−1)-1 in the first syndrome calculating block 450-1 of the syndrome calculator 211 may calculate and output values of r1α1, r2α2, . . . , rn−2αn−2 and rn−1αn−1, respectively. Similarly, if the variable “i” in the above syndrome equation 1 is “2t,” the shared GF multipliers 401(1)-2t, 401(2)-2t, . . . , 401(n−2)-2t and 401(n−1)-2t in the (2t)th syndrome calculating block 450-2t of the syndrome calculator 211 may calculate and output values of r1(α1)2t, r2(α2)2t, . . . , rn−2(αn−2)2t and rn−1(αn−1)2t, respectively.
The second MUX 601-2 may have an input terminal, a first state input terminal ST21, a second state input terminal ST22, and a third state input terminal ST23. The second MUX 601-2 may receive the first control signal Y1 from the FSM controller 220 through the input terminal. The second MUX 601-2 may receive an output signal B of the second shared GF multiplier 401(2)-1 through the first state input terminal ST21. The second MUX 601-2 may receive an output signal D of the shared GF multiplier through the second state input terminal ST22 in the error location polynomial operation mode. The second MUX 601-2 may receive an output signal E of the shared GF multiplier through the third state input terminal ST23 during an error location operation. The second MUX 601-2 may output one of the output signals B, D, and E according to the first control signal Y1.
As illustrated in
Each of the remaining shared XOR arithmetic elements may have the same configuration as the first shared XOR arithmetic elements 411-1 except the data input to the first state input terminals ST11 of the first MUXs 601-1 and the first state input terminals ST21 of the second MUXs 601-2. If the variable number “i” in the syndrome equation 1 is one, the shared XOR arithmetic element 411-f at the fth level corresponding to the last level of the first syndrome calculating block 450-1 of
First, as illustrated in
The shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 belonging to the first group may receive in common a control signal γ(r) (where “r” is 0, 1, . . . or 2t−1), which will be used for the error location polynomial operation, and the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 belonging to the first group may also receive the error location polynomial coefficients δ1(r), δ2(r), δ3(r), . . . , δ3t+1(r) (where “r” is 0, 1, . . . or 2t−1), respectively. The first shared GF multiplier 431(1)-1 among the first group of the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 may perform a GF multiplying operation on the control signal γ(r) and the error location polynomial coefficient ι1(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The second shared GF multiplier 431(2)-1 among the first group of the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 may perform a GF multiplying operation on the control signal γ(r) and the error location polynomial coefficient δ2(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The third shared GF multiplier 431(3)-1 among the first group of the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 may perform a GF multiplying operation on the control signal γ(r) and the error location polynomial coefficient δ3(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The (3t+1)th shared GF multiplier 431(3t+1)-1 among the first group of the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 may perform a GF multiplying operation on the control signal γ(r) and the error location polynomial coefficient δ3t+1(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation.
The second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may receive an error location polynomial coefficient δ0(r) (where, r=0, 1, . . . or 2t−1) in common, and the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may also receive control signals θ0(r), θ1(r), θ2(r), . . . , θ3t(r) (where “r” is 0, 1, . . . or 2t−1), respectively, necessary for the error location polynomial operation. The first shared GF multiplier 431(1)-2 among the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may perform a GF multiplying operation on the error location polynomial coefficient δ0(r) and the control signal θ0(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The second shared GF multiplier 431(2)-2 among the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may perform a GF multiplying operation on the error location polynomial coefficient δ0(r) and the control signal θ1(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The third shared GF multiplier 431(3)-2 among the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may perform a GF multiplying operation on the error location polynomial coefficient δ0(r) and the control signal θ2(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation. The (3t+1)th shared GF multiplier 431(3t+1)-2 among the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 may perform a GF multiplying operation on the error location polynomial coefficient δ0(r) and the control signal θ3t(r) (where “r” is 0, 1, . . . or 2t−1) to output the result of the GF multiplying operation.
The number of the shared XOR arithmetic elements in the first error location polynomial calculator 212A may be “(3t+1).” That is, the first error location polynomial calculator 212A may include first to (3t+1)th shared XOR arithmetic elements 441-1(1), 441-1(2), 441-1(3), . . . , and 441-1(3t+1). Each of the first to (3t+1)th shared XOR arithmetic elements 441-1(1), 441-1(2), 441-1(3), . . . , and 441-1(3t+1) may perform an XOR operation on an output signal of one of the first group of the shared GF multipliers 431(1)-1, 431(2)-1, 431(3)-1, . . . , and 431(3t+1)-1 and an output signal of one of the second group of the shared GF multipliers 431(1)-2, 431(2)-2, 431(3)-2, . . . , and 431(3t+1)-2 to output one of error location polynomial coefficients δ0(r+1), δ1(r+1), δ2(r+1), . . . , and δ3t(r+1) (where “r” is 0, 1, . . . , or 2t−1).
The first shared XOR arithmetic element 441-1(1) may perform an XOR operation on an output signal C of the first shared GF multiplier 431(1)-1 belonging to the first group and an output signal D of the first shared GF multiplier 431(1)-2 belonging to the second group to output the error location polynomial coefficient δ0(r+1). The second shared XOR arithmetic element 441-1(2) may perform an XOR operation on an output signal of the second shared GF multiplier 431(2)-1 belonging to the first group and an output signal of the second shared GF multiplier 431(2)-2 belonging to the second group to output the error location polynomial coefficient δ1(r+1). The third shared XOR arithmetic element 441-1(3) may perform an XOR operation on an output signal of the third shared GF multiplier 431(3)-1 belonging to the first group and an output signal of the third shared GF multiplier 431(3)-2 belonging to the second group to output the error location polynomial coefficient δ2(r+1). The (3t+1)th shared XOR arithmetic element 441-1(3t+1) may perform an XOR operation on an output signal of the (3t+1)th shared GF multiplier 431(3t+1)-1 belonging to the first group and an output signal of the (3t+1)th shared GF multiplier 431(3t+1)-2 belonging to the second group to output the error location polynomial coefficient δ3t(r+1).
As illustrated in
The first shared MUX 451 may have a first input terminal receiving the error location polynomial coefficient δ0(r), a second input terminal receiving the control signal γ(r), and an output terminal outputting the control signal γ(r+1). The first shared MUX 451 may output the error location polynomial coefficient δ0(r) or the control signal γ(r) as the control signal γ(r+1) in response to a MUX control signal Mcont. That is, the control signal γ(r+1) output from the first shared MUX 451 may have the same value as the error location polynomial coefficient δ0(r) or the control signal γ(r).
The second shared MUX 452 may have a first input terminal receiving a control signal −k(r)−1, a second input terminal receiving a control signal k(r)+1, and an output terminal outputting a control signal k(r+1) (where “r” is 0, 1, . . . , or 2t−1). The second shared MUX 452 may output the control signal −k(r)−1 or the control signal k(r)+1 as the control signal k(r+1) in response to the MUX control signal Mcont. That is, the control signal k(r+1) output from the second shared MUX 452 may have the same value as the control signal −k(r)−1 or the control signal k(r)+1.
The third shared MUX 453 may have a first input terminal receiving an error location polynomial coefficient δi+1(r), a second input terminal receiving a control signal θi(r), and an output terminal outputting a control signal θi(r+1) (where “i” is 0, 1, . . . , 3t, and “r” is 0, 1, . . . , or 2t−1). The third shared MUX 453 may output the error location polynomial coefficient δi+1(r) or the control signal θi(r) as the control signal θi(r+1) in response to the MUX control signal Mcont. That is, the control signal θi(r+1) output from the third shared MUX 453 may have the same value as the error location polynomial coefficient δi+1(r) or the control signal θi(r).
The first to third shared MUXs 451, 452, and 453 may receive the MUX control signal Mcont in common. A level of the MUX control signal Mcont may be determined according to whether a condition of “δ0(r)≠0 and k(r)≥0” is satisfied. In an embodiment, if the condition of “δ0(r)≠0 and k(r)≥0” is satisfied, the MUX control signal Mcont may have a logic “low(0)” level. In such a case, the first to third shared MUXs 451, 452, and 453 may output the error location polynomial coefficient δ0(r), the control signal −k(r)−1, and the error location polynomial coefficient δi+1(r), which are input through the first input terminals of the first to third shared MUXs 451, 452, and 453, respectively. In contrast, if the condition of “δ0(r)≠0 and k(r)≥0” is not satisfied, the MUX control signal Mcont may have a logic “high(1)” level. In such a case, the first to third shared MUXs 451, 452, and 453 may output the control signal γ(r), the control signal k(r)+1, and the control signal θi(r), which are input through the second input terminals of the first to third shared MUXs 451, 452, and 453, respectively. The control signal γ(r+1), the control signal k(r+1), and the control signal θi(r+1) output from the first to third shared MUXs 451, 452, and 453 may be used as input data of the first and second groups of the shared GF multipliers in the first error location polynomial calculator 212A.
First, referring to
As illustrated in
Next, referring to
As illustrated in
Referring to
In
In
An LSB X(α_0) of the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may be generated by the shared XOR arithmetic elements 461(1)-1, 461(1)-2, . . . , and 461(1)-t belonging to the first group. A second bit X(α_1) of the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may be generated by the shared XOR arithmetic elements 461(2)-1, 461(2)-2, . . . , and 461(2)-t belonging to the second group and the shared GF multipliers 471(1)-1, 471(1)-2, . . . , and 471(1)-t belonging to the first group. A third bit X(α_2) of the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may be generated by the shared XOR arithmetic elements 461(3)-1, 461(3)-2, . . . , and 461(3)-t belonging to the third group and the shared GF multipliers 471(2)-1, 471(2)-2, . . . , and 471(2)-t belonging to the second group. Similarly, an nth bit X(α_n−1) of the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may be generated by the shared XOR arithmetic elements 461(n)-1, 461(n)-2, . . . , and 461(n)-t belonging to the nth group and the shared GF multipliers 471(n−1)-1, 471(n−1)-2, . . . , and 471(n−1)-t belonging to the (n−1)th group.
The error location polynomial coefficient δ0(t) may be input to the first shared XOR arithmetic elements 461(1)-1, 461(2)-1, 461(3)-1, . . . , and 461(n)-1 belonging to the first to nth groups of the shared XOR arithmetic elements. In each group of the shared XOR arithmetic elements, an Mth shared XOR arithmetic element may receive an output signal of an (M−1)th shared XOR arithmetic element (where “M” is a natural number larger than or equal to two). For example, the second shared XOR arithmetic element 461(1)-2 belonging to the first group of the shared XOR arithmetic elements may receive an output signal of the first shared XOR arithmetic element 461(1)-1 belonging to the first group of the shared XOR arithmetic elements. In addition, an output signal of the second shared XOR arithmetic element 461(1)-2 belonging to the first group of the shared XOR arithmetic elements may be input to the third shared XOR arithmetic element 461(1)-3 belonging to the first group of the shared XOR arithmetic elements. Moreover, the last (i.e., the tth) shared XOR arithmetic element 461(1)-t belonging to the first group of the shared XOR arithmetic elements may receive an output signal of the (n−1)th shared XOR arithmetic element 461(1)-(t-1) belonging to the first group of the shared XOR arithmetic elements. An output signal of the tth shared XOR arithmetic element 461(1)-t belonging to the first group of the shared XOR arithmetic elements may correspond to the LSB X(α_0) of the “n”-bit output data.
An output signal of the first shared GF multiplier 471(1)-1 belonging to the first group of the shared GF multipliers may be input to the first shared XOR arithmetic element 461(2)-1 belonging to the second group of the shared XOR arithmetic elements. An output signal of the second shared GF multiplier 471(1)-2 belonging to the first group of the shared GF multipliers may be input to the second shared XOR arithmetic element 461(2)-2 belonging to the second group of the shared XOR arithmetic elements. In this way, an output signal of the tth shared GF multiplier 471(1)-t belonging to the first group of the shared GF multipliers may be input to the tth shared XOR arithmetic element 461(2)-t belonging to the second group of the shared XOR arithmetic elements. Output signals of the shared GF multipliers 471(2)-1, 471(2)-2, . . . , and 471(2)-t belonging to the second group of the shared GF multipliers may be input to the second shared XOR arithmetic elements 461(3)-1, 461(3)-2, . . . , and 461(3)-t belonging to the third group of the shared XOR arithmetic elements, respectively. Similarly, output signals of the shared GF multipliers 471(2)-1, 471(2)-2, . . . , and 471(2)-t belonging to the (n−1)th group of the shared GF multipliers may be input to the shared XOR arithmetic elements 461(n)-1, 461(n)-2, . . . , and 461(n)-t belonging to the nth group of the shared XOR arithmetic elements, respectively.
Hereinafter, a generation procedure of the LSB X(α_0) will be descried. The error location polynomial coefficients δ0(t) and δ1(t) may be input to the first shared XOR arithmetic element 461(1)-1 belonging to the first group of the shared XOR arithmetic elements. The first shared XOR arithmetic element 461(1)-1 belonging to the first group of the shared XOR arithmetic elements may perform an XOR operation on the error location polynomial coefficients δ0(t) and δ1(t) to output the result of the XOR operation to the second shared XOR arithmetic element 461(1)-2 belonging to the first group of the shared XOR arithmetic elements. The second shared XOR arithmetic element 461(1)-2 belonging to the first group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the first shared XOR arithmetic element 461(1)-1 and the error location polynomial coefficient δ2(t) to output the result of the XOR operation to the third shared XOR arithmetic element 461(1)-3 belonging to the first group of the shared XOR arithmetic elements. In this way, the tth shared XOR arithmetic element 461(1)-t belonging to the first group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the (t−1)th shared XOR arithmetic element 461(1)-(t-1) and the error location polynomial coefficient δt(t) to output the result of the XOR operation as the LSB X(α_0).
Hereinafter, a generation procedure of the second bit X(α_1) will be descried. The first shared GF multiplier 471(1)-1 belonging to the first group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δ1(t) and the GF primitive element α1 to output the result of the GF multiplying operation to the first shared XOR arithmetic element 461(2)-1 belonging to the second group of the shared XOR arithmetic elements. The first shared XOR arithmetic element 461(2)-1 belonging to the second group of the shared XOR arithmetic elements may perform an XOR operation on an output signal E of the first shared GF multiplier 471(1)-1 and the error location polynomial coefficient δ0(t) to output the result of the XOR operation to the second shared XOR arithmetic element 461(2)-2 belonging to the second group of the shared XOR arithmetic elements. The second shared GF multiplier 471(1)-2 belonging to the first group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δ2(t) and the GF primitive element (α1)2 to output the result of the GF multiplying operation to the second shared XOR arithmetic element 461(2)-2 belonging to the second group of the shared XOR arithmetic elements. The second shared XOR arithmetic element 461(2)-2 belonging to the second group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the second shared GF multiplier 471(1)-2 and an output signal of the first shared XOR arithmetic element 461(2)-1 to output the result of the XOR operation to the third shared XOR arithmetic element belonging to the second group of the shared XOR arithmetic elements. In this way, the tth shared GF multiplier 471(1)-t belonging to the first group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δt(t) and the GF primitive element (α1)t to output the result of the GF multiplying operation to the tth shared XOR arithmetic element 461(2)-t belonging to the second group of the shared XOR arithmetic elements. The tth shared XOR arithmetic element 461(2)-t belonging to the second group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the tth shared GF multiplier 471(1)-t and an output signal of the (t−1)th shared XOR arithmetic element 461(2)-(t-1) to output the result of the XOR operation as the second bit X(α_1).
Similarly, a generation procedure of the nth bit X(α_n−1) will be descried hereinafter. The first shared GF multiplier 471(n−1)-1 belonging to the (n−1)th group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δ1(t) and the GF primitive element αn−1 to output the result of the GF multiplying operation to the first shared XOR arithmetic element 461(n)-1 belonging to the nth group of the shared XOR arithmetic elements. The first shared XOR arithmetic element 461(n)-1 belonging to the nth group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the first shared GF multiplier 471(n−1)-1 and the error location polynomial coefficient δ0(t) to output the result of the XOR operation to the second shared XOR arithmetic element 461(n)-2 belonging to the nth group of the shared XOR arithmetic elements. The second shared GF multiplier 471(n−1)-2 belonging to the (n−1)th group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δ2(t) and the GF primitive element (αn−1)2 to output the result of the GF multiplying operation to the second shared XOR arithmetic element 461(n)-2 belonging to the nth group of the shared XOR arithmetic elements. The second shared XOR arithmetic element 461(n)-2 belonging to the nth group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the second shared GF multiplier 471(n−1)-2 and an output signal of the first shared XOR arithmetic element 461(n)-1 to output the result of the XOR operation to the third shared XOR arithmetic element belonging to the nth group of the shared XOR arithmetic elements. In this way, the tth shared GF multiplier 471(n−1)-t belonging to the (n−1)th group of the shared GF multipliers may perform a GF multiplying operation on the error location polynomial coefficient δt(t) and the GF primitive element (αn−1)t to output the result of the GF multiplying operation to the tth shared XOR arithmetic element 461(n)-t belonging to the nth group of the shared XOR arithmetic elements. The tth shared XOR arithmetic element 461(n)-t belonging to the nth group of the shared XOR arithmetic elements may perform an XOR operation on an output signal of the tth shared GF multiplier 471(n−1)-t and an output signal of the (t−1)th shared XOR arithmetic element 461(n)-(t−1) to output the result of the XOR operation as the nth bit X(α_n−1).
A logic level of an erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) output from the error location calculator 213 may be set according the embodiments. For example, in an embodiment, an erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may have a logic “high(1)” level and a non-erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may have a logic “low(0)” level. Alternatively, an erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may have a logic “low(0)” level and a non-erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may have a logic “high(1)” level.
First, referring to
As illustrated in
Next, referring to
As illustrated in
Referring to
Each of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n) may have a first input terminal, a second input terminal, a third input terminal, and an output terminal. Data of the codeword D<0:n−1> may be input to the first input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. That is, the data bits from the LSB D<0> to the MSB D<n−1> of the codeword D<0:n−1> may be input to the first input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. Inverted data bits of the codeword D<0:n−1> may be input to the second input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. That is, inverted data bits from an inverted data bit DB<0> to an inverted data bit DB<n−1> of the data bits from the LSB D<0> to the MSB D<n−1> constituting the codeword D<0:n−1> may be input to the second input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. The “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) may be input to the third input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. That is, data bits from the LSB X(α_0) to the MSB X(α_n−1) of the “n”-bit output data may be input to the third input terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively. A decoded output signal may be output through the output terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n). That is, an LSB DEC_OUT<0> to an MSB DEC_OUT<n−1> of the decoded output signal may be output through the output terminals of the first to nth shared MUXs 454(1), . . . , 454(n−1) and 454(n), respectively.
An error correction operation will be described hereinafter in conjunction with an example in which an erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) output from the error location calculator 213 has a logic “high(1)” level and a non-erroneous bit among the “n”-bit output data X(α_0), X(α_1), X(α_2), . . . , and X(α_n−1) output from the error location calculator 213 has a logic “low(0)” level. If the LSB and the (n−1)th bit of the codeword D<0:n−1> are erroneous bits, the LSB X(α_0) having a logic “high(1)” level may be input to the third input terminal of the first shared MUX 454(1) and the (n−1)th bit X(α_n−2) having a logic “high(1)” level may be input to the third input terminal of the (n−1)th shared MUX 454(n−1). In such a case, the output data having a logic “low(0)” level may be input to the third input terminals of the remaining shared MUXs 454(2), . . . , 454(n−2) and 454(n). The first shared MUX 454(1) may output the inverted LSB DB<0> of the codeword D<0:n−1> input through the second input terminal of the first shared MUX 454(1) as the LSB DEC_OUT<0> of the decoded output signal to correct an error of the LSB of the codeword D<0:n−1>. Similarly, the (n−1)th shared MUX 454(n−1) may output the inverted (n−1)th bit DB<n−2> of the codeword D<0:n−1> input through the second input terminal of the (n−1)th shared MUX 454(n−1) as the (n−1)th bit DEC_OUT<n−2> of the decoded output signal to correct an error of the (n−1)th bit of the codeword D<0:n−1>. In contrast, each of the remaining shared MUXs 454(2), . . . , 454(n−2) and 454(n) may output the bit of the codeword D<0:n−1> input through the first input terminal thereof as the corresponding bit of the decoded output signal.
As described above, in terms of the number of the shared XOR arithmetic elements, “2t×(n−1)” shared XOR arithmetic elements may be used to perform XOR operations as a part of the syndrome operation, and “3t+1” shared XOR arithmetic elements may be used to perform XOR operations as a part of the error location polynomial operation. In addition, “t×n” shared XOR arithmetic elements may be used to perform XOR operations as a part of the error location operation. Thus, if logic circuits are not shared, “2t×(n−1)+(3t+1)+t×n” shared XOR arithmetic elements may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. However, according to the embodiments using the shared logic circuit 210, only “2t×(n−1)” shared XOR arithmetic elements may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. For example, if the number “n” of the bits included in the codeword is thirty one and the maximum number “t” of error correctable bits is two, one hundred and eighty nine XOR arithmetic elements may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation if the shared logic circuit 210 is not used. However, according to the embodiments using the shared logic circuit 210, only one hundred and twenty shared XOR arithmetic elements may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. As a result, according to the embodiments, the number of the XOR arithmetic elements may be reduced by about 36.5%.
In terms of the number of the shared GF multipliers, “2t×(n−1)” shared GF multipliers may be used to perform the syndrome operation, and “2×(3t+1)” shared GF multipliers may be used to perform the error location polynomial operation. In addition, “t×(n−1)” shared GF multipliers may be used to perform the error location operation. Thus, if logic circuits are not shared, “2t×(n−1)+2×(3t+1)+t×(n−1)” shared GF multipliers may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. However, according to the embodiments using the shared logic circuit 210, only “2t×(n−1)” shared GF multipliers may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. For example, if the number “n” of the bits included in the codeword is thirty one and the maximum number “t” of error correctable bits is two, one hundred and ninety six GF multipliers may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation if the shared logic circuit 210 is not used. However, according to the embodiments using the shared logic circuit 210, only one hundred and twenty shared GF multipliers may be required to perform the syndrome operation, the error location polynomial operation, and the error location operation. As a result, according to the embodiments, the number of the GF multipliers may be reduced by about 38.8%.
In terms of the number of the shared MUXs, three shared MUXs may be used to perform the error location polynomial operation, and “n” shared MUXs may be used to perform the error correction operation. Thus, if the shared logic circuit 210 is not used, “3+n” shared MUXs may be required to perform the error location polynomial operation and the error correction operation. However, according to the embodiments using the shared logic circuit 210, only “n” shared MUXs may be required to perform the error location polynomial operation and the error correction operation. For example, if the number “n” of the bits included in the codeword is thirty one and the maximum number “t” of error correctable bits is two, thirty four MUXs may be required to perform the error location polynomial operation and the error correction operation if the shared logic circuit 210 is not used. However, according to the embodiments using the shared logic circuit 210, only thirty one shared MUXs may be required to perform the error location polynomial operation and the error correction operation. As a result, according to the embodiments, the number of the MUXs may be reduced by about 9%.
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-2017-0004429 | Jan 2017 | KR | national |
Number | Name | Date | Kind |
---|---|---|---|
5463642 | Gibbs et al. | Oct 1995 | A |
6374383 | Weng | Apr 2002 | B1 |
7058876 | Ireland | Jun 2006 | B1 |
7096408 | Ireland | Aug 2006 | B1 |
20030101406 | Song | May 2003 | A1 |
20030106014 | Dohmen | Jun 2003 | A1 |
20030142764 | Keevill | Jul 2003 | A1 |
20040010742 | Williamson | Jan 2004 | A1 |
20100251068 | Lin | Sep 2010 | A1 |
20140181614 | Kwok | Jun 2014 | A1 |
20150128011 | Rochman | May 2015 | A1 |
20170288700 | Park | Oct 2017 | A1 |
20180152203 | Kim | May 2018 | A1 |
Number | Date | Country | |
---|---|---|---|
20180198468 A1 | Jul 2018 | US |