ASYMMETRIC RLL CODING

Abstract: Method and apparatus for generating asymmetrically constrained run-length-limited encoded data from a serialized binary string of 1's and 0's. The method comprises the steps of encoding the input data bits using a run-length-limited-encoding constraint in the form of M/N (d,k), where M is the number of input data bits, N is the number of output bits associated therewith, d is the minimum number of 0 data bits between adjacent data bit 1's, and k is the maximum number of 0 data bits between adjacent 1's; and adjusting the value of d and k, so as to alternate between a value d₁ and d₂ and a value k₁ and k₂ respectively where d₁ ≠ d₂. The apparatus comprises means (300) for generating N output data bits in response to M input data bits and for generating data bit O's between data bit 1's based upon a run-length-limited d,k coding constraint and means (310, 330) for adjusting d and k as used by said means for generating output data bits to alternate between a value d₁ and d₂ and a value k₁ and k₂ respectively, where d₁ ≠ d₂ can be employed in the method or apparatus.

Description: The present invention relates to apparatus for encoding data and more particularly to a method and an apparatus for generating a string of asymmetrically run-length-limited encoded data bits from a string of input data bits. The invention further relates to optical storage media and a method for increasing the linear recording density of data recorded thereon for run-length-limited data constraints. In the past, the computer industry has relied extensively on magnetic media in many forms, such as 8 or 5 1/4 inch (20, 32 or 19 cm) diskettes or hard disk platters, for data and information storage. This magnetic media storage involves using specialized recording elements or heads positioned adjacent to the media to create magnetic fields that penetrate the media surface and alter the orientation of magnetic fields resident in the media. Using this technique, data is recorded as the leading edge of a series of north/south or south/north transitions in the media. Magnetic media are generally organized into a series of adjacent "tracks" which are further subdivided into predetermined patterns such as sectors and clusters. Predefined formats of a certain number of tracks per cm on a medium and a certain number of magnetic transitions per track allows a storage system to maintain synchronous control and reliability in data transfer to and from the medium. To increase the linear recording density of data storage within a track, the number of transitions per track can be increased. This has been successful especially with newly developed media which have higher magnetic retention values and increased magnetic field resistance laterally across the tracks. Within a given track, timing techniques make it possible to obtain transition spacings on the order of 1 micron or less. However, magnetic media have larger track-to-track dimensional and density limitations. This is due to the inability to position read/write apparatus used to exchange data between a magnetic medium and an associated data system relative to inter-track dimensions of several microns or less. As an alternative, optical means of data storage are being developed. Optical data storage is appealing because optical systems can operate at higher media addressing speeds, greater bandwidths, and smaller track-to-track dimensions as compared to magnetic media. These features are possible because finely focused light is used and can be optically manipulated to smaller dimensions than magnetic read/write apparatus. Small diffraction limited lasers can be positioned laterally across data storage tracks with 1 to 2 micron dimensions. However, optical systems impose new constraints on linear recording density. For any optically based read/write system the minimum spot size of the light or optical beam on the media must be accounted for. This spot size turns out to be significantly larger than for a magnetic transition and reduces linear recording density. A typical diffraction-limited laser provides a focal or waist size on the order of 1 to 2 microns. An optical system must also provide sufficient (additional) adjacent storage media to resolve between adjacent write patterns left by a laser. At the same time, the minimum pattern size is enhanced by the recording techniques used for optical data storage, which differ from magnetic media. In optical data storage the data is recorded in terms of features or surface effects created by a laser beam spot (the "write beam") on the media. These surface effects create generally circular patterns that can have many topologies including "bubbles", bumps, pits, and holes. Presently, optical data storage can be divided into two basic classes, the first being material removal and the second being state alteration. For surface removal, the laser energy is used to actually remove material from the media so as to effect a different surface reflectivity or transmissivity. Materials such as thin metallic films on various substrates fall into this class. The state alteration technique uses the laser energy to alter a state or property of the optical media. This includes phase transitions such as amorphous/crystalline transitions, electro-optic effects, or chemical state changes. The more preferred method of state alteration involves an electro-optical state change. By altering the electro-optical properties of a media, the polarization of an incident laser "read beam" is shifted or rotated and the change of polarization detected accordingly. The regions of altered state can be thought of as circular marks on the optical media. Decreasing mark separation to increase the number of marks per track would seem to obtain higher linear recording density for optically stored data. However, certain inherent limitations are reached very quickly. This can be illustrated using the optical data recording patterns shown in FIG. 1. For a single mark, high resolution output is obtained whenever the laser beam used for reading marks (the "read beam") aligns itself precisely with a mark. For two adjacent marks high resolution output is obtained when the read beam is well aligned with each mark in sequence. In FIG. 1 a series of adjacent optical marks 10, 12, and 14 are illustrated positioned on an optical media 20 and separated by "non-mark" regions 16 and 18 respectively. The nominal size for a mark is assumed to be 1 micron, the size of a typical write beam. In the case of the first two marks, 10 and 12, mark separation is slightly greater than 1 micron and a read beam will be totally reflected or diffracted by the non-mark region as shown by the dotted outline 16. However, the two marks 12 and 14 are positioned less than 1 micron apart which results in overlap into the mark regions for a read beam reading the non-mark region as shown by dotted line 18. In this case, the detection system begins to lose resolution between the mark and non-mark regions and can erroneously conclude that it is in a mark region. Also the read system begins to lose resolution between the adjacent marks 12 and 14. This is analogous to loss of intersymbol resolution in magnetic media. Another factor affecting linear recording density in optical media is the selection of a data coding scheme. Pulse-width modulation (PWM) and run-length-limited (RLL) coding are the most commonly employed techniques, having been developed for magnetic data storage. When applied to optical media, the PWM coding employs leading and trailing edge detection of a mark, along with changes in mark sizes, to record data and decrease the number of discrete marks. An RLL encoding scheme encodes data into unique strings of data bits to increase channel data density and decrease data error propagation. While both of these techniques serve certain advantageous functions, they limit the linear recording density in optical storage media by employing, on average, equal mark and non-mark minimum dimensions. This leaves a fairly large surface area of the optical media unused and creates a natural limit to the linear recording density. Therefore, what is needed to improve the linear recording density for data recorded on optical storage media is a new method of decreasing the average non-mark area without substantial loss of intersymbol resolution. It would also be an advance in the art to be able to provide improved linear recording density with limited data error propagation. It is a purpose of the present invention to generate encoded data for storage onto optical media which allows for increased linear recording density. It is another purpose of this invention to provide an apparatus for realizing new types of data encoding for use on optical media. These and other purposes, advantages, and objects of the present invention are realized by utilizing a new type of data encoding method defined in claim 1. The present invention presents a method as defined in apended claim 1 for encoding an unconstrained string of data bits using a run-length-limited encoding constraint in the form of M/N (d,k), where M is the number of input data bits, N is the number of data bits produced in response to the M input data bits, d is the minimum number of 0's between adjacent data bit 1's in the encoded data string, and k is the maximum number of 0's between adjacent data bit 1's in the encoded data string. The values of d and k are adjusted during the encoding process based upon the even or oddness of the data bit 1 detected. That is, each 1 in the encoded data string alters the (d,k) constraint. According to the invention, the (d,k) constraint alternates between two values of d and k. This means that first the code assumes a value (d₁,k₁) and then a value (d₂,k₂). Then the remaining input data string is encoded by alternating between the (d₁,k₁) and (d₂,k₂) constraints. The encoding constraints can utilize either k₁ = k₂ or k₁ ≠ k₂ as well as fractional values for d₁, d₂, k₁, and k₂. In this manner, the amount of space allocated for 0's recorded between 1's is changed so that within a PWM mark the coding has one coding value and between adjacent marks the minimum 0 count of the coding value is lower. Therefore, the present invention advances the art by establishing a new constraint which allows the non-mark regions to consume less area than the mark regions and thus greatly increases linear recording density for optically stored data. The asymmetrical coding constraints can be implemented either on non processed input data strings or data strings previously encoded using a conventional symmetrical RLL technique. In one aspect of the invention, an apparatus as defined in appended claim 7 is provided for generating asymmetrically encoded data from a previously symmetrically RLL-encoded data string, which employes at least one means for generating a single pulse of variable width in response to a negative-going transition in the input data string, coupled to means for combining the input data string and pulses from the means for generating a single pulse. This produces an output data string having positive transitions that are substantially in phase with the corresponding positive transitions in the input data string and having negative transitions that are delayed in phase with corresponding negative transitions in the input data string by an amount based upon the width of the pulses from the means for generating a single pulse. The pulse duration can be a fractional value of the data clock pulse. The pulse width can be so varied, or more than one single pulse means and combining means employed, so as to provide multiple asymmetric encoding constraints. In a further aspect of this embodiment, an apparatus as defined in appended claim 15 is provided for generating symmetrically encoded data from a previously asymmetrically run-length-limited encoded input data. The decoding apparatus employs at least one means for generating a single pulse of variable width in response to a positive-going transition in the input data string; means for inverting the pulses produced by the single pulse means; and combining means responsive to the RLL encoded input data string and pulses from the inverting means. This produces an output data string having negative transitions that are substantially in phase with corresponding negative transitions in said input data string and having positive transitions that are delayed in phase by an amount based upon the width of said pulses from said means for generating a single pulse. In a further aspect of the present invention, an apparatus is provided for generating an asymmetrically encoded data string from an unencoded input data string at an M/N rate, having the code constraint M/N (d₁,k₁);(d₂,k₂). The encoding apparatus employs shift register means for receiving the input data string and state means for defining a sequence of predetermined states for the apparatus, each state of each sequence allowing the encoding of M bits of input data to a predetermined N bits of asymmetrically encoded output data according to the coding constraint corresponding to that sequence. Set logic means detects a current pattern of M data bits in the shift register means and provides an output set of N bits in response both to the current pattern and a current state defined by the state means. Selection means chooses a next state of a sequence in response to the set of N bits provided by the set logic means and the current state defined by the state means, based on the predetermined value of d x and k y for the current state, the selection means being coupled to the state means so as to shift the state means to the next state. In yet another aspect of the invention, an apparatus is provided for generating an unencoded data string from an asymmetric run-length-limited encoded input data string at an N/M rate, where the run-length-limited encoded input data follows a M/N (d₁,k₁);(d₂,k₂) coding constraint. The decoding apparatus employs shift register means for receiving a predetermined number of data bits in the encoded input data string, the predetermined number being greater than N; and look ahead means for detecting a pattern in every N data bits present in the input data string and comparing the pattern with pre-defined sequences of data bit patterns and generating a signal indicative of the pre-defined bit pattern. Set decode logic means provides M output data bits for every N bits of input data in response to the generated signal from the look ahead means and the data bits present in the shift register means based on the predetermined values of d x and k y for the coding constraint and the predetermined combinations of allowed data bit patterns. The novel features of the present invention may be better understood from the accompanying description when taken in conjunction with the accompanying drawings in which like characters refer to like parts and in which: FIG. 1 illustrates physical patterns created on optical storage media by representative data marks; FIG. 2 illustrates physical patterns created on optical storage media by several representative data encoding schemes with: FIG. 2a illustrating patterns for symmetrically PPM encoded data; FIG. 2b illustrating patterns for symmetrically PWM encoded data; and FIG. 2c illustrating patterns for asymmetrically encoded data according to the present invention; FIG. 3a illustrates an asymmetric data encoder constructed according to the principles of the present invention for encoding data for recording onto optical media; FIG. 3b illustrates pulse waveforms associated with the encoder of FIG. 3a; FIG. 4a illustrates an asymmetric data decoder constructed according to the principles of the present invention; FIG. 4b illustrates pulse waveforms associated with the decoder of FIG. 4a; FIG. 5 illustrates a second asymmetric encoder according to the present invention for encoding "raw data" with an RLL 1/2(1,6) - (3,8) constraint; FIG. 6 illustrates a second asymmetric decoder according to the present invention for accepting data encoded with an RLL 1/2(1,6) - (3,8) constraint; FIG. 7a illustrates a third asymmetric encoder according to the present invention for accepting raw data and encoding with an RLL 2/5(1,9) - (4,9) constraint; FIG. 7b illustrates exemplary decode logic for use in the encoder of FIG. 7; FIG. 8 illustrates the data input and data output for the encoder of FIG. 7; FIG. 9 illustrates a third asymmetric decoder according to the present invention for accepting data encoded with a RLL 2/5(1,9) - (4,9) constraint; FIG. 10 is an encode table for the encoder of FIG. 7a; FIG. 11 is a decode table for the decoder of FIG. 9; and FIG. 12 is a look-ahead decode table for the decoder of FIG. 9. The present invention comprises apparatus and a method for realizing an improved linear recording density of data onto optical storage media. Data in the form of a serialized string of data bits is subjected to an encoding process, prior to storage on the optical media, that creates an asymmetric pattern between adjacent mark and non-mark recording areas. This is accomplished by an apparatus that accepts previously run-length-limited (RLL) encoded data and adds a new coding constraint, or accepts "raw" data and encodes it using a new coding constraint, which creates an alternating coding relationship between every other data bit 1. This new coding technique provides a physically asymmetric relationship for the encoded data recorded onto optical media which can be optimized to decrease unused data storage area linearly along a given recording track. As previously discussed, conventional read/write apparatus for optical data storage employ a finely focused optical beam preferably generated by a small laser source such as a diode laser. The laser is focused to a pre-determined spot size on the optical media where it alters the reflective or refractive properties of the media within the focal spot. The alteration can take many forms from material removal to phase or state transitions. A preferred technique for proposed optical data storage systems employs electro-optical effects to affect a localized change in the state of the media. In this technique, a polarized laser write beam is used to deposit energy within a circular focal spot on the media and alter its optical refractive properties. Laser light subsequently reflected from the focal spot on the media is polarization rotated. The resulting feature or pattern of state alteration can be generally described or thought of as a circular "mark" of polarization rotation. Therefore, the term mark is used below to denote the pattern placed on the optical media during recording or writing. In order to obtain high data recording densities, it is desirable to utilize the smallest possible focal spot thereby using a small mark to record information. There are many factors such as reading resolution, power requirements, optical element aberrations, and laser media characteristics, that all combine to limit the mark size obtainable. However, even for a nearly diffraction-limited laser output in a typical commercial apparatus the focal point on the optical media is on the order of 1 to 2 microns in diameter. In reading or writing data, optical data storage systems employ either mark edge or center position detection schemes, depending upon encoding constraints and applications. Center position detection relies on detecting a substantial portion of the effect caused by the mark on a laser read beam during a data clock cycle. Edge detection is sensitive to a change of value in the laser beam above or below a certain predetermined minimum thereshold. Within these approaches are two major variations for encoding data onto optical media. The first is referred to as pulse-pulse or pulse-position modulation (PPM). In this technique, data is recorded and detected by defining a mark as a data bit 1 and "non-mark" as a data bit 0. Alternately, the data can be recorded by defining the trailing and leading edges of a mark as a data bit 1 and making the mark larger or smaller depending upon how many O's are positioned between the 1's. In this mode the writing laser continues to pulse at regular mark intervals, dependent upon write circuitry timing, until the final mark area (length) is obtained. Pulsing as opposed to a continuous mode is used to avoid beam blooming and energy deposition problems. This technique is commonly referred to as pulse-width-modulation (PWM). In addition to physical modulation of mark position or size during data string recording, there are modulation and encoding techniques employed which effect mark placement or size. That is, there are several alternative schemes, such as NRZI (Non Return to Zero (I)), or MFM (Modified Frequency Modulation), for interpreting the presence of a 1 or 0 digital states and incorporating this information in a pulse train. There are also encoding schemes, typically run-length-limited, employed to increase data channel density. While these modulation and coding schemes are apparent to those skilled in the art, they are mentioned here for a more complete understanding of the following examples. A listing of input data and the resulting marks recorded under several encoding schemes using PPM recording is illustrated in FIG. 2a and using PWM recording in FIG. 2b, along with the data modulation scheme designator (NRZI, etc.). For FIG. 2, it is assumed that the minimum mark size is 1 micron (µ) and the minimum spacing between mark centers is 1.5 microns, for adequate resolution. From these values a clocking rate and thus data density can be computed and are shown for each recording scheme. Notice that PWM schemes provide increased density, improving the linear recording density in optical storage media. While it can be seen that PWM improves the recording density there is still wasted space between the now-elongated marks that it is desirable to reduce. Physically what is desired is an encoding technique that shrinks the area between marks so that a minimum area of media is left. This greatly increases density since the area within recorded marks can be decreased by several encoding/recording techniques. As with magnetic media, several coding schemes can be applied to the data prior to writing to the media in order to improve data density and reliability. The more useful coding technique used is run-length-limited (RLL) encoding whereby a given set of data bits M are encoded into a new set of encoded bits N prior to recording. This greatly improves the data transfer rate and channel density, even though the number of bits M encoded is generally less than the number of bits N in the resultant encoded string (i.e. not a 1:1 correspondence). Examples of RLL coding techniques are disclosed in U.S. Patent Nos. 3 689 899, 4 488 142 and 4 413 251. The RLL schemes typically employed require a minimum number (d) of 0's between 1's up to a maximum number (k). The value of k is determined by the timing requirements and clock/data synchronization. Therefore, a common code used is 1/2 (2,7) which encodes one data bit into 2 encoded bits and requires at least two but no more than seven 0's between adjacent 1's. In the case of magnetic media, a minimum zero count is also used to assure minimum inter symbol resolution. However, even though the overall density of data in a channel transferring data bits to optical media is increased by RLL encoding, the linear recording density is only slightly improved. This is true because (d,k) type RLL encoding is symmetrical, that is if at least 1, 2, or more zeros are used within a mark region, then the same minimum and maximum (d,k) is also applied to the non-mark region. Thus, the minimum spacing of marks is fixed at d times the mark size and on the average may be much larger. The present invention presents a method for monitoring the data string to be encoded and changing the d and k constraints based upon the even or oddness of the data bit 1 detected. That is, every other 1 data bit alters the encoding constraints. In this manner, the amount of space allocated for 0's recorded between 1's is changed so that within a PWM mark the coding has a previously typical coding value and between adjacent marks the minimum coding value is smaller. Therefore, on the average the non-mark regions are smaller than the mark regions for a minimum data string and space between marks is decreased. This results in an increase in the linear recording density. In an RLL (2,7) coding scheme or in any RLL (d,k) scheme the data is processed by an apparatus having a series of operating states that determine the current value of the data in light of the previous value to assure implementation of the d and k constraints. In an RLL (2,7) encoder the allowed states might be illustrated in the form: This diagram illustrates the basic operation sequence for an RLL (2,7) encoder, assuming a 1/1 coding rate. The system is initially placed in a state SO which is assumed here to occur for the first 1 encountered (it is also possible to start at S₁ or S₂). The encoder, upon receiving data, will shift to state S₁ and output a 0 and then shift to state S₂ and output an additional 0. This operation will occur while the encoder is observing the incoming data determining if 0 value bits are present. If not, the encoder must insert them in order to meet the coding constraint placed upon the system. From state S₂ the encoder can proceed to S₃, S₄, S₅... or back to S₀. The state chosen is determined by the presence of 0's or 1's in the input data so that the encoder places the same values onto the media. However, notice that, once seven 0's have been encoded, the encoder generates a 1 and returns to state S₀. Using this simple diagram, it can be seen that an input data string of 1011000100000000101, would be converted to an encoded data string of 1001001000100000001001 because the encoder constrains that data to have no more than seven 0's but at least two 0's between 1's. Exemplary circuitry and design characteristics for realizing the constraints and states in RLL (d,k) type encoders, especially the (2,7) type, can be found in U.S. Patent Nos. 3 689 899, 4 488 142, or 4 413 251 discussed above. As previously noted, an RLL (d,k) coding scheme may provide an initial advantage for data density in magnetic media but has a disadvantage associated with its implementation in optical media. The reason is that the coding still assumes that, for all incoming data, the spacing between adjacent data bit 1's is to be treated the same for all 1's. Thus, although the recording technique improves density by utilizing both leading and trailing mark edges, it assumes that non-mark regions between 1's should be constrained the same as mark regions. That is, the same minimum and maximum spacing constraints will apply, since the same code constraints apply between all adjacent 1's. Physically this translates to a minimum spacing between marks that will have the same size as the minimum length of a mark. This automatic requirement for using the same area constraints between all marks can be tolerated in magnetic media but it consumes excessive area in optical media. The present invention advances the art by establishing a new constraint which allows the non-mark regions to consume less area than the mark regions and thus greatly increases linear recording density for optically stored data. What the present invention provides is a new class of codes or coding schemes which deviates from the linearly uniform or symmetrical coding approach. Instead, a new asymmetric code is created that treats adjacent 1's differently dependent upon their position in a string of data bits. The new coding scheme of the present invention establishes a different (d,k) type constraint for the separation between adjacent ones by alternating between two values of d. This means that first the code assumes a value (d₁, k₁) and then a value (d₂,k₂). The new coding constraints can be expressed in several ways but the following expressions are considered to be most amenable to use and easily understood: Old: M/N (d,k) New: M/N (d₁/d₂,k) M/N (d₁,k₁) - (d₂,k₂) M/N (d₂,k₁) - (d₁,k₂) M/N (d₁,k₁) ; (d₂,k₂) In general k₁ = k₂ is preferred since an increase in the maximum size of k may allow the coding function to have clock synchronization and data bit error propagation problems. Smaller values of k may truncate the data string excessively and require a more complex encoder/decoder to prevent loss of information. However, in some applications increasing k is permissible. To understand how the method of the invention works, a simple new code is employed using first a (3,7) constraint and then a (1,7) constraint (ie. k₁ = k₂). The first few data bits that comprise a 1 and a string of one or more 0's are encoded using the (3,7) constraint until a new 1 is reached. At this point the constraint is changed to (1,7). This can be illustrated by the following state transition diagram: This diagram illustrates the states and outputs that an encoder might go through to implement the desired asymmetric constraints. If we start with state S₀ (which as before is assumed to be a data bit 1), the system will proceed to states S₁, S₂, and S₃ and output three 0's to assure that the first minimum constraint is met. As long as the incoming data bits are 0's the data is passed on, if the incoming data presents a data bit 1 immediately following the first data bit one received for state S₀, then the S₁, S₂, and S₃ states force three 0's to be output before allowing a data bit 1 to be output and proceed to the next state. If no 1's are encounterd, the coding system can proceed through states S₄, S₅, S₆, and S₇. Either when a 1 is received or when state S₇ is reached, the encoder outputs a 1 and steps to states S₈ and S₉, where it outputs a 0. Again, as long as the incoming data is 0 the encoder outputs a 0. The presence of a data bit 1 in state S₈ is not allowed as an output but will force the output of a 0 first and then the output of a data bit 1 and a return to state S₀. The system can also proceed through states S₁₀ to S₁₅ or until an incoming 1 is encountered at which time the encoder outputs a 1 and reverts to state S₀. Using the above diagram as a guide, it can be seen that a data string input of 1011000100000000101, as before, would be encoded to a data string of 1000101000000010001 because the encoder constrains the output data to have no more than seven O's but at least one 0 between the first two 1's and at least three O's between the next two 1's. Compare this to the simple RLL (2,7) encoding used before: Data string input: 1011000100000000101 (1/3,3) output: 1000101000000010001 (2,7) output: 1001001000100000001001 It will be readily apparent to those skilled in the art of data encoding that the above diagrams, although instructive in illustrating the principles of the present invention, are not idealized state machines. It is possible to achieve the above encoding utilizing fewer than sixteen states, as will be seen from the ten states used in a later example. Advantageous use of this new class of coding can now be made for recording data on optical media if the encoding system is properly preset or initialized. A data bit 1 can be present in the data string as the first data to be written to the optical media (this is for convenience of illustration, data detection may also account for data bit 0's first and then set an appropriate state or a dummy bit for initialization). The encoder detects the 1 and a mark is written to the media and used to determine the first state of the coding system which is assigned to state S₀. This means that the minimum 0 count to the next 1 data bit is three. However, at this time the laser used in the write apparatus for the optical media is pulsing on and continues to make a series of marks (in effect, it forms a continuous mark). When the next data bit 1 is encountered (at states S₃, S₄, S₅, ...), the laser will write this as an end-of-mark, using the trailing edge of the mark to signify a 1. During the writing between the first two 1's the encoder has progressed through states S₀ through S₃ at a minimum and possibly S₄ through S₇ depending if additional 0's were encountered between the data bit 1's. However, once the next 1 is written the encoding system steps to state S₈. The encoder will output a 0 and step to states S₉ through S₁₅, depending upon the presence of data bit 1's in the incoming data string. At this time the area on the media that is being addressed is between marks, so that a smaller minimum spacing is being covered until the next 1 is encountered and the next mark begun. In a practical system this means that the minimum spacing for the areas where no mark is recorded is on the average less than the area under the marked regions and the coding accounts for the information accordingly. Therefore, the symmetric RLL (2,7) code is improved upon in terms of average linear density by a new code described as (1,7)-(3,7) or (3,7)-(1,7) (depending upon where the initial state is set). FIG. 2c illustrates the result of applying an asymmetric constraint to two coding schemes. Note the increase in the recording density. The present invention represents a discovery that a code on the order of (d,k) can be made to achieve greater density if it is converted to implement as a (d₁/d₂,k) code (or d x ,k y ). The term converted is not meant to imply a simple conversion of existing coded data, although in its simplest embodiment this can indeed be done. As previously discussed, current approaches to recording data on optical media employ the symmetric encoding schemes to increase density and to control data error propagation. It has been discovered that one embodiment of the present coding method can be realized in an apparatus that further encodes the existing RLL-encoded data to create the asymmetrical RLL encoded data. A circuit for obtaining this result is schematically illustrated in FIG. 3. In FIG. 3a, an encoder 300 comprises a single-shot or one-shot electronic device 310 and an OR gate 320. The input data string 302 is already RLL-encoded data which can be encoded under a variety of (d,k) constraints and may or may not be state dependent. The string 302 can be derived from several existing RLL encoders such as described in the previously mentioned U. S. Patent No. 3,689,899 and represents a series of pulses and pulse transitions. For purposes of illustration the data will be assumed to have a symmetric RLL (2,7) coding. The data is input to the single-shot device 310 which is an electronic device or circuit configured to provide an output pulse when it receives a negative-going transition. This occurs whenever the value of the data string 302 changes from a 1 to a 0 at the end of a PWM mark sequence. An exemplary device for the single-shot device 310 is a monostable multivibrator as commonly known in the electronic arts. Such a device outputs a pulse of fixed width or duration whenever it receives either a negative-or a positive-going pulse or transition, depending upon how it has been configured. The pulse length or duration can be selected to match the data clock period, or any other desired period. This is typically accomplished by using resistive and capacitive elements with the multivibrator circuit to set specific RC time constants that determine the reset timing and pulse duration. A retriggerable multivibrator can also be used so that a control signal, such as from a data clock, can extend the width of the pulse beyond the RC cutoff time. In the alternative, a resettable monostable multivibrator can be employed with a reset or clear pulse provided from a source 330 which can be a data clock signal readily available from other circuitry. This allows the termination of the pulse width by a control source independent of the multivibrator circuitry. Therefore, a new pulse width (coding constraint) might be implemented without requiring direct alteration of the RC timing elements. In addition, one skilled in the art can employ other devices, such as logic gates, to control resetting or retriggering of the single-shot device 310 commensurate with a desired pulse width. At the same time the input data 302 is communicated to the single-shot device 310, it is applied to a first input 322 of the OR gate 320. The output from the single-shot 310 is connected to a second input 324 of the OR gate 320. The OR gate 320 provides an output 340 that has a high pulse level whenever either of the input levels is high. Therefore, as long as the RLL encoded data has a high pulse level, as would be present for the period between two adjacent 1's in writing a mark to optical media, the output 340 level is high. The moment the mark ends, the trailing edge of the current data pulse will trigger an output from the single-shot device 310. While the data 302 level is now low, the output from the single-shot device 310 presents a high output level to the input 324 of the OR gate 320 which provides a continued high 340 output until the single-shot pulse drops low. This is illustrated in FIG. 3b where representative RLL data string is shown on line (a), the single-shot device 310 output on line (b), and the OR gate 320 output on line (c). After the single-shot device 310 resets itself, it makes no further contribution to the output pulse length from the OR gate 320 until the next negative going transition. In this manner, a previously-encoded signal for a symmetric code has a single data bit 0 moved from one part of the code data string (non-mark) to an adjacent part (mark) so that one region always has two more minimum 0 counts than the next. This establishes the desired asymmetry. Therefore, a symmetrically-encoded input data string having a (2,7) coding constraint is altered to have a (3,8)-(1,6) coding constraint. Note that due to the manner in which the single-shot device 310 is triggered, the resulting output coding constraint also has a differing maximum value. The width or length of the output pulse from the single-shot device 310 was presumed for purposes of illustration to be the same as one data clock pulse period. However, this is not required and an important attribute of the present invention is the fact that additional asymmetry is easily added and fractional asymmetry implemented by adjusting the pulse width for the single-shot device 310. For additional asymmetry, the width of pulses provided by the single-shot device 310 can be adjusted to have a width in excess of one data clock period. By extending the width to that of several data clock pulses, additional data bit 0's are shifted to or from portions of the data string 340. A less preferred arrangement would be to use one or more additional single-shot devices and additional OR gates added in series with the output 340. The same timing relationship and pulsing would occur as before and additional asymmetric shifts in the encoded data would result. In order to provide fractional asymmetry, the single-shot element 310 can be adjusted to have a pulse width less than the data clock period (adjusting RC timing) or is reset by a reset signal source 330 which has a fractional or phase shifted relationship to the data clock. That is, the signal source 330 does not provide a control pulse having the same width as the data clock pulse. For comparison, in FIG. 3b a standard clock pulse as would be commensurate with the illustrated data is shown on line (d) as well as an offset or phase shifted reset pulse on line (e). If the single-shot device 310 is reset or cleared using the control pulse shown on line (e) of FIG. 3b, the pulse output in response to a negative-going transition in the input data string is the output pulse shown on line (f). The output pulse on line (f) is a narrower pulse than the previous output shown on line (c). Therefore, the output pulse 340 has a high pulse level extended by only a fractional data bit value, and the non-mark, low level, region shortened by a fractional value. This is illustrated in the pulse pattern on line (g) of FIG. 3b for the same data string input on line (a). Therefore, it is now possible to achieve encoding schemes having code constraints such as (2¹,7)-(1¹,7). This allows a high degree of flexibility in tailoring RLL-encoded data to the area density limitations dictated by the optical media or the read/write system as opposed to being confined to particular data encoding constraints. The encoded data 340 is transferred along a data channel to appropriate write apparatus for storage on optical media. At this point the pulses in the encoded data channel are used to modulate or control a laser write beam focused on the optical media. The modulation of the laser beam by the encoded data produces a variation in the energy deposited on the optical storage media that corresponds to the variation in the encoded data pulses. That is, a low level in a pulse train causes a low or zero level energy output by the laser and a high level causes a high level output. The high level being defined as an energy level that is above a predetermined threshold for affecting state alterations. The high level laser output creates the mark patterns on the optical media by altering the physical properties of the media as previously discussed above. Since the laser is typically a pulsed laser source the data modulation generally functions to turn the pulsed source on or off. When data stored on optical media is to be accessed, a laser read beam is used to scan the optical media surface and detect localized changes in the properties of the media material. As previously discussed, this is typically manifested as a change in polarization of laser light reflected by the media, as caused by the mark regions. The polarization rotation is detected and used to modulate a voltage or pulse source to create a pulse train having predetermined voltage levels or pulses corresponding to the marks and lower voltage levels or non-pulse output for non-marks. These pulses are transferred along a data channel as a string of encoded data bits to be decoded. To decode the data recorded by the encoder 300 of FIG. 3a, a decoding circuit as illustrated in FIG. 4a is employed. In FIG. 4a, a decoder 400 receives encoded data 402 from a read detection circuit. The encoded data 402 is serially input to a single-shot device 410. An exemplary pulse level pattern for the data 402 is illustrated in FIG. 4b at (a). The single-shot device 410, like the single-shot device 310 can comprise elements known in the art such as a monostable multivibrator. The single-shot device 410 is configured to output a pulse whenever a positive-going transition is detected or received. Every time the encoded data string 402 goes to a high level or a 1 state the single-shot 410 will produce a pulse. Therefore, the single-shot device 410 will produce a pulse when the leading edge of a mark region is encountered. At the same time, the input data 402 is communicated to the single-shot device 410, it is applied to a first input 422 of an AND gate 420. The output from the single-shot 410 is inverted using an inverter 412 whose output is connected to a second input 424 of the AND gate 420. The resulting output 440 from the AND gate 420 is a positive pulse level whenever both of the input levels are positive; Therefore, as long as the RLL encoded input data string has a positive pulse level and the single-shot device has not produced a pulse, the output 440 level is high. When the single-shot device 410 detects a positive-going transition in the data string 402 it produces an output pulse as shown on line (b). The device 410 output, through the inverter 412, places a low level signal at the input 424 and the AND gate 420 output 440 drops low. This condition occurs before the input encoded data 402 level drops low. THis is illustrated in FIG. 4b where the encoded data string 402 is shown on line (a), the single-shot device 410 output on line (b), the inverter 412 output on line (c), and the AND gate 420 output on line (d). In this manner, a previously encoded signal having an asymmetric code constraint has a single data bit 0 moved from one part of the code data string (mark) to an adjacent portion (non-mark) so that the regions have the same minimum 0 count. This re-establishes the original symmetry prior to any further decoding or translation. Therefore, an input data string having the (3,8)-(1,7) coding constraint now has the (2,7) coding constraint. As in the case of the encoder 300, the device 410 pulse width or timing is typically chosen to correspond with the data clock pulse. However, as before, the pulse width may be varied or a reset signal source 430 used to provide fractional or phase shifted resetting as compared to the data clock. This allows the decoder 400 to accommodate fractional encoding/decoding schemes such as (21/2,7)-(11/2,7) if desired. This is illustrated in FIG. 4b on lines (e) and (f). The advantage of the embodiments for the encoders and decoders just described is that they are extremely compatible with existing and proposed read/write circuitry and coding schemes for data storage on optical media. The single-shot devices may already exist as part of data edge detectors, read/write deskew circuits, or similar elements which can be adjusted to function in the manner required by the present invention. In this case an existing circuit can be retroactively adjusted to implement the method of the present invention and achieve the new asymmetric coding constraints. An example of this type of circuitry is shown in the embodiment illustrated in FIG. 5. In FIG. 5, a data encoder 500 is configured to provide a 1/2 rate encoding of incoming "raw" data in an input data string 502 into asymmetrically encoded data using the (1,6);(3,8) coding constraint. In the encoder 500, the raw data 502 is input to a 3-bit shift register 504. An external clock source 506, not shown, which can be supplied by the system oscillator signals normally available in associated optical media read/write circuitry, clocks a divider 508 which provides an appropriate clock signal 510 for the shift register 504 and other components of the encoder 500. As an input data string 502 is shifted into the register 504, corresponding register outputs for the first three data bits are provided at register outputs Q₃, Q₂, and Q₁. These outputs are input to two inputs of a counter 512. An exemplary counter would be a 4-bit digital counter of which only two bits are used for this embodiment. The Q₃ output which represents the first data bit shifted into the register 504, is connected directly to a first input of the counter 512 labeled B, whereas the second and complement of the third data bit outputs are connected in combination with Q₃ through two NOR gates 514 and 515 whose outputs are connected to the counter 512 at A. These inputs cause the counter 512 to present high or low signal levels at the counter outputs labeled Q A and Q B . The Q A and Q B outputs are coupled to a combinatorial logic section 520 which uses the counter 512 outputs to determine where incoming data is to be partitioned and which data bits are being acted upon in a given partition of a data string. This partitioning allows patterns of incoming data bits to be folded into predetermined sets of output bits at the 1/2 rate. This provides a unique set of data string prefixes which can be decoded later. The encoder output for the partitioned input is: INPUT DATA OUTPUT DATA 10 0100 11 1000 000 000100 010 100100 011 001000 0010 00100100 0011 00001000 The value of inputs B and A determine if a 2, 3, or 4 bit partition is employed with 00 being a 4 bit , 01 being a 3 bit and 10 a 2 bit respectively. The values of B and A are themselves determined by the Boolean expressions: B = Q₃ A = Q ₃ (Q2 + Q ₁) Once the logic in encoder 500 has determined the partition pattern, the first two data bits in the shift register 504 are acted upon by the AND gates 522, 524, 526, 528, and the OR gate 530. The output of these gates is transferred through OR gate 532 and the AND gate 534 as encoded data bits at the rate of two output bits for each input data bit. The AND gate 534 is clocked with the circuit clock 510 so that the output of the gate 528 is output first and then the output of the AND gate 534. The result is that the output of the AND gate 528 is the most significant bit (MSB) or leading number of a two bit data string 538 assigned to the first input data bit from data string 502 and the AND gate 520 outputs the least significant bit (LSB) of the encoded data string 538 assigned to the first input bit from the data string 502. The data can then be input to a single-shot or one-shot device 544 and an OR gate 546 in a similar manner to the encoder 300, resulting in an asymmetrically encoded data string 550. It is also desirable to use a flip-flop 540 to provide a more useful or sharper pulse shape in the data signal 538 before the one-shot 544. To decode the asymmetrically encoded data string 550 when it is read from optical media at a later time, the circuit illustrated in FIG. 6 can be employed. In FIG. 6, a decoder 600 has the encoded data string 602 clocked into two 4-bit shift registers 610a and 610b, through a one-shot device 604, an inverter 606 and an AND gate 608, by a clock source 612. The clock source 612 is phase locked to the encoded data clock and is running at twice the desired data output clock in order to account for the initial 1/2 coding rate which now becomes a 2/1 decoding rate. The output from the shift registers 610 is fed to the combinatorial logic 620 which further comprises the four AND gates 622, 624, 626 and 628 as well as the NOR gate 630. The particular matching of the register outputs to the gates is predetermined by the Boolean expressions which are required to be exercised on the data in order to achieve the desired coding function. Such combinatorial logic arrangements are illustrated in greater detail in U.S. Patents Nos. 4,488,142 and 4,413,152. Also the article "Algorithms for Sliding Block Codes, An Application of Symbolic Dynamics to Information Theory", by Roy Adler, et al, IEEE TRANSACTIONS ON INFORMATION THEORY, Vol. IT-29, No. 1, Jan 1983, pp 5-22 discusses the theoretical considerations and approaches to developing the encoding and decoding tables and resultant logic for symmetric (2,7) RLL code. Therefore, the combinatorial logic 620 provides the actual decoding of the input data bit strings into the output data bits 650. However, in the case of the decoder 600 the data bits must be decoded only for valid sets of data bits. The AND gate 640 accomplishes this by observing the register outputs for a data synchronization mark pattern. Such synchronization patterns are known in the art of data encoding/decoding. The output of the AND gate 640 causes a NAND gate 642 output to go low and a flip-flop 644 state to change. This indicates the start of a decode cycle, clearing a flip-flop 646 which strobes the registers 610. While the embodiments described can easily implement asymmetric coding constraints with existing RLL circuits, this provides a larger maximum value for 0's in one region as well as the larger minimum (ie. k₁ = k₂). As previously discussed, increasing this maximum is not always desirable or tolerable by the data handling system. Therefore, an asymmetric code of the present invention must be implemented using a constraint of M/N (d₁, k1)-(d₂, k₂) with k₁ = k₂ in many applications. An embodiment employing a k₁ = k₂ asymmetric encoding constraint on a data string for recording onto optical media is illustrated FIG. 7. FIG. 7 illustrates an encoder 700 for accepting "raw" data and encoding it using an NRZI 2/5 (1,9) - (4,9) coding constraint scheme. As previously described, the NRZI applies to the data string level pattern used (not return to zero and no change if no change in data 1's), and the 2/5 rate implies that two input data bits are converted to 5 encoded output data bits. Notice that for this embodiment a d₁-d₂ = 3 constraint is used to illustrate that the asymmetry can be established at a variety of levels and is not fixed by the previously illustrated single-shot. The encoder 700 receives "raw" data 702 and applies it to a D input gate of a 2-bit D type shift register 704 where it is serially shifted through. A clock signal 706 is applied to the encoder 700 and is maintained at about 5 times the data clock rate. This is done in order to assure proper granularity and synchronization for the data. The clock input 706 is divided by five using a divide means 708 to provide a clock signal for the 2-bit register 704 so that it runs at the data clock rate. At the same time, the register clock signal is further divided by 2 in a divide means 710 and used to clock a 10-bit state register 712, to be discussed below. Another divide means 714 also divides the input clock signal 706 by 2 and provides a clock input to a 5-bit shift register 724. The divider 714 causes the output register 724 to be clocked at a rate of 5 bits for every 2 bits shifted through the shift register 704. This creates the 2/5 data encoding rate specified in the code. The 10-bit state register 712 changes state every two input bits and therefore, requires the additional divide by 2 of the divider 710. The data is shifted through the shift register 704 and appears across the outputs Q₁ and Q₂ which are connected to a decode logic device 716 along with the Q₁ and Q₂ outputs from the register 704. Since Q₂ represents the leading bit in a two bit data string such as 10, 01 or 11 the Q₂ output will be high for any leading bit being a 1 and the Q₂ output will be high for any data bit pair whose leading bit is a 0. These two lines can then be used for this discrimination in a set logic decode circuit 720. The decode logic device 716 comprises simple combinatorial logic known in the electronics arts such as the four AND gates 718 shown in FIG. 7b which decode the register 704 output to produce desired high output signals for the 00, 01, 10, and 11 input data pairs. These data pairs are used to determine the coding that will be employed to encode two data bits into 5. However, the function of the decode logic device 716 could be incorporated into the set decode logic device 720. This particular encoder is a state dependent encoder in that each encoding operation occurs with the circuitry set at a particular predetermined state and the next allowed encoding being dependent upon the previous state. The data will be encoded according to the encoding table shown in FIG. 10 and labeled as Table I. Table I contains predefined states A through J which are established in the 10-bit state register 712 by a series of AND, OR gates and flip-flops, as would be apparent to one skilled in the art. The first state is chosen as state A and must also be the initial state chosen for decoding. With the states determined by the register 712 the next state is determined by a go to state decoder 730. The go to state decoder 730 examines the current state that is being used for encoding and the current data being encoded. This is illustrated in FIG. 7a as the inputs A - J and 1 through 00 on the go to state decoder 730. Looking at Table 1, the coding scheme constrains the 10-bit state register 712 to be shifted to specific new states dependent upon the current input data bits being encoded and the previous state. The go to state decoder 730 uses a series of set state outputs which are connected to the 10-bit state register 712 to shift the current state in the state register 712 to its new value according to the coding constraints. The set decode logic device 720 encodes input data from the register 704 using decode levels input from the decode logic device 716 and the current state input from the 10-bit state register 712 to determine the allowed output data bit patterns. For a given state and two of six types of input data bit patterns, a specific bit pattern is established on five output set lines 722 referred to as set 1 through 5. Using Table I as a guide, we can illustrate the functions of the decoder 700 and the set decode logic by the Boolean expressions for the Encode Go To State Logic in Table II below and Encoder Set Decode Logic in Table III below. Table II ENCODE GO TO STATE DECODE A = 00 . (D + E + F) + 01 . (E + F) + 11 (I + J) B = 01 . (F + I + J) + 11 . (F) C = 00 . (H) + 10 . (G +H) D = 01 . (A + B + H + J) + 11 . (G + H) E = 00 . (A + J) F = 00 . (B + C) G = 01 . (C) H = 01 . (D + G + I) + 10 . (A + B + C + E) + 11 . D I = 11 . (A + B + E ) J = 00 . (I) + 10 . (D) With these expressions in mind an example of the encoding process for the asymmetric (1,9); (4,9) encoding constraint or scheme is now illustrated. Assume an input raw data string of 1010011111 is input into the encoder 700 of FIG. 7a starting at a time t=0 when the initial state is set to A and all of the registers are cleared to the initial states accordingly, which can be done by a signal to the write status input 732 of the registers. The two bit input data pattern produced by the register 704 is illustrated as the top line of FIG. 8. The first two bits, 10, will provide an output at the Set 1 of 5-bit register 720 according to Table I and the expression for set 1, of a 1 or high level since the register 712 is in state A and the input is 10. The output for set 2 is 0 since the register 712 is not in states I or J. The output for set 3 is 0 since the register 712 is not in states D, H, or G. The output for set 4 is 0 since the input is 10, and the output for set 5 is 0 since the register 712 is not in states E or F. Therefore, the data bit pattern 00001 is stored in the 5-bit register 724 for transferring out of the encoder 700. This is illustrated on the second line of FIG. 8. Note the last data bit (reading left to right) in this string is set 1 (LSB) and the first is set 5 (MSB). The next data bit pairs in the input data 10, 01, 11, and 11 result in the subsequent output bit sets 00100, 00000, 10100, and 00100, also shown in FIG. 8. These patterns result from the expressions used for the first two bits in an input data string. The encoded output data string 740 becomes 0000100100000001010000100. If the initial recording of data is automatically started as a mark or a data 1 bit, which can be subtracted out later, then this data string breaks down according to the bottom line of FIG. 8 into alternating mark and non-mark regions having (1)00001 00 1000000001 0 100001 and 00 data bits recorded therein respectively. Notice that this makes the non-mark regions for optical media consistently shorter than the marked regions leading to the improvement in linear recording density. The encoded data is output from the 5-bit shift register 724 through a dc trigger flip flop 728 to produce an encoded data string 750 that has transitions at each data one edge as opposed to high logic only for data bit ones. This is then used to drive a NRZI type recording system. Note that the 5-bit shift register 724 is loaded every 5 bits as determined by an output timer 726. In order to decode the data that has been encoded according to the circuitry of FIG. 7 a decoder 900 is employed as illustrated in FIG. 9. The decoder 900 now must use a series of look-up tables in order to discern the next states allowed by the data to determine the presently allowable decoding pattern. An encoded data string 902 is detected from the optical media using one of many optical data read systems now used or proposed. The data string 902 is input in serial fashion into a 15-bit shift register 904. The shift register 904 is clocked by a data clock source 906 which also clocks an output timer 908. The decoding process begins when 15 bits of input data is clocked into the register 904. Output signals from the 15-bit shift register 904 representing the first 5 bits of the data string 902 are transferred to a set decode logic device 912 which will interpret the signals, or input bits, as a group of five "sets" as previously seen in the encoder 700. The set decode logic 912 will output two sets or data bits 914 based on what output bits are assigned to given input sets by the coding constraints. The set decode logic element 912 accomplishes this decoding by using look-ahead techniques that are understood by those skilled in the art. The next two sets of five data bits that are in the shift register 904 are read by the look-ahead logic element 916. This look-ahead element 916 simply provides a high level output on output lines Q through Z dependent upon the data bit patterns in the 15-bit shift register 904. Table IV of FIG. 11 shows the tables that are used to establish a given output for lines Q through Z. For example, if the second 5 data bits represented as shift register outputs Q₆ - Q₁₀ and look-ahead logic inputs F - J, are 0001 then the Q output line from the look-ahead logic 916 will be high. Also the S, R, X, Y and Z contain the trailing or following data bit patterns and to decode the present 5 bits of encoded input data accordingly. The logic used by the decode logic 912 is presented in Table V of FIG. 12. Here for a given input pattern of 5 bits a specific output is provided for a given look-ahead block being registered by the set decode logic device 912. The listing below summarizes the relationship between the input data bit patterns and the look-up tables that have that data pattern within its structure. However, at any one time only one look-ahead block will be valid. Encoded bits No. of Blocks found in Blocks 00000 2 Q T 00001 2 W Z 00010 2 W Y 00100 2 U X 00101 1 - - 01000 2 R U 01001 1 - - 01010 1 - - 10000 2 S V 10001 1 - - 10010 1 - - 10100 2 V Y where a "-" indicates a unique string. Using table 5 we can see how specific data is decoded into specific 2-bit strings of decoded data. Using the example from before (FIG.'s 7 and 8) a string of data bits in the form 000010000000001010000100 is input to the decoder 900 as the previously encoded and now read data 902. This data is shifted into the 15-bit shift register 904 where it will be decoded by the set decode logic 912 and the look-ahead decode logic 916. The 5-bit blocks will be broken out as 00001, 00100, 00000, 10100, and 00100 by the shift register 904. Referring to the decoding table V, the first 5 bits can provide either a 10 or 11 data bit set output to a register 918 where it is shifted out as output 920. However, the look-up table values associated with the 10 output is W and with 11 is Z. By looking at the next bits we see that they are 00100 and these are in the W block but not the 2 block. Therefore, the W line from the look-ahead decode logic device 916 will be high but not the Z line, telling the set decode logic device 912 that the decoding process must select 10 as the current output. The next 5 bits will yield either 10 or 11 but the correct look-ahead selection will select line X high and the output will be 10. This process continues down through the encoded data string 902 to decode the data and provide an encoded data string 920 of 1010011111. It will be apparent to those skilled in the art that additional logic or alternative circuits may be employed to reduce the number of interconnections required in the encoder 700 or the decoder 900. It is not required that each state or look-ahead block be represented as a single output over a distinct output line. What has been described is a new class of data codes known as asymmetric data codes which provide an asymmetrical spacing of O's between adjacent 1's. Also apparatus for realizing the new class of codes have been described which are useful for a variety of encoding/decoding applications.

Claims: A method of asymmetrically encoding an input string of data bits having the form of a sequence of 1's and 0's, comprising the step of: encoding said input string of data bits using a first run-length-limited code having a coding constraint in the form of M/N (d₁,k₁), where M is the number of input data bits, N is the number of output bits produced by encoding M input data bits, d₁ is the minimum number of 0 data bits between adjacent 1's, and k₁ is the maximum number of 0 data bits between adjacent 1's, until a first data bit 1 is reached, with said first 1 being considered an odd 1; characterized in that it further comprises the steps of: further encoding said input string of data bits using a second run-length-limited code having a coding constraint in the form of M/N (d₂,k₂), where d₂ ≠ d₁, until a second data bit 1 is reached, with said second 1 being considered an even 1; and adjusting the values of d and k by encoding the remaining data string applying the M/N (d₁,k₁) constraint before all odd 1's and the M/N (d₂,k₂) constraint before all even 1's. The method of Claim 1 wherein k₁ = k₂. The method of Claim 1 wherein k₁ ≠ k₂. The method of anyone of Claims 1-3 wherein d₁, d₂, k₁ and k₂ include fractional numerical values. The method of anyone of Claims 1-4 further comprising the step of generating a run-length-limited encoded output string from said input string of data bits according to the constraint M/N (d₀,k₀) before performing said encoding and adjusting steps. The method of anyone of Claims 1-5 wherein said step of adjusting comprises: the step of generating a single pulse of variable width in response to each negative-going transition in said asymmetrical run-length-limited encoded input data string; and combining said asymmetrical data string and pulses resulting from said step of generating a single pulse to produce an output data string having positive transitions that are substantially in phase with corresponding positive transitions in said input asymmetrical encoded data string and having negative transitions that are delayed in phase from corresponding negative-going transitions in said input asymmetrical encoded data string by an amount based upon the width of said pulses. An apparatus for generating an asymmetrically encoded data string from an input data string according to the method defined in claim 1, wherein said apparatus generates N output data bits in response to M input data bits and generates output data bit 0's between output data bit 1's based upon a run-length-limited coding constraint (d₁,k₁);(d₂,k₂), where d x is the minimum number of 0's between data bit 1's k y is the maximum number of 0's between data bit 1's and d₁ ≠ d₂ comprising: shift register means (504, 704)) for receiving said input data string and providing a group of M input bits; state means (512, 712) for defining a sequence of predetermined states for said apparatus, each state of each sequence allowing the encoding of M bits of input data to a pre-determined N bits of asymmetrically encoded output data according to the coding constraint corresponding to that sequence; set logic means (520) for detecting a current pattern of M data bits in said shift register means and providing an output set of N bits in response both to said current pattern and a current state defined by said state means; and selection means for choosing a next state of a sequence in response to the set of N bits provided by said set logic means and the current state defined by said state means, based on the predetermined value of d x and k y for said current state, said selection means being coupled to said state means so as to shift said state means to the next state. The apparatus of Claim 7 further comprising timing means (506, 508, 510) connected to said shift register means, set logic means, state means, selection means for synchronizing the transfer of input and output data bits through said apparatus at said M/N coding rate. The apparatus of Claim 7 or 8 wherein said shift register means comprises an M-bit shift register for receiving M bits of said input data and providing M normal and M complementary outputs. The apparatus of anyone Claims 7-9 further comprising output shift register means (724) for providing a serial string of N data bits to an output data channel for each set of N bits provided by said logic means. The apparatus of Claim 10 further comprising timing means (706, 708, 714) connected to said shift register means, set logic means, state means, selection means, and said output shift register means such that said state means is gated at 1/M times the rate of said shift register means and said output means is gated at N/M times the rate of said shift register means. The apparatus of Claim 11 further comprising a dc trigger flip-flop (728) having an input (T) connected to the output of said output register means and an output (Q) for connection to said output data channel (750). The apparatus of Claim 12 further comprising a decode logic means (720) for generating signals indicative of the number of consecutive 1's or 0's in said input data in response to the data bits stored in said shift register means, being coupled to said set logic means so as to enhance the determination of the current pattern of data bits in said shift register means. The apparatus of Claim 13 wherein said selection means has a plurality of inputs which are coupled on a one to one relationship to outputs of said state means and to said decode logic means for detecting the current state and the current number of consecutive 1's and 0's respectively for determining the next state. An apparatus for generating an unencoded data string from an asymmetric run-length-limited encoded input data string at an N/M rate where N is the number of input data bits and M is the number of output data bits, where said run-length-limited encoded input data was encoded according to the method defined in claim 1 using the coding constraint M/N (d₁,k₁);(d₂,k₂), where d x is the minimum number of 0's between data bit 1's and k y is the maximum number of 0's between data bit 1's with d₁ ≠ d₂, comprising: shift register means (904) for receiving a predetermined number of data bits in said encoded input data string, said predetermined number being greater than N; look ahead means (916) for detecting a pattern in every N data bits present in said input data string and comparing said pattern with pre-defined sequences of data bit patterns and generating a signal indicative of the pre-defined bit pattern every N data bits in said input data string are associated with; and set decode logic means (912) for providing M output data bits for every N bits of input data in response to said generated signal from said look ahead means and the data bits present in said shift register means based on the predetermined values of d x and k y for said M/N (d₁,k₁);(d₂,k₂) coding constraint and the predetermined combinations of allowed data bit patterns. The apparatus of Claim 15 further comprising output shift register means (918) for shifting said M bits from said set decode logic means to said apparatus for decoding as a serialized string of unencoded output data bits along a data channel. The apparatus of Claim 16 further comprising timing means (906, 908) connected to said input shift register means, and said output shift register means for shifting input and output data bits through said apparatus at said N/M decoding rate. The apparatus of Claim 17 wherein said timing means provides clock signals to said output shift register means at a rate of N/M times the clock rate of said shift register means.

Inventors: DAVIE, NEIL ROGER
Applicants: INTERNATIONAL BUSINESS MACHINES CORPORATION
Application year: 1987
Main classification: G11B20
IPC codes: H03M7, G11B20, H03M5, G06T9