Interfacing i8088 dengan Memori by hcj

VIEWS: 94 PAGES: 13

									          Interfacing i8088 dengan Memori
Memori harus tersedia pada suatu sistem mikroprosesor, baik untuk menyimpan program
maupun untuk menyimpan data. Tergantung dari kebutuhan, memori yg dapat digunakan
oleh P Intel 8088 berbeda-beda berdasarkan ukurannya. Ada yg hanya ¼ KByte (256
Byte) sampai 128 KByte per kepingnya (per IC = Integrated Circuit).


Memory
                Memory Map                                     Address line used
 Size
 256 Byte         00 – FF                A0 A1 A2 A3 A4 A5 A6 A7
 512 Byte        000 – 1FF               A0 A1 A2 A3 A4 A5 A6 A7 A8
  1 Kbyte        000 – 3FF               A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
  2 Kbyte        000 – 7FF               A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
  4 Kbyte        000 – FFF               A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11
  8 Kbyte       0000 – 1FFF              A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
 16 Kbyte       0000 – 3FFF              A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13
 32 Kbyte       0000 – 7FFF              A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
 64 Kbyte       0000 – FFFF              A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

ROM vs. RAM
Data di ROM hanya dapat dibaca saja sedangkan data di RAM dapat dibaca dan juga
ditulis. Hal ini menyebabkan secara hardware mereka berbeda.
Contoh :
Sebuah keping memori ROM 2716 dengan kapasitas 2 KByte
Sebuah keping memori RAM 4016 dengan kapasitas 2 KByte

           A7     1                 24     Vcc     A7      1                 24   Vcc
           A6         2             23      A8     A6          2             23    A8
           A5         3             22      A9     A5          3             22    A9
           A4
           A3
                 4
                 5
                          2716      21
                                    20
                                           Vpp
                                           CS
                                                   A4
                                                   A3
                                                         4
                                                         5
                                                                   4016      21
                                                                             20
                                                                                  WE
                                                                                  OE
           A2    6                  19     A10     A2    6                   19   A10
           A1    7                  18     PGM     A1    7                   18   CS
           A0    8        2 Kbyte   17     D7      A0    8         2 Kbyte   17   D7
           D0    9                  16     D6      D0    9                   16   D6
           D1    10
                          PROM      15     D5      D1    10
                                                                    SRAM     15   D5
           D2    11                 14     D4      D2    11                  14   D4
          GND    12                 13     D3     GND    12                  13   D3




 Nama                                             Fungsi                                Tipe
            Chip Select (Active Low) digunakan untuk mengaktifkan memori.
   CS       Untuk dapat diakses datanya, CS dari suatu memori                             In
            (baik ROM maupun RAM) harus diaktifkan terlebih dahulu
                                                                                          Out
            Data bus 8 jalur (8 bit)
                                                                                        (ROM)
D0 – D7     sebagai saluran data antara isi memori dgn data bus eksternal,
                                                                                        In+Out
            untuk mengambil data dari memori atau menuliskan data ke memori
                                                                                        (RAM)
           Address bus (A0 – A10) digunakan untuk mengaktifkan salah satu set
A0 – A10                                                                                 In
           data-8-bit dari total kapasitasnya = 211 x 8 bit = 2048 byte (lihat tabel)
 Nama                                       Fungsi                                      Tipe
           Output Enable (Active Low)
  OE                                                                                     In
           jika diaktifkan maka salah satu set data-8-bit dalam RAM dapat dibaca
  WE
           Write Enable (Active Low)
                                                                                         In
           jika diaktifkan maka salah satu set data-8-bit dalam RAM dapat ditulis
  PGM      Program (Active +18 Volt) digunakan untuk menulis ke dalam ROM                In

Pada kasus RAM, struktur internal pengaksesannya adalah sebagai berikut :


 D0

 D1

 D2

 D3
                                DATA
 D4                            ARRAY

 D5

 D6

 D7




             WE OE

Sinyal WE dan OE akan mengaktifkan salah satu set dari 3-state buffer (jika WE
diaktifkan  arah data masuk ke dalam memori, jika OE diaktifkan  arah data keluar
dari memori).
Untuk menyambungkan suatu keping memori dengan P Intel 8088 dibutuhkan 3
penyambungan yaitu sambungan untuk data, alamat, dan kontrol.

Sambungan data adalah secara langsung karena lebarnya sama-sama 8 bit (D0 – D7)
baik dari sisi P Intel 8088 maupun dari sisi memori.

Sambungan alamat tergantung dari kapasitas memori yg digunakan (lihat tabel).
Misalnya memori yg digunakan berkapasitas 2 Kbyte, berarti address line yg digunakan
untuk mengakses suatu data pada memori tersebut adalah A0 – A10. Maka yang diambil
dari P Intel 8088 adalah address line yg bersesuaian yaitu A0 – A10, dimana :
Pin A0 dari P Intel 8088 disambungkan pada masukan A0 RAM/ROM,
Pin A1 dari P Intel 8088 disambungkan pada masukan A1 RAM/ROM,
Pin A2 dari P Intel 8088 disambungkan pada masukan A2 RAM/ROM,
Pin A3 dari P Intel 8088 disambungkan pada masukan A3 RAM/ROM,

dst… sampai

Pin A10 dari P Intel 8088 disambungkan pada masukan A10 RAM/ROM

Sambungan kontrol yg diperlukan adalah :


              8088
                      RD                     signal Mem READ to pin OE
                    IO / M
                     WR                      signal Mem WRITE to pin WE

untuk kasus RAM,
sinyal Memory Read digunakan untuk memberitahu keping memori yg telah diaktifkan
pin CS-nya bahwa jenis akses adalah READ. Untuk itu digunakan sebuah gerbang OR
untuk menggabungkan sinyal RD dan IO/M dari P Intel 8088. Sinyal Memory READ
yang active-low ini akan disambungkan pada pin OE yang juga active-low.
sinyal Memory Write digunakan untuk memberitahu keping memori yg telah diaktifkan
pin CS-nya bahwa jenis akses adalah WRITE. Untuk itu digunakan sebuah gerbang OR
untuk menggabungkan sinyal WR dan IO/M dari P Intel 8088. Sinyal Memory WRITE
yang active-low ini akan disambungkan pada pin WE yang juga active-low.

sinyal CS: untuk mengaktifkan suatu keping memori.
Sisa dari Address line yg tidak digunakan (A12 – A19) akan dipakai untuk mengaktifkan
memori tersebut (masukan Chip Select).
 Contoh sambungan 8088 dengan sebuah ROM 2716 (gambar atas) dan sebuah RAM
 4016 (gambar bawah)


8088             2716          8088                     2716      8088                    2716
    D0           D0
    D1           D1
    D2           D2
    D3           D3                             8                              D0 - D7
    D4           D4
    D5           D5                          D0 - D7
    D6           D6
    D7           D7

   A0            A0
   A1            A1
   A2            A2
   A3            A3
   A4            A4
   A5            A5
   A6            A6
   A7            A7                           11                               A0 - A10
   A8            A8                          A0 - A10
   A9            A9
   A10           A10   CS                                    CS                                CS

           (a)                                (b)                               (c)

8088             4016          8088                      4016     8088                     4016
    D0           D0
    D1           D1
    D2           D2
    D3           D3                             8
    D4           D4                                                            D0 - D7
    D5           D5
    D6           D6                          D0 - D7
    D7           D7
    RD                                RD                                RD
                 OE                                     OE                                OE
  IO / M                            IO / M                            IO / M
   WR            WE                  WR                 WE             WR                 WE

   A0            A0
   A1            A1
   A2            A2
   A3            A3
   A4            A4
   A5            A5                           11                               A0 - A10
   A6            A6
   A7            A7                          A0 - A10
   A8            A8
   A9            A9
   A10           A10   CS                                    CS                                CS

           (a)                                (b)                               (c)

 Pada gambar di atas dapat diperhatikan :
 1. sambungan untuk data adalah langsung (direct connection) tanpa perantara.
    Dimana Dn dari i8088 disambungkan dengan Dn yg bersesuaian (n = 0..7)
2. sambungan untuk alamat tergantung pada Address Line yg dibutuhkan untuk
   mengaktifkan salah satu set flip-flop di dalam memori. Untuk kasus diatas: salah satu
   dari 2048 (211)set flip-flop akan diaktifkan dgn A0 – A10 dari i8088
3. sambungan bus kontrol adalah untuk memberikan sinyal RD atau WR dari 8088 ke
   4016 untuk menandakan jenis akses data (apakah READ  membaca data dari
   memori, ataukah WRITE  menulis data ke memori). Dan untuk sinyal CS, karena
   hanya ada satu keping memori yg digunakan, maka pengaksesan memori hanya
   terjadi pada 2716/4016. Sehingga 2716/4016 tersebut selalu dalam keadaan aktif.

Gambar (b) dan (c) merupakan cara lain (yg lebih sederhana) untuk menggambarkan
interkoneksi (bus data dan bus alamat) antara 8088 dgn memori.

Interfacing P Intel 8088 dengan 2 buah keping memory

Jika digunakan dua buah 4016, akan timbul masalah ketika P Intel 8088 akan
mengakses data pada alamat 00000 dimana akan ada suatu data dari 4016 yg pertama dan
ada data lainnya dari 4016 yang kedua.
Untuk menghindarinya, diperlukan suatu mekanisme pemilihan (selector) yang akan
memilih salah satu 4016. Jadi dalam suatu saat hanya ada satu 4016 yang aktif. Untuk hal
ini, disediakan sebuah masukan pada 4016 yang disebut dgn CS (Chip Select) yang aktif
Low.

Jika CS diaktifkan (diberikan Low Voltage) maka data didalam 4016 akan dapat diakses
oleh i8088. Sebaliknya jika CS tidak diaktifkan (diberikan High Voltage) maka data
didalam 4016 tidak akan dapat diakses.

Karena hanya ada 2 pilihan (2 buah 4016) maka dapat digunakan sebuah gerbang inverter
dimana untuk mengaktifkannya kita gunakan A19.

Hal yang sama juga berlaku untuk ROM 2716.

                                       D0 - D7
               8088                                    2716
                               A0 - A10
                                                        A
                                                  CS




                     A19                               2716
                                                        B
                                                  CS




                                     (a)
            8088                      D0 - D7
                                                       4016
                               A0 - A10
                                                        A WE
                                                  CS
                                                            OE



                   A19                                 4016
                                                        B WE
                                                             OE

                                                  CS




                          RD



                                                Mem READ
                   IO/M
                     WR
                                                Mem WRITE

                                          (b)
Peta memori untuk sistem diatas adalah sebagai berikut :

A19 ---------------------------A0
 1111-1111-1111-1111-1111 =          FFFFF
                                                        510 KByte
                                                                             second half
                                                berisi pengulangan content
                                                                             512 K Byte
                                                   4016B (atau 2716B)
                                                                               selected
 1000-0000-1000-0000-0000 =          80800
                                                                               when A19
 1000-0000-0111-1111-1111 =          807FF                                     =1
                                                         2 KByte
                                                 dari 4016B (atau 2716B)
 1000-0000-0000-0000-0000 =          80000
 0111-1111-1111-1111-1111 =          7FFFF
                                                        510 KByte
                                                                              first half
                                                berisi pengulangan content
                                                                             512 K Byte
                                                   4016A (atau 2716A)
                                                                              selected
 0000-0000-1000-0000-0000 =          00800
                                                                              when A19
 0000-0000-0111-1111-1111 =          007FF                                    =0
                                                         2 KByte
                                                 dari 4016A (atau 2716A)
 0000-0000-0000-0000-0000 =          00000

Terjadinya pengulangan content memori karena tidak semua Address Line sisa (A11 –
A19) digunakan untuk menghasilkan sinyal CS. Perhatikan bahwa pada saat Address Bus
berisi 00000H dan 00800H, memori 4016A (atau 2716A) tetap diaktifkan. Dan pada
kedua kondisi tersebut, set flip-flop yg sama (yg pertama) yg akan diakses.

Untuk menghindari terjadinya pengulangan isi memori, maka seluruh sisa Address Line
yg tidak tersambung ke memori, harus di-kode-kan untuk menghasilkan sinyal CS. Pada
kasus diatas, untuk menghasilkan sinyal CS, maka seluruh A11 – A19 harus di-kode-kan
(tidak hanya A19 saja).
Masalah akan menjadi besar jika kita akan menggunakan lebih dari dua buah 4016,
dimana harus ada suatu sistem selektor untuk mengaktifkan salah satu memori. Disini
kita akan mendesainnya dengan gerbang logika.


                                                    D0 - D7
                                                                       4016
                                         A0 - A10                                 WE
                                                                        A
                                    N1                            CS               OE



                                                                       4016
                                                                                  WE
                                                                        B
                                    N2                            CS               OE


                                                                       4016
       i8088                                                            C
                                                                            WE

                                    N3                            CS              OE


                                                                       4016
                                                                            WE
                 A18                                                    D
                                    N4                            CS              OE
                  A19
                   RD
                                                                       Mem READ
                 IO / M
                                                                       Mem WRITE
                   WR


Peta memori untuk sistem diatas adalah sebagai berikut :

A19 ---------------------------A0
 1111-1111-1111-1111-1111 =          FFFFF         254 KByte
                                               berisi pengulangan          fourth quarter
 1100-0000-1000-0000-0000 =          C0800       content 4016D              256 KByte
 1100-0000-0111-1111-1111 =          C07FF                              selected when A19
                                                     2 KByte            = 1 & A18 = 1
                                                    dari 4016 D
 1100-0000-0000-0000-0000 =          C0000
 1011-1111-1111-1111-1111 =          BFFFF         254 KByte                third quarter
                                               berisi pengulangan            256 KByte
 1000-0000-1000-0000-0000 =          80800       content 4016C          selected when A19
 1000-0000-0111-1111-1111 =          807FF          2 KByte             = 1 & A18 = 0
                                     dari 4016 C
1000-0000-0000-0000-0000 =   80000
 0111-1111-1111-1111-1111 =        7FFFF         254 KByte
                                             berisi pengulangan       second quarter
 0100-0000-1000-0000-0000 =        40800       content 4016B            256 KByte
 0100-0000-0111-1111-1111 =        407FF                           selected when A19
                                                   2 KByte         = 0 & A18 = 1
                                                  dari 4016 B
 0100-0000-0000-0000-0000 =        40000
 0011-1111-1111-1111-1111 =        3FFFF         254 KByte
                                             berisi pengulangan        first quarter
 0000-0000-1000-0000-0000 =        00800       content 4016A           256 KByte
 0000-0000-0111-1111-1111 =        007FF                           selected when A19
                                                   2 KByte         = 0 & A18 = 0
                                                  dari 4016 A
 0000-0000-0000-0000-0000 =        00000

Untuk menghindari terjadinya pengulangan isi memori, maka seluruh sisa Address Line
yg tidak tersambung ke IC memori tersebut harus di-kode-kan untuk menghasilkan sinyal
CS.

Sebagai contoh, kita akan membuat Address Decoder yg akan mengaktifkan salah satu
dari 4 IC memori yg berbeda-beda kapasitasnya. Karena sambungan data dan kontrol
selalu tetap, maka yg perlu diperhatikan hanya sambungan alamatnya saja (disesuaikan
dengan tabel).

Interface ke 2708      = 1 Kbyte
                    untuk aktivasi CS dari 2708             untuk mengakses memori 2708
address line :      A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

Interface ke 2716      = 2 Kbyte
                    untuk aktivasi CS dari 2716           untuk mengakses memori 2716
address line :      A19 A18 A17 A16 A15 A14 A13 A12 A11   A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

Interface ke 2732      = 4 Kbyte
                    untuk aktivasi CS dari 2732       untuk mengakses memori 2732
address line :      A19 A18 A17 A16 A15 A14 A13 A12   A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

Interface ke 2764      = 8 Kbyte
                    untuk aktivasi CS dari 2764   untuk mengakses memori 2764
address line :      A19 A18 A17 A16 A15 A14 A13   A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

Kita akan menggunakan 4 buah gerbang OR yg berbeda untuk mengaktifkan masing-
masing memori.
untuk 2708 kita membutuhkan gerbang logika OR 10 input (A10 – A19),
untuk 2716 kita membutuhkan gerbang logika OR 9 input (A11 – A19),
untuk 2732 kita membutuhkan gerbang logika OR 8 input (A12 – A19), dan
untuk 2764 kita membutuhkan gerbang logika OR 7 input (A13 – A19).
      Peta memori untuk sistem diatas adalah sebagai berikut :
                                           1111-1111-1111-1111-1111 =   FFFFF
                                                                                248 KByte
                                                                                  empty

      A13
                                          1100-0010-0000-0000-0000 =    C2000
      A14                                 1100-0001-1111-1111-1111 =    C1FFF
      A15       Address        to CS of                                         8 KByte
      A16                                                                       dari 2764
      A17       Decoder           2764    1100-0000-0000-0000-0000 =    C0000
A18
A19                                       1011-1111-1111-1111-1111 =    BFFFF
                                                                                252 KByte
                                                                                  empty
      A12                               1000-0001-0000-0000-0000 =      81000
      A13
      A14                               1000-0000-1111-1111-1111 =      80FFF
      A15        Address       to CS of                                         4 KByte
      A16        Decoder           2732                                         dari 2732
      A17                                 1000-0000-0000-0000-0000 =    80000
      A18
A19                                       0111-1111-1111-1111-1111 =    7FFFF
                                                                                254 KByte
                                                                                  empty
      A11
      A12                               0100-0000-1000-0000-0000 =      40800
      A13                               0100-0000-0111-1111-1111 =      407FF
      A14        Address       to CS of                                         2 KByte
      A15
      A16        Decoder          2716                                          dari 2716
      A17
                                          0100-0000-0000-0000-0000 =    40000
A18                                       0011-1111-1111-1111-1111 =    3FFFF
      A19
                                                                                255 KByte
                                                                                  empty
      A10
      A11
      A12
                                        0000-0000-0100-0000-0000 =      00400
                               to CS of 0000-0000-0011-1111-1111 =      003FF
      A13
      A14        Address                                                        1 KByte
      A15
      A16
                 Decoder           2708                                         dari 2708
                                          0000-0000-0000-0000-0000 =    00000
      A17
      A18
      A19
Alternatif lain (dan juga yg paling banyak diterapkan) untuk mengaktifkan salah satu
keping memori adalah dengan menggunakan address decoder. Decoder adalah suatu alat
yang akan menterjemahkan kondisi input dengan mengaktifkan salah satu outputnya.

Setiap output dari decoder akan dihubungkan ke masukan CS dari salah satu keping
memori. Karena hanya ada satu output yg aktif, maka hanya ada satu keping memory yg
diaktifkan.

Pada contoh diatas (4 buah 4016), karena ada 4 buah keping yang akan diaktifkan, maka
dibutuhkan decoder 2-to-4 yang memiliki 4 buah output dan salah satu output akan
mengaktifkan salah satu keping memori yang bersesuaian.

  A18                  Y0     ENABLE       A19   A18    Y3    Y2     Y1    Y0    4016
  A19
                      Y1           0        0     0      1     1     1      0      A
         2 - to - 4                0        0     1      1     1     0      1      B
         Decoder                   0        1     0      1     0     1      1      C
                      Y2
                                   0        1     1      0     1     1      1      D
                       Y3          1        X     X      1     1     1      1      -
ENABLE


Mengacu pada tabel operasi diatas, kita dapat menggunakan :
output Y0 untuk mengaktifkan 4016-A dimana ini terjadi pada saat A19 = 0 & A18 = 0.
output Y1 untuk mengaktifkan 4016-B dimana ini terjadi pada saat A19 = 0 & A18 = 1.
output Y2 untuk mengaktifkan 4016-C dimana ini terjadi pada saat A19 = 1 & A18 = 0.
output Y3 untuk mengaktifkan 4016-D dimana ini terjadi pada saat A19 = 1 & A18 = 1.

Sedangkan untuk menyeleksi 8 keping memori, kita dapat menggunakan 3-to-8 Decoder
yang akan menterjemahkan sinyal A17, A18, dan A19 untuk mengaktifkan salah satu dari
8 keping memori.
Rangkaian lengkap dari sistem P Intel 8088 dengan 4 keping memori ada pada gambar
berikut ini :

                                                   D0 - D7
                                                                            2716
                                        A0 - A10
                                                                             A
                                                                       CS



                                                                            2716
                                                                             B
                                                                       CS
   i8088
                                                                            2716
                                                                             C
                                                                  CS


               A18
                          2 to 4
                                                                            2716
               A19
                         Decoder
                                                                             D
                                                                  CS

								
To top