Programozás | Programozás-elmélet » Számrendszerek, programozási alapfogalmak

Alapadatok

Év, oldalszám:2001, 27 oldal

Nyelv:magyar

Letöltések száma:392

Feltöltve:2006. december 14.

Méret:463 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

11110 icele 2010. március 24.
  Köszönöm!

Tartalmi kivonat

Számrendszerek, programozási alapfogalmak 2 ( Logikai műveletek, logikai áramkörök, Programnyelvek típusai, elvi megközelítései ) Magyar Iparszövetség Oktatási Központ – József Nádor Közgazdasági Szakképző Iskola Gazdasági Informatikus Szak Bevezetés Jelen összefoglaló célja, hogy megismertesse az olvasóval a számítógépek, mint elektronikus berendezések működésének alapjait, képet adjon a működés alapjáról és a számítástechnika varázslatos világáról. Nem kezdhető és nem is fojtatható sikeres programozói munka anélkül, hogy ne ismernénk az általunk „bűvölt” masina lelkivilágát, ne értenénk annak csínját-bínját. Éppen ezért összefoglalónknak nem célja a számítógép-programozás teljes bemutatása, hanem egy témakört felölelve, a lehetőségekhez képest azt teljes mértékig „kivesézve” tárgyaljuk. A számítástechnika és a programozás igen széles skálájáról szó lesz a logikai

műveletekről és a logikai áramkörökről. Megismerhetjük a bűvös 10010101100 jelentését és remélhetőleg értelmet és tartalmat adhatunk a gyakran hieroglifaként ható kapcsolási rajzoknak. Megismerhetjük továbbá azt a mechanizmust, mivel életet lehelhetünk áramköreinkbe, munkára foghatjuk őket. Az összefoglaló témánként felölelve taglalja az egyes egységeket. Az egyes tartalmi részek logikusan egymásra épülnek, de a modulok önmagukban is értelmes egészet alkotnak a maguk témájában. 1. A logikai műveletek Mi is az a logikai művelet ? Szóismétlésbe bocsátkozok : logikus a kérdés. Hiszen mindennapjainkban sosem kerül elő így, ilyen formán ez a kérdés. Mondhatjuk valakire, hogy jó a logikája vagy éppen logikátlanul gondolkozik, de logikai műveletet nem szoktunk végezni, legalább is nem tudunk róla, hogy éppen azt végzünk. Hiszen emberek vagyunk, és akkor amikor éppen azon meditálunk, hogy végig bírjuk-e olvasni

és írni ezt a dolgozatot, akkor, ott, abban a pillanatban is egy logikai műveletet végzünk : eldöntünk valamit. Így van ez az embereknél, nem úgy a gépeknél. Mi gondolkodunk, a gépek végrehajtanak. Mi hibázunk és kijavítjuk, a gépek nem hibáznak, de a hibát nem tudják kijavítani Nekünk embereknek vannak ötleteink, a gépeknek csak eredményeik. Mi emberek kreatívak vagyunk, a gépek azonban töretlenül mechanikusak. És végül: mi alkalmazkodunk, de a gépek NEM. Látható, hogy nem vagyunk egyformák, és így bizony nekünk embereknek kell a gépekhez alkalmazkodnunk. Nekünk szakembereknek tudnunk kell megértetni magunkat a géppel, nem hibázhatunk Elírok egy szót : barnemedve. Ugye mindenki látja és TUDJA, hogy a barnamedvére gondoltam, mert automatikusan kijavítottuk a hibát. De ezt a gép nem tudja. Ezért mikor a gépnek logikai művelet írunk le nem hibázhatunk Szigorú szabályokat kell betartanunk. De miket és hogyan? Hogy születnek a

logikai műveletek? Mielőtt belekezdenénk a logikai műveletek taglalásába feltétlenül szükséges, hogy megismerjük a fejezetben taglalt jelöléseket, elveket. 2. A gépi logika alapjai A gépek fejlődése során tanultunk az ENIACRÓL, mint a világ első igazán használható (?) számítógépéről. Ez már elektronikus berendezés volt Jelek terjedtek benne Elektronikus jelek És számolt Összeadott, kivont, egyszóval számokkal dolgozott. Van 10 darab számjegyünk. A 0, 1, 2, , 8, 9 És van a gépben villamos áramunk, helyesebben feszültségünk. Egyszerű az elv: Ha nullám van, nulla a számjegyem, akkor a feszültség is legyen nulla, ha egy a számjegyem a feszültség is legyen egy, és így tovább egészen 9-ig, ahol már kilenc volt feszültség lesz. Ez tökéletes és egyszerű gondolatvitel – az elméletben. A gyakorlatban más a helyzet : elektronikus berendezésben kilenc, pontosabban a nullával együtt tíz fajta jelent előállítani, azokkal

dolgozni és egyáltalán megkülönböztetni egymástól gazdaságtalan, 2 bizonytalan és lassú folyamat. Nem beszélve az elektromos zavarról, ami szintén „nem segítené” munkánkat. Úgyhogy ez kiesett Maradt egy másik elv, amit aztán a gyakorlat is igazolt : KÉT ÁLLAPOTUNK legyen csak : vagy van jel ( feszültség ) vagy nincs. Ezt könnyű megvalósítani és elektronikus berendezéseink meglehetősen nagy üzembiztossággal képesek kezelni őket. Úgyhogy van két értékünk a van és a nincs. Ezzel kell gazdálkodni Hogy a logikai műveletek leírása ne legyen egy viccesnek ható, magyartalan, nyelvtani abszurdum, így a „van” és a „nincs” értékekhez hozzárendelünk fogalmakat. Mostantól csak igaz és hamis vagy nulla és egy értékünk van. Az egyes értékekhez tartozó jelöléseket az 1 ábra tartalmazza, az egyes értékeket továbbiakban LOGIKAI SZINTnek is nevezzük. Érték Van Nincs Logikai megfelelője Igaz Hamis Hagyományos

tranzisztor-tranzisztor logika (TTL ) értékei Jelölése 1 0 > 2,7 Volt < 1,4 Volt 1. ábra Nem számítástechnikáéval foglalkozó embereket zavarba ejthet az a tény, hogy már nincs tíz darab számjegyünk, csupán kettő elemmel kell gazdálkodnunk. Azonban mi már a Bevezetés : számrendszerek, programozási alapfogalmak fejezetből tudjuk, hogy a kettes számrendszer segítségével ez a két jel is bőven elegendő. A két jellel műveleteket fogunk végezni, mely eredményeit IGAZSÁGTÁBLÁZATBAN jelenítjük meg. A 2 Ábrán látható, hogy az igazságtáblázat egy olyan táblázat, melynek egyes sorai megmutatják mit válaszol egy áramkör ( függvény, stb ) ha a bemenetére adott kombinációt adunk A bemeneti értékeket mutatató oszlop vagy oszlopok A 0 1 2. ábra Y 1 0 Az áramkör reakcióját, a kimenetét mutató oszlop. A második és harmadik sorban láthatjuk, hogy mit válaszol az áramkör az első oszlopban szereplő bemeneti értékre

( tagadás ) Egy igazságtáblázatban természetesen több bemenő és több kimenő adat is szerepelhet, attól függően, hogy egy áramkör hány bemenettel és hány kimenettel rendelkezik. Általános szempont az, hogy egy logikai áramkör összes bemenetére adható összes kombinációt „illik” vizsgálni, tehát érdemes a bemenetekre adható összes értelmes logikai kombinációt „végigjátszani. Ettől természetesen lehetnek kivételek. 2.1 Az elemi logikai műveletek Elemi logikai műveleteknek nevezzük azokat az „igaz” és „hamis” értékekkel végzett műveleteket, melyek ésszerűen tovább nem egyszerűsíthetőek, nem érdemes azokat más összetevőkből összerakni. 3 2.11 A meghajtás ( buffer ) Ennek a logikai műveletnek szerepe, hogy a bementére adott logikai szint megjelenik a kimeneten is ( 3. Ábra ) 0 1 A 0 1 Y 3. ábra Az igazságábra alapján ennek a műveletnek elméletileg semmi értelme, hiszen „nem dolgozik” a

logikai szintekkel, a kimeneten mindig a bementre adott szint jelenik meg. A gyakorlatban, az elektronikus áramkörökben azonban szükség van erre a műveletre, amikor egy kimenet értékét több bementre akarjuk vezetni. ( lásd logikai áramkörök fejezet ) 2.12 A tagadás ( invertálás, negálás – NOT ) A művelet egy bemeneti értékkel és egy kimeneti értékkel rendelkezik. Szerepe, hogy minden esetben a bemenetre adott érték ellenkezője jelenik meg a kimeneten, tehát letagadja, az ellenkezőjére váltja a bementre adott szintet. A művelet igazságtáblázata a 4 Ábrán látható A 0 1 Y 1 0 2.13 4. ábra A VAGY kapcsolat ( OR ) Ez a művelet már kettő vagy több bementi szinttel rendelkezik, hiszen természetéből fogva két vagy több bemenő érték egymáshoz képesti viszonyát vizsgálja. A VAGY kapcsolat esetében akármelyik és akárhány bemenetre adott logikai 1-es szint esetén a kimenet is logikai 1-es lesz. A kimenet akkor és csak akkor

nulla, ha egyik bementre sem adunk logikai 1-es szintet. Két bemenetű logikai VAGY kapcsolat igazságtáblázatát az 5. Ábra, míg egy három bemenetű VAGY kapcsolat igazságtáblázatát a 6. Ábra tartalmazza A 0 0 1 1 B 0 1 0 1 Y 0 1 1 1 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 5. ábra Y 0 1 1 1 1 1 1 1 6. ábra 4 2.14 A NEM-VAGY kapcsolat ( NOR ) Az előző kettő logikai műveletből, a tagadásból és a VAGY kapcsolatból minden további nélkül összerakható, melyet azonban külön logikai műveletként említünk. Szerepe teljes mértékben a VAGY kapcsolat ellentétje ( hiszen a VAGY kapcsolat kimenetét tagadjuk ), a kimenete akkor és csak akkor lesz NULLA, ha egy vagy több bementre logikai 1 érkezik. Ha az összes bemenet értéke NULLA, a kimenet csak akkor EGY A NEM-VAGY kapcsolat hasonlóan a VAGY kapcsolathoz minimum kettő bementre vizsgálható. Az igazságtáblázatot két bementre a 7 Ábra szemlélteti A 0 0 1 1 B 0 1 0 1 Y 1

0 0 0 7. ábra A NEM-VAGY kapcsolat kialakítását logikai tagadás és logikai VAGY kapcsolatból a 8. Ábra szemlélteti A NEM-VAGY kapcsolat bemenetei A NEM-VAGY kapcsolat kimenete A Logikai VAGY kapcsolat B Logikai TAGADÁS Y 8. ábra 2.15 A logikai ÉS kapcsolat ( NAND ) Az és kapcsolat szintén több bemenettel rendelkezik. Vizsgálja, hogy az összes bementre logikai 1-es szintet adtak-e Kimenet akkor és csak akkor EGY, ha az összes bemenetén logikai 1es szint van Igazságtáblája 2 bemenetre a 9 Ábrán, míg három bementre a 10 ábrán látható A 0 0 1 1 B 0 1 0 1 Y 0 0 0 1 A 0 0 0 0 1 B 0 0 1 1 0 C 0 1 0 1 0 9. ábra Y 0 0 0 0 0 5 1 1 1 0 1 1 2.16 1 0 1 0 0 1 10. ábra A logikai NEM-ÉS kapcsolat ( NAND ) Hasonlóan a NEM-VAGY kapcsolathoz ez is összerakható az ÉS és a tagadás műveletekből. Feladata, hogy kimenete akkor és csak akkor NULLA, ha az összes bementére EGY szintet adtak. Igazságtáblázata két bemenetre a 11 Ábrán

látható A 0 0 1 1 B 0 1 0 1 Y 1 1 1 0 11. ábra A NEM-ÉS kapcsolat kialakítását logikai tagadás és logikai ÉS kapcsolatból a 12. Ábra szemlélteti A NEM-ÉS kapcsolat bemenetei A NEM-ÉS kapcsolat kimenete A Logikai ÉS kapcsolat B Logikai TAGADÁS Y 12. ábra Bár a NEM-ÉS kapcsolat összetett művelet, a logikai áramkörök legfontosabb elemének tekinthető. Segítségével – más logikai elem nélkül – bármilyen logikai művelet ( tagadás, VAGY, NEM-VAGY kapcsolat, stb.) kialakítható, pusztán NAND kapukból elméletileg egy számítógép is összerakható. A különböző logikai kapcsolatok kialakítását NAND kapuból a logikai áramkörök fejezetben taglaljuk. 2.17 A KIZÁRÓ-VAGY kapcsolat ( XOR ) Ez a kapcsolat azt vizsgálja, hogy a bemeneteire egyforma vagy különböző szintet adtunk-e. Egy két bemenetű XOR kapcsolat logikai EGY-el reagál, ha az egyik bemenetén logikai 0, míg a másik bemenetén logikai 1 van. A kimenet hamis, ha

mindkét bemeneten logikai 0, vagy logikai 1 van. Az igazságtáblázatot a 13 Ábra szemlélteti A 0 0 1 1 B 0 1 0 1 Y 0 1 1 0 13. ábra 6 2.18 A NEM-KIZÁRÓ-VAGY kapcsolat ( XNOR ) A NOR és a NAND kapcsolat analógiájára ez is összevont művelet : XOR és NOT eredménye. Feladata, hogy megállapítsa bemeneteire egyforma szintet adtunk-e. Ha az A bemenet = B bemenet, akkor a kimeneti szint igaz lesz, minden más esetben hamis. Igazságtáblázata a 14 Ábrán, míg kialakítása a 15. Ábrán látható A 0 0 1 1 B 0 1 0 1 Y 1 0 0 1 14. ábra Az XNOR kapcsolat bemenetei Az XNOR kapcsolat kimenete A Logikai KIZÁRÓ VAGY kapcsolat B Logikai TAGADÁS Y 15. ábra Számozás nélkül az utolsó műveletnek hagytuk azt az esetet, amikor a kimenet értéke nem függ a bemenő adattól. Ennek az esetnek elméletileg értelme nincs, hiszen a kimenet minden körülmény között ragaszkodik logikai szintjéhez, azt befolyásolni nem lehet. ( „ Csak azért is” kapu )

A gyakorlatban számos esetben előfordul hibás tervezés eredményeként. Igazságtáblázatát a 16. Ábra szemlélteti A 0 0 1 1 2.2 B 0 1 0 1 Y 1 vagy 0 1 vagy 0 1 vagy 0 1 vagy 0 16. ábra Műveletek végzése elemi logikai műveletekkel Az előző fejezetben megismert elemi logikai műveleteket bonyolult logikai hálózatok tervezéséhez használjuk fel. Egy logikai hálózatnak több bemenete és több kimenete is lehetséges, sőt tartalmazhat ún. visszacsatolásokat is, melyek a kimenő (rész)adat függvényében módosíthatják a logikai hálózat bemenő (rész)adatait. Ezért egy logikai hálózat működésének ábrázolása összetett feladat. Általános, hogy a bemenetekre adott összes kombinációra adott „választ” ábrázoljuk egy igazságtáblázatban. A logikai hálózat bemenete és kimenete között LOGIKAI FÜGGVÉNYT írhatunk fel, mely leírja, hogy mit válaszol a logikai hálózat egy bemenő adatra. 7 2.21 A logikai függvények

jelölései • A logikai hálózatok bemenő adatait ( bemeneteit ) az angol ABC nagy betűivel jelöljük. ( A, B, C, ) • A hálózat kimenetét általában Y-al jelöljük. Amennyiben a hálózatnak több kimenet van, úgy az Y 1 , Y 2 , Y 3 , . jelöléseket használjuk • A logikai tagadás jele az invertált érték felé húzott egyenes : „A” negált = A Többszörös tagadás esetén annyi vonalat teszünk a tagadott érték felé, ahány tagadást végzünk „A” negált negáltja : A • A logikai VAGY kapcsolat jele a bemenetek közé tett + jel „A” VAGY „B” = A+B • Az ÉS kapcsolat jele a bemenetek közé tett • jel „A” ÉS „B” = A•B • A KIZÁRÓ VAGY kapcsolat jele a bemenetek közé tett x jel „A” KIZÁRÓ VAGY „B” = AxB • Értelemszerűen a NOR, NAND és XNOR kapcsolatok jelölése az egyes bemenetek logikai kapcsolata felé tett negálás jel ( 17. Ábra ) • A pufferelésnek nincs egyéni jele, szerepe csak

elektronikus áramköröknél van. NOR „A” és „B” bemenetre vonatkoztatott NAND XNOR A+B A•B AxB 17. ábra 2.22 A logikai műveletek alapszabályai Logikai hálózatok tervezésekor számos olyan azonosság ismerete szükséges, ami leegyszerűsíti a munkánkat. A logikai tervezés alapszabályai ( posztulátumok ) az alábbiak : • Logikai 0 negáltja minden esetben logikai 1 (0=1) Logikai 1 negáltja minden esetben logikai 0 (1=0) 8 • • Logikai 0 VAGY logikai 0 minden esetben logikai 0 ( 0+0 = 0 ) Logikai 1 VAGY logikai 1 minden esetben logikai 1 ( 1+1 = 1 ) Logikai 1 VAGY logikai 0 minden esetben logikai 1 ( 1+0 = 1 ) Logikai 0 ÉS logikai 0 minden esetben logikai 0 ( 0•0 = 0 ) Logikai 1 ÉS logikai 1 minden esetben logikai 1 ( 1•1 = 1 ) Logikai 0 ÉS logikai 1 minden esetben logikai 0 ( 0•1 = 0 ) Nevezetes logikai azonosságok : • • • „A” VAGY logikai 0 minden esetben „A” ( A+0 = A ) „A” VAGY logikai 1

minden esetben logikai 1 ( A+1 = 1 ) „A” VAGY „A” minden esetben „A” ( A+A = A ) „A” VAGY „A” minden esetben „1” ( A+A = 1 ) „A” ÉS logikai 0 minden esetben logikai 0 ( A•0 = 0 ) „A” ÉS logikai 1 minden esetben „A” ( A•1 = A ) „A” ÉS „A” minden esetben „A” ( A•A = A ) „A” ÉS „A” minden esetben „0” ( A•A = 0 ) „A” negált negáltja minden esetben „A” (A=A) de Morgan szabály : A de Morgan szabály kimondja, hogy minden („A” ÉS „B”) negált helyettesíthető „A” negált VAGY „B” negált kapcsolatával. Leírásszerűen : A•B = A + B A törvény „fordítva” is érvényes : minden („A” VAGY „B”) negált helyettesíthető „A” negált ÉS „B” negálttal. Leírásszerűen : A+B = A • B Kommunativitási ( felcserélhetőségi ) szabály : A szabály kimondja, hogy minden VAGY és ÉS kapcsolat elemeinek sorrendje lényegtelen, azok egymással

felcserélhetők ( kommunatívak ) A+B = B+A és A•B = B•A Disztributivitási ( szétoszthatósági ) szabály : 9 Kimondja, hogy minden egymás mellett szereplő azonos típusú, egyazon és különböző változókat egyaránt tartalmazó logikai műveletek tetszés szerint összevonhatóak, illetve szétoszthatóak ( felbonthatóak ). A•(B+C) = A•B+A•C A•B+A•C = A•(B+C) A+B•C = (A+B) •(A+C) (A+B) •(A+C) = A+B•C Asszociativitási ( sorrendiségi ) szabály : Kimondja, hogy egy típusú logikai műveleten belül az egyes részműveletek elvégzésének sorrendje közömbös. A+(B+C) = (A+B)+C A•(B•C) = (A•B) •C A fenti szabályokból következőleg az alábbi tételek állapíthatók meg : A• (A+B) = A Bizonyítás : A disztributivitás felhasználásával felbontjuk az azonosságot : A•A + A•B = A A•A mindig A, így az azonosság a következőképp egyszerűsödik : A + A•B = A A VAGY kapcsolat két oldalából szintén a

disztributivitás felhasználásával kiemeljük az A-t A• (1 + B) = A 1 + B mindig 1, így tovább egyszerűsítünk : A•1 = A Tudjuk, hogy A és 1 mindig A, ezért : A = A, tehát helyes a megállapításunk. Az előző elv alapján, rendre bizonyíthatók az alábbi összefüggések is : A• (A+B) = AB A+A•B = A+B (A+B) • (A+C) = A+B•C 10 A logikai műveleteknél figyelemmel kell lenni az egyes művelettípusok végrehajtási sorrendjére. Az A+B•C műveletsorban hiába áll hátul az ÉS kapcsolat, mégis elsőként kell számolni vele. A sorrend megváltoztatható a matematikából ismert zárójellel : (A+B) •C 2.23 Logikai műveletsorok megoldása Az egyes logikai műveletsorok megoldásának legkézenfekvőbb megoldása a bemeneti és kimeneti adatok igazságtáblázatban való ábrázolása. Ilyenkor az összes lehetséges bemeneti kombinációt rendre „rápróbáljuk” a hálózat bemenetére, majd figyeljük a kimenet(ek) alakulását. Példaképp

ábrázoljuk az Y = (A + B) • (C+D) függvényt. A négy bemenő adat miatt 24, azaz 16 bemeneti variációnk lesz. A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 Először a két zárójelbe tett műveletet hajtjuk végre : A+B, tehát 0 vagy 0 = 0, C vagy D, azaz 0 vagy 0 szintén 0. Tehát az ÉS kapcsolat két oldalán is logikai nulla van, így az eredmény is nulla lesz. A számolást a többi sorban is hasonló elven folytatjuk le. Az igazságtáblázat felvétele jól szemlélteti a hálózat bemeneteire adott válaszait, de nem alkalmas egy bonyolult hálózat működésének megértésére, leírására és egyszerűsítésére. Sokkal inkább alkalmas a hálózat egyszerűsítésére az ún. KARNAUGH TÁBLA Itt az ábrázolás nem egyszerűen táblázatban, soronként, hanem Karnaugh táblában tünteti fel az egyes bemeneti kombinációhoz

tartozó értékeket. A Karnaugh tábla kétdimenziós táblázat, ahol az egyes oldalakon az egyes változókhoz tartozó összes variáció fel van tüntetve. ( 18 Ábra ) C változó 2 lehetséges variációja 11 C AB 00 01 11 10 0 0 0 0 0 1 1 1 0 0 C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 A és B változó négy lehetséges variációja Mindegyik kimeneti adat a neki megfelelő cellába kerül. Y 0 0 0 0 1 0 1 0 A 18. Ábra magyarázza a Karnaugh tábla felépítését és kitöltését Az ábrán látható, hogy a Karnaugh tábla mátrixszerűen ábrázolja a lehetséges bemeneti adatok mellett fellépő kimeneti értékeket. A Karnaugh táblából a következő olvasható le : C AB 0 1 00 01 11 10 0 0 0 0 1 1 0 0 A két szomszédos cella minden esetben csak egyetlen változó ( bemeneti adat ) értékében különbözik. Megfigyelhető, hogy ebben az esetben a „B” változó értéke akár NULLA, akár EGY a „C” változó értéke itt mindig egy.

Mivel a két egymás melletti cella a „B” értékben különbözik ( B=0, majd B=1 ), ezért a két egymás melletti cella összevonható. Ezeket, az egymás melletti, azonos kimeneti értékeket tartalmazó cellákat mintermeknek nevezzük. A logikai műveletek végzésének színterei az elektromos áramkörök. A továbbiakban ezek felépítését, rajzait és fajtáit részletezzük. 3. A logikai áramkörök Logikai áramkörnek nevezünk minden olyan elektromos eszközt, amely működése során a logikai műveleteknél taglalt két értéket vesz fel. Az áramkörök lehetnek : • egyszerű kapcsolós logikák • dióda-dióda áramkör • dióda-tranzisztor áramkör (DTL) 12 • • tranzisztor-tranzisztor áramkör (TTL) FET tranzisztor – FET tranzisztor áramkör ( CMOS ) A felsorolásból látható, hogy gyakorlatilag a konyhai világítás is logikai áramkörnek tekinthető, mivel működése során két értéket vehet fel ÉG A VILLANY NEM ÉG -

logikai 1 logikai 0 A gyakorlati életben a TTL és CMOS technológia és ezek altípusai terjedtek el. A különböző logikai alapesetek és gyakran előforduló felhasználói igények kielégítésére az egyes logikai műveletekhez szükséges elektronikus alkatrészeket egyetlen integrált áramkörbe ( IC ) sűrítik össze. A gyakorlatban ez egy tokon belül akár több logikai elemet is jelenthet. Az ilyen, egy IC-n belüli logikai kapcsolatokat KAPUKNAK, míg a logikai integrált áramkörökből felépített kapcsolást DIGITÁLIS áramkörnek nevezzük. Az egyes integrált áramkör típuscsaládokat az alábbiak jellemzik : Tápfeszültség Logikai nulla szint Logikai egy szint Működési sebesség IC-k általános típusjelzése TTL 5.0V < 0.4V > 2.8V Átl. 10nsec 74Hxx 74LSxx 54Hxx CMOS 318V < U T 30%-a > U T 70%-a Átl. 40nsec CD40xx CD45xx 74Cxx Az elektromos áramkörök fontos tulajdonsága, hogy a kimenetük mennyire terhelhető és hogy a

bemenetük mekkora terhelést jelent. Ha egy kapu egy bemenetének terhelése egy egység, és a kimenetek terhelés-tűrése 10 egység, úgy egy kapu maximum 10 másik kapu bemenetét vezérelheti. Ennek a problémának kiküszöbölésére hozták létre a már ismertetett puffer kapukat, melyeknek egy beés egy kimenetük van. Mint a pufferek igazságtáblázatából ( alapelemek fejezet ) látható a kimeneten ugyanaz a jel jelenik meg mint a bemeneten, de míg a bemenet csak egy egység terhelést jelent, úgy a kimenet képes akár 30 egységnyi terhelés meghajtására is. ( Egyfajta erősítő ) A digitális áramkörök felépítését kapcsolási rajzon láthatjuk, mely az egyes logikai elemek összekapcsolását ( viszonyát ) rajzjelekkel jelöli. 3.1 A logikai elemek rajzjelei A logikai áramköröket szabványos jelölésekkel ábrázoljuk. A 19 Ábrán az általános logikai elemek rajzjelölései és azok részletei láthatók Logikai meghajtó ( puffer ) 13

Inverter VAGY, ÉS, Kizáró VAGY kapuk, az ábra „belsejében” lévő jelzéstől függően NOR, NAND, XNOR kapuk, az ábra „belsejében” lévő jelzéstől függően A kapuk bemenetei Kimenet, a kimenet előtt látható karika az invertálást ( INV, NOR, NAND, ) jelzi. A kapu jellegét meghatározó jelölés helye • Puffer : > • VAGY : 1 • ÉS : & • Kizáró VAGY : <= Az inverter jele : 1 19. ábra A logikai áramkörök ábrázolása a szabványos rajzjelek felhasználásával történik, oly módon, hogy a szükséges összeköttetéseket folytonos egyenes vonallal jelöljük. ( 20 Ábra ) OR NAND 20. ábra A 20. Ábra felhasználásával meghatározhatjuk egy logikai hálózat igazságtábláját A három bemenetet elnevezzük A, B, C –nek, a kimenetet Y-nak. A szemléltetés kedvéért két részkimenetet ( Y 1 , Y 2 ) is megkülönböztetünk, ezek szerep az lesz, hogy az igazságtáblázat felvételekor a hálózat belsejében lévő

szintekről is tájékoztatást adnak. A B C Y1 14 Y2 Y Az igazságtáblázat felvétele úgy történik, hogy sorjában rápróbáljuk a lehetséges kombinációkat a bemenetekre, majd végigkövetjük a szintek alakulását. 1. lépésként mind A, mind B és mind C bemenetre NULLA szintet adunk Ilyenkor Y 1 kimenet EGY lesz. Y 2 kimenet szintén egy lesz, mert a VAGY kapu egyik bemenet már EGY szintet kap ( Y 1 -et ). A NAND kapcsolat akkor és csak akkor NULLA, ha az összes bemenete EGY Így az Y kimenet egy, mert, bár Y 2 nulla, de a NAND NULLÁT kap a C bemenet felől. 2. Lépésben a A=0, B=1, C=0 variációt próbáljuk . . . Lépésben Az A=1, B=1, C=1 variációval fejeződik be az igazságtábla ( 21. Ábra ) felvétele 8 A 0 0 0 0 1 1 1 1 21. ábra 3.2 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Y 1 1 1 1 0 1 0 0 A logikai elemek és logikai függvények kapcsolata A logikai áramkör szabványos rajzáról lekövethető, hogy az áramkör „mit csinál”,

azaz felírható annak logikai függvénye. Ehhez a már ismert kapcsolást hívjuk segítségül A B C 15 Y Feladatunk tehát, hogy leírjuk az Y kimeneten mérhető függvényt, az A, B, C bemenetek tekintetében. Ehhez sorra elkezdjük végigkövetni az egyes bemeneteket. Elsőként nézzük C-t. Van egy C bemenetem, ez egy önálló bemenet, biztos hogy szerepelni fog a függvényben, leírom : Y=C Követem tovább C-t, elérkezek egy inverterhez, tehát most már C negáltam van. Y=C Megyek tovább, elérkezek egy VAGY kapuhoz, tehát a C negált és valami más VAGY kapcsolata lesz. Y=C+ Megnézem a VAGY kapcsolat másik bemenetét, ez B, tehát : Y=C+B Most már megvan a VAGY kapcsolat, csak annak kimenetével kell foglalkozni. Látható, hogy a VAGY kapcsolat kimenete egy NAND kapcsolathoz megy, annak egy bemenete lesz. Nem felejtkezek el arról, hogy bár a NAND kapcsolat „nagyobb” mint a VAGY, de mivel a VAGY előbb volt, ezért azt kell először végrehajtani,

ezért azt zárójelbe teszem. Y=(C+B) Jelölöm a NAND kapcsolatot, de egyenlőre nem teszem ki a NAND negálását, mert nem tudom, hogy mi fog még a NAND bemeneteként szerepelni, ezért csak az ÉS jelet teszem ki ( NAND = ÉS + NOT ). Y=(C+B)• Megvizsgálom a NAND másik bemenetét, azt látom hogy ez A bemenet, leírom A-t. Y=(C+B)•A Gyakorlatilag minden kapcsolatot felírtam, de hátra van még a NAND elemeinek tagadása : Y=(C+B)•A A fenti szisztéma fordítottjaként egy logikai függvényből is felrajzolható egy logikai áramkör kapcsolási rajza Vegyünk egy függvényt : Y=A+B•C 16 Átnézem, nem látok benne zárójelet, tehát nincs végrehajtási sorrend meghatározva. Ilyenkor a legalacsonyabb rendű művelettel kezdem ez jelen esetben a VAGY. Felrajzolok egy VAGY kaput Az Y, a függvény kimenete, ennek a VAGY kapunak a kimenete lesz. Ez lesz az Y kimenet Az VAGY műveletnek két oldala ( bemenet van ) az egyik az A bemenet míg a másik a B ÉS C .

Tehát az egyik bemenetre rávezetem a A bemenetet, míg a másik bemenetre egy ÉS kapcsolat kimenetét Ez lesz az A bemenet Már megvan a kimenet és az A bemenet. Követem tovább az ÉS kapu bemeneteit : Az ÉS kapu egyik bemenete maga a B bemenet, míg a másik maga a C bemenet, de ez negálva, ezért az egyik bementre, ahová a C csatlakozik kötök egy invertert. C B A Y 4. A Programozás alapja : Programnyelvek típusai, elvi megközelítései A logikai áramkörökből bonyolult hálózatok építhetők fel. Míg a pár kapukat tartalmazó integrált áramkörökkel csak előre meghatározott ( funkcionális ) célú áramkörök építhetők fel, addig a mikroprocesszorok sajátossága, hogy az általuk végzendő feladatok nincsennek előre definiálva, azokat ún. programozással határozhatjuk meg A PROGRAMOZÁS tehát olyan folyamat, ahol egy arra alkalmas hálózatnak leírjuk az elvégzendő művelet ( 22. Ábra ) Ez olyan szintig bővíthető, hogy a végrehajtó

áramkör nemcsak előre leírt feladatokat végez ( vezérlés ), hanem az egyes műveletek során keletkező eredmény függvényében maga változtatja munkáját. Ezt szabályzásnak hívjuk ( 23 Ábra ) Ilyenkor a végrehajtó elem figyelembe veszi a folyamat során keletkező vagy bekövetkező külső hatásokat is. 17 Vezérelt Vezérlő 22. ábra Külső hatások Vezérelt Vezérlő 23. ábra visszacsatolás A visszacsatolás az a folyamat, ami tájékoztatja a vezérlőt a vezérlés eredményéről. A programozás folyamata a fenti elvek birtokában folytatható le. 4.1 A programnyelvek típusai Az digitális logikai áramkörök programozásáról ott érdemes beszélni, ahol az áramkör felépítése megengedi azt, hogy az ne egy előre defininált feladatot hajtson végre, hanem egy program „írja elő” az elvégzendő műveleteket. Ennek a megoldásnak az előnye, hogy a program bármikor könnyedén cserélhető, így különböző feladatok

megoldására egyetlen áramköri konstrukció is elegendő. Természetesen alapkövetelmény az, hogy a programot „ befogadó” áramkör képes legyen a program értelmezésére és végrehajtására. Ezek a rendszerek általában már nem diszkrét logikai elemekből, hanem az azokat összesűrűsítő mikrovezérlőkből, más néven mikroprocesszorokból épülnek fel. A mikroprocesszorok ún. mikroszámítógépben működnek, ahol a processzor mellett megtalálhatók az azt kiszolgáló fő elemek : • Programtár : mely a feladatot tartalmazó programo(ka)t tárolja • Külső memória : a program futása közben keletkező átmeneti adatokat tároló áramkör. • Be- és kimeneti periféria ( Input/Output – IO port ), mely a processzor által végrehajtott feladat eredményeit közli a külvilággal, valamint külső utasításokat fogad a kívülről csatlakozó egységekből A mikroprocesszorokból számítógépek épülnek fel, amik teljesítményét

értelemszerűen maga a processzor határozza meg. A programozás szempontjából egy mikroprocesszor fő ismérve, hogy az adott elem hány és milyen szintű GÉPI KÓDÚ UTASÍTÁST ismer. A gépi kódú utasítások olyan hardveresen előre programozott 18 műveletsorok, amiket a processzor „alapból” magától végrehajtani képes. Ezek ismeretében valósítható meg a programozás. A programozás szintjeit ez alapján a következőképpen állapíthatjuk meg : • Gépi kódú utasítások, melyek a legalacsonyabb szintet képviselik. A gépi kódú utasítások hardveresen hexadecimális (bináris) számok megfelelő bemenetre kapcsolásával vezérelhetők. A gépi kódú utasításokat a programozás során nem használjuk, mivel az nem elsősorban a szoftver, hanem a műszaki, hardver oldalról foghatók meg. • Alacsony szintű programozási nyelv : Ez már olyan program, mely a gépi kódú utasításokat szoftveresen, programozás-technikailag

többé-kevésbé egy az egyben elérhetővé teszi Ezt a programot ASSEMBLER-nek nevezzük, mely már egy fordító : tolmácsol a mikroprocesszor gépi kódú utasításai és egy szoftveres felhasználói szint között. Az ASSEMMBLER annak alapszintje és részletessége miatt általános programozásra nehézkesen használható, azonban nélkülözhetetlen a hardver kielégítően alapos programozásához. • Problémaorientált (magas szintű) programozási nyelvek Ez már egy olyan szoftver, mely az alacsony szintű utasítások sorát csoportba foglalva egyegy gyakran előforduló feladatot egyetlen programozói utasításba sűrít. Így a program viszonylag egyszerűen és gyorsan tervezhető, a figyelmet nem a hardver vezérlésére, hanem a program szervezési / strukturális / felhasználói tervezésére összpontosíthatjuk. A feladatokat az emberi gondolkodáshoz közelálló módon, a gépihez képest magasabb szinten lehet megoldani. Ismertebb magas szintű

programnyelvek : PASCAL, ALGOL, COBOL, C, COBOL BASCIC, VIRTUAL BASIC, DELPHI, stb. 4.11 A gépi kódú utasítások A gépi kódú utasítások ismerete elsősorban a hardverfejlesztők körében nélkülözhetetlen, mivel az alkalmazott mikroprocesszor által ismert gépi kódú utasításkészlet határozza meg a hardver környezeti felépítését, a különböző vezérlő és kiszolgáló áramkörök jellegét. A gépi kódú utasítások fogadására a mikroprocesszor integrált áramköre külön bemenetekkel rendelkezik, ahol a működés az egyes lábakra adott logikai szintekkel aktivizálható. A mikroprocesszor működése során ezek az utasítások elsősorban különböző regiszterek tartalmát módosítják a program futása függvényében. A regiszterek olyan áramkörök ( memóriák ) melyek adatsort képesek tárolni. A processzor belsejében ilyenek a státuszregiszter, utasítás-, címregiszter, stb. Egy átlagos PIC16Cxx típusjelű mikrovezérlő

utasításkészletét a 24. Ábra mutatja 19 24. ábra 20 4.12 Az alacsony szintű programnyelvek Ezek a gépi kódú utasításra épülnek. Használatukkal egy szoftver segítségével „nyúlhatunk bele” a processzor belsejébe, így használhatjuk a gépi kódokat. Az alacsony szintű programozási nyelvekre jellemző, hogy a gépi kódú utasításokat a lehető legkevesebb módosítással és a legkevesebb összevonással ( csoportosítással ) mintegy egy-az egyben fordítja szoftveres nyelvvé. Így a mikrogépet a lehető legalaposabb részleteiben programozhatjuk. Az alacsony szintű programnyelv fő felhasználói nyelve az ASEMBLER. Az ASSEMBLER gyakorlatilag egy program, mely begépelhető utasításokká fordítja a gépi kódokat. Ezért szokták fordítónak is nevezni Az ASSEMBLER a gépi kódú utasításokat általában az angol megfelelőjük rövidítésére fordítja. Ilyen utasításokat a 24. Ábra negyedik oszlopában láthatjuk Az alacsony szintű

programnyelveket, pontosabban az adott mikroszámítógéphez tartozó vezérlő programot a programtár tartalmazza. A programtár a mikroprocesszorhoz közvetlenül kapcsolódó elektronikus memória, melyet általában egy foglalatba helyezett EPROM valósít meg. Az EPROM egy olyan logikai integrált áramkör, ami bináris ( hexadecimális ) számokat – ez esetben gépi kódú programot – egyszeri beprogramozás után korlátlan ideig megőrzi. Az EPROM jellegzetessége, hogy a beletáplált programot a tápfeszültség kikapcsolása után is megőrzi, így a mikrogép szállítható, kikapcsolható, és – mivel az EPROM foglalatban ül – a program, ezáltal a felhasználási terület bármikor megváltoztatható. Az újabb mikroprocesszorok belsejében található a programtár EEPROM formájában. Ez egy elektronikus programozású áramkör, mely még egyszerűbbé teszi az alacsony szintű program alkalmazását. 25. ábra Egy megvalósított komplett

mikroszámítógép 4.13 A magas szintű programnyelvek Ezek a programozási szintek képezik a számítógép-programozás alapját. Gyakori és összetett feladatok megoldására alkalmazható alacsony szintű utasítások sorát vonja össze egy utasításba, így a programozás lényegesen leegyszerűsödik. A magas szintű programnyelvek felhasználóbarát kezelői felülettel és magasszintű segítség menüvel rendelkeznek. 21 Fő feladatai és alkalmazási területei az alábbiak : • Algebrai, logikai műveletek megoldása • Grafikai felületek, menürendszerek felépítése • Fájlrendszerbeli műveletek • Periféria vezérlési műveletek A magas szintű programnyelvek gyakori képviselői : PASCAL, BASIC, DELPHI, stb. 4.2 A magasszintű programnyelvek elemei, a programok felépítése A magasszintű programnyelvek az alábbi elemek alkalmazását teszik lehetővé : • Állandók definiálása Olyan elemek értékét adhatjuk meg a program kezdetén,

melyek a működés során mindig egy értéket képviselnek, értékük nem változik. ( Pl : PÍ : 3,14, stb ) • Változók definiálása A változók olyan értékek amelyeknek a program működése során a körülményektől függően változik az értékük. A változókat megkülönböztetjük az általuk felvehető értékek száma és jellege szerint. E szerint léteznek : Logikai változók : két értéke ( igaz – hamis ) lehet Egész számú változók Egész számú változók korlátozott tartományban Valós számú változók Valós számú változók korlátozott tartományban Speciális típusú változók A változókat a program működése során általában betűjelzéssel jelöljük. • Függvények definiálása Olyan eljárásokat határozhatunk meg, mely a program működése során akárhányszor alkalmazva egy vagy több értékből egy előre megadott matematikai művelet alapján eredményt közöl. Ide sorolhatók a logikai függvények is Fő

szerepe, hogy az adott matematikai függvény megoldásának leírását nem kell a program működése során többször leírni, így a program egyszerűsödik. • Eljárások definiálása Olyan utasítássor, mely a program működése során gyakran alkalmazásra kerül, így az utasítássort nem kell többször leírni, hanem elég erre az egy leírásra hivatkozni. 22 • Utasítások Ezek alkotják a magas szintű programozási nyelvek magját. Az utasításokkal tudjuk a programot felépíteni, ezek segítségével írhatjuk le a program feladatát. 4.21 A magas szintű programnyelvek utasításai A magas szintű programnyelvek utasításai számos területen, különböző formában magas szintű programnyelvektől függően alkalmazhatók. Az egyes programnyelvekben az utasítások leírása és megjelenése is különbözhet, de az alábbi utasítások minden programban jelen vannak, ezek alkotják a programozás legfőbb lépéseit : • Változók

deklarálása Itt változókat és állandókat adhatunk meg. • Változók bekérése : A programban használt nem állandó vagy előre nem meghatározható értékek értékadása. Az értékadás történhet : perifériáról : billentyűzet, port, stb függvény eredményeként • Algebrai/matematikai műveletek végzése Egyszerű matematikai műveletek és összetett függvények megoldása állandók és változók alkalmazásával • Feltételes elágazások Ezek a műveletek a program működését ágaztatják el vagy változók értékét módosítják a működés során kapott eredmények szerint. Fajtái : Kétirányú logikai elágazás HA a változó x, akkor ezt hajtsa végre, egyébként ( ha nem ) akkor ezt hajtsa végre. Ez az utasítás megvizsgálja a feltételben megadott változót, és ha az megfelel a feltételnek, akkor az első, ha nem akkor a második utasítást hajtja végre. Ennek az utasításnak a jellegzetessége, hogy az „egyébként”

rész elhagyható, így ez az utasítás csak akkor kerül végrehajtásra, ha a feltétel igaz, ha hamis a program nem veszi figyelembe. - Többirányú elágazás 23 HA a VÁLTOZÓ - x, akkor ezt hajtsd végre - y, akkor ezt hajtsd végre - z, akkor ezt hajtsd végre . . Az elágazásos utasítások végrehajtandó utasításai közé utasítások sora is „bezárható” • Ciklusok Ezek olyan utasítás(sor)ok, melyek feltételek közé zárva addig ismétlődnek, míg a feltétel nem teljesül. A ciklusok belsejét ciklusmagnak nevezzük A ciklusmagban lehetőség van arra, hogy a ciklus ismétlődési feltételét változtassuk. Ezzel lehetőség nyílik arra, hogy a ciklus felhasználjuk pl. keresésre vagy határérték, esetszámításra ( Pl : Addig olvasd be az adatokat, amíg meg nem találod ezt és ezt ) A ciklusoknak két fajtája létezik : - előltesztelő ciklus Amíg a feltétel nem teljesül csináld ez(eke)t Itt először megvizsgáljuk a feltételt és

ha az nem igaz, akkor végrehajtjuk az utasításokat. Ha a feltétel igaz, úgy az utasítások már nem hajtódnak végre Feltétel Utasítás 1 Utasítás 2 Itt a feltétel még nem teljesült, ezért visszatérünk a ciklus elejére Teljesült a feltétel, már nem hajtjuk végre az utasításokat hanem kilépünk a ciklusból és folytatjuk a programot Ciklus vége - hátultesztelő ciklus 26. ábra Csináljuk az utasításokat amíg a feltétel nem teljesül Végigcsináljuk az utasításokat majd megnézzük, hogy teljesült-e már a feltétel. Itt tehát egy utasítássor végrehajtódik, mikor a feltétel már teljesül, mivel azt utólag vizsgáljuk meg. A ciklusoknak egy speciális, de egyszerű felhasználási területe, mikor a feltétel teljesülését nem kötjük a ciklusmaghoz. Ilyenkor általában arra van szükség, hogy egy lépést előre meghatározott számban hajtsunk végre ( Írjuk ki 15 – ször ) A ciklusok tetszés szerinte egymásba ágyazhatók.

24 • Változók kivitele Eredmények, keresési találatok megjelenítése. A megjelenítés történhet képernyőre nyomtatóra egyéb perifériára • Billentyűzet kezelése Gombnyomás figyelése, billentyűk blokkolása, utasítások hozzárendelése gombokhoz, stb. • Perifériák kezelése A mikrogép hardvereinek működtetésére irányuló utasítások • Egyéb kezelői utasítások 4.3 Nézzünk bele a programozásba Mielött programoznánk • Sokat beszélnek az okos és intelligens számítógépekről. Ez a megfogalmazás így nem egészen igaz, hiszen önmagába a számítógép nem okos. Okossá a rajta futó programok teszik Jó programot csak akkor tudunk írni, ha elötte jól megfontoljuk szándékainkat, hogy mit, hogyan tegyünk, és a számítógép nem érti félre a szándékainkat. A programozás alapjai • A programozás azt a folyamatot jelenti, mely során a feladatot a számítógép számára érthető formában írjuk le. A

program legkissebb eleme az utasítás. Utasítások sorozatából jön létre a program A leírás nyelvét programozási nyelvnek nevezzük. A programozási nyelvek azért jönnek létre, hogy megkönnyítsék (vagy éppen megnehezítsék) a programozó munkáját a feladat megfogalmazásakor. Mivel a gép csak a gépi kódú információkat tudja közvetlenül feldolgozni, ezért a programot (pl. pascal) át kell fordítani a gép nyelvére Ehhez fordító programokat (compiler) használunk A programozási nyelveknek is pontosan meghatározott szabályai, lényegében nyelvtana van, melyeket szintaxisnak nevezünk. • A program folyamatábrája A folyamatábrát a számítógépes programok és a szervezési folyamatok tervezésénél használjuk. Az ábra elősegíti a programok áttekinthetőségét, kiegészíti a program dokumentációját és megkönnyíti a programban felmerülő későbbi javítások elvégzését. A következő ábra a folyamatábra elemeit mutatja

Feltétel 25 Utasítások Start/stop Elágazás A folyamat iránya Az ábra részeinek összekapcsolása 27. ábra • A számítógépes program készítése 1. 2. 3. 4. 5. 6. 7. 8. A feladat megfogalmazása és értelmezése (meglepő, de talán ez a legnehezebb) A matematikai modell kialakítása Az adatsruktúra kialakítása A program eredményközlése A folyamatébra elkészítése A program megírása (kódolás) Tesztelés hibakeresés futtatás Dokumentálás A programkészítés első négy lépését algoritmizálásnak nevezzük. A dolgozat elkészítését segítette: 26 Felhasznált irodalom: Molnár Csaba – Sági Gábor: Programozás Quick Basic nyelven Benkő Tiborné, Benkő Lászlóné, Tóth Bertalan, Varga Balázs: Programozzunk Turbo Pascal nyelven! Üveges László: Informatika Tanulókönyv nem csak középiskolásoknak Továbbá: Rádiótechnika folyóiratok, évkönyvek Hobbyelektronika folyóirat A Gábor Dénes Főiskola tankönyvei:

Angster Erzsébet: Programozás tankönyv I-II. Dr. Kovács Magda: Egyszerűen a mikroszámítógépekről Bogdán János - Nagy Imre: Programozási alapismeretek és alapgyakorlatok Vancsó Gyula: Mikroszámítógép-elemek a tervezéshez Nagy Ferenc Csaba- Nagy József: Analóg és digitális áramkörök Felhasznált programok: Nyáktervező: Prolite Szimulátor: ElektroCAD Tina Pro for Windows Elektronics Workbench Internet: elektronika.laphu informatika.laphu www.puskahu www.googlecom és még rengeteg jó oldal! Készítette: Péteri Erzsébet 27