From 047a26cfe222935343bc2bcaac59b2b051b53101 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 21 Jul 2020 17:46:47 -0400 Subject: [PATCH] Initial copy and paste of brief notes made a while ago; more detail to come. --- SCSI.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 SCSI.md diff --git a/SCSI.md b/SCSI.md new file mode 100644 index 0000000..c120908 --- /dev/null +++ b/SCSI.md @@ -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. \ No newline at end of file