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.

Utasításciklus
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.

Vissza a lap tetejére

      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.

Átfedéses utasításvégrehajtás szubrutinhívás közben
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.

 
  Tudomány és Technika (test@t-es-t.hu)  

<< 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