Orodha ya maudhui:

KIM Uno - 5 Em Microcrocessor Dev Kit Emulator: Hatua 13 (na Picha)
KIM Uno - 5 Em Microcrocessor Dev Kit Emulator: Hatua 13 (na Picha)

Video: KIM Uno - 5 Em Microcrocessor Dev Kit Emulator: Hatua 13 (na Picha)

Video: KIM Uno - 5 Em Microcrocessor Dev Kit Emulator: Hatua 13 (na Picha)
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Juni
Anonim
Image
Image
KIM Uno - Emulator ya Dev Kit 5 ya Microprocessor
KIM Uno - Emulator ya Dev Kit 5 ya Microprocessor
KIM Uno - Emulator ya Dev Kit 5 ya Microprocessor
KIM Uno - Emulator ya Dev Kit 5 ya Microprocessor

KIM Uno ni kifaa kinachoweza kupakuliwa, kinachofafanuliwa kwa programu ya microprocessors (retro). Lakini wacha nianzishe wazo lake kwa kurudi nyuma kwa wakati:

Rudi mwishoni mwa 2018 ilinijia akilini mwangu, kwamba nilitaka kujenga kifaa kidogo cha kubeba microprocessor, kama KIM-1 maarufu kutoka MOS Technology, Inc. na iliyoundwa na Chuck Peddle ambaye pia alishiriki kuunda CPU ya 6502.

Lakini kujenga kitanda cha "bare-bone" na vifaa vyenye mantiki haikuwa chaguo kwani ilihitaji usambazaji mkubwa wa umeme (kwani vifaa hivyo vya zamani huwa na nguvu ya sasa) na pia maendeleo yatakuwa ya muda mwingi. Na ninataka sasa!

Kwa hivyo, nilibuni KIM Uno kama kifaa kinachoweza kubebeka, ambacho kinafaa kwa mkono mmoja na kinatumiwa na betri mbili za CR2032. Hutumia ATMega328p ("Arduino") microcontroller inayoendesha kwa 8 MHz kuiga (au kuiga) CPU inayotaka. Usanifu huu pia unahakikisha, kwamba CPU zilizoiga zinaweza kubadilishwa na kitu chochote kinachofaa ndani ya kumbukumbu ndogo ya microcontroller. Kwa hivyo ni kifaa cha kusudi anuwai.

Kwa bahati mbaya baadaye nilitazama mazungumzo mazuri sana - yaliyoitwa Mazungumzo ya Kompyuta ya Mwisho ya Apollo Guidance (34C3) - kwenye YouTube ambapo "Maagizo Moja huweka Kompyuta" au OISC zinatajwa. Sikujua juu yao na nikapata hii kama mgombea kamili wa kuitekeleza.

KIM Uno inaiga CPU na maagizo moja tu: subleq - toa na tawi ikiwa chini ya au sawa na sifuri.

Ukifuata pamoja nami kupitia hii inayoweza kufundishwa, unaweza kujenga KIM Uno yako mwenyewe bila wakati wowote. Na sehemu bora - kando na ukweli kwamba unaweza kuibadilisha kwa ladha yako - ni kwamba inachukua tu 4, 75 € kutengeneza (kufikia mwisho wa 2018).

Kidokezo kimoja: kuna ghala ya Git ambayo ina faili zote zilizotolewa na hatua tofauti za hii inayoweza kufundishwa. Ikiwa unataka kurekebisha rasilimali zingine na kuzishiriki nasi unaweza kufanya PR. Lakini unaweza pia kupakua faili zote mara moja hapo. Kwa https://github.com/maxstrauch/kim-uno pekee. Asante!

Kuna mradi mwingine mzuri wa kuvutia, unaoitwa sawa (KIM Uno), ambao hufanya picha halisi ya 6502 KIM Uno. Angalia hapa. Muumba hata anauza kit. Kwa hivyo ikiwa una nia ya 6502 na kama mradi huu, unapaswa kuangalia huko!

Hatua ya 1: Kutafuta PCB

Kutafuta PCB
Kutafuta PCB
Kutafuta PCB
Kutafuta PCB

Kama unavyoona, nilitumia fursa hiyo kuunda PCB na kuiruhusu itengenezwe kitaalam. Kwa kuwa kuifanya nje na kuipeleka kwako itachukua muda mwingi (kulingana na mahali ulipo ulimwenguni;-)), kuiagiza ni hatua ya kwanza. Tunaweza kisha kuendelea na hatua zingine wakati PCB inafanywa na kusafirishwa kwako.

Niliamuru PCB zangu nchini China kwa PCBWay kwa $ 5 tu. Sipati faida yoyote ya kuwasilisha PCBWay kama mtengenezaji wangu wa goto kwa PCB, ni kwamba tu ilinifanyia kazi vizuri na inaweza pia kukufaa. Lakini unaweza kuziamuru mahali pengine pote kama JLCPCB, OSH Park au kampuni yoyote ya PCB ya hapa.

Lakini ikiwa uko tayari kuziamuru kwenye PCBWay unaweza kupakua faili ya ZIP iliyoambatishwa "kim-uno-rev1_2018-12-12_gerbers.zip" na uipakie moja kwa moja kwa PCBWay bila mabadiliko yoyote. Hii ndio faili asili niliyokuwa niagiza PCB ambazo unaweza kuona kwenye picha.

Ikiwa unaziagiza kutoka kwa mtengenezaji mwingine unaweza kuhitaji kuziuza tena kutoka kwa vyanzo asili vya KiCad, kwa sababu niliizalisha na maelezo kutoka kwa PCBWay unaweza kupata hapa. Kwa vyanzo asili vya KiCad, pakua "kim-uno-kicad-source.zip" na uiondoe.

Lakini kuna njia hata ya pili: ikiwa hautaki kuagiza PCB, unaweza kujenga toleo lako mwenyewe kwa kutumia ubao wa upinde au hata ubao wa mkate.

Kwa hivyo: kwa kuwa PCB sasa ziko njiani, tunaweza kuzingatia sehemu zingine! Njoo, unifuate.

Hatua ya 2: Kusaka Vipengele

Kutafuta Vipengele
Kutafuta Vipengele
Kutafuta Vipengele
Kutafuta Vipengele
Kutafuta Vipengele
Kutafuta Vipengele

Sasa unahitaji kupata vifaa. Kwa hili utapata picha ya muhtasari wa vifaa vyote na idadi unayohitaji, iliyoambatanishwa na hatua hii na BOM (muswada wa vifaa).

BOM ina viungo kwa eBay. Ingawa ofa hizo zinaweza kufungwa wakati unasoma hii, unaweza kuitumia kama mwanzo. Vipengele vilivyotumiwa ni sawa.

Katika yafuatayo nitakuelezea vitu vyote vinavyohitajika:

  • Vipinga 7x 1 kΩ kwa maonyesho saba ya sehemu. Unaweza kupunguza thamani (k.v. hadi 470 Ω) ili kuzifanya ziang'ae zaidi, lakini ipunguze sio nyingi sana vinginevyo LED zitakufa au betri hutolewa haraka sana. Niligundua kuwa dhamana hii inanifanyia kazi
  • 1x 10 kΩ kama kontena la kuvuta kwa laini ya RESET ya mdhibiti mdogo
  • 1x 100nF capacitor kulainisha spikes za voltage yoyote (ambayo haipaswi kutokea kwani tunatumia betri, sawa, lakini kwa kipimo kizuri…)
  • 1x ATMega328P katika kifurushi cha DIP-28 (kawaida huitwa ATMega328P-PU)
  • 1x PCB kuu - angalia hatua ya awali; ama kuamuru au kujengwa na wewe mwenyewe
  • Wamiliki wa betri 2x CR2032
  • 1x SPDT (pole moja, kutupa mara mbili) ambayo kimsingi ina anwani tatu na katika kila majimbo yake mawili (iwe ndani au mbali) inaunganisha anwani mbili
  • Vifungo 20x vya kushinikiza kwa kibodi. Kutumia upande wa nyuma wa PCB nilitumia vifungo vya kushinikiza vya SMD (zile za kawaida 6x6x6 mm) - ni rahisi kutengenezea kama utaona.
  • KWA hiari: kichwa cha siri cha 1x 1x6 cha kuunganisha programu, lakini hii ni hiari kama utaona baadaye
  • Onyesho la sehemu 1x yenye tarakimu 4 na 1x sehemu saba ya kuonyesha na tarakimu 2 - bodi itachukua tu vipengee vya inchi 0.36 (9, 14 mm) na waya wa kawaida wa anode. Mahitaji yote mawili ni muhimu ili kupata kitengo cha kufanya kazi. Lakini pia aina hii ya onyesho la sehemu saba ni kawaida sana

Imeambatanishwa na hatua hii unaweza kupata faili "component-datasheets.zip" ambayo ina habari sahihi zaidi juu ya vipimo na aina za vifaa vilivyotumika. Lakini vifaa vingi ni vya kawaida sana na vinaweza kupatikana kwa urahisi kwa pesa kidogo.

Sasa unahitaji kusubiri hadi uwe na vifaa vyote tayari kuendelea kutengenezea. Wakati huu unaweza tayari kuruka hadi mwisho na usome kidogo juu ya kutumia KIM Uno ukipenda.

Hatua ya 3: Muhtasari wa Zana ya Soldering

Muhtasari wa Chombo cha Soldering
Muhtasari wa Chombo cha Soldering
Muhtasari wa Chombo cha Soldering
Muhtasari wa Chombo cha Soldering

Kwa kuuza na kujenga KIM Uno unahitaji zana zilizoonyeshwa na picha:

  • Mkata waya (kukata mwisho wa waya za sehemu)
  • Koleo gorofa
  • Jozi ya kibano
  • Solder ambayo sio nene - ninatumia solder ya 0.56 mm
  • Chuma cha kutengenezea - hauitaji chuma cha chuma cha mwisho cha juu (kwa sababu pia hatujafanya sayansi ya roketi hapa) - ninatumia Ersa FineTip 260 kwa muda mrefu sasa na ni nzuri sana
  • Kalamu ya mtiririko: kuongeza mtiririko kwa vifaa na pedi hufanya iwe rahisi zaidi kuziunganisha kwa kuwa solder basi "inapita" peke yake mahali pa haki *
  • Kwa hiari: sifongo (kutoka chumawool) kwa chuma chako cha kutengeneza

Kwa programu ya baadaye KIM Uno utahitaji pia:

  • kompyuta iliyo na zana ya zana ya AVR-GCC na avrdude kupakia firmware
  • ISP (programu) - kama unaweza kuona kwenye picha ninatumia Arduino Uno yangu kama ISP na mchoro maalum - kwa hivyo hakuna haja ya kununua vifaa vyovyote vya kupendeza

* mwongozo fulani wa wanadamu unahitajika;-)

Uko tayari? Katika hatua inayofuata tutaanza kukusanya KIM Uno.

Hatua ya 4: Soldering # 1: Kuongeza Resistors na Capacitors

Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors
Kugundua # 1: Kuongeza Resistors na Capacitors

Unapaswa kufanya kazi kila wakati kutoka kwa ndogo (kulingana na urefu wa sehemu) kwanza, hadi vifaa vya juu zaidi mwisho. Kwa hivyo, tunaanza kwa kuongeza vipinga na kuinama juu ya miguu nyuma ili wapinzani wawe rahisi kutengeneza na kukaa mahali. Baadaye kata waya mrefu.

Pia, isiyoonyeshwa kwenye picha, ongeza capacitor ndogo ya 100 nF kwa njia ile ile.

Kidokezo kimoja: weka miguu hiyo ya waya kwenye chombo kidogo, wakati mwingine huwa rahisi.

Hatua ya 5: Kugundisha # 2: Kukusanya Kinanda

Kugundua # 2: Kukusanya Kibodi
Kugundua # 2: Kukusanya Kibodi
Kugundua # 2: Kukusanya Kibodi
Kugundua # 2: Kukusanya Kibodi
Kugundua # 2: Kukusanya Kibodi
Kugundua # 2: Kukusanya Kibodi

Hatua inayofuata ni kuuza swichi 20 za kugusa za SMD. Kwa kuwa kazi hii ni fiddly kidogo, tunaifanya sasa, wakati PCB inaweka gorofa kwenye benchi la kazi.

Tutafanya kazi kutoka juu hadi chini (au kutoka kushoto kwenda kulia ikiwa PCB imeelekezwa kama inavyoonekana kwenye picha) na kuanza na safu ya kwanza: chagua moja ya pedi nne kwa kila swichi na uinyeshe kwa kalamu ya flux.

Kisha tumia kibano kuchukua ubadilishaji na kuiweka kwa uangalifu kwenye pedi nne. Kisha solder tu mguu wa swichi ambayo iko kwenye pedi uliyochagua na kuandaa na mtiririko. Kwa hili unapaswa "kunyakua" solder na chuma chako kabla ya kuanza. Kutumia njia hii, kamilisha safu nzima ya swichi, ukiunganisha mguu mmoja tu.

Picha iliyo na mishale inaonyesha ukuzaji jinsi uuzaji ulifanywa haswa.

Baada ya kuuza safu nzima (pini moja tu) unaweza kufanya marekebisho kidogo kwa kupasha pini nyuma na kuweka tena swichi. Hakikisha, kwamba swichi zimewekwa sawa iwezekanavyo.

Ikiwa unafurahi na usawa, unaweza kunyosha pini zingine zote na kalamu ya mtiririko na kisha kuziunganisha kwa kuigusa na chuma cha kutengeneza na kuongeza solder kidogo kwa kuigusa pia. Utaona kwamba solder imeingizwa moja kwa moja kwenye pedi.

Baada ya kuuza safu moja au kwa hivyo utagundua kuwa unapata huta yake na sio ngumu lakini inarudiwa. Kwa hivyo fanya iliyobaki tu na utaishia na kibodi iliyokamilika bila wakati wowote.

Hatua ya 6: Kugundisha # 3: Onyesho la Sehemu Saba, Kubadilisha na Kubandika kichwa

Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa
Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa
Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa
Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa
Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa
Kugundua # 3: Sehemu ya Saba ya Kuonyesha, Kubadili na Kubandika kichwa

Sasa unaweza kuongeza kitufe cha kubadili na kubandika (hiari) kwa kuishika kwa kidole chako na kuibana pini moja kuishikilia kwa PCB, ili uweze kuhimili pini zingine na mwishowe gusa pini ya kwanza ya kushikilia.

Kuwa na gari kubwa ili usijichome na chuma moto. Ikiwa hauko vizuri na hii, unaweza kutumia mkanda kidogo (k. Mkanda wa mchoraji) kushikilia sehemu hiyo. Kwa njia hii una mikono miwili huru kusonga.

Maonyesho hayo ya sehemu saba yameuzwa kwa njia ile ile (angalia picha): unaiweka ndani, shika kwa mkono au mkanda na unganisha pini mbili tofauti ili kuishikilia wakati unaweza kuziba pini zingine.

Lakini kuwa mwangalifu na uweke onyesho la sehemu saba katika mwelekeo sahihi (na nukta za desimali zinakabiliwa na kibodi). Vinginevyo una shida…

Hatua ya 7: Kugundisha # 4: Kuunganisha Microcontroller

Kufundisha # 4: Kuuza Microcontroller
Kufundisha # 4: Kuuza Microcontroller

Sasa kwa kuwa una mazoezi mengi, unaweza kuendelea na kuweka microcontroller na notch juu (au pini ya kwanza) inayoelekea kwenye swichi. Kutumia koleo tambarare unaweza kuinamisha miguu ya microcontroller kwa uangalifu kidogo, ili zilingane na mashimo kwenye PCB.

Kwa kuwa ni sawa, unahitaji nguvu inayodhibitiwa kuweka mdhibiti mdogo. Faida ni kwamba haidondoki. Hii inamaanisha, unaweza kuchukua muda wako na kuuuza kutoka nyuma.

Hatua ya 8: Kugundisha # 5: Ongeza Wamiliki wa Betri (Hatua ya mwisho)

Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)
Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)
Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)
Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)
Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)
Kugundua # 5: Ongeza Wamiliki wa Betri (Hatua ya Mwisho)

Mwishowe unahitaji kuongeza wamiliki wa betri nyuma. Kwa hili unatumia tu kalamu ya flux na kunyunyizia pedi zote nne na kisha upate chuma kwenye chuma chako. Panga mmiliki wa betri kwa uangalifu kwenye pedi zote mbili. Katika miisho yote ya mawasiliano kunapaswa kuwa na kiwango sawa cha pedi ya PCB inayoonekana. Gusa pedi ya PCB na mguu wa mmiliki wa betri na chuma chako. Solder itatiririka chini ya pedi na juu yake na kuilinda kama inavyoonyeshwa kwenye picha. Ikiwa una shida na hii, unaweza kuongeza mtiririko zaidi na kalamu.

Hatua ya 9: Kuangaza Emulator

Kuangaza Emulator
Kuangaza Emulator
Kuangaza Emulator
Kuangaza Emulator
Kuangaza Emulator
Kuangaza Emulator

Katika jalada la zip iliyoambatishwa "kim-uno-firmware.zip" unaweza kupata nambari ya chanzo ya emulator pamoja na "main.hex" iliyo tayari ambayo unaweza kupakia moja kwa moja kwa microcontroller.

Kabla ya kuitumia, unahitaji kuweka fuse bits za microcontroller, ili itumie saa ya ndani ya 8 MHz bila kuigawanya katikati. Unaweza kupata kazi hiyo kwa amri ifuatayo:

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

Ikiwa haujui avrdude: ni mpango wa kupakia programu kwa mdhibiti mdogo. Unaweza kujifunza zaidi juu yake hapa. Kimsingi unaiweka na basi iko tayari kutumika. Kwa usanidi wako unaweza kuhitaji kubadilisha hoja ya "-P" hadi bandari nyingine ya serial. Tafadhali angalia kompyuta yako ambayo bandari ya serial hutumiwa (kwa mfano ndani ya Arduino IDE).

Baada ya hii unaweza kuwasha firmware kwenye microcontroller na amri hii:

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

Tena: kitu hicho hicho kinatumika kwa "-P" kama hapo juu.

Kwa kuwa sina "ISP" ya kitaalam (In-System Programmer) mimi hutumia Arduino UNO yangu kila siku (tazama picha) na mchoro nilioshikilia ("arduino-isp.ino", kutoka kwa Randall Bohn). Ninajua kuwa kuna toleo jipya zaidi, lakini kwa toleo hili nilikuwa na shida kabisa na zaidi ya miaka mitano iliyopita, kwa hivyo naihifadhi. Inafanya kazi tu. Kutumia maoni kwenye kichwa cha mchoro unapata pinout kwenye Arduino UNO na ukitumia muundo wa KIM Uno (angalia umeambatanishwa) unaweza kupata pinout ya kichwa cha 1x6 ISP kwenye KIM Uno. Pini ya mraba, karibu na onyesho la sehemu saba ni pini 1 (GND). Pini zifuatazo ni (kwa mpangilio sahihi): Rudisha, MOSI, MISO, SCK, VCC. Unaweza kuunganisha VCC ama 3V3 au 5V.

Ikiwa haukuongeza kichwa cha pini cha 1x6 unaweza kutumia waya za ubao wa mkate na kuziweka kwenye mashimo ya unganisho na uziweke kwa kidole - kama inavyoonyeshwa kwenye picha. Hii inafanya mawasiliano ya kutosha kuwasha firmware na kuweka fuses. Lakini ikiwa unapenda usanidi wa kudumu zaidi, hakika unapaswa kuongeza vichwa vya pini 1x6.

Nina vifaa viwili: toleo la uzalishaji bila vichwa vya pini na toleo la maendeleo na vichwa vya pini ambavyo ninaacha vimeunganishwa na kuitumia mara kwa mara wakati wa maendeleo. Hii ni vizuri zaidi.

Hatua ya 10: Imemalizika

Imemalizika
Imemalizika
Imemalizika
Imemalizika

Sasa umemaliza na unaweza kuanza kuandika mipango yako mwenyewe kwenye karatasi, kuikusanya na kisha kuiingiza kwenye kumbukumbu.

KIM Uno inakuja na hesabu ya Fibonacci iliyopangwa mapema kuanzia mahali pa kumbukumbu 0x0a. Imewekwa kwa default kwa n = 6 kwa hivyo inapaswa kusababisha thamani ya 8. Bonyeza "Nenda" ili uanze hesabu.

Hatua ya 11: Uchambuzi wa Ubunifu wa PCB

Uchambuzi wa Ubunifu wa PCB
Uchambuzi wa Ubunifu wa PCB
Uchambuzi wa Ubunifu wa PCB
Uchambuzi wa Ubunifu wa PCB

Baada ya kumaliza mradi huu nilipata vidokezo kadhaa ambavyo ni muhimu na vinapaswa kushughulikiwa katika marekebisho mapya ya bodi:

  • skrini ya hariri ya ATMega328p haina alama ya kawaida ambapo pini ya kwanza iko. Nyayo ya DIP-28 haina hata pedi ya mraba ambayo pini ya kwanza iko. Kwa kweli hii inapaswa kuboreshwa na skrini ya kina ya silks kuzuia mkanganyiko
  • kichwa cha ISP hakina lebo za unganisho kwenye skrini ya hariri. Hii inafanya kuwa ngumu kutambua jinsi ya kuiunganisha kwa ISP
  • Kichwa cha ISP kinaweza kubadilishwa kuwa kichwa cha pini cha 2x6 na mpangilio wa pini ya kawaida kuzuia mkanganyiko wowote

Mbali na alama hizo nina furaha sana jinsi ilivyotokea na kufanya kazi kwenye jaribio la kwanza.

Hatua ya 12: Jinsi ya Kupanga SUBLEQ?

Image
Image
Jinsi ya Kupanga SUBLEQ?
Jinsi ya Kupanga SUBLEQ?
Jinsi ya Kupanga SUBLEQ?
Jinsi ya Kupanga SUBLEQ?

Kama ilivyoelezwa mwanzoni, firmware ya sasa ya KIM Uno inaiga Kompyuta moja ya Maagizo (OISC) na hutoa maagizo ya subleq kufanya hesabu.

Maagizo ya subleq yanasimama kwa kutoa na tawi ikiwa chini ya au sawa na sifuri. Katika nambari ya uwongo hii inaonekana kama ifuatavyo:

subleq A B C mem [B] = mem [B] - mem [A]; ikiwa (mem [B] <= 0) picha C;

Kwa kuwa KIM Uno inaleta mashine ya 8-bit, hoja zote A, B na C ni maadili 8 na kwa hivyo inaweza kushughulikia kumbukumbu kuu ya baiti 256. Kwa wazi hii inaweza kupanuliwa, kwa kutengeneza maadili ya A, B na C anuwai. Lakini kwa sasa wacha tuwe rahisi.

KIM Uno pia ina "peripherals": onyesho na kibodi. Inatumia usanifu wa ramani ya kumbukumbu kuunganisha vifaa hivi, ingawa ramani ya kumbukumbu ni rahisi sana:

  • 0x00 = rejista ya Z (sifuri) na inapaswa kuwekwa sifuri.
  • 0x01 - 0x06 = ka sita ambazo zinawakilisha thamani ya kila sehemu ya maonyesho (kutoka kulia kwenda kushoto). Thamani 0xf - tazama nambari ya chanzo (main.c) kwa maelezo zaidi.
  • 0x07, 0x08, 0x09 = ka tatu ambapo kila ka inawakilisha maonyesho mawili ya sehemu saba (kutoka kulia kwenda kushoto). Maeneo haya ya kumbukumbu huruhusu kuonyesha tu matokeo bila kugawanya matokeo kuwa nibbles mbili ili kuiweka katika sehemu za kumbukumbu za tarakimu moja 0x01 - 0x06.
  • 0x0a + = Programu inaanza saa 0x0a. Hivi sasa kitufe cha "Nenda" kinatekelezwa kutoka 0x0a fasta.

Kwa habari hii sasa mtu anaweza kuandika programu kwa kukusanyika na kuingiza maagizo kwenye kumbukumbu na kuifanya. Kwa kuwa kuna maagizo moja tu, hoja tu (A, B na C) ndizo zilizoingizwa. Kwa hivyo baada ya maeneo matatu ya kumbukumbu hoja za maagizo zifuatazo zinaanza na kadhalika.

Imeambatanishwa na hatua hii unaweza kupata faili "fibonacci.s" na pia picha ya programu iliyoandikwa kwa mkono ambayo ni mfano wa utekelezaji wa Fibonacci. Lakini subiri: kuna maagizo matatu yaliyotumiwa - haswa ADD, MOV na HLT - ambayo sio subleq. "Je! Mpango huo ni nini? Je! Haukusema kwamba kuna maagizo moja tu, subleq?" unauliza? Ni rahisi sana: na subleq mtu anaweza kuiga maagizo hayo kwa urahisi sana:

MOV a, b - nakala nakala kwenye eneo a hadi b inaweza kutengenezwa na:

  1. subleq b, b, 2 (maagizo yafuatayo)
  2. subleq a, Z, 3 (maagizo yafuatayo)
  3. subleq Z, b, 4 (maagizo yafuatayo)
  4. subleq Z, Z, n.k. 5 (maagizo yafuatayo)

Kutumia sehemu ya kutoa ya subleq, ambayo mem - mem [a] na inaandika juu mem na matokeo, thamani inakiliwa kwa kutumia rejista ya sifuri. Na "subleq Z, Z, …" inarudisha rejista ya sifuri hadi 0, bila kujali thamani ya Z.

ADD a, b - anaongeza maadili a + b na anahifadhi jumla katika b inaweza kujumuishwa na:

  1. subleq a, Z, 2 (maagizo yafuatayo)
  2. subleq Z, b, 3 (maagizo yafuatayo)
  3. subleq Z, Z, n.k. 4 (maagizo yanayofuata)

Maagizo haya huhesabu tu mem - (- mem [a]) ambayo ni mem + mem [a] kwa kutumia pia kipengee cha kutoa.

HLT - husimamisha CPU na kumaliza utekelezaji:

Kwa ufafanuzi emulator anajua kuwa CPU inataka kusitisha ikiwa inaruka hadi 0xff (au -1 ikiwa imeimbwa). Rahisi

subleq Z, Z, -1

hufanya kazi na inaonyesha kwa emulator, kwamba inapaswa kumaliza wivu.

Kutumia maagizo haya matatu rahisi, hesabu ya Fibonacci inaweza kutekelezwa na inafanya kazi vizuri. Hii ni, kwa sababu OISC inaweza kuhesabu kila kitu kompyuta "halisi" inaweza kuhesabu na subleq ya maagizo tu. Lakini kwa kweli, kuna biashara nyingi za kufanya - kama urefu wa msimbo na kasi. Lakini hata hivyo ni njia nzuri ya kujifunza na kujaribu programu ya kiwango cha chini cha programu na kompyuta.

Imeambatanishwa na hatua hii unaweza kupata kumbukumbu ya zip "kim_uno_tools.zip". Inayo mkusanyiko wa msingi na simulator ya KIM Uno. Imeandikwa katika NodeJS - hakikisha umeiweka.

Kukusanya mipango

Ukiangalia "fibonacci / fibonacci.s" utapata kuwa ni nambari chanzo ya utekelezaji wa fibonacci iliyojadiliwa. Ili kuikusanya na kutengeneza programu kutoka kwake, ili KIM Uno iweze kukimbia, ingiza amri ifuatayo (kwenye mzizi wa jalada la "kim_uno_tools.zip" la kumbukumbu):

node kukusanyika.js fibonacci / fibonacci.s

na inaweza kuchapisha kosa ikiwa umekosea au utamwagika programu inayosababisha. Ili kuihifadhi, unaweza kunakili pato na uihifadhi kwenye faili au tumia tu amri hii:

node kukusanyika.js fibonacci / fibonacci.s> yourfile.h

Pato limepangwa kwa njia ambayo inaweza kujumuishwa moja kwa moja kwenye firmware ya KIM Uno kama faili ya kichwa cha C, lakini simulator pia inaweza kuitumia kuiga. Ingiza tu:

node sim.js yakofile.h

Na utawasilishwa na matokeo ya kuiga na pato linalotarajiwa kutoka kwa KIM Uno kwenye onyesho.

Huu ulikuwa utangulizi mfupi sana wa zana hizi; Ninakupendekeza ucheze nao na uangalie jinsi wanavyofanya kazi. Kwa njia hii unapata maarifa ya kina na ujifunze kanuni zinazofanya kazi nyuma ya CPU, maagizo, wakusanyaji na emulators;-)

Hatua ya 13: Mtazamo

Mtazamo
Mtazamo
Mtazamo
Mtazamo
Mtazamo
Mtazamo

Hongera

Ukisoma hii labda ulipitia mafunzo haya yote na ukaunda KIM Uno yako mwenyewe. Hii ni nzuri sana.

Lakini safari haiishii hapa - kuna idadi kubwa ya chaguzi jinsi unaweza kurekebisha KIM Uno na kuiboresha kwa mahitaji yako na kupenda.

Kwa mfano KIM Uno inaweza kuwa na vifaa vya "halisi" vya emulator ya CPU ambayo inaweza kuiga MOS 6502 maarufu au Intel 8085, 8086 au 8088. Halafu ingeenda kwenye maono yangu ya kwanza, kabla sijajifunza juu ya OISCs.

Lakini kuna uwezekano wa matumizi mengine, kwani muundo wa vifaa ni mzuri sana. KIM Uno inaweza kutumika kama…

  • … Kidhibiti cha mbali k.v. kwa CNC au vifaa vingine. Labda wired au vifaa na diode ya IR au mtumaji mwingine yeyote asiye na waya
  • … Kikokotoo cha (hexadecimal) mfukoni. Firmware inaweza kubadilishwa kwa urahisi sana na muundo wa bodi hauitaji kubadilishwa sana. Labda skrini ya hariri inaweza kubadilishwa na shughuli za hesabu na pengo kati ya sehemu linaweza kuondolewa. Mbali na hayo, tayari iko tayari kwa mabadiliko haya

Natumai ulifurahiya sana kufuata na tumaini kujenga KIM Uno kama vile nilivyokuwa naibuni na kuipanga. Na ikiwa unapanua au kurekebisha - tafadhali nijulishe. Heri!

Mashindano ya PCB
Mashindano ya PCB
Mashindano ya PCB
Mashindano ya PCB

Mkimbiaji Juu katika Mashindano ya PCB

Ilipendekeza: