Sistem Embedded: Pengantar
Apa Itu Sistem Embedded ?
Sebelum kita mendalami tentang sistem embedded lebih lanjut, mari kita terlebih dahulu memahami apa itu sistem embedded. Kata “embedded” dapat diartikan sebagai “tertanam”. Jadi, pertanyaannya adalah: apa yang tertanam di dalamnya? Pastinya bukan menanam padi ya 🙂
Sistem embedded adalah gabungan antara perangkat keras dan perangkat lunak yang ditanamkan dalam sebuah sistem yang lebih besar. Sistem ini dirancang untuk mengontrol fungsi-fungsi khusus dalam sistem tersebut. Dengan kata lain, sistem embedded hanya menjalankan fungsi-fungsi yang spesifik, tidak seperti komputer pribadi (PC) yang dapat menjalankan berbagai macam aplikasi.
Beberapa contoh penerapan sistem embedded antara lain:
- Robotika: Di dunia robotika, sistem embedded digunakan dalam robot penjelajah rover dan robot humanoid untuk mengendalikan gerakan, sensor, dan tugas-tugas lainnya.
- Perangkat Militer: Dalam perangkat militer, teknologi embedded digunakan pada drone (pesawat tanpa awak) dan UAV (Unmanned Aerial Vehicle) untuk misi pemantauan dan keamanan.
- Telekomunikasi: Pada perangkat jaringan dan router, sistem embedded digunakan untuk mengelola lalu lintas data dan fungsi jaringan lainnya.
- Otomasi Industri/Mekatronika: Sistem embedded mengendalikan mesin-mesin industri dan peralatan otomatisasi, memastikan operasi yang efisien dan aman.
- Alat Kesehatan: Di dunia medis, perangkat seperti pemantau jantung dan perangkat medis lainnya menggunakan teknologi embedded untuk fungsi pemantauan dan pengendalian.
- Otomotif: Kendaraan modern menggunakan sistem embedded untuk mengontrol segala sesuatu mulai dari mesin, rem, hingga sistem hiburan.
- Peralatan Rumah Tangga: Perangkat elektronik di rumah, seperti mesin cuci, oven, dan kulkas, semuanya dapat berisi sistem embedded untuk meningkatkan fungsionalitas dan kenyamanan.
- Mainan Anak-Anak: Bahkan mainan anak-anak sekarang seringkali menggunakan teknologi embedded untuk memberikan pengalaman bermain yang lebih interaktif.
Mengapa kita perlu sistem embedded?
Sistem tertanam, atau sistem embedded, telah menjadi bagian integral dari kehidupan sehari-hari kita. Mereka menjadi otak di balik berbagai perangkat elektronik yang kita gunakan, seperti ponsel pintar, mobil, perangkat rumah pintar, dan banyak lagi. Mengapa sistem embedded begitu penting?
- Efisiensi: Sistem embedded didesain khusus untuk menjalankan tugas tertentu dengan efisien. Mereka tidak membuang sumber daya yang berharga, seperti energi dan memori, untuk menjalankan sistem operasi yang kompleks.
- Responsif: Sistem embedded mampu merespons secara cepat terhadap input dan kondisi lingkungan. Sebagai contoh, sensor dalam mobil dapat mengaktifkan airbag dalam hitungan milidetik ketika terjadi kecelakaan.
- Kustomisasi: Sistem embedded dikustomisasi untuk tujuan tertentu. Misalnya, mikrokontroler dalam perangkat medis didesain untuk menjalankan algoritma pemantauan jantung dan tidak ada yang lain.
- Ukuran Kecil: Ukuran fisik yang kecil membuat sistem embedded ideal untuk berbagai aplikasi, mulai dari jam tangan pintar hingga sensor dalam sistem rumah pintar.
- Biaya Efektif: Sistem embedded seringkali lebih ekonomis dibandingkan dengan menggunakan komputer umum untuk tugas tertentu.
Mikrokontroler: Otak dari sistem embedded
Mikrokontroler memainkan peran penting dalam sistem embedded, berfungsi sebagai otak yang mengendalikan operasi keseluruhan sistem. Salah satu mikrokontroler yang sangat umum digunakan adalah ATmega328P, yang sering ditemukan pada papan pengembang Arduino Uno. Mari kita lihat lebih dalam tentang elemen-elemen utama mikrokontroler yang membentuk fondasi dari perangkat ini. Mikrokontroler memiliki beberapa elemen utama yang mendefinisikan kemampuannya:
- CPU (Central Processing Unit): CPU adalah komponen utama yang mengambil peran paling penting dalam mikrokontroler. Ini adalah otak yang menjalankan instruksi-instruksi program dan melaksanakan operasi aritmatika dan logika yang diperlukan. Dalam konteks mikrokontroler, CPU berfungsi sebagai pengendali utama yang mengkoordinasikan semua operasi dalam sistem.
- Memori: Memori adalah komponen penting yang digunakan untuk menyimpan program dan data. Pada mikrokontroler seperti ATmega328P, ada dua jenis utama memori:
- Flash Memory: Flash memory adalah tempat program aplikasi disimpan. Ini adalah bagian yang berisi instruksi-instruksi yang harus dijalankan oleh CPU. Flash memory adalah jenis memori non-volatile, yang berarti data yang tersimpan di sini akan tetap ada meskipun daya listrik dimatikan.
- SRAM (Static Random-Access Memory): SRAM digunakan untuk menyimpan data sementara yang sedang diolah oleh CPU. Ini adalah jenis memori volatile, yang berarti data di dalamnya akan hilang jika daya listrik terputus. SRAM memungkinkan mikrokontroler untuk menyimpan nilai-nilai variabel dan hasil perhitungan sementara.
- GPIO (General Purpose I/O): Pin-pin GPIO adalah pintu gerbang mikrokontroler ke dunia nyata. Mereka dapat dikonfigurasi sebagai input atau output dan digunakan untuk berkomunikasi dengan perangkat luar. Misalnya, mereka dapat menerima input dari sensor atau mengirimkan sinyal ke aktuator (perangkat yang melakukan tindakan berdasarkan sinyal yang diterima). GPIO memberikan fleksibilitas yang besar dalam menghubungkan mikrokontroler dengan komponen eksternal.
- Peripheral Lainnya: Mikrokontroler seperti ATmega328P seringkali dilengkapi dengan berbagai peripheral tambahan yang mendukung fungsi-fungsi tertentu. Beberapa peripheral umum termasuk:
- UART (Universal Asynchronous Receiver-Transmitter): Digunakan untuk komunikasi serial dengan perangkat lain.
- Timer: Digunakan untuk mengatur waktu atau menjalankan tugas-tugas yang dijadwalkan.
- Komunikasi SPI/I2C: Digunakan untuk berinteraksi dengan perangkat lain melalui protokol komunikasi tertentu.
Arsitektur Von Neumann vs. Arsitektur Harvard pada Mikrokontroler
Mikrokontroler memiliki arsitektur yang memengaruhi cara mereka memproses data dan instruksi. Dua arsitektur utama yang umumnya digunakan dalam mikrokontroler adalah Arsitektur Von Neumann dan Arsitektur Harvard. Mari kita jelajahi perbedaan antara keduanya dan berikan contoh untuk Arsitektur Von Neumann.
Arsitektur Von Neumann
Dalam arsitektur Von Neumann, program dan data disimpan dalam memori yang sama. Artinya, instruksi program dan data yang akan diproses oleh CPU semua berada dalam satu memori yang dapat diakses. Ini memungkinkan fleksibilitas dalam mengubah program secara dinamis, karena instruksi-instruksi baru dapat ditambahkan ke memori dan dieksekusi tanpa perubahan fisik dalam mikrokontroler.
Contoh arsitektur Von Neumann dapat ditemukan pada mikrokontroler berbasis MCS51, seperti Intel 8051. Dalam arsitektur ini, program dan data disimpan dalam memori yang sama, yang memungkinkan CPU untuk mengambil instruksi program dan data dari alamat yang sama dalam memori.
Arsitektur Von Neumann cenderung lebih sederhana dalam hal desain fisik karena hanya menggunakan satu memori. Ini juga lebih mudah diprogram dan dikelola dalam beberapa kasus. Namun, kelemahannya adalah adanya kemungkinan terjadi interferensi antara instruksi dan data, yang dapat menyebabkan konflik dalam akses ke memori.
Arsitektur Harvard
Arsitektur Harvard, di sisi lain, memiliki dua memori terpisah: satu untuk program (flash memory) dan satu untuk data (SRAM). Ini berarti instruksi program dan data yang diproses oleh CPU disimpan pada memori yang berbeda secara fisik.
Keuntungan utama dari arsitektur Harvard adalah pemisahan yang ketat antara program dan data, yang menghindari potensi konflik dalam akses ke memori. Ini juga memungkinkan mikrokontroler untuk bekerja lebih efisien dalam beberapa kasus karena instruksi program dapat diambil secara bersamaan dengan mengakses data.
Namun, arsitektur Harvard mungkin memerlukan lebih banyak sumber daya fisik, karena memerlukan dua jenis memori yang berbeda. Selain itu, pengelolaan program yang lebih rumit mungkin diperlukan karena instruksi program harus diambil dari memori program yang terpisah.
Sebagai contoh, mikrokontroler ATmega328P yang umum digunakan memiliki arsitektur Harvard. Ini berarti program dan data yang digunakan oleh mikrokontroler disimpan pada dua memori yang terpisah, yang membantu dalam menghindari konflik dalam akses ke memori dan meningkatkan efisiensi operasi. Dalam pemilihan mikrokontroler, pemahaman tentang arsitektur yang digunakan adalah penting, karena dapat memengaruhi kinerja dan desain sistem secara keseluruhan.
Central Processing Unit dalam Microcontroller
CPU dalam mikrokontroler adalah otak yang menjalankan semua operasi. Berikut adalah beberapa komponen penting dalam CPU:
- Arithmetic and Logic Unit (ALU): ALU adalah bagian CPU yang bertanggung jawab untuk melakukan operasi aritmatika (penjumlahan, pengurangan, dll.) dan logika (AND, OR, NOT, dll.). Ini bekerja dengan General Purpose Register.
- General Purpose Register: Register umum digunakan untuk menyimpan data sementara yang sedang diolah oleh CPU. Pada ATmega328P, terdapat 32 register umum yang dapat digunakan dalam operasi.
- Status Register (SREG): Status Register menyimpan status hasil dari operasi yang sedang berjalan, seperti hasil dari perbandingan atau apakah ada carry dari operasi aritmatika.
- Program Counter (PC): Program Counter adalah register yang menyimpan alamat instruksi yang sedang dijalankan. Ia secara otomatis merujuk ke alamat instruksi berikutnya dalam program.
- Stack Pointer (SP): Stack Pointer adalah register yang digunakan untuk mengelola tumpukan (stack) yang digunakan untuk menyimpan data sementara, variabel lokal, dan alamat pengirim dalam konteks interupsi dan pemanggilan subrutin.
- Instruction Register & Decoder: Instruction Register menyimpan instruksi yang sedang dijalankan oleh CPU, sementara Instruction Decoder menerjemahkan instruksi tersebut untuk dieksekusi.
Siklus Mesin pada CPU
CPU bekerja dalam siklus yang disebut siklus mesin. Siklus ini terdiri dari beberapa langkah dasar:
- Fetch Instruction: CPU mengambil instruksi berikutnya dari memori program.
- Decode Instruction: CPU menerjemahkan instruksi tersebut untuk mengetahui apa yang harus dilakukan.
- Read Address: CPU membaca alamat yang diperlukan dari memori.
- Execute Instruction:CPU menjalankan instruksi, yang bisa berarti melakukan perhitungan, memindahkan data, atau tindakan lainnya yang diperlukan.