WDC 65C02

A Wikipédiából, a szabad enciklopédiából
WDC 65C02 mikroprocesszor PDIP-40 tokozásban

A Western Design Center WDC 65C02 jelű mikroprocesszora a népszerű NMOS-alapú MOS Technology 6502 8 bites CPU CMOS technológiával készült, feljavított változata – a CMOS terveket Bill Mensch, a MOS 6502 egyik eredeti tervezője, készítette 1981-ben a Western Design Centernél. Az első működő csipeket 1982 tavaszán szállították az Apple-nek.[1] Az eltelt idő alatt a 65C02-t több más cég is gyártotta, például a NCR, GTE, Rockwell, Synertek és Sanyo.

Bevezetés és jellemzők[szerkesztés]

A W65C02S jelű csip a 65C02 mikroprocesszor Western Design Center-nél készült változata. Az „S” jelölés a teljesen statikus magot jelöli, ami azt jelenti, hogy az elsődleges órajel (Ø2) tetszőlegesen lelassítható vagy akár teljesen meg is állítható akármelyik fázisban, és ezalatt a processzor teljes mértékben megőrzi az állapotát, tehát nem veszti el az adatait, és az órajel megindításával egyszerűen folytatja a működést. Tipikusan a CMOS technológiájú processzorok dinamikus maggal rendelkeznek és elvesztik a belső regisztereik tartalmát (ezért rendszerösszeomlás következik be), ha az órajel megszakad vagy a frekvencia kilép a meghatározott minimum és maximum értékek közül.

A WDC 65C02 regiszterei
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (bitpozíció)
Fő regiszterek
  A Akkumulátor
Indexregiszterek
  X X index
  Y Y index
0 0 0 0 0 0 0 1 SP Veremmutató[r 1]
Programszámláló
PC Programszámláló[r 2]
Állapotregiszter
  N V - B D I Z C P, állapotbitek[r 3]
  1. SP mint stack pointer, veremmutató
  2. PC mint program counter, programszámláló
  3. processzor-állapotbitek, jelzőbitek

A W65C02S egy kisfogyasztású általános célú 8 bites mikroprocesszor (8 bites regiszterek és adatsín), programszámlálója és címsíne 16 bites. Utasításkészlete változó hosszúságú utasításokat tartalmaz. A mag méretét a tervezéskor manuálisan optimalizálták, abból a célból, hogy a W65C02S könnyen alkalmazható legyen különféle egycsipes rendszerek (SoC) processzoraként.

A WDC Verilog hardverleíró modell segítságável lehetővé teszi a 65C02 mag beépítését alkalmazásspecifikus integrált áramkörökbe (ASIC) és FPGA áramkörökbe. A félvezetőgyártóktól megszokott módon, a cég fejlesztőrendszert is biztosít a processzorhoz, amelynek fejlesztőkártya, hardveremulátor (in-circuit emulator, ICE) és szoftverfejlesztő rendszer is része.

Általános logikai jellemzők[szerkesztés]

Egyedi jellemzők[szerkesztés]

  • A Vector Pull (VPB) kimenet jelzi a megszakításvektorok megcímzését (tehát ha egy vektort valamilyen utasítás éppen megcímez)
  • A WAit-for-Interrupt (WAI) és SToP (STP) utasítások csökkentik a fogyasztást és a megszakítás-késleltetést és lehetővé teszik a szinkronizálást külső eseményekkel

Elektromos jellemzők[szerkesztés]

  • Névleges tápfeszültség 1,71 V-tól 5,25 V-ig
  • A mag áramfelvétele 0,15 és 1,5 mA per MHz, 1,89 V és 5,25 V feszültségen, rendre
  • A változó hosszú utasításkészlet lehetővé teszi a kódméret optimalizálását (a fix hosszú utasításkészletekkel ellentétben), amelynek eredménye a fogyasztásban is jelentkezik
  • A statikus logika lehetővé teszi az órajel megállítását, ami csökkenti a fogyasztást

A WDC 65C02 képes 1,8 és 5 volt (±5%) közötti tetszőleges feszültséggel működni, a különböző feszültségszinteket egy és ugyanaz a csipkialakítás biztosítja. A különböző feszültségekhez tartozó processzorparaméterek változását az adatlapok külön tartalmazzák, néhány jellemző feszültségszinttel illusztrálva azokat (1,8, 2,5, 3,0, 3,3, 5,0 V ±5%). A tipikus eszközök sebessége 18 MHz körül lehet 4V, és 6 MHz 1,8V feszültségen.

A csipek jelölésében a -14 utótag nem a szigorúan vett 14 MHz-es határt jelenti. A WDC6502 ehhez közeli óríajeleken is megfelelően működik, így pl. lehetséges 13,5 MHz (digitális SDTV luma mintavételezési frekvencia), 14,31818.. MHz (NTSC színvivőjel × 4), 14,75 MHz (PAL négyzetes pixeles), 14,7456 (baud rate kristály), 16 MHz és így tovább. A minimum VDD értékek a frekvenciával együtt nőnek.

Bill Mensch rámutatott, hogy az Fmax értéke csipen kívüli tényezőktől is függ, például a csatlakozók kapacitív terhelésétől. Rövid jelutak és kevesebb csatlakozó eszköz használatával csökkenthető a terhelés, ezéltal növelhető a Fmax frekvencia. A PLCC tokozásnak kisebb lábtól lábig kapacitanciája van, mint a DIP-40 tokozásnak.

Összehasonlítás a MOS 6502-vel[szerkesztés]

Utasításkészlet[szerkesztés]

A 65C02 osztozik elődjének 8 bites utasításkészlet-architektúráján és 16 bites, $0000-től $FFFF-ig címezhető memóriaterületén, amely összesen 64 KiB memória címzését teszi lehetővé. A „nullás lap” $0000-től $00FF-ig terjed. Az „egyes lap” címtere $0100-tól $01FF-ig terjed és a verem számára van fenntartva. A verem lefelé növekszik, a veremmutató kezdőértéke $01FF és csökken a verembe beíró utasításokkal, tehát a veremméret a kisebb címek felé növekszik.

Számos javítást és újabb dokumentált opkódot kapott, ezek közül a leghasznosabbak talán az X és Y indexregiszterek verembe írására és onnan való kivételére szolgáló utasítások. A nem definiált opkódokat ebben a processzorban NOP utasításokká alakították, bár ezek utasításhossza továbbra is változó.

Igen fontos, hogy a hibás „indirekt ugrás laphatár átlépésével” utasítást (JMP (<ADDR>), ahol az <ADDR> cím átlépi egy memórialap határát) kijavították, amivel megszűnt a figyelmetlen assembly programozók által folyamatosan elkövetett hibák egyik fő forrása. Ezt az utasítást tovább is fejlesztették az X indexregiszter használatával, ami már tömbindexelést is lehetővé tett, tehát a JMP (<ADDR>,X) utasítás használatával egyszerű ugrótáblákat lehet kialakítani és alkalmazni.

A 65C02 bizonyos változatai, például a WDC W65C02S és a Rockwell R65C00 család, egyedi bitkezelő utasításokkal is rendelkeznek (a RMB, SMB, BBR és BBS utasítások). A sorozat egyszerűsített 65SC02 tagjából ezek hiányoznak.

Állapotregiszter[szerkesztés]

A 65C02-ben javítottak a 6502 állapotregiszterrel kapcsolatos hibáján is. Az állapotregiszter 8 rendszerállapot jelzőbitet tartalmaz, egyesek aritmetikai vagy bitműveleti utasítások eredményét, mások program által beállított állapotokat jelölnek.

A 6502 állapotbitjei és ezek beállított értékének jelentése:
N negatív eredmény
V előjelbit túlcsordulás
1 nem definiált (mindig beállítva)
B Break jelző (a BRK utasítás állítja)
D decimális mód engedélyezett
I IRQ tiltva
Z nulla eredmény (zérus)
C átvitelbit,
aritmetikai utasítások eredményében

A 6502 összes NMOS változatában a D jelzőbit nem kap határozott értéket a reset után, és szintén a feldolgozott megszakítások után sem, ami véletlenszerű viselkedéshez vezethet. Emiatt a 6502 programozók kénytelenek CLD utasítást tenni a reset-kezelő programrészekbe a végrehajtás szerint minél előrébb (ez általában a második végrehajtandó utasítás a SEI után), és ugyanígy a megszakításkezelő rutinok elejére is.

A 65C02 úgy oldja meg ezt a problémát, hogy a D jelzőbitet törli a reset folyamán vagy egy megszakítási kérelem elfogadásakor, miután az állapotregiszter el lett mentve a verembe.

Hasonlóan, az NMOS 6502-kben az N jelzőbit értéke hibás, mikor a processzor decimális üzemmódban működik. A 65C02 ezt a problémát is javítja (egy plusz órajelciklus árán), ám ezzel nagy mértékben növeli a decimális üzemmód használhatóságát.

A 65SC02[szerkesztés]

A 65SC02 a WDC 65C02 egy variánsa, hozzáadott utasításokkal rendelkezik. Ez volt az alapja a HuC6280 csipnek, amit a NEC épített a TG-16 (PC-Engine) videójáték-konzolaiba, és ez szolgált a 65CE02 alapjául, amely a MOS Technology 4510 mikrovezérlőbe épített CPU mag – a 4510-est a Commodore 65 számítógépben alkalmazták 1990-ben, de ennek csak prototípusai készültek, végül nem került piacra.[2]

A 6502, de a 65C02 is igen gyenge teljesítményt mutat a bitműveletek terén, ami rontotta a bitorientált tömörítési algoritmusok, pl. a Huffman-kódolás és hasonlók működését, emiatt a 65SC02 utasításkészletében újabb, hatékony bitműveleteket implementáltak (elágazás bitállapot szerint, bit beállítása/törlése, memóriabitek tesztelése és állítása/törlése akkumulátor szerint, relatív szubrutincímzés (BSR))[2]

A 65C02 jelentősebb alkalmazásai[szerkesztés]

Otthoni számítógépek[szerkesztés]

Videójáték-konzolok[szerkesztés]

Más termékek[szerkesztés]

A szovjet 4.К602ВМ1 (4.K602VM1) mikroprocesszor jellemzői[szerkesztés]

Szovjet gyártmányú 4.К602ВМ1 csip

A 65С02 mikroprocesszor szovjet változata az 1980-as évek végén készült el a moszkvai Fizikai és Technológiai Tudományos Kutatóközpontban (Научно-исследовательский центр физики и технологии НИЦФТ / NICFT; НПО Физика) A processzor kiindulópontjául a Rockwell R65C02P2 modell szolgált. A 4.К602ВМ1 jelű mikroprocesszort katonai beágyazott rendszerekben használták fel; ez a processzor az ún. 5-ös minőségi kategóriában készült, ami a hadiipari felhasználású termékek és alkatrészek osztályát jelenti; a −60…+125 °C hőmérsékleti tartományban működik, órajele max. 1 MHz. Ennek általános ipari célú változata a 0…+70 °C hőmérsékleti tartományban 2 MHz-ig terjedő órajellel működhet. A NICFT intézetben alkalmazott gyártási technológia egy érdekes sajátossága, hogy lehetővé teszi a nagyobb feszültségen való üzemeltetést, ami ennél a processzornál elérhette akár a 18 voltot is. Ezáltal a processzor jelentős „túlhajtást” képes megbízhatóan elviselni, így pl. 15 voltos feszültségen stabilan működik 5 MHz-es órajelen.

Jegyzetek[szerkesztés]

  1. Selby Bateman: The Brains Behind The Brains (angol nyelven). Compute!, 1986. [2013. május 1-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013) „When did you start work on the 65C02? Mensch: In 1981. We delivered the first chips to Apple in the spring of 1982. ...”
  2. a b Commodore Semiconductor Group CSG65CE02 Technical Reference. zimmers.net, 2009. augusztus 18. (Hozzáférés: 2013. június 21.)

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a WDC 65C02 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. 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.

Források[szerkesztés]

További információk[szerkesztés]

Kapcsolódó szócikkek[szerkesztés]