1.2
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
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
2.2
VGA
2.3
ALARM
3. METODOLOGI
3.1
Monitor LCD
3.2
LANGKAH KERJA
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
4.1
SPESIFIKASI
memiliki
memulai
proses
Setelah hasil yang diinginkan didapatkan, implementasi akhir dan uji coba
4.3
VHDL CODE
Terlampir
4.4
4.5
Gambar
4.2
PROSES DESAIN
Proses brainstorming ide rangkaian
4.6
Pembuatan FSM dalam bahasa
VHDL dan pembuatan modul
color_rom_vhd
STRATEGI PENGUJIAN
HASIL IMPLEMENTASI
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
5. KESIMPULAN
(a)
(b)
DAFTAR PUSTAKA
[1]
[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
4.7
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;
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
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;
: IN STD_LOGIC;
i_a
VGA_G
VGA_B
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;
PORT(
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
C <= lights(2) ;
D <= lights(3) ;
E <= lights(4) ;
F <= lights(5) ;
G <= lights(6) ;
);
END COMPONENT;
END behavioral;
2. Lampu Merah.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
BEGIN
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
module_vga : display_vhd
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,
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
=> VGA_BLANK
);
--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
);
END COMPONENT;
--ubah sw jd lights
A <= lights(0) ;
B <= lights(1) ;
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
BEGIN
END IF;
PROCESS (clock)
WHEN HM=>
BEGIN
lampu<=STATE_HM;
counter<=counter+1;
nextState<=DAR;
ELSE
END IF;
END IF;
END IF;
WHEN KM=>
END PROCESS;
PROCESS (currentState)
nextState<=DAR;
BEGIN
CASE currentState IS
nextState<=MH;
lampu<=STATE_NN;
ELSIF counter = 1 THEN
lampu<=STATE_KK;
END IF;
END CASE;
END PROCESS;
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;
WHITE
: IN STD_LOGIC;
BLACK
: IN STD_LOGIC;
END IF;
WHEN MK=>
i_pixel_row
lampu<=STATE_MK;
o_red
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;
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
CONSTANT top
: INTEGER := 0;
CONSTANT a_top
: INTEGER := 50;
: INTEGER := 95;
: INTEGER := 220;
CONSTANT g_bottom
: INTEGER := 260;
CONSTANT ce_top
: INTEGER := 265;
: INTEGER := 390;
: INTEGER := 215;
: INTEGER := 260;
CONSTANT a_right
: INTEGER := 380;
CONSTANT bc_left
: INTEGER := 385;
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";
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
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY display_vhd IS
PORT(
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;
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
i_BLACK
: IN STD_LOGIC;
o_blue
VGA_R
END COMPONENT;
VGA_G
VGA_B
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
SIGNAL blue
SIGNAL red_color
SIGNAL green_color
SIGNAL blue_color
SIGNAL pixel_row
SIGNAL pixel_column
SIGNAL red_on
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);
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
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);
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
: IN STD_LOGIC;
WHITE
: IN STD_LOGIC;
BLACK
: IN STD_LOGIC;
END IF;
: IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
: 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;
i_red
: IN STD_LOGIC;
end CLOCKDIV;
i_green
: 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;
o_horiz_sync
: OUT STD_LOGIC;
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
: INTEGER := 800;
if(DIVOUT='0') then
CONSTANT THD
: INTEGER := 640;
DIVOUT<='0';
CONSTANT TV
: INTEGER := 525;
elsif(DIVOUT='1') then
DIVOUT<='1';
: INTEGER := 480;
end
if;
if(DIVOUT='0') then
SIGNAL vert_sync
: STD_LOGIC;
SIGNAL video_on
: 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
end if;
o_red
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
1
0
o_green
o_blue
END IF;
END IF;
PROCESS (i_clk)
BEGIN
ELSE
END IF;
ELSE
END IF;
END IF;
END PROCESS;
PROCESS
END IF;
BEGIN
WAIT UNTIL( clock_25MHz'EVENT ) AND ( clock_25MHz = '1' );
IF ( h_count = TH-1 ) THEN
h_count <= (others=>'0');
ELSE
END PROCESS;
END behavioral;
ELSE
horiz_sync <= '1';
END IF;
Laporan Projek akhir Sistem Digital - Laboratorium Dasar Teknik Elektro FTIE ITDel
1
1