USB technikai leírás

Mikor az Universal Serial Bus (USB) eszközt csatlakozatjuk vagy leválasztjuk az USB hots-ról, egy előre beállított esemény generálódik. Az USB Specifikáció, Rev. 1.0, megmagyarázza ezen eseményeket, parancsokat és a követelményeket az USB eszközökkel és az USB host-tal szemben. A célom ezzel a cikkel, hogy megvilágítsam az USB Specifikáció kapcsolatát ezekkel az eseményekkel.

Az Intel 8x930 USB mikrokontroller használja ezt a szemléletet a megvalósítást és a programozási modellt.

Bevezetés

A megnövelt követelmény a számítástechnikában és az automatizálásban szükségessé tette az Universal Serial Bus kifejlesztését, ez egy rugalmassággal rendelkező technológia és könnyű a használata.

Az USB kommunikációs protokoll soros átvitelt tesz lehetővé, az USB gazdagép és az USB csatlakozó közötti kapcsolatot biztosítja.

A gazda nyújtja a szolgáltatást az USB sínen. A soros adatátvitelnek két módja van: teljes sebesség módban az átviteli sebesség 12Mbs, és alacsony sebességű módnál az adatátvitel 1.5 Mbs. A szolgák csatlakoztatása azonnal megtörténik a gazdákon vagy hub-okon keresztül, sorba csillag topológia szerint, a gazda a csillag topológia közepén helyezkedik el.

USB címzések kiosztása hasonló, mint összekapcsolhatóság a PC felé, könnyű használat, rugalmasság és alacsony költség magvalósításával. Ez összeadódik a “plug and play” tulajdonsággal, amelyik egy erős ok az USB mögött. USB-vel, a felhasználók tudják csatlakoztatni vagy lekapcsolni a perifériát anélkül, hogy újra kellene konfigurálni a rendszert, vagy újra csatlakoztatni a gép kikapcsolása nélkül.

Az újra csatlakozatáskor a rendszer automatikusan felismeri az eszközt, és automatikusan betölti a meghajtóprogramot.

Az USB gazda (Host)

USB gazdák a PC-k körül épülnek fel: az USB-t fogadni képes alaplapok és felszerelt USB program struktúra. Az alaplapon, az USB Serial Interface Engine (Soros Csatlakozó Eszköz) modul bejegyzett, mint alkatrész az USB gazdavezérlőbe. Az Intel megvalósította az USB funkcionalitást, mint alkotórészét a PCI chip készletnek. A program struktúra szétválasztható három rétegre:

~

Ez csak egy USB gazdás USB rendszerben van így. Használt USB hardver és program struktúrákat a gazda működteti, mint elsődleges eszköz a sínen.

Nyugtázza a csatlakoztatott és eltávolított maghajtókat és kezdeményezi a felsorolási folyamatot és összegyűjti az éppen működő eszközök adatait.

Ha lecsatlakoztatunk egy eszközt, akkor az egy nyugta jelet generál, ami arra hívatott, hogy felderítse a még üzemben lévő eszközöket és megbízhatóan összegyűjtse az éppen üzemelőket, ezen kívül ellenőrzi az elektronikus kapcsolatokat is. Ezekről az eszközökről egy listát készít és természetesen ezt az USB vezérlő tárolja is. A nyugtajel körbefutása alatt semmilyen adatforgalom nem mehet.

Az USB kábel

Az USB kábel négy vezetékből áll. Két vezeték (D+ és D-), használja az adatátvitelre és a nyugta jel körbeküldésére. A másik kettő vezetéken a perifériához megy a feszültség (power—Vbus) és a földvezeték (ground—Gnd). Alacsony költségű, nem zavarvédett kábel esetén a maximális átvitel csak 1.5 Mbs, ez megfelel az alacsony sebességű USB átvitelnek. Zavarvédett (árnyékolt) kábel esetén a sebesség 12 Mbs, ami a teljes sebességű USB átvitelnek felel meg.

USB kábelen az A típusú csatlakozó felé megy a jel (az USB gazda felé), a B típusú csatlakozó felöl (a periféria csatlakozó). Sorrendben kiküszöböli a vevő a zavarokat és ezért nem megengedett az A és B típusú csatlakozók megcserélése. Az USB specifikáció gondoskodik a mechanikai védelemről (az A és a B típusú csatlakozókat fizikailag sem lehet megcserélni) mindkét csatlakozónál.

Az összes B típusú csatlakozókon lévő ellenállásokat lehúzhatjuk mindkét vezetékről, a D+ és D- vezetékről. Teljes sebességű eszköznél az ellenállást a D+ vezetékre kell rakni, az alacsony sebességű eszköznél pedig a D- vezetékre. Ez az ellenállás az oka, hogy különböző feszültség szintek fordulnak elő a D+ és D- vonal között. Ez a megvalósítás a gazda irányába jelentést csatol, és a gazda eldönti, hogy milyen sebességgel csatlakozzon a periféria.

Az USB perifériák

USB perifériák (eszközök) két féle módon működhetnek az USB sínen: hub-ként (gazdaként) és üzemben lévő eszközként.

Tipikus esetben a gazda egyben repeater (ismétlő) is lehet. Egyes gazda átalakítja az egyedüli csatlakozási pontot, azaz a bejövő jelet egyszerre több csatlakozóba továbbítja. Egy példa: a gazdán 4 csatlakozó van, amire másik gazdát (hub-ot) és/vagy üzemelő eszközt (végeszközt) lehet csatlakoztatni.

A végeszközök lehetnek: egér, billentyűzet, joystick, kamera, stb. Gazdák lehetnek monitorok vagy billentyűzetek.

Általában az USB eszközök három részből állnak:

A végpont a legtávolabbi forrás vagy elmenő adat az USB perifériába. A megvalósítási szint törődik a lokális memória beállításával, amelyik adatot tud írni vagy olvasni.

Az USB protokoll

Az USB gazda a sínen 1 másodpercenként küld egy start of frame (SOF) csomagot. A rendelkezésre álló sín sávszélessége megosztott az egyidejűleg csatlakoztatott eszközök között. Minden eszköz 1 másodpercig “beszélhet”. Általánosságban az USB műveletek három csomagból állnak: a vezérjel csomagból, adatcsomagból és a handshake (párbeszéd elektronikus eszközök között) csomagból.


A csomagok felépítése

Mindegyik csomagban található egy Packet ID (PID), ami a csomagok azonosítására szolgál, vagy ha csak a PID van a sínen, akkor az a “kézfogást” jelenti. A művelet indítása az, amikor a gazdavezérlő vezérjel csomaggal küldi az eszköz címét és a végpont számát, a közvetlen adat átvitelt és a logikai vezérlő csatorna típusát. A megcímzett eszköz maga kiválasztja és dekódolja a címét a vezérjelből. Ha a címzés mező a vezérjelen jelez, akkor a gazda kéri az adatot. Amikor az eszköz válaszol az adatcsomaggal, a gazda az adatcsomagot veszi. Általában adatfogadás után a gazda vagy az eszköz egy “kézfogás” csomagot küld. A “kézfogás” csomag lehet ACK, NAK vagy STALL.

Az USB adatátviteli kategóriái

Az adat csere a gazda program között és az eszköz végpont között valósul meg. Információ áram folyhat mindkét irányban vagy csak egy irányban. A gazda kezdeményezi az adatátvitelt, és adatcserét biztosít mindkét végpont között.

Négy típust támogat az USB: vezérlés, megszakítás, izokrón és terjedelem.

  1. Vezérlő átvitel támogatja a kétirányú kommunikációt. Ez az átvitel többnyire használja a csatlakoztatott eszközről begyűjtött információkat. Azonban, ha ezeket nem tudja használni, akkor a meghajtóprogramtól kapott információkat használja. Minden periféria eszköz támogatja a vezérlés átvitelt. A gazda feltételezi a végpont 0 és a vezérlő csatorna használatát.
  2. Megszakítás átvitel egyirányú adatátvitelnél van. Ezt a típusú átvitelt használja az egereknél, billentyűzeteknél és joystickoknál. Mivel az USB gazda a master minden USB rendszerben, ezért nem megszakítható. Ez általában nyílt a végfelhasználók felé és a fejlesztők tekintetbe veszik. Ez az USB protokoll szint, megszakítást indít a vezérjellel a gazda irányába (IN). A periféria válaszol NAK-al, ha nem új megszakítás információval tér vissza. Ha új megszakításra vár a függvény, akkor az információt, mint adatcsomagot adja vissza. A gazda válaszol ACK-val, ha az adatot fogadta és hibátlan volt, ha hibás volt, akkor nem válaszol. Ha a megszakítási végpont késleltetett, ha a visszatérés STALL-t jelez, akkor a gazdaprogramnak szükséges beavatkoznia.
  3. Izokrón átvitel egyirányú kommunikációnál van. Az irány lehet a végponttól a gazda felé, vagy a gazdától a végpont felé. Ennél a protokollszintnél, izokrón átvitel indul az IN vagy az OUT vezérjelen. Egy példa: ha IN van a vezérlőjelen, a visszatérés értéke adat lesz. Ha OUT van a vezérlőjelen, a gazda követi adattal. Az izokrón átvitel irányában nincs “kézfogás” vagy újra próbálkozás. Ezért ebben a pontban az adat elveszhet. Ezt figyelembe véve a telefonok és hangszórók használják csak ezt az átvitelt.
  4. Terjedelem átvitel egyirányú átvitelnél használható. A címzés kétirányú lehet, a végpont felől a gazda felé és a gazda felől a végpont felé. Ennél a protokoll szintnél, a terjedelem átvitelnek három mozzanata: vezérjel, adat, és “kézfogás”. Abban az esetben, ha a kapcsolat akadályoztatott, nincs adatátvitel és tranzakció sem, akkor egy redukált vezérjel és egy redukált “kézfogás” jön létre.

Csatlakozási művelet

Az eszköz csatlakoztatása után a gazdavezérlő figyelmeztet és kiválasztja a feszültségvonalat. A gazda bejegyzi a portválasztást. Az eszköz ellenőrzi a csatlakozási állapotot és a gazda felfüggesztett módba kerül, amíg az eszköz nem csatlakozik. Egyszer a gazda ellenőrzi, hogy az eszköz csatlakozott-e a meghatározott portra, ha igen, akkor a portot engedélyezi. A gazda ezek után kibocsát egy alaphelyzet beállító jelet, amit 10 ms-ig tart fent. A 10 ms lejárta után veszi csak figyelembe az engedélyezett portot. Az eszköz nem mindig tudja a rendelkezésre álló időben az alaphelyzetbe állítást megtenni. Erre a problémára folyamatosan keresik a megoldást, az Intel 8x930 USB mikrokontroller megvalósítja az osztott alapbeállítást. Ez a tulajdonság megengedi a mikrokontrollernek, hogy folytassa a kód ismétlését, addig amíg az USB eszköz nem kerül alaphelyzetbe és nem válaszol. Az alapbeállítás előtt a gazda gondoskodik az eszköz vagy hub áramellátásáról, 100 mA energiát kapcsol a Vbus/Gnd vonalra. Lehetnek olyan eszközök, amelyek nem igénylik az energiaellátást a csatlakozóról.

Felsorolás folyamata

A csatlakozó eszköz kér egy csatlakozási címet és ehhez a címhez hozzárendeli a gazda a csatlakozási értéket.

A folyamat négy lépése:

  1. lépés: A gazda kibocsát egy Get_Descriptor parancsot, amire az eszköz elküldi magáról az informáciokat: eszközosztály, gyártó információ, maximális csomag méret a végponton, stb.
  2. lépés: A gazda küldi a címet egy adatcsomagban, amit az eszköz használ, ez a Set_Address parancs.
  3. A gazdák kérésére az eszköz beolvassa a konfigurációs leírót a Get_Configuration parancs hatására. Az eszköz erre a következő információkat adja vissza: csatolók és végpontok számát, végpont átvitel típusát, csomagméretet és címzést, maximális energia szükségletet, energiaforrást (külső vagy belső), stb…
  4. Az utolsó lépésben a folyamat feldolgozás kezelő használja a Set_Configuration parancsot, amelyiken keresztül a gazda megfelelteti a konfigurációs értékeket az eszközzel.

A felsorolási folyamat végén az eszköz be van konfigurálva, készen áll az USB adatátvitelre és a tranzakciók fogadására. Amikor a gazda begyűjtötte és felsorolta az eszköz információkat átadja a gazda rendszerprogramjának. A rendszerprogram mindegyik felismert eszköz vezérlőprogramját telepíti, ha a rendszerben nincs telepítve a vezérlőprogram, akkor egy felszólítás jelenik meg, hogy tegyük be az eszköz telepítőlemezét.

Leválasztás művelete

Azonnal az eszköz leválasztása után a gazda letiltja a portot. Az USB rendszerprogram (ami része az operációs rendszernek) nyugtázza az eszköz lecsatlakoztatását és felszabadítja azokat az erőforrásokat, amiket az eszköz használt. A eszköz leválasztása után éppen az eszközt használó program nem záródik be. Például, ha egy telefon van a rendszeren és lecsatlakozatjuk a gazdáról, akkor a tárcsázó program nem fog bezáródni.

Programozási modell, amit az i8x930 használ

A 8x930 USB mikrokontroller részei: 8 bites mikrokontroller, a chip-ben lévő memória. Mindegyik végponthoz tartozik egy FIFO adatfogadó puffer. Függ az alkalmazás és az adatátvitel típusától, a felhasználó választani tud a különbözően beállított FIFO méretek közül. Átveszi a FIFO az írást, ami a CPU felé történik.

Működés közben közvetlenül használja a Special Function Registers (SFRs) (Speciális Funkciójú Regiszterek-et).


USB gyakorlati tapasztalatok

Plug and Play tökéletes formában – legalábbis azt ígérték az új csatlakozási szabvány, az USB (Universal Serial Bus) fejlesztői. Ez azonban még csak ígéret...

Majdnem három éve jelen vannak már USB eszközök a nemzetközi vásárokon. Újra és újra hallhattunk a közleményekben: “Végre elkészültek és használhatók az új eszközök!” De aztán mindig kiderült: alapvetően nem történt semmi. Csak a Windows 98 bevezetése óta sietnek a hardvergyártók piacra dobni USB termékeket, habár ezt már a Windows 95-höz is megtehették volna. (Windows 95 csak akkor ismeri fel az USB-t, ha külön telepítve van rá az USB támogatás. Ezt a Windows 95 CD-n megtalálható vagy az Internetről le is tölthető.)

Az alábbiakban azt vizsgáltam, hogy a kereskedelemi forgalomban kapható készülékek valóban kielégítik-e a felfokozott várakozást. Több USB eszközzel szerzett tapasztalataimat adom közre, de előtte nézzük meg, hogy mi is a gyakorlatban az-az USB…

Mi az USB?

Az USB az Universal Serial Bus – univerzális soros busz – rövidítése. A közepes sebességű perifériák asztali PC-kre és noteszgépekre történő csatlakoztatására szolgál.

Egy USB eszközt csak kábele vagy csatlakozója alapján lehet megkülönböztetni a hagyományos termékektől. Természetesen a belső felépítésük teljesen más. Az USB kábel nem csak adatokat szállít a készülékhez, hanem áramot is. Így fölöslegessé válik a hálózati kábel. Ez alól csak azok az eszközök kivételek, melyek 500 mA-nél több áramot igényelnek, mert ezek az USB kábelben alkalmazott megoldással már túlterhelnék a gép tápegységét. Az USB 1 bites bitsoros átvitelt tesz lehetővé multiplexszereken keresztül.

USB használatakor magából a PC-ből csak egy-két kábel indul ki (ez abban az esetben van így, ha minden lehetséges eszköz USB csatlakozóval rendelkezik), mivel a kiegészítő eszközökhöz szükséges interface-ek az USB eszközökön, a monitoron vagy billentyűzeten is megtalálhatók. Az ilyen illesztő-helyekkel rendelkező eszközöket hub-nak nevezzük. A hub növeli az USB teljesítményét, frissíti és továbbítja a digitális jeleket. Az USB eszközök tehát láncba fűzhetők, így rendet vághatunk a kábeldzsungelben.

A maximálisan öt méter hosszú kábelen vagy buszon folyó adatátvitel elérheti a 12Mbit/s-ot. Az USB különlegessége, hogy lehetővé teszi az úgynevezett hot plug-int, azaz az eszközök csatlakoztatását vagy leválasztását a programok futása közben.

Előnyök

Hátrányok

Követelmények az USB eszközökhöz

Hardver

Gépünk alaplapjának rendelkezni kell egy USB vezérlővel és megfelelő illesztő-helyekkel. Az alaplapra utólag is szerelhető USB illesztő-hely. Azonban célszerű az alaplapgyártótól rendelni az illesztőt és a csatlakozót, ugyanis ezek mindig alaplap-specifikusak.

Operációs rendszer

Egyenlőre csak a Windows 95 és a Windows 98 támogatja az USB-t. Ahhoz, hogy a Windows 95 hozzáférhessen az USB porthoz és a perifériákhoz, először egy driver-programot kell telepíteni. Erre szolgál a Microsoft USB-Supplementje, mely csak a Windows 95 B verziójától kezdve telepíthető. Először is állapítsuk meg, hogy melyik verziót használjuk. Ehhez kattintsunk a jobb egérgombbal a My Computer ikonra, és az ennek hatására megjelenő System Properties ablak General fülét választva a regiszterkártyában láthatjuk a pontos verziószámot. Csak akkor telepíthetők az USB-Supplement driverei, ha itt a 4.00.950B verziószámot látjuk. A 4.00.950 verzió tulajdonosainak azonban át kell állniuk Windows 98-ra. A driver-programokat tartalmazó Supplement a Windows 95 2.1 CD-jén található az /OTHER/USB rendezőben. A Device Manager fülre kattintva ellenőrizhetjük, hogy az USB driver már a gépünkön van-e. A telepítés után a listában megjelenik a PCI to USB universal Host Controller és az USB Root-Hub sor.

Eszközkezelő

Ha USB eszközöket szeretnénk csatlakoztatni, akkor előzőleg ellenőrizzük, hogy nincs-e hiba a rendszerben.

Lépjünk be a System -> System Properties -> Device Managerbe (Rendszervezérlő -> Rendszer -> Eszközkezelő). Ha a felsorolt eszközökben és csatlakozásokban egy piros vagy sárga kör és egy felkiáltójel látható, az a hiányos telepítésre vagy hibás működésre utal. Ismételjük meg a telepítést az USB-s eszköz csatlakoztatása előtt, mert különben hibajelzéseket kapunk.

USB eszközök Windows 95 alatt

Néhány gyártó nem tartja szükségesnek, hogy a vásárlónak a kezelési útmutatóban vagy a csomagolásban jelezze, hogy melyik Windows-verzióval használható az eszköz. Ennek következtében a vevő abból indul ki, hogy szerzeményét Windows 95-tel és 98-cal egyaránt használhatja. Pedig ez nem mindig van így, amit a Charry billentyűzet, a TrustMaster joystick és a Genius egér is bizonyít: ezeket ugyanis Windows 95 alatt nem lehetett üzembe helyezni. Bár a BIOS probléma nélkül felismerte a billentyűzetet, a driver-program hiába nem működött Windows 95 alatt.

Az Adi 19 color USB-s monitora egyik operációs rendszer alatt sem akart hubként dolgozni. A rendszer ugyan felismerte, de a rákapcsolt eszközöket nem lehetett elindítani.

USB eszközök Windows 98 alatt

Windows 98 alatt csak a Kodak videokamera és az Adi monitor hagyott cserben. A rendszer automatikusan felismeri a kamerát, és kér egy driverfrissítést, amely a mellékelt CD-ről telepíthető. Ezután azonban megjelent a Can not connect to camera üzenet, magyarán: nincs kép.

Az Adi monitor a Windows 98 a 95-höz hasonlóan Generic hubként ismeri fel, de az új operációs rendszer alatt sem lehet további eszközöket hozzákapcsolni.

A hot plug-in

Próbára tettem a készülékeket, hogy egymáshoz kapcsolva üzemelnek-e, szét- és újra összekapcsolhatók-e működés közben (hot plug-in) anélkül, hogy ez a rendszerben és a többi perifériában zavart okozna?

Először Windows 95 alatt fűztem össze őket. Hubnak az Eizo monitort választottam, mivel ez minden gond nélkül működött mindkét operációs rendszer alatt. A tesztelt berendezések Windows 95 alatt helytálltak ebben a vizsgában. Windows 98 alatt ugyanez az eredmény született: ott az Eizo monitor és a Cherry billentyűzet töltötte be a hub szerepét, hozzájuk kapcsolódott a Logitech PageScan scanner, a Genius egér, a ThrustMaster Top Gun joystick, valamint az AVM ISDN-adapter. A programfutás közbeni szét- és összekapcsolás semmit nem változott az USB-részek működése. Az USB csatlakozó és a hub minden egyes összekapcsolódáskor megjelent a monitoron az ismeretlen eszközre utaló jelzés, amit azonnal követett az eszköz automatikus rendszerbe illesztése.

Összegzés

Szinte minden hardvergyártó megígérte, hogy 1998 végéig piacra dob USB eszközöket. Hát ez az ígéret egy kicsit elhamarkodott volt…

Ha még Windows 95-öt használjuk, vásárláskor mindenképpen kérdezzük meg, hogy az eszköz működik-e Windows 95 alatt?

Az USB érezhetően megkönnyíti a telepítést. Nem kétséges, hogy óriási előrelépés. Előnyei azonban csak a telepítésre és a számtalan plusz illesztőhelyre korlátozódnak, az eszközök kezelésére nem. A nyomtató, a scanner vagy az ISDN adaper használata ettől még nem lett egyszerűbb – amit sajnos sokan elfelejtenek az USB okozta eufóriában.

Juhász Gábor G-201i
Miskolci Egyetem Gépészmérnöki Kar

Corel Linux