Разработка дизайна приглашений на свадьбу weddindpost. Газобетонные блоки поритеп в рязани.
Для установления логических связей между источниками и приемниками изохронных потоков служат регистры управления входными и выходными штекерами — PCR (Plug Control Register), описанные ниже. Штекер (Plug) в 1394 — это метафора разъема, по которому передавался бы аудио- или видеосигнал в аналоговой системе. В 1394 штекеры, которыми соединяются между собой источники и приемники изохронных данных, отображаются регистрами PCR. Эти регистры используются для организации двухточечных и широковещательных соединений.
Для изохронных передач могут быть установлены соединения одного из трех основных типов:
Для каждого штекера может быть установлено несколько соединений точка-точка (или ни одного); широковещательное соединение может быть только одно (или ни одного). Эти типы соединений могут независимо сосуществовать на одном штекере. Установление нового двухточечного соединения увеличивает значение поля point_to_point, разрыв соединения — уменьшает (в пределе до нуля). Глава 18. Передача данных по шине IEEE 1394 Номер канала при установлении широковещательной передачи для штекера, не имеющего двухточечного соединения, определяется номером штекера и базовым адресом для данного узла (полем broadcast_base регистра OUTPUT_MASTER_PLUG).
Если broadcast_base ≠ 63, то номер канала будет суммой (по модулю 64) базового адреса и номера штекера, иначе устанавливается номер канала 63.
Приемник и передатчик изохронных данных могут соединяться двояко, различия касаются прав на разрыв соединения:
Физический интерфейс для использования в кросс-шине имеет ряд особенностей, отличающих его от кабельного варианта. Эти особенности касаются только PHY-уровня; на работе LINK-уровня и вышестоящих они не сказываются. Интерфейс отличается следующими моментами.
Вместо двух дифференциальных пар (TPA и TPB), соединяющих порты узлов попарно, используются два сигнальных провода STRB и DATA, к которым подключены все соединяемые порты 1394 на шасси. Уровни сигналов на этих линиях стандартом не оговариваются. Для работы шины существенно лишь, чтобы в случае столкновения передач логического «0» и «1» состояние линии воспринималось бы всеми узлами как «1». То есть шина должна обеспечивать логическую функцию «Проводное ИЛИ». В случае ТТЛ-интерфейса шины логической единице соответствует низкий уровень напряжения и передатчиками являются элементы с открытым коллектором. Приемопередатчики узлов должны быть способными одновременно и передавать, и принимать сигнал.
Здесь также используется DS-кодирование, но с более низкими скоростями: формальной скорости S100 соответствует скорость около 50 Мбит/с, S200 — 100 Мбит/с.
Механизм арбитража для такой физической шины изменен. Для получения доступа к шине устройство должно послать 10-битную последовательность арбитража. Последовательность арбитража передается с использованием DS-кодирования, причем всегда на низкой скорости (49,152 Мбит/с). Последовательность начинается с 4-битного кода приоритета, за которым следует 6-битный арбитражный номер узла (его PHY_ID). Посылая эту последовательность, узел следит за состоянием линии (принимает эту последовательность). Как только узел видит, что очередной принимаемый бит отличается от передаваемого, он понимает, что арбитраж в данной попытке проигран. Последовательность арбитража узел имеет право посылать, только дождавшись покоя шины. При этом последовательность одновременно могут начать посылать несколько узлов. Выиграет арбитраж тот узел, который посылает последовательность с самым большим значением кода приоритета, а из узлов с одинаковым приоритетом — тот, у которого самый большой номер. Исходя из этого код приоритета 0000 используется для запроса справедливого арбитража, код 1111 — для запроса передачи пакета мастером циклов.
Межпакетные зазоры в кросс-шине значительно сокращены; здесь они определяются в арбитражных тактах (частоты 49,152 МГц):
Сигнал сброса по кросс-шине не передается. Подключение/отключение узлов на ходу допускается, но механизм автоконфигурирований (самоидентификации узлов) не используется — физические идентификаторы узлам назначаются какимилибо сторонними способами.
Кросс-шина 1394 используется как дополнительная шина в составе параллельных шин VME64, FutureBus, GTLP. Здесь ее роль является вспомогательной (как SMBus в PCI). Несмотря на низкую (по отношению к кабельному варианту) скорость, последовательная шина остается высокопроизводительным каналом связи, поддерживающим все передачи 1394.
Ряд запросов к памяти и регистрам узла отрабатывается на аппаратном уровне OHC, без привлечения программного обеспечения хоста. Отработкой этих запросов занимается блок физических запросов, в котором имеется контроллер DMA принимающий с шины запросы на транзакции, и контроллер DMA, посылающий на них ответы. Запросы в зависимости от смещения, указанного в адресе назначения, отрабатываются по разному.
Если смещение попадает в область нижних адресов узла, то запрос направляется к памяти хоста. При этом смещение трактуется как физический адрес памяти в пространстве хоста. В этой области физически (обменом с памятью по каналу DMA) отрабатываются запросы чтения, записи и блокированных транзакций с нулевым кодом расширенной команды, прошедшие фильтр по идентификатору источника (см. выше). Остальные запросы будут переданы в контекст AR DMA Request.
Запросы блокированных транзакций compare_swap и чтения квадлета по адресам автономных регистров диспетчера изохронных ресурсов направляются к этим регистрам. На другие запросы по этим адресам OHC отвечает квитанцией ошибки типа запроса (ack_type_error). К адресам автономных регистров относятся следующие:
Запросы чтения квадлета по специальным адресам памяти конфигурации направляются к регистрам OHC. На другие запросы по этим адресам, а также при некорректности образа памяти OHC отвечает квитанцией ошибки типа запроса ack_type_error. К специальным адресам памяти конфигурации относятся следующие:
Запросы чтения памяти конфигурации по адресам FFFFF0000414–FFFFF00007FFh направляются к памяти хоста. Память конфигурации отображается на 1-килобайтный блок системной памяти в соответствии со значением регистра ConfigROMmap. При некорректности образа памяти (в регистре HCControl бит BIBimageValid = 0) OHC на эти запросы отвечает квитанцией ошибки ack_type_error.
Если принятый пакет запроса содержит ошибку CRC поля данных или имеет неправильную длину, контроллер ответит на него квитанцией ack_busy_* (вместо * подставляется буква A, B или X в соответствии с используемым однофазным или двухфазным протоколом). Это вынудит инициатора повторить запрос.
Генерируемые ответы на аппаратно-обрабатываемые запросы содержат метку транзакции, соответствующую запросу, и адрес назначения, соответствующий адресу источника запроса. Если на ответ контроллер получает квитанцию ack_busy, то число повторов ограничивается полем MaxPhysRespRetries регистра ATRetries.
Запросы записи могут выполняться как отправленные записи (Posted Writes) — подтверждение на них посылается сразу, не дожидаясь фактической записи. Если выполнение фактической записи не удается, то в регистре IntEvent устанавливается бит PostedWriteErr, а 48-битное смещение из адреса неудавшегося шинного запроса фиксируется в регистрах PostedWriteAddressLo, PostedWriteAddressHi (038h, 03Ch).
Запросы прерываний при нормальном выполнении аппаратно-обрабатываемых запросов не вырабатываются; прерыванием сигнализируется только ошибка при выполнении отправленной записи и невозможность доставки ответа на блокированные транзакции.
После сброса на шине все аппаратно-обрабатываемые запросы, на которые OHC должен был ответить, аннулируются. После сброса OHC автоматически начинает отрабатывать только запросы к регистрам диспетчера изохронных ресурсов (в CSR), остальные запросы будут отрабатываться только после инициализации фильтров.
Регистры управления штекерами (PCR) располагаются в адресном пространстве узлов, причастных к изохронным передачам. Они занимают место в начале пространства, отведенного под блоки узла. Регистры PCR допускают только операции чтения и блокированные операции (чтение с условной модификацией). Операции записи в эти регистры отвергаются. В состав регистров PCR входят следующие:
bw = overhead × 32 + (payload+3)×24–spd (при overhead ≠ 0);
Если overhead = 0, то запрашиваемая полоса определяется по формуле
bw = 512 + (payload + 3) × 24–spd.
Соединение более двух узлов в шину IEEE 1394 возможно только при использовании многопортовых узлов. Многопортовость реализуется в PHY-уровне узла, который для этого должен иметь в своем составе несколько интерфейсных портов и повторитель. Повторитель (Repeater) служит для передачи пакетов между портами и кодером-декодером своего узла:
Повторитель узла выполняет ресинхронизацию данных по своему тактовому генератору. Поскольку тактовая частота узлов не может совпадать абсолютно точно, ресинхронизация требует применения эластичного буфера (с FIFO-организацией). Принимаемая битовая последовательность помещается в буфер на частоте входного сигнала. Биты на передачу начинают выбираться из FIFO-буфера после того, как там наберется некоторое начальное количество бит. Это вводит неизбежную задержку трансляции данных повторителем. В процессе трансляции число бит в FIFO может колебаться: если частота вывода (определяется частотой данного узла) чуть ниже частоты принятого сигнала, то в буфере биты будут накапливаться. Если частота вывода выше, то буфер будет опустошаться. Переопустошение буфера, естественно, недопустимо — оно приведет к ошибке данных. Начальный порог заполнения выбирается исходя из максимально допустимого расхождения частот и максимальной длины передаваемого пакета.