Sisällysluettelo:

KIM Uno - 5 €: n mikroprosessorikone -emulaattori: 13 vaihetta (kuvilla)
KIM Uno - 5 €: n mikroprosessorikone -emulaattori: 13 vaihetta (kuvilla)

Video: KIM Uno - 5 €: n mikroprosessorikone -emulaattori: 13 vaihetta (kuvilla)

Video: KIM Uno - 5 €: n mikroprosessorikone -emulaattori: 13 vaihetta (kuvilla)
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Kesäkuu
Anonim
Image
Image
KIM Uno - 5 €: n mikroprosessorisuunnittelulaite
KIM Uno - 5 €: n mikroprosessorisuunnittelulaite
KIM Uno - 5 €: n mikroprosessorisuunnittelulaite
KIM Uno - 5 €: n mikroprosessorisuunnittelulaite

KIM Uno on kannettava, ohjelmiston määrittämä kehityssarja (retro) mikroprosessoreille. Mutta esitän ajatuksen siitä palaamalla ajassa taaksepäin:

Loppuvuodesta 2018 tuli mieleeni, että halusin rakentaa pienen kannettavan mikroprosessoripaketin, aivan kuten MOS Technology, Inc: n kuuluisa KIM-1 ja jonka on suunnitellut Chuck Peddle, joka myös osallistui 6502-suorittimen luomiseen.

Mutta "paljaan luun" kehittäjäpaketin rakentaminen erillisillä logiikkakomponenteilla ei ollut vaihtoehto, koska se tarvitsi suuren virtalähteen (koska nuo vanhat laitteet käyttävät yleensä vakavaa virtaa) ja myös kehittäminen olisi erittäin aikaa vievää. Ja haluan sen nyt!

Siksi suunnittelin KIM Unon kannettavaksi laitteeksi, joka sopii yhteen käteen ja saa virtansa kahdesta CR2032 -paristosta. Se käyttää ATMega328p ("Arduino") -kontrolleria, joka toimii 8 MHz: llä halutun suorittimen emuloimiseksi (tai simuloimiseksi). Tämä arkkitehtuuri varmistaa myös, että emuloidut suorittimet ovat vaihdettavissa mihin tahansa, mikä sopii mikrokontrollerin flash -muistiin. Se on siis monikäyttöinen laite.

Sattumalta katsoin myöhemmin YouTubessa todella hyvän puheen - nimeltään The Ultimate Apollo Guidance Computer Talk (34C3) - jossa mainitaan "One Instruction Set Computers" tai OISC. En tiennyt heistä ja löysin tämän täydellisenä ehdokkaana sen toteuttamiseen.

KIM Uno emuloi suorittimen yhdellä komennolla: subleq - vähennä ja haara, jos se on pienempi tai yhtä suuri kuin nolla.

Jos seuraat kanssani tämän ohjeen kautta, voit rakentaa oman KIM Unon hetkessä. Ja paras osa - sen lisäksi, että voit muokata sitä makusi mukaan - on, että sen valmistaminen maksaa vain 4,75 € (vuoden 2018 lopussa).

Yksi vinkki: on olemassa Git -arkisto, joka sisältää kaikki tämän ohjeen eri vaiheiden tarjoamat tiedostot. Jos haluat muokata joitain resursseja ja jakaa ne kanssamme, voit tehdä PR: n. Mutta voit myös ladata kaikki tiedostot kerralla. Yksinkertaisesti osoitteeseen https://github.com/maxstrauch/kim-uno. Kiitos!

On toinenkin varsin mielenkiintoinen projekti, nimeltään sama (KIM Uno), joka tekee todellisen kopion 6502 KIM Unosta. Tarkista se täältä. Luoja jopa myy sarjan. Joten jos olet kiinnostunut 6502: sta ja pidät tästä projektista, sinun kannattaa katsoa siellä!

Vaihe 1: Piirilevyn hankinta

Piirilevyn hankinta
Piirilevyn hankinta
Piirilevyn hankinta
Piirilevyn hankinta

Kuten näette, käytin tilaisuutta suunnitella piirilevy ja antaa sen tehdä ammattimaisesti. Koska sen valmistaminen ulkoisesti ja sen toimittaminen sinulle vie paljon aikaa (riippuen siitä, missä päin maailmaa olet;-)), sen tilaaminen on ensimmäinen askel. Voimme sitten jatkaa muiden vaiheiden kanssa, kun piirilevy valmistetaan ja lähetetään sinulle.

Tilasin piirilevyni Kiinasta PCBWaysta vain 5 dollarilla. En saa mitään hyötyä siitä, että esitän PCBWayn PCB -valmistajana, se vain toimi hyvin minulle ja saattaa toimia myös sinulle. Mutta voit tilata ne mistä tahansa muusta paikasta, kuten JLCPCB, OSH Park tai paikallinen PCB -yritys.

Mutta jos olet valmis tilaamaan ne PCBWay-sivustolta, voit ladata liitteenä olevan ZIP-tiedoston "kim-uno-rev1_2018-12-12_gerbers.zip" ja ladata sen suoraan PCBWaylle ilman muutoksia. Tämä on alkuperäinen tiedosto, jolla tilasin piirustukset, jotka näet kuvissa.

Jos tilaat niitä toiselta valmistajalta, sinun on ehkä vietävä ne uudelleen alkuperäisistä KiCad-lähteistä, koska olen luonut ne PCBWayn spesifikaatioiden avulla, jotka löydät täältä. Lataa alkuperäiset KiCad-lähteet "kim-uno-kicad-sources.zip" ja purkaa se.

Mutta on olemassa toinenkin tapa: jos et halua tilata piirilevyä, voit rakentaa oman version käyttämällä perfboardia tai jopa leipälautaa.

Joka tapauksessa: koska piirilevyt ovat nyt matkalla, voimme keskittyä muihin osiin! Tule, seuraa minua.

Vaihe 2: Komponenttien hankinta

Komponenttien hankinta
Komponenttien hankinta
Komponenttien hankinta
Komponenttien hankinta
Komponenttien hankinta
Komponenttien hankinta

Nyt sinun on hankittava komponentit. Tätä varten löydät yleiskuvan kaikista tarvittavista komponenteista ja määristä, jotka on liitetty tähän vaiheeseen, sekä BOM (materiaaliluettelo).

BOM sisältää linkkejä eBayhin. Vaikka nämä tarjoukset saatetaan sulkea, kun luet tämän, voit käyttää sitä lähtökohtana. Käytetyt komponentit ovat melko vakio.

Seuraavassa selitän sinulle kaikki tarvittavat komponentit:

  • 7x 1 kΩ vastukset seitsemän segmentin näytöille. Voit pienentää arvoa (esim. 470 Ω) saadaksesi ne kirkkaammaksi, mutta älä pienennä sitä liikaa, muuten LEDit kuolevat tai akku tyhjenee nopeasti. Huomasin, että tämä arvo toimii minulle
  • 1x 10 kΩ vetovastus mikrokontrollerin RESET-linjalle
  • 1x 100nF kondensaattori tasoittaa kaikki jännitepiikit (mitä ei pitäisi tapahtua, koska käytämme paristoja, eikö, mutta hyväksi …)
  • 1x ATMega328P DIP-28-paketissa (yleensä nimeltään ATMega328P-PU)
  • 1x pääpiirilevy - katso edellinen vaihe; joko tilattu tai itse rakennettu
  • 2x CR2032 -paristopidikettä
  • 1x SPDT (yksinapainen, kaksoisheitto) -kytkin, jossa on pohjimmiltaan kolme koskettinta ja joka kahdessa tilassa (joko päällä tai pois) se yhdistää kaksi kosketinta
  • 20x kosketusnäppäimet näppäimistölle. Piirilevyn takaosan käyttämiseen käytin SMD -kosketuspainikkeita (vakio 6x6x6 mm) - ne ovat melko helppo juottaa, kuten näet
  • VALINNAINEN: 1x 1x6 -nastainen otsikko ohjelmoijan liittämistä varten, mutta tämä on valinnainen, kuten myöhemmin näet
  • 1x seitsemän segmentin näyttö, jossa on 4 numeroa, ja 1x seitsemän segmentin näyttö, jossa on 2 numeroa - kortti ottaa vain 0,36 tuuman (9,14 mm) elementtejä, joissa on yhteiset anodijohdot. Molemmat vaatimukset ovat tärkeitä toimivan yksikön saamiseksi. Mutta myös tämäntyyppinen seitsemän segmentin näyttö ovat hyvin yleisiä

Tämän vaiheen liitteenä on tiedosto "komponent-datasheets.zip", joka sisältää tarkempia tietoja käytettyjen komponenttien mitoista ja tyypeistä. Mutta suurin osa komponenteista on erittäin vakio ja ne voidaan hankkia helposti pienellä rahalla.

Nyt sinun on odotettava, kunnes kaikki komponentit ovat valmiita jatkamaan juottamista. Tänä aikana voit jo hypätä loppuun ja lukea hieman KIM Unon käytöstä, jos haluat.

Vaihe 3: Juototyökalun yleiskatsaus

Juototyökalun yleiskatsaus
Juototyökalun yleiskatsaus
Juototyökalun yleiskatsaus
Juototyökalun yleiskatsaus

KIM Unon juottamiseen ja rakentamiseen tarvitset kuvien osoittamia työkaluja:

  • Langanleikkuri (komponenttijohtojen pään katkaisemiseen)
  • Litteät pihdit
  • Pari pinsettejä
  • (kunnollinen) juote, joka ei ole liian paksu - käytän 0,56 mm juotosta
  • Juotosrauta - et tarvitse huippuluokan juotosrautaa (koska emme myöskään tee rakettitiedettä täällä) - käytän Ersa FineTip 260: ta pitkään ja se on todella hyvä
  • Flux -kynä: fluxin lisääminen komponentteihin ja tyynyihin helpottaa niiden juottamista, koska juote "virtaa" itsekseen oikeaan paikkaan*
  • Valinnaisesti: sieni (metallivillaa) juotosraudalle

Voit myöhemmin ohjelmoida KIM Unon myös:

  • tietokone AVR-GCC-työkaluketjulla ja avrdude ladataksesi laiteohjelmiston
  • Internet -palveluntarjoaja (ohjelmoija) - kuten voit nähdä kuvasta, käytän Arduino Unoa Internet -palveluntarjoajana erityisellä luonnoksella - joten sinun ei tarvitse ostaa hienoja laitteita

* tarvitaan ihmisten ohjausta;-)

Oletko valmis? Seuraavassa vaiheessa aloitamme KIM Unon kokoamisen.

Vaihe 4: Juotos #1: Vastuksien ja kondensaattoreiden lisääminen

Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen
Juotos #1: Vastusten ja kondensaattoreiden lisääminen

Sinun tulisi aina työskennellä pienimmistä (komponenttien korkeuden suhteen) komponenteista ensin korkeimpiin komponentteihin viimeisenä. Siksi aloitamme lisäämällä vastukset ja taivuttamalla jalkojen takana, jotta vastukset on helppo juottaa ja pysyä paikallaan. Katkaise sitten pitkät johdot.

Lisäksi, ei näy kuvissa, lisää pieni 100 nF kondensaattori samalla tavalla.

Yksi vinkki: pidä lankajalat pienessä astiassa, ne ovat joskus hyödyllisiä.

Vaihe 5: Juotos #2: Näppäimistön kokoaminen

Juotos #2: Näppäimistön kokoaminen
Juotos #2: Näppäimistön kokoaminen
Juotos #2: Näppäimistön kokoaminen
Juotos #2: Näppäimistön kokoaminen
Juotos #2: Näppäimistön kokoaminen
Juotos #2: Näppäimistön kokoaminen

Seuraava vaihe on juottaa 20 SMD -kosketuskytkintä. Koska tämä työ on hieman hankalaa, teemme sen nyt, kun piirilevy asettuu tasaisesti työpöydälle.

Työskentelemme ylhäältä alas (tai vasemmalta oikealle, jos piirilevy on suunnattu kuvien mukaisesti) ja aloitamme ensimmäisestä rivistä: valitse yksi neljästä tyynystä jokaiselle kytkimelle ja kastele se flux -kynällä.

Tartu sitten pinseteillä kytkimeen ja aseta se varovasti neljän tyynyn päälle. Juotos sen jälkeen vain valitsimen jalka, joka on valitsemallasi ja vuoalla valmistetulla tyynyllä. Tätä varten sinun pitäisi "napata" rautaa juotoksella ennen aloittamista. Tällä menetelmällä suorita koko kytkinrivi, juottamalla vain yksi jalka.

Kuva nuolilla näyttää suurennuksen, kuinka juotos tehtiin tarkasti.

Kun olet juottanut koko rivin (vain yksi tappi), voit tehdä pieniä säätöjä lämmittämällä tapin takaisin ylös ja asettamalla kytkimen uudelleen. Varmista, että kytkimet on kohdistettu mahdollisimman hyvin.

Jos olet tyytyväinen kohdistukseen, voit kastaa kaikki muut tapit flux -kynällä ja juottaa ne sitten koskettamalla sitä juotosraudalla ja lisäämällä hieman juotosta myös koskettamalla sitä. Näet, että juote imetään suoraan tyynyyn.

Rivin juottamisen jälkeen huomaat, että saat siitä kiinni ja se ei ole niin kovaa, mutta toistuvaa. Joten tee vain loput ja päädyt valmiiseen näppäimistöön hetkessä.

Vaihe 6: Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko

Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko
Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko
Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko
Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko
Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko
Juotos #3: Seitsemän segmentin näyttö, kytkin ja nastojen otsikko

Nyt voit lisätä kytkimen ja tapin otsikon (valinnainen) pitämällä sitä sormellasi ja juottamalla yhden tapin pitämään sitä kiinni piirilevyyn, jotta voit juottaa muut nastat ja lopuksi koskettaa alkuperäistä kiinnitystappia.

Ole varovainen, ettet polta itseäsi kuumalla juotosraudalla. Jos et ole tyytyväinen tähän, voit käyttää pientä teippiä (esim. Maalarin teippi) kiinnittääksesi komponentin. Näin molemmat kädet voivat liikkua vapaasti.

Seitsemän segmentin näytöt on juotettu samalla tavalla (katso kuva): laitat sen sisään, pidät sitä kädelläsi tai teipillä ja juotat kaksi vastakkaista tappia pitämään sen paikallaan ja voit juottaa muut tapit.

Mutta ole varovainen ja aseta seitsemän segmentin näyttö oikeaan suuntaan (desimaalipisteet näppäimistöä kohti). Muuten olet pulassa…

Vaihe 7: Juotos #4: Mikro -ohjaimen juottaminen

Juotos #4: Mikro -ohjaimen juottaminen
Juotos #4: Mikro -ohjaimen juottaminen

Nyt kun sinulla on paljon harjoittelua, voit mennä eteenpäin ja laittaa mikrokontrolleri päälle siten, että yläreunassa oleva lovi (tai ensimmäinen tappi) osoittaa kohti kytkintä. Litteillä pihdeillä voit taivuttaa mikro -ohjaimen jalat varovasti hieman sisäänpäin niin, että ne vastaavat piirilevyn reikiä.

Koska se on tiukka, tarvitset jonkin hallitun voiman mikrokontrollerin asettamiseksi sisään. Etuna on, että se ei putoa. Tämä tarkoittaa, että voit ottaa aikasi ja juottaa sen takaa.

Vaihe 8: Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)

Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)
Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)
Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)
Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)
Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)
Juotos #5: Lisää paristopidikkeet (viimeinen vaihe)

Lopuksi sinun on lisättävä paristopidikkeet taakse. Tätä varten sinun tarvitsee vain käyttää flux -kynää ja kastaa kaikki neljä tyynyä ja saada sitten juote rautaasi. Kohdista paristopidike varovasti molempiin tyynyihin. Koskettimien molemmissa päissä pitäisi näkyä sama määrä PCB -tyynyä. Kosketa silitysraudalla piirilevyä ja paristopidikkeen jalkaa. Juotos virtaa tyynyn alle ja sen päälle ja kiinnittää sen paikalleen kuvan osoittamalla tavalla. Jos sinulla on ongelmia tämän kanssa, voit lisätä kynällä enemmän virtausta.

Vaihe 9: Emulaattorin vilkkuminen

Emulaattorin vilkkuminen
Emulaattorin vilkkuminen
Emulaattorin vilkkuminen
Emulaattorin vilkkuminen
Emulaattorin vilkkuminen
Emulaattorin vilkkuminen

Oheisesta zip-arkistosta "kim-uno-firmware.zip" löydät emulaattorin lähdekoodin sekä jo kootun "main.hex", jonka voit ladata suoraan mikro-ohjaimeen.

Ennen kuin voit käyttää sitä, sinun on asetettava mikro -ohjaimen sulakebitit siten, että se käyttää sisäistä 8 MHz: n kelloa jakamatta sitä puoliksi. Voit suorittaa työn seuraavalla komennolla:

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

Jos et tiedä avrdudea: se on ohjelma ohjelmien lataamiseen mikro -ohjaimeen. Voit oppia lisää tästä. Pohjimmiltaan asennat sen ja sitten se on käyttövalmis. Asennusta varten sinun on ehkä vaihdettava argumentti "-P" toiseen sarjaporttiin. Tarkista tietokoneeltasi, mitä sarjaporttia käytetään (esim. Arduino IDE: n sisällä).

Tämän jälkeen voit päivittää laiteohjelmiston mikrokontrolleriin tällä komennolla:

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

Jälleen: sama koskee "-P": tä kuin yllä.

Koska minulla ei ole "ammattimaista" Internet-palveluntarjoajaa (Järjestelmän sisäinen ohjelmoija), käytän aina Arduino UNO: ta (katso kuva) ja liitteenä olevaa luonnosta ("arduino-isp.ino", Randall Bohn). Tiedän, että on olemassa uudempi versio, mutta tämän version kanssa minulla ei ollut mitään ongelmia viimeisten viiden vuoden aikana, joten pidän sen. Se vain toimii. Luonnoksen otsikossa olevan kommentin avulla saat Arduino UNO: n pinoutin ja käyttämällä KIM Unon kaaviota (katso liitteenä) saat 1x6 ISP -otsikon pinoutin KIM Unossa. Neliönmallinen tappi lähellä seitsemän segmentin näyttöä on nasta 1 (GND). Seuraavat nastat ovat (oikeassa järjestyksessä): RESET, MOSI, MISO, SCK, VCC. Voit kytkeä VCC: n joko 3V3 tai 5V.

Jos et lisännyt 1x6 -nastaista otsikkoa, voit käyttää leipälevyn johtoja ja laittaa ne liitäntäreikiin ja kulmauttaa sormellasi - aivan kuten kuvassa. Tämä muodostaa riittävän yhteyden laiteohjelmiston vilkkumiseen ja sulakkeiden asettamiseen. Mutta jos pidät pysyvämmästä asennuksesta, sinun on ehdottomasti lisättävä 1x6 -nastaiset otsikot.

Minulla on kaksi laitetta: tuotantoversio, jossa ei ole nastan otsikoita, ja kehitysversio, jossa on nastaotsikot, jotka jätän kytkettynä ja käytän sitä yhä uudelleen kehittämisen aikana. Tämä on paljon mukavampaa.

Vaihe 10: Valmis

Valmis
Valmis
Valmis
Valmis

Nyt olet valmis ja voit aloittaa omien subleq -ohjelmien kirjoittamisen paperille, koota sen ja syöttää sen sitten muistiin.

KIM Unon mukana tulee esiohjelmoitu Fibonacci-laskenta, joka alkaa muistipaikasta 0x0a. Se on oletusarvoisesti n = 6, joten sen pitäisi saada arvo 8. Aloita laskenta painamalla "Go".

Vaihe 11: PCB -suunnitteluanalyysi

PCB -suunnitteluanalyysi
PCB -suunnitteluanalyysi
PCB -suunnitteluanalyysi
PCB -suunnitteluanalyysi

Tämän projektin päätyttyä löysin pari kohtaa, jotka ovat huomionarvoisia ja joita on käsiteltävä hallituksen uudessa tarkistuksessa:

  • ATMega328p: n silkkinäytöllä ei ole tavallista lovia, jossa ensimmäinen tappi sijaitsee. DIP-28-jalanjäljessä ei ole edes neliömäistä tyynyä, jossa ensimmäinen tappi sijaitsee. Tätä pitäisi ehdottomasti parantaa yksityiskohtaisemmalla silkkipainolla sekaannusten välttämiseksi
  • Internet -palveluntarjoajan otsikossa ei ole liitosmerkintöjä silkkinäytöllä. Tämän vuoksi on vaikea tunnistaa, miten se yhdistetään Internet -palveluntarjoajaan
  • Internet -palveluntarjoajan otsikko voidaan muuttaa 2x6 -nastaiseksi otsikoksi, jossa on tavallinen nastainen asettelu sekaannusten välttämiseksi

Näitä kohtia lukuun ottamatta olen melko onnellinen siitä, miten se osoittautui ja toimi ensimmäisellä yrityksellä.

Vaihe 12: Kuinka ohjelmoida SUBLEQ?

Image
Image
Kuinka ohjelmoida SUBLEQ?
Kuinka ohjelmoida SUBLEQ?
Kuinka ohjelmoida SUBLEQ?
Kuinka ohjelmoida SUBLEQ?

Kuten alussa mainittiin, KIM Unon nykyinen laiteohjelmisto emuloi One Instruction Set -tietokonetta (OISC) ja antaa subleq -käskyn suorittaa laskutoimitukset.

Subleq -käsky tarkoittaa vähennyslaskua ja haaraa, jos se on pienempi tai yhtä suuri kuin nolla. Pseudokoodissa tämä näyttää tältä:

subleq A B C mem [B] = mem [B] - mem [A]; jos (mem [B] <= 0) siirry C;

Koska KIM Uno emuloi 8-bittistä konetta, kaikki argumentit A, B ja C ovat 8-bittisiä arvoja ja siksi ne voivat käsitellä 256 tavun päämuistia. Tätä voidaan tietysti laajentaa tekemällä A-, B- ja C-monitavuisia arvoja. Mutta toistaiseksi pidämme sen yksinkertaisena.

KIM Unossa on myös "oheislaitteita": näyttö ja näppäimistö. Se käyttää muistiin kartoitettua arkkitehtuuria näiden oheislaitteiden liittämiseen, vaikka muistikartta on hyvin yksinkertainen:

  • 0x00 = Z -rekisteri (nolla) ja se on pidettävä nollassa.
  • 0x01 - 0x06 = kuusi tavua, jotka edustavat jokaisen näyttösegmentin arvoa (oikealta vasemmalle). Arvo 0xf - katso lisätietoja lähdekoodista (main.c).
  • 0x07, 0x08, 0x09 = kolme tavua, joissa jokainen tavu edustaa kahta seitsemän segmentin näyttöä (oikealta vasemmalle). Nämä muistipaikat mahdollistavat yksinkertaisesti tuloksen näyttämisen jakamatta tulosta kahteen nippaleeseen sijoittaaksesi sen yksinumeroisiin muistipaikkoihin 0x01 - 0x06.
  • 0x0a+ = Ohjelma alkaa 0x0a. Tällä hetkellä "Go" -näppäin suoritetaan 0x0a kiinteänä.

Näiden tietojen avulla voidaan nyt kirjoittaa ohjelma assemblerissa ja kirjoittaa ohjeet muistiin ja suorittaa se sitten. Koska käskyjä on vain yksi, syötetään vain argumentit (A, B ja C). Joten kolmen muistipaikan jälkeen seuraavat käskyargumentit alkavat ja niin edelleen.

Tämän vaiheen liitteenä on tiedosto "fibonacci.s" ja kuva käsin kirjoitetusta ohjelmasta, joka on esimerkki Fibonaccin toteutuksesta. Mutta odota: käytetään kolmea ohjetta - erityisesti ADD, MOV ja HLT - jotka eivät ole suqq. "Mikä on sopimus? Etkö sanonut, että on vain yksi ohje, subleq?" sinä kysyt? Se on erittäin helppoa: subleqin avulla voit jäljitellä näitä ohjeita erittäin helposti:

MOV a, b - tietojen kopioiminen paikasta a paikkaan b voi koostua:

  1. subleq b, b, 2 (seuraava ohje)
  2. subleq a, Z, 3 (seuraava ohje)
  3. subleq Z, b, 4 (seuraava ohje)
  4. suqq Z, Z, esim. 5 (seuraava ohje)

Käyttämällä subbleq -vähennysominaisuutta, joka tekee mem - mem [a] ja korvaa mem tuloksella, arvo kopioidaan nollarekisterin avulla. Ja "subleq Z, Z,…" yksinkertaisesti nollaa rekisterin nollaksi Z: n arvosta riippumatta.

LISÄÄ a, b - lisää arvot a + b ja tallentaa summan b voi koostua seuraavista:

  1. subleq a, Z, 2 (seuraava ohje)
  2. subleq Z, b, 3 (seuraava ohje)
  3. suqq Z, Z, esim. 4 (seuraava ohje)

Tämä ohje yksinkertaisesti laskee mem - (- mem [a]), joka on mem + mem [a] käyttämällä myös vähennysominaisuutta.

HLT - pysäyttää suorittimen ja lopettaa suorituksen:

Määritelmän mukaan emulaattori tietää, että CPU haluaa lopettaa, jos se hyppää 0xff: iin (tai -1, jos se latautuu). Yksinkertainen siis

alaq Z, Z, -1

tekee työn ja ilmoittaa emulaattorille, että sen pitäisi lopettaa emulointi.

Näiden kolmen yksinkertaisen ohjeen avulla Fibonaccin algoritmi voidaan toteuttaa ja se toimii hyvin. Tämä johtuu siitä, että OISC voi laskea kaiken, mitä "oikea" tietokone voi laskea vain ohjeella subleq. Mutta tietysti on monia kompromisseja - kuten koodin pituus ja nopeus. Siitä huolimatta se on loistava tapa oppia ja kokeilla matalan tason ohjelmistoja ja tietokoneita.

Tämän vaiheen liitteenä on myös zip -arkisto "kim_uno_tools.zip". Se sisältää joitakin perusasentajia ja simulaattoreita KIM Unolle. Ne on kirjoitettu NodeJS -muodossa - varmista, että olet asentanut sen.

Ohjelmien kokoaminen

Jos katsot "fibonacci/fibonacci.s", huomaat, että se on keskustelun kohteena olevan fibonacci -toteutuksen lähdekoodi. Jos haluat koota sen ja tehdä siitä ohjelman, jota KIM Uno voi ajaa, kirjoita seuraava komento (puretun "kim_uno_tools.zip" -arkiston juureen):

node node.js fibonacci/fibonacci.s

ja se tulostaa virheen, jos teit virheen, tai läpäisee tuloksena olevan ohjelman. Jos haluat tallentaa sen, voit kopioida tuloksen ja tallentaa sen tiedostoon tai suorittaa tämän komennon:

solmu assemble.js fibonacci/fibonacci.s> yourfile.h

Lähtö on muotoiltu siten, että se voidaan sisällyttää suoraan KIM Uno -laiteohjelmistoon C -otsikkotiedostona, mutta simulaattori voi myös käyttää sitä simulointiin. Kirjoita vain:

solmu sim.js oma tiedosto.h

Ja sinulle näytetään simulaatiotulos ja KIM Unolta odotettu lähtö näytöllä.

Tämä oli hyvin lyhyt johdanto tähän työkaluun; Suosittelen leikkimään heidän kanssaan ja katsomaan, miten ne toimivat. Näin saat syvää tietoa ja opit prosessorien, ohjeiden, kokoonpanijoiden ja emulaattorien toimintaperiaatteet;-)

Vaihe 13: Outlook

Näkymät
Näkymät
Näkymät
Näkymät
Näkymät
Näkymät

Onnittelut

Jos luit tämän, olet luultavasti käynyt läpi koko ohjeen ja rakentanut oman KIM Unon. Tämä on todella mukavaa.

Mutta matka ei pääty tähän - on loputon määrä vaihtoehtoja, joilla voit muokata KIM Unoa ja muokata sitä tarpeidesi ja mieltymystesi mukaan.

Esimerkiksi KIM Uno voitaisiin varustaa "oikealla" retro -CPU -emulaattorilla, joka voisi jäljitellä kuuluisaa MOS 6502- tai Intel 8085-, 8086- tai 8088. Sitten se menisi tietä alkuperäiseen näkemykseeni, ennen kuin opin OISC -laitteista.

Mutta on myös muita käyttötarkoituksia, koska laitteiston suunnittelu on melko yleinen. KIM Unoa voidaan käyttää…

  • … Kauko -ohjain esim. CNC -laitteille tai muille laitteille. Ehkä johdotettu tai varustettu IR -diodilla tai muulla langattomalla lähettimellä
  • … (Heksadesimaalinen) taskulaskin. Laiteohjelmistoa voidaan mukauttaa erittäin helposti, eikä kortin muotoilua tarvitse muuttaa kovin paljon. Ehkä silkkipaino voidaan mukauttaa matemaattisiin toimintoihin ja segmenttien välinen rako voidaan poistaa. Tämän lisäksi se on jo valmis tähän muutokseen

Toivottavasti teillä oli yhtä hauskaa seurata ja toivottavasti rakentaa KIM Unoa kuin minulla oli sen suunnittelu ja suunnittelu. Ja jos laajennat sitä tai muokkaat sitä - kerro minulle. Kippis!

PCB -kilpailu
PCB -kilpailu
PCB -kilpailu
PCB -kilpailu

Toinen sija piirilevykilpailussa

Suositeltava: