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

Шина IEEE 1394 — FireWire

Передача данных по шине IEEE 1394

Организация изохронных соединений

Для установления логических связей между источниками и приемниками изохронных потоков служат регистры управления входными и выходными штекерами — PCR (Plug Control Register), описанные ниже. Штекер (Plug) в 1394 — это метафора разъема, по которому передавался бы аудио- или видеосигнал в аналоговой системе. В 1394 штекеры, которыми соединяются между собой источники и приемники изохронных данных, отображаются регистрами PCR. Эти регистры используются для организации двухточечных и широковещательных соединений.

Для изохронных передач могут быть установлены соединения одного из трех основных типов:

  • точка-точка (point-to-point) — соединение, явно видимое в PCR-регистрах участников: один из регистров OUTPUT_PLUG передающего узла и один из регистров INPUT_PLUG принимающего узла содержат одинаковый номер канала channel и у обоих ненулевые значения поля point_to_point;
  • широковещательная передача (broadcast out), ведущаяся без каких-либо признаков «слушателей». В регистре OUTPUT_PLUG передающего узла устанавливается бит b — признак широковещания и указывается номер канала channel;
  • широковещательный прием (broadcast in), ведущийся без индикации присутствия передатчика. В регистре INPUT_PLUG передающего узла устанавливается бит b — признак широковещания и указывается номер канала channel.

Для каждого штекера может быть установлено несколько соединений точка-точка (или ни одного); широковещательное соединение может быть только одно (или ни одного). Эти типы соединений могут независимо сосуществовать на одном штекере. Установление нового двухточечного соединения увеличивает значение поля point_to_point, разрыв соединения — уменьшает (в пределе до нуля). Глава 18. Передача данных по шине IEEE 1394 Номер канала при установлении широковещательной передачи для штекера, не имеющего двухточечного соединения, определяется номером штекера и базовым адресом для данного узла (полем broadcast_base регистра OUTPUT_MASTER_PLUG).

Если broadcast_base ≠ 63, то номер канала будет суммой (по модулю 64) базового адреса и номера штекера, иначе устанавливается номер канала 63.

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

  • двухточечным соединением, установленным в каждом из них. Это соединение может разорвать только тот, кто его устанавливал;
  • установлением широковещательной передачи в одном узле и широковещательного приема в другом. Это соединение может разорвать любой из участников.

Регистры управления штекерами (PCR)

Регистры управления штекерами (PCR) располагаются в адресном пространстве узлов, причастных к изохронным передачам. Они занимают место в начале пространства, отведенного под блоки узла. Регистры PCR допускают только операции чтения и блокированные операции (чтение с условной модификацией). Операции записи в эти регистры отвергаются. В состав регистров PCR входят следующие:

  • общий регистр выходных штекеров OUTPUT_MASTER_PLUG (0900h, рис. а) определяет общие характеристики узла как изохронного передатчика. Поле output_plugs определяет количество выходных штекеров (0–31). Поле spd задает максимальную скорость передачи по любому из штекеров (0 — S100, 1 — S200, 2 — S400, 3 — S800). Поле broadcast_base задает базовый номер широковещательного канала. Поля persistent_ext, nonpersistent_ext и r зарезервированы. Этот регистр должен быть у узлов, поддерживающик как изохронную передачу, так и прием;
  • регистры выходных штекеров OUTPUT_PLUG (0904–097Ch, рис. б) присутствуют только у узлов, способных вести изохронную передачу. Присутствующие регистры (их число определяется регистра OUTPUT_MASTER_PLUG) располагаются по смежным адресам. Каждый из этих регистров описывает широковещательную или двухточечную передачу потока, исходящего от узла через соответствующий штекер. Бит o (online) указывает на возможность конфигурирования и использования данного штекера для передачи (o=0 — передача невозможна). Поле channel определяет номер канала, фигурирующий в качестве адреса исходящих изохронных пакетов. Бит b (broadcast) указывает на наличие широковещательного соединения для данного штекера. Поле point_to_point определяет число двухточечных соединений, установленных для данного штекера. Поле spd задает скорость передачи пакетов (0 — S100, 1 — S200, 2 — S400, 3 — S800). Поле payload задает максимальный размер поля данных изохронного пакета в квадлетах (0 соответствует 1024 квадлетам). Поле overhead позволяет более точно вычислить запрашиваемое значение полосы пропускания bw, запрашиваемое для данного канала (значение, вычитаемое из значения регистра BANDWIDTH_AVAILABLE):

bw = overhead × 32 + (payload+3)×24–spd (при overhead ≠ 0);
Если overhead = 0, то запрашиваемая полоса определяется по формуле
bw = 512 + (payload + 3) × 24–spd.

  • Общий регистр входных штекеров INPUT_MASTER_PLUG (0980h, рис. в) определяет количество входных штекеров (input_plugs в диапазоне 0–31) и максимальную поддерживаемую скорость (по любому из штекеров). Поля persistent_ext, nonpersistent_ext и r зарезервированы. Этот регистр должен быть у узлов, поддерживающих как изохронную передачу, так и прием;
  • регистры входных штекеров INPUT_PLUG (0984–09FCh, рис. г) присутствуют только у узлов, способных вести изохронный прием. Присутствующие регистры (их число определяется регистром INPUT_MASTER_PLUG) располагаются по смежным адресам. Каждый из этих регистров описывает широковещательное или двухточечное соединение для соответствующего штекера. Бит o (online) указывает на возможность конфигурирования и использования данного штекера для приема (o = 0 — прием невозможен). Поле channel определяет номер принимаемого канала. Бит b (broadcast) указывает на наличие широковещательного соединения для данного штекера. Поле point_to_point определяет число двухточечных соединений, установленных для данного штекера.