Open
Close

Послідовна шина USB підтримує технологію. Послідовна шина usb. Типи передачі

Організація шини USB

USB (Universal Serial Bus – універсальна послідовна шина) є промисловим стандартом розширення архітектури PC, орієнтованим на інтеграцію з телефонією та пристроями побутової електроніки. Версія стандарту 1.0 була опублікована на початку 1996 року, більшість пристроїв підтримують стандарт 1.1, який вийшов восени 1998 року, - у ньому було усунуто виявлені проблеми першої редакції. Навесні 2000 року опубліковано специфікацію USB 2.0, в якій передбачено 40-кратне збільшення пропускної спроможності шини. Спочатку (у версіях 1.0 та 1.1) шина забезпечувала дві швидкості передачі інформації: повна швидкість, FS (full speed) – 12 Мбіт/с та низька швидкість, LS (low speed) – 1,5 Мбіт/с. У версії 2.0 визначено ще й високу швидкість, HS (high speed) — 480 Мбіт/с, що дозволяє суттєво розширити коло пристроїв, що підключаються до шини. В одній і тій же системі можуть бути присутніми і одночасно працювати пристрої з усіма трьома швидкостями. Шина дозволяє з використанням проміжних хабів з'єднувати пристрої, віддалені від комп'ютера на відстань до 25 м. Детальну та оперативну інформацію USB (англійською мовою) можна знайти на сайті http://www.usb.org. Розробку пристроїв та їх класифікацію та стандартизацію координує USB-IF (USB Implementers Forum, Inc.).

Шина USB забезпечує обмін даними між хост-комп'ютером та безліччю периферійних пристроїв (ПУ). USB є єдиною централізованою апаратно-програмною системою масового обслуговування безлічі пристроїв та безлічі прикладних програмних процесів. Зв'язок програмних процесів з усіма пристроями забезпечує хост-контролер із багаторівневою програмною підтримкою. Цим USB суттєво відрізняється від традиційних периферійних інтерфейсів (портів LPT, COM, GAME, клавіатури, миші тощо), порівняння цих типів підключень наводиться у таблиці.

Таблиця. Порівняння шини USB із традиційними периферійними інтерфейсами

Традиційні інтерфейси (COM, LPT, Game…) Шина USB
Підключення кожного пристрою в загальному випадку потребує власного контролера (адаптера) 1 Усі пристрої підключені через один хостконтролер
Кожен контролер займає свої ресурси (області у просторі пам'яті, введення/виводу, а також запити переривання) Ресурси займає лише хост-контролер
Невелика кількість пристроїв, які можна одночасно підключити до комп'ютера Можливість підключення до 127 пристроїв
Драйвери пристроїв можуть звертатися безпосередньо до контролерів своїх пристроїв незалежно один від одного. Драйвери пристроїв звертаються лише до спільного драйвера хост-контролера
Незалежність драйверів обертається непередбачуваністю результату одночасної роботи з безліччю пристроїв, відсутністю гарантій якості обслуговування (можливість затримок та зменшення швидкості передачі)
для різних пристроїв
Централізований запланований обмін забезпечує гарантії якості обслуговування, що дозволяє передавати мультимедійні ізохронні дані поряд із звичайним асинхронним обміном.
Різноманітність інтерфейсів, роз'ємів та кабелів, специфічних для кожного типу пристроїв Єдиний зручний та дешевий інтерфейс для підключення пристроїв усіх типів. Можливість вибору швидкості роботи пристрою (1,5-15-480 Мбіт/с) залежно від потреби
Відсутність вбудованих засобів виявлення підключення/відключення та ідентифікації пристроїв, складність підтримки PnP Можливість «гарячого» підключення/вимкнення пристроїв, повна підтримка PnP, динамічне конфігурування
Відсутність засобів контролю помилок Вбудовані засоби забезпечення надійної передачі даних
Відсутність штатного живлення пристроїв Можливість живлення пристроїв від шини, а також наявність засобів керування енергоспоживанням

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

Архітектура USB допускає чотири базові типи передач даних між хостом і периферійними пристроями:

  • ізохронні передачі (isochronous transfers) - потокові передачі в реальному часі, що займають заздалегідь узгоджену частину пропускної спроможності шини з гарантованим часом затримки доставки. На повній швидкості (FS) можна організувати один канал зі смугою до 1,023 Мбайт/с (або два по 0,5 Мбайт/с), зайнявши 70 % доступної смуги (залишок можна зайняти менш ємними каналами). На високій швидкості (HS) можна отримати канал до 24 Мбайт/с (192 Мбіт/с). Надійність доставки не гарантується – у разі виявлення помилки ізохронні дані не повторюються, недійсні пакети ігноруються. Шина USB дозволяє за допомогою ізохронних передач організовувати синхронні з'єднання між пристроями та прикладними програмами. Ізохронні передачі потрібні для потокових пристроїв: відеокамер, цифрових аудіопристроїв (колонки USB, мікрофон), пристроїв відтворення та запису аудіо- та відео (CD і DVD). Відеопотік (без компресії) USB шина здатна передавати тільки на високій швидкості;
  • переривання (interrupts) — надсилання спонтанних повідомлень, які повинні виконуватися із затримкою не більше, ніж цього вимагає пристрій. Межа часу обслуговування встановлюється в діапазоні 10-255 мс для низької та 1-255 мс для повної швидкості. На високій швидкості можна замовити 125 мкс. Доставка гарантована, при випадкових помилках обміну виконується повтор, щоправда, у своїй час обслуговування збільшується. Переривання використовуються, наприклад, при введенні символів з клавіатури або передачі повідомлень про переміщення миші. Переривання можна передавати дані і до пристрою (як тільки пристрій сигналізує про потребу в даних, хост своєчасно їх передає). Розмір повідомлення може становити 0-8 байт для низької швидкості, 0-64 байт - для повної та 0-1024 байт - для високої швидкості передачі;
  • передачі масивів даних (bulk data transfers) — це передачі без будь-яких зобов'язань щодо своєчасності доставки та швидкості. Передачі масивів можуть займати всю смугу пропускання шини, вільну від інших типів передач. Пріоритет цих передач є найнижчим, вони можуть призупинятися при великому завантаженні шини. Доставка гарантована – при випадковій помилці виконується повтор. Передачі масивів доречні для обміну даними з принтерами, сканерами, пристроями зберігання тощо;
  • керуючі передачі (control transfers) використовуються для конфігурування пристроїв під час їх підключення та управління пристроями в процесі роботи. Протокол забезпечує гарантовану доставку даних та підтвердження пристроєм успішності виконання керуючої команди. Керуюча передача дозволяє подати пристрою команду (запит, можливо, і з додатковими даними) і отримати відповідь (підтвердження або відмова від виконання запиту і, можливо, дані). Тільки керуючі передачі на USB забезпечують синхронізацію запитів та відповідей; в інших типах передач явної синхронізації потоку введення з потоком виведення немає.

Апаратна частина USB включає:

  • периферійні пристрої USB, що мають корисні функції (USB-functions);
  • хост-контролер (Host Controller), що забезпечує зв'язок шини з центром комп'ютера, об'єднаний з кореневим хабом (Root Hub), що забезпечує точки підключення USB-пристроїв. Існує два варіанти хост-контролерів USB 1.x - UHC (Universal Host Controller) та OHC (Open Host Controller), що підтримують швидкості FS/LS; високу швидкість шини USB 2.0 (HS і лише) підтримує EHC (Enhanced Host Controller);
  • хаби USB (USB Hubs), що забезпечують додаткові точки підключення пристроїв;
  • USB-кабелі, що з'єднують пристрої з хабами.

Програмна частина USB включає:

  • клієнтське програмне забезпечення (CSw, Client Software) — драйвери пристроїв USB, що забезпечують доступ до пристроїв з боку прикладного програмного забезпечення. Ці драйвери взаємодіють із пристроями лише через програмний інтерфейс із загальним драйвером USB (USBD). Безпосереднє звернення до будь-яких регістрів апаратних засобів драйвери пристроїв USB не виконують;
  • драйвер USB (USBD, USB Driver), «завідувач» усіма USB-пристроями системи, їх нумерацією, конфігуруванням, наданням служб, розподілом пропускної спроможності шини, потужності живлення тощо;
  • драйвер хост-контролера (HCD, Host Controller Driver), що перетворює запити введення/виведення в структури даних, розміщені в комунікаційній області оперативної пам'яті, і звертається до регістрів хост-контролера. Хост-контролер виконує фізичні транзакції, керуючись цими структурами даних.

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

Роботою всіх пристроїв шини USB управляє хост-контролер (host controller), що є програмно-апаратною підсистемою хост-комп'ютера. Хост-контролер є інтелектуальним пристроєм шини PCI або складовою «південного» хаба (мосту) системної плати, що інтенсивно взаємодіє з оперативною пам'яттю.

Фізична топологія USB шини - Багатоярусна зірка (див. малюнок, а). Її вершиною є хост-контролер, об'єднаний із кореневим хабом (root hub). Хаб є пристроєм-розгалужувачем, він може бути джерелом живлення для підключених до нього пристроїв. До кожного порту хаба може безпосередньо підключатись периферійний пристрій або проміжний хаб; шина допускає до п'яти рівнів (ярусів) каскадування хабів (крім кореневого). Оскільки комбіновані пристрої містять у собі хаб, їх підключення до хабу п'ятого ярусу неприпустимо. Кожен проміжний хаб має кілька низхідних (downstream) портів для підключення периферійних пристроїв (або нижчих хабів) і один висхідний (upstream) порт для підключення до кореневого хаба або низхідного порту вищого хаба.

Логічна топологія USB – зірка. Хаби (включно з кореневою) створюють ілюзію безпосереднього підключення кожного логічного пристрою до хост-контролера (див. малюнок нижче, б). У цій зірці встановлюються суто підлеглі відносини по системі опитування-відповіді: хост-контролер за своєю ініціативою передає дані до обраного пристрою або приймає їх. Пристрій за власною ініціативою передавати дані не може; безпосередні передачі між пристроями неможливі. Пристрій за своєю ініціативою може лише сигналізувати про «пробудження» (wakeup), навіщо використовується спеціальна сигналізація, але з передача даних.

Фізичний інтерфейс USB простий та витончений. Конструкція кабелів і конекторів USB не дозволяє помилитися при підключенні пристроїв (див. малюнок нижче, а і б). Для розпізнавання роз'єму USB на корпусі пристрою ставиться стандартне символічне позначення (див. рис. нижче, в). Гнізда типу «A» встановлюються лише на низхідних портах хабів, вилки типу «A» — на шнурах периферійних пристроїв або портів висхідних хабів. Гнізда та виделки типу «B» використовуються тільки для шнурів, що від'єднуються від периферійних пристроїв і висхідних портів хабів (від «дрібних» пристроїв - мишей, клавіатур тощо кабелі, як правило, не від'єднуються). Для малогабаритних пристроїв є роз'єм mini-B, а для підтримки OTG (On-the-Go) є і вилки mini-A, і розетки miniAB. Хаби та пристрої забезпечують можливість «гарячого» підключення та відключення із сигналізацією про ці події хосту.

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

Логічне пристрій USB є набір незалежних кінцевих точок (Endpoint, EP), з якими хост-контролер (і клієнтське ПЗ) обмінюється інформацією. Кожному логічному пристрою USB (як функції, так і хабу) конфігураційна частина хоста призначає свою адресу (1-127), унікальний на даній шині USB. Кожна кінцева точка логічного пристрою ідентифікується своїм номером (0-15) та напрямом передачі (IN – передача до хоста, OUT – від хоста). Точки IN4 і OUT4, наприклад, є різними кінцевими точками, з якими можуть спілкуватися навіть модулі клієнтського ПЗ. Набір кінцевих точок залежить від пристрою, але будь-який пристрій USB обов'язково має двонаправлену кінцеву точку 0 (EP0), через яку здійснюється його загальне керування. Для прикладних цілей використовують кінцеві точки з номерами 1-15 (1-2 для низькошвидкісних пристроїв). Адреса пристрою, номер і напрямок кінцевої точки однозначно ідентифікують приймач або джерело інформації під час обміну хост-контролера з USB-пристроями. Кожна кінцева точка має набір характеристик, що описують тип передачі даних (ізохронні дані, масиви, переривання, керуючі передачі), розмір пакета, вимоги до частоти обслуговування.

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

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

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

Запити, пакети та транзакції

Для передачі або прийому даних клієнтське програмне забезпечення посилає до каналу пакет запиту введення/виводу — IRP (Input/Output Request Packet) і чекає повідомлення про завершення його відпрацювання. Формат IRP визначається реалізацією драйвера USBD у конкретній ОС. В IRP є лише відомості про запит (місце розташування буфера даних в оперативній пам'яті і довжина передачі); від властивостей конкретного поточного підключення (швидкість, допустимий розмір пакета) драйвер пристрою абстрагується. Відпрацювання запиту у вигляді транзакцій на шині USB займається драйвером USBD; при необхідності він розбиває на частини довгі запити (пакети), придатні передачі за одну транзакцію. Транзакція на шині USB - це послідовність обміну пакетами між хостом і ПУ, в ході якої може бути переданий або прийнятий один пакет даних (можливі транзакції, в яких дані не передаються). Відпрацювання запиту вважається завершеним, коли успішно виконуються всі пов'язані з ним транзакції. "Тимчасові труднощі", що зустрічаються при їх виконанні (неготовність до обміну даними), до відома клієнтського драйвера не доводяться - йому залишається тільки чекати завершення обмінів (або виходу по тайм-ауту). Однак, пристрій може сигналізувати про серйозні помилки (відповідь STALL), що призводить до аварійного завершення запиту, про що повідомляється клієнтський драйвер. У цьому випадку відкидаються і всі наступні запити до цього каналу. Відновлення роботи з цим каналом можливе лише після явного повідомлення про обробку помилкової ситуації, яке драйвер пристрою робить за допомогою спеціального запиту (також виклику USBD).

Довготривалі запити розбиваються на транзакції так, щоб використовувати максимальний розмір пакета. Останній пакет із залишком може виявитися коротшим за максимальний розмір. Хост-контролер має засоби виявлення прийому від пристрою «неповноважного» пакета, розмір якого менший за очікуваний. У запиті IRP зазначається, чи слід особливим чином реагувати на цю подію. Особлива реакція може бути двоякою:

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

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

Комунікаційні канали USB поділяються на два типи:

  • потоковий канал (streaming pipe) доставляє дані від кінця каналу до іншого, він завжди однонаправленный. Один і той же номер кінцевої точки може використовуватися для двох різних потокових каналів - введення та виведення. Передача даних у різних потокових каналах один з одним не синхронізована. Це означає, що запити клієнтських драйверів для різних каналів, поставлені в порядку один щодо одного, можуть виконуватися іншому порядку. Запити для одного каналу будуть виконуватися строго у порядку їх надходження; якщо під час виконання будь-якого запиту відбувається серйозна помилка (про це пристрій повідомляє відповіддю STALL), потік зупиняється. Потік може реалізовувати передачі масивів, ізохронні та переривання. Потоки мають дані довільного формату, визначеного розробником пристрою (але не специфікацією USB). У потоках типово використання транзакцій, у яких довжина поля даних відповідає максимальному розміру, допустимому для кінцевої точки. Якщо потрібно поділ потоку на логічні блоки даних, це можна зробити, застосовуючи як ознака кінця блоку укорочені пакети. Якщо виявляється, що блок укладається в цілу кількість пакетів максимального розміру, як роздільник можна використовувати пакети з нульовою довжиною поля даних;
  • канал повідомлень (message pipe ) є двоспрямованим. Надсилання повідомлень у зустрічних напрямках синхронізовано один з одним і суворо впорядковане. На кожне повідомлення протилежна сторона має відповісти підтвердженням його прийому та відпрацювання. Наступне повідомлення не може бути надіслано до обробки попереднього, але при відпрацюванні помилок можливе скидання необслуговуваних повідомлень. Формати повідомлень визначаються специфікацією USB: є набір стандартних повідомлень (запитів та відповідей) та зарезервованих ідентифікаторів повідомлень, формат яких визначається розробником пристрою або інтерфейсу.

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

Канали різняться і за призначенням:

  • основний канал повідомлень (Default pipe, він же Control pipe 0) , власником якого є USBD, використовується для доступу до конфігураційної інформації всіх пристроїв. Цей канал встановлюється з кінцевою нульовою точкою, EP0 (endpoint zero), яка у всіх пристроїв завжди підтримує тільки керуючі передачі;
  • клієнтські канали (Client pipes) власниками яких є драйвери пристроїв. Цими каналами можуть передаватися як потоки, і повідомлення; вони підтримують будь-які типи передач USB (ізохронні, переривання, масиви та керування).

Інтерфейс пристрою, з яким працює клієнтський драйвер, є зв'язуванням клієнтських каналів (pipe's bundle). Для цих каналів драйвери пристроїв є єдиними джерелами та споживачами даних, що передаються.

Власником основних каналів повідомлень всіх пристроїв є USB драйвер (USBD); цими каналами передається інформація конфігурування, управління та стану. Основним каналом повідомлень може користуватися клієнтський драйвер для поточного управління та читання стану пристрою, але опосередковано через USBD. Наприклад, повідомлення, що передаються основним каналом, використовуються драйвером принтера USB для опитування поточного стану (передаються три ознаки у форматі регістру стану LPT-порту: помилка вводу/виводу, принтер вибраний, відсутність паперу).

Хост організує обміни з пристроями згідно зі своїм планом розподілу ресурсів. Для цього хост-контролер циклічно з періодом 1 мс формує кадри (frames), в які вкладаються всі заплановані транзакції (див. малюнок нижче). Кожен кадр починається з посилки пакета-маркера SOF (Start Of Frame), що є синхронізуючим сигналом для ізохронних пристроїв, а також для хабів. Кадри нумеруються послідовно, маркері SOF передаються 11 молодших біт номери кадру. У режимі HS кожен кадр ділиться на 8 мікрокадрів, і пакети SOF передаються початку кожного мікрокадра (з періодом 125 мкс). При цьому у всіх восьми мікрокадра SOF несе один і той же номер кадру; нове значення номера кадру передається у нульовому мікрокадрі. У кожному мікрокадрі може бути виконано кілька транзакцій, їх допустиме число залежить від швидкості, довжини поля даних кожної з них, а також від затримок кабелів, хабів і пристроїв. Усі транзакції кадрів мають бути завершені на початок інтервалу часу EOF (End of Frame). Період (частота) генерації мікрокадрів може трохи змінюватись за допомогою спеціального регістру хост-контролера, що дозволяє підлаштовувати частоту для ізохронних передач.

Кадрування використовується для забезпечення живучості шини. Наприкінці кожного мікрокадра виділяється інтервал часу EOF (End Of Frame), під час якого хаби забороняють передачу до контролера. Якщо хаб виявить, що з якогось порту в цей час ведеться передача даних (до хоста), цей порт вимикається, ізолюючи "болтливий" пристрій, про що інформується USBD.

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

Першу специфікацію (версію 1.0) USB було опубліковано на початку 1996 року, а восени 1998 року з'явилася специфікація 1.1, що виправляє проблеми, виявлені в першій редакції. Навесні 2000 року було опубліковано версію 2.0, у якій передбачалося 40-кратне підвищення пропускної спроможності шини. Так, специфікація 1.0 та 1.1 забезпечує роботу на швидкостях 12 Мбіт/с та 1,5 Мбіт/с, а специфікація 2.0 - на швидкості 480 Мбіт/с. Передбачається зворотна сумісність USB 2.0 з USB 1.х.

Остаточна специфікація USB 3.0 з'явилася у 2008 році. Створенням USB 3.0 займалися компанії Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC і. NXP Semiconductors У специфікації USB 3.0 роз'єми та кабелі оновленого стандарту фізично та функціонально сумісні з USB 2.0. На додаток до чотирьох ліній USB 2.0 до USB 3.0 додається ще чотири лінії зв'язку (дві кручені пари). Нові контакти у роз'ємах USB 3.0 розташовані окремо від старих на іншому контактному ряду. Специфікація USB 3.0 підвищує максимальну швидкість передачі інформації до 4,8 Гбіт/с, таким чином швидкість передачі зростає з 60 Мбайт/с до 600 Мбайт/с і дозволяє передати 1 Тб не за 8-10 годин, а за 40 хвилин-1 година. Версія 3.0 так само може похвалитися збільшеною силою струму з 500 мА до 900 мА, тому користувач може не тільки підживлювати від одного хаба більше пристроїв, але і самі пристрої в багатьох випадках зможуть позбутися окремих блоків живлення.

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

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

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

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

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


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


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

Складові USB

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


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

  • адресація - пристрій повинен відкликатися на призначену йому унікальну адресу і лише на неї;
  • конфігурування - після увімкнення або скидання пристрій повинен надавати нульову адресу для можливості конфігурування його портів;
  • передача даних - пристрій має набір кінцевих точок обміну даними з хостом. Для кінцевих точок, що допускають різні типи передач, після конфігурування доступний лише один із них;
  • керування енергоспоживанням - будь-який пристрій при підключенні не повинен споживати від шини струм, що перевищує 100 мА. При конфігуруванні пристрій заявляє потреби струму, але не більше 500 мА. Якщо хаб не може забезпечити пристрою заявлений струм, пристрій не використовуватиметься;
  • Призупинення - USB-пристрій повинен підтримувати припинення (suspended mode), при якому його струм, що споживається, не перевищує 500 мкА. USB-пристрій повинен автоматично зупинятися при припиненні активності шини;
  • віддалене пробудження - можливість віддаленого пробудження (remote wakeup) дозволяє призупиненому USB-пристрою подати сигнал хосту, який також може перебувати у зупиненому стані. Можливість віддаленого пробудження описується у конфігурації 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-кадромта передається за фіксований часовий інтервал. Оперування командами та блоками даних реалізується за допомогою логічної абстракції, яка називається каналом.Канал є логічним зв'язуванням між хостом і кінцевою точкою зовнішнього пристрою.

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

Потік доставляє дані від кінця каналу до іншого, він завжди односпрямований. Один і той же номер кінцевої точки може використовуватися для двох потокових каналів - введення та виведення. Потік може реалізовувати такі типи обміну: суцільний, ізохронний та переривання. Доставка завжди йде в порядку "першим увійшов - першим вийшов" (FIFO); з погляду 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) даних для кінцевих точок:

  • керуючі передачі (Control Transfers) - використовуються хостом для конфігурування пристрою під час підключення, для керування пристроєм та отримання статусної інформації в процесі роботи. Протокол забезпечує гарантовану доставку таких посилок. Довжина поля даних керуючої посилки не може перевищувати 64 байт на повній швидкості та 8 байт на низькій. Для таких посилок хост гарантовано виділяє 10% смуги пропускання;
  • передачі масивів даних (Bulk Data Transfers) - застосовуються за необхідності забезпечення гарантованої доставки даних від хоста до функції або від функції до хоста, але час доставки не обмежений. Така передача займає всю доступну смугу пропускання шини. Пакети мають поле даних розміром 8, 16, 32 чи 64 байт. Пріоритет у таких передач найнижчий, вони можуть призупинятись при великому завантаженні шини. Дозволяється лише на повній швидкості передачі. Такі посилки використовуються, наприклад, принтерами чи сканерами;
  • передачі по перериванням (Interrupt Transfers) — використовуються у разі, коли потрібно передавати одиночні пакети даних невеликого розміру. Кожен пакет потрібно передати за обмежений час. Операції передачі носять спонтанний характер і повинні обслуговуватися не повільніше, ніж цього вимагає пристрій. Поле даних може містити до 64 байт на повній швидкості та до 8 байт на низькій. Межа часу обслуговування встановлюється в діапазоні 1-255 мс для повної швидкості та 10-255 мс - для низької. Такі передачі використовуються у пристроях введення, таких як миша та клавіатура;
  • ізохронні передачі (Isochronous Transfers) - застосовуються для обміну даними в "реальному часі", коли на кожному часовому інтервалі потрібно передавати певну кількість даних, але доставка інформації не гарантована (передача даних ведеться без повторення при збоях, допускається втрата пакетів). Такі передачі займають попередньо узгоджену частину пропускної спроможності шини та мають задану затримку доставки. Ізохронні передачі зазвичай використовуються в мультимедійних пристроях для передачі аудіо- та відео, наприклад, цифрова передача голосу. Ізохронні передачі поділяються за способом синхронізації кінцевих точок - джерел або одержувачів даних - із системою: розрізняють асинхронний, синхронний та адаптивний класи пристроїв, кожному з яких відповідає свій тип каналу USB.

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

Для шини 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.

Тип USB 2.0Значення контактівКолір дроту

Підключення повношвидкісного пристрою

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

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

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

USB забезпечує обмін даними між хост-комп'ютером та безліччю периферійних пристроїв (ПУ). Відповідно до специфікації USB, пристрої можуть бути хабами, функціями або їх комбінацією. Пристрій-хаб (hub) тільки забезпечує додаткові точки підключення пристроїв до шини. Пристрій-функція (function) USB надає системі додаткові функціональні можливості, наприклад підключення до ISDN, цифровий джойстик, акустичні колонки з цифровим інтерфейсом і т.п. пристроями. Пристрій USB повинен мати інтерфейс USB, що забезпечує повну підтримку протоколу USB, виконання стандартних операцій (конфігурування та скидання) та надання інформації, що описує пристрій. Роботою всієї системи USB управляє хост-контролер (host controller), що є програмно-апаратною підсистемою хост-комп'ютера. Шина дозволяє підключати, конфігурувати, використовувати та вимикати пристрої під час роботи хоста та самих пристроїв. Шина USB є хостцентричною: єдиним провідним пристроєм, який керує обміном, є хост-комп'ютер, а всі приєднані до неї периферійні пристрої виключно ведені. Фізична топологія USB - багатоярусна зірка. Її вершиною є хост-контролер, об'єднаний із кореневим хабом (root hub), як правило, двопортовим. Хаб є пристроєм-розгалужувачем, він може бути джерелом живлення для підключених до нього пристроїв. До кожного порту хаба може безпосередньо підключатись периферійний пристрій або проміжний хаб; шина допускає до 5 рівнів каскадування хабів (крім кореневого). Оскільки комбіновані пристрої містять у собі хаб, їх підключення до хаба 6-го ярусу вже неприпустимо. Кожен проміжний хаб має кілька низхідних (downstream) портів для підключення периферійних пристроїв (або нижчих хабів) і один висхідний (upstream) порт для підключення до кореневого хаба або низхідного порту вищого хаба. Логічна топологія USB - просто зірка: для хостконтролера хаби створюють ілюзію безпосереднього підключення кожного пристрою. На відміну від шин розширення (ISA, PCI, PC Card), де програма взаємодіє з пристроями за допомогою звернень за фізичними адресами осередків пам'яті, портів вводу-виводу, переривання та каналів DMA, взаємодія додатків з пристроями USB виконується лише через програмний інтерфейс. Цей інтерфейс, що забезпечує незалежність звернень до пристроїв, надається системним контролером USB.

На відміну від громіздких дорогих шлейфів паралельних шин AT А і особливо шини SCSI з її різноманітністю роз'ємів та складністю правил підключення, кабельне господарство USB просте та витончене. Кабель USB містить одну екрановану кручену пару з імпедансом 90 Ом для сигнальних ланцюгів і одну неекрановану для подачі живлення (+5 В), допустима довжина сегмента - до 5 м. Для низької швидкості може використовуватися невитий неекранований кабель довжиною до 3 м (він дешевше) . Система кабелів і конекторів USB не дозволяє помилитися при підключенні пристроїв (рис. 13.1, а і б). Для розпізнавання роз'єму USB на корпусі пристрою ставиться стандартне символічне позначення (рис. 13.1, в). Гнізда типу «А» встановлюються тільки на низхідних портах хабів, виделки типу «А» - на шнурах периферійних пристроїв або портів висхідних хабів. Гнізда та виделки типу «В» використовуються тільки для шнурів, що від'єднуються від периферійних пристроїв та висхідних портів хабів (від «дрібних» пристроїв - мишей, клавіатур тощо кабелі, як правило, не від'єднуються). Крім стандартних роз'ємів, показаних на малюнку 19, застосовуються і мініатюрні варіанти (рис. 20, г, д). Хаби та пристрої забезпечують можливість «гарячого» підключення та відключення. Для цього роз'єми забезпечують більш раннє з'єднання і пізніше від'єднання ланцюгів живлення по відношенню до сигнальних, крім того, передбачений протокол сигналізації підключення та відключення пристроїв. Призначення висновків роз'ємів USB наведено у табл. 9, нумерація контактів показано на рис. 20. Всі кабелі USB "прямі" - в них з'єднуються однойменні ланцюги роз'ємів.


Мал. 19. Конектори USB: a – вилка типу «А», б – вилка типу «В», в – символічне позначення

Мал. 20. Гнізда USB: а – типу «А», б – типу «В» стандартне, в, г, д – мініатюрні типу «В»

Таблиця 9. Призначення висновків роз'єму USB

У шині використовується диференціальний спосіб передачі сигналів D+ та D- по двох дротах. Швидкість пристрою, підключеного до конкретного порту, визначається хабом рівнями сигналів на лініях D+ і D-, що зміщуються навантажувальними резисторами приймачів: пристрої з низькою швидкістю «підтягують» до високого рівня лінію D-, з повною - D+. Підключення пристрою HS визначається на етапі обміну конфігураційною інформацією - фізично спочатку пристрій HS повинен підключатися як FS. Передача двома проводами в USB не обмежується диференціальними сигналами. Крім диференціального приймача, кожен пристрій має лінійні приймачі сигналів D+ та D-, а передавачі цих ліній керуються індивідуально. Це дозволяє розрізняти більше двох станів лінії, які використовуються організації апаратного інтерфейсу.

Введення високої швидкості (480 Мбіт/с - всього в 2 рази повільніше, ніж Gigabit Ethernet) вимагає ретельного узгодження приймачів та лінії зв'язку. На цій швидкості може працювати лише кабель з екранованою крученою парою для сигнальних ліній. Для високої швидкості апаратура USB повинна мати додаткові спеціальні приймачі. На відміну від формувачів потенціалу для режимів FS і LS передавачі HS є джерелами струму, орієнтованими на наявність резисторів-термінаторів на обох сигнальних лініях.

Швидкість передачі даних (LS, FS або HS) вибирається розробником периферійного пристрою відповідно до потреб цього пристрою. Реалізація низьких швидкостей для пристрою обходиться дещо дешевше (приймачі простіші, а кабель для LS може бути і неекранованою невитою парою). Якщо в «старій» USB пристрої можна було, не замислюючись, підключати в будь-який вільний порт будь-якого хаба, то USB 2.0 за наявності пристроїв і хабів різних версій з'явилися можливості вибору між оптимальними, неоптимальними і непрацездатними конфігураціями.

Хаби USB 1.1 повинні підтримувати швидкості FS і LS, швидкість підключеного до хабу пристрою визначається автоматично по різниці потенціалів сигнальних ліній. Хаби USB 1.1 під час передачі пакетів є просто повторювачами, що забезпечують прозорий зв'язок периферійного пристрою з контролером. Передачі на низькій швидкості досить марнотратно витрачають потенційну пропускну здатність шини: за той час, на який вони займають шину, високошвидкісний пристрій може передати даних у 8 разів більше. Але заради спрощення та здешевлення всієї системи на ці жертви пішли, а за розподілом смуги між різними пристроями слідкує планувальник транзакцій хост-контролера.

У специфікації 2.0 швидкість 480 Мбіт/с має уживатися з колишніми, але за такому співвідношенні швидкостей обміни на FS і LS «з'їдять» можливу смугу пропускання шини без будь-якого «задоволення» (для користувача). Щоб цього не відбувалося, хаби USB 2.0 набувають рис комутаторів пакетів. Якщо порт такого хаба підключено високошвидкісне пристрій (чи аналогічний хаб), то хаб працює у режимі повторювача, і транзакція з пристроєм на HS займає весь канал до хост-контролера протягом усього свого виконання. Якщо ж до порту хаба USB 2.0 підключається пристрій або хаб 1.1, то щодо каналу до контролера пакет проходить на швидкості HS, запам'ятовується в буфері хаба, а до старого пристрою або хаба йде вже на його «рідній» швидкості FS або LS. При цьому функції контролера і хаба 2.0 (включаючи і кореневий) ускладнюються, оскільки транзакції на FS і LS розщеплюються і між частинами вклинюються високошвидкісні передачі. Від старих (1.1) пристроїв і хабів всі ці тонкощі ховаються, що забезпечує зворотну сумісність. Цілком зрозуміло, що пристрій USB 2.0 зможе реалізувати високу швидкість, тільки якщо по дорозі від нього до хост-контролера (теж 2.0) будуть зустрічатися тільки хаби 2.0. Якщо це правило порушити і між ним та контролером 2.0 виявиться старий хаб, то зв'язок може бути встановлений тільки в режимі FS. Якщо така швидкість пристрій і клієнтське програмне забезпечення влаштує (наприклад, для принтера і сканера це виллється тільки в більший час очікування користувача), то підключений пристрій працюватиме, але з'явиться повідомлення про неоптимальну конфігурацію з'єднань. По можливості її (конфігурацію) слід виправити, щоб перемикання кабелів USB можна виконувати на ходу. Пристрої та ПЗ, критичні до смуги пропускання шини, у неправильній конфігурації працювати відмовляться і категорично вимагатимуть перемикань. Якщо ж хост-контролер старий, всі переваги USB 2.0 виявляться недоступними користувачеві. У цьому випадку доведеться змінювати хост-контролер (міняти системну плату або купувати PCI-картку контролера). Контролер та хаби USB 2.0 дозволяють підвищити сумарну пропускну спроможність шини та для старих пристроїв. Якщо пристрої FS підключати до різних портів хабів USB 2.0 (включаючи і кореневий), то для них сумарна пропускна здатність шини USB зросте в порівнянні з 12 Мбіт/с у стільки разів, скільки використовується портів високошвидкісних хабів.

Хаб є ключовим елементом PnP системи в архітектурі USB. Хаб виконує безліч функцій:

  • забезпечує фізичне підключення пристроїв,

формуючи та сприймаючи

  • сигнали відповідно до специфікації шини на

кожному зі своїх портів;

  • управляє подачею напруги живлення на

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

  • відстежує стан підключених до нього пристроїв,

повідомляючи хост про зміни;

  • виявляє помилки на шині, виконує процедури

відновлення та ізолює несправні сегменти шини;

  • забезпечує зв'язок сегментів шини, що працюють на

різних швидкостях.

Хаб стежить за сигналами, що генеруються пристроями. Несправний пристрій може вчасно «замовчати» (втратити активність) або, навпаки, щось «бурмотати» (babble). Ці ситуації відстежує найближчий до пристрою хаб і забороняє висхідні передачі такого пристрою пізніше, як у межі (мікро)кадра. Завдяки пильності хабів ці ситуації не дозволять несправному пристрою заблокувати всю шину.

Кожен із низхідних (downstream) портів може бути дозволений або заборонений, а також налаштований на високу, повну або обмежену швидкість обміну. Хаби можуть мати світлові індикатори стану низхідних портів, керовані автоматично (логікою хаба) чи програмно (хост-контролером). Індикатор може являти собою пару світлодіодів - зелений і жовтий (бурштиновий) або один світлодіод зі змінним кольором. Стан порту представляється так:

  • не світиться – порт не використовується;
  • зелений – нормальна робота;
  • жовтий – помилка;
  • зелений миготливий - програма вимагає уваги

користувача (Software attention);

  • жовтий миготливий - апаратура вимагає уваги

користувача (Hardware attention).

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

На рис. 13.3 наведено варіант з'єднання пристроїв та хабів, де високошвидкісним пристроєм USB 2.0 є лише телекамера, яка передає відеопотік без компресії. Підключення принтера і сканера USB 1.1 до окремих портів хаба 2.0 та ще й розв'язка їх з аудіопристроями дозволяє їм використовувати смугу шини по 12 Мбіт/с кожному. Таким чином, із загальної смуги 480 Мбіт/с на "старі" пристрої (USB 1.0) виділяється 3×12=36 Мбіт/с. Загалом можна говорити і про смугу в 48 Мбіт/с, оскільки клавіатура і миша підключені до окремого порту хост-контролера USB 2.0, але ці пристрої «освоять» лише малу дещицю з виділених ним 12 Мбіт/с. Звичайно, можна підключати клавіатуру та мишу до порту зовнішнього хаба, але з точки зору підвищення надійності системні пристрої введення краще підключати найкоротшим (за кількістю кабелів, роз'ємів та проміжних пристроїв) способом. Невдалою конфігурацією було б підключення принтера (сканера) до хаба USB 1.1 - під час роботи з аудіопристроями (якщо вони високої якості) швидкість друку (сканування) буде падати. Непрацездатною конфігурацією стало підключення телекамери до порту хаба USB 1.1.

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

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

Пристрій USB повинен підтримувати режим призупинення (suspended mode), в якому його струм, що споживається, не перевищує 500 мкА. Пристрій повинен автоматично зупинятися під час припинення активності шини.

Мал. 21. Приклад конфігурації з'єднань

Можливість віддаленого пробудження (remote wakeup) дозволяє призупиненому пристрою подати сигнал хост-комп'ютеру, який також може перебувати у зупиненому стані. Можливість віддаленого пробудження описується конфігурації пристрою. У разі конфігурації ця функція може бути заборонена.

· Лекція 14. Універсальна послідовна USB шина.

Тлумачний словник за обчислювальними системами визначає поняття інтерфейс (interface) як межу розділу двох систем, пристроїв або програм; елементи з'єднання та допоміжні схеми керування, що використовуються для з'єднання пристроїв. Ми ж поговоримо про інтерфейси, що дозволяють підключати до персональних (і не тільки) комп'ютерів різноманітні периферійні пристрої та їхні контролери. За способом передачі інформації інтерфейси поділяються на паралельні та послідовні. У паралельному інтерфейсі всі біти переданого слова (зазвичай байта) виставляються і передаються по відповідним проводам одночасно паралельно. У PC зазвичай використовується паралельний інтерфейс Centronics, реалізований LPT-портами. У послідовному інтерфейсі біти передаються один за одним, зазвичай по одній лінії. СОМ порти PC забезпечують послідовний інтерфейс відповідно до стандарту RS-232C. При розгляді інтерфейсів важливим параметром є пропускна здатність.

В архітектурі сучасних комп'ютерів все більшого значення набувають зовнішні шини, що служать для підключення різних пристроїв. Сьогодні це можуть бути, наприклад, зовнішні жорсткі диски, CD-, DVD-пристрої, сканери, принтери, цифрові камери та інше.

Широко використовуваний послідовний інтерфейс синхронної та асинхронної передачі даних.

2.Шина USB.Загальна характеристика.

USB(Universal Serial Bus – універсальна послідовна шина) є промисловим стандартом розширення архітектури PC, орієнтованим на інтеграцію з телефонією та пристроями побутової електроніки. Версія 1.0 була опублікована у січні 1996 року. Архітектура USB визначається такими критеріями:

Ø Розширення периферії PC, що легко реалізується.

Ø Дешеве рішення, що підтримує швидкість передачі до 12 M біт/с.

Ø Повна підтримка в реальному часі передачі аудіо та (стислих) відеоданих.

Ø Гнучкість протоколу змішаної передачі ізохронних даних та асинхронних повідомлень.

Ø Інтеграція з пристроями, що випускаються.

Ø Доступність у PC всіх конфігурацій та розмірів.

Ø Забезпечує стандартний інтерфейс, здатний швидко завоювати ринок.

Ø Створення нових класів пристроїв, що розширюють ПК.

Ø З погляду кінцевого користувача, привабливі такі риси USB:

Ø Простота кабельної системи та підключень.

Ø Приховування деталей електричного підключення від кінцевого користувача.

Ø Самоідентифіковані ПУ, автоматичний зв'язок пристроїв з драйверами та конфігурування.

Ø Можливість динамічного підключення та конфігурування ПУ.

З середини 1996 року випускаються PC із вбудованим контролером USB, що реалізується чипсетом. Вже з'явилися модеми, клавіатури, сканери, динаміки та інші пристрої введення/виводу з підтримкою USB, а також моніторів з USB-адаптерами – вони відіграють роль концентраторів для підключення інших пристроїв.

Структура USB

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

Нижче наводиться авторський варіант перекладу термінів зі специфікації "Universal Serial Bus Specification", опублікованої Compaq, DEC, IBM, Intel, Microsoft, NEC та Northern Telecom . Більш детальну та оперативну інформацію можна знайти за адресою:

Пристрої (Device) USB можуть бути хабами, функціями або їх комбінацією. Хаб (Hub) забезпечує додаткові точки підключення пристроїв до шини. Функції (Function) USB надають системі додаткові можливості, наприклад підключення до ISDN, цифровий джойстик, акустичні колонки з цифровим інтерфейсом тощо. Пристрій USB повинен мати інтерфейс USB, що забезпечує повну підтримку протоколу USB, виконання стандартних операцій (конфігурування та скидання) надання інформації, що описує пристрій. Багато пристроїв, що підключаються до USB, мають у собі і хаб, і функції. Роботою всієї системи USB управляє хост-контролер (Host Controller), що є програмно-апаратною підсистемою хост-комп'ютера.

Фізичне з'єднання пристроїв здійснюється за топологією багатоярусної зірки. Центром кожної зірки є хаб, кожен кабельний сегмент з'єднує дві точки - хаб з іншим хабом чи з функцією. У системі є один (і лише один) хост-контролер, розташований у вершині піраміди пристроїв та хабів. Хост-контролер інтегрується з кореневим хабом (Root Hub), що забезпечує одну або кілька точок підключення – портів. Контролер U SB, що входить до складу чіпсетів, зазвичай має вбудований двопортовий хаб. Логічно пристрій, підключений до будь-якого хаба USB і налаштований (див. нижче), може розглядатися як безпосередньо підключений до хост-контролера.

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

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

Прикладами функцій є:

Ø Вказівники - миша, планшет, світло перо.

Ø Пристрої введення – клавіатура або сканер.

Ø Пристрій виведення – принтер, звукові колонки (цифрові).

Ø Телефонний адаптер ISDN.

Хаб – ключовий елемент системи РпР в архітектурі USB. Хаб є кабельним концентратором. Точки підключення називають портами хаба. Кожен хаб перетворює одну точку підключення на їх безліч. Архітектура припускає з'єднання кількох хабів.

Кожен хаб має один висхідний порт (Upstream Port), призначений для підключення до хоста або хаба верхнього рівня. Інші порти є низхідними (Downstream Ports), призначеними для підключення функцій чи хабів нижнього рівня. Хаб може розпізнати підключення пристроїв до портів або відключення від них та керувати подачею живлення на їхні сегменти. Кожен із портів може бути дозволений або заборонений і налаштований на повну або обмежену швидкість обміну. Хаб забезпечує ізоляцію сегментів із низькою швидкістю від високошвидкісних.

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

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

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

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

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

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

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

3. Фізичний інтерфейс

Стандарт USB визначає електричні та механічні специфікації шини. Інформаційні сигнали і напруга живлення 5 В передаються по чотирипровідному кабелю. Використовується диференціальний спосіб передачі сигналів D+ та D- по двох дротах. Рівні сигналів передавачів у статичному режимі повинні бути нижчими за 0,3 В (низький рівень) або вищим за 2,8 В (високий рівень). Приймачі витримують вхідну напругу в межах - 0,5...+3,8 В. Передавачі повинні вміти переходити у високоімпедансний стан для двонаправленої напівдуплексної передачі по одній парі проводів.

Передача двома проводами в USB не обмежується диференціальними сигналами. Крім диференціального приймача, кожен пристрій має лінійні приймачі сигналів D+ і D-, а передавачі цих ліній управляються індивідуально. Це дозволяє розрізняти більше двох станів лінії, які використовуються організації апаратного інтерфейсу. Стани Diff0 і Diff1 визначаються по різниці потенціалів на лініях D+ і D- більше 200 мВ за умови, що на одній з них потенціал вищий за поріг спрацьовування VSE. Стан, у якому обох входах D+ і D- присутній низький рівень, називається лінійним нулем (SEO - Single-Ended Zero). Інтерфейс визначає такі стани:

Ø Data J State і Data До State - стану біта, що передається (або просто J і К), визначаються через стани Diff0 і Diff1.

Ø Idle State - пауза на шині.

Ø Resume State - сигнал "пробудження" для виведення пристрою з "сплячого" режиму.

Ø Start of Packet (SOP) - початок пакета (перехід з Idle State до).

Ø End of Packet (EOP) – кінець пакету .

Ø Disconnect - пристрій вимкнено від порту.

Ø Connect – пристрій підключено до порту.

Ø Reset – скидання пристрою.

Стани визначаються поєднаннями диференціальних та лінійних сигналів; для повної та низької швидкостей стану DiffO та Diff1 мають протилежне призначення.
У декодуванні станів Disconnect, Connect та Reset враховується час знаходження ліній (понад 2,5 мс) у певних станах.

Шина має два режими передачі. Повна швидкість передачі сигналів USB становить 12 Мбіт/с, низька – 1,5 Мбіт/с. Для повної швидкості використовується екранована кручена пара з імпедансом 90 Ом і довжиною сегмента до 5 м, для низької - невитий неекранований кабель до 3 м. Низькошвидкісні кабелі та пристрої дешевше високошвидкісних. Одна й та система може одночасно використовувати обидва режими; перемикання пристроїв здійснюється прозоро.

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

на лініях D+ та D-, що зміщуються навантажувальними резисторами R2 приймачів (див. рис. 7.2 та 7.3)

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

Перетин провідників вибирається відповідно до довжини сегмента для забезпечення гарантованого рівня сигналу та напруги живлення. Стандарт визначає два типи роз'ємів (див. табл. 7.1 та рис. 7.5).

Рознімання типу "А" застосовуються для підключення до хабів (Upstream Connector). Вилки встановлюються на кабелях, що не від'єднуються від пристроїв (наприклад, клавіатура, миша тощо). Гнізда встановлюються на низхідних портах (Downstream Port) хабів. Рознімання типу "В" (Downstream Connector) встановлюються на пристроях, від яких з'єднувальний кабель може від'єднуватися (принтери та сканери). Частина у відповідь (вилка) встановлюється на сполучному кабелі, протилежний кінець якого має вилку типу "А".

Рознімання типів "А" і "В" розрізняються механічно (рис. 7.5), що виключає неприпустимі петлеві з'єднання портів хабів. Чотириконтактні роз'єми мають ключі, що виключають неправильне приєднання. Конструкція роз'ємів забезпечує пізнє з'єднання та раннє від'єднання сигнальних ланцюгів у порівнянні з живильними. Для розпізнавання роз'єму USB на корпусі пристрою встановлюється стандартне символічне позначення.

Мал. 7.5. Гнізда USB: а - типу "А", б - типу "В", - символічне позначення

Живлення пристроїв USB можливе від кабелю (Bus-Powered Devices) або власного блоку живлення (Self-Powered Devices). Хост забезпечує живленням безпосередньо підключені до нього ПУ. Кожен хаб, у свою чергу, забезпечує живлення пристроїв, підключених до його низхідних портів. При деяких обмеженнях топології допускається застосування хабів, які живляться від шини. На рис. 7.6 наведено приклад схеми з'єднання USB.

Тут клавіатура, перо та миша можуть харчуватися від шини.

USB підтримує як односпрямовані, і двоспрямовані режими зв'язку. Передача даних проводиться між хоста і кінцевою точкою пристрою. Пристрій може мати кілька кінцевих точок, зв'язок із кожною з них (канал) встановлюється незалежно.

Архітектура USB допускає чотири базові типи передачі даних:

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

Ø Суцільні передачі (Bulk Data Transfers) порівняно великих пакетів без жорстких вимог на час доставки. Передачі займають усю вільну смугу пропускання шини. Пакети мають поле даних розміром 8, 16, 32 чи 64 байт. Пріоритет цих передач є найнижчим, вони можуть призупинятися при великому завантаженні шини. Дозволяється лише на повній швидкості передачі.

Ø Переривання (Interrupt) - короткі (до 64 байт на повній швидкості, до 8 байт на низькій) передачі типу символів або координат, що вводяться. Переривання мають спонтанний характер і повинні обслуговуватись не повільніше, ніж цього вимагає пристрій. Межа часу обслуговування встановлюється в діапазоні 1-255 мс для повної швидкості та 10-255 мс - для низької.

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

Смуга пропускання шини ділиться між усіма встановленими каналами. Виділена смуга закріплюється за каналом, і якщо встановлення нового каналу вимагає такої смуги, яка не вписується в існуючий розподіл, запит на виділення каналу відкидається.

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

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

Протокол

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

Планування транзакцій забезпечує керування потоковими каналами. На апаратному рівні використання відмови від транзакції (NAck) за неприпустимої інтенсивності передачі оберігає буфери від переповнення зверху та знизу. Маркери відкинутих транзакцій повторно передаються у вільний для шини час. Управління потоками дозволяє гнучко планувати обслуговування одночасних різнорідних потоків даних.

Стійкість до помилок забезпечують такі властивості USB:

Ø Висока якість сигналів, що досягається завдяки диференціальним приймачам/передавачам та екранованим кабелям.

Ø Захист полів керування та даних CRC-кодами.

Ø Виявлення підключення та вимкнення пристроїв та конфігурування ресурсів на системному рівні.

Ø Самовідновлення протоколу з тайм-аутом у разі втрати пакетів.

Ø Управління потоком для забезпечення ізохронності та керування апаратними буферами.

Ø Незалежність функцій від невдалих обмінів коїться з іншими функціями.

Для виявлення помилок передачі кожен пакет має контрольні поля CRC-кодів, що дозволяють виявляти всі поодинокі та подвійні бітові помилки. Апаратні засоби виявляють помилки передачі, а контролер автоматично робить триразову спробу передачі. Якщо повтори безуспішні, повідомлення про помилку надсилається клієнтському ПЗ.

Пристрої USB - функції та хаби

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

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

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

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

Пристрій USB повинен підтримувати припинення (Suspended Mode), в якому його споживаний струм не перевищує 500 мкА. Пристрій повинен автоматично зупинятися під час припинення активності шини.

Можливість віддаленого пробудження (Remote Wakeup) дозволяє призупиненому пристрої подати сигнал хосткомп'ютеру, який також може перебувати у зупиненому стані. Можливість віддаленого пробудження описується конфігурації пристрою. У разі конфігурації ця функція може бути заборонена.

Хаб в USB виконує комутацію сигналів і видачу напруги живлення, а також відстежує стан підключених до нього пристроїв, повідомляючи хост про зміни. Хаб складається з двох частин – контролера (Hub Controller) та повторювача (Hub Repeater). Повтори Повторник є керованим ключем, що з'єднує вихідний порт з вхідним. Він має засоби підтримки скидання та припинення передачі сигналів. Контролер містить регістри для взаємодії з хостом. Доступ до регістрів здійснюється за специфічними командами звернення до хаба. Команди дозволяють конфігурувати хаб, керувати низхідними портами та спостерігати їх стан.

Низхідні (Downstream) порти хабів можуть знаходитися в наступних станах:

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

Ø Disconnected (від'єднаний) - порт не передає сигнали в жодному напрямку, але здатний виявити підключення пристрою (відсутність стану SEO протягом 2,5 мкс). Тоді порт переходить у стан Disabled, а за рівнями вхідних сигналів (DiffO або Diff1 може Idle) він визначає швидкість підключеного пристрою.

Ø Disabled (заборонено) - порт передає лише сигнал скидання (за командою від контролера), сигнали від порту (крім виявлення відключення) не сприймаються. Після виявлення відключення (2,5 мкс стану SEO) порт перетворюється на стан Disconnect, і якщо відключення виявлено " сплячим " хабом, контролеру буде надіслано сигнал Resume.

Ø Enabled (дозволений) - порт передає сигнали в обох напрямках. За командою контролера або виявлення помилки кадру порт перетворюється на стан Disabled, а після виявлення відключення - в стан Disconnect.

Ø Suspended (зупинений) - порт передає сигнал переведення в стан зупинки ("сплячий" режим). Якщо хаб перебуває у активному стані, сигнали через порт не пропускаються у жодному напрямі. Однак "сплячий" хаб сприймає сигнали зміни стану незаборонених портів, подаючи "сигнали, що пробуджують" від активізованого пристрою навіть через ланцюжок "сплячих" хабів. Стан кожного порту ідентифікується контролером хаба з допомогою окремих регістрів. Є загальний регістр, біти якого відбивають факт зміни стану кожного порту (фіксований під час EOF). Це дозволяє хост-контролеру швидко дізнатися про стан хаба, а у разі виявлення змін спеціальними транзакціями уточнити стан.

Хост-контролер

Хост-комп'ютер спілкується із пристроями через контролер. Хост має такі обов'язки:

Ø виявлення підключення та від'єднання пристроїв USB;

Ø маніпулювання потоком управління між пристроями та хостом;

Ø керування потоками даних;

Ø збирання статистики;

Ø забезпечення енергозбереження підключеними ПУ.

Ø Системне ПЗ контролера управляє взаємодією між пристроями та їх ПЗ, що функціонує на хост-комп'ютері, для узгодження:

Ø нумерації та конфігурації пристроїв;

Ø ізохронні передачі даних;

Ø асинхронні передачі даних;

Ø управління енергоспоживанням;

Ø інформації про керування пристроями та шиною.

USB (Universal Serial Bus – універсальна послідовна шина) є промисловим стандартом розширення архітектури PC, орієнтованим на інтеграцію з телефонією та пристроями побутової електроніки. Версія 1.0 була опублікована у січні 1996 року. Архітектура USB визначається такими критеріями:

* Легко реалізований розширення периферії PC.

* Дешеве рішення, яке підтримує швидкість передачі до 12 Мбіт/с.

* Повна підтримка в реальному часі передачі аудіо та (стислих) відеоданих.

* Гнучкість протоколу змішаної передачі ізохронних даних та асинхронних повідомлень.

* Інтеграція з пристроями, що випускаються. ^ Доступність у PC всіх конфігурацій та розмірів.

* Забезпечує стандартний інтерфейс, здатний швидко завоювати ринок.

* Створення нових класів пристроїв, що розширюють PC.

З погляду кінцевого користувача, привабливі такі риси USB:

* Простота кабельної системи та підключень.

* Приховування деталей електричного підключення від кінцевого користувача.

* Самоідентифіковані ПУ, автоматичний зв'язок пристроїв з драйверами та конфігурування.

* Можливість динамічного підключення та конфігурування ПУ.

З середини 1996 року випускаються PC із вбудованим контролером USB, що реалізується чипсетом. Очікується поява модемів, клавіатур, сканерів, динаміків та інших пристроїв введення/виводу з підтримкою USB, а також моніторів з USB-адаптерами - вони будуть грати роль хабів для підключення інших пристроїв.

1.1. Структура USB

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

Нижче наведено авторський варіант перекладу термінів зі специфікації "Universal Serial Bus Specification. Revision I.O.January 15, 1996", опублікованої Compaq, DEC, IBM, Intel, Microsoft, NEC та Northern Telecom. Більш детальну та оперативну інформацію можна знайти за адресою: http://www.usb.org.

Пристрої (Device) USB можуть бути хабами, функціями або їх комбінацією. Хаб(Hub) забезпечує додаткові точки підключення пристроїв до шини. Функції (Function) USB надають системі додаткові можливості, наприклад підключення до ISDN, цифровий джойстик, акустичні колонки з цифровим інтерфейсом і т.п. пристрій. Багато пристроїв, що підключаються до USB, мають у своєму складі і хаб, і функції. Роботою всієї системи USB керує хост-контролер (Host Controller),що є програмно-апаратною підсистемою хост-комп'ютера.

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

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

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

Прикладами функцій є:

^ Покажчики - миша, планшет, світлове перо. ^ Пристрої введення - клавіатура або сканер.

^ Пристрій виведення – принтер, звукові колонки (цифрові).

тТелефонний адаптер ISDN.

Хаб -ключовий елемент системи РПР в архітектурі USB. Хаб є кабельним концентратором. Точки підключення називаються портамихаба. Кожен хаб перетворює одну точку підключення на їх безліч. Архітектура припускає з'єднання кількох хабів.

У кожного хаба є один висхідний порт (Upstream Port),призначений для підключення до хоста чи хаба верхнього рівня. Інші порти є низхідними (Downstream Ports),призначені для підключення функцій або хабів нижнього рівня. Хаб може розпізнати підключення пристроїв до портів або відключення від них та керувати подачею живлення на їхні сегменти. Кожен із портів може бути дозволений або заборонений і налаштований на повну або обмежену швидкість обміну. Хаб забезпечує ізоляцію сегментів із низькою швидкістю від високошвидкісних.

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

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

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

  • Фізичний пристрій USB -пристрій на шині, що виконує функції, що цікавлять кінцевого користувача.
  • Client SW -ПЗ, що відповідає конкретному пристрою, що виконується на хост-комп'ютері. Може бути складовою ОС або спеціальним продуктом.
  • USB System SW -системна підтримка USB, незалежна від конкретних пристроїв та клієнтського програмного забезпечення.
  • USB Host Controller -апаратні та програмні засоби для підключення пристроїв USB до хост-комп'ютера.

Фізичний інтерфейс

Стандарт USB визначає електричні та механічні специфікації шини.

Інформаційні сигнали і напруга живлення 5 В передаються по чотирипровідному кабелю. Використовується диференціальний спосіб передачі сигналів D+ та D- по двох дротах. Рівні сигналів передавачів у статичному режимі повинні бути нижчими за 0,3 В (низький рівень) або вищим за 2,8 В (високий рівень). Приймачі витримують вхідну напругу в межах - 0,5...+3,8 В. Передавачі повинні вміти переходити у високоімпедансний стан для двонаправленої напівдуплексної передачі по одній парі проводів.

Передача двома проводами в USB не обмежується диференціальними сигналами. Крім диференціального приймача, кожен пристрій має лінійні приймачі сигналів D+ і D-, а передавачі цих ліній управляються індивідуально. Це дозволяє розрізняти більше двох станів лінії, які використовуються організації апаратного інтерфейсу. Стану DiffOі Diff1визначаються по різниці потенціалів на лініях D+ і D- більше 200 мВ за умови, що на одній з них потенціал вищий за поріг спрацьовування VSE. Стан, при якому на обох входах D+ та D- присутній низький рівень, називається лінійним нулем (SEO – Single-Ended Zero).Інтерфейс визначає такі стани:

йа DataJ Stateі Data До State -стану передається біта (або просто Jі К),визначаються через стан DiffOі Diff1.

^ Idle State -пауза на шині.

^ Resume State -сигнал "пробудження" для виведення пристрою з "сплячого" режиму.

^ Start of Packet (SOP) -початок пакету (перехід з Idle State в К).

т End of Packet (EOP) -кінець пакета.

^ Disconnect -пристрій вимкнено від порту.

^ Connect -пристрій підключено до порту.

^ Reset -скидання пристрою.

Стани визначаються поєднаннями диференціальних та лінійних сигналів; для повної та низької швидкостей стану DiffOі Diff1мають протилежне призначення. У декодуванні станів Disconnect, Connectі Resetвраховується час знаходження ліній (понад 2,5 мс) у певних станах.

Шина має два режими передачі. Повна швидкістьпередачі сигналів USB становить 12 Мбіт/с, низька - 1,5 Мбіт/с. Для повної швидкості використовується екранована кручена пара з імпедансом 90 Ом і довжиною сегмента до 5 м, для низької - не кручений не екранований кабель до 3 м. Низькошвидкісні кабелі та пристрої дешевше високошвидкісних. Одна й та система може одночасно використовувати обидва режими; перемикання пристроїв здійснюється прозоро. Низька швидкість призначена для роботи з невеликою кількістю ПУ, що не потребує високої швидкості.

Швидкість, використовувана пристроєм, підключеним до конкретного порту, визначається хабом за рівнями сигналів на лініях D+ і D-, що зміщуються резисторами R2 приймачів навантажувальних (див. рис. 7.2 і 7.3).

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

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

Мал. 7.4.Кодування даних за методом NRZI

Стандарт визначає два типи роз'ємів(Див. табл. 7.1 та рис. 7.5).

Контакт Ланцюг Контакт Ланцюг
1 VBus 3 D+
2 D- 4 GND

Рознімання типу "А"застосовуються для підключення до хаб (Upstream Connector).Вилки встановлюються на кабелях, що не від'єднуються від пристроїв (наприклад, клавіатура, миша тощо). Гнізда встановлюються на низхідних портах (Downstream Port)хабів.

Рознімання типу "В" (Downstream Connector)встановлюються на пристроях, від яких з'єднувальний кабель може від'єднуватися (принтери та сканери). Частина у відповідь (вилка) встановлюється на сполучному кабелі, протилежний кінець якого має вилку типу "А".

Рознімання типів "А" і "В" розрізняються механічно (рис. 7.5), що виключає неприпустимі петлеві з'єднання портів хабів. Чотириконтактні роз'єми мають ключі, що виключають неправильне приєднання. Конструкція роз'ємів забезпечує пізнє з'єднання та раннє від'єднання сигнальних ланцюгів у порівнянні з живильними. Для розпізнавання роз'єму USB на корпусі пристрою встановлюється стандартне символічне позначення.

Мал. 7.5.Гнізда USB: а - типу "А", б -типу "В", в - символічне позначення

Живлення пристроїв USB можливо від кабелю (Bus-Powered Devices)або від власного блоку живлення (Self-Powered Devices).Хост забезпечує живленням безпосередньо підключені до нього ПУ. Кожен хаб, у свою чергу, забезпечує живлення пристроїв, підключених до його низхідних портів. При деяких обмеженнях топології допускається застосування хабів, які живляться від шини. На рис. 7.6 наведено приклад схеми з'єднання USB. Тут клавіатура, перо та миша можуть харчуватися від шини.

Модель передачі даних

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

^ необхідною частотою доступу до шини та допустимими затримками обслуговування;

^ необхідною смугою пропускання каналу;

^ номером точки;

^ вимогами до обробки помилок;

^ максимальними розмірами пакетів, що передаються і приймаються;

^ типом обміну;

^ напрямом обміну (для суцільного та ізохронного обмінів).

Кожен пристрій обов'язково має кінцеву точку з номером 0, яка використовується для ініціалізації, загального керування та опитування його стану. Ця точка завжди налаштована при включенні живлення та підключенні пристрою до шини. Воно підтримує передачі типу "управління" (див. далі).

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

Каналом (Pipe) USB називається модель передачі даних між хост-контролером і кінцевою точкою (Endpoint)пристрої. Є два типи каналів: потоки (Stream)та сповіщення (Message). Потікдоставляє дані від кінця каналу до іншого, він завжди однонаправленный. Один і той же номер кінцевої точки може використовуватися для двох потокових каналів - введення та виведення. Потік може реалізовувати такі типи обміну: суцільний, ізохронний та переривання. Доставка завжди йде в порядку "першим увійшов - першим вийшов" (FIFO); з точки зору 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 мс - для низької.

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

Смуга пропускання шини ділиться між усіма встановленими каналами. Виділена смуга закріплюється за каналом, і якщо встановлення нового каналу вимагає такої смуги, яка не вписується в існуючий розподіл, запит на виділення каналу відкидається.

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

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

Протокол

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

Планування транзакцій забезпечує керування потоковими каналами. На апаратному рівні використання відмови від транзакції (NAck)при неприпустимій інтенсивності передачі оберігає буфери від переповнення зверху та знизу. Маркери відкинутих транзакцій повторно передаються у вільний для шини час. Управління потоками дозволяє гнучко планувати обслуговування одночасних різнорідних потоків даних.

Стійкість до помилокзабезпечують такі властивості USB:

^ Висока якість сигналів, що досягається завдяки диференціальним приймачам/передавачам та екранованим кабелям.

^ Захист полів керування та даних CRC-кодами.

^ Виявлення підключення та вимкнення пристроїв та конфігурування ресурсів на системному рівні.

^ Самовідновлення протоколу з тайм-аутом у разі втрати пакетів.

^ Керування потоком для забезпечення ізохронності та керування апаратними буферами.

^ Незалежність функцій від невдалих обмінів коїться з іншими функціями.

Для виявлення помилок передачі кожен пакет має контрольні поля CRC-кодів, що дозволяють виявляти всі поодинокі та подвійні бітові помилки. Апаратні засоби виявляють помилки передачі, а контролер автоматично робить триразову спробу передачі. Якщо повтори безуспішні, повідомлення про помилку надсилається клієнтському ПЗ.

Формати пакетів

Байти передаються по шині послідовно, починаючи з молодшого біта. Усі посилки організовані пакети. Кожен пакет починається з поля синхронізації Sync, яке є послідовністю станів KJKJKJKK(кодовану NRZI), наступну після стану Idle.Останні два біти (КК)є маркером початку пакета SOP, який використовується для ідентифікації першого біта ідентифікатора пакета PID.Ідентифікатор пакета є 4-бітовим полем PID,ідентифікуючим тип пакета (табл. 7.2), за яким як контрольні слідують ті ж 4 біти, але інвертовані.

Тип PID Ім'я PID PID Вміст та призначення
Token OUT 0001 Адреса функції та номер кінцевої точки - маркер транзакції функції
Token IN 1001 Адреса функції та номер кінцевої точки - маркер транзакції хоста
Token SOF 0101 Маркер початку кадру
Token SETUP 1101 Адреса функції та номер кінцевої точки - маркер транзакції з керуючою точкою
Data DataO Datal 0011 1011 Пакети даних з парним та непарним PID чергуються для точної ідентифікації підтверджень
Handshake Ack 0010 Підтвердження безпомилкового прийому пакета
Handshake NAK 1010 Приймач не зміг прийняти або передавач не зміг передати дані. Може використовуватися керувати потоком даних (неготовність). У транзакціях переривань є ознакою відсутності необслужених переривань
Handshake STALL 1110 Кінцева точка вимагає втручання хоста
Special PRE 1100 Преамбула передачі на низькій швидкості

У пакетах-маркерахIN, SETUPі OUTнаступними єадресні поля:7-бітна адреса функції та 4-бітна адреса кінцевої точки. Вони дозволяють адресувати до 127 функцій USB (нульова адреса використовується для конфігурування) та по 16 кінцевих точок у кожній функції.

У пакеті SOF є 11-бітне поле номера кадру (Frame Number Field),послідовно (циклічно), що збільшується для чергового кадру.

Поле данихможе мати розмір від 0 до 1023 байт. Розмір поля залежить від типу передачі та узгоджується під час встановлення каналу.

Поле СКС-колає у всіх маркерах і пакетах даних, воно захищає всі поля пакету, виключаючи PID. CRC для маркерів (5 біт) та даних (11 біт) підраховуються за різними формулами.

Кожна транзакція ініціюється хост-контролером надсиланням маркера і завершується пакетом квитування. Послідовність пакетів у транзакціях ілюструє рис. 7.7.

Хост-контролер організує обміни з пристроями згідно зі своїм планом розподілу ресурсів. Контролер циклічно (з періодом 1 мс) формує кадри (Frames),в які вкладаються усі заплановані транзакції. Кожен кадр починається з посилки маркера SOF (Start Of Frame),який синхронізує сигналом для всіх пристроїв, включаючи хаби. Наприкінці кожного кадру виділяється інтервал часу EOF (End Of Frame),на час якого хаби забороняють передачу до контролера. Кожен кадр має власний номер. Хост-контролер оперує 32-бітовим лічильником, але в маркері SOF передає лише молодші 11 біт. Номер кадру збільшується (циклічно) під час EOF. Хост планує завантаження кадрів так, щоб у них завжди знаходилося місце для транзакцій керування та переривання. Вільний час кадрів може заповнюватись суцільними передачами (Bulk Transfers).

Мал. 7.8.Потік кадрів USB

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

^ синхронізація внутрішнього генератора пристрою з маркерами SOF;

^ підстроювання частоти кадрів під частоту пристрою;

^ узгодження швидкості передачі (прийому) пристрою з частотою кадрів.

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

1.2. Системне конфігурування

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

Усі пристрої підключаються через порти хабів. Хаби визначають підключення та відключення пристроїв до своїх портів та повідомляють стан портів при запиті від контролера. Хост дозволяє роботу порту і адресується до пристрою через канал керування, використовуючи нульова адреса – USB Default Address.При початковому підключенні або після скидання всі пристрої адресуються саме так.

Хост визначає, чи є новий підключений пристрій хабом або функцією, і призначає йому унікальна адреса USB. Хост створює канал управління (Control Pipe) зцим пристроєм, використовуючи призначену адресу та нульовий номер точки призначення.

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

Коли пристрій вимикається, хаб автоматично забороняє відповідний порт і повідомляє про відключення контролера, який видаляє відомості про цей пристрій з усіх структур даних. Якщо вимкнено хаб, процес видалення виконується всім підключених до нього пристроїв. Якщо функція вимикається, повідомлення надсилається заінтересованому ПЗ.

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

1. Хаб, до якого підключився пристрій, інформує хост про зміну стану свого порту відповіддю на опитування стану. З цього моменту пристрій переходить у стан Attached(підключено), а порт, до якого воно підключилося, у стан Заборонено.

2. Хост уточнює стан порту.

3. Дізнавшись порт, до якого підключився новий пристрій, хост дає команду скидання та дозволу порту.

4. Хаб формує сигнал Reset для даного порту (10 мс) і переводить його в стан Enabled.Підключений пристрій може споживати від шини струм живлення до 100 мА. Пристрій переходить у стан Powered(харчування подано), всі його регістри переводяться у вихідний стан, і воно відгукується звернення за нульовим адресою.

5. Поки пристрій не отримає унікальну адресу, він доступний по черговому каналу, яким хост-контролер визначає максимально допустимий розмір поля даних пакета.

6. Хост повідомляє пристрою його унікальну адресу, і воно переводиться в стан Addressed(Адресовано).

7. Хост зчитує конфігурацію пристрою, включаючи заявлений споживаний струм від шини. Зчитування може тривати кілька кадрів.

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

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

1.3. Пристрої USB - функції та хаби

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

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

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

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

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

Пристрій USB повинен підтримувати призупинення (Suspended Mode),в якому його споживаний струм не перевищує 500 мкА. Пристрій повинен автоматично зупинятися під час припинення активності шини.

Можливість віддаленого пробудження (Remote Wakeup)дозволяє призупиненому пристрої подати сигнал хост-комп'ютеру, який також може перебувати у зупиненому стані. Можливість віддаленого пробудження описується конфігурації пристрою. У разі конфігурації ця функція може бути заборонена.

Хабв USB виконує комутацію сигналів і видачу напруги живлення, а також відстежує стан підключених до нього пристроїв, повідомляючи хост про зміни. Хаб складається з двох частин – контролера (Hub Controller)та повторювача (Hub Repeater). Повторювачє керований ключ, що з'єднує вихідний порт з вхідним. Він має засоби підтримки скидання та припинення передачі сигналів. Контролермістить регістри для взаємодії з хостом. Доступ до регістрів здійснюється за специфічними командами звернення до хаба. Команди дозволяють конфігурувати хаб, керувати низхідними портами та спостерігати їх стан.

Східні (Downstream) портихабів можуть перебувати у таких станах:

^ Powered(^(живлення відключено)) - на порт не подається живлення (можливо тільки для хабів, що комутують

живлення). Вихідні буфери перетворюються на високоімпедансний стан, вхідні сигнали ігноруються.

^ Disconnected(від'єднано) - порт не передає сигнали в жодному напрямку, але здатний виявити підключення пристрою (за відсутності стану) SEOпротягом 25 мкс). Тоді порт переходить у стан Disabled,а за рівнями вхідних сигналів (DiffOабо Diff1в стані Idle)він визначає швидкість підключеного пристрою.

s^ Disabled(заборонено) - порт передає лише сигнал скидання (за командою від контролера), сигнали від порту (крім виявлення відключення) не сприймаються. Після виявлення відключення (2,5 мкс стану SEO)порт переходить у стан Disconnect,а якщо відключення виявлено "сплячим" хабом, контролеру буде надіслано сигнал Resume.

ш Enabled(дозволений) - порт передає сигнали в обох напрямках. За командою контролера або виявлення помилки кадру порт перетворюється на стан Disabled,а після виявлення відключення - у стан Disconnect.

^ Suspended(зупинено) - порт передає сигнал переведення у стан зупинки ("сплячий" режим). Якщо хаб перебуває у активному стані, сигнали через порт не пропускаються у жодному напрямі. Однак "сплячий" хаб сприймає сигнали зміни стану незаборонених портів, подаючи "сигнали, що пробуджують" від активізованого пристрою навіть через ланцюжок "сплячих" хабів.

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

1.4. Хост-контролер

Хост-комп'ютер спілкується із пристроями через контролер. Хост має такі обов'язки:

^ виявлення підключення та від'єднання пристроїв USB;

^ маніпулювання потоком управління між пристроями та хостом;

^ управління потоками даних;

^ збір статистики;

^ забезпечення енергозбереження підключеними ПУ.

Системне ПЗ контролера управляє взаємодією між пристроями та їх ПЗ, що функціонує на хост-комп'ютері, для узгодження:

^ нумерації та конфігурації пристроїв;

^ ізохронних передач даних;

^ асинхронних передач даних;

^ управління енергоспоживанням;

^ інформації про керування пристроями та шиною.

По можливості USB використовує існуюче системне ПЗ хост-комп'ютера - наприклад, Advanced Power Management для управління енергоспоживанням.

2. Шина IEEE 1394-FireWire

Стандарт для високопродуктивної послідовної шини (High Performance Serial Bus), який отримав офіційну назву IEEE 1394, було прийнято у 1995 році. Метою було створення шини, яка не поступається сучасним стандартним паралельним шинам, при суттєвому здешевленні та підвищенні зручності підключення (за рахунок переходу на послідовний інтерфейс). Стандарт заснований на шині FireWire,використовується Apple Computer як дешева альтернатива SCSI в комп'ютерах Macintosh і PowerMac. Назва FireWire ("вогняний провід") тепер застосовується і до реалізації IEEE 1394, вона співіснує з коротким позначенням 1394.

Переваги FireWireперед іншими послідовними шинами:

s? Багатофункціональність: шина забезпечує цифровий зв'язок до 63 пристроїв без застосування додаткової апаратури (хабів). Пристрої - цифрові камкодери, сканери, принтери, камери для відеоконференцій, дискові накопичувачі можуть обмінюватися даними не тільки з PC, але і між собою. FireWire за ініціативою VESA позиціонується і для "домашніх мереж".

^ Висока швидкість обміну та ізохронні передачі дозволяють навіть на початковому рівні (100 Мбіт/с) передавати одночасно два канали відео (30 кадрів в секунду) широкомовної якості та стереоаудіосигнал з якістю CD.

s§ Низька ціна компонентів та кабелю.

si Легкість встановлення та використання. FireWire розширює систему РПР. При увімкненні/вимкненні пристрої автоматично розпізнаються та конфігуруються. Живлення від шини (струм до 1,5 А) дозволяє ПУ спілкуватися із системою навіть при відключенні їх живлення. Керувати шиною та іншими пристроями можуть не тільки PC, але й інші інтелектуальні пристрої, наприклад VCR.

2.1. Структура та взаємодія пристроїв шини

Стандарт 1394 визначає дві категорії шин: кабельні шини та крос-шини (Backplane).Під крос-шинамизазвичай маються на увазі паралельні інтерфейси, що поєднують внутрішні підсистеми пристрою, підключеного до кабелю 1394.

На відміну від USB, що управляється одним хост-контролером, стандарт 1394 допускає з'єднання рівноправних пристроїв у мережу. Мережа може складатися з багатьох шин, з'єднаних мостами. В межах однієї шини об'єднуються пристрої з'єднувальними кабелями без застосування додаткових пристроїв. Мостиє спеціальні інтелектуальні пристрої. Інтерфейсна карта шини FireWire для PC являє собою міст PCI - 1394. Містами є також з'єднання кабельної шини 1394 з крос-шинами пристроїв, 16-бітна адресація вузлів мережі кає до 63 пристроїв у кожній шині, адресованих 6-бітовим полем ідентифікатора вузла. 10-бітне поле ідентифікатора шини допускає використання у системі до 1023 мостів, що з'єднують шини різного типу.

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

ssi між будь-якою парою вузлів може бути не більше ніж 16 кабельних сегментів;

^ Довжина сегмента стандартного кабелю не повинна перевищувати 4,5 м;

2Й сумарна довжина кабелю не повинна перевищувати 72 м (застосування якіснішого кабелю дозволяє послабити це обмеження).

Деякі пристрої можуть мати лише один роз'єм, що обмежує можливі варіанти розташування. Стандарт допускає до 27 роз'ємів на одному пристрої.

Мал. 7.9.З'єднання пристроїв на шині FireWire

Мал. 7.10.Роз'єм FireWire

Стандарт передбачає зв'язок вузлів за допомогою 6-провідного кабелю, укладеного у загальний екран. Дві кручені пари використовуються для передачі сигналів (роздільні для приймача та передавача), два дроти задіяні для живлення пристроїв (8-40 В, до 1,5 А). Для гальванічної розв'язки інтерфейсу використовуються трансформатори (напруга ізоляції розв'язки до 500 В) або конденсатори (дешеві пристрої з напругою розв'язки до 60 В щодо загального проводу). Уявлення про роз'єми дає рис. 7.10. Деякі пристрої (камкодери Sony DCR-VX700 та DCR-VX1000, а також DHR-1000 DVCR) мають лише один 4-контактний роз'єм меншого розміру, у якого реалізовані лише сигнальні ланцюги. Ці пристрої підключаються до шини через спеціальний перехідний кабель тільки як кінцеві (хоча можливе застосування спеціальних адаптерів-розгалужувачів).

Стандарт 1394 визначає три можливі частоти передачі сигналів кабелями: 98,304, 196,608 і 393,216 Мбіт/с, які округляють до 100, 200 і 400 Мбіт/с. Частоти у стандарті позначаються як S100, S200і S400відповідно. Побутові пристрої зазвичай підтримують S100,більшість адаптерів допускають S200.До однієї шини можуть підключатися пристрої, розраховані різні швидкості. Обмін відбуватиметься на мінімальній для всіх активних вузлів швидкості. Однак, якщо хост-контролер реалізує карту топології та швидкостей (Topology_Марі Speed_Map),можливе використання кількох частот в одній шині, відповідно до можливостей конкретної пари, що бере участь в обміні.

Система дозволяє динамічне (гаряче) підключення та відключення пристроїв. Ідентифікатори, що підключаються

пристрої призначаються автоматично, без участі користувача. Зміни топології (складу підключених пристроїв) автоматично відстежуються шиною і передаються керуючому.

Протокол IEEE 1394

Протокол 1394 реалізується на трьох рівнях (рис. 7.11).

^ Рівень транзакцій (Transaction Layer)перетворює пакети на дані, що надаються додаткам, і навпаки. Він реалізує протокол запитів-відповідей, що відповідає стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212, редакції 1994 р.), архітектури регістрів управління та стану CSR (Control and Status Register) для мікро-комп'ютерних шин (читання, запис, блокування ). Це полегшує зв'язок шини 1394 зі стандартними паралельними шинами.

^ Рівень зв'язку (Link Layer)з даних фізичного рівня формує пакети та виконує зворотні перетворення. Він забезпечує обмін вузлів датаграмами із підтвердженнями. Рівень відповідає за передачу пакетів та керування ізохронними передачами.

Апаратна частина FireWire зазвичай складається з двох спеціалізованих мікросхем – трансіверів фізичного рівня. PHY Transceiverта мосту зв'язку з шиною LINK Chip.Зв'язок між ними можливий, наприклад, за інтерфейсом IBM-Apple LINK-PHY. Мікросхеми рівня зв'язку виконують усі функції свого рівня та частину функцій рівня транзакцій, решта рівня транзакцій виконуєється програмно.

Конектори

Мал. 7.11.Трирівнева структура FireWire

Управління шиною

Протокол 1394 має гнучкий механізм керування зв'язком між різними пристроями. Для цього не обов'язково присутність на шині PC чи іншого контролера шини. Управління включає три сервіси:

^ Майстер циклів,посилає широкомовні пакети початку циклів (потрібні для ізохронних обмінів).

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

^ Необов'язковий контролер шини (Bus Master) -ним може бути PC або редагуючий DVCR.

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

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

Ізохронне транспортування даних

Ізохронне транспортування шини 1394 забезпечує гарантовану пропускну здатність та обмежену затримку при високошвидкісній передачі по безлічі каналів. Диспетчер ізохронних ресурсів містить регістр BANDWIDTH^AVAILABLE,який визначає доступність частини смуги пропускання, що залишилася, для вузлів з ізохронною передачею. По скидання вузол, що знову з'явився, із ізохронною передачею запитує виділення смуги. Для цифрового відео, наприклад, потрібна смуга 30 Мбіт/с (25 Мбіт/с на відео та 3-4 Мбіт/с на аудіо, синхронізацію та заголовки пакетів). Смуга вимірюється у спеціальних одиницях розподілу, кількість яких у 125-мілісекундному циклі становить 6144. Одиниця займає близько 20 нс, що відповідає часу, необхідному для передачі одного квадлету(Quadlet) на частоті 1600 Мбіт/с. Квадлет(32-бітове слово) є одиницею передачі по шині. 25 мс циклу резервується під асинхронний трафік, тому початкове значення регістру після скидання становить 4915 одиниць. У S100пристрої цифрового відео запитують близько 1800 одиниць, S200 -близько 900. Якщо відповідна смуга недоступна, пристрій, що запитує, буде періодично повторювати запит.

Диспетчер ізохронних ресурсів кожному ізохронному вузлу призначає номер каналу (0-63) з доступних (реєстр

CHANNELS_AVAILABLE).Це ідентифікатор ізохронного пакета. Коли ізохронний обмін стає непотрібним вузлу, він повинен звільнити свою смугу та номер каналу. Обмін інформацією, що управляє, проводиться по асинхронному каналу.

2.2. Синоніми та доповнення стандарту IEEE 1394

Шина IEEE 1394 має безліч псевдонімів:

^ IEEE 1394-1995 Standard for a High Performance Serial Bus - повна назва документа, що описує стандарт, чинний нині.

т FireWire – торгова марка реалізації IEEE-1394 фірмою Apple Computer, Inc.

^ Р1394 - назва попередньої версії IEEE-1394 (до прийняття у грудні 1995 р.).

^ DigitalLink - торгова марка Sony Corporation, що використовується стосовно реалізації IEEE-1394 в цифрових камерах.

ш MultiMedia Connection - ім'я, яке використовується в логотипі 1394 High Performance Serial Bus Trade Association (1394TA).

Оскільки Apple розробляла концепцію FireWire ще з 1986 року, ім'я FireWire є найпоширенішим синонімом IEEE 1394.

Крім основного стандарту IEEE 1394-1995, є кілька його модифікацій:

^ 1394а розглядається як чистовий документ, що заповнює деякі прогалини вихідного стандарту та має невеликі зміни (наприклад, прискорену операцію скидання на шині). Продуктам 1394а забезпечено зворотну сумісність із пристроями, випущеними до прийняття основного стандарту. Версія вводилася підвищення швидкості до 800 Мбіт/с і вище, високошвидкісні версії входять й у 1394Ь.

^ 1394.1 визначає 4-провідний з'єднувач та встановлює стандарт на шинні мости.

1394.2 передбачається як стандарт на з'єднання кластера станцій зі швидкістю обміну 1 Гбіт/с і вище, не-сумісний з 1394. Цей стандарт походить з IEEE 1596 SCI (Scalable Coherent Interface - масштабований когерентний інтерфейс) для суперкомп'ютерів і іноді називається Serial Expressабо SCILite.Сигнальний інтерфейс 1394.2 схожий на FCAL і припускає кільцеву топологію,забороняється стандартом 1394.

2.3. Порівняння FireWire та USB

Послідовні інтерфейси FireWire та USB, маючи спільні риси, є суттєво різними технологіями. Обидві шини забезпечують просте підключення великого числа ПУ (127 для USB та 63 для FireWire), допускаючи комутації та увімкнення/вимкнення пристроїв при працюючій системі. Топологія обох шин досить близька. Хаби USB входять до складу ЦП; для користувача їхня присутність непомітна. Обидві шини мають лінії живлення пристроїв, але допустима потужність для FireWire значно вища. Обидві шини підтримують систему РпР (автоматичне конфігурування при включенні/вимкненні) та знімають проблему дефіциту адрес, каналів DMA та переривань. Розрізняються пропускна здатність та керування шиною.

USBорієнтована на ПУ, що підключаються до ПК. Її ізохронні передачі дозволяють передавати лише цифрові аудіосигнали. Всі передачі управляються централізовано, і PC є необхідним керуючим вузлом, що знаходиться в корені деревоподібної структури шини. З'єднання кількох PC цією шиною не передбачається.

FireWireорієнтована на інтенсивний обмін між будь-якими приєднаними до неї пристроями. Ізохронний трафік дозволяє передавати "живе" відео. Шина не вимагає централізованого керування з боку ПК. Можливе використання шини для об'єднання кількох PC та ПУ в локальну мережу.

Нові пристрої цифрового відео та аудіо мають вбудовані адаптери 1394. Підключення до шини FireWire традиційних аналогових та цифрових пристроїв (плеєрів, камер, моніторів) можливо через адаптери-перетворювачі інтерфейсів та сигналів. Стандартні однотипні кабелі та роз'єми FireWire замінюють безліч різнорідних з'єднань пристроїв побутової електроніки з ПК. p align="justify"> Різнотипні цифрові сигнали мультиплексуються в одну шину. В відНа відміну від мереж Ethernet, високошвидкісні передачі потоків даних FireWire в реальному часі не вимагають додаткових протоколів. Крім того, є засоби арбітражу, які гарантують доступ до шини за певний час. Застосування мостів у мережах FireWire дозволяє ізолювати трафік груп вузлів один від одного.

7.3. Шина ACCESS.Bus та інтерфейс PC

Послідовна шина ACCESS.Bus(Accessory Bus), розроблена фірмою DEC, є шиною взаємодії комп'ютера з його аксесуарами - наприклад, монітором (канал VESA DDC), інтелектуальними джерелами живлення (Smart Battery) і т.п. 500 мА) проводам підключити до 14 пристроїв введення/виводу, довжина шини може досягати 8 м. Апаратною основою є інтерфейс PC, що характеризується простотою реалізації, але навіть у порівнянні з USB низькою продуктивністю. Над апаратним протоколом для шини ACCESS.Bus є базовий програмний протокол, з яким взаємодіють протоколи конкретних підключених пристроїв. Протоколи забезпечують підключення/відключення пристроїв без перезавантаження ОС. Призначення сигналів роз'єму ACCESS.Bus, запропоноване VESA, наведено у табл. 7.3.

Інтерфейс До,розроблений фірмою Philips, у PC з'явився нещодавно і використовується як внутрішня допоміжна шина системної плати для спілкування з енергонезалежною пам'яттю ідентифікації встановлених компонентів (модулем пам'яті DIMM). Шина відрізняється граничною простотою реалізації – дві сигнальні лінії, з якими працюють програмно. За прямим призначенням цю шину застосовує поки що лише BIOS щодо апаратних засобів, але використання перезаписываемой пам'яті конфігурування відкриває нові можливості для прив'язки ПЗ до конкретної системи (точніше, встановленому модулю) і... для вірусів. Спосіб програмного доступу до шини поки що не стандартизований, але за бажання його можна "обчислити", вивчивши документацію на чіпсет.

Мал. 7.12.Протокол передачі PC

Послідовний інтерфейс УСзабезпечує двонаправлену передачу даних між парою пристроїв, використовуючи два сигнали: дані SDA (Serial Data) та синхронізацію SCL (Serial Clock). В обміні беруть участь два пристрої - провідне (Master)і ведене (Slave).Кожне з них може виступати у ролі передавача,поміщає на лінію SDA інформаційні біти, або приймача.Протокол обміну ілюструє рис. 7.12. Синхронізацію задає провідний пристрій – контролер. Лінія даних - двонаправлена ​​з виходом типу "відкритий колектор" - управляється обома пристроями по черзі. Частота обміну (не обов'язково стала) обмежена зверху величиною 100 кГц для стандартного режиму та 400 кГц для швидкісного, що дозволяє організувати програмно-керовану реалізацію контролера інтерфейсу.

Початок будь-якої операції – умова Start -ініціюється переведенням сигналу SDA з високого в низький при високому рівні SCL. Завершується операція переведенням сигналу SDA

з низького рівня у високий при високому рівні SCL - умова Стоп.При передачі даних стан лінії SDA може змінюватися тільки при низькому рівні SCL, біти даних стробуються позитивним перепадом SCL Кожна посилка складається з 8 біт даних, що формуються передавачем (старший біт - MSB - передається першим), після чого передавач на один такт звільняє лінію даних для отримання підтвердження. Приймач під час дев'ятого такту формує нульовий біт підтвердження Ack.Після передачі біта підтвердження приймач може затримати наступну посилку, утримуючи лінію SCL на низькому рівні. Приймач може сповільнити передачу по шині на рівні прийому кожного біта, утримуючи SCL на низькому рівні після його спаду, сформованого передавачем.

Кожен ведений пристрій має свою адресу, розрядність якої за умовчанням становить 7 біт. Адреса Апередається провідним пристроєм в бітах першого байта, біт містить 0 ознака операції Я1У(Я1/У=1 - читання, RW=Q-Запис). 7-бітна адреса містить дві частини: старші 4 біти Анесуть інформацію про тип пристрою (наприклад, для EEPROM - 1010), а молодші 3 біти Авизначають номер пристрою цього типу. Багато мікросхем з інтерфейсом PC мають три адресних входу, комутацією яких на логічні рівні 1 і 0 задається необхідна адреса. Деякі значення повної адреси зарезервовані (табл. 7.4).

Загальний виклик дозволяє пристрої, що включився, заявити про себе широкомовним способом. Байт Startпризначений для привернення уваги процесора до інтерфейсу, якщо у пристрої він організований програмним (не апаратним) методом. До одержання цього байта мікроконтролер пристрою не опитує стан і не слідкує за сигналами інтерфейсу. При використанні 10-бітної адресації біти містять старшу частину адреси, а молодші 8 біт будуть передані в наступному байті, якщо ознака RW=0.

Адреса веденого пристрою та тип звернення задається контролером під час ініціювання обміну. Обмін із пам'яттю ілюструє рис. 7.13. Тут SA – адреса пристрою, DA – адреса даних, D – дані, W – ознака запису (0), R – ознака читання (1).

Мал. 7.13.Обмін із пам'яттю за інтерфейсом PC: a - запис, б - читання з поточної адреси, в -читання з довільної адреси

Виконавши умову Start,контролер передає байт, що містить адресу пристрою та ознаку операції RW,і чекає на підтвердження. При операції записуНаступною посилкою від контролера буде 8-бітна адреса комірки, що записується, а за нею - байт даних (для мікросхем об'ємом пам'яті більше 256 байт адреса комірки посилається двома байтами). Отримавши підтвердження, контролер завершує цикл умовою Stop,а адресований пристрій може розпочати свій внутрішній цикл запису, під час якого не реагує сигнали інтерфейсу. Контролер перевіряє готовність пристрою надсиланням команди запису (байт адреси пристрою) та аналізом біта підтвердження, формуючи потім умовуСтоп.Якщо пристрій відгукнувся бітом підтвердження, він завершив внутрішній цикл і готовий до наступної операції.

Операція зчитуванняініціюється так само, як і запис, але з ознакою RW=\.Можливе читання за заданою адресою, поточною адресою або послідовною. Поточна адреса зберігається у внутрішньому лічильнику веденого пристрою, він містить збільшену на одиницю адресу осередку, що брала участь в останній операції.

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

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

Протокол PC дозволяє кільком контролерам використовувати одну шину, визначаючи колізії та виконуючи арбітраж. Ці функції реалізуються досить просто: якщо два передавачі намагаються встановити на лінії SDA різні

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

Рис.7.14.Підключення пристроїв до контролера

Додаток А. Системотехніка IBM PC-сумісних комп'ютерів

Тут розглянуто взаємодію програм з інтерфейсними адаптерами. Наведено короткі відомості щодо архітектури PC. Описано організацію просторів пам'яті та введення/виводу, систему переривань та прямий доступ до пам'яті. Докладніші відомості можна знайти в книзі "Апаратні засоби IBM PC. Енциклопедія" ("Пітер", 1998).

А.1. Простір пам'яті

Логічна структура пам'яті обумовлена ​​системою адресації процесорів сімейства х86. Процесори 8086/88, що застосовувалися в перших моделях IBM PC, мали адресний простір 1 Мбайт (20 біт адреси шини). Починаючи з процесора 80286, шина адреси була розширена до 24 біт, потім (386DX, 486, Pentium) до 32 і, нарешті, до 36 біт (Pentium Pro, Pentium II). У реальному режимі процесора, який використовується в DOS, формально доступний лише 1 Мбайт пам'яті. Однак через помилку емуляції процесора 8086 в реальному режимі процесори 80286 і вище мають максимально доступну адресу lOFFEFh, що на (64К-16) байт більше. Область lOOOOOOh-lOFFEFh називається високою пам'яттю - High Memory Area (HMA). У неї поміщають частину ОС реального режиму та невеликі резидентні програми. Для повної сумісності з процесором 8086/88 є вентиль лінії А20 шини адреси - GateA20, який пропускає сигнал від процесора, або примусово обнуляє лінію А20 системної шини адреси.