1. A programozható logikai eszközök főbb csoportjai 1.1 Logikai hálózatok gyakorlati megvalósítása A logikai hálózatokat a gyakorlatban háromféle alkatrésztípusból készíthetjük el. Ezek: •
Diszkrét logikai áramkörök. Ezek a chipek alacsony integráltságúak, elemi flipflopokat és kapukat tartalmaznak. Ennek a megoldásnak hátránya, hogy nehéz takarékosan tervezni az áramköri lapon, a chipek közti késleltetési idők miatt a hálózat lassabb. Fogyasztási szempontból is hátrányosabb ez a megoldás a többihez képest.
•
Maszkprogramozott eszközök (MPD - Mask Programmed Device). Ezek alkalmazásspecifikus (ASIC - Application Specific Intergrated Circuit) áramkörök, adott feladatra tervezve. Mivel esetükben a logikai hálózat egy IC-n belül foglal helyet, ezek gyorsabbak, kevesebb helyet foglalnak az áramköri lapon, és kisebb a fogyasztásuk is. Hátrányuk, hogy éppen specializáltságuk miatt csak nagy darabszám (5000-100000) esetén gazdaságos használatuk a gyártási költségek miatt.
•
Felhasználó által programozható logikai eszközök (FPD - Field Programmable Device). Ezek a maszkprogramozott IC-khez hasonlóan ASIC eszközök, előnyük viszont, hogy a felhasználó által programozhatóak. Előnyük a rugalmasság valamint az alacsony ár már kis darabszám felhasználása esetén is. Sebességük szintén jó, bár valamelyest elmaradhatnak a MPD-ktől, hiszen a programozhatóság miatt "felesleges" alkatrészek is megtalálhatóak bennük. Nagy előny viszont, hogy gyorsabban előállítható velük a kívánt logikai hálózat, mint az MPD-k esetében, hiszen programozhatóságuk miatt nem kell a speciális MPD IC-k legyártására várni.
Megjegyezendő, hogy az FPD-knek általában létezik maszkprogramozott változata, így az FPD-kkel végezhető a fejlesztés, a maszkprogramozott típussal pedig a gyártás. A továbbiakban, ha programozható logikai eszközökről (PLD - Programmable Logic Device) esik szó, úgy a felhasználó által programozható eszközöket kell érteni alatta.
1.2 A programozható logikai eszközök főbb csoportjai. A programozható logikai eszközök csoportosítása nem könnyű feladat. Viszonylag új technológiának számítanak, amelyből számtalan típus jelent meg rövid idő alatt. Már a rendelkezésre álló architektúrák (architektúra alatt értve az eszközök azon
tulajdonságait, amelyek a logikai felépítést - ki-és bemenetek száma, programozható tömbök mérete stb.) száma is százas nagyságrendű, ha pedig a különféle technológiai megoldásokat (áramkör-technikai megoldások, sebesség, újraírhatóság, tokozás stb.) is figyelembe véve szeretnénk csoportosítani, akkor a választék már több ezres. Megjegyezendő, hogy nem csak PLD-k segítségével készíthetünk logikai hálózatokat, hanem memória áramkörökkel (PROM, EPROM stb.) is. Ilyenkor a memóriában eltároljuk a megvalósítandó hálózat igazságtáblázatát úgy, hogy az egyes bemeneti kombinációknak megfelelő címeken hivatkozva a memória kimenetén a logikai hálózat adott bemenetre adott válaszát kapjuk. A memória áramkörök használatának több hátránya van: általában nem túl hely- és eszköztakarékos megoldás, különösen sokváltozós függvények esetén, valamint sebességben is elmaradnak a PLD-ktől. A memóriáktól eltérően a PLD-k nem az igazságtáblázatot, hanem magát a logikai egyenletet tárolják programozható mátrixaikban, mivel megfelelően nagy ÉS illetve VAGY
mátrixokkal
(léteznek
NEMVAGY/NEMVAGY
PLD-k,
mátrixokat
amelyek
használnak)
NEMÉS/NEMÉS bármely
logikai
esetleg függvény
megvalósítható. A programozható logikai áramkörök ábrázolásmódjáról érdemes megemlíteni, hogy helytakarékosság miatt egyszerűsítve jelölik a logikai kapukat:
1.1. Ábra A logikai függvény egyszerűsített ábrázolása. Kialakításuk alapján a PLD-ket a következő csoportokba szokás sorolni: 1.2.1 Egyszerű programozható logikai eszközök (SPLD - Simple Programmable Logic Device) Ezek az eszközök általában kétszintű logikai hálózatot tartalmaznak, kevesebb, mint 1000 kapuval. Az SPLD-k (és a programozható logikák) első képviselője a PLA (Programmable Logical Array - Programozható Logikai Tömb) volt, sematikus rajza az 1.2. Ábrán található: 1
Mint látható, az ÉS illetve a VAGY
kapuk
egy-egy
mátrixon
keresztül
kapcsolhatóak össze. Léteznek PLA-k, melyek a kimeneteknél beépített flipflopokat tartalmaznak, ezáltal felhasználhatóak
sorrendi
hálózatok megvalósításához is. A PLA eszközök fő hátránya, hogy a két programozható mátrix
beépítése
megdrágítja másrészt
egyrészt
a
gyártást,
az
eszköz
1.2. Ábra. PLA eszköz vázlata
sebességét is csökkenti, hiszen a jeleknek
két
mátrixon
kell
végighaladnia. Ezen
problémák
kiküszöbölésére születtek meg a PAL-ok (Programmable Array Logic
-
Programozható
Tömblogikák), csupán
melyekben
az
ÉS
mátrix
programozható, a VAGY mátrix nem, olcsóbb,
emiatt
előállításuk
programozásukhoz
egyszerűbb hardver szükséges, és sebességük nagyobb. Ezen tulajdonságaiknak köszönhetően,
bár
1.3. Ábra. PAL eszköz vázlata kevésbé
rugalmasan használhatók, jóval elterjedtebbé váltak a PLA logikáknál. A PAL-ok sematikus rajza az 1.3. ábrán látható. 2
Gyakoriak az olyan típusok, melyeknél a kimeneteken beépített regiszterek találhatóak, melyek kimenete visszacsatolható az ÉS mátrixba. Ez a tulajdonság javítja az eszköz használhatóságát sorrendi hálózatok megvalósításánál. 1.2.2 Komplex programozható logikai eszközök (CPLD - Complex Programmable Logic Device) Ezek az eszközök gyakorlatilag több, egy tokba integrált, SPLD-nek felelnek meg. Ez a fejlesztési irány meglehetősen új, és számos különféle, nehezen csoportosítható architektúra létezik. A Lattice által gyártott ispLSI eszközöknél például az SPLD-nek megfelelő elemeket általános logikai tömbnek (GLB - Generic Logic Block) nevezik, melyek megatömböknek nevezett csoportokat alkotnak. Ezen megatömbök működését a Globális Vezérlő Áramkör (GRP - Global Routing Pool) hangolja össze. 1.2.3 Felhasználó által programozható kapu mátrix (FPGA - Field Programmable Gate Array) Az FPGA-k az eddig említett eszközöknél is rugalmasabban programozhatóak. Itt ugyanis (pl. a Xilinx cég FPGA-inál) úgynevezett Programozható Logikai Blokkok (CLB - Configurable Logic Block) alkotnak mátrixot, amelyen belül teljesen szabadon köthetőek össze egymással programozható kapcsolók segítségével. A CLB-k elrendezése típustól függően többféle is lehet, a hierarchikus FPGA-knál például az előbb említett megatömbökhöz hasonlóan SCLB-kbe (Super Configurable Logic Block) csoportosítják a logikai tömböket. 1.2.4 PLD-k csoportosítása programozhatóság szerint Programozhatóság alapján a PLD-k lehetnek: •
Egyszer programozhatóak, illetve
•
Újraprogramozhatóak
Az egyszer programozható eszközökben általában a mátrix találkozási pontjainál elhelyezett elemi biztosítékok kiégetésével történik az írás. Az újraprogramozható eszközök ezzel szemben törölhetőek elektromos úton, vagy UV fénnyel. Megkülönböztetünk továbbá felejtő (volatile) és nem felejtő (non-volatile) típusokat; előbbieket újra kell programozni, ha a tápfeszültséget lekapcsoltuk. Ilyenek például a Xilinx FPGA-k, melyeknél a program SRAM-ban tárolódik.
3
A programozáshoz általában az üzeminél magasabb feszültség szükséges, ezért a legtöbb PLD-t kizárólag az áramkörből kivéve, speciális programozó hardverrel kell felprogramozni. A Lattice által gyártott PAL/GAL eszközök EEPROM CMOS technikával (E²CMOS) készülnek, amely elektromosan törölhető/újraprogramozható, valamint kikapcsolt állapotban is megőrzi a programját.
1.3 A PLD-k programozása A programozáshoz szükség van egy JEDEC formátumú biztosíték térképre, amely tartalmazza többek között: •
Az IC lábainak számát
•
Az IC biztosítékainak (mátrixpontjainak) számát
•
Mely mátrixpont milyen értéket kapjon az írás során.
•
Az eszköz fizikai teszteléshez szükséges tesztvektorokat.
A JEDEC fájl akár elkészíthető "kézzel" is, ha pontosan ismerjük az IC működését, felépítését valamint az egyes biztosítékok címét. Ez a módszer azonban nem javasolt, mivel rendkívül lassú, sok a hibalehetőség, és programozás előtti tesztelésre sincs lehetőség. Tanácsosabb inkább valamilyen fejlesztőprogram használata. A fejlesztőprogramok többféle módszert tesznek lehetővé a tervező számára a fejlesztéshez. Az egyik ilyen valamely hardver leíró nyelv (HDL - hardware description language) használata. Ezek közül néhány: •
ABEL (Advanced Boolean Expression Language)
•
PALASM (PAL assembler)
•
VHDL (Very high speed integrated circuit Hardware Design Language)
•
Verilog HDL
A hardver leíró nyelvek egy része alkalmas a teljesen eszközfüggetlen fejlesztésre, tehát nincs szükség gépi kód jellegű programozásra, hanem egy magas szintű (C-hez vagy Pascalhoz hasonló) nyelvvel dolgozhatunk, hagyományos, magas szintű programozási módszereket felhasználva.
4
A leírónyelvek másik előnye, hogy lehetővé teszik bonyolultabb feladatok különálló, könnyebben kezelhető alrészekre bontását, ezzel is megkönnyítve a fejlesztést. Harmadrészt pedig, a hardver leíró nyelvek lehetővé teszik, hogy a fejlesztőrendszeren keresztül, a megadott tesztvektorok segítségével szimulálhassuk az eszköz működését még a leprogramozás előtt. Más tervezőrendszerek lehetővé teszik, hogy grafikus szimbólumokból (kapuk, flipflopok, stb.) sematikus ábrát készítve tervezzük meg a logikai hálózatot. Ilyen tervezőprogram például az OrCad is. Ez a módszer főleg az FPGA-k programozásánál elterjedt. Egyes tervezőrendszerek lehetővé teszik, hogy adott feladatot több forrással, például különálló HDL programokkal, sematikus ábrákkal, vagy ezek kombinációjával tervezzünk meg. Ezeket a program lefordítása előtt a fejlesztőrendszernek egyesítenie (linkelnie) kell egymással. A fordítás során a megadott feladat leírását a fordító olyan leírássá alakítsa át, amely a célhardver szerkezetéhez legjobban illeszkedik. Ilyenkor a fordító valamennyi operátort (legyenek azok logikai, aritmetikai, relációs, stb. operátorok) NEM, ÉS, VAGY illetve KIZÁRÓ VAGY operátorral helyettesít. A forrás szintaktikai ellenőrzésére is ekkor kerül sor. A fordítás befejezése után az előállított logikai egyenletet általában optimalizálni kell. A Quine-McCluskey féle optimalizálási módszer ismert és egzakt eljárás, de sajnos meglehetősen lassú, leginkább az SPLD-k optimalizásánál produkál elfogadható időt. Sokváltozós egyenletek esetén heurisztikus algoritmusokat érdemes használni. Ilyenek például a PRESTO illetve az ESPRESSO algoritmusok. A fejlesztőrendszerek általában többféle optimalizálási módszer közül engednek választani. A fordítás és optimalizálás után kerülhet sor a logikai rendszer szimulációjára. A szimulációhoz a tervezőnek tesztvektorok formájában meg kell adnia, hogy a bemenő jelek különböző lehetséges kombinációihoz (bemeneti állapothoz) a feladat célkitűzései alapján milyen kimenő jelek tartoznak, ezeket feltételezett kimenőjeleknek hívjuk. A tervezőprogram
a
megtervezett
logikai
rendszert
használva
meghatározza
a
tesztvektorokban meghatározott bemenőjel kombinációkhoz tartozó kimenő jeleket. Ezeket számított kimenőjeleknek nevezzük. Ha a feltételezett és számított kimenőjelek nem egyeznek meg, a tervezett rendszer nem felel meg a specifikációknak, és a hibát ki kell javítanunk. A feltételezett és számított kimenőjelek közti különbségek általában 5
segítséget nyújtanak a hiba megtalálásában. A hardver leíró nyelvek nagy előnye, hogy tartalmazzák magukban a tesztelés lehetőségét. Ha a szimuláció során nem találtunk hibát, sor kerülhet a JEDEC fájl létrehozására az optimalizált logikai egyenletből, az adott PLD típusra. A JEDEC fájl által tartalmazott, fizikai teszteléshez szükséges tesztvektorok lehetőséget adnak arra, hogy a programozóba helyezet eszközt a valóságban is tesztelhessük, és a teszteredményeket összehasonlítsuk a szimulált kimenőjelekkel.
Megjegyezendő, hogy néhány fejlesztőprogram (ilyen az ispDesignEXPERT is) lehetőséget nyújt eszközfüggetlen tervezésre is. Ebben az esetben az optimalizálás után még két további lépés következik: az eszközválasztás és a leképezés. Az eszközválasztás során a program megvizsgálja, hogy a megtervezett logikai rendszer fizikai megvalósítására milyen programozható logikák alkalmasak, és ezek közül melyek felelnek meg a felhasználó által meghatározott egyéb követelményeknek (sebesség, fogyasztás, tokozás, ár stb.). A vizsgált kritériumok lehetnek többek között: •
A feladatban megfogalmazott, valamint az eszközben rendelkezésre álló be- és kimeneteinek száma.
•
A feladat szorzattagjainak száma összehasonlítva az eszköz összes szorzattagjainak számával.
•
A feladat által igényelt kimeneti típus (kombinációs vagy regiszteres) rendelkezésre áll-e az eszközben.
•
Eleget tesz-e az eszköz a feladat esetleges speciális igényeinek: nyitott kollektoros kimenet, 3,3/5V-os kimenetek, bemeneti felhúzó ellenállások, stb.
•
Rendelkezésre állnak-e az igényelt vezérlőjelek az eszközben: szinkron és aszinkron órajel, regiszter beíró és törlőbemenetek, kimenet engedélyező/tiltó jelek, stb.
A leképezés során a programnak el kell helyeznie a kiválasztott eszközben a megtervezett áramkört. Ilyenkor a megvalósítandó egyenleteket hozzárendeli az eszköz kivezetéseihez és belső csomópontjaihoz. A leképezés során a program kihasználja az egyes SPLD eszközök, például a GAL22V10-nek azt a tulajdonságát, hogy egyes kimenethez tartozó mátrixkivezetések száma különböző, emiatt lehetőség van a
6
takarékos helykihasználásra. Amennyiben az elhelyezés sikeres volt, sor kerülhet a JEDEC fájl létrehozására. Megjegyezendő, hogy mind az eszközválasztás, mind a leképezés tartogat magában hibalehetőségeket, és előfordulhat, hogy az alkalmasnak nyilvánított eszközről kiderül, hogy mégsem képezhető le rá az adott logikai hálózat. Ennek oka lehet az is, ha előre hozzárendelt kivezetéseket tartalmaz a terv, ilyenkor ugyanis gyakran előfordul, hogy a megkötések miatt a rendszer nem képes az optimális helykihasználásra.
7
2. A GAL eszközök A GAL eszközöket (GAL - Generic Array Logic; Általános Tömb Logika) a Lattice Semiconductor fejlesztette ki 1985-ben. Felépítésben a PAL-ok továbbfejlesztésének tekinthetőek, ugyanis a kimeneteken programozható kimeneti áramköröket, más néven kimeneti logikai makrocellákat (OLMC) helyeztek el, amelynek a VAGY kapuk is részei. Ezek segítségével egyrészt emulálhatóak az egyes PAL típusok különféle kimeneti regiszterei, másrészt az eszköz jóval sokoldalúbban programozhatóvá válik. Ennek eredményeképpen számos PAL típus kiválthatóvá válik az azonos lábszámú GAL IC-k felhasználásával (a gyártó szerint 5 standard GAL típus; a 16V8, 20V8, 22V10, 20RA10 és a 20XV10 képes helyettesíteni a kereskedelemben kapható bipoláris PAL-ok 98%-át), a hozzájuk készült JEDEC biztosíték térkép ugyanis átalakítható a GAL eszköz formátumára. Bizonyos programozó hardverek automatikusan képesek arra, hogy a meglevő PAL JEDEC fájlból közvetlenül felprogramozzák az adott eszközzel felülről kompatíbilis GAL-t. A GAL eszközöket főleg TTL logikai áramkörök helyett használják, amelyekből akár 510 darabot is kiválthat egyszerre. Tipikus felhasználási területei lehetnek például a busz interfész áramkörök, memóriavezérlők, számlálók stb. A továbbiakban ugyan említem az egyes típusok makrocelláinak kialakítását, üzemmódjait, vezérlő biteket, ezek azonban csak az eszközök működési elvének megismeréséhez
szükségesek;
ha
az
ispDesignEXPERT
fejlesztőprogrammal
dolgozunk, akkor ezeknek a beállítását a program önállóan elvégzi. Megjegyezendő, hogy bár a GAL eszközöket a Lattice fejlesztette ki, néhány más cég, például a National Semiconductor vagy az Intel is készít GAL-okat illetve azokkal kompatíbilis logikákat. A továbbiakban kizárólag a Lattice típusairól esik szó.
2.1 Típusok Alapvetően két fő GAL kategória létezik: az egyik a 16V8 és 20V8, a másik a 22V10. A fő különbség köztük a kimeneti makrocellák kezelésében van: 2.1.1 GAL16V8/20V8 A két típus gyakorlatilag csak a lábak számában tér el egymástól. (A GAL-ok típusjelében az első szám a bemenetek, a második a kimenetek maximális számát jelzi.)
8
A 2.1 Ábrán látható a 16V8 típus blokkdiagramja. A nyolc makrocella kimenetként
és
konfigurálható, mátrixból
bemenetként hiszen
érkező
8-8
az
is ÉS
bemenet
mellett minden makrocellából 1-1 visszacsatolás
indul
vissza
a
mátrixba. A
makrocellák
háromféle
konfigurációs módba kapcsolhatóak: egyszerű, komplex és regiszteres. Ezek a konfigurációs módok a SYN és AC0 bitek segítségével állíthatóak be. Minden makrocellához tartozik még egy-egy AC1 bit, amellyel
2.1. Ábra. GAL18V6
beállítható, hogy az adott cella ki-
vagy bemenet-e, illetve egy XOR bit, amely azt dönti el, hogy az adott kimenet invertáló vagy nem invertáló típusú. Az AC0, AC1 és SYN bitek összesen öt multiplexert vezérelnek, amelyek a makrocellák módját vezérlik. •
Regiszteres mód Regiszteres módban a makrocellák programozhatók regiszteres,
dedikált,
vagy
kombinációs
kimenetnek. Regiszteres
konfigurációban
a
makrocellák közös órajelet (16V8-as típusnál
ez
csatlakozik),
2.2. Ábra Regiszteres konfiguráció
engedélyező kapnak.
9
az és jelet
1-es
lábra kimenet
(11-es
láb)
Kombinációs I/O konfigurációban az ÉS mátrixból csak 7 bemenet érkezik
a
makrocellába,
a
nyolcadikat a PTMUX (product term)
multiplexer
a
TSMUX
(tristate) multiplexerre kapcsolja, 2.3. Ábra. Kombinációs I/O konfiguráció
amely a kimeneti buffer tristate vezérlőjelét kapcsolja.
Az említetteken kívül még három másik multiplexer is található minden makrocellában: OMUX (output) multiplexer - ez kapcsolja a kimenetet regiszteres vagy kombinációs módba AC0 és AC1 függvényében (jelen esetben AC0=1, AC1 pedig 0 kombinációs, 1 regiszteres konfigurációban). FMUX (feedback) multiplexer - a visszacsatolást változtatja az adott kimenetről, illetve kapcsolja bemenetté a makrocellát. Az utolsó multiplexer a TSMUX egyik bemenetét vezérli. •
Komplex mód Komplex módban csak 6 makrocella állítható ki- és bemenet módba, a két szélső (12 és 19-es lábak, 20V8-on a 15
és
22-es
lábak)
cella
visszacsatolását az 1-es és 11-es (20V8-on az 1-es és 13-as) lábak 2.4. Ábra. Kombinációs I/O konfiguráció
használják, amelyek ebben a módban bemenetté válnak. Emiatt a két szélső makrocella
nem
használható
bemenetként. Mint látható, az ÉS mátrixból csak 7 bemenet érkezik a makrocellába, a nyolcadik a kimenet engedélyezését 2.5. Ábra. Kombinációs kimenet
végzi.
konfiguráció.
10
•
Egyszerű mód Egyszerű
módban
a
makrocellák
dedikált visszacsatolásos kombinációs kimenetnek,
dedikált
visszacsatolás
nélküli kombinációs kimenetnek, vagy dedikált
bemenetnek
állíthatók
be.
Mivel a visszacsatolások a szomszédos
2.6 Ábra. Kombinációs kimenet visszacsatolással
bemeneten keresztül haladnak, a két legbelső láb (15,16; 20V8-ason 18,19es lábak) csak kimenetek lehetnek.
2.7. Ábra. Kombinációs kimenet visszacsatolás nélkül
2.8. Ábra. Dedikált bemenet
2.1.2. GAL22V10 A 22V10-es típus több szempontból eltér a 18V6-tól. Ahogy a nevéből is látszik, több be- és kimenete van. Az eszköz blokkdiagramja a 7. ábrán látható. Az első lényeges különbség, hogy a makrocellákhoz tartozó ÉS mátrixbemenetek
száma
nem
azonos,
nyolctól tizenhatig terjedhet. Ennek oka az, hogy ha a megvalósítandó logikai függvény különböző számú szorzattagból áll, a különböző számú
2.9. Ábra GAL22V10
11
bemenetek
segítségével
ez
takarékosabban programozható le. A másik fő különbség az, hogy a makrocelláknak csak két működési módja van: regiszteres és kombinációs I/O mód, amelyeket az S1 bittel állíthatunk be. Az S0 bit segítségével állíthatjuk be, hogy az adott makrocella kimenete invertált legyen-e vagy nem. Az S1 és S0 bitek cellánként két multiplexer segítségével állítják be a kívánt üzemmódot. A
sematikus
ábrán
feltüntetetthez
2.10. Ábra. Makrocellák regiszteres
képest az ÉS mátrixból további három
módban
bemenet csatlakozhat minden cellához. Ebből egy a kimenet engedélyezésére szolgál, további kettőnek, amely az összes cellára vonatkozik, regiszteres módban van szerepe. Az egyik bemenet a szinkron beírójel (SP- Synchronous Preset), amely az összes makrocella regisztert logikai 1-es helyzetbe állítja a következő felfutó órajelnél, a másik az aszinkron törlőjel (AR- Asynchronous Reset), amely az összes makrocella regisztert azonnal logikai 0 helyzetbe állítja. Ezek a beállítások függetlenek attól, hogy a regiszterek invertáltak-e vagy sem. Regiszteres
módban
az
1-es
láb
használható órajelbemenetként. Kombinációs módban a makrocellák 2.10. Ábra Makrocellák kombinációs módban
12
vezérlését
kizárólag
az
ÉS
kimenetei végzik. (2.10. Ábra)
mátrix
2.1.3 Tipusváltozatok A 18V6 illetve 22V10-nek léteznek egyéb szolgáltatásokat nyújtó változataik. Ezek röviden a következők: •
Alacsony feszültségű (low-voltage) eszközök: 16LV8, 20LV8, 22LV10. Ezek 3,3Vról üzemelő GAL-ok.
•
Zero-power
eszközök:
16V8Z/ZD,
22LV10Z/ZD
stb.
Ezek
képesek
energiatakarékos üzemmódra. A Z változatok automatikusan áttérnek erre az üzemmódra, ha meghatározott ideig nincs aktivitás a bemeneteiken, a ZD változatoknál az egyik (4-es) láb használható üzemmód-váltásra. Emiatt természetesen ez a láb nem használható bemenetként. •
VP eszközök: 16VP8, 20VP8. Ezeknél az eszközöknél a bemeneteken, illetve a makrocellák ÉS mátrixba való visszacsatolásán Schmitt-triggereket helyeztek el, emiatt különösen alkalmasak például buszcímzési, DMA vezérlési, vagy memóriacímzési feladatokra.
2.1.4 GAL18V10 Ez a típus átmenet a 18V6 és a 22V10 között. Makrocelláinak programozhatóságában a 22V10-re hasonlít, de lábkompatíbilis a 18V6 típussal. Ennek az eszköznek a fő feladata, hogy kiváltsa azokat a bonyolultabb PAL-okat, amelyeket a 18V6-os nem tud helyettesíteni, illetve, hogy a szokásosnál jóval rugalmasabban programozható 20 lábú PLD-ként szolgáljon. 2.1.5 GAL26CV12/GAL26CLV12 Ezek a típusok gyakorlatilag a 22V10 típus 28 lábú változatai. 2.1.5 GAL20RA10 Az eddigi típusoktól eltérően a 20RA10 aszinkron működésű, azaz minden makrocella más-más órajellel programozható. A 10 makrocella egy-egy D flip-flopot tartalmaz, amelyeket a makrocellába érkező nyolc ÉS-mátrix bemenet közül négy vezérel; két bemenet viselkedik órajeltől és D-bemenettől független aszinkron törlő (AR) és beírójelként (AP). Egy bemenet használható órajel-forrásként. Mivel ez is az ÉSmátrixból jön, órajelet az IC bármelyik bemeneti lábán vagy bármelyik flip-flop visszacsatolt kimenetén keresztül hozhatunk. A negyedik vezérlő ÉS-mátrix bemenet ÉS-kapcsolatban van az általános kimenet engedélyező jellel. 13
2.11. Ábra 20RA10 OMLC
A 20RA10 makrocelláinak két működési módja van: regiszteres illetve kombinációs mód. Ez utóbbit AR és AP 1-esre állításával kapjuk, tehát az üzemmódok akár üzem közben is változtathatóak.
2.13. Ábra. Makrocella kombinációs módban
2.12. Ábra Makrocella regiszteres módban
2.1.6 GAL20XV10 A GAL20XV10 makrocelláinak VAGY-kapui nem közvetlenül a kimenetre vagy D flip-flop bemenetére kapcsolódnak, hanem egy kizáró-VAGY kapura, és ennek kimenete csatlakozik a D flip-flopra vagy közvetlenül a kimenetre. A kizáró-VAGY kapus kimenetek különösen lineáris logikai áramkörök megvalósításában előnyösek, például hibafelismerő- vagy javító áramköröknél, de gyors számlálók vagy dekódolók készítésénél is. 2.1.6 GAL6001, GAL6002 A GAL6001/6002 feltehetőleg inkább üzletpolitikai okokból kapta a nevét, hiszen felépítésében lényegesen különbözik a többi GAL-tól, emiatt nem részletezem a működését. A legnyilvánvalóbb különbség a programozható VAGY mátrix megjelenése
14
az áramkörben, valamint a nagy elemsűrűség; az eszköz gyakorlatilag átmenet a PLA és a CPLD áramkörök között. Ahogy az ábrából is látszik, négyféle logikai makrocellát tartalmaz: Kimeneti (OLMC), ki- és bemeneti (IOLMC), bemeneti (ILMC), valamint a két programozható mátrix
közti
makrocellákat (BLMC). A
beépített
makrocellák
2.14. Ábra GAL 6001
nagy száma, valamint a programozható VAGY mátrix léte nagy rugalmasságot ad az eszköznek, egyes esetekben két 22V10-est is kiválthat. Mivel minden makrocella egyegy D flip-flopot is tartalmaz, különösen a regisztert igénylő alkalmazásokban előnyös az alkalmazása.
2.2 ispGAL-ok A 22V10-es típusnak létezik egy un. isp változata is. Az isp az In-System Programmable (= a rendszerben programozható) kifejezést takarja, azaz ezen eszközök programozásához nincs szükség külön programozó hardverre, a PLD az áramköri lapon bármikor újraprogramozható. Ennek a tulajdonságnak számos előnye van, a teljesség igénye nélkül: a fejlesztés gyorsul, hiszen a PLD-t nem kell eltávolítani az áramkörből a programozáshoz; lehetőség van többfunkciós, helyszínen átkonfigurálható áramkörök készítésére; a programozható logikába megfelelő tesztprogramot letöltve az áramkör gyorsan tesztelhetővé válik, csökkentve a karbantartási időt.
15
Az ispGAL22V10 nem lábkompatíbilis a hagyományos 22V10 típussal, a programozhatósághoz ugyanis további négy láb található az eszközön. Ezek a Serial Data In (soros adatbemenet), Serial Data Out (soros adatkimenet), Serial Clock és Mode lábak. Lehetőség van arra, hogy adott áramkörben több - akár 100 darab - isp eszközt (amelyek lehetnek teljesen különböző típusúak - ispLSI, ispGDS, ispGAL, MATCH - is) kössünk láncba a Serial Data In/Out lábakon keresztül, és ezeket egy műveletben programozzuk át.
Egy
ilyen
kapcsolásra példa: A programozásra az ispDesignEXPERT programcsomag ispVM
programja
használható. Az ezt futtató
PC
párhuzamos csatlakozik áramkörhöz.
a porton az
2.15. Ábra Több isp eszköz kaszkád kapcsolása a programozáshoz
Sajnos
ezeket a lehetőségeket nem állt módomban kipróbálni a megfelelő eszközök (isp PLD, letöltőkábel) hiánya miatt. Az ispVM-nek letölthető egy beágyazott rendszerekbe szánt, C nyelvű forrása is, amely lehetővé teszi, hogy más platformokra - akár mikrokontrollerre, amely EPROM-ból olvassa ki az adott JEDEC fájlt - is átvihessük a programot.
16