فهرست مطالب:

KIM Uno - شبیه ساز ریزپردازنده 5 یورویی 5 یورویی: 13 مرحله (همراه با تصاویر)
KIM Uno - شبیه ساز ریزپردازنده 5 یورویی 5 یورویی: 13 مرحله (همراه با تصاویر)

تصویری: KIM Uno - شبیه ساز ریزپردازنده 5 یورویی 5 یورویی: 13 مرحله (همراه با تصاویر)

تصویری: KIM Uno - شبیه ساز ریزپردازنده 5 یورویی 5 یورویی: 13 مرحله (همراه با تصاویر)
تصویری: بهترین بهترینها؟؟؟. گیرنده رادیویی TECSUN PL680 بررسی کامل!!! #tecsun 2024, ژوئن
Anonim
Image
Image
KIM Uno - شبیه ساز ریزپردازنده 5 یورویی Dev
KIM Uno - شبیه ساز ریزپردازنده 5 یورویی Dev
KIM Uno - شبیه ساز ریزپردازنده 5 یورویی Dev
KIM Uno - شبیه ساز ریزپردازنده 5 یورویی Dev

KIM Uno یک کیت dev قابل حمل ، تعریف شده برای نرم افزار برای ریزپردازنده های (یکپارچهسازی با سیستمعامل) است. اما اجازه دهید ایده آن را با بازگشت به گذشته معرفی کنم:

در اواخر سال 2018 به ذهنم رسید که می خواهم یک کیت کوچک قابل حمل ریزپردازنده بسازم ، درست مانند KIM-1 معروف از MOS Technology، Inc. و طراحی شده توسط Chuck Peddle که در ایجاد CPU 6502 نیز نقش داشت.

اما ساختن یک کیت توسعه دهنده "استخوان برهنه" با اجزای منطقی گسسته گزینه ای نبود زیرا به منبع تغذیه بزرگ نیاز داشت (زیرا این دستگاه های قدیمی تمایل به جریان جدی دارند) و همچنین توسعه آن بسیار زمان بر است. و من الان آن را می خواهم!

بنابراین ، من KIM Uno را به عنوان یک دستگاه قابل حمل طراحی کردم که در یک دست جا می گیرد و از دو باتری CR2032 تغذیه می کند. از میکروکنترلر ATMega328p ("Arduino") با فرکانس 8 مگاهرتز برای شبیه سازی (یا شبیه سازی) CPU مورد نظر استفاده می کند. این معماری همچنین اطمینان حاصل می کند که CPU های شبیه سازی شده با هر چیزی که در حافظه فلش میکروکنترلر قرار دارد قابل تعویض هستند. بنابراین این دستگاه چند منظوره است.

به طور تصادفی بعداً یک سخنرانی بسیار خوب - به نام The Ultimate Apollo Guidance Computer Talk (34C3) - را در YouTube مشاهده کردم که در آن "One Instruction Set Computers" یا OISCs ذکر شده است. من در مورد آنها اطلاعی نداشتم و این را به عنوان کاندیدای مناسب برای پیاده سازی آن یافتم.

KIM Uno یک CPU را تنها با یک دستورالعمل تقلید می کند: subleq - اگر کمتر یا مساوی صفر باشد ، تفریق و انشعاب می شود.

اگر از طریق این دستورالعمل همراه من باشید ، می توانید در کوتاه ترین زمان KIM Uno خود را بسازید. و بهترین بخش - علاوه بر این که می توانید آن را مطابق سلیقه خود تغییر دهید - این است که هزینه ساخت آن فقط 4 ، 75 یورو است (تا پایان سال 2018).

یک نکته: یک مخزن Git وجود دارد که شامل تمام فایل های ارائه شده توسط مراحل مختلف این دستورالعمل است. در صورتی که بخواهید برخی از منابع را اصلاح کرده و آنها را با ما به اشتراک بگذارید ، می توانید روابط عمومی انجام دهید. اما شما همچنین می توانید همه فایل ها را یکجا در آنجا بارگیری کنید. به سادگی به https://github.com/maxstrauch/kim-uno. با تشکر!

یک پروژه بسیار جالب دیگر وجود دارد ، به نام همان (KIM Uno) ، که ماکت واقعی 6502 KIM Uno را انجام می دهد. اینجا را بررسی کنید. سازنده حتی کیت را می فروشد. بنابراین اگر به 6502 علاقه دارید و این پروژه را دوست دارید ، باید یک نگاهی به آنجا بیندازید!

مرحله 1: تامین PCB

تامین PCB
تامین PCB
تامین PCB
تامین PCB

همانطور که می بینید ، من از این فرصت برای طراحی PCB استفاده کردم و اجازه دادم که به صورت حرفه ای ساخته شود. از آنجا که ساختن آن به خارج و ارسال آن به شما زمان زیادی می برد (بسته به جایی که در جهان هستید ؛-)) ، سفارش آن اولین قدم است. سپس می توانیم مراحل دیگر را تا زمان ساخت PCB و ارسال به شما ادامه دهیم.

من PCB های خود را در چین در PCBWay فقط با 5 دلار سفارش دادم. من برای ارائه PCBWay به عنوان تولید کننده PCO خود هیچ سودی نمی برم ، فقط این که برای من خوب کار کرد و ممکن است برای شما نیز خوب کار کند. اما می توانید آنها را در هر مکان دیگری مانند JLCPCB ، OSH Park یا هر شرکت PCB محلی سفارش دهید.

اما اگر مایل به سفارش آنها در PCBWay هستید می توانید فایل ZIP پیوست "kim-uno-rev1_2018-12-12_gerbers.zip" را بارگیری کرده و مستقیماً بدون تغییر در PCBWay بارگذاری کنید. این فایل اصلی است که برای سفارش PCB هایی که می توانید در تصاویر مشاهده کنید ، استفاده می شود.

اگر آنها را از سازنده دیگری سفارش می دهید ، ممکن است لازم باشد آنها را از منابع اصلی KiCad صادر کنید ، زیرا من آنها را با مشخصات PCBWay تهیه کرده ام که می توانید در اینجا پیدا کنید. برای منابع اصلی KiCad ، "kim-uno-kicad-sources.zip" را بارگیری کرده و آن را استخراج کنید.

اما حتی یک راه دوم نیز وجود دارد: اگر نمی خواهید PCB را سفارش دهید ، می توانید نسخه خود را با استفاده از ورق ورق یا حتی تخته نان بسازید.

به هر حال: از آنجا که PCB ها در راه هستند ، می توانیم روی قسمت های دیگر تمرکز کنیم! بیا دنبالم

مرحله 2: تامین منابع مورد نیاز

منبع یابی قطعات
منبع یابی قطعات
منبع یابی قطعات
منبع یابی قطعات
منبع یابی قطعات
منبع یابی قطعات

حالا باید قطعات را دریافت کنید. برای این کار شما یک تصویر کلی از همه اجزا و مقادیر مورد نیاز خود را ، که به این مرحله و همچنین BOM (صورتحساب مواد) متصل شده است ، پیدا خواهید کرد.

BOM شامل پیوندهایی به eBay است. اگرچه ممکن است هنگام خواندن این پیشنهادات بسته شوند ، اما می توانید از آن به عنوان نقطه شروع استفاده کنید. اجزای مورد استفاده تقریباً استاندارد هستند.

در ادامه تمام اجزای مورد نیاز را برای شما توضیح خواهم داد:

  • مقاومتهای 7x 1 kΩ برای نمایشگرهای هفت بخش. برای درخشندگی بیشتر می توانید مقدار (به عنوان مثال به 470 Ω) را کاهش دهید ، اما آن را بیش از حد کاهش ندهید ، در غیر این صورت LED ها می میرند یا باتری خیلی زود تخلیه می شود. متوجه شدم که این مقدار برای من کار می کند
  • 1x 10 kΩ به عنوان مقاومت کششی برای خط RESET میکروکنترلر
  • 1x 100nF خازن برای صاف کردن هر گونه افزایش ولتاژ (که نباید اتفاق بیفتد زیرا ما از باتری استفاده می کنیم ، درست است ، اما برای اندازه گیری خوب …)
  • 1 برابر ATMega328P در بسته DIP-28 (معمولاً ATMega328P-PU نامیده می شود)
  • 1 برابر PCB اصلی - مرحله قبل را ببینید ؛ یا سفارش داده شده یا توسط خودتان ساخته شده است
  • 2 عدد نگهدارنده باتری CR2032
  • سوئیچ 1x SPDT (تک قطبی ، دو پرتاب) که اساساً دارای سه مخاطب است و در هر دو حالت خود (روشن یا خاموش) دو مخاطب را متصل می کند
  • 20 برابر دکمه های لمسی برای صفحه کلید. برای استفاده از پشت مدار چاپی از دکمه های لمسی SMD (دکمه های استاندارد 6x6x6 میلی متر) استفاده کردم - همانطور که مشاهده می کنید لحیم کاری آنها بسیار آسان است.
  • اختیاری: هدر 1x6x پین برای اتصال برنامه نویس ، اما این اختیاری نیست همانطور که بعداً خواهید دید
  • صفحه نمایش 1x هفت قسمتی با 4 رقم و 1x صفحه نمایش هفت قسمتی با 2 رقم - صفحه فقط 0.36 اینچ (9 ، 14 میلی متر) عناصر را با سیم کشی آند معمولی می گیرد. هر دو مورد برای دستیابی به یک واحد کاری مهم هستند. اما همچنین این نوع نمایش هفت قسمتی بسیار رایج است

ضمیمه این مرحله می توانید فایل "component-datasheets.zip" را پیدا کنید که حاوی اطلاعات دقیق تری در مورد ابعاد و انواع اجزای مورد استفاده است. اما اکثر قطعات بسیار استاندارد هستند و می توان آنها را به راحتی با پول کمی تهیه کرد.

اکنون باید منتظر بمانید تا تمام اجزای آماده برای لحیم کاری آماده شوند. در این مدت شما می توانید تا انتها پرش کرده و در صورت تمایل کمی در مورد استفاده از KIM Uno بخوانید.

مرحله 3: نمای کلی ابزار لحیم کاری

نمای کلی ابزار لحیم کاری
نمای کلی ابزار لحیم کاری
نمای کلی ابزار لحیم کاری
نمای کلی ابزار لحیم کاری

برای لحیم کاری و ساخت KIM Uno به ابزارهای نشان داده شده در تصاویر نیاز دارید:

  • برش سیم (برای قطع انتهای سیم های قطعه)
  • انبردست تخت
  • یک جفت موچین
  • (مناسب) لحیم کاری که ضخیم نیست - من از لحیم 0.56 میلی متری استفاده می کنم
  • آهن لحیم کاری - شما نیازی به یک دستگاه لحیم کاری درجه یک ندارید (زیرا ما همچنین در اینجا علوم موشکی انجام نمی دهیم) - من مدتهاست از Ersa FineTip 260 استفاده می کنم و واقعاً خوب است
  • قلم شار: افزودن شار به اجزا و پدها لحیم کاری آنها را بسیار آسانتر می کند زیرا لحیم کاری سپس به خودی خود در محل مناسب "جریان" می یابد*
  • به صورت اختیاری: اسفنج (از پشم فلز) برای لحیم کاری شما

برای برنامه ریزی بعدی KIM Uno شما همچنین نیاز دارید:

  • رایانه ای با زنجیره ابزار AVR-GCC و avrdude برای بارگذاری سیستم عامل
  • ISP (برنامه نویس) - همانطور که در تصویر مشاهده می کنید من از Arduino Uno خود به عنوان ISP با طرح خاص استفاده می کنم - بنابراین نیازی به خرید سخت افزار فانتزی نیست

* برخی از راهنمایی های مورد نیاز انسان ؛-)

اماده ای؟ در مرحله بعدی ما قصد داریم مونتاژ KIM Uno را شروع کنیم.

مرحله 4: لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها

لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها
لحیم کاری شماره 1: افزودن مقاومت ها و خازن ها

شما همیشه باید از کوچکترین اجزا (از نظر ارتفاع اجزا) ابتدا تا بالاترین اجزاء در آخر کار کنید. بنابراین ، ما با افزودن مقاومتها و خم شدن روی پاها در پشت شروع می کنیم تا مقاومتها به راحتی لحیم شوند و در جای خود بمانند. سپس سیمهای بلند را قطع کنید.

همچنین ، در تصاویر نشان داده نشده است ، خازن کوچک 100 nF را به همین ترتیب اضافه کنید.

یک نکته: پاهای سیمی را در یک ظرف کوچک نگه دارید ، گاهی اوقات به کار می آیند.

مرحله 5: لحیم کاری شماره 2: مونتاژ صفحه کلید

لحیم کاری شماره 2: مونتاژ صفحه کلید
لحیم کاری شماره 2: مونتاژ صفحه کلید
لحیم کاری شماره 2: مونتاژ صفحه کلید
لحیم کاری شماره 2: مونتاژ صفحه کلید
لحیم کاری شماره 2: مونتاژ صفحه کلید
لحیم کاری شماره 2: مونتاژ صفحه کلید

مرحله بعدی این است که 20 سوئیچ لمسی SMD را لحیم کنید. از آنجا که این کار کمی مبهم است ، ما آن را اکنون انجام می دهیم ، هنگامی که PCB روی میز کار قرار می گیرد.

ما از بالا به پایین (یا از چپ به راست در صورتی که PCB مطابق عکس ها باشد) کار می کنیم و با ردیف اول شروع می کنیم: یکی از چهار پد را برای هر سوئیچ انتخاب کرده و آن را با قلم شار خیس کنید.

سپس با استفاده از یک موچین یک سوئیچ را بگیرید و آن را با دقت روی چهار پد قرار دهید. سپس فقط پای سوئیچ را که روی پدی است که انتخاب کرده اید و با شار آماده کرده اید ، لحیم کنید. برای این کار قبل از شروع باید مقداری لحیم کاری با آهن خود "بگیرید". با استفاده از این روش ، کل ردیف سوئیچ ها را تکمیل کنید ، فقط یک پا را لحیم کنید.

تصویر با فلش ها بزرگنمایی نحوه دقیق لحیم کاری را نشان می دهد.

بعد از اینکه کل ردیف را لحیم کردید (فقط یک پین) می توانید با گرم کردن پین و تنظیم مجدد سوئیچ تنظیمات کمی انجام دهید. اطمینان حاصل کنید که سوئیچ ها تا حد امکان تراز شده اند.

اگر از تراز بودن راضی هستید ، می توانید سایر پین ها را با قلم شار خیس کرده و سپس با لمس آن با لحیم کاری لحیم کاری کرده و با لمس آن نیز کمی لحیم کاری اضافه کنید. خواهید دید که لحیم مستقیماً روی پد مکیده می شود.

پس از لحیم کاری یک ردیف یا بیشتر ، متوجه خواهید شد که از آن استفاده می کنید و آنقدرها هم سخت نیست اما تکراری است. بنابراین بقیه را انجام دهید و در کوتاه ترین زمان با یک صفحه کلید تمام شده به پایان خواهید رسید.

مرحله 6: لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header

لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header
لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header
لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header
لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header
لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header
لحیم کاری شماره 3: نمایش Segment Segment ، Switch و Pin Header

اکنون می توانید با نگه داشتن انگشت خود و سر پین را با نگه داشتن آن روی PCB ، هدر سوئیچ و پین (اختیاری) را اضافه کنید ، به طوری که می توانید پین های دیگر را لحیم کرده و در نهایت پین نگهدارنده اولیه را لمس کنید.

مراقب باشید که خود را با آهن لحیم کاری داغ نسوزانید. اگر با این کار راحت نیستید ، می توانید از کمی نوار (به عنوان مثال نوار نقاش) برای نگه داشتن قطعه استفاده کنید. به این ترتیب هر دو دست شما برای حرکت آزاد هستند.

نمایشگرهای هفت قسمتی به همین ترتیب لحیم می شوند (تصویر را ببینید): آن را داخل می گذارید ، با دست یا نوار خود نگه می دارید و دو پین مخالف را لحیم می کنید تا در جای خود ثابت بماند در حالی که می توانید پین های دیگر را لحیم کنید.

اما مراقب باشید و صفحه هفت قسمت را در جهت درست (با نقاط اعشاری رو به صفحه کلید) قرار دهید. وگرنه مشکل داری…

مرحله 7: لحیم کاری شماره 4: لحیم کاری میکروکنترلر

لحیم کاری شماره 4: لحیم کاری میکروکنترلر
لحیم کاری شماره 4: لحیم کاری میکروکنترلر

اکنون که تمرینات زیادی را پشت سر گذاشته اید ، می توانید پیش بروید و میکروکنترلر را با شکاف در بالای (یا اولین پین) رو به سوی سوئیچ قرار دهید. با استفاده از پنس تخت می توانید پاهای میکروکنترلر را کمی با دقت خم کنید تا با سوراخ های PCB مطابقت داشته باشد.

از آنجا که دستگاه محکم است ، برای وارد کردن میکروکنترلر به نیروی کنترل شده ای نیاز دارید. مزیت آن این است که از بین نمی رود. این بدان معناست که می توانید وقت خود را گرفته و آن را از پشت لحیم کنید.

مرحله 8: لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)

لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)
لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)
لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)
لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)
لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)
لحیم کاری شماره 5: نگهدارنده های باتری را اضافه کنید (مرحله آخر)

در نهایت باید نگهدارنده های باتری را به پشت اضافه کنید. برای این کار به سادگی از قلم شار استفاده کرده و هر چهار پد را خیس کرده و سپس مقداری لحیم کاری روی آهن خود بکشید. نگهدارنده باتری را با دقت روی هر دو پد تراز کنید. در دو انتهای مخاطبین باید به همان میزان پد PCB قابل مشاهده باشد. پد PCB و پایه نگهدارنده باتری را با اتو لمس کنید. لحیم زیر پد و روی آن جریان می یابد و همانطور که در تصویر نشان داده شده است آن را در جای خود محکم می کند. اگر در این مورد مشکلی دارید ، می توانید شار بیشتری را با قلم اضافه کنید.

مرحله 9: فلش شبیه ساز

فلش شبیه ساز
فلش شبیه ساز
فلش شبیه ساز
فلش شبیه ساز
فلش شبیه ساز
فلش شبیه ساز

در بایگانی فشرده ضمیمه شده "kim-uno-firmware.zip" می توانید کد منبع شبیه ساز را به همراه "main.hex" که قبلاً کامپایل شده است پیدا کنید که می توانید مستقیماً در میکروکنترلر بارگذاری کنید.

قبل از اینکه بتوانید از آن واقعاً استفاده کنید ، باید بیت فیوز میکروکنترلر را طوری تنظیم کنید که از ساعت داخلی 8 مگاهرتز بدون تقسیم آن به نصف استفاده کند. با دستور زیر می توانید کار را انجام دهید:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m

اگر avrdude را نمی شناسید: این یک برنامه برای بارگذاری برنامه ها روی میکروکنترلر است. شما می توانید در اینجا بیشتر در مورد آن بیاموزید. در اصل شما آن را نصب می کنید و سپس آماده استفاده است. برای تنظیمات خود ممکن است نیاز باشد که آرگومان "-P" را به پورت سریال دیگری تغییر دهید. لطفاً روی رایانه خود بررسی کنید که کدام پورت سریال استفاده می شود (به عنوان مثال داخل Arduino IDE).

پس از این کار می توانید سیستم عامل را با این دستور روی میکروکنترلر فلش کنید:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U فلش: w: main.hex

دوباره: همان چیزی که در بالا برای "-P" صدق می کند.

از آنجا که من ISP (برنامه نویس درون سیستم) حرفه ای ندارم ، همیشه از Arduino UNO (تصویر را ببینید) و طرح ضمیمه شده ((arduino-isp.ino) ، از Randall Bohn) استفاده می کنم. من می دانم که نسخه جدیدتری وجود دارد ، اما با این نسخه در پنج سال گذشته هیچ مشکلی نداشتم ، بنابراین آن را نگه می دارم. فقط کار می کند. با استفاده از نظر در سرصفحه طرح ، pinout را در Arduino UNO دریافت می کنید و با استفاده از شماتیک KIM Uno (پیوست را ببینید) می توانید pinout سرصفحه ISP 1x6 را در KIM Uno دریافت کنید. پین مربع ، نزدیک به صفحه نمایش هفت بخش ، پین 1 (GND) است. پین های زیر (به ترتیب مناسب) هستند: RESET ، MOSI ، MISO ، SCK ، VCC. می توانید VCC را به 3V3 یا 5V متصل کنید.

اگر هدر پین 1x6 را اضافه نکرده اید ، می توانید از سیم های ورق استفاده کنید و آنها را در سوراخ های اتصال قرار داده و با انگشت خود زاویه دهید - همانطور که در تصویر نشان داده شده است. این به اندازه کافی تماس می گیرد تا سیستم عامل را فلش کرده و فیوزها را تنظیم کند. اما اگر تنظیمات دائمی تری را دوست دارید ، قطعاً باید هدرهای پین 1x6 را اضافه کنید.

من دو دستگاه دارم: یک نسخه تولیدی بدون سرصفحه های پین و یک نسخه توسعه دهنده با سربرگ های پین که آنها را متصل می کنم و بارها و بارها در حین توسعه از آن استفاده می کنم. این بسیار راحت تر است.

مرحله 10: تمام شد

تمام شده
تمام شده
تمام شده
تمام شده

اکنون کار شما به پایان رسیده است و می توانید برنامه های subleq خود را روی کاغذ بنویسید ، مونتاژ کرده و سپس آن را وارد حافظه کنید.

KIM Uno با محاسبه فیبوناچی از پیش برنامه ریزی شده همراه است که از محل حافظه 0x0a شروع می شود. به طور پیش فرض روی n = 6 تنظیم شده است ، بنابراین باید مقدار 8 را به همراه داشته باشد. برای شروع محاسبه ، "Go" را فشار دهید.

مرحله 11: تجزیه و تحلیل طراحی PCB

تجزیه و تحلیل طراحی PCB
تجزیه و تحلیل طراحی PCB
تجزیه و تحلیل طراحی PCB
تجزیه و تحلیل طراحی PCB

پس از اتمام این پروژه ، من چند نکته را پیدا کردم که قابل توجه است و باید در تجدید نظر جدید هیئت مدیره به آنها پرداخته شود:

  • صفحه ابریشمی ATMega328p دارای شکاف معمولی نیست که اولین پین در آن قرار دارد. رد پای DIP-28 حتی دارای پد مربع شکل نیست که اولین پین در آن قرار دارد. برای جلوگیری از سردرگمی ، قطعاً باید با یک صفحه ابریشم با جزئیات بیشتر بهبود یابد
  • هدر ISP فاقد برچسب اتصال روی صفحه ابریشم است. این امر تشخیص نحوه اتصال آن به ISP را دشوار می کند
  • برای جلوگیری از هرگونه سردرگمی ، هدر ISP را می توان به هدر 2x6 پین با طرح استاندارد پین تغییر داد

جدا از این نکات ، من بسیار خوشحالم که چطور شد و در اولین تلاش کار کرد.

مرحله 12: چگونه SUBLEQ را برنامه ریزی کنیم؟

Image
Image
چگونه SUBLEQ را برنامه ریزی کنیم؟
چگونه SUBLEQ را برنامه ریزی کنیم؟
چگونه SUBLEQ را برنامه ریزی کنیم؟
چگونه SUBLEQ را برنامه ریزی کنیم؟

همانطور که در ابتدا ذکر شد ، سیستم عامل فعلی KIM Uno یک کامپیوتر One Instruction Set Computer (OISC) را تقلید می کند و دستور subleq را برای انجام محاسبات ارائه می دهد.

دستور subleq مخفف تفریق و انشعاب است اگر کمتر یا مساوی صفر باشد. در شبه کد به شکل زیر است:

subleq A B C mem [B] = mem [B] - mem [A] ؛ if (mem [B] <= 0) goto C؛

از آنجا که KIM Uno یک ماشین 8 بیتی را تقلید می کند ، همه آرگومان های A ، B و C مقادیر 8 بیتی هستند و بنابراین می تواند یک حافظه اصلی 256 بایت را برطرف کند. بدیهی است که این امر را می توان با ایجاد مقادیر چند بایت A ، B و C گسترش داد. اما در حال حاضر اجازه دهید آن را ساده نگه داریم.

KIM Uno همچنین دارای "لوازم جانبی" است: صفحه نمایش و صفحه کلید. از معماری نگاشت شده حافظه برای ارتباط با آن وسایل جانبی استفاده می کند ، اگرچه نقشه حافظه بسیار ساده است:

  • 0x00 = ثبت Z (صفر) و باید صفر نگه داشته شود.
  • 0x01 - 0x06 = شش بایت که نشان دهنده مقدار هر بخش نمایش (از راست به چپ) است. مقدار 0xf - برای جزئیات بیشتر کد منبع (main.c) را ببینید.
  • 0x07 ، 0x08 ، 0x09 = سه بایت که هر بایت دو نمایشگر هفت قسمت (از راست به چپ) را نشان می دهد. این مکان های حافظه اجازه می دهد تا به سادگی یک نتیجه را بدون تقسیم نتیجه به دو نوک نمایش دهید تا در مکانهای حافظه تک رقمی 0x01 - 0x06 قرار گیرد.
  • 0x0a+ = یک برنامه با 0x0a شروع می شود. در حال حاضر کلید "Go" از 0x0a ثابت اجرا می شود.

با این اطلاعات می توان برنامه ای را در اسمبلر نوشت و دستورالعمل ها را وارد حافظه کرد و سپس آن را اجرا کرد. از آنجا که فقط یک دستورالعمل وجود دارد ، فقط آرگومان ها (A ، B و C) وارد می شوند. بنابراین پس از سه مکان حافظه ، آرگومان های دستورالعمل بعدی شروع می شوند و غیره.

ضمیمه این مرحله می توانید فایل "retracement.س" و همچنین تصویری از برنامه دست نویس را که نمونه ای از پیاده سازی فیبوناچی است ، بیابید. اما منتظر بمانید: از سه دستورالعمل استفاده می شود - به ویژه ADD ، MOV و HLT - که قابل استفاده نیستند. "معامله چیست؟ مگر شما نگفتید که فقط یک دستورالعمل وجود دارد ، subleq؟" شما می پرسید؟ بسیار آسان است: با subleq می توان به راحتی از این دستورالعمل ها تقلید کرد:

MOV a، b - کپی داده ها در محل a تا b می تواند شامل موارد زیر باشد:

  1. subleq b، b، 2 (دستورالعمل بعدی)
  2. subleq a، Z، 3 (دستورالعمل بعدی)
  3. subleq Z، b، 4 (دستورالعمل بعدی)
  4. subleq Z ، Z ، به عنوان مثال 5 (آموزش بعدی)

با استفاده از ویژگی تفریق subleq ، که mem - mem [a] را انجام می دهد و mem را با نتیجه بازنویسی می کند ، مقدار با استفاده از ثبات ثابتی کپی می شود. و "subleq Z، Z،…" صرفاً بدون در نظر گرفتن مقدار Z ، صفر را به 0 بازنشانی می کند.

ADD a، b - مقادیر a + b را اضافه کرده و مجموع موجود در b را ذخیره می کند:

  1. subleq a، Z، 2 (دستورالعمل بعدی)
  2. subleq Z، b، 3 (دستورالعمل بعدی)
  3. subleq Z ، Z ، به عنوان مثال 4 (آموزش بعدی)

این دستورالعمل به سادگی mem - (- mem [a]) که mem + mem [a] است را نیز با استفاده از ویژگی تفریق محاسبه می کند.

HLT - CPU را متوقف کرده و اجرا را خاتمه می دهد:

طبق تعریف شبیه ساز می داند که CPU می خواهد در صورت پرش به 0xff (یا -1 در صورت خوانده شدن) خاتمه یابد. بنابراین یک ساده

subleq Z ، Z ، -1

کار را انجام می دهد و به شبیه ساز نشان می دهد که باید به شبیه سازی پایان دهد.

با استفاده از این سه دستورالعمل ساده ، الگوریتم فیبوناچی قابل پیاده سازی است و به خوبی کار می کند. این به این دلیل است که OISC می تواند همه چیز را که یک کامپیوتر "واقعی" می تواند محاسبه کند تنها با subleq دستورالعمل محاسبه کند. اما مطمئناً بسیاری از مبادلات وجود دارد - مانند طول و سرعت کد. اما با این وجود این یک روش عالی برای یادگیری و آزمایش برنامه نویسی نرم افزارهای سطح پایین و رایانه است.

ضمیمه این مرحله همچنین می توانید بایگانی zip "kim_uno_tools.zip" را بیابید. این شامل تعدادی مونتاژ کننده و شبیه ساز اصلی برای KIM Uno است. آنها در NodeJS نوشته شده اند - مطمئن شوید که آن را نصب کرده اید.

مونتاژ برنامه ها

اگر به "retracement/retracement.س" نگاه کنید ، می بینید که این کد منبع برای پیاده سازی فیبوناچی مورد بحث است. برای مونتاژ و ایجاد برنامه ای از آن ، که KIM Uno بتواند اجرا کند ، دستور زیر را وارد کنید (در ریشه بایگانی استخراج شده "kim_uno_tools.zip"):

node assemble.js fibonacci/retracement.s

و اگر خطایی مرتکب شده اید یا خطایی را چاپ می کند یا برنامه حاصله را پخش می کند. برای ذخیره آن ، می توانید خروجی را کپی کرده و در یک فایل ذخیره کنید یا به سادگی این دستور را اجرا کنید:

node assemble.js fibonacci/retracement.s> yourfile.h

خروجی به گونه ای قالب بندی شده است که می تواند مستقیماً به عنوان یک فایل هدر C در سیستم عامل KIM Uno گنجانده شود ، اما شبیه ساز همچنین می تواند از آن برای شبیه سازی استفاده کند. به سادگی وارد کنید:

node sim.js yourfile.h

و نتیجه شبیه سازی و خروجی مورد انتظار از KIM Uno روی صفحه نمایش داده می شود.

این یک معرفی بسیار کوتاه برای این ابزار بود. به شما توصیه می کنم با آنها بازی کنید و نحوه کار آنها را ببینید. به این ترتیب شما دانش عمیقی می گیرید و اصول عملکرد پشت پردازنده ها ، دستورالعمل ها ، مونتاژ کننده ها و شبیه سازها را یاد می گیرید ؛-)

مرحله 13: چشم انداز

چشم انداز
چشم انداز
چشم انداز
چشم انداز
چشم انداز
چشم انداز

تبریک می گویم

اگر این مطلب را بخوانید ، احتمالاً از این دستورالعمل کامل استفاده کرده اید و KIM Uno خود را ساخته اید. این واقعاً زیباست.

اما سفر به اینجا ختم نمی شود - بی نهایت گزینه وجود دارد که چگونه می توانید KIM Uno را تغییر دهید و آن را به دلخواه و دلخواه سفارشی کنید.

به عنوان مثال ، KIM Uno می تواند به یک شبیه ساز CPU یکپارچهسازی با سیستمعامل مجهز باشد که ممکن است از MOS 6502 یا Intel 8085 ، 8086 یا 8088 معروف تقلید کند. سپس قبل از اینکه درباره OISC ها بیاموزم ، به دید اولیه من راه می یابد.

اما ممکن است موارد دیگر نیز مورد استفاده قرار گیرد ، زیرا طراحی سخت افزار بسیار عمومی است. KIM Uno می تواند به عنوان…

  • … یک کنترل از راه دور به عنوان مثال برای CNC یا سایر دستگاه ها شاید سیم دار یا مجهز به دیود IR یا هر فرستنده بی سیم دیگر باشد
  • … یک ماشین حساب جیبی (هگزا دسیمال). سیستم عامل را می توان به راحتی تطبیق داد و طراحی برد نیازی به تغییر زیاد ندارد. شاید بتوان صفحه نمایش ابریشم را با عملیات ریاضی تطبیق داد و فاصله بین بخش ها را برطرف کرد. جدا از این ، در حال حاضر آماده این تحول است

امیدوارم همانطور که من طراحی و برنامه ریزی آن را کرده بودم ، از پیگیری و ساخت KIM Uno لذت ببرید. و اگر آن را تمدید یا اصلاح می کنید - لطفاً به من اطلاع دهید. به سلامتی!

مسابقه PCB
مسابقه PCB
مسابقه PCB
مسابقه PCB

نفر دوم مسابقات PCB

توصیه شده: