mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-21 23:29:25 +00:00
Initial copy and paste of brief notes made a while ago; more detail to come.
parent
57aa170380
commit
047a26cfe2
28
SCSI.md
Normal file
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.
|
Loading…
Reference in New Issue
Block a user