Orodha ya maudhui:

Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1: Hatua 7
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1: Hatua 7

Video: Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1: Hatua 7

Video: Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1: Hatua 7
Video: Гарри Льюис, тур по переводчику BASIC 2024, Novemba
Anonim
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1
Kompyuta ndogo ya 6502 (na Arduino MEGA) Sehemu ya 1

Microprocessor 6502 ilitokea kwanza mnamo 1975 na iliundwa na timu ndogo iliyoongozwa na Chuck Peddle kwa Teknolojia ya MOS. Zamani hizo zilitumika katika koni za video na kompyuta za nyumbani pamoja na Atari, Apple II, Mfumo wa Burudani wa Nintendo, BBC Micro, Commodore VIC20 na 64. Wakati huo ilikuwa moja ya bei rahisi kwenye soko. Haijaenda kabisa na sasa inatumiwa na wataalamu wa kupendeza na wataalamu kwa matumizi mengi.

Toleo ninalo tumia ni W65C02S6TPG-14 ambayo imetengenezwa na Western Design Center na hutumia nguvu mara kumi chini ya ile ya asili. Ni maalum kwa kuwa haifai kukimbia kwa 1 MHz kama chip asili. Inaweza kukimbia polepole sana au kutumiwa kuchukua hatua moja kupitia programu na hata kupandisha hadi 14 MHz. Karatasi ya Takwimu ya chip inaelezea uwezo wake. Chips zingine 6502 hazina uwezo huu na hazitaendesha hivi. Chips zinapatikana kwa sasa kwenye Ebay na vyanzo vingine.

Vifaa

Sehemu zote zinazotumika zinapatikana kwa sasa kwenye Ebay, AliExpress na zingine.

Hatua ya 1: Dhana

Nilipata msukumo kutoka kwa Ben Eater ambaye ametengeneza video kadhaa kwenye YouTube kuhusu 6502 na mambo mengine mengi ya kujenga kompyuta na nyaya. Programu hiyo iliandikwa na yeye hapo awali na nimebadilisha hii na miundo yake mingine ili kupata hii inayoweza kufundishwa. Mtu mwingine aliyenihamasisha alikuwa Andrew Jacobs ambaye ana sehemu kwenye GitHub ambapo anatumia kifaa cha PIC kudhibiti 6502 yake.

Kama Ben, ninatumia Arduino MEGA kufuatilia 6502. Ninatumia pia MEGA kutoa ishara ya saa tofauti na Ben. Kwa sasa situmii EEPROMs yoyote au RAM pia.

Hatua ya 2: Mahitaji

Mahitaji
Mahitaji

Kuunda "kompyuta" hii orodha ya vitu ni kama ifuatavyo:

1 x Arduino MEGA

1 x Kituo cha Ubunifu cha Magharibi W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-pembejeo NAND lango) au sawa

1 x 74HC373N IC (Octal D-aina ya latch ya uwazi) au sawa

2 x 830 bodi za mkate (1 kwa pinch)

Dupont anuwai ya kiume - ya kiume inaongoza na waya za unganisho

2 x LEDs (nilitumia bluu 5mm kama unaweza kuondoka bila vipinga)

1 x 12mm Kitufe cha kugusa Kitufe cha Kubadilisha PCB Iliyowekwa SPST au sawa

1 x 1K kupinga

2 x 0.1 capacitors kauri

1 x 8 Njia ya Nuru ya Maji Marquee 5mm nyekundu ya LED (kama hapo juu) au LED na vizuizi 8

KUMBUKA: Ikiwa unapata kit ambacho hakijauzwa, unaweza kuingiza taa hizo kwa njia isiyofaa ili ziwe kawaida. Ninaambatisha risasi ya nzi (badala ya pini) ili iweze kuungana kwa urahisi mahali pengine. VCC sasa inakuwa chini. Kwa kweli unaweza kugeuza taa za LED kuzunguka (kwenye kipengee kilichokusanyika) na kuziunganisha tena, lakini hii ni faff nyingi! Vifaa sasa vinapatikana kwenye AliExpress.

Hatua ya 3: Kuiweka Pamoja

Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja

Niliona ni rahisi kutumia waya mpya za DuPont ambazo hazijatenganishwa na Ribbon yao kwa anwani na mabasi ya data.

Unganisha pini 9 (A0) ya 6502 kubandika 52 ya MEGA, pini 10 (A1) ya 6502 kubandika 50 nk …

mpaka

Unganisha pini 25 (A15) ya 6502 kubandika 22 ya MEGA.

Viunganisho 16 hadi sasa.

Vivyo hivyo

Unganisha pini 26 (D7) ya 6502 kubandika 39 ya MEGA, pini 27 (D6) ya 6502 kubandika 41 nk…

mpaka

Unganisha pini 33 (D0) ya 6502 kubandika 53 ya MEGA.

Uunganisho 8 zaidi.

Unganisha pini 8 (VDD) kwa 5v kwenye MEGA.

Capacitor ya 0.1uF iliyounganishwa kutoka pini ya 8 hadi Gnd ya bodi ya mkate inaweza kuwa muhimu hapa lakini sio lazima.

Unganisha pin 21 (VSS) kwa Gnd kwenye MEGA.

Pini 2, 4, 6, 36 na 38 zinaweza kufungwa kwa 5v

Unganisha pini 37 (Saa) kubandika 2 na kubandika 7 ya MEGA.

Unganisha pini 34 (RWB) kubandika 3 ya MEGA.

Unganisha pini 40 (Weka upya) kama mchoro hapo juu.

Hatua ya 4: Kupima Mzunguko

Kupima Mzunguko
Kupima Mzunguko

Katika hatua hii 6502 itafanya kazi na programu1 inaweza kutumika. Ikiwa unatumia marquee ya njia 8 (kama ilivyo hapo juu), inaweza kuingizwa moja kwa moja kwenye ubao wa mkate na risasi ya kuruka iliyounganishwa ardhini, au unaweza kutumia LED na vipingamizi 8. LEDS itaonyesha kile kilicho kwenye basi ya data.

Katika hatua hii itakuwa sawa kuweka ucheleweshaji kwa Kitanzi () hadi 500 au zaidi, kufuata kinachotokea.

Unapaswa kupata pato sawa kwenye Serial Monitor kama ile hapo juu. Wakati Rudisha imebanwa, processor huenda kupitia mizunguko 7 na kisha inatafuta kuanza kwa programu katika maeneo $ FFFC na $ FFFD. Kwa kuwa hakuna anwani za kibinafsi za 6502 kusoma, lazima tuzipe kutoka kwa MEGA.

Katika pato hapo juu, 6502 inasoma $ FFFC na $ FFFD na hupata $ 00 na $ 10 (Low byte, High byte) ambayo ndio mwanzo wa programu kwa $ 1000. Prosesa kisha huanza kutekeleza programu katika eneo la $ 1000 (kama hapo juu). Katika kesi hii inasoma $ A9 na $ 55, i.e. LDA # $ 55 (Pakia 85 ndani ya mkusanyiko). Tena kwani hakuna kumbukumbu ya mwili, MEGA inaiga kile kinachosomwa kutoka kwa basi ya data.

$ 55 (85) inatoa muundo wa binary 01010101 na ikizungushwa 1 kidogo kushoto inatoa $ AA (170) 10101010.

Programu inaonyesha kuwa processor inafanya kazi kwa usahihi lakini hivi karibuni inachosha, na kwa sehemu inayofuata.

Hatua ya 5: Hatua inayofuata

Hatua ifuatayo
Hatua ifuatayo
Hatua ifuatayo
Hatua ifuatayo

"Rundo la tambi" hapo juu labda ni kitu kama kile utakachokuwa nacho baada ya hatua hii.

Ifuatayo unahitaji kuongeza 74HC373N na 74HC00N IC kwenye ubao wa mkate.

Kwa bahati mbaya pini 373 haziendani na basi ya data, kwa hivyo itahitaji kushikamana na waya.

Unganisha 5v kubandika 20.

Unganisha chini ili kubandika 10.

Unganisha pini 33 (D0) ya 6502 kubandika 3 (D0) ya 74HC373N

na vile vile na pini D1 hadi D7.

Q0 hadi Q7 ni matokeo na haya yatahitaji kuunganisha kwenye jumba la LED au LED za kibinafsi na vipinga.

Na 74HC00 ni milango 2 tu inahitajika

Unganisha 5v kubandika 14.

Unganisha chini ili kubandika 7.

Unganisha pini 17 (A8) ya 6502 kubandika 1 (1A) ya 74HC00

Unganisha pini 25 (A15) ya 6502 kubandika 2 (1B) ya 74HC00

Unganisha pini 34 (R / W) ya 6502 kubandika 5 (2B) ya 74HC00

Unganisha pini 3 (1Y) ya 74HC00 kubandika 4 (2A) ya 74HC00

Unganisha pini 6 (2Y) ya 74HC00 kubandika 11 (LE) ya 74HC373N

Unganisha pini 11 (LE) ya 74HC373N kubandika 1 (OE) ya 74HC373N

Unaweza kuunganisha LED ya bluu kwa 1Y na ardhi na vile vile 2Y chini, hii itaonyesha wakati lango linafanya kazi.

Mwishowe badilisha laini kwenye utaratibu wa onClock kutoka program1 hadi program2

setDataPins (program2 [offset]);

Hatua ya 6: Mpango

Mpango
Mpango
Mpango
Mpango

Programu ya 6502-Monitor ina njia mbili 6502 zilizoelezewa hapo juu.

Mpango huo bado unaendelea kutengenezwa na haujasafishwa kidogo.

Wakati wa kuendesha programu2, ucheleweshaji wa kitanzi () unaweza kuwa 50 au chini na hata kuondolewa kabisa. Kutoa maoni juu ya mistari ya Serial.print () pia hufanya 6502 iende haraka. Kukata pini 1 (OE) ya 373 kutoka kwa pin 11 (LE) hutoa matokeo tofauti. Kukata pini 1 na kubandika 11 ya 373 kutoka milango ya NAND hukuwezesha kuona kilicho kwenye basi ya data kila mzunguko wa saa.

Unaweza kuhitaji kufunga OE chini badala ya kuiacha ikielea kwani mistari 8 ya pato imelemazwa ikiwa pini hii inakwenda juu. Wakati pini ya LE iko juu, pini za pato ni sawa na pembejeo. Kuchukua pini ya chini ya LEO matokeo ikiwa pini za pembejeo zinabadilika, matokeo hayabaki sawa.

Nimejaribu kuweka programu rahisi iwezekanavyo ili kuifanya iwe rahisi kueleweka.

Kujaribu na ucheleweshaji wa wakati hukuwezesha kufuata haswa kile 6502 inafanya.

Hapo chini kuna programu mbili (zote zinaendeshwa kwa anwani $ 1000) mnamo 6502 Assembler:

mpango1

LDA # $ 55

NOP

ROL

STA $ 1010

JMP $ 1000

ROL huzunguka yaliyomo kwenye mkusanyiko kidogo kushoto ambayo inamaanisha kuwa $ 55 sasa inakuwa $ AA.

Katika nambari ya mashine (hex): A9 55 EA 2A 8D 10 10 4C 00 10

mpango2

LDA # $ 01

STA $ 8100

ADC # $ 03

STA $ 8100

JMP $ 1005

Katika nambari ya mashine (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Katika programu2 sasa kuna anwani ya kimaumbile $ 8100 ambayo ni mahali 74HC373 iko kwenye basi ya anwani.

i.e. A15 ya 6502 ni 32768 ($ 8000) na A8 ni 256 ($ 0100) = 33024 ($ 8100).

Kwa hivyo wakati 6502 inaandika kwa $ 8100 (STA $ 8100) R / W ya 6502 iko chini na data kwenye basi ya data ya 6502 imefungwa wakati 373 LE inapungua. Kwa sababu ya Lango la 74HC00 NAND, ishara zimebadilishwa.

Katika skrini ya juu chapa maandishi ya pili yameongezwa na 3 (ADC # $ 03) - imetoka $ 7F hadi $ 82.

Kwa kweli, zaidi ya mistari 2 ya basi ya anwani ingetumika kwa eneo maalum la 373. Kwa kuwa hii ndio anwani pekee ya mahali kati ya 65536 inayowezekana, inaonyesha jinsi basi ya anwani inafanya kazi. Unaweza kujaribu pini tofauti za anwani na kuiweka katika eneo tofauti. Kwa kweli, utahitaji kubadilisha operesheni za STA kwenda eneo jipya. mf. Ikiwa unatumia laini za anwani A15 na A9 anwani hiyo itakuwa $ 8200 (32768 + 512).

Hatua ya 7: Hitimisho

Hitimisho
Hitimisho

Nimejaribu kuonyesha jinsi ilivyo rahisi kupata 6502 na kukimbia.

Mimi sio mtaalam katika uwanja huu kwa hivyo ningepokea maoni au habari yoyote inayofaa.

Mnakaribishwa kuendeleza hii zaidi na nitavutiwa na kile mlichofanya.

Ninakusudia kuongeza EEPROM, SRAM na 6522 kwenye mradi huo na pia kuiweka kwenye bodi ya strip baadaye.

Ilipendekeza: