Дивлячись на штифти USB 3.0 ємностей, я бачу, що існують окремі пари передачі та прийому, однак для USB 2.0 є лише одна контактна пара "даних". Як USB 2.0 гарантує, що пристрої не спілкуються одночасно?
Дивлячись на штифти USB 3.0 ємностей, я бачу, що існують окремі пари передачі та прийому, однак для USB 2.0 є лише одна контактна пара "даних". Як USB 2.0 гарантує, що пристрої не спілкуються одночасно?
Відповіді:
USB суворо-ведучий. Пристрій не передає, якщо господар не каже йому передавати.
Навіть так званий режим «переривання» справді опитується: наприклад, кожні 8 мілісекунд (або менше, якщо у вас є геймерська миша), ПК запитує мишу «яке ваше становище», а миша відповідає.
Те саме, якщо у вас є, наприклад, USB-послідовний інтерфейс. Коли інтерфейс отримує дані по послідовної лінії, він не передаватиме їх на ПК. Натомість він зачекає, коли ПК ініціює транзакцію та запитає дані.
На цій веб-сторінці є гарне пояснення щодо пакетів, які обмінюються. В основному, майте на увазі, що USB був реалізований для того, щоб дозволити найдешевшій та найдешевшій периферійній пристрої функціонувати, а це означає, що більша частина інтелекту знаходиться в хості, хості usb-контролері, ОС та драйверах. Це дуже очевидно при читанні специфікації.
Firewire (наприклад) має зовсім іншу філософію, він набагато потужніший, він є багатопроменевим, тому пристрої можуть спілкуватися один з одним без допомоги хоста / майстра. Насправді вона набагато наближається до своєї філософії до чогось подібного токенового кільця з ізохронними передачами, ляпаними зверху, ніж до USB. Однак "мультимайстер" означає, що йому потрібен потужний мікроконтролер у пристроях, який працює зі складним стеком програмного забезпечення. Тому вона дорожча і, таким чином, обмежується дорогими продуктами, такими як відеокамери та корпуси для швидкого жорсткого диска. Миша firewire не має сенсу, це було б занадто дорого. Це одна з причин, чому FireWire вийшов з ладу.
У USB-пристроях не можна одночасно спілкуватися, оскільки вони "розмовляють" лише тоді, коли USB-хост "дозволяє" їм спілкуватися. А хост USB дозволяє іншому пристрою "говорити" лише тоді, коли протокол послідовних транзакцій із першим пристроєм завершено. А USB-пристрої не мають ніяких засобів самостійно «розмовляти», в USB немає активного механізму переривання. Коротше кажучи, механізм реалізації цієї дисципліни такий.
Після підключення пристроїв USB 2.0 хост перелічує їх, присвоюючи унікальні адреси кожному пристрою.
Кожну транзакцію в шині ініціює USB-хост.
Заголовки кожної транзакції USB містять певну адресу пристрою. Навіть коли транзакції транслюються по всьому дереву USB (на конкретному екземплярі хост-контролера), лише пристрій з узгодженою адресою буде відповідати на транзакцію і приймати дані, або відповідати даними.
Потім посилання "партнери" надішле підтвердження в напрямку того, хто успішно отримує дані. Вся транзакція слідує встановленому протоколу з визначеною послідовністю лексем, тайм-аутів та кодами виправлення помилок, щоб забезпечити цілісність транзакції.
Усі інші пристрої просто слухають і ігнорують трафік, який не спрямований на них.
Ось про це, це "напівдуплексний" інтерфейс.