In certain embodiments, an apparatus may comprise a circuit configured to detect a cycle slip event during processing of a signal at a data channel, and shift an expected sampling phase of a detector of the data channel for a subsequent attempt to process the signal
In certain embodiments, a method may comprise detecting a cycle slip event during processing of a signal at a data channel based on timing error values produced from sampling the signal at a first sampling phase, and shifting an expected sampling phase of a detector of the data channel for a subsequent attempt to process the signal.
In certain embodiments, an apparatus may comprise a data channel for a magnetic storage medium configured to detect a timing excursion in a signal based on a difference between a sampling phase at which the signal is sampled and an expected sampling phase, and, in response to the signal failing to decode, adjust the expected sampling phase based on the detected timing excursion.
In the following detailed description of certain embodiments, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration of example embodiments. It is also to be understood that features of the embodiments and examples herein can be combined, exchanged, or removed, other embodiments may be utilized or created, and structural changes may be made without departing from the scope of the present disclosure.
In accordance with various embodiments, the methods and functions described herein may be implemented as one or more software programs running on a computer processor or controller. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays, and other hardware devices can likewise be constructed to implement the methods and functions described herein. Methods and functions may be performed by modules, which may include one or more physical components of a computing device (e.g., logic, circuits, processors, etc.) configured to perform a particular task or job, or may include instructions that, when executed, can cause a processor to perform a particular task or job, or any combination thereof. Further, the methods described herein may be implemented as a computer readable storage medium or memory device including instructions that, when executed, cause a processor to perform the methods.
System 100 may include a receiver (REC) 104 configured to receive a signal waveform 102. For example, the receiver 104 may be an antenna that receives wireless signals 102, or a read head that detects magnetic fields 102 generated by data stored to a hard drive. The receiver 104 may provide the received signal x(t) to an analog front end (AFE) 106, which may be circuitry configured to condition an analog signal via amplifiers, filters, and other operations, before providing the conditioned signal z(t) to other components for further processing. An analog to digital converter (ADC) 108 may periodically sample the conditioned analog signal at a frequency controlled by a clock signal generator 110 and timing recovery module 112 or timing loop. The clock generator 110 may generate a periodic clock signal, which may be modified by the timing recovery module 112 in order to match the sampling rate to the symbol rate of the signal 102. Symbol rate, also known as baud rate, may be the number of symbol changes, waveform changes, or signaling events across the signal 102 per unit of time (e.g. symbols per second). Each symbol can convey one or several bits of data. Sampling the signal 102 at the ADC 108 may include converting a continuous physical quantity (e.g. voltage) of the signal into discreet digital numbers or values representing the quantity's amplitude. The sampled values zk may be used to determine patterns in the signal which may be used to extract digital bits of information from the signal. The digital values from the ADC 108 may be provided to a digital receiver 114. The digital receiver may include various components, such as an equalizer, a detector, and a decoder. An equalizer may reverse or reduce distortions in the signal. A detector may determine a bit stream from the signal based on the sampled values zk from the ADC (e.g. whether the sample values indicate a 1 or a 0). The detected bit stream may be passed to a decoder, which may decode the bit stream into usable data bits 122. For example, the data in the signal 102 may be encoded with an error correction code, and the decoder may attempt to determine and correct errors in the detected bits based on the error correction code. The decoder may output the data bit sequence 122 of decoded and error-corrected bits, representing the data encoded within the signal 102.
As outlined above, in sampled data systems a continuous-time waveform (e.g. signal 102) may be applied to an analog front-end (AFE) 106 to be conditioned prior to sampling by an analog-to-digital converter (ADC) 108. In many implementations, the sampling rate of the ADC is equivalent to the baud/symbol rate of the signal 102 and, thus, a single sample is produced for each symbol to be equalized by the digital receiver 114. The digital receiver 114 may operate on the expectation that the samples zk of the continuous time waveform are taken at a desired, predetermined, sampling phase. As such, the timing recovery module 112, which acts to achieve and maintain a desired sampling phase, can be a critical aspect of sampled data systems.
A sampling phase may refer to where a signal is sampled within a sampling interval for each symbol. An expected sampling phase may correspond to an expected point at which a signal is sampled within the sampling interval for each symbol. For example, a 0% expected sampling phase may expect each sample to be taken in the middle of the sampling interval, while a +20% expected sampling phase may expect the sample to be taken 20% of the sampling interval later in time, and −20% may expect the sample to be taken 20% of the sampling interval earlier in time. As another example, a signal may be sampled at regular intervals (x, x+T, x+2T, x+3T, . . . ), where x is a value in the range [0, T]. In this context, the sampling interval may be T, or equivalently stated, the sampling frequency may be 1/T, and the sampling phase may be x. If a signal is sampled every second, it could be sampled at times (1, 2, 3, . . . ) or (1.25, 2.25, 3.25) or (1.5, 2.5, 3.5, . . . ). In each of these examples, the sampling frequency is 1 sample per second. However, the sampling phase, or where in the sampling interval the sample is taken, is different. In a sampled data system, x may be chosen up-front and cannot be changed. The sampling phase x may, thus, be the expected or desired phase at which the signal is sampled.
However, the symbol rate of the sampled signal, the sampling phase, or both may not remain perfectly consistent, and so the sampling phase at which samples are taken may deviate from the expected sampling phase. Differences between the actual sampling phase and the expected sampling phase, sometimes called a sampling or timing error, may degrade the performance of a sampled data system. As such, sampled data systems may estimate this timing error using the obtained samples and adjust the sampling phase to reorient the sampling phase back toward the expected sampling phase (e.g. by slightly delaying the next sample or taking the next sample slightly early). This operation is typically referred to as timing recovery.
System 100 may be configured to generate a sampled data sequence at a desired sampling phase, according to certain embodiments of the present disclosure. Digitized samples from digital receiver 114 may be applied to the timing recovery module 112, which computes a timing error between the sampling phase of the applied samples and the desired sampling phase. The timing recovery module 112 may then modulate the phase of the sampling clock based on the timing error to drive the residual phase error to zero.
The efficacy of the timing recovery module 112 may be dependent on the ability of the digital receiver 114 to accurately extract bit values from the samples zk. However, if a significant deviation in the sampling phase from the expected sampling phase arises (e.g. due to an irregularity in the signal), referred to as a timing excursion, the digital receiver 114 may make incorrect decisions on which symbol or bit value a given sample corresponds to. Timing excursions may be caused by any number of things. One example could be low reliability decisions by the timing recovery module 112 which cause the timing loop to drift away from the desired sampling phase. A “mode hop” may be a cause of timing excursion specific to magnetic recording and, specifically, HAMR (heat-assisted magnetic recording). When the signal is being written to the disc, a mode hop may refer to an instantaneous jump in phase of the signal written to the disc. During readback of the signal, the phase could be as expected until this written-in phase jump is encountered. The mode hope may cause the phase to instantaneously jump away from the expected sampling phase by an amount equal to the magnitude of the written phase discontinuity. In this manner a mode hop can induce a timing excursion on the readback of the sector including the mode hop.
Timing excursions can cause significant problems in recovering valid data from the signal 102. Accordingly, a timing excursion module 116 may be used to detect timing excursions and to shift a sampling phase of the detector based on the timing excursions. Signal sampling and timing excursions are discussed in greater detail in regards to
Turning now to
Where the signal 200 is sampled within each sampling interval 220 may be referred to as the sampling phase. In the example embodiment of
Irregularities in the received signal (e.g. due to eccentricity of a data track on a disk storage medium, where the track is not perfectly centered around the disk center) or other influences may result in the signal frequency being slightly inconsistent over time 202. Accordingly, the sampling phase at which the samples 206 are taken may be slightly off from the expected position, e.g. the peak, of the signal.
Slight irregularities can be corrected based on sampling error estimates. Obtaining sampling error estimates is further described below in regard to
A more significant deviation in the sampling phase from the expected phase (e.g. a timing excursion or mode hop creating a significant phase offset from the expected phase) may result in a sample being taken at a point 210 which may make it difficult for a detector to determine whether the sample corresponds to a preceding symbol 212, or to a following symbol 214. Timing error correction estimates may push the sampling phase back or forward 216, depending on how the detector interprets the sample 210.
However, as the sampling phase moves away from its current sampling interval, it necessarily moves towards another. For example, if the phase drifts later in time, it will eventually move into the proximity of the expected sampling phase for the following symbol 214. Conversely, if the phase drifts earlier in time, it will eventually move into the proximity of the expected sample phase for the preceding symbol 212. As such, in the former case, the estimated data bit will begin to resemble one bit later in time, whereas in the latter case the estimated data bit will begin to resemble one bit earlier in time. As there may be no means to determine the correct integer alignment of the samples with the written or transmitted data sequence, the timing errors may act to lock the channel onto the closest symbol interval. These events, in which the timing loop locks onto an incorrect sampling interval, may be referred to as cycle slips, and can cause a discontinuity in the alignment of the samples to the data sequence.
As a simple example, assume that, due to a timing excursion, a sample 210 is taken in-between symbols 212 and 214, instead of at a peak of the symbols. The system may not know in which direction to correct the sampling phase (e.g. take the next sample early to push the phase backward, or take the next sample late to push it forward). Assume the correct response is to push the phase back (e.g. to the left), but instead the system adjusts the sampling phase forward (e.g. toward the right). After a period of time, the sampling phase may become fully locked one symbol ahead of where it should be, and therefore all subsequently received symbols may also be received out of order (e.g. one symbol early). As such the results would may be as follows: At the beginning of a sector (before the timing excursion) the alignment would be correct; however, at the end of the sector, the timing is off by 1 bit, with 1 bit being “lost” due to skipping ahead. Further, the sampled values while the adjustment was taking place may be of low quality and the corresponding bit values unclear. The received data may therefore not be recoverable through error correction or may otherwise not be able to be decoded. The effects of timing excursions are shown in regard to
When sampling sequence A, a cycle slip may occur at some time between symbols k and m. As shown, the samples in sequences B and C are aligned with the underlying data sequence A up to bit k; however, they are shifted relative to the data sequence as of bit m.
Sequence B may have encountered a forward cycle slip, wherein the sample phase incorrectly locked onto a next symbol, resulting in a bit being “lost”, or a next bit X after the sequence A being read into the sequence. Accordingly, while sequence A is at bit bm, sequence B is at ym+1, corresponding to symbol bm+1. Sequence C may have encountered a backward cycle slip, wherein the sampling phase incorrectly locked onto a previous symbol, resulting in an extra bit being detected. Accordingly, while sequence A is at bit bm+1, sequence C is still at ym, corresponding to symbol bm. As shown, both sequences B and C proceed to sample an incorrect symbol for all remaining bits. As these samples are typically applied to a detector and an error-correction code (ECC) decoder, such events are catastrophic to the recovery of the original data pattern from sequence A, and thus it is important to avoid such events.
In sample data systems such as hard drives, a channel may perform an initial synchronization of a timing loop, which controls a sampling phase and sampling frequency, to the written data sequence (e.g. the sampling instances are set to be within an acceptable margin of error from the desired sampling instances). Once the timing loop is synchronized, operations proceed on the assumption that any deviations in the desired sampling instances are of sufficiently low bandwidth and magnitude such that the timing loop may remain locked once initialized (e.g. able to identify the correct symbol for each sample and adjust the timing error to adapt to deviations). Ultimately, the ability of a timing loop to maintain lock may be dependent on the performance of the utilized detector in the presence of phase offsets (if the detected data sequence is error-free, it is not possible to lose lock).
In the context of magnetic recording, the above assumptions described in regard to
The DSD 504 may include a memory 506 and a read/write (R/W) channel 508, such as the channel described in regard to
DSD 504 may include a timing excursion module (TEM) 510, such as the TEM 116 of
The buffer 612 can temporarily store data during read and write operations, and can include a command queue (CQ) 613 where multiple pending operations can be temporarily stored pending execution. Commands arriving over the interface 604 may automatically be received in the CQ 613 or may be stored there by controller 606, interface 604, or another component.
The DSD 600 can include a programmable controller 606, which can include associated memory 608 and processor 610. The controller 606 may control data access operations, such as reads and writes, to one or more disc memories 609. The DSD 600 may include an additional memory 603 instead of or in addition to disc memory 609. For example, additional memory 603 can be a solid state memory, which can be either volatile memory such as DRAM or SRAM, or non-volatile memory, such as NAND Flash memory. The additional memory 603 can function as a cache and store recently or frequently read or written data, or data likely to be read soon. Additional memory 603 may also function as main storage instead of or in addition to disc(s) 609. A DSD 600 containing multiple types of nonvolatile storage mediums, such as a disc(s) 609 and Flash 603, may be referred to as a hybrid storage device.
The DSD 600 can include a read-write (R/W) channel 617, which can encode data during write operations and reconstruct user data retrieved from a memory, such as disc(s) 609, during read operations. A preamplifier circuit (preamp) 618 can apply write currents to the head(s) 619 and provides pre-amplification of read-back signals. In some embodiments, the preamp 618 and head(s) 619 may be considered part of the R/W channel 617. A servo control circuit 620 may use servo data to provide the appropriate current to the coil 624, sometimes called a voice coil motor (VCM), to position the head(s) 619 over a desired area of the disc(s) 609. The controller 606 can communicate with a processor 622 to move the head(s) 619 to the desired locations on the disc(s) 609 during execution of various pending commands in the command queue 613. The DSD 600 may have two distinct channels for processing data sectors and servo sectors (e.g. a data channel and a servo channel), although in some embodiments a single channel may be used for both types of signal processing, or certain components may be shared by both channels. For example, the preamp 618 and R/W channel 617 may include components used when processing servo data, and the servo control 620 may also include components of the servo channel and perform servo signal processing.
DSD 600 may include a timing excursion module (TEM) 330. The TEM 330 may perform the methods and processes described herein to detect and correct for timing excursions when sampling a signal, such as data recorded to disc 609. The TEM 330 may be a processor, controller, other circuit, or a portion thereof, it may include a set of software instructions that, when executed by a processing device, perform the functions of the TEM 330, or any combination thereof. The TEM 330 may be part of or executed by R/W channel 617, included in or performed by other components of the DSD 600, a stand-alone component, or any combination thereof. Additional details of an example channel, such as R/W channel 617 or the communication channel of
One difficulty in realizing a timing error corrected system is that the estimates of the written or transmitted data sequence (bk) must be of sufficient reliability to generate high-quality timing errors. As the detector 704 is also a sampled data system it, too, may depend on the applied samples zk to be generated at an expected sampling phase. When working properly, the sampling phase used by the ADC 702 should be at (or near) the expected sampling phase such that high-reliability estimates bk of the underlying data sequence can be made. Small perturbations about this phase may result in only a small degradation of the quality of the detector 704 decisions; however, they should remain of high enough reliability to generate quality error estimates ek to drive the sampling phase back to its expected value. This condition may be referred to as a “locked” condition, in that the sampling phase used by the ADC 702 is locked to the frequency of the signal.
If the sampling phase deviates too significantly from its expected value, the reliability of the detector 704 estimates can degrade significantly. In this case, the timing error quality may suffer and, in some instances, will be unable to drive the sampling phase back to its expected value. Here, low quality timing errors ek may cause the sampling phase to drift away from its intended value (e.g. be “corrected” in the wrong direction), until it “locks” onto the previous or next symbol instead of the correct one. This erroneous sampling phase correction can result in the data from the signal being unrecoverable. Accordingly, timing error estimates ek may also be provided to a timing excursion module (TEM) 716, which may detect timing excursions as described herein. Alternately, the TEM 716 may receive the sample values zk and the sample estimates bk and calculate its own ek in order to detect timing excursions, in which case the TEM 716 may replace or incorporate the timing error generation module 708. When timing excursions are detected, the TEM 716 may then provide input to the detector 704 as to what the expected sampling phase should be based on the assessment of the existence of a timing excursion. By adjusting the expected sampling phase of the detector 704 in this manner, the system may remain locked to the proper symbol rather than drifting to an incorrect symbol.
The TEM 810 may include a timing excursion detector module 812 and a detector timing compensation module 814. During normal operation, the timing excursion detector 812 monitors the sampling phase to detect anomalies (e.g. timing excursions) occurring in the tracking process. The timing excursion detector may calculate timing or phase errors based on sample values zk and sample estimates bk from the receiver 804, or the timing excursion detector 812 may receive error estimates ek from a timing error generation module. The errors may be determined based on a difference between the sampled values and what expected values would be if obtained at the expected sampling phase. These error values may be accumulated to determine when large timing excursions are encountered. The timing excursion detector 812 may be configured to determine the polarity, relative magnitude and, in some implementations, the locations of timing excursion events. The polarity and magnitude of the timing excursion may indicate how the timing loop responded to the excursion. The timing excursion detector may generate output indicating whether a timing excursion was detected (e.g. a binary ‘yes’ or ‘no’ based on whether the errors exceeded a threshold value, or a ‘certainty range’ based on the magnitude of the errors), and the information such as polarity, magnitude, etc. The response of the timing loop may be correct or incorrect, and a determination may be made as to whether the data was successfully decoded before timing excursion correction or compensation is performed.
When a given read fails to decode, the output of the timing excursion detector 812 may be utilized to determine if, indeed, the failure was caused by a timing excursion event and, if it was, how the tracking loop responded to that event. When a re-read is performed on the failed sector, the detector timing compensation module 814 can utilize this information to shift the expected sampling phase of the detector in a manner that reduces the probability that a cycle slip will occur. For example, shifting the lock window of the timing loop by adjusting the expected sampling phase of the detector may allow the detector to correctly adjust for the phase offset of the timing excursion and correctly maintain lock.
Turning to
The bottom graph 902 depicts an adjusted sampling phase over a time period (samples) driven by a timing loop based on the timing error. Large timing excursions may result in the timing loop pushing the sampling phase 902 quickly in a direction to compensate for the excursion. The direction of sampling phase compensation may be incorrect, which can result in a cycle skip.
As stated above, the timing excursion detector may be a module configured to detect anomalies in the sampling phase during the read of a sector. In particular, if a timing excursion occurs, the timing excursion detector may discern any or all of the polarity, magnitude, and location of the timing excursion. When a negative timing excursion occurs, at approximately position 904 and time 1500, the resulting timing error 906 may be positive. This timing error 906 may be accumulated through the low-pass filter and, as a result, the sampling phase 902 may be ramped in the positive direction 908 to rectify the observed offset. As the sampling phase 902 is adjusted and approaches the expected sampling phase the timing error 906 returns back to near zero and the sampling phase 902 settles at its correct value. Conversely, in the case of a positive polarity timing excursion, the timing error may be negative and the sampling phase may be adjusted in the negative direction.
The timing excursion detector may be configured to detect the existence of a timing excursion, and discern its associated attributes, by utilizing either a slope of the sampling phase 902 or a magnitude of the windowed timing error 906. These signals are, in fact, interchangeable (since the sampling phase 902 is obtained by integrating the timing error 906) and, therefore, reference may be made to only the windowed timing error 906 for the remaining disclosure without restricting the covered embodiments to only using this implementation.
The detection of the existence, polarity, and location of any excursion(s) occurring during the read of a sector may be conducted to detect a single event per sector (or other segment of the signal), or to detect multiple events per sector. As described above, the data used to detect the events may be provided to the timing excursion detector by a digital receiver of a data channel.
When detecting a single event per sector, the timing excursion detector may, for each sector, save only the minimum and maximum values of the windowed timing error 900 (or, equivalently, the slope of the sampling phase 902) as well as the location of one or both of these observed values. For the example provided in
When detecting multiple events per sector, the timing excursion detector may establish the start and end of each event in order to distinguish distinct events. A magnitude and polarity of the event may also be recorded. To establish the start and end points of each event, a threshold may be utilized to which the magnitude of the windowed timing error 700 is compared to determine periods of timing excursions. Distinct thresholds may be utilized for positive and negative excursions. An excursion may, then, be defined as a period of time over which the observed magnitude of the windowed timing error 900 exceeds the specified threshold. For example, a threshold of 2000 may be utilized in
The timing excursion detector may detect only what action was taken by the timing loop, but may provide no indication as to whether that action was correct. For example, if a cycle slip occurs, the timing excursion detector may detect the presence of an anomaly, and the direction of the timing loop's sampling phase corrective reaction; however, this direction would have been incorrect, resulting in the cycle slip. As such, the utility of the timing excursion detector may be in its use in error recovery. In the event of a decoder failure, the output of the timing excursion detector may be checked to determine if the failure was, indeed, caused by a timing excursion. If deemed so, a determination may be made that the action taken by the timing loop was incorrect and, thus, the appropriate action may be taken on a subsequent re-read. This compensation procedure is discussed further below.
As discussed and illustrated in
The detector timing compensation performed by the detector timing compensation module 814 of
In the detector timebase shifting implementation, the utilized detector may be modified, or the parameters of the detector changed, to adjust the expected sampling phase of the detector. This may be accomplished for target-based detectors, for example, by interpolating the target polynomial to achieve the desired shift. When a sector fails to decode, a detector timing compensation module can evaluate the output of a timing excursion detector to determine whether a timing excursion event occurred during a sector, and if so, how the timing loop responded to the timing excursion. The detector timing compensation module could then adjust the expected sampling phase of the detector in the correct direction for a re-read attempt so as to shift the lock window and improve the detector's ability to correctly respond to the timing excursion. For example, the detector timing compensation module may adjust the expected sampling phase in an opposite polarity to how the timing loop responded on the first read attempt, on the assumption that the sector failed because the timing loop responded incorrectly to the timing excursion. The detector parameters may be calculated and adjusted on-the-fly. For example, the detector timing compensation module may determine the appropriate phase shift amount, and then interpolate parameters to the appropriate values. Detector parameters may be calculated and loaded into registers for signal processing.
For the pre-optimized detectors implementation, multiple detectors may be designed at different sampling phases a-priori, such that they may be retrieved and used on demand. The multiple detectors may be accomplished by including multiple different detector components in the channel, each configured for one or more different sampling phases. The system may switch between the different detectors in order to best interpret sampled signals. The multiple detectors may also be accomplished via pre-configured parameter sets stored to memory that can be loaded onto a signal detector as needed. This may only require the storage of the detector's parameters to be switched in when desired. For example, an expected sampling phase of the detector may be modified by updating a register to direct the detector to access a look-up table having different coefficients to generate an interpolation filter corresponding to the desired sampling phase.
For the sampling interpolation implementation, rather than shifting the expected sampling phase of the detector, the samples can be interpolated to achieve the negative of the desired phase shift. For example, rather than using a detector optimized at +20%, the samples may be interpolated by −20% of the sampling interval. An interpolation filter could be applied at the detector or another component to shift the phase of the samples as desired. Interpolating the samples may allow the detector to provide optimum performance without adjusting the detector's expected sampling phase parameters. The sampling interpolation implementation may be amenable to an arbitrary selection of phase offset, as only the selected interpolation coefficients may require adjustment to achieve any desired offset. The detector timing compensation module may be configured to perform the sample interpolation and provide the interpolated samples to the detector, or the detector timing compensation module may direct another component to perform the interpolation.
The detector timing compensation performed by the detector timing compensation module may be performed in a number of ways. For example, two methods may include static detector timing compensation, and dynamic detector timing compensation.
Static detector timing compensation may lend itself to a low-complexity implementation. With static compensation, a single detector with a selected expected sampling phase may be utilized for the entirety of a re-read operation. In the event of a sector failure which is deemed by the timing excursion detector to be caused by a timing excursion, the detector expected sampling phase for the re-read may be modified according to the polarity of the detected excursion (and, possibly, its magnitude). For example, if the polarity of the excursion is positive, the expected sampling phase may be adjusted to +20%, thus adjusting the “lock range,” or range of sampling phases which will not induce a cycle slip, to ˜[−20%, +60%] of the sampling interval. Adjusting the expected sampling phase by 20% may increase the lock range by approximately 20% to the positive side.
In some embodiments, the detector timing compensation module may not adjust the detector phase by an arbitrary amount. The detector may also need to maintain lock during the read up to the point of the timing excursion, as well as after the timing excursion is resolved, so the range of the detector must include the phase 0 in its lock range. Adjusting the phase too much in the positive or negative direction may prevent the detector from correctly interpreting samples from the sector outside of the excursion.
The static detector timing compensation method may be most useful if there is a single significant timing excursion in the sector, or if there are multiple timing excursions of the same polarity. By shifting the lock range of the detector relative to the original range, the detector may be less robust to phase excursions of the opposite polarity. For example, using a detector configured to expect a sampling phase +20% may allow for excursions up to +60% to be recovered from; however, negative excursions with magnitude in excess of −20% may cause cycle slips.
Relatedly, the method of “detection of a single event per sector” discussed above may be well suited for use in static detector timing compensation. Since the maximum positive and maximum negative windowed timing errors may be stored, those values can be used to determine the appropriate shift in the detector's expected sampling phase, which may allow recovery without being vulnerable to all phase excursions of the opposite polarity. The magnitude and polarity of the phase shift may be selected to ensure that both the maximum negative and positive values are within the recoverable range. The maximum positive and negative values can be used to select a sampling phase that allows the detector to capture both extremes, when possible.
Static detector timing compensation could also be used without the inclusion of a timing excursion detector. In such an embodiment, it can be assumed that a sector failure is caused by a timing excursion since there is no detector to attest to the cause of failure. Since the polarity of the assumed excursion may be unknown, both polarities may be tried during subsequent re-reads of the sector. Different detector sampling phase shifts may also be applied. The lack of a timing excursion detector may come at the expense of an elongated recovery time.
In order to recover from multiple phase excursions of potentially different polarities, static detector timing compensation as described above may not be effective. Instead of or in addition to the static detector timing compensation method, more complex methods may also be used that offer some advantages over the static method. These more complex methods may include dynamic detector timing compensation.
Dynamic detector timing compensation may be based on the detection of multiple events per sector approach to excursion detection discussed previously. In this approach, the output of the timing excursion detector module may indicate, for each detected timing excursion, a starting and ending time, as well as a magnitude and polarity. During a re-read, the appropriate detector may be utilized based on the current location in a sector and the detected phase excursions (e.g. their locations, polarity, and magnitudes). In the dynamic compensation method, a 0% expected sampling phase detector can be utilized for all portions of the sector outside of the detected excursions. The significant advantage of dynamic detector timing compensation, as compared to static detector timing compensation, is that it may be used to resolve multiple timing excursions, of arbitrary polarities, within a single sector.
Furthermore, since the dynamic method is not restricted to utilizing parameters which will work for all portions of the sector, phase excursions of any magnitude may be compensated for. For example, using static detector timing compensation, phase excursions with magnitude in excess of, e.g. 75% of the sampling interval may not be recovered from, since the expected sampling phase of this detector may not be shifted such that both 75% and 0%, or −75% and 0%, are inside the detector's lock range. Using dynamic detector compensation, however, an excursion of arbitrary magnitude may be compensated for. For example, if an excursion of magnitude +80% occurs, detector parameters for phase +50% may be switched in at the time of the excursion. The adjust parameters should allow for initial pull-in from this excursion. As the timing loop reacts and begins to resolve the excursion, the detector parameters may be switched down to, e.g. +20%. Finally, when the excursion is completely resolved, detector parameters for 0% may be utilized.
As detailed in the example above, by “walking” the detector parameters appropriately (e.g. choosing the appropriate detector parameters and timing their use correctly), the phase may always be returned to its correct value. The timing excursion detector may be used to aid in this dynamic parameter switching in a real-time manner. Here, the windowed timing error may be monitored and, based on the current value of its magnitude and polarity, the parameters may be appropriate switched at the correct times. The timing excursion information collected during the first read (e.g. start, end, magnitude, polarity) may be to set the parameters of the detector for a re-read. During the re-read, the timing excursion module (TEM) may continue to monitor the timing error values. So, for example, when the first excursion is encountered during the re-read, the detector parameters can be changed accordingly. The expected phase may then be walked back towards the correct sampling phase (e.g. 0%). As the phase moves, timing error will begin to build since the current phase is moving away from the expected sampling phase of the modified detector. The timing error values monitored during the re-read can be used to time the next parameter switch (e.g. when the timing error values exceed a threshold).
Example methods for timing excursion detection and recovery are discussed in regard to
At 1108, a determination may be made whether the signal failed to decode. For example, a decoder may be unable to decode the bit values generated by a detector, indicating poor bit error rate (BER). If the signal did not fail to decode, a determination may be made that the sector was successfully read, and the method 1100 may end at 1110.
If the sector did fail to decode, a determination may be made whether a timing excursion was detected while processing the sector, at 1112. For example, a timing excursion may be determined to have occurred if the timing errors exceeded a threshold value at 1106. If no timing excursion was detected, a determination may be made not to adjust the sampling phase on re-read attempts, at 1114.
If a timing excursion was detected, the method 1100 may include shifting the expected sampling phase of the detector based on the timing excursion, at 1116. For example, a timing compensation detection module may shift the expected sampling phase based on a magnitude, polarity, and location of the detected timing excursion(s). At 1118, the method 1100 may include re-attempting to detect values from the signal samples based on the shifted expected sampling phase, for example by performing a re-read operation.
Various alterations to the method may be made. For example, a system may not include a timing excursion detector module, and so no detection of timing excursions may be performed at 1106, and no special determination regarding timing excursions may be made at 1112. Instead, the existence of a timing excursion may be assumed
The method 1200 may include storing a minimum determined timing error value observed over a segment of the signal (e.g. a sector of a storage medium), at 1204, and a maximum timing error value, at 1206. At 1208, the method 1200 may include storing a location corresponding to the stored timing error values, at 1208. The location may correspond to a time indicator or a sample number within the segment of the signal. A location value may be stored for the timing error value with the largest magnitude (e.g. based on the absolute values of the minimum and maximum timing error values), a point at which the timing error value first exceeded a threshold, a location for both the minimum and maximum values, or another location indicators for a timing excursion. The minimum, maximum, and location values may be stored to a register or other memory for use in adjusting an expected sampling phase if the read signal fails to decode.
The method 1300 may include determining a sequence of timing error values based on received sample values, at 1302. A determination may be made whether a current timing error value exceeds a threshold value, at 1304. The threshold value may be set so that only large timing excursion events exceed the threshold. If the threshold is not exceeded, the method 1300 may include continuing to determine timing error values, at 1302.
If a timing error value does exceed the threshold, the method 1304 may include storing a start time or start location for a timing excursion, at 1306. For example, a timing excursion detector may store a time value or sample number corresponding to a point at which the timing error exceeded the threshold value. The method 1300 may include continuing to determine timing error values, at 1308, and determining whether a current timing error value is less than the threshold value, at 1310. If not, the method 1300 may include continuing to determining timing error values, at 1308. If the timing error value is less than the threshold, the method 1300 may include storing an end time for the timing excursion, at 1312. The timing excursion may correspond to the period over which the timing errors exceeded the threshold value. In some embodiments, the method 1300 may include storing a polarity (e.g. positive or negative) and magnitude (e.g. the largest timing error value during the timing excursion) of the timing excursion, at 1314. The start time, end time, and polarity and magnitude may be stored as a timing excursion indicator.
The method 1300 may include determining whether the sector read operation has completed, at 1316. If it has not, the method 1300 may include continuing to determine timing error values, at 1302, and potentially recording timing excursion indicators for additional timing excursions. If the sector read operation has completed, the method may end, at 1318.
The method 1400 may include a sector failing to decode, at 1402. A determination may be made whether sampling phase timing errors arising from the sector exceeded a threshold, at 1404. A timing excursion detector may be configured to detect anomalies in the sampling phase, allowing the identification of one or more timing excursions. Timing errors exceeding the threshold value may indicate a timing excursion occurred. If no timing errors exceeded the threshold, a determination may be made that no cycle clip occurred, and no modification to the expected sampling phase may be made, at 1406.
If timing errors did exceed a threshold, the method 1400 may include selecting a first timing excursion identified for the sector, at 1408. The method 1400 may include determining at least some of a location, polarity, and magnitude of the selected timing excursion, at 1410. For example, in a system configured to adjust for a single timing excursion per sector, the adjustment may be applied for the entire sector and a specific location for the timing excursion may not be needed.
The method 1400 may include shifting an expected sampling phase of a detector based on the polarity and magnitude of the timing excursion, and for a time period based on the location of the timing excursion. For example, in response to a timing excursion, the expected sampling phase can be adjusted by different polarities, magnitudes, or both, with the adjustment localized based on when the timing excursion was detected. Sampling phase adjustment localized based on timing excursions can be performed for a single excursion in a sector, or for multiple timing excursions within the sector. Shifting the expected sampling phase may adjust a lock range within which the detector can maintain a timing lock on the signal, and shifting the expected sampling phase for each timing excursion may enable the detector to maintain lock for timing excursions having opposite polarities that would otherwise exceed a lock range of the detector.
At 1414, a determination may be made whether there are any remaining timing excursions. If there are, the method 1400 may include selecting a next timing excursion that was identified within the sector, at 1416, and determining the excursion parameters at 1410. If no timing excursions remain, at 1414, a re-read attempt may be performed on the sector, employing the one or more shifted expected sampling phase(s) at the corresponding time periods, at 1418.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown.
This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be reduced. Accordingly, the disclosure and the figures are to be regarded as illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
5563746 | Bliss | Oct 1996 | A |
5726818 | Reed et al. | Mar 1998 | A |
5754352 | Behrens et al. | May 1998 | A |
5793548 | Zook | Aug 1998 | A |
5822142 | Hicken | Oct 1998 | A |
5909332 | Spurbeck et al. | Jun 1999 | A |
5954837 | Kim | Sep 1999 | A |
6069758 | Chung | May 2000 | A |
6172836 | Bang | Jan 2001 | B1 |
6275346 | Kim et al. | Aug 2001 | B1 |
6307696 | Bishop et al. | Oct 2001 | B1 |
6330293 | Klank et al. | Dec 2001 | B1 |
6353649 | Bockleman et al. | Mar 2002 | B1 |
6480349 | Kim et al. | Nov 2002 | B1 |
6594094 | Rae | Jul 2003 | B2 |
6594098 | Sutardja | Jul 2003 | B1 |
6760185 | Roth et al. | Jul 2004 | B1 |
6973150 | Thuringer | Dec 2005 | B1 |
6996193 | Yamagata et al. | Feb 2006 | B2 |
7035029 | Sawada et al. | Apr 2006 | B2 |
7068461 | Chue et al. | Jun 2006 | B1 |
7075967 | Struhsaker et al. | Jul 2006 | B2 |
7199956 | Moser et al. | Apr 2007 | B1 |
7297582 | Asakura et al. | Nov 2007 | B2 |
7602568 | Katchmart | Oct 2009 | B1 |
7643548 | Hafeez | Jan 2010 | B2 |
7665007 | Yang et al. | Feb 2010 | B2 |
7738538 | Tung | Jun 2010 | B1 |
7917563 | Shih et al. | Mar 2011 | B1 |
7995691 | Yang | Aug 2011 | B2 |
8019026 | Maltsev et al. | Sep 2011 | B2 |
8077571 | Xia et al. | Dec 2011 | B1 |
8121229 | Kuo et al. | Feb 2012 | B2 |
8139305 | Mathew et al. | Mar 2012 | B2 |
8159768 | Miyamura | Apr 2012 | B1 |
8266505 | Liu et al. | Sep 2012 | B2 |
8331050 | Lou | Dec 2012 | B1 |
8400726 | Zheng | Mar 2013 | B1 |
8405924 | Annampedu | Mar 2013 | B2 |
8516347 | Li et al. | Aug 2013 | B1 |
8553730 | Schmidl et al. | Oct 2013 | B2 |
8593750 | Shibano | Nov 2013 | B2 |
8625216 | Zhang et al. | Jan 2014 | B2 |
8681444 | Zhang | Mar 2014 | B2 |
8706051 | Park et al. | Apr 2014 | B2 |
8774318 | Lakkis | Jul 2014 | B2 |
9043688 | Chan et al. | May 2015 | B1 |
9077501 | Oberg | Jul 2015 | B1 |
9078204 | Okazaki | Jul 2015 | B2 |
9129646 | Mathew et al. | Sep 2015 | B2 |
9178625 | Hueda | Nov 2015 | B1 |
9236952 | Sun | Jan 2016 | B2 |
9362933 | Chaichanavong | Jun 2016 | B1 |
9425950 | Kou | Aug 2016 | B2 |
9537589 | Kim et al. | Jan 2017 | B2 |
9613652 | Link et al. | Apr 2017 | B2 |
20020094048 | Simmons et al. | Jul 2002 | A1 |
20030026016 | Heydari et al. | Feb 2003 | A1 |
20030048562 | Heydari et al. | Mar 2003 | A1 |
20030185291 | Nakahira et al. | Oct 2003 | A1 |
20040047403 | Choi et al. | Mar 2004 | A1 |
20070002890 | Mangold et al. | Jan 2007 | A1 |
20070018733 | Wang | Jan 2007 | A1 |
20070205833 | Mar | Sep 2007 | A1 |
20080292029 | Koslov | Nov 2008 | A1 |
20090268857 | Chen | Oct 2009 | A1 |
20100138722 | Harley | Jun 2010 | A1 |
20100211830 | Sankaranarayanan et al. | Aug 2010 | A1 |
20100272150 | Kil et al. | Oct 2010 | A1 |
20110072330 | Kolze | Mar 2011 | A1 |
20110158359 | Khayrallah et al. | Jun 2011 | A1 |
20130182347 | Maeto | Jul 2013 | A1 |
20130339827 | Han et al. | Dec 2013 | A1 |
20140337676 | Yen et al. | Nov 2014 | A1 |
20140355147 | Cideciyan et al. | Dec 2014 | A1 |
20150124912 | Eliaz et al. | May 2015 | A1 |
20150179213 | Liao et al. | Jun 2015 | A1 |
20150189574 | Ng et al. | Jul 2015 | A1 |
20160055882 | Cideciyan | Feb 2016 | A1 |
20160134449 | Liu | May 2016 | A1 |
20160156493 | Bae et al. | Jun 2016 | A1 |
20160270058 | Furuskog et al. | Sep 2016 | A1 |
20160293205 | Jury et al. | Oct 2016 | A1 |
20170162224 | Mathew et al. | Jun 2017 | A1 |