Sadržaj:

KIM Uno - emulator razvojnog kompleta za mikroprocesor od 5 €: 13 koraka (sa slikama)
KIM Uno - emulator razvojnog kompleta za mikroprocesor od 5 €: 13 koraka (sa slikama)

Video: KIM Uno - emulator razvojnog kompleta za mikroprocesor od 5 €: 13 koraka (sa slikama)

Video: KIM Uno - emulator razvojnog kompleta za mikroprocesor od 5 €: 13 koraka (sa slikama)
Video: Обзор на дерьмо, которое не стоит покупать в Steam ► Игрошляпа 2 2024, Jun
Anonim
Image
Image
KIM Uno - mikroprocesorski Dem Kit emulator od 5 €
KIM Uno - mikroprocesorski Dem Kit emulator od 5 €
KIM Uno - mikroprocesorski Dem Kit emulator od 5 €
KIM Uno - mikroprocesorski Dem Kit emulator od 5 €

KIM Uno je prijenosni, softverski definirani komplet za razvoj (retro) mikroprocesora. No, dopustite mi da predstavim ideju toga vraćanjem u prošlost:

Krajem 2018. palo mi je na pamet da sam htio izgraditi mali prijenosni komplet za razvoj mikroprocesora, baš poput čuvenog KIM-1 iz MOS Technology, Inc., a dizajnirao ga je Chuck Peddle koji je također sudjelovao u stvaranju 6502 CPU-a.

Ali izgradnja kompleta za razvoj "golih kostiju" s diskretnim logičkim komponentama nije bila opcija jer je bilo potrebno veliko napajanje (budući da ti drevni uređaji imaju tendenciju da uzimaju ozbiljnu struju), a razvoj bi također bio jako intenzivan. I želim to sada!

Stoga sam KIM Uno dizajnirao kao prijenosni uređaj koji stane u jednu ruku i napaja se s dvije baterije CR2032. Koristi mikrokontroler ATMega328p ("Arduino") na 8 MHz za emulaciju (ili simulaciju) željenog CPU -a. Ova arhitektura takođe osigurava da su emulirani CPU -i zamjenjivi za sve što se uklapa u fleš memoriju mikrokontrolera. Dakle, radi se o višenamjenskom uređaju.

Sticajem okolnosti kasnije sam gledao zaista dobar govor - nazvan The Ultimate Apollo Guidance Computer Talk (34C3) - na YouTubeu gdje se spominju "One Instruction Set Computers" ili OISC. Nisam znao za njih i smatrao sam ovo savršenim kandidatom za njegovu provedbu.

KIM Uno emulira CPU sa samo jednom instrukcijom: subleq - oduzima i grana ako je manja ili jednaka nuli.

Ako pratite mene zajedno kroz ovaj Instructable, možete izgraditi vlastiti KIM Uno u kratkom vremenu. A najbolji dio - osim činjenice da ga možete izmijeniti po svom ukusu - je to što izrada košta samo 4,75 € (do kraja 2018. godine).

Jedan savjet: postoji Git spremište koje sadrži sve datoteke koje pružaju različiti koraci ovog uputstva. U slučaju da želite izmijeniti neke resurse i podijeliti ih s nama, možete napraviti PR. Ali tamo možete preuzeti i sve datoteke odjednom. Jednostavno do https://github.com/maxstrauch/kim-uno. Hvala!

Postoji još jedan prilično zanimljiv projekt, nazvan isti (KIM Uno), koji pravi kopiju 6502 KIM Uno. Provjerite ovdje. Kreator čak prodaje i komplet. Dakle, ako vas zanima 6502 i sviđa vam se ovaj projekt, trebali biste pogledati tamo!

Korak 1: Nabavite PCB

Nabava PCB -a
Nabava PCB -a
Nabava PCB -a
Nabava PCB -a

Kao što vidite, iskoristio sam priliku da dizajniram PCB i pustim ga da bude profesionalno izrađen. Budući da ga proizvodite izvana i dostavljate, trebat će vam puno vremena (ovisno o tome gdje se nalazite u svijetu;-)), naručivanje je prvi korak. Zatim možemo nastaviti s ostalim koracima dok se PCB napravi i pošalje vama.

Naručio sam svoje štampane ploče u Kini na PCBWay -u za samo 5 USD. Ne vidim nikakvu korist od predstavljanja PCBWay -a kao svog goto proizvođača za PCB -e, samo što je meni dobro radio, a mogao bi i vama. Ali možete ih naručiti na bilo kojem drugom mjestu poput JLCPCB -a, OSH Parka ili bilo koje druge kompanije za izdavanje PCB -a.

Ali ako ste voljni naručiti ih na PCBWay-u, možete preuzeti priloženu ZIP datoteku "kim-uno-rev1_2018-12-12_gerbers.zip" i postaviti je direktno na PCBWay bez ikakvih promjena. Ovo je originalna datoteka koju sam koristio za naručivanje PCB -a koje možete vidjeti na slikama.

Ako ih naručujete od drugog proizvođača, možda ćete ih morati ponovno eksportirati iz izvornih KiCad izvora, jer sam ih generirao sa specifikacijama iz PCBWay-a koje možete pronaći ovdje. Za izvorne KiCad izvore, preuzmite "kim-uno-kicad-sources.zip" i izdvojite ga.

No postoji čak i drugi način: ako ne želite naručiti tiskanu ploču, možete izgraditi vlastitu verziju koristeći perfboard ili čak matičnu ploču.

U svakom slučaju: budući da su PCB -ovi na putu, možemo se usredotočiti na ostale dijelove! Hajde, prati me.

Korak 2: Nabavljanje komponenti

Nabavljanje komponenti
Nabavljanje komponenti
Nabavljanje komponenti
Nabavljanje komponenti
Nabavljanje komponenti
Nabavljanje komponenti

Sada morate nabaviti komponente. Za ovo ćete pronaći preglednu sliku svih komponenti i količina koje su vam potrebne, priložene uz ovaj korak, kao i BOM (materijal).

BOM sadrži veze do eBay -a. Iako bi te ponude mogle biti zatvorene kada ovo pročitate, možete ih koristiti kao polazište. Korištene komponente su prilično standardne.

U nastavku ću vam objasniti sve potrebne komponente:

  • 7x 1 kΩ otpornici za sedam segmentnih ekrana. Možete smanjiti vrijednost (na primjer na 470 Ω) kako bi zasjajali jače, ali je nemojte previše smanjivati jer će u suprotnom LED diode ugasiti ili će se baterija vrlo brzo isprazniti. Otkrio sam da mi ta vrijednost odgovara
  • 1x 10 kΩ kao pull-up otpornik za RESET liniju mikrokontrolera
  • 1x 100nF kondenzator za ublažavanje bilo kakvih skokova napona (što se ne bi trebalo dogoditi jer koristimo baterije, zar ne, ali za dobru mjeru …)
  • 1x ATMega328P u paketu DIP-28 (obično se naziva ATMega328P-PU)
  • 1x glavna štampana ploča - pogledajte prethodni korak; naručili ili sami izradili
  • 2x držača baterija CR2032
  • 1x SPDT (jednopolni, dvostruki prekidač) prekidač koji u osnovi ima tri kontakta i u svakom od svoja dva stanja (uključeno ili isključeno) povezuje dva kontakta
  • 20x taktilni tasteri za tastaturu. Za upotrebu stražnje strane PCB -a koristio sam SMD taktilne tipke (standardna 6x6x6 mm) - prilično ih je lako lemiti kao što ćete vidjeti
  • NEOBVEZNO: 1x 1x6 zaglavlje za povezivanje programatora, ali ovo je opcionalno kao što ćete vidjeti kasnije
  • 1x sedmo segmentni ekran sa 4 cifre i 1x sedmo segmentni ekran sa 2 cifre - ploča će uzeti samo 0,36 inčne (9, 14 mm) elemente sa zajedničkim anodnim ožičenjem. Oba zahtjeva su važna kako bi se dobila radna jedinica. Ali i ova vrsta sedmosegmentnog ekrana je vrlo česta

U prilogu ovog koraka možete pronaći datoteku "component-datasheets.zip" koja sadrži preciznije informacije o dimenzijama i tipovima korištenih komponenti. Ali većina komponenti je vrlo standardna i može se lako nabaviti za malo novca.

Sada morate pričekati dok sve komponente ne budu spremne za nastavak lemljenja. Za to vrijeme već možete skočiti do kraja i pročitati malo o korištenju KIM Uno -a ako želite.

Korak 3: Pregled alata za lemljenje

Pregled alata za lemljenje
Pregled alata za lemljenje
Pregled alata za lemljenje
Pregled alata za lemljenje

Za lemljenje i izradu KIM Uno -a potrebni su vam alati prikazani na slikama:

  • Rezač žice (za rezanje kraja žica sastavnih dijelova)
  • Ravna kliješta
  • Par pinceta
  • (pristojno) lemljenje koje nije previše debelo - koristim lem 0,56 mm
  • Lemilica - ne treba vam lemilica vrhunskog kvaliteta (jer se ovde takođe ne bavimo raketnom naukom) - već dugo koristim Ersa FineTip 260 i zaista je dobar
  • Olovka s fluksom: dodavanjem fluksa komponentama i jastučićima znatno ih je lakše lemiti jer lem tada "sam teče" na pravo mjesto*
  • Opciono: spužva (od metalne vune) za vaše lemilicu

Za kasnije programiranje KIM Uno također će vam trebati:

  • računar sa AVR-GCC lancem alata i avrdudeom za postavljanje firmvera
  • ISP (programer) - kao što vidite na slici, koristim svoj Arduino Uno kao ISP -a sa posebnom skicom - tako da nema potrebe za kupovinom otmjenog hardvera

* potrebno je neko ljudsko vodstvo;-)

Da li si spreman? U sljedećem koraku počet ćemo sa sastavljanjem KIM Uno.

Korak 4: Lemljenje #1: Dodavanje otpornika i kondenzatora

Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora
Lemljenje #1: Dodavanje otpornika i kondenzatora

Uvijek biste trebali raditi od najmanjih (u smislu visine komponente) komponenti, do posljednjih najviših komponenti. Stoga započinjemo dodavanjem otpornika i savijanjem preko nogu straga, tako da se otpornici lako leme i ostanu na mjestu. Nakon toga prerežite dugačke žice.

Također, nije prikazano na slikama, dodajte mali kondenzator od 100 nF na isti način.

Jedan savjet: držite te žičane noge u malom spremniku, ponekad vam dobro dođu.

Korak 5: Lemljenje #2: Sklapanje tastature

Lemljenje #2: Sklapanje tastature
Lemljenje #2: Sklapanje tastature
Lemljenje #2: Sklapanje tastature
Lemljenje #2: Sklapanje tastature
Lemljenje #2: Sklapanje tastature
Lemljenje #2: Sklapanje tastature

Sljedeći korak je lemljenje 20 SMD taktilnih prekidača. Budući da je ovaj posao pomalo škakljiv, radimo ga sada, kada PCB leži ravno na radnoj površini.

Radit ćemo odozgo prema dolje (ili slijeva nadesno ako je tiskana ploča orijentirana kao što je prikazano na fotografijama) i počet ćemo s prvim redom: odaberite jedan od četiri jastučića za svaki prekidač i navlažite ga olovkom.

Zatim pomoću pincete zgrabite prekidač i pažljivo ga postavite na četiri jastučića. Zatim lemite samo nožicu prekidača koja se nalazi na podlozi koju ste odabrali i pripremili fluksom. Za ovo biste prije početka trebali "uhvatiti" malo lemilice sa željezom. Pomoću ove metode dovršite cijeli niz prekidača lemljenjem samo jedne noge.

Slika sa strelicama prikazuje uvećanje kako je lemljenje izvedeno tačno.

Nakon što ste lemili cijeli red (samo jedan pin) možete izvršiti mala prilagođavanja zagrijavanjem pina prema gore i ponovnim postavljanjem prekidača. Uverite se da su prekidači poravnati što je moguće bolje.

Ako ste zadovoljni poravnanjem, sve ostale igle možete namočiti fluks -olovkom, a zatim ih lemiti dodirujući ga lemilicom i dodajući malo lema tako što ćete ga dodirnuti. Vidjet ćete da je lem usisan direktno na podlogu.

Nakon lemljenja jednog reda primijetit ćete da se snalazite i to nije tako teško, ali se ponavlja. Zato učinite ostalo i brzo ćete završiti s gotovom tastaturom.

Korak 6: Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje pinova

Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica
Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica
Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica
Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica
Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica
Lemljenje #3: Sedam segmentni ekran, prekidač i zaglavlje iglica

Sada možete dodati prekidač i zaglavlje igle (opcionalno) držeći ih prstom i lemljenjem jednog pina da ga držite na PCB -u, tako da možete zalemiti ostale pinove i na kraju dodirnuti početni držač.

Budite oprezni da se ne opečete vrućim lemilicom. Ako vam ovo nije ugodno, možete upotrijebiti malo trake (npr. Slikarske trake) za držanje komponente. Na ovaj način imate obje ruke slobodne za kretanje.

Sedam segmentnih ekrana lemljeni su na isti način (pogledajte sliku): stavite ga, držite ga rukom ili trakom i lemite dva suprotna zatiča da biste ga držali na mjestu dok možete lemiti ostale igle.

Ali budite oprezni i postavite sedmosegmentni ekran u pravom smjeru (s decimalnim tačkama okrenutim prema tastaturi). U suprotnom ste u nevolji…

Korak 7: Lemljenje #4: Lemljenje mikrokontrolera

Lemljenje #4: Lemljenje mikrokontrolera
Lemljenje #4: Lemljenje mikrokontrolera

Sada kada imate puno prakse, možete ići naprijed i staviti mikrokontroler s zarezom na vrhu (ili prvim pinom) okrenutim prema prekidaču. Pomoću ravnih kliješta možete pažljivo malo saviti noge mikrokontrolera tako da odgovaraju rupama na PCB -u.

Budući da se čvrsto uklapa, potrebna vam je određena kontrolirana sila za umetanje mikrokontrolera. Prednost je što ne ispada. To znači da možete uzeti vremena i lemiti ga straga.

Korak 8: Lemljenje #5: Dodajte držače baterija (posljednji korak)

Lemljenje #5: Dodajte držače baterija (posljednji korak)
Lemljenje #5: Dodajte držače baterija (posljednji korak)
Lemljenje #5: Dodajte držače baterija (posljednji korak)
Lemljenje #5: Dodajte držače baterija (posljednji korak)
Lemljenje #5: Dodajte držače baterija (posljednji korak)
Lemljenje #5: Dodajte držače baterija (posljednji korak)

Na kraju morate dodati držače za baterije sa stražnje strane. Za to jednostavno upotrijebite olovku i namočite sva četiri jastučića, a zatim stavite malo lema na glačalo. Pažljivo poravnajte držač baterije na oba jastučića. Na oba kraja kontakata trebala bi biti vidljiva ista količina PCB jastučića. Peglom dodirnite podlogu od štampane ploče i nožicu držača baterije. Lem će teći ispod jastučića i preko njega i pričvrstiti ga na mesto kao što je prikazano na slici. Ako imate problema s ovim, olovkom možete dodati još fluksa.

Korak 9: Bljeskanje emulatora

Bljeskanje emulatora
Bljeskanje emulatora
Bljeskanje emulatora
Bljeskanje emulatora
Bljeskanje emulatora
Bljeskanje emulatora

U priloženoj zip arhivi "kim-uno-firmware.zip" možete pronaći izvorni kod za emulator zajedno sa već sastavljenim "main.hex" koji možete direktno postaviti na mikrokontroler.

Prije nego što ga zaista možete koristiti, morate postaviti bitove osigurača mikrokontrolera tako da koristi unutarnji sat od 8 MHz bez podjele. Posao možete obaviti sljedećom naredbom:

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

Ako ne poznajete avrdude: to je program za postavljanje programa na mikrokontroler. Više o tome možete saznati ovdje. U osnovi ga instalirate i tada je spreman za upotrebu. Za vaše postavljanje možda ćete morati promijeniti argument "-P" na drugi serijski port. Molimo provjerite na svom računaru koji se serijski port koristi (npr. Unutar Arduino IDE -a).

Nakon toga možete prenijeti firmver na mikrokontroler pomoću ove naredbe:

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

Opet: ista stvar se odnosi na "-P" kao gore.

Budući da nemam "profesionalnog" ISP-a (programera u sistemu), uvijek koristim svoj Arduino UNO (vidi sliku) i skicu koju sam priložio ("arduino-isp.ino", od Randalla Bohna). Znam da postoji novija verzija, ali s ovom verzijom nisam imao nikakvih problema u posljednjih pet godina, pa je zadržavam. Samo radi. Koristeći komentar u zaglavlju skice, dobivate ispis na Arduino UNO -u, a pomoću sheme KIM Uno (pogledajte u prilogu) možete dobiti pinout 1x6 ISP zaglavlja na KIM Uno -u. Kvadratni pin, blizu sedmosegmentnog ekrana, je pin 1 (GND). Sljedeći pinovi su (pravim redoslijedom): RESET, MOSI, MISO, SCK, VCC. VCC možete spojiti na 3V3 ili na 5V.

Ako niste dodali zaglavlje 1x6 pinova, možete upotrijebiti žice za matičnu ploču i umetnuti ih u rupe za povezivanje te ih prstom nagnuti - baš kao što je prikazano na slici. Ovo stvara dovoljan kontakt za blic firmvera i postavljanje osigurača. Ali ako volite trajnije postavljanje, svakako biste trebali dodati 1x6 pin zaglavlja.

Imam dva uređaja: produkcijsku verziju bez pin zaglavlja i razvojnu verziju sa pin headerima koje ostavljam povezanima i koristim je uvijek iznova tijekom razvoja. Ovo je mnogo udobnije.

Korak 10: Završeno

Finished
Finished
Finished
Finished

Sada ste završili i možete početi pisati vlastite subleq programe na papiru, sastavljati ih i zatim unositi u memoriju.

KIM Uno dolazi s unaprijed programiranim Fibonaccijevim proračunom koji počinje na memorijskoj lokaciji 0x0a. Standardno je postavljeno na n = 6 pa bi trebalo rezultirati vrijednošću 8. Pritisnite "Idi" za početak izračunavanja.

Korak 11: Analiza dizajna PCB -a

Analiza dizajna PCB -a
Analiza dizajna PCB -a
Analiza dizajna PCB -a
Analiza dizajna PCB -a

Nakon završetka ovog projekta otkrio sam nekoliko tačaka koje su vrijedne pažnje i koje bi trebalo obraditi u novoj reviziji odbora:

  • svileni ekran ATMega328p nema uobičajeni zarez na mestu gde se nalazi prva iglica. Otisak DIP-28 nema čak ni kvadratnu podlogu na kojoj se nalazi prvi pin. Ovo bi definitivno trebalo poboljšati detaljnijim sitotiskom kako bi se spriječila zabuna
  • zaglavlje ISP -a nema oznaka veze na svilenom platnu. To otežava prepoznavanje načina povezivanja s ISP -om
  • ISP zaglavlje se može promijeniti u 2x6 pin zaglavlje sa standardnim rasporedom pinova kako bi se spriječila zabuna

Osim ovih točaka, prilično sam sretan kako je ispalo i uspjelo u prvom pokušaju.

Korak 12: Kako programirati SUBLEQ?

Image
Image
Kako programirati SUBLEQ?
Kako programirati SUBLEQ?
Kako programirati SUBLEQ?
Kako programirati SUBLEQ?

Kao što je spomenuto na početku, trenutni firmver KIM Uno emulira Računalo s jednim skupom instrukcija (OISC) i daje podnaredbu za izvršavanje izračunavanja.

Subleq instrukcija označava oduzimanje i grananje ako je manje ili jednako nuli. U pseudo-kodu ovo izgleda ovako:

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

Budući da KIM Uno emulira 8-bitnu mašinu, svi argumenti A, B i C su 8-bitne vrijednosti i stoga mogu adresirati ukupnu glavnu memoriju od 256 bajtova. Očigledno se to može proširiti dodavanjem višebajtnih vrijednosti A, B i C. Ali za sada neka ostane jednostavno.

KIM Uno ima i "periferne uređaje": ekran i tastaturu. Za povezivanje tih perifernih uređaja koristi arhitekturu preslikanu memorijom, iako je memorijska karta vrlo jednostavna:

  • 0x00 = Z registar (nula) i treba ga držati nulom.
  • 0x01 - 0x06 = šest bajtova koji predstavljaju vrijednost svakog od segmenata prikaza (zdesna nalijevo). Vrijednost 0xf - za više detalja pogledajte izvorni kod (main.c).
  • 0x07, 0x08, 0x09 = tri bajta gdje svaki bajt predstavlja dva ekrana sa sedam segmenata (zdesna nalijevo). Ove memorijske lokacije omogućuju jednostavno prikazivanje rezultata bez dijeljenja rezultata na dva dijela kako bi se smjestilo u jednocifrene memorijske lokacije 0x01 - 0x06.
  • 0x0a+ = Program počinje na 0x0a. Trenutno se "Go" ključ izvršava sa fiksnog 0x0a.

S tim podacima sada se može napisati program u asembleru i upisati upute u memoriju, a zatim ih izvršiti. Budući da postoji samo jedna instrukcija, unose se samo argumenti (A, B i C). Dakle, nakon tri memorijske lokacije započinju sljedeći argumenti instrukcija i tako dalje.

U prilogu ovog koraka možete pronaći datoteku "fibonacci.s", kao i sliku rukopisnog programa koji je primjer implementacije Fibonaccija. Ali pričekajte: koriste se tri upute - posebno ADD, MOV i HLT - koje nisu podnapisi. "U čemu je stvar? Zar niste rekli da postoji samo jedno uputstvo, subleq?" pitate? Vrlo je jednostavno: pomoću subleq možete vrlo lako oponašati ove upute:

MOV a, b - kopiranje podataka na lokacijama od a do b može se sastojati od:

  1. subleq b, b, 2 (sljedeće uputstvo)
  2. subleq a, Z, 3 (sljedeće uputstvo)
  3. subleq Z, b, 4 (sljedeće uputstvo)
  4. podznak Z, Z, npr. 5 (sljedeće uputstvo)

Koristeći funkciju oduzimanja subleq -a, koja radi mem - mem [a] i prepisuje mem s rezultatom, vrijednost se kopira pomoću nultog registra. A "subleq Z, Z, …" jednostavno resetira nulti registar na 0, bez obzira na vrijednost Z.

DODAJ a, b - dodaje vrijednosti a + b i pohranjuje zbroj u b može se sastojati od:

  1. subleq a, Z, 2 (sljedeće uputstvo)
  2. subleq Z, b, 3 (sljedeće uputstvo)
  3. podznak Z, Z, npr. 4 (sljedeće uputstvo)

Ovo uputstvo jednostavno izračunava mem - (- mem [a]) što je mem + mem [a] takođe koristeći funkciju oduzimanja.

HLT - zaustavlja procesor i završava izvršavanje:

Po definiciji emulator zna da CPU želi završiti ako skoči na 0xff (ili -1 ako je zapjevan). Tako jednostavno

podznak Z, Z, -1

obavi posao i pokaže emulatoru da bi trebao prekinuti emulaciju.

Koristeći ove tri jednostavne upute, Fibonaccijev algoritam se može implementirati i radi dobro. To je zato što OISC može izračunati sve što "pravi" računar može izračunati samo pomoću instrukcije subleq. Ali, naravno, postoji mnogo kompromisa - poput dužine koda i brzine. No, ipak je to odličan način za učenje i eksperimentiranje sa softverskim programiranjem na niskom nivou i računarima.

U prilogu ovog koraka možete pronaći i zip arhivu "kim_uno_tools.zip". Sadrži osnovni asembler i simulator za KIM Uno. Oni su napisani u NodeJS -u - provjerite jeste li ga instalirali.

Sklapanje programa

Ako pogledate "fibonacci/fibonacci.s", vidjet ćete da je to izvorni kod za raspravu o implementaciji fibonaccija. Da biste ga sastavili i od njega napravili program koji KIM Uno može pokrenuti, unesite sljedeću naredbu (u korijenu izdvojene arhive "kim_uno_tools.zip"):

čvor assemble.js fibonacci/fibonacci.s

i ispisat će pogrešku ako ste pogriješili ili izbaciti rezultirajući program. Da biste ga spremili, možete kopirati izlaz i spremiti ga u datoteku ili jednostavno pokrenuti ovu naredbu:

čvor assemble.js fibonacci/fibonacci.s> yourfile.h

Izlaz je formatiran na način da se može izravno uključiti u firmver KIM Uno kao C datoteku zaglavlja, ali simulator ga može koristiti i za simulaciju. Jednostavno unesite:

čvor sim.js yourfile.h

Na ekranu će vam se prikazati rezultat simulacije i izlaz očekivan od KIM Uno.

Ovo je bio vrlo kratak uvod u ove alate; Preporučujem vam da se poigrate s njima i pogledate kako rade. Na ovaj način ćete steći duboko znanje i naučiti principe rada iza CPU-a, uputstava, asemblera i emulatora;-)

Korak 13: Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Čestitamo

Ako ste ovo pročitali, vjerojatno ste prošli kroz cijelu instrukciju i napravili vlastiti KIM Uno. Ovo je zaista lijepo.

No, putovanje se ovdje ne završava - postoji beskonačan broj mogućnosti kako možete izmijeniti KIM Uno i prilagoditi ga svojim potrebama i željama.

Na primjer, KIM Uno bi mogao biti opremljen "pravim" retro emulatorom CPU -a koji bi mogao emulirati čuveni MOS 6502 ili Intel 8085, 8086 ili 8088. Tada bi to išlo do moje početne vizije, prije nego što sam naučio o OISC -ovima.

No, moguće su i druge upotrebe, budući da je dizajn hardvera prilično općenit. KIM Uno se može koristiti kao …

  • … daljinski upravljač, npr. za CNC ili druge uređaje. Možda ožičen ili opremljen IC diodom ili bilo kojim drugim bežičnim pošiljaocem
  • … (heksadecimalni) džepni kalkulator. Firmver se može vrlo lako prilagoditi, a dizajn ploče ne treba mnogo mijenjati. Možda se sitotisak može prilagoditi matematičkim operacijama, a jaz između segmenata može se ukloniti. Osim toga, već je spremna za ovu transformaciju

Nadam se da ste se zabavili prateći i nadam se da ste izgradili KIM Uno koliko sam ja dizajnirao i planirao. A ako ga produžite ili izmijenite - obavijestite me. Živjeli!

PCB Contest
PCB Contest
PCB Contest
PCB Contest

Drugoplasirani na PCB takmičenju

Preporučuje se: