Шина IEEE 1394 — FireWire

Интерфейс в бета-режиме IEEE 1394b

Интерфейс бета-режима построен с учетом возможности использования различных сред передачи сигналов по двум встречным однонаправленным линиям. Здесь исключена сложная дифференциально-линейная сигнализация с распознаванием различных уровней смещения и анализом состояния сигналов арбитража, являющихся результатом одновременной работы передатчиков соединенных устройств на одну и ту же сигнальную пару. Вся информация в бета-режиме передается с помощью 10-битных символов, передаваемых последовательно простым кодированием по методу NRZ. Чтобы избежать электромагнитных помех от шины, сосредоточенных в узких полосах спектра при передаче монотонных данных или служебных сигналов, передаваемые потоки скремблируются. Скремблированные данные проходят через кодер 8B/10B, который из байтов данных делает 10-битные символы. Это избыточное кодирование позволяет сформировать битовый поток, в котором ограничена длина повторяющихся битов (не более пяти нулей или единиц подряд) и среднее число нулей совпадает со средним числом единиц. Такой поток удобно передавать по различным средам передачи (отсутствует постоянная составляющая) и декодировать, синхронизируясь по перепадам сигнала, встречающимся не реже чем через 5 битовых интервалов. При приеме битовая последовательность подвергается обратным преобразованиям. Аналогичное кодирование-декодирование применяется в Ethernet, FDDI и других коммуникационных технологиях.

В структуре PHY узла 1394b появился сменный нижний уровень PMD (Physical Media Dependent), соответствующий физической среде передачи. Для коротких медных линий (STP) это дифференциальные приемопередатчики, для длинных (UTP) они содержат и разделительные трансформаторы. Для оптоволокна это оптические трансиверы с лазерным или светодиодным излучателем. «Двуязычный» порт должен иметь и традиционный набор дифференциальных и линейных приемопередатчиков, работающих только на традиционный кабель.

В бета-режиме в линию передаются символы, несущие полезную и служебную информацию:

  • байты данных — заголовки и тела передаваемых пакетов;
  • байты запросов, которые могут содержать:
       ---асинхронные и изохронные запросы BOSS-арбитража, упакованные в один байт: 3 бита на код асинхронного запроса (NONE_ODD, NONE_EVEN, CURRENT, NEXT_ODD, NEXT_EVEN, CYCLE_START_REQ, BORDER), 3 бита на код изохронного запроса (ISOCH_NONE, ISOCH_EVEN, ISOCH_ODD, ISOCH_CURRENT) и два бита нулевые). Асинхронные и изохронные запросы независимы друг от друга;
       ---запрос и фазу традиционного арбитража (LEGACY_REQUEST, LEGACY_PHASE, номер фазы кодируется двумя битами);
       ---конфигурационные запросы: TRAINING, DISABLE_NOTIFY, CHILD_NOTIFY-IDENT_DONE-PARENT_HANDSHAKE, OPERATION, STANDBY, SUSPEND, PARENT_NOTIFY.
  • Управляющие маркеры (4-битные коды): BUS_RESET, CYCLE_START_EVEN, CYCLE_START_ODD, ASYNC_EVEN, ASYNC_ODD, ATTACH_REQUEST-ARB_CONTEXT, DATA_PREFIX, DATA_END, DATA_NULL, GRANT, GRANT_ISOCH, SPEEDa, SPEEDb, SPEEDc.

Байты данных и запросов скремблируются и кодируются в 10-битные символы единообразно, их можно различать только по контексту. Управляющие маркеры кодируются так, что они в 10-битных символах явно отличимы от данных и запросов. Избыточное кодирование является помехозащищенным — недопустимые комбинации считаются ошибочными. Для обеспечения побайтной синхронизации используются специальные символы, не совпадающие с символами, представляющими байты передаваемой информации.

Традиционные порты с DS-сигнализацией могут передавать и принимать пакеты на любой из доступных им скоростей, поскольку битовая синхронизация автоматически обеспечивается функцией XOR от состояния данных и строба. В бетарежиме передача и прием возможны только на одной скорости, согласованной портами-партнерами. На эту скорость настраивается система фазовой автоподстройки частоты (PLL) приемника. При этом эффективная скорость передачи информации может совпадать с согласованной скоростью порта или же составлять от нее 1/2, 1/4, 1/8, …, 1/32 части. Последний случай относятся к порту, работающему на S3200 и передающему пакет на скорости S100.

Пакеты могут передаваться как в традиционном (Legacy) формате, так и в бетаформате. Пакеты бета-формата передаются только между бета-узлами, в традиционные фрагменты гибридной шины они не транслируются. Передачи на скоростях S800 и выше возможны только в бета-формате. Общая структура формата передачи приведена на рисунке ниже. Для сохранения возможности обмена с узлами, поддерживающими различные скорости и форматы, применяются специальные меры:

  • управляющие маркеры размножаются — передаются столько раз, во сколько эффективная скорость меньше скорости работы порта;
  • вводится префикс пакета, в котором передается код скорости и определяется формат пакета;
  • если эффективная скорость ниже скорости порта, между символами содержимого пакета вводятся символы-заполнители.

Префикс пакета начинается с кода скорости, за которым следует один или несколько символов-маркеров начала данных DATA_PREFIX. Код скорости определяет относительную скорость передачи (отношение эффективной и согласованной скорости) и формат. Отсутствие кода скорости означает передачу традиционного пакета на скорости S100. Кодирование скорости и формата приведено в таблице ниже. Здесь буквой В обозначен символ SPEEDb, буквой C обозначен символ SPEEDc, Cm означает m повторов символа SPEEDc. Букве X соответствует SPEEDа для традиционного пакета и SPEEDb для бета-пакета, по этим символам и определяется формат пакета. В таблице приведено и время Ts, отводимое для сигнализации скорости.

Содержимое пакета — символы, кодирующие передаваемые байты, — «разбавляется» управляющими маркерами SPEEDc. Их количество определяется отношением скоростей: 1 для 1/2, 3 для 1/4, 7 для 1/8, 15 для 1/16 и 31 для 1/32. На рисунке изображены символы-заполнители Cz для случая, когда скорость порта в 4 раза выше эффективной скорости передачи пакета. По пути к узлу-получателю пакет может проходить через сегменты с различными согласованными скоростями, в результате количество символов-заполнителей может меняться (сокращаться при прохождении через «медленные» сегменты или увеличиваться при прохождении более скоростных). Понятно, что пройти через сегмент, для которого согласованная скорость ниже эффективной, пакет не сможет.

Признаком завершения пакета может быть любой из символов-маркеров (возможно, повторяющийся многократно) ARB_CONTEXT, DATA_END, DATA_PREFIX, DATA_NULL, GRANT, GRANT_ISOCH или LEGACY_PHASE. Традиционные пакеты могут завершаться и одним из символов DATA_END/GRANT/GRANT_ISOCH (их цепочкой), за которым следует LEGACY_PHASE (один или несколько).

Таблица. Кодирование скорости и формата передач

Скорость порта Эффективная скорость
S100 S200 S400 S800 S1600 S3200
S100 X          
S200 CX X        
S400 CCXC CX X      
S800 CCCXC4 CCXC CX B    
S1600 CCCCXC11 CCCXC4 CCXC CB B  
S3200 CCCCCXC26 CCCCXC11 CCCXC4 CCBC CB B
Ts, нс 80 40 20 10 5 2,5
Яндекс.Метрика