У сучасному світі електронна техніка розвивається семимильними кроками. Кожен день з'являється щось нове, і це не тільки невеликі поліпшення вже існуючих моделей, а й результати застосування інноваційних технологій, що дозволяють в рази поліпшити характеристики.
Не відстає від електронної техніки і приладобудівна галузь - адже щоб розробити і випустити на ринок нові пристрої, їх необхідно ретельно протестувати, як на етапі проектування і розробки, так і на етапі виробництва. З'являються нові вимірювальна техніка та нові методи вимірювання, а, отже - нові терміни і поняття.
Для тих, хто часто стикається з незрозумілими скороченнями, абревіатурами і термінами і хотів би глибше розуміти їх значення, і призначена ця рубрика.
Загальна архітектура USB
Фізична архітектура USB визначається такими правилами:
- пристрої підключаються до хоста;
- фізичне з'єднання пристроїв між собою здійснюється за топології багатоярусної зірки, вершиною якої є кореневої хаб;
- центром кожної зірки є хаб;
- кожен кабельний сегмент з'єднує між собою дві точки: хост з хабом або функцією, хаб з функцією або іншим хабом;
- до кожного порту хаба може підключатися периферійний USB-пристрій або інший хаб, при цьому допускаються до 5 рівнів каскадування хабів, не рахуючи кореневого.
Самим верхнім рівнем є кореневої концентратор, який зазвичай поєднується з USB контролером.
До кореневого концентратора можуть бути підключені або пристрою, або ще концентратори, для збільшення числа доступних портів. Концентратор може бути виконаний у вигляді окремого пристрою, або бути вбудованим в якесь інше, тобто пристрої, що підключаються до USB, можна поділити на функціональні пристрої, тобто ті, які виконують якусь конкретну функцію (наприклад, миші), пристрої-концентратор, що виконують тільки функцію тільки розгалуження, і суміщені пристрої, що мають в своєму складі концентратор, що розширюють набір портів (наприклад, монітори, з портами для підключення інших).
На п'ятому рівні комбіноване пристрій використовуватися не може. Крім того окремо варто згадати про хості, що є скоріше програмно-апаратним комплексом, ніж просто пристроєм.
Деталі фізичної архітектури приховані від прикладних програм в системному програмному забезпеченні (ПЗ), тому логічна архітектура виглядає як звичайна зірка, центром якої є прикладне ПО, а вершинами - набір кінцевих точок. Прикладна програма веде обмін інформацією з кожної кінцевою точкою.
складові USB
Шина USB складається з наступних елементів:
- хост-контролер (host controller, коротко хост) - головний контролер, який входить до складу системного блоку комп'ютера і управляє роботою всіх пристроїв на шині USB. На шині USB допускається наявність тільки одного хоста. Системний блок персонального комп'ютера містить один або кілька хостів, кожен з яких керує окремої шиною USB.
В обов'язки хоста входить:- стеження за підключенням і відключенням пристроїв;
- організація керуючих потоків між USB-устройством і хостом;
- організація потоків даних між USB-устройством і хостом;
- контроль стану пристроїв і ведення статистики активності;
- постачання підключених пристроїв електроживленням.
- пристрій (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 - пристрій на шині, що виконує функції, що цікавлять кінцевого користувача.
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.
Структура даних пакета залежить від групи, до якої він належить.
1. Клієнтське ПЗ посилає IPR-запити рівню USBD.
2. Драйвер USBD розбиває запити на транзакції за такими правилами:
- виконання запиту вважається закінченим, коли успішно завершені всі транзакції, його складові;
- всі подробиці відпрацювання транзакцій (такі як очікування готовності, повтор транзакції при помилку, неготовність приймача і т. д.) до клієнтського ПЗ не доводяться;
- ПО може тільки запустити запит і чекати або виконання запиту або виходу з тайм-ауту;
- пристрій може сигналізувати про серйозні помилки, що призводить до аварійного завершення запиту, про що повідомляється джерело запиту.
3. Драйвер контролера хоста приймає від системного драйвера шини перелік транзакцій і виконує наступні дії:
- планує виконання отриманих транзакцій, додаючи їх до списку транзакцій;
- витягує зі списку чергову транзакцію і передає її рівню хост-контролера інтерфейсу шини USB;
4. Хост-контролер інтерфейсу шини USB формує кадри;
5. Кадри передаються послідовної передачею біт за методом NRZI
Таким чином, можна сформувати наступну спрощену схему:
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 в переносних і мобільних пристроях, що отримали назву Mini-USB.
Існують також роз'єми типу Mini AB і Micro AB, з якими з'єднуються відповідні конектори як типу A, так і типу B.
Так само існують мініатюрні роз'єми - Micro USB.
Підключення низької пристрої
Сигнали синхронізації кодуються разом з даними за методом NRZI (Non Return to Zero Invert). Кожному пакету передує поле синхронізації SYNC, що дозволяє приймачу налаштуватися на частоту передавача.
Кабель також має лінії VBus і GND для передачі живлячої напруги 5 В до пристроїв. Перетин провідників вибирається відповідно до довжини сегмента для забезпечення гарантованого рівня сигналу і живлячої напруги.