SE – Single-Ended, асимметричный SCSI

Стандарты, описывающие SCSI

1. Стандарт SCSI-1 был стандартизован ANSI ещё в 1986 г.

2. Стандарт SCSI-2.

3. Стандарт SCSI-3 описывается документами: SIP (SCSI Interlock Protocol), SPI (SCSI Parallel Interface).

4. Стандарт SPI, 1995 г. Определяет Fast SCSI (Fast Wide SCSI).

5. Стандарт SPI-2, 1999 г. Определяет Ultra2 SCSI (Wide Ultra2 SCSI).

6. Стандарт SPI-3, 2000 г. Определяет Wide Ultra3 SCSI (Ultra 160).

7. Стандарт SPI-4, 2001 г. Определяет Ultra320 SCSI.

8. Стандарт EPI (Enhanced Parallel Interface). Описывает построение SCSI-систем.

Существует множество вариантов классификации интерфейса SCSI. Остановимся на одном из вариантов.

Таблица 1. Классификации интерфейса SCSI

Стандарт Вид Скорость на шине, Мбайт/сек Ширина шины, биты Максимальная длина кабеля, метров Максимальное кол-во устройств Внешние разъемы, кол-во контактов Внешние разъемы, кол-во контактов
SE LVD HVD
Narrow/Wide N/W N/W N/W N/W N/W N/W N/W N/W
SCSI-1 5/– 8/– 6/– 12/– 25/– 8/– DB-25/– CX-50/– LD50/-
SCSI-2 Fast 10/20 8 /16 3/6 12/12 25/25 16/16 HD-50/HD-68 LD50/HD68
Ultra 20/40 8/16 3(1,5)/3(1,5) –/12 25/25 4(8)/4(8) HD-50/HD-68 LD50/HD68
Ultra 2 40/80 8/16 12/12 25/25 8/16 HD-50/HD-68 LD50/HD68
SCSI-3 Ultra 160 –/160 –/16 –/12   HD-68, VHDCI-68 HD68,HD80
Ultra 320 –/320 –/16 –/12   HD-68, VHDCI-68 HD68,HD80

SE – Single-Ended, сигнал ТТЛ-уровня;

LVD – Low Voltage Differential, низковольтный дифференциальный;

HVD – High Voltage Differential, дифференциальный;

HD – High Density, высокая плотность контактов разъёма;

LD – Low Density, низкая плотность контактов разъёма.

SE – Single-Ended, асимметричный SCSI

Термин обозначает обычный SCSI-интерфейс, в котором для каждого сигнала на шине есть свой проводник. Этот термин часто используется для указания принадлежности к «классическому» SCSI. Сигнал передается потенциалом с ТТЛ-уровнями относительно общего провода, который должен быть отдельным для каждого сигнала для снижения уровня помех.

В LVD SCSI и последующих вариантах SCSI каждый сигнал идёт уже по 2 проводам (по одному – положительной полярности, а по другому отрицательной).

LVD – Low Voltage Differential (низковольтный дифференциальный)

Двуполярный дифференциальный сигнал, используемый для высокоскоростной передачи данных в современных вариантах SCSI-интерфейса. При использовании LVD уровень напряжения сигнала находится в пределах ±1,8 В. На LVD-интерфейсе сигналы положительной и отрицательной полярности идут по разным физическим проводам. Для поддержки SCSI LVD требуется специальный кабель, состоящий из групп витых пар.

Терминаторы (Terminators)

Для согласования нагрузок на шине SCSI используют терминаторы, которые по электрическим свойствам делят на: пассивные, активные и FPT-терминаторы. Терминаторы требуют питания, для чего в интерфейсе имеются специальные линии TERMINATOR POWER.

Пассивные терминаторы – с импедансом 132 Ом, используются для SCSI-1. Представляют собой обычные резисторы.

Активные терминаторы – с импедансом 110 Ом. Представляют собой источник опорного напряжения (стабилизатор), вырабатывающий нужный потенциал, и каждая линия соединяется резистором 110 Ом с выходом этого источника.

В настоящее время, начиная с Ultra SCSI, применяются только активные терминаторы. При активном согласовании используются источники вспомогательного напряжения. Разумно было бы использовать согласования с принудительным ограничением сигнала. Для реализации данного метода в активном терминаторе устанавливаются фиксирующие диоды, которые ограничивают максимальное и минимальное напряжение входных сигналов на определённом уровне.

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

Активный терминатор, применяемый для устройств LVD, тоже должен отслеживать линию DIFFSENS и при напряжении ниже 0,7 В переходить в режим SE, а при напряжении 0,85...1,85 В переходить в режим LVD (см. рис. 3). При напряжении на линии DIFFSENS выше 2,4 В терминатор должен «отпускать» шину, поскольку это соответствует режиму HVD.

По исполнению терминаторы могут быть внутренними и внешними.

В большинстве случаев как контроллер, так и все приборы SCSI имеют встроенные активные терминаторы, которые можно как включить, так и отключить. Терминаторы должны быть включены на контроллере и последнем подключённом внешнем.

В настоящее время выпускаются универсальные SE/LVD-терминаторы, которые автоматически определяют тип интерфейса и выполняют согласование для данного типа интерфейса:

· DS21T07S фирмы Dallas, 9-канальный;

· VCC5672 фирмы Texas Instruments, 9-канальный;

· семейство микросхем фирмы ON Semiconductor, в т.ч. MCCS142235;

· семейство микросхем фирмы Rohm, в т.ч. BH9595FP-Y, BH9596FP-Y;

· семейство микросхем фирмы LinFinity Microelectronics Inc., в т.ч. LX5202.

Для питания терминаторов в шине предусмотрены специальные линии TERMPWR.

Активные терминаторы на каждом устройстве могут быть включены или выключены, это реализуется перестановкой одного джампера или программно, при конфигурировании устройства.

Внутренние терминаторы (или панелька для их установки) имеются во всех устройствах с не LVD-интерфейсом. В устройствах с LVD-интерфейсом внутренние терминаторы, как правило, отсутствуют.

Если используется внутреннее подключение, а внешние устройства подключаются не всё время, то необходимо переключать терминатор контроллера в соответствии с текущей конфигурацией.

Варианты подключения устройств к шине SCSI

Рассмотрим несколько вариантов подключения на одну шину устройств LVD, LVD/SE, SE, т.к. HVD-устройства могут работать только с себе подобными, да и к тому же данный тип передачи применяется в основном в серверах. В стандарте SCSI-3 этот тип передачи уже упразднён.

Возможно несколько ситуаций в зависимости от подключения к шине устройств и терминаторов разного типа – SE, LVD и LVD/SE.

Вариант подключения к шине Результат
Устройства SE и LVD с двумя SE- или LVD/SE-терминаторами SE-устройства будут работать, а LVD – автоматически отключатся
Устройства SE и LVD с двумя LVD-терминаторами Ничего работать не будет
SE- и LVD/SE-устройства с двумя SE- или LVD/SE-терминаторами Все устройства будут работать в режиме SE
SE- и LVD/SE-устройства с двумя LVD-терминаторами Ничего работать не будет
SE-, LVD- и LVD/SE-устройства с двумя SE- или LVD/SE-терминаторами LVD-устройства не работают, а SE и LVD/SE работают в режиме SE
SE-, LVD- и LVD/SE-устройства с двумя LVD-терминаторами Ничего работать не будет
LVD- и LVD/SE-устройства с двумя SE-терминаторами LVD-устройства не работают, а LVD/SE – работают в режиме SE
LVD- и LVD/SE-устройства с двумя LVD- или LVD/SE-терминаторами Все устройства работают в режиме LVD

Экспериментируя с подключением SE-, LVD- и LVD/SE-устройств к одной шине, нужно также помнить, что LVD- и SE-интерфейсы имеют разные ограничения на длину шины в зависимости от скорости передачи данных (Fast-5...40) и количества подключаемых устройств.

Но может возникнуть конфликтная ситуация, когда к хост-адаптеру (с режимом LVD/SE) будет подключено два устройства: первое – LVD, а второе – SE. В этом случае все устройства должны перейти в режим SE. Для второго устройства это очевидно, а для первого – нереально, т.к. оно может работать только в режиме LVD. Возникает патовая ситуация. Решить ее можно двумя способами:

1-й способ. Необходима установка Multimode LVD SCSI Expander, который бы преобразовывал LVD в SE и обратно. Среди существующих следует отметить:

  • готовые платы RTLVD-SE и RTLVD-3SE фирмы Rancho;
  • микросхемы семейства ...53C141 (SYM53C141, LSI53C141) фирмы LSI Logic – конвертор LVD<=>SE, повторитель SE<=>SE.

Данный метод может быть реализован только аппаратно в процессе разработки SCSI-устройств.

2-й способ. С использованием внешнего преобразователя LVD/SE.

Шина SCSI

В SCSI-системах принято делить все устройства на Инициаторы (ИУ, Initiator) и Исполнители (ЦУ, Target).

Существуют следующие варианты шины SCSI:

  • Wide Wirth (широкая шина) – соответственно 16-битная шина данных (D0-D15, 27 каналов [54 линии] для LVD и 36 линий для SE),
  • Narrow Wirth (узкая шина) – соответственно 8-битная шина данных (D0-D7, 18 каналов [36 линий] для LVD и 18 линий для SE).

Narrow шина не поддерживается последними версиями SCSI, начиная с Ultra 160.

При этом возникают два варианта проблем при подключении ЦУ (Target) на шину.

Для варианта 1:

1.1. Wide Target – Wide Width,

1.2. Narrow Target – Wide Width.

Для варианта 2:

2.1. Narrow Target – Narrow Width,

2.2. Wide Target – Narrow Width.

Рассмотрим подробнее все эти случаи подробнее.

1.1. Могут возникнуть сложности с подключением терминаторов, т.к. в LVD-устройствах внутренние терминаторы встречаются редко.

1.2. Переходник (адаптер с 68- на 50-контактный разъём) должен терминировать High Byte, если Narrow Target крайнее на шине.

На Wide Target следует установить джампер Disable Wide, терминация High Byte.

Wide Width состоит из старшего байта (High Byte) и младшего байта (Low Byte).

Narrow Width (контроллер всегда SE) представляет Low Byte's Wide Width. Narrow Width можно рассматривать как подмножество Wide Width, у которого используется только Low Byte's Data Bus. В простых одноканальных контроллерах контакты Narrow Width запараллелены с частью контактов Wide Width. При этом можно использовать смесь широких и узких устройств, для чего терминаторы на контроллере разделены на две половины: терминаторы младшего байта (TrmL) и старшего байта (TrmH) – и должны управляться независимо.

Т.е. должны быть соответствующие переключатели: либо на Target, либо на переходниках (TrmH в положении ON, а TrmL в положении OFF, старшие разряды всегда должны быть затерминированы). Если LVD/SE Target имеет переключатель режимов, то для согласования режимов необходимо переключить в режим SE Mode.

В обоих этих вариантах придется столкнуться с разнообразием разъёмов, применяемых для интерфейсов SCSI, из-за этого может возникнуть потребность в применении переходных адаптеров от одного типа разъёма к другому. Подробно о типах разъёмов, применяемых в SCSI-устройствах, см. «Типы применяемых в SCSI разъемов».

Подключение периферии

Рис. 5. Структурная схема подключения периферии

Рис. 6. Структурная схема кабеля для двух периферийных устройств

1, 2, 3 – разъём (розетка);

4 – кабель SCSI LVD, состоящий из витых пар;

5, 6 – разъём (вилка) целевого устройства (ЦУ, target);

7 – разъём (вилка) инициатора (ИУ, initiator).

Внешние разъёмы

В большинстве случаев используется пять (5) видов внешних разъёмов: HD-68, HD-50, CX-50, DB-25, VHDCI-68. Иногда необходимо применение переходников, если подключаемые к внешней шине устройства SCSI имеют различные внешние разъёмы.

Самый распространенный внешний разъём, применяемый в устройствах SCSI, – HE68Female (см. рис. 8 и табл. 2)

Рис. 8. Внешний вид разъёма HD-68

Контакты разъёма HD68 приведены в табл. 2.

В стандарте SPI (SCSI Parallel Interface, 1995 г.) определен Р-кабель и коннекторы для организации широкой (16 бит) шины на одном кабеле. Этот кабель с 68-контактными разъёмами HD-68M (рис. 8) называют кабелем SCSI-3.

Разъёмы Р-кабеля SCSI для цепи SE приведены в табл. 2.

Внутренние разъёмы

Самый распространенный внутренний разъём, применяемый в устройствах SCSI, – HE68Male (табл. 2) и HE50Male (табл. 3).

Таблица 2. Внешний и внутренний разъем HD68. Применяется в интерфейсах SCSI-2,3. Определен стандартом SPI (1995г.)

Single-Ended SCSI Differential SCSI HD-68   Single-Ended SCSI Differential SCSI HD-68
Signal name Signal name Pin# Signal name Signal name Pin#
   
Ground + Data Bit 12 Data Bit 12 – Data Bit 12
Ground + Data Bit 13 Data Bit 13 – Data Bit 13
Ground + Data Bit 14 Data Bit 14 – Data Bit 14
Ground + Data Bit 15 Data Bit 15 – Data Bit 15
Ground + Parity Bit 1 Parity Bit 1 – Parity Bit 1
Ground + Data Bit 0 Data Bit 0 – Data Bit 0
Ground + Data Bit 1 Data Bit 1 – Data Bit 1
Ground + Data Bit 2 Data Bit 2 – Data Bit 2
Ground + Data Bit 3 Data Bit 3 – Data Bit 3
Ground + Data Bit 4 Data Bit 4 – Data Bit 4
Ground + Data Bit 5 Data Bit 5 – Data Bit 5
Ground + Data Bit 6 Data Bit 6 – Data Bit 6
Ground + Data Bit 7 Data Bit 7 – Data Bit 7
Ground + Parity Bit 0 Parity Bit 0 – Parity Bit 0
Ground Ground Ground Ground
Ground Diffsens Ground Ground
Term-n Power Term-n Power Term-n Power Term-n Power
Term-n Power Term-n Power Term-n Power Term-n Power
Reserved Reserved Reserved Reserved
Ground Ground Ground Ground
Ground + Attention Attention – Attention
Ground Ground Ground Ground
Ground + Busy Busy – Busy
Ground +Acknowledge Acknowledge – Acknowledge
Ground + Reset Reset – Reset
Ground +Message Message – Message
Ground + Select Select – Select
Ground +Com./Data Com./Data –Com./Data
Ground + Request Request – Request
Ground +Input/Outpt Input/Output – Input/Output
Ground + Data Bit 8 Data Bit 8 – Data Bit 8
Ground + Data Bit 9 Data Bit 9 – Data Bit 9
Ground + Data Bit 10 Data Bit 10 – Data Bit 10
Ground + Data Bit 11 Data Bit 11 – Data Bit 11

Таблица 3. Разъем HE50 SCSI

Single-Ended SCSI Differential SCSI HE-50   Single-Ended SCSI Differential SCSI HE-50
Signal name Signal name Pin# Signal name Signal name Pin#
   
Ground + Data Bit 0 Term-n Power Term-n Power
Ground – Data Bit 0 Reserved Reserved
Ground + Data Bit 1 Reserved Reserved
Ground – Data Bit 1 Ground Ground
Ground + Data Bit 2 Ground Ground
Ground – Data Bit 2 Ground + Attention
Ground + Data Bit 3 Attention – Attention
Ground – Data Bit 3 Ground Ground
Ground + Data Bit 4 Ground Ground
Ground – Data Bit 4 Ground + Busy
Ground + Data Bit 5 Busy – Busy
Reserved – Data Bit 5 Ground + Acnowledge
Ground + Data Bit 6 Acknowledge – Acknowledge
Reserved – Data Bit 6 Ground + Reset
Ground + Data Bit 7 Reset – Reset
Ground – Data Bit 7 Ground + Message
Ground + Parity Bit 0 Message – Message
Ground – Parity Bit 0 Ground + Select
Ground Ground – Select – Select
Ground Ground Ground + C/D
Ground Ground C/D – C/D
Ground Ground Ground + Request
Ground Reserved Request – Request
Ground Reserved Ground + I/O
Ground Ground I/O – I/O

Фазы шины

В каждый конкретный момент времени шина SCSI может находиться только в одной из перечисленных фаз:

1. Bus Free – шина находится в состоянии покоя.

2. Arbitration – устройство (ИУ) может получить право на управление шиной.

3.1. Selection – инициатор, выигравший арбитраж, выбирает ЦУ (только одно), с которым он будет работать.

3.2. Reselection – аналогична предыдущей, но её вводит целевое устройство. Т.е. ИУ и ЦУ меняются ролями – ЦУ вызывает ИУ.

4. Command In (Out), Data In (Out), Status, Message In (Out) – информационные фазы (по шине данных передается информация).

Последовательность фаз представлена на рис. 9.

После фазы Selection ИУ может проводить процедуру тайм-аута выбора (Selection Time-Out), которая может быть реализована двумя методами:

1. Hard Reset.

2. Переход в фазу Bus Free.

Для реализации фазы Reselection во всех вышеприведенных фазах Initiator и Target меняются местами в вопросах выполнения действий.

В любом случае завершающей фазой является фаза Message In, в которой передается сообщение Disconnect или Command Complete, после чего шина переходит в состояние Bus Free.

В любой системе SCSI предусмотрена возможность сброса системы (Reset), для чего имеется линия Reset, на которую может быть выставлен сигнал сброса в любое время и любым устройством. Обработка сигнала Reset может быть реализована двумя методами:

1. Жёсткий сброс (Hard Reset) – аналогичен отключению питания для всех устройств системы SCSI.

2. Мягкий сброс (Soft Reset) – позволяет одному инициатору выполнить сброс шины SCSI, не нарушая работы других инициаторов в системе, где таких инициаторов несколько.

Рис. 9. Последовательность фаз шины SCSI

Асинхронная передача данных

Является обязательной для всех устройств SCSI и всех фаз передачи информации. Target управляет направлением передачи информации с помощью сигнала I/O:

I/O = «0» – передача Initiator => Target,

I/O = «1» – передача Initiator <= Target.

Передача каждого байта сопровождается взаимосвязанной парой сигналов REQ/ACK. Initiator фиксирует принимаемые данные по отрицательному перепаду сигнала REQ, Target считает принимаемые данные действительными по отрицательному перепаду сигнала ACK.

Рис. 10. Временные диаграммы асинхронной передачи данных

Т – источник данных Target, I – источник данных Initiator

Синхронная передача данных

Является опцией и может использоваться в фазах Data Out и Data In и только по результатам предварительной договорённости, которая реализуется посредством сообщений «Synchronous Data Transfer Request».

Рис. 11. Временные диаграммы синхронной передачи данных

Т – источник данных Target, I – источник данных Initiator

Управление интерфейсом

Для управления интерфейсом служит система сообщений. Всего сообщений – 28. Форматы сообщений стандартизированы, существуют однобайтные, двухбайтные и расширенные сообщения. В двухбайтном сообщении второй байт является аргументом сообщения, в расширенных сообщениях второй байт задаёт длину сообщения, а последующие байты несут код и аргументы сообщения.

Рассмотрим внутреннюю структуру сообщения на примере однобайтного сообщения «Identify».

Identify Message (80h-FFh)

ByteBit
Identify DiscPriv LUNTAR LUNTRN

Identify– Бит идентификации, должен быть установлен в единицу – признак Identify Message.

DiscPriv– Disconnect Privilege Bit, если равен 0, то Target не будет отсоединяться от Initiator до конца выполнения задачи. Если равен 1, то Initiator предоставляет Target привилегию отключения от шины. DiscPriv используется совместно с опциональным битом Dimm (Disconnect Immediate), который описан в Disconnect/Reconnect Mode Page (см. 8.12.3. Disconnect/Reconnect Control Page). Если Initiator выбирает Target, использующее SCSI-1 с опцией одного инициатора, то Target не будет пытаться отключится от шины до конца выполнения задачи и соответственно не будет обращать внимания на DiscPriv, который в этом случае всегда должен быть равен нулю.

LUNTAR– Logical Unit Target Bit. Если равен 0, то Identify Message адресовано логическому устройству (ЛУ). Если равен 1, то Identify Message адресовано обычному Target, который не включает в себя ЛУ. LUNTAR=0 всегда при работе с HDD.

LUNTRN– Logical Unit Number Target Routine Number описывает Logical Unit Number, если LUNTAR=0. При LUNTAR=1 описывает Target Routine Number (номер ЛУ).

Адресация и система команд

SCSI ID (бит идентификатора)

Бит идентификатора является единственным битом на шине данных, который соответствует уникальному адресу устройства на шине SCSI. Каждое устройство SCSI должно иметь свой уникальный адрес, назначаемый при конфигурировании. Бит идентификатора (адрес) задаётся при конфигурировании предварительной установкой переключателей или джамперов. Для хост-адаптера возможно программное конфигурирование.

Для хост-адаптера:

1. Narrow Width
D7 D6 D5 D4 D3 D2 D1 D0
2. Wide Width
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

Заводская установка ID для HDD SCSI всегда устанавливается на 0h или 1h.

Для двух подключаемых HDD:

Первый HDD
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
Второй HDD
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

Именно эта функция определяет максимальное количество устройств, которое может одновременно находится на шине SCSI: 16 на Wide Width и 8 на Narrow Width, включая хост-адаптер.

Биты чётности (DPB0, DPB1)

Использование битов чётности – системная опция. Но устройство всегда проверяет биты чётности на шине и если имеет возможность, то сообщает об ошибке бита чётности хост-адаптеру. Эта возможность определяется устройством для каждого конкретного устройства отдельно.

SCSI-система может иметь такую конфигурацию, когда все подключённые к интерфейсу устройства генерируют бит чётности и регистрация чётности для всех устройств включена. Система может также иметь конфигурацию, когда регистрация чётности отсутствует, и проверка по чётности вообще не осуществляется.

Во время фазы Arbitration (см. рис. 9) чётность не используется (DPB0, DPB1 не должны устанавливаться в состояние логического нуля).

Программный интерфейс ASPI

Для ускорения и упрощения разработки управляющих программ (драйверов) под операционную систему Windows (и не только) был разработан (фирмой Adaptec) программный интерфейс ASPI (Advanced SCSCI Programming Interface — расширенный интерфейс программирования SCSI), упрощающий разработку переносимых приложений управления различными устройствами с одной платформы Win32 на другую. Интерфейс ASPI представляет собой программную оболочку (надстройку), которая объединяет в себе соглашение о вызовах функций и установленный набор команд. Этот интерфейс призван посылать и обрабатывать команды SCSI, используя любой доступный в системе контроллер SCSI, поддерживающий такую возможность. ASPI интерфейс стал промышленным стандартом программной оболочки для следующих операционных систем: DOS, Windows, OS/2, Netware.

Интерфейс ASPI состоит из нескольких уровней. На самом низком уровне находится управляющая программа ASPI (драйвер), работающая непосредственно с контроллером. Далее следует периферийный драйвер, скрывающий тонкости работы с поддерживаемым периферийным оборудованием (жестким диском, сканером и т. д.). Этот драйвер может быть универсальным для различных моделей устройств одного типа или индивидуальным, но всегда поставляется изготовителем оборудования. Управляющий драйвер ASPI имеет несколько модификаций, зависящих от версии операционной системы Windows (MS-DOS, Windows 3.1, Windows 95/98/ME/NT/2000/XP). В большинстве случаев он поставляется в составе операционной системы и состоит из нескольких файлов:

Windows 98/ME Windows NT 4.0 Windows 2000 Windows XP
Wnaspi32.dll Wnaspi32.dll Wnaspi2k.dll Aspixp.sys (32 bit)
Apix.vxd Aspi32.sys Aspi2k.sys Wnaspixp.dll (32 bit)
  Winaspi.dll Winaspi.dll Aspi64.sys (64 bit)
      Wnaspi64.dll (64 bit)

Приведем примеры программ, использующих простейшие основы ASPI на Visual C++.

Пример №1. Инициализация интерфейса ASPI:

Void InitASPI ( )

{

DWORD dwASPIsupport ;

// вызываем функцию GetASPI32SupportInfo для инициализации ASPI

dwASPIsupport = GetASPI32SupportInfo( ) ;

if (HIBYTE (LOWORD (dwASPIsupport) = = SS_COMP)) // если ошибок нет

{

MessageBox (0, "ASPI успешно инициализирован !", MB_OK) ;

}

Else

{

MessageBox (0, "Ошибка инициализации ASPI !", MB_OK | MB_ICONINFORMATION) ;

}

}

Пример №2. Определение количества установленных в системе устройств:

DWORD GetCountDevice ( )

{

BYTE byCountDevice ;

DWORD dwASPI ;

// инициализируем ASPI

dwASPI = GetASPI32SupportInfo( ) ;

if (HIBYTE (LOWORD (dwASPI) = = SS_COMP)) // если ошибок нет

{

MessageBox (0, "ASPI успешно инициализирован !", MB_OK) ;

// определяем количество установленных в системе устройств

byCountDevice = LOBYTE (LOWORD (dwASPI)) ;

return (DWORD) byCountDevice ;

}

Else

{

MessageBox (0, "Ошибка инициализации ASPI !", MB_OK | MB_ICONINFORMATION) ;

return 0 ;

}

}

Пример №3. Получение информации об установленных в системе контроллерах:

Void GetAdapterInfo ( )

{

SRB_HAInquiry haInq ;

BYTE byCountDevice ;

DWORD dwASPI, dwStatus ;

// инициализируем ASPI

dwASPI = GetASPI32SupportInfo( ) ;

if (HIBYTE (LOWORD (dwASPI) = = SS_COMP)) // если ошибок нет

{

MessageBox (0, "ASPI успешно инициализирован !", MB_OK) ;

// определяем количество установленных в системе устройств

byCountDevice = LOBYTE (LOWORD (dwASPI)) ;

for (int i = 0; i < byCountDevice; i++)

{

//обнуляем структуру и заполняем данными

memset (&haInq, 0, sizeof (SRB_HA_Inquiry)) ;

haInq.SRB_Cmd = SC_HA_INQUIRY ;

haInq.SRB_HaId = i ;

haIng.SRB_Flags = 0 ;

haInq.SRB_Hdr_Rsvd = 0 ;

// выполняем команду ASPI

dwStatus = SendASPI32Command ( (LPSRB) &haInq) ;

while (!haInq.SRB_Status) { // ждем

}

// если команда завершена

if (dwStatus = = SS_COMP)

{

// заносим полученные данные куда-нибудь (например, в структуру)

// haInq.HA_SCSI_ID

// haInq.HA_ManagerId

// haInq.HA_Identifier

// haInq.HA_Unique

}

}

}

Else

{

MessageBox (0, "Ошибка инициализации ASPI !", MB_OK | MB_ICONINFORMATION) ;

return ;

}

}

Более подробную информацию по этим примерам можно получить в [5] или internet.

Система команд SCSI

Система команд SCSI включает общие команды, применимые для устройств всех классов, и специфические для каждого класса. Все команды делятся на три категории:

· обязательные (mandatory);

· дополнительные (optional);

· фирменные (vendor specific).

Любое SCSI-устройство должно поддерживать обязательные команды общего набора и своего класса, чем обеспечивается высокий уровень совместимости. Команды SCSI для устройств прямого доступа (Direct-Access Devices) приведены в табл. 7.

Таблица 6. Команды SCSI для устройств прямого доступа

Команда Код команды Тип команды
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 CHANGE DEFINITION COMPARE COPY COPY AND VERIFY FORMAT UNIT INQUIRY LOCK-UNLOCK CACHE LOG SELECT LOG SENSE MODE SELECT (6) MODE SELECT (10) MODE SENSE (6) MODE SENSE (10) PRE-FETCH PREVENT-ALLOW MEDIUM REMOVAL READ (6) READ (10) READ BUFFER READ CAPACITY READ DEFECT DATA READ LONG REASSIGN BLOCKS RECEIVE DIAGNOSTIC RESULTS RELEASE REQUEST SENSE RESERVE REZERO UNIT SEARCH DATA EQUAL SEARCH DATA HIGH SEARCH DATA LOW SEEK (6) SEEK (10) SEND DIAGNOSTIC SET LIMITS START STOP UNIT SYNCHRONIZE CACHE TEST UNIT READY VERIFY WRITE (6) WRITE (10) WRITE AND VERIFY WRITE BUFFER WRITE LONG WRITE SAME 40h 39h 18h 3Ah 04h 12h 36h 4Ch 4Dh 15h 55h 1Ah 5Ah 34h 1Eh 08h 28h 3Ch 25h 37h 3Eh 07h 1Ch 17h 03h 16h 01h 31h 30h 32h 0Bh 2Bh 1Dh 33h 1Bh 35h 00h 2Fh 0Ah 2Ah 2Eh 3Bh 3Fh 41h O O O O M M O O O O O O O O O M M O M O O O O M M M O O O O O O M O O O M O O O O O O O
Примечание: M – обязательные команды, O – опциональные команды.

Некоторые команды сопровождаются блоком параметров, следующим за блоком дескриптора команды. Форматы блоков стандартизированы, длина блока определяется кодом операции, который всегда является первым байтом блока и может составлять 6, 10 или 12 байтов.

Любое ЦУ SCSI должно поддерживать четыре команды: Inquiry, Request Sense, Send Diagnostic, Test Unit Ready.

Порядок выполнения работы

1. При домашней подготовке изучить назначение, режимы работы и условия совместимости интерфейса SCSI.

2. Ознакомиться с основами программного интерфейса ASPI.

3. Выполнить индивидуальное задание по варианту

Содержание отчёта

1. Привести структурную схему подключения периферии к шине SCSI.

2. Привести схему, отражающую последовательности фаз шины SCSI.

3. Привести временные диаграммы для асинхронного и синхронного режима передачи данных.

4. Результаты выполнения индивидуального задания.

Контрольные вопросы:

1. Каковы особенности и назначение интерфейса SCSI?

2. Классификация SCSI. Понятия Single-Ended, Low Voltage Differential и High Voltage Differential.

3. Назначение терминаторов. Их виды.

4. Варианты подключения устройств к шине SCSI (SE, LVD и LVD/SE).

5. Перечислите основные типы применяемых в SCSI разъемов.

6. Фазы шины SCSI. Характеристика фаз и их последовательность.

7. Перечислите сигналы управления шины SCSI.

8. Приведите временные диаграммы для асинхронного и синхронного варианта обмена по шине SCSI.

9. Охарактеризуйте систему управляющих сообщений интерфейса SCSI. Приведите пример внутренней структуры управляющего сообщения.

10. Охарактеризуйте программный интерфейс ASPI и его уровни.

Список литературы:

  1. Гук М. Дисковая подсистема ПК. – Санкт-Петербург, 2001.
  2. Интерфейс малой компьютерной системы (ИМКС) / Всесоюзный центр переводов научно-технической литературы и документации (ВЦП). Северо-Кавказский филиал. – Ростов-Н/Д, 1989.
  3. SCSI Interface: Product Manual. Vol. 1, 2 / Seagate.
  4. SCSI-2 Specification.
  5. Несвижский В. Программирование устройств SCSI и IDE. — СПб.: БХВ – Петербург, 2003. – 592 с.

Примерные варианты заданий:

Общее для всех:

1. Определить, установлена ли в системе поддержка ASPI.

2. Проинициализировать интерфейс ASPI.

3. Определить количество установленных в системе устройств.

4. Получить информацию об установленных контроллерах.

Индивидуальные задания:

1. Получить текущую скорость чтения устройства.

2. Выполнить полную и частичную очистку диска.

3. Закрыть записанный трек или сессию.

4. Открыть и закрыть лоток устройства.

5. Определить полный размер носителя.

6. Определить максимальную поддерживаемую устройством скорость чтения.

7. Определить текущую позицию воспроизведения на диске.

8. Определить имя и номер продукта.

9. Заблокировать и разблокировать лоток устройства.

10. Приостановить и продолжить текущее воспроизведение диска.

11. Прочитать данные с диска на компьютер.

12. Прочитать заголовочную область диска.

13. Просканировать диск.

14. Установить время остановки шпинделя двигателя устройства.

15. Установить скорость чтения для устройства.

16. Проверить готовность устройства к работе.

Стандарты, описывающие SCSI

1. Стандарт SCSI-1 был стандартизован ANSI ещё в 1986 г.

2. Стандарт SCSI-2.

3. Стандарт SCSI-3 описывается документами: SIP (SCSI Interlock Protocol), SPI (SCSI Parallel Interface).

4. Стандарт SPI, 1995 г. Определяет Fast SCSI (Fast Wide SCSI).

5. Стандарт SPI-2, 1999 г. Определяет Ultra2 SCSI (Wide Ultra2 SCSI).

6. Стандарт SPI-3, 2000 г. Определяет Wide Ultra3 SCSI (Ultra 160).

7. Стандарт SPI-4, 2001 г. Определяет Ultra320 SCSI.

8. Стандарт EPI (Enhanced Parallel Interface). Описывает построение SCSI-систем.

Существует множество вариантов классификации интерфейса SCSI. Остановимся на одном из вариантов.

Таблица 1. Классификации интерфейса SCSI

Стандарт Вид Скорость на шине, Мбайт/сек Ширина шины, биты Максимальная длина кабеля, метров Максимальное кол-во устройств Внешние разъемы, кол-во контактов Внешние разъемы, кол-во контактов
SE LVD HVD
Narrow/Wide N/W N/W N/W N/W N/W N/W N/W N/W
SCSI-1 5/– 8/– 6/– 12/– 25/– 8/– DB-25/– CX-50/– LD50/-
SCSI-2 Fast 10/20 8 /16 3/6 12/12 25/25 16/16 HD-50/HD-68 LD50/HD68
Ultra 20/40 8/16 3(1,5)/3(1,5) –/12 25/25 4(8)/4(8) HD-50/HD-68 LD50/HD68
Ultra 2 40/80 8/16 12/12 25/25 8/16 HD-50/HD-68 LD50/HD68
SCSI-3 Ultra 160 –/160 –/16 –/12   HD-68, VHDCI-68 HD68,HD80
Ultra 320 –/320 –/16 –/12   HD-68, VHDCI-68 HD68,HD80

SE – Single-Ended, сигнал ТТЛ-уровня;

LVD – Low Voltage Differential, низковольтный дифференциальный;

HVD – High Voltage Differential, дифференциальный;

HD – High Density, высокая плотность контактов разъёма;

LD – Low Density, низкая плотность контактов разъёма.

SE – Single-Ended, асимметричный SCSI

Термин обозначает обычный SCSI-интерфейс, в котором для каждого сигнала на шине есть свой проводник. Этот термин часто используется для указания принадлежности к «классическому» SCSI. Сигнал передается потенциалом с ТТЛ-уровнями относительно общего провода, который должен быть отдельным для каждого сигнала для снижения уровня помех.

В LVD SCSI и последующих вариантах SCSI каждый сигнал идёт уже по 2 проводам (по одному – положительной полярности, а по другому отрицательной).

Наши рекомендации