Мазмуну:

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

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

Video: 6502 & 6522 Минималдуу Компьютер (Arduino MEGA менен) 2 -бөлүк: 4 кадам
Video: 6502 CPU: 6522 VIA output to LEDs 2024, Ноябрь
Anonim
6502 & 6522 Минималдуу Компьютер (Arduino MEGA менен) 2 -бөлүк
6502 & 6522 Минималдуу Компьютер (Arduino MEGA менен) 2 -бөлүк

Мурунку көрсөтмөмдөн кийин, мен азыр 6502ди тилке тактасына коюп, 6522 ар тараптуу интерфейс адаптерин (VIA) коштум. Дагы, мен 6522нин WDC версиясын колдонуп жатам, анткени бул алардын 6502 үчүн эң сонун дал келет. Бул жаңы чиптер MOSтун баштапкы версияларына караганда азыраак кубаттуулукта колдонушат, бирок аларды жайыраак ылдамдыкта иштетсе болот, атүгүл басып өтсө болот. эч кандай көйгөйсүз программа.

Arduino программасы башында Ben Eater (YouTubeда көптөгөн видеолору бар) тарабынан жазылган жана бул жыйынтыкка жетүү үчүн мен тарабынан өзгөртүлгөн.

Жабдуулар

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

1 x WDC W65C22 ар тараптуу интерфейс адаптери

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

Туурасы 1 х 10см (35 сап) Тактай

2 x 40 пин DIL розеткасы

1 x 14 пин DIL розеткасы

PCB Header Pins 2.54mm

PCB Header Sockets 2.54mm

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

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

1 x 3K3 каршылыгы

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

1 x 8 Way Water Light Marquee 5мм кызыл LED

Байланыш үчүн ар кандай түстүү зым

8 эркек - эркек шилтеме зымдары

1 -кадам: Circuit Board

Circuit Board
Circuit Board
Circuit Board
Circuit Board

Электрондук такта абдан тыгыз жана асты Arduino MEGAга туташат. Буга жетүү үчүн, казыктар пластинка кармагычтарына мүмкүн болушунча түртүлүп, тактанын астына ширетилет. Бул үчүн узун казыктарды колдонсо болмок, бирок стандарттуу казыктар такта MEGAнын үстүндө бекем турганын билдирет.

Мен 6502 жана 6522 IC'лерди тизип койдум, алар MEGAга туташуу үчүн тилке тактасынын тректерин колдонушат. IC астында жашырылган 6502 үчүн кээ бир байланыштар да бар. Такта жасоодо биринчи кезекте Ардуинонун кош катар розеткаларына туташтыра турган 16 тилкени кесүү керек болчу. 5v жана Gnd эки тарапта болгондуктан сырткы 2ди кесүүнүн кажети жок. Кийинки астынкы жагында 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 менен байланыштар. Мен ошондой эле күч LEDын жана Gnd жана 5v үчүн кошумча 2 катар розеткаларды жана дагы бир нече конденсаторлорду коштум.

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

6522 А жана В портторунда LED маркалары оңой киргизиле тургандай кылып, тректерине ширетилген розеткалар болгон.

Азыр нан тактасынын версиясына караганда азыраак зымдар бар.

2 -кадам: Программалоо теориясы

Программалоо теориясы
Программалоо теориясы

6522де эки I/O порту жана башка көптөгөн мүмкүнчүлүктөр бар, бирок А жана В портуна оңой жетүүгө болот. Порт боюнча маалыматтарды чыгаруу үчүн, маалыматтардын багытынын реестрин (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 Dissassembly

$ 1000 a9 ff LDA #$ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA #$ $ 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 $ турат. Бул аны жогорку 32Kдан 6502нин даректүү эс тутумунун төмөнкү 32Kсына жылдырат.

3 -кадам: Arduino программасы жана чыгаруу

Arduino программасы жана чыгаруу
Arduino программасы жана чыгаруу

6502де окуй турган RAM жок болгондуктан, Arduino аны окуу үчүн программаны камсыздап жатат. 18 -саатта импульс табылганда, Arduino программанын маалыматын маалымат автобусуна коет (Arduino пиндери 39, 41, 43, 45, 47, 49, 51 жана 53). 6502 22ден 52ге чейин жуп сандагы казыктарда Arduino тарабынан көзөмөлдөнүүчү өзүнүн даректерин түзөт. Arduino 37 -пиндеги сааттын импульсун да камсыздап турат.

Arduino маалыматтарды берип жаткандыктан, азырынча 6502ди VIAдан маалыматтарды киргизүү мүмкүн болгон жок (эгер сиз жакшы билбесеңиз).

Arduino программасы төмөндө жана Serial Monitorдон алынган үлгү жогору.

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

Дагы мен минималдуу "6502 компьютерин" кантип орнотууну көрсөтүүгө аракет кылдым.

Бул этапта 6502 дагы эле Arduinoго таянып, аны иштетүү үчүн программа жана саат импульсун берет.

Бул мен аны нан тактасына орноткондон бир кадам алдыга жылат.

Мен бул жолу 74HC373 колдонгон жокмун, бирок татаалыраак 6522 маалыматтын чыгышы үчүн. Ошондой эле 6522де эки I/O порту бар.

Мен бул долбоорду SRAM же EEPROM орнотуу менен улантууну көздөп жатам.

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