Obsah:

KIM Uno - emulátor mikroprocesorovej súpravy 5 €: 13 krokov (s obrázkami)
KIM Uno - emulátor mikroprocesorovej súpravy 5 €: 13 krokov (s obrázkami)

Video: KIM Uno - emulátor mikroprocesorovej súpravy 5 €: 13 krokov (s obrázkami)

Video: KIM Uno - emulátor mikroprocesorovej súpravy 5 €: 13 krokov (s obrázkami)
Video: Удачно сходили на барахолку. Топор ручной работы. Одесса барахолка. 2024, November
Anonim
Image
Image
KIM Uno - emulátor mikroprocesora pre súpravu 5 €
KIM Uno - emulátor mikroprocesora pre súpravu 5 €
KIM Uno - emulátor mikroprocesora pre súpravu 5 €
KIM Uno - emulátor mikroprocesora pre súpravu 5 €

KIM Uno je prenosná softvérovo definovaná súprava pre (retro) mikroprocesory. Dovoľte mi však predstaviť myšlienku toho, že sa vrátim v čase:

Koncom roku 2018 mi prišlo na um, že som chcel postaviť malú prenosnú súpravu pre mikroprocesory, ako je známy KIM-1 od MOS Technology, Inc. a ktorú navrhol Chuck Peddle, ktorý sa podieľal aj na vytváraní procesora 6502.

Vybudovanie súpravy „holých kostí“s diskrétnymi logickými komponentmi však nebolo možné, pretože potrebovalo veľké napájanie (pretože tieto starodávne zariadenia majú tendenciu odoberať značný prúd) a tiež vývoj by bol veľmi časovo náročný. A chcem to hneď!

Preto som KIM Uno navrhol ako prenosné zariadenie, ktoré padne do jednej ruky a je napájané dvoma batériami CR2032. Na emuláciu (alebo simuláciu) požadovaného procesora používa mikrokontrolér ATMega328p („Arduino“) s frekvenciou 8 MHz. Táto architektúra tiež zaisťuje, že emulované CPU sú zameniteľné za čokoľvek, čo sa zmestí do pamäte flash mikrokontroléra. Ide teda o viacúčelové zariadenie.

Zhodou okolností som neskôr sledoval skutočne dobrú prednášku - The Ultimate Apollo Guidance Computer Talk (34C3) - na YouTube, kde sú uvedené „počítače s jednou inštrukčnou sadou“alebo OISC. Nevedel som o nich a považoval som to za perfektného kandidáta na jeho implementáciu.

KIM Uno emuluje procesor iba s jednou inštrukciou: subleq - odčítanie a vetva, ak je menšie alebo rovné nule.

Ak budete so mnou postupovať podľa tohto návodu, môžete si v krátkom čase vytvoriť vlastné KIM Uno. A najlepšie na tom je, že okrem toho, že si ho môžete upraviť podľa svojho vkusu, jeho výroba stojí iba 4, 75 EUR (ku koncu roka 2018).

Jedna rada: existuje úložisko Git, ktoré obsahuje všetky súbory poskytnuté rôznymi krokmi tohto pokynu. V prípade, že chcete upraviť niektoré zdroje a zdieľať ich s nami, môžete si vytvoriť PR. Môžete si tam však stiahnuť aj všetky súbory naraz. Jednoducho na https://github.com/maxstrauch/kim-uno. Vďaka!

Existuje ešte jeden celkom zaujímavý projekt, ktorý sa nazýva ten istý (KIM Uno) a predstavuje skutočnú repliku modelu 6502 KIM Uno. Pozrite sa sem. Tvorca súpravu dokonca predáva. Ak vás teda zaujíma 6502 a páči sa vám tento projekt, mali by ste sa tam pozrieť!

Krok 1: Získanie PCB

Získavanie PCB
Získavanie PCB
Získavanie PCB
Získavanie PCB

Ako vidíte, využil som príležitosť navrhnúť DPS a nechať ho profesionálne vyrobiť. Pretože jeho externá výroba a doručenie vám bude trvať veľa času (v závislosti od toho, kde sa vo svete nachádzate;-)), jeho objednanie je prvým krokom. Potom môžeme pokračovať v ďalších krokoch, kým je DPS vyrobená a odoslaná k vám.

Objednal som si svoje PCB v Číne na PCBWay za pouhých 5 dolárov. Nemám žiadny úžitok z toho, že môžem predstavovať PCBWay ako svojho pôvodného výrobcu PCB, je to len to, že to fungovalo dobre pre mňa a mohlo by to fungovať aj pre vás. Môžete si ich však objednať na akomkoľvek inom mieste, ako je JLCPCB, OSH Park alebo miestna spoločnosť s plošnými spojmi.

Pokiaľ ste si ich ale objednali na PCBWay, môžete si stiahnuť priložený súbor ZIP „kim-uno-rev1_2018-12-12_gerbers.zip“a nahrať ho priamo do PCBWay bez akejkoľvek zmeny. Toto je pôvodný súbor, ktorý som použil na objednanie DPS, ktoré môžete vidieť na obrázkoch.

Ak si ich objednávate u iného výrobcu, možno ich budete musieť znova exportovať z pôvodných zdrojov KiCad, pretože som ich vygeneroval so špecifikáciami z PCBWay, ktoré nájdete tu. Pre pôvodné zdroje KiCad si stiahnite „kim-uno-kicad-sources.zip“a rozbaľte ho.

Existuje však aj druhý spôsob: ak si nechcete objednať DPS, môžete si vytvoriť svoju vlastnú verziu pomocou dosky na dosku alebo dokonca breadboardu.

Každopádne: keďže PCB sú už na ceste, môžeme sa zamerať na ostatné časti! Poď, nasleduj ma.

Krok 2: Získanie komponentov

Získavanie komponentov
Získavanie komponentov
Získavanie komponentov
Získavanie komponentov
Získavanie komponentov
Získavanie komponentov

Teraz musíte získať komponenty. K tomu nájdete prehľadný obrázok všetkých komponentov a množstiev, ktoré potrebujete, pripojený k tomuto kroku a kusovník (kusovník).

Kusovník obsahuje odkazy na eBay. Napriek tomu, že tieto ponuky môžu byť pri čítaní uzavreté, môžete ich použiť ako východiskový bod. Použité komponenty sú celkom štandardné.

V nasledujúcom texte vám vysvetlím všetky potrebné súčasti:

  • 7x 1 kΩ odpory pre sedem segmentové displeje. Hodnotu (napr. Na 470 Ω) môžete znížiť, aby svietili jasnejšie, ale neznížte ju príliš, inak LED diódy zhasnú alebo sa batéria vybije veľmi rýchlo. Zistil som, že táto hodnota na mňa funguje
  • 1x 10 kΩ ako pull-up odpor pre linku RESET mikrokontroléra
  • 1 x 100nF kondenzátor na vyrovnanie všetkých napäťových špičiek (čo by sa nemalo stávať, pretože používame batérie, správne, ale pre správnu mieru …)
  • 1x ATMega328P v balení DIP-28 (zvyčajne s názvom ATMega328P-PU)
  • 1x hlavný PCB - pozri predchádzajúci krok; buď objednaný alebo postavený svojpomocne
  • 2x držiak batérie CR2032
  • 1x prepínač SPDT (jednopólový, dvojitý hod), ktorý má v zásade tri kontakty a v každom z dvoch stavov (zapnutých alebo vypnutých) spája dva kontakty
  • 20x hmatové tlačidlá na klávesnici. Na použitie zadnej strany DPS som použil hmatové tlačidlá SMD (štandardné tlačidlá 6x6x6 mm) - dajú sa veľmi ľahko spájkovať, ako uvidíte.
  • VOLITELNÉ: 1 x 6 pinová hlavička na pripojenie programátora, ale toto je voliteľné, ako uvidíte neskôr
  • 1x sedemsegmentový displej so 4 číslicami a 1x sedemsegmentový displej s 2 číslicami - doska bude obsahovať iba prvky 0,36 palca (9,14 mm) so spoločným anódovým zapojením. Obe požiadavky sú dôležité pre získanie fungujúcej jednotky. Ale aj tento typ sedemsegmentového displeja je veľmi bežný

V prílohe k tomuto kroku nájdete súbor „component-datasheets.zip“, ktorý obsahuje presnejšie informácie o rozmeroch a typoch použitých komponentov. Väčšina komponentov je však veľmi štandardná a dá sa ľahko získať za málo peňazí.

Teraz musíte počkať, kým nebudete mať všetky súčasti pripravené, aby ste mohli pokračovať v spájkovaní. Počas tejto doby už môžete skočiť na koniec a prečítať si niečo o používaní KIM Uno, ak chcete.

Krok 3: Prehľad spájkovacieho nástroja

Prehľad spájkovacieho nástroja
Prehľad spájkovacieho nástroja
Prehľad spájkovacieho nástroja
Prehľad spájkovacieho nástroja

Na spájkovanie a stavbu KIM Uno potrebujete nástroje zobrazené na obrázkoch:

  • Rezačka drôtu (na odstrihnutie konca komponentných drôtov)
  • Ploché kliešte
  • Pár pinzety
  • (slušné) Spájka, ktorá nie je príliš hrubá - používam spájku 0,56 mm
  • Spájkovačka - nepotrebujete špičkovú spájkovačku (pretože tu tiež nerobíme raketovú vedu) - Ersa FineTip 260 používam už dlho a je naozaj dobrá
  • Tavivové pero: pridanie taviva do súčiastok a doštičiek uľahčuje ich spájkovanie, pretože spájka potom „prúdi“sama na správne miesto*
  • Voliteľne: špongia (z kovovej vlny) na vašu spájkovačku

Na neskoršie naprogramovanie KIM Uno budete tiež potrebovať:

  • počítač s reťazcom nástrojov AVR-GCC a ochotný nahrať firmvér
  • ISP (programátor) - ako vidíte na obrázku, používam svoj Arduino Uno ako ISP so špeciálnym náčrtom - takže nie je potrebné kupovať žiadny efektný hardvér

* Potrebné je určité vedenie od ľudí;-)

Si pripravený? V ďalšom kroku sa pustíme do montáže KIM Uno.

Krok 4: Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov

Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov
Spájkovanie č. 1: Pridanie rezistorov a kondenzátorov

Vždy by ste mali pracovať od najmenších (z hľadiska výšky súčiastok) komponentov po prvé až po najvyššie komponenty. Preto začneme pridaním odporov a ohnutím cez nohy vzadu, aby sa odpory ľahko spájkovali a zostali na svojom mieste. Potom odstrihnite dlhé drôty.

Na obrázkoch tiež nie je zobrazené, pridajte malý kondenzátor 100 nF rovnakým spôsobom.

Jeden tip: držte tieto drôtené nohy v malom kontajneri, niekedy prídu vhod.

Krok 5: Spájkovanie č. 2: Zostavenie klávesnice

Spájkovanie č. 2: Zostavenie klávesnice
Spájkovanie č. 2: Zostavenie klávesnice
Spájkovanie č. 2: Zostavenie klávesnice
Spájkovanie č. 2: Zostavenie klávesnice
Spájkovanie č. 2: Zostavenie klávesnice
Spájkovanie č. 2: Zostavenie klávesnice

Ďalším krokom je spájkovanie 20 dotykových spínačov SMD. Pretože je táto práca trochu nešikovná, robíme to teraz, keď je doska plošných spojov položená na pracovnom stole.

Budeme pracovať zhora nadol (alebo zľava doprava, ak je doska plošných spojov orientovaná tak, ako je to znázornené na fotografiách) a začneme prvým riadkom: pre každý prepínač vyberte jednu zo štyroch podložiek a navlhčite ju taviacim perom.

Potom pomocou pinzety uchopte vypínač a opatrne ho umiestnite na štyri podložky. Potom spájkujte iba nohu spínača, ktorá je na podložke, ktorú ste vybrali a pripravili tavidlom. Za týmto účelom by ste mali pred štartom „chytiť“žehličku do žehličky. Pomocou tejto metódy dokončite celý rad prepínačov spájkovaním iba jednej nohy.

Obrázok so šípkami ukazuje zväčšenie, ako bolo spájkovanie presne vykonané.

Potom, čo ste spájkovali celý rad (iba jeden kolík), môžete vykonať malé úpravy zahriatím kolíka späť a umiestnením prepínača. Uistite sa, že prepínače sú zarovnané čo najlepšie.

Ak ste so zarovnaním spokojní, môžete všetky ostatné kolíky navlhčiť taviacim perom a potom ich spájkovať tak, že sa ho dotknete spájkovačky a pridaním trochu spájky sa dotknete tiež. Uvidíte, že spájka je nasávaná priamo na podložku.

Po spájkovaní jedného alebo druhého radu si všimnete, že sa v tom zorientujete a nie je to také ťažké, ale opakujúce sa. Urobte teda zvyšok a za chvíľu budete mať hotovú klávesnicu.

Krok 6: Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička

Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička
Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička
Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička
Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička
Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička
Spájkovanie č. 3: Sedemsegmentový displej, prepínač a kolíková hlavička

Teraz môžete prepínač a záhlavie kolíka (voliteľné) pridať pridržaním prsta a spájkovaním jedného kolíka tak, aby bol držaný na doske plošných spojov, aby ste mohli spájkovať ostatné kolíky a nakoniec opraviť počiatočný pridržiavací kolík.

Dávajte si pozor, aby ste sa nespálili s horúcou spájkovačkou. Ak vám to nie je príjemné, môžete na pripevnenie komponentu použiť malú pásku (napr. Maliarsku pásku). Takto máte obe ruky voľné na pohyb.

Sedemsegmentové displeje sú spájkované rovnakým spôsobom (pozri obrázok): vložíte ho, držíte ho rukou alebo páskou a spájkujete dva protiľahlé kolíky, aby držali na mieste, zatiaľ čo ostatné piny môžete spájkovať.

Buďte však opatrní a dajte sedemsegmentový displej správnym smerom (s desatinnými bodkami otočenými ku klávesnici). V opačnom prípade máte problémy …

Krok 7: Spájkovanie č. 4: Spájkovanie mikrokontroléra

Spájkovanie č. 4: Spájkovanie mikrokontroléra
Spájkovanie č. 4: Spájkovanie mikrokontroléra

Teraz, keď máte veľa praxe, môžete pokračovať a vložiť mikrokontrolér so zárezom na vrchu (alebo prvom kolíku) smerom k prepínaču. Pomocou plochých klieští môžete opatrne ohnúť nohy mikrokontroléra tak, aby zodpovedali otvorom na doske plošných spojov.

Pretože je tesne priliehajúci, potrebujete na vloženie mikrokontroléra určitú kontrolovanú silu. Výhodou je, že nevypadne. To znamená, že si môžete urobiť čas a spájkovať ho zozadu.

Krok 8: Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)

Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)
Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)
Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)
Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)
Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)
Spájkovanie č. 5: Pridajte držiaky batérie (posledný krok)

Nakoniec musíte na zadnú stranu pridať držiaky batérie. Na to jednoducho použijete taviace pero, namočíte všetky štyri podložky a potom nalejete spájku na žehličku. Opatrne zarovnajte držiak batérie na oboch podložkách. Na oboch koncoch kontaktov by malo byť viditeľné rovnaké množstvo podložky do DPS. Dotknite sa žehličkou podložky plošného spoja a nohy držiaka batérie. Spájka bude prúdiť pod podložku a nad ňu a zaistí ju na mieste, ako je to znázornené na obrázku. Ak s tým máte problémy, môžete perom pridať ďalší tok.

Krok 9: Blikanie emulátora

Bliká emulátor
Bliká emulátor
Bliká emulátor
Bliká emulátor
Bliká emulátor
Bliká emulátor

V priloženom zip archíve „kim-uno-firmware.zip“nájdete zdrojový kód emulátora spolu s už zostaveným „main.hex“, ktorý môžete priamo nahrať do mikrokontroléra.

Predtým, ako ho budete môcť skutočne použiť, musíte nastaviť poistkové bity mikrokontroléra tak, aby používalo vnútorné hodiny 8 MHz bez toho, aby ich rozdelili na polovicu. Prácu môžete vykonať pomocou nasledujúceho príkazu:

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

Ak neviete, ako to je: je to program na nahrávanie programov do mikrokontroléra. Viac sa o tom môžete dozvedieť tu. V zásade ho nainštalujete a potom je pripravený na použitie. Na nastavenie budete možno musieť zmeniť argument „-P“na iný sériový port. Skontrolujte na počítači, ktorý sériový port sa používa (napr. Vo vnútri Arduino IDE).

Potom môžete firmware nahrať na mikrokontrolér pomocou tohto príkazu:

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

Opäť: pre „-P“platí to isté, čo vyššie.

Pretože nevlastním „profesionálneho“ISP (systémový programátor), vždy používam Arduino UNO (pozri obrázok) a skicu, ktorú som pripojil („arduino-isp.ino“, od Randall Bohn). Viem, že existuje novšia verzia, ale s touto verziou som mal za posledných päť rokov nulové problémy, takže ju ponechávam. Proste to funguje. Pomocou komentára v záhlaví náčrtu získate pinout na Arduino UNO a pomocou schémy KIM Uno (pozri prílohu) môžete získať pinout hlavičky ISP 1x6 na KIM Uno. Štvorcový kolík v blízkosti sedemsegmentového displeja je pin 1 (GND). Nasledujúce piny sú (v správnom poradí): RESET, MOSI, MISO, SCK, VCC. VCC môžete pripojiť buď k 3V3, alebo k 5V.

Ak ste nepridali záhlavie 1x6 kolíkov, môžete použiť drôtové prepojovacie káble, vložiť ich do spojovacích otvorov a uhlom prsta - presne tak, ako je to znázornené na obrázku. Vďaka tomu je dostatok kontaktov na flashovanie firmvéru a nastavenie poistiek. Ale ak máte radi trvalejšie nastavenie, určite by ste mali pridať 1 × 6 pinové záhlavia.

Mám dve zariadenia: produkčnú verziu bez záhlaví pinov a vývojovú verziu s kolíkovými hlavičkami, ktoré nechávam pripojené a používam ich počas vývoja znova a znova. To je oveľa pohodlnejšie.

Krok 10: Hotovo

Hotovo
Hotovo
Hotovo
Hotovo

Teraz ste hotoví a môžete začať písať vlastné programy subleq na papier, zostavovať ich a potom zadávať do pamäte.

KIM Uno je dodávaný s predprogramovaným Fibonacciho výpočtom začínajúcim na mieste pamäte 0x0a. Štandardne je nastavený na n = 6, takže výsledkom by mala byť hodnota 8. Výpočet spustíte stlačením „Go“.

Krok 11: Analýza návrhu DPS

Analýza návrhu DPS
Analýza návrhu DPS
Analýza návrhu DPS
Analýza návrhu DPS

Po dokončení tohto projektu som našiel niekoľko bodov, ktoré sú pozoruhodné a ktoré by sa mali riešiť v novej revízii rady:

  • hodvábna obrazovka ATMega328p nemá obvyklý zárez, kde je umiestnený prvý kolík. Stopa DIP-28 nemá ani štvorcovú podložku, kde je umiestnený prvý kolík. Toto by sa určite malo zlepšiť podrobnejšou sieťotlačou, aby sa zabránilo zmätku
  • hlavička ISP nemá na hodvábnej obrazovke žiadne štítky pripojenia. Preto je ťažké rozpoznať, ako ho pripojiť k ISP
  • hlavička ISP sa dala zmeniť na 2x6 pinovú hlavičku so štandardným rozložením pinov, aby sa predišlo nejasnostiam

Okrem týchto bodov som veľmi rád, že to dopadlo a fungovalo na prvý pokus.

Krok 12: Ako naprogramovať SUBLEQ?

Image
Image
Ako naprogramovať SUBLEQ?
Ako naprogramovať SUBLEQ?
Ako naprogramovať SUBLEQ?
Ako naprogramovať SUBLEQ?

Ako bolo uvedené na začiatku, aktuálny firmvér KIM Uno emuluje počítač s jednou inštrukčnou sadou (OISC) a poskytuje dostatočné inštrukcie na vykonanie výpočtu.

Inštrukcia subleq znamená odčítanie a vetva, ak je menšia alebo rovná nule. V pseudokóde to vyzerá nasledovne:

subleq A B C mem [B] = mem [B] - mem [A]; if (mem [B] <= 0) choďte na C;

Pretože KIM Uno emuluje 8-bitový stroj, všetky argumenty A, B a C sú 8-bitové hodnoty, a preto môže adresovať celkovú hlavnú pamäť 256 bajtov. Očividne to možno rozšíriť vytvorením viacbajtových hodnôt A, B a C. Ale zatiaľ to zjednodušme.

KIM Uno má tiež „periférie“: displej a klávesnicu. Na prepojenie týchto periférií používa architektúru mapovanú v pamäti, hoci pamäťová mapa je veľmi jednoduchá:

  • 0x00 = register Z (nula) a mal by byť ponechaný na nule.
  • 0x01 - 0x06 = šesť bajtov, ktoré predstavujú hodnotu každého zo segmentov displeja (sprava doľava). Hodnota 0xf - ďalšie podrobnosti nájdete v zdrojovom kóde (main.c).
  • 0x07, 0x08, 0x09 = tri bajty, kde každý bajt predstavuje dve sedem segmentové obrazovky (sprava doľava). Tieto miesta v pamäti umožňujú jednoduché zobrazenie výsledku bez toho, aby sa výsledok rozdelil na dve časti, aby sa umiestnil do jednociferných miest pamäte 0x01 - 0x06.
  • 0x0a+ = Program začína na 0x0a. V súčasnej dobe je kľúč „Go“spustený od 0x0a opravený.

S týmito informáciami je možné teraz napísať program v assembleri, zadať pokyny do pamäte a potom ich spustiť. Pretože existuje iba jedna inštrukcia, zadávajú sa iba argumenty (A, B a C). Takže po troch miestach pamäte začnú ďalšie argumenty inštrukcie a tak ďalej.

V prílohe k tomuto kroku nájdete súbor „fibonacci.s“a tiež obrázok ručne písaného programu, ktorý je príkladom implementácie programu Fibonacci. Ale počkajte: sú použité tri pokyny - konkrétne ADD, MOV a HLT - ktoré nie sú postačujúce. „Čo je to za dohodu? Nehovoril si, že existuje iba jeden pokyn, subleq?“pýtaš sa? Je to veľmi jednoduché: pomocou programu subleq je možné tieto pokyny veľmi ľahko napodobniť:

MOV a, b - údaje kópie na mieste a až b môžu pozostávať z:

  1. subleq b, b, 2 (nasledujúci pokyn)
  2. subleq a, Z, 3 (nasledujúci pokyn)
  3. subleq Z, b, 4 (nasledujúci pokyn)
  4. subleq Z, Z, napr. 5 (nasledujúci pokyn)

Pomocou funkcie odčítania subleq, ktorá robí mem - mem [a] a prepisuje mem s výsledkom, sa hodnota skopíruje pomocou nulového registra. A „subleq Z, Z, …“jednoducho vynuluje nulový register na 0, bez ohľadu na hodnotu Z.

PRIDAŤ a, b - sčíta hodnoty a + b a súčet do b uloží ako zložku:

  1. subleq a, Z, 2 (nasledujúci pokyn)
  2. subleq Z, b, 3 (nasledujúci pokyn)
  3. subleq Z, Z, napr. 4 (nasledujúci pokyn)

Táto inštrukcia jednoducho vypočíta mem - (- mem [a]), ktorý je mem + mem [a], a to aj pomocou funkcie odčítania.

HLT - zastaví procesor a ukončí vykonanie:

Emulátor podľa definície vie, že CPU sa chce zastaviť, ak skočí na 0xff (alebo -1, ak je zaradený). Tak jednoduché

subleq Z, Z, -1

odvádza prácu a naznačuje emulátoru, že by mal ukončiť emuláciu.

Pomocou týchto troch jednoduchých pokynov je možné implementovať Fibonacciho algoritmus a funguje dobre. Je to tak, pretože OISC dokáže vypočítať všetko, čo dokáže „skutočný“počítač vypočítať, iba pomocou príkazu subleq. Ale samozrejme, existuje veľa kompromisov, ako je dĺžka a rýchlosť kódu. Je to však úžasný spôsob, ako sa naučiť a experimentovať so softvérovým programovaním na nízkej úrovni a s počítačmi.

V prílohe k tomuto kroku nájdete aj archív zip „kim_uno_tools.zip“. Obsahuje niekoľko základných assemblerov a simulátorov pre KIM Uno. Sú napísané v NodeJS - uistite sa, že ste ho nainštalovali.

Zostavovanie programov

Keď sa pozriete na „fibonacci/fibonacci.s“, zistíte, že je to zdrojový kód diskutovanej implementácie fibonacci. Aby ste ho zostavili a vytvorili z neho program, ktorý môže KIM Uno spustiť, zadajte nasledujúci príkaz (do koreňa extrahovaného archívu „kim_uno_tools.zip“):

zostaviť uzol.js fibonacci/fibonacci.s

a buď vytlačí chybu, ak ste sa pomýlili, alebo vysype výsledný program. Ak ho chcete uložiť, môžete skopírovať výstup a uložiť ho do súboru alebo jednoducho spustiť tento príkaz:

zostaviť uzol.js fibonacci/fibonacci.s> váš súbor.h

Výstup je naformátovaný tak, aby ho bolo možné priamo zahrnúť do firmvéru KIM Uno ako hlavičkový súbor C, ale simulátor ho môže použiť aj na simuláciu. Stačí zadať:

uzol sim.js váš súbor.h

A na displeji sa vám zobrazí výsledok simulácie a výstup očakávaný od KIM Uno.

Toto bol veľmi stručný úvod do týchto nástrojov; Odporúčam vám hrať sa s nimi a pozrieť sa, ako fungujú. Tak získate hlboké znalosti a osvojíte si princípy fungovania CPU, inštrukcií, assemblerov a emulátorov;-)

Krok 13: Outlook

Výhľad
Výhľad
Výhľad
Výhľad
Výhľad
Výhľad

Gratulujem

Ak si to prečítate, pravdepodobne ste prešli celým týmto návodom a vytvorili ste si vlastné KIM Uno. To je naozaj pekné.

Tým sa ale cesta nekončí - existuje nekonečné množstvo možností, ako by ste mohli KIM Uno upraviť a prispôsobiť ho svojim potrebám a predstavám.

KIM Uno mohol byť napríklad vybavený „skutočným“retro emulátorom CPU, ktorý by mohol emulovať slávny MOS 6502 alebo Intel 8085, 8086 alebo 8088. Potom by to prešlo k mojej počiatočnej vízii, skôr ako som sa dozvedel o OISC.

Existujú však aj iné použitia, pretože dizajn hardvéru je dosť generický. KIM Uno bolo možné použiť ako …

  • … diaľkový ovládač napr. pre CNC alebo iné zariadenia. Môžu byť káblové alebo vybavené infračervenou diódou alebo iným bezdrôtovým odosielateľom
  • … vrecková kalkulačka (hexadecimálna). Firmvér je možné veľmi ľahko prispôsobiť a dizajn dosky nie je potrebné veľmi meniť. Sieťotlač je možné prispôsobiť matematickým operáciám a medzeru medzi segmentmi je možné odstrániť. Okrem toho je už pripravený na túto transformáciu

Dúfam, že ste sa pri sledovaní a budovaní KIM Uno bavili rovnako ako ja pri jeho navrhovaní a plánovaní. A ak ho rozšírite alebo upravíte - dajte mi prosím vedieť. Na zdravie!

Súťaž o DPS
Súťaž o DPS
Súťaž o DPS
Súťaž o DPS

Druhé miesto v súťaži o PCB

Odporúča: