1. Field of the Invention
The present invention relates to channel detectors of signal processing receivers, and, in particular, to calibrating parameters used by such channel detectors.
2. Description of the Related Art
In conventional hard-disk drive (HDD) systems, binary ones and zeros are written to HDD platters as magnetic flux reversals. To read the ones and zeros from the disk, a conventional read head detects voltage peaks imparted on the read head when a flux reversal passes underneath the read head. A push by HDD system manufacturers to increase the amount of data that may be stored on HDD platters (i.e., increase the storage density) has resulted in packing data more closely together on the HDD platters. Increasing storage density results in pushing peaks closer together, making it more difficult for HDD systems to detect flux reversals. To combat this issue, partial-response maximum-likelihood (PRML) methods were developed. Rather than looking for peaks, PRML methods sample the analog waveform that the read head detects from the platter. Then, PRML methods use signal processing technologies, such as error detection and error correction, to determine the bit pattern represented by the waveform. As a result of these signal processing technologies, HDD systems that employ PRML methods are typically capable of interpreting smaller changes in the analog signal than equivalent HDD systems that use peak detection. This allows data to be packed closer together, thereby increasing storage densities, while maintaining or even possibly improving error rates of HDD systems.
In one embodiment, the present invention is an apparatus comprising a branch-metric calibration unit that updates channel-detection parameters used by a channel detector for channel detection. The branch-metric calibration unit comprises at least two parameter update blocks. A first of the parameter update blocks is a first tap-weight update block that updates a set of tap weights based on (i) hard-decision bits received from the channel detector, (ii) an error signal, and (iii) a first set of one or more bandwidth parameters. The first set includes all of the one or more bandwidth parameters for the first tap-weight update block. A second of the parameter update blocks updates a set of channel-detection parameters based on (i) the hard-decision bits, (ii) the error signal, and (iii) a second set of one or more bandwidth parameters. The second set includes all of the one or more bandwidth parameters for the second parameter update block, and all values of the one or more bandwidth parameters in the first set are different from all values of the one or more bandwidth parameters in the second set.
In another embodiment, the present invention is a method, implemented by a branch-metric calibration unit, for updating channel-detection parameters used by a channel detector for channel detection. The method comprises the branch-metric calibration unit updating a set of tap weights based on (i) hard-decision bits received from the channel detector, (ii) an error signal, and (iii) a first set of one or more bandwidth parameters. The first set includes all of the one or more bandwidth parameters used to update the set of tap weights. The method also comprises the branch-metric calibration unit updating a set of the channel-detection parameters based on (i) the hard-decision bits, (ii) the error signal, and (iii) a second set of one or more bandwidth parameters. The second set includes all of the one or more bandwidth parameters used to update the set of channel-detection parameters, and all values of the one or more bandwidth parameters in the first set are different from all values of the one or more bandwidth parameters in the second set.
Other aspects, features, and advantages of the present invention will become more fully apparent from the following detailed description, the appended claims, and the accompanying drawings in which like reference numerals identify similar or identical elements.
Reference herein to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments necessarily mutually exclusive of other embodiments. The same applies to the term “implementation.”
The retrieved data stream is processed by channel detector 106, which implements a suitable data detection technique such as Viterbi soft-output detection. Channel detector 106 operates at one quarter of the data rate to generate four channel soft-output values Ln (e.g., log-likelihood ratios (LLRs)) at a time i, each corresponding to one bit of the retrieved data stream. Each channel soft-output value Ln comprises a hard-decision bit bi−j, (i.e., the most-significant bit) and one or more confidence-value bits (i.e., least-significant bits). Channel detector 106 provides a non-return-to-zero (NRZ) sequence comprising four hard-decision bits bi−j, j=0, . . . , 3, corresponding to four channel soft-output values Ln to both branch-metric calibration unit 110 and target block 108. Additionally, channel detector 106 provides four channel soft-output values Ln to low-density parity-check (LDPC) decoder 112.
In signal processing systems, noise and distortion are often introduced into a retrieved signal. For example, in HDD systems, noise and distortion are often introduced to signals that are read back from the HDD platter by read heads and magnetic media. This noise and distortion often correlates with the written user data. Branch-metric calibration unit 110 adapts to these correlations and distortion. In so doing, branch-metric calibration unit 110 generates tap weights wi,j and bias estimates oi based on (i) a noise estimate ni received from combiner 104 and (ii) NRZ bits received from channel detector 106. A discussion of the operation of branch-metric calibration unit 110 is discussed below in relation to
Target block 108 and combiner 104 together generate noise estimate n, as shown below in Equation (1):
In particular, target block 108 convolves a bi-polar NRZ estimate {tilde over (b)}i−j of the hard-decision bits bi−j, where {tilde over (b)}i−j=bi−j−½, with a target [t0, t1, . . . , te−1], where e=the length of the target, as shown to the right of the subtraction sign in Equation (1). Combiner 104 generates noise estimate ni at time i by subtracting the output of target block 108 from the samples y, received from upstream processing 102. The noise estimate n, is then provided to branch-metric calibration unit 110.
LDPC decoder 112 attempts to recover LDPC-encoded codewords from sets of channel soft-output values. If LDPC decoder 112 is successful at recovering an LDPC-encoded codeword, then a set of hard-decision bits is provided to downstream processing 118, which may include, for example, a controller, a user application, and any other suitable processing. If LDPC decoder 112 is not successful at recovering an LDPC-encoded codeword, then receiver 100 may perform additional local iterations (i.e., iterations of LDPC decoder 112) and/or global iterations (i.e., iterations of channel detector 106 and LDPC decoder 112 together) to recover the LDPC-encoded codeword. For each additional local iteration, a set of updated soft-output values that were generated during the prior iteration are provided back to LDPC decoder 112 via feedback path 114, and LDPC decoder 112 attempts to recover the LDPC-encoded codeword using the set of updated soft-output values. For each additional global iteration, a set of extrinsic soft-output values generated by LDPC decoder 112 are provided back to channel detector 106 via feedback path 116. The extrinsic soft-output values are utilized to improve the detection capabilities of channel detector 106.
Noise estimate n, is delayed by buffers 202(1)-(3) and processed via a lower noise-estimate path 206 and an upper noise-estimate path 204. In lower noise-estimate path 206, the delayed noise estimate is provided directly to multipliers 212(0)-(3). In the upper noise-estimate path 204, the delayed noise estimate n, is provided to slicer 208, which slices noise estimate n, as shown below in Equation (2):
As shown in Equation (2), if noise estimate ni is less than −3, then a value of −1 is output from slicer 208. If noise estimate ni is greater than or equal to −3 and less than or equal to 3, then a value of 0 is output from slicer 208. If noise estimate ni is greater than 3, then a value of 1 is output from slicer 208. The sliced noise estimate (slice(ni)) is then delayed by buffer 210(1) and is subsequently provided to positive-delay tap update block 220(1) and buffer 210(2). After being delayed by buffer 210(2), the sliced noise estimate is provided to positive-delay tap update block 220(2) and buffer 210(3), and, after being delayed by buffer 210(3), the sliced noise estimate is provided to positive-delay tap update block 220(3).
The NRZ sequence of four hard-decision bits (bi−3, . . . bi) is processed via an upper NRZ path 214 and a lower NRZ path 216. In upper NRZ path 214, the NRZ sequence is delayed by buffers 218(1)-(3), and the delayed NRZ sequence is provided to (i) positive-delay tap update blocks 220(1)-(3), (ii) zero-delay tap update block 220(0), and (iii) bias-compensation block 224. In lower NRZ path 216, the NRZ sequence (bi−3, . . . , bi) is provided to positive-delay tap update block 220(3) and to buffer 222(1). After being delayed by buffer 222(1), the NRZ sequence (bi−3, . . . , bi) is provided to positive-delay tap update block 220(2) and buffer 222(2), and, after being delayed by buffer 222(2), the NRZ sequence (bi−3, . . . , bi) is provided to positive-delay tap update block 220(1). In general, each positive-delay tap update block 220 generates updated tap weights wi,j based on (i) an error signal ei received from combiner 228(4), (ii) sliced noise estimate (slice(ni)), and (iii) two differently delayed NRZ sequences (i.e., one received via upper path 214 and the other received lower path 216).
The tap weight wi,j[α] stored in the selected register (i.e., corresponding to filtering condition αk) is updated using multipliers 302 and 304 and combiner 306 as shown in Equation (3) below:
w
i+1,j
α
=w
i,j
α
−g
x×slice(ni−j)ei,(1≦j≦c) (3)
where c is the number of taps (e.g., c=4) and gx=g1, g2, or g3 (depending on whether positive-delay tap update block 300 implements positive-delay tap update block 220(1), 220(2), or 220(3) in
E(ni−jei|bi−3, . . . ,biεαk)=0,(1≦j≦c) (4)
In other words, the expectation (i.e., E) of the product of noise estimate ni−j and error signal ei is zero given that the four NRZ bits (bi−3, . . . , bi) correspond to a sequence of bits in one of filtering conditions αk.
In addition to generating updated tap weights wi+1,j[α], positive-delay tap update block 300 selects tap weights wi,j[α] to output to, for example, a multiplier 212 in
Referring back to
The product generated by multiplier 212(0) is obtained by multiplying a tap weight wi,0 output from zero-delay tap update block 220(0) by the delayed noise estimate ni received via lower noise-estimate path 206. In general, zero-delay tap update block 220(0) generates updated tap weights wi,0 for each filtering condition α except α0 based on (i) a magnitude |ei| of error signal ei received from magnitude block 230 and (ii) a sequence of four hard-decision bits (i.e., bi−3, . . . , bi) received via upper NRZ path 214. Note that tap weight wi,0[α] for normalizing filtering condition α0 is fixed at a value of one.
Zero-delay tap update block 400 receives (i) a magnitude |ei| of error signal ei from, for example, magnitude block 230 of
If the set of four NRZ bits (bi−3, . . . bi) corresponds to one of the sequences of bits in normalizing filtering condition α0 (i.e., bi−3, . . . , biε{0000, 1111}), then selector 406 outputs a value of one to multiplexer 404, which provides the difference (i.e., |ei|−μi) from combiner 402 to multiplier 414 of the second update loop. The second update loop, together with combiner 402, updates accumulation values μi as shown in Equation (5):
In particular, if the four NRZ bits (bi−3, . . . , bi) correspond to one of the sequences in normalizing filtering condition α0 (i.e., 0000 or 1111), then the difference from combiner 402 (i.e., |ei|−μi) is multiplied by bandwidth g0′ using multiplier 414. The selection of bandwidth g0′ is discussed further below. The resulting product is added using combiner 416 to accumulation value μi received from accumulator 418 to generate an updated accumulation value μi+1, which is subsequently stored in accumulator 418. Note that, if the four NRZ bits (bi−3, . . . bi) are not in the set {0000, 1111}, then the second update loop is not selected by multiplexer 404, and accumulation value μi is not updated as shown in the lower part of Equation (5).
The updated accumulation value μi+1 may be saturated (not shown) such that updated accumulation value is greater than or equal to zero (μi+1≧0). In such a case, accumulation value μi is a low-passed version of error magnitude |ei|, restricted to cycles i when bi−3, . . . , biεα0. This filtering of error magnitude |ei| for normalizing filtering condition α0 ensures that variations in μi from its mean are only weakly correlated with error magnitude |ei|. Furthermore, it follows from Equation (5) that, at equilibrium:
μi=E(|ei∥bi−3, . . . ,biεα0) (6)
In other words, at equilibrium, the expectation (i.e., E) of error magnitude |ei| given that the four NRZ bits (bi−3, . . . , bi) correspond to a sequence of bits in normalizing filtering condition α0 is equal to accumulation value μi.
If the set of four NRZ bits (bi−3, . . . , bi) corresponds to a sequence of bits in one of filtering conditions α1, . . . , α7 (not in normalizing filtering condition α0), then selector 406 outputs a value of zero to multiplexer 404, which provides the difference (i.e., |ei|−μi) from combiner 402 to multiplier 408 of the first update loop. The first update loop, together with combiner 402, updates tap weights wi,0[α] as shown in Equation (7):
In particular, if the four NRZ bits correspond to a sequence of bits in filtering conditions α1, . . . , α7 (not in normalizing filtering condition α0), then the difference from combiner 402 (i.e., |ei|−μi) is multiplied by bandwidth g0 using multiplier 408. The selection of bandwidth g0 is discussed further below. The resulting product is subtracted using combiner 410 from a tap weight wi,0[α] received from tap-weight memory 412 to generate an updated tap weight wi+1,0[α], which is subsequently stored in tap-weight memory 412. During a servo event, all seven tap weights wi,0[α] (i.e., the tap weights corresponding to filtering conditions α1, . . . , α7) are output to a channel detector such as channel detector 106. If the four NRZ bits correspond to a sequence of bits in normalizing filtering condition α0, then the first loop is not selected by multiplexer 404, and tap weight wi+1,0[α] is not updated as shown in the lower part of Equation (7). Note that, from Equations (6) and (7), at equilibrium:
E(|ei∥bi−3, . . . ,biε(αk≠α0))=μi=E(|ei∥bi−3, . . . ,biεα0),(αk). (8)
Tap-weight memory 412 may be implemented as single-read, single-write memory having seven registers, where each of the seven registers stores a tap weight wi,0[α] corresponding to a different one of NRZ filtering conditions α1, . . . , α7 (i.e., excluding α0). Tap-weight memory 412 receives the set of four NRZ bits that are input to zero-delay tap update block 400. The set of four NRZ bits (bi−3, . . . , bi) act as a control signal that is used to select the appropriate tap weight wi,0[α] of tap-weight memory 412 to update and output to, for example, multiplier 212(0) of
Referring back to
o
i+1
[β]
=o
i
[β]
+g
4
e
i (9)
In particular, error signal ei is multiplied by bandwidth g4 using multiplier 502. The selection of g4 is discussed further below. The resulting product is added to a bias estimate oi[β] received from bias-estimate memory 506 using combiner 504 to generate the updated bias estimate oi+1[β], which is subsequently stored in bias-estimate memory 506.
Bias-estimate memory 506 may be implemented as single-read, single-write memory having 16-registers, one for each bias condition βn, where n=0, . . . , 15 and β0ε {0000}, β1ε {1000}, β3ε {0100}, . . . , β15ε {1111}. The set of four NRZ bits (i.e., bi−3, . . . , bi) received by bias-compensation block 500 is used as a control signal to select the appropriate register of bias-estimate memory 506 to update. For example, suppose that the set of four NRZ bits (i.e., bi−3, . . . , bi) corresponds to bias condition β0. In this case, the bias estimate oi[β] corresponding to β0 is (i) updated and (ii) output to, for example, combiner 228(4) of
E(ei|bi−3, . . . ,biεβn)=0,(βn) (10)
Considering Equation (10) together with Equation (8) above, and assuming that the noise is multivariate Gaussian, at equilibrium, it follows that:
E(|ei2∥bi−3, . . . ,biε(αk≠α0))=μi=E(|ei2∥bi−3, . . . ,biεα0),(αk) (11)
In prior-art branch-metric calibration units, the bandwidths g0, g1, g2, g3, and g4 in
According to various embodiments of the present invention, the two or more different bandwidth values may be completely independent from one another, such that selection of one bandwidth value does not depend on the selection of the other bandwidth values. For example, branch-metric calibration unit 200 may be implemented with six registers, one for each of g0, . . . , g4 and g0′ to enable different values to be specified for the different bandwidth values.
According to other embodiments, the two or more bandwidth values may be dependent on one another, such that selection of one bandwidth value depends on the selection of other bandwidth values. For example, the branch-metric calibration unit may be implemented with one register for specifying one of the bandwidth values (e.g., g0). Then, the branch-metric calibration unit may generate the other bandwidth values (e.g., g1, g2, g3, and g4) based on the specified bandwidth value. For example, suppose that bandwidths g0, g1, g2, g3, and g4 of
Although the present invention was described relative to a particular configuration of a branch-metric calibration unit (e.g., 200), the present invention is not so limited. The present invention may be implemented in branch-metric calibration units having other configurations. For example, the present invention may be implemented in branch-metric calibration units having more than or fewer than four taps. As another example, the present invention may be implemented in branch-metric calibration units having variable numbers of taps that may be varied from one use to the next or one implementation to the next. As yet another example, the present invention may be implemented in branch-metric calibration units that do not employ a bias-compensation block and/or a zero-delay tap update block.
Further, although the present invention was described relative to its use with HDD systems, the present invention is not so limited. The present invention may also be used in other signal processing systems such as communications systems.
The present invention may be implemented as circuit-based processes, including possible implementation as a single integrated circuit (such as an ASIC or an FPGA), a multi-chip module, a single card, or a multi-card circuit pack. As would be apparent to one skilled in the art, various functions of circuit elements may also be implemented as processing blocks in a software program. Such software may be employed in, for example, a digital signal processor, micro-controller, or general-purpose computer.
The present invention can be embodied in the form of methods and apparatuses for practicing those methods. The present invention can also be embodied in the form of program code embodied in tangible media, such as magnetic recording media, optical recording media, solid state memory, floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. The present invention can also be embodied in the form of program code, for example, whether stored in a storage medium, loaded into and/or executed by a machine, or transmitted over some transmission medium or carrier, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. When implemented on a general-purpose processor, the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits. The present invention can also be embodied in the form of a bitstream or other sequence of signal values electrically or optically transmitted through a medium, stored magnetic-field variations in a magnetic recording medium, etc., generated using a method and/or an apparatus of the present invention.
Unless explicitly stated otherwise, each numerical value and range should be interpreted as being approximate as if the word “about” or “approximately” preceded the value of the value or range.
It will be further understood that various changes in the details, materials, and arrangements of the parts which have been described and illustrated in order to explain the nature of this invention may be made by those skilled in the art without departing from the scope of the invention as expressed in the following claims.
The use of figure numbers and/or figure reference labels in the claims is intended to identify one or more possible embodiments of the claimed subject matter in order to facilitate the interpretation of the claims. Such use is not to be construed as necessarily limiting the scope of those claims to the embodiments shown in the corresponding figures.
It should be understood that the steps of the exemplary methods set forth herein are not necessarily required to be performed in the order described, and the order of the steps of such methods should be understood to be merely exemplary. Likewise, additional steps may be included in such methods, and certain steps may be omitted or combined, in methods consistent with various embodiments of the present invention.
Although the elements in the following method claims, if any, are recited in a particular sequence with corresponding labeling, unless the claim recitations otherwise imply a particular sequence for implementing some or all of those elements, those elements are not necessarily intended to be limited to being implemented in that particular sequence.