Turinys:

„KIM Uno“- 5 € mikroprocesorinis „Dev Kit“emuliatorius: 13 žingsnių (su nuotraukomis)
„KIM Uno“- 5 € mikroprocesorinis „Dev Kit“emuliatorius: 13 žingsnių (su nuotraukomis)

Video: „KIM Uno“- 5 € mikroprocesorinis „Dev Kit“emuliatorius: 13 žingsnių (su nuotraukomis)

Video: „KIM Uno“- 5 € mikroprocesorinis „Dev Kit“emuliatorius: 13 žingsnių (su nuotraukomis)
Video: 24 HORAS CON UÑAS EXTREMADAMENTE LARGAS / Kimberly Loaiza 2024, Birželis
Anonim
Image
Image
„KIM Uno“- 5 € mikroprocesoriaus „Dev Kit“emuliatorius
„KIM Uno“- 5 € mikroprocesoriaus „Dev Kit“emuliatorius
„KIM Uno“- 5 € mikroprocesoriaus „Dev Kit“emuliatorius
„KIM Uno“- 5 € mikroprocesoriaus „Dev Kit“emuliatorius

„KIM Uno“yra nešiojamas programinės įrangos apibrėžtas (retro) mikroprocesorių kūrėjų rinkinys. Bet leiskite man pristatyti jos idėją grįžtant laiku:

Dar 2018-ųjų pabaigoje man kilo mintis, kad norėjau sukurti nedidelį nešiojamą mikroprocesorių kūrimo komplektą, kaip ir garsusis KIM-1 iš „MOS Technology, Inc.“, kurį sukūrė Chuckas Peddle'as, kuris taip pat dalyvavo kuriant 6502 procesorių.

Tačiau sukurti „pliko kaulo“kūrėjų rinkinį su atskirais loginiais komponentais nebuvo jokio pasirinkimo, nes jam reikėjo didelio maitinimo šaltinio (nes tie senoviniai įrenginiai paprastai ima rimtą srovę), o kūrimas užtruktų labai daug laiko. Ir aš to noriu dabar!

Todėl aš sukūriau „KIM Uno“kaip nešiojamą prietaisą, kuris telpa vienoje rankoje ir maitinamas dviem CR2032 baterijomis. Jis naudoja ATMega328p („Arduino“) mikrovaldiklį, veikiantį 8 MHz dažniu, kad imituotų (arba imituotų) norimą procesorių. Ši architektūra taip pat užtikrina, kad emuliuoti procesoriai yra keičiami į viską, kas telpa į mikrovaldiklio „flash“atmintį. Taigi tai yra universalus prietaisas.

Atsitiktinumo dėka vėliau „YouTube“žiūrėjau tikrai gerą pokalbį - „The Ultimate Apollo Guidance Computer Talk“(34C3) - „One Instruction Set Computers“arba OISC. Aš apie juos nežinojau ir radau tai kaip puikų kandidatą tai įgyvendinti.

„KIM Uno“imituoja procesorių tik su viena instrukcija: subleq - atimti ir atšakoti, jei mažesnis arba lygus nuliui.

Jei sekate kartu su manimi per šią instrukciją, galite greitai sukurti savo „KIM Uno“. Ir geriausia dalis - be to, kad galite ją pakeisti pagal savo skonį - yra tai, kad jo pagaminimas kainuoja tik 4,75 € (2018 m. Pabaigoje).

Viena užuomina: yra „Git“saugykla, kurioje yra visi failai, pateikti naudojant skirtingus šios instrukcijos veiksmus. Jei norite pakeisti kai kuriuos išteklius ir pasidalyti jais su mumis, galite padaryti PR. Bet jūs taip pat galite atsisiųsti visus failus vienu metu. Tiesiog apsilankykite https://github.com/maxstrauch/kim-uno. Dėkoju!

Yra dar vienas gana įdomus projektas, vadinamas tuo pačiu (KIM Uno), kuris daro tikrą 6502 KIM Uno kopiją. Patikrinkite čia. Kūrėjas netgi parduoda rinkinį. Taigi, jei jus domina 6502 ir jums patinka šis projektas, turėtumėte ten pasižiūrėti!

1 žingsnis: PCB tiekimas

PCB tiekimas
PCB tiekimas
PCB tiekimas
PCB tiekimas

Kaip matote, aš pasinaudojau galimybe sukurti PCB ir leisti tai padaryti profesionaliai. Kadangi jo gamyba iš išorės ir pristatymas jums užtruks daug laiko (priklausomai nuo to, kur esate pasaulyje;-)), užsakymas yra pirmas žingsnis. Tada galime tęsti kitus veiksmus, kol PCB bus pagamintas ir pristatytas jums.

Aš užsisakiau savo PCB Kinijoje „PCBWay“tik už 5 USD. Aš negaunu jokios naudos, jei pristatysiu „PCBWay“kaip savo „PCB“gamintoją, tiesiog jis man puikiai veikė ir gali būti naudingas ir jums. Bet jūs galite juos užsisakyti bet kurioje kitoje vietoje, pavyzdžiui, JLCPCB, OSH parke ar bet kurioje vietinėje PCB įmonėje.

Bet jei norite juos užsisakyti „PCBWay“, galite atsisiųsti pridėtą ZIP failą „kim-uno-rev1_2018-12-12_gerbers.zip“ir įkelti jį tiesiai į „PCBWay“be jokių pakeitimų. Tai yra originalus failas, kurį naudoju užsakydamas PCB, kurias galite pamatyti paveikslėliuose.

Jei užsakote juos iš kito gamintojo, gali tekti juos iš naujo eksportuoti iš originalių „KiCad“šaltinių, nes juos sukūriau pagal specifikacijas iš „PCBWay“, kurias galite rasti čia. Norėdami gauti originalius „KiCad“šaltinius, atsisiųskite „kim-uno-kicad-sources.zip“ir ištraukite.

Tačiau yra net antras būdas: jei nenorite užsisakyti PCB, galite sukurti savo versiją naudodami „perfboard“ar net „breadboard“.

Bet kokiu atveju: kadangi PCB jau pakeliui, galime sutelkti dėmesį į kitas dalis! Ateik, sek paskui mane.

2 žingsnis: sudedamųjų dalių tiekimas

Komponentų pirkimas
Komponentų pirkimas
Komponentų pirkimas
Komponentų pirkimas
Komponentų pirkimas
Komponentų pirkimas

Dabar jums reikia gauti komponentus. Norėdami tai padaryti, rasite visų jums reikalingų komponentų ir kiekių apžvalgą, pridėtą prie šio žingsnio, taip pat BOM (medžiagų sąrašą).

BOM yra nuorodų į „eBay“. Nors šie pasiūlymai gali būti uždaryti, kai perskaitysite šį tekstą, galite jį naudoti kaip atspirties tašką. Naudojami komponentai yra gana standartiniai.

Toliau paaiškinsiu jums visus reikalingus komponentus:

  • 7x 1 kΩ rezistoriai septynių segmentų ekranams. Galite sumažinti vertę (pvz., Iki 470 Ω), kad jos šviestų ryškiau, tačiau per daug nesumažinkite, kitaip šviesos diodai miršta arba baterija išsikrauna labai greitai. Radau, kad ši vertė man tinka
  • 1x 10 kΩ kaip ištraukiamas rezistorius mikrovaldiklio RESET linijai
  • 1x 100nF kondensatorius, skirtas išlyginti bet kokius įtampos šuolius (tai neturėtų atsitikti, nes mes naudojame baterijas, tiesa, bet gerai …)
  • 1x ATMega328P DIP-28 pakuotėje (paprastai vadinama ATMega328P-PU)
  • 1x pagrindinis PCB - žr. Ankstesnį žingsnį; arba užsisakėte, arba pastatėte patys
  • 2x CR2032 baterijų laikikliai
  • 1x SPDT (vieno poliaus, dvigubo metimo) jungiklis, kuris iš esmės turi tris kontaktus ir kiekvienoje iš dviejų būsenų (įjungtas arba išjungtas) jungia du kontaktus
  • 20 kartų liečiami klaviatūros mygtukai. Norėdami naudoti galinę PCB pusę, naudoju jutiklinius SMD mygtukus (standartinius 6x6x6 mm) - juos gana lengva lituoti, kaip matysite
  • PASIRENKAMA: 1x 1x6 kontaktų antraštė programuotojui prijungti, tačiau tai neprivaloma, kaip pamatysite vėliau
  • 1x septynių segmentų ekranas su 4 skaitmenimis ir 1x septynių segmentų ekranas su 2 skaitmenimis - plokštėje bus tik 0,36 colio (9,14 mm) elementai su įprasta anodo jungtimi. Abu reikalavimai yra svarbūs norint gauti veikiantį vienetą. Tačiau tokio tipo septynių segmentų ekranai yra labai paplitę

Prie šio veiksmo galite rasti failą „komponent-datasheets.zip“, kuriame yra tikslesnė informacija apie naudojamų komponentų matmenis ir tipus. Tačiau dauguma komponentų yra labai standartiniai ir juos galima lengvai įsigyti už nedidelius pinigus.

Dabar reikia palaukti, kol visi komponentai bus paruošti tęsti litavimą. Per šį laiką, jei norite, jau galite pereiti prie pabaigos ir šiek tiek pasiskaityti apie „KIM Uno“naudojimą.

3 žingsnis: litavimo įrankio apžvalga

Litavimo įrankių apžvalga
Litavimo įrankių apžvalga
Litavimo įrankių apžvalga
Litavimo įrankių apžvalga

Lituoti ir statyti „KIM Uno“jums reikia įrankių, parodytų paveikslėliuose:

  • Vielos pjaustytuvas (norint nupjauti komponentų laidų galą)
  • Plokščios replės
  • Pincetų pora
  • (padorus) Lydmetalis, kuris nėra per storas - aš naudoju 0,56 mm lydmetalį
  • Lituoklis - jums nereikia aukščiausios klasės lituoklio (nes mes čia taip pat neužsiimame raketų mokslu) - aš jau seniai naudoju „Ersa FineTip 260“ir jis tikrai geras
  • Srauto rašiklis: pridedant srauto prie komponentų ir pagalvėlių, daug lengviau juos lituoti, nes lydmetalis pats „teka“į reikiamą vietą*
  • Pasirinktinai: kempinė (iš metalinės vatos) jūsų lituokliui

Norėdami vėliau programuoti „KIM Uno“, jums taip pat reikės:

  • kompiuterį su AVR-GCC įrankių grandine ir avrdude įkelti programinę-aparatinę įrangą
  • ISP (programuotojas) - kaip matote paveikslėlyje, aš naudoju savo „Arduino Uno“kaip IPT su specialiu eskizu - todėl nereikia pirkti jokios išgalvotos aparatūros

* reikia tam tikrų žmonių nurodymų;-)

Ar tu pasiruošęs? Kitame žingsnyje mes pradėsime surinkti „KIM Uno“.

4 žingsnis: litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas

Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas
Litavimas Nr. 1: rezistorių ir kondensatorių pridėjimas

Visada pirmiausia turėtumėte dirbti nuo mažiausių (pagal komponentų aukštį) komponentų iki paskutinių. Todėl mes pradedame pridedant rezistorius ir lenkdami kojas gale, kad rezistoriai būtų lengvai lituoti ir liktų vietoje. Po to nukirpkite ilgus laidus.

Be to, nerodoma paveikslėliuose, taip pat pridėkite mažą 100 nF kondensatorių.

Vienas patarimas: laikykite tas vielines kojas mažame inde, kartais jos praverčia.

5 žingsnis: litavimas Nr. 2: klaviatūros surinkimas

Litavimas Nr. 2: klaviatūros surinkimas
Litavimas Nr. 2: klaviatūros surinkimas
Litavimas Nr. 2: klaviatūros surinkimas
Litavimas Nr. 2: klaviatūros surinkimas
Litavimas Nr. 2: klaviatūros surinkimas
Litavimas Nr. 2: klaviatūros surinkimas

Kitas žingsnis yra lituoti 20 SMD lytėjimo jungiklių. Kadangi šis darbas yra šiek tiek keblus, mes tai darome dabar, kai PCB yra ant darbo stalo.

Mes dirbsime iš viršaus į apačią (arba iš kairės į dešinę, jei PCB yra orientuota taip, kaip parodyta nuotraukose) ir pradėsime nuo pirmos eilės: kiekvienam jungikliui pasirinkite vieną iš keturių trinkelių ir sudrėkinkite jį rašikliu.

Tada naudokite pincetą, kad patrauktumėte jungiklį ir atsargiai padėkite jį ant keturių pagalvėlių. Tada lituokite tik jungiklio kojelę, esančią ant jūsų pasirinktos ir su srautu paruoštos trinkelės. Norėdami tai padaryti, prieš pradėdami geležį „paimkite“lydmetalį. Naudodami šį metodą, užpildykite visą jungiklių eilę, lituodami tik vieną koją.

Vaizdas su rodyklėmis rodo padidinimą, kaip tiksliai buvo atliktas litavimas.

Lituodami visą eilę (tik vieną kaištį), galite šiek tiek pakoreguoti, kaitindami kaištį atgal ir pakeisdami jungiklio padėtį. Įsitikinkite, kad jungikliai yra kuo geriau sulygiuoti.

Jei esate patenkinti lygiavimu, galite sudrėkinti visus kitus kaiščius flux rašikliu ir tada lituoti, paliesdami jį lituokliu ir pridedant šiek tiek lituoklio. Pamatysite, kad lydmetalis įsiurbiamas tiesiai ant trinkelės.

Lituodami maždaug eilę pastebėsite, kad įsisąmoninsite ir tai nėra taip sunku, bet kartojasi. Taigi tiesiog atlikite visa kita ir akimirksniu turėsite užbaigtą klaviatūrą.

6 žingsnis: litavimas Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė

Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė
Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė
Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė
Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė
Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė
Lituoklis Nr. 3: septynių segmentų ekranas, jungiklis ir kaiščio antraštė

Dabar galite pridėti jungiklį ir kaiščio antraštę (neprivaloma), laikydami pirštu ir lituodami vieną kaištį, kad laikytumėte prie PCB, kad galėtumėte lituoti kitus kaiščius ir galiausiai paliesti pradinį laikymo kaištį.

Būkite atsargūs, kad nesudegtumėte karštu lituokliu. Jei jums tai nepatinka, komponentui laikyti galite naudoti šiek tiek juostos (pvz., Tapytojo juostos). Tokiu būdu abi rankos gali laisvai judėti.

Septynių segmentų ekranai yra lituojami taip pat (žr. Paveikslėlį): įdedate, laikote ranka ar juostele ir lituosite du priešingus kaiščius, kad laikytumėte vietoje, o lituokite kitus kaiščius.

Tačiau būkite atsargūs ir nukreipkite septynių segmentų ekraną teisinga kryptimi (dešimtainiai taškai nukreipti į klaviatūrą). Kitaip tau bėda…

7 žingsnis: litavimas Nr. 4: mikrovaldiklio litavimas

Litavimas #4: Mikrokontrolerio litavimas
Litavimas #4: Mikrokontrolerio litavimas

Dabar, kai turite daug praktikos, galite eiti į priekį ir įdėti mikrovaldiklį taip, kad įpjova viršuje (arba pirmasis kaištis) būtų nukreipta į jungiklį. Naudodami plokščias reples, galite atsargiai šiek tiek sulenkti mikrovaldiklio kojas, kad jos atitiktų PCB skyles.

Kadangi jis tvirtai priglunda, jums reikia šiek tiek valdomos jėgos, kad galėtumėte įdėti mikrovaldiklį. Privalumas yra tai, kad jis nenukrenta. Tai reiškia, kad galite neskubėti ir lituoti jį iš galo.

8 žingsnis: litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)

Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)
Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)
Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)
Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)
Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)
Litavimas Nr. 5: pridėkite baterijų laikiklius (paskutinis žingsnis)

Galiausiai turite pridėti baterijų laikiklius prie nugaros. Norėdami tai padaryti, tiesiog naudokite rašiklį ir sudrėkinkite visas keturias pagalvėles, o po to ant lygintuvo uždėkite lydmetalio. Atsargiai sulygiuokite akumuliatoriaus laikiklį ant abiejų pagalvėlių. Abiejuose kontaktų galuose turėtų būti matomas tas pats PCB kilimėlio kiekis. Lygintuvu palieskite PCB kilimėlį ir akumuliatoriaus laikiklio koją. Lituoklis tekės po trinkelėmis ir virš jo ir pritvirtins savo vietą, kaip parodyta paveikslėlyje. Jei dėl to kyla problemų, rašikliu galite pridėti daugiau srauto.

9 veiksmas: mirksi emuliatorius

Mirksi emuliatorius
Mirksi emuliatorius
Mirksi emuliatorius
Mirksi emuliatorius
Mirksi emuliatorius
Mirksi emuliatorius

Pridėtame ZIP archyve „kim-uno-firmware.zip“galite rasti emuliatoriaus šaltinio kodą kartu su jau surinktu „main.hex“, kurį galite tiesiogiai įkelti į mikrovaldiklį.

Kad galėtumėte iš tikrųjų jį naudoti, turite nustatyti mikrovaldiklio saugiklių bitus, kad jis naudotų vidinį 8 MHz laikrodį, nedalijant jo per pusę. Darbą galite atlikti naudodami šią komandą:

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

Jei nežinote avrdude: tai programa, skirta programoms įkelti į mikrovaldiklį. Daugiau apie tai galite sužinoti čia. Iš esmės jūs jį įdiegsite ir tada jis bus paruoštas naudoti. Norėdami atlikti sąranką, gali tekti pakeisti „-P“argumentą į kitą nuoseklųjį prievadą. Patikrinkite savo kompiuteryje, kuris nuoseklusis prievadas naudojamas (pvz., „Arduino IDE“viduje).

Po to galite atnaujinti programinę -aparatinę įrangą į mikrovaldiklį naudodami šią komandą:

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

Dar kartą: tas pats pasakytina apie „-P“, kaip nurodyta aukščiau.

Kadangi neturiu „profesionalaus“IPT (programuotojo sistemoje), visada naudoju savo „Arduino UNO“(žr. Paveikslėlį) ir pridėtą eskizą („arduino-isp.ino“, iš Randall Bohn). Žinau, kad yra naujesnė versija, tačiau su šia versija per pastaruosius penkerius metus neturėjau jokių problemų, todėl ją pasilieku. Tai tiesiog veikia. Naudodamiesi eskizo antraštėje esančiu komentaru, gausite „Arduino UNO“kontaktą, o naudodami „KIM Uno“schemą (žr. Pridedamą), „KIM Uno“galite gauti 1x6 IPT antraštės kontaktą. Kvadratinis kaištis, esantis šalia septynių segmentų ekrano, yra 1 kaištis (GND). Šie kaiščiai yra (teisinga tvarka): RESET, MOSI, MISO, SCK, VCC. VCC galite prijungti prie 3V3 arba 5V.

Jei nepridėjote 1x6 kaiščio antraštės, galite naudoti duonos plokštės laidus ir įdėti juos į jungčių angas ir pakreipti pirštu - kaip parodyta paveikslėlyje. Tai suteikia pakankamai kontaktų, kad būtų galima įjungti programinę įrangą ir nustatyti saugiklius. Bet jei jums patinka pastovesnė sąranka, tikrai turėtumėte pridėti 1x6 kaiščių antraštes.

Turiu du įrenginius: gamybinę versiją be kaiščių antraščių ir kūrimo versiją su kaiščių antraštėmis, kurias palieku prijungtas ir vėl ir vėl naudoju kūrimo metu. Tai daug patogiau.

10 veiksmas: baigta

Baigta
Baigta
Baigta
Baigta

Dabar baigėte ir galite pradėti rašyti savo „subbleq“programas ant popieriaus, surinkti ir įvesti į atmintį.

„KIM Uno“yra iš anksto užprogramuotas „Fibonacci“skaičiavimas, pradedant atminties vieta 0x0a. Pagal numatytuosius nustatymus jis nustatytas į n = 6, todėl turėtų būti 8 reikšmė. Paspauskite „Go“, kad pradėtumėte skaičiavimą.

11 veiksmas: PCB dizaino analizė

PCB dizaino analizė
PCB dizaino analizė
PCB dizaino analizė
PCB dizaino analizė

Baigęs šį projektą radau keletą svarbių punktų, į kuriuos reikėtų atsižvelgti naujai peržiūrėjus lentą:

  • „ATMega328p“šilkografijoje nėra įprasto įpjovos, kurioje yra pirmasis kaištis. DIP-28 pėdsakas net neturi kvadratinės trinkelės, kurioje yra pirmasis kaištis. Tai tikrai turėtų būti patobulinta naudojant išsamesnį šilkografiją, kad būtų išvengta painiavos
  • ISP antraštėje nėra jungčių etikečių ant šilkografijos. Dėl to sunku atpažinti, kaip jį prijungti prie IPT
  • IPT antraštę galima pakeisti į 2x6 kontaktų antraštę su standartiniu kaiščių išdėstymu, kad būtų išvengta painiavos

Be šių punktų, esu labai laimingas, kaip viskas pavyko ir pavyko pirmą kartą.

12 veiksmas: kaip užprogramuoti SUBLEQ?

Image
Image
Kaip užprogramuoti SUBLEQ?
Kaip užprogramuoti SUBLEQ?
Kaip užprogramuoti SUBLEQ?
Kaip užprogramuoti SUBLEQ?

Kaip minėta pradžioje, dabartinė „KIM Uno“programinė įranga imituoja vieno instrukcijų rinkinio kompiuterį (OISC) ir pateikia subleq instrukciją skaičiavimui atlikti.

Instrukcija subleq reiškia atimtį ir šaką, jei ji yra mažesnė arba lygi nuliui. Pseudokode tai atrodo taip:

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

Kadangi „KIM Uno“imituoja 8 bitų mašiną, visi argumentai A, B ir C yra 8 bitų vertės, todėl jie gali skirti bendrą 256 baitų pagrindinę atmintį. Akivaizdu, kad tai galima išplėsti, sukuriant A, B ir C kelių baitų reikšmes. Bet kol kas laikykimės paprasto.

„KIM Uno“taip pat turi „periferinius įrenginius“: ekraną ir klaviatūrą. Šiems periferiniams įrenginiams sąsaja naudojama su atmintimi susieta architektūra, nors atminties žemėlapis yra labai paprastas:

  • 0x00 = Z registras (nulis) ir turėtų būti laikomas nuliu.
  • 0x01 - 0x06 = šeši baitai, rodantys kiekvieno ekrano segmento vertę (iš dešinės į kairę). Reikšmė 0xf - daugiau informacijos rasite šaltinio kode (main.c).
  • 0x07, 0x08, 0x09 = trys baitai, kur kiekvienas baitas reiškia du septynis segmentus (iš dešinės į kairę). Šios atminties vietos leidžia paprasčiausiai parodyti rezultatą, neskaidant rezultato į dvi smulkmenas ir įdėti jį į vieno skaitmens atminties vietas 0x01 - 0x06.
  • 0x0a+ = Programa prasideda nuo 0x0a. Šiuo metu klavišas „Eiti“vykdomas iš fiksuoto 0x0a.

Turėdami šią informaciją, dabar galite parašyti programą surinkime ir įvesti instrukcijas į atmintį ir tada ją vykdyti. Kadangi yra tik viena instrukcija, įvedami tik argumentai (A, B ir C). Taigi po trijų atminties vietų prasideda kiti nurodymų argumentai ir pan.

Prie šio veiksmo pridedamas failas „fibonacci.s“, taip pat ranka rašytos programos, kuri yra „Fibonacci“diegimo pavyzdys, vaizdas. Bet palaukite: naudojamos trys instrukcijos - konkrečiai ADD, MOV ir HLT - kurios nėra subq. "Koks sandoris? Ar nesakėte, kad yra tik vienas nurodymas, subleq?" tu klausi? Tai labai paprasta: subleq galima labai lengvai pamėgdžioti tas instrukcijas:

MOV a, b - kopijuoti duomenis vietoje a į b gali sudaryti:

  1. subleq b, b, 2 (kita instrukcija)
  2. subleq a, Z, 3 (kita instrukcija)
  3. subleq Z, b, 4 (kita instrukcija)
  4. subleq Z, Z, pvz. 5 (kita instrukcija)

Naudojant subleq atimties funkciją, kuri atlieka mem - mem [a] ir perrašo mem su rezultatu, vertė nukopijuojama naudojant nulinį registrą. Ir „subleq Z, Z,…“tiesiog atkuria nulinį registrą į 0, nepriklausomai nuo Z vertės.

PRIDĖTI a, b - prideda vertes a + b ir saugo sumą b, kurią gali sudaryti:

  1. subleq a, Z, 2 (kita instrukcija)
  2. subleq Z, b, 3 (kita instrukcija)
  3. subleq Z, Z, pvz. 4 (kita instrukcija)

Ši instrukcija tiesiog apskaičiuoja mem - (- mem [a]), kuris yra mem + mem [a], taip pat naudojant atimties funkciją.

HLT - sustabdo procesorių ir baigia vykdymą:

Pagal apibrėžimą emuliatorius žino, kad procesorius nori nutraukti, jei jis šoktels iki 0xff (arba -1, jei įjungtas). Taigi paprastas

subleq Z, Z, -1

atlieka darbą ir nurodo emuliatoriui, kad jis turėtų baigti emuliaciją.

Naudojant šias tris paprastas instrukcijas, galima įgyvendinti Fibonačio algoritmą ir jis veikia gerai. Taip yra todėl, kad OISC gali apskaičiuoti viską, ką „tikras“kompiuteris gali apskaičiuoti naudodamas tik instrukciją subleq. Bet, žinoma, yra daug kompromisų - pavyzdžiui, kodo ilgis ir greitis. Tačiau nepaisant to, tai puikus būdas mokytis ir eksperimentuoti su žemo lygio programine įranga ir kompiuteriais.

Prie šio veiksmo taip pat galite rasti archyvą „kim_uno_tools.zip“. Jame yra keletas pagrindinių „KIM Uno“surinkėjų ir simuliatorių. Jie parašyti „NodeJS“- įsitikinkite, kad jį įdiegėte.

Programų surinkimas

Jei pažvelgsite į „fibonacci/fibonacci.s“, pamatysite, kad tai yra aptariamo fibonacci diegimo šaltinis. Norėdami surinkti ir sukurti programą, kurią galėtų paleisti „KIM Uno“, įveskite šią komandą (ištraukto „kim_uno_tools.zip“archyvo šaknyje):

mazgas surinkti.js fibonacci/fibonacci.s

ir ji arba atspausdins klaidą, jei padarysite klaidą, arba išspausdins gautą programą. Norėdami jį išsaugoti, galite nukopijuoti išvestį ir išsaugoti ją faile arba tiesiog paleisti šią komandą:

mazgas surinkti.js fibonacci/fibonacci.s> jūsų failas.h

Išvestis suformatuota taip, kad ją būtų galima tiesiogiai įtraukti į „KIM Uno“programinę įrangą kaip C antraštės failą, tačiau simuliatorius taip pat gali ją naudoti imituoti. Tiesiog įveskite:

mazgas sim.js yourfile.h

Ekrane jums bus pateiktas modeliavimo rezultatas ir išvestis, kurios tikimasi iš „KIM Uno“.

Tai buvo labai trumpas įvadas į šias priemones; Rekomenduoju pažaisti su jais ir pažiūrėti, kaip jie veikia. Taip įgysite gilių žinių ir sužinosite apie procesorių, instrukcijų, surinkėjų ir emuliatorių veikimo principus;-)

13 žingsnis: „Outlook“

„Outlook“
„Outlook“
„Outlook“
„Outlook“
„Outlook“
„Outlook“

Sveikinu

Jei perskaitysite tai, tikriausiai peržiūrėjote visą šią instrukciją ir sukūrėte savo „KIM Uno“. Tai tikrai malonu.

Tačiau kelionė čia nesibaigia - yra begalė galimybių, kaip galėtumėte pakeisti „KIM Uno“ir pritaikyti ją pagal savo poreikius ir skonį.

Pavyzdžiui, „KIM Uno“gali būti aprūpintas „tikru“retro procesoriaus emuliatoriumi, galinčiu imituoti garsųjį MOS 6502 arba „Intel 8085“, „8086“arba „8088.“. Tada jis pereis prie mano pradinės vizijos, kol dar nesužinosiu apie OISC.

Tačiau yra ir kitų naudojimo būdų, nes aparatūros dizainas yra gana bendras. „KIM Uno“gali būti naudojamas kaip…

  • … Nuotolinio valdymo pultas, pvz. CNC ar kitiems prietaisams. Galbūt laidinis arba su IR diodu ar bet kokiu kitu belaidžiu siųstuvu
  • … (Šešioliktainis) kišeninis skaičiuotuvas. Programinę -aparatinę įrangą galima labai lengvai pritaikyti, o plokštės dizaino labai keisti nereikia. Galbūt šilkografiją galima pritaikyti matematinėms operacijoms ir pašalinti tarpą tarp segmentų. Be to, ji jau yra pasirengusi šiai pertvarkai

Tikiuosi, jums sekėsi taip pat smagiai sekti ir, tikiuosi, kurti „KIM Uno“, kaip ir aš jį kurdamas ir planuodamas. O jei pratęsite ar pakeisite - praneškite man. Sveikinimai!

PCB konkursas
PCB konkursas
PCB konkursas
PCB konkursas

Antroji vieta PCB konkurse

Rekomenduojamas: