Abstract:
A method and apparatus for encoding a plurality of successive m-bit binary data words to produce a plurality of successive of n-bit binary code words, where n and m are positive integers and n is greater than m, for supply to a magnetic recording channel. Each m-bit binary data word is partitioned into a plurality of blocks of bits, and at least one said blocks of bits in each m-bit binary data word is encoded in accordance with a finite-state coding scheme to produce a plurality of successive n-bit binary code words. At least one stage of violation correction which transforms the plurality of successive n-bit binary code words. Violation correction includes detecting the occurrence of any of a plurality of prohibited bit patterns at one or more predetermined locations within each n-bit binary coded word, and replacing any prohibited bit pattern so detected by a corresponding substitute bit pattern. The finite-state coding scheme, the prohibited bit patterns, and corresponding substitute bit patterns are predetermined such that in a serial bit-steam comprising the successive n-bit binary code words, the maximum number of consecutive bits of a first value is limited to a first predetermined number j, where b greater or equal to 2, and the maximum number of consecutive bits of the a second value is limited to a second predetermined number k.

Description:
BACKGROUND OF THE INVENTION 
     1. Technical Field 
     This invention relates generally to data encoding systems, and more particularly to systems implementing codes of the type known as maximum transition run (MTR) codes. 
     2. Description of the Related Art 
     Channel codes are mappings of data bits into symbols (i.e. channel bits) which are recorded on to a medium in a storage device, such as a computer hard disk drive. Channel codes are commonly used to prevent certain characteristics in the bit-stream of symbols that make recovery of the data bits more difficult. The code rate for such a code is usually specified as m/n, which indicates the ratio of the number of data bits “m” to channel bits “n”. MTR codes are a particular type of channel code utilized to eliminate certain error prone binary patterns from the allowable set of channel bits recorded on a magnetic recording medium, such as a magnetic disk or tape. With MTR codes, the number of consecutive transitions that can occur in the magnetization pattern on the recording medium is limited to a particular number denoted by “j”. When used in conjunction with the NRZI (Non-Return-to-Zero-Inversion) recording format, a MTR code limits the maximum number of consecutive “1&#39;s” in the channel bit-sequence. This j constraint produces the desirable consequence of reducing errors in data recovery. More particularly, the bit-error .rate performance is improved by providing a distance gain (i.e. an increase in the minimum Euclidean distance between recording patterns), or by eliminating the most likely error events, thus reducing the likelihood of .errors in the sequence detectors on the data recovery side. For example, when used in conjunction with higher-order partial response shaping and maximum likelihood sequence detection, such as in an E2PR4 partial response channel, MTR codes with j=2 can deliver a distance gain of 2.2 dB. MTR codes with j=2 also allow data to be written to a disk at very high rates. The design of high code-rate MTR codes is therefore of great interest, and particularly so for the higher-order partial response channels used in hard disks for example. 
     In addition to the j constraint, MTR codes typically limit the maximum number of consecutive “0&#39;s” to a particular number denoted as “k” to aid timing recovery and gain control, and such a code is usually specified as an MTR(j, k) code. MTR(j, k) codes with j=2 are discussed in U.S. Pat. No. 5,859,601. A rate 6/7 MTR(2, 8) code is proposed in IEEE Transactions on Magnetics, Vol. 33, No. 5, September 1997, “Design of a Rate 6/7 Maximum Transition Run Code”, Brickner and Moon. It can be shown that this code is quasi-catastrophic and requires very long path memories in the sequence detector. Quasi-catastrophic codes include coded bit-sequences containing a succession of the bit series 1100, which are undesirable because these bit-sequences do not accumulate Euclidean distance in the sequence detector and the coded bit-sequence is therefore more likely to be identified incorrectly. Quasi-catastrophic error events are avoided in a rate 16/17 MTR code with j=3 which is discussed in a paper by Takushi et al, Hitachi Ltd, published at the GLOBECOM&#39;98 conference in November 1998 under the title “Turbo-EEPRML: An EEPR4 Channel with an Error-Correcting Post-Processor Designed for 16/17 Rate Quasi-MTR code”. A rate 16/19 MTR(2, 7) code is also mentioned in IEEE Transactions on Magnetics, Vol. 32, No. 5, September 1996, “Maximum Transition Run Codes for Data Storage Systems”, Brickner and Moon, though the question of implementing such a code without resorting to a costly lookup table has not been addressed. 
     SUMMARY OF THE INVENTION 
     The methods of the present invention provide for MTR codes to be implemented by partitioning the input data words into blocks of bits and then applying coding and a violation correction stage in such a manner as to satisfy the j, k constraints. This partitioned-block implementation provides the advantages of MTR codes while dramatically simplifying the implementation of the encoder and allows even high code-rate codes to be implemented in a highly efficient manner. Encoding methods embodying the invention can be implemented with relatively few logic gates without requiring extensive lookup tables, resulting in efficient, low cost encoder/decoder systems. 
     According to one aspect of the present invention there is provided a method for encoding to a magnetic recording channel a plurality of successive m-bit binary data words to produce a plurality of successive n-bit binary code words, where n and m are preselected positive integers such that n is greater than m. Each m-bit binary data words is identically partitioned into a plurality of blocks of bits. At least one of the blocks of bits of each m-bit binary data word is encoded in accordance with a finite-state coding scheme to produce a plurality of successive n-bit binary code words which are then transformed by at least one stage of violation correction. Violation correction includes detecting the occurrence of any of a plurality of prohibited bit patterns at one or more predetermined locations within each of the plurality of successive n-bit binary code words and replacing any prohibited bit pattern so detected by a corresponding substitute bit pattern. The finite-state coding scheme, prohibited bit patterns, and substitute bit patterns are predetermined, whereby, the maximum number of consecutive bits of a first value, in said plurality of successive n-bit binary code words, is limited to a first predetermined number j, where j is a positive integer which is greater or equal to 2, and the maximum number of consecutive bits of a second value is limited to a second predetermined number k, where k is a positive integer. 
     As indicated above, after partitioning the input data word into a number of blocks, at least one of these blocks is encoded in accordance with a finite-state coding scheme. As will be apparent from the examples detailed below, the finite-state codes employed here may be block codes, a block code being a special case of a finite-state code in that a block code is a one-state code. Where more than one block is encoded here, different finite-state codes may be employed for different blocks. 
     Preferred embodiments of the present invention utilize prohibited and substitute bit patterns which are defined such that quasi-catastrophic error propagation is avoided. This is achieved by imposing a further constraint whereby, a serial bit-stream, comprised of a plurality of successive n-bit binary code words, is such that the maximum number of bits in any consecutive bit-string with a four-bit period, in which two consecutive bits of a first value is followed by two consecutive bits of a second value, is limited to a third predetermined number q. Thus, the maximum length of coded bit-sequences that do not accumulate distance in sequence detection is limited to q, allowing path memory lengths in the sequence detector to be limited accordingly. 
     As will be appreciated, in embodiments conforming to the NRZI recording format where “1” represents a magnetic transition and “0” no transition, said bits of one value will be bits of value “1”, whereby j and k represent the maximum length of series of consecutive 1&#39;s and 0&#39;s respectively. 
     Preferred embodiments, which advantageously utilize the methods of the present invention, provide for efficient implementation of very high code rate MTR codes, and examples for a rate 16/19 and a rate 16/17 code are detailed below. Those skilled in the art will be able to design other examples based on the techniques described herein. 
     It is to be appreciated that, where features are described herein with reference to a method embodying the invention, corresponding features may be provided in accordance with apparatus embodying the invention, and vice versa. 
     All objects, features, and advantages of the present invention will become apparent in the following detailed written description. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself however, as well as a preferred mode of use, further objects and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
     FIG. 1 depicts an illustrative embodiment of a finite state transition diagram for the MTR j=2 constraint with which the methods and systems of the present invention may advantageously be utilized; 
     FIG. 2 is a block diagram of an encoder embodying the invention for a rate 16/19 MTR code; 
     FIG. 3 is a block diagram of a decoder for use with the encoder of FIG. 2 in a system embodying the invention; 
     FIG. 4 shows a finite state transition diagram for the MTR j=3 constraint; 
     FIG. 5 is a block diagram of an encoder embodying the invention for a rate 16/17 MTR code; and 
     FIG. 6 is a block diagram of a decoder for use with the encoder of FIG. 5 in a system embodying the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     With reference now to the figures and in particular with reference to FIG. 1, there is depicted a three-state right-resolving finite state transition diagram (FSTD) that generates bit sequences satisfying the MTR j=2 constraint. This FSTD is unique for j=2 in that it has the least number of states of all possible right resolving representations. Such an FSTD is known in the art as a “Shannon cover.” FIG. 1 shows the Shannon cover for j=2. Bit sequences can be generated from the Shannon cover by starting in any of the labeled states 1, 2 or 3 and successively moving along the arrows, where the arrows shown in solid lines signify a bit of value “0”, and the arrows shown in broken lines signify a bit of value “1”. Examination of this diagram shows that all bit sequences that can be generated have a maximum of j=2 consecutive 1&#39;s. Reference will be made to this diagram in describing the code implemented by a first embodiment of the invention. 
     In general in a data storage system, such as a hard disk drive, employing an MTR code, the input data is encoded in accordance with the MTR code to produce a coded bit sequence which is supplied to the recording channel. The recording channel is typically a generalized partial response channel with rational coefficients. On the recording side, the main elements of such a system are a Reed-Solomon encoder, an MTR encoder, a precoder, and write-precompensation circuitry from which the analog recording waveform is supplied to the magnetic head for recording on the recording medium. On the data recovery side, after preamplification, automatic gain control, lowpass filtering, sampling and partial response equalization, the sample stream is supplied to a sequence detector, such as a Viterbi decoder, which produces an estimate of the coded bit-stream which may contain some illegal code words due to errors resulting in incorrect sequence detection. After inverse preceding, the estimated code word sequence is supplied to the MTR decoder for recovery of the original data, where any errors here are corrected subsequently by a Reed-Solomon decoder. 
     FIG. 2 is a schematic block diagram of encoder apparatus according to a first embodiment of the invention in the form of MTR encoder  4  which can be utilized in such a data storage system. This embodiment implements a rate 16/19 MTR code with j=2, k=9 and q=14, referred to herein in the format MTR(j, k/q) as an MTR(2, 9/14) code. As illustrated, MTR encoder  4  comprises encoder means in the form of three input encoders  5 ,  6 , and  7 , which implement a finite-state coding scheme. The first encoder  5  is a rate 6/7 block encoder having a 6-bit data input  5   a  and a 7-bit output indicated generally at  5   b . The second encoder  6  is a rate 6/7 two-state encoder having a 6-bit data input  6   a  and a 7-bit output indicated generally at  6   b . The last bit-line of first encoder output  5   b  is connected to a 1-bit input  6   c  of two-state encoder  6  to set the state S thereof as explained below. Third encoder  7  is a rate 4/5 block encoder having a 4-bit data input  7   a  and a 5-bit output  7   b . The apparatus further includes violation correction means in the form of a left substitution unit  8  and a right substitution unit  9 . The right-hand four bit-lines of first encoder output  5   b , and left-hand three bit-lines of second encoder output  6   b , form input of left substitution unit  8  as shown. Right-hand four bit-lines of second encoder output  6   b , and five bit-lines of third encoder output  7   b , form input to right substitution unit  9 . Together, with the left-hand three bit lines of first encoder output  5   b , a 7-bit output  8   b  of unit  8  and 9-bit output  9   b  of unit  9  form the 19-bit output of the apparatus. 
     In operation of a recording system employing MTR encoder  4 , the data to be recorded, initially in the form of a serial Reed-Solomon encoded bit-stream, is converted to 16-bit parallel form by a serial-to-parallel converter (not shown). The resulting 16-bit data words are supplied successively to MTR encoder  4  for coding. Specifically, the 16 bits of each data word are supplied to the 16 bit-lines of encoder inputs  5   a ,  6   a  and  7   a  which serve to partition the input word into three blocks of six, six and four bits respectively. Encoders  5  to  7  encode the input blocks in accordance with respective coding schemes to be described in detail below. The input blocks are coded to produce first, second and third subcode words on outputs  5   b ,  6   b  and  7   b  respectively, whereby each original 16-bit data word is converted into a 17-bit code word. The left and right substitution units  8  and  9  operate to check for violations of the coding constraints by detecting prohibited bit patterns in the bit sequences supplied to their inputs and replacing any such prohibited patterns by substitute bit patterns as described in more detail below. After this violation correction stage the 19-bit code word for the input data word appears on the 19 bit-lines forming the output of the apparatus. 
     The rate 6/7 block code implemented by encoder  5  is constructed as follows. Referring now to the FIG.  1 . Fifty-seven potential 7-bit subcode words are generated by starting from state two in the Shannon cover and making seven transitions such that the sequence ends in states 1 or 2. The fifty-seven words in this set can be concatenated to obtain sequences satisfying the j=2 constraint. This set of words is then augmented by eleven 7-bit words that are generated by starting in state 2 in FIG.  1  and ending in state 3. The first two bits of the eleven words are either 00, 01 or 10, and the last three bits are always 011. In hexadecimal format these eleven words are 03, 0B, 13, 23, 43, 1B, 2B, 4B, 33, 53 and 5B. This gives a total of sixty-eight potential subcode words, ie. four more than are required to construct a rate 6/7 code. The words 00, 01, 4C and 33 are discarded to obtain the final set of sixty-four subcode words. Thus, encoder  5 , maps each 6-bit input block to a 7-bit subcode words. The particular mapping of data blocks to subcode words as defined in the encoder is a matter of design choice and is not critical to operation of the system. 
     Encoder  6  implements a rate 6/7 two-state code where the last bit of the first subcode word from encoder  5  determines the current state S of encoder  6 . This code is constructed as follows. There are sixty-two state-independent subcode words obtained from the same initial list of sixty-eight words discussed above by discarding the six words, in hexadecimal format 00, 4C, 33, 19, 56 and 06. The sixty-two 6-bit input blocks assigned to these 62 state-independent subcode words are preferably selected such that the logic implementation of the encoder is as simple as possible. Again, the particular one-to-one mapping of data blocks to subcode words is a matter of design choice. One out of the two remaining input blocks is mapped to the subcode word 56 is if S=0 or to the subcode word 33 if S 1. The last remaining input block is mapped to the subcode word 4C if S=0 or to the subcode word 06 if S=1. 
     The rate 4/5 block code implemented by the third encoder  7  is constructed as follows. A total of seventeen potential subcode words can be generated by starting from state  2  in the Shannon cover of FIG.  1  and making five transitions ending in state 1 or state 2. These are 00, 01, 02, 04, 05, 06, 08, 09, 0A, 0C, 0D, 10, 11, 12, 14, 15 and 16. Of these 00 is discarded to obtain the sixteen subcode words needed for the rate 4/5 code. This rate 4/5 block code is also disclosed in the September 1997 paper by Brickner and Moon referenced above. 
     None of the subcode words for the first rate 6/7 code can start with binary 11 and none of the subcode words for the rate 4/5 code can end in binary 11. Thus, violation of the j=2 constraint across the boundaries of 19-bit code words is not possible. However, violations could occur at the boundary between the two 7-bit subcode words output by encoders  5  and  6 , or at the boundary between the 7-bit output of encoder  6  and the 5-bit output of encoder  7 . This is dealt with in the violation correction stage implemented by substitution units  8  and  9  as follows. 
     The prohibited bit patterns, and the substitute patterns with which they are replaced in left substitution unit  8  are defined in Table 1 below, where the 19-bit sequence output by encoders  5  to  7  is represented by y 1 , y 2 , y 3 , . . . , y. 
     
       
         
               
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 1 
               
             
             
               
                   
               
               
                 Prohibited Pattern 
                 Substitute Pattern 
               
             
          
           
               
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
               
               
                   
               
               
                 y 4   
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 y 4   
                 0 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
               
               
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 4   
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 y 4   
                 0 
                 0 
                 0 
                 1 
                 1 
                 0  
               
               
                   
               
             
          
         
       
     
     Similarly, the prohibited bit patterns, and the substitute patterns with which they are replaced in right substitution unit  9  are defined in Table 2 below. 
     
       
         
               
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 2 
               
             
             
               
                   
               
               
                 Prohibited Pattern 
                 Substitute Pattern 
               
             
          
           
               
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
                 y 18   
                 y 19   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
                 y 18   
                 y 19   
               
               
                   
               
               
                 y 11   
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 y 18   
                 y 19   
                 y 11   
                 0 
                 1 
                 0 
                 1 
                 1 
                 0 
                 y 18   
                 y 19   
               
               
                 y 11   
                   n 0     
                 1 
                 1 
                 1 
                 0 
                 1 
                 y 18   
                 y 19   
                 y 11   
                 0 
                 0 
                 0 
                 1 
                 1 
                 0 
                 y 18   
                 y 19   
               
               
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 y 18   
                 y 19   
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 y 18   
                 y 19   
               
               
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 1 
                 0 
               
               
                   
               
             
          
         
       
     
     In these tables, the patterns marked in bold in the left-hand column are those which are sufficient to determine if a substitution should be performed. 
     After each substitution unit  8 ,  9  has detected and replaced any prohibited bit patterns, any violations of the j constraint at subcode word boundaries will have been corrected. In addition, the substitutions reduce k and q to 9 and 14 respectively, to shorten the path memory required in the sequence detector and to aid timing recovery and gain control. 
     MTR encoder  4  thus implements a rate 16/19 MTR(2, 9/14) code which, in addition to the high code rate, has a high efficiency. The efficiency of a code is defined as the ratio of the code rate to the capacity (maximum possible code rate). The capacity associated with the present coding restraints has been computed to be 0.877210, resulting in an efficiency for the present code of 95.99%. It will be appreciated that the partitioned block structure allows a particularly simple implementation in the encoding apparatus, and hence in the corresponding decoder apparatus to be described below. It has been determined that only 369 binary input logic gates are required for implementation of the encoder and decoder apparatus. By way of example, a particularly preferred Boolean logic design for MTR encoder  4  is fully specified at the end of this description. The maximum length of encoded sequences that do not accumulate distance has been limited to q=14, whereby quasi-catastrophic error propagation has been avoided. The maximum length of magnet required in the recording system is k+1=10, and it can be shown that any error burst of size up to 7 bits, 8 bits and 26 bits at the output of the inverse precoder in a recording channel will affect at most 2, 3 and 4 bytes respectively at the output of the MTR decoder, ie. at the input to the Reed-Solomon decoder. 
     FIG. 3 illustrates an embodiment of decoder apparatus in the form of MTR decoder  11  for a system employing MTR encoder  4  described above. The operation of the MTR decoder  11  will be apparent to those skilled in the art from the foregoing detailed description of the MTR encoder. Briefly, however, MTR decoder  11  comprises left and right inverse substitution units  12  and  13  with respective inputs  12   a  and  13   a  and outputs  12   b  and  13   b . The bit-lines of the outputs  12   b  and  13   b  are connected as shown to decoder means in the form of first and second rate 6/7 block decoders  14  and  15  and a rate 4/5 block decoder  16 . The first three bits of the input 19-bit code word are supplied as indicated to the decoder  14 , and the last two bits of the code word are supplied as indicated to decoder  16 . The left inverse substitution unit  12  detects the bit patterns shown on the right-hand side of Table 1 and replaces these by the bit patterns shown on the left-hand side of the table. Similarly, the right-hand substitution unit  13  detects and replaces bit patterns shown on the right-hand side of Table 2 by the patterns shown on the left-hand side of this table. The patterns shown in bold in the right-hand columns of these tables are those which are sufficient to determine if a substitution should be performed. Decoders  14 ,  15  and  16  perform the inverse mappings of those performed by encoders  5 ,  6  and  7  respectively, and outputs  14   b ,  15   b  and  16   b  of decoders  14 ,  15  and  16  collectively comprise sixteen bit-lines on which the original 16-bit data word is output in operation. As mentioned earlier, there will of course be occasions when the 17-bit input to MTR decoder  11  is an illegal code word. In these cases, MTR decoder output is preferably selected to simplify the logic as far as possible. By way of example, a particularly preferred boolean logic design for MTR decoder  11  is fully specified at the end of this description. 
     A second embodiment of the invention is described in FIGS. 4 to  6 . FIG. 4 illustrates the Shannon cover for the MTR j=3 constraint, whereby any sequence generated from this diagram has no more than three consecutive 1&#39;s. Reference will be made to this diagram in describing the operation of the encoder apparatus shown in FIG.  5 . 
     FIG. 5 is a schematic block diagram of encoder circuit in the form of MTR encoder  20  for implementing a rate 16/17 MTR code for which the maximum number of consecutive 1&#39;s in the encoded output is four. However, the locations at which these maximum transition runs can occur in the coded bit-sequence are limited, and for all other locations the maximum number of consecutive 1&#39;s is three. More specifically, the code is constructed such that the run of four 1&#39;s can occur at bit positions as well as code word boundaries, ie. at bit positions Thus j=4 for two out of the possible seventeen locations, and for all of the other fifteen locations j=3. This code will be referred to herein as an MTR(3/4(2)) code with period l=17, signifying that j=3 except that, in 2 of the 17 possible locations, j=4, and the maximum run of four 1&#39;s can occur every l=17 bits. In addition to this j constraint, the code implemented by encoder  20  satisfies the additional constraints k=14 and q=22. 
     As illustrated in FIG. 5 MTR encoder  20  comprises finite-state encoder in the form of a rate 8/9 block encoder  21  having an 8-bit input  21   a  and a 9-bit output  21   b . The apparatus has two further 4-bit inputs shown at  22  and  23  which receive the first and last four bits respectively of the input 16-bit code word in use. The violation correction means in this embodiment is indicated generally at  24  and performs three stages of violation correction. The first stage is implemented by a first substitution unit  25  having a 17-bit parallel input  25   a  made up of the four bit-lines of input  22 , the nine bit-lines of encoder output  21   b , and four bit-lines of input  23 . First substitution unit  25  has a 17-bit output indicated generally at  25   b . The second violation correction stage is implemented by a second left substitution unit  26  and a second right substitution unit  27 . The first eight bit-lines of output  25   b  of first substitution unit  25  form the input to second left substitution unit  26 , and the last eight bit-lines of output  25   b  form the input to second right substitution unit  27 . This connection of the different groups of bit-lines of the output  25   b  thus serves to partition the 17-bit sequence into three blocks of eight, one and eight bits respectively, the two 8-bit blocks being supplied to the second left and second right substitution units  26  and  27  as shown. The left and right substitution units  26  and  27  have respective outputs  26   b  and  27   b  which, together with the ninth bit-line of first substitution unit output  25   b , form the 17-bit input to the third violation correction stage. This stage is implemented by a third substitution unit  28  having a 17-bit output  28   b  forming the output of encoder  20 . 
     In operation, a 16-bit data word from the serial-to-parallel converter (not shown) is supplied to the sixteen bit-lines of inputs  22 ,  21   a  and  23  which serve to partition the input word into three blocks of four, eight and four bits respectively. Encoder  21  encodes the 8-bit input block in accordance with a coding scheme to be described below to produce a 9-bit subcode word on output  21   b . The resulting bit-sequence derived from the input 16-bit data word and supplied to input  25   a  of the first substitution unit is therefore a 17-bit sequence. Violations of the coding constraints are detected and corrected by the three stages of violation correction as detailed below, whereby the 17-bit code word for the input data word appears on output  28   b.    
     The rate 8/9 code implemented by encoder  21  is constructed as follows. Referring to FIG. 4, 249 subcode words are obtained by starting in state 3 of this diagram and making nine transitions ending in states 1 or 2. Added to this set of 249 words are six 9-bit subcode words that do not start or end with binary 11 and have the binary pattern 011110 at their center. In hexadecimal format, these words are 03C, 0BC, 13C, 03D, 0BD and 13D. The final subcode word is selected as 1EF, that is binary 111101111. Since each 9-bit subcode word on encoder output  21   b  in FIG. 5 is preceded and followed by four uncoded bits at input  25   a  to the first substitution unit, there are exactly 256 possible 17-bit sequences that have the 9-bit subcode word  1 EF at their center, ie. at bit-positions y 5  to y 1 . These sequences are detected as prohibited bit sequences by first substitution unit  25  and replaced by respective substitute bit patterns in accordance with Table 3 below. In the following tables the bold patterns are those which are sufficient to determine if substitution, or inverse substitution, should be performed. 
     
       
         
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
             
             
               
                 Prohibited Pattern 
               
             
          
           
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
               
               
                 0 
                 0 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 0 
                 0 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 1 
                 0 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 0 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 0 
                 0 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 1 
                 0 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 0 
                 1 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
                 y 14   
                 1 
                 1 
                 1 
               
               
                   
               
             
          
           
               
                 Substitute Pattern 
               
             
          
           
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 0 
                 0 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 0 
                 0 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 0 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 0 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 1 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 0 
                 0 
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 0 
                 0 
                 0 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 1 
                 0 
                 0 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 0 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 0 
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 1 
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 0 
                 0 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
               
               
                   
               
             
          
         
       
     
     The first eight bits of the 17-bit sequence output by first substitution unit  2  are received by second left substitution unit  26  which detects and replaces prohibited bit patterns in accordance with Table 4 below. 
     
       
         
               
             
               
               
               
               
               
               
               
               
               
             
               
             
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 4 
               
               
                   
               
             
             
               
                 Prohibited Pattern 
               
             
          
           
               
                   
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
               
               
                   
                   
               
               
                   
                 1 
                 1 
                 1 
                 1 
                 1 
                 0 
                 y 7   
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 1 
                 0 
                 0 
                 1 
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 1 
                 0 
                 0 
                 0 
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 0 
                 0 
                 0 
                 y 7   
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 0 
                 0 
                 1 
                 y 7   
                 y 8   
               
               
                   
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 y 7   
                 y 8   
               
               
                   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
                 y 7   
                 y 8   
               
               
                   
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0  
               
               
                   
                   
               
             
          
           
               
                 Substituted Pattern 
               
             
          
           
               
                   
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
               
               
                   
                   
               
               
                   
                 1 
                 1 
                 0 
                 y 7   
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 y 8   
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
               
               
                   
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 1 
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 0 
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 0 
                 0 
                 y 7   
                 0 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 0 
                 1 
                 y 7   
                 0 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 1 
                 0 
                 y 7   
                 0 
                 1 
                 1 
                 0 
                 y 8   
               
               
                   
                 y 7   
                 y 8   
                 0 
                 0 
                 1 
                 1 
                 1 
                 0 
               
               
                   
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0  
               
               
                   
                   
               
             
          
         
       
     
     The last eight bits of the 17-bit sequence output by first substitution unit  2  are received by second right substitution unit  27  which detects and replaces prohibited bit patterns in accordance with Table 5 below. It will be seen that Table 5 is a mirror image of Table 4. 
     
       
         
               
             
               
               
               
               
               
               
               
               
               
             
               
             
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 5 
               
               
                   
               
             
             
               
                 Prohibited Pattern 
               
             
          
           
               
                   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
                   
               
               
                   
                 y 10   
                 y 11   
                 0 
                 1 
                 1 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 1 
                 0 
                 0 
                 1 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 0 
                 0 
                 0 
                 1 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 y 11   
                 0 
                 0 
                 0 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 y 11   
                 1 
                 0 
                 0 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 y 11   
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
               
               
                   
                 y 10   
                 y 11   
                 0 
                 1 
                 1 
                 1 
                 1 
                 0 
               
               
                   
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0  
               
               
                   
                   
               
             
          
           
               
                 Substitute Pattern 
               
             
          
           
               
                   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
                   
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 y 11   n   
                 0 
                 1 
                 1 
               
               
                   
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 y 10   
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 1 
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 0 
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 0 
                 y 11   
                 0 
                 0 
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 0 
                 y 11   
                 1 
                 0 
               
               
                   
                 y 10   
                 0 
                 1 
                 1 
                 0 
                 y 11   
                 0 
                 1 
               
               
                   
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 y 10   
                 y 11   
               
               
                   
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0  
               
               
                   
                   
               
             
          
         
       
     
     After the second stage of violation correction third substitution unit  28  detects and replaces prohibited bit patterns in its 17-bit input in accordance with Table 6 below. 
     
       
         
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
               
             
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 6 
               
               
                   
               
             
             
               
                 Prohibited Pattern 
               
             
          
           
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
               
               
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
                 1 
                 0 
                 0 
                 1 
               
               
                 1 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 1 
               
               
                   
               
             
          
           
               
                 Substitute Pattern 
               
             
          
           
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 y 6   
                 y 7   
                 y 8   
                 y 9   
                 y 10   
                 y 11   
                 y 12   
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                   
               
               
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
                 0 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 0 
                 0 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 0 
                 1 
                 y 13   
                 y 14   
                 y 15   
                 y 16   
                 y 17   
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 0 
                 1 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 0 
                 0 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
               
               
                 y 1   
                 y 2   
                 y 3   
                 y 4   
                 y 5   
                 1 
                 0 
                 0 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 0 
                 1 
               
               
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 1 
                 1 
                 1 
                 0 
                 0 
                 0 
                 0 
                 0 
                 0 
                 1 
               
               
                   
               
             
          
         
       
     
     Prohibited bit patterns are detected and replaced by the three stages of violation correction, whereby any violations of the j constraint are corrected. In addition, the substitutions reduce k and q to 11 and 22 respectively, to shorten the path memory and aid timing recovery and gain control. 
     MTR encoder  20  thus implements a rate 16/17 MTR(3/4(2), 14/22) code with period l=17 which has a high efficiency in addition to the high code rate. The capacity for the j=3/4(2) constraint with period l=17 is 0.950352. This value presents an upper bound for the capacity of a constrained system satisfying j=3/4(2) with period l=17, k=14 and q=22, and can be used in computation of the efficiency of the present code. A lower bound on the efficiency is therefore 99.03%. The partitioned block structure allows a particularly simple implementation in the encoding apparatus, and hence in the corresponding decoder apparatus to be described below. It has been determined that the encoder and decoder apparatus can be implemented with only 713 binary input logic gates. By way of example, a particularly preferred Boolean logic design for MTR encoder  20  is fully specified at the end of this description. The maximum length of encoded sequences that do not accumulate distance has been limited to q=22, whereby quasi-catastrophic error propagation has been avoided. The maximum length of magnet required in the recording system is k+1=15, and any error burst of size up to 18 bits at the output of the inverse precoder will affect at most 4 bytes at the output of MTR decoder  20 . 
     FIG. 6 illustrates an embodiment of decoder apparatus in the form of MTR decoder  30  for a system employing MTR encoder  20  of FIG.  5 . Again, the operation of the decoder apparatus will be apparent to those skilled in the art from the foregoing detailed description of the encoding process. Decoder  30  comprises three stages of inverse substitution corresponding to the three violation correction stages of the encoder apparatus. A third inverse substitution unit  31  has a 17-bit input  31   a  and a 17-bit output  31   b  which is partitioned as shown into groups of eight, four and eight bit-lines respectively. This inverse substitution unit detects and replaces the bit patterns shown on the right-hand side of Table 6 with the patterns shown on the left-hand side of this table. The second stage of inverse substitution is implemented by second left and second right inverse substitution units  32  and  33  having respective 8-bit outputs  32   b  and  33   b . Unit  32  detects and replaces the bit patterns shown on the right-hand side of Table 4 with the patterns shown on the left-hand side of this table. Similarly, unit  33  performs the inverse substitutions defined by Table 5. Outputs  32   b  and  33   b , together with the central bit line of the output  31   b  of the third inverse substitution unit, form the input to the final inverse substitution stage. This is implemented by a first inverse substitution unit  34  which performs the inverse substitutions defined in Table 3. A 17-bit output  34   b  of the unit  34  is partitioned as shown into groups of four, nine and four bit-lines respectively. The group of nine bit-lines forms the input to a rate 8/9 block decoder  35  which performs the mapping inverse to those performed by the block encoder  21  in FIG.  5 . The 8-bit output  35   b  of the block decoder, together with the two groups of four bit-lines from the inverse substitution unit  34 , form the 16-bit output of the apparatus on which the original 16-bit data word is output in operation. As before, the MTR decoder output in the case of illegal input code words is selected so as to simplify the decoder logic as far as possible. By way of example, a particularly preferred Boolean logic design for MTR decoder  30  is fully specified below. 
     Boolean Logic Design for MTR Encoder 4 MTR Decoder 11 
     This section specifies a highly efficient Boolean implementation for encoder  4  and decoder  11  of the rate 16/19 MTR(2, 9/14) code discussed above. Encoder  4  and decoder  11  can be implemented with a total of 369 binary-input logic gates. In the following, the operations ˜, &amp; and | stand for the boolean operations NOT, AND and OR, respectively. In the encoder logic, x(1) to x(16) represent the sixteen bits supplied to the sixteen bit-lines of MTR encoder input  5   a ,  6   a ,  7   a  from left to right in FIG. 2; k1 represents the 1-bit of input  6   c ; and y(1) to y(19) represent the nineteen bits of MTR encoder output from left to right in FIG.  2 . In the decoder logic, y(1) to y(19) represent the nineteen bits of the input word from left to right in FIG. 3; yy(1) to yy(19) represent the nineteen bits of the inputs to decoders 14 to 16 from left to right in FIG. 3; and z(1) to z(16) represent the sixteen bits of the MTR decoder output, again from left to right. 
     
       
         
               
             
               
               
             
               
             
               
               
             
           
               
                   
               
             
             
               
                 Encoder Logic: 
               
               
                   
               
             
          
           
               
                 m11 = 
                 x(2) | x(3) 
               
               
                 m21 = 
                 x(5) | x(6) 
               
               
                 m31 = 
                 x(1) &amp; x(2) 
               
               
                 m41 = 
                 x(2) &amp; x(3) 
               
               
                 m51 = 
                 x(5) &amp; x(6) 
               
               
                 m61 = 
                 x(4) &amp; m51 
               
               
                 m71 = 
                 x(1) | m11 
               
               
                 m81 = 
                 x(1) | x(4) 
               
               
                 p1 = 
                 ˜m31 &amp; ˜m61 &amp; (m81 | ((m11 | x(5)) &amp; ˜(m41 &amp; m51))) 
               
               
                 q1 = 
                 m31 &amp; (˜x(4) | (x(3) &amp; x(5))) 
               
               
                 r1 = 
                 ˜m31 &amp; m61 
               
               
                 s1 = 
                 ˜p1 &amp; ˜m81 
               
               
                 t1 = 
                 ˜q1 &amp; m31 
               
               
                 a1 = 
                 ˜p1 &amp; m51 
               
               
                 b1 = 
                 (m31 &amp; m51) | (m41 &amp; m61) 
               
               
                 c1 = 
                 (˜(x(4) | m21)) | ((r1 &amp; ˜m71) | (t1 &amp; ˜m21) 
               
               
                 k1 = 
                 x(6) &amp; (˜r1 | x(3)) 
               
               
                 m12 = 
                 x(8) | x(9) 
               
               
                 m22 = 
                 x(11) | x(12) 
               
               
                 m32 = 
                 x(7) &amp; x(8) 
               
               
                 m42 = 
                 x(8) &amp; x(9) 
               
               
                 m52 = 
                 x(11) &amp; x(12) 
               
               
                 m62 = 
                 x(10) &amp; m52 
               
               
                 m72 = 
                 x(7) | m12 
               
               
                 m82 = 
                 x(7) | x(10) 
               
               
                 m92 = 
                 x(10) &amp; x(11) &amp; ˜x(12) 
               
               
                 u12 = 
                 k1 &amp; x(7) &amp; ˜x(8) &amp; x(9) &amp; m92 
               
               
                 u22 = 
                 ˜k1 &amp; ˜m72 &amp; m92 
               
               
                 p2 = 
                 ˜m32 &amp; ˜m62 &amp; (m82 | ((m12 | m22) &amp; ˜(m42 &amp; m52))) 
               
               
                 q2 = 
                 m32 &amp; (˜x(10) | (x(9) &amp; ˜x(11))) 
               
               
                 r2 = 
                 ˜m32 &amp; m62 
               
               
                 s2 = 
                 ˜p2 &amp; ˜m82 
               
               
                 t2 = 
                 ˜q2 &amp; m32 
               
               
                 a2 = 
                 (p2 &amp; m52) | u12 
               
               
                 b2 = 
                 (m32 &amp; m52) | (m42 &amp; m62) 
               
               
                 c2 = 
                 (p2 &amp; ˜(x(10) | x(11) | x(12))) 
               
               
                 d2 = 
                 ((p2 | q2) &amp; x(7) &amp; ˜x(9)) | (s2 &amp; x(9)) 
               
               
                 e2 = 
                 (p2 &amp; x(7) &amp; x(9) &amp; ˜u12) | (t2 &amp; ˜x(9)) 
               
               
                 f2 = 
                 (p2 &amp; ˜m72 &amp; ˜m92) | (q2 &amp; x(9)) 
               
               
                 m13 = 
                 x(13) &amp; x(14) 
               
               
                 m23 = 
                 x(15) &amp; x(16) 
               
               
                 m33 = 
                 x(13) | x(14) 
               
               
                 m43 = 
                 x(15) | x(16) 
               
               
                 m53 = 
                 m33 | m43 
               
               
                 p3 = 
                 ˜m13 &amp; ˜m23 &amp; m53 
               
               
                 q3 = 
                 m13 &amp; ˜m23 
               
               
                 r3 = 
                 ˜m13 &amp; m23 
               
               
                 s3 = 
                 (m13 &amp; m23) | ˜m53 
               
               
                 d3 = 
                 p3 &amp; x(13) 
               
               
                 e3 = 
                 r3 
               
               
                 f3 = 
                 (p3 &amp; ˜m33) 
               
               
                 ff3 = 
                 q3 &amp; x(15) 
               
               
                 v1 = 
                 (a1 | b1) &amp; d2 
               
               
                 v2 = 
                 a1 &amp; e2 
               
               
                 v3 = 
                 b1 &amp; e2 
               
               
                 v4 = 
                 c1 &amp; f2 
               
               
                 v5 = 
                 (a2 | b2) &amp; d3 
               
               
                 v6 = 
                 (a2 | b2) &amp; e3 
               
               
                 v7 = 
                 a2 &amp; ff3 
               
               
                 v8 = 
                 c2 &amp; f3 
               
               
                 v9 = 
                 v2 | v3 
               
               
                 v10 = 
                 v1 | v9 
               
               
                 v11 = 
                 v4 | v10 
               
               
                 v12 = 
                 v7 | v8 
               
               
                 v13 = 
                 v6 | v7 
               
               
                 v14 = 
                 v5 | v6 | v12 
               
               
                 g1 = 
                 p1 | q1 
               
               
                 h1 = 
                 t1 | g1 
               
               
                 g2 = 
                 p2 | q2 
               
               
                 h2 = 
                 t2 | g2 
               
               
                 g3 = 
                 p3 | q3 
               
               
                 y(1) = 
                 (x(1) &amp; p1) | (˜x(3) &amp; (q1 | t1)) | (x(3) &amp; s1) 
               
               
                 y(2) = 
                 (x(2) &amp; p1) | r1 
               
               
                 y(3) = 
                 (x(3) &amp; p1) | (˜x(3) &amp; s1) | t1 
               
               
                 y(4) = 
                 ˜p1 &amp; ˜v3 
               
               
                 y(5) = 
                 (x(4) &amp; g1) | (x(1) &amp; r1) | (x(3) &amp; s1) | v9 
               
               
                 y(6) = 
                 ((x(5) &amp; h1) | (x(2) &amp; r1)) &amp; ˜v2 
               
               
                 y(7) = 
                 ((x(6) &amp; h1) | (x(3) &amp; r1) | (x(6) &amp; s1)) &amp; ˜v10 
               
               
                 y(8) = 
                 (((x(7)&amp;p2) | (˜x(9)&amp;(q2)|t2)) | (x(9)&amp;s2) | u22) &amp; 
               
               
                   
                 ˜u12) | v11 
               
               
                 y(9) = 
                 (x(8) &amp; p2) | r2 | u12 | v11 
               
               
                 y(10) = 
                 ((x(9) &amp; p2) | (˜x(9) &amp; s2) | t2) &amp; ˜v11 
               
               
                 y(11) = 
                 ˜p2 | u22 
               
               
                 y(12) = 
                 (((x(10)&amp;g2) | (x(7)&amp;r2) | (x(9)&amp;s2))&amp; ˜u12) | v12 
               
               
                 y(13) = 
                 ((((x(11) &amp; h2) | (x(8) &amp; r2)) &amp; ˜u22) &amp; ˜v13) | v8 
               
               
                 y(14) = 
                 ((x(12) &amp; h2) | (x(9) &amp; (r2 | s2)) | u12) &amp; ˜v14 
               
               
                 y(15) = 
                 (x(13) &amp; p3) | r3 | v12 
               
               
                 y(16) = 
                 (x(14) &amp; p3) | s3 | v14 
               
               
                 y(17) = 
                 ˜p3 &amp; ˜v14 
               
               
                 y(18) = 
                 (x(15) &amp; g3) | (x(13) &amp; r3) 
               
               
                 y(19) = 
                 (x(16) &amp; g3) | (x(14) &amp; r3) | (x(13) &amp; s3) 
               
               
                   
               
             
          
           
               
                 Decoder Logic: 
               
               
                   
               
             
          
           
               
                 m14 = 
                 ˜(y(6) | y(7)) 
               
               
                 m24 = 
                 y(6) &amp; ˜y(7) 
               
               
                 a4 = 
                 y(5) &amp; m14 
               
               
                 b4 = 
                 y(5) &amp; m24 
               
               
                 c4 = 
                 ˜y(5) &amp; m14 
               
               
                 d4 = 
                 ˜y(5) &amp; m24 
               
               
                 m15 = 
                 ˜(y(13) | y(14)) 
               
               
                 m25 = 
                 y(13) &amp; ˜y(14) 
               
               
                 a5 = 
                 y(12) &amp; m15 
               
               
                 b5 = 
                 y(12) &amp; m25 
               
               
                 c5 = 
                 ˜y(12) &amp; m15 
               
               
                 d5 = 
                 ˜y(12) &amp; m25 
               
               
                 e5 = 
                 y(8) &amp; y(9) 
               
               
                 e6 = 
                 y(15) &amp; y(16) 
               
               
                 v1 = 
                 a4 &amp; e5 
               
               
                 v2 = 
                 b4 &amp; e5 
               
               
                 v3 = 
                 c4 &amp; e5 
               
               
                 v4 = 
                 d4 &amp; e5 
               
               
                 v5 = 
                 a5 &amp; e6 
               
               
                 v6 = 
                 b5 &amp; e6 
               
               
                 v7 = 
                 c5 &amp; e6 
               
               
                 v8 = 
                 d5 &amp; e6 
               
               
                 v9 = 
                 v1 | v2 
               
               
                 v10 = 
                 v5 | v6 
               
               
                 v11 = 
                 v5 | v7 
               
               
                 yy(1) = 
                 y(1) 
               
               
                 yy(2) = 
                 y(2) 
               
               
                 yy(3) = 
                 y(3) 
               
               
                 yy(4) = 
                 y(4) | v2 
               
               
                 yy(5) = 
                 y(5) &amp; ˜v9 
               
               
                 yy(6) = 
                 y(6) | v1 
               
               
                 yy(7) = 
                 y(7) | v9 | v4 
               
               
                 yy(8) = 
                 y(8) &amp; ˜v3 
               
               
                 yy(9) = 
                 y(9) &amp; ˜(v9 | v3 | v4) 
               
               
                 yy(10) = 
                 y(10) | v9 
               
               
                 yy(11) = 
                 y(11) 
               
               
                 yy(12) = 
                 y(12) &amp; ˜v10 
               
               
                 yy(13) = 
                 (y(13) | v11) &amp; ˜v6 
               
               
                 yy(14) = 
                 y(14) | v11 | v8 
               
               
                 yy(15) = 
                 y(15) &amp; ˜v10 
               
               
                 yy(16) = 
                 y(16) &amp; ˜(v10 | v7 | v8) 
               
               
                 yy(17) = 
                 y(17) | v11 
               
               
                 yy(18) = 
                 y(18) 
               
               
                 yy(19) = 
                 y(19) 
               
               
                 m34 = 
                 yy(1) | yy(6) 
               
               
                 p4 = 
                 ˜yy(4) 
               
               
                 q4 = 
                 yy(4) &amp; ˜(yy(2) | yy(3)) &amp; (˜yy(1) | (yy(1) &amp; ˜yy(5))) 
               
               
                 r4 = 
                 yy(4) &amp; yy(2) 
               
               
                 s4 = 
                 yy(4) &amp; ((˜m34 &amp; yy(3)) | (yy(1) &amp; yy(5))) 
               
               
                 t4 = 
                 yy(4) &amp; yy(3) &amp; m34 
               
               
                 m35 = 
                 yy(8) | yy(13) 
               
               
                 p5 = 
                 ˜yy(11) 
               
               
                 q5 = 
                 yy(11) &amp; ˜(yy(9) | yy(10)) &amp; (˜yy(8) | (yy(8) &amp; ˜yy(12))) 
               
               
                 r5 = 
                 yy(11) &amp; yy(9) 
               
               
                 s5 = 
                 yy(11) &amp; ((˜m35 &amp; yy(10)) | (yy(8) &amp; yy(12))) 
               
               
                 t5 = 
                 yy(11) &amp; yy(10) &amp; m35 
               
               
                 u15 = 
                 ˜yy(8) &amp; yy(9) &amp; yy(10)&amp;˜yy(11)&amp;˜yy(12)&amp;yy(13) &amp; 
               
               
                   
                 yy(14) 
               
               
                 u25 = 
                 yy(8) &amp; ˜yy(9) &amp; ˜yy(10)&amp;yy(11)&amp; 
               
               
                   
                 yy(12)&amp;˜yy(13) &amp;˜yy(14) 
               
               
                 m16 = 
                 ˜yy(16) &amp; yy(17) 
               
               
                 m26 = 
                 yy(16) &amp; yy(17) 
               
               
                 p6 = 
                 ˜yy(17) 
               
               
                 q6 = 
                 ˜yy(15) &amp; m16 
               
               
                 r6 = 
                 yy(15) &amp; m16 
               
               
                 s6 = 
                 m26 
               
               
                 g4 = 
                 q4 | t4 
               
               
                 g5 = 
                 q5 | t5 
               
               
                 h4 = 
                 p4 | g4 
               
               
                 h5 = 
                 p5 | g5 
               
               
                 i4 = 
                 s4 &amp; yy(1) 
               
               
                 i5 = 
                 s5 &amp; yy(8) 
               
               
                 g6 = 
                 (s6 &amp; yy(19)) 
               
               
                 h6 = 
                 q6 | p6 
               
               
                 i6 = 
                 q6 | g6 
               
               
                 z(1) = 
                 (yy(1) &amp; p4) | g4 | (yy(5) &amp; r4) 
               
               
                 z(2) = 
                 (yy(2) &amp; p4) | g4 | (yy(6) &amp; r4) | i4 
               
               
                 z(3) = 
                 (yy(3) &amp; p4) | (˜yy(1) &amp; g4 | (yy(7) &amp; r4) | i4 
               
               
                 z(4) = 
                 (yy(5) &amp; (p4 | q4)) | r4 | t4 
               
               
                 z(5) = 
                 (yy(6) &amp; h4) | r4 | i4 
               
               
                 z(6) = 
                 (yy(7) &amp; h4) | r4 | (s4 &amp; yy(7)) 
               
               
                 z(7) = 
                 (yy(8) &amp; p5) | g5 | (yy(12) &amp; r5) | u15 
               
               
                 z(8) = 
                 ((yy(9) &amp; p5) | g5 | (yy(13) &amp; r5) | i5) &amp; ˜u15 &amp; ˜u25 
               
               
                 z(9) = 
                 ((yy(10) &amp; p5) | (˜yy(8) &amp; g5) | (yy(14) &amp; r5) | i5) &amp; ˜u25 
               
               
                 z(10 = 
                 (yy(12) &amp; (p5 | q5)) | r5 | t5 | u15 | u25 
               
               
                 z(11) = 
                 (yy(13) &amp; h5) | r5 | i5 
               
               
                 z(12) = 
                 ((yy(14) &amp; h5) | r5 | i5) &amp; ˜u15 &amp; ˜u25 
               
               
                 z(13) = 
                 (yy(15) &amp; p6) | (yy(18) &amp; r6) | i6 
               
               
                 z(14) = 
                 (yy(16) &amp; p6) | (yy(19) &amp; r6) | i6 
               
               
                 z(15) = 
                 (yy(18) &amp; h6) | r6 | g6 
               
               
                 z(16) = 
                 (yy(19) &amp; h6) | r6 | g6 
               
               
                   
               
             
          
         
       
     
     A highly efficient boolean implementation for encoder  20  and decoder  30  of the rate 16/17 MTR(3/4(2), 14/22) code discussed above can be implemented with a total of 713 binary-input logic gates. The operations ˜, &amp; and | stand for the boolean operations NOT, AND and OR, respectively. In the encoder logic, x(1) to x(16) represent the sixteen bits supplied to the sixteen bit-lines of MTR encoder input  22 ,  21   a ,  23  from left to right in FIG. 5; a1 to a17 represent the seventeen bits of output  25   b  of the first substitution unit from left to right in the figure; and y(1) to y(17) represent the seventeen bits of MTR encoder output  28   b , again from left to right. In the decoder logic, y(1) to y(17) represent the seventeen bits of the input word from left to right in FIG. 6; d1 to d17 represent the seventeen bits of the output  31   b  of the third inverse substitution unit from left to right; e1 to e17 represent the seventeen bits of the input to the first inverse substitution unit  34  from left to right; f1 to f17 represent the seventeen bits of the output of the first inverse substitution unit  34  from left to right; and z(1) to z(16) represent the sixteen bits of the MTR decoder output, again from left to right. 
     
       
         
               
             
               
               
               
             
               
             
               
               
               
             
           
               
                   
               
             
             
               
                 Encoder Logic: 
               
             
          
           
               
                 m01 
                 = 
                 x(5) &amp; x(6) 
               
               
                 m11 
                 = 
                 x (11) &amp; x(12) 
               
               
                 m21 
                 = 
                 m01 &amp; m11 
               
               
                 m31 
                 = 
                 x(7) &amp; x(8) 
               
               
                 m41 
                 = 
                 x(9) &amp; x(10) 
               
               
                 m51 
                 = 
                 x(8) &amp; x(9) &amp; (x(7) | x(10)) 
               
               
                 m51 
                 = 
                 m21 &amp; m31 
               
               
                 m71 
                 = 
                 m21 &amp; ˜m31 
               
               
                 m81 
                 = 
                 x(2) &amp; x(3) 
               
               
                 m91 
                 = 
                 x(14) &amp; x(15) 
               
               
                 p1 
                 = 
                 ˜m01 &amp; ˜m11 
               
               
                 p2 
                 = 
                 m11 &amp; ˜x(6) &amp; m51 
               
               
                 p3 
                 = 
                 m11 &amp; ˜x(5) &amp; x(6) &amp; (m51 | m31) 
               
               
                 p4 
                 = 
                 m11 &amp; ˜m01 &amp; ˜p2 &amp; ˜p3 
               
               
                 p5 
                 = 
                 m01 &amp; ˜x(11) &amp; m51 
               
               
                 p6 
                 = 
                 m01 &amp; ˜x(12) &amp; x(11) &amp; (m51 | m41) 
               
               
                 p7 
                 = 
                 m01 &amp; ˜m11 &amp; ˜p5 &amp; ˜p6 
               
               
                 p8 
                 = 
                 m71 &amp; ˜m41 
               
               
                 p9 
                 = 
                 m71 &amp; m41 
               
               
                 p10 
                 = 
                 m61 &amp; ˜m41 
               
               
                 p11 
                 = 
                 m61 &amp; m41 
               
               
                 p12 
                 = 
                 p11 &amp; x(4) 
               
               
                 p13 
                 = 
                 p11 &amp; ˜x(4) 
               
               
                 m12 
                 = 
                 p1 | p4 
               
               
                 m22 
                 = 
                 p2 | p3 
               
               
                 m32 
                 = 
                 p2 | p5 
               
               
                 m42 
                 = 
                 p3 | p7 
               
               
                 m52 
                 = 
                 m12 | p8 
               
               
                 m62 
                 = 
                 m52 | p6 
               
               
                 m72 
                 = 
                 p9 | p10 
               
               
                 m82 
                 = 
                 ˜p11 | p13 
               
               
                 m92 
                 = 
                 ˜p11 | p12 
               
               
                 a1 
                 = 
                 m82 &amp; x(1) 
               
               
                 a2 
                 = 
                 (m82 &amp; x(2)) | p12 
               
               
                 a3 
                 = 
                 (m82 &amp; x(3)) | p12 
               
               
                 a4 
                 = 
                 (˜p11 &amp; x(4)) | (p13 &amp; x(13)) 
               
               
                 a5 
                 = 
                 (m12 &amp; x(5)) | m22 | p7 &amp; x(12)) | (p9 &amp; x(7)) | 
               
               
                   
                   
                 (p10 &amp; x(10)) | p12 | (p13 &amp; x(14) &amp; ˜(x(15) &amp; x(16))) 
               
               
                 a6 
                 = 
                 m12 &amp; x (6)) | (p7 &amp; x(11)) | p8) | (p9 &amp; x(8)) | 
               
               
                   
                   
                 (p10 &amp; x(9)) | p12 | (p13 &amp; x(15) &amp; ˜x(14)) 
               
               
                 a7 
                 = 
                 (m62 &amp; x(7)) | (m32 &amp; ˜x(7)) | (m42 &amp; x(10)) | (p13 &amp; m91) 
               
               
                 a8 
                 = 
                 (m62 &amp; x(8)) | (m32 &amp; ˜x(10)) | (m42 &amp; x(9)) | m72 | 
               
               
                   
                   
                 p12 | (p13 &amp; x(16) &amp; ˜m91) 
               
               
                 a9 
                 = 
                 ˜p1 
               
               
                 a10 
                 = 
                 (m52 &amp; x(9)) | (p2 &amp; x(5)) | (p7 &amp; x(8)) | (p5 &amp; x(12)) | 
               
               
                   
                   
                 m72(p12 &amp; x(1) &amp; ˜m81) | p13 
               
               
                 a11 
                 = 
                 (m52 &amp; x(10)) | (p2 &amp; ˜x(5)) | (p3 &amp; ˜x(7)) | (p7 &amp; x(7)) | 
               
               
                   
                   
                 (p5 &amp; ˜x(12)) | (p6 &amp; ˜x(10)) | m72 | (p12 &amp; m81) 
               
               
                 a12 
                 = 
                 (p1 &amp; x(11)) | m22 | p5 | p6 | p8 | (p12 &amp; x(2) &amp; ˜x(3)) | 
               
               
                   
                   
                 p13 
               
               
                 a13 
                 = 
                 (p1 &amp; x(12)) | p4 | p9 | (p12 &amp; x(3) &amp; ˜(x(1) &amp; x(2))) | p13 
               
               
                 a14 
                 = 
                 m92 &amp; x(13) 
               
               
                 a15 
                 = 
                 (m92 &amp; x(14)) | p13 
               
               
                 a16 
                 = 
                 (m92 &amp; x(15)) | p13 
               
               
                 a17 
                 = 
                 m92 &amp; x(16) 
               
               
                 m03 
                 = 
                 a2 &amp; a3 
               
               
                 m13 
                 = 
                 m03 &amp; a1 
               
               
                 m23 
                 = 
                 m03 &amp; a4 
               
               
                 m33 
                 = 
                 m13 &amp; a4 
               
               
                 m43 
                 = 
                 a16 &amp; a15 
               
               
                 m53 
                 = 
                 m43 &amp; a17 
               
               
                 m63 
                 = 
                 m43 &amp; a14 
               
               
                 m73 
                 = 
                 m53 &amp; a14 
               
               
                 m83 
                 = 
                 a6 &amp; a7 
               
               
                 m93 
                 = 
                 a11 &amp; a12 
               
               
                 v1 
                 = 
                 m33 &amp; a5 
               
               
                 v2 
                 = 
                 m33 &amp; ˜a5 &amp; ˜m83 
               
               
                 v3 
                 = 
                 m33 &amp; ˜aS &amp; m83 
               
               
                 v4 
                 = 
                 m13 &amp; ˜a4 
               
               
                 v5 
                 = 
                 ˜a1 &amp; m23 &amp; a5 
               
               
                 v6 
                 = 
                 (a2 | a3 | a4 |a5 | a6 | a7 | a8) 
               
               
                 v7 
                 = 
                 (a16 | a15 | a14 | a13 | a12 | a11 | a10) 
               
               
                 v8 
                 = 
                 ˜(a1 | v6) 
               
               
                 v9 
                 = 
                 m73 &amp; a13 
               
               
                 v10 
                 = 
                 m73 &amp; ˜a13 &amp; ˜m93 
               
               
                 v11 
                 = 
                 m73 &amp; ˜a13 &amp; m93 
               
               
                 v12 
                 = 
                 m53 &amp; ˜a14 
               
               
                 v13 
                 = 
                 ˜a17 &amp; m63 &amp; a13 
               
               
                 v14 
                 = 
                 (a17 | v7) 
               
               
                 v15 
                 = 
                 (v3 | v5 | v8) 
               
               
                 v16 
                 = 
                 ˜(v1 | v2 | v15 | v4) 
               
               
                 v17 
                 = 
                 (v11 | v13 | v14) 
               
               
                 v18 
                 = 
                 ˜(v9 | v10 | v17 | v12) 
               
               
                 v19 
                 = 
                 al &amp; ˜v6 &amp; ˜a9 &amp; ˜v7 &amp; a17 
               
               
                 v20 
                 = 
                 ˜v16 | v19 
               
               
                 b1 
                 = 
                 (v16 &amp; al) | v1) | (v2 &amp; a6) | (v3 &amp; a8) | (v4 &amp; a5) | 
               
               
                   
                   
                 (v5 &amp; a7) 
               
               
                 b2 
                 = 
                 (v16 &amp; a2) | v1 | (v2 &amp; a7) | (v4 &amp; a6) | (v5 &amp; a8) | 
               
               
                   
                   
                 v8 | v19 
               
               
                 b3 
                 = 
                 (v16 &amp; a3) | v3 | (v4 &amp; a7) | v8 
               
               
                 b4 
                 = 
                 (v16 &amp; a4) | (v1 &amp; a7) | v2 | v19 
               
               
                 b5 
                 = 
                 (v16 &amp; a5) | v20 
               
               
                 b6 
                 = 
                 (v16 &amp; a6) | v20 
               
               
                 b7 
                 = 
                 (v16 &amp; a7) | v15 
               
               
                 b8 
                 = 
                 (˜v15 &amp; a8) | v19 
               
               
                 b9 
                 = 
                 a9 | v19 
               
               
                 b10 
                 = 
                 (˜v17 &amp; a10) | v19 
               
               
                 b11 
                 = 
                 (v18 &amp; a11) | v17 
               
               
                 b12 
                 = 
                 (v18 &amp; a12) | ˜v18 
               
               
                 b13 
                 = 
                 (v18 &amp; a13) | ˜v18 
               
               
                 b14 
                 = 
                 (v18 &amp; a14) | (v9 &amp; a11) | v10 
               
               
                 b15 
                 = 
                 (v18 &amp; a15) | v11 | (v12 &amp; a11) | v14 
               
               
                 b16 
                 = 
                 (v18 &amp; a16) | v9 | (v10 &amp; a11) | (v12 &amp; a12) | 
               
               
                   
                   
                 (v13 &amp; a10) | v14 
               
               
                 b17 
                 = 
                 (v18 &amp; a17) | v9 | (v10 &amp; a12) | (v11 &amp; a10) | 
               
               
                   
                   
                 (v12 &amp; a13) | (v13 &amp; a11) 
               
               
                 v21 
                 = 
                 b6 &amp; ˜b7 &amp; ˜b8 &amp; b9 &amp; b10 &amp; ˜b11 &amp; ˜b12 
               
               
                 v22 
                 = 
                 ˜b6 &amp; b7 &amp; b8 &amp; b9 &amp; ˜b10 &amp; ˜b11 &amp; b12 
               
               
                 v23 
                 = 
                 ˜b6 &amp; b7 &amp; b8 &amp; ˜b9 &amp; ˜b10 &amp; b11 &amp; b12 
               
               
                 v24 
                 = 
                 b6 &amp; b7 &amp; ˜b8 &amp; ˜b9 &amp; b10 &amp; b11 &amp; ˜b12 
               
               
                 v25 
                 = 
                 b1 &amp; b2 &amp; ˜b3 &amp; ˜b4 &amp; b5 &amp; v21 
               
               
                 v26 
                 = 
                 b1 &amp; ˜b2 &amp; ˜b3 &amp; b4 &amp; b5 &amp; v22 
               
               
                 v27 
                 = 
                 ˜b1 &amp; ˜b2 &amp; b3 &amp; b4 &amp; ˜b5 &amp; v23 
               
               
                 v28 
                 = 
                 ˜b1 &amp; b2 &amp; b3 &amp; ˜b4 &amp; ˜b5 &amp; v24 
               
               
                 v29 
                 = 
                 b17 &amp; b16 &amp; ˜b15 &amp; ˜b14 &amp; b13 &amp; v22 &amp; ˜v26 
               
               
                 v30 
                 = 
                 b17 &amp; ˜b16 &amp; ˜b15 &amp; b14 &amp; b13 &amp; v21 &amp; ˜v25 
               
               
                 v31 
                 = 
                 ˜b17 &amp; ˜b16 &amp; b15 &amp; b14 &amp; ˜b13 &amp; v24 &amp; ˜v28 
               
               
                 v32 
                 = 
                 ˜b17 &amp; b16 &amp; b15 &amp; ˜b14 &amp; ˜b13 &amp; v23 &amp; ˜v27 
               
               
                 v33 
                 = 
                 v25 | v26 | v27 | v28 
               
               
                 v34 
                 = 
                 v29 | v30 | v31 | v32 
               
               
                 y(1) 
                 = 
                 b1 | v33 
               
               
                 y(2) 
                 = 
                 b2 &amp; ˜v33 
               
               
                 y(3) 
                 = 
                 b3 | v33 
               
               
                 y(4) 
                 = 
                 b4 &amp; ˜v33 
               
               
                 y(5) 
                 = 
                 b5 | v33 
               
               
                 y(6) 
                 = 
                 (b6 | v33) &amp; ˜v31 
               
               
                 y(7) 
                 = 
                 b7 | v33 
               
               
                 y(8) 
                 = 
                 b8 &amp; ˜v33 
               
               
                 y(9) 
                 = 
                 b9 | v33 | v34 
               
               
                 y(10) 
                 = 
                 b10 &amp; ˜v34 
               
               
                 y(11) 
                 = 
                 b11 | v34 
               
               
                 y(12) 
                 = 
                 (b12 | v34) &amp; ˜v27 
               
               
                 y(13) 
                 = 
                 b13 | v34 
               
               
                 y(14) 
                 = 
                 b14 &amp; ˜v34 
               
               
                 y(15) 
                 = 
                 b15 | v34 
               
               
                 y(16) 
                 = 
                 b16 &amp; ˜v34 
               
               
                 y(17) 
                 = 
                 b17 | v34 
               
             
          
           
               
                 Decoder Logic: 
               
             
          
           
               
                 m04 
                 = 
                 y(5) &amp; y(6) 
               
               
                 m14 
                 = 
                 m04 &amp; y(7) &amp; y(9) 
               
               
                 m24 
                 = 
                 y(1) &amp; y(2) 
               
               
                 m34 
                 = 
                 y(1) &amp; y(3) &amp; m14 
               
               
                 u01 
                 = 
                 m34 &amp; ˜y(10) &amp; ˜y(11) &amp; y(12) 
               
               
                 u11 
                 = 
                 m34 &amp; ˜y(10) &amp; y(11) &amp; ˜y(12) 
               
               
                 u21 
                 = 
                 m34 &amp; y(10) &amp; ˜y(1l) &amp; ˜y(12) 
               
               
                 u31 
                 = 
                 m34 &amp; y(10) &amp; y(11) &amp; ˜y(12) 
               
               
                 u41 
                 = 
                 m24 &amp; y(4) &amp; m04 &amp; y(8) &amp; y(9) &amp; y(10) 
               
               
                 u51 
                 = 
                 u11 | u31 
               
               
                 u61 
                 = 
                 u01 | u11 
               
               
                 u71 
                 = 
                 u01 | u21 
               
               
                 u81 
                 = 
                 u71 | u41 
               
               
                 u91 
                 = 
                 u51 | u71 
               
               
                 m44 
                 = 
                 y(9) &amp; y(11) &amp; y(12) &amp; y(13) 
               
               
                 m54 
                 = 
                 y(17) &amp; y(15) &amp; m44 
               
               
                 m64 
                 = 
                 m54 &amp; ˜u91 
               
               
                 u02 
                 = 
                 m64 &amp; ˜y(8) &amp; ˜y(7) &amp; y(6) 
               
               
                 u12 
                 = 
                 m64 &amp; ˜y(8) &amp; y(7) &amp; ˜y(6) 
               
               
                 u22 
                 = 
                 m64 &amp; y(8) &amp; ˜y(7) &amp; ˜y(6) 
               
               
                 u32 
                 = 
                 m64 &amp; y(8) &amp; y(7) &amp; ˜y(6) 
               
               
                 u42 
                 = 
                 u12 | u32 
               
               
                 u52 
                 = 
                 u02 | u12 
               
               
                 u62 
                 = 
                 u02 | u22 
               
               
                 d1 
                 = 
                 y(1) &amp; ˜u51 
               
               
                 d2 
                 = 
                 (y(2) | u21 | u31) &amp; −u41 
               
               
                 d3 
                 = 
                 y(3) &amp; ˜u81 
               
               
                 d4 
                 = 
                 (y(4) | u61) &amp; ˜u41 
               
               
                 d5 
                 = 
                 y(5) &amp; ˜u51 &amp; ˜u41 
               
               
                 d6 
                 = 
                 (y(6) | u12) &amp; ˜u61 &amp; ˜u41 
               
               
                 d7 
                 = 
                 y(7) &amp; ˜u81 
               
               
                 d8 
                 = 
                 (y(8) | u61) &amp; ˜u41 
               
               
                 d9 
                 = 
                 y(9) &amp; ˜u51 &amp; ˜u41 &amp; ˜u42 
               
               
                 d10 
                 = 
                 (y(10) | u52) &amp; ˜u41 
               
               
                 d11 
                 = 
                 y(11) &amp; ˜u62 
               
               
                 d12 
                 = 
                 (y(12) | u11) &amp; ˜u52 
               
               
                 d13 
                 = 
                 y(13) &amp; ˜u42 
               
               
                 d14 
                 = 
                 y(14) | u52 
               
               
                 d15 
                 = 
                 y(15) &amp; ˜u62 
               
               
                 d16 
                 = 
                 y(16) | u22 | u32 
               
               
                 d17 
                 = 
                 y(17) &amp; ˜u42 
               
               
                 m05 
                 = 
                 d1 &amp; d2 
               
               
                 m15 
                 = 
                 d5 &amp; d6 
               
               
                 m25 
                 = 
                 ˜(d1 &amp; d2) 
               
               
                 m35 
                 = 
                 m15 &amp; d7 
               
               
                 m45 
                 = 
                 m15 &amp; ˜d7 
               
               
                 m55 
                 = 
                 d17 &amp; d16 
               
               
                 m65 
                 = 
                 d13 &amp; d12 
               
               
                 m75 
                 = 
                 ˜(d17 &amp; d16) 
               
               
                 m85 
                 = 
                 m65 &amp; d11 
               
               
                 m95 
                 = 
                 m65 &amp; ˜d11 
               
               
                 u03 
                 = 
                 m05 &amp; m45 
               
               
                 u13 
                 = 
                 m25 &amp; d4 &amp; m15 
               
               
                 u23 
                 = 
                 ˜d2 &amp; d3 &amp; m35 
               
               
                 u33 
                 = 
                 m25 &amp; ˜d4 &amp; m45 &amp; ˜(˜d1 &amp; d2 &amp; d3 &amp; d8 &amp; d9) 
               
               
                 u43 
                 = 
                 ˜d3 &amp; m35 
               
               
                 u53 
                 = 
                 d2 &amp; d3 &amp; m35 
               
               
                 u63 
                 = 
                 u13 | u23 
               
               
                 u73 
                 = 
                 u03 | u43 
               
               
                 u83 
                 = 
                 u63 | u33 
               
               
                 u93 
                 = 
                 u83 | u73 | u53 
               
               
                 u04 
                 = 
                 m55 &amp; m95 
               
               
                 u14 
                 = 
                 m75 &amp; d14 &amp; m65 
               
               
                 u24 
                 = 
                 ˜d16 &amp; d15 &amp; m85 
               
               
                 u34 
                 = 
                 m75 &amp; ˜d14 &amp; m95 &amp; ˜(˜d17 &amp; d16 &amp; d15 &amp; d10 &amp; d9) 
               
               
                 u44 
                 = 
                 ˜d15 &amp; m85 
               
               
                 u54 
                 = 
                 d16 &amp; d15 &amp; m85 
               
               
                 u64 
                 = 
                 u14 | u24 
               
               
                 u74 
                 = 
                 u04 | u44 
               
               
                 u84 
                 = 
                 u64 | u34 
               
               
                 u94 
                 = 
                 u84 | u74 | u54 
               
               
                 e1 
                 = 
                 (d1 &amp; ˜u93) | u83 | u03 
               
               
                 e2 
                 = 
                 (d2 | u93) &amp; ˜u53 
               
               
                 e3 
                 = 
                 (d3 | u93) &amp; ˜u53 
               
               
                 e4 
                 = 
                 (d4 &amp; ˜u93) | u63 | u73 
               
               
                 e5 
                 = 
                 (d5 &amp; ˜u93) | u73 | (u33 &amp; d1) 
               
               
                 e6 
                 = 
                 (d6 &amp; ˜u93) | u23 | (u13 &amp; d1) | (u33 &amp; d2) 
               
               
                 e7 
                 = 
                 (d7 &amp; ˜u93) | (u03 &amp; d4) | (u13 &amp; d2) | u23 | 
               
               
                   
                   
                 (u33 &amp; d3) | (u43 &amp; d1) 
               
               
                 e8 
                 = 
                 (d8 &amp; ˜u23 &amp; ˜u43) | (u23 &amp; d1) | (u43 &amp; d2) 
               
               
                 e9 
                 = 
                 d9 
               
               
                 e10 
                 = 
                 (d10 &amp; ˜u24 &amp; ˜u44) | (u24 &amp; d17) | (u44 &amp; d16) 
               
               
                 e11 
                 = 
                 (d11 &amp; ˜u94) | (u04 &amp; d14) | (u14 &amp; d16) | u24 | 
               
               
                   
                   
                 (u34 &amp; d15) | (u44 &amp; d17) 
               
               
                 e12 
                 = 
                 (d12 &amp; ˜u94) | u24 | (u14 &amp; d17) | (u34 &amp; d16) 
               
               
                 e13 
                 = 
                 (d13 &amp; ˜u94) | u74 | (u34 &amp; d17) 
               
               
                 e14 
                 = 
                 (d14 &amp; ˜u94) | u64 | u74 
               
               
                 e15 
                 = 
                 (d15 | u94) &amp; ˜u54 
               
               
                 e16 
                 = 
                 (d16 | u94) &amp; ˜u54 
               
               
                 e17 
                 = 
                 (d17 &amp; ˜u94) | u84 | u04 
               
               
                 m06 
                 = 
                 ˜e10 &amp; e11 &amp; ˜e13 
               
               
                 m16 
                 = 
                 ˜e8 &amp; e7 &amp; ˜e5 
               
               
                 u05 
                 = 
                 e2 &amp; e3 &amp; e5 &amp; e6 &amp; e8 &amp; e9 
               
               
                 u15 
                 = 
                 e16 &amp; e15 &amp; e13 &amp; e12 &amp; e10 &amp; e9 
               
               
                 u25 
                 = 
                 u05 | u15 
               
               
                 f1 
                 = 
                 (e1 &amp; ˜u05) | (u05 &amp; (e10 | m06)) 
               
               
                 f2 
                 = 
                 (e2 &amp; ˜u05) | (u05 &amp; (e11 | e12)) 
               
               
                 f3 
                 = 
                 (e3 &amp; ˜u05) | (u05 &amp; (e13 | m06)) 
               
               
                 f4 
                 = 
                 (e4 | u05) &amp; ˜u15 
               
               
                 f5 
                 = 
                 e5 | u25 
               
               
                 f6 
                 = 
                 e6 | u25 
               
               
                 f7 
                 = 
                 e7 | u25 
               
               
                 f8 
                 = 
                 e8 | u25 
               
               
                 f9 
                 = 
                 e9 &amp; ˜u25 
               
               
                 f10 
                 = 
                 e10 | u25 
               
               
                 f11 
                 = 
                 e11 | u25 
               
               
                 f12 
                 = 
                 e12 | u25 
               
               
                 f13 
                 = 
                 e13 | u25 
               
               
                 f14 
                 = 
                 (e14 &amp; ˜u15) | (u15 &amp; e4) 
               
               
                 f15 
                 = 
                 (e15 &amp; ˜u15) | (u15 &amp; (e5 | m16)) 
               
               
                 f16 
                 = 
                 (e16 &amp; ˜u15) | (u15 &amp; (e7 | e6)) 
               
               
                 f17 
                 = 
                 (e17 &amp; ˜u15) | (u15 &amp; (e8 | m16) 
               
               
                 m07 
                 = 
                 f11 &amp; f10 &amp; f8 &amp; ˜f7 
               
               
                 m17 
                 = 
                 f9 &amp; f13 
               
               
                 m27 
                 = 
                 f9 &amp; ˜f13 
               
               
                 m37 
                 = 
                 f9 &amp; f12 
               
               
                 m47 
                 = 
                 (f11 | f10) &amp; ˜f6 &amp; ˜(f7 &amp; f8) 
               
               
                 m57 
                 = 
                 m37 &amp; ˜f5 
               
               
                 m67 
                 = 
                 m37 &amp; f5 
               
               
                 q1 
                 = 
                 m17 &amp; m07 
               
               
                 q2 
                 = 
                 m27 &amp; m07 
               
               
                 q3 
                 = 
                 m37 &amp; f6 
               
               
                 q4 
                 = 
                 m17 &amp; ˜q1 
               
               
                 q5 
                 = 
                 m27 &amp; ˜f12 &amp; ˜q2 
               
               
                 q6 
                 = 
                 m57 &amp; m47 
               
               
                 q7 
                 = 
                 m67 &amp; m47 
               
               
                 q8 
                 = 
                 m57 &amp; ˜f6 &amp; ˜q6 
               
               
                 q9 
                 = 
                 m67 &amp; ˜q7 
               
               
                 q10 
                 = 
                 q1 | q2 | q3 
               
               
                 q11 
                 = 
                 q10 | q4 | q7 | q9 
               
               
                 q12 
                 = 
                 q5 | q6 | q8 | q10 
               
               
                 q13 
                 = 
                 q5 | q9 
               
               
                 q14 
                 = 
                 q6 | q7 
               
               
                 q15 
                 = 
                 ˜f9 | q4 
               
               
                 q16 
                 = 
                 ˜f9 | q3 | q4 
               
               
                 q17 
                 = 
                 q16 | q8 
               
               
                 z(1) 
                 = 
                 f1 
               
               
                 z(2) 
                 = 
                 f2 
               
               
                 z(3) 
                 = 
                 f3 
               
               
                 z(4) 
                 = 
                 f4 
               
               
                 z(5) 
                 = 
                 (q15 &amp; f5) | q12 | (q7 &amp; f10) 
               
               
                 z(6) 
                 = 
                 (q15 &amp; f6) | q12 | q9 
               
               
                 z(7) 
                 = 
                 (q17 &amp; f7) | (q1 &amp; f5) | q2 | (q5 &amp; f11) | 
               
               
                   
                   
                 (q14 &amp; ˜f7) | (q9 &amp; ˜f11) 
               
               
                 z(8) 
                 = 
                 (q17 &amp; f8) | (q1 &amp; f6) | q2 | (q5 &amp; f10) | 
               
               
                   
                   
                 q14 | q9 
               
               
                 z(9) 
                 = 
                 (q16 &amp; f10) | q1 | (q2 &amp; f6) | (q13 &amp; f8) | 
               
               
                   
                   
                 q14 | q8 
               
               
                 z(10 
                 ) = 
                 (q16 &amp; f11) | q1 | (q2 &amp; f5) | (q13 &amp; f7) | 
               
               
                   
                   
                 (q14 &amp; ˜f8) | (q8 &amp; ˜f11) 
               
               
                 z(11) 
                 = 
                 (˜f9 &amp; f12) | q11 | (q5 &amp; f6) | q8 
               
               
                 z(12) 
                 = 
                 (˜f9 &amp; f13) | q11 | (q5 &amp; f5) | (q6 &amp; f10) 
               
               
                 z(13) 
                 = 
                 f14 
               
               
                 z(14) 
                 = 
                 f15 
               
               
                 z(15) 
                 = 
                 f16 
               
               
                 z(16) 
                 = 
                 f17 
               
               
                   
               
             
          
         
       
     
     While preferred embodiments of the invention have been described in detail above, it will be appreciated that many changes and modifications can be made to the embodiments described without departing from the scope of the invention. 
     While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.