В спецификации SCSI-1 момент возобновления передачи после устранения отставания описан нечетко, в результате разработчики могли посчитать, что очередной запрос (и данные) может последовать лишь после окончания (положительного перепада) сигнала ACK#
REQ#
(и данные) является неожиданным и выглядит как превышение согласованного смещения.Рис. 5.6
. Временные диаграммы синхронного обмена:Обмен при разрядности 16 бит происходит аналогично. Если в последней фазе данных используются не все байты, передатчик обязан снабдить корректным битом паритета и неиспользуемые байты.
При описании фаз передачи данных не говорилось о временных задержках. Они определяются спецификацией так, чтобы возможный «перекос» — неодновременный приход сигналов, вызванный задержкой как в электронных схемах, так и в разных проводах кабеля, — не влиял на устойчивость протокола. В асинхронном режиме обмена на скорость передачи информации влияет и длина кабеля, поскольку изменения состояний участников обмена привязываются к сигналам, распространяющимся по кабелю с ограниченной скоростью. Если в широкой шине имеется пара кабелей (А и В, что на практике встречается редко), то в каждом из них используется своя пара управляющих сигналов (REQ#
ACK#
и REQB#
/ACKB#
), поскольку эти кабели могут иметь разную длину.В фазе
ATN#
, когда оно нуждается в посылке сообщения ЦУ. Фазу Между фазами передачи информации сигналы BSY#
SEL#
, REQ#
и ACK#
должны оставаться в неизменном состоянии, меняться могут только значения сигналов C/D#
, I/O#
, MSG#
и шины данных.Сигналы ATN#
RST#
могут порождать условия ATN#
вводится ИУ во время любой фазы, кроме арбитража и состояния покоя шины. Сигнал RST#
вводится в любой момент любым устройством, и по условию Каждый
Архитектура SCSI обеспечивает для каждого процесса ввода-вывода сохранение набора из трех указателей (saved SCSI pointers): для команды, состояния и данных. ИУ имеет текущий набор указателей (только один), в который копируется сохраненный набор для текущего процесса. Текущие указатели указывают на очередной байт команды, состояния и данных, которые будут передаваться между памятью ИУ и ЦУ. Сохраненные указатели команды и состояния всегда указывают на начала блоков дескрипторов команд и состояния. Сохраненный указатель данных указывает на начало блока данных до тех пор, пока ЦУ не пришлет сообщение