WDC W65C02S Central processing unit | |
---|---|
Il microprocessore WDC 65C02 | |
Prodotto | 1982 |
Progettato da | Western Design Center |
Applicazioni | home computer, sistemi embedded |
Specifiche tecniche | |
Frequenza CPU | 2 MHz / 14 MHz |
Set di istruzioni | MOS 6502 |
Microarchitettura | 8 bit |
Package | DIP40 |
Il WDC 65C02 è un microprocessore ad 8 bit prodotto nel 1982[1] da Western Design Center (WDC) come evoluzione in tecnologia CMOS del popolare 6502 di MOS Technology, realizzato in tecnologia NMOS. Il processore, nel corso degli anni, è stato prodotto su licenza anche da National Cash Register (NCR), GTE, Rockwell, Synertek e Sanyo.
Il 65C02 fu progettato da Bill Mensch dopo che questi lasciò MOS Technology nel 1976 per fondare WDC (1978). Attualmente il chip continua ad essere prodotto e venduto da WDC.[2]
Informazioni generali
[modifica | modifica wikitesto]Il nome completo del processore è W65C02S: la lettera "W" indica il produttore (WDC); la lettera "C" indica che il processore è una versione CMOS del 6502; la lettera "S" indica che il componente ha un core completamente statico, ossia che il clock principale può essere rallentato indefinitamente fino a fermarlo completamente, sia nello stato alto che in quello basso.[3]
Il W65C02S ha un'architettura interna ad 8 bit e può indirizzare fino a 65.536 locazioni di memoria (spazio di indirizzamento a 16 bit). Grazie alla die di dimensioni ridotte ed al set di istruzioni di lunghezza variabile, il processore è indicato per applicazioni di tipo SoC (System on a Chip).[3]
WDC fornisce anche il sorgente Verilog del core del 65C02 per la programmazione di integrati ASIC e FPGA.
Caratteristiche tecniche principali
[modifica | modifica wikitesto]- package: PLCC44 o DIP40
- bus dati ad 8 bit
- bus indirizzi a 16 bit (fornisce uno spazio di indirizzamento di 64 kB)
- Unità aritmetica e logica (ALU) ad 8 bit
- registri ad 8 bit:
- Program counter a 16 bit
- 69 istruzioni, implementate con 212 opcode
- 16 modalità di indirizzamento, inclusa l'indirizzamento in "pagina zero"
- istruzioni per il risparmio energetico:
WAI
("WAit-for-Interrupt") eSTP
("SToP") riducono il consumo di energia, diminuiscono la latenza degli interrupt e permettono la sincronizzazione con eventi esterni - tensione di alimentazione: da 1,8 a 5,00 Volt (tolleranza ±5%)
- consumo energetico: 0,15 e 1,5 mA per MHz, rispettivamente a 1,89 e 5,25 V
- frequenza di clock: da 2 MHz (1,8 V) a 14 MHz (5,0 V)*
- * il valore massimo è indicativo, dato che i dati tecnici forniti da WDC indicano che il chip può operare anche a clock superiori (18 MHz a 4,5 V)[3]
Differenze rispetto al 6502
[modifica | modifica wikitesto]Istruzioni
[modifica | modifica wikitesto]Il 65C02 condivide con il suo predecessore l'architettura ad 8 bit delle istruzioni e l'indirizzamento della memoria a 16 bit aggiungendo però alcune migliorie, tra cui gli opcode per inserire e togliere dallo stack i registri "X" e "Y". Gli opcode non definiti presenti nel set di istruzioni del 6502 sono stati convertiti in operazioni NOP
("NO Operation"), di lunghezza diversa.
Il 65C02 risolve anche il bug sull'istruzione di salto indiretto JMP indirizzo
che affligge il 6502: tale istruzione non funziona correttamente se il byte basso dell'indirizzo contiene il valore $FF (quindi con tutti gli indirizzi $xxFF). L'istruzione è stata migliorata ampliandola con il supporto al registro X (JMP (indirizzo,X)
) permettendo l'implementazione di una semplice tabella di salti.
Il 65C02 introduce anche istruzioni per la manipolazione dei singoli bit (RMB
, SMB
, BBR
and BBS
), la cui assenza nel 6502 ha limitato la diffusione di software quali quelli per la compressione dei dati.
Registro di stato
[modifica | modifica wikitesto]Altri problemi del 6502 risolti nella versione CMOS di WDC sono quelli relativi al registro di stato, che contiene 8 singoli flag che possono essere impostati a 1 oppure a 0. Tali impostazioni possono avvenire sia come risultato di un'operazione aritmetica o di manipolazione dei bit sia tramite codice.
N | -- | risultato negativo |
V | -- | overflow di un'operazione |
1 | -- | Non definito (sempre impostato a 1) |
B | -- | Flag di "break" (impostato dall'istruzione BRK )
|
D | -- | Modalità BCD (aritmetica decimale) attiva |
I | -- | Richiesta di interrupt (IRQ) disabilitata |
Z | -- | Risultato dell'operazione uguale a zero |
C | -- | Flag di resto di un'operazione |
In tutte le versioni NMOS del 6502 il flag decimale "D" non è inizializzato correttamente dopo un reset o quando viene eseguito un interrupt, per cui si possono avere comportamenti anomali del software. Il 65C02 sistema questo bug forzando a 0 il flag "D" dopo un reset o al momento dell'inizio del trattamento di un interrupt. Il 6502 ha, inoltre, un altro bug che affligge il flag "N", che non viene influenzato dalle operazioni in modalità BCD: anche in questo caso il 65C02 risolve il problema, al costo di un ciclo di clock aggiuntivo nel tempo di esecuzione del codice.
65SC02 e derivati
[modifica | modifica wikitesto]Il 65SC02 è un processore derivato dal 65C02 rispetto al quale si differenzia per alcune istruzioni aggiuntive: non è chiaro chi fu il progettista originale del chip, anche se in commercio era distribuito da GTE. Dal 65SC02 derivano l'Hudson HuC6280, usato nella console TurboGrafx-16, ed il 65CE02, utilizzato nel microcontrollore CSG 4510 del prototipo di computer Commodore 65.[4]
Impieghi
[modifica | modifica wikitesto]Home computer
[modifica | modifica wikitesto]- Apple IIc - versione compatta dell'Apple II (1,023 MHz)[1]
- Apple Enhanced IIe (1,023 MHz)[1]
- BBC Master, computer didattico prodotto da Acorn Computers (65SC12 a 2 MHz con un 65C102 a 4 MHz come coprocessore)
- Replica 1 di Briel Computers, un clone dell'Apple I (1 MHz)
- Laser 128, una linea di cloni dell'Apple II
Console giochi
[modifica | modifica wikitesto]- Atari Lynx (65SC02 a 4 MHz)
- TurboGrafx-16, alias PC Engine (Hudson HuC6280 a 1,78 MHz e 7,16 MHz)
- GameKing, palmare di Time Top (6 MHz)
- Watara Supervision, palmare (65SC02 a 4 MHz)
Altri prodotti
[modifica | modifica wikitesto]- Scheda acceleratrice "TurboMaster" per il Commodore 64 (65C02 a 4,09 MHz)
- molti computer dedicati al gioco degli scacchi come "Mephisto MMV", "Novag Super Constellation", "Fidelity Elite" ed altri (da 4 a 20 MHz)
Note
[modifica | modifica wikitesto]- ^ a b c Utilizzi del 65C02, su xtimeline.com. URL consultato il 01/03/2011 (archiviato dall'url originale il 3 novembre 2013).
- ^ Dettagli del WDC 65C02, su westerndesigncenter.com, Western Design Center. URL consultato il 28/02/2011.
- ^ a b c Documentazione del W65C02S (PDF), Western Design Center, 19/10/2010. URL consultato il 01/03/2011 (archiviato dall'url originale il 7 dicembre 2021).
- ^ Michael Steil, Commodore Semiconductor Group CSG65CE02 Technical Reference (TXT), su commodore.ca, 08/01/1999. URL consultato il 06/06/2014.
Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su WDC 65C02
Collegamenti esterni
[modifica | modifica wikitesto]- Comparazione fra le istruzioni del 6502, 65C02 e 65C816, su axis.llx.com.
- Differenze fra le famiglie 65xx, 65Cxx e 65SCxx, su cpu-world.com.