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

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 -ին և նախագծվեց փոքր թիմի կողմից ՝ Chuck Peddle- ի գլխավորությամբ, MOS տեխնոլոգիայի համար: Այն ժամանակ այն օգտագործվում էր տեսախցիկների և տնային համակարգիչների մեջ, ներառյալ Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 և 64. Այդ ժամանակ այն շուկայում ամենաէժաններից մեկն էր: Այն իսկապես երբեք չի անհետացել, և այժմ այն օգտագործվում է հոբբիիստների և մասնագետների կողմից բազմաթիվ ծրագրերի համար:

Իմ օգտագործած տարբերակը W65C02S6TPG-14- ն է, որը պատրաստված է Western Design Center- ի կողմից և օգտագործում է տասն անգամ ավելի քիչ էներգիա, քան օրիգինալը: Այն առանձնահատուկ է նրանով, որ այն չպետք է աշխատի 1 ՄՀց հաճախականությամբ, ինչպես սկզբնական չիպը: Այն կարող է շատ ավելի դանդաղ աշխատել կամ օգտագործվել ծրագրի մեկ քայլով և նույնիսկ մինչև 14 ՄՀց արագությամբ: Չիպի տվյալների թերթիկը բացատրում է դրա հնարավորությունները: Մնացած 6502 չիպերը չունեն այս հնարավորությունը և չեն աշխատի այս կերպ: Այս պահին չիպերը հասանելի են Ebay- ում, ինչպես նաև այլ աղբյուրներում:

Պարագաներ

Օգտագործված բոլոր մասերը ներկայումս հասանելի են Ebay- ում, AliExpress- ում և այլն:

Քայլ 1: Հայեցակարգ

Իմ ոգեշնչումը ստացա Բեն Էթերից, ով մի շարք տեսանյութեր է պատրաստել YouTube- ում 6502 -ի և համակարգիչներ և սխեմաներ կառուցելու բազմաթիվ այլ ասպեկտների մասին: Theրագիրը սկզբնապես գրել է նա, և ես փոփոխել եմ այս և նրա որոշ նախագծեր ՝ այս Ուսուցողականին հասնելու համար: Մեկ այլ անձ, ով ինձ ոգեշնչեց, Էնդրյու Jacեյքոբսն էր, ով ունի մի բաժին 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-input NAND gate) կամ նմանատիպ

1 x 74HC373N IC (Octal D- տիպի թափանցիկ սողնակ) կամ նմանատիպ

2 x 830 փոս հացի տախտակ (1 պտղունց)

Տարբեր Dupont արական - արական կապեր և կապի լարեր

2 x LED (ես օգտագործել եմ 5 մմ կապույտ, քանի որ կարող եք հեռանալ առանց դիմադրության)

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

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

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

1 x 8 Way Water Light Marquee 5 մմ կարմիր LED (ինչպես վերևում) կամ 8 LED և դիմադրիչներ

ՈEՇԱԴՐՈԹՅՈՆ. Եթե ձեռք եք բերում չպահված հանդերձանքը, կարող եք LED- ները սխալ կերպով տեղադրել այնպես, որ դրանք սովորական կաթոդ լինեն: Ես ամրացնում եմ ճանճի կապարը (քորոցի փոխարեն), որպեսզի այն հեշտությամբ միանա այլուր: VCC- ն այժմ դառնում է Ground: Դուք, իհարկե, կարող եք շրջել LED- ները (հավաքված իրի վրա) և նորից զոդել դրանք, բայց սա շատ սխալ է: Կոմպլեկտները ներկայումս հասանելի են 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 կապ:

Միացրեք կապը 8 (VDD) 5 վ -ին MEGA- ով:

Հացի տախտակի 8 -ից Gnd- ին միացված 0.1uF կոնդենսատորը կարող է այստեղ օգտակար լինել, բայց ոչ անհրաժեշտ:

Միացրեք կապը 21 (VSS) Gnd- ին MEGA- ում:

2, 4, 6, 36 և 38 կապում կարելի է կապել 5 վ -ի հետ

Միացրեք 37 կապը (ockամացույց) MEGA- ի 2 -րդ և 7 -րդ կապում:

Միացրեք 34 -րդ կապը (RWB) MEGA- ի 3 -րդ կապին:

Միացրեք քորոց 40 -ը (Վերագործարկեք) ինչպես վերևի դիագրամում:

Քայլ 4: Շղթայի փորձարկում

Շղթայի փորձարկում
Շղթայի փորձարկում

Այս փուլում 6502 -ը կաշխատի, և ծրագիրը 1 -ը կարող է օգտագործվել: Եթե դուք օգտագործում եք 8 ճանապարհի խարիսխ (ինչպես վերևում), այն կարող է ուղղակիորեն տեղադրվել տախտակի մեջ, իսկ ճանճը միացված է գետնին, կամ կարող եք օգտագործել 8 LED և դիմադրիչներ: LEDS- ը ցույց կտա, թե ինչ կա տվյալների ավտոբուսում:

Այս փուլում նույնպես լավ կլինի, որ Loop- ի () ձգձգումները սահմանվեն 500 կամ ավելի, հետևել այն, ինչ տեղի է ունենում:

Սերիական մոնիտորի վրա դուք պետք է ստանաք նման ելք, ինչպես վերը նշվածը: Երբ Reset- ը սեղմվում է, պրոցեսորը անցնում է 7 ցիկլ, այնուհետև ծրագրի սկիզբը փնտրում է $ FFFC և $ FFFD վայրերում: Քանի որ 6502 -ի համար կարդալու ֆիզիկական հասցեներ չկան, մենք պետք է դրանք տրամադրենք MEGA- ից:

Վերոնշյալ թողարկումում 6502 -ը կարդում է $ FFFC և $ FFFD և ստանում $ 00 և $ 10 (ցածր բայթ, բարձր բայթ), որը ծրագրի սկիզբն է $ 1000: Այնուհետև պրոցեսորը սկսում է ծրագրի իրականացումը $ 1000 վայրում (ինչպես վերևում): Այս դեպքում այն կարդում է $ A9 և $ 55, այսինքն ՝ LDA#55 $ (բեռը 85 կուտակիչում): Կրկին, քանի որ բացակայում է ֆիզիկական հիշողության վայրը, MEGA- ն մոդելավորում է տվյալների ավտոբուսից կարդացածը:

55 դոլար (85) տալիս է 01010101 երկուական օրինաչափությունը, իսկ 1 ձախ ձախ պտտելիս տալիս է AA (170) 10101010 դոլար:

Րագիրը ցույց է տալիս, որ պրոցեսորը ճիշտ է աշխատում, բայց շուտով մի փոքր ձանձրացնում է, այնպես որ հաջորդ հատվածին:

Քայլ 5: Հաջորդ քայլը

Հաջորդ քայլը
Հաջորդ քայլը
Հաջորդ քայլը
Հաջորդ քայլը

Վերևում գտնվող «սպագետտի կույտը» հավանաբար նման մի բան է, ինչ դուք կունենաք այս փուլից հետո:

Հաջորդը, դուք պետք է ավելացնեք 74HC373N և 74HC00N IC- ները սեղանի վրա:

Unfortunatelyավոք, 373 -ի կապակցումները չեն համընկնում տվյալների ավտոբուսի հետ, ուստի պետք է կապվել լարերով:

5v- ը միացրեք 20 կապին:

Միացրեք Ground- ը 10 -րդ կապին:

6502 -ի 33 -րդ (D0) կապը միացրեք 74HC373N- ի 3 -րդ (D0) -ին

և D1- ից D7 կապում:

Q0- ից Q7- ը ելքեր են, և դրանք կպահանջվեն միանալ LED լուսարձակին կամ առանձին LED- ներին և դիմադրողներին:

74HC00- ի հետ անհրաժեշտ է միայն նրա դարպասներից 2 -ը

5v- ը միացրեք 14 -ի կապակցիչին:

Միացրեք Ground- ը 7 -րդ կապին:

6502 -ի 17 (A8) կապը միացրեք 74HC00- ի 1 (1A) կապին

6502 -ի 25 (A15) կապը միացրեք 74HC00- ի 2 (1B) կապակցին

6502- ի 34 (R/W) կապը միացրեք 74HC00- ի 74HC00- ի 5 (2B) կապին

74HC00- ի 3 -րդ (1Y) կապը միացրեք 74HC00- ի 4 (2A) -ին

74HC00- ի 6 -րդ (2Y) կապը միացրեք 74HC373N- ի 11 -ի (LE)

Միացրեք 74HC373N- ի 11 -րդ կապը (LE) 74HC373N- ի 1 -ին (OE) -ին

Դուք կարող եք կապույտ LED- ն միացնել 1Y- ին և գետնին, ինչպես նաև 2Y- ին գետնին, դա ցույց կտա, թե երբ է դարպասը ակտիվ:

Վերջապես onClock ընթացակարգում փոխեք գիծը program1- ից program2

setDataPins (ծրագիր 2 [օֆսեթ]);

Քայլ 6: րագիրը

Րագիրը
Րագիրը
Րագիրը
Րագիրը

6502-Monitor ծրագիրը պարունակում է վերը նկարագրված երկու 6502 ռեժիմ:

Stillրագիրը դեռ մշակման փուլում է և մի փոքր անսարք է:

Program2- ը գործարկելիս () օղակի () ուշացումները կարող են լինել 50 կամ ավելի փոքր և նույնիսկ ընդհանրապես հեռացվել: Serial.print () տողերը մեկնաբանելը նաև 6502 -ին ավելի արագ է դարձնում: 373 -ի 1 (OE) կապը (11) (LE) կապից անջատելը տարբեր արդյունքներ է տալիս: NAND դարպասներից 373 -ի 1 -ին և 11 -րդ կապը անջատելը հնարավորություն է տալիս տեսնել, թե ինչ կա տվյալների երթուղու վրա ամեն ժամացույցի ցիկլում:

Հնարավոր է, անհրաժեշտ լինի OE- ն կապել գետնին, այլ ոչ թե թողնել այն լողացող, քանի որ 8 ելքային գծերն անջատված են, եթե այս կապիչը բարձր է: Երբ LE քորոցը բարձր է, ելքային կապերը նույնն են, ինչ մուտքերը: LE քորոցը ցածր ամրացնելով ելքերը, այսինքն ՝ եթե մուտքային կապերը փոխվեն, ելքերը մնում են նույնը:

Ես փորձել եմ հնարավորինս պարզ պահել ծրագիրը, որպեսզի այն ավելի հեշտ լինի հասկանալ:

Imentամկետների հետաձգման փորձերը հնարավորություն են տալիս հետևել այն, ինչ անում է 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- ը գտնվում է հասցեի ավտոբուսում:

այսինքն ՝ 6502 -ի A15- ը 32768 է (8000 դոլար), իսկ A8- ը ՝ 256 (0100 դոլար) = 33024 (8100 դոլար):

Այսպիսով, երբ 6502 -ը գրում է 8100 $ (STA 8100 դոլար), 6502 -ի R/W- ն ցածր է, և 6502 տվյալների ավտոբուսի տվյալները փակվում են, երբ 373 LE- ն ցածր է դառնում: 74HC00 NAND դարպասի պատճառով ազդանշանները հակադարձվում են:

Վերոնշյալ էկրանի տպագրության վրա երկրորդ գրառումն ավելացել է 3 -ով (ADC#$ 03) - $ 7F- ից հասել է $ 82 -ի:

Իրականում, 373 -ի հատուկ գտնվելու վայրի համար օգտագործվելու է հասցեի ավտոբուսի ավելի քան 2 տող: Քանի որ սա հնարավոր 65536 -ից միակ ֆիզիկական հասցեն է, այն ցույց է տալիս, թե ինչպես է աշխատում հասցեի ավտոբուսը: Դուք կարող եք փորձարկել տարբեր հասցեների կապում և տեղադրել այն այլ վայրում: Իհարկե, ձեզ հարկավոր կլինի STA օպերանդները փոխել նոր վայրում: օրինակ Եթե օգտագործեիք հասցեների A15 և A9 տողերը, հասցեն կլիներ $ 8200 (32768 + 512):

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

Եզրակացություն
Եզրակացություն

Ես փորձել եմ ցույց տալ, թե որքան հեշտ է 6502 -ը գործարկել:

Ես այս ոլորտի փորձագետ չեմ, ուստի կողջունեմ ցանկացած կառուցողական մեկնաբանություն կամ տեղեկատվություն:

Դուք ողջունում եք, որ դա հետագայում զարգացնեք, և ինձ կհետաքրքրի, թե ինչ եք արել:

Ես մտադիր եմ նախագծին ավելացնել EEPROM, SRAM և 6522, ինչպես նաև հետագայում դրանք դնել շերտերի վրա:

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