Z80 PIO

© Raimond Spekking / CC BY-SA 4.0 (via Wikimedia Commons)
Z80 PIO
Rozložení pinů obvodu Z80 PIO

Z80 PIO (Z80 Parallel Input/Output) je integrovaný obvod z rodiny procesoru Z80. Jedná se obvod poskytující dvě paralelní osmibitové brány (obvykle označované jako brána A a brána B). Díky tomu umožňuje plně využívat možnosti systému přerušení procesoru Z80. Podobný obvod v rodině procesoru Intel je obvod Intel 8255. Obvod je použit v interfacu pro připojení AMX mouse k ZX Spectru.[1] Je také základem českého interfacu Mirek.

Režimy paralelních bran

Brány mohou pracovat v následujících režimech:

  • režim vstupu,
  • režim výstupu,
  • obousměrný režim (v obousměrném režimu může pracovat pouze brána A),
  • bitový režim

V režimu vstupu, jakmile je obvod připraven k příjmu dat, je aktivován signál RDY. Poté obvod čeká na aktivaci signálu /STB. Jakmile je tento aktivován, načte data přítomná na vstupu a přečtení dat potvrdí deaktivací signálu RDY. Podle nastavení obvodu se přijetí dat může aktivovat přerušení.

V režimu výstupu je po zápisu dat na výstup aktivován signál RDY. Po té obvod čeká na potvrzení přečtení dat signálem /STB. Podle nastavení obvodu se po přijetí potvrzení o přečtení dat může aktivovat přerušení.

Obousměrný režim je kombinací vstupního a výstupního režimu. V tomto režimu může pracovat pouze brána A, protože k potvrzování přítomnosti výstupních dat jsou použity signály /STB a RDY brány A (/ASTB a ARDY) a k potvrzování přijetí vstupních dat jsou používány signály /STB a RDY brány B (/BSTB a BRDY). Pokud brána A pracuje v obousměrném režimu, brána B musí pracovat v bitovém režimu.

V bitovém režimu nejsou používány signály /STB a RDY. V tomto režimu je možné nastavit, které bity příslušné brány budou vstupní a které výstupní. Také je možné nastavit podmínku, při jejíž splnění bude aktivováno přerušení.

Konfigurace obvodu

Konfigurace obvodu probíhá pomocí konfigurační brány, každá brána má svojí konfigurační bránu.

Nastavení režimu

Nastavení režimu brány
bit76543210
režim brány  1111

Režim brány může být 00 – výstupní režim, 01 – vstupní režim, 10 – obousměrný režim, 11 – bitový režim. Je-li nastaven bitový režim, je nutné na konfigurační bránu poslat ještě druhý byte, jehož bity určí, který bit brány bude vstupní a který výstupní (0 – výstupní, 1 – vstupní).

Nastavení přerušení

K povolení či zakázání přerušení lze použít zjednodušené nebo úplné nastavení. Zjednodušené nastavení pouze povoluje či zakazuje generování přerušení. Úplným nastavením se navíc nastavuje podmínka generování přerušení v bitovém režimu.

Zjednodušené nastavení přerušení
bit76543210
povolení přerušení   0011
Úplné nastavení přerušení
bit76543210
povolení přerušeníAND/OR1/0maska0111

Generování přerušení může být buď zakázáno (0) nebo povoleno (1). Příznakem AND/OR je nastavováno za v bitovém režimu pro generování přerušení je nutné, aby byly aktivní všechny bity brány (1) nebo zda postačuje aktivita alespoň jednoho bitu brány (0). Příznak 1/0 nastavuje, zda je bit brány aktivní v log. 1 nebo v log. 0. Pokud pro generování přerušení mají být použity pouze některé bity, je nutné nastavit na log. 1 příznak maska. Po té je očekáván ještě jeden byte, jehož bity určí, které bity brány budou generovat přerušení (0 – generuje přerušení, 1 – negeneruje přerušení).

Než je povoleno přerušení, je nutné nastavit vektor přerušení, který bude odesílán procesoru.

Vektor přerušení
bit76543210
vektor přerušení0

Reference

Literatura

Externí odkazy

Média použitá na této stránce

Z80 pio.svg
Autor: Standazx, Licence: CC BY-SA 3.0
Rozložení pinů obvodu Z80 PIO
Basic Measuring Instruments - Math Processor 83002190 - Zilog Z80 PIO Z84C2008PEC-3919.jpg
© Raimond Spekking / CC BY-SA 4.0 (via Wikimedia Commons)
Basic Measuring Instruments - Math Processor 83002190 - Zilog Z80: peripheral part parallel input-output (PIO) Z84C2008PEC