Abstract:
A hard disk drive read circuit for d=1 run length limited (RLL) encoded data which processes multiple consecutive data samples in parallel. The circuit of the present invention receives an analog signal from the read head of the hard disk drive. The circuit comprises a plurality of digital detection channels, coupled to the analog signal, each channel outputting an alternate bit of digital data represented by the analog signal. A timing circuit, coupled to the plurality of digital detection channels, generates a plurality of timing signals controlling the plurality of digital detection channels. The timing circuit derives timing information from one of the digital detection channels. The d=1 RLL code is modified so that there are at most nine consecutive 0&#39;s in the digital data output by the digital detection channel from which the timing circuit derives the timing information. An encoder generates the encoded digital data to be recorded on the hard disk drive.

Description:
FIELD OF THE INVENTION 
     The present invention relates to hard disk drive read circuitry and in particular to a hard disk drive read circuit for d=1 run length limited encoded data which processes multiple consecutive data samples in parallel. 
     BACKGROUND OF THE INVENTION 
     In digital CMOS circuits, power dissipation is proportional to clock frequency. If the clock frequency is reduced to reduce the power dissipation, the data throughput of the circuit is also reduced, unless data is processed in parallel by additional data processing channels. If, for example, the clock frequency is halved, the original throughput can be maintained if two consecutive data samples are processed in parallel. As long as the additional processing channel does not double the overall circuitry, overall power dissipation will be reduced, or a higher data throughput can be achieved for the same power dissipation. 
     Hard disk drive technology is one area where reduction of power dissipation is important. The read decoding circuitry of such hard drives operates at a very high frequency and is typically implemented with digital CMOS circuits. Reduction of the clock frequency of hard drive read decoding circuitry would provide a significant reduction in power dissipation. 
     SUMMARY OF THE INVENTION 
     The present invention is a hard disk drive read circuit for d=1 run length limited encoded data which processes multiple consecutive data samples in parallel. The circuit of the present invention receives an analog signal from the read head of the hard disk drive. The circuit comprises a plurality of digital detection channels, coupled to the analog signal, each channel outputting an alternate bit of digital data represented by the analog signal. A timing circuit, coupled to the plurality of digital detection channels, generates a plurality of timing signals controlling the plurality of digital detection channels. The timing circuit derives timing information from one of the digital detection channels. 
     In another aspect, the present invention is a d=1 RLL code modified so that there are at most nine consecutive 0&#39;s in the digital data output by the digital detection channel from which the timing circuit derives the timing information. 
     In another aspect, the present invention is an encoder which generates the encoded digital data to be recorded on the hard disk drive. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The details of the present invention, both as to its structure and operation, can best be understood by referring to the accompanying drawings, in which like reference numbers and designations refer to like elements. 
     FIG. 1 is a block diagram of a hard disk drive read circuit with half-speed timing, in accordance with the present invention. 
     FIG. 2 is a finite state transition diagram of a d=1 RLL code, in accordance with the present invention. 
     FIG. 3 is a block diagram of an encoder 300, in accordance with the present invention, which generates a datastream encoded with the code of FIG. 2. 
     FIG. 4 is a block diagram of a decoder 118 of FIG. 1, in accordance with the present invention, which decodes a datastream encoded with the code of FIG. 2. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 is a block diagram of a hard disk drive read circuit with half-speed timing. The analog signal from the read head is filtered by analog filter 102. The filtered analog signal is then applied to both digital detection channels 104a and 104b. Each digital detection channel includes an analog to digital converter (ADC) 106a and 106b, an equalizer 108a and 108b and a detector 110a and 110b. ADCs 106a and 106b sample the analog read signal at timing intervals defined by sample clock signals 120a and 120b from phase lock oscillator (PLO) 116. Sample clock signals 120a and 120b are the same frequency, but alternate phases, so that alternate data bits are detected and output by each digital detection channel. Digital detection channel 104a outputs the odd data bits--bits 1, 3, 5, etc. Digital detection channel 104b output the even data bits--0, 2, 4, etc. The sampled read signal for digital detection channels 104a and 104b are equalized by equalizers 108a and 108b, respectively. The binary data is detected by the respective detector, 110a or 110b of each digital detection channel. The odd bit binary data output 120a and the even bit binary data output 120b are input to decoder 118, which generates the final output data from the read circuit. 
     Timing signals are derived by timing circuit 122 from only one digital detection channel, channel 104b. Digital timing phase signals are extracted from digital detection channel 104b by timing phase circuit 112. The digital signals are converted to analog by digital to analog converter (DAC) 114 and are applied to phase lock oscillator (PLO) 116. PLO 116 generates the sample clock signal for ADCs 106a and 106b. The timing phase signals close the loop and lock PLO 116 onto the actual frequency of the read signal. 
     In a preferred embodiment, a d=1 run length limited (RLL) code is used to encode the signal recorded on the hard drive. A d=1 RLL code has the sole constraint that 1&#39;s are isolated, there are not two or more consecutive 1&#39;s. However, there can be any number of consecutive 0&#39;s. Consecutive 0&#39;s have no transitions and so cannot carry timing information. A modified d=1 RLL code which contains adequate timing information must be used. In addition, because timing signals are extracted from only the even channel 104b, the signal recorded on the hard drive must be encoded so that all necessary timing information is carried by the even bits. Therefore, a modified d=1 RLL code must be used with a constraint on the number of consecutive 0&#39;s in the even sub-sequence. This constraint is represented by the quantity k even . 
     In a preferred embodiment, a modified d=1 RLL code has k even  =9. This code is preferred because of its resulting encoding rate. The encoding rate of standard d=1 RLL is 2:3. This means that three bits of encoded data are generated for every two bits of unencoded data. A preferred code, having k even  =9, also has an encoding rate of 2:3. 
     FIG. 2 is a finite state transition diagram of a d=1 RLL code having a constraint k=k even . The allowable constrained sequences are those which can be generated by this diagram. The states are represented by number enclosed by circles. Transitions from state to state are caused by presentation of pairs of bits in the datastream. Each pair of bits includes one odd bit and one even bit and is represented as OE, where O is the odd bit and E is the even bit. Pairs of bits must be used to cause state transitions because the k even  constraint is only on the even bits. The sequence begins in state 0. Presentation of a 01 causes the sequence to remain in state 0. Presentation of 00 causes the sequence to transition to state 1. There are no transitions from state 0 due to presentation of 10 or 11 because those bit pairs are not allowed after a 01, due to the constraint that there cannot be consecutive 1&#39;s. In states 1 through k-1, presentation of a 00 or 10 causes the sequence to transition to the next state. Presentation of a 01 causes a transition back to state 0. Again, there are no transitions for 11 due to the constraint on consecutive 1&#39;s. State k is reached only after the number of even bit 0&#39;s equals the value k. The only allowed transition from state k is 01, which returns the sequence to state 0. 
     FIG. 3 is a block diagram of an encoder 300, which generates a datastream encoded with a modified d=1 code meeting the above described constraints. Encoder 300 is preferably a finite state machine, but software implementation is also possible. Encoder 300 includes input block 307, logic block 302, storage block 304 and output block 308. Encoder 300 outputs 6 encoded bits for every 4 bits input. Input block 307 receives unencoded data and transmits it to inputs b 3  -b 0  of logic block 302 via lines 310-13. Encoded data is output from logic block 302 via outputs c 5  -c 0  over lines 320-25 to output block 308, which outputs the encoded data. Next state information is output from logic block 302 via outputs t 2  -t 0  330-32. The next state is stored in storage register 304 as controlled by storage clock 306. Once stored, the next state becomes the present state and is input to logic block 302 via inputs s 2  -s 0  340-42. The logic included in logic block 302 is shown in Table A. In order to reduce the gate count, intermediate products, which are only used internally, are generated. 
     
                       TABLE A______________________________________Encoder Outputpresent state      c.sub.5 c.sub.4 c.sub.3 c.sub.2 c.sub.1 c.sub.0user byte          d.sub.5 d.sub.4 d.sub.3 d.sub.2 d.sub.1 d.sub.0intermediate productsx.sub.0            s.sub.1 s.sub.0x.sub.1            b.sub.2 b.sub.1 + b.sub.0x.sub.1            c.sub.0 + b.sub.3outputc.sub.5            s.sub.1 s.sub.0 b.sub.1 c.sub.2 + b.sub.1 b.sub.0              c.sub.0 +              b.sub.2 b.sub.0 c.sub.0 + x.sub.0 x.sub.2 + s.sub.1              c.sub.2c.sub.4            s.sub.2 c.sub.2 x.sub.0 x.sub.2 + s.sub.1 b.sub.3              c.sub.2c.sub.3            b.sub.2 b.sub.1 c.sub.5 x.sub.0 + c.sub.5 c.sub.0              x.sub.1 +              b.sub.3 c.sub.5 c.sub.0 + s.sub.2 x.sub.2c.sub.2            s.sub.2 c.sub.0 x.sub.0 + s.sub.2 s.sub.1 s.sub.0 +              s.sub.0 x.sub.2c.sub.1            b.sub.3 c.sub.4 c.sub.2 + s.sub.2 b.sub.0c.sub.0            s.sub.2 b.sub.3 x.sub.0 + s.sub.2 x.sub.1Encoder Next Stateintermediate productsy.sub.0            b.sub.3 + s.sub.0y.sub.1            s.sub.1 b.sub.1 + s.sub.1 b.sub.1y.sub.2            y.sub.0 + s.sub.1y.sub.3            b.sub.2 t.sub.2next statet.sub.2            s.sub.2 b.sub.2 b.sub.1 y.sub.2 + s.sub.2 b.sub.1              b.sub.0 y.sub.2 +              s.sub.2 s.sub.0 b.sub.2 y.sub.2 +              s.sub.2 s.sub.0 b.sub.2 y.sub.1 + s.sub.2 b.sub.2              b.sub.1 b.sub.0t.sub.1            s.sub.2 b.sub.2 b.sub.0 y.sub.2 + s.sub.2 s.sub.0              t.sub.2 y.sub.1 +              b.sub.1 y.sub.3 + s.sub.1 y.sub.3t.sub.0            b.sub.1 b.sub.0 t.sub.1 y.sub.2 + s.sub.2 b.sub.1              t.sub.2 +              y.sub.2 y.sub.3 + s.sub.2 y.sub.3 + s.sub.2 t.sub.1______________________________________              2 
    
     The resulting code is shown in Table B. The rows are indexed by the states, 0 to 6. The columns are indexed by the inputs, which are 4-bit binary strings written in decimal. The entries are of the form cls, where c is the decimal representation of the 6-bit output string and s is the next state. 
     
                       TABLE B______________________________________0      1       2    3     4    5     6    7______________________________________0    17/0   16/1    17/1 16/2  17/2 16/3  16/4 16/51    5/0    4/1     5/1  4/2   5/2  4/3   4/4  4/52    0/1    2/1     0/3  2/3   0/4  2/4   0/6  2/63    41/0   36/1    41/1 36/2  41/2 36/3  36/4 36/54    17/0   16/1    17/1 16/2  17/2 16/3  16/4 16/55    32/3   34/3    32/1 34/1  32/6 34/6  32/4 34/46    0/1    2/1     32/1 34/1  0/4  2/4   32/4 34/4______________________________________8      9       10   11    12   13    14   15______________________________________0    1/0    18/1    1/1  18/2  1/2  18/3  18/4 18/51    21/0   20/1    21/1 20/2  21/2 20/3  20/4 20/52    8/1    10/1    8/3  10/3  8/4  10/4  8/6  10/63    9/0    33/0    1/1  9/1   1/2  33/1  9/2  33/24    37/0   18/1    37/1 18/2  37/2 18/3  18/4 18/55    40/3   42/3    40/1 42/1  40/6 42/6  40/4 42/46    8/1    10/1    40/1 42/1  8/4  10/4  40/4 42/4______________________________________ 
    
     FIG. 4 is a block diagram of a decoder 118 of FIG. 1, which decodes a datastream encoded with the modified d=1 code of Table B. The odd bit binary data output 120a and the even bit binary data output 120b are input to demultiplexer 404. Demultiplexer 404 demultiplexes the separate odd and even bits into integrated six-bit strings and outputs the six-bit strings to storage register 408. Two storage registers are needed because two six-bit strings are used to generate each four-bit output nibble. Register 406 stores the six-bit string currently being decoded. Register 408 stores the six-bit string to be decoded next. The six bit outputs from register 406, outputs 410 to 415, are input to decoding logic block 402, on inputs c 5  to c 0 . The six bit outputs from register 408, outputs 420 to 425, are input to decoding logic block 402 on inputs d 5  to d 0 . Decoded four-bit groups are output from outputs b 3  to b 0  430 to 433. After each four-bit group is output, the six-bit string stored in register 408 replaces the string stored in register 406 and a new string is stored in register 408. 
     The logic included in decoding logic block 402 is shown in Table C. In order to reduce the gate count, intermediate products, which are only used internally, are generated. 
     
                       TABLE C______________________________________Decoderpresent state     c.sub.5 c.sub.4 c.sub.3 c.sub.2 c.sub.1 c.sub.0user byte         d.sub.5 d.sub.4 d.sub.3 d.sub.2 d.sub.1 d.sub.0intermediate productsz.sub.0           c.sub.2 + c.sub.4z.sub.1           c.sub.3 c.sub.1z.sub.2           d.sub.2 d.sub.0z.sub.3           d.sub.4 d.sub.0 + d.sub.5 d.sub.2z.sub.4           c.sub.0 d.sub.4z.sub.5           d.sub.5 z.sub.1z.sub.6           d.sub.4 z.sub.2z.sub.7           c.sub.0 d.sub.2z.sub.8           c.sub.3 c.sub.2z.sub.9           d.sub.5 z.sub.0user byteb.sub.3           c.sub.5 c.sub.0 z.sub.9 + c.sub.5 c.sub.0 z.sub.5 +             c.sub.1 c.sub.4 + c.sub.2 c.sub.4 + c.sub.3 c.sub.0b.sub.2           d.sub.2 z.sub.0 z.sub.2 z.sub.4 + b.sub.0 z.sub.7             z.sub.8 +             c.sub.0 d.sub.2 z.sub.4 + d.sub.5 d.sub.2 d.sub.0 +             z.sub.0 z.sub.6 + b.sub.0 z.sub.6 + d.sub.5 z.sub.0b.sub.1           c.sub.5 b.sub.2 z.sub.0 z.sub.6 z.sub.7 + c.sub.5             d.sub.2 b.sub.2 z.sub.9 +             c.sub.5 d.sub.2 z.sub.0 z.sub.4 + c.sub.5 z.sub.5             z.sub.6 +             c.sub.1 b.sub.0 z.sub.6 + c.sub.0 b.sub.0 z.sub.0 +             c.sub.5 d.sub.5 b.sub.2 + b.sub.2 z.sub.7b.sub.0           c.sub.5 b.sub.3 z.sub.8 + c.sub.3 b.sub.3 z.sub.7 +             d.sub.2 z.sub.0 z.sub.4 + c.sub.0 z.sub.0 z.sub.3 +             c.sub.1 c.sub.4______________________________________ 
    
     The resulting decoding is shown in Table D. Each row corresponds to the current 6-bit string, which is stored in register 406, written in decimal. Each column corresponds to the next 6-bit string, which is stored in register 408, written in decimal. The table entries are the 4-bit output groups, written decimal. As can be seen, some combinations cannot occur and are designated by a &#34;-&#34;. 
     
                       TABLE D______________________________________c inputsd inputs 0,2,8,10         1,9,33,36,41                   4,5,20,21                          16,17,18,37                                  32,34,40,42______________________________________0     6       2         0      4       61,21,37 12      8         10     8       --2     7       3         1      5       74,16,36 3       5         1      6       75,17,41 4       0         2      0       --8     14      10        8      12      149     14      8         11     8       --10    15      11        9      13      1518,20 11      13        9      14      1532    4       0         2      6       433    15      9         13     9       --34    5       1         3      7       540    12      8         10     14      1242    13      9         11     15      13______________________________________ 
    
     Although specific embodiments of the present invention have been described, it will be understood by those of skill in the art that there are other embodiments which are equivalent to the described embodiment. Accordingly, it is to be understood that the invention is not to be limited by the specific illustrated embodiment, but only by the scope of the appended claims.