link280 link281 link282 link283 link284 link285 link286 link287 link288 link289 link290 link291 link292 link293 link294 link295 link296 link297 link298 link299 link300 link301 link302 link303 link304 link305 link306 link307 link308 link309 link310 link311 link312 link313 link314 link315 link316 link317 link318 link319 link320 link321 link322 link323 link324 link325 link326 link327 link328 link329 link330 link331 link332 link333 link334 link335 link336 link337 link338 link339 link340 link341 link342 link343 link344 link345 link346 link347 link348 link349 link350 link351 link352 link353 link354 link355 link356 link357 link358 link359 link360 link361 link362 link363 link364 link365 link366 link367 link368 link369 link370 link371 link372 link373 link374 link375 link376 link377 link378 link379 link380 link381 link382 link383 link384 link385 link386 link387 link388 link389 link390 link391 link392 link393 link394 link395 link396 link397 link398 link399 link400 link401 link402 link403 link404 link405 link406 link407 link408 link409 link410 link411 link412 link413 link414 link415 link416 link417 link418 link419

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

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%. Естественно, хост-контроллер может подстроиться под частоту внутренней синхронизации только одного устройства.