Съдържание:

6502 Минимален компютър (с Arduino MEGA) Част 1: 7 стъпки
6502 Минимален компютър (с Arduino MEGA) Част 1: 7 стъпки

Видео: 6502 Минимален компютър (с Arduino MEGA) Част 1: 7 стъпки

Видео: 6502 Минимален компютър (с Arduino MEGA) Част 1: 7 стъпки
Видео: Смартфон, о котором вы НЕ ЗНАЛИ! БЮДЖЕТНЫЙ itel A48 от мирового лидера | Обзор 2024, Ноември
Anonim
6502 Минимален компютър (с Arduino MEGA) Част 1
6502 Минимален компютър (с Arduino MEGA) Част 1

Микропроцесорът 6502 се появява за първи път през 1975 г. и е проектиран от малък екип, ръководен от Чък Педъл за MOS Technology. Тогава той се използва във видеоконзоли и домашни компютри, включително Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 и 64. По това време той беше един от най -евтините на пазара. Той никога не е изчезвал и сега се използва от любители и професионалисти за много приложения.

Версията, която използвам, е W65C02S6TPG-14, която е направена от Western Design Center и използва десет пъти по-малко енергия от оригинала. Той е специален с това, че не трябва да работи на 1 MHz като оригиналния чип. Той може да работи много по -бавно или да се използва за единична стъпка през програма и дори да се ускори до 14 MHz. Информационният лист за чипа обяснява неговите възможности. Други чипове 6502 нямат тази възможност и няма да работят по този начин. Чиповете в момента са налични в Ebay, както и в други източници.

Консумативи

Всички използвани части в момента са налични в Ebay, AliExpress и други.

Стъпка 1: Концепцията

Вдъхнових се от Бен Ийтър, който е създал поредица от видеоклипове в YouTube за 6502 и много други аспекти на изграждането на компютри и схеми. Програмата е написана от него първоначално и аз промених това и някои от неговите дизайни, за да излезе с тази инструкция. Друг човек, който ме вдъхнови, беше Андрю Джейкъбс, който има раздел в GitHub, където използва PIC микро, за да контролира своя 6502.

Подобно на Бен, аз използвам Arduino MEGA за наблюдение на 6502. Също така използвам MEGA за предоставяне на часовника за разлика от Бен. В момента също не използвам EEPROM или RAM.

Стъпка 2: Изисквания

Изисквания
Изисквания

За да се изгради този "компютър" списък от елементи е както следва:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-вход NAND порта) или подобен

1 x 74HC373N IC (осмично прозрачно ключалка тип D) или подобен

2 х 830 дупки за хляб (1 на щипка)

Различни мъжки - мъжки проводници и свързващи проводници Dupont

2 x светодиода (използвах 5 мм синьо, тъй като можете да се измъкнете без резистори)

1 x 12 мм моментен тактилен превключвател с бутон, монтиран на печатна платка SPST или подобен

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

2 x 0,1 uF керамични кондензатори

1 x 8 Way Way Light Light Marquee 5 мм червен светодиод (както е посочено по -горе) или 8 светодиода и резистори

ЗАБЕЛЕЖКА: Ако получите разпаяния комплект, можете да поставите светодиодите по грешен начин, така че да са общ катод. Прикрепвам летящ проводник (вместо щифта), така че да може лесно да се свърже на друго място. VCC вече става Ground. Разбира се, можете да обърнете светодиодите (върху сглобен артикул) и да ги запоите отново, но това е много фалшификат! В момента комплектите се предлагат на AliExpress.

Стъпка 3: Сглобявайки го заедно

Сглобявайки го заедно
Сглобявайки го заедно
Сглобявайки го заедно
Сглобявайки го заедно

Открих, че е по -лесно да използвам нови кабели DuPont, които не са били отделени от лентата им за шини за адрес и данни.

Свържете щифт 9 (A0) на 6502 към пин 52 на MEGA, щифт 10 (A1) на 6502 до пин 50 и т.н.

до

Свържете щифт 25 (A15) на 6502 към щифт 22 на MEGA.

16 връзки до момента.

По същия начин

Свържете щифт 26 (D7) на 6502 към щифт 39 на MEGA, щифт 27 (D6) на 6502 до пин 41 и т.н.

до

Свържете щифт 33 (D0) на 6502 към щифт 53 на MEGA.

Още 8 връзки.

Свържете щифт 8 (VDD) към 5v на MEGA.

0.1uF кондензатор, свързан от щифт 8 към Gnd на дъската за хляб, може да бъде полезен тук, но не е необходим.

Свържете щифт 21 (VSS) към Gnd на MEGA.

Пинове 2, 4, 6, 36 и 38 могат да бъдат обвързани с 5v

Свържете щифт 37 (Часовник) към щифт 2 и щифт 7 на MEGA.

Свържете щифт 34 (RWB) към щифт 3 на MEGA.

Свържете щифт 40 (нулиране), както е показано по -горе.

Стъпка 4: Тестване на веригата

Тестване на веригата
Тестване на веригата

На този етап 6502 ще работи и може да се използва програма1. Ако използвате 8 -посочна рамка (както е посочено по -горе), тя може да бъде поставена направо в макетната платка и маховият кабел, свързан към земята, или можете да използвате 8 светодиода и резистори. Светодиодите ще покажат какво има на шината за данни.

На този етап би било също така да зададете забавянията в Loop () на 500 или повече, за да проследите случващото се.

Трябва да получите подобен изход на серийния монитор като този по -горе. Когато се натисне Reset, процесорът преминава през 7 цикъла и след това търси старта на програмата на места $ FFFC и $ FFFD. Тъй като няма физически адреси за четене на 6502, трябва да ги доставим от MEGA.

В горния изход 6502 чете $ FFFC и $ FFFD и получава $ 00 и $ 10 (Low byte, High byte), което е началото на програмата на $ 1000. След това процесорът започва да изпълнява програмата на място $ 1000 (както по -горе). В този случай той чете $ A9 и $ 55, т.е. LDA#$ 55 (Заредете 85 в акумулатора). Отново, тъй като няма местоположение на физическа памет, MEGA симулира това, което се чете от шината за данни.

$ 55 (85) дава двоичен модел 01010101 и при завъртане с 1 бит наляво дава $ AA (170) 10101010.

Програмата показва, че процесорът работи правилно, но скоро става малко скучен, така че преминете към следващата част.

Стъпка 5: Следваща стъпка

Следваща стъпка
Следваща стъпка
Следваща стъпка
Следваща стъпка

„Купчината спагети“по -горе вероятно е нещо подобно на това, което ще имате след този етап.

След това трябва да добавите интегралните схеми 74HC373N и 74HC00N към макета.

За съжаление щифтовете на 373 не са в съответствие с шината за данни, така че ще трябва да бъдат свързани с проводници.

Свържете 5v към щифт 20.

Свържете земята към щифт 10.

Свържете щифт 33 (D0) на 6502 към щифт 3 (D0) на 74HC373N

и по същия начин с щифтове D1 до D7.

Q0 до Q7 са изходите и те ще се нуждаят от свързване към LED панела или отделни светодиоди и резистори.

При 74HC00 са необходими само 2 негови порти

Свържете 5v към щифт 14.

Свържете земята към щифт 7.

Свържете щифт 17 (A8) на 6502 към щифт 1 (1A) на 74HC00

Свържете щифт 25 (A15) на 6502 към щифт 2 (1B) на 74HC00

Свържете щифт 34 (R/W) на 6502 към щифт 5 (2B) на 74HC00

Свържете щифт 3 (1Y) на 74HC00 към щифт 4 (2A) на 74HC00

Свържете щифт 6 (2Y) на 74HC00 към щифт 11 (LE) на 74HC373N

Свържете щифт 11 (LE) на 74HC373N към щифт 1 (OE) на 74HC373N

Можете да свържете син светодиод към 1Y и заземяване, както и 2Y към земя, това ще показва кога портата е активна.

Накрая променете реда в процедурата onClock от program1 на program2

setDataPins (program2 [отместване]);

Стъпка 6: Програмата

Програмата
Програмата
Програмата
Програмата

Програмата 6502-Monitor съдържа двете описани по-горе подпрограми 6502.

Програмата все още се разработва и е малко разхвърляна.

При стартиране на program2, забавянията в цикъла () могат да бъдат 50 или по -малко и дори да бъдат премахнати напълно. Коментирането на редовете Serial.print () също ускорява работата на 6502. Изключването на щифт 1 (OE) на 373 от щифт 11 (LE) дава различни резултати. Изключването на щифт 1 и щифт 11 на 373 от NAND портата ви позволява да видите какво има на шината за данни при всеки тактов цикъл.

Може да се наложи да свържете OE към земята, вместо да я оставяте плаваща, тъй като 8 -те изходни линии са деактивирани, ако този щифт е висок. Когато щифтът LE е висок, изходните щифтове са същите като входовете. Вземането на LE щифта ниско блокира изходите, т.е. ако входните щифтове се променят, изходите остават същите.

Опитах се да направя програмата възможно най -проста, за да я разбера по -лесно.

Експериментирането със закъсненията ви позволява да следите точно какво прави 6502.

По -долу са двете програми (и двете се изпълняват на адрес $ 1000) в 6502 Assembler:

програма1

LDA#55 долара

НОП

ROL

STA $ 1010

JMP $ 1000

ROL завърта съдържанието на акумулатора на един бит вляво, което означава, че $ 55 сега става $ AA.

В машинен код (шестнадесетичен): A9 55 EA 2A 8D 10 10 4C 00 10

програма2

LDA#$ 01

STA $ 8100

ADC#$ 03

STA $ 8100

JMP $ 1005

В машинен код (шестнадесетичен): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

В program2 вече има физически адрес $ 8100, където 74HC373 се намира на адресната шина.

A15 от 6502 е 32768 ($ 8000), а A8 е 256 ($ 0100) = 33024 ($ 8100).

Така че, когато 6502 пише до $ 8100 (STA $ 8100), R/W на 6502 е нисък и данните на шината за данни 6502 се блокират, когато 373 LE падне. Поради 74HC00 NAND Gate, сигналите са обърнати.

В горния ситопечат второто записване се е увеличило с 3 (ADC#$ 03) - от $ 7F на $ 82.

В действителност, повече от 2 реда на адресната шина ще бъдат използвани за конкретното местоположение на 373. Тъй като това е единственият физически адрес от възможните 65536, той демонстрира как работи адресната шина. Можете да експериментирате с различни адресни щифтове и да го поставите на различно място. Разбира се, ще трябва да промените STA операндите на новото място. напр. Ако сте използвали адресни редове A15 и A9, адресът ще бъде $ 8200 (32768 + 512).

Стъпка 7: Заключение

Заключение
Заключение

Опитах се да покажа колко лесно е да стартирате 6502.

Не съм експерт в тази област, така че ще се радвам на конструктивни коментари или информация.

Добре дошли сте да развиете това по -нататък и ще се интересувам от това, което сте направили.

Възнамерявам да добавя EEPROM, SRAM и 6522 към проекта, както и да го поставя на лента в бъдеще.

Препоръчано: