The present disclosure is related to a timing error processor that uses the derivative of an interpolator function. In one embodiment, a digitized signal is processed via an interpolator, the interpolator performing timing adjustment on the digitized signal. The error signal is determined based on a desired signal and the time-adjusted digitized signal. A corrective phase shift of the digitized signal is determined via a least-mean-squared processing block that uses the error and the derivative of a function used by the interpolator. The corrective phase shift is input to the interpolator to perform the timing adjustment.
These and other features and aspects of various embodiments may be understood in view of the following detailed discussion and accompanying drawings.
In the following diagrams, the same reference numbers may be used to identify similar/same components in multiple figures.
In the following description of various example embodiments, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration various example embodiments. It is to be understood that other embodiments may be utilized, as structural and operational changes may be made without departing from the scope of the claims appended hereto.
The present disclosure is generally related to re-timing of analog-to-digital (ADC) samples of data signals, e.g., signals that are read from data storage media. In some systems, e.g., those that use minimal or no oversampling, the signal should be sampled at appropriate instants in time to ensure efficient detection of encoded data. Due to factors such as frequency drift in clocks, variations in the media and read/write heads, thermal effects, etc., the timing of a signal can vary as it is received at the ADC. As a result, the timing offset of a sampled signal may be continuously adjusted to ensure that the eye diagram of the equalized samples is widely open for reliable detection.
Several timing recovery methods may be used depending on the system in which the recovery is used. The choice of the timing method may depend on several factors such as 1) the implementation complexity, 2) whether the method is data-aided or non-data-aided, 3) whether the signal is band-pass or baseband, 4) whether the signal is baud-rate or oversampled, 5) whether the timing loop is applied before or after the equalizer, 6) whether the timing information is extracted before or after the sampler/ADC, and 7) desired performance criterion.
In the present disclosure, two minimum-mean-square error (MMSE)-based schemes are described to perform timing adjustment on baud-rate samples. The first scheme, called pre-equalizer, performs the retiming of the ADC samples (through interpolation) using a timing error derived from the ADC samples and an error between a reference signal and the ADC samples. The second scheme, called post-equalizer, performs the retiming of the ADC samples (through interpolation) using a timing error derived from equalized samples and an error between a reference signal and the equalized samples.
The reference signals used to generate the error signals in both cases are different. In the pre-equalizer case, the reference signal is based on the channel impulse response, whereas in the post-equalizer case, the reference signal is based on the front-end target that is used for partial response equalization. In the pre-equalizer case, the timing error is a function of the reference error and the interpolated ADC samples. However, in the post-equalizer case, the timing error is a function of the reference error and the interpolated equalized samples. The amount of timing error extracted from the incoming signals affects the accuracy of the timing offset adjustment. The more information retrieved from the timing error, the better the accuracy of the timing loop.
Generally, the embodiments described herein utilize interpolation to perform timing adjustment. An example of interpolated timing adjustment is shown in the graph of
In some systems, timing offsets τ are used to adjust the ADC clock. However, where interpolation is used, an interpolator component uses a filter to produce samples that correct for the timing offsets without needing to adjust the ADC clock. Generally, an interpolation filter uses an integrator (e.g., accumulator, delay line) to process a set of the last samples. An assumption about the form of the sampled signal (such as band-limitedness) is made, and the interpolator attempts to adjust the sample timing to conform to this assumed form using the actual samples received.
The pre-equalizer configurations will first be described, details of which are shown in
The bits are convolved with the channel impulse response via block 210 to obtain the desired, pre-equalized and time-adjusted ADC sequence c(k). In this example, the channel impulse response estimated at block 210 is adaptively adjusted. The sequence c(k) is used to derive an error e(k) of the detected signal, the error e(k) is input to a least-mean-squared (LMS) processing block 212. The LMS processing block 212 determines a corrective phase shift τk, which is input to the interpolator 200 for performing the timing adjustment. A more detailed discussion of the pre-equalizer timing adjustment algorithm follows.
Generally, the processor in
In
In order to provide a value of τk that minimizes timing error, the functional of Expression (3) below is minimized with respect to the timing offset τ. As shown in Expression (4a), c(k) is the desired ADC signal given as the convolution of the channel impulse response h(k) of length Lh and the non-return-to-zero (NRZ) bit sequence {a(k)}.
Notice here that the NRZ bit sequence {a(k)} may be given as the true sequence during the acquisition phase or as a detected sequence from the detector during the tracking phase of the timing recovery. During the acquisition phase, a short sequence of known pattern, called preamble, can be used to start the training. The impulse response tap vector h(k)=[h(k+(Lh−1)/2), . . . , h(k+1), h(k), h(k−1), . . . , h(k−(Lh−1)/2)]T may be estimated adaptively using the LMS algorithm shown in Expression (4b), where μh is the adaptation step size, e(k) is the error between the desired signal c(k) and the time-adjusted (interpolated) signal xr(k;τ), as given in (1) and (3), and a(k) is a data vector given as a(k)=[a(k+(Lh−1)/2), . . . , a(k+1), a(k), a(k−1), . . . , a(k−(Lh−1)/2]T.
h
(k+1)
=h
(k)+μhe(k)a(k) (4b)
For the timing offset gradient-based adaptive algorithm, the instantaneous functional in Expression (5) below will be minimized. The gradient of (5) with respect to the parameter τ is shown in Expression (6), where the function sincd(j+τ) is the derivative of sinc(j+τ) with respect to τ and given in (7).
The adaptive algorithm for estimating the timing offset τ uses the negative slope towards the minimum of Expression (6) and takes the form shown in Expression (8) below, where μτ is the step size for the timing offset update. Replacing (6) into (8) will give the relationship in Expression (9a).
To operate within the range of the “sincd” lookup table, the expression given by (9a) may be re-written as Expression (10a), where τkI and τkF are the integer and the fractional parts of τk, respectively, and M is the order of the interpolation filter.
The function sincd(i+τkF), −(M−1)/2≦i≦(M−1)/2, may be tabulated using a quantized version of τkF. In such a case, Expression (10a) becomes Expression (11a) below, where LUT(j, τF) is a two-dimensional lookup table that contains the coefficients of Expression (7) for some given timing offset values τF.
For instance, if τkF is quantized with a step of 0.1, then the table LUT(i, τF) will contain 10M values for sincd(i+τkF), where for each value of τFk there are M values of sincd(.). Expressions (9a)-(11a) may be simplified so that only a one-dimensional lookup table for sincd(.) is used. If the timing offset τ in (9a) is transferred from sincd(.) to the signal x(.), then Expression (9a) becomes Expression (9b), where xr(k) is the retimed ADC signal. Similar transformation may be applied to (10a) and (11a), which become Expressions (10b) and (11b), respectively. The lookup table LUT(i) in (11b) is in fact a one-dimensional array that contains the M taps of the derivative of the interpolator sincd(i). From (9b)-(11b), the timing error function for the pre-equalizer retiming loop is given by Expression (11c) below.
In
Post-equalizer configurations are now discussed, details of which are shown in
As with the pre-equalizer case shown in
As in the pre-equalizer case, notice here also that the NRZ bit sequence {a(k)} may be given as the true sequence during the acquisition phase or as a detected sequence from the detector during the tracking phase of the timing recovery. For the adaptive algorithm the instantaneous functional shown below in Expression (14) will be minimized. The gradient of (14) with respect to the parameter τ is shown in Expression (15), where sincd(j+τ) is the derivative of sinc(j+τ) with respect to τ and is given as shown in Expression (16).
The adaptive algorithm for τ takes the form shown in Expression (17) below, where μτ is the step size for the timing offset update. Replacing (15) into (17) will give Expression (18a).
Here the FIR equalizer tap vector f=[f(−(L−1)/2), . . . , f(−1), f(0), f(1), . . . , f(L−1)/2)]T may also be updated in time via LMS algorithm shown in Expression (18b), where μf is the LMS step size and the input data vector xr(k; τ)=[xr(k+(L−1)/2; τ), . . . , xr(k+1; τ), xr(k; τ), xr(k−1; τ), . . . , xr(k−(L−1)/2; τ)]T.
f
(k+1)=
f
(k)+μfε(k)xr(k;τ) (18b)
To avoid performing a double convolution for each update of τ in (18a), the latter may be re-written as shown in Expression (19), where M is the order of the interpolation filter and the function sincd(j) (as given in Expression (7) or (16) with −(M−1)/2≦j≦(M−1)/2), can be generated as a lookup table LUT(j) with one single row of M values. In this case, Expression (19) becomes Expression (20). From (18)-(20), the timing error function for this case is given by Expression (20a).
The sinc interpolation block 500 may use the same structure and lookup table as seen in
A second embodiment of a post-equalizer timing adjustment processor is shown in the block diagram of
Following the same process as with the pre-equalizer embodiment, the timing offset may be estimated using a gradient-based LMS adaptation algorithm shown in Expression (22) below. Again here sincd(.) is the derivative of the sinc(.) function as defined by Expressions (7) and (16). To operate within the range of the “sincd” lookup table, Expressions (22) may be re-written as shown in Expression (23). The interpolation block 600 may use the same structure and lookup table as seen in
The examples presented above are shown being used in single-input, single output (SISO) read channels, where a single magnetic sensor signal is read to produce a single output stream of data. These concepts may also be used in a multi-sensor magnetic recording (MSMR) configuration. Generally, an MSMR device may include two or more read sensors on a single head, such as those used by two-dimensional magnetic recording (TDMR) data storage devices. In an MSMR device, the read channel is provided with multiple reads from multiple devices (e.g., readers, sensors). These reads are then combined using a multi-input single-output (MISO) equalizer, after which the process of detection and decoding continues as in the conventional channel with one reader. A block diagram of a MISO read channel according to an example embodiment is shown in the block diagram of
A two or more input samples 700-703 are received, e.g., from two or more ADCs which each sample a different signal from separate read sensors. The samples 700-703 are equalized via equalizers 704-706 and combined via summation element 708. The combined equalized signal is sent to a detector 710. A front-end target block 712 performs a convolution to obtain a desired signal d(k), which is used to estimate error e(k).
The ADC-retiming algorithms described above can be extended to MSMR read channels. In such a case, the adaptation of the timing offset can be driven by a common error for all MSMR channels. Either of pre-equalizer retiming and post-equalizer retiming can be used for MSMR. In
In
For the post-equalizer scheme, the criterion to be optimized takes the form shown in Expression (24) below, where p is the number of readers and xm(k) and xr,m(k) are the ADC signals from the mth reader before and after retiming, respectively. The signals ym(k), m=1, 2, . . . , p, are the individual equalized signals and y(k) is the overall equalized signal at the output of MISO equalizer.
An instantaneous version of (24) may be given as Expression (25) below, which can be optimized with respect to the timing offset vector τ=(τ1, τ2, . . . , τp). The differentiation of (25) with respect to τ gives Expression (26). The adaptation of the mth timing offset may be performed using Expression (27), which can be expanded as seen in Expression (28).
Here again, the FIR equalizer tap vector fm=[fm(−(L−1)/2), . . . , fm(−1), fm(0), fm(1), . . . , fm((L−1)/2)]T may also be updated in time via the LMS algorithm as shown in Expression (29), where μf,m is the LMS step size and xr,m(k; τ)=[xr,m(k+(L−1)/2; τ), . . . , xr,m(k+1; τ), xr,m(k; τ), xr,m(k−1; τ), . . . , xr,m(k−(L−1)/2; τ)]T is the equalizer input data vector from the mth reader. To avoid performing a double convolution for each update of τm in (28), the latter may be re-written as shown in Expression (30).
While the timing recovery schemes described herein may be used in any data communications channel, one application in which these schemes are contemplated for use is in persistent data storage systems such as hard disk drives. In
The controller 1004 is coupled to a read/write channel 1008 that processes data read from and written to the magnetic disks 1010. The read/write channel 1008 generally converts data between the digital signals processed by the controller 1004 and the analog signals conducted through one or more read/write heads 1012 (also referred to as a recording head). The read/write heads 1012 are positioned over the magnetic disks 1010 via a servo motor 1014 (e.g., voice coil motor) that moves one or more arms 1016 to which the read/write heads 1012 are mounted. Each of the read/write heads 1012 include one or more read transducers that detect changes in magnetic flux on the disk, and in response provide analog signals to the read/write channel 1008.
The read/write channel 108 includes one or more ADCs 1018 that sample the analog data at the appropriate time intervals (e.g., baud rate sampling, oversampling) and provide a digital value represented of the signal at each interval. This sampling may occur on one signal at a time, or multiple signals (e.g., MISO). A timing adjustment processor 1020 helps ensure that samples processed by a detector 1022 are in desired time synchronization. The detector 1022 determines the values of bits encoded in the signal using any detection/decoding scheme known in the art, such as a Viterbi algorithm. The detected bits are passed on to higher levels of processing, such as an error correction module 1024. The error-correction module 1024 may utilize extra data encoded on the disk 1010 that can be used with an error-correction code (ECC) to verify the data has been accurately read and to correct the data if decoding errors have been found.
In
Two timing recovery schemes are described in this disclosure. In one scheme, the timing adjustment is performed on the ADC samples (through interpolation) before the equalizer, e.g., without involving the equalized samples themselves. In another scheme, the timing adjustment is performed on the ADC samples (through interpolation) using a feedback from the equalizer output. Although the interpolating function shown in these examples is the sinc(.) function, there is no restriction on using any other interpolating functions in the timing adjustment (e.g., digital sinc function also known as Dirichlet function or some polynomial such as a spline interpolator). The two schemes may be applied in SISO or MISO mode. Based on some simulation experiments the two schemes presented here tend to adapt the timing offset very well and track very closely the true timing offset. It has also been found that the BER degradation due to timing jitter (either for pre-equalizer or post-equalizer schemes) is very small.
The various embodiments described above may be implemented using circuitry, firmware, and/or software modules that interact to provide particular results. One of skill in the arts can readily implement such described functionality, either at a modular level or as a whole, using knowledge generally known in the art. For example, the flowcharts illustrated herein may be used to create computer-readable instructions/code for execution by a processor. Such instructions may be stored on a non-transitory computer-readable medium and transferred to the processor for execution as is known in the art. The structures and procedures shown above are only a representative example of embodiments that can be used to provide the functions described hereinabove.
The foregoing description of the example embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the inventive concepts to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. Any or all features of the disclosed embodiments can be applied individually or in any combination are not meant to be limiting, but purely illustrative. It is intended that the scope be limited not with this detailed description, but rather determined by the claims appended hereto.