Anda di halaman 1dari 6

MODUL 4 RANGKAIAN LOGIKA SEKUENSIAL

Yogi Salomo Mangontang Pratama (13511059) Asisten: Giffary Kautsar / 13209028 Tanggal Percobaan: 12/11/2012 EL2195-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro Sekolah Teknik Elektro dan Informatika

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.

1. Mendesain sekuensial implementasi pada FPGA.

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.

2. STUDI PUSTAKA 2.1 RANGKAIAN LOGIKA SEKUENSIAL


Rangkaian logika sekuensial adalah rangkaian yang bergantung pada state serta masukan yang diberikan oleh pengguna. State itu sendiri adalah suatu keadaan yang mungkin akan dialami oleh suatu rangkaian, beserta transisi yang mungkin terjadi antara satu state dengan state berikutnya. Untuk mempermudah perancangan state dalam rangkaian sekuensial ini, sebelum memulai perancangan sebaiknya dilakukan pembuatan suatu flow chart transisi state yang biasa disebut dengan istilah state diagram.

Kata kunci : sekuensial, state, FSM, State Diagram. 1. PENDAHULUAN


Dalam perancangan rangkaian digital, ada beberapa pendekatan yang dapat dilakukan. Pada percobaan kali ini akan dilakukan perancangan rangkaian logika secara sekuensial. Yang membedakan rangkaian logika ini dengan rangkaian logika yang sebelumnya adalah keberadaan memori state. Pada rangkaian sekuensial, kita harus menentukan berbagai keadaan yang akan terjadi serta membuatnya ke dalam suatu Flow Chart yang biasa disebut dengan State Diagram. Pada percobaan ini selain mencoba membuat rangkaiannya, akan dilakukan juga simulasi penerapan rangkaian sekuensial tersebut, baik ke dalam sebuah FPGA maupun pada VGA driver. Adapun tujuan dari praktikum ini antara lain :

2.2 STATE DIAGRAM


Yang pertama kali dilakukan dalam pembuatan state diagram adalah berapa state (kondisi) yang diperlukan dalam rangkaian tersebut. State logika adalah satu set nilai logika yang unik yang memperlihatkan status logika mesin pada suatu waktu tertentu. Cara paling baik untuk memulai menentukan state pada rangkaian adalah dengan membuat starting state, yaitu suatu state yang harus dimasuki mesin ketika baru dinyalakan ataupun ketika mesin di-reset.

Berikut adalah contoh dari state diagram :


GAMBAR 2.2.1 STATE DIAGRAM SEDERHANA. Sumber : Brown, Varesnic. Fundamental of Digital Logic with VHDL ed. 3

Board FPGA tipe UP2, DE1, DE2, atau DE2-70 Catu Daya+ Kabel dan konektor tambahan Kabel downloader ByteBlaster II dan USB-Blaster.

3.1 PERCOBAAN 4A : IMPLEMENTASI DESAIN FSM PADA FPGA


Buatlah folder sebagai direktori kerja baru untuk praktikum kali ini kemudian copy script desain FSM yang telah dibuat sebagai tugas pendahuluan sebelumnya ke dalam folder tersebut

2.3 FINITE STATE MACHINE


Finite State Machine atau yang biasa disebut FSM adalah salah satu model yang sering diterapkan untuk membantu membuat rangkaian sekuensial. Disebut demikian karena jumlah state yang mungkin terjadi terbatas dan rangkaian sekuensial bekerja mirip dengan mesin yang beroperasi dengan urutan state. Ada berbagai jenis dan level abstraksi dalam perancangan rangkaian sekuensial. Dan salah satunya adalah FSM Mealy yang dapat dilihat pada gambar berikut :
GAMBAR 2.3.1 FSM MEALY. Sumber : Fundamental of Digital Logic with Brown, VHDL Varesnic. ed. 3

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.2 PERCOBAAN 4B : IMPLEMENTASI MODUL VGA DRIVER

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

downto 0)); end traffic;

lampu: out STD_LOGIC_VECTOR(5

architecture traffic of traffic is

component clockdiv is

Implementasikan desain di atas pada FPGA dengan pin planner yang sudah di download dan disesuaikan dengan board yang ada

port( CLK: IN std_logic; DIVOUT: buffer bit); end component;

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";

3.3 PERCOBAAN 4C: MENGGABUNGKAN DESAIN FSM DENGAN VGA DRIVER


Hubungkan keluaran FSM dengan masukan modul VGA. Lakukan compile dan download gabungan desain FSM dan modul VGA tersebut ke dalam board FPGA. Amati hasil yang didapatkan!

constant SEC2: STD_LOGIC_VECTOR(3 downto 0) := "0001"; constant SEC1: STD_LOGIC_VECTOR(3 downto 0) := "0000";

begin DUT : clockdiv PORT MAP ( CLK => clk1,

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;

DIVOUT => clk);

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;

state <= s0;

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

constant div: integer:=25000000;

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 s2 => lampu <= "001100";


else

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;

end if; count:=0; end if;

3.4.2 SCRIPT UNTUK DIVCLOCK


LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; end if; entity CLOCKDIV is port( CLK: IN std_logic; DIVOUT: buffer BIT); end CLOCKDIV; end behavioural; end process;

4. HASIL DAN ANALISIS


Pada praktikum kali ini kami tidak berhasil melakukan percobaan dengan tuntas. Dikarenakan ada kesalahan pada skrip VHDL yang kami buat sehingga tidak berhasil dibuat. Skrip yang kami buat berhasil dikompilasi akan

architecture behavioural of CLOCKDIV is begin PROCESS(CLK) variable count: integer:=0;

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