Технологія USB 2

Функціональний пристрій. З точки зору USB, пристрій - це набір кінцевих точок, з якими можливий обмін даними. Число та функції точок залежать від пристрою та виконуваних ним функцій, і визначаються під час виробництва. В обов'язковому порядку присутня точка з номером 0 - для контролю стану пристрою та управління ним. До конфігурування пристрою через точку 0 інші канали не доступні. Кожна кінцева точка пристрою описується такими параметрами:

  • Частотою звернення до шини та вимогами до затримок.
  • Необхідною смугою пропускання
  • Номер кінцевої точки
  • Вимогами до обробки помилок
  • Максимальним розміром кадру може бути прийнятий або посланий.
  • Типом передачі даних, що підтримується
  • Напрямком здійснення передачі між кінцевою точною та хостом.

Для низькошвидкісних (low-speed) пристроїв можливе існування до двох додаткових точок; для full-speed пристроїв їх кількість обмежується лише можливостями протоколу і може досягати 15 для введення і 15 для виведення.

Обмін даними може здійснюватися у трьох швидкісних режимах:

  • Low Speed. Низькошвидкісний режим. Швидкість передачі становить 1.5 Мбіт/с.
  • Full Speed. Повношвидкісний режим. Швидкість передачі 12 Мбіт/с.
  • High Speed. Високошвидкісний режим. З'явився лише у специфікації 2.0. Швидкість передачі 480 Мбіт/с.

Ми не станемо опускатися в розгляді до рівня кадрів і мікрокадрів, оскільки це зовсім не завадить нам зрозуміти загальні принципи роботи шини.

Фізичні канали зв'язку організуються концентраторами та сполучними проводами. З концентраторами ми майже розібралися раніше. Провід використовується дляпідключення USB пристроїв є екранованою кручена пара. Для високошвидкісних пристроїв висуваються високі вимоги до її якості. Низькошвидкісні до цього елементу фізичного інтерфейсу ставляться не критично, і без проблем можуть функціонувати на неекранованому невитому дроті. Усього в USB кабелі використовується 4 проводи.

Два для передачі сигналу та два для подачі напруги. Для підключення пристроїв призначені з'єднувачі двох типів: типу "A" та типу "B". Як мені здається створення двох різних видів конекторів було необхідно для того, щоб уникнути зайвої плутанини при підключенні пристроїв і захиститися від дурня, позбавивши його можливості підключити щось не так. Крім того, вони характеризуються різним зусиллям необхідним для вставки та силою утримання у роз'ємі.

Конектори типу "А" використовуються для підключення до комп'ютера, забезпечують жорстке та надійне кріплення та не призначені для частого підключення/від'єднання.

пристроїв

З'єднувачі типу "B", навпаки, потрібні в тих місцях, де існує необхідність частого підключення/відключення, і застосовуються вони з боку периферії.

пристроїв

Наживо вони ось так виглядають.

може

Крім того, в новій версії USB визначено конектор miniUSB типу "B".

технологія

За підписами D+ і D- на схемі кабелю має бути ви вже здогадалися, що USB використовує диференціальну передачу (втім, кожен порт крім диференціального приймача має ще й лінійні для кожного сигналу), додам ще що застосовується потенційне кодування за методом NRZI (Non Return to Zero Invert to ones, без повернення до нуля з інверсією для одиниць) і бітстаффінг для поліпшення властивостей потоку, що самосинхронізуються. Це загалом.Глибше ми не вдаватимемося. Цілком ні до чого.

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

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

Отже, до шини підключено новий пристрій. Напевно, ви задавалися питанням, яким чином відбувається виявлення. Відповідь проста: виявлення пристрою, а також його швидкісний режим визначається по стрибку напруги, який має бути при включенні на шині даних. Цей стрибок створюється підключенням резистора до напруги 3.3 В. Для низькошвидкісних пристроїв цей резистор підключається до шини D-, для повно- та високошвидкісних - до шини D+. Зазвичай той резистор робиться програмно керованим у тому, що після виявлення пристрою його можна було відключити і збалансувати лінію. Отже, новий пристрій підключено та виявлено.

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

Обмін даними. Випадок перший: передача від хоста до пристрою. В принципі, ніякийскладнощів немає. Щойно така потреба виникла, хост може ініціювати передачу. Для цього він посилає пристрою пакет out (на знак того, що дані передаватиме він), потім посилає самі дані, а потім приймає пакет ACK, що підтверджує, що дані пристроєм отримані без помилок (якщо це не ізохронний тип передачі, для якого підтвердження не передається).

Обмін даними. Випадок другий: від пристрою до хоста. У пристрою виникла потреба передати дані. АЛЕ! Воно не може дати знати про це хосту. Таких засобів у USB просто не передбачено. Для того, щоб виконати таку передачу, хост повинен звернутися до пристрою з питанням, чи не має він бажання щось сказати (послав пакет in). У відповідь на що пристрій надішле йому наявні дані і дочекається отримання підтвердження (знову ж таки, якщо ведеться не ізохронна передача). Відповідно, якщо хост не звернутися з таким питанням, дані ніколи не будуть передані.

Обмін інформацією, що управляє. В принципі має ту ж логіку, але використовується передача типу управління та канал повідомлень та спеціальні пакети.

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