Menghubungkan 8031/51 dengan Memory External

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. Pada subBAB 14-2 konsep pen-dekode-an alamatan yang akan dibahas. Sedang pada SubBAB 14-3 kita akan menggali bagaimana menghubungkan 8031 dengan sebuah ROM eksternal. Menghubungkan 8031/51 dengan sebuah memory RAM eksternal akan dibahas pada SubBAB 14-4.

 


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.


Gambar 14-1 : Konfigurasi pin unutk keluarga ROM 27xx

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.

 

 


—————————————-

|o-o| Diterjemahkan oleh Dhanny Dhuzell

—————————————-

You can leave a response, or trackback from your own site.

Leave a Reply

You must be logged in to post a comment.

Anda mungkin juga sukaclose