Как работает USB. Как работает usb это материал о шине usb
Скачать 3.82 Mb.
|
Как работает USB Это материал о шине USB – последовательном интерфейсе для передачи данных, которым в наши дни чуть ли не каждый день пользуется практически любой человек. Подробно разберем: • физические параметры • его версии • способы кодирования информации • протоколы обмена История появленияUSB USB был разработан уже чуть ли не в середине 90-х пошлого столетия, но фактически широкое распространение получил только в начале 2000-х. Инициатором внедрения стандарта выступили компании IBM, Compaq, Intel, Micsoft, NEC и Noetel, учредившие для этой цели коммерческий фонд под названием USB-IF, что расшифровывается как «Форум по внедрению USB» Необходимость в новом интерфейсе назрела давно, хотя в компьютерах тех лет уже было несколько стандартных типов портов, которые более-менее заменяли USB до его появления. Так чем же прежние порты не устраивали пользователей? Ответ прост. Прежде всего, большая их часть изначально создавалась под конкретные устройства. Например, порт клавиатуры вообще не был рассчитан на подключение чего-либо иного, а учитывая то, что в компьютере он был единственным, использовать его не по назначению было невозможно в принципе. Другой порт – LPT, что расшифровывается как Line Print Terminal – изначально был разработан только для подключения печатающих устройств. Интерфейс этот был 8-битным и параллельным, то есть для передачи данных, каждый байт поочередно выставлялся на линиях D0-D7 в двоичном виде. Для синхронизации передающей и принимающей сторон, байт сопровождался тактовым импульсом на выходе STROBE. Т.е., если надо напечатать на принтере, например, слово PRIVET, компьютер выдаст на порт вот такой поток данных. В прежние годы LPT был весьма популярен у радиолюбителей, так как к нему можно было подключить, например, транзисторные ключи с исполнительными устройствами, или ЦАП на резисторах. и Кто помнит, тот знает – было такое устройство, называлось оно COVOX, и по бедноте 90-х многие его использовали как заменитель звуковой карты. Недостатков LPT порт имел множество. Во-первых, в нем не было никакой гальванической развязки: его линии данных представляли собой обычные TTL выходы, поэтому, подключать к нему что- либо на горячую было нельзя. Во-вторых, на нем не было питания, и если оно требовалось, приходилось использовать внешний источник, либо запитываться от порта клавиатуры. В-третьих, LPT не был рассчитан на побайтное считывание данных. На нем присутствовал ряд входных сигналов и их можно было как-то использовать, но на практике применять это для подключения серийно выпускаемых устройств никто не решался. Другим очень популярным портом –долгие годы являлся COM-порт – последовательная двунаправленная шина, реализованная на базе популярного протокола RS-232. Физически он использовал уже экзотический в наши дни интерфейс под названием «токовая петля», суть которого упрощенно сводилась к тому, что нули и единички кодировались не напряжением, как обычно, а силой тока, что позволяло увеличить максимально допустимую длину кабеля. Для реализации этого, схема, обрабатывающая функции RS-232 на самой плате, питалась от двухполярного источника +/-12в. Именно поэтому во всех блоках питания ATX и по сей день наблюдаем выход -12в. В некотором смысле COM-порт был прародителем USB. Поскольку отличался гораздо большей универсальностью, чем LPT, и предусматривал подключение самых разных устройств, среди которых были мыши, модемы, графопостроители, а также всевозможные внешние устройства: станки с ЧПУ, измерительные и медицинские приборы, и даже фотолаборатории. Данные через COM-порт передавались в последовательной форме, то есть каждый байт информации разбивался на биты, которые транслировались по шине поочередно. При этом, порт мог одновременно передавать и получать данные, для этого он имел две самостоятельные физические линии – RX и TX. Синхронизация же осуществлялась программным путем при помощи так называемых стоп-битов. RS-232 успешно дожил и до наших дней, его широко используют в сфере микроконтроллеров, т.к. в силу его огромной популярности, библиотеки его поддержки написаны практически для всех платформ, существующих в природе. Сегодня, чаще всего применяют упрощенную его версию, где вместо токовой петли используют обычные TTL. Пример – последовательный порт платы Ардуино. Поэтому, если вам в руки попадется какое-то интересное старенькое железо, вроде советского графопостроителя, для подключения его к Ардуино вам потребуется конвертор уровней. COM-порт, между тем, также не имел контактов для питания внешних устройств, и разработчикам приходилось выдумывать всякие хитрости, например, использовать дополнительные сигналы порта, соединяя их вместе для увеличения силы тока. Вторым громадным недостатком COM что, видимо, и спровоцировало появление USB. Была низкая скорость передачи данных, недостаточная для работы даже принтера. В итоге, перед разработчиками была поставлена задача: USB также должен был поддерживать Plug-n-Play, то есть, механизм автораспознавания устройств и работать с ними в реальном времени. При этом, разработать предстояло не только сам протокол обмена данными, но физическую конструкцию разъёмов, так как популярные на тот момент коннекторы серии DB не отвечали задачам и идеологии USB. Одной из важнейших базовых особенностей стандарта является то, что не предусматривает соединения двух равноправных устройств. В любом USB подключении всегда есть Master и Slave, что можно перевести примерно, как Главный и Подчиненный. Вместо слова Master иногда используется термин Host – Хозяин. Стандарт также не предусматривает подключение двух и более устройств в параллель; если такое потребуется, используются специальные активные разветвители, известные как USB хабы. Роль Главного выполняет компьютер. Подчиненными же являются принтер, сканер, USB-флешка, Bluetooth адаптер, USB-клавиатура и тд, и тп. Поскольку такая идеология взаимодействия была положена в основу стандарта USB изначально, это отразилось и на физической конструкции соединителей. Разъём кабеля, который подключается к компьютеру, носит название USB-A, а разъём, подключаемый к устройству, называется USB-B. При этом USB разъёмы сконструированы таким, что при вставке первым замыкается общий провод, а затем уже все остальные. Изначально USB-B выглядел вот так. В таком виде, в принципе, он дожил и до наших дней. Встретить его можно в принтерах, звуковых картах, MIDI-клавиатурах, внешних жёстких дисках, а также в хорошо известной нам плате Арудино. Когда интерфейс USB добрался до мобильных устройств, возникла необходимость в разработке более компактного разъёма. Им стал Mini-USB. Сегодня он встречается значительно реже, в основном в автонавигаторах и видеорегистраторах. Наконец, когда устройства стали ещё компактнее, появился разъём Micro- USB. Интересно, что многие производители мобильных телефонов, для USB соединения продолжали использовать собственные, разработанные для более старых моделей разъёмы. Особенно отличились на этом поприще китайские вендоры, которые, устанавливая экзотические нестандартные разъёмы. В добавок ещё и меняли их цоколёвку от модели к модели: думаю, многие помнят так называемый «китайский айфон». Разумеется, всё это доставляло огромные неудобства пользователям. Обратите внимание, что Mini-USB и Micro-USB тоже являются разновидностями разъёма USB-B, и их правильное полное название USB Mini-B и USB Micro- B. Все они полностью совместимы друг с другом по сигналам и отличаются только формой и габаритами. На данный момент существует 4 версии протокола USB. Все они имеют обратную совместимость друг с другом, т.е. в гнездо более поздней версии можно вставить устройство более ранней версии. При этом наиболее распространённой на сегодня является версия 2.0 – её поддерживает абсолютное большинство USB устройств во всём мире. К слову, 13-й айфон, который является последним на данный момент, также поддерживает только USB. Совместимость устройств обеспечивается не только на физическом, но и на логическом уровне, что означает, что устройство корректно запитается и установит соединение с компьютером. Такая совместимость обеспечивается наличием 4-х базовых линий, которые присутствуют абсолютно в любом USB порту, начиная с самой первой его версии. Перед вами схема стандартного USB кабеля. Минусовая, общая шина питания, как обычно, имеет обозначение GND, в кабеле ей соответствует чёрный провод. Вторая линия питания - VBUS - это +5в, цвет провода красный. Две оставшиеся линии – D+ и D- отвечают за передачу данных, цвета – зелёный и белый соответственно, выполнены в виде витой пары. У USB кабеля также имеется оплётка – экран, предназначенный для защиты от помех. Он подключается к металлической рамке разъёмов, а со стороны компьютера заземляется. К сожалению, на практике полагаться на цвета проводов нельзя; если вы что- то мастерите из остатков старого USB, обязательно прозванивайте его мальтиметром. Встречаются китайские кабели, которые корректно работали, но при этом чёрный и красный провода были перепутаны внутри. Запомнить цоколёвку разъёма USB-A очень просто. Есди вы держите его вот таким образом слева у вас будет шина GND, далее D+ (запомните сначала “плюс”!), затем D-, и наконец, +5v. Так же имейте ввиду, что в USB устройствах металлическая рамка может быть подключена к линии GND? Что следует учесть при прозвонке. Уже понятно что вся USB магия происходит на линиях D+ и D-. Каким образом USB устройства обмениваются информацией? Самое главное, что надо уяснить: USB - это интерфейс с одной информационной линией, что означает, что приём и передача информации могут проходить только поочерёдно Два сигнальных провода физически выполненные в виде витой пары, передают один и тот же информационный сигнал, и представляют собой так называемое симметричное или балансное подключение, распространённое в связи и профессиональном звуке. Симметричное подключение Для чего же оно нужно и как оно работает? Для начала. Чем симметричная линия отличается от несимметричной? Очень просто. Перед нами две схемы. В обеих роль источника сигнала играет аккумулятор BAT1, роль принимающей стороны - вольтметр BM1. Мы умышленно использовали в этом примере источник постоянного тока, т.к. цифровой сигнал в USB кабеле - это, по сути, тоже, постоянные уровни, которые с течением времени сменяют друг друга. Различие схем, на первых взгляд, несущественно, однако, если приглядеться, можно заметить, что в симметричной схеме минусовая линия подключена к оплётке и заземлена, то есть оплётка, по сути, является одним из проводников кабеля. В симметричном же варианте оплётка тоже заземлена, однако, она не не соединяется ни с одним из сигнальных проводов, и они как бы, равнозначны между собой. Благодаря этому, кстати, соединение получило название симметричного, или балансного. Теперь представим, что наши кабели оказались в зоне действия помехи. Что будет происходить в этом случае? Провода кабелей окажутся под действием магнитного поля, в результате чего в них возникает явление электромагнитной индукции, то есть появится ЭДС, которая внесёт искажения в полезный сигнал. Описанное явление, по сути дела, и называется помехой. Если рассуждать о сути протекающих в кабеле физических процессов, можно сказать, что кабель в этой ситуации ведёт себя подобно обмотке трансформатора, которая, под воздействием магнитного поля сердечника, также вырабатывает ЭДС. А значит для того, чтобы смоделировать ситуацию воздействия помехи на кабель, достаточно заменить его провода трансформаторами. Выглядеть это будет примерно так… Обратите внимание, что в симметричной схеме трансформаторы оказались в цепи обоих проводников, а в несимметричной – только в цепи плюса. Почему? Разве помеха не воздействует на экран кабеля? Воздействует, но в очень незначительной степени, потому что он заземлён. А иногда, если соединить, например, компьютер и принтер, заземление может быть подключено даже с обеих сторон USB кабеля. Полезный сигнал, обычно при помощи инвертора, транслируется в противофазе – плюс аккумулятора, минус аккумулятора. Помеха – хоть емкостная, хоть электромагнитная – воздействует синфазно, то есть с одинаковой фазой и в одинаковой полярности на оба проводника. На выходе схемы устанавливается дифференциальный усилитель, попросту говоря, узел, вычитающий напряжение одного сигнального проводника из напряжения другого. В результате, если полезный сигнал, имеет на двух проводниках потенциал +2 и -2 вольта соответственно, результатом вычисления будет число 4. Помеха же, имеющая потенциал +3 и -3 вольта, то есть, одинаковый на обоих проводниках, будет иметь результирующее значение, равное нулю. При этом, что ЭДС помехи вырабатывается в обеих сигнальных линиях, это никак не заметно на принимающей стороне. Если передавать цифровой сигнал – нули и единички, они точно так же, без искажений достигали своей цели, невзирая на наличие синфазной помехи. Именно такую методичку передачи сигнала и использует стандарт USB. При этом состоянию логической единицы соответствует высокий уровень линии D+ и низкий D-. Логический же ноль кодируется противоположным состояниями. Для того, чтобы всё это работало эффективно, провода так же должны быть физически симметричны внутри кабеля. Самый простой способ обеспечить симметрию при производстве – это их сплести. Поэтому сигнальные линии балансных кабелей свитают в пару. Следует отметить, что в компьютеростроении симметричные линии передачи данных стали очень популярны. Они используются, например, в шине PCI-E. Этим, кстати, объясняется, почему в качестве удлинителей райзеров применяют именно USB кабели. Точно так же балансное подключение используется м в компьютерных сетях. К слову, из витой пары FTP получаются отличные USB кабели. Из FTP можно было бы изготовить и кабели для райзеров, снабдив их разъёмами RJ45: это намного удобнее для фермостроения, чем USB, т.к. их можно отрезать по месту, либо просто использовать готовые патч-коды. Но почему-то никто этого до сих пор не осуществил. Точно так же кабель UTP и FTP можно использовать и для изготовления профессиональных аудио-кабелей. Итак, основной смысл витой пары в эффективной защите от помех. Но логическая линия обмена данными при этом в USB кабеле всего одна. Для сравнения, в порту LPT их было целых 8 штук. Как же компьютер обменивается информацией с USB устройством, используя шину данных, состоящую всего из одного бита? Как следует из аббревиатуры названия, USB – последовательная шина. В компьютерах этот способ передачи данных используется давно. Его очевидные плюсы – снижение издержек при производстве, уменьшение количества выводов, да и в целом, существенное упрощение схемотехники всего узла обмена данными. Итак, устройство вставлено и подтягивающий резистор обнаружен. Первое, что делает после этого хост, это устанавливает низкий уровень на обеих линиях данных. Но D+ и D- всегда имеют противоположное состояние, т.к. это симметричная линия. Всё верно нестандартное, как бы неправильное состояние линий, используется для того, чтобы сигнализировать устройству, что Хост отправляет на него сигнал Сброс – RESET, и оно обязательно привести себя в некое начальное состояние готовности к работе. Дождавшись от устройства подтверждения выполнения этой команды. Хост отправляет свой самый первый запрос, целью которого является узнать максимальный размер пакета, который поддерживается устройством. Под пакетом а программировании понимают некий блок информации фиксированного размера. Сама по себе идея пакетов родилась вполне естественным образом: и компьютерная память, и устройства хранения информации организованы в виде страниц и секторов, поэтому и обращаться к ним удобно именно таким способом. В телекоммуникационных устройствах размер пакета связан с объёмом буферной памяти и скоростью обработки информации процессором самого устройства. Поэтому такой запрос от USB хоста выглядит очень естественно. Получив ответ, Хост повторно инициализирует устройство. К системе можно подключить несколько USB устройств, а если использовать разветвители, в теории, до 127 устройств. Каким образом Хост будет их различать, а устройства будут знать, что он обращается именно к ним? Для этого в протоколе USB предусмотрена адресация. На момент вставки в порт абсолютно все USB устройства обязаны откликаться на адрес 0. Между тем, после получения информации о размере пакета, Хост назначает устройству уже индивидуальный адрес – по факту, это просто случайное число, которое, пока устройство вставлено в конкретный порт, закреплено за ним. Разумеется, разным устройствам Хост присваивает разные адреса. Теперь, когда USB устройство инициализировано и имеет уникальный адрес, Хост активно начинает с ним общаться, пытаясь получить максимум информации. Он запрашивает Наименование устройства, его класс и версию, уникальный идентификатор, присвоенный производителем, серийный номер, итд. На этом этапе устройство инициализировано, но не сконфигурировано и может отвечать только на простейшие стандартные запросы. Получив всю информацию, Хост, ориентируясь на параметры Vendorld и Deviceld запускает необходимый для работы устройств драйвер. Если устройство вставлено впервые, разумеется, пользователю предлагается установить этот драйвер. Vendorld и Deviceld – это уникальные идентификаторы, которыми обладают абсолютно все устройства, не обязательно USB, например те же видеокарты. И именно на них ориентируется Windows когда сообщает, что драйвер не установлен либо не подходит. Итак, управление передаётся драйверу, который отправляет на устройство команду Установки конфигурации. После получения подтверждения, устройство считается сконфигурированным и готово к работе. При этом, что стандарт USB 2.0 предусматривает только одну линию передачи данных, он поддерживает режим Full-duplex? Что означает, что данные могут передаваться и приниматься одновременно. В буквальном смысле, конечно, это невозможно. Однако, в цифровых линиях передачи данных, уже много лет используется методика, позволяющая эмулировать этот функционал. Идея состоит в том, что канал данных с большой скоростью и с фиксированным интервалом переключается между режимом приёма и передачи, тем самым, создавая для конечного пользователя два независимых виртуальных канала, создающих иллюзию дуплекса. В случае USB, переключение происходит с периодом в 1 мс. Аналогичная методика используется в сотовой связи: оба абонента могут говорить и слышать друг друга одновременно, при этом физический канал связи между ними один. Интересно, что стандарт USB 2.0 изначально включал функцию OTG – или On-the-Go, что предусматривает использование некоторых изначально ведомых устройств, например, смартфонов, в качестве Хоста. Для этого в устройство достаточно вставить специальный переходник OTG, в результате, к смартфону можно подключить мышь, клавиатуру, флешку или даже принтер. Естественно, OTG устройство будет и питать нагрузку. Например, в сети есть ролик где к смартфону подключают 5-дюмовый USB дисковод. К сожалению, при таком соединении разъём будет занят и большинство устройств не сможет заряжаться. Зато, они смогу заряжать друг друга. Рассмотрена работа USB 2.0. Но на смену пришёл USB 3 версии. В чём его основные отличия? Порты, кабели и устройства 3-й версии можно опознать по синему цвету разъёмов. Однако, физически они, как минимум со стороны А, казалось бы, не изменились. На самом деле это не так. Главное отличие USB 3.0 в значительно более высокой скорости передачи информации, что достигается добавлением в кабель двух дополнительных симметричных витых пар, одна из которых, при этом, отвечает за передачу, а вторая – за получение данных. В принципе, никаких фундаментальных изменений стандарт не претерпел, единственно, разработчики сделали вполне разумный и ожидаемый ход: а именно, физически отделили передающую и принимающую линии друг от друга. Естественно, прежняя линия данных – зелёно-белая пара – здесь также присутствует для сохранения обратной совместимости с более старым оборудованием. Разъёмы же со стороны В были доработаны и теперь выглядят так… При этом, гнёзда В по-прежнему могут принимать разъёмы В более старых версий. Последним обновлением 3-й версии стал стандарт USB 3.2, его приняли в 2017 г. Ключевым его пунктом стало появление разъёма USB Type- C, который был призван заменить и USB-Mini и USB-Micro, при этом обеспечивая соединение со скоростью USB 3. Это самый прогрессивный разъём на сегодня, который, в том числе, может выполнять роль и USB-A – он уже присутствует на многих материнских платах Разъём USB Type-C знаменит тем, что может вставляться в устройство любой стороной. Достигается это благодаря зеркальному дублированию всех сигнальных линий, в силу чего количество контактов его достигает 24-х. При этом все устройства, поддерживающие такое соединение также обязаны иметь двойной набор сигналов, поскольку заранее не известно, какой стороной пользователь подключит разъём. Стандарт USB 3, предусматривает также повышение зарядного напряжения выше 5в – естественно, по согласованию с устройством. И наконец в августе 2019 года был анонсирован USB 4. Нововведения ошеломляют. Помимо поддержки уже очевидного USB-C и стандарта Power Delivery, 4-я версия протокола будет поддерживать тунеллирование DisplayPort и PCI Express. Это означает, что скорость порта будет настолько высока, что к нему можно будет подключать монитор, а – через райзеры – платы расширения. Заявленная скорость обмена составляет 40 Gbit/s. В принципе, с таким быстродействием USB сможет конкурировать с Ethernet и впоследствии вытеснить его. |