Anda di halaman 1dari 6

MODUL 05

PERANCANGAN DAN IMPLEMENTASI DISPLAY LCD

MENGGUNAKAN MODUL VGA PADA FPGA

Dini Nur Farida Putri (13215018)


Asisten: Billie Naldo.
Tanggal Percobaan: 23/11/2016
EL2102 - Praktikum Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak a. Horizontal Sync (TTL level)


Sinyal ini akan aktif pada range piksel kolom 0
Pada praktikum Modul 05 yang berjudul Perancangan sampai dengan 639. Sehingga kalau sinyal ini tidak
dan Implementasi Display LCD Menggunakan Modul aktif, yang terjadi adalah pergantian baris.
VGA pada FPGA, kami mengimplementasikan code vhdl b. Vertical Sync (TTL level)
yang kemudian akan disimulasikan menggunakan FPGA Sinyal ini akan aktif pada range piksel baris 0
dan layar LCD yang telah disediakan. Pada modul ini kami sampai dengan 479. Sehingga kalau sinyal ini tidak
melakukan 3 macam percobaan. Di antaranya yaitu membuat aktif, yang terjadi adalah pergantian layar. Atau
display bendera merah-putih, membuat kotak berukuran 50x50 kembali ke baris pertama.
pixel, dan menggerakkan kotak merah berukuran 50x50 pixel c. Sinyal RGB (Analog 3 pin: 0,7 1 V)
ke arah atas, kanan, kiri, dan bawah. Sinyal ini merepresentasikan intensitas untuk
masing2 komponen warna merah, hijau, dan biru
untuk setiap pixel yang saat itu aktif. Sehingga yang
Kata kunci: LCD, VHDL, VGA, Pixel.
terjadi ketiga sinyal ini berubah-ubah sesuai pixel
yang sedang aktif dalam proses scanning (dari kiri ke
1. PENDAHULUAN
kanan untuk setiap baris, selanjutnya dari baris
paling atas sampai baris paling bawah).
Pada praktikum Modul 05 yang berjudul
Perancangan dan Implementasi Display LCD
Pada percobaan kali ini kita menggunakan resolusi
Menggunakan Modul VGA pada FPGA, kami
640x480 pixel dan menggunakan refresh rate lebih dari
mengimplementasikan code vhdl yang kemudian akan
60 Hz. Refresh rate ini digunakan karena pada range
disimulasikan menggunakan FPGA dan layar LCD yang
kurang dari 30-60 Hz manusia dapat melihat adanya
telah disediakan. Pada modul ini kami melakukan 3
flicker. Selain itu refresh rate ini juga umum digunakan
macam percobaan. Di antaranya yaitu membuat display
pada monitor LCD. LCD modern memiliki fitur
bendera merah-putih, membuat kotak berukuran 50x50
multirate, sehingga kita tidak harus tepat membuat
pixel, dan menggerakkan kotak merah berukuran 50x50
refresh ratenya 60 Hz. Proses scanning berawal dari kiri
pixel ke arah atas, kanan, kiri, dan bawah. Dengan begitu
atas ke kanan lalu ke kiri bawah dan kembali ke kiri atas
diharapkan praktikan dapat mendapat pengetahuan dan
ketika sudah mencapai pixel terakhir.[1]
pengalaman mengunkan interface pada board evaluasi
FPGA dan memahami cara kerja VGA pada umumnya.

2. STUDI PUSTAKA
Video Graphics Array (VGA) masih menjadi interface
yang popular untuk sebuah tampilan. VGA interface ini
masih banyak ditemukan di beberapa device sekarang,
misalnya layar LCD dan proyektor. VGA interface ini
terdapat juga di board altera yang kita gunakan saat ini.
Pada percobaan kali ini tampilan VGA digunakan agar
tampilan hasil desain yang kita rancang menjadi lebih
menarik, tidak terbatas hanya pada LED atau 7-Segment. Gambar 2-1 Razor scan pada layar LCD
Tujuan percobaan kali ini juga adalah memberikan
ilustrasi penggunaan interface I/O yang ada pada FPGA,
misalnya GPIO, komunikasi serial menggunakan RS232,
Audio CODEC, LCD karakter 16x2, dll. 3. METODOLOGI

Interface ke VGA menggunakan 2 jenis sinyal, yaitu : 3.1 KOMPONEN DAN ALAT YANG DIGUNAKAN
sinyal warna (Merah, Hijau, dan Biru) dan sinyal sinkron
1. Board FPGA tipe DE1
(horizontal dan vertical). Berikut adalah penjelasan
beberapa sinyal yang digunakan : 2. Catu daya + kabel dan konektor tambahan

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 1


3. Kabel downloader USB-Blaster SIGNAL M_TF1, M_TF2 : STD_LOGIC;
SIGNAL K_TF1, K_TF2 : STD_LOGIC;
4. Monitor LCD SIGNAL H_TF1, H_TF2 : STD_LOGIC;
SIGNAL grid : STD_LOGIC;
5. PC yang tekah terinstal program Quartus II 9.0

3.2 LANGKAH PERCOBAAN BEGIN

PROCESS(i_pixel_row,i_pixel_column, i_M_US , i_K_US ,


3.2.1 PERCOBAAN 1 i_H_US , i_M_BT , i_K_BT , i_H_BT, M_TF1, M_TF2)
BEGIN
Pada percobaan 1 ini, praktikan diminta untuk
IF ((i_pixel_column >= C_TF1_R) AND
menampilkan bendera merah-putih pada layar (i_pixel_column <= C_TF2_R) ) AND ((i_pixel_row
dengan batas warna merah dari pixel baris 1 >= R_TF_0) AND (i_pixel_row <= 240) ) THEN
sampai 240. Berikut merupakan langkah-langkah M_TF1 <= '1';
ELSE M_TF1 <= '0';
dalam menampilkan display bendera merah- END IF;
putih:
IF (M_TF1 = '1') THEN o_red<=(others=>'1');
o_green<=(others=>'0'); o_blue<=(others=>'0');
else o_red<=(others=>'1'); o_green<=(others=>'1');
o_blue<=(others=>'1');
end if;
Buka quartus dan
Buat direktori baru END IF;
buat project baru
END PROCESS;

END behavioral;

Gambar 3-2 Kode color_rom.vhd untuk percobaan 1

Download dan LIBRARY IEEE;


Modif file
ekstrak file USE IEEE.STD_LOGIC_1164.ALL;
color_rom_vhd.vhd
"display_DE1.rar" USE IEEE.STD_LOGIC_ARITH.ALL;
agar dapat
yang sudah USE IEEE.STD_LOGIC_UNSIGNED.ALL;
memunculkan
disediakan di web
display yang diminta
labdsar ENTITY vga IS
PORT(
i_clk : IN
STD_LOGIC;
i_red : IN
STD_LOGIC;
i_green : IN
STD_LOGIC;
Implementasikan i_blue : IN
Atur pin pada FPGA
pada FPGA STD_LOGIC;
o_red : OUT
STD_LOGIC;
o_green : OUT
Gambar 3-1 Diagram langkah percobaan 1 (bendera merah- STD_LOGIC;
putih) o_blue : OUT
STD_LOGIC;
o_horiz_sync : OUT
LIBRARY IEEE; STD_LOGIC;
USE IEEE.STD_LOGIC_1164.ALL; o_vert_sync : OUT
USE IEEE.STD_LOGIC_ARITH.ALL; STD_LOGIC;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; o_pixel_row : OUT
STD_LOGIC_VECTOR( 9 DOWNTO 0 );
ENTITY color_rom_vhd IS o_pixel_column : OUT
PORT( STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
i_M_US : IN STD_LOGIC; END vga;
i_K_US : IN STD_LOGIC;
i_H_US : IN STD_LOGIC; ARCHITECTURE behavioral OF vga IS
i_M_BT : IN STD_LOGIC;
i_K_BT : IN STD_LOGIC; CONSTANT TH : INTEGER := 800;
i_H_BT : IN STD_LOGIC; CONSTANT THB1 : INTEGER := 660;
i_pixel_column : IN STD_LOGIC_VECTOR( 9 CONSTANT THB2 : INTEGER := 756;
DOWNTO 0 ); CONSTANT THD : INTEGER := 640;
i_pixel_row : IN STD_LOGIC_VECTOR( 9
DOWNTO 0 ); CONSTANT TV : INTEGER := 525;
o_red : OUT STD_LOGIC_VECTOR( 7 CONSTANT TVB1 : INTEGER := 494;
DOWNTO 0 ); CONSTANT TVB2 : INTEGER := 495;
o_green : OUT STD_LOGIC_VECTOR( 7 CONSTANT TVD : INTEGER := 480;
DOWNTO 0 );
o_blue : OUT STD_LOGIC_VECTOR( 7 SIGNAL clock_25MHz : STD_LOGIC;
DOWNTO 0 )); SIGNAL horiz_sync : STD_LOGIC;
END color_rom_vhd; SIGNAL vert_sync : STD_LOGIC;
SIGNAL video_on : STD_LOGIC;
ARCHITECTURE behavioral OF color_rom_vhd IS SIGNAL video_on_v : STD_LOGIC;
SIGNAL video_on_h : STD_LOGIC;
CONSTANT R_TF_0 : INTEGER := 0; SIGNAL h_count : STD_LOGIC_VECTOR( 9
CONSTANT R_TF_1 : INTEGER := 639; DOWNTO 0 );
CONSTANT C_TF1_R : INTEGER := 0; SIGNAL v_count : STD_LOGIC_VECTOR( 9
CONSTANT C_TF2_R : INTEGER := 479; DOWNTO 0 );
--CONSTANT C_TF1_L : INTEGER := 239;
BEGIN
--CONSTANT C_TF2_L : INTEGER := 559; Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 2
video_on <= video_on_h AND video_on_v;
SIGNAL M_TF1, M_TF2 : STD_LOGIC;
SIGNAL K_TF1, K_TF2 : STD_LOGIC; o_red <= i_red AND video_on;
SIGNAL H_TF1, H_TF2 : STD_LOGIC; o_green <= i_green AND video_on;
SIGNAL grid : STD_LOGIC; o_blue <= i_blue AND video_on;
BEGIN i_M_BT : IN STD_LOGIC;
i_K_BT : IN STD_LOGIC;
video_on <= video_on_h AND video_on_v; i_H_BT : IN STD_LOGIC;
VGA_R : OUT STD_LOGIC_VECTOR( 5
o_red <= i_red AND video_on; DOWNTO 0 );
o_green <= i_green AND video_on; VGA_G : OUT STD_LOGIC_VECTOR( 5
o_blue <= i_blue AND video_on;
DOWNTO 0 );
o_horiz_sync <= horiz_sync; VGA_B : OUT STD_LOGIC_VECTOR( 5
o_vert_sync <= vert_sync; DOWNTO 0 );
VGA_HS : OUT STD_LOGIC;
PROCESS (i_clk) VGA_VS : OUT STD_LOGIC;
BEGIN VGA_CLK : OUT STD_LOGIC;
IF i_clk'EVENT AND i_clk='1' VGA_BLANK : OUT STD_LOGIC);
THEN END display_vhd;
IF (clock_25MHz =
'0') THEN ARCHITECTURE behavioral OF display_vhd IS
clock_25MHz
<= '1';
SIGNAL red : STD_LOGIC_VECTOR (5
ELSE
clock_25MHz DOWNTO 0);
<= '0'; SIGNAL green : STD_LOGIC_VECTOR (5
END IF; DOWNTO 0);
END IF; SIGNAL blue : STD_LOGIC_VECTOR (5
END PROCESS; DOWNTO 0);
SIGNAL red_color : STD_LOGIC_VECTOR (7
PROCESS DOWNTO 0);
BEGIN SIGNAL green_color : STD_LOGIC_VECTOR (7
WAIT UNTIL( clock_25MHz'EVENT ) AND DOWNTO 0);
( clock_25MHz = '1' );
SIGNAL blue_color : STD_LOGIC_VECTOR (7
IF ( h_count = TH-1 ) THEN
h_count <= (others=>'0'); DOWNTO 0);
ELSE SIGNAL pixel_row : STD_LOGIC_VECTOR (9
h_count <= h_count + 1; DOWNTO 0);
END IF; SIGNAL pixel_column : STD_LOGIC_VECTOR (9
DOWNTO 0);
IF ( h_count <= THB2-1 ) AND SIGNAL red_on : STD_LOGIC;
(h_count >= THB1-1 ) THEN SIGNAL green_on : STD_LOGIC;
horiz_sync <= '0'; SIGNAL blue_on : STD_LOGIC;
ELSE
horiz_sync <= '1';
END IF;
COMPONENT vga IS
IF ( v_count >= TV-1 ) AND ( h_count PORT(
>= 699 ) THEN i_clk : IN STD_LOGIC;
v_count <= (others=>'0'); i_red : IN STD_LOGIC;
ELSE IF ( h_count = 699 ) THEN i_green : IN STD_LOGIC;
v_count <= v_count + 1; i_blue : IN STD_LOGIC;
END IF; o_red : OUT STD_LOGIC;
END IF; o_green : OUT STD_LOGIC;
o_blue : OUT STD_LOGIC;
IF ( v_count <= TVB2-1 ) AND
o_horiz_sync : OUT STD_LOGIC;
( v_count >= TVB1-1 ) THEN
o_vert_sync : OUT STD_LOGIC;
vert_sync <= '0';
ELSE o_pixel_row : OUT
vert_sync <= '1'; STD_LOGIC_VECTOR( 9 DOWNTO 0 );
END IF; o_pixel_column : OUT
STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
IF ( h_count <= THD-1 ) THEN END COMPONENT;
video_on_h <= '1';
o_pixel_column <= h_count; COMPONENT color_rom_vhd IS
ELSE PORT(
video_on_h <= '0'; i_M_US : IN STD_LOGIC;
END IF;
i_K_US : IN STD_LOGIC;
IF ( v_count <= TVD-1 ) THEN i_H_US : IN STD_LOGIC;
video_on_v <= '1'; i_M_BT : IN STD_LOGIC;
o_pixel_row <= v_count; i_K_BT : IN STD_LOGIC;
ELSE i_H_BT : IN STD_LOGIC;
video_on_v <= '0'; i_pixel_column : IN STD_LOGIC_VECTOR( 9
END IF; DOWNTO 0 );
i_pixel_row : IN STD_LOGIC_VECTOR( 9
END PROCESS; DOWNTO 0 );
END behavioral; o_red : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 );
Gambar 3-3 Kode vga.vhd untuk percobaan 1
o_green : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 );
LIBRARY IEEE; o_blue : OUT STD_LOGIC_VECTOR( 7
USE IEEE.STD_LOGIC_1164.ALL; DOWNTO 0 ));
USE IEEE.STD_LOGIC_ARITH.ALL; END COMPONENT;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
BEGIN
ENTITY display_vhd IS
PORT( vga_driver0 : vga
i_clk : IN STD_LOGIC; PORT MAP (
i_M_US : IN STD_LOGIC; i_clk => i_clk,
i_K_US : IN STD_LOGIC; i_red => '1',
i_H_US : IN STD_LOGIC; i_green => '1',
i_M_BT : IN STD_LOGIC; i_blue => '1',
i_K_BT : IN STD_LOGIC; o_red - Laboratorium
Laporan Praktikum => red_on, Dasar Teknik Elektro STEI ITB 3
i_H_BT : IN STD_LOGIC; o_green => green_on,
VGA_R : OUT STD_LOGIC_VECTOR( 5 o_blue => blue_on,
DOWNTO 0 ); o_horiz_sync => VGA_HS,
VGA_G : OUT STD_LOGIC_VECTOR( 5 o_vert_sync => VGA_VS,
DOWNTO 0 ); o_pixel_row => pixel_row,
VGA_B : OUT STD_LOGIC_VECTOR( 5 o_pixel_column => pixel_column);
i_blue => '1', COMPONENT display_vhd IS
o_red => red_on, PORT(
o_green => green_on, i_clk : IN STD_LOGIC;
o_blue => blue_on, i_M_US : IN STD_LOGIC;
o_horiz_sync => VGA_HS, i_K_US : IN STD_LOGIC;
o_vert_sync => VGA_VS, i_H_US : IN STD_LOGIC;
o_pixel_row => pixel_row, i_M_BT : IN STD_LOGIC;
o_pixel_column => pixel_column); i_K_BT : IN STD_LOGIC;
i_H_BT : IN STD_LOGIC;
color_rom0 : color_rom_vhd VGA_R : OUT STD_LOGIC_VECTOR( 5
PORT MAP ( DOWNTO 0 );
i_M_US => i_M_US, VGA_G : OUT STD_LOGIC_VECTOR( 5
i_K_US => i_K_US, DOWNTO 0 );
i_H_US => i_H_US, VGA_B : OUT STD_LOGIC_VECTOR( 5
i_M_BT => i_M_BT, DOWNTO 0 );
i_K_BT => i_K_BT, VGA_HS : OUT STD_LOGIC;
i_H_BT => i_H_BT, VGA_VS : OUT STD_LOGIC;
i_pixel_column => pixel_column, VGA_CLK : OUT STD_LOGIC;
i_pixel_row => pixel_row, VGA_BLANK : OUT STD_LOGIC);
o_red => red_color, END COMPONENT;
o_green => green_color,
o_blue => blue_color); PORT(
CLK: IN std_logic;
red <= red_color (7 DOWNTO 2) ; DIVOUT: buffer BIT);
green <= green_color(7 DOWNTO 2) ; END COMPONENT;
blue <= blue_color (7 DOWNTO 2) ;

PROCESS(red_on,green_on,blue_on,red,green,blue) BEGIN
BEGIN module_vga : display_vhd
PORT MAP (
IF (red_on = '1' ) THEN VGA_R <= red; i_clk => CLOCK_50,
ELSE VGA_R <= "000000"; i_M_US => M_US,
END IF; i_K_US => K_US,
i_H_US => H_US,
IF (green_on = '1' ) THEN VGA_G <= green; i_M_BT => M_BT,
ELSE VGA_G <= "000000"; i_K_BT => K_BT,
END IF; i_H_BT => H_BT,
VGA_R => VGA_R,
IF (blue_on = '1' ) THEN VGA_B <= blue; VGA_G => VGA_G,
ELSE VGA_B <= "000000"; VGA_B => VGA_B,
END IF; VGA_HS => VGA_HS,
END PROCESS; VGA_VS => VGA_VS,
END behavioral; VGA_CLK => VGA_CLK,
VGA_BLANK => VGA_BLANK
Gambar 3-4 Kode display_vhd.vhd untuk percobaan 1 );

LIBRARY IEEE; END behavioral;


USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; Gambar 3-5 Kode top_level_vhd.vhd untuk percobaan 1
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

3.2.2 IMPLEMENTASI MODUL VGA DRIVER


ENTITY top_level_vhd IS
PORT( Pada percobaan 2 ini, praktikan diminta untuk
CLOCK_50 : IN STD_LOGIC; menampilkan kotak berwarna merah pada layar
SW : IN STD_LOGIC_VECTOR( 9 dengan batas warna merah dari pixel baris ke 10
DOWNTO 0 );
VGA_R : OUT STD_LOGIC_VECTOR( 5
sampai 59 dan pixel colom ke 10 sampai 59.
DOWNTO 0 ); Berikut merupakan langkah-langkah dalam
VGA_G : OUT STD_LOGIC_VECTOR( 5 menampilkan display kotak berwarna merah
DOWNTO 0 ); berukuran 50x50 pixel:
VGA_B : OUT STD_LOGIC_VECTOR( 5
DOWNTO 0 );
VGA_HS : OUT STD_LOGIC;
VGA_VS : OUT STD_LOGIC;
VGA_CLK : OUT STD_LOGIC;
VGA_BLANK : OUT STD_LOGIC;
GPIO_0 : OUT STD_LOGIC_VECTOR( 35
DOWNTO 0 );
LEDR : OUT STD_LOGIC_VECTOR( 9
DOWNTO 0 ));
END top_level_vhd;

ARCHITECTURE behavioral OF top_level_vhd IS

SIGNAL M_US : STD_LOGIC;


SIGNAL K_US : STD_LOGIC;
SIGNAL H_US : STD_LOGIC;
SIGNAL M_BT : STD_LOGIC;
SIGNAL K_BT : STD_LOGIC;
SIGNAL H_BT : STD_LOGIC;

COMPONENT display_vhd IS Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 4
PORT(
--i_G_KANAN : IN
STD_LOGIC;
i_clk : IN STD_LOGIC;
i_M_US : IN STD_LOGIC;
i_K_US : IN STD_LOGIC;
o_blue<=(others=>'1');
end if;
Buka quartus dan
Buat direktori baru
buat project baru END IF;

END PROCESS;
END behavioral;

Gambar 3-7 Kode color_rom_vhd.vhd untuk percobaan 2

3.2.3 MENGGABUNGKAN DESAIN FSM


Download dan
Modif file
ekstrak file DENGAN VGA DRIVER
color_rom_vhd.vhd
"display_DE1.rar" Pada percobaan 3 ini, praktikan diminta untuk membuat
agar dapat
yang sudah kotak berwarna merah yang dibuat pada percobaan 2 dapat
memunculkan
disediakan di web
display yang diminta bergerak ke arah kanan, kiri, atas dan bawahdengan 4 button
labdsar
yang berbeda-beda. Berikut merupakan langkah-langkah
dalam menampilkan display kotak berwarna merah
berukuran 50x50 pixel:

Copy file pada Buat


Implementasikan Membuat
Atur pin pada FPGA dari percobaan top_level_vhd.vh
pada FPGA direktori dan
2 dan buka d menjadi top
projek baru
pada Quartus II level entity

Gambar 3-6 Diagram langkah percobaan 2 (kotak merah ukuran


50x50 pixel)
LIBRARY IEEE; Modufikasi
Compile dan
USE IEEE.STD_LOGIC_1164.ALL; Sambungkan program agar
Download ke
USE IEEE.STD_LOGIC_ARITH.ALL; FPGA dengan sesuai dengan
dalam board
USE IEEE.STD_LOGIC_UNSIGNED.ALL; monitor yang diminta
FPGA
pada modul
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; Simulasikan
i_K_BT : IN STD_LOGIC;
i_H_BT : IN STD_LOGIC;
i_pixel_column : IN STD_LOGIC_VECTOR( 9
DOWNTO 0 );
i_pixel_row : IN STD_LOGIC_VECTOR( 9 Gambar 3-8 Diagram langkah percobaan 3 (kotak merah ukuran
DOWNTO 0 ); 50x50 pixel) dapat bergerak ke atas, bawah, kanan,
o_red : OUT STD_LOGIC_VECTOR( 7 kiri
DOWNTO 0 );
o_green : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 );
o_blue : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 )); 4. HASIL DAN ANALISIS
END color_rom_vhd;

ARCHITECTURE behavioral OF color_rom_vhd IS 4.1 MEMBUAT RANGKAIAN SEDERHANA


CONSTANT R_TF_0 : INTEGER := 0; Pada percobaan 1 ini, praktikan diminta untuk
CONSTANT R_TF_1 : INTEGER := 639; menampilkan bendera merah-putih pada layar dengan
CONSTANT C_TF1_R : INTEGER := 0;
CONSTANT C_TF2_R : INTEGER := 479; batas warna merah dari pixel baris 1 sampai 240. Berikut
merupakan hasilnya.
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;

BEGIN

PROCESS(i_pixel_row,i_pixel_column, i_M_US , i_K_US ,


i_H_US , i_M_BT , i_K_BT , i_H_BT, M_TF1, M_TF2)
BEGIN

IF ((i_pixel_column >= C_TF1_R) AND


(i_pixel_column <= C_TF2_R) ) AND ((i_pixel_row >= R_TF_0)
AND (i_pixel_row <= 240) ) THEN M_TF1 <= '1';
ELSE M_TF1 <= '0';
END IF;

IF (M_TF1 = '1') THEN o_red<=(others=>'1');


o_green<=(others=>'0'); o_blue<=(others=>'0');
else o_red<=(others=>'1'); o_green<=(others=>'1');
o_blue<=(others=>'1');
end if; Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 5

--IF (i_G_KANAN ='1') then R_TF_A := R_TF_A +1; R_TF_Z :=


R_TF_Z +1;

END IF;
Pada saat percobaan pertama, PC yang kami gunakan
belum terinstal USB-Blaster dan board FPGA yang
pertama kami gunakan sempat bermasalah. Sehingga
kami menggunakan PC dan board FPGA yang lain.

4.2 MEMBUAT RANGKAIAN BCD TO 7 SEGMENT


Pada percobaan 2 ini, praktikan diminta untuk
menampilkan kotak berwarna merah pada layar dengan
batas warna merah dari pixel baris ke 10 sampai 59 dan
pixel colom ke 10 sampai 59 sehingga kotak merah
berukuran 50x50 pixel. Berikut merupakan hasilnya.

Gambar 4-4 Output implementasi modul VGA driver

4.3 MENGGABUNGKAN DESAIN FSM DENGAN


VGA DRIVER
Pada percobaan 3 ini, praktikan diminta untuk
membuat kotak berwarna merah yang dibuat pada
percobaan 2 dapat bergerak ke arah kanan, kiri, atas dan
bawah dengan 4 button yang berbeda-beda. Namun
pada kenyataannya kami tidak selesai dalam percobaan
ini. Kami hanya dapat menggeser kotak merah ke bawah
saja namun pergeserannya sangat tidak sempurna
karena kami belum menggunakan CLOCKDIV.vhd
untuk mengatur pergeseran kotak.

5. KESIMPULAN
VGA merupakan implementasi yang cukup
baik dan mudah diterapkan apabila kita ingin
menampilkan rangkaian yang telah kita buat
dengan VHDL. Yang kita perlukan adalah modul
vga itu sendiri dan sebuah layar LCD. Dengan
menggabungkan kinerja dari FSM dan VGA kita
dapat membuat rangkaian kita interaktif dan dapat
ditampilkan pada layar. Sehingga dengan
kombinasi keduanya kita dapat membuat suatu
aplikasi ataupun program yang dapat memberikan
output tampilan yang berdasarkan input dari user.

DAFTAR PUSTAKA
[1] Mervin T. Hutabarat, dkk, Buku petunjuk Praktikum Sistem
Digital , Bandung, 2016

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 6