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

USB

USB

Надёжность и транзакции для разных типов передач

Передачи массивов, прерываний и управления обеспечивают надежную доставку данных. После успешного приема пакета приемник данных посылает подтверждение — пакет квитирования ACK. Если приемник данных обнаружил ошибку, пакет игнорируется и никакого ответа на него не посылается. Источник данных считает, что очередной пакет передан успешно, когда получает от приемника подтверждение ACK. Если подтверждение не приходит, то в следующей транзакции источник повторяет посылку того же пакета. Однако пакет подтверждения может быть потерян из-за помехи; чтобы в этом случае повторная посылка пакета приемником не воспринималась как следующая порция данных, пакеты данных нумеруются. Нумерация ведется по модулю 2 (1-битный номер): пакеты делятся на четные (с идентификатором DATA0) и нечетные (DATA1). Для каждой конечной точки (кроме изохронных) у хоста и в устройстве имеются биты-переключатели (Toggle Bit), их начальные состояния тем или иным способом согласуются. В транзакциях IN и OUT передаются и ожидаются пакеты данных с идентификаторами DATA0 или DATA1, соответствующими текущему состоянию этих бит. Приемник данных переключает свой бит в случае безошибочного приема данных с ожидаемым идентификатором, источник данных — по приему подтверждения. Если приемник получает безошибочный пакет с неожидаемым идентификатором, он посылает подтверждение ACK, но данные пакета игнорирует, поскольку этот пакет — повторная посылка уже принятых данных.

Транзакции для различных типов передач имеют протокольные различия, обусловленные гарантированием или не гарантированием пропускной способности, времени отклика, надежности доставки и синхронизированности ввода и вывода. В зависимости от этих характеристик в транзакциях используются те или иные из вышеописанных протокольных механизмов. Отметим, что обнаружение ошибок передачи работает во всех транзакциях, так что данные, принятые с ошибкой, всегда игнорируются. Какие именно протокольные механизмы используются в текущей транзакции, «знает» и хост-контроллер (по ранее полученному дескриптору конечной точки), и устройство USB, в котором эта конечная точка реализована.



Синхронизация при изохронной передаче

Изохронная передача данных связана с синхронизацией устройств, объединяемых в единую систему. Возьмем пример использования USB, когда к компьютеру подключен микрофон USB (источник данных) и колонки USB (приемник данных), и эти аудиоустройства связаны между собой через программный микшер (клиентское ПО). Каждый из этих компонентов может иметь собственные «понятия» о времени и синхронизации: микрофон, к примеру, может иметь частоту выборки 8 кГц и разрядность данных 1 байт (поток 64 Кбит/с), стереоколонки — 44,1 кГц и разрядность 2×2 байта (176,4 Кбит/с), а микшер может работать на частоте выборок 32 кГц. Микшер в этой системе является связующим элементом, и его источник синхронизации будем считать главным (master clock). Программный микшер обрабатывает данные пакетами, сеансы обработки выполняются регулярно с определенным периодом обслуживания (скажем, в 20 мс — частота 50 Гц). В микшере должны быть конверторы частот выборок (SRC — sample rate converter), которые из n входных выборок делают m выходных, используя интерполяцию («сочиняя» промежуточные выборки). Эти конверторы позволят микшеру принимать данные от микрофона с его частотой (в нашем случае 8000 выборок/с) и отсылать на колонки с другой (44 100 выборок/с). Естественным решением задачи обеспечения взаимодействия этих компонентов было бы установление между ними синхронного соединения, обеспечивающего передачу как потока данных, так и сигнала синхронизации. Универсальная шина USB, обеспечивающая одновременное подключения множества устройств, синхронного интерфейса устройствам не предоставляет. Синхронное соединение на USB основано на изохронных передачах. При этом приходится иметь дело со следующими частотами:

  • Fs (sample rate) — частота выборки для источников (sourсe clock) и приемников (sink clock) данных;
  • Fb (bus clock) — частота шины USB: частота кадров (1 кГц) для полной скорости и микрокадров (8 кГц) для высокой. С этой частотой все устройства USB «видят» маркеры начала микрокадров SOF;
  • частота обслуживания — частота, с которой клиентское ПО обращается к драйверам USB для передачи и приема изохронных данных.

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

  • дрейф (drift) — отклонения формально одинаковых частот от номиналов (не бывает двух абсолютно одинаковых генераторов);
  • дрожание (jitter) — колебание частот относительно номинала;
  • фазовый сдвиг, если сигналы не связаны системой фазовой автоподстройки ФАПЧ (PLL).

В цифровой системе передачи данных эти отклонения выливаются в то, что у источника или приемника может образовываться излишек или недостаток данных, колеблющийся или прогрессирующий во времени. Согласование скоростей выполняется с использованием механизма прямого объявления скорости (feed forward) или механизма обратной связи (feedback). Какой из механизмов используется, зависит от типа синхронизации, поддерживаемого изохронной конечной точкой данного устройства.

В USB по типу синхронизации источников или получателей данных с системой различают асинхронный, синхронный и адаптивный классы конечных точек, каждому из которых соответствует свой тип канала USB. Тип синхронизации задается битами [3:2] байта атрибутов в дескрипторе изохронной конечной точки:

  • 00 — нет синхронизации;
  • 01 — асинхронная точка устройства, не имеющего возможности согласования своей частоты выборок с метками SOF или иными частотами системы USB. Частота передачи данных фиксированная или программируемая. Число байт данных, принимаемых за каждый микрокадр USB, не является постоянным.
    Синхронизация для источников и приемников различается:
    -асинхронный источник данных неявно объявляет свою скорость передачи числом выборок, передаваемых им за один микрокадр, — клиентское ПО будет обрабатывать столько данных, сколько реально поступило. Примерами асинхронного устройства-источника может быть CD-плеер с синхронизацией от кварцевого генератора или приемник спутникового телевещания;
    -асинхронный приемник данных должен обеспечивать явную обратную связь для адаптивного драйвера клиентского ПО, чтобы согласовать темп выдачи потока (см. ниже). Пример приемника — дешевые колонки, работающие от внутреннего источника синхронизации;
  • 11 — синхронная точка устройства, имеющего внутренний генератор, синхронизируемый с маркерами микрокадров SOF (1 или 8 кГц). Источники и приемники за каждый микрокадр генерируют (потребляют) одинаковое количество байт данных, которое устанавливается на этапе программирования каналов. Примером синхронного источника может быть цифровой микрофон с частотой выборки, синтезируемой по маркерам SOF. Синтезатор частоты должен учитывать возможность пропадания одного-двух маркеров (из-за возможных ошибок передачи), поддерживая постоянную частоту. Эти точки используют неявную обратную связь, подстраиваясь под частоту шины. С программной точки зрения организация каналов с такими устройствами проще всего;
  • 10 — адаптивная точка устройства, имеющего возможность подстройки своей внутренней частоты под требуемый поток данных (в разумных границах):
    -адаптивный источник позволяет менять скорость под управлением приемника, обеспечивающего явную обратную связь. Примером адаптивного источника является CD-плеер со встроенным конвертором частоты;
    -адаптивный приемник определяет мгновенное значение частоты по количеству данных, принятых за некоторый интервал усреднения. Таким образом осуществляется неявное прямое объявление частоты. Пример приемника — высококачественные колонки или наушники USB.

Обратная связь, позволяющая согласовать значения частот устройств с частотой шины, может быть явной (explicit feedback) или неявной (implicit feedback). Механизм обратной связи рассмотрим на примере асинхронного приемника; для адаптивного источника механизм работает аналогично. Асинхронный приемник должен явным образом сообщать хост-контроллеру требуемую частоту передачи данных относительно частоты микрокадров Fs/Fb. Здесь предполагается, что одна выборка представляется одним байтом данных, для иного размера выборки требуется соответствующий пересчет (для устройства и его клиентского ПО), чтобы Fs/Fb представляло число байт, передаваемых за один микрокадр. Отношение Fs/Fb может оказаться не целым числом, тогда его целая часть определяет постоянный объем передач (размер поля данных) с данной конечной точкой в каждом микрокадре, а дробная часть — это накапливающийся остаток, который будет вызывать периодическое увеличение объема передач в некоторых микрокадрах. Отношение Fs/Fb в данном случае должен вычислять приемник на интервале усреднения не менее 1 с. Это отношение может меняться во времени (хотя бы из-за погрешности округления), так что хост должен периодически запрашивать у устройства отношение Fs/Fb, что и будет данными явной обратной связи (explicit feedback data).

Частота Fs задается с точностью до 1 Гц. Учитывая максимальный размер передачи в кадре (1023 байта) и частоту кадров (1 кГц), на полной скорости и для целой и для дробной части Fs/Fb достаточно по 10 бит. На высокой скорости в микрокадре может передаваться до 3072 байт — для целой части нужно 12 бит; частота микрокадров 8 кГц требует уже 13-битной дробной части. Исходя из этого, данные обратной связи представляются:

  • на FS — 3-байтным числом, биты [23:14] — целая часть, биты [13:4] — дробная, остальные — резерв (нули);
  • на HS — 4-байтным числом, биты [28:17] — целая часть, биты [16:4] — дробная, остальные — резерв (нули).

Заметим, что поток информации обратной связи всегда имеет направление, противоположное управляемому им потоку данных (на то эта связь и обратная). Данные явной обратной связи устройства берутся с конечной точки, имеющей такой же номер, что и у точки, используемой для основной передачи данных. Эта точка тоже изохронная, в ее дескрипторе установленные биты [5:4] байта атрибутов указывают на ее использование для обратной связи (у точки для передачи данных эти биты сброшены). В дескрипторе задается и интервал опроса (bInterval), с которым хост должен запрашивать данные обратной связи, чтобы своевременно отследить изменения. Это позволит хост-контроллеру постоянно корректировать число передаваемых байт за каждый микрокадр, не допуская переполнения или опустошения буфера устройства-приемника. Если с прошлого опроса изменений нет, точка может ответить на опрос пакетом данных нулевой длины.

Аналогично адаптивный источник должен воспринимать информацию обратной связи от хоста, чтобы за каждый (микро)кадр генерировать ровно столько данных, сколько требуется хост-контроллеру. Здесь тоже поток данных и поток обратной связи имеют встречные направления, так что для явной обратной связи используется конечная точка с таким же номером, что и у источника данных.

Для точек, требующих обратной связи, в некоторых случаях можно избежать выделения в устройстве специальной точки обратной связи, используя неявную обратную связь (implicit feedback). Это возможно, если в устройстве есть группа функционально связанных изохронных точек, работающих от общего генератора синхронизации, и среди них есть точка с направлением, противоположным точке, требующей обратной связи. Если требуется обратная связь для асинхронного приемника, то информация неявной обратной связи берется из скорости передачи данных синхронизированного с ним передатчика. Аналогично для адаптивного источника информация неявной обратной связи берется из скорости синхронизированного с ним приемника. Конечная точка данных, которую можно использовать как источник неявной обратной связи, в байте атрибутов. имеет значение бит [5:4] = 10. Связи по синхронизации в группе устанавливаются на основе номеров точек. Для того чтобы найти источник неявной обратной связи для какой-либо точки, ищется изохронная точка противоположного направления с таким же или меньшим номером, имеющая в байте атрибутов биты [5:4] = 10.

Шина USB позволяет устройству и хосту расставлять метки времени в непрерывном потоке изохронных передач для любой конечной точки. Для этого хост посылает устройству специальный управляющий запрос Synch Frame, в котором указывает номер кадра (ожидаемого в обозримом будущем) и номер конечной точки, к которой относится данная метка времени. Устройства и хост имеют общее представление о времени по номеру кадра, передаваемому в маркере SOF. Для HS-устройств подразумевается синхронизация по нулевому микрокадру указанного кадра. Метка времени может использоваться, например, для указания момента начала изохронной передачи (хост-контроллеру OHC в дескрипторе изохронной передачи указывается номер стартового кадра; для UHC драйвер сам размещает дескрипторы изохронных транзакций в списке кадров). Таким образом, устройство может заранее подготовиться к началу изохронного обмена.

Хост-контроллер USB имеет возможность подстройки частоты кадров. Например, в UHC имеется регистр SOF_Modify, через который ПО может изменять коэффициент деления частоты 12 МГц для получения частоты кадров 1 кГц в пределах ±0,5%. Естественно, хост-контроллер может подстроиться под частоту внутренней синхронизации только одного устройства.



Особенности сигналов в режиме HS

Высокая скорость (480 Мбит/с — всего в 2 раза медленнее, чем Gigabit Ethernet) требует тщательного согласования приемопередатчиков и линий связи. На этой скорости может работать только кабель с экранированной витой парой для сигнальных линий. Для высокой скорости аппаратура USB должна иметь дополнительные специальные приемопередатчики. К разводке проводов на печатной плате устройства от интерфейсной микросхемы USB до разъема (или подключения кабеля) предъявляют жесткие требования (максимальная длина, совпадение длин сигнальных проводников, удаленность от других сигнальных цепей, окружение «землей»).

В отличие от формирователей потенциала для режимов FS и LS передатчики HS являются источниками тока, ориентированными на наличие резисторов-терминаторов на обеих сигнальных линиях. Роль терминаторов играют резисторы Rz1 и Rz2 (см. рис. 12.2): при работе на HS дифференциальный передатчик FS/LS формирует SE0, то есть оба его выхода заземляются и эти резисторы оказываются нагрузками для линий D+ и D-. Их сопротивление (с учетом выходного импеданса передатчика) составляет 2×45 = 90 Ом, что и обеспечивает согласование с волновым сопротивлением линии (90 Ом). Устройство и хаб включают свои HS-терминаторы (и отключают Ruf) после успешного взаимного подтверждения режима HS, выполняемого в процессе сброса устройства.

Дифференциальные токовые передатчики формируют импульсы тока с номинальным значением 17,78 мА, который протекает через нагрузку 22,5 Ом (два нагрузочных резистора на обоих концах каждой сигнальной линии соединяются параллельно). При передаче сигнала J ток пропускается в линию D+, при K — в D-. Таким образом обеспечивается дифференциальный сигнал передачи около ±400 мВ.

На вход дифференциального приемника сигнал придет ослабленным; чтобы исключить влияние шумов, в схему устройства введен детектор амплитуды сигнала с порогом 100–150 мВ. Сигнал с дифференциального приемника игнорируется, пока не сработает детектор амплитуды сигнала (в спецификации USB этот прием называется receiver squelch). От срабатывания детектора амплитуды до включения дифференциального приемника может быть задержка до 4 bt, но это приведет лишь к сокращению длины принятой синхропоследовательности в начале пакета.

К статическим (уровни) и динамическим (длительности и время нарастания и спада) параметрам сигналов на HS предъявляются жесткие требования, и существуют специальные шаблоны (Eye Pattern), в которые должны укладываться сигналы. Для тестирования могут быть использованы широкополосные (не уже 1 ГГц) дифференциальные осциллографы и генераторы; выпускаются и специализированные тестеры устройств USB 2.0. Для тестирования HS-устройств (включая и хабы) в USB 2.0 определены специальные управляющие запросы, переводящие выбранный порт в тестовый режим. В стандартных запросах определены следующие тесты:

  • Test_SE0_NAK — перевод порта в HS-режим для тестирования выходного импеданса, уровня сигнала SE0 и нагрузочных характеристик;
  • Test_J — передача состояния J (подача тока в D+) для проверки уровня сигнала, выводимого на линию D+;
  • Test_K — передача состояния K (подача тока в D-) для проверки уровня сигнала, выводимого на линию D-;
  • Test_Packet — передача пакетов фиксированной структуры, позволяющая проверять динамические параметры сигнала и подключенные к нему приемники. Тестовый пакет выглядит как пакет данных DATA0, у которого в поле данных последовательно расположены 6 тестовых образцов (test pattern). Далее приводятся последовательности сигналов, передающихся на шину в этих образцах (вставка бит уже произведена):
          — Pattern 1 — 36 пар «JK»;
          — Pattern 2 — 16 повторов «JJKK»;
          — Pattern 3 — 8 повторов «JJJJKKKK» (4J и 4K);
          — Pattern 4 — 8 повторов «JJJJJJJKKKKKKK» (7J и 7K);
          — Pattern 5 — 8 повторов «JJJJJJJK» (7J и 1K);
          — Pattern 6 — 10 повторов «JKKKKKKK» (1J и 7K).
  • Test_Force_Enable — принудительный перевод нисходящих портов хаба в режим HS, даже при отключенных устройствах (для настройки детектора отключения).


Идентификация и классификация устройств

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

В дескрипторе устройства имеются 2-байтные поля, идентифицирующие устройство в целом:

  • idVendor — идентификатор производителя (VID — Vendor Id), назначаемый USB-IF;
  • idProduct и bcdDevice — идентификатор продукта (PID — Product Id) и его версии (DID — Device Id), определяются производителем.

Кроме того, здесь могут присутствовать ссылки на строковые дескрипторы, в которых содержатся текстовые названия изготовителя и устройства, а также его серийный номер. Эти текстовые описания имеют произвольную длину и формат (но кодируются в UNICODE), на эти строковые дескрипторы указывают индексы в полях iManufacturer, iProduct и iSerialNumber.

Для определения назначения, возможностей и протоколов, поддерживаемых устройством и его отдельными интерфейсами, в его дескрипторах указываются коды класса, подкласса и протокола. Коды класса, подкласса и протокола имеют непосредственное отношение к интерфейсам — по ним могут быть подобраны (операционной системой автоматически) подходящий драйвер и клиентское приложение. Эти коды содержатся в дескрипторах интерфейсов, поддерживаемых устройством. «Штатные» коды в диапазоне 01h–FEh назначает USB-IF, но только для уже стандартизованных устройств. Значение 00h означает отсутствие определения, FFh отдано для специфического назначения разработчикам и производителям устройств. Сообщение штатного кода обязывает устройство соответствовать стандартным требованиям, предъявляемым к интерфейсам с указанным протоколом для заданного класса и подкласса, в том числе и выполнять все специфические запросы и сообщать специфические дескрипторы, если таковые имеются. При этом допускается и расширение возможностей устройства. Для связывания нестандартного устройства со своим драйвером используются идентификаторы VID и PID.

Коды класса, подкласса и протокола присутствуют не только в дескрипторах интерфейсов, но и в дескрипторе устройства. Здесь нулевой код класса означает, что устройство состоит из набора независимых интерфейсов, каждому из которых может быть назначен свой код класса, подкласса и протокола. При этом и подкласс и протокол устройства тоже нулевые (то есть устройство в целом стандартно охарактеризовать нельзя). «Штатный» код класса устройства означает, что его интерфейсы не являются независимыми (агрегированные интерфейсы). При этом код подкласса (тоже от USB-IF) является дополнительным квалификатором. «Штатный» код протокола означает, что устройство поддерживает все протоколы, требуемые для устройства данного класса и подкласса. Нулевой код протокола устройства означает, что протоколы могут быть определены только для отдельных интерфейсов.

Классификация устройств USB относится не к потребительским функциям, выполняемым устройствами, а к способам коммуникаций между хостом и устройствами. Классификация позволяет обобщать характеристики интерфейсов, при этом, как правило, код протокола задает состав, тип конечных точек и правила их использования, а подкласс определяет форматы данных, передаваемых через те или иные конечные точки. Классификация позволяет сократить многообразие (разнотипность) драйверов, требуемых для различных устройств, — драйвер может абстрагироваться от конкретного устройства-функции, которое он обслуживает. Операционная система связывает имеющиеся в ее распоряжении клиентские драйверы с конкретными интерфейсами устройств, используя коды классов/подклассов и протокола, а также идентификаторы производителя, продукта и его версии.

 

Таблица. Некоторые стандартные классы и протоколы устройств

Подкласс Протокол (точки, используемые интерфейсом)
Класс 01 — аудиоустройства
01 — AUDIOCONTROL, управляемый модуль аудиообработки (регулятор, фильтр, микшер, ревербератор…)
02 — AUDIOSTREAMING, устройство-приемник или источник аудиопотока
03 — MIDISTREAMING, устройство-приемник или источник потока MIDI-сообщений
00 — протокол не определен
Класс 03 — человеко-машинный интерфейс (HID-устройства)
01 — устройства, используемые при загрузке ОС 01 — клавиатура
02 — мышь
Класс 07 — принтеры
01 — передача к принтеру данных, используя любые языки описания страниц (PCL), применяемые в принтерах с традиционными интерфейсами, и прием информации о состоянии 01 — однонаправленный (EP0, Bulk-OUT)
02 — двунаправленный (EP0, Bulk-OUT, Bulk-IN)
03 — двунаправленный IEEE 1284.4 (EP0, Bulk-OUT, Bulk-IN)
Класс 08 — устройства хранения данных (mass storage)
01 — сокращенный набор команд (RBC — Reduced Block Commands), типично для устройств на флэш-памяти, но этот набор команд могут использовать любые устройства хранения
02 — SFF8020i, MMC-2 (ATAPI), типично для CD/DVD-устройств
03 — QIC-157 (ленточные устройства)
04 — UFI, типично для НГМД
05 — SFF8070i, типично для НГМД
06 — прозрачная передача команд SCSI
00 — CBI-транспорт с прерываниями (EP0, Bulk-OUT, Bulk-IN, Interrupt-IN)
01 — CBI-транспорт без прерываний (EP0, Bulk-OUT, Bulk-IN, Interrupt-IN), только для FS
50h — BO-транспорт (Bulk-OUT, Bulk-IN, EP0)
Класс 09h — хабы
00 — деления на подклассы нет 00 — хаб USB 1.x;
01 — хаб USB 2.0 с одним транслятором транзакций;
02 — хаб USB 2.0 с множеством трансляторов транзакций
Класс 0Eh — видеоустройства
01 —VIDEOCONTROL, управляемое устройство видеообработки
02 — VIDEOSTREAMING, устройство-приемник или источник видеопотока
03 — VIDEO_INTERFACE_COLLECTION, набор связанных интерфейсов видеоустройств
00 — протокол не определен


Обнаружение и локализация неисправных устройств

Хаб обеспечивает живучесть шины USB, автоматически запрещая работу нисходящих портов, от которых исходит угроза для работоспособности шины. Неисправное устройство, подключенное к порту, может не вовремя «замолчать» (потерять активность) или, наоборот, что-то «бормотать» (babble). Эти ситуации отслеживает ближайший к устройству хаб и запрещает восходящие передачи от такого устройства не позже чем по границе микрокадра. Хаб следит за тем, чтобы восходящие пакеты не пересекали границу микрокадра. Для этого в хабе имеется счетчик, который определяет следующие моменты в микрокадрах:

  • EOF1 — после этого момента не имеет права начинаться пакет от устройства;
  • EOF2 — начиная с этой точки, хаб ждет начала пакета только с восходящего порта (ожидается SOF).

Во время восходящей трансляции пакета (пока повторитель ожидает EOP) возможны особые ситуации:

  • обнаружен признак начала пакета на другом разрешенном порте — это коллизия; реакция хаба на нее может быть двоякой. Первый вариант — «испортить» трансляцию передачей к хосту вместо тела пакета постоянного состояния K или J. Хост-контроллер поймет эту ситуацию, правда, ценой потери чужого пакета. Второй вариант — игнорировать этот признак, пока не завершится текущая трансляция пакета. При этом хост о данной проблеме не узнает;
  • признак конца пакета в текущей трансляции не обнаружен, а время в микрокадре уже подошло к EOF2 — эта «болтливость» считается ошибкой для нисходящего порта, с которого идет трансляция. По этой ошибке хаб автоматически запрещает данный порт и фиксирует это изменение состояния в своем регистре. Еще одной причиной автоматического запрещения разрешенного порта является его состояние, отличное от покоя, с момента EOF2 до конца микрокадра.

Если восходящее соединение устанавливается после EOF1, то повторитель вместо трансляции кадра передает признак FSEOP, чтобы вышестоящий хаб не запретил работу порта, к которому подключен данный хаб. Если с нисходящего порта, вызвавшего эту ситуацию, не придет EOP до EOF2, то этот порт будет автоматически запрещен.

При трансляции пакетов и сигналов для LS-портов повторитель выполняет инвертирование сигнала, поскольку представление состояний J и K для них иное. Кроме того, нисходящий трафик не транслируется на порты LS, пока не придет специальный пакет PRE. После пакета PRE «вниз» на LS-порт транслируется только один пакет. Вместо маркеров SOF на LS-порт передается признак LS-EOP, чтобы устройство не приостановилось.

Для HSпортов повторитель устроен функционально сложнее — здесь требуется ресинхронизация (re-clocking). Помехи в линии и по питанию влияют на момент переключения состояния выхода приемника во время нарастания и спада входного сигнала — это приводит к дрожанию фазы (jitter). На невысоких (LS, FS) скоростях дрожание несущественно, поскольку время нарастания/спада сигнала существенно меньше длительности битового интервала. На скорости 480 Мбит/с это соотношение иное, и накопление дрожания в цепочке повторителей (хабов) привело бы к потере битовой синхронизации. Ресинхронизация выполняется с помощью эластичного буфера — небольшой FIFO-памяти, хранящей последовательность бит транслируемого сигнала. Информация в буфер — биты, извлеченные из NRZI-сигнала, — поступает от приемника порта на частоте входного сигнала (частота подстраивается по полю Sync). Из буфера информация поступает на передатчик(и), но синхронизируясь уже от внутреннего генератора хаба. Поскольку частоты входного сигнала и внутреннего генератора абсолютно точно совпадать не могут, темп заполнения буфера отличается от темпа его опустошения. Для компенсации этих расхождений в начале приема пакета его трансляция задерживается до тех пор, пока буфер не наполнится до половины; за время передачи пакета наполненность буфера может измениться. Эластичный буфер вносит свою лепту в задержку, вносимую хабом. Глубина буфера определяется исходя из допустимого отклонения скоростей: по спецификации частота синхронизации должна выдерживаться с точностью ± 0,05%, так что максимальное расхождение частот приема и передачи может достигать ± 0,1%. При этом на пакете максимальной длины (9644 бит) может «набегать» расхождение до 9644×0,1% ≈ 10 бит; с небольшим запасом половинную длину буфера определили в 12 бит. Аналогичная технология применяется в высокоскоростных локальных сетях (Fast Ethernet, FDDI).

HS-пакет, проходя через повторитель хаба, может не только потерять до 4 бит начала синхропоследовательности, но и «обрасти» дополнительным «хвостом» после признака EOP, также до 4 бит длиной (dribble bits). Это «обрастание», как и начальная потеря, обусловлено задержкой, вносимой детектором амплитуды сигнала HS-приемника. При прохождении через 5 хабов число лишних бит может достигать 20, но это не страшно — приемник информации все равно верно определит конец пакета по признаку EOP. Вышеуказанная максимальная длина пакета 9644 бит включает в себя эти лишние биты.



Подкатегории