Kommentarer
- Har du kigget på Universal Serial Bus Specification især USB kapitel 9? Eller læs Jan Axelson ' s USB-komplet?
- Tak for disse ressourcer, men det eneste problem er, at jeg næppe ved noget om elektronik, så guiden giver ingen mening at mig. Jeg ved, at forståelse af hele USB-protokollen kræver specifik dybdegående viden, men jeg har bare brug for et hurtigt overblik. (Dette spørgsmål er ikke ' t til et projekt. Jeg stillede det bare fordi jeg var nysgerrig)
Svar
Jeg prøver at besvare dine spørgsmål, så du foreslog dem (nummerering kan hjælpe).
Der er faktisk fire ledninger (ignorerer USB3.x for øjeblikket). To faktisk for strøm (+ 5V og GND) og to for signalering (D + og D -).
Det vigtigste at bemærke ved signaltrådene er deres navn, bemærk + og – (også undertiden P og N eller P og M). Disse indikerer typisk i elektronikken, at noget er forskelligt. Hvad dette betyder, at 1 “og 0” er angivet med polariteten for spændingen mellem hvert kabel. Dette er i modsætning til en enkelt ende, hvor 1 “s og 0” bæres som en spænding i forhold til GND.
Hvad mener jeg med polaritet? Forestil dig, at D + -kablet drives til \ $ + 3,3 \ m athrm {V} \ $, og D- drives til \ $ 0 \ mathrm {V} \ $. Forskellen mellem de to er \ $ V_ {D +} – V_ {D-} = 3.3 – 0 = 3.3 \ mathrm {V} \ $. Hvis D + -kablet i stedet blev drevet til \ $ 0 \ mathrm {V} \ $ og D-drevet til \ $ + 3.3 \ mathrm {V} \ $, bliver forskellen \ $ V_ {D +} – V_ {D- } = 0 – 3.3 = -3.3 \ mathrm {V} \ $. Bemærk minustegnet, der angiver den modsatte polaritet.
For at dette skal fungere, skal de to datakabler være komplement af hinanden (når det ene er højt, det andet er lavt) for at overføre data, således skal fungere med samme frekvens. Du tænker måske hvorfor gider, bare brug et kabel. Sagen er, at verden er et temmelig støjende sted, en ledning med en ende (common mode) er meget tilbøjelig til støj, som ved høje hastigheder (selv ved lave hastigheder i barske miljøer), som kan ødelægge dataene (lav en 1 til 0). Ved differentiel signalering udsættes begge kabler for den samme støj, så det annulleres!
Et hurtigt eksempel. Sig, at signalet du sender er \ $ 2 \ mathrm {V} \ $ eller \ $ 0 \ mathrm {V} \ $. Lad os også sige på hver ledning, at du får \ $ 1 \ mathrm {V} \ $ støj (urealistisk, men et eksempel). For single-ended ville dine signaler på modtageren være enten \ $ 2 + 1 = 3 \ mathrm {V} \ $, hvilket helt klart er en logisk 1, eller \ $ 0 + 1 = 1 \ mathrm {V} \ $ på hvilket tidspunkt du har ingen idé om, hvad det var. For differentiering vil dine signaler ved modtageren dog være enten \ $ (2 + 1) – (0 + 1) = 2 \ mathrm {V} \ $ eller \ $ (0 + 1) – (2 + 1) = – 2 \ mathrm {V} \ $ som begge er de samme som hvis der slet ikke var nogen støj!
Der er andre fordele ved at have to ledninger. Når der ikke sendes data, bruger USB-specifikationen de to ledninger uafhængigt til styresignaler, f.eks. et synkroniseringssignal, en nulstillingskommando osv. Disse kan tydeligt skelnes fra datapakker ved forskellige tricks, som sandsynligvis er for dybtgående (det hele vil være i USB-specifikationen nævnt i kommentarerne).
I USB skal begge enheder have samme frekvens. Dette er normalt et multiplum af 12MHz – det er derfor, du vil se USB-enheder, der fungerer ved urfrekvenser som 48MHz eller 12MHz osv. Disse frekvenser genereres af en krystalreference, som normalt er nøjagtig til omkring 20 ppm (240Hz for en 12MHz krystal ). Dette er generelt tæt nok på, at i kraft af synkroniseringsimpulser på datalinjerne og det faktum, at data sendes i bursts (hvilket betyder drift i frekvens ikke tilføjes over lang tid), at de to enheder kan forblive synkroniserede. du skulle ved et uheld bruge, fx en 16MHz krystal, vil enheden sandsynligvis ikke tælle.
Hvordan ved master at enheden har brug for strøm? Enkelt, alle USB-enheder har lov til at tegne en mængde strøm uden at anmode om det – op til \ $ 100 \ mathrm {mA} \ $ så vidt jeg husker. Dette giver enheden nok strøm til at tænde, hævde dens tilstedeværelse (med en pull-up-modstand på D + -linjen – igen sandsynligvis Når masteren er opmærksom på enheden, tildeler den en strømtilskud til den enhed og spørger, om den har brug for mere (f.eks. til en enhed med høj effekt, hvis den vil have \ $ 500 \ mathrm {mA} \ $ høj strømtilskud).
USB-protokollen er alle i specifikationen. At prøve at gå over vil sandsynligvis stadig være for dybtgående.Men når det er sagt, vil du måske tjekke dette svar på et andet spørgsmål, der giver nogle detaljer.
Svar
USB 1.x (1,5 Mbit / s og 12 Mbit / s) og 2,0 (480 Mbit / s) bruger fire ledninger, V \ $ _ {BUS} \ $ ( +5), D +, D- og GND. D + og D- danner et differentieret par. Der er også en udvidelse kaldet OTG (On-The-Go), som gør det muligt for en enhed at fungere som enten en USB-vært eller enhed, og dette gør brug af en femte ID-afledning, som vi kan ignorere.
Hvis den maksimale hastighed for hver af værten og enheden er forskellig, en forhandling finder sted, og den højeste hastighed, der er fælles for begge, bruges.
Differentiel signalering giver mulighed for en høj grad af støjimmunitet. Datasignalerne sendes positive på D + -linjen og negative på D-linjen. På den modtagende side sendes plusledningen til + -ledningen på en komparator (fungerer som en subtraktor), og minusledningen sendes til komparatorens ledning.
For gyldige pulser tilføjes disse to (da den negative igangværende puls blev sendt til komparatorens ledelse, tilføjer de). Men hvis der induceres støj på linjen, vil det generelt påvirke både D + og D-linjerne det samme, og komparatoren trækker dem ud.
Diagrammet viser data, der kun går i en retning. Det skyldes, at USB-signaler er halv-dupleks, dataene går kun en retning ad gangen.
USB 3.0 (op til 10 Gbit / s) bruger ni ledninger i stedet for fire og giver fuld duplex-drift siden der er forskellige par hver vej til transmission og modtagelse.
Enheder kan trække op til 100 mA uden at skulle “spørge”. For USB 1.x og 2.0 kan enheden bede værten om at levere op til 500 mA. For USB 3.0 er dette øget til 900 mA. Der er en separat protokol, der bruges til batteriopladning (ingen dataudveksling); dette kan i nogle tilfælde gå så højt som 5A.
Kommentarer
- Tak for svaret. Hvad sker der, hvis de to enheder har forskellige urfrekvenser?
- En teknik kaldet " urgendannelse " bruges: arrowdevices.com/blog/beginners-guide-to-clock-data-recovery
Svar
USB bruger differentiel signalering for at reducere interferens og tillade højhastighedstransmission over lang afstand. En differentiel bus er bygget med to ledninger, den ene repræsenterer de transmitterede data, og den anden komplementerer den. Tanken er, at den “gennemsnitlige” spænding på ledningerne ikke bærer nogen information, hvilket resulterer i mindre interferens. De fleste moderne serielle busser (USB, Ethernet, PCIe, SATA osv.) er forskellige, da prisen på de ekstra ledninger er langt opvejet af fordelene ved støjreduktion. USB 2 er også det, der kaldes “halv duplex.” Dette betyder, at linket kun er fungerer i en retning til enhver tid. Sig, din computer kan sende en besked til din mus. Eller din mus kan sende en besked til din computer. Men ikke begge på samme tid. Bussen skal “vendes” hver tidsdata skal sendes i den anden retning.
For så vidt som uret vedrører, udnytter USB enheder kaldet serializers og deserializers. Serializer er ansvarlig for at generere serielle data på transmitterende og deserializer er ansvarlig for at gendanne bitene på den anden en d. En del af jobbet til serialiseringen er at kode dataene på en måde, så det er let at afkode ved at inkludere indramnings- og synkroniseringsoplysninger. En del af opgaven med deserializer er at gendanne urets signal. USB bruger en kodning kaldet NRZI eller inverteret non-return-to-zero. I NRZI er logisk 0 repræsenteret af en overgang, og logisk 1 er repræsenteret af ingen overgang. USB bruger bitfyldning til at begrænse længden af på hinanden følgende 1ere, der sendes over ledningen. Resultatet af dette betyder, at der ofte er overgange, der er nok til at gendanne alle bitene, selvom urene på senderen og modtageren ikke kryds ved nøjagtig samme hastighed. De skal dog være relativt tætte. Der er også eksplicitte synkroniseringssekvenser, der sendes sammen med dataene.
For så vidt angår strøm, har enheden lov til at trække en vis mængde strøm uden at spørge værten. For at tegne mere end det er det nødvendigt at forhandle for at sikre, at værten ikke bliver overbelastet. Enheden skal vente, indtil den får tilladelse, før den kan trække mere aktuel.