Ez a lap egy ellenőrzött változata
ACOP8 egy8 bitesCISC típusúmikrovezérlő család, amelyet eredetileg aNational Semiconductor tervezett (az 1990-es években) és gyártott. (A National 2011 októbere óta formálisan aTexas 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:
A COP8 amó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étnulla 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, aDecrement 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.
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, éskihagyja 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ő.
A COP8 aHarvard-architektúrából következően külön utasítás- és adatterületekkel rendelkezik. Az utasítások15 bites címmel címezhetők, míg az adatok számára csak8 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 bitesakkumulátorregisztere van és 15 bitesprogramszá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:
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.
Ez a szócikk részben vagy egészben aCOP8 című angol Wikipédia-szócikkezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
![]() | Ez aprocesszorral kapcsolatos lap egyelőrecsonk (erősen hiányos).Segíts te is, hogy igazi szócikk lehessen belőle! |