A method for creating a high efficiency, error minimizing code is provided. In addition, an apparatus having a high efficiency, error minimizing code is provided. In particular, the present invention provides a high efficiency, error minimizing code for use in connection with systems having a communication channel in which identifiable dominant errors occur, and that is used to transmit data that may be usefully applied in the system even though the received signal is not exactly equal to the original signal. Furthermore, the present invention provides a code that may be used to constrain the effects of dominant errors in a communication channel.
|
0. 13. An apparatus for encoding data comprising:
a decoder circuit configured to
communicate data that is encoded using a code space having a plurality of code words that are correlated to user values;
determine dominant error events and an effect of the dominant error events on the code words in the code space;
identify groups of interdependent code words in said code space based on the effect of the dominant error events on the code words;
determine a limit for the number of code words in the identified groups;
modify the code space by removing code words from said code space based upon the determined limit and the identified groups; and
communicate data that is encoded using the modified code space.
6. A method of encoding data in digital communication systems for reducing effect of errors comprising the steps of:
providing a communications channel having a circuit at first and second ends of the communications channel and a code space with a plurality of code words;
determining a dominant error event for said communications channel including effects of said dominant error event on said code words in said code space;
assigning user values to said code words in said code space;
determining a maximum tolerable deviation between user values submitted to transmission at a the first end of said communications channel and corresponding user values as received at a the second end of said communications channel;
forming groups of interdependent code words in said code space based on said dominant error event;
multiplying the maximum tolerable deviation by two to obtain a maximum number of code words, m, that directly interdepend with any code word;
removing code words from said code space, so that no code words having more than m directly interdependent code words remain in said code space.
1. A method of encoding data in digital communication systems for reducing effect of errors comprising the steps of:
providing a communications channel having a circuit at first and second ends of the communications channel and a code space with a plurality of code words;
determining dominant error events for said communications channel including effects of said dominant error events on said code words in said code space;
assigning user values to said code words in said code space;
determining a maximum tolerable deviation between user values submitted to transmission at a the first end of said communications channel and corresponding user values as received at a the second end of said communications channel;
forming groups of interdependent code words in said code space based on said dominant error events;
multiplying the maximum tolerable deviation by two to obtain a maximum number of code words, that may directly interdepend with any code word;
removing code words from said code space, so that no code words having more than m directly interdependent code words remain in said code space.
2. The method of
reassigning user values to the non-removed code words, such that occurrence of a dominant error results in a received user value that is within the maximum tolerable deviation for all user values assigned to the non-removed code words.
3. The method of
reassigning two or more user values to one code word.
5. The method of
7. The method of
determining a second dominant error event for said communications channel.
8. The method of
reassigning user values to the non-removed code words, such that occurrence of a dominant error results in a received user value that is within the maximum tolerable deviation for all user values assigned to the non-removed code words.
9. The method of
reassigning two or more user values to one code word.
11. The method of
12. The method of
0. 14. The apparatus of claim 13, wherein the decoder circuit is configured to communicate with a storage circuit and wherein the determined dominant error events include dominate error events associated with memory accesses to the storage circuit.
0. 15. The apparatus of claim 13, further including a non-volatile storage circuit that is linked to the decoder circuit over a communications channel and wherein the dominant error events are associated with differences between user values stored in the storage circuit and user values determined from code words received at the decoder circuit.
0. 16. The apparatus of claim 13, wherein the decoder circuit is configured to assign user values to the code words of the modified code space as a function of differences in the user values and the identified groups.
|
More than one reissue application has been filed for the reissue of U.S. Pat. No. 7,404,131. The reissue applications are application Ser. No. 13/330,177 filed Dec. 19, 2011 (the present application), which is a divisional reissue of U.S. Pat. No. 7,404,131), and Ser. No. 12/840,974 filed Jul. 21, 2010, which is a reissue application of U.S. Pat. No. 7,404,131.
The present invention relates to coding data. In particular, the present invention relates to a method and apparatus for encoding data that is highly efficient, and that minimizes the effect of errors.
Coding schemes are regularly used in connection with the transmission of data. For example, in digital communication systems, data is typically transmitted as a series of code words. In general, each code word is assigned a unique pattern of bits, with each bit consisting of either a zero or a one. In most such digital communication systems, the number of bits that may be used to define code words is limited. Therefore, it is desirable to encode data such that a maximum number of code words (i.e., bit patterns) are available as code words. It is also desirable to reduce the effect of errors that may occur in transmitting code words across the communication channel.
In many digital systems, errors in the detection, transmission or reading of bit patterns may occur. For example, certain bit patterns may result, on occasion, in certain bits being “flipped.” The particular bit patterns that are susceptible to flipping are generally determined by the system under consideration. Such errors may be identified as dominant errors if they are much more likely to occur than errors due to random effects, such as noise.
In a typical coding scheme, a code word that is read incorrectly due to the occurrence of a dominant error can result in a very large discrepancy. That is, the value of the original code word can be very different from the code word that is actually read. In general, this is because the strategies used to assign values to code words do not take into consideration the dominant errors that may be associated with a system.
Modulation codes have been used to aid in the transmission and reception of data. Such codes are designed to avoid code words that are particularly susceptible to being misread. For example, code words having a string of identical bits of at least a certain length may be susceptible to detecting one or more of the bits as its opposite. A modulation code designed to avoid such a “bit flipping” event may eliminate as valid code words any pattern of bits that includes more than the allowed number of identical bits in a row. However, such “run length limited” codes reduce the efficiency of the code space by eliminating what would otherwise be valid code words.
Coding schemes have also been developed to detect, and in some instances correct, errors that occur during the transmission and reception of the data. Error control codes include parity checking codes and error correction codes. In a typical parity code, an extra bit is assigned to tracking whether the detected code word should contain an even or odd number of ‘1’ bits. Upon detection of the code word, if the parity code does not agree with the code word (e.g., the detected code word contains an even number of 1's, but the parity code indicates that it should contain an odd number of 1's), it can be assumed that an error occurred during transmission or reception of the code word. If the coding scheme used is a simple parity checking scheme, no correction is generally possible, and the received code word is discarded. In a typical error correcting code, more than one parity or error control bit is used to enable at least some errors to be corrected. However, each bit of a code word dedicated to parity checking or to error correction reduces the efficiency of the coding scheme.
As an example of systems that include a communication channel susceptible to dominant errors, a computer hard disk drive system and a voice communication system will be described. However, it should be appreciated that the present invention is not limited to use in connection with such systems, and can generally be applied to any communication system that is susceptible to dominant errors and that can tolerate some deviation between a value as written and a value as read.
With reference now to
Typically, the data is stored in the concentric tracks 136 as a series of magnetic transitions. In an ideal disk drive system 100, the tracks 136 are non-perturbed circles situated about the center of the disk 108. As such, each of these ideal tracks includes a track centerline that is located at a known constant radius from the disk center. In an actual system, however, it is difficult to write non-perturbed circular tracks 136 to the data storage disk 108. That is, problems such as vibration, bearing defects, inaccuracies in the servo track writer used to write the tracks 136 and disk clamp slippage can result in tracks 136 that are written differently from the ideal non-perturbed circular track shape. The resulting inaccuracies in the shape of the tracks 136 due to such errors is known as written-in and repetitive runout. The perturbed shape of these tracks 136 complicates the positioning of the transducer heads 124 during read and write operations because the disk drive servo system needs to continuously reposition the transducer heads 124 during track following.
In order to at least partially correct the shape of the tracks 136 and to minimize the effects of written-in and repetitive runout, the tracks 136 are periodically encoded with embedded run-out correction (ERC) values. In particular, the embedded run-out correction values serve as corrections to the position error signal (PES) generated during track following.
Although the correction values stored in the ERC fields represent discrete correction amounts, the amount of correction need not be precisely read in order to usefully alter the position error signal read from a track 136 during track following. However, conventional disk drive systems utilizing embedded run-out correction typically discard embedded runout correction values that are not correctly detected by a detector included as part of the channel 138. Accordingly, previous systems have treated embedded runout correction values, which can tolerate at least some variance between the value as originally written and the value as detected, in the same way as user data, which generally must be discarded if errors in the reading of such data occur. Therefore, such conventional methods result in inefficiencies and/or the loss of useful data.
As a further example of a system that includes a communication channel susceptible to dominant errors but that tolerates some variance between an intended value and a received value, consider a digital voice communication system. In general, a human listener is capable of comprehending the meaning of another's speech, even though small portions of the conversation are lost, for example, due to transmission errors. However, breaks in an audible signal due to such errors are annoying and can make a conversation difficult or impossible to follow. Furthermore, typical communication channels used for transmitting voice data are susceptible to dominant errors. In addition, such systems must operate with high efficiency in order to be economical. Therefore, communication systems used for the transmission of voice data could benefit from a coding strategy that minimized the effect of dominant errors in the communication channel, while reducing or eliminating the need to transmit redundant code.
As mentioned above, modulation and error control coding schemes require the recordation and transmission of redundant information in addition to the user data. Although this redundant information allows for the reduction, detection or correction of errors in the transmission of user data, the storage and/or transmission capacity of the system is reduced. In addition, errors that are not detected result in values that may be very different from the intended value. Furthermore, errors that are detected but are not corrected may result in a code word being discarded, with no benefit being derived from the transmission of the discarded data. Therefore, it would be advantageous to provide a coding strategy that was highly efficient, and that minimized the effects of errors. In addition, it would be advantageous to provide a system that could be implemented at low cost, and that was reliable in operation.
In accordance with the present invention, a high efficiency, error minimizing coding strategy is provided. The present invention may be used in connection with any system that is susceptible to at least one dominant error in the transmission of data, and that can tolerate at least some deviation between a user value as recorded or transmitted and a user value as read or received. The coding strategy of the present invention allows data to be encoded such that errors are minimized, while maximizing the efficiency of the system.
According to one embodiment of the present invention, the dominant error or errors present in the communication channel of a system are identified. A list of code words of a length accommodated by the system is prepared, and each code word in the list is analyzed to determine its neighbor words. A neighbor word is the code word that is read by the system if a dominant error occurs during the reading or transmission of the code word under analysis. In addition, the code words may be grouped according to code words that are interdependent on one another. A code word is interdependent with another code word if one of the code words is a neighbor of the other, or is related to the other code word because they are part of the same web or chain of neighbor words. Also, a maximum tolerable deviation range between a user value as encoded and a user value as decoded should be determined. If any group of code words includes a word that is directly interdependent with (i.e. is a neighbor of or to) a number of neighbor words greater than two times the range of the maximum tolerable deviation between the user value as intended and the user value as received, a code word or words is removed from the coding scheme. The particular code word or words removed is chosen so that the requirement that no one code word is a neighbor of or to more than two times the maximum tolerable deviation range is met without removing more code words than is necessary. The code words may again be grouped according to code words that are interdependent. Each code word in a group of code words may then be assigned a user value such that if a dominant error causes a first code word to be read as a second code word, the difference between the user value of the intended code word is within the range of tolerable deviation from the user value of the code word that was read. Any code words not belonging to any group may be assigned to any remaining user values.
According to one embodiment of the present invention, a plurality of user values may be assigned to a single code word, so long as the user values are within the maximum tolerable deviation between user values established for the system.
According to another embodiment of the present invention, a first dominant error event for a communication channel is identified. A range of user values corresponding to a maximum tolerable user value error is also determined. Next, a first user value is assigned to a first code word. A second user value, within the maximum tolerable user value error from the first user value is assigned to a second code word. The second code word is the word that is read as a result of the occurrence of the first dominant error upon the transmission of the first code word across the communication channel. In addition, a third user value may be assigned to a third code word. The third user value is, according to an embodiment of the present invention, outside of the range of user values corresponding to a maximum tolerable user value error. Furthermore, the first code word is not read as the third code word if the first dominant error occurs.
According to still another embodiment of the present invention, a second dominant error for the communication channel is identified. A user value may be assigned to the second code word that results if the second dominant error occurs during transmission of the first code word. According to the present invention, the user value assigned to the second code word should have a value that is within the range of maximum tolerable user value error from the first code word.
According to a further embodiment of the present invention, an apparatus having or using data encoded according to an error minimizing scheme is provided. The apparatus includes a channel that is subject to at least a first dominant transmission error. The apparatus further includes a decoder in which a first code word is read as a second code word upon an occurrence of the first dominant error. The second code word has a user value that is within a range of user values corresponding to a tolerable amount of error in the apparatus from the first code word. According to still another embodiment of the present invention, the occurrence of the first dominant transmission error does not result in the first code word being read as any code word that is outside of the range of tolerable error in user values.
Based on the foregoing summary, a number of salient features of the present invention are readily discerned. A method for providing a high efficiency, error minimizing code is provided. The method enables a system having a dominant error or errors and that can tolerate at least some deviation between user values or data as stored or transmitted and user values or data as read or received to operate with high efficiency. Furthermore, the method of the present invention allows the maximum deviation between user values or data as stored or transmitted and user values as read or received due to a dominant error to be constrained to a chosen deviation amount. In addition, the present invention provides an apparatus in which errors in the transmission or reading of user values or data results in user values that are within a defined maximum tolerable deviation. The apparatus achieves this without requiring the use of redundant data.
Additional advantages of the present invention will become readily apparent from the following discussion, particularly when taken together with the accompanying drawings.
With reference now to
According to the present invention, communication channel 204 must be subject to an identifiable dominant error or set of errors. A dominant error is an error having a high probability of occurrence. In particular, a dominant error has a much higher probability of occurrence than a non-dominant error. More particularly, a dominant error has a higher probability of occurrence than a random error. Furthermore, a dominant error is distinct from a random error in that the effect of an occurrence of a dominant error has a particular and identifiable effect.
With reference now to
Another initial step in preparing a code in accordance with the present invention is to determine the dominant error events in the system, and the effect that occurrence of each of the dominant error events has on the code words (step 304). In particular, those code words that are susceptible to being altered by the occurrence of a dominant error are identified. If the system is capable of transmitting code words sequentially, the effect of dominant error events on the code words must be determined when the code word is concatenated with other code words, as well as when the code word is transmitted across the channel singly.
As yet another initial step, the maximum tolerable deviation between a user value as written or transmitted and that user value as read or received is determined. According to the present invention, alterations to code words due to dominant errors result in received signals 208 having values that are the same or close (i.e. within the maximum tolerable deviation) to the values of the original signals 200. In general, the greater the range of tolerable deviation, the more efficient the code scheme can be. That is, usually fewer code words will need to be eliminated as valid code words, as will be explained in greater detail below, if the maximum tolerable deviation is relatively large.
Following the initial steps 300, 304 and 308, which can be taken in any order, the code words that are susceptible to alteration by the identified dominant errors are placed into groups of interdependent code words (step 312). In general, groups of interdependent code words are formed from code words that are neighbor words or that are related to one another through one or more neighbor words. A first code word is a neighbor of a second code word if the occurrence of one or more dominant errors in the communication channel 204 causes the first code word to be read or received as the second code word. In developing a code in accordance with the present invention, it is convenient to develop state diagrams consisting of interdependent code words, as will be explained below.
As a next step, the maximum tolerable deviation between user values as written and user values as received may be multiplied by two to determine the maximum number of code words that can directly interdepend with any one code word (step 316). Code words are directly interdependent if one code word is the neighbor of another code word. If this maximum number of directly interdependent code words is exceeded, code words are removed from the code space so that no code word having more than this number of directly interdependent code words remains in the code space.
User values are then assigned to the code words such that the occurrence of a dominant error in the transmission of an original signal 200 results in a received signal 208 that is within the maximum tolerable deviation of the original signal (step 320). In this way, the occurrence of a dominant error in the communication channel 204 results in a user value that is acceptably close to the user value of the original signal 200. Accordingly, the coding scheme constrains the effect of dominant errors in a communication channel 204, such that a useful user value is provided to the system despite the occurrence of a dominant error or errors. Furthermore, the coding strategy of the present invention achieves this without requiring the use of redundant bits.
As an example of dominant errors, the channel 204 of a system using a five bit binary code space may have a first dominant error event that transforms an original signal 200 of 10001 to a received signal 208 of 10101. That is, the first dominant error, according to this example, results in flipping the middle of three bits having a value of zero and bounded on either side by bits having a value of 1. In addition, the channel 204 of the system may have a second dominant error that transforms an original signal 200 of 01110 to a received signal 208 of 01010. That is, the second dominant error results in the flipping of the middle bit when three bits having a value of one are bounded on either side by bits having a value of 0.
Where code words are capable of being transmitted in series, the effect of dominant error events must be considered for each code word when it is concatenated with any other code word. For example, a code word having an original signal equal to 00011, having a decimal equivalent of 3, can be read as received signal 01011, having a decimal equivalent of 11, when a code word ending in 1 precedes the original signal and the first dominant error event occurs. Likewise, a received signal of 00010 can result when the original signal of 00011 is followed by a code word having a first bit equal to 1 and a second bit equal to 0 and the second dominant error event occurs. In addition, an original signal of 00011 can result in a received signal of 01010 if the code word is preceded by another code word ending in one and the first dominant error occurs, and is followed by a code word beginning with the bits 10 and the second dominant error also occurs.
With reference now to
As is evident from the maximum variance 416 values for the code illustrated in
With reference now to
With reference now to
According to the present example, the maximum tolerable deviation between user values is assumed to be one. Therefore, no valid code word 408 may have more than two other code words 408 that are directly interdependent with it. As stated previously, binary codes 408 are considered to be directly interdependent with one another if a first of the code words 408 may be altered by the occurrence of a dominant error in the communication channel 204 such that the received signal 208 is the second of the code words 408.
Because the groups illustrated in
With reference now to
As explained above, according to one embodiment of the present invention, user values 400 must next be allocated to the code words remaining in the code space. In particular, user values 400 should be allocated such that the occurrence of one or more dominant errors during the transmission of an original signal 200 results in a received signal 208 having a user value within the maximum tolerable deviation of the user value of the original signal 200.
With reference now to
With reference now to
In the example code illustrated in
According to one embodiment of the present invention, the ability of the system to tolerate at least some deviation between the original signal 200 and the received signal 208 may be used to increase the efficiency of the code scheme. For example, up to two user values may be assigned to any one code word within the example system discussed in connection with
It will also be noted that the additional user values added in
Although the foregoing discussion has been in terms of integer user values, the present invention is not so limited. In particular, any numerical increment or non-numeric value may be assigned to the user values. Furthermore, when determining the maximum number of neighbor words that any one code word can have, that number can be determined by converting the maximum tolerable deviation to an equivalent distance between code words and multiplying by two.
From the above description, it can be appreciated that the present invention may be used in connection with any numbering system. Therefore, it can be applied in connection with m-ary codes, and is not limited to binary codes such as those in the examples given above.
Furthermore, it should be appreciated that the present invention may be used in connection with any system used in the transmission of data that is characterized by having dominant errors, and that can tolerate at least some deviation between an original signal and a received signal.
According to the present invention, a method and apparatus concerning a high efficiency, error minimizing code are disclosed. In particular, the present invention provides for a high efficiency code scheme that does not require the use of redundant characters.
The foregoing discussion of the invention has been presented for purposes of illustration and description. Further, the description is not intended to limit the invention to the form disclosed herein. Consequently, variations and modifications commensurate with the above teachings, within the skill and knowledge of the relevant art, are within the scope of the present invention. The embodiments described hereinabove are further intended to explain the best mode presently known of practicing the invention and to enable others skilled in the art to utilize the invention in such or in other embodiments and with various modifications required by their particular application or use of the invention. It is intended that the appended claims be construed to include the alternative embodiments to the extent permitted by the prior art.
McCarthy, Steve, Seabury, John
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5802118, | Jul 29 1996 | Cirrus Logic, INC | Sub-sampled discrete time read channel for computer storage systems |
5856986, | Nov 25 1996 | Texas Instruments Incorporated | Synchronization field pattern selection |
6040953, | Mar 25 1997 | International Business Machines Corporation | Adaptive data recovery method and means tuned to thermal asperities in a cyclic, multitracked magnetic storage subsystem |
6097320, | Jan 20 1998 | Silicon Systems, Inc. | Encoder/decoder system with suppressed error propagation |
6158027, | Aug 31 1998 | Western Digital Technologies, INC | Enhanced noise-predictive maximum likelihood (NPML) data detection method and apparatus for direct access storage device (DASD) |
6201840, | Oct 08 1997 | Seagate Technology LLC | Method and apparatus for detecting data in magnetic recording using decision feedback |
6240538, | Sep 10 1998 | Ericsson Inc. | Method and apparatus for errors and erasures decoding |
6353315, | Aug 27 1999 | Maxtor Corporation | Method and apparatus for using the data interface of a disk drive to identify and characterize disk flaws |
6373407, | Feb 25 1998 | Hitachi Global Storage Technologies Japan, Ltd | Data encoding method for digital data recording and data recording system using the same |
6400728, | Sep 09 1998 | VLSI Technology, Inc. | Method and system for detecting user data types in digital communications channels and optimizing encoding-error correction in response thereto |
6446234, | Mar 16 1999 | GLOBALFOUNDRIES Inc | Method and apparatus for updating cyclic redundancy check information for data storage |
6530055, | Apr 26 1999 | INPHI CORPORATION | Method and apparatus for receiving and decoding coded information, including transfer of error information from transmission layer to coding layer |
6546515, | Jun 18 1999 | Alcatel | Method of encoding a signal |
6556615, | Jan 14 1997 | Trimble Navigation, Ltd. | Wide correlated optimized code multipath reduction |
Date | Maintenance Fee Events |
Mar 04 2016 | REM: Maintenance Fee Reminder Mailed. |
Jul 22 2016 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Dec 25 2015 | 4 years fee payment window open |
Jun 25 2016 | 6 months grace period start (w surcharge) |
Dec 25 2016 | patent expiry (for year 4) |
Dec 25 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 25 2019 | 8 years fee payment window open |
Jun 25 2020 | 6 months grace period start (w surcharge) |
Dec 25 2020 | patent expiry (for year 8) |
Dec 25 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 25 2023 | 12 years fee payment window open |
Jun 25 2024 | 6 months grace period start (w surcharge) |
Dec 25 2024 | patent expiry (for year 12) |
Dec 25 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |