Բովանդակություն:

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

Հետևելով իմ նախորդ Instructable- ին, այժմ ես 6502 -ը դրել եմ ժապավենի տախտակի վրա և ավելացրել եմ 6522 բազմակողմանի ինտերֆեյս ադապտեր (VIA): Կրկին, ես օգտագործում եմ 6522 -ի WDC տարբերակը, քանի որ այն կատարյալ համընկնում է նրանց 6502 -ի հետ: Ոչ միայն այս նոր չիպսերն են օգտագործում ավելի քիչ էներգիա, քան MOS- ի սկզբնական տարբերակները, այլև դրանք կարող են գործարկվել ավելի դանդաղ արագությամբ կամ նույնիսկ անցնել դրանց միջով: ծրագիր առանց խնդիրների:

Arduino ծրագիրը ի սկզբանե գրել է Բեն Էտերը (ով բազմաթիվ տեսանյութեր ունի YouTube- ում) և փոփոխվել է իմ կողմից `այս արդյունքին հասնելու համար:

Պարագաներ

1 x WDC W65C02 պրոցեսոր

1 x WDC W65C22 բազմակողմանի ինտերֆեյսի ադապտեր

1 x 74HC00N IC (Quad 2-input NAND gate) կամ նմանատիպ

1 x 10 սմ լայնություն (35 տող) Շերտի տախտակ

2 x 40 փին DIL վարդակներ

1 x 14 փին DIL վարդակից

PCB վերնագրի կապում 2.54 մմ

PCB վերնագրի վարդակներ 2.54 մմ

1 x 12 մմ Momentary Tactile Push Button Switch PCB Mounted SPST կամ նմանատիպ

1 x 1K դիմադրություն

1 x 3K3 դիմադրություն

2 x 0.1 uF կերամիկական կոնդենսատորներ

1 x 8 Way Water Light Marquee 5 մմ կարմիր LED

Կապերի համար տարբեր գույնի մետաղալարեր

8 արական - արական կապի լարեր

Քայլ 1. Շրջանակային տախտակ

Շրջանակային խորհուրդը
Շրջանակային խորհուրդը
Շրջանակային խորհուրդը
Շրջանակային խորհուրդը

Տախտակի տախտակը բավականին կոմպակտ է, իսկ ներքևի մասը միանում է անմիջապես Arduino MEGA- ին: Դրան հասնելու համար քորոցները հնարավորինս մղվում են պլաստմասե ամրակների մեջ `նախքան տախտակի ներքևի մասում սոսնձվելը: Ավելի երկար կապում կարող էին օգտագործվել դրա համար, բայց ստանդարտ կապումներն նշանակում են, որ տախտակն ամուր կանգնած է MEGA- ի վերևում:

Ես շարել եմ 6502 և 6522 IC- ները, որպեսզի նրանք MEGA- ին միանալու համար օգտագործեն շերտի տախտակի հետքերը: Կան նաև միակցիչներ 6502 -ի համար, որոնք թաքնված են IC- ի տակ: Տախտակը պատրաստելիս առաջին բանը, որ պետք է անել, այն 16 շերտերն էին կտրել, որոնք միանալու են Arduino- ի վարդակների կրկնակի շարքին: Արտաքին 2 -ը պետք չէ կտրել, քանի որ 5v- ն և Gnd- ը երկու կողմերում են: Հաջորդը կպցրեք ներքևի 18 կապում գտնվող 2 շարքերում, իսկ վերևի մասում `18 վարդակների 2 շարքերում:

Դրանից հետո DIL վարդակները կպցվեցին տեղում և հետքերը կտրվեցին նրանց միջև: Ես կարող էի կապ պահպանել ՝ տեղադրելով 74HC00- ի 14 -րդ քորոցը 5 վ -ի հետ նույն ուղու վրա: Ես հետքերը կտրեցի միայն այն ժամանակ, երբ համոզված էի, որ դրանք անհրաժեշտ են, քանի դեռ ես միացնում էի միացնող լարերը: Այնուամենայնիվ, ամեն ինչ միշտ չէ, որ գնում է ըստ պլանի, ես ի սկզբանե նախագծել եմ նախորդ հացի տախտակի ժապավենը ՝ օգտագործելով Arduino- ի 2, 3 և 7 կապերը, բայց դրանք չեն համընկնում շերտի տախտակի անցքերի հետ, ուստի ստիպված էի օգտագործել կապեր 18, 31 և 37. Այսպիսով, 31 -րդ և 37 -րդ էջերի իմ տախտակի հղումները: Դուք կարող եք մտածել, թե ինչու ես ժամացույցի համար չօգտագործված կապումներից մեկը (23, 24 և այլն) չօգտագործեցի, քանի որ դրանք չեն աջակցում ընդհատում է, ուստի ստիպված եղավ օգտագործել 18, 19, 20 կամ 21 քորոցները, որոնք դա անում են: Բարեբախտաբար, այս 4 կապում են գծի տախտակի անցքերը և ամեն ինչ կոմպակտ են պահում: Պին 18 -ը նաև ամենահեռավորն է մյուս բոլոր լարերից:

Կարող եք նաև նկատել, որ իմ ավարտված տախտակը նույնը չէ, ինչ իմ դիագրամը: Դա պայմանավորված է նրանով, որ ես հետևում էի ուրիշի գծապատկերին: Այսպիսով, 74HC00- ի հետ կապերը: Ես նաև ավելացրել եմ հզորության LED և լրացուցիչ 2 տող վարդակներ Gnd և 5v համար, ինչպես նաև մի քանի կոնդենսատոր:

Ես կարող էի միացնել տվյալների երկու վարդակները, բայց դա կնշանակեր, որ տախտակը հատող շատ ավելի մեծ լարեր: Ես ընտրեցի 8 կապի լարեր, որպեսզի դա անեմ որպես ժամանակավոր միջոց:

6522 նավահանգստի A և B- ում տեղադրված են եղել վարդակներ, որոնք հեշտությամբ կարող են տեղադրվել:

Այժմ շատ ավելի քիչ լարեր կան, քան հացի տախտակի տարբերակի վրա:

Քայլ 2. Programրագրավորման տեսություն

Programրագրավորման տեսություն
Programրագրավորման տեսություն

6522 -ն ունի երկու I/O նավահանգիստ, ինչպես նաև բազմաթիվ այլ հնարավորություններ, սակայն A և B նավահանգիստները հեշտությամբ հասանելի են: Նավահանգստում տվյալներ դուրս բերելու համար անհրաժեշտ է, որ տվյալների ուղղման գրանցամատյանը (DDR) համապատասխանաբար սահմանվի և տվյալներն ուղարկվեն բուն նավահանգիստ:

Վերը նշված կարգավորումներով 6522 -ը գտնվում է E000 $ -ում:

B նավահանգստում տվյալներ թողարկելու համար $ E002- ում DDR- ը սահմանվում է $ FF (255 - բոլոր ելքերը) և տվյալները ուղարկվում են $ E000:

A նավահանգստում տվյալներ թողարկելու համար $ E003- ով DDR- ը սահմանվում է $ FF (255 - բոլոր ելքերը), իսկ տվյալները ուղարկվում են $ E001:

Ստորև բերված ծածկագիրը բեռնում է $ FF 6502 A գրանցամատյանում և գրում այն DDR B- ին ՝ E002 դոլարով: Այնուհետև այն բեռնում է 55 դոլար և գրում այն ORB- ին: Կոդը պտտվում է (տալիս է $ AA) և գրվում ORB- ին: Theրագիրը հետ է թռչում 1005 դոլար և կրկնում անվերջ: ՈEՇԱԴՐՈԹՅՈՆ. DDR- ը միայն մեկ անգամ պետք է նախաստորագրվի:

Հասցե Hexdump Dissassembly

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

$ 55 -ում երկուական արժեքը 010101010 է, իսկ AA- ն `10101010, ինչը հանգեցնում է LED- ների փոխարինման 4 միացման, 4 անջատման:

Արագ և կեղտոտ շտկում

74HC00- ը (Quad 2 մուտքագրման NAND դարպաս) փոխարինեք 74HC08- ով (Quad 2 մուտքագրում AND դարպաս) և 6522 -ը այժմ գտնվում է $ 6000 -ի փոխարեն $ E000- ի փոխարեն: Սա այն տեղափոխում է վերին 32K- ից 6502 հասցեագրվող հիշողության ստորին 32K:

Քայլ 3. Arduino ծրագիրը և արդյունքը

Arduino ծրագիրը և արդյունքը
Arduino ծրագիրը և արդյունքը

Քանի որ 6502 -ը RAM կարդալու համար RAM չունի, Arduino- ն ապահովում է այն ընթերցելու ծրագիրը: Երբ ժամացույցի զարկերակը հայտնաբերվում է 18 -րդ կապում, Arduino- ն ծրագրի տվյալները տեղադրում է տվյալների ավտոբուսի վրա (Arduino կապում է 39, 41, 43, 45, 47, 49, 51 և 53): 6502 -ը ստեղծում է իր հասցեները, որոնք միայն Arduino- ի կողմից վերահսկվում են 22 -ից 52. զույգ համարներով: Arduino- ն նաև ապահովում է 37 -ի պտույտի ժամացույցի զարկերակը: 6502 -ի R/W տողը վերահսկվում է 31 -րդ կապում:

Քանի որ Arduino- ն տրամադրում է տվյալները, մինչ այժմ անհնար է եղել 6502 -ը VIA- ից մուտքագրել տվյալները (եթե ավելի լավ չգիտեք):

Arduino ծրագիրը ստորև է, իսկ սերիական մոնիտորից նմուշը ՝ վերևում:

Քայլ 4: Եզրակացություն

Կրկին փորձեցի ցույց տալ, թե ինչպես ստեղծել նվազագույն «6502 համակարգիչ»:

Այս փուլում 6502 -ը դեռ ապավինում է Arduino- ին `այն ապահովելու համար ծրագրով և ժամացույցի զարկերակով, որպեսզի այն գործի:

Դա մի քայլ առաջ է, քան այն ժամանակ, երբ այն տեղադրեցի հացի տախտակի վրա:

Այս անգամ ես չեմ օգտագործել 74HC373- ը, այլ ավելի բարդ 6522 -ը `տվյալների ելքերը փակելու համար: Նաև 6522 -ն ունի երկու մուտք/ելք:

Ես մտադիր եմ այս նախագիծը հետագայում տանել ՝ տեղադրելով որոշ SRAM կամ EEPROM:

Խորհուրդ ենք տալիս: