PROGRAMOVANIE Z80-SIO
####################### ADRESOVANIE REGISTROV
______________
| D2 | D1 | D0 |
|____|____|____|
| 0 | 0 | 0 | nulové adresovanie
| 0 | 0 | 1 | register 1
| 0 | 1 | 0 | register 2
| 0 | 1 | 1 | register 3
| 1 | 0 | 0 | register 4
| 1 | 0 | 1 | register 5
| 1 | 1 | 0 | register 6
| 1 | 1 | 1 | register 7
|____|____|____|Naprogramovanie riadiacich registrov si vyžaduje dve za sebou
nasledujúce riadiace slová. Prvé riadiace slovo bity D0,D1,D2
obsahujú adresu registra pre nasledujúce riadiace slovo
a nastavenie pre riadiaci register 0. VRO
______________ ________________________________________________
| D5 | D4 | D3 | <-- kanálové príkazy
|____|____|____|________________________________________________
| 0 | 0 | 0 |-Žiadne zmeny; tento príkaz nemá účinok. Slúži
| | | | ako ukazovateľ pre iný register
|____|____|____|________________________________________________
| 0 | 0 | 1 |-Vyvolanie ABORT oznamu v móde SDLC.
|____|____|____|________________________________________________
| | | |-Zablokovanie pre externé a stavové prerušenie
| 0 | 1 | 0 | po externom alebo status interrupte budú
| | | | stavové bity čítacieho registra RRO zabuchnuté
| | | | Tento príkaz pôsobí ako nové uvoľnenie preruš.
|____|____|____|________________________________________________
| | | |-RESET kanálu. Tento príkaz platí pre zvolený
| 0 | 1 | 1 | kanál. Po výstupe tohto príkazu je nutné počkať
| | | | 4 takty, než sa ďaľšie informácie zapíšu do
| | | | kanála. Po prevedení príkazu sa musia všetky
| | | | riadiace registre kanálu znovu zapísať.Zhodenie
| | | | kanálu A spôsobí aj zhodenie logiky prerušenia
|____|____|____|________________________________________________
| | | |-Touto novou správou je možné vyvolať ďaľšie
| 1 | 0 | 0 | prerušenie prijímača pri prvom prijatom znaku
| | | | Po ukončení správy je nutné zhodiť logiku
| | | | prerušenia.
|____|____|____|________________________________________________
| | | |-Vysielač vydá prerušenie, keď je prázdny
| 1 | 0 | 1 | a v móde prerušenie pri každom znaku. Za týmto
| | | | príkazom sa potom nevysielajú žiadne znaky,
| | | | je zamedzené ďaľšie prerušenie vysielača.
|____|____|____|________________________________________________
| | | |-ERROR RESET chyba parity a chyba pretečenia
| 1 | 1 | 0 | budú až do zhodenia v registri RR1 zapämätané
| | | | týmto príkazom.
|____|____|____|________________________________________________
| | | |-RETI (pôsobí ako RETI inštrukcia CPU)
| 1 | 1 | 1 | iba kanál A; Prostredníctvom nej možno nájsť
| | | | internú prioritnu reťaz v systémoch bez
| | | | externej prioritnej reťaze k využitu.
|____|____|____|________________________________________________
_______________________________________________________________
| D6 | D7 |
|____|____|_____________________________________________________
| 0 | 0 |-Žiadne zmeny. Používa sa ako ukazovateľ na iné reg.
|____|____|_____________________________________________________
| 0 | 1 |-RESET príjimačového CRC posuvného registra
|____|____|_____________________________________________________
| 1 | 0 |-RESET vysielacieho CRC posuvného registra
|____|____|_____________________________________________________
| 1 | 1 |-RESET CRC/SYNC - status pamäti
|____|____|_____________________________________________________
RIADIACI REGISTER 1 WR1
Tento register obsahuje riadiace bity pre rozličné módy
prerušení a WAIT/READY.
___ ___ ____
D0=1 uvoľnenie externého prerušenia (pri zmene DCD,CTS,SYNC)
D1=1 uvoľnenie rerušenia vysielača pri prázdnom registri vysiel.
D2=0 stav interrupt vektora nie je ovplyvňovaný, tekže ten bude
použitý tak ako bol zapísaný. Bit D2 sa zapisuje iba do
registra WR1 kanálu B. Mód potom platí pre obidva kanály.
D2=1 doplnenie interrupt vektora o stavovú informáciu
(iba kanál B);V prípade prerušenia bude prostredníctvom SIO
dodaný interrupt vektor modifikovaný stavovým slovom nasledovne:
______________
| V3 | V2 | V1 |
|____|____|____|________________________________________________
| 0 | 0 | 0 | kanál B: register vysielača je prázdny
| 0 | 0 | 1 | kanál B: externé/stavové zmeny
| 0 | 1 | 0 | kanál B: znak prijímača je pohotový
| 0 | 1 | 1 | kanal B: špeciálne podmienky príjmu
| 1 | 0 | 0 | kanál A: register vysielača je prázdny
| 1 | 0 | 1 | kanál A: externé/stavové zmeny
| 1 | 1 | 0 | kanál A: znak prijímača je pohotový
| 1 | 1 | 1 | kanál A: špecialne podmienky príjmu
|____|____|____|________________________________________________Špecialne podmienky príjmu môžu byť: chyba parity, pretečenie
prijímača, chyba tvaru CRC, koniec formátu (SDLC-módu)
_______________________________________________________________
| D4 | D3 | špecifikujú interrupt mód prijímača
|____|____|_____________________________________________________
| 0 | 0 |-zablokovanie prerušenia od prijímača
|____|____|_____________________________________________________
| | |-uvoľnenie prerušenia prijímača pri prvom prijatom
| 0 | 1 | znaku alebo chybe
|____|____|_____________________________________________________
| | |-uvoľnenie prerušenia prijímača pri každom prijatom
| 1 | 0 | znaku (parita ovplyvňuje vektor)
|____|____|_____________________________________________________
| | |-uvoľnenie prerušenia prijímača pri každom prijatom
| 1 | 1 | znaku (parita ovplyvňuje vektor)
|____|____|_____________________________________________________
__________
D5=1 tvorenie signálu WAIT/READY pri prázdnom registri
=0 -||- pri plnom registri
__________
D6=1 WAIT/READY signál pre DMA riadenie
=0 -||- pre CPU riadenie
(keď bude SIO spojený so vstupom WAIT CPU, bude týmto bitom
WAIT funkcia obvodu_______
keď bude vodič W/READY spojený s DMA jednotkou, bude
používaný ako READY vodič)
__________
D7=1 WAIT/READY uvoľnenie
READY funkciu je možné vyvolať v každom čase nezávisle od
toho,či SIO bol adresovaný, alebo nie. Táto funkcia je
aktívna v H a je odvodená od nástupnej hrany taktu.
__________
D7=0 blokovanie funkcie WAIT/READY ;vodič je v H v READY móde
alebo vysokoimpedančný v móde WAIT RIADIACI REGISTER 2 WR2
Iba kanál B; obsahuje interrupt vektor pre SIO
Bity V0 a V4-V7 budú vždy dané obvodom SIO a pre bity V1-V3
budú prístupné až potom, ak bit D2 registra WR1 bude 0
RIADIACI REGISTER 3 WR3
Obsahuje riadiace bity pre logiku prijímača.
D0=1 uvoľnenie prijímania; prijímač môže začať prijímať.
D1=1 synchronizačné znaky nebudú naplňovať register prijímača.
(Výpočet CRC nebude prerušený)
D2=1 adresa bloku v mode SDLC. V SDLC móde nastavenie tohto bitu
znamená, že správa s adresou, ktorá nieje v súhlase s pro-
gramovanou, alebo globálnou adresou (FFH) bude potlačená.
To znamená,že v riadnom vysielaní prerušenie nenastane skôr
kým nenastane zhoda adries.
D3=1 uvoľnenie pre spočítanie CRC prijímača. Výpočet CRC začne
pri štarte posledného znaku, ktorý z registra prijímača bol
prenesený do bufra, nezávisle na počte znakov v bufri.
D4=1 prechod (znovu) do vyhľadávacieho režimu pri chybe synchro-
nizácie.(Synchronizačné znaky môžu byť znovu dosiahnuté)
D5=1 AUTO ENABLE (externé riadenie prenosu dát s CTS a DCD)
Týmto budú signály na vstupoch,CTS a DCD odpovedajúce
uvoľneniu prijímača a vysielača.
D5=0 Vstupy DCD a CTS sú iba vstupy odpovedajúce bitom čítacieho
registra RR0
_______________________________________________________________
| D7 | D6 | Počet prijatých bitov, ktoré patria jednému znaku
|____|____|_____________________________________________________
| 0 | 0 | 5
| 0 | 1 | 6
| 1 | 0 | 7
| 1 | 1 | 8
|____|____|_____________________________________________________Pokiaľ bude počet bitov menší ako naprogramovaná dľžka znaku,
možno v každom čase dľžku znaku zmeniť.
RIADIACI REGISTER 4 WR4
D0=1 prídavná pozícia bitu pre označenie parity
D1=1 parita: párna bude vyslaná a prijatý znak na ňu preskúšaný
D1=0 parita: nepárna
_______________________________________________________________
| D3 | D2 | stop bity
|____|____|_____________________________________________________
| 0 | 0 | synchrónny prenos
| 0 | 1 | 1 stop bit
| 1 | 0 | 1 1/2 stop bit
| 1 | 1 | 2 stop bit
|____|____|_____________________________________________________
Určujú počet stop bitov každom vyslanom asynchrónnom znaku.
Prijímač iba preskúša, či aspoň jeden stop bit je k dispozícii.
_______________________________________________________________
| D5 | D4 | synchronizačný modus
|____|____|_____________________________________________________
| 0 | 0 | 8 bitový synchron. znak
| 0 | 1 | 16 bitový synchron. znak
| 1 | 0 | SDLC mode
| 1 | 1 | externá synchronizácia
|____|____|_____________________________________________________
_______________________________________________________________
| D7 | D6 | taktovanie - deliteľ
|____|____|_____________________________________________________
| 0 | 0 | 1
| 0 | 1 | 16
| 1 | 0 | 32
| 1 | 1 | 64
|____|____|_____________________________________________________
Určeujú násoiteľ prenosovej rýchlosti ku taktovacej frekfencii.
Pri synchrónej prevádzke musí byť násobiteľ rovný 1.
Pre prijímač i vysielač musí platiť ten istý násobiteľ.
V mode x1 musí byť bitová externá synchronizácia,pričom môžu byť
programované 1 1/2 stop bity. Vo všetkých modoch móže byť
prenosová rýchlosť nanajvýš systémová frekfencia/4,5.
RIADIACI REGISTER 5 WR5
D0=1 uvoľnenie pre spočítanie CRC vysielača. Týmto bude vypočí-
tané CRC od práve vyslaného znaku. CRC bude vyslané potom,
keď bude tento bit nastavený.
___
D1=1 RTS výstup=0, RTS bit nastavený.
D1=0 RTS bit (požiadavka na vysielanie) zosadený. S týmto vývod
RTS je v H, avšak v asynchrónnej prevádzke až potom, len čo
vsetky bity znaku boli vyslané a register vysielača je
prázdny. V synchrónnej prevádzke odpovedá úroveň vývodu RTS
stavu bitu.
D2=1 CRC kód x^16+x^15+x^2+1 (CRC-16) ; voľba CRC 16-polynómu.
Keď nebol zvolený v móde SDLC, budú CRC generátor a skúšač
vo všetkých bitoch nastavené na jednotku.
D2=0 CRC kód x^16+x^12+x^5+1 (SDLC) ;vľba SDLC polynómu, platí
pre vysielač aj prijímač. SDLC-CRC polynóm musí byť zvolený
keď je potrebný SDLC mód. CRC generátor a skúšač budú vo
všetký bitoch nastavené na jednotku.
D3=1 uvoľnenie vysielania; skôr než je tento bit nastavený,
nemôžu byt vyslané žiadne data.
D3=0 keď bude vysielač po začatí vysielania zablokovaný, budú
práve vysielané data alebo synchronizačne znaky vyslané
úplne.Ak bude vysielač zablokovaný počas prenosu CRC znaku,
nasleduje vyslanie synchronizačných znakov alebo flagov.
D4=1 BREAK-podmienka; nastavením tohto bitu bude datový výstup
vysielača ihneď zapojený na pauzu.
_______________________________________________________________
| D6 | D5 | počet bitov vyslaných z každého znaku
|____|____|_____________________________________________________
| 0 | 0 | =< 5 počet bitov umiestnených
| 0 | 1 | 7 od najnižších miest
| 1 | 0 | 6
| 1 | 1 | 8
|____|____|_____________________________________________________
||
\/
_______________________________________
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | dľžka znaku
|____|____|____|____|____|____|____|____|
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | D | 1 datový bit
| 1 | 1 | 1 | 0 | 0 | 0 | D | D | 2 datové bity
| 1 | 1 | 0 | 0 | 0 | D | D | D | 3 datové bity
| 1 | 0 | 0 | 0 | D | D | D | D | 4 datové bity
| 0 | 0 | 0 | D | D | D | D | D | 5 datových bitov
|____|____|____|____|____|____|____|____|
___
D7=1 DTR výstup=0 (aktívny)
___
D7=0 DTR výstup=1 (neaktívny) RIADIACI REGISTER 6 WR6
obsahuje:
v MONO SYNCHR. MODE - synchronizačný znak vysielača
v BI-SYNC MODE - spodnú časť 16-bitového synchron. znaku
v SDLC MODE - adresa bloku dát, s ktorou sa porovnáva
obsah adresy SDLC-kanálu. RIADIACI REGISTER 7 WR7
obsahuje:
v BI-SYNC MODE - hornú časť 16-bitového synchron. znaku
v SDLC MODE - kódovanie 7EH flagový znak
v MONO SYNCHR. MODE - synchronizačný znak prijímača
***
Prístup ku stavovému registru vyžaduje najprv výstup riadiaceho
slova s adresou registra ako pri zápise do riadiaceho registra.
Potom možno stavový register prečítať. Riadiace vstupné a výstup
pné slovo bude odlíšené od dat. vstupov a výstupov cez pripojený
C/D vstup s adres. bitom ako pri PIO
Každý kanál SIO obvodu obsahuje dva, prípadne tri čítacie
registre,ktoré obsahujú stavovú informáciu.Jeden takýto register
slúži k čítaniu interrupt vektora. Slúži obom kanálom, no je
priradený kanálu B.Adresovanie čítacích registrov je rovnaké ako
u zápisových registrov, rozdiel je iba v prevedení inštrukcie
IN namiesto OUT. Čítanie registra RR2 vyžaduje zápis do WR0,
nasledujúci po prečítaní RR2 CPU.