Composite data detector and a method for detecting data

A composite data detector having first and second data detectors. The second detector of the invention starts in a known state and only runs as long as is necessary before being switched off and handing control back over to the smaller detector. Therefore, the composite data detector of the invention consumes less power than the known composite data detector and estimates bits with higher accuracy.

FIELD OF THE INVENTION

The invention relates generally to the field of data detectors, and more particularly, to a composite data detector having a first data detector that runs continuously and a second detector that runs only when the confidence associated with an estimate made by the first detector is low. The composite data detector of the invention has relatively low power consumption and improved accuracy compared to existing composite data detectors.

BACKGROUND OF THE INVENTION

Digital communications systems and digital storage systems (e.g., hard disk drives) are similar from the perspective of extracting the original (transmitted or stored) bits from the received signal or from the readback signal. In the case of communication channels, the digital information is transferred from one location to another location, but at the same time (perhaps with a small transmission delay), whereas in storage channels, the information is transferred from one time to a later time, but at the same location. The goal in both cases is to retrieve the original bits as accurately as possible in the presence of impairments such as noise and inter-symbol interference (ISI). Data detectors are used to detect the retrieved bits and determine whether each bit corresponds to a binary 1 or to a binary 0.

A recurring problem with existing data detectors is that they generally consume a large amount of power to achieve adequate performance, which, in turn, generates a large amount of heat. Typically, the chip package that contains the data detector is not designed to handle the excess heat caused by the large amount of power consumed. Although standard data detectors that consume less power exist, they generally sacrifice performance in order to save power.

One approach that minimizes power consumption without sacrificing performance involves using a composite data detector. A composite detector is a data detector that combines a first, relatively small data detector, and a second, relatively large and more accurate data detector. However, known composite detectors have several drawbacks, including poor efficiency. For example, one known composite detector has a smaller detector that runs continuously for an entire read event and then triggers a larger, and more accurate detector, which starts in an unknown state and has a fixed runtime of a minimum of 60 cycles after being triggered by the smaller detector. The minimum runtime of the larger detector causes it to run more often than necessary, which wastes power. Moreover, the larger detector is initiated based on path metric differences, which may not always be accurate. In the case where the larger detector is a parity-doubled Viterbi detector, no provision is made to resynchronize the larger detector in the correct parity state, which results in errors.

Accordingly, it would be desirable to provide a composite data detector that consumes a relatively small amount of power compared to known composite data detectors and that operates with greater accuracy than known composite data detectors.

SUMMARY OF THE INVENTION

The present invention provides a composite data detector for detecting data and a method for detecting data. The composite data detector comprises a first data detector and a second data detector. The first data detector receives a sequence of bits and the second data detector receives the same sequence of bits a predetermined delay period after the first data detector receives the sequence of bits. The first data detector is configured to generate hard bit estimates as to whether each bit in the sequence corresponds to a 1 or a 0 and to generate a respective confidence factor associated with each hard bit estimate. Each confidence factor indicates whether or not the respective hard bit estimate is reliable. The second data detector receives the hard bit estimates and the confidence factors generated by the first data detector. The second data detector is configured to process unreliable hard bit estimates in accordance with a branch metrics processing algorithm to generate new hard bit estimates that are reliable.

In accordance with the method of the invention, a sequence of bits is received in a first data detector. Hard bit estimates as to whether each bit in the sequence corresponds to a 1 or a 0 and respective confidence factors are then generated in the first data detector. Each confidence factor indicates whether or not the respective hard bit estimate is reliable. The same sequence of bits is received in the second data detector a predetermined delay period after the first data detector receives the sequence of bits. The hard bit estimates and the confidence factors generated by the first data detector are also received in the second data detector. When at least one of the confidence factors indicates that at least one respective hard bit estimate generated by the first data detector is unreliable, the second data detector is turned on. Unreliable hard bit estimates are processed in the second data detector in accordance with a branch metrics processing algorithm to generate new hard bit estimates that are reliable. When either the second data detector has generated new hard bit estimates for any unreliable bit estimates received by the second data detector or the second data detector determines that one or more confidence factors received by the second data detector indicate that one or more respective hard bit estimates generated by the first data detector are reliable, the second detector turns off.

In accordance with another embodiment of the invention, the second data detector is initialized to a known state prior to processing the bit sequence received in the second detector to generate new, reliable hard bit estimates. By initializing the second data detector to this known state, the reliability of the new hard bit estimates is improved, thereby improving the overall accuracy of the composite detector as well as reducing the period of time the second detector is on.

These and other features and advantages of the invention will become apparent from the following description, drawings and claims.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

In accordance with the present invention, a composite data detector is provided that estimates bits with very high precision and which is very efficient in terms of power consumption. In contrast to the known composite data detector, which has a second detector that starts in an unknown state after being triggered by the smaller detector and has a fixed runtime of a minimum of 60 cycles, the second detector of the invention starts in a known state and only runs as long as is necessary before being switched off and handing control back over to the smaller detector. Therefore, the composite data detector of the invention consumes less power than the known composite data detector and estimates bits with higher accuracy. The composite data detector of the invention in accordance with exemplary embodiments will now be described with reference toFIGS. 1-10.

FIG. 1illustrates a block diagram of an example of the composite data detector10of the present invention. The composite data detector10includes a first data detector12and a second data detector14. The first data detector12is typically smaller and consumes less power than the second data detector14. The second data detector14is typically larger and more accurate than the first data detector12in the sense that second detector14has more logic gates than the first detector12that enable the second data detector14to make more accurate estimates and thus commit fewer errors than the first data detector12.

Preferably, the first data detector12runs continuously for an entire read event and receives an equalized signal that is typically the output of a digital finite impulse response (“DFIR”) filter. The first detector12preferably is a soft-output Viterbi algorithm detector (SOVA) that produces both a soft output (i.e., confidence estimates) and a hard output (i.e., a binary 1 or 0). The first detector12may be any detector that produces both a soft and a hard output. Thus, the first detector12produces both a stream of data estimates (i.e., binary 1 or binary 0 bits), as well as a stream of corresponding confidence levels (or confidence estimates).

Preferably, the second detector14runs only when the confidence in the estimates made by the first detector is relatively low as gauged by confidence estimates produced by the first detector12. The confidence estimates output by the first detector12are used to determine whether to turn on and off the second detector14. In exemplary embodiments, the second detector14is a hard output Viterbi detector having branch metrics that are more accurate than the branch metrics of the first detector12. However, it should be noted that the second detector14may be a soft-output detector or a hard output detector. In the exemplary embodiment, the second detector14is a data dependent, bias-compensated, single-parity hard output Viterbi detector. Additionally, the second detector14has functionality that enables it to be dynamically switched on in a known state, and switched off when it has computed just enough bit estimates to replace the unreliable estimates made by the first detector12. Thus, the second detector14preferably runs for a period of time that is no longer than necessary to recompute the low confidence bits output by the first detector12. Starting the second detector14in a known state and running it only as needed conserves power.

The composite data detector10preferably also includes a DFIR buffer16, a non-return-to-zero (NRZ) buffer18, switching logic20, and a multiplexer22. The DFIR buffer16delays the input to the second detector14for enough time so that the reliability information (i.e., the confidence estimates) from the first detector12, which controls whether the second detector14is switched on or off, arrives early enough for the second detector14to re-use the same DFIR samples used by the first detector12to produce the low confidence bit estimate. The NRZ buffer18delays the NRZ output from the first detector12, which is then fed to the multiplexer22. The multiplexer22receives inputs from the first detector12, the second detector14, and the switching logic20and selects the second detector14bit estimate for those bits for which the second detector14has recomputed a bit estimate, and otherwise selects the first detector12bit estimate.

As described herein, the exemplary embodiment uses two taps of stationary noise prediction on a length3target, which gives 8 states in the first detector12. This has been done to keep the number of states small and to keep the branch metrics simple. Those skilled in the art will understand that data detectors can have any number of states and that the invention is not limited to a detector that has any particular number of states.

When the second detector14is turned on, the switching logic20initializes the state of the second detector14to a state that is based on a block of reliable bit estimates output by the first detector12.FIG. 2illustrates a plot26that demonstrates the use of a block of bit estimates used to initialize the state of the second detector14. A long enough sequence of DFIR output samples is buffered in the DFIR buffer16so that the branch metric unit (“BMU”) pipeline can begin to fill up at time t0prior to starting an add/compare/select (ACS) cycle at time t1, which creates a preset anticipation27(“pad” inFIG. 2) before the first low-confidence bit estimate occurs, which occurs at cycle i+5 (or t2) inFIG. 2. At time t2, the confidence signal goes low, as indicated by arrow28.

InFIG. 2, “bi” represents the NRZ bit estimate of the first detector12at cycle i. In the situation shown inFIG. 2, the second detector14is initialized to a state consisting of NRZ memory bits:
bi−3bi−2bi−1bi.

In the parity case, the initial state is:
(bi−3bi−2bi−1bi,p)
and the parity, p, is determined based on the high confidence, i.e., reliable, bit estimates as

is an initial segment of a parity codeword, “L” is the length of the initial segment of a codeword, and bi−Lis the first bit of the parity codeword. This initial state in this example is enforced by 5 full-rate cycles of pruning (and, preferably, is enforced by nothing more than this). During the first 5 full-rate ACS cycles of operation of the second detector14, the comparisons are all preferably completely “rigged” in that each comparison has a foreordained outcome. In each of the first four of these cycles, with index i+j, where 1≦j≦4, the winning branch (i.e., the unpruned branch) at each state:
di+j−3di+j−2di+j−1di+j
in the path memory has an initial state of
bi+j−4di+j−3di+j−2di+j−1
in the path memory. In the last of these five initial cycles (the cycle at index i+5), the winning branch (or unpruned branch) at the state
(di+2di+3di+4di+5,q)
has an initial state of
(di+1di+2di+3di+4,q+di+5)
where the initial bit di+1satisfies

di+1=p+q+∑j=25⁢di+j
The variables “d” and “q” represent general bits (unlike the specific bits “b” that are the path memory bits bi−3bi−2bi−1bi) and the parity of the state (di+2di+3di+4di+5) (unlike “p” which is the parity of the initial state), respectively.

The second detector14includes logic that is controlled by the switching logic20for pruning the add/compare/select decisions so as to force an initial state of the second detector14.FIG. 3illustrates a trellis diagram30that demonstrates this initial pruning. For ease of illustration and discussion, the trellis diagram30shown inFIG. 3is for the case where there are two path memory bits in each state, rather than 4 bits as described with respect toFIG. 2, and one parity bit. Therefore, for the trellis30shown inFIG. 3, there are 3 rounds of initial pruning to force an initial state in the second detector14(rather than 5 rounds as would be the case where there are 4 path memory bits in each state). In the example shown, the initial state is state (10, 0), as shown in block32. The pruned branches correspond to the dotted arrows shown inFIG. 3and the unpruned branches correspond to the bold arrows shown inFIG. 3. The first round of pruning leaves the branches with initial states of the form (1b, c). The second round leaves the branches with initial states of the form (0b, c). The third round leaves the branches with initial states of the form (ab, c), where a+b+c is the parity of the state (10, 0), i.e., a+b+c=0.

Thus, tracing the unpruned branches34athrough34nfrom right to left starting at states36athrough36hshows that all unpruned paths of length3start at state (10, 0), which is shown in block32and which corresponds to the forced initial state of the second detector14. Those skilled in the art will understand how to prune for an initial state when there are other numbers of path memory bits in each state. For example, from the example described above with reference toFIG. 3, it can be seen that in the case where there are 4 path memory bits and one parity bit in each state, there will be thirty-two states and five rounds of pruning.

The initial pruning algorithm described above is consistent with pruning for parity in the second detector14, which, as stated above, preferably is a hard output Viterbi detector. In fact, the initial pruning is at least as severe as parity pruning in the sense that any path remaining after the last of the initial pruning cycles would also remain after the parity pruning cycle if it were to be done at the time of any of the initial pruning cycles. (This relies on the fact that the reliable bit estimates output by the first detector12are used to establish parity, as described above). As a consequence, if initial pruning occurs in a cycle that would ordinarily be a parity pruning cycle, then the parity pruning in that cycle can be disabled. To prune for parity in such a cycle would be redundant. This remains true even in a half-rate implementation (i.e., processing two bits at a time as compared to full rate processing of one bit at a time). In other words, the fact that this initial pruning algorithm is not inconsistent with parity pruning remains true even in a half-rate implementation.

A shutdown algorithm is designed to turn off the second detector14as soon as its path memory has merged to the point that it contains unambiguous (merged) bit estimates for all low confidence bits up to the current equalized sample plus a pad. As a consequence, all unmerged bits in the second detector path memory are high confidence bits. The path memory, which is part of the second detector14, is not shown in the figures. In general, the path memory includes one buffer for each state of the second detector (the buffer is also referred to as a row). Each buffer stores a sequence of bits at lags (delays) 0 up to some maximum lag, L. This sequence of bits is known by those skilled in the art as the “survivor path” for the state. A bit at delay j in the buffer (row) corresponding to state k at cycle i is denoted as bi[j,k]}. The sequence of bits in the buffer (row) corresponding to state k is the most likely sequence of bits that ends at state k. The condition where all unmerged bits in the second detector path memory are high confidence bits will be referred to herein as the merged-or-confident condition.

FIGS. 4A and 4Bdepict a graphical representation of four states of the second detector14. Each state has a row of path memory associated with it. Therefore, there are four rows of the sequence of bit values of the path memory that this figure conveys. InFIG. 4A, the plot40shows that some bits are neither merged nor confident; thus, the second detector14will not yet turn off. However, inFIG. 4B, all bits are either merged or confident. Thus, in the case illustrated inFIG. 4B, the shutdown signal goes high (and the plot42shows that the merged bits cover the low confidence bits). Therefore, to turn off the second detector14, either the bits are high confidence bits or the bits are merged.

In the case of parity doubling in the second detector14for parity detection, the bit estimates output by the first detector12preferably agree, bit-for-bit, with the bit estimates produced in the second detector14along the entire unmerged stretch of some survivor path in the second detector14. The final state of this survivor path is one or the other of the two parity versions of the states whose path memory is determined by the first detector12bit estimate. This condition can be referred to as the unmerged-path-agreement condition.FIG. 5depicts an exemplary circuit50that calculates the shutdown indicator signal for the second detector14for a path memory of length 7 bits. The indicator signal is the signal that causes the second detector14to shut down when both the merged-or-confident condition and the unmerged-path-agreement condition hold. In the case where the second detector14is not parity-doubled, the circuit50shown inFIG. 5can be simplified so as to include only one delay line rather than two. In this case, the indicator signal only asserts that the merged-or-confident condition holds. An exemplary circuit60for computing the input signal ubiti[j]for the circuit50shown inFIG. 5, in the case of 16 states, is depicted inFIG. 6. The signal ubiti[j]indicates that the corresponding column of the path memory at delay j contains a unique bit value. The inputs61athrough61pto the circuit60are the bits in a particular column of the path memory, and in this exemplary embodiment, there are sixteen inputs because the second detector14has sixteen states. The inputs61athrough61pto the circuit60are compared to one another by the various gates of the logic62. The result of the comparisons performed by logic62generate a ubit output at NOR gate64that is 1 if all inputs are 0 or if all inputs are 1, and 0 otherwise. With reference again to the circuit50shown inFIG. 5, the output from the k-th AND gate from the left in the upper row52of AND gates is 1 if and only if the signals
ubiti[6],ubiti[6−1], . . . ubiti[6−k]
are all 1. Therefore, the outputs from these AND gates52are either all 0, or there is some position m (“m” meaning merge) for which the outputs are all 1 at or to the left of m and 0 to the right of m. It follows that the shutdown indicator signal becomes 1 whenever either delay line54or56contains a 1 at or to the left of position m, or when the path memory is entirely merged (m=0), and all of the bits bi−3,bi−2. . . ,bi+Pare confident. Here, the letter P represents the pad length corresponding to the switch cycle latency plus the number of bit cycles in anticipation of a low confidence bit that will cause the second detector14to be initialized and to begin the ACS cycling. The two delay lines54and56record the extent of each of the two possible matches of a second detector path with the first detector bit estimate. The two paths correspond to the two possible parities in the case that the second detector14had parity-doubling.

The circuit shown inFIG. 7controls the update of the two agreement delay lines54and56shown inFIG. 5. The two signals agreei[0]and agreei[1]shown inFIG. 7are computed from the select signals selecti[j]produced by the second detector14during the ACS cycle, and from the block of first detector12bit estimates b1−4bi−3bi−2bi−1bi. The bit estimates are aligned with the select signals in the multiplexers82and83so that the Viterbi input used to compute branch metrics for the ACS cycle that produces the select signal selecti[j]at state j ideally depends on bits bi−2bi−1bi. In other words, the last four bits bi−3bi−2bi−1bidetermine the path memory of the state j at which the ACS select signal selecti[j]is equal to bi−4in the case that the select signal agrees with the first detector12bit estimate. Additionally, the select signals selecti[j]can reflect any pruning for parity that might occur during cycle i.

It follows that the output of the top NXOR gate84is 1 if and only if the select decision at the state with path memory bi−3bi−2bi−biand parity 0 agrees with the first detector estimate bi−4. Similarly, the output of the bottom NXOR gate85is 1 if and only if the select decision at the state with path memory bi−3bi−2bi−1biand parity 1 agrees with the first detector12estimate bi−4. These two signals are ANDed by AND gates86and87with the confidence signal ci−4, which indicates whether or not the bit estimate bi−4is confident. The two results are swapped by MUXes88and89, or not, according to whether the accumulated parity Σj=0ibjof the first detector12bit estimate is 1 or 0.

This permutation maintains a consistent correspondence between each of two (parity opposite) trellis paths in the second detector14and the two agreement delay lines54and56in the shutdown indicator circuit50. If the results are not swapped here, then the contents of the delay lines54and56can be swapped, although the latter may not be preferable because it would be more costly to implement. Swapping applies to the case where the second detector14has parity doubling. In such case, each of the two agreement delay lines54and56includes a block of 1's at its upstream end. The length of the block of 1's in delay line54is the length of the match of the first detector bit estimate with one of two parity-opposite survivor paths in the second detector14. In other words, the length of the block of 1's is the length of the match of the first detector bit estimate with one of the two bit sequences stored in the two rows of the path memory corresponding to the two parity-opposite Viterbi states whose path memory both match the most recent bits of the first detector12bit estimate.

The length of the block of 1's in the other delay line56is the length of the match of the first detector12bit estimate with the other of the two parity-opposite paths in the second detector14. When these two paths are extended by one more bit, and the first detector bit biis estimated to be 1 (as opposed to 0), then the circuit will either transition from a “swapped mapping” (feeding the result based on select[0]through select[15]into Agree[1]to an “unswapped mapping” (feeding that result into Agree[0]instead), or vice versa: it will transition from an unswapped mapping to a swapped mapping. On the other hand, if the first detector12bit biis estimated to be 0 (as opposed to 1), then there is no change from a swapped to an unswapped mapping, or vice versa. In this way, a consistent association between the two parity-opposite paths in the second detector14path memory on the one hand and the two agreement delay lines on the other, is maintained.

If the signal agreei[0]output by MUX88shown inFIG. 7is 1, then a 1 is shifted into the top agreement delay line54shown inFIG. 5. Otherwise, the top agreement delay line54is reset to all 0s. The signal agreei[1]output from MUX89shown inFIG. 7controls the bottom agreement delay line56in exactly the same way. The effect is that each agreement delay line contains a block of 1's at its upstream end. The length of this block of 1's corresponds to the length of the match of a second detector14survivor path with the first detector12bit estimate. The two delay lines54and56correspond to the two survivor paths ending at the two states having path memory bi−3bi−2bi−1bi.

The circuit50described above with reference toFIG. 5enforces both the merge-or-confident condition and the unmerged-path-agreement condition. In the case that the second detector14does not have party doubling, the circuits50and80shown inFIGS. 5 and 7, respectively, can be simplified because they can be designed to compute only the merged-or-confident condition. First, there may be only one delay line in the circuit50, e.g., delay line54(delay line56omitted). Second, the value of agreeisignal shown inFIG. 7can be simply set to ci−4, and the dependency of agreeisignal on the second detector's select signals selecti[j]can be completely eliminated. Thus, in some implementations, the circuit80shown inFIG. 7can be entirely omitted.

To break up the long chain of AND gates52shown inFIG. 5and to provide for a scalable version of the circuit50, the following fact about merging of path memory may be used.

Fact 1. Assume that all rows of path memory agree in their estimates of the bits
bi−3,bi−2,bi−1,bi.
In the case of parity doubling, further assume that all rows of path memory agree in their estimate of parity up to time i,

∑j=0i⁢⁢bj.
Then all rows of path memory agree in their estimates of bj, for all j≦i.

FIG. 8depicts a circuit90, which is a scalable version of the circuit50shown inFIG. 5. The circuit90is substantially similar to the circuit50with the exception of the differences described herein. InFIG. 8, the signal uparityi[j]indicates whether or not all of the rows of the path memory at delay j agree in their estimate of the accumulated parity. More explicitly, if bi[j,k]is the content of the path memory cell at lag j for state k at time i, then uparityi[j]is 1 if and only if all of the 32 parity estimates

∑l=0i⁢bl[j,k],(0≤k≤31),
agree. The circuit90includes at least one ustate[j]block92, which is preferably a 5-way AND gate. Using Fact 1 above, the ustate[j]block92can be used to break up the long chain of AND gates52′ because the output of the ustate[j]block92is equal to the conjunction

ustatei[j]=Λj′≥j⁢ubiti[j′]
Notably, the long chain of AND gates52′ is broken up because the AND gates are connected in series, and any signal propagating through the AND gates would do so rather slowly. Thus, the ustate[j]block92saves processing time.

The modifications to the switch-on and switch-off circuits for a half-rate implementation will now be described. Instead of 5 full-rate cycles of pruning to force an initial state
(bi−3bi−2bi−1bi,p),
3 half-rate cycles are used. In the first of these, the winning branch (or unpruned branch) into either state with path memory
di−1didi+1di+2
has initial state with path memory
bi−3bi−2di−1di
In the second cycle of pruning, the winning branch (or unpruned branch) into either state with path memory
di+1di+2di+3di+4
has initial state with path memory
bi−1bidi+1di+2
As before, the last cycle enforces the parity p of the initial state. But now, there are two unpruned branches remaining into the state
(di+3di+4di+5di+6, q).
These are the two branches whose initial states
(di+1di+2di+3di+4, q+di+5+di+6)
satisfy

p=q+∑j=i+1i+6⁢dj
(It follows that the XOR di+1+di−2is the same for the two surviving branches.)

As in the full-rate case, pruning for initial state obviates pruning for parity if pruning for parity would occur in any of these three cycles.

FIG. 9depicts a circuit100that is a modified version of the full-rate second detector shutdown indicator circuit90shown inFIG. 8. The circuit100is substantially similar to the circuit90with the exception of the differences described herein. The signals ubiti[j,j+1]indicate that the column of path memory storing the two bits at delays j and j+1 contains a unique two-bit value. Note that the agreement delay lines54″ and56″ operate at half-rate and are half as long as the full-rate version described above, although this simplification can also be applied to the full-rate version.

FIG. 10shows a circuit110that is a half-rate version of the agreement delay line control circuit80shown inFIG. 7. The circuit110is substantially similar to the circuit80with the exception of the differences described herein. Each select signal selecti[j]is 2 bits wide. The confidence signal ci−5,i−4can either be computed from the full-rate confidence signal as the conjunction
ci−5,i−4=ci−5Λci−4,
or it can be computed by thresholding soft information produced at half-rate by a SOVA detector that would be specialized to compute soft information for 2-bit blocks rather than bits. The circuit110also includes a pair of comparison logic elements112and114. The elements112and114include logic that compares the input bits to one another. The inputs to the elements112and114are two bits wide just as each of the select signals inputted to the multiplexers82′ and84′ is two bits wide. Thus, the elements112and114serve to determine if the first two bits bi−5bi−4inputted into the gate are equal to the two bits outputted from the multiplexer82′. If the bits are equal, then the output of the elements112and114is 1; otherwise, the output is 0. Thus, the outputs of the elements112and114are just one bit wide, which conveys whether or not the bi−5and bi−4bits agree with the corresponding 2 bit select signal. In an exemplary configuration each element112and114can be implemented by using two parallel NXOR gates followed by an AND gate.

While the invention has been described with reference to preferred and example embodiments, it will be understood by those skilled in the art that a variety of modifications, additions and deletions are within the scope of the invention. For example, those skilled in the art will understand that the circuits described herein and depicted in the figures are exemplary and that various other configurations can be used to achieve the same functions.