modul 6 proyek perancangan rangkaian digitallabdasar.ee.itb.ac.id/lab/el2102 - sistem...

16
MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITAL Satria Indrawan Putra (18011034) Albhikautsar Dharma Kesuma (13511058) Asisten: Luqman Muh. Zagi (13208032) Tanggal Percobaan: 06/12/12 EL2195-Praktikum Sistem Digital Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Pada percobaan ini, dilakukan pembuatan proyek rancangan rangkaian digital, di mana praktikan membuat sebuah rangcangan rangkaian yang mencakup seluruh praktikum sebelum ini yang diimplementasikan dengan aplikasi dengan FPGA dan display LCD. Proyek yang dibuat oleh praktikan adalah game labirin. Kata kunci: LCD, VGA, FPGA 1. PENDAHULUAN Praktikum ini adalah proyek rancangan praktikan yang merupakan semacam program yang dijalankan dengan menggunakan board FPGA dan ditampilkan di display LCD. Yang dibuat oleh praktikan adalah sebuah game labirin, di mana pemain harus menggerakkan sebuah kotak dari garis start menuju garis finish dengan menggunakan tombol di board FPGA. Tujuan dari praktikum ini adalah untuk menspesifikasikan suatu sistem digital sederhana dan untuk mengalasi sisem yang sedan dikerjakan. 2. STUDI PUSTAKA 2.1. Pemilihan Proyek Standar Percobaan ini terdiri dari tahapan desain, implementasi, dan pengujian sistem yang dibuat oleh tim Anda. Diharapkan proyek Anda dapat selesai pada waktu yang ditentukan. Anda dapat menentukan sendiri proyek yang anda buat. Persyaratan proyek tersebut: 1. Menggunakan satu atau lebih interface yang ada di board: VGA, sound card (AUDIO CODEC), LCD, USB, koneksi serial, atau lainnya 2. Interaktif: mempunyai input, push button, mouse, keyboard, atau lainnya 3. Mempunyai bagian FSM 4. Sedikitnya terdiri dari 3 blok 2.2. Petunjuk Desain 1. Anda wajib menggunakan VHDL dalam penegerjaan tugas Anda. Disarankan menggunakan pendekatan struktural bukan behavioral. 2. Import pin assignment/buat pin assignment baru seperti percobaan sebelumnya untuk menspesifikasikan lokasi pin. 3. METODOLOGI Langkah-langkah yang dilakukan praktikan dalam mengerjakan proyek ini adalah:

Upload: trannga

Post on 02-Mar-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITAL

Satria Indrawan Putra (18011034) Albhikautsar Dharma Kesuma (13511058)

Asisten: Luqman Muh. Zagi (13208032) Tanggal Percobaan: 06/12/12

EL2195-Praktikum Sistem Digital Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan

Informatika ITB

Abstrak

Pada percobaan ini, dilakukan pembuatan

proyek rancangan rangkaian digital, di mana praktikan

membuat sebuah rangcangan rangkaian yang mencakup

seluruh praktikum sebelum ini yang diimplementasikan

dengan aplikasi dengan FPGA dan display LCD.

Proyek yang dibuat oleh praktikan adalah game labirin.

Kata kunci: LCD, VGA, FPGA

1. PENDAHULUAN

Praktikum ini adalah proyek

rancangan praktikan yang merupakan

semacam program yang dijalankan dengan

menggunakan board FPGA dan ditampilkan

di display LCD. Yang dibuat oleh praktikan

adalah sebuah game labirin, di mana pemain

harus menggerakkan sebuah kotak dari garis

start menuju garis finish dengan

menggunakan tombol di board FPGA. Tujuan

dari praktikum ini adalah untuk

menspesifikasikan suatu sistem digital

sederhana dan untuk mengalasi sisem yang

sedan dikerjakan.

2. STUDI PUSTAKA

2.1. Pemilihan Proyek Standar

Percobaan ini terdiri dari tahapan

desain, implementasi, dan pengujian

sistem yang dibuat oleh tim Anda.

Diharapkan proyek Anda dapat

selesai pada waktu yang ditentukan.

Anda dapat menentukan sendiri

proyek yang anda buat. Persyaratan

proyek tersebut:

1. Menggunakan satu atau lebih

interface yang ada di board:

VGA, sound card (AUDIO

CODEC), LCD, USB, koneksi

serial, atau lainnya

2. Interaktif: mempunyai input,

push button, mouse,

keyboard, atau lainnya

3. Mempunyai bagian FSM

4. Sedikitnya terdiri dari 3 blok

2.2. Petunjuk Desain

1. Anda wajib menggunakan

VHDL dalam penegerjaan

tugas Anda. Disarankan

menggunakan pendekatan

struktural bukan behavioral.

2. Import pin assignment/buat

pin assignment baru seperti

percobaan sebelumnya untuk

menspesifikasikan lokasi pin.

3. METODOLOGI

Langkah-langkah yang dilakukan

praktikan dalam mengerjakan proyek ini

adalah:

Page 2: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

1. Mencari data-data yang perlu

untuk implementasi proyek ini, di

antaranya adalah source code-

source code dasar seperti

display_vhd, vga_vhd, dan lain-

lain.

2. Membuat source code utama,

yaitu TUBES.vhd, di mana state-

state proyek dinyatakan di sini.

State-nya mencakup: state saat

pemain menekan tombol arah

(kanan, kiri, atas, bawah), state

saat kotak digerakkan melebihi

batas labirin, dan state di mana

game akan di-reset dan kotak

kembali ke garis start.

3. Membuat souce code tambahan

yaitu pointer.vhd yaitu sebagai

kotak yang akan digerakkan dan

labirin.vhd sebagai bentuk

labirinnya.

4. Simulasi di lab, ternyata masih

terdapat beberapa kesalahan pada

kode yang kami buat, di mana

pernyataan warna dari

pointer.vhd dan labirin.vhd tidak

bisa digunakan bersama, sehingga

kami harus menggabung kode

pointer dan labirin.

Berikut kami lampirkan FSM (Finite State

Machine) dari proyek yang kami kerjakan

Dan juga ilustrasi dari blok diagram yang

kamu gunakan dalam proyek kami

4. HASIL DAN ANALISIS

Berikut ini adalah hasil implementasi

proyek kami pada display LCD:

Page 3: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

Spesifikasi game:

Game ini dimainkan dengan

menggunakan tombol di FPGA. Tombol yang

digunakan adalah KEY0 sebagai arah kanan,

KEY1 sebagai arah bawah, KEY2 sebagai arah

atas, dan KEY3 sebagai arah kiri. Kotak harus

digerakkan dari garis start di tengah menuju

garis finish di pojok kiri bawah tanpa melebihi

batas dari labirin. Apabila kotak digerakkan

melebihi batas labirin, game akan me-reset

dan kotak kembali pada posisi semula yaitu di

garis start. Apabila kotak berhasil digerakkan

menuju garis finish, keadaannya sama seperti

apabila kotak digerakkan melewati batas

labirin, yaitu game reset.

Ada enam buah state dari proyek

yang kami buat, berikut akan kami jelaskan

bagaimana keberjalanan dalam state tersebut.

State 1 (S1) adalah state dimana kotak dalam

keadaan diam menunggu untuk masukan dari

pengguna yang nantinya akan menentukan

kemana kotak akan begerak.

State 2 (S2). State ini akan menentukan apakah

kotak akan bergerak ke kanan atau akan

melebihi dari labirin yang sudah ditentukan.

Apabila kotak masih dapat bergerkan maka

akan kembali ke (S1) namun apabila kotak

melewati batas labirin, permainan ini akan

masuk ke state 6 (S6).

State 3 (S3). State ini akan menentukan apakah

kotak akan bergerak ke kiri atau akan melebihi

dari labirin yang sudah ditentukan. Apabila

kotak masih dapat bergerkan maka akan

kembali ke (S1) namun apabila kotak melewati

batas labirin, permainan ini akan masuk ke

state 6 (S6).

State (S4). State ini akan menentukan apakah

kotak akan bergerak ke atas atau akan

melebihi dari labirin yang sudah ditentukan.

Apabila kotak masih dapat bergerkan maka

akan kembali ke (S1) namun apabila kotak

melewati batas labirin, permainan ini akan

masuk ke state 6 (S6).

State 5 (S5). State ini akan menentukan apakah

kotak akan bergerak ke bawahatau akan

melebihi dari labirin yang sudah ditentukan.

Apabila kotak masih dapat bergerkan maka

akan kembali ke (S1) namun apabila kotak

melewati batas labirin, permainan ini akan

masuk ke state 6 (S6).

State 6 (S6) adalah state dimana kotak sudah

melewati batas dari labirin. Pada state 6 ini

permainan akan direset dan akan

dikembalikan pada posisi awal kotak

diletakan.

Keseluruan state akan kembali ke state 1

untuk menunggu masukan dari user.

Dalam pembuatan labirin tersebut

digunakan sebuah file yang sudah kami buat

yang bernama “tubes.vhd”. File ini secara

garis besar sama dengan color_rom_vhdl.vhd

yang digunakan pada praktikum sebelumnya

yang berguna untuk membuat batasan-

batasan dari labirin yang akan dibuat.

Digunakan pula “clockdiv.vhd” yang berguna

untuk membuat timing sehingga kotak dapat

bergerak.

Untuk desain labirin, hasil sudah

sesuai dengan spesifikasi yang diharapkan,

namun penggerakkan kotak tidak berhasil,

sehingga pe-reset-an game saat kotak

digerakkan melewati batas labirin dan kondisi

finish tidak diketahui.

Pengnujian untuk untuk mengecek

keberhasilan proyek kami adalah dengan

berhasilnya menjalankan kotak dari garis start

Page 4: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

sampai garis finish dan kotak keluar dari batas

yang sudah ditentukan untuk mengetes

keberhasilan reset dari proyek kami.

Hasil dari proyek kami tidak sesuai

dengan spec yang kami inginkan karena

permainan kami tidak dapat berlangsung

dengan baik karena kotak tidak dapat

bergerak dari tempat yang dimaksud.

Analisis:

Desain labirin dan posisi kotak sukses

dimplementasikan di display LCD.

Sayangnya, kotak tidak dapat digerakkan.

Analisis kami adalah, sepertinya terdapat

kesalahan kode dalam state-nya, yaitu state

saat pemain menekan tombol arah pada

FPGA. Selanjutnya, state ketika kotak

digerakkan melebihi batas labirin juga tidak

bisa dilihat berjalan atau tidak karena kotak

yang tidak bisa digerakkan tersebut.

Kesalahan pada pendesaianan proyek kami

pula terjadi kesalahan dalam pemanggilan

kode-kode portmap yang menyebabkan kotak

tidak dapat bergerak sebagaimana mustinya.

Dalam proyek besar ini, kami tidak

dapat membuat hasil simulasi maupun video

tentang bagaimana permainan ini berlangsung

dikarenakan hal yang sudah disebutkan

diatas.

Pembagian tugas dalam pembuatan

proyek ini adalah bahwa kami berdua masing-

masing saling membantu dalam pengerjaan

kode vhdl, pembuatan laporan, maupun pada

saat perbaikan-perbaikan kode vhdl pada saat

praktikum pertama dan kedua dalam

pengerjaan proyek ini. Tidak ada seseorang

yang lebih berat bekerja.

5. KESIMPULAN

Mengassign portmap adalah hal yang

sangat penting dalam pengkodean dan

pengimplementasian pada FPGA. Proyek

kami sebagian besar salah dikarenakan

kegagalan dalam pemanggilan variabel-

variabel yang digunakan dalam pengkodean

vhdl ini. Jadi pada sampai halnya bahwa

proyek kami tidak dapat dijalankan dengan

sebagaimana mustinya, sehingga permainan

ini tidak dapat dijalankan.

DAFTAR PUSTAKA

[1] Mervin T. Hutabarat, Praktikum Sistem Digital EL-2195, Laboratorium Dasar Teknik Elektro, Bandung, 2012.

Page 5: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

tubes.vhd

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY tubes IS

PORT(

CLOCK_50 : IN STD_LOGIC;

KEY : IN STD_LOGIC_VECTOR( 3 DOWNTO 0 );

i_pixel_rowkotak : INOUT STD_LOGIC_VECTOR( 9 DOWNTO 0 );

i_pixel_columnkotak : INOUT STD_LOGIC_VECTOR( 9 DOWNTO 0 );

VGA_R : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

VGA_G : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

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 ));

END tubes;

ARCHITECTURE behavioral OF tubes IS

TYPE executionStage IS (s1,s2,s3,s4,s5,s6);

SIGNAL state : executionStage;

SIGNAL BA,BB,BL,BR : STD_LOGIC_VECTOR( 9 DOWNTO 0 );

SIGNAL red_color : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL green_color : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL blue_color : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL BA2, BB2, BL2, BR2 : STD_LOGIC_VECTOR( 9 DOWNTO 0 );

SIGNAL x : STD_LOGIC_VECTOR( 9 DOWNTO 0 );

SIGNAL y : STD_LOGIC_VECTOR( 9 DOWNTO 0 );

SIGNAL DIV : bit;

COMPONENT display_vhd IS

PORT(

Page 6: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

i_clk : IN STD_LOGIC;

VGA_R : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

VGA_G : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

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);

END COMPONENT;

COMPONENT Labirin IS

PORT(

i_clk : IN STD_LOGIC;

BA,BB,BL,BR : IN STD_LOGIC_VECTOR(9 DOWNTO 0);

i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );

i_pixel_rowkotak : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );

i_pixel_columnkotak : 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 COMPONENT;

COMPONENT CLOCKDIV IS

PORT( CLK: IN std_logic;

DIVOUT: buffer BIT);

END COMPONENT;

BEGIN

TEST : CLOCKDIV PORT MAP (DIVOUT => DIV, CLK => CLOCK_50);

PROCESS (KEY(3), KEY(2), KEY(1), KEY(0), state) --3 kanan 2 kiri 1 atas 0 bawah

BEGIN

if (DIV'event and DIV = '1') then --current state

case state is

when s1 => IF (KEY(3)='0' AND KEY(2)='1' AND KEY(1)='1' AND

KEY(0)='1') THEN

state <= s2; --kanan

Page 7: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

elsif (KEY(3)='1' AND KEY(2)='0' AND KEY(1)='1' AND

KEY(0)='1') THEN

state <= s3; --kiri

elsif (KEY(3)='1' AND KEY(2)='1' AND KEY(1)='0' AND

KEY(0)='1') THEN

state <= s4; --atas

elsif (KEY(3)='1' AND KEY(2)='1' AND KEY(1)='1' AND

KEY(0)='0') THEN

state <= s5; --bawah

END IF;

when s2 =>IF (((i_pixel_columnkotak>= 10) AND (i_pixel_columnkotak<= 30) --

kanan

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 10) AND

(i_pixel_columnkotak<= 260)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 610) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 400) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 450) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 390))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 150)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 350)

AND (i_pixel_rowkotak>= 240) AND

(i_pixel_rowkotak<= 350))

Page 8: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 190))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 330) AND

(i_pixel_rowkotak<= 450))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 470)

AND (i_pixel_rowkotak>= 450) AND

(i_pixel_rowkotak<= 470))

--likalikukehidupan

OR((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 320)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 50))

OR ((i_pixel_columnkotak>= 300) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 340) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 340)

AND (i_pixel_rowkotak>= 60) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 80) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 280) AND

Page 9: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 100) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 380) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 100))) THEN

i_pixel_columnkotak <= i_pixel_columnkotak+ 1;

state <= s1;

ELSE

state <= s6;

END IF;

when s3 => IF (((i_pixel_columnkotak>= 10) AND (i_pixel_columnkotak<= 30) --kiri

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 10) AND

(i_pixel_columnkotak<= 260)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 610) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 400) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 450) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 390))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 150)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 350)

AND (i_pixel_rowkotak>= 240) AND

Page 10: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

(i_pixel_rowkotak<= 350))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 190))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 330) AND

(i_pixel_rowkotak<= 450))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 470)

AND (i_pixel_rowkotak>= 450) AND

(i_pixel_rowkotak<= 470))

--likalikukehidupan

OR((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 320)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 50))

OR ((i_pixel_columnkotak>= 300) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 340) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 340)

AND (i_pixel_rowkotak>= 60) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 80) AND

(i_pixel_rowkotak<= 120))

Page 11: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

OR ((i_pixel_columnkotak>= 280) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 100) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 380) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 100))) THEN

i_pixel_columnkotak<= i_pixel_columnkotak- 1;

state <= s1;

ELSE

state <= s6;

END IF;

when s4 => IF (((i_pixel_columnkotak>= 10) AND (i_pixel_columnkotak<= 30) --atas

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 10) AND

(i_pixel_columnkotak<= 260)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 610) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 400) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 450) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 390))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 150)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 350)

Page 12: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

AND (i_pixel_rowkotak>= 240) AND

(i_pixel_rowkotak<= 350))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 190))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 330) AND

(i_pixel_rowkotak<= 450))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 470)

AND (i_pixel_rowkotak>= 450) AND

(i_pixel_rowkotak<= 470))

--likalikukehidupan

OR((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 320)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 50))

OR ((i_pixel_columnkotak>= 300) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 340) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 340)

AND (i_pixel_rowkotak>= 60) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 80) AND

Page 13: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 280) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 100) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 380) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 100))) THEN

i_pixel_rowkotak<= i_pixel_rowkotak- 1;

state <= s1;

ELSE

state <= s6;

END IF;

when s5 => IF (((i_pixel_columnkotak>= 10) AND (i_pixel_columnkotak<= 30) --

bawah

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 10) AND

(i_pixel_columnkotak<= 260)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 610) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 470))

OR ((i_pixel_columnkotak>= 400) AND

(i_pixel_columnkotak<= 630)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 450) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 390))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 150)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 470))

Page 14: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 350)

AND (i_pixel_rowkotak>= 240) AND

(i_pixel_rowkotak<= 350))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 130) AND

(i_pixel_rowkotak<= 190))

OR ((i_pixel_columnkotak>= 290) AND

(i_pixel_columnkotak<= 510)

AND (i_pixel_rowkotak>= 330) AND

(i_pixel_rowkotak<= 450))

OR ((i_pixel_columnkotak>= 90) AND

(i_pixel_columnkotak<= 470)

AND (i_pixel_rowkotak>= 450) AND

(i_pixel_rowkotak<= 470))

--likalikukehidupan

OR((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 320)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 50))

OR ((i_pixel_columnkotak>= 300) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 30))

OR ((i_pixel_columnkotak>= 340) AND

(i_pixel_columnkotak<= 360)

AND (i_pixel_rowkotak>= 30) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

(i_pixel_columnkotak<= 340)

AND (i_pixel_rowkotak>= 60) AND

(i_pixel_rowkotak<= 80))

OR ((i_pixel_columnkotak>= 260) AND

Page 15: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

(i_pixel_columnkotak<= 280)

AND (i_pixel_rowkotak>= 80) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 280) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 100) AND

(i_pixel_rowkotak<= 120))

OR ((i_pixel_columnkotak>= 380) AND

(i_pixel_columnkotak<= 400)

AND (i_pixel_rowkotak>= 10) AND

(i_pixel_rowkotak<= 100))) THEN

i_pixel_rowkotak<= i_pixel_rowkotak+ 1;

state <= s1;

ELSE

state <= s6;

END IF;

when s6 =>

i_pixel_columnkotak<= "0000110000";

i_pixel_rowkotak<= "0000110000";

state <= s1;

end case;

END IF;

END PROCESS;

PROCESS (i_pixel_columnkotak, i_pixel_rowkotak)

BEGIN

BA2 <= i_pixel_columnkotak;

BB2 <= i_pixel_columnkotak + 10;

BL2 <= i_pixel_rowkotak;

BR2 <= i_pixel_rowkotak + 10;

END PROCESS;

module_vga : display_vhd

PORT MAP (

i_clk => CLOCK_50,

VGA_R => VGA_R,

VGA_G => VGA_G,

Page 16: MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITALlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012-2013/FAILED... · variabel yang digunakan dalam pengkodean sebagaimana mustinya,

VGA_B => VGA_B,

VGA_HS => VGA_HS,

VGA_VS => VGA_VS,

VGA_CLK => VGA_CLK,

VGA_BLANK => VGA_BLANK

);

color_rom0 : Labirin

PORT MAP (

i_clk => CLOCK_50,

i_pixel_rowkotak => i_pixel_rowkotak,

i_pixel_columnkotak => i_pixel_columnkotak,

BA => BA2,

BB => BB2,

BL => BL2,

BR => BR2,

o_red => red_color,

o_green => green_color,

o_blue => blue_color);

clock0 : clockdiv

port map (

clk => CLOCK_50,

divout => div

);

END behavioral;