Volume 11 No : 2 ISSN Nomor : 1412-9434 2012 JURNAL ILMIAH KOMPUTASI Komputer & Sistem Informasi 1-13 Rancang Bangun Perangkat Keras Sistem Informasi Lahan Parkir Secara Waktu Nyata Berbasis Mikrokontroller AT89S52 Guido Eko Nugroho dan Sarifuddin Madenda. 14-20 Ekstraksi Tabel di Internet : dalam Format HTML dan PDF Detty Purnamasari, I Wayan Simri Wicaksana, Lintang Yuniar Banowosari 21-26 Arsitektur Mikroprosesor Berbasiskan Perangkat Lunak LatticeMico32 Sunny Arief Sudiro, Aditya Nugraha dan Zainuddin Al Bunjari 27-35 Prototype of Electronic Voucher Vending Machine Based on FPGA Priska Restu Utami dan Bheta Agus Wardijono 36-45 Aplikasi Panduan Calon Taruna POLRI Menggunakan Pemrograman Java Android Mohamad Saefudin 46-51 Alat Pendeteksi Level Zat Cair Sistem Digital Andika Widiyanto 52-57 Prosesor Intel Itanium Bintang Wiradjati, Caesar P. Herlambang 58-64 Prosesor Intel ® Core Duo Antony Wicaksono, Indra Ramdani Pratama STMIK JAKARTA STI&K Vol.11, Nomor:2 Desember 2012 PENGASUH JURNAL ILMIAH KOMPUTASI Pelindung: Prof. ES. Margianti, SE., MM Prof. Suryadi H.S., SSi., MM Drs. Agus Sumin, MMSI JURNAL ILMIAH KOMPUTASI Komputer & Sistem Informasi DAFTAR ISI Penanggung Jawab: Prof. Dr. Sarifuddin Madenda Dewan Redaksi/Reviewer: 1. 2. 3. 4. 5. 6. 7. 8. Prof. Dr. Didin Mukhodim Drs. Tjahjo Dwinurti T., MM Prof. Dr. Sarifuddin Madenda Dr. Lussiana ETP Hj. Latifah, SSi., MMSI Rosalina Lokolo, SE., MM Eko Hadiyanto, SSi., MMSI Dr. Pipit Dewi Arnesia Pimpinan Pelaksana Redaksi : Ire Puspa Wardhani, SKom., MM Editor dan Layout: 1. Dr. Sunny Arief Sudiro 2. Dr. Bheta Agus Wardijono 3. Yudi Irawan Chandra, SKom., MMSI Sekretariat Redaksi 1. Sahni Damerianta P, SKom., MMSI (Koordinator) 2. Don Elsyafitra, SKom (Pj. Web) 3. Maria Sri Wulandari, (Pj. Adm) Adm dan Sirkulasi : 1. Edi Pranoto, SE., MM 2. Fitri Sjafrina, SKom., MMSI 3. Sunarto Usna, Drs., MMSI Alamat Redaksi : Kampus STMIK Jakarta STI&K Jln. BRI Radio Dalam Kebayoran Baru Jakarta Selatan Telp. (021) 7397973, 7210722 Fax. (021) 7210720 Email : info@ stmik-jakarta.ac.id ISSN Nomor 1412-9434 Volume 11 Nomor 2 Tahun 2012 Redaksi menerima sumbangan naskah berupa artikel, hasil penelitian, atau karya ilmiah yang belum pernah dan tidak akan dipublikasikan di media lain. Naskah sudah diterima redaksi selambat-lambatnya tanggal 10 sebelum bulan penerbitan. 1-13 Rancang Bangun Perangkat Keras Sistem Informasi Lahan Parkir Secara Waktu Nyata Berbasis Mikrokontroller AT89S52 Guido Eko Nugroho dan Sarifuddin Madenda. 14-20 Ekstraksi Tabel di Internet : dalam Format HTML dan PDF Detty Purnamasari, I Wayan Simri Wicaksana, Lintang Yuniar Banowosari 21-26 Arsitektur Mikroprosesor Berbasiskan Perangkat Lunak LatticeMico32 Sunny Arief Sudiro, Aditya Nugraha dan Zainuddin Al Bunjari 27-35 Prototype of Electronic Voucher Vending Machine Based on FPGA Priska Restu Utami dan Bheta Agus Wardijono 36-45 Aplikasi Panduan Calon Taruna POLRI Menggunakan Pemrograman Java Android Mohamad Saefudin 46-51 Alat Pendeteksi Level Zat Cair Sistem Digital Andika Widiyanto 52-57 Prosesor Intel Itanium Bintang Wiradjati, Caesar P. Herlambang 58-64 Prosesor Intel ® Core Duo Antony Wicaksono, Indra Ramdani Pratama Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 Arsitektur Mikroprosesor Berbasiskan Perangkat Lunak LatticeMico32 Sunny Arief Sudiro, Aditya Nugraha dan Zainuddin Al Bunjari STMIK Jakarta STI&K, Jur. Teknik Elektro, Fak.Teknologi Industri, Universitas Gunadarma [email protected] Abstrak LatticeMico32 adalah mikroprosesor 32-bit soft core yang dibuat oleh Lattice Semiconductor yang dioptimasikan penggunaannya untuk FPGA (eld-programmable gate arrays). Arsitekturnya menggunakan Harvard Architecture, dimana instruksi dan bus data diletakkan terpisah. LatticeMico32 menggunakan RISC untuk set instruksinya yang memungkinkan untuk mengirimkan set instruksi yang lebih simple dan performa lebih cepat. Sebagai hasilnya, prosesor ini mengkonsumsi daya sumber lebih rendah untuk melakukan kinerja yang dibutuhkan untuk aplikasi. : architecture, microprocessor, CPU, WISHBONE, instruction set, commands, registers, Kata Kunci 1 Pendahuluan LatticeMico32 adalah mikroprosesor 32-bit soft core yang dibuat oleh Lattice Semiconductor yang dioptimasikan penggunaannya untuk FPGA (eld-programmable gate arrays). LatticeMico ini bersifat opensource [1], dimana pengguna bisa melakukan perubahan-perubahan ke arsitektur prosesor LatticeMico sesuai dengan device yang akan digunakan. Arsitekturnya menggunakan Harvard architecture, dimana instruksi dan bus data diletakkan terpisah. Dengan set instruksi dan bus data yang terpisah, prosesor ini mampu mengeksekusi instruksi dan data memori secara bersamaan hanya menggunakan satu cycle. LatticeMico32 menggunakan RISC (Reduced instruction set computing) untuk set instruksinya yang memungkinkan untuk mengirimkan set instruksi yang lebih simple dan performa lebih cepat. Sebagai hasilnya, prosesor ini mengkonsumsi daya sumber lebih rendah untuk melakukan kinerja yang dibutuhkan untuk aplikasi. LatticeMico32 mempunyai tur, antara lain: RISC load/store architecture, 32-bit data path, 32-bit xed-size instructions (semua instruktur berupa 32 bits, termasuk jump, call and branch instructions), 32 general purpose registers, Up to 32 external interrupts, Set instruksi yang dapat diatur sendiri, Optional congurable caches, Optional pipelined memories, Dual Wishbone memory interfaces (one read-only instruction bus, one read-write data/peripheral bus), Memory mapped I/O, 6 stage pipeline. 2 Pipeline Architecture LatticeMico32 menggunakan 32-bit, 6-stage pipeline seperti yang terlihat pada gambar diatas. Pipeline ini saling bertautan dan mengelilingi satu sama lain. Bypass logic bertanggung jawab untuk mengirim hasil kembali melalui pipeline, sehingga instruksi-instruksi tersebut dapat dieksekusi dalam satu cycle (single-cycle). Saling bertautan maksudnya adalah mendeteksi hambatan ketika proses read-after-write terjadi dan menunda pipeline sampai hambatan tersebut selesai diatasi. Enam pipeline stage tersebut antara lain : • Address Alamat dari instruksi yang akan dieksekusi dihitung dan dikirim ke cache instruksi. 21 Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 • Fetch Instruksi nya dibaca melalui mem- ports, timer 32-bit, sebuah DMA controller, ori. general-purpose I/O (GPIO), sebuah I2C master controller, serial peripheral interface (SPI), • Decode Instruksi didekode, dan operan dan UART. Plug pada peripheral secara dramayang ada diambil dari le register atau di- tis mempercepat desain sistem, menghilangkan ambil dari pipeline sebelumnya. kebutuhan untuk code-custom dari banyak fungsi • Execute Operasi yang sesuai dengan in- perangkat keras umum jika akan membangun sebuah sistem Mico32 berbasis embedded system struksi tadi dijalankan. Untuk instruksi [2]. sederhana seperti penjumlahan atau operasi logika, akan berhenti di proses ini, dan hasilnya dapat dikirimkan kembali ke proses awal. 4 Register Architecture • Memory Untuk instruksi kompleks seperti Ada dua macam register yang disediakan, load, store, perkalian, shift diperlukan General-Purpose Registers dan Control and Stastage eksekusi tambahan. tus Register. • Writeback Hasil yang diproduksi oleh instruksi dikirim balik ke le register. 4.1 General-Purpose Registers LatticeMico32 memiliki tur 32-bit register dengan aturan: • Berdasarkan kesepakatan, register 0 (r0) harus selalu memegang nilai 0, dan ini diperlukan untuk operasi yang tepat oleh kedua assembler LatticeMico32 dan C compiler. Pada saat dimulai, nilai 0 dalam r0 tidak terprogram, sehingga harus diinisialisasi untuk memuat r0 dengan nilai 0. Gambar 1: Blok diagram Latticemico32. Gambar 1 memperlihatkan blok diagram dari LatticeMico32, dimana terjadinya enam tahap pipeline tersebut secara berurutan mengikuti alur process dari blok diagram tersebut. 3 LatticeMico32 Interface Sesuai dengan pendekatan open source, Lattice memilih antar muka Wishbone untuk Mico32 dan telah mengumumkan berbagai peripheral yang tersedia, termasuk memory controllers, asynchronous SRAM, onchip block memory, I/O • Register 1 sampai 28 adalah benar-benar untuk tujuan umum dan dapat digunakan sebagai sumber atau register tujuan untuk instruksi apapun. Setelah reset, nilai-nilai dalam semua register tidak terdenisi. • Register 29 (ra) digunakan oleh instruksi call untuk menyimpan return address namun ini tujuannya umum. • Register 30 (ea) digunakan untuk menyimpan nilai Program Counter (PC) ketika pengecualian terjadi, sehingga tidak boleh digunakan oleh user-level program. • Register 31 (ba) menyimpan nilai Program Counter (PC) saat breakpoint atau watchpoint exception terjadi, sehingga tidak boleh digunakan oleh user-level program. 22 Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 4.2 Control and Status Register Control dan status register merupakan register yang berfungsi untuk mengatur control dari processor dan membantunya dalam menjalankan instruksi. Berikut merupakan Control dan status register, • PC - Program Counter CSR PC adalah register 32-bit yang berisi alamat dari instruksi yang sedang dieksekusi. Karena semua instruksi yang empat byte lebar, dua bit paling signikan dari PC selalu nol. Setelah reset, nilai CSR PC h00000000. • EID - ID Exception CSR EID adalah nilai 3-bit yang menunjukkan apa yang menyebabkan eksekusi program berhenti. Nilainilai dan peristiwa yang sesuai adalah sebagai berikut: 0 Reset 1 Breakpoint Exception 2 Instruction Bus Error 3 Watchpoint Exception 4 Data Bust Error 5 Divide-by-zero 6 Interrupt 7 System Call • IP - Interrupt Pending CSR IP berisi pending bit untuk masing-masing dari 32 interupsi. Sebuah pending bit diset ketika interrupt yang sesuai dengan permintaan dinyatakan low. Bit 0 bersesuaian menginterupsi 0. Bit dalam CSR IP dapat dihapus dengan menulis 1 dengan instruksi wcsr. Menulis 0 tidak akan memiliki efek. Setelah reset, nilai CSR IP h00000000. • ICC - Instruksi Control Cache CSR ICC menyediakan bit kontrol bahwa ketika ditulis dengan nilai apapun, menyebabkan isi dari cache instruksi seluruh untuk menjadi tidak absah. • DCC - Data Control Cache CSR DCC menyediakan bit kontrol yang ketika ditulis dengan nilai apapun, menyebabkan isi dari cache seluruh data akan batal. • CC - Counter Siklus CSR CC adalah register 32-bit optional yang ditambah satu pada setiap siklus clock. Hal ini dapat digunakan untuk sekuens prole ghost code. • CFG - Conguration CFG CSR merincikan kongurasi-kongurasi contoh tertentu dari sebuah prosesor LatticeMico32. • EBA - Exception Basis Address CSR EBA menetapkan alamat dasar dari handler pengecualian. Setelah reset, nilai EBA diatur ke EBA_RESET. Jika menulis nilai ke register di mana byte yang rendah tidak nol, maka akan dibaca kembali semua nol. • IE - Interrupt Enable IE CSR berisi satu ag-bit, IE, yang menentukan apakah interupsi diaktifkan. Flag ini memiliki prioritas terhadap CSR IM. Selain itu, ada dua bit, BIE dan EIE, yang digunakan 5 Memory Architecture untuk menunjukkan nilai eld IE ketika baik breakpoint atau pengecualian lain ter- Pada bagian ini akan dibahas mengenai arsitekjadi. Setiap interupsi terkait dengan sedikit tur memori. mask (IE bit) diindeks dengan interupsi masing-masing. Setelah reset, nilai IE CSR 5.1 Address Space h00000000. Untuk LatticeMico32 prosesor dengan cache, • IM Interrupt Mask CSR IM berisi bit en- bagian dari ruang alamat yang disimpan di cache able untuk masing-masing 32 interupsi. Bit dapat dikongurasi secara terpisah baik untuk in0 bersesuaian menginterupsi 0.Supaya se- struksi dan data cache. Ini memungkinkan ukubuah interrupt akan dibangkitkan, baik en- ran dari cache tag RAM menjadi sekecil mungkin able bit dalam register ini dan ag IE dalam (semakin kecil nilai cache address, semakin kecil CSR IE harus diset ke 1. Setelah reset, nilai tag RAM). Gambar 2 menggambarkan beberapa CSR IM h00000000. kemungkinan kongurasi. Biasanya, bagian dari 23 Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 ruang alamat yang disimpan di cache digunakan untuk menyimpan kode atau data program, dengan komponen I / O yang dipetakan ke dalam alamat uncacheable. jumlah sumber daya FPGA digunakan. Instruksi yang berakhir dengan huruf "i" menggunakan nilai langsung bukan register. Instruksi yang berakhir dengan "hi" menggunakan 16-bit langsung dan high 16 bit dari register. Instruksi yang berakhir dengan huruf "u" menangani data sebagai unsigned integer. Gambar 2: Cacheable Address. 5.2 Endianness Prosesor LatticeMico32 adalah big-endian, yang berarti bahwa multi-byte objek, seperti half-words and words, tersimpan dengan most signicant byte pada lowest address. 5.3 Gambar 3: Stack Layout Stack layout Gambar 3 menunjukkan tata letak konvensional frame stack. Stack bertambah ke arah memori lebih rendah karena data dimasukkan ke atasnya. Stack pointer (sp) menunjuk ke lokasi yang tidak digunakan pertama, dan frame pointer (fp) menunjukkan lokasi pertama kali yang digunakan ketika frame aktif. Dalam banyak kasus, sebuah compiler mungkin dapat menghilangkan frame pointer, karena data sering dapat diakses dengan menggunakan perpindahan negatif dari stack pointer, membebaskan frame pointer untuk digunakan sebagai register general-purpose. 6 Instruction Set Categories LatticeMico32 mendukung berbagai instruksi untuk aritmatika, perbandingan, data logika, pergerakan data, dan kontrol program. Tidak semua instruksi yang tersedia dalam semua kongurasi prosesor. Support untuk beberapa jenis instruksi dapat dihilangkan untuk mengurangi 6.1 Arithmetic Set instruksi meliputi 32-bit operasi standar aritmatika integer. Dukungan untuk perkalian dan instruksi pembagian adalah opsional. • Add: add, addi • Subtract: sub • Multiply: mul, muli • Divide and modulus: divu, modu Terdapat juga instruksi untuk sign-extend byte dan setengah kata data untuk ukuran kata. Dukungan untuk instruksi ini adalah opsional. • Sign-extend: sextb, sexth 6.2 Logic Set instruksi meliputi 32-bit operasi bitwise standar logika. Sebagian besar instruksi logika juga memiliki 16-bit langsung atau high 16-bit versi. • AND: and, andi, andhi 24 Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 • OR: or, ori, orhi • Exclusive-OR: xor, xori • Complement: not • NOR: nor, nori • Exclusive-NOR: xnor, xnori 6.3 • Berpindah antar general-purpose register: mv • Memindahkan immediate ke high 16 bits register: mvhi • Tulis dan baca control dan status register: rcsr, wcsr Comparison Set instruksi memiliki instruksi comparison dasar dengan register-to-register dan register-to-16-bit- 6.6 Program Flow Control immediate dan signed dan unsigned comparison. Instruksi program ow control meliputi branches, Instruksi akan kembali 1 jika bernilai true dan 0 function dan exception calls, dan return. ketika false. • Equal: cmpe, cmpei • Not equal: cmpne, cmpnei • Greater: cmpg, cmpgi, cmpgu, cmpgui • Greater or equal: cmpge, cmpgei, cmpgeu, cmpgeui 6.4 Shift Set instruksi berguna untuk menggeser ke kiri dan kekanan suatu data yang terdapat dalam general-purpose registers. Jumlah dari bit yang akan di geser akan di bawa langsung menuju register atau 5-bit immediate. • Left shift: sl, sli • Right shift: sr, sri, sru, srui 6.5 6.5 Data Transfer • Unconditional branch: b, bi • Branch if equal: be • Branch if not equal: bne • Branch if greater: bg, bgu • Branch if greater or equal: bge, bgeu • Function call and return: call, calli, ret • System call: scall • Return from exception: eret • Software breakpoint and return: bret break, Data transfer meliputi instruksi yang dapat memindahkan data byte, half-word, dan ukuran kata antara memory dan register. Alamat memory merupakan hasil dari penjumlahan general- 7 Penutup purpose register dan signed 16-bit immediate, sebagai contoh (r2+32). LatticeMico32 ini bersifat open source yang • Load register from memory: lb, lbu, lh, lhu, memungkinkan penggunanya mengubah arsitektur dari Mico32 ini sesuai dengan device yang lw akan digunakan, dengan tambahan WISHBONE • Store register to memory: sb, sh, sw Ter- interface processor ini dapat ditambahkan dendapat juga instruksi untuk memindahkan gan perangkat memori luar ataupun peripheral data dari satu register ke yang lainnya, tambahan. LatticeMico32 memiliki dua register, termasuk general-purpose dan kontrol dan yaitu general-purpose register dan control and status register. status register. 25 Jurnal Komputasi, Volume 11 No: 2 Desember 2012 ISSN: 1412-9434 Daftar Pustaka [3] Anonymous, LatticeMico32. http://en.wikipedia.org/wiki/LatticeMico32, [1] Morris K., Soft Core War LatticeMico32 20012. Opens the Field, FPGA and Structured ASIC, September 26, 2006. [2] Minev, Petar B; Kukenska, Valentina S; [4] Anonymous, LatticeMico32 Implementation Of Soft-Core Processors In Processor Reference Manual. FPGAs, International Scientic Conference, http://milkymist.org/socdoc/lm32_archman.pdf, UNITECH, Gabrovo, November 2007 2009 26