Various embodiments of the present invention provide systems and methods for processing data, and more particularly to systems and methods for correlation based data alignment.
Various data processing systems have been developed including storage systems, cellular telephone systems, and radio transmission systems. In such systems data is transferred from a sender to a receiver via some medium. For example, in a storage system, data is sent from a sender (i.e., a write function) to a receiver (i.e., a read function) via a storage medium. As information is stored and transmitted in the form of digital data, errors are introduced that, if not corrected, can corrupt the data and render the information unusable. The effectiveness of any transfer is impacted by any losses in data caused by various factors. Errors can be detected and corrected in a read channel. When errors are not corrected with normal error correction procedures, retry features may be needed to correct stubborn errors. Some retry features involve combining multiple versions of the same digital data. However, the multiple versions must be aligned before combining, and if markers in the digital data are distorted or otherwise unavailable, the multiple versions cannot be aligned based on the markers.
Embodiments of the present invention provide a data processing system for correlation based data alignment. A data processing system is disclosed including a data detector, a data decoder and an alignment detector. The data detector is operable to apply a data detection algorithm to generate detected values for a data sector. The data decoder is operable to apply a data decode algorithm to a decoder input derived from the detected values to yield decoded values. The alignment detector is operable to calculate an offset between multiple versions of the data sector by correlating the multiple versions.
This summary provides only a general outline of some embodiments according to the present invention. Many other embodiments of the present invention will become more fully apparent from the following detailed description, the appended claims and the accompanying drawings.
A further understanding of the various embodiments of the present invention may be realized by reference to the figures which are described in remaining portions of the specification. In the figures, like reference numerals are used throughout several figures to refer to similar components.
Embodiments of the present invention are related to correlation based data alignment, used to align multiple versions of data without requiring embedded patterns such as a sync mark. In some embodiments, a data processing system obtains multiple versions of data from multiple read back waveforms of a data sector, used, for example, during a retry feature after the first attempt at reading and decoding the data sector fails. Such a retry feature may be, but is not limited to, a data combining operation such as read averaging or joint data detection and decoding, although the correlation based data alignment disclosed herein is not limited to any particular source of data or use of the resulting aligned data.
The correlation based data alignment disclosed herein is applicable to transmission of information over virtually any channel or storage of information on virtually any media. Transmission applications include, but are not limited to, optical fiber, radio frequency channels, wired or wireless local area networks, digital subscriber line technologies, wireless cellular, Ethernet over any medium such as copper or optical fiber, cable channels such as cable television, and Earth-satellite communications. Storage applications include, but are not limited to, hard disk drives, compact disks, digital video disks, magnetic tapes and memory devices such as DRAM, NAND flash, NOR flash, other non-volatile memories and solid state drives.
Turning to
The servo wedges 112, 114 include servo data 130 that is used for control and synchronization of a read/write head assembly over a desired location on storage medium 100. In particular, the servo data 130 generally includes a preamble pattern 132 followed by a servo address mark 134, followed by a Gray code 136, a burst field 138, and a repeatable run-out (RRO) field 140. Between the servo data bit patterns 130a and 130b, a user data region 142 is provided. User data region 142 may include one or more sets of data that are stored to storage medium 100. The data sets may include user synchronization information some of which may be used as a mark to establish a point of reference from which processing of the data within user data region 142 may begin.
However, the correlation based data alignment disclosed herein allows for different versions of data, obtained by multiple read operations of approximately the same location on the storage medium 100, to be aligned without the use of sync marks such as the servo address mark 134 or user sync marks in user data 142. Thus, even if sync marks are included but are unreadable due to media flaws or noise, the multiple versions of the data can be aligned as disclosed herein.
In operation, storage medium 100 is rotated in relation to a sensor that senses information from the storage medium. In a read operation, the sensor would sense servo data from wedge 112 (i.e., during a servo data period) followed by user data from a user data region between wedge 112 and wedge 114 (i.e., during a user data period) and then servo data from wedge 114. In a write operation, the sensor would sense servo data from wedge 112 then write data to the user data region between wedge 112 and wedge 114, with location information in the user data region provided by a user sync mark 144 and a user preamble 146. The signal from the sensor is processed by a read channel circuit, and data from multiple read operations is aligned by calculating the correlation between some or all of the data in the multiple versions.
Turning to
In a typical read operation, read/write head assembly 220 is accurately positioned by motor controller 212 over a desired data track on disk platter 216. Motor controller 212 both positions read/write head assembly 220 in relation to disk platter 216 and drives spindle motor 214 by moving read/write head assembly 220 to the proper data track on disk platter 216 under the direction of hard disk controller 210. Spindle motor 214 spins disk platter 216 at a determined spin rate (RPMs). Once read/write head assembly 220 is positioned adjacent the proper data track, magnetic signals representing data on disk platter 216 are sensed by read/write head assembly 220 as disk platter 216 is rotated by spindle motor 214. The sensed magnetic signals are provided as a continuous, minute analog signal representative of the magnetic data on disk platter 216. This minute analog signal is transferred from read/write head assembly 220 to read channel circuit 202 via preamplifier 204. Preamplifier 204 is operable to amplify the minute analog signals accessed from disk platter 216. In turn, read channel circuit 202 decodes and digitizes the received analog signal to recreate the information originally written to disk platter 216. This data is provided as read data 222 to a receiving circuit. While processing the read data, read channel circuit 202 processes the received signal using a read channel with correlation based data alignment. In some cases, read/write head 220 is caused to repeatedly read data from the disk platter 216, yielding multiple versions of the data, which are aligned using correlation based data alignment in read channel 202. A write operation is substantially the opposite of the preceding read operation with write data 224 being provided to read channel circuit 202. This data is then encoded and written to disk platter 216.
It should be noted that storage system 200 may be integrated into a larger storage system such as, for example, a RAID (redundant array of inexpensive disks or redundant array of independent disks) based storage system. Such a RAID storage system increases stability and reliability through redundancy, combining multiple disks as a logical unit. Data may be spread across a number of disks included in the RAID storage system according to a variety of algorithms and accessed by an operating system as if it were a single disk. For example, data may be mirrored to multiple disks in the RAID storage system, or may be sliced and distributed across multiple disks in a number of techniques. If a small number of disks in the RAID storage system fail or become unavailable, error correction techniques may be used to recreate the missing data based on the remaining portions of the data from the other disks in the RAID storage system. The disks in the RAID storage system may be, but are not limited to, individual storage systems such as storage system 200, and may be located in close proximity to each other or distributed more widely for increased security. In a write operation, write data is provided to a controller, which stores the write data across the disks, for example by mirroring or by striping the write data. In a read operation, the controller retrieves the data from the disks. The controller then yields the resulting read data as if the RAID storage system were a single disk.
In addition, it should be noted that storage system 200 may be modified to include solid state memory that is used to store data in addition to the storage offered by disk platter 216. This solid state memory may be used in parallel to disk platter 216 to provide additional storage. In such a case, the solid state memory receives and provides information directly to read channel circuit 202. Alternatively, the solid state memory may be used as a cache where it offers faster access time than that offered by disk platter 216. In such a case, the solid state memory may be disposed between interface controller 206 and read channel circuit 202 where it operates as a pass through to disk platter 216 when requested data is not available in the solid state memory or when the solid state memory does not have sufficient storage to hold a newly written data set. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of storage systems including both disk platter 216 and a solid state memory.
Turning to
The read channel 300 includes an analog front end 304 that receives and processes the analog signal 302. Analog front end 304 may include, but is not limited to, an analog filter and an amplifier circuit as are known in the art. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuitry that may be included as part of analog front end 304. In some cases, the gain of a variable gain amplifier included as part of analog front end 304 may be modifiable, and the cutoff frequency and boost of an analog filter included in analog front end 304 may be modifiable. Analog front end 304 receives and processes the analog signal 302, and provides a processed analog signal 306 to an analog to digital converter 310.
Analog to digital converter 310 converts processed analog signal 306 into a corresponding series of digital samples 312. Analog to digital converter 310 may be any circuit known in the art that is capable of producing digital samples corresponding to an analog input signal. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of analog to digital converter circuits that may be used in relation to different embodiments of the present invention. Digital samples 312 are provided to an equalizer 314. Equalizer 314 applies an equalization algorithm to digital samples 312 to yield an equalized output 316, also referred to herein as y-samples. In some embodiments of the present invention, equalizer 314 is a digital finite impulse response filter circuit as is known in the art. Equalizer 314 ensures that equalized output 316 has the desired spectrum for a data detector 324.
Equalized output 316 is provided to a buffer 320 that includes sufficient memory to maintain one or more codewords until processing of that codeword is completed through a data detector 324 and a data decoder 334 including, where warranted, multiple “global iterations” defined as passes through both data detector 324 and data decoder 334 and/or “local iterations” defined as passes through data decoder 334 during a given global iteration. The equalized output 316 provided to buffer 320 in read channel 300 may be provided by components such as the analog front end 304, analog to digital converter 310, and equalizer 314, or by other or additional circuits performing functions such as DC compensation, cancellation of inter-track interference, or other functions. In other embodiments, digital data provided to buffer 320 may be derived from other sources, including digital data sources.
Buffered data 322 from buffer 320 is provided to a data detector 324 which applies a data detection algorithm to buffered data 322 to detect the correct values of data bits or symbols in buffered data 322, resulting in a detected output 326, also referred to herein as detected data bits or non-return to zero (NRZ) data. In some embodiments of the present invention, data detector 324 is a Viterbi algorithm data detector circuit as are known in the art. In other embodiments of the present invention, data detector 324 is a maximum a posteriori data detector circuit as are known in the art. Of note, the general phrases “Viterbi data detection algorithm” or “Viterbi algorithm data detector circuit” are used in their broadest sense to mean any Viterbi detection algorithm or Viterbi algorithm detector circuit or variations thereof including, but not limited to, a Viterbi detection algorithm or Viterbi algorithm detector circuit that operates on wide bi-phase encoded user data. Also, the general phrases “maximum a posteriori data detection algorithm” or “maximum a posteriori data detector circuit” are used in their broadest sense to mean any maximum a posteriori detection algorithm or detector circuit or variations thereof including, but not limited to, simplified maximum a posteriori data detection algorithm and a max-log maximum a posteriori data detection algorithm, or corresponding detector circuits. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of data detector circuits that may be used in relation to different embodiments of the present invention. Data detector 324 is started based upon availability of a data set in buffer 320 from equalizer 314 or other source, or from a central memory circuit 330.
Upon completion, data detector 324 provides detected output 326 which includes soft data. As used herein, the phrase “soft data” is used in its broadest sense to mean reliability data with each instance of the reliability data indicating a likelihood that a corresponding bit position or group of bit positions has been correctly detected. In some embodiments of the present invention, the soft data or reliability data is log likelihood ratio data as is known in the art. Detected output 326 is stored in central memory 330.
Once data decoder 334 is available, a previously stored detected output 326 is accessed from central memory 330 and provided to data decoder 334 as decoder input 332. Data decoder 334 applies a data decoding algorithm to decoder input 332 in an attempt to recover originally written data. The result of the data decoding algorithm is provided as a decoded output 340. Similar to detected output 326, decoded output 340 may include both hard decisions and soft decisions. Data decoder 334 may be any data decoder circuit known in the art that is capable of applying a decoding algorithm to a received input. Data decoder 334 may be, but is not limited to, a low density parity check decoder circuit or a Reed Solomon decoder circuit as are known in the art. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of data decoder circuits that may be used in relation to different embodiments of the present invention. Where the original data is recovered (i.e., the data decoding algorithm converges) or a timeout condition occurs, data decoder 334 provides the result of the data decoding algorithm as a data output 336.
One or more iterations through the combination of data detector 324 and data decoder 334 may be made in an effort to converge on the originally written data set. As mentioned above, processing through both the data detector 324 and the data decoder 334 is referred to as a “global iteration”. For the first global iteration, data detector 324 applies the data detection algorithm without guidance from a decoded output. For subsequent global iterations, data detector circuit 324 applies the data detection algorithm to buffered data 322 as guided by decoded output 340. Where the data decoding algorithm as applied by data decoder 334 fails to converge, decoder output 340 from data decoder 334 is transferred back to central memory circuit 330. Once data detector 324 is available, the decoder output 340 is provided to data detector 324 as stored decoder output 342 where it is used to guide subsequent detection of a corresponding data set received as stored equalized output 322 from buffer 320.
During each global iteration it is possible for data decoder 334 to make one or more local iterations including application of the data decoding algorithm to decoder input 332. For the first local iteration, data decoder 332 applies the data decoder algorithm without guidance from a decoded output 336. For subsequent local iterations, data decoder 350 applies the data decoding algorithm to decoder input 332 as guided by the results of previous local decoding iterations. In some embodiments of the present invention, a default of ten local iterations is allowed for each global iteration.
Where data fails to converge in a detection/decoding process, for example when parity checks result in errors in decoder 334 after a limit is reached on the number of local and global iterations for a data sector, a retry feature may be triggered in which multiple versions of the data are read. In other embodiments, multiple versions of a data sector may be read during normal processing. When multiple versions of data are to be used, the multiple versions are correlated and aligned in data-based alignment detector 350. Data to be correlated may be obtained as NRZ data in detected output 326, or as y-samples in equalizer output 316 from equalizer 314 or buffer 320, as decoder output 332, or any other suitable source in read channel 300. In some embodiments, a combination circuit 352 is used to combine aligned data based on offsets calculated by data-based alignment detector 350. In some embodiments, combination circuit 352 is an averaging circuit operable to average multiple versions of each data bit in a data sector, thereby averaging out the effects of noise and helping the detector 324 and decoder 334 to converge on the correct values. In some embodiments, combination circuit 352 is a controller operable to coordinate a multiple signal joint detection/decoding operation using multiple versions of data in detector 324 and decoder 334. However, the correlation based data alignment disclosed herein is not limited to use with any particular application.
Turning to
The alignment detector 400 receives an input sequence 402, in some embodiments an NRZ data stream at the output of a data detector for a sector being read. For example, in some embodiments, the input sequence 402 includes about 5000 bits of user data corresponding to a data sector, substantially excluding a repeating preamble field at the start of the user data. In other embodiments, the input sequence 402 includes y-samples from an equalizer circuit. The alignment detector 400 is not limited to use with any particular type or source of digital input data. The alignment detector 400 can be configured to operate with either binary or non-binary data, and is not limited to any particular data format.
The alignment detector 400 processes the input sequence 402, selecting a portion of the input sequence 402 to be used in the correlation process to calculate the offset between different versions of data at the input sequence 402. The reference sequence is selected by the alignment detector 400 using a metric such that the reference sequence is a unique and repeatable pattern in the input sequence 402 that can likely be found in other versions of the data at the input sequence 402. The reference sequence is not predetermined in some embodiments, but is any portion of the input data that is unique, meaning it is unlikely to occur at multiple locations in the input sequence 402, and repeatable, meaning that multiple read operations will yield substantially the same reference sequence despite different noise conditions during the read operations. For example, a reference sequence made up of a repeating preamble pattern such as a repeating “1100” pattern would not be unique, because the reference sequence could be found at multiple locations, i.e., at every four-bit offset where the “1100” pattern is repeated. The reference sequence is a segment of the input sequence 402 having any suitable length, such as, but not limited to, 128 bits.
A reference sequence candidate selector 404 in the alignment detector 400 divides the input sequence 402 into a number of candidate reference sequences. The reference sequence candidate selector 404 may be any circuit known in the art that is capable of yielding portions of the input sequence 402, such as, but not limited to, a shift register. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used to yield candidate reference sequences from input sequence 402 in relation to different embodiments of the present invention. The input sequence 402 may be partitioned into candidate reference sequences in any suitable manner, such as by dividing the input sequence 402 into consecutive segments each with the length of the reference sequence, or by periodically taking candidate reference sequences from the input sequence 402 with unused bit sequences between each candidate, or in overlapping fashion with some bits reused in multiple candidate reference sequences, with the extreme example yielding a candidate reference sequence each time a new bit is received at input sequence 402 by shifting in the new bit and dropping the oldest bit from the previous candidate reference sequence to form the newest candidate reference sequence.
A uniqueness metric 412 is calculated for each candidate reference sequence by a uniqueness metric calculator 410. The uniqueness metric 412 is calculated by comparing the candidate reference sequence with other data sequences in input sequence 402 and establishing a preference for candidate reference sequences that are most unlike other data sequences. In some embodiments, it can be assumed that multiple read operations will yield data with a maximum offset within a window, such as, but not limited to, plus or minus 24 bits. In such embodiments, the candidate reference sequence is compared with other data sequences from the same read operation that are offset by i bits, where i takes on each value within the offset window except for 0, to avoid comparing the candidate reference sequence with itself. In an embodiment in which the window is plus or minus 24 bits, for each uniqueness metric calculation, i takes on a different value from −24 to −1 and from 1 to 24. In some embodiments, the uniqueness metric 412 is calculated using the Hamming distance between the candidate reference sequence and neighboring data sequences according to the following equation:
Uk=min(sum([a128k, . . . , a128k+127]˜=[a128k+i, . . . , a128k+127+i]))i=[−24: −1,1:24]
where Uk is the uniqueness metric for a candidate reference sequence, where [a128k, . . . , a128k+127] is the candidate reference sequence, and where [a128k+, . . . , a128k+127+i] is a neighboring data sequence offset by i. The notation 128k refers to the location of a candidate reference sequence, with k being a chunk index or candidate reference sequence, in an embodiment in which the input sequence 402 is partitioned into consecutive, non-overlapping candidate reference sequences with no gaps. In other embodiments, each candidate reference sequence may be indexed in other manners. The ˜=operator identifies each bit that is different between the candidate reference sequence and the neighboring data sequence offset by i. The sum function calculates the Hamming distance between the candidate reference sequence and the neighboring data sequence offset by i, yielding the number of bits that are different between the two data sequences. The min function yields the Hamming distance between the candidate reference sequence and the most similar neighboring data sequence, that is, the lowest Hamming distance. The uniqueness metric 412 Uk will therefore be a higher number when the candidate reference sequence is more unique when compared with neighboring data sequences, and a lower number when at least one of the neighboring data sequences is more like the candidate reference sequence. The uniqueness metric calculator 410 may be any circuit known in the art that is capable of yielding a metric representing how similar the candidate reference sequence is to the most similar neighboring data sequence, such as, but not limited to, a Hamming distance calculator and comparator. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used to calculate uniqueness metric 412 in relation to different embodiments of the present invention.
A quality metric 416 (or repeatability metric) is calculated for each candidate reference sequence by a quality metric calculator 414, representing the reliability that the candidate reference sequence will be repeated without substantial changes over multiple read operations. In some embodiments, the quality metric 416 is calculated based on log likelihood ratio values of detected data at input sequence 402, calculated by a soft output Viterbi algorithm data detector. Such log likelihood ratio values represent the likelihood that a data bit or symbol has a particular value. A higher log likelihood ratio value is an indication that the value of the data bit was relatively unaffected by noise, media defects or other problems, and it can be assumed that a subsequent read is likely to result in the same value for the data bit. During normal operation, noise conditions may vary between subsequent read operations, and the data sequences corresponding to the reference sequence may have some differences due to the noise. By selecting a candidate reference sequence with a higher quality metric 416 as the reference sequence to use during data correlation, the chances are increased that the reference sequence will remain relatively unchanged across multiple read operations and that it can therefore be identified in the input sequence 402 from subsequent read operations.
The quality metric calculator 414 calculates the quality metric 416 in some embodiments by comparing the log likelihood ratio value for the most likely value of each bit in the candidate reference sequence with a threshold value, according to the following equation:
Qk=sum([|L128k|>T,|L128k+1|>T, . . . ,|L128k+127|>T)]
where Qk is the quality metric for a candidate reference sequence, L128k is the log likelihood ratio value of a bit or symbol in the candidate reference sequence, and T is a threshold value. The quality metric Qk in some embodiments thus represents the number of bits in the candidate reference sequence for which the highest log likelihood ratio value is greater than the threshold. Generally then, the quality metric 416 Qk will therefore be a higher number when detected values of the bits in the candidate reference sequence have a higher likelihood of being correct, and a lower number when detected values of the bits have a lower likelihood of being correct. The quality metric calculator 414 may be any circuit known in the art that is capable of yielding a metric representing the quality of the data at the input sequence 402. Any suitable quality metric may be used, and based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used to calculate quality metric 416 in relation to different embodiments of the present invention.
The uniqueness metric 412 Uk and the quality metric 416 Qk are combined in a candidate metric calculator 420 to yield an overall candidate metric 422. In some embodiments, the candidate metric calculator 420 comprises a multiplication circuit that calculates the candidate metric 422 as Uk*Qk. In some embodiments, the candidate metric calculator 420 comprises a circuit configured to perform a two dimensional optimization of Uk and Qk. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used to calculate a candidate metric 422 based on the uniqueness metric 412 Uk and the quality metric 416 Qk in relation to different embodiments of the present invention.
A reference sequence selector 424 selects one of the candidate reference sequences as the reference sequence to use during data correlation, based on the candidate metric 422, yielding reference sequence 426. In some embodiments, the reference sequence selector 424 selects the candidate reference sequence with the highest value of candidate metric 422. In such embodiments, the reference sequence selector 424 may include a comparator circuit. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used to select the reference sequence 426 based on the candidate metric 422 in relation to different embodiments of the present invention. The reference sequence 426 [a128k, . . . , a128k+127] is stored in a reference sequence memory 430, along with the chunk index k that identifies the location of the reference sequence in the version of the input sequence 402 from which the reference sequence was selected.
During other read operations for the data sector, which yield other versions of the same data at input sequence 402, a correlation circuit 432 searches for the recorded reference sequence 434 in the input sequence 402 in order to determine any offset between data from the read operation yielding the reference sequence and from other read operations. In some embodiments, the correlation is a bit by bit operation, searching for the reference sequence 434 at each possible offset value within the expected offset window. In some embodiments, the possible offset value ranges from plus to minus 24, including an offset of 0. In some embodiments, the reference sequence 434 is searched for within the window in input sequence 402 by calculating the Hamming distances according to the following equation:
m=argmin(sum([a128k, . . . ,a128k+127]˜=[ã128k+i, . . . ,ã128k+127+i])),−24≤i≤24
where m is the offset between the data from the read operation yielding the reference sequence 434 and from the current read operation, [a128k, . . . , a128k+127] is the reference sequence 434, and [ã128k+i, . . . , ã128k+127+i] is a data sequence from the current read operation with the same length as the reference sequence 434 and an offset of i. The ˜=operator identifies each bit that is different between the reference sequence 434 and the current data sequence offset by i. The sum function calculates the Hamming distance between the reference sequence 434 and the current data sequence offset by i. The argmin function yields the offset m of the current data sequence offset by i with the lowest Hamming distance to the reference sequence 434.
Turning to
Turning to
Hm=[a128k, . . . ,a128k+127]˜=[ã128k−m, . . . ,ã128k+127−m],m=[−24: −1,1:24]
where m is the offset between the data from the read operation yielding the reference sequence 434 and from the current read operation.
The output 616 of the accumulator 612 is reset at each chunk boundary by a reset signal 620, resetting the calculated Hamming distance Hm calculated by Hamming calculator 614 after processing the number of bits in the reference sequence. The modular correlation circuit 600 can process the input data sequences bit by bit, or in consecutive sequences having any desired length, in order to balance the complexity of the modular correlation circuit 600 with the size of the modular correlation circuit 600.
Turning to
Turning to
A data detector 804 processes the input sequence 802, applying a data detection algorithm to input sequence 802 to detect the correct values of data bits or symbols in input sequence 802, resulting in a detected output 806, â0[n], also referred to herein as hard decisions, detected data bits or non-return to zero (NRZ) data. In some embodiments, data detector 804 corresponds with the data detector 324 of
The detected output 806 from a main read operation is used in combination with y-samples from other read operations to calculate an estimated partial response target. The main read operation may be, but is not limited to, the first read operation of a number of read operations performed during the correlation based data alignment. The y-samples from the main read operation can be represented by the following equation:
where Ng is the number of samples in the data set being processed, gi is the equalization partial response target, a[n] are the data bits that were stored or transmitted, and v0[n] are the noise samples for the main read operation.
The y-samples from other read operations, and in general from the j′th read operation, can be represented by the following equation:
where Ng is the number of samples in the data set being processed, gi is the equalization partial response target, a[n] are the data bits that were stored or transmitted, and vj[n] are the noise samples for the j′th read operation.
The location m0 of the maximum partial response target tap coefficient is given by the following equation:
where the arg function returns the index m0 or location of the peak in partial response target gi.
The correlation 814 for the j′th read operation is denoted as rj[n1] and is calculated by correlation circuit 812 as the sum of the product of the detected output 806 from the main read operation and the y-samples 810 yj[n] from another read operation of the same data bits a[n]. The maximum of the correlation 814 is proportional to the maximum tap coefficient in the partial response target. The correlation 814, also referred to herein as the estimated partial response target, is calculated according to the following equation:
where rj [n1] is the correlation for the j′th read operation, and n1 is an offset window, for example, but not limited to, −24<n1<24. The correlation circuit 812 calculates correlation rj[n1] for each possible offset n1 for a given read operation j, and the correlations rj[n1] 814 will have a peak or maximum value that can be used in combination with a peak in the partial response target to align the data of read operation j with the main read operation (and therefore also with the data of other read operations).
The correlation circuit 812 may be any circuit known in the art that is capable of performing the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in correlation circuit 812 relation to different embodiments of the present invention. In some embodiments, correlation circuit 812 is a convolution circuit, performing a bit by bit multiplication of y-samples 810 yj[n] with an offset version â0[n+n1] of hard decisions 806, and summing the results. In some embodiments, hard decisions 806 either have a value of −1 or 1. In some such embodiments, the correlation circuit 812 comprises an adder that either adds or subtracts each bit of y-samples 810 yj[n], based on the value of each corresponding bit in the offset version â0[n+n1] of hard decisions 806.
The input sequence 802, or y-samples from the main read operation, and the y-samples 810 yj[n] from the j′th read operation are equalized based on the same equalization partial response target gi. The correlations rj[n1] 814 over n1 are proportional to the estimated partial response target, and will have a peak for one value of n1 corresponding to a peak in the equalization partial response target gi, and the shift amount or distance between those peaks gives the offset between the data from the main read operation and the data being correlated.
A correlation peak locator 816 searches for the peak in the correlations rj[n1] 814 yielded by correlation circuit 812, which is the estimated partial response target based on the correct offset n1 as identified by the correlation circuit 812. The correlation peak locator 816 in some embodiments identifies the location of the peak n0,j for read operation j in the correlations rj[n1] 814 over the values of n1 according to the following equation:
where the arg function returns the index 820 n0,j or location of the peak in |rj[n1]|, the absolute value of the correlations rj[n1] 814 containing the peak. The alignment difference between the y-samples 810 {yj[n]} from the j′th read operation and the y-samples 802 {y0[n]} from the main read operation is given by n0,j−m0, where, again, m0 is the location of the maximum tap coefficient in the partial response target. For example, if the partial response target (or the tap coefficients for equalization digital finite impulse response filter) is [8, 14, 2], then m0 is 1, the index of the largest magnitude tap (14). If the partial response target (or the tap coefficients for equalization digital finite impulse response filter) is [14, 8, 2], then m0 is 0, the index of the largest magnitude tap (14). The correlation peak locator 816 may be any circuit known in the art that is capable of performing the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in correlation peak locator 816 in relation to different embodiments of the present invention, such as, but not limited to, a comparator.
The index 820 n0,j of the peak in the correlations 814 is provided to an aligner circuit 822. A delayed version of y-samples 810 yj[n], delayed by delay circuit 826 to match the delay of correlation circuit 812 and correlation peak locator 816, is also provided to aligner circuit 822, along with the equalization partial response target 824 gi, which provides the value for m0. The aligner circuit 822 shifts the y-samples 810 yj[n] according to the following equation, yielding aligned y-samples 830 ŷj:
ŷj[n]=yj[n−n0,j+m0]
The aligner circuit 822 may be any circuit known in the art that is capable of shifting data according to the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in aligner circuit 822 in relation to different embodiments of the present invention, such as, but not limited to, a memory controller to shift data in a memory or to adjust memory pointers.
Turning to
Turning to
Turning to
A data detector 1108 processes the y-samples 1106, applying a data detection algorithm to detect the correct values of data bits or symbols in y-samples 1106, resulting in a detected output 1110, â0[n], also referred to herein as hard decisions, detected data bits or non-return to zero (NRZ) data. In some embodiments of the present invention, data detector 1106 is a Viterbi algorithm data detector circuit as are known in the art. In other embodiments of the present invention, data detector 1106 is a maximum a posteriori data detector circuit as are known in the art.
The detected output 1110 â0[n] from a main read operation is used in combination with x-samples, or data samples prior to equalization coming from the output of an analog to digital converter, from the main read operation or other read operations to estimate the unequalized channel dibit in input sequence 1102 x0[n] or 1112 xk[n]. The main read operation may be, but is not limited to, the first or best read operation of a number of read operations performed during the correlation based data alignment. The x-samples from the main read operation and other read operations can be represented by the following equations:
where −M1 to M2 denote the span of inter-symbol interference, hi is the unequalized channel dibit response, a[n] are the data bits that were stored or transmitted, v0[n] are the noise samples for the main read operation, and vk[n] are the noise samples for the k′th read operation.
The correlation 1116 for the k′th read operation is denoted as rk[n1] and is calculated by correlation circuit 1114 as the sum of the product of the x-samples 1112 xk[n] from the k′th read operation and the detected output 1110 from the main read operation of the same data bits. The correlation 1116, also referred to herein as the estimated unequalized channel dibit, is calculated according to the following equation:
where rk[n1] is the correlation for the k′th read operation, and n1 is an offset window, for example, but not limited to, −24<n1<24. The correlation circuit 1114 calculates correlation rk[n1] for each possible offset n1 for a given read operation k, and the correlations rk[n1] 1116 will have a peak or maximum value that can be used in combination with a peak in the unequalized channel dibit obtained from correlating x0[n] with â0[n] to align the data of read operation k with the main read operation (and therefore also with the data of other read operations). If the correlation peak rk[n1] happens to be negative, then the corresponding x-samples {xk[n]} are inverted in polarity.
The correlation circuit 1114 may be any circuit known in the art that is capable of performing the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in correlation circuit 1114 relation to different embodiments of the present invention. In some embodiments, correlation circuit 1114 is a convolution circuit, performing a bit by bit multiplication of x-samples 1112 xk[n] with an offset version â0[n+n1] of hard decisions 1110, and summing the results. In some embodiments, hard decisions 1110 either have a value of −1 or 1. In some such embodiments, the correlation circuit 1114 comprises an adder that either adds or subtracts each bit of x-samples 1112 xk[n], based on the value of each corresponding bit in the offset version â0[n+n1] of hard decisions 1110, performing a simple signed accumulation of the x-samples.
A correlation peak locator 1118 searches for the locations of peaks in correlations. The location of the peak in the unequalized channel dibit in input sequence 1102 x0[n] from the main read operation is calculated by correlating the input sequence 1102 x0[n] from the main read operation with the detected output 1110 â0[n] from the main read operation according to the following equation:
where {â0[n]} are the detected data bits from {x0[n]}, and calculating the location n0,0 of the peak in the correlation by the following equation:
where the argmax function returns the index 1120 n0,0 or location of the peak in |r0[n1]|, the absolute value of the correlations r0[n1] 1116 containing the peak during the main read operation. Notably, the max-correlation is proportional to the max-tap in the unequalized channel dibit response.
The location n0,k of the peak in correlations for other read operations is given by the following equation:
where the argmax function returns the index 1120 n0,k or location of the peak |rk[n1]|, the absolute value of the correlations rk[n1] 1116 containing the peak during read operations other than the main read operation.
The alignment difference between input sequence 1102 x0[n] from the main read operation and input sequence 1112 xk[n] from other read operations is given by n0,k−n0,0, where n0,0 is the location of the peak in r0[n]. The correlation peak locator 1118 may be any circuit known in the art that is capable of performing the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in correlation peak locator 1118 in relation to different embodiments of the present invention, such as, but not limited to, a comparator.
The indexes 1120 of the peak in the correlations 1116 are provided to an aligner circuit 1122. A delayed version of input sequence 1112 xk[n], delayed by delay circuit 1126 to match the delay of correlation circuit 1114 and correlation peak locator 1118, is also provided to aligner circuit 1122. The aligner circuit 1122 shifts the input sequence 1112 xk[n] according to the following equation, yielding aligned x-samples 1130 {circumflex over (x)}k[n]:
{circumflex over (x)}k[n]=xk[n−n0,k+n0,0]
The aligner circuit 1122 may be any circuit known in the art that is capable of shifting data according to the equation shown above. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of circuits that may be used in aligner circuit 1122 in relation to different embodiments of the present invention, such as, but not limited to, a memory controller to shift data in a memory or to adjust memory pointers. What results is an aligned set of x-sample streams, given by {x0[n]}, {x1[n−n0,1+n0,0]}, {x2[n−n0,2+n0,0]}, {x3[n−n0,3+n0,0]}, . . . .
It should be noted that the various blocks discussed in the above application may be implemented in integrated circuits along with other functionality. Such integrated circuits may include all of the functions of a given block, system or circuit, or a subset of the block, system or circuit. Further, elements of the blocks, systems or circuits may be implemented across multiple integrated circuits. Such integrated circuits may be any type of integrated circuit known in the art including, but are not limited to, a monolithic integrated circuit, a flip chip integrated circuit, a multichip module integrated circuit, and/or a mixed signal integrated circuit. It should also be noted that various functions of the blocks, systems or circuits discussed herein may be implemented in either software or firmware. In some such cases, the entire system, block or circuit may be implemented using its software or firmware equivalent. In other cases, the one part of a given system, block or circuit may be implemented in software or firmware, while other parts are implemented in hardware.
In conclusion, embodiments of the present invention provide novel systems, devices, methods and arrangements for correlation based data alignment. While detailed descriptions of one or more embodiments of the invention have been given above, various alternatives, modifications, and equivalents will be apparent to those skilled in the art without varying from the spirit of the invention. Therefore, the above description should not be taken as limiting the scope of embodiments of the invention which are encompassed by the appended claims.
The present application claims priority to (is a non-provisional of) U.S. Pat. App. No. 61/842,902, entitled “Systems and Methods for Correlation Based Data Alignment”, and filed Jul. 3, 2013 by Yang et al, the entirety of which is incorporated herein by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
4777544 | Brown et al. | Oct 1988 | A |
5130866 | Klaassen et al. | Jul 1992 | A |
5237325 | Klein et al. | Aug 1993 | A |
5278703 | Rub et al. | Jan 1994 | A |
5309357 | Stark et al. | May 1994 | A |
5341249 | Abbott et al. | Aug 1994 | A |
5377058 | Good et al. | Dec 1994 | A |
5521948 | Takeuchi | May 1996 | A |
5523902 | Pederson | Jun 1996 | A |
5594341 | Majidi-Ahy | Jan 1997 | A |
5668679 | Swearingen et al. | Sep 1997 | A |
5696639 | Spurbeck et al. | Dec 1997 | A |
5768044 | Hetzler | Jun 1998 | A |
5781129 | Schwartz et al. | Jul 1998 | A |
5798885 | Saiki et al. | Aug 1998 | A |
5835295 | Behrens | Nov 1998 | A |
5844920 | Zook et al. | Dec 1998 | A |
5852524 | Glover et al. | Dec 1998 | A |
5892632 | Behrens | Apr 1999 | A |
5955783 | Ben-Efraim | Sep 1999 | A |
5970104 | Zhong et al. | Oct 1999 | A |
5986830 | Hein | Nov 1999 | A |
5987562 | Glover | Nov 1999 | A |
6009549 | Bliss et al. | Dec 1999 | A |
6023383 | Glover et al. | Feb 2000 | A |
6069583 | Silverstrin et al. | May 2000 | A |
6081397 | Belser | Jun 2000 | A |
6111712 | Vishakhadatta et al. | Aug 2000 | A |
6208478 | Chiu et al. | Mar 2001 | B1 |
6269058 | Yamanoi et al. | Jul 2001 | B1 |
6278591 | Chang | Aug 2001 | B1 |
6400518 | Bhaumik et al. | Jun 2002 | B1 |
6404829 | Sonu | Jun 2002 | B1 |
6411452 | Cloke | Jun 2002 | B1 |
6441661 | Aoki et al. | Aug 2002 | B1 |
6476989 | Chainer | Nov 2002 | B1 |
6490110 | Reed et al. | Dec 2002 | B2 |
6493162 | Fredrickson | Dec 2002 | B1 |
6519102 | Smith et al. | Feb 2003 | B1 |
6530060 | Vis et al. | Mar 2003 | B1 |
6603622 | Christiansen et al. | Aug 2003 | B1 |
6606048 | Sutardja | Aug 2003 | B1 |
6633447 | Franck et al. | Oct 2003 | B2 |
6646822 | Tuttle et al. | Nov 2003 | B1 |
6657802 | Ashley et al. | Dec 2003 | B1 |
6671404 | Kawatani | Dec 2003 | B1 |
6717764 | Lake | Apr 2004 | B2 |
6775529 | Roo | Aug 2004 | B1 |
6788484 | Honma | Sep 2004 | B2 |
6813108 | Annampedu et al. | Nov 2004 | B2 |
6816328 | Rae | Nov 2004 | B2 |
6839014 | Uda | Jan 2005 | B2 |
6856183 | Annampedu | Feb 2005 | B2 |
6865040 | Fayeulle et al. | Mar 2005 | B2 |
6876511 | Koyanagi | Apr 2005 | B2 |
6906990 | Nagata et al. | Jun 2005 | B2 |
6912099 | Annampedu et al. | Jun 2005 | B2 |
6963521 | Hayashi | Nov 2005 | B2 |
6980382 | Hirano et al. | Dec 2005 | B2 |
6999257 | Takeo | Feb 2006 | B2 |
6999264 | Ehrlich | Feb 2006 | B2 |
6999404 | Furumiya et al. | Feb 2006 | B2 |
7002761 | Sutardja et al. | Feb 2006 | B1 |
7016131 | Liu et al. | Mar 2006 | B2 |
7038875 | Lou et al. | May 2006 | B2 |
7054088 | Yamazaki et al. | May 2006 | B2 |
7072137 | Chiba | Jul 2006 | B2 |
7082005 | Annampedu et al. | Jul 2006 | B2 |
7092462 | Annampedu et al. | Aug 2006 | B2 |
7116504 | Oberg | Oct 2006 | B1 |
7126776 | Warren, Jr. et al. | Oct 2006 | B1 |
7133227 | Chiang | Nov 2006 | B2 |
7136250 | Wu et al. | Nov 2006 | B1 |
7154689 | Shepherd et al. | Dec 2006 | B1 |
7158464 | Gushima et al. | Jan 2007 | B2 |
7167328 | Annampedu et al. | Jan 2007 | B2 |
7180693 | Annampedu et al. | Feb 2007 | B2 |
7187739 | Ma | Mar 2007 | B2 |
7191382 | James et al. | Mar 2007 | B2 |
7193544 | Fitelson et al. | Mar 2007 | B1 |
7193798 | Byrd et al. | Mar 2007 | B2 |
7199961 | Wu et al. | Apr 2007 | B1 |
7203013 | Han et al. | Apr 2007 | B1 |
7203015 | Sakai et al. | Apr 2007 | B2 |
7206146 | Flynn et al. | Apr 2007 | B2 |
7230789 | Brunnett et al. | Jun 2007 | B1 |
7248425 | Byun et al. | Jul 2007 | B2 |
7253984 | Patapoutian et al. | Aug 2007 | B1 |
7265937 | Erden et al. | Sep 2007 | B1 |
7286313 | Erden et al. | Oct 2007 | B2 |
7301717 | Lee et al. | Nov 2007 | B1 |
7308057 | Patapoutian | Dec 2007 | B1 |
7323916 | Sidiropoulos et al. | Jan 2008 | B1 |
7362536 | Liu et al. | Apr 2008 | B1 |
7375918 | Shepherd et al. | May 2008 | B1 |
7394608 | Eleftheriou | Jul 2008 | B2 |
7411531 | Aziz et al. | Aug 2008 | B2 |
7420498 | Barrenscheen | Sep 2008 | B2 |
7423827 | Neville | Sep 2008 | B2 |
7446690 | Kao | Nov 2008 | B2 |
7525460 | Liu et al. | Apr 2009 | B1 |
7529320 | Byrne et al. | May 2009 | B2 |
7558177 | Ogura et al. | Jul 2009 | B2 |
7602567 | Park | Oct 2009 | B2 |
7602568 | Katchmart | Oct 2009 | B1 |
7616395 | Yamamoto | Nov 2009 | B2 |
7620101 | Jenkins | Nov 2009 | B1 |
7630155 | Maruyama et al. | Dec 2009 | B2 |
7643235 | Erden et al. | Jan 2010 | B2 |
7656982 | Gaedke | Feb 2010 | B2 |
7663831 | Hayashi et al. | Feb 2010 | B2 |
7679850 | Smith | Mar 2010 | B2 |
7693243 | Chen et al. | Apr 2010 | B2 |
7738200 | Annampedu | Jun 2010 | B2 |
7768437 | Annampedu | Aug 2010 | B2 |
7768730 | Bliss et al. | Aug 2010 | B2 |
7796480 | Cheng et al. | Sep 2010 | B2 |
7813065 | Annampedu | Oct 2010 | B2 |
7821730 | Cao | Oct 2010 | B2 |
7835104 | Yamashita | Nov 2010 | B2 |
7889823 | Yang | Feb 2011 | B2 |
7929237 | Grundvig | Apr 2011 | B2 |
8014099 | Mathew | Sep 2011 | B2 |
8054573 | Mathew | Nov 2011 | B2 |
8054931 | Annampedu | Nov 2011 | B2 |
8059349 | Annampedu | Nov 2011 | B2 |
8098451 | Graef | Jan 2012 | B2 |
8102960 | Ran et al. | Jan 2012 | B2 |
8107573 | Chang | Jan 2012 | B2 |
8154818 | Mathew | Apr 2012 | B2 |
8154972 | Ratnakar Aravind | Apr 2012 | B2 |
8169726 | Wilson | May 2012 | B2 |
8174784 | Grundvig | May 2012 | B2 |
8174949 | Ratnakar Aravind | May 2012 | B2 |
8237597 | Liu | Aug 2012 | B2 |
8243381 | Annampedu | Aug 2012 | B2 |
8254049 | Annampedu | Aug 2012 | B2 |
8261171 | Annampedu | Aug 2012 | B2 |
20020150179 | Leis et al. | Oct 2002 | A1 |
20050243455 | Annampedu | Nov 2005 | A1 |
20070104300 | Esumi et al. | May 2007 | A1 |
20080056403 | Wilson | Mar 2008 | A1 |
20090142620 | Yamamoto et al. | Jun 2009 | A1 |
20090274247 | Galbraith et al. | Nov 2009 | A1 |
20100061490 | Noelder | Mar 2010 | A1 |
20100067628 | Buehner | Mar 2010 | A1 |
20100142078 | Annampedu | Jun 2010 | A1 |
20110043938 | Mathew | Feb 2011 | A1 |
20110149434 | Coker et al. | Jun 2011 | A1 |
20110157737 | Grundvig | Jun 2011 | A1 |
20110209026 | Xia | Aug 2011 | A1 |
20120036173 | Annampedu | Feb 2012 | A1 |
20120063284 | Mathew et al. | Mar 2012 | A1 |
20120084336 | Yang | Apr 2012 | A1 |
20120087035 | Graef | Apr 2012 | A1 |
20120106607 | Miladinovic | May 2012 | A1 |
20120120784 | Yang | May 2012 | A1 |
20120124241 | Yang | May 2012 | A1 |
20120134042 | Annampedu | May 2012 | A1 |
20120134043 | Annampedu | May 2012 | A1 |
20120155587 | Annampedu | Jun 2012 | A1 |
20120182643 | Zhang | Jul 2012 | A1 |
20120236428 | Xia | Sep 2012 | A1 |
Number | Date | Country |
---|---|---|
2904168 | Jan 2008 | FR |
WO 03047091 | Jun 2003 | WO |
WO 0809620 | Jan 2008 | WO |
Entry |
---|
U.S. Appl. No. 13/529,572, filed Jun. 21, 2012, Yang et al. |
Annampedu, V. et al “Adaptive Algorithms for Asynchronous Detection of Coded Servo Signals Based on Interpolation”, IEEE Transactions on Magnetics, vol. 41, No. 10, Oct. 2005. |
Aziz et al., “Asynchronous Maximum Likelihood (ML) Detection of Servo Repeatable Run Out (RRO) Data”, Digest, IEEE Intl Mag Conf, vol. 42, No. 10, pp. 2585-2587 (Oct. 2006). |
Aziz et al., “Interpolation Based Maximum-Likelihood(ML) Detection of Asynchronous Servo Repeatable Run Out (RRO) Data” IEEE Intl Mag Conf. vol. 42 No. 10 pp. 2585-2587, Oct. 2006. |
Hagenauer et al., “A Viterbi algorithm with soft-decision outputs and its applications,” in Proc. IEEE Global Telecom Conf 1989, Dallas, Texas, pp. 1680-1686 (Nov. 1989). |
Kryder, M. et al “Heat Assisted Magnetic Recording” Proc. IEEE, vol. 96, No. 11, p. 1810, Nov. 2008. |
Polikar, Robi “Ensemble Based Systems in Decision Making” IEEE Circuits and Systems Magazine Third qtr 2006, p. 21-47. |
U.S. Appl. No. 13/096,873, Unpublished (filed Apr. 28, 2011) (Ross S. Wilson). |
U.S. Appl. No. 13/941,464, Unpublished (filed Jul. 13, 2013) (Bruce A. Wilson). |
U.S. Appl. No. 13/173,088, Unpublished (filed Jun. 30, 2011) (Jeffrey P. Grundvig). |
U.S. Appl. No. 13/186,267, Unpublished (filed Jul. 19, 2011) (Haitao Xia). |
U.S. Appl. No. 13/242,983, Unpublished (filed Sep. 23, 2011) (Jeffrey P. Grundvig). |
U.S. Appl. No. 13/490,913, Unpublished (filed Jun. 7, 2012) (Xun Zhang). |
U.S. Appl. No. 13/491,135, Unpublished (filed Jun. 7, 2012) (Xun Zhang). |
U.S. Appl. No. 13/777,937, Unpublished (filed Feb. 26, 2013) (Rui Cao). |
U.S. Appl. No. 13/100,021, Unpublished (filed May 3, 2011) (Haitao Xia). |
Weller et al “Thermal Limits in Ultrahigh-density Magnetic Recording” IEEE Trans. Magn. vol. 35, No. 6, P. 4423, Nov. 1999. |
Number | Date | Country | |
---|---|---|---|
20150012800 A1 | Jan 2015 | US |
Number | Date | Country | |
---|---|---|---|
61842902 | Jul 2013 | US |