labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/el2102 - sistem digital/2012... · web viewdan...
TRANSCRIPT
MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITAL
Michael Aditya (13211066)Asisten: Kiki Wirianto
Tanggal Percobaan:5/12/2012EL2195-Praktikum Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
AbstrakPada modul 6 “ Proyek Perancangan Rangkaian Digitial “ praktikkan ditugaskan untuk mengaplikasikan sendiri metode-metode yang telah dilakukan pada praktikum sebelum-sebelumnya. Praktikkan diminta untuk membuat suatu proyek perancangan yang menggunakan aplikasi VHDL, FPGA , dan VGA. Pada praktikum ini saya memilih untuk membuat suatu tampilan seperti “snake” namun lebih sederhana. Ada kotak yang dapat digerakkan dengan switch FPGA, apabila kotak tersebut menyentuh batas maka akan kembali ke koordinat awal. Dan apabila program menyentuh area “orange” maka kotak akan berubah menjadi abu-abu, apabila keluar area tersebut kotak akan kembali bewarna kuning. Diharapkan dengan proyek ini, praktikum sistem digital yang telah dilakukan dapat teraplikasikan.Kata kunci: LCD, VGA, FPGA
1. PENDAHULUAN Praktikum modul 6 mengenai “ Proyek Perancangan Rangkaian Digital” bertujuan :
Menspesifikasikan suatu sistem digital sederhana
Membagi sistem menjadi satu atau lebih jalur data dan kendali
Mendesain jalur data untuk sistem Mendesain kendali untuk sistem Mengintegrasikan jalur data dan
kendali ke dalam sistem secara keseluruhan
Melakukan tes menyeluruh terhadap sistem
Mengimplementasikan sistem digital menggunalan FPGA dan komponen tambahan yang diperlukan
Menguji dan menganalisa sistem yang sudah dibangun
2. DASAR TEORI
Berikut ini adalah beberapa dasar teori yang digunakan dalam percobaan modul 6 yang sama dengan percobaan modul 5 yakni :
Video Graphics Array (VGA) masih menjadi interface yang popular untuk sebuah tampilan. VGA interface ini masih banyak ditemukan di beberapa device sekarang, misalnya layar LCDdan proyektor. VGA interface ini terdapat juga di board altera yang kita gunakan saat ini.
Interface ke VGA menggunakan 2 jenis sinyal, yaitu : sinyal warna (Merah,Hijau,Biru)
Dan sinyal sinkron (horizontal dan vertical). Berikut penjelasnnya :
Horizontal Sync (TTL level)
Sinyal ini akan aktif pada range piksel kolom 0 sampai 639. Sehingga kalau siyal ini tidak aktif, yang terjadi adalah pergantian baris.
Vertical Sync ( TTL Level)
Sinyal ini akan aktif pada range piksel baris 0 sampai dengan 479. Sehingga kalau sinyal ini tidak aktif yang terjadi adalah pergantian layar. Atau kembali ke baris pertama.
Sinyal RGB (Analog 3 pin : 0,7-1 V)
Sinyal ini mempresentasikan intensitas untuk masing-masing komponen warna merah hijau, dan biru untuk setiap pixel yang saat itu aktif. Sehingga yang terjadi ketiga sinyal ini berubah-ubah sesuai pixel yang sedang aktif dalam proses scanning (dari kiri ke kanan untuk setiap baris, selanjutnya dari baris paling atas sampai baris paling bawah).[1]
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB1
3. METODOLOGI
3.1 KOMPONEN DAN ALAT PERCOBAAN1. Board FPGA tipe UP2 atau DE12. Catu daya + kabel dan konektor
tambahan serta kabel downloader3. Monitor LCD
3.2 CARA KERJA
4. HASIL DAN ANALISIS 4.1 Percobaan 6 : Pembuatan “Maze”
dan kotak sebagai moving object
Gambar hasil percobaan 6 part 1
Gambar hasil percobaan 6
Gambar kotak dapat berubah warna
Analisis :Pada percobaan ini ingin dibuat suatu proyek permainan seperti snake hanya saja lebih sederhana. Kita akan membuat kotak berwarna kuning (diubah warna dari merah) berukuran 50 x 50 pixels. Kotak merah ini dapat digerakkan dengan menggunakan push button pada FPGA (atas,bawah,kiri,kanan) selain itu kita juga dapat mengatur kecepatan dari gerak kotak tersebut. Apabila Switch ‘1’ dinyalakan maka kotak akan berjalan dengan kecepatan ‘3’ apabila switch’1’ off dan switch ‘2’ dinyalakan maka kotak akan berjalan dengan kecepatan ‘5’. Apabila switch ‘1’ dan switch’2 dinyalakan bersama-sama maka kecepatan kotak adalah ‘15’. (Dapat dilihat pada video nanti). Secara target proyek ini telah mencapai target yang diharapkan.
Dasar Logika dari proyek ini adalah, kita membuat kotak yang dapat diatur kecepatannya dan kita telah mengatur posisi awal kotak. Apabila kotak mencapai batas tertentu (bagian atas pixel ke 20, bawah pixel ke 459, kiri pixel ke 20, dan kanan pixel ke 619) maka kotak tersebut akan kembali ke posisi awalnya (100,150). Program ini terlihat sederhana, namun mempunyai beberapa keunikan, saat kotak tiba di area berwarna orange, maka kotak dapat berubah warna menjadi abu-abu. Apabila program ini dikembangkan dapat menjadi lebih indah dan lebih baik.
5. K esimpulanLaporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
Gambar lah batas-batas yang menjadi "maze" dalam permainan ini,
dengan cara membuat program pada VHDL.
buatlah kotak yang berada di antara batas-batas berukuran 50x50
pixel.
buat lah suatu kotak dikoordinat tertentu
dan atur VHDL agar saat berada di zona tersebut
berubah warna.
program diatur agar apabila kotak mengenai batas akan kembali ke
koordinat awal.
FSM & VHDL beserta
modul VGAFPGA Display LCD
VHDL dapat membuat proyek sederhana dan pengaturan logika dapat kita lakukan apda VHDL.
Sinyal-sinyal pada VGA adalah sinyal horizontal sync dan vertical sync sedangkan warna nya diatur oleh sinyal RGB.
VGA bekerja dengan sistem Razor Scanning yakni memeriksa dari bagian kiri atas hingga ke kanan bawah.
VGA merupakan output FPGA dengan tampilan yang lebih menarik dengan bantuan display LCD.
Daftar Pustaka[1] Mervin T. Hutabarat. 2012. Petunjuk
Praktikum Sistem Digital, Sekolah Teknik Elektro dan Informatika ITB, Bandung.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB3
LAMPIRANVHDL PERCOBAAN 6
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY color_rom_vhd IS
PORT( i_M_US : IN STD_LOGIC; i_K_US : IN STD_LOGIC; i_H_US : IN STD_LOGIC; i_M_BT : IN STD_LOGIC; i_K_BT : IN STD_LOGIC; i_H_BT : IN STD_LOGIC; -- switch speed i_speed : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
i_clk_20Hz : IN STD_LOGIC;i_up : IN STD_LOGIC;i_down : IN STD_LOGIC;i_right : IN STD_LOGIC;i_left : IN STD_LOGIC;
i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); i_pixel_row : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); o_red : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ); o_green : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ); o_blue : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ));
END color_rom_vhd;
ARCHITECTURE behavioral OF color_rom_vhd IS
SIGNAL FLAG_V_MIN : INTEGER := 150;-- batas kotak kiriSIGNAL FLAG_V_MAX : INTEGER := 200;-- batas kotak kananSIGNAL FLAG_H_MIN : INTEGER := 150;-- batas kotak atasSIGNAL FLAG_H_MAX : INTEGER := 200;-- batas kotak bawah
CONSTANT R_TF_0 : INTEGER := 0; --batas awal merahCONSTANT R_TF_1 : INTEGER := 20;--batas akhir merah dan batas awal hitamCONSTANT R_TF_2 : INTEGER := 619;--batas akhir hitam dan batas awal merahCONSTANT R_TF_3 : INTEGER := 639;--batas akhir merahCONSTANT R_TF_4 : INTEGER := 210;CONSTANT R_TF_5 : INTEGER := 280;CONSTANT R_TF_6 : INTEGER := 250;
CONSTANT C_TF1_R : INTEGER := 0;CONSTANT C_TF1_L : INTEGER := 639;CONSTANT C_TF2_R : INTEGER := 0;CONSTANT C_TF3_R : INTEGER := 20;CONSTANT C_TF4_L : INTEGER := 459;CONSTANT C_TF5_R : INTEGER := 479;CONSTANT C_TF6_L : INTEGER := 275;CONSTANT C_TF6_R : INTEGER := 335;
SIGNAL M_TF1, M_TF2 : STD_LOGIC; SIGNAL K_TF1, K_TF2 : STD_LOGIC; SIGNAL H_TF1, H_TF2 : STD_LOGIC; SIGNAL grid : STD_LOGIC;
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB4
SIGNAL Tambah : INTEGER; --Penambahan piksel tiap clock
COMPONENT clockdiv ISPORT ( CLK : IN STD_LOGIC;
DIVOUT : BUFFER STD_LOGIC);END COMPONENT;
SIGNAL FLAG : STD_LOGIC;BEGIN
PROCESS(i_pixel_row,i_pixel_column, i_M_US, i_K_US, i_H_US, i_M_BT, FLAG_H_MIN, FLAG_V_MIN , FLAG_H_MAX, FLAG_V_MAX, i_clk_20Hz)BEGIN
FLAG_V_MIN <= 150; --inisialisasi posisi kotak bergerak (tidak ada juga tidak apa-apa)FLAG_V_MAX <= 200;FLAG_H_MIN <= 150;FLAG_H_MAX <= 200;
IF (i_speed = 1) THEN –pengaturan kecepatanTambah <= 3; --Mode Cepat, tiap clock akan bertambah 3 piksel
ELSIF (i_speed = 2) THENTambah <= 5; --Mode Cepat, tiap clock akan bertambah 5 piksel
ELSIF (i_speed = 3) THEN Tambah <= 15; --Mode sangat Cepat, tiap clock akan bertambah 15 piksel
ELSE Tambah <= 1; --Mode Lambat, tiap clock akan bertambah 1 piksel
END IF;
--Atas dan Bawah IF (i_clk_20Hz'EVENT) AND (i_clk_20Hz='1') AND (i_down = '0') AND (i_up = '1') AND (i_left ='1') AND (i_right ='1') THEN --Bila Tombol Bawah ditekan
IF (FLAG_V_MIN >= R_TF_1) AND (FLAG_V_MAX <= R_TF_2) THEN --Kotak belum keluar dari bagian atas dan bawah layar
FLAG_V_MIN <= FLAG_V_MIN + Tambah; --Sisi atas kotak diturunkan sejauh Tambah
FLAG_V_MAX <= FLAG_V_MAX + Tambah; --Sisi bawah kotak diturunkan sejauh Tambah
ELSE --Kotak keluar dari bagian bagian bawah, kotak direset ke posisi awalFLAG_V_MIN <= 150;FLAG_V_MAX <= 200;
END IF;
ELSIF (i_clk_20Hz'EVENT) AND (i_clk_20Hz='1') AND (i_down = '1') AND (i_up = '0') AND (i_left ='1') AND (i_right ='1') THEN --Bila Tombol Atas ditekan
IF (FLAG_V_MIN >= R_TF_1) AND (FLAG_V_MAX<= R_TF_2) THEN --Kotak belum keluar dari bagian atas dan bawah layar
FLAG_V_MIN <= FLAG_V_MIN - Tambah; --Sisi atas kotak diturunkan sejauh Tambah
FLAG_V_MAX <= FLAG_V_MAX - Tambah; --Sisi bawah kotak diturunkan sejauh Tambah
ELSE --Kotak keluar dari bagian bagian bawah, kotak direset ke posisi awalFLAG_V_MIN <= 150;FLAG_V_MAX <= 200;
END IF;
ELSE --Tombol Atas dan Bawah tidak ditekan, Kotak DiamFLAG_V_MIN <= FLAG_V_MIN;
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB5
FLAG_V_MAX <= FLAG_V_MAX;END IF;
--Kiri dan KananIF (i_clk_20Hz'EVENT) AND (i_clk_20Hz='1') AND (i_left = '1') AND (i_right = '0') AND (i_down = '1') AND (i_up = '1') THEN --Bila Tombol Kanan ditekan
IF (FLAG_H_MIN>= C_TF3_R) AND (FLAG_H_MAX <= C_TF4_L) THEN --Kotak belum keluar dari bagian kiri dan kanan layar
FLAG_H_MIN <=FLAG_H_MIN + Tambah; FLAG_H_MAX <= FLAG_H_MAX + Tambah; --Sisi kanan kotak digeser ke kanan
sejauh TambahELSE --Kotak keluar dari bagian kanan, kotak direset ke kiri
FLAG_H_MIN <= 150;FLAG_H_MAX <= 200;
END IF;
ELSIF (i_clk_20Hz'EVENT) AND (i_clk_20Hz='1') AND (i_left = '0') AND (i_down = '1') AND (i_down = '1') AND (i_up = '1')THEN --Bila Tombol Kiri ditekan
IF (FLAG_H_MIN >= C_TF3_R) AND (FLAG_H_MAX <= C_TF4_L) THEN --Kotak belum keluar dari bagian atas dan bawah layar
FLAG_H_MIN <= FLAG_H_MIN - Tambah; --Sisi kiri kotak digeser ke kiri sejauh Tambah
_H_MAX <= FLAG_H_MAX - Tambah; --Sisi kanan kotak digeser ke kiri sejauh Tambah
ELSE --Kotak keluar dari bagian kiri, kotak direset ke kananFLAG_H_MIN <= 150;FLAG_H_MAX <= 200;
END IF;ELSE --Tombol Kiri dan Kanan tidak ditekan, Kotak Diam
FLAG_H_MIN <= FLAG_H_MIN;FLAG_H_MAX <= FLAG_H_MAX;
END IF;
END PROCESS;
PROCESS(i_pixel_row,i_pixel_column) –pembuatan seluruh design gambar yang adaBEGIN
IF ((i_pixel_row >= FLAG_H_MIN) AND (i_pixel_row <= FLAG_H_MAX) AND (i_pixel_column >= FLAG_V_MIN) AND (i_pixel_column <= FLAG_V_MAX)) THEN
FLAG <= '1';ELSE
FLAG <= '0';END IF; IF ((i_pixel_row > R_TF_0) AND (i_pixel_row < R_TF_1) ) AND ((i_pixel_column >=
C_TF1_R) AND (i_pixel_column <= C_TF1_L) ) THEN M_TF1 <= '1';ELSE M_TF1 <= '0';END IF;
IF ((i_pixel_row > C_TF4_L) AND (i_pixel_row < C_TF5_R) ) AND ((i_pixel_column >=
C_TF1_R) AND (i_pixel_column < C_TF1_L) ) THEN M_TF1 <= '1';ELSE M_TF2 <= '0';END IF;
IF ((i_pixel_row > R_TF_0) AND (i_pixel_row < C_TF4_L) ) AND ((i_pixel_column >=
C_TF1_R) AND (i_pixel_column < C_TF3_R) ) THEN M_TF1 <= '1';ELSE K_TF1 <= '0';END IF;
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB6
IF ((i_pixel_row > R_TF_0) AND (i_pixel_row < C_TF4_L) ) AND ((i_pixel_column >= R_TF_2) AND (i_pixel_column < R_TF_3) ) THEN M_TF1 <= '1';
ELSE K_TF2 <= '0';END IF;
IF ((i_pixel_row > R_TF_4) AND (i_pixel_row < R_TF_6) ) AND ((i_pixel_column >= C_TF6_L) AND (i_pixel_column < C_TF6_R) ) THEN K_TF1 <= '1';
ELSE K_TF2 <= '0';END IF;
IF (M_TF1 = '1' ) THEN o_red <= X"FF"; o_green <= X"00"; o_blue <= X"00";ELSIF (M_TF2 = '1' AND i_M_BT= '1' ) THEN o_red <= X"FF"; o_green <= X"00";
o_blue <= X"00";ELSIF (K_TF1 = '1' ) THEN o_red <= X"FF"; o_green <= X"DD"; o_blue <= X"00";ELSIF (K_TF2 = '1' AND i_K_BT= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";ELSIF (H_TF1 = '1' AND i_H_US= '1' ) THEN o_red <= X"00"; o_green <= X"66";
o_blue <= X"00";ELSIF (H_TF2 = '1' AND i_H_BT= '1' ) THEN o_red <= X"00"; o_green <= X"66";
o_blue <= X"00";ELSIF (M_TF1 = '1' AND i_M_US= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (M_TF2 = '1' AND i_M_BT= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (K_TF1 = '1' AND i_K_US= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (K_TF2 = '1' AND i_K_BT= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (H_TF1 = '1' AND i_H_US= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (H_TF2 = '1' AND i_H_BT= '0' ) THEN o_red <= X"EE"; o_green <= X"EE";
o_blue <= X"EE";ELSIF (grid = '1') THEN o_red <= X"EE"; o_green <= X"EE"; o_blue <=
X"EE";
ELSIF (FLAG = '1') THEN IF (Tambah <= 1) Then
if ((FLAG_H_MIN >= R_TF_4) AND (FLAG_H_MAX <= R_TF_5)) AND((FLAG_V_MIN >= C_TF6_L) AND (FLAG_V_MAX <= C_TF6_R)) Then --apabila masuk area orange maka akan berubah warna
o_red <= X"EE";--abu-abuo_green <= X"EE";o_blue <= X"EE";
Elseo_red <= X"FF";--kuningo_green <= X"FF";o_blue <= X"00";
END IF; END IF;
ELSIF (FLAG ='0') THENo_red <= X"00";o_green <= X"00";o_blue <= X"00";
ELSE o_red <= X"FF"; o_green <= X"FF"; o_blue <= X"FF";END IF;
END PROCESS;END behavioral;
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB7