Beágyazott rendszerek kommunikációja
A mikroprocesszor mint a számítógép központi egysége, a hozzákapcsolt memóriával és be- kimeneti egységekkel együtt használható a gyakorlatban. Azokat az áramköröket, amelyek egy tokba integrálva tartalmazzák az előbb felsorolt elemeket mikrovezérlőknek vagy más néven mikrokontrollereknek nevezzük. Ezek egy nagyobb rendszer részeként abba beillesztve, “beágyazva” önállóan is képesek működni, az összehangolt rendszerműködés érdekében egymással és a környezetükkel is kommunikálniuk kell. Ezek végeredményben szintén számítógépes hálózatok, ezért célszerű áttekinteni ezt a területet. Használatukra számos példát lehet hozni: ilyen vezérlőt tartalmaz a PC billentyűzete, az egér, a hajlékony- és merevlemezes meghajtó.
A következőkben néhány, ilyen rendszerben használt összeköttetésmódot mutatunk be, először egy párhuzamos, majd utána két soros megoldást.
Nagyon sok esetben kell mérőkészülékeket vezérelni, mérési eredményeiket feldolgozni, készülékek együttműködésének biztosításával mérőrendszereket kialakítani. Mivel ilyen esetekben általában laboratóriumon belüli, nem nagy távolságokról van szó, ezért célszerű a párhuzamos adatátvitel előnyeit kihasználni.
Az IEC 625 ajánlásában egy általános célú csatlakozó rendszer leírását specifikálta, amely elsősorban automatikus mérőrendszerek készülékeinek összekapcsolásra szolgál, és biztosítja az összekapcsolt eszközök közötti kommunikációt.
Az IEC 625 ajánlás célkitűzései
·
Gyártó független nyitott kommunikációs rendszer·
Eltérő képességű készülékek összekapcsolhatóságának megvalósítása·
Minél egyszerűbb, egységesebb kódrendszer kialakítása
A kommunikáció üzenetek formájában zajlik:
·
Interfész üzenetek: a rendszer működését koordinálják·
Készülékfüggő üzenetek: az összekapcsolt berendezések üzemmódját befolyásolják.
Alapvető sajátosságok:
·
Kiépíthetőség: maximum 15 készülék, melyek egymástól legfeljebb 20 m-re lehetnek·
Adatátvitel: maximum 1 Mbit/s, az adatkeretek rövidek (10-20 karakter)·
Mechanikai előírások: Speciális 25 pólusú csatlakozó·
Villamos előírások: Meghajtó és vevőáramköröknek a TTL specifikációt kell teljesíteni
Az összekapcsolt készülékek kommunikációs státusza háromféle lehet:
·
Beszélő (talker): Egyszerre csak egy beszélő lehet aktív. Beszélő státuszban egy készülék készülékfüggő adatokat továbbíthat a buszon.·
Hallgató (listener): Címzett állapotában egy hallgató készülék készülékfüggő üzeneteket vehet.·
Vezérlő: Gondoskodik a beszélő és hallgató címek kiosztásáról.
Funkcionális előírások:
A buszra kapcsolt rendszer minden elemének funkciójától függően lehet beszélő, illetve hallgató címe mely őt adott minőségében egyértelműen azonosítja. Közös hallgató címe lehet az azonos információkat igénylő berendezéseknek, de beszélő cím csak egyedi lehet. Általában minden mérési összeállítás tartalmaz egy vezérlő készüléket amely koordinálja a kommunikációt.
A rendszer felépítése: A rendszer minden készüléke rendelkezik buszillesztő egységgel a buszrendszer felépítése:
·
8 adatvezeték·
3 vezérlő vezeték·
5 kiegészítő vezérlő vezeték61. ábra: IEC 625 interfész kialakítása
Nézzük meg az egyes jelvezetékek szerepét:
·
DIO1..DIO8 (Data I/O): üzentek továbbítása, (cím, program, eredmény, utasítás)·
DAV (Data Valid): a jelforrás jelzi, érvényes adat van a buszon·
NRFD (Not Ready for Data): hallgató jelzi vételkészségét·
NDAC (No Data Accepted): hallgató készülék jelzi az elfogadást·
IFC (Interface Clear): valamennyi készülék alapállapotba állítása·
ATN (Attention): cím, üzenet, címzett parancs, elválasztása a készülékfüggő üzenettől·
SRQ (Service Request): a vezérlőtől kérhető az éppen folyó művelet megszakítása·
REN (Remote Enable): a vezérlő jelzi, hogy üzenete távvezérlésre állít egy készüléket·
EOI (End or Identify): üzenet utolsó elemének jelzése, vagy vezérlő általi lekérdezés
62. ábra: IEC 625 interfész handshake
A Paralell Poll (PP) üzemmód lehetővé teszi egy készüléknek, hogy nem beszélő státuszban állapotüzenetet küldjön a vezérlőnek. A Serial Poll (SP) üzemmód lehetővé teszi, hogy SRQ segítségével állapotüzenetet küldjenek a vezérlőnek.
A 62. ábrán látható idődiagramon végigkövethető az adatátvitel handshake folyamata. Mivel a rendszer elemei eltérő sebességűek ezért a buszsebesség a vezérlőjelek segítségével mindig a leglassabb készülékhez igazodik.
Az I2C, Inter IC azaz IC-k közötti busz. Az I2C busz nagybonyolultságú integrált áramkörök közötti soros információcserét biztosító, azt fizikailag három vezetékkel megvalósító sínrendszer. Az átviteli félduplex módon történik, sebessége kb. 100-400 kbit/s-ig növelhető. Az ilyen buszt tartalmazó nagybonyolultságú integrált áramkörök egymással könnyen, kevés vezetékkel tudnak sorosan kommunikálni. A kommunikáció kétirányú adatvonalon (SDA=Serial Data) keresztül történik, és egy külön órajel (SCL=Serial Clock) szinkronizálja az adatvezetéken az adatokat.
A busz elvi felépítése az 63. ábrán látható.
A tranzisztorok kikapcsolt állapotában a felhúzó ellenállás miatt, a vonalak magas állapotban vannak. Ez az alaphelyzet. Ha bármelyik tranzisztort bekapcsoljuk, az a vezetéket a földre kapcsolja, így nulla állapotú. Ezt a megoldást az elektronikában huzalozott vagy kapcsolatnak hívják.
A vezérlési elvből következik, hogy mindig csak egy egység vezérelheti az adott vezetéket, a többi egység a tranzisztorát nem kapcsolhatja be. Az eddig tárgyalt adás mellett minden egység képes a vonalon lévő adatokat is venni egy erősítőn keresztül.
63. ábra: I2C kommunikáció elve
Még egy érdekes megállapítás: egy egység el tudja dönteni hogy a vezetéket más nem vezérli-e. Ha ugyanis az adatokat a vezetékre kapcsolja, a saját vevőerősítőjén ugyanazt az adatot kell vennie, mint amit kiküldött. Ha ez nem teljesül, valamelyik másik egység is “piszkálja” a vonalat, azaz a buszfoglaltság azonosítható.
Az előzőekből következően minden egység lehet Adó ill Vevő. Ezen felül megkülönböztetünk Master és Slave eszközöket. Így összesen két funkció és két szerep különböztethető meg:
A funkciók:
TRX = Transmitter (adó): Az egység amelyik adatot küld a buszra.
RCV = Recevier (vevő): Az egység amelyik adatot fogad a buszról.
A szerepek:
MST = Master (mester): Az egység amelyik kezdeményezi az átvitelt, az átvitelhez az órajelet generálja, és be is fejezi az átvitelt.
SLV = Slave (szolga): A mester által megcímzett egység.
Egy mikrokontroller I2C egysége mindegyik szerepre és funkcióra képes. Természetesen ha ez az egység vezérli a perifériákat (és a gyakorlatban ez a leggyakoribb eset), akkor szerepe: mester és a perifériák a szolgák.
A busz multi-master kialakítású. Ez azt jelenti, hogy buszra kapcsolódó eszközök közül nem csak egy, hanem több is átveheti az átvitel vezérlését.
Ezzel kapcsolatos fontos tulajdonság az arbitration, vagy döntés. Ez egy eljárás, ami biztosítja, ha egynél több mester akarja a buszt vezérelni, akkor ezt csak egyetlen egy tudja megtenni, így adatvesztés nem léphet fel.
Az átvitel bit szinten a következő: az eredetileg magas szinten lévő SDA vonalra kerül a 0 vagy 1 értéknek megfelelő feszültségszint. Az SCL vonal magas szintje alatt érvényes az adat. Az adat csak az SCL vonal alacsony szintje alatt változhat.
64. ábra: Bit átvitel, START és STOP feltétel az I2C buszon
A busz aktív és inaktív állapotát a START és STOP feltételekkel tudjuk definiálni.
START feltétel akkor lép fel és a busz aktív lesz amikor SCL magas állapotában az SDA vonalon egy H-L átmenet van.
STOP feltétel akkor lép fel, amikor SCL magas állapotában az SDA vonalon egy L-H átmenet van.
A START és STOP állapotokat csak a mester generálhatja. A busz aktív a START és STOP állapot között. Ezután válik a busz szabaddá.
Az SDA vonalon sorosan átvitt adat mindegyike 1 bájt = 8 bit hosszúságú. Az átvitt bájtok száma nincs korlátozva. Az adónak a vevő minden bájt vételét egy L szintű nyugtázó (ACK = acknowledge) bit küldésével igazolja. Az ehhez szükséges órajelet a mester generálja, az adó az SDA vonalat elengedi. A vevőnek ekkor az ACK generáláshoz le kell húznia az SDA vonalat. Az átvitel a legmagasabb helyiértékű (MSB) bittel kezdődik.
Az adatbiteket az adó, az ACK bitet a vevő küldi. Ha egy vevő nem képes egy adatot venni akkor az ACK bit küldése helyett az SCL vonalat 0 szinten tartja. Ez egy várakozó állapot.
Vegyük észre, hogy az adat- és az órajel vonalat az adó és a vevő felváltva használja. Ez megköveteli mind az adó mind a vevő számára a nagyon pontos kommunikációs feltételek betartását.
65. ábra: Bájt átvitel az I2C buszon
A "minden bájt nyugtázása" szabály alól két kivétel van:
Az egyik akkor lép fel, ha a mester a vevő (MST/RCV). Ilyenkor jelezni kell az adatbájt sorozat végét, a küldőnek nem adva ACK-ot. Az ACK jelhez kapcsolódó órajelet a mester természetesen generálja, de az SDA vonalat nem húzza le L szintre. Ezt hívják negatív nyugtázásnak (NACK).
A másik kivétel: a szolga akkor küld NACK jelet, ha nem képes újabb adatbájtokat elfogadni. Ez akkor lép fel , ha olyan átvitelt kezdeményezünk, amit nem képes fogadni.
A buszon lévő minden eszköznek saját címe van. Mielőtt adatátvitel történne a buszon , a mester START állapotba hozza a buszt , majd kiadja a buszra a szolga címét , amelyikkel adatot akar cserélni. Az a szolga , amelyik felismeri a saját címét , ACK jelet küld vissza. A címzést a mester végzi közvetlenül START állapot után. Ez az első küldött bájt.
A cím hét bites. A nyolcadik bit dönti el a szolgával történő adatcsere irányát. 0.bit jelöli az írást, ilyenkor a mester küld adatokat (W), 1 értékű bit pedig az olvasást (R).
A buszra kapcsolódó eszközök címei két kategóriába sorolhatók: Az egyik kategóriában a cím programozható, ezek általában a mikrokontrollerek. A másik kategóriát a különféle funkciókat megvalósító periféria áramkörök alkotják.
Ezeknél az eszközök címe két részből tevődik össze: egy típus címből (4 bit) és egy hardver címből (3 bit); az eszköz tokozásán a megfelelő lábak 0-ba ill. 1-be kötésével. A típus cím az azonos (típusú) tokoknál mindig megegyezik. Ezzel a címmel jelentkezik be a slave eszköz ill. ezzel a címmel szólítja meg a master eszköz a slave-et adatcsere előtt.
Az egy mester — több szolga struktúrájú buszon zajló adatátvitel a következő (M jelöli a mester által-, L a szolga által küldött adatbiteket):
MASTER WRITE
A mester START állapotba hozza a buszt (S) és kiküldi a szolga címét. A cím legkisebb helyiértékű bitje W=0. Ezt a szolga az ACK jel visszaküldésével igazolja (A). Ezek után a mester küldi az adatokat a szolgának (DATA), és az minden bájt vételét (A) küldésével igazolja. Az utolsó adat küldése után a mester STOP állapotba hozza a buszt (P).
MASTER READ
A mester START állapotba hozza a buszt (S) és kiküldi a szolga címét. A cím legkisebb helyiértékű bitje R=1. Ezt a szolga az ACK jel visszaküldésével igazolja (A). Ezek után a mester fogadja az adatokat a szolgától (DATA), és minden bájt vételét (A) küldésével igazolja. Az utolsó adat küldését a mester negatív nyugtázással jelzi (NA) Ezek után a mester STOP állapotba hozza a buszt (P).
A fenti esetben a mester minden átvitelnél a buszt újból nyitja és zárja.
Amennyiben a buszon több szolgával akar a mester adatot cserélni, a minden átvitelt lezáró STOP, majd az indító újabb START állapot sokat lassít az átvitelen. Ilyenkor használható az ismételt START állapot generálása. Ez az jelenti, hogy az átviteleket nem STOP (P) hanem a következőt indító START (S) állapottal fejezzük be, azaz a mester a buszt folyamatosan használja.
Ismételt START állapot használata
Itt egy olyan esetet látható, amikor először a mester adatokat kapott egy szolgától, majd utána adatokat küld nem szükségképpen azonos című szolgának.
A fenti adatátviteli protokollokat két módon lehet megvalósítani: vagy beépített hardver segítségével (ilyeneket tartalmaznak az erre felkészített mikrokontrollerek és az I¨C buszra kifejlesztett periféria áramkörök), vagy megvalósítására szoftver "bit-billegtetéses" programot írhatunk. A fent ismertetett adatátviteli változatokat az 66. ábrán foglaltuk össze. Az M illetve L betűk azt jelzik, hogy az adott bájtos a mester vagy a szolga küldi.
66. ábra: Különféle típusú adatforgalom az I2C buszon
Az adatátvitel megvalósítható (a közös föld mellett) egy vezetékkel is. Ilyenkor a soros adat szinkronizmusát egy külön órajel nem tudja biztosítani, ezért a már az aszinkron soros átvitelnél ismertetett időzítéses szinkronizálás jöhet számításba. Nézzük a 67. ábrát!
A kétirányúságot az előzőekben már bemutatotthoz hasonló tranzisztor-erősítő kombináció biztosítja. Természetesen az átvitel itt is csak félduplex lehet.
Egy bit átvitelekor a mester az eredetileg alacsony szintű vonalat 1 m s ideig elengedi, így az magas állapotba kerül. Utána ha a mester egy 60 m s-os tartományon belül végig nulla szintet kényszerít a vonalra, akkor ezt 0 értékű bitnek értelmezi a szolga.
Ha ezen belül (általában a felénél) 1-be váltja a vonalat, akkor 1 értékű bitet küldött. A szolga által küldött adást is a mester vezérli. Induláskor itt is a mester adja a vonalra az 1 m s.-os magas szintet. Ezek után 1 m s múlva figyeli a vonalat, ha a szolga legalább 15 m s időre magasra állítja, akkor 1 értékű bitet küldött, ha nulla szinten tartja, akkor 0 értékű bitet küld vissza.
A most bemutatott két megoldás jól illusztrálja azokat a lehetőségeket, amelyeket egy kontrollerrel megvalósított kommunikáció biztosítani tud.
67. ábra: Egyvezetékes adatátvitel
1.fejezet: A hálózatok célja, alkalmazása, alapfogalmak
2. fejezet: Általános elméleti alapok, Vonalak megosztása, Vezeték nélküli átviteli közeg, Analóg átvitel, Digitális átvitel, Párhuzamos és soros adatátvitel, Aszinkron soros adatátvitel, Terminálkezelés, X.21 interfész, ISDN-integrált szolgáltatású digitális hálózat, Soros kommunikáció, Ellenőrző kérdések és válaszok
3.fejezet: Közeg-hozzáférési módszerek
4.fejezet: Adatkapcsolati protokollok
8.fejezet: A TCP/IP protokoll és az Internet