Abstract:
A system and method to modulate coding based on an ECC interleave structure include a first encoder encoding an input stream of bits comprising input blocks sorted into interleaves. A second encoder encodes a subset of the input blocks to produce output blocks, where the first encoder permutates a remainder of the input blocks and the output blocks to produce a codeword.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to an apparatus and a method to encode information based on an ECC interleave structure. 
     2. Description of the Related Art 
     In magnetic recording, various sources of noise can corrupt accurate information (for example, thermal noise, interference, and media noise arising from sources such as jitter, DC erase noise, and pulse width/height modulation). Media noise is a dominant source of noise in many current recording systems. The media noise is usually treated as highly correlated non-stationary noise added to a read-back signal. 
     RLL Coding schemes use (d, k) constraints, which limit a minimum and a maximum run lengths of zeros, respectively, or alternatively, the schemes control high and low frequency contents of user data. Conventional high-rate RLL ( 0 , k) codes are highly complex for circuit implementation and relatively “blind” in terms of error detection during a demodulation process. The d, k constraints include properties of the conventional codes exploitable for error control purposes. However, this specialized type of error is only a small subset of the total number of possible errors. 
     A construction of an encoder, which encodes arbitrary binary sequences into sequences, is needed that obeys a specific run-length-limited (RLL) constraint. It is important that the encoder encodes data at a high rate, that the decoder does not propagate channel errors, and that a complexity of encoding and decoding be low. 
     White noise is added to every symbol entering a channel in a magnetic recording medium. Media Noise, like white noise, is random. Unlike the white noise, the media noise is not added to every symbol. The denser a signal is written onto the magnetic recording medium, the more frequent media noise occurs. Thus, a recording density controls a ratio of media noise to white noise. For instance, a ratio of 50:50 may be one example. 
     In general, in magnetic recording systems, it is desirable that certain conditions are met where typical channel errors do not corrupt many blocks of a codeword in a same interleave, and that a length of typical channel errors is short. Also, it is desirable that short channel errors do not propagate into long decoder errors, and that a number of non-zero values over the codeword is large. If these conditions were not satisfied, then the magnetic recording medium would require a more powerful error correcting code (ECC), which increases hardware complexity of a magnetic recording system. Regarding the condition where the number of non-zero values over a codeword is large, the non-zero values over a codeword is large, the non-zero values are important because the non-zero values provide useful information to recover a system clock. 
     With respect to the condition where the length of typical channel errors need to be short, a long typical channel error may occur when for some pair of integers, k and M, where: 
     
       
         ( x ( k +1),  x ( k +2), . . . ,  x ( k+M ) )= x *(1 0 1 0 1 0 . . . ), 
       
     
     or 
     
       
         ( x ( k +2*1), x ( k +2*2), . . . ,  x ( k +2 M ))= x *(1 1 1 1 1 . . . ), 
       
     
     where x* ε{ 0 ,  1 } 
     The apparatus and method according to an embodiment of the present invention, provide a system where the channel errors do not corrupt many blocks in the same interleave, where the length of the typical channel errors are short, and where the short channel errors do not propagate into long decoder errors. 
     SUMMARY OF THE INVENTION 
     Various objects and advantages of the invention will be set forth in part in the description that follows and, in part, will be obvious from the description, or may be learned by practice of the invention. 
     In order to achieve the above and other objects, a system to modulate coding based on an ECC interleave structure, includes: a first encoder encoding an input stream of bits including input blocks sorted into interleaves; and a second encoder encoding a subset of the input blocks to produce output blocks, wherein the first encoder permutates a remainder of the input blocks and the output blocks to produce a codeword. 
     In order to achieve the above and other objects, a system to modulate coding based on an ECC interleave structure, includes: a first encoder encoding an input stream of bits, sorting the input bits into interleaves of input blocks, and selecting at least one subset of the input blocks, wherein each input block includes a predetermined input block size; a second encoder encoding the at least one subset of the input blocks to output blocks, wherein the first encoder permutates a remainder of the input blocks and the output blocks to prevent channel errors from being greater than a correction capability of the interleave; and a decoder inverse decoding the output blocks to restore the input blocks. 
     In order to achieve the above and other objects, a method to modulate coding based on an ECC interleave structure, includes: encoding an input stream of bits with a first encoder; sorting the input bits into interleaves of input blocks, each input block including a predetermined input block size; selecting at least one subset of the input blocks; encoding with a second encoder the at least one subset of the input blocks to output blocks; permutating a remainder of the input blocks and the output blocks to prevent channel errors from being greater than a correction capability of the interleave; and inverse decoding the output blocks to restore the input blocks. 
     In order to achieve the above and other objects, a method to modulate coding based on an ECC interleave structure, includes: selecting an n/m rate of a first encoder; receiving an input signal including input bits, b(i)&#39;s, wherein i= 1 ,  2 , . . . n; selecting an input block size, S, for the input bits, b(i)&#39;s; interleaving the input bits, b(i)&#39;s, into blocks, (B 1 −Bk), each block including the input block size, S, wherein k=n/S; selecting at least one subset, (Bi 1 , Bi 2 , . . . , Biq), from the blocks, wherein q&lt;k; mapping the at least one subset, (Bi 1 , Bi 2 , . . . , Biq) to an output vector, f=(f 1 , f 2 , . . . , fp), of a second encoder within the first encoder, wherein p is a number of output bits, f, from the second encoder; and permutating ((f 1 , f 2 , . . . , fp), Bj 1 , Bj 2 , Bj(k−q)) to prevent channel errors from being greater than a correction capability in the interleave, wherein (Bj 1 , Bj 2 , . . . Bj(k−q))=(B 1 −Bk)−(Bi 1 , Bi 2 , . . . , Biq), are the blocks remaining after the at least one subset, (Bi 1 , Bi 2 , . . . , Biq), is selected and the permutating is a permutation, P, operating on the bits of vector ((f 1 , f 2 , . . . , fp), Bj 1 , Bj 2 , Bj(k−q)). 
     In order to achieve the above and other objects, a computer readable medium storing a program for controlling at least one computer to perform a method includes: encoding an input stream of bits with a first encoder; sorting the input bits into interleaves of input blocks, each input block including a predetermined input block size; selecting at least one subset of the input blocks; encoding with a second encoder the at least one subset of the input blocks to output blocks; permutating a remainder of the input blocks and the output blocks to prevent channel errors from being greater than a correction capability of the interleave; and inverse decoding the output blocks to restore the input blocks. 
     These together with other aspects and advantages which will be subsequently apparent, reside in the details of construction and operation as more fully hereinafter described and claimed, reference being had to the accompanying drawings forming a part hereof, wherein like numerals refer to like parts throughout. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The above and other objects, features and other advantages of the present invention will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which: 
     FIG. 1 is a diagram illustrating a configuration of a magnetic recording system of high rate coding for media noise, in accordance with an embodiment of the present invention; and 
     FIG. 2 is a flowchart illustrating a process performed by the magnetic recording system, in accordance with an embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Hereinafter, embodiments of the present invention will be described in detail with reference to the attached drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that the present disclosure will be thorough and complete, and will fully convey the concept of the invention to those skilled in the art. 
     In an embodiment according to the present invention, FIG. 1 illustrates a magnetic recording system. An ECC coded sequence, b(i), which is output from an Error Correcting Code (ECC)  20 , is encoded, for instance, by a rate n/m encoder  25  to produce bits, c(i)&#39;s. Specifically, the ECC  20  generates codewords having binary values, b(i)&#39;s, which are grouped into blocks of length S, where for every i, i&gt; 0 , block, B(i) is defined by 
     
       
           B ( i )=( b ( Si−S +1),  b ( Si−S +2), . . . ,  b ( Si−S+S −1),  b ( Si )). 
       
     
     The length S is called an ECC block size. According to an embodiment of the present invention, the ECC  20  output blocks, B(i)&#39;s, which are interleaved to depth l. The ECC  20  also defines a correction capability on each interleave, t. 
     As previously set forth, the output of the ECC  20  is encoded by the rate n/m encoder  25  to produce bits, c(i)&#39;s, where n=KS, for some integer K. Specifically, to generate a u-th codeword, the encoder  25  receives n-bits, b(SuK−SK+1), . . . , b(SuK−SK+SK), and produces m-bits, Cu=(Cu 1 , . . . , Cum). Thus, the encoder  25  receives n-bit blocks and produces m-bit blocks. The encoder  25  may include an application-specific integrated circuit (ASIC). Specifically, the hardware included in the system includes memories, processors, and/or ASICs. Such memory includes a machine-readable medium on which is stored a set of instructions (i.e., software) embodying any one, or all, of the methodologies described herein. Software can reside, completely or at least partially, within this memory and/or within the processor and/or ASICs. For the purposes of this specification, the term “machine-readable medium” shall be taken to include any mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media; optical storage media, flash memory devices, electrical, optical, acoustical, or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.). 
     The m-bit blocks are the codewords and m is a codeword length. The encoder  25  outputs the c(i) to a 1/(1⊕D 2 ) precoder  30 . The ECC  20 , the encoder  25 , and the precoder  30  receive, encode, and process data in a digital domain. In an alternative embodiment, the encoder  25  and the precoder  30  may be combined into one control block capable of encoding and precoding the ECC coded sequence, b(i)&#39;s. 
     Thus, as shown in FIG. 1, the output, x(i)&#39;s, of the precoder  30  pass through a cascade of channel filters denoted by (1−D 2 )  35  and (a+bD+cD 2 )  40 . At the output of the filters, data z(i) is corrupted by additive noise, n&#39;s, r(i)=z(i)+n(i). Based on a received sequence, r(i)&#39;s, a Viterbi detector  50  generates, {circumflex over (x)} (i)&#39;s, which are reproductions of x(i)&#39;s. Next, bits {circumflex over (x)} (i)&#39;s are filtered by a filter (1⊕D 2 )  55 , which is an inverse of the precoder  30 , to generate ĉ (i)&#39;s. In an alternative embodiment, the filter (1⊕D 2 )  55  may be provided with the Viterbi detector  50  as one unit. The ĉ (i)&#39;s, are decoded by a decoder  60  to produce, {circumflex over (b)} (i)&#39;s, which are reproductions of the ECC coded sequence, b(i)&#39;s. An ECC decoder  65  receives the reproductions of the ECC coded sequence, {circumflex over (b)} (i)&#39;s. Further, if x(i)≠{circumflex over (x)}(i), then it is determined that a channel error occurred at time i. Further, if b(i)≠{circumflex over (b)}(i), then it is determined that a decoder error occurred at time i. 
     As previously set forth, the encoder  25  outputs the c(i)&#39;s to the 1/(1⊕D 2 ) precoder  30 . The precoder  30  has at time, i, a state s(i)=(s 2 (i), s 1 (i)), an input, c(i), and an output x(i), where x(i)=c(i)⊕s 2 (i). The state, s(i), is updated for time i+1, for instance, as follows: s(i+1)=(s 2 (i+1),s 1 (i+1)), where s 2 (i+1)=s 1 (i) and s 1 (i+1) =x(i). In an embodiment where the precoder  30  comprises 1/(1⊕D), the precoder  30  would have at time, i, a state s(i), an input, c(i), and an output x(i), where x(i)=c(i)⊕s(i). The state, s(i), is updated for time i+1, for instance, as follows: s(i+1)=x(i). 
     In addition to the user bit sequence, b(i)&#39;s, the encoder  25  may use a state, s(i)=(s 2 (i),s 1 (i)), of the precoder  30  to generate c(i)&#39;s, which will be explained in more detail below. The precoder  30  is a finite state component and includes a memory to store the state, s(i). Initially, a first state (s 2 ( 0 ), s 1 ( 0 )) is preset to an initial value of, for instance, (s 2 ( 0 ), s 1 ( 0 ))=( 0 ,  0 ). In an alternative embodiment, the precoder  30  may be provided as 1/(1⊕D), where initially a first state, s( 0 ), is preset to an initial value of, for instance, s(0)=0. 
     Although the reproductions of the ECC coded sequence, {circumflex over (b)} (i)&#39;s, to the ECC decoder  65  should be same as the ECC coded sequence, b(i)&#39;s, from the ECC  20  and the input to the precoder  30 , c(i)&#39;s, should be same as the output of the inverse of the precoder, ĉ (i)&#39;s, the equality is not always possible because noise, such as media noise, is added to the output of the filters  35  and  40 , z(i)&#39;s. Further, it is desirable that typical channel errors do not corrupt many blocks in a same interleave, and that a length of typical channel errors is short. For instance, assuming that the encoder  25  is able to correct three errors in the same interleave, if four errors occur instead in the same interleave, then the encoder  25  might only be able to correct the first three errors but not the fourth one. Accordingly, the channel errors should not corrupt many blocks in the same interleave of the encoder  25  to work effectively. Also, it is desirable that short channel errors do not propagate into long decoder errors in the decoder  60 , and that a number of non-zero values over a codeword is large. If these conditions are satisfied, then the hardware of the magnetic recording system is simple and efficient. 
     For exemplary purposes, four magnetic recording systems, H 1 , H 2 , H 3 , and H 4 , are described herein. The encoder  25  has a rate ri=ni/mi, an ECC block size, Si, and a depth of interleave, Ii. The encoder  25  receives ni values, b=(b( 01 )−b(ni)), and encodes the ni values into a codeword of length mi bits, c=(c( 01 )−c(mi)). The decoder  60  receives the mi bits, ĉ=(ĉ ( 01 )−ĉ (mi)), which ideally are a reproduction of the input to the precoder  30 , c(i)&#39;s. However, due to errors at the output of the Viterbi detector  50 , the decoder  60  receives the following: ĉ=c+e, where e is a noise error e=(e 01 −emi). Accordingly, the decoder  60  produces, {circumflex over (b)}=({circumflex over (b)}( 01 )−{circumflex over (b)}(ni)). 
     Given the error, e, a smallest index such that e(i 1 ) is not zero is defined as i 1 , and a largest index such that e(i 2 ) is not zero is defined as i 2 , where i 1  and i 2  are equal to zero if e=0. An effective length, L, of e is defined as: 
       L=i 2 −i 1 +1, 
     where if e=0, then L=0 
     Hereinafter, the system H 1  is described. In this instance, the encoder  25  is set up according to the following parameters: 
     Rate=64/65, 
     S=8, and 
     I=3 
     In the system H 1 , the encoder  25  has rate 64/65, that is, 64 bits input to the encoder  25  and 65 output bits, the ECC block size, S, is 8 bits, and the depth of the interleave, I, of 3. 
     Referring to Table 1, this table provides the encoder  25  parameters where a first row shows the 64 input bits to the encoder  25 , b=(b( 01 )-b(64)). The 64 input bits are considered according to the block size, S. Thus, the first row illustrates the 64 input bits in groups of 8 bits (i.e., b 01 -b 08 , b 09 -b 16 , etc.), for S=8. The second row gives corresponding input blocks: 
     
       
           B ( i )=( b (( i −1)8 +I ),  b (( i −1)8+2), . . . ,  b (( i −1) 8+7),  b (( i −1)8+8)), 0 &lt;i ≦8 
       
     
     The third row gives the interleave index of each block, B, where the interleaves are indexed  1 - 3 . For instance, B 2  belongs to the interleave having index  2 . 
     
       
         
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
             
             
               
                 Input 
                 b(01)- 
                 b(09)- 
                 b(17)- 
                 b(25)- 
                 b(33)- 
                 b(41)- 
                 b(49)- 
                 b(57)- 
               
               
                 bits 
                 b(08) 
                 b(16) 
                 b(24) 
                 b(32) 
                 b(40) 
                 b(48) 
                 b(56) 
                 b(64) 
               
               
                 Input 
                 B1 
                 B2 
                 B3 
                 B4 
                 B5 
                 B6 
                 B7 
                 B8 
               
               
                 blocks 
               
               
                 Interleave 
                 1 
                 2 
                 3 
                 1 
                 2 
                 3 
                 1 
                 2 
               
               
                   
               
             
          
         
       
     
     Accordingly, an interleave position for each input block is as follows: 
     
       
         
               
               
               
             
           
               
                   
               
             
             
               
                 B1 
                 B2 
                 B3 
               
               
                 B4 
                 B5 
                 B6 
               
               
                 B7 
                 B8 
               
               
                   
               
             
          
         
       
     
     In addition, the encoder  25  of system H 1  includes a low rate H″ encoder (not shown), such as a 16/17-trellis encoder, having a code rate of 16/17 for instance. The H″ encoder has a lower rate than the encoder  25 , thus, the H″ encoder may involve other types of encoders, such as a 32/34-trellis code encoder. The H″ encoder selects subsets B 3  and B 8  from blocks B 1 -B 8  and maps B 3  and B 8  to u 1  and u 2 , for example, where f=(f 1 , f 2 , . . . f 17 ), in this instance, where u 1  includes 11 output bits (i.e., f 1 , f 2 , . . . , f 11 ) and u 2  includes 6 output bits (i.e., f 12 , f 13 , . . . , f 17 ). The division of the output bits for u 1  and u 2  may vary and is done during initial set up of the system, in an arbitrary manner. It must be noted that a relationship between the subsets B 3  and B 8  with respect to u 1  and u 2  is non-linear. One of the many advantages of including the lower rate encoder, H″ encoder, along with the encoder  25  is to assure that non-zero samplings will occur; thereby assuring that clocking will not drift. For instance, if a design requirement of the system provides that non-zeros are produced at three locations within the codeword, then the H″ encoder would be set up to output u 1 , u 2 , and u 3 . 
     Accordingly, the encoder  25  performs a permutation of the blocks B 1 , B 2 , B 4 , B 5 , B 6 , and B 7  and u 1  and u 2 . To prevent channel errors from corrupting many blocks in the same interleave, u 1  and u 2 , which are a function of B 3  and B 8 , cannot be permutated next to the same interleave, that is, next to either B 2  , B 5  , or B 6  . Accordingly, because u 1  and u 2  cannot be permutated next to B 2  , B 5  , or B 6  , u 1  and u 2  can only be permutated next to B 1  , B 4  , and B 7  . For B 4  to be next to u 1  and B 7  to be next to u 2  , B 4  and B 7  must be broken into B 4 ′ and B 7 ′of 4 bits and B 4 ″ and B 7 ″ of 4 bits. The permutation is performed as shown in Table 2: 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
             
             
               
                 Permutation 
                 B1 
                 B2 
                 B4′ 
                 u1 
                 B4” 
                 B5 
                 B6 
                 B7′ 
                 u2 
                 B7” 
               
               
                   
                   
                   
                   
                 (1:11) 
                   
                   
                   
                   
                 (12:17) 
               
               
                 Interleave, I 
                 1 
                 2 
                 1 
                 2 or 3 
                 1 
                 2 
                 3 
                 1 
                 2 or 3 
                 1 
               
               
                 Error, 
                 e(01)- 
                 e(09)- 
                 e(17)- 
                 e(21)- 
                 e(32)- 
                 e(36)- 
                 e(44)- 
                 e(52)- 
                 e(56)- 
                 e(62)- 
               
               
                 e 
                 e(08) 
                 e(16) 
                 e(20) 
                 e(31) 
                 e(35) 
                 e(43) 
                 e(51) 
                 e(55) 
                 e(61) 
                 e(65) 
               
               
                 Encoded 
                 c(01)- 
                 c(09)- 
                 c(17)- 
                 c(21)- 
                 c(32)- 
                 c(36)- 
                 c(44)- 
                 c(52)- 
                 c(56)- 
                 c(62)- 
               
               
                 bits 
                 c(08) 
                 c(16) 
                 c(20) 
                 c(31) 
                 c(35) 
                 c(43) 
                 c(51) 
                 c(55) 
                 c(61) 
                 c(65) 
               
               
                   
               
             
          
         
       
     
     Under u 1  and u 2 , the interleave may be either 2 or 3 because u 1  and u 2  are a function of B 3  and B 8 , which correspond to interleave  3  and  2 , respectively. Referring to Table 2, in order for two blocks in the same interleave to be corrupted by an error, e, the effective length of, e, must be at least  6 . In other words, L_min(H 1 )=6. Typically, if one bit is corrupted in one block, that bit may corrupt a remainder of bits in that block. Accordingly, with the correction capability on each interleave, t=1, the magnetic recording system, in accordance with an embodiment of the present invention, is able to correct an error e, if L(e)&lt;L_min(H 1 )=6. 
     Referring to Table 2, in order for two blocks, B&#39;s, in the same interleave to be corrupted by the error, e, the effective length of the error, e, must be at least 6. In other words, L_min(H 1 )=6. For example if the error, e, spans from e 16  to e 21 , then c 16  and c 21  will be corrupted. Therefore, B 2  and in some cases B 8  (because u 2  is a function of B 3  and B 8 ) will be corrupted. Because both B 2  and B 8  are in interleave  2  of the ECC  20 , if the correction capability on each interleave, t, is not&gt;1, then the ECC  20  will not be able to correct the decoder error due to e. 
     Furthermore, the decoder  60  in system H 1 , receives (ĉ( 01 )-ĉ( 65 )) and generates {circumflex over (b)}=({circumflex over (b)}( 01 )-{circumflex over (b)}( 64 )). The decoder  60  would further include an inverse (a low rate H″ decoder (not shown)) of the H″ encoder of the encoder  25  to map u 1  and u 2  and restore blocks B 3  and B 8  . Table 3 describes how the decoder obtains {circumflex over (b)}&#39;s. The H″ decoder maps, (ĉ( 21 )-ĉ( 31 ), ĉ( 62 )-ĉ( 65 )) to (vh 01 -vh 16 ). 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
             
             
               
                 Interleave 
                 1 
                 2 
                 3 
                 4 
                 5 
                 6 
                 7 
                 8 
                 9 
                 10 
               
               
                 Decoded 
                 {circumflex over (b)}(01)- 
                 {circumflex over (b)}(09)- 
                 {circumflex over (b)}(17)- 
                 {circumflex over (b)}(25)- 
                 {circumflex over (b)}(29)- 
                 {circumflex over (b)}(33)- 
                 {circumflex over (b)}(41)- 
                 {circumflex over (b)}(49)- 
                 {circumflex over (b)}(53)- 
                 {circumflex over (b)}(57)- 
               
               
                 bits 
                 {circumflex over (b)}(08) 
                 {circumflex over (b)}(16) 
                 {circumflex over (b)}(24) 
                 {circumflex over (b)}(28) 
                 {circumflex over (b)}(32) 
                 {circumflex over (b)}(40) 
                 {circumflex over (b)}(48) 
                 {circumflex over (b)}(52) 
                 {circumflex over (b)}(56) 
                 {circumflex over (b)}(64) 
               
               
                 Map 
                 ĉ(01)- 
                 ĉ(09)- 
                 vh01- 
                 ĉ(17)- 
                 ĉ(32)- 
                 ĉ(36)- 
                 ĉ(44)- 
                 ĉ(52)- 
                 ĉ(62)- 
                 vh09- 
               
               
                   
                 ĉ(08) 
                 ĉ(16) 
                 vh08 
                 ĉ(20) 
                 ĉ(35) 
                 ĉ(43) 
                 ĉ(51) 
                 ĉ(55) 
                 ĉ(65) 
                 vh16 
               
               
                   
               
             
          
         
       
     
     Hereinafter, the system H 2  is described. In this instance, the encoder  25  is set up according to the following parameters: 
     Rate=80/81, 
     S=8, and 
     I=4 
     In the system H 2  , the encoder  25  has rate 80/81, that is, 80 bits input to the encoder  25  and 81 output bits, the ECC block size, S, is 8 bits, and the depth of the interleave, I, of 4. 
     Referring to Table 4, this table provides the encoder  25  parameters where a first row shows the 80 input bits to the encoder  25 , b=(b 01 - 80 ). The 80 input bits are considered according to the block size, S. Thus, the first row illustrates the 80 input bits in groups of 8 bits (i.e., b 01 -b 08  , b 09 -b 16 , etc.), for S=8. The second row gives corresponding input blocks: 
     
       
           Bi =( b (( i −1)8+1),  b (( i −1)8+2), . . . ,  b (( i −1)8+7),  b (( i −1)8+8)), 0 &lt;i ≦10 
       
     
     The third row gives the interleave index of each block, B, where the interleaves are indexed  1 - 4  . 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 4 
               
               
                   
               
             
             
               
                 Input 
                 b(01)- 
                 b(09)- 
                 b(17)- 
                 b(25)- 
                 b(33)- 
                 b(41)- 
                 b(49)- 
                 b(57)- 
                 b(65)- 
                 b(73)- 
               
               
                 bits 
                 b(08) 
                 b(16) 
                 b(24) 
                 b(32) 
                 b(40) 
                 b(48) 
                 b(56) 
                 b(64) 
                 b(72) 
                 b(80) 
               
               
                 Input blocks 
                 B1 
                 B2 
                 B3 
                 B4 
                 B5 
                 B6 
                 B7 
                 B8 
                 B9 
                 B10 
               
               
                 Interleave 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
               
               
                   
               
             
          
         
       
     
     Accordingly, the interleave position for each input block is as follows: 
     
       
         
               
               
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 B1 
                 B2  
                 B3 
                 B4 
               
               
                   
                 B5 
                 B6  
                 B7 
                 B8 
               
               
                   
                 B9 
                 B10 
               
               
                   
                   
               
             
          
         
       
     
     In addition, similar to the system H 1 , the encoder  25  of system H 2  includes the H″ encoder. The H″ encoder selects subsets B 9  and B 10  from blocks B 1 -B 10  and maps B 9  and B 10  to u 1  and u 2 , where u 1  includes 8 bits and u 2  includes 9 bits. It must be noted that a relationship between the subsets is non-linear. Accordingly, the encoder  25  performs a permutation of the blocks B 1 , B 2 , B 4 , B 5 , B 6 , B 7 , and B 8  and u 1  and u 2 . To prevent channel errors from corrupting many blocks in the same interleave, u 1  and u 2 , which are a function of B 9  and B 10 , cannot be permutated next to the same interleave, that is, next to either B 1 , B 2 , B 5 , or B 6 . Accordingly, because u 1  and u 2  cannot be permutated next to B 1 , B 2 , B 5 , or B 6 , u 1  and u 2  can only be permutated between B 3  and B 4  and B 7  and B 8 . The permutation is performed as shown in Table 5: 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 5 
               
               
                   
               
             
             
               
                 Permutation 
                 B1 
                 B2 
                 B3 
                 u1 
                 B4 
                 B5 
                 B6 
                 B7 
                 u2 
                 B8 
               
               
                   
                   
                   
                   
                 (1:8) 
                   
                   
                   
                   
                 (9:17) 
               
               
                 Interleave, I 
                 1 
                 2 
                 3 
                 1 or 2 
                 4 
                 1 
                 2 
                 3 
                 1 or 2 
                 4 
               
               
                 Error, 
                 e(01)- 
                 e(09)- 
                 e(17)- 
                 e(25)- 
                 e(33)- 
                 e(41)- 
                 e(49)- 
                 e(57)- 
                 e(65)- 
                 e(74)- 
               
               
                 e 
                 e(08) 
                 e(16) 
                 e(24) 
                 e(32) 
                 e(40) 
                 e(48) 
                 e(56) 
                 e(64) 
                 e(73) 
                 e(81) 
               
               
                 Encoded 
                 c(01)- 
                 c(09)- 
                 c(17)- 
                 c(25)- 
                 c(33)- 
                 c(41)- 
                 c(49)- 
                 c(57)- 
                 c(65)- 
                 c(74)- 
               
               
                 bits 
                 c(08) 
                 c(16) 
                 c(24) 
                 c(32) 
                 c(40) 
                 c(48) 
                 c(56) 
                 c(64) 
                 c(73) 
                 c(81) 
               
               
                   
               
             
          
         
       
     
     Under u 1  and u 2 , the interleave may be either  1  or  2  because u 1  and u 2  are a function of B 9  and B 10  , which correspond to interleave  1  and  2  , respectively. Referring to Table 6, in order for two blocks in the same interleave to be corrupted by error, e, the effective length of, e, must be at least 10. In other words, L_min(H 2 )=10. For example if e spans e( 16 )-e( 25 ), then c( 16 ) and c( 21 ) will be corrupted. Therefore, B 2  and in some cases B 10  will be corrupted because u 1  is a function of B 9  and B 10 , which would not resolve the condition of not corrupting many blocks in the same interleave. 
     Furthermore, the decoder  60  in system H 2 , receives (ĉ( 01 )-ĉ( 81 )) and generates {circumflex over (b)}=({circumflex over (b)}( 01 )-{circumflex over (b)}( 80 )). The decoder  60  would further include the inverse H″ decoder to map u 1  and u 2  and restore blocks B 9  and B 10 . Table 6 describes how the decoder obtains {circumflex over (b)}&#39;s. The H″ decoder maps, (ĉ( 25 )-ĉ( 32 ), ĉ( 65 )-ĉ( 73 )) to (vh 01 -vH 26 ). 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 6 
               
               
                   
               
             
             
               
                 Inter- 
                 1 
                 2 
                 3 
                 4 
                 5 
                 6 
                 7 
                 8 
                 9 
                 10 
               
               
                 leave 
               
               
                 De- 
                 {circumflex over (b)}(01)-{circumflex over (b)}(08) 
                 {circumflex over (b)}(09)-{circumflex over (b)}(16) 
                 {circumflex over (b)}(17)-{circumflex over (b)}(24) 
                 {circumflex over (b)}(25)-{circumflex over (b)}(32) 
                 {circumflex over (b)}(33)-{circumflex over (b)}(40) 
                 {circumflex over (b)}(41)-{circumflex over (b)}(48) 
                 {circumflex over (b)}(49)-{circumflex over (b)}(56) 
                 {circumflex over (b)}(57)-{circumflex over (b)}(64) 
                 {circumflex over (b)}(65)-{circumflex over (b)}(72) 
                 {circumflex over (b)}(73)-{circumflex over (b)}(80) 
               
               
                 coded 
               
               
                 bits 
               
               
                 Map 
                 ĉ(01)-ĉ(08) 
                 ĉ(09)-ĉ(16) 
                 ĉ(17)-ĉ(24) 
                 ĉ(33)-ĉ(40) 
                 ĉ(41)-ĉ(48) 
                 ĉ(49)-ĉ(56) 
                 ĉ(57)-ĉ(64) 
                 ĉ(74)-ĉ(81) 
                 vh01-vh08 
                 vh09-vh16 
               
               
                   
               
             
          
         
       
     
     Hereinafter, the system H 3  is described. In this instance, the encoder  25  is set up according to the following parameters: 
     Rate=64/65, 
     S=8, and 
     I=4 
     In the system H 3  , the encoder  25  has rate 64/65, that is, 64 bits input to the encoder  25  and 65 output bits, the ECC block size, S, is 8 bits, and the depth of the interleave, I, of 4. 
     Referring to Table 7, this table provides the encoder  25  parameters where a first row shows the 64 input bits to the encoder  25 , b=(b 01 -b 64 ). The 64 input bits are considered according to the block size, S. Thus, the first row illustrates the 64 input bits in groups of 8 bits (i.e., b 01 -b 08 , b 09 -b 16 , etc.), for S=8. The second row gives corresponding input blocks: 
     
       
           Bi =( b (( i −1)8+1),  b (( i −1) 8+2 ), . . . ,    b (( i −1)8+7),  b ( i −1)8+8)), 0 &lt;i ≦8 
       
     
     The third row gives the interleave index of each block, B, where the interleaves are indexed  1 - 4 . For instance, B 4  belongs to the interleave having index  4 . 
     
       
         
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 7 
               
               
                   
               
             
             
               
                 Input bits 
                 b(01)-b(08) 
                 b(09)-b(16) 
                 b(17)-b(24) 
                 b(25)-b(32) 
                 b(33)-b(40) 
                 b(41)-b(48) 
                 b(49)-b(56) 
                 b(57)-b(64) 
               
               
                 Input 
                 B1 
                 B2 
                 B3 
                 B4 
                 B5 
                 B6 
                 B7 
                 B8 
               
               
                 blocks 
               
               
                 Interleave 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
                 3 
                 4 
               
               
                   
               
             
          
         
       
     
     Accordingly, the interleave position for each input block is as follows: 
     
       
         
               
               
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 B1 
                 B2 
                 B3 
                 B4 
               
               
                   
                 B5 
                 B6 
                 B7 
                 B8 
               
               
                   
                   
               
             
          
         
       
     
     In addition, the encoder  25  of system H 3  includes the H″ encoder. The H″ encoder selects subsets B 7  and B 8  from blocks B 1 -B 8  and maps B 7  and B 8  to u 1  and u 2  , where u 1  includes 8 bits and u 2  includes 9 bits. It must be noted that a relationship between the subsets is non-linear. Accordingly, the encoder  25  performs a permutation of the blocks B 1  , B 2  , B 3  , B 4  , B 5 , and B 6 , and u 1  and u 2 . To prevent channel errors from corrupting many blocks in the same interleave, u 1  and u 2 , which are a function of B 7  and B 8 , cannot be permutated next to the same interleave, that is, next to either B 3  or B 4  . Accordingly, because u 1  and u 2  cannot be permutated next to B 3  or B 4 , u 1  and u 2  can only be permutated next to B 1 , B 2 , B 5 , and B 6 . The permutation is performed as shown in Table 8: 
     
       
         
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 8 
               
               
                   
               
             
             
               
                 Permu- 
                 B1 
                 u1 
                 B2 
                 B3 
                 B4 
                 B5 
                 u2 
                 B6 
               
               
                 tation 
                   
                 (1:8) 
                   
                   
                   
                   
                 (9:17) 
               
               
                 Inter- 
                 1 
                 3 or 4 
                 2 
                 3 
                 4 
                 1 
                 3 or 4 
                 2 
               
               
                 leave, I 
               
               
                 Error, e 
                 e(01)-e(08) 
                 e(09)-e(16) 
                 e(17)-e(24) 
                 e(25)-e(32) 
                 e(33)-e(40) 
                 e(41)-e(48) 
                 e(49)-e(57) 
                 e(58)-e(65) 
               
               
                 Encoded 
                 c(01)-c(08) 
                 c(09)-c(16) 
                 c(17)-c(24) 
                 c(25)-c(32) 
                 c(33)-c(40) 
                 c(41)-c(48) 
                 c(49)-c(57) 
                 c(58)-c(65) 
               
               
                 bits 
               
               
                   
               
             
          
         
       
     
     Under u 1  and u 2 , the interleave may be either 3 or 4 because u 1  and u 2  are a function of B 7  and B 8 , which correspond to interleave  3  and  4  , respectively. Referring to Table 9, in order for two blocks in the same interleave to be corrupted by error, e, the effective length of, e, must be at least  6 . In other words, L_min(H 3 )=10. For example if e spans e( 40 )-e( 49 ), then c( 40 ) and c( 49 ) will be corrupted. Therefore, B 4  and in some cases B 8  will be corrupted because f 1  is a function of B 7  and B 8 , which would not resolve the condition of not corrupting many blocks in the same interleave. 
     Furthermore, the decoder  60  in system H 3 , receives (ĉ( 01 )-ĉ( 65 )) and generates {circumflex over (b)}=({circumflex over (b)}( 01 )-{circumflex over (b)}( 64 )). The decoder  60  would further include the H″ decoder to map u 1  and u 2  and restore blocks B 7  and B 8 . Table 9 describes how the decoder obtains {circumflex over (b)}&#39;s. The H″ decoder maps, (ĉ( 09 )-ĉ( 16 ), ĉ( 49 )-ĉ( 57 )) to (vh 01 -vh 36 ). 
     
       
         
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 9 
               
               
                   
               
             
             
               
                 Interleave 
                 1 
                 2 
                 3 
                 4 
                 5 
                 6 
                 7 
                 8 
               
               
                 Decoded bits 
                 {circumflex over (b)}(01)-{circumflex over (b)}(08) 
                 {circumflex over (b)}(09)-{circumflex over (b)}(16) 
                 {circumflex over (b)}(17)-{circumflex over (b)}(24) 
                 {circumflex over (b)}(25)-{circumflex over (b)}(32) 
                 {circumflex over (b)}(33)-{circumflex over (b)}(40) 
                 {circumflex over (b)}(41)-{circumflex over (b)}(48) 
                 {circumflex over (b)}(49)-{circumflex over (b)}(56) 
                 {circumflex over (b)}(57)-{circumflex over (b)}(64) 
               
               
                 Map 
                 ĉ(01)-ĉ(08) 
                 ĉ(17)-ĉ(24) 
                 ĉ(25)-ĉ(32) 
                 ĉ(33)-ĉ(40) 
                 ĉ(41)-ĉ(48) 
                 ĉ(57)-ĉ(64) 
                 vh01-vh08 
                 vh09-vh16 
               
               
                   
               
             
          
         
       
     
     Hereinafter, the system H 4  is described illustrating an even parity system. In this instance, system H 4  is similar to system H 1  except that the encoder  25  has a rate of 64/66. That is, the encoder  25  is set up according to the following parameters: 
     Rate=64/66, 
     S=8, and 
     I=3 
     In the system H 1 , the ECC block size, S, is 8 bits, and the depth of the interleave, I, of  3 . The encoder  25  maps b( 01 )-b( 64 ) to (c( 01 )-c( 65 ),c( 66 )), where c( 01 )-c( 65 ) is obtained using the system H 1  previously described. The encoder  25  in the system H 4  processes c( 66 ) such that the output corresponding to c( 01 )-c( 66 ) has an even parity at the output of the precoder  30 . More specifically,            C        (   66   )       =     s1   +   s2   +     c        (   01   )       +     c        (   02   )       +     c        (   05   )       +     c        (   06   )       +     c        (   09   )       +     c        (   10   )       +     c        (   13   )       +     c        (   14   )       +     c        (   17   )       +     c        (   18   )       +     c        (   21   )       +     c        (   22   )       +     c        (   25   )       +     c        (   26   )       +     c        (   29   )       +     c        (   30   )       +     c        (   33   )       +     c        (   34   )       +     c        (   37   )       +     c        (   38   )       +     c        (   41   )       +     c        (   42   )       +     c        (   45   )       +     c        (   46   )       +     c        (   49   )       +     c        (   50   )       +     c        (   53   )       +     c        (   54   )       +     c        (   57   )       +     c        (   58   )       +     c        (   61   )       +     c        (   62   )       +       c        (   65   )            (     mod                 2     )           ,                          
     where (s 1 , s 2 ) is the state of the precoder when c( 01 ) is processed. Similar to the system H 1 , L_min(H 4 )=6. 
     Furthermore, in the system H 4 , the decoder  60  receives (ĉ( 01 )-ĉ( 66 )) and generates {circumflex over (b)}=({circumflex over (b)}( 01 )-{circumflex over (b)}( 64 )) as shown in the system H 1 . Specifically, the decoder  60  drops, ĉ( 66 )) and generates the received codeword, and processes (ĉ( 01 )-ĉ( 65 )) as shown in the system H 1  to generate {circumflex over (b)}=({circumflex over (b)}( 01 )-{circumflex over (b)}( 64 )). In an alternative embodiment, the parity bit may be inside the codeword. Furthermore, in an alternative embodiment, more than one bit may be used to force an algebraic structure of a code. 
     In an embodiment of the present invention, the blocks B 1 , B 2 , etc. selected to be further encoded by the low rate H″ encoder in the encoder  25 , are selected so that no two consecutive blocks in the same codeword are in the same interleave and that no two blocks in two consecutive codewords are in the same interleave. For instance, assuming that the encoder  25  is set up according to the following parameters: 
     Rate=80/81, 
     S=8, and 
     I=4 
     Further, the encoder  25  receives input bits b( 01 ) to b( 160 ) or, equivalently, input blocks B 1  to B 20  , where: 
     
       
           Bi =( b (( i −1)8+1),  b (( i −1)8+2), . . . ,  b (( i −1)8+7),  b (( i −1)8+8)), 0 &lt;i ≦20 
       
     
     Referring to Table 10, this table provides the encoder  25  parameters where a first row shows a first  80  input bits to the encoder  25 , b=(b( 01 )-b( 80 )). The  80  input bits are considered according to the block size, S. Thus, the first row illustrates the  80  input bits in groups of 8 bits (i.e., b( 01 )-b( 08 ), b( 09 )-b( 16 ), etc.), for S=8. Table 11 provides the encoder  25  parameters where a first row shows a second  80  input bits to the encoder  25 , b=(b( 81 )-b( 160 )). The third row of Table 10 and Table 11 gives the interleave index of each block, B, where interleaves are indexed  1 - 4 . 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 10 
               
               
                   
               
             
             
               
                 Input Bits 
                 b(01)- 
                 b(09)- 
                 b(17)- 
                 b(25)- 
                 b(33)- 
                 b(41)- 
                 b(49)- 
                 b(57)- 
                 b(65)- 
                 b(73)- 
               
               
                   
                 b(08) 
                 b(16) 
                 b(24) 
                 b(32) 
                 b(40) 
                 b(48) 
                 b(56) 
                 b(64) 
                 b(72) 
                 b(80) 
               
               
                 Input 
                 B1 
                 B2 
                 B3 
                 B4 
                 B5 
                 B6 
                 B7 
                 B8 
                 B9 
                 B10 
               
               
                 blocks 
               
               
                 Interleave 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
               
               
                   
               
             
          
         
       
     
     
       
         
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 11 
               
               
                   
               
             
             
               
                 Input bits 
                 b(81)- 
                 b(90)- 
                 b(97)- 
                 b(105)- 
                 b(113)- 
                 b(121)- 
                 b(129)- 
                 b(137)- 
                 b(145)- 
                 b(153)- 
               
               
                   
                 b(88) 
                 b(96) 
                 b(104) 
                 b(112) 
                 b(120) 
                 b(128) 
                 b(136) 
                 b(144) 
                 b(152) 
                 b(160) 
               
               
                 Input 
                 B11 
                 B12 
                 B13 
                 B14 
                 B15 
                 B16 
                 B17 
                 B18 
                 B19 
                 B20 
               
               
                 blocks 
               
               
                 Interleave 
                 3 
                 4 
                 1 
                 2 
                 3 
                 4 
                 1 
                 2 
                 3 
                 4 
               
               
                   
               
             
          
         
       
     
     Accordingly, the interleave position for each input block is as follows: 
     
       
         
               
               
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 B1  
                 B2  
                 B3  
                 B4  
               
               
                   
                 B5  
                 B6  
                 B7  
                 B8  
               
               
                   
                 B9  
                 B10 
                 B11 
                 B12 
               
               
                   
                 B13 
                 B14 
                 B15 
                 B16 
               
               
                   
                 B17 
                 B18 
                 B19 
                 B20 
               
               
                   
                   
               
             
          
         
       
     
     In one embodiment, if B 8 , B 9 , and B 10  are selected and mapped to u 1  and u 2  , then the encoder  25  permutates blocks B 1 , B 2 , B 3 ′, B 3 ″, B 4 , B 5 , B 6 , B 7 ′, B 7 ″, u 1 , and u 2  of the first codeword as shown in Table 12. The first block of the second codeword is also shown in Table  12 , to be later discussed. 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 12 
               
               
                   
               
             
             
               
                 Permutation 
                 B1 
                 B2 
                 B3′ 
                 u1 
                 B3″ 
                 B4 
                 B5 
                 B6 
                 B7′ 
                 u2 
                 B7″ 
                 B11 
               
               
                 Interleave, I 
                 1 
                 2 
                 3 
                 1, 2, or 4 
                 3 
                 4 
                 1 
                 2 
                 3 
                 1, 2, or 4 
                 3 
                 3 
               
               
                   
               
             
          
         
       
     
     As shown in Table  12, the last block B7″ of the first codeword and the first block of the second codeword B11 are in the same interleave, 3, which is an undesirable event. Accordingly, rather than selecting B8, B9, and B10, the system would select B7, B9, and B10 to assure that no two blocks in the same codeword are in the same interleave and that no two blocks in two consecutive codewords are in the same interleave to assure that the predetermined error correction capability, t, is not exceeded, as illustrated in Table  13: 
     
       
         
               
               
               
               
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 13 
               
               
                   
               
             
             
               
                 Permutation 
                 B1 
                 B2 
                 B3 
                 B4′ 
                 u1 
                 B4″ 
                 B5 
                 B6 
                 B8′ 
                 u2 
                 B8″ 
                 B11 
               
               
                 Interleave, I 
                 1 
                 2 
                 3 
                 4 
                 1, 2, or 3 
                 4 
                 1 
                 2 
                 4 
                 1, 2, or 3 
                 4 
                 3 
               
               
                   
               
             
          
         
       
     
     FIG. 2 is a flowchart illustrating an interleave process performed by the magnetic recording system, in accordance with an embodiment of the present invention. At operation  100 , an encoder rate is selected, for instance, 64/65 as in the system H 1 . At operation  110 , the input block size, S, is selected for the input bits, b(i)&#39;s, to the encoder. At operation  120 , the input bits, b(i)&#39;s, to the encoder  25  are arranged into blocks, (B 1 -Bk), where each block, (B 1 -Bk), has the input block size, S, where k is a total number of block as (a total number of b(i)&#39;s)/S. At operation  130 , a depth of the interleave I, where I&lt;k, is selected. At operation  140 , at least one block, (Bi 1 , Bi 2 , . . . , Biq), is selected from the blocks (B 1 -Bk) such that no two blocks in, (Bi 1 , Bi 2 , . . . , Biq) are in the same interleave, where q is a number of blocks selected from k blocks. Accordingly, (Bj 1 , Bj 2 , . . . Bj(k−q))=(B 1 -Bk)−(Bi 1 , Bi 2 , . . . , Biq), are the blocks remaining after the at least one subset, (Bi 1 , Bi 2 , . . . , Biq), is selected. 
     At operation  150 , the at least one subset, (Bi 1 , Bi 2 , . . . , Biq) is mapped to f=(f 1 , f 2 , . . . , fp) using the low rate encoder, such as the  16 / 17  trellis encoder, in the encoder  25 , where p is a number of output bits, f, from the low rate encoder, for instance, p= 17  in this case. At operation  160 , ((f 1 , f 2 , . . . , fp), Bj 1 , Bj 2 , Bj(k−q)) are permutated where the output of the encoder  25  is c=(c( 1 ), c( 2 ), . . . , c(p+(k−q) S))=P(((f 1 , f 2 , . . . , fp), Bj 1 , Bj 2 , Bj(k−q)), where P is a permutation operating on the bits of vector ((f 1 , f 2 , . . . , fp), Bj 1 , Bj 2 , Bj(k−q)) and satisfying the following (a) and (b) conditions: 
     (a) If for, c(i 1 ) and c(i 2 ), in c, where c(i 1 ) and c(i 2 ) are randomly chosen, 
     (c(i  1  ) ε f and c(i 2 ) ε B) and (c(i 1 ) and c(i 2 ) are in a same interleave), OR 
     (c(i 1 ) ε B and c(i 2 ) ε B) and (c(i 1 ) and c(i 2 ) are in a same interleave) AND (c(i 1 )&amp;c(i 2 ) are in different blocks), where B=(Bj 1 , Bj 2 , . . . Bj(k−q))=(B 1 -Bk)−(Bi 1 , Bi 2 , . . . , Biq) 
     then, |i 1 -i 2  |&gt;{circumflex over (M)}, for some predetermined integer {circumflex over (M)}. 
     (b) A last bit(s) in a codeword and a first bit(s) in a next codeword cannot be in a same interleave. 
     Furthermore, the blocks in the codeword are defined as parsing the codeword, c, into blocks P 1  and PL such that all bits in Pi, 1≦i≦L, come from one of the blocks ((Bj 1 , Bj 2 , . . . Bj(k−q)), f) and Pi and Pi+1 come from different blocks. 
     At operation  170 , the system adds a bit, c(m), at an end of the codeword to generate an even parity of the codeword, wherein the codeword includes c( 1 ) to c(m), for m=p+(k+q)S+1. In general, several bits may be added to generate other parity structures or algebraic structures. 
     In an alternative embodiment the correction capability on each interleave may be t, where at least one subset, (Bi 1 , Bi 2 , . . . , Biq), is selected from the blocks (B 1 -Bk) such that no t+ 1  blocks in, (Bi 1 , Bi 2 , . . . , Biq) are in the same interleave, where q is a number of blocks selected from k blocks. 
     The many features and advantages of the invention are apparent from the detailed specification and, thus, it is intended by the appended claims to cover all such features and advantages of the invention that fall within the true spirit and scope of the invention. Although the system of the present invention has been described in view of a magnetic recording medium, the system may be incorporated and applied to other communication systems. Further, since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation illustrated and described, and accordingly all suitable modifications and equivalents may be resorted to, falling within the scope of the invention.