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. Many types of error checking systems have been developed to detect and correct errors in digital data. For example, Low Density Parity Check (LDPC) decoders may be used to iteratively perform parity checks while updating values in a block of data to correct errors.
Digital data may be equalized to reduce inter-symbol interference (ISI) based on a target response or partial response (PR) target before decoding in an LDPC decoder. For example, a digital finite impulse response (DFIR) filter may be used to equalize digital data based on a partial response target. A DFIR filter applies a mathematical operation to a digital data stream to achieve any of a wide range of desired frequency responses. As illustrated in
LDPC decoders and equalizers may be used, for example, to process data sectors retrieved from a magnetic disk drive. Each data sector may have different noise, jitter and distortion characteristics or signal to noise ratios (SNR), which may be due, for example, to magnetic media defects, off-track writing, high fly height of magnetic write heads during a writing operation, large phase disturbance, etc. The throughput of a magnetic disk drive is affected by the number of read errors in a data sector, based in part on the SNR, and by the speed at which the read channel can recover from a read error by correcting the errors. The equalizer used to prepare data for an LDPC decoder may be pre-tuned based on the characteristics of a data sector as it is written. However, the equalizer settings may not be applicable to different data sectors or even to the original data sector given changing SNR and non-linear conditions.
The present inventions are related to LDPC decision-driven equalizer adaptation. An equalizer such as, but not limited to, a DFIR is used to equalize digital data samples before they are processed in an LDPC decoder. The decisions or output from the LDPC decoder are used to adapt equalizer settings, tailoring the equalizer to the actual input data and SNR conditions. Decisions from the LDPC decoder are treated as ideal data for tuning the equalizer, in some embodiments using data that has converged in the LDPC decoder, in other embodiments using the LDPC decoder output after one or more global iterations, whether the data has converged or not. The equalizer is adapted based on the LDPC decoder output and a buffered copy of the input data corresponding to the LDPC decoder output. By adapting the equalizer to that particular sector or to a preceding sector, the equalizer better matches the actual channel conditions. The tuned equalizer can then be used to reprocess the sector or to process the next sector, better boosting the signal and suppressing the noise level to improve recovery of failed sectors.
This summary provides only a general outline of some embodiments according to the present invention. Many other objects, features, advantages and 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.
The present inventions are related to LDPC decision-driven equalizer adaptation. An equalizer such as, but not limited to, a DFIR is used to equalize digital data samples before they are processed in an LDPC decoder. The LDPC decoder used in various embodiments may be any type of LDPC decoder, including binary and non-binary, layered and non-layered. LDPC technology 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.
The decisions or output from the LDPC decoder are used to adapt equalizer settings, tailoring the equalizer to the actual input data and SNR conditions. Decisions from the LDPC decoder are treated as ideal data for tuning the equalizer, in some embodiments using data that has converged in the LDPC decoder, in other embodiments using the LDPC decoder output after one or more global iterations, whether the data has converged or not. The equalizer is adapted based on the LDPC decoder output and a buffered copy of the input data corresponding to the LDPC decoder output. In some embodiments in which the equalizer and LDPC decoder process data sectors from a hard disk drive, the LDPC decoder output and the buffered copy of the input data correspond to the same data sector. By adapting the equalizer to that particular sector or to a preceding sector, the equalizer better matches the actual channel conditions. The tuned equalizer can then be used to reprocess the sector or to process the next sector, better boosting the signal and suppressing the noise level to improve recovery of failed sectors.
Turning to
The data processing circuit 200 includes an analog front end 204 that receives and processes an analog signal 202 from the storage or transmission channel. Analog front end 204 may include, but is not limited to, an analog filter and an amplifier circuit as are known in the art. For example, the analog front end 204 may include a high pass filter, a variable gain amplifier (VGA), a compensation circuit for the magneto-resistive asymmetry (MRA) characteristic of a magnetic write head, etc. 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 circuit 204. In some cases, the gain of a variable gain amplifier included as part of analog front circuit 204 may be modifiable, and the cutoff frequency and boost of an analog filter included in analog front end circuit 204 may be modifiable. Analog front end circuit 204 receives and processes the analog signal 202, and provides a processed analog signal 206 to an analog to digital converter circuit 210. In some cases, analog signal 202 is derived from a read/write head assembly in a storage or transmission channel that is disposed in relation to a storage medium. In other cases, analog signal 202 is derived from a receiver circuit in a storage or transmission channel that is operable to receive a signal from a transmission medium. The transmission medium may be wireless or wired such as, but not limited to, cable or optical connectivity. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of sources from which analog input 202 may be derived.
Analog to digital converter circuit 210 converts processed analog signal 206 into a corresponding series of digital samples 212 or X samples. Analog to digital converter circuit 210 may be any circuit known in the art that is capable of producing digital samples corresponding to an analog input signal 206. 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. In other embodiments, the digital samples 212 may be obtained directly from a digital storage device or digital transmission medium.
Digital samples 212 are provided to a default equalizer circuit 214. Equalizer circuit 214 applies an equalization algorithm to digital samples 212 to yield an equalized output 216 or Y samples. In some embodiments of the present invention, equalizer circuit 214 is a digital finite impulse response filter circuit as are known in the art. In these embodiments, the DFIR tap coefficients are pre-tuned according to expected channel conditions. The equalized output 216 includes LDPC-encoded digital data bits, equalized to reduce inter-symbol interference (ISI) in the equalizer 214 based on a target response or partial response (PR) target. The equalized output 216 may be stored in a Y memory (not shown) until a data detector circuit 224 is available and ready to begin processing equalized output 216.
The equalized output 216 is provided to a switch 220, operable to select as detector input 222 either the equalized output 216 from equalizer 214 or an equalized output 246 from tunable equalizer 244. The switch 220 may be used to enable the LDPC decision-driven equalizer adaptation disclosed herein by selecting equalized output 246 from tunable equalizer 244, or to disable the LDPC decision-driven equalizer adaptation by selecting the equalized output 216 from default equalizer 214. If the tunable equalizer 244 is repeatedly tuned during operation and read errors substantially increase during operation, for example if the tunable equalizer 244 to particularly noisy sector conditions which abruptly end, the equalized output 216 from default equalizer 214 may be selected in switch 220 for a sector, allowing the tunable equalizer 244 to be re-tuned to more normal sector conditions.
Data detector circuit 224 is operable to apply a data detection algorithm to a received codeword or data set. In some embodiments of the present inventions, data detector circuit 224 is a Viterbi algorithm data detector circuit as is known in the art. In other embodiments of the present invention, data detector circuit 224 is a maximum a posteriori data detector circuit as is 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, bi-direction Viterbi detection algorithm or bi-direction Viterbi algorithm detector circuit. 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.
Upon completion, data detector circuit 224 provides detector output 226. Detector output 226 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 226 is provided to an LDPC decoder 230 for decoding. In some embodiments, detected output 226 may also be interleaved in a local interleaver circuit (not shown) to shuffle sub-portions (i.e., local chunks) of the data set included as detected output 226, and stored in a central memory circuit (not shown).
The LDPC decoder 230 used in various embodiments may be any type of LDPC decoder, including binary and non-binary, layered and non-layered. In some embodiments, the LDPC decoder 230 is a non-binary min-sum based LDPC decoder. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize other decode algorithms that may be used in relation to different embodiments of the present invention. The LDPC decoder 230 applies a data decode algorithm to detected output 226 in a variable number of local iterations.
Where the LDPC decoder 230 fails to converge (i.e., fails to yield the originally written data set) and the number of local iterations through LDPC decoder 230 exceeds a threshold, the resulting decoded output may be provided as a decoded output 232 back to data detector circuit 224 for another global detection/decoding iteration through data detector circuit 224 and LDPC decoder 230. In some embodiments, decoded output 232 is stored in a central memory circuit (not shown) and passed through a local deinterleaver circuit (not shown) that rearranges decoded output 232 to reverse the shuffling originally performed by the local interleaver circuit. The decoded output 232 is used in the next global iteration to guide subsequent detection of a corresponding data set received as detector input 222.
Where the decoded output converges (i.e., yields the originally written data set) in the LDPC decoder 230, the resulting decoded output 234 is yielded, including hard decisions and soft LLR data giving the likelihood or confidence values about the hard decisions. The LDPC decoder 230 may use any suitable technique to determine whether data has converged, such as the number of violated parity checks during a local decoding iteration.
Digital samples 236 corresponding to digital samples 212 from analog to digital converter circuit 210 are also stored in a buffer 240 for use in tuning the tunable equalizer 244. Buffer 240 is used as to adjust the delay of stored digital samples 242 to align them with the decoded output 234 so that the stored digital samples 242 and decoded output 234 for a particular sector are available at the same time to adjust the tunable equalizer 244.
If the LDPC decoder 230 converged, in other words if the decoded output 234 is correct and matches the true data, the decoded output 234 is used as ideal data to tune the tunable equalizer 244. The stored digital samples 242 for the sector at decoded output 234 is equalized in tunable equalizer 244 using original pre-tuned settings to yield equalized output 246. The decoded output 234 and equalized output 246 are provided to an equalizer adaptation circuit 250 to generate new equalizer settings 252 for tunable equalizer 244. For example, equalizer adaptation circuit 250 may calculate new tap coefficients for tunable equalizer 244.
The equalizer adaptation circuit 250 convolves the decoded output 234 with the channel partial response target to yield an ideal equalized sample for the data sector. The equalizer adaptation circuit 250 is also operable to generate new equalizer settings 252 for tunable equalizer 244 that reduce the difference between the ideal equalized sample and the equalized output 246, using any suitable algorithm. For example, the equalizer adaptation circuit 250 may implement a least mean squares algorithm to find DFIR tap coefficients (e.g., 252) that produce the least mean squares of the error signal comprising the difference between the ideal equalized sample and the equalized output 246. However, the equalizer adaptation circuit 250 is not limited to any particular error reducing algorithm. The new equalizer settings 252 thus tune the tunable equalizer 244 to better adapt to the channel condition (noise, jitter, distortion, etc.). After updating the tunable equalizer 244 with the new equalizer settings 252, the tunable equalizer 244 may be used in place of equalizer 214 to generate new Y samples for the data detector circuit 224 by configuring the switch 220 to output the equalized output 246 from tunable equalizer 244 rather than the equalized output 216 from equalizer 214. The switch 220 may also be switched during operation to turn equalizer adaptation on or off.
In some embodiments, the data processing circuit 200 uses the default equalizer 214 when processing the first sector, and uses the decoded output 234 if it converges in the LDPC decoder 230 to tune the tunable equalizer 244 based on the first sector results. The newly tuned tunable equalizer 244 is then used to when processing the second sector, and if the decoded output 234 converges in the LDPC decoder 230 for the second sector, it is used to again tune the tunable equalizer 244 based on the second sector results, and so on. This technique is based on the assumption that the conditions for one sector will be similar to a neighboring sector, an assumption that is typically true. This allows an equalizer tuning performed for one sector to be used to improve the equalization and decoding of the next sector, and so on. Thus, the actual channel conditions are better matched in the data processing circuit 200 in a rapidly adapting manner, yielding better detection and decoding performance simply and efficiently.
In some embodiments, the tunable equalizer 244 is tuned after each sector which converges in LDPC decoder 230 to yield a decoded output 234 that can be used to generate an ideal equalized sample. In other embodiments, the tunable equalizer 244 is tuned after one or more global detection/decoding iterations in the data detector circuit 224 and LDPC decoder 230, whether the data has converged or not. In the latter embodiments, the tunable equalizer 244 is tuned for a particular sector, and new Y samples for that sector can be processed during later global iterations. Thus, equalizer tuning can be performed during processing of a single sector. In some instances, the tunable equalizer 244 may be tuned using only the hard decisions in decoded output 234 with high likelihood or confidence values or with likelihood values greater than a threshold value.
In the embodiment of
Turning to
The data processing circuit 300 includes an analog front end 304 that receives and processes an analog signal 302 from the storage or transmission channel. 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 circuit 304. Analog front end circuit 304 receives and processes the analog signal 302, and provides a processed analog signal 306 to an analog to digital converter circuit 310. In some cases, analog signal 302 is derived from a read/write head assembly in a storage or transmission channel that is disposed in relation to a storage medium. In other cases, analog signal 302 is derived from a receiver circuit in a storage or transmission channel that is operable to receive a signal from a transmission medium. The transmission medium may be wireless or wired such as, but not limited to, cable or optical connectivity. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of sources from which analog input 302 may be derived.
Analog to digital converter circuit 310 converts processed analog signal 306 into a corresponding series of digital samples 312 or X samples. Analog to digital converter circuit 310 may be any circuit known in the art that is capable of producing digital samples corresponding to an analog input signal 306. 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. In other embodiments, the digital samples 312 may be obtained directly from a digital storage device or digital transmission medium.
Digital samples 312 are stored in a buffer 314 for use in tuning the tunable equalizer 320. Buffer 314 is used as to adjust the delay of stored digital samples 316 to align them with the decoded output 334 of the LDPC decoder 330 when tuning equalizer 320. The stored digital samples 316 pass through buffer 314 to equalizer 320, as well as being stored for later use in tuning equalizer 320.
Stored digital samples 316 are provided to a tunable equalizer 320. Equalizer 320 applies an equalization algorithm to stored digital samples 316 to yield an equalized output 322 or Y samples. In some embodiments of the present invention, equalizer 320 is a digital finite impulse response filter circuit as are known in the art. In these embodiments, the DFIR tap coefficients are pre-tuned according to expected channel conditions. The equalized output 322 includes LDPC-encoded digital data bits, equalized to reduce inter-symbol interference (ISI) in the equalizer 320 based on a target response or partial response (PR) target. The equalized output 322 may be stored in a Y memory (not shown) until a data detector circuit 324 is available and ready to begin processing equalized output 322.
Data detector circuit 324 is operable to apply a data detection algorithm to a received codeword or data set. In some embodiments of the present inventions, data detector circuit 324 is a Viterbi algorithm data detector circuit as is known in the art. In other embodiments of the present invention, data detector circuit 324 is a maximum a posteriori data detector circuit as is known in the art. 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.
Upon completion, data detector circuit 324 provides detector output 326. Detector output 326 includes soft data. Detected output 326 is provided to the LDPC decoder 330 for decoding. In some embodiments, detected output 326 may also be interleaved in a local interleaver circuit (not shown) to shuffle sub-portions (i.e., local chunks) of the data set included as detected output 326, and stored in a central memory circuit (not shown).
The LDPC decoder 330 used in various embodiments may be any type of LDPC decoder, including binary and non-binary, layered and non-layered. In some embodiments, the LDPC decoder 330 is a non-binary min-sum based LDPC decoder. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize other decode algorithms that may be used in relation to different embodiments of the present invention. The LDPC decoder 330 applies a data decode algorithm to detected output 326 in a variable number of local iterations.
Where the LDPC decoder 330 fails to converge and the number of local iterations through LDPC decoder 330 exceeds a threshold, the resulting decoded output may be provided as a decoded output 332 back to data detector circuit 324 for another global detection/decoding iteration through data detector circuit 324 and LDPC decoder 330. In some embodiments, decoded output 332 is stored in a central memory circuit (not shown) and passed through a local deinterleaver circuit (not shown) that rearranges decoded output 332 to reverse the shuffling originally performed by the local interleaver circuit. The decoded output 332 is used in the next global iteration to guide subsequent detection of a corresponding data set received as detector input 322.
Where the decoded output converges in the LDPC decoder 330, the resulting decoded output 334 is yielded, including hard decisions and soft LLR data giving the likelihood or confidence values about the hard decisions. The LDPC decoder 330 may use any suitable technique to determine whether data has converged, such as the number of violated parity checks during a local decoding iteration.
If the LDPC decoder 330 converged, the decoded output 334 is used as ideal data to tune the equalizer 320. The stored digital samples 316 corresponding to the sector at decoded output 334 is equalized in equalizer 314 to yield equalized output 322, so that the equalized output 322 and the decoded output 334 for the same sector are both available to equalizer adaptation circuit 340. In other embodiments, the equalized output 322 may be buffered rather than digital samples 312. The decoded output 334 and equalized output 322 are provided to equalizer adaptation circuit 340 to generate new equalizer settings 342 for tunable equalizer 320. For example, equalizer adaptation circuit 340 may calculate new tap coefficients for tunable equalizer 320.
The equalizer adaptation circuit 340 convolves the decoded output 334 with the channel partial response target to yield an ideal equalized sample for the data sector. The equalizer adaptation circuit 340 is also operable to generate new equalizer settings 342 for tunable equalizer 320 that reduce the difference between the ideal equalized sample and the equalized output 322, using any suitable algorithm. For example, the equalizer adaptation circuit 340 may implement a least mean squares algorithm to find DFIR tap coefficients (e.g., 342) that produce the least mean squares of the error signal comprising the difference between the ideal equalized sample and the equalized output 322. However, the equalizer adaptation circuit 340 is not limited to any particular error reducing algorithm. The new equalizer settings 342 thus tune the tunable equalizer 320 to better adapt to the channel condition (noise, jitter, distortion, etc.).
In some embodiments, the equalizer 320 is tuned after each sector which converges in LDPC decoder 330 to yield a decoded output 334 that can be used to generate an ideal equalized sample. In other embodiments, the equalizer 320 is tuned after one or more global detection/decoding iterations in the data detector circuit 324 and LDPC decoder 330, whether the data has converged or not. In the latter embodiments, the equalizer 320 is tuned for a particular sector, and new Y samples for that sector can be processed during later global iterations. Thus, equalizer tuning can be performed during processing of a single sector. In some instances, the equalizer 320 may be tuned using only the hard decisions in decoded output 334 with high likelihood or confidence values or with likelihood values greater than a threshold value.
In some embodiments, the equalizer 320 is tuned after each sector which converges in LDPC decoder 330 to yield a decoded output 334 that can be used to generate an ideal equalized sample. In other embodiments, the equalizer 320 is tuned after one or more global detection/decoding iterations in the data detector circuit 324 and LDPC decoder 330, whether the data has converged or not. In the latter embodiments, the equalizer 320 is tuned for a particular sector, and new Y samples for that sector can be processed during later global iterations. Thus, equalizer tuning can be performed during processing of a single sector. In some instances, the equalizer 320 may be tuned using only the hard decisions in decoded output 334 with high likelihood or confidence values or with likelihood values greater than a threshold value.
Turning to
Turning to
Turning to
Although the LDPC decision-driven equalizer adaptation disclosed herein is not limited to any particular application, several examples of applications are presented in
In a typical read operation, read/write head assembly 720 is accurately positioned by motor controller 712 over a desired data track on disk platter 716. Motor controller 712 both positions read/write head assembly 720 in relation to disk platter 716 and drives spindle motor 714 by moving read/write head assembly 720 to the proper data track on disk platter 716 under the direction of hard disk controller 710. Spindle motor 714 spins disk platter 716 at a determined spin rate (RPMs). Once read/write head assembly 720 is positioned adjacent the proper data track, magnetic signals representing data on disk platter 716 are sensed by read/write head assembly 720 as disk platter 716 is rotated by spindle motor 714. The sensed magnetic signals are provided as a continuous, minute analog signal representative of the magnetic data on disk platter 716. This minute analog signal is transferred from read/write head assembly 720 to read channel circuit 702 via preamplifier 704. Preamplifier 704 is operable to amplify the minute analog signals accessed from disk platter 716. In turn, read channel circuit 702 decodes and digitizes the received analog signal to recreate the information originally written to disk platter 716. This data is provided as read data 722 to a receiving circuit. As part of decoding the received information, read channel circuit 702 processes the received signal using an equalizer and LDPC decoder, tuning or adapting the equalizer based on LDPC decoder decisions as disclosed herein. A write operation is substantially the opposite of the preceding read operation with write data 724 being provided to read channel circuit 702. This data is then encoded and written to disk platter 716.
It should be noted that storage system 700 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 storage system 700, 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.
Turning to
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 portion of the functions 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, the present invention provides novel systems, devices, methods and arrangements for LDPC decision-driven equalizer adaptation. 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 the invention, which is defined by the appended claims.