до шини і підтримує передачі типу "управління" (див. нижче).
Окрім нульової точки, пристрої-"функції" можуть мати додаткові точки, власне і реалізуючі корисні обміни даними. Низькошвидкісні пристрої можуть мати до двох додаткових точок, повношвидкісні – до 16 точок введення і 16 точок виведення (протокольне обмеження). Всі ці точки не можуть бути використані до їх конфігурації (встановлення злагодженого з ними каналу).
Каналом (pipe) в USB називається модель передачі даних між хост-контроллером і кінцевою точкою (endpoint) пристрою. Є два типи каналів: потоки (stream) і повідомлення (message).
Потік доставляє дані від одного кінця каналу до іншого, він завжди однонаправлений. Один і той же номер кінцевої точки може використовуватися для двох потокових каналів – введення і виведення. Потік може використовувати наступні типи обміну: суцільний, ізохронний і переривання. Доставка завжди йде в порядку "перший увійшов – першим вийшов", з погляду USB дані потоку неструктуровані.
Повідомлення (на відміну від потоків) мають формат, визначений специфікацією USB. Обмін повідомленнями відрізняється від потоків: хост посилає запит до кінцевої точки, після якого передається (або приймається) пакет повідомлення, за яким слідує пакет з інформацією стан кінцевої точки. Подальше повідомлення нормально не може бути послано раніше обробки попереднього, але при відроблянні помилок можливе й скидання необслужених повідомлень. Двосторонній обмін повідомленнями адресується до одного й того ж номера кінцевої точки. Для доставки повідомлень використовується тільки обмін типу "управління".
З каналами пов'язані характеристики, відповідні вимогам кінцевої точки (смуга пропускання, тип сервісу розмір буфера і т. п.). Канали організовуються при конфігурації пристроїв USB. Один канал повідомлень (Control Pipe 0), по якому передається інформація конфігурації, управління і стани, обов'язково існує для кожного включеного пристрою.
USB підтримує ряд режимів зв'язку, як однонаправлених, так і двонаправлених. Передача даних проводиться між ПЗ хоста і конкретною кінцевою точкою пристрою. Пристрій може мати декілька кінцевих точок, зв'язок з кожною з них (канал) встановлюється незалежно від інших. Архітектура USB допускає чотири базові типи передачі даних:
Управляючі посилки (Control transfers), що використовуються для конфігурації під час підключення і в процесі роботи для управління пристроями. Протокол забезпечує гарантовану доставку даних. Довжина поля даних управляючої посилки не перевищує 64 байт на повній швидкості і 8 байт на низькій.
Суцільні передачі (Bulk data transfers) порівняно великих пакетів без жорстких вимог до часу доставки (наприклад, від сканера або до принтера). Ці передачі займають всю вільну смугу пропускання шини, незайняту іншими класами передач. Пакети мають поле даних розміром 8, 16, 32 або 64 байт. Пріоритет цих передач найнижчий, вони можуть припинятися при великому завантаженні шини. Допускаються тільки на повній швидкості передачі.
Переривання (Interrupt) – короткі (до 64 байт на повній швидкості і до 8 байт на низькій) передачі типу символів або координат, що вводяться. Переривання мають спонтанний характер і повинні обслуговуватися не повільніше, ніж того вимагає пристрій. Межа часу обслуговування встановлюється в діапазоні 1-255 мс для повної швидкості і 10-255 мс для низької.
Ізохронні передачі – безперервні передачі в реальному часі, що займають попередньо злагоджену частину пропускної спроможності шини і мають задану затримку доставки. В разі виявлення помилки ізохронні дані передаються без повтору – недійсні пакети просто ігноруються. Типовим прикладом ізохронних даних є цифрова передача голосу. Тут пропускна спроможність визначається вимогами до якості передачі, а затримка доставки може бути критичною, наприклад, при реалізації телеконференцій.
Смуга пропускання шини ділиться між усіма встановленими каналами. Виділена смуга закріплюється за каналом, і, якщо встановлення нового каналу вимагає такої смуги, яка не вписується у вже існуючий розподіл, запит на виділення каналу відкидається.
Архітектура USB передбачає внутрішню буферизацію всіх пристроїв, причому чим більшої смуги пропускання вимагає пристрій, тим більшим повинен бути його буфер. USB повинна забезпечувати обмін з такою швидкістю, щоб затримка даних у пристрої, викликана буферизацією, не перевищувала одиниць мілісекунд.
Ізохронні передачі класифікуються за способом синхронізації кінцевих точок – джерел або одержувачів даних – з системою: розрізняють асинхронний, синхронний і адаптивний класи пристроїв, кожному з яких відповідає свій тип каналу USB.
Розділ 3. Тестування, налагодження, відновлення
Всі обміни (трансакції) по USB складаються з трьох пакетів. Кожна трансакція планується і починається за ініціативою контроллера, який посилає пакет-маркер (Token Packet). Цей пакет описує тип і напрям передачі, адресу пристрою USB і номер кінцевої точки.
У кожній трансакції можливий обмін тільки між пристроєм (його кінцевою точкою) і хостом, що адресується. Пристрій USB, що адресується маркером, розпізнає свою адресу і готується до обміну. Джерело даних (визначене маркером) передає пакет даних (або повідомлення про відсутність даних, призначених для передачі). Після успішного прийому пакету приймач даних посилає пакет підтвердження (Handshake Packet).
Планування трансакцій забезпечує управління потоковими каналами. На апаратному рівні використання відмови від трансакції (NACK) при недопустимій інтенсивності передачі оберігає буфери від переповнювання або переспустошення. Маркери знехтуваних трансакцій повторно передаються у вільний для шини час. Управління потоками дозволяє гнучко планувати обслуговування одночасних різнорідних потоків даних.
Стійкість до помилок забезпечується наступними властивостями USB:
Висока якість сигналів, забезпечувана диференціальними приймачами і передавачами і екрануванням кабелів.
Захист полів управління і даних CRC-кодами.
Виявлення підключення і відключення пристроїв і конфігурація ресурсів на системному рівні.
Самовідновлення протоколу з використанням тайм-ауту при втраті пакетів.
Управління потоком для забезпечення ізохронності і управління апаратними буферами.
Незалежність одних функцій від невдалих обмінів з іншими функціями, забезпечувана конструкцією каналів.
Для виявлення помилок передачі кожний пакет має контрольні поля CRC-кодів, що дозволяють знаходити всі одиночні і