Агуулгын хүснэгт:
- Алхам 1: ПХБ -ийн эх үүсвэр
- Алхам 2: Бүрэлдэхүүн хэсгүүдийг олж авах
- Алхам 3: Гагнуурын хэрэгслийн тойм
- Алхам 4: Гагнах №1: Резистор ба конденсатор нэмэх
- Алхам 5: Гагнах №2: Гарын угсралт
- Алхам 6: Гагнах №3: Долоон сегментийн дэлгэц, шилжүүлэгч ба зүү толгой
- Алхам 7: Гагнах #4: Микроконтроллерийг гагнах
- Алхам 8: Гагнах №5: Зай эзэмшигчийг нэмнэ (эцсийн алхам)
- Алхам 9: Эмуляторыг анивчих
- Алхам 10: Дууссан
- Алхам 11: ПХБ -ийн дизайны дүн шинжилгээ
- Алхам 12: SUBLEQ -ийг хэрхэн програмчлах вэ?
- Алхам 13: Outlook
Видео: KIM Uno - 5 еврогийн микропроцессор Dev Kit эмулятор: 13 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
KIM Uno бол (ретро) микропроцессоруудад зориулагдсан зөөврийн, програм хангамжаар тодорхойлогдсон хөгжүүлэгч хэрэгсэл юм. Гэхдээ цаг хугацааг ухрааж энэ санааг танилцуулъя.
2018 оны сүүлээр би MOS Technology, Inc-ийн алдартай KIM-1 шиг 6502 CPU-ийг бүтээх ажилд оролцсон Чак Пэддлийн зохион бүтээсэн жижиг зөөврийн микропроцессорын иж бүрдэл бүтээхийг хүсч байсан.
Гэхдээ салангид логик бүрэлдэхүүн хэсгүүдтэй "нүцгэн" хөгжүүлэлтийн иж бүрдэл бүтээх нь сонголтгүй байсан тул их хэмжээний цахилгаан хангамж шаардлагатай байсан тул (эдгээр эртний төхөөрөмжүүд ноцтой гүйдэл авах хандлагатай байдаг), мөн хөгжил нь маш их цаг хугацаа шаардах болно. Тэгээд би одоо хүсч байна!
Тиймээс би KIM Uno -ийг зөөврийн төхөөрөмж болгон зохион бүтээсэн бөгөөд нэг гартаа багтах бөгөөд хоёр CR2032 батерейгаар тэжээгддэг. Энэ нь хүссэн CPU -ийг дуурайх (эсвэл дуурайх) 8 МГц давтамжтай ажилладаг ATMega328p ("Arduino") микроконтроллерийг ашигладаг. Энэхүү архитектур нь дууриамал CPU -ийг микроконтроллерийн флаш санах ойд багтах бүх зүйлээр сольж болохыг баталгаажуулдаг. Тиймээс энэ нь олон зориулалттай төхөөрөмж юм.
Санамсаргүй байдлаар би хожим нь "One Instruction Set Computers" буюу OISC -ийг дурдсан YouTube дээр The Ultimate Apollo Guidance Computer Talk (34C3) нэртэй үнэхээр сайхан яриаг үзсэн. Би тэдний талаар мэдэхгүй байсан бөгөөд үүнийг хэрэгжүүлэх төгс нэр дэвшигч гэж олж мэдсэн.
KIM Uno нь CPU -ийг зөвхөн нэг зааварчилгаагаар дуурайдаг: subleq - тэгээс бага буюу тэнцүү бол хасах, салбарлах.
Хэрэв та энэхүү зааврыг дагаж мөрдвөл та өөрийн KIM Uno -г богино хугацаанд бүтээх боломжтой болно. Хамгийн сайн тал бол үүнийг өөрийн үзэмжээр өөрчлөх боломжтой бөгөөд үүнийг хийх нь ердөө 4, 75 еврогийн үнэтэй байдаг (2018 оны эцсээр).
Нэг зөвлөгөө: энэхүү зааварчилгааны янз бүрийн алхамаар өгсөн бүх файлыг агуулсан Git репозитор байдаг. Хэрэв та зарим нөөцийг өөрчилж, бидэнтэй хуваалцахыг хүсч байвал PR хийх боломжтой. Гэхдээ та бүх файлыг нэг дор татаж авах боломжтой. Зүгээр л https://github.com/maxstrauch/kim-uno руу орно уу. Баярлалаа!
6502 KIM Uno -ийн жинхэнэ хуулбарыг хийдэг өөр ижил сонирхолтой төсөл байдаг (KIM Uno). Эндээс үзээрэй. Бүтээгч тэр иж бүрдлийг хүртэл зардаг. Тиймээс, хэрэв та 6502 -ийг сонирхож байгаа бөгөөд энэ төсөл таалагдсан бол тэндээс үзээрэй.
Алхам 1: ПХБ -ийн эх үүсвэр
Таны харж байгаагаар би энэ боломжийг ашиглан ПХБ -ийг зохион бүтээж, мэргэжлийн түвшинд хийлээ. Үүнийг гаднаас үйлдвэрлэж, танд хүргэх нь маш их цаг хугацаа шаардагдах болно (дэлхийн хаана байгаагаас хамаарна;-)), үүнийг захиалах нь эхний алхам юм. ПХБ -ийг хийж, танд хүргэх үед бид бусад алхмуудыг үргэлжлүүлж болно.
Би ПХБ -ээ Хятадад PCBWay дээрээс ердөө 5 доллараар захиалсан. Би PCBWay -ийг ПХБ -д зориулж өөрийн үйлдвэрлэгчээр танилцуулах нь надад ашиг тусаа өгөхгүй, зүгээр л энэ нь надад сайн ажилласан бөгөөд танд ч бас сайн ажиллах болно. Гэхдээ та тэдгээрийг JLCPCB, OSH Park эсвэл дотоодын ПХБ компани гэх мэт өөр газар захиалж болно.
Гэхдээ хэрэв та тэдгээрийг PCBWay дээр захиалахыг хүсч байвал хавсаргасан "kim-uno-rev1_2018-12-12_gerbers.zip" ZIP файлыг татаж аваад PCBWay-д ямар ч өөрчлөлт оруулахгүйгээр шууд байршуулж болно. Энэ бол миний зураг дээр харж байгаа ПХБ -уудыг захиалахад ашиглаж байсан анхны файл юм.
Хэрэв та тэдгээрийг өөр үйлдвэрлэгчээс захиалж байгаа бол тэдгээрийг KiCad-ийн анхны эх сурвалжаас дахин экспортлох шаардлагатай болж магадгүй юм, учир нь би тэдгээрийг PCBWay-ийн техникийн дагуу эндээс олж болно. KiCad-ийн анхны эх сурвалжийн хувьд "kim-uno-kicad-sources.zip" -ийг татаж аваад задлаарай.
Гэхдээ хоёрдахь арга бий: хэрэв та ПХБ -ийг захиалахыг хүсэхгүй байгаа бол perfboard эсвэл талхны самбар ашиглан өөрийн хувилбарыг бүтээж болно.
Ямар ч байсан: ПХБ -ууд одоо явж байгаа тул бид бусад хэсгүүдэд анхаарлаа төвлөрүүлж чадна! Ирээрэй, намайг дагаарай.
Алхам 2: Бүрэлдэхүүн хэсгүүдийг олж авах
Одоо та бүрэлдэхүүн хэсгүүдийг авах хэрэгтэй. Үүний тулд танд шаардлагатай бүх бүрэлдэхүүн хэсэг, тоо хэмжээ, энэ алхамд хавсаргасан тойм зураг, мөн Монголбанк (материалын хуудас) -ыг олж харах болно.
Монголбанк eBay -ийн холбоосыг агуулдаг. Хэдийгээр та үүнийг уншаад эдгээр саналыг хааж магадгүй ч та үүнийг эхлэх цэг болгон ашиглаж болно. Ашигласан бүрэлдэхүүн хэсгүүд нь нэлээд стандарт юм.
Дараахь хэсэгт би шаардлагатай бүх бүрэлдэхүүн хэсгүүдийг тайлбарлах болно.
- Долоон сегментийн дэлгэцийн хувьд 7х 1 кОм эсэргүүцэл. Илүү тод гэрэлтүүлэхийн тулд та утгыг (жишээлбэл 470 to хүртэл) бууруулж болно, гэхдээ үүнийг хэт их хэмжээгээр бууруулж болохгүй, эс тэгвээс LED нь унтрах эсвэл батерей нь маш хурдан дуусах болно. Энэ үнэ цэнэ надад тохирсон болохыг олж мэдсэн
- 1х 10 кОм нь микроконтроллерийн RESET шугамын татах эсэргүүцэл болно
- 1х 100nF конденсатор нь хүчдэлийн огцом өсөлтийг зөөлрүүлдэг (энэ нь батерей ашиглаж байгаа тул ийм зүйл болохгүй, гэхдээ сайн хэмжихийн тулд …)
- DIP-28 багц дахь 1x ATMega328P (ихэвчлэн ATMega328P-PU гэж нэрлэдэг)
- 1x үндсэн ПХБ - өмнөх алхамыг үзнэ үү; захиалсан эсвэл өөрөө барьсан
- 2 ширхэг CR2032 батерейны багтаамж
- 1х SPDT (ганц туйл, хоёр шидэлт) унтраалга нь үндсэндээ гурван контакттай бөгөөд хоёр төлөвт (асаах, унтраах) хоёр контактийг холбодог
- Гарын товчлуур бүхий 20x товчлуур. ПХБ -ийн ар талыг ашиглахын тулд би SMD мэдрэгчтэй товчлууруудыг ашигласан (стандарт 6x6x6 мм хэмжээтэй товчлуурууд) - тэдгээрийг харахад гагнахад маш хялбар байдаг.
- СОНГОЛТТОЙ: Программчныг холбоход зориулагдсан 1х6 хэмжээтэй 1х6 толгойтой толгой, гэхдээ энэ нь заавал биш бөгөөд дараа нь та үүнийг харах болно.
- 4 оронтой 1х долоон сегментийн дэлгэц, 2 оронтой 1х долоон сегментийн дэлгэц - самбар нь ердийн анод утастай 0.36 инч (9, 14 мм) элементүүдийг авах болно. Ажлын нэгж авахын тулд хоёулаа хоёулаа чухал ач холбогдолтой. Гэхдээ энэ төрлийн долоон сегментийн дэлгэц нь маш түгээмэл байдаг
Энэ алхамд хавсаргасан бүрэлдэхүүн хэсгүүдийн хэмжээ, төрлүүдийн талаар илүү нарийвчилсан мэдээллийг агуулсан "component-datasheets.zip" файлыг олж болно. Гэхдээ ихэнх бүрэлдэхүүн хэсгүүд нь маш стандарт бөгөөд бага мөнгөөр хялбархан авах боломжтой.
Одоо та бүх бүрэлдэхүүн хэсгүүдийг гагнах ажлыг үргэлжлүүлэх хүртэл бэлэн болтол хүлээх хэрэгтэй. Энэ хугацаанд та аль хэдийн эцэс хүртэл үсэрч, хэрэв хүсвэл KIM Uno ашиглах талаар бага зэрэг уншиж болно.
Алхам 3: Гагнуурын хэрэгслийн тойм
KIM Uno -ийг гагнах, бүтээхэд танд зураг дээр үзүүлсэн хэрэгслүүд хэрэгтэй болно.
- Утас таслагч (эд ангиудын төгсгөлийг таслах)
- Хавтгай бахө
- Хос хясаа
- (зохистой) Зузаан биш гагнуур - Би 0.56 мм гагнуур ашигладаг
- Гагнуурын төмөр - танд өндөр зэрэглэлийн гагнуурын төмөр хэрэггүй (учир нь бид энд пуужингийн шинжлэх ухаан хийдэггүй) - Би Ersa FineTip 260 -ийг удаан хугацаанд ашигладаг бөгөөд үнэхээр сайн
- Утасны үзэг: эд анги, дэвсгэрт урсгал оруулах нь гагнах ажлыг хөнгөвчилдөг, учир нь гагнуур өөрөө зөв газар руу "урсдаг"*
- Сонголтоор: гагнуурын төмрийнхөө хөвөн (металл ноосоор хийсэн)
KIM Uno -г дараа програмчлахын тулд танд дараахь зүйлс хэрэгтэй болно.
- firmware-ийг байршуулах AVR-GCC багаж хэрэгсэл, avrdude бүхий компьютер
- ISP (програмист) - миний зураг дээр харж байгаагаар би өөрийн Arduino Uno -г тусгай схемээр ISP болгон ашиглаж байгаа тул ямар ч гоёмсог тоног төхөөрөмж худалдаж авах шаардлагагүй болно.
* Хүмүүсээс зарим удирдамж шаардлагатай байсан;-)
Чи бэлэн үү? Дараагийн алхамд бид KIM Uno угсрах ажлыг эхлүүлэх гэж байна.
Алхам 4: Гагнах №1: Резистор ба конденсатор нэмэх
Та үргэлж хамгийн жижиг (бүрэлдэхүүн хэсгийн өндрийн хувьд) бүрэлдэхүүн хэсгүүдээс эхлээд хамгийн өндөр бүрэлдэхүүн хэсгүүд хүртэл ажиллах ёстой. Тиймээс бид резисторыг нэмж, хөлийг ар талд нь нугалж эхэлдэг бөгөөд ингэснээр резисторыг гагнах, байрандаа байлгахад хялбар болно. Үүний дараа урт утсыг хайчилж ав.
Түүнчлэн, зураг дээр харуулаагүй, жижиг 100 нФ конденсаторыг ижил аргаар нэмнэ.
Нэг зөвлөгөө: эдгээр утсан хөлийг жижиг саванд байлгаарай, энэ нь заримдаа хэрэг болдог.
Алхам 5: Гагнах №2: Гарын угсралт
Дараагийн алхам бол 20 SMD мэдрэгчтэй унтраалгыг гагнах явдал юм. Энэ ажил жаахан төвөгтэй тул бид ПХБ ажлын ширээн дээр хэвтэж байх үед үүнийг хийж байна.
Бид дээрээс доошоо (эсвэл ПХБ -ийг зураг дээр үзүүлсэн шиг чиглүүлсэн бол зүүнээс баруун тийш) ажиллаж, эхний эгнээнээс эхэлнэ: унтраалга бүрт дөрвөн дэвсгэрийн аль нэгийг сонгоод урсгал үзэгээр норгоно.
Дараа нь хясаа ашиглан унтраалгыг аваад дөрвөн дэвсгэр дээр болгоомжтой байрлуул. Дараа нь урсгалыг ашиглан сонгож, бэлдсэн дэвсгэр дээр байгаа шилжүүлэгчийн хөлийг л гагнана. Үүнийг хийхийн тулд эхлэхээсээ өмнө төмрөөрөө гагнуур хийх хэрэгтэй. Энэ аргыг ашиглан унтраалгын бүх эгнээ дуусгаж, зөвхөн нэг хөлөө гагнана.
Сумтай зураг нь гагнуурыг яг хэрхэн яаж хийсэн болохыг харуулж байна.
Мөрийг бүхэлд нь гагнаж дууссаны дараа (зөвхөн нэг зүү) та зүүгээ буцааж халааж, шилжүүлэгчийг дахин байрлуулснаар бага зэрэг тохируулга хийх боломжтой болно. Шилжүүлэгчид аль болох сайн тохируулагдсан эсэхийг шалгаарай.
Хэрэв та тохируулсанд сэтгэл хангалуун байгаа бол бусад бүх тээглүүрийг хөвөн үзэгээр норгоод дараа нь гагнуурын төмрөөр шүргэж, бага зэрэг гагнуур нэмж болно. Та гагнуурыг шууд дэвсгэр дээр соруулж байгааг харах болно.
Нэг эгнээ гагнсаны дараа та үүнийг авах болно, энэ нь тийм ч хэцүү биш боловч давтагдах болно. Тиймээс үлдсэнийг нь хий, тэгвэл та богино хугацаанд бэлэн гартай болно.
Алхам 6: Гагнах №3: Долоон сегментийн дэлгэц, шилжүүлэгч ба зүү толгой
Одоо та унтраалга, зүү толгойг (заавал биш) нэмж, хуруугаараа барьж, нэг зүүг гагнаж ПХБ -д бэхлэх боломжтой бөгөөд ингэснээр та бусад зүүг гагнах боломжтой бөгөөд эцэст нь анхны бэхэлгээний зүү дээр хүрч болно.
Халуун гагнуурын төмрөөр өөрийгөө шатаахгүй байхыг анхаараарай. Хэрэв энэ нь танд тохиромжгүй бол та уг хэсгийг барихын тулд бага зэрэг соронзон хальс (жишээлбэл зураачийн соронзон хальс) ашиглаж болно. Ингэснээр та хоёр гараа чөлөөтэй хөдөлгөж болно.
Долоон сегментийн дэлгэцийг ижил аргаар гагнаж байна (зургийг үзнэ үү): та үүнийг байрлуулж, гараараа эсвэл соронзон хальсаараа барьж, эсрэг талын хоёр тээглүүрийг гагнаж, бусад зүүгээ гагнах боломжтой болно.
Гэхдээ болгоомжтой байгаарай, долоон сегментийн дэлгэцийг зөв чиглэлд (аравтын цэгүүд гар руу харсан байх ёстой) байрлуулна. Үгүй бол та асуудалтай байна …
Алхам 7: Гагнах #4: Микроконтроллерийг гагнах
Одоо маш их дадлага хийсний дараа та микроконтроллерыг дээд талд нь ховил (эсвэл эхний зүү) шилжүүлэгч рүү харсан байдлаар тавьж болно. Хавтгай бахө ашиглан та микроконтроллерийн хөлийг бага зэрэг нугалж, ПХБ -ийн нүхтэй тааруулж болно.
Энэ нь нягт тохирсон тул микроконтроллерийг оруулахын тулд танд хяналттай хүч хэрэгтэй болно. Давуу тал нь тэр унахгүй. Энэ нь та цагаа зарцуулж, ар талаас нь гагнах боломжтой гэсэн үг юм.
Алхам 8: Гагнах №5: Зай эзэмшигчийг нэмнэ (эцсийн алхам)
Эцэст нь та батерейны арын хэсгийг нэмэх хэрэгтэй. Үүнийг хийхийн тулд та зүгээр л урсгал үзэг ашиглан дөрвөн дэвсгэрийг норгоод дараа нь төмрөө гагнах хэрэгтэй. Батерейны тавиурыг хоёр дэвсгэр дээр болгоомжтой тэгшлээрэй. Контактуудын хоёр үзүүрт ижил хэмжээтэй ПХБ -ийн дэвсгэр харагдах ёстой. ПХБ -ийн дэвсгэр болон зай эзэмшигчийн хөлийг төмрөөрөө хүрээрэй. Гагнуур нь дэвсгэрийн доороос дээш урсаж, зураг дээр үзүүлсэн шиг бэхлэнэ. Хэрэв танд асуудал байгаа бол үзэгний тусламжтайгаар илүү их урсгал нэмж болно.
Алхам 9: Эмуляторыг анивчих
Хавсаргасан "kim-uno-firmware.zip" зип архиваас та эмуляторын эх кодыг аль хэдийн эмхэтгэсэн "main.hex" -тэй хамт олох боломжтой бөгөөд үүнийг микроконтроллерт шууд байршуулж болно.
Үүнийг ашиглахаасаа өмнө микроконтроллерийн гал хамгаалагчийн битүүдийг тохируулах хэрэгтэй бөгөөд ингэснээр 8 МГц -ийн дотоод цагийг хоёр хуваахгүйгээр ашигладаг. Та дараах тушаалыг ашиглан ажлаа хийж болно.
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
Хэрэв та avrdude -ийг мэдэхгүй бол энэ нь микроконтроллерт програм байршуулах програм юм. Та эндээс илүү ихийг мэдэж авах боломжтой. Үндсэндээ та үүнийг суулгаж, дараа нь ашиглахад бэлэн болно. Тохиргоог хийхийн тулд та "-P" аргументийг өөр цуваа порт болгон өөрчлөх хэрэгтэй болж магадгүй юм. Аль цуваа порт ашиглаж байгааг компьютерээсээ шалгана уу (жишээ нь Arduino IDE дотор).
Үүний дараа та firmware -ийг микроконтроллер дээр дараах тушаалаар асааж болно.
avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U flash: w: main.hex
Дахин хэлэхэд дээрхтэй ижил зүйл "-P" -д хамаарна.
Би "мэргэжлийн" ISP (системийн програмист) эзэмшдэггүй тул би Arduino UNO (зураг харна уу) болон хавсаргасан ноорогоо ("arduino-isp.ino", Рэндалл Бонн) үргэлж ашигладаг. Шинэ хувилбар байгаа гэдгийг би мэднэ, гэхдээ энэ хувилбарт сүүлийн таван жилийн хугацаанд надад ямар ч асуудал байгаагүй, тиймээс би үүнийг хадгалсаар байна. Энэ нь зүгээр л ажилладаг. Ноорогны толгой дээрх тайлбарыг ашиглан та Arduino UNO дээрх зүүг олж, KIM Uno -ийн схемийг (хавсралтыг үзнэ үү) ашиглан KIM Uno дээрх 1x6 ISP толгойн толгойн цэгийг авах боломжтой. Долоон сегментийн дэлгэцийн ойролцоо дөрвөлжин зүү нь зүү 1 (GND) юм. Дараах тээглүүрүүд (зөв дарааллаар) байна: RESET, MOSI, MISO, SCK, VCC. Та VCC -ийг 3V3 эсвэл 5V -т холбох боломжтой.
Хэрэв та 1х6 зүү толгойг нэмээгүй бол та талхны утсыг ашиглаж, холболтын нүхэнд хийж, хуруугаараа өнцгөөр зурж болно. Энэ нь програмыг анивчих, гал хамгаалагчийг тохируулах хангалттай холбоо барих болно. Гэхдээ хэрэв та илүү байнгын тохиргоонд дуртай бол 1x6 зүү толгойг заавал нэмэх ёстой.
Надад хоёр төхөөрөмж бий: зүү толгойгүй үйлдвэрлэлийн хувилбар, зүү толгойтой хөгжүүлэлтийн хувилбар, би холбож орхиж, хөгжүүлэх явцад дахин дахин ашигладаг. Энэ нь хамаагүй илүү тохь тухтай байдаг.
Алхам 10: Дууссан
Одоо та дуусгаад өөрийн дэд програмуудыг цаасан дээр бичиж, угсарч, дараа нь санах ойд оруулах боломжтой.
KIM Uno нь 0x0a санах ойн байрлалаас эхэлж програмчлагдсан Фибоначчийн тооцооллын хамт ирдэг. Үүнийг n = 6 гэж анхдагчаар тохируулсан тул 8 гэсэн утгатай байх ёстой. Тооцооллыг эхлүүлэхийн тулд "Go" товчийг дарна уу.
Алхам 11: ПХБ -ийн дизайны дүн шинжилгээ
Энэхүү төслийг дуусгасны дараа би онцлох хэд хэдэн зүйлийг олж мэдсэн бөгөөд үүнийг удирдах зөвлөлийн шинэчилсэн найруулгад оруулах ёстой:
- ATMega328p торгон дэлгэц нь анхны зүү байрладаг ердийн ховилтой байдаггүй. DIP-28 хөлийн мөрөнд анхны зүү байрладаг дөрвөлжин дэвсгэр ч байдаггүй. Төөрөгдөл гарахаас урьдчилан сэргийлэхийн тулд үүнийг илүү нарийвчилсан торгон дэлгэцээр сайжруулах ёстой
- ISP толгой нь торгон дэлгэц дээр холболтын шошго байхгүй байна. Энэ нь үүнийг ISP -тэй хэрхэн холбохыг танихад хэцүү болгодог
- Төөрөгдөл гарахаас урьдчилан сэргийлэхийн тулд ISP -ийн толгойг стандарт зүү бүхий 2х6 зүү толгой болгон өөрчилж болно
Эдгээр цэгүүдийг эс тооцвол энэ нь хэрхэн болж, анхны оролдлого дээр ажиллаж байгаад би маш их баяртай байна.
Алхам 12: SUBLEQ -ийг хэрхэн програмчлах вэ?
Эхэнд дурьдсанчлан, KIM Uno -ийн одоогийн програм хангамж нь нэг зааварчилгааны компьютерийг (OISC) дуурайдаг бөгөөд тооцоолох subleq зааврыг өгдөг.
Subleq заавар нь тэгээс бага буюу тэнцүү бол хасах, салбарлах гэсэн утгатай. Псевдо кодын хувьд энэ нь дараах байдлаар харагдаж байна.
subleq A B C mem [B] = mem [B] - mem [A]; хэрэв (mem [B] <= 0) goto C;
KIM Uno нь 8 битийн машиныг дуурайдаг тул A, B, C бүх аргументууд нь 8 битийн утгатай тул 256 байтын нийт санах ойд хандах боломжтой. Мэдээжийн хэрэг үүнийг A, B, C олон байтын утгыг ашиглан сунгаж болно. Гэхдээ одоохондоо үүнийг энгийн байлгая.
KIM Uno нь "дагалдах төхөөрөмжүүдтэй" байдаг: дэлгэц ба гар. Санах ойн зураглал нь маш энгийн боловч тэдгээр нь дагалдах хэрэгслүүдийн интерфейсийг ашиглахын тулд санах ойн зураглал бүхий архитектурыг ашигладаг.
- 0x00 = Z бүртгэл (тэг) бөгөөд тэг байх ёстой.
- 0x01 - 0x06 = дэлгэцийн сегмент бүрийн утгыг илэрхийлдэг зургаан байт (баруунаас зүүн тийш). 0xf утга - дэлгэрэнгүй мэдээллийг эх кодыг (main.c) үзнэ үү.
- 0x07, 0x08, 0x09 = байт бүр нь долоон сегментийн хоёр дэлгэцийг (баруунаас зүүн тийш) илэрхийлдэг гурван байт юм. Энэхүү санах ойн байршил нь үр дүнг хоёр толгойд хуваахгүйгээр үр дүнг харуулах боломжийг олгодог бөгөөд үүнийг нэг оронтой санах ойн 0x01 - 0x06 байрлалд байрлуулна.
- 0x0a+ = Програм 0x0a -аас эхэлнэ. Одоогийн байдлаар "Go" товчлуур нь 0x0a тогтмолоос ажиллана.
Энэхүү мэдээллийн тусламжтайгаар та одоо ассемблерт програм бичиж, санах ойд зааврыг оруулаад дараа нь гүйцэтгэх боломжтой болно. Нэг л заавар байдаг тул зөвхөн аргументыг (A, B, C) оруулна. Санах ойн гурван байршлын дараа дараагийн зааварчилгааны аргументууд эхлэх болно.
Энэ алхамд хавсаргасан тохиолдолд та "fibonacci.s" файлыг олж авах боломжтой бөгөөд Фибоначчийн хэрэгжүүлэлтийн жишээ болох гараар бичсэн програмын зургийг олж болно. Гэхдээ түр хүлээгээрэй: ADD, MOV, HLT гэсэн гурван зааврыг ашигладаг. "Хэлэлцээр гэж юу вэ? Та subleq гэсэн ганцхан заавар байдаг гэж хэлээгүй юм уу?" чи асууж байна уу? Энэ нь маш хялбар: subleq ашиглан эдгээр зааврыг маш амархан дуурайж болно:
MOV a, b - а -аас b хүртэлх байршил дахь өгөгдлийг хуулахдаа дараахь зүйлийг бүрдүүлж болно
- дэд, b, 2 (дараагийн заавар)
- a, Z, 3 дэд хэсэг (дараагийн заавар)
- дэд хэсэг Z, b, 4 (дараагийн заавар)
- subleq Z, Z, жишээ нь. 5 (дараагийн заавар)
Mem - mem [a] хийдэг, mem -г дарж бичдэг subleq -ийн хасах функцийг ашиглан утгыг тэг регистр ашиглан хуулдаг. Мөн "subleq Z, Z,…" нь Z регистрийн утгаас үл хамааран тэг регистрийг 0 болгож дахин тохируулдаг.
ADD a, b - a + b утгыг нэмж, нийлбэрийг b -д хадгалдаг бөгөөд дараахь зүйлийг бүрдүүлж болно
- a, Z, 2 дэд хэсэг (дараагийн заавар)
- дэд хэсэг Z, b, 3 (дараагийн заавар)
- subleq Z, Z, жишээ нь. 4 (дараагийн заавар)
Энэ заавар нь хасах функцийг ашиглан mem + mem [a] гэсэн mem - (- mem [a]) -ийг тооцоолоход л болно.
HLT - CPU -ийг зогсоож, гүйцэтгэлийг зогсооно
Тодорхойлолтоор эмулятор нь CPU нь 0xff (эсвэл дуулсан бол -1) рүү шилжвэл түүнийг зогсоохыг хүсдэг гэдгийг мэддэг. Тиймээс энгийн
дэд хэсэг Z, Z, -1
энэ ажлыг хийж, эмуляторт эмуляцийг зогсоох ёстойг зааж өгдөг.
Энэхүү гурван энгийн зааврыг ашиглан Фибоначчийн алгоритмыг хэрэгжүүлж, сайн ажиллаж чадна. Учир нь OISC нь "жинхэнэ" компьютерийн тооцоолж чадах бүх зүйлийг зөвхөн subleq заавраар тооцоолж чаддаг. Мэдээжийн хэрэг, кодын урт, хурд гэх мэт олон тохиролцоо хийх шаардлагатай байдаг. Гэсэн хэдий ч энэ нь бага түвшний програм хангамж, компьютерийг сурч, туршиж үзэх гайхалтай арга юм.
Энэ алхамд хавсаргасан тул та "kim_uno_tools.zip" архивыг олох боломжтой. Энэ нь KIM Uno -ийн зарим үндсэн угсрагч, симуляторыг агуулдаг. Тэд NodeJS дээр бичигдсэн байдаг - үүнийг суулгасан эсэхээ шалгаарай.
Хөтөлбөрүүдийг угсрах
Хэрэв та "fibonacci/fibonacci.s" -ийг үзвэл энэ нь хэлэлцсэн фибоначчийн хэрэгжилтийн эх код болохыг олж мэдэх болно. Үүнийг угсарч, KIM Uno -г ажиллуулах програм гаргахын тулд та дараах тушаалыг оруулна уу (задалсан "kim_uno_tools.zip" архивын эхэнд):
зангилаа угсрах.js fibonacci/fibonacci.s
Хэрэв та алдаа гаргасан эсвэл гарсан програмыг асгасан бол энэ нь алдааг хэвлэх болно. Үүнийг хадгалахын тулд та гаралтыг хуулж файлд хадгалах эсвэл энэ тушаалыг ажиллуулах боломжтой.
зангилаа угсрах.js fibonacci/fibonacci.s> таны файл.h
Гаралтыг KIM Uno програм хангамжид C толгой файл болгон шууд оруулах боломжтой байдлаар хэлбэршүүлсэн боловч симулятор үүнийг ашиглан загварчлах боломжтой. Зүгээр л оруулна уу:
зангилаа sim.js таны файл.h
Мөн танд симуляцийн үр дүн болон KIM Uno -аас хүлээж буй гаралтыг дэлгэц дээр үзүүлэх болно.
Энэ бол энэ хэрэгслийн маш товч танилцуулга байсан; Тэдэнтэй хамт тоглож, хэрхэн ажиллаж байгааг харахыг танд зөвлөж байна. Ингэснээр та гүнзгий мэдлэг олж авах бөгөөд CPU, заавар, угсрагч, эмуляторуудын ажиллах зарчмуудыг сурч мэдэх болно;-)
Алхам 13: Outlook
Баяр хүргэе
Хэрэв та үүнийг уншсан бол энэ бүх зааварчилгааг даван туулж, өөрийн KIM Uno бүтээсэн байх. Энэ үнэхээр сайхан байна.
Гэхдээ аялал энд дуусахгүй - KIM Uno -г хэрхэн өөрчилж, өөрийн хэрэгцээнд нийцүүлэн тохируулах хязгааргүй олон сонголтууд байдаг.
Жишээлбэл, KIM Uno нь алдарт MOS 6502 эсвэл Intel 8085, 8086 эсвэл 8088 -ийг дуурайж болох "жинхэнэ" чимэг процессор эмулятороор тоноглогдсон байж магадгүй юм. Дараа нь OISC -ийн талаар олж мэдэхээс өмнө миний анхны төсөөлөлд хүрэх болно.
Тоног төхөөрөмжийн загвар нь нэлээд ерөнхий шинж чанартай байдаг тул өөр өөр боломжууд байдаг. KIM Uno -ийг дараах байдлаар ашиглаж болно …
- … Алсын удирдлага, жишээ нь. CNC эсвэл бусад төхөөрөмжүүдийн хувьд. Магадгүй утастай эсвэл IR диод эсвэл бусад утасгүй илгээгчээр тоноглогдсон байж магадгүй
- … (Арван зургаатын) халаасны тооцоолуур. Програм хангамжийг маш амархан дасан зохицох боломжтой бөгөөд хавтангийн дизайныг тийм ч их өөрчлөх шаардлагагүй болно. Торгоны дэлгэцийг математикийн үйлдлээр дасан зохицуулж, сегмент хоорондын зайг арилгаж магадгүй юм. Үүнээс гадна энэ өөрчлөлтөд аль хэдийн бэлэн болсон байна
Миний төлөвлөж, төлөвлөж байсан шиг та KIM Uno -г дагаж, хөгжилтэй байсан гэж найдаж байна. Хэрэв та үүнийг сунгах эсвэл өөрчлөх юм бол надад мэдэгдээрэй. Баяртай!
ПХБ -ийн тэмцээнд дэд байр эзэлсэн
Зөвлөмж болгож буй:
Sonos Spotify винил эмулятор: 26 алхам
Sonos Spotify винил эмулятор: Энэ нь энэ төслийн хамгийн сүүлийн заавар биш гэдгийг анхаарна уу: https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d хаягаар орж хамгийн сүүлийн багцыг үзнэ үү. заавар, дэмжлэг Винил дээр хөгжим сонсох нь гайхалтай. Энэ нь
HP-35 шинжлэх ухааны тооцоолох эмулятор Arduino Uno-той: 4 алхам
Arduino Uno-той HP-35 шинжлэх ухааны тооцоолох эмулятор: Энэхүү төслийн зорилго нь TFTLCD болон мэдрэгчтэй дэлгэцтэй Arduino Uno дээр дараах симуляторыг ажиллуулах явдал юм https://www.hpmuseum.org/simulate/hp35sim/hp35sim…. Анхны HP-35 шинжлэх ухааны тооцоолуур нь хадгалагдсан анхны кодыг дуурайдаг
GamePi - Гар эмулятор консол: 17 алхам (зурагтай)
GamePi - Гар эмуляторын консол: Танилцуулга: Энэхүү зааварчилгаа нь Raspberry Pi 3 хөдөлгүүртэй гар эмуляцийн консолыг тайлбарласан болно. Би үүнийг GamePi -д баптисм хүртээсэн. Ийм төхөөрөмжид зориулсан зааварчилгаа маш их байдаг, гэхдээ миний бодлоор ихэнх нь хэтэрхий том, хэт жижиг юм
Arduino Uno ба мэдрэгч ашиглан PC хулганы эмулятор. 8 алхам
Arduino Uno ба мэдрэгч ашиглан компьютерийн хулганы эмулятор: Энэхүү зааварчилгаанд бид хулганы эмуляторын загварыг бүтээх гэж байна. Хулганы эмулятор нь хулгана зөв ажиллахгүй байгаа үед ашиглах боломжтой төхөөрөмж юм. Төсөл нь нэг ул
AVR микропроцессор бүхий Stepper мотор жолоодох: 8 алхам
AVR микропроцессорын тусламжтайгаар алхам алхмаар мотор жолоодох: Хэвлэгч/дискний хөтөч/гэх мэт зарим хог хаягдал хөдөлгүүрийг авсан уу? Зарим нь ohmeter ашиглан шалгаж, дараа нь микропроцессор дээрээ драйверын энгийн кодыг оруулснаар та загварлаг байдлаар алхах болно