Modul Praktikum
FIELD PROGRAMABLE GATE ARRAY Universitas Gunadarma
By Laboratorium Sistem Komputer Lanjut
Universitas Gunadarma
Daftar isi : BAB 1 : Schematic ....................................................................................... 5 1.1.
Rancangan Schematic ..................................................................... 6
1.2.
Gerbang Logika .............................................................................. 7
1.2.1. Gerbang AND .................................................................................. 7 1.2.2. Gerbang OR .................................................................................... 8 1.2.3. Gerbang NOT .................................................................................. 8 1.2.4. Gerbang NAND ............................................................................... 9 1.2.5. Gerbang NOR ..................................................................................10 1.2.6. Gerbang XOR ..................................................................................10 1.2.7. Gerbang XNOR ............................................................................... 11 1.2.8. Half Adder ....................................................................................... 11 1.2.9. Full Adder ........................................................................................ 12 1.2.10. Half Substractor .............................................................................. 13 1.2.11.
Full Substractor .................................................................. 13
BAB 2 : Verilog ............................................................................................ 26 2.1. Sejarah Verilog ....................................................................................... 27 2.1.1.
Pemrograman Verilog ................................................................... 27
2.2. Simulasi ................................................................................................... 28 2.3. Sintesis ..................................................................................................... 30 2.4. Verilog HDL Syntax and Semantics ..................................................... 30 2.5. Identifier ..................................................................................................30 2.6. Angka dalam Verilog ............................................................................. 31 2.6.1. Angka Integer .................................................................................. 32 2.6.2. Strings .............................................................................................. 32 2.7. Operator Verilog .................................................................................... 32 2.7.1. Operator Arithmatic ....................................................................... 32 2.7.2. Operator Relational ........................................................................ 33 2.7.3. Operator Relational ........................................................................ 33 2.7.4. Operator Logika ..............................................................................34 2.7.5. Operator Bit-wise ............................................................................ 34
1
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.7.6. Operator Reduksi ........................................................................... 34 2.7.7. Operator Shift (pergeseran) ........................................................... 35 2.7.8. Operator Concatenation (rangkaian) ........................................... 35 2.7.9. Operator Konditional ..................................................................... 35 2.7.10. Operator Precedence ...................................................................... 36 2.8. Model Verilog Behavorial ..................................................................... 36 2.8.1. Tingkat Abstraksi HDL Verilog .................................................... 36 2.8.2. Blok Prosedural .............................................................................. 36 2.9. Statements (pernyataan) ....................................................................... 37 2.9.1. Pernyataan Sequential group ........................................................ 37 2.9.2. Pernyataan Parallel group ............................................................. 37 2.9.3. Pernyataan Kondisi (if – else) ........................................................ 37 2.9.4. Pernyataan Case ............................................................................. 38 2.9.5. Pernyataan perulangan .................................................................. 49
BAB 3 : VHDL ............................................................................................. 54 3.1. Mengenal VHDL .....................................................................................55 3.2. Library .................................................................................................... 57 3.3. Entity ....................................................................................................... 58 3.4. Ports ......................................................................................................... 59 3.5. Generics ................................................................................................... 60 3.6. Berkas ...................................................................................................... 60 3.7. Packages (Paket) ..................................................................................... 62 3.8. Loops (Perulangan) ................................................................................ 64 3.9. For ............................................................................................................ 64 3.9.1. Exit ................................................................................................... 65 3.9.2. Next ...................................................................................................65 3.10.
Basic Variable Types and Operators ............................................ 66
3.10.1. Constants ......................................................................................... 66 3.10.2. Signals .............................................................................................. 67 3.10.3. Variables .......................................................................................... 67 3.10.4. Boolean Operators .......................................................................... 67 3.10.5. Arithmetic operators ...................................................................... 68 2
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.10.6. Comparison operators .................................................................... 68 3.10.7. Shifting Functions ........................................................................... 69 3.10.8. Concatenation .................................................................................. 69 3.11.
Type data dalam VHDL ................................................................. 69
3.11.1. Tipe Data Standar .......................................................................... 70 3.11.2. Tipe Data Pengguna ........................................................................ 70 3.12.
Process dalam VHDL ..................................................................... 71
3.13.
Architecture dalam VHDL .............................................................73
3.14.
Bagian Pendeklarasian Architecture ............................................ 74
3.15.
Bagian Pernyataan Architecture ................................................... 75
BAB 4 : Integrated Circuit .......................................................................... 94 4.1. Integrated Circuit ................................................................................... 95 4.2. Counter Secara Umum .......................................................................... 96
BAB 5 : PS/2.................................................................................................. 108 5.1. PS/2 Keyboard ........................................................................................ 109 5.2. Scan Code ................................................................................................ 111 5.2.1. Sistem Bilangan Biner ..................................................................... 113
BAB 6 : LCD ................................................................................................. 124 6.1. LCD Karakter .........................................................................................125 6.2. Scan Code ................................................................................................ 125 6.3. Pemetaan Memori .................................................................................. 127 6.4. Set Instruksi ............................................................................................ 132
BAB 7 : VGA ................................................................................................ 143 7.1. Video Graphic Array ............................................................................. 144 7.1.1. Resolusi VGA ................................................................................... 146 7.1.2. Jenis-jenis Konektor ....................................................................... 157
BAB 8 : Studi Kasus ..................................................................................... 158 8.1. Studi Kasus I ........................................................................................... 159 3
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
8.2. Studi Kasus II ......................................................................................... 159 8.3. Studi Kasus III ........................................................................................ 160 8.4. Studi Kasus IV ........................................................................................ 160 8.5. Studi Kasus V ......................................................................................... 161 8.6. Studi Kasus VI ........................................................................................ 161
4
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 1
SCHEMATIC
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Desain Schematic pada FPGA Praktikan Dapat Merancang Desain Schematic pada Pemrograman FPGA Praktikan Dapat Memahami Penggunaan Gerbang Logika dalam Desain Schematic
II.
Dasar Teori Pengenalan Desain Schematic Pengenalan Perancangan Desain Schematic Aplikasi Rancangan Desain Schematic
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
5
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
BAB 1 SCHEMATIC
1
1.1 Rancangan Schematic Suatu rancangan rangkaian dapat diwujudkan ke dalam FPGA dengan cara menggambar skema rangkaian tersebut. Penggambaran skema rangkaian gambar tersebut dapat dilakukan pada perangkat lunak (software) yang biasanya disertakan dalam setiap pembelian FPGA. Misalnya software Quartus dan Max+Plus untuk FPGA milik Altera. Sedangkan FPGA buatan Xilinx dengan perangkat lunaknya yakni ISE WebPack. Selanjutnya, skema rangkaian digambar dengan cara membuat tiap komponen serta jalur-jalur yang menghubungkan komponen-komponen tersebut menjadi satu kesatuan. Hingga akhirnya tercipta gambar skema rangkaian yang utuh. Metode ini terbilang mudah dan efektif terutama bila dipakai untuk skema rangkaian yang sederhana serta tidak memiliki jalur-jalur yang rumit.
Gambar 1.1 Rangkaian yang dibuat dengan Metode Schematic Skema desain schematic merupakan seperangkat sistem yang memungkinkan Anda untuk
menangkap
struktur
desain
baik
sebagai
deskripsi
datar
atau
hirarkis
seperangkat komponen, dan konektivitas antara komponen-komponen ini. Kemudian Anda dapat menggunakan deskripsi ini untuk mendorong pelaksanaan dan verifikasi alat. Anda membuat desain skematis menggunakan Schematic Editor. Schematics dapat
6
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
single-level
(flat)
atau
multi-tingkat
(hirarkis).
Schematics
dapat
ditarik
pada
beberapa "lembar" dan ukuran apapun. 1.2 Gerbang Logika Gerbang logika atau sering juga disebut gerbang logika Boolean merupakan sebuah sistem pemrosesan dasar yang dapat memproses input-input yang berupa bilangan biner menjadi sebuah output yang berkondisi yang akhirnya digunakan untuk proses selanjutnya. Tegangan yang digunakan dalam gerbang logika adalah TINGGI atau RENDAH. Tegangan tinggi berarti 1, sedangkan tegangan rendah berarti 0. Gerbang logika dapat mengkondisikan input - input yang masuk kemudian menjadikannya sebuah output yang sesuai dengan apa yang ditentukan olehnya. Terdapat tiga gerbang logika dasar, yaitu : gerbang AND, gerbang OR, gerbang NOT. Ketiga gerbang ini menghasilkan empat gerbang berikutnya, yaitu : gerbang NAND, gerbang NOR, gerbang XOR, gerbang XAND. 1.2.1 Gerbang AND Gerbang AND digunakan untuk menghasilkan logika 1 jika semua masukan mempunyai logika 1, jika tidak maka akan dihasilkan logika 0
Gambar 1.2 : Gerbang Logika AND dan Tabel Kebenaran AND Pernyataan Boolean untuk Gerbang AND A . B = Y (A and B sama dengan Y )
7
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1.2.2 Gerbang OR Gerbang OR adalah gerbang dimana salah satu atau semua masukan; keluaran terjadi bila salah satu atau semua masukan ada. Gerbang OR akan memberikan keluaran 1 jika salah satu dari masukannya pada keadaan 1. jika diinginkan keluaran bernilai 0, maka semua masukan harus dalam keadaan 0
Gambar 1.3 : Gerbang Logika OR dan Tabel Kebenaran OR 1.2.3 Gerbang NOT Gerbang NOT adalah gerbang yang mempunyai sebuah input dan sebuah output. Gerbang NOT berfungsi sebagai pembalik (inverter), sehingga output dari gerbang ini merupakan kebalikan dari inputnya.
8
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 1.4 Gerbang Logika NOT dan Tabel Kebenaran NOT 1.2.4 Gerbang NAND Gerbang NAND akan mempunyai keluaran 0 bila semua masukan pada logika 1. sebaliknya jika ada sebuah logika 0 pada sembarang masukan pada gerbang NAND, maka keluaran akan bernilai 1.
Gambar 1.5 Gerbang Logika NAND dan Tabel Kebenaran NAND
9
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1.2.5 Gerbang NOR Gerbang NOR akan memberikan keluaran 0 jika salah satu dari masukannya pada keadaan 1. jika diinginkan keluaran bernilai 1, maka semua masukannya harus dalam keadaan 0.
Gambar 1.6 Gerbang Logika NOR dan Tabel Kebenaran NOR 1.2.6 Gerbang XOR Gerbang XOR (dari kata exclusive OR) akan memberikan keluaran 1 jika masukanmasukannya mempunyai keadaan yang berbeda.
Gambar 1.7 : Gerbang Logika XOR dan Tabel Kebenaran XOR
10
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1.2.7 Gerbang XNOR Gerbang XNOR (dari kata exclusive NOR) akan memberikan keluaran 0 jika masukan-masukannya mempunyai keadaan yang berbeda
Gambar 1.8 : Gerbang Logika XOR dan Tabel Kebenaran XOR
1.2.8 Half Adder Half Adder Merupakan rangkaian elektronik yang bekerja melakukan perhitungan penjumlahan dari dua buah bilangan binary, yang masing-masing terdiri dari satu bit. Rangkaian ini memiliki dua input dan dua buah output, salah satu outputnya dipakai sebagai tempat nilai pindahan dan yang lain sebagai hasil dari penjumlahan.
11
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 1.9 : Rangkaian Half Adder dan Tabel Kebenarannya
1.2.9 Full Adder Full Adder merupakan rangkaian elektronika yang menjumlahkan dua bilangan yang telah dikonversikan menjadi bilangan-bilangan biner. Masing-masing bit pada posisi yang sama saling dijumlahkan. Full Adder sebagai penjumlah pada bit-bit selain yang terendah. Full Adder menjumlahkan dua bit input ditambah dengan nilai Carry-Out dari penjumlahan bit sebelumnya. Output dari Full Adder adalah hasil penjumlahan (Sum) dan bit kelebihannya (carry-out). Blok diagram dari sebuah full adder diberikan pada gambar di bawah.
Gambar 1.10 : Rangkaian Full Adder dan Tabel Kebenarannya
12
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1.2.10 Half Substractor Half subtractor adalah rangkaian pengurangan sistem bilangan biner yang paling sederhana, karena hanya dapat digunakan untuk operasi pengurangan data bilangan biner sampai 1 bit saja. Rangkaian ini memiliki 2 terminal input (A dan B) dan 2 terminal output (DIFFERENCE dan BORROW).
Gambar 1.11 : Rangkaian Half Substractor dan Tabel Kebenarannya
1.2.11 Full Substractor Full subtractor adalah rangkaian yang digunakan untuk mengurangkan bilanganbilangan biner yang lebih dari 1 bit. Rangkaian ini terdiri dari 3 terminal input (A, B, dan Carry in) dan 2 terminal output (DIFFERENCE dan BORROW). Rangkaian full subtractor dibentuk dari 2 buah rangkaian pada half subtractor.
13
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 1.12 : Rangkaian Full Substractor dan Tabel Kebenarannya
14
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : Gerbang AND Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama GerbangAND lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
5. Klik new source -> ketik nama file namenya GerbangAND pilih Schematic -> klik next -> klik Finish -> pilih yes 6. Klik next -> pilih next lagi -> lalu Finish 7. Gambar desain schematic gerbang AND -> lalu save 8. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run -> pilih yes
15
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
10. Isikan LOC pin seperti gambar berikut:
11. Klik kanan pada Implement Design lalu pilih Run 12. Klik tanda + pada Generate Programming File -> pilih Configure Device (iMPACT) klik kanan lalu Run 13. Pada tab iMPACT klik Finish 14. Pilih gerbangand.bit klik Open -> Bila ada tanda warning klik Ok 15. klik Bypass -> lalu klik Bypass lagi 16. pada tab Xilink Web Talk Dialog klik Decline -> pilih Ok 17. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
18. Lalu pilih OK sampai muncul tulisan Program Succeeded
16
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
TABEL KEBENARAN GERBANG AND, OR, NOT :
KESIMPULAN:
Ikuti Langkah-langkah seperti pada Gerbang And untuk mengerjakan Gerbang Nand, Nor, Xor, Xnor, Half Adder, Full Adder, Half Substractor, dan Full Substractor.
17
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 2 : Gerbang NAND, NOR, XOR, XNOR
KESIMPULAN:
18
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
19
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 3 : Half Adder
KESIMPULAN:
20
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 4 : Half Substractor
KESIMPULAN:
21
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 5 : Full Adder
KESIMPULAN:
22
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 6 : Full Substractor
KESIMPULAN:
23
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I : Hasil Output :
Program Mandiri II : Hasil Output :
24
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri III : Hasil Output :
25
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 2
VERILOG
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Pemrograman Verilog pada FPGA Praktikan Dapat Merancang Program Verilog pada Pemrograman FPGA Praktikan Dapat Memahami Penggunaan Gerbang Logika dalam Pemrograman Verilog
II.
Dasar Teori Pengenalan Program Verilog Merancang Desain Program menggunakan Verilog Aplikasi Perancangan Program Verilog
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
26
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
BAB 2 VERILOG
2
2.1 Sejarah Verilog Verilog pada awalnya dimulai sebagai perangkat lunak yang memiliki bahasa dengan model perangkat keras Gateway Design Automation Inc sekitar tahun 1984. Dari rumor yang beredar, Bahasa ini dirancang dengan mengambil fitur dari bahasa HDL paling popular pada waktu itu, yang disebut Hilo dan juga dari bahasa komputer tradisional seperti C. Verilog simulator, pertama kali digunakan pada tahun 1985 dan diperpanjang substansialnya melalui pelaksanaannya pada tahun 1987. Verilog simulator pertama adalah Verilog-XL, yang menambahkan beberapa fitur salah satunya yang terkenal adalah "XL algoritma" yang merupakan metode yang sangat efisien untuk melakukan simulasi gerbangtingkat. Pada akhir 1990, Cadence Design System, yang pada saat itu membuat proses film tipis simulator, memutuskan untuk membentuk Gateway Sistem otomatis. Yang saat ini menjadi pemilik bahasa Verilog, baik sebagai bahasa atau sebagai simulator. Pada saat yang sama, Synopsys memasarkan topdown desain metodologinya, menggunakan Verilog. Ini adalah kombinasi yang kuat pada sekitar tahun 1990-an. Walaupun standardisasi tekanan pada akhirnya menyebabkan industri bergeser ke bahasa VHDL.
2.1.1 Pemrograman Verilog Verilog adalah sebuah bahasa yang termasuk HARDWARE DESCRIPTION LANGUAGE (HDL). Dimana bahasa yang digunakan untuk menggambarkan sistem digital pada suatu perangkat keras. Verilog seperti bahasa deskripsi perangkat keras lainnya, memungkinkan desainer untuk merancang sebuah desain dalam dua
metodologi, yaitu
Bottom-up dan top-down metodologi.
Bottom-Up Design Pada Bottom-Up, Setiap desain dilakukan pada level gerbang menggunakan gerbang dasar standar. Dengan meningkatnya kompleksitas desain rancangan digital saat ini dengan sistem baru yang terdiri dari mikroprosesor dengan kompleksitas ribuan transistor teknik ini hampir mustahil untuk dipertahankan.
27
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Top-Down Design top-down design gaya desain yang hamper selalu dipakai dari semua desainer program verilog. topdown
sesungguhnya memungkinkan pengujian desain awal,
mudah melakukan perubahan teknologi yang berbeda, memungkinkan sebuah desain sistem terstruktur dan menawarkan banyak keuntungan lain. Tapi sangat sulit untuk mengikuti murni desain top-down. Karena fakta ini sebagian besar programmer Verilog menggunakan desain campuran dari kedua metode, dan
menerapkan
beberapa elemen penting dari kedua desain. Verilog mendukung desain pada berbagai tingkat abstraksi yaitu: 1. Behavorial Level (Tingkat perilaku) Tingkat ini menggambarkan sebuah sistem menggunakan algoritma bersamaan (Perilaku). Tiap algoritma itu sendiri adalah berurutan, yang berarti terdiri dari satu set instruksi yang dilaksanakan satu demi satu. 2. Register-Transfer Level (RTL) Desain
menggunakan
Register-Transfer
level
menentukan
rangkaian dari operasi dan transfer data antara register.
karakteristik
Desain RTL berisi
kemungkinan waktu yang tepat. Operasi dijadwalkan untuk terjadi pada waktuwaktu tertentu. 3. Gate Level Dalam
tingkat
logika
karakteristik
dari
sistem
dijelaskan
oleh
logis
link dan sifat waktu sistem atau Semua sinyal diskrit sistem. Sistem hanya memiliki nilai-nilai logis tertentu ( `0 ',` 1', `X ',` Z `), Operasi yang dapat dimanfaatkan standar logika primitif (AND, OR, NOT dll
gerbang).
Menggunakan tingkat gerbang pemodelan mungkin bukan ide yang baik untuk setiap tingkat desain logika. Tingkat Gate kode yang dihasilkan oleh alat bantu seperti alat sintesis dan netlist ini digunakan untuk tingkat gerbang simulasi dan untuk backend.
28
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 3.1 Contoh desain alur rancangan program Verilog 2.2 Simulasi Simulasi adalah proses verifikasi karakteristik fungsional model pada setiap tingkat abstraksi.
Kami
menggunakan
simulator
untuk
mensimulasikan
Hardware
model. Untuk menguji apakah kode RTL memenuhi persyaratan fungsional spesifikasi dan melihat apakah semua blok RTL fungsional benar. Untuk mencapai ini kita perlu menulis testbench, yang menghasilkan CLK, reset dan tes yang diperlukan vektor
29
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.3 Sintesis Sintesis adalah proses di mana desain alat seperti compiler atau Synplify mengambil RTL di Verilog atau VHDL. Sintesis adalah alat pemetaan RTL untuk setiap program, juga melakukan minimal waktu analisis untuk melihat apakah desain yang dipetakan memenuhi persyaratan atau tidak. 2.4 Verilog HDL Syntax and Semantics Konvensi leksikal dasar yang digunakan oleh Verilog HDL serupa dengan yang di pemrograman bahasa C. contoh bahasa Verilog:
Gambar 2.2 Contoh desain alur rancangan program Verilog 2.5 Identifier Identifier adalah nama yang digunakan untuk memberikan suatu objek, misalnya mendaftar atau modul, nama sehingga dapat direferensikan dari tempat-tempat lain dalam deskripsi. Ciri-ciri Identifier:
30
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Identifier harus dimulai dengan sebuah karakter abjad atau menggaris bawahi karakter (a-z A-Z _)
Pengidentifikasi dapat mengandung huruf, angka karakter, dengan underscore, dan tanda dolar (az AZ 0-9 _ $)
Pengidentifikasi dapat berisi hingga 1024 karakter lama. Verilog HDL memungkinkan setiap karakter yang akan digunakan dalam suatu
pengenal dapat melarikan diri dari pengenal (tidak teridentifikasi). Lolos pengidentifikasi menyediakan sarana termasuk salah satu karakter ASCII dicetak dalam sebuah identifier (nilai desimal 33 melalui 126, atau 21 melalui 7E dalam heksadesimal). Hal-hal yang membuat karakter tidak teridentifikasi adalah:
Seluruh pengidentifikasi lolos oleh slash belakang ( \ ) karena dapat terdeteksi sebagai keterangan
Lolos identifikasi diakhiri dengan spasi, Karakter seperti koma, tanda kurung, dan titik koma menjadi bagian dari pengenal lolos kecuali didahului oleh spasi.
Mengakhiri lolos pengidentifikasi dengan spasi, kalau tidak karakter yang harus mengikuti pengenal dianggap sebagai bagian dari program. Hal-hal yang menyebabkan suatu program lolos dari identifikasi dapat terjadi.
Sehingga berhasil di check sintaks. Namun pada saat di Implementasi kemungkinan menjadi error. Contoh : karakter yang lolos atau tidak teridentifikasi: \486_up \Q~ \1,2,3 module \486 (q,\q~,d,clk,\reset*);
\reset*
2.6 Angka dalam Verilog Kita dapat menetapkan angka konstan dalam desimal, heksadesimal, oktal, atau biner format. Angka negatif direpresentasikan dalam 2's complement. Pada karakter underscore (_) harus digunakan di mana saja dalam nomor kecuali sebagai karakter pertama, di mana ia diabaikan.
31
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.6.1 Angka Integer Verilog HDL memungkinkan angka integer untuk ditetapkan sebagai:
Ukuran atau angka unsized (Unsized ukuran adalah 32 bit)
Dalam pf radix biner, oktal, desimal, atau heksadesimal
Kasus dan radix adalah digit hex (a, b, c, d, e, f) tidak peka
Spasi antara ukuran, radix dan nilai Sintaks: <size> '
Contoh angka integer:
Gambar 3.3 Contoh angka Integer 2.6.2 Strings String adalah deretan karakter yang dilingkupi oleh tanda kutip ganda dan semua terdapat pada satu baris. String digunakan sebagai Operand dalam ungkapan yang digunakan sebagai urutan delapan-bit nilai ASCII, dengan sebuah delapan-bit nilai ASCII mewakili satu karakter. Verilog tidak menyimpan string penghentian karakter. String dapat dimanipulasi dengan menggunakan standar operator. 2.7
Operator Verilog Berikut ini adalah operator yang digunakan dalam bahasa pemrograman Verilog :
2.7.1 Operator Arithmatic
32
Binary: +, -, *, /,% (modulus operator)
Unary: +, --
Pembagian integer memotong setiap bagian fraksional
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Hasil dari operasi modulus mengambil tanda operand pertama
Jika ada nilai bit operand adalah nilai yang diketahui x, maka seluruh hasil nilainya x
2.7.2 Operator Relational
a
a> b yang lebih besar daripada b
a <= b kurang dari atau sama dengan b
a> = b yang lebih besar dari atau sama dengan b
Hasilnya adalah nilai skalar
Jika relasi adalah palsu
1 jika hubungan benar
x jika salah satu dari Operand telah diketahui x bit
Catatan: Jika nilai x atau z, maka hasil tes itu palsu
2.7.3 Operator Relational
a === b a sama dengan b, termasuk x dan z
a! == b yang tidak sama dengan b, termasuk x dan z
a == b a sama dengan b, sehingga kemungkinan tidak diketahui
a! = b yang tidak sama dengan b, hasil kemungkinan tidak diketahui
Operand dibandingkan sedikit demi sedikit, dengan mengisi nol jika kedua Operand tidak memiliki panjang yang sama
Hasilnya adalah 0 (false) atau 1 (true)
Untuk == and! = Operator yang hasilnya adalah x, jika salah satu operand berisi nilai x atau z
Untuk === and! == Operator bit dengan x dan z yang dimasukkan dalam perbandingan dan harus cocok untuk hasil benar hasilnya selalu 0 atau 1
33
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.7.4 Operator Logika
! Logika negasi
& & Logis and
| | Logis atau
Ekspresi terhubung oleh & & and | | dievaluasi dari kiri ke kanan
Evaluasi berhenti segera setelah diketahui hasilnya
Hasilnya adalah nilai scalar: 0 jika relasi adalah False 1 jika relasi adalah True x jika salah satu dari Operand telah diketahui x bit
2.7.5 Operator Bit-wise
~ Negasi
& And
| Inklusif Or
^ Eksklusif Or
^ ~ Or ~ ^ eksklusif Nor
Perhitungan bit tidak diketahui, dengan cara sebagai berikut: ~x=x 0&x=0 1&x=x&x=x 1|x=1 0|x=x|x=x 0^x=1^x=x^x=x 0^~x=1^~x=x^~x=x
2.7.6 Operator Reduksi
34
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Pengurangan operator unary.
Mereka melakukan sedikit-operasi bit-wise pada satu operand untuk menghasilkan hasil bit tunggal.
Pengurangan NAND dan NOR unary operator beroperasi sebagai AND dan OR, tetapi dengan menegasikan output.
2.7.7
Unknown bit diperlakukan seperti yang dijelaskan sebelumnya. Operator Shift (pergeseran)
<< Left shift (pergeseran kekiri)
>> Right shift (pergeseran kekiri)
Operand kiri digeser oleh jumlah posisi bit yang diberikan oleh operand kanan.
Bit posisi yang ditinggalkan diisi dengan nol.
2.7.8 Operator Concatenation (rangkaian)
Concatenations dinyatakan menggunakan penjepit karakter (dan), dengan koma memisahkan ekspresi dalam Contoh: (a, b [3:0], c, 4'b1001) / / jika a dan c adalah 8-bit, memiliki hasil 24 bit
Angka konstan Unsized tidak diperbolehkan dalam concatenations
Pengulangan pengganda yang konstan dapat digunakan: (3 (a)) / / ini setara dengan (a, a, a)
Concatenations nested (rangkaian penggabungan) yang mungkin: (b, (3 (c, d))) / / ini setara dengan (b, c, d, c, d, c, d)
2.7.9
Operator Konditional Operator Konditional memiliki format seperti berikut: cond_expr? true_expr: false_expr
True_expr atau false_expr dievaluasi dan digunakan sebagai hasil tergantung pada apakah cond_expr mengevaluasi untuk benar atau salah Contoh : out = (enable)? data: 8'bz; / / Tri state buffer
35
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.7.10 Operator Precedence
2.8
Model Verilog Behavorial
2.8.1 Tingkat Abstraksi HDL Verilog
Behavioral Models: tingkat tinggi di mana perilaku pemodelan logika adalah model.
RTL Model: Logika mendaftar dimodelkan pada tingkat
Structural Model: Logika dimodelkan pada kedua tingkat mendaftar dan gerbang tingkat.
2.8.2
Blok Prosedural Kode perilaku Verilog adalah prosedur di dalam blok, tetapi ada pengecualian,
beberapa kode perilaku juga ada prosedur di luar blok. Kita bisa melihat hal ini secara rinci ketika kita membuat kemajuan. Ada dua jenis prosedural blok di Verilog:
Initial: Initial blok mengeksekusi hanya sekali pada waktu nol (mulai pada waktu pelaksanaan nol).
Always: always blok loop untuk mengeksekusi berulang kali, Dengan kata lain selalu dijalankan.
Example : initial dan always
36
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.9
Statements (pernyataan)
2.9.1 Pernyataan Sequential group
Kelompok beberapa pernyataan dilakukan bersama.
Menyebabkan pernyataan dievaluasi dalam secara berurutan (satu per satu waktu). Setiap waktu dalam kelompok-kelompok berurut relatif terhadap pernyataan sebelumnya. Penundaan dalam urutan menumpuk (setiap penundaan akan ditambahkan ke penundaan sebelumnya) Blok selesai setelah pernyataan terakhir di blok.
2.9.2
Pernyataan Parallel group
Kelompok beberapa pernyataan dilakukan bersama.
Menyebabkan pernyataan untuk dievaluasi secara paralel (pada saat yang sama). Timing dalam kelompok paralel mutlak ke awal kelompok. Blok selesai setelah pernyataan terakhir selesai
2.9.3
Pernyataan Kondisi (if – else) Pernyataan if – else mengendalikan pelaksanaan pernyataan lainnya. Dalam
bahasa pemrograman seperti c, jika - lain mengendalikan aliran program. if (kondisi) statements; if (kondisi) statements; else statements; if (kondisi) statements; else if (kondisi) statements; ................ ................ else statements; contoh : // Simple if statement 37
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
if (enable) q <= d; // One else statement if (reset == 1'b1) q <= 0;; else q <= d; // Nested if-else-if statements if (reset == 1'b0) counter <= 4'b0000; else if (enable == 1'b1 && up_en == 1'b1) counter <= counter + 1'b1; else if (enable == 1'b1 && down_en == 1'b1); counter <= counter - 1'b0; else counter <= counter; // Redundant code
2.9.4
Pernyataan Case Pernyataan Case adalah sebuah ekspresi untuk membandingkan serangkaian
kasus dan mengeksekusi pernyataan atau kelompok pernyataan yang terkait dengan yang pertama (kasus pencocokan)
Mendukung pernyataan Case satu atau beberapa pernyataan.
Kelompok pernyataan multiple memulai dan berakhir menggunakan kata kunci.
Contoh : case (<expression>) : <statement> : <statement> ..... default : <statement> endcase
38
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2.9.5
Pernyataan perulangan
Pernyataan Looping (perulangan) muncul di dalam sebuah blok prosedural saja, Verilog memiliki empat pernyataan perulangan seperti bahasa pemrograman lain:
Forever Repeat While For
Contoh : Forever : Mengeksekusi loop yang terus-menerus (loop tidak pernah berakhir) initial begin clk = 0; forever #5 clk = !clk; end Repeat : Mengeksekusi loop pernyataan yang berulang-ulang. if (opcode == 10) //perform rotate repeat (8) begin temp = data[7]; data = {data<<1,temp}; end While : Mengeksekusi loop sementara. loc = 0; if (data = 0) // example of a 1 detect shift value loc = 32; else while (data[0] == 0); //find the first set bit begin loc = loc + 1; data = data << 1; end For : looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi.
for (i=0;i<=63;i=i+1) ram[i] <= 0; // Inialize the RAM with 0
39
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : Gerbang AND Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama GerbangAND lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
5. Klik new source -> ketik nama file namenya GerbangAND pilih Verilog Module -> klik next -> masukan input dan outputnya seperti dibawah ini:
40
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
6. Klik next terus hingga Finish -> pilih yes 7. Klik next -> pilih next lagi -> lalu Finish 8. Ketik source code nya ->
AND ->
<- OR
9. lalu save 10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax pilih Run 11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run -> pilih yes 13. Isikan LOC pin seperti gambar berikut:
14. Klik kanan pada Implement Design lalu pilih Run 15. Klik tanda + pada Generate Programming File -> pilih Configure Device (iMPACT) klik kanan lalu Run
41
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
16. Pada tab iMPACT klik Finish 17. Pilih (- - - nama module- - -) .bit klik Open -> Bila ada tanda warning klik Ok 18. klik Bypass -> lalu klik Bypass lagi 19. pada tab Xilink Web Talk Dialog klik Decline -> pilih Ok 20. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
21. Lalu pilih OK sampai muncul tulisan Program Succeeded
TABEL KEBENARAN GERBANG AND, OR, NOT :
42
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
43
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Ikuti Langkah-langkah seperti pada Gerbang And, OR, Not untuk mengerjakan Gerbang Nand, Nor, Xor, Xnor, Half Adder, Full Adder, Half Substractor, dan Full Substractor. Percobaan 2 : Gerbang NAND, Nor, Xor, Xnor
KESIMPULAN:
44
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
45
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 3 : Half Adder
KESIMPULAN:
46
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 4 : Half Substractor
KESIMPULAN:
47
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 5 : Full Adder
48
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
Percobaan 6 : Full Substractor
49
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
50
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I : Source Code :
Hasil Output :
51
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri II : Source Code :
Hasil Output :
52
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri III : Source Code :
Hasil Output :
53
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 3
VHDL
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Pemrograman VHDL pada FPGA Praktikan Dapat Merancang Program VHDL pada Pemrograman FPGA Praktikan Dapat Memahami Penggunaan Gerbang Logika dalam Pemrograman VHDL
II.
Dasar Teori Pengenalan Program VHDL Merancang Desain Program menggunakan VHDL Aplikasi Perancangan Program VHDL
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
54
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
BAB 3 VHDL
3
3.1 Mengenal VHDL VHDL ( Very High Speed Integrated Hardwere Description Language ). Konsep serta syntax banyak diperlukan untuk mengerti bagaimana rancangan VHDL sebagai bagian dari pemrograman FPGA. Dalam kebanyakan kasus, keputusan memilih dan menggunakan kode VHDL daripada kode Verilog atau SystemC, sangat tergantung pada pilihan perancang itu sendiri dan lebih kepada ketersediaan software pendukung serta kebutuhan perusahaan. Lebih dari satu dekade, terjadi perdebatan panjang yang tak berkesudahan diantara komunitas pengguna VHDL dengan Verilog. Mereka berdebat mengenai kode mana yang terbaik untuk digunakan dan kode apa yang lebih lengkap dalam hal aturan penulisannya. Memang diantara kedua kode tersebut memiliki perbedaan yang cukup signifikan. Namun secara filosofi konsep, perbedaan dasar dari VHDL dengan Verilog adalah mengenai konteks dari kedua bahasa itu sendiri. Verilog berasal dari tradisi “bottom-up” yang telah sering digunakan dalam industri IC dalam hal rancangan dasar IC. Sedangkan kode VHDL dikembangkan lebih kepada persepektif “top-down”. Tentu saja, banyak perbedaan umum dan luas dalam konteks saat ini. Namun, secara jelas dan nyata, perbedaannya dapat terlihat pada syntax dasar dan metode dari kedua kode tersebut. VHDL adalah kemampuannya untuk menggunakan gabungan level dari model yang memiliki arsitektur yang berbeda seperti ditunjukkan sebagai berikut :
Gambar 3.1 Contoh: Arsitektur Model VHDL
55
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Hal tersebut memang bukanlah keunikan atau ciri khas VHDL. Namun, pada kenyataannya kode Verilog juga memiliki konsep sama walaupun hanya terdapat dalam sebuah “module”. Meskipun demikian, keungulan itu secara eksplisit didefinisikan dalam VHDL dan secara praktis digunakan bersama oleh rancangan multi-level dalam VHDL. Pembagian sebuah model ke dalam beberapa bagian juga merupakan keuggulan lain dari VHDL. Misalnya, bagian interface (dalam VHDL dikenal sebagai “entity’) dan bagian kelakuan atau behaviour (dalam VHDL dikenal sebagai “architecture”). Bagian-bagian tersebut adalah pendekatan praktis yang luar biasa untuk bentuk model yang memiliki multiple behaviour dalam sebuah interface. Selain itu bentuk model tersebut memungkinkan terjadi pertukaran dan implementasi multiple secara terus menerus. Hal inilah salah satu pembeda VHDL dengan Verilog. Entity merupakan salah satu contoh bentuk satu kesatuan dan terpisah dengan bagian yang lain. Untuk selengkapnya, beberapa uraian berikut akan menjelaskan tentang entity serta hal-hal yang terkait di dalamnya. Ada beberapa dasar-dasar serta teknik penulisan kode dalam VHDL. Beberapa diantaranya adalah entity, architcture, basic type variables and operator, decisions, loops, dsb. Terdapat pula berkas-berkas yang nantinya berkas ini dapat digunakan sewaktu-waktu untuk berbagai keperluan tanpa harus menulisnya ulang. Biasanya berkas ini langsung disertakan menjadi satu dalam sebuah library. Istilah library sendiri dikenal sebagai sekumpulan koleksi bermacam-macam berkas kode. Bila suatu berkas kode disimpan di dalam library maka berkas kode tersebut dapat digunakan serta dibagikan dengan rancangan yang lain.
56
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.2 Library Pada pemrograman dikenal pula istilah library atau pustaka yang biasa terdapat pada bahasa pemrograman yang lain seperti C atau header pada Pascal. Library berfungsi untuk memudahkan prorammer untuk menyelesaikan pekerjaannya karena dalam library tersebut terdapat fungsi-fungsi dan tipe data yang sudah didefinisikan sebelumnya untuk digunakan berulang-ulang. Di dalam library tersebut terdapat sub-tree yang disebut sebagai paket, diantaranya : LIBRARY IEEE : use IEEE.std_logic_1164.all; use IEEE.std_logic_textio.all; use IEEE.std_logic_arith.all;
57
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
use IEEE.numeric_bit.all; use IEEE.numeric_std.all; use IEEE.std_logic_signed.all; use IEEE.std_logic_unsigned.all; use IEEE.math_real.all; use IEEE.math_complex.all; LIBRARY STD : use STD.standard; use STD.textio; LIBRARY WORK : Paket yang didefinisikan oleh user sendiri, yang isinya terdiri dari tipe data, architecture dan behavioral. Isi paket tidak harus memenuhi syarat dan kesepakatan ieee. Paket tersebut dideklarasikan dengan cara : USE work.my_package.all;
3.3 Entity Entity memberikan arti tentang bagaimana sebuah bagian rancangan dideskripsikan di VHDL dalam hubungannya dengan model VHDL lain dan juga memberikan nama untuk model tersebut. Di dalam entity juga diperbolehkan untuk mendefinisikan beberapa parameter yang mengambil model menggunakan hierarki. Kerangka dasar untuk sebuah entity digambarkan sebagai berikut :
58
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
entity is …. entity ;
Misalkan sebuah entity diberi nama “test”, maka kerangka entity tersebut akan menjadi : entity test is end entity test; atau entity test is end test;
3.4Ports Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode sebagai berikut: port ( …list of port declarations… ); Deklrasi port ini mendefinisikan jenis dari koneksi dan arah yang sesuai. Misalnya, deklarasi port untuk sebuah input bit adalah 1, maka digambarkan sebagai berikut : in1 : in bit; port ( in1, in2 : in bit; out1 : out bit );
59
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Dengan menngunakan ports maka titik koneksi diantara entities akan berlangsung dengan efektif dalam hal proses koneksi entities satu sama lain. Selain itu, dengan menggunakan ports akan menjadikan sinyal yang ada menjadi efektif serta cocok digunakan dalam model VHDL.
3.5 Generics Jika sebuah contoh memiliki sebuah parameter, maka contoh tersebut dapat didefinisikan menggunakan generics. Deklarasi umum dari generics ditunjukan berikut: generic ( …list of generic declarations… ); Pada beberapa kasus dari generics, deklarasinya mirip dari sebuah constant dengan bentuk yang ditunjukkan sebagai berikut: param1 : integer := 4; Misalnya saja sebuah model yang memiliki 2 generics (gain(integer) dan time_delay(time)), keduanya dapat didefinisikan dalam sebuah entity sebagai berikut: generic ( gain : integer := 4; time_delay : time = 10 ns );
3.6
Berkas Selanjutnya ada 4 cara pembuatan berkas yang nantinya dapat disimpan dalam
library. Keempat cara tersebut adalah :
60
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1. Function 2. Packages 3. Components 4. Procedures Secara umum, gambaran dari keempat berkas tersebut yaitu:
Gambar 3.2 Contoh: Arsitektur Model VHDL Seperti terlihat pada gambar, keempat berkas tersebut biasanya menjadi satu dalam sebuah library. Selanjutnya, library tersebut akan digunakan dalam kode utama yang terdiri atas entity dan architecture. Inilah yang disebut rancangan bertingkat (hierarchial design) dalam VHDL. Fungsi utama dari berkas-berkas tersebut adalah untuk membuat efisien dan efektif dalam penulisan kode VHDL. Bayangkan bila tiap rangkaian dalam sebuah rancangan sistem harus dideklaraskan satu per satu. Hal itu tentu memerlukan resource yang banyak dan waktu yang lama. Belum lagi jika terdapat kesalahan. Maka proses pengecekan dan pemeriksaan kode juga butuh waktu yang tak sedikit. Oleh karena itu, dibuatlah berkasberkas sederhana untuk menghindari hal tersebut. Selain itu dengan mempelajari berkasberkas ini maka sebuah library dapat dibuat sesuai dengan kepentingan dan kebutuhan perancang sistem.
61
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.7
Packages (Paket) Bagian pertama berkas yang akan dibahas yaitu PACKAGES. Seperti terlihat pada
gambar di atas, packages merupakan bagian berkas yang luas karena bisa terdiri atas berkasberkas lain seperti component, funtion, dan procedures. Semua berkas yang terdapat dalam packages, termasuk berkas packages sendiri nantinya akan dikumpulkan menjadi satu dan disimpan dalam sebuah library. Sedangkan struktur untuk aturan penulisan packages yaitu: package name is …package header contents end package; package body name is … package body contents end package body; Seperti yang terlihat pada aturan penulisan, sebuah packages terdiri dari 2 bagian yaitu header dan body. Header adalah tempat untuk mendeklarasikan keseluruhan namanama berkas (baik function, procedures, atau component) yang diperlukan. Sementara body adalah tempat untuk menjabarkan lebih lanjut mengenai berkas-berkas yang tertulis di header. Perlu diingat bahwa antara haeder dan body packages haruslah memiliki nama yang sama. Sebagai contoh, berikut ada packages yang berisi function untuk logika yang sederhana. Bagian header packages tersebut dapat ditulis: package new_functions is function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit; end
Sedangkan untuk bagian body, yaitu tempat untuk menjabarkan lebih lanjut deklarasi pada header, dapat ditulis:
62
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
package body new_functions is function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit is begin return a and b and c and d and e and f and g and h and i and j; end; Bila antara bagian header dan body digabung menjadi satu, maka inilah yang disebut packages. Dan secara keseluruhan dapat ditulis berikut : package new_functions is function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit; end; package body new_functions is function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit is begin return a and b and c and d and e and f and g and h and i and j; end; end;
Selanjutnya packages dapat dijadikan satu untuk kemudian disimpan dalam library. Untuk bisa membuatnya demikian, perlu ditambahkan beberapa kode dalam penulisan VHDL nya, yakni menambahkan kalimat USE (USE work.my_package.all;) di kode utama VHDL itu. Syntaxnya sebagai berikut:
63
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
LIBRARY ieee; USE ieee.std_logic_1164.all; USE work.my_package.all; ENTITY… … ARCHITECTURE… …
3.8
Loops (Perulangan) 3.8.1 For Selain algoritma percabangan, di dalam VHDL juga dikenal algoritma lain yaitu
pengulangan. Pengulangan digunakan untuk menjalankan satu atau beberapa pernyatan sebanyak beberapa kali. Dengan kata lain, pengulangan dapat digunakan untuk menjalankan beberapa pernyataan hanya dengan menuliskan pernyataan tersebut satu kali saja. Untuk VHDL, algoritma pengulangan yang sering dipakai adalah pernyataan “for”. Aturan dasar untuk pernyataan “for” sebagai berikut: for loopvar in start to finish loop … loop statements end loop; Selanjutnya, algoritma pengulangan juga dapat digunakan untuk mencacah turun kemudian kembali lagi ke awal. Penulisannya sebagai berikut : for loopvar in start downto finish loop … loop statements end loop; Bentuk pengulangan dapat dijadikan satu dengan susunan nilai bit demi bit. Misalnya sebagai berikut :
64
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
signal a : std_logic_vector(7 downto 0); for i in 0 to 7 loop a(i) <= ‘1’; end loop;
3.8.2 Exit Perintah “exit” mengijinkan bentuk pengulangan “for” untuk diselesaikan secara lengkap dan utuh. Perintah ini digunakan ketika sebuah kondisi dicapai dan pengulangan sudah tidak diperlukan lagi. Syntax untuk perintah “exit” ditunjukkan sebagai berikut : for i in 0 to 7 loop if ( i = 4 ) then exit; endif; endloop;
3.8.3 Next Sedangkan perintah “next” mengijinkan pengulangan untuk diselesaikan bila ada kondisi yang telah terpenuhi. Hal ini sedikit berbeda dengan perintah “exit” yang digunakan untuk menyelesaikan pengulangan saat semua kondisi terpenuhi. Perintah “next” dapat menghentikan pengulangan walaupun secara umum, kondisi yang diharapkan belum terpenuhi. Kemudian, pengulangan akan dilanjutkan kepada pengulangan yang lain. Hal ini sangat bermanfaat ketika sebuah kondisi telah tercapai dan pengulangan sudah tidak lagi dibutuhkan. Contoh pengulangan untuk perintah “next” ditunjukkan berikut :
65
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
for i in 0 to 7 loop if ( i = 4 ) then next; endif; endloop;
3.9
Basic Variable Types and Operators 3.9.1 Constants Dalam sebuah simulasi, ada sebuah nilai yang perlu diatur sedemikan rupa agar nilai
tersebut tidak berubah atau tetap. Jenis nilai yang bersifat tetap demikan dinamakan sebagai constant. Constant ini sering digunakan untuk memberikan nilai awal dalam sebuah parameter. Selain itu, constant juga digunakan sebagai perbandingan untuk nilai-nilai yang terdapat pada sejumlah register. Sebuah constant dapat dideklarasikan untuk beberapa tipe dalam VHDL. Berikut beberapa contoh penggunaan constant : constant a : integer := 1; constant b : real := 0.123; constant c : std_logic := ‘0’;
3.9.2 Signals Dalam sebuah process, sebuah signal berperan dalam menghubungkan cara kerja serta apa yang akan dikerjakan oleh process tersebut. Selain itu, signal merupakan jalur yang efektif dalam suatu rangkaian, dimana signal tersebut akan menghubungkan bagian satu sama lain dalam rangkaian itu. Ketika proses simulasi dilakukan, simulator akan memeriksa apakah sinyal-sinyal yang tersedia sudah memiliki nilai atau belum. Bila belum, maka akan dinialisasikan sejumlah nilai untuk sinyal-sinyal tersebut. Jika sebaliknya, nilai sinyal akan senantiasa diperiksa dan diperbarui (update) sesuai dengan kondisi proses simulasi saat itu. Hal ini diperlukan agar simulator dapat mengetahui, apakah terdapat perubahan atau tidak di dalam 66
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
process yang tengah berlangsung Atau dengan kata lain, simulator akan memeriksa process manakah yang aktif atau tidak. Suatu singal dapat diberikan nilai yang tepat atau dapat ditambah dengan waktu tunda (delay). Dengan adanya delay, maka process yang hendak berjalan dapat dijadwalkan di masa yang akan datang. Inilah salah satu perbedaan signal dengan urutan kumpulan kode program (seperti dalam C). Contoh pernyataan dan penggunaan signal ditunjukan berikut : signal sig1 : integer := 0; signal sig2 : integer := 1; sig1 <= 14; sig1 <= sig2; sig1 <= sig2 after 10 ns;
3.9.3 Variables Dalam VHDL, dikenal istilah variable yakni sebuah nilai yang tidak tetap. Variable ini hanya digunakan dalam jenis proses sekuensial/beurutan. Variable ini berbeda dengan sinyal-sinyal pada umumnya yang terjadi secara serentak. Variable digunakan dalam sebuah proses dan cara pendeklarasiannya sebagai berikut: variable var1 : integer := 0; variable var2 : integer := 1; var1 := var2;
Sekedar catatan, bahwa tidak ada konsep delay dalam penggunaan variable (jika memerlukan proses yang perlu penjadwalan, lebih baik digunakan signal saja). 3.9.4 Boolean Operators VHDL juga memiliki sejumlah operator Boolean. Daftar operator boolean yang ada di dalam VHDL adalah AND, OR, NAND, NOT, NOR, dan XOR. Operator tersebut dapat diaplikasikan ke dalam BIT, BOOLEAN, atau jenis logika seperti contoh berikut ini : 67
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
out1 <= in1 and in2; out2 <= in3 or in4; out5 <= not in5;
3.9.5 Arithmetic operators Selain operator boolean, terdapat pula operator aritmetika yang terdapat dalam VHDL. Operator tersebut dijelaskan seperti tabel berikut ini :
Gambar 4.2 Perintah Operator
3.9.6 Comparison ope rators VHDL juga memiliki sejumlah aturan baku untuk membandingkan nilai satu dengan nilai yang lain. Daftar operator pembanding tersebut adalah =, /=, <, < =, >, = >. Jenis operator terebut dapat digunakan seperti berikut ini : in1 < 1 in1 /= in2 in2 >= 0.4
68
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.9.7 Shifting Functions VHDL juga memiliki 6 fungsi “logical shift” yang terangkum sebagai berikut :
Gambar 4.3 Perintah Shifting
3.9.8 Concatenation Fungsi rentetan (concatenation) dalam VHDL disimbolkan dengan “&” dan penggunaanya seperti berikut ini : A <= ‘1111’; B <= ‘000’; out1 <= A & B & ‘1’; — out1 = ‘11110001’;
3.10
Type data dalam VHDL Untuk menuliskan kode VHDL secara efisien, sangatlah penting untuk mengetahui
tipe-tipe data yang diperbolehkan, bagaimana, serta kapan penggunaannya. Artikel berikut dan beberapa artikel mendatang akan membahas tipe-tipe data apa saja yang terdapat dalam kode VHDL.
69
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.10.1 Tipe Data Standar Kode VHDL mengandung sederetan tipe-tipe data yang telah ditentukan melalui aturan standar IEEE 1076 dan IEEE 1164. Untuk lebih jelas, beberapa tipe data telah tercantum ke dalam masing-masing jenis library/packages yaitu :
Package standard of library std. Tipe data yang masuk jenis ini adalah tipe bit, boolean, integer, dan real.
Package std_logic_1164 of library ieee. Tipe data yang masuk jenis ini adalah std_logic dan std_ulogic.
Package std_logic_arith of library ieee. Tipe data yang masuk ke dalam library ini adalah signed, unsigned serta beberapa konversi fungsi, seperti conv_integer(p), conv_unsigned(p, b), conv_signed(p, b), and conv_std_logic_vector(p, b).
Perhatikan, berikut beberapa aturan tipe data std dalam VHDL:
Tipe data Boolean : True, False
Tipe data Integer : berisi 32 bit integer (mulai dari -2.147.483.647 s/d +2.147.483.647)
Tipe data natural : adalah bilangan non negatif dari integer (mulai dari 0 s.d +2,147,483,647)
3.10.2 Tipe Data Pengguna Selain tipe data yang telah ditentukan secara baku oleh aturan IEEE, ternyata VHDL juga memperbolehkan pengguna (user) untuk menentukan tipe data yang diinginkan. Ada 2 kategori untuk tipe data yang bisa ditentukan sendiri oleh user yaitu:
1. Tipe Integer
Tipe integer yang memiliki jangkauan -2.147.483.647 s/d +2.147.483.647 (mirip dengan tipe data standar)
Tipe natural yang memiliki jangkauan 0 s/d +2.147.483.647 (mirip dengan tipe data standar)
70
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Tipe my_integer yang memiliki jangkauan -32 s/d 32 (tipe data yang ditentukan sendiri oleh user)
Tipe nilai_murid yang memiliki jankauan 0 s/d 100 (tipe data yang ditentukan sendiri oleh user)
2. Tipe enumerated
Tipe bit yaitu ‘0’ dan ‘1’
Tipe my_logic yaitu ‘0’, ‘1’, dan ‘Z’ (ditentukan sendiri oleh user)
Tipe keadaan yaitu idle, stop, backward, forward (ditentukan sendiri oleh user)
Tipe warna misalnya merah, hijau, putih (ditentukan sendiri oleh user)
3.11 Process dalam VHDL Process adalah sebuah mekanisme atau cara untuk mengesekusi susunan pernyataan (statement) dengan urutan yang terstruktur. Pernyataan (statement) tersebut biasanya lebih dari satu dan eksekusinya terjadi secara bersamaan. Setiap process memiliki cara pendeklarasian tertentu dan biasanya berbeda satu sama lain, tergantung pernyataan yang hendak dikesekusi. Selain itu, lokasi process biasanya terletak di dalam bagian architecture. Aturan dasar untuk penulisan process adalah sebagai berikut: process sensitivity_list is … declaration part begin … statement part end process; Dalam process, suatu kumpulan (list) pernyataan akan dijalankan/aktif ketika terjadi perubahan nilai sinyal. Misalnya, sebuah process memiliki sinyal “clock” dan “reset”. Process tersebut akan dijalankan ketika terjadi perubahan sinyal yang melibatkan sinyalsinyal “clk” dan “rst”.
71
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
process (clk, rst) is begin … process statements end process; Pada contoh berikut ini, process hanya bisa berjalan/aktif terjadi perubahan nilai “clk” atau “rst”. Selain itu, process juga masih bisa aktif, yaitu dengan cara menggunakan wait statement. Bila menggunakan wait statement, process akan otomatis dijalankan sekali kemudian menunggu terjadinya perubahan nilai sinyal lain yang melibatkan sinyal “clk” atau sinyal “rst”. Bila itu terjadi, process akan berjalan/aktif lagi. process begin … process statements wait on clk, rst; end process; Pada umumnya, lokasi dari sebuah wait statement tidaklah begitu penting. Hal ini karena dalam simulasi VHDL, setiap process berjalan setiap siklus sehingga wait statement dapat diletakan di awal atau di akhir. Hal tersebut tidak berpengaruh pada jalannya process karena sifatnya sama saja. Untuk bagian pendeklarasian dalam process, variabel dan sinyal-sinyal yang digunakan dapat didefinisikan saat itu juga atau bisa sebelumnya, seperti contoh berikut ini :
process (a) is signal na : bit; begin na <= not a; end process;
72
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Listing di atas menggambarkan process “a”. Di dalam process “a”, terdapat sinyal “na” yang bertipe bit. Sinyal “na” akan dijalankan ketika terjadi perubahan nilai pada sinyal “a”. Sinyal “a” sendiri telah dideklarasikan di luar process tersebut, bisa dideklarasikan di bagian architecture atau bagian lainnya.
3.12 Architecture dalam VHDL Jika sebuah entity digambarkan sebagai sebuah interface serta parameter sebagai bagian dari sebuah model, maka architecture akan menggambarkannya sebagai watak(behaviour) dari model tersebut. Maksudnya, entity secara umum menggambarkan keseluruhan kerangka model. Sedangkan architecture akan menggambarkan watak dari model tersebut. Misalnya, entity multiplexor is port (I1, I2, E,S : in std_logic; o : out std_logic); end Multiplexor; // Listing di atas menggambarkan sebuah entity bernama multiplexor yang memiliki 4 input dan 1 output. architecture RTL of multiplexor is begin process begin o <= (I1 and S and E) or (I2 and not(S) and E);
end process; end RTL;
// Listing di atas menggambarkan watak architecture. Dari listing di atas, digambarkan bahwa sifat atau watak output entity multiplexor ditentukan oleh output dari I1, S, dan E.
73
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Hingga saat ini dikenal beberapa tipe dari architecture VHDL. Selain itu, VHDL juga memperbolehkan adanya architecture yang berbeda dalam sebuah entity yang sama. Artinya sebuah entity boleh memiliki architecture lebih dari satu walaupun sifat atau wataknya tersebut berbeda satu sama lain. Akibatnya, hal tersebut menjadikan sebuah bentuk yang ideal untuk mengembangkan watak, Register Transfer Level (RTL), serta architecture pada level gerbang. Selanjutnya, semuanya itu dapat dijadikan satu ke dalam sebuah rancangan dan dapat diuji coba menggunakan test bench yang sama. Seperti digambarkan pada listing pertama, pendekatan dasar untuk menggambarkan sebuah architecture sebagai berikut : architecture behaviour of test is ..architecture declarations begin …architecture contents end architecture behaviour; atau architecture behaviour of test is ..architecture declarations begin …architecture contents end behaviour;
3.13
Bagian Pendeklarasian Architecture Setelah digambarkan bagaimana pendeklarasian dari sebuah nama architecture,
selanjutnya beberapa sinyal atau variabel harus dideklarasikan. Pendeklarasian ini dilakukan sebelum memulai membuat statement. Seperti contoh, jika terdapat 2 sinyal pada sebuah architecture (misal, sig1 dan sig2), maka keduanya dapat dideklarasikan dalam sebuah model sebagai berikut:
74
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
architecture behaviour of test is signal sig1, sig2 : bit; begin // watak dari architecture bernama test yang memiliki sinyal 1 dan sinyal 2 (keduanya bertipe bit); Nantinya kedua sinyal tersebut akan digunakan dalam sebuah bagian statement di bagian isi dari model yang hendak digunakan. 3.14
Bagian Pernyataan Architecture Architecture dalam VHDL dapat memiliki variasi dari sebuah struktur untuk
mencapai fungsi yang berbeda satu sama lain. Selanjutnya, output yang ingin diinginkan dapat dibuat dengan menggabungkan sinyal-sinyal atau variabel yang ada. Misalnya : out1 <= in1 and in2 after 10 ns; out1 <= in1 or in2 after 10 ns; //Dua buah output dapat dibuat dengan input yang sama. Output 1 ditentukan dengan meng AND kan input 1 dengan input 2. Sedangkan output 2 ditentukan dengan meng OR kan input 1 dan input 2. Sedikit catatan untuk rancangan sederhana, penggunaan “after 10 ns” bukanlah suatu patokan yang umum. Dalam kenyataannya, hanya ada satu cara untuk memastikan rancangan yang dibuat adalah benar yaitu dengan membuat rancangan tersebut sinkron atau mengacuhkan waktu tunda (delay). Seperti yang diketahui, rancangan dari gabungan VHDL akan menghasilkan tambahan waktu tunda (delay). Selain faktor gabunganVHDL, banyaknya gerbang yang digunakan juga akan mempengaruhi waktu tunda rancangan(delay) tersebut. Akibatnya banyak delay yang terjadi maka akan menyebabkan terjadinya glitch atau hazard. Secara keseluruhan, contoh dari sebuah architecture dituliskan di bawah ini :
75
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
architecture behavioural of test is signal int1, int2 : bit; begin int1 <= in1 and in2; int2 <= in3 or in4; out1 <= int1 xor int2; end architecture behavioural;
76
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : Gerbang AND Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama GerbangAND lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
5. Klik new source -> ketik nama file namenya GerbangAND pilih VHDL Module -> klik next -> masukan input dan outputnya seperti dibawah ini:
77
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
6. Klik next terus hingga Finish -> pilih yes 7. Klik next -> pilih next lagi -> lalu Finish 8. Ketik source code nya ->
9. lalu save 10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax pilih Run 11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run -> pilih yes 13. Isikan LOC pin seperti gambar berikut:
14. Klik kanan pada Implement Design lalu pilih Run 15. Klik tanda + pada Generate Programming File -> pilih Configure Device (iMPACT) klik kanan lalu Run 16. Pada tab iMPACT klik Finish 17. Pilih (- - - nama module- - -) .bit klik Open -> Bila ada tanda warning klik Ok 18. klik Bypass -> lalu klik Bypass lagi 19. pada tab Xilink Web Talk Dialog klik Decline -> pilih Ok
78
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
20. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
21. Lalu pilih OK sampai muncul tulisan Program Succeeded
TABEL KEBENARAN GERBANG AND :
KESIMPULAN:
79
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Ikuti Langkah-langkah seperti pada Gerbang And untuk mengerjakan Gerbang OR, Not, Nand, Nor, Xor, Xnor, Half Adder, Full Adder, Half Substractor, dan Full Substractor.
Percobaan 2 : Gerbang OR
KESIMPULAN:
80
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 3 : Gerbang NOT
KESIMPULAN:
81
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 4 : Gerbang NAND
KESIMPULAN:
82
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 5 : Gerbang NOR
KESIMPULAN:
83
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 6 : Gerbang XOR
KESIMPULAN:
84
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 7 : Gerbang XNOR
KESIMPULAN:
85
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 8 : Half Adder
KESIMPULAN:
86
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 9 : Half Substractor
KESIMPULAN:
87
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 10 : Full Adder
88
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
Percobaan 11 : Full Substractor
89
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN:
90
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I : Source Code :
Hasil Output :
91
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri II : Source Code :
Hasil Output :
92
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri III : Source Code :
Hasil Output :
93
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 4
94
INTEGRATED CIRCUIT
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Desain IC Praktikan Dapat Merancang IC sederhana pada Pemrograman FPGA Praktikan Dapat Memahami Penggunaan Counter, Adder
II.
Dasar Teori Pengenalan IC, Counter, Adder pada Xilink ISE
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
BAB 4 INTEGRATED CIRCUIT
4
4.1 Integrated Circuit Sirkuit terpadu (bahasaInggris: integrated circuit atau IC) adalah komponen dasar yang terdiri dari resistor, transistor dan lain-lain. IC adalah komponen yang dipakai sebagai otak peralatan elektronika. IC digunakan untuk beberapa keperluan pembuatan peralatan elektronik agar mudah dirangkai menjadi peralatan yang berukuran relative kecil. Sebelum adanya IC, hamper seluruh peralatan elektronik dibuat dari satuan-satuan komponen (individual) yang dihubungkan satu sama lainnya menggunakan kawat atau kabel, sehingga tampak mempunyai ukuran besar serta tidak praktis. IC yang paling banyak digunakan secara luas saat ini adalah IC digital yang dipergunakan untuk peralatan komputer, kalkulator dan system kontrol elektronik. IC digita lbekerja dengan dasar pengoperasian bilangan Biner Logic (bilangandasar 2) yaitu hanya mengenal dua kondisi saja 1(on) dan 0 (off). Jenis IC digital terdapat 2(dua) jenis yaitu TTL dan CMOS. Jenis IC-TTL dibangun dengan menggunakan transistor sebagai komponen utamanya dan fungsinya dipergunakan untuk berbagai variasi Logic, sehingga dinamakan Transistor. Transistor dalam IC digital dibuat pada keeping silicon dengan cara yang sama dengan IC analog. Kondisi dua keadaan (ON/FF) adalah jantung dari logika digital dan komputer digital. Dengan mengendalikan kondisi ON/OFF transistor pada IC digital, dapat dibuat berbagai fungsi logika. Ada tiga fungsi logika dasar yaitu AND, OR dan NOT. CMOS (Complementary Metal Oxide Semiconductor) sebenarnya antara IC TTL dan IC CMOS memiliki pengertian sama, hanya terdapat beberapa perbedaan yaitu dalam penggunaan IC CMOS konsumsi daya yang diperlukan sangat rendah dan memungkinkan pemilihan tegangan sumbernya yang jauh lebih lebar yaitu antara 3 V sampai 15 V. level pengsaklaran CMOS merupakan fungsi dari tegangan sumber. Makin tinggi sumber tegangan akan semakin lebar tegangan yang memisahkan antara keadaan “1” dan “0”.
95
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 4.1 IC AND 4.2 Counter SecaraUmum Counter merupakan rangkaian logika pengurut, karena
counter membutuhkan
karakteristi kmemori, dan pewaktu memegang peranan yang penting.
Counter digital
mempunyai karakteristik penting yaitu sebagai berikut : 1. Jumlahhitunganmaksimum (modulus N-counter) 2. Menghitungke-atasatauke-bawah (up atau down - counter) 3. Operasiasinkronatausinkron 4. Bergerakbebasatauberhentisendiri Sebagaimanadenganrangkaiansekuensial
yang
lain,
untuk
menyusun
counter
digunakan flip-flop. Counter dapat digunakan untuk menghitung banyaknya clock-pulsa dalam waktu yang tersedia (pengukuran frekuensi), Counter dapat juga digunakan untuk membagi frekuensi dan menyimpan data. Ada dua macam
counter, yaitu Asinkronous
Counter dan Sinkronous Counter.
Asinkronous Counter disebut juga Ripple Through Counter atau Counter Serial (Serial Counter), karena output masing-masing flip-flop yang digunakan akan berubah kondisi dari “0” ke “1” dan sebaliknya secara berurutan, hal ini disebabkan karena flip-flop yang paling ujung dikendalikan oleh sinyal clock, sedangkan sinyalclock untuk flip-flop lainnya berasal dari masing-masing flip-flop sebelumnya. Sedangkan pada counter sinkron, output flip-flop yang digunakan bergantian secara serempak. Hal ini disebabkan karena masing-masing flipflop tersebut dikendalikan secara serempak oleh sinyal clock. Oleh karena itu Counter Sinkron dapat pula disebut sebagai Counter paralel (Parallel Counter).
96
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : 2 Bit ADDER Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengannamaAdder_2bitlalukliknext 4. Atur Device Properties sepertigambardibawahini :
5. Klik new source ->ketik nama file namenya Adder_2bit pilih Schematic ->klik next >klik Finish ->pilih yes 6. Klik next ->pilih next lagi ->lalu Finish 7. Gambarkan rangkaian shcematic 2bit adder ->lalu save 8. Padabagian tab Processes pada Synthesize-XST klikkanan pilih Run 9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run ->pilih yes 10. Isikan LOC pin seperti gambar berikut:
97
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
11. Klik kanan pada Implement Design lalu pilih Run 12. Klik tanda + pada Generate Programming File ->pilih Configure Device (iMPACT) klik kanan lalu Run 13. Pada tab iMPACT klik Finish 14. Pilih Adder_2bit.bit klik Open ->Bila ada tanda warning klik Ok 15. Klik Bypass ->lalu klik Bypass lagi 16. pada tab Xilink Web Talk Dialog klikDecline ->pilihOk 17. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
18. Lalu pilih OK sampai muncul tulisan Program Succeeded
98
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar Shcematic 2bit Adder
Kesimpulan :
99
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
1.
PercobaanMandiri
Buatlah Shematic 2Bit Subtractor Shcematic :
KESIMPULAN:
100
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 4-Bit Counter Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama Counter_up lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
5. Klik new source ->ketik nama file namenya Ctr_up pilih VHDL Module ->klik next >klik Finish ->pilih yes 6. Klik next ->pilih next lagi ->lalu Finish 7. Ketikkan source code program counter up ->lalu save 8. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run ->pilih yes
101
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
10. Isikan LOC pin seperti gambar berikut:
11. Klik kanan pada Implement Design lalu pilih Run 12. Klik tanda + pada Generate Programming File ->pilih Configure Device (iMPACT) klik kanan lalu Run 13. Pada tab iMPACT klik Finish 14. Pilih Ctr_up.bitklikOpen ->Bila ada tanda warning klik Ok 15. Klik Bypass ->lalu klik Bypasslagi 16. pada tab Xilink Web Talk Dialog klikDecline ->pilihOk 17. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
Lalu pilih OK sampai muncul tulisan Program Succeeded
SOURCE CODE VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter is
102
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
port (clk : in std_logic; reset : in std_logic; pause : in std_logic; count_out : out std_logic_vector(3 downto 0)); end counter; architecture Behavioral of counter is
signal temp_count : std_logic_vector(3 downto 0) := x"0"; signal slow_clk
: std_logic;
-- Clock divider can be changed to suit application. -- Clock (clk) is normally 50 MHz, so each clock cycle -- is 20 ns. A clock divider of 'n' bits will make 1 -- slow_clk cycle equal 2^n clk cycles. Signal clk_divider : std_logic_vector(23 downto 0) := x"000000";
begin -- Process that makes slow clock go high only when MSB of -- clk_divider goes high. clk_division : process (clk, clk_divider) begin if (clk = '1' and clk'event) then clk_divider<= clk_divider + 1; end if; slow_clk<= clk_divider(23); end process; counting : process(reset, pause, slow_clk, temp_count) begin if reset = '1' then temp_count<= "0000";
-- Asynchronous reset.
elsif pause = '1' then
103
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
temp_count<= temp_count; -- Asynchronous count pause. else if slow_clk'event and slow_clk ='1' then
-- Counting state
if temp_count< 9 then temp_count<= temp_count + 1; -- Counter increase else temp_count<= "0000";
-- Rollover to zero
end if; end if; end if; count_out<= temp_count;
-- Output
end process; end Behavioral;
-- End module.
Kesimpulan :
1. PercobaanMandiri
104
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Dari Source Code Binary Up Counter diatas ,BuatlahUp Counter 8-Bit Kode :
KESIMPULAN:
105
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
2. PercobaanMandiri Dari Source Code 4-Bit Binary Up Counter diatas ,Buatlah 4-Bit Down Counter Code :
KESIMPULAN:
106
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3. PercobaanMandiri Dari Source Code 4-Bit Binary Up Counter diatas ,Buatlah 8-Bit Down Counter Code :
KESIMPULAN:
107
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 5
108
PS/2
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Pemrograman VHDL pada FPGA Praktikan Dapat Merancang Program VHDL dengan menggunakan kode biner Praktikan Dapat Merancang Program VHDL pada Pemrograman FPGA menggunakan port PS/2 Praktikan Dapat Memahami Penggunaan port PS/2 dalam FPGA
II.
Dasar Teori Pengenalan Port P/S2 Merancang Desain Program menggunakan VHDL Aplikasi Perancangan Program VHDL untuk port PS/2
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
5
BAB 5 BINARY CODE 5.1 PS/2 Keyboard
Keyboard PS/2 adalah suatu serial protokol yang dapat bidirectional. Keyboard PS/2 untuk komunikasinya hanya menggunakan 2 buah kabel yaitu kabel data untuk aliran data dari/ke komputer dan kabel untuk clock. Ada tiga keadaan pada keyboard yang perlu diperhatikan: 1. Pada saat data = high, clock = high maka keadaan ini disebut idle state. 2. Pada saat data = high, clock = low maka keadaan ini yang tidak boleh tejadi. 3. Pada saat data = low, clock = high maka berarti tanda bahwa host akan mengirim perintah ke keyboard.
Data dikirimkan dari keyboard ke host pada saat ada perubahan clock dari logika high menjadi logika low (falling edge transition), demikian pula untuk data yang dikirimkan dari host ke device pada saat falling edge transtion clock. Frekuensi dari clock berada dalam jangkauan 10-16.7 KHz (Chapweske, 1999). Keluaran dari kedua output tersebut memenuhi standar sinyal TTL, sehingga dapat langsung dihubungkan dengan mikrokontroler.
Gambar 5.1 PS/2 Port Male
109
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Dibawah ini merupakan keterangan Pin yang ada pada port ps/2 dan PIN FPGA:
Tabel 5.1 Pin PS/2
Biasanya pada komputer port PS/2 keyboard dan mouse memiliki warna yang berbeda. Tujuannya adalah agar tidak tertukar saat pemasangannya.
Warna hijau untuk mouse
Warna ungu untuk keyboard
Gambar 5.2 Fisik Port PS/2
110
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 5.3 Port PS/2 pada Spartan 3-E
Pada gambar 5.3 menunjukkan port ps/2 yang ada pada FPGA. 5.2 Scan Code Istilah host yang berarti komputer, jika keyboard atau mouse dihubungkan dengan PC, atau host dapat berupa mikrontroler bila keyboard atau mouse dihubungkan dengan mikrokontroler.Pada keyboard komputer, setiap kali salah satu tombol ditekan atau dilepas, keyboard akan mengirim kode ke host. Kode yang dikirimkan ke host tersebut dinamakan sebagai scan code. Sebagai contoh, bila scan code tombol ‘i’ adalah 43H (0100 0011). Ketika tombol ‘i’ ditekan keyboard akan mengirimkan 43H, jika tombol ‘i’ ditekan terus maka keyboard akan terus mengirimkan 43H terus menerus sampai tombol ‘i’ tadi dilepaskan atau ada tombol lain yang ditekan. Keyboard juga mengirimkan kode saat ada tombol yang dilepaskan, kodenya adalah F0H (1111 0000) kemudian diikuti dengan scancode tombol yang ditekan, jadi kalau tombol ‘i’ tadi dilepas keyboard akan mengirimkan kode F0H dan 43H. Kode-kode tersebut dikirim keyboard secara serial, artinya dikirimkan satu bit demi satu bit dimulai dari bit LSB dahulu, seperti pada gambar 2. Misalnya 43 dikirimkan dengan cara: mula-mula dikirim ‘1’, sesaat kemudian ‘1’ lagi dan menyusul ‘0’ setelah itu ‘0’ sampai akhirnya 8 bit yang berbentuk 0100 0011.
111
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 5.4 Scan Code Pada Keyboard
5.2.1 Sistem Bilangan Biner Sistem bilangan biner atau sistem bilangan basis dua adalah sebuah sistem penulisan angka dengan menggunakan dua simbol yaitu 0 dan 1. Sistem bilangan ini merupakan dasar dari semua sistem bilangan berbasis digital. Dari bilangan biner, kita dapat mengkonversinya ke dalam bilangan Oktal atau Hexadesimal. Sistem ini juga dapat kita sebut dengan istilah bit (Binary Digit). Pengelompokan biner dalam komputer selalu berjumlah 8, dengan istilah 1 Byte/bita. Dalam istilah komputer, 1 Byte = 8 bit. Kode-kode rancang bangun komputer, seperti ASCII, (American Standard Code for Information Interchange) menggunakan sistem pengkodean 1 Byte.
112
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Tabel 5.2 Bilangan Biner 4-bit No.
Biner
Hexa
1.
0001
1
2.
0010
2
3.
0011
3
4.
0100
4
5.
0101
5
6.
0110
6
7.
0111
7
8.
1000
8
9.
1001
9
10.
1010
A
11.
1011
B
12.
1100
C
13.
1101
D
14.
1110
E
15
1111
15
Dari Gambar Scan Code diatas kita dapat melihat contoh penggunaan scan codes keyboard seperti dibawah ini: Contoh:
a => 1C, maka a => 00011100 dimana 1C => 1 => 0001 dan C => 1100 Jadi untuk a, dituliskan dengan scan codes 00011100 3 => 26, maka 3 => 00100110 dimana 26 => 2 => 0010 dan 6 => 0110 Jadi untuk 3, dituliskan dengan scan codes 00100110
113
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : port ps2 Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama ps2 lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
114
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
5. Klik new source -> ketik nama file namenya ps2 pilih VHDL Module -> klik next -> input dan outputnya dikosongkan saja seperti dibawah ini:
6. Klik next terus hingga Finish -> pilih yes 7. Klik next -> pilih next lagi -> lalu Finish 8. Lengkapi source codenya ->
Source code
115
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
9. lalu save 10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax pilih Run 11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run -> pilih yes 13. Isikan LOC pin seperti gambar berikut
14. Klik kanan pada Implement Design lalu pilih Run 15. Klik tanda + pada Generate Programming File -> pilih Configure Device (iMPACT) klik kanan lalu Run 16. Pada tab iMPACT klik Finish 17. Pilih (- - - nama module- - -) .bit klik Open -> Bila ada tanda warning klik Ok 18. klik Bypass -> lalu klik Bypass lagi 19. pada tab Xilink Web Talk Dialog klik Decline -> pilih Ok 20. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
21. Lalu pilih OK sampai muncul tulisan Program Succeeded
116
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
OUTPUT:
KESIMPULAN:
117
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I : Edit program diatas Untuk menampilkan output : 2. Pada saat tombol Z pada keyboard ditekan, 8 LED pada FPGA nyala semua 3. Pada saat tombol X pada keyboard ditekan, 8 LED pada FPGA mati semua 4. Pada saat tombol C pada keyboard ditekan, 4 LED pada FPGA nyala dan 4 LED sisanya mati. Source Code :
Kesimpulan :
118
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 2 : tampilan bit pada 7’segment Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File -> New Project 3. Ketik nama project dengan nama switch_1 lalu klik next 4. Atur Device Properties seperti gambar dibawah ini : 5.
6. Klik new source -> ketik nama file namenya switch_1 pilih VHDL Module -> klik next -> input dan outputnya dikosongkan saja seperti dibawah ini:
119
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
7. Klik next terus hingga Finish -> pilih yes 8. Klik next -> pilih next lagi -> lalu Finish 9. Lengkapi source codenya -> Source Code:
10. lalu save 11. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax pilih Run 12. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 13. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run -> pilih yes
120
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
14. Isikan LOC pin seperti gambar berikut
15. Klik kanan pada Implement Design lalu pilih Run 16. Klik tanda + pada Generate Programming File -> pilih Configure Device (iMPACT) klik kanan lalu Run 17. Pada tab iMPACT klik Finish 18. Pilih (- - - nama module- - -) .bit klik Open -> Bila ada tanda warning klik Ok 19. klik Bypass -> lalu klik Bypass lagi 20. pada tab Xilink Web Talk Dialog klik Decline -> pilih Ok 21. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
22. Lalu pilih OK sampai muncul tulisan Program Succeeded
121
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
OUTPUT:
KESIMPULAN:
122
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri II : Edit program diatas Untuk menampilkan output : 1. Dengan menggunakan 6 LED, Pada saat switch 1 di tekan, 2 LED pertama menyala, sisanya mati. 2. Bila switch 2 ditekan, 2 LED terakhir menyala dan sisanya mati. 3. Bila switch 1 dan switch 2 ditekan, 2 LED pertama dan 2 LED terakhir menyala, 2 LED di tengah mati. 4. Bila selain dari switch diatas ditekan lampu LED semua akan mati. 5. Bila tidak ada satupun switch yang ditekan, semua LED mati. Output :
KESIMPULAN:
123
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 6
124
LCD
I.
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Pemrograman VHDL pada FPGA Praktikan Dapat Memahami Penggunaan Port LCD Karakter dalam FPGA Praktikan Dapat Merancang Program VHDL pada FPGA menggunakan Port LCD Karakter
II.
Dasar Teori Pengenalan Port LCD Karakter Merancang Desain Program menggunakan VHDL Aplikasi Perancangan Program VHDL pada LCD Karakter
III.
Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
6
BAB 6 LCD 6.1. LCD Karakter LCD ( Liquid Crystal Display ) merupakan salah satu media yang digunakan sebagai penampil pada sistem berbasis mikrokontroler. Banyak macam LCD yang tersedia dipasaran, baik yang dapat menampilkan gambar maupun teks.Untuk LCD yang dapat menampilkan gambar disebut LCD Grafik sedangkan LCD yang dapat menampilkan teks disebut LCD Karakter.
G AMBAR 6.1 C ONTOH LCD 6.2. Antarmuka dan Pin LCD Karakter pada FPGA LCD Karakter yang digunakan pada kasus ini adalah 2x16, dimana untuk menampilkan karakter sebanyak 2 baris 16 kolom dengan menggunakan lebar data sebanyak 4 bit atau 8 bit. Berikut ini dijelaskan mengenai fungsi pin – pin pada LCD Karakter 2x16 dan antarmuka dengan FPGA Board :
T ABEL 6.1 T ABEL P IN L CD 2 X 16
125
Pin
Nama
Fungsi
1
Vss
Ground voltage
2
Vcc
+5V
3
VEE
Contrast voltage Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
4
RS
Register Select 0 = Instruction Register 1 = Data Register
5
R/W
Read / Write 0 = Read 1 = Write
6
E
Enable 0 = Start to lacth data to LCD character 1 = Disable
7
DB0
LSB
8
DB1
-
9
DB2
-
10
DB3
-
11
DB4
-
12
DB5
-
13
DB6
-
14
DB7
MSB
15
BPL
Back Plane Light
16
GND
Ground voltage
Tampilan karakter pada LCD diatur oleh pin – pin berikut ini :
EN (Enable) Jalur ini digunakan untuk memberitahu LCD bahwa akan dilakukan pengirimansxs data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika “1” dan tunggu untuk sejumlah waktu tertentu ( sesuai dengan datasheet dari LCD tersebut ) dan berikutnya set EN ke logika low “0” lagi.
RS (Register Select) Ketika RS berlogika low “0”, data akan dianggap sebagai sebuah perintah atau instruksi khusus ( seperti clear screen, posisi kursor dll ). Ketika RS berlogika high “1”, data yang dikirim adalah data text yang akan ditampilkan pada layar LCD.
126
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Sebagai contoh, untuk menampilkan huruf “T” pada layar LCD maka RS harus diset logika high “1”.
R/W (Read/Write) Ketika R/W berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ”0”.
GAMBAR 6.2 A NTARMUKA ( INTERFACE ) LCD K ARAKTER 2 X 16 DENGAN FPGA B OARD
6.3. Pemetaan Memori Display Data RAM ( DD RAM ) akan menyimpan kode dari karakter yang akan ditampilkan pada layar dan data tersebut akan dibandingkan dengan Code Generator ROM ( CG ROM ) yang berisi bitmap font untuk setiap karakter standar. Dengan kata lain semua kode karakter standar telah disimpan dalam memori ( CG ROM ) sehingga LCD Karakter
127
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
dapat menampilkan karakter yang dimasukkan pada DD RAM. Kode karakter yang disimpan pada CG ROM adalah berupa bit (binary digit) ASCII.
GAMBAR 6.3 P ETA M EMORI LCD K ARAKTER 2 X 16 Instruksi Set Posisi Kursor adalah 80h, untuk itu perlu ditambahkan alamat lokasi dimana karakter akan ditampilkan. Contoh untuk menampilkan “test” dengan posisi awal kursor berada pada baris pertama kolom pertama, maka alamat memorinya adalah 00h, kemudian ditambahkan dengan 80h sehingga hasilnya 80h ( 00h + 80h = 80h ).
128
Laboratorium GAMBAR 6. 4 T ABEL DATA NIBBLESistem PADAKomputer CGRAMLanjut Universitas Gunadarma
T ABEL 6. 2 T ABEL K ODE ASCII
129
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
6.4. Set Instruksi Berikut
ini
dijelaskan
beberapa
perintah
dasar
yang
digunakan
untuk
mengkonfigurasikan LCD Karakter. T ABEL 6. 3 S ET INSTRUKSI LCD K ARAKTER Upper Nibble Fungsi
LCD_RS
LCD_RW
Lower Nibble
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
Clear Display
0
0
0
0
0
0
0
0
0
1
Return Cursor
0
0
0
0
0
0
0
0
1
-
Entry Mode Set
0
0
0
0
0
0
0
1
I/D
S
Display On/Off
0
0
0
0
0
0
1
D
C
B
Cursor and
0
0
0
0
0
1
S/C
R/L
-
-
0
0
0
0
1
DL
N
F
-
-
Home
Display Shift Function Set
a. Disabled Jika sinyal LCD_E mendapat logika low maka semua input yang diberikan ke LCD tidak akan berpengaruh.
b. Clear Display Perintah ini digunakan untuk menghapus layar dan mengembalikan posisi kursor ke lokasi awal (pojok kiri atas).
c. Return Cursor Home Digunakan untuk mengembalikan posisi kursor ke lokasi awal dan mengembalikan tampilan ke posisi semula ( perintah ini berfungsi jika dilakukan mode pergeseran pada LCD ).
d. Entry Mode Set Untuk mengatur arah pergerakan jika diaktifkan mode geser dengan caraincrement atau decrement pada bit DB.1 dan DB.0. DB.1 (I/D) = 0 : Auto decrement, posisi kursor geser ke kiri DB.1 (I/D) = 1 : Auto increment, posisi kursor geser ke kanan
130
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
DB.0 (S) = 0 : Mode geser dinonaktifkan DB.0 (S) = 1 : Mode geser diaktifkan, arahnya bergantung pada DB.1
e. Display On/Off DB.2 (D) = 0 : Display OFF, karakter tidak ditampilkan DB.2 (D) = 1 : Display ON DB.1 (C) = 0 : Cursor OFF, posisi kursor tidak ditampilkan DB.1 (C) = 1 : Cursor ON DB.0 (B) = 0 : Blink OFF, kursor blink tidak ditampilkan DB.1 (B) = 1 : Blink ON
f. Cursor and Display Shift Digunakan untuk menggeser posisi kursor dan layar tanpa mengubah isi memori DD RAM ( Display Data RAM ). Tabel 6.4 Kondisi DB2 dan DB3 untuk operasi kursor DB3
DB2
Operasi
(S/C)
(R/L)
0
0
Geser posisi kursor ke kiri
0
1
Geser posisi kursor ke kanan
1
0
Geser seluruh layar ke kiri
1
1
Geser seluruh layar ke kanan
g. Function Set Digunakan untuk mengatur lebar data, jumlah baris yang digunakan dan font karakter.
131
DL = 0 : Lebar data interface 4 bit (DB7 s/d DB4)
DL = 1 : Lebar data interface 8 bit (DB7 s/d DB0)
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK : Percobaan 1 : LCD Karakter Langkah – langkah : 1. Buka Xilink ISE 9.2i 2. Klik File =>New Project 3. Ketik nama project dengan nama lcd_kar lalu klik next 4. Atur Device Properties seperti gambar dibawah ini :
5. Klik New Source => ketik nama file namenya lcd_kar pilih VHDL Module =>klik next => input dan outputnya dikosongkan saja seperti dibawah ini:
132
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
6. Klik next terus hingga Finish => pilih yes 7. Klik next => pilih next lagi => lalu Finish 8. Lengkapi source codenya =>
Source 1
Source 2
133
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Source 3
9.
Lalu save
10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax pilih Run 11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run =>pilih yes 13. Isikan LOC pin seperti gambar berikut:
134
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
14. Klik kanan pada Implement Design lalu pilih Run 15. Klik tanda + pada Generate Programming File => pilih Configure Device (iMPACT) klik kanan lalu Run 16. Pada tab iMPACT klik Finish 17. Pilih (- - - nama module- - -) .bit klik Open =>Bila ada tanda warning klik Ok 18. klik Bypass => lalu klik Bypass lagi 19. Pada tab Xilink Web Talk Dialog klik Decline =>pilih Ok 20. Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawah ini:
21. Lalu pilih OK sampai muncul tulisan Program Succeeded
135
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
OUTPUT :
KESIMPULAN :
136
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I : Edit program diatas untuk menampilkan output “My L4b “ M y
L
4
b
SOURCE CODE :
137
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN :
Percobaan 2 : PemetaanMemori (CGRAM)LCD Karakter Langkah – langkah : 1.
Ikuti semua langkah – langkah seperti percobaan sebelumnya ( simpan dengan nama lcd_memori ).
2.
Lalu lengkapi source code berikut ini:
Source 1
138
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Source 2
Source 3
139
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
3.
Kemudian lanjutkan ke langkah berikutnya ( langkah 9 s/d 21 ).
OUTPUT :
KESIMPULAN :
140
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri 2 : Edit program diatas ( percobaan 2 ) untuk menampilkan output seperti berikut: 1
a
c
s
l
2
3
p
g
f
a
2 1
4
5
6
7
8
9
10
11 12 13 14 15 16
Catatan : - Ubahlah nilai pengalamatan memori pada set_addr, set_addr2, dst. Tambahkan lagi variabelnya jika perlu.
SOURCE CODE :
141
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
KESIMPULAN :
142
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 7
I.
II.
III.
143
Video Graphic Array (VGA)
Tujuan Praktikum : Praktikan Dapat Mengenal dan Memahami Program VHDL pada FPGA Praktikan Dapat Merancang Program VHDL pada Pemrograman FPGA menggunakan port VGA Praktikan Dapat Memahami Penggunaan port VGA pada FPGA Dasar Teori Pengenalan Port VGA Merancang Desain Program Menggunakan VHDL Aplikasi Perancangan Program VHDL untuk port VGA Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
7
BAB 7 VIDEO GRAPHIC ARRAY (VGA) 7.1 VIDEO GRAPHIC ARRAY (VGA) Video Graphic Array (VGA) merupakan sebuah
standar
tampilan
komputer analog yang dipasarkan pertama kali oleh IBM pada 1987. Walaupun standar VGA sudah tidak lagi digunakan karena sudah digantikan oleh standar yang lebih baru, VGA masih digunakan dalam pasar pocket pc. VGA merupakan standar grafis terakhir yang diikuti oleh mayoritas pabrik pembuat kartu grafis komputer. Tampilan Windows sampai sekarang masih beroperasi dalam mode VGA karena mode VGA didukung oleh banyak pembuat monitor dan kartu grafis. VGA merupakan salah satu komponen output yang bertugas menampilkan hasil proses pada layar monitor. Istilah VGA juga sering digunakan untuk mengacu kepada resolusi layar berukuran 640×480, apapun pembuat perangkat keras kartu grafisnya. Kartu VGA berguna untuk menerjemahkan output (keluaran) komputer ke monitor. Untuk menggambar/desain grafis ataupun untuk bermain game, kita perlu VGA yang tinggi kekuatannya
Gambar 7.1 Port VGA pada FPGA 144
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Port pada VGA terdiri dari 15 pin yang memiliki fungsinya masing-masing. Di bawah ini gambar dari port VGA beserta fungsi dari setiap pin-pinnya.
Gambar 7.2 Fungsi Pin pada port VGA
145
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
7.1.1 Resolusi VGA Resolusi VGA 640x480 piksel adalah dengan 16 atau 256 warna. Dasar resolusi ini digunakan ketika boot PC, dan juga digunakan dalam Safe Mode untuk mengatasi masalah, karena driver display ditetapkan pada resolusi yang lebih tinggi dapat menyebabkan masalah. Meskipun pengguna tidak berhenti dari menjaga resolusi ini, sangat sedikit data akan muncul di layar. Namun, layar kecil di perangkat genggam juga dapat menggunakan VGA atau bahkan lebih rendah resolusinya. Di bawah ini merupakan standar resolusi yang biasa dipakai pada VGA :
640x480
800x600
1024x768
1280x1024
1600x1200 Tiga
terakhir
merupakan
yang
paling
umum
digunakan.
Sebagai
contoh, 1024x768 berarti ada 1.024 kolom dan 768 baris piksel pada layar. Semakin tinggi resolusinya, bahan lebih dapat dilihat di layar, namun resolusi tinggi di layar kecil membuat teks sangat kecil.
Gambar 7.3 Standard screen resolution
146
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Gambar 7.4 Wide Screen Resolution
7.1.2 Jenis-jenis Konektor VGA Sebuah konektor VGA 15-pin tiga baris DE-15 konektor. 15-pin konektor VGA ditemukan pada banyak kartu video, monitor komputer, dan beberapa set televisi definisi tinggi. VGA konektor dan kabel komponen RGBHV membawa analog (merah, hijau, biru, horizontal sync, sync vertikal) sinyal video, dan data. Pada komputer laptop atau perangkat kecil lainnya, port mini-VGA kadang-kadang digunakan sebagai pengganti konektor VGA berukuran penuh. Hal ini juga disebut konektor RGB, D-sub 15, mini sub D15, mini konektor D15, HD-15, atau HD15 (High Density 15), DE-15, atau DE15, yang membedakannya dari konektor dengan ukuran yang sama tetapi dengan hanya dua baris pin. Kadangkadang, konektor ini disebut sebagai "DB-15" atau sebagai ""-15 HDB. Port VGA didalam FPGA digunakan sebagai output dari hasil program didalam FPGA, dimana program tersebut merupakan program untuk mengontrol tampilan grafik yang nantinya akan ditampilkan pada monitor. Namun FPGA hanya dapat menampilkan grafik tidak lebih dari resolusi 640 x 480.
147
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Di bawah ini jenis-jenis dari konektor VGA.
Gambar 7.5 Jenis-jenis konektorVGA
148
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PRAKTEK: Percobaan 1 :VGA1 Langkah-Langkah: 1. Buka Xilink ISE 9.2i 2. Klik File ->New Project 3. Ketik nama projek dengan namaVGA_Module lalu klik next 4. Atur Device Properties seperti gambar dibawah ini:
5. Klik new source->ketik nama file namenya Vga_Module pilih VHDL Module->klik next- > input dan outputnya dikosongkan saja. 6. Klik next terus hingga Finish-> pilih yes 7. Klik next->pilih next lagi->lalu Finish 8. Lengkapi source codenya->
149
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Source1
Source2
9. L alus ave 10.Pada bagian tab Processes pada Synthesize-XST klik tanda+ klik kanan Check Syntax pilih Run. 11.Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run 12.Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih Run->pilihyes. 13.Isikan LOC pin seperti gambar berikut:
14.Klik kanan pada Implement Design lalu pilih Run 15.Klik tanda +
pada Generate Programming File -> pilih Configure Device
(iMPACT) klik kanan lalu Run 16.Pada tab iMPACT klik Finish 17.Pilih(---namamodule---).bit klik Open-> Bil aada tanda warning klik Ok 18.klik Bypass->lalu klik Bypass lagi 150
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
19.Pada tab Xilink WebTalkDialog klik Decline ->pilih Ok 20.Klik kanan pada gambar IC Xilink sebelah kiri lalu pilih program seperti gambar dibawahini:
21.Lalu pilih OK sampai muncul tulisan Program Succeeded OUTPUT:
KESIMPULAN:
151
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri I :Edit program diatas Untuk menampilkan output: ACSL -(no.computer);(contoh:ACSL - 16) SourceCode:
KESIMPULAN:
152
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri II :Edit program diatas Untuk menampilkan output: VGA MODULE
SoureCode:
KESIMPULAN:
153
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Percobaan 2:VGA2 Ikuti langkah langkah pada percobaan 1 Lengkapi source code dengan source code dibawah ini.
Source1
Source2
Isikan Loc Pin seperti gambar dibawahini:
154
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
OUTPUT:
KESIMPULAN:
155
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
ProgramMandiri I :Edit program diatas Untuk menampilkan output:
Biru
Putih
Merah
SourceCode:
KESIMPULAN:
156
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Program Mandiri II :Edit program diatas Untuk menampilkan output: Biru
Kuning
SourceCode:
KESIMPULAN:
157
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
PERTEMUAN 8 I.
Tujuan Praktikum : Praktikan Dapat Memodifikasi Source Code Yang Ada Sehingga Menghasilkan Output Yang Berbeda Praktikan Dapat Memodifikasi Source Code Yang Ada Menjadi Alat Lain Mengulang kembali latihan
II.
Dasar Teori Merancang Counter Up-Down Merancang IC sederhana Mengubah Output Pada Source Code PS/2, LCD, VGA Peralatan FPGA XILINX SPARTAN 3E Adaptor 5 Volt 1 buah PC
III.
158
STUDI KASUS
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
8
BAB 8 STUDI KASUS Studi Kasus I Buatlah Shematic IC yang terdiri dari 2Bit Adder dan 2Bit Subtractor (Inputan dan Keluaran berasal dari port yang sama). Schematic :
Studi Kasus II Buatlah Program, Jika Switch 1 di geser maka program akan melakukan Up Counter dan jika switch 2 digeser maka program akan melakukan Down Counter. Code :
159
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Studi Kasus III F
3
G
!
l
D
p
4
T
3
R
0
g
4
m m
4
r
R
@
4
b
1 y
Code :
Studi Kasus IV Buatlah Kata “Praktikum FPGA” dengan menggunakan source code VGA. Code :
160
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma
Studi Kasus V Buatlah bendera Madagascar dengan menggunakan soucre code VGA.
Code :
Studi Kasus VI Buatlah program yang menampilkan output berupa nilai hexa ASCII dari tombol keyboard yang ditekan. (3,5,!,#,a,f,spasi, crtl) Code :
161
Laboratorium Sistem Komputer Lanjut Universitas Gunadarma