Daftar Isi:
- Perlengkapan
- Langkah 1: Konsepnya
- Langkah 2: Persyaratan
- Langkah 3: Menyatukannya
- Langkah 4: Menguji Sirkuit
- Langkah 5: Langkah Selanjutnya
- Langkah 6: Program
- Langkah 7: Kesimpulan
Video: 6502 Komputer Minimal (dengan Arduino MEGA) Bagian 1: 7 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Mikroprosesor 6502 pertama kali muncul pada tahun 1975 dan dirancang oleh tim kecil yang dipimpin oleh Chuck Peddle untuk Teknologi MOS. Saat itu digunakan di konsol video dan komputer rumah termasuk Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 dan 64. Saat itu adalah salah satu yang termurah di pasar. Itu tidak pernah benar-benar hilang dan sekarang digunakan oleh penggemar dan profesional untuk banyak aplikasi.
Versi yang saya gunakan adalah W65C02S6TPG-14 yang dibuat oleh Western Design Center dan menggunakan daya sepuluh kali lebih sedikit dari aslinya. Ini istimewa karena tidak harus berjalan pada 1 MHz seperti chip aslinya. Itu dapat berjalan jauh lebih lambat atau digunakan untuk satu langkah melalui program dan bahkan menggenjot hingga 14 MHz. Lembar Data untuk chip menjelaskan kemampuannya. Chip 6502 lainnya tidak memiliki kemampuan ini dan tidak akan berjalan dengan cara ini. Chip saat ini tersedia di Ebay serta sumber lainnya.
Perlengkapan
Semua suku cadang yang digunakan saat ini tersedia di Ebay, AliExpress, dan lainnya.
Langkah 1: Konsepnya
Saya mendapat inspirasi dari Ben Eater yang telah menghasilkan serangkaian video di YouTube tentang 6502 dan banyak aspek lain dalam membangun komputer dan sirkuit. Program ini awalnya ditulis olehnya dan saya telah memodifikasi ini dan beberapa desainnya untuk menghasilkan Instructable ini. Orang lain yang menginspirasi saya adalah Andrew Jacobs yang memiliki bagian di GitHub di mana dia menggunakan mikro PIC untuk mengontrol 6502-nya.
Seperti Ben, saya menggunakan Arduino MEGA untuk memantau 6502. Saya juga menggunakan MEGA untuk memberikan sinyal clock tidak seperti Ben. Saat ini saya juga tidak menggunakan EEPROM atau RAM.
Langkah 2: Persyaratan
Untuk membangun "komputer" ini, daftar itemnya adalah sebagai berikut:
1 x Arduino MEGA
1 x Pusat Desain Barat W65C02S6TPG-14
1 x 74HC00N IC (Gerbang NAND 2-input Quad) atau serupa
1 x 74HC373N IC (Oktal D-jenis gerendel transparan) atau serupa
2 x 830 papan roti lubang (1 sejumput)
Berbagai Dupont male - lead male dan kabel penghubung
2 x LED (saya menggunakan 5mm biru karena Anda dapat pergi tanpa resistor)
1 x 12mm Sesaat Taktil Push Button Switch PCB Mounted SPST atau serupa
1 x 1K resistor
2 x 0,1 uF kapasitor keramik
1 x 8 Way Water Light Marquee LED merah 5mm (seperti di atas) atau 8 LED dan resistor
CATATAN: Jika Anda mendapatkan kit yang tidak disolder, Anda dapat memasukkan LED dengan cara yang salah sehingga menjadi katoda umum. Saya memasang fly lead (bukan pin) sehingga dapat dengan mudah terhubung di tempat lain. VCC sekarang menjadi Ground. Anda tentu saja dapat memutar LED (pada item yang telah dirakit) dan menyoldernya kembali, tetapi ini banyak sekali kesalahannya! Kit saat ini tersedia di AliExpress.
Langkah 3: Menyatukannya
Saya merasa lebih mudah menggunakan kabel DuPont baru yang tidak dipisahkan dari pitanya untuk bus alamat dan data.
Hubungkan pin 9 (A0) dari 6502 ke pin 52 dari MEGA, pin 10 (A1) dari 6502 ke pin 50 dll …
sampai
Hubungkan pin 25 (A15) dari 6502 ke pin 22 dari MEGA.
16 koneksi sejauh ini.
juga
Hubungkan pin 26 (D7) dari 6502 ke pin 39 dari MEGA, pin 27 (D6) dari 6502 ke pin 41 dll …
sampai
Hubungkan pin 33 (D0) dari 6502 ke pin 53 dari MEGA.
8 koneksi lagi.
Hubungkan pin 8 (VDD) ke 5v pada MEGA.
Kapasitor 0,1uF yang terhubung dari pin 8 ke Gnd papan roti mungkin berguna di sini tetapi tidak perlu.
Hubungkan pin 21 (VSS) ke Gnd pada MEGA.
Pin 2, 4, 6, 36 dan 38 dapat diikat ke 5v
Hubungkan pin 37 (Jam) ke pin 2 dan pin 7 MEGA.
Hubungkan pin 34 (RWB) ke pin 3 MEGA.
Hubungkan pin 40 (Reset) seperti diagram di atas.
Langkah 4: Menguji Sirkuit
Pada tahap ini 6502 akan bekerja dan program1 dapat digunakan. Jika Anda menggunakan tenda 8 arah (seperti di atas), itu dapat dimasukkan langsung ke papan tempat memotong roti dan kabel terbang terhubung ke ground, atau Anda dapat menggunakan 8 LED dan resistor. LED akan menunjukkan apa yang ada di bus data.
Pada tahap ini, sebaiknya setel penundaan di Loop() menjadi 500 atau lebih, untuk mengikuti apa yang terjadi.
Anda harus mendapatkan output serupa pada Serial Monitor seperti di atas. Ketika Reset ditekan, prosesor melewati 7 siklus dan kemudian mencari awal program di lokasi $FFFC dan $FFFD. Karena tidak ada alamat fisik untuk dibaca 6502, kami harus menyediakannya dari MEGA.
Pada output di atas, 6502 membaca $FFFC dan $FFFD dan mendapatkan $00 dan $10 (byte Rendah, byte Tinggi) yang merupakan awal program pada $1000. Prosesor kemudian mulai menjalankan program di lokasi $1000 (seperti di atas). Dalam hal ini terbaca $A9 dan $55, yaitu LDA#$55 (Muat 85 ke akumulator). Sekali lagi karena tidak ada lokasi memori fisik, MEGA mensimulasikan apa yang dibaca dari bus data.
$55 (85) memberikan pola biner 01010101 dan ketika diputar 1 bit ke kiri menghasilkan $AA (170) 10101010.
Program menunjukkan bahwa prosesor bekerja dengan benar tetapi segera menjadi sedikit membosankan, begitu seterusnya ke bagian berikutnya.
Langkah 5: Langkah Selanjutnya
"Tumpukan spageti" di atas mungkin seperti apa yang akan Anda miliki setelah tahap ini.
Selanjutnya Anda perlu menambahkan IC 74HC373N dan 74HC00N ke papan tempat memotong roti.
Sayangnya pin 373 tidak sejalan dengan bus data, sehingga perlu dihubungkan dengan kabel.
Hubungkan 5v ke pin 20.
Hubungkan Ground ke pin 10.
Hubungkan pin 33 (D0) dari 6502 ke pin 3 (D0) dari 74HC373N
begitu juga dengan pin D1 sampai D7.
Q0 hingga Q7 adalah output dan ini perlu dihubungkan ke tenda LED atau masing-masing LED dan resistor.
Dengan 74HC00 hanya diperlukan 2 gerbangnya
Hubungkan 5v ke pin 14.
Hubungkan Ground ke pin 7.
Hubungkan pin 17 (A8) dari 6502 ke pin 1 (1A) dari 74HC00
Hubungkan pin 25 (A15) dari 6502 ke pin 2 (1B) dari 74HC00
Hubungkan pin 34(R/W) dari 6502 ke pin 5 (2B) dari 74HC00
Hubungkan pin 3 (1Y) dari 74HC00 ke pin 4 (2A) dari 74HC00
Hubungkan pin 6 (2Y) dari 74HC00 ke pin 11 (LE) dari 74HC373N
Hubungkan pin 11 (LE) dari 74HC373N ke pin 1 (OE) dari 74HC373N
Anda dapat menghubungkan LED biru ke 1Y dan ground serta 2Y ke ground, ini akan menunjukkan saat gerbang aktif.
Akhirnya ubah baris dalam prosedur onClock dari program1 ke program2
setDataPins(program2[offset]);
Langkah 6: Program
Program 6502-Monitor berisi dua rutinitas 6502 yang dijelaskan di atas.
Program ini masih dalam pengembangan dan sedikit berantakan.
Saat menjalankan program2, penundaan di loop() bisa 50 atau kurang dan bahkan dihapus sama sekali. Mengomentari baris Serial.print() juga membuat 6502 berjalan lebih cepat. Memutuskan sambungan pin 1 (OE) dari 373 dari pin 11 (LE) menghasilkan hasil yang berbeda. Melepaskan pin 1 dan pin 11 dari 373 dari gerbang NAND memungkinkan Anda untuk melihat apa yang ada di bus data pada setiap siklus clock.
Anda mungkin perlu mengikat OE ke ground daripada membiarkannya mengambang karena 8 jalur output dinonaktifkan jika pin ini menjadi tinggi. Ketika pin LE tinggi, pin output sama dengan input. Mengambil pin LE rendah mengunci output yaitu jika pin input berubah, output tetap sama.
Saya telah mencoba untuk membuat program sesederhana mungkin agar lebih mudah dipahami.
Bereksperimen dengan penundaan waktu memungkinkan Anda mengikuti persis apa yang dilakukan 6502.
Di bawah ini adalah dua program (keduanya dijalankan pada alamat $1000) di 6502 Assembler:
program1
LDA#$55
TIDAK
ROL
STA $1010
JMP$1000
ROL memutar isi akumulator satu bit ke kiri yang berarti $55 sekarang menjadi $AA.
Dalam kode mesin (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA#$01
STA$8100
ADC#$03
STA$8100
JMP$1005
Dalam kode mesin (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
Dalam program2 sekarang ada alamat fisik $8100 yang merupakan tempat 74HC373 berada di bus alamat.
yaitu A15 dari 6502 adalah 32768 ($8000) dan A8 adalah 256 ($0100) = 33024 ($8100).
Jadi ketika 6502 menulis ke $8100 (STA$8100) R/W 6502 rendah dan data pada bus data 6502 terkunci ketika 373 LE menjadi rendah. Karena Gerbang NAND 74HC00, sinyal dibalik.
Pada cetakan layar di atas, penulisan kedua bertambah 3 (ADC#$03) - berubah dari $7F menjadi $82.
Pada kenyataannya, lebih dari 2 baris bus alamat akan digunakan untuk lokasi spesifik 373. Karena ini adalah satu-satunya alamat fisik dari kemungkinan 65536, ini menunjukkan cara kerja bus alamat. Anda dapat bereksperimen dengan pin alamat yang berbeda dan meletakkannya di lokasi yang berbeda. Tentu saja, Anda perlu mengubah operan STA ke lokasi baru. misalnya Jika Anda menggunakan baris alamat A15 dan A9, alamatnya akan menjadi $8200 (32768 + 512).
Langkah 7: Kesimpulan
Saya telah mencoba menunjukkan betapa mudahnya menjalankan dan menjalankan 6502.
Saya bukan ahli dalam bidang ini, jadi saya akan menerima komentar atau informasi yang membangun.
Anda dipersilakan untuk mengembangkan ini lebih lanjut dan saya akan tertarik dengan apa yang telah Anda lakukan.
Saya bermaksud untuk menambahkan EEPROM, SRAM dan 6522 ke proyek serta meletakkannya di papan strip di masa depan.
Direkomendasikan:
Penghitung Geiger Bekerja dengan Bagian Minimal: 4 Langkah (dengan Gambar)
Penghitung Geiger yang Berfungsi dengan Bagian Minimal: Ini, sepengetahuan saya, penghitung Geiger yang berfungsi paling sederhana yang dapat Anda buat. Yang ini menggunakan tabung Geiger SMB-20 buatan Rusia, yang digerakkan oleh rangkaian step-up tegangan tinggi yang diambil dari pemukul lalat elektronik. Ini mendeteksi partikel beta dan
Cara Keren untuk Menggunakan Kembali Bagian Komputer Lama: 7 Langkah (dengan Gambar)
Cara Keren untuk Menggunakan Kembali Bagian Komputer Lama: Dalam instruksi ini saya akan secara singkat memberi Anda beberapa ide tentang cara menggunakan kembali beberapa bagian komputer lama yang dibuang semua orang. Anda tidak akan percaya, tetapi komputer lama ini memiliki banyak bagian menarik di dalamnya. tidak akan memberi penuh
6502 Komputer Minimal (dengan Arduino MEGA) Bagian 3: 7 Langkah
6502 Komputer Minimal (dengan Arduino MEGA) Bagian 3: Melanjutkan lebih jauh, saya sekarang telah menambahkan Oktal Latch, 8 LED persegi panjang dan array resistor 220 Ohm ke papan utama. Ada juga jumper antara pin umum dan ground array, sehingga LED dapat dimatikan. Gerbang NAND 74HC00
6502 & 6522 Komputer Minimal (dengan Arduino MEGA) Bagian 2: 4 Langkah
6502 & 6522 Komputer Minimal (dengan Arduino MEGA) Bagian 2: Mengikuti Instruksi saya sebelumnya, sekarang saya telah memasang 6502 ke papan strip dan menambahkan 6522 Versatile Interface Adapter (VIA). Sekali lagi, saya menggunakan versi WDC dari 6522, karena ini adalah pasangan yang sempurna untuk 6502 mereka. Tidak hanya c
Cara Mengukir Jendela Komputer (Bagian 2): 5 Langkah (dengan Gambar)
Cara Mengukir Jendela Komputer (Bagian 2): Ini sesuai dengan Cara Mengukir Jendela Komputer (Bagian 1) Ini opsional tapi menurut saya itu terlihat keren. Bagian 2 adalah mengambil ukiran itu dan membuatnya menonjol. Ini membuat jendela terlihat seperti Tron. Ini adalah efek yang bagus tetapi Anda perlu beberapa