Circuit for controlling data transfer from VME bus to SCSI disk drive

Abstract: A digital data system (10) includes a circuit (16) for controlling data transfer between a four byte wide pathway, such as a VME bus (18), and a byte wide device, such as a SCSI disk drive (12) by way of a byte wide bus (14) (SCSI bus). The control circuit (16) effects selective data transfer of an odd or even data byte, a data short word (two parallel bytes) or a data long word (four parallel bytes). The transfer circuit (16) includes a four byte wide data register (30) connected to the VME bus (18), four, byte wide, funnel registers (22), (24), (26), (28) connected in parallel to the data register (30), a byte wide FIFO memory (20) connected between the funnel registers (22), (24), (26), (28) and the SCSI disk drive (12) via a SCSI bus (14). A DMA controller (34) and funnel controller state machine (32) control transfer of data from the VME bus (18) to the SCSI disk drive (12) either as a data byte, a data short word or a data long word.

Description: This invention relates in general to digital data systems and more particularly to the control of data transfer from a VME bus to a SCSI disk drive. A need exists to transfer data between a SCSI (Small Computer Systems Interface) device, such as a disk drive, and a VME bus. This requires adapting the SCSI channel, which is a byte-wide data pathway, to the VME bus, which can be either a byte, short word (2 parallel bytes), or long word (4 parallel bytes) pathway. VME bus byte transfers can occur over two sets of data lines, i.e. D0 through D7 or D8 through D15. Short word transfers use data lines DO through D15. Long word transfers use data lines DO through D31. Accordingly, the circuit must accommodate each of these pathways, while maintaining the data in the proper sequence regardless of the width of transfer, or of interleaving of the data widths. The following patents describe several configurations for effecting data transfer which do not satisfy this need due to undue complexity, excessive cost and/or unreliability: U.S. Patent 4,843,544; U.S. Patent 4,847,759; U.S. Patent 4,805,097; U.S. Patent 4,864,291; U.S. Patent 4,783,705; and U.S. Patent 4,716,525. From the Wescon /89 conference record, Nov. 1989, San Francisco, CA an interface between 16-Bit or 32-Bit CPUs and 8-Bit peripheral devices is known. This apparatus uses bidirectional 16-Bit FIFO data buffers and is relatively complex. According to the present invention, there is provided an apparatus for controlling data transfer from a four byte wide pathway, such as a VME bus, to a byte wide device such as a SCSI disk drive. The data transfer is effected in a simple efficient manner for either a data byte, a data short word (2 parallel bytes) or a data long word (4 parallel bytes). This is accomplished by an apparatus according to claim 1. Further embodiments of the invention are claimed in claims 2 to 6. Referring now to the Figure, there will be described a digital data system including an embodiment of the present invention. As shown, digital data system 10 includes a byte wide device such as SCSI disk drive 12 which is compatible with the Small Computer System Interface (SCSI) format. Data is transferred to drive 12 as an 8 bit data byte over a SCSI bus 14. A funnel circuit 16 transfers data from VME bus 18 (which is a four byte or 32 bits wide pathway) to SCSI bus 14. Funnel circuit 16 includes first-in-first-out (FIFO) memory 20 (which stores data bytes in sequence), funnel registers 22, 24, 26, 28, (each of which stores a data byte) VME data register 30 (having outputs D31-D24, D23-D16, D15-D8, D7-D0), funnel controller state machine 32 and DMA controller 34. A master control 36 controls system 10 through VME bus 18. Funnel circuit 16 takes data from the VME bus 18, which can be in bytes, short words (two parallel bytes), or long words (4 parallel bytes), and passes it to the disk drive 12, which accepts only bytes. In addition, circuit 16 stores data on the disk drive 12 in sequential order, starting with the most significant byte of the data transfer to the least significant byte, regardless of the width of each transfer, or of interleaving of different widths. The operation of the circuit is as follows. Master control 36 programs disk drive 12 and DMA controller 34 for a data transfer from VME bus 18 to disk drive 12 and starts state machine 32. DMA controller 34 performs a VME bus 18 read operation and latches the data into data register 30. Then, DMA controller 34 sends "Data available" to state machine 32. The state machine 32 clocks the data into the funnel registers 22, 24, 26, 28, reads the transfer type indicated by the DMA controller 34 and returns "Acknowledge" to the DMA controller 32. The "Transfer Type" indicates one of four possible conditions: Long Word (4 parallel bytes), Short Word (2 parallel bytes), Even Byte, or Odd Byte. If the FIFO memory 20 is not full, the state machine 32 writes to the FIFO memory 20 the number of bytes corresponding to the transfer type. If a "Fifo Full" flag is encountered the state machine 32 waits until the disk write operation unloads data from the FIFO memory 20, causing the "Fifo Full" flag to be negated. The state machine 32 transfers the data from the funnel registers 22, 24, 26, 28 to the FIFO memory 20 before responding to the next DMA controller 34 data available. By latching the data and sending an "Acknowledge" to the DMA controller 32 prior to actually performing the FIFO 20 write, the circuit 16 provides a higher burst and sustained data rate by allowing the VME bus read operation and the FIFO write operation to occur in parallel. Subsequent data transfers occur using the DMA controller 34 "Data Request" and "Transfer Type" signals, and the state machine 32 "Acknowledge" signal until the DMA has completed its programming. Because the state machine 32 completely unloads the funnel registers 22, 24, 26, 28 into the FIFO memory 20 before it latches the data from the next cycle, the proper data sequence is maintained regardless of the mix of transfer types. This data sequence refers to sending the most significant byte of the transfer to the FIFO memory 20 first followed by next most significant byte, and so on to the least significant byte. For a Long Word, four byte transfer, the funnel register 22 (connected to output D31-D24) sends the most significant data byte to the FIFO memory 20 first by asserting the ~OE1 signal and clocking the FIFO memory 20. Then the funnel register 24 (connected to output D23-D16) sends the next most significant data byte to the FIFO memory 20, followed by the data byte stored in funnel register 26 (connected to output D15-D8), and lastly followed by the least significant data byte stored in funnel register 28 (connected to output D7-D0). A Short Word, two byte transfer writes the data byte stored in funnel register 26 (connected to output D15-D8) to the FIFO memory 20 first, followed by the data byte stored in funnel register 28 (connected to output D7-D0). An Even Byte transfer writes the data byte stored in funnel register 26 (connected to output D15-D8) to the FIFO 20. An Odd Byte transfer writes the data byte stored in funnel register 28 (connected to output D7-D0) to the FIFO memory 20. FIFO memory 20 latches the data and sends an "acknowledge" to DMA controller 34 prior to actually performing the write to FIFO memory 20. This results in a higher burst and sustained data rate by the allowing the VME bus 18 read operation and the FIFO memory 20 write operation to occur in parallel. As an example, the funnel register 22, 24, 26, 18 are 74ALS374 or equivalent 8-bit registers. The state machine 32 is implemented using an ALTERA 5032 or equivalent programmable logic device. The FIFO is an IDT7204 FIFO (only 8-bits are used) providing a "Fifo Full" external status signal. The present invention finds application in a digital data system in which digital data is transferred over a 4 byte wide bus (such as a VME bus) to a byte wide device, such as a SCSI disk drive. The invention has particular application to a laser printer which prints images on film derived from medical diagnostic imaging modalities such as CT & MRI scanners.

Claims: An apparatus for controlling the transfer of data between a first four byte-wide digital data bus (18) and a second byte-wide digital data bus (14), characterized by a four byte-wide data register (30) connected to said first bus (18), said data register storing up to four bytes of data in parallel and having first, second, third and fourth byte-wide outputs respectively; first, second, third and fourth funnel registers (22,24,26,28) connected to the respective outputs of said data register (30), each of said funnel registers storing a data byte; a one byte-wide first-in, first-out, FIFO, memory (20), the outputs of said funnel registers (22,24,26,28) being connected in parallel to the input of said FIFO memory wherein said FIFO memory stores sequential bytes of data, the output of the FIFO memory being connected to said second, byte-wide data bus (14); and control means (32,34) for selectively controlling said data register (30), said funnel registers (22,24,26, 28) and said FIFO memory (20), to transfer data from said first, four byte-wide data bus (18) to said second, byte-wide data bus (14) either as a data byte, a data short word or a data long word by way of said four byte-wide data register (30), said first, second, third and fourth funnel registers (22,24,26,28), and said FIFO memory (20), such that the order of data transferred is most significant byte to least significant byte for each such data transfer. The apparatus of claim 1 wherein up to four bytes of digital data are transferred from said first, four byte-wide digital data bus (18) to said four byte-wide data register (30) in parallel with the sequential transfer of data bytes from said first, second, third and fourth funnel registers (22,24,26,28) to said FIFO memory (20). The apparatus of claims 1 or 2 wherein said transferred digital data can be either a long word of four bytes, a short word of two bytes, or an odd or even data byte, and wherein said control means (32,34) controls said data register (30), said funnel registers (22,24,26,28) and said FIFO memory (20) such that the order of data transferred to said second bus (14) is most significant byte to least significant byte for each such data transfer. The apparatus of claim 3 wherein said control means (32,34) controls said transfer (a) in a long word mode in which four bytes of a long word are transferred in parallel from said first, four byte-wide digital data bus (18) to said four-byte wide data register (30) and from said four byte-wide data register (30) to said first, second, third and fourth funnel registers (22,24,26,28), and sequentially from said funnel registers to said FIFO memory (20) and from said FIFO memory to said second, byte-wide digital data bus (14); and (b) in a short word mode, in which two bytes of a short word are transferred in parallel from said first, four byte-wide digital data bus (18) to said four byte-wide data register (30) and from said four byte-wide data register (30) to said third and fourth funnel registers (26,28), and sequentially from said third and fourth funnel registers to said FIFO memory (20) and from said FIFO memory to said second, byte-wide digital data bus (14); and (c) in an odd or even data byte mode, in which a data byte is transferred from said first, four byte-wide digital data bus (18) to said four byte-wide data register (30) and from said four byte-wide data register to said third funnel register (26) if an even data byte is to be transferred, or to said fourth funnel register (28) if an odd data byte is to be transferred, and from said third or fourth funnel registers, respectively, to said FIFO memory (20) and from said FIFO memory to said second, byte-wide digital data bus (14). The apparatus of one of claims 1 to 4 wherein said first, four byte-wide digital data bus (18) is a VME bus and said second, byte-wide digital data bus (14) is a SCSI bus, and including a SCSI disk drive connected to said second, byte-wide digital data bus (14). The apparatus of one of claims 1 to 4 wherein said control means includes a funnel controller state machine (32) and a DMA controller (34) for transferring data from said FIFO memory (20) to said second, byte-wide digital data bus (14) in parallel with transferring data from said four byte-wide digital data bus (18) to said four byte-wide data register (30).

Inventors: LAWLER EDWARD PAUL, LAWLER, EDWARD PAUL, Lawler, Edward Paul, c/o Eastman Kodak Company
Applicants: EASTMAN KODAK CO, EASTMAN KODAK COMPANY
Application year: 1992
Main classification: G06F13
IPC codes: G06F13