Sisällysluettelo:

6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1: 7 vaihetta
6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1: 7 vaihetta

Video: 6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1: 7 vaihetta

Video: 6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1: 7 vaihetta
Video: История CPU: MOS 6502 2024, Marraskuu
Anonim
6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1
6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1

6502 -mikroprosessori ilmestyi ensimmäisen kerran vuonna 1975, ja sen on suunnitellut pieni tiimi, jota johtaa Chuck Peddle MOS -tekniikalle. Silloin sitä käytettiin videokonsolissa ja kotitietokoneissa, mukaan lukien Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 ja 64. Se oli tuolloin yksi markkinoiden halvimmista. Se ei ole koskaan kadonnut ja nyt harrastajat ja ammattilaiset käyttävät sitä moniin sovelluksiin.

Käyttämäni versio on W65C02S6TPG-14, jonka on tehnyt Western Design Center ja joka käyttää kymmenen kertaa vähemmän virtaa kuin alkuperäinen. Se on erityinen siinä, että sen ei tarvitse toimia 1 MHz: llä kuten alkuperäinen siru. Se voi toimia paljon hitaammin tai sitä voidaan käyttää yksivaiheisena ohjelman läpi ja jopa jopa 14 MHz. Sirun tietolomake selittää sen ominaisuudet. Muilla 6502 -siruilla ei ole tätä ominaisuutta, eivätkä ne toimi tällä tavalla. Pelimerkit ovat tällä hetkellä saatavilla Ebaysta ja muista lähteistä.

Tarvikkeet

Kaikki käytetyt osat ovat tällä hetkellä saatavilla Ebayssa, AliExpressissä ja muissa.

Vaihe 1: Käsite

Inspiraationi sain Ben Eaterilta, joka on tuottanut YouTubessa useita videoita 6502: sta ja monista muista tietokoneiden ja piirien rakentamiseen liittyvistä näkökohdista. Ohjelman kirjoitti hän alun perin ja olen muokannut tätä ja joitakin hänen mallejaan tämän Instructable -ohjelman luomiseksi. Toinen henkilö, joka inspiroi minua, oli Andrew Jacobs, jolla on GitHub -osio, jossa hän käyttää PIC -mikroa hallitakseen 6502: taan.

Benin tavoin käytän Arduino MEGA: ta 6502: n valvontaan. Käytän myös MEGA: ta kellosignaalin tuottamiseen toisin kuin Ben. Tällä hetkellä en käytä myöskään EEPROM -muistia tai RAM -muistia.

Vaihe 2: Vaatimukset

Vaatimukset
Vaatimukset

Tämän "tietokoneen" rakentamiseksi luettelo kohteista on seuraava:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-tulon NAND-portti) tai vastaava

1 x 74HC373N IC (Octal D-tyyppinen läpinäkyvä salpa) tai vastaava

2 x 830 reiän leipälautaa (1 hyppysellinen)

Erilaisia Dupont -urospuolisia uros- ja linkkijohtoja

2 x LEDiä (käytin 5 mm sinistä, koska pääset pois ilman vastuksia)

1 x 12 mm: n hetkellinen kosketuspainike, piirilevyasennettava SPST tai vastaava

1 x 1K vastus

2 x 0,1 uF keraamiset kondensaattorit

1 x 8 -tie Water Light Marquee 5 mm punainen LED (kuten yllä) tai 8 LEDiä ja vastukset

HUOMAUTUS: Jos saat juottamattoman sarjan, voit asettaa LEDit väärin päin niin, että ne ovat yleinen katodi. Kiinnitän lentoliittimen (tapin sijasta), jotta se voi helposti muodostaa yhteyden muualle. VCC: stä tulee nyt Ground. Voit tietysti kääntää LEDit ympäri (kootulla esineellä) ja juottaa ne uudelleen, mutta tämä on paljon faff! Sarjat ovat tällä hetkellä saatavilla AliExpressissä.

Vaihe 3: Yhdistäminen

Yhdistäminen
Yhdistäminen
Yhdistäminen
Yhdistäminen

Minusta oli helpompaa käyttää uusia DuPont -johtoja, joita ei ollut erotettu nauhasta osoite- ja tietoväylille.

Kytke 6502 -nasta 9 (A0) MEGAn nastaan 52, 6502 nasta 10 (A1) nastaan 50 jne …

siihen asti kun

Liitä 6502 -nasta 25 (A15) MEGA -laitteen nastaan 22.

16 yhteyttä tähän mennessä.

Samoin

Kytke 6502 -nasta 26 (D7) MEGAn nastaan 39, 6502 nasta 27 (D6) nastaan 41 jne …

siihen asti kun

Liitä 6502 -nasta 33 (D0) MEGA -laitteen nastaan 53.

8 muuta liitäntää.

Liitä nasta 8 (VDD) MEGA -laitteen 5 V: n jännitteeseen.

0.1uF -kondensaattori, joka on kytketty leipälevyn nastasta 8 Gnd -järjestelmään, voi olla hyödyllinen tässä, mutta ei välttämätön.

Liitä nasta 21 (VSS) MEGA: n Gnd -liittimeen.

Nastat 2, 4, 6, 36 ja 38 voidaan sitoa 5 volttiin

Kytke nasta 37 (kello) MEGA -laitteen nastaihin 2 ja 7.

Liitä nasta 34 (RWB) MEGA -laitteen nastaan 3.

Liitä nasta 40 (nollaus) yllä olevan kuvan mukaisesti.

Vaihe 4: Piirin testaus

Piirin testaus
Piirin testaus

Tässä vaiheessa 6502 toimii ja ohjelmaa 1 voidaan käyttää. Jos käytät 8 -suuntaista telttaa (kuten yllä), se voidaan asettaa suoraan leipälautaan ja lentoliitäntäjohto liittää maahan, tai voit käyttää 8 LED -valoa ja vastusta. LEDit osoittavat, mitä dataväylässä on.

Tässä vaiheessa olisi myös hyvä asettaa silmukan () viiveet 500: een tai enemmän, jotta voidaan seurata mitä tapahtuu.

Sinun pitäisi saada samanlainen ulostulo sarjamonitorissa kuin yllä. Kun Reset -painiketta painetaan, prosessori käy läpi 7 sykliä ja etsii sitten ohjelman alkua paikoista $ FFFC ja $ FFFD. Koska 6502: lla ei ole fyysisiä osoitteita luettavaksi, meidän on toimitettava ne MEGA: sta.

Yllä olevassa lähdössä 6502 lukee $ FFFC ja $ FFFD ja saa $ 00 ja $ 10 (Low byte, High byte), mikä on ohjelman alku 1000 $: ssa. Suoritin aloittaa sitten ohjelman suorittamisen paikassa $ 1000 (kuten yllä). Tässä tapauksessa se lukee $ A9 ja $ 55, eli LDA#$ 55 (Lataa 85 akkuun). Jälleen, koska fyysistä muistipaikkaa ei ole, MEGA simuloi dataväylältä luettua.

$ 55 (85) antaa binäärikuvion 01010101 ja kun sitä kierretään 1 bittiä vasemmalle, saadaan $ AA (170) 10101010.

Ohjelma osoittaa, että prosessori toimii oikein, mutta pian tulee hieman tylsää, joten siirry seuraavaan osaan.

Vaihe 5: Seuraava vaihe

Seuraava askel
Seuraava askel
Seuraava askel
Seuraava askel

Edellä oleva "kasa spagettia" on luultavasti jotain sellaista, mitä sinulla on tämän vaiheen jälkeen.

Seuraavaksi sinun on lisättävä 74HC373N- ja 74HC00N -piirilevyt leipätauluun.

Valitettavasti 373: n nastat eivät ole linjassa dataväylän kanssa, joten ne on kytkettävä johtoihin.

Liitä 5v nastaan 20.

Liitä maadoitus nastaan 10.

Liitä 6502 -nasta 33 (D0) 74HC373N: n nastaan 3 (D0)

ja samoin tapilla D1 - D7.

Q0 - Q7 ovat lähtöjä, ja ne on liitettävä LED -telttaan tai yksittäisiin LED -valoihin ja vastuksiin.

74HC00: ssa tarvitaan vain kaksi sen porttia

Liitä 5v nastaan 14.

Liitä maadoitus nastaan 7.

Liitä 6502 -nasta 17 (A8) 74HC00 -laitteen nastaan 1 (1A)

Liitä 6502 -nasta 25 (A15) 74HC00 -laitteen nastaan 2 (1B)

Liitä 6502 -nasta 34 (R/W) 74HC00 -laitteen nastaan 5 (2B)

Liitä 74HC00: n nasta 3 (1Y) 74HC00: n nastaan 4 (2A)

Liitä 74HC00: n nasta 6 (2Y) 74HC373N: n nastaan 11 (LE)

Liitä 74HC373N -nasta 11 (LE) 74HC373N -nastaan 1 (OE)

Voit liittää sinisen LED -valon 1Y ja maadoitukseen sekä 2Y maahan, mikä osoittaa, milloin portti on aktiivinen.

Vaihda lopuksi onClock -menettelyn rivi ohjelmasta 1 ohjelmaan 2

setDataPins (ohjelma2 [offset]);

Vaihe 6: Ohjelma

Ohjelma
Ohjelma
Ohjelma
Ohjelma

6502-monitoriohjelma sisältää kaksi edellä kuvattua 6502-rutiinia.

Ohjelma on vielä kehitteillä ja on hieman epäsiisti.

Kun suoritetaan ohjelma2, silmukan () viiveet voivat olla 50 tai vähemmän ja jopa poistaa kokonaan. Myös Serial.print () -rivien kommentoiminen nopeuttaa 6502: n toimintaa. Irrottamalla 373 -nasta 1 (OE) nastasta 11 (LE) saadaan erilaisia tuloksia. Irrottamalla 373: n nastat 1 ja nastat 11 NAND -porteista näet, mitä dataväylässä on joka kellokierros.

Sinun on ehkä sidottava OE maahan sen sijaan, että jätät sen kellumaan, koska 8 lähtölinjaa poistetaan käytöstä, jos tämä nasta nousee korkealle. Kun LE -nasta on korkea, lähtönastat ovat samat kuin tulot. Kun LE -nasta on alhaalla, lähdöt lukittuvat, ts. Jos tulonapit vaihtuvat, lähdöt pysyvät samana.

Olen yrittänyt pitää ohjelman mahdollisimman yksinkertaisena, jotta se olisi helpompi ymmärtää.

Kokeilemalla aikaviiveitä voit seurata tarkasti, mitä 6502 tekee.

Alla on 6502 Assemblerin kaksi ohjelmaa (molemmat suoritetaan osoitteessa $ 1000):

ohjelma 1

LDA#55 dollaria

EI

ROL

STA 1010 dollaria

JMP 1000 dollaria

ROL kiertää varaajan sisältöä yhden bitin vasemmalle, mikä tarkoittaa, että 55 dollarista tulee nyt AA.

Konekoodissa (hex): A9 55 EA 2A 8D 10 10 4C 00 10

ohjelma 2

LDA#01

8100 dollaria

ADC#03

8100 dollaria

JMP 1005 dollaria

Konekoodissa (heksadesimaali): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Ohjelmassa2 on nyt fyysinen osoite $ 8100, jossa 74HC373 sijaitsee osoiteväylällä.

eli A15 6502: sta on 32768 (8000 dollaria) ja A8 on 256 (0100 dollaria) = 33024 (8100 dollaria).

Joten kun 6502 kirjoittaa 8100 dollariin (STA $ 8100), 6502: n R/W on alhainen ja 6502 -tietoväylän tiedot lukittuvat, kun 373 LE laskee. 74HC00 NAND -portin takia signaalit ovat päinvastaisia.

Yllä olevassa näytön tulostuksessa toinen kirjoitus on kasvanut 3: lla (ADC#$ 03) - poistunut 7 dollarista 82 dollariin.

Todellisuudessa 373: n tiettyä sijaintia käytettäisiin enemmän kuin 2 osoiterivin riviä. Koska tämä on ainoa fyysinen osoite mahdollisista 65536: sta, se osoittaa, kuinka osoiteväylä toimii. Voit kokeilla eri osoitetappeja ja sijoittaa ne eri paikkaan. Tietenkin sinun on vaihdettava STA -operandit uuteen sijaintiin. esim. Jos käytit osoiterivejä A15 ja A9, osoite olisi 8200 dollaria (32768 + 512).

Vaihe 7: Johtopäätös

Johtopäätös
Johtopäätös

Olen yrittänyt osoittaa, kuinka helppoa on saada 6502 käyttöön.

En ole alan asiantuntija, joten otan mielelläni vastaan rakentavia kommentteja tai tietoja.

Olet tervetullut kehittämään tätä edelleen, ja olisin kiinnostunut siitä, mitä olet tehnyt.

Aion lisätä projektiin EEPROMin, SRAM: n ja 6522: n sekä laittaa sen nauhoituslevylle tulevaisuudessa.

Suositeltava: