Tervezési segédlet a Z80 (MK3880) típusú mikroprocesszor alkalmazásához
IV. rész: A Z80-SIO Áramkör
(MK3884/5/7 soros I/O egység)
Tartalom
1. Általános ismertetés
2. Felépítés
3. Aszinkron üzemmód
4. Szinkron üzemmód
5. SDLC (HDLC) üzemmód
6. A Z80-SIO programozása
7. Státusz regiszterek
8. Időzítés
9. Elektromos specifikáció
1.1. Bevezetés
A Mostek Z80-SIO (Serial Input-Output) egy kétcsatornás sokfunkciós periféria áramkör, amely a sokféle soros adatforgalmazási szolgáltatásával a Z80-as rendszerek legtöbb ilyen követelményeit kielégíti. Alapvető funkciója a soros-párhuzamos és párhuzamos-soros átalakítás és az adatforgalom vezérlése. A többféleképpen programozható működése nagyfokú alkalmazkodást biztosít a különféle soros rendszerekhez.
A Z80-SIO-val szinkron és aszinkron byte orientált adatforgalom kezelhető. Univerzális működése következtében felhasználható más soros rendszerekben is, mint pl.: kazettás magnetofon, vagy floppy diszk interface-ként.
A Z80-SIO minden szinkron üzemmódnál generálhat és ellenőrizhet CRC kódokat és programozhatóan ellenőrizhet adatokat. A SIO két csatornája alkalmas modem vezérlésre is. Abban az esetben, amikor erre nincs szükség, a modem vezérlők felhasználhatók, mint általános célú I/O egységek.
1.2. A SIO kialakítása
1.3. Főbb tulajdonságai
1.1 ábra: MK3884 lábkiosztása
1.2 ábra: MK3885 lábkiosztása
1.3 ábra: MK3887 lábkiosztása
1.4. A SIO kivezetései és funkciói
D0-D7 | Rendszer adatbusz (kétirányú,három állapotú). Ezen a buszon folyik minden adatátvitel a CPU és a SIO között. D0 a legkisebb helyértékű bit. |
B/A | A vagy B csatorna választő bemenet (logikai 1 szint ezen a bemeneten a B csatornát választja ki). Ez a bemenet határozza meg, hogy melyik csatornával folyik az adatátvitel a SIO és a CPU között. Általában a CPU adatsínének 0. bitjét (A0) használják erre a célra. |
C/D | Utasítás vagy adat választó bemenet (logikai 1 szint ezen a bemeneten vezérlést jelent). Ez a bemenet határozza meg, hogy a CPU-tól az adatbuszon érkező byte utasítás vagy adat. Logikai 0 szint azt jelenti, hogy az érkező byte adat. Általában a CPU címsínének 1. bitjét (A1) használják erre a célra. |
CE | Chip engedélyező bemenet (logikai 0 szinttel engedélyez). Ez a bemenet engedélyezi, hogy a SIO adatokat és utasításokat fogadjon el, vagy továbbítson a CPU-tól, ha az I/O írást vagy olvasást hajt végre. |
órajel | Rendszer óra bemenet. Egyfázisú órajel, ami a SIO belső műveleteit szinkronizálja. |
M1 | A CPU első gépi ciklusának a jele (bemenet, 0 szint az aktív). Amikor M1 és RD jelek aktívak, a CPU utasítást olvas ki a memóriából. Ha M1 és IORQ jelek aktívak, akkor a CPU megszakítást fogad el és a SIO kiadja a megszakítási vektorát (feltéve, ha ő a legnagyobb prioritású egység, amelyik megszakítást kért). |
IORQ | A CPU I/O utasítását jelzi (bemenet, a 0 szint aktív). A CE, RD, C/D és a B/A jelekkel együtt vezérli az adatátvitelt a CPU és a SIO között. Amikor CE, RD és IORQ jelek aktívak a SIO a B/A-nak megfelelő csatornától továbbit adatot a CPU felé. Ha CE, IORQ jelek aktívak és RD nem, akkor a CPU utasítást vagy adatot küld a SIO-nak attól függően, hogy a C/D jel milyen állapotban van. Ha az IORQ az M1-el együtt aktív, akkor a CPU megszakítást fogad el, és a SIO kiadja a megszakítási vektorát (ha ő a legnagyobb prioritású egység). |
RD | Olvasó ciklust jelző vonal a CPU-tól. Bemenet, 0 szint az aktív. A CE, IORQ és B/A jelekkel együtt az adatforgalmat vezérlik a CPU és a SIO között. |
RESET | Bemenet, a 0 szint aktív. Logikai 0 szint, ezen a bemeneten letiltja az adást és a vételt, alapállapotba állítja TxDA és TxDB kimeneteket, a modem vezérlőket 1-be kényszeríti és letiltja a megszakítást. Reset után be kell írni a vezérlő regisztereket és csak azután kezdődhet az adás vagy a vétel. |
IEI | Megszakítást engedélyező bemenet, az 1 szint aktív. A megszakítási lánc kialakítására szolgál és az 1 szint ezen a bemeneten jelzi, hogy ez az egység a legmagasabb prioritású a láncban. |
IEO | Megszakítást engedélyező kimenet, 1 szint az aktív. Az IEI kivezetéssel együtt a megszakítási lánc kialakítására szolgál. Az IEO akkor van 1 szinten, ha az IEI 1 szinten van, és a CPU nincs megszakítási rutinban. Ez a jel akadályozza meg az alacsonyabb prioritású egységek megszakítás kérését, ha egy nagyobb áll kiszolgálás alatt, vagy ha egy nagyobb prioritású egység szintén megszakítást kér. |
INT | Megszakítás kérés kimenet (nyitott kollektoros, 0 szint aktív). A SIO ezen a vonalon kér megszakítást a CPU-tól. |
W/RDYA, W/RDYB | Az A és B csatornák Wait/Ready várakozás / kész / nyitott kollektoros kimenetei. Amikor 1 szintű "várakozás" jelet ad, 0 szinttel jelzi a "kész" állapotot. Ez a vonal a "kész" üzembe programozva biztosítja a csatlakozást a DMA vezérlőhöz, wait üzemben pedig a SIO adatait szinkronizálja a CPU-hoz. RESET állapotban nyitott kollektoros. |
CTSA, CTSB | Törlés küldő (Clear to Send) bemenet, a 0 szint aktív. Logikai 0 szint ezen a bemeneten automatikus engedélyező üzemmódban engedélyezi az adást. Ha az automatikus enge-délyezés nincs programozva, általános célú bemenetként használható. Mindkét bemenet Schmitt-triggeres, amely lehetővé teszi a kis meredekségű jelek kezelését. A SIO detektálja ezeket az impulzusokat és mindkét élére megszakítást kér a CPU-tól. A Schmitt-triggeres bemenet nem biztosit előirt zajszint tartományt. |
DCDA, DCDB | Adatvivő detektáló bemenet, a 0 szint aktív. Ugyanaz a funkciója, mint a CTS bemeneteknek csak a vételre vonatkozik. |
RxDA, RxDB | Vevő adat bemenet, 1 szint az aktív. |
TxDA, TxDB | Az adó kimenete, 1 szint aktív. |
RxCA, RxCB | Vevő órajel bemenet. Közvetlenül meghajtható a Z80-CTC áramkörrel. Aszinkron üzemben az órajel 1x, l6x, 32x, 64-szerese lehet az adatátvitel frekvenciájának. A vevő az RxC felfutó élénél vesz mintát az adat bemenetről. |
TxCA, TxCB | Adó órajel bemenet, ami közvetlenül meghajtható a Z80-CTC áramkörrel. (Bekötéséhez lásd az 1.5 pontot.) Aszinkron adásnál az órajel 1, 16, 32 és 64-szerese lehet az adatátvitel sebességének. Az adás és a vétel sebességének egyformának kell lennie. Mind a TxC és RxC bemenetek Schmitt - trigger áramkörrel készültek, hogy a lassú felfutású jeleket is kezelni tudják. (Zajmargót nem adnak meg rá.) A TxD adatkimenet a TxC órajel lefutó élénél vált. |
RTSA, RTSB | Adás kérő (Request to Send) kimenet, a 0 szint aktív. Az RTS bit 1-be írása 0 szintre állítja az kimenetet. Aszinkron üzemben törlés után akkor megy 1 szintre, ha az adó kiürült. Szinkron üzemben az RTS kimenet követi az RTS bitet. Rendszerint általános célú kimenetként használják. |
DTRA, DTRB | Adat kész kimenet, a 0 szint aktív. (A kivezetéshez lásd az 1.5 pontot.) A kimenet követi a programozott DTR bitet. Általános célú vezérlésre használható. |
SYNCA, SYNCB | Szinkron bemenet / kimenet, 0 szint az aktív. Aszinkron vételnél a CTS és a DCD-hez hasonló bemenet. Ebben az üzemben a bemenetre adott jel az RR0 regiszter Sync/Hunt státusz bitjét módosítja. Külső szinkron üzemben szintén bemenet és a szinkron jel vétele után két RxC ideig kell ezt a bemenetet 0 szinten tartani a szinkronizáláshoz. A külső logika rendszerint addig tartja ezt a bemenetet 0 szinten, amíg a CPU nem informálja, hogy a szinkronizálás megszűnt, vagy új adatsorozat kiadása következik. Külső szinkron üzemmódban a karakterek összeállítása a külső szinkron jel lefutó élét követő RxC felfutó élénél kezdődik. Belső szinkronizálásnál ez a kivezetés kimenet és a szinkronjel azonosításánál egy RxC ciklusra aktív szintet vesz fel. A szinkron állapot nem tárolódik, így ez a kimenet mindig aktív, amikor az összehasonlító logika szinkron karaktert talál. |
1.5. Bekötési opciók
A 40 lábas kivezetés korlátozás miatt a következő négy jelet nem lehetett mindkét csatornánál korlátozások nélkül kivezetni:
A probléma megoldására egy kompromisszumos megoldás született, ahol a B csatorna kivezetései háromféle módozatban léteznek:
2.1. Bevezetés
A Z80-SIO áramkör a következő belső egységekből áll:
Mindkét csatorna regiszterei írhatok és olvashatók a CPU számára, ami alkalmassá teszi a SIO-t, hogy modem-hez vagy más külső egységhez csatlakozzon.
A SIO irható-olvasható regiszterei a következők:
A megszakítási vektor a B csatorna egy további regiszterébe tölthető és kiolvasható mint a csatorna 2. regisztere.
A továbbiakban mindkét csatorna regiszter műveleteinél a következő rövidítéseket használjuk:
Az egyes regiszterek elnevezését és funkcióit a következő táblázat tartalmazza:
WR0 | Regiszter pointer, CRC alapállapotba állítás, külön üzemmódok alapállapotba állÍtása, stb. |
WR1 | Adás/vétel, megszakítás és adatátviteli módok meghatározása. |
WR2 | Megszakítási vektor regiszter (csak a B csatornánál). |
WR3 | Vételi paraméterek beállítása és vezérlés. |
WR4 | Különféle üzemmódok és paraméterek adás/vétel üzemének beállítása. |
WR5 | Adó paramétereinek beállítása és vezérlés. |
WR6 | SDLC címszektorának szinkron karaktere. |
WR7 | SDLC flag szinkron karaktere. |
RR0 | Adás/vétel státusz, megszakítás és külső státusz. |
RR1 | Speciális vételi feltételek státusza. |
RR2 | Módosított megszakítási vektor (csak a B csatornánál). |
A csatornák logikai áramkörei vételnél és adásnál egyaránt biztosítják az adatformátumot és érvényességet. A Modem vezérlő CTS és DCD bemenetelt program által vezérelhető logikai hálózat figyeli. Minden modem vezérlő funkció általános felhasználású és így más célra is felhasználhatók.
Az automatikus megszakításkérésnél a megszakítási logika meghatározza, hogy melyik csatorna milyen egysége a legmagasabb prioritású megszakítást kérő részegység. Az áramkörön belül az A csatornának van magasabb prioritása a B-hez viszonyítva. Csatornán belül a következő prioritási sorrend érvényes: vétel, adás és külső/státusz megszakítás.
2.2. Adat regiszterek
Az adó és vevő oldal adatkezelő egységeinek felépítését a 2.1 ábra mutatja (mindkét csatornára).
A vevő három 8 bites FIFO elrendezésű (3 byte késleltetésű) puffer regisztert és egy 8 bites vételi léptető regisztert tartalmaz. Az elrendezés időt biztosit a CPU-nak, hogy a nagy sebességgel érkező adatblokk elején már el tudja kezdeni a megszakítási rutinját. A vételi hibatároló regiszter (FIFO) tárolja a paritás, keret és más státuszhibákat.
A karakterhossztól függően a bejövő adat különféle adatkezelő egységeken halad át. Aszinkron üzemben a soros adat (ha a karakterhossz 7 vagy 8 bit) egy három bites puffer regiszterbe kerül. Az 5 és 6 bites karakterek a bemeneti léptető regiszterbe kerülnek.
Szinkron üzemben az adatkezelő egység működése a vételi folyamat fázisától függ. A szinkron vétel a "Hunt" fázissal kezdődik, ahol a vevő a bemeneti adatfolyamban megkeresi a beprogramozott bitmintát, melyet szinkron karakternek hívnak. SDLC üzemmódban egy speciális mintát az un. flag-et keresi meg.
Ha a vevőt egyszavas szinkronizálásra programozták, akkor az összehasonlítást a WR7 regiszter tartalmához végzi el. Kétszavas szinkronizálásnál a WR6 és WR7 regiszterek tartalmával végzi el az összehasonlítást.
A bejövő adatok mindkét esetben átmennek a szinkronizáló regiszteren, ahol a WR6 és WR7 karakterekkel hasonlítják össze. Egykarakteres szinkronizálásnál a bejövő karakter és WR7 tartalmának összehasonlítása a bemeneti szinkron regiszterben történik. Kétkarakteres szinkronizálásnál a bejövő adat első karakterét a vevő léptető regisztere tárolja, míg a következő 8 bit a vételi szinkron regiszterbe kerül.
Ha a szinkronizálás megtörtént, akkor a bejövő adatok kihagyják a bemeneti szinkron regisztereket és közvetlen a három bites puffer regiszterbe kerülnek.
SDLC üzemmódban a bejövő adat először a bemeneti szinkron regisztereken halad át, ahol a SIO figyeli az adatfolyamot és ha nullát talál, továbbengedi az adatokat. Ha 5 egymásután következő 1-es érkezik, akkor a 6. bitet figyeli és ha az nulla, akkor további egye-seket keres. Ha a 6. bit is 1, akkor a 7. bitet figyeli és ha az 0, akkor flag karakter érkezett, ha nem akkor kiirtott (abort) karakter vétele történt.
Az így átformált adatok a 3 bites puffer regiszterbe, és onnan a teli léptető regiszterbe jutnak. Megjegyzendő, hogy az SDLC Üzemmód is Hunt fázissal kezdődik, ahol a Z80-SIO a bemeneti léptető regiszterben összeállított karakterben megpróbálja felismerni a WR7-be programozott bit mintát. Mihelyt az első szinkron (flag) karaktert felismerte, az adatok a hosszuktól függetlenül áthaladnak az adatkezelő egységeken.
A SIO ugyanazt a CRC ellenőrzést használja mindkét (SDLC és szinkron) adatátvitelnél, de a különböző üzemmódoknál különböző részek működnek. Kétszinkronos byte-orientált működésnél a CPU dönti el, hogy az adatkarakter bekerüljön-e a CRC számításba. A Z80-SIO ezért az adatokat 8 bittel késlelteti. SDLC üzemmódban nincs szükség késleltetésre, mert a Z80-SIO logikája meghatározza, hogy melyik byte-ot kell a CRC-be beszámítania.
Az adó oldal 8 bites adatregisztere a belső adatbuszról tölthető.
A 2o bites kimeneti léptető regisztere pedig a WR6, WR7 és az adatregiszterből tölthető. Egyszinkronos és kétszinkronos üzemmódban a WR6 és WR7 regiszterek tartalmazzák a szinkron karaktereket. SDLC üzemmódban ezek a regiszterek címet és flag karaktert tartalmaznak. Szinkron adásnál a WR6 és WR7 regiszterek tartalma az adó léptető regiszterébe kerülnek és az üzenet elején rákerülnek az adatvonalra.
Ha az üzenet alatt elfogynak az adatok a SIO kitöltő (time filer) adatokat továbbit.
A Start és Stop bitekkel kiegészített adatokat (aszinkron üzemmód) a SIO a kiválasztott órafrekvenciával, az adó léptető-regiszteréből egy multiplexeren át a kimenetre juttatja.
Szinkron üzemmódban a SIO 1x-es órával lépteti az adatokat az adó multiplexerére és a CRC generátorra.
Az SDLC/HDLC adatok a "nulla beiktató" logikán keresztül jutnak a kimenetre (a flag karakter továbbításánál ez a logika tiltva van).
Ez az áramkör a flag jelsorozatot leszámítva minden más bitsorozatnál (cím, vezérlő jel, adat, keret jel, stb.) öt egymásután következő egyesnél egy 0-át helyez az adatfolyamba. SDLC üzemmódban a CRC generátor eredménye szintén átmegy a nullát beiktató logikán.
2.3. Funkcionális leírás
A Z80-SIO funkcionális leírását két szempont szerint végezzük: a SIO egyfelől egy soros adatátviteli periféria, amely különféle formátumoknak megfelelően adatokat küld és vesz; másfelől a Z80-as családnak egy interface áramköre, ahol a közös cím és adatbuszon keresztül kommunikál a Z80-CPU rendszerrel.
A Z80-SIO felhasználását más CPU-hoz, több speciális funkciója segíti elő: vektor nélküli megszakítás, lekérdezéses üzemmód (polling) és egyszerű "handshake" adatátviteli képesség.
A SIO további ismertetésének első része a Z80-CPU és a SIO kapcsolatával foglalkozik, a második rész pedig a SIO adatátviteli tulajdonságait mutatja be.
2.3.1. A SIO I/O kapcsolata a CPU-val
A Z80-SIO lehetőséget nyújt a vektoros és a lekérdezéses (polling) üzemmódú megszakításra, valamint a blokkos adat, vezérlés és státusz átvitelre a CPU-val. A blokkos adatátvitel CPU vagy DMA vezérléssel történhet.
Lekérdezéses mód (polling). A lekérdezős üzemmódnál a megszakítási logika tiltva van. Az RR0 és RR1 státusz regiszterek tartalma minden műveletnél változik. A lekérdezéses megszakítás kiszolgálása alatt a CPU minden csatornánál megvizsgálja a státuszokat (RR0 reg.). Az RR0 két státusz bitje D0 és D2 jelzi, hogy adat kiadás vagy vétel szükséges. Az RR0 regiszter státusz hibát és más speciális feltételeket is jelez, melyeket a "Z80-SIO programozása" pontban ismertetünk.
Az RR1-ben található vételi feltételeket nem szükséges megvizsgálni, mert ezek a státusz bitek vezérlik az RR0-ban található "vevő karakter kész" státusz bitet.
Megszakításos üzemmód (vektoros). A Z80-SIO megszakítási rendszere lehetővé teszi a real-time felhasználáshoz szükséges gyors megszakításokat.
A B csatorna WR2 és RR2 regiszterei tartalmazzák a megszakítási vektort, amely kijelöli a megszakítási rutin kezdőcímét a memóriában.
A SIO az RR2-ben módosítani tudja a megszakítási vektorát, ami így nyolcféle megszakítási címet jelölhet ki és feleslegessé teszi a státuszvizsgáló rutinok írását. A módosítást a B csatorna vektormódosító státuszának (WR1/D2) beírásával, programból lehet végrehajtani. Amikor ez a bit 1, akkor a WR2 regiszterben lévő megszakítási vektor a különféle megszakítási feltételek szerint módosul (részletesebb leírás a "SIO programozása" fejezet 1. vezérlő regiszter leírásánál található).
A megszakítás forrása lehet az adás, a vétel vagy a külső/státusz kérése. Mindegyik forrás programból tiltható. A SI0-n belül az A csatornának van nagyobb prioritása, mint a B-nek és csatornán belül a következő prioritási sorrend érvényes: vétel, adás és külső/státusz megszakítás.
Adáskor engedélyezett megszakításnál az adó a puffer regiszter üres állapotánál kér megszakítást. A vételnél engedélyezett megszakítás három úton jöhet létre:
Az első típusú megszakítást tipikusan a blokkos adatátvitelnél hasz-nálják. A karakterenként történő megszakítási módnál a paritás hiba megszakítási vektora módosítható. A speciális megszakítás egy adott üzenetnél vagy karakternél jöhet létre (pl. SDLC üzemmódban a "vége" üzenetnél). A speciális feltételekhez kötött utasítás csak akkor működik, ha az előbbi két megszakítási rendszer (megszakításkérés az első vagy mindegyik karakternél) közül az egyik programozva van. Az első karakterre engedélyezett megszakításnál pl. a vételi túlcsordulás speciális feltételű megszakítás is létrejöhet. (A paritáshiba ebben az esetben nem kér megszakítást.)
A külső/státusz megszakítás fő funkciója, hogy figyeli a CTS, DCD) és SYNC bemenetek jeleit. Ebben az üzemmódban megszakítás kérhető az adás kimaradásnál, a "break" jelnél (aszinkron átvitelnél) vagy hibás karakternél (SDLC üzemmódnál). Az utóbbi megszakítás (break/ abort) az egyik speciális funkciója a Z80-SIO-nak.
A SIO-nak ez a tulajdonsága biztosítja az átvitel pontos kezdését és befejezését, valamint a külső logika megfelelő időzítését a "break/abort" szekvenciáknál.
CPU/DMA blokkos átvitel. A Z80-SIO alkalmas a Z80-DMA vezérlésének megfelelő blokkos adatátvitelre. A blokkos átvitel a WAIT/READY kimeneteket és az 1. vezérlő regiszter Wait és Ready státusz bitjeit használja. A WAIT/READY kimenet software úton vezérelhető, mint WAIT és READY vonal.
A Z80-SIO READY kimenete jelzi a DMA-nak, hogy készen áll az adat-átvitelre. A CPU felé a WAIT kimenet jelzi, hogy a SIO még nem tud adatot továbbítani és a CPU-nak várakozási állapotban kell lennie. Az 1. vezérlő regiszter 5-7 bitjei és a WAIT/READY vonal működése a vezérlő regiszterek leírásánál található.
2.3.2. Adatátviteli lehetőségek
Az előbbi pontokban a Z80-SIO és a CPU I/O kapcsolatait ismertettük. A SIO két, független teljes duplex csatornája szinkron, aszinkron és SDLC (HDLC) üzemmódokban tud működni, és ezek ismertetésével foglalkoznak a következő fejezetek.
Az egyes fejezetek függetlenségének és teljességének megőrzése érdekében egyes részek ismétlődnek.
3.1 Bevezetés
Az aszinkron adatátvitel megkezdése előtt a Z80-SIO következő paramétereit kell beprogramozni: karakter hosszúság, óra/adat frekvencia, stop bitek száma, paritás, megszakítási mód és vétel- vagy adás üzemmód. Az egyes paraméterek beállítása a rendszer program által tölthető regiszterek betöltésével történik. Ezek közül a WR4-et a WR1, WR3 és WR5 előtt kell feltölteni.
Ha az adatok modem-en vagy RS232C interface-n keresztül érkeznek, az adás engedélyező bitet TE (Transmit Enable) az RTS (Request to Send) és a DTR (Data Terminal Ready) jelekkel együtt kell kiadni. Az átvitel addig nem kezdődhet meg, amíg az adást engedélyező bit nincs beírva.
A SIO automatikus engedélyezése lehetővé teszi, hogy a programozó az első karaktert kiküldje anélkül, hogy a CTS jelet megvárná. Ha az automatikus engedélyező bit 1-ben van, a SIO mielőtt megkezdené az átvitelt megvárja, hogy a CTS 0-ba menjen. A CTS, DCD, SYNC jelek általános célú I/O vezérlő jelek, melyek az ismertetett funkciókon kívül más célra is felhasználhatók. Ha a CTS jelet más célra használjuk az automatikus engedélyező bitet 0-ba kell állítani.
Az aszinkron karakterek formátuma a 3.1 ábrán látható. A programozó üzemmódokat és paramétereket, valamint a WR3-WR5 regiszterek funkcióit a 3.1 táblázat ismerteti.
3.1 ábra: aszinkron karakter formátum
3.1 táblázat:
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 | |
WR3 | 00 = Rx 5 BITS/CHAR 10 = Rx 6 BITS/CHAR 01 = Rx 7 BITS/CHAR 11 = Rx 8 BITS/CHAR |
AUTO ENABLES |
0 | 0 | 0 | 0 | Rx ENABLE |
|
WR4 | 00 = x1 CLOCK MODE 01 = x16 CLOCK MODE 10 = x32 CLOCK MODE 11 = x64 CLOCK MODE |
0 | 0 | 00 = NOT USED 01 = 1 STOP BIT/CHAR 10 = 1 1/2 STOP BIT/CHAR 11 = 2 STOP BIT/CHAR |
EVEN-ODD PARITY |
PARITY ENABLE |
||
WR5 | DTR | 00 = Tx 5 BITS (OR LESS) CHAR 10 = Tx 6 BITS/CHAR 01 = Tx 7 BITS/CHAR 11 = Tx 8 BITS/CHAR |
SEND BACK |
Tx ENABLE |
0 | RTS | 0 |
A WR2 regiszter tartalmazza a megszakítási vektort (csak a B csatornában) és a WR1 regiszter határozza meg a megszakítási és adatátviteli módokat. Aszinkron üzemben a WR6 és WR7 regisztereket nem használják.
A 3.2 táblázat egy tipikus program szekvenciát mutat be az egyik csatornán a teljes-duplex vétel/adás működés beállítására:
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
3.2. Aszinkron adás
Az adó kimenete (TxD) alapállapotban állandóan 1-ben van. A kimenet 0-ba állítása a "break" utasítással (WR5/D4) lehetséges.
A kiadott karakterekhez a SIO automatikusan hozzáteszi a start-, a paritás- és a megadott számú stop biteket. Ha 6 vagy 7 bit a programozott karakterhossz a SIO a nem használt biteket automatikusan figyelmen kívül hagyja. Ha a karakterhossz 5, 4 vagy annál is rövidebb, lásd a programozási leírásban az 5. vezérlő regiszter funkcióit.
A soros adatok 1/1, 1/16, 1/32 és 1/64-es órajellel (TxC) léptetődnek a TxD kimenetre. A kimeneti adat a TxC lefutó élénél jelenik meg.
A külső/státusz megszakítás engedélyezésénél a DCD, CTS és SYNC jelek kérhetnek az átvitel folyamán megszakítást. Ha ezek a jelek egy meghatározott időnél hosszabb ideig aktívak, megszakításkérés történik. Adásnál ez a tulajdonsága a SIO-nak a modem CTS jelének megfigyelésére ad lehetőséget.
3.3 Aszinkron vétel
Az aszinkron vétel a vételt engedélyező bit beállításával kezdődik. Ha automatikus engedélyezés volt programozva, akkor a kezdéshez a DCD jelnek is 0-ban kell mennie. Az adatbemeneten (RxD) lévő 0 szint a start bitet jelenti. Ha ez a 0 szint legalább másfél órajelig tart, a vétel megindul és a vevő a ciklusközepeken vett mintákból összegyűjt egy karaktert.
1x-es órajelnél a szinkronizálást kívülről kell megoldani. A vevő a TxC felfutó élénél vesz mintát a bemeneti adatból. Ha 8 bitnél rövidebb karakterhossz volt programozva, akkor a vevő 1-ekkel egészíti ki a karaktereket. Ha a paritás engedélyezve van, a paritásbitet csak a 8 bites karakterhossznál várja le a vevő. A 8 bites hossztól eltérő karaktereknél a SIO összegyűjti a programozott számú adat bitet és a paritást, a maradék helyet pedig 1-esekkel tölti fel. Például egy 5 bites karaktert a vevő a következő formában továbbit a CPU-nak: 11 P D4 D3 D2 D1 D0.
A vételi léptető regiszter után még három 8 bites követő regisztere van a vevőnek, így a CPU-nak elegendő ideje van arra, hogy a megszakítás kiszolgálásnál az adat még rendelkezésre álljon. A bejövő karakterek ellenőrző bitjei szintén egy 3 bites követő (puffer) regiszteren haladnak át a vevőben. Az ellenőrző bitek az adatokkal együtt töltődnek be.
Paritás engedélyezésénél, ha a bejövő karakter paritása nem egyezik meg a programozott paritással, a paritás hiba bit (RR1/D4) 1-be íródik.
Ha a bejövő karakter stop bit(ek) nélkül érkezik, akkor a keret (Framing) hibajelző bit (RR1/D6) 1-be íródik. Ellentétben a paritás bittel a keret hiba nem tárolódik és csak az adott karakterre érvényes. Keret (Framing) hibánál a SIO másfél bitnyi időt hozzáad a karakterhez és így a kerethiba nem lesz olyan, mint egy új start bit.
Ha a vevő több mint három karaktert kap és ezt a CPU olvasása nem követi, vételi túlcsordulás lesz és a megfelelő RR1/D5-ös bit 1-be íródik. A vevő puffer regiszterében a bejövő negyedik karakter a harmadikat felülírja, de csak a felülirt karakter túlcsordulás bitje fog jelezni. Ez a hibajel - hasonlóan a paritáshibához - csak a CPU "reset" utasításával törölhető. Mind a formátum, mind a túlcsordulás hiba különböző vektorú megszakítást tud kérni.
Tekintettel arra, hogy a paritás és túlcsordulás hibajelző biteket tárolja a SIO, a hibajelzés nemcsak az adott szóra vonatkozik, hanem az összesre, ami az utolsó "reset" utasítás után érkezett. A megfelelő kapcsolat megtartása érdekében ezért először a státusz regisztereket kell kiolvasni az adatok előtt. Ez könnyen megoldható a vektoros megszakítási móddal, mert ott egy ennek megfejelő speciális rutin megírható.
Amikor a külső/státusz megszakítás engedélyezve van, a "break" karakter érzékelése megszakítást kér és a megfelelő státusz bit (RR0/D7) aktív állapotba kerül. A break által kért megszakítást a SIO külső/státusz megszakítás törlő utasításával kell kiszolgálni. A SIO állandóan figyeli a bejövő adatokat és az adás végét jelző "break" jelnél nullázza a "break" státusz bitet és megszakítást kér a CPU-tól.
Kiszolgálásnál a CPU újra kiadja a külső/státusz törlő utasítást, hogy alapállapotba állítsa a "break" figyelő logikát. A külső/státusz figyelő logika a DCD státuszát is figyeli. Ha a DCD egy meghatározott időnél hosszabb időre inaktív állapotba kerül a DCD státusz bit 1-be állításával a SIO megszakítást kér.
Ha a státusz regisztert az adat után olvassák ki, akkor az már a következő adatra is vonatkozhat. Ha a kiolvasás elég gyors (a következő karakter még nem érkezik meg) a státusz érvényes marad. Kivételt képez, ha az első karakterre történő megszakítási mód volt kiválasztva. Ebben az esetben egy speciális megszakításnál a hibajel és az adat a hiba törlő utasításig megmarad. Ez megakadályozza, hogy a törlő utasítás előtt az adat érvényessé váljon, és lehetővé teszi, hogy hibás karakternél a DMA, vagy blokkos átvitel alatt a CPU beavatkozzon.
Karakterenként kért megszakításnál a megszakítási vektor eltérő, ha az RR1 regiszterben hiba státuszjel van. Vételi túlcsordulásnál az utolsó előtti karakter elveszik. Ezután a CPU beolvasáskor a felülirt karakterrel együtt hibajelzést és egy speciális vektorú megszakítást is kap, ha a státuszfüggő vektoros megszakítás engedélyezve volt.
Lekérdezéses üzemnél a CPU a "vételi karakter kész" (RR0/D0) bitet figyeli és ebből tudja, hogy mikor olvashat ki adatot. A vevő puffer regiszterének kiolvasásával ez a bit automatikusan törlődik.
Az adás oldali túlcsordulás megelőzésére a CPU az adó státuszát figyeli és ettől függően ír adatot az adó puffer regiszterébe. Ha az adó puffer regisztere üres, a megfelelő státusz bit 1-be íródik.
4.1. Bevezetés
A szinkron adás-vétel leírása előtt először a háromféle szinkronizálásról (egyszinkronos, kétszinkronos és külső szinkronos) szeretnénk szólni. Ezek az üzemmódok mindig 1x-es órajelet használnak. A SIO mindig az RxC felfutó élénél vesz mintát a bemeneti adatból, és a kimenet mindig a TxC lefutó élénél vált.
A szinkronizálási üzemmódot a szinkron karakterek betöltése előtt kell kiválasztani, mert a regiszterek az üzemmódtól függően kerülnek felhasználásra. A három szinkronizálási módhoz tartozó formátumot a 4.1 ábra mutatja.
4.1 ábra: szinkron formátumok
Alapállapotba állítás (reset) után a vevő mindig "Hunt" fázisba kerül, ahol a szinkronizálási folyamat zajlik le. A folyamat csak a vevő engedélyezése után kezdődik és az adatok vétele a szinkronizálás után indul. Szinkronizálás után a WR3/D4 bit beírásával a Hunt fázis újra aktivizálható. Adásnál az adó mindig kiadja a 8 vagy 16 bites szinkronkaraktert. Egyszinkronos üzemben az adó a WR6 regiszter tartalmát adja ki, míg a vevő a WR7 tartalmához hasonlít össze.
Mindhárom szinkronizálási módnál a beindult vétel addig folytatódik, amíg törlés (reset), vagy vétel letiltó utasítás (automatikus engedélyezésnél a DCD utasítás), illetve szinkronizálás újraindító utasítás nem érkezik.
A 4.1 táblázatban a WR3-WR5 vezérlő regiszterek a szinkron vétel és adás üzembeni funkcióit mutatja:
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 | |
WR3 | 00 = Rx 5 BITS/CHAR 10 = Rx 6 BITS/CHAR 01 = Rx 7 BITS/CHAR 11 = Rx 8 BITS/CHAR |
AUTO ENABLES |
ENTER HUNT MODE | Rx CRC ENABLE | 0 | SYNC CHAR LOAD INHIBIT | Rx ENABLE |
|
WR4 | 0 | 0 | 00 = 8-BIT SYNC CHAR 01 = 16-BIT SYNC CHAR 10 = SDLC MODE 11 = EXT SYNVC MODE |
0 | 0 | EVEN/ODD PARITY |
PARITY ENABLE |
|
WR5 | DTR | 00 = Tx 5 BITS (OR LESS) CHAR 10 = Tx 6 BITS/CHAR 01 = Tx 7 BITS/CHAR 11 = Tx 8 BITS/CHAR |
SEND BACK |
Tx ENABLE |
1 SELECTS CRT-16 |
RTS | Tx CRC ENABLE |
A WR0 regiszter különféle más regiszterekre vonatkozó utasításokat tartalmaz. A WR1 határozza meg a megszakítási módot, WR2 tartalmazza a megszakítási vektort és a WR6, WR7 regiszterek tartalmazzák a szinkron karaktereket. A 4.2 táblázat egy tipikus kétszinkronos fél-duplex adás programlépéseit mutatja be:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4.2. Szinkron adás üzemmód
4.2.1 Kezdeti állapot beállítása (Initialisation)
Az adás kezdeti feltételeit a következő paraméterek programozásával lehet beállítani: páros, vagy páratlan paritás, 1x-es órajel,
8 vagy 16 bites szinkron karakter, CRC polinom, adás engedélyezés, RTS (Request to Send), DTR (adat kész jel), megszakítási mód és karakter hossz. A WR4 regisztert a WR1, WR3, WR5, WR6 és WR7 regiszterek előtt kell betölteni.
Két típusú polinom CRC-16 használható a szinkron üzemben. Az első esetben (nem SDLC üzemmód) kezdésnél a CRC generátor és ellenőrző 0-ra törölve van. Az adás előkészítő fázisban a CRC generátort a WR0 CRC törlő utasítása állítja alapállapotba. Az adó és a vevő ugyanazzal a polinommal dolgozik.
Az adatátvitel az adás megszakítás, vagy a "wait/ready" engedélyezés kiválasztásával történhet. A külső/státusz megszakítás engedélyezésével a CLEAR TO SEND bemenet és az átvitel túlcsordulás/EOM tárak figyelhetők meg. Opcionálisan az automatikus engedélyezés is használható az adás engedélyezésére, ha a CTS figyelése útján a CPU tudja, hogy mikor kell kiolvasni a karaktert. Ez a bit a vevő puffer regiszterének olvasásával automatikusan törlődik. Lekérdezéses üzemmódban (polled) a felülírás elkerülésére az adó puffer re-giszter státuszát az adat kiküldése előtt ellenőrizni kell. Ez a státusz bit 1-be íródik, ha a puffer regiszter üres.
Az első adatátvitel a Z80-SIO felé a külső/státusz megszakításkéréssel kezdődhet (CTS státusz bit aktív), vagy közvetlenül az adás engedélyezéssel is lehetséges, ha az automatikus engedélyezés volt beállítva.
Törlés után a kimeneti vonal folyamatosan 1-ben marad addig, amíg az adót nem engedélyezik.
"Break" intervallum a "Send Break" programozásával generálható. Ha a beállítással megkezdődött adás közben adatkimaradás fordul elő, az adó folyamatos szinkron karaktereket továbbít.
4.2.2 Adatátvitel és státusz felügyelet
Adatátvitel megszakításokkal: Ha a WR1/D1 bit (megszakításos adás) aktív állapotban van, mindig megszakításkérés történik, amikor az adó puffer regisztere üres. A megszakításkérés kiszolgálható egy új karakter küldésével, vagy a WR0/CMD5 megszakítás törlő bit beírásával. Ha a megszakítást az utóbbi utasítással szüntettük meg és nincs írás a puffer regiszterbe, több megszakítás nem keletkezik.
Ez természetesen adat elmaradást (alácsordulást, underrun) okozhat, mellyel a "kétszinkronos adás elmaradás" fejezetben foglalkozunk.
Adatátvitel a wait/ready felhasználásával: A WAIT aktív állapota jelzi a CPU-nak, hogy a Z80-SIO nem áll készen az adat vételére és a CPU-nak meg kell hosszabbítania az I/O ciklusát. A READY jelzi a DMA vezérlőnek, hogy az adó puffer regisztere üres és fogadni tudja a következő karaktert. Ha nem érkezik újabb adat mielőtt az adó shift regisztere kiürül az adó adat (alácsordulás) elmaradás állapotba megy.
Kétszinkronos adáselmaradás (transmit underrun): A kétszinkronos protokollnál a szinkronizáció megtartására, adásszünetben kitöltő adatokat kell küldeni. A Z80-SIO kétféleképpen programozható erre a feladatra: az első, hogy szinkron karakterek adásával tölti ki a szünetet; a másik lehetőség, hogy a CRC is szinkron karaktereket küld. Ezeket a funkciókat az adás elmaradás /EOM bit vezérli, amely a WR0 regiszterben található. A kezdeti törlő (reset) utasítás után az adás elmaradás /EOM státusz bit, RR0/D6 aktív állapotban engedélyezi a szinkron karakterek küldését, amikor nincs adat. Amikor a CPU üzenet vége jelet kap, kiadhatja az adás elmaradás /EOM (a továbbiakban ezt AE/EOM-el jelöljük) megszakítást. Ez engedélyezi, hogy CRC kerüljön adásra, amikor az adatok elmaradnak. Ekkor a SIO, CRC és szinkron karakterek küldésével jelzi az üzenet végét.
Nincs megkötés arra vonatkozóan, hogy mikor lehet kiadni az AE/EOM törlő utasítását. Ha az első karakter betöltése után érkezik az AE/EOM törlő utasítás, akkor ha az adatok elmaradnak, 16 bites CRC és szinkron karakterek adása következik. Lévén, hogy az AE/EOM adás elmaradást jelez, egyúttal külső/státusz megszakítást is generál.
Szinkron jelek beiktatásánál megszakítás akkor keletkezik, amikor az első kitöltő szinkron karakter betöltődik az adó regiszterébe. A státuszban ilyenkor az AE/EOM és a TBE (Transmit Buffer Empty) bitek aktívak.
A CRC beiktatásánál a AE/EOM bit aktív és a TBE bit törölve van.
Ha a CRC kimenet a TBE státusza is aktív állapotba kerül és megszakítást kér a CPU-tól. Ez jelzi, hogy egy másik adatblokk átvitele kezdődhet (a megszakítás a CRC utáni szinkron karakter betöltésekor generálódik). Ha nincs több továbbítandó adat a programot a törlő (RTS) utasítással lehet befejezni.
Kitöltő (pad) karakterek küldhetők, ha a SIO 8 bites adásra van programozva és FF adatot töltünk az adóba, amikor a CRC éppen adásban van. Ezzel a megoldással mellékesen a szinkron karakter is újra definiálható.
Ezt a következő példával szeretnénk megvilágítani:
A TBE bit aktív állapota megszakítja a Z80-CPU-t. A CPU felismeri a program státuszból, hogy az utolsó karaktert küldte ki a SIO-nak.
Ahhoz, hogy a SIO-t CRC kiküldésére kényszerítse a CPU, kiadja az AE/EOM törlő utasítást és a megszakításra az adás megszakítás tör-lő utasítással válaszol (ez az utasítás megakadályozza, hogy a Z80-SIO további adatot kérjen).
Az utasítás hatására bekövetkező adat elmaradásra a Z80-SIO CRC karaktereket küld. A Z80-SIO külső/státusz megszakítást is kérhet ha az AE/EOM bit aktív. A megszakításra a CPU "pad" karaktereket küld az adó bufferébe és kiadja a külső/státusz megszakítás törlő utasítást, így a kiadott CRC karaktert "pad" karakterek fogják követni a szinkron karakterek helyett.
Megjegyzendő, hogy a Z80-SIO, miután a CRC-t kiadta és a pad karakter betöltődött a kimeneti léptető regiszterbe az adó regiszter üres állapotával megszakítást fog kérni. Ettől a ponttól a CPU küldhet további kitöltő vagy szinkron karaktereket.
Kétszinkronos CRC generálás: A CRC engedélyező bit (WR5/D0) betöltésével a CRC generálás megindul. A Z80-SIO automatikusan kiadja a két szinkron karaktert (16 bit), ajánlatos ennél többet küldeni, hogy az adatok előtt a CRC engedélyezésénél a szinkronizálás már biztosan megtörténjen a vevőnél.
Az adatforgalom alatt a CRC engedélyező bit bármikor váltható és így karakterek kihagyhatók, illetve beszámíthatók a CRC generálásba. Az engedélyező bitnek a kimeneti léptető regiszter betöltése előtt stabilnak kell lennie. Ennek biztosítására a CRC engedélyező utasítást az aktuális karakter kiküldése előtt kell kiadni a Z80-SIO-nak.
Tiszta adás (transparent )üzemmód: Ez az üzemmód egy 16 bites szinkron karakter beiktathatóságával lehetővé teszi a CRC engedélyezés bármikori beírását. Megakadályozható, hogy a DLE karakter bekerüljön a CRC számításba, ha a karakter kiküldése előtt letiltják a CRC generálást.
Ebben az üzemmódban adat elmaradásnál a SIO DLE-SYNC karaktereket küld. Ilyenkor a DLE karakter a WR6, a szinkron karakter pedig a WR7 regiszterben van.
Az adás befejezése: A Z80-SIO-nak egy speciális adásbefejező ciklusa biztosítja az adatok egységét és érvényességét. Ha az adót letiltják mialatt adatot vagy szinkron jelet küld, még kiküldi az adásban lévő karaktert, azután folyamatosan 1-et küld (marking), mielőtt a CRC és szinkron karaktereket kiadná. Letiltáskor a puffer regiszterek tartalma nem változik. Ha a CRC kiadása alatt tiltják le a SIO-t, a 16 bites átvitel befejeződik, de CRC helyett szinkron jel megy ki.
A programozott "break" azonnal érvényes, amint az a vezérlő regiszterbe kerül és a puffer, valamint a léptető regiszter tartalma elveszik.
A karakterek továbbítása minden üzemmódban a legkisebb helyértékű bittel kezdődik. A nem használt bitek állapota lényegtelen, kivéve az 5 vagy kevesebb bites üzemmódokat.
Ha a külső/státusz megszakítás engedélyezve volt, a CRC és szinkron karakterek küldése vagy a CTS váltás, különböző vektorú megszakításokat kérnek, ha a vektor módosító státusz bit is 1-ben van. Ez a megszakítási mód a blokkos átvitelnél használható.
Lekérdezéses üzemben minden megszakítási mód tiltva van.
4.3 Szinkron vétel
4.3.1 Kezdeti feltételek beállítása (Initialization)
A szinkron vétel beállításánál a következő paramétereket kell beprogramozni: páros vagy páratlan paritás, 8 vagy 16 bites szinkron karakter, 1x-es órajel CRC polinom, karakterhossz, stb. A szinkron karaktereket a WR6 és WR7 regiszterekbe kell tölteni. A vevő csak az összes paraméter beállítása után engedélyezhető. A WR4 regisztert a WR1, WR3, WR5, WR6, és WR7 regiszterek előtt kell betölteni.
A beprogramozás után a vevő "Hunt" állapotba kerül, ahol a szinkronizálás befejezéséig marad. Megjegyzendő, hogy a szinkron karakterek bejutása a puffer regiszterbe megakadályozható a tiltó bit betöltésével a WR3 regiszterbe.
4.3.2 Adatátvitel és státusz felügyelet
Szinkronizálás után az összeállított karakter az adat FIFO-ba kerül. Az adat és a hozzátartozó státusz a következő négy megszakítási móddal vihető át a CPU-ba:
Megszakítás nincs engedélyezve: Ezt az üzemmódot a lekérdezéses, vagy off-line üzemnél használják.
Megszakítás az első karakternél: Rendszerint ilyen üzemmóddal kezdik a lekérdezéses és a blokkos átvitelt. A CPU, vagy a DMA szinkronizálása a bejövő adatokhoz a WAIT/READY kimenettel történik. Ebben az üzemmódban a SIO csak az első karakternél kér megszakítást és utána csak akkor, ha speciális vételi állapot áll elő. Az üzemmódot az "újra-engedélyező" utasítással lehet újraindítani, melyre a következő karakter ismét megszakítást kér. A paritáshiba nem generál megszakítást, de az üzenet vége jelzés (EOF) és a vételi túlcsordulás igen (SDLC üzemmódban). Ha a külső/státusz megszakítás engedélyezett, a DCD váltása is mindig megszakítást generál.
Megszakítás minden karakternél: Ebben az üzemmódban, ha a vételi puffer regiszterbe adat kerül a SIO mindig megszakítást kér.
Ha a vektor módosító státusz engedélyezve van, a hiba és a különleges vételi állapotok egy-egy speciális vektorú megszakításokat generálnak. A paritáshiba megszakítás programozható úgy is, hogy ne speciális vektorú megszakítást kérjen.
Megszakítás speciális vételi állapotokból: Ez a megszakítás csak abban az esetben jöhet létre, ha az előző két megszakítási mód (első karakterre és minden karakterre kért megszakítás) közül az egyik programozva van.
Speciális megszakítás keletkezik a vételi túlcsordulásnál. A túlcsordulás és paritás bitek tárolva vannak, így a kiolvasásukkor az utolsó törlés utáni összes paritás és túlcsordulás hibát jelzik. Törölni csak a hiba törlő utasítással lehet.
CRC hiba ellenőrzés és befejezés: Vételnél a CRC ellenőrzés programból vezérelhető. A vételi CRC engedélyező bitnek (WR3/D3) megfelelő állapotban kell lennie mielőtt a vett karakter a bemeneti léptető regiszterből a puffer regiszterbe jut. Ez biztosítja az egyes karakterek beszámítását, illetve kihagyását a CRC ellenőrzésnél. Mindhárom szinkronizálási módnál, miután a karakter a bemeneti léptető regiszterből átíródott a puffer regiszterbe, a CRC/keret hibajelző bit (RR1/D6) tartalmazza a CRC 16 bites (8 bit késleltetés és 8 bit léptetés) összehasonlításának eredményét. Hibátlan átvitelnél az eredménynek nullának kell lenni. (Az eredmény csak a CRC számítás végén érvényes, közben általában hibát jelez.) A CRC logika minden karaktert összehasonlít és az eredmény addig érvényes, amíg az adat a FIFO-ban van.
A következő példa egy CRC ellenőrzést mutat be, ahol négy karakter (A, B, C, D) vétele történik:
Ha a CRC-t letiltjuk mielőtt a C karakter a pufferbe érne, a CRC nem veszi figyelembe a B karaktert.
A C karakter betöltése után a CRC/keret bit tartalmazza a komparálás eredményét az A karakterig.
Ekkor a CRC hiba bit a B karakterig mutatja az összehasonlítás eredményét.
A CRC számítás soros volta miatt még 16 ciklus szükséges (8 bit késleltetés és 8 bit léptetés), miután a második karakter bejutott a puffer regiszterbe, vagy 20 ciklus (előző 16+3 bit puffer késleltetés +1 bit bemeneti regiszter késleltetés) miután az utolsó bit az RxD bemenetre került, hogy a CRC számítás befejeződjön. Egy gyorsabb órát kapuzva erre az időre az órabemenetre, meggyorsítható a számítás.
A 4.3 táblázat egy fél-duplex, kétszinkronos vételi mód működésének tipikus programlépéseit mutatja be. Az utasítások és státuszok gyűjteménye a "Z80-SIO programozása" című fejezetben található:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
5.1. Bevezetés
A Z80-SIO alkalmas a HDLC (High-level Synchronous Data Link Control) és az IBM SDLC (Synchronous Data Link Control) protokolljának megfelelő működésre. A nagyfokú hasonlóság miatt a továbbiakban csak az SDLC-re hivatkozunk.
Az SDLC erősen eltér az egyszinkronos és kétszinkronos üzemmódoktól és inkább bit, mint karakter orientáltsága következtében kezeli az átvivő (transparent) működést. Az SDLC bit orientáltsága lehetővé teszi a különféle hosszúságú és bit mintájú üzenetek átvitelét. Az SDLC működéséről az IBM GA27-3093 dokumentációban találhatunk ismertetést.
Az SDLC üzenet kerete, hasonlóan a kétszinkronos üzemhez egy-egy jelző karakterrel kezdődik és fejeződik be (5.1 ábra):
5.1 ábra: az SDLC/HDLC üzenet adás/vétel formátuma
A Z80-SIO figyeli a bejövő adatokat és felismeri a kezdő és vége karaktereket, melyek az üzenet keretét képezik. Megjegyzendő, hogy a SIO felismeri az elosztott nullás (shared-zero) flag karaktereket, de adáskor nem tudja kiadni.
Az SDLC 8 bites címrésze egy második címet is tartalmaz. A Z80-SIO rendelkezik másodlagos címfelismerő logikával, amely felismeri a második címet és ennek megfelelően veszi, vagy elhagyja az üzenetet.
A Z80-SIO-n keresztül az SDLC kerete a CPU-ba vihető át. A Z80-SIO keret ellenőrzést végez, ami egyszerűsíti a programot azzal, hogy alapállapotba állítja a CRC generátort (tiszta 1-be), vételnél törli a CRC generátort, amikor a kezdő karaktert azonosította és keret ellenőrző/jelző szekvenciát küld adásnál. A hardware is tovább egyszerűsíthető a SIO automatikus nulla beiktató és törlő logikájával.
Az 5.1 táblázat a WR3, WR4 és WR5 regiszterek tartalmát mutatja az SDLC üzemmódban:
BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 | |
WR3 | 00 = Rx 5 BITS/CHAR 10 = Rx 6 BITS/CHAR 01 = Rx 7 BITS/CHAR 11 = Rx 8 BITS/CHAR |
AUTO ENABLES |
ENTER HNT. MODE (IF INCOMING DATA NOT NEEDED) | Rx CRC ENABLE | ADRESS SEARCH MODE | 0 | Rx ENABLE |
|
WR4 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
WR5 | DTR | 00 = Tx 5 BITS (OR LESS) CHAR 10 = Tx 6 BITS/CHAR 01 = Tx 7 BITS/CHAR 11 = Tx 8 BITS/CHAR |
0 | Tx ENABLE |
0 SELECTS SDLC CRC |
RTS | Tx CRC ENABLE |
5.2. SDLC adás
5.2.1. A kezdeti feltételek beállítása
A többi üzemmódhoz hasonlóan, az SDLC adás megkezdése előtt be kell programozni a SIO paramétereit. Ezalatt meg kell határozni az SDLC üzemmódot, az SDLC polinomot, az adatkérést, az adat kész jelet, karakter hosszat, megszakítási módot, adás engedélyezést, automatikus engedélyezést és a külső/státusz megszakítást.
Kiválasztva az SDLC üzemmódot és polinomot a SIO tiszta 1-esekre állítja a CRC generátort, amit a WRO regiszter CRC generátor törlő utasításával hajt végre. A megszakítási módok megegyeznek a szink-ron működésnél leirt módokkal.
Törlés (reset) után, vagy ha az adás nincs engedélyezve a kimenet folyamatos 1-ben van (marking) és szünet jel a "break" programozásával generálható. A teljes felprogramozás után az adó folyamatos kezdő jeleket /flag/ ad a kimenetre.
Abort szekvencia a WRO/CMD utasítással küldhető. Ez legalább 8, de kevesebb, mint 14 1-es kiküldését jelenti, és ezután ismét flag jeleket küld az adó. Lehetséges, hogy egy "abort" szekvenciát (8 db l-es) a nulla beiktató logika által meghagyott 5 db 1-es követ, ami így 13 db 1-est eredményez. Az "abort" utasítás kiadásával az adásban és a pufferben lévő adatok elvesznek.
Ha az adatfolyamban 5-nél több 1-es következik egymás után, további nullák beiktatására van lehetőség. Az "abort" és "flag" szekvenciáknál ez nem érvényes.
5.2.2. Adatátvitel és státusz felügyelet
Az SDLC üzemmódban különféle kombinációjú megszakítási és "wait/ready" funkciók vannak.
Adatátvitel megszakításokkal: Ha az adásmegszakítás engedélyezve van, megszakítás jön létre, ha az adó puffer regisztere üres. A megszakítás kiszolgálható egy újabb karakter kiküldésével, vagy a megszakítás függő tároló (WRO/CMD5) törlésével. Ha a megszakítás az utóbbi törlő utasítással lett megválaszolva és más beírás nem történt az adóba, nem lesz több adás megszakításkérés. Az eredmény az adás elmaradás (transmit underrun) állapot lesz. Ha újabb karaktert írunk az adóba, az adat kiküldése után újra üres lesz a puffer regiszter, ami megszakítást generál. Az adásmegszakitásos SDLC üzemmódban a flag után 8 bites cím, vezérlő rész és információs rész küldhető a SIO-nak. A Z80-SIO az adás elmaradás működésével továbbítani tudja a keret ellenőrző szekvenciát.
Amikor az adó működése először van engedélyezve, akkor az általában még üres és ezért nem lesz üresre váltó jel a puffer regisztertől, ennek következtében megszakítás kérés sem. Az első karaktert ezért be kell írni és annak kiküldése után fog a SIO megszakítást kérni.
Adatátvitel a "wait/ready" felhasználásával: A "wait/ready" funkció kiválasztásánál a SIO a WAIT kimenetével jelzi a CPU-nak, hogy nem tud újabb adatot fogadni és így a CPU-nak ki kell terjesztenie az I/O ciklusát. A DMA vezérlőnek a SIO READY jellel jelzi, hogy az adó puffer regisztere üres és újabb karakter fogadására kész. Ha a SIO nem kap újabb adatot, amikor a puffer regisztere üressé vált, a SIO adás elmaradás állapotba megy. A "wait/ready" üzemmóddal az üzenet cím-, vezérlés- és adatrésze egyaránt továbbítható a SIO-nak. A SIO az adás elmaradás állapotával tudja továbbítani a keret ellenőrző szekvenciát.
SDLC adáselmaradás/vége üzenet: A SDLC protokollban az üzenet nem tartalmaz kitöltő karaktereket. A Z80-SIO ezért automatikusan lezárja az SDLC üzenetet, amikor az adó puffer és léptető regiszterei kiürülnek. A lezárás a két byte-os CRC kiküldésével kezdődik és ezt egy vagy több flag karakter követi. A DMA, vagy blokkos átvitelnél ez az eljárás nagy átviteli sebességet tesz lehetővé, mert a CPU-nak nem kell gyorsan válaszolnia a vége üzenetre.
Adás kimaradásnál a SIO működése attól függ, hogy milyen állapotban van az AE/EOM (AE = adás elmaradás) utasítás. Törlés (reset) után ez a státusz bit 1-ben van és megakadályozza a CRC-k kiadását, amikor az adat elmarad. Ennek megfelelően ilyenkor CRC helyett flag karaktereket küld az adó. Ha adat érkezik a SIO puffer regiszterébe, akkor a SIO megkezdi az üzenet kezdőkaraktereinek (keret) kiadását.
Az AE/EOM utasításnak az első adat- és a vége üzenet között kell érkeznie, hogy az üzenet végén, amikor az adatok elfogytak a SIO automatikusan CRC karaktereket küldjön. A CRC karakterek kiadása újra beírja az AE/EOM státuszt. Nincs általános megkötés arra, hogy mikor kell törölni az AE/EOM bitet, de ezt rendszerint az első karakter kiadása után teszik (első adat a második cím után).
Az AE/EOM bit törlésével lehetővé válik a CRC és flag karakterek küldése és több idő jut a CPU-nak, hogy felismerje a hibát és "abort" utasítással válaszoljon. Az AE/EOM státusz korai törlése adás elmaradásnál a maximális időt biztosítja a CPU-nak.
Ha a külső/ státusz megszakítás engedélyezve van és a SIO CRC ka-raktereket küld, az AE/EOM bit aktív és a TBE státusz törölt állapota jelzi, hogy az adó regiszterében CRC karakterek vannak. Ha a CRC karakterek kimenetek, a TBE státusz is 1-be íródik és megszakításkérést generál, ami jelzi a CPU-nak, hogy új üzenetet küldhet.
A megszakítás a CRC kiadása és a flag betöltése után jön létre.
Ha nincs több üzenet, az RTS törlésével és az adó letiltásával az átvitel programból befejezhető.
SDLC üzemben az AE/EOM bit korai törlése megakadályozza, hogy folytonos flag jelek kerüljenek a vonalra és a vevő azt érvényes adatnak vegye. Ha flag jelek kerülnek adásra közvetlenül az adatok után, a vevőben CRC ellenőrző hiba keletkezhet. Az AE/EOM beírása mindig egy külső/státusz megszakítást is eredményez.
Az adás elmaradás logikája a SIO-nak egy további védelmet nyújt a folytonos flag kiadása ellen, ha a megszakítási rutinban a SIO megfelelő utasításokat kap. Ezt a következő példával szeretnénk bemutatni:
A fenti szekvenciából látható, hogy a CPU-nak legkevesebb 22 és maximum 30 ciklusidő áll rendelkezésére a beavatkozásra.
SDLC CRC generálás: Az üzenet elején, mielőtt a CRC számítás megkezdődik, a CRC generátort tiszta 1-es állapotba kell állítani. A CRC számítása az üzenetkezdés cím részének kiadásával kezdődik. A SIO automatikusan egy flag karaktert küld az adás engedélyezése után, de a biztos vételi szinkronizációhoz ajánlatos még néhány flag karakter kiküldése.
Az adás CRC engedélyezést (WR5/D0) a cím rész előtt kell beírni. SDLC üzemben a kezdeti és a vége flag karakterek között minden karrakter beleszámít a CRC generálásba. A SIO által generált CRC invertálva kerül a kimeneti vonalra.
Adás befejezése: Ha az üzem alatt lévő adót letiltják, a SIO a folyamatban lévő karaktert még kiadja és utána "marking" jelet ad, de a pufferben lévő adatok megmaradnak.
A programozott "abort" karakter azonnal érvénybe lép, amint az utasítás megérkezett és az átvitel alatt lévő karakterek elvesznek. Ha az adó letiltásakor a CRC 16 bites karaktere már kiment, akkor flag jelek kerülnek a vonalra.
Minden üzemmódban az adatátvitel a legkisebb helyértékű bittel kezdődik. Az 5 vagy ennél is rövidebb karakterekhez lásd a SIO programozásának "5. vezérlő regiszter" című pontját. Lévén, hogy a karakterek bitszáma menet közben váltható, az üzenet adatrésze bármilyen számú bittel kitölthető.
A vételi többlet (Receiver Residue) üzemben a Z80-SIO vehet változó hosszúságú adatrészt az üzenetben és azt változtatás nélkül továbbítani is tudja minden előzetes információ nélkül. A karakter bitszámának változtatása nem érinti az adásban lévő karakter bitszámát. A karakterek azzal a bitszámmal kerülnek adásra, ami a pufferből a léptető regiszterbe töltéskor programozva van.
Ha a külső/státusz megszakítás engedélyezett, akkor a következő események ill. állapotok kérhetnek különböző vektorú megszakítást (feltéve, hogy a vektor módosító státusz is engedélyezett): CRC karakter küldés, flag karakter küldés, és a CTS jel változása. Lekérdezéses üzemnél minden megszakítás tiltva van.
Az 5.2. táblázat egy fél-duplex SDLC adás tipikus program-lépéseit mutatja be:
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
5.3. DLC vétel
5.3.1 Kezdeti feltételek beállítása
Az SDLC vételi üzemmód a következő paraméterek kiválasztásával kezdődik: SDLC Üzemmód, 1x óra, SDLC polinom, szóhossz stb. A flag karaktert a WR7 regiszterbe, a második címet pedig a WR6 regiszterbe kell tölteni. A vétel engedélyezése csak a paraméterek beállítása után lehetséges. A vevő ilyenkor először a "Hunt" fázisba kerül és a szinkronizálásig ott is marad. A "Hunt" fázisból kilépve a vevő csak programból vihető vissza. A WR4 regisztert a WR1, WK3, WR5, WR6 és WR7 regiszterek előtt kell betölteni.
Programból a vevő címazonosító fázisba vihető. Ha a WR3/D2 (Address Search bit) 1-ben van, a flag jel után a SIO a WR6-ban lévő és egy fixen bekötött (csupa 1) címmel hasonlítja össze a karaktereket. Ha valamelyikkel megegyezik az SDLC keret címe, megkezdődik az adatok vétele.
A SIO csak egy címkaraktert tud összehasonlítani, a másodikat a CPU-nak kell elvégeznie. Ez úgy történik, hogy a következő címet továbbítja a CPU-nak, mintha az adat lenne. Ha ez a cím a CPU-nak nem megfelelő, akkor a CPU utasítással "Hunt" fázisba kényszeríti a SIO-t, ami így a vételt elölről kezdi. Az adatfolyam külön nullái automatikusan törlődnek és a flag jelek sem jutnak be a CPU-ba.
5.3.2. Adatátvitel és státusz felügyelet
Érvényes flag vétele után az összeállított karakterek a vevő FIFO-ba kerülnek. Ez az adat és a hozzátartozó státusz a következő négy megszakítási móddal vihető át a CPU-ba:
Megszakítás nincs engedélyezve: Ez a megoldás csak lekérdezéses üzemben használható.
Megszakítás az első karakternél: Ez az üzemmód általában a software lekérdezéses üzem, vagy a blokkos átvitel beindítását szolgálja.
A CPU, vagy a DMA szinkronizálása a WAIT/READY jelekkel történik. Ilyenkor a SIO csak az első karakternél kér megszakítást és utána csak akkor, ha speciális vételi állapot állt elő. Vétel közben az üzemmód alapállapotba állítható a következő karakterre engedélyezett megszakítás beállításával. Az utasítás után érkező első karakter megszakítást kér.
Ha a külső/státusz megszakítás is engedélyezve van, akkor a DCD bemenet váltása is megszakítást kér. Ebben az esetben az üzenet vége jel és a vételi túlcsordulás is megszakítást kérhet. Az "üzenet vége" megszakítás a blokkos átvitel befejezésére használható.
Megszakítás minden karakternél: Mindig megszakítás keletkezik, ha a FIFO karaktert tartalmaz. A speciális vételi állapot különböző vektorú megszakításokat kér, ha a státusszal módosítható vektor üzemmód volt kiválasztva.
Megszakítás speciális vételi állapotnál: Nem egy külön megszakítási mód, hanem az előző kettő valamelyikével együtt használható. Programozásakor megszakítás kérhető, ha vételi túlcsordulás történik, vagy vége jel érkezik az üzenetben. A vételi túlcsordulás hiba tárolódik, és ez a státusz csak a hibatörlő utasítással állítható alapállapotba, a hibajelzés a pufferben lévő adaton kívül mindazokra az adatokra is vonatkozik, melyek az utolsó törlés óta átmentek a puffer regiszteren. Az üzenet vége státusz bit jelzi, hogy a flag megérkezett és a CRC hiba, valamint a többlet (residue) kódok érvényesek.
A karakterek hossza menet közben programból válthatók. Attól függetlenül, hogy a cím és a vezérlő része az üzenetnek 8 bites, vételnél a SIO dolgozhat ennél rövidebb karakterhosszal is. Ebben az esetben a SIO karakter hossza az első karakter összeállítása közben váltható. Pl. ha 8 bites vezérlő karakterről 7 bites adat karakterekre váltunk, akkor az első adat karakter 7 bitjének beérkezéséig kell az új karakter hosszúságot beprogramozni.
SDLC vétel CRC ellenőrzése: A vételi CRC automatikus törlését az üzenet nyitó flag végzi és a zéró flag-ig tart a számítás. A CRC ellenőrzés eredményét az a byte tartalmazza, amelynek a vége üzenet bitje aktív állapotban van. Ha ez a CRC hiba bit nem aktív, akkor az üzenet átvitele hibátlan volt (CRC-re).
Az SDLC ellenőrzésnek speciális ellenőrző szekvenciája van. A CRC ellenőrző szám invertálva érkezik, és a végső ellenőrzésnek 0001110100001111-nek kell lennie. A 2 byte-os CRC karaktert további feldolgozásra a CPU-ba kell beolvasni.
"Abort" szekvenciával bármelyik keret jel folyamatosan törölhető. A vevő "abort" szekvenciát detektál, ha több mint 7 db 1-es érkezik egymás után. Ha a külső/státusz megszakítás engedélyezve volt, az "abort" szekvencia detektálása megszakítást kér (Break/abort bit az RRO regiszterben). A megszakításra kiadott státusz törlés után az 1-esek törlésekor újabb megszakítás generálódik. Ezzel különböztethető meg az üzemen kívüli állapot az abort szekvenciától.
A szinkron üzemmóddal ellentétben az SDLC üzemmódban a CRC-nek nincs 8 bit késleltetése, mert a CRC előállításába minden karakter beleszámít.
A CRC számítás akkor fejeződik be, amikor a második CRC karakter is megérkezett a vevő puffer regiszterébe.
Az 5.3 táblázat egy fél-duplex SDLC vétel üzemmód tipikus programlépéseit mutatja be. A teljes utasítás készlet és a státusz bitek jelentését a következő fejezetben foglaljuk össze.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
6.1. Bevezetés
A SIO programozásánál először a főbb üzemmódokat kell beállítani és azután az üzemmódon belüli paramétereket. Aszinkron üzemmódnál pl. először az órajel, karakterhossz, start és stop bitek számát és a paritást kell beállítani és aztán a megszakítást és az adás, vagy vétel engedélyezését. A kezdeti felprogramozásnál a WR4 regisztert a többi előtt kell betölteni.
A programozás a csatornák vezérlő regisztereinek feltöltésével történik. Az egyes regiszterek betöltését a C/D és a B/A vezérlő bemenetek beállításával lehet végrehajtani (ezeket a bemeneteket rendszerint a CPU címsine vezérli):
C/D | B/A | Funkció |
0 | 0 | Adat az A csatornára |
0 | 1 | Adat a B csatornára |
1 | 0 | Utasítás/státusz az A csatornára |
1 | 1 | Utasítás/státusz a B csatornára |
Vezérlő regiszterek
A Z80-SIO csatornánként 8 regisztert tartalmaz, melyek a csatorna üzemmódjának megfelelően külön-külön programozhatók. A vezérlő regiszterek programozása a WR0-t kivéve két byte-ot igényel. Az első byte egy három bites pointert (D0-D2) tartalmaz, ami kijelöli, hogy melyik regiszterbe töltődjön a következő byte. A második byte az aktuális vezérlő utasítás, ami betöltődik a kijelölt regiszterbe és beállítja a SIO paramétereit.
A kiválasztott regiszterbe beírni és kiolvasni is lehet attól függően, hogy a CPU író-, vagy olvasó ciklust hajt végre. A WRO regiszter közvetlenül beírható. A törlő utasítás (külső vagy belső) és minden WRO-án kívüli regiszter kiolvasás után a pointer (WR0/D0-D2) a WR0 regiszterre mutat.
Könnyítést jelent, hogy a WRO regiszter a pointeren kívül még néhány alapvető utasítást is tartalmaz, melyek közvetlenül tölthetők. Mindkét csatornának a következő, utasítással címezhető vezérlő regiszterei vannak.
6.2. A WR0 vezérlő regiszter
A WR0 regiszter funkciói a következők:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
WR0 | CRC
reset "1" |
CRC
reset "0" |
DMC 2 |
CMD 1 |
CMD 0 |
PTR 2 |
PTR 1 |
PTR 0 |
Pointer bitek (WR0/D0-D2): Meghatározza, hogy melyik regiszterre vonatkozik a következő byte. Törlés után az első byte mindig erre a WR0 regiszterre vonatkozik. Más regiszterek írása és olvasása után a pointer mindig a WR0 regiszterre mutat.
A WR0 regiszter D3-D5 bitjeivel a következő 7 utasítást lehet kiadni a SIO-nak:
Utasítás | CMD2 | CMD1 | CMD0 | Utasítás |
0 | 0 | 0 | 0 | NOP utasítás |
1 | 0 | 0 | 1 | Abort küldés (SDLC üzemmód) |
2 | 0 | 1 | 0 | Külső/státusz megszakítás, törlés |
3 | 0 | 1 | 1 | Csatorna törlés |
4 | 1 | 0 | 0 | Megszakítás engedélyezés a következő karakterre (vétel) |
5 | 1 | 0 | 1 | Megszakítás függő tár törlés |
6 | 1 | 1 | 0 | Hiba törlés |
7 | 1 | 1 | 1 | A csatorna RETI |
CRC törlő utasítások (WR0/D6,D7):
CRC reset 1 |
CRC reset 2 |
Funkció |
0 | 0 | NOP |
0 | 1 | Vevő CEC ellenőrző törlés |
1 | 0 | Adó CRC generátor törlés |
1 | 1 | AE/EOM tároló törlése |
(AE = adás elmaradás (Transmit Underrun), EOM = üzenet vége (End Of Message)).
Az adó CRC generátorának törlése általában 0-ba állítja a CRC generátort, kivéve, ha SDLC üzemmód van, amikor 1-be.
6.3. A WR1 vezérlő regiszter
A WR1 a megszakítások és a "wait/ready" üzemmódjait vezérli.
D7: Wait/Ready engedélyezés,
D6: Wait vagy Ready funkció,
D5: Wait/Ready vétel/adás,
D4: Vételi megszakítás 1,
D3: Vételi megszakítás 2,
D2: Vektor módosító státusz,
D1: Adás megszakítás engedélyezés: Engedélyezi, hogy az adó megszakítást kérjen, ha a puffer regisztere üres.
D0: Külső megszakítás engedélyezés: Ez az utasítás engedélyezi, hogy a következő jelek és állapotok megszakítást kérjenek a CPU-tól: DCD, CTS, SYNC, Break/Abort detektálása, üzenet vége és a CRC, vagy szinkron karakterek küldésénél, ha a AE/EOM tár be van írva.
Vektor módosító státusz (D1): Ez a bit csak a B csatornára érvényes. Ha ez a bit 0, akkor a WR2-nek megfelelő fix vektoros megszakításokat kér a SIO. Ha 1-ben van, akkor az alábbi táblázatnak megfelelő különböző vektorú megszakításokat kér a SIO:
|
|||||||||||||||||
|
|||||||||||||||||
|
Speciális feltételek: paritás hiba, túlcsordulás (vételnél), keret hiba, vége üzenet (EOF SDLC-nél)
Vételi megszakítási módok: A D3-D4 bitek jelölik ki, hogy mikor kérjen a vevő megszakítást a CPU-tól. Mindhárom engedélyezett üzemmódban (lásd a következő táblázatot) speciális vételi állapottal további, módosított vektorú megszakítások keletkezhetnek.
D4 | D3 | |
0 | 0 | 0 vételi megszakítás tiltva |
0 | 1 | 1 első karakter kér megszakítást |
1 | 0 | 2 megszakítás minden vételi karakterre (paritáshiba speciális vételi állapot) |
1 | 1 | 3 megszakítás minden vételi karakterre (a paritáshiba nem speciális állapot) |
Wait/Ready funkció választás (D5-D7):
D7 D6 D5 0 0 0 WAIT, harmadik állapotban van 0 0 1 0 1 0 READY, 1-ben van 0 1 1 1 0 0 WAIT üzemmód, 0 szinten van, ha az adó puffer tele van és harmadik állapotban, ha a puffer üres. 1 0 1 WAIT üzemmód, 0 szinten van, ha a vevő puffer regisztere üres és a SIO címezve van. Harmadik állapotba megy, ha a vevő puffer regiszterébe adat érkezik. 1 1 0 READY üzemmód, 1-ben van, ha az adó puffer regisztere tele van. 0-ba megy, ha az adó puffer regisztere üres. 1 1 1 READY üzemmód, 1-ben van, ha a vevő puffer regisztere üres, 0-ba megy, ha a vevő puffer regiszterébe adat érkezik. A WAIT az I/O kérés után tDIC(WR) idő múlva fut le, és az órajeltől számított tDH(WR) idő múlva fut fel. A ready jel az órajel felfutásától számított tDL(WR) idő múlva megy le és az IORQ lefutásától számítva tDIC(WR) idő múlva fut fel.
A READY kimenet akkor is funkcionál, amikor a SIO nincs megcímezve. A READY kimenet aktív állapotára a DMA kiadja az IORQ, C/D, és B/A jeleket és lebonyolítja az adatátvitelt. Az IORQ és CS jelek aktív állapotánál a READY azonnal passzív állapotba kerül.
Az egyik csatorna WAIT kimenete aktív állapotba mehet, amikor a másik csatornát címezték meg (mert csak együtt lehet megcímezni a két csatornát, mint SIO-t).
6.4. A WR2 vezérlő regiszter
Megszakítási vektor tároló regiszter, csak a B csatornában van. Csak a V4-V7 és a V0 bit jut vissza változatlanul a CPU-ba, mint megszakítási vektor, a V1-V3 bitek csak akkor, ha a WR1/D2 vektor módosító státusz bit 0-ban van. Ha ez a bit 1-ben van, a V1-V3 bitek az előző fejezetben leírtak szerint módosítva jutnak vissza a CPU-ba.
6.5. A WR3 vezérlő regiszter
A WR3 regiszter a vevő üzemmódját és paramétereit állítja be. A regiszter egyes bitjeinek funkciói a következő:
D0 - vétel engedélyezés: A bit logikai 1 szintje engedélyezi a vevő működését. Az engedélyezést csak a vevő és az adó teljes programozása után lehet kiadni.
D1 - szinkron karakter beolvasás tiltása: Ha a bit programozva van, megakadályozza, hogy a szinkron karakter betöltődjenek a puffer regiszterbe.
D2 - címazonosító üzemmód: SDLC üzemmódban a bit hatására a SIO az üzenet címét összehasonlítja a WR6 regiszter tartalmával, vagy a fixen programozott csupa 1-esekkel, és ha egyikkel sem egyezik, akkor nem kezdi meg a vételt.
D3 - vételi CRC engedélyezés: A bit 1-es állapota a puffer regiszter tartalmának beszámításával elindítja a CRC számítást. Lásd az "SDLC CRC ellenőrzés" és "CRC hiba ellenőrzés" című fejezeteket.
D4 - Hunt fázis: Ezzel a SIO újra szinkronizáló üzemmódba (Hunt fázis) állítható, ami automatikusan az RR0/D4 bitet is beírja.
D5 - automatikus engedélyezés: Ha ez a bit 1-ben van, az adó és a vevő engedélyezését a DCD és CTS jelek végzik. Ha a bit 0-ban van a DCD és CTS bemeneteknek a SIO-ban nincs funkciójuk és kiolvashatók az RR0 regiszterből.
D6, D7 - vételi karakterhossz: Ez a két bit határozza meg a vett karakterek hosszát. Mind a két bit változhat a karakterek összeállítása alatt is, de állandónak kell lennie mielőtt a kívánt karakterszám összeáll a léptető regiszterben.
D7 | D6 | |
0 | 0 | 5 bit |
0 | 1 | 7 bit |
1 | 0 | 6 bit |
1 | 1 | 8 bit |
6.6. A WR4 vezérlő regiszter
A kezdeti programozásnál ezt a regisztert a WR1, WR3, WR5, WR6 és WR7 regiszterek előtt kell betölteni.
D0 - paritás: Ha a bit 1, akkor az adó minden karakterhez hozzáad egy paritás bitet. Vételnél a SIO az adattal együtt a paritás bitet is továbbítja a CPU-nak, kivéve, ha 8 bit a programozott karakter.
D1 - páros/páratlan paritás: Ha a paritás engedélyezve van, ez a bit határozza meg, hogy páros, vagy páratlan paritást küldjön az adó, illetve komparáljon a vevő (1 = páros).
D2, D3 - stop bitek száma: Ezek a bitek határozzák meg az aszinkron karakterekhez hozzáadott stop bitek számát. Vételnél a SIO mindig egy stop bitet ellenőriz. A 00 speciális kód a szinkron üzemmód kiválasztását jelzi.
D3 | D2 | |
0 | 0 | szinkron üzemmód |
0 | 1 | 1 stop bit/karakter |
1 | 0 | másfél stop bit/karakter |
1 | 1 | két stop bit/karakter |
D5 | D4 | |
0 | 0 | 8 bites programozott szinkron |
0 | 1 | 16 bites programozott szinkron |
1 | 0 | SDLC üzemmód (01111110) |
1 | 1 | Külső szinkronizálás |
D7 | D6 | Óra/adat frekvencia |
0 | 0 | 1/1 |
0 | 1 | 16/1 |
1 | 0 | 32/1 |
1 | 1 | 64/1 |
6.7. A WR5 vezérlő regiszter
A WR5 regiszter tartalmazza az adó vezérlését és programozását beállító utasításokat. A WR5 regiszter egyes bitjeinek funkciói a következők:
D0 - adás CRC engedélyezés: Ez a bit határozza meg, hogy az adó CRC generátora üzemeljen, vagy ne. Ha a bit 1 amikor a karakter a pufferből a léptető regiszterbe töltődik, a karaktert a CRC generátor beszámítja. Ha a bit 0, adás elmaradásnál a SIO nem adja ki automatikusan a CRC karaktereket.
D1 - RTS: Szinkron üzemben az RTS kimenet vezérlő bitje. Amikor a bit 1, az RTS kimenet 0 (aktív). Aszinkron üzemben az RTS akkor megy 1-be, ha minden karakter kiment az adóból és a puffer regiszter üres.
D2 - CRC 16/SDLC: Az adó és a vevő számára ez a bit választja ki a polinomot. Ha a bit 1-ben van, akkor CRC-16 polinomot használ, ha 0-ban van, akkor pedig SDLC polinomot. SDLC kiválasztásánál a CRC generátor és ellenőrző alapállapota tiszta 1 lesz.
A bit beállítását az SDLC üzemmóddal együtt kell programozni.
D3 - adás engedélyezés: A bit engedélyezi az adó működését. Ha adat, vagy szinkron karakter adása közben ezzel a bittel letiltják az adót, az adásban lévő karakter kimegy, de ha CRC kiadásánál érkezik a letiltás, akkor a CRC helyett szinkron vagy flag karakterek mennek ki.
D4 - break utasítás: A bit 1-be programozásával azonnal "break" jel kiadására kényszeríti az adót.
D5,D6 - adás karakter hossza: A bitek állítják be az adás karaktereinek hosszát a táblázat szerint:
D6 | D5 | Kiadott karakterek hossza |
0 | 0 | Öt vagy kevesebb, lásd a következő táblázatot. |
0 | 1 | 7 bit |
1 | 0 | 6 bit |
1 | 1 | 8 bit |
Az öt, vagy kevesebb üzemmóddal a SIO egy karakterben 1-től öt bitet tud továbbítani, de ehhez a CPU-nak a következő formátumban kell kiadni az adatokat:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Kiadott adatbitek száma |
1 | 1 | 1 | 1 | 0 | 0 | 0 | D | 1 |
1 | 1 | 1 | 0 | 0 | 0 | D | D | 2 |
1 | 1 | 0 | 0 | 0 | D | D | D | 3 |
1 | 0 | 0 | 0 | D | D | D | D | 4 |
0 | 0 | 0 | D | D | D | D | D | 5 |
6.8. A WR6 vezérlő regiszter
Az egyszinkronos és külső szinkronos üzemmódokban, adáskor ez a regiszter tartalmazza a kiadott szinkron karaktert. A kétszinkronos adás- és vétel üzemmódoknál a 16 bites szinkronjel első byte-ját tárolja. SDLC üzemben a második címet tárolja, melyet a SIO az SDLC keret címmel hasonlítja össze.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | CDU adatbitek |
S7 | S6 | S5 | S4 | S3 | S2 | S1 | S0 | Szinkron byte bitek |
6.9. A WR7 vezérlő regiszter
Egyszinkronos üzemben a vevő szinkron karakterét tartalmazza, két szinkronos üzemben a szinkronjel második byte-ját, vagy flag karaktert (01111110) az SDLC üzemmódban. Külső szinkronnál ez a regiszter nincs felhasználva.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | CDU adatbitek |
S15 | S14 | S13 | S12 | S11 | S10 | S9 | S8 | Második szinkron byte bithei |
7.1. Bevezetés
A Z80-SIO három olvasható regisztert tartalmaz, amelyek a csatornák státusz információit tartalmazzák. A csatornák státusz jelein kívül innen olvashatók ki a standard interface jelek és a megszakítási vektor.
A regiszterek kiolvasásakor (kivéve RR0-t) először a WR0 regiszterbe kell írni a kiolvasandó regiszter pointerét, ugyanúgy, mint a WR regisztereknél. Ezután a CPU egy I/O olvasó ciklussal beolvassa a kiválasztott regiszter tartalmát.
Az RR0 és RR1 regiszterek státusz jeleinek összeállítása lehetővé teszi a státusz gyors feldolgozását. Pl. a speciális vételi állapot megszakításánál a megfelelő hiba bitek egy regiszterből (RR1) kiolvashatók.
7.2. Az RR0 státusz regiszter
Ez a regiszter tartalmazza az adó és a vevő státusz bitjeit, a DCD, CTS és SYNC bemenetek és az AE/EOM, valamint a Break tárolóit.
D0 - vétel kész: A bit 1-ben van, ha a vevő puffer regisztere legalább egy karaktert tartalmaz. Törölt állapotban van, ha a vevő FIFO üres.
D1 - megszakítás függő tár: Ez a tár csak az A csatornában van és minden megszakításnál 1-be íródik. Általában ott használják, ahol a vektoros megszakítás nem alkalmazható. Ebben az esetben a bit jelzi, hogy valamelyik megszakítási feltétel érvényes, ami feleslegessé teszi az összes megszakítási feltétel átvizsgálását. A tár akkor törlődik, ha az összes megszakítási feltétel megszűnik.
A B csatornában ez a bit mindig 0.
D2 - adó puffer üres: A bit 1-ben van, ha az adó puffer regisztere üres. (Kivételt képez, ha a SIO éppen CRC jeleket ad ki.) Ha újabb karakter érkezik a puffer regiszterbe a bit törlődik. Törlés után (reset) a bit mindig 1-ben van.
D3 - PCD (Aadat vivő érzékelés): Azt a DCD bemenet negált állapotát őrzi, ami akkor volt, amikor a következő öt külső/státusz jel közül valamelyik megváltozott: DCD, CTS, szinkron, Hunt, Break/Abort és az ADÁS ELMARADÁS/EOM. Bármelyik jel változására a DCD tárolódik és külső/státusz megszakítást kér. A DCD aktuális állapotának kiolvasását közvetlenül a külső/státusz megszakítás törlő utasítás után kell végezni.
D4 - Szinkron/Hunt: A bit vezérlése a SIO szinkronizálási módjától függ (aszinkron, szinkron és SDLC).
Aszinkron üzemmódban a DCD-hez hasonlóan működik, de csak a SYNC bemenet állapotát mutatja. A SYNC bemenet minden átmenete beírja ezt a bitet és ha engedélyezve van, külső/státusz megszakítást kér. A megszakítás a külső/státusz törlő utasítással törölhető, ez a bitet 0-ba állítja, ami újabb megszakítást generál.
Ha más bemenet váltotta ki a megszakítást, akkor ez a bit a SYNC bemenet váltáskori állapotát mutatja negálva. Aktuális állapotát közvetlen a külső/státusz törlő utasítás után lehet kiolvasni.
Külső szinkronizálásos üzemben a Szinkron/Hunt bit az aszinkron üzemmódhoz hasonlóan működik, csak ilyenkor a WR3/D4 (Hunt fázisba kényszerítő utasítás) engedélyezi a külső szinkronizáló áramkört. Külső szinkronizáló üzemben a Hunt fázisba kényszerítő utasítás kiadásakor a külső szinkronizáló áramkörnek a SYNC bemenetet 1-ben kell tartania, addig, amíg a szinkronizálás megtörténik.
A SYNC bemenet 1-es állapota 0-ban tartja a szinkron/státusz bitet.
Szinkronizáláskor a szinkronjel utolsó bitjét követő második RxC felfutó élénél kell a SYNC bemenetet 0-ba húzni. (Másszóval a szinkronjel vétele után még két ciklust várni kell a SYNC bemenet aktivizálásáig.) Általános gyakorlat, hogy a külső logika addig tartja 0-ban a bemenetet, amíg a CPU nem jelzi, hogy az adatátvitel kiesett a szinkronból, vagy új üzenet adása kezdődik.
A SYNC bemenet 10 átmenete beírja a Szinkron/Hunt bitet, ami megszakítást kér a CPU-tól. A megszakítást a külső/státusz megszakítás törlő utasítással kell törölni. Amikor a SYNC bemenet újra 1-be megy egy másik, külső/státusz megszakítás is generálódik, amit szintén törölni kell.
A Hunt fázisba kényszerítő utasítást akkor adja ki, amikor az átvitel kiesett a szinkronból, vagy üzenet vége jel érkezett. Ebben az esetben a SIO újra 10 átmenetet vált a SYNC bemeneten és a működés az előbbieknek megfelelően ismétlődik. Ilyenkor a CPU-nak jeleznie kell a külső áramkörnek, hogy a szinkron kiesett és a Z80-SIO a SYNC bemenetén aktív állapotra vár.
Egy és kétszinkronos vételnél a Szinkron/Hunt státusz bit a Hunt fázisba kényszerítő utasítással 1-be van állítva. A Z80-SIO szinkronizálása után a bit törlődik. A szinkron/Hunt státusz bit 10 átmenete megszakítást kér, amit a külső/státusz megszakítás törlő utasítással kell törölni. Ez lehetővé teszi, hogy a Z80-SIO detektálni tudja a külső/státusz bit következő váltását.
Amikor a CPU vége üzenetet kap, a szinkronizáció megszűnik és beállítja a Hunt fázisba kényszerítő vezérlő bitet, ami a Szinkron/Hunt bitet is 1-be állítja. A Szinkron/Hunt bit 10 átmenete külső/státusz megszakítást kér, amit szintén a külső/státusz törlő utasítással kell törölni. Ebben az üzemben a SYNC kimenet, és mindig 0-ba megy, amikor a SIO szinkronjelet detektál az adatfolyamban.
SDLC üzemmódban a Szinkron/Hunt bit a Hunt fázisba kényszerítő utasítással, vagy a vevő letiltásával kerül 1-be és flag detektálásakor törlődik. Itt is lesz külső/státusz megszakítás, amit az előbbiekhez hasonlóan kell kezelni. Az egy- és kétszinkronos üzemtől eltérőén, ha SDLC üzemmódban a Szinkron/Hunt bit egyszer törölt állapotba került, a vége üzenetnél nem szükséges 1-be írni. A Z80-SIO automatikusan megtartja a szinkronizálást. A Szinkron/Hunt bit ilyenkor a Hunt fázisba kényszerítő utasítással, vagy a vevő letiltásával állítható 1-be.
D5 - CTS (Clear to Send): A DCD bithez hasonlóan a CTS negáltját mutatja.
D6 - Adás elmaradás / vége üzenet (AE/EOM): Törlés (reset) után a bit
1-ben van és az AE/EOM törlő utasítással (WR0/D6-D7) állítható 0-ba. Adás elmaradásnál a bit beíródik és külső/státusz megszakítást kér, amit a külső/státusz megszakítás törlő utasítással kell törölni. A bit szerepének részletesebb leírását lásd a "Kétszinkronos adás elmaradás" és az "SDLC adás elmaradás" című fejezetekben.
7.3 Az RR1 státusz regiszter
SDLC üzemben a regiszter tartalmazza a speciális vételi állapot státuszát és az adat maradék (Residue) kódját. A regiszter egyes bitjeinek funkciói a következők:
D0 - vége státusz: Aszinkron üzemben a bit 1-ben van, ha az adó teljesen üres. A bit változtatása nem okoz megszakítást és szinkron üzemben mindig 1-ben van.
D1-D3 - Maradék kódok: SDLC üzemben, ha az üzenet adatbitjeinek száma nem egészszámú többszöröse a karakter hossznak, ez a három bit jelzi az adat hosszát. A kódok csak az EOF bit 1 állapotánál érvényesek. 8 bites vételi karaktereknél a kódok jelentése a következő:
maradék kódok | Az előző byte adatrészének hossza (bit) | A kettővel ezelőtti byte adatrészének hossza (bit) | ||
D3 | D2 | D1 | ||
1 | 0 | 0 | 0 | 3 |
0 | 1 | 0 | 0 | 4 |
1 | 1 | 0 | 0 | 5 |
0 | 0 | 1 | 0 | 6 |
1 | 0 | 1 | 0 | 7 |
0 | 1 | 1 | 0 | 8 |
1 | 1 | 1 | 1 | 8 |
0 | 0 | 0 | 2 | 8 |
Ha a vételi karakter nem 8 bites, az előbbihez hasonló táblázat készíthető minden karakter hosszúsághoz.
Ha a maradék nulla (az utolsó karakter hossza megegyezik az adat és a CRC hosszal) a maradék kódok a következők:
bit/karakter | maradék kódok | ||
D3 | D2 | D1 | |
8 bit/karakter | 0 | 1 | 1 |
7 bit/karakter | 0 | 0 | 0 |
6 bit/karakter | 0 | 1 | 0 |
5 bit/karakter | 0 | 0 | 1 |
D4 - paritás hiba: Ha a paritás engedélyezve van, a bit egybe íródik, ha a karakter paritása nem egyezik meg a programozott paritás értékével. A bit tárolódik és csak a hiba törlő utasítással törölhető.
D5 - vételi túlcsordulás hiba: A bit jelzi, hogy több mint három karakter érkezett a vevőbe anélkül, hogy a CPU kiolvasott volna. Csak a felülíródott karakternél jelzi a hibát és kiolvasásakor nem törlődik. Ha a vektor módosító státusz engedélyezve van, a felülírt karakter speciális vektorral megszakítást fog kérni.
7.4. Az RR2 státusz regiszter (csak a B csatornánál van)
Ha a vektor módosító státusz bit 0, akkor ez a regiszter a WR2 regiszterbe írt vektort tartalmazza. Ha a módosító bit 1, akkor a módosított vektort tartalmazza. Kiolvasáskor a legnagyobb prioritású egységnek megfelelő módosított vektort adja ki. Ha nincs változtató státusz, akkor a V3=0, V2=1 és a V1=1 lesz.
7.5. Felhasználás
A Z80-SIO nagyfokú flexibilitása széleskörű felhasználást tesz lehetővé, melyek közül néhányat ebben a fejezetben szeretnénk bemutatni.
A 7.2 ábra egy CPU-CPU egyvezetékes összekapcsolását mutatja be.
7.2 ábra: Processzorok összekapcsolása telefonvonalon
A rendszerben mindkét processzor különböző protokollal és adat sebességgel tud kommunikálni a Z80-CPU-val. A kapcsolás komplexitásától függően más Z80 periféria áramkör is szükséges lehet (pl. Z80-CTC). A Z80-SIO szabad csatornái felhasználhatók más perifériák vezérlésére, vagy további processzorok összekapcsolására.
A 7.3 ábrán a Z80-SIO egy modemmel összekapcsolva mindkét csatornáját használja.
7.3 ábra: Két csatorna egy Z80-SIO-val
A modem 2+1 opcionális csatornával rendelkezik, és két ilyen modem köthető felváltva a SIO-hoz. Aszinkron modemnél egy megfelelő baud generátor (CTC) is szükséges.
A 7.4 ábrán a Z80-SIO-t egy adatkoncentrátorban használják. Az adatkoncentrátor különböző perifériáktól gyűjti be az adatokat, amit formálás és javítás után egy nagysebességű vonalon továbbit.
Z80-SIO egy Z80-DMA vezérlővel nagy sebességgel és a megfelelő protokollal továbbítja az adatokat. A nagysebességű modem szolgáltatja az órajellel a csatornához, a kis sebességű vonal órajelét pedig egy Z80-CTC áramkör állítja elő.
Z80-SIO vezérli a helyi, vagy a távvezérelhető terminált. A szaggatott vonallal bekeretezett rész, egy egyszerű intelligens terminál. A terminál a Z80-SIO egy csatornájának felhasználásával kapcsolódik az adatkoncentrátorhoz. A Z80-SIO másik csatornája a sornyomtatót csatlakoztatja a terminálhoz.
8.1. Olvasó ciklus
A CPU egy I/O olvasó ciklussal olvassa ki a Z80-SIO adatait és státuszát. Az olvasás időzítését a 8.1 ábra mutatja.
8.1 ábra: Olvasó ciklus
8.2. Megszakítás elfogadó ciklus
Megszakításkor (INT=0) a Z80-CPU egy megszakítás elfogadó ciklussal válaszol (M1 és IORQ aktív). Ezalatt a prioritásos megszakítási logika meghatározza, hogy melyik a legnagyobb prioritású megszakítást kérő egység (IEI=1 és IEO=0). Azoknál az egységeknél, melyek nincsenek kiszolgálás alatt és nem kérnek megszakítást az IEO=IEI. A lánc stabilizálása érdekében az M1 alatt az egységek megszakítási státusza nem változik.
Amikor az IORQ is nullába megy, a legnagyobb prioritású egység kiadja a CPU adatbuszára a megszakítási vektorát és beírja a belső megszakítás kiszolgáló tárolóját.
8.3. Írás ciklus
A Z80-SIO vezérlő regisztereit a Z80-CPU egy I/O utasítással tölti fel. Az író utasítás időzítését a 8.2 ábra mutatja.
8.2 ábra: Író ciklus
8.4. Megszakításból visszatérő utasítás
A megszakítási rutin végén a CPU kiadja a RETI utasítást. A RETI két byte-os kódját a SIO felismeri és törli a megszakítás kiszolgáló tárolóját.
Először a SIO dekódolja az ED utasítást és az IEO kimenetét 1-be állítja (kivéve, ha megszakítás kiszolgálás alatt áll). Ha a következő műveleti kód 4D, akkor törli a kiszolgálás alatt álló egység megszakítás kiszolgáló tárolóját.
Az IEI-IEO átfutási idő a láncba kapcsolható egységek számát limitálja (az M1 és IORQ jelek megjelenése között a jelnek végig kell szaladnia a teljes megszakítási láncon). Nagyobb számú egységek sorba kapcsoláséinál átvitel előrecsatoló hálózatot, vagy a megszakítás elfogadó ciklus kiterjesztést kell megvalósítani.
8.3 ábra: Megszakítás elfogadó- és visszatérő utasítások időzítései
8.5. Megszakítási lánc kialakítása
A 8.4 ábra egy prioritásos megszakítási láncot mutat, ahol minden egység egy külön Z80 periféria lehet a felhasználó által definiált prioritási szinttel. A Z80-SIO-n belül fix megszakítási szint van az egyes csatornák és azok egységei között.
8.4 ábra: Tipikus megszakítási folyamat
Az ábrán először a B csatorna kért és kapott megszakítást, amit azután a nagyobb prioritású A csatorna szakított meg. Az A csatorna kiszolgálása után folytatódik a megszakított B csatorna kiszolgáló rutinja.
Elektromos specifikáció 1.
Elektromos specifikáció 2.
Elektromos specifikáció 3.
Elektromos specifikáció 4.
Rendelési információk
Típus | Megnevezés | Tokozás | Max. óra | Működési hőmérséklet |
MK3884N MK3884P MK3884J MK3884N-10 MK3884P-10 MK3884J-10 |
Z80-SIO/0 Z80-SIO/0 Z80-SIO/0 Z80-SIO/0 Z80-SIO/0 Z80-SIO/0 |
műanyag kerámia CERDIP műanyag kerámia CERDIP |
2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C -40 ... +85 C -40 ... +85 C -40 ... +85 C |
MK3884N-4 MK3884P-4 MK3884J-4 |
Z80A-SIO/0 Z80A-SIO/0 Z80A-SIO/0 |
műanyag kerámia CERDIP |
4 MHz 4 MHz 4 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C |
MK3885N MK3885P MK3885J MK3885N-10 MK3885P-10 MK3885J-10 |
Z80-SIO/1 Z80-SIO/1 Z80-SIO/1 Z80-SIO/1 Z80-SIO/1 Z80-SIO/1 |
műanyag kerámia CERDIP műanyag kerámia CERDIP |
2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C -40 ... +85 C -40 ... +85 C -40 ... +85 C |
MK3885N-4 MK3885P-4 MK3885J-4 |
Z80A-SIO/1 Z80A-SIO/1 Z80A-SIO/1 |
műanyag kerámia CERDIP |
4 MHz 4 MHz 4 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C |
MK3887N MK3887P MK3887J MK3887N-10 MK3887P-10 MK3887J-10 |
Z80-SIO/2 Z80-SIO/2 Z80-SIO/2 Z80-SIO/2 Z80-SIO/2 Z80-SIO/2 |
műanyag kerámia CERDIP műanyag kerámia CERDIP |
2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz 2,5 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C -40 ... +85 C -40 ... +85 C -40 ... +85 C |
MK3887N-4 MK3887N-4 MK3887J-4 |
Z80A-SIO/2 Z80A-SIO/2 Z80A-SIO/2 |
műanyag kerámia CERDIP |
4 MHz 4 MHz 4 MHz |
0 ... +70 C 0 ... +70 C 0 ... +70 C |
Forrás: Zilog - Mostek (1981. február)
Vissza a Spectrum könyvekhez
Vissza az Enterprise könyvekhez