0% found this document useful (0 votes)
128 views

Modul FPGA (Full) v1.1

This document provides an overview of FPGA concepts including schematics, Verilog, VHDL, integrated circuits, counters, PS/2 keyboards, LCD displays, and more. It covers topics such as logic gates, data types, operators, modules, entities, ports, packages, processes, architectures, and integrated circuit basics. The document contains several chapters that describe these essential FPGA and hardware description language elements at a high level.

Uploaded by

Yehuda Giay
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
128 views

Modul FPGA (Full) v1.1

This document provides an overview of FPGA concepts including schematics, Verilog, VHDL, integrated circuits, counters, PS/2 keyboards, LCD displays, and more. It covers topics such as logic gates, data types, operators, modules, entities, ports, packages, processes, architectures, and integrated circuit basics. The document contains several chapters that describe these essential FPGA and hardware description language elements at a high level.

Uploaded by

Yehuda Giay
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 162

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
1 SCHEMATIC
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 masukan-
masukannya 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 bilangan-
bilangan 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
2 VERILOG
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 gerbang-
tingkat.

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 karakteristik
rangkaian dari operasi dan transfer data antara register. Desain RTL berisi
kemungkinan waktu yang tepat. Operasi dijadwalkan untuk terjadi pada waktu-
waktu 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 \reset*


module \486 (q,\q~,d,clk,\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> '<radix> <value>

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


Binary: +, -, *, /,% (modulus operator)
Unary: +, --
Pembagian integer memotong setiap bagian fraksional

32 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 <b yang kurang b
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.
Unknown bit diperlakukan seperti yang dijelaskan sebelumnya.

2.7.7 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>)
<case1> : <statement>
<case2> : <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
3 VHDL
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 <name> is

entity <name>;

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 berkas-
berkas sederhana untuk menghindari hal tersebut. Selain itu dengan mempelajari berkas-
berkas 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 berkas-
berkas 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 nama-
nama 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 sinyal-
sinyal 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 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

94 Laboratorium Sistem Komputer Lanjut Universitas Gunadarma


BAB 4
4 INTEGRATED CIRCUIT

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 flip-
flop 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 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

108 Laboratorium Sistem Komputer Lanjut Universitas Gunadarma


BAB 5
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 7segment

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 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

124 Laboratorium Sistem Komputer Lanjut Universitas Gunadarma


BAB 6
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

Pin Nama Fungsi


1 Vss Ground voltage
2 Vcc +5V
3 VEE Contrast voltage

125 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 Lower Nibble
LCD_RS LCD_RW
Fungsi 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 -
Home
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 - -
Display Shift
Function Set 0 0 0 0 1 DL N F - -

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.
DL = 0 : Lebar data interface 4 bit (DB7 s/d DB4)
DL = 1 : Lebar data interface 8 bit (DB7 s/d DB0)

131 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 p g
s l f a
2
1 2 3 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 Video Graphic Array (VGA)

I. 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
II. Dasar Teori
Pengenalan Port VGA
Merancang Desain Program Menggunakan VHDL
Aplikasi Perancangan Program VHDL untuk port VGA
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC

143 Laboratorium Sistem Komputer Lanjut Universitas Gunadarma


BAB 7
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 640480, 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. Kadang-
kadang, 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 STUDI KASUS
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
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC

158 Laboratorium Sistem Komputer Lanjut Universitas Gunadarma


BAB 8
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 ! l D p R 0 g 4 m m 4 b 1
G 4 T 3 4 r R @ 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

You might also like