6502 & 6522 Минималды компьютер (Arduino MEGA көмегімен) 2 -бөлім: 4 қадам
6502 & 6522 Минималды компьютер (Arduino MEGA көмегімен) 2 -бөлім: 4 қадам
Anonim
6502 және 6522 минималды компьютер (Arduino MEGA көмегімен) 2 -бөлім
6502 және 6522 минималды компьютер (Arduino MEGA көмегімен) 2 -бөлім

Алдыңғы нұсқаулықтан кейін мен 6502 -ді жолақ тақтасына салып, 6522 әмбебап интерфейс адаптерін (VIA) қостым. Тағы да, мен WDC 6522 нұсқасын қолданамын, себебі бұл олардың 6502 нұсқасына сәйкес келеді. Бұл жаңа чиптер MOS -тың түпнұсқаларына қарағанда әлдеқайда аз қуатты ғана пайдаланбайды, сонымен қатар оларды баяу жылдамдықта немесе тіпті қадаммен өткізуге болады. еш қиындықсыз бағдарлама.

Arduino бағдарламасын Бен Этер (YouTube -те көптеген бейнелері бар) жазған және мен бұл нәтижеге жету үшін оны өзгерттім.

Жабдықтар

1 x WDC W65C02 процессоры

1 x WDC W65C22 әмбебап интерфейс адаптері

1 x 74HC00N IC (2 кірісті NAND қақпасы) немесе ұқсас

Ені 1 х 10 см (35 сызық) Жолақ тақтасы

2 x 40 істікшелі DIL розеткалары

1 x 14 істікшелі DIL ұясы

ПХД тақырыптық түйреуіштері 2,54 мм

ПХД басындағы розеткалар 2,54 мм

1 x 12 мм лездік тактильді батырмалы қосқыш PCB орнатылған SPST немесе ұқсас

1 x 1K резистор

1 x 3K3 резисторы

2 x 0,1 uF керамикалық конденсаторлар

1 х 8 жолды су жарығы 5 мм қызыл жарықдиодты

Қосылуға арналған түрлі түсті сымдар

8 ер - еркек байланыстырушы сымдар

1 -қадам: Электр тізбегі

Электр тізбегі
Электр тізбегі
Электр тізбегі
Электр тізбегі

Электр тақтасы өте жинақы және төменгі жағы тікелей Arduino MEGA -ға қосылады. Бұған жету үшін, түйреуіштерді тақтаның астына дәнекерлеу алдында пластикалық ұстағыштарға мүмкіндігінше итеріледі. Бұл үшін ұзын түйреуіштер қолданылуы мүмкін еді, бірақ стандартты түйреуіштер тақтаның MEGA үстіне берік орналасқанын білдіреді.

Мен MEGA -ға қосылу үшін жолақ тақтасының жолдарын пайдалану үшін 6502 және 6522 IC -лерді қойдым. IC астында жасырылған 6502 үшін кейбір қосылымдар бар. Тақтаны жасағанда бірінші кезекте Ардуиноның қос розеткасына қосылатын 16 жолақты кесу керек болды. Сыртқы 2 -ді кесудің қажеті жоқ, себебі 5v және Gnd екі жақта. Келесі дәнекерлеу төменгі жағында 18 түйреуіштің 2 қатарында, ал жоғарғы жағында 18 розеткадан тұратын 2 қатарда.

Осыдан кейін DIL розеткалары орнына дәнекерленіп, олардың арасындағы жолдар кесілді. Мен 74HC00 -дің 14 -ші түйреуішін 5v -ге ұқсас жолға қою арқылы қосылымды сақтай алар едім. Мен жолдарды жалғаушы сымдарды дәнекерлеу кезінде қажет екеніне сенімді болғанда ғана кесіп алдым. Алайда, бәрі де жоспар бойынша бола бермейді, мен бастапқыда Arduino -ның 2, 3 және 7 түйреуіштерін қолдана отырып, алдыңғы нан тақтасының жолақ тақтасын жасадым, бірақ олар жолақ тақтасындағы тесіктерге сәйкес келмейді, сондықтан қолдануға тура келді. 18, 31 және 37 түйреуіштер. Сондықтан 31 және 37 тақталарындағы сілтемелер. Неліктен мен қолданылмаған түйреуіштердің бірін (23, 24 және т.б.) сағат үшін пайдаланбадым деп ойлайтын шығарсыз, себебі олар қолдамайды. үзіледі, сондықтан 18, 19, 20 немесе 21 түйреуішті қолдануға тура келді. Бақытымызға орай, бұл 4 түйреуіш таспадағы тесіктерге сәйкес келеді және бәрін ықшам етеді. 18 -түйреуіш басқа сымдардан ең алыс орналасқан.

Сіз сондай -ақ менің толтырылған тақтаның менің диаграммаға сәйкес келмейтінін байқай аласыз. Себебі, мен басқа біреудің схемасына сүйендім. Сондықтан 74HC00 қосылымдары. Мен сондай -ақ қуат светодиоды мен Gnd және 5v үшін қосымша 2 қатар розеткаларды, тағы бірнеше конденсаторларды қостым.

Мен 2 деректер розеткасын қосар едім, бірақ бұл тақтаны кесіп өтетін көп сымдарды білдіреді. Мен мұны уақытша шара ретінде 8 байланыс сымын таңдадым.

6522 А және В порттары жарықдиодты маркаларды оңай кіргізу үшін өз жолдарына дәнекерленген.

Қазіргі уақытта сымдар нан тақтасының нұсқасына қарағанда әлдеқайда аз.

2 -қадам: Бағдарламалау теориясы

Бағдарламалау теориясы
Бағдарламалау теориясы

6522 -де екі енгізу -шығару порттары бар, сонымен қатар басқа да көптеген мүмкіндіктер бар, бірақ А және В порттарына оңай қол жетімді. Порттағы деректерді шығару үшін Деректерді бағыттау регистрін (DDR) сәйкес орнату керек және деректерді порттың өзіне жіберу қажет.

Жоғарыда көрсетілгендей, 6522 E000 долларында орналасқан.

В портындағы деректерді шығару үшін $ E002 DDR $ FF (255 - барлық шығыс) мәніне қойылады және деректер $ E000 жіберіледі.

А портындағы деректерді шығару үшін $ E003 DDR $ FF (255 - барлық шығыс) мәніне орнатылады және деректер $ E001 жіберіледі.

Төмендегі код 6502 A регистріне $ FF жүктейді және оны DDR B -ге $ E002 жазады. Содан кейін ол 55 доллар жүктейді және оны ORB -ге жазады. Код бұрылады ($ AA береді) және ORB -ге жазылады. Бағдарлама $ 1005 артқа секіреді және шексіз қайталанады. ЕСКЕРТПЕ: DDR тек бір рет инициализациялануы керек.

Hexdump бөлшектеу мекенжайы

$ 1000 a9 ff LDA #$ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA #55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6а ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 JMP $ 1005

$ 55 екілік жүйеде - 010101010 және $ AA - 10101010, бұл светодиодтардың 4 қосулы, 4 өшірулі болуына әкеледі.

Тез және лас түзету:

74HC00 (Quad 2 input NAND Gate) орнына 74HC08 (Quad 2 input AND Gate) ауыстырыңыз, ал 6522 қазір $ E000 орнына 6000 долларға орналасқан. Бұл оны 6502 адрестік жадының жоғарғы 32K -дан төменгі 32K -ға жылжытады.

3 -қадам: Arduino бағдарламасы мен шығысы

Arduino бағдарламасы мен шығысы
Arduino бағдарламасы мен шығысы

6502 -де оқылатын ЖЖҚ жоқ болғандықтан, Arduino оны оқуға арналған бағдарламамен қамтамасыз етеді. 18 -істікте сағат импульсі анықталған кезде, Arduino бағдарлама деректерін деректер шинасына қояды (Arduino түйрегіштері 39, 41, 43, 45, 47, 49, 51 және 53). 6502 өзінің жеке мекен -жайларын жасайды, оларды тек 22 -ден 52 -ге дейінгі жұп санды түйреуіштер арқылы бақылайды. Arduino сонымен қатар 37 -істіктегі сағат импульсін береді. 6502 -дің R/W желісі 31 -істікте бақыланады.

Arduino деректерді беретіндіктен, әзірге VIA -дан деректерді енгізу үшін 6502 алу мүмкін болмады (егер сіз жақсы білмесеңіз).

Arduino бағдарламасы төменде және сериялық монитордан шығатын үлгі жоғарыда.

4 -қадам: Қорытынды

Мен қайтадан «6502 компьютерін» қалай орнатуға болатынын көрсетуге тырыстым.

Бұл кезеңде 6502 әлі де Arduino -ға жұмыс істеуі үшін оны бағдарлама мен сағат импульсімен қамтамасыз етеді.

Бұл мен оны нан тақтасына орнатқаннан гөрі бір қадам.

Мен бұл жолы 74HC373 қолданған жоқпын, бірақ деректерді шығару үшін күрделі 6522. Сондай -ақ 6522 -де екі енгізу -шығару порттары бар.

Мен SRAM немесе EEPROM орнату арқылы бұл жобаны одан әрі дамытуға ниеттімін.

Ұсынылған: