1 Mb-os RAM bővítő kártya
Gép-Eszet
A fönti cím felfogható szórejtvénynek is, meg akármi másnak is, mindenesetre a látszat ellenére van értelme: eme kis remekem az ENTERPRISE eszéről, azaz RAM-memóriájáról fog szólani.
Hosszú fejlesztési periódus végére tettem pontot nem is oly rég: elkészült a sok hónappal ezelőtt beharangozott 1millió bájtos RAM-bővítő kártya. Tulajdonképpen egy évvel ezelőtt is elkészülhetett volna, mivel már akkor is csak egy forrasztásnyira állt a sikertől, csak akkor még nem tudtam, hova kell az az egy forrasztás. Az időmet meg a munkahelyemen való dolgozással, némi alvással és egyéb hívságos dolgokkal töltöttem (meg kifejlesztettem közben az egérillesztőt, a gép dobozába építhető billentyűzetet, meg az elemmel védett CMOS RAM-kártyát)...
A kártya egyébként egy technikai újdonsággal szolgál: ebben használtam másodszor ún. GAL-áramkört. (Először az elemes SRAM / EPROM-illesztő kártyában fordult elő ilyen, de az arról szóló cikket csak a következő számba teszi be a Főszerkesztő Úr.) A GAL elnevezés a General Array Logic, azaz az Általános Logikai Tömb rövidítése, magyarul tehát ÁLT-rak lehet hívni. Nevének megfelelően sok mindenre alkalmas, többek között címdekódolásra is, én is erre használom.
Ilyen célra eddig a 74S188-as PROM (Programozható Csak Olvasható Memória) áramköri alkalmaztam (meg mások is: lásd a microTEAM-féle memóriabővítős lemezvezérlő kártyát), ami szép is, jó is, csak sajnos kicsi: öt bemenete és nyolc kimenete van, vagy másképpen fogalmazva öt címlába, és nyolc adatlába, azaz 32 bájt a kapacitása. Programozása egyszerű: meg kell adni az összes (32) bemenő kombinációra, hogy milyen bájt jelenjen meg a kimeneten, pontosan úgy, mint egy memóriánál (merthogy az is). Tegyük fel, hogy egy áramkörben 13 bemenő lábra és öt kimenő lábra van szükség, ilyen pl. egy 1 MB-os RAM-bővítő. Semmi gond, alkalmazzunk nagyobb memóriát! A 13 bemenet 2^13=8192 bájtot, azaz 8 Kbájtot jelent. Ilyen memória a 2764-es típus, ennek ugyan nyolc kimenete van, de sebaj, három fölösleg még mindig jobb mint egy hiány. Ezzel a megoldással csupán három baj van:
Figyelmes olvasóim bizonyára már kitalálták, miért jó a GAL: kicsi és olcsó, egyszerű a programozása, és gyors. Nézzük sorban az előnyöket!
A GAL áramkörök a PAL-okból (Programmable Array Logic) fejlődtek ki. Azoknál
jóval bonyolultabb, de alapvetően hasonló a felépítésük, működési elvük vázolásához
ezért kiindulásként megteszi egy egyszerűbb PAL ismertetése.
Az áramkör bemeneteire inverterek is csatlakoznak, így minden bemeneti jel
és a negáltja is megjelenik. Ezeket a jeleket azután programozott módon ("biztosítékok"
kiolvasztásával) VAGY-áramkörökre, azok kimeneteit és/vagy invertált kimeneteit
pedig ÉS-kapukra vezetjük. Az áramkör kimeneteit ezen ÉS-kapuk invertált vagy
nem invertált kimenetei adják. A kettes számrendszer logikája szerint NEM
és VAGY, illetve NEM és ÉS műveletekkel bármilyen logikai függvény leírható,
így fentebb vázolt hálózatunkkal a kimenetekhez a bemenetek bármilyen logikai
kapcsolatát hozzárendelhetjük. A valódi áramköröknél persze korlátozott a
logikai összefüggések száma, egyszerűen a "biztosítékok" korlátozott
száma miatt, pl. a GAL16V8 áramkörnél egy kimenet megadásához legfeljebb hét
tagot adhatunk meg a logikai egyenletben. Szerencsére a PAL-tervező szoftverek
tűrhetően optimalizálnak, és látszatra bonyolult, nagy egyenletrendszereket
képesek egészen rövid, egyszerű alakra hozni. Lássunk egy példát logikai egyenletre!
OE = !(!A21 & A20 & !A19 & !A18) \ MREQ
Itt a "!" az invertálást, a "&" az ÉS, a " \
" a VAGY- műveletet jelenti. Az OE jelnek alacsonynak kell lenni, hogy
egy memória-áramkört engedélyezzen. Ha MREQ értéke 1, az egész VAGY kapcsolat
értéke szintén 1 lesz, tehát az OE aktiválásához MREQ-nak 0-nak kell lennie.
Szintén 0-rak kell lennie a másik tagnak is, de mivel a zárójel előtt invertálás
áll, a zárójelen belüli kifejezés értéke 1 kell legyen. Az ÉS-kapcsolat értéke
akkor 1, ha minden tagja 1, tehát A21-nek, A I 9-nek és A 18-rak alacsonynak,
A20nak magasnak kell lennie. Mindezek alapján az 0E jel a 40-tót 4F-ig terjedő
memórialap-tartományban lesz aktív, ez összesen 256 KB-ot jelent.
A GAL-áramkörökben még sok egyéb is van, pl. regiszterek, azonkívül konfigurálhatjuk
az egyes lábakat bemenetnek is, és kimenetnek is, valamint ami a legkitűnőbb
dolog: többször újraprogramozhatók. Maga a GAL-áramkör programozása teljesen
meglepő módon GAL-áramkör-programozó készülékkel történik. Előtte még meg
kell szerkeszteni a fentihez hasonló logikai egyenleteket, leellenőrizni,
hogy mindent figyelembe vettünk-e, majd lefordítani az egyenleteket ún. JEDEC-formátumra,
ilyet eszik a GAL-programozó. Szerencsére ehhez megfelelő számítógépes (értsd:
PC-s) programok állnak rendelkezésre...
Visszakanyarodva a RAM-kártyához, szokásommal ellentétben a kapcsolási rajzot
nem is közlöm, mert nem mond túl sokat. Van a kártyán egy 7805-ös stabilizátor,
egy 74LS245-ös buszmeghajtó, nemi címmultiplexer (2 db 74LS157 és egy 74LS153),
két 74LS74 a frissítéshez, meg a GAL, amelybe bemegy egy csomó jel, meg kijön
belőle egy csomó jel, de hogy miért, meg hogyan, azt a program ismertetése
nélkül nehéz elmagyarázni. A program ismertetését pedig kerülöm, mióta hírét
vettem, hogy másolják a kártyáimat... (Bocs!)
Aki csak RAM-bővítő panelt és dokumentációt kíván rendelni, természetesen
az is megkaphatja a beégetett GAL-t is (+350 Ft-ért).
Enterpress 94/1. - Mészáros Gyula |