Satura rādītājs:

6502 Minimālais dators (ar Arduino MEGA) 1. daļa: 7 soļi
6502 Minimālais dators (ar Arduino MEGA) 1. daļa: 7 soļi

Video: 6502 Minimālais dators (ar Arduino MEGA) 1. daļa: 7 soļi

Video: 6502 Minimālais dators (ar Arduino MEGA) 1. daļa: 7 soļi
Video: История CPU: MOS 6502 2024, Novembris
Anonim
6502 Minimālais dators (ar Arduino MEGA) 1. daļa
6502 Minimālais dators (ar Arduino MEGA) 1. daļa

6502 mikroprocesors pirmo reizi parādījās 1975. gadā, un to izstrādāja neliela komanda, kuru vadīja Chuck Peddle MOS tehnoloģijai. Toreiz to izmantoja videokonsoles un mājas datoros, tostarp Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 un 64. Tolaik tas bija viens no lētākajiem tirgū. Tas nekad nav īsti pazudis, un tagad to izmanto hobiji un profesionāļi daudziem lietojumiem.

Versija, kuru es izmantoju, ir W65C02S6TPG-14, ko izgatavojis Rietumu dizaina centrs un kas patērē desmit reizes mazāk enerģijas nekā oriģināls. Tas ir īpašs ar to, ka tam nav jādarbojas ar 1 MHz frekvenci tāpat kā oriģinālajai mikroshēmai. Tas var darboties daudz lēnāk vai tikt izmantots, lai vienu soli cauri programmai un pat palielinātu līdz 14 MHz. Mikroshēmas datu lapa izskaidro tās iespējas. Citām 6502 mikroshēmām nav šīs iespējas, un tās nedarbosies šādā veidā. Mikroshēmas pašlaik ir pieejamas vietnē Ebay, kā arī citos avotos.

Piegādes

Visas izmantotās detaļas šobrīd ir pieejamas Ebay, AliExpress un citās.

1. solis: koncepcija

Iedvesmu guvu no Bena Ētera, kurš vietnē YouTube ir izveidojis virkni video par 6502 un daudziem citiem datoru un shēmu veidošanas aspektiem. Programmu sākotnēji uzrakstīja viņš, un es esmu mainījis šo un dažus viņa dizainus, lai izstrādātu šo pamācību. Vēl viena persona, kas mani iedvesmoja, bija Endrjū Džeikobs, kuram ir sadaļa par GitHub, kur viņš izmanto PIC mikro, lai kontrolētu savu 6502.

Tāpat kā Bens, es izmantoju Arduino MEGA, lai uzraudzītu 6502. Es arī izmantoju MEGA, lai nodrošinātu pulksteņa signālu atšķirībā no Bena. Pašlaik es arī neizmantoju EEPROM vai RAM.

2. darbība. Prasības

Prasības
Prasības

Lai izveidotu šo "datoru", ir šāds vienumu saraksts:

1 x Arduino MEGA

1 x Rietumu dizaina centrs W65C02S6TPG-14

1 x 74HC00N IC (četrkodolu 2 ieejas NAND vārti) vai līdzīgi

1 x 74HC373N IC (Octal D tipa caurspīdīgs aizbīdnis) vai tamlīdzīgi

2 x 830 caurumu maizes dēļi (1 pie šķipsniņa)

Dažādi Dupont vīrieši - vadi un savienojuma vadi

2 x gaismas diodes (es izmantoju 5 mm zilu, jo jūs varat izkļūt bez rezistoriem)

1 x 12 mm īslaicīgs pieskāriena spiedpogas slēdzis PCB uzstādīts SPST vai līdzīgs

1 x 1K rezistors

2 x 0,1 uF keramikas kondensatori

1 x 8 virzienu ūdens gaismas telts 5 mm sarkana gaismas diode (kā iepriekš) vai 8 gaismas diodes un rezistori

PIEZĪME. Ja saņemat nepārlošanas komplektu, varat ievietot gaismas diodes nepareizi, lai tie būtu parasts katods. Es piestiprinu mušas vadu (tapas vietā), lai to varētu viegli savienot citur. VCC tagad kļūst par zemi. Protams, jūs varat pagriezt gaismas diodes (uz samontēta priekšmeta) un atkārtoti lodēt, bet tas ir daudz faff! Komplekti pašlaik ir pieejami vietnē AliExpress.

3. solis: salieciet to kopā

Liekot to kopā
Liekot to kopā
Liekot to kopā
Liekot to kopā

Man bija vieglāk izmantot jaunus DuPont vadus, kas nebija atdalīti no lentes adrešu un datu kopnēm.

Savienojiet 6502 9. tapu (A0) ar MEGA 52. tapu, 6502 10. tapa (A1) līdz 50. tapai utt.…

līdz

Savienojiet 6502 25. tapu (A15) ar MEGA 22. tapu.

Līdz šim ir 16 savienojumi.

Tāpat

Savienojiet 6502 26. tapu (D7) ar MEGA 39. tapu, 6502 27. tapa (D6) līdz 41. tapai utt.…

līdz

Savienojiet 6502 33. tapu (D0) ar MEGA 53. tapu.

Vēl 8 savienojumi.

Pievienojiet 8. tapu (VDD) pie 5 V uz MEGA.

Šeit var būt noderīgs 0,1uF kondensators, kas savienots no maizes dēļa 8. tapas līdz Gnd.

MEGA savienojiet 21. tapu (VSS) ar Gnd.

Tapas 2, 4, 6, 36 un 38 var piesiet pie 5 v

Pievienojiet 37. tapu (pulkstenis) MEGA 2. un 7. tapai.

Pievienojiet 34. tapu (RWB) MEGA 3. tapai.

Pievienojiet tapu 40 (atiestatīšana), kā parādīts iepriekš.

4. solis: ķēdes pārbaude

Ķēdes pārbaude
Ķēdes pārbaude

Šajā posmā 6502 darbosies un varēs izmantot programmu1. Ja izmantojat astoņvirzienu telti (kā minēts iepriekš), to var ievietot tieši maizes plāksnē un mušas vadu savienot ar zemi, vai arī varat izmantot 8 gaismas diodes un rezistorus. Gaismas diodes parādīs, kas atrodas datu kopnē.

Šajā posmā būtu arī jāiestata aizkave cilpā () uz 500 vai vairāk, lai sekotu notiekošajam.

Jums vajadzētu iegūt līdzīgu izvadi sērijas monitorā, piemēram, iepriekš. Nospiežot Atiestatīt, procesors iziet 7 ciklus, un tad tas meklē programmas sākumu vietās $ FFFC un $ FFFD. Tā kā 6502 nav fizisku lasāmu adrešu, mums tās ir jāpiegādā no MEGA.

Iepriekš minētajā iznākumā 6502 skan $ FFFC un $ FFFD, un tas saņem 00 USD un 10 USD (zems baits, augsts baits), kas ir programmas sākums pie 1000 USD. Pēc tam procesors sāk izpildīt programmu vietā $ 1000 (kā norādīts iepriekš). Šajā gadījumā tas ir $ A9 un $ 55, t.i., LDA#$ 55 (ielādējiet akumulatorā 85). Atkal, tā kā nav fiziskas atmiņas vietas, MEGA simulē to, kas tiek nolasīts no datu kopnes.

$ 55 (85) dod bināro modeli 01010101, un, pagriežot 1 bitu pa kreisi, iegūst $ AA (170) 10101010.

Programma parāda, ka procesors darbojas pareizi, bet drīz kļūst mazliet garlaicīgs, tāpēc pārejiet pie nākamās daļas.

5. darbība. Nākamais solis

Nākamais solis
Nākamais solis
Nākamais solis
Nākamais solis

Iepriekš minētā "spageti kaudze", iespējams, ir kaut kas līdzīgs tam, kas jums būs pēc šī posma.

Tālāk maizei jāpievieno 74HC373N un 74HC00N IC.

Diemžēl 373 tapas neatbilst datu kopnei, tāpēc tās būs jāsavieno ar vadiem.

Pievienojiet 5v pie tapas 20.

Pievienojiet zemi 10. tapai.

Savienojiet 6502 33. tapu (D0) ar 74HC373N 3. tapu (D0)

un tāpat ar tapām D1 līdz D7.

Q0 līdz Q7 ir izejas, un tām būs jāpievienojas LED gaismeklim vai atsevišķām gaismas diodēm un rezistoriem.

Ar 74HC00 ir nepieciešami tikai 2 no tā vārtiem

Pievienojiet 5v pie tapas 14.

Pievienojiet zemi 7. tapai.

Savienojiet 6502 17. tapu (A8) ar 74HC00 1. tapu (1A)

Savienojiet 6502 25. tapu (A15) ar 74HC00 2. tapu (1B)

Savienojiet 6502 34. tapu (R/W) ar 74HC00 5. tapu (2B)

Savienojiet 74HC00 3. tapu (1Y) ar 74HC00 4. tapu (2A)

Savienojiet 74HC00 6. tapu (2Y) ar 74HC373N 11. tapu (LE)

Savienojiet 74HC373N 11. tapu (LE) ar 74HC373N 1. tapu (OE)

Jūs varat savienot zilu gaismas diodi ar 1Y un zemi, kā arī 2Y ar zemi, tas norādīs, kad vārti ir aktīvi.

Visbeidzot mainiet onClock procedūras rindu no programmas1 uz programmu2

setDataPins (programma2 [nobīde]);

6. solis: programma

Programma
Programma
Programma
Programma

Programmā 6502-Monitor ir divas iepriekš aprakstītās 6502 procedūras.

Programma vēl tiek izstrādāta un nedaudz nesakārtota.

Palaižot programmu2, cilpas () aizkave var būt 50 vai mazāk un pat tikt novērsta. Komentējot rindas Serial.print (), 6502 darbojas arī ātrāk. Atvienojot 373 tapu 1 (OE) no tapas 11 (LE), tiek iegūti dažādi rezultāti. Atvienojot 373 tapu 1. un 11. tapu no NAND vārtiem, varat redzēt, kas atrodas datu kopnē katrā pulksteņa ciklā.

Jums var būt nepieciešams piesiet OE pie zemes, nevis atstāt to peldošu, jo 8 izejas līnijas ir atspējotas, ja šī tapa ir augsta. Ja LE tapa ir augsta, izejas tapas ir tādas pašas kā ieejas. Pazeminot LE tapu, izejas tiek fiksētas, t.i., ja ieejas tapas mainās, izejas paliek nemainīgas.

Esmu mēģinājis saglabāt programmu pēc iespējas vienkāršāku, lai to būtu vieglāk saprast.

Eksperimentējot ar laika aizkavi, varat precīzi sekot līdzi tam, ko dara 6502.

Zemāk ir divas programmas (abas darbojas ar adresi 1000 USD) 6502 Assembler:

programma1

LDA#55 USD

NOP

ROL

1010 ASV dolāri

JMP 1000 USD

ROL pagriež akumulatora saturu par vienu bitu pa kreisi, kas nozīmē, ka 55 ASV dolāri tagad kļūst par AA.

Iekārtas kodā (hex): A9 55 EA 2A 8D 10 10 4C 00 10

programma2

LDA#$ 01

8100 USD

ADC#$ 03

8100 USD

JMP 1005 USD

Iekārtas kodā (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Programmā2 tagad ir fiziska adrese $ 8100, kur 74HC373 atrodas adreses kopnē.

i., A15 no 6502 ir 32768 (8000 USD) un A8 ir 256 (0100 USD) = 33024 (8100 USD).

Tātad, kad 6502 raksta uz USD 8100 (STA USD 8100), 6502 R/W ir zems, un dati par 6502 datu kopni tiek bloķēti, kad 373 LE pazeminās. 74HC00 NAND vārtu dēļ signāli ir apgriezti.

Iepriekš redzamajā ekrāna drukā otrais rakstītais ir palielinājies par 3 (ADC#$ 03) - no 7 USD līdz 82 USD.

Patiesībā 373 konkrētajai atrašanās vietai tiktu izmantotas vairāk nekā 2 adrešu kopnes līnijas. Tā kā šī ir vienīgā fiziskā adrese no iespējamajiem 65536, tā parāda, kā darbojas adreses kopne. Jūs varētu eksperimentēt ar dažādām adatu tapām un ievietot to citā vietā. Protams, jums būs jāmaina STA operandi uz jauno atrašanās vietu. piem. Ja izmantotu adrešu rindas A15 un A9, adrese būtu USD 8200 (32768 + 512).

7. solis. Secinājums

Secinājums
Secinājums

Esmu mēģinājis parādīt, cik viegli ir iedarbināt 6502.

Es neesmu eksperts šajā jomā, tāpēc es priecāšos par jebkādiem konstruktīviem komentāriem vai informāciju.

Esiet laipni aicināti to attīstīt tālāk, un mani interesētu jūsu paveiktais.

Es plānoju projektam pievienot EEPROM, SRAM un 6522, kā arī nākotnē to novietot uz lentes.

Ieteicams: