man
1
PROYEK PERANCANGAN RANGKAIAN DIGITAL :
THUNDERBURD TAIL LIGHTS
Mochammad Fadhli Zakiy, Rizki Satya Utami
Laboratorium Dasar Teknik ElektroSekolah Teknik Elektro dan Informatika – ITB
Abstrak
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.
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
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
man
2
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.
Div By N digunakan untuk menjadi counter dalam
penghitungan CLOCK pada implementasi FPGA,
yaitu agar menyesuaikan CLOCK yang terdapat
pada FPGA.
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.
Synchronizer ini digunkan prinsipnya pada signal
EMERGENCY yaitu membuat LED memiliki pola
nyala dan padam yang disesuaikan dengan CLOCK
yang diberikan.
3. Metodologi
3.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
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 pada kondisi BRAKE, RIGHT, EMERGENCY
F: menyala pada kondisi BRAKE, RIGHT, EMERGENCY
G: menyala pada kondisi BRAKE, NIGHT, RIGHT, EMERGENCY
H: menyala pada kondisi BRAKE, NIGHT, RIGHT, EMERGENCY
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; 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 A1<='0'; A2<='0'; A3<='0'; A4<='0'; CNT:=CNT+1; ELSIF CNT = 1 THEN A1<='0'; A2<='0'; A3<='0'; A4<='1'; CNT:=CNT+1;
man
3
ELSIF CNT = 2 THEN A1<='0'; A2<='0'; A3<='1'; A4<='0'; CNT:=CNT+1; ELSIF CNT = 3 THEN A1<='0'; A2<='1'; A3<='0'; A4<='0'; CNT:=CNT+1; ELSIF CNT = 4 THEN A1<='1'; A2<='0'; A3<='0'; A4<='0'; CNT:=CNT+1;ELSIF BRK='1' AND CNT = 5 THEN A1<='1'; A2<='1'; A3<='1'; A4<='1'; CNT:=0; ELSE CNT:=0; END IF; ELSE IF BRK ='1' THEN A1<='1'; A2<='1'; A3<='1'; A4<='1'; ELSE A1<='0'; A2<='0'; A3<='0'; A4<='0'; END IF; END IF; END IF; END PROCESS; END BEHAVIOURAL; --- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CLOCKDIV IS PORT (CLK: IN STD_LOGIC;
DIVOUT : BUFFER STD_LOGIC); END CLOCKDIV;
architecture behavioural of CLOCKDIV is begin PROCESS(CLK) variable count: integer :=0; constant div: integer :=27000000; begin if CLK'event and CLK='1' then if(count<div) then count:=count+1; if(DIVOUT='0') then DIVOUT<='0'; elsif(DIVOUT='1') then DIVOUT<='1'; end if; else if(DIVOUT='0') then DIVOUT<='1'; elsif(DIVOUT='1') then DIVOUT<='0'; end if; count:=0; end if; end if; end process; end behavioural;
man
4
--- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY THN ISPORT (BRAKE, KIRI, KANAN, EMERGENCY, NIGHT, CLOCK: IN STD_LOGIC;
A,B,I,D,E,F,G,H :OUT STD_LOGIC); SIGNAL C: STD_LOGIC_VECTOR (9 DOWNTO 0); END THN;
ARCHITECTURE STRUCTURAL OF THN IS COMPONENT DCD
PORT (AK,BRK, CLK: IN STD_LOGIC;
A1,A2,A3,A4: OUT STD_LOGIC); END COMPONENT;
COMPONENT CLOCKDIV PORT
(CLK : IN STD_LOGIC; DIVOUT : OUT STD_LOGIC); END COMPONENT;
BEGIN
KI: DCD PORT MAP (AK=>KIRI, BRK=>BRAKE, CLK=>C(8), A1=>C(0), A2=>C(1),
A3=>C(2), A4=>C(3));
KA: DCD PORT MAP (AK=>KANAN, BRK=>BRAKE, CLK=>C(8), A1=>C(7), A2=>C(6),
A3=>C(5), A4=>C(4));
CL: CLOCKDIV PORT MAP (CLK=>CLOCK, DIVOUT=>C(8)); 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; 3.2 Mensimulasikan rancangan
1. Lakukan simulasi fungsional untuk melihat kekurangan dan kelebihan dari desain yang dibuat pada QUARTUS 9.0
2. Amati secara seksama
3. Catat pada BCL dan perhatikan keabsahannya
3.3 Mengimplementaskan pada FPGA
1. Jika dirasa benar sudah fungsi dari proyek yang telah dibuat, maka implementasikan pada FPGA
2. Assign pin dengan PIN PLANNER 3. Download pada FPGA
4. Amati dan catat pada BCL.
4. Hasil dan Analisis
4.1 Spesifikasi alat
1. FPGA : Board FPGA DE1
Dalam melakukan praktikum kali ini seperti yang sudah diberitahukan sebelumnya bahwa praktikan membuat proyek THUNDERBURD TAIL LIGHTS, adapun dibuat dengan tabel kebenaran:
NIGHT EMERGENCY BRAKE LEFT RIGHT LAMPU
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 Pengereman 0 0 1 0 1 Rem belok kanan
0 0 1 1 0 Rem belok kiri
0 1 0 x x hazard
0 1 1 x x Pengereman
1 0 0 0 0 malam
man
5
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.
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
Kondisi ini pun sudah benar yaitu kondisi pada saat sen kiri yaitu saat LEFT bernilai 1. Dengan perubahan saat clock sudah 3 kali berosilasi
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
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.
Seperti yang sebelumnya maka ini adalah pengereman yang berbelok kekiri, sehingga berbarengan dengan sen kiri.
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.
man
6
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.
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.