Penggunaan state diagram untuk membuat suatu aplikasi dalam software ISE XILINX
memudahkan pengguna untuk membentuk suatu siklus keadaan, tanpa harus mengetahui
skematik dan hardware description language (HDL). Kemampuan yang dihasilkan dari aplikasi
ini membuat pengguna dapat merespon bentuk keluaran suatu algoritma yang sedang dibuat.
Namun, konversi yang dilakukan oleh kompiler mengelompokkan menjadi satu suatu variable
dalam bentuk hardware description language (HDL). Contoh sederhana ditampilkan pada
gambar 1, untuk membuat lampu lalu lintas sederhana.
Prinsip kerja dari FSM ini adalah pada state awal semua keluaran merah, kuning dan
hijau bernilai „0‟, ketika kondisi masukan timer “001” maka akan ke state awal dan akan menset
merah dan ketika masukan timer kondisinya “010” maka akan menset kuning dan ketika timer
kondisinya “011” maka akan menset hijau dan seterusnya sampai tombol reset ditekan maka
akan kembali ke kondisi state0. Hasil konversi state diagram dari gambar 1 ke VHSIC Hardware
Description Language (VHDL) ditunjukkan pada listing program 1.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY SHELL_VM IS
PORT (CLK,RESET,timer0,timer1,timer2: IN std_logic;
hijau,kuning,merah : OUT std_logic);
END;
PROCESS (sreg,BP_hijau,BP_kuning,RESET,timer0,timer1,timer2)
BEGIN
next_BP_hijau <= BP_hijau;next_BP_kuning <= BP_kuning;
next_merah <= '0';
next_sreg<=STATE0;
IF ( RESET='1' ) THEN
next_sreg<=STATE0;
next_BP_hijau<='0';
next_BP_kuning<='0';
next_merah<='0';
ELSE
CASE sreg IS
WHEN STATE0 =>
IF ( timer0='1' AND timer1='0' AND
timer2='0' ) THEN
next_sreg<=STATE1;
next_merah<='1';
next_BP_hijau<='0';
IF (( BP_kuning='1' )) THEN
next_BP_kuning<='1';
ELSE next_BP_kuning<='0';
END IF;
ELSE
next_sreg<=STATE0;
next_merah<='0';
next_BP_kuning<='0';
next_BP_hijau<='0';
END IF;
WHEN STATE1 =>
IF ( timer0='0' AND timer1='1' AND
timer2='0' ) THEN
next_sreg<=STATE2;
next_merah<='0';
next_BP_kuning<='1';
IF (( BP_hijau='1' )) THEN
next_BP_hijau<='1';
ELSE next_BP_hijau<='0';
END IF;
ELSE
next_sreg<=STATE1;
next_merah<='1';
next_BP_hijau<='0';
IF (( BP_kuning='1' )) THEN
next_BP_kuning<='1';
ELSE next_BP_kuning<='0';
END IF;
END IF;
WHEN STATE2 =>
IF ( timer0='1' AND timer1='1' AND
timer2='0' ) THEN
next_sreg<=STATE3;
next_merah<='0';
next_BP_kuning<='0';
next_BP_hijau<='1';
ELSE
next_sreg<=STATE2;
next_merah<='0';
next_BP_kuning<='1';
IF (( BP_hijau='1' )) THEN
next_BP_hijau<='1';
ELSE next_BP_hijau<='0';
END IF;
END IF;
WHEN STATE3 =>
IF ( timer0='0' AND timer1='0' AND
timer2='1' ) THEN
next_sreg<=STATE1;
next_merah<='1';
next_BP_hijau<='0';
IF (( BP_kuning='1' )) THEN
next_BP_kuning<='1';
ELSE next_BP_kuning<='0';
END IF;
ELSE
next_sreg<=STATE3;
next_merah<='0';
next_BP_kuning<='0';
next_BP_hijau<='1';
END IF;
WHEN OTHERS =>
END CASE;
END IF;
END PROCESS;
PROCESS (BP_hijau)
BEGIN
IF (( BP_hijau='1' )) THEN hijau<='1';
ELSE hijau<='0';
END IF;
END PROCESS;
PROCESS (BP_kuning)
BEGIN
IF (( BP_kuning='1' )) THEN kuning<='1';
ELSE kuning<='0';
END IF;
END PROCESS;
END BEHAVIOR;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY VM IS
PORT (timer : IN std_logic_vector (2 DOWNTO 0);
CLK,RESET: IN std_logic;
hijau,kuning,merah : OUT std_logic);
END;
ARCHITECTURE BEHAVIOR OF VM IS
COMPONENT SHELL_VM
PORT (CLK,RESET,timer0,timer1,timer2: IN std_logic;
hijau,kuning,merah : OUT std_logic);
END COMPONENT;
BEGIN
SHELL1_VM : SHELL_VM PORT MAP
(CLK=>CLK,RESET=>RESET,timer0=>timer(0),timer1=>timer(1),
timer2=>timer(2),hijau=>hijau,kuning=>kuning,merah=>merah);
END BEHAVIOR;
Listing program 1 VHDL dari gambar 1
Penentuan enkoding yang digunakan dalam aplikasi state machine sangat mempengaruhi waktu
tunda yang dihasilkan untuk perubahan dari state ke state. Enkoding yang digunakan dalam aplikasi state
diagram dari gambar 1 adalah enkoding Gray. Dengan demikian, perubahan state yang dihasilkan adalah
000, 001, 011, 010, dan 110. Simulasi sinyal yang dihasilkan untuk mengetahui keadaan dari state ke state
untuk aplikasi pada gambar 1 ditunjukkan pada gambar 3. Diagram bentuk gelombang digunakan untuk
mencari suatu kebenaran logika yang akan dihasilkan dari aplikasi teknologi FPGA.
Gambar 3 Diagram bentuk gelombang dari gambar 1
Waktu periode minimum dari aplikasi gambar 1 sebesar 3,550ns (Frekuensi maksimum:
281.690MHz).
Daftar Pustaka
Pedroni V.A., 2004, Circuit Design with VHDL, MIT Press, London, England.
Sjoholm, S. dan Lindh, L., 1997, VHDL for designers, Prentice Hall Europe, Great Britain.
Short, K.L., 2009, VHDL for Engineers, Pearson Education, Inc, Upper Saddle River, New
Jersey.