Usb (universal serial bus, універсальна послідовна шина)

У сучасному світі електронна техніка розвивається семимильними кроками. Кожен день з'являється щось нове, і це не тільки невеликі поліпшення вже існуючих моделей, а й результати застосування інноваційних технологій, що дозволяють в рази поліпшити характеристики.

Не відстає від електронної техніки і приладобудівна галузь - адже щоб розробити і випустити на ринок нові пристрої, їх необхідно ретельно протестувати, як на етапі проектування і розробки, так і на етапі виробництва. З'являються нові вимірювальна техніка та нові методи вимірювання, а, отже - нові терміни і поняття.

Для тих, хто часто стикається з незрозумілими скороченнями, абревіатурами і термінами і хотів би глибше розуміти їх значення, і призначена ця рубрика.

Usb (universal serial bus, універсальна послідовна шина)

Usb (universal serial bus, універсальна послідовна шина)

Загальна архітектура USB

Фізична архітектура USB визначається такими правилами:

  • пристрої підключаються до хоста;
  • фізичне з'єднання пристроїв між собою здійснюється за топології багатоярусної зірки, вершиною якої є кореневої хаб;
  • центром кожної зірки є хаб;
  • кожен кабельний сегмент з'єднує між собою дві точки: хост з хабом або функцією, хаб з функцією або іншим хабом;
  • до кожного порту хаба може підключатися периферійний USB-пристрій або інший хаб, при цьому допускаються до 5 рівнів каскадування хабів, не рахуючи кореневого.

Самим верхнім рівнем є кореневої концентратор, який зазвичай поєднується з USB контролером.

До кореневого концентратора можуть бути підключені або пристрою, або ще концентратори, для збільшення числа доступних портів. Концентратор може бути виконаний у вигляді окремого пристрою, або бути вбудованим в якесь інше, тобто пристрої, що підключаються до USB, можна поділити на функціональні пристрої, тобто ті, які виконують якусь конкретну функцію (наприклад, миші), пристрої-концентратор, що виконують тільки функцію тільки розгалуження, і суміщені пристрої, що мають в своєму складі концентратор, що розширюють набір портів (наприклад, монітори, з портами для підключення інших).

Usb (universal serial bus, універсальна послідовна шина)
Usb (universal serial bus, універсальна послідовна шина)

На п'ятому рівні комбіноване пристрій використовуватися не може. Крім того окремо варто згадати про хості, що є скоріше програмно-апаратним комплексом, ніж просто пристроєм.

Usb (universal serial bus, універсальна послідовна шина)
Usb (universal serial bus, універсальна послідовна шина)

Деталі фізичної архітектури приховані від прикладних програм в системному програмному забезпеченні (ПЗ), тому логічна архітектура виглядає як звичайна зірка, центром якої є прикладне ПО, а вершинами - набір кінцевих точок. Прикладна програма веде обмін інформацією з кожної кінцевою точкою.

складові USB

Шина USB складається з наступних елементів:

  • хост-контролер (host controller, коротко хост) - головний контролер, який входить до складу системного блоку комп'ютера і управляє роботою всіх пристроїв на шині USB. На шині USB допускається наявність тільки одного хоста. Системний блок персонального комп'ютера містить один або кілька хостів, кожен з яких керує окремої шиною USB.
    В обов'язки хоста входить:
    • стеження за підключенням і відключенням пристроїв;
    • організація керуючих потоків між USB-устройством і хостом;
    • організація потоків даних між USB-устройством і хостом;
    • контроль стану пристроїв і ведення статистики активності;
    • постачання підключених пристроїв електроживленням.
  • Usb (universal serial bus, універсальна послідовна шина)
    пристрій (device) може являти собою хаб, функцію або їх комбінацію (compound device); порт (port) - точка підключення;
  • хаб (hub, концентратор) - пристрій, що забезпечує додаткові порти на шині USB, тобто хаб перетворює один порт (висхідний порт, upstream port) в безліч портів (спадні порти, downstream ports). Архітектура допускає з'єднання кількох хабів (не більше 5). Хаб розпізнає підключення і відключення пристроїв до портів і може керувати подачею харчування на порти. Кожен з портів може бути дозволений або заборонений і налаштований на повну або обмежену швидкість обміну. Хаб забезпечує ізоляцію сегментів з низькою швидкістю від високошвидкісних. Хаб може обмежувати струм, споживаний кожним портом;
  • кореневої хаб (root hub) - це хаб, що входить до складу хоста;
  • функція (function) - це периферійних USB-пристрій або його окремий блок, здатний передавати і приймати інформацію по шині USB. Перед використанням функція повинна бути налаштована хостом - їй має бути виділена смуга в каналі і вибрані опції конфігурації;
  • логічне USB-пристрій (logical device) являє собою набір кінцевих точок, з якими можливий обмін даними. Число і функції точок залежать від пристрою і виконуваних ним функцій, і визначаються при виробництві. В обов'язковому порядку присутній точка з номером 0 - для контролю стану пристрої та управління ім. До здійснення конфігурації пристрою через точку 0 інші канали не доступні.
    Кожна кінцева точка устрою описується такими параметрами:
    • частотою звернення до шини і вимогами до затримок;
    • необхідної пропускною здатністю;
    • номером кінцевої точки;
    • вимогами до обробки помилок;
    • максимальним розміром кадру, який може бути прийнятий або посланий;
    • типом підтримуваної передачі даних;
    • напрямком здійснення передачі між кінцевої точної і хостом.

Властивості USB-пристроїв

Логічні рівні обміну даними

Специфікація USB визначає три логічних рівня з певними правилами взаємодії. USB-пристрій містить інтерфейсну, логічну і функціональну частини. Хост теж ділиться на три частини - інтерфейсну, системну і ПО. Кожна частина відповідає тільки за певне коло завдань.

Таким чином, операція обміну даними між прикладною програмою і шиною USB виконується шляхом передачі буферів пам'яті через такі рівні:

  • рівень клієнтського ПЗ в хості:
    • зазвичай представляється драйвером USB-пристрої;
    • забезпечує взаємодію користувача з операційною системою з одного боку і системним драйвером з іншого;
  • рівень системного драйвера USB в хост (USB, Universal Serial Bus Driver):
    • управляє нумерацією пристроїв на шині;
    • управляє розподілом пропускної спроможності шини і потужності харчування;
    • обробляє запити користувача драйверів;
  • рівень хост-контролера інтерфейсу шини USB (HCD, Host Controller Driver):
    • перетворює запити введення / виведення в структури даних, за якими виконуються фізичні транзакції;
    • працює з регістрами хоста.

Відносини клієнтського програмного забезпечення і USB пристроїв: USB надає для взаємодії програмний інтерфейс і тільки його, дозволяючи клієнтському ПО існувати у відриві від конкретного підключеного до шини пристрої і його конфігурації. Для клієнтської програми USB - це лише набір функцій.

Взаємодія компонентів USB представлено на схемі нижче:

Usb (universal serial bus, універсальна послідовна шина)

У розглянуту структуру входять наступні елементи:

Фізичний пристрій USB - пристрій на шині, що виконує функції, що цікавлять кінцевого користувача.

Client SW - ПО, відповідне конкретному пристрою, який виконувався на хост-комп'ютері. Може бути складовою частиною ОС або спеціальним продуктом.

USB System SW - системна підтримка USB, незалежна від конкретних пристроїв і клієнтського ПЗ.

USB Host Controller - апаратні і програмні засоби для підключення пристроїв USB до хост-комп'ютера.

Принципи передачі даних

Механізм передачі даних є асинхронним і блоковим. Блок переданих даних називається USB-фреймом або USB-кадром і передається за фіксований часовий інтервал. Оперування командами і блоками даних реалізується за допомогою логічної абстракції, званої каналом. Канал є логічною зв'язкою між хостом і кінцевою точкою зовнішнього пристрою.

Для передачі команд (і даних, що входять до складу команд) використовується канал за замовчуванням, а для передачі даних відкриваються або потоковиеканали, або канали повідомлень.

З каналами пов'язані характеристики, відповідні кінцевій точці. Канали організовуються при конфігуруванні пристроїв USB. Для кожного включеного пристрою існує канал повідомлень (Control Pipe 0), за яким передається інформація конфігурації, управління і стану.

Будь обмін по шині USB ініціюється хост-контроллером. Він організовує обміни з пристроями відповідно до свого плану розподілу ресурсів.

Контролер циклічно (з періодом 1,0 ± 0,0005 мс) формує кадри (frames), в які вкладаються всі заплановані передачі.

Кожен кадр починається з посилки пакета-маркера SOF (Start Of Frame, початок кадру), який є синхронизирующим сигналом для всіх пристроїв, включаючи хаби. В кінці кожного кадру виділяється інтервал часу EOF (End Of Frame, кінець кадру), на час якого хаби забороняють передачу у напрямку до контролера. Якщо хаб виявить, що з якогось порту в цей час ведеться передача даних, цей порт відключається.

У режимі високошвидкісної передачі пакети SOF передаються на початку кожного мікрокадра (період 125 ± 0,0625 мкс).

Хост планує завантаження кадрів так, щоб в них завжди знаходилося місце для найбільш пріоритетних передач, а вільне місце кадрів заповнюється фонової передачами великих обсягів даних. Специфікація USB дозволяє займати під періодичні транзакції (ізохронні і переривання) до 90% пропускної здатності шини.

Кожен кадр має свій номер. Хост-контролер оперує 32-бітовим лічильником, але в маркері SOF передає тільки молодші 11 біт. Номер кадру циклічно збільшується під час EOF.

Для ізохронної передачі важлива синхронізація пристроїв і контролера. Є три варіанти синхронізації:

  • синхронізація внутрішнього генератора пристрою з маркерами SOF;
  • підстроювання частоти кадрів під частоту пристрою;
  • узгодження швидкості передачі (прийому) пристрою з частотою кадрів.

У кожному кадрі може бути виконано кілька транзакцій, їх допустиму кількість залежить від швидкості, довжини поля даних кожної з них, а також від затримок, внесених кабелями, хабами і пристроями. Усі транзакції кадрів повинні бути завершені до моменту часу EOF. Частота генерації кадрів може трохи варіюватися за допомогою спеціального регістра хост-контролера, що дозволяє підлаштовувати частоту для ізохронних передач. Підстроювання частоти кадрів контроллера можлива під частоту внутрішньої синхронізації тільки одного пристрою.

Інформація по каналу передається у вигляді пакетів (Packet). Кожен пакет починається з поля синхронізації SYNC (SYNChronization), за яким слідує ідентифікатор пакета PID (Packet IDentifier). Поле Check є побітову інверсію PID.

Структура даних пакета залежить від групи, до якої він належить.

Usb (universal serial bus, універсальна послідовна шина)

1. Клієнтське ПЗ посилає IPR-запити рівню USBD.

2. Драйвер USBD розбиває запити на транзакції за такими правилами:

  • виконання запиту вважається закінченим, коли успішно завершені всі транзакції, його складові;
  • всі подробиці відпрацювання транзакцій (такі як очікування готовності, повтор транзакції при помилку, неготовність приймача і т. д.) до клієнтського ПЗ не доводяться;
  • ПО може тільки запустити запит і чекати або виконання запиту або виходу з тайм-ауту;
  • пристрій може сигналізувати про серйозні помилки, що призводить до аварійного завершення запиту, про що повідомляється джерело запиту.

3. Драйвер контролера хоста приймає від системного драйвера шини перелік транзакцій і виконує наступні дії:

  • планує виконання отриманих транзакцій, додаючи їх до списку транзакцій;
  • витягує зі списку чергову транзакцію і передає її рівню хост-контролера інтерфейсу шини USB;

4. Хост-контролер інтерфейсу шини USB формує кадри;

5. Кадри передаються послідовної передачею біт за методом NRZI

Таким чином, можна сформувати наступну спрощену схему:

Usb (universal serial bus, універсальна послідовна шина)

1. кожен кадр складається з найбільш пріоритетних посилок, склад яких формує драйвер хоста;

2. кожна передача складається з однієї або декількох транзакцій;

3. кожна транзакція складається з пакетів;

4. кожен пакет складається з ідентифікатора пакету, даних (якщо вони є) і контрольної суми.

Типи повідомлень в USB

Специфікація шини визначає чотири різних типи передачі (transfer type) даних для кінцевих точок:

механізм переривань

Для шини USB справжнього механізму переривань не існує. Замість цього хост опитує підключені пристрої на предмет наявності даних про переривання. Опитування відбувається в фіксовані інтервали часу, зазвичай кожні 1 - 32 мс. Пристрою дозволяється посилати до 64 байт даних.

З точки зору драйвера, можливості роботи з перериваннями фактично визначаються хостом, який і забезпечує підтримку фізичної реалізації USB-інтерфейсу.

Режими передачі даних

Шина USB має три режими передачі даних:

  • низкоскоростной (LS, Low-speed) 1.5 Мбіт / с;
  • максимальна швидкість (LF, Full-speed) 12 Мбіт / с;
  • високошвидкісний (HS, High-speed, тільки для USB 2.0) 480 Мбіт / с.

Підключення периферійних пристроїв до шини USB

Для підключення периферійних пристроїв до шини USB використовується чотирипровідний кабель, при цьому два дроти (вита пара) в диференційному включенні використовуються для прийому і передачі даних, а два дроти - для живлення периферійного пристрою.

Специфікація 1.0 регламентувала два типи роз'ємів:

Usb (universal serial bus, універсальна послідовна шина)
Usb (universal serial bus, універсальна послідовна шина)

Згодом були розроблені мініатюрні роз'єми для застосування USB в переносних і мобільних пристроях, що отримали назву Mini-USB.

Usb (universal serial bus, універсальна послідовна шина)

Існують також роз'єми типу Mini AB і Micro AB, з якими з'єднуються відповідні конектори як типу A, так і типу B.

Usb (universal serial bus, універсальна послідовна шина)

Так само існують мініатюрні роз'єми - Micro USB.

Usb (universal serial bus, універсальна послідовна шина)

Підключення низької пристрої

Usb (universal serial bus, універсальна послідовна шина)

Сигнали синхронізації кодуються разом з даними за методом NRZI (Non Return to Zero Invert). Кожному пакету передує поле синхронізації SYNC, що дозволяє приймачу налаштуватися на частоту передавача.

Кабель також має лінії VBus і GND для передачі живлячої напруги 5 В до пристроїв. Перетин провідників вибирається відповідно до довжини сегмента для забезпечення гарантованого рівня сигналу і живлячої напруги.

Матеріали по темі: