Post on 12-Mar-2019
LAB #3
PENGENALAN VHDL DAN PEMROGRAMAN IC
GAL MENGGUNAKAN ALL-11 UNIVERSAL
PROGRAMMER
TUJUAN
1. Mempelajari elemen-elemen dasar VHDL yang diimplementasikan dalam Warp.
2. Membuat aplikasi sederhana menggunakan VHDL dan simulasinya.
3. Mampu memprogam IC PLD menggunakan All-11 Universal Programmer.
4. Mampu membuat aplikasi-aplikasi yang lain dengan menggunakan IC
GAL22V10D.
PENDAHULUAN
Pengenalan VHDL
Berikut ini akan dijelaskan elemen dasar yang dari VHDL yang meliputi : identifier, data
object, data types, entity, architecture dan package.
1. 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 --.
2. 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;
Variable
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;
3. Data Types
Pada warp, sudah didefinisikan beberapa tipe data yang sering dipakai, yaitu :
integer, boolean, bit, character, string, bit_vector, std_logic dan
std_logic_vector.
4. Entity
VHDL tersusun oleh pasangan entity dan architecture-nya, entity mendefinisikan
desain I/O atau 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 :
Nama entity yang sudah dibuat akan dijadikan referensi 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. Tipe yang dipakai pada port adalah in (default), out, in-out dan buffer.
5. Architecture
Architecture pada suatu desain menggambarkan tentang kelakuan/proses serta
struktur dari entity.
Kode program dari deklarasi architecture adalah:
6. 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.
ARCHITECTURE architecture-name OF entity-name IS
[type-declarations]
[signal-declarations]
[constant-declarations]
BEGIN
[architecture definition]
END architecture-name;
ENTITY entity-name IS PORT
[signal][sig-name,..]:[direction] type;
[;signal[sig-name,..]:[direction] type]
.
.
);
END entity-name;
7. Generic Array Logic (GAL)
GAL merupakan IC tipe PLD yang paling banyak digunakan, GAL diproduksi
oleh banyak vendor IC (contoh : Cypress, Latice dan Texas Instrument).
Semua ekspresi digital dapat direpresentasikan dengan mengunakan sum of
product(SOP), oleh karena itu, dengan menggunakan array AND/OR yang dapat
diprogram, akan diperoleh banyak aplikasi rangkaian digital yang diinginkan.
GAL berisi array AND/OR (gambar Fig. III-1), pada array AND, semua input
dan komplemennya dihubungkan dengan gate AND, output dari array AND
(product) dihubungkan dengan gate OR (sum).
Fig. III-1. Struktur GAL/PAL
Pada GAL, array input AND dapat diputus atau dihubungkan kembali dengan
jalan memprogramnya. Sebagai contoh, jika diinginkan persamaan logika
FEDCA .... maka hubungan array input AND pada GAL dapat ditunjukkan
seperti gambar Fig. III-2.
Fig. III-2. Memprogram Input AND
Pada IC PLD terdahulu, hubungan array input AND terbuat dari fuse yang akan
putus jika dialiri tegangan yang tinggi. Dengan fuse ini, maka array input AND
tidak dapat diprogram kembali. Generasi IC PLD sekarang menggunakan
EEPROM, sehingga array input AND dapat diprogram kembali.
Untuk memprogram sebuah IC PLD, bisa dilakukan dengan menuliskan
programnya dengan menggunakan VHDL dan memasukkan hasil kompilasinya
ke dalam IC dengan menggunakan Programmer. Salah satu IC Programmer yang
sering dipakai adalah All-11 Universal Programmer yang memiliki kemampuan
untuk memprogram IC PLD, MCU, EPROM, EEPROM dan lain-lain.
KEBUTUHAN
1. Koper lengkap HBE-LogicCircuit-Digital
2. IC GAL22V10D
3. Kabel tembaga
4. IC Programmer ALL-11
5. PC dengan program WARPR 6.3 Galaxy dan Active-HDL Simulator
TUGAS PENDAHULUAN
1. Baca dan pahami Technical Guide terlebih dahulu!
2. Pelajari semua datasheet dari semua IC yang digunakan pada percobaan ini!
3. Apa yang dimaksud dengan VHDL? Apa bedanya dengan Verilog?
4. Apakah perbedaan dari tipe data std_logic dengan std_logic_vector! Jelaskan!
5. Tulislah kode program dalam VHDL untuk membuat aplikasi sederhana OR 3
input, lengkap dengan library, entity dan architecture-nya!
6. Jelaskan prinsip kerja PAL/GAL! Cari datasheet IC GAL22V10D!
7. Gambarkan dan jelaskan fungsi kaki-kaki dari IC GAL22V10D!
EKSPERIMEN 1 : VHDL
[Percobaan 1] Membuat AND 2 Input menggunakan VHDL [Persiapan]
Alat I/O -
Modul -
Lain-lain PC dengan program WARPR 6.3 Galaxy
[Prosedur]
1. Bukalah Software 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 Fig. III-3)
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
Fig. III-3
Fig. III-3. Memilih Device
Fig. III-4. Editor Yang Masih Kosong
12. Simpan file kosong tersebut melalui File -> Save, letakkan dalam satu alamat
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 tipe data dari masing-
masing 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:
15. Langkah berikutnya adalah menuliskan Package dari gerbang AND 2 input tadi,
tuliskan Package dengan nama and2in_pkg dengan kode program di bawah ini!
Letakkan sebelum entity!
16. Langkah berikutnya adalah menuliskan Library, ketikkan library sesuai dengan
kode program di bawah ini! Letakkan satu sebelum Package dan satu lagi sebelum
Entity!
[Percobaan 2] Membuat AND 3 Input menggunakan VHDL
[Persiapan]
Alat I/O -
Modul -
Lain-lain PC dengan program WARPR 6.3 Galaxy
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;
end archand2in;
package and2in_pkg is
component and2in
port(input: in std_logic_vector(1 downto 0);
output: out std_logic);
end component;
end and2in_pkg;
library ieee;
use ieee.std_logic_1164.all;
[Prosedur]
Fig. III-5. AND 3 Input Menggunakan AND 2 Input
1. Buat file text baru, dan beri nama “and3in.vhd” , letakkan dalam folder yang
sama dengan file Project “and3in.pfg”!
2. Tuliskan library, entity dan architecture-nya dengan kode program berikut ini :
3. Langkah selanjutnya adalah menambahkan file VHDL “and2in.vhd” dan
“and3in.vhd” ke dalam project. Tambahkan file tersebut melalui Project -> Add
Files… , apabila sudah selesai, klik Ok
4. Langkah selanjutnya adalah menjadikan file “and3in.vhd” sebagai Top Level.
Buatlah file “and3in” sebagai top level melalui klik kanan kemudian pilih Set
Top
5. Agar proses kompilasi berjalan sesuai dengan yang diinginkan, perlu dilakukan
setting pada compiler, Klik Project -> Compiler Options…, pada I/O , Unused
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;
Outputs: pilih “0”, dan pada Simulation , Timing Model, pilih “Active-
HDLSIM/Active-VHDL”
6. Kemudian Compile project tersebut melalui Compile -> Project. Maka akan
dihasilkan file baru dengan nama “and3in.jed”(file ini akan digunakan untuk
men-download program ke IC).
[Percobaan 3] Mensimulasikan dengan Active-HDL Sim
[Persiapan]
Alat I/O -
Modul -
Lain-lain PC dengan program WARPR 6.3 Galaxy dan Active-HDL
Simulator
[Prosedur]
1. Bukalah aplikasi Active-HDL Sim dari Tools -> Active-HDL Sim
2. Bukalah file and3in.vhd pada alamat “C:\Rangkaian Logika\VHDL\and3in\vhd”
melalui menu File -> Open VHDL
3. Kemudian akan muncul jendela seperti gambar di bawah ini:
Fig. III-6. Active-HDL Sim
4. Tambahkan sinyal yang akan disimulasikan dengan cara memilih Waveform -> Add
Signals…, tambahkan sinyal a, b, c dan y kedalam simulasi dengan cara double-
click
Fig. III-7. 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
Fig. III-8. 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:
Fig. III-9. Hasil Simulasi
Tabel III-1. Hasil Simulasi Active-HDL Sim AND 3 Input
Input Output
a b c y
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
EKSPERIMEN 2 : MEMPROGRAM IC GAL
[Percobaan 4] Pemrograman IC menggunakan Universal Programmer [Persiapan]
Alat I/O Slide Switch (SW1, SW2, SW3), LED (D1, D2)
Modul -
Lain-lain PC dengan IC Programmer ALL-11, Kabel (untuk
menghubungkan IC GAL dengan alat I/O
[Prosedur]
1. Matikan All-11 Universal Programmer
2. Letakkan IC GAL pada All-11 Universal Programmer
3. Nyalakan All-11 Universal Programmer
4. Bukalah file “access.exe”!
5. Pada pilihan Device, pilihlah produk buatan Lattice, lalu pilih GAL22V10 (no
UES)
Fig. III-10. Menu Device
6. Setelah itu akan muncul jendela di bawah ini:
Fig. III-11. Jendela Download
7. Hapuslah isi IC GAL melalui pilihan Erase!
8. Pilih File, lalu pilih Load JEDEC file, cari alamat tempat kalian menyimpan file
“and3in.jed”!
9. Lakukan pemrograman dengan memilih menu Program
10. Matikan All-11 Universal Programmer
11. Ambil IC GAL dari All-11 Universal Programmer
12. Letakkan IC GAL yang sudah terprogram pada breadboard, rangkaikan dengan
benar, arahkan output (kaki 15) ke sebuah LED pada kaki anoda!
13. Lengkapilah tabel berikut ini, bandingkan dengan hasil simulasi pada tabel:
Tabel III-2. Hasil Simulasi AND 3 Input Dengan IC GAL
Input Output
a b c y
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
TUGAS MODUL
1. Buatlah aplikasi gerbang OR 5 input !
2. Perhatikan kode berikut ini :
Jelaskan maksud dari kode: “input: in std_logic_vector(1 down to 0)”!
Jelaskan perbedaannya dengan kode : “output: out std_logic”!
3. Terangkan perbedaan prinsip kerja dari PAL/GAL dibandingkan dengan FPGA!
4. Buatlah kode program aplikasi Demultiplexer 2 to 4 dengan menggunakan
VHDL, buat menjadi sebuah package !
5. Buatlah sebuah program aplikasi Demultiplexer 4 to 16 dengan memanfaatkan
package pada nomor 4! Simulasikan! Sertakan print-out hasil simulasi ke dalam
laporan!
entity and2in is port(
input: in std_logic_vector(1 downto 0);
output: out std_logic);
end and2in;