Professional Documents
Culture Documents
Disusun oleh :
Anggarica Mudji Pratama (1A/01/0731130028)
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
B. LANDASAN TEORI
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 )
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.
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
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
Sinyal givedrink akan high untuk 1 siklus clock dan sinyal dime akan
high untuk 2 siklus clock menjual ‘coke’ dan mengembalikan 20 sen.
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