SCSI is an acronym for Small Computer Systems Interface. It is an ANSI standard that has become one of the leading I/O buses in the computer industry. The foundation of the SCSI standard was laid by Shugart Associates (the same guys that gave the world the first mini floppy disks) when they introduced the SASI bus (Shugart Associates Standard Interface).
The SCSI bus is a parallel bus, which comes in a number of variants. The oldest and most used is an 8 bit wide bus, with single-ended signals, carried on 50 wires. (If you do not know what single-ended means, do not worry, that is what this document is all about.) Modern designs also use 16 bit wide buses, with differential signals.
SCSI bus not only has data lines, but also a number of control signals. A very elaborate protocol is part of the standard to allow multiple devices to share the bus in an efficient manner.
On a SCSI bus, each possible pair of devices can communicate. Whether their function allows this is another matter, but the standard does not restrict it.
The main phases involved in the operation of the SCSI bus are:
The bus is free when the -BSY signal is in the inactive (high voltage) state. Any controller can request the use of the bus while it is in this state. Since two or more controllers may generate such a request at the same time, an arbitration scheme must be implemented. A controller requests the bus by asserting the -BSY signal and by asserting its associated data line to identify itself. Each controller in the bus is assigned a fixed priority, with controller 7 having highest priority. When -BSY becomes active, all controllers that are requesting the bus examine the data lines and determine whether a higher priority device is requesting the bus at the same time. The controller using the highest numbered line realizes that it has won the arbitration.
Having won arbitration, controller 6 continues to assert -BSY and -DB6 (its address). It indicates that it wishes to select controller 5 by asserting the -SEL and then the -DB5 line. The selected target controller responds by asserting -BSY. This informs the initiator that the connection it is requesting has been established, so that it may remove the address information from data lines. The selection process is now complete, and the target controller is asserting -BSY.
The information transferred between two controllers may consist of commands from the initiator to the target, status responses from the target to the initiator, or data being transferred to or from the I/O device. Handshake signaling is used to control information transfers. The target asserts -I/O during an input operation (target to initiator) and it asserts -C/D to indicate that information is a command or status response. At the end of the transfer, the target controller releases -BSY signal, thus freeing the bus for use by other devices.
When a logical connection is suspended and the target is ready to restore it, the target must first gain control of the bus. It starts an arbitration cycle, and after winning arbitration, it selects the initiator. The initiator is now asserting -BSY. The initiator waits for short period after being selected to make sure that target has asserted -BSY, and then releases the -BSY line. The connection between the two controllers has now been reestablished, with the target in control of the bus as required for data transfer to proceed.