USB (Universal Serial Bus) Nader Bekeken

0 reacties
Inhoudsopgave
  1. 1. USB Nader Bekeken
  2. 2. Reacties

USB Nader Bekeken

Inleiding

De USB (Universal Serial Bus) standaard is alweer een hele tijd op de markt. Vrijwel alle computers die het laatste anderhalf jaar zijn gekocht hebben een USB poort geïntegreerd. Nu eindelijk vrijwel ieder randapparaat van de computer (muizen, keyboards, joysticks, scanners, printers, camera’s, modems, etc.) in een USB uitvoering is te krijgen en er binnenkort alweer een tweede USB standaard aan zit te komen (die 10 tot 20 maal zo snel wordt), wordt het de hoogste tijd om deze standaard eens wat nader te bekijken. We zullen eerst een beetje globaal analyseren wat USB precies is, waarom het is uitgevonden en wat de mogelijkheden van USB zijn. Daarna zullen we wat dieper in gaan op de techniek achter USB.

Wat is USB?

USB is een standaard aansluitmethode voor randapparatuur van de PC, die het koppelen van apparaten op het computer systeem een stuk gemakkelijker moet maken. De standaard, die is ontworpen door Compaq, IBM, Intel, Microsoft en Nec, is oorspronkelijk uitgevonden met de volgende drie doelstellingen voor ogen:

    1. Connectie van de PC met de telefoon

Hoewel de USB bus voor vrijwel ieder apparaat gebruikt kan worden is hij oorspronkelijk voornamelijk bedoeld om communicatie- en PC-systemen op elkaar te kunnen aansluiten om zo tot een veel hogere functionaliteit te komen.

    1. Een makkelijk te gebruiken aansluitmethode

Bij andere aansluit systemen van hardware moet de PC steeds opnieuw geconfigureerd worden. Dit is natuurlijk niet bevorderlijk voor de flexibiliteit van de PC. De nieuwe standaard moet hot plug-and-play zijn: dit houdt in dat apparaten meteen worden herkend als ze worden aangesloten en dus ook automatisch geconfigureerd worden en meteen klaar voor gebruik zijn. HOT plug-and-play betekent verder ook nog dat apparaten aangesloten en verwijderd kunnen worden als de PC al aan staat. Het opnieuw opstarten van de PC mag dus ook niet nodig zijn.

    1. Poort expansie

Een standaard PC heeft 2 seriële poorten en 1 parallelle poort. Meer dan drie randapparaten tegelijkertijd wordt zo dus vrijwel onmogelijk. Verder gebruiken al deze poorten aparte resources. De USB standaard zou met één set resources (dus één IRQ e.d.) een zeer groot aantal (tot max. 127) apparaten kunnen aansturen. Problemen door te weinig poorten zijn zo verleden tijd.

Al met al maakt USB het voor de PC-gebruiker een stuk makkelijker om een grote variëteit aan randapparatuur aan te sluiten. De USB standaard heeft alle drie de doelstellingen meer dan waar gemaakt: op één enkele poort kunnen zonder problemen tot 127 apparaten worden aangesloten, die inderdaad hot plug-and-play zijn. (Zou u zich al afvragen hoe je 127 apparaten op één PC moet aansluiten: dit gebeurt in een tiered-star configuratie. Hierover verderop meer.)

Om USB apparatuur te gebruiken heeft u uiteraard een computer met USB controller nodig. Zoals al vermeld hebben vrijwel alle computers van de laatste anderhalf jaar een USB poort ingebouwd. Verder is Windows 98 als besturingssysteem aan te raden. De laatste versie van Windows 95 (OSR 2.5) biedt ook enige ondersteuning voor USB, maar veel USB apparatuur functioneert niet of niet goed met de Windows 95 USB functionaliteit. Windows NT 4.0 ondersteund helaas nog geen USB. Windows 2000 (NT 5.0) zal dit weer helemaal goed maken. Natuurlijk kunnen USB apparaten ook op andere typen computers gebruikt worden. De Apple iMac heeft bijvoorbeeld ook USB als standaard externe bus.

In onderstaand plaatje is een standaard USB plug te zien en twee USB poorten zoals die op vrijwel ieder ATX-moederbord voorkomen.


USB kan zoals al vermeld voor vrijwel ieder type randapparaat gebruikt worden. De bandbreedte van USB (12 Megabit/sec.) is snel genoeg voor vrijwel alle "medium to low speed"-apparatuur, zoals telefoons, digitale camera’s, modems, toetsenborden, muizen, digitale joysticks, CD-Rom drives, tape- en floppydrives, scanners en printers. Nieuwere standaarden van USB die er aan zitten te komen (USB 2.0) zorgen voor een bandbreedte van 120 Mbit tot 240 Mbit, wat zelfs snel genoeg is voor snelle harddisks, video-streams, etc. In de onderstaande tabel wordt de snelheid van USB vergeleken met de snelheid van andere bussen. Zoals te zien is USB zeker veel sneller dan bijvoorbeeld de seriële en de parallelle poort:

Poort / Bus:

Snelheid (Megabit/sec)

Snelheid (Megabyte/sec)

USB

12 Mbit/s

1,5 MB/s

Seriële Poort

115 kbit/s = 0,115 Mbit/s

14 KB/s = 0,014 MB/s

Standaard Parallelle Poort

0,92 Mbit/s

0,115 MB/s (115 KB/s)


Uiteraard zijn standaarden als SCSI (5 MB/s – 80 MB/s) en IEE-1394 "Firewire" (12,5 MB/s – 50 MB/s) nog een stuk sneller, maar deze missen de grote flexibiliteit en hot plug-and-play mogelijkheden van USB.

Nog een leuke anekdote over USB: het USB IF (USB Implementers Forum) heeft, om aan te tonen dat USB inderdaad een goed werkend systeem is, een wereld recordlijst gemaakt voor mensen die de meeste USB apparaten op één PC krijgen aangesloten. Het huidige record ligt bij Intel, die op de Intel’s Developers Forum in September 1998 tegelijkertijd 101 apparaten op één PC aangesloten hadden via USB. Aangezien er theoretisch 127 apparaten tegelijkertijd kunnen worden aangesloten kan dit record nog altijd verbroken worden. Iedereen die interesse heeft moet maar eens kijken op www.usb.org !

USB apparatuur

Zoals al vermeld is USB primair ontworpen voor low en medium speed apparaten. Voor al deze apparaten heeft USB een aantal positieve kenmerken. Met de komende USB 2.0 standaard, die overigens volledig forward- en backward-compatible is met de huidige USB 1.1 standaard, zijn die er ook voor high speed apparaten. Een aantal van deze eigenschappen zijn in de onderstaande tabel terug te vinden:

Performance:

Apparaten:

USB Eigenschappen:

LOW SPEED
(Interactieve devices)
10 – 100 kb/s
Bijv. Toetsenborden, muizen, joysticks, gamepads, VR-devices, etc.
Lage kosten
Hot plug-and-play
Makkelijk te gebruiken
Meerdere apparaten tegelijkertijd
MEDIUM SPEED
(telefoon, audio, compressed video)
500 kb/s – 10 Mb/s
Bijv. ISDN adapters, modems, USB speakers, audio in/out, webcams, etc.
Lage kosten
Makkelijk te gebruiken
Gegarandeerde (lage) wachttijden en gegarandeerde bandbreedte bij data overdracht
Dynamisch aan- en afkoppelen
HIGH SPEED
(video, disk)
25 MB/s – 240 MB/s
Bijv. Streaming video, externe harddisks, etc.
Hoge bandbreedte
Gegarandeerde (lage) wachttijden


Zoals in de tabel te zien heeft USB voor ieder type apparaat wel enkele grote voordelen. Voor low speed apparatuur is dit voornamelijk de lage kosten van de interface, het hot plug-and-play principe en de mogelijkheid om veel apparaten tegelijkertijd te kunnen gebruiken. Voor medium speed apparaten komt hierbij dat de USB bus een apparaat een bepaalde bandbreedte en bepaalde (lage) wachttijden kan garanderen bij data overdracht. Dit zorgt er bijvoorbeeld voor dat de kans op frame drops bij webcams of het wegvallen van geluid bij USB speakers vrijwel nul is. De nieuwe USB standaarden kunnen voor high speed apparaten daarbij zelfs een zeer hoge bandbreedte garanderen die hoog genoeg is voor streaming video of externe harddisks.

Nog een kanttekening bij het fenomeen USB speakers: deze boxen kunnen rechtstreeks worden aangesloten op de USB poort. Een geluidskaart is dan niet nodig meer. Aangezien het geluid rechtstreeks digitaal naar de boxen gaan is de geluidskwaliteit zeer hoog. Nadelen zijn de afwezigheid van line-in’s en mic-in’s en de tegenvallende MIDI-kwaliteit, aangezien deze softwarematig moeten worden gegenereerd.

Een voordeel voor de USB apparatuur is dat er een standaard USB kabel is. Die heeft aan de apparaat kant een kleine soort van vierkante connector en aan de andere kant een platte rechthoekige connector. Deze kan in de USB poort in de computer worden gestoken, of in een zogenaamde USB Hub. Hierover verderop meer.

USB apparatuur kan zich zelf identificeren aan de computer. Zodra bijvoorbeeld een USB muis wordt aangesloten wordt er automatisch aan de computer gemeld door het apparaat dat het een muis van merk X en type Y is. De computer kan dan automatisch de juiste drivers laden. Voor minder PC-bekwame mensen is het aansluiten van PC-apparatuur zo ook een stuk makkelijker, aangezien de computer precies weet welke drivers hij nodig heeft.

Bij het voor het eerst aansluiten van USB apparatuur moet overigens een andere volgorde worden aangehouden dan bij andere apparatuur. Eerst dienen de drivers worden geïnstalleerd die bij het apparaat worden geleverd. Pas dan mag het apparaat worden ingestoken in een USB poort. De computer identificeert dan automatisch het USB apparaat en spreekt het meteen met de juiste drivers aan. De driver-cd kan dan de kast in en het USB apparaat is hot plug-and-play.

Een USB apparaat moet aan een drietal eisen voldoen:

  1. De datacommunicatie moet volledig compatible zijn met het USB protocol
  2. Het apparaat moeten op de juiste manier kunnen reageren op standaard USB operaties als configuratie en reset.
  3. Het apparaat moet zich zelf afdoende kunnen beschrijven aan de host controller.

De architectuur van USB

Zoals al vermeld kunnen er tegelijkertijd 127 USB apparaten op één PC worden aangesloten. Aangezien er meestal maar twee USB poorten aanwezig zijn op een PC is hier natuurlijk wel wat extra hardware voor nodig, te weten een USB Hub. Een USB Hub wordt ingeprikt op een USB poort en biedt zelf ook weer een aantal USB poorten aan. USB Hub's zijn er niet alleen als losse kastjes, maar zitten ook vaker geïntegreerd in bijvoorbeeld monitoren en toetsenborden. USB Hub's kunnen ook weer aangesloten worden op een andere USB Hub, en zo verder. Zo kan er uiteindelijk in een zogenaamde "tiered-star" opstelling tot maximaal 127 apparaten worden gekomen. Tiered-star houdt in dat aansluitingen in de vorm gaan van een ster (meerdere apparaten worden bijvoorbeeld op een HUB aangesloten) en dat de ene ster is doorgelust op de andere. Andere systemen die van een tiered-star configuratie gebruik maken zijn bijvoorbeeld UTP-netwerken. Onderstaand plaatje zal de tiered-star nog wat verduidelijken:

Er zijn duidelijk drie verschillende typen apparaten te onderscheiden:

    1. De USB host

Dit is de USB controller die te vinden is in het computersysteem. De meeste nieuwe moederbord chipsets hebben USB functionaliteit standaard ingebakken. De USB host in de computer heeft meestal standaard 1 of 2 USB poorten. Dus pas indien u meer dan 2 USB apparaten wilt aansluiten is een HUB noodzakelijk.

    1. USB Interconnects

Dit zijn dus de zogenaamde USB Hub's die voor verdere vertakking van de "USB boom" zorgen.

    1. De USB devices

In de afbeelding aangeduid met "nodes". Dit zijn de uiteindelijke USB apparaten.

In onderstaande afbeelding is een typische implementatie van een HUB te zien:

Zoals te zien heeft de HUB een uplink-poort waardoor hij wordt aangesloten op een HUB in een hogere laag in de driehoek of rechtstreeks op de USB host. Aan de andere kant zitten dan een aantal nieuwe USB poorten. Een HUB converteert zo een enkele USB poort naar meerdere USB poorten. Een HUB bestaat uit twee gedeelten: een HUB controller en een HUB repeater. De HUB repeater is een protocolaangestuurde switch tussen de upstream poort en de downstream poorten. Iedere downstream poort kan afzonderlijk in- of uitgeschakelt worden en ingesteld worden op low-speed (1,5 Mb/s) of high-speed (12 Mb/s). De HUB controller verzorgt de communicatie tussen de USB Host en de HUB en de daar aan hangende apparaten. Hub's worden vaak verwerkt in monitoren en toetsenborden. Een typische USB configuratie, zoals die bij uw computer kan voorkomen, wordt afgebeeld in de volgende afbeelding:

USB werkt met vier kabels, waarover zowel de stroom als de data signalen worden gestuurd. Onderstaande afbeelding laat dit wat duidelijker zien:

Aangezien niet ieder USB apparaat een eigen voeding hoeft te hebben (een muis zou bijvoorbeeld erg onhandig zijn als je hem ook nog eens in het stopcontact moet stoppen) zijn twee draden voor de stroom toevoer voor apparaten die hun power uit de USB-bus willen halen. Op een van de draden staat Vbus (5V) en de andere (GND) is geaard (0V). Apparaten zonder eigen voeding mogen maximaal 100 mA uit de bus trekken. Deze apparaten heten zogenaamde "bus-powered devices", in tegenstelling tot "self-powered devices", die een eigen stroomvoorziening hebben. Power-leveranciers voor de bus zijn o.a. de host-controller en de Hub's. De andere twee kabeltjes, D+ en D-, die om elektromagnetische storingen tot een minimum te beperken getwist in de USB kabel zitten, zorgen voor de dataoverdracht. Hoe deze dataoverdracht precies in zijn werk gaat zullen we verderop analyseren.

Voor USB kabels zijn twee verschillende typen connectors. De A type connector (plat rechthoekig) is voor aan de kant van de host controller of HUB. De B type connector is altijd voor aan de kant van het aangesloten apparaat. Hub's worden ook altijd aangesloten d.m.v. A/B kabel. Sterker nog: voor iedere USB aansluiting voldoet altijd een standaard A/B kabel en andere kabels hebben geen nut. Sommige kabelleveranciers maken om onbekende redenen A/A-kabels. Deze kabels hebben niet alleen geen enkel nut, maar zijn ook nog eens erg gevaarlijk. Als een dergelijke kabel door een onwetend iemand wordt gebruikt in een poging om twee computers met elkaar te verbinden (of om twee Hub's met elkaar te verbinden) worden de spanningsbronnen van beide computers/Hub's op elkaar aangesloten. Dit zal altijd leiden tot het kapot gaan van de USB-controllers, en wellicht meer zaken in de computer. De A/A kabel wordt een zogenaamde "illegale kabel" genoemd en gelukkig komen steeds meer kabel leveranciers er achter dat ze kabels zonder nut maken.

Het USB protocol

Zoals al vermeld heeft USB maar twee datakabels. Hierdoor is het onmogelijk om met interrupts vanuit de USB apparaten te werken. De USB heet daarom een zogenaamde polled bus: alle datacommunicatie wordt geregeld vanuit de host controller. USB heeft zoals al vermeld twee verschillende data rates: de full-speed mode van 12 Mb/s en low-speed mode van 1,5 Mb/s. Low-speed apparaten worden door de HUB waarop ze aangesloten zijn gescheiden van high-speed communicatie. De kabels van de low-speed apparaten hoeven daardoor minder afgeschermd te zijn, waardoor een goedkopere implementatie mogelijk is.

De USB apparaten zijn hot plug-and-play en kunnen dus worden aangesloten en van de bus worden verwijderd wanneer men wil. Om dit systeem te laten functioneren moet niet alleen de software (bijvoorbeeld het besturingssysteem) hiervoor voorbereid zijn, maar moet ook de USB host controller de bus de hele tijd in de gaten houden. Om de zoveel tijd vraagt de USB host aan alle Hub's (en natuurlijk ook aan de controller op het moederbord) of er nieuwe apparaten zijn aangekoppeld of dat er apparaten zijn afgekoppeld. Indien dit het geval is spreekt de USB host het nieuwe apparaat aan op een default USB-adres. (Ieder apparaat op de bus heeft een uniek USB-adres). De host controller geeft het apparaat een nieuw uniek USB-adres op de bus en vraagt het apparaat om de nodige informatie. De USB-adressen worden door de host opeenvolgend genummerd. (Er kunnen maximaal 127 apparaten worden aangesloten dus deze kunnen met 7 bits worden geadresseerd.) Als eerste kijkt de USB host of het aangesloten apparaat een HUB is of een ander apparaat is. Indien het aangesloten apparaat inderdaad een HUB wordt bovenstaande operatie herhaald voor alle apparaten die aangesloten zijn op de betreffende HUB. Indien het aangesloten apparaat geen HUB is vraagt de USB host een karakterisatie van het aangesloten apparaat. Het apparaat geeft dan drie zaken door: ten eerste geeft het apparaat door wat voor type apparaat het is (een muis, een scanner, etc.). Ten tweede geeft het apparaat de VID (Vendor ID) door, waardoor de USB software weet van welke fabrikant het apparaat is. Ten derde wordt een PID (Produkt ID) doorgegeven zodat de software weet welk apparaat van de al bepaalde fabrikant het is. Indien voor het type een standaard driver is (bijvoorbeeld voor standaard muizen) wordt deze meteen geladen. Indien dit niet het geval is weet de software door de VID en de PID precies voor welke driver hij zoeken. Zodra de driver eenmaal geïnstalleerd is wordt hij altijd automatisch gebruikt zodra het apparaat wordt aangekoppeld.

Alle communicatie over bus neemt transmissie van 3 data packets met zich mee: Iedere datatransactie begint met de host die een USB pakketje (het zogenaamde "tocken-packet") verstuurd met daarin het type van de transactie en de weg die de transactie moet afleggen. Dit is dus het USB adres van het apparaat waar de data vandaan moet komen en het USB adres van het apparaat waar de data naar toe moet. Een van beide is altijd de USB host. Een USB apparaat komt er achter dat hij een rol in de transactie speelt door het decoderen van de adres velden. De bron van de datatransactie stuurt dan de datapakketjes of geeft door dat er geen data door te geven is. Het doelwit van de transactie stuurt als laatste nog een handshake-pakket om door te geven of de transactie succesvol is gelukt of niet. Indien een transactie niet is gelukt (bijvoorbeeld door een error in de data) zal de transactie opnieuw worden geïnitieerd. Zo zal bijvoorbeeld bij een USB muis de USB host om de zoveel tijd de muis gebieden data (muiscoördinaten etc.) door te geven naar zichzelf. In de computer kunnen ze dan verwerkt worden.

Om te controleren of datatransacties goed verlopen gebruikt USB een error-detectie systeem. Zowel bij de control- als data-velden van pakketjes wordt CRC informatie toegevoegd. Zodra de pakketjes aankomen wordt er een CRC check uitgevoerd. De CRC houdt alle fouten van één of twee foute bits per byte tegen. Zodra een pakket met een foute CRC aankomt zal de transactie opnieuw worden ingezet. Als een datatransactie tot drie keer mislukt geeft de USB host controller dit door aan de betreffende software. Deze kan dan de nodige stappen ondernemen.

De data uitwisseling op de bus vindt altijd plaats tussen de USB host en een USB apparaat. Een dergelijke verbinding tussen de host en een apparaat wordt een "pipe" genaamd. Deze pipes kunnen zowel uni-directioneel als bi-directioneel zijn. USB kent vier verschillende datatransfers die door een pipe gezonden kunnen worden:

  1. Control Transfers. Deze worden onder andere gebruikt om een apparaat te configureren als het wordt aangesloten. Maar ook andere andere aansturings instructies zijn control transfers.
  2. Bulk Data Transfers. Bulk data transfers zijn relatief grote datatransfers die variabele lengte hebben. Voorbeeld van bulk transfers is de informatie die een scanner doorgeeft als hij een foto aan het scannen is of de informatie die een computer naar de printer stuurt bij een printopdracht. Bulk transfers zijn wel groot, maar niet tijdkritisch. Indien andere apparaten de bus dringend nodig hebben kan de bandbreedte van bulk transfers dynamisch worden aangepast.
  3. Interrupt Data Transfers. Dit zijn korte transfers die op tijdkritische momenten moet worden doorgegeven. Alleen software kan een dergelijke interrupt aangeven (USB apparaten hebben geen interrupt mogelijkheid) en de host zorgt ervoor dat deze meteen worden uitgevoerd. Een voorbeeld is de informatie van een USB muis die om de zoveel tijd moet worden doorgegeven.
  4. Isochronous Data Transfers. Deze maken gebruik van een van te voren bepaald gedeelte van de USB bandbreedte en eisen een gegarandeerd (lage) wachttijd. Voorbeelden van deze ook wel streaming real-time transfers zijn bijvoorbeeld de audio signalen die naar USB speakers gaan, of de beeldinformatie die vanuit een USB Webcam komt. De wachttijden moeten laag genoeg zijn zodat een ingebouwde buffer alles kan bijhouden.

Iedere pipe kan maar een enkel type datatransfer verwerken. Uiteraard is het wel mogelijk om meerdere pipes per apparaat te hebben. Voor iedere pipe wordt een bepaalde bandbreedte ingesteld. Uiteraard vereisen apparaten die een grote bandbreedte nodig hebben ook een grote buffer.

Conclusie

Dit was kort samengevat de werking de USB standaard. Zoals wel duidelijk wordt uit de tekst is over deze standaard goed nagedacht en maakt hij zijn doelstellingen zeker waar. In de PC’99 standaard van Microsoft komt al geen parallelle en seriële poort meer voor: dit geeft zeker aan dat USB ondertussen een zeer ingeburgerd systeem is. De komende tijd zullen er nog steeds meer USB apparaten op de markt komen en met de aankomende USB 2.0 standaard kan de pret al helemaal niet meer op!

0
*