Зачем нам буферизировать сигнал USB, если кабель длиннее 5 м?
Это из-за падения напряжения сигнала?
Это потому, что он управляет токами?
Скорость передачи имеет значение, поскольку USB является полудуплексным: для передачи ответа шина должна быть развернута и данные переданы в другом направлении. Таким образом, хост отправляет данные и ждет подтверждения или ответа. Все переводы контролируются хостом. Затем у устройства есть определенное (довольно короткое) время для ответа. Это время примерно равно времени, затраченному на два прохождения сигнала по 5-метровому кабелю.
(Я не могу найти ссылки прямо сейчас, но соответствующие документы спецификации общедоступны)
Редактировать: спасибо psmears за то, что нашли этот раздел
Кабели и решения для дальней связи
- Почему существуют ограничения по длине кабеля и каковы они?
О: Длина кабеля была ограничена задержкой кабеля в 26 нс, чтобы обеспечить стабилизацию отражений в передатчике до того, как будет отправлен следующий бит. Так как USB использует оконечную нагрузку источника и драйверы режима напряжения, это должно иметь место, иначе отражения могут накапливаться и разрушать драйвер. Это не означает, что линейное напряжение полностью установилось к концу разряда; с наихудшим недотерминированием. Однако к концу долота было достаточно демпфирования, чтобы амплитуда отражения уменьшилась до приемлемого уровня. Длина низкоскоростного кабеля была ограничена 18 нс, чтобы эффекты линии передачи не влияли на низкоскоростные сигналы.
- Я хочу построить кабель длиннее 5 метров, почему это не сработает?
О: Даже если вы нарушите спецификацию, это буквально не продвинет вас далеко. Предполагая наихудшее время задержки, полноскоростное устройство в нижней части 5 концентраторов и кабелей имеет запас времени ожидания 280 пс. Уменьшение этого поля до 0 пс даст вам только дополнительные 5 см, что вряд ли стоит заморачиваться.
Так что мой ответ верен только наполовину: ограничение на поездку туда и обратно для наихудшего случая цепочки узлов и кабелей при общей глубине 25 м.
Дэн Нили также прав в том, что USB всегда считался самым дешевым решением для «медленных» периферийных устройств, таких как клавиатуры, мыши, принтеры и т. д. Если вам нужен полный дуплекс для большей скорости и большего расстояния, 100baseT ethernet — естественный выбор.
См. эту страницу, https://superuser.com/questions/64744/maximum-length-of-a-usb-cable .
Q1: Какой длины кабель я могу использовать для подключения моего устройства? A1: На практике спецификация USB ограничивает длину кабеля между полноскоростными устройствами до 5 метров (чуть менее 16 футов 5 дюймов). Для низкоскоростного устройства ограничение составляет 3 метра (9 футов 10 дюймов).
Q2: Почему я не могу использовать кабель длиннее 3 или 5 м? A2: Электрическая конструкция USB не позволяет этого. При разработке USB было принято решение обработать распространение электромагнитных полей по линиям передачи данных USB таким образом, чтобы максимальная длина кабеля USB была ограничена чем-то в диапазоне 4 м. Этот метод имеет ряд преимуществ, и, поскольку USB предназначен для среды рабочего стола, ограничения диапазона были сочтены приемлемыми. Если вы знакомы с теорией линий передачи и хотите получить более подробную информацию по этой теме, загляните в раздел USB-сигналов часто задаваемых вопросов разработчиков.
На самом деле невозможно «буферизировать» USB, по крайней мере, в обычном смысле этого слова. Как правило, буферизация означает электрическое усиление и, возможно, регенерацию сигнала.
При использовании USB хост управляет всей шиной. Хост отправляет запрос, и устройство должно дать хосту ответ. Начало ответа должно поступить на хост через определенное время после завершения передачи запроса. При слишком длинном кабеле задержка распространения слишком велика, чтобы ответ вовремя достиг хоста.
Таким образом, есть обходные пути, и ни один из них не предполагает простой «буферизации», поскольку буферизация добавляет дополнительные задержки, и нам нужно как-то сделать хост более терпимым к более длительной задержке.
Существует два класса обходных путей:
Обходные пути, которые вставляют физические или виртуальные концентраторы. Если хост перечисляет концентратор на шине, сам концентратор добавляет дополнительную задержку, и между концентратором и хостом есть еще один потенциально полноразмерный кабель. Любые запросы устройств, которые подключаются ниже по течению от концентратора, планируются с дополнительными задержками.
Вы можете вставить однопортовый концентратор через каждые 4 м кабеля, до 7 концентраторов последовательно. Ограничение составляет 7 уровней концентраторов от хоста до конечного устройства, поэтому, если перед вашей штуковиной есть какие-либо концентраторы, вам необходимо соответственно уменьшить количество концентраторов. Многие хосты USB включают в себя одноуровневый внутренний концентратор, поэтому реалистичным ограничением будет кабель длиной 28 м с 6 концентраторами последовательно. Все концентраторы, кроме первого, должны будут притворяться автономными.
Вы можете добавить виртуальные концентраторы с более мощным приемопередатчиком с предыскажением прямо к штекеру, который входит в хост, а затем передавать USB-трафик по более длинному кабелю. Пока сигналы, полученные устройством на конце такого удлиненного кабеля, находятся в пределах спецификации, и пока ваш приемник может восстановить данные, отправленные стандартным устройством по длинному кабелю, все будет в порядке. Виртуальные концентраторы добавляются, чтобы хост допускал длительную задержку, но, конечно, физических концентраторов нет, а только их олицетворение.
Обходные пути, эмулирующие устройство, которое кажется «медленным» на более высоком уровне протокола. Вот как работают некоторые USB-удлинители Cat-5. Здесь пять партнеров: реальный хост (rHost), эмулируемое устройство, которое он видит (eDev), длинный кабель, эмулируемый хост (eHost) и устройства, которые его видят на дальнем конце кабеля (rDev). .
Сначала eDev делает вид, что его нет. В какой-то момент eHost видит, что был подключен rDev. Он перечисляет его и пересылает данные в eDev. Затем eDev эмулирует событие подключаемого модуля, а rHost перечисляет его. rHost считает, что видит rDev, но это всего лишь eDev, притворяющийся. Точно так же rDev думает, что видит rHost, но это только eHost, притворяющийся.
В конце концов, rHost хочет выполнить некоторые передачи на rDev, который, по его мнению, находится там, чтобы использовать его. Для передачи IN eDev делает вид, что не имеет данных (отвечает NAK). Запрос на передачу пересылается на eHost, который повторно выполняет его с помощью rDev. Результаты этого пересылаются обратно в eDev, который использует результаты при следующей попытке хоста выполнить передачу.
Для передачи OUT eDev должен угадать, каким будет поведение rDev. Здесь можно попробовать различные эвристики и модели поведения. Один из способов для eDev — всегда получать данные и отвечать ACK. Передача пересылается на eHost, который затем воспроизводит передачу на rDev. В идеале rDev в конечном итоге будет потреблять данные и подтверждать их. Если это не удается, или если rDev отвечает STALL, лучшее, что может сделать eDev, — это действовать таким образом при следующей передаче от хоста. В качестве альтернативы, eDev всегда может отменить передачу, обычно правильно предполагая, что хост просто повторит попытку идентичной передачи позже. Несмотря на то, что первоначальная передача была NAK-ed, она перенаправляется на eHost, который затем выполняет передачу с помощью rDev. Каким бы ни был ответ rDev, он становится ответом eDev, как только узнает об этом.
Реалистичные реализации начнутся с консервативной эвристики, предполагающей полное обращение к rDev для всех передач, которые могут быть отложены NAK. По мере того, как передачи продолжаются, ожидаемое поведение rDev может быть изучено, и eDev может стать менее консервативным. «Расширитель» может использовать знания о стандартных классах USB, а также некоторые сведения о классах/устройствах/черных/белых списках, специфичных для производителя, для повышения производительности.
Большинство схем передачи данных по кабелю имеют достойный международно признанный стандарт, описывающий, как их реализовать, включая спецификацию «характеристического импеданса» кабеля (подумайте об этом как о сопротивлении, но относится к переменному току), согласующем импедансе ( «сопротивление» в конце соединения, которое необходимо, чтобы избежать отражений вашего сигнала, отражающегося обратно по кабелю обратно к отправителю), часто заданная «скорость нарастания» (время, необходимое сигналу (ам) для перехода от 0-состояние в 1-состояние или наоборот), и, следовательно, максимальное количество переходов между 0/1 в секунду (т. вещи перестают работать правильно.
По сравнению с USB, RS232 имеет все характеристики по типу кабеля, характеристическому импедансу, скорости нарастания, длине кабеля, типу разъема. Конечно, 25-контактные и 9-контактные разъемы «D» были обычным явлением, но на самом деле RS232 был разработан для всех видов разъемов, кабелей и продуктов без каких-либо реальных спецификаций, говорящих иначе. На практике с RS232 вы обычно можете преодолевать большие расстояния, снижая скорость передачи битов в секунду (также называемую «бод»). Максимальное расстояние, которое вы можете достичь, также будет в значительной степени определяться импедансом вашего кабеля, независимо от того, экранирован он или нет, заделка на конце и так далее.
и сравнивая RS232 с USB, вы сравниваете «стандарт» 1960-х годов, который в значительной степени превышал 115k2 (за редкими исключениями), со стандартом 1990-х и 2000-х годов, который начинался со скорости 1,5 Мбит/с, что на порядок быстрее, затем 12 Мбит/с (почти в 100 раз быстрее), затем 480 Мбит/с (почти в 5000 раз быстрее), но это означало, что параметры кабеля и его длина играли важную роль в обеспечении надежной работы . Он был разработан как стандарт подключения к периферийным устройствам для настольных ПК, поэтому 5 м считались приемлемыми, а затем все параметры кабелей, разъемов и скоростей были установлены с этой точки. Если бы был способ заставить USB работать медленнее, вы, вероятно, могли бы заставить его работать на более длинных кабелях (без повторителя).
мишник