Isi kandungan:

The KIM Uno - Emulator Kit Mikroprosesor 5 €: 13 Langkah (dengan Gambar)
The KIM Uno - Emulator Kit Mikroprosesor 5 €: 13 Langkah (dengan Gambar)

Video: The KIM Uno - Emulator Kit Mikroprosesor 5 €: 13 Langkah (dengan Gambar)

Video: The KIM Uno - Emulator Kit Mikroprosesor 5 €: 13 Langkah (dengan Gambar)
Video: NEWYES Calculator VS Casio calculator 2024, Jun
Anonim
Image
Image
The KIM Uno - Mikroprosesor Dev Kit Emulator 5 €
The KIM Uno - Mikroprosesor Dev Kit Emulator 5 €
The KIM Uno - Mikroprosesor Dev Kit Emulator 5 €
The KIM Uno - Mikroprosesor Dev Kit Emulator 5 €

KIM Uno adalah alat dev yang mudah alih dan mudah alih yang ditentukan untuk mikropemproses (retro). Tetapi izinkan saya memperkenalkan idea dengan mengundurkan masa:

Pada akhir tahun 2018 terlintas di fikiran saya, bahawa saya ingin membina kit dev mikropemproses mudah alih, seperti KIM-1 yang terkenal dari MOS Technology, Inc. dan direka oleh Chuck Peddle yang juga terlibat dalam membuat CPU 6502.

Tetapi membina alat dev "bare-bone" dengan komponen logik diskrit bukanlah pilihan kerana memerlukan bekalan kuasa yang besar (kerana alat-alat kuno cenderung mengambil arus yang serius) dan pengembangannya juga sangat memerlukan masa. Dan saya mahukannya sekarang!

Oleh itu, saya merancang KIM Uno sebagai peranti mudah alih, yang sesuai di satu tangan dan dikuasakan oleh dua bateri CR2032. Ia menggunakan mikrokontroler ATMega328p ("Arduino") yang berjalan pada 8 MHz untuk meniru (atau mensimulasikan) CPU yang diinginkan. Senibina ini juga memastikan bahawa CPU yang ditiru boleh ditukar ganti dengan apa sahaja yang sesuai dengan memori flash mikrokontroler. Oleh itu, ia adalah peranti pelbagai guna.

Secara kebetulan saya kemudian menonton ceramah yang sangat baik - yang disebut The Ultimate Apollo Guidance Computer Talk (34C3) - di YouTube di mana disebut "One Instruction Set Computers" atau OISCs. Saya tidak tahu mengenai mereka dan menganggap ini sebagai calon yang tepat untuk melaksanakannya.

KIM Uno meniru CPU dengan hanya satu arahan: subleq - tolak dan cabang jika kurang dari atau sama dengan sifar.

Sekiranya anda mengikuti saya melalui Instructable ini, anda boleh membina KIM Uno anda sendiri dalam masa yang singkat. Dan bahagian terbaik - selain fakta bahawa anda boleh mengubahnya mengikut citarasa anda - adalah bahawa ia hanya berharga 4, 75 € untuk dibuat (pada akhir 2018).

Satu petunjuk: ada repositori Git yang mengandungi semua fail yang disediakan oleh langkah-langkah yang berbeza dari arahan ini. Sekiranya anda ingin mengubah beberapa sumber dan berkongsi dengan kami semua anda boleh membuat PR. Tetapi anda juga boleh memuat turun semua fail sekaligus. Cukup ke https://github.com/maxstrauch/kim-uno. Terima kasih!

Terdapat satu lagi projek yang cukup menarik, yang disebut sama (KIM Uno), yang membuat replika sebenar KIM Uno 6502. Lihat di sini. Pencipta malah menjual kit tersebut. Oleh itu, jika anda berminat dengan 6502 dan menyukai projek ini, anda mesti melihatnya di sana!

Langkah 1: Mendapatkan PCB

Sumber PCB
Sumber PCB
Sumber PCB
Sumber PCB

Seperti yang anda lihat, saya menggunakan kesempatan untuk merancang PCB dan membiarkannya dibuat secara profesional. Oleh kerana membuatnya secara luaran dan menghantarnya kepada anda akan memakan banyak masa (bergantung pada tempat anda berada di dunia;-)), mendapatkannya adalah langkah pertama. Kami kemudian boleh meneruskan langkah-langkah lain semasa PCB dibuat dan dihantar kepada anda.

Saya memesan PCB saya di China di PCBWay dengan harga $ 5 sahaja. Saya tidak mendapat apa-apa faedah untuk mempersembahkan PCBWay sebagai pengeluar PCB saya, ia hanya berfungsi dengan baik untuk saya dan mungkin juga berfungsi dengan baik untuk anda. Tetapi anda boleh memesannya di tempat lain seperti JLCPCB, OSH Park atau mana-mana syarikat PCB tempatan.

Tetapi jika anda ingin memesannya di PCBWay, anda boleh memuat turun fail ZIP yang dilampirkan "kim-uno-rev1_2018-12-12_gerbers.zip" dan memuat naiknya terus ke PCBWay tanpa sebarang perubahan. Ini adalah fail asal yang saya gunakan untuk memesan PCB yang dapat anda lihat dalam gambar.

Sekiranya anda memesannya dari pengeluar lain, anda mungkin perlu mengeksportnya semula dari sumber KiCad yang asli, kerana saya menghasilkannya dengan spesifikasi dari PCBWay yang anda dapati di sini. Untuk sumber KiCad yang asal, muat turun "kim-uno-kicad-sources.zip" dan ekstrak.

Tetapi ada cara kedua: jika anda tidak mahu memesan PCB, anda boleh membina versi anda sendiri dengan menggunakan papan wangi atau bahkan papan roti.

Bagaimanapun: kerana PCB kini dalam perjalanan, kita dapat memberi tumpuan kepada bahagian lain! Mari, ikut saya.

Langkah 2: Mendapatkan Komponen

Mendapatkan Komponen
Mendapatkan Komponen
Mendapatkan Komponen
Mendapatkan Komponen
Mendapatkan Komponen
Mendapatkan Komponen

Sekarang anda perlu mendapatkan komponennya. Untuk ini, anda akan mendapat gambaran keseluruhan semua komponen dan kuantiti yang anda perlukan, yang dilampirkan pada langkah ini dan juga BOM (bil bahan).

BOM mengandungi pautan ke eBay. Walaupun tawaran tersebut mungkin ditutup semasa anda membaca ini, anda boleh menggunakannya sebagai titik permulaan. Komponen yang digunakan cukup standard.

Berikut ini saya akan menerangkan kepada anda semua komponen yang diperlukan:

  • Perintang 7x 1 kΩ untuk paparan tujuh segmen. Anda boleh mengurangkan nilainya (mis. Hingga 470 Ω) untuk menjadikannya lebih cerah, tetapi mengurangkannya tidak terlalu banyak jika tidak, LED akan mati atau bateri habis dengan cepat. Saya mendapati bahawa nilai ini sesuai untuk saya
  • 1x 10 kΩ sebagai perintang penarik untuk garis RESET mikrokontroler
  • Kapasitor 1x 100nF untuk melancarkan lonjakan voltan (yang seharusnya tidak berlaku kerana kita menggunakan bateri, betul, tetapi untuk ukuran yang baik …)
  • 1x ATMega328P dalam pakej DIP-28 (biasanya bernama ATMega328P-PU)
  • 1x PCB utama - lihat langkah sebelumnya; sama ada dipesan atau dibina sendiri
  • 2x pemegang bateri CR2032
  • Suis 1x SPDT (tiang tunggal, lontaran ganda) yang pada asasnya mempunyai tiga kenalan dan di setiap dua keadaannya (sama ada hidup atau mati) ia menghubungkan dua kenalan
  • Butang tekan sentuhan 20x untuk papan kekunci. Untuk menggunakan bahagian belakang PCB saya menggunakan butang tekan sentuhan SMD (yang standard 6x6x6 mm) - mereka mudah disolder seperti yang anda lihat
  • PILIHAN: Header pin 1x 1x6 untuk menyambungkan programmer, tetapi ini adalah pilihan seperti yang akan anda lihat kemudian
  • Paparan 1x tujuh segmen dengan 4 digit dan paparan 1x tujuh segmen dengan 2 digit - papan hanya akan mengambil elemen 0.36 inci (9, 14 mm) dengan pendawaian anod biasa. Kedua-dua keperluan itu penting untuk mendapatkan unit kerja. Tetapi juga paparan segmen tujuh jenis ini sangat biasa

Terlampir pada langkah ini, anda dapat mencari fail "komponen-datasheets.zip" yang mengandungi maklumat yang lebih tepat mengenai dimensi dan jenis komponen yang digunakan. Tetapi kebanyakan komponennya sangat standard dan boleh diperoleh dengan mudah dengan sedikit wang.

Sekarang anda perlu menunggu sehingga anda mempunyai semua komponen yang siap untuk terus dipateri. Selama ini anda sudah boleh melangkah ke akhir dan membaca sedikit mengenai penggunaan KIM Uno jika anda mahu.

Langkah 3: Gambaran Keseluruhan Alat Pematerian

Gambaran Keseluruhan Alat Pematerian
Gambaran Keseluruhan Alat Pematerian
Gambaran Keseluruhan Alat Pematerian
Gambaran Keseluruhan Alat Pematerian

Untuk menyolder dan membina KIM Uno, anda memerlukan alat yang ditunjukkan oleh gambar:

  • Pemotong wayar (untuk memotong hujung wayar komponen)
  • Tang rata
  • Sepasang pinset
  • Solder yang tidak tebal - Saya menggunakan solder 0.56 mm
  • Setrika solder - anda tidak memerlukan besi pematerian mewah (kerana kami juga tidak melakukan sains roket di sini) - Saya telah menggunakan Ersa FineTip 260 sejak sekian lama dan ia sangat bagus
  • Pena fluks: menambahkan fluks pada komponen dan pad menjadikannya lebih mudah untuk menyoldernya kerana pateri kemudian "mengalir" dengan sendirinya ke tempat yang betul *
  • Pilihan: span (dari bulu logam) untuk besi pematerian anda

Untuk memprogram KIM Uno nanti, anda juga memerlukan:

  • komputer dengan rantai alat AVR-GCC dan peluang untuk memuat naik firmware
  • ISP (pengaturcara) - seperti yang anda lihat pada gambar saya menggunakan Arduino Uno saya sebagai ISP dengan lakaran khas - jadi saya tidak perlu membeli perkakasan mewah

* beberapa bimbingan oleh manusia diperlukan;-)

Adakah anda sudah bersedia? Pada langkah seterusnya kita akan mula memasang KIM Uno.

Langkah 4: Pematerian # 1: Menambah Perintang dan Kapasitor

Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor
Pematerian # 1: Menambah Perintang dan Kapasitor

Anda harus selalu bekerja dari komponen terkecil (dari segi ketinggian komponen) terlebih dahulu, hingga komponen tertinggi terakhir. Oleh itu, kita mulakan dengan menambahkan perintang dan membongkokkan kaki di bahagian belakang supaya perintang mudah dipateri dan tetap di tempatnya. Selepas itu memotong wayar panjang.

Juga, tidak ditunjukkan dalam gambar, tambahkan kapasitor 100 nF kecil dengan cara yang sama.

Satu petua: simpan kaki dawai itu di dalam bekas kecil, kadang-kadang berguna.

Langkah 5: Memateri # 2: Memasang Papan Kekunci

Pematerian # 2: Memasang Papan Kekunci
Pematerian # 2: Memasang Papan Kekunci
Pematerian # 2: Memasang Papan Kekunci
Pematerian # 2: Memasang Papan Kekunci
Pematerian # 2: Memasang Papan Kekunci
Pematerian # 2: Memasang Papan Kekunci

Langkah seterusnya adalah menyolder 20 suis sentuhan SMD. Oleh kerana kerja ini agak tidak senang, kami melakukannya sekarang, apabila PCB meletakkan di atas meja kerja.

Kami akan bekerja dari atas ke bawah (atau dari kiri ke kanan jika PCB berorientasikan seperti yang ditunjukkan dalam foto) dan mulakan dengan baris pertama: pilih salah satu daripada empat pad untuk setiap suis dan basahkan dengan pen fluks.

Kemudian gunakan sepasang pinset untuk mengambil suis dan meletakkannya dengan hati-hati pada keempat pad. Kemudian solder hanya bahagian kaki suis yang ada di pad yang anda pilih dan sediakan dengan fluks. Untuk ini, anda harus "ambil" solder dengan seterika anda sebelum memulakan. Dengan menggunakan kaedah ini, lengkapkan keseluruhan baris suis, hanya menyolder satu kaki.

Gambar dengan anak panah menunjukkan pembesaran bagaimana pematerian dilakukan dengan tepat.

Setelah anda menyolder seluruh baris (satu pin sahaja) anda boleh membuat sedikit penyesuaian dengan memanaskan pin ke belakang dan meletakkan semula suis. Pastikan, suis diselaraskan sebaik mungkin.

Sekiranya anda berpuas hati dengan penjajaran, anda boleh membasahi semua pin lain dengan pen fluks dan kemudian menyoldernya dengan menyentuhnya dengan besi pematerian dan menambahkan sedikit pateri dengan menyentuhnya juga. Anda akan melihat bahawa pateri disedut terus ke alas.

Selepas menyisipkan satu baris atau lebih, anda akan menyedari bahawa anda mendapat perhatian dan tidak begitu sukar tetapi berulang. Jadi lakukan selebihnya dan anda akan berakhir dengan papan kekunci siap dalam masa yang singkat.

Langkah 6: Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin

Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin
Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin
Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin
Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin
Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin
Pematerian # 3: Paparan Tujuh Segmen, Tukar dan Header Pin

Sekarang anda boleh menambahkan suis dan header pin (pilihan) dengan memegangnya dengan jari anda dan menyolder satu pin untuk menahannya ke PCB, sehingga anda dapat menyolder pin lain dan akhirnya menyentuh pin penahan awal.

Hati-hati agar anda tidak membakar diri dengan besi pematerian panas. Sekiranya anda tidak selesa dengan ini, anda boleh menggunakan sedikit pita (mis. Pita pelukis) untuk memegang komponen tersebut. Dengan cara ini, kedua tangan anda bebas bergerak.

Paparan tujuh segmen disolder dengan cara yang sama (lihat gambar): anda memasukkannya ke dalam, memegangnya dengan tangan atau pita anda dan memateri dua pin yang berlawanan untuk menahannya di tempat sementara anda boleh menyolatkan pin yang lain.

Tetapi berhati-hati dan letakkan paparan tujuh segmen ke arah yang betul (dengan titik perpuluhan menghadap papan kekunci). Jika tidak, anda menghadapi masalah…

Langkah 7: Memateri # 4: Memateri Mikrokontroler

Pematerian # 4: Memateri Mikrokontroler
Pematerian # 4: Memateri Mikrokontroler

Sekarang kerana anda mempunyai banyak latihan, anda boleh terus maju dan memasukkan mikrokontroler dengan takik di bahagian atas (atau pin pertama) menghadap ke arah suis. Dengan menggunakan tang rata, anda boleh sedikit membengkokkan kaki mikrokontroler dengan teliti, sehingga sesuai dengan lubang pada PCB.

Oleh kerana ia sesuai, anda memerlukan kekuatan terkawal untuk memasukkan mikrokontroler. Kelebihannya ialah, ia tidak jatuh. Ini bermaksud, anda boleh meluangkan masa dan menyoldernya dari belakang.

Langkah 8: Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)

Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)
Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)
Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)
Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)
Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)
Pematerian # 5: Tambahkan Pemegang Bateri (Langkah terakhir)

Akhirnya anda perlu menambah pemegang bateri ke belakang. Untuk ini, anda hanya menggunakan pen fluks dan membasahi keempat-empat pad dan kemudian dapatkan sedikit pateri pada seterika anda. Sejajarkan pemegang bateri dengan berhati-hati pada kedua-dua pad. Di kedua hujung kenalan mesti terdapat jumlah pad PCB yang sama. Sentuh pad PCB dan kaki pemegang bateri dengan seterika anda. Pateri akan mengalir di bawah pelapik dan di atasnya dan melekatkannya di tempat seperti yang ditunjukkan dalam gambar. Sekiranya anda mempunyai masalah dengan ini, anda boleh menambahkan lebih banyak fluks dengan pen.

Langkah 9: Memancarkan Emulator

Berkelip Emulator
Berkelip Emulator
Berkelip Emulator
Berkelip Emulator
Berkelip Emulator
Berkelip Emulator

Dalam arkib zip "kim-uno-firmware.zip" yang dilampirkan, anda boleh menemui kod sumber untuk emulator bersama dengan "main.hex" yang sudah disusun yang boleh anda muat naik terus ke mikrokontroler.

Sebelum benar-benar menggunakannya, anda perlu menetapkan bit fius mikrokontroler, supaya ia menggunakan jam 8 MHz dalaman tanpa membahagi dua. Anda boleh menyelesaikan tugas dengan arahan berikut:

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

Sekiranya anda tidak tahu avrdude: ini adalah program untuk memuat naik program ke mikrokontroler. Anda boleh mengetahui lebih lanjut mengenainya di sini. Pada dasarnya anda memasangnya dan kemudian ia siap digunakan. Untuk persediaan anda, anda mungkin perlu menukar argumen "-P" ke port bersiri yang lain. Sila periksa komputer anda port serial mana yang digunakan (mis. Di dalam Arduino IDE).

Selepas ini, anda boleh memasukkan firmware ke mikrokontroler dengan arahan ini:

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

Sekali lagi: perkara yang sama berlaku untuk "-P" seperti di atas.

Oleh kerana saya tidak memiliki ISP "profesional" (Programmer Dalam Sistem), saya selalu menggunakan Arduino UNO (lihat gambar) dan lakaran yang saya lampirkan ("arduino-isp.ino", dari Randall Bohn). Saya tahu bahawa ada versi yang lebih baru, tetapi dengan versi ini saya tidak menghadapi masalah sejak lima tahun kebelakangan ini, jadi saya menyimpannya. Ia hanya berfungsi. Dengan menggunakan komen di tajuk sketsa, anda mendapat pinout di Arduino UNO dan menggunakan skema KIM Uno (lihat dilampirkan) anda boleh mendapatkan pinout dari tajuk 1x6 ISP di KIM Uno. Pin persegi, berhampiran dengan paparan tujuh segmen adalah pin 1 (GND). Pin berikut adalah (dalam urutan yang betul): RESET, MOSI, MISO, SCK, VCC. Anda boleh menyambungkan VCC ke 3V3 atau ke 5V.

Sekiranya anda tidak menambahkan header pin 1x6, anda boleh menggunakan wayar papan roti dan memasukkannya ke lubang sambungan dan menudingnya dengan jari anda - seperti yang ditunjukkan dalam gambar. Ini membuat hubungan yang cukup untuk mengaktifkan firmware dan menetapkan sekering. Tetapi jika anda menyukai persediaan yang lebih kekal, anda mesti menambahkan header pin 1x6.

Saya mempunyai dua peranti: versi pengeluaran tanpa pin header dan versi pengembangan dengan pin header yang saya biarkan bersambung dan menggunakannya berulang kali semasa pembangunan. Ini jauh lebih selesa.

Langkah 10: Selesai

Selesai
Selesai
Selesai
Selesai

Sekarang anda sudah selesai dan boleh mula menulis program subleq anda sendiri di atas kertas, memasangnya dan memasukkannya ke dalam memori.

KIM Uno dilengkapi dengan pengiraan Fibonacci yang telah diprogramkan mulai dari lokasi memori 0x0a. Ia ditetapkan secara lalai ke n = 6 sehingga harus menghasilkan nilai 8. Tekan "Go" untuk memulakan pengiraan.

Langkah 11: Analisis Reka Bentuk PCB

Analisis Reka Bentuk PCB
Analisis Reka Bentuk PCB
Analisis Reka Bentuk PCB
Analisis Reka Bentuk PCB

Setelah menyelesaikan projek ini, saya dapati beberapa perkara yang patut diberi perhatian dan harus diberi perhatian dalam semakan baru lembaga:

  • skrin sutera ATMega328p tidak mempunyai kedudukan biasa di mana pin pertama berada. Jejak DIP-28 bahkan tidak mempunyai pad persegi di mana pin pertama berada. Ini mesti diperbaiki dengan silkscreen yang lebih terperinci untuk mengelakkan kekeliruan
  • tajuk ISP tidak mempunyai label sambungan pada skrin sutera. Ini menyukarkan untuk mengenali cara menghubungkannya ke ISP
  • header ISP dapat diubah menjadi header pin 2x6 dengan tata letak pin standard untuk mengelakkan kekeliruan

Selain daripada itu, saya cukup gembira bagaimana ia berjaya dan berjaya pada percubaan pertama.

Langkah 12: Bagaimana Mengatur Program SUBLEQ?

Image
Image
Bagaimana Mengatur Program SUBLEQ?
Bagaimana Mengatur Program SUBLEQ?
Bagaimana Mengatur Program SUBLEQ?
Bagaimana Mengatur Program SUBLEQ?

Seperti yang disebutkan di awal, firmware KIM Uno saat ini meniru Komputer Satu Instruksi (OISC) dan memberikan arahan subleq untuk melakukan pengiraan.

Arahan subleq bermaksud tolak dan cabang jika kurang daripada atau sama dengan sifar. Dalam kod pseudo ini kelihatan seperti berikut:

subleq A B C mem [B] = mem [B] - mem [A]; jika (mem [B] <= 0) goto C;

Oleh kerana KIM Uno meniru mesin 8-bit, semua argumen A, B dan C adalah nilai 8 bit dan oleh itu ia dapat mengatasi jumlah memori utama 256 bait. Jelas ini dapat diperluas, dengan membuat nilai multi-bait A, B dan C. Tetapi buat masa ini mari kita mudahkan.

KIM Uno juga memiliki "periferal": paparan dan papan kekunci. Ia menggunakan seni bina pemetaan memori untuk menghubungkan antara periferalnya, walaupun peta memori sangat mudah:

  • 0x00 = daftar Z (sifar) dan hendaklah disimpan sifar.
  • 0x01 - 0x06 = enam bait yang mewakili nilai setiap segmen paparan (dari kanan ke kiri). Nilai 0xf - lihat kod sumber (main.c) untuk maklumat lebih lanjut.
  • 0x07, 0x08, 0x09 = tiga bait di mana setiap bait mewakili dua paparan tujuh segmen (dari kanan ke kiri). Lokasi memori ini membolehkan hanya memaparkan hasil tanpa membelah hasilnya menjadi dua titik untuk meletakkannya di lokasi memori satu digit 0x01 - 0x06.
  • 0x0a + = Program bermula pada 0x0a. Pada masa ini kunci "Go" dilaksanakan dari 0x0a diperbaiki.

Dengan maklumat ini sekarang seseorang dapat menulis program dalam assembler dan memasukkan petunjuk ke dalam memori dan kemudian melaksanakannya. Oleh kerana hanya ada satu arahan, hanya argumen (A, B dan C) yang dimasukkan. Oleh itu, setelah tiga lokasi memori, argumen arahan seterusnya bermula dan seterusnya.

Dilampirkan ke langkah ini, anda dapat mencari fail "fibonacci.s" dan juga gambar program tulisan tangan yang merupakan contoh pelaksanaan Fibonacci. Tetapi tunggu: ada tiga arahan yang digunakan - khusus ADD, MOV dan HLT - yang tidak subleq. "Apa kesepakatan itu? Bukankah kamu mengatakan bahawa hanya ada satu arahan, subleq?" anda bertanya? Sangat mudah: dengan subleq seseorang dapat meniru arahan tersebut dengan sangat mudah:

MOV a, b - salin data di lokasi a hingga b dapat terdiri dari:

  1. subleq b, b, 2 (arahan seterusnya)
  2. subleq a, Z, 3 (arahan seterusnya)
  3. subleq Z, b, 4 (arahan seterusnya)
  4. subleq Z, Z, mis. 5 (arahan seterusnya)

Menggunakan ciri penolakan subleq, yang mem - mem [a] dan menimpa mem dengan hasilnya, nilainya disalin menggunakan register sifar. Dan "subleq Z, Z, …" menetapkan semula daftar sifar menjadi 0, tanpa mengira nilai Z.

TAMBAHKAN a, b - menambah nilai a + b dan menyimpan jumlah dalam b boleh terdiri daripada:

  1. subleq a, Z, 2 (arahan seterusnya)
  2. subleq Z, b, 3 (arahan seterusnya)
  3. subleq Z, Z, mis. 4 (arahan seterusnya)

Arahan ini hanya mengira mem - (- mem [a]) yang mem + mem [a] dengan juga menggunakan fitur pengurangan.

HLT - menghentikan CPU dan mengakhiri pelaksanaan:

Secara definisi emulator tahu bahawa CPU ingin dihentikan jika melonjak ke 0xff (atau -1 jika dinyanyikan). Jadi sederhana

subleq Z, Z, -1

melakukan tugas dan menunjukkan kepada emulator, bahawa ia harus menamatkan emulasi.

Dengan menggunakan tiga arahan mudah ini, algoritma Fibonacci dapat dilaksanakan dan berfungsi dengan baik. Ini kerana OISC dapat mengira segala yang dapat dikira oleh komputer "sebenar" dengan hanya subleq arahan. Tetapi tentu saja, terdapat banyak pertukaran yang boleh dibuat - seperti panjang dan kelajuan kod. Namun demikian, ini adalah kaedah terbaik untuk belajar dan bereksperimen dengan pengaturcaraan perisian rendah dan komputer.

Terlampir pada langkah ini, anda juga dapat menemui arkib zip "kim_uno_tools.zip". Ia mengandungi beberapa alat pemasangan dan simulator asas untuk KIM Uno. Ia ditulis dalam NodeJS - pastikan anda telah memasangnya.

Program perhimpunan

Sekiranya anda melihat "fibonacci / fibonacci.s" anda akan dapati bahawa ia adalah kod sumber untuk pelaksanaan fibonacci yang dibincangkan. Untuk menyusunnya dan membuat program daripadanya, yang dapat dijalankan oleh KIM Uno, anda memasukkan perintah berikut (dalam akar arkib "kim_uno_tools.zip" yang diekstrak):

node assemble.js fibonacci / fibonacci.s

dan akan mencetak ralat jika anda melakukan kesalahan atau mengeluarkan program yang dihasilkan. Untuk menyimpannya, anda boleh menyalin output dan menyimpannya ke fail atau hanya menjalankan perintah ini:

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

Output diformat sedemikian rupa sehingga dapat langsung dimasukkan ke dalam firmware KIM Uno sebagai file header C, tetapi simulator juga dapat menggunakannya untuk mensimulasikan. Cukup masukkan:

simpul sim.js yourfile.h

Dan anda akan diberikan hasil simulasi dan output yang diharapkan dari KIM Uno di paparan.

Ini adalah pengenalan yang sangat ringkas untuk alat ini; Saya mengesyorkan anda bermain-main dengan mereka dan melihat bagaimana ia berfungsi. Dengan cara ini anda mendapat pengetahuan yang mendalam dan mempelajari prinsip-prinsip yang berfungsi di sebalik CPU, arahan, pemasang dan emulator;-)

Langkah 13: Tinjauan

Prospek
Prospek
Prospek
Prospek
Prospek
Prospek

Tahniah

Sekiranya anda membaca ini, anda mungkin telah menjalani keseluruhan arahan ini dan membina KIM Uno anda sendiri. Ini sangat bagus.

Tetapi perjalanannya tidak berakhir di sini - terdapat banyak pilihan bagaimana anda boleh mengubah KIM Uno dan menyesuaikannya dengan keperluan dan keinginan anda.

Sebagai contoh, KIM Uno boleh dilengkapi dengan emulator CPU retro "nyata" yang mungkin meniru MOS 6502 atau Intel 8085, 8086 atau 8088 yang terkenal. Kemudian ia akan menuju kepada penglihatan awal saya, sebelum saya mengetahui mengenai OISC.

Tetapi ada kemungkinan penggunaan lain, kerana reka bentuk perkakasannya cukup generik. KIM Uno boleh digunakan sebagai…

  • … alat kawalan jauh mis. untuk CNC atau peranti lain. Mungkin berwayar atau dilengkapi dengan diod IR atau penghantar wayarles lain
  • … kalkulator poket (heksadesimal). Firmware boleh disesuaikan dengan sangat mudah dan reka bentuk papan tidak perlu banyak diubah. Mungkin silkscreen dapat disesuaikan dengan operasi matematik dan jurang antara segmen dapat dihilangkan. Selain daripada ini, ia sudah bersedia untuk transformasi ini

Saya harap anda bersenang-senang mengikuti dan semoga membina KIM Uno seperti saya merancang dan merancangnya. Sekiranya anda memanjangkannya atau mengubahnya - beritahu saya. Ceria!

Peraduan PCB
Peraduan PCB
Peraduan PCB
Peraduan PCB

Naib Johan dalam Peraduan PCB

Disyorkan: