COP8

A Wikipédiából, a szabad enciklopédiából

A COP8 egy 8 bites CISC típusú mikrovezérlő család, amelyet eredetileg a National Semiconductor tervezett (az 1990-es években) és gyártott. (A National 2011 októbere óta formálisan a Texas Instruments része, így a COP8 család tagjait azóta a TI forgalmazza.)

A COP8 neve az angol „Control Orientated Processor” kifejezésből származik, ami vezérlésorientált processzort jelent; a processzort valóban a vezérléstechnika terén való használatra tervezték, egészen a bitszintű utasításokig bezárólag.[1]

Főbb jellemzői:

  • Módosított Harvard architektúra
  • 8 bites adatsín, 15 bites címsín (ezzel 32 KiB flash/ROM adat ill. programmemória címezhető)
  • Órajel: 3,33, 10, 15, 20 MHz (28 MHz-ig túlhajtható)
  • Teljesen statikus processzor
  • Igen alacsony elektromágneses interferencia (EMI). Nincsenek ismert hibái.
  • Alacsony fogyasztás és áramfelvétel; statikus üzemmódban a fogyasztás kisebb mint 1 μA.
  • A csip számos beépített / integrált perifériát és eszközt tartalmaz.
  • Beépített eszközök:
    • memóriák: EEPROM/OTPROM, RAM
    • digitális be- és kimeneti vonalak
    • időzítők
    • analóg-digitális átalakító
    • impulzusszélesség moduláció (PWM) generátor
    • szinkron és aszinkron kommunikációs csatornák (RS232 és MICROWIRE/PLUS)
  • Üzemben programozható (in-system programming)
  • Programozási támogatás: ingyenes assembly nyelvű eszközkészlet, kereskedelmi C fordítók.
  • Üzemeltetés: ingyenes többfeladatos operációs rendszer és TCP/IP stack.

Architektúra[szerkesztés | forrásszöveg szerkesztése]

A COP8 a módosított Harvard architektúrát valósítja meg. A Harvard architektúrában a programmemória fizikailag elkülönül az adatmemóriától, tehát a programmemória lehet valamilyen ROM, míg az adatmemória RAM típusú. A kétfajta memóriaterület külön címtérrel és külön címsínekkel rendelkezik. Érdekesség, hogy ekkor pl. legalább két nulla cím létezik: egy a program, és egy az adatok számára. Mivel a COP8 módosított Harvard architektúrájú processzor, lehetséges a program- és adatmemória közötti adatcsere.

A CPU a 8 bites akkumulátorban végzi el a számtani műveleteket. Az indexelt címzést két indexregiszter: az X és B – segíti, ami lehetővé teszi a memóriatérképen belüli tetszőleges hely címzését. 16 bites és nagyobb perifériális regisztereket kezel. Veremmutatója 8 bites, utasításkészletében veremkezelő utasítások is vannak.

Utasításkészletében 49 alapvető utasítás található, amelyek többsége egybájtos és egy órajelciklus alatt hajtódik végre. Az utasítások 10 címzési módot használhatnak. Többfunkciós utasításai is vannak (pl. DRSZ, IFBNE, DCOR, RETSK, VIS és RRC; a DRSZ egy cikluskezelő utasítás, a Decrement Register and Skip if Zero rövidítése, ami a „regiszter csökkentés és átlépés, ha nulla” műveletet végzi.)

Létezik egy alap utasításkészlet, amelyet minden processzor (Basic Family) végrehajt, és a különböző kiterjesztett változatoknak (Feature Family) vannak utasításkészlet-kiterjesztései is.

Programvezérlés[szerkesztés | forrásszöveg szerkesztése]

A 3 bájtos JMP és JSR utasítások segítségével az egész címmező elérhető, ezek kétbájtos változatai csak az aktuális 4 KiB-os lapon belüli címeket érik el. Az utasításban csak a cím alsó 12 bitje adható meg, a maradék 3 címbit fenntartott.

Az utasításkészletben vannak még közvetett (indirect) ugrás és közvetett akkumulátor-betöltés utasítások is: ezeknél az akkumulátor tartalma szolgáltatja a cím alsó 8 bitjét, a felső 7 bit fenntartott.

A rövid távolságú ugrásokra 63 egybájtos utasítás szolgál, amely a programszámlálóhoz képest -32 – +31 utasítás távolságba történő ugrást végezhet.

A feltételes elágazások megoldása nem a megszokott: a processzor „feltételes kihagyás/átlépés” (conditional skip) utasításokat alkalmaz, amelyek átugorják ill. kihagyják a következő utasítást a feltétel teljesülése esetén, pl. az IFEQ utasítás összehasonlítja két operandusának tartalmát, és kihagyja a következő utasítást, ha azok egyenlőek. A kihagyott utasítás általában egy ugróutasítás, de tetszőleges utasítás átléphető.

Regiszterek és memóriatérkép[szerkesztés | forrásszöveg szerkesztése]

A COP8 a Harvard-architektúrából következően külön utasítás- és adatterületekkel rendelkezik. Az utasítások 15 bites címmel címezhetők, míg az adatok számára csak 8 bites címmező használható: ez 256 bájt adat címzését teszi lehetővé, de ezt kiterjeszti a memóriabank-váltás.

A szoftverhibák elfogását segíti az a lehetőség, hogy a processzor az összes érvénytelen utasítást nullának dekódol, ami a csapda-utasítás (trap) kódja. A címmezőkön kívülre mutató címek az egyesekkel feltöltött címként jelentkeznek, ami szintén az érvénytelen címet jelenti.

A processzornak egy 8 bites akkumulátorregisztere van és 15 bites programszámlálója. A processzor 16 kiegészítő regisztere (R0–R15) és a 8 bites programállapotszó memóriába leképzett regiszterek. Ezek elérésére külön utasítások szolgálnak, bár a közönséges memóriahozzáférési utasítások is használhatók erre a célra.

A memóriatérkép az alábbi:

COP8 adatcímmező
cím használat
0x00–6F általános célú ram, verem céljára
0x70–7F nem használt, olvasása 1-esekkel kitöltött értéket (0xFF) ad, a verem-alulcsordulás elfogásához
0x80–8F nem használt, olvasása határozatlan
0x90–BF kiegészítő perifériavezérlő regiszterek
0xC0–CF perifériavezérlő regiszterek
0xD0–DF általános célú I/O portok: L, G, I, C és D.
0xE0–E8 fenntartott
0xE9 Microwire léptetőregiszter
0xEA–ED Timer 1 regiszterek
0xEE CNTRL regiszter, a Microwire & Timer 1 vezérlőbitjei
0xEF PSW, CPU programállapotszó (állapotregiszter)
0xF0–FB R0–R11, általános célú regiszterek
0xFC R12, másként X, másodlagos indirekt mutatóregiszter
0xFD R13, másként SP, veremmutató regiszter
0xFE R14, másként B, elsődleges indirekt mutatóregiszter
0xFF R15, másként S, adatszegmens kiterjesztő regiszter

Ha a RAM nem bankos szervezésű, akkor a R15 közönséges általános célú regiszterként használható. Ha a RAM bankos szervezésű, akkor a címmező alsó része (a 0x00–7F címek) az S regiszter által kiválasztott RAM bankba mutat. Az adatcím-terület felső felében látható speciális regiszterek mindig láthatók. A bankok közötti adatmásolásra a 0xFx címen lévő adatregiszterek használhatók.

A 0. RAM bankot leszámítva a memóriabankokban mind a 128 bájt használható. A veremmutatóval címzett verem mindig a 0. bankban van, az S regiszter értékétől függetlenül.

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

  1. Robin Getz: COP8 microcontroller FAQ (angol nyelven). Faqs.org, 1995. június 20

Fordítás[szerkesztés | forrásszöveg szerkesztése]

Ez a szócikk részben vagy egészben a COP8 című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.

Források[szerkesztés | forrásszöveg szerkesztése]

További információk[szerkesztés | forrásszöveg szerkesztése]

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]