PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Шина IEEE 1394 — FireWire

Прием и передача пакета

Прием пакета

Прием пакета иллюстрирует рисунке. После индикации начала приема (Data_On) принимается байт скорости SPD, определяющий также и формат (см. таблицу ниже). Далее принимаются байты данных — пакет, передаваемый по шине.

 

Во время индикации начала приема по шине данных передается байт ST, сообщающий состояние шины:

  • ST[0] — Bus Reset, сброс шины;
  • ST[1] — Arbitration Reset Gap Odd, признак зазора сброса арбитража и начала нового нечетного интервала справедливости;
  • ST[2] — Arbitration Reset Gap Even, признак зазора сброса арбитража и начала нового четного интервала справедливости;
  • ST[3] — Cycle Start Odd, признак начала нечетного цикла;
  • ST[4] — Cycle Start Even, признак начала четного цикла;
  • ST[5] — Subaction Gap, признак зазора арбитража. После сброса означает завершение сброса и инициализации шины.

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

SPD[0:7] Скорость, формат
0000 0000 S100 Legacy
0000 0001 S100 Beta
0000 0100 S200 Legacy
0000 0101 S200 Beta
0000 1000 S400 Legacy
0000 1001 S400 Beta
0000 1101 S800 Beta
1111 1111 DATA_ON, признак начала приема
Остальные значения Резерв

 

Передача пакета

В ответ на запрос передачи пакета PHY, сигнализируя состояние Grant (Ctl[0:1] = 11), посылает LINK-уровню байт GT, в котором сообщает формат, скорость и тип разрешенной передачи. После этого он отдает управление интерфейсом LINK-уровню, указав состояние Grant (Ctl[0:1] = 11), а затем и прекращая управлять линиями Ctl[0:1] и D[0:7]. Теперь LINK устанавливает состояние Hold (Ctl[0:1] = 11), обозначая занятость интерфейса и шины, и начинает передавать пакет данных (состояние Transmit, Ctl[0:1] = 01). После передачи пакета LINK сигнализирует состояние MORE_INFO (Ctl[0:1] = 11), в котором по шине данных передается байт дополнительной информации AI[0:7]. В этом байте может присутствовать встроенный последующий запрос шины с указанием его формата, типа и скорости. После этого LINK указывает состояние Idle (Ctl[0:1] = 00), затем перестает управлять линиями Ctl[0:1] и D[0:7] и отдает управление PHY.

Получив право передачи пакета, LINK может послать только пакет, полностью удовлетворяющий свойствам, описанным байтом GT. Этот байт декодируется следующим образом:

  • бит GT[0] задает тип формата: 0 — произвольный, 1 — B-формат;
  • биты GT[1:3] задают тип гранта (пакета, разрешенного к передаче): 010 — изохронный, 101 — асинхронный, 110 — пакет начала цикла, 111 — немедленный (пакет квитирования), остальные значения зарезервированы;
  • биты GT[5:6] задают скорость: 00 — S100, 01 — S200, 10 — S400, 11 — S800.

Байт дополнительной информации AI[0:7]содержит следующие поля:

  • AI[0] — признак формата последующего запроса: 0 — произвольный, 1 — B-формат;
  • AI[1:3] — тип встроенного запроса: 000 — нет запроса, 001 — PH_ISOCH_REQ_ODD, 010 — PH_ISOCH_REQ_EVEN, 011 — PH_CURRENT, 100 — PH_NEXT_EVEN, 101 — PH_NEXT_ODD, 110 — PH_CYC_START_REQ, 111 — резерв;
  • AI[4] — признак последнего пакета в субакции;
  • AI[5:6] — скорость для встроенного запроса: 00 — S100, 01 — S200, 10 — S400, 11 — S800;
  • AI[7] — резерв.