náhled|Z80 SIO/0 Z80 SIO (Z80 Serial Input/Output) je integrovaný obvod z rodiny procesoru Z80. Jedná se obvod poskytující dvě sériové brány (označované jako brána A a brána B). Protože se jedná obvod z rodiny procesoru Z80, umožňuje plně využívat možnosti přerušovacího systému procesoru Z80. Podobný obvod v rodině procesoru Intel je obvod Intel 8251.
Obvod je použit např. společně s obvody WD2797, Z80 CTC a Z80 PIO v univerzální I/O kartě EXIO k počítačům Sharp.Sharp EXIO na 8bity.cz Může také být základem interface MIDI.
Varianty obvodu Obvod existuje v několika provedeních, Z80 SIO/0, Z80 SIO/1 a Z80 SIO/2 jsou provedeny ve 40pinovém pouzdru DIP, Z80 SIO/3 ve 44pinovém pouzdru QFP a Z80 SIO/4 ve 44pinovém pouzdru PLCC.
Existence tří variant obvodu v pouzdru DIP je způsobena nedostatečným počtem pinů v těchto pouzdrech, tyto varianty se tak vzájemně liší tím, které signály brány B jsou vyvedeny: Z80 SIO/0 má vyvedeny všechny signály brány B s tím, že signály /TxCB a /RxCB sdílejí stejný pin, Z80 SIO/1 nemá vyveden signál /DTRB, Z80 SIO/2 nemá vyveden signál /SYNCB.
Režimy sériových bran Brány mohou pracovat v následujících režimech: režim pollingu, režim přenosu řízený přerušením, blokový režim přenosu.
Specifikace sériového přenosu vstupy a výstupy v logice TTL, duplexní přenos, 5, 6, 7 nebo 8 bitů na znak, 1, 1,5, nebo 2 stop bity, sudá, lichá, nebo žádná parita.
Konfigurace obvodu Obvod je možné konfigurovat pomocí osmi registrů pro zápis a stav obvodu může být čten pomocí tří registrů pro čtení. registr význam WR0 Základní příkazy WR1 Nastavení generování přerušení a signálu Wait/Ready WR2 Vektor přerušení (tento registr je přístupný pouze při konfiguraci kanálu B) WR3 Řízení příjmu WR4 Nastavení vlastností přenosu WR5 Nastavení vysílání WR6 Nastavení synchronizačního znaku, resp. adresy pro režim SDLC WR7
registr význam RR0 Příznaky stavu příjmu a vysílání RR1 RR2 Vektor přerušení (tento registr je přístupný pouze při konfiguraci kanálu B)
Kromě zápisu do registru WR0 je zápis do registrů prováděn zápisem dvou po jdoucích bajtů, kdy první bajt obsahuje číslo registru, pro který je určen následující bajt. Stejným způsobem jsou vybírány registry pro čtení. Pokud neproběhne výběr registru pro čtení, je čten registr RR0.
Registr WR0 bit 7 6 5 4 3 2 1 0 reset CRC:00 – žádný příkaz01 – reset výpočtu CRC příchozích dat10 – reset výpočtu CRC odchozích dat11 – reset příznaku podtečení při vysílání příkaz pro provedení:000 – žádný příkaz001 – ukončení vysílání (pouze v režimu SDLC)010 – reset příznaku přerušení011 – reset kanálu100 – povolení generování přerušení při dalším přijatém znaku101 – reset generování přerušení při prázdném odesílacím bufferu110 – reset příznaku chyby111 – návrat z přerušení číslo registru se kterým bude prováděna následující operace zápisu nebo čtení
Registr WR1 bit 7 6 5 4 3 2 1 0 povolení signálů Wait/Ready přepínání režimu Wait/Ready:0 – Wait1 – Ready 0 – Wait/Ready funguje pro odesílání1 – Wait/Ready funguje pro přijímání nastavení generování přerušení při vysílání:00 – zakázáno01 – pro první příchozí znak10 – pro jakýkoliv příchozí znak, chyba parity je speciální podmínka při příjmu11 – pro jakýkoliv příchozí znak, chyba parity není speciální podmínka při příjmu proměnný vektor přerušení podle události, která přerušení vyvolala (bit je přístupný pouze při konfiguraci kanálu B) povolení generování přerušení při prázdném odchozím bufferu povolení generování přerušení stavem vnějšího zařízení (signály /CDC, /CTS, /SYNC) nebo při vysílání CRC nebo synchronizačního znaku
Registr WR2 bit 7 6 5 4 3 2 1 0 vektor přerušení
Registr WR3 bit 7 6 5 4 3 2 1 0 počet bitů na znak při příjmu:00 – 510 – 601 – 711 – 8 automatické spuštění odesílání a příjmu při aktivních signálech /DCD a /CTS vstup do režimu Hunt povolení výpočtu CRC příchozích dat potlačení příjmu zpráv, které neobsahují adresu definovanou registrem WR6 (pro režim SDLC) potlačení příjmu příchozího synchronizačního znaku povolení příjmu
Registr WR4 bit 7 6 5 4 3 2 1 0 nastavení časování (TxC, RxC) vůči rychlosti přenosu dat (TxD, RxD)00 – xC = xD x 101 – xC = xD x 1610 – xC = xD x 3211 – xC = xD x 64 nastavení synchronizace00 – 8bitový synchronizační znak01 – 16bitový synchronizační znak10 – režim SDLC11 – externí synchronizace nastavení stop bitu00 – synchronní režim01 – 1 stop bit10 – 1 1/2 stop bitu11 – 2 stop bity nastavení parity (0 – lichá, 1 – sudá) zapnutí vysílání a příjmu paritního bitu
Registr WR5 bit 7 6 5 4 3 2 1 0 signál DTR počet bitů znaku odesílaných do vysílacího bufferu00 – 5 a méněv tomto režimu je nutné, aby procesor poslal do čipu ve formátu závislém na tom, kolika bity je tvořen odesílaný znak.01 – 610 – 711 – 8 signál přerušení vysílání povolení odeslání dat polynom výpočtu CRC:0 – polynom CRC-16 X16 + X15 + X2 + 11 – 0 – polynom SDLC X16 + X12 + X5 + 1 signál RTS zapnutí výpočtu CRC při odesílání
Registr WR6 bit 7 6 5 4 3 2 1 0 v závislosti na režimu: synchronizační znak, prvních 8 bitů synchronizačního znaku, adresa přijímacího čipu (v režimu SDLC), který bude vyslán.
Registr WR7 bit 7 6 5 4 3 2 1 0 v závislosti na režimu: synchronizační znak, prvních 8 bitů synchronizačního znaku, příznakový znak 0111 1110 (v režimu SDLC).
Registr RR0 bit 7 6 5 4 3 2 1 0 příznak přečtení znaku signalizujícího přerušení vysílání vysílací stranou příznak podtečení při odesílání signál CTS Sync/Hunt signál DCD v okamžiku, kdy byly splněny speciální podmínky pro vznik přerušení vysílací buffer je prázdný nastaly podmínky pro vznik přerušení (pouze pro kanál A, pro kanál B vždy nulový) příznak přítomnosti alespoň 1 znaku v přijímacím bufferu
Registr RR1 bit 7 6 5 4 3 2 1 0 konec přijatého rámce (v režimu SDLC) příznak chyby CRC/rozdělení na rámce přetečení přijímací bufferu (přijímací buffer může obsahovat nejvýše tři znaky) příznak chyby parity délka I-pole v režimu SDLC příznak odeslání všech znaků z vysílacího bufferu
Registr RR2 bit 7 6 5 4 3 2 1 0 vektor přerušení (bity 1–3 se v závislosti na režimu mohou lišit od jejich naprogramovaných hodnot registrem WR2)
Přerušení Obvod může generovat přerušení při následujících událostech: při přijetí prvního znaku, při přijetí každého znaku, při splnění speciálních podmínek.
Priorita událostí pro generování přerušení: příjem znaku/prvního znaku kanálem A, vyslání všech znaků kanálem A, výskyt speciální podmínky vzniku přerušení na kanále A, příjem znaku/prvního znaku kanálem B, vyslání všech znaků kanálem B, výskyt speciální podmínky vzniku přerušení na kanále B.
Vektor přerušení je možné nastavit a číst pomocí registrů WR2 a RR2 pouze v řídicích registrech kanálu B.
Poznámky
Reference
Literatura
Externí odkazy
Zilog Z80 CPU Peripherals user manual na z80.info
Kategorie:Z80 Kategorie:Vstupně/výstupní obvody