MODUL 4 RANGKAIAN LOGIKA SEKUENSIAL Iskandar Setiadi (13511073) Asisten: Anugerah Firdauzi / 13209109 Tanggal Percobaan: 12/11/2012 EL2195-Praktikum Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Pada percobaan-percobaan sebelumnya, kita telah menganalisis rangkaian berbasis logika kombinasional. Pada realita, sistem gerbang logika yang dibangun tidak semuanya dapat ditangani dengan logika kombinasional. Pada percobaan ini, kita akan menganalisis salah satu logika rangkaian yang lain, yaitu rangkaian logika sekuensial. Rangkaian kali ini akan dimodelkan menggunakan Finite State Machine (FSM) dalam sebuah studi kasus. FSM dari studi kasus ini akan diimplementasikan dengan FPGA dan modul VGA driver. Kata kunci: rangkaian logika sekuensial, finite state machine, FPGA, VGA driver. 1.
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 pada statenya (rangkaian Moore). Pada percobaan sebelumnya, kita hanya mengimplementasikan rangkaian tanpa memperhatikan logika masukkan sebelumnya (memori state). Pada kenyataannya, banyak aplikasi-aplikasi yang membutuhkan memori state sebelumnya, seperti alarm kebakaran yang digunakan di gedung-gedung perkantoran. Percobaan ini akan mengimplementasikan sebuah studi kasus dari rangkaian sekuensial, yaitu perempatan jalan yang mempunyai 4 buah lampu lalulintas Dua implementasi berbeda akan digunakan, yaitu implementasi desain FSM dengan FPGA maupun implementasi menggunakan modul VGA driver.
2.
digunakan dalam studi kasus ini. Ada beberapa pemodelan yang dapat digunakan untuk merepresentasikan logika sekuensial, salah satunya adalah FSM. Selain itu, kita juga akan mengenal implementasi menggunakan modul VGA driver.
2.1
RANGKAIAN SEKUENSIAL
Rangkaian logika sekuensial didefinisikan sebagai tipe rangkaian logika yang tidak hanya berpengaruh pada masukkan logika terbaru, namun juga masukkan-masukkan logika sebelumnya, [4]. Rangkaian logika sekuensial dapat dibagi menjadi dua, yaitu synchronous dan asynchronous. Salah satu aplikasi dari rangkaian logika sekuensial, yaitu counter, yang akan dijelaskan pada bagian berikut.
2.2
COUNTER
Counter adalah rangkaian logika sekuensial yang menyimpan waktu dari suatu state, dan sering dikaitkan dengan sinyal waktu, [5]. Secara singkat, counter berfungsi sebagai rangkaian yang menghitung secara terurut, seperti 0,1,2,dst. Pada percobaan ini, fungsi kerja dari counter akan disimulasikan menggunakan clockdiv, yang menghitung lamanya waktu dalam satuan nanosekon.
2.3
FINITE STATE MACHINE
Finite state machine adalah sebuah pemodelan komputasi matematika yang digunakan untuk mendesain rangkaian logika sekuensial maupun pemrograman komputer, [6].
STUDI PUSTAKA
Rangkaian gerbang logika dapat dibagi menjadi beberapa bagian, seperti rangkaian logika kombinasional maupun rangkaian logika sekuensial. Salah satu contoh aplikasi dari rangkaian sekuensial adalah counter, yang Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1
Gambar 2-1 Pemodelan Finite State Machine
Perhatikan gambar (Gambar 2-1) diatas. Gambar tersebut adalah representasi dari sebuah finite state machine. Saat S1 diberikan logika 1, maka fungsi S1 akan kembali dijalankan, sedangkan saat logika S1 diberikan logika 0, maka fungsi S2 akan dijalankan. Demikian pula saat S2 diberikan logika 1, terlihat bahwa fungsi S2 akan kembali dijalankan, sedangkan saat diberikan logika 0, maka fungsi S1 akan dijalankan.
Next Function
1
S1
0
S2
Monitor LCD
FPGA DE-1, catudaya, konektor tambahan
Script VHDL yang telah dipersiapkan sebelumnya
3.2
kabel,
serta
PROSEDUR PERCOBAAN
Percobaan ini dapat dibagi menjadi 3 bagian, yaitu implementasi desain FSM dengan FPGA, implementasi modul VGA driver, serta menggabungkan desain FSM dengan VGA driver. Pada percobaan pertama, kita akan membuat sebuah rangkaian sekuensial sederhana dari studi kasus lampu lalulintas yang telah dibuat pada tugas pendahuluan sebelumnya. Studi kasus ini menggunakan 2 script VHDL, yaitu “lampu.vhd” serta “clockdiv.vhd”.
Tabel 2-1 Simulasi Finite State Machine diatas,[6]
Logika S1
Berikut ini adalah file script lampu.vhd yang kelompok kami digunakan: LIBRARY IEEE;
2.4
USE IEEE.STD_LOGIC_1164.ALL;
MODUL VGA DRIVER
Modul VGA (Video Graphics Array) driver yang digunakan kali ini adalah sebuah modul yang merepresentasikan masukkan logika FPGA kedalam tampilan warna pada layar monitor LCD. Modul ini menerima masukkan port yang ingin dinyalakan, dan mengkonversikan masukkan menjadi warna pada layar.
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY LAMPU is port(
ISDARURAT : IN STD_LOGIC; --Jika
LED : OUT STD_LOGIC_VECTOR (5 downto
Dengan menggunakan ALTERA QUARTUS II 9.0, kita cukup membuat project baru menggunakan create a new project > add files maka ketika kompilasi dijalankan, semua files yang berada dalam proyek tersebut akan terkompilasi. Dengan menggunakan ModelSim, kita cukup mengklik file-file yang ingin kita kompilasi sambil menahan tombol Shift pada keyboard. Selanjutnya kita cukup menekan tombol compile/done, maka semua file VHDL yang ingin kita kompilasi akan ter-compile.
0)); END LAMPU;
ARCHITECTURE TRAFFICLIGHT OF LAMPU IS
component CLOCKDIV is –Memasukkan Clockdiv port(CLK: IN STD_LOGIC; DIVOUT: buffer STD_LOGIC); end component;
TYPE KONDISILAMPU IS (S1, S2, S3, S4, S5, S6); SIGNAL CURRENTKONDISI: KONDISILAMPU; SIGNAL CLOCKASLI : STD_LOGIC; SHARED VARIABLE HITUNG : integer := 0; SHARED VARIABLE DARURATMODE : integer := 0;
METODOLOGI ALAT PERCOBAAN
: IN STD_LOGIC;
CLOCKIN : IN STD_LOGIC;
Pada percobaan-percobaan yang telah kita lakukan, seringkali kita membutuhkan lebih dari satu buah file dalam mensimulasikan suatu rangkaian.
3.1
DAYNIGHT
darurat
KOMPILASI FILE VHDL
2.5
3.
USE IEEE.STD_LOGIC_ARITH.ALL;
BEGIN
Komputer / PC yang telah terinstall program Quartus II 9.0
TEMP: CLOCKDIV PORT MAP (CLK => CLOCKIN, DIVOUT => CLOCKASLI); --Menggabungkan Clockdiv PROCESS (CLOCKASLI,ISDARURAT,DAYNIGHT)
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
BEGIN --REPARASI KODE ISDARURAT IF (CLOCKASLI'EVENT) AND (CLOCKASLI = '1') AND (ISDARURAT = '1') THEN IF DARURATMODE = 0 THEN
CURRENTKONDISI <= S3; HITUNG := 0; END IF; LED <= "010100"; --K_US dan M_BT
DARURATMODE := 1; HITUNG := 0;
WHEN S3 =>
END IF; IF (HITUNG < 2) AND (NOT (CURRENTKONDISI = S6)) THEN
= '1')) OR '0')) THEN
IF ((HITUNG < 8) AND (DAYNIGHT ((HITUNG < 4) AND (DAYNIGHT = HITUNG := HITUNG + 1;
CURRENTKONDISI <= S5; CURRENTKONDISI <= S3;
HITUNG := HITUNG + 1;
ELSE
ELSE CURRENTKONDISI <= S6;
CURRENTKONDISI <= S4;
HITUNG := 0;
HITUNG :=
END IF;
0;
END IF;
IF (HITUNG < 2) AND (CURRENTKONDISI = S6) THEN
LED <= "100001"; --M_US dan H_BT
CURRENTKONDISI <= S6; WHEN S4 =>
HITUNG := HITUNG + 1;
IF ((HITUNG < 2) AND (DAYNIGHT = '1')) OR ((HITUNG < 2) AND (DAYNIGHT = '0')) THEN
ELSE CURRENTKONDISI <= S5;
HITUNG :=
HITUNG := 0; END IF; ELSIF (CLOCKASLI'EVENT) AND (CLOCKASLI = '1') AND (ISDARURAT = '0') THEN IF DARURATMODE = 1 THEN
HITUNG + 1;
CURRENTKONDISI <= S4; ELSE
DARURATMODE := 0;
CURRENTKONDISI <= S1; HITUNG := 0;
CURRENTKONDISI <= S5;
END IF;
END IF;
LED <= "100010"; --M_US dan K_BT
CASE CURRENTKONDISI IS WHEN S1 => = '1')) OR '0')) THEN
WHEN S5 =>
IF ((HITUNG < 8) AND (DAYNIGHT ((HITUNG < 4) AND (DAYNIGHT =
HITUNG :=
HITUNG + 1;
IF (HITUNG < 2) THEN HITUNG := HITUNG + 1; CURRENTKONDISI <= S5; ELSE
CURRENTKONDISI <= S1; ELSE
CURRENTKONDISI <= S6; HITUNG := 0;
CURRENTKONDISI <= S2;
END IF;
HITUNG :=
LED <= "010010"; --Kuning menyala
0;
END IF; LED <= "001100"; --H_US dan M_BT
WHEN S6 => IF (HITUNG < 2) THEN
WHEN S2 =>
HITUNG :=
IF ((HITUNG < 2) AND (DAYNIGHT = '1')) OR ((HITUNG < 2) AND (DAYNIGHT = '0')) THEN HITUNG :=
HITUNG + 1;
CURRENTKONDISI <= S2; ELSE
HITUNG + 1;
CURRENTKONDISI <= S6; ELSE CURRENTKONDISI <= S1; HITUNG :=
0;
END IF; Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
3
S6 : semua lampu dimatikan
LED <= "000000"; --Semua lampu mati END CASE;
Penjelasan lebih lanjut akan dibahas pada bagian hasil dan analisis.
END IF; END PROCESS; END TRAFFICLIGHT; --Created by Iskandar Setiadi
Pada script tersebut, counter waktu yang digunakan adalah komponen clockdiv, yang menerima masukkan (melalui PORT MAP) “CLOCKIN”, dan mem-buffer keluaran kedalam variabel “CLOCKASLI”. Kondisi “(CLOCKASLI'EVENT) AND (CLOCKASLI = '1')” dipenuhi setiap kurang lebih 1 detik, sehingga variabel “HITUNG” yang digunakan akan bertambah nilainya setiap 1 detik. Selanjutnya, kita membagi rangkaian menjadi dua kemungkinan, yaitu saat mode darurat ditekan ataupun saat mode siang/malam diaktifkan. Saat mode darurat dinyalakan, maka “ISDARURAT” akan bernilai 1, yang menyebabkan lampu kuning berkedap-kedip. Jika diberi logika 0, maka rangkaian akan bergantung pada mode siang ataupun malam hari.
Percobaan selanjutnya adalah mengimplementasikan modul VGA driver. Pada percobaan ini, kita akan diberikan modul display “top_level_vhd” yang akan menghubungkan logika masukkan dengan tampilan pada layar LCD / monitor. Langkah percobaannya sangat mudah, yaitu kita cukup mengkompilasi modul yang diberikan lalu me-load modul tersebut kedalam FPGA. Selanjutnya kita akan menghubungkan FPGA dengan kabel dari LCD. Pada percobaan ketiga, kita akan menggabungkan kedua percobaan diatas, yaitu dengan menghubungkan keluaran finite machine state dengan layar LCD menggunakan modul VGA driver. Modul VGA driver yang digunakan akan kita berikan component lampu yang telah dibuat pada percobaan pertama.
4.
HASIL DAN ANALISIS
Percobaan ini dibagi menjadi 3 segmen utama, yaitu mengimplementasikan desain FSM pada FPGA, mengimplementasikan modul VGA driver, serta menggabungkan desain FSM dengan VGA driver. Berikut ini adalah hasil serta analisis dari percobaan ini. Percobaan di laboratorium berakhir pada pukul 10.53 dengan menyelesaikan percobaan 4A, 4B, dan 4C dengan sedikit kendala pada mode darurat yang digunakan.
4.1
Pada percobaan ini, kita akan mengimplementasikan studi kasus yang telah kita buat dengan FPGA DE-1 board.
Gambar 3-1 Finite State Machine Percobaan
Gambar 3-1 adalah sketsa kasar dari FSM yang akan kita gunakan dalam studi kasus kali ini (direpresentasikan setiap 1 detik). S1, S2, S3, dan S4 merepresentasikan kondisi saat mode darurat tidak ditekan sedangkan S5, S6 merepresentasikan saat mode darurat ditekan / lampu kuning berkedap-kedip. S1 : Hijau_US dan Merah_BT menyala S2 : Kuning_US dan Merah_BT menyala S3 : Merah_US dan Hijau_BT menyala S4 : Merah_US dan Kuning_BT menyala
IMPLEMENTASI DESAIN FSM PADA FPGA
Clockdiv yang digunakan diberikan constant div sebesar 25.000.000 untuk rangkaian DE-1 yang memiliki frekuensi 50 MHz. Mengapa div yang diberikan adalah frekuensi dibagi 2? Hal ini dikarenakan pada kode VHDL yang kita gunakan, kita menunggu saat logika CLOCKASLI (DIVOUT pada Clockdiv) memiliki logika 1. Hal ini seperti yang terlihat pada potongan kode ” (CLOCKASLI'EVENT) AND (CLOCKASLI = '1')”. Satu waveform / gelombang yang utuh terdiri dari 1 kali logika ‘0’ dan 1 kali logika ‘1’ saat CLOCKASLI’EVENT terjadi. Perhatikan gambar berikut ini:
S5 : Kuning_US dan Kuning_BT menyala Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
4
Gambar 4-1 Keluaran Clockdiv
Pada gambar 4-1 diatas, terlihat bahwa jika kita mengatur constant div sebesar 24, maka satu gelombang penuh akan terjadi pada 48, yang artinya untuk membuat event yang berubah setiap 1 detik, kita perlu mengatur constant div menjadi sekitar 25.000.000, atau setengah dari frekuensi FPGA DE-1 yang digunakan. Konstanta ini sendiri bergantung pada script yang digunakan. Jika kita menghilangkan bagian (CLOCKASLI = '1'),[7], maka kita tidak perlu menggunakan frekuensi dibagi dua diatas. Selain itu, perbedaan selisih antara 48 dengan 49.2 keluaran dikarenakan faktor lain, yaitu worst case delay yang terjadi, seperti yang telah dibahas dalam modul percobaan sebelumnya. Faktor processor FPGA 50 MHz yang tidak murni 50.000.000 proses per detik (adanya tingkat keefektifan board) juga mempengaruhi delay diatas.
Gambar 4-3 Simulasi desain pada FPGA DE-1
Gambar diatas menunjukkan SW[2] (mode darurat) pada keadaan logika 0, SW[1] (mode siang/malam) pada keadaan logika 1 yang artinya siang hari tanpa kondisi mode darurat. Salah satu keadaan FSM yang ditampilkan diatas adalah S3, saat Merah_US dan Hijau_BT. Pin Planner yang digunakan pada desain ini adalah: -SW[1] untuk mode siang/malam -SW[2] untuk mode darurat
Clockdiv yang dibahas diatas menjadi komponen masukkan dari script studi kasus yang telah kita buat. Sebelum diimplementasikan pada board FPGA, berikut ini adalah hasil simulasi waveform pada ModelSim (Gambar 4-2):
-Keluaran 6 bit pada LEDR (5 downto 0) dengan lampu terkiri merepresentasikan Merah_US dan lampu terkanan merepresentasikan Hijau_BT.
Gambar 4-2 Simulasi waveform pada ModelSim
Diluar dua mode tersebut, jika SW[2] / mode darurat dinyalakan (diberi logika 1), maka FSM akan memasuki state S5 dan S6. S5 dan S6 akan bergantian dengan selang waktu 1 detik.
Perhatikan bahwa lampu LED menunjukkan angka 001100 serta 010100, yang artinya lampu Hijau_US & Merah_BT menyala serta Kuning_US & Merah_BT menyala. Langkah selanjutnya adalah melakukan kompilasi pada ALTERA QUARTUS dan memasang Pin Planner pada rancangan desain diatas. Dengan meng-load desain ini pada FPGA, maka didapatkan hasil sebagai contoh berikut (Gambar 4-3) :
Saat SW[1] diberikan logika 1, maka mode siang menyala, dan FSM akan berada diantara state S1, S2, S3, dan S4. Lama rangkaian saat S1 dan S3 adalah 8 detik, sedangkan saat S2 dan S4 adalah 2 detik. Jika SW[1] diberikan logika 0 (mode malam), maka FSM juga akan berada diantara state S1, S2, S3, dan S4. Lama rangkaian saat S1 dan S3 adalah 4 detik, sedangkan saat S2 dan S4 adalah 1 detik.
Penjabaran dari masing-masing S1 sampai S6 telah dijelaskan pada bagian metodologi, sehingga kejadian dari setiap state dapat dibaca pada bagian tersebut.
4.2
IMPLEMENTASI MODUL VGA DRIVER
Pada percobaan ini, kita mengambil file yang berekstensi .vhd serta .qsf dari modul yang diberikan, lalu membuat sebuah project baru di direktori yang telah kita buat. Hal selanjutnya yang kita lakukan adalah mengkompilasi semua file tersebut dan mengimplementasikannya pada FPGA board
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
5
yang telah disediakan, lalu mengghubungkan VGA keluaran FPGA dengan layar LCD / monitor. Berikut ini adalah contoh tampilan board FPGA (Gambar 4-4) dan hasil tampilan di layar monitor (Gambar 4-5):
H_BT <= SW(5) ;
Dari uraian diatas, maka kita dapat menyimpulkan bahwa simulasi lampu lalu lintas dengan script yang telah kita buat mungkin untuk diimplementasikan, yang akan dibahas pada bagian selanjutnya.
4.3
MENGGABUNGKAN DESAIN FSM DENGAN VGA DRIVER
Percobaan ini menggabungkan desain lampu lalulintas yang telah kita buat dengan modul VGA driver yang disediakan pada percobaan 4.2 diatas. Pada file project sebelumnya, kita cukup menambahkan file clockdiv.vhd dan lampu.vhd yang telah kita buat kedalam project tersebut. Pada potongan script, terdapat komentar berikut ini:
Gambar 4-4 SW[5] dan SW[0] Dinyalakan
--Rambu : Lampu port map (CLOCK_50,SW(0),SW(1),SW(2),M_US,K_US,H_US,M_B T,K_BT,H_BT);
Hal yang perlu kita lakukan adalah menambahkan entity dari lampu.vhd kita kedalam component pada file top_level_vhd tersebut. Potongan komentar diatas menunjukkan bahwa kita cukup menghubungkan CLOCK_50 dengan masukkan Clock (dalam hal ini CLOCKIN), dan melakukan sedikit modifikasi SW(0) dan SW(1) menjadi variabel DAYNIGHT, serta SW(2) menjadi ISDARURAT pada rancangan desain lampu yang telah dibuat diatas. Gambar 4-5 Hasil Tampilan pada Layar LCD
Pada gambar diatas, terlihat bahwa masingmasing komponen FPGA merepresentasikan suatu kondisi lampu lalu lintas, dengan: -SW[0] merepresentasikan Merah_US
M_US, K_US, H_US, M_BT, K_BT, serta H_BT merepresentasikan LED (5 downto 0) yang telah dibuat diatas. Jika semua hal diatas telah dilakukan, kita cukup melakukan kompilasi dan meng-load project diatas kedalam FPGA board yang disediakan. ENTITY top_level_vhd
-SW[1] merepresentasikan Kuning_US
IS
PORT(
-SW[2] merepresentasikan Hijau_US
CLOCK_50
-SW[3] merepresentasikan Merah_BT
SW DOWNTO 0 );
-SW[4] merepresentasikan Kuning_BT -SW[5] merepresentasikan Hijau_BT Gambar diatas menunjukkan kondisi saat SW[0] dan SW[5] diberikan logika 1 secara bersamaan. Hal ini dapat dilihat dari script top_level_vhd.vhd berikut:
: IN STD_LOGIC; : IN STD_LOGIC_VECTOR( 9
VGA_R DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 5
VGA_G DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 5
VGA_B DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 5
VGA_HS
: OUT STD_LOGIC;
M_US <= SW(0) ;
VGA_VS
: OUT STD_LOGIC;
K_US <= SW(1) ;
VGA_CLK
: OUT STD_LOGIC;
H_US <= SW(2) ;
VGA_BLANK
: OUT STD_LOGIC;
M_BT <= SW(3) ; K_BT <= SW(4) ;
GPIO_0 DOWNTO 0 );
: OUT STD_LOGIC_VECTOR( 35
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
6
LEDR DOWNTO 0 ));
: OUT STD_LOGIC_VECTOR( 9
END top_level_vhd; -Rambu : TRAFFICLIGHT_VHD_2 port map (SW(1),SW(0),CLOCK_50, LED_US (5 downto 0));
Potongan kode top_level_vhd diatas adalah kode akhir yang digunakan dalam menggabungkan percobaan 4A dengan 4B. Berikut ini adalah salah satu FSM state yang ditampilkan oleh layar LCD (Gambar 4-6):
5.
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 suatu metode 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, maupun merepresentasikan hasil keluaran ke layar LCD menggunakan modul VGA driver.
DAFTAR PUSTAKA
Gambar 4-6 Implementasi FSM pada Layar LCD
Jika pada percobaan sebelumnya (4B), kita perlu memberikan masukkan secara manual untuk setiap lampu (dengan menyalakan SW[0] dan SW[5]), pada percobaan ini sinyal diberikan secara automatic oleh desain rangkaian FSM dari studi kasus yang telah kita buat (menyala bergantigantian sesuai state yang telah didefinisikan), dengan kita mengatur mode siang (SW[1] = 1), mode malam (SW[1] = 0), dan mode darurat (SW[0] = 0) saja. Gambar 4-6 diatas adalah salah satu representasi FSM state S3 dengan SW[1] = 0 dan SW[0] = 0. Kita ambil contoh kasus masukkan, yaitu saat SW[1] = 0, SW[2] = 0, dan CLOCK_50 diset CLOCKIN (mode malam – tidak darurat). 4 detik pertama tampilan layar menunjukkan Hijau_US dan Merah_BT (S1)
[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_logi c , 13 November 2012, pukul 20:40:15
[5]
http://en.wikipedia.org/wiki/Counter , 13 November 2012, pukul 20:48:44
[6]
http://en.wikipedia.org/wiki/Finite_state_m achine , 13 November 2012, pukul 20:54:21
[7]
http://vhdlguru.blogspot.com/2010/03/digit al-clock-in-vhdl.html , 13 November 2012, pukul 23:58:01
[8]
http://labdasar.ee.itb.ac.id/lab/EL2195/pen dukung%20praktikum/de1_usermanual_v101 7.pdf, 14 November 2012, pukul 00:01:10
1 detik selanjutnya tampilan layar menunjukkan Kuning_US dan Merah_BT (S2) 4 detik selanjutnya tampilan layar menunjukkan Merah_US dan Hijau_BT (S3) 1 detik selanjutnya tampilan layar menunjukkan Merah_US dan Kuning_BT (S4) Lalu tampilan pertama kembali ditampilkan (kembali ke state S1)
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
7