Физика USB как передаются данные по проводу

Как работает usb на физическом уровне

Как работает usb на физическом уровне

USB – не просто кабель, а сложная система передачи данных, работающая на принципах дифференциальной сигнализации и кодирования. В основе лежит стандарт USB 2.0, использующий две пары проводов: D+ и D– для передачи сигналов, а также VBUS (5 В) и GND для питания. Разница напряжений между D+ и D– определяет логический уровень: +200 мВ соответствует логической единице, –200 мВ – нулю. Это позволяет снизить влияние помех и увеличить скорость передачи до 480 Мбит/с.

Для синхронизации данных USB использует NRZI-кодирование (Non-Return-to-Zero Inverted) с битстаффингом. При передаче последовательности из шести единиц подряд вставляется ноль, чтобы избежать потери синхронизации. Декодер на принимающей стороне удаляет эти биты, восстанавливая исходный сигнал. Такая схема требует точной настройки импеданса кабеля – 90 Ом ±15% – иначе возникают отражения сигнала, приводящие к ошибкам.

USB 3.0 и новее добавляют две дополнительные пары проводов для дуплексной передачи, увеличивая пропускную способность до 5 Гбит/с (SuperSpeed). Здесь применяется 8b/10b-кодирование, где каждые 8 бит данных преобразуются в 10-битный символ. Это решает проблему постоянного тока и улучшает обнаружение ошибок. Для стабильной работы критически важна длина кабеля: при скорости 5 Гбит/с максимальная длина не должна превышать 3 метра, иначе затухание сигнала становится недопустимым.

Практическая рекомендация: при проектировании устройств с USB учитывайте емкость и индуктивность проводников. Например, паразитная емкость между D+ и D– не должна превышать 10 пФ/м, иначе фронты сигналов размываются. Для высокоскоростных режимов используйте кабели с экранированием и ферритовыми кольцами на концах – это снижает электромагнитные наводки и улучшает целостность сигнала.

Физика USB: как передаются данные по проводу

Физика USB: как передаются данные по проводу

USB использует дифференциальную передачу сигналов по двум проводам: D+ и D–. Логическая единица кодируется разностью напряжений +0,2 В (D+ выше D–), ноль – −0,2 В (D– выше D+). Стандарт USB 2.0 работает на частоте 480 МГц, обеспечивая скорость до 480 Мбит/с, при этом длина кабеля ограничена 5 м из-за затухания сигнала. Для снижения помех применяется витая пара с импедансом 90 Ом ±15%, а экранирование кабеля минимизирует электромагнитные наводки. При подключении устройства хост определяет его тип по резистору на линии D– (1,5 кОм для низкоскоростных устройств) или D+ (1,5 кОм для полноскоростных).

В USB 3.0 и новее добавлены две дополнительные дифференциальные пары для передачи данных со скоростью до 5 Гбит/с (SuperSpeed) и 10/20 Гбит/с (USB 3.2/4.0). Здесь используется кодирование 8b/10b или 128b/132b, снижающее вероятность ошибок за счет избыточности. Для синхронизации применяется отдельная линия SSRX/SSXT, а питание (5 В) передается по проводам VBUS и GND с током до 900 мА (USB 2.0) или 5 А (USB-C). При проектировании кабелей критически важно соблюдать сечение проводников: 28 AWG для данных и 20–24 AWG для питания, иначе падение напряжения приведет к нестабильной работе устройств.

Какие электрические сигналы используются в USB-кабеле

USB-кабель передает данные с помощью дифференциальных сигналов по двум проводам: D+ и D-. Эти провода работают в паре, формируя разность потенциалов, которая кодирует логические уровни. В стандарте USB 2.0 сигналы представляют собой импульсы напряжения с амплитудой от 0 до 3,3 В, где логическая единица соответствует разности +400 мВ, а ноль – -400 мВ. Такая схема минимизирует влияние электромагнитных помех и обеспечивает устойчивую передачу на скоростях до 480 Мбит/с.

Для питания устройств в USB-кабеле используются провода VBUS (+5 В) и GND. VBUS подает напряжение с допустимым отклонением ±5%, а максимальный ток зависит от версии стандарта: 500 мА для USB 2.0, 900 мА для USB 3.0 и до 5 А для USB Power Delivery. При подключении устройства хост определяет его потребности через резисторы на линиях D+ и D-, что позволяет корректно распределять энергию без перегрузки.

В USB 3.0 и новее добавлены две дополнительные пары проводов для передачи данных: TX+ и TX- (от хоста к устройству) и RX+ и RX- (от устройства к хосту). Эти пары работают в режиме суперскоростной передачи (SuperSpeed) с использованием кодирования 8b/10b и амплитудой сигнала 0,4 В. Частота передачи достигает 5 ГГц, что требует строгого соблюдения импеданса 90 Ом для предотвращения отражений сигнала. Для снижения помех рекомендуется использовать экранированные кабели с витыми парами.

При проектировании USB-систем критически важно учитывать параметры сигналов: время нарастания/спада импульсов (не более 4 нс для USB 2.0), джиттер (менее 100 пс для SuperSpeed) и уровень шума на линиях питания. Для проверки соответствия стандартам используют осциллографы с полосой пропускания не менее 1 ГГц и анализаторы протоколов, такие как Total Phase Beagle или Ellisys USB Explorer. Несоблюдение требований к сигналам приводит к ошибкам передачи, снижению скорости или полному отказу устройства.

Как дифференциальная передача защищает данные от помех

Дифференциальная передача в USB использует пару проводов (D+ и D-) для передачи сигнала в виде разности потенциалов между ними, а не относительно земли. Это позволяет компенсировать синфазные помехи – электромагнитные наводки, которые одинаково воздействуют на оба провода. Например, при уровне сигнала +0,5 В на D+ и -0,5 В на D- разность составит 1 В, а синфазная помеха в 0,2 В на обоих проводах не изменит итоговую разность (0,7 В — (-0,3 В) = 1 В). Такая схема снижает влияние помех на 20–40 дБ по сравнению с однопроводной передачей, что критично для высокоскоростных режимов USB 3.0+ (5 Гбит/с и выше).

Для эффективной работы дифференциальной пары важно соблюдать следующие условия:

  • Сопротивление нагрузки между D+ и D- должно составлять 90 Ом (±10%) – стандартное значение для USB-кабелей. Отклонение приводит к отражениям сигнала и искажениям.
  • Длина пары проводов должна быть одинаковой с точностью до 0,1 мм, иначе возникает рассогласование фаз, снижающее помехоустойчивость.
  • Экранирование кабеля (например, фольгой или оплёткой) обязательно для USB 3.0+, так как при скоростях выше 1 Гбит/с даже малые наводки становятся критичными.

На практике некачественные кабели с нарушенной симметрией пары или отсутствием экрана могут терять до 30% пакетов при передаче на расстояние свыше 3 метров.

Приёмник дифференциального сигнала (например, в контроллере USB) использует компаратор, который реагирует только на разность напряжений между D+ и D-. Порог срабатывания обычно составляет 100–200 мВ, что позволяет игнорировать помехи меньшей амплитуды. В USB 2.0 минимальный дифференциальный сигнал для распознавания логической «1» – 360 мВ, а в USB 3.0 – всего 80 мВ, что требует более точной разводки печатных плат и кабелей. Для диагностики помех рекомендуется использовать осциллограф с дифференциальным пробником или анализатор протокола USB с функцией измерения уровня сигнала.

Почему в USB два провода для данных и как они работают в паре

USB использует дифференциальную передачу сигналов, где два провода – D+ и D- – работают в противофазе. Это не дублирование, а метод подавления помех: приёмник анализирует разность напряжений между линиями, а не абсолютные значения. Стандарт USB 2.0 предусматривает размах сигнала 400 мВ (±200 мВ относительно опорного уровня), что позволяет передавать данные на скоростях до 480 Мбит/с без значительных потерь.

Принцип работы пары D+/D- основан на комплементарности сигналов. Когда на D+ высокий уровень (+200 мВ), на D- – низкий (-200 мВ), и наоборот. Приёмник вычисляет разность: Vdiff = VD+ – VD-. Помехи, воздействующие на оба провода одновременно (синфазные), компенсируются, так как их влияние на разностный сигнал минимально. Это критично для длинных кабелей (до 5 м для USB 2.0), где затухание и наводки неизбежны.

  • USB 1.1 (Low/Full Speed): D+ и D- используют однополярные сигналы с уровнями 0–3,3 В. Для Full Speed (12 Мбит/с) активен D+, для Low Speed (1,5 Мбит/с) – D-. Переключение режима происходит подтягиванием одного из проводов к питанию через резистор 1,5 кОм.
  • USB 2.0 (High Speed): Переход на дифференциальную передачу с уровнями ±200 мВ. Для инициализации High Speed хост посылает специальный сигнал Chirp (последовательность J/K состояний), после чего устройство отвечает аналогичным образом.
  • USB 3.x и выше: Добавляются дополнительные пары для SuperSpeed (TX+/TX-, RX+/RX-), но базовые D+/D- сохраняются для совместимости и управления.

Синхронизация данных в паре D+/D- обеспечивается строгим соблюдением временных интервалов. В USB 2.0 битовый интервал составляет 2,08 нс (480 Мбит/с), а фронты сигналов должны быть симметричны с точностью до 100 пс. Нарушение симметрии приводит к джиттеру и ошибкам декодирования. Для стабилизации сигнала используются согласующие резисторы (27 Ом на концах линий) и ферритовые бусины для подавления высокочастотных помех.

Практическая рекомендация: при проектировании печатных плат для USB-разъёмов расстояние между D+ и D- должно быть минимальным (менее 0,5 мм), а длина проводников – одинаковой. Разница в длине более 1 мм вызывает рассогласование фаз и снижает помехоустойчивость. Для кабелей важна скрутка пары с шагом 1 виток на 10–15 мм – это уменьшает индуктивность и улучшает подавление синфазных помех.

Диагностика проблем с D+/D- включает проверку уровней сигналов осциллографом. В режиме ожидания на одном из проводов должно быть напряжение 3,3 В (подтяжка), а при передаче – дифференциальные импульсы с размахом не менее 300 мВ. Если размах ниже 200 мВ, возможны ошибки CRC или потеря связи. Причиной может быть некачественный кабель, неправильная терминация или наводки от соседних линий питания.

Как кодируются биты в USB: NRZI и бит-стаффинг на практике

USB использует кодирование NRZI (Non-Return-to-Zero Inverted) для передачи данных по проводу. В отличие от классического NRZ, где логическая «1» соответствует высокому уровню сигнала, а «0» – низкому, NRZI инвертирует сигнал только при передаче «0». Это означает, что последовательность бит «111001» в NRZI будет представлена как чередование уровней только на границах «0». Преимущество метода – устойчивость к дрейфу тактовой частоты, так как длинные последовательности «1» не требуют смены уровня, а синхронизация поддерживается за счёт переходов на «0».

Проблема NRZI – отсутствие переходов при длинных последовательностях «1», что может привести к потере синхронизации между передатчиком и приёмником. Для решения этой задачи применяется бит-стаффинг: после шести подряд идущих «1» вставляется принудительный «0». Например, данные «1111111» преобразуются в «11111101». Приёмник удаляет этот «0», восстанавливая исходную последовательность. Бит-стаффинг гарантирует минимум один переход сигнала каждые семь тактов, что достаточно для стабильной работы PLL (Phase-Locked Loop) в приёмнике.

На физическом уровне USB использует дифференциальную пару проводов (D+ и D-), где сигнал кодируется разностью потенциалов. В NRZI логическая «1» соответствует отсутствию изменения уровня на паре, а «0» – инверсии полярности. Например, если D+ был выше D-, то при «0» D- становится выше D+. Это позволяет снизить влияние электромагнитных помех, так как шум воздействует на оба провода одинаково и компенсируется при вычитании сигналов. Для Full-Speed (12 Мбит/с) амплитуда дифференциального сигнала составляет 0,8–2,5 В, а для Low-Speed (1,5 Мбит/с) – 2,8–3,6 В.

Приёмник USB анализирует не только полярность, но и длительность импульсов. Если после шести «1» не обнаруживается вставленный «0», это интерпретируется как конец пакета (EOP). EOP состоит из двух битовых интервалов с низким уровнем на обоих проводах (SE0) и одного интервала с высоким уровнем на D+ (J-состояние). Это позволяет чётко отделить пакеты друг от друга. Ошибка в бит-стаффинге приводит к потере синхронизации и повторной передаче данных, поэтому контроллеры USB строго следят за соблюдением правила шести «1».

Для тестирования кодирования NRZI и бит-стаффинга можно использовать логический анализатор с поддержкой декодирования USB. Подключите его к линиям D+ и D- и настройте триггер на последовательность из шести «1». Анализатор должен зафиксировать вставленный «0» и корректное восстановление данных. Пример сигнала: последовательность «1111110» (с бит-стаффингом) должна декодироваться как «1111111». Если анализатор показывает пропуск «0», проверьте настройки тактовой частоты и целостность кабеля – джиттер или затухание сигнала могут искажать фронты.

При разработке устройств на базе USB учитывайте, что бит-стаффинг увеличивает нагрузку на контроллер. Например, при передаче данных с высокой энтропией (например, сжатых файлов) вероятность появления шести «1» подряд выше, что приводит к частой вставке «0» и снижению эффективной скорости передачи. Для оптимизации используйте алгоритмы, минимизирующие длинные последовательности «1», например, скремблирование данных перед отправкой. В микроконтроллерах с аппаратной поддержкой USB (например, STM32 или PIC32) бит-стаффинг реализуется автоматически, но в программных реализациях (bit-banging) его нужно эмулировать вручную, что требует точного расчёта таймингов.

Что происходит на физическом уровне при подключении устройства

Что происходит на физическом уровне при подключении устройства

После обнаружения хост подаёт питание на шину: 5 В с током до 500 мА (USB 2.0) или 900 мА (USB 3.0). Устройство должно немедленно перейти в состояние *Powered*, где потребление тока ограничено 100 мА до завершения процесса инициализации. Если устройство не укладывается в эти рамки, хост может отключить питание. Для устройств с высоким энергопотреблением (например, внешние HDD) критически важно соблюдать спецификацию *USB Power Delivery*, где ток может достигать 5 А при напряжении до 20 В.

Следующий этап – *сброс шины* (*USB Reset*). Хост удерживает обе линии D+ и D- на низком уровне (ниже 0,3 В) в течение не менее 10 мс. Это переводит устройство в режим *Default*, где оно готово принимать команды по адресу 0. Сброс очищает внутренние регистры контроллера USB и синхронизирует тактовые генераторы хоста и устройства. Нестабильный сигнал сброса – частая причина ошибок инициализации, особенно при использовании некачественных кабелей или длинных проводов (более 5 м для USB 2.0).

После сброса хост отправляет запрос *Get Descriptor* для получения дескриптора устройства. Устройство отвечает 8-байтовым пакетом, содержащим идентификаторы *Vendor ID* (VID) и *Product ID* (PID), версию USB и максимальный размер пакета. Если ответ не получен в течение 50 мс, хост повторяет запрос до трёх раз, после чего отключает устройство. Для отладки рекомендуется использовать анализаторы протокола (например, Total Phase Beagle) или логирование через *USBPcap* в Wireshark – это позволяет выявить задержки в ответах или искажения сигнала.

Завершающий шаг – *конфигурирование* устройства. Хост назначает ему уникальный адрес (1–127) и загружает дескрипторы конфигурации, интерфейсов и конечных точек. Устройство переходит в состояние *Configured*, где может использовать заявленные ресурсы (например, изохронные каналы для аудио или bulk-конечные точки для массовой передачи). На этом этапе критически важна синхронизация тактовых сигналов: расхождение частот хоста и устройства более чем на 0,25% приводит к ошибкам CRC и повторным передачам. Для минимизации проблем рекомендуется использовать кварцевые резонаторы с точностью не хуже ±50 ppm.

Ссылка на основную публикацию