Claims
- 1. A method of encoding digital information at an average rate of (n+d/2.sup.m) user bits per codeword, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the method comprising the steps of:
- receiving a sequence of (2.sup.m n+d) user bits;
- selecting 2.sup.m dc-free codewords from among a plurality of non-intersecting subconstellations of dc-free codewords, wherein codewords with the most frequent bit transitions are assigned to subconstellations different from codewords with the least frequent bit transitions, wherein the step of selecting comprises the steps of:
- identifying from which of the plurality of subconstellations each of the 2.sup.m dc-free codewords will be selected based upon a portion of the sequence of user bits; and
- specifying the 2.sup.m dc-free codewords based upon the remaining user bits in the sequence; and
- generating a sequence of bits corresponding to the selected 2.sup.m dc-free codewords.
- 2. The method of claim 1 wherein codewords with the most frequent bit transitions are assigned to larger subconstellations and codewords with the fewest bit transitions are assigned to smaller subconstellations, wherein the step of identifying comprises executing an algorithm which uses the subconstellations in a non-equiprobable manner such that a particular codeword from a larger subconstellation is more likely to be used than a particular codeword from a smaller subconstellation.
- 3. The method of claim 2 wherein the step of selecting comprises selecting the codewords from at least one codebook wherein codewords with more bit transitions are assigned to larger subconstellations than codewords with fewer bit transitions.
- 4. The method of claim 2 wherein the number of subconstellations is determined by creating a constellation tree based at least upon the value of d, wherein ##EQU9## and wherein a set P represents the ordering of indices for which d.sub.i is not equal to zero, wherein the step of identifying further comprises partitioning, for each member of the set P, 2.sup.m as-yet unspecified codewords into sets of non-overlapping subdivisions, and for each of said subdivisions, determining, based upon at least one of the user bits in said portion of the sequence of user bits, whether all of the as-yet unspecified codewords in a particular subdivision proceed down respective first branches in the constellation tree, or whether exactly one of the as-yet unspecified codewords in the particular subdivision proceeds down a respective second branch in the constellation tree while the remaining as-yet unspecified codewords in the particular subdivision proceed down the respective first branches.
- 5. The method of claim 4 wherein the step of identifying further includes the step of determining, based upon at least another one of the user bits in said portion of the sequence of user bits, which one of the as-yet unspecified codewords in a particular subdivision proceeds down the respective second branch, if it is determined that fewer than all of the as-yet unspecified codewords in the particular subdivision proceed down the respective first branches.
- 6. The method of claim 5 wherein the step of specifying comprises the step of using the remaining user bits in the sequence to address entries in look-up tables wherein the look-up tables correspond to said subconstellations.
- 7. The method of claim 5 wherein the step of identifying comprises the step of using the sequence of user bits in the order in which they are received.
- 8. A method of encoding digital information at an average rate of (n+d/2.sup.m) user bits per codeword for storage on a magnetic medium, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the method comprising the steps of:
- receiving a sequence of (2.sup.m n+d) user bits;
- selecting 2.sup.m dc-free codewords from among a plurality of non-intersecting subconstellations of dc-free codewords, wherein the step of selecting comprises the steps of:
- identifying from which of the plurality of subconstellations each of the 2.sup.m dc-free codewords will be selected based upon a portion of the sequence of user bits; and
- specifying the 2.sup.m dc-free codewords based upon the remaining user bits in the sequence; and
- recording the selected 2.sup.m dc-free codewords on a magnetic medium.
- 9. The method of claim 8 wherein the step of recording comprises the step of recording the 2.sup.m dc-free codewords on digital audio tape.
- 10. The method of claim 9 wherein the step of recording comprises the step of recording the 2.sup.m dc-free codewords on a disk drive.
- 11. The method of claim 8 further comprising the steps of:
- reading the 2.sup.m dc-free codewords recorded on the magnetic medium; and
- mapping the 2.sup.m dc-free codewords read from the magnetic medium to the sequence of (2.sup.m n+d) user bits so as to recover the original sequence of user bits.
- 12. The method of claim 11 wherein the step of mapping comprises the step of using a look-up table to map each codeword to a respective portion of the sequence of user bits.
- 13. The method of claim 12, wherein the step of mapping further comprises the step of determining additional user bits in the sequence of user bits based upon the identity and order of the subconstellations from which the 2.sup.m codewords were selected.
- 14. The method of claim 8 further comprising the steps of:
- reading the 2.sup.m dc-free codewords recorded on the magnetic medium; and
- detecting whether an impermissible combination of codewords has been read from the magnetic medium.
- 15. The method of claim 14 further comprising the step of providing an alarm indicating that an impermissible combination of codewords has been read from the magnetic medium.
- 16. A method of generating high rate codes for encoding digital information comprising the steps of:
- receiving a signal indicating a desired average code rate of (n+d/2.sup.m) user bits per codeword, wherein n is a positive integer, and d is a positive integer less than 2.sup.m ;
- generating a plurality of non-intersecting subconstellations of dc-free codewords, wherein the number and size of the subconstellations are determined according to the average code rate;
- assigning dc-free codewords to each of said subconstellations, wherein codewords with the most frequent bit transitions are assigned to different subconstellations from codewords with the least frequent bit transitions;
- assigning a q-bit address to each one of said dc-free codewords, where q=log.sub.2 Q, and Q is the size of the respective subconstellation to which the codeword was assigned;
- storing in memory each of said codewords, the correspondence between the codewords and the subconstellations, and the address assigned to each respective codeword;
- receiving a sequence of (2.sup.m n+d) user bits;
- selecting 2.sup.m of the dc-free codewords based upon the received sequence of user bits; and
- generating a sequence of bits corresponding to the selected 2.sup.m dc-free codewords.
- 17. The method of claim 16 wherein the step of selecting comprises the steps of:
- identifying from which of the plurality of subconstellations each of the 2.sup.m dc-free codewords will be selected based upon a portion of the sequence of user bits in a predetermined order; and
- specifying the 2.sup.m dc-free codewords based upon the remaining user bits in the sequence.
- 18. The method of claim 17 wherein the step of generating a plurality of non-intersecting subconstellations comprises the steps of:
- creating a constellation tree corresponding to the rate wherein the number of levels in the constellation tree, excluding a root node, equals the number of indices i for which d.sub.i is not equal to zero, where ##EQU10## wherein each node, except leaf nodes at the lowest level of the constellation tree, has a respective first and second branch, and wherein each leaf node corresponds to one of the plurality of non-intersecting subconstellations;
- labelling each respective first branch with a weight of zero;
- labelling each respective second branch in the jth level of the constellation tree with a weight (m-p(j)), where p(j) is the jth indice i for which d.sub.i is not equal to zero;
- determining the respective relative weights r(i) of each of said leaf nodes by summing the weights along each path of branches from the root node to each respective one of said leaf nodes; and
- determining the number of dc-free codewords to be assigned to each of said subconstellations according to 2.sup.n 2.sup.-r(i).
- 19. The method of claim 16 wherein the step of assigning dc-free codewords to each of said subconstellations further comprises the step of assigning codewords with the least bit transitions to the smaller subconstellations.
- 20. The method of claim 19 wherein the step of assigning dc-free codewords to each of said subconstellations comprises the step of assigning codewords with the most bit transitions to the larger subconstellations.
- 21. The method of claim 16 wherein the step of assigning dc-free codewords to each of said subconstellations comprises the step of assigning codewords having a length of N bits, where N is the smallest number such that ##EQU11## is greater than or equal to the total number of codewords in the plurality of subconstellations.
- 22. A coder for encoding digital information at an average code rate of (n+d/2.sup.m) user bits per codeword, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the apparatus comprising:
- a memory comprising a plurality of non-intersecting subconstellations of dc-free codewords, wherein each codeword is assigned to one of the subconstellations, wherein the subconstellations are of different sizes, and wherein codewords with the least frequent bit transitions are assigned to the smaller subconstellations;
- means for selecting, in response to a received sequence of (2.sup.m n+d) user bits, 2.sup.m dc-free codewords from among the plurality of subconstellations, wherein the subconstellations are used in a non-equiprobable manner such that a particular codeword from a larger subconstellation is more likely to be selected than a particular codeword from a smaller subconstellation; and
- means for generating a sequence of bits corresponding to the selected 2.sup.m dc-free codewords.
- 23. The coder of claim 22 wherein codewords with the most frequent bit transitions are assigned to larger subconstellations.
- 24. The coder of claim 22 further comprising:
- means for identifying from which of the plurality of subconstellations each of the 2.sup.m dc-free codewords will be selected based upon a portion of the sequence of user bits; and
- means for specifying the 2.sup.m dc-free codewords based upon the remaining user bits in the sequence.
- 25. The apparatus of claim 24 wherein the number of subconstellations is determined by creating a constellation tree based at least upon the value of d, wherein ##EQU12## and wherein a set P represents the ordering of indices for which d.sub.i is not equal to zero, wherein the means for identifying comprises a processor programmed to partition, for each member of the set P, 2.sup.m as-yet unspecified codewords into sets of non-overlapping subdivisions, and programmed to determine, for each of said subdivisions, based upon at least one of the user bits in said portion of the sequence of user bits, whether all of the as-yet unspecified codewords in a particular subdivision proceed down respective first branches in the constellation tree, or whether exactly one of the as-yet unspecified codewords in the particular subdivision proceeds down a respective second branch in the constellation tree while the remaining as-yet unspecified codewords in the particular subdivision proceed down the respective first branches.
- 26. The coder of claim 22 wherein the number and size of the subconstellations stored in the memory depend upon the average code rate.
- 27. The coder of claim 26 wherein the memory stores a q-bit address for each of the codewords, where q=log.sub.2 Q, and Q is the size of the respective subconstellation to which the codeword was assigned.
- 28. The coder of claim 22 further comprising means for recording the sequence of bits corresponding to the selected 2.sup.m dc-free codewords on a magnetic medium.
- 29. An apparatus for encoding digital information comprising:
- means for receiving a signal indicating an average code rate of (n+d/2.sup.m) user bits per codeword, wherein n is a positive integer, and d is a positive integer less than 2.sup.m ;
- means for generating a plurality of non-intersecting subconstellations of dc-free codewords, wherein the subconstellations are of different sizes, and wherein the number and size of the subconstellations are determined according to the average code rate;
- means for assigning dc-free codewords to each of said subconstellations, wherein codewords with the most frequent bit transitions are assigned to the larger subconstellations and codewords with the least frequent bit transitions are assigned to the smaller subconstellations;
- a memory for storing said plurality of subconstellations and for storing the correspondence between said codewords and said subconstellations;
- means for selecting 2.sup.m of the dc-free codewords in response to a received sequence of (2.sup.m n+d) user bits; and
- means for generating a sequence of bits corresponding to the selected 2.sup.m dc-free codewords.
- 30. The apparatus of claim 29 wherein the means for identifying comprises a processor programmed to execute an algorithm which uses the subconstellations in a non-equiprobable manner such that a particular codeword from a larger subconstellation is more likely to be used than a particular codeword from a smaller constellation.
- 31. The apparatus of claim 29 wherein the means for assigning dc-free codewords to each of said subconstellations comprises means for assigning codewords having a length of N bits, where N is the smallest number such that ##EQU13## is greater than or equal to the total number of codewords in the plurality of subconstellations.
- 32. The apparatus of claim 30 wherein the means for assigning dc-free codewords to each of said subconstellations comprises means for assigning codewords with more bit transitions to larger subconstellations than codewords with fewer bit transitions.
- 33. An apparatus for decoding digital information recorded in a fractional bit rate format on a magnetic medium, wherein the digital information comprises 2.sup.m dc-free codewords corresponding to an original sequence of (2.sup.m n+d) user bits, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the apparatus comprising:
- means for receiving said 2.sup.m dc-free codewords;
- means for recovering the (2.sup.m n+d) user bits based upon the received 2.sup.m dc-free codewords utilizing a mapping of the 2.sup.m dc-free codewords to the sequence of (2.sup.m n+d) user bits; and
- means for generating a sequence of bits corresponding to the recovered user bits.
- 34. An apparatus for decoding digital information recorded on a magnetic medium, wherein the digital information comprises 2.sup.m dc-free codewords corresponding to an original sequence of (2.sup.m n+d) user bits, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the apparatus comprising:
- means for receiving said 2.sup.m dc-free codewords;
- means for recovering the (2.sup.m n+d) user bits based upon the received 2.sup.m dc-free codewords;
- means for generating a sequence of bits corresponding to the recovered user bits;
- a look-up table storing a set of dc-free codewords, including said 2.sup.m dc-free codewords, and storing respective address bits associated with each of the codewords in the set and further storing the identity of a respective one of a plurality of subconstellations to which each of the codewords in the set belongs;
- means for retrieving the respective address bits associated with each of the 2.sup.m dc-free codewords; and
- means for arranging the retrieved address bits in the order in which the corresponding 2.sup.m dc-free codewords were received.
- 35. The apparatus of claim 34 comprising means for recovering the remaining user bits in the original sequence of user bits based upon the combination and order of subconstellations to which the 2.sup.m received dc-free codewords belong.
- 36. The apparatus of claim 35 further comprising means for detecting whether an impermissible combination of codewords has been received.
- 37. The apparatus of claim 36 further comprising a circuit for providing a signal indicating that an impermissible combination of codewords has been detected.
- 38. A method of decoding digital information recorded in a fractional bit rate format on a magnetic medium, wherein the digital information comprises 2.sup.m dc-free codewords corresponding to an original sequence of (2.sup.m n+d) user bits, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the method comprising the steps of:
- receiving said 2.sup.m dc-free codewords;
- recovering the (2.sup.m n+d) user bits based upon the received 2.sup.m dc-free codewords utilizing a mapping of the 2.sup.m dc-free codewords to the sequence of (2.sup.m n+d) user bits; and
- generating a sequence of bits corresponding to the recovered user bits.
- 39. A method of decoding digital information recorded on a magnetic medium, wherein the digital information comprises 2.sup.m dc-free codewords corresponding to an original sequence of (2.sup.m n+d) user bits, wherein n is a positive integer, and d is a positive integer less than 2.sup.m, the method comprising the steps of:
- receiving said 2.sup.m dc-free codewords;
- recovering the (2.sup.m n+d) user bits based upon the received 2.sup.m dc-free codewords wherein the step of recovering comprises:
- retrieving respective address bits associating the 2.sup.m dc-free codewords with the (2.sup.m n+d) user bits; and
- arranging the retrieved address bits in the order in which the corresponding 2.sup.m dc-free codewords were received; and
- generating a sequence of bits corresponding to the recovered user bits.
- 40. The method of claim 39 wherein the step of retrieving comprises retrieving said address bits from a look-up table storing a set of dc-free codewords, including said 2.sup.m dc-free codewords, and storing said respective address bits associated with each of the codewords in the set and further storing the identity of a respective one of a plurality of subconstellations to which each of the codewords in the set belongs.
- 41. The method of claim 40 wherein the step of recovering further comprises the step of recovering the remaining user bits in the original sequence of user bits based upon the combination and order of subconstellations to which the 2.sup.m received dc-free codewords belong.
- 42. The method of claim 41 further comprising the step of detecting whether an impermissible combination of codewords has been received.
- 43. The method of claim 42 further comprising the step of providing a signal indicating that an impermissible combination of codewords has been detected.
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is related to U.S. patent application Ser. No. 08/515,445, entitled "Method and Apparatus for Generating DC-Free Sequences," which was filed on Aug. 15, 1995 and which is commonly assigned to the assignee of the present invention.
US Referenced Citations (29)
Non-Patent Literature Citations (1)
Entry |
Calderbank, A.R., and Ozarow, L.H., "Nonequiprobable Signaling on the Gaussian Channel," IEEE Transactions on Information Theory, vol. 36, No. 4, Jul. 1990, pp. 726-740. |