Шина IEEE 1394 — FireWire

Организация потоковых передач и изохронный обмен

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

  • изохронные передачи выполняются в специально выделенном периоде цикла, право на их передачу получается с коротким зазором арбитража. Для использования изохронных передач узел должен у диспетчера изохронных ресурсов получить номер канала и выделенную полосу пропускания шины (максимальное время передачи пакета в каждом цикле). Каждый активный передающий узел в каждом цикле шины должен посылать по одному изохронному пакету для каждого из своих каналов. Если для данного канала в очередном цикле нет передаваемых данных, должен посылаться изохронный пакет с нулевой длиной поля данных. Регулярность посылок пакетов является основой поддержания синхронизации передатчика и приемников;
  • асинхронные потоковые передачи выполняются в оставшееся время цикла. Для них у диспетчера изохронных ресурсов запрашивается только номер канала. Полоса пропускания асинхронного потокового канала не нормируется.

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

Получение номера канала и выделение полосы пропускания осуществляется обращениями узла к регистрам диспетчера изохронных ресурсов CHANNEL_AVAILABLE и BANDWIDTH_AVAILABLE. Если канал и полосу получить не удалось, узел может периодически повторять запросы. Когда изохронный обмен становится ненужным узлу, он должен освободить свою полосу и номер канала, чтобы этими ресурсами смогли воспользоваться другие устройства. Обмен управляющей информацией с диспетчером производится асинхронными транзакциями.

Для выполнения изохронных обменов прикладной драйвер пользуется сервисами LINK-уровня:

  • Запрос изохронной передачи (Link Isochronous Request), в котором драйвер передает:
  1. номер канала;
  2. длину данных;
  3. данные;
  4. скорость;
  5. тег, определяющий формат данных;
  6. код синхронизации (специфичен для приложений).
  • Индикация изохронной передачи (Link Isochronous Indication), в которой драйвер получает те же данные. LINK-уровень будет давать индикацию только при приеме пакетов с требуемыми номерами каналов;
  • управление изохронным обменом (Link Isochronous Control), в котором драйвер указывает номер канала, прием которого следует начать или завершить;
  • синхронизация циклов (Link Cycle Synch) — индикация приема пакета начала цикла с сообщением текущего значения счетчика циклов и счетчика секунд. По этой информации и своим часам приложение может определить опоздание начала цикла и обеспечить свою синхронизацию с остальными участниками обмена.
Яндекс.Метрика