Anda di halaman 1dari 17

Percobaan IV

RANGKAIAN LOGIKA SEKUENSIAL


Alfanata S.G Tambunan (14S17054)
Tanggal Percobaan : 30/11/2018
[ELS2104] [Praktikum Sistem Digital]
[Laboratorium Dasar] – Teknik Elektro
Institut Teknologi Del

Counter adalah rangkaian logika sekuensial yang


menyimpan waktu dari suatu state, dan sering dikaitkan
Abstrak—Pada percobaan ini, kita akan menganalisis dengan sinyal waktu, . Secara singkat counter berfungsi
salah satu logika rangkaian yang lain, yaitu sebagai rangkaian yang menghitung secara terurut, seperti
rangkaian logika sekuensial. Rangkaian kali ini akan 0,1,2,dst.Pada percobaan ini, fungsi kerja dari counter akan
dimodelkan menggunakan.Finite State Machine disimulasikan menggunakan clockdiv, yang menghitung
(FSM) dalam sebuah studi kasus. FSM dari lamanya waktu dalam satuan nanosekon.
studi kasus ini akan diimplementasikan dengan
2.3 Fiinite State Machine
FPGA dan modul VGA driver. Dalam prcobaan ini Finite state machine adalah sebuah pemodelan komputasi
kita akan mensimulasikan penggunaan lampu jalan matematika yang digunakan untuk mendesain rangkaian
di empat persimpangan logika sekuensial maupun pemrograman komputer,
Kata kunci:VHDL,VPGA,FSM,VGA
I. PENDAHULUAN
Implementasi fungsi gerbang logika pada rangkaian dapat
dilakukan dengan berbagai cara, salah satunya adalah
rangkaian logika sekuensial.Keluaran dari rangkaian logika
sekuensial akan bergantung pada memori statenya. Secara
sederhana,suatu rangkaian sekuensial dapat bergantung
pada state dan masukkan sebelumnya (rangkaian Mealy)
atau hanya bergantung padastatenya (rangkaian Moore). Gambar diatas adalah representasi dari sebuah finite state
machine
Pada percobaan sebelumnya, kita hanya
2.4 MODUL VGA DRIVER
mengimplementasikan rangkaian tanpa memperhatikan
Modul VGA (Video Graphics Array) driver yang digunakan
logika masukkan sebelumnya(memori state).
kali ini adalah sebuah modul yang merepresentasikan
Pada kenyataannya, banyak aplikasi-aplikasi yang masukkan logika FPGA kedalam tampilan warna pada layar
membutuhkan memori state sebelumnya,.Percobaan ini akan monitor LCD.Modul ini menerima masukkan port yang ingin
mengimplementasikan sebuah studi kasus dari rangkaian dinyalakan, dan mengkonversikan masukkan menjadi warna
sekuensial,yaitu perempatan jalan yang mempunyai 4 buah pada layar.
lampu lalu lintas salah satu contoh aplikasi dari 2.5 KOMPILASI FILE VHDL
rangkaian sekuensial adalah counter, yang digunakan Pada percobaan-percobaan yang telah kita lakukan,
dalam studi kasus ini.Ada beberapa pemodelan yang dapat seringkali kita membutuhkan lebih dari satu buah file
digunakan untuk merepresentasikan logika dalam mensimulasikan suatu rangkaian.Dengan
sekuensial, salah satunya adalah FSM. Selain itu, kita juga menggunakan ALTERA QUARTUS II 9.0,kita cukup
akan mengenal implementasi menggunakan modul membuat project baru menggunakan create a new project >
VGA driver. add files maka ketika kompilasi dijalankan, semua files
2.1 Rangkaian sekuensial yang berada dalam proyek tersebut akan terkompilasi.
Rangkaian logika sekuensial didefinisikan sebagai tipe Dengan menggunakan ModelSim, kita cukup mengklik file-
rangkaian logika yang tidak hanya berpengaruh pada file yang ingin kita kompilasi sambil menahan tombol Shift
masukkan logika terbaru namun juga masukkan-masukkan pada keyboard. Selanjutnya kita cukup menekan tombol
logika sebelumnya,.Rangkaian logika sekuensial dapatdibagi compile/done, makasemua file VHDL yang ingin kita
menjadi dua, yaitu synchronous dan asynchronous.Salah kompilasi akan ter-compile
satu aplikasi dari rangkaian logika sekuensial, yaitu counter,
yang akan dijelaskanpada bagian berikut. II. HASIL DAN ANALISIS
2.2 COUNTER Pada percobaan 4a kita menggunakan code di bawah ini:
Pada program VHDL diatas merupakan library program
dimana program tersebut adalah kode yang digunakan untuk
menjalankan segala program yang akan di implementasikan
pada VHDL.

ENTITY FSM IS
PORT (
CLK : IN STD_LOGIC;
DAYORNIGHT : IN STD_LOGIC;
TOMBOLDARURAT : IN STD_LOGIC;
LAMP : OUT STD_LOGIC_VEKTOR (5
DOWNTO 0)
-);

Pada program ini meminta port yang akan mkemberikan


masukan dan keluaran pada program , dimana masukannya
adalah CLK, DAYORNIGHT, TOMBOLDARURAT, dan
keluarannya akan ditampilkan pada lampu LED yang
memiliki 6 segment mulai dari 0 sampai 5.

END FMS;
ARCHITECTURE behavioral OF FMS IS
TYPE executionStage IS (s1,s2,s3);
SIGNAL currentstate, laststate : executionStage :=s1;
SIGNAL count : integer :=1;

Pada program ini akan memberikana petunjuk tipe dan signal


stage yang akan di eksekusi.tipenya adalah s1, s2, s3, dan
signalnya adalah currentstate dan laststate.
Pada program ini yang pertama di eksekusi adalah stage 1 (s1)
dan penghitungannya menggunakan integer = 1.

BEGIN
PROCESS (CLK)
BEGIN
IF ( CLK'EVENT) AND (CLK = '1') THEN
CASE currentstate IS
WHEN S1 =>
IF (TOMBOLDARURAT = '0') THEN
IF ( DAYORNIGHT = '0')

Pada program ini proses terjadi pada CLK. Pada saat CLK = 1
maka kasusnya adalah currentstate dan terjadi pada state 1 (s1)

THEN
IF ( count <9) THEN

count <= count + 1 ;


Penjelasan code diatas sebagai berikut:
LIBRARY ieee; LAMP <= "100001";
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all; Pada saat lampu pada BT menyala lebih kecil dari 9 detik
maka lampu yang menyala adalah kuning pada US dam merah
pada BT selama 10 detik , dan ini juga terjadi pada siang hari IF(TOMBOLDARURAT = '0') THEN
pada s1. IF ( DAYORNIGHT = '0')THEN
IF (count <8) THEN

ELSIF ((count >= 9) AND (count <11)) THEN count <= count + 1;
LAMP <= "001100";
count <= count + 1; ELSIF ((count >= 8) AND (count < 10)) THEN
count <= count + 1;
LAMP <= "100010"; LAMP <= "010100";

ELSE
Kasus yang terjadi pada program ini adalah laststate pada saat
count <= 1; lampu darurat masih mati dan kondisinya belum kita ketahui
currentstate <= s2; apakah siang atau malam dan ini terjadi pada s2.
Ketika waktunya < 8 dan < 10 detik detik lampu belum
berubah dari bentuk semula dan ketika lampu bertambah 1
Pada program ini lampu yang menyala adalah lampu kuning detik maka lampu yang menyala adalah lampu merah selama
saat lampu pada BT sudah menyala 7 detik pada US dan 10 detik pada US dan lampu kuning menyala pada saat waktu
lampu hijau pada BT selama 8 detik. Ini terjadi pada s2 dan sudah 9 detik pada BT pada s2. Ketika waktunya >= 8 detik
pada siang hari. dan < 10 detik lampu masih tetap tetapi pada saat waktu
bertambah 1 detik atau sudah 10 detik lampu berubah menjadi
END IF ; lampu hijau pada US selama 8 detik dan lampu kuning pada
ELSE saat lampu pada US sudah menyala selama 7 detik pada s3.
Proses ini terjadi pada siang hari.
IF (count <4) THEN
ELSE
count <= count +1; count <= 1;
currentstate <= s1;
LAMP <= "100001";
pada program ini yang terjadi adalah pada saat waktunya <= 1
ELSIF ((count >= 4 ) AND (count <5)) THEN detik maka yang terjadi adalah proses pada state 1 (s1) pada
kondisi siang hari.
count <= count +1;
END IF;
LAMP <= "100010"; ELSE
IF ( count < 4)THEN
ELSE count <= count + 1;
LAMP <= "001100";
count <= 1; ELSIF ((count >= 4) AND (count < 5)) THEN
count <= count + 1;
currentstate <= s2; LAMP <= "010100";
else
END IF; count <= count + 1;
currentstate <= s1;
END IF; END IF;
END IF;
Proses yang terjadi pada program ini adalah lampu kuning
menyala pada saat lampu pada BT sudah menyala selama 3
detik pada US dan lampu merah pada BT lampu menyala
selama 4 detik, dan ini terjadi pada s1 . Ketika waktunya Pada program ini yang terjadi adalah lampu merah menyala
sudah 4 detik maka lampu kuning US menyala dan lampu selama 4 detik pada US dan lampu kuning menyala setelah
merah menyala pada BT pada state s2. Ini semua terjadi pada lampu merah pada US menyala 3 detik dan lampu kinung pada
malam hari. BT ini menyala selama 1 detik pada s2.
Setalah lampu pada s2 sudah menyala sesuai dengan waktu
ELSE yang di tentukan maka selanjutnya lampu yang menyala
laststate <= currentstate; adalah lampu hijau selama 4 detik pada US dan lampu
currentstate <= s3; kuning pada BT selama 1 detik setelah lampu hijau pada US
count <= 1; menyala selama 3 detik pada s3. Akan tetapi pada saat
END IF; waktunya bertambah 1 detik maka yang terjadi adalah prose
WHEN S2 => currentstate pada s1. Ini semua terjadi pada malam hari.
ELSE
laststate <= currentstate;
currentstate <= s3;
count <= 1;
END IF;
WHEN S3 =>
if ((count >= 1) AND (count <2)) THEN
count <= count + 1;
LAMP <= "010010";

Pada program ini adalah lampu hijau pada US hidup selama 4


detik dan lampu hijau pada BT selama 4 detik.

ELSIF ((count >= 2) AND ( count < 3)) THEN


count <= count + 1;
LAMP <= "000000";
ELSIF ((count > 3) AND ( count < 4)) THEN
count <= count + 1;
LAMP <= "000000";
ELSE
LAMP <= "000000";
count <= 1;
currentstate <= laststate;
END IF;
END CASE;
END IF;
END PROCESS;
END behavioral;

Pada program ini yang terjadi adalah lampu darurat menyala


akibat dari lampu hijau pada US dan BT hidup bersamaan, dan
setelah semua perintah dalam program selesai maka program
nya selesai.

Ket : siang hari


1. t = 10s pada lampu merah
2. t = 8s pada lampu hijau
3. t = 2s pada lampu kuning

pada malam hari


1. t = 4s pada lampu merah
2. t = 4s pada lampu hijau
3. t = 1s pada lampu kuning
maka hasil yang didapat pada code di atas dengan FPGA
sebagai berikut
Pada percobaan 4b kita menggunakan code vhdl sebagai
berikut:

Pada program diatas akan menerima port masukan dan


keluaran yaitu port untuk masukkanya hanya 2 yaitu clock_50
dan SW (dari switch 0 sampai 5) dan port keluarnya
VGA_R,VGA_G,VGA_B,VGA_HS,VGA_VS,VGA_CLK_V
GA_BLANK(ini menampilkan hasil pada layar VPGA yang
kita gunakan),GPIO_0,LEDR.

Pada program diatas dilakukkan penamaan sinyal yang akan


digunakan yaitu M_US,K_US,H_US,M_BT,K_BT,H_BT.

Pada program diatas dilakukan pemanggilan pada program


lain yaitu “display_vhd” dan menyatakan port masukkan dan
Penjelasan code di atas sebagai berikut: keluaranya yaitu
Masukkan:
i_clk
i_M_US
i_K_US
i_H_US
i_M_BT
Pada program VHDL diatas merupakan library program i_K_BT
dimana program tersebut adalah kode yang digunakan untuk i_H_BT
menjalankan segala program yang akan di implementasikan
pada VHDL. keluaran:
VGA_R
VGA_G
VGA_B
VGA_HS
VGA_VS
VGA_CLK
VGA_BLANK

Pada program diatas dilakukan penyamaan antara module_vga


dengan program panggilan sebelumnya yaitu display_vhd
Dan juga dilakkukan penyamaan dari sinyal yang telah dibuat
sebelumnya dengan masing-masing switch yang akan
digunakan.
M_US <= SW(0);digunakan untuk switch 0
K_US <= SW(1); digunakan untuk switch 1
H_US <= SW(2); digunakan untuk switch 2
M_BT <= SW(3); digunakan untuk switch 3
K_BT <= SW(4); digunakan untuk switch 4
H_BT <= SW(5); digunakan untuk switch 5
Hasil dari program di atas sebagai berikut
Percobaan 4c:
Pada percobaan 4c kita akan menggunakan code vhdl di
bawah ini:

Pada program di atas merupakan library program dimana


program tersebut adalah kode yang digunakan untuk
menjalankan segala program yang akan diimplementasikan
pada vhdl

Pada program di atas entitity “top_level_vhd” sebagai judul


dari program yang akan dijalankan.Port yang diterima ada
masukkan dan keluaran, masukan yang dibuat adalah:
Clock_50,SW(9 sampai 0) dan menerima port keluaran
VGA_R,VGA_G,VGA_B,VGA_HS,VGA_VS,VGA_CLK_V
GA_BLANK(ini menampilkan hasil pada layar VPGA yang
kita gunakan), GPIO_0(35 sampai 0),LEDR(9 sampai 0).
VGA_R,VGA_G,VGA_B,VGA_HS,VGA_VS,VGA_CLK_V
GA_BLANK(ini menampilkan hasil pada layar VPGA yang
kita gunakan).End behavioural yaitu mengakhiri program.

Berikut adalah hasil dari program di atas saat dicoba


menggunakan:

Pada code di atas memanggil program yang sudah ada yaitu


FSM pada percobaan 4a dengan port nya:
CLK=>CLOCK_50 sebagai waktu yang diperlukan untuk
mengubah warna-warna pada VPGA. Port DAYORNIGHT
dibuat di switch 0 code ini mengubah waktu siang atau
malam.Tombol darurat di buat di switch 1.lamp(5) untuk
merah_utaraselatan,lamp(4) untuk kuning
_utaraselatan,lamp(3) untuk hijau_utaraselatan,lamp(2) untuk
merah_barattimur,lamp(1) untuk kuning_baratTImur,lamp(0)
untuk hijau_Barattimur.

Modul VGA : display_vhd adalah program pemanggil


“display_vhd” untuk menyamakanya pada “modul VGA”
yaitu untuk menampilkan gambar pada VPGA. Digunakan
port map sebagai berikut:
I_CLK sebagai waktu yang digunakan untuk mengganti
kondisi lampu ,i_M_US untuk merah utaraselatan,i_K_US
untuk kuning utaraselatan,i_H_US untuk hijau
UtaraSelatan,i_M_BT untuk merah BaratTimut,i_K_BT untuk
kuning BaratTimur,i_H_BT unutk hijau BaratTimur,
Clock_50,SW(9 sampai 0) dan menerima port keluaran
Dan tombol darurat

REFRENSI
[1] Brian Holdsworth and Clive Woods, Digital
Logic Design Fourth Edition, N.wnes, 2002
[2]R.H.Katz, Contemporary Logic Design Second
Edition, Pearson Prentince-Hall, NJ, 2005
[3]Stephen Brown and Zvonko Vranesic,
Fundamentals of Digital Logic with VHDL Design
Third Edition, McGraw-Hill, San Francisco,
2009
[4]http://en.wikipedia.org/wiki/Sequential_logic
[5]http://en.wikipedia.org/wiki/Counter
[6]http://en.wikipedia.org/wiki/Finite_state_machine
[7] http://vhdlguru.blogspot.com/2010/03/digital-clock-
in-vhdl.html

IV.KESIMPULAN
Rangkaian logika sekuensial adalah rangkaian logika yang
bergantung pada memori state, seperti pada studi kasus
diatas. Counter yang digunakan berfungsi sebagai
penghitung jeda waktu (satuan detik) dari lamanya jeda
waktu lampu lalu lintas yang digunakan.Implementasi yang
digunakan diatas menggunakan Finite State Machine, yaitu
suatumetode pemodelan (dalam hal ini rangkaian
Mealy) dari desain rangkaian logika sekuensial.
Dalam mengimplementasikan rangkaian logika sekuensial
percobaan ini, kita menggunakan dua metode implementasi,
yaitu dengan implementasi langsung FSM ke FPGA DE-1
board
Lampiran

Anda mungkin juga menyukai