فهرست مطالب:

حداقل کامپیوتر 6502 (با Arduino MEGA) قسمت 1: 7 مرحله
حداقل کامپیوتر 6502 (با Arduino MEGA) قسمت 1: 7 مرحله

تصویری: حداقل کامپیوتر 6502 (با Arduino MEGA) قسمت 1: 7 مرحله

تصویری: حداقل کامپیوتر 6502 (با Arduino MEGA) قسمت 1: 7 مرحله
تصویری: CPU کار می کند 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 است که توسط مرکز طراحی وسترن ساخته شده است و ده برابر کمتر از نسخه اصلی قدرت مصرف می کند. این ویژگی خاص است زیرا نیازی نیست مانند تراشه اصلی با فرکانس 1 مگاهرتز کار کند. می تواند بسیار کندتر اجرا شود یا برای تک مرحله ای در برنامه استفاده شود و حتی تا 14 مگاهرتز افزایش یابد. Data Sheet برای تراشه قابلیت های آن را توضیح می دهد. سایر تراشه های 6502 این قابلیت را ندارند و به این ترتیب کار نمی کنند. تراشه ها در حال حاضر در Ebay و سایر منابع موجود است.

تدارکات

تمام قطعات مورد استفاده در حال حاضر در Ebay ، AliExpress و دیگران موجود است.

مرحله 1: مفهوم

من از Ben Eater الهام گرفتم که مجموعه ای از فیلم ها را در یوتیوب در مورد 6502 و بسیاری از جنبه های دیگر ساخت کامپیوتر و مدار تولید کرده است. این برنامه در اصل توسط او نوشته شده است و من این و برخی از طرح های او را تغییر داده ام تا این دستورالعمل را ارائه دهم. یکی دیگر از افرادی که از من الهام گرفت اندرو جیکوبز بود که بخشی در GitHub دارد که در آن از میکرو PIC برای کنترل 6502 خود استفاده می کند.

مانند بن ، من از Arduino MEGA برای نظارت بر 6502 استفاده می کنم. من همچنین از MEGA برای ارائه سیگنال ساعت برخلاف بن استفاده می کنم. در حال حاضر من از هیچ EEPROM یا RAM استفاده نمی کنم.

مرحله 2: الزامات

الزامات
الزامات

برای ساخت این "رایانه" لیستی از موارد به شرح زیر است:

1 عدد آردوینو MEGA

1 x مرکز طراحی غربی W65C02S6TPG-14

1 x 74HC00N IC (چهار ورودی NAND دو ورودی) یا مشابه آن

1 x 74HC373N IC (چفت شفاف نوع Octal D) یا مشابه آن

2 تخته نان سوراخ دار 8 x 830 (1 عدد در یک خرج کردن)

انواع مختلف دوپونت - نر و سیمهای اتصال

2 عدد LED (من از رنگ آبی 5 میلی متری استفاده کردم زیرا می توانید بدون مقاومت از آن دور شوید)

سوئیچ 1 x 12 میلی متری لمسی لحظه ای PCB نصب SPST یا مشابه آن

مقاومت 1 x 1K

2 خازن سرامیکی 0.1 F UF

1 x 8 Way Water Light Marquee LED قرمز 5 میلی متری (مانند بالا) یا 8 LED و مقاومت

توجه: در صورت دریافت کیت بدون جوش ، می توانید LED ها را اشتباه وارد کنید تا کاتد معمولی باشند. من یک سرب مگس (به جای پین) را به آن وصل می کنم تا بتواند به راحتی در جاهای دیگر متصل شود. VCC اکنون Ground می شود. البته می توانید LED ها را بچرخانید (روی یک قطعه مونتاژ شده) و دوباره آنها را لحیم کنید ، اما این مقدار زیادی اشتباه است! کیت ها در حال حاضر در 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) را در MEGA به 5 ولت وصل کنید.

یک خازن 0.1uF متصل از پایه 8 به Gnd تخته نان ممکن است در اینجا مفید باشد اما لازم نیست.

پین 21 (VSS) را به Gnd در MEGA وصل کنید.

پین های 2 ، 4 ، 6 ، 36 و 38 را می توان به 5 ولت وصل کرد

پین 37 (ساعت) را به پین 2 و پین 7 MEGA وصل کنید.

پین 34 (RWB) را به پین 3 MEGA وصل کنید.

پین 40 (بازنشانی) را مانند نمودار بالا وصل کنید.

مرحله 4: آزمایش مدار

آزمایش مدار
آزمایش مدار

در این مرحله 6502 کار می کند و از برنامه 1 می توان استفاده کرد. اگر از خیمه 8 راهه (مانند بالا) استفاده می کنید ، می توانید آن را مستقیماً در تخته نان قرار داده و سربی مگس به زمین متصل شود ، یا می توانید از 8 LED و مقاومت استفاده کنید. LEDS آنچه در گذرگاه داده است نشان می دهد.

در این مرحله بهتر است تاخیرهای حلقه () را روی 500 یا بیشتر تنظیم کنید تا آنچه را که اتفاق می افتد دنبال کنید.

شما باید خروجی مشابهی را در مانیتور سریال مانند خروجی بالا دریافت کنید. وقتی Reset فشرده می شود ، پردازنده 7 چرخه را پشت سر می گذارد و سپس شروع برنامه را در مکان های $ FFFC و $ FFFD جستجو می کند. از آنجا که هیچ آدرس فیزیکی برای 6502 برای خواندن وجود ندارد ، ما باید آنها را از MEGA تهیه کنیم.

در خروجی فوق ، 6502 $ FFFC و $ FFFD می خواند و 00 و 10 $ (کم بایت ، بایت بالا) دریافت می کند که شروع برنامه با $ 1000 است. سپس پردازنده شروع به اجرای برنامه در محل 1000 دلار (مانند بالا) می کند. در این حالت A9 و 55 دلار ، یعنی LDA#55 $ (85 را در باتری بارگذاری کنید) می خواند. مجدداً از آنجا که هیچ مکان حافظه فیزیکی وجود ندارد ، MEGA آنچه را که از گذرگاه داده خوانده می شود شبیه سازی می کند.

55 دلار (85) الگوی دودویی 01010101 و در صورت چرخش 1 بیت چپ ، 10101010 دلار آمریکا (170) نشان می دهد.

این برنامه نشان می دهد که پردازنده به درستی کار می کند اما به زودی کمی خسته کننده می شود ، بنابراین به قسمت بعدی بروید.

مرحله 5: مرحله بعد

گام بعدی
گام بعدی
گام بعدی
گام بعدی

"شمع اسپاگتی" در بالا احتمالاً چیزی شبیه به چیزی است که بعد از این مرحله خواهید داشت.

در مرحله بعد باید IC های 74HC373N و 74HC00N را به تخته نان اضافه کنید.

متأسفانه پین های 373 با گذرگاه داده مطابقت ندارند ، بنابراین باید با سیم متصل شوند.

5 ولت را به پین 20 وصل کنید.

Ground را به پین 10 وصل کنید.

پین 33 (D0) 6502 را به پین 3 (D0) 74HC373N وصل کنید

و همینطور با پین های D1 تا D7.

Q0 تا Q7 خروجی هستند و اینها نیاز به اتصال به دیوار LED یا LED ها و مقاومت های جداگانه دارند.

با 74HC00 فقط 2 دروازه آن مورد نیاز است

5 ولت را به پین 14 وصل کنید.

Ground را به پین 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 وصل کنید

شما می توانید یک LED آبی را به 1Y و زمین و همچنین 2Y را به زمین متصل کنید ، این نشان می دهد که گیت فعال است.

در نهایت خط را در رویه onClock از برنامه 1 به برنامه 2 تغییر دهید

setDataPins (برنامه 2 [افست]) ؛

مرحله 6: برنامه

برنامه
برنامه
برنامه
برنامه

برنامه 6502-Monitor شامل دو روال 6502 است که در بالا توضیح داده شد.

این برنامه هنوز در حال توسعه است و کمی مرتب نیست.

هنگام اجرای برنامه 2 ، تاخیر در حلقه () می تواند 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 دلار

یورو 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 03DD 81 81 4C 05 10

در برنامه 2 اکنون آدرس فیزیکی 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) - از 7FF به 82 $ رسیده است.

در حقیقت ، بیش از 2 خط اتوبوس آدرس برای مکان خاص 373 استفاده می شود. از آنجا که این آدرس تنها آدرس فیزیکی از 65536 ممکن است ، نحوه عملکرد گذرگاه آدرس را نشان می دهد. می توانید پین آدرس های مختلف را آزمایش کرده و آن را در مکان دیگری قرار دهید. البته ، شما باید عملگرهای STA را به مکان جدید تغییر دهید. به عنوان مثال، در صورت استفاده از خطوط آدرس A15 و A9 آدرس 8200 دلار (32768 + 512) خواهد بود.

مرحله 7: نتیجه گیری

نتیجه
نتیجه

من سعی کرده ام نشان دهم که راه اندازی 6502 چقدر آسان است.

من در این زمینه متخصص نیستم ، بنابراین از هرگونه نظر یا اطلاعات سازنده استقبال می کنم.

خوش آمدید که این موضوع را بیشتر توسعه دهید و من به کارهایی که انجام داده اید علاقه مند خواهم بود.

من قصد دارم یک EEPROM ، SRAM و 6522 به پروژه اضافه کنم و در آینده آن را روی تخته نوار قرار دهم.

توصیه شده: