Közlekedés gépjárművek elektronikája, diagnosztikája Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai TÁMOP-2.2.3-09/1-2009-0010 A Széchenyi István Térségi Integrált Szakképző Központ fejlesztése Szemere Bertalan Szakközépiskola, Szakiskola és Kollégium 3529 Miskolc, Ifjúság u. 16 20. www.szechenyitiszk.eu, info@szechenyitiszk.eu
Szerkesztette: Hadházi László Lektorálta: Dr. Ajtonyi István Nyelvi ellenőrzés és olvasószerkesztés: Gönye László A kiadvány a Széchenyi István Térségi Integrált Szakképző Központ fejlesztése TÁMOP 2.2.3-09/1-2009-0010 projekt keretén belül készült. 2011
Tartalomjegyzék 1. A MODUL CÉLJA...4 2. ELŐZETES FELTÉTELEK...4 3. ELŐZETES TUDÁS ELISMERÉSÉNEK ÉS BESZÁMÍTÁSÁNAK MÓDJA...4 4. SZEKVENCIÁLIS HÁLÓZATOK, TÁROLÓK, SZÁMLÁLÓK...5 1 2. LECKE...5 4.1 SZEKVENCIÁLIS HÁLÓZATOK...5 4.2 INTEGRÁLT TÁROLÓ ÁRAMKÖRÖK...5 4.3 TÁROLÓ ÁRAMKÖRÖK CSOPORTOSÍTÁSA...7 4.4 SZÁMLÁLÓÁRAMKÖRÖK...8 4.4.1 ASZINKRON ELŐRE SZÁMLÁLÓ...9 4.5 A 7490 ÉS 7493 ASZINKRONSZÁMLÁLÓK FELÉPÍTÉSE, ALKALMAZÁSA...9 4. ÖNELLENŐRZŐ FELADATSOR...10 5. FUNKCIONÁLIS LOGIKAI ÁRAMKÖRÖK...10 3 4. LECKE...10 5.1 FUNKCIONÁLIS LOGIKAI ÁRAMKÖRÖK FAJTÁI...11 5.2 CÍMDEKÓDOLÓ...11 5.3 A DIGITÁLIS MULTIPLEXER FELADATA, GYAKORLATI ALKALMAZÁSAI...12 5.4 ADATELOSZTÓK (DEMULTIPLEXEREK)...13 5. LECKE...13 5.5 REGISZTER...13 5. ÖNELLENŐRZŐ FELADATSOR...14 6. ANALÓG DIGITÁLIS (A/D) ÁTALAKÍTÓK...14 6 7. LECKE...14 6.1 ALAPFOGALMAK AZ A/D ÁTALAKÍTÓVAL KAPCSOLATBAN...14 6.2 AZ A/D ÁTALAKÍTÁS FOLYAMATA...15 8. LECKE...17 6.3 AZ A/D ÁTALAKÍTÓK JELLEMZŐI...17 6.4 AZ A/D ÁTALAKÍTÓK HIBÁI...17 9. LECKE...18 6.5 A/D ÁTALAKÍTÓ ALKALMAZÁSI PÉLDÁK, PÉLDAÁRAMKÖRÖK...19 6. ÖNELLENŐRZŐ FELADATSOR...21 7. A DIGITÁLIS ANALÓG (D/A) ÁTALAKÍTÓK...22 1
10 11. LECKE...22 7.1 A D/A ÁTALAKÍTÓK ALAPELVEI...22 7.2 A DIGITÁLIS ANALÓG ÁTALAKÍTÓK ELVI MŰKÖDÉSE...23 7.3 KÖZVETLEN ELVŰ ÁTALAKÍTÓK...24 7.4 DIGITÁLIS ANALÓG ÁTALAKÍTÓK JELLEMZŐI...25 7. ÖNELLENŐRZŐ FELADATSOR...26 I. TÉMAZÁRÓ FELADATSOR...27 8. FÉLVEZETŐ MEMÓRIÁK...29 12 13. LECKE...29 8.1 A MEMÓRIÁVAL KAPCSOLATOS ALAPFOGALMAK...29 8.2 RAM...30 8.3 ROM...30 8. ÖNELLENŐRZŐ FELADATSOR...31 9. MIKROSZÁMÍTÓGÉPEK...32 14 15. LECKE...32 9.1 MIKROSZÁMÍTÓGÉPEK ALAPELVEI...32 9.2 RENDSZERTECHNIKAI ÉS FUNKCIONÁLIS FELÉPÍTÉS...33 9.3 CU (CONTROL UNIT)...34 9.4 ALU (ARITMETIC LOGIC UNIT)...36 9.5 MEMÓRIA (OPERATÍV TÁROLÓ)...37 16. LECKE...37 9.6 BE- ÉS KIVITELI EGYSÉG (I/O VEZÉRLŐ)...37 PERIFÉRIÁK...37 9.7 A MIKROSZÁMÍTÓGÉP MŰKÖDÉSE...38 9.8 A GÉPI KÓDÚ UTASÍTÁS ÁLTALÁNOS FELÉPÍTÉSE...39 9. ÖNELLENŐRZŐ FELADATSOR...41 10. MIKROPROCESSZOROK...41 17 18. LECKE...41 10.1 A MIKROPROCESSZOR ÁLTALÁNOS FELÉPÍTÉSE...41 10.2 A VEZÉRLŐEGYSÉG...42 10.3 ARITMETIKAI ÉS LOGIKAI EGYSÉG (ALU)...43 10.4 REGISZTERKÉSZLET...43 10.5 BELSŐ SÍNRENDSZER...44 10.6 A BUSZRENDSZER (BUS SYSTEM)...44 2
10. ÖNELLENŐRZŐ FELADATSOR...45 II. TÉMAZÁRÓ FELADATSOR...46 11. PIC (PROGRAMABLE INTEGRATED CIRCUIT)...47 19 20. LECKE...47 11.1 A PIC-KEL KAPCSOLATOS ALAPFOGALMAK...47 11.2 PIC MIKROKONTROLLEREK ALKALMAZÁSTECHNIKÁJA...48 11.3 A 14 BITES PIC UTASÍTÁSOK FELÉPÍTÉSE...52 11.4 ADATMEMÓRIA FÁJL REGISZTEREK...53 A BANKOK...54 11.5 UTASÍTÁSKÉSZLET...56 11.6 A PIC MIKROPROCESSZOR EGYÉB UTASÍTÁSAI...57 11.7 A TOKOK (PIC) FELPROGRAMOZÁSA...59 11.8 EGYSZERŰ PÉLDAPROGRAM LEÍRÁSA ÉS ÉRTELMEZÉSE...60 11. ÖNELLENŐRZŐ FELADATSOR...63 12. PIC FEJLESZTŐI KÖRNYEZET...63 21. LECKE...63 12.1 MPLAB SZOFTVER...63 III. TÉMAZÁRÓ FELADATSOR...69 ÖSSZEGZŐ FELMÉRÉS...69 ÉRTÉKELÉS, FELADATMEGOLDÁSOK...71 3
1. A modul célja A tananyagegység célja, hogy a tanulók ismerkedjenek meg a mikroprocesszorok és mikrocomputerek, azaz mikrovezérlők működésének, alkalmazástechnikájának megértéséhez szükséges fogalmakkal, a leggyakrabban előforduló és ebben a felhasználási rendszerben elengedhetetlen áramkörök funkcionális működésével. Ismerjék és tanulják meg az áramkörök egymással való kapcsolatát és azok rendszerét. Képesek legyenek felismerni egy működő áramköri egység részeit és azok feladatát. Tudják ellenőrizni a legfontosabb funkciókat. 2. Előzetes feltételek A tanulónak rendelkeznie kell az érettségi szintjén elvárt olvasási és szövegértési kompetenciákkal, ismernie kell a középiskolai matematika és fizika tantárgyak anyagát. A közlekedés gépjárművek elektronikája, diagnosztikája témakörben lévő Digitális alapok, digitális alapáramkörök című tananyagegységből 51% fölötti értékelésű minősítés szükséges. 3. Előzetes tudás elismerésének és beszámításának módja A tanuló előzetes tudását a tananyagban található önellenőrző feladatsorok, témazáró feladatsorok és a tananyag végén található Összegző felmérés segítségével mérjük. Amennyiben az Összegző felmérést első próbálkozásra legalább 60%-os eredménnyel végzi el, a tanuló számára a modul elvégzése alól felmentés adható. Amennyiben nem éri el a 60%-os eredményt, akkor a sikeres közbenső témazáró feladatsorok, illetve az önellenőrző feladatsorok alapján az órák meghatározott részeinek látogatása alól adható felmentés. Ebben az esetben a tanuló számára kötelező az Összegző felmérés ismételt kitöltése. 4
4. Szekvenciális hálózatok, tárolók, számlálók 1 2. lecke Részcélkitűzések A tanuló ismerje meg a szekvenciális hálózatok fogalmát. A tanuló ismerje meg a szekvenciális hálózatok típusait. A tanuló ismerje meg az integrált tároló fogalmát. A tanuló ismerje meg az integrált tároló típusait. A tanuló ismerje meg a tároló áramkörök logikai típusait. A tanuló ismerje meg a számlálók fogalmát. A tanuló ismerje meg a 7490 és 7493 aszinkron számlálók felépítését. 4.1 Szekvenciális hálózatok A szekvenciális vagy más néven sorrendi hálózatok függvényei időfüggők. Jellegzetességük, hogy a kimeneti jel állapotát nemcsak a pillanatnyi bemeneti jelek befolyásolják, hanem a korábban már bekövetkezett kimeneti események is hatással vannak a jel alakulására. A szekvenciális hálózatoknak két típusa van: aszinkron és szinkron hálózatok. 1) Aszinkron hálózatok: A kimeneti jel azonnal reagál a bemenet változására. A hálózat vagy visszacsatolást, vagy egy tároló egységet tartalmaz, melyben elraktározódik az előző kimeneti jel értéke. 2) Szinkron hálózatok: A szinkron hálózatot, mint ahogy a nevében is benne van, szinkronizálni kell. Egy periodikus vezérlőjellel szinkronizálják az állapotváltozást. Ezt egy C órajellel vagy más néven ütemjellel valósítják meg. Ahogyan az aszinkron rendszereknél, úgy itt is egy tároló segítségével valósítják meg a kimenő jel előző állapotától való függését. 4.2 Integrált tároló áramkörök A digitális áramkörök egyik legfontosabb alkotóeleme a flip-flop, amelyet adatok tárolására alkalmaznak. 5
Tulajdonságai: két ellentétes állapotot vehet fel, külső beavatkozás nélkül bármelyiket megtartja, egy vagy több bemenettel rendelkezhet. A flip-flopok a sorrendi hálózat csoportjába tartoznak. Egy flip-flop 1 bit információ tárolására alkalmas (két állapota segítségével). Tároló áramkörök logikai típusai: Többféle logikai típust különböztetünk meg, ezek közül a gyakoribbakat ismertetjük: R-S tároló (1. ábra) Két bemenettel (S és R) és két kimenettel rendelkezik. A tárolandó információt az S bemeneten keresztül adjuk meg, amit beíró bemenetnek is neveznek. Az R bemenet a flip-flop törlésére szolgál. Az S=1 és R=1 kombináció esetén határozatlan lesz a kimenet. Ezt az állapotot tiltott bemeneti kombinációnak nevezzük. 0 0 0 1 0 1 0 1 1 1 x 1. ábra. R-S tároló Inverz R-S típusú tároló (2. ábra) Mint ahogy az igazságtáblájából is látszik, az R-S tároló inverz függvényeit valósítja meg (2. ábra). J-K típusú tároló (3. ábra) J K 0 0 0 1 0 1 0 1 1 1 Ennél a tárolónál a J a beíró bemenet, a K a törlő bemenet. A flip-flop kiküszöböli az R-S tároló hibáját S=1 R=1 értéknél. J=K=1 vezérlés esetén a flip-flop kimenetei ellentétes logikai értékűre váltanak (komplementálnak). 3. ábra. J-K tároló 0 0 x 0 1 1 1 0 0 1 1 2. ábra. Inverz R-S 6
T típusú tároló (4. ábra) T tárolót úgy nyerünk, hogy a J-K tároló J és K bemeneteit összekötjük, és azt nevezzük T-nek. A flip-flop beíró és törlő funkciója így elvész. Ha T=0, a kimenet megtartja értékét, ha viszont T-t 1- re állítjuk, Q a negáltjára változik az órajel ütemében. Így tehát a T tároló egy adat és egy vezérlő bemenettel rendelkezik. Ha a bemenetére 1 jel kerül, akkor a kimenő állapot a vezérlő ütemében változik 0 vagy 1 logikai értékre. D típusú tároló (5. ábra) A bemenetre adott információt a kimeneten egy vezérlőjel időtartamával késleltetve jeleníti meg. 4.3 Tároló áramkörök csoportosítása A tároló áramköröket négy fő csoportra oszthatjuk: statikus tárolók, statikus kapuzott tárolók, kétfokozatú (master-slave) tárolók, élvezérelt tárolók. T 0 1 4. ábra. T tároló D 0 0 1 1 5. ábra. D tároló 4.3.1 Statikus tárolók A bemenetre kapcsolt új jel hatására a kimenet azonnal megváltozik. Hátránya, hogy a bemenetre kerülő véletlen zaj stb. is állapotváltozást okozhat. Az R-S flip-flop a legegyszerűbb aszinkron sorrendi hálózat. A 6. ábrán a statikus tároló, a 7. ábrán az inverz R-S tároló jelölése látható. 6. ábra. Statikus tárolók jelölése 7. ábra. Inverz R-S tároló 7
4.3.2 Kapuzott statikus tároló A kapuzott statikus tároló a statikus tárolótól annyiban tér el, hogy egy C órajel bemenetet is tartalmaz, melynek segítségével történik a flip-flop állapot változása. Mind az ötféle, fent említett logikai típusú tároló megvalósítható kapuzott statikus tárolóként. Az órajellel vezérelt flip-flopok állapota csak az órajellel szinkronban változhat. 8. ábra. Kapuzott tároló jelölése 4.4 Számlálóáramkörök 9. ábra. Kapuzott J-K tároló A számlálóáramkörök rögzítik és jelzik a bemenetükre jutó impulzusok számát. Legalább annyi különböző állapottal kell rendelkezniük, amennyi a számlálandó impulzusok számának maximuma. Fajtái: Aszinkron számláló: az órajel csak a legelső flip-flopot vezérli, a többi az őt megelőzőtől kapja. Szinkron számláló: minden flip-flop egyszerre kapja az órajelet. Bináris számláló: a tárolt impulzusszám kódolása bináris számrendszerben történik. Decimális számláló: a tárolt impulzusszám kódolása decimális (BCD) számrendszerben történik. Előre számláló: növekszik a számlálók tartalma. Visszaszámláló: csökken a számláló tartalma. Reverzibilis számláló: a számlálás iránya megfordítható. 8
4.4.1 Aszinkron előre számláló Aszinkron számláló áramkört kapunk, ha J-K tárolókat sorba kötünk, és ezek órajelbemenetét az előző tároló Q kimenetére kötjük. Az előre számlálás elérésére negatív élvezérlésű tárolót alkalmazunk, így a tároló kimeneti állapota akkor változik, mikor az órajel 1-ről 0-ra vált. 4.4.2 Szinkron előre számláló Az aszinkronszámlálók hátránya, hogy a flip-flopok egymást billentik, késleltetési idejük láncszerűen összeadódik. A frekvencia növekedésével ez zavart okozhat. A szinkronszámlálók az előbbi hátrányt kiküszöbölik. A flip-flopok órajelbemenetei egymás között össze vannak kapcsolva, így a számláló impulzusok szinkronban vezérlik a számláló összes flip-flopját. A szinkronszámlálóknál az állapotváltozást a tárolók logikai bemenetein alkalmazott vezérlés határozza meg. 4.5 A 7490 és 7493 aszinkronszámlálók felépítése, alkalmazása 4.5.1 TTL aszinkron bináris előre számláló (7493) Az IC belsejében 4 db J-K flip-flop található. A, B, C, D flip-flopok bináris számlálóként vannak öszszekötve. Az A flip-flop külön, a többitől függetlenül működtethető, nincs kapcsolatban a többivel. Ahhoz, hogy 4 bites számlálót hozzunk létre, a Q A kimenetet külső huzalozással kell összekötnünk a B bemenettel, a számlálandó órajelet pedig az Input A bemenetre kell vezetnünk. Ezen összeköttetés nélkül az A flip-flop külön 2-es osztóként, a másik három külön nyolcas osztóként, 10. ábra. TTL bináris előre számláló számlálóként használható. 9
4.5.2 TTL aszinkron decimális számláló (7490) Olyan berendezésekben, ahol a számlálás eredményét kijelezhetővé kívánjuk tenni, célszerű a számlálást BCD kódban végezni (a kijelzés így számjegyenként azonos típusú dekódolóval megoldható). 4 bittel 16 lehetséges állapot valósítható meg. A 16 állapotból 6 állapot kiiktatásával jutunk el a BCD rendszerhez, amely ily módon bizonyos értelmű pazarlást jelent. A 7490-es tömbvázlata hasonlít a 7493-éhoz. A flip-flop itt is a többitől független 2-es frekvenciaosztóként működtethető (kivéve a közös RESET-eket). A BCD számláláshoz az első, QA kimenetet külső huzalozással a második Input B bemenethez kell csatlakoztatni. A 2-es és az 5-ös osztó (B D csoport) együttesen 10-es osztót, BCD számlálót alkot. Amennyiben a frekvenciaosztó alkalmazásban fontos a szimmetrikus 50%- os kitöltési tényezőjű jel előállítása, a 7940-est fordított sorrendű kapcsolásban kell használnunk. A QD kimenetet kell összekötnünk, az Input A bemenetre kell vezetnünk. A kimeneti szimmetrikus jelet az A kimeneten kapjuk. A nullázás vagy 1-re állítás megfelelő 2-2 ÉS bemenet egyidejű 1- re vitelével történik. A számlálás ennél a típusnál is az órajel 1 0 átmenete hatására történik. 4. Önellenőrző feladatsor 1) Mi a különbség a D és T tároló között? 2) Mit tud a J-K tárolóról? 3) Ismertesse a statikus tárolók felépítését! 4) Mit tud a szinkron előre számlálóról? 5) Magyarázza el a TTL aszinkron bináris előre számláló működését! 5. Funkcionális logikai áramkörök 3 4. lecke Részcélkitűzések A tanuló ismerje meg a funkcionális logikai áramkörök fajtáit. A tanuló ismerje meg a címdekódoló működését. 10
A tanuló ismerje meg a multiplexerek működését. A tanuló ismerje meg a demultiplexerek működését. 5.1 Funkcionális logikai áramkörök fajtái Címdekódolók Adatszelektorok (multiplexerek) Adatelosztók (demultiplexerek) Számláló áramkörök Bináris számláló áramkörök Decimális számláló áramkörök Gyűrűs számláló áramkörök Aritmetikai áramkörök Bináris összeadó áramkörök Bináris kivonó áramkörök Regiszterek 11. ábra. Címdekódoló 5.2 Címdekódoló Egy integrált memóriaegységben nagy mennyiségű tároló helyezkedik el. A tárolók tartalmának egyszerre, azaz egy órajel időtartam alatt, csak egy kis részét jellemzően byte-os szervezettségnél, 8 db memória állapotát kívánjuk megjeleníteni az integrált egység kimenetén. Annak érdekében, hogy ki tudjuk választani a nagy mennyiségben jelenlévő tárolóelem közül az éppen aktuálisakat, a memóriacellákat címekkel érhetjük el. 2 bit címmel a 12. ábra szerinti címkombináció állítható elő egy címdekódoló segítségével. Cím A1 A2 QA QB QC QD 1 0 0 1 0 0 0 2 0 1 0 1 0 0 3 1 0 0 0 1 0 4 1 1 0 0 0 1 12. ábra. Címdekódoló táblázata 11
5.3 A digitális multiplexer feladata, gyakorlati alkalmazásai Az adatszelektort, vagy multiplexert abban az esetben alkalmazzuk, amikor több vonal jeléből egyet kell kiválasztani. Azt, hogy melyik csatorna jelét kapcsoljuk a kimenetre, a címmel jelöljük ki. Minden multiplexernek vannak címbemenetei. Az adatszelektort tekinthetjük úgy, mint egy négyállású kapcsolót (13. ábra). 13. ábra. Multiplexer A multiplexer címbemenetétől függ, hogy melyik bemenetet kapcsoljuk az Y kimenetre. Ha a címbemeneten A0 A1 állapotkombináció van, akkor a D2-es bemenetet kapcsolja az Y kimenetre. 14. ábra. A digitális multiplexer kapcsolási rajza 12
5.4 Adatelosztók (demultiplexerek) Az adatelosztók vagy más néven demultiplexerek egy D bemeneti információt juttatnak el az Y kimenetre. Működésük tehát pont a fordítottja a multiplexer működésének. Analóg kapcsolók alkalmazása esetén a multiplexer vagy demultiplexer analóg jel átvitelére is alkalmas. Ezt az áramkört analóg multiplexernek nevezzük. 5. lecke Részcélkitűzések A tanuló ismerje meg a regiszter fogalmát. A tanuló ismerje meg a regiszterek alkalmazásának célját. A tanuló ismerje meg a regiszterek működését. 5.5 Regiszter A digitális berendezések működésének elengedhetetlen feltétele az információ átmeneti vagy esetleg hosszabb ideig való tárolása, és az ehhez való gyors hozzáférés. A regiszterek ugyan kevés információ tárolására képesek, de gyors a hozzáférhetőségük (100 bit felső határ / 10-20 ns). Flip-flopok csoportjából épülnek fel. Beírás vagy kiolvasás szempontjából lehetnek sorosak vagy párhuzamosak. Soros regiszterek esetén az első és utolsó flip-flophoz lehet hozzáférni. Ezeket a regisztereket léptető- vagy más néven Shift regisztereknek nevezzük. Párhuzamos beírás és kiolvasás esetén az információt egyszerre írják be és olvassák ki. Ezeknél a regisztereknél a léptetés nem szükséges, a regiszter csak az információ elraktározására alkalmas. Ezeket a típusokat átmeneti tároló vagy közbenső tároló regisztereknek nevezik. 5.6 Léptetőregiszter A léptetőregiszter lehetővé teszi, hogy a bemenetre adott információ minden egyes órajel hatására egy flip-floppal továbblépjen. Bináris jelek tárolására és léptetésére (helyi érték tolására) szolgál. A léptetőregiszterek megfelelő működése érdekében órajelvezérelt flip-flopokat kell alkalmazni. 13
A léptetőregiszterek esetén soros és párhuzamos kiolvasás, valamint kétféle irány áll rendelkezésünkre. Ezek alapján sokféle variációja fordul elő. 15 ábra. Léptetőregiszter 5. Önellenőrző feladatsor 1) Mit tud a multiplexerekről? 2) Mit tud a regiszterekről? 3) Elemezze a léptetőregiszter működését! 4) Milyen számlálóáramköröket ismer? 6. Analóg digitális (A/D) átalakítók 6 7. lecke Részcélkitűzések A tanuló ismerje meg az A/D átalakítással kapcsolatos alapfogalmakat. A tanuló ismerje meg az A/D átalakítás módszereit. A tanuló ismerje meg az A/D átalakítás folyamatát. 6.1 Alapfogalmak az A/D átalakítóval kapcsolatban Az analóg digitális átalakítók funkciója az analóg jelek digitálissá történő átalakítása (digitalizálása). Analóg jel: Időben folytonos, így minden időpillanathoz hozzárendelhető értékkel rendelkezik. Két szélső érték között folyamatosan változik, végtelen sok értéket vehet fel. Digitális jel: A digitális jel (nem folytonos) megszámlálhatóan felaprózott, s így számokkal felírt diszkrét függvény, két szélső érték között ugrásszerűen változik, véges számú értéket vehet fel. Az A/D átalakítás az 14
analóg függvénynek mintavételezésen alapuló diszkrét függvénnyé átalakított formája. Az A/D átalakító feladata az, hogy a bemeneti feszültséget a feszültségszinttel arányos számmá alakítsa át. Három megoldást különböztetünk meg: közvetlen (direkt) módszer, szukcesszív approximációs módszer, számlálót alkalmazó módszer. Közvetlen módszer esetén egy n számú referenciafeszültség értékével hasonlítjuk össze a bemeneti feszültséget, aszerint, hogy melyik kettő közé esik. A komparátorok száma jelzi az áramkör bonyolultságát. Pl. egy 0 100 méréstartományban 1-es felbontáshoz n=100 komparátor szükséges. Szukcesszív approximációnál egy bináris szám egy helyértékéhez tartozó számot határozunk meg. Az átalakítás a legnagyobb helyi értéken kezdődik. Azt vizsgáljuk, hogy a feszültség értéke nagyobb vagy kisebb-e a referenciafeszültségnél. A maradékot összehasonlítjuk a következő helyi értékkel stb. Számlálót alkalmazó módszer esetén azt vizsgáljuk, hogy hányszor kell összeadni a legkisebb helyi értékű referenciafeszültséget, hogy végül a bemeneti feszültséget kapjuk meg. 6.2 Az A/D átalakítás folyamata Az analóg digitális átalakító arra szolgál, hogy a bemenetére érkező analóg jelet megfelelő digitális jellé alakítsa át. A folyamat három részből áll: mintavételezés, kvantálás, kódolás. 15
6.2.1 Mintavételezés Az A/D átalakítók bemenetére csak a legritkább esetben kerül egyenfeszültség. Az átalakítandó jel az idő függvényében változhat gyorsan vagy lassan, ezért egyenlő időközönként kellő gyakorisággal mintákat veszünk a jelből. A mintavételezés gyakorisága függ a jel frekvenciájától. Minél nagyobb frekvenciájú egy jel, annál több mintát kell venni. Az analóg jel mintavételezésekor a gyakoriságának legalább kétszer akkorának kell lennie, mint a jel legnagyobb frekvenciája (16. ábra). Az A/D átalakítókat két csoportba soroljuk aszerint, hogy a jel mely értékeit dolgozzák fel: 1) A pillanatérték-átalakító bizonyos időközönként, adott pillanatban mintákat vesz a jelből. Nem veszi figyelembe a jel változását az átalakítási idő alatt. 2) Az átlagérték-átalakító átalakítási ideje alatt a jel átlagértékét (középértékét) veszi figyelembe. A legtöbb esetben lassú átalakítóknál használják. 6.2.2 Kvantálás 16. ábra. Mintavételezett jel 17. ábra. Kvantált jel Az analóg jelet kvantumlépcsőkre osztjuk szét, és minden egyes lépcsőhöz tartozik egy tartomány. Besoroljuk, tehát véges számú értéket rendelünk hozzá (17. ábra). Minél nagyobb felbontással dolgozunk, annál több kvantumlépcsőt rendelünk a jelhez. 18. ábra. Kvantált és mintavételezett jel (Minél finomabb a jel felbontása, annál drágább az előállítása.) Két mintavétel közötti idő alatt a kvantált szint kerül felhasználásra (18. ábra). 16
6.2.3 Kódolás A kvantumlépcsők sorszámát binárisan kódoljuk. 8. lecke 19. ábra. Kódolt kvantumlépcsők Részcélkitűzések A tanuló ismerje meg az A/D átalakítók jellemzőit. A tanuló ismerje meg az A/D átalakítás pontosságát. A tanuló ismerje meg az A/D átalakítás lehetséges hibáit. 6.3 Az A/D átalakítók jellemzői Felbontás: A kvantálási intervallumok maximális számából számított bitek száma. Pl. 8 bites jel 256 lépcső, 10 bites jel 1024 lépcső. Bemeneti feszültség változásának tartománya: A bemeneten lévő analóg jel amplitúdója. Nem lineáris hiba: A karakterisztikának az ideálistól való eltérését fejezi ki. Átalakítási sebesség: Egy átalakításhoz szükséges időtartam. Offszethiba: A karakterisztikának a kezdőponthoz viszonyított eltérése. 6.4 Az A/D átalakítók hibái 6.4.1 Statikus hibák Egy analóg jel véges számú bitet tartalmazó átalakításánál elkerülhetetlen, hogy valamilyen hiba ne lépjen fel. Ilyen hiba lehet a kvantálási vagy más néven szisztematikus hiba. Ez a hiba a jel korlátozott felbontása következtében lép fel. Ennek értéke ± LSB/2, vagyis akkora, mint a bemeneti feszültségváltozás fele. Ez elég ahhoz, hogy a legkisebb helyértékű 17
számot megváltoztassuk. Ha az átkódolt jelet egy D/A átalakító segítségével ismét visszakódoljuk, akkor a szisztematikus hiba zajként fog megjelenni. A kvantálási hibán kívül sok más kisebb hiba is felléphet. Nemlineáris hiba akkor lép fel, amikor a kvantumlépcsők nem egyformák. A differenciális nemlineáris hiba azt adja meg, hogy a lépcsők mennyire térnek el abszolút értékükben az U LSB névleges értékétől. Ha a hiba értéke nagyobb U LSB -nél, akkor hiányozhatnak egyes számok. 6.4.2 Dinamikus hibák Az A/D átalakítók alkalmazásánál két területet különböztetünk meg: digitális feszültségmérés, jelfeldolgozás területe. Pl. digitális voltmérő esetén a bemeneti feszültség az átalakítási idő alatt állandó. Ezzel szemben jelfeldolgozásnál a bemeneti feszültség változhat. Az átalakítás egyik célja az, hogy a bemenő analóg jelből információveszteség nélkül legyen digitális számsor. Ennek egyik feltétele, hogy a mintavételi frekvencia a várható jelfrekvenciának minimum kétszerese legyen. Ha az átalakítás ideje és a mintavevő tartó áramkör beállási ideje eléri a mintavételezett jel periódusidejének felét, információvesztés, azaz torzulás léphet fel. Az ilyen esetet dinamikus hibának nevezzük. 9. lecke Részcélkitűzések A tanuló ismerje meg a flash konverter működését, jellemzőit. A tanuló ismerje meg a szukcesszív approximációs átalakító működését, jellemzőit. A tanuló ismerje meg a dual slope átalakító működését, jellemzőit. 18
6.5 A/D átalakító alkalmazási példák, példaáramkörök A következő három áramkör más-más célokra használatos. Felhasználási területek: videojelek digitalizálása, hangfrekvenciás jelek átalakítása, valamint hőmérséklet-érzékelő jelének digitalizálása. 6.5.1 A flash konverter működése, jellemzői Közvetlen analóg digitális konverter A közvetlen vagy flash konverter rendkívül gyors működésű, mintavételezési frekvenciája 100-200 MHz körüli, átalakítási ideje 5-10 µs. Az U be bemeneti jelet komparátorsor hasonlítja össze egy ellenállásosztó által előállított lépcsőfeszültséggel. Amelyik komparátor nagyobb bemeneti jelet érzékel, mint a hozzá tartozó lépcsőfeszültség, az logikai 1-et, amely kisebb, az logikai 0-át ad a kimenetre. A szükséges átalakítást prioritáskódolóval oldhatjuk meg. Nagyon gyors 100-200 MHz, videokonverternek is nevezik. 20. ábra. Flash konverter (forrás: http://www.faqs.org) 19
6.5.2 A szukcesszív approximációs átalakító működése, jellemzői Fokozatos közelítésű átalakító Az A/D átalakítók között elterjedt a fokozatos közelítés módszere. Ezek az átalakítók az olyan ütemvezérlésű, soros átalakítókhoz tartoznak, melyeknél minden ütemprioritásban a D digitális kimeneti jel egy helyértéke alakul ki. Egy n bites átalakítónál tehát n lépcső szükséges az átalakításhoz. Az átalakító működésének alapjául a dichotómia elve szolgál, vagyis a mért értéksorozatok összehasonlítása a lehetséges max érték felével, negyedével, nyolcadrészével stb. A mérés kezdetén a Z számot a kapcsolás nullázza. Ha a D/A átalakító U Z kimeneti feszültsége kisebb, mint az átalakítandó U be bemeneti feszültség, akkor ezt a logikai 1 értéket a rendszer megőrzi. Ha azonban az U be kisebb, mint U Z, akkor a komparátor átbillen, és ezt a rendszer visszaállítja nullára (21. ábra). 21. ábra. Szukcesszív approximációs átalakító A lefutásvezérlést léptetőregiszterrel oldják meg, amely egyrészt túlkompenzálás esetén nyitja az ÉS kaput a billenő fokozat törlésére, másrészt pedig az ezt követő kisebb értékű hely billenőfokozatát logikai 1-re állítja. 1 MHz ütemfrekvenciával dolgozik. 20
6.5.3 A dual slope átalakító működése, jellemzői A dual slope átalakító mentes azoktól a hibáktól, amelyektől a többi átalakító szenved. Tekintsük át a működését a 22. ábra segítségével. A teljes működési ciklus két szakaszból áll. A mérés kezdetén a kapcsolóvezérlő a számláncot törli. K 3 nyitott, a K 1 egyet zárjuk, K 2 kapcsoló pedig nyitva van. Ezáltal az U be mérendő feszültséget egy t 0 állandó ideig integrálja. Ha a mérendő jel pozitív, az integrátor kimenete negatív lesz, és a komparátor engedélyezi az órajel-generátor jelét. Ez a mérési időtartam akkor ér véget, amikor a számláló által mutatott érték ismét 0 lesz. Ha az órajel frekvenciáját úgy állítjuk be, hogy a váltakozó feszültség frekvenciájával vagy annak egész számú többszörösével egyenlő, akkor a búgófeszültség hatását teljesen kiküszöböljük. Mivel a kettős integrálás olcsó és pontos, a zavarelnyomás is nagy, ezért főként digitális feszültségmérőknél használjuk. 22. ábra. Dual slope átalakító (forrás: zss.uw.hu) 6. Önellenőrző feladatsor 1) Hányféle átalakítási módszert ismer, és mit tud róluk? 2) Mit tud a mintavételezésről? 3) Mit tud a kvantálásról? 4) Mi az offszethiba? 5) Ismertesse az egyik példaáramkör működését! 21
7. A digitális analóg (D/A) átalakítók 10 11. lecke Részcélkitűzések A tanuló ismerje meg a D/A átalakítással kapcsolatos alapfogalmakat. A tanuló ismerje meg a D/A átalakítás eljárásait. A tanuló ismerje meg a D/A átalakítók elvi működését. A tanuló ismerje meg a D/A átalakítók jellemzőit. A tanuló ismerje meg az A/D átalakítás pontosságát. A tanuló ismerje meg az A/D átalakítás lehetséges hibáit. 7.1 A D/A átalakítók alapelvei LSB: Legkisebb helyértékű bit, amely binárisan kódolva a legkisebb. MSB: Legnagyobb helyértékű bit, amely binárisan kódolva a legnagyobb. A digitális analóg átalakítók (DAC Digital to Analog Converter) feladata a bemeneten lévő D számadatnak megfelelő A analóg jel előállítása. A D/A átalakítók egy számot a vele arányos feszültséggé alakítanak. Három megoldást különböztetünk meg: párhuzamos (direkt) eljárás, súlyozásos eljárás, számláncot alkalmazó eljárás. A párhuzamos eljárásnál egy feszültségosztó segítségével minden lehetséges kimeneti feszültséget előállítunk. Az n-ből 1 dekódoló azt a kapcsolót zárja, amelyhez megfelelő feszültség tartozik. A súlyozásos eljárásnál minden helyi értékhez egy kapcsoló társul, és a súlyozó ellenállásokon át a szükséges kimeneti feszültség összegeződéssel jön létre. A számláncot alkalmazó eljárás egy olyan kapcsoló alkalmazásával valósítható meg, amit periodikusan nyitunk és zárunk. A kitöltési tényezőt úgy állítjuk be, hogy a kimeneti feszültség számtani középértéke az előírt értékre álljon be. 22
7.2 A digitális analóg átalakítók elvi működése Az átalakító működéséhez szükség van egy nagyon pontos U R referenciafeszültségre, amelyből a kimeneti feszültség keletkezik. A referenciafeszültség állítja be a kimeneti feszültséget. Ha az áramkör kimenetét egy feszültségkimenetnek feltételezzük, akkor hasonlóságot lehet felfedezni egy potenciométeres feszültségosztóval, melynek érintkezőjét digitális jellel állítjuk be. 23. ábra. D/A átalakító tömbvázlata 24.ábra. D/A átalakító elvi működése Ahhoz, hogy az átalakítás sikeresen megtörténjen, a D/A átalakítónak ismernie kell a bináris kódot. A D/A átalakítók csak bizonyos bináris kódokat tudnak átalakítani. Ebből a szempontból a kódokat két csoportra oszthatjuk: értékkel rendelkező kódok, ilyen pl. a BCD kód; értékkel nem rendelkező kódok, ilyen pl. a GRAY kód. Az értékkel nem rendelkező kódokat először át kell kódolni, pl. a GRAY kódot BCD kóddá. Csak ezután lehet a BCD kódú digitális jelet átalakítani analóg jellé. Az átalakítók felbontásának a növelése természetesen drágítja, nehezíti az átalakítási folyamatot. Kis pontosság esetén a D/A átalakító felbontása 8 bit, amely 256 elemi lépcsőt tartalmaz. Nagyobb pontosságot biztosító rendszerek általában 10, 12, 14 bitesek. Nagy pontosságú rendszerekben 16, 18, 20 bites átalakítókat is alkalmaznak. 23
A D/A átalakítás lehet: Soros: többütemű átalakítás, ahol bitenként állítják át a jelet. Párhuzamos: minden bit egyidejűleg alakítja a kimeneti jelet. A D/A átalakítók az átalakítás elve szerint lehetnek: Közvetlen elvű átalakítók: Vezérelt áram vagy feszültségosztós erősítés útján állítják elő a bemeneti digitális jelből az analóg jelet. Közvetlen elvű átalakítók fajtái: súlyozott összegű, ellenállás-létrahálózatos összegző, kapcsolt áramgenerátoros. Közvetett elvű átalakítók: Az analóg jel előállítása közben különböző mennyiségeket iktatnak be. Pl. impulzus-idő, idő-arány, frekvencia stb. 7.3 Közvetlen elvű átalakítók 7.3.1 Súlyozott összegű átalakítók A 25. ábrán látható áramkör bináris számok velük arányos feszültséggé való átalakítását végzi. Az ábra egy 4 bites digitális kódot szemléltet. Az ellenállások értékeit úgy határozzuk meg, hogy zárt kapcsolóállás esetén olyan áram folyjon rajtuk keresztül, amely megfelel az adott helyérték súlyának. A kapcsolókat logikai 1 értéknél zárjuk. A műveleti erősítő R X ellenállásán létrejövő negatív visszacsatolás miatt az összegző ponton mindig 0 feszültség marad. Tehát az ellenállások részáramai nem befolyásolják egymást. 24
25. ábra. Összegző erősítővel működő D/A átalakító Hátránya: a helyi értékenkénti nagy pontosságú ellenállások alkalmazása, ugyanis egyre nagyobb helyi értéken egyre pontosabb ellenállásra van szükség. 7.3.2 Ellenálláslétra, létrahálózatos közvetlen D/A átalakító Az integrált D/A átalakítók gyártásánál általában a nagy értékszorzású, pontos ellenállások megvalósítása okozza a legnagyobb nehézségeket. Ezért a súlyozást a helyértékek szerint gyakran ellenállás-létrahálózattal valósítjuk meg. Egy 4 bites ellenállás-létrahálózatot tartalmazó D/A átalakító kapcsolást szemléltet a 26. ábra. 7.4 Digitális analóg átalakítók jellemzői Felbontás (resolution): Egy D/A átalakító kimenetén fellépő legkisebb analóg lépcső értéke. 26. ábra. Ellenállás-létrahálózatos közvetlen D/A átalakító Offszethiba: Az átviteli karakterisztikáknak a kezdőponthoz viszonyított elmozdulása. Mértékegysége: LSB. 25
Konverziós (átalakítási) idő: Azt az időtartamot képviseli, ami egy átalakításhoz szükséges. Átalakítási sebesség: A D/A átalakító által egy másodperc alatt végrehajtott utasítások száma. 7. Önellenőrző feladatsor 1) Mi a D/A átalakítók feladata? 2) Ismertesse a D/A átalakítók elvi működését! 3) Milyenek lehetnek a D/A átalakítók az átalakítás elve szerint? 4) Soroljon fel 3 közvetlen elvi átalakítót! 5) Mit tud a súlyozott összegű átalakítókról? 6) Mit tud az ellenálláslétra-átalakítóról? 26
I. témazáró feladatsor 1. Egészítse ki a mondatot! A szekvenciális vagy más néven sorrendi hálózatok függvényei. Jellegzetességük, hogy a kimeneti jel állapotát nemcsak a pillanatnyi bemeneti befolyásolják, hanem a korábban már bekövetkezett is hatással vannak a jel alakulására. 2. Egészítse ki a mondatot! A J-K tároló: Ennél a tárolónál a J a beíró bemenet, a K a törlő bemenet. A flip-flop kiküszöböli az R-S tároló hibáját..értéknél. J=K=1 vezérlés esetén a flip-flop kimenetei. 3. Csoportosítsa a tároló áramköröket! 4. Sorolja fel a számlálók fajtáit! 5. Egészítse ki a mondatot! Az adatszelektort vagy multiplexert abban az esetben alkalmazzuk, amikor..vonal..kell kiválasztani. Azt, hogy melyik csatorna jelét kapcsoljuk a,...jelöljük ki. 6. Jelölje meg a helyes választ vagy válaszokat! A regiszterek: a) merevlemezen található memóriarekeszek. b) a szoftver regisztrációs táblájának adatai tárolják azonosítás esetén. c) feladatuk az információ átmeneti vagy hosszabb ideig való tárolása. d) Önazonosító adattárak. 27
7. Jellemezze az analóg jelet! 8. Írja le az A/D átalakítás három megoldását! 9. Írja le a D/A átalakító feladatát! 10. Rajzoljon egy 8 bites közvetlen A/D átalakítót! 28
8. Félvezető memóriák 12 13. lecke Részcélkitűzések A tanuló ismerje meg az elektronikus memóriával kapcsolatos alapfogalmakat. A tanuló ismerje meg a félvezető tárak típusait. 8.1 A memóriával kapcsolatos alapfogalmak A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása kettes számrendszerben történik. A memória fontosabb típusai a RAM, a ROM, a PROM, az EPROM, az EEPROM és a Flash memória (27. ábra). Technológiai felépítésük szerint különböző memóriatípusokat különböztetünk meg: félvezető, mágnes, optikai és magneto-optikai memóriákat. A mikroszámítógépek területén a félvezető memóriák terjedtek el. A félvezető tárak típusai: 27. ábra. Félvezető tárak típusai A memória egyik fontos jellemzője a megcímzett rekesz hozzáférési módja. Ez alapján megkülönböztetünk: tetszőleges (véletlen) hozzáférésű memóriákat, soros (szekvenciális) hozzáférésű memóriákat, asszociatív memóriákat. 29
8.2 RAM A RAM (Random Access Memory) közvetlen elérésű írható és olvasható memória. A RAM az a memóriaterület, amit a processzor műveletei során közvetlenül igénybe vesz, a munka során innen és ide dolgozik. A RAM memória tartalmát tetszőleges időközönként és tetszőleges sorrendben olvashatjuk ki. A RAM-ot más néven operatív tárnak is nevezik. Minden bevitt adat először a RAM-ba íródik, és ott kerül tárolásra. A RAM működéséhez folyamatos áramellátás szükséges, ezért nem alkalmas az adatok hosszú ideig tartó eltárolására. Az áramellátás megszűnését követően a RAM azonnal elveszíti tartalmát. Ezért a számítógép bekapcsolásakor a RAM tartalma véletlenszerű érték. A RAM-nak két fajtája van: a statikus és a dinamikus RAM. Statikus: Az adatok fenntartásához tápfeszültség szükséges, frissítést nem igényel. Drágább és gyorsabb, mint a dinamikus, ellenben a címzési módja egyszerűbb. Dinamikus: Egy bit tárolására egy tranzisztor- és egy kondenzátorpárt használnak. Ez a tár rendszeres időközönként frissítést igényel, különben tartalma elvész. 8.3 ROM A ROM (Read Only Memory) csak olvasható memória, amelynek tartalmát a gyártása során beleégetik a memóriába. Az elkészült ROM tartalma a továbbiakban nem módosítható, nem törölhető. Meghibásodása esetén nem javítható, ki kell dobni. Előnye, hogy a számítógép kikapcsolásakor sem törlődik. A számítógép bekapcsolása után azonnal olvasható. Mivel a számítógép működéséhez valamilyen program elengedhetetlen, a RAM memória viszont bekapcsoláskor véletlenszerű értéket tartalmaz, ezért a számítógép életre keltését szolgáló indítóprogramot, a BIOS-t (Basic Input 30
Output System) egy ROM memóriában helyezik el. (A BIOST gyakran ROM-BIOS-ként emlegetik.) A ROM néhány fajtája: PROM, EPROM, EEPROM. A PROM a felhasználó által egyszer programozható, csak olvasható memória, amely gyártása után még üres. Minden felhasználó saját programot, adatot helyezhet el benne egy beégető készülék segítségével. A PROM-ba írt adat nem törölhető és nem írható felül. Az EPROM egy olyan ROM, melynek tartalmát különleges körülmények között ultraibolyafény segítségével törölhetjük, és akár többször is újraírhatjuk. Előnye a ROM-ok korábbi változataival szemben, hogy tartalma frissíthető. Az EEPROM az EPROM továbbfejlesztett változata, amelynek tartalma egyszerű elektronikus úton újraírható. Speciális memóriák: virtuális memória, memóriakártya, pendrive. 8. Önellenőrző feladatsor 1) Hogyan értelmezi az elektronikus memória fogalmát? 2) Melyek a félvezető tárak típusai? 3) Mit tud a RAM-ról? 4) Mit tud a ROM-ról? 5) Mit nevezünk EEPROM-nak? 31
9. Mikroszámítógépek 14 15. lecke Részcélkitűzések A tanuló ismerje meg a mikroszámítógépek alapelveit. A tanuló ismerje meg a mikroszámítógépek rendszertechnikai és funkcionális felépítését. A tanuló ismerje meg a központi egység (CPU) részeit, működését. A tanuló ismerje meg a vezérlő egység (CU) részeit, működését. A tanuló ismerje meg a programszámláló, a verem, az utasításdekódoló, az órajel-generátor, az aritmetikai logikai egység és a memória működését. 9.1 Mikroszámítógépek alapelvei A mikroszámítógép viszonylag kis teljesítményű, kis műveleti sebességű mikroprocesszoros rendszer. Legkönnyebben talán úgy lehet elképzelni, mintha egy szokásos PC lenne, amit egy célfeladathoz fejlesztettek ki, ezért minden alkotóeleme csak a feladathoz szükséges szintre van fejlesztve, kialakítva, és egy tokba lett integrálva. Ki- és bemeneti kapcsolata nem billentyűzet és monitor, hanem mondjuk 8 érintkező láb (pin), amiről a futó program határozza meg, hogy mikor kimenet és mikor bemenet. Az integrált egységben megtalálható a program futtatásához szükséges operatív tároló és a kezeléshez nélkülözhetetlen be- és kimeneti vezérlő is. A magyar származású Neumann Jánosnak nagy szerepe volt a mikroszámítógépek alapelveinek kidolgozásában. Napjainkban már léteznek nem Neumann-elven működő számítógépek is. Ezen rendszerek többségét a számítógép teljesítményének növelése érdekében hoztak létre. A Neumann-architektúra még mindig jelentős a kisszámítógépek világában. A Neumann-elven felépített számítógépek főbb jellemzői: teljesen elektronikus felépítés, kettes számrendszer használata, 32
belső elektronikus tár, amely adatokat és utasításokat tárol, a tárolt program alapján a gép önállóan futtatja a programot. 9.2 Rendszertechnikai és funkcionális felépítés A számítógépre jellemző az újrakonfigurálhatóság, az utólagos bővíthetőség. Ez csak olyan formában képzelhető el, hogy a processzor és a külső egységek egyfajta szabványos csatlakozófelülettel, ún. sínrendszerrel vannak összekötve. A sínrendszer a gép funkcionális egységeit köti össze. A sín egy fizikai és logikai kialakítás szempontjából szabványos vezetékcsoport, amelyen keresztül az egyes egységek meghatározott szabályok szerint kommunikálnak egymással. A sínrendszert a kommunikációban végzett feladattól függően több sínre oszthatjuk, úgymint címsín, adatsín, vezérlősín. Gyakorlati jelentősége ma már csak a két-, illetve háromsínes rendszereknek van. A mikroszámítógépek funkcionális felépítése A mikroszámítógép legfontosabb funkcionális egységei (28. ábra): vezérlőegység (Control Unit, CU), aritmetikai és logikai egység (Aritmetic Logic Unit, ALU), operatív tároló (memória), be- és kiviteli egység (I/O-vezérlő). Az ALU és a CU általában egy közös tokban, a CPU-ban (Central Process Unit) található meg. 33
28. ábra. A mikroszámítógép rendszertechnikai felépítése CPU (Central Process Unit) A rendszer központi egysége. A program utasításait előveszi az programmemóriából, feldolgozza, majd vezérlőjeleket állít elő belőlük, amelyet belső egységek (ALU, regiszterek) és külső egységek (memóriák, perifériák) használnak fel. 9.3 CU (Control Unit) A vezérlőegység (CU, Control Unit) irányítja a műveletek program szerinti végrehajtását. A következő négy részre bontható: programszámláló (PC), veremtár (memória-cím) mutató, utasításdekódoló, órajel-generátor. 9.3.1 A programszámláló (PC) A programszámláló (PC-Program Counter) a soron következő utasítás címét jelöli ki. Az órajel-generátor minden egyes utasítás kiolvasása után növeli a programszámláló tartalmát eggyel. A programszámláló ezáltal biztosítja az utasítások lépésről lépésre történő megvalósítását. 34
Ha a mikrogép egy ún. elágazó vagy ugró utasításhoz ér (amelynek az a szerepe, hogy megszakítsa az utasítások növekvő sorrendű elérését), akkor a programszámláló tartalma egy adott címre cserélődik. Az ugrás után, az új címtől kezdve növeli a tartalmat, ugyancsak lépésről lépésre. Az ugró utasítások lehetnek feltételhez kötöttek vagy feltétel nélküliek. A feltételes ugró utasítást a számítógép egy döntési művelet után hajtja végre. A döntés egyszerűbb vagy bonyolultabb összehasonlítási műveletekből származik. A feltétlen ugró utasításkor a program végrehajtásában feltétel nélküli ugrás következik be. 29. ábra. Vezérlőegység blokkvázlata 9.3.2 A verem (memóriacím) mutató A veremmutató és a veremtár szerepe az alprogramok alkalmazása esetén nyilvánul meg. A programozás egyszerűsítésének legfontosabb segédeszköze a szubrutin. Előfordulhat egy programban, hogy azonos részek 35
többször fordulnak elő. Ezeket úgy célszerű felállítani, hogy a program bármelyik részén közvetlenül fel lehessen használni. Azt a programrészt, amelyet a program különböző részein használnak fel, de csak egyszer programoznak be, szubrutinnak nevezik. A szubrutint két utasítás segítségével ékelik be: a szubrutinhívó és a szubrutin-visszatérési utasítással. A szubrutinhívó utasítás a főprogramban, a visszatérési utasítás a szubrutin végén helyezkedik el. 9.3.3 Utasításdekódoló Az utasításdekódoló (Instruction Decoder) a vezérlőegység legfontosabb része. Az utasításokat ábrázoló kódszámokat vezérlőjelekké alakítja át. A vezérlőjelek egy része közli az aritmetikai és logikai egységgel a végrehajtandó művelet típusát. A vezérlőjelek másik része a számítógépen belüli információáramlást ellenőrzi és szabályozza. 9.3.4 Órajel-generátor Az órajel-generátor (Clock Generator, Timing Unit) állítja elő a gép időbeni működéséhez szükséges időzítőjelet, amelynek feladata az információk kiolvasása és beírása a memóriába, az aritmetikai és logikai egység vezérlése, a ki- és beviteli egységek működésének vezérlése, valamint a vezérlőegység időbeni működésének irányítása. 9.4 ALU (Aritmetic Logic Unit) Az ALU olyan aritmetikai és logikai műveletek elvégzését teszi lehetővé, amelyekkel a program által meghatározott számolási és logikai műveletek sorozata végezhető el. Minél többféle művelet elvégzésére képes egy számítógép aritmetikai és logikai egysége, annál könnyebben tudja megoldani a bonyolultabb feladatokat. Az ALU egység központi regisztere az akkumulátor. Az ALU-ban művelet végrehajtás előtt az egyik operandus, végrehajtás után pedig az eredmény található. Az akkumulátoron kívül az ALU-ban még egy regisztertömb is van. Ennek a regiszterei bizonyos utasítások végrehajtásában vesznek részt. 36
Egy műveletet a számítógép aritmetikai és logikai egysége egy vagy több utasítás segítségével végez el. Az utasítás a program legkisebb funkcionális egysége. 9.5 Memória (operatív tároló) A mikroprocesszor belsejében lévő regiszterek nem elegendőek egy program és a szükséges adatok tárolására. A működő program utasításait és adatait ezért memóriában kell tárolni, ahonnan a mikroprocesszor tölti be a megfelelő memóriarekesz tartalmát. Alapvetően kétféle típusú félvezetős tárat alkalmazunk: ROM (Read Only Memory): Csak olvasható memória, a rendszer működtetéséhez nélkülözhetetlen programokat tárolja (pl. ROM BIOS). Tartalma állandó. RAM (Random Access Memory): Írható-olvasható memória, a felhasználói programokat és adatokat tárolja a programfuttatás során. Tartalma a tápfeszültség kikapcsolásakor elvész. 16. lecke Részcélkitűzések A tanuló ismerje meg a perifériák feladatait. A tanuló ismerje meg a mikroszámítógép működési folyamatát. A tanuló ismerje meg a gépi kódú utasítások felépítését. 9.6 Be- és kiviteli egység (I/O vezérlő) A perifériák kapcsolatát biztosítja a mikroprocesszorral. Fogadja a perifériák kéréseit, a kérésekkel a processzorhoz fordul, majd a processzor válaszjelei alapján előállítja a perifériák vezérlőjeleit. Perifériák Az operatív tárral kiegészített CPU már működőképes. Mialatt a program fut, nem lehet adatokat bevinni, valamint a program eredményeit látni. 37
A perifériák valósítják meg az ember, a technológia és a számítógép kapcsolatát. A beviteli perifériák az utasítások, programok, adatok bevitelét teszik lehetővé. A kiviteli perifériák a programfeldolgozás eredményeit teszik érzékelhetővé (láthatóvá, hallhatóvá). Beviteli perifériák: billentyűzet, egér, scanner, CD-ROM. Kiviteli perifériák: monitor, nyomtató, hangkártya. Be- és kiviteli perifériák: winchester, memóriakártya, pendrive. 9.7 A mikroszámítógép működése A számítógép működését a mikroprocesszor a tárolt program alapján végzi. A program utasítások és adatok sorozata. Az utasítások és az adatok a memóriában bináris formában helyezkednek el. A processzor az utasításokat egyenként beolvassa a programmemóriából, értelmezi azokat, majd órajellel szinkronizált vezérlőjel-sorozattal biztosítja az utasítás végrehajtását. Előfordulnak olyan események, melyeknek az elvégzése fontosabb az éppen futó programénál. Ilyenkor az aktuális utasítás befejezése után a programot meg kell 30. ábra. A mikroszámítógép működésének folyamatábrája szakítani, és a megszakítási ok azonosítását követően a megszakítást egy rutin lefuttatásával ki kell szolgálni, majd a megszakított programot folytatni kell. 38
9.8 A gépi kódú utasítás általános felépítése A gépi kódú utasítás három fő részből áll: műveleti kód, ami meghatározza, hogy a mikrogép milyen műveletet végezzen; módosító rész, ami a műveleti kód, illetve a címek pontos értelmezéséhez ad módosító előírást; címrész, ami a műveletvégzés operandusait vagy azok memóriabeli címét tartalmazza. Utasításszerkezet Általános esetben egy utasítás végrehajtásakor a processzornak négy címre van szüksége: első operandus címe, második operandus címe, az eredmény címe, a következő utasítás címe. Attól függően, hogy az utasítás címrésze hány címet tartalmaz, beszélhetünk négy-, három-, kettő, egy- és nullacímes utasításszerkezetről. Négycímes utasítás A fejlettebb processzorokban már nem alkalmazzák, mert az ilyen szerkezetű utasítás helyfoglalása nagy. Részei: műveleti kód, operandus címe, operandus címe, az eredmény címe, a következő utasítás címe. 39
Háromcímes utasítás Az utasításszámláló regiszter (Program Counter, PC) bevezetésével a következő utasítás címét nem kell az utasításban elhelyezni, mert mindig a PC tartalmazza. Az utasítás végrehajtásakor a processzor automatikusan beállítja a PC-t a következő utasítás címére. Ennek feltétele, hogy az utasítások a végrehajtás sorrendjében helyezkednek el a programmemóriában. Ugyanakkor a programban a soros utasítás feldolgozás megbontásához vezérlésátadó utasítások bevezetése szükséges. Részei: műveleti kód, 1. operandus címe, 2. operandus címe, az eredmény címe. Kétcímes utasítás A processzor a műveletvégzés eredményét automatikusan visszaírhatja az egyik operandus helyére. Így az eredmény címe elhagyható. Részei: műveleti kód, 1. operandus címe, 2. operandus címe. Egycímes utasítás Az utasítás végrehajtása során a második operandus helye lehet rögzített. Ehhez ki kell jelölnünk egy regisztert, amely a második operandust tartalmazza. Erre a célra az úgynevezett akkumulátorregisztert használjuk. Ilyenkor műveletvégzés előtt az akkumulátort egy külön utasítással fel kell tölteni a második operandussal. Részei: műveleti kód, 1. operandus címe. 40
Nullcímes utasítás Csak műveleti részből áll, nem tartalmaz címrészt. Egyetlen operandusú műveleteknél alkalmazzák. 9. Önellenőrző feladatsor 1) Melyek a mikroszámítógépek legfontosabb funkcionális egységei? 2) Mit jelent a CPU rövidítés? 3) Mit jelent a CU? 4) Mit tud a szubrutinokról? 5) Milyen perifériákat ismer? 6) Milyen gépi kódú utasításokat ismer? 10. Mikroprocesszorok 17 18. lecke A tanuló ismerje meg a mikroprocesszor általános felépítését. A tanuló ismerje meg a vezérlőegység működését. A tanuló ismerje meg az aritmetikai és logikai egység (ALU) feladatát, műveleteit. A tanuló ismerje meg a regiszterek felépítését, feladatát, műveleteit. A tanuló ismerje meg a belső sínrendszer felépítését, feladatát. A tanuló ismerje meg a belső sínek típusait. A mikroprogramozható számítógépek mikroprogramját feldolgozó központi egységet nevezzük mikroprocesszornak. A mikroprocesszor végzi az aritmetikai és logikai műveleteket, valamint a rendszer vezérlését. 10.1 A mikroprocesszor általános felépítése A processzor meghatározott feladatokat ellátó egységekből, ún. funkcionális egységekből épül fel. Az egyes processzorok felépítésében jelentős 41
eltérések tapasztalhatók, azonban mindegyikre jellemző, hogy tartalmazza a következő alapvető funkcionális egységeket (31. ábra): vezérlőegység, CU (Control Unit), aritmetikai és logikai egység (ALU, Arithmetic Logic Unit), regiszterkészlet, sínillesztő egység (BIU, Bus Interface Unit), címszámító egység (AU, Address Unit), belső sínrendszer. 31. ábra. A mikroprocesszor általános felépítése 10.2 A vezérlőegység A vezérlőegység az utasítások alapján előállítja a processzoron belüli és a processzorhoz kapcsolt külső egységek működéséhez szükséges vezérlőjeleket. Belső vezérlőjelekkel irányítja az aritmetikai egység működését és a regiszterek, illetve a belső sínrendszer közötti átvitelt. Külső vezérlőjelei a processzor és a memória, valamint a processzor és a perifériák közötti adatátvitelt, a sínvezérlést és a megszakításkezelést irányítják. Összehangolja és ütemezi az egész rendszer működését. Tulajdonképpen egy vezé- 42
relt szinkronsorrendi hálózat, az órajel-generátor által szolgáltatott többfázisú órajellel ütemezve. 10.3 Aritmetikai és logikai egység (ALU) Az ALU feladata matematikai és logikai műveletek végzése. Az aritmetikai műveletek is visszavezethetők logikai műveletekre, ezért az ALU gyakorlatilag egy kombinációs hálózat. A műveletvégzéshez néhány regisztert használ, innen veszi a műveletvégzés operandusait. A processzorba integrált műveletvégző egységek fixpontosak vagy lebegőpontosak, BCD vagy bináris kódúak, átvitelgyorsítósak vagy e nélküliek lehetnek. A processzor teljesítményét alapvetően meghatározza a műveletvégző egységek száma és működési sebessége. 10.4 Regiszterkészlet Mivel a regiszterek a processzor belsejében találhatók meg, ezért nagyon gyors tárolók. Méretük lehet 32, 64, 128 bit stb. A felhasználói programok szempontjából három csoportra oszthatóak: rendszerregiszterekre, adatregiszterekre, címzőregiszterekre. Rendszerregiszter: A programozó által nem hozzáférhető, csak a processzor által az utasítás végrehajtás során használt regiszter. Utasításregiszter (Instruction Register, IR): Rendszerregiszter, amely a mikroprocesszor által beolvasott, végrehajtás alatt álló utasítást tárolja. Állapotregiszter (Flags): A jelző- vagy flagbiteket tartalmazza. Ezek a bitek szoros kapcsolatban állnak az ALU-val, értéküket az ALU állítja be az utoljára végzett művelet eredményének függvényében. Néhány jelzőbit értékét a programozó is beállíthatja a processzor flagvezérlő utasításaival. 43
Az állapotregiszter legfontosabb jelzőbitjei: Z zérus flag, értéke 1, ha az utoljára végzett művelet eredménye 0. S előjel flag, értéke 1, ha az eredményben a legnagyobb helyi értékű bit 1. P paritás flag, értéke 1, ha az eredményben páros számú 1-es van C átviteli bit, értéke 1, ha az eredmény legnagyobb helyi értékű bitje már nem ábrázolható a célregiszterben. AC kiegészítő átviteli bit, értéke 1, ha a művelet végrehajtásakor a 3. bitről a 4. bitre átvitel keletkezik. O túlcsordulás flag, értéke 1, ha az eredmény nem helyes, mert az előjelbitre túlcsordulás következett be. Adatregiszter: Általános célú regiszter, amely a felhasználói utasításokban korlátozás nélkül használhat. Ez csak az utasítások többségére igaz, hiszen ezeknek a regisztereknek is lehet speciális feladatuk, ami más regiszterrel nem végezhető el, így a vezérlőegység egyszerűbb felépítésű lehet. Címző regiszter: A processzor használja a címképzési eljárás során, de tartalmát a felhasználó is módosíthatja. A címzőregiszterekkel gyakorlatilag adatok és utasítások memóriabeli címeit adhatjuk meg. 10.5 Belső sínrendszer Ezen keresztül bonyolódik a belső egységek közötti kommunikáció. Lehet egysínes, kétsínes és háromsínes kialakítású. Manapság már csak a két-, illetve háromsínes rendszereket alkalmazzák. 10.6 A buszrendszer (Bus System) Megkülönböztethető a külső és belső buszrendszer. A külső buszrendszer a mikroszámítógép mikroprocesszorán kívül lévő építőelemeit köti össze. A belső buszrendszer a mikroprocesszor belső egységeit köti össze. A buszrendszer három részre tagolódik: adatbusz (Data bus), címbusz (Address bus), vezérlőbusz (Control bus). 44
Adatbusz: Különböző egységek közötti kétirányú adatátvitelt bonyolít le. A belső adatbusz a kétirányú adatátvitelre alkalmas adatpufferen keresztül csatlakozik a külső adatbuszhoz. Ha a mikroprocesszor adatot kap, akkor az adatpuffer bemeneti állapotban van. Adatküldés esetén az adatpuffer kimeneti állapotba kerül. A külső adatbusz meghajtók az úgynevezett közvetlen memória-hozzáférés alatt kerülnek a harmadik, nagy impedanciájú állapotba. Ekkor a közvetlen memória-hozzáférést lebonyolító egység kerül összeköttetésbe a memóriával. Címbusz: A címpuffer csatlakoztatja a belső címbuszt a külsőhöz. A címpuffer csak egyirányú jelátvitelre alkalmas. A mikroprocesszor az általa előállított cím segítségével jelöli ki azt az egységet, amellyel éppen érintkezésbe fog lépni. A közvetlen memória-hozzáférés idején a mikroproceszszor leválasztódik a buszrendszerről azáltal, hogy a buszmeghajtók nagy impedanciájú állapotba kerülnek. Ezáltal a memóriát a közvetlen hozzáférést lebonyolító egység címezheti meg. Vezérlőbusz: A vezérlőbusz feladata a különböző vezérlő és szinkronizáló jelek továbbítása. A mikroszámítógép vezérlését a mikroprocesszor által előállított jelek biztosítják. Válaszként a számítógép áramkörei állapotfelismerő jelet küldenek vissza. A mikroprocesszor művelet-végrehajtást vezérlő vagy állapotkérő jelet is kaphat a perifériás áramköröktől 10. Önellenőrző feladatsor 1) Mit ért mikroprocesszoron? 2) Melyek a mikroprocesszor funkcionális egységei? 3) Mit tud a vezérlőegységről? 4) Mit jelent az ALU rövidítés? 5) Mit tud a buszrendszerről? 45
II. témazáró feladatsor 1. Egészítse ki a mondatot! Az információ tárolása kettes számrendszerben történik. A memória fontosabb típusai a memória. 2. Pontosan mit ért EEPROM rövidítés alatt? 3. Rajzolja le egy mikroszámítógép rendszertechnikai felépítését! 4. Rajzolja le a mikroszámítógép működésének folyamatábráját! 5. Miről szól az alábbi mondat? Írja le a három sín elnevezését! Ezen keresztül bonyolódik a belső egységek közötti kommunikáció. Lehet egysínes, kétsínes és háromsínes kialakítású. Manapság már csak a két-, illetve háromsínes rendszereket alkalmazzák. 6. Általános esetben egy utasítás végrehajtásakor a processzornak négy címre van szüksége. Melyik az a négy? 7. Mit ért ALU rövidítés alatt, és mi a feladata? 8. Mit tud a rendszerregiszterről? 9. Mit tud az I/O vezérlőről? 10. Miről szól az alábbi mondat? Csak műveleti részből áll, nem tartalmaz címrészt. Egyetlen operandusú műveleteknél alkalmazzák. 46
11. PIC (Programable Integrated Circuit) 19 20. lecke Részcélkitűzések A tanuló ismerje meg a PIC integrált áramkörök családjával kapcsolatos alapfogalmakat. A tanuló ismerje meg a PIC alkalmazástechnikájának főbb eseményeit. A tanuló ismerje meg a programozáshoz szükséges alapokat. A tanuló ismerje meg a programozó eszköz szoftverét. A tanuló ismerjen meg programozási lehetőségeket. 11.1 A PIC-kel kapcsolatos alapfogalmak PIC (Programable Integrated Circuit): Programozható logikai áramkör. RISC CPU (Reduced Instruction Set Central Processing Unit): Csökkentett utasításkészletű CPU. A RISC alapelve az, hogy kevés, egyszerű utasításból álljon, de azokat a lehető leggyorsabban tudja végrehajtani. Az I/O regiszter egy olyan memória, amelynek másik oldala a külvilágra nyílik. Az I/O port beállítástól függően ki- vagy éppen bemenet is lehet. Az MIPS megadja, hogy az adott eszköz egy másodperc alatt hány utasítást képes végrehajtani. Programmemória: Az a memória, amelyben a végrehajtandó program van. Adatmemória: RAM memória, melyben a program átmenetileg tárolhat változókat, adatokat stb. Csak az alatt az időtartam alatt, amíg be van kapcsolva a PIC. Watchdog (WDT Őrző-védő kutya): Egy kis, független áramkör, amely a PIC-et beállítja, ha a benne futó program egy hiba esetén nem megfelelően működik. A hiba oka lehet pl. programhiba, tápzavar stb. RESET áramkör: a tápfeszültség megjelenésekor reseteli a PIC-et. MPLAB: a PIC program megírásához szükséges fejlesztőkörnyezet. 47
Égetés: A megírt PIC programot valamilyen úton bele kell tölteni a PICbe, ezt a folyamatot nevezzük égetésnek. ICSP: Két lábon keresztül történő áramkörön belüli soros programozás. POR: Bekapcsolási reset. SLEEP üzemmód: A PIC minimális fogyasztású üzemmódja. PWRT (Power-up Timer): Akkor kapcsolja az órajelet, ha az már stabil. FSR (File Select Register): Tartalma határozza meg az indirekt utasításban szereplő regiszter címét, felső három bitje az aktuális regiszterbankot. IRP: Az IRP bit a STATUS regiszterben található, és segíti a helyes indirekt címzést. 11.2 PIC mikrokontrollerek alkalmazástechnikája A PIC egy mikrokontroller, melyet a Microchip cég fejlesztett ki. A PIC egyetlen IC, amely egy komplett digitális számítógépet foglal magában. Néhány típusa: PIC16F84A, PIC16F628A. A mikrokontroller vagy mikrovezérlő: mikroszámítógép egy tokban. PIC tulajdonságai: kis fogyasztás, széles körű perifériák, kódvédelem, szabad és sok forráskód, gyors utasítás-végrehajtás, rugalmasság. 48
32. ábra. A PIC általános felépítése Gyors perifériák, órajel @ 20MHZ Utasítás-ciklusidő 200 ns I/O váltás üteme 200 ns Komparálási idő 200 ns Input Capture Resolution 200 ns (with divide by 16 prescaler) 50 ns PWM felbontás (8 és10 bit) 50 ns PWN frekvencia 8-bit 80 KHz 10-bit 20 KHz SCI (USART) Aszinkron sebesség 312.5-KBaud Szinkron sebesség 5000-KBaud SPI Master adatsebesség 5 MHz Slave adatsebesség 2.27 MHz A/D konverziós sebesség 16-20 µsec Adat EEPROM Írási idő 10 ms Írási szám 1 M E/W (Typical) 33. ábra. A PIC adatai 49
Az utasításhossznak döntő szerepe van a mikroszámítógépek világában. Az INTEL megoldása az, hogy a műveleti kód és az operandus mindig egész bájt hosszúságú. Erre azért van szükség, mert a program és adatmemóriája közös. A PIC felépítésében ez máshogyan néz ki, mert itt külön program- és külön adatmemóriát hoztak létre. A nagyobb bitszámú utasításban egy szóban elfér mindkettő. Elfér a műveleti kód és az operandus címe is. Felosztás a családok szerint: 12 bites: 7 bit műveleti kód, 5 bit operandus cím 16C5XX; 14 bites: 7 bit műveleti kód, 7 bit operandus cím 16CXX; 16 bites: 8 bit műveleti kód, 8 bit operandus cím 17CXX, 18CXX. Az utasításban szereplő memóriacím és operanduscím mérete előre bekorlátolt. PIC-kel kapcsolatos alapfogalmak: Két párhuzamos I/O porttal rendelkezik egy 5 (PORTA) és egy 8 (PORTB) bitessel. A két port bitjein belül külön beállítható, hogy IN vagy OUT adatforgalmat bonyolítsanak. Órajelet rezgőkörrel adhatunk. Az értéke PIC-típusonként eltérő lehet. A PIC minden egyes utasítást egy órajelciklus alatt hajt végre, kivéve az ugró és elágazó utasításokat. A PIC sajátossága, hogy RISC utasításkészlete van, mely csökkentett módban 35 utasítást tartalmaz. Az architektúrája ugyancsak RISC tulajdonságú, az elkülönülő adat- és programmemória miatt. A RISC processzorok főbb jellemzői: az utasítások végrehajtásához egy gépi ciklust használnak fel, kevésbé bonyolult utasítások, az utasítások rögzített hosszúságúak, hosszuk nem változik, kevés utasítás és címzési mód használata, az utasítások végrehajtásához nincs mikroprogram, az igen bonyolult fordítóprogram állítja elő a végső formát. 50
Speciális mikrokontroller jellemzői: két lábon keresztül történő áramkörön belüli soros programozás, bekapcsolási RESET, Power-up Timer (PWRT) akkor kapcsolja az órajelet a CPU-ra, ha az már stabil, Watch Dog Timer (WDT), programvédelem, minimális fogyasztású SLEEP üzemmód, sokoldalú belső oszcillátor. A PIC16F84 blokkvázlata 34. ábra. PIC blokkvázlata Mint a 34. ábrán vázolt egyszerűsített blokkvázlatból látható, az architektúrát úgy alakították ki, hogy az utasítás végrehajtására legyen optimalizálva. 51
11.3 A 14 bites PIC utasítások felépítése Utasítás közvetlen címzéssel: 35 ábra. Utasítás közvetlen címzéssel Utasítás állandóval: 36. ábra. Utasítás állandóval GOTO, CALL: 37. ábra. GOTO, CALL utasítás Speciális utasítások: NOP, SLEEP, CLRW, OPTIONC, TRIS, CLRWDT. Utasításciklus PIPELINE: Az utasítások végrehajtása négy órajelciklust igényel. utasításdekódolás, operandus kiolvasása a cím alapján a fájlregisztertárból, utasítás-végrehajtás, eredmény visszaírása a fájlregisztertárba. Az utasítások gyorsabb végrehajtása érdekében minden órajel alatt egy műveleti előrelépés történik. Ez azt jelenti, hogy az utasításciklusok átlapoltak, közvetlenül követik egymást. Ennek lényege: vegyünk egy éppen aktuális műveletet, mondjuk az utasítás-végrehajtást. Ennek órajelidőtartama alatt a következő művelet, az operandus kiolvasása a cím 52
alapján a fájlregisztertárból is megtörténik. Ezt a folyamatos egymást közvetlenül követő végrehajtást nevezzük PIPELINE-nak. A ciklusidő 200ns 20MHz-es óránál, 1 mikrosec 4 MHz-nél. 38. ábra. Utasításciklus Általában a Q1 a dekódolást, a Q2 az olvasást, a Q3 a végrehajtást és a Q4 az írást jelenti. Utasítástípusok: Logikai utasítások: AND, OR XOR, NOT Aritmetikai utasítások: ADD, SUB, CLR, DEC, DECSZ, INC, INCSZ, RL, RR, SWAP, TEST Bitutasítások: CLRB, SETB, SB, SNB Adatmozgató utasítások: CALL, JMP, NOP, RET, RETI, RETLW Rendszervezérlő utasítások: SLEEP 11.4 Adatmemória fájl regiszterek A 7 bites címrész miatt a korlátozás feloldható adatmemória bankok alkalmazásával, ezek összessége alkotja a fájlregisztertömböt. Azaz egy cím egy adott bankbeli címet jelent. 53
A regisztermező két részre tagolódik: 1) működtető fájlregiszterek (belső működéshez és az I/O-hoz), más néven Speciális Funkciójú Regiszterek (SFR). Ebben találhatóak: valós idejű óra; számláló regisztere (RTCC), programszámláló (PC, Program Counter), állapotregiszter (Status Register), I/O regiszter (I/O register, PORTs), fájlregiszter-választó regiszter (FSR), további speciális regisztereket alkalmaznak az előosztó kezelésére, valamint az I/O portok konfigurálására. 2) Általános célú regiszterek (GPR General Purpose Registers). A bankok A bankokat két csoportba sorolhatjuk: Közvetlen memóriabank-kezelés: SFR-ben, a RAM-ban vannak, 4 db 128 bájtos adatmemória-bank, a bankok kiválasztása a STATUS regiszter RP0 és RP1 bitjeivel történik. Közvetett memória bankok: Az indirekt címzendő bankot a STATUS regiszter IRP bitje határozza meg. Az INDF regiszterrel végzett műveleteket az FSR regiszter által mutatott adatokkal hajtjuk végre. A memória szervezése: A mikroszámítógép működésében alapvető feladatot játszanak: W-akkumulátor, amely a műveletek operandusa, INDF (00h): A nullás című regiszterre való hivatkozás ténylegesen az FSR regiszterben lévő tartalom által meghatározott című regiszterre utal, RTCC (01h) 8 bites számláló, 54
PC (02h) az utasításmutató alsó 8 bites része, STATUS (03h) bankváltást lehet vele végezni, FSR (04h) (File Select Register) tartalma határozza meg az indirekt utasításban szereplő regiszter címét, felső három bitje az aktuális regiszterbankot. RA, RB, RC (05, 06, 07) portok, portvezérlő regiszterek. A memória két részre tagolódik: program- és adatmemóriára. Mind a két blokk saját busszal rendelkezik, ezért ugyanabban az órajelperiódusban bármelyik elérhető. Programmemória: Mivel pl. 16F84 programtárolója 13 bites, a megcímezhető memóriaterület 1 kilószó (1 szó = 14 bit). Adatmemória: SFR (Special Funkció Register), GPR (General Purrose RAM) (39. ábra). 39. ábra. Adatmemória ábrázolása 55
A két partíció két bankra tagolódik. Mindkettőben van speciális és általános célú regiszter is. A két bank között a STATUS regiszter RP1 és RP0 bitjével tudunk váltani. Mind a két bank 128 bájtot tartalmaz. Ebből az első 12 az SFR számára van lefoglalva, ezután következik a 68 db általános célú regiszter. Az SFR regiszterek a CPU- és a perifériafunkciók beállítására szolgálnak. 11.5 Utasításkészlet Bájt szintű regiszterek, kezelő utasítások: Mnemonik CLRF MOVWF MOV F DECFSZ INCFSZ Leírás f nullázása W beállítása f-be f kibontása W-be f-1 ugrik, ha f = 0 (csökken az érték eggyel). f+1 ugrik, ha f =0 (növekszik az érték eggyel) 40. ábra. Bájt szintű regiszterek, kezelő utasítások Bit szintű utasítások: BCF f, b b-dik bitet 0-ra állítja BSF f. b b-dik bitet 1-re állítja BTFSC f, b Bitteszt ugrik, ha b = 0 BTFSS f,b Bitteszt ugrik, ha b = 1 41. ábra. Bit szintű utasítások Konstans utasítások: MOVLW k Konstans bevitele W-be 42. ábra. Konstans utasítások 56
Feltételek nélküli elágazások: CALL k Szubrutin hívás a k címről GOTU k Ugrás a k címre 43. ábra. Feltétel nélküli elágazások Feltételes elágazások: BTFSC BTFSS DECFSZ INCFSZ Közvetlen vezérlő utasítások: NOP üres utasítás 11.6 A PIC mikroprocesszor egyéb utasításai 11.6.1 Kétlépcsős értékadás A MOVLW és a MOVWF utasításpár kiegészíti egymást. Kétlépcsős értékadásnak is nevezzük őket. Munkaregiszter Akkumulátor W 44. ábra. Kétlépcsős értékadás Egyszerre csak egy operandust lehet alkalmazni, ezért van MOVLW és MOVWF. (MOV mozgatást jelent). Értelmezése az ábra szerint: MOVLW: a következő értéket tedd be a munkaregiszterbe. MOVWF: a munkaregiszter tartalmát tedd át a célregiszterbe. 57
11.6.2 Veremmutató Amikor egy CALL utasítást végrehajtunk, az azt követő utasítás címe a verem tetejére másolódik, és az alatta lévő tartalmak a veremben lefelé mozognak. A RETURN végrehajtásakor a verem tetején lévő cím kerül az utasításszámlálóba. Helytelen veremkezelés (pl. CALL RETURN) nélkül hibás programműködést eredményez. 45. ábra. Veremmutató 11.6.3 Órajel-generálás A belső oszcillátor kisebb pontossága és frekvenciastabilitása miatt csak olyan hálózatokban alkalmazható, ahol ezek nem okoznak problémát. A PIC készítésekor gyárilag beállítanak egy kiolvasható értéket, amely mellett a belső oszcillátor a legpontosabb (46 ábra). 46. ábra. Órajel-generátor fajtái 11.6.4 RESET kezelése A RESET feladata a belső tárolók alapállapotba hozása. Ehhez a belső órajel pontos és megbízható működése elengedhetetlen. Bekapcsoláskor elindul egy független belső RC oszcillátorról működő számláló. Ennek az a feladata, hogy az esetleg lassú tápfeszültség növekedését kompenzálja. 58
Amikor ez túlcsordul, elindul egy második késleltetést biztosító áramkör. 11.6.5 Watchdog Timer (WDT) A Watchdog Timer egy szabadon futó RC oszcillátor. Az oszcillátor órajele léptet egy 8 bites számlálót, amelyhez egy 8 bites utóosztó tartozik. A programban elhelyezett periodikusan végrehajtott CLRDT utasítással töröljük a számlálót. Ha a program futását megzavarja valami, aminek következtében nem törli a számlálót, akkor a programtörlés elmaradása miatt a túlcsordulás nullázza és újraindítja a PIC-et (47. ábra). 47. ábra. WDT tömbvázlat 11.6.6 SLEEP mód A SLEEP mód a PIC-nek egy energiatakarékos üzemállapota. Ilyenkor a belső óra és az oszcillátor lekapcsol. A Watchdog Timer, ha engedélyezett, akkor továbbfut. A kimenetekként konfigurált I/O lábak tovább vezérelnek. A/D átalakító konvertál, ha A/D órajelét az RC oszcillátor hajtja. Ébredéskor a külső RESET az MCLR lábat L-re, majd H-ra állítja. A Watchdog Timer időtúllépést érzékel. Ennek következtében programmegszakítás történik, majd a program a SLEEP utasítást követő utasítással folytatódik. A PIC fogyasztása SLEEP állapotban 1.5 µa. 11.7 A tokok (PIC) felprogramozása A PIC program elkészítéséhez egy speciális szoftverkörnyezet szükséges, amelyet MPLAB-nek nevezünk. A kész programot ezután egy úgynevezett égető segítségével felprogramozzuk a PIC-be. 59
A PIC programozásának lépései: 1) Az MCLR láb VPP feszültségét 12V-ra emeljük. 2) A programozó berendezés a CLOCK lábon órajelekkel érvényesítve elküld egy (pl.6 bites) parancsot. 3) Ezután a PIC az órajellel ütemezve az RB= lábán keresztül válaszol. Három toktípus használatos: OTP (One Time Programming) EPROM FLASH Soros programozásnál a programmemóriába kerülő szavakat bitenként írjuk két vezeték felhasználásával (adatvonal, órajel). A programozáshoz a Vdd tápfeszültségnél nagyobb feszültség (Vpp) szükséges. A felprogramozás történhet az ICD (IN Circuit Debugger) csatlakozón keresztül. Az RB6 lábon az órajel, az RB7 lábon az adatvonal segíti a PIC felprogramozását. 11.8 Egyszerű példaprogram leírása és értelmezése #INCLUDE: A direktívával további forrásfájlokat tudunk a programba illeszteni. Ha a fájl nem az aktuális könyvtárban van, akkor kötelező megadni az útvonalat. LIST: nagyon fontos, számos opciót tartalmazó direktíva. CONFIG: a konfigurációs bitek beállítására szolgál. LIST P=16F628A #INCLUDE "P16F628A.INC" CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_PWRTE_ON&_MCLRE_ON&_BODEN_ON &_LVP_OFF 60
CBLOCK 0x20 T1 T2 ENDC ORG 0 START BSF STATUS,RP0 ;BANK1 MOVLW B'00011111' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB BCF STATUS,RP0 ;BANK0 VISSZA: MOVLW B'11000000' MOVWF PORTB CALL DELAY MOVLW B'00110000' MOVWF PORTB CALL DELAY MOVLW B'00001100' MOVWF PORTB CALL DELAY MOVLW B'00000011' MOVWF PORTB CALL DELAY GOTO VISSZA DELAY: MOVLW d'150' MOVWF T1 DEL: MOVLW d'255' MOVWF T2 DEL1: NOP NOP NOP 61
NOP NOP NOP NOP NOP DECFSZ GOTO DECFSZ GOTO RETURN END T2,f DEL1 T1,f DEL LIST: direktívák beillesztése CONFIG: konfigurációs bitek beállítása Pl.: WDT_OFF (a Watchdog Timer ki van kapcsolva, stb.) CBLOCK (definíciós blokk kezdete) 20 (memória cím) T1 és T2 a bevezetett új változók (a késleltetés miatt) ENDC: CBLOCK lista lezárása ORG0: programkezdet beállítása START: egy címke BSF, BCF: bit szintű utasítás, meg kell határozni, hogy mit állítson be. STATUS: egy regiszter RP0: bit operandus Pontosvessző utáni rész a komment, a program futását nem akadályozza Pl. ;Bank1 TRISA, TRISB regiszterek a Bank 1-ben, beállításukhoz bankváltás szükséges. B 10001111 a port bitjeinek beállítása NOP: késleltetés CALL k: szubrutin hívása k címről. Jelen esetben CALL DELAY a DELAY egy címke, és erre hivatkozik a szubrutin. DECFSZ: regiszter 62
GOTO K: ugrás vissza a k címre. Jelen esetben GOTU DEL, a DEL egy címke, és ide ugrik vissza. RETURN: visszatérés a szubrutinból. END: program vége Fenti program lehetne például egy reklámvilágítás vezérlése is. A kimenetek egy-egy betűt vezérelnek a nyolc betűs feliratból. Értelmezzük fentiek szerint szakmai nyelven, elektronikai és programozói szemmel. A PIC minden egyes kimeneti lábára (jelen esetben a PORTB) rákötünk egy-egy darab LED diódát. A 8 db dióda visszafelé kettesével fog elkezdeni világítani. Először RB7 és RB6 világít, majd a beállított idő elteltével elalszik. Ezután RB5 és RB4 kezd el világítani és így tovább. A végén elölről kezdődik a ciklus. Javasoljuk, hogy írják meg a programot, és futtassák szimulátoron, vagy akár megépített próbapanelen. 11. Önellenőrző feladatsor 1) Mit ért PIC rövidítésen? 2) Mit tud a soros programozásról? 3) Milyen utasításokat ismer, és azok mire valók? 4) Mit tud a SLEEP üzemmódról? 5) Minek a rövidítése a WDT? 12. PIC fejlesztői környezet 21. lecke Részcélkitűzések A tanuló ismerje meg az MPLAB fejlesztői környezetet. A tanuló ismerje meg a Microchip Picstart Plus programozó eszközt. A tanuló ismerjen meg más programozási lehetőséget is. 12.1 MPLAB szoftver MPLAB IDE (microprocesszor laboratórium integrált fejlesztői környezet) 63
A mikrovezérlőre történő fejlesztés nehéz és bonyolult feladat. Amennyiben nem áll rendelkezésünkre egy könnyen kezelhető és teljes körű szoftverállomány, egyenesen kilátástalannak is mondhatnánk a feladatot. Természetesen az MPLAB teljes részletes ismertetését itt nem tudjuk megvalósítani, tekintettel arra, hogy a legszerényebb segédlet (tutorial) is alig 100 oldal terjedelmű. Elérhető:http://www.microchip.com/stellent/ idcplg?idcservice=ss_get_page&nodeid=1406&ddocname=en019469&r edirects=mplab Amit ebben a tananyagban célul tűzünk ki, az a megismertetés és az érdeklődés felkeltése. A Microchip cég termékeinek alkalmazásához, a PIC mikrovezérlők terjedésének, népszerűsítésének érdekében, és természetesen a forgalom növekedését támogatandó célokkal a fejlesztéshez szükséges szoftverállományt egy integrált fejlesztői környezet (IDE Integrated Development Environment) formájában ingyen biztosítja a felhasználók részére (48. ábra). Az IDE rendszerek leveszik a fejlesztő válláról az egyes programok, illetve a különböző fejlesztőeszközök kompatibilitásának problémáját. Egy mikroprocesszoros rendszer felprogramozásához a következő szoftverek elengedhetetlenek: Editor: szerkesztő, melyben a program forráskódját meg tudjuk írni. Az editornak alkalmazkodnia kell a programozó speciális igényeihez (keresés, csere, ugrás sorra, szintaktikai jelzések stb.), és meg kell kímélni őt a munkája során felesleges funkcióktól (helyesírásellenőrzés, betűtípus, formázás stb. Fordítóprogram: melynek segítségével a forráskódból a mikroprocesszor számára feldolgozható gépi kódot tudunk készíteni. Programozó szoftver: mely a szükséges hardverelem(ek) segítségével el tudja végezni a mikroprocesszoros rendszer konfigurálását a fordító által generált programozó fájl alapján. 64
A felsorolt szoftverek elengedhetetlenek a fejlesztés folyamatához. Ezeken túlmenően hardveres meghajtóra és szimulátorra is szükségünk van. 48. ábra. MPLAB IDE fejléc Az MPLAB IDE a windowsos programoknál a már megszokott legördülő menürendszert alkalmazza, kiegészítve a használatát megkönnyítő ikonokkal és gyorsbillentyű-kombinációkkal. A legördülő menürendszer funkcióit tekintve a szokásos műveleteket kínálja föl, azzal a kiegészítéssel, hogy a feladatkörhöz illeszkedő tartalmi elemeket is megtalálhatjuk. Az alábbi néhány sorban a fejlesztéshez felkínált lényegesebb lehetőségekre hívom fel a figyelmet, hiszen mint leírtam, a legördülő menürendszer a szokásos windowsos szerkezetű, és feltételezem, hogy a tanulók ezt alapvetően ismerik. Nézzünk néhány érdekességet Pl.: File menü, HEX állományok importálása, exportálása, vagy munkaasztallal történő műveletek. Edit menü, a szerkesztő beállítása itt valósítható meg (49. ábra). 49. ábra. File menü 65
A View legördítésével megtekinthetjük a kimeneti fájlt, a mikroprocesszor regisztereit, visszafejthetjük a forráskódot assembly-re, megtekinthetjük a belső eeprom tartalmát, a file-regisztereket (50. ábra). A teljes fejlesztői környezet megismerése úgy lehetséges, ha azt az érdeklődő letölti a www.microchip.com oldalról, installálja, és a help segítségével ír néhány rövid, pár soros programot, kijavítja az abban található néhány hibát, és fordítja HEX állományba. A HEX állomány beírása nem csak a Microchip cég által árusított programozó készülékkel lehetséges (51. ábra). Úgy is eljárhatunk, hogy a lefordított HEX állományt mentjük, és egy másik, akár általunk épített programozó eszközzel és az azt működtető szoftver segítségével beírjuk. 50. ábra. View menü Ilyen például az általunk megépített és kipróbált a Willepro PCB3 elnevezésű berendezés és az azt működtető eprom 45 nevű program (52-53. ábra). Ez az égető nagyon sokféle eepromot és mikrovezérlőt ismer, első megtekintésre szinte hihetetlenül sokat, így használata is széles kört enged meg. Megépítés esetén ajánljuk egy labortápról indítani. A nyugalmi áramfelvétele 45-47 ma, programozás közben 130 ma-re ugrik fel. Reméljük, sikerült felkelteni az érdeklődést. A megvalósításhoz jó szórakozást kívánunk! 66