USB bus
USB Producten Home

USB-51
USB bus
USB Solution
Hardware
Inputs
Outputs
Software

Inleiding

USB is een afkorting voor ‘Universal Serial Bus’. Deze term staat voor een bus waarop gegevens in seriële vorm worden overgedragen, en die zo universeel is opgezet dat er allerlei verschillende apparaten op kunnen worden aangesloten.

De bus is ontwikkeld door een consortium van fabrikanten, waaronder Microsoft, Intel, IBM en Compaq. De bedoeling was om een oplossing te bieden voor de problemen waarmee PC gebruikers geconfronteerd kunnen worden bij het aansluiten van randapparatuur aan hun computer. Door randapparatuur via USB aan te sluiten, kunnen een aantal wezenlijke voordelen worden behaald:

  1. De achterkant van een gemiddelde PC is een wirwar van snoeren, met daaraan allerlei verschillende stekkers. Als alle randapparatuur via USB wordt aangesloten, dan blijft er nog slechts één soort snoer over, waarmee alle apparaten met de PC kunnen worden verbonden. Dit zal niet alleen de overzichtelijkheid sterk bevorderen, maar bovendien is USB zodanig uitgedacht dat het niet mogelijk is een verkeerde aansluiting te maken.

  2. Installeren van een nieuw apparaat is met USB een kwestie van uitpakken en inpluggen. Daarna zal de PC het nieuwe apparaat zelfstandig ontdekken en automatisch om de bijbehorende software vragen.

  3. Er kunnen op USB tot 127 apparaten tegelijkertijd worden aangesloten. Dit is heel wat meer dan er op een PC zonder USB aangesloten kunnen worden.

  4. Een apparaat dat via USB wordt aangesloten, heeft nooit een eigen insteek kaart nodig. De systeemkast hoeft dus niet open, en er worden geen vrije slots in beslag genomen. Er zijn ook geen eigen interrupts, DMA kanalen of I/O adressen nodig. Het nare probleem van conflicten op dat gebied wordt hiermee uit de wereld geholpen.

  5. USB staat toe dat apparaten worden aangesloten of weggehaald terwijl de PC volop in bedrijf is. Het operating system zal dit automatisch opmerken, en de juiste actie ondernemen. Bijvoorbeeld door de juiste drivers te laden.

Het staat wel vast dat in de toekomst de meeste randapparatuur voorzien zal zijn van een USB aansluiting. De standaard geniet brede ondersteuning van de industrie, en nagenoeg alle fabrikanten van computer randapparatuur werken aan nieuwe producten met USB aansluiting, of hebben die al op de markt.

Hardware

USB is een seriële bus. In de verbindingskabels zitten twee getwiste aders voor de data, en twee iets dikkere aders voor de voeding. De kabels, de connectors en de aansluitingen zijn gestandaardiseerd.

Snelheid

Ofschoon de USB bus geschikt is om tot 127 apparaten tegelijkertijd aan te sluiten, zal het meestal niet mogelijk zijn om alle apparaten tegelijkertijd volop aan het werk te hebben. De capaciteit van de verbinding (de hoeveelheid data die per seconde getransporteerd kan worden) zal een beperking stellen aan het aantal en de soort apparaten die tegelijk aan het werk kunnen zijn. Als bijvoorbeeld een printer, een scanner en een paar USB luidsprekers zijn aangesloten, kan het zijn dat het printen even wordt onderbroken (of wat langzamer gaat) wanneer een gescande foto wordt ingelezen, terwijl onder het genot van een muziekje een document wordt afgedrukt.

Om optimaal gebruik te kunnen maken van de capaciteit van de bus, zijn er twee soorten apparaten gedefinieerd. Er wordt onderscheid gemaakt tussen:

bullet

‘Low speed’ (langzame) apparaten, en

bullet

‘High speed’ of ook wel ‘Full speed’ (snelle) apparaten.

Low speed

Low speed apparaten zijn bijvoorbeeld een muis, een joystick of een keyboard. Deze hebben relatief weinig data te versturen, en kunnen toe met een klein deel van de capaciteit van de bus. De snelheid waarmee deze apparaten over de bus kunnen communiceren is beperkt tot maximaal 1.5 Mb per seconde.

High speed

High speed apparaten zijn bijvoorbeeld een printer, een scanner of een stel USB luidsprekers. Deze apparaten hebben regelmatig veel data te versturen of te ontvangen, en krijgen dan een groot deel van de beschikbare capaciteit op de bus toegewezen. Full speed apparaten kunnen communiceren met een snelheid van 12 Mb per seconde.

USB apparaten aansluiten

De meeste PC’s hebben twee aansluitingen voor een USB kabel. Hierop kunnen direct twee apparaten worden aangesloten. Als er meerdere aansluitingen nodig zijn, dan moet er een verdeeldoosje worden gebruikt. Zo’n verdeeldoos (een ‘hub’) wordt in plaats van een gewoon apparaat op de USB aansluiting van de PC aangesloten, en levert dan een aantal (meestal vier) nieuwe USB aansluitingen op. Een hub is geen passief ding, maar bevat alle elektronica die nodig is om de aangesloten USB apparaten te beheren. In feite bevat de hub een groot deel van de functies die nodig zijn om de USB bus goed te laten functioneren, en is de USB aansluiting op een PC eigenlijk ook een hub (de zogenaamde ‘root-hub’).

HUBs

Elk USB apparaat wordt dus op een hub aangesloten, en als er nog meer aansluitingen nodig zijn, kan op een bestaande hub weer een nieuwe hub worden aangesloten. Natuurlijk kan dit niet steeds maar doorgaan. Vanaf de PC mag er maximaal vier niveau’s verder gegaan worden. Dus maximaal kan de USB vanaf de PC naar een hub worden gevoerd, van daaruit naar nog een hub, en van daaruit naar nog weer een hub. Op deze laatste hub mogen alleen nog apparaten worden aangesloten.

Hubs zijn los te koop, maar zijn ook vaak ingebouwd in een wat groter apparaat dat een USB aansluiting heeft. Heel handig zijn bijvoorbeeld beeldschermen met ingebouwde hub. Het beeldscherm zelf wordt dan bestuurd via USB, en geeft meteen de mogelijkheid een aantal andere USB apparaten aan te sluiten.

Aansluiten van USB apparaten

Kabels

De snoeren die gebruikt worden om USB apparaten aan te sluiten zijn gestandaardiseerd, evenals de stekkers die eraan moeten zitten. De stekkers die aan de kant van de ‘host’ (de kant van de PC) zitten, hebben een andere vorm dan de stekkers die in een apparaat gaan. Eén kant van de kabel past alleen in een hub (of in de PC, die eigenlijk ook een hub is), en het andere eind van de kabel past alleen in een randapparaat. Hierdoor is het uitgesloten dat bij vergissing bijvoorbeeld twee apparaten met elkaar worden verbonden, of dat een hub met één van zijn ‘uitgangen’ op de PC wordt aangesloten.

In de verbindingskabels zitten twee getwiste aders voor de data, en twee iets dikkere aders voor de voeding. Er zijn twee typen kabels gedefinieerd:

bullet

Voor full speed apparaten is een afgeschermde kabel voorgeschreven. Deze afgeschermde kabel mag maximaal 5m lang zijn.

bullet

Voor low speed apparaten kan eventueel volstaan worden met een niet afgeschermde kabel. Deze mag maximaal 3m lang zijn.

Een niet afgeschermde kabel kan wat soepeler zijn dan een kabel met afscherming. Om bijvoorbeeld een muis, een joystick en een toetsenbord toch met een soepele kabel uit te kunnen rusten, is een niet afgeschermde kabel voor langzame apparaten met korte verbindingen toegestaan. De kabel zit aan één kant direct aan het apparaat vast, waardoor de niet afgeschermde kabel niet per ongeluk gebruikt kan worden om bijvoorbeeld een scanner (een full speed apparaat) aan te sluiten.

Standaard USB kabel

Type A connectors

Dit type connector zit aan de kant van de kabel die in de PC of een hub moet. Dus aan de ‘PC-kant’ van de kabel.

Kabeldeel type A (vooraanzicht)

Type B connectors

Dit type connector zit aan de kant van de kabel die in het rand apparaat gaat. Vaak zit de kabel direct aan het apparaat vast, en dan wordt dit type connector niet gebruikt.

Kabeldeel type B (vooraanzicht)

Chassisdeel type B (vooraanzicht)

Signalen

De aansluitingen zijn:

  1. Vusb. Dit is een voedings spanning. Apparaten die niet te veel stroom gebruiken kunnen direct uit de bus gevoed worden.

  2. D-. Dit is één van de twee signaal draden.

  3. D+. Dit is de andere signaal draad.

  4. GND.

Data wordt in één richting tegelijkertijd over de signaal draden gestuurd. Het signaal is differentieel, een ‘1’ betekent dat D+ hoog is, en D- laag, terwijl een ‘0’ betekent dat D+ laag is, en D- hoog. De data signalen zijn compatible met low-voltage (3.3V) TTL.

Een speciaal geval is wanneer D+ en D- beide laag zijn. Dit wordt gebruikt om het einde van een boodschap aan te geven, en om een reset signaal via de bus door te geven.

Als de bus niet in gebruik is (idle) wordt D+ hoog gehouden, en D- wordt laag gehouden. Als de bus langer dan 3ms achtereen idle is, moeten randapparaten in een energie zuinige toestand gaan (suspend.) In de suspend toestand mag een apparaat niet meer dan 500µA (gemiddeld) uit Vusb gebruiken.

Voeding

Apparaten kunnen worden aangesloten en losgenomen terwijl de bus in bedrijf is. Daarom zijn in de connectoren de pinnen waarop de voedings spanning staat, iets verder naar voren geplaatst dan de pinnen waarover de data getransporteerd wordt. Bij aansluiten zal het apparaat eerst voedings spanning krijgen, en daarna pas zullen de pinnen met signalen contact maken.

Voeding uit de bus

Een USB apparaat kan geheel of gedeeltelijk uit de op de bus beschikbare Vusb gevoed worden. De stroom die een apparaat uit Vusb gebruikt, moet uiteindelijk door een hub geleverd worden. Ook een hub kan zodanig ontworpen zijn dat hij uit de bus gevoed moet worden. Een hub kan ook uitgerust worden met een eigen voeding. Een hub die uit de bus gevoed wordt, moet aan elk aangesloten apparaat 100mA kunnen leveren. Een hub met eigen voeding moet aan elk daarop aangesloten apparaat 500mA kunnen leveren. Voor een apparaat is dus nooit meer dan 500mA uit de USB voeding beschikbaar.

De root-hub (de hub die in de PC zit) wordt meestal uitgevoerd als een hub met een eigen voeding. Maar de hub in een notebook PC kan wel eens worden beschouwd als een hub met busvoeding, die dus niet veel stroom kan leveren.

Als een apparaat wordt aangesloten, mag het in eerste instantie nooit meer dan 100mA uit Vusb gebruiken. Gedurende deze eerste fase wordt het apparaat door de host (de PC) ondervraagd. Zo weet de PC wat voor soort apparaat werd aangesloten, en welke drivers er geladen moeten worden. Maar ook wordt informatie opgevraagd over het stroomverbruik van het apparaat wanneer het aan staat. Als er niet voldoende stroom beschikbaar is voor het apparaat, moet het misschien op een andere hub, die meer energie beschikbaar heeft, worden aangesloten.

Suspend

Als de bus langer dan 3ms achtereen idle is (geen dataverkeer), moeten alle randapparaten in een energie zuinige toestand gaan (suspend.) In de suspend toestand mag een apparaat niet meer dan 500µA (gemiddeld) uit Vusb gebruiken.

Configuratie

Als een apparaat op de USB bus wordt aangesloten, moet de betreffende hub weten met welke snelheid het apparaat kan worden benaderd. De hub kan herkennen of het een low-speed (1.5Mb per seconde) of een high-speed (12Mb per seconde) apparaat betreft. Dit gebeurt aan de hand van een pull-up weerstand op de D- of de D+ lijn. Een low-speed apparaat heeft een pull-up weerstand op de D-lijn, en een high-speed apparaat heeft een pull-up weerstand op de D+ lijn. Zodra de snelheid waarmee het apparaat communiceert bekend is, kan er data transport plaatsvinden.

Alle USB apparaten hebben een tabel aan boord waarin de basisgegevens staan die nodig zijn om het apparaat te herkennen. Deze tabel kan door de host worden uitgelezen. Daardoor krijgt de host gegevens over het soort apparaat, de fabrikant, het type, etc. Aan de hand van deze gegevens kan de host de juiste drivers laden. Als deze geladen zijn, krijgt het apparaat van de host een eigen nummer, waarmee het op de USB bus geadresseerd kan worden. Dat adres wordt vanaf dat moment bij alle communicatie tussen de host en het apparaat gebruikt.

Software

USB wordt op Windows machines niet ondersteund op operating systems vóór Windows ’95 OSR2.5 (dit is OSR2.1, met een speciale USB uitbreiding die los geinstalleerd moet worden.) De OSR-versies (‘OEM Service Release’) zijn niet los te koop, maar kunnen alleen worden geleverd bij aanschaf van een nieuwe PC.

Als USB gebruikt gaat worden, verdient het zonder meer aanbeveling om Windows ’98 te installeren. Windows ‘98 geeft volledige ondersteuning van USB.

Drivers

Als een apparaat herkend is door Windows, gaat Windows een bijbehorende driver zoeken. Als die niet op de hard disk gevonden kan worden, wordt de gebruiker om een driver gevraagd. Als deze eenmaal een keer geinstalleerd is, weet Windows welke driver bij het betreffende apparaat hoort, en zal deze voortaan laden als het apparaat wordt aangesloten.

Elk apparaat zou dus een eigen driver moeten hebben. Alle fabrikanten van muizen, joysticks, keyboards, etc zouden dan eigen drivers moeten schrijven voor al hun producten. Aangezien zeer veel apparaten erg veel op elkaar lijken, zou dit niet erg efficiënt zijn. Voor dit type apparaten (HID apparaten, Human Interface Devices) is dan ook een alternatief geboden.

HID apparaten

Voor apparaten die de interface tussen de gebruiker en het systeem vormen, is een aparte klasse opgesteld. Hiertoe behoren onder andere:

bullet

Keyboard

bullet

Muis

bullet

Joystick

bullet

Monitor

bullet

etc…

Voor apparaten van dit type heeft Windows (alleen Windows ’98, dus NIET Windows ’95 OSR2.5) eigen drivers aan boord.

Bij aansluiten wordt een HID apparaat herkend door een speciale verwijzing in de configuratie tabel die bij aansluiten uit het apparaat wordt opgehaald. Deze verwijzing laat Windows weten dat het met een HID apparaat van doen heeft. Windows zal dan niet om een specifieke driver vragen, maar zal nog meer tabellen uit het apparaat ophalen, om uit te vissen wat voor soort apparaat het is, welke inputs het apparaat kan leveren, welke outputs er zijn, etc. Dus de beschrijving van wat het apparaat allemaal precies kan is opgeslagen in tabellen in het apparaat zelf. De wijze waarop de tabellen vorm gegeven moeten worden is vastgelegd in een specificatie.

Bios

Als er speciale drivers in Windows moeten worden geladen om een apparaat te besturen, kan dit apparaat nooit worden gebruikt voordat Windows is geladen en actief is. Dit is een probleem bij apparaten zoals een keyboard. Dit moet al meteen beschikbaar zijn nadat de PC is aangezet, en al voordat Windows compleet geladen is.

Ook hier biedt de HID specificatie een oplossing. Het BIOS kan de allernoodzakelijkste code bevatten voor het aansturen van bijvoorbeeld een HID keyboard. Deze code zal dan werken met elk keyboard dat volgens de HID specificatie is gebouwd, zonder dat voor elk type een eigen driver nodig is.

USB apparaten ontwikkelen

Als een USB apparaat moet worden ontwikkeld, of een bestaand apparaat van een USB interface moet worden voorzien, dan vereist dit nogal wat ontwikkel inspanningen en veel gedetaileerde kennis van de USB specificaties en van Windows. In onderstaande figuur is aangegeven welke ontwikkeling gedaan moet worden als een apparaat een USB interface moet krijgen.

USB toevoegen aan een bestaand apparaat

Dit vereist dus afhandeling van het USB protocol aan de kant van het apparaat, en een Windows device driver aan de kant van de PC.

USB eenvoudig

Het kan ook eenvoudiger dan zoals hierboven beschreven is. Er is een oplossing op de markt, die de mogelijkheid geeft eenvoudig en snel een USB interface toe te voegen aan een apparaat. Aan de kant van het apparaat bestaat dit uit een chip, waarin het complete USB protocol wordt afgehandeld, met een eenvoudige 3-draads interface naar de rest van het apparaat. Aan de kant van de PC bevat deze oplossing een aantal eenvoudig te gebruiken Delphi componenten, die opgenomen kunnen worden in het toepassings programma.

USB toevoegen mbv de USB oplossing

Het gedeelte tussen de stippellijnen wordt door de USB oplossing verzorgd. Het probleem om USB toe te passen wordt teruggebracht tot het aansluiten op de 3-draads interface. Voor het toepassings programma staan een aantal Delphi componenten ter beschikking. Het is dus niet nodig Windows drivers te ontwikkelen.

Apparaat interfaces

De USB chip zoals boven beschreven kent drie verschillende opties voor de interface met de rest van het apparaat dat aan USB moet worden aangesloten:

  1. Een 3-draads interface waarmee de chip zich als een I2C component laat besturen

  2. Een 4-draads interface waarbij de chip zich als SPI master gedraagt.

  3. Een 4- of 5-draads interface waarmee de chip direct een aantal schuifregisters kan lezen en schrijven.

De keuze voor het type interface wordt gemaakt door enkele pinnen van de chip het juiste logische niveau te geven.

3-Draads interface

Met deze interface laat de chip zich als een I2C compatibele component aansturen. Het I2C protocol mag genoegzaam bekend worden verondersteld, en voor elke micro-controller zijn wel routines beschikbaar waarmee het protocol in software kan worden geimplementeerd. Deze routines zijn direct of met geringe wijziging toepasbaar voor het aansturen van de USB chip. Deze 3-draads interface is vooral interessant voor apparaten die al over een eigen micro-controller beschikken.

Data transport gaat steeds in blokken van 64 bits tegelijk. Zodra er via de USB data beschikbaar komt in de chip, wordt een ‘AVAILABLE’ pin laag gemaakt. De in het apparaat ingebouwde micro-controller kan dan vervolgens de data uit de chip lezen. Als de data is uitgelezen, wordt de ‘AVAILABLE’ pin weer hoog gemaakt.

Op dezelfde wijze kan de in het apparaat aanwezige micro-controller een blok van 64 bits naar de USB chip schrijven. Deze zal de data via USB naar de PC sturen.

4-Draads interface

Met deze interface werkt de USB chip als een SPI master. Het SPI protocol is bekend van oa. Motorola micro-controllers, en is op heel veel typen micro-controllers standaard aanwezig.

Zodra de USB chip data ontvangt van de PC, activeert deze een ‘AVAILABLE’ signaal. Daarna wordt de ontvangen data naar de micro-controller gestuurd. De USB chip zet hiertoe de data bit- voor bit op een data uitgang, en genereert voor elk bit een klokpuls. Na elke klokpuls wordt een data ingang op de USB chip gelezen. Zodoende wordt, terwijl de ontvangen data naar de micro-controller wordt geklokt, meteen data vanuit de micro-controller de USB chip in geklokt. Als alle bits op deze wijze uitgewisseld zijn, worden de uit de micro-controller ontvangen bits naar de PC gestuurd.

Schuifregister interface

Dit type interface kan gebruikt worden als het te besturen apparaat geen eigen micro-controller aan boord heeft. Zodra er data is ontvangen van de USB, wordt de data bit-voor bit in externe schuifregisters geklokt. Hiermee kunnen to 64 uitgangen bestuurd worden. Als de schuifregisters voor de uitgangen geladen zijn, worden een STROBE en een LOAD puls gegeven. Met de STROBE puls zetten de schuifregister de bits uit het schuifregister in een latch. Met de LOAD puls kunnen andere schuifregisters de ingangen lezen en in een schuifregister opslaan. Daarna genereert de USB chip 64 nieuwe klokpulsen, waarmee de bits uit de ingangs schuifregisters worden ingelezen. Zodoende kunnen to 64 ingangen gelezen worden. Zodra dit klaar is, worden de ingelezen bits naar de PC gestuurd.

USB Oplossing

De bovengenoemde USB oplossing wordt in drie varianten geleverd:

bullet

Een studenten versie.

bullet

Een evaluatie versie.

bullet

Een industrie versie.

Studenten versie

Deze versie bevat:

bullet

Een USB chip.

bullet

Een resonator voor de oscillator van de USB chip.

bullet

Een type B connector (printdeel.)

bullet

Software.

bullet

Manual.

Hiermee kan snel en tegen lage kosten van start gegaan worden met het bouwen van een USB interface op bestaande of nieuwe schakelingen.

Evaluatie versie

Deze versie bevat hetzelfde als de studenten versie. In deze versie is de interface echter kompleet opgebouwd op een printje, en er wordt een USB kabel meegeleverd. Alles kan meteen aangesloten worden. Op de print is tevens ruimte gelaten voor wat eigen elektronica, en is het mogelijk een externe adapter te gebruiken voor de voeding van het printje en/of de zelf toegevoegde elektronica. Een spannings stabilisator is reeds aanwezig.

Als uitbreiding op het evaluatie board, zijn tevens extra input- en output boards leverbaar. Deze boards geven elk acht optisch gescheiden ingangen, of acht relais uitgangen, en kunnen direct worden aangesloten op het evaluatie board. De I/O boards worden bestuurd door de USB chip, volgens de schuifregister interface. Het is dus mogelijk tot 64 relais uitgangen, en 64 optisch gescheiden ingangen direct vanuit de PC, via de USB bus, te besturen.

Met de evaluatie versie kan snel en zonder veel inspanning van start gegaan worden met het bouwen van een USB interface op bestaande of nieuwe schakelingen, of een complete op USB gebaseerde besturing worden opgebouwd.

Industrie versie

Zoals boven beschreven, is een bepaald type apparaat te herkennen aan de gegevens die in configuratie tabellen in het apparaat staan opgeslagen. Deze tabellen zijn vastgelegd in de chip van de USB oplossing, en daarom zal toepassings software niet automatisch onderscheid kunnen maken tussen twee verschillende apparaten die beide zijn voorzien van de standaard USB oplossing. Dit zou een probleem kunnen opleveren wanneer er meerdere soorten apparaten van de USB oplossing worden voorzien. Om dit te voorkomen, kan een unieke versie van de chip gemaakt worden. In deze chip(s) komt dan een uniek apparaat nummer, waardoor de toepassings software kan herkennen welk type apparaat is aangesloten.

De levering van deze versie omvat tevens de ROM code voor de USB chip. Hiermee kan een fabrikant zelf USB chips volgens de USB oplossing programmeren. Hierdoor kunnen de productie kosten van met de USB oplossing uitgeruste apparaten beperkt blijven.

Hebt u vragen of opmerkingen over deze website?
Stuur deze dan per e-mail naar webmaster@LeiderdorpInstruments.nl  
Copyright © 1999 - 2004 Leiderdorp Instruments
Laatste wijziging gemaakt op: 23-11-2006