Anda di halaman 1dari 11

PROYEK PERANCANGAN RANGKAIAN DIGITAL SIMULATOR ALARM

Alfonso Gultom, Daniel Simarmata, Ercherio Marpaung, Pangeran Aritonang,


Philipians Manurung
Tanggal Percobaan: 7 Desember 2012
EL2195-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro Fakultas Teknik Informtika dan Elektro


ITDel
Abstrak
Untuk projek akhir sistem digital kami
diminta untuk membuat sebuah proyek
yang menggabungkan beberapa modul
praktikum yang telah kami lakukan pada
praktikum sebelumnya.
Proyek
ini
terdiri dari tahap desain, implementasi,
dan pengujian system. Pada proyek yang
kami
buat,
kami
menggabungkan
beberapa modul yang telah dipelajari
sebelumnya yaitu modul VGA, modul
clockdiv dan FSM. Kami berhasil
menyelesaikan
pembuatan
sebuah
Resetable Alarm Clock Simulator pada
praktikum ini.

kemudian ditampilkan di layar LCD dengan


menggunakan modul VGA. Satu digit ini
dapat
merepresentasikan
detik,
menit,
bahkan jam jika clockdivnya diedit. Oleh
karena itu, fungsionalitasnya bisa dibilang
masih ada.

1.2

Kata kunci: Proyek, Alarm Clock


1. PENDAHULUAN

1.1

LATAR BELAKANG

Ini merupakan
proyek akhir, oleh
karena itu, setiap kelompok
diberikan
kebebasan untuk mendesain rangkaian yang
akan dibuat dan diimplementasikan dengan
menggunakan FPGA.
Untuk proyek akhir, kelompok kami
memilih untuk membuat sebuah simulator
alarm clock sederhana. Ada beberapa alasan
dibalik pemilihan proyek ini. Yang pertama,
dari segi fungsionalitas, alarm memiliki
banyak manfaat dalam kehidupan kita. Alarm
banyak digunakan dalam kehidupan seharihari, mulai dari membangunkan orang di
pagi hari sampai memasak. Lalu, dari segi
kompleksitas, alarm memiliki kompleksitas
yang lumayan tinggi, namun tidak terlalu
tinggi. Alarm harus dapat malakukan count
down dan dapat menerima input nilai awal
count down. Selain itu, dering alarm dapat
direpresentasikan dengan manipulasi VGA,
sehingga
praktikan
dapat
mengimplementasikan salah satu elemen
mata kuliah.
Pada implementasi desain rangkaian
praktikan,
praktikan
hanya
dapat
mengimplementasikan alarm satu digit yang

TUJUAN
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
menggunakan FPGA dan komponen
tambahanyang diperlukan
Menguji dan menganalisa sistem yang
sudah dibangun

2. STUDI PUSTAKA
2.1

FSM

Finite State Machine (FSM) merupakan


salah satu rangkaian sekuensial pada
rangkaian digital. Dinamakan FSM karena
jumlah state yang mungkin terbatas dan
rangkaian sekuensial bekerja mirip dengan
mesin yang beroperasi dengan urutan state.
Level abstraksi perancangan FSM pun
bertingkattingkat. Pada praktikum kali ini
disarankan menggunakan level abstraksi
behavioral. Pada perancangan dengan level
ini,
sebelum
mengimplementasikan
menggunakan
VHDL,
praktikan
cukup
membuat state diagram atau
flow chart
transisi statenya. Pada praktikum kali ini akan
dicontohkan cara membuat FSM dengan
menggunakan state diagram. Komponen
komponen yang harus ada pada state
diagram adalah deklasari input dan output,
definisi state, transisi, dan keluarannya

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

2.2

VGA

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 pada percobaan.
Interface ke VGA menggunakan 2
jenis sinyal, yaitu : sinyal warna (Merah,
Hijau, dan Biru) dan sinyal sinkron (horizontal
dan vertical). Berikut adalah penjelasan
beberapa sinyal yang digunakan :
a. Horizontal Sync (TTL level)
Sinyal ini akan aktif pada range piksel
kolom 0 sampai dengan 639. Sehingga kalau
sinyal ini tidak aktif, yang terjadi adalah
pergantian baris.
b. 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.
c. Sinyal RGB (Analog 3 pin: 0,7 1 V)
Sinyal
ini
merepresentasikan
intensitas untuk masing2 komponen warna
merah, hijau, dan biru untuk setiap pixel
yang saat itu aktif. Sehingga yang terjadi
ketiga sinyal ini berubahubah sesuai pixel
yang sedang aktif dalam proses scanning
(dari kiri ke kanan untuk setiap baris,
selanjutnya dari baris paling atas sampai
baris paling bawah).

2.3

Buat folder dan project baru


untuk proyek ini

Buat desain dengan FSM dan


hubungkan keluaran FSM
dengan masukan VGA

Compile program dan


implementasikan hasilnya
dengan monitor yang telah
terhubung dengan board FPGA

4. HASIL DAN ANALISIS


Desain FSM yang kami buat dapat dilihat
pada gambar di bawah.

ALARM

Rangkaian alarm atau sistem alarm


adalah rangkaian yang memberikan sinyal
audio, visual, atau sinyal alarm lainnya
sebagai respon terjadinya/tercapaiya suatu
keadaan, dalam kasus ini, keadaan timer
yang mencapai nol.

3. METODOLOGI
3.1

PERALATAN YANG DIGUNAKAN

Board FPGA tipe UP2 atau DE1

Catu daya + kabel dan konektor


tambahan serta kabel downloader

Monitor LCD

3.2

LANGKAH KERJA

Pada gambar di atas, nomor 0-9


menggambarkan state penggambaran angka
0-9 di layar. !1 adalah state alarm pertama
yang berupa angka yang berubah secara
cepat. !2 adalah state alarm kedua yang
berupa flicker hitam putih di layar.
FSM menggunakan 3 input, yaitu
COUNT (C), RESET (R), dan RUN (RU). Jika
C,R, dan RU berlogika 0, maka tidak akan
menyebabkan perubahan state. R akan selalu
mengubah state kembali menjadi nol, seperti
yang dapat dilihat di atas. COUNT akan
menambahkan satu pada state, contohnya
ketika state = 1, count yang ditekan akan
menghasilkan state = 2. Terakhir, RUN akan

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

mengubah state menjadi hitung mundur dari


9 1.

4.1

SPESIFIKASI

Desain yang kami buat


beberapa input yaitu:
-

memiliki

Count adder sebagai input untuk


menampilkan digit selanjutnya
pada layar. Maksimal angka yang
ditampilkan adalah sembilan dan
jika
sudah
mecapai
angka
sembilan
maka
sistem
akan
kembali ke angka nol.
Run
untuk
countdown

Integrasi FSM dan color_rom_vhd


dalam satu proyek yang mencakup
top_level_entitynya

memulai

Proses debugging dalam Quartis

Verifikasi desain FSM dengan implementasi

proses
Setelah hasil yang diinginkan didapatkan, implementasi akhir dan uji coba

Reset untuk kembali ke state nol

Desain ini akan menampilkan Alarm"


ketika hitungan mundur selesai.
Alarm berupa manipulasi VGA dua
tingkat.
Desain ini terdiri dari tiga blok
diagram yaitu FSM, VGA, dan counter.
Gambar blok diagram ditunjukkan
pada gambar 4.1 di bawah.

4.3

VHDL CODE

Terlampir

4.4

ALAT DAN BAHAN YANG


DIGUNAKAN

a. Laptop dengan software Qurtus


b. FPGA Altera DE!
c. USB Conector dan Downloader

4.5

Gambar

4.2

4.1 Blok diagram

Desain ini memiliki output berupa VGA


yang tampilannya dapat dilihat pada
layar monitor. Tampilan pada layar
monitor berupa seven segment.

PROSES DESAIN
Proses brainstorming ide rangkaian

Concepting dan perancangan FSM


dalam bentuk State Diagram

Ketika pertama didownload ke FPGA,


state berada di kondisi nol (menampilkan
angka nol ke layar). Dari situ, user bisa
memasukkan
nilai
countdown
dengan
menekan tombol COUNT secara berulangulang. Ketika tombol count ditekan, layar
akan menampilkan digit angka selanjutnya.
Angka maksimal yang dapat ditampilkan
pada layar adalah angka sembilan, bila sudah
mencapai angka 9, tampilan pada layar akan
mengulang ke angka 0. Setelah user
mendapatkan angka yang diinginkan, switch
RUN dapat dinyalakan. Ketika switch RUN
menyala, proses countdown dimulai. Layar
akan menampilkan angka yang terus
mengurang, sampai akhirnya sampai ke
angka nol. Setelah angka nol, layar akan
menampilkan alarm berupa manipulasi
VGA dua tingkat yang akan terus menyala
sampai switch RESET ditekan. Switch RESET
ini berfungsi untuk kembali ke state nol.

4.6
Pembuatan FSM dalam bahasa
VHDL dan pembuatan modul
color_rom_vhd

STRATEGI PENGUJIAN

HASIL IMPLEMENTASI

Beberapa gambar hasil implementasi


desain yang kami buat dapat dilihat pada
gambar di bawah.

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

Hafizh Adi Prasetya : Desain FSM,


Pengaturan
Clockdiv,
integrasi
desainke dalam proyek, dan coding
VHDL-nya.

5. KESIMPULAN

(a)

(b)

Pada proyek sisidig ini kami berhasil


membuat sebuah Alarm Clock Simulator yaitu
sebuah simulator yang akan menghitung
mundur dari waktu yang telah ditentukan
sampai angka nol kemudian menampilakan
alarm berupa manipulasi VGA dua tingkat
yang akan terus menyala sampai switch
RESET ditekan.
Kami berhasil membuat desain Alarm Clock
Simulator dengan menggunakan bahasa
VHDL dan menggabungkan beberapa modul
yang telah dipelajari pada praktikumpraktikum sebelumnya yaitu modul FSM,
modul VGA dan CLOCK. Desain yang kami
buat ini sudah berhasil diselesaikan dan
dapat diimplementasikan dengan baik pada
FPGA.

DAFTAR PUSTAKA
[1]

Jackstar H. S., Panduan Penulisan


Laporan,
Jacks
Publishing,
Bandung, 2008.

[2]

Hutabarat,
T
Mervin,
dkk.
Praktikum Sistem Digital. Halaman
73-103. Laboratorium Dasar Teknik
Elektro. Bandung, 2012.

[3]

Brown,
Vranesic,
et.
al.,
Fundamental of Digital Logic with
VDHL Design, Mc-Graw-Hill, USA,
2009

(c)
Gambar 4.4 (a), (b), (c) Hasil Implementasi
Desain

Dari gambar implementsi kita dapat melihat


tampilan angka 1 sampai pada layar merupakan
manipulasi pixel melalui signal warna RGB dan
Signal
Sikron
(Horizontal
dan
Vertikal).
Tampilan angka seperti tampilan BCD 7Segment. Dengan 3 Push Button Button pada
Altera, yaitu COUNT, RESET, dan RUN. Dimana
tombol tersebut sebagai input dari user untuk
mengcount angka, mereset, dan menset alarm.
Saat angkat diset mis, angka=5. Setelah itu
program akan meng-counting -down dari angka
5 sampai nol. Setelah mengalami countingdown sampai nol (5 kali) maka layar akan
kedap-kedip berganti warna hitam dan putih.
Untuk
menggunakannnya
kembali,
tekan
tombol RESET (R), maka layar kembali ke
kondisi awal yakni menampilkan angka Nol (0).

4.7

KESESUAIAN DENGAN SPEK

Desain yang kami buat telah sesuai


dengan spek yang diinginkan.

4.8

PEMBAGIAN TUGAS
Nabila Husna Shabrina : Pembuatan
Interface display, coding VHDL

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

LAMPIRAN
1. Top_Level_Entity.vhd
LIBRARY IEEE;

SIGNAL PUSHDIV : STD_LOGIC;

USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

COMPONENT display_vhd IS

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

PORT(
i_clk

ENTITY top_level_vhd IS
PORT(
CLOCK_50 : IN STD_LOGIC;
SW

: IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );

PUSH

: IN STD_LOGIC;

PUSH2

: IN STD_LOGIC;

VGA_R
VGA_G
VGA_B
VGA_HS
VGA_VS
VGA_CLK

: OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );


: OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

LEDR

: IN STD_LOGIC;

i_b

: IN STD_LOGIC;

i_c

: IN STD_LOGIC;

i_d

: IN STD_LOGIC;

i_e

: IN STD_LOGIC;

i_f

: IN STD_LOGIC;

i_g

: IN STD_LOGIC;

i_WHITE

: IN STD_LOGIC;

i_BLACK

: IN STD_LOGIC;

VGA_R

: OUT STD_LOGIC;
: OUT STD_LOGIC;
: OUT STD_LOGIC;

VGA_BLANK : OUT STD_LOGIC;


GPIO_0

: IN STD_LOGIC;

i_a

: OUT STD_LOGIC_VECTOR( 35 DOWNTO 0 );


: OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 ));

: 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

END top_level_vhd;

: OUT STD_LOGIC);

END COMPONENT;
ARCHITECTURE behavioral OF top_level_vhd IS
COMPONENT CLOCKDIV2 PORT(
CLK: IN std_logic;
SIGNAL

: STD_LOGIC;

SIGNAL

: STD_LOGIC;

SIGNAL

: STD_LOGIC;

SIGNAL

: STD_LOGIC;

SIGNAL

: STD_LOGIC;

--tambahan

SIGNAL

: STD_LOGIC;

COMPONENT alarm IS

SIGNAL

: STD_LOGIC;

DIVOUT: buffer STD_LOGIC);


END COMPONENT;

PORT(

SIGNAL WHITE : STD_LOGIC;

CLK_IN : IN STD_LOGIC; -- clock in

SIGNAL BLACK : STD_LOGIC;

RUN : IN STD_LOGIC; -- tombol RUN countdown

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

COUNT : IN STD_LOGIC; -- tombol penambah count

C <= lights(2) ;

RESET : IN STD_LOGIC; -- tombol RESET

D <= lights(3) ;

sevensegment : OUT STD_LOGIC_VECTOR (0 TO 6);


-- 7 Segment sebagai display
hitam : OUT STD_LOGIC;

E <= lights(4) ;
F <= lights(5) ;
G <= lights(6) ;

putih : OUT STD_LOGIC;

WHITE <= WhiteLight;

CLK_OUT : OUT BIT -- clock out

BLACK <= BlackLight;

);
END COMPONENT;

END behavioral;

SIGNAL lights : STD_LOGIC_VECTOR (0 TO 6);

2. Lampu Merah.vhd

SIGNAL BlackLight: STD_LOGIC;


SIGNAL WhiteLight: STD_LOGIC;
--end tambahan

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

BEGIN

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

module_vga : display_vhd

ENTITY lampumerah IS PORT(

PORT MAP (
i_clk

CLK_IN : IN STD_LOGIC;
=> CLOCK_50,

darurat : IN STD_LOGIC;

i_a

=>

i_b

=>

i_c

=>

i_d

=>

i_e

=>

i_f

=>

i_g

=>

A,
B,

waktu : IN STD_LOGIC;
lampu : OUT STD_LOGIC_VECTOR (0 TO 5)
);

C,
D,

END lampumerah;
-- penjelasan lampu:
-- lampu[0..2] : lampu merah, kuning, hijau arah UTARA-SELATAN

E,

-- lampu[3..5] : lampu merah, kuning, hijau arah TIMUR-BARAT

F,
G,
i_WHITE

=> WHITE,

i_BLACK

=> BLACK,

VGA_R

=> VGA_R,

VGA_G

=> VGA_G,

VGA_B

=> VGA_B,

VGA_HS

=> VGA_HS,

VGA_VS

=> VGA_VS,

VGA_CLK

=> VGA_CLK,

VGA_BLANK

ARCHITECTURE behavioral OF lampumerah IS

CONSTANT SIANG : STD_LOGIC := '0';


CONSTANT MALAM : STD_LOGIC := '1';
CONSTANT STATE_MH : STD_LOGIC_VECTOR(0 TO 5) := "100001"; --merah U/S,
hijau T/B
CONSTANT STATE_MK : STD_LOGIC_VECTOR(0 TO 5) := "100010"; --merah U/S,
kuning T/B
CONSTANT STATE_HM : STD_LOGIC_VECTOR(0 TO 5) := "001100"; --hijau U/S,
merah T/B
CONSTANT STATE_KM : STD_LOGIC_VECTOR(0 TO 5) := "010100"; --kuning U/S,
merah T/B

=> VGA_BLANK

CONSTANT STATE_KK : STD_LOGIC_VECTOR(0 TO 5) := "010010"; --semua


lampu kuning (untuk kedip darurat)

);

CONSTANT STATE_NN : STD_LOGIC_VECTOR(0 TO 5) := "000000"; --semua


lampu mati (untuk kedip darurat)

--tambahan
fsm : alarm PORT MAP (
CLK_IN

=>

RUN
SW(0),

CLOCK_50,
=>

CLK: IN std_logic;
DIVOUT: buffer BIT);

COUNT

=>

RESET

=> PUSH2,

sevensegment

=>

PUSH,

lights,

hitam

=> BlackLight,

putih

=> WhiteLight

);

COMPONENT CLOCKDIV PORT(

END COMPONENT;

SIGNAL clock : BIT;


SIGNAL counter : INTEGER :=0;
SIGNAL resetCounter : BIT :='0';
TYPE STATE IS (MH, MK, HM, KM, DAR); -- khusus state darurat, tidak dibedakan
nyala-matinya hanya agar counter tidk direset

--ubah sw jd lights

SIGNAL currentState : STATE := MH;

A <= lights(0) ;

SIGNAL nextState: STATE;

B <= lights(1) ;

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

BEGIN

resetCounter <= '1';

CD : CLOCKDIV PORT MAP (CLK=>CLK_IN, DIVOUT=>clock);

END IF;

PROCESS (clock)

WHEN HM=>

BEGIN

resetCounter <= '0';


IF clock='1' THEN

lampu<=STATE_HM;

IF resetCounter = '0' THEN

IF darurat = '1' THEN

counter<=counter+1;

nextState<=DAR;

ELSE

resetCounter <= '1';


counter<=0;
currentState<=nextState;

ELSIF (waktu = SIANG AND counter >=


7) OR (waktu = MALAM AND counter >= 3) THEN
nextState<=KM;

END IF;

resetCounter <= '1';

END IF;
END IF;
WHEN KM=>
END PROCESS;

resetCounter <= '0';


lampu<=STATE_KM;
IF darurat = '1' THEN

PROCESS (currentState)

nextState<=DAR;

BEGIN

resetCounter <= '1';

CASE currentState IS

ELSIF (waktu = SIANG AND counter >=


1) OR (waktu = MALAM AND counter >= 0) THEN

WHEN DAR =>


resetCounter <= '0';

nextState<=MH;

IF counter = 0 or counter = 2 THEN

resetCounter <= '1';

lampu<=STATE_NN;
ELSIF counter = 1 THEN
lampu<=STATE_KK;

END IF;
END CASE;
END PROCESS;

ELSIF counter = 3 THEN


lampu<=STATE_KK;
IF darurat = '1' THEN

nextState<=DAR;

END behavioral;

3. Color_Rom_Vhd.vhd

ELSE
nextState<=MH;
END IF;
resetCounter <= '1';

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

END IF;

ENTITY color_rom_vhd IS

WHEN MH=>
resetCounter <= '0';
lampu<=STATE_MH;
IF darurat = '1' THEN
nextState<=DAR;
resetCounter <= '1';
ELSIF (waktu = SIANG AND counter >=
7) OR (waktu = MALAM AND counter >= 3) THEN

PORT(
a

: IN STD_LOGIC;

b : IN STD_LOGIC;
c : IN STD_LOGIC;
d : IN STD_LOGIC;
e : IN STD_LOGIC;
f : IN STD_LOGIC;

nextState<=MK;

g : IN STD_LOGIC;

resetCounter <= '1';

WHITE

: IN STD_LOGIC;

BLACK

: IN STD_LOGIC;

END IF;
WHEN MK=>

i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );

resetCounter <= '0';

i_pixel_row

lampu<=STATE_MK;

o_red

IF darurat = '1' THEN

o_green

nextState<=DAR;
resetCounter <= '1';
ELSIF (waktu = SIANG AND counter >=
1) OR (waktu = MALAM AND counter >= 0) THEN
nextState<=HM;

o_blue

: IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ));

END color_rom_vhd;

ARCHITECTURE behavioral OF color_rom_vhd IS

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

CONSTANT top

: INTEGER := 0;

CONSTANT a_top

: INTEGER := 50;

CONSTANT a_bottom : INTEGER := 90;


CONSTANT bf_top

: INTEGER := 95;

CONSTANT bf_bottom : INTEGER := 215;


CONSTANT g_top

: INTEGER := 220;

CONSTANT g_bottom

: INTEGER := 260;

CONSTANT ce_top

: INTEGER := 265;

CONSTANT ce_bottom : INTEGER := 385;


CONSTANT d_top

: INTEGER := 390;

CONSTANT d_bottom : INTEGER := 430;


CONSTANT ef_left

IF ((i_pixel_row >= ce_top) AND (i_pixel_row < ce_bottom) ) AND


((i_pixel_column >= ef_left) AND (i_pixel_column < ef_right) ) THEN e1 <=
'1';
ELSE e1 <= '0';
END IF; --mengaktifkan e

IF ((i_pixel_row >= bf_top) AND (i_pixel_row < bf_bottom) ) AND


((i_pixel_column >= ef_left ) AND (i_pixel_column < ef_right) ) THEN f1 <=
'1';
ELSE f1 <= '0';
END IF; --mengaktifkan f

: INTEGER := 215;

CONSTANT ef_right : INTEGER := 255;


CONSTANT a_left

: INTEGER := 260;

CONSTANT a_right

: INTEGER := 380;

CONSTANT bc_left

: INTEGER := 385;

CONSTANT bc_right : INTEGER := 425;

IF ((i_pixel_row >= g_top)


AND (i_pixel_row < g_bottom)
) AND
((i_pixel_column >= a_left ) AND (i_pixel_column < a_right ) ) THEN g1 <=
'1';
ELSE g1 <= '0';
END IF; --mengaktifkan g

IF
(a1 = '1' AND a= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
SIGNAL a1

: STD_LOGIC;

SIGNAL b1

: STD_LOGIC;

SIGNAL c1

: STD_LOGIC;

SIGNAL d1

: STD_LOGIC;

SIGNAL e1

: STD_LOGIC;

SIGNAL f1

: STD_LOGIC;

SIGNAL g1

: STD_LOGIC;

ELSIF (b1 = '1' AND b= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
ELSIF (c1 = '1' AND c= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
ELSIF (d1 = '1' AND d= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
ELSIF (e1 = '1' AND e= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
ELSIF (f1 = '1' AND f= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";
ELSIF (g1 = '1' AND g= '1' ) THEN o_red <= X"FF"; o_green <= X"DD";
o_blue <= X"00";

BEGIN

ELSIF (WHITE = '1') THEN o_red <= X"FF"; o_green <= X"FF"; o_blue <=
X"FF";
ELSIF (BLACK = '1') THEN o_red <= X"00"; o_green <= X"00"; o_blue <=
X"00";

PROCESS(i_pixel_row,i_pixel_column, a, b, c, d, e, f, g, a1, b1, c1, d1, e1, f1,


g1)

ELSE o_red <= X"00"; o_green <= X"00"; o_blue <= X"00";
END IF;

BEGIN

END PROCESS
IF ((i_pixel_row >= a_top)
AND (i_pixel_row < a_bottom)
) AND
((i_pixel_column >= a_left) AND (i_pixel_column < a_right) ) THEN a1 <=
'1';

END behavioral;

4. Display_vhd.vhd

ELSE a1 <= '0';


END IF; -- mengaktifkan a

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

IF ((i_pixel_row >= bf_top) AND (i_pixel_row < bf_bottom) ) AND


((i_pixel_column >= bc_left) AND (i_pixel_column < bc_right) ) THEN b1
<= '1';

USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ELSE b1 <= '0';


END IF; --mengaktifkan b

ENTITY display_vhd IS
PORT(

IF ((i_pixel_row >= ce_top) AND (i_pixel_row < ce_bottom) ) AND


((i_pixel_column >= bc_left) AND (i_pixel_column < bc_right ) ) THEN c1
<= '1';
ELSE c1 <= '0';
END IF; --mengaktifkan c

IF ((i_pixel_row >= d_top)


AND (i_pixel_row < d_bottom)
) AND
((i_pixel_column >= a_left) AND (i_pixel_column < a_right) ) THEN d1 <=
'1';
ELSE d1 <= '0';

i_clk

: IN STD_LOGIC;

i_a

: IN STD_LOGIC;

i_b

: IN STD_LOGIC;

i_c

: IN STD_LOGIC;

i_d

: IN STD_LOGIC;

i_e

: IN STD_LOGIC;

i_f

: IN STD_LOGIC;

i_g

: IN STD_LOGIC;

i_WHITE

: IN STD_LOGIC;

END IF; --mengaktifkan d

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

i_BLACK

: IN STD_LOGIC;

o_blue

: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ));

VGA_R

: OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );

END COMPONENT;

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;

PORT MAP (

VGA_BLANK

: OUT STD_LOGIC);

i_clk

=> i_clk,

i_red

=> '1',

BEGIN

vga_driver0 : vga

END display_vhd;

i_green
ARCHITECTURE behavioral OF display_vhd IS

SIGNAL red

SIGNAL green

STD_LOGIC_VECTOR (5 DOWNTO 0);


:

SIGNAL blue

STD_LOGIC_VECTOR (5 DOWNTO 0);

STD_LOGIC_VECTOR (5 DOWNTO 0);

SIGNAL red_color

SIGNAL green_color

STD_LOGIC_VECTOR (7 DOWNTO 0);


:

SIGNAL blue_color

SIGNAL pixel_row

SIGNAL pixel_column
SIGNAL red_on

STD_LOGIC_VECTOR (7 DOWNTO 0);


STD_LOGIC_VECTOR (7 DOWNTO 0);

STD_LOGIC_VECTOR (9 DOWNTO 0);

STD_LOGIC;
:

SIGNAL blue_on

i_blue

=> '1',

o_red

=> red_on,

o_green
o_blue

=> green_on,
=> blue_on,

o_horiz_sync

=> VGA_HS,

o_vert_sync

=> VGA_VS,

o_pixel_row

=> pixel_row,

o_pixel_column

=> pixel_column);

STD_LOGIC_VECTOR (9 DOWNTO 0);


:

SIGNAL green_on

=> '1',

PORT MAP (

STD_LOGIC;

color_rom0 : color_rom_vhd

STD_LOGIC;

COMPONENT vga IS
PORT(

=> i_a,

=> i_b,

=> i_c,

=> i_d,

=> i_e,

=> i_f,

i_clk

: IN

STD_LOGIC;

i_red

: IN

STD_LOGIC;

WHITE

=> i_WHITE,

BLACK

=> i_BLACK,

i_green

: IN

STD_LOGIC;

i_blue

: IN

o_red

: OUT STD_LOGIC;

o_green

STD_LOGIC;

i_pixel_column
i_pixel_row

: OUT STD_LOGIC;

o_blue

o_red

: OUT STD_LOGIC;

o_green

o_horiz_sync

: OUT STD_LOGIC;

o_vert_sync

: OUT STD_LOGIC;

o_pixel_row

: OUT STD_LOGIC_VECTOR( 9 DOWNTO

0 );
o_pixel_column
DOWNTO 0 ));

OUT

=> i_g,

STD_LOGIC_VECTOR( 9

o_blue

red

=> pixel_column,
=> pixel_row,

=> red_color,
=> green_color,
=> blue_color);

<= red_color (7 DOWNTO 2) ;

green <= green_color(7 DOWNTO 2) ;


blue <= blue_color (7 DOWNTO 2) ;

END COMPONENT;

COMPONENT color_rom_vhd IS
PORT(
a

PROCESS(red_on,green_on,blue_on,red,green,blue)
BEGIN

: IN STD_LOGIC;

: IN STD_LOGIC;

: IN STD_LOGIC;

: IN STD_LOGIC;

: IN STD_LOGIC;

: IN STD_LOGIC;
g

IF (red_on = '1' ) THEN VGA_R <= red;


ELSE VGA_R <= "000000";
END IF;

: IN STD_LOGIC;

IF (green_on = '1' ) THEN VGA_G <= green;

WHITE

: IN STD_LOGIC;

ELSE VGA_G <= "000000";

BLACK

: IN STD_LOGIC;

END IF;

i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );


i_pixel_row
o_red
o_green

: IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );

IF (blue_on = '1' ) THEN VGA_B <= blue;


ELSE VGA_B <= "000000";

: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

END IF;

end if;
end process;
end behavioural;

END PROCESS;
6.

VGA.vhd

END behavioral;
LIBRARY IEEE;

5. Clockdiv.vhd

USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY vga IS
entity CLOCKDIV is port(

PORT(

CLK: IN std_logic;

i_clk

: IN STD_LOGIC;

DIVOUT: buffer BIT);

i_red

: IN STD_LOGIC;

end CLOCKDIV;

i_green

architecture behavioural of CLOCKDIV is


begin

: IN STD_LOGIC;

i_blue

: IN STD_LOGIC;

o_red

: OUT STD_LOGIC;

o_green
PROCESS(CLK)

o_blue

: OUT STD_LOGIC;
: OUT STD_LOGIC;

variable count: integer:=0;

o_horiz_sync

: OUT STD_LOGIC;

constant div: integer:=2500000;

o_vert_sync

: OUT STD_LOGIC;

begin
if CLK'event

and

CLK='1'

o_pixel_row

OUT

STD_LOGIC_VECTOR( 9

o_pixel_column

OUT

STD_LOGIC_VECTOR( 9

DOWNTO 0 );

then
DOWNTO 0 ));
END vga;
if(count<div)
then

ARCHITECTURE behavioral OF vga IS


count:=count+1;
CONSTANT TH

: INTEGER := 800;

CONSTANT THB1 : INTEGER := 660;


CONSTANT THB2 : INTEGER := 756;

if(DIVOUT='0') then

CONSTANT THD

: INTEGER := 640;

DIVOUT<='0';
CONSTANT TV

: INTEGER := 525;

CONSTANT TVB1 : INTEGER := 494;

elsif(DIVOUT='1') then

CONSTANT TVB2 : INTEGER := 495;


CONSTANT TVD

DIVOUT<='1';

: INTEGER := 480;

end
if;

SIGNAL clock_25MHz : STD_LOGIC;


else

SIGNAL horiz_sync : STD_LOGIC;

if(DIVOUT='0') then

SIGNAL vert_sync

: STD_LOGIC;

SIGNAL video_on

: STD_LOGIC;

SIGNAL video_on_v : STD_LOGIC;


DIVOUT<='1';

SIGNAL video_on_h : STD_LOGIC;

elsif(DIVOUT='1') then

DIVOUT<='0';

SIGNAL h_count

: STD_LOGIC_VECTOR( 9 DOWNTO 0 );

SIGNAL v_count

: STD_LOGIC_VECTOR( 9 DOWNTO 0 );

BEGIN
end

if;
count:=0;

video_on

<= video_on_h AND video_on_v;

end if;
o_red

<= i_red AND video_on;

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

1
0

o_green
o_blue

<= i_green AND video_on;

v_count <= (others=>'0');

<= i_blue AND video_on;

ELSE IF ( h_count = 699 ) THEN


v_count <= v_count + 1;

o_horiz_sync <= horiz_sync;

END IF;

o_vert_sync <= vert_sync;

END IF;

PROCESS (i_clk)

IF ( v_count <= TVB2-1 ) AND ( v_count >= TVB1-1 ) THEN

BEGIN

vert_sync <= '0';


IF i_clk'EVENT AND i_clk='1' THEN

ELSE

IF (clock_25MHz = '0') THEN

vert_sync <= '1';

clock_25MHz <= '1';

END IF;

clock_25MHz <= '0';

IF ( h_count <= THD-1 ) THEN

ELSE

END IF;

video_on_h <= '1';

END IF;
END PROCESS;

o_pixel_column <= h_count;


ELSE
video_on_h <= '0';

PROCESS

END IF;
BEGIN
WAIT UNTIL( clock_25MHz'EVENT ) AND ( clock_25MHz = '1' );
IF ( h_count = TH-1 ) THEN
h_count <= (others=>'0');
ELSE

IF ( v_count <= TVD-1 ) THEN


video_on_v <= '1';
o_pixel_row <= v_count;
ELSE

h_count <= h_count + 1;


END IF;

video_on_v <= '0';


END IF;

IF ( h_count <= THB2-1 ) AND (h_count >= THB1-1 ) THEN


horiz_sync <= '0';

END PROCESS;
END behavioral;

ELSE
horiz_sync <= '1';
END IF;

IF ( v_count >= TV-1 ) AND ( h_count >= 699 ) THEN

Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel

1
1

Anda mungkin juga menyukai