UVOD
Prvi PC
računari koristili su tri porta i to: jedan za štampač (LPT) i
dva serijska(COM1 i COM2) pri čemu je jedan od njih većinom bio
zauzet od strane serijskog miša. Međutim njihova sve veća
primena rezultovala je pojavu različitih uređaja koji se na njih
uključuju kao što su skeneri, digitalne fotoaparati i slično. To
je uzrokovalo uvođenje USB porta(Universal Serial Bus) koji je
standardizovan 1996. godine. O tom standardu možete pročitati na
adresi www.ubs.com.
Njegovim uvođenjem nastojalo se da se reše sledeći problemi:
Ø
rešenje u vezi ograničenja broja
slotova na osnovnoj ploči kao i broja portova PC računara
Ø
jednostavno proširenja PC računara
upotrebom softverskih drajvera
Ø
mogućnost napajanja eksternih
uređaja koji malo troše od strane računara
Ø
omogućeno je priključenje do 127
eksternih uređaja na glavni USB port, pa se time rešava
ograničenje koje je pre postojalo: jedan uređaj - jedan slot.
Ø
omogućene su velike brzine prenosa do 12
Mb/s
Ø
pojednostavljuju se kablovi za
priključenje uređaja a njihova dužina se povećava
Ø
omogućena je kontrola potrošnje
eksternih uređaja
Ø
podržano je autokonfigurisanje ovih
uređaja po principu PnP detekcije novih uređaja u računaru.
USB port podržava dve brzine prenosa i to: veliku brzinu kada se
prenos kreće do 12 Mb u sekundi, i za sporije uređaje nižu
brzinu prenosa do 1.5 Mb u sekundi. USB port koristi četverožilni
kabal preko koga se prenose podaci i napajanje sa impedansom 90 W što je dato na donjoj slici:
Za prenos
podataka koriste se dve linije D+ i D-. Kada se prenosi logička nula
linija D- je na većem
potencijalu od linije D+ dok je u
slučaju prenosa logičke jedinice obrnuto. Predajnici moraju da daju
napon veći od 2.8 V sa opterećenjem od 15 kW.
Prijemnici moraju da imaju simetričan ulaz pri čemu do promene stanja
dolazi ako se na ulazu prijemnika naponi razlikuju za više od 200 mV.
Svaka linija za prenos podataka ima i nesimetričan prijemnik za detekciju
greške koja se pojavi ako su obe linije podataka nađu na istom
naponu. Kada se radi o brzom USB prenosu tada se na liniju D+ priključuje opteretni otpornik(pull-up) reda 1.5 kW,
dok se kod sporog prenosa on uključuje na liniju D-. Na izlazima drajvera linija D+ i D- priključuju
se opteretni otpornici reda 15 kW. U
slučaju kada USB eksterna jedinica nije pod naponom i kada je drajverski
izlaz porta u stanju visoke impedanse preko ovih otpornika se određuje
brzina prenosa. Preko njih se takođe određuje da je eksterni
uređaj povezan na USB čvor. Kada uređaj nije povezan na USB
čvor njegovi izlazni drajveri biće u stanju visoke impedanse i obe
linije će biti na potencijalu mase, koje se naziva nesimterična nula SE0(Singl
Ended 0). Povezivanje uređaja na čvor on će dobiti napajanje
ali njegovi izlazi i dalje će biti u stanju visoke impedanse, dok će
napon na liniji podataka porta koji je povezan na opteretni otpor postati visok
što može da detektuje čvor. U slučaju ako se ne šalju
USB paketi, linije podataka nalaze se u stanju visoke impedanse. Za
priključenje USB uređaja koriste se konktori prikazani na donjoj
slici:
Standardni
USB kabal za priključenja eksternih USB uređaja je oblika kao na
donjoj slici:
Organizacija USB bas-a može se prikazati kao na
sledećoj slici:
Iz prikazane slike vidi se da se USB bas može
predstaviti sa tri nivoa i to:
Ø
Nivo USB uređaja(USB Interface Layer) koji obezbeđuje fizičku vezu za
prenos signala i paketa između računara i USB uređaja. Ovaj nivo
omogućuje sistemskim programima koji kontrolišu USB bas, rad sa
opštim funkcija koje koristi USB uređaj.
Ø
Nivo funkcije se ostvaruje upotrebom klient
softvera(Client SW)
Ø
Nivo interfejsa obezbeđuje da se
fizički obavlja komunikacija
Sistem USB
povezivanja deli se na četiri funkcionalno zaokružene celine:
o
USB uređaj(USB Physical Device)
o
klijent softver(Client Software)
o
USB sistemski softver(USB System Software)
o
glavni USB kontroler(USB Host Controller)
USB
predtsvlja neki eksterni uređaj koji se priključuje na USB i koji
izvršava zahtevane funkcije. Klijent softver omogućava da se
izvrši prenos podataka između eksternog USB uređaja i
računara i najčešće ga isporučuje proizvođač
USB uređaja. USB sistemski softver je deo operativnog sistema za
podršku USB uređaja i isporučuje se uz operativni sistem. Glavni
USB kontroler zaokružuje u jednu celinu hardver i softver koji
omogućuje rad USB uređaja.
USB
uređaji sa računarom komuniciraju slanjem paketa. Na početku
paketa slanja paketa linija za prenos podataka se postavlja u suprotno stanje
od onog u kome se nalazi u mirnom stanju, dosk se na kraju paketa podataka, ova
linija postavlja u SE0 stanje u dužini trajanja od dva bita.
USB
uređaji mogu se resetovati na nekoliko načina od koji se često
koristi pristup kada se linija podataka postavi u SE0 stanje u trajanju od
10ms. U slučaju ako USB bas se nalazi u mirnom stanju većem od 3 ms
tada eksterni USB uređaji mogu preći u stanje male potrošnje ako
to podržavaju. Vraćanje u radno stanje treba da traje najduže 20
ms. Prenos podatka se vrši upotrebom NRZI metoda kodiranje(Non Return Zero
Invert) što znači ako se pojavi logička jedinica ona će
trajati celom svojom dužinom, odnosno neće doći do promene
naponskog nivo. U slučaju pojave povorki nula napon se linije menja za
svaki bit, što se koristi za uspostavljanje signala takta na prijemu. Kada
se u povorci podataka pojavi šest uzastopnih jedinica radi sigurnosti na
prijemu, vrši se umetanje bita tj. ubaci se jedna nula koja se na prijemu
izbacuje.
Preko USB
bas-a kao što smo videli prenosi se i napon napajanja V+ koji iznosi + 5V, uz maksimalno opterećenje do 5A, pri
čemu potrošnja pojedinačne eksterne jedinice ne sme preći
400 mA kada je u radnom stanju a u stanju mirovanja 500 mA.
Ovaj uslov ne mogu ispuniti svi USB uređaji tako da u tom slučaju
moraju koristiti sopstveno napajanje. Iako takvi uređaji koriste takvo
napajanje, napon USB kabla koriste i ovi uređaji radi provere od strane računara
koji je od uređaja povezan na USB bas. Prilikom inicijalizacije USB
sistema po uključenju računara on pribavlja podake o svim
uređajima koji povezani na USB radi numerisanja basa(bus enumeration).
Za ispravan
rad USB uređaja koji su povezani na računare svaki od njih mora da
ima adresu koje se kreću u opsegu od 0 do 128 i dodeljuje ih računar
prilikom konfigurisanja bas-a. Adresa 0 je adresa koju koristi računar za
postavljanje uređaja povezanih na USB bas i ne mogu je koristiti eksterni
uređaji.
Podaci koji
se šalju preko USB bas dele se u pakete pri čemu veličina jednog
paketa ne sme biti veća od 8 Kb. Računar deli vreme u intervale
dužine 1 ms i u svakom intervalu šalje jedan paket koji počinje
sa SOP bitom. Sledeći se paket razdvaja od prethodnog sa EOP što je
prikazano na donjoj slici:
Na početku svako paketa se šalje
sinhronizacioni bajt koji se sastoji od sedam nula i jednom jedinicom(80H). Na
osnovu ovog bajta sinhrono kolo na strani prijemnika generiše taktni
signal. Nako sinhronizacionog bajta sledi polje za identifikaciju paketa PID(Packet
Identifier), kod koda se prva 4 bita koriste za identifikaciju vrste
paketa, dok su sledeća četiri bita(veće težine) invertovani
biti PID-a na osnovu čega se
proverava tačnost primljenog PID-a.
Polje PID definiše vrstu paketa i
njegov format kao i tip detekcije greške. Postoje sledeći
oblici paketa u USB komunikaciji:
SOF paket čiji je PID=0101
koji šalje 11 bitni podatak o broju rama(frame), kao i 5 bita CRC detekcije.
1
Setup, IN i OUT paketi imaju oblik kao na gornjoj slici. Setup paket čiji
je PID=1101 vrši setovanje funkcije od strane
računara i sadrži tekuću i krajnju (Endpoint) adresu. IN
paket čiji je PID=1001 je prvi paket od od eksternog uređaja
prema računaru. OUT paket
čiji je PID=0001 je prvi paket koji računar šalje periferijskom
uređaju.
Data0 paket
čija je PID=0011 je paran paket podataka koji
sadrži do 1023 bajta podataka. Data1 paket čija je
PID=1011 je neparan paket podataka. Ovi paketi za CRC kontrolu
koriste 16 bita.
Ack paket koji
ima
PID=0010 je potvrda prijemnika da je paket primljen bez greške.
Nak paket koji ima
PID=1010 je je odgovor predajnika o neispravno primljenom paketu. Stall paket koji ima
PID=1110 pokazuje da je neko odredište zagušeno tj. ne
može da primi sve do tada poslate pakete.
Prenos podataka počinje tako što računar
pošalje paket u kome je definisan tip i smer prenosa, adresa USB
uređaja i adresa krajnjeg odredišta. Ovaj se paket naziva token.
Adresirani uređaj detektuje svoju adresu iz adresnog polja i time bude
selektovan i postaje spreman za prijem ili predaju podataka Primalac odgovara
slanjem odzivnog paketa(handshake packet)
izveštavjući o uspešnosti prenosa. Adresiranje uređaja
vrši se preko adresnog polja paketa od 7 bita. Adresa se koristi sa kod IN, OUT ili Setup paketa.
Paket SOF sadrži broj ramova od
11 bita pri čemu se njegov sadržaj inkrementira za svaki novi ram sve
do vrednosti 7FFH. Paketi podatataka Data0
i Data1 sadrže do 1023 bajta.
Ova dva paketa omogućuju jednostavnu sinhronizaciju predajnika i
prijemnika u slučaju zahteva predajnika za ponovnim slanjem radi
greške u prenosu. Predajnik šalje novi paket tek kada od prijemnika
dobije potvrdu o uspešnosti tj. paket Ack.
Prvo se šalje paket Data0 pa paket
Data1 i tako naizmenično. Svi
paketi imaju na kraju bite za redundantu proveru CRC da li je paket ispravno
primljen. Pri prenosu podataka uvek se obavlja komunikacija u oba smera i uvek
je inicijalizirana od strane računara. Smer prenosa definiše
računar slanjem IN ili OUT
paketa. U IN paketu računar
zahteva od eksternog USB uređaja da mu poašalje podatke. Nakon ovog
paketa eksterni uređaj ili računar šalje Data paket, pri čemu se na kraju svakog primljenog paketa
strana koja je vršila prijem
šalje potvrdu uspešnosti slanje tj. Ack, Nak ili Stall paket.
Iz opisa USB porta vidimo da uređaji koji se na njega
priključuju moraju imati visok nivo "inteligencije" kako bi
podržali navedeni standard. Zbog toga se u njima nalaze
najčešće mikrokontroleri koji podržavaju ovu komunikaciju i
koji su za ovu vrstu standarda i razvijeni. Programiranje je znatno teže
budući da navedeni protokoli moraju biti podržani. Zbog toga
naučiti programiranje USB porta je svakako i najveći domet u programiranju
portova.
http://vojo.milanovic.org
© Copyright, 2003 Milanović Vojo
All right reserved