Мазмуну:

6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк: 7 кадам
6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк: 7 кадам

Video: 6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк: 7 кадам

Video: 6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк: 7 кадам
Video: История CPU: MOS 6502 2024, Июль
Anonim
6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк
6502 Минималдуу Компьютер (Arduino MEGA менен) 1 -бөлүк

6502 микропроцессору биринчи жолу 1975 -жылы пайда болгон жана MOS технологиясы үчүн Чак Педдл жетектеген чакан команда тарабынан иштелип чыккан. Ал кезде видео консолунда жана үй компьютерлеринде, анын ичинде Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 жана 64 колдонулган. Ошол учурда ал рынокто эң арзан болгон. Ал эч качан чындап кеткен эмес жана азыр аны көптөгөн колдонмолор үчүн хоббисттер жана адистер колдонушат.

Мен колдонуп жаткан версия W65C02S6TPG-14, ал Батыш Дизайн Борбору тарабынан даярдалган жана оригиналына караганда он эсе аз энергияны колдонот. Бул оригиналдуу чип сыяктуу 1 МГцте иштөөнүн кажети жоктугу менен өзгөчөлөнөт. Ал бир кыйла жайыраак иштей алат же программаны бир кадамга чейин колдонсо болот, ал тургай 14 МГцке чейин жетет. Чиптин маалымат баракчасы анын мүмкүнчүлүктөрүн түшүндүрөт. Башка 6502 чиптеринде мындай мүмкүнчүлүк жок жана бул жол менен иштебейт. Чиптер учурда Ebayде жана башка булактарда жеткиликтүү.

Жабдуулар

Колдонулган бардык тетиктер учурда Ebay, AliExpress жана башкаларда жеткиликтүү.

1 -кадам: Концепция

Мен шыктануумду YouTubeда 6502 жана компьютерлерди жана микросхемаларды куруунун башка көптөгөн аспектилери жөнүндө видеолордун сериясын чыгарган Ben Eaterдан алдым. Программа башында ал тарабынан жазылган жана мен аны жана анын кээ бир дизайнын ушул Нускамага келүү үчүн өзгөртүп койгом. Мени шыктандырган дагы бир адам GitHubда бөлүмү бар Эндрю Джейкобс болгон, анда ал 6502ди башкаруу үчүн PIC микро колдонот.

Бен сыяктуу эле, мен 6502ди көзөмөлдөө үчүн Arduino MEGA колдонуп жатам. Мен Бенден айырмаланып саат сигналын берүү үчүн MEGAны да колдонуп жатам. Учурда мен эч кандай EEPROM же RAM колдонбойм.

2 -кадам: талаптар

Талаптар
Талаптар

Бул "компьютерди" куруу үчүн нерселердин тизмеси төмөнкүдөй:

1 x Arduino MEGA

1 х Батыш дизайн борбору W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-input NAND дарбазасы) же окшош

1 x 74HC373N IC (Octal D түрүндөгү тунук бекиткич) же окшош

2 x 830 тешик нан тактасы (1 чымчым)

Ар кандай Дюпонт эркек - эркек жетелейт жана шилтеме зымдары

2 х светодиод (мен 5мм көк түстү колдондум, анткени сиз каршылыгы жок туруп кете аласыз)

1 х 12мм убактылуу тийүү баскычын которуу PCBге орнотулган SPST же окшош

1 x 1K каршылыгы

2 x 0.1 uF керамикалык конденсаторлор

1 x 8 Way Water Light Marquee 5mm кызыл LED (жогоруда көрсөтүлгөндөй) же 8 LED жана резистор

ЭСКЕРТҮҮ: Эгерде сиз сатылбаган комплектти алсаңыз, анда диоддорду катоддун айланасына туура эмес киргизе аласыз. Мен башка жерге оңой туташа тургандай чымын коргошун (пин ордуна) туташтырам. VCC азыр Жерге айланат. Сиз, албетте, светодиоддорду айландырып (чогултулган нерсеге) жана аларды кайра ширете аласыз, бирок бул абдан көп! Учурда комплект AliExpressде жеткиликтүү.

3 -кадам: Аны бириктирүү

Аны бириктирүү
Аны бириктирүү
Аны бириктирүү
Аны бириктирүү

Дареги жана маалымат шиналары үчүн лентасынан ажыратылбаган жаңы DuPont зымдарын колдонууну оңой көрдүм.

6502нин 9 (A0) пинин MEGAнын 52 пинине туташтырыңыз, 6502 пин 10 (A1) пин 50гө чейин ж.

чейин

6502нин 25 (A15) пинин MEGAнын 22 пинине туташтырыңыз.

Азырынча 16 байланыш.

Ошо сыяктуу эле

6502нин 26 (D7) пинин MEGAнын 39 пинине туташтырыңыз, 6502нин 27 (D6) пини 41ге чейин ж.б.

чейин

6502нин 33 (D0) пинин MEGAнын 53 пинине туташтырыңыз.

Дагы 8 байланыш.

Pin 8 (VDD) MEGAдагы 5vге туташтырыңыз.

Нан тактасынын 8 -графасынан Gndге туташкан 0.1uF конденсатору бул жерде пайдалуу болушу мүмкүн, бирок зарыл эмес.

21 -пин (VSS) MEGAдагы Gndге туташтырыңыз.

2, 4, 6, 36 жана 38 -пиндер 5vге байланат

37 -пин (Саат) MEGAнын 2 жана 7 -пинге туташтырыңыз.

34 -пинди (RWB) MEGAнын 3 -пинине туташтырыңыз.

40 -пинди (Reset) жогорудагы диаграммага туташтырыңыз.

4 -кадам: Районду тестирлөө

Circuit Testing
Circuit Testing

Бул этапта 6502 иштейт жана program1 колдонулушу мүмкүн. Эгерде сиз 8 тараптуу марканы колдонуп жатсаңыз (жогоруда көрсөтүлгөндөй), аны түз эле нан тактасына жана чымындын коргоосун жерге туташтырууга болот, же 8 LED жана резисторлорду колдонсоңуз болот. LEDS маалымат шинасында эмне бар экенин көрсөтөт.

Бул этапта Loop () кечигүүлөрүн 500 же андан көп кылып, эмне болуп жатканын ээрчүү жакшы болмок.

Сиз Сериялык Монитордо жогорудагыдай окшош чыгууну алышыңыз керек. Кайра коюу басылганда, процессор 7 циклден өтөт, андан кийин программанын башталышын $ FFFC жана $ FFFD жайгашкан жерлерден издейт. 6502 үчүн физикалык даректер жок болгондуктан, биз аларды MEGAдан камсыз кылышыбыз керек.

Жогорудагы чыгарууда 6502 $ FFFC жана $ FFFD окуйт жана программанын башталышы $ 1000 жана $ 10 менен $ 10 (Төмөн байт, Жогорку байт) алат. Андан кийин процессор программаны $ 1000 жайгашкан жерде аткара баштайт (жогорудагыдай). Бул учурда ал $ A9 жана $ 55, б.а. LDA#$ 55 (85ти аккумуляторго жүктөйт) окуйт. Кайра физикалык эс тутуму жок болгондуктан, MEGA маалымат шинасынан окулганды окшоштурат.

$ 55 (85) 01010101 экилик моделин берет жана 1 бит солго бурулганда $ AA (170) 10101010 берет.

Программа процессордун туура иштеп жатканын көрсөтүп турат, бирок көп өтпөй бир аз кызыксыз болуп калат.

5 -кадам: Кийинки кадам

Кийинки кадам
Кийинки кадам
Кийинки кадам
Кийинки кадам

Жогорудагы "спагетти үймөгү", балким, бул этаптан кийин сизде боло турган нерсеге окшош.

Андан кийин 74HC373N жана 74HC00N ICлерин нан тактасына кошуу керек.

Тилекке каршы, 373 -жылдын казыктары маалымат автобусуна туура келбейт, андыктан зымдарга илиниши керек.

5 -пин 20га туташтырыңыз.

Жерди 10 -пинге туташтырыңыз.

6502нин 33 (D0) пинин 74HC373N 3 (D0) пинине туташтырыңыз

жана ошондой эле D1 - D7 төөнөгүчтөрү менен.

Q0 - Q7 - бул жыйынтыктар жана алар LED маркасына же жеке LED жана резисторлорго туташууну талап кылат.

74HC00 менен анын 2 гана дарбазасы керек

5 -пин 14кө туташтырыңыз.

Жерди 7 -пинге туташтырыңыз.

6502нин 17 (A8) пинин 74HC00'дин 1 (1A) пинине туташтырыңыз

6502нин 25 (A15) пинин 74HC00 2 (1B) пинине туташтырыңыз

6502нин 34 (R/W) пинин 74HC00 5 (2B) пинине туташтырыңыз

74HC00 pin 3 (1Y) 74HC00 4 (2A) пинке туташтырыңыз

74HC00'дун 6 (2Y) пинин 74HC373N 11 пинине (LE) туташтырыңыз.

74HC373N пин 11 (LE) туташуу 74HC373N 1 пин (OE)

Сиз көк LEDди 1Yге жана жерге, ошондой эле жерге 2Y туташтырсаңыз болот, бул дарбаза активдүү болгондо көрсөтүлөт.

Акыры onClock процедурасындагы линияны program1ден program2ге өзгөртүңүз

setDataPins (program2 [offset]);

6 -кадам: Программа

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

6502-Monitor программасы жогоруда сүрөттөлгөн эки 6502 тартибин камтыйт.

Программа дагы эле иштелип жатат жана бир аз иретке келтирилген.

Program2ди иштеткенде, циклдеги () кечигүүлөр 50 же андан аз болушу мүмкүн, ал тургай таптакыр жок кылынышы мүмкүн. Serial.print () линияларын комментарийлөө 6502ди ылдамыраак иштетет. 373 -тин 1 -пин (OE) 11 -пинден (LE) ажыратуу ар кандай натыйжаларды берет. NAND дарбазасынан 373 -тин 1 -пин жана 11 -пин ажыратуу сизге ар бир саат циклинде маалымат автобусунда эмне бар экенин көрүүгө мүмкүнчүлүк берет.

Эгер бул пин бийик болуп кетсе, 8 чыгаруу линиялары өчүрүлгөндүктөн, OEди калкып кетпей, жерге байлап коюуңуз керек болот. LE пин бийик болгондо, чыгуучу пиндер кириштер менен бирдей. LE пинди төмөн түшүрүү, чыгууларды, башкача айтканда, эгер кирүү казыктары өзгөрсө, чыгуулар ошол бойдон калат.

Мен түшүнүү үчүн программаны мүмкүн болушунча жөнөкөй сактоого аракет кылдым.

Убакытты кечиктирүү менен тажрыйба жүргүзүү сизге 6502 эмне кылып жатканын так аткарууга мүмкүндүк берет.

Төмөндө 6502 Assemblerдеги эки программа (экөө тең $ 1000 дарегинде иштейт):

программа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

Программада2 азыр $ 8100 физикалык дареги бар, ал жерде 74HC373 дарек автобусунда жайгашкан.

б.

Ошентип, 6502 8100 долларга (STA $ 8100) жазганда, 6502 R/W төмөн жана 6502 маалымат автобусундагы маалыматтар 373 LE төмөндөгөндө жабылат. 74HC00 NAND дарбазасы болгондуктан, сигналдар тескери бурулат.

Жогорудагы экранда экинчи жазуу 3кө көбөйгөн (ADC#$ 03) - 7F доллардан 82 долларга чейин.

Чындыгында, 373 так жайгашкан жери үчүн дарек автобусунун 2ден ашык линиясы колдонулат. Бул мүмкүн болгон 65536 ичинен жалгыз физикалык дарек болгондуктан, ал дарек автобусунун кандайча иштээрин көрсөтөт. Сиз башка дарек казыктары менен эксперимент жүргүзүп, башка жерге койсоңуз болот. Албетте, СТА операнддарын жаңы жерге өзгөртүү керек болот. мис. Эгерде сиз A15 жана A9 дарек линияларын колдонгон болсоңуз, анда дарек $ 8200 болмок (32768 + 512).

7 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

Мен 6502ди иштетүү канчалык оңой экенин көрсөтүүгө аракет кылдым.

Мен бул жаатта адис эмесмин, андыктан конструктивдүү комментарийлерди же маалыматты кабыл алам.

Сиз муну андан ары өнүктүрүп кетиңиз жана мен эмне кылганыңызга кызыкдар болом.

Мен долбоорго EEPROM, SRAM жана 6522 кошууну, ошондой эле келечекте аны тилке тактасына кошууну көздөп жатам.

Сунушталууда: