Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шины.PCI,.USB.и.FireWire

.pdf
Скачиваний:
59
Добавлен:
19.03.2016
Размер:
6 Mб
Скачать

Rep_del_jit (3 бита) — максимальное колебание задержки повторителя (Rep_ del_jit + 1)×20 (нс), в 1394b называется Jitter;

Power_Class (3 бита) — отношение к питанию от шины (соответствует полю pwr пакета самоидентификации);

Resume_int (1394a) — разрешение прерывания по возобновлению работы при$ остановленного порта (при возобновлении установится бит Port_event). В 1394b на месте этого бита расположен бит Watchdog;

Watchdog (1394b) — разрешение индикации обнаружения петли, пропадания питания, тайм$аутов и начала возобновления (resume) при неработающем ин$ терфейсе PHY$LINK;

ISBR (Initiate Short Bus Reset) — инициирование «короткого» сброса (через арбитраж);

Loop — признак обнаружения петли, сбрасывается записью «1» в этот бит;

Power_Fail — признак отказа питания, сбрасывается записью «1» в этот бит;

Time-out — признак тайм$аута арбитража (200–400 мкс), сбрасывается запи$ сью «1» в этот бит;

Port_event — признак смены состояния, конкретные источники разрешаются и запрещаются своими битами;

Enab_accel — разрешение ускорения арбитража;

Enab_multi — разрешение соединения пакетов, передаваемых на разных ско$ ростях (не поддерживается узлами 1394);

Max_legacy_path_speed (1394b) — максимальная скорость, обнаруженная в па$ кетах самоидентификации, переданных или транслированных данным узлом во время инициализации шины (000 —S100, 001 — S200, 010 —S400);

B_link (1394b) — к PHY подключен LINK, поддерживающий бета$режим;

Bridge (1394b) — поле, задающее значение brdg в пакете самоидентификации;

Page_select (3 бита) — выбор страницы: 0 — страница регистров состояния порта, 1 — страница идентификатора производителя, 2–7 — резерв;

Port_select (4 бита) — выбор порта.

Страница состояния порта 1394a (рис. 23.10) содержит следующие поля:

AStat, BStat — состояние линий TPA, TPB: 11 — Z, 01 — «1», 10 — «0», 00 — недопустимо;

Child — признак дочернего порта: 0 — p$порт, 1 — c$порт;

Con (Connected) — состояние порта: 0 — не подключен, 1 — подключен;

Bias — обнаружение смещения на линии TPB (признак подключения устрой$ ства);

Dis (Disabled) — порт запрещен;

Neg_Spd (Negotiated Speed) — скорость порта, согласованная с партнером;

Рис. 23.9. Карта регистров PHY 1394a/b

Int_Enable — разрешение прерывания (установки бита Port_evnt) по собы$ тию подключения, смены состояния смещения, запрету и отказу порта;

Fault — обнаружение ошибки во время операции приостановки (suspend) и возобновления (resume), сбрасывается при выходе из режима приостановки, возобновлении нормальной сигнализации и при записи «1» в этот бит.

Рис. 23.10. Страница состояния порта PHY 1394a/b

В 1394b в странице состояния порта появились новые поля:

Receive_OK — прием в норме: в DS$режиме — обнаружено установившееся (без дребезга) значение смещения, в бета$режиме — обнаружен устойчивый сигнал;

Sb_flt (Standby_fault) — обнаружение ошибки в состоянии standby, сбрасы$ вается при записи «1» в этот бит и по соответствующей команде удаленного уп$ равления;

B_m_o (Beta_mode_only_port) — порт не поддерживает DS$режим;

Disable_scrambler — запрет скремблирования данных (служебные посылки — запросы, состояния, маркеры — скремблируются всегда). Применяется для от$ ладочных целей, в нормальной работе бит обнулен;

Cable_speed — максимальная скорость, на которой может работать соединитель$ ный кабель. Если для кабеля скорость определить невозможно, то в этом поле устанавливается то же, что и в Max_port_speed;

Max_port_speed — максимальная скорость, разрешенная для порта; 000 —S100, 001 — S200, 010 —S400, 011 — S800, 100 — S1600, 101 — S3200, 110 — резерв, 111 — порт может работать только в DS$режиме. Поле допускает запись (в пределах физических возможностей порта);

LPP (Local_plug_present) — к порту подключена вилка кабеля (на другом конце его может и не быть ничего). Если нет возможности определить это состояние, то бит всегда единичный;

DC_con (DC_connected) — обнаружено подключение партнера сигнализацией постоянным током;

Beta_mode — порт работает в бета$режиме;

Con_unrl (Connection_unreliable) — в бета$режиме не удалось согласование скоростей или потеряна синхронизация, сбрасывается записью«1»;

Port_error — счетчик принятых неверных кодовых слов (инкрементируется до 255, обнуляется при чтении);

Hard_dis (Hard_disable) — аппаратный запрет порта;

In_standby — признак состояния Standby;

Loop_dis (Loop_disable) — порт отключен для предотвращения петли.

В странице идентификатора производителя (рис. 23.11) определены следующие поля:

Compliance_level — уровень совместимости: 0 — не определено, 1 — IEEE 1394a, 2 — IEEE 1394b, остальные значения зарезервированы;

Vendor_ID — идентификатор разработчика;

Product_ID — идентификатор продукта.

Рис. 23.11. Страница идентификатора производителя

Пакеты PHY

Физический уровень сам является источником и конечным получателем специ$ альных пакетов, используемых для ряда целей:

самоидентификации узлов шины;

физического конфигурирования узлов;

удаленного управления узлами;

тестирования портов на образование петель в топологии (1394b).

Пакеты PHY$уровня по формату отличаются от пакетов транзакций и потоков: PHY$пакеты имеют длину 64 бита, первые 32 несут информацию, а в следующих 32 битах содержится инверсное значение информационных бит. Такой способ кон$ троля позволяет отличить PHY$пакет от изохронного пакета с нулевой длиной данных: CRC$контроль для пакета PHY позволит сформировать сигнал об ошиб$ ке, что в совокупностью с длиной в 64 бита и является признаком PHY$пакета. Несоответствие контрольных бит информационным заставляет получателя игно$ рировать пришедший пакет. Адресация PHY$пакетов тоже иная — здесь исполь$ зуется только 5$битный идентификатор узла (PHY$пакеты за пределы шины не выходят). Назначение PHY$пакета определяется по первым двум битам.

Форматы пакетов самоидентификации приведены на рис. 23.12. В 1394–1995 до$ пускалось до четырех пакетов (0, 1, 2 и 3), что позволяло описывать свойства до 27 портов одного узла. В 1394a сократили число портов до 16, в результате оста$ лись только пакеты 0, 1 и 2. Назначение полей пакетов самоидентификации при$ ведено ниже:

phy_ID — идентификатор узла;

L (Link Active) — признак активности LINK$уровня;

gap_cnt — счетчик для определения зазоров арбитража;

sp (PHY Speed) — скорость, поддерживаемая PHY$уровнем данного узла (мо$ жет быть и выше, чем поддерживает уровень LINK): 00 — S100, 01 — S200, 10 — S400, 11 — скорость определяется по регистру PHY;

brdg (bridge) — поле зарезервировано для IEEE 1394.1 (мосты между шинами). В 1394 на этом месте было поле del (PHY Delay) — максимальная задержка повторителя: 00 — ≤ 144 нс, остальные значения зарезервированы;

c (contender) — претендент на роль диспетчера;

pwr (Power Class) — отношение к питанию (см. главу 21);

p0p6 (Port status, 2 бита на порт) — состояние порта: 11 — активен (или в со$ стоянии Standby), подключен к c$узлу, 10 — активен (или в состоянии Standby), подключен к p$узлу, 01 — неактивен (запрещен, не подключен, приостановлен), 00 — нет порта;

i (Initiated reset) — признак того, что текущий сброс на шине вызвал этот узел;

m (More packets) — признак наличия последующих пакетов самоидентификации;

r — зарезервированные поля (на рисунке заштрихованы).

Форматы управляющих пакетов физического уровня приведены на рис. 23.13.

Пакеты физического конфигурирования являются широковещательными, их при$ нимают все узлы шины. Пакеты используются двояко:

для выборов нового корня (R = 1, T = 0) пакет посылается с указанием в поле root__ID идентификатора узла, которому надлежит стать корнем после гряду$

Рис. 23.12. Пакеты самоидентификации: a — пакет 0; б — пакет 1; в — пакет 2

щего сброса. Этот узел должен установить бит RHB (задержка при идентифика$ ции дерева), остальные узлы — его сбросить;

для оптимизации зазоров арбитража (R = 0, T = 1) пакет посылается с указанием phy_ID корневого узла. В пакете указывается значение gap_cnt, рассчитанное для текущей топологии.

Длительность зазора арбитража и зазора сброса арбитража определяется через зна$ чение gap_cnt по формулам:

TSubaction_gap=(29+16×gap_cnt)/98,304 (мкс), диапазон значений 0,3–10,6 мкс; TArb_reset_gap=(51+32×gap_cnt)/98,304 (мкс), диапазон значений 0,5–21 мкс.

По сбросу, связанному с изменением топологии шины (и по включению питания), принимается максимальное значение gap_cnt=63. В зависимости от топологии шины диспетчер шины может вычислить минимально допустимое значение gap_ cnt и сообщить его всем узлам. Это новое значение будет действовать до следую$ щего изменения топологии (PHY способен определить, связан ли сброс с подключе$ нием/отключением устройства; если не связан — значение gap_cnt сохраня$ ется).

Рис. 23.13. Управляющие пакеты физического уровня: a — пакет конфигурирования;

б — пакет Link_On

Пакет Link_On является директивой включения питания LINK$уровня (и выше$ стоящих) узлу, адресованному полем phy_ID.

Расширенные физические пакеты были введены в 1394a для удаленного доступа к PHY$регистрам, посылки пробного пакета и пакета возобновления:

пробный пакет (Ping, рис. 23.14, а) заставляет узел с идентификатором phy_ID послать пакет(ы) самоидентификации. Диспетчер шины посылает эти пакеты всем узлам шины и измеряет время отклика, что позволяет ему рассчитать до$ пустимое (минимальное) значение зазоров арбитража;

пакет удаленного доступа (Remote Access Packet, рис. 23.14, б) позволяет про$ читать PHY$регистр удаленного узла. Пакет удаленного ответа (Remote Access Reply, рис. 23.14, в) возвращает считанные данные;

пакет удаленной команды (Remote Command Packet, рис. 23.14, г) позволяет подать команду узлу. В ответ на него узел через короткий интервал ack_gap посылает пакет подтверждения выполнения, в котором передается и текущее состояние (Remote Confirmation Packet, рис. 23.14, д);

пакет возобновления (Resume Packet, рис. 23.14, е) предназначен для иниции$ рования возобновления работы всех приостановленных портов адресованного устройства или всех устройств (может передаваться с широковещательным ад$ ресом 3Fh). Этот пакет не предполагает подтверждений.

Форматы расширенных физических пакетов 1394a приведены на рис. 23.14, на$ значение полей приведено ниже:

phy_ID — идентификатор узла;

type — тип команды: 0 — пробный пакет, 1 — чтение одного из базовых регист$ ров, 5 — чтение страничного регистра, 8 — удаленная команда, код команды в поле cmd, Ah — удаленное подтверждение, Fh — возобновление;

page — номер страницы;

port — номер порта;

reg — адрес регистра;

cmd — код удаленной команды: 0 — NOP (нет операции), 1 — передать уведом$ ление TX_DISABLE_NOTIFY и запретить порт, 2 — инициировать приостанов$ ку порта (Suspend Port), 4 — сбросить биты отказа порта (Fault и Standby_Fault), 5 — разрешить порт, 6 — инициировать возобновление работы порта (Resume Port); 7 — расширенная команда (код в поле e_cmnd);

e_cmnd (в 1394b) — расширенная команда: 0 — NOP (нет операции), 1 — иниции$ ровать переход в Standby для партнера; 2 — инициировать выход из Standby для партнера, 3–7 — резерв;

s(standby_fault,1394b) —состояниеодноименногобитастраницысостоянияпорта;

f (Fault) — состояние одноименного бита страницы состояния порта;

c (Connected) — состояние одноименного бита страницы состояния порта;

b (bias) — состояние одноименного бита страницы состояния порта;

d (disabled) — состояние одноименного бита страницы состояния порта;

ok — состояние команды: 1 — принята, 0 — отвергнута.

Рис. 23.14. Расширенные пакеты физического уровня: a — пробный пакет (Ping); б — пакет удаленного доступа; в — пакет удаленного ответа; г — пакет удаленной команды; д — пакет подтверждения удаленной команды; е — пакет возобновления

В IEEE 1394b для восстановления из состояния Standby используется пакет физи$ ческого конфигурирования, который передается только от «дяди» к «племянни$ ку» (рис. 23.15, а). При этом назначение полей становится следующим:

phy_ID — идентификатор узла (возможно, изменившийся);

R = 1 (игнорируется);

бит T содержит копию переменной gap_count_reset_disable «дядиного» узла. Переменная gap_count_reset_disable — запрет сброса счетчика зазора в ис$

ходное значение, устанавливается по приему пакета физического конфигури$ рования, задающего длительность зазора;

gap_cnt — новое значение зазора;

MLP — восстанавливаемое значение max_Legacy_path_speed;

L — признак наличия корня в локальном B$облаке;

B (B_bus) — признак отсутствия старых узлов на шине;

Q — копия бита R из R0 передающего узла;

P — копия бита PS из R0 передающего узла;

A — текущая асинхронная фаза: 1 — нечетная, 0 — четная;

N — признак сбросов шины, происшедших с момента перехода в состояние

Standby.

Пакет тестирования на петли (Loop Test Packet, рис. 23.15, б), введенный в 1394b, содержит следующие поля:

m (mode) — режим: 0 — тест, 1 — идет процесс подключения;

G (Generation) — номер генерации, чередующиеся 0 и 1 указывают на измене$ ние значения test_value

test_value — значение, используемое для сравнения переданного и принятого пакетов.

Рис. 23.15. Новые пакеты физического уровня 1394b: a — пакет восстановления из состояния Standby; б — пакет тестирования на петли

Применение шины IEEE 1394

Шина IEEE 1394 широко применяется в устройствах различных классов, как свя$ занных с компьютерами и являющихся их периферией, так и работающих без под$ ключения к компьютерам. Принципиальное преимущество шины 1394 — ее иде$ ология равноранговых взаимоотношений узлов и отсутствие необходимости в централизованном контроллере. Широкий круг применений и разные подходы к идеологии построения систем с использованием последовательной шины поро$ дили (и продолжают порождать) множество стандартов и спецификаций, часть из которых упоминается и бегло рассматривается в данной главе.

IEEE 1394 в компьютерах

Шина IEEE 1394 (FireWire) является «родным» интерфейсом компьютеров Ma$ cintosh фирмы Apple. В PC$совместимых ПК поддержка IEEE 1394 была провоз$ глашена в спецификации PC’99 (Personal Computer Design Guidelines 1999, http:// www.microsoft.com/hwdev/desguid.htm). В современных версиях ОС для PC$совме$ стимых компьютеров поддерживаются спецификации OHCI, SBP$2, IEC61883 и другие.

Порты шины IEEE 1394 выводятся на внешние разъемы системного блока, что позволяет подключать внешние устройства с помощью кабелей. Для подключе$ ния съемных устройств с интерфейсом IEEE 1394 (и USB 2.0), устанавливаемых пользователем в отсеки корпуса ПК, имеются отдельные спецификации (http:// www.device bay.org/):

Device Bay — для съемных периферийных устройств, устанавливаемых в 5” или 3,5” отсеки системного блока;

CardBay — для съемных периферийных устройств, устанавливаемых слоты конструктива PC Card блокнотных ПК. Возможна совместимость с CardBus.

В IBM PC$совместимых ПК контроллеры IEEE 1394 чаще всего встречаются в виде карт расширения, но они уже встраиваются и в некоторые модели систем$

ных плат. Современные блокнотные ПК, как правило, имеют встроенный контрол$ лер 1394.

Контроллер IEEE 1394 для PC, как правило, является устройством PCI, посколь$ ку только шина PCI (и ее современные «родственники») способна обеспечить про$ изводительность обмена периферийного устройства с памятью, достойную шины FireWire. Для контроллера IEEE 1394 существует стандартная спецификация OHCI.

OHCI (Open Host Controller Interface) — интерфейс «открытого» хост$контролле$ ра 1394, определяющий программную модель адаптера FireWire для PC$совме$ стимых компьютеров с использованием прямого доступа к памяти. Версия 1.0 опре$ деляет базовый интерфейс, 1.1 — его уточнения и стандартный механизм уп$ равления энергопотреблением (ftp://ftp.austin.ibm.com/pub/chrptech/1394ohci). Подробно интерфейс описан в главе 25.

SBP 2 (Serial Bus Protocol$2) — транспортный протокол асинхронного обмена данными и командами и изохронной доставкой данных, широко используемый Microsoft и Apple. Протокол использует механизм прямого доступа к памяти и поз$ воляет уменьшить необходимое число прерываний центрального процессора. Часть области системного ОЗУ ПК отображается на адресное пространство узла 1394. В нем формируется связанный список команд и указателей на буферы данных. Ад$ рес этого списка передается устройству, и оно исполняет требуемые команды и обмены данными, самостоятельно обращаясь к памяти ПК транзакциями шины IEEE 1394. Спецификация SBP$2 не задает конкретных форматов команд — они специфичны для устройств разных классов. Черновик стандарта можно найти на ftp://ftp.symbios.com/pub/standards/io/x3t10/drafts/sbp2. Подробно протокол опи$ сан в главе 26.

Управление бюджетом питания для мобильных компьютеров описано в Intel Mobile Power Guidelines 2000 (http://developer.intel.com/design/mobile/Intelpower/int_mpg. htm).

Механизмы автоконфигурирования и загрузки драйверов и приложений для уст$ ройств IEEE 1394 определены в 1394 Plug & Play Specification от Microsoft (http:// www.microsoft.com/hwdev/respec/pnpspecs.htm).

Использование IEEE 1394 для управления аудио и видеоустройствами регламен$ тируется стандартом IEC 61883 (см. далее).

IEEE 1394 в локальной сети

Шина IEEE 1394 может быть основой небольших (домашних) локальных сетей с естественной поддержкой передачи изохронного трафика для аудио$ и видеотех$ ники. На физический и канальный уровень и промежуточные протоколы для до$ машних сетей имеется спецификация VESA «Video Electronics Standards Asso$ ciation Home Network».