Isi kandungan:
- Bekalan
- Langkah 1: Konsep
- Langkah 2: Keperluan
- Langkah 3: Menyatukannya
- Langkah 4: Menguji Litar
- Langkah 5: Langkah seterusnya
- Langkah 6: Program
- Langkah 7: Kesimpulannya
Video: 6502 Komputer Minimal (dengan Arduino MEGA) Bahagian 1: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Mikroprosesor 6502 pertama kali muncul pada tahun 1975 dan dirancang oleh pasukan kecil yang diketuai oleh Chuck Peddle untuk Teknologi MOS. Pada masa itu ia digunakan di konsol video dan komputer rumah termasuk Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 dan 64. Pada masa itu ia adalah salah satu yang paling murah di pasaran. Itu tidak pernah hilang dan sekarang digunakan oleh peminat dan profesional untuk banyak aplikasi.
Versi yang saya gunakan adalah W65C02S6TPG-14 yang dibuat oleh Western Design Center dan menggunakan kuasa sepuluh kali lebih sedikit daripada yang asal. Ia istimewa kerana ia tidak perlu berjalan pada 1 MHz seperti cip asal. Ia dapat berjalan dengan lebih perlahan atau digunakan untuk melangkah melalui program dan bahkan meningkat hingga 14 MHz. Lembaran Data untuk cip menerangkan keupayaannya. Cip 6502 lain tidak mempunyai kemampuan ini dan tidak akan berjalan seperti ini. Cip ini kini terdapat di Ebay serta sumber lain.
Bekalan
Semua bahagian yang digunakan kini tersedia di Ebay, AliExpress dan lain-lain.
Langkah 1: Konsep
Saya mendapat inspirasi dari Ben Eater yang telah menghasilkan siri video di YouTube mengenai 6502 dan banyak aspek lain dalam membina komputer dan litar. Program ini ditulis olehnya pada asalnya dan saya telah mengubahsuai ini dan beberapa reka bentuknya untuk menghasilkan Instructable ini. Orang lain yang memberi inspirasi kepada saya adalah Andrew Jacobs yang mempunyai bahagian di GitHub di mana dia menggunakan mikro PIC untuk mengawal 6502nya.
Seperti Ben, saya menggunakan Arduino MEGA untuk memantau 6502. Saya juga menggunakan MEGA untuk memberikan isyarat jam tidak seperti Ben. Pada masa ini saya tidak menggunakan EEPROM atau RAM.
Langkah 2: Keperluan
Untuk membina "komputer" ini senarai item adalah seperti berikut:
1 x Arduino MEGA
1 x Pusat Reka Bentuk Barat W65C02S6TPG-14
1 x 74HC00N IC (gerbang NAND Quad 2-input) atau yang serupa
1 x 74HC373N IC (kait telus jenis Octal D) atau yang serupa
Papan roti lubang 2 x 830 (1 secubit)
Pelbagai wayar lelaki dan wayar pautan lelaki Dupont
2 x LED (saya menggunakan warna biru 5mm kerana anda boleh melarikan diri tanpa perintang)
1 x 12mm Tentil Tushile Push Button Switch PCB Mounted SPST atau yang serupa
Perintang 1 x 1K
Kapasitor seramik 2 x 0.1 uF
1 x 8 Way Water Light Marquee 5mm LED merah (seperti di atas) atau 8 LED dan perintang
CATATAN: Sekiranya anda mendapat kit yang tidak diselesaikan, anda boleh memasukkan LED dengan cara yang salah sehingga katod biasa. Saya melampirkan plumbum lalat (bukannya pin) supaya mudah tersambung ke tempat lain. VCC kini menjadi Ground. Anda tentu saja boleh menghidupkan LED (pada item yang dipasang) dan memasangnya semula, tetapi ini adalah banyak perkara! Kit kini tersedia di AliExpress.
Langkah 3: Menyatukannya
Saya merasa lebih senang menggunakan wayar DuPont baru yang tidak terlepas dari pita mereka untuk bas alamat dan data.
Sambungkan pin 9 (A0) dari 6502 ke pin 52 MEGA, pin 10 (A1) dari 6502 hingga pin 50 dll …
sehingga
Sambungkan pin 25 (A15) dari 6502 ke pin 22 MEGA.
16 sambungan setakat ini.
Begitu juga
Sambungkan pin 26 (D7) dari 6502 ke pin 39 MEGA, pin 27 (D6) dari 6502 hingga pin 41 dan lain-lain…
sehingga
Sambungkan pin 33 (D0) dari 6502 ke pin 53 MEGA.
8 lagi sambungan.
Sambungkan pin 8 (VDD) ke 5v pada MEGA.
Kapasitor 0.1uF yang disambungkan dari pin 8 ke Gnd papan roti mungkin berguna di sini tetapi tidak perlu.
Sambungkan pin 21 (VSS) ke Gnd di MEGA.
Pin 2, 4, 6, 36 dan 38 boleh diikat pada 5v
Sambungkan pin 37 (Jam) ke pin 2 dan pin 7 dari MEGA.
Sambungkan pin 34 (RWB) ke pin 3 MEGA.
Sambungkan pin 40 (Reset) seperti rajah di atas.
Langkah 4: Menguji Litar
Pada tahap ini 6502 akan berfungsi dan program1 dapat digunakan. Sekiranya anda menggunakan marquee 8 arah (seperti di atas), ia boleh dimasukkan terus ke papan roti dan plumbum lalat disambungkan ke tanah, atau anda boleh menggunakan 8 LED dan perintang. LEDS akan menunjukkan apa yang ada di bas data.
Pada tahap ini adalah baik untuk menetapkan kelewatan dalam Loop () ke 500 atau lebih, untuk mengikuti apa yang sedang terjadi.
Anda harus mendapat output yang serupa pada Serial Monitor seperti yang di atas. Apabila Reset ditekan, pemproses melalui 7 kitaran dan kemudian mencari permulaan program di lokasi $ FFFC dan $ FFFD. Oleh kerana tidak ada alamat fizikal untuk 6502 untuk dibaca, kami harus membekalkannya dari MEGA.
Dalam output di atas, 6502 membaca $ FFFC dan $ FFFD dan mendapat $ 00 dan $ 10 (Low byte, High byte) yang merupakan permulaan program pada $ 1000. Pemproses kemudian mula melaksanakan program di lokasi $ 1000 (seperti di atas). Dalam kes ini, ia berbunyi $ A9 dan $ 55, iaitu LDA # $ 55 (Muat 85 ke dalam akumulator). Sekali lagi kerana tidak ada lokasi memori fizikal, MEGA mensimulasikan apa yang dibaca dari bas data.
$ 55 (85) memberikan corak binari 01010101 dan apabila dipusingkan 1 bit kiri memberikan $ AA (170) 10101010.
Program menunjukkan bahawa pemproses berfungsi dengan betul tetapi tidak lama lagi menjadi sedikit membosankan, seterusnya ke bahagian seterusnya.
Langkah 5: Langkah seterusnya
"Tumpukan spageti" di atas mungkin seperti yang anda akan dapat selepas peringkat ini.
Seterusnya anda perlu menambahkan IC 74HC373N dan 74HC00N ke papan roti.
Malangnya pin 373 tidak sesuai dengan bas data, jadi perlu disambungkan dengan wayar.
Sambungkan 5v ke pin 20.
Sambungkan Ground ke pin 10.
Sambungkan pin 33 (D0) dari 6502 ke pin 3 (D0) 74HC373N
dan begitu juga dengan pin D1 hingga D7.
Q0 hingga Q7 adalah output dan ini perlu disambungkan ke LED marquee atau LED individu dan perintang.
Dengan 74HC00 hanya 2 pintu yang diperlukan
Sambungkan 5v ke pin 14.
Sambungkan Ground ke pin 7.
Sambungkan pin 17 (A8) dari 6502 ke pin 1 (1A) 74HC00
Sambungkan pin 25 (A15) dari 6502 ke pin 2 (1B) 74HC00
Sambungkan pin 34 (R / W) dari 6502 ke pin 5 (2B) 74HC00
Sambungkan pin 3 (1Y) 74HC00 ke pin 4 (2A) 74HC00
Sambungkan pin 6 (2Y) 74HC00 ke pin 11 (LE) 74HC373N
Sambungkan pin 11 (LE) 74HC373N ke pin 1 (OE) 74HC373N
Anda boleh menyambungkan LED biru ke 1Y dan tanah serta 2Y ke tanah, ini akan menunjukkan bila pintu aktif.
Akhirnya ubah baris dalam prosedur onClock dari program1 ke program2
setDataPins (program2 [offset]);
Langkah 6: Program
Program 6502-Monitor mengandungi dua rutin 6502 yang dijelaskan di atas.
Program ini masih dalam pembangunan dan agak tidak kemas.
Semasa menjalankan program2, kelewatan dalam gelung () dapat 50 atau kurang dan bahkan dihapuskan sama sekali. Mengulas garis Serial.print () juga menjadikan 6502 berjalan lebih pantas. Memutuskan pin 1 (OE) dari 373 dari pin 11 (LE) menghasilkan hasil yang berbeza. Memutuskan pin 1 dan pin 11 dari 373 dari gerbang NAND membolehkan anda melihat apa yang ada di bas data pada setiap pusingan jam.
Anda mungkin perlu mengikat OE ke tanah daripada membiarkannya melayang kerana 8 saluran output dilumpuhkan jika pin ini naik tinggi. Apabila pin LE tinggi, pin output sama dengan input. Mengambil pin LE terkunci rendah outputnya, jika pin input berubah, output tetap sama.
Saya telah berusaha memastikan program ini sesederhana mungkin agar lebih mudah difahami.
Mengeksperimen dengan kelewatan masa membolehkan anda mengikuti dengan tepat apa yang dilakukan oleh 6502.
Berikut adalah dua program (kedua-duanya dijalankan pada alamat $ 1000) di 6502 Assembler:
program1
LDA # $ 55
NOP
ROL
STA $ 1010
JMP $ 1000
ROL memutarkan kandungan akumulator satu baki sedikit yang bermaksud $ 55 kini menjadi $ AA.
Dalam kod mesin (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA # $ 01
STA $ 8100
ADC # $ 03
STA $ 8100
JMP $ 1005
Dalam kod mesin (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
Dalam program2 sekarang terdapat alamat fizikal $ 8100 di mana 74HC373 terletak di bas alamat.
iaitu A15 dari 6502 adalah 32768 ($ 8000) dan A8 ialah 256 ($ 0100) = 33024 ($ 8100).
Jadi apabila 6502 menulis ke $ 8100 (STA $ 8100) R / W dari 6502 rendah dan data pada bas data 6502 terkunci ketika 373 LE menjadi rendah. Kerana Pintu NAND 74HC00, isyarat terbalik.
Dalam cetakan skrin di atas, tulisan kedua meningkat sebanyak 3 (ADC # $ 03) - naik dari $ 7F menjadi $ 82.
Pada kenyataannya, lebih daripada 2 baris bus alamat akan digunakan untuk lokasi khusus 373. Oleh kerana ini adalah satu-satunya alamat fizikal dari 65536 yang mungkin, ia menunjukkan bagaimana bas alamat berfungsi. Anda boleh bereksperimen dengan pin alamat yang berbeza dan meletakkannya di lokasi yang berbeza. Sudah tentu, anda perlu menukar operan STA ke lokasi baru. cth. Sekiranya anda menggunakan baris alamat A15 dan A9, alamatnya adalah $ 8200 (32768 + 512).
Langkah 7: Kesimpulannya
Saya telah mencuba untuk menunjukkan betapa mudahnya menjalankan dan menjalankan 6502.
Saya bukan pakar dalam bidang ini jadi saya mengalu-alukan sebarang komen atau maklumat yang membina.
Anda dipersilakan untuk mengembangkannya lebih jauh dan saya berminat dengan apa yang telah anda lakukan.
Saya berhasrat untuk menambah EEPROM, SRAM dan 6522 ke projek tersebut dan juga meletakkannya di jalur papan pada masa akan datang.
Disyorkan:
Cara Hebat untuk Mengubah Bahagian Komputer Lama: 7 Langkah (dengan Gambar)
Cara Hebat untuk Mengganti Bahagian Komputer Lama: Dalam arahan ini, saya akan memberi anda idea mengenai cara menggunakan semula beberapa bahagian komputer lama yang dibuang oleh semua orang. Anda tidak akan percaya, tetapi komputer lama ini mempunyai banyak bahagian menarik di dalamnya. tidak akan memberi sepenuhnya
6502 Minimal Komputer (dengan Arduino MEGA) Bahagian 3: 7 Langkah
6502 Komputer Minimal (dengan Arduino MEGA) Bahagian 3: Melangkah lebih jauh lagi, saya kini telah menambahkan Octal Latch, 8 LED segi empat tepat dan susunan perintang 220 Ohm ke papan utama. Terdapat juga jumper antara pin dan ground umum array, sehingga LED dapat dimatikan. Pintu 74HC00 NAND h
6502 & 6522 Komputer Minimal (dengan Arduino MEGA) Bahagian 2: 4 Langkah
Komputer Minimum 6502 & 6522 (dengan Arduino MEGA) Bahagian 2: Setelah mengikuti Instructable sebelumnya, saya kini meletakkan 6502 pada papan jalur dan menambahkan Adaptor Antarmuka Serbaguna (VIA) 6522. Sekali lagi, saya menggunakan versi WDC dari 6522, kerana ia sangat sesuai untuk 6502 mereka. Bukan hanya c
Menggunakan semula Bahagian Komputer Lama untuk Membina Sistem Mudah Alih yang Murah: 3 Langkah (dengan Gambar)
Menggunakan semula Bahagian Komputer Lama untuk Membina Sistem Mudah Alih yang Murah: Baru-baru ini Laptop lama saya mati dan saya terpaksa membeli yang baru, (RIP! 5520 anda akan ketinggalan). Papan induk komputer riba mati dan kerosakan dapat diperbaiki Sehingga baru-baru ini saya membawa pai Raspberry dan mula bermain-main dengan IOT sutff tetapi memerlukan
Cara Mengukir Tetingkap Komputer (Bahagian 2): 5 Langkah (dengan Gambar)
Cara Mengukir Tingkap Komputer (Bahagian 2): Ini berlaku dengan Cara mengukir Tingkap Komputer (Bahagian 1) Ini adalah pilihan tetapi saya rasa ia kelihatan keren. Bahagian 2 mengambil ukiran itu dan membuatnya menonjol. Ini menjadikan tingkap kelihatan seperti Tron. Ini adalah kesan yang baik tetapi anda memerlukan beberapa