BAB 14
Sasaran
Setelah anda menamatkan bab ini , diharapkan anda dapat :
ð Membedakan dan membandingkan beberapa type dari memory semikonduktor dalam hal kapasitasnya, organisasi, dan waktu akses.
ð Menjelaskan hubungan antara beberapa lokasi memory dalam chip, jumlah pin-pin data, dan kapasitas chip.
ð Menjelaskan ROM dan penggunaanya pada system berbasis 8051.
ð Membedakan dan membandingkan PROM, EPROM, UV-EPROM, EEPROM, Flash memory EPROM, dan Mask ROM.
ð Menjelaskan RAM dan penggunaanya pada system berbasis 8051.
ð Membedakan dan membandingkn SRAM, NV-RAM, check-sum byte, DRAM.
ð Menjabarkan langkah-langkah CPU dalam mendekodekan alamat memory.
ð Membedakan dan membandingkan teknik pen-dekode-an, semacam penggunaan gerbang logika, dekoder 3-8, dan programable logic.
ð Menjelaskan bagaimana menghubungkan ROM dengan 8051.
ð Bagaimana penggunaan memory dalam-chip dan diluar-chip pada 8051.
ð Membuat kode 8051 untuk mengakses data memory dalam jangkauan 64K bytes.
Dalam Bab ini kita akan membicarakan bagaimana menghubungkan 8031/51 dengan sebuah memory eksternal. Pada SubBAB 14-1 kita akan belajar tentang konsep memory semikonduktor sehingga perbedaan-perbedaan memory type ROM. konsep pen-dekode-an alamatan yang akan dibahas. Sedang pada SubBAB akan menggali bagaimana menghubungkan 8031 dengan sebuah ROM eksternal. Menghubungkan 8031/51 dengan sebuah memory RAM eksternal akan dibahas pada SubBAB .
SubBAB 14-1 Memory Semikonduktor
Pada bagian ini akan membahas beberapa variasi type dari memory semikonduktor dan karakteristik mereka seperti kapasitas organisasi, dan waktu aksesnya. Pada desain semua system yang berbasis mikroprosesor, memory semikonduktor digunakan sebagai media penyimpanan kode dan data. Memory semikonduktor dihubungkan secara langsung pada CPU, dan mereka adalah sebuah memory yang diakses CPU pertama-tama kali menanyakan informasi (baik kode maupun data). Untuk alasan ini, memory semikonduktor juga disebut sebagai memory utama (primary Memory). Kebutuhan utama dari memory utama ini adalah harus sekencang mungkin dalam merespon permintan CPU, hanya memory semikondktor yang bisa secepat itu. Memory yang paling sering menggunakan bahan semikonduktor adalah ROM dan RAM. Sebelumnya kita membahas perbedaan ROM dan RAM, kita perlu membahas hal penting dan dari terminologi umum dari memory semikonduktor, seperti kapasitas, organisasi , dan kecepatan
Kapasitas memory
Jumlah atau banyak bit, yang bisa disimpan oleh keping memory semikonduktor adalah disebut dengan kapasitas. Itu bisa dibulatkan menjadi KBits (kilobits), Mbits (megabits), dan seterusnya. Kita harus tidak boleh bingung dengan istilah kapasitas penyimpanan pada system komputer. Yakni jika kapasitas memory pada keping memory diukur dengan jumlah bit-nya, sedang kapasitas memory pada system komputer diukur dengan jumlah bytes (8-bit). Misalnya demikian, jika ada keping memory yang bertanda 16M, maka berarti chip tersebut memiliki kapasitas 16 megabits. Dan jika diorganisasi menjadi 8-bit maka sejatinya hanya memiliki 2048 bytes saja. Namun berbeda dengan dengan sebutan kapastias 16M pada system komputer, yang berarti kapasitasnya adalah 16 megabytes.
Organisai memory
Keping chip memory diorganisasi dengan jumlah lokasi dalam IC. Setiap lokasi dapat terdiri dari 1 bit, 4 bits, 8 bits, atau bahkan 16 bits data, tergantung dari bagaimana desain system dirancangnya. Jumlah data tersebut akan selalu sama dari jumlah pin data pada keping yang bersangkutan. Berapa lokasi dalan keping chip memory? Hal itu tergantung dari jmlah pin alamat pada keping chip yang bersangkutan. Perhitungan adalah sama dengan (2 exp x) dimana x = jumlah pin alamat. Ringkasannya adalah sebagai berikut.
1. Keping chip memory berisi (2 exp x) di mana x adalah jumlah dari pin alamat dari keping IC memory.
2. Setiap lokasi berisi y bits, dimana y adalah jumlah pin data pada keping IC memory.
3. Keseluruhan chip berisi ((2 exp x) * y), dimana x adalah jumlah pin alamat, dan y adalah jumlah dari pin data dari keping IC memory.
Kecepatan
Satu dari karakteristik yang sangat penting dari keping memory adalah kecepatan saat data sedang diakses. Untuk mengakses data, alamat-alamat yang dibutuhkan diberikan pada pin-pin alamat, dan kemudian pin READ diaktifkan, dan setelah beberapa saat, data yang dibutuhkan muncul pada pin-pin data. Semakin pendek waktu yang dibutuhkan untuk proses tersebut akan semakin baik, dengan konsekuensi adalah semakin mahalnya harga chip. Kecepatan dari memory umumnya disebut dengan istilah access time. Access time dari keping memory beragam tergantung dari teknologi pembuatan keping memory yang digunakan oleh pabrik.
Tiga karakteristik utama dari memory adalah kapasitas, organisasi dan waktu akses (capacity, organization, and access time), yang dibahas scara lebih mendalam pada bab ini. Tabel 14-1 memeberikan kepada kita referensi perhitungan karakteristik memory. Sedang contoh 14-1 dan 14-2 mendemonstrasikan konsep dari semuanya itu.
Table 14-1 : Besaran Exponensial dari 2
x (2 exp x)
10 1K
11 2K
12 4K
13 8K
14 16K
15 32K
16 64K
17 128K
18 256K
19 512K
20 1M
21 2M
22 4M
23 8M
24 16M
Contoh 14-1 |
Sebuah chip memory memiliki 12 pin alamat dan 4 pin data. Cari … (a) organisasinya, dan(b) kapasitasnya
Jawaban:
(a) Memory ini memiliki lokasi sebanyak 4096 (2exp12=4096), dan setiap lokasi dapat menampung 4-bit data. Maka chip ini memiliki organisasi 4096 x 4 atau disingkat (4K x 4). (b) Kapasitas dari chip adalag 4096 x 4 = 16K bits.
|
Contoh 14-2 |
Sebuah chip memory sebesar 512K memiliki pin sebanyak 8 buah. Cari … (a) organisasinya, dan(b) jumlah pin alamat untuk chip tersebut.
Jawaban:
(a) Memory itu memiliki 8-bit data yang dalam hal ini setiap alamat dia memiliki 8 bit data. Sehingga untuk dapat mengetahui organisasian maka tinggal dibagi, yakni 512K/8 = 64K. Sehingga dapat diketahui organisasian chip ini adalah (64K x 4). (b) Jumlah pin alamat dapat diketahui dengan melakukan perhitungan 2 exp 16 = 64K, jadi jumlahnya adalah 16 buah pin alamat.
|
ROM (read only memory)
ROM adalah type memory yang tidak akan hilang isinya walau arus listrik atasnya diputuskan. Untuk alasan ini, ROM juga disebut dengan memory yang tidak menguap (non-volatile memory). Beberapa perbedaan dari type ROM ini adalah PROM, EPROM, EEPROM, Flash EPROM, dan Mask ROM. Masing-masing akan dijelaskan nanti.
PROM (programable ROM)
PROM merujuk pada jenis ROM yang dapat kita gunakan untuk menulis informasi di dalamnya. Dengan kata lain, PROM adalah memory yang dapat diprogram oleh kita. Setiap bit pada PROM, terdapat 3 buah fuse. PROM diprogram dengan membakar (burn) fuse-fuse tersebut. Jika informasi yang telah kita tuliskan ternyata salah, maka keping PROM tersebut tidak bisa digunakan lagi karena pembakaran fuse tersebut adalah permanen sifatnya., Untuk alasan ini, PROM juga disebut sebagai OTP (One-time Programable). Memprogram ROM, juga disebut dengan membakar ROM (buring ROM), yang hal itu membutuhkan sebuah alat yang disbeut dengan “ROM burner” atau “ROM Programmer”.
EPROM (erasable programable ROM) dan UV-EPROM
EPROM diciptakan untuk memberikan kesempatan kita untuk merubah isi dari PROM setelah ditulis (burned) sebelumnya. Dalam EPROM, kita dapat menulis chip memory dan menghapusnya kembali berulang-ulang sebanyak ratusan atau ribuan kali. EPROM ini dibutuhkan untuk pengembangan atau perancangan proyek system yang berbasis mikroprosesor. EPROM yang banyak digunakan adalah bernama UV-EPROM yang mana UV adalah singkatan dari ultra violet. Satu masalah pada UV-EPROM ini adalah saat menghapusnya yang mengharuskan chip memory ditempatkan pada sinar ultra violet selama 20 menit, sebelum chip dapat di-program kembali. Chip tersebut memiliki jendela kaca di bagian atasnya, sebagai tempat masuknya sinar ultra violet ke peralatan semikonduktor di dalam chip.
Untuk dapat memprogram UV-EPROM, ikuti langkah-langkah berikut ini:
1. Semua isinya harus dalam keadaan tehapus. Untuk menghapusnya, dia harus dicabut dari soket dalam papan system, kemudian dimasukkan pada peralatan penghapus, untuk menerima radiasi sinar ultra violet selama 15-20 menit.
2. Kemudian program chip. Untuk memprogramnya, tempatkan chip pada ROM burner (programmmer). Untuk memprogram koda atau data pada EPROM, ROM burner membutuhkan tegangan 12,5 volts atau lebih tinggi dari itu, tergantung dari type EPROM. Tegangan ini disebut dengan Vpp dalam datasheet UV-EPROM yang bersangkutan.
3. Pindahkan chip dan tempatkan kembali pada soket dalam papan system semula.
Setelah memahami langkah-langkah di atas, nampak adanya hal-hal yang memberatkan kita dalam melakukannya. Yakni dibutuhkan banyak peralatan, setidaknya dibutuhkan UV-EPROM eraser dan UV-EPROM programmer. Yang kesemuanya berharga mahal. Belum lagi dalam prosesnya kita harus mencabut chip dan memasangkannya terus berulang-ulang yang sangat mungkin dapat menyebabkan patahnya kaki-kaki pin milik chip EPROM.
Untuk berbagai masalah di atas tersebut, kemudian para sarjana menciptakan jenis EPROM yang lebih memudahkan. Yakni yang disebut dengan EEPROM. Singkatan dari electrically erasable programmable ROM. Atau dalam bahas indonesia adalah ROM yang dapat dhapus dan di-program hanya dengan menggunakan listrik.
Namun sebelumnya perhatikan Tabel, Contoh dan Gambar di bawah ini. Yakni data-data untuk Chip memory UV-EPROM. Ini menjadi penting karena data-data ini kemudian menjadi standar dari EPROM berikutnya. Baik itu kemasannya, maupun susunan pin-pin, dan sebagainya. Termasuk juga untuk chip EEPROM.
Tabel 14-2 : Beberapa chip UV-EPROM
Komponen Kapasitas Org Access Pins Vpp
2716 16K 2Kx8 450nS 24 25V
2732 32K 4Kx8 450nS 24 25V
2732A-20 32K 4Kx8 200nS 24 21V
27C32-1 32K 4Kx8 450nS 24 12.5V CMOS
2764-20 64K 8Kx8 200nS 28 21V
2764A-20 64K 8Kx8 200nS 28 12.5V
27C61-12 64K 8Kx8 120nS 28 12.5V CMOS
27128-25 128K 16Kx8 250nS 28 21V
27C128-12 128K 16Kx8 120nS 28 12.5V CMOS
27256-25 256K 32Kx8 250nS 28 12.5V
27C256-15 256K 32Kx8 150nS 28 12.5V CMOS
27512-25 512K 64Kx8 250nS 28 12.5V
27C512-15 512K 64Kx8 150nS 28 12.5V CMOS
27C010-15 1024K 128Kx8 150nS 32 12.5V CMOS
27C020-15 2048K 256Kx8 150nS 32 12.5V CMOS
27C040-15 4096K 512Kx8 150nS 32 12.5V CMOS
Contoh 14-3 |
Untuk chip ROM 27128, cari jumlah pin data dan alamatnya..
Jawaban:
27128 memilik kapasitas 128K bits. Dia memiliki orgaisasi 16Kx8 (Semua ROM memilihi lebar data 8-bit), yang mana mengindikasikan 8 pin data, dan 14 pin alamat.
|
EEPROM (eletrically erasable programmable ROM)
EEPROM adalah langkah maju dalam dunia EPROM, mengingat metode dalam penghapusannya yang sangat-sangat singkat. Bertolak belakang dengan waktu 20 menit yang dibutuhkan oleh UV-EPROM. Selebihnya, dalam EEPROM kita dapat memilih byte mana saja yang hendak kita hapus sesuai dengan kehendak kita. Juga bertolak belakang dengan UV-EPROM yang musti menghapus seluruh isi ROM. Dengan jenis ini, bahkan Chip tidak perlu dicabut dari soketnya dalam papan systemnya, untuk sekedar mengubah isi dalam chip tersebut. Dengan kata lain, tidak dibutuhkan peralatan tambahan, sehingga prosesor dapat langsung menggunakannya seperti penggunaan terhadap RAM. Satu-satunya syarat yang mungkin harus ada adalah dibutuhkan tegangan setinggi 12.5 volts pada pin VPP ROM saat proses “tulis”.
Chip jenis ini tentu saja memiliki harga yang lebih mahal dari pada UV-EPROM.
Tabel 14-3 : Beberapa chip EEPROM dan Flash
EEPROM
Komponen Kapasitas Org Access Pins Vpp
2816A-25 16K 2Kx8 250nS 24 5V
2864A 64K 8Kx8 250nS 28 5V
28C64A-25 64K 8Kx8 250nS 28 5V CMOS
28C256-15 256K 32Kx8 150nS 28 5V
28C256-25 256K 32Kx8 250nS 28 5V CMOS
Flash
Komponen Kapasitas Org Access Pins Vpp
28F256-20 256K 32Kx8 200nS 32 12V CMOS
28F010-15 1024K 128Kx8 150nS 32 12V CMOS
28F020-15 2048K 256Kx8 150nS 32 12V CMOS
Flash Memory EPROM
Sejak awal 1990, Flash EPROM menjadi chip memory yang bisa diprogram, yang kemudian menjadi sangat terkenal. Pertama, proses penghapusannya untuk seluruh isinya adalah dibutuhkan kurang dari 1 detik, atau orang bisa menyebutnya seperti kilat (flash), dan jadilah namanya, flash memory. Selanjutnya, metoda penghapusan secara listrik membuat chip ini kemudian disebut sebagai “flash EEPROM”. Untuk menghindari kebingungan, kita harus mengerti bahwa memory jenis ini menghapus seluruh isi memory, dan tidak seperti EEPROM biasa yang bisa menghapus isinya hanya byte atau bagian yang diinginkan saja. Sama dengan EEPROM, memory flash ini dapat dihapus dan ditulis sementara chip masih dalam soketnya. Dan dewasa ini chip jenis ini masih digunakan pada board PC kelas IBM. Sehingga kita dapat melakukan update BIOS kapan saja kita mau dan dengan proses yang sangat singkat. Hal iniakan mendongkrak kinerja system komputer, hal inikerena flash memory adalah momery semi konduktor yang memiliki access time = 100nS, jauh lebih cepat dari acces time-nya harddisk (puluhan mS). Agar ini terjadi, siklus hapus dan tulis pada memory flash, harus sampai hitungan tidak terhingga, persis mirip hardisk. Saat ini siklus hapus tulis untuk Flash dan EEPROM adalah sebanyak 100.000 kali, untuk UV-EPROM sebanyak 1000 kali, sedang untuk RAM dan Disk adalah tak terhingga kali.
Di lain pihak, para ahli komputer meramalkan memory flash ini akan segera menggantikan fungsi hardisk sebagai media penyimpanan masal (Mass storage). (penterjemah = terbukti sekarang sudah beredar SSD/Solid State Disk dengan performance sangat fantastis).
Mask ROM
Mask ROM adalah sejenis ROM yang mana isinya adalah sudah diprogram oleh pabrik IC. Dengan kata lain, ROM ini bukan dan tidak bisa ditulisi oleh user(kita/pembeli). Terminologi mask (tutup/halang/topeng) adalah yang digunakan dalam proses pembuatannya. Mengingat proses ini yang dititik beratkan adalah biaya yang sangat murah, mask ROM ini digunakan jika dibutuhkan volume yang tinggi, dan isinya umumnya tidak akan diubah-ubah lagi. Umumnya pabrik menggunakan ROM jenis ini, setelah dalam tahap pemngembangannya menggunakan EEPROM atau UV-EPROM. Kelebihan dari mask ROM adalah biaya pembuatan memory yang sangat rendah. Standar ROM ini masih menggunakan standar UV-EPROM dalam hal pin dan kemasannya. Namun sekarang tidak digunakan lagi, di mana sekarang hampir semua peralatan firmwarenya harus selalu bisa diperbaharui. Di mana pilihannya jatuh pada Flash ROM.
RAM (random access memory)
Memory RAM juga disebut sebagai memory volatile (menguap), mengingat jika chip diputus sumber listriknya, maka data yang ada pada memory tersebut menjadi hilang dan tidak berguna lagi. Kadang RAM ini juga disebut sebagai RAWM (read and write memory), hal ini berbeda dengan ROM yang tidak bisa serta merta di tulis. Ada 3 jenis RAM: Static RAM (SRAM), nonvolatile RAM (NV-RAM), dan dynamic RAM (DRAM). Setiap jenis akan dijelaskan satu per satu. ROM didesain untuk kode program yang sifatnya jarang berubah. Sedang RAM didesain untuk data yang sifatnya bisa berubah secara dinamis.
SRAM (static RAM)
Sel penyimpan dalam memory Static RAM dibuat dengan menggunakan Flip-flop, sehingga tidak dibutuhkan penyegaran (refresh) apapun untuk menjaga isinya tetap dalam keadaan yang terakhir. Hal ini bertolak belakang dengan DRAM yang akan dijelaskan berikutnya. Masalah dari penggunaan flip-flop sebagai sel penyimpan (storage cells) adalah setiap cell membutuhkan setidaknya 6 buah transistor untuk dapat menampung 1 bit data. Pada beberapa tahun belakangan ini cell bisa dibuat dengan hanya menggunakan 4 buah transistor, namun masih dirasa terlalu banyak. Tabel 14-4 menunjukkan diagram pin-pin dari chip SRAM. Dalam gambar 14-2 perhatikan pin WE adalah Write Enable dan OE adalah Output Enable, masing-masing untuk sinyal baca dan tulis.
Gambar 14-2 : Pin-pin SRAM (2K x 8)
Tabel 14-4 : Beberapa chip SRAM dan NV-RAM
SRAM
Komponen Kapasitas Org Access Pins Vpp
6116P-1 16K 2Kx8 100nS 24 CMOS
6116P-2 16K 2Kx8 120nS 24 CMOS
6116P-3 16K 2Kx8 150nS 24 CMOS
6116LP-1 16K 2Kx8 100nS 24 Low power CMOS
6116LP-2 16K 2Kx8 120nS 24 Low power CMOS
6116LP-3 16K 2Kx8 150nS 24 Low power CMOS
6264P-10 64K 8Kx8 100nS 28 CMOS
6264LP-70 64K 8Kx8 70nS 28 Low power CMOS
6264LP-12 64K 8Kx8 120nS 28 Low power CMOS
62256LP-10 256K 32Kx8 100nS 28 Low power CMOS
62256LP-10 256K 32Kx8 120nS 28 Low power CMOS
NV-RAM dari Semikonduktor Dallas
Komponen Kapasitas Org Access Pins Vpp
DS1220Y-150 16K 2Kx8 150nS 24 –
DS1225AB-150 64K 8Kx8 150nS 28 –
DS1230Y-85 256K 32Kx8 85nS 28 –
NV-RAM (nonvolatile RAM)
Di samping SRAM yang mudah menguap, ada sebuah jenis RAM yang non-volatile yang disebut sebagai NV-RAM. Seperti RAM yang lain, memory ini digunkana CPU untuk keperluan baca tulis. Namun jika aliran listrik diputuskan, maka isi dari memory ini adalah seperti kondisi terakhir sebelum listrik dimatikan. Atau dengan kata lain, isinya tidak berubah. Chip jenis ini dibuat dengan kompoenen sebagai beikut :
1. Menggunakan cell SRAM yang sangat-sangat efisien dalam hal daya (very, very low power consumption).
2. Menggunakan baterai lithium internal sebagai sumber arus cadangan, untuk menjaga kondisi SRAM saat listrik dicabut.
3. Menggunakan rangkaian pengendali canggih. Tugas utama dan rangkaian pengontrol ini adalah untuk memonitor pin Vcc secara terus menerus, jikalau ada arus yang tiba-tiba putus pada sumber arus eksternal. Jika ternyata itu terjadi, saat tegangan Vcc jatuh pada titik tertentu, maka rangkaian ini akan menghubungkan baterai internal untuk menggantikan sumber arus eksternal. Prosesnya sangat cepat sehingga data dalam memory tidak terganggu.
NV-RAM adalah sangat mahal karena proses pembuatannya lebih rumit. Karena membutuhkan lebih banyak komponen. Walaupun sekarang jarang digunakan, kita masih dapat menemukan chip ini karena masih dibuat oleh Dallas Semiconductor. Peran NV-RAM sebagai penyimpan data jangka lama sudah diambil alih oleh Flash ROM dan CMOS ROM yang dapat dibuat dengan harga jauh lebih murah, walau tidak sekencang NV-RAM
Checksum byte ROM
Untuk menjaga integritas dari isi ROM, setiap system harus melakukan perhitungan checksum. Dalam prosesnya, checksum digunakan untuk mendeteksi adanya data korup di dalam isi ROM. Salah satu penyebab korup-nya data dalam ROM adalah lonjakan arus, yang biasanya terjadi saat system pertama dinyalakan. Untuk menjamin integritas data dalam ROM, proses checksum menggunakan apa yang disebut dengan checksum byte. Checksum Byte ini adalah tambahan byte yang diimbuhkan di akhir rangkaian data. Untuk menghitung dari checksum byte ini adalah ikuti langkah-langkah berikut ini:
1. Tambahkan semua byte dan abaikan setiap carry (kelebihan penjumlahan).
2. Dapatkan komplmen ke-2 dari jumlah total, dan inilah yang disebut dengan byte cheksum, yang kemudian dapat diimbuhkan sebagai byte terakhir dari rangkaian data.
untuk melakukan operasi checksum nanti, tambahkan semua byte, termasuk dengan byte checksum. Hasilnya harus 0 (nol). Jika ternyata tidak nol, maka dapat dipastikan 1 atau lebih data dalam ROM telah terjadi korup. Untuk memperjelas akan konsep ini maka lihat contoh 14-4.
Contoh 14-4 |
Dengan menganggap kita memiliki 4 bytes data heksa desimal : 25h, 62h, 3Fh, dan 52h. (a) Cari byte Checksum, (b) kerjakan operasi checksum untuk memastikan integritas data. dan (c) jika byte ke 2 62h berubah menjadi 22h, tunjukkan bagaimana checksum mendeteksi error tersebut.
Jawaban:
(a) Cari checksum byte. Checksum dihitung dengan, pertama dengan menambah semua byte yang ada. Dan hasilnya adalah 118h, dan kita mengabaikan kelebihannya (carry) hingga menjadi 18h. Checksum byte adalah komplemen ke 2 dari 18h, yaitu E8h. 25h + 62h + 3Fh + 52h = 118h ==> 18h + E8h = 0 (b) Melakukan operasi perhitungan untuk menjamin integritas data. Tambahkan rangkaian data bytes termasuk byte checksum itu sendiri. Dan hasilnya haruslah 00. Hal ini mengindikasikan semua byte tidak berubah dan tidak ada byte yang terkorupsi. 25h + 62h + 3Fh + 52h + E8h = 200h ==> abaikan kelebihan dan menjadi 00 (c) Jika byte ke 2, yakni 62h dan kemudian berubah 22h, tunjukkan bagaimana checksum mendeteksi error tersebut. Tambahkan rangkaian data byte tersebut termasuk checksum byte. Dan hailnya ternyata tidak 0, yang mana bisa dipastikan ada 1 atau lebih byte yang telah terkorupsi. 25h + 22h + 3Fh + 52h + E8h = 1C0h ==> abaikan kelebihan dan menjadi C0
|
DRAM (dynamic RAM)
Dalam waktu-waktu belakangan ini dalam dunia komputer, kita membutuhkan memory yang sangat besar. Memory yang besar dan murah adalah dasar pemikiran para perancang memory. Di tahun 1970. Intel Corporation memperkenalkan dynamic RAM yang pertama dengan kepadatan 1024 bits untuk 1 keping chipnya. Setiap bitnya adalah menggunakan sebuah kapasitor untuk menerima logika. Dengan hanya menggunakan sebuah capasitor dan sebuah transistor, untuk menggantikan beberapa transistor seperti pada SRAM, tentu saja akan membuat rancangan memory menjadi semakin padat. Sehingga dapat dimungkin membuat memory yang murah dengan kapasitas yang sangat besar dan tentu saja konsumsi daya yang jauh berkurang. Namun karena menggunakan kapasitor sebagai menyimpannya, maka tentu saja muatan dalam kapasitor lambat laun dapat berkurang. Untuk mengatasi ini ternyata cell cukup dialamati tanpa mengubah isinya. Setiap cell harus dialamati, dalam selang waktu tertentu. Dengan demikian muatan dalam kapasitor dapat terjadi, dan datapun menjadi stabil.
Kepadatan dari teknologi DRAM ini semakin berkembang pesat. Sehingga sekarang sudah diproduksi chip memory DRAM yang memiliki 1 milyar (1G) cell lebih, dengan kecepatan 1 G Hertz lebih. Sebuah hasil yang fantastis.
Packaging issue in DRAM
Dalam DRAM, terdapat masalah dalam proses mengemas cell dalam jumlah yang sangat banyak dalam sebuah chip, namun dengan jumlah pin untuk alamat yang sedikit. Misalnya sebuah chip 64k-bit (64kx1) harus memiliki sejumlah 16 pin alamat, 1 pin data. Maka dibutuhkan 16 pin hanya untuk alamatnya pada metoda kemasan yang konvensional. Belum lagi pin-pin untuk Vcc, Vss, OE, RD, WR dan lainya. Denganmenggunakan metode konvensional itu , maka jumlah pin akan selalu lebih banyak, dari yang sanggup ditampungnya. Akhirnya teori untuk mengurangi jumlah pin dikembamngkan. Pada mulanya adalah dengan me-multipleks-kan sinyal-sinyal alamat dan kemudian di-demultipleks-kan kembali. Metode ini akan mmbagi 2 seluruh jumlah pin dalam lebar alamat yang ada. Sehingga yang sebelumnya dibutuhkan 16-pin maka menjadi 8-pin saja.
Organisasi DRAM
Dalam diskusi kita tentang ROM, kita perhatikan bahwa semua dari mereka adalah menggunakan data 8 pin. Hal ini tidak termasuk pada chip memory DRAM, yang mana dia memiliki organisasi yang sedikit aneh dan berbeda. Yakni x1, x4, x8, dan x16. Lihat Contoh 14-5.
Dalam chip memory, data pin juga disebut dengan I/O. Namun dalam DRAM, ada pin-pin Din dan Dout yang terpisah. Gambar 14-3 menunjukkan chip DRAM 256×1 dengan A0-A8 sebagai address, RAS, CAS, WE (write Eanble), dan Din dan Dout, juga termasuk dengan Vcc dan Gnd
Gambar 14-3 : DRAM (256K x 1)
Tabel 14-5 : Beberapa chip DRAM yang umum
Komponen Kapasitas Org Access Pins
4164-15 64K 64Kx1 150nS 16
41464-8 256K 64Kx4 80nS 18
41256-15 256K 256Kx1 150nS 16
41256-6 256K 256Kx1 60nS 16
414256-10 1M 256Kx4 100nS 20
511000P-8 1M 1Mx1 80nS 18
514100-7 4M 4Mx1 70nS 20
Contoh 14-5 |
Carilah jumlah pin-pin alamat untuk setiap DRAM berikut ini. (a) DRAM 16Kx4 (b) SRAM 16Kx4
Jawaban: mengingat (2exp14 = 16K), maka :.. (a) untuk DRAM kita hanya membutuhkan 7 pin alamat (A0-A6). Dan 2 pin lainnnya untuk RAS dan CAS. (b) untuk SRAM karena SRAM tidak memiliki kemampuan multiplex pin alamat, maka dibutuhkan 14 pin alamat, tanpa pin RAS dan CAS. Sementara itu ke-2 jenis RAM menggunakan 4 pin data.
|
SubBAB 14.2 PEN-DEKODE-AN ALAMAT MEMORY
Pada BAB ini kita akan membahas tentang pendekodean alamat. CPU memberikan alamat dari data yang dibutuhkan, namun tugas dari rangkaian pendekodean adalah untuk mencari lokasi blok memory yang dipilih. Untuk menjelajahi konsep dari rangkaian pendekodean, kita dapat melihat dari berbagai macam metoda yang digunakan untuk mendekodean alamat ini. Dalam diskusi kali ini kita menggunakan SRAM dan ROM mengingat jauh lebih mudah digunakan.
Chip memory memiliki 1 atau lebih pin yang disebut dengan CS (Chip Select), yang maka harus diaktifkan sehingga isi memory dapat diakses. Kadang kala Chip Select inijuga disebut dengan Chip Enable (CE). Dalam hubungan chip memory dengan CPU, perhatikan poin-poin berikut ini:
1. Bus data dari CPU dihubungkan secara langsung ke dalam data pin pada memory.
2. sinyal-sinyal kontrol semacam RD(read) dan WR(write) dari CPU dihubungkan masing-masing pada OE (output enable) dan WE (Write Enable).
3. Dalam hal bus-bus alamat, bagian alamat bawah (lower address) pada CPU terhubung langsung dengan pin-pin alamat memory. Dan alamat paling tinggi digunakan untuk mengaktifkan pin CS dari chip memory. Pin CS ini digunakan bersama-sama dengan pin WR atau RD. Tidak ada data yang ditransfer kecuali kondisi pin CS ini aktif terlebih dahulu.
Seperti yang kita lihat pada datasheet SRAM dan ROM, input CS pada memory normalnya adalah aktif rendah (Active low), dan chip ini diaktifkan oleh sebuah pendekode (dekoder) alamat. Normalnya memory dibagi menjadi beberapa blok dan output dari dekoder ini memberikan pilihan atas salah satu dari beberapa blok tersebut. Ada 3 jalan untuk menghasilkan seleksi memory blok ini. (a) dengan menggunakan gerbang logika sederhana, (b) menggunakan 47LS138, atau (3) menggunakan gerbang logika yng bisa diprogram, seperti GAL16C8. Setiap metode akan dijelaskan sedikit lebih dalam dengan beberapa contoh.
Decoder alamat dengan gerbang logika sederhana
Metoda paling sederhana untuk men-dekode-kan alamat ini adalah denga mengguakan NAND dan beberapa gerbang lainnya. Nyatanya, output dan NAND adalah aktif low, yang mana hal ini sangat cocok dengan pin CS yang umumnya juga aktif low. Namun jika ternyata CS yang kita temui adalah aktif high, maka nampaknya kita harus menggunakan gerbang AND. Dengan menggunakan gerbang NAND dan beberapa inverter, kita dapat mendekodekan alamat dalam jangkauan manapun. Misalnya seperti yang ditunjukkan pada gambar 14-4, yang mana A15-A12 haruslah 0011 untuk dapat men-select chip. Hal ini sama dengan alamat 3000h – 3FFFh dalam range peta memory.
gambar 14-4 : Dekoder menggunakan Gerbang logika
Menggunakan decoder 3-8 Chip 74LS138
Ini adalah dekoder alamat yang paling sering digunakan, dan langsung bisa digunakan. Terdapat 3 input A, B, dan C untuk menghasilkan 8 output aktif low Y0 – Y7. Lihat gambar 14-5 Setiap output Y terhubung dengan pin CS chip memory berbeda, sehingga total dapat mengontrol 8 blok memory atau 8 chip berbeda. Semuanya hanya dari 1 buah chip 74LS138 saja. Pada 74LS138 di mana input A, B dan C adalah tempat memilih output mana yang akan diaktifkan, ada lagi 3 buah input G2A, G2B, dan G1. G2A dan G2B keduanya adalah aktif rendah. Dan G1 adalah aktif high. Jika input G2A, G2B, atau G1 tidak terhubung dengan sinyal alamat (kadang dia terhubung dengan sinyal kontrol lainnya), mereka harus diaktifkan permanen baik pada Vcc atau pada Gnd. Contoh 14-6 menunjukkan desain dan perhitungan range alamat bagi dekoder 74LS138.
Gambar 14-5 : Diagram chip 74LS138
Gambar 14-6 : Dekoder menggunakan 74LS138
Contoh 14-6 |
Melihat desain dalam gmbar 14-6, cari jangkauan alamat dari berikut ini… (a) Y4, (b) Y2, dan (c) Y7
Jawaban:
(a) Jangkauan alamat untuk Y4 dihitung berdasar pada… A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 Sehingga dapat dilihat dari atas itu, bahwa range Y4 adalah 4000h-4FFFh. Dalam gambar 14-6, perhatikan bahwa A15 harus 0 agar decoder tersebut menjadi aktif. Y4 dipilihsaat A14, A13, dan A12 = 100 (4 biner). Dan bit-bit sebelumnya A11 – A0 adalah 0 pada alamat paling rendah, dan 1 untuk alamat tertinginya.
(b) Jangkauan alamat untuk Y2 adalah 2000h-2FFFh. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1
(c) Jangkauan alamat untuk Y7 adalah 7000h-7FFFh. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
Decoder alamat dengan gerbang logika programble
Dekoder lainnya yang juga digunakan secara luas adalah dengan menggunkan chip khusus yang bisa diprogram. Yakni chip PAL atau GAL. Untuk memprogramnya kita harus membeli software dan programmer khusus yang dikeluarkan oleh pabrik-nya. Sementara itu 74LS138 tidak membutuhkan alat semacam ini, karena langsung bisa dipakai.
Chip PAL/GAL ini memiliki 8 input dan juga 8 output yang masing-masing bisa diprogram untuk sehingga masing-masing output dapat memilih untuk aktif, salah satu konfigurasi dari 256 konfigurasi input berbeda. Dengan demikian untuk sistem yang komplex dengan blok memory yang sempit, maka penggunaan chip PAL/GAL semacam GAL16V8 ini menjadi sangat memenuhi idaman.
SubBAB 14.3 MENGHUBUNGKAN 8031/51 DENGAN ROM EKSTERNAL
Seperti yang dibicarakan pada Bab 1, chip 8031 adalah salah satu anggota keluarga 8051 yang tidak memiliki ROM di dalam chipnya. Walaupun untuk kemampuan lainnya dia tidak berbeda dengan anggota keluarga lainnya. Sehinnga agar chip tersebut dapat bekerja, maka dia membutuhkan ROM program eksternal. ROM ini lah yang berisikan kode-kode perintah jenis 8051 yang bisa dijalankan oleh 8031. Oleh karena itu bagi 8031, menghubungkan chip ini dengan ROM eksternal adalah mutlak adanya.
Sebelum kita bicara topic ini, ada baiknya kita langsung saja membeli 8751, 89C51, atau DS5000 ketimbang anda membeli 8031. Hal ini karena chip tersebut memiliki ROM dalam chip, dan berharga murah dan tidak jauh lebih mahal dari chip 8031. Namun Chip-chip 8751, 89C51, atau DS5000, dapat digunakan seolah-olah dia adalah 8031, yakni dengan men-nonaktif-kan ROM internal dari chip-chip tersebut dan menggantikannya dengan ROM eksternal. Hal ini akan dijelaskan kemudian. Sehingga anda dapat mempelajari chip 8031 dengan baik, walaupun media uji cobanya masih menggunakan 8751, 89C51, atau DS5000.
Pin EA
Seperti yang ditunjukkan pada bab 4 untuk system yang berbasis 8751, 89C51, atau DS5000 kita menghubungkan pin EA pada Vcc, hal ini mengindikasikan bahwa kita sedang menggunakan ROM program di dalam chip tersebut untuk dijalankan. Dan kemudian chip dapat mengakses ROM program eksternal jika alamat yang hendak dituju di luar dari jangkauan ROM internalnya. Sehingga memory program internal-lah yang pertama dijalankan oleh chip.
Namun saat pin EA ini dihubungkan pada Gnd. Seperti yang selalu dilakukan pada 8031. Maka jika kita mengguakan 8751, 89C51, atau DS5000, berarti kita sedang men-nonaktiof-kan ROM internal, dan menggantikannya dengan ROM eksternal. Dan alamat setelah reset, yang pertama dijalankan adalah alamat reset yang terdapat pada ROM ekternal, dan bukan lagi alamat reset pada ROM internal. Dengan mengubungkan pin EA ke GND inilah, chip 8751, 89C51, atau DS5000 bertingkah seolah-olah dirinya adalah 8031.
Gambar 14-7 : Diagram pin-pin 8051
Aturan P0 dan P2 untuk menghasilkan alamat-alamat
Mengingat Program Counter (PC) adalah sebuah register 16-bit. maka dia dapat mengakses kode program sebanyak 64K bytes. Semua keluarga 8051, Port 0 dan Port 2 dapat digunakan sebagai pemberi alamat 16-bit bagi memory eksternal. Dari ke 2 port ini, P0 memberikan alamat bawah (A0-A7), dan P2 memberikan alamat atas (A8-A15). Namun P0 jika digunakan sebagai tempat lalu lintas data D0 – D7. Atau dengan kata lain, pin P0.0 – P0.7 digunakan sebagai port alamat bawah dan sekaligus juga dapat digunakan sebagai port data. Hal ini kemudian disebut dengan address/data multiplexing dalam desain chipnya. Tujuannya hanya 1, yakni menghemat penggunaan pin-pin dalam chip, sehingga chip menjadi lebih ringkas dan murah.
Tapi bagaiaman kita mengetahui saat P0 digunakan sebagai data atau digunakan sebegai alamat. Hal ini dapat dilakukan oleh pin ALE (Address Latch Enalble). ALE adalah output dari mikro kontroller 8051. Yakni saat ALE ini = 0 maka 8051 menggunakan P0 sebagai port data, namun saat ALE = 1, maka 8051 menggunakan P0 sebagai port alamat bawah. Hasilnya, untuk memisahkan 2 fungsi dari port 0 ini, kita dapat menghubungkan P0 dengan chip lacth 74LS373 (atau LS375). Lihat gambar 14-8, Kita mengunakan ALE untuk me-Lacth (mengunci) port alamat bawah sepeti yang ditunjukkan pada gamnbar 14-9. Pemisahan alamat dari P0 ini disebut dengan address/data demultiplexing.
Dari gambar 14-9, penting di catat, bahwa normalnya ALE adalah = 0, dan P0 digunakan sebagai bus data, yakni mengirimkan data dan/atau membaca data masuk. Namun bagaimanapun juga saat 8051 hendak menggunakan P0 sebagai bus alamat, dia mengambil alamat A0-A7 pada P0, dan mengaktifkan ALE = 1 untuk emgiindikasikan bagai saat itu, P0 bertindak sebagai Port Alamat.
Gambar 14-8 : 74LS373 D-Latch
Gambar 14-9 : Demultiplexing Alamat/Data
Gambar 14-10 : Bus-bus Control, Data, dan Alamat pada keluarga 8051
PSEN
Sinyal penting yang lain dalam 8051 adalah PSEN (program Store Enable). PSEN adalah output dari 8051 untuk kemudian dihubungkan kepada pin OE dari ROM yang berisi kode program. Dengan kata lain, untuk mengakses ROM eksternal yang berisi kode program, 8051 menggunakan sinyal PSEN ini. Harap diperhatikan pula aturan-aturan yang mengikat EA dan PSEN saat menghubungkan 8051/31 dengan ROM eksternal. Saat pin EA dihubungkan pada GND, maka 8051/31 melakukan fetching kode program seluruhnya dari ROM eksternal dengan menggunakan PSEN ini (bersama dengan ALE). Perhatikan gambar 14-11 koneksi PSEN dengan pin OE milik ROM. Pada system yang berbasis kepada 8751/89C51, DS5000 dimana EA dihubungkan ke Vcc. chip-chip ini tidak akan mengaktifkan PSEN selama dia masih melakukan fetching kode program dari ROM di dalam chip-nya sendiri.
Saat pin EA dihubngkan ke GND, maka CPU akan melakuan fetching seluruh kode program dari ROM eksternal. Termasuk saat reset CPU akan mencari alamat 0000 di ROM eksternal tersebut. PSEN dan ALE sudah aktif sejak dari pertama CPU di-reset. Dan di lain pihak ROM internal menjadi tidak digunakan sama sekali.
Pada system yang mengunakan ROM eksternal untuk menyimpan kode program. Maka kita dapat mengubah-ubah program tanpa meng-otak-atik chip 8051/31 tersebut. Dan dengan demikian chip 8051/31 kita tersebut menjadi lebih tahan lama. Hal ini sangat ideal bagi kita, terutma saat proses pengembangan program. Misalnya kita dapat meng-update software dengan menggunakan komputer PC-IBM. Cara seperti iniyang biasa dilakukan pada perangkat trainer atau emulator.
Gambar 14-11 : Hubungan 8031 pada ROM program eksternal
ROM program dalam-Chip dan diluar-chip
Dalam semua contoh-contoh system yang berbasis 8051 sampai sejauh ini, kita mungkin menggunakan ROM dalam chip itu sendiri atau mungkin menggunakan memory eksternal. Dan ada waktunya kita menggunakan kedua-duanya. Apakah itu mungkin ? jawabnya adalah ya. Misalnya pada system 8751 (atau 895C51) kita bisa menggunakan ROM on-chip untuk kode boot dan kemudian menggunakan ROM eksternal yang diisikan dengan program aplikasi. (Penterjenmah : Mirip dengan DT51). Dalam cara ini, kode boot system berada di dalam ROM on-chip kemudan program milik user bisa di-download di kemudian waktu, ke dalam ROM off-chip. Dalam system inikita mengatur EA=Vcc, yang berarti setelah reset 8051 akan menjalankan program mula-mula yang terdapat pada chip, Dan saat CPU menjalankan sampai di ujung(akhir) dari ROM internal tersebut maka CPU akan memindahkan fetching dari memory ROM eksternal. Banyak desain-desain trainer menggunakan metode ini. Sekali lagi, perhatikan bahwa hal ini semua dilakukan dengan otomatis.
Seandainya semua kode program adalah 00 atau instruksi NOP. Maka 8051 akan mengeksekuasi program mulai dari alamat 0000h terus sampai pada ujung alamat ROM internalnya, untuk 8051 = 0FFFh dan untuk 8052 = 1FFFh). Saat CPU hendak menjalankan alamat 1000h (atau 8052 = 2000h) maka CPU langsung mengaktifkan fasilitas pengaksesan ROM eksternal, yakni pin ALE, PSEN, P0, dan P2. Dan CPU mulai menjalankan kode program berikutnya di ROM eksternal itu.
Lihat contoh 14-7 dan 14-8. Sedang gambar 14-12 menunjukkan konfigurasi memory.
Gambar 14-12 : Jangkauan Kode Program baik pada Off-Chip atau On-Chip
Contoh 14-7 |
Berbicara tentang alokasi space ROM program untuk setiap kasus berikut ini. (a) EA = 0 untuk chip 87C51 (89C51). (b) EA = Vcc dengan ROM On-Chip dan Off-Chip digunakan pada 8751.
(c) EA = Vcc dengan ROM On-Chip dan Off-Chip digunakan pada 8752.
Jawaban: mengingat (2exp14 = 16K), maka :.. (a) Saat EA = 0, pin EA berarti dihubungkan pada GND, dan semua kode program dikirim (fetched) dari memory ROM eksternal. Walaupun sesungguhnya di dalam chip 87C51 (89C51) sudah dilengkapi dengan ROM Code Internal. 87C51 (89C51) kemudian bertingkah sebagai 8031. (b) Dengan system 87C51 (89C51) di mana EA = Vcc, kode program diambil (fetched) dari ROM Internal dari chip itu sendiri. Yakni mulai dari alamat 0000h-0FFFh. Sementara itu untuk alamat yang lebih tinggi dari itu 1000hb-FFFFh adalah diambil (fetched) langsung dari memory ROM eksternal. (c) Pada system 87C52 (89C52) dan EA = Vcc, kode program diambil (fetched) dari ROM Internal dari chip itu sendiri. Yakni mulai dari alamat 0000h-1FFFh. Sementara itu untuk alamat yang lebih tinggi dari itu 2000hb-FFFFh adalah diambil (fetched) langsung dari memory ROM eksternal.
|
Contoh 14-8 |
Jelaskan tentang fungsi pin PSEN dalam pengaksesan memory kode program ROM On-Chip dan/atau Off-Chip.
Jawaban: Pada program pengambilan data (fetching) kode program dari ROM internal (On-Chip) maka pin PSEN tidak digunakan dan sama sekali tidak pernah diaktifkan. Namun bagaimanapun juga PSEN digunakan untuk pengambilan (fetching) kode program dari ROM eksternal. Dalam gambar 14-11, perhatikan bahwa PSEN digunakan untuk mengaktifkan pin CE pada ROM tersebut.
|
SubBAB 14.4: RUANG MEMORY DATA 8051
Sampai sejauh ini, dalam buku ini semua yang kita diskusikan tentang space memory adalah dalam penggunaannya sebagai kode program. Kita paham bahwa program-counter milik 8051 adalah selebar 16-bit. Dan dengan begitu dapat mengakses sampai sebanyak 64K bytes dari kode program. Dalam beberapa contoh pada bab-bab sebelumnya kita dapat mengambil data dari memory program dengan menggunakan instruksi “MOVX A,@A+DPTR” untuk mendapatkan datanya. Instruksi MOVC, di mana C adalah singkatan dari “Code”, yang mengindikasikan data yang lokasinya berada di space kode 8051. Dalam keluarga 8051, terdapat space memory data terpisah. Di dalam bagian bab ini kita akan menjelaskan space memory data 8051 ini dan menunjukkan bagaimana cara untuk mengaksesnya.
Space memory Data
Di samping space kode, keluarga 8051 juga memiliki space memory data sebesar 64K bytes. Dengan kata lain, 8051 memiliki total 128K bytes space alamat, di mana separuhnya digunakan sebagai space memory kode dan setengahnya lagi digunakan sebagai space memory data. Space kode program diakses dengan menggunakan program counter (PC) untuk menunjuk (fetch) dan membaca instruksi-instruksi, namun space memory data diakses menggunakan register DPTR melalui instruksi “MOVX”, dimana X berarti Eksternal. (dalam hal ini bahwa space memory data harus diimplementasikan secara eksternal).
Gambar 14-13 : Hubungan 8051 dengan ROM data Eksternal
ROM eksternnal untuk Data
Untuk menghubungkan 8031/51 dengan ROM eksternal yang berisi data, kita menggunakan RD (pin P3.7). Lihat gambar 14-13. Perhatikan bahwa aturan sinyal PSEN dan RD. Untuk ROM yang berisi kode program, PSEN-lah yang digunakan untuk mengakses (fetch) dan membaca isi (instruksi-instruksi-nya). Sementara untuk ROM yang berisi dengan data, maka sinyal RD-lah yang digunakan untuk mengakses data tersebut.
Instruksi MOVX
MOVX digunakan secara luas sebagai instruksi untuk mengakses space memory data eksternl. Cara yang sama ternyata digunakan oleh seluruh anggota keluaraga 8051. Untuk membaca data yang tersimpan secara eksternal ke dalam CPU, kita menggunakan instruksi “MOVX @DPTR,A“. Instruksi ini akan membaca data byte dari data yang ditunjukkan alamatnya oleh register DPTR, dan kemudian menyimpannya masuk ke dalam akumulator. Dalam aplikasi yang membutuhkan space data sangat besar, metode tabel look-up kemudian biasa digunakan. Lihat contoh 14-9 dan 14-10 dalam penggunaan MOVX.
Contoh 14-9 |
ROM data eksternal menggunakan space data 8051 untuk menyimpan tabel look-up (dimulai dari 1000h) untuk data DAC. Tulis program untuk membaca 30 bytes dari data-data itu, dan kirim ke P1.
Jawaban: MYXDATA EQU 1000h COUNT EQU 30 … MOV DPTR,#MYDATA ;pointer untuk data eksternal MOV R2,#COUNT ;counter AGAIN: MOVX A,@DPT ;get byte drom eksternal MEM MOC P1,A ;Send it back to P1 INC DPTR ;Next Location DJNZ R2,AGAIN ;Until all are read …
|
Contoh 14–10 |
ROM data eksternal memiliki tabel look-up untuk gelombang kotak, nomor 0 – 9. Mengingat internal RAM milik 8031/51 adalah memiliki access time paling kecang, maka tulis proram untuk menyalin element tabel itu pada RAM Internal mulai alamat 30h. Alamat tabel look-up dimulai dari alamat 0 pada ROM eksternal itu.
Jawaban: TABLE EQU 000h RAMTBLE EQU 30h COUNT EQU 10 … MOV DPTR,#TABLE ;pointer untuk ROM data eksternal MOV R5,#COUNT ;counter MOV R0,#RAMTBLE ;pointer untuk RAM internal BACK: MOVX A,@DPTR ;Get data from eksternal ROM MOV @R0,A ;Store to RAM Internal INC DPTR ;Next Location of ROM INC R0 ;Next Location of RAM internal DJNZ R5,BACK ;Until all are read …
|
Bertolak belakang antara contoh 14-10 dengan contoh 5-8. Dalam contoh tersebut element table disimpan dalam space memory program milik 8051, dan kita menggunakan instruksi “MOVC” untuk mengakses element tersebut. Dari kedua jenis instruksi seperti “MOVC A,@A+DPTR” dan “MOVX A,@DPTR” adalah sangat mirip. Namun yang pertama digunakan untuk mengakses space memory program, dan untuk yang ke dua adalah digunakan untuk mengakses data ekternal untuk dimasukkan ke dalam mkro kontroller.
Contoh 14–11 |
Tunjukkan desain dari system yang berbasis 8031 dengan ROM-Program sebesar 8K bytes dan ROM-data sebesar 8K byte pula.
Jawaban: Gambar 14-14 menunjukkan desain. Perhatikan aturan PSEN dan RD untuk masing-masing ROM. Untuk ROM program, PSEN digunakanuntuk mengaktifkan pin OE dan CE bersama-sama. Sedang untuk ROM-data, kita menggunaan pin RD yang dihubungkan pada OE dari ROM, semnetara itu CE-nya diaktifkan oleh dekoder.
|
Gambar 14-14 : Hubungan 8031 pada ROM-Data Eksternal dan ROM-Program Eksternal
Dari diskusi-diskusi sejauh ini, kita berkesimpulan bahwa saat kita mengunakan RAM internal dan register-register yang berbeda di dalam CPU sebagai penyimpannn data, selebihnya dari itu space memory digunakan untuk baca tulis, maka data harus ditempatkan secara eksternal. Hal ini akan dijelaskan kemudian.
RAM data eksternal
Untuk menghubungkan 8051 kepada SRAM eksternal, kita harus menggunakan kedua sinyal RD (P3.&) dan WR (P3.6). Hal ini ditunjukkan dalam gambar 14-15.
Instruksi MOVX untuk DRAM data eksternal
Saat menulis data pada RAM Data eksternal, kita menggunakan instruksi “MOVX @DPTR,A” dimana isi register A akan dituliskan pada RAM eksternal dengan alamat yang ditunjukka oleh register DPTR. Hal seperti ini banyak diaplikasikan, khususya di mana kita membutuhkan untuk mengumpulkan jumlah byte dari data yang sangat besr. Dalam beberapa aplikasi, kita mengambil data dan menyimpannya pada NV-RAM dan kemudian saat Catu daya listrik diputuskan, maka data tersebut tidak akan hilang atau menguap. Lihat contoh 14-12 dan gambar 14-15.
Cotoh 14-12
Contoh 14–11 |
(a) Tulis program untuk membaca data sebanyak 200 bytes dari P1 dan menyimpannya pada RAM eksternal diimulai dari lokasi RAM 5000h. (b) Space alamat mana yang dialokasikan untuk RAM-Data pada gambar 14-15 ?
Jawaban: (a) RAMDATA EQU 5000h COUNT EQU 200 … MOV DPTR,#RAMDATA ;pointer untuk NV_RAM eksternal MOV R3,#COUNT ;counter MOV R0,#RAMTBLE ;pointer untuk RAM internal BACK: MOV A,P1 ;Read data drom P1 MOVX @DPTR,A ;Save data to NV-RAM ACALL DELAY ;Wait for next sample INC DPTR ;Next Location of ROM DJNZ R3,BACK ;Until all are read SELESAI: SJMP SELESAI ;tunggu terus di sini (b) space alamat data tersebut adalah 8000h – BFFFh.
|
Gambar 14-15 : Hubungan 8051 dengan RAM-Data eksternal
Satu ROM eksternal untuk Code sekaligus untuk Data
Dengan menganggap kita memiliki system 8051 terhubung dengan chip 27512 (64Kx8), yakni sebuah chip ROM eksternal. Chip ROM eksternal ini digunakan untuk penyimpanan kode sekaligus juga untuk Data. Misalnya, space 0000-7FFFh dialokasikan sebagai program kode, dan alamat antara D000h-FFFFh digunakan untuk Data. Untuk mengakses data kita menggunakan instruksi MOVX. Nah.. bagaimana kita menghubungkan sinyal PSEN yang dibutuhkan untuk mengeksekusi program (fetching instruction), dan sinyal RD yang digunakan untuk mengakses memory eksternal tersebut dengan menggunakan MOVX. Agar sebuah chip ROM dapat digunakan sebagai ROM program dan Data sekaligus, maka kita menggunakan gerbang AND yang jurusan keluarannya menuju pin OE milik chip ROM seperti yang ditunjukkan pada gambar 14-16.
Gambar 14-16 : ROM tunggal untuk menyimpan kode program sekaligus untuk Data
System 8031 dengan ROM dan RAM
Ada kalanya kita membutuhkan ROM program, ROM data, dan RAM data dalam system kita. Ini ditunjukkan dalam Contoh 14-13.
Contoh 14–13 |
Dengan menganggap kita membutuhkan system 8031 dengan space program 16K bytes, 16K bytes ROM-data dimulai dari alamat 0000, dan 16K bytes NV-RAM dimulai dari 8000h. Tunjukkan desainnay dengan menggunakan 74LS138 untuk pendekodean alamat.
Jawaban: Solusi dari diagram pada gambar 14-17. Perhatikan bahwa tidak perlu dekoder alamat untuk ROM kode program. Namun kita membutuhkan dekoder 74LA138 untuk ROM-data dan RAM. Termasuk perhatikan juga dengan G1 = Vcc, G2A = GND, G2B = GND, dan input C dari dekoder 74LS138 ini di-ground mengingat kita hanya butuh Y0 – Y4 saja.
|
Gambar 14-17 : Hubungan 8031 dengan ROM program eksternal, Data RAM, dan Data ROM
Menghubungkan Memory Eksternal ukuran besar
Pada beberapa aplikasi kita membutuhkan memory yang sangat besar (misalnya 256K bytes) yang digunakan untuk menyimpan data. Namun bagaimanapun juga, 8051 hanya mendukung sampai 64K bytes saja untuk memory data eksternal, mengingat DPTR adalah register 16-bit. Sebagai jalan keluar dari masalah ini, kita menghubungkan A0 -A15 dari 8051 langsung ke pin A0-A15 memory eksternal, dan menggunakan beberapa pin milik P1 untuk mengakses blok 64K byte selanjutnya yang dihubungkan pada memory 256K bytes itu. Sehingga dapat dikatakan memory dibagi menjadi 4 blok, yang dipilih melalui 2 pin milik P1 itu. Hal ditunjukkan pada contoh 14-14, dan di-ilustrasi-kan pada gambar 14-18
Gambar 14-18 : Pengaksesan 8051 atas NV-RAM eksternal 265K x 8
Contoh 14–14 |
Dalam sebuah aplikasi, kita membutuhkan 256K bytes dari NV_RAM untuk menyimopan data yang diambil oleh mikrokontroller 80541. (a) Tunjukkan hubungan 8051 dengan sebuah chip NV-RAM 256Kx8. (b) Tunjukkan variasi blok dari chip tersebut diakses.
Jawaban: (a) NV-RAM 256Kx8 memiliki pin alamat 18 buah (A0-A17) dan 8 pin data. Seperti yang ditunjukkan oleh gambar 14-18, A9-A15 dapat disambung secara langsung pada chip memory, sementara itu A16 dan A17 masing-masing dikontrol oleh P1.0 dan P1.1. Diperhatikan pula bahwa pin CS dari RAM tersebut dikontrol dengan menggunakan P1.2.
(b) Memory 256K bytes dibagi menjadi 4 blok, dan setiap blok diakses menurut berikut ini: Chip Select (CS) A17 A16 P1.2 P1.1 P1.0 Space Alamat Blok 0 0 0 00000h – 0FFFFh 0 0 1 10000h – 1FFFFh 0 1 0 20000h – 2FFFFh 0 1 1 30000h – 3FFFFh 1 x x tidak aktif
misalnya untuk mengakses space alamat 20000h-2FFFFh maka kita membutuhkan rutin seperti di bawah ini. CLR P1.2 ;enable eksterna RAM MOV DPTR,#0 ;Start of 64K memory Blok CLR P1.0 ;A16=0 SETB P1.1 ;A17=1 untuk blok 20000h MOV A,SBUF ;Get data from Serial Buffer MOVX @DPTR,A ;save data in Blok 20000 address INC DPTR ;Next Loaction …
|
RINGKASAN
Bab ini menjelaskan tentang interfacing memory debngan system yang berbasis 8051/31. Kita mulai dengan penjelasan singkat tentang memory semikonduktor. Perbandingan dari type memory diberikan, yakni dengan pertimbangan kapasitas, organisasi, dan waktu akses.
ROM (Read Only Memory) adalah memory non-volatile biasa yang digunakan untuk menyimpan program. Masing-masing kelebihan dari beberapa type ROM dijelaskan pada bab ini, termasuk PROM, EPROM, UV-EPROM, EEPROM, Flash emmory EPROM, dan mask ROM.
RAM (random access memory) adalah biasanya digunakan untuk menyimpan data dan/atau program. Yang lebih dikhususnya untuk data yang bisa berubah secara dinamis. Masing-masing kelebihan dari beberapa jenisnya juga dibahas, termauk SRAM, NV-RAM, check-sum byte RAM, dan DRAM.
Teknik pen-dekode-an alamat menggunakan gerbang logika sederhana, decoder, dan programable-logic juga dibahas. Dan terakhir memory RAM dan ROM dan hubungannya dengan system 8031, dan program-program yang ditulis untuk mengakses kode atau data yang tersimpan pada memory ekternal.