Spróbuję odpowiedzieć na Twoje pytania, aby je zaproponowałeś (numeracja może pomóc).
Rzeczywiście są cztery przewody (na razie pomijając USB3.x). Dwa rzeczywiście do zasilania (+ 5V i GND) i dwa do sygnalizacji (D + i D -).
Kluczową rzeczą, na którą należy zwrócić uwagę w przypadku przewodów sygnałowych, jest ich nazwa, zwróć uwagę na + i – (czasami również P i N lub P i M). Zazwyczaj wskazują one w elektronice, że coś jest różnicowe. oznacza, że 1 „si 0” są wskazywane przez polaryzację napięcia między każdym kablem. W przeciwieństwie do pojedynczego końca, gdzie 1 „si 0” są przenoszone jako napięcie względem GND.
Co rozumiem przez polaryzację? Wyobraź sobie, że kabel D + jest doprowadzony do \ $ + 3,3 \ m athrm {V} \ $, a D- jest kierowany do \ $ 0 \ mathrm {V} \ $. Różnica między nimi to \ $ V_ {D +} – V_ {D-} = 3,3 – 0 = 3,3 \ mathrm {V} \ $. Teraz, jeśli zamiast tego kabel D + został doprowadzony do \ $ 0 \ mathrm {V} \ $, a D- do \ $ + 3.3 \ mathrm {V} \ $, różnica wyniesie \ $ V_ {D +} – V_ {D- } = 0-3,3 = -3,3 \ mathrm {V} \ $. Zwróć uwagę na znak minus, wskazujący przeciwną polaryzację.
Aby to zadziałało, dwa kable danych muszą się uzupełniać (gdy jeden jest wysoki, drugi jest niski) do przesyłania danych, a zatem muszą działać na tej samej częstotliwości. Możesz pomyśleć, po co zawracać sobie głowę, po prostu użyj jednego kabla. Chodzi o to, że świat jest raczej hałaśliwym miejscem, pojedynczy przewód (tryb wspólny) jest bardzo podatny na szum, który przy dużych prędkościach (nawet przy niskich prędkościach w trudnych warunkach) może uszkodzić dane (zrobić 1 do 0). W sygnalizacji różnicowej oba kable są narażone na ten sam szum, więc zanika!
Szybki przykład. Powiedzmy, że wysyłany sygnał to \ $ 2 \ mathrm {V} \ $ lub \ $ 0 \ mathrm {V} \ $. Powiedzmy też, że na każdym przewodzie otrzymujesz \ $ 1 \ mathrm {V} \ $ szumu (nierealne, ale przykład). W przypadku sygnału single-ended Twoje sygnały w odbiorniku byłyby albo \ $ 2 + 1 = 3 \ mathrm {V} \ $, co jest oczywiście logiką 1, albo \ $ 0 + 1 = 1 \ mathrm {V} \ $ w którym momencie nie mam pojęcia, co to było. Jednak w przypadku różnicowania sygnały w odbiorniku byłyby \ $ (2 + 1) – (0 + 1) = 2 \ mathrm {V} \ $ lub \ $ (0 + 1) – (2 + 1) = – 2 \ mathrm {V} \ $, które są takie same, jakby w ogóle nie było szumu!
Posiadanie dwóch przewodów ma inne zalety. Gdy dane nie są wysyłane, specyfikacja USB wykorzystuje dwa przewody niezależnie do sygnałów sterujących, np. sygnał synchronizacji, polecenie resetowania itp. Można je wyraźnie odróżnić od pakietów danych różnymi sztuczkami, które prawdopodobnie są zbyt szczegółowe (wszystko będzie w specyfikacji USB wspomnianej w komentarzach).
W przypadku USB oba urządzenia muszą mieć tę samą częstotliwość. Zwykle jest to wielokrotność 12 MHz – dlatego zobaczysz urządzenia USB pracujące z częstotliwościami zegara, takimi jak 48 MHz, 12 MHz, itd. Częstotliwości te są generowane przez referencję kryształu, która zazwyczaj ma dokładność około 20 ppm (240 Hz dla kryształu 12 MHz ). Jest to na ogół na tyle bliskie, że dzięki impulsom synchronizacji na liniach danych i faktowi, że dane są wysyłane w seriach (co oznacza, że dryf częstotliwości nie sumuje się przez długi czas), oba urządzenia mogą pozostać zsynchronizowane. miałeś przypadkowo użyć, powiedzmy, kryształu 16 MHz, urządzenie prawdopodobnie nie wyliczy.
Skąd kapitan wie, że urządzenie potrzebuje zasilania? Proste, wszystkie urządzenia USB mogą rysować ilość prądu bez żądania – do \ $ 100 \ mathrm {mA} \ $ o ile pamiętam.Daje to urządzeniu wystarczającą moc do włączenia, potwierdzenia jego obecności (z rezystorem podciągającym na linii D + – znowu prawdopodobnie zbyt dogłębnej). Gdy master jest świadomy urządzenia, przydziela limit mocy temu urządzeniu i pyta, czy będzie potrzebować więcej (np. dla urządzenia o dużej mocy, jeśli chce, aby \ $ 500 \ mathrm {mA} \ $ wysoki limit prądu).
Protokół USB jest w specyfikacji. Próba omówienia prawdopodobnie nadal byłaby zbyt szczegółowa.Powiedziawszy jednak, że możesz chcieć sprawdzić tę odpowiedź na inne pytanie, która zawiera pewne szczegóły.
USB 1.x (1,5 Mbit / si 12 Mbit / s) i 2,0 (480 Mbit / s) wykorzystuje cztery przewody, V \ $ _ {BUS} \ $ ( +5), D +, D- i GND. D + i D- tworzą parę różnicową. Istnieje również rozszerzenie o nazwie OTG (On-The-Go), które pozwala urządzeniu działać jako host USB lub urządzenie, a to wykorzystuje piąty przewód ID, który możemy zignorować.
Jeśli maksymalna szybkość każdego hosta i urządzenia jest inna, odbywa się negocjacja i używana jest najwyższa wspólna prędkość dla obu.
Sygnalizacja różnicowa zapewnia wysoki stopień odporności na zakłócenia. Sygnały danych są wysyłane jako dodatnie na linii D + i ujemne na linii D-. Po stronie odbiorczej odprowadzenie dodatnie jest wysyłane do odprowadzenia + komparatora (działającego jako odejmowanie), a odprowadzenie ujemne jest wysyłane do odprowadzenia – komparatora.
W przypadku prawidłowych impulsów te dwa dodają (ponieważ ujemny impuls został wysłany do – ołowiu komparatora, dodają). Ale jeśli szum jest indukowany na linii, to na ogół wpłynie to na linie D + i D- w ten sam sposób, a komparator odejmie je.
Diagram pokazuje dane idące tylko w jednym kierunku. Dzieje się tak, ponieważ sygnały USB są półdupleksowe, dane są przesyłane tylko w jednym kierunku naraz.
USB 3.0 (do 10 Gbit / s) wykorzystuje dziewięć przewodów zamiast czterech i zapewnia pracę w trybie pełnego dupleksu, ponieważ istnieją pary różnicowe w każdą stronę do wysyłania i odbierania.
Urządzenia mogą pobierać do 100 mA bez konieczności „zadawania pytań”. W przypadku USB 1.x i 2.0 urządzenie może zażądać od hosta dostarczenia do 500 mA. W przypadku USB 3.0 wartość ta została zwiększona do 900 mA. Do ładowania baterii używany jest osobny protokół (brak wymiany danych); w niektórych przypadkach może to osiągnąć nawet 5A.
Komentarze
USB wykorzystuje sygnalizację różnicową w celu zmniejszenia zakłóceń i umożliwienia szybkiej transmisji na duże odległości. Magistrala różnicowa jest zbudowana z dwóch przewodów, z których jeden reprezentuje przesyłane dane, a drugi jest jego uzupełnieniem. Pomysł polega na tym, że „średnie” napięcie na przewodach nie przenosi żadnych informacji, co skutkuje mniejszymi zakłóceniami. magistrale (USB, Ethernet, PCIe, SATA itp.) są różnicowe, ponieważ koszt dodatkowych przewodów jest znacznie przewyższany przez zalety redukcji szumów. USB 2 jest również nazywany „półdupleksem”. Oznacza to, że tylko łącze działa w jednym kierunku w dowolnym momencie. Powiedzmy, że komputer może wysłać wiadomość do myszy. Albo mysz może wysłać wiadomość do komputera. Ale nie w obu jednocześnie. Magistrala musi zostać „odwrócona”. dane czasu muszą być wysyłane w innym kierunku.
Jeśli chodzi o taktowanie, USB wykorzystuje urządzenia zwane serializatorami i deserializatorami. Serializator jest odpowiedzialny za generowanie danych szeregowych po stronie nadawczej, a deserializator jest odpowiedzialny za odzyskiwanie bitów na drugim en re. Częścią pracy serializatora jest kodowanie danych w taki sposób, aby można je było łatwo zdekodować, uwzględniając informacje dotyczące ramkowania i synchronizacji. Częścią pracy deserializatora jest odzyskanie sygnału zegara. USB wykorzystuje kodowanie zwane NRZI lub odwrócone bez powrotu do zera. W NRZI logiczne 0 jest reprezentowane przez przejście, a logiczne 1 jest reprezentowane przez brak przejścia. USB wykorzystuje upychanie bitów, aby ograniczyć długość kolejnych 1s przesyłanych przewodem. W rezultacie oznacza to, że przejścia występują wystarczająco często, aby odzyskać wszystkie bity, nawet jeśli zegary nadajnika i odbiornika nie tykają dokładnie w tym samym tempie. Muszą być jednak stosunkowo blisko. Istnieją również jawne sekwencje synchronizacji, które są wysyłane wraz z danymi.
Jeśli chodzi o moc, urządzenie może pobierać określoną ilość energii bez pytania hosta. Aby narysować więcej, trzeba negocjować, aby upewnić się, że host nie zostanie przeciążony. Urządzenie musi poczekać, aż uzyska zezwolenie, zanim będzie mogło pobierać więcej prądu.