Znám odpověď google a odpověď wikipedia na výše uvedenou otázku. Mám však po ruce konkrétnější otázku. Rozbočovače USB mají mnoho příchozích a portů a jen jeden odchozí port, jsem kvůli tomu schopen používat dohromady n-počet zařízení. Ale nerozumím jak může jeden USB port provádět datové přenosy s n-počtem USB portů?
jak může odesílat různá data na všechny porty USB současně?
*
simulovat tento obvod – Schéma vytvořené pomocí CircuitLab
*.
Komentáře
- Podobně, jako váš síťový router může připojit jeden port LAN (internet) k více zařízením. Každému koncovému bodu (zařízení USB) je přiřazena adresa a rozbočovače jednoduše směrují požadavky z hostitele na správné zařízení sledováním, která adresa je na jakém portu. Pro USB je ' mnohem jednodušší v tom smyslu, že existuje pouze jeden hlavní server (hostitelský port), který iniciuje všechny transakce.
- @TomCarpenter Then How odeslal by port USB společně různá data ' s?
- Hostitelský port požádá o rozhovor konkrétní koncový bod. Koncové body mluví zpět, pouze když o to požádá hostitel.
- @TomCarpenter Ale všechny jsou používány současně a ne jeden po druhém, ale všechny společně.
- Nezapomeňte, že sběrnice USB může běží na USB 2.0 rychlostí až 480 Mb / s. Hostitel vždy hovoří pouze s jedním koncovým bodem najednou, ale se všemi hovoří postupně a přepíná mezi nimi tak rychle, abyste to nemohli ' t říct. Totéž platí pro sítě. " Hej, myš na portu 1, řekni mi, jestli jsi se ' přesunul. Dobře, klávesnice na portu 2, máte nějaké stisknutí kláves k hlášení? Nyní jste na portu 3, flash disku, uložte mi tato data. S někým dalším, s kým musím mluvit? ne, ok, myš na portu 1, řekni mi, jestli jsi ' přesunul … "
Odpověď
Všechno to souvisí s rozhodčím řízením. Jakýkoli systém, který vyžaduje připojení více zařízení, potřebuje určitým způsobem určit, kdo by měl mluvit kdy. Existují různá schémata, jak byste očekávali v závislosti na aplikaci.
Běžný příklad – v síti máme mnoho uzlů, které spolu navzájem komunikují. To se provádí tak, že každý uzel má adresu (např. IP adresa), a když uzel chce mluvit s jiným uzlem, odešle paket na tuto adresu. Pak máte zařízení, jako jsou směrovače, které přijímají pakety přicházející na více portech a předávají je na správný port. Arbitráž je provádí se pomocí paměti k ukládání paketů, dokud není cílový port volný.
Nyní na USB. To je ve skutečnosti mnohem jednodušší než v síti, protože ne všechny uzly jsou rovnocenné. Máte dva druhy, a hostitel a koncový bod. Existuje vždy jen jeden hostitel, ale může to být mnoho koncových bodů. V tomto případě je rozhodčí řízení mnohem jednodušší, protože pouze hostitelský port smí libovolně hovořit. Koncové body mohou mluvit, pouze když o to požádá hostitel , a hostitel vždy hovoří pouze s jedním koncovým bodem najednou.
U paketů koncových bodů hostitele > rozbočovače USB jednoduše předají požadavek od hostitele všem koncovým bodům. Protože všechny koncové body mají adresu, pouze ten, na který byl požadavek adresován, s ním něco udělá (např. Odpoví), ostatní paket ignorují.
Pro koncový bod- > hostitelské pakety, hostitel nejprve odešle paket na konkrétní koncový bod podle adresy, aby řekl ", že nyní můžete mluvit " a poté musí tento koncový bod okamžitě odeslat odpověď. Protože v jednom okamžiku smí hovořit pouze jeden koncový bod, rozbočovač USB jednoduše směruje paket z libovolného portu, který odpovídá na požadavek hostitele.
Z hlediska fungování hostitele z toho, jaká zařízení jsou připojena a jak koncový bod získává svou adresu, toho lze dosáhnout výčtem.
Všechny porty hostitele a rozbočovače mají na linkách D + a D rozevírací rezistory (15 kOhm). Tito uvedou datové linky tohoto portu do známého stavu, když není připojeno žádné zařízení, což je stav, ve kterém port nebude vůbec odesílat žádná data přes D + / D- linky. připojeno, dává o sobě vědět připojením datové linky D + (plná rychlost) nebo D- (nízká rychlost) k VCC pomocí rezistoru 1,5 kOhm. Tím se spustí událost výčtu. Port poté zahájí proces konfigurace zařízení a přiřazení adresy.Pokud byste měli připojit dvě zařízení současně, budou vypsána po jednom .
Pokud neexistují žádné rozbočovače, hostitel jednoduše promluví s novým zařízením a nastaví ho. Pokud jsou v systému rozbočovače, je to rozbočovač, který hlásí, že je připojeno nové zařízení . Pokud rozbočovač hlásí, že je připojeno nové zařízení, hostitel dá rozbočovači pokyn, aby resetoval nové zařízení a zahájil komunikaci. Během resetu je koncovému bodu dána výchozí adresa 0 (*). Hostitel pak může mluvit s koncovým bodem pomocí výchozí adresy a nakonfigurovat jej pomocí jedinečné nenulové adresy, která mu umožní vědět, kdy se s ním hovoří.
(*) Protože pouze jedno zařízení je vždy vyjmenován najednou, adresa 0 bude pro nově připojené zařízení vždy jedinečná.
Potom se můžete zeptat, " jak Mohu potom mít více zařízení, která mluví současně? ". Řekněme, že máte myš, klávesnici a flash disk připojené ke stejnému rozbočovači USB. Všichni víme, že můžete současně používat myš a klávesnici a zároveň kopírovat soubory na / z jednotky flash, ale pokud to může mluvit jen jedno zařízení najednou, jak je to možné?
No , vše se odvíjí od skutečnosti, že těch několik set milisekund, které váš mozek potřebuje, aby si všiml, že jste stiskli klávesu a očekáváte aktualizaci obrazovky, je pro počítač věčnost. Rozhraní USB 2.0 může běžet až 480 Mb / s (USB 3.1 může běžet až 10 Gb / s!), Což znamená, že i když hostitel v daném okamžiku mluví pouze s jedním koncovým bodem, cykluje mezi nimi tak rychle, že můžete „Neříkám, že to dělá.
Hostitel USB: " Hej, myš na portu 1, řekni mi, jestli jsi se přestěhovala. Ok, klávesnice na portu 2, máš nějaké klávesové zkratky pro hlášení? Teď jsi tam na portu 3, flash disk, uložte mi tato data. S kýmkoli dalším, s kým potřebuji mluvit? Ne, ok, myš na portu 1, řekněte mi, jestli jste se přestěhovali … "
Člověk: " Podívej , počítač si všiml, že jsem právě pohnul myší, stiskl klávesu na klávesnici a zkopíroval obrázek na flash disk, to vše současně! "
Hostitelské zařízení sleduje, které e Používají se adresy ndpoint a každému z nich budou posílat pakety postupně nebo podle potřeby (tj. když OS požaduje přístup ke konkrétnímu zařízení). I když se to neděje všechno současně, rozhodčí řízení je tak rychlé, že počítačový mazlíček člověk „nerozezná rozdíl.
Komentáře
- To přidat: Zařízení USB (přesněji řečeno pouze „přerušení“ koncových bodů) mohou požadovat, aby byly dotazovány v určitém intervalu do 1 ms. Pokud nemáte stovky vstupních zařízení, nikdy si nevšimnete zpoždění.
- Jak hostitel ví, které koncové body jsou připojeny? Zdá se, že to ve skutečnosti ' neodpovídá na původní otázku týkající se hubů. Jak v tomto procesu interagují ? How the interact in enumeration?
- @YonaAppletree enumeration. Hosts and hubs scan all of their ports for device connections – they detect a 1.5kOhm pull-up rezistor on either D + (Full Speed) or D- (Nízká rychlost). ' přidám nějaké informace o tom, jak je koncovým bodům přiřazena adresa.
- @YonaAppletree, pokud jde o rozbočovače během provozu, odpověď mluví už o tom. Pro hostitel do koncového bodu: " Rozbočovače USB jednoduše předají požadavek od hostitele všem koncovým bodům ". Pro koncový bod k hostiteli: " Protože v daném okamžiku smí hovořit pouze jeden koncový bod, rozbočovač USB jednoduše směruje paket z libovolného portu, na který odpovídá "
Odpověď
Kratší odpověď: hostitel odesílá data, která jsou adresována konkrétnímu zařízení ( který byl předběžně „vyjmenován“), jedna transakce po druhé, postupně. Rozbočovač vysílá všechny pakety do všech zařízení. Zařízení reaguje pouze na transakce, které jsou mu adresovány. To je vše, platí pro zařízení HS.
U zařízení FS a LS je proces trochu komplikovanější. Využívá „transakční překladače“, které jsou zabudovány v každém rozbočovači pro každý port, který tak překládá „rozdělené transakce“ do provozu LS nebo FS.
Komentáře
- A co USB 3?
- Rozbočovače USB3 jsou inteligentnější pro spojení Super-Speed a používá explicitní směrování k zařízení / koncovým bodům. Sekce USB2 zůstává stejná. Viz část 3.1 " Souhrn architektury " nejnovější specifikace USB3.1, usb.org/developers/docs/usb_31_052016.zip