Tudomány és Technika | Kezdőlap | PIC mikrovezérlők |
<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
PIC16xxx mikrovezérlők 2.2. Utasításvégrehajtás Utolsó frissítés: 2013.06.22. |
A mikrovezérlő bemenő órajeléből (OSC1) négy átfedés nélküli vezérlőjel (Q1, Q2, Q3, Q4) jön létre, amelyek ütemére történnek a belső folyamatok. Ez látható a következő ábrán.
2.2-1. Ábra
Az első Q1..Q4 időintervallumban megy végbe az utasításbeolvasás (Fetch) a programmemóriából az utasításregiszterbe. A PC (Program Counter) programszámláló a Q1 jel felfutó élénél eggyel növekszik. Az így kapott memóriacímnek megfelelő utasítás kiválasztásra kerül a programmemóriában. Az utasítás a Q4 felfutó élére az utasításregiszter bemenetére jut.
A következő Q1..Q4 időintervallumban történik meg az utasításvégrehajtás. A Q1 felfutó élénél az utasítás bekerül az utasításregiszterbe. Az adatmemória olvasása a Q2, írása pedig a Q4 ciklus alatt történik meg.
A fenti ábrán is megfigyelhető az átfedéses utasításvégrehajtás (Pipelining), amikor is az utasítás végrehajtásának ideje alatt már megtörténik a következő utasítás beolvasása a programmemóriából.
Az átfedéses utasításvégrehajtás programelágazás (szubrutinhívás) közbeni működésére láthatunk példát a következő ábrán.
2.2-2. Ábra
Az első utasítás végrehajtásának ideje alatt (tCY1) megtörténik a második utasítás beolvasása. A második utasítás végrehajtásakor (tCY2) beolvasódik a harmadik, stb... Normál sorrendű (elágazás nélküli) programfutásnál így minden belső ciklusra (tCY) jut utasításvégrehajtás.
A harmadik, CALL szubrutinhívó utasítás végrehajtása alatt már beolvasódik a negyedik utasítás, amelynek végrehajtását viszont csak a szubrutin végrehajtása után kell elkezdeni. Ilyenkor a negyedik utasítás címe a verembe kerül, a programszámláló (PC) pedig felveszi a CALL utasításban tárolt szubrutincímnek megfelelő értéket. A negyedik, már beolvasott utasításkód a végrehajtás helyett törlődik, és beolvasódik a szubrutin első utasítása. A feleslegesen beolvasott utasításkód törlése után a CPU valójában egy NOP utasítást hajt végre, azaz nem történik érdemi művelet.
A feltételes (BTFSC, BTFSS, DECFSZ, INCFSZ) és feltétel nélküli (GOTO) ugró utasítások is hasonlóképpen mennek végbe, csak visszatérési cím nem kerül a verembe.
Így tulajdonképpen minden programelágazás egy belső ciklussal hosszabbítja meg a programfutást.
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>
Tudomány és Technika | Kezdőlap | PIC mikrovezérlők |