IEEE-488

**IEEE-488** on digitaalne 8-bitine paralleelliides, mis on eelkõige mõeldud mõõte- ja testseadmete ühendamiseks arvutiga. Siini disainimisel loodeti saavutada optimaalset andmeedastuskiirust vältides liigsete liinide kasutamist. Tulemuseks on 24 liiniga siin, millest andmeedastuse jaoks on eraldatud 8 liini. Siin lubab ühendada korraga 15 seadet, millest üks on süsteemi kontroller. IEEE-488 on tuntud ka kui GPIB (*General Purpose Interface Bus*).

## Siini ajaloost
Algupärase siini valmistas aastal 1965 firma Hewlett-Packard ja kandis nime HPIB (*Hewlett Packard Interface Bus*). Siin oli mõeldud HP programmeeritavate seadmete ühendamiseks ja juhtimiseks. 1975. aastal standardiseeris IEEE (*Institute of Electrical and Electronic Engineers*) antud liidese, määratledes selle elektrilised, mehaanilised ja funktsionaalsed parameetrid. Standardi tunnuseks sai IEEE-488. 
1978. aastal täiendati standardi dokumentatsiooni, kuid jätkuvalt ei sisaldanud dokument formaadi ega süntaksi sätteid. Siini populaarsus kasvas ja tekkis vajadus erinevate testsüsteemide ühendamisel tagada ühilduvus ja konfigureeritavus. Edasise töö eesmärk oli tagada konfigureeritavus ja ühildavus erinevate testsüsteemide vahel. Tulemusena töötati 1978. aastal välja standard IEEE-488.2, mis tõi kaasa veatöötluse, määras sõnumite süntaksi ja kasutavad andmestruktuurid. 
1990. aastal ilmus SCPI (*Standard Commands for Programming Interface*), mis võttis standardi IEEE-488.2 käsustruktuurid ja lõi ühe kompleksse programmeerimiskäskude kogu, mida saab kasutada iga SCPI-d kasutava instrumendi juures. Kõige hilisem versioon on HS-488 (*High-Speed IEEE-488*), mis toodi avalikkuse ette 1993. aastal ja mille töötas välja National Instruments.

## Ühendamine
Üldjuhul on GPIB-ühenduspesal emane ja isane ühenduslüli. See võimaldab seadmeid lihtsal viisil juurde liita. Lisaks on GPIB-pesal kinnituskruvid, mis fikseerivad pesad. Seadmed ühendatakse "Daisy Chain" viisil. GPIB-süsteemis võib kasutada seadmete jadaühendust, tähtühendust või nende variatsioone.

IEEE-488 siini ühendamiseks arvutiga kasutatakse enamasti GPIB-laienduskaarte, mis paigutatakse arvuti emaplaadi ISA- või PCI-pessa. Saadaval on ka GPIB/USB-üleminekud.

GPIB-siin koosneb :
*8 andmeliinist (kahesuunalised), mida kasutatakse ka teatud käskude saatmiseks
*3 kätlemisliinist 
*5 juhtliinist
*8 maaühendusest 
### Piirangud
Tagamaks süsteemi normaalset toimimist peab kinni pidama järgmistest nõuetest :
*kahe seadme vaheline kaugus võib olla kuni 4 meetrit;
*terve siini ulatuses võib seadmete keskmine vahekaugus olla kuni 2 meetrit;
*kaabli kogupikkus ei tohi ületada 20 meetrit;
*korraga võib siini külge ühendatud olla 15 seadet;
*2/3 seadmetest peavad olema sisse lülitatud.

## Andmevahetus
IEEE-488 kasutab asünkroonset bait-jada andmeedastusskeemi. See tähendab, et andmeühikuks on bait ja infot saadetakse järjestikuselt, kiirusel, mille määrab kõige aeglasem seade. Siini maksimumkiirus on 1 MB/s.

GPIB-ühenduses võib seade täita kolme erinevat ülesannet, olles kontroller, kuulaja või saatja. Ühel ajahetkel saab seade esineda vaid ühes olekus.
* Kontroller – haldab infoliikumise viisi, määrates teisi seadmeid kuulama või saatma. Kontroller peab ka vastama seadmete teenindusnõude signaalidele ja neil on võimalik siini kontrollimine üle anda teisele kontrollerile. GPIB-süsteemis saab siiski olla ainult üks süsteemikontroller, mis vastutab üldise siini toimimise eest.
* Kuulaja – võtab vastu informatsiooni, mis saadetakse mööda andmeliine, aga ainult juhul kui kontroller on määranud ta kuulama. Samal ajal võib kuulata mistahes arv seadmeid.
* Saatja – asetab informatsiooni andmeliinidele. Saatja rollis saab olla korraga ainult üks seade.

### Ühendusliinid

Madal signaal tähendab loogilist ühte (*true*) ja kõrge signaal loogilist nulli (*false*).

***ATN** (*Attention*) – see liin aitab määrata kontrolleril, kas saata mööda andmesiini andmed või kontrollinfo. Liin seatakse madalale nivoole kui andmeliinil saadetakse käskusid ja kõrgele nivoole kui toimub andmete saatmine. 
***IFC** (*Interface Clear*) – süsteemi kontroller kasutab seda liini, et peatada seadmete töö ja viia siin liikumatusse olekusse.
***REN** (*Remote Enable*) – selle liini abil seab Süsteemi kontroller seadmed, kas lokaal- või kaugjuhtimisrežiimi.
***EOI** (*End or Identify*) – liini kasutatakse mitmebaidise info lõpu tähistamiseks. 
***SRQ** (*Service Request*) – kui seade soovib käimasolevat toimingut katkestada ja nõuab tähelepanu teisele sündmusele, siis seab ta liini madalasse olekusse.
***DAV** (*data valid*) – ütleb, kas signaal liinidel on stabiilne, ehk andmed on õiged. Kontroller juhib DAV-liini käskude saatmisel. Saatja juhib DAV-liini, kui ta saadab andmeid.
***NRFD** (*Not Ready for Data*) – näitab, kas seade on valmis andmeid vastu võtma. Juhul kui toimub andmete saatmine, siis juhivad liini kõik kuulajad aga käskude saatmise korral tüürivad liini kõik GPIB-süsteemi ühendatud seadmed.
***NDAC** (*No Data Accepted*) – seade kasutab liini, näitamaks, et on andmed vastu võtnud. Käskude vastu võtmisel juhivad liini kõik seadmed, andmete vastuvõtmisel aga ainult kuulajad.

### Kätlemine (''[[handshake]]'')

GPIB kasutab 3 juhtme kätlust. Käskude saatmise korral peavad kõik seadmed kätlemisest osa võtma, aga andmete edastamise korral kätlevad ainult kuulajad. See võimaldab kiiret andmeedastust kahe kiire seadme vahel ka juhul kui siini külge on ühendatud palju aeglasem seade.

Kätlemisetapid:
*Enne käsu saatmist veendub kontroller, kas NRFD-liin on kõrges olekus. Juhul kui üks seadmetest pole valmis andmeid vastu võtma, hoiab ta liini madalas olekus. Kuna NRFD-liin kasutab avatud kollektoriga ühendust, siis liin ei lähe enne kõrgesse olekusse, kui 
:kõik seadmed on valmis andmeid vastu võtma.
*Kontroller seab ATN-liini madalaks kui toimub käsu saatmine. Pärast 
:käsu asetamist andmeliinidele seab kontroller DAV-liini madalaks, kinnitamaks käsu informatsiooni kehtivust.
*Märgates, et DAV on madalas olekus, seavad seadmed NRFD madalaks.
:Sellise toiminguga näitavad seadmed, et on tuvastanud uue infobaidi andmeliinidel, kuid pole veel seda kätte saanud.
*Kui käsubait on kätte saadud, seatakse NDAC kõrgeks. NDAC-liin saavutab kõrge oleku siis, kui kõige aeglasem seade on baidi vastu võtnud.
*Kontroller seab DAV kõrgeks ja eemaldab käsubaidi andmeliinidelt. Pärast seda toimingut seatakse NDAC-liinid madalaks, mis tagab valmisoleku järgmiseks andmebaidiks.

Kätlemine on analoogne kui andmeid edastab saatja, vaid ATN-liin on kõrges olekus ja kätlemises osalevad ainult aktiivses olekus kuulajad.

### Adresseerimine

Siinil töötavate seadmete eristamiseks kasutatakse 5-bitist siiniaadressi. Seadmed võivad aadressi vabalt valida, juhul kui see ei kattu ühegi olemasolevaga. Aadressid on kahte sorti, primaarsed ja sekundaarsed. Ühel primaaraadressil võib olla kuni 32 sekundaaraadressi. Keerulisemate süsteemide puhul võivad primaaraadressid alamsüsteemide puhul kattuda, kuid siis erinevad sekundaaraadressid. 
Juhtkäskude saatmisel kasutab süsteemi kontrollel seitset andmeliini, kus bitid 0–4 viitavad adresseeritava seadme primaaraadressile. Bitte 5 ja 6 kasutatakse, et panna mingi seade, kas kuulaja või saatja rolli. Väärtustades 5. biti ühega, kästakse seadmel kuulata ja kui 6. bitt omab väärtust üks, siis asetub seade saatja rolli. Seitsmenda biti väärtust ignoreeritakse ehk väärtus loetakse alati nulliks. Sekundaaraadressile sõnumi saatmisel tuleb kõigepealt aktiveerida primaaraadress ja seejärel käsu saatmisel määrata nii viies kui ka kuues bitt üheks.

## Versioonid
* IEEE-488.1
* IEEE-488.2
* HS-488 (*High-Speed GPIB*) – ühildub täielikult varasemate versioonidega. Tagab kaheksa korda kiirema andmeside (8 MB/s), kui kõik seadmed kasutavad HS-488-protokolli. Kiirus on saavutatud kätlemise protseduuris NDAC ärajätmisel.

## Viited