Yogi Salomo Mangontang Pratama (13511059) Asisten: Giffary Kautsar / 13209028 Tanggal Percobaan: 12/11/2012 EL2195-Praktikum Sistem Digital
Abstrak
Setelah pada percobaan sebelumnya kita telah membuat rangkaian logika kombinasional, pada percobaan ini kita akan membuat rangkaian logika sekuensial. Yang membedakan kedua rangkaian ini adalah keberadaan memori statenya. Pada rangkaian sekuensial, keluaran yang dihasilkan bergantung pada statenya. Baik beserta dengan masukannya maupun hanya state saja. Salah satu contoh model yang menerapkan rangkaian sekuensial adalah FSM(Finite State Machine). FSM itu sendiri terdiri dari berbagai level abstraksi dan salah satu yang akan kita terapkan dalam percobaan kali ini adalah behavioral.Langkah awal yang harus kita pahami dalam pembuatan rangkaian sekuensial adalah pembuatan state diagram untuk rangkaian tersebut.
rangkaian
untuk
2. Mengenal dan memahami cara menggunakan hierarki dalam desain rangkaian. 3. Mengenal dan memahami cara menggunakan FPGA sebagai prototype system untuk memverifikasi fungsi rangkaian.
Board FPGA tipe UP2, DE1, DE2, atau DE2-70 Catu Daya+ Kabel dan konektor tambahan Kabel downloader ByteBlaster II dan USB-Blaster.
Jalankan program ALTERA QUARTUS, kemudian bukalah file yang merupakan skrip desain FSM yang telah dibuat sebagai tugas pendahuluan sebelumnya
Implementasikan desain FSM tersebut dengan keluaran pada LED FPGA ( lihat kembali implementasi desain pada FPGA dalam praktikum-praktikum sebelumnya)
3. METODOLOGI
Alat-alat yang digunakan dalam percobaan ini antara lain : 1. Komputer yang telah ter-install program Quartus II 2. FPGA development board, tipe DE1 beserta perlengkapannya yang meliputi :
darurat : in STD_LOGIC;
Buatlah folder sebagai direktori kerja baru untuk percobaan ini, kemudian buatlah project baru dengan modul-modul yang disediakan untuk praktikum empat sesuai dengan board yang ada
component clockdiv is
Implementasikan desain di atas pada FPGA dengan pin planner yang sudah di download dan disesuaikan dengan board yang ada
Lakukan beberapa kali perubahan posisi switch pada board FPGA untuk melihat efek dan perubahannya pada layar LCD! Pelajari input dan keluaran dari desain di atas untuk selanjutnya digabungkan dengan modul FSM yang telah dibuat
type state_type is (s0, s1, s2, s3, s4); signal state: state_type; signal count: STD_LOGIC_VECTOR(3 downto 0); constant SEC8: STD_LOGIC_VECTOR(3 downto 0) := "0111"; constant SEC4: STD_LOGIC_VECTOR(3 downto 0) := "0011";
constant SEC2: STD_LOGIC_VECTOR(3 downto 0) := "0001"; constant SEC1: STD_LOGIC_VECTOR(3 downto 0) := "0000";
3.4 SCRIPT VHDL UNTUK PERCOBAAN 3.4.1 SCRIPT LAMPU LALU LINTAS
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_unsigned.all;
process(clk, clr, darurat, siangmalam) begin if clr = '0' and darurat = '1' then
entity traffic is port (clk1: in STD_LOGIC; clk: buffer bit; clr: in STD_LOGIC; siangmalam: in STD_LOGIC; '0' then
state <= s4; count <= SEC4; elsif clk'event and clk = '1' then if clr = '0' and siangmalam = '0' and darurat =
case state is when s0 => if count < SEC8 then state <= s0; count <= count + 1; else state <= s1; count <= X"0"; end if; when s1 => if count < SEC2 then state <= s1; count <= count + 1; else state <= s2; count <= X"0"; end if; when s2 => if count < SEC8 then state <= s2; count <= count + 1; else state <= s3; count <= X"0"; end if; when s3 => if count < SEC2 then state <= s3; count <= count + 1 else state <= s0; count <= X"0"; end if; when others => end case;
elsif clr = '0' and siangmalam = '1' and darurat = '0' then case state is when s0 => if count < SEC4 then state <= s0; count <= count + 1; else state <= s1; count <= X"0"; end if; when s1 => if count < SEC1 then state <= s1; count <= count + 1; else state <= s2; count <= X"0"; end if; when s2 => if count < SEC4 then state <= s2; count <= count + 1; else state <= s3; count <= X"0"; end if; when s3 => if count < SEC1 then state <= s3 count <= count + 1; else state <= s0;
count <= X"0"; end if; when others => state <= s0; end case; end if; end if; end process;
if(DIVOUT='0') then if(count<div) then CLK='1' then begin
if CLK'event and
count:=count+1;
C2: process(state)
DIVOUT<='0';
begin case state is when s0 => lampu <= "100001"; when s1 => lampu <= "100010";
end if; elsif(DIVOUT='1') then
DIVOUT<='1';
when s3 => lampu <= "010100"; when s4 => lampu <= "010010"; when others => lampu <= "100001"; end case;
elsif(DIVOUT='1') then if(DIVOUT='0') then
DIVOUT<='1';
end process;
DIVOUT<='0';
end traffic;
tetapi hasil yang dikeluarkan tidak sesuai dengan yang diharapkan pada percobaan ini. Hal ini mungkin disebabkan karena deklarasi state yang kurang tepat, karena hasil yang keluar adalah setelah s1, output tidak ada atau bergambar XXXXXXXXXX pada waveform. Setelah praktikum usai saya mencoba membuat kembali dengan skrip yang telah disertakan pada metodologi, dan saya akhirnya mendapatkan hasil yang sesuai dengan hasil yang diharapkan pada praktikum ini. Dapat dilihat bahwa pada s0, lampu merah utara selatan menyala dan lampu hijau di barat timur menyala. Pada s1, lampu merah utara selatan masih menyala, dan lampu kuning barat timur yang menyala. Pada s2, lampu hijau pada utara selatan menyala dan lampu merah pada timur barat menyala. Pada s3, lampu kuning utara selatan menyala dan lampu merah pada barat timur menyala. s4 adalah keadaan darurat dimana lampu kuning dari semua arah berkedip. Percobaan implementasi pada FPGA tidak sempat saya lakukan, oleh karena pada saat di laboratorium saya belum berhasil membuat rancangan sehingga saya tidak dapat melakukan simulasi. Akan tetapi apabila sesuai dengan yang diharpkan pada percobaan ini, seharusnya seteleah diaplikasikan pada FPGA maka lampu LED pada FPGA akan menyala sesuai dengan waktu yang telah ditentukan pada soal lampu lalu lintas. Akan tetapi hitungan waktu pada waveform berbeda dengan waktu pada FPGA sehingga perlu diatur kembali nilai dari waktu input maupun outputnya. Apabila frekuensinya 50Hz, digunakan +- 50 juta ns, sementara bila frekuensi 27Hz, digunakan +- 13.5 juta ns. Demikian pula dengan percobaan ketiga, menggabungkan desain rangkaian dengan VGA Driver. Kami belum berhasil mengimplementasikannya dikarenakan kesalahan pada rangkaian. Akan tetapi apabila rangkaiannya sudah benar, bila kita
menyambungkan FPGA dengan layar computer, maka akan keluar simulasi dari lampu lalu lintas yang kurang lebih tampilannya sebagai berikut.
GAMBAR 4.1 Perkiraan tampilan pada layar setelah FPGA disambungkan dengan VGA Driver. Sumber : dokumentasi pribadi penulis.
Tampilan yang demikian dihasilkan dari modul VGA yang telah diberikan sebelumnya oleh asisten praktikum, dan apabila rangkaian yang kita buat sudah benar, maka akan tampil di layar seperti yang tertera pada gambar dan transisi warnanya akan berubah sesuaid dengan input yang diberikan dari FPGA. Akan tetapi sekali lagi, saya belum berhasil melakukan percobaan ini.
5. KESIMPULAN
Dalam pembuatan rangkaian sekuensial, penentuan state logika yang akan dipakai memegang peranan yang sangat penting dalam keberhasilan rancangan rangkaian. State yang dibuat harus sesuai dengan keadaan yang diinginkan pada rangkaian dan dibuat seminimal mungkin. Dan apabila telah dirancang rangkaian logika sekuensial diaplikasikan baik pada FPGA ditampilkan dalam sebuah bantuan VGA Driver. dengan benar, tersebut dapat board maupun layar dengan
6. DAFTAR PUSTAKA Brown, Steven dan Varesnic, Zvonko. 2005. Fundamental Of Digital Logic with VHDL Design.
Hutabarat, Mervin, dkk, Modul Praktikum Sistem Digital, Institut Teknologi Bandung, Bandung, 2010