ENTITY FSM IS
PORT (
CLK : IN STD_LOGIC;
DAYORNIGHT : IN STD_LOGIC;
TOMBOLDARURAT : IN STD_LOGIC;
LAMP : OUT STD_LOGIC_VEKTOR (5
DOWNTO 0)
-);
END FMS;
ARCHITECTURE behavioral OF FMS IS
TYPE executionStage IS (s1,s2,s3);
SIGNAL currentstate, laststate : executionStage :=s1;
SIGNAL count : 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
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";
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