Mündəricat:

6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə: 7 addım
6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə: 7 addım

Video: 6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə: 7 addım

Video: 6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə: 7 addım
Video: Arduino Mega 6502 - Work in Progress #1 2024, Noyabr
Anonim
6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə
6502 Minimal Kompüter (Arduino MEGA ilə) 1 -ci hissə

6502 mikroprosessoru ilk dəfə 1975 -ci ildə ortaya çıxdı və MOS Texnologiyası üçün Chuck Peddle -in rəhbərlik etdiyi kiçik bir qrup tərəfindən hazırlanmışdır. O vaxt Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 və 64 daxil olmaqla video konsollarda və ev kompüterlərində istifadə olunurdu. O dövrdə bazarda ən ucuzlarından biri idi. Həqiqətən heç vaxt getməmişdir və indi həvəskarlar və peşəkarlar tərəfindən bir çox tətbiq üçün istifadə olunur.

İstifadə etdiyim versiya Qərb Dizayn Mərkəzi tərəfindən hazırlanan və orijinaldan on dəfə az güc istifadə edən W65C02S6TPG-14-dir. Xüsusi bir xüsusiyyəti, orijinal çip kimi 1 MHz -də işləməməsidir. Daha yavaş işləyə bilər və ya bir proqramda bir addım atmaq üçün istifadə edilə bilər və hətta 14 MHz -ə qədər artırıla bilər. Çip üçün məlumat vərəqi onun imkanlarını izah edir. Digər 6502 çiplərində bu qabiliyyət yoxdur və bu şəkildə işləməyəcək. Çiplər hazırda Ebay -da və digər mənbələrdə mövcuddur.

Təchizat

İstifadə olunan bütün hissələr hal -hazırda Ebay, AliExpress və digərlərində mövcuddur.

Addım 1: Konsepsiya

İlhamımı YouTube -da 6502 və kompüter və sxemlərin qurulmasının bir çox digər aspektləri haqqında bir sıra videolar hazırlayan Ben Eater -dən aldım. Proqramı əvvəlcə onun özü yazmışdı və mən bu və onun bəzi dizaynlarını bu Təlimatla tanış olmaq üçün dəyişdirdim. Mənə ilham verən başqa bir şəxs, GitHub -da 6502 -ni idarə etmək üçün bir PIC mikro istifadə etdiyi bir bölmə olan Andrew Jacobs idi.

Ben kimi, 6502 -ni izləmək üçün Arduino MEGA istifadə edirəm. Məndən fərqli olaraq saat siqnalını təmin etmək üçün MEGA -dan da istifadə edirəm. Hazırda heç bir EEPROM və ya RAM istifadə etmirəm.

Addım 2: Tələblər

Tələblər
Tələblər

Bu "kompüteri" qurmaq üçün maddələrin siyahısı belədir:

1 x Arduino MEGA

1 x Qərb Dizayn Mərkəzi W65C02S6TPG-14

1 x 74HC00N IC (Dörd 2 girişli NAND qapısı) və ya bənzəri

1 x 74HC373N IC (Octal D tipli şəffaf mandal) və ya bənzəri

2 x 830 delikli çörək lövhəsi (1 çimdikdə)

Müxtəlif Dupont kişi - kişi telləri və keçid telləri

2 x LED (5 mm mavi istifadə etdim, çünki heç bir rezistor olmadan qaça bilərsiniz)

1 x 12 mm ani toxunma düyməsini açarı PCB -yə quraşdırılmış SPST və ya bənzəri

1 x 1K rezistor

2 x 0.1 uF keramika kondansatörləri

1 x 8 Yollu Su İşığı Marquee 5 mm qırmızı LED (yuxarıdakı kimi) və ya 8 LED və rezistor

QEYD: Satılmamış dəsti alsanız, LED -ləri ümumi bir katot halına gətirmək üçün yanlış şəkildə yuvarlaqlaşdıra bilərsiniz. Başqa bir yerə asanlıqla bağlana bilməsi üçün uç ucunu (pin yerinə) bağlayıram. VCC indi Zəminə çevrilir. Əlbəttə ki, LED-ləri (yığılan bir əşyanın üstünə) çevirib yenidən lehimləyə bilərsiniz, amma bu çox şeydir! Kitlər hazırda AliExpress -də mövcuddur.

Addım 3: Bir yerə qoyun

Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması
Birlikdə qoyulması

Ünvan və məlumat avtobusları üçün lentindən ayrılmamış yeni DuPont tellərindən istifadə etməyi daha asan tapdım.

6502 -nin 9 (A0) pinini MEGA -nın 52 -ci pininə qoşun, 6502 nömrəli pin 10 (A1) ilə pin 50 və s.

qədər

6502 -nin 25 (A15) pinini MEGA -nın 22 -ci pininə qoşun.

İndiyə qədər 16 əlaqə.

Eynilə

6502 -nin 26 -cı pinini (D7) MEGA -nın 39 -cu pininə bağlayın, 6502 nömrəli pin 27 (D6) 41 -ci pin və s.

qədər

6502 -nin 33 -cü pinini (D0) MEGA -nın 53 -cü pininə bağlayın.

Daha 8 əlaqə.

Pin 8 (VDD) MEGA -da 5v -ə qoşun.

Çörək lövhəsinin 8 -ci pinindən Gnd -ə bağlı olan 0.1uF kondansatör burada faydalı ola bilər, lakin lazım deyil.

Pin 21 (VSS) MEGA -da Gnd -ə qoşun.

2, 4, 6, 36 və 38 pinləri 5v -ə bağlana bilər

37 pinini (Saat) MEGA -nın 2 -ci və 7 -ci pinlərinə qoşun.

34 pinini (RWB) MEGA -nın 3 -cü pininə qoşun.

Pimi 40 (Sıfırla) yuxarıdakı diaqram kimi bağlayın.

Addım 4: Dövrəni yoxlayın

Dövrə Testi
Dövrə Testi

Bu mərhələdə 6502 işləyəcək və proqram1 istifadə edilə bilər. 8 tərəfli marquee istifadə edirsinizsə (yuxarıda göstərildiyi kimi), birbaşa çörək taxtasına və uçucu qurğunun yerə bağlana bilər və ya 8 LED və rezistordan istifadə edə bilərsiniz. LED -lər məlumat avtobusunda nə olduğunu göstərəcək.

Bu mərhələdə, baş verənləri izləmək üçün Loop () gecikmələrini 500 və ya daha çox olaraq təyin etmək yaxşı olardı.

Serial Monitorda yuxarıdakı kimi oxşar bir nəticə əldə etməlisiniz. Sıfırlama düyməsinə basıldıqda, prosessor 7 dövrdən keçir və sonra proqramın başlamasını $ FFFC və $ FFFD yerlərində axtarır. 6502 -nin oxunması üçün heç bir fiziki ünvan olmadığı üçün onları MEGA -dan təmin etməliyik.

Yuxarıdakı çıxışda, 6502 $ FFFC və $ FFFD oxuyur və proqramın başlanğıcı olan $ 1000 və $ 10 (Low byte, High byte) alır. Daha sonra prosessor proqramı $ 1000 (yuxarıdakı kimi) yerində icra etməyə başlayır. Bu halda $ A9 və $ 55, yəni LDA#55 $ oxuyur (Akkumulyatora 85 yükləyin). Yenə fiziki yaddaş yeri olmadığı üçün MEGA, məlumat avtobusundan oxunanı simulyasiya edir.

$ 55 (85) ikili model verir 01010101 və 1 bit sola döndükdə $ AA (170) 10101010 verir.

Proqram, prosessorun düzgün işlədiyini göstərir, lakin tezliklə bir az cansıxıcı olur, növbəti hissəyə keçin.

Addım 5: Növbəti addım

Növbəti addım
Növbəti addım
Növbəti addım
Növbəti addım

Yuxarıdakı "spagetti yığını", ehtimal ki, bu mərhələdən sonra sahib olacağınız bir şeydir.

Sonra 74HC373N və 74HC00N IC -lərini çörək taxtasına əlavə etməlisiniz.

Təəssüf ki, 373 -ün pinləri məlumat avtobusuna uyğun gəlmir, buna görə də tellərlə bağlamaq lazımdır.

5v -ni pin 20 -ə bağlayın.

Ground'u pin 10 -a bağlayın.

6502 -nin 33 -cü pinini (D0) 74HC373N -in 3 -cü pininə (D0) bağlayın

və eyni şəkildə D1 -dən D7 sancaqları ilə.

Q0 -dan Q7 -yə qədər olan çıxışlardır və bunların LED çərçivəsinə və ya fərdi LED -lərə və rezistorlara qoşulması lazımdır.

74HC00 ilə yalnız 2 qapısına ehtiyac var

5v -ni pin 14 -ə bağlayın.

Ground -u pin 7 -ə qoşun.

6502 -nin 17 (A8) pinini 74HC00 -ün 1 (1A) pininə qoşun

6502 -nin 25 -ci pinini (A15) 74HC00 -ün 2 -ci pininə (1B) bağlayın

6502 -nin 34 -cü pinini (R/W) 74HC00 -ün 5 -ci pininə (2B) bağlayın

74HC00 -ün 3 (1Y) pinini 74HC00 -ün 4 -cü pininə (2A) bağlayın

74HC00 -ün 6 -cı pinini (2Y) 74HC373N -in 11 -ci pininə (LE) bağlayın.

74HC373N -in 11 -ci pinini (LE) 74HC373N -in 1 -ci pininə (OE) bağlayın.

Mavi bir LED -i 1Y -ə və 2Y -ni yerə qoşa bilərsiniz, bu qapının aktiv olduğunu göstərir.

Nəhayət onClock prosedurundakı xətti program1 -dən program2 -ə dəyişin

setDataPins (proqram2 [ofset]);

Addım 6: Proqram

Proqram
Proqram
Proqram
Proqram

6502-Monitor proqramı yuxarıda təsvir olunan iki 6502 rutini ehtiva edir.

Proqram hələ də inkişaf mərhələsindədir və bir az səliqəsizdir.

Program2 işləyərkən, loopdakı gecikmələr 50 və ya daha az ola bilər və hətta tamamilə aradan qaldırıla bilər. Serial.print () xətlərinin şərh edilməsi də 6502 -nin daha sürətli işləməsini təmin edir. 373 -ün 1 -ci pinini (OE) pin 11 -dən (LE) ayırmaq fərqli nəticələr verir. NAND qapılarından 373 -ün 1 -ci pinini və 11 -ci pinini ayırmaq, hər avtobusda nə olduğunu görmək imkanı verir.

Bu pin yüksəlirsə, 8 çıxış xətti deaktiv olduğu üçün OE -ni üzən buraxmaq əvəzinə yerə bağlamanız lazım ola bilər. LE pin yüksək olduqda, çıxış pinləri girişlərlə eynidır. LE pinini aşağı çəkmək, çıxışları bağlayır, yəni giriş pinləri dəyişərsə, çıxışlar eyni qalır.

Proqramı başa düşməyi asanlaşdırmaq üçün mümkün qədər sadə saxlamağa çalışdım.

Zaman gecikmələri ilə təcrübə etmək, 6502 -nin nə etdiyini tam olaraq izləməyinizə imkan verir.

Aşağıda 6502 Assembler -də iki proqram (hər ikisi 1000 $ ünvanında işləyir):

proqram 1

LDA#55 dollar

YOX

ROL

STA $ 1010

JMP 1000 dollar

ROL, akkumulyatorun məzmununu bir az geriyə çevirir, yəni 55 dollar artıq AA olur.

Maşın kodunda (hex): A9 55 EA 2A 8D 10 10 4C 00 10

proqram 2

LDA#01 dollar

STA 8100 dollar

ADC#03 dollar

STA 8100 dollar

JMP 1005 dollar

Maşın kodunda (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Proqram2 -də, 74HC373 -ün ünvan avtobusunda yerləşdiyi 8100 dollarlıq fiziki bir ünvan var.

yəni 6502 -dən A15 32768 (8000 $) və A8 256 (0100 $) = 33024 (8100 $) təşkil edir.

Beləliklə, 6502 8100 $ (STA $ 8100) yazdıqda, 6502 -nin R/W aşağıdır və 373 LE aşağı düşəndə 6502 məlumat avtobusundakı məlumatlar kilidlənir. 74HC00 NAND Gate səbəbiylə siqnallar tərsinə çevrilir.

Yuxarıdakı ekranda ikinci yazı 3 artdı (ADC#03 $) - 7F -dən 82 dollara.

Əslində, 373 -ün konkret yeri üçün ünvan avtobusunun 2 -dən çox xətti istifadə ediləcəkdi. Bu, 65536 -dan yeganə fiziki ünvan olduğundan, ünvan avtobusunun necə işlədiyini göstərir. Fərqli ünvan pinləri ilə sınaq keçirə və fərqli bir yerə qoya bilərsiniz. Əlbəttə ki, STA operandlarını yeni yerə dəyişdirməlisiniz. məs. A15 və A9 ünvan xətlərindən istifadə etsəniz, ünvan 8200 $ (32768 + 512) olardı.

Addım 7: Nəticə

Nəticə
Nəticə

6502 -ni işə salmağın nə qədər asan olduğunu nümayiş etdirməyə çalışdım.

Mən bu sahədə mütəxəssis deyiləm, buna görə hər hansı bir konstruktiv şərh və ya məlumatı alqışlayıram.

Bunu daha da inkişaf etdirə bilərsiniz və etdiyiniz işlərlə maraqlanacağam.

Layihəyə bir EEPROM, SRAM və 6522 əlavə etmək və gələcəkdə şerit lövhəyə qoymaq niyyətindəyəm.

Tövsiyə: