CHAPTER 11
BASIC I/O INTERFACE
menyediakan jembatan antara CPU (unit pemroses sentral) dan perangkat periferal. Ini memungkinkan CPU untuk berkomunikasi dengan perangkat eksternal, seperti keyboard, mouse, monitor, printer, dan hard drive, sehingga data dapat masuk ke sistem atau keluar dari sistem.
I/O antarmuka adalah sistem atau metode yang menghubungkan perangkat input/output ke sistem komputer agar bisa bertukar data dan instruksi dengan CPU dan memori. Karena perangkat I/O memiliki karakteristik berbeda dari CPU/memori (kecepatan, format data, dll), dibutuhkan antarmuka sebagai perantara.
Set instruksi berisi satu jenis instruksi untuk mentransfer informasi ke perangkat I/O (OUT) dan satu lagi untuk membaca informasi dari perangkat I/O (IN). Instruksi (INS dan OUTS, yang ditemukan pada semua versi kecuali 8086/8088) juga disediakan untuk mentransfer string data antara memori dan perangkat I/O. Tabel 11–1 mencantumkan semua versi dari setiap instruksi yang ditemukan dalam set instruksi mikroprosesor.
Instruksi yang mentransfer data antara perangkat I/O dan akumulator mikroprosesor (AL, AX, atau EAX) disebut IN dan OUT. Alamat I/O disimpan dalam register DX sebagai alamat I/O 16-bit atau dalam byte (p8) yang langsung mengikuti opcode sebagai alamat I/O 8-bit. Intel menyebut bentuk 8-bit (p8) sebagai alamat tetap karena disimpan bersama instruksi, biasanya dalam ROM. Alamat I/O 16-bit di DX disebut alamat variabel karena disimpan di DX, dan kemudian digunakan untuk mengalamatkan perangkat I/O. Instruksi lain yang menggunakan DX untuk mengalamatkan I/O adalah instruksi INS dan OUTS.
Port I/O memiliki lebar 8-bit, jadi setiap kali port 16-bit diakses, dua port 8-bit yang berurutan sebenarnya diakses. Port I/O 32-bit sebenarnya adalah empat port 8-bit. Sebagai contoh, port 100H diakses sebagai word, maka 100H dan 101H yang sebenarnya diakses. Port 100H berisi bagian data yang paling tidak signifikan dan port 101H berisi bagian yang paling signifikan.
TABLE 11–1 Input/Output instructions.
Setiap kali data ditransfer menggunakan instruksi IN atau OUT, alamat I/O, yang sering disebut nomor port (atau singkatnya port), akan muncul pada bus alamat. Antarmuka I/O eksternal akan mendekode nomor port dengan cara yang sama seperti mendekode alamat memori. Nomor port tetap 8-bit (p8) akan muncul pada koneksi bus alamat A7–A0 dengan bit A15–A8 sama dengan 000000002. Koneksi alamat di atas A15 tidak terdefinisi untuk instruksi I/O. Nomor port variabel 16-bit (DX) akan muncul pada koneksi alamat A15–A0.
Ini berarti bahwa 256 alamat port I/O pertama (00H–FFH) diakses oleh instruksi I/O tetap maupun variabel, tetapi alamat I/O apa pun dari 0100H hingga FFFFH hanya dapat diakses oleh alamat I/O variabel. Dalam banyak sistem khusus, hanya 8 bit paling kanan dari alamat yang didekode, sehingga mengurangi jumlah sirkuit yang diperlukan untuk dekode. Pada komputer PC, semua 16 bit bus alamat didekode dengan lokasi 0000H–03FFH, yang merupakan alamat I/O yang digunakan untuk I/O di dalam PC pada bus ISA (industry standard architecture).
Instruksi INS dan OUTS mengakses perangkat I/O menggunakan register DX, tetapi tidak mentransfer data antara akumulator dan perangkat I/O seperti yang dilakukan oleh instruksi IN dan OUT. Sebaliknya, instruksi-instruksi ini mentransfer data antara memori dan perangkat I/O. Alamat memori ditentukan oleh ES:DI untuk instruksi INS dan oleh DS:SI untuk instruksi OUTS. Seperti instruksi string lainnya, isi penunjuk diinkrementasi atau didekrementasi, seperti yang ditentukan oleh status flag arah (DF). Kedua INS dan OUTS dapat diawali dengan awalan REP, memungkinkan lebih dari satu byte, word, atau doubleword ditransfer antara I/O dan memori.
Pentium 4 dan Core2 yang beroperasi dalam mode 64-bit memiliki instruksi I/O yang sama. Tidak ada instruksi I/O 64-bit dalam mode 64-bit. Alasan utamanya adalah sebagian besar I/O masih 8 bit dan kemungkinan besar akan tetap seperti itu untuk waktu yang tidak terbatas.
FIGURE 11–1 The memory
and I/O maps for the 8086/
8088 microprocessors.
(a) Isolated I/O. (b) Memory-
mapped I/O
Ada dua metode berbeda untuk menghubungkan I/O ke mikroprosesor: isolated I/O dan memory-mapped I/O. Dalam skema isolated I/O, instruksi IN, INS, OUT, dan OUTS mentransfer data antara akumulator atau memori mikroprosesor dan perangkat I/O. Sementara itu, dalam skema memory-mapped I/O, setiap instruksi yang merujuk pada memori dapat melakukan transfer tersebut. Baik isolated maupun memory-mapped I/O masih digunakan, oleh karena itu keduanya dibahas dalam teks ini. Namun, PC tidak menggunakan memory-mapped I/O.
Isolated I/O
Teknik transfer I/O yang paling umum digunakan dalam sistem berbasis mikroprosesor Intel adalah isolated I/O. Istilah isolated menggambarkan bagaimana lokasi I/O diisolasi dari sistem memori di ruang alamat I/O yang terpisah. (Gambar 11–1 mengilustrasikan ruang alamat isolated dan memory-mapped untuk setiap mikroprosesor Intel 80X86 atau Pentium–Core2.) Alamat untuk perangkat isolated I/O, yang disebut port, terpisah dari memori. Karena port terpisah, pengguna dapat memperluas memori hingga ukuran penuh tanpa menggunakan ruang memori apa pun untuk perangkat I/O.
Kekurangan dari isolated I/O adalah data yang ditransfer antara I/O dan mikroprosesor harus diakses oleh instruksi IN, INS, OUT, dan OUTS. Sinyal kontrol terpisah untuk ruang I/O dikembangkan (menggunakan dan ), yang menunjukkan operasi pembacaan ( ) atau penulisan ( ) I/O. Sinyal ini menunjukkan bahwa alamat port I/O, yang muncul di bus alamat, digunakan untuk memilih perangkat I/O. Pada komputer pribadi, port isolated I/O digunakan untuk mengontrol perangkat periferal. Alamat port 8-bit digunakan untuk mengakses perangkat yang terletak di papan sistem, seperti pengatur waktu dan antarmuka keyboard, sementara port 16-bit digunakan untuk mengakses port serial dan paralel, serta sistem video dan drive disk.
Memory-Mapped I/O
Berbeda dengan isolated I/O, memory-mapped I/O tidak menggunakan instruksi IN, INS, OUT, atau OUTS. Sebaliknya, ia menggunakan instruksi apa pun yang mentransfer data antara mikroprosesor dan memori. Perangkat memory-mapped I/O diperlakukan sebagai lokasi memori di peta memori.
Keuntungan utama dari memory-mapped I/O adalah bahwa setiap instruksi transfer memori dapat digunakan untuk mengakses perangkat I/O. Kekurangan utamanya adalah sebagian dari sistem memori digunakan sebagai peta I/O. Ini mengurangi jumlah memori yang tersedia untuk aplikasi. Keuntungan lain adalah sinyal dan tidak memiliki fungsi dalam sistem memory-mapped I/O dan dapat mengurangi jumlah sirkuit yang diperlukan untuk decoding.
FIGURE 11–5
The DB25 connector found on computers and the Centronics 36-pin connector found on printers for the
Centronics parallel printer interface
Agar perangkat dapat disambungkan ke mikroprosesor, karakteristik terminal dari mikroprosesor dan komponen antarmuka terkaitnya harus diketahui. (Materi ini sudah diperkenalkan di awal Bab 9.)
Perangkat Masukan. Perangkat masukan sudah kompatibel dengan TTL dan karenanya dapat disambungkan ke mikroprosesor dan komponen antarmukanya, atau berbasis sakelar. Sebagian besar perangkat berbasis sakelar dalam kondisi terbuka atau terhubung. Ini bukan level TTL—level TTL adalah logika 0 (0,0 V–0,8 V) atau logika 1 (2,0 V–5,0 V).
Agar perangkat berbasis sakelar dapat digunakan sebagai perangkat masukan yang kompatibel dengan TTL, beberapa pengondisian harus diterapkan. Gambar 11–6 menunjukkan sakelar togpel sederhana yang terhubung dengan benar untuk berfungsi sebagai perangkat masukan.
Decoding 8-Bit I/O Port Addresses
Seperti yang sudah disebutkan, instruksi I/O tetap (fixed I/O) menggunakan alamat port I/O 8-bit yang muncul pada A15–A0 sebagai 0000H–00FFH. Jika sebuah sistem tidak akan pernah memiliki lebih dari 256 perangkat I/O, kita sering kali hanya mendekode koneksi alamat A7–A0 untuk alamat port I/O 8-bit. Dengan demikian, kita mengabaikan koneksi alamat A15–A8. Sistem embedded (sistem terbenam) sering kali menggunakan alamat port 8-bit.
Perlu diingat bahwa register DX juga dapat mengalamatkan port I/O 00H–FFH. Jika alamatnya didekode sebagai alamat 8-bit, kita tidak akan pernah bisa menyertakan perangkat I/O yang menggunakan alamat I/O 16-bit. Komputer pribadi (PC) tidak pernah menggunakan atau mendekode alamat 8-bit.
Gambar 11–10 mengilustrasikan sebuah dekoder 74ALS138 yang mendekode port I/O 8-bit dari F0H hingga F7H. (Kita asumsikan bahwa sistem ini hanya akan menggunakan port I/O 00H–FFH untuk contoh dekoder ini.) Dekoder ini identik dengan dekoder alamat memori, hanya saja kita hanya menghubungkan bit alamat A7–A0 ke input dekoder.
Gambar 11–11 menunjukkan versi PLD (Programmable Logic Device), menggunakan GAL22V10 (sebuah perangkat berbiaya rendah) untuk dekoder ini. PLD merupakan sirkuit dekoder yang lebih baik karena jumlah sirkuit terpadu (integrated circuit) telah dikurangi menjadi satu perangkat saja. Program VHDL untuk PLD tersebut ada pada Contoh 11–2.
Dekode Alamat Port I/O
Dekode alamat port I/O sangat mirip dengan dekode alamat memori, terutama untuk perangkat I/O yang dipetakan ke memori (memory-mapped I/O). Faktanya, kami tidak membahas dekode memory-mapped I/O karena ia diperlakukan sama dengan memori (kecuali bahwa dan tidak digunakan karena tidak ada instruksi IN atau OUT). Keputusan untuk menggunakan memory-mapped I/O sering kali ditentukan oleh ukuran sistem memori dan penempatan perangkat I/O.
No comments:
Post a Comment