İçindekiler:
- Gereçler
- Adım 1: Konsept
- 2. Adım: Gereksinimler
- Adım 3: Bir araya getirmek
- Adım 4: Devreyi Test Etme
- Adım 5: Sonraki Adım
- Adım 6: Program
- 7. Adım: Sonuç
Video: 6502 Minimal Bilgisayar (Arduino MEGA ile) Bölüm 1: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
6502 mikroişlemci ilk olarak 1975'te ortaya çıktı ve MOS Teknolojisi için Chuck Peddle liderliğindeki küçük bir ekip tarafından tasarlandı. O zamanlar Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 ve 64 gibi video konsollarında ve ev bilgisayarlarında kullanılıyordu. O zamanlar piyasadaki en ucuzlardan biriydi. Asla gerçekten kaybolmadı ve şimdi birçok uygulama için hobiler ve profesyoneller tarafından kullanılıyor.
Kullandığım sürüm, Western Design Center tarafından yapılan ve orijinalinden on kat daha az güç kullanan W65C02S6TPG-14. Orijinal çip gibi 1 MHz'de çalışması gerekmediği için özeldir. Çok daha yavaş çalışabilir veya bir programda tek adımda kullanılabilir ve hatta 14 MHz'e kadar çıkabilir. Çipin Veri Sayfası yeteneklerini açıklar. Diğer 6502 yongaları bu yeteneğe sahip değildir ve bu şekilde çalışmayacaktır. Çipler şu anda Ebay'de ve diğer kaynaklarda mevcuttur.
Gereçler
Kullanılan tüm parçalar şu anda Ebay, AliExpress ve diğerlerinde mevcuttur.
Adım 1: Konsept
İlhamımı, YouTube'da 6502 ve bilgisayar ve devre inşa etmenin diğer birçok yönü hakkında bir dizi video hazırlayan Ben Eater'den aldım. Program orijinal olarak onun tarafından yazılmıştır ve ben bunu ve tasarımlarından bazılarını bu Eğitilebilir Tabloyu ortaya çıkarmak için değiştirdim. Bana ilham veren başka bir kişi, GitHub'da 6502'sini kontrol etmek için bir PIC mikro kullandığı bir bölümü olan Andrew Jacobs'du.
Ben gibi, 6502'yi izlemek için bir Arduino MEGA kullanıyorum. Ben'in aksine saat sinyalini sağlamak için MEGA'yı da kullanıyorum. Şu anda herhangi bir EEPROM veya RAM kullanmıyorum.
2. Adım: Gereksinimler
Bu "bilgisayarı" oluşturmak için bir öğe listesi aşağıdaki gibidir:
1 x Arduino MEGA
1 x Batı Tasarım Merkezi W65C02S6TPG-14
1 x 74HC00N IC (Dörtlü 2 girişli NAND geçidi) veya benzeri
1 x 74HC373N IC (Sekizli D tipi şeffaf mandal) veya benzeri
2 x 830 delikli ekmek tahtası (1 tutam)
Çeşitli Dupont erkek - erkek uçlar ve bağlantı telleri
2 x LED (direnç olmadan kurtulabileceğiniz için 5 mm mavi kullandım)
1 x 12mm Anlık Dokunsal Basmalı Düğme Anahtarı PCB'ye Monte SPST veya benzeri
1 x 1K direnç
2 x 0.1 uF seramik kapasitör
1 x 8 Yollu Su Işığı Çerçeve 5mm kırmızı LED (yukarıdaki gibi) veya 8 LED ve direnç
NOT: Lehimlenmemiş kiti alırsanız, LED'leri ortak katot olacak şekilde yanlış şekilde takabilirsiniz. Başka bir yere kolayca bağlanabilmesi için bir uç (pim yerine) takıyorum. VCC şimdi Ground olur. Elbette LED'leri (birleştirilmiş bir üründe) çevirebilir ve yeniden lehimleyebilirsiniz, ancak bu çok fazla faff! Kitler şu anda AliExpress'te mevcuttur.
Adım 3: Bir araya getirmek
Adres ve veri yolları için şeritlerinden ayrılmamış yeni DuPont kablolarını kullanmayı daha kolay buldum.
6502'nin 9 (A0) pimini MEGA'nın 52 pimine bağlayın, 6502'nin pin 10'u (A1) pin 50'ye vs…
a kadar
6502'nin 25 (A15) pimini MEGA'nın 22 pimine bağlayın.
Şimdiye kadar 16 bağlantı.
aynı şekilde
6502'nin 26 (D7) pinini MEGA'nın pin 39'una bağlayın, 6502'nin pim 27'si (D6), pim 41'e vb.
a kadar
6502'nin 33 (D0) pimini MEGA'nın 53 pimine bağlayın.
8 bağlantı daha.
MEGA'daki pim 8'i (VDD) 5v'ye bağlayın.
Pin 8'den breadboard'un Gnd'sine bağlanan 0.1 uF'lik bir kapasitör burada faydalı olabilir ancak gerekli değildir.
Pin 21'i (VSS) MEGA üzerindeki Gnd'ye bağlayın.
2, 4, 6, 36 ve 38 numaralı pinler 5v'a bağlanabilir
Pim 37'yi (Saat) MEGA'nın pim 2 ve pim 7'sine bağlayın.
Pim 34'ü (RWB) MEGA'nın pin 3'üne bağlayın.
Pim 40'ı (Sıfırlama) yukarıdaki şemaya göre bağlayın.
Adım 4: Devreyi Test Etme
Bu aşamada 6502 çalışacak ve program1 kullanılabilir. 8 yollu kayan yazı (yukarıdaki gibi) kullanıyorsanız, doğrudan devre tahtasına takılabilir ve fly lead toprağa bağlı olabilir veya 8 LED ve direnç kullanabilirsiniz. LED'ler veri yolunda ne olduğunu gösterecektir.
Bu aşamada, neler olduğunu takip etmek için Loop()'taki gecikmeleri 500 veya daha fazlasına ayarlamak iyi olacaktır.
Seri Monitörde yukarıdakine benzer bir çıktı almalısınız. Sıfırla'ya basıldığında, işlemci 7 döngüden geçer ve ardından programın başlangıcını $FFFC ve $FFFD konumlarında arar. 6502'nin okuyacağı fiziksel bir adres olmadığından, bunları MEGA'dan sağlamamız gerekiyor.
Yukarıdaki çıktıda, 6502 $FFFC ve $FFFD okur ve 1000$'dan programın başlangıcı olan 00$ ve 10$ (Düşük bayt, Yüksek bayt) alır. İşlemci daha sonra programı $1000 konumunda (yukarıdaki gibi) yürütmeye başlar. Bu durumda $A9 ve $55 okur, yani LDA#$55 (akümülatöre 85 yükleyin). Yine fiziksel bir bellek konumu olmadığı için MEGA, veri yolundan okunanları simüle eder.
55$ (85), 01010101 ikili düzenini verir ve 1 bit sola döndürüldüğünde, $AA (170) 10101010 değerini verir.
Program, işlemcinin düzgün çalıştığını ancak kısa sürede biraz sıkıcı hale geldiğini gösteriyor, bu nedenle bir sonraki bölüme geçiyor.
Adım 5: Sonraki Adım
Yukarıdaki "spagetti yığını" muhtemelen bu aşamadan sonra sahip olacağınız şeye benzer.
Ardından, 74HC373N ve 74HC00N IC'lerini devre tahtasına eklemeniz gerekir.
Ne yazık ki 373'ün pinleri veri yolu ile aynı hizada değil, bu yüzden kablolarla bağlanması gerekecek.
5v'yi pin 20'ye bağlayın.
Topraklamayı pim 10'a bağlayın.
6502'nin 33 (D0) pimini 74HC373N'nin 3 (D0) pimine bağlayın
ve aynı şekilde D1 ila D7 pinleri ile.
Q0 ila Q7 çıkışlardır ve bunların LED çerçevesine veya ayrı LED'lere ve dirençlere bağlanması gerekir.
74HC00 ile kapılarından sadece 2 tanesine ihtiyaç vardır
5v'yi pim 14'e bağlayın.
Topraklamayı pim 7'ye bağlayın.
6502'nin 17 (A8) pimini 74HC00'ün 1 (1A) pimine bağlayın
6502'nin 25 (A15) pimini 74HC00'ün 2 (1B) pimine bağlayın
6502'nin 34(R/W) pinini 74HC00'ün 5 (2B) pinine bağlayın
74HC00'ün 3 (1Y) pimini 74HC00'ün 4 (2A) pimine bağlayın
74HC00'ün 6 (2Y) pimini 74HC373N'nin 11 (LE) pimine bağlayın
74HC373N'nin 11 (LE) pinini 74HC373N'nin 1 (OE) pinine bağlayın
Mavi bir LED'i 1Y'ye ve toprağa ve 2Y'yi toprağa bağlayabilirsiniz, bu, kapının ne zaman aktif olduğunu gösterecektir.
Son olarak onClock prosedüründeki satırı program1'den program2'ye değiştirin
setDataPins(program2[ofset]);
Adım 6: Program
6502-Monitor programı, yukarıda açıklanan iki 6502 rutinini içerir.
Program hala geliştirilme aşamasındadır ve biraz düzensizdir.
program2'yi çalıştırırken, döngü()'deki gecikmeler 50 veya daha az olabilir ve hatta tamamen kaldırılabilir. Serial.print() satırlarını yorumlamak 6502'nin daha hızlı çalışmasını sağlar. 373'ün pim 1'inin (OE) pim 11'den (LE) ayrılması farklı sonuçlar verir. 373'ün pin 1 ve pin 11'ini NAND kapılarından ayırmak, her saat döngüsünde veri yolunda ne olduğunu görmenizi sağlar.
Bu pin yükselirse, 8 çıkış hattı devre dışı bırakılacağından, OE'yi serbest bırakmak yerine toprağa bağlamanız gerekebilir. LE pini yüksek olduğunda çıkış pinleri girişlerle aynıdır. LE pinini düşük almak çıkışları kilitler, yani giriş pinleri değişirse çıkışlar aynı kalır.
Programın anlaşılmasını kolaylaştırmak için mümkün olduğunca basit tutmaya çalıştım.
Zaman gecikmelerini denemek, 6502'nin tam olarak ne yaptığını takip etmenizi sağlar.
6502 Assembler'da iki program (her ikisi de 1000$ adresinde çalışır) aşağıdadır:
program1
LDA#55$
NOP
ROL
ST$1010
1000$
ROL, akümülatörün içeriğini bir bit sola döndürür, bu da 55$'ın şimdi AA$ olduğu anlamına gelir.
Makine kodunda (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA#01$
ST$8100
ADC#03$
ST$8100
1005 JMP
Makine kodunda (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
Program2'de artık 74HC373'ün adres yolunda bulunduğu $8100 fiziksel adresi vardır.
yani 6502'nin A15'i 32768 (8000$) ve A8 256 (0100$) = 33024 (8100$).
Dolayısıyla 6502, 8100$'a (STA$8100) yazdığında, 6502'nin R/W'si düşüktür ve 373 LE düştüğünde 6502 veri yolundaki veriler kilitlenir. 74HC00 NAND Kapısı nedeniyle sinyaller tersine çevrilir.
Yukarıdaki ekran baskısında, ikinci yazma 3 arttı (ADC#$03) - $7F'den 82$'a gitti.
Gerçekte, 373'ün belirli konumu için adres yolunun 2'den fazla satırı kullanılacaktır. Bu, olası 65536'dan tek fiziksel adres olduğundan, adres yolunun nasıl çalıştığını gösterir. Farklı adres pinlerini deneyebilir ve farklı bir yere koyabilirsiniz. Elbette, STA işlenenlerini yeni konuma değiştirmeniz gerekecektir. Örneğin. A15 ve A9 adres satırlarını kullandıysanız, adres 8200 $ (32768 + 512) olacaktır.
7. Adım: Sonuç
Bir 6502'yi çalıştırmanın ne kadar kolay olduğunu göstermeye çalıştım.
Bu alanda uzman değilim, bu nedenle yapıcı yorum veya bilgileri memnuniyetle karşılarım.
Bunu daha da geliştirebilirsin ve yaptıklarınla ilgilenirim.
Projeye bir EEPROM, SRAM ve 6522 eklemeyi ve ileride strip board üzerine koymayı düşünüyorum.
Önerilen:
6502 Minimal Bilgisayar (Arduino MEGA ile) Bölüm 3: 7 Adım
6502 Minimal Bilgisayar (Arduino MEGA ile) Bölüm 3: Daha da ileriye giderek, şimdi ana karta bir Sekizli Mandal, 8 dikdörtgen LED ve 220 Ohm direnç dizisi ekledim. Ayrıca LED'lerin kapatılabilmesi için dizinin ortak pimi ile topraklaması arasında bir jumper vardır. 74HC00 NAND kapısı h
6502 & 6522 Minimal Bilgisayar (Arduino MEGA ile) Bölüm 2: 4 Adım
6502 & 6522 Minimal Computer (Arduino MEGA ile) Bölüm 2: Önceki Instructable'ımdan sonra, şimdi 6502'yi bir şerit tahtaya koydum ve bir 6522 Çok Yönlü Arayüz Adaptörü (VIA) ekledim. 6502 ile mükemmel bir eşleşme olduğu için yine 6522'nin bir WDC sürümünü kullanıyorum
Bilgisayar Penceresi Nasıl Oyulur (Bölüm 1): 6 Adım
Bilgisayar Penceresi Nasıl Oyulur (Bölüm 1): Oyulmuş açık pencereli birçok durum gördüm. Pencerelerime yeni bir görünüm kazandırmak için oymayı tercih etmiştim. Bu göründüğü kadar zor değil, sadece biraz zaman ayırın ve iyi sonuçlar elde edeceksiniz. Diğer vaka penceresi talimatları Instru
Bilgisayar Penceresi Nasıl Oyulur (Bölüm 2): 5 Adım (Resimlerle)
Bilgisayar Penceresi Nasıl Oyulur (Bölüm 2): Bu, Bilgisayar Penceresi Nasıl Oyulur (Bölüm 1) ile uyumludur. Bu, pencerenin bir şekilde Tron gibi görünmesini sağlar. Bu güzel bir etki ama biraz br
RE Sistemleri için Bilgisayar (Bölüm 1 / 2) (Donanım): 5 Adım
RE Sistemleri için Bilgisayar (Part 1 / 2) (Donanım): Burada size küçük Yenilenebilir Enerji sistemleri için tam olarak çalışan bir Mini Masaüstü bilgisayarı nasıl yaptığımı göstereceğim. Kullanmayı planladığım RE sistemi öncelikle 12 Voltluk bir sistem olacak. 6 veya 8 Golf Arabası pil ile ve 700 watt güç inversiyonuna sahip olacağım