Мазмұны:

KIM Uno - 5 евроға арналған микропроцессорлық Dev Kit эмуляторы: 13 қадам (суреттермен)
KIM Uno - 5 евроға арналған микропроцессорлық Dev Kit эмуляторы: 13 қадам (суреттермен)

Бейне: KIM Uno - 5 евроға арналған микропроцессорлық Dev Kit эмуляторы: 13 қадам (суреттермен)

Бейне: KIM Uno - 5 евроға арналған микропроцессорлық Dev Kit эмуляторы: 13 қадам (суреттермен)
Бейне: СУПЕР ЛЮЛЬКА Крючком с ДЕРЕВЯННЫМ дном. Аккуратный ОКРУГЛЫЙ КАПЮШОН! Люлька из трикотажной пряжи 2024, Қараша
Anonim
Image
Image
KIM Uno - 5 евролық микропроцессорлық Dev Kit эмуляторы
KIM Uno - 5 евролық микропроцессорлық Dev Kit эмуляторы
KIM Uno - 5 евролық микропроцессорлық Dev Kit эмуляторы
KIM Uno - 5 евролық микропроцессорлық Dev Kit эмуляторы

KIM Uno - бұл (ретро) микропроцессорларға арналған портативті, бағдарламалық жасақтамамен анықталған қондырғы. Бірақ мен бұл идеяны уақытқа оралу арқылы енгізуге рұқсат етіңіз:

2018 жылдың соңында мен MOS Technology, Inc. компаниясының әйгілі KIM-1 сияқты шағын портативті микропроцессорлық қондырғылар жинағын жасағым келетінін ойладым және оны 6502 процессорды құруға қатысқан Чак Педдл жасаған.

Дискретті логикалық компоненттері бар «жалаңаш» дев жиынтығын құру мүмкін емес еді, өйткені оған үлкен қуат көзі қажет еді (өйткені бұл ежелгі қондырғылар біршама токты қабылдайды), сонымен қатар даму өте көп уақытты қажет етеді. Ал мен қазір қалаймын!

Сондықтан мен KIM Uno -ны портативті құрылғы ретінде жасадым, ол бір қолға сыяды және екі CR2032 батареясымен жұмыс істейді. Ол қалаған процессорды эмуляциялау (немесе имитациялау) үшін 8 МГц жиілігінде жұмыс істейтін ATMega328p («Arduino») микроконтроллерін қолданады. Бұл архитектура сонымен қатар эмуляцияланған процессорлардың микроконтроллердің флэш -жадына сәйкес келетін кез келген нәрсемен алмастырылатынына көз жеткізеді. Сондықтан бұл көп мақсатты құрылғы.

Кездейсоқтықпен мен кейіннен YouTube -те «Бір нұсқаулық жиынтығы бар компьютерлер» немесе OISC туралы айтылған Ultimate Apollo Guidance Computer Talk (34C3) деп аталатын өте жақсы сөйлесуді көрдім. Мен олар туралы білмедім және оны іске асыруға тамаша кандидат ретінде таптым.

KIM Uno процессорды тек бір нұсқаумен эмуляциялайды: subleq - нөлден кіші немесе тең болса, оны азайту және тармақтау.

Егер сіз менімен бірге осы нұсқаулықты ұстанатын болсаңыз, сіз өзіңіздің жеке KIM Uno -ны құра аласыз. Ең жақсы жағы - оны талғамға қарай өзгертуге болады - бұл тек 4, 75 еуро тұрады (2018 жылдың соңындағы жағдай бойынша).

Бір кеңес: Git репозиторийі бар, ол осы нұсқаулықтың әр түрлі қадамдарымен қамтамасыз етілген барлық файлдарды қамтиды. Егер сіз кейбір ресурстарды өзгерткіңіз келсе және оларды бізбен бөліскіңіз келсе, сіз PR жасай аласыз. Бірақ сіз барлық файлдарды бірден жүктей аласыз. Тек https://github.com/maxstrauch/kim-uno сайтына өтіңіз. Рахмет!

6502 KIM Uno -ның нақты көшірмесін жасайтын тағы бір қызықты жоба бар (KIM Uno). Мұнда тексеріңіз. Жасаушы тіпті жиынтықты сатады. Егер сіз 6502 -ге қызығушылық танытсаңыз және бұл жобаны ұнатсаңыз, онда сіз оны қарауыңыз керек!

1 -қадам: ПХД алу

ПХД алу
ПХД алу
ПХД алу
ПХД алу

Көріп отырғаныңыздай, мен мүмкіндікті пайдаланып ПХД құрастырдым және оны кәсіби түрде жасауға рұқсат бердім. Оны сырттан өндіріп, сізге жеткізу көп уақытты қажет ететіндіктен (сіз әлемнің қай жерінде екеніңізге байланысты;-)) тапсырыс беру-бұл бірінші қадам. ПХД жасалған және сізге жеткізілген кезде біз басқа қадамдарды жалғастыра аламыз.

Мен ПХД -ны Қытайда PCBWay -де небәрі 5 долларға тапсырыс бердім. Мен PCBWay -ді ПХД -ге арналған өндіруші ретінде ұсынудан ешқандай пайда көрмеймін, бұл мен үшін жақсы жұмыс істеді және сіз үшін де жақсы жұмыс істеуі мүмкін. Бірақ сіз оларды JLCPCB, OSH Park немесе кез келген жергілікті PCB компаниясы сияқты кез келген басқа жерге тапсырыс бере аласыз.

Егер сіз оларға PCBWay-де тапсырыс бергіңіз келсе, сіз «kim-uno-rev1_2018-12-12_gerbers.zip» ZIP файлын жүктей аласыз және оны PCBWay-ге еш өзгеріссіз жүктей аласыз. Бұл суреттерден көруге болатын ПХД -ге тапсырыс беру үшін мен қолданған түпнұсқа файл.

Егер сіз оларды басқа өндірушіден тапсырыс берсеңіз, оларды бастапқы KiCad көздерінен қайта экспорттау қажет болуы мүмкін, себебі мен оларды PCBWay спецификациясымен осы жерден таба аласыз. KiCad түпнұсқалары үшін «kim-uno-kicad-sources.zip» жүктеп алып, шығарып алыңыз.

Бірақ тіпті екінші жол бар: егер сіз ПХД -ге тапсырыс бергіңіз келмесе, перформатты немесе тіпті тақтаны пайдаланып, өзіңіздің жеке нұсқаңызды құра аласыз.

Қалай болғанда да: ПХД енді жолда болғандықтан, біз басқа бөліктерге назар аудара аламыз! Кел, менің соңымнан ер.

2 -қадам: Компоненттерді алу

Компоненттерді алу
Компоненттерді алу
Компоненттерді алу
Компоненттерді алу
Компоненттерді алу
Компоненттерді алу

Енді сіз компоненттерді алуыңыз керек. Ол үшін сіз осы қадамға бекітілген барлық қажетті компоненттер мен мөлшерлердің шолу суретін, сонымен қатар БОМ -ды (материалдық шот) таба аласыз.

BOM eBay -ге сілтемелерді қамтиды. Мұны оқыған кезде бұл ұсыныстар жабық болуы мүмкін, бірақ сіз оны бастапқы нүкте ретінде пайдалана аласыз. Қолданылған компоненттер өте стандартты.

Төменде мен сізге барлық қажетті компоненттерді түсіндіремін:

  • Жеті сегментті дисплей үшін 7х 1 кОм резисторлар. Жарықтығын жоғарылату үшін мәнді төмендетуге болады (мысалы, 470 to дейін), бірақ оны шамадан тыс төмендетпеңіз, әйтпесе жарық диодтары өшіп қалады немесе батарея тез таусылады. Мен бұл құндылық мен үшін жұмыс істейтінін білдім
  • 1х 10 кОм микроконтроллердің RESET желісі үшін тартылатын резистор ретінде
  • 1x 100nF конденсатор кез келген кернеудің көтерілуін тегістеу үшін (бұл біз батареяларды қолданғандықтан болмауы керек, бірақ дұрыс өлшеу үшін …)
  • DIP-28 пакетіндегі 1x ATMega328P (әдетте ATMega328P-PU деп аталады)
  • 1x негізгі ПХД - алдыңғы қадамды қараңыз; тапсырыс беріңіз немесе өзіңіз жасаңыз
  • 2 рет CR2032 батарея ұстағыштары
  • 1x SPDT (бір полюсті, қос лақтыру) қосқышы, ол негізінен үш контактіге ие және оның екі күйінің әрқайсысында (қосулы немесе сөндірулі) екі контактіні қосады
  • Пернетақта үшін 20 рет жанасатын түймелер. ПХД -дің артқы жағын пайдалану үшін мен SMD тактілі түймелерін қолдандым (стандартты 6x6x6 мм) - оларды көріп отырғаныңыздай дәнекерлеу өте оңай.
  • ҚОСЫМША: бағдарламашыны қосуға арналған 1x6 түйреуішті 1х, бірақ бұл міндетті емес, кейінірек көресіз
  • 4 цифрлы 1x жеті сегментті дисплей және 2 цифрлы 1x жеті сегментті дисплей - тақтаға жалпы анодты сымдары бар 0,36 дюймдік (9, 14 мм) элементтер қажет болады. Жұмыс блогын алу үшін екі талап та маңызды. Сонымен қатар жеті сегментті дисплейдің бұл түрі өте кең таралған

Бұл қадамда сіз қолданылған компоненттердің өлшемдері мен түрлері туралы дәлірек ақпаратты қамтитын «component-datasheets.zip» файлын таба аласыз. Бірақ компоненттердің көпшілігі өте стандартты және оларды аз ақшаға оңай алуға болады.

Енді сіз барлық компоненттерді дәнекерлеуді жалғастыруға дайын болғанша күтуіңіз керек. Осы уақыт ішінде сіз соңына дейін секіріп, қаласаңыз, KIM Uno пайдалану туралы аздап оқи аласыз.

3 -қадам: Дәнекерлеу құралдарына шолу

Дәнекерлеу құралына шолу
Дәнекерлеу құралына шолу
Дәнекерлеу құралына шолу
Дәнекерлеу құралына шолу

KIM Uno дәнекерлеу және салу үшін сізге суретте көрсетілген құралдар қажет:

  • Сым кескіш (құрамдас сымдардың ұшын кесу үшін)
  • Жалпақ қысқыштар
  • Пинцет жұбы
  • (лайықты) Қалың емес дәнекерлеу - мен 0,56 мм дәнекерлеуді қолданамын
  • Пісіру үтігі - сізге жоғары сапалы дәнекерлеу үтігі қажет емес (өйткені біз мұнда зымыранмен айналыспаймыз) - Мен Ersa FineTip 260 -ды ұзақ уақыт қолданамын және бұл өте жақсы
  • Ағынды қалам: компоненттер мен жастықшаларға ағынды қосу оларды дәнекерлеуді едәуір жеңілдетеді, өйткені дәнекер өздігінен дұрыс жерге «ағып кетеді*
  • Қосымша: дәнекерлеуге арналған губка (металл жүннен)

Кейінірек KIM Uno бағдарламалау үшін сізге қажет:

  • микробағдарламаны жүктеу үшін AVR-GCC құралдар тізбегі мен avrdude бар компьютер
  • провайдер (бағдарламашы) - суреттен көріп тұрғаныңыздай, мен Arduino Uno -ды арнайы эскизі бар провайдер ретінде қолданамын - сондықтан сәнді жабдық сатып алудың қажеті жоқ.

* адамдардың кейбір нұсқаулары қажет;-)

Дайынсыз ба? Келесі қадамда біз KIM Uno жинауды бастаймыз.

4 -қадам: №1 дәнекерлеу: резисторлар мен конденсаторларды қосу

Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу
Дәнекерлеу №1: резисторлар мен конденсаторларды қосу

Сіз әрқашан ең кіші (компоненттердің биіктігі бойынша) компоненттерден бастап, ең жоғары компоненттерге дейін жұмыс істеуіңіз керек. Сондықтан, біз резисторларды қосудан бастаймыз және резисторларды дәнекерлеуге және орнында қалуға ыңғайлы болу үшін аяқтың артқы жағына бүгеміз. Содан кейін ұзын сымдарды кесіңіз.

Сондай -ақ, суреттерде көрсетілмеген, кішкентай 100 нФ конденсаторды осылай қосыңыз.

Бір кеңес: сымның аяқтарын кішкене контейнерде ұстаңыз, олар кейде ыңғайлы болады.

5 -қадам: №2 дәнекерлеу: пернетақтаны жинау

Дәнекерлеу №2: Пернетақтаны құрастыру
Дәнекерлеу №2: Пернетақтаны құрастыру
Дәнекерлеу №2: Пернетақтаны құрастыру
Дәнекерлеу №2: Пернетақтаны құрастыру
Дәнекерлеу №2: Пернетақтаны құрастыру
Дәнекерлеу №2: Пернетақтаны құрастыру

Келесі қадам - 20 SMD тактильді қосқышын дәнекерлеу. Бұл жұмыс сәл қате болғандықтан, біз қазір ПХД жұмыс үстеліне жатқанда жасаймыз.

Біз жоғарыдан төменге қарай жұмыс жасаймыз (немесе егер ПХД фотода көрсетілгендей бағытталса) солдан оңға қарай) және бірінші қатардан бастаймыз: әр қосқыш үшін төрт жастықшаның біреуін таңдап, ағынды қаламмен сулаңыз.

Содан кейін түйреуішті ұстап алу үшін пинцетті қолданыңыз және оны төрт жастықшаға мұқият орналастырыңыз. Содан кейін сіз ағынмен таңдалған және дайындалған төсеніште орналасқан коммутатордың аяғын ғана дәнекерлеңіз. Мұны істеу үшін сіз жұмысты бастамас бұрын темірмен дәнекерлеуді «ұстауыңыз» керек. Бұл әдісті қолданып, бір аяқты дәнекерлеп, қосқыштардың барлық қатарын аяқтаңыз.

Көрсеткілермен кесу дәнекерлеудің дәл қалай жасалғанын көрсетеді.

Бүкіл қатарды дәнекерлегеннен кейін (тек бір түйреуіш), түйреуішті жоғары жылыту және қосқышты қайта орналастыру арқылы аздап түзетулер енгізуге болады. Қосқыштардың мүмкіндігінше жақсы тураланғанына көз жеткізіңіз.

Егер сіз туралауға риза болсаңыз, онда барлық басқа түйреуіштерді флюс қаламмен сулаңыз, содан кейін оларды дәнекерлегішпен түрту арқылы дәнекерлеп, оған тигізу арқылы аздап дәнекерлеуге болады. Сіз дәнекерлеу тақтасына тікелей сорылғанын көресіз.

Қатарды дәнекерлегеннен кейін сіз ілініп қалғаныңызды байқайсыз және бұл қиын емес, бірақ қайталанады. Қалғанын жасаңыз, сонда сіз тез арада дайын пернетақтаны аласыз.

6 -қадам: №3 дәнекерлеу: жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы

Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы
Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы
Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы
Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы
Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы
Дәнекерлеу №3: Жеті сегменттің дисплейі, қосқышы және түйреуіш тақырыбы

Енді сіз қосқышты және түйреуішті қосуға болады (міндетті емес), оны саусағыңызбен ұстап тұрып, бір түйреуішті ПХД -ге бекіту үшін дәнекерлей аласыз, осылайша сіз басқа түйреуіштерді дәнекерлеп, ақырында бастапқы ұстау түйреуішін түрте аласыз.

Өзіңізді ыстық дәнекерлегішпен күйдірмеу үшін абай болыңыз. Егер сізге бұл ыңғайсыз болса, компонентті ұстап тұру үшін кішкене таспаны (мысалы, суретші таспасын) қолдануға болады. Осылайша сізде екі қолыңыз бос болады.

Жеті сегментті дисплейлер дәл осылай дәнекерленген (суретті қараңыз): сіз оны салып, қолыңызбен немесе таспамен ұстаңыз және басқа түйреуіштерді дәнекерлеуге болатындай етіп бекіту үшін қарама -қарсы екі түйреуішті дәнекерлеңіз.

Бірақ абай болыңыз және жеті сегментті дисплейді дұрыс бағытта қойыңыз (ондық нүктелер пернетақтаға қаратып). Әйтпесе, сіз қиыншылыққа тап боласыз …

7 -қадам: №4 дәнекерлеу: Микроконтроллерді дәнекерлеу

Дәнекерлеу №4: Микроконтроллерді дәнекерлеу
Дәнекерлеу №4: Микроконтроллерді дәнекерлеу

Енді сізде көп тәжірибе бар, сіз алға қарай жүре аласыз және микроконтроллерді үстіңгі ойығы коммутаторға қаратып қоюға болады. Тегіс қысқыштың көмегімен сіз микроконтроллердің аяқтарын ПХД -дегі тесіктерге сәйкес келу үшін мұқият иіп қоюға болады.

Бұл тығыз бекітілгендіктен, микроконтроллерді қосу үшін сізге басқарылатын күш қажет. Оның артықшылығы - ол құлап кетпейді. Бұл дегеніміз, сіз уақытыңызды бөліп, оны артқы жағынан дәнекерлей аласыз.

8 -қадам: №5 дәнекерлеу: Батарея ұстағыштарын қосыңыз (соңғы қадам)

Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)
Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)
Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)
Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)
Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)
Дәнекерлеу №5: Батарея ұстағыштарын қосыңыз (соңғы қадам)

Соңында батарея ұстағыштарын артқы жағына қосу керек. Мұны істеу үшін сіз флюсті қаламды қолданып, төрт жастықшаны сулаңыз, содан кейін үтіктеуге дәнекер алыңыз. Батарея ұстағышын екі төсекке де мұқият туралаңыз. Контактілердің екі ұшында ПХД тақтасының бірдей мөлшері көрінуі керек. Үтікпен ПХД жастықшасы мен батарея ұстағышының аяғын түртіңіз. Дәнекер төсемнің астына және үстінен ағып, оны суретте көрсетілгендей бекітеді. Егер сізде проблемалар болса, қаламмен қосымша ағын қосуға болады.

9 -қадам: Эмуляторды жыпылықтау

Эмулятордың жыпылықтауы
Эмулятордың жыпылықтауы
Эмулятордың жыпылықтауы
Эмулятордың жыпылықтауы
Эмулятордың жыпылықтауы
Эмулятордың жыпылықтауы

Қосылған «kim-uno-firmware.zip» 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», Рэндалл Боннан). Мен жаңа нұсқасы бар екенін білемін, бірақ бұл нұсқада соңғы бес жыл бойы ешқандай қиындық көрмедім, сондықтан мен оны сақтаймын. Бұл жай ғана жұмыс істейді. Эскиздің жоғарғы жағындағы түсініктемені қолдана отырып, сіз Arduino UNO -дегі түйінге ие боласыз және KIM Uno схемасын қолдана отырып (қосымшаны қараңыз) сіз KIM Uno -дағы 1x6 ISP тақырыбының түйінін ала аласыз. Жеті сегментті дисплейге жақын орналасқан шаршы түйреуіш 1 -түйреуіш (GND). Келесі түйреуіштер (дұрыс ретпен): RESET, MOSI, MISO, SCK, VCC. Сіз VCC -ті 3V3 -ке немесе 5 -ке қосуға болады.

Егер сіз 1x6 штоксельді қоспаған болсаңыз, онда тақтаның сымдарын қолданып, оларды саңылауларға салып, саусағыңызбен бұрышқа қоюға болады - дәл суретте көрсетілгендей. Бұл микробағдарламаны жыпылықтау және сақтандырғыштарды орнату үшін жеткілікті байланыс жасайды. Бірақ егер сізге тұрақты қондырғы ұнаса, міндетті түрде 1x6 істікшелі тақырыптарды қосу керек.

Менде екі құрылғы бар: түйреуіштер жоқ өндірістік нұсқа және түйіспелі тақырыптары бар әзірлеу нұсқасы. Бұл әлдеқайда ыңғайлы.

10 -қадам: Аяқталды

Аяқталды
Аяқталды
Аяқталды
Аяқталды

Енді сіз аяқтадыңыз және қағазға өзіңіздің қосалқы бағдарламаларыңызды жаза бастай аласыз, оны жинай аласыз, содан кейін оны жадқа енгізе аласыз.

KIM Uno 0x0a жад орнынан басталатын алдын ала бағдарламаланған Фибоначчи есептеулерімен бірге келеді. Ол әдепкі бойынша n = 6 болып орнатылады, сондықтан нәтиже 8 болуы керек. Есептеуді бастау үшін «Өту» түймесін басыңыз.

11 -қадам: ПХД дизайнын талдау

ПХД дизайнын талдау
ПХД дизайнын талдау
ПХД дизайнын талдау
ПХД дизайнын талдау

Бұл жобаны аяқтағаннан кейін мен назар аударуға тұрарлық бірнеше пункттерді таптым және олар басқармаға жаңа редакцияда қаралуы тиіс:

  • ATMega328p жібек экранында бірінші түйреуіш орналасқан әдеттегі ойық жоқ. DIP-28 ізінде тіпті бірінші түйреуіш орналасқан төртбұрышты жастық жоқ. Бұл шатаспау үшін егжей -тегжейлі жібек экранмен жақсартылуы керек
  • провайдер тақырыбында жібек экранда байланыс белгілері жоқ. Бұл оны провайдерге қалай қосуға болатынын түсінуді қиындатады
  • кез келген шатасуды болдырмау үшін провайдер тақырыбын стандартты түйреуіш схемасы бар 2x6 істікшелі тақырыпқа өзгертуге болады

Бұл нүктелерден басқа, мен мұның қалай болғанына және бірінші әрекетте жұмыс істегеніне өте қуаныштымын.

12 -қадам: SUBLEQ қалай бағдарламалануы керек?

Image
Image
SUBLEQ қалай бағдарламаланады?
SUBLEQ қалай бағдарламаланады?
SUBLEQ қалай бағдарламаланады?
SUBLEQ қалай бағдарламаланады?

Басында айтылғандай, қазіргі KIM Uno микробағдарламасы бір нұсқаулық жиынтық компьютерге (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 басталады. Қазіргі уақытта «Өту» пернесі 0x0a бекітілгеннен орындалады.

Бұл ақпараттың көмегімен енді ассемблерге программа жазып, жадқа нұсқауларды енгізіп, оны орындауға болады. Бір ғана нұсқаулық болғандықтан, тек аргументтер енгізіледі (A, B және C). Сонымен, үш жад орнынан кейін келесі нұсқаулық аргументтері басталады және т.

Бұл қадамға қоса, сіз «fibonacci.s» файлын, сондай -ақ Fibonacci -ді іске асырудың мысалы болып табылатын қолмен жазылған бағдарламаның суретін таба аласыз. Бірақ күте тұрыңыз: subleq емес үш нұсқаулық қолданылады, атап айтқанда ADD, MOV және HLT. «Мәміле дегеніміз не? Сіз бір ғана нұсқаулық бар деп айтпадыңыз ба, subleq?» сұрап тұрсың ба? Бұл өте оңай: subleq көмегімен нұсқауларды оңай еліктеуге болады:

MOV a, b - а -дан b -ге дейінгі деректерді көшіру мыналардан тұруы мүмкін:

  1. b, b, 2 сублексі (келесі нұсқаулық)
  2. a, Z, 3 сублексі (келесі нұсқаулық)
  3. Z, b, 4 сублексі (келесі нұсқаулық)
  4. subleq Z, Z, мысалы 5 (келесі нұсқаулық)

Mem - mem [a] жасайтын және mem нәтижесімен қайта жазатын subleq -ті азайту мүмкіндігін қолдана отырып, мән нөлдік регистр көмегімен көшіріледі. Ал «Z, Z,… subleq» нөлдік регистрді Z мәніне қарамастан, 0 қалпына келтіреді.

ADD a, b - a + b мәндерін қосады және соманы b -де сақтайды, мыналардан тұрады:

  1. a, Z, 2 сублексі (келесі нұсқаулық)
  2. Z, b, 3 сублексі (келесі нұсқаулық)
  3. subleq Z, Z, мысалы 4 (келесі нұсқаулық)

Бұл нұсқаулық mem - mem [a] болып табылатын mem - (- mem [a]) есептеп шығару мүмкіндігін қолдану арқылы ғана есептеледі.

HLT - процессорды тоқтатады және орындалуын тоқтатады:

Анықтама бойынша эмулятор CPU 0xff -ке (немесе егер ол -1 болса) тоқтағысы келетінін біледі. Сондықтан қарапайым

Z, Z, -1 сублексі

тапсырманы орындайды және эмуляторға эмуляцияны тоқтату керектігін көрсетеді.

Осы үш қарапайым нұсқаулықтың көмегімен Фибоначчи алгоритмін енгізуге болады және жақсы жұмыс істейді. Бұл, өйткені OISC «нақты» компьютер есептей алатын барлық нәрсені тек subleq нұсқауымен есептей алады. Бірақ, әрине, кодтың ұзындығы мен жылдамдығы сияқты көптеген айырмашылықтар бар. Дегенмен, бұл төмен деңгейдегі бағдарламалық қамтамасыз ету мен компьютерлерді үйренудің және тәжірибе жасаудың тамаша тәсілі.

Бұл қадамға қоса сіз «kim_uno_tools.zip» ZIP архивін таба аласыз. Онда KIM Uno үшін бірнеше негізгі құрастырушы мен тренажер бар. Олар NodeJS -те жазылған - оны орнатқаныңызға көз жеткізіңіз.

Бағдарламаларды жинақтау

Егер сіз «fibonacci/fibonacci.s» сайтына қарасаңыз, бұл талқыланған фибоначчиді іске асырудың бастапқы коды екенін білесіз. Оны жинау және одан KIM Uno іске қосатын бағдарлама жасау үшін сіз келесі пәрменді енгізесіз (шығарылған «kim_uno_tools.zip» мұрағатының түбіріне):

түйін құрастырады.js fibonacci/fibonacci.s

және егер сіз қате жіберген болсаңыз немесе нәтиже беретін бағдарламаны төгіп тастасаңыз, ол қатені басып шығарады. Оны сақтау үшін шығуды көшіріп, оны файлға сақтауға немесе мына пәрменді орындауға болады:

түйін assemble.js fibonacci/fibonacci.s> сіздің файлыңыз.h

Шығару KIM Uno микробағдарламасына C тақырыптық файл ретінде тікелей қосылатындай пішімделеді, бірақ симулятор оны модельдеу үшін де қолдана алады. Жай енгізіңіз:

түйін sim.js сіздің файлыңыз.h

Сізге модельдеу нәтижесі мен дисплейде KIM Uno күтілетін нәтиже ұсынылады.

Бұл осы құралдарға өте қысқаша кіріспе болды; Мен сізге олармен ойнауды және олардың қалай жұмыс істейтінін қарауды ұсынамын. Осылайша сіз терең білім аласыз және процессорлардың, нұсқаулықтардың, құрастырушылардың және эмуляторлардың жұмыс принциптерін білесіз;-)

13 -қадам: Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Құттықтаймын

Егер сіз мұны оқысаңыз, сіз барлық нұсқаулықты басынан өткеріп, өзіңіздің жеке KIM Uno -ны құрған боларсыз. Бұл шынымен жақсы.

Бірақ саяхат мұнымен аяқталмайды - KIM Uno -ны қалай өзгертуге және оны сіздің қажеттіліктеріңізге және қалауыңызға қарай өзгертуге болатын көптеген мүмкіндіктер бар.

Мысалы, KIM Uno -ға әйгілі MOS 6502 немесе Intel 8085, 8086 немесе 8088 -ді имитациялайтын «нағыз» ретро процессорлық эмулятор орнатылуы мүмкін. Содан кейін мен OISCs туралы білмес бұрын бұл менің алғашқы көзқарасыма сәйкес келеді.

Бірақ басқа да мүмкіндіктер бар, өйткені аппараттық құралдардың дизайны әмбебап. KIM Uno ретінде қолдануға болады …

  • … Қашықтан басқару пульті, мысалы CNC немесе басқа құрылғылар үшін. Мүмкін сымды немесе инфрақызыл диодпен немесе басқа сымсыз жіберушімен жабдықталған
  • … (Он алтылық) қалта калькуляторы. Микробағдарламаны өте оңай бейімдеуге болады және тақтаның дизайнын қатты өзгерту қажет емес. Мүмкін жібек экранды математикалық операциялармен бейімдеуге болады және сегменттер арасындағы алшақтықты жоюға болады. Сонымен қатар, ол қазірдің өзінде бұл трансформацияға дайын

Сіз KIM Uno -ны құрастыру мен жоспарлағанымды ұнатасыз ба, соншалықты қызықты болды деп үміттенемін. Ал егер сіз оны ұзартсаңыз немесе өзгертсеңіз - маған хабарлаңыз. Сәлем!

ПХД сайысы
ПХД сайысы
ПХД сайысы
ПХД сайысы

ПХД байқауында екінші орын

Ұсынылған: