AU606409B2 - Disk drive controller - Google Patents

Disk drive controller Download PDF

Info

Publication number
AU606409B2
AU606409B2 AU14755/88A AU1475588A AU606409B2 AU 606409 B2 AU606409 B2 AU 606409B2 AU 14755/88 A AU14755/88 A AU 14755/88A AU 1475588 A AU1475588 A AU 1475588A AU 606409 B2 AU606409 B2 AU 606409B2
Authority
AU
Australia
Prior art keywords
data
signal
drive
clock
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
AU14755/88A
Other versions
AU1475588A (en
Inventor
Brian Sander
Wendell Sander
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of AU1475588A publication Critical patent/AU1475588A/en
Application granted granted Critical
Publication of AU606409B2 publication Critical patent/AU606409B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10009Improvement or modification of read or write signals
    • G11B20/10046Improvement or modification of read or write signals filtering or equalising, e.g. setting the tap weights of an FIR filter
    • G11B20/10212Improvement or modification of read or write signals filtering or equalising, e.g. setting the tap weights of an FIR filter compensation for data shift, e.g. pulse-crowding effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • G11B20/1252Formatting, e.g. arrangement of data block or words on the record carriers on discs for discontinuous data, e.g. digital information signals, computer programme data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1407Digital recording or reproducing using self-clocking codes characterised by the use of two levels code representation depending on a single bit, i.e. where a one is always represented by a first code symbol while a zero is always represented by a second code symbol
    • G11B20/1419Digital recording or reproducing using self-clocking codes characterised by the use of two levels code representation depending on a single bit, i.e. where a one is always represented by a first code symbol while a zero is always represented by a second code symbol to or from biphase level coding, i.e. to or from codes where a one is coded as a transition from a high to a low level during the middle of a bit cell and a zero is encoded as a transition from a low to a high level during the middle of a bit cell or vice versa, e.g. split phase code, Manchester code conversion to or from biphase space or mark coding, i.e. to or from codes where there is a transition at the beginning of every bit cell and a one has no second transition and a zero has a second transition one half of a bit period later or vice versa, e.g. double frequency code, FM code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/1087Digital recording or reproducing wherein a selection is made among at least two alternative ways of processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/1087Digital recording or reproducing wherein a selection is made among at least two alternative ways of processing
    • G11B2020/10879Digital recording or reproducing wherein a selection is made among at least two alternative ways of processing the kind of record carrier being the selection criterion
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

Dated this 19th day of April, 1988 (a member of the firm of DAVIES COLLISON for and on behalf of the Applicant).
,Melbourne and Canberra.
To: THE COMMISSIONER OF PATENTS LODGED AT SUB-OFFICE 1 9 APR 1988 Melboume a vie s Co we, COMMONW EA'L T H OF A S T R A L IA i PATENT ACT 1952 COMPLETE SPECIFICATION6 0 01 (Original) FOR OFFICE USE Class Int. Class Application Number: Lodged: Complete Specification Lodged: Accepted: Published: Priority: 4( 4a 4 *s 0 9 9) 9 4,r Related Art: This document contains the amendments made under Section 49 and is correct for printing.
Name of Applicant: Address of Applicant: APPLE COMPUTER, INC.
20525 Mariani Avneue Cupertino, California 95014, United States of America WENDELL SANDER and BRIAN SANDER .94 4 0 4 *44 4.
4 4 Actual Inventor(s): Address for Service: DAVIES COLLISON, Patent Attorneys, 1 Little Collins Street, Melbourne, 3000.
Complete Specification for the invention entitled: "DISK DRIVE CONTROLLER" The following statement is a full description of this invention, including the best method of performing it known to us -1i- i I:1 i lii i la SUMMARY OF THE INVENTION The present invention is recited in the accompanying independent claims.
An integrated disk controller chip is disclosed hereinafter which is designed to read and write Manchester and Group Code Recording ("GCR") formatted disks and other formats under program control.
The controller uses a programmable parameter scheme which makes it possible to read and write 3 inch variable and fixed speed drives, as well as standard 54 inch drives: Thus, with the controller, it is possible to read and write both MFM formatted disks, such as used by IBM personal computers and GCR formatted 15 disks, such as used by Apple personal computers on the same disk drive. It is also possible to write MFM format on a 3 inch variable speed drive in such a way that it can be read back on fixed speed 3 inch drives.
I The controller provides the ability to perform write precompensation to 20 correct for peak shift effects which occur in magnetically stored media.
SAlso provided is a form of read post compensation which corrects for peak shift effects on disks with insufficient precompensation. A two byte read and write S" FIFO is used to provide software flexibility.
The controller allows the phase lines to be programmed as either inputs or outputs which makes it possible to interface with a wide variety of drives.
Additionally, rather than using a fixed rate multiplier, as frequently employed in prior art controllers, the controller uses a plus/minus rate multiplier to correct for symmetry and frequency errors. Other advanced features of the controller include the use 9OlIoIgcpdaL.33,1475AI I~F L- i i .v S of half clock circuits to provide half clock resolution in the signal being written to disk and the capability of operating at continuously variable clock speeds and data rates dynamically programmable by the computer.
BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 shows a particular pattern of l's and 0's in MFM r ~rrr or t 0 0 44 *4 4400 00*0 004 a t at tr 000* format.
Figure controller.
2 is an overview block diagram of the invented Figure 3 is an overview block diagram of read logic 21.
Figure logic 41 4a is logic diagram showing a portion of half read Figure 4b is a graphical representation of the signals generated by half read logic 41.
Figure 4c is a graphical representation illustrating particular examples of when the signal SHIFT is generated.
Figure 5 is a detailed block diagram of post compensation logic Figure 6 is a state machine diagram of correction stLte machine Figure 7 is a detailed block diagram of error correction logic 56.
Figure a is an overview block diagram of write logic 27.
Figure 9 is a block diagram of write data transformation logic Figure 10 is a detailed block diagram of precompensation logic 77.
Figure 11 is a detailed block diagram of half write logic I I 14
I
99* I 99 o 999 9991
I
9999 9.994-9 9 1 Ii 4- 1 9 It 99 99 9 9 99 9909 9999 4 9 II 9 99949* 9 9 is h I DETAILED DESCRIPTION OF THE INVENTION Although the present invention uses various codes for reading from and writing data to disks, it will be described with reference to the most frequently utilized coding scheme, namely Manchester or MFM code. The MFM code follows two basic rules: first, a transition occurs any time that a one is encountered in the data pattern; and second, a transition occurs between any two adjacent zeroes. As shown in Figure 1, MFM code produces a fseries of 2, 3 and 4 unit distances (cells) between transitions bD which, based on the these distances, when read back, can be ae«, resolved into the actual data represented. Details regarding the reading and writing of GCR formatted disks may be found in U.S.
Patent No. 4,210,959 ;an d n f Gp arIci4nn C4i..1 943,839-.
o In the following description, numerous specific details are set forth such as specific word or byte lengths, etc., to provide a thorough understanding of the present invention. However, it will be obvious to one skilled in the art that the present invention may be practiced without such specific details. In other instances, well known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail.
MFM Sector Format The concept of writing 2, 3 and 4 unit cells provides the mechanism by which the data is translated and written on the disk. But there must be some method for organizing the data so that a specific group of data can be easily located. This is done by writing the data in a sector format. A sector consists of 1) information which allows a controller to find the start of ~rP;irPIIQllan~ -nrsa~ns4;1~ i the sector, 2) details about which sector is being read, 3) which side of the disk is being read, 4) which track is being read (a track is a group of sectors), 5) the length of the sector, and 6) cyclical redundancy check (CRC) error detection information.
Table 1 shows the organization of an MFM sector.
TABLE 1 4i I 4 f 04 O
A
4 4t 0 44 04 0 6i 0006i NO. OF BYTES 80 DATA WRITTEN 4E 12 00 TRACK ID 3 C2 (Mark Byte) 1 FC (Index Mark) 50 4E 12 00 3 Al (Mark Byte) 1 FE (ID Address Mark) SECTOR ID 1 TRACK NUMBER 1 SIDE NUMBER 1 SECTOR NUMBER 1 SECTOR LENGTH 2 CRC INFORMATION 22 4E 12 00 3 Al (Mark Byte) DATA FIELD 1 FB (Data Address Mark) 256 DATA 2 CRC INFORMATION 54 1-
C-
i 1 These bytes are only written at the beginning of a track.
These bytes are only written at the end of a track.
Note: The sector ID and data field bytes are repeated for each sector on a track.
The beginning of a track or sector consists of a number of bytes of 4E's (hexidecimal) which serve as a buffer zone between regions of meaningful information. The next bytes in the pattern o c that are written are twelve bytes of zeroes (2 unit cells), known o 4 as the "bytes of zeroes". These bytes are used to locate the 00 o 0 beginning of either a track, a sector ID or a sector data field.
0 Following the bytes of zeroes are three mark bytes. A mark byte 0 0° is a special byte containing a pattern which violates the basic rules of MFM has a missing transition). This illegal 'o ,o pattern can be recognized, and provides two very important ao functions: first, since it is always in the byte that follows the bytes of zeroes, it serves as verification that the zeroes are indeed the beginning of a track, sector ID or sector data field and not data (l's and O's) in a data field and second, the mark byte provides a reference point or sychronization from which the MFM rules may be applied to decode the data. (Without synchronizing on a known pattern, it is impossible to tell the difference between a string of l's and a string of After the mark byte, the next byte encountered in the format pattern is the information byte. This byte is used to determine whether the region being read is the track information, the sector ID, or the sector data field. The next four bytes in the sector ID contain the track number, side number, sector number and sector length.
The next bytes are the cyclical redundancy checks or CRC bytes which are used to detect errors according to well-known techniques.
6 i I' I. L L i-- With the basic concepts of the MFM pattern and MFM sectors in mind, the functions and structure of the invented controller will now be set forth, namely how it handles the problems of reading, writing and interfacing with a processor.
An overview block level diagram of the invented controller is shown in Figure 2. Controller 11 comprises register block r which serves as an interface between the processor and the ,controller logic; interface logic 16 which serves as an interface between the controller and one or more disk drives; clock logic o 0 t 17, which generates a signal TCLK used by the controller from the o*0 signal FCLK generated by the processor; read logic 21; FIFO, CRC and mark logic 24; write logic 27; and parameter RAM 31. The device select signal DEV must be asserted by the processor in order for the controller to utilize the signals on address lines o 00 o o AO A3 and data lines DO D7. The controller is 00° reset whenever the processor asserts RESET.
Register Block o o Register block 15 comprises registers which may be accessed by the processor and by the controller logic. Some of the registers are read only, some are write only and some are read/write. In this connection, from a software point of view, there are a total of sixteen eight bit registers as follows: data register (read/write); mark register (read/write); error register (read); write CRC register (write); parameter data register (read/write); phase register (read/write); setup register (read/write); handshake register (read); mode register zeroes 4 (write); mode register ones (write); and read status register (read).
7 L- i N Data Register 0 pj 00I
,I
000 00, 00 0400 0 1
O
0 04 000 00 The data register is the location where data is read from or written to a FIFO in FIFO, CRC and mark logic 24. If a mark byte is read from this location, an error will occur. A read from this location when Action (data bit 3 in the mode register) is not set, will provide two bytes of error correction information. The register is set up to toggle between the two bytes on successive reads, thus providing both bytes of information. If there is still valid data to be read when Action is not set, it can be read by reading the mark register.
Mark Register This location is used for reading and writing mark bytes.
Writing to this location will cause the missing transition between two zeroes to occur. Reading from this location will allow a mark byte to be read without causing an error.
0004 0 Error Register This location provides information on the type of error that has occurred. If any of its bits are set, an error flag will be set in the handshake register as described below. Once any error bit has been set, no other error bit can be set until the register is cleared. Reading the error register will cause the register to clear. This register must be cleared prior to beginning a read or write operation. The possible error conditions are as follows.
In write mode, when bit 0 1, the FIFO is being underrun by the processor. In other words, the FIFO is empty and the processor has not acknowledged the handshake by writing another i
L-
1 -i L- -tl *Ilri (i I
'L*
byte. In read mode, when bit 0 1, the FIFO has two bytes to be read, but the processor is not reading them fast enough.
When bit 1 1, a byte which was read from the data register was a mark byte.
In write mode, when bit 2 1, the processor is writing faster than the FIFO is requesting bytes. In read mode, when bit S, 2 1, the processor is reading bytes faster than they are o° available.
BO
p When bit 3 1, the correction number obtained in the 00o0 a. correction state machine (described in conjunction with Figure 0* hereinbelow) is so large that the error cannot be corrected.
SWhen bit 4 1, the transition occurred before the first 0 04 short counter (SCT) pulse (described in conjunction with Fig. 4 below) which indicates that the cell was too narrow to be a legal 0 cell.
When bit 5 1, the fourth SCT pulse occurred before the 000* transition which implies that the transition was too wide to be a *40,,1 valid cell.
4 When bit 6 1, there were three marginal transitions in a row which implies that the transitions cannot be resolved.
Bit 7 of the error register is not used.
Write CRC Register A write to the CRC register will set a status bit in the FIFO which will cause the CRC bytes to be written on the disk.
Since the status bit moves through the FIFO, the CRC bytes will .1 ii~- I I 0 00 00 0 Oo 00 0 O0 0000 0 0000 60 000*00 0 0 a 00 o t 00 shift out after the last bit of data is written.
Parameter Data Register The parameter data register is where sixteen bytes of parameter data from parameter RAM 31 are written and read. This register comprises a counter which increments the address parameter RAM 31 each time a write or read to the register occurs. The sixteen bytes of data can be written or read by successively writing to or reading from this register. Thus, the four bit address placed on parameter address line 30 accesses sixteen locations in RAM 31 and the data from the accessed location is placed on the eight bit parameter data bus 32. The increment counter presets the addresses to zero each time a write to the mode register zeros occurs. The data is stored in RAM 31 in the following sequence (the meanings of the various parameters will be set forth below): 0 0090 0000 0 6 a RAM Address 0000 0001 Parameter MIN CELL TIME (MIN)
CORRECTION
MULTIPLIER (MULT(K))
SSL
SSS
0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
SLL
SLS
RPT
CSLS
LSL
LSS
LLL
LLS
EARLY/NORM
z i -1 irn: i: 1101
TIMEO
1110
LATE/NORM
1111 TIME1 The MIN parameter is the minimum number of clocks needed to determine a valid transition.
The MULT(K) parameter is a weighting factor for normalizing drive speed to an ideal speed.
t The SSL, SLL, SLS, RPT, CSLS, LSL, LSS, LLL and LLS parameters are eight bit fields used during post compensation.
S The EARLY/NORM and LATE/NORM parameters are eight bit fields used Ono during precompensation (four bits for each of EARLY, LATE and NORM.) TIME1 is an eight bit field containing the time delay associated with a transition sent to the drive.
TIMEO is an eight bit field containing the additional time delay oa associated without sending a transition to the drive. TIME1 and TIMEO are 7 bits long. The low order bit of each (HLFBIT) S0 0 is used by the half write logic, to lengthen WRDATA by one-half clock when desired.
Each of the foregoing parameters is dynamically programmable o4,4 by the computer. In this manner, the controller can be programmed to run at a clock speed and data rate determined by the computer. Such programmable parameters enable the controller to interchangeably read and write constant angular velocity drives and constant linear velocity drives.
Phase Register The phase register is used to read and write the four phase lines (phase 0, phase 1, phase 2 and phase 3) which are used to control or read status from the disk drive. The four phase lines can be independently programmed as either inputs or outputs I i 1 i i: ~--n*.n~-9LYllpl
I
1 depending on the state of the other four bits in the register.
The phase lines default to low outputs on reset. The function of each of the eight bits in the phase register is as follows: i1 o 444 4441 4 44 4 I 4 Bit 0 programmed Bit 1 programmed Bit 2 programmed is used to set the as an output.
is used to set the as an output.
is used to set the as an output.
polarity of the phase 0 line when polarity of the phase 1 line when polarity of the phase 2 line when Bit 3 is used to set the polarity of the phase 3 line when programmed as an output.
.44 i '4 44444r 4 Bit 4 Bit 4 Bit 5 Bit 5 Bit 6 Bit 6 Bit 7 Bit 7 0 indicates 1 indicates 0 indicates 1 indicates 0 indicates 1 indicates 0 indicates 1 indicates that that that that that that that that the phase the phase the phase the phase the phase the phase the phase the phase line line line line line line line line input.
output.
input.
output.
input.
output.
input.
output.
Setup Register The setup various modes.
reset occurs.
register is as register is used to set the controller into its This register will reset to all zeroes when a The function of each of the eight bits in the follows: Bit 0 1 will cause HEDSEL to be output or sala transllns; normalizing said summed distances; subtracting said normalized distances from predetermined values to produce a correction magnitude and direction; using said correction magnitude and direction to generate a pulse to correct the symmetry and frequency of said signal from said disk drive.
V i i I Bit 1 Bit 1 Bit 2 Bit 2 Bit 3 Bit 3 3.5 inch drive not selected 3.5 inch drive selected normal operation.
sets the controller into GCR mode.
or 0 a at o i O 0 O 00 a p so S as I Bit Bit Bit Bit 5 1 normal operation.
causes the internal clock frequency to be divided by two.
disables the correction state machine.
enables the correction state machine.
sets up the read and write signals for Apple type drives.
sets up the read and write signals for IBM type drives.
normal operation.
causes the read and write data transformation logic (described below) to be bypassed. This bit must be set whenever the GCR or 3.5 inch drive modes are set.
will produce no timeout when turning off Motoron (mode register, bit 7).
causes the Motoron bit to stay on for 1/2 second (at 16 Mhz) after the drive is disabled.
Bit 6 Bit 6 S0
SI
Bit 7 0 Bit 7 1 The following statement is a full description of this invention, including the best method of performing it known to us -1a ~I ii Yi
-A
001 00) 0 d00 0'*1 0 000 0 0 00 00 0 0 00r 4, 00 0 0 00 0440 0.9410 0440 0 0 0 0 Handshake Register The handshake register performs the following functions.
When bit 0 1 the next byte to be read from the FIFO is a mark byte.
When bit 1 0, the CRC register became all zeroes when the second CRC byte passed through the register. This bit is valid when the second CRC byte is the next to be read from the FIFO.
Bit 2 is used to read the read data signal from the drive.
Bit 3 is used to read the SENSE input from the drive.
Bit 4 is used to read the status of Motoron (Mode Register bit 7.
Bit 5 1, indicates one of the bits in the error register has been set to a one. This bit is cleared by reading the error register.
When bit 6 1, in write mode, there are two bytes of available space in the FIFO. In read mode, when bit 6 1, there are two bytes to be read from the FIFO.
When bit 7 1, in write mode, there is one byte of available space in the FIFO. In read mode, when bit 7 1, there is one byte to be read from the FIFO.
Mode Register (Write Zeroes and Write Ones) The mode register is used to set the various status bits of the controller. A bit can be set to zero by writing to the Write Zeroes location with the corresponding bit set to a one. A bit can be set to a one by writing to the Write Ones location with prior art controllers, the controller uses a plus/minus rate multiplier to correct for symmetry and frequency errors. Other advanced features of the controller include the use 9011014cpdat033,14755Al -P1-H the corresponding bit set to a one. This scheme is used in order to make it possible to modify a particular bit without having to rewrite the entire register. The register is cleared to zeroes when a reset occurs. The Action bit (bit 3) will be cleared anytime there is any error while writing.
Bit 0 is used to clear the FIFO. This bit must be set and then cleared on successive operations. Read or Write mode (bit 4) must be established prior to setting bit 0 since the FIFO will clear to opposite states depending upon whether a write or read operation is about to take place.
o 04 b. o' When bit 1 0, drive 1 is not enabled.
o o When bit 1 1, drive 1 is enabled.
04 0 0 o. When bit 2 0, drive 2 is not enabled.
When bit 2 1, drive 2 is enabled.
0o0004 0 0 When bit 3 0, Action is not set.
When bit 3 1, Action is set.
"0 Bit 3 is used to start the read and write operation. This t o bit should only be set after everything else has been setup.
When writing, two bytes of data should be written into the FIFO prior to setting this bit in order for the FIFO to start shifting 0 4 0 So0 immediately.
0* When bit 4 the controller is placed into Read mode.
When bit 4 0, the controller is placed into Read mode.
When bit 4 1 1, the controller is placed into Write mode.
When bit 5 0, the side 0 head is selected (HEDSEL is reset.) When bit 5 1, the side 1 head is selected (HEDSEL is set.) Bit 6 is not used and always reads back as set.
L-
When bit 7 0, Motoron is disabled.
When bit 7 1, Enablel and Enable2 signals are asserted, for enabling drive 1 and drive 2. This bit must not be cleared until after the Action bit is cleared.
Read Status Register This register is used to read back the status of the mode register.
The registers in register block 15 communicate with the other blocks in controller 11 by signals on the various STATUS 090 0 (for inputs) and CONTROL lines (for outputs), as will be set 1o forth in detail below.
e ot 0*4. Interface Logic 16 The registers in register block 15 communicate with the 0 4 drive by signals on the STATUS lines (for inputs) and CONTROL lines (for outputs) using conventional and well known techniques.
0 O 4 Clock Logic Block 17 The inputs to clock logic block 17 are the system clock signal FCLK from the processor which typically is a 7-24 Mhz clock and a signal from register block 15 which causes the clock t to run at its full speed or half speed (bit 3 of the Setup Register). Clock logic block 17 outputs the clock signal TCLK which is used by the invented controller. Thus, TCLK is either FCLK or one-half of FCLK.
-i .I i, i I 3
I
t i Read Logic Block 21 Figure 3 is an overview block diagram of read logic 21, including the applicable portions of FIFO, CRC and mark logic block 24 which are shared with write logic block 27.
Data is read from a disk by means of a signal called RDDATA generated by the drive as the read head passes over the magnetic media. This signal consists of pulses which are spaced at 2, 3 and 4 units apart, which of cour!e is the data in its KFM translated form. If all conditions were ideal, to convert the MFM formatted data into its actual data, it would be a relatively ft simple matter to determine whether a cell is 2, 3, or 4 units S*long, then decode the data, and transfer the data through a serial to parallel shift register for use by the processor.
However, conditions are rarely, if ever, ideal. A first problem is known as peak shift which occurs due to the non-ideal nature of the properties of magnetic media. Specifically, it is known o 0 0 that a 2 unit cell on a disk is crowded together more than a 3 or 0 00 Soo. a 4 unit cell, in a relative sense. The effect of this crowding is that 2 unit cells will tend to push out their transitions into the region of a 3 or 4 unit cell, when a 2 unit cell is adjacent to a 3 or 4 unit cell. This pushing out causes such a 2 unit Slot cell to be longer than it should be, and a 3 or 4 unit cell to be 4. f. shorter than it should be when the data is read back.
When the data is written, it is known in the art to use a technique known as precompensation to correct for this problem, wherein a transition is caused to occur earlier or later when writing. That is, precompensation makes 4 and 3 unit cellslonger and 2 unit cells shorter when they are next to each other during disk writes.
Ii However, if the disk that is being read was not written by a controller which uses precompensation, or the precompensation used was not enough, errors may occur reading back the data due to effects of peak shift. This problem is solved in the present invention by using post compensation which will be described in detail below. Other problems that can occur are that the speed of the disk drive or the frequency of the clock can be off, or there can be some other form of systematic error in the data.
Such errors can also make it very difficult to read back the data reliably. Such errors are corrected in the present invention by o0 use of a correction state machine. The discussion of the read 0 o o logic will set forth how the post compensation and correction I state machine work, along with a description of how the beginning 0 490 of a track or sector is located, how the mark byte is detected, and what starts the process of transferring data into the FIFO.
Read logic block 21 comprises half read logic 41, post 0 o compensation logic 45, data transformation state machine 49, shift O 0 register 51, correction state machine 55 and error correction logic 56. Also shown in Figure 3 are FIFO 57, CRC logic 59 and 0040 S.mark logic 61, which elements are from FIFO, CRC and mark logic block 24, as shown in Figure 2.
Half Read Logic 41 Half read logic 41 causes 2 unit cell, 3 unit cell and 4 unit cell input signal RDDATA which is asynchronous with respect to the internal clock TCLK to become synchronous with TCLK and transformed so that each RDDATA pulse is precisely one TCLK wide.
The synchronized and transformed output is referred to herein as
TRANCK.
18 54 4E 4E
'I
A
In particular, half read logic 41 detects whether a RDDATA pulse occurred in the first or second half of the clock cycle thereby providing half clock resolution of the input pulse.
Depending on the combination of which half of the clock cycle the current RDDATA pulse occurred in, and in which half the previous RDDATA pulse occurred in, there might have been an error in resolving RDDATA into TRANCK. Thus, the half read logic will stretch the bounds which are determining the cell time by one clock. This will effectively shorten the distance between TRANCK pulses by one clock, thereby correcting for the error in the one o 0" clock sample time.
040 t If the cell times of the data coming from drive are very accurate, there is no problem resolving the data because the t#11 parameters can be set to fit in the middle of each region and there is sufficient margin between the SCT and LCT pulses generated by SCT and LCT counters (described below with the 0 0 description of Figure 5) and TRANCK pulses. However, in reality S0 due to drive and noise error there can be some error in the 0 0 values of the cell times. This can cause the SCT and LCT pulses 000 and the TRANCK pulses to fall very close to each other making it difficult to tell the difference between two different cell times.
4 S" Without halfclock resolution, what is intended to be 2 3 4 pattern can be transformed into a 3 3 3 pattern. Such error can occur since data can only be sampled on the rising edge of the clock. Thus, if a first RDDATA pulse occurs just after the rising edge of the clock and a second RDDATA pulse occurs just prior to the rising edge of the clock, almost one full clock of error has been introduced in the length of the cell. This problem can be reduced by determining which half of the clock cycle the RDDATA pulse occurred in and shifting the SCT and LCT 19 ;7e; ii o a a oo o o o0 0 000 000 0 pulses (as described below) by one count to compensate.
Shifting the SCT and LCT pulses will effectively change the distance between TRANCK pulses. The overall effect is that the distance between RDDATA pulses can be resolved to within one half clock of the actual distance instead of one clock. The effective half clock shift of SCT and LCT can take place in two manners.
First to compensate for the problem just mentioned and second to allow for better resolution in calculating the parameters for the SCT and LCT counters. Figures 4b and 4c show a schematical representation of how a shift signal used by the counters is generated.
Specifically, Figures 4b and 4c shows that the TRANCK signal is formed such that it is delayed for four clocks. This pipelining is necessary to be able to know when the TRANCK is going to occur four clocks before it occurs. The RDDATA signal is synchronized to the nearest half clock and then delayed by one clock to generate the signal RT3 as shown in Figure 4a, which shows a particular implementation of half read logic 41. When the TCK signal becomes valid, RT3 is sampled. If RDDATA occurred in the first half of the clock cycle, RT3 would be a one. If RDDATA occurred in the second half of the clock cycle, RT3 would be zero. This information is then latched in as signal called BIAS. The signal BIAS is set to a zero if RDDATA occurred in the first half of the clock cycle, and is set to a one if it occurred in the second half of the clock cycle. The signal NSTART is used to latch BIAS when TRANCK occurs. This is used on the next RDDATA to determine what has just occurred since the BIAS signal will change on the next TCK. As mentioned above, to avoid introducing errors resulting from the asynchronous nature of the clock signal and RDDATA, it must be known, in advance, 00 0 0 00 e e6 0000 00 900001 0 C
I
ili. I.I..L 1I-Wll~r C~ ii I~L j_ 1 111 whether SCT and LCT should or should not be shifted near a TRANCK. This can now be resolved using the information generated. Since it is known when the TRANCK is going to occur four clocks prior to it actually occurring, and it is known which half of the clock cycle the RDDATA pulse that generated the TRANCK occurred in, and the same information about the previous RDDATA pulse is known, a signal called SHIFT can be generated which will cause the compa-ison point in the SCT and LCT counters 451 and 453 to be altead by one count thereby correcting to the nearest half clock. The equation for generating SHIFT is o o FRACTION *NSTART*BIAS+ FRACTION NSTART*BIAS. SHIFT is set So with TCK1 and reset with TRANCK. FRACTION is the low order bit a 0 oo of the parameter loaded in each of SCT counter 451 and LCT 0 0o oPost Compensation Logic Post compensation logic 45 corrects errors caused by the effects of peak shifting. A detailed block diagram of post o 00 compensation logic 45 is shown in Figure a Post compensation logic comprises two 7-bit counters 451 **00 (SCT) and 453 (LCT), a bound detector 455 and two 4-bit shift registers 457 and 459. The counters are used to place pulses at a certain time intervals between transitions. The presets of these counters are the parameters SSL, SSS, SLL, SLS, RPT, CSLS, LSL, LSS, LLL and LLS which are programmed by the software and enable the controller to handle various cell times. The SCT counter 451 loads parameters which are calculated to represent a cell which has a short cell 2 unit) following it. The LCT counter 453 loads parameters which are calculated to represent a cell time which has a long cell 3 or 4 unit) following it.
Additionally, the parameters loaded depend on the previous cell 21 i, -i 0 1.
time. In this connection, the counter parameters SSS, LSS, SLS and LLS are used by the SCT counter and the SSL, LSL, SLL and LLL parameters are used by the LCT counter. (The letters represent Long or Short previous/current/next cell times; eg., the SSL parameter is used when the previous, and current cell times are short and next cell time is long.) RPT is the maximum number of clocks which may occur before a valid transition. CSLS is an addition correction used by the post-compensation logic under certain conditions. The following describes how the parameters are calculated.
G o The parameters are calculated based on the clock frequency o"o and cell times. Therefore it is required to know both of these o factors before calculating parameters. For calculating post a 000 0compensation parameters, it is required to know the amount of peak shift. This factor can be expressed as a percentage of the minimum cell time MIN. The first step in calculating the 0 o parameters is to determine the number of clocks (Nclks) for each 0 o. of the three cell times. This is done as follows: 0 0 0 Nclks length of cell (in s) clock frequency (in Mhz) .000 The three different cell times will be defined as Nclkl, Nclk2 and Nclk3. The MIN parameter is defined to be the minimum value that a cell must be. This value is arbitrarily placed at the midpoint between between zero and the first transition time.
Therefore, MIN Nclkl 2 The rest of the parameters are calculated in a similar fashion such that the bounds will be placed at the midpoint between two cell times. The only difference is that there is a different amount of peak shift for different combinations of cell times next to each other making it necessary to compensate ii ii 1. 1 i i L -i L--i-l differently for each. The amount of peak shift per edge can be calculated as follows: peak shift PS peak shift (per minimum cell time) Nclkl This number represents the number of clocks that an edge is affected if a 2 unit cell is next to a 3 or 4 unit cell or vice versa. With this in mind, the remaining parameters can be calculated as follows: SSS (Nclkl Nclk2)/2 INT(MIN) PS SSL (Nclkl Nclk2)/2 INT(MIN) LSS (Nclkl Nclk2)/2 INT(MIN) S eo LSL (Nclkl Nclk2)/2 INT(MIN) PS 0 o 0 o SLS (Nclk2 Nclk3)/2 INT(SSS) 2*PS o SLL (Nclk2 Nclk3)/2 INT(SSL) PS V*I' LLS (Nclk2 Nclk3)/2 INT(LSL) PS LLL (Nclk2 Nclk3)/2 INT(LSL) CSLS SLL INT(LSL) o The RPT parameter is simply a maximum bound check.
00 0 o o0 o a6 Therefore, its value is not constrained to a particular value, o 00 but it must meet the following requirement: 44t RPT (Nclk3 Nclk2) 2*PS These values must be converted to hexidecimal (Hex) since 41.4 they represent presets to binary counters. This is done by 4 rounding each value to the nearest half and converting the 449tt
I
integer portion into its Hex equivalent value. This value is mapped into the upper 7 bits of the corresponding 8 bit parameter. The low order bit (FRACTION) is set to a one if the fractional part of the number is one-half, otherwise it is set to a zero.
The use of the parameters will now be described with reference to a particular example.
;i Assume: Fclk 16 MhZ.
Cell tines are 4, 6 and B a.
Post Comp 3% of 4 s cell time.
Poo 0 ov It 44 00 4 4 4 4 4., a 0 0 C. 0 040 This implies: NCLKl 4 16 64 Clocks NCLYK2 6 16 -96 Clocks NCLYK3 8 16 128 Clocks PS 3% 64 Clocks= 1.92 Clocks Therefore the parameters are: MIN -64/2 32.00 Clocks SSS (64 96)/2 32 1.92 -46.08 Clocks SSL (64 96)/2 32 48.00 Clocks LSS (64 96)/2 32 48.00 Clocks LSL (64 96)/2 32 1.92 49.92 Clocks SL.S (96 128)/2 46 2*1.92 62.16 Clocks SLL (96 128)/2 48 1.92 62.08 Clocks LLS -(96 128)/2 48 1.92 62.08 Clocks LLL (96 128)/2 -49 63.00 Clocks RPT -128 96 2*1.92 35.84 Clocks Converting these parameters to Hex yields the following: MIN SSS SSL
LSS
LSL
ST-s
SLL
LLS
LLL
$64 V7C $7C $7C $7E _L^i __Cil _II~ RPT $48 The other dynamically programmable parameters are calculated as follows: MULT -(256*256)/(32*Nclkl) TIME1 -Nclkl TIMEO -Nclkl /2 NORM -Arbitrary LATE -NORM Pre Comp Nclkl EARLY -NORM Pre Comp Nclkl 0 Pre Comp is selectable by the software as a percentage of the MIN cell time.
O 4 0 Bound detector 455 counts the number of pulses which occur between TRANCK transitions. If one pulse occurs between 44 4t a transitions, then the cell must be a two unit cell, if two pulses 6444 G 4 0 occur between transitions then the cell must be a three unit cell, and if three pulses occur between transitions then it must 0. o" be a four unit cell.
4 The reason for having two counters is that depending on whether the next cell is long (a 3 or 4 unit cell) or short (a 2 unit cell) the pulses may occur in different positions because, o. for example, a 3 unit cell will be shorter when next to a 2 unit 0 1 cell than when next to a 3 or 4 unit cell. If both counters generate the same number of pulses between transitions, then bound detector 455 simply generates a space (a 0) for each pulse and a transition (a 1) at the end of the transition time. Such output is referred to herein as the trans-space data pattern. If the two counters generate a different number of pulses between transitions, then the length of the current cell cannot be determined until the next transition time is determined.
I
_F T ii -i i i register is as follows: Bit 0 1 will cause HEDSEL to be output
I
Two 4-bit shift registers 457 and 459 keep track of what has happened until the next cell has been determined, thus making it possible to determine the length of the uncertain cell.
Correction State Machine 0 0 t 0 f t 04 0 S0 4 9 00 I 0 0 00 I Io I I t li1 Correction state machine 55 corrects systematic errors such as those caused by a drive that runs too fast or too slow or by an inaccurate clock. A state machine diagram of correction state machine 55 is shown in Figure 6.
In MFM format, the beginning of a sector or track can be located by finding the 12 bytes of zeros followed by the mark byte. In the present invention, correction state machine 55 is used to sync-up on the bytes of zeroes followed by the mark byte.
Specifically, the state machine looks for a string of minimum cells by looking at the number of SCT pulses that occur between TRANCK pulses. If the state machine sees 64 cells which have only one SCT pulse between transitions, then it knows that it has found a region of minimum cells. The machine then looks to see if the fl-st non-minimum cell is part of a mark byte.
If this is the case then the rest of the bits start shifting into the shift register 51 and FIFO 57 will begin functioning.
Otherwise the state machine will go back into the state which looks for a string of minimum cells.
The state diagram of Fig. 6 shows how correction state machine 55 works. It starts out in the 000 state and stays there until it gets a transition. At this point it goes into the 001 state where it stays until it encounters 32 minimum cells. If 32 pairs of minimum cells are then counted, the machine proceeds on to the 010 state, otherwise it goes back to look for another transition. Once it has encountered the 32 pairs, it waits for
I
13 the first non-minimum transition to occur in state 011. If this non-minimum cell is part of a mark byte, then it proceeds on to the 111 state where it remains until the processor is finished reading bytes. If the non-minimum cell is not part of a mark byte, the state machine goes back to state 000.
Error Correction Logic 56 Referring now to Fig. 7, during the sync-up period, rate multiplier 551 and 553 count the number of clocks for 32 MIN CELL TIMEs. Upper counter 555 counts the even cells and lower S counter 557 counts the odd cells. This make it possible to correct for asymmetry as well as frequency errors. The amount by which the 8-bit counters vary from 256 counts represents the amount of error over the sample. This error number is then S9 t t S applied to post compensation logic SCT counter 451 and LCT I counter 453 by stretching or shortening the counts using the oj :o output of rate multiplier 559 RATEOUT.
0 00 o 0 0a i t Data Transformation State Machine 49 Data output from post compensation logic 45 is input to read 1 ,data transformation state machine 49 which converts the data into actual MFM data. Table 2 shows the results of the operation of data transformation state machine 49 for all combinations of trans-space and previous data.
TABLE 2 PREVIOUS DATA CURRENT RESULT
TRANS-SPACE
1 1 1 (01) 0 1 (001) 01 27
I
Zeroes location with the corresponding bit set to a one. A bit can be set to a one by writing to the Write Ones location with 14 0 0 0 (01) 01 0 (001) 00 The actual data after transformation by data transformation state machine 49) is input to serial-to-parallel shift register 51 which shifts out CRC bytes, mark bytes and data bytes as parallel data. The eight bit actual data, is transferred to FIFO 57 which is a two byte FIFO comprising two bit registers. CRC logic 59 is implemented as the CRC polynomial 16 12 X X X 1. Mark logic 61 is implemented as a state machine which generates a logic 1 when a mark byte is detected.
.r Write Logic Block 27 aoo Figure 8 is an overview block diagram of write logic 27, including the applicable portions of FIFO, CRC and mark logic 0o" *block 24.
The following will describe how data from the processor is 000 translated into 2, 3 and 4 unit cells for writing to the disk.
"The write process begins when a processor writes a byte into the data register and sets the Action bit in the mode register.
The byte which is written in the data register is loaded into FIFO 57. FIFO 57 is a two byte FIFO consisting of three ten bit e' registers. The first ten bit register is used to grab the data from the data register and the other two are used as FIFO registers. The ten bit FIFO consists of eight bits of data, a bit which indicates whether the data is a mark byte and a bit which tells the controller to write the CRC bytes.
As shown in Figure 8, write logic 27 includes FIFO 57, shift register 51, CRC logic 59, and mark logic 61. While each of the l foregoing components can be separately implemented, in the 28 I- Bit 6 is not used and always reads back as set.
I
I preferred embodiment of the subject invention, such elements are shared between read logic 21 and write logic 27 as part of FIFO, CRC and mark logic block 24. Of course, in performing a write, shift register 51 is a parallel to serial shift register rather than a serial to parallel shift register as is the case when doing a read. Similarly, during a write, CRC logic 59 calculates a CRC byte to be written rather than calculating a CRC byte to compare with one which has been read. Similarly, mark logic 61, when in write mode causes a mark byte to be written.
So -Select Data 71 The serial data output from shift register 51 is input to 0o select data block 71 which, in effect, multiplexes between the o00 actual data and the CRC byte produced by CRC logic 59, outputting the data or CRC byte to data transformation logic Write Data Transformation Logic 0 o Write data transformation logic 75 translates the data stream into a form in which a 1 represents a transition and a 0 00 represents a space which is the form suitable for writing on a magnetic disk.
0°000o A block diagram of write data transformation logic 75 is provided in Figure 9. As shown in Figure 9, the front end of data transformation logic 75 is a four bit shift register 751 which makes it possible to know what the last two bits were, the current bit is, and the next bit will be. Most of the time, the only information needed is what the current bit is and 4what the next bit will be. The exception is when writing the mark byte. In this instance, more information is needed because it must be determined when to leave out the transition. As noted 1 I- above, the only time a transition needs to be skipped is when there is a 1 0 0 0 pattern. Thus, all four bits of information are needed. Table 3 shows the desired transformation of the data performed by transformation logic 753.
TABLE 3 CURRENT BIT NEXT BIT TRANSFORMED
DATA
MARK
4 or a ,o 4 o I 4 94r o oi 4o 0 4 99 o 9 4 4 94 Ott 4 It ta4 Precompensation Logic 77 Precompensation logic 77 compensates for the problems created by peak shifts as described above with respect to read logic 21.
Precompensation logic 77 performs the analog of post compensation logic 45 for write operations. A detail block diagram of precompensation logic 77 is shown in Figure Precompensation logic 37 comprises multiplexors 771, 773 and 775, 7-bit counter 777, latch register 779, AND gate 781, comparator 783, AND gate 785, shift register 787 and XOR gate 789.
The 7-bit counter 777 shown in Figure 10 is used for counting out the desired cell times. The counter is preset to either TIME1 if a transition is occurring, or TIMEO if a space is occurring. When the counter reaches the value of the comparison number, then the transition is fed to the half-write logic 79 if the high bit of the shift register 787 is a 1 (indicating a transition). By changing the comparison point, it is possible to stretch or shorten a cell time thereby performing 4 Od during disk writes. i 17 t precompensation. The decision whether the transition should be early or late is decided by whether a transition is about to take place. The decision whether the transition should be placed at its nominal value or at a corrected value is made by looking at what the next cell is going to be, thus knowing whether the next cell is a similar type cell. Shift register 787 provides the ability to look at what is coming next in order to determine what to do with the current transition. The outputs of shift register 787 are 04 (current data), 03 (next data), and 02 (next, next data).
Inasmuch as the length of cells to be written are not exact multiples of the clock frequency, additional errors may be :introduced. For example, in a four microsecond cell, when a 7.16 Mhz clock is used, the number of clocks in the cell is 28.64.
While the output from precompensation logic 77 can be used to write to the disk, it is neces;ary to round the cell length to an Oo integral number of clocks. This round off forces the cell times So vary from the desired values. Depending upon the clock used, it is possible for significant errors to result. In order to reduce this round off effect, the present invention utilizes half write logic 79 which works on both edges of the clock and creates the effect of having half clock resolution. Writing using half Sclocks can be very difficult because of the high effective clock S4' speeds generated. For this reason, half write logic 79 is performed just prior to writing the data to the disk.
Half Write Logic 79 A detailed block diagram of half write logic 79 is shown in Figure 11.
Once a comparison point has been reached and the trans-space data is a i, then a transition is generated by toggling the t a 31 i it is l f e to result. In o t oII ~I _ir I I i i li- WRDATA line to the drive. This is done by toggling T-counter 791. This toggle is subsequently delayed by one half clock using D-flip-flop 792. The resulting WRDATA signal is then generated by selecting either the half clock signal BW or non-half clock signal AW thus producing half clock resolution in the WRDATA signal according to the logic performed by and gates 794a, 794b and 794c and NOR gate 795. The HLFBIT signal is what determines whether to cause half clock shifts or not. In particular, logic circuit 796 will cause the LONG signal to toggle on each ot transition only allowing half-shifts on alternate edges.
o tf 0 0 00 O No 00 3 0 2 e 32 i 1

Claims (7)

1. In an improved disk drive controller for controlling the transfer of data between a computer and a disk drive, said computer including a clock for generating clocking signals, an address bus and a data bus, said controller including read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means for converting data on the data bus to a signal for recording on magnetic media by the drive, the improvement wherein said read logic means includes means for processing the 0 signal received from the drive to compensate for the effects of peak shift and wherein said peak shift compensation means comprises: 0 0 first counter means and second counter means for placing pulses at predetermined time intervals between transition in said signal from said drive, said i 15 predetermined time intervals being determined by setting said first and second counter means with values generated by said computer as a function of the time between previous transitions in said signal from said dive, wherein said first 0 0.icounter means is set with a value corresponding to the shortest expected time 0 rbetween the next two transitions and the second counter means is set to a value greater than the shortest expected time between the next two transitions and less than the maximum expected time between the next two transitions; o' bound detector means coupled to said first and second counter means for counting the number of pulses generated by said first and second counter means between transitions in said signal from said drive; and first and second shift registers coupled to said bound detector means for storing the number of pulses generated b) said first and second counters respectively to enable said bound detector mean to generate peak shift compensated pulses from said signal from said dilve. 90103I4cpdaiO33,14755.x-' :i 34
2. In an improved disk drive controller for controlling the transfer of data between a computer and a disk drive, said computer including a clock for generating clocking signals, an address bus and a data bus, said controller including read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means, said write logic means for converting data on the data bus to a signal for recording on magnetic media by the drive, the improvement comprising a random access memory coupled to said read logic means, said write logic means and said data bus, said memory for storing parameters generated by said computer and used by said read logic 10 means to provide interchangeability between disks written by constant angular 0 00 G .velocity drives and constant linear velocity drives. 00 000 S 00 t *03. In an improved disk drive controller for controlling the transfer of data 0 o* 15 between a computer and a disk drive, said computer including a clock for generating clocking signals, an address bus and a data bus, said controller including read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means for converting data on 0 t 4 the data bus to a signal for recording on magnetic media by the drive, the improvement comprising a random access memory coupled to said read logic 2 ,means and said write logic means, said memory for storing parameters generated by said computer and used by said read logic means and said write logic means to enable the controller to operate at a continuously variable clock speed dynamically programmable by the computer.
4. In an improved disk drive controller for controlling the transfer of data between a computer and a disk drive, said computer including a clock for generating clocking signals, an address bus and a data bus, said controller including read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means for converting data on 901101,cpda&O33,1475S.U IL~LLI1*-- I-- 35 the data bus to a signal for recording on magnetic media by the drive, the improvement comprising a random access memory coupled to said read logic means and said write logic means, said memory for storing parameters generated by said computer and used by said read logic means and said write logic means to enable the controller to operate at a continuously variable data rate dynamically programmable by the computer. In an improved disk drive controller for controlling the transfer of data between a computer and a disk drive, said computer including a clock for generating clocking signals, an address bus and a data bus, said controller including o 4t al I read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means for converting data on the data bus to a signal for recording on magnetic media by the drive, the 15 improvement comprising means for producing half-clock resolution in the signal sent to the drive for recording on magnetic media, said half clock resolution for reducing the difference between a cell length of the signal sent to the drive for writing on the magnetic media and the clock signal. 4 4 4 4 o I
6. The improved controller defined by claim 5 wherein said half-clock resolution means comprises: a T-counter for generating a toggle signal; a D-flip-flop coupled to said T-counter for providing a one half clock delay to said toggle signal; means coupled to said T-counter and said D-flip-flop for selecting one of said toggle signal and said delayed toggle signal for writing to said disk.
7. A method for performing symmetry and frequency correction on a signal from a disk drive, said disk drive for coupling to a controller, said controller for N1 047 PA't 901101,gcpd&LO33,14755A35 L -i c 1 36 coupling to a computer, said signal having transitions which are converted by the controller into data usable by the computer, said method comprising the steps of: summing the distances between the leading edges of alternate pairs of said transitions; normalizing said summed distances; subtracting said normalized distances from predetermined values to produce a correction magnitude and direction; using said correction magnitude and directioil to generate a pulse to correct the symmetry and frequency of said signal from said disk drive. 0 0 04
8. In an improved disk drive controller for controlling the transfer of data between a computer and a disk drive, said computer including a clock for generating clocking signals an address bus and a data bus, said controller including 15 read logic means for converting data received from a signal generated by the drive to data for placement on the data bus, and write logic means for converting data on the data bus to a signal for recording on magnetic media by the drive, the improvement wherein said read logic means comprises means for producing half- I 0clock resolution in the signal received from the drive representing data recorded on magnetic media, said half clock resolution for reducing the difference between a o cell length of the signal received from the drive and the clock signal. 4
9. The improved controller defined by claim S wherein said read logic means includes first and se.cond counters and said means for producing half-clock resolution comprises: first and second D flip-flops, an input to said flip-flops being the data input from an input pulse, the first D flip-flop for storing the state of the input pulse when the rising edge of the clock occurs, the second D flip-flop for storing the state of the input pulse when the falling edge of the clock occurs; detection means coupled to said D flip-flops for determined which 01\ N 901101gcpd&IAi33,147SXc,36 L* SLL LLS LLL $7C $7C $7E 37 of said first and second D flip-flops first detected the change in state of the input pulse; means coupled to said first and second counters for generating a shift signal used by said read logic means to adjust said first and second counters, said counters for generating pulses used to determine the distance between pulses in said signal generated by the drive. An improved disk drive controller substantially as hereinbefore described with reference to the drawings. DATED this 31st day of October, 1990 APPLE COMPUTER, INC. By its Patent Attorneys DAVIES COLLISON o (4 o 6 II 444 4 I 1t4Z 4 44 4 *1 4lrl 901 1o1cpdaLO33,1475xA37 J
AU14755/88A 1987-05-28 1988-04-19 Disk drive controller Ceased AU606409B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5544387A 1987-05-28 1987-05-28
US055443 1987-05-28

Publications (2)

Publication Number Publication Date
AU1475588A AU1475588A (en) 1988-12-01
AU606409B2 true AU606409B2 (en) 1991-02-07

Family

ID=21997833

Family Applications (1)

Application Number Title Priority Date Filing Date
AU14755/88A Ceased AU606409B2 (en) 1987-05-28 1988-04-19 Disk drive controller

Country Status (5)

Country Link
AU (1) AU606409B2 (en)
CA (1) CA1309189C (en)
GB (3) GB2205467B (en)
HK (3) HK72892A (en)
SG (1) SG63592G (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5543975A (en) * 1993-11-12 1996-08-06 Hewlett-Packard Company Removal of precompensation in a write data signal from a flexible disk controller
JP3345515B2 (en) 1994-08-31 2002-11-18 アイワ株式会社 Peak shift correction circuit and magnetic recording medium reproducing apparatus using the same
TW340262B (en) * 1996-08-13 1998-09-11 Fujitsu Ltd Semiconductor device, system consisting of semiconductor devices and digital delay circuit
GB2355097B (en) * 1996-08-13 2001-05-23 Fujitsu Ltd Semiconductor device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0135886A1 (en) * 1983-09-19 1985-04-03 Hitachi, Ltd. Magnetic recording apparatus
EP0180100A2 (en) * 1984-10-29 1986-05-07 International Business Machines Corporation Apparatus and method for recording and recovering a binary symbol sequence using an intermediate step of converting the binary sequence into a ternary sequence
EP0195368A2 (en) * 1985-03-21 1986-09-24 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Digital apparatus for data recovery system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3510786A (en) * 1967-07-17 1970-05-05 Ibm Synchronizing circuit compensating for data bit shift
US3537084A (en) * 1967-08-14 1970-10-27 Burroughs Corp Data storage timing system with means to compensate for data shift
US3622894A (en) * 1970-12-07 1971-11-23 Ibm Predetection signal compensation
BE788030A (en) * 1971-08-27 1973-02-26 Siemens Ag DIGITAL CORRECTION CIRCUIT FOR CORRECTING READING PULSE TRAINS PROVIDED BY MAGNETIC FILM MEMORIES
US3794987A (en) * 1972-11-01 1974-02-26 Burroughs Corp Mfm readout with assymetrical data window
US3827078A (en) * 1972-11-01 1974-07-30 Burroughs Corp Digital data retrieval system with dynamic window skew
US3831194A (en) * 1973-07-19 1974-08-20 Honeywell Inf Systems Digital data recovery system with circuitry which corrects for peak shifting
US4281356A (en) * 1979-11-28 1981-07-28 R. C. Sanders Technology Systems, Inc. Magnetic disk memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0135886A1 (en) * 1983-09-19 1985-04-03 Hitachi, Ltd. Magnetic recording apparatus
EP0180100A2 (en) * 1984-10-29 1986-05-07 International Business Machines Corporation Apparatus and method for recording and recovering a binary symbol sequence using an intermediate step of converting the binary sequence into a ternary sequence
EP0195368A2 (en) * 1985-03-21 1986-09-24 BULL HN INFORMATION SYSTEMS ITALIA S.p.A. Digital apparatus for data recovery system

Also Published As

Publication number Publication date
HK95692A (en) 1992-12-11
CA1309189C (en) 1992-10-20
GB9110826D0 (en) 1991-07-10
GB2243060A (en) 1991-10-16
GB2243059A (en) 1991-10-16
GB2205467B (en) 1992-02-12
HK72792A (en) 1992-10-02
AU1475588A (en) 1988-12-01
GB2205467A (en) 1988-12-07
GB2243060B (en) 1992-02-05
GB2243059B (en) 1992-02-05
HK72892A (en) 1992-10-02
GB9110827D0 (en) 1991-07-10
SG63592G (en) 1992-09-04
GB8720026D0 (en) 1987-09-30

Similar Documents

Publication Publication Date Title
CA1213062A (en) Direction-constrained ternary codes using peak and polarity detection
US4000513A (en) Apparatus and method for data recording with peak shift compensation
US5196849A (en) Method and apparatus for implementing PRML codes with maximum ones
US5420893A (en) Asynchronous data channel for information storage subsystem
US6105159A (en) Trellis code with improved error propagation
US5047767A (en) Apparatus utilizing a four state encoder for encoding and decoding A sliding block (1,7) code
US7069481B2 (en) Data recovery circuit for minimizing power consumption by non-integer times oversampling
US4504960A (en) Data reading apparatus for data transmission
US5604497A (en) Apparatus and method for increasing density of run length limited block codes without increasing error propagation
US20050220197A1 (en) Coding method and decoding method
AU606409B2 (en) Disk drive controller
US5151985A (en) Disk drive controller
JPS6226102B2 (en)
US4916556A (en) Disk drive controller
US6055117A (en) Systems and method having data encoded with edge placement equalization
US5740142A (en) Method and apparatus for fast transfer of data in recording and reproducing system
US6181499B1 (en) Method and apparatus for testing the digital read channel circuit of a data storage device
JPS6013539B2 (en) code conversion device
US5930216A (en) Clock combining circuit
US5453742A (en) High density data compression encode/decode circuit apparatus and method of using in local area networks
KR0140382B1 (en) Address generation circuit for error correction of DAT
US5841750A (en) Information playback apparatus
EP0920008A2 (en) Magnetic recording encoder system for A(1,7) channel having a 2/3 coding rate
TWI690162B (en) Clock data recovery apparatus and method
US5430745A (en) Prejudging current state in a decoder for coded signal processing channels