Zvýšení kapacity ROM

Pár poznámek úvodem

1. Celkem 4KB EPROM na základní desce

Využil jsem možnosti na desce PMI80M16 místo dvou pamětí 2708 použít jednu 2716. Jenže takhle mi na plošňáku zbyla neosazená pozice pro druhou EPROM a ten pohled na neosazenou pozici mě deprimoval. Je to přece škoda, mít na PCB volnou pozici pro IO, kam se dá něco dát co bude něco dělat ale nic tam nemám. Krom toho jsem si řekl, že bych v PMI chtěl mít na pevno nějaké další užitečné programy, jako programy pro přesuny v RAM, test RAM a třeba ještě nějaké hry a na to jsou 2KB EPROM prostě málo. Navíc je nevyužitý i celý adresní prostor mezi 0800 a 1C00. A tak jsem si řekl, že do pozice pro druhou EPROM osadím druhou 2716 (přesněji "sovětku" K573RF5, kterých mám zásobu, ale na konkrétním typu samozřejmě nesejde) a budu mít v PMI celkem 4KB EPROM. Logické je přídavnou EPROM adresně navázat na základní, bude tedy ležet v oblasti adres 0800-0FFF.

Druhá pozice pro EPROM je ale určena výhradně pro paměť typu 2708, tak bylo potřeba provést určité úpravy. Pinout pamětí 2708 a 2716 je naštěstí téměř stejný a tak jsou úpravy jednoduché. Stačí změnit zapojení několika pinů. Rozdíly mezi 2708 a 2716 jsou uvedeny v této tabulce:
Číslo pinuVýznam u 2708Význam u 2716
18PGM (v režimu čtení uzemněn)/CE (v režimu čtení lze uzemnit nebo užít jako 2. povolovací vstup)
19Vdd = +12V A10
21Vbb = -5V Vpp (v režimu čtení se připojuje na Vcc)
Pin 20 se ještě jiným způsobem používá při programování, ale to nás teď nezajímá. V režimu čtení má u EPROM obou typů význam povolovacího vstupu /OE. Přejděme tedy k popisu změn v zapojení jednu po druhé:

Za prvé: pin 21 se musí přepojit z -5V na +5V. Udělal jsem to tak, že jsem na soketu (precizním) pro EPROM odštípnul nožku č. 21 tam kde se rozšiřuje a ještě trochu zapiloval. Pak stačí vzít kousek drátu a pod soketem propojit pin 21 s pinem 24, kde je +5V.

Za druhé: Pin č.19 se musí odpojit od +12V a připojit na adresní pin A10. Udělal jsem to obdobně, zkrátil na soketu nožku č. 19 a připojil kus kablíku. Pak jsem vyvrtal malou dírku v PCB, tudy káblík protáhnul a pod PCB propojil na A10. Signál A10 je poblíž k dispozici v mnoha místech, jednak na pinu 1 adresního dekodéru 3205 (nebo jiného, podle toho, který IO tam máte), u PMI80M16 je navíc na pinu 1 jumperu JP12 a pokud je nakonfigurovaný pro použití 2716 na pozici základní EPROM, pak je i na pinu 19 této EPROM. Snad není třeba podotýkat, že spoj nemá být zbytečně dlouhý.

Za třetí: Je nutné vyřešit zapojení povolovacího vstupu /OE na pinu 20. Jedna možnost je přes diody sloučit signály /CS2 a /CS3 a přivést to sem podle tohoto schématu.

Jako diody je vhodné použít Schottkyho, ale např. s 1N4148 to bude fungovat taky. Sofistikovanější možnost, kdy zůstává /OE připojen na /CS1 spočívá v úpravě zapojení adresního dekodéru 3205, popsané níže.

Za čtvrté - to už není nutné ale vhodné to je a je to navíc vhodné provést i u základní EPROM, pokud to je typ 2716 (nebo kompatibilní). Pozornému oku při pohledu na zapojení PMI80 i PMI80M16 totiž neunikne, že pokud by se provedla operace zápisu na adresu, kde leží některá z EPROM, příslušná EPROM zaktivuje výstup, nicméně současně se na datové sběrnici objeví data z CPU přes řadič 8228. Tím vznikne konflikt, který může mít za následek, že se něco "odpálí". Lze to ošetřit jednoduše - pin 18 /CE propojit se signálem /MEMR systémové sběrnice. Nejblíž je /MEMR k dispozici na konektoru systémové sběrnice. Tuto úpravu bohužel nejde provést u EPROM 2708, která má jen jeden povolovací vstup.

Spoje pod přepojovanými piny pochopitelně přelepíme kouskem izolačky a soket zapájíme přiměřeně vysoko nad PCB, aby nedocházelo ke zkratům.

Před zapájením do desky vypadá "drátování" na soketu dle této fotky. Pozor, zapojení vstupu /OE (pin 20) je na této fotce beze změn (nožka se normálně zapájí do PCB na svoje místo) a místo toho jsou změny udělány na zapojení adresního dekodéru 3205, viz dále.

A ještě dvě poznámky:
1) Kdybychom pin č.21 místo na +5V připojili na adresní vodič A11 a upravili zapojení povolovacího vstupu /OE, je možné použít EPROM typu 2732 a přidat si tak 4KB EPROM. Jenže 2732 mám v zásobách poskrovnu a chci je šetřit, tak zůstávám u 2716 resp. K573RF5.
2) U původního PMI-80 se stejným způsobem může změnit i zapojení základní EPROM a lze použít i na této pozici paměť 2716. Signál /OE pro tuto paměť se získá sloučením /CS0 a /CS1 nebo též úpravou zapojení adresního dekodéru 3205.

(realizováno 3.2.2013)

2. Úprava zapojení dekodéru adres

Začnu rozborem situace:
1) Používám EPROMy s kapacitou 2KB, jak je popsáno výše
2) Dekodér adres PMI neužívá signál A13 a tak jsou všechny paměti zrcadleny do prostoru 2000-3FFF. To je zabitých 8KB adresního prostoru a to je škoda. Plánuju přitom připojovat k PMI další věci, například přídavnou RAM.

Tak jsem se rozhodl, že změním zapojení adresního dekoréru 3205 a moje PMI bude zpracovávat všechny adresní bity a adresovat paměti se bude v blocích po 2KB. Toho se dosáhne přepojením adresních vstupů obvodu 3205 na signály A11, A12 a A13 namísto A10, A11 a A12. RAM má ale jen 1KB, tak je zřejmé, že v odpovídajícím adresním bloku bude i její zrcadlo. To není nevýhoda - zrcadlo RAM přeci v paměti bylo už před úpravou. Popisovanou úpravou se alespoň se přesune do oblasti, kde nepřekáží a zmizí zrcadla EPROM. Od adresy 2000 pak bude k dispozici volný adresní prostor, kde může být třeba přídavná RAM plynule navazující na základní RAM. Dostáváme tedy takovouto adresní tabulku
0000-07FFEPROM0 (základní)
0800-0FFFEPROM1 (rozšiřující)
1000-17FFrezerva pro třetí EPROM
1800-1BFFzrcadlo základní RAM
1C00-1FFFzákladní RAM
2000-FFFFvolný adresní prostor pro další výtvory, např. přídavnou RAM

Povolovací vstupy /OE pamětí EPROM zůstanou zapojeny na /CS0 u základní EPROM respektive na /CS1 u rozšiřující EPROM. U PMI-80 M16 tedy jumper JP11 musí být v poloze 2-3! Trochu konfuze teď nastává u významu signálu /CS7. V souladu s původním zapojením PMI takto budu dále nazývat ten signál, který aktivuje základní RAM - byť by bylo logičtější ho teď přejmenovat na /CS3 neboť odpovídá kombinaci stavů adres A13 A12 A11 bitově 011. Podstatné je to, že signál pro aktivaci RAM (ať ho pojmenujeme jakkoliv), je nutné přepojit na pin 12 obvodu 3205. Dostáváme tedy toto zapojení.

Signály které jsou zapojeny jinam než v originálním zapojení PMI-80 nebo PMI-80 M16 jsou označeny červeně. V hranatých závorkách je uvedeno číslo pinu obvodu 3205, kam byly signály zapojeny původně.

Aby to celé bylo flexibilní a umožňovalo to případné další změny, udělal jsem to takto: Do kousku univerzálního PCB jsem připájel jeden obvod 3205 a vedle dvojřadý DIP hřebínek "PRSA-16", zakoupený v GME. Propojení jsem udělal dráty a v budoucnu to možní snadno zapojit i další výstupy 3205 tam, kam budu potřebovat. Signál A13 beru zatím z rozšiřujícího konektoru systémové sběrnice, kde je zasunut pin konektoru FRB, ale to ještě předělám. Celý přípravek tedy vypadá takto

Celek se zasune do patice pro 3205 místo tohoto obvodu. A v PMI to pak vypadá takto


(realizováno 3.2.2013)

Zpět