Dlaczego musimy buforować sygnał USB, jeśli kabel jest dłuższy niż 5 m?
Czy to dlatego, że spadł napięcie sygnału?
Czy to dlatego, że napędza prądy?
Dlaczego musimy buforować sygnał USB, jeśli kabel jest dłuższy niż 5 m?
Czy to dlatego, że spadł napięcie sygnału?
Czy to dlatego, że napędza prądy?
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
Kable i rozwiązania dalekiego zasięgu
- 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.
Zobacz tę stronę, /superuser/64744/maximum-length-of-a-usb-cable .
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.
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ść.
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).