Zalotay Péter DIGITÁLIS TECHNIKA II.



Hasonló dokumentumok
A mikroprocesszor felépítése és működése

Számítógép felépítése

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Előadó: Nagy István (A65)

Irányítástechnika Elıadás. Programozható logikai vezérlık

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Programozási segédlet DS89C450 Fejlesztőpanelhez

1. Kombinációs hálózatok mérési gyakorlatai

Számítógépek felépítése, alapfogalmak

elektronikus adattárolást memóriacím

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Mintavételes szabályozás mikrovezérlő segítségével

IRÁNYÍTÁSTECHNIKAI ALAPFOGALMAK, VEZÉRLŐBERENDEZÉSEK FEJLŐDÉSE, PLC-GENERÁCIÓK

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Bevezetés az informatikába

DIGITÁLIS TECHNIKA I

A számítógép fő részei

Logikai áramkörök. Informatika alapjai-5 Logikai áramkörök 1/6

7.hét: A sorrendi hálózatok elemei II.

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Az interrupt Benesóczky Zoltán 2004

Mérési jegyzőkönyv. az ötödik méréshez

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

A/D és D/A konverterek vezérlése számítógéppel

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Bepillantás a gépházba

A számítógép egységei

Irányítástechnikai alapok. Zalotay Péter főiskolai docens KKMF

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

XI. DIGITÁLIS RENDSZEREK FIZIKAI MEGVALÓSÍTÁSÁNAK KÉRDÉSEI Ebben a fejezetben a digitális rendszerek analóg viselkedésével kapcsolatos témákat

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

Labor gyakorlat Mikrovezérlők

Labor gyakorlat Mikrovezérlők

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

Tartalomjegyzék. 1. A programozható logikai vezérlők (PLC)

Informatika érettségi vizsga

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

Programozó- készülék Kezelőkozol RT óra (pl. PC) Digitális bemenetek ROM memória Digitális kimenetek RAM memória Analóg bemenet Analóg kimenet

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

Összetett feladatok megoldása

Architektúra, megszakítási rendszerek

Számítógép fajtái. 1) személyi számítógép ( PC, Apple Macintosh) - asztali (desktop) - hordozható (laptop, notebook, palmtop)

Programozott soros szinkron adatátvitel

Bevezetés az informatikába

Nagy Gergely április 4.

Dr. Oniga István. DIGITÁLIS TECHNIKA 10 Memóriák

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA02 9. hét

Labor 2 Mikrovezérlők

3. A DIGILENT BASYS 2 FEJLESZTŐLAP LEÍRÁSA

Számítógép architektúrák

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

EB134 Komplex digitális áramkörök vizsgálata

Dr. Oniga István DIGITÁLIS TECHNIKA 4

Számítógép architektúra

Digitális rendszerek. Utasításarchitektúra szintje

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

A mikroszámítógép felépítése.

F1301 Bevezetés az elektronikába Digitális elektronika alapjai Szekvenciális hálózatok

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

A Számítógépek felépítése, mőködési módjai

USB I/O kártya. 12 relés kimeneti csatornával, 8 digitális bemenettel (TTL) és 8 választható bemenettel, mely analóg illetve TTL módban használható.

SYS700-A Digitális szabályozó és vezérlõ modul DDC rendszerelemek, DIALOG-III család. Terméktámogatás:

8.3. AZ ASIC TESZTELÉSE

3.6. HAGYOMÁNYOS SZEKVENCIÁLIS FUNKCIONÁLIS EGYSÉGEK

Összeadás BCD számokkal

Számítógépek felépítése

PLC-K ÁLTALÁNOS FELÉPÍTÉSE

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

Perifériák hozzáadása a rendszerhez

2. rész PC alapú mérőrendszer esetén hogyan történhet az adatok kezelése? Írjon pár 2-2 jellemző is az egyes esetekhez.

Jelfeldolgozás a közlekedésben

SZORGALMI FELADAT. 17. Oktober

Számítógépek felépítése, alapfogalmak

Aritmetikai utasítások I.

Békéscsabai Kemény Gábor Logisztikai és Közlekedési Szakközépiskola "Az új szakképzés bevezetése a Keményben" TÁMOP

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

Digitális rendszerek. Mikroarchitektúra szintje

Központi vezérlőegység

SYS700-PLM Power Line Monitor modul DDC rendszerelemek, DIALOG-III család

Processzor (CPU - Central Processing Unit)

PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.

Az MSP430 mikrovezérlők digitális I/O programozása

KIBŐVÍTETT RUGALMAS AUTOMATIZÁLÁS

Véges állapotú gépek (FSM) tervezése

Alapkapuk és alkalmazásaik

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Átírás:

Zalotay Péter DIGITÁLIS TECHNIKA II. Távoktatási előadás anyag BMF Kandó Kálmán Villamosmérnöki Kar 1.oldal

Tartalomjegyzék: Bevezetés...6 1. Programozott logikai műveletvégzés...7 1.1. Mi a program és a programozás?...7 1.2. Programozott logikai műveletvégző egységek...7 1.2.1. Rögzített (fix) programozás...7 1.2.2. Változtatható programozás...8 1.2.3. A szabad programozás...9 1.3. Szabadon programozható logikai vezérlő...9 1.3.1. Bitprocesszor...10 1.3.2. Szabadon programozható logikai gép...12 2. A mikrogép (mikroszámítógép)...17 2.1. A központi vezérlő egység...18 2.1.1. A CPU funkciói...18 2.1.2. Processzor vezérlés...18 2.2. Memóriák...18 2.2.1. A program memória( PM )...18 2.2.2. Az adatmemória (DM)...18 2.3. Periféria illesztés...18 2.4. A tápegység ( TE )...19 2.5. A busz-rendszer...19 3. A mikroprocesszor...19 3.1. Utasítás feldolgozó...20 3.2. Aritmetikai - logikai egység ( ALU )...20 3.3. Regiszter - tömb...21 3.4. Busz illesztés...21 3.5. Időzítő - vezérlő egység...21 3.6. A processzor megszakításkezelése...21 3.7. Memória írás, olvasás...22 3.8. Periféria írás, olvasás...22 4. Memóriák, és illesztésük...23 4.1. A memóriák elvi felépítése...23 4.1.1. Csak olvasható (fix) memóriák...24 4.1.2. Írható, olvasható memóriák...26 4.1.3. Memóriák illesztése...27 4.2. Perifériák illesztése a mikrogép -hez...28 4.2.1. Bemenetek (input) illesztése...28 4.2.2. Kimenetek (output) illesztése...28 4.2.3. Perifériák címzése...29 5. A mikrokontroller...30 2

5.1. A 8051 mikrokontroller család...30 5.1.1. A CPU és regiszterei...31 5.1.2. Belső memória...31 5.1.3. A Portok...33 5.1.4. Programozható időzítő / számláló egységek...34 5.1.5. Soros vonali illesztő...37 5.1.6. Megszakítások...40 5.1.7. Teljesítmény felvétel vezérlése...41 5.2. Külső memóriák illesztése...41 5.2.1. Adat-, és programmemória kezelése...41 5.2.2. Külső perifériák csatlakoztatása...42 6. Mikrogépek programozása...43 6.1. A programozásról általában...43 6.1.1. A programozás célja...43 6.1.2. A programfejlesztés lépései...43 6.2. Assembly nyelvű programozás...44 6.2.1. A forrásnyelvi program...45 6.2.2. Fordítást vezérlő utasítások...51 7. A 8031/51 típusú mikrokontrollerek utasításai...55 7.1. Az utasítások, és azok hossza...55 7.1.1. Futási idő...55 7.1.2. Címzési módok...55 7.2. A címzésről általában...56 7.2.1. Regiszter-címzés...56 7.2.2. Direkt címzés...56 7.2.3. Indirekt címzés...56 7.2.4. Közvetlen címzés...57 7.2.5. Indirekt regiszter-címzés...57 7.3. A különböző utasítás fajták...57 7.3.1. Az adatátviteli utasítások...58 7.3.2. Az aritmetikai utasítások...59 7.3.3. Logikai utasítások...60 7.3.4. Forgatás ( rotáció)...60 7.3.5. Vezérlés átadó utasítások...61 7.4. Az utasítások hossza és végrehajtási idejük...63 8. Programfejlesztés...64 8.1. A programfejlesztés lépései...64 8.2. A programfejlesztés eszközei...65 8.3. Program-blokkok...65 8.4. Programszerkezetek...71 8.5. Példa programfejlesztésre...73 8.5.1. Mit kell csináljon a program?...73 8.5.2. A programszerkezet meghatározása...73 3

8.5.3. Deklarálás...74 8.5.4. Részfeladatok (algoritmusok)...74 8.5.5. Forrásállomány megírása...76 8.6. A programtesztelés...79 8.6.1. A program szimulálása...79 8.6.2. A program valós idejű tesztelése...80 8.7. Megszakítás (interrupt) kiszolgálásának programozása...80 9. Programfejlesztés az XE251 környezetben...83 9.1. A forrásállomány írása, módosítása...84 9.1.1. File (fájlkezelés) menü...85 9.1.2. Az Edit (szövegszerkesztő) menü...86 9.1.3. A Tools (eszközök) menü...86 9.1.4. Az Options menü...86 9.1.5. Példa a forrásállomány megírására...87 9.2. A futtatható állomány létrehozása...88 9.2.1. Fordítás (assembler)...88 9.2.2. Szerkesztés (linker)...90 9.2.3. Fájl konverzió (HEX generálás)...91 9.3. A program ellenőrzése...91 9.3.1. A program szimulációja...91 9.3.2. A szimuláció végrehajtása...94 9.3.3. A programok valós idejű futtatás...100 10. Példák programfejlesztésre...107 10.1. Kombinációs logikai feladat programozása...107 10.2. Kijelző vezérlés megszakítás (interrupt) használatával...112 10.3. Közlekedési jelzőlámpák vezérlése...121 11. Függelék...130 11.1. Assembler direktívák...130 11.1.1. Szimbólum definiáló direktívák:...130 Szegmens-típusok:...130 Elhelyezési típusok:...130 11.1.2. Helyfoglaló, és inicializáló direktívák...130 11.1.3. Modulok közötti kapcsolatok direktívái...131 11.1.4. Cím beállító és szegmens választó direktívák...131 11.2. Fordítási parancsok...131 11.2.1. Elsődleges parancsok:...131 11.2.2. Másodlagos parancsok...133 11.2.3. Feltételes fordítási parancsok...133 11.3. A 8031/51 mikrokontroller család utasításai...134 11.4. A szimulátor parancsainak részletes leírása...136 11.4.1. File menü:...136 11.4.2. Run menü:...136 11.4.3. View menü:...136 4

11.4.4. Break menü:...138 11.4.5. Assemble menü...138 11.4.6. Options menü:...139 11.4.7. Az Intel hex formátum...139 11.5. A monitor program...141 11.5.1. Inicializálás...141 11.5.2. Memóriakezelés műveletei...141 11.5.3. Lépésenkénti futtatás feltételei....148 11.5.4. Memóriatartalom letöltése a mikrokontrollerbe...148 11.5.5. Memóriatartalom küldése a terminálprogramnak...149 5

Bevezetés A tantárgy feladata a mikroprocesszoros un. intelligens berendezések - PC-k, ipari irányító készülékek (PLC -k), különböző hírközlési rendszerek stb. - működésének megismeréséhez, programozásuk elsajátításához szükséges alapismeretek megtanítása. Jártasságot kíván nyújtani az assembly nyelvű programozásban, valamint készséget kialakítani a mikrogépek használatában. A felsorolt célkitűzések elérése érdekében foglalkozunk a programozási alapismeretekkel, az egy bites logikai műveletek programozásával, a mikroszámítógépek általános felépítésével és működésükkel, a mikroprocesszorok rendszertechnikai szerepével, az un. "egy chip -es" számítógép, a mikrokontroller alkalmazásával, a perifériák illesztésével, a processzor közeli programozás (assembly nyelvű) alapjaival, A mérési gyakorlatok keretében egy általános célú mikrogépen sajátítják el a hallgatók a programozás alapjait, a különböző programszerkezetek kialakítási módszereit, a megszakítások használatát, a különböző irányítási feladatok programozását. 6

1. Programozott logikai műveletvégzés A mikrogépek és programozásuk részletes tárgyalása előtt röviden összefoglaljuk a programozható logikai műveletvégzés legfontosabb alapismereteit. 1.1. Mi a program és a programozás? A hétköznapi életben a program nem más, mint egy adott cél elérésre szolgáló cselekvéssorozat leírása. A cselekvés emberekre, azok csoportjára vonatkozik, és célja valamilyen közös tevékenység megvalósítása. Ilyen vonatkozásban a programkészítés, vagy programozás a cselekvéssorozat megtervezése. Ebben figyelembe kell venni a résztvevők tulajdonságait, és a körülményeket, feltételeket. A műszaki életben, annak gyakorlatában a program, egy meghatározott feladatot ellátó készülék, vagy berendezés műveletsorozatát meghatározó leírás. A program leírása a készülék számára érthető formában, és elérhető helyen kell legyen. A következőkben összefoglaljuk a logikai műveletekre visszavezethető feladatokban használt programleírási, és tárolási megoldások változatait. 1.2. Programozott logikai műveletvégző egységek A programozott logikai műveletvégző berendezésekkel leggyakrabban a számítástechnikában és a különböző irányítási feladatokban találkozunk. A villamos jelekkel végzett automatikus irányítás mintegy 100 év alatt fejlődött a mai alkalmazási szintjére. A fejlődés leglátványosabb szakasza az utolsó 40 év, az integrált áramkörök megjelenésétől számítható. A program tervezésére kialakított módszerek tulajdonképpen a különböző villamos tervek készítése. A számítógép alkalmazása a tervezésben biztosítja a megbízhatóságot és a tervezés hatékonyságát. 1.2.1. Rögzített (fix) programozás Rögzített programozásnak azt a megoldást nevezzük, amelynél a programozott berendezés működését roncsolás (szétszedés) nélkül nem lehet megváltoztatni, A villamos irányítás, ezen belül a vezérlés korai változataiban a mágneskapcsolók, relék, jelző eszközök működtetésével történt. A működés parancsait kapcsolók, nyomógombok, valamint a vezérelt eszközök érintkezőinek megfelelő összekapcsolásával adják. Az elemek összekapcsolása vezetékekkel történt, az un. áramút terv (1.a.ábra) alapján. Tehát a programozás az áramútas rajz megtervezése volt. A program tárolása a huzalozás (1.b.ábra). (Esetenként az ilyen berendezéseket huzalozott programozásúnak is nevezik.) 7

a. b. 1. ábra A félvezető eszközök diódák, tranzisztorok, integrált áramkörök alkalmazásánál a nyomtatott áramköri lapokon történt az összekötés (huzalozás), tehát ezek a megoldások is a fix programozás csoportjába tartoznak. A tervezés végeredménye a logikai vázlat, illetve kapcsolási rajz (2.a.ábra), és a megvalósítás a nyomtatott áramköri lapon történik (2.b.ábra). A kapcsolási rajzot megvalósító IC-k a. b. 2. ábra 1.2.2. Változtatható programozás A gazdaságosabb gyártás igényelte az olyan félvezető alapú áramkörök kialakítását, amelyek alkalmazásánál az áramkörbe rögzített program megváltoztatható. Tulajdonképpen először a memóriákhoz fejlesztettek programozható változatokat, pl. az EPROM (2.8. fejezet) amelynek tartalma újra programozható. A programozható logikai integrált áramkörök (FPGA), amelyekbe a beépített kapuk közötti kapcsolat beégethető, és változtatásnál törölhető. Ilyen megoldásban többszörös átprogramozást is meg lehet valósítani. Az elvet szemlélteti a 3. ábra. A chip -et ÉS-VAGY hálózat és Inverterek alkotják. Az ÉS kapuk előtt mátrix elrendezésű vezetékhálózat van, 8

amelyek keresztpontjai a gyártás után még egymástól elszigeteltek. A programozás lényege, hogy a megtervezett logikai függvényt megoldó hálózatot a megfelelő keresztpontok összekötésével, beégetésével érjük el. Ezek a kötések az áramkör sérülése nélkül bonthatók (törölhető), és ezután új program égethető be. Az ábra a logikai függvényt oldja meg. K = B B + 1 3 + B1B2B3 B1B2B4 inverterek vezetékhálózat ÉS-VAGY hálózat Beégetett csatlakozás 3. ábra 1.2.3. A szabad programozás Az ember gondolkodása, feladatmegoldása elemi műveletek végrehajtásának sorozatából tevődik össze. Vegyük példának három szám összeadását. Először leolvassuk az első számot, majd hozzáadjuk a második számot majd a részeredményhez adjuk a harmadik számot. Befejezésül közöljük, leírjuk (tároljuk) a végeredményt. Természetesen a részeredményeket fejben tartjuk (tároljuk), vagy ha szükséges le is írjuk. A leírt műveletsornak megfelelően működnek a szabadon programozhatónak nevezett készülékek, amelyek műveletvégző egységekből, és memóriákból épülnek fel. A memóriába írható be a feladat megoldását előíró megszabó program és a változók aktuális értéke. A memóriatartalom bármikor, tehát rendeltetésszerű működés közben is felülírható. A megoldás viszonylag kötetlen (szabad) programozási lehetőséget biztosít, ezért nevezzük az ilyen készülékeket szabadon programozható berendezéseknek. Az alkalmazott számítógépek, ipari irányító berendezések (PLC), a hírközlés stb. eszközei mind ebbe a csoportba tartoznak. Mindezek alapvető működésmechanizmusa azonos, mégpedig abban, hogy egy adott időpillanatban csak egyetlen műveletet végez. A műveletek programozott sorozata adja a feladat megoldását. 1.3. Szabadon programozható logikai vezérlő Vizsgáljuk meg, hogyan alakítható ki olyan hardver (áramkör), amely két bit között programozottan hajt végre logikai, illetve bit-mozgató műveleteket. A feladatot a 4. ábrán látható elvi felépítésű áramkör megoldja. Az áramkör egy adott időben két bit közötti logikai műveletet, vagy bit mozgatást végez. Azt, hogy az egység 9

milyen műveletet fog végezni, a programozó bemenetekre (I 0, I 1, I 2 ) adott három bites digitális információ (utasítás kód) határozza meg. Az eredmény-tároló (ET) egy D flip-flop, amely a mindenkori logikai művelet eredményét tárolja, vagy az adatmozgatás forrása, illetve célja. A programozható logikai egység (LU) az I 0, I 1, I 2 bementekre adott bitkombináció (utasítás) alapján többféle műveletet végez. A D be bemenetre érkező bitet, az ET tárolóba írja, vagy az ET -ben tárolt értéket (eredményt) a D ki kimenetre írja, vagy az ET -ben tárolt részeredmény, és a D be vezetékre érkező bit között végez logikai műveletet, és ennek eredményét írja vissza a tárolóba. A művelet ütemezését biztosítja a C p jelű órajel. 4. ábra 1.3.1. Bitprocesszor A továbbiakban a programozható, bites logikai műveletvégző egységet bitprocesszor -nak nevezzük. Az előzőkben leírt műveleteket végreható áramkör egy lehetséges megvalósításának logikai vázlata látható az 5. ábrán. 5. ábra 10

Először az LU jelű logikai egység működését nézzük meg. Az ET -ben tárolt érték és a D_be bemeneten lévő bit kétbemenetű ÉS, illetve VAGY kapu végzi. közötti logikai műveletet a A tagadást a kétbemenetű XOR kaput alkalmaztunk. A kapu egyik bemenetén van az adatbit és a másikon pedig az I 0 jelű utasítás-bit. Az utóbbi 0 értékénél az adat bit változatlanul jut a kapu kimenetére, mg az 1 értéknél negálva. Két XOR kaput alkalmaztunk, hogy mind a bemeneti, mind a tárolt bitet is lehessen tagadni. A bitprocesszor másik fő egysége a kiválasztó multiplexer. Az I 1, I 2 parancsbitek kombinációi határozzák meg, hogy melyik bemenet aktuális értéke kerül továbbításra. Ugyanez a két bit határozza meg az adattovábbítás irányát és az adat külső egységbe történő írás (WR), vagy onnan az olvasás (RD) vezérlését. A kiválasztott adat az órajel (Cp) ütemezésében egy-egy tri-state kapun keresztül íródik a belső tárolóba (ET), vagy a kimenetre (D_ki). A vezérlőjeleket a Cp ütemezi. A WR kimeneten az adat kiírásakor, míg a RD kimeneten az adat beolvasásakor jelenik meg impulzus. A működés alaposabb megismeréséhez vegyünk nézzünk néhány példát. 1. példa Logikai művelet. Az bemeneteken a következő értékek vannak: I 0 = 0, I 1 = 1, I 2 = 0, Cp = 0, D_be = x, ET = 0. Az I 0 parancsbit 0 ezért mindkét XOR kapu változatlan értékkel engedi tovább a másik bemenetére jutó adat-bitet. Az I 1 =1, I 2 =0 értékeknél az adatirány-t meghatározó ÉS kapu kimenetén 0 van. Hatására a tri-state kapuk közül a K_ki zár, míg K_be és a K_ki vezetnek. A Kiválasztó multiplexer a VAGY kapu kimenetét (a MUX 1 bemenete) kapcsolja az O kimenetre Amíg a Cp órajel 0, addig a D_ki kimenet lebeg (nagy impedancia), a RD és a WR vezérlő kimenetek 0 szintűek. Változás csak az órajel 1 szintre váltása után lesz. A RD olvasó kimenet is 1 be vált, a D_be bemeneten megjelenik az új változó, amely most legyen 1. Ekkor a VAGY művelet eredménye 1, amely érték az Eredménytároló (ET) D bemenetére jut. A bitprocesszor tehát az ET -ben tárolt érték és a Cp 1 szintjénél érkező új változó közötti VAGY műveletet hajtotta végre. A Cp jel 1 0 szintváltása után az ET tárolja a művelet eredményét. Az RD jel is visszavált 0 ba. 2. példa Adatmozgatás Az bemeneteken a következő értékek vannak: I 0 = 1, I 1 = 1, I 2 = 1, Cp = 0, D_be = x, ET = 1. 11

Az I 0 parancsbit 1 ezért mindkét XOR kapu tagadott értékkel engedi tovább a másik bemenetére jutó adat-bitet. Az I 1 =1, I 2 =1 értékeknél az adatirány-t meghatározó ÉS kapu kimenetén 1 van. Hatására a tri-state kapuk közül a K_ki vezet, míg K_be és a K_ki zárnak. A Kiválasztó multiplexer az ET -ben tárolt értéket átvivő XOR kapu kimenetét (a MUX 3 bemenete) ahol az I 0 =1 érték miatt a tárolt érték tagadottja - kapcsolja az O kimenetre Amíg a Cp órajel 0, addig a D_ki kimenet lebeg (nagy impedancia), a RD és a WR vezérlő kimenetek 0 szintűek. Változás csak az órajel 1 szintre váltása után lesz. A WR írást vezérlő kimenet 1 be vált, és a D_ki kimeneten megjelenik az ET ben tárolt érték tagadottja. A Cp jel 1 0 szintváltása után a WR jel is visszavált 0 ba. A példákban leírt eseménysorozatot nevezzük utasítás-, vagy máskép műveleti ciklusnak. Utasítás kódok A megismert bitprocesszor nyolc műveletet végezhet, amelyeket a három utasítás-bit (I 0, I 1, I 2 ) kombinációja határoz meg. A következő táblázatban foglaltuk össze a kódkombinációkhoz tartozó műveletek leírását. kód magyarázat 000 az ET tartalma és a D_be n lévő bit közötti ES művelet eredményét az ET tárolóba írja 001 az ET tartalma és a D_be n lévő bit tagadottja közötti ES művelet eredményét az ET tárolóba írja 010 az ET tartalma és a D_be n lévő bit közötti VAGY művelet eredményét az ET tárolóba írja 011 az ET tartalma és a D_be n lévő bit tagadottja közötti VAGY művelet eredményét az ET tárolóba írja 100 az ET tárolóba írja D_be n lévő bit -et 101 az ET tárolóba írja D_be n lévő bit tagadottját 110 a D_ki re írja az ET - ben tárolt értéket 111 a G_ki re írja az ET - ben tárolt értéket tagadottját 1.3.2. Szabadon programozható logikai gép Megismertük egy bitprocesszor működését. A következőkben építsünk meg egy programozható logikai műveletvégző gépet. A processzor mellett szükségesek memóriák, amelyek egyrészt a programot a programmemória -, másrészt pedig a műveletekben használt változók értékét az adatmemória - tárolják. A program futtatásának vezérléséhez egy számlálót, amely az órajel ütemezésében választja ki a programmemória soron következő tartalmát. A gép külvilággal történő kapcsolatát illesztő egységek portok kell biztosítsák. Ezeken keresztül írhatók be a memóriába a műveletek független változói, illetve adható ki az eredmények. Röviden foglaljuk össze, hogy mit kell megadni egy program egy utasításában a tervezett művelet végrehajtásához. Szükséges a műveleti-kód (operátor kód), amely megszabja a processzor műveletét, amely még kevés. Meg kell adni a művelet tényezői t is (operandus - 12

t). Az oprandusokat mindig valamelyik memória tárolja, ezért a tárolási hely címével hivatkozhatunk rá. Ezt a megoldást követve a programmemóriában tárolt műveleti utasítás e két részből áll. Egy logikai függvény értékének meghatározásához a következő műveleteket kell végrehajtani: 1. a független változók értékét be kell olvasni port -ról az adatmemóriába, 2. a függvényben szereplő logikai műveletek elvégzése, a műveletek rész-, és végeredményének átmeneti tárolása az adatmemóriában, 3. a végeredmény (függő változó) kiírása a port -on keresztül. A leírt műveletsorozatot ciklikusan kell ismételni. A logikai gép blokkvázlata látható a 6. ábrán. A blokkvázlat alapján kövessük a működést. A tárolt program ciklikus futását a Start jel indítja. Először a vezérlő jel a port -on keresztül beolvassa a memóriába a független változókat, és kiírja az előző ciklusban kiszámított függő változó(kat). Utána indul - a Cp hatására a számláló léptetése. A számláló kimenetei választják ki a programmemóriában tárolt, a programlépést meghatározó utasítás szót. 6. ábra 13

A programmemória kimenetén jelenik a soron következő utasítás-kód és az ADAT cím. A Cp ütemezi a bitprocesszor működését és ezen keresztül az adat memóriából történő olvasást, írást. Az utolsó programozott művelet után a ciklus kezdődik újból. Utasítás készlet A továbbiakban határozzuk meg a logikai gép programozható műveleteit, vagyis az utasításkészletet. A processzor tehát adatmozgatást, logikai műveleteket illetve adat írás, vagy olvasás vezérlését is végez. Azt, hogy éppen melyik műveletet kell végrehajtani, azt a három bites parancs, más szóval utasítás határozza meg. Az eddigiekben az egyes utasításokat a műveletet meghatározó bináris számhoz - utasítás kódhoz - kapcsoltuk. Célszerű egy könnyebben megjegyezhető, az utasítás tartalmát is jelentő szóképet használni a leírásnál. A digitális technikában általánosan a műveletek angol elnevezéseit (pl. AND), vagy abból származó szóképeket (pl. NOR) használunk. A gép műveleteinek jelöléseinél is használjuk a leírtakat. A továbbiakban az AND a logikai És műveletet, az OR a logikai VAGY műveletet, a / vonal a bit hivatkozás előtt a tagadást, a MOV az adatmozgatást jelzi. A művelet jelölése után meg kell adni, hogy mely változókkal operandusokkal - végezzük el azt. Mint ahogyan már említettük, egy adott bit értékének felhasználásához legcélszerűbb azt megadni, hogy az hól, milyen címen van. Tovább egyszerűsíthetjük a jelölésünket az OR és az AND műveleteknél, mivel ezeknél az egyik operandus mindig az eredménytároló (ET) tartalma. Ezért felesleges ezt mindig jelezni. A mozgatásnál első operandus a cél a második a forrás címe. A következő táblázatban foglaltuk össze a teljes utasításkészletet. A táblázat egyes oszlopai a művelet szöveges leírását, az utasítás kódolt változatát, és a magyarázatot tartalmazzák. utasítás kód magyarázat AND b_cím 000 az ET tartalma és a b_cím ről behívott bit közötti ES művelet eredményét az ET tárolóba írja AND / b_cím 001 az ET tartalma és a b_cím ről behívott bit tagadottja közötti ES művelet eredményét az ET tárolóba írja OR b_cím 010 az ET tartalma és a b_cím ről behívott bit közötti VAGY művelet eredményét az ET tárolóba írja OR / b_cím 011 az ET tartalma és a b_cím ről behívott bit tagadottja közötti VAGY művelet eredményét az ET tárolóba írja MOV ET, b_cím 100 az ET tárolóba írja b_cím ről behívott bit -et MOV ET, / az ET tárolóba írja b_cím ről behívott bit 101 b_cím tagadottját MOV b_cím, ET 110 a b_cím re írja az ET - ben tárolt értéket MOV b_cím, /ET 111 a b_cím re írja az ET - ben tárolt értéket tagadottját 14

Megjegyzés: a b_cím az a memóriacím, ahol az adott bit van. Bemeneti változóként ez a bit a bitprocesszor D_be pontjára, míg kimeneti változóként pedig a D_ki pontról kerül a memóriába. Az leírtak alaposabb megértéséhez írjunk programokat logikai függvények megoldására. 1. példa Írjuk meg a következő Kp diagrammal adott logikai függvényt megoldó programot! BA Kp DC 00 01 11 10 00 1 01 x 1 11 1 x 1 10 1 x A legegyszerűbb függvény algebrai alakja: F = B(D + A) + A BC A forrásprogram írásának első lépéseként a operandusok (változók) elhelyezését a memóriában, vagyis a hivatkozási címeket kell megadni. Ebben a példában, mint ahogyan a későbbiekben is látjuk a változókat jelölő szimbólumok (itt a betű) deklarálása a címet megadja a fordítónak. Következzék a logikai függvényt megoldó programrész utasításokkal történő szöveges leírása. MOV ET,D OR /A a (D+/A)B függvényrész meghatározása és az AND B eredmény átmeneti tárolása a T helyen MOV T,ET MOV ET,A AND /B a A/BC függvényrész meghatározása AND C ben OR T a (D+/A)B + A/BC kiszámított értéke az ET - MOV F,ET az eredmény kiírása az F helyre 2. példa Írjuk meg az előző példában megadott függvény konjunktív alakjából egyszerűsített változatát megoldó program szöveges forrásállományát! BA Ks DC 11 10 00 01 11 1 1 1 10 1 x 1 00 1 x 01 1 1 x 15

Az egyszerűsített függvény algebrai alakja: F = (B+ A(C + D)) (A + D) A meghatározott függvényt megvalósító program: MOV ET,D OR /A a (D+/A) függvényrész meghatározása és az MOV T,ET eredmény átmeneti tárolása a T helyen MOV ET,C OR /D a B+A(C+/D) függvényrész meghatározása AND A OR B ben AND T a (B+A(C+/D)) (D+/A) kiszámított értéke az ET - MOV F,ET az eredmény kiírása az F helyre 16

2. A mikrogép (mikroszámítógép) A félvezető alapú elektronikus áramkörök gyártástechnológiája az 1970 es évtized elejére nagyon sokat fejlődött. Ekkor az Intel, valamint a Motorola cégek a digitális számítógépek központi vezérlőegységének alapvető feladatait ellátó nagy integráltságú áramköröket kezdtek gyártani. Ekkor született meg a mikroprocesszor. A további fejlesztések egyre nagyobb elemsűrűségű áramkörök gyártását tették lehetővé. Az évtized végére már egy chip -ben egy minimál konfigurációjú számítógépet gyártottak, a mikrokontrollert. A mikroprocesszort, vagy mikrokontrollert alkalmazó digitális berendezéseket nevezzük mikroszámítógépnek, vagy röviden mikrogép nek. A személyi számítógépek (PC - k) mellett többek között ilyen készülékek irányítják a különböző ipari gyártósorokat, korszerű gépkocsikat és a szórakoztató elektronika, valamint a háztartási gépek egy nagy csoportját is. A mikrogépek mindegyikében megtaláljuk a központi vezérlő egységet ( CPU Central Processor Unit ), a program memóriát, az adat memóriát, a periféria illesztő egységeket, és a tápegységet. A mikrogép rendszertechnikai felépítését szemlélteti a 7.ábra. 7. ábra A blokkvázlatban szereplő egységek feladatát, működését tárgyaljuk a következőkben. 17

2.1. A központi vezérlő egység A CPU irányítja a mikrogép program szerinti működését. 2.1.1. A CPU funkciói A működés az un. utasítás ciklusok sorozatából tevődik össze. Egy utasítás ciklusban a CPU a programtárból beolvassa az soron következő utasítást, végrehajtja az utasításnak megfelelő elemi műveletet, és előállítja a mikrogép elemeit vezérlő jeleket. 2.1.2. Processzor vezérlés A mikroprocesszor működését az un. processzorvezérlő jelekkel lehet változtatni. A működést a beépített, vagy külső órajel generátor ütemezi. További vezérlő jelek: a bekapcsolási alapállapotot vezérlő bemenet a RESET, működést befolyásoló várakozás (wait) vezérlő bemenet READY, megszakítás-t kérő bemenet INT, a megszakítás elfogadását visszajelző kimeneti jel INTA, külső busz vezérlő, vagy másik processzor által kiadott un. busz kérési jelet fogadó bemenet, és a busz kezelését átadó kimeneti jel a RD (olvasó), WR (író, és periféria választó jelek. 2.2. Memóriák A mikrogépek működéséhez feltétlenül szükséges a programot, és a számítások, műveletek operandusait memóriák tárolják. Funkcionálisan ezek külön egységet alkotnak, ugyanakkor fizikailag egy memória is alkothatja ezeket. 2.2.1. A program memória( PM ) A mikrogép működését előíró program utasításainak megfelelő műveleti kódokat, és egyes operandusait tárolja a program memória. A műveletek végrehajtása során e memória területről csak olvasás történik. Olyan mikrogépek -ben amelyek csak egy programot hajtanak végre (pl. videó-magnó irányítása), a programot un. fix-memória (ROM, PROM, EPROM, EEPROM) tárolja. A PC - ben futás közben is változik az éppen végrehajtandó program, ezért itt irható-olvasható memóriában (RAM) tárolják az éppen aktuális program kódjai, operandusait. 2.2.2. Az adatmemória (DM) Az adatmemória tárolja a működés során használt változók, perifériákról beolvasott, ill. kiviendő információk aktuális értékeit. A feladatból adódóan csak irható-olvasható memóriák (statikus és dinamikus RAM, mágneses tárolok stb.) használhatóak ilyen feladatra. 2.3. Periféria illesztés A mikrogép és a külső eszközök adatforgalma és vezérlése a periféria illesztő egységeken keresztül történik. Mindkettő irányulhat a külső eszköztől a mikrógépbe (bemeneti-, vagy input egység), illetve ellenkező irányba (kimeneti-, vagy output egység ). Az ember-gép 18

közvetlen kapcsolat alapeszközei az adat-, és parancsbevitelre szolgáló klaviatúra, illetve a különböző megjelenítő egységek (képernyő, szám-, és karakter kijelzők stb. ) ahová a mikrogép a műveletek eredményeit írja ki. Amikor a mikrogép egy berendezést irányít ( automatizálás ) az információk és parancsok gép-gép közötti illesztő egységeken keresztül történik. 2.4. A tápegység ( TE ) A mikrogép feszültség, és áramellátását biztosítja. A leggyakrabban normál hálózatból (230 VAC 50 Hz) állítják elő a tápegységek az integrált áramkörök biztos működését szolgáló stabilizált (Ucc= 5 V), illetve az egyéb célokra használt stabilizálatlan egyenfeszültségeket (12 V, stb.). Különleges mikrogépek tápenergiáját akkumulátor is biztosíthatja ( pl. gépkocsik fedélzeti számítógépei, meteorológiai mérésadatgyűjtők stb.) 2.5. A busz-rendszer A mikroprocesszor közvetlen környezetét a különböző memóriák, programozható perifériák, illesztő-, és processzorvezérlő egységek alkotják. A környezet elemei közötti adatmozgás, és egyéb műveletek jelei a BUSZ vonalakon keresztül történik. Elvi felépítését láthatjuk a 1.ábrán. A DATA (adat) buszon kétirányú adatmozgás lehetséges. A cél, vagy a forrás mindig a processzor. Az ADRESS (cím) busz vonalain adja ki a processzor azt a címet (programszámláló tartalmát) ahonnan, vagy ahová az adat átvitelre kerül. A címbusz vonalszáma (szélessége) határozza meg a csatlakoztatható maximális memóriakapacitást. Például ha 16 bites címzés 2 16 bájt, azaz 64 Kbájt elérését teszi lehetővé. A vezérlő vonalak, vagy CONTROLL "busz" változó számú vonala miatt igazában nem nevezhető busznak. Ezeken a vonalakon keresztül vezérli a mikroprocesszor a kiválasztott adatmozgatást. 3. A mikroprocesszor A mikroprocesszor olyan integrált áramkör, amely egy digitális számítógép központi egységének ( CPU - Central Processor Unit ) alapvető feladatait látja el. Az Intel cég 8080 típusjelű első mikroprocesszora 1973-ban került a piacra. A mai napig számtalan változatot fejlesztettek ki, amelyek közül a legismertebbek a 8085, 8086, 80286, 80386, 80486, 80586 (pentium), és a sor folytatódik. A mikroprocesszorban - gyártótól, és típustól függetlenül - megtalálhatók a utasítás dekóder és ciklus vezérlő, aritmetikai-logikai egység ( ALU), regisztertömb ( Accumulator, operatív-, és átmeneti tárolók ), Stack mutató ( Stack-pointer SP), Program számláló ( PC ), időzítő és vezérlőegység, adat-, és címbusz meghajtók. 19

A továbbiakban az Intel 8085 típusú mikroprocesszor felépítését tárgyaljuk. A mikroprocesszor blokk-sémája látható a 8. ábrán. 8. ábra 3.1. Utasítás feldolgozó A soron következő - Fetch ciklusban - beolvasott utasítás egy regiszterbe íródik, amelyhez csatlakozó utasítás dekóder " értelmezi " az utasítás kódot, vagyis előállítja az utasítás végrehajtásához szükséges belső vezérlőjeleket. 3.2. Aritmetikai - logikai egység ( ALU ) A mikroprocesszor az utasításban előirt aritmetikai (ÖSSZEADÁS, KIVONÁS), valamint logikai (ÉS, VAGY, KIZÁRÓ-VAGY, és TAGADÁS) műveleteket az ALU (Arithmetic Logic Unit) műveleti egység végzi. A műveleti egységhez tartoznak az Accumulator (ACC) a Flag (jelző), és az átmeneti (temporary) 8 bites regiszterek. A legtöbb műveletvégzés előtt az egyik operandusz -t az ACC -be kell vinni, a másik operandusz a regiszter tömbben, vagy a külső memóriában, illetve a programban kell legyen. A művelet eredménye az ACC -be kerül, és egyúttal állíthatja a jelző (flag) regiszterben lévő feltétel biteket. Ezek a bitek Zero 1 ha az eredmény 0, Carry 1 ha az eredmény túlcsordul, Sign 1 ha az eredmény negatív, Parity 1 ha páros számú egyes van az akkumulátorban, AC (Auxiliari carry - közbenső átvitel ) 1 ha az alsó négy bitről van átvitel. 20

3.3. Regiszter - tömb A processzorban van egy irható, olvasható memória, amely egyrészt bájtos (8 bit), másrészt szavas (16 bit) szervezésű. A B, C, D, E, H, L jelölésű hat különálló bájtos regisztert jelent. Ugyanezek regiszterpár -ként is elérhetők a BC, DE, HL jelölésekkel. További két regiszterpár a Stack-pointer (SP), valamint a Program-számláló ( PC ). Ezek mindig címet tárolnak. Az SP tárolja a Stack- ( zsák ) memória aktuális címét. A PC-ben van a soron következő programbájt címe. 3.4. Busz illesztés A mikroprocesszor és a környezete közötti adatforgalom a buszrendszeren keresztül történik. A processzor a DATA (adat) buszhoz kétirányú, míg az ADRESS (cím) buszhoz egyirányú (kifelé irányított) buszmeghajtó - tri-state - illesztő áramkörökön csatlakozik A két busz lábkiosztása részben átfedett. Az adatbitek, és a cím alsó 8 bitje azonos lábakon (AD0...AD7) jelenik meg. Míg a cím felső 8 bitje külön lábakon (A8.. A15) van kivezetve. A közös lábakon kivezetett adat-, és címbitek szétválasztásához egy külső tároló (8 bites Latch) szükséges. Ebbe az ALE (Address Latch Enable ) jel írja be ciklus elején kiadott címbiteket. A vezérlő vonalak, vagy CONTROLL "busz" változó számú vonala miatt igazában nem nevezhető busznak. Ezeken a vonalakon keresztül valósul meg az egész rendszer - pl. adatcím szétválasztás ( ALE ), az írás ( WR), vagy az olvasás (RD) - vezérlése. A processzort vezérlő jelek biztosítják a működés időbeli ütemezését (CLOCK, READY), alaphelyzetbe állítását (RESET), a busz használatának átadását másik processzornak, vagy DMA vezérlőnek (HOLD, HLDA), megszakítás kérések fogadását ( INT,TRAP, stb.), visszajelzését (INTA). 3.5. Időzítő - vezérlő egység Az időzítő - vezérlő egység fogadja a processzort vezérlő jeleket és előállítja a rendszer működését vezérlő jeleket. A kiadott jelek egy része tri-state illesztésű. 3.6. A processzor megszakításkezelése A mikroprocesszorok a programban megirt sorrendben hajtják végre az utasításokat. Az előre ismert, és jól definiált műveletek sorrendje viszonylag könnyen irható le. Sok esetben a feladat olyan, hogy a mikrogép -nek egy külső esemény bekövetkeztekor abba kell hagynia az éppen futó program végrehajtását, és az eseménytől függő más programot kell futtatnia. Ezt a folyamatot nevezzük program-megszakításnak (interrupt). Alapvetően az alábbi két megszakítási eljárást alkalmazzák: egyik módszernél a megszakítás kérése, és elfogadása után a külső vezérlő adja meg azt a címet, ahonnan a processzornak hívnia kell az un. megszakítás szubrutint. E módszernél a megszakítást kérő jel érkezik az INTR bemenetre. A kérés elfogadása után a processzor adja az INTA jele(ke)t, amelynek hatására az adatbuszon kapja meg a cím bájtjait, 21

a másik eljárásnál minden megszakításkérő bemenethez (TRAP, RST 5.5, RST 6.5, RST 7.5) egy-egy adott cím tartozik, és a processzor innen hívja az aktuális megszakítás-rutint. 3.7. Memória írás, olvasás A memóriák funkcionálisan két csoportba sorolhatók. Az egyik a programot (PM ), a másik pedig az adatokat, és változók értékét tároló un. adatmemória (DM). A processzor a programmemóriából olvassa ki az utasítás-kódokat, illetve a programban foglalt adatokat és címeket. Erre a memóriaterületre írás sohasem történik. Az adatmemória tartalmát a processzor olvassa is, és írja is. A memória kezelést az IO/M jelű vezérlő vonalának 0 szintjével jelzi. Egy bájt írása, vagy olvasása egy un. gépi ciklus alatt történik, amely az órajel periódusidejével megegyező ütemekből ( T1, T2, T3, stb ) áll. A memória, illetve periféria olvasás időzítését szemlélteti a 9. ábra. CLK IO/M A8 A15 A0-A7..D0- D7 ALE RD READY 9. ábra A T1 (cikluskezdő) ütemben a címbitek, az IO/M (periféria/memória választó), és az ALE (címtároló) jelek kerülnek a megfelelő vonalakra. A T2 - ben kerülnek a buszra az adatbitek, és az írást (WR=0), vagy olvasást (RD=0) vezérlő jelek. Ugyanekkor vizsgálja meg a processzor a READY várakozást kérő bemenetet. Ameddig ez aktív (0 szintű) un. várakozási ütemet (Tw) következnek. A T3 ütemben - a vezérlőjel felfutó élénél - történik az adatok beolvasása a processzorba (olvasási ciklus), vagy a memóriába (írási ciklus). 3.8. Periféria írás, olvasás A leggyakrabban alkalmazott programozható perifériák az időzítő, a megszakítás-vezérlő, a kommunikációt (soros, párhuzamos) végző, és különböző bites, vagy bájtos portok. A portok rendszeren belüli, vagy más rendszerekhez történő illesztést is elláthatják. A memória, illetve periféria írás időzítését szemlélteti a 10.ábra. 22

CLK IO/M A8 A15 A0-A7..D0-D7 ALE WR READY 10. ábra A processzor periféria írásakor, vagy olvasásakor csak 8 bites címet küld a buszra, és ezt mind a címbusz alsó-, mind pedig a felső 8 bites részén egyformán. Ily módon 256 különböző cím lehetséges. Az IO/M vonal ekkor 1 szintű. Miután az írást a WR, az olvasást pedig a WR jel vezérli, ezért azonos címen egy kimeneti-, és egy bemeneti - 8 bites - periféria érhető el. A periféria írási-, és olvasási gépi ciklusok időzítése megegyezik a memória elérési gépi ciklusokéval. 4. Memóriák, és illesztésük A következőkben röviden áttekintjük a használt, félvezető alapú memóriák általános felépítését, legfontosabb változatait, címzési módját. A leggyakrabban használt bájt szervezésről beszélünk alapvetően. Az ilyen memóriában tárolt adatok bájtonként (8 bit) olvashatók, vagy írhatók. Nem térünk ki azokra a memóriákra, amelyeknél a tárolt információ egyes bitjei közvetlenül érhetők el. 4.1. A memóriák elvi felépítése A 11. ábra szemlélteti egy memória (chip) alapvető részeit. 11. ábra 23

A tároló-cellák ba kerülnek beírásra a tárolni kívánt információk, adatok.a tárolás történhet bit -es, vagy bájt -os egységekben A dekóder választja ki a - címek (A 0, A 1, A n-1 ) alapján - meghatározott adatot. Az adatbusz illesztőn keresztül jut a kiválasztott helyről az adat a buszra, vagy fordítva. A leírt memória-felépítés elvileg minden változatnál azonos. Lényeges különbség a tárolandó információ (adat) beírási módja között van. Ezek alapján különböztetjük meg a csak olvasható (fix), és az írható-olvasható tárolókat. A következőkben áttekintjük e-memória változatok lényeges tulajdonságait. 4.1.1. Csak olvasható (fix) memóriák A fix memóriák megnevezés arra utal, hogy a tárolt adatokat csak olvasni lehet a mikrogép -ben futtatott alkalmazói programban. Az adatok beírása csak programozó egységgel végezhető. A beírás történhet maszkolással, a memória gyártása során, amelyet ROM nak (Read Only Memori csak olvasható memória) nevezünk, a felhasználó által, de csak egyszer programozhatóak a PROM ok (Programabble Read Only Memori programozható csak olvasható memória), a felhasználó által többször is programozhatóak az EPROM ok (Erasable Programabble Read Only Memori törölhető, és programozható csak olvasható memória), illetve az EEPROM ok ( Electrical Erasable Programabble Read Only Memori elektromosan törölhető, és programozható csak olvasható memória). Az EPROM ban tárolt adat törlése - a tok tetején lévő quartz ablakon keresztül - meghatározott hullámhosszú UV sugárral végezhető ( napoztatás ). Az EEPROM adatai elektromos árammal törölhetőek ki, a készülékből való eltávolítás nélkül. A következőkben röviden tekintsük át a fix memóriák egyes részegységeinek feladatát, működését. A dekódoló egység Feladata, hogy a címbemenetekre (A 0 A n-1 ) adott bináris kód dekódolásával, 1 az n-ből kóddá alakításával kiválasszon egy memória-egységet, bájtot, vagy bitet. A címbemenetek száma n, határozza meg a memória kapacitását, vagyis hány egységnyi információ tárolható benne. A memória cellák Az ismertetett változatok bájtos-memóriacelláinak elvi megvalósítását szemléltetjük a 6. ábrán. Mindhárom változatnál mátrix elrendezést rajzoltunk. A dekóder a sor-vezetékek egyikére ad csak 0 szintet. Az oszlopvezetékek mindegyike ellenálláson keresztül az 1 szintű tápfeszültségre (U t ) csatlakozik. A sor-oszlop keresztpontjait vagy összekötik, vagy nem. A rövidzár, vagy hiánya adja a tárolt információ egy bitjének az értékét. A 12.a.ábrán a ROM felépítését láthatjuk. A dekódoló által kiválasztott sornál (bájtnál) azokra az oszlopvezetékeken lesz 0 szint amelyeknél a gyártás során felvitt - összekötő vezeték van, a többi pedig 1 szintű lesz. Az így beprogramozott bájt jut a belső adatbuszon az illesztő egységre. Az illesztő egység kialakítása hogy invertáló, vagy 24

nem invertáló - határozza meg, milyen szintű lesz az engedélyező jel időtartama alatt az adatbusz egyes vezetékeire jutó jel szintje. A 12.b.ábra a PROM felépítését mutatja. Gyárilag mindegyik sor oszlop keresztpontban van összekötő vezeték, vagyis mindegyik bit azonos értékű. A rövidzárak könnyen olvadó fémből készülnek. A felhasználás előtt egyszer programozható a memória azáltal, hogy kiolvaszthatók a szükséges összekötök. Ily módon a tárolandó információt a felhasználó viheti be a chip -be. Hibás programozást már nem lehet módosítani! A 12.c.ábrán az újra programozható fix-memóriák - EPROM, illetve EEPROM - kialakítása látható. Mindegyik keresztpontban van egy FET, amelyeknél a vezérlő elektróda (Gate) egy sziget, amelyekbe bevihetők elektromos töltések (elektronok, vagy lyukak), illetve onnan kitörölhetők. A töltés-bevitel mindig elektromosan történi, amit beégetésnek is nevezünk. A szigetekben tárolt töltések kitörléséhez szükséges energiát vagy UV sugárzással (EPROM), vagy elektromos áram révén (EEPROM) visszük be. Azok a tranzisztorok vezetnek, amelyeknél a vezérlőelektróda töltött, a többi viszont szakadás. A működés további része teljesen megegyezik a ROM, és PROM működésénél leírtakkal. a. b. c. 12. ábra A BUSZ illesztő Mindegyik memória típusnál a kiválasztott információ tri-state kapukon keresztül kerül engedélyező jelek hatására - az ADAT BUSZ egyes vezetékeire. Az illesztés egyik változatának elvi kapcsolási rajza látható a 13.ábrán. 13. ábra 25

Az adatátvitelt két jel együtt engedélyezi. Az EN -el jelölt jel az un. chip-enable CE (tok engedélyező), vagy máskép chip-select CS (tok kiválasztó). A tok olvasásának engedélyezését a címekből állítja elő egy dekódoló logika. Az olvasó jelet RD (Read) a mikroprocesszor küldi a vezérlő buszra. A memória-tokoknál ezt az engedélyező bemenetet OE (Output Enable) jelöléssel adják meg. A legtöbb memória típusnál mind az olvasó OE, mind pedig a tok kiválasztó CE (CS) bemenetek aktív szintje a nulla. 4.1.2. Írható, olvasható memóriák A számítógépen futó alkalmazói programból írható-olvasható memóriákat nevezik RAM - nak. A jelölés a Random Accesse Memori ( véletlen hozzáférésű memória) megnevezésből adódik. A véletlen hozzáférés arra utál, hogy a memória egységek teljesen egyformán érhetők el. Találkozhatunk a RWM (Read Write Memori) elnevezéssel is, amely az írhatóolvasható tulajdonságot jelöli. A 14.a. ábrán a RAM tároló celláinak elrendezése, a b. ábrán pedig a tároló cellák felépítése látható. Minden bitet egy-egy félvezető alapú D flip-flop tárol. Az egyes tárolók írását, illetve olvasását a dekódoló egység Ki jele készíti elő. A flip-flop beírását a C b billentő jel végzi. Mind az írás, mind pedig az olvasást a külső vezérlőjelek a busz illesztőn keresztül hajtják végre. a. b. 14. ábra A 15.ábra szemlélteti egy RAM busz-illesztő egységének felépítését. A kiválasztott bájt bitjeinek írását a C b jel végzi, amelyet az EN engedélyező és a WR író jel állít elő, és egyúttal engedélyezi a külső adatbusz jeleinek fogadását. 15. ábra 26

Az adat olvasása pedig az EN engedélyező, és a RD olvasó jelek hatására történik, amikor is a kiválasztott bájt egyes bitjeinek értékét a tri-state kapuk a külső adat-buszra csatolják. 4.1.3. Memóriák illesztése A mikrogépek -ben különböző típusú, illetve kapacitású memória-tokok vannak. Ezek elérése a CPU felől az eltérő címük alapján történik. A 17.ábrán egy példa segítségével szemléltetjük a különböző memóriák címzését, illesztésüket a CPU -hoz. 16. ábra Az ábra szerinti példán a CPU hoz (IC1) két 27128 típusú EPROM (IC2, IC3), és két 6164 típusú RAM (IC4, IC5) illeszkedik. Az egyes memória-tokok kapacitása címbitek száma alapján állapítható meg. Az EPROM kapacitása 16 kbájt, mivel 14 címvezetékkel (A 0 A 13 ) választható egy memória egység a tokon belül. k = 2 14 = 16384 A RAM nak 13 címvezetéke (A 0 A 12 ) van, tehát a kapacitása 8 kbájt. Az egyes tokok közötti választást a nem használt címbitek kombinációi alapján lehet kialakítani. A példában az A 15, és az A 14 bitek négy kombinációját állítja elő az IC6 jelű dekódoló (SN74LS139). A kapcsolásban használt négy memória-tok címzési tartományait foglaltuk össze a következő táblázatban. A tokon belüli címzéshez használt címbitekhez írt x jelenti azt, hogy az 0, vagy 1 értékű is lehet. A RAM nál az A 13 bit nincs felhasználva sem a tokon belüli, sem a tokok közötti választáshoz, ezért ezt n el jelöltük. Mivel a bit mindkét lehetséges értékénél ugyanaz a tok érhető el, ezért nem teljes a dekódolás. Amikor ez nem okoz hibát, az ilyen dekódolás megengedett, mert kevesebb áramkört alkalmazhatunk. tok A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 1 Cím IC2 0 0 x x x x x x x x x x x x x x 0000H 3FFFH IC3 0 1 x x x x x x x x x x x x x x 4000H 7FFFH IC4 1 0 n x x x x x x x x x x x x x 8000H 9FFFH A000H BFFFH IC5 1 1 n x x x x x x x x x x x x x C000H DFFFH E000H FFFFH 27

A teljes dekódolás hiánya miatt a RAM -ok minden bájtja két címen is hozzáférhető!! 4.2. Perifériák illesztése a mikrogép -hez A mikrogépek feladata, hogy különböző függetlenváltozók bemeneti jelek -értékeitől függően, kimeneti jelekkel függő változók - működtessen készülékeket. A bemeneti, és a kimeneti jelek egyaránt lehetnek digitálisak (kétértékű), illetve analógok (folytonos, kvantált stb.). A tantárgy keretében csak a digitális jelek illesztésével foglalkozunk. Perifériákat illesztő áramkörök alapvető feladatai: a csatlakozó periféria adatvonalainak összekapcsolása az ADAT busszal, szint-, és teljesítmény illesztés, potenciál-leválasztás (esetleges). A következő részekben a legegyszerűbb, de alapvető illesztési megoldásokat tekintjük át. 4.2.1. Bemenetek (input) illesztése A mikrogép -be érkező jeleket illesztő áramkörök leggyakoribb megoldása a bájtos szervezés. Gondoskodni kell a bejövő jelek potenciál illesztéséről, szűréséről, és a megfelelő időpontban történő mintavételezésről. A 18. ábra szerinti áramköri kapcsolás egy adat mintavételezésére mutat példát. 17. ábra Az ábrán a tri-state kaput az IO/RD jel nyitja, amely akkor 0 szintű, ha a periféria (I/O) kezelése engedélyezett és olvasó jel (RD) van. A bemenetei jelet egy nyomógomb adja, amely csak megnyomáskor szolgáltat zárt áramkört. Elektronikus áramkörökben szakadás nem engedhető meg. Az R f felhúzó ellenállás biztosítja, hogy a kapu bemenetén állandóan legyen feszültségszint. Amikor nincs lenyomva a BE gomb, akkor 1 szintű a bemenet, és ezt is olvassa be a BUSZ ra a mintavételező jel. A gomb lenyomott állapotát 0 szint jelzi. A bemenet zajszűréséhez RC tagokat alkalmaznak, és szűrő. 4.2.2. Kimenetek (output) illesztése A mikrogép -hez kimenetei a csatlakozó készülékeket (kijelzők, relék, stb.) működtetik. A vezérelt készülék határozza meg illesztés feltételeit, vagyis a szint-átalakítás jellegét, a teljesítmény-átvitel mértékét, 28

potenciál illesztés kívánalmait. Minden típusú kimeneti illesztő egységben van tartó áramkör, mivel a mikrogép a kimeneti jeleket programciklusonként csak egyszer frissíti. Két jelfrissítés között minden bit értékét tárolni kell! A kimeneti jel illesztésének egy elvi kapcsolási vázlata látható a12.ábrán. 18. ábra A tartó áramkör (D flip-flop) mindig azt az értéket tárolja, amely az IO/WR jel 1-0 átmenetekor érvényes adat. A tárolt értéket az EROSIT jelű 0 szintre aktív nyitott(open)- kollektorú erősítő kapcsolja a kimenethez csatlakozó RELÉ tekercséhez. Mivel az erősítő invertál, ezért az 1 szintű tárolt értéknél húz meg a relé. 4.2.3. Perifériák címzése A perifériákat illesztő áramkörök alapvetően kétféle megoldás szerint kapcsolódnak a CPU környezetébe. A megoldások: a memóriába ágyazott, illetve a önálló perifériaként. A mikroprocesszorok az IO utasításaikkal - külön is kezelhetik a periféria-elemeket, ugyanakkor a RD/WR vezérlőjelek is használhatók egy-egy diszkrét regiszter, vagy tri-state kapu vezérléséhez. Az utóbbi megoldást nevezzük memóriába-ágyazásnak (memorymapped). A mikrokontrollerek többsége csak memóriába-ágyazott perifériakezelést tud vezérelni. A 20.ábrán egy 8 bites bemeneti tri-state kapu (SN74541), és ugyancsak 8 bites tart áramkör (SN74573) illesztése a DATA BUS -hoz.. 19. ábra A következő fejezetekben, illetve a mérési gyakorlatok során több áramköri változat megismerésére is mód nyílik. 29

5. A mikrokontroller A mikrokontroller egyetlen közös áramkörbe (chip -be) integrált csökkentett utasításkészletű mikroprocesszor és több periféria áramkör. A több cég által is gyártott 8031/51 típusú mikrokontrollerben a következő perifériák találhatók: (21. ábra) két 16 bites időzítő/számláló ( T0, T1 ), négy 8 bites - bitenként is kezelhető - Port ( P0, P1, P2, P3 ), 128 bájt belső memória ( RAM ), 128 bájt SFR memória ( RAM ), 4 Kbájt programmemória ( ROM csak a 8051 típusban), RS 232 szabvány szerinti soros vonalillesztő, megszakítás vezérlő egység, 20. ábra 5.1. A 8051 mikrokontroller család A 8051 mikrokontroller családnak különböző típusú mikrokontrollerei vannak. A család alaptípusa a 8031/51 kontroller. A továbbfejlesztett változatok mindegyikében változatlanul benne van az alaptípus minden eleme, és további perifériákat is tartalmaz, vagyis működésben felülről kompatíbilisak. A család minden tagjának azonos az utasításkészlete. A bővített perifériák miatt több SFR regisztert, illetve megszakítást használható. A kontroller család elemeit több cég is ( Siemens, Philips, Dallas, Atmell stb. ) gyártja és forgalmazza. Néhány elterjedt típus és periféria bővítései : 8032/52 3. időzítő/számláló (T2), 80C552 3.idözítő/számláló (T2), Watchdog számláló (T3), 8 csatornás (10 bites) A/D átalakító, 30

2. soros vonalillesztő ( I 2 C busz ), két PWM modulációs kimenet. 80515/535 3.idözítő/számláló (T2), 8 csatornás (8 bites) A/D átalakító, programozható referencia-feszültség, 2. soros vonalillesztő ( RS232 ), 5.1.1. A CPU és regiszterei A mikrokontroller központi műveletvégző és vezérlő egysége ( CPU ) - a tulajdonképpeni mikroprocesszor rész - hajtja végre az utasításbeolvasás -t, és "értelmezés"-t, az aritmetikai-, és logikai műveleteket, a belső működés - utasítástól függő - vezérlését, a külső vezérlőjelek generálását. A CPU működését közvetlenül támogató SFR regiszterek: az akkumulátor ( ACC ) a műveletek operandusz-, és célregisztere, a státusz-regiszter (PSW),a műveletek eredményétől függő feltétel bitek tárolója, a stackpointer ( SP ), tárolja a stack memóriába utoljára letárolt információ címét, a program számláló ( PC ), tárolja a következő utasítás-bájt címét. a B regiszter, a szorzás, ill. osztásnál az egyik operandusz-, és célregiszter. 5.1.2. Belső memória A 8031/51 típusban 128 bájt - míg a család többi tagjában 256 bájt - méretű operatív belső memória és 128 bájtos SFR memória van. (22. ábra) 21. ábra A belső operatív memória - címsorrendben - a következő részekre tagozódik: 31

az alsó 32 bájt ( 00H - 1FH ) négy 8 bájtos Regiszter Bank - ra oszlik ( BANK0, BANK1, BANK2, BANK3 ), a következő 16 bájt ( 20H - 2FH ) bit-címezhető memóriaterület, a további címeken ( 30H - 7FH az 51-es típusnál, illetve 30H - FFH a többi kontrollérnél ) általános felhasználású memória. Az SFR jelölésű memóriaterület ugyancsak a 80H - FFH címen helyezkedik el, de címzési módja különbözteti meg az ugyanezen címtartományban lévő általános felhasználású memóriától A Bankok és használatuk A Bankok közül mindig csak egy - az aktívnak választott - érhető el az utasításban foglalt címzés-el. A kiválasztott bank egyes regisztereit az R0, R1,... R7 szimbólumokkal jelöljük. Az R0, és R1 használható indirekt címzéshez, míg a többi tárolásra, vagy ciklusszervezéshez alkalmazható. A teljes BANK terület bármelyik bájtja direkt címzéssel tetszőlegesen irható, vagy olvasható. A Bank kiválasztása a PSW regiszter RS1, RS0 jelű bitekbe irt értékkel, történik ( a két bites bináris szám adja a Bank számát, pl. RS1 = 1, RS0 = 0 a BANK2 -t teszi aktívvá). A PSW regiszter bitkiosztása a következő: CY AC F0 RS1 RS0 OV - P Az egyes flag -ek, jelző-bitek: CY (carry) az átvitel-, áthozat -bit, amely az aritmetikai műveleteknél jelzi a túlcsordulást, AC az alsó négy bit túlcsordulását jelző bit, a BCD átalakításnál van szerepe, F0 felhasználó által használható jelző-bit, RS0-RS1 határozzák meg az aktuális Bank -ot, OV az aritmetikai túlcsordulást jelzi, P az Accumulator -ban lévő 1 páros számát jelzi (0, ha páratlan számú 1 van). A CY, OV, és P bitek értékétől függően program-ugrásokat lehet végrehajtani. A vonatkozó feltételes vezérlésátadó utasításokat a programozásnál fogjuk ismertetni. A bit-címezhető memória, és használata A bit-címezhető bájtok egyes bitjei külön-külön is írhatók, olvashatók, illetve értékükkel logikai műveletek végezhetők. Az egyes bitek kétféle módon címezhetők, még-pedig bájtcím. bitszám formában pl. 20.5 a 20H című bájt 5-ös bitje ( a bit-szám 0-7 szám valamelyike, 0 az első, 7 a nyolcadik bitet jelenti ), abszolút bitcímzéssel 00H - 7FH címtartományban. A 16 bájtos memóriaterületen lévő 128 ( 16 * 8 ) bit számozása a legelső bájt legkisebb helyértékű bitjénél kezdődik ( 20.0-00H ), majd a következő bit s így tovább, s sor a legutolsó bájt legnagyobb helyértékű bitjével fejeződik be ( 2F.7-7FH ). A bites logikai műveletvégzés lehetősége folytán a mikrokontrollerek nagyon előnyösen használhatók automatizálási (vezérlési) feladatokat megvalósító berendezések (PLC k) építésére. Általános felhasználású memóriaterület 32