DIGITÁLIS TECHNIKA LABORATÓRIUMI SEGÉDLET VI. MÉRÉS AZ „ABEL” FEJLESZTİI PROGRAMRENDSZER ALAPJAI
I.Minimális elméleti alapok. 1.Bevezetés A digitális rendszerek fejlıdése nagyon hamar válaszút elé állította a konstruktıröket, hogy az egyre bonyolultabbá váló rendszereket milyen hardware és software eszközökkel építsék fel. A software eszközök jelenleg több alternatívát kínálnak, ezekkel nem kell most foglalkoznunk. A hardware eszközök gyakorlatilag három különbözı, de egymással jól kombinálható családra oszthatók. A, A fejlesztı által létrehozott egyedi kivitelő nagyintegráltságú (VLSI)eszközök, melyeknél a teljes integrált áramkört a készülékkonstruktır hozza létre, illetve rendeli meg. Elınye lehet a cél-tervezett, ennélfogva az adott berendezéshez legjobban illeszkedı kivitel. A technika jelenlegi állása mellett mind a technológia, mind a szükséges eszköz kivitele szinte hónapról hónapra változik, így ezt a megoldást csak azok a tervezık engedhetik meg maguknak, akik tudatában vannak annak, hogy a gyártás mérete igen rövid idın belül is gazdaságossá teszi az ilyen elemek használatát, melyeknél az un. állandó költségek aránya igen magas (egyedi áramköri tervezés, egyedi gyártás, tesztelés,stb.) B, Standard VLSI eszközök (processzorok, vezérlık, memóriák) használata. Ebben az esetben a berendezés természetesen bonyolultabbá válik, megnövekednek a változó költségek, a standard VLSI áramkörök viszont jóval olcsóbbak lehetnek, s valószínőleg több termék-cikluson át is használhatóak, így a nagyobb darabszámú rendelés is csökkentheti a költségeket. (Bár ez sem veszélytelen) C, Olyan VLSI eszközök használata, melyek bonyolultsága lehetıvé teszi a berendezés egyszerő kivitelét, ugyanakkor az eszköz belsı felépítése, akár funkciója is egyszerő eszközökkel hozható létre és módosítható. A jelenlegi gyakorlatban mindhárom megoldást szinte egyidejőleg használjuk, nem egyszer egy berendezésen belül is. Az a, megoldás az un. ASIC áramkör, a b, választás a szabvány VLSI eszköz használata, a c, pedig a programozható logikai áramkörök választása. A programozható áramkörök fejlıdése az utóbbi akárcsak tíz évben is nehezen követhetı. A legelsı eszközök a ROM, majd PROM eredetileg un. „állandó memória” céljaira készült áramkörök voltak, ezt követték a PLA, FPLA, PAL, FPGA1 stb áramkörök. Jelenleg ezek az áramkörök fejlıdése egyszerően megjósolhatatlan mérető mind az un. „digitális” mind pedig az un. „analóg”, mind pedig a „hetero” berendezéseknél. 2. A mérés alapjául szolgáló PAL – eszközök A kapható programozható eszközök között a legegyszerőbbek a PROM, PLA és PAL áramkörök. A PAL áramkörök még nagyon egyszerőek: AND-OR logikát, az esetek egy részében „D” flip-flopokat, esetleg programozható invertereket, és kimeneti tri-state invertereket tartalmaznak. A labormunkák során három alaptípust fogunk vizsgálni:
Az olyan egyszerő programozható logikákat, mint a PAL, PLA együttesen szokás „PLD” (Programmable logic device) néven emlegetni. A többi rövidítés: PLA = Programmable logic array; PAL = Programmable array logic; FPGA = Field prammable gate array 1
A, P16 L8. (ld. Kapcsolási rajz) tisztán kombinációs hálózat. (Az „L”ÉS-VAGY-NEM (AND_NOR) hálózatra utal, a 16 a bemenetek,i, a 8 a kimenetek maximálisan programozható értékét mutatja. (10 csatlakozó pont (I 0 - I9, ) bemenet, 2 csatlakozó pont (O1 és O8) kimenet, 6 csatlakozó pont (I/O 2 ÷ I/O7) pedig univerzális.) Minden kimenetként is használható csatlakozó pont tri-state kiképzéső. A tri-state invertereket 7-bemenető VAGY kapuk hajtják, 32 bemenető ÉS kapukon keresztül. (Itt hívjuk fel a figyelmet az ÉS kapuk egyszerősített, valamint az egész kapcsolási rajz régi szabvány szerinti ábrázolására). A bemeneteket a 16 lehetséges bemenet, vagy akár aktuális kimenet ponált vagy negált értékeire lehet programozhatóan kötni. Ezek a programozható csatlakozások technológiailag különbözı megoldásúak lehetnek. Az eredeti PAL-ok esetében ezek wolfram-biztosítékok, melyeket programozáskor kiégetünk, sajnos egyszer-s mindenkorra. Valamelyest könnyíti a helyzetet, hogy a „nem használt” ÉS kapuk eredetileg minden ponthoz csatlakoztatott bemeneteihez nem kell „hozzányúlni”, mivel ezeknek az ÉS kapuknak a kimenete „L” (0). (Miért?) Hasonló a meghajtása a tri-state vezérlı bemeneteknek. Az IC összesen 64 (8x8) 32 bemenető ÉS kaput tartalmaz, azaz a lehetséges mintermek száma 1024 (Hiába van 32 bemenet, ebbıl csak 16 bemenet választható ki — vagy a ponált, vagy a negált bekötést választjuk, egyszerre kettıt valahogy nem szokás). A rendszer, pedig összesen 64x32 = 2048 biztosítékot tartalmaz. Az Önök birtokába került kapcsolási rajzon az egyes ÉS kapukat számozták meg 0-63 között, a klasszikus rendszer szerint viszont a biztosítékokat szokás számozni. (Az ABEL is ezt mutatja majd). Itt jegyezzük meg, hogy már a második generációs PAL-ok (ezeket egyébként GALoknak szokás nevezni: „generic array logic) nem wolfram biztosítékokat tartalmaznak, hanem visszaállítható floating gate technológiájú csatlakozásokat. B, P16 R8 A bemenetek száma 10, ebbıl 8 általános ((I 1 - I8,) két „dedikált”, azaz kötött funkciójú, a kimenetek száma 8 (O1 - O8,). A 32 bemenető ÉS kapuk kimenetenként nyolcasával hajtanak meg egyegy VAGY kaput, melyek D-flip-flopok adatbemeneteit hajtják meg. A flip-flopok kimenetei egyrészt a kimeneti tri-state invertereket hajtják meg, (minden kimenet regiszteres!), másrészt visszavezethetıek az ÉS-kapuk kimenetére. A P16 L8-hoz képest — a triviális eltéréseken kívül — alapvetı eltérés, hogy a visszavezetés nem a tri-state inverterek kimenetérıl, hanem bemenetérıl történik. Vegyük észre, hogy a tri-state vezérlés nem programozható, és minden kimenetre közös. (OE csatlakozó). C, P16 R4 és P 16R6. Ezek az eszközök mind regiszteres, mind kombinációs kimeneteket tartalmaznak. (A p16 R4 4+4, a P16 R6 6+2, kombinációban. Az ilyen eszközök igen alkalmasak pl. olyan szinkron számláncok tervezésére, ahol kimeneti átvitelképzés(ek)re is szükség van. (Mindig szükség van). 3. A mérés tárgyát képezı ABEL programrendszer. Az ABEL rövidítés „Algorythmic Boolean Electronic Language”-et jelent. Igen egyszerő, valójában nem software, hanem hardware fejlesztık és alkalmazók számára készült. A programrendszer célja: A program lehetıvé teszi, hogy a programozandó áramkört a lehetı legegyszerőbben, a fizikai igényt a legjobban megközelítıleg írjuk le úgy, hogy definiáljuk a tesztelés feltételeit is. A leírás közepesen magas szintő nyelven történik. A program lefordítja, szükség esetén generálja a logikai függvényeket, elvégzi az optimalizálást, felajánlja a kiviteli lehetıségeket (a függvényre, vagy talán mégis az inverzére van szükségünk, elvégzi a szükséges dokumentációt, leteszteli az eredményeket (szimuláció), majd beprogramozza az eszközt. (Az égetı már nem áll rendelkezésünkre).
3.1. Az .ABL kiterjesztéső alapprogram felépítése, alapvetı szintaktikai szabályai. A programozandó kapcsolás leírására .ABL kiterjesztéső programot kell létrehoznunk. A program részei: programfej, programtörzs és kóda. ( coda; befejezı rész) A programfejben a deklarációs blokk található… A legelsı deklaráció a MODULE. Az .ABL kiterjesztéső program (a program text editorral írható) elsı szava, a kulcsszó után egy szó , a programozandó áramkör neve következhet. A következı a TITLE. A kulcsszó után két ’ jel közé írt szöveg lesz a címe a teljes dokumentációnak, megjelenik minden, a programrendszer által generált fájlban. Konvenció szerint az áramkör nevét, funkcióját, a fejlesztı nevét, és a tervezés idıpontját tartalmazza. Több sor is lehet. A harmadik deklaráció a DEVICE. (Opcionális). Az ABEL az áramkörnek leginkább megfelelı programozandó eszközt maga keresi meg, de az eszköz típusát elı is írhatjuk a MODULE deklarációval. A ”DEVICE” elé az eszköz belsı kódját, utána pedig szóköz után az eszköz típusát kell megadni. A PIN deklaráció az egyes be- és kimenetek logikai elnevezését (melyet a program használ) megfelelteti a PAL csatlakozószámának. A PIN elé és mögé is több nevet ill. számot írhatunk, a megfeleltetés az adott sorrendben történik. A fejblokk helyettesítı értékadást is tartalmazhat, a program összeállításának egyszerősítésére. Az értékadás jele: = Az értékadó kifejezés bal oldalán felsoroljuk az általunk használni kívánt szimbólumokat, jobb oldalon pedig az ennek megfelelı, az ABEL által egyébként elıírt szimbólumokat kell feltüntetnünk. (Egyszerő példa: Az ABEL valamely kimenet irreleváns állapotát .X. –szel jelöli, hogy az X egyéb funkciókban (pl. „X” kimeneti jelnév használható legyen. Ha nem akarunk ilyen bonyolult betősorozatot írni, egyszerően feltüntetjük, hogy X = .X. Hasonlóan használhatjuk pl. az ON = 0 értékadást, stb. A deklarációk között elıkelı helyet foglalnak el a tömbdeklarációk. A tömböknek valamilyen nevet adunk, a tömbökbe foglalt változókat a [] jelek között kell feltüntetnünk. Az ABEL csak egydimenziós tömböket ismer. A tömbök értékét a tömböket tartalmazó változók binárisan összeolvasott értéke adja. A törzsblokk programvezérlı operátorokat, és a programtörzsre jellemzı parancsokat tartalmaz. A programvezérlı operátorok a program mőködését befolyásolják, mindig a @ karakterrel kezdıdnek. Példaképpen szolgálhat a @DCSET operátor. Jelentése DON’T CARE SET. Ez az operátor akkor használandó, ha az általunk összeállított igazságtábla nem tartalmazza a bemenı változók összes kombinációját (vagy mert egyéb bemeneti kombinációk nem léphetnek fel, vagy mert ezeknél a kimenti értékek közömbösek). Ilyenkor a program .X. értékekkel tölti fel az általunk nem is szerepeltetett bemeneti kombinációkat. Magának a törzsblokknak a felépítése többfajta lehet. Tartalmazhatja az EQUATIONS, TRUTH TABLE ésTEST_VECTORS parancsokat, de nem kell valamennyit. Az EQUATIONS parancs után fel kell sorolnunk azokat a logikai függvényeket, melyek a ki-és bemenetek kapcsolatát fejezik ki. Az egyenleteknél az = jelét kell használnunk. (Itt jegyezzük meg, hogy az egyenlıség jele: == ) A függvények leírásánál unáris és multiplex operátorokat használunk. Unáris operátor a negáció jele: ! A ! jel mindig a változó elé írandó ( !Y) Multiplex operátorok az ÉS, a VAGY és az ANTIVALENCIA, jelük: &, #, $. A TRUTH_TABLE parancs után következı igazságtábla formátuma kötött. A tábla jobb- és baloldalát a --> csoport választja el. Mindkét oldalon vagy tömböket, vagy azok nevét, ill. értékét kell feltüntetnünk. A fejléc felépítése megegyezik az egyes sorokéval, de < és > jelek közé van szorítva. A fejléc a tömb nevét is tartalmazhatja, ilyenkor az egyes sorok a tömb aktuális értékét mutatják.
Az értéket leírhatjuk binárisan (pl.^b0010), hexadecimálisan ( ^h3FBC), vagy decimálisan (^d4218, vagy 4218) Amennyiben szeretnénk, hogy az ABEL szimulációval ellenırizze az áramköri mőködést, használhatjuk a TEST_VECTORS parancsot. A TEST_VECTORS argumentuma hasonló a TRUTH_TABLE argumentumától, de el is térhet. (Tartalmazhat don’t care sorokat, vagy egyes sorokat ki is hagyhatunk belıle). A program codája az END parancsot tartalmazza. Az END argumentumának meg kell egyeznie a MODULE argumentumával. Fentiekben csak olyan áramkörök programozását vázoltuk, melyek kombinációs hálózatot valósítanak meg. A szekvenciális hálózatok megvalósításához kiegészítı információkra van szükség. A fejblokkban definiálhatunk belsı állapotokat értékadással, mely a STATE diagramm parancs argumentumában felsorolt kimenetek aktuális értékét mutatják, a definíció sorrendjében csökkenı bitérték szerint. A törzsblokkban kiadható a STATE_DIAGRAMM parancs, mely igazságtábla jellegő táblázatot vonz. A tábla bal oldalán az állapotdiagramban A következı állapot definiálandó, az egyes állapotok értéke és a bemeneti változók aktuális értéke szerint. Ez a következı állapot nem más, mind a Q kimenetek Dflip-flopjainak bemeneti „D” értéke. Erre az állapot száma után kerülı : jel utal, az értékadás jele helyett. A STATE_DIAGRAMM parancs a TRUTH_TABLE megfelelıje. Az értékadás lehet feltételes, használható az IF…THEN és a GOTO szerkezet is. 3.2. Az ABEL programrendszer egyéb alkotói. Az .ABL kiterjesztéső programot megírhatjuk text editorban, vagy a „FILE” menü OPEN parancsával. (Új fájlnevet adunk meg.). Az .ABL programot megnyítás után a „COPMPILE” menü COMPILE parancsával fordítunk le. A hibafájl a VIEW menü COMPILER LISTING parancsával olvasható. A hiba nélkül lefordított program által generált függvényeket a VIEW menü COMPILED EQUATIONS parancsa mutatja. A függvényeket az OPTIMIZE menü REDUCE parancsa egyszerősíti. Az egyszerősített függvényeket, és a statisztikát a VIEW menü OTIMIZED EQUATIONS és FITTED EQUATIONS parancsával lehet megtekinteni. A VIEW menü PLD MAP REPORT parancsa szinte teljes dokumentációt ad a programozott eszközrıl. A kiégetendı biztosítékokról a VIEW menü JEDEC/PROM FUSE FILE parancsa ad felvilágosítást. A program csak azokat a mintermeket mutatja, ahol biztositéko(ka)t ki kell égetni. A kiégetendı biztosítékokat „1” jel mutatja. A szimuláció eredményét (A TEST-VECTOR-okból melyek teljesültek és melyek nem) a VIEW menü SIMULATION RESULTS parancsa mutatja meg. A FILE menü SAVE parancsa elmenti az elkészült .ABL programot, a SAVE AS új nevet is adhat, módosítás-variálás céljából. A parancssort az egyes menük elsı betője+ALT billentyő hívja be. Az ESCAPE billentyővel közlekedhetünk a file-ok és a parancsok között. Az eszközök beégetését a PARTMAP menü PROGRAMM DEVICE parancsa végezné… A HELP menü INDEX parancsának használatát minden hallgatónak melegen ajánljuk — aki tud angolul.
Mérési feladatok. Futassuk le az ABEL4. EXE programot, majd 1. Nyissuk meg a munka\simple.abl fájlt. Mentsük el munka\single.abl néven, és módosítsuk az alábbiak szerint: A kimenetek nem AND és NAND? Hanem OR és NOR. Mentsük ki a saját floppynkra is. Fordítsuk le az uj fájlt, a hibákat javítsuk ki, és vessük össze az eredeti és fájl FUSE fájljait! Jegyezzük fel mindkettıt, és jelöljük ki az eltéréseket. 2. Nyissuk meg a bcd7. abl fájlt. Mentsük el csoportonként az alábbi neveken, ill. módosítsuk a név szerint: . A csoport: GRAY7.abl, (bemeneten Gray-kód) B csoport: Excess3. abl, (Bemeneten excess3-kód) C csoport: hex7. abl, (A bemeneti jel hexa jel, a kimeneten ábrázolni kell az A-F kódokat is) D csoport: bcdnegat.7 abl /A bemenet aktiv L-bcd jel, a kimenet közös katód) Minden csoport fordítsa le, mentse floppyra az .ABL fájlt, majd optimalizálja az áramkört. Jegyezzék fel az új egyenleteket. 3. Nyissuk meg a munka\cnt10p.abl fájlt, majd az egyes csoportok mentsék ki az alábbi neveken: A csoport: cnt11p.abl B csoport: cnt 12p.abl C csoport cnt 13p.abl D csoport excess3.abl (excess3 szerint számol) A továbbiakban ld. 2. pont 4. Nyissuk meg a count4. abl fájlt, és alakítsuk át, stb. az alábbiak szerint: Az üzemmódok az alábbiak: I0 I1 Üzemmód 1 1 Számolás 0 1 Számolás tiltása 1 0 Load „A” bemenetrıl 0 0 Load „B” bemenetrıl A bemeneti Carry-t eliminálni kell. Ezt a munkát lehet közösen csinálni. Jegyzıkönyv: Egyenletek + floppy. Floppy helyett esetleg lehet pendrive-ot is használni.