This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2011-199424, filed on Sep. 13, 2011, the entire contents of which are incorporated herein by reference.
Embodiments described herein relate generally to an error detecting device and a memory system.
In a semiconductor storage device such as a flash memory, errors are sometimes included in a read value. Therefore, an error detecting device is often incorporated into the controller of the semiconductor storage device. In recent years, storage capacity of the semiconductor storage device has been considerably increasing, and consumption current of the error detecting device has been correspondingly increasing. Therefore, an error detecting device which operates with low consumption current is required.
In general, according to one embodiment, an error detecting device includes a syndrome processor, an error locator polynomial generator, and a search processor. The syndrome processor is configured to generate syndrome values based on received data. The error locator polynomial generator is configured to generate coefficients for an error locator polynomial based on the syndrome values. The search processor configured to detect an error location by calculating a root of the error locator polynomial. The search processor has a clock controller, a buffer, a polynomial generator, and a first judging module. The clock controller is configured to output or stop a clock signal according to at least one of the coefficients. The buffer is configured to drive the clock signal outputted form the clock controller. The polynomial generator is configured to calculate a part of the error locator polynomial in synchronization with the clock signal driven by the buffer. The first judging module is configured to calculate the root of the error locator polynomial based on the part of the error locator polynomial.
Hereinafter, embodiments will be concretely explained referring to the drawings.
The syndrome processor 1 decodes received data including the original data and parity data, and generates “2t” syndrome values s1 to s2t. When all of the syndrome values s1 to s2t are zero, there is no error, while when a syndrome value which is not zero is found, the received data includes an error.
The error locator polynomial generator 2 generates an error locator polynomial σ(z) by computing sigma values σ1 to σt using the syndrome values s1 to s2t, based on Peterson method, Euclidean method, or BM method, for example. The sigma values σ1 to σt are coefficients of the error locator polynomial σ(z) expressed in the following Formula (1).
Further, the error locator polynomial generator 2 can estimate the number of errors in the received data, based on the highest degree of the error locator polynomial σ(z). The estimated value of the number of errors is supplied to the Chien search processor 3.
Referring back to
In the Chien search process, each input module 31k sequentially calculates its corresponding term σkαik in the order of i=0, 1, . . . t, and the judging module 32 judges whether or not αi is a root of the error locator polynomial σ(z) on each occasion. When the calculation is sequentially performed until i=received data size and the number of times the root was found is less than the estimated value of the number of errors, it is judged that there are errors beyond correcting capability “t”, and the error is treated as uncorrectable.
Hereinafter, the Chien search processor 3, which is one of the characteristic features of the present embodiment, will be explained in detail. Since the input modules 311 to 31t have a similar internal configuration, explanation will be given on the input module 31k.
The clock controller 11k stops or outputs a clock signal CLK to supply it to the buffer 12k depending on the sigma value σk.
More specifically, the clock controller 11k has: a σ-value judging module 111k; a selector 112k; a flip-flop 113k; and a gated clock generator 114k.
The σ-value judging module 111k outputs High when the sigma value σk is 0, and outputs Low when the sigma value σk is not 0. The selector 112k selects and outputs the output signal of the σ-value judging module 111k when a start signal ST is High, and selects and outputs the output signal of the flip-flop 113k when the start signal ST is Low. The flip-flop 113k holds the output signal of the selector 112k in synchronization with the clock signal CLK, and outputs it as a clock stop signal CLK Disable. The gated clock generator 114k outputs, as a gated clock signal G-CLK, the clock signal CLK switching periodically at a predetermined cycle when the clock stop signal CLK Disable is Low, and stops the gated clock signal G-CLK when the clock stop signal CLK Disable is High.
Note that the start signal ST and the clock signal CLK are commonly inputted into clock controllers 111 to 11t in the input modules 311 to 31t.
The buffer 12k is a CTS (Clock Tree Synthesis) circuit for driving the gated clock signal G-CLK outputted from the clock controller 11k so that a plurality of flip-flops in the polynomial generator 13k operate in synchronization with each other. Due to the switching of the gated clock signal G-CLK, consumption current flows through the buffer 12k.
The polynomial generator 13k computes a part of the error locator polynomial σ(z), in synchronization with the gated clock signal G-CLK driven by the buffer 12k.
More specifically, the polynomial generator 13k has: a selector 131k; a flip-flop 132k; a multiplier 133k; and a flip-flop 134k. The selector 131k selects and outputs the sigma value σk when the start signal ST is High, and selects and outputs the output signal of the multiplier 133k when the start signal ST is Low. The flip-flop 132k holds the inputted value, in synchronization with the gated clock signal G-CLK driven by the buffer 12k. The multiplier 133k multiplies the inputted value by σk. The flip-flop 134k outputs, to the judging module 32, the output signal of the multiplier 133k, in synchronization with the gated clock signal G-CLK driven by the buffer 12k.
Hereinafter, processing operation performed by the Chien search processor 3 will be explained as to the case where the sigma value σk is not 0 and the case where the sigma value σk is 0, separately.
This makes the flip-flop 132k operate, and the multiplier 133k generates σkαk first by multiplying σk by αk. σkαk is outputted to the judging module 32 of
After that, σkαk outputted from the multiplier 133k is inputted into the multiplier 133k through the selector 131k and the flip-flop 132k, and the multiplier 133k further multiplies σk by σkαk to generate σkα2k. Then, the judging module 32 judges whether or not α2k is a root of the error locator polynomial σ(z). Thereafter, whether or not αi (i=1 to t) is a root of the error locator polynomial σ(z) is sequentially judged in a similar way. As stated above, αi and an error location correspond to each other on a one-to-one basis, and thus an error location can be detected from a root of the error locator polynomial σ(z).
Next, processing operation performed by the input module 31k when the sigma value σk is 0 will be explained. When the sigma value σk is 0, the polynomial generator 13k should continuously output 0. However, if the clock controller 11k is not arranged in the input module 31k, the switching gated clock signal G-CLK is inputted into the buffer 12k similarly to
In view of this problem, the input module 31k of the present embodiment performs the following operation to reduce useless consumption current.
As a result, the gated clock signal G-CLK stops switching, thereby reducing consumption current of the buffer 12k.
As stated above, in the first embodiment, the clock controller 11k is arranged, and when the sigma value σk is not 0, the clock controller 11k supplies the clock signal to the buffer 12k to judge the root of the error locator polynomial σ(z), while when the sigma value σk is 0, the clock controller 11k stops supplying the gated clock signal G-CLK to the buffer 12k. Therefore, consumption current flowing through the buffer 12k can be reduced.
In the above first embodiment, one clock controller 11k is arranged for one input module 31k. On the other hand, in a second embodiment to be explained hereinafter, one clock controller is arranged for a plurality of input modules.
In the present embodiment, the sigma values σ1 to σt are divided into some coefficient groups each including a plurality of sigma values. For example, each coefficient group includes four sigma values such as σ1 to σ4, σ5 to σ8, etc. Then, one clock controller is arranged per one coefficient group. Hereinafter, explanation will be given on input modules 31N′ to 31M′ corresponding to a coefficient group including sigma values σN to σM (N<M≦t).
The clock controller 11N′ has: σ-value judging modules 111N to 111M; an AND circuit 115N; a selector 112N; a flip-flop 113N; and a gated clock generator 114N. The AND circuit 115N outputs the logical product of the output signals from the σ-value judging modules 111N to 111M. That is, the AND circuit 115N outputs High when all of the sigma values σN to σM are 0, and outputs Low when at least one of them is not 0. The other aspects of the operation are similar to
When all of the sigma values σN to σM are 0, each of polynomial generators 13N to 13M should continuously output 0. Therefore, the clock controller 11N′ stops the gated clock signal G-CLK supplied to buffers 12N to 12M, thereby reducing consumption current.
On the other hand, when at least one of the sigma values σN to σM is not 0, the polynomial generators 13N to 13M operate and the judging module 32 judges the root of the error locator polynomial σ(z). For example, when the sigma values σN to σM−1 are not 0 and σM is 0, useless consumption current may flow through the buffer 12M which should continuously output 0, the buffer 12M corresponding to the sigma value σM, which is different from the first embodiment where the clock controller 11k is arranged for each sigma value σk. However, the area size of the error detecting device can be reduced.
Note that the number of sigma values included in each coefficient group may be arbitrarily determined. For example, when a larger number of sigma values are included in each coefficient group, the area size of the error detecting device can be further reduced.
As stated above, in the second embodiment, one clock controller is arranged for a plurality of sigma values. Therefore, consumption current can be reduced with the error detecting device 100 having a smaller size.
In the above first and second embodiments, the gated clock signal G-CLK inputted into the buffer 12k is controlled based on whether or not each sigma value σk is 0. On the other hand, in a third embodiment to be explained hereinafter, the gated clock signal G-CLK is controlled based on the estimated value of the number of errors.
In the present embodiment, the sigma values σ1 to σt are divided into some coefficient groups each including a plurality of sigma values similarly to the second embodiment, in order to reduce the consumption current of an error detecting device 100 in view of the relationship of
A clock controller 11N″ has an estimated value judging module 116N instead of the σ-value judging module. The estimated value judging module 116N outputs High when the estimated value of the number of errors is less than N, and outputs Low when the estimated value is N or greater.
When the estimated value of the number of errors is less than N, each of the sigma values σN to σM becomes 0, as shown in
On the other hand, when the estimated value of the number of errors is N or greater, at least one of the sigma values σN to σM is not 0, as shown in
As stated above, in the third embodiment, the gated clock signal G-CLK is controlled depending on the estimated value of the number of errors. Therefore, consumption current flowing through the buffer 12k can be reduced.
The error detecting device 100 explained in each embodiment can be used in a memory system, for example.
Even when the storage capacity of the storage device 50 is large, the error detecting device can detect errors with low power consumption.
In addition, the error detecting device can be used in a communication system etc.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the Inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fail within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2011-199424 | Sep 2011 | JP | national |