Abstrak— Dalam praktikum Modul 5 ini akan dilakuakn beberapa 1. Mendapatkan pengetahuan dan pengalamanpenggunakan
percobaan, diantaranya adalah membuat Display LCD computer interface pada board evaluasi FPGA.
agar menampilkan warna bendera republic Indonesia yaitu merah 2. Memahami cara kerja VGA pada umumnya
di atas dan putih di pada bagian bawah . kemudian pada
percobaan selanjutnya dibuat agar monitor menampilkan sebuah
kotak berwana merah dengan backround putih yang selanjutnya II. LANDASAN TEORI
pada percobaan ketiga , kotak yang telah dibuat dipercobaan kedua Video Graphics Array (VGA) masih menjadi interface yang
tersebut dibuat agar dapat bergerak-gerak ke kiri, kanan, atas, dan popular untuk sebuah tampilan. VGA interface ini masih
bawah dengan menngunakan push button yang ada pada FPGA. banyak ditemukan di beberapa device sekarang, misalnya
Dari ketiga percobaan yang telah dilakukan ini, nantinya dapat
layar LCD dan proyektor. VGA interface ini terdapat juga di
disimpulkan bahwa implementasi interface dari rangkaian FPGA
tidak hanya pada fisik FPGA, namun juga dapat ditampilkan pada
board altera yang kita gunakan saat ini. Pada percobaan kali
LCDmenggunakan modul VGA. ini tampilan VGA digunakan agar tampilan hasil desain yang
kita rancang menjadi lebih menarik, tidak terbatas hanya pada
Kata Kunci— Display LCD, FPGA, VGA. LED atau 7-Segment. Tujuan percobaan kali ini juga adalah
memberikan ilustrasi penggunaan interface I/O yang ada pada
I. PENDAHULUAN FPGA, misalnya GPIO, komunikasi serial menggunakan
Dalam praktikum sebelumnya pada modul 4 , praktikan telah RS232, Audio CODEC, LCD karakter 16x2, dll.
merancang dan mengimplementasikan sebuah rangkaian Interface ke VGA menggunakan 2 jenis sinyal, yaitu : sinyal
logika sekuensial dalam hal ini adalah mengenai traffic light warna (Merah, Hijau, dan Biru) dan sinyal sinkron (horizontal
yang mana menggunakan VGA. VGA atau Video Graphics dan vertical). Berikut adalah penjelasan beberapa sinyal yang
Array ini merupakan sebuah standar tampilan komponen digunakan :
analog yang dipasarkan pertama kali oleh IBM pada tahun a. Horizontal Sync (TTL level)
1987. meskipun standar VGA tidak lagi digunakan karena Sinyal ini akan aktif pada range piksel kolom 0
adanya standar yang lebih baru, VGA masih sampai dengan 639. Sehingga kalau sinyal ini tidak
diimplementasikan pada pocket PC.VGA juga dikenal dengan aktif, yang terjadi adalah pergantian baris.
video card, video adapter, dispalay card, graphics card, b. Vertical Sync (TTL level)
graphics board, display adapter atau graphics adapter. VGA Sinyal ini akan aktif pada range piksel baris 0 sampai
sendiri mengacu pada konektor VGA 15-pin yang masih dengan 479. Sehingga kalau sinyal ini tidak aktif,
digunakan secara luas untuk mengantarkan sinyal video yang terjadi adalah pergantian layar. Atau kembali ke
analog ke monitor. baris pertama.
c. Sinyal RGB (Analog 3 pin: 0,7 – 1 V)
Pada praktikum ini praktikan akan merancang dan Sinyal ini merepresentasikan intensitas untuk
mengimplementasikan Display LCD menggunakan modul masing2 komponen warna merah, hijau, dan biru
VGA pada FPGA . kemudian mempelajari penerapan blok untuk setiap pixel yang saat itu aktif. Sehingga yang
diagram dalam perancangan menggunakan modul VGA, yaitu terjadi ketiga sinyal ini berubah-ubah sesuai pixel
membuat sebuah objek berbentuk kotak dengan ukuran 50 x yang sedang aktif dalam proses scanning (dari kiri ke
50 pixel pada percobaan kedua dan membuat objek kotak kanan untuk setiap baris, selanjutnya dari baris paling
tersebut agar dapat bergerak keatas,kekiiri,kebawah dan atas sampai baris paling bawah).
kekanan pada percobaan yang ketiga. Pada percobaan kali ini kita menggunakan resolusi 640x480
pixel dan menggunakan refresh rate lebih dari 60 Hz. Refresh
Percobaan ini memiliki tujuan sebagai berikut : rate ini digunakan karena pada range kurang dari 30-60 Hz
manusia dapat melihat adanya flicker. Selain itu refresh rate Gambar 3 menunjukkan blok diagram dari FPGA hingga ke
ini juga umum digunakan pada monitor LCD. LCD modern LCD monitor. Chip DAC mengubah sinyal digital ke analog.
memiliki fitur multirate, sehingga kita tidak harus tepat Dalam kasus ini, data RGB digital diubah ke data RGB
membuat refresh ratenya 60 Hz. Proses scanning berawal dari analog, begitu juga untuk sinyal sinkronisasinya. Sedangkan
kiri atas ke kanan lalu ke kiri bawah dan kembali ke kiri atas gambar 4 menunjukkan skematik dari display VGA yang ada
ketika sudah mencapai pixel terakhir. pada board DE1. Untuk board lainnya dapat dibaca di
datasheet masing-masing board. Board DE1 menyediakan 16-
pin konektor untuk output VGA dan Analog Devices
ADV7123 10-bit high speed video DAC. DAC ini
mendapatkan sinyal sinkronisasi dari FPGA.
III. METODELOGI
Pada percobaan modul V ini alat dan bahan yang
digunakan yaitu :
1. Board FPGA tipe DE1
2. Catu daya + kabel dan konektor tambahan serta kabel
downloader
3. Monitor LCD
Gambar 5. Percobaan 1
ENTITY color_rom_vhd IS IF (M_TF1 = '1' AND i_M_US= '1' ) THEN o_red <=
PORT( X"FF"; o_green <= X"00"; o_blue <= X"00";
i_M_US : IN STD_LOGIC; ELSIF (M_TF2 = '1' AND i_M_BT= '1' ) THEN o_red <=
i_K_US : IN STD_LOGIC; X"FF"; o_green <= X"00"; o_blue <= X"00";
i_H_US : IN STD_LOGIC; ELSIF (K_TF1 = '1' AND i_K_US= '1' ) THEN o_red <=
i_M_BT : IN STD_LOGIC; X"FF"; o_green <= X"ff"; o_blue <= X"ff";
i_K_BT : IN STD_LOGIC; ELSIF (K_TF2 = '1' AND i_K_BT= '1' ) THEN o_red <=
i_H_BT : IN STD_LOGIC; X"FF"; o_green <= X"ff"; o_blue <= X"ff";
i_pixel_column : IN STD_LOGIC_VECTOR( 9 ELSIF (H_TF1 = '1' AND i_H_US= '1' ) THEN o_red <=
DOWNTO 0 ); X"00"; o_green <= X"66"; o_blue <= X"00";
i_pixel_row : IN STD_LOGIC_VECTOR( 9 ELSIF (H_TF2 = '1' AND i_H_BT= '1' ) THEN o_red <=
DOWNTO 0 ); X"00"; o_green <= X"66"; o_blue <= X"00";
o_red : OUT STD_LOGIC_VECTOR( 7 ELSIF (M_TF1 = '1' AND i_M_US= '0' ) THEN o_red <=
DOWNTO 0 ); X"EE"; o_green <= X"EE"; o_blue <= X"EE";
o_green : OUT STD_LOGIC_VECTOR( 7 ELSIF (M_TF2 = '1' AND i_M_BT= '0' ) THEN o_red <=
DOWNTO 0 ); X"EE"; o_green <= X"EE"; o_blue <= X"EE";
o_blue : OUT STD_LOGIC_VECTOR( 7 ELSIF (K_TF1 = '1' AND i_K_US= '0' ) THEN o_red <=
DOWNTO 0 )); X"EE"; o_green <= X"EE"; o_blue <= X"EE";
END color_rom_vhd; ELSIF (K_TF2 = '1' AND i_K_BT= '0' ) THEN o_red <=
X"EE"; o_green <= X"EE"; o_blue <= X"EE";
ARCHITECTURE behavioral OF color_rom_vhd IS ELSIF (H_TF1 = '1' AND i_H_US= '0' ) THEN o_red <=
X"EE"; o_green <= X"EE"; o_blue <= X"EE";
CONSTANT R_TF_0 : INTEGER := 0; ELSIF (H_TF2 = '1' AND i_H_BT= '0' ) THEN o_red <=
CONSTANT R_TF_1 : INTEGER := 240; X"EE"; o_green <= X"EE"; o_blue <= X"EE";
CONSTANT R_TF_2 : INTEGER := 479; ELSIF (grid = '1') THEN o_red <= X"EE";
o_green <= X"EE"; o_blue <= X"EE";
ELSE o_red <= X"00"; o_green <= X"00"; o_blue <=
SIGNAL M_TF1, M_TF2 : STD_LOGIC; X"00";
SIGNAL K_TF1, K_TF2 : STD_LOGIC; END IF;
SIGNAL H_TF1, H_TF2 : STD_LOGIC;
SIGNAL grid : STD_LOGIC;
3.2
END Percobaan 2
behavioral;
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, K_TF1, K_TF2, H_TF1, H_TF2) Digambar sebuah kotak/bujur sangkar (solid)
BEGIN berukuran 50 pixel x 50 pixel pada layar VGA.
Caranya adalah dengan memberi warna tertentu
pada pixelpixel tertentu. Misalkan, jika ujung kiri
IF ((i_pixel_row > R_TF_0) AND (i_pixel_row < atas kotak tadi ingin diletakan pada baris 10 kolom
R_TF_1) ) THEN M_TF1 <= '1'; 10, maka pixel yang harus diwarnai berbeda
ELSE M_TF1 <= '0'; dengan lainnya adalah semua pixel yang ada baris
10 sampai 59 dan kolom 10 sampai 59.
END IF;
ENTITY color_rom_vhd IS
PORT( Ujung kiri atas dari gambar harus dibuat agar dapat
i_M_US : IN STD_LOGIC; diubah-ubah (menjadi input)
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;
i_pixel_column : IN STD_LOGIC_VECTOR( 9 Membuat dua buah FSM/counter: satu FSM untuk
DOWNTO 0 ); menghasilkan posisi batas atas (baris), satu FSM
i_pixel_row : IN STD_LOGIC_VECTOR( 9 untuk menghasilkan posisi batas kiri. Tentu saja
DOWNTO 0 ); counter ini harus dibatasi maksimum dan
o_red : OUT STD_LOGIC_VECTOR( 7 minimumnya sesuai jumlah baris dan kolom yang
ada di layar.
DOWNTO 0 );
o_green : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 );
o_blue : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 ));
END color_rom_vhd;
SIGNAL M_TF1, M_TF2 : STD_LOGIC; ELSIF clock40hz'event and clock40hz = '1' AND
SIGNAL K_TF1, K_TF2 : STD_LOGIC; i_M_US = '1' AND i_K_US = '1' AND i_H_US = '0'
SIGNAL H_TF1, H_TF2 : STD_LOGIC; AND i_M_BT = '1' THEN
SIGNAL grid : STD_LOGIC; BATASKANAN := BATASKANAN +
KECEPATAN; ---Arah kanan
SHARED VARIABLE KECEPATAN : INTEGER := 0; BATASKIRI := BATASKIRI + KECEPATAN;
SIGNAL clock40hz : STD_LOGIC;
IF BATASKANAN >= 639 THEN
COMPONENT CLOCKDIV is BATASKANAN := 639;
port ( CLK : IN std_logic; BATASKIRI := 639 -49;
DIVOUT : buffer std_logic); END IF;
end component;
ELSIF clock40hz'event and clock40hz = '1' AND
BEGIN i_M_US = '1' AND i_K_US = '1' AND i_H_US = '1'
AND i_M_BT = '0' THEN
PROCESS(i_pixel_row,i_pixel_column, i_M_US , BATASKANAN := BATASKANAN -
i_K_US , i_H_US , i_M_BT , i_K_BT , i_H_BT, KECEPATAN; ---Arah Kiri
M_TF1, M_TF2, K_TF1, K_TF2, H_TF1, H_TF2) BATASKIRI := BATASKIRI - KECEPATAN;
tempik : clockdiv
PORT MAP (
CLK => i_H_BT, Kemudian untuk membuat warna merah digunakan R=111111
DIVOUT => clock40hz dan B=000000 serta warna putih R=G=B=111111. script yang
); digunakan unuk menampilkan warna merah dan putih adalah
sebagai berikut :
---warna putih
ELSIF (K_TF1 = '1' AND i_K_US= '1' ) THEN o_red <=
X"FF"; o_green <= X"ff"; o_blue <= X"ff";
4.2 Percobaan 2
Pada percobaan ini dibuat sebuah kotak kecil dengan
ukuran 50 pixel x 50 pixel pada layar VGA. Kemudian kotak
kecil ini akan di letakan pada titik (10,10) ,(10,59) (59,10) dan
(59,59). Hal ini direpresentasikan kedalam kode vhdl 4.3 Percobaan 3
color_rom_vhd yang telah dimodifikasi sebbagai berikut : Dalam percobaan 3 ini dibuat kotak yang sama seperti
pada percobaan sebelumnya. Sehingga script pembuatan kotak
ini menggunakan script dari percobaan sebelumnya. Tapi
script tersebut dimodifikasi dengan diberi tambahan agar
kotak tersebut dapat digerak-gerakan ke kiri, kanan, atas dan
bawah sesuai input push bottom pada FPGA. Selain itu pada
percobaan ini menggunakan clockdiv constant div:
integer:=2500000. Penggunaan clock div ini bertujuan agar
pada saat kotak bergerak,gerakan tersebut dapat teramati oleh
pengamat.
Untuk membuat kotak dapat di geser digunakan assigmen
pin planer pada push bottom yaitu sebagai berikut :
Gambar 15. Script pembuatan kotak PIN_R22 => ke kiri
PIN_R21 => ke atas
Konstanta 10 dan 59 diatas merupakan nilai-nilai pixel yang PIN_T22 => ke kanan
membatasi kotak yang akan dibuat. Sedangkan untuk PIN _T21 => ke bawah
membuat warna kotak tersebut menjadi merah dan Selain menggunakan inputan push bottom digunakan juga
backroundnya berwarna putih digunakan algoritma sebagai inputan SW (0) pada i_K_BT untuk mengatur kecepatan dari
berikut : kotak tersebut. Perhatikan potongan algoritma berikut :
ELSE
BATASKIRI := BATASKIRI;
BATASKANAN := BATASKANAN; S4 S1 S2
BATASBAWAH := BATASBAWAH;
BATASATAS := BATASATAS;
REFERENSI
[1]. Brown, Stephen et ZvonkoVranesic, Fundamentals of
Digital Circuit with VHDL Design 3. McGraw-Hill, USA,
2009.
[2]. Brian Holdsworth and Clive Woods, Digital Logic Design
Fourth Edition, N.wnes, 2002.
[3]. Mervin T Hutabarat, Praktikum Sistem Digital,
Laboratorium Dasar Teknik Elektro ITERA, Lampung,
2017.
[4]. http://id.wikipedia.org/wiki/VGA, 22 November 2017,
14:35.