Saya baru-baru ini mulai bekerja di sebuah perusahaan kecil yang memproduksi barang elektronik terkait diagnosa otomotif. Bos saya, yang berusia pertengahan 50-an, mengatakan bahwa ia menggunakan 8051 turunan, dan mereka melakukan pekerjaan itu. Saya pergi mencari Google untuk mengetahui apakah 8051 masih populer hingga saat ini. Dan di Quora, saya melihat ini:
... mungkin arsitektur MCU paling sederhana di sekitar. Setiap perangkat tampaknya seperti versi telanjang-tulang. Konsep timer, clocking, UART, dll. Saya banyak dibersihkan! Dan, saya kemudian mulai menghargai arsitektur lain - karena saya benar-benar memahami perbedaannya.
... jelas, itu tidak akan digunakan oleh industri mana pun untuk mengembangkan suatu produk karena kesederhanaannya ...
Tapi kenapa? Sejauh ini, setidaknya sebagai seorang mahasiswa, saya biasa melakukan banyak hal tanpa mengacaukan arsitektur. Saya dengan senang hati memberikan kode C, saya menggunakan periferal LCD, terhubung ke IC lain dengan protokol yang berbeda (SPI, I2C dll.)
Mengapa saya harus repot dengan arsitektur mikrokontroler saya, terlepas dari bidang terbatas aplikasi real-time & kritis waktu?
Jawaban:
Apakah 8051 dan mikrokontroler bit-rendah lainnya masih digunakan saat ini?
Ya, hampir di mana-mana. Mereka kecil dan mudah, ada banyak inti mengambang di sekitar yang dapat Anda masukkan ke silikon kustom Anda dengan biaya rendah atau tanpa biaya, ada kompiler matang. Ini semua membuat 8051 masih menjadi salah satu arsitektur inti paling populer di antara produsen silikon. Core ARM mungkin tersedia dalam produk yang lebih berbeda, tetapi sekali lagi, ketika Anda berbicara dengan seseorang yang membangun banyak perangkat dengan batasan harga yang sangat ketat, kemungkinan dia akan lebih memilih inti 8.051 yang lebih murah / gratis jika menyelesaikan pekerjaannya . Hanya untuk menentang klaim @ Nitro2k01 tentang penggunaan khusus: Mouser memiliki hampir 800 model 8.051 mikrokontroler pada persediaan ¹. Dan fakta bahwa ini dimulai, bahkan di Mouser, dengan harga di bawah 40ct mungkin merupakan indikasi untuk apa mereka digunakan:
MCU umum, berkinerja rendah, dan bervolume tinggi
jadi:
adalah omong kosong mengucapkan berkualitas tinggi. Terutama karena Anda sendiri memberikan contoh tandingan
Persis! Mereka digunakan di mana-mana, sudah terbukti dan murah, dan cukup ; jangan pernah meremehkan keuntungan memiliki solusi untuk masalah umum di laci di suatu tempat!
Tentu saja, sering kali Anda perlu solusi dengan katakanlah dua bus otomotif khas, antarmuka berkecepatan tinggi ke ADC, beberapa pengatur waktu pengawas yang andal, tiga unit PWM ... dan kemudian Anda mulai menyatukan sesuatu yang terdiri dari empat 8051 dan 8080 turunan .. eh. Itu adalah situasi yang buruk, dan sangat mungkin dapat diselesaikan lebih cepat dan lebih dapat diandalkan menggunakan MCU tunggal, lebih fleksibel, lebih kuat (misalnya ARM). Tetapi bahwa "kita memiliki pengetahuan perusahaan tentang bagaimana sesuatu bekerja dengan teknologi lama" vs "kita adalah bukti masa depan dengan memiliki kemampuan untuk berjalan pada perangkat keras modern" adalah tradeoff keamanan investasi klasik. Jika Anda menemukan salah satu dari proyek semacam itu, saya akan mencoba berbicara dengan bos dalam konteks itu. Untuk pekerjaan kecil yang mudah, ya, 8.051.
Haruskah saya belajar tentang arsitektur MCU secara umum?
Iya! Saya pikir @jfkowes menjelaskan dengan sangat baik. Tapi jujur: ini seperti bertanya "haruskah saya belajar bagaimana mesin pembakaran internal bekerja jika saya ingin menjadi mekanik mobil"; jawabannya adalah "Anda mungkin hidup dengan baik jika Anda bisa menjalankan manual perbaikan dengan cukup baik, tetapi Anda mungkin akan menjadi teknisi yang jauh lebih baik (biarkan insinyur sendiri) jika Anda mengerti apa yang perangkat keras Anda lakukan.
Segera setelah Anda menghadapi masalah yang tidak dapat di-google, Anda akan menjadi kura-kura yang cukup banyak jika Anda tidak memahami cara kerja prosesor Anda.
Haruskah saya belajar arsitektur 8051?
Mungkin tidak. Dalam arti bahwa, ya, selama biaya bukan fokus utama Anda, Anda kemungkinan besar dapat menggunakan MCU yang lebih kuat dan serbaguna berdasarkan inti ARM atau arsitektur lainnya yang lebih modern.
Kemudian lagi, inti 8051 sangat mudah sehingga saya benar-benar merekomendasikan untuk memahami apa unit-unitnya sebelum mencoba menangani inti MCU yang lebih modern, kompleks. Ini contoh yang bagus.
Jadi jika 8051 tidak inti Saya mencari dalam aplikasi volume rendah, apa yang sedang saya cari?
Jadi, secara pribadi: gunakan ARM Cortex-M0, -M3, -M4F; ini berlimpah dalam semua jenis mikrokontroler yang terjangkau, mudah diprogram (yay, dukungan GCC dewasa, lib standar CMSIS, banyak OS tertanam yang menjalankannya), dan umumnya datang dengan antarmuka debug standar (yang merupakan nilai tambah yang bagus).
ARM, dari luar, biasanya relatif mudah dipahami, karena Anda biasanya memetakan setiap perangkat ke ruang memori, dan hanya itu. Secara internal, mereka memiliki berbagai tingkat kecanggihan, dan optimisasi kecepatan / kekokohan / ukuran, menjadikannya tidak sepenuhnya mudah dimengerti secara detail, tapi saya rasa itu mungkin agak banyak ditanyakan kecuali Anda tertarik dengan desain CPU.
Jika Anda tertarik dengan desain CPU, saya pikir (ini benar-benar kepercayaan pribadi berdasarkan pengamatan saya terhadap aktivitas penelitian dan investasi industri yang "dijanjikan") saat ini kami sedang mengamati munculnya ISA penting baru - RISC-V. Ada berbagai implementasi arsitektur ini untuk FPGA atau silikon, dan orang-orang seperti Nvidia tampaknya juga bermain-main dengan mengganti multiprocessor aliran mereka dengan core semacam ini.
¹: Sangat mungkin saya kehilangan lebih dari setengah dari 8051 yang sebenarnya yang dimiliki mouser (karena, hei, saya baru saja memilih semua MCU yang nama intinya adalah * 80 * 5 *). Kemungkinannya adalah jika Anda memilih mikrokontroler 8bit acak, kemungkinan intinya setidaknya sebagian berasal dari 8.051. Maksud saya, lihat saja "daftar [8051] vendor turunan wikipedia" dari wikipedia .
sumber
Secara umum, berikut adalah beberapa alasan bagus untuk mempelajari (atau setidaknya memiliki pengetahuan tentang) arsitektur mikrokontroler yang Anda gunakan.
Peringatan: dalam konteks pekerjaan Anda, perusahaan, aplikasi, perangkat keras terkait dll, mungkin ada alasan mengapa Anda tidak harus mempelajari arsitektur tertentu yang Anda gunakan saat ini.
Debugging
Saat pustaka tingkat tinggi bekerja, Anda mungkin tidak perlu tahu arsitekturnya. Ketika Anda mulai mengalami masalah, mengetahui bagian dalam mikrokontroler Anda dapat banyak membantu untuk mengisolasi dan memperbaiki masalah tersebut dengan cepat.
Efisiensi dan Kesederhanaan Kode
Jika Anda tahu arsitekturnya, Anda mungkin dapat memindahkan fungsionalitas dari perangkat lunak ke perangkat keras. Ini berpotensi mengurangi beban perangkat lunak dan menghapus sumber bug.
Pengurangan biaya
Pengetahuan arsitektur dapat mengurangi penggunaan program dan memori data dan beban prosesor. Ini mungkin berarti Anda dapat memilih mikrokontroler dengan sumber daya lebih sedikit, berpotensi mengurangi biaya.
Meningkatkan kegunaan Anda
Bahkan jika Anda tidak menggunakan pengetahuan itu sekarang, diskusi dengan kolega / vendor / teknisi pendukung, dll. Mungkin akan membahasnya. Misalnya, sesuatu yang Anda tahu mungkin membantu orang lain mengatasi masalah yang mereka alami. Menyelamatkan hari adalah sesuatu yang diingat orang.
Pengetahuan adalah kekuatan
Bahkan jika Anda tidak memerlukan pengetahuan dalam pekerjaan Anda saat ini, ketika Anda melihat iklan untuk pekerjaan yang terlihat menakjubkan yang mengatakan "Pengetahuan tentang arsitektur <mikrokontroler keluarga> diperlukan / disukai" , Anda akan berada dalam posisi yang lebih baik pergi untuk itu.
sumber
Apakah 8051 dan mikrokontroler bit-rendah lainnya masih digunakan saat ini?
Ya, meskipun sebagian besar untuk kasus penggunaan niche. Mereka sebagian besar digunakan untuk tugas-tugas sederhana, dalam produksi massal, produk yang digerakkan oleh biaya, atau di mana rekam jejak yang terbukti diinginkan. Mereka sering dilisensikan dan diintegrasikan ke solusi chip tunggal. Karena arsitekturnya yang sederhana, mudah untuk mengintegrasikannya dengan periferal khusus pada chip yang sama. Keuntungan lain adalah bahwa mereka dapat diproduksi di area kecil dengan teknik manufaktur semikonduktor yang lebih tua (dan lebih murah).
Salah satu contohnya adalah dalam chip kontrol dalam kartu pintar, yang sering menggunakan inti 8.051 atau serupa dengan ekstensi perangkat keras kriptografis. Anda mungkin akan menemukan inti mikrokontroler 8-bit dalam hal-hal seperti pengontrol untuk monitor sikat gigi listrik pintar. ECU kendaraan sering menggunakan mikrokontroler 8-bit, bersama dengan 32-bit, sebagai pengawas karena keandalannya yang lebih tinggi dan kompleksitas yang lebih rendah.
Haruskah Anda mempelajarinya?
Terlepas dari kemungkinan Anda benar-benar berakhir dalam situasi di mana pengetahuan tentang arsitektur tertentu diperlukan, saya berpendapat bahwa itu adalah keterampilan yang berguna secara umum. Bahkan jika Anda memprogram C dalam pekerjaan Anda sehari-hari, memiliki pemahaman umum tentang apa yang terjadi pada "satu tingkat di bawah" berguna. Saat memecahkan bug aneh atau masalah kinerja, mungkin akan jauh lebih mudah untuk menentukan masalah jika Anda memiliki pemahaman umum tentang perangkat keras yang mendasarinya. Anda juga bisa lebih mudah menganalisis keluaran bahasa rakitan dari kompiler C. Mempelajari satu arsitektur juga akan memudahkan mempelajari yang berbeda di masa mendatang. Keterampilan ini juga dapat membantu Anda menulis kode yang lebih baik bahkan untuk core CPU yang lebih modern.
sumber
Anda dapat belajar banyak tentang desain digital melalui mempelajarinya. Elektronik digital dibangun menggunakan dua hal. Pertama adalah logika, interkoneksi elemen-elemen AND, OR, NOT yang mengimplementasikan ekspresi logis. (Dalam praktiknya, elemen logis lain seperti NAND sebenarnya digunakan, tetapi AND, ATAU dan TIDAK lebih mudah dipahami.) Kedua adalah elemen memori yang dapat menampung satu atau lebih bit. Ketika elemen memori diperkenalkan, perangkat dapat memiliki apa yang disebut keadaan . Kombinasi bit yang berbeda dalam elemen memorinya sesuai dengan status yang berbeda.
Pertimbangkan mesin penjual otomatis yang dimulai pada kondisi 0 dan pindah ke kondisi lain setiap kali koin dimasukkan. Dengan melakukan hal itu mesin dapat melacak jumlah total uang, tahu kapan cukup uang telah dimasukkan dan tahu berapa banyak perubahan untuk kembali.
Untuk merancang sirkuit mesin, dimulai dengan diagram keadaan dengan panah yang menunjukkan transisi ke keadaan lain bersama dengan kondisi yang memicu mereka. Untuk setiap panah, ekspresi logis mengidentifikasi suatu kondisi. Seseorang kemudian dapat mengetahui apa semua ekspresi ini dan menerapkannya dengan elemen-elemen logika.
Untuk mesin penjual otomatis, ini tidak terlalu sulit. Untuk pengontrol yang kompleks, ini menjadi jauh lebih sulit. Mikrokontroler adalah cara cepat dan mudah untuk melakukan hal yang sama. Pertimbangkan "memori" yang (dalam arti byte atau kata) adalah lebar k bit dan memiliki n baris alamat yang menghasilkan 2 ^ n lokasi dalam memori. Memori ini diprogram dengan desain dan hanya-baca dalam praktik. Perhatikan bahwa menggunakan bit alamat memori sebagai "input" dan bit data sebagai output, memori dapat diprogram untuk mewujudkan fungsi logis apa pun.
Menambahkan register juga lebar k bit untuk menampung konten dari lokasi memori menghasilkan mesin negara.
Jika k bit dibagi menjadi, misalnya opcode dan alamat. Set bit opcode mengontrol bagian-bagian lain dari rangkaian (seperti mengeluarkan produk mesin penjual otomatis) dan yang lainnya adalah alamat memori selebar n bit, setiap set bit k menjadi instruksi mikro dengan kemampuan percabangan.
Tambahkan ke beberapa logika aritmatika ini, beberapa register (di mana satu atau lebih dari itu mengambil input kontrol untuk bergeser ke kiri dan kanan) dan Anda dapat membangun CPU yang instruksi mesinnya diimplementasikan dengan urutan microinstructions.
Pada 1970-an dan 1980-an sejumlah komputer yang sukses dibangun menggunakan desain ini. Salah satunya (Digital Equipment's VAX 11) memiliki instruksi mesin untuk menghitung polinomial integer, yang dimaksudkan untuk perhitungan alamat (think array). Ternyata instruksi tersebut dapat diimplementasikan lebih cepat menggunakan instruksi yang lebih sederhana.
Mikrokontroler dapat dan biasanya merupakan, implementasi yang kurang efisien daripada mesin negara tradisional. Tetapi mereka dapat dengan mudah diubah, lebih cepat untuk dirancang dan merupakan solusi pengontrol yang hebat.
sumber