Satura rādītājs:

KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators: 13 soļi (ar attēliem)
KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators: 13 soļi (ar attēliem)

Video: KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators: 13 soļi (ar attēliem)

Video: KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators: 13 soļi (ar attēliem)
Video: Kingdoms Reborn Обзор-тест - отличная стратегия построения с мультиплеером[Немецкий,много субтитров] 2024, Jūnijs
Anonim
Image
Image
KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators
KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators
KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators
KIM Uno - 5 € mikroprocesoru izstrādātāju komplekta emulators

KIM Uno ir pārnēsājams programmatūras izstrādāts izstrādātāju komplekts (retro) mikroprocesoriem. Bet ļaujiet man iepazīstināt ar ideju, atgriežoties laikā:

Vēl 2018. gada beigās man ienāca prātā, ka vēlos izveidot nelielu pārnēsājamu mikroprocesoru izstrādātāju komplektu, tāpat kā slaveno KIM-1 no MOS Technology, Inc.

Bet izveidot "kaulu" izstrādātāju komplektu ar diskrētiem loģikas komponentiem nebija risinājums, jo tam bija nepieciešams liels barošanas avots (jo šīm senajām ierīcēm ir tendence uzņemt nopietnu strāvu), un arī izstrāde būtu ļoti laikietilpīga. Un es to gribu tagad!

Tāpēc es izstrādāju KIM Uno kā pārnēsājamu ierīci, kas ietilpst vienā rokā un tiek darbināta ar divām CR2032 baterijām. Tas izmanto ATMega328p ("Arduino") mikrokontrolleri, kas darbojas 8 MHz, lai atdarinātu (vai simulētu) vēlamo CPU. Šī arhitektūra arī nodrošina, ka emulētie CPU ir savstarpēji aizvietojami ar jebko, kas ietilpst mikrokontrollera zibatmiņā. Tātad tā ir daudzfunkcionāla ierīce.

Sagadīšanās pēc es vēlāk noskatījos patiešām labu sarunu - The Ultimate Apollo Guidance Computer Talk (34C3) - vietnē YouTube, kur ir minēti "One Instruction Set Computers" jeb OISC. Es nezināju par viņiem un atradu to kā ideālu kandidātu tās īstenošanai.

KIM Uno emulē CPU ar tikai vienu norādījumu: subleq - atņem un atzaro, ja ir mazāks vai vienāds ar nulli.

Ja jūs sekojat man, izmantojot šo pamācību, jūs varat ātri izveidot savu KIM Uno. Un labākā daļa - papildus tam, ka varat to mainīt pēc savas gaumes - ir tā, ka tā izgatavošana maksā tikai 4,75 € (2018. gada beigās).

Viens mājiens: ir Git krātuve, kurā ir visi faili, ko nodrošina šīs instrukcijas dažādās darbības. Ja vēlaties mainīt dažus resursus un kopīgot tos ar mums, varat izveidot PR. Bet tur jūs varat arī lejupielādēt visus failus vienlaikus. Vienkārši apmeklējiet vietni https://github.com/maxstrauch/kim-uno. Paldies!

Ir vēl viens diezgan interesants projekts, ko sauc par to pašu (KIM Uno), kas rada reālu 6502 KIM Uno kopiju. Pārbaudiet to šeit. Radītājs pat pārdod komplektu. Tātad, ja jūs interesē 6502 un jums patīk šis projekts, jums vajadzētu to apskatīt!

1. darbība: PCB iegāde

PCB iegāde
PCB iegāde
PCB iegāde
PCB iegāde

Kā redzat, es izmantoju iespēju izveidot PCB un ļaut to izgatavot profesionāli. Tā kā tā ražošana ārēji un nosūtīšana jums prasīs daudz laika (atkarībā no tā, kur atrodaties pasaulē;-)), pasūtīšana ir pirmais solis. Pēc tam mēs varam turpināt citas darbības, kamēr PCB ir izgatavots un nosūtīts jums.

Es pasūtīju savus PCB Ķīnā vietnē PCBWay tikai par 5 USD. Es nesaņemu nekādu labumu, ja PCBWay prezentēju kā savu PCB goto ražotāju, tas ir tikai tas, ka tas man darbojās labi un varētu derēt arī jums. Bet jūs varat tos pasūtīt jebkurā citā vietā, piemēram, JLCPCB, OSH Park vai jebkurā vietējā PCB uzņēmumā.

Bet, ja vēlaties tos pasūtīt vietnē PCBWay, varat lejupielādēt pievienoto ZIP failu "kim-uno-rev1_2018-12-12_gerbers.zip" un bez izmaiņām augšupielādēt to tieši vietnē PCBWay. Šis ir oriģinālais fails, ko izmantoju, lai pasūtītu PCB, kuras varat redzēt attēlos.

Ja pasūtāt tos no cita ražotāja, iespējams, tie būs jāeksportē no sākotnējiem KiCad avotiem, jo es tos ģenerēju, izmantojot specifikācijas no PCBWay, kuras varat atrast šeit. Oriģinālajiem KiCad avotiem lejupielādējiet "kim-uno-kicad-sources.zip" un izvelciet to.

Bet ir pat otrs veids: ja nevēlaties pasūtīt PCB, varat izveidot savu versiju, izmantojot perfboard vai pat maizes dēli.

Jebkurā gadījumā: tā kā PCB tagad ir ceļā, mēs varam koncentrēties uz citām daļām! Nāc, seko man.

2. darbība: komponentu iegāde

Sastāvdaļu iegāde
Sastāvdaļu iegāde
Sastāvdaļu iegāde
Sastāvdaļu iegāde
Sastāvdaļu iegāde
Sastāvdaļu iegāde

Tagad jums ir jāsaņem sastāvdaļas. Šim nolūkam jūs atradīsit visu nepieciešamo sastāvdaļu un daudzumu pārskatu, kas pievienots šim solim, kā arī BOM (materiālu saraksts).

BOM satur saites uz eBay. Lai gan šie piedāvājumi, iespējams, tiks slēgti, to izlasot, varat to izmantot kā sākumpunktu. Izmantotās sastāvdaļas ir diezgan standarta.

Tālāk es jums izskaidrošu visas nepieciešamās sastāvdaļas:

  • 7x 1 kΩ rezistori septiņu segmentu displejiem. Jūs varat samazināt vērtību (piemēram, līdz 470 Ω), lai tie spīdētu spožāk, bet ne pārāk daudz, pretējā gadījumā gaismas diodes mirs vai akumulators izlādēsies ļoti ātri. Es atklāju, ka šī vērtība man noder
  • 1x 10 kΩ kā uzvilkšanas rezistors mikrokontrollera RESET līnijai
  • 1x 100nF kondensators, lai izlīdzinātu visus sprieguma lēcienus (tam nevajadzētu notikt, jo mēs izmantojam baterijas, vai ne, bet labi …)
  • 1x ATMega328P DIP-28 iepakojumā (parasti ar nosaukumu ATMega328P-PU)
  • 1x galvenā PCB - skatiet iepriekšējo soli; pasūtīts vai uzbūvēts pats
  • 2x CR2032 bateriju turētāji
  • 1x SPDT (viena pola, dubultā metiena) slēdzis, kuram būtībā ir trīs kontakti, un katrā no diviem stāvokļiem (ieslēgts vai izslēgts) tas savieno divus kontaktus
  • 20x taustes spiedpogas tastatūrai. Lai izmantotu PCB aizmuguri, es izmantoju SMD taustes spiedpogas (standarta 6x6x6 mm) - tās ir diezgan viegli lodēt, kā redzēsit
  • IZVĒLES: 1x 1x6 kontaktu galvene programmētāja pievienošanai, taču tas nav obligāts, kā redzēsit vēlāk
  • 1x septiņu segmentu displejs ar 4 cipariem un 1x septiņu segmentu displejs ar 2 cipariem - tāfele uzņems tikai 0,36 collu (9,14 mm) elementus ar kopēju anoda vadu. Abas prasības ir svarīgas, lai iegūtu darba vienību. Bet arī šāda veida septiņu segmentu displejs ir ļoti izplatīts

Šim solim pievienots fails "komponent-datasheets.zip", kas satur precīzāku informāciju par izmantoto komponentu izmēriem un veidiem. Bet lielākā daļa sastāvdaļu ir ļoti standarta, un tās var viegli iegūt par nelielu naudu.

Tagad jums jāgaida, līdz visas sastāvdaļas ir gatavas lodēšanai. Šajā laikā jūs jau varat pāriet līdz beigām un, ja vēlaties, nedaudz izlasīt par KIM Uno izmantošanu.

3. solis: Lodēšanas rīka pārskats

Lodēšanas rīka pārskats
Lodēšanas rīka pārskats
Lodēšanas rīka pārskats
Lodēšanas rīka pārskats

Lai lodētu un izveidotu KIM Uno, jums nepieciešami rīki, kas parādīti attēlos:

  • Stiepļu griezējs (lai sagrieztu komponentu vadu galu)
  • Plakanās knaibles
  • Pincetes pāris
  • (pienācīgs) lodējums, kas nav pārāk biezs - es izmantoju 0,56 mm lodmetālu
  • Lodāmurs - jums nav nepieciešams augstākās klases lodāmurs (jo mēs arī šeit nerīkojamies ar raķešu zinātni) - es jau ilgu laiku izmantoju Ersa FineTip 260, un tas ir patiešām labs
  • Plūsmas pildspalva: pievienojot plūsmu komponentiem un spilventiņiem, ir daudz vieglāk tos lodēt, jo lodēšana pēc tam pati "plūst" pareizajā vietā*
  • Pēc izvēles: sūklis (no metālvilnas) jūsu lodāmurim

Lai vēlāk ieprogrammētu KIM Uno, jums būs nepieciešams arī:

  • dators ar AVR-GCC rīku ķēdi un avrdude, lai augšupielādētu programmaparatūru
  • ISP (programmētājs) - kā redzams attēlā, es izmantoju savu Arduino Uno kā ISP ar īpašu skici - tāpēc nav jāiegādājas izsmalcināta aparatūra

* nepieciešami daži cilvēku norādījumi;-)

Vai tu esi gatavs? Nākamajā solī mēs sāksim montēt KIM Uno.

4. solis: lodēšana #1: rezistoru un kondensatoru pievienošana

Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana
Lodēšana #1: rezistoru un kondensatoru pievienošana

Jums vienmēr vispirms jāstrādā no mazākajām (detaļu augstuma ziņā) sastāvdaļām, līdz pēdējām augstākajām sastāvdaļām. Tāpēc mēs sākam, pievienojot rezistorus un noliecoties pār kājām aizmugurē, lai rezistorus būtu viegli lodēt un palikt vietā. Pēc tam nogrieziet garos vadus.

Turklāt, kas nav parādīts attēlos, tāpat pievienojiet mazo 100 nF kondensatoru.

Viens padoms: turiet šīs stieples kājas nelielā traukā, dažreiz tās noder.

5. solis: lodēšana #2: tastatūras salikšana

Lodēšana #2: tastatūras salikšana
Lodēšana #2: tastatūras salikšana
Lodēšana #2: tastatūras salikšana
Lodēšana #2: tastatūras salikšana
Lodēšana #2: tastatūras salikšana
Lodēšana #2: tastatūras salikšana

Nākamais solis ir lodēt 20 SMD taustes slēdžus. Tā kā šis darbs ir nedaudz viltīgs, mēs to darām tagad, kad PCB atrodas uz darbagalda.

Mēs strādāsim no augšas uz leju (vai no kreisās uz labo, ja PCB ir orientēts, kā parādīts fotoattēlos) un sāksim ar pirmo rindu: katram slēdzim izvēlieties vienu no četriem spilventiņiem un samitriniet to ar plūsmas pildspalvu.

Pēc tam ar pinceti satveriet slēdzi un uzmanīgi novietojiet to uz četriem spilventiņiem. Pēc tam lodējiet tikai slēdža kāju, kas atrodas uz jūsu izvēlētā un ar plūsmu sagatavotā spilventiņa. Šim nolūkam pirms darba sākšanas ar dzelzi vajadzētu "paķert" kādu lodmetālu. Izmantojot šo metodi, pabeidziet visu slēdžu rindu, lodējot tikai vienu kāju.

Attēls ar bultiņām parāda palielinājumu, kā lodēšana tika veikta tieši.

Kad esat pielodējis visu rindu (tikai vienu tapu), varat veikt nelielas korekcijas, uzkarsējot tapu atpakaļ uz augšu un atkārtoti novietojot slēdzi. Pārliecinieties, vai slēdži ir izlīdzināti pēc iespējas labāk.

Ja esat apmierināts ar izlīdzināšanu, varat samitrināt visas citas tapas ar plūsmas pildspalvu un pēc tam pielodēt, pieskaroties tam ar lodāmuru un pievienojot nedaudz lodēšanas, pieskaroties arī tam. Jūs redzēsiet, ka lodēt ir iesūcis tieši uz spilventiņa.

Pēc kādas rindas lodēšanas jūs pamanīsit, ka jūs to uztverat un tas nav tik grūti, bet atkārtojas. Tāpēc dariet visu pārējo, un jūs īsā laikā nonāksit gatavas tastatūras vietā.

6. solis: lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene

Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene
Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene
Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene
Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene
Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene
Lodēšana #3: septiņu segmentu displejs, slēdzis un tapas galvene

Tagad jūs varat pievienot slēdzi un tapas galviņu (pēc izvēles), turot to ar pirkstu un lodējot vienu tapu, lai turētu to pie PCB, lai jūs varētu lodēt pārējās tapas un beidzot pieskarties sākotnējai turēšanas tapai.

Esiet piesardzīgs, lai neapdegtu sevi ar karstu lodāmuru. Ja jums tas nepatīk, varat turēt nedaudz lentes (piemēram, gleznotāja lenti), lai noturētu detaļu. Tādā veidā abas rokas var brīvi pārvietoties.

Septiņu segmentu displeji ir pielodēti vienādi (sk. Attēlu): jūs ievietojat to, turiet to ar roku vai lenti un pielodējat divas pretējas tapas, lai noturētu to vietā, kamēr jūs varat lodēt pārējās tapas.

Bet esiet piesardzīgs un novietojiet septiņu segmentu displeju pareizajā virzienā (ar decimāldaļas punktiem pret klaviatūru). Pretējā gadījumā jums ir nepatikšanas…

7. solis: lodēšana #4: mikrokontrollera lodēšana

Lodēšana #4: Mikrokontrollera lodēšana
Lodēšana #4: Mikrokontrollera lodēšana

Tagad, kad jums ir daudz prakses, varat iet uz priekšu un ievietot mikrokontrolleru ar iecirtumu augšpusē (vai pirmo tapu) pret slēdzi. Izmantojot plakanās knaibles, jūs varat nedaudz saliekt mikrokontrollera kājas, lai tās atbilstu PCB caurumiem.

Tā kā tas ir cieši pieguļošs, jums ir nepieciešams zināms kontrolējams spēks, lai ievietotu mikrokontrolleru. Priekšrocība ir tā, ka tā neizkrīt. Tas nozīmē, ka varat veltīt laiku un pielodēt to no aizmugures.

8. solis: lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)

Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)
Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)
Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)
Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)
Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)
Lodēšana #5: pievienojiet akumulatora turētājus (pēdējais solis)

Visbeidzot, aizmugurē jāpievieno akumulatoru turētāji. Šim nolūkam vienkārši izmantojiet plūsmas pildspalvu un samitriniet visus četrus spilventiņus un pēc tam uz gludekļa ielieciet lodmetālu. Uzmanīgi izlīdziniet akumulatora turētāju uz abiem paliktņiem. Kontaktu abos galos jābūt redzamam tikpat daudz PCB spilventiņa. Ar gludekli pieskarieties PCB spilventiņam un akumulatora turētāja kājiņai. Lodējums plūdīs zem spilventiņa un virs tā un nostiprinās to vietā, kā parādīts attēlā. Ja jums ir problēmas ar to, varat pievienot vairāk plūsmas ar pildspalvu.

9. darbība: emulatora mirgošana

Mirgo emulators
Mirgo emulators
Mirgo emulators
Mirgo emulators
Mirgo emulators
Mirgo emulators

Pievienotajā zip arhīvā "kim-uno-firmware.zip" varat atrast emulatora avota kodu kopā ar jau apkopotu "main.hex", kuru varat tieši augšupielādēt mikrokontrollerī.

Pirms jūs to faktiski varat izmantot, jums ir jāiestata mikrokontrollera drošinātāju biti, lai tas izmantotu iekšējo 8 MHz pulksteni, nesadalot to uz pusēm. Jūs varat paveikt darbu, izmantojot šādu komandu:

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

Ja jūs nezināt avrdude: tā ir programma programmu augšupielādēšanai mikrokontrollerī. Vairāk par to varat uzzināt šeit. Būtībā jūs to instalējat, un tad tas ir gatavs lietošanai. Iestatīšanai jums, iespējams, būs jāmaina arguments "-P" uz citu seriālo portu. Lūdzu, pārbaudiet datorā, kurš seriālais ports tiek izmantots (piemēram, Arduino IDE iekšpusē).

Pēc tam jūs varat zibspuldzēt programmaparatūru uz mikrokontrolleru ar šo komandu:

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

Atkal: tas pats attiecas uz "-P" kā iepriekš.

Tā kā man nepieder "profesionāls" ISP (sistēmas programmētājs), es vienmēr izmantoju savu Arduino UNO (skat. Attēlu) un pievienoto skici ("arduino-isp.ino", no Randall Bohn). Es zinu, ka ir jaunāka versija, taču ar šo versiju pēdējo piecu gadu laikā man nebija nekādu problēmu, tāpēc es to saglabāju. Tas vienkārši darbojas. Izmantojot komentāra skices galvenē, jūs iegūstat pinout uz Arduino UNO un izmantojot KIM Uno shēmu (skat. Pievienoto), jūs varat iegūt 1x6 ISP galvenes pinout uz KIM Uno. Kvadrātveida tapa septiņu segmentu displeja tuvumā ir 1. tapa (GND). Šādas tapas ir (pareizā secībā): RESET, MOSI, MISO, SCK, VCC. Jūs varat savienot VCC ar 3V3 vai 5V.

Ja neesat pievienojis 1x6 kontaktu galviņu, varat izmantot rīvdēļa vadus un ievietot tos savienojuma atverēs un ar pirkstu pagriezt leņķi - kā parādīts attēlā. Tas nodrošina pietiekamu kontaktu, lai mirgot programmaparatūru un iestatītu drošinātājus. Bet, ja jums patīk pastāvīgāka iestatīšana, noteikti jāpievieno 1x6 kontaktu galvenes.

Man ir divas ierīces: ražošanas versija bez tapu galvenēm un izstrādes versija ar tapu galviņām, kuras es atstāju pieslēgtas un izmantoju tās izstrādes laikā atkal un atkal. Tas ir daudz ērtāk.

10. solis: pabeigts

Pabeigts
Pabeigts
Pabeigts
Pabeigts

Tagad esat pabeidzis un varat sākt rakstīt savas subleq programmas uz papīra, salikt to un pēc tam ievadīt to atmiņā.

KIM Uno ir iepriekš ieprogrammēts Fibonači aprēķins, sākot ar atmiņas vietu 0x0a. Pēc noklusējuma tas ir iestatīts uz n = 6, tāpēc jāiegūst vērtība 8. Nospiediet "Go", lai sāktu aprēķinu.

11. solis: PCB dizaina analīze

PCB dizaina analīze
PCB dizaina analīze
PCB dizaina analīze
PCB dizaina analīze

Pabeidzot šo projektu, es atklāju pāris punktus, kas ir ievērības cienīgi, un tiem vajadzētu pievērsties jaunā valdes pārskatīšanā:

  • ATMega328p zīda ekrānam nav ierasto iecirtumu, kur atrodas pirmā tapa. DIP-28 pēdai nav pat kvadrātveida spilventiņa, kur atrodas pirmā tapa. To noteikti vajadzētu uzlabot ar detalizētāku sietspiedi, lai novērstu neskaidrības
  • ISP galvenē uz zīda ekrāna nav savienojuma etiķešu. Tādējādi ir grūti atpazīt, kā to savienot ar ISP
  • lai novērstu neskaidrības, ISP galveni var mainīt uz 2x6 kontaktu galveni ar standarta tapas izkārtojumu

Neskaitot šos punktus, esmu diezgan priecīgs, kā tas izrādījās un strādāja pie pirmā mēģinājuma.

12. darbība: kā ieprogrammēt SUBLEQ?

Image
Image
Kā programmēt SUBLEQ?
Kā programmēt SUBLEQ?
Kā programmēt SUBLEQ?
Kā programmēt SUBLEQ?

Kā minēts sākumā, pašreizējā KIM Uno programmaparatūra emulē viena instrukciju komplekta datoru (OISC) un nodrošina subbleq instrukciju, lai veiktu aprēķinus.

Instrukcija subleq apzīmē atņemšanu un atzarojumu, ja tas ir mazāks vai vienāds ar nulli. Pseidokodā tas izskatās šādi:

subleq A B C mem [B] = mem [B] - mem [A]; ja (mem [B] <= 0) goto C;

Tā kā KIM Uno emulē 8 bitu mašīnu, visi argumenti A, B un C ir 8 bitu vērtības, un tāpēc tā var adresēt kopējo 256 baitu galveno atmiņu. Acīmredzot to var pagarināt, izveidojot A, B un C vairāku baitu vērtības. Bet pagaidām paliksim vienkārši.

KIM Uno ir arī "perifērijas ierīces": displejs un tastatūra. Lai izmantotu šīs perifērijas ierīces, tā izmanto atmiņā kartētu arhitektūru, lai gan atmiņas karte ir ļoti vienkārša:

  • 0x00 = Z reģistrs (nulle), un tas jāsaglabā nulle.
  • 0x01 - 0x06 = seši baiti, kas attēlo katra displeja segmenta vērtību (no labās uz kreiso). Vērtība 0xf - sīkāku informāciju skatiet avota kodā (main.c).
  • 0x07, 0x08, 0x09 = trīs baiti, kur katrs baits apzīmē divus septiņu segmentu displejus (no labās uz kreiso). Šīs atmiņas vietas ļauj vienkārši parādīt rezultātu, nesadalot rezultātu divās daļās, lai to ievietotu vienciparu atmiņas vietās 0x01 - 0x06.
  • 0x0a+ = Programma sākas ar 0x0a. Pašlaik taustiņš "Go" tiek izpildīts no 0x0a fiksēts.

Ar šo informāciju tagad var uzrakstīt programmu montētājā un ievadīt instrukcijas atmiņā un pēc tam to izpildīt. Tā kā ir tikai viena instrukcija, tiek ievadīti tikai argumenti (A, B un C). Tātad pēc trim atmiņas vietām sākas nākamie instrukciju argumenti un tā tālāk.

Šim solim pievienots fails "fibonacci.s", kā arī ar roku rakstītas programmas attēls, kas ir Fibonači ieviešanas piemērs. Bet pagaidiet: tiek izmantoti trīs norādījumi - īpaši ADD, MOV un HLT -, kas nav suqq. "Kāds darījums? Vai jūs neteicāt, ka ir tikai viens norādījums, subleq?" tu jautā? Tas ir ļoti vienkārši: ar subleq šos norādījumus var ļoti viegli atdarināt:

MOV a, b - datu kopēšana vietā a līdz b var sastāvēt no:

  1. b apakšpunkts, b, 2 (nākamā instrukcija)
  2. subleq a, Z, 3 (nākamā instrukcija)
  3. subleq Z, b, 4 (nākamā instrukcija)
  4. subleq Z, Z, piem. 5 (nākamā instrukcija)

Izmantojot subleq atņemšanas funkciju, kas veic mem - mem [a] un pārraksta mem ar rezultātu, vērtība tiek kopēta, izmantojot nulles reģistru. Un "subleq Z, Z, …" vienkārši atiestata nulles reģistru uz 0 neatkarīgi no Z vērtības.

PIEVIENOT a, b - pievieno vērtības a + b un saglabā summu b var sastāvēt no:

  1. subleq a, Z, 2 (nākamā instrukcija)
  2. subleq Z, b, 3 (nākamā instrukcija)
  3. subleq Z, Z, piem. 4 (nākamā instrukcija)

Šī instrukcija vienkārši aprēķina mem - (- mem [a]), kas ir mem + mem [a], izmantojot arī atņemšanas funkciju.

HLT - aptur CPU un beidz izpildi:

Pēc definīcijas emulators zina, ka centrālais procesors vēlas pārtraukt darbību, ja tas lec uz 0xff (vai -1, ja tas tiek sinhronizēts). Tātad vienkāršs

apakšnodaļa Z, Z, -1

veic darbu un norāda emulatoram, ka tam jāpārtrauc emulācija.

Izmantojot šos trīs vienkāršos norādījumus, Fibonači algoritmu var ieviest un tas darbojas labi. Tas ir tāpēc, ka OISC var aprēķināt visu, ko "īsts" dators var aprēķināt tikai ar instrukciju subleq. Bet, protams, ir daudz kompromisu, piemēram, koda garums un ātrums. Tomēr tas ir lielisks veids, kā mācīties un eksperimentēt ar zema līmeņa programmatūru un datoriem.

Šim solim pievienots arī zip arhīvs "kim_uno_tools.zip". Tajā ir daži pamata montieri un simulators KIM Uno. Tie ir rakstīti NodeJS - pārliecinieties, vai esat to instalējis.

Programmu salikšana

Ja paskatīsities uz "fibonacci/fibonacci.s", jūs atradīsit, ka tas ir apspriestās fibonači ieviešanas avota kods. Lai to saliktu un no tā izveidotu programmu, ko var palaist KIM Uno, ievadiet šādu komandu (iegūtā arhīva "kim_uno_tools.zip" saknē):

mezgls montēt.js fibonači/fibonači.s

un tas vai nu izdrukās kļūdu, ja esat pieļāvis kļūdu, vai izšļakstīs iegūto programmu. Lai to saglabātu, varat kopēt izvadi un saglabāt to failā vai vienkārši palaist šo komandu:

mezgls montēt.js fibonači/fibonači.s> jūsu fails.h

Izeja ir formatēta tā, lai to varētu tieši iekļaut KIM Uno programmaparatūrā kā C galvenes failu, bet simulators to var izmantot arī simulēšanai. Vienkārši ievadiet:

mezgls sim.js jūsu fails.h

Un displejā tiks parādīts simulācijas rezultāts un no KIM Uno sagaidāmais rezultāts.

Šis bija ļoti īss ievads par šiem rīkiem; Es iesaku jums ar viņiem spēlēties un paskatīties, kā viņi strādā. Tādā veidā jūs iegūsit dziļas zināšanas un uzzināsit CPU, instrukciju, montētāju un emulatoru darbības principus;-)

13. darbība. Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Apsveicam

Ja jūs to izlasījāt, jūs, iespējams, izlasījāt visu šo pamācību un izveidojāt savu KIM Uno. Tas ir patiešām jauki.

Bet ceļojums nebeidzas šeit - ir bezgalīgi daudz iespēju, kā jūs varētu mainīt KIM Uno un pielāgot to savām vajadzībām un vēlmēm.

Piemēram, KIM Uno varētu būt aprīkots ar “īstu” retro CPU emulatoru, kas varētu līdzināties slavenajam MOS 6502 vai Intel 8085, 8086 vai 8088. Tad tas ļautu sasniegt manu sākotnējo redzējumu, pirms es uzzināju par OISC.

Bet ir arī citi izmantošanas veidi, jo aparatūras dizains ir diezgan vispārīgs. KIM Uno varētu izmantot kā…

  • … Tālvadības pults, piem. CNC vai citām ierīcēm. Varbūt vadu vai aprīkots ar IR diode vai jebkuru citu bezvadu sūtītāju
  • … (Heksadecimāls) kabatas kalkulators. Programmatūru var ļoti viegli pielāgot, un tā dēļa dizains nav īpaši jāmaina. Varbūt sietspiedi var pielāgot matemātiskām darbībām un noņemt plaisu starp segmentiem. Bez tam tā jau ir gatava šai pārveidošanai

Es ceru, ka jums bija tikpat jautri sekot un cerams veidot KIM Uno, kā man bija to projektējot un plānojot. Un, ja jūs to pagarināt vai mainīt - lūdzu, dariet man to zināmu. Priekā!

PCB konkurss
PCB konkurss
PCB konkurss
PCB konkurss

Otrā vieta PCB konkursā

Ieteicams: