WO1997050181A1 - M=9(2,10), d=3.75 runlength limited code for multi-level data - Google Patents

M=9(2,10), d=3.75 runlength limited code for multi-level data Download PDF

Info

Publication number
WO1997050181A1
WO1997050181A1 PCT/US1997/011532 US9711532W WO9750181A1 WO 1997050181 A1 WO1997050181 A1 WO 1997050181A1 US 9711532 W US9711532 W US 9711532W WO 9750181 A1 WO9750181 A1 WO 9750181A1
Authority
WO
WIPO (PCT)
Prior art keywords
xxxx
code
code symbols
output
waveform signal
Prior art date
Application number
PCT/US1997/011532
Other languages
French (fr)
Inventor
Steven W. Mclaughlin
Original Assignee
Etom Technologies Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Etom Technologies Corporation filed Critical Etom Technologies Corporation
Publication of WO1997050181A1 publication Critical patent/WO1997050181A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/20Conversion to or from representation by pulses the pulses having more than three levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1423Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
    • G11B20/1426Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof

Definitions

  • One such material providing a linear response characteristic is an electron trapping material such as is disclosed in U.S. Patents No. 4,864,536, 5,007,037, and 5,142,493, all to Lindmayer.
  • linear- response storage materials provide the ability to encode information in two dimensions - amplitude and phase.
  • the storage medium is no longer confined to storing binary or even tri-level data.
  • the concept of M-ary, or non-binary, data coding and storage is provided.
  • the increased symbol set allowed by such encoding provides the opportunity to dramatically increase the data recording density and transfer rate of the storage device.
  • the potential storage capacity of a single 5VA inch disk can be extended to several gigabytes if that disk is implemented using electron trapping materials with M-ary (multi-level) data coding.
  • input data bits are coded using an M-ary (d,k) encoder to generate code symbols.
  • input data bits x are encoded using the M-ary (d,k) encoder to generate code symbols y, where:
  • the code symbols y are multi-level symbols, each being at one of M levels.
  • the code symbol stream provided meets the code specifications of no fewer than d and no greater than k zeros between each non-zero symbol.
  • code symbols are each at one of nine levels and there is a minimum of two and a maximum of ten zeros between each non-zero symbol.
  • the code symbols y are encoded to generate a series of waveform amplitudes z.
  • the waveform amplitudes are generated by modulo M addition of the current code symbol y, with the previous waveform amplitude z ,.,
  • the waveform amplitudes are used to modulate a write laser to store information onto an optical disk or to otherwise store or communicate the input data bits x in the form of multi-level information.
  • the information stored on the medium is read and the resultant signal amplitudes are decoded.
  • Two stages of decoding are provided.
  • the waveform amplitudes are decoded to generate code symbols.
  • the code symbols are decoded to recover the original data bits.
  • coding techniques described herein are not limited to optical recording. Other recording systems capable of supporting multi-level data would benefit from the coding techniques described herein.
  • these coding techniques are also applicable to communications systems where the communications channel is capable of supporting multi-level data.
  • the waveform amplitudes could be used to modulate a signal carrier for transmission across the multi-level channel.
  • FIG. 1 is a diagram illustrating a portion of an optical storage medium and features thereon.
  • FIG. 2 is a diagram illustrating a data storage system for storing a multi ⁇ level coded data.
  • FIG. 3 is a diagram illustrating an encoder for encoding multi-level data using a multi-level (d,k) code.
  • FIG.4 is a flow diagram illustrating the operation of a multi-state encoder.
  • FIG. 5 is a diagram illustrating an example input data stream being coded using the encoder illustrated in FIG. 4.
  • FIG. 6 is a diagram illustrating a decoder for decoding multi-level (d,k) coded data.
  • FIG. 7 is a diagram illustrating a sliding block decoder.
  • FIG. 8 is a diagram illustrating encoder shut-down.
  • the present invention is directed toward an M-ary (d,k) code for use in storage and/or transmission of multi-level data, and a system and method for generating the same. This discussion is provided in several sections. In Section
  • the present invention is generally described in terms of an embodiment where multi-level data are stored on and retrieved from an optical disk.
  • the encoder and decoder described herein may be implemented for multi-level data storage in an optical disk system such as that disclosed in U.S. Patent No. 5,007,037, which is incorporated herein by reference.
  • the systems and methods of the invention can be implemented for alternative applications such as multi-level data communications and storage of multi-level data on media other than optical disks.
  • the invention can be implemented to transmit and receive data across an M-ary communications channel.
  • channel is sometimes used to refer to the optical disk. It should be understood that in the alternative embodiments the term channel can be used to describe alternative storage media and/or communications channels.
  • the input data are first encoded to create symbols.
  • the encoder is designed such that the output symbols conform to the code specifications: each 1 is followed by a minimum of d and a maximum of k 0's. These symbols are then written to the storage medium as a series of features. For example, for optical disks, a feature is the presence or absence of a burn mark. In a magnetic tape, the feature is a grouping of magnetic particles oriented in a particular manner.
  • FIG. 1 illustrates a portion of an optical storage medium 108 that stores binary data as features 102. Illustrated are shaded and unshaded features 102, indicating the absence or presence of a burn mark. Also illustrated in FIG. 1 is an example symbol stream 112 that is used to write the features 102 to medium 108. As discussed above, symbol stream 112 is the result of encoding input data using a (d,k) RLL code. Symbol stream 112 is written to medium 108 using an additional coding step as follows: the occurrence of a 1 indicates a change in the type of mark (i.e., absence or presence of a burn mark); the occurrence of a 0 indicates no change in mark type. This additional coding step is sometimes referred to as non-return-to-zero interleaved (NRZI) precoding.
  • NRZI non-return-to-zero interleaved
  • the minimum number of symbols represented by a single feature 102 is three.
  • a minimum feature size e.g., for the smallest spot size on medium 108
  • three symbols can be represented.
  • the minimum density of data written to medium 108 is 1.5 bits per fearure.
  • the density of the recording system can be increased by 50%.
  • FIG. 2 is a high-level block diagram generally illustrating a multi-level data recording system 200.
  • the recording system is comprised of an encoder 204, multi-level storage medium 208 and a decoder 212.
  • multi-level storage medium 208 can be replaced with a communications channel allowing the multi-level (d,k) code and coding scheme to be used with multi-level data communications.
  • encoder 204 and decoder 212 can be provided on both ends of the communications channel to allow bi-directional coded communications.
  • input data bits x (x 0 , x 1 , ..., x p-1 ) are the actual data that a user wishes to be stored on and retrieved from medium 208.
  • encoder 204 is implemented as a two-stage encoder.
  • FIG. 3 is a block diagram illustrating encoder 204 in this embodiment. Referring to FIG. 3, encoder 204 is comprised of a symbol encoder 304 and a waveform encoder 308, referred to herein as encoder 304 and encoder 308, respectively.
  • a second feature of encoder 304 is that the stream of code symbols y meets the code specification that there are no fewer than d and no greater than k zeros between each non-zero code symbol.
  • each waveform amplitude z generated represents, at a minimum, d+1 code symbols y. Also, because there are 1/R code symbols y generated for each input data bit x, each waveform amplitude z generated represents, at a minimum,
  • the coding system and method described above can be used to code input data using any of number of M-ary (d,k) codes. However, the design of a specific
  • M-ary (d,k) code is not a trivial matter.
  • M-ary (d,k) codes There are several factors that must be taken into consideration when designing M-ary (d,k) codes.
  • the specific coding scheme used to implement a given code impacts the performance of the encoding and decoding systems.
  • the code should be designed such that encoders and decoders can be implemented in a straight-forward and cost-effective manner.
  • the desirable code can be implemented using encoders that have a relatively small number of states while still meeting the code parameters (i.e., M, d and k).
  • the decoder required to decode the coded data should be implementable using a small sliding block window size and the decoder should have a relatively a small table size.
  • code design is not a trivial matter as there are several coding factors that affect the performance of the system.
  • the specific code implemented for a given set of parameters can impact the overall performance of the system.
  • This section of the patent document describes a specific M-ary (d,k) code and the specific encoder used to implement this code.
  • FIG. 4 is an operational flow diagram illustrating the operation of state machine 400.
  • the operation of state machine 400 is now described with reference to Table 1 and FIG. 4.
  • a step 408 an input data bit set x 0 - x 4 is received.
  • Table 1 is used to determine the output code symbol set y 0 - y 3 and next state from the current state and the input data bit set x 0 - x 4 received in step 408.
  • encoder 304 outputs code symbol set y 0 - y 3 determined in step 412.
  • state machine 400 transitions to the next state determined in step 412. At this time, the operation continues at step 408 as indicated by flow line 426.
  • an output code symbol set y 0 - y 3 of encoder 304 is a function of the input data bit set x 0 - x 4 , and the current state 404 of encoder 304.
  • Table 1 describes the output code symbol set y 0 - y 3 and next state of encoder 304 for each current state and input data bit set x 0 - x 4 .
  • FIG. 5 is a diagram further illustrating the example.
  • FIG. 5 illustrates a current state 508 and a new state 512 for the example input data stream provided in Table 2.
  • encoder 304 transitions from a current state 508 to a new state 512 and produces an output symbol set y 0 - y 3 .
  • FIG. 5 illustrates the example for 15 data bits x of the input data stream while Table 2 is an example for 20 data bits x.
  • code symbols y are further coded by waveform encoder 308 to generate a sequence of amplitudes z used to modulate the write laser.
  • each new code symbol y is modulo nine added to the previous waveform amplitude z,_, to result in the current waveform amplitude z,.
  • the code symbols y are encoded by waveform encoder 308 to waveform amplitudes z, as illustrated in Table 2.
  • the decoder uses a state independent lookup table to decode amplitude levels z read from the disk.
  • the decoder is a sliding block decoder, where a sliding window is used to decode amplitudes read from the disk.
  • FIG. 6 is a block diagram illustrating the decoder.
  • decoder 212 is comprised of a waveform decoder 604 and a sliding block decoder 608.
  • Waveform decoder 604 receives the signal amplitudes z' (multi- level) from the media and converts them to a sequence of digital code symbols y'.
  • Sliding block decoder 608 performs a table lookup to convert output code symbols y' into output data bits x'. Note that in an error free environment, output code symbols y' correspond identically to input code symbols y and output data bits x' correspond identically to input data bits x.
  • each output symbol y' is determined as being the modulo M difference between the current amplitude waveform z', and the previous amplitude waveform z',.,.
  • sliding block decoder 608 The purpose of sliding block decoder 608 is to convert the sequence of code symbols y' into a sequence of data bits x' that coincide with input data bits x.
  • the decoder is a state independent lookup table.
  • the size of the lookup table is dependent on the specific code implemented. Therefore, the design of encoder 304 affects the size of the lookup table implemented.
  • Sliding block decoder 608 is illustrated in FIG. 7.
  • Sliding block decoder comprises a sliding window 704 to decode the code symbols y' to arrive at output data bits x'.
  • sliding block decoder 608 must look at multiple code symbols y' to decode one data bit set. Specifically, for the encoder described above with reference to Table 1 , sliding block decoder 608 requires a block of twelve code symbols y- to uniquely decode one data bit set x 0 ' - x 4 '
  • sliding window 704 The actual size of sliding window 704 is determined during code design. An optimally sized sliding window 704 is large enough such that the symbols y' within sliding window 704 unambiguously define the correct output bit set x 0 ' - x 4 ' without being so large that unneeded code symbols y' are included therein. In other words, the window size is chosen as the smallest window which guarantees unique decodability.
  • sliding window 704 With the use of a sliding window 704 to decode the data, knowledge of state information is not required. In fact, the contents of sliding window 704 at any given time contain sufficient information such that state information can be determined therefrom.
  • sliding block decoder 608 is computationally less complex than conventional decoders; more importantly, the sliding block decoder limits the propagation of errors.
  • Sliding window 704 actually represents the past, present and future.
  • the one code symbol y' actually being decoded to generate a data bit x' represents the present.
  • Past symbols y' are those occurring earlier in time than the present symbol.
  • future symbols y' are those that occur after the present symbol.
  • the past is represented by '0400', the present by '0000', and the future by *1000'.
  • sliding block decoders are well known for decoding binary data.
  • One well known technique for implementing sliding block decoders with binary data is the Adler-Coppersmith-Hassner technique disclosed in U.S. Patent No. 4,413,251. Another, related technique is disclosed in U.S. Patent No.
  • the lookup table contains a plurality of entries.
  • each entry contains a possible sequence of N code symbols y', where N is the size of sliding window 704.
  • each entry of the lookup table is addressed by (directly, indirectly or via a decoding scheme) one of the possible sequences of code symbols.
  • the lookup table comprises a sufficient number of entries such that there is one entry for each of the possible occurrences of N code symbols.
  • N is chosen such that for each sequence of N code symbols y 1 an output bit set x' is unambiguously defined.
  • the preferred lookup table has 3747 entries and is illustrated in Table 3. For each entry of twelve code symbols y 1 , there is an output bit set x'. Thus, to decode code symbols y', twelve consecutive code symbols y' are loaded into sliding window 704. The entry corresponding to those twelve code symbols y' is located in the lookup table and the corresponding data bit set x' is output. To determine the next output data bit set x', sliding window 704 is 'slid' one code symbol set y' into the future (i.e., in one embodiment, a next code symbol set y' is shifted into window 704 and the oldest shifted out) and the lookup process is repeated. This sliding process continues as long as code symbols y' are provided to sliding block decoder 608.
  • t j i is the i'th component of the j'th table entry.
  • the window w is then decoded to the table entry with the minimum distance d j
  • window 704 are used as an address or used to generate an address of an entry in a memory, where the contents of that entry contain the appropriate output data bit set x'.
  • the complexity of the decoding process can be reduced significantly by making hard decisions regarding read signal amplitudes.
  • the read signal amplitudes z' are rounded-off or quantized to be one of the nine permissible amplitude levels. Even though this results in a decrease in the performance of the decoder it can significantly reduce its complexity: that is, the table can be a true lookup table requiring no distance calculations.
  • XXXX 0400 6006 10001 xxxx 0400 0004 10101 xxxx 0400 6007 10001 xxxx 0300 0040 10110 xxxx 0400 6008 10001 xxxx 0300 0050 10110 xxxx 0300 7001 10010 xxxx 0300 0060 10110 xxxx 0300 7002 10010 xxxx 0300 0070 10110 xxxx 0300 7003 10010 xxxx 0300 0080 10110 xxxx 0300 7004 10010 xxxx 0300 0005 10110 xxxx 0300 7005 10010 xxxx 0300 0006 10110 xxxx 0300 7006 10010 xxxx 0300 0007 10110 xxxx 0300 7007 10010 xxxx 0300 0008 10110 xxxx 0300 7008 10010 xxxx 0400 0040 10111 xxxx 0300 8001 10010 xxxx 0400 0050 10111 xxxx 0300 8002 10010 xxxx 0400 0060 10111 xxxx 0300 8003 10010
  • XXXX 4000 8006 10011 xxxx 3006 0002 11001 xxxx 4000 8007 10011 xxxx 3006 0003 11001 xxxx 4000 8008 10011 xxxx 3006 0004 11001 xxxx 3000 0010 10100 xxxx 3007 0010 11010 xxxx 3000 0020 10100 xxxx 3007 0020 11010 xxxx 3000 0030 10100 xxxx 3007 0030 11010 xxxx 3000 0000 10100 xxxx 3007 0000 11010 xxxx 3000 0001 10100 xxxx 3007 0001 11010 xxxx 3000 0002 10100 xxxx 3007 0002 11010 xxxx 3000 0003 10100 xxxx 3007 0003 11010 xxxx 3000 0004 10100 xxxx 3007 0004 11010 xxxx 4000 0010 10101 xxxx 3008 0010 11011 xxxx 4000 0020 10101 xxxx 3008 0020 11011 xxxx 4000 0030
  • XXXX 8004 0005 10111 xxxx 8006 0005 11101 xxxx 8004 0006 10111 xxxx 8006 0006 11101 xxxx 8004 0007 10111 xxxx 8006 0007 11101 xxxx 8004 0008 10111 xxxx 8006 0008 11101 xxxx 8005 0010 11000 xxxx 8007 0040 11110 xxxx 8005 0020 11000 xxxx 8007 0050 11110 xxxx 8005 0030 11000 xxxx 8007 0060 11110 xxxx 8005 0000 11000 xxxx 8007 0070 11110 xxxx 8005 0001 11000 xxxx 8007 0080 11110 xxxx 8005 0002 11000 xxxx 8007 0005 11110 xxxx 8005 0003 11000 xxxx 8007 0006 11110 xxxx 8005 0004 11000 xxxx 8007 0007 11110 xxxx 8006 0010 11001 xxxx 8007 0008 11110 xxxx 8006 0020 11
  • window 704 is not full. For example, referring to FIG. 7, suppose that the code symbols '0000' are the last in the data stream. Thus when decoder 212 attempts to decode code symbols '0000', there are no future code symbols available. What is needed is a way to "shut-down" encoder 204.
  • FIG. 8 is a diagram illustrating encoder shut-down.
  • window 704 is not full. For example, referring to FIG. 7, suppose that the code symbols '0001 ' are the first in the data stream. Thus when decoder 212 attempts to decode code symbols '0001', there are no past code symbols available. What is needed is a way to "start-up" encoder 204.
  • the present invention provides two ways to start-up encoder 204.
  • encoder 204 is started in a state that eliminates the need for past code symbols; in a preferred embodiment, encoder 204 is started in state 2.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

A system for encoding digital data with an M-ary (d,k) code to provide multi-level coded data where M > 2 comprises an M-ary (d,k) encoder for accepting digital input data. The M-ary (d,k) coder encodes the digital input data to produce a plurality of code symbols, where each code symbol is at one of M levels and each pair of non-zero code symbols is separated by at least d but no more than k zeros. A waveform encoder (204) converts the code symbols into waveform signal amplitudes compatible with a multi-level channel. Each waveform signal amplitude is generated by modulo M addition of a current code symbol with a previous waveform signal amplitude. A specific M=9(2,10) code provides high density recording to a multi-level storage medium. The M=9(2,10) encoder is implemented using an eighteen-state encoder and a modulo nine waveform encoder.

Description

M=9 (2,10), D=3.75 Runlength Limited Code for Multi-Level Data
Background of the Invention
Field of the Invention
The present invention relates generally to multi-level coding techniques, and more specifically to a system and method for coding data using an M=9 (2,10) runlength limited code, such code being particularly useful for storing and/or transmitting multi -level data.
Related Art
Various techniques are currently in use for increasing the recording density on various digital recording mediums such as magnetic tapes and disks and in other similar media. One technique utilizes an approach known as run¬ length-limited coding. This technique requires that each "1" in a coded bit sequence must be separated by a specified number of "0's." This number of zeros must be at least a minimum quantity, d, to reduce intersymbol interference, and is limited to a maximum quantity k for self clocking purposes. Such codes are generally referred to as (d,k) run-length-limited (RLL) codes.
Because conventional recording techniques use saturation recording to store information, binary recording techniques are often used to mark the recording medium. As a result, conventional (d,k) RLL codes developed to date are developed and optimized to store binary data.
Significant advances in data storage materials have lead to the development of a storage medium that provides a linear response characteristic. One such material providing a linear response characteristic is an electron trapping material such as is disclosed in U.S. Patents No. 4,864,536, 5,007,037, and 5,142,493, all to Lindmayer.
Using a material which provides a linear response characteristic yields an advantage over saturation-type media in that it adds an analog dimension to the storage capacity of the medium. Because the response is linear, the linear- response storage materials provide the ability to encode information in two dimensions - amplitude and phase.
As a result, the storage medium is no longer confined to storing binary or even tri-level data. Instead, the concept of M-ary, or non-binary, data coding and storage is provided. The increased symbol set allowed by such encoding provides the opportunity to dramatically increase the data recording density and transfer rate of the storage device. For example, the potential storage capacity of a single 5VA inch disk can be extended to several gigabytes if that disk is implemented using electron trapping materials with M-ary (multi-level) data coding.
Summary of the Invention
The present invention is directed toward an M=9 (2,10) runlength-limited code for multi-level data storage and/or communications. Also disclosed herein is a system and method for generating multi-level data from a binary input data stream using an M-ary (d,k) code such as the M=9 (2,10) runlength limited code.
According to the invention input data bits are coded using an M-ary (d,k) encoder to generate code symbols. Specifically, input data bits x are encoded using the M-ary (d,k) encoder to generate code symbols y, where:
x = (x0, x1, ••• Xp- 1)
for p input date bits, and y = (y0, y1, ... yq-1) where p/q is the code rate R.
The code symbols y are multi-level symbols, each being at one of M levels. The code symbol stream provided meets the code specifications of no fewer than d and no greater than k zeros between each non-zero symbol. Thus, according to the M=9 (2,10) code disclosed herein, code symbols are each at one of nine levels and there is a minimum of two and a maximum of ten zeros between each non-zero symbol.
The code symbols y are encoded to generate a series of waveform amplitudes z. The waveform amplitudes are generated by modulo M addition of the current code symbol y, with the previous waveform amplitude z ,., The waveform amplitudes are used to modulate a write laser to store information onto an optical disk or to otherwise store or communicate the input data bits x in the form of multi-level information.
To recover the original data bits x from the medium, the information stored on the medium is read and the resultant signal amplitudes are decoded.
Two stages of decoding are provided. In the first stage, the waveform amplitudes are decoded to generate code symbols. In the second stage, the code symbols are decoded to recover the original data bits.
The system and method described herein for coding and decoding the data is described with respect to the M=9 (2,10) code disclosed herein. However, while other codes may not be obvious in light of the code disclosed herein, given a specific M-ary (d,k) code, after reading the below disclosure, it will become apparent to a person skilled in the relevant art how the disclosed system and method can be implemented to code and decode the data using such a specific M- ary (d,k) code.
An advantage of the invention is that the recording density can be increased by coding the input data using the disclosed M=9 (2,10) code. Because there are at least d zeros between every non-zero code symbol, there can be at least d+1 symbols stored for a given minimum feature size. Given a code of rate
R, the density achievable is (d+1)R.
It should be noted that the coding techniques described herein are not limited to optical recording. Other recording systems capable of supporting multi-level data would benefit from the coding techniques described herein.
Additionally, these coding techniques are also applicable to communications systems where the communications channel is capable of supporting multi-level data. In such an implementation, the waveform amplitudes could be used to modulate a signal carrier for transmission across the multi-level channel.
Further features and advantages of the present invention, as well as the structure and operation of various embodiments of the present invention, are described in detail below with reference to the accompanying drawings.
Brief Description of the Figures
The present invention is described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit of a reference number identifies the drawing in which the reference number first appears.
FIG. 1 is a diagram illustrating a portion of an optical storage medium and features thereon. FIG. 2 is a diagram illustrating a data storage system for storing a multi¬ level coded data.
FIG. 3 is a diagram illustrating an encoder for encoding multi-level data using a multi-level (d,k) code.
FIG.4 is a flow diagram illustrating the operation of a multi-state encoder.
FIG. 5 is a diagram illustrating an example input data stream being coded using the encoder illustrated in FIG. 4.
FIG. 6 is a diagram illustrating a decoder for decoding multi-level (d,k) coded data.
FIG. 7 is a diagram illustrating a sliding block decoder.
FIG. 8 is a diagram illustrating encoder shut-down.
Detailed Description of the Preferred Embodiments
1. Introduction
The present invention is directed toward an M-ary (d,k) code for use in storage and/or transmission of multi-level data, and a system and method for generating the same. This discussion is provided in several sections. In Section
2, before discussing the invention in detail, a brief discussion of binary (d,k) codes is presented. In Section 3, a coding system for coding input data using an M-ary (d,k) code is described. In Section 4, some code design factors are described. In Section 5, a specific M=9 (2,10) code is described that is particularly useful for storage and/or transmission of multi-level data. Section 5 also provides a detailed description of the encoder used to code data using the disclosed M=9 (2,10) code. In Section 6 there is presented a discussion of a sliding block decoder generally useful for decoding M-ary (d,k) codes, as well as a specific decoder for decoding the M=9 (2,10) code described in Section 5.
The present invention is generally described in terms of an embodiment where multi-level data are stored on and retrieved from an optical disk. In such an embodiment, the encoder and decoder described herein may be implemented for multi-level data storage in an optical disk system such as that disclosed in U.S. Patent No. 5,007,037, which is incorporated herein by reference. However, after reading the below description, it will become apparent to a person skilled in the relevant art how the systems and methods of the invention can be implemented for alternative applications such as multi-level data communications and storage of multi-level data on media other than optical disks. In yet other alternative embodiments, the invention can be implemented to transmit and receive data across an M-ary communications channel. In this document, the term "channel" is sometimes used to refer to the optical disk. It should be understood that in the alternative embodiments the term channel can be used to describe alternative storage media and/or communications channels.
Additionally, after reading the below detailed description of the encoder and decoder of the present invention, it will become apparent to a person skilled in the art that these disclosed components can be implemented using hardware, software or a combination of both hardware and software.
2. Binary (d,k) Run-Length-Limited Coding
Using conventional binary storage techniques, data are written to a storage medium using binary 1 's and 0's. Using run-length limited coding, the data to be recorded are first encoded using a run-length-limited encoder. As stated above, with a (d,k) RLL code, there is a minimum and a maximum number of 0's that can occur between each pair of l's, as specified by the code parameters d and k. Thus, the (d,k) RLL encoder results in a 1 followed by at least d and at most k 0's before another 1 occurs. Such (d,k) RLL codes for binary applications are well known in the art.
To write input data to the saturation storage medium, the input data are first encoded to create symbols. The encoder is designed such that the output symbols conform to the code specifications: each 1 is followed by a minimum of d and a maximum of k 0's. These symbols are then written to the storage medium as a series of features. For example, for optical disks, a feature is the presence or absence of a burn mark. In a magnetic tape, the feature is a grouping of magnetic particles oriented in a particular manner.
FIG. 1 illustrates a portion of an optical storage medium 108 that stores binary data as features 102. Illustrated are shaded and unshaded features 102, indicating the absence or presence of a burn mark. Also illustrated in FIG. 1 is an example symbol stream 112 that is used to write the features 102 to medium 108. As discussed above, symbol stream 112 is the result of encoding input data using a (d,k) RLL code. Symbol stream 112 is written to medium 108 using an additional coding step as follows: the occurrence of a 1 indicates a change in the type of mark (i.e., absence or presence of a burn mark); the occurrence of a 0 indicates no change in mark type. This additional coding step is sometimes referred to as non-return-to-zero interleaved (NRZI) precoding.
Note that with a (d,k) RLL code where d=2, the minimum number of symbols represented by a single feature 102 is three. Thus, for a minimum feature size (e.g., for the smallest spot size on medium 108) three symbols can be represented. As a result, for a rate 1/2 code, where each input bit corresponds to two symbols, the minimum density of data written to medium 108 is 1.5 bits per fearure. Thus, as a result of using the (d,k) RLL coding in the described scenario, the density of the recording system can be increased by 50%.
3. A Generic M-ary Runlength-Limited (d,k) Coder
A few advantages of (d,k) coding are described above with reference to binary data systems. It is important to note that similar gains in density can be realized for storage and communications systems using multi-level (versus binary) data. To optimize such gains, however, new codes and new coding techniques are required to take full advantage of the unique properties of the multi-level data. Thus, the inventors have developed a system and method for encoding data using M-ary (d,k) codes.
FIG. 2 is a high-level block diagram generally illustrating a multi-level data recording system 200. The recording system is comprised of an encoder 204, multi-level storage medium 208 and a decoder 212. As stated above, multi-level storage medium 208 can be replaced with a communications channel allowing the multi-level (d,k) code and coding scheme to be used with multi-level data communications. In such a communications embodiment, encoder 204 and decoder 212 can be provided on both ends of the communications channel to allow bi-directional coded communications.
According to the invention, input data bits x = (x0, x1, ..., xp-1) are the actual data that a user wishes to be stored on and retrieved from medium 208.
However, to take full advantage of the multi-level properties of medium 208 and to increase the storage density achieved, the invention provides for the encoding of input data x so that multi-level data is stored on medium 208. Such encoding is accomplished using encoder 204. In one embodiment, encoder 204 is implemented as a two-stage encoder. FIG. 3 is a block diagram illustrating encoder 204 in this embodiment. Referring to FIG. 3, encoder 204 is comprised of a symbol encoder 304 and a waveform encoder 308, referred to herein as encoder 304 and encoder 308, respectively.
Encoder 304 is a (d,k) RLL symbol encoder that accepts the input data bits x and converts them to a stream of code symbols y = (y0, y 1, ..., yq-1). To take advantage of the multi-level characteristics of medium 208, encoder 304 generates code symbols y at M different levels, where M>2. A second feature of encoder 304 is that the stream of code symbols y meets the code specification that there are no fewer than d and no greater than k zeros between each non-zero code symbol. Another feature of encoder 304 is that there are R input bits xi for each code symbol y, generated. This feature is referred to as the code rate. Thus for a rate 1/N code (i.e., where R = 1/N), there are N code symbols yi generated for each input data bit xf.
Waveform encoder 308 accepts code symbols y and converts them to a series of waveforms z = (z0, z1, ..., zq-1), each of a given amplitude. Waveform encoder 308 generates output waveforms z, each at one of M different amplitudes. The waveform amplitudes are generated by modulo M addition of the current code symbol yf with the previous waveform amplitude z,.,. It is the waveforms z which are used to modulate a write laser for storing data onto medium 208 (or transmitted across the multi-amplitude channel).
Because there are at a minimum d zeros, between each non-zero code symbol, each waveform amplitude z generated represents, at a minimum, d+1 code symbols y. Also, because there are 1/R code symbols y generated for each input data bit x, each waveform amplitude z generated represents, at a minimum,
(d+l)R data bits x. Thus, for a minimum feature size (e.g., the smallest spot that can be written to the storage medium or the shortest pulse that can be transmitted across the communications channel), the density achieved is D =: (d+l)R.
Consider this density in terms of the specific M=9 (2,10) code described below. The rate of this code is R=5/4 and d=2. For this code, the density is 3.75 input data bits xi per minimum feature size. In other words, 3.75 input data bits can be stored using a single minimum-size feature.
4. Code Design Factors
The coding system and method described above can be used to code input data using any of number of M-ary (d,k) codes. However, the design of a specific
M-ary (d,k) code is not a trivial matter.
There are several factors that must be taken into consideration when designing M-ary (d,k) codes. The specific coding scheme used to implement a given code impacts the performance of the encoding and decoding systems. For example, the code should be designed such that encoders and decoders can be implemented in a straight-forward and cost-effective manner. Toward this end, the desirable code can be implemented using encoders that have a relatively small number of states while still meeting the code parameters (i.e., M, d and k). Additionally, the decoder required to decode the coded data should be implementable using a small sliding block window size and the decoder should have a relatively a small table size.
Further, the code design must result in an encoder and decoder that operate such that errors in the decoder side have a minimum effect. It would be undesirable for errors to propagate too far in the decoded data stream. In some less-than-desirable systems, a single decoding error can result in a very large, if not infinite, number of additional decoding errors. Achievement of such design goals is not a trivial matter. Not every M-ary (d,k) code of a given set of parameter values will perform in a desirable manner. Provided in the next section of this document is a specific M=9 (2, 10) runlength- limited code that meets the design goals outlined above.
5. M=9 (2,10) runlength-limited code
As stated above, code design is not a trivial matter as there are several coding factors that affect the performance of the system. The specific code implemented for a given set of parameters can impact the overall performance of the system. This section of the patent document describes a specific M-ary (d,k) code and the specific encoder used to implement this code. In particular, this section describes a specific M=9 (2,10) runlength-limited code having a rate R=5/4.
Table 1 is a state table illustrating an encoder 400 for encoding input data x to generate code symbols y for the M=9 (2,10) code (i.e. a specific version of encoder 304). Encoder 400 is a eighteen-state, M=9 (2,10) encoder. For each input data bit set x0 - x4, an output code symbol set y0 - y3 is produced; each output code symbol yi is at one of nine levels (0-8). The various states as well as the inputs and outputs of Encoder 400 M=9 (2,10) are illustrated using Table 1.
FIG. 4 is an operational flow diagram illustrating the operation of state machine 400. The operation of state machine 400 is now described with reference to Table 1 and FIG. 4. In a step 404, the operation starts in a given state at time t=0. In a step 408, an input data bit set x0 - x4 is received. In a step 412, Table 1 is used to determine the output code symbol set y0 - y3 and next state from the current state and the input data bit set x0 - x4 received in step 408. In a step 416, encoder 304 outputs code symbol set y0 - y3 determined in step 412. In a step 420, state machine 400 transitions to the next state determined in step 412. At this time, the operation continues at step 408 as indicated by flow line 426.
As is evident by the above description, an output code symbol set y0 - y3 of encoder 304 is a function of the input data bit set x0 - x4, and the current state 404 of encoder 304. For the M=9 (2,10) encoder of the present invention, Table 1 describes the output code symbol set y0 - y3 and next state of encoder 304 for each current state and input data bit set x0 - x4.
Figure imgf000015_0001
Figure imgf000016_0001
Table 1 (cont.)
STATE 2
INPUT OUTPUT NEXTSTATE
0 0100 6
1 0200 6
2 0100 7
3 0200 7
4 0100 8
5 0200 8
6 0100 9
10 7 0200 9
8 0100 10
9 0200 10
10 0100 11
11 0200 11
15 12 0100 12
13 0200 12
14 0100 13
15 0200 13
16 0001 0
20 17 0002 0
18 0003 0
19 0004 0
20 0001 1
21 0002 1
25 22 0003 1
23 0004 1
24 0100 14
25 0200 14
26 0100 15
30 27 0200 15
28 0100 16
29 0200 16
30 0100 1
31 0200 1 Table 1 (cont.)
STATE 3
INPUT OUTPUT NEXT STATE
0 0300 6
1 0400 6
2 0300 7
3 0400 7
4 0300 8
5 0400 8
6 0300 9
7 0400 9
8 0300 10
9 0400 10
10 0300 11
11 0400 11
12 0300 12
13 0400 12
14 0300 13
15 0400 13
16 0300 14
17 0400 14
18 0300 15
19 0400 15
20 0300 16
21 0400 16
22 0300 1
23 0400 1
24 0005 0
25 0006 0
26 0007 0
27 0008 0
28 0005 1
29 0006 1
30 0007 1
31 0008 1 Table 1 (cont.)
STATE 4
INPUT OUTPUT NEXT STATE
0 0010 2
1 0020 2
2 0010 3
3 0020 3
4 0010 4
5 0020 4
6 0010 17
7 0020 17
8 0500 6
9 0600 6
10 0500 7
11 0600 7
12 0500 8
13 0600 8
14 0500 9
15 0600 9
16 0500 10
17 0600 10
18 0500 11
19 0600 11
20 0500 12
21 0600 12
22 0500 13
23 0600 13
24 0500 14
25 0600 14
26 0500 15
27 0600 15
28 0500 16
29 0600 16
30 0500 1
31 0600 1 Table 1 (cont.)
STATE 5
INPUT OUTPUT NEXT STATE
0 0040 2
1 0050 2
2 0040 3
3 0050 3
4 0040 4
5 0050 4
6 0040 17
7 0050 17
8 0700 6
9 0800 6
10 0700 7
11 0800 7
12 0700 8
13 0800 8
14 0700 9
15 0800 9
16 0700 10
17 0800 10
18 0700 11
19 0800 11
20 0700 12
21 0800 12
22 0700 13
23 0800 13
24 0700 14
25 0800 14
26 0700 15
27 0800 15
28 0700 16
29 0800 16
30 0700 1
31 0800 1 Table 1 (cont.)
STATE 6
INPUT OUTPUT NEXT STATE
0 0100 6
1 0200 6
2 0100 7
3 0200 7
4 0100 8
5 0200 8
6 0100 9
7 0200 9
8 0100 10
9 0200 10
10 0100 11
11 0200 11
12 0100 12
13 0200 12
14 0100 13
15 0200 13
16 1001 0
17 1002 0
18 1003 0
19 1004 0
20 1001 1
21 1002 1
22 1003 1
23 1004 1
24 0100 14
25 0200 14
26 0100 15
27 0200 15
28 0100 16
29 0200 16
30 0100 1
31 0200 1
Figure imgf000022_0001
Table 1 (cont.)
STATE 8
INPUT OUTPUT NEXTSTATE
0 2001 0
1 2002 0
2 2003 0
3 2004 0
4 2001 1
5 2002 1
6 2003 1
10 7 2004 1
8 0500 6
9 0600 6
10 0500 7
11 0600 7
15 12 0500 8
13 0600 8
14 0500 9
15 0600 9
16 0500 10
20 17 0600 10
18 0500 11
19 0600 11
20 0500 12
21 0600 12
25 22 0500 13
23 0600 13
24 0500 14
25 0600 14
26 0500 15
30 27 0600 15
28 0500 16
29 0600 16
30 0500 1
31 0600 1
Figure imgf000024_0001
Table 1 (cont.)
STATE 10
INPUT OUTPUT NEXT STATE
0 1000 6
1 2000 6
2 1000 7
3 2000 7
4 1000 8
5 2000 8
6 1000 9
7 2000 9
8 1000 10
9 2000 10
10 1000 11
11 2000 11
12 1000 12
13 2000 12
14 1000 13
15 2000 13
16 1000 14
17 2000 14
18 1000 15
19 2000 15
20 1000 16
21 2000 16
22 1000 1
23 2000 1
24 3001 0
25 3002 0
26 3003 0
27 3004 0
28 3001 1
29 3002 1
30 3003 1
31 3004 1 Table 1 (cont.)
STATE 11
INPUT OUTPUT NEXT STATE
0 3000 6
1 4000 6
2 3000 7
3 4000 7
4 3000 8
5 4000 8
6 3000 9
7 4000 9
8 3000 10
9 4000 10
10 3000 11
11 4000 11
12 3000 12
13 4000 12
14 3000 13
15 4000 13
16 3000 14
17 4000 14
18 3000 15
19 4000 15
20 3000 16
21 4000 16
22 3000 1
23 4000 1
24 3005 0
25 3006 0
26 3007 0
27 3008 0
28 3005 1
29 3006 1
30 3007 1
31 3008 1
Figure imgf000027_0001
Table 1 (cont.)
STATE 13
INPUT OUTPUT NEXT STATE
0 7000 6
I 8000 6
2 7000 7
3 8000 7
4 7000 8
5 8000 8
6 7000 9
7 8000 9
8 7000 10
9 8000 10
10 7000 11
11 8000 11
12 7000 12
13 8000 12
14 7000 13
15 8000 13
16 7000 14
17 8000 14
18 7000 15
19 8000 15
20 7000 16
21 8000 16
22 7000 1
23 8000 1
24 4005 0
25 4006 0
26 4007 0
27 4008 0
28 4005 1
29 4006 1
30 4007 1
31 4008 1 Table 1 (cont.)
STATE 14
INPUT OUTPUT NEXTSTATE
0 5001 0
1 5002 0
2 5003 0
3 5004 0
4 5001 1
5 5002 1
6 5003 1
7 5004 1
8 5005 0
9 5006 0
10 5007 0
11 5008 0
12 5005 1
13 5006 1
14 5007 1
15 5008 1
16 6001 0
17 6002 0
18 6003 0
19 6004 0
20 6001 1
21 6002 1
22 6003 1
23 6004 1
24 6005 0
25 6006 0
26 6007 0
27 6008 0
28 6005 1
29 6006 1
30 6007 1
31 6008 1 Table 1 (cont.)
STATE 15
INPUT OUTPUT NEXTSTATE
0 7001 0
1 7002 0
2 7003 0
3 7004 0
4 7001 1
5 7002 1
6 7003 1
7 7004 I
8 7005 0
9 7006 0
10 7007 0
11 7008 0
12 7005 1
13 7006 1
14 7007 1
15 7008 1
16 8001 0
17 8002 0
18 8003 0
19 8004 0
20 8001 1
21 8002 1
22 8003 1
23 8004 1
24 8005 0
25 8006 0
26 8007 0
27 8008 0
28 8005 1
29 8006 1
30 8007 1
31 8008 1 Table 1 (cont.)
STATE 16
INPUT OUTPUT NEXTSTATE
0 0010 2
1 0020 2
2 0010 3
3 0020 3
4 0010 4
5 0020 4
6 0010 17
7 0020 17
8 0000 14
9 0000 15
10 0010 5
11 0020 5
12 0000 6
13 0000 7
14 0000 8
15 0000 9
16 0001 0
17 0002 0
18 0003 0
19 0004 0
20 0001 1
21 0002 1
22 0003 1
23 0004 1
24 0000 10
25 0000 11
26 0000 12
27 0000 13
28 0030 2
29 0030 3
30 0030 4
31 0030 17 Table 1 (cont.)
STATE 17
INPUT OUTPUT NEXT STATE
0 0000 6
1 0000 7
2 0000 8
3 0000 9
4 0000 10
5 0000 14
6 0000 15
7 0000 16
8 0000 1
9 0000 13
10 0060 2
11 0070 2
12 0060 3
13 0070 3
14 0060 4
15 0070 4
16 0060 5
17 0070 5
18 0060 17
19 0070 17
20 0080 2
21 0080 3
22 0080 4
23 0080 5
24 0080 17
25 0000 11
26 0000 12
27 0030 5
28 0030 2
29 0030 3
30 0030 4
31 0030 17
To further illustrate the operation of symbol encoder 304, consider an example input data stream x as illustrated in Table 2. In this example, assume the encoder 304 starts in state 0 and that the first input data bit set x0 - x4 is '10100'. Referring to the node 404 for state 0, the edge where x0 - x4 = '10100' indicates that encoder 304 outputs symbol '0001' and transitions to state 1. This can also be determined by referring to the rows in Table 1 corresponding to a current state of 0.
FIG. 5 is a diagram further illustrating the example. FIG. 5 illustrates a current state 508 and a new state 512 for the example input data stream provided in Table 2. Referring to FIG. 5 and state machine 400, given the input data stream illustrated in Table 2, for each input data bit set x0 - x4, encoder 304 transitions from a current state 508 to a new state 512 and produces an output symbol set y0 - y3. FIG. 5 illustrates the example for 15 data bits x of the input data stream while Table 2 is an example for 20 data bits x.
Table 2
X 10100 00110 11000 y 0001 0040 0080 z 0001 1155 5544
As described above with reference to FIG. 3, code symbols y are further coded by waveform encoder 308 to generate a sequence of amplitudes z used to modulate the write laser. According to one embodiment, waveform encoder 308 is a modulo nine encoder that, for a given time, determines the waveform amplitude z, by zi = (zi_1 + yi) mod M
Note that z is a transformed version of y, where the difference (mod M) between waveform amplitudes z, and ZJ., is the coded symbol y,. Thus, in this embodiment, each new code symbol y, is modulo nine added to the previous waveform amplitude z,_, to result in the current waveform amplitude z,. In following the example described above and illustrated in FIG. 5 and Table 2, the code symbols y are encoded by waveform encoder 308 to waveform amplitudes z, as illustrated in Table 2.
To briefly summarize the encoding process, input binary data bits x are first encoded using an M=9 (2,10) symbol encoder to produce code symbols y at
M=9 levels. Code symbols y are then encoded by waveform encoder 308 to produce waveform amplitudes z. According to the current code, M=9 amplitudes (illustrated in the above examples as 0 - 17) are possible. These amplitudes are written to the media by the write laser as illustrated in FIG. 3.
6. Decoder
In order to recover the original data bits x from the amplitudes z stored on the media (or transmitted across the communications channel) a decoder is implemented. In one embodiment, the decoder uses a state independent lookup table to decode amplitude levels z read from the disk. In this embodiment, the decoder is a sliding block decoder, where a sliding window is used to decode amplitudes read from the disk.
FIG. 6 is a block diagram illustrating the decoder. As illustrated in FIG. 6, decoder 212 is comprised of a waveform decoder 604 and a sliding block decoder 608. Waveform decoder 604 receives the signal amplitudes z' (multi- level) from the media and converts them to a sequence of digital code symbols y'. Sliding block decoder 608 performs a table lookup to convert output code symbols y' into output data bits x'. Note that in an error free environment, output code symbols y' correspond identically to input code symbols y and output data bits x' correspond identically to input data bits x. Any of a number of different techniques can be implemented to read waveform amplitudes z off of the media to provide the signal amplitudes z' to waveform decoder 604. It should be noted that the actual read scheme implemented is not important to the invention as long as data are read accurately.
As stated above, the purpose of waveform decoder 604 is to decode signal amplitudes z' to recover the actual code symbols y'. Waveform decoder converts a sequence of amplitudes z' = (z'0, z'1, ..., z'N-1) where z' i -∈ [0,A], for some real number A, to a sequence of code symbols y' = (y'0, y'1, ..., y'N-I).
The operation of waveform decoder 604 is now described. For a given time i, the code symbol y'j is determined by
Figure imgf000035_0001
According to this technique, each output symbol y' is determined as being the modulo M difference between the current amplitude waveform z', and the previous amplitude waveform z',.,. This decoding essentially undoes the coding performed by waveform encoder 308. Specifically, for M=9 (d,k) codes, such as the M=9 (2,10) code described above in Section 5, the decoding is implemented using a modulo nine difference.
6.1 Sliding Block Decoder
The purpose of sliding block decoder 608 is to convert the sequence of code symbols y' into a sequence of data bits x' that coincide with input data bits x. In a preferred embodiment, the decoder is a state independent lookup table. The size of the lookup table is dependent on the specific code implemented. Therefore, the design of encoder 304 affects the size of the lookup table implemented. Sliding block decoder 608 is illustrated in FIG. 7. Sliding block decoder comprises a sliding window 704 to decode the code symbols y' to arrive at output data bits x'. Whereas encoder 304 accepts one data bit set x0 - x4 and generates one code symbol set y0 - y3 therefrom, sliding block decoder 608 must look at multiple code symbols y' to decode one data bit set. Specifically, for the encoder described above with reference to Table 1 , sliding block decoder 608 requires a block of twelve code symbols y- to uniquely decode one data bit set x0' - x4'
The actual size of sliding window 704 is determined during code design. An optimally sized sliding window 704 is large enough such that the symbols y' within sliding window 704 unambiguously define the correct output bit set x0' - x4' without being so large that unneeded code symbols y' are included therein. In other words, the window size is chosen as the smallest window which guarantees unique decodability.
With the use of a sliding window 704 to decode the data, knowledge of state information is not required. In fact, the contents of sliding window 704 at any given time contain sufficient information such that state information can be determined therefrom. Thus, sliding block decoder 608 is computationally less complex than conventional decoders; more importantly, the sliding block decoder limits the propagation of errors.
Sliding window 704 actually represents the past, present and future. The one code symbol y' actually being decoded to generate a data bit x' represents the present. Past symbols y' are those occurring earlier in time than the present symbol. Likewise, future symbols y' are those that occur after the present symbol. In FIG. 7, the past is represented by '0400', the present by '0000', and the future by *1000'. Note that sliding block decoders are well known for decoding binary data. One well known technique for implementing sliding block decoders with binary data is the Adler-Coppersmith-Hassner technique disclosed in U.S. Patent No. 4,413,251. Another, related technique is disclosed in U.S. Patent No. 4,882,583 to Dimitri et al. According to these techniques, the number of past symbols required in the window is fixed based on the code design. The number of future symbols should be maintained as small as possible. These goals apply to the M- ary sliding block decoder as well.
The lookup table contains a plurality of entries. In one embodiment, each entry contains a possible sequence of N code symbols y', where N is the size of sliding window 704. In alternative embodiments, each entry of the lookup table is addressed by (directly, indirectly or via a decoding scheme) one of the possible sequences of code symbols.
Based on the specific design of coder 304, there are a limited number of possible occurrences of N code symbols y'. The lookup table comprises a sufficient number of entries such that there is one entry for each of the possible occurrences of N code symbols. As stated above, N is chosen such that for each sequence of N code symbols y1 an output bit set x' is unambiguously defined.
For the encoder 304 described above with reference to Table 1, the preferred lookup table has 3747 entries and is illustrated in Table 3. For each entry of twelve code symbols y1, there is an output bit set x'. Thus, to decode code symbols y', twelve consecutive code symbols y' are loaded into sliding window 704. The entry corresponding to those twelve code symbols y' is located in the lookup table and the corresponding data bit set x' is output. To determine the next output data bit set x', sliding window 704 is 'slid' one code symbol set y' into the future (i.e., in one embodiment, a next code symbol set y' is shifted into window 704 and the oldest shifted out) and the lookup process is repeated. This sliding process continues as long as code symbols y' are provided to sliding block decoder 608.
In one embodiment, the contents of window 704 are real-valued and, therefore, the table entry retrieved is the entry that is closest in squared Euclidean distance. Specifically, for a given window w = (w1,...,wI2), the distance d for each table entry tj is computed as:
Figure imgf000038_0001
where, tj i is the i'th component of the j'th table entry. The window w is then decoded to the table entry with the minimum distance dj
Other embodiments are contemplated where the contents of window 704 are used as an address or used to generate an address of an entry in a memory, where the contents of that entry contain the appropriate output data bit set x'.
The complexity of the decoding process can be reduced significantly by making hard decisions regarding read signal amplitudes. Specifically, in one embodiment, the read signal amplitudes z' are rounded-off or quantized to be one of the nine permissible amplitude levels. Even though this results in a decrease in the performance of the decoder it can significantly reduce its complexity: that is, the table can be a true lookup table requiring no distance calculations.
Table 3
Window Contents X' WindowContents X' xxxx 0010 0100 00000 xoox 0000 1001 01000 xxxx 0010 0200 00000 xoox 0000 1002 01000 xxxx 0010 0001 00000 xoox 0000 1003 01000 xxxx 0010 0002 00000 xoox 0000 1004 01000 xxxx 0010 0003 00000 ooox 0000 0300 01001 xxxx 0010 0004 00000 ooox 0000 0400 01001 xxxx 0020 0100 00001 ooox 0000 1005 01001 xxxx 0020 0200 00001 ooox 0000 1006 01001 xxxx 0020 0001 00001 ooox 0000 1007 01001 xxxx 0020 0002 00001 ooox 0000 1008 01001 xxxx 0020 0003 00001 xoox 0000 0300 01001 xxxx 0020 0004 00001 xoox 0000 0400 01001 xxxx 0010 0300 00010 xoox 0000 1005 01001 xxxx 0010 0400 00010 xoox 0000 1006 01001 xxxx 0010 0005 00010 xoox 0000 1007 01001 xxxx 0010 0006 00010 xoox 0000 1008 01001 xxxx 0010 0007 00010 ooox 0000 0500 01010 xxxx 0010 0008 00010 ooox 0000 0600 01010 xxxx 0020 0300 00011 ooox 0000 2001 01010 xxxx 0020 0400 00011 ooox 0000 2002 01010 xxxx 0020 0005 00011 ooox 0000 2003 01010 xxxx 0020 0006 00011 ooox 0000 2004 01010 xxxx 0020 0007 00011 xoox 0000 0500 01010 xxxx 0020 0008 00011 xoox 0000 0600 01010 xxxx 0010 0010 00100 xoox 0000 2001 01010 xxxx 0010 0020 00100 xoox 0000 2002 01010 xxxx 0010 0500 00100 xoox 0000 2003 01010 xxxx 0010 0600 00100 xoox 0000 2004 01010 xxxx 0020 0010 00101 ooox 0000 0700 01011 xxxx 0020 0020 00101 ooox 0000 0800 01011 xxxx 0020 0500 00101 ooox 0000 2005 01011 xxxx 0020 0600 00101 ooox 0000 2006 01011 xxxx 0010 0060 00110 ooox 0000 2007 01011 xxxx 0010 0070 00110 ooox 0000 2008 01011 xxxx 0010 0080 00110 xoox 0000 0700 01011 xxxx 0010 0030 00110 xoox 0000 0800 01011 xxxx 0010 0000 00110 xoox 0000 2005 01011 xxxx 0020 0060 00111 xoox 0000 2006 01011 xxxx 0020 0070 00111 xoox 0000 2007 01011 xxxx 0020 0080 00111 xoox 0000 2008 01011 xxxx 0020 0030 00111 ooox 0000 5001 01100 xxxx 0020 0000 00111 ooox 0000 5002 01100 ooox 0000 0100 01000 ooox 0000 5003 01100 ooox oooo 0200 01000 ooox 0000 5004 01100 ooox 0000 1001 01000 ooox 0000 5005 01100 ooox 0000 1002 01000 ooox 0000 5006 01100 ooox 0000 1003 01000 ooox 0000 5007 01100 ooox 0000 1004 01000 ooox 0000 5008 01100 xoox 0000 0100 01000 ooox 0000 6001 01100 xoox 0000 0200 01000 ooox 0000 6002 01100
Figure imgf000040_0001
Figure imgf000041_0001
Table 3 (cont.)
WindowContents X' WindowContents X'
XOOX 0000 4005 11011 xxxx 0040 0020 00100
XOOX 0000 4006 11011 xxxx 0040 0500 00100
XOOX 0000 4007 11011 xxxx 0040 0600 00100 xoox 0000 4008 11011 xxxx 0050 0010 00101 xxxx 0030 0100 11100 xxxx 0050 0020 00101 xxxx 0030 0200 11100 xxxx 0050 0500 00101
XXXX 0030 0001 11100 xxxx 0050 0600 00101
XXXX 0030 0002 11100 xxxx 0040 0060 00110
XXXX 0030 0003 11100 xxxx 0040 0070 00110 xxxx 0030 0004 11100 xxxx 0040 0080 00110 xxxx 0030 0300 11101 xxxx 0040 0030 00110 xxxx 0030 0400 11101 xxxx 0040 0000 00110 xxxx 0030 0005 11101 xxxx 0050 0060 00111 xxxx 0030 0006 11101 xxxx 0050 0070 00111 xxxx 0030 0007 11101 xxxx 0050 0080 00111 xxxx 0030 0008 11101 xxxx 0050 0030 00111 xxxx 0030 0010 11110 xxxx 0050 0000 00111 xxxx 0030 0020 11110 xxxx 0040 0040 01000 xxxx 0030 0500 11110 xxxx 0040 0050 01000 xxxx 0030 0600 11110 xxxx 0040 0700 01000 xxxx 0030 0060 11111 xxxx 0040 0800 01000 xxxx 0030 0070 11111 xxxx 0050 0040 01001 xxxx .0030 0080 11111 xxxx 0050 0050 01001 xxxx 0030 0030 11111 xxxx 0050 0700 01001 xxxx 0030 0000 11111 xxxx 0050 0800 01001 xxxx 0040 0100 00000 xxxx 0060 0100 01010 xxxx 0040 0200 00000 xxxx 0060 0200 01010 xxxx 0040 0001 00000 xxxx 0060 0001 01010 xxxx 0040 0002 00000 xxxx 0060 0002 01010 xxxx 0040 0003 00000 xxxx 0060 0003 01010 xxxx 0040 0004 00000 xxxx 0060 0004 01010 xxxx 0050 0100 00001 xxxx 0070 0100 01011 xxxx 0050 0200 00001 xxxx 0070 0200 01011 xxxx 0050 0001 00001 xxxx 0070 0001 01011 xxxx 0050 0002 00001 xxxx 0070 0002 01011 xxxx 0050 0003 00001 xxxx 0070 0003 01011 xxxx 0050 0004 00001 xxxx 0070 0004 01011 xxxx 0040 0300 00010 xxxx 0060 0300 01100 xxxx 0040 0400 00010 xxxx 0060 0400 01100 xxxx 0040 0005 00010 xxxx 0060 0005 01100 xxxx 0040 0006 00010 xxxx 0060 0006 01100 xxxx 0040 0007 00010 xxxx 0060 0007 01100 xxxx 0040 0008 00010 xxxx 0060 0008 01100 xxxx 0050 0300 00011 xxxx 0070 0300 01101 xxxx 0050 0400 00011 xxxx 0070 0400 01101 ' xxxx 0050 0005 00011 xxxx 0070 0005 01101 xxxx 0050 0006 00011 xxxx 0070 0006 01101 xxxx 0050 0007 00011 xxxx 0070 0007 01101 xxxx 0050 0008 00011 xxxx 0070 0008 01101 xxxx 0040 0010 00100 xxxx 0060 0010 OHIO
Figure imgf000043_0001
Table 3 (cont.)
WindowContents X' WindowContents X'
XXXX 0007 0005 11110 xxxx 0100 0800 00110 xxxx 0007 0006 11110 xxxx 0100 2005 00110 xxxx 0007 0007 11110 xxxx 0100 2006 00110 xxxx 0007 0008 11110 xxxx 0100 2007 00110 xxxx 0008 0040 11111 xxxx 0100 2008 00110 xxxx 0008 0050 11111 xxxx 0200 0700 00111 xxxx 0008 0060 11111 xxxx 0200 0800 00111 xxxx 0008 0070 11111 xxxx 0200 2005 00111 xxxx 0008 0080 11111 xxxx 0200 2006 00111 xxxx 0008 0005 11111 xxxx 0200 2007 00111 xxxx 0008 0006 11111 xxxx 0200 2008 00111 xxxx 0008 0007 11111 xxxx 0100 1000 01000 xxxx 0008 0008 11111 xxxx 0100 2000 01000 xxxx 0100 0100 00000 xxxx 0100 3001 01000 xxxx 0100 0200 00000 xxxx 0100 3002 01000 xxxx 0100 1001 00000 xxxx 0100 3003 01000 xxxx 0100 1002 00000 xxxx 0100 3004 01000 xxxx 0100 1003 00000 xxxx 0200 1000 01001 xxxx 0100 1004 00000 xxxx 0200 2000 01001 xxxx 0200 0100 00001 xxxx 0200 3001 01001 xxxx 0200 0200 00001 xxxx 0200 3002 01001 xxxx 0200 1001 00001 xxxx 0200 3003 01001 xxxx 0200 1002 00001 xxxx 0200 3004 01001 xxxx 0200 1003 00001 xxxx 0100 3000 01010 xxxx 0200 1004 00001 xxxx 0100 4000 01010 xxxx 0100 0300 00010 xxxx 0100 3005 01010 xxxx 0100 0400 00010 xxxx 0100 3006 01010 xxxx 0100 1005 00010 xxxx 0100 3007 01010 xxxx 0100 1006 00010 xxxx 0100 3008 01010 xxxx 0100 1007 00010 xxxx 0200 3000 01011 xxxx 0100 1008 00010 xxxx 0200 4000 01011 xxxx 0200 0300 00011 xxxx 0200 3005 01011 xxxx 0200 0400 00011 xxxx 0200 3006 01011 xxxx 0200 1005 00011 xxxx 0200 3007 01011 xxxx 0200 1006 00011 xxxx 0200 3008 01011 xxxx 0200 1007 00011 xxxx 0100 5000 01100 xxxx 0200 1008 00011 xxxx 0100 6000 01100 xxxx 0100 0500 00100 xxxx 0100 4001 01100 xxxx 0100 0600 00100 xxxx 0100 4002 01100 xxxx 0100 2001 00100 xxxx 0100 4003 01100 xxxx 0100 2002 00100 xxxx 0100 4004 01100 xxxx 0100 2003 00100 xxxx 0200 5000 01101 xxxx 0100 2004 00100 xxxx 0200 6000 01101 xxxx 0200 0500 00101 xxxx 0200 4001 01101 xxxx 0200 0600 00101 xxxx 0200 4002 01101 xxxx 0200 2001 00101 xxxx 0200 4003 01101 xxxx 0200 2002 00101 xxxx 0200 4004 01101 xxxx 0200 2003 00101 xxxx 0100 7000 OHIO xxxx 0200 2004 00101 xxxx 0100 8000 OHIO xxxx 0100 0700 00110 xxxx 0100 4005 OHIO
Figure imgf000045_0001
Figure imgf000046_0001
Table 3 (cont.)
WindowContents X' WindowContents X' xxxx 0300 0600 00100 xxxx 0300 4002 01100 xxxx 0300 2001 00100 xxxx 0300 4003 01100 xxxx 0300 2002 00100 xxxx 0300 4004 01100 xxxx 0300 2003 00100 xxxx 0400 5000 01101 xxxx 0300 2004 00100 xxxx 0400 6000 01101 xxxx 0400 0500 00101 xxxx 0400 4001 01101 xxxx 0400 0600 00101 xxxx 0400 4002 01101 xxxx 0400 2001 00101 xxxx 0400 4003 01101 xxxx 0400 2002 00101 xxxx 0400 4004 01101 xxxx 0400 2003 00101 xxxx 0300 7000 OHIO xxxx 0400 2004 00101 xxxx 0300 8000 OHIO xxxx 0300 0700 00110 xxxx 0300 4005 OHIO xxxx 0300 0800 00110 xxxx 0300 4006 OHIO xxxx 0300 2005 00110 xxxx 0300 4007 OHIO xxxx 0300 2006 00110 xxxx 0300 4008 OHIO xxxx 0300 2007 00110 xxxx 0400 7000 01111 xxxx 0300 2008 00110 xxxx 0400 8000 01111 xxxx 0400 0700 00111 xxxx 0400 4005 01111 xxxx 0400 0800 00111 xxxx 0400 4006 01111 xxxx 0400 2005 00111 xxxx 0400 4007 01111 xxxx 0400 2006 00111 xxxx 0400 4008 01111 xxxx 0400 2007 00111 xxxx 0300 5001 10000 xxxx 0400 2008 00111 xxxx 0300 5002 10000 xxxx 0300 1000 01000 xxxx 0300 5003 10000 xxxx 0300 2000 01000 xxxx 0300 5004 10000 xxxx 0300 3001 01000 xxxx 0300 5005 10000 xxxx 0300 3002 01000 xxxx 0300 5006 10000 xxxx 0300 3003 01000 xxxx 0300 5007 10000 xxxx 0300 3004 01000 xxxx 0300 5008 10000 xxxx 0400 1000 01001 xxxx 0300 6001 10000 xxxx 0400 2000 01001 xxxx 0300 6002 10000 xxxx 0400 3001 01001 xxxx 0300 6003 10000 xxxx 0400 3002 01001 xxxx 0300 6004 10000 xxxx 0400 3003 01001 xxxx 0300 6005 10000 xxxx 0400 3004 01001 xxxx 0300 6006 10000 xxxx 0300 3000 01010 xxxx 0300 6007 10000 xxxx 0300 4000 01010 xxxx 0300 6008 10000 xxxx 0300 3005 01010 xxxx 0400 5001 10001 xxxx 0300 3006 01010 xxxx 0400 5002 10001 xxxx 0300 3007 01010 xxxx 0400 5003 10001 xxxx 0300 3008 01010 xxxx 0400 5004 10001 xxxx 0400 3000 01011 xxxx 0400 5005 10001 xxxx 0400 4000 ' 01011 xxxx 0400 5006 10001 xxxx 0400 3005 01011 xxxx 0400 5007 10001 xxxx 0400 3006 01011 xxxx 0400 5008 10001 xxxx 0400 3007 01011 xxxx 0400 6001 10001 xxxx 0400 3008 01011 xxxx 0400 6002 10001 xxxx 0300 5000 01100 xxxx 0400 6003 10001 xxxx 0300 6000 01100 xxxx 0400 6004 10001 xxxx 0300 4001 01100 xxxx 0400 6005 10001 Table 3 (cont.)
WindowContents X' WindowContents X'
XXXX 0400 6006 10001 xxxx 0400 0004 10101 xxxx 0400 6007 10001 xxxx 0300 0040 10110 xxxx 0400 6008 10001 xxxx 0300 0050 10110 xxxx 0300 7001 10010 xxxx 0300 0060 10110 xxxx 0300 7002 10010 xxxx 0300 0070 10110 xxxx 0300 7003 10010 xxxx 0300 0080 10110 xxxx 0300 7004 10010 xxxx 0300 0005 10110 xxxx 0300 7005 10010 xxxx 0300 0006 10110 xxxx 0300 7006 10010 xxxx 0300 0007 10110 xxxx 0300 7007 10010 xxxx 0300 0008 10110 xxxx 0300 7008 10010 xxxx 0400 0040 10111 xxxx 0300 8001 10010 xxxx 0400 0050 10111 xxxx 0300 8002 10010 xxxx 0400 0060 10111 xxxx 0300 8003 10010 xxxx 0400 0070 10111 xxxx 0300 8004 10010 xxxx 0400 0080 10111 xxxx 0300 8005 10010 xxxx 0400 0005 10111 xxxx 0300 8006 10010 xxxx 0400 0006 10111 xxxx 0300 8007 10010 xxxx 0400 0007 10111 xxxx 0300 8008 10010 xxxx 0400 0008 10111 xxxx 0400 7001 10011 xxxx 0005 0010 11000 xxxx 0400 7002 10011 xxxx 0005 0020 11000 xxxx 0400 7003 10011 xxxx 0005 0030 11000 xxxx 0400 7004 10011 xxxx 0005 0000 11000 xxxx 0400 7005 10011 xxxx 0005 0001 11000 xxxx 0400 7006 10011 xxxx 0005 0002 11000 xxxx 0400 7007 10011 xxxx 0005 0003 11000 xxxx 0400 7008 10011 xxxx 0005 0004 11000 xxxx 0400 8001 10011 xxxx 0006 0010 11001 xxxx 0400 8002 10011 xxxx 0006 0020 11001 xxxx 0400 8003 10011 xxxx 0006 0030 11001 xxxx 0400 8004 10011 xxxx 0006 0000 11001 xxxx 0400 8005 10011 xxxx 0006 0001 11001 xxxx 0400 8006 10011 xxxx 0006 0002 11001 xxxx 0400 8007 10011 xxxx 0006 0003 11001 xxxx 0400 8008 10011 xxxx 0006 0004 11001 xxxx 0300 0010 10100 xxxx 0007 0010 11010 xxxx 0300 0020 10100 xxxx 0007 0020 11010 xxxx 0300 0030 10100 xxxx 0007 0030 11010 xxxx 0300 0000 10100 xxxx 0007 0000 11010 xxxx 0300 0001 10100 xxxx 0007 0001 11010 xxxx 0300 0002 10100 xxxx 0007 0002 11010 xxxx 0300 0003 10100 xxxx 0007 0003 11010 xxxx 0300 0004 10100 xxxx 0007 0004 11010 xxxx 0400 0010 10101 xxxx 0008 0010 11011 xxxx 0400 0020 10101 xxxx 0008 0020 11011 xxxx 0400 0030 10101 xxxx 0008 0030 11011 xxxx 0400 0000 10101 xxxx 0008 0000 11011 xxxx 0400 0001 10101 xxxx 0008 0001 11011 xxxx 0400 0002 10101 xxxx 0008 0002 11011 xxxx 0400 0003 10101 xxxx 0008 0003 11011 Table 3 (cont.)
Window Contents X' WindowContents X' xxxx 0008 0004 11011 xxxx 0010 0400 00010 xxxx 0005 0040 11100 xxxx 0010 0005 00010 xxxx 0005 0050 11100 xxxx 0010 0006 00010 xxxx 0005 0060 11100 xxxx 0010 0007 00010 xxxx 0005 0070 11100 xxxx 0010 0008 00010 xxxx 0005 0080 11100 xxxx 0020 0300 00011 xxxx 0005 0005 11100 xxxx 0020 0400 00011 xxxx 0005 0006 11100 xxxx 0020 0005 00011 xxxx 0005 0007 11100 xxxx 0020 0006 00011 xxxx 0005 0008 11100 xxxx 0020 0007 00011 xxxx 0006 0040 11101 xxxx 0020 0008 00011 xxxx 0006 0050 11101 xxxx 0010 0010 00100 xxxx 0006 0060 11101 xxxx 0010 0020 00100 xxxx 0006 0070 11101 xxxx 0010 0500 00100 xxxx 0006 0080 11101 xxxx 0010 0600 00100 xxxx 0006 0005 11101 xxxx 0020 0010 00101 xxxx 0006 0006 11101 xxxx 0020 0020 00101 xxxx 0006 0007 11101 xxxx 0020 0500 00101 xxxx 0006 0008 11101 xxxx 0020 0600 00101 xxxx 0007 0040 11110 xxxx 0010 0060 00110 xxxx 0007 0050 11110 xxxx 0010 0070 00110 xxxx 0007 0060 11110 xxxx 0010 0080 00110 xxxx 0007 0070 11110 xxxx 0010 0030 00110 xxxx 0007 0080 11110 xxxx 0010 0000 00110 xxxx 0007 0005 11110 xxxx 0020 0060 00111 xxxx 0007 0006 11110 xxxx 0020 0070 00111 xxxx 0007 0007 11110 xxxx 0020 0080 00111 xxxx 0007 0008 11110 xxxx 0020 0030 00111 xxxx 0008 0040 11111 xxxx 0020 0000 00111 xxxx 0008 0050 11111 xxxx 0500 0100 01000 xxxx 0008 0060 11111 xxxx 0500 0200 01000 xxxx 0008 0070 11111 xxxx 0500 1001 01000 xxxx 0008 0080 11111 xxxx 0500 1002 01000 xxxx 0008 0005 11111 xxxx 0500 1003 01000 xxxx 0008 0006 11111 xxxx 0500 1004 01000 xxxx 0008 0007 11111 xxxx 0600 0100 01001 xxxx 0008 0008 11111 xxxx 0600 0200 01001 xxxx 0010 0100 00000 xxxx 0600 1001 01001 xxxx 0010 0200 00000 xxxx 0600 1002 01001 xxxx 0010 0001 00000 xxxx 0600 1003 01001 xxxx 0010 0002 00000 xxxx 0600 1004 01001 xxxx 0010 0003 00000 xxxx 0500 0300 01010 xxxx 0010 0004 00000 xxxx 0500 0400 01010 xxxx 0020 0100 00001 xxxx 0500 1005 01010 xxxx 0020 0200 00001 xxxx 0500 1006 01010 xxxx 0020 0001 00001 xxxx 0500 1007 01010 xxxx 0020 0002 00001 xxxx 0500 1008 01010 xxxx 0020 0003 00001 xxxx 0600 0300 01011 xxxx 0020 0004 00001 xxxx 0600 0400 01011 xxxx 0010 0300 00010 xxxx 0600 1005 01011
Figure imgf000050_0001
Figure imgf000051_0001
Table 3 (cont.)
Window Contents X' Window Contents X' xxxx 0040 0600 00100 xxxx 0800 2004 01101 xxxx 0050 0010 00101 xxxx 0700 0700 OHIO xxxx 0050 0020 00101 xxxx 0700 0800 OHIO xxxx 0050 0500 00101 xxxx 0700 2005 OHIO xxxx 0050 0600 00101 xxxx 0700 2006 OHIO xxxx 0040 0060 00110 xxxx 0700 2007 OHIO xxxx 0040 0070 00110 xxxx 0700 2008 OHIO xxxx 0040 0080 00110 xxxx 0800 0700 01111 xxxx 0040 0030 00110 xxxx 0800 0800 01111 xxxx 0040 0000 00110 xxxx 0800 2005 01111 xxxx 0050 0060 00111 xxxx 0800 2006 01111 xxxx 0050 0070 00111 xxxx 0800 2007 01111 xxxx 0050 0080 00111 xxxx 0800 2008 01111 xxxx 0050 0030 00111 xxxx 0700 1000 10000 xxxx 0050 0000 00111 xxxx 0700 2000 10000 xxxx 0700 0100 01000 xxxx 0700 3001 10000 xxxx 0700 0200 01000 xxxx 0700 3002 10000 xxxx 0700 1001 01000 xxxx 0700 3003 10000 xxxx 0700 1002 01000 xxxx 0700 3004 10000 xxxx 0700 1003 01000 xxxx 0800 1000 10001 xxxx 0700 1004 01000 xxxx 0800 2000 10001 xxxx 0800 0100 01001 xxxx 0800 3001 10001 xxxx 0800 0200 01001 xxxx 0800 3002 10001 xxxx 0800 1001 01001 xxxx 0800 3003 10001 xxxx 0800 1002 01001 xxxx 0800 3004 10001 xxxx 0800 1003 01001 xxxx 0700 3000 10010 xxxx 0800 1004 01001 xxxx 0700 4000 10010 xxxx 0700 0300 01010 xxxx 0700 3005 10010 xxxx 0700 0400 01010 xxxx 0700 3006 10010 xxxx 0700 1005 01010 xxxx 0700 3007 10010 xxxx 0700 1006 01010 xxxx 0700 3008 10010 xxxx 0700 1007 01010 xxxx 0800 3000 10011 xxxx 0700 1008 01010 xxxx 0800 4000 10011 xxxx 0800 0300 01011 xxxx 0800 3005 10011 xxxx 0800 0400 01011 xxxx 0800 3006 10011 xxxx 0800 1005 01011 xxxx 0800 3007 10011 xxxx 0800 1006 01011 xxxx 0800 3008 10011 xxxx 0800 1007 01011 xxxx 0700 5000 10100 xxxx 0800 1008 01011 xxxx 0700 6000 10100 xxxx 0700 0500 01100 xxxx 0700 4001 10100 xxxx 0700 0600 01100 xxxx 0700 4002 10100 xxxx 0700 2001 01100 xxxx 0700 4003 10100 xxxx 0700 2002 01100 xxxx 0700 4004 10100 xxxx 0700 2003 01100 xxxx 0800 5000 10101 xxxx 0700 2004 01100 xxxx 0800 6000 10101 xxxx 0800 0500 01101 xxxx 0800 4001 10101 xxxx 0800 0600 01101 xxxx 0800 4002 10101 xxxx 0800 2001 01101 xxxx 0800 4003 10101 xxxx 0800 2002 01101 xxxx 0800 4004 10101 xxxx 0800 2003 01101 xxxx 0700 7000 10110
Figure imgf000053_0001
Figure imgf000054_0001
Figure imgf000055_0001
Table 3 (cont.)
WindowContents X' WindowContents X' xxxx 2003 0005 00110 xxxx 2005 0005 00100 xxxx 2003 0006 00110 xxxx 2005 0006 00100 xxxx 2003 0007 00110 xxxx 2005 0007 00100 xxxx 2003 0008 00110 xxxx 2005 0008 00100 xxxx 2004 0040 00111 xxxx 2006 0040 00101 xxxx 2004 0050 00111 xxxx 2006 0050 00101 xxxx 2004 0060 00111 xxxx 2006 0060 00101 xxxx 2004 0070 00111 xxxx 2006 0070 00101 xxxx 2004 0080 00111 xxxx 2006 0080 00101 xxxx 2004 0005 00111 xxxx 2006 0005 00101 xxxx 2004 0006 00111 xxxx 2006 0006 00101 xxxx 2004 0007 00111 xxxx 2006 0007 00101 xxxx 2004 0008 00111 xxxx 2006 0008 00101 xxxx 2005 0010 00000 xxxx 2007 0040 00110 xxxx 2005 0020 00000 xxxx 2007 0050 00110 xxxx 2005 0030 00000 xxxx 2007 0060 00110 xxxx 2005 0000 00000 xxxx 2007 0070 00110 xxxx 2005 0001 00000 xxxx 2007 0080 00110 xxxx 2005 0002 00000 xxxx 2007 0005 00110 xxxx 2005 0003 00000 xxxx 2007 0006 00110 xxxx 2005 0004 00000 xxxx 2007 0007 00110 xxxx 2006 0010 00001 xxxx 2007 0008 00110 xxxx 2006 0020 00001 xxxx 2008 0040 00111 xxxx 2006 0030 00001 xxxx 200'8 0050 00111 xxxx 2006 0000 00001 xxxx 2008 0060 00111 xxxx 2006 0001 00001 xxxx 2008 0070 00111 xxxx 2006 0002 00001 xxxx 2008 0080 00111 xxxx 2006 0003 00001 xxxx 2008 0005 00111 xxxx 2006 0004 00001 xxxx 2008 0006 00111 xxxx 2007 0010 00010 xxxx 2008 0007 00111 xxxx 2007 0020 00010 xxxx 2008 0008 00111 xxxx 2007 0030 00010 xxxx 1000 0100 00000 xxxx 2007 0000 00010 xxxx 1000 0200 00000 xxxx 2007 0001 00010 xxxx 1000 1001 00000 xxxx 2007 0002 00010 xxxx 1000 1002 00000 xxxx 2007 0003 00010 xxxx 1000 1003 00000 xxxx 2007 0004 00010 xxxx 1000 1004 00000 xxxx 2008 0010 00011 xxxx 2000 0100 00001 xxxx 2008 0020 00011 xxxx 2000 0200 00001 xxxx 2008 0030 00011 xxxx 2000 1001 00001 xxxx 2008 0000 00011 xxxx 2000 1002 00001 xxxx 2008 0001 00011 xxxx 2000 1003 00001 xxxx 2008 0002 00011 xxxx 2000 1004 00001 xxxx 2008 0003 00011 xxxx 1000 0300 00010 xxxx 2008 0004 00011 xxxx 1000 0400 00010 xxxx 2005 0040 00100 xxxx 1000 1005 00010 xxxx 2005 0050 00100 xxxx 1000 1006 00010 xxxx 2005 0060 00100 xxxx 1000 1007 00010 xxxx 2005 0070 00100 xxxx 1000 1008 00010 xxxx 2005 0080 00100 xxxx 2000 0300 00011 Table 3 (cont.)
WindowContents X' WindowContents X' xxxx 2000 0400 00011 xxxx 2000 3006 01011 xxxx 2000 1005 00011 xxxx 2000 3007 01011 xxxx 2000 1006 00011 xxxx 2000 3008 01011 xxxx 2000 1007 00011 xxxx 1000 5000 01100 xxxx 2000 1008 00011 xxxx 1000 6000 01100 xxxx 1000 0500 00100 xxxx 1000 4001 01100 xxxx 1000 0600 00100 xxxx 1000 4002 01100 xxxx 1000 2001 00100 xxxx 1000 4003 01100 xxxx 1000 2002 00100 xxxx 1000 4004 01100 xxxx 1000 2003 00100 xxxx 2000 5000 01101 xxxx 1000 2004 00100 xxxx 2000 6000 01101 xxxx 2000 0500 00101 xxxx 2000 4001 01101 xxxx 2000 0600 00101 xxxx 2000 4002 01101 xxxx 2000 2001 00101 xxxx 2000 4003 01101 xxxx 2000 2002 00101 xxxx 2000 4004 01101 xxxx 2000 2003 00101 xxxx 1000 7000 OHIO xxxx 2000 2004 00101 xxxx 1000 8000 OHIO xxxx 1000 0700 00110 xxxx 1000 4005 OHIO xxxx 1000 0800 00110 xxxx 1000 4006 OHIO xxxx 1000 2005 00110 xxxx 1000 4007 OHIO xxxx 1000 2006 00110 xxxx 1000 4008 OHIO xxxx 1000 2007 00110 xxxx 2000 7000 01111 xxxx 1000 2008 00110 xxxx 2000 8000 01111 xxxx 2000 0700 00111 xxxx 2000 4005 01111 xxxx 2000 0800 00111 xxxx 2000 4006 01111 xxxx 2000 2005 00111 xxxx 2000 4007 01111 xxxx 2000 2006 00111 xxxx 2000 4008 01111 xxxx 2000 2007 00111 xxxx 1000 5001 10000 xxxx 2000 2008 00111 xxxx 1000 5002 10000 xxxx 1000 1000 01000 xxxx 1000 5003 10000 xxxx 1000 2000 01000 xxxx 1000 5004 10000 xxxx 1000 3001 01000 xxxx 1000 5005 10000 xxxx 1000 3002 01000 xxxx 1000 5006 10000 xxxx 1000 3003 01000 xxxx 1000 5007 10000 xxxx 1000 3004 01000 xxxx 1000 5008 10000 xxxx 2000 1000 01001 xxxx 1000 6001 10000 xxxx 2000 2000 01001 xxxx 1000 6002 10000 xxxx 2000 3001 01001 xxxx 1000 6003 10000 xxxx 2000 3002 01001 xxxx 1000 6004 10000 xxxx 2000 3003 01001 xxxx 1000 6005 10000 xxxx 2000 3004 01001 xxxx 1000 6006 10000 xxxx 1000 3000 01010 xxxx 1000 6007 10000 xxxx 1000 4000 01010 xxxx 1000 6008 10000 xxxx 1000 3005 01010 xxxx 2000 5001 10001 xxxx 1000 3006 01010 xxxx 2000 5002 10001 xxxx 1000 3007 01010 xxxx 2000 5003 10001 xxxx 1000 3008 01010 xxxx 2000 5004 10001 xxxx 2000 3000 01011 xxxx 2000 5005 10001 xxxx 2000 4000 01011 xxxx 2000 5006 10001 xxxx 2000 3005 01011 xxxx 2000 5007 10001
Figure imgf000058_0001
Figure imgf000059_0001
Table 3 (cont.)
WindowContents X' WindowContents X' xxxx 4000 3002 01001 xxxx 3000 6004 10000 xxxx 4000 3003 01001 xxxx 3000 6005 10000 xxxx 4000 3004 01001 xxxx 3000 6006 10000 xxxx 3000 3000 01010 xxxx 3000 6007 10000 xxxx 3000 4000 01010 xxxx 3000 6008 10000 xxxx 3000 3005 01010 xxxx 4000 5001 10001 xxxx 3000 3006 01010 xxxx 4000 5002 10001 xxxx 3000 3007 01010 xxxx 4000 5003 10001 xxxx 3000 3008 01010 xxxx 4000 5004 10001 xxxx 4000 3000 01011 xxxx 4000 5005 10001 xxxx 4000 4000 01011 xxxx 4000 5006 10001 xxxx 4000 3005 01011 xxxx 4000 5007 10001 xxxx 4000 3006 01011 xxxx 4000 5008 10001 xxxx 4000 3007 01011 xxxx 4000 6001 10001 xxxx 4000 3008 01011 xxxx 4000 6002 10001 xxxx 3000 5000 01100 xxxx 4000 6003 10001 xxxx 3000 6000 01100 xxxx 4000 6004 10001 xxxx 3000 4001 01100 xxxx 4000 6005 10001 xxxx 3000 4002 01100 xxxx 4000 6006 10001 xxxx 3000 4003 01100 xxxx 4000 6007 10001 xxxx 3000 4004 01100 xxxx 4000 6008 10001 xxxx 4000 5000 01101 xxxx 3000 7001 10010 xxxx 4000 6000 01101 xxxx 3000 7002 10010 xxxx 4000 4001 01101 xxxx 3000 7003 10010 xxxx 4000 4002 01101 xxxx 3000 7004 10010 xxxx 4000 4003 01101 xxxx 3000 7005 10010 xxxx 4000 4004 01101 xxxx 3000 7006 10010 xxxx 3000 7000 OHIO xxxx 3000 7007 10010 xxxx 3000 8000 OHIO xxxx 3000 7008 10010 xxxx 3000 4005 OHIO xxxx 3000 8001 10010 xxxx 3000 4006 OHIO xxxx 3000 8002 10010 xxxx 3000 4007 OHIO xxxx 3000 8003 10010 xxxx 3000 4008 OHIO xxxx 3000 8004 10010 xxxx 4000 7000 01111 xxxx 3000 8005 10010 xxxx 4000 8000 01111 xxxx 3000 8006 10010 xxxx 4000 4005 01111 xxxx 3000 8007 10010 xxxx 4000 4006 01111 xxxx 3000 8008 10010 xxxx 4000 4007 01111 xxxx 4000 7001 10011 xxxx 4000 4008 01111 xxxx 4000 7002 10011 xxxx 3000 5001 10000 xxxx 4000 7003 10011 xxxx 3000 5002 10000 xxxx 4000 7004 10011 xxxx 3000 5003 10000 xxxx 4000 7005 10011 xxxx 3000 5004 10000 xxxx 4000 7006 10011 xxxx 3000 5005 10000 xxxx 4000 7007 10011 xxxx 3000 5006 10000 xxxx 4000 7008 10011 xxxx 3000 5007 10000 xxxx 4000 8001 10011 xxxx 3000 5008 10000 xxxx 4000 8002 10011 xxxx 3000 6001 10000 xxxx 4000 8003 10011 xxxx 3000 6002 10000 xxxx 4000 8004 10011 xxxx 3000 6003 10000 xxxx 4000 8005 10011 Table 3 (cont.)
WindowContents X' WindowContents X'
XXXX 4000 8006 10011 xxxx 3006 0002 11001 xxxx 4000 8007 10011 xxxx 3006 0003 11001 xxxx 4000 8008 10011 xxxx 3006 0004 11001 xxxx 3000 0010 10100 xxxx 3007 0010 11010 xxxx 3000 0020 10100 xxxx 3007 0020 11010 xxxx 3000 0030 10100 xxxx 3007 0030 11010 xxxx 3000 0000 10100 xxxx 3007 0000 11010 xxxx 3000 0001 10100 xxxx 3007 0001 11010 xxxx 3000 0002 10100 xxxx 3007 0002 11010 xxxx 3000 0003 10100 xxxx 3007 0003 11010 xxxx 3000 0004 10100 xxxx 3007 0004 11010 xxxx 4000 0010 10101 xxxx 3008 0010 11011 xxxx 4000 0020 10101 xxxx 3008 0020 11011 xxxx 4000 0030 10101 xxxx 3008 0030 11011 xxxx 4000 0000 10101 xxxx 3008 0000 11011 xxxx 4000 0001 10101 xxxx 3008 0001 11011 xxxx 4000 0002 10101 xxxx 3008 0002 11011 xxxx 4000 0003 10101 xxxx 3008 0003 11011 xxxx 4000 0004 10101 xxxx 3008 0004 11011 xxxx 3000 0040 10110 xxxx 3005 0040 11100 xxxx 3000 0050 10110 xxxx 3005 0050 11100 xxxx 3000 0060 10110 xxxx 3005 0060 11100 xxxx 3000 0070 10110 xxxx 3005 0070 11100 xxxx 3000 0080 10110 xxxx 3005 0080 11100 xxxx 3000 0005 10110 xxxx 3005 0005 11100 xxxx 3000 0006 10110 xxxx 3005 0006 11100 xxxx 3000 0007 10110 xxxx 3005 0007 11100 xxxx 3000 0008 10110 xxxx 3005 0008 11100 xxxx 4000 0040 10111 xxxx 3006 0040 11101 xxxx 4000 0050 10111 xxxx 3006 0050 11101 xxxx 4000 0060 10111 xxxx 3006 0060 11101 xxxx 4000 0070 10111 xxxx 3006 0070 11101 xxxx 4000 0080 10111 xxxx 3006 0080 11101 xxxx 4000 0005 10111 xxxx 3006 0005 11101 xxxx 4000 0006 10111 xxxx 3006 0006 11101 xxxx 4000 0007 10111 xxxx 3006 0007 11101 xxxx 4000 0008 10111 xxxx 3006 0008 11101 xxxx 3005 0010 11000 xxxx 3007 0040 11110 xxxx 3005 0020 11000 xxxx 3007 0050 11110 xxxx 3005 0030 11000 xxxx 3007 0060 11110 xxxx 3005 0000 11000 xxxx 3007 0070 11110 xxxx 3005 0001 11000 xxxx 3007 0080 11110 xxxx 3005 0002 11000 xxxx 3007 0005 11110 xxxx 3005 0003 11000 xxxx 3007 0006 11110 xxxx 3005 0004 11000 xxxx 3007 0007 11110 xxxx 3006 0010 11001 xxxx 3007 0008 11110 xxxx 3006 0020 11001 xxxx 3008 0040 11111 xxxx 3006 0030 11001 xxxx 3008 0050 11111 xxxx 3006 0000 11001 xxxx 3008 0060 11111 xxxx 3006 0001 11001 xxxx 3008 0070 11111 Table 3 (cont.)
WindowContents X' WindowContents X'
XXXX 3008 0080 11111 xxxx 6000 2006 00111 xxxx 3008 0005 11111 xxxx 6000 2007 00111 xxxx 3008 0006 11111 xxxx 6000 2008 00111 xxxx 3008 0007 11111 xxxx 5000 1000 01000 xxxx 3008 0008 11111 xxxx 5000 2000 01000 xxxx 5000 0100 00000 xxxx 5000 3001 01000 xxxx 5000 0200 00000 xxxx 5000 3002 01000 xxxx 5000 1001 00000 xxxx 5000 3003 01000 xxxx 5000 1002 00000 xxxx 5000 3004 01000 xxxx 5000 1003 00000 xxxx 6000 1000 01001 xxxx 5000 1004 00000 xxxx 6000 2000 01001 xxxx 6000 0100 00001 xxxx 6000 3001 01001 xxxx 6000 0200 00001 xxxx 6000 3002 01001 xxxx 6000 1001 00001 xxxx 6000 3003 01001 xxxx 6000 1002 00001 xxxx 6000 3004 01001 xxxx 6000 1003 00001 xxxx 5000 3000 01010 xxxx 6000 1004 00001 xxxx 5000 4000 01010 xxxx 5000 0300 00010 xxxx 5000 3005 01010 xxxx 5000 0400 00010 xxxx 5000 3006 01010 xxxx 5000 1005 00010 xxxx 5000 3007 01010 xxxx 5000 1006 00010 xxxx 5000 3008 01010 xxxx 5000 1007 00010 xxxx 6000 3000 01011 xxxx 5000 1008 00010 xxxx 6000 4000 01011 xxxx 6000 0300 00011 xxxx 6000 3005 01011 xxxx 6000 0400 00011 xxxx 6000 3006 01011 xxxx 6000 1005 00011 xxxx 6000 3007 01011 xxxx 6000 1006 00011 xxxx 6000 3008 01011 xxxx 6000 1007 00011 xxxx 5000 5000 01100 xxxx 6000 1008 00011 xxxx 5000 6000 01100 xxxx 5000 0500 00100 xxxx 5000 4001 01100 xxxx 5000 0600 00100 xxxx 5000 4002 01100 xxxx 5000 2001 00100 xxxx 5000 4003 01100 xxxx 5000 2002 00100 xxxx 5000 4004 01100 xxxx 5000 2003 00100 xxxx 6000 5000 01101 xxxx 5000 2004 00100 xxxx 6000 6000 01101 xxxx 6000 0500 00101 xxxx 6000 4001 01101 xxxx 6000 0600 00101 xxxx 6000 4002 01101 xxxx 6000 2001 00101 xxxx 6000 4003 01101 xxxx 6000 2002 00101 xxxx 6000 4004 01101 xxxx 6000 2003 00101 xxxx 5000 7000 OHIO xxxx 6000 2004 00101 xxxx 5000 8000 OHIO xxxx 5000 0700 00110 xxxx 5000 4005 OHIO xxxx 5000 0800 00110 xxxx 5000 4006 OHIO xxxx 5000 2005 00110 xxxx 5000 4007 OHIO xxxx 5000 2006 00110 xxxx 5000 4008 OHIO xxxx 5000 2007 00110 xxxx 6000 7000 01111 xxxx 5000 2008 00110 xxxx 6000 8000 01111 xxxx 6000 0700 00111 xxxx 6000 4005 01111 xxxx 6000 0800 00111 xxxx 6000 4006 01111 xxxx 6000 2005 00111 xxxx 6000 4007 01111
Figure imgf000063_0001
Figure imgf000064_0001
Figure imgf000065_0001
Table 3 (cont.)
Window Contents X' Window Contents X' xxxx 7000 7006 10010 xxxx 7000 0007 10110 xxxx 7000 7007 10010 xxxx 7000 0008 10110 xxxx 7000 7008 10010 xxxx 8000 0040 10111 xxxx 7000 8001 10010 xxxx 8000 0050 10111 xxxx 7000 8002 10010 xxxx 8000 0060 10111 xxxx 7000 8003 10010 xxxx 8000 0070 10111 xxxx 7000 8004 10010 xxxx 8000 0080 10111 xxxx 7000 8005 10010 xxxx 8000 0005 10111 xxxx 7000 8006 10010 xxxx 8000 0006 10111 xxxx 7000 8007 10010 xxxx 8000 0007 10111 xxxx 7000 8008 10010 xxxx 8000 0008 10111 xxxx 8000 7001 10011 xxxx 4005 0010 11000 xxxx 8000 7002 10011 xxxx 4005 0020 11000 xxxx 8000 7003 10011 xxxx 4005 0030 11000 xxxx 8000 7004 10011 xxxx 4005 0000 11000 xxxx 8000 7005 10011 xxxx 4005 0001 11000 xxxx 8000 7006 10011 xxxx 4005 0002 11000 xxxx 8000 7007 10011 xxxx 4005 0003 11000 xxxx 8000 7008 10011 xxxx 4005 0004 11000 xxxx 8000 8001 10011 xxxx 4006 0010 11001 xxxx 8000 8002 10011 xxxx 4006 0020 11001 xxxx 8000 8003 10011 xxxx 4006 0030 11001 xxxx 8000 8004 10011 xxxx 4006 0000 11001 xxxx 8000 8005 10011 xxxx 4006 00C1 11001 xxxx 8000 8006 10011 xxxx 4006 0002 11001 xxxx 8000 8007 10011 xxxx 4006 0003 11001 xxxx 8000 8008 10011 xxxx 4006 0004 11001 xxxx 7000 0010 10100 xxxx 4007 0010 11010 xxxx 7000 0020 10100 xxxx 4007 0020 11010 xxxx 7000 0030 10100 xxxx 4007 0030 11010 xxxx 7000 0000 10100 xxxx 4007 0000 11010 xxxx 7000 0001 10100 xxxx 4007 0001 11010 xxxx 7000 0002 10100 xxxx 4007 0002 11010 xxxx 7000 0003 10100 xxxx 4007 0003 11010 xxxx 7000 0004 10100 xxxx 4007 0004 11010 xxxx 8000 0010 10101 xxxx 4008 0010 11011 xxxx 8000 0020 10101 xxxx 4008 0020 11011 xxxx 8000 0030 10101 xxxx 4008 0030 11011 xxxx 8000 0000 10101 xxxx 4008 0000 11011 xxxx 8000 0001 10101 xxxx 4008 0001 11011 xxxx 8000 0002 10101 xxxx 4008 0002 11011 xxxx 8000 0003 10101 xxxx 4006 0003 11011 xxxx 8000 0004 10101 xxxx 4006 0004 11011 xxxx 7000 0040 10110 xxxx 4005 0040 11100 xxxx 7000 0050 10110 xxxx 4005 0050 11100 xxxx 7000 0060 10110 xxxx 4005 0060 11100 xxxx 7000 0070 10110 xxxx 4005 0070 11100 xxxx 7000 0080 10110 xxxx 4005 0080 11100 xxxx 7000 0005 10110 xxxx 4005 0005 11100 xxxx 7000 0006 10110 xxxx 4005 0006 11100
Figure imgf000067_0001
Figure imgf000068_0001
Figure imgf000069_0001
Table 3 (cont.)
Window Contents X' WindowContents X' xxxx 6008 0008 11111 xxxx 7002 0008 00101 xxxx 7001 0010 00000 xxxx 7003 0040 00110 xxxx 7001 0020 00000 xxxx 7003 0050 00110 xxxx 7001 0030 00000 xxxx 7003 0060 00110 xxxx 7001 0000 00000 xxxx 7003 0070 00110 xxxx 7001 0001 00000 xxxx 7003 0080 00110 xxxx 7001 0002 00000 xxxx 7003 0005 00110 xxxx 7001 0003 00000 xxxx 7003 0006 00110 xxxx 7001 0004 00000 xxxx 7003 0007 00110 xxxx 7002 0010 00001 xxxx 7003 0008 00110 xxxx 7002 0020 00001 xxxx 7004 0040 00111 xxxx 7002 0030 00001 xxxx 7004 0050 00111 xxxx 7002 0000 00001 xxxx 7004 0060 00111 xxxx 7002 0001 00001 xxxx 7004 0070 00111 xxxx 7002 0002 00001 xxxx 7004 0080 00111 xxxx 7002 0003 00001 xxxx 7004 0005 00111 xxxx 7002 0004 00001 xxxx 7004 0006 00111 xxxx 7003 0010 00010 xxxx 7004 0007 00111 xxxx 7003 0020 00010 xxxx 7004 0008 00111 xxxx 7003 0030 00010 xxxx 7005 0010 01000 xxxx 7003 0000 00010 xxxx 7005 0020 01000 xxxx 7003 0001 00010 xxxx 7005 0030 01000 xxxx 7003 0002 00010 xxxx 7005 0000 01000 xxxx 7003 0003 00010 xxxx 7005 0001 01000 xxxx 7003 0004 00010 xxxx 7005 0002 01000 xxxx 7004 0010 00011 xxxx 7005 0003 01000 xxxx 7004 0020 00011 xxxx 7005 0004 01000 xxxx 7004 0030 00011 xxxx 7006 0010 01001 xxxx 7004 0000 00011 xxxx 7006 0020 01001 xxxx 7004 0001 00011 xxxx 7006 0030 01001 xxxx 7004 0002 00011 xxxx 7006 0000 01001 xxxx 7004 0003 00011 xxxx 7006 0001 01001 xxxx 7004 0004 00011 xxxx 7006 0002 01001 xxxx 7001 0040 00100 xxxx 7006 0003 01001 xxxx 7001 0050 00100 xxxx 7006 0004 01001 xxxx 7001 0060 00100 xxxx 7007 0010 01010 xxxx 7001 0070 00100 xxxx 7007 0020 01010 xxxx 7001 0080 00100 xxxx 7007 0030 01010 xxxx 7001 0005 00100 xxxx 7007 0000 01010 xxxx 7001 0006 00100 xxxx 7007 0001 01010 xxxx 7001 0007 00100 xxxx 7007 0002 01010 xxxx 7001 0008 00100 xxxx 7007 0003 01010 xxxx 7002 0040 00101 xxxx 7007 0004 01010 xxxx 7002 0050 00101 xxxx 7008 0010 01011 xxxx 7002 0060 00101 xxxx 7008 0020 01011 xxxx 7002 0070 00101 xxxx 7008 0030 01011 xxxx 7002 0080 00101 xxxx 7008 0000 01011 xxxx 7002 0005 00101 xxxx 7008 0001 01011 xxxx 7002 0006 00101 xxxx 7008 0002 01011 xxxx 7002 0007 00101 xxxx 7008 0003 01011 Table 3 (cont.)
WindowContents X' WindowContents X'
XXXX 7008 0004 01011 xxxx 8002 0002 10001
XXXX 7005 0040 01100 xxxx 8002 0003 10001 xxxx 7005 0050 01100 xxxx 8002 0004 10001 xxxx 7005 0060 01100 xxxx 8003 0010 10010 xxxx 7005 0070 01100 xxxx 8003 0020 10010 xxxx 7005 0080 01100 xxxx 8003 0030 10010 xxxx 7005 0005 01100 xxxx 8003 0000 10010 xxxx 7005 0006 01100 xxxx 8003 0001 10010 xxxx 7005 0007 01100 xxxx 8003 0002 10010 xxxx 7005 0008 01100 xxxx 8003 0003 10010 xxxx 7006 0040 01101 xxxx 8003 0004 10010 xxxx 7006 0050 01101 xxxx 8004 0010 10011 xxxx 7006 0060 01101 xxxx 8004 0020 10011 xxxx 7006 0070 01101 xxxx 8004 0030 10011 xxxx 7006 0080 01101 xxxx 8004 0000 10011 xxxx 7006 0005 01101 xxxx 8004 0001 10011 xxxx 7006 0006 01101 xxxx 8004 0002 10011 xxxx 7006 0007 01101 xxxx 8004 0003 10011 xxxx 7006 0008 01101 xxxx 8004 0004 10011 xxxx 7007 0040 OHIO xxxx 8001 0040 10100 xxxx 7007 0050 OHIO xxxx 8001 0050 10100 xxxx 7007 0060 OHIO xxxx 8001 0060 10100 xxxx 7007 0070 OHIO xxxx 8001 0070 10100 xxxx 7007 0080 OHIO xxxx 8001 0080 10100 xxxx 7007 0005 OHIO xxxx 8001 0005 10100 xxxx 7007 0006 OHIO xxxx 8001 0006 10100 xxxx 7007 0007 OHIO xxxx 8001 0007 10100 xxxx 7007 0008 OHIO xxxx 8001 0008 10100 xxxx 7008 0040 01111 xxxx 8002 0040 10101 xxxx 7008 0050 01111 xxxx 8002 0050 10101 xxxx 7008 0060 01111 xxxx 8002 0060 10101 xxxx 7008 0070 01111 xxxx 8002 0070 10101 xxxx 7008 0080 01111 xxxx 8002 0080 10101 xxxx 7008 0005 01111 xxxx 8002 0005 10101 xxxx 7008 0006 01111 xxxx 8002 0006 10101 xxxx 7008 0007 01111 xxxx 8002 0007 10101 xxxx 7008 0008 01111 xxxx 8002 0008 10101 xxxx 8001 0010 10000 xxxx 8003 0040 10110 xxxx 8001 0020 10000 xxxx 8003 0050 10110 xxxx 8001 0030 10000 xxxx 8003 0060 10110 xxxx 8001 0000 10000 xxxx 8003 0070 10110 xxxx 8001 0001 10000 xxxx 8003 0080 10110 xxxx 8001 0002 10000 xxxx 8003 0005 10110 xxxx 8001 0003 10000 xxxx 8003 0006 10110 xxxx 8001 0004 10000 xxxx 8003 0007 10110 xxxx 8002 0010 10001 xxxx 8003 0008 10110 xxxx 8002 0020 10001 xxxx 8004 0040 10111 xxxx 8002 0030 10001 xxxx 8004 0050 10111 xxxx 8002 0000 10001 xxxx 8004 0060 10111 xxxx 8002 0001 10001 xxxx 8004 0070 10111 Table 3 (cont.)
Window Contents X' WindowContents X' xxxx 8004 0080 10111 xxxx 8006 0080 11101
XXXX 8004 0005 10111 xxxx 8006 0005 11101 xxxx 8004 0006 10111 xxxx 8006 0006 11101 xxxx 8004 0007 10111 xxxx 8006 0007 11101 xxxx 8004 0008 10111 xxxx 8006 0008 11101 xxxx 8005 0010 11000 xxxx 8007 0040 11110 xxxx 8005 0020 11000 xxxx 8007 0050 11110 xxxx 8005 0030 11000 xxxx 8007 0060 11110 xxxx 8005 0000 11000 xxxx 8007 0070 11110 xxxx 8005 0001 11000 xxxx 8007 0080 11110 xxxx 8005 0002 11000 xxxx 8007 0005 11110 xxxx 8005 0003 11000 xxxx 8007 0006 11110 xxxx 8005 0004 11000 xxxx 8007 0007 11110 xxxx 8006 0010 11001 xxxx 8007 0008 11110 xxxx 8006 0020 11001 xxxx 8008 0040 11111 xxxx 8006 0030 11001 xxxx 8008 0050 11111 xxxx 8006 0000 11001 xxxx 8008 0060 11111 xxxx 8006 0001 11001 xxxx 8008 0070 11111 xxxx 8006 0002 11001 xxxx 8008 0080 11111 xxxx 8006 0003 11001 xxxx 8008 0005 11111 xxxx 8006 0004 11001 xxxx 8008 0006 11111 xxxx 8007 0010 11010 xxxx 8008 0007 11111 xxxx 8007 0020 11010 xxxx 8008 0008 11111 xxxx 8007 0030 11010 0000 0000 5001 01000 xxxx 8007 0000 11010 0000 0000 5002 01000 xxxx 8007 0001 11010 0000 0000 5003 01000 xxxx 8007 0002 11010 0000 0000 5004 01000 xxxx 8007 0003 11010 0000 0000 5005 01000 xxxx 8007 0004 11010 0000 0000 5006 01000 xxxx 8008 0010 11011 0000 0000 5007 01000 xxxx 8008 0020 11011 0000 0000 5008 01000 xxxx 8008 0030 11011 0000 0000 6001 01000 xxxx 8008 0000 11011 0000 0000 6002 01000 xxxx 8008 0001 11011 0000 0000 6003 01000 xxxx 8008 0002 11011 0000 0000 6004 01000 xxxx 8008 0003 11011 0000 0000 6005 01000 xxxx 8008 0004 11011 0000 0000 6006 01000 xxxx 8005 0040 11100 0000 0000 6007 01000 xxxx 8005 0050 11100 0000 0000 6008 01000 xxxx 8005 0060 11100 0X00 0000 5001 01000 xxxx 8005 0070 11100 0X00 0000 5002 01000 xxxx 8005 0080 11100 0X00 0000 5003 01000 xxxx 8005 0005 11100 0X00 0000 5004 01000 xxxx 8005 0006 11100 0X00 0000 5005 01000 xxxx 8005 0007 11100 0X00 0000 5006 01000 xxxx 8005 0008 11100 0X00 0000 5007 01000 xxxx 8006 0040 11101 0X00 0000 5008 01000 xxxx 8006 0050 11101 0X00 0000 6001 01000 xxxx 8006 0060 11101 0X00 0000 6002 01000 xxxx 8006 0070 11101 0X00 0000 6003 01000 Table 3 (cont.)
WindowContents X' WindowContents X'
0X00 0000 6004 01000 0X00 0000 8006 01001
0X00 0000 6005 01000 0X00 0000 8007 01001
0X00 0000 6006 01000 0X00 0000 8008 01001
0X00 0000 6007 01000 xooo 0000 7001 01001
0X00 0000 6008 01000 xooo 0000 7002 01001 xooo 0000 5001 01000 xooo 0000 7003 01001 xooo 0000 5002 01000 xooo 0000 7004 01001 xooo 0000 5003 01000 xooo 0000 7005 01001 xooo 0000 5004 01000 xooo 0000 7006 01001 xooo 0000 5005 01000 xooo 0000 7007 01001 xooo 0000 5006 01000 xooo 0000 7008 01001 xooo 0000 5007 01000 xooo 0000 8001 01001 xooo 0000 5008 01000 xooo 0000 8002 01001 xooo 0000 6001 01000 xooo 0000 8003 01001 xooo 0000 6002 01000 xooo 0000 8004 01001 xooo 0000 6003 01000 xooo 0000 8005 01001 xooo 0000 6004 01000 xooo 0000 8006 01001 xooo 0000 6005 01000 xooo 0000 8007 01001 xooo 0000 6006 01000 xooo 0000 8008 01001 xooo 0000 6007 01000 xxxx 0010 0040 01010 xooo 0000 6008 01000 xxxx 0010 0050 01010
0000 0000 7001 01001 xxxx 0010 0700 01010
0000 0000 7002 01001 xxxx 0010 0800 01010
0000 0000 7003 01001 xxxx 0020 0040 01011
0000 0000 7004 01001 xxxx 0020 0050 01011
0000 0000 7005 01001 xxxx 0020 0700 01011
0000 0000 7006 01001 xxxx 0020 0800 01011
0000 oooo 7007 01001 0000 0000 0100 01100
0000 0000 7008 01001 0000 0000 0200 01100
0000 0000 8001 01001 0000 0000 1001 01100
0000 0000 8002 01001 0000 0000 1002 01100
0000 0000 8003 01001 0000 0000 1003 01100
0000 0000 8004 01001 0000 0000 1004 01100
0000 0000 8005 01001 0X00 0000 0100 01100
0000 0000 8006 01001 0X00 0000 0200 01100
0000 0000 8007 01001 0X00 0000 1001 01100
0000 0000 8008 01001 0X00 0000 1002 01100 oxoo 0000 7001 01001 0X00 0000 1003 01100
0X00 0000 7002 01001 0X00 0000 1004 01100
0X00 0000 7003 01001 xooo 0000 0100 01100
0X00 0000 7004 01001 xooo 0000 0200 01100
0X00 0000 7005 01001 xooo 0000 1001 01100
0X00 0000 7006 01001 xooo 0000 1002 01100
0X00 0000 7007 01001 xooo 0000 1003 01100
0X00 0000 7008 01001 xooo 0000 1004 01100
0X00 0000 8001 01001 0000 0000 0300 01101
0X00 0000 8002 01001 0000 0000 0400 01101
0X00 0000 8003 01001 0000 0000 1005 01101
0X00 0000 8004 01001 0000 0000 1006 01101
0X00 0000 8005 01001 0000 0000 1007 01101
Figure imgf000074_0001
Figure imgf000075_0001
Table 3 (cont.)
WindowContents X' WindowContents X'
00X0 0000 7000 01001 xxxx 0080 0700 10111
00X0 0000 8000 01001 xxxx 0080 0800 10111
00X0 0000 4005 01001 xxxx 0080 0060 11000
00X0 0000 4006 01001 xxxx 0080 0070 11000
00X0 0000 4007 01001 xxxx 0080 0080 11000
00X0 0000 4008 01001 xxxx 0080 0030 11000
XXXX 0080 0100 10100 xxxx 0080 0000 11000
XXXX 0080 0200 10100 ooxo 0000 3000 11001 xxxx 0080 0001 10100 00X0 0000 4000 11001 xxxx 0080 0002 10100 00X0 0000 3005 11001 xxxx 0080 0003 10100 00X0 0000 3006 11001 xxxx 0080 0004 10100 00X0 0000 3007 11001 xxxx 0080 0300 10101 00X0 0000 3008 11001 xxxx 0080 0400 10101 00X0 0000 5000 11010 xxxx 0080 0005 10101 00X0 0000 6000 11010 xxxx 0080 0006 10101 00X0 0000 4001 11010 xxxx 0080 0007 10101 ooxo 0000 4002 11010 xxxx 0080 0008 10101 00X0 0000 4003 11010 xxxx 0080 0010 10110 00X0 0000 4004 11010 xxxx 0080 0020 10110 xxxx 0030 0040 11011 xxxx 0080 0500 10110 xxxx 0030 0050 11011 xxxx 0080 0600 10110 xxxx 0030 0700 11011 xxxx 0080 0040 10111 xxxx 0030 0800 11011 xxxx 0080 0050 10111
7. Encoder Start-up and Shut-down
It should be noted that at the end of a data stream, there is a period of time during which window 704 is not full. For example, referring to FIG. 7, suppose that the code symbols '0000' are the last in the data stream. Thus when decoder 212 attempts to decode code symbols '0000', there are no future code symbols available. What is needed is a way to "shut-down" encoder 204.
FIG. 8 is a diagram illustrating encoder shut-down. In a preferred embodiment, encoder 204 is shut-down by appending a block of p=5 "stuffed" bits to the stream of input data bits; in a preferred embodiment, the stuffed bits are all zeros. Because the end of the input data stream may not coincide with the end of a block of p=5 input data bits, the number of stuffed bits varies. When this happens, stuffed bits are also added to complete the incomplete block of input data bits, as shown in FIG. 8.
It should also be noted that at the beginning of a data stream, there is a period of time during which window 704 is not full. For example, referring to FIG. 7, suppose that the code symbols '0001 ' are the first in the data stream. Thus when decoder 212 attempts to decode code symbols '0001', there are no past code symbols available. What is needed is a way to "start-up" encoder 204.
The present invention provides two ways to start-up encoder 204. In a first embodiment, a block of p=5 stuffed bits is inserted at the beginning of the input data stream; these stuffed bits provide the q=4 past code symbols required by decoder 212; in a preferred embodiment, the stuffed bits are all zeros. In a second embodiment, encoder 204 is started in a state that eliminates the need for past code symbols; in a preferred embodiment, encoder 204 is started in state 2.
8. Conclusion
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims

Whatls Claimed Is:
1. A method for encoding a series of binary input data bits x into an M=9 run-length limited (2,10) code having a rate R=5/4, to produce a series of code symbols y, the method comprising the steps of: receiving at a eighteen-state encoder an input data bit set x0 - x4 to be encoded into the M=9 run-length limited (2, 10) code; and generating in said encoder a code symbol set y0 - y3 based on said input data bit set x<) - x4 according to Table 1 , wherein said code symbol set y0 - y3 is generated based on the input data bit set x0 - x4 and the current state of said eighteen-state encoder when said data bit set x0 - x4 is received.
2. The method of claim 1, further comprising the step of: modulating a signal with waveform signal amplitudes to transmit a series of features across the channel, each feature being at a level corresponding to one of said waveform signal amplitudes; and wherein said generating step comprises the steps of: encoding the binary input data bits into an M-9 (2,10) code having a rate R=5/4 to produce a series of code symbols, each code symbol being at one of M levels, and each pair of non-zero code symbols having a minimum of two and a maximum of ten zeroes therebetween, said encoding step comprising the step of generating a code symbol set y0 - y3 for each input data bit set x0 - x4 according to Table 1 , wherein said code symbol set y0 - y3 is generated based on the input data bit set x<v - x4 and the current state of said eighteen-state encoder when said data bit set x0 - x4 is received; and generating in a waveform encoder waveform signal amplitudes based on said code symbols, wherein each said waveform signal amplitude is generated by modulo nine addition of a current code symbol with a previous waveform signal amplitude.
3. A method for converting binary input data bits into a series of waveform amplitudes, each amplitude being at one of M=9 levels, the method comprising the steps of: encoding the binary input data bits into an M=9 (2,10) code having a rate R=5/4 to produce a series of code symbols, each code symbol being at one of M levels, and each pair of non-zero code symbols having a minimum of two and a maximum often zeroes therebetween, said encoding step comprising the step of generating a code symbol set y0 - y3 for each input data bit set x0 - x4 according to Table 1 , wherein said code symbol set y0 - y3 is generated based on the input data bit set x0 - x4 and the current state of said eighteen-state encoder when said data bit set x0 - x4 is received; and generating in a waveform encoder waveform signal amplitudes based on said code symbols, wherein each said waveform signal amplitude is generated by modulo nine addition of a current code symbol with a previous waveform signal amplitude.
4. The method of claim 3, further comprising the step of modulating a signal with said waveform signal amplitudes to generate a series of features, each feature being at a level corresponding to a waveform signal amplitude; and wherein said waveform signal amplitudes modulate a write laser and wherein said modulated write laser writes said features onto a storage medium.
5. The method of claim 3, further comprising the step of modulating a signal with said waveform signal amplitudes to generate a series of features, each feature being at a level corresponding to a waveform signal amplitude; and wherein said waveform signal amplitudes modulate a transmitter and wherein said transmitter transmits said features over a communications channel.
6. The method of claim 3, further comprising the steps of: receiving said features to recover output waveform signal amplitudes; converting said output waveform signal amplitudes into output code symbols, wherein each output code symbol is at one of nine levels; and decoding said output code symbols to obtain output data bits, wherein said output data bits correspond to the binary input data.
7. The method of claim 6, wherein said step of decoding comprises the steps of: identifying with a sliding window a sequence of code symbols that represents a given code symbol set; and in a table comprising a number of entries corresponding to a number of possible unique sequences of code symbols, each entry identified by one of said possible unique sequences of code symbols, and wherein each entry identifies an output data bit set that is a decoded data bit set for the code symbol set represented by the sequence of code symbols that identifies that entry, looking up with said identified sequence of code symbols the output data bit set for said given code symbol set.
8. The method of claim 7, wherein said lookup table provides an output bit set x' for each sequence of code symbols y' according to Table 3.
9. The method of claim 7, wherein said look-up step comprises the step of determining, using a squared euclidean distance, which table entry is identified by a sequence of code symbols.
10. A method for decoding data on a channel, wherein said data has been encoded using an M=9 (2,10) code, comprising the steps of: reading the data to recover output waveform signal amplitudes; converting said output waveform signal amplitudes into output code symbols, wherein each output code symbol is at one of nine levels; and decoding said output code symbols to obtain output data bits, wherein said output data bits correspond to the encoded data.
11. The method of claim 10, wherein said decoding step comprises the steps of: identifying with a sliding window a sequence of code symbols that represents a given code symbol set; and in a table comprising a number of entries corresponding to a number of possible unique sequences of code symbols, each entry identified by one of said possible unique sequences of code symbols, and wherein each entry identifies an output data bit set that is a decoded data bit set for the code symbol set represented by the sequence of code symbols that identifies that entry, looking up with said identified sequence of code symbols the output data bit set for said given code symbol set.
12. The method of claim 11 , wherein said table provides an output bit set x' for each sequence of code symbols y' according to Table 3.
13. The method of claim 10, wherein said channel is a storage medium or a communications channel.
14. A system for encoding a series of binary input data bits x into an M=9 run-length limited (2,10) code having a rate R=5/4, to produce a series of code symbols y, the system comprising: means for receiving at a eighteen-state encoder an input data bit set x0 - x4 to be encoded into the M=9 run-length limited (2, 10) code; and means for generating in said encoder a code symbol set y0 - y3 based on said input data bit set x0 - x4 according to Table 1 , wherein said code symbol set yo - y3 is generated based on the input data bit set x0 - x4 and the current state of said eighteen-state encoder when said data bit set x0 - x4 is received.
15. A system for converting binary input data bits into a series of waveform amplitudes, each amplitude being at one of M=9 levels, the system comprising: means for encoding the binary input data bits into an M=9 (2,10) code having a rate R=5/4 to produce a series of code symbols, each code symbol being at one of M levels, and each pair of non-zero code symbols having a minimum of two and a maximum of ten zeroes therebetween, said means for encoding comprising means for generating a code symbol set y0 - y3 for each input data bit set Xfl - x4 according to Table 1 , wherein said code symbol set y0 - y3 is generated based on the input data bit set x0 - x4 and the current state of said eighteen-state encoder when said data bit set x0 - x4 is received; and means for generating in a waveform encoder waveform signal amplitudes based on said code symbols, wherein each said waveform signal amplitude is generated by modulo nine addition of a current code symbol with a previous waveform signal amplitude.
16. The system of claim 15, further comprising means for modulating a signal with said waveform signal amplitudes to generate a series of features, each feature being at a level corresponding to a waveform signal amplitude; and wherein said waveform signal amplitudes modulate a write laser and wherein said modulated write laser writes said features onto a storage medium.
17. The system of claim 15, further comprising means for modulating a signal with said waveform signal amplitudes to generate a series of features, each feature being at a level corresponding to a waveform signal amplitude; and wherein said waveform signal amplitudes modulate a transmitter and wherein said transmitter transmits said features over a communications channel.
18. The system of claim 15, further comprising: means for receiving said features to recover output waveform signal amplitudes; means for converting said output waveform signal amplitudes into output code symbols, wherein each output code symbol is at one of nine levels; and means for decoding said output code symbols to obtain output data bits, wherein said output data bits correspond to the binary input data.
19. The system of claim 18, wherein said means for decoding comprises: means for identifying with a sliding window a sequence of code symbols that represents a given code symbol set; and means for, in a table comprising a number of entries corresponding to a number of possible unique sequences of code symbols, each entry identified by one of said possible unique sequences of code symbols, and wherein each entry identifies an output data bit set that is a decoded data bit set for the code symbol set represented by the sequence of code symbols that identifies that entry, looking up with said identified sequence of code symbols the output data bit set for said given code symbol set.
20. The system of claim 19, wherein said lookup table provides an output bit set x' for each sequence of code symbols y' according to Table 3.
21. The system of claim 19, wherein said means for looking up comprises means for determining, using a squared euclidean distance, which table entry is identified by a sequence of code symbols.
22. A system for decoding data on a channel, wherein said data has been encoded using an M=9 (2, 10) code, comprising: means for reading the data to recover output waveform signal amplitudes; means for converting said output waveform signal amplitudes into output code symbols, wherein each output code symbol is at one of nine levels; and means for decoding said output code symbols to obtain output data bits, wherein said output data bits correspond to the encoded data.
23. The system of claim 22, wherein said means for decoding comprises: means for identifying with a sliding window a sequence of code symbols that represents a given code symbol set; and means for, in a table comprising a number of entries corresponding to a number of possible unique sequences of code symbols, each entry identified by one of said possible unique sequences of code symbols, and wherein each entry identifies an output data bit set that is a decoded data bit set for the code symbol set represented by the sequence of code symbols that identifies that entry, looking up with said identified sequence of code symbols the output data bit set for said given code symbol set.
24. The system of claim 23, wherein said table provides an output bit set x' for each sequence of code symbols y' according to Table 3.
25. The system of claim 22, wherein said channel is a storage medium or a communications channel.
PCT/US1997/011532 1996-06-24 1997-06-24 M=9(2,10), d=3.75 runlength limited code for multi-level data WO1997050181A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US66884796A 1996-06-24 1996-06-24
US08/668,847 1996-06-24

Publications (1)

Publication Number Publication Date
WO1997050181A1 true WO1997050181A1 (en) 1997-12-31

Family

ID=24683975

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/011532 WO1997050181A1 (en) 1996-06-24 1997-06-24 M=9(2,10), d=3.75 runlength limited code for multi-level data

Country Status (1)

Country Link
WO (1) WO1997050181A1 (en)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4506252A (en) * 1981-05-05 1985-03-19 Sperry Corporation Ternary data encoding system
US4566044A (en) * 1984-10-29 1986-01-21 International Business Machines Corporation Direction-constrained ternary codes using peak and polarity detection
US4914438A (en) * 1987-09-01 1990-04-03 Hitachi, Ltd. Digital information coding system
US5142493A (en) * 1988-07-29 1992-08-25 Quantex Corporation Optical disk employing electron trapping material as a storage medium
US5260703A (en) * 1992-08-27 1993-11-09 Quantum Corporation Data encoding and decoding within PRML class IV sampling data detection channel of disk drive
US5390198A (en) * 1993-05-26 1995-02-14 The Boeing Company Soft decision viterbi decoder for M-ary convolutional codes
US5398260A (en) * 1993-04-15 1995-03-14 Samsung Electronics Co., Ltd. Method and apparatus for restoring multi level/phase modulation data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4506252A (en) * 1981-05-05 1985-03-19 Sperry Corporation Ternary data encoding system
US4566044A (en) * 1984-10-29 1986-01-21 International Business Machines Corporation Direction-constrained ternary codes using peak and polarity detection
US4914438A (en) * 1987-09-01 1990-04-03 Hitachi, Ltd. Digital information coding system
US5142493A (en) * 1988-07-29 1992-08-25 Quantex Corporation Optical disk employing electron trapping material as a storage medium
US5260703A (en) * 1992-08-27 1993-11-09 Quantum Corporation Data encoding and decoding within PRML class IV sampling data detection channel of disk drive
US5398260A (en) * 1993-04-15 1995-03-14 Samsung Electronics Co., Ltd. Method and apparatus for restoring multi level/phase modulation data
US5390198A (en) * 1993-05-26 1995-02-14 The Boeing Company Soft decision viterbi decoder for M-ary convolutional codes

Similar Documents

Publication Publication Date Title
US6150964A (en) M=10 (2,10), D=3.75 runlength limited code for multi-level data
JP3590209B2 (en) Modulation coding method
US5781130A (en) M-ary (d,k) runlength limited coding for multi-level data
KR20010015164A (en) Data encoding method and apparatus
US5757293A (en) M=8 (1,2) runlength limited code for multi-level data
US5682154A (en) M=4 (1,2) runlength limited code for multi-level data
US5657014A (en) M=7 (3,7) runlength limited code for multi-level data
US5748118A (en) M=7 (3,8) runlength limited code for multi-level data
US5668546A (en) M=6 (3,6) runlength limited code for multi-level data
US5682155A (en) M=6(4,11) runlength limited code for multi-level data
US5748117A (en) M=8 (1,3) runlength limited code for multi-level data
US5659310A (en) M=5 (0,2) runlength limited code for multi-level data
US5663723A (en) M=7 (1,3) runlength limited code for multi-level data
US5659311A (en) M=6 (2,4) runlength limited code for multi-level data
US5670956A (en) M=5 (3,7) runlength limited code for multi-level data
WO1997050182A1 (en) M=4(2,10), d=2.5 runlength limited code for multi-level data
US5680128A (en) M=6(3,8) runlength limited code for multi-level data
US5663722A (en) M=10 (3,6) runlength limited code for multi-level data
US5675330A (en) M=5(4,11)runlength limited code for multi-level data
WO1997050181A1 (en) M=9(2,10), d=3.75 runlength limited code for multi-level data
US20070182597A1 (en) Modulation code system and methods of encoding and decoding a signal
WO1997050180A1 (en) M=6 (2,10), d=3.0 runlength limited code for multi-level data
KR20020011981A (en) Method and apparatus for coding information, method and apparatus for decoding coded information, method of fabricating a recording medium, the recording medium and modulated signal
KR100575638B1 (en) Method and apparatus for coding information, method and apparatus for decoding coded information, method of fabricating a recording medium, the recording medium and modulated signal
JPH02119434A (en) Coding circuit and decoding circuit

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP KP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 98503607

Format of ref document f/p: F

122 Ep: pct application non-entry in european phase