Percobaan IV
IV-1
Percobaan IV PENGENALAN VHDL IV.1 Tujuan 1. Mempelajari elemen-elemen dasar VHDL yang diimplementasikan dalam Warp. 2. Membuat aplikasi sederhana menggunakan VHDL. 3. Mensimulasikan aplikasi tersebut.
IV.2 Pengantar Berikut ini akan dijelaskan elemen dasar yang dari VHDL yang meliputi : identifier, data object, data types, entity, architecture dan package. Identifier Identifier dalam VHDL terdiri dari satu atau lebih karakter yang berupa karakter huruf, angka atau garis bawah dengan aturan berikut : Karakter yang diperbolehkan adalah huruf besar(A..Z), huruf kecil(a..z), huruf(0..9) dan garis bawah(_). Karakter pertama harus berupa huruf. Karakter terakhir tidak diperbolehkan berupa garis bawah(_), penggunaan 2 karakter garis bawah(_) juga tidak diperbolehkan. Penggunaan huruf besar dan huruf kecil dianggap sama (tidak case sensitive). Komentar dalam VHDL dimulai dengan karakter --. Data Objects Dalam VHDL dikenal 3 obyek data yaitu : Konstanta, Variable dan Signal Konstanta Obyek konstanta dapat menyimpan sebuah nilai yang didefiniskan saat deklarasi konstanta. Nilai yang sudah didefinisikan tersebut tidak dapat diubah selama proses desain. Deklarasi : constant identifier[,identifier..]:type[:value]; Contoh : constant bus_width: integer := 8; Variabel Obyek variabel dapat menyimpan sebuah nilai yang diberikan saat desain, dan nilai tersebut dapat dirubah kapanpun saat desain. Deklarasi : variable identifier[,identifier..]:type[:value]; Contoh : variable ctrl_bits: std_logic; Signal Obyek Signal bisa disamakan dengan variable, perbedaannya adalah bahwa signal dapat menyimpan ataupun melepaskan nilai logika, sedangkan variable tidak dapat, oleh karena itu, signal dapat diwujudkan dalam elemen memori. Deklarasi : signal identifier[,identifier..]:type[:value]; Contoh : signal con: std_logic;
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-2
Data Types Pada warp, sudah didefinisikan beberapa type data yang sering dipakai, yaitu : integer, boolean, bit, character, string, bit_vector, std_logic dan std_logic_vector. Entity VHDL tersusun oleh pasangan entity dan architecture-nya, entity mendefinisikan desain I/Oatau interface-nya, sedangkan architecture menyatakan kandungan atau kelakuan dari desain. Pasangan entity dan architecture dapat digunakan sebagai desain yang lengkap atau dapat digunakan juga sebagai komponen. Kode program dari deklarasai entity adalah : ENTITY entity-name IS PORT [signal][sig-name,..]:[direction] type; [;signal[sig-name,..]:[direction] type] . . ); END entity-name;
Nama entity yang sudah dibuat akan dijadikan referansi untuk architecture-nya. Entity mendeklarasikan port, port adalah obyek dari kelas signal yang didefinisikan pada entity. Masing-masing port memiliki nama port, mode dan type. Type yang dipakai pada port adalah in (default), out, inout dan buffer. Architecture Architecture pada suatu desain menggambarkan tentang kelakuan/proses serta struktur dari entity. Kode program dari deklarasi architecture adalah: ARCHITECTURE architecture-name OF entity-name IS [type-declarations] [signal-declarations] [constant-declarations] BEGIN [architecture definition] END architecture-name;
Package Sebuah package dapat mendeklarasikan komponen berupa pasangan entity dan architecture, type, konstanta atau fungsi agar item-item tersebut dapat digunakan pada desain yang lain. Package sering kali dituliskan sebelum entity dan architecture. Agar sebuah desain dapat menggunakan package yang sudah dibuat, maka pada desain tersebut harus memanggil package yang akan dipakai dengan menggunakan klausa USE
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-3
IV.3 Flip – Flop IV.3.a Alat dan Bahan 1. Personal Computer 2. Software WARPR 6.3 Galaxy 3. Software Active-HDL Simulator
1 Buah.
IV.3.b Percobaan Membuat AND 2 Input menggunakan VHDL Pada percobaan ini akan dibuat sebuah aplikasi gerbang AND dengan signal input input(0) dan input(1) dan signal output y, seperti ditunjukkan gambar V-1
Gambar IIV-1 AND 2 input
1. Bukalah Sofware Galaxy 2. Buat Project baru melalui menu File > New, kemudian pilih Project [Target Device], kemudian klik Ok 3. Pilih VHDL pada Project Type. 4. Masukkan nama Project-nya “and3in” 5. Masukkan Project Path pada direktori :”C:\Rangkaian Logika\VHDL\and3in” 6. Klik Next untuk menuju Add Files Wizard. Add Files Wizard digunakan untuk menambahkan file VHDL kedalam Project. Abaikan saja dialog tersebut dan klik Next untuk menuju ke Target Device Wizard. 7. Pilihlah device nya dengan cara memilih SPLD (Small PLDs) ->c22v10, pada Package pilih PALC22V10D-25PC (gambar V-2) 8. Klik Finish untuk membuat project 9. Klik Yes untuk menyimpan project 10. Buatlah file baru melalui File -> New 11. Pilih Text File, lalu klik Ok, kemudian akan muncul text editor seperti pada gambar V-2
Gambar IIV-2 Memilih Device Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-4
Gambar IIV-3 Editor yang masih kosong
12. Simpan file kosong tersebut melalui File -> Save, letakkan dalam satu direktori dengan file project “and3in.pfg” dan beri nama file tersebut “and2in.vhd 13. Berikutnya adalah menuliskan entity, kita akan membuat entity untuk gerbang AND dengan 2 input, entity mendeklarasikan nama, arah dan type data dari masingmasing port yang akan digunakan. Tuliskan entity berikut ini : entity and2in is port( input: in std_logic_vector(1 downto 0); output: out std_logic); end and2in;
14. Langkah berikutnya adalah menuliskan Architecture dari AND 2 input yang kita buat. Architecture mendefinisikan kelakuan dari komponen yang dibuat, dan letaknya selalu berada setelah entity, ketikkan architecture AND 2 input berikut : architecture archand2in of and2in is begin and2in: process (input) begin if (input = "00") then output <= '0'; elsif (input = "01") then output <= '0'; elsif (input = "10") then output <= '0'; elsif (input = "11") then output <= '1'; end if; end process; Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201 end archand2in;
Percobaan IV
IV-5
15. Langkah berikutnya adalah menuliskan Package dari gerbang AND 2 input tadi, tuliskan Package dengan nama and2in_pkg dengan kode program dibawah ini! , letakkan sebelum entity ! package and2in_pkg is component and2in port(input: in std_logic_vector(1 downto 0); output: out std_logic); end component; end and2in_pkg;
16. Langkah berikutnya adalah menuliskan Library, ketikkan library sesuai dengan kode program dibawah ini !, letakkan satu sebelum Package dan satu lagi sebelum Entity ! library ieee; use ieee.std_logic_1164.all;
Membuat AND 3 Input menggunakan VHDL Pada percobaan diatas, kita sudah membuat gerbang AND 2 input dan memasukkannya kedalam package dengan nama and2in_pkg. Pada percobaan ini kita akan membuat gerbang AND 3 input dengan mempergunakan AND 2 input yang sudah dibuat tersebut, secara visual dapat digambarkan seperti gambar V-4
Gambar IIV-4 AND 3 input menggunakan AND 2 input
Dari gerbang AND 2 input teresebut kita perlu membuat program lagi untuk merangkaikannya menjadi gerbang AND 3 input. 17. Buat file text baru, dan beri nama “and3in.vhd” , letakkan dalam folder yang sama dengan file Project “and3in.pfg” ! 18. Tuliskan library, entity dan architecture-nya dengan kode program berikut ini :
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-6
library ieee; use ieee.std_logic_1164.all; use work.and2in_pkg.all; entity and3in is port ( a,b,c: in std_logic; y: out std_logic); attribute pin_numbers of and3in:entity is " a:1 b:3 c:5 y:15 "; end and3in; architecture archand3in of and3in is signal con : std_logic; begin and_1: and2in port map ( input(0) => a, input(1) => b, output => con ); and_2: and2in port map ( input(0) => con, input(1) => c, output => y ); end archand3in;
19. Langkah selanjutnya adalah menambahkan file VHDL “and2in.vhd” dan “and3in.vhd” kedalam project. Tambahkan file tersebut melalui Project -> Add Files… , apabila sudah selesai, klik Ok 20. Langkah selanjutnya adalah menjadikan file “and3in.vhd” sebagai Top Level. Buatlah file “and3in” sebagai top level melalui klik kanan kemudian pilih Set Top 21. Agar proses kompilasi berjalan sesuai dengan yang diinginkan, perlu dilakukan setting pada compiler, Klik Project -> Compiler Options…, pada I/O , Unused Outputs: pilih “0”, dan pada Simulation , Timing Model, pilih “ActiveHDLSIM/Active-VHDL” 22. Kemudian Compile project tersebut melalui Compile -> Project
Mensimulasikan dengan Active-HDL Sim 1. Bukalah aplikasi Active-HDL Sim dari Tools -> Active-HDL Sim 2. Bukalah file and3in.vhd pada direktori “C:\Rangkaian Logika\VHDL\and3in\vhd” melalui menu File -> Open VHDL 3. Kemudian akan muncul jendela seperti gambar dibawah ini :
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-7
Gambar IIV-5 Active-HDL Sim
4. Tambahkan sinyal yang mau disimulasikan dengan cara memilih Waveform -> Add Signals…, tambahkan sinyal a, b, c dan y kedalam simulasi dengan cara double-klik
Gambar IIV-6 Memilih Sinyal
5. Setelah selesai klik Add 6. Pada sinyal a, set Stimulator dengan cara Klik-kanan pilih Stimulators…, pada Stimulator type: pilih Clock , panjang gelombangnya beri nilai 2000ns, kemudian klik Apply , setelah selesai, klik Close
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-8
Gambar IIV-7 Stimulators
7. Dengan cara yang sama, set stimulators untuk sinyal b dengan tipe Clock dengan panjang gelombang 1000ns 8. Dengan cara yang sama, set stimulators untuk sinyal c dengan tipe Clock dengan panjang gelombang 500ns 9. Pada toolbar isian nilai 100ns, isikan nilai baru 4000ns 10. Pada toolbar, klik Run Until 11. Dengan mengatur gambar melalui Zoom in dan Zoom out maka anda akan mendapatkan gambar simulasi berikut ini :
Gambar IIV-8 Hasil simulasi
12. Dari hasil simulasi diatas, lengkapi tabel berikut : a b c 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
y
Tabel IIV-1
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201
Percobaan IV
IV-9
IV.3.c Pertanyaan 1. Perhatikan kode berikut ini : entity and2in is port( input: in std_logic_vector(1 downto 0); output: out std_logic); end and2in;
Jelaskan maksud dari kode: “input:in std_logic_vector(1 down to 0)”! Jelaskan perbedaannya dengan kode : “output: out std_logic” ! 2. Dengan menggunakan Package and2in_pkg diatas, buatlah aplikasi baru untuk gerbang gate 4 input ! 3. Buatlah kode program aplikasi Demultiplexer 2 to 4 dengan menggunakan VHDL, buat menjadi sebuah package !
Praktikum Rangkaian Logika Laboratorium Komputer dan Digital B401/B201