Szybkość transmisji ma znaczenie, ponieważ USB jest półdupleks: aby przesłać odpowiedź, magistrala musi zostać odwrócona, a dane przesłane w innym kierunku. Tak więc host wysyła dane i czeka na potwierdzenie lub odpowiedź. Wszystkie transfery są kontrolowane przez hosta. Następnie urządzenie ma pewien (dość krótki) czas na odpowiedź. Jest to mniej więcej czas potrzebny na dwie wyłączenia sygnału wzdłuż kabla o długości 5 m.
(W tej chwili nie mogę znaleźć referencji, ale odpowiednie dokumenty specyfikacji są publiczne)
Dlaczego istnieją ograniczenia długości kabli i jakie są?
Odp .: Długość kabla była ograniczona specyfikacją opóźnienia kabla wynoszącą 26ns, aby umożliwić odbicia osiadające na nadajniku przed wysłaniem następnego bitu. Ponieważ USB wykorzystuje sterowniki terminacji źródła i trybu napięciowego, musi tak być, w przeciwnym razie odbicia mogą gromadzić się i wysadzić sterownik. Nie oznacza to, że napięcie sieciowe w pełni ustabilizowało się do końca bitu; z najgorszym przypadkiem nieterminacji. Jednak pod koniec bitów było wystarczające tłumienie, że amplituda odbicia została zredukowana do możliwych do opanowania poziomów. Długość kabla niskiej prędkości została ograniczona do 18ns, aby zapobiec wpływom linii przesyłowej na sygnały o niskiej prędkości.
Chcę zbudować kabel dłuższy niż 5 metrów, dlaczego to nie zadziała?
Odp .: Nawet jeśli naruszysz specyfikację, to dosłownie nie zaprowadzi cię daleko. Zakładając czasy najgorszego przypadku, urządzenie o pełnej prędkości na dole 5 koncentratorów i kabli ma margines limitu czasu wynoszący 280 ps. Zmniejszenie tego marginesu do 0ps dałoby ci tylko dodatkowe 5 cm, co nie jest warte kłopotu.
Więc moja odpowiedź jest tylko w połowie słuszna: limit podróży w obie strony dotyczy najgorszego łańcucha piast i kabli, na całkowitej głębokości 25 m.
Dan Neely ma również rację, że USB zawsze miało być najtańszym rozwiązaniem dla „wolnych” urządzeń peryferyjnych, takich jak klawiatury, myszy, drukarki itp. Jeśli chcesz mieć pełny dupleks dla większej prędkości i większej odległości, Ethernet 100baseT jest naturalnym wyborem.
kapelusz to taki, który tworzy 20-metrowy kabel USB. co by się stało? mówisz, że napięcie się nie zmienia, a prędkość ma znaczenie. co się dzieje w przypadku kabla o długości 20 m i USB nie działa?
user16307
2
Host wysyła żądanie, nie otrzymuje odpowiedzi na czas i nie może wyliczyć urządzenia na drugim końcu.
pjc50
4
Jesteś tego pewien? Zgodnie ze specyfikacją USB opóźnienie propagacji sygnału wzdłuż kabla musi wynosić <26ns (tabela 7-9), więc sygnał zajmuje mniej niż 5,2 ns / m w standardowym kablu 5m. Limit opóźnienia w obie strony wynosi około 1,5 μs. Przy tej prędkości sygnał ma dużo czasu na pokonanie kabla o długości> 100 m. Forum implementatorów USB podaje inny powód ograniczenia 5m.
psmears
Czy istnieje jakiś powód, dla którego USB 1.0-2.0 ma być półdupleksowy zamiast pełnego dupleksu od pierwszego dnia (jak USB 3.0)? Innymi słowy, czy jest jakaś praktyczna przewaga połowy nad pełnym dupleksem?
tigrou
1
@tigrou szerzej USB1 obejmował proste opcje wszędzie tam, gdzie mógł, ponieważ musiał być na tyle tani, aby mógł konkurować z portami RS232 / PS2 / LPT / gier. Przez lata krzem stał się znacznie tańszy; ale cena wyższa niż minimalna, aby była „wystarczająco dobra” dla docelowych aplikacji, spowodowała zabicie FireWire przez USB2; i Thunderbolt coraz bardziej wydaje się martwy.
P1: Jak długo kabla mogę użyć do podłączenia urządzenia? A1: W praktyce specyfikacja USB ogranicza długość kabla między urządzeniami o pełnej prędkości do 5 metrów (nieco poniżej 16 stóp i 5 cali). W przypadku urządzenia o niskiej prędkości limit wynosi 3 metry (9 stóp 10 cali).
P2: Dlaczego nie mogę użyć kabla dłuższego niż 3 lub 5 m? A2: Konstrukcja elektryczna USB na to nie pozwala. Kiedy zaprojektowano USB, podjęto decyzję o obsłudze propagacji pól elektromagnetycznych na liniach danych USB w sposób, który ograniczył maksymalną długość kabla USB do czegoś w zakresie 4m. Ta metoda ma wiele zalet, a ponieważ USB jest przeznaczony do środowiska stacjonarnego, ograniczenia zasięgu uznano za dopuszczalne. Jeśli znasz teorię linii transmisyjnych i chcesz uzyskać więcej szczegółów na ten temat, zapoznaj się z sekcją Sygnały USB w FAQ dla programistów.
Może to być dla ciebie mgliste, ale nie ma łatwego sposobu na wyjaśnienie teorii sygnałów w pomieszczeniu, na które pozwala ten format.
Wouter van Ooijen
5
Myślę, że ta odpowiedź wskazuje na pewne powody, dla których istnieją ograniczenia. Przeszukiwanie tych obszarów jest dość łatwe poprzez wyszukiwanie w sieci. Na przykład teoria linii przesyłowych. Dlatego opublikowałem tę odpowiedź.
Mattias Johansson
1
Rzadko głosuję za odrzuceniem, więc czuję się zmuszony to uzasadnić. W przeciwieństwie do komentarza Woutera van Ooijena, naprawdę nie wydaje mi się, aby ta odpowiedź była bardziej konkretna niż możliwa sugestia przeszukania „ograniczenia długości kabla USB”. Ponadto odpowiedź, do której się odwołujesz, zawiera martwy link, więc jej sugestia do dalszego czytania nie jest nawet tak przydatna. Gdybyś znalazł poprawne oryginalne źródło i zacytował to, podobnie jak psmears i pjc50, byłaby to inna sprawa - ponieważ tak naprawdę zawiera szczegółowe informacje na temat tego, dlaczego to ograniczenie istnieje.
Oleksandr R.
5
Naprawdę nie jest możliwe buforowanie USB, przynajmniej w zwykłym tego słowa znaczeniu. Zazwyczaj buforowanie oznacza wzmocnienie elektryczne i być może regenerację sygnału.
Dzięki USB host obsługuje całą magistralę. Host wysyła żądanie, a urządzenie musi wysłać odpowiedź do hosta. Początek odpowiedzi musi dotrzeć do hosta w pewnym momencie po zakończeniu przesyłania żądania. Przy zbyt długim kablu opóźnienie propagacji jest zbyt długie, aby reakcja dotarła do hosta na czas.
Istnieją więc obejścia i żadne z nich nie obejmuje prostego „buforowania”, ponieważ buforowanie to powoduje dodatkowe opóźnienia, a my musimy jakoś uczynić host bardziej tolerancyjnym na dłuższe opóźnienia.
Istnieją dwie klasy obejść:
Obejścia, które wstawiają fizyczne lub wirtualne koncentratory. Jeśli host wylicza koncentrator w magistrali, sam koncentrator dodaje dodatkowe opóźnienie, a między koncentratorem a hostem znajduje się inny potencjalnie pełnej długości kabel. Wszelkie żądania dotyczące urządzeń podłączanych poniżej koncentratora są planowane z dodatkowymi opóźnieniami.
Można wstawić koncentrator jednoportowy co 4 m kabla, z maksymalnie 7 koncentratorami połączonymi szeregowo. Ograniczeniem jest 7 poziomów koncentratorów od hosta do urządzenia końcowego, więc jeśli istnieją jakieś koncentratory przed urządzeniem, należy odpowiednio zmniejszyć liczbę koncentratorów. Wiele hostów USB ma wewnętrzny koncentrator jednopoziomowy, więc realistyczny limit wynosiłby 28 m kabla z 6 koncentratorami połączonymi szeregowo. Wszystkie huby oprócz pierwszego będą musiały udawać, że są samozasilające.
Możesz dodać wirtualne koncentratory z bardziej zaawansowanym transceiverem ze wstępnym naciskiem bezpośrednio na wtyczkę, która trafia do hosta, a następnie przesyłać ruch USB dłuższym kablem. Tak długo, jak sygnały odbierane przez urządzenie na końcu takiego przedłużonego kabla mieszczą się w zakresie specyfikacji i tak długo, jak odbiornik może odzyskać dane wysyłane przez standardowe urządzenie za pomocą długiego kabla, wszystko będzie w porządku. Wirtualne koncentratory są dodawane, dzięki czemu host pozwala na duże opóźnienie - ale oczywiście nie ma fizycznych koncentratorów, tylko ich personifikacja.
Obejścia, które emulują urządzenie, które wydaje się „wolne” na wyższym poziomie protokołu. Tak działają niektóre „przedłużacze” USB Cat-5. Jest tu pięciu partnerów: prawdziwy host (rHost), emulowane urządzenie widziane przez niego (eDev), długi kabel, emulowany host (eHost) i urządzenia, które widzą go na drugim końcu kabla (rDev) .
Początkowo eDev udaje, że go nie ma. W pewnym momencie eHost widzi, że rDev został podłączony. Wylicza go i przesyła dane do eDev. EDev następnie emuluje zdarzenie wtyczki, a rHost je wylicza. RHost uważa, że widzi rDev, ale jest tam tylko eDev, udając. Podobnie rDev myśli, że widzi rHost, ale to tylko eHost jest tam, udając.
W końcu rHost chce przekazać pewne transfery do rDev, który według niego istnieje, aby z niego skorzystać. W przypadku przelewów IN eDev udaje, że nie ma danych (odpowiada NAK). Żądanie przeniesienia jest przekazywane do eHost, który ponownie wykonuje je za pomocą rDev. Wyniki tego są przekazywane z powrotem do eDev, który wykorzystuje wyniki przy następnej próbie transferu przez hosta.
W przypadku przelewów OUT eDev musi zgadywać, jakie byłoby zachowanie rDev. Można tu spróbować różnych heurystyk i zachowań. Jednym ze sposobów jest, aby eDev zawsze odbierał dane i odpowiadał za pomocą ACK. Transfer jest przekazywany do eHost, który następnie odtwarza transfer do rDev. W idealnym przypadku rDev ostatecznie zużyje dane i potwierdzi je. Jeśli to się nie powiedzie, lub jeśli rDev odpowie STALL, najlepiej eDev może to zrobić w ten sposób przy następnym transferze z hosta. Alternatywnie, eDev zawsze może NAK transferu, przy zwykle poprawnym założeniu, że host po prostu spróbuje ponownie wykonać identyczny transfer później. Mimo że oryginalny transfer był NAK-ed, jest on przekazywany do eHost, który następnie wykonuje transfer za pomocą rDev. Jakakolwiek jest odpowiedź rDev, staje się odpowiedzią eDev, gdy tylko się o tym dowie.
Realistyczne implementacje rozpoczną się od konserwatywnej heurystyki, która wymaga pełnego przejścia do rDev dla wszystkich transferów, które mogą zostać przesunięte przez NAK. W trakcie przenoszenia można się nauczyć oczekiwanego zachowania rDev, a eDev może stać się mniej konserwatywny. „Extender” może wykorzystywać wiedzę o standardowych klasach USB, a także wiedzę / czarną listę / białe listy klas / urządzeń specyficzne dla producenta, aby zapewnić lepszą wydajność.
Czy alternatywne koncentratory nie mogą udawać, że są zasilane z magistrali? Myślę, że koncentrator zasilany z magistrali może zasilać koncentrator z własnym zasilaniem, prawda?
supercat
Nie ma nic wspólnego z zasilaniem z magistrali - to całkowite opóźnienie w odpowiedzi na ACK.
pjc50
@ supercat Tak, mogą istnieć alternatywne huby udające. Nie ma znaczenia, jak to zrobisz, dopóki drzewo udawanych urządzeń będzie zgodne z hostem.
Przywróć Monikę
@ pjc50 zgodnie ze specyfikacją USB maksymalne opóźnienie ACK wynosi około 400ns. Sygnał czasowy może pokonać 40 metrów miedzi w obu kierunkach. Nie jest to tutaj czynnik ograniczający.
Większość schematów transmisji danych za pośrednictwem kabla ma przyzwoity międzynarodowy standard opisujący sposób ich wdrożenia, w tym specyfikację dla „charakterystycznej impedancji” kabla (traktuj to jako rezystancję, ale dotyczy prądu przemiennego), impedancji terminacji ( „rezystancja” na końcu połączenia, która jest potrzebna, aby uniknąć odbić sygnału odbijającego się z powrotem kabla z powrotem w kierunku nadawcy), często określona „szybkość narastania” (czas potrzebny na przejście sygnału (sygnałów) 0-stan do 1-stan lub odwrotnie), a zatem maksymalna liczba przejść między 0/1 na sekundę (tj. Kb / s / Mb / gb / s), a tym samym, jak długo może być kabel, zanim integralność sygnału ulegnie pogorszeniu & rzeczy przestają działać poprawnie.
W porównaniu do USB, RS232 ma wszystkie specyfikacje dotyczące typu kabla, impedancji charakterystycznej, szybkości narastania, długości kabla, typu złącza. Jasne, 25-stykowe i 9-stykowe złącza „D” były powszechne, ale w rzeczywistości RS232 został zaprojektowany do różnego rodzaju złączy i kabli oraz produktów bez prawdziwej specyfikacji, która stanowiłaby inaczej. W praktyce z RS232 można zwykle pokonywać większe odległości, obniżając szybkość transmisji do mniejszej liczby bitów na sekundę (aka „baud”). Maksymalna odległość, którą możesz osiągnąć, zostanie również w znacznej mierze określona na podstawie impedancji twojego kabla, niezależnie od tego, czy jest ekranowany, czy nie, na końcu i tak dalej.
porównując RS232 z USB, porównujesz „standard” z lat 60. XX wieku, który osiągnął prawie 115k2 (z rzadkimi wyjątkami), z modelem z lat 90. i 2000, który rozpoczął się z prędkością 1,5 Mb / s, o rząd wielkości szybciej, następnie 12 Mb / s (prawie 100x szybciej), a następnie 480 Mb / s (prawie 5000x szybciej), ale to oznaczało, że parametry i długość kabla odgrywały ważną rolę w niezawodnym działaniu . Został zaprojektowany jako standard podłączania urządzeń peryferyjnych do komputerów stacjonarnych, więc 5 m uznano za akceptowalne, a następnie wszystkie parametry kabli i złączy oraz prędkości zostały określone od tego momentu. Jeśli istnieje sposób na spowolnienie działania USB, prawdopodobnie można by go uruchomić na dłuższych kablach (bez repeatera).
RS232 mógł „doładować” przy 115K, ale pamiętam, kiedy było to łącze 110 lub 300 bitów na sekundę między teleprinterem a modemem. Sygnały były niezrównoważone, napięcie zmieniło się z -12 V na + 12V i nie było skrętki ani terminacji ani ekranowania. Przy tej prędkości i na tak małych odległościach charakterystyka drutu nic nie znaczyła. Później, gdy ludzie chcieli wysyłać z większymi prędkościami na setki metrów, otrzymaliśmy RS422 i RS485, które mówiły znacznie więcej o linii jako linii transmisyjnej.
Odpowiedzi:
Szybkość transmisji ma znaczenie, ponieważ USB jest półdupleks: aby przesłać odpowiedź, magistrala musi zostać odwrócona, a dane przesłane w innym kierunku. Tak więc host wysyła dane i czeka na potwierdzenie lub odpowiedź. Wszystkie transfery są kontrolowane przez hosta. Następnie urządzenie ma pewien (dość krótki) czas na odpowiedź. Jest to mniej więcej czas potrzebny na dwie wyłączenia sygnału wzdłuż kabla o długości 5 m.
(W tej chwili nie mogę znaleźć referencji, ale odpowiednie dokumenty specyfikacji są publiczne)
Edycja: dzięki psmears za znalezienie tej sekcji
Więc moja odpowiedź jest tylko w połowie słuszna: limit podróży w obie strony dotyczy najgorszego łańcucha piast i kabli, na całkowitej głębokości 25 m.
Dan Neely ma również rację, że USB zawsze miało być najtańszym rozwiązaniem dla „wolnych” urządzeń peryferyjnych, takich jak klawiatury, myszy, drukarki itp. Jeśli chcesz mieć pełny dupleks dla większej prędkości i większej odległości, Ethernet 100baseT jest naturalnym wyborem.
źródło
Zobacz tę stronę, /superuser/64744/maximum-length-of-a-usb-cable .
źródło
Naprawdę nie jest możliwe buforowanie USB, przynajmniej w zwykłym tego słowa znaczeniu. Zazwyczaj buforowanie oznacza wzmocnienie elektryczne i być może regenerację sygnału.
Dzięki USB host obsługuje całą magistralę. Host wysyła żądanie, a urządzenie musi wysłać odpowiedź do hosta. Początek odpowiedzi musi dotrzeć do hosta w pewnym momencie po zakończeniu przesyłania żądania. Przy zbyt długim kablu opóźnienie propagacji jest zbyt długie, aby reakcja dotarła do hosta na czas.
Istnieją więc obejścia i żadne z nich nie obejmuje prostego „buforowania”, ponieważ buforowanie to powoduje dodatkowe opóźnienia, a my musimy jakoś uczynić host bardziej tolerancyjnym na dłuższe opóźnienia.
Istnieją dwie klasy obejść:
Obejścia, które wstawiają fizyczne lub wirtualne koncentratory. Jeśli host wylicza koncentrator w magistrali, sam koncentrator dodaje dodatkowe opóźnienie, a między koncentratorem a hostem znajduje się inny potencjalnie pełnej długości kabel. Wszelkie żądania dotyczące urządzeń podłączanych poniżej koncentratora są planowane z dodatkowymi opóźnieniami.
Można wstawić koncentrator jednoportowy co 4 m kabla, z maksymalnie 7 koncentratorami połączonymi szeregowo. Ograniczeniem jest 7 poziomów koncentratorów od hosta do urządzenia końcowego, więc jeśli istnieją jakieś koncentratory przed urządzeniem, należy odpowiednio zmniejszyć liczbę koncentratorów. Wiele hostów USB ma wewnętrzny koncentrator jednopoziomowy, więc realistyczny limit wynosiłby 28 m kabla z 6 koncentratorami połączonymi szeregowo. Wszystkie huby oprócz pierwszego będą musiały udawać, że są samozasilające.
Możesz dodać wirtualne koncentratory z bardziej zaawansowanym transceiverem ze wstępnym naciskiem bezpośrednio na wtyczkę, która trafia do hosta, a następnie przesyłać ruch USB dłuższym kablem. Tak długo, jak sygnały odbierane przez urządzenie na końcu takiego przedłużonego kabla mieszczą się w zakresie specyfikacji i tak długo, jak odbiornik może odzyskać dane wysyłane przez standardowe urządzenie za pomocą długiego kabla, wszystko będzie w porządku. Wirtualne koncentratory są dodawane, dzięki czemu host pozwala na duże opóźnienie - ale oczywiście nie ma fizycznych koncentratorów, tylko ich personifikacja.
Obejścia, które emulują urządzenie, które wydaje się „wolne” na wyższym poziomie protokołu. Tak działają niektóre „przedłużacze” USB Cat-5. Jest tu pięciu partnerów: prawdziwy host (rHost), emulowane urządzenie widziane przez niego (eDev), długi kabel, emulowany host (eHost) i urządzenia, które widzą go na drugim końcu kabla (rDev) .
Początkowo eDev udaje, że go nie ma. W pewnym momencie eHost widzi, że rDev został podłączony. Wylicza go i przesyła dane do eDev. EDev następnie emuluje zdarzenie wtyczki, a rHost je wylicza. RHost uważa, że widzi rDev, ale jest tam tylko eDev, udając. Podobnie rDev myśli, że widzi rHost, ale to tylko eHost jest tam, udając.
W końcu rHost chce przekazać pewne transfery do rDev, który według niego istnieje, aby z niego skorzystać. W przypadku przelewów IN eDev udaje, że nie ma danych (odpowiada NAK). Żądanie przeniesienia jest przekazywane do eHost, który ponownie wykonuje je za pomocą rDev. Wyniki tego są przekazywane z powrotem do eDev, który wykorzystuje wyniki przy następnej próbie transferu przez hosta.
W przypadku przelewów OUT eDev musi zgadywać, jakie byłoby zachowanie rDev. Można tu spróbować różnych heurystyk i zachowań. Jednym ze sposobów jest, aby eDev zawsze odbierał dane i odpowiadał za pomocą ACK. Transfer jest przekazywany do eHost, który następnie odtwarza transfer do rDev. W idealnym przypadku rDev ostatecznie zużyje dane i potwierdzi je. Jeśli to się nie powiedzie, lub jeśli rDev odpowie STALL, najlepiej eDev może to zrobić w ten sposób przy następnym transferze z hosta. Alternatywnie, eDev zawsze może NAK transferu, przy zwykle poprawnym założeniu, że host po prostu spróbuje ponownie wykonać identyczny transfer później. Mimo że oryginalny transfer był NAK-ed, jest on przekazywany do eHost, który następnie wykonuje transfer za pomocą rDev. Jakakolwiek jest odpowiedź rDev, staje się odpowiedzią eDev, gdy tylko się o tym dowie.
Realistyczne implementacje rozpoczną się od konserwatywnej heurystyki, która wymaga pełnego przejścia do rDev dla wszystkich transferów, które mogą zostać przesunięte przez NAK. W trakcie przenoszenia można się nauczyć oczekiwanego zachowania rDev, a eDev może stać się mniej konserwatywny. „Extender” może wykorzystywać wiedzę o standardowych klasach USB, a także wiedzę / czarną listę / białe listy klas / urządzeń specyficzne dla producenta, aby zapewnić lepszą wydajność.
źródło
Większość schematów transmisji danych za pośrednictwem kabla ma przyzwoity międzynarodowy standard opisujący sposób ich wdrożenia, w tym specyfikację dla „charakterystycznej impedancji” kabla (traktuj to jako rezystancję, ale dotyczy prądu przemiennego), impedancji terminacji ( „rezystancja” na końcu połączenia, która jest potrzebna, aby uniknąć odbić sygnału odbijającego się z powrotem kabla z powrotem w kierunku nadawcy), często określona „szybkość narastania” (czas potrzebny na przejście sygnału (sygnałów) 0-stan do 1-stan lub odwrotnie), a zatem maksymalna liczba przejść między 0/1 na sekundę (tj. Kb / s / Mb / gb / s), a tym samym, jak długo może być kabel, zanim integralność sygnału ulegnie pogorszeniu & rzeczy przestają działać poprawnie.
W porównaniu do USB, RS232 ma wszystkie specyfikacje dotyczące typu kabla, impedancji charakterystycznej, szybkości narastania, długości kabla, typu złącza. Jasne, 25-stykowe i 9-stykowe złącza „D” były powszechne, ale w rzeczywistości RS232 został zaprojektowany do różnego rodzaju złączy i kabli oraz produktów bez prawdziwej specyfikacji, która stanowiłaby inaczej. W praktyce z RS232 można zwykle pokonywać większe odległości, obniżając szybkość transmisji do mniejszej liczby bitów na sekundę (aka „baud”). Maksymalna odległość, którą możesz osiągnąć, zostanie również w znacznej mierze określona na podstawie impedancji twojego kabla, niezależnie od tego, czy jest ekranowany, czy nie, na końcu i tak dalej.
porównując RS232 z USB, porównujesz „standard” z lat 60. XX wieku, który osiągnął prawie 115k2 (z rzadkimi wyjątkami), z modelem z lat 90. i 2000, który rozpoczął się z prędkością 1,5 Mb / s, o rząd wielkości szybciej, następnie 12 Mb / s (prawie 100x szybciej), a następnie 480 Mb / s (prawie 5000x szybciej), ale to oznaczało, że parametry i długość kabla odgrywały ważną rolę w niezawodnym działaniu . Został zaprojektowany jako standard podłączania urządzeń peryferyjnych do komputerów stacjonarnych, więc 5 m uznano za akceptowalne, a następnie wszystkie parametry kabli i złączy oraz prędkości zostały określone od tego momentu. Jeśli istnieje sposób na spowolnienie działania USB, prawdopodobnie można by go uruchomić na dłuższych kablach (bez repeatera).
źródło