Sadržaj:

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

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

Video: KIM Uno - emulator mikroprocesorskog kompleta za razvoj od 5 €: 13 koraka (sa slikama)
Video: The Choice is Ours (2016) Official Full Version 2024, Lipanj
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:

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

No, izgradnja kompleta za razvoj "golih kostiju" s diskretnim logičkim komponentama nije bila opcija jer je trebala veliko napajanje (budući da ti drevni uređaji imaju tendenciju uzeti 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đer osigurava da su emulirani CPU -i zamjenjivi sa svime što stane unutar flash memorije mikrokontrolera. Dakle, radi se o višenamjenskom uređaju.

Igrom slučaja 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 uputom: subleq - oduzima i grana ako je manje ili jednako nuli.

Ako me slijedite kroz ovaj Instructable, možete izgraditi vlastiti KIM Uno u kratkom vremenu. A najbolji dio - osim što ga možete izmijeniti po svom ukusu - jest to što izrada košta samo 4,575 € (do kraja 2018.).

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 na https://github.com/maxstrauch/kim-uno. Hvala!

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

Korak 1: Nabava PCB -a

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

Kao što vidite, iskoristio sam priliku za projektiranje PCB -a i njegovo profesionalno izvođenje. 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 je PCB izrađen i poslan vama.

Naručio sam svoje PCB -e u Kini na PCBWay -u za samo 5 USD. Ne dobivam 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. No, možete ih naručiti na bilo kojem drugom mjestu poput JLCPCB -a, OSH Parka ili bilo koje druge tvrtke za izdavanje PCB -a.

No, ako ste ih voljni naručiti na PCBWay-u, možete preuzeti priloženu ZIP datoteku "kim-uno-rev1_2018-12-12_gerbers.zip" i učitati je izravno na PCBWay bez ikakvih promjena. Ovo je izvorna 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 ploču.

U svakom slučaju: budući da su PCB -ovi na putu, možemo se usredotočiti na ostale dijelove! Dođi, pođi za mnom.

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 na eBay. Iako bi te ponude mogle biti zatvorene kad ovo pročitate, možete ih koristiti kao polazište. Korištene komponente prilično su standardne.

U nastavku ću vam objasniti sve potrebne komponente:

  • 7x 1 kΩ otpornici za sedam segmentnih zaslona. Vrijednost možete smanjiti (npr. Na 470 Ω) kako bi zasjajali jače, ali je nemojte previše smanjivati jer će u protivnom 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 budući da koristimo baterije, zar ne, ali za dobru mjeru …)
  • 1x ATMega328P u paketu DIP-28 (obično se naziva ATMega328P-PU)
  • 1x glavna PCB - 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 gumbi za tipkovnicu. Za korištenje stražnje strane PCB -a koristio sam SMD taktilne tipke (standardne 6x6x6 mm) - prilično ih je lako lemiti kao što ćete vidjeti
  • NEOBVEZNO: 1x 1x6 pin zaglavlje za povezivanje programatora, ali ovo je izborno kao što ćete vidjeti kasnije
  • 1x sedmo segmentni zaslon s 4 znamenke i 1x sedmo segmentni zaslon s 2 znamenke - ploča će uzeti samo 0,36 inčne (9, 14 mm) elemente sa zajedničkim anodnim ožičenjem. Oba uvjeta su važna kako bi se dobila radna jedinica. No, i ova vrsta zaslona sa sedam segmenata vrlo je česta

U prilogu ovog koraka možete pronaći datoteku "component-datasheets.zip" koja sadrži preciznije podatke o dimenzijama i vrstama korištenih komponenti. No većina je komponenti 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 potrebni su vam alati prikazani na slikama:

  • Rezač žice (za rezanje kraja žica sastavnih dijelova)
  • Ravna kliješta
  • Par pinceta
  • (pristojno) Lemilo koje nije previše debelo - koristim lem 0,56 mm
  • Lemilica - ne trebate vrhunsko lemilo (jer se ovdje također ne bavimo raketnom znanošću) - već dugo koristim Ersu FineTip 260 i stvarno 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*
  • Opcionalno: spužva (od metalne vune) za vaše lemilicu

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

  • računalo s AVR-GCC alatom i avrdude za učitavanje firmvera
  • ISP (programer) - kao što vidite na slici, koristim svoj Arduino Uno kao ISP -a sa posebnom skicom - tako da nema potrebe za kupnjom nekog otmjenog hardvera

* potrebne su neke upute ljudi;-)

Jesi li spreman? U sljedećem koraku počet ćemo sastavljati 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 poč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 tipkovnice

Lemljenje #2: Sklapanje tipkovnice
Lemljenje #2: Sklapanje tipkovnice
Lemljenje #2: Sklapanje tipkovnice
Lemljenje #2: Sklapanje tipkovnice
Lemljenje #2: Sklapanje tipkovnice
Lemljenje #2: Sklapanje tipkovnice

Sljedeći korak je lemljenje 20 SMD taktilnih prekidača. Budući da je ovaj posao pomalo škakljiv, to činimo sada, kada PCB leži ravno na radnom stolu.

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 jastučiću koji ste odabrali i pripremili pomoću fluksa. Za to biste prije početka trebali "uhvatiti" malo lema svojim glačalom. Pomoću ove metode dovršite cijeli niz prekidača lemljenjem samo jedne noge.

Slika sa strelicama prikazuje povećanje kako je lemljenje točno izvedeno.

Nakon što ste zalemili cijeli red (samo jedan pin) možete izvršiti male prilagodbe zagrijavanjem pina i ponovnim postavljanjem prekidača. Pazite da prekidači budu što bolje poravnati.

Ako ste zadovoljni poravnanjem, sve ostale igle možete navlažiti olovkom, a zatim ih zalemiti dodirujući lemilicom i dodajući malo lemljenja tako što ćete je dodirnuti. Vidjet ćete da je lem usisan izravno na podlogu.

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

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

Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle
Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle
Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle
Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle
Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle
Lemljenje #3: Sedam segmentni zaslon, prekidač i zaglavlje igle

Sada možete dodati prekidač i zaglavlje igle (opcionalno) držeći ih prstom i lemljenjem jednog zatiča za pričvršćivanje na tiskanu ploču, tako da možete zalemiti ostale pinove i na kraju dodirnuti početni držač.

Pazite da se ne opečete vrućim lemilicom. Ako vam to 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 zaslona lemljeni su na isti način (vidi sliku): stavite ih, držite rukom ili trakom i lemite dvije suprotne igle da biste ih držali na mjestu dok možete lemiti ostale iglice.

No, budite oprezni i postavite zaslon sa sedam segmenata u pravom smjeru (s decimalnim točkama okrenutim prema tipkovnici). Inače 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 urezom 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 baterija 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. Glačalom dodirnite pločicu PCB -a i nožicu držača baterije. Lem će teći ispod jastučića i preko njega i pričvrstiti ga na mjesto kao što je prikazano na slici. Ako imate problema s tim, 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 emulatora zajedno s već sastavljenim "main.hex" koji možete izravno prenijeti 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 dijeljenja na pola. 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čunalu 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 bljeskalica: w: main.hex

Opet: ista stvar vrijedi za "-P" kao gore.

Budući da ne posjedujem "profesionalnog" ISP-a (programera u sustavu), 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. To samo radi. Pomoću komentara u zaglavlju skice dobivate ispis na Arduino UNO -u, a pomoću sheme KIM Uno (pogledajte u prilogu) možete dobiti ispis 1x6 ISP zaglavlja na KIM Uno -u. Četvrtasti pin blizu sedmosegmentnog zaslona je pin 1 (GND). Sljedeći su pinovi (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 staviti ih u rupe za povezivanje te ih prstom nagnuti - baš kao što je prikazano na slici. To čini dovoljno kontakta za bljeskanje firmvera i postavljanje osigurača. No, 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 headersima koje ostavljam povezanima i koristim je uvijek iznova tijekom razvoja. Ovo je mnogo ugodnije.

Korak 10: Završeno

Završeno
Završeno
Završeno
Završeno

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 računanjem počevši od memorijskog mjesta 0x0a. Zadano je postavljeno na n = 6 pa bi trebalo rezultirati vrijednošću 8. Pritisnite "Idi" za početak izračuna.

Korak 11: Analiza dizajna PCB -a

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

Nakon dovršetka ovog projekta pronašao sam nekoliko točaka koje su vrijedne pažnje i koje bi trebalo obraditi u novoj reviziji odbora:

  • svileni zaslon ATMega328p nema uobičajeni zarez na mjestu gdje se nalazi prva iglica. Otisak DIP-28 nema čak ni četvrtastu podlogu na kojoj se nalazi prvi pin. Ovo bi svakako trebalo poboljšati detaljnijom svilenom sitotiskom kako bi se spriječila zabuna
  • zaglavlje ISP -a nema oznaka veze na sitotisku. To otežava prepoznavanje načina povezivanja s ISP -om
  • zaglavlje ISP -a moglo bi se promijeniti u 2x6 -pinsko zaglavlje sa standardnim rasporedom pinova kako bi se spriječila zabuna

Osim tih 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 jedno računalo s skupom instrukcija (OISC) i pruža podnaredbene instrukcije za izvođenje izračuna.

Naredba subleq označava oduzimanje i grananje ako je manja ili jednaka 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-bitni stroj, svi argumenti A, B i C su 8-bitne vrijednosti i stoga mogu adresirati ukupnu glavnu memoriju od 256 bajta. Očito se to može proširiti postavljanjem višebajtnih vrijednosti A, B i C. No, za sada neka ostane jednostavno.

KIM Uno ima i "periferne uređaje": zaslon i tipkovnicu. Za povezivanje tih perifernih uređaja koristi arhitekturu preslikanu u memoriju, 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 prikaza sedam segmenata (zdesna nalijevo). Ova memorijska mjesta omogućuju jednostavno prikazivanje rezultata bez podjele rezultata na dva dijela kako bi se smjestili u jednoznamenkasta memorijska mjesta 0x01 - 0x06.
  • 0x0a+ = Program počinje s 0x0a. Trenutačno se tipka "Go" izvršava od fiksne 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 uputa, 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 jedna uputa, subleq?" pitaš? 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ća uputa)
  2. subleq a, Z, 3 (sljedeća uputa)
  3. subleq Z, b, 4 (sljedeća uputa)
  4. podnaredba Z, Z, na pr. 5 (sljedeća uputa)

Koristeći značajku oduzimanja subleq, 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ća uputa)
  2. subleq Z, b, 3 (sljedeća uputa)
  3. podnaredba Z, Z, na pr. 4 (sljedeća uputa)

Ova uputa jednostavno izračunava mem - (- mem [a]) koji je mem + mem [a] također pomoću značajke oduzimanja.

HLT - zaustavlja procesor i završava izvođenje:

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 "pravo" računalo može izračunati samo s uputom subleq. No, naravno, postoji mnogo kompromisa - poput duljine koda i brzine. No, ipak je to izvrstan način za učenje i eksperimentiranje s softverskim programiranjem na niskoj razini i računalima.

U prilogu ovog koraka možete pronaći i zip arhivu "kim_uno_tools.zip". Sadrži neki 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", ustanovit ć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 oblikovan 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 zaslonu ć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 stječete duboko znanje i učite principe funkcioniranja iza CPU-a, uputa, asemblera i emulatora;-)

Korak 13: Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Čestitamo

Ako ste ovo pročitali, vjerojatno ste prošli cijelu ovu instrukciju i izgradili vlastiti KIM Uno. Ovo je stvarno lijepo.

No, putovanje 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 mogao bi biti opremljen "pravim" retro emulatorom CPU -a koji bi mogao oponašati poznati MOS 6502 ili Intel 8085, 8086 ili 8088. Tada bi to otišlo do moje početne vizije, prije nego što sam naučio o OISC -ima.

No, moguće su i druge upotrebe, budući da je dizajn hardvera prilično općenit. KIM Uno mogao bi se 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šiljateljem
  • … džepni kalkulator (heksadecimalni). Firmver se može vrlo lako prilagoditi, a dizajn ploče ne treba puno mijenjati. Možda se sitotisak može prilagoditi matematičkim operacijama i ukloniti jaz između segmenata. 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 - javite mi. Živjeli!

Natječaj za PCB
Natječaj za PCB
Natječaj za PCB
Natječaj za PCB

Drugoplasirani na natjecanju za PCB

Preporučeni: