1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-30 19:52:18 +00:00

Initial copy and paste of brief notes made a while ago; more detail to come.

Thomas Harte 2020-07-21 17:46:47 -04:00
parent 57aa170380
commit 047a26cfe2

28
SCSI.md Normal file

@ -0,0 +1,28 @@
The following is a brief summation of SCSI communications.
# Selection Phase
The bus is initially free.
## Initiator
An initiator begins the arbitration phase — it waits until the bus is free and then asserts its ID and BUSY. If the entire arbitration delay passes without anybody asserting SELECT or a higher ID then it will assert SELECT and proceed to the selection phase. Otherwise it will release all lines, having lost arbitration.
A device that has won arbitration will then wait two deskew delays, then load the OR of its ID and the target ID. So it is now holding BUSY, SELECT and both its ID and the target ID. After a further two deskew delays it will deassert BUSY, then wait a bus settle delay.
If BUSY is still asserted, it will wait a further two deskew delays and deassert SELECT, a selection having been made. If BUSY is not asserted, it will conclude that the target doesn't exist.
## Target
If SELECT is asserted, and BUSY and I/O are not asserted, for a deskew delay period, sample the data bus. If the target's ID is asserted it will consider itself selected and start to assert BUSY.
# Reselection Phase
... TODO ...
# Data Phases
* data is serialised into bytes, with parity;
* the target is responsible for pushing or pulling data;
* the target is also in charge of which phase is ongoing, indicated via the MESSAGE, CONTROL/DATA and I/O pins;
* _but_ if the initiator signals ATTENTION, the target should segue directly into a message out phase.