link140 link141 link142 link143 link144 link145 link146 link147 link148 link149 link150 link151 link152 link153 link154 link155 link156 link157 link158 link159 link160 link161 link162 link163 link164 link165 link166 link167 link168 link169 link170 link171 link172 link173 link174 link175 link176 link177 link178 link179 link180 link181 link182 link183 link184 link185 link186 link187 link188 link189 link190 link191 link192 link193 link194 link195 link196 link197 link198 link199 link200 link201 link202 link203 link204 link205 link206 link207 link208 link209 link210 link211 link212 link213 link214 link215 link216 link217 link218 link219 link220 link221 link222 link223 link224 link225 link226 link227 link228 link229 link230 link231 link232 link233 link234 link235 link236 link237 link238 link239 link240 link241 link242 link243 link244 link245 link246 link247 link248 link249 link250 link251 link252 link253 link254 link255 link256 link257 link258 link259 link260 link261 link262 link263 link264 link265 link266 link267 link268 link269 link270 link271 link272 link273 link274 link275 link276 link277 link278 link279

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

USB

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

Хаб обеспечивает живучесть шины 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 бит включает в себя эти лишние биты.