Pendahuluan
Ide dasar dari semua memori adalah kemampuan untuk menyimpan informasi. Tentu saja informasi yang disimpan dapat dipanggil atau diolah kembali bila diperlukan. Sebagai analogi, memori dimisalkan sebagai sekelompok kotak surat dalam suatu apartemen yang besar. Seseorang dapat meletakkan informasi dalam suatu kotak surat dengan nomor tertentu yang tertera. Jika pemilik ingin mengambil informasi tersebut, pemilik dapat melihat ke kotak suratnya dengan nomor yang tepat dan mengambil informasinya.
Dalam CPU 8 bit, setiap kotak surat dalam analogi di atas terdiri dari delapan set saklar on-off. Data atau informasi yang diberikan merupakan kondisi dari setiap saklar. Setiap saklar hanya ada dua kondisi yaitu on dan off, sehingga informasi yang terkandung di dalamnya adalah kombinasi on-off. Dalam delapan saklar tersebut, setiap saklar mewakili satu digit biner (bit). Bit satu mewkili saklar on dan bit nol mewakili saklar off. Setiap satu set 8 saklar mempunyai alamat spesifik sehingga penulisan dan pembacaan data dapat dilakukan dengan tepat dan benar.
Dalam analogi, apartemen dapat memiliki nomor kotak surat 100-175 untuk lantai pertama dan 200-275 untuk lantai kedua. Angka desimal ini menggambarkan jumlah orang yang memiliki kotak surat. Karena komputer bekerja dengan sistem biner, maka jumlah alamat dari data di memori merupakan kelipatan dua dari jalur alamat. Misalkan suatu komputer mempunyai empat jalur alamat, maka dia mempunyai 24 atau 16 alamat karena empat bit biner mempunyai kombinasi 16 buah. Komputer ini akan memetakan 16 alamat dari $0 sampai $F.
Dalam mikrokontroler MC68HC05 terdapat sepuluh jalur alamat sehingga didapatkan 1024 lokasi memori. Sedangkan mikrokontroler MC68HC11 memiliki 16 jalur alamat sehingga dapat mengalamati 65536 lokasi memori.Komputer 8-bit dengan sepuluh jalur alamat akan mempunyai peta memori dengan 1024 alamat dan masing-masing alamat memiliki 8 bit data. Alamat pertama dari lokasi memori adalah 00 0000 00002 dan alamat akhir 11 1111 11112. Sepuluh bit alamat tersebut pada umumnya dinyatakan dalam heksadesimal, sehingga jangkauan alamat memori tersebut menjadi $0000 sampai $03FF.Komputer menentukan lokasi memori mana yang akan digunakan dengan meletakkan kombinasi biner pada 10 jalur alamat kemudian mengirimkan sinyal read atau write. Hasilnya, informasi yang diinginkan pada alamat memori tertentu di atas akan muncul dalam delapan jalur data.
Jenis-jenis Memori
Komputer menggunakan beberapa jenis informasi sehingga membutuhkan beberapa jenis memori yang berbeda. Instruksi-instruksi yang mengontrol operasi dari mikrokontroler disimpan dalam memori non-volatile sehingga jika sistem tidak perlu diprogram ulang jika daya sistem hilang. Variabel dan hasil sementara bisa disimpan dalam memori yang dapat ditulis dengan mudah dan cepat saat operasi sedang berlangsung. Tidaklah penting untuk terus mengingat informasi yang ditulis saat tidak ada daya (volatile).
RAM (Random Access Memory) adalah suatu bentuk memori volatile yang dapat dibaca dan ditulis oleh CPU. Seperti definisinya, lokasi RAM dapat diakses dalam berbagai urutan (random). Memori jenis ini adalah yang paling umum digunakan oleh komputer pribadi. RAM membutuhkan area chip yang lebih lebar dibandingkan dengan ROM, sehingga RAM yang diikutsertakan dalam sistem mikrokontroler hanyalah sebagian kecil saja.
ROM (Read Only Memory) diisi saat proses produksinya. Informasi yang dituliskan harus dipesan oleh pelanggan sebelum chip diberikan. Dalam sistem mikrokontroler, informasi ini dapat dibaca oleh CPU tetapi tidak dapat dirubah. ROM adalah memori yang paling sederhana, kecil, dan murah.
PROM (Programmable ROM) mirip dengan ROM kecuali bahwa dia dapat diprogram setelah proses pembuatah chip. Beberapa variasi dari PROM adalah EPROM, OTP, dan EEPROM.
EPROM (Erasable PROM) dapat dihapus dengan menyinarinya dengan cahaya ultraviolet. Mikrokontroler yang EPROM-nya bisa dihapus memiliki jendela kecil tempat proses penyinaran dilakukan. Jumlah proses penghapusan yang diijinkan terbatas tergantung pada beberapa tipe. Prosedur khusus digunakan untuk meprogram informasi ke dalam memori EPROM. Kebanyakan mikrokontroler yang memiliki EPROM menggunakan tegangan +12 volt DC saat operasi penulisan EPROM. CPU tidak dapat menulis data ke lokasi EPROM seperti halnya penulisan yang dilakukan pada RAM. Beberapa mikrokontroler memiliki rangkaian penulis EPROM yang built-in.
OTP (One Time Programming) adalah EPROM yang tidak dilengkapi dengan jendela untuk penyinaran ultraviolet. Walaupun isi dari OTP adalah sama dengan EPROM yang memiliki jendela penghapusan, OTP tidak dapat dihapus karena tidak menyediakan jendela. OTP dipasarkan karena harganya lebih murah daripada EPROM yang berjendela.
EEPROM (Electrically EPROM) dapat dihapus secara elektris dengan perintah yang ada dalam mikrokontroler. Agar dapat diprogramkan harga baru ke lokasi memori ini, pertama proses penghapusan harus dilakukan kemudian baru dilaksanakan beberapa langkah pemrograman. Walaupun mirip dengan RAM, tetapi EEPROM tetap memiliki sifat non-volatile dari ROM yang tidak hilang datanya walaupun daya hilang.
I/O Sebagai Tipe Memori
Informasi status dan kontrol dari I/O adalah suatu tipe dari lokasi memori yang mengijinkan sistem komputer untuk mendapatkan informasi dari dan ke dunia luar. Tipe lokasi memori ini tidak seperti memori pada umumnya karena informasi yang ada dapat berubah karena pengaruh selain dari CPU.
Jenis paling sederhana dari lokasi memori I/O adalah port input dan port output sederhana. Dalam mikrokontroler 8-bit, port input sederhana terdiri dari delapan kaki yang dapat dibaca oleh CPU. Port output sederhana terdiri dari delapan kaki yang dapat dikontrol oleh CPU. Dalam kenyataannya, port output sederhana diimplementasikan dengan delapan latch dan jalur feedback yang memungkinkan CPU untuk membaca kembali apa yang sebelumnya ditulis ke port output.
Gambar di bawah memperlihatkan rangkaian ekuivalen dari satu bit RAM, satu bit port input, dan satu bit port output yang umum dan memiliki kemampuan membaca kembali. Dalam mikrokontroler nyata, rangkaian ini ada delapan untuk membentuk delapan bit RAM, port input, dan port output. Saat snyal clock high, data dari input D menuju output Q. Saat input clock low, data ditahan pada kaki output Q.
Saat CPU menyimpan informasi ke dalam RAM dalam gambar (a), sinyal WRITE diaktifkan untuk menahan data dari jalur data bus ke dalam flip-flop [1]. Latch ini akan terus mengingat data yang telah diberikan sampai terjadi proses penulisan kembali atau jika daya dihilangkan. Saat CPU membaca data dalam RAM ini, sinyal READ diaktifkan, yang kemudian mengaktifkan multiplekser [2]. Multiplekser ini membuat data dari output latch muncul kembali ke jalur data bus.
Saat CPU membaca data dari port input seperti pada gambar (b), sinyal READ diaktifkan, yang akan mengaktifkan multiplekser [3]. Multiplekser ini akan mengirimkan data yang ada dalam buffer ke jalur data bus. Sinyal write tidak mempunyai pengaruh dalam rangkaian ini.
Saat CPU menyimpan data ke port output seperti pada gambar (c), sinyal WRITE diaktifkan untuk menahan data dari data bus menuju ke flip-flop [4]. Output dari latch ini, yang di-buffer oleh buffer driver [5], muncul sebagai harga digital pada kaki output. Saat CPU akan membaca data dari port output, sinyal READ diaktifkan, yang akan mengaktifkan multiplekser [6]. Multiplekser ini akan menyalurkan data dari output flip-flop ke jalur data bus.
Register Kontrol dan Status Internal
Register kontrol dan status internal adalah lokasi memori I/O yang spesial. Di samping aksi sensor dan pengontrolan kaki eksternal, register ini juga melakukan aksi sensor dan pengontrolan sinyal level logika internal. Lihat gambar dan bandingkan antara RAM dengan port output. Perbedaan yang tampak hanyalah bahwa port output memiliki buffer untuk menghubungkan state dari flip-flop ke kaki eksternal. Dalam kasus bit kontrol internal, output dari buffer terhubung dengan sinyal kontrol internal tertentu. Suatu bit status internal mirip dengan bit port input tetapi bit status ini hanya melakukan aksi sensor terhadap sinyal register internal.
Mikrokontroler M68HC05 memiliki kaki-kaki I/O paralel. Arah jalur dari setiap kaki dapat diprogram dengan bit kontrol melalui software. Gambar di bawah menggambarkan I/O dua arah (bi-directional) dengan latch output dan bit kontrol arah data. Kaki suatu port dikonfigurasi sebagai output jika bit DDR (Data Direction Register) yang bersesuaian diset menjadi logika satu. Suatu kaki dikonfigurasi sebagai input jika bit DDR yang bersesuaian diset menjadi logika nol. Saat pertama kali dihidupkan atau saat reset, semua bit DDR dinolkan, sehingga konfigurasi semua kaki port adalah sebagai input. DDR ini dapat ditulis dan dibaca oleh prosesor.
Peta Memori
Karena terdapat ribuan dan bahkan lebih lokasi memori dalam suatu sistem mikrokontroler, menjadi penting untuk memiliki cara yang enak untuk menangani alamat masing-masing data dalam memori. Suatu peta memori adalah penggambaran yang mewakili semua spasi dalam memori mikrokontroler. Gambar di bawah adalah peta memori umum yang menggambarkan memori dalam MC68HC705K1.
Empat digit heksadesimal yang terletak pada bagian kiri dari gambar di bawah adalah alamat yang dimulai pada $0000 di atas dan terus bertambahsampai $03F di bagian bawah. Alamat $0000 berhubungan dengan awal lokasi memori sedangkan alamat $03FF berhubungan dengan lokasi memori akhir. Sedangkan ketrangan dalam kotak menunjukkan macam tipe dari memori dan isinya (RAM, EPROM, register I/O, dan sebagainya). Beberapa daerah, seperti register I/O, perlu dijelaskan lebih detail karena penting untuk mengetahui nama dari setiap lokasi. Setiap lokasi memori sebanyak 1024 ini memiliki delapan bit data seperti pada gambar di bawah.
Lokasi memori 256 pertama ($0000-$00FF) dapat diakses oleh komputer dengan cara khusus yang sebut dengan mode pengalamatan langsung (direct addressing mode). Register I/O on-chip dan 32 byte RAM terletak dalam area $0000-$00FF. Dalam peta memori pada gambar di bawah terlihat konfigurasi penempatan pada area ini yang dipaparkan dalam kotak yang terletak di sebelah kanan.