Шина IEEE 1394 — FireWire

Распознавание подключения-отключения устройств и состояние порта. Сигнализация арбитража

Распознавание подключения-отключения устройств и состояние порта

Каждый порт через резисторы-терминаторы (55 Ом) подает от источника смещения TpBias напряжение 1,6–2 В на линии пары A и измеряет среднее значение на линиях пары B (приемник состояния Port_Status). Если измеренное напряжение превышает 1 В, это означает, что на противоположном конце кабеля имеется подключенное устройство. Уровень напряжения ниже 0,6 В является признаком отключения устройства. Поскольку кабель соединяет линии A и B пары устройств перекрестно, оба устройства видят присутствие или отсутствие друг друга. Подключение партнера определяется сигналом Port_Status, вырабатываемым детектором состояния (линейным приемником пары B).

В 1394a введена возможность приостановки узла, которая подтверждается снятием напряжения смещения. Для узла 1394 это будет означать отключение устройства. В 1394a введена дополнительная схема обнаружения подключения/отключения: в приемопередатчик пары A введен источник маленького тока Icd (не более 76 мкА) и детектор отключения. Когда противоположный узел подключен, этот ток проходит в землю через нагрузку около 5 кОм (терминаторы на противоположном узле и заземляющий резистор), так что на входе детектора отключения напряжение не превышает 0,4 В. При отсоединении противоположного узла нагрузка снимается и напряжение на входе детектора поднимается выше 0,4 В. Эта схема обнаружения отключения включается только после согласования перехода в режим Suspend, когда снимается подача напряжения смещения. В состоянии покоя шины (Bus Idle State), когда активные порты двух узлов соединены друг с другом, на обоих парах A и B присутствует напряжение смещения (TpBias).

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

  • Disabled — работа порта запрещена, он не передает никаких сигналов (но смещение подает) и не воспринимает сигналы;
  • Suspended — порт приостановлен, при этом он не подает напряжение смещения и включает детектор отключения.

Сигнализация арбитража

Каждый порт может по своим линиям передавать сигналы Arb_A(Tx) и Arb_B(Tx) и принимать сигналы Arb_A(Rx) и Arb_B(Rx), принимающие значения 0, 1 или Z. Сигнал, передаваемый узлом-1 по линии A, приходит на соседний узел-2 по линии B; при этом он может «сталкиваться» с сигналом, передаваемым узлом-2 по линии B. Для сигнала, передаваемого по линии B, действует симметричное правило. Таким образом, принимаемый сигнал является функцией от передаваемых сигналов двух передатчиков: Arb_A1(Rx) зависит от Arb_A1(Tx) и Arb_B2(Tx), Arb_B1(Rx) зависит от Arb_A2(Tx) и Arb_B1(Tx). Если один из передатчиков находится в состоянии Z, то приемник видит сигнал от другого передатчика без изменений. Если оба передатчика передают один и тот же сигнал, то приемник его так и воспринимает.

При декодировании сигналов арбитража действуют следующее правило доминирования единицы:

  • если порт передает сигнал 0, а принимает Z (это значит, что соседний узел передает 1), то это состояние декодируется как «1»;
  • если порт передает сигнал 1, а принимает Z (это значит, что соседний узел передает 0), то это состояние тоже декодируется как «1».

Сигналы арбитража используются для сброса шины, конфигурирования и собственно арбитража. Состояние передаваемых (Arb_A(Tx), Arb_B(Tx)) и принимаемых (Arb_A(Rx), Arb_B(Rx)) сигналов в различных фазах работы шины приведено в табице. В качестве принимаемых значений здесь указаны декодированные состояния (с учетом посылаемых сигналов и правила доминирования единицы).

Таблица. Сигналы арбитража в различных фазах шиныф

Передаваемое состояние Arb_A(Tx), Arb_B(Tx) Принимаемое состояние Arb_A(Rx), Arb_B(Rx)
Сброс шины
Bus Reset [1 1] Bus Reset [1 1]
Идентификация дерева
Tx_Parent_Notify, поиск родителей [0 Z] Rx_Parent_Notify [Z 0]
Tx_Child_Notify, подтверждение родительских прав [1 Z] Rx_Parent_Handshake [0 1]
Снятие Tx_Parent_Notify [Z Z] Rx_Child_Handshake [1 Z]
Оба узла посылают Tx_Parent_Notify [0 Z] Rx_Root_Contention — состязание за роль корня [0 0]
Самоидентификация
Tx_Self_ID_Grant, предоставление права самоидентификации [Z 0] Rx_Self_ID_Grant [0 0]
Tx_Ident_Done, завершение самоидентификации [1 Z] Rx_Ident_Done [Z 1]
Нормальный арбитраж
Tx_Request, узел посылает запрос передачи через p-порт [Z 0] Rx_Request [0 Z]
Tx_Grant, узел разрешает передачу через c-порт [Z 0] Rx_Grant [0 0]
Узел снимает запрос [Z Z] Rx_Request_Cancel —узел видит снятие запроса [Z 0]
Префикс данных Tx_Data_Prefix [0 1] Rx_Data_Prefix [1 0]
Конец пакета данных Tx_Data_End [1 0] Rx_Data_End [0 1]
Tx_Disable_Notify, сигнал на запрещение порта [Z 1] Rx_Disable_Notify [1 Z]
Tx_Suspend, сигнал приостановки порта [0 0] Rx_Suspend [0 0]

 Сброс шины (Bus Reset) может быть сигнализирован в любой момент любым устройством. Сигнал сброса имеет приоритет над всеми сигналами (благодаря правилу доминирования единиц). Сигнал сброса, сгенерированный или обнаруженный узлом, распространяется на все его порты (кроме запрещенных). Длительность генерируемого сигнала сброса составляет 167 мкс, в 1394a введен и короткий сброс длительностью 1,4 мкс. По сигналу сброса узел инициализируется и переводит все свои порты в состояние покоя (Bus Idle). После этого начинается фаза идентификации дерева.

Во время фазы идентификации дерева (Tree Identification) с помощью сигналов арбитража «дети» ищут своих «родителей» и выстраивается дерево шины. Во время фазы самоидентификации (Self Identification) с помощью сигналов арбитража узлам поочередно предоставляется право передать пакет(ы) самоидентификации и сообщить о завершении передачи этих пакетов. Подробнее о процессах идентификации см. в главе 20. Во время нормальной работы сигналы арбитража используются для запроса и предоставления права на передачу пакетов.

Яндекс.Метрика