Turinys:

6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis: 7 žingsniai
6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis: 7 žingsniai

Video: 6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis: 7 žingsniai

Video: 6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis: 7 žingsniai
Video: История CPU: MOS 6502 2024, Lapkritis
Anonim
6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis
6502 Minimalus kompiuteris (su „Arduino MEGA“) 1 dalis

6502 mikroprocesorius pirmą kartą pasirodė 1975 m. Ir buvo sukurtas nedidelės komandos, kuriai vadovavo Chuck Peddle, skirta MOS technologijai. Tada jis buvo naudojamas vaizdo konsolėse ir namų kompiuteriuose, įskaitant „Atari“, „Apple II“, „Nintendo Entertainment System“, „BBC Micro“, „Commodore VIC20“ir 64. Tuo metu jis buvo vienas pigiausių rinkoje. Jis niekada neišnyko ir dabar jį naudoja mėgėjai ir profesionalai daugeliui programų.

Mano naudojama versija yra „W65C02S6TPG-14“, kurią pagamino „Western Design Center“ir kuri sunaudoja dešimt kartų mažiau energijos nei originali. Jis ypatingas tuo, kad jis neturi veikti 1 MHz dažniu kaip originalus lustas. Jis gali veikti daug lėčiau arba būti naudojamas vienu žingsniu per programą ir netgi padidintas iki 14 MHz. Lusto duomenų lapas paaiškina jo galimybes. Kiti 6502 lustai šios galimybės neturi ir neveiks tokiu būdu. Lustai šiuo metu yra prieinami „Ebay“ir kituose šaltiniuose.

Prekės

Visas naudojamas dalis šiuo metu galima įsigyti „Ebay“, „AliExpress“ir kt.

1 žingsnis: koncepcija

Įkvėpimo sėmiausi iš Beno Eaterio, kuris „YouTube“sukūrė daugybę vaizdo įrašų apie 6502 ir daugelį kitų kompiuterių ir grandinių kūrimo aspektų. Programą iš pradžių parašė jis, ir aš pakeičiau šį ir kai kuriuos jo dizainus, kad galėčiau sukurti šią instrukciją. Kitas mane įkvėpęs asmuo buvo Andrew Jacobsas, turintis „GitHub“skyrių, kuriame jis naudoja PIC mikro, kad valdytų savo 6502.

Kaip ir Benas, aš naudoju „Arduino MEGA“, kad galėčiau stebėti 6502. Aš taip pat naudoju MEGA, kad pateikčiau laikrodžio signalą, skirtingai nei Benas. Šiuo metu nenaudoju nei EEPROM, nei RAM.

2 žingsnis: Reikalavimai

Reikalavimai
Reikalavimai

Norėdami sukurti šį „kompiuterį“, elementų sąrašas yra toks:

1 x „Arduino MEGA“

1 x Vakarų dizaino centras W65C02S6TPG-14

1 x 74HC00N IC (keturių įėjimų NAND vartai) arba panašiai

1 x 74HC373N IC („Octal D“tipo skaidrus skląstis) ar pan

2 x 830 skylių duonos lentos (1 po žiupsnelį)

Įvairūs „Dupont“patinai - laidai ir jungiamieji laidai

2 x šviesos diodai (naudojau 5 mm mėlyną, nes galite išsiversti be rezistorių)

1 x 12 mm momentinis prisilietimo mygtuko jungiklis PCB, sumontuotas SPST arba panašus

1 x 1K rezistorius

2 x 0,1 uF keraminiai kondensatoriai

1 x 8 krypčių vandens šviesos palapinė 5 mm raudonas šviesos diodas (kaip nurodyta aukščiau) arba 8 šviesos diodai ir rezistoriai

PASTABA: Jei gausite neišlituotą rinkinį, galite įdėti šviesos diodus netinkamai, kad jie būtų įprastas katodas. Pridedu musės laidą (vietoj kaiščio), kad jis galėtų lengvai prisijungti kitur. VCC dabar tampa „Ground“. Žinoma, galite pasukti šviesos diodus (ant surinkto elemento) ir iš naujo lituoti, bet tai yra daug! Rinkinius šiuo metu galima įsigyti „AliExpress“.

3 žingsnis: sujungimas

Sujungimas
Sujungimas
Sujungimas
Sujungimas

Man buvo lengviau naudoti naujus „DuPont“laidus, kurie nebuvo atskirti nuo juostelės, adresams ir duomenų magistralėms.

Prijunkite 6502 9 kaištį (A0) prie MEGA 52 kaiščio, 6502 kaištis 10 (A1) iki 50 ir tt…

iki

Prijunkite 6502 kaištį 25 (A15) prie MEGA 22 kaiščio.

Iki šiol yra 16 jungčių.

taip pat

Prijunkite 6502 kaištį 26 (D7) prie MEGA 39 kaiščio, 6502 kaištis 27 (D6) iki 41 kaiščio ir tt …

iki

Prijunkite 6502 kaištį 33 (D0) prie MEGA 53 kaiščio.

Dar 8 jungtys.

Prijunkite 8 kaištį (VDD) prie 5 V MEGA.

0,1uF kondensatorius, prijungtas nuo duonos lentos 8 kaiščio iki Gnd, čia gali būti naudingas, bet nebūtinas.

Prijunkite 21 kaištį (VSS) prie „Gnd“MEGA.

2, 4, 6, 36 ir 38 kaiščius galima susieti su 5v

Prijunkite 37 kaištį (laikrodis) prie MEGA 2 ir 7 kaiščio.

Prijunkite 34 kaištį (RWB) prie MEGA 3 kaiščio.

Prijunkite kaištį 40 (iš naujo), kaip parodyta aukščiau.

4 žingsnis: grandinės testavimas

Grandinės testavimas
Grandinės testavimas

Šiame etape 6502 veiks ir programa 1 gali būti naudojama. Jei naudojate aštuonių krypčių palapinę (kaip nurodyta aukščiau), ją galima įkišti tiesiai į duonos lentą ir prijungti laidą prie žemės, arba galite naudoti 8 šviesos diodus ir rezistorius. Šviesos diodai parodys, kas yra duomenų magistralėje.

Šiame etape taip pat būtų tikslinga nustatyti ciklo () vėlavimą iki 500 ar daugiau, kad būtų galima stebėti, kas vyksta.

Serijiniame monitoriuje turėtumėte gauti panašią išvestį, kaip nurodyta aukščiau. Paspaudus Reset, procesorius praeina 7 ciklus ir tada ieško programos pradžios $ FFFC ir $ FFFD vietose. Kadangi 6502 nėra fizinių adresų, kuriuos reikia skaityti, turime juos pateikti iš MEGA.

Aukščiau išvestyje 6502 nuskaito $ FFFC ir $ FFFD ir gauna 00 USD ir 10 USD (mažas baitas, didelis baitas), o tai yra programos pradžia nuo 1000 USD. Tada procesorius pradeda vykdyti programą $ 1000 vietoje (kaip nurodyta aukščiau). Šiuo atveju rodomi A9 ir 55 USD, t. Y. 55 USD LDA (į akumuliatorių įkelkite 85 USD). Vėlgi, kadangi nėra fizinės atminties vietos, MEGA imituoja tai, kas skaitoma iš duomenų magistralės.

$ 55 (85) suteikia dvejetainį modelį 01010101, o pasukus 1 bitą į kairę - $ AA (170) 10101010.

Programa rodo, kad procesorius veikia teisingai, tačiau netrukus tampa šiek tiek nuobodu, todėl pereikite prie kitos dalies.

5 veiksmas: kitas žingsnis

Kitas žingsnis
Kitas žingsnis
Kitas žingsnis
Kitas žingsnis

Aukščiau esanti „spagečių krūva“tikriausiai yra kažkas panašaus į tai, ką turėsite po šio etapo.

Toliau prie duonos lentos reikia pridėti 74HC373N ir 74HC00N IC.

Deja, 373 kaiščiai nesutampa su duomenų magistralėmis, todėl juos reikės užkabinti laidais.

Prijunkite 5V prie 20 kaiščio.

Prijunkite įžeminimą prie 10 kaiščio.

Prijunkite 6502 kaištį 33 (D0) prie 74HC373N 3 kaiščio (D0)

ir taip pat su kaiščiais D1 - D7.

Q0 - Q7 yra išėjimai ir juos reikės prijungti prie šviesos diodų langelio arba atskirų šviesos diodų ir rezistorių.

Su 74HC00 reikia tik 2 jo vartų

Prijunkite 5V prie 14 kaiščio.

Prijunkite įžeminimą prie 7 kaiščio.

Prijunkite 6502 kaištį 17 (A8) prie 74HC00 1 kaiščio (1A)

Prijunkite 6502 kaištį 25 (A15) prie 74HC00 2 kaiščio (1B)

Prijunkite 6502 kaištį 34 (R/W) prie 74HC00 5 kaiščio (2B)

Prijunkite 74HC00 3 kaištį (1Y) prie 74HC00 4 kaiščio (2A)

Prijunkite 74HC00 6 kaištį (2Y) prie 74HC373N 11 kaiščio (LE)

Prijunkite 74HC373N 11 kaištį (LE) prie 74HC373N 1 kaiščio (OE)

Galite prijungti mėlyną šviesos diodą prie 1Y ir įžeminimo, taip pat 2Y prie žemės, tai parodys, kada vartai yra aktyvūs.

Galiausiai pakeiskite onClock procedūros eilutę iš programos1 į programą2

setDataPins (programa2 [poslinkis]);

6 žingsnis: programa

Programa
Programa
Programa
Programa

6502 monitoriaus programoje yra dvi aukščiau aprašytos 6502 procedūros.

Programa vis dar kuriama ir šiek tiek netvarkinga.

Vykdant programą2, ciklo () vėlavimai gali būti 50 ar mažiau ir netgi visiškai pašalinti. Komentuodami eilutes „Serial.print ()“, 6502 veikia greičiau. Atjungus 373 kaištį (OE) nuo 11 kaiščio (LE) gaunami skirtingi rezultatai. Atjungus 373 kaištį 1 ir 11 iš NAND vartų, galite pamatyti, kas yra duomenų magistralėje kiekvieną laikrodžio ciklą.

Jums gali tekti susieti OE su žeme, o ne palikti ją plaukti, nes 8 išvesties linijos yra išjungtos, jei šis kaištis pakyla aukštai. Kai LE kaištis yra aukštas, išvesties kaiščiai yra tokie patys kaip įėjimai. Mažai sumažinus LE kaištį, išėjimai fiksuojami, ty jei įvesties kaiščiai pasikeičia, išėjimai išlieka tie patys.

Stengiausi, kad programa būtų kuo paprastesnė, kad ją būtų lengviau suprasti.

Eksperimentuodami su laiko vėlavimu galite tiksliai sekti, ką daro 6502.

Žemiau yra dvi programos (abi veikia 1000 USD) „6502 Assembler“:

programa1

LDA#55 USD

BE PROBLEMŲ

ROL

1010 USD

1000 JMP dolerių

ROL pasuka akumuliatoriaus turinį vieną bitą į kairę, o tai reiškia, kad 55 USD dabar tampa AA.

Įrenginio kodas (šešioliktainis): A9 55 EA 2A 8D 10 10 4C 00 10

programa2

LDA#01 USD

8100 JAV dolerių

ADC#$ 03

8100 JAV dolerių

JMP 1005 USD

Įrenginio kodas (šešioliktainis): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Programoje2 dabar yra fizinis adresas $ 8100, kur 74HC373 yra adreso magistralėje.

y., A15 iš 6502 yra 32768 (8000 USD), o A8 - 256 (0100 USD) = 33024 (8100 USD).

Taigi, kai 6502 rašo į 8100 USD (STA 8100 USD), 6502 R/W yra žemas, o 6502 duomenų magistralės duomenys užfiksuojami, kai 373 LE sumažėja. Dėl 74HC00 NAND vartų signalai yra atvirkščiai.

Aukščiau pateiktame ekrano spaudinyje antrasis rašymas padidėjo 3 (ADC#$ 03) - nuo 7F iki 82 USD.

Iš tikrųjų konkrečiai 373 vietai būtų naudojamos daugiau nei 2 adresų magistralės eilutės. Kadangi tai yra vienintelis fizinis adresas iš galimų 65536, jis parodo, kaip veikia adresų magistralė. Galite eksperimentuoti su skirtingais adresų kaiščiais ir įdėti juos į kitą vietą. Žinoma, turėsite pakeisti STA operandus į naują vietą. pvz. Jei naudotumėte adresų eilutes A15 ir A9, adresas būtų 8200 USD (32768 + 512).

7 žingsnis: Išvada

Išvada
Išvada

Bandžiau pademonstruoti, kaip lengva paleisti 6502 ir pradėti veikti.

Nesu šios srities ekspertas, todėl laukiu konstruktyvių komentarų ar informacijos.

Maloniai prašome toliau tai plėtoti ir man būtų įdomu, ką padarėte.

Ketinu prie projekto pridėti EEPROM, SRAM ir 6522, taip pat ateityje įdėti juos į juostos plokštę.

Rekomenduojamas: