Введение	Описание команд
Описание сигналов	Типы ПУ
Описание сообщений	Конфигурирование устройств SCSI
Описание сигналов

Физический интерфейс
Фазы шины

Физический интерфейс

Физически SCSI представляет собой шину, состоящую из 25 сигнальных цепей. Для защиты от помех каждая сигнальная цепь имеет свой отдельный обратный провод. На применяемых двухрядных разъемах контакты сигнальных и обратных цепей располагаются друг против друга. Это позволяет применять в качестве кабелей как витые пары проводов, так и плоские шлейфы, где сигнальные и обратные провода чередуются. По типу сигналов различают линейные (Single Ended) и дифференциальные (Differential) версии SCSI. Их кабели и разъемы идентичны, но электрической совместимости устройств нет.

Новые устройства с интерфейсом LVD могут работать на шине вместе с устройствами с линейным интерфейсом - для этого их буферные схемы содержат автоматический определитель типа интерфейса. Однако совместимость относится только к LVD - традиционные устройства с HVD могут работать только с себе подобными.

Назначение сигналов раскрывает табл.1.1. Все сигналы шины являются L-активными: активному состоянию и логической единице соответствует низкий потенциал. На концах кабельных шлейфов обязательно устанавливаются терминаторы, согласованные по импедансу с кабелем. Они предназначены для "подтягивания" уровня сигналов линий к высокому потенциалу. Терминаторы служат и для предотвращения отражения сигналов от концов кабеля. По исполнению терминаторы могут быть внутренние (размещенные на печатной плате устройства) и внешние (устанавливаемые на разъемы кабеля или устройства). По электрическим свойствам различают следующие типы терминаторов:

•	Пассивные (SCSI-1) с импедансом 132 0м, представляющие собой обычные резисторы. Не пригодны для режимов SCSI-2 с частотой выше 5 МГц.

•	Активные с импедансом 110 0м -специальные терминаторы для работы на частоте 10 МГц.

•	FPT (Forced Perfect Terminator) - улучшенный вариант активных терминаторов с ограничителями выбросов.

Активные терминаторы требуют питания, для чего в интерфейсе имеются специальные линии TERMPWR. Питание поступает от ИУ.

0	Таблица 1.1 Назначение сигналов шины SCSI

Сигнал	Назначение
BSY#	Busy - шина занята
SEL#	Select -выбор ЦУ инициатором (Select)или инициатора ЦУ (Reselect)
C/D#	Control/Data -управление (низкий уровень)/данные (высокий уровень)
I/0#	Input/Output -направление передачи относительно ИУ: вводу в ИУ соответствует низкий уровень. Используется для различия прямой (Select) и обратной (Reselect)выборки: фазе Selection соответствует низкий уровень
MSG#	Message -передача сообщения
DB[0:31]#	Data Bus -инверсная шина данных
DP[0:3]#	Data Parity -инверсные биты паритета, дополняют количество единичных бит байта до нечетного. DP0#относится к DB[0:7], ... DP3# -к DВ[24:31]. В фазе арбитража не действуют
TERMPWR	Terminator Power - питание терминаторов
ATN#	Attention - внимание
REQ#	Request - запрос от ЦУ на пересылку данных
ACK#	Acknowledge -подтверждение передачи (ответ на REQ#)
RST#	Reset-сброс

Каждое устройство SCSI, подключенное к шине, должно иметь свой уникальный адрес, назначаемый при конфигурировании. Для 8-битной шины диапазон значений адреса 0-7, для 16-битной - 0-15. Адрес задается предварительной установкой переключателей или джамперов. Для хост-адаптера возможно программное конфигурирование. Адресация устройств на шине в фазах выборки осуществляется через идентификатор SCSI ID, представляющий адрес в позиционном коде. Адрес определяет номер линии шины данных, которой осуществляется выборка данного устройства. Устройство с нулевым адресом выбирается низким уровнем на линии DB0# (SCSI ID=00000001), с адресом 7 - на линии DB7# (SCSI ID=10000000). Для ИУ значение идентификатора определяет приоритет устройства при использовании шины, наибольший приоритет имеет устройство с большим значением адреса. Адрес и идентификатор - всего лишь две различные формы представления одного и того же параметра.

28	В любой момент обмен информацией по шине может происходить только между парой устройств. Операцию начинает ИУ, а ЦУ ее исполняет. ИУ выбирает ЦУ по его идентификатору. Чаще всего роли устройств фиксированы: хост-адаптер является инициатором (ИУ), а ПУ - целевым (ЦУ). Возможны комбинированные устройства, выступающие в роли и ИУ, и ЦУ. В ряде случаев роли устройств меняются: ЦУ может, пройдя фазу арбитража, выполнить обратную выборку (Reselect) ИУ для продолжения прерванной операции. При выполнении команды копирования (Copy) ИУ дает указание ведущему устройству копирования (Copy Master) на обмен данными, который может производиться и с другим ЦУ (для которых ведущее устройство копирования выступит в роли ИУ).

29	Информация по шине данных передается побайтно асинхронно, используя механизмы запросов (REQuest) и подтверждений (ACKnowledge). Каждый байт контролируется на нечетность (кроме фазы арбитража), но контроль может быть отключен. Интерфейс имеет возможность синхронной передачи данных, ускоряющей обмен.

Фазы шины

Шина может находиться в одной из перечисленных фаз. Роли источников сигналов между ИУ и ЦУ описаны в табл. 1.2.

0	Таблица 1.2 Источники сигналов SCSI

Фаза шины	Сигнал
	BSY#	SEL#	REQ#, C/D#, I/O#,  MSG#	ACK# ATN#	DBx#, DBPx#
Bus Free	-	-	-	-	-
Arbitration	AA	WA	-	-	SID
Selection	I, T	I	-	I	I
Reselection	I, T	T	T	I	T
Command	T	-	T	I	I
Data IN	T	-	T	I	T
Data OUT	T	-	T	I	I
Status	T	-	T	I	T
Message IN	T	-	T	I	T
Message OUT	T	-	T	I	I
•	I - источник сигнала - ИУ;

•	Т - источник сигнала - ЦУ;

•	АА - источник сигнала - устройство, активное в арбитраже;

•	WA - источник сигнала - устройство-победитель в арбитраже;

•	SID - каждое устройство управляет только битом данных, соответствующим значению его SCSI ID.

В фазах Command, Data, Status и Message по шине данных передается информация, фазы идентифицируются сигналами MSG#, C/D# и I/0# (табл. 1.3), которыми управляет ЦУ. ИУ может потребовать посылки сообщения (фаза Message OUT) введением сигнала ATN#, а ЦУ может освободить шину, сняв сигналы MSG#, C/D#, I/0# и BSY#.

Таблица 1.3 Информационные фазы SCSI

Сигнал				Фаза	Направление
MSG#		C/D#	I/O#
0		0	О	Data OUT	I =>T
0		0	1	Data IN	I<=Т
0		1	О	Command	I=>T
0		1	1	Status	I<=Т
1		0	О	Зарезервировано
1		0	1	Зарезервировано
1		1	О	Message OUT	I=>Т
1		1	1	Message IN	I<=Т
При асинхронном обмене передача каждого байта сопровождается взаимосвязанной парой сигналов REQ# /ACK#. ИУ фиксирует принимаемые данные, получив сигнал REQ# (по отрицательному перепаду). ЦУ считает принимаемые данные действительными по отрицательному перепаду сигнала АСК#. Асинхронный обмен поддерживается всеми устройствами для всех фаз передачи информации.

Фазы передачи данных Data OUT и Data IN по предварительной "договоренности" устройств могут выполняться и в синхронном режиме обмена. При согласовании синхронного режима определяются минимальные длительности и периоды управляющих импульсов АСК# и REQ#, а также допустимое отставание подтверждений от запросов (REQ/ACK offset agreement). ЦУ передает серию данных, сопровождаемых стробами REQ# в темпе, ограниченном установленными временными параметрами. ИУ фиксирует принимаемые данные по отрицательному перепаду сигнала REQ#, но отвечать на них сигналом АСК# может с некоторым опозданием. Как только отставание числа принятых сигналов АСК# от числа посланных REQ# достигнет оговоренного предельного значения, ЦУ приостановит обмен до прихода очередного подтверждения АСК#. Операция будет считаться завершенной, когда число принятых подтверждений совпадет с числом посланных запросов. При приеме данных ЦУ механизм согласования остается тем же, но данные фиксируются по отрицательному перепаду сигнала АСК#.

В спецификации SCSI-1 момент возобновления передачи по устранении отставания описан нечетко, в результате чего разработчики могли считать, что очередной запрос (и данные) может последовать лишь после окончания (положительного перепада) сигнала АСК#. Устройство, на это рассчитанное, может терять данные: для него последний сигнал REQ# (и данные) будет неожиданным и выглядеть как превышение согласованного смещения.

Обмен при разрядности 16 и 32 бит происходит аналогично, но при использовании двух кабелей (В и Q) передачи по ним управляются сигналами REQB#/ACKB# и REQQ#/ACKQ# соответственно. По обоим кабелям передачи выполняются в одинаковых режимах. Если в последней фазе данных используются не все байты, передатчик обязан снабдить их корректным битом паритета.

При описании фаз шины не говорилось о временных задержках. Они определяются спецификацией так, чтобы возможный "перекос" - неодновременный приход сигналов, вызванный задержкой как в электронных схемах, так и в разных проводах кабеля, - не влиял на устойчивость протокола. В асинхронном режиме обмена на скорость передачи информации влияет и длина кабеля, поскольку изменения состояний участников обмена привязываются к сигналам, распространяющимся по кабелю с ограниченной скоростью. Из-за необходимости учета задержек в случае применения пары кабелей в каждом из них используется своя пара REQ#/ACK#.

В фазе Command ЦУ запрашивает от ИУ команду. В фазе Status ЦУ делает запрос на передачу ИУ информации о своем состоянии. В фазах Data IN и Data OUT ЦУ делает запросы на передачу данных к ИУ и от него соответственно. Фазы Message IN и Message OUT служат для передачи сообщений. Фазу Message OUT ЦУ вводит в ответ на условие Attention, порождаемое ИУ сигналом ATN#, когда оно нуждается в посылке сообщения ЦУ. Фазу Message IN ЦУ вводит при необходимости посылки сообщения ИУ.

Между фазами передачи информации сигналы BSY#, SEL#, REQ# и АСК# должны оставаться в неизменном состоянии, меняться могут только значения сигналов C/D#, I/0#, MSG# и шины данных.

Сигналы ATN# и RST# могут порождать условия Attention и Reset соответственно, причем асинхронно по отношению к фазам шины. Эти условия могут привести к изменению предопределенного порядка фаз. Сигнал ATN# вводится ИУ во время любой фазы, кроме арбитража и состояния покоя шины. Сигнал RST# вводится в любой момент любым устройством, и по условию Reset все устройства должны немедленно освободить шину. В зависимости от настройки, принятой для всех устройств конкретной системы, возможно выполнение одного из двух вариантов сброса. "Жесткий" сброс переводит устройства в состояние, принятое по включению питания, сбрасывая все текущие процессы, очереди и т. п. В случае "мягкого" сброса после освобождения шины устройства пытаются завершить начатые операции, сохраняя текущие назначения настроек.

Каждый процесс ввода/вывода состоит из следующей последовательности фаз шины: из состояния Bus Freeчерез фазу Arbitrationпереход к фазе Selectionили Reselection. Далее следуют фазы передачи информации (Command, Data, Status, Message). Завершающей фазой является Message In, в которой передается сообщение Disconnect или Command Complete, после чего шина переходит в состояние покоя Bus Free.

Архитектура SCSI обеспечивает для каждого процесса ввода/вывода сохранение набора из трех указателей - Saved SCSI Pointers, для команды, состояния и данных. ИУ имеет текущий набор указателей (только один), в который копируется сохраненный набор для текущего процесса. Текущие указатели указывают на очередной байт команды, состояния и данных, которые будут передаваться между памятью ИУ и ЦУ. Сохраненные указатели команды и состояния всегда указывают на начала блоков дескрипторов команд и состояния. Сохраненный указатель данных указывает на начало блока данных до тех пор, пока ЦУ не пришлет сообщение Save Data Pointer. По его приему будет сохранен текущий указатель данных. Когда ЦУ отключается от шины, информация о текущем процессе ввода/вывода содержится в сохраненном наборе указателей. При возобновлении процесса ЦУ сообщением Restore Pointers может потребовать у ИУ скопировать сохраненный набор в текущий и продолжить выполнение команд данного процесса ввода/вывода.

Поскольку указатель данных может быть модифицирован ЦУ до завершения ввода/вывода, использование указателя для определения реального количества переданных данных дает ненадежные результаты.