Talaan ng mga Nilalaman:

6502 Minimal Computer (na may Arduino MEGA) Bahagi 1: 7 Mga Hakbang
6502 Minimal Computer (na may Arduino MEGA) Bahagi 1: 7 Mga Hakbang

Video: 6502 Minimal Computer (na may Arduino MEGA) Bahagi 1: 7 Mga Hakbang

Video: 6502 Minimal Computer (na may Arduino MEGA) Bahagi 1: 7 Mga Hakbang
Video: “Hello, world” from scratch on a 6502 — Part 1 2024, Hulyo
Anonim
6502 Minimal Computer (kasama ang Arduino MEGA) Bahagi 1
6502 Minimal Computer (kasama ang Arduino MEGA) Bahagi 1

Ang 6502 microprocessor ay unang lumitaw noong 1975 at idinisenyo ng isang maliit na koponan na pinangunahan ni Chuck Peddle para sa MOS Technology. Noon ginamit ito sa mga video console at computer sa bahay kasama ang Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 at 64. Sa oras na iyon ito ay isa sa pinakamura sa merkado. Hindi pa talaga nawala at ngayon ay ginagamit ito ng mga hobbyist at propesyonal para sa maraming mga application.

Ang bersyon na ginagamit ko ay ang W65C02S6TPG-14 na ginawa ng Western Design Center at gumagamit ng sampung beses na mas mababa ang lakas kaysa sa orihinal. Ito ay espesyal sa na hindi ito kailangang tumakbo sa 1 MHz tulad ng orihinal na maliit na tilad. Maaari itong magpatakbo ng mas mabagal o magamit sa solong hakbang sa pamamagitan ng isang programa at kahit na masikip hanggang sa 14 MHz. Ipinapaliwanag ng Data Sheet para sa maliit na tilad ang mga kakayahan nito. Ang ibang mga 6502 chips ay walang ganitong kakayahan at hindi tatakbo sa ganitong paraan. Ang mga chips ay kasalukuyang magagamit sa Ebay pati na rin iba pang mga mapagkukunan.

Mga gamit

Ang lahat ng ginamit na mga bahagi ay kasalukuyang magagamit sa Ebay, AliExpress at iba pa.

Hakbang 1: Ang Konsepto

Nakuha ko ang aking inspirasyon mula kay Ben Eater na gumawa ng isang serye ng mga video sa YouTube tungkol sa 6502 at maraming iba pang mga aspeto ng pagbuo ng mga computer at circuit. Ang programa ay isinulat niya nang orihinal at binago ko ito at ang ilan sa kanyang mga disenyo upang makabuo ng Instructable na ito. Ang isa pang tao na nagbigay inspirasyon sa akin ay si Andrew Jacobs na may isang seksyon sa GitHub kung saan gumagamit siya ng isang PIC micro upang makontrol ang kanyang 6502.

Tulad ni Ben, gumagamit ako ng isang Arduino MEGA upang subaybayan ang 6502. Gumagamit din ako ng MEGA upang maibigay ang signal ng orasan na hindi katulad ni Ben. Sa kasalukuyan hindi ako gumagamit ng anumang EEPROMs o RAM alinman.

Hakbang 2: Mga Kinakailangan

Mga Kinakailangan
Mga Kinakailangan

Upang maitayo ang "computer" na ito ang isang listahan ng mga item ay ang mga sumusunod:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-input NAND gate) o katulad

1 x 74HC373N IC (Octal D-type transparent latch) o katulad

2 x 830 hole boards boards (1 sa isang kurot)

Iba't ibang Dupont male - male lead at link wires

2 x LEDs (Gumamit ako ng 5mm na asul na makakalayo ka nang walang mga resistor)

1 x 12mm Momentary Tactile Push Button Switch PCB Mounted SPST o katulad

1 x 1K risistor

2 x 0.1 uF ceramic capacitors

1 x 8 Way Water Light Marquee 5mm red LED (tulad ng nasa itaas) o 8 LEDs at resistors

TANDAAN: Kung nakuha mo ang hindi naka-folder na kit, maaari mong ipasok ang mga LED sa maling paraan ng pag-ikot upang ang mga ito ay karaniwang katod. Naglakip ako ng isang fly lead (sa halip na ang pin) upang madali itong kumonekta sa ibang lugar. Ang VCC ngayon ay naging Ground. Maaari mong siyempre i-on ang mga LED sa paligid (sa isang naka-assemble na item) at muling i-solder ang mga ito, ngunit ito ay maraming faff! Ang mga kit ay kasalukuyang magagamit sa AliExpress.

Hakbang 3: Pagsasama-sama Ito

Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito
Pagsasama-sama nito

Nahanap ko na mas madaling gumamit ng mga bagong wires ng DuPont na hindi naihiwalay mula sa kanilang laso para sa mga address at data bus.

Ikonekta ang pin 9 (A0) ng 6502 sa pin 52 ng MEGA, pin 10 (A1) ng 6502 upang i-pin ang 50 atbp …

hanggang sa

Ikonekta ang pin 25 (A15) ng 6502 sa pin 22 ng MEGA.

16 na koneksyon sa ngayon.

Ganun din

Ikonekta ang pin 26 (D7) ng 6502 sa pin 39 ng MEGA, pin 27 (D6) ng 6502 upang i-pin ang 41 atbp…

hanggang sa

Ikonekta ang pin 33 (D0) ng 6502 upang i-pin ang 53 ng MEGA.

8 pang koneksyon.

Ikonekta ang pin 8 (VDD) sa 5v sa MEGA.

Ang isang 0.1uF capacitor na konektado mula sa pin 8 hanggang Gnd ng bread board ay maaaring maging kapaki-pakinabang dito ngunit hindi kinakailangan.

Ikonekta ang pin 21 (VSS) sa Gnd sa MEGA.

Ang mga pin 2, 4, 6, 36 at 38 ay maaaring itali sa 5v

Ikonekta ang pin 37 (Clock) upang i-pin ang 2 at i-pin ang 7 ng MEGA.

Ikonekta ang pin 34 (RWB) upang i-pin ang 3 ng MEGA.

Ikonekta ang pin 40 (I-reset) bilang diagram sa itaas.

Hakbang 4: Pagsubok sa Circuit

Pagsubok sa Circuit
Pagsubok sa Circuit

Sa yugtong ito gagana ang 6502 at magagamit ang program1. Kung gumagamit ka ng 8 way marquee (tulad ng nasa itaas), maaari itong ipasok nang diretso sa breadboard at ang fly lead na konektado sa lupa, o maaari mong gamitin ang 8 LEDs at resistors. Ipapakita ng LEDS kung ano ang nasa data bus.

Sa yugtong ito magiging maayos din upang maitakda ang mga pagkaantala sa Loop () sa 500 o higit pa, upang sundin ang nangyayari.

Dapat kang makakuha ng isang katulad na output sa Serial Monitor tulad ng isa sa itaas. Kapag ang Reset ay pinindot, ang processor ay dumadaan sa 7 cycle at pagkatapos ay hahanapin nito ang pagsisimula ng programa sa mga lokasyon na $ FFFC at $ FFFD. Dahil walang mga pisikal na address para sa nabasa na 6502, kailangan naming ibigay ang mga ito mula sa MEGA.

Sa output sa itaas, binabasa ng 6502 ang $ FFFC at $ FFFD at nakakakuha ng $ 00 at $ 10 (Mababang byte, Mataas na byte) na kung saan ay ang pagsisimula ng programa sa $ 1000. Pagkatapos ay magsisimulang ipatupad ng processor ang programa sa lokasyon na $ 1000 (tulad ng nasa itaas). Sa kasong ito, binabasa nito ang $ A9 at $ 55, ibig sabihin, LDA # $ 55 (Load 85 sa nagtitipon). Muli dahil walang lokasyon ng memorya ng memorya, ginagampanan ng MEGA ang binasa mula sa data bus.

Ang $ 55 (85) ay nagbibigay sa binary pattern na 01010101 at kapag naikot ang 1 bit kaliwa ay nagbibigay ng $ AA (170) 10101010.

Ipinapakita ng programa na ang processor ay gumagana nang tama ngunit sa lalong madaling panahon ay medyo nakakainip, kaya't sa susunod na bahagi.

Hakbang 5: Susunod na Hakbang

Susunod na hakbang
Susunod na hakbang
Susunod na hakbang
Susunod na hakbang

Ang "tumpok ng spaghetti" sa itaas ay marahil isang bagay tulad ng kung ano ang mayroon ka pagkatapos ng yugtong ito.

Susunod na kailangan mong idagdag ang 74HC373N at 74HC00N ICs sa breadboard.

Sa kasamaang palad ang mga pin ng 373 ay hindi nakahanay sa data bus, kaya kakailanganin na ma-hooked sa mga wire.

Ikonekta ang 5v sa pin 20.

Ikonekta ang Ground sa pin 10.

Ikonekta ang pin 33 (D0) ng 6502 sa pin 3 (D0) ng 74HC373N

at gayundin sa mga pin na D1 hanggang D7.

Ang Q0 hanggang Q7 ay ang mga output at kakailanganin ang pagkonekta sa LED marquee o mga indibidwal na LED at resistor.

Sa 74HC00 2 lamang sa mga pintuan nito ang kinakailangan

Ikonekta ang 5v sa pin 14.

Ikonekta ang Ground sa pin 7.

Ikonekta ang pin 17 (A8) ng 6502 sa pin 1 (1A) ng 74HC00

Ikonekta ang pin 25 (A15) ng 6502 sa pin 2 (1B) ng 74HC00

Ikonekta ang pin 34 (R / W) ng 6502 sa pin 5 (2B) ng 74HC00

Ikonekta ang pin 3 (1Y) ng 74HC00 sa pin 4 (2A) ng 74HC00

Ikonekta ang pin 6 (2Y) ng 74HC00 sa pin 11 (LE) ng 74HC373N

Ikonekta ang pin 11 (LE) ng 74HC373N sa pin 1 (OE) ng 74HC373N

Maaari mong ikonekta ang isang asul na LED sa 1Y at lupa pati na rin ang 2Y sa lupa, ito ay magpapahiwatig kapag ang gate ay aktibo.

Panghuli baguhin ang linya sa onClock na pamamaraan mula sa program1 hanggang sa program2

setDataPins (program2 [offset]);

Hakbang 6: Ang Programa

Ang programa
Ang programa
Ang programa
Ang programa

Naglalaman ang programa ng 6502-Monitor ng dalawang 6502 na gawain na inilarawan sa itaas.

Ang programa ay nasa ilalim pa rin ng pag-unlad at medyo hindi maayos.

Kapag nagpapatakbo ng program2, ang mga pagkaantala sa loop () ay maaaring 50 o mas mababa at kahit na tinanggal nang sama-sama. Ang pagbibigay puna sa mga linya ng Serial.print () ay ginagawang mas mabilis din ang 6502. Ang pagdidiskonekta ng pin 1 (OE) ng 373 mula sa pin 11 (LE) ay gumagawa ng iba't ibang mga resulta. Ang pagdidiskonekta ng pin 1 at pin 11 ng 373 mula sa mga pintuang NAND ay nagbibigay-daan sa iyo upang makita kung ano ang nasa data bus sa bawat pag-ikot ng orasan.

Maaaring kailanganin mong itali ang OE sa lupa sa halip na iwanan itong lumulutang dahil ang 8 mga linya ng output ay hindi pinagana kung ang pin na ito ay napunta mataas. Kapag ang LE pin ay mataas, ang mga output pin ay pareho ng mga input. Ang pagkuha ng LE pin na mababa ang latches ng mga output ie ibig sabihin kung nagbago ang mga input pin, ang mga output ay mananatiling pareho.

Sinubukan kong panatilihing simple ang programa hangga't maaari upang gawing mas madaling maunawaan.

Ang pag-eksperimento sa mga pagkaantala sa oras ay nagbibigay-daan sa iyo upang sundin nang eksakto kung ano ang ginagawa ng 6502.

Nasa ibaba ang dalawang mga programa (parehong tumatakbo sa address na $ 1000) sa 6502 Assembler:

programa1

LDA # $ 55

NOP

ROL

STA $ 1010

JMP $ 1000

Paikutin ng ROL ang mga nilalaman ng nagtitipon ng kaunting kaliwa na nangangahulugang ang $ 55 ngayon ay nagiging $ AA.

Sa machine code (hex): A9 55 EA 2A 8D 10 10 4C 00 10

programa2

LDA # $ 01

STA $ 8100

ADC # $ 03

STA $ 8100

JMP $ 1005

Sa machine code (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Sa program2 mayroon na ngayong isang pisikal na address na $ 8100 na kung saan matatagpuan ang 74HC373 sa address bus.

ibig sabihin, A15 ng 6502 ay 32768 ($ 8000) at A8 ay 256 ($ 0100) = 33024 ($ 8100).

Kaya't kapag ang 6502 ay nagsusulat sa $ 8100 (STA $ 8100) ang R / W ng 6502 ay mababa at ang data sa 6502 data bus ay na-latched kapag ang 373 LE ay bumaba. Dahil sa 74HC00 NAND Gate, ang mga signal ay baligtad.

Sa naka-print sa itaas na screen ang pangalawang pagsulat ay nadagdagan ng 3 (ADC # $ 03) - nawala mula $ 7F hanggang $ 82.

Sa katotohanan, higit sa 2 mga linya ng address bus ang gagamitin para sa tukoy na lokasyon ng 373. Dahil ito lamang ang pisikal na address mula sa posibleng 65536, ipinapakita nito kung paano gumagana ang address bus. Maaari kang mag-eksperimento sa iba't ibang mga pin ng address at ilagay ito sa ibang lokasyon. Siyempre, kakailanganin mong baguhin ang mga opera ng STA sa bagong lokasyon. hal. Kung ginamit mo ang mga linya ng address A15 at A9 ang address ay $ 8200 (32768 + 512).

Hakbang 7: Konklusyon

Konklusyon
Konklusyon

Sinubukan kong ipakita kung gaano kadali makakuha ng isang 6502 na tumatakbo at tumatakbo.

Hindi ako dalubhasa sa larangang ito kaya't tinatanggap ko ang anumang nakabubuo na mga komento o impormasyon.

Maligayang pagdating sa iyo upang paunlarin pa ito at magiging interesado ako sa iyong nagawa.

Nilalayon kong magdagdag ng isang EEPROM, SRAM at isang 6522 sa proyekto pati na rin ang paglalagay nito sa strip board sa hinaharap.

Inirerekumendang: