PROYEK PERANCANGAN RANGKAIAN DIGITAL : THUNDERBURD TAIL LIGHTS Mochammad Fadhli Zakiy, Rizki Satya Utami Laboratorium Dasar Teknik Elektro Sekolah Teknik Elektro dan Informatika – ITB
2.
Dasar Teori
Dalam melakukan praktikum ini praktikan memilih membuat proyek THUNDERBURD TAIL LIGHTS. Prinsip kerja proyek ini yaitu sama seperti lampu – lampu yang berada di belakang mobil. Pada proyek ini ada 5 buah keadaan yaitu kondisi : 1.
NIGHT, ini digunakan pada keadaan malam hari yaitu menyalanya 2 lampu (LED) pada sisi kiri dan kanan.
2.
BRAKE, ini kondisi pada saat melakukan pengereman yaitu semua lampu (LED) menyala
3.
RIGHT, ini kondisi pada saat berbelok ke kanan yaitu menyalakan lampu sen kanan dengan implementasi 4 lampu (LED) terkanan menyala secara bergantian dari dalam menuju ke luar
4.
LEFT, kondisi ini sama seperti RIGHT hanya saja berada pada 4 LED terkiri untuk menyala secara bergantian dari dalam menuju keluar.
5.
EMERGENCY, kondisi ini digunakan sebagai tanda bahaya yaitu lampu hazard implementasinya yaitu semua lampu (LED) menyala secara bersamaan dan padam secara bersamaan pula dan melakukan pengulangan selama tombol EMERGENCY masih ditekan.
6.
PENGEREMAN di TIKUNGAN, atau BRAKE-RIGHT dan BRAKE-LEFT, kondisi ini adalah saat melakuakan pengeraman di tikungan sehingga pola yang terjadi adanya pola LEFT atau RIGHT dan BRAKE secara bersamaan, dengan pola 4 lampu selain yang menjadi sen akan tetap menyala sedangkan yang menjadi sen melakukan fungsinya sebagai sen dengan pola BREAK(menyala semua LED) pada akhir pola dan kembali menjadi sen selama RIGHT atau LEFT dan BRAKE masih ditekan
Kata kunci: FPGA, VHDL, proyek, merancang 1.
Pendahuluan
Praktikum kali ini di latar belakangi oleh butuhnya praktikan untuk menguji kemampuannya apakah telah memahami rangkaian praktikum dan percobaan yang telah dilakukan sebelumnya dengan uji coba sebuah proyek yang dibebaskan realisasinya sebagai evaluasi pemahaman. Adapun tujuan praktikum meliputi: 1. Menspesifikasi suatu system digital sederhana 2. Membagi system menjadi satu atau lebih jalur data dan kendali 3. Mendesain jalur data untuk sistem 4. Mendesain kendali untuk system 5. Mengintegrasikan jalur data dan kendali kedalam system secara keseluruhan 6. Melakukan tes secara menyeluruh pada system 7.Mengimplementasikan system digital menggunakan FPGA dan komponen tambahan yang diperlukan 8.Menguji dan menganalisa system yang sudah dibangun
1
Praktikum kali ini menitik beratkan pada praktikan untuk mengerti secara keseluruhan dari rangkaian praktikum dan percobaan yang telah dilakukan sebelumnya, karena pada praktikum kali ini praktikan ditugaskan untuk membuat proyek rangkaian digital sendiri. Praktikum ini diawali dengan membuat rancangan alat sendiri yang telah ditentukan pilihannya, sedangkan untuk merealisasikannya dibebaskan, setelah itu merealisasikannya dan melakukan pengujian dalam memverifikasi fungsinya dengan simulator tool. Terakhir mengimplementasikannya pada FPGA untuk didemokan dan mempresentasikan hasil proyek tersebut kepada Asisten. Dalam menyelesaikan proyek ini digunakan pendekatan menggunakan VHDL dan teori-teori yang telah didapat sebelumnya.
Halaman
Abstrak
Dalam pengimplementasian digunakan teori teori yang digunakan pada praktikum sebelumnya yaitu: Synchronous clock, div by N, clockdiv, flip flop, counter dan one hot controller. Selain itu digunakan pengetahuan mengenai FPGA dalam melakukan implementasi.
kemungkinan yang terjadi di setiap LED sebagai berikut:
A: menyala pada kondisi BRAKE, NIGHT, LEFT, EMERGENCY B: menyala pada kondisi BRAKE, NIGHT, LEFT, EMERGENCY I: menyala pada kondisi BRAKE, LEFT, EMERGENCY D: menyala pada kondisi BRAKE, LEFT, EMERGENCY E: menyala EMERGENCY
pada
kondisi
BRAKE,
RIGHT,
F: menyala EMERGENCY
pada
kondisi
BRAKE,
RIGHT,
G: menyala pada kondisi BRAKE, NIGHT, RIGHT, EMERGENCY H: menyala pada kondisi BRAKE, NIGHT, RIGHT, EMERGENCY
Div By N digunakan untuk menjadi counter dalam penghitungan CLOCK pada implementasi FPGA, yaitu agar menyesuaikan CLOCK yang terdapat pada FPGA.
Kemudian membuat state state tersebut dan diimplementasikan dalam fungsi dengan kode yang digunakan sebagai berikut:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DCD IS PORT (AK,BRK, CLK: IN STD_LOGIC; A1,A2,A3,A4: BUFFER STD_LOGIC); END DCD;
D flip flop digunakan sebagai shift register dan sebagai penyimpan memory dalam menyala matikan LED yang dipengaruhi dengan signal CLOCK yang masuk ke dalam D flip flop.
ARCHITECTURE BEHAVIOURAL OF DCD IS BEGIN PROCESS(CLK,BRK,AK) variable CNT: integer:=0; BEGIN IF CLK'EVENT AND CLK='1' THEN IF AK='1' THEN IF CNT = 0 THEN
Synchronizer ini digunkan prinsipnya pada signal EMERGENCY yaitu membuat LED memiliki pola nyala dan padam yang disesuaikan dengan CLOCK yang diberikan.
A1<='0'; A2<='0'; A3<='0'; A4<='0'; CNT:=CNT+1;
Mendesain dan Mengkode dengan VHDL Dalam melakukan desain praktikan menamakan 8 LED yang akan dinyalakan dengan nama A,B,I,D,E,F,G,H dengan LED A sebagai LED terkiri dan LED H sebagai LED terkanan dengan urutan seperti yang telah ditentukan. Kemudian membagi
ELSIF CNT = 1 THEN A1<='0'; A2<='0'; A3<='0'; A4<='1'; CNT:=CNT+1;
2
3.1
Metodologi
Halaman
3.
ELSIF CNT = 2 THEN
USE IEEE.STD_LOGIC_1164.ALL;
A1<='0';
ENTITY CLOCKDIV IS
A2<='0';
PORT
A3<='1';
(CLK: IN STD_LOGIC;
A4<='0';
DIVOUT : BUFFER STD_LOGIC);
CNT:=CNT+1;
END CLOCKDIV;
ELSIF CNT = 3 THEN A1<='0'; A2<='1';
architecture behavioural of CLOCKDIV is begin
A3<='0'; A4<='0'; CNT:=CNT+1; ELSIF CNT = 4 THEN
PROCESS(CLK) variable
integer :=0; integer :=27000000;
A1<='1';
constant
div:
begin
A2<='0'; A3<='0';
count:
if CLK'event and CLK='1' then
A4<='0'; CNT:=CNT+1; ELSIF BRK='1' AND CNT = 5 THEN A1<='1';
if(count
A2<='1'; A3<='1'; A4<='1';
if(DIVOUT='0') then
CNT:=0; DIVOUT<='0';
ELSE CNT:=0; END IF;
elsif(DIVOUT='1') then
ELSE
DIVOUT<='1'; IF BRK ='1' THEN A1<='1';
end if; else
A2<='1'; A3<='1'; A4<='1';
if(DIVOUT='0') then
ELSE
DIVOUT<='1'; A1<='0'; A2<='0';
elsif(DIVOUT='1') then
A3<='0';
DIVOUT<='0';
A4<='0';
END IF;
count:=0; end if;
END PROCESS;
end if;
END BEHAVIOURAL; ---------------------------------------------------------LIBRARY IEEE;
end process; end behavioural;
3
END IF;
end if;
Halaman
END IF;
--------------------------------------------------------------------LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
2.
Amati secara seksama
3.
Catat pada BCL dan perhatikan keabsahannya
3.3
Mengimplementaskan pada FPGA
ENTITY THN IS
1.
Jika dirasa benar sudah fungsi dari proyek yang telah dibuat, maka implementasikan pada FPGA
2.
Assign pin dengan PIN PLANNER
SIGNAL C: STD_LOGIC_VECTOR (9 DOWNTO 0);
3.
Download pada FPGA
END THN;
4.
Amati dan catat pada BCL.
PORT (BRAKE, KIRI, KANAN, EMERGENCY, NIGHT, CLOCK: IN STD_LOGIC; A,B,I,D,E,F,G,H :OUT STD_LOGIC);
ARCHITECTURE STRUCTURAL OF THN IS
4.
Hasil dan Analisis
COMPONENT DCD
4.1
Spesifikasi alat
PORT (AK,BRK, CLK: IN STD_LOGIC;
1.
FPGA : Board FPGA DE1
A1,A2,A3,A4: OUT STD_LOGIC); END COMPONENT;
Dalam melakukan praktikum kali ini seperti yang sudah diberitahukan sebelumnya bahwa praktikan membuat proyek THUNDERBURD TAIL LIGHTS, adapun dibuat dengan tabel kebenaran:
COMPONENT CLOCKDIV PORT (CLK : IN STD_LOGIC; DIVOUT : OUT STD_LOGIC);
NIGHT
EMERGENCY
BRAKE
LEFT
RIGHT
0
0
0
0
1
Sen Kanan
0
0
0
1
0
Sen Kiri
0
0
0
1
1
Z
0
0
1
0
0
0
0
1
0
1
Pengereman Rem belok kanan
A3=>C(2), A4=>C(3));
0
0
1
1
0
Rem belok kiri
KA: DCD PORT MAP (AK=>KANAN, BRK=>BRAKE, CLK=>C(8), A1=>C(7), A2=>C(6),
0
1
0
x
x
hazard
0
1
1
x
x
Pengereman
A3=>C(5), A4=>C(4));
1
0
0
0
0
malam
1
x
x
x
x
Z
END COMPONENT;
BEGIN KI: DCD PORT MAP (AK=>KIRI, CLK=>C(8), A1=>C(0), A2=>C(1),
CL: CLOCKDIV DIVOUT=>C(8));
PORT
MAP
BRK=>BRAKE,
(CLK=>CLOCK,
LAMPU
C(9) <= EMERGENCY AND C(8); A <= NIGHT OR C(9) OR C(0); B <= NIGHT OR C(9) OR C(1); I <= C(9) OR C(2); D <= C(9) OR C(3); E <= C(9) OR C(4); F <= C(9) OR C(5); G <= NIGHT OR C(9) OR C(6); H <= NIGHT OR C(9) OR C(7); END;
1.
Lakukan simulasi fungsional untuk melihat kekurangan dan kelebihan dari desain yang dibuat pada QUARTUS 9.0
4
Mensimulasikan rancangan
Halaman
3.2
Dengan melihat tabel kebenaran dengan X pada tabel merupakan don’t care dan Z adalah kondisi yang tidak ditentukan dan tidak termasuk dalam perencanaan, dengan bantuan ini praktikan membuat THUNDERBURD TAIL LIGHTS, sehingga didapatkan data data sebagai berikut yang merupakan hasil simulasi dengan simulator tool fungsional dengan clock 50 us dan clockdiv yang digunakan countnya sejumlah 3 sehingga count yang berasal dari CLOCK harus berosilasi 3 kali baru terhitung sebuah pergerakan, mengapa menggunakan 3 agar bisa dilihat perubahannya walaupun di kode digunakan 27000000, hal ini agar pada implementasi di FPGA berjalan baik, sedangkan jika digunakan 27000000 maka sulit untuk dilihat perubahannya karena clock harus berosilasi 27000000 kali terlebih dahulu untuk menghasilkan sebuah pergerakan.
praktikan menyatakan kondisi nyalanya LED yang dikarenakan oleh BRAKE yang aktif pada bagian PROCESS di component DCD sehingga untuk merubah lampu rem dari padam hingga menyala dibutuhkan perubahan CLOCK (pada kasus ini 3 kali clock berosilasi).
Pada kondisi ini terjadi pengereman dan berbelok ke kanan sehingga terjadi kondisi berikut. Untuk menampilkan hasil simulasi seperti ini praktikan mengganti nilai CLOCKDIV seharga satu sehingga berubah sesuai dengan CLOCK berubah, hal ini dikarenakan saat menggunakan CLOCK DIV sejumlah 3 tidak dapat teramati semua.
Kondisi ini sudah benar kondisi sen kanan yaitu tepat saat RIGHT bernilai 1. Pergerakan atau flip flop baru aktif jika clock sudah berosilasi sebanyak 3 kali, sesuai dengan hipotesa awal
Seperti yang sebelumnya maka ini adalah pengereman yang berbelok kekiri, sehingga berbarengan dengan sen kiri.
Kondisi ini pun sudah benar yaitu kondisi pada saat sen kiri yaitu saat LEFT bernilai 1. Dengan perubahan saat clock sudah 3 kali berosilasi
Halaman
Kondisi Ini merupakan kondisi pengereman dengan perubahan terjadi jika clock telah berosilasi sebanyak 3 kali. Mengapa terjadi hal seperti ini bukannya berubah sesaat setelah dipijit tombolnya. Hal ini dikarenakan
5
Yang terjadi kini adalah kondisi hazard yaitu saat EMERGENCY bernilai 1 sehingga tercipta pola sebagai berikut. Yang terlihat adalah saat aktifnya bernilai 2 clock juga pada saat padamnya hal ini dikarenakan CLOCKDIV bernilai satu sehingga harus menunggu untuk menghitung dari 0 hingga 1yaitu 2 clock baru berubah logikanya.
5.
Kesimpulan dari praktikum ini yaitu hal hal yang dilakukan telah menjawab tujuan dan kebutuhan praktikan dalam memahami mengenai rangkaian digital tingkat mudah, selain itu praktikan pun merasa bahwa praktikum kali ini telah tepat sasaran dan menggunakan metode yang baik untuk membuat praktikan mengerti akan seluruh rangkain praktikum dan percobaan yang pernah dilakukan pada praktikum semester ini pada EL-2195. Semoga nilai nilai dan pengetahuan yang praktikan dapatkan pada rangkaian praktikum ini dapat digunakan dan diimplementasikan dengan baik di dunia nyata kedepannya.
Terakhir Kondisi ini yaitu kondisi menyalakan lampu MALAM, hal ini telah benar karena terjadi saat NIGHT bernilai 1 dan yang lain bernilai 0. Sebenarnya masih banyak kondisi lain yang tidak dimasukkan dan disimulasikan oleh praktikan tetapi jika melihat dari fungsi maka kesimpulannya NIGHT akan selalu terjadi saat apapun nilai kondisi masukan lainnya karena prinsip kerja dari THUNDERBURD TAIL LIGHTS yang dibuat yaitu melakukan operasi OR pada LAMPU yang berfungsi (menyala) sebagai penunjuk malam, kemudian jika terjadi EMERGENCY dan BRAKE maka yang terlihat adalah BREAK karena semua fungsi LED menyala dengan melakukan operasi OR pada EMERGENCY dan BRAKE, sedangkan signal emergency yang terjadi dimasukkan ke synchronizer terlebih dahulu supaya terjadi signal yang berosilasi sesuai dengan CLOCKDIV padahal signal masukkannya bernilai 1 terus hal ini dilakukan agar terlihat pola nyala dan padam pada kondisi hazard tetapi jika dibandingkan dengan signal BRAKE yang selalu bernilai 1 maka signal EMERGENCY tidak akan berpengaruh. Kondisi berikutnya yaitu kondisi pada pengereman di tikungan yang memang dilakukan pengaturan pada unit kendalinya yang diber nama DCD sehingga mengatur BRAKE-RIGHT dan BRAKE-LEFT, tetapi pada implementasi terdapat kekurangan pada THUNDERBURD buatan praktikan yaitu dapat melakukan sen kanan dan kiri secara bersamaan, hal ini di kenyataan tidak terjadi tetapi jika benar ingin diimplementasikan di dunia nyata maka praktikan akan menjadikan signal masukan input RIGHT dan LEFT secara berlawanan sehingga tidak mungkin terjaid hal seperti ini. Terakhir yaitu kondisi sen kiri atau dan kanan dengan EMERGENCY, maka pola yang terlihat adalah pola EMERGENCY yang bercampur tidak jelas dengan SEN KIRI atau dan KANAN, sehingga tidak dimasukka kondisi ini oleh praktikan karena dirasa tidak penting dan memang hal ini luput dari perencanaan praktikan dalam membuat THUNDERBURD TAIL LIGHTS.
Daftar Pustaka
[1]
Praktikum Sistem Digital, Hal. 67-72,Sekolah Teknik Elektro dan Informatika, Bandung, 2010
[2]
Brown, Stepehen & Vranesic, Zvonko .2005. fundamentals of Digital Logic with VHDL design second edition, Mc GRAW – HILL, 2005
[3]
Sumber gambar: print screen hasil simulasi menggunakan QUARTUS 9.0
6
6.
Halaman
Pada kondisi ini terlihat kondisi PENGEREMAN padahal pada saat ini pula EMERGENCY bernilai 1 hal ini dikarenakan praktikan mengeset BRAKE lebih prioritas dari EMERGENCY sehingga yang terlihat adalah BRAKE.
Kesimpulan