Përmbajtje:

KIM Uno - një Emulator i Kompletit të Mikroprocesorit 5 €: 13 hapa (me fotografi)
KIM Uno - një Emulator i Kompletit të Mikroprocesorit 5 €: 13 hapa (me fotografi)

Video: KIM Uno - një Emulator i Kompletit të Mikroprocesorit 5 €: 13 hapa (me fotografi)

Video: KIM Uno - një Emulator i Kompletit të Mikroprocesorit 5 €: 13 hapa (me fotografi)
Video: Let's Play PC Building Simulator (Session 3 ) 2024, Qershor
Anonim
Image
Image
KIM Uno - një Emulator Mikroprocesori i Kompjuterit 5 €
KIM Uno - një Emulator Mikroprocesori i Kompjuterit 5 €
KIM Uno - një Emulator Mikroprocesori i Kompjuterit 5 €
KIM Uno - një Emulator Mikroprocesori i Kompjuterit 5 €

KIM Uno është një komplet i lëvizshëm, i përcaktuar nga programi për mikroprocesorët (retro). Por më lejoni të prezantoj idenë e tij duke u kthyer mbrapa në kohë:

Në fund të vitit 2018 më erdhi në mendje, se doja të ndërtoja një çantë të vogël portative të mikroprocesorit portativ, ashtu si KIM-1 i famshëm nga MOS Technology, Inc. dhe i projektuar nga Chuck Peddle i cili ishte gjithashtu i përfshirë në krijimin e CPU 6502.

Por ndërtimi i një kompleti dev "të zhveshur" me përbërës logjikë diskrete nuk ishte një opsion pasi kishte nevojë për një furnizim të madh me energji elektrike (pasi ato pajisje të lashta kanë tendencë të marrin një rrymë serioze) dhe gjithashtu zhvillimi do të ishte shumë intensiv. Dhe e dua tani!

Prandaj, unë projektova KIM Uno si një pajisje portative, e cila përshtatet në njërën dorë dhe mundësohet nga dy bateri CR2032. Ai përdor mikrokontrolluesin ATMega328p ("Arduino") që funksionon në 8 MHz për të imituar (ose simuluar) një CPU të dëshiruar. Kjo arkitekturë siguron gjithashtu që CPU -të e emuluara të jenë të këmbyeshme me çdo gjë që përshtatet brenda flash -memories së mikrokontrolluesit. Pra, është një pajisje me shumë qëllime.

Rastësisht më vonë pashë një bisedë vërtet të mirë - të quajtur The Ultimate Apollo Guidance Computer Talk (34C3) - në YouTube ku përmenden "One Instruction Set Computers" ose OISC. Unë nuk dija për ta dhe e gjeta këtë si kandidatin e përsosur për ta zbatuar atë.

KIM Uno imiton një CPU me vetëm një udhëzim: subleq - zbrit dhe degëzo nëse është më pak se ose i barabartë me zero.

Nëse ndiqni me mua përmes këtij Udhëzuesi, mund të krijoni KIM Uno -në tuaj në një kohë të shkurtër. Dhe pjesa më e mirë - përveç faktit që mund ta modifikoni sipas shijes tuaj - është se kushton vetëm 4, 75 € për ta bërë (deri në fund të 2018).

Një këshillë: ekziston një depo Git e cila përmban të gjithë skedarët e ofruar nga hapat e ndryshëm të këtij udhëzuesi. Në rast se dëshironi të modifikoni disa burime dhe t'i ndani me ne të gjithë ju mund të bëni një PR. Por gjithashtu mund të shkarkoni të gjithë skedarët menjëherë. Thjesht tek https://github.com/maxstrauch/kim-uno. Faleminderit!

Ekziston një projekt tjetër mjaft interesant, i quajtur i njëjti (KIM Uno), i cili bën një kopje të vërtetë të 6502 KIM Uno. Shikoni këtu. Krijuesi madje shet kompletin. Pra, nëse jeni të interesuar për 6502 dhe ju pëlqen ky projekt, duhet të hidhni një sy atje!

Hapi 1: Burimi i PCB

Burimi i PCB
Burimi i PCB
Burimi i PCB
Burimi i PCB

Siç mund ta shihni, unë shfrytëzova rastin për të hartuar një PCB dhe e la atë të prodhohej në mënyrë profesionale. Meqenëse prodhimi i tij nga jashtë dhe dërgimi i tij tek ju do të marrë shumë kohë (në varësi të vendit ku jeni në botë;-)), porosia e tij është hapi i parë. Ne pastaj mund të vazhdojmë me hapat e tjerë ndërsa PCB është bërë dhe dërguar tek ju.

Kam porositur PCB -të e mia në Kinë në PCBWay për vetëm 5 dollarë. Unë nuk marr ndonjë përfitim për paraqitjen e PCBWay si prodhuesi im për PCB, thjesht funksionoi mirë për mua dhe gjithashtu mund të funksionojë mirë për ju. Por ju mund t'i porosisni ato në çdo vend tjetër si JLCPCB, OSH Park ose ndonjë kompani lokale PCB.

Por nëse jeni të gatshëm t'i porosisni ato në PCBWay, mund të shkarkoni skedarin ZIP të bashkangjitur "kim-uno-rev1_2018-12-12_gerbers.zip" dhe ta ngarkoni drejtpërdrejt në PCBWay pa asnjë ndryshim. Ky është skedari origjinal që kam përdorur për të porositur PCB -të që mund të shihni në imazhe.

Nëse i porositni ato nga një prodhues tjetër, mund t'ju duhet t'i rieksportoni nga burimet origjinale të KiCad, sepse i krijova me specifikimet nga PCBWay që mund t'i gjeni këtu. Për burimet origjinale të KiCad, shkarkoni "kim-uno-kicad-sources.zip" dhe nxirreni atë.

Por ekziston edhe një mënyrë e dytë: nëse nuk doni të porosisni PCB, mund të krijoni versionin tuaj duke përdorur tabelë perfo ose madje edhe një dërrasë buke.

Gjithsesi: meqenëse PCB -të janë tani në rrugë, ne mund të përqëndrohemi në pjesët e tjera! Eja, më ndiq mua.

Hapi 2: Burimi i Komponentëve

Burimi i Komponentëve
Burimi i Komponentëve
Burimi i Komponentëve
Burimi i Komponentëve
Burimi i Komponentëve
Burimi i Komponentëve

Tani ju duhet të merrni përbërësit. Për këtë do të gjeni një imazh të përgjithshëm të të gjithë përbërësve dhe sasive që ju nevojiten, bashkangjitur këtij hapi, si dhe një BOM (faturë materialesh).

BOM përmban lidhje me eBay. Edhe pse ato oferta mund të mbyllen kur ta lexoni këtë, mund ta përdorni si pikënisje. Komponentët e përdorur janë mjaft standarde.

Në vijim do t'ju shpjegoj të gjithë përbërësit e nevojshëm:

  • Rezistenca 7x 1 kΩ për ekranet me shtatë segmente. Mund ta zvogëloni vlerën (p.sh. në 470 Ω) për t'i bërë ato të shkëlqejnë më shumë, por mos e zvogëloni atë shumë, përndryshe LED -të do të vdesin ose bateria do të shkarkohet shumë shpejt. Kam gjetur se kjo vlerë funksionon për mua
  • 1x 10 kΩ si një rezistencë tërheqëse për linjën RESET të mikrokontrolluesit
  • 1x kondensator 100nF për të zbutur çdo rritje të tensionit (gjë që nuk duhet të ndodhë pasi ne po përdorim bateri, mirë, por për masë të mirë …)
  • 1x ATMega328P në paketën DIP-28 (zakonisht e quajtur ATMega328P-PU)
  • 1x PCB kryesore - shihni hapin e mëparshëm; ose e porositur ose e ndërtuar vetë
  • 2 x mbajtës baterie CR2032
  • 1x çelës SPDT (shtyllë e vetme, hedhje e dyfishtë) i cili në thelb ka tre kontakte dhe në secilën prej dy gjendjeve të tij (ndezur ose fikur) lidh dy kontakte
  • 20x butona prekës prekës për tastierën. Për të përdorur pjesën e pasme të PCB -së kam përdorur butona prekës të prekshëm SMD (ato standarde 6x6x6 mm) - ato janë shumë të lehta për t'u bashkuar siç do ta shihni
  • OPSIONALE: Koka 1x 1x6 pin për lidhjen e programuesit, por kjo është opsionale siç do ta shihni më vonë
  • Ekran 1x me shtatë segmente me 4 shifra dhe 1x shtatë segmente me 2 shifra - bordi do të marrë vetëm elementë 0.36 inç (9, 14 mm) me instalime elektrike të zakonshme anode. Të dy kërkesat janë të rëndësishme për të marrë një njësi pune. Por gjithashtu ky lloj i ekranit me shtatë segmente është shumë i zakonshëm

Bashkangjitur me këtë hap mund të gjeni skedarin "component-datasheets.zip" i cili përmban informacion më të saktë mbi dimensionet dhe llojet e përbërësve të përdorur. Por shumica e përbërësve janë shumë standardë dhe mund të merren lehtësisht për pak para.

Tani ju duhet të prisni derisa të keni gati të gjithë përbërësit për të vazhduar të bashkoni. Gjatë kësaj kohe ju tashmë mund të hidheni deri në fund dhe të lexoni pak për përdorimin e KIM Uno nëse dëshironi.

Hapi 3: Vështrim i përgjithshëm i mjetit të bashkimit

Vështrim i përgjithshëm i mjetit të bashkimit
Vështrim i përgjithshëm i mjetit të bashkimit
Vështrim i përgjithshëm i mjetit të bashkimit
Vështrim i përgjithshëm i mjetit të bashkimit

Për bashkimin dhe ndërtimin e KIM Uno keni nevojë për mjetet e treguara nga imazhet:

  • Prerës i telave (për të prerë fundin e telave përbërës)
  • Pincë të sheshta
  • Çift piskatore
  • Saldues (i mirë) i cili nuk është i trashë - unë përdor saldim 0.56 mm
  • Një hekur bashkues - nuk keni nevojë për një hekur bashkues të nivelit të lartë (sepse ne gjithashtu nuk po bëjmë shkencë raketash këtu) - Unë përdor Ersa FineTip 260 për një kohë të gjatë tani dhe është vërtet mirë
  • Një stilolaps fluksi: shtimi i fluksit tek përbërësit dhe jastëkët e bën shumë më të lehtë lidhjen e tyre pasi bashkimi pastaj "rrjedh" më vete në vendin e duhur*
  • Opsionale: një sfungjer (nga qelqi) për hekurin tuaj të saldimit

Për të programuar më vonë KIM Uno do t'ju duhet gjithashtu:

  • një kompjuter me zinxhirin e veglave AVR-GCC dhe avrdude për të ngarkuar firmuerin
  • një ISP (programues) - siç mund ta shihni në imazh unë po përdor Arduino Uno tim si një ISP me një skicë të veçantë - kështu që nuk ka nevojë të blini ndonjë pajisje të zbukuruar

* nevojiten disa udhëzime nga njerëzit;-)

A jeni gati? Në hapin tjetër ne do të fillojmë montimin e KIM Uno.

Hapi 4: Bashkimi #1: Shtimi i Rezistencave dhe Kondensatorëve

Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve
Saldimi #1: Shtimi i Rezistencave dhe Kondensatorëve

Ju gjithmonë duhet të punoni nga përbërësit më të vegjël (përsa i përket lartësisë së komponentit) së pari, deri tek komponentët më të lartë të fundit. Prandaj, ne fillojmë duke shtuar rezistorët dhe duke u përkulur mbi këmbët në pjesën e pasme në mënyrë që rezistorët të jenë të lehtë për t'u bashkuar dhe të qëndrojnë në vend. Më pas prerë telat e gjatë.

Gjithashtu, nuk tregohet në imazhe, shtoni kondensatorin e vogël 100 nF në të njëjtën mënyrë.

Një këshillë: mbajini ato këmbë tela në një enë të vogël, ato ndonjëherë vijnë në ndihmë.

Hapi 5: Bashkimi #2: Montimi i tastierës

Saldimi #2: Montimi i tastierës
Saldimi #2: Montimi i tastierës
Saldimi #2: Montimi i tastierës
Saldimi #2: Montimi i tastierës
Saldimi #2: Montimi i tastierës
Saldimi #2: Montimi i tastierës

Hapi tjetër është bashkimi i 20 çelsave prekës SMD. Meqenëse kjo punë është pak e çuditshme, ne e bëjmë atë tani, kur PCB shtrihet në tryezën e punës.

Ne do të punojmë nga lart poshtë (ose nga e majta në të djathtë nëse PCB është e orientuar siç tregohet në foto) dhe fillojmë me rreshtin e parë: zgjidhni një nga katër jastëkët për çdo ndërprerës dhe lageni atë me stilolaps fluksi.

Pastaj përdorni një palë piskatore për të kapur një çelës dhe vendoseni me kujdes në katër jastëkët. Pastaj lidhni vetëm këmbën e çelësit që është në bllokun që keni zgjedhur dhe përgatitur me fluks. Për këtë ju duhet të "kapni" disa saldime me hekurin tuaj para se të filloni. Duke përdorur këtë metodë, plotësoni të gjithë rreshtin e çelsave, duke bashkuar vetëm një këmbë.

Imazhi me shigjeta tregon një zmadhim se si është bërë bashkimi saktësisht.

Pasi të keni bashkuar të gjithë rreshtin (vetëm një kunj) ju mund të bëni rregullime të vogla duke e ngrohur kunjin përsëri dhe duke e pozicionuar përsëri ndërprerësin. Sigurohuni që çelsat të jenë të rreshtuar sa më mirë që të jetë e mundur.

Nëse jeni të kënaqur me shtrirjen, mund t'i lagni të gjitha kunjat e tjerë me stilolapsin fluks dhe pastaj t'i lidhni duke e prekur me hekurin e saldimit dhe duke shtuar pak saldim duke e prekur gjithashtu. Do të shihni që saldimi thithet drejtpërdrejt në jastëk.

Pasi të keni bashkuar një rresht ose më shumë, do të vini re se e kapni dhe nuk është aq e vështirë, por e përsëritur. Pra, bëni pjesën tjetër dhe do të përfundoni me një tastierë të përfunduar në një kohë të shkurtër.

Hapi 6: Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin

Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin
Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin
Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin
Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin
Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin
Saldimi #3: Ekrani i Shtatë Segmenteve, Ndërrimi dhe Koka e Pin

Tani mund të shtoni kokën e ndërprerës dhe pin (opsional) duke e mbajtur me gisht dhe duke bashkuar një kunj për ta mbajtur atë në PCB, në mënyrë që të lidhni kunjat e tjerë dhe më në fund të prekni kunjin fillestar të mbajtjes.

Kini kujdes që të mos digjeni me hekurin e nxehtë të saldimit. Nëse nuk jeni të kënaqur me këtë, mund të përdorni pak kasetë (p.sh. shirit piktori) për të mbajtur përbërësin. Në këtë mënyrë ju keni të dyja duart të lira për të lëvizur.

Shtatë ekranet e segmentit janë ngjitur në të njëjtën mënyrë (shiko figurën): e vendosni, e mbani me dorën ose shiritin dhe ngjitni dy kunja të kundërta për ta mbajtur në vend ndërsa mund të lidhni kunjat e tjerë.

Por kini kujdes dhe vendoseni ekranin me shtatë segmente në drejtimin e duhur (me pikat dhjetore të drejtuara nga tastiera). Përndryshe ju jeni në telashe…

Hapi 7: Saldimi #4: Saldimi i Mikrokontrolluesit

Saldimi #4: Saldimi i Mikrokontrolluesit
Saldimi #4: Saldimi i Mikrokontrolluesit

Tani që keni shumë praktikë, mund të shkoni përpara dhe të vendosni mikrokontrolluesin me gropën në pjesën e sipërme (ose kunjin e parë) përballë çelsit. Duke përdorur pincë të sheshtë ju mund t'i përkulni me kujdes këmbët e mikrokontrolluesit pak në mënyrë që ato të përputhen me vrimat në PCB.

Meqenëse është një përshtatje e ngushtë, keni nevojë për një forcë të kontrolluar për të futur mikrokontrolluesin. Avantazhi është se ai nuk bie jashtë. Kjo do të thotë, ju mund të merrni kohën tuaj dhe ta lidhni atë nga mbrapa.

Hapi 8: Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)

Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)
Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)
Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)
Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)
Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)
Saldimi #5: Shtoni mbajtësit e baterisë (hapi i fundit)

Së fundi ju duhet të shtoni mbajtësit e baterisë në pjesën e pasme. Për këtë ju thjesht përdorni stilolapsin e fluksit dhe lagni të katër jastëkët dhe më pas vendosni disa saldime në hekurin tuaj. Rreshtoni mbajtësen e baterisë me kujdes në të dy jastëkët. Në të dy skajet e kontakteve duhet të jetë e njëjta sasi e jastëkut të PCB -së të dukshme. Prekni bllokun e PCB dhe këmbën e mbajtësit të baterisë me hekurin tuaj. Saldimi do të rrjedhë nën jastëk dhe mbi të dhe do ta sigurojë atë në vend siç tregohet në imazh. Nëse keni probleme me këtë, mund të shtoni më shumë fluks me stilolapsin.

Hapi 9: Ndezja e Emulatorit

Ndezje e Emulatorit
Ndezje e Emulatorit
Ndezje e Emulatorit
Ndezje e Emulatorit
Ndezje e Emulatorit
Ndezje e Emulatorit

Në arkivin zip të bashkangjitur "kim-uno-firmware.zip" mund të gjeni kodin burimor për emulatorin së bashku me një "main.hex" tashmë të përpiluar të cilin mund ta ngarkoni drejtpërdrejt në mikrokontrollues.

Para se ta përdorni në të vërtetë, duhet të vendosni pjesët e siguresave të mikrokontrolluesit, në mënyrë që të përdorë orën e brendshme 8 MHz pa e ndarë atë në gjysmë. Ju mund ta përfundoni punën me komandën e mëposhtme:

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

Nëse nuk e dini avrdude: është një program për ngarkimin e programeve në një mikrokontrollues. Mund të mësoni më shumë rreth saj këtu. Në thelb ju e instaloni dhe pastaj është gati për përdorim. Për konfigurimin tuaj mund t'ju duhet të ndryshoni argumentin e "-P" në një port tjetër serik. Ju lutemi kontrolloni në kompjuterin tuaj se cilin port serik përdoret (p.sh. brenda Arduino IDE).

Pas kësaj ju mund të ndizni firmware -in në mikrokontrollues me këtë komandë:

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

Përsëri: e njëjta gjë vlen për "-P" si më sipër.

Meqenëse nuk kam një ISP "profesionist" (Programues në Sistem) unë gjithmonë përdor Arduino UNO tim (shiko imazhin) dhe skicën që bashkëngjita ("arduino-isp.ino", nga Randall Bohn). Unë e di që ekziston një version më i ri, por me këtë version kam pasur zero probleme gjatë pesë viteve të fundit, kështu që e mbaj. Thjesht funksionon. Duke përdorur komentin në kokën e skicës ju merrni pinout në Arduino UNO dhe duke përdorur skemën e KIM Uno (shih bashkangjitur) ju mund të merrni pinout -in e kreut të ISP 1x6 në KIM Uno. Kunja katrore, afër ekranit me shtatë segmente është kunja 1 (GND). Kunjat e mëposhtëm janë (në rendin e duhur): RESET, MOSI, MISO, SCK, VCC. Ju mund të lidhni VCC ose me 3V3 ose me 5V.

Nëse nuk e keni shtuar kokën 1x6 me kunja, mund të përdorni telat e dërrasës së bukës dhe t'i vendosni në vrimat e lidhjes dhe t'i vendosni në kënd me gishtin tuaj - ashtu siç tregohet në figurë. Kjo bën mjaft kontakt për të ndezur firmware -in dhe për të vendosur siguresat. Por nëse ju pëlqen një konfigurim më i përhershëm, patjetër që duhet të shtoni titujt me pin 1x6.

Unë kam dy pajisje: një version prodhimi pa tituj pin dhe një version zhvillimi me tituj pin të cilat i lë të lidhura dhe i përdor pa pushim gjatë zhvillimit. Kjo është shumë më komode.

Hapi 10: Përfundoi

E perfunduar
E perfunduar
E perfunduar
E perfunduar

Tani keni mbaruar dhe mund të filloni të shkruani programet tuaja subleq në letër, t'i montoni dhe pastaj t'i futni në kujtesë.

KIM Uno vjen me një llogaritje të para-programuar Fibonacci duke filluar në vendndodhjen e kujtesës 0x0a. Byshtë vendosur si parazgjedhje në n = 6 kështu që duhet të rezultojë në një vlerë prej 8. Shtypni "Shko" për të filluar llogaritjen.

Hapi 11: Analiza e Projektimit të PCB

Analiza e Projektimit të PCB
Analiza e Projektimit të PCB
Analiza e Projektimit të PCB
Analiza e Projektimit të PCB

Pas përfundimit të këtij projekti gjeta disa pika të cilat janë të rëndësishme dhe duhet të adresohen në një rishikim të ri të bordit:

  • ekrani i mëndafshit i ATMega328p nuk ka nivelin e zakonshëm ku ndodhet kunja e parë. Gjurma e DIP-28 nuk ka as një jastëk katror ku ndodhet kunja e parë. Kjo patjetër duhet të përmirësohet me një ekran mëndafshi më të detajuar për të parandaluar konfuzionin
  • titulli i ISP -së nuk ka etiketa lidhëse në ekranin e mëndafshit. Kjo e bën të vështirë njohjen se si ta lidhni atë me ISP
  • titulli ISP mund të ndryshohet në një kokë 2x6 pin me një paraqitje standarde të pin për të parandaluar çdo konfuzion

Përveç atyre pikave, jam shumë i lumtur se si doli dhe funksionoi në përpjekjen e parë.

Hapi 12: Si të Programoni SUBLEQ?

Image
Image
Si të Programoni SUBLEQ?
Si të Programoni SUBLEQ?
Si të Programoni SUBLEQ?
Si të Programoni SUBLEQ?

Siç u përmend në fillim, firmueri aktual i KIM Uno imiton një kompjuter me një udhëzim të caktuar (OISC) dhe siguron udhëzimin subleq për të kryer llogaritjen.

Udhëzimi subleq qëndron për zbritje dhe degëzim nëse është më pak se ose i barabartë me zero. Në pseudo-kod kjo duket si më poshtë:

subleq A B C mem [B] = mem [B] - mem [A]; nëse (mem [B] <= 0) shkoj në C;

Meqenëse KIM Uno imiton një makinë 8-bit, të gjithë argumentet A, B dhe C janë vlera 8 bit dhe prandaj mund të adresojë një memorie kryesore totale prej 256 bajt. Shtë e qartë se kjo mund të zgjatet, duke i bërë vlerat multi-bajt A, B dhe C. Por tani për tani le ta mbajmë të thjeshtë.

KIM Uno ka gjithashtu "pajisje periferike": ekranin dhe tastierën. Ai përdor një arkitekturë të hartuar të kujtesës për të ndërlidhur ato periferike, megjithëse harta e kujtesës është shumë e thjeshtë:

  • 0x00 = regjistri Z (zero) dhe duhet të mbahet zero.
  • 0x01 - 0x06 = gjashtë bajt të cilët përfaqësojnë vlerën e secilit prej segmenteve të ekranit (nga e djathta në të majtë). Një vlerë 0xf - shihni kodin burimor (main.c) për më shumë detaje.
  • 0x07, 0x08, 0x09 = tre byte ku çdo bajt përfaqëson dy ekrane me shtatë segmente (nga e djathta në të majtë). Këto vendndodhje të kujtesës lejojnë thjesht shfaqjen e një rezultati pa e ndarë rezultatin në dy gërvishtje për ta vendosur atë në vendet e kujtesës një shifrore 0x01 - 0x06.
  • 0x0a+ = Një program fillon në 0x0a. Aktualisht çelësi "Shko" ekzekutohet nga 0x0a fikse.

Me këtë informacion tani mund të shkruani një program në assembler dhe të futni udhëzimet në memorje dhe pastaj ta ekzekutoni atë. Meqenëse ekziston vetëm një udhëzim, futen vetëm argumentet (A, B dhe C). Pra, pas tre vendndodhjeve të kujtesës fillojnë argumentet e udhëzimit tjetër dhe kështu me radhë.

Bashkangjitur me këtë hap mund të gjeni skedarin "retracement.s" dhe gjithashtu një imazh të programit të shkruar me dorë, i cili është një shembull zbatimi i Fibonacci. Por prisni: përdoren tre udhëzime - veçanërisht ADD, MOV dhe HLT - të cilat nuk janë nën sugjerime. "Cila është marrëveshja? A nuk thatë se ka vetëm një udhëzim, nën sugjerim?" po pyet? Veryshtë shumë e lehtë: me subleq dikush mund të imitojë këto udhëzime shumë lehtë:

MOV a, b - kopjimi i të dhënave në vendndodhjen a deri b mund të përbëhet nga:

  1. subleq b, b, 2 (udhëzimi tjetër)
  2. subleq a, Z, 3 (udhëzimi tjetër)
  3. subleq Z, b, 4 (udhëzimi tjetër)
  4. subleq Z, Z, p.sh. 5 (udhëzimi tjetër)

Duke përdorur veçorinë e zbritjes së subleq, e cila bën mem - mem [a] dhe mbishkruan mem me rezultatin, vlera kopjohet duke përdorur regjistrin zero. Dhe "subleq Z, Z, …" thjesht rivendos regjistrin zero në 0, pavarësisht nga vlera e Z.

SHTO a, b - shton vlerat a + b dhe ruan shumën në b mund të përbëhet nga:

  1. subleq a, Z, 2 (udhëzimi tjetër)
  2. subleq Z, b, 3 (udhëzimi tjetër)
  3. subleq Z, Z, p.sh. 4 (udhëzimi tjetër)

Ky udhëzim thjesht llogarit mem - (- mem [a]) i cili është mem + mem [a] duke përdorur edhe veçorinë e zbritjes.

HLT - ndal CPU dhe përfundon ekzekutimin:

Sipas përkufizimit emulatori e di që CPU -ja dëshiron të përfundojë nëse hidhet në 0xff (ose -1 nëse këndohet). Pra një e thjeshtë

subleq Z, Z, -1

bën punën dhe i tregon emulatorit, se duhet t'i japë fund emulimit.

Duke përdorur këto tre udhëzime të thjeshta, algoritmi Fibonacci mund të zbatohet dhe funksionon mirë. Kjo ndodh, sepse OISC mund të llogarisë gjithçka që një kompjuter "i vërtetë" mund të llogarisë me vetëm subleqin e udhëzimeve. Por sigurisht, ka shumë kompromis për të bërë - si gjatësia dhe shpejtësia e kodit. Por megjithatë është një mënyrë e shkëlqyer për të mësuar dhe eksperimentuar me programim softuerësh të nivelit të ulët dhe kompjuterë.

Bashkangjitur me këtë hap mund të gjeni edhe arkivin zip "kim_uno_tools.zip". Ai përmban disa montues dhe imitues bazë për KIM Uno. Ato janë të shkruara në NodeJS - sigurohuni që ta keni instaluar.

Montimi i programeve

Nëse i hidhni një sy "fibonacci/retracement.s" do të gjeni se është kodi burim për zbatimin e diskutuar të fibusit. Për ta montuar atë dhe për të bërë një program prej tij, që KIM Uno mund ta ekzekutojë, futni komandën e mëposhtme (në rrënjën e arkivit të nxjerrë "kim_uno_tools.zip"):

node assemble.js fibonacci retracement/fibonacci.s

dhe ose do të printojë një gabim nëse keni bërë një gabim ose do të derdhni programin që rezulton. Për ta ruajtur atë, mund të kopjoni daljen dhe ta ruani në një skedar ose thjesht të ekzekutoni këtë komandë:

node assemble.js fibonacci retracement/fibonacci.s> yourfile.h

Dalja është e formatuar në atë mënyrë që mund të përfshihet drejtpërdrejt në firmware -in KIM Uno si një skedar me kokë C, por imituesi mund ta përdorë atë gjithashtu për të simuluar. Thjesht futni:

nyja sim.js yourfile.h

Dhe do t'ju paraqitet rezultati i simulimit dhe dalja e pritur nga KIM Uno në ekran.

Ky ishte një hyrje shumë e shkurtër për këto mjete; Unë ju rekomandoj të luani me ta dhe të shikoni se si funksionojnë. Në këtë mënyrë ju merrni një njohuri të thellë dhe mësoni parimet e funksionimit pas CPU-ve, udhëzimeve, montuesve dhe emulatorëve;-)

Hapi 13: Outlook

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Urime

Nëse e lexoni këtë, me siguri keni kaluar nëpër të gjithë këtë udhëzues dhe keni ndërtuar KIM -in tuaj. Kjo është vërtet bukur.

Por udhëtimi nuk përfundon këtu - ka një numër të pafund opsionesh se si mund të modifikoni KIM Uno dhe ta personalizoni atë sipas nevojave dhe pëlqimit tuaj.

Për shembull, KIM Uno mund të pajiset me një imitues "real" të CPU retro i cili mund të imitojë të famshmin MOS 6502 ose Intel 8085, 8086 ose 8088. Pastaj do të shkonte drejt vizionit tim fillestar, para se të mësoja për OISC -të.

Por ka përdorime të tjera të mundshme, pasi dizajni i harduerit është mjaft i përgjithshëm. KIM Uno mund të përdoret si…

  • … Një telekomandë p.sh. për CNC ose pajisje të tjera. Ndoshta me tela ose të pajisur me një diodë IR ose ndonjë dërgues tjetër pa tel
  • … Një llogaritës xhepi (heksadecimal). Firmware mund të përshtatet shumë lehtë dhe dizajni i bordit nuk ka nevojë të ndryshohet shumë. Ndoshta ekrani i mëndafshit mund të përshtatet me operacione matematikore dhe hendeku midis segmenteve mund të hiqet. Përveç kësaj, ajo tashmë është gati për këtë transformim

Shpresoj se jeni argëtuar aq shumë duke ndjekur dhe shpresoj të ndërtoni KIM Uno siç kisha hartuar dhe planifikuar. Dhe nëse e zgjeroni ose modifikoni - ju lutem më tregoni. Urime!

Konkursi PCB
Konkursi PCB
Konkursi PCB
Konkursi PCB

Vendi i dytë në Konkursin PCB

Recommended: