You are on page 1of 16

LAPORAN PRAKTIKUM

”COUNTER MENGGUNAKAN PROGRAM VHDL”

Dosen : Hadiwiyatno, S.T. M.T.

Disusun oleh :
Anggarica Mudji Pratama (1A/01/0731130028)

PROGRAM STUDI TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
2008
KATA PENGANTAR

Puji syukur kehadirat Allah SWT yang telah melimpah kan rahmat,
taufiq, dan karunia-Nya, sehingga kami dapat menyelesaikan tugas VHDL baik
secara praktikum maupun tertulis (dalam bentuk laporan / makalah).
Makalah ini kami beri judul “Counter Sinkron dengan Flip-Flop
Menggunakan Program VHDL”. Tugas ini bertujuan selain sebagai memenuhi
tugas semester II, juga untuk mengasah kemampuan dan kreatifitas kami dalam
mengembangkan apa yang telah kami pelajari selama ini.
Kami ucapkan terimakasih kepada Bapak Hadiwiyatno, S.T selaku dosen
pembimbing dan rekan-rekan yang telah berpartisipasi menyumbangkan ide-ide
dalam tugas ini.
Kami masih sangat menyadari bahwa tugas yang kami susun baik secara
praktikum maupun tertulis masih jauh dari sempurna. Kritik dan saran yang
bersifat membangun sangat kami perlukan demi kesempurnaan apa yang kami
susun.
Semoga apa yang kami susun dapat bermanfaat bagi kita semua. Terima
kasih.

Penulis

Malang, Juli 2008


A. TUJUAN
1. Dapat mengaplikasikan program VHDL Galaxy
2. Mengetahui dan memahami arti dari bentuk gelombang VHDL Simulation
3. Mengetahui cara kerja counter sinkron dengan flip-flop

B. LANDASAN TEORI

1. Pengertian Dasar VHDL


VHDL merupakan suatu bahasa pemrograman tingkat tinggi yang di
gunakan untuk memprogram suatu IC digital PLD (Programmable Logic
Device). Dimana terdiri atas sejumlah gerbang-gerbang yang dapat
diprogram dengan cara memutuskan fuse yang terdapat pada IC tersebut.
Seperti bahasa pemrograman yang lain. VHDL memiliki aturan-aturan
tersendiri seperti sistematika pemrograman sampai dengan syntax yang
digunakan. Teknologi VHDL ini terbagi berdasarkan jumlah gate yang
ada, yaitu :
a. < 500 gerbang SPLD (Simple
Programmable Logic Device)
b. 500 sampai 5000 gerbang CPLD (Complex Programmable
Logic Device)
c. 5000 sampai 10.000 gerbang FPGA (Fast Programmable
Gate Array)
d. 10.000 sampai > 20.000 gerbang ASIC (Aplication Specific
Intregrated Circuit)
Sebagai bahasa pemrograman dalam praktikum ini digunakan
software WARP 5.2 dari Cypress yang akan menghasilkan file dengan
extention *.jed yang nantinya akan digunakan dalam pemrograman IC
PLD dengan menggunakan ALL-07

2. Pemrograman Dengan Warp5.2


Pemrograman dengan menggunakan WARP5.2 harus memenuhi
kaidah pemrograman yang telah ditetapkan oleh vendor yang
bersangkutan, tetapi pada umumnya mengacu pada standart internasional
IEEE. Walaupun berbeda vendor namun bahasa pemrograman relatif
sama. Berikut ini gambaran umum mengenai teknik pemrograman VHDL.
Dalam pembuatan desain VHDL, bergantung pada alat bantu (tools)
yang digunakan, anatar perusahaan satu dengan yang lain berbeda-beda,
ada alat bantu yang dapat menghasilkan kode VHDL dari skema rangkaian
ada juga yang tidak. Tetapi pada dasarnya, kode VHDL merupakan kode
berbasis teks, yang bisa dibuat dengan menggunakan berbagai macam
program kata ( word processor ) seperti notepad, edit, ws, dan ms word.
Azas bangunan dari desain entity VHDL terdiri dari 2 unsur, yaitu :
a. Entity declaration
b. Architecture body
Desain entity merupakan abstraksi dari suatu desain yang
menggambarkan suatu sistem secara lengkap.

E N T IT Y

E n tity d e c la ra tio n (e x te r n a l v ie w )

In te r fa c e D e c la ra tio n

A r c h it e c tu r e b o d y ( in te r n a l v ie w )

F u n c tio n a l D e fin itio n

Gambar 1. Hubungan Antar Desain Entity dan Architecture Body

3. Entity Declaration
Entity declaration menggambarkan I/O dari desain entity. Entity
declaration analog dengan skematik simbol yang menjelaskan hubungan
komponen dalam suatu desain. Signal I/O di Entity declaration
didefinisikan sebagai port yang analog dengan pin dari skematik simbol.
Struktur penulisan entity declaration harus mengandung unsur name
dan port declaration, sedangkan port declaration menjelaskan nama-nama
pin I/O rangkaian digital dari suatu desain. Direction (mode) menjelaskan
kondisi I/O dan data type menjelaskan tipe data yang digunakan ( sesuai
dengan standar IEEE 1076/1164).
Ada 4 macam direction (mode), yaitu ;
a. IN merupakan Unidirection data input (Aliran data berasal dari luar
entity masuk kedalam entity).
b. OUT merupakan Unidirection data output (Aliran data berasal dari
dalam entity keluar entity ).
c. BUFFER merupakan data outptu dengan internal feedback.
( Digunakan sebagai port dan driver dengan architecture, serupa
dengan mode OUT tetapi juga berfungsi sebagai internal feedback
bukan Bidirection port ).
d. INOUT merupakan Bidirection signal. ( Signal driver dapat berasal
dari dalam atau luar entity, menggunakan mode INOUT ini untuk
signal yang benar-benar Bidirectional, kalau tidak akan mengurangi
kemampuan membaca kode sehingga sulit menentukan sumber
signal ).
Ada 2 macam Data type yang digunakan berdasarkan standar IEEE,
yaitu :
a. Berdasarkan standar IEEE 1076/93, yaitu : Boolean, Bit, Bit_vector
dan Integer.
b. Berdasarkan standar IEEE 1164, yaitu Std Ulogic, std Logic dan
std_Logic Vector.
Structure penulisan Entity Declaration
Entity entity_name is
Port (
[signal]{identifier{,identifier}:[mode] signal_type
[signal]{identifier{,identifier}:[mode] signal_type});
End [Entity][Entity_name];
Contoh :
Entity adder is port (
a,b : in std_logic_vector(3 downto 0);
cin : in std_logic;
sum : out std_logic_vector(3 downto 0);
cout : out std_logic);
end adder;

4. Architecture Body
Architecture Body dalam sebuah entity berfungsi untuk
mendeskripsikan apa yang akan dilakukan atau proses apa yang akan
sikerjakan oleh perangkat keras yang didesain.
Architecture Body berhubungan erat dengan Entity declaration
didalam desain entity VHDL. Architecture body menggambarkan fungsi
dari entity yang sekaligus menjelaskan fungsi dari entity . Jika entity
declaration ditampilkan sebagai kotak hitam yang mana input dan output
itu diketahui sedangkan apa yang ada didalam kotak itu tidak diketahui,
maka architecture body itu adalah isi dari kotak hitam tersebut.
Sedangkan didalam architecture body ada beberapa jenis, anata lain :
a. Structural description
b. Data flow description
c. Behavioral description
Penjelasan dari masing-masing architecture body, yaitu :
a. Structural description
Perencanaan didasarkan pada pemakaian komponen (logical gate)
pada library dan hubungan antar componen-componen tersebut (a set
of interconected component).
b. Data flow description
Perencanaan berdasarkan pada proses data transfer ( dari signal
atau dari input ke output tanpa statement sequential ) yang merupakan
sekumpulan dari concurent assignment statement. Perbedaan utama
antara data flow dengan behavioral adalah yang satu menggunakan
proses yang lain tidak. Penulisan persamaan pada data flow lebih
ringkas dan mudah yaitu menggunakan conditional signal assignment
(when-else) statement. Data flow menggunakan concurent assignment
lebih disukai dari pada proses dan sequential statement.
c. Behavioral description
Perencanaan didasarkan pada proses pengerjaan statement antar
input dan output secara sequential/berurutan/step by step dengan
menggunakan statement sequential (a set of sequential statement).
Keuntungan dari behavioral description yang merupakan high level
description adalah kita tidak perlu memfokuskan pada gate level pada
desain implementasi tetapi kita fokuskan pada usaha mengakuratkan
model fungsi. Proses statement dimulai dengan sebuah label yang
diikuti dengan tanda ‘:’ kemudian kata ‘proses’ dan sensitivity list dan
dibawahnya diikuti dengan sequential statement, setelah bagian
sequential statement selesai diakhiri dengan ‘end process’ dan label
process.
Yang termasuk sequential statement, antara lain :
1) Process statement
2) If-then-else statement
3) Case-when statement
4) For-loop statement
5) While-loop statement
Struktur penulisan Architecture Body
Architecture architecture_name of entity_name is
Type_declaration
|signal_declaration
|constan_declaration
|alias_declaration
|subprogram_declaration
begin
{process_statement
|concurent_signal_asignment_statement
|component_instantion_statement
|generate_statement}
End [architecture][architecture_name];
5. Declaration Component
Library adalah suatu tempat directory yang dipanggil pada saat kita
mengkompile yang format desain unit kita mungkin sebuah vendor
specific format. Kita biasanya menggunakan 2 library dalam desain kita
yaitu :
- IEEE library
- Work library
IEEE Library tempat menyimpan desain unit IEEE standar seperti
package std_1164 dan numeric_std. Dalam perintahnya kita menggunakan
library clause : library IEEE; Work library tempat menyimpan desain unit
yang kita rancang, setelah kita merancang desain unit dan desain tersebut
ingin di gunakan kembali maka kita dapat menempatkannya dalam library
work, untuk keperluan desain yang lebih besar lagi.
Packages adalah desain unit yang dapat digunakan untuk membuat
type, component, function dan declarasi lain untuk desaim unit lain.
Sebuah package terdiri dari sebuah package declaration dan option
package body. Penulisannya adalah : Use library_name.
Package_name.item;
Package declaration digunakan untuk mendeklarasikan item-item
seperti : Signal, type dan component.
Signal menyatakan wire-wire yang menghubungkan antar komponen,
type mendefinisikan state pada state machine dan component digunakan
untuk memanggil library component. Entity declaration, Architecture
body dan package declaration semuanya desain unit yang digabung dalam
satu file. Karena Entity declaration dan package declaration merupakan
desain unit utama maka dipisah dalam library dan use.
C. PROSEDUR PERCOBAAN
1. GALAXY
a. Membuat directori baru, misalnya d:\coba
b. Jalankan Galaxy dari Start Menu > Program > Warp5.2
c. Tekan Ctrl-N atau klik pada menu File dan Pilih New
d. Pilih Project [Target-Device]
Catatan : Text File – Membuat file text baru
Project [Target - Library] – Membuat project baru untuk
menghasilkan modul library
e. Didalam kotak Project Path, ketikkan lokasi project akan ditempatkan.
f. Didalam kotak Project Name, ketikkan nama file project yang akan
dibuat
g. Pastikan VHDL yang dipilih dan bukan Verilog, kemudian klik kiri
pada button Next.
h. Klik-kiri pada button Next (window Add Files to Project)
Catatan: Kita sudah mempunyai pembuatan file VHDL untuk project.
i. Didalam window Select Target Device, klik-kiri pada device yang kita
pilih ditambah dengan mengakses pada sisi kiri bagian SPLD.
j. Pilihlah c22v10 dan kemudian pilih pilihan paket yang diinginkan atau
gunakan pilihan default.
k. Klik pada butto Finish
l. Klik pada button OK untuk menyimpan project baru.

2. ACTIVE – VHDL SIMULATION

a. Klik pada icon Add Signals


b. Klik pada sinyal yang ingin di simulasikan
c. Klik pada button Add (Bisa juga dengan mendouble-klik sinyalnya)
d. Ulangi langkah 3 dan 4 untuk semua sinyal yang ingin di simulasikan
(Atau klik-kiri pada sinyal pertama yang ingin di tambahkan,
kemudian Shift+klik-kiri pada sinyal berikutnya. Ini juga
menambahkan sinyal yang ada diantaranya)
e. Klik pada button Cancel untuk menutup window Add Signals
f. Klik dan geser sinyal sesuai dengan susunan yang diinginkan.
g. Klik pada menu Waveform dan pilih Colorize Waveforms, sehingga
dihasilkan seperti contoh dibawah ini.
h. Klik pada menu Simulation dan pilih Initialize Simulation

i. Menempatkan Stimulus :
1) Klik pada sinyal yang mempunyai sifat sebagai clock.
2) Klik pada icon Stimulators untuk mengeluarkan window
Stimulator.
3) Klik panah kebawah pada window Stimulator type
4) Pilihlah pilihan Clock

5) Klik pada kotak 100 ns dan gantilah dengan delay clock yang yang
anda inginkan.
6) Klik pada button Apply
7) Klik pada sinyal yang bersifat bukan sinyal clock pada window
Waveform
8) Klik pada panah kebawah pada window Stimulator type .
9) Klik pada option Hotkey
10) Kliklah pada kotak Press new hotkey:
11) Tekan sembarang tombol yang anda inginkan pada keyboard
(Beberapa tombol akan tidak bekerja)
12) Klik pada tombol Apply
13) Ulangi langkah 7 sampai lagkah 12 untuk sinyal yang lainnya.
14) Klik pada tombol close
15) Klik panah kebawah pada kotak Time to run sampai dicapai waktu
simulasi yang anda inginkan per stepnya, misalnya 40ns

16) Dan sekarang kita siap untuk melakukan simulasi.


Gambar berikut memperlihatkan contoh apa yang kita inginkan dari akhir
langkah yang kita jalankan.

Berikut ini merupakan contoh langkah simulasi untuk menghasilkan


gambar diatas gambar diatas :
a. Klik pada salah satu sinyal

b. Klik sekali pada icon Run For


c. Balikkan sinyal quarter ke '1' dengan menekan sekali hotkey yang
bersangkutan

d. Klik sekali pada icon Run For


e. Balikkan kembali sinyal quarter ke ‘0’ dan nickel ke ‘1’
Catatan : Jika anda tidak membalikkan sinyal quarter ke ‘0’, mesin akan
mendeteksi anda menjalankan 2 quarter.

f. Klik sekali pada icon Run For


g. Balikkan kembali sinyal nickel ke ‘0’.

h. Klik sekali pada icon Run For Sinyal givedrink akan turun ke ‘0’
i. Balikkan sinyal quarter
j. Klik sekali pada icon Run For
k. Balikkan sinyal quarter dan dime

l. Klik sekali pada icon Run For Sekarang kedua sinyal givedrink
dan returnnickel akan menjadi ‘1’
m. Balikkan sinyal dime

n. Klik sekali pada icon Run For


o. Balikkan sinyal quarter

p. Klik dua kali pada icon Run For


q. Balikkan sinyal quarter

r. Klik empat kali pada icon Run For

Sinyal givedrink akan high untuk 1 siklus clock dan sinyal dime akan
high untuk 2 siklus clock menjual ‘coke’ dan mengembalikan 20 sen.

s. Klik pada icon Whole Page untuk mendapatkan bentuk sinyal


dalam satu halaman
HASIL PERCOBAAN

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity bakso is
port( clk,clr : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end bakso ;
architecture cilok of bakso is
signal cilok : std_logic_vector(3 downto 0);
begin
process(clk,clr)
begin
if clr='1' then
count<="0000";
elsif clk'event and clk='1' then
count<=cilok+2;
case cilok is
when "0000" =>
Q<="1011";
when "0010" =>
Q<="1100";
when "0100" =>
Q<="1101";
when "0110" =>
Q<="0011";
when "1000" =>
Q<="0010";
when "1010" =>
Q<="0001";
when "1100" =>
Q<="1111";
when "1110" =>
Q<="1110";
when "0001" =>
Q<="0100";
when "0011" =>
Q<="0101";
when "0101" =>
Q<="1010";
when "0111" =>
Q<="0000";
when "1001" =>
Q<="1001";
when "1011" =>
Q<="0110";
when "1101" =>
Q<="0111";
when "1111" =>
Q<="1000";
when others =>
Q<="1011";
end case;

end if;
end process;
end cilok;

HASIL SIMULASI
KESIMPULAN

VHDL merupakan suatu bahasa pemrograman tingkat tinggi yang di


gunakan untuk memprogram suatu IC digital PLD (Programmable Logic Device).
Dimana terdiri atas sejumlah gerbang-gerbang yang dapat diprogram dengan cara
memutuskan fuse yang terdapat pada IC tersebut. Seperti bahasa pemrograman
yang lain.

You might also like