labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/el2102 - sistem digital/2012... · web viewpada...

18
Halaman 1 PERCOBAAN VI : Proyek Perancangan Rangkaian Digital (LED Ping-Pong) Praktikan: Martha Monica (13510080) Tahta Adiguna (18111007) Asisten: Nopiga Pahala (13209035) Waktu Percobaan: 3 Desember 2012 EL2195-Sistem Digital Laboratorium Dasar Teknik Elektro Sekolah Teknik Elektro dan Informatika – ITB Abstrak Pada percobaan ini akan dilakukan desain rangkaian digital. Kelompok kami memilih LED Ping-Pong . Perancangan ini dimulai dengan menganalisa kasus dan membagi kasus tersebut ke dalam subkasus-subkasus. Kemudaian dilakukan analisa lagi untuk tiap subkasus untuk dirancang desain penyelesiaan subkasus tersebut. Subkasus-subkasus tersebut kemudian diintegrasi menjadi suatu kesatuan rangkaian. Rangkaian LED Ping-pong ini menggunakan 3 buah push button sebagai input serta 10 buah LED yang merepresentasikan posisi bola serta keadaan pukulan bola dari tiap pemain,dan 2 buah 7 segment yang merepresentasikan score untuk kedua pemain serta menampilkan nilainya ke layar LCD. Kata kunci : push button, LED Ping-pong, seven segment,LCD 1. Pendahuluan Pada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital. Untuk proyek perancangan ini, kelompok kami memilih LED Ping-pong. Perancangan proyek dilakukan dengan menggabungkan materi-materi yang telah diperoleh dari semua modul percobaan yang telah dilakukan sebelumnya. Proyek ini merepresentasikan prinsip kerja dari permainan ping-pong, dan mengimplementasikannya ke board FPGA dan layar LCD. 2. Dasar Teori Rangkaian LED ping-pong merupakan simulasi dari permainan ping-pong yang sangat sederhana dengan mengasumsikan nyala lampu LED sebagai gerakan bola. Rangkaian LED ping-pong menggunakan blok rangkaian CLOCKDIV, BCD counter dan BCD to 7 segment di dalamnya. Rangkaian CLOCKDIV dipakai untuk memperlambat sinyal clock internal board FPGA agar pergerakan nyala LED dapat diamati oleh mata. Sedangkan rangkaian BCD counter digunakan untuk menghitung score kedua pemain yang kemudian diimplementasikan ke board FPGA dengan menggunakan rangkaian BCD to 7 segment dan layar LCD. 3. Metodologi 3.1 Peralatan yang Digunakan - Komputer / PC yang terlah terinstal Quartus II 9.0 - Board FPGA tipe DE1 - Layar LCD

Upload: others

Post on 12-Jan-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

1

PERCOBAAN VI : Proyek Perancangan Rangkaian Digital (LED Ping-Pong)

Praktikan: Martha Monica (13510080) Tahta Adiguna (18111007)

Asisten: Nopiga Pahala (13209035)Waktu Percobaan: 3 Desember 2012

EL2195-Sistem DigitalLaboratorium Dasar Teknik Elektro

Sekolah Teknik Elektro dan Informatika – ITB

Abstrak

Pada percobaan ini akan dilakukan desain rangkaian digital. Kelompok kami memilih LED Ping-Pong . Perancangan ini dimulai dengan menganalisa kasus dan membagi kasus tersebut ke dalam subkasus-subkasus. Kemudaian dilakukan analisa lagi untuk tiap subkasus untuk dirancang desain penyelesiaan subkasus tersebut. Subkasus-subkasus tersebut kemudian diintegrasi menjadi suatu kesatuan rangkaian. Rangkaian LED Ping-pong ini menggunakan 3 buah push button sebagai input serta 10 buah LED yang merepresentasikan posisi bola serta keadaan pukulan bola dari tiap pemain,dan 2 buah 7 segment yang merepresentasikan score untuk kedua pemain serta menampilkan nilainya ke layar LCD.

Kata kunci : push button, LED Ping-pong, seven segment,LCD

1. Pendahuluan Pada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital. Untuk proyek perancangan ini, kelompok kami memilih LED Ping-pong. Perancangan proyek dilakukan dengan menggabungkan materi-materi yang telah diperoleh dari semua modul percobaan yang telah dilakukan sebelumnya. Proyek ini merepresentasikan prinsip kerja dari permainan ping-pong, dan mengimplementasikannya ke board FPGA dan layar LCD.2. Dasar Teori Rangkaian LED ping-pong merupakan simulasi dari permainan ping-pong yang sangat sederhana dengan mengasumsikan nyala lampu LED sebagai gerakan bola.Rangkaian LED ping-pong menggunakan blok rangkaian CLOCKDIV, BCD counter dan BCD to 7 segment di dalamnya. Rangkaian CLOCKDIV dipakai untuk memperlambat sinyal clock internal board FPGA agar pergerakan nyala LED dapat diamati oleh mata. Sedangkan rangkaian BCD counter digunakan untuk menghitung score kedua pemain yang kemudian

diimplementasikan ke board FPGA dengan menggunakan rangkaian BCD to 7 segment dan layar LCD.

3. MetodologiPeralatan yang Digunakan

- Komputer / PC yang terlah terinstal Quartus II 9.0

- Board FPGA tipe DE1- Layar LCD

- Catu daya+ kabel dan konektor tambahan

- Kabel downloader ‘ByteBlaster II’Prosedur Praktikum

1. Analisa kasus2. Bagi kasus menjadi beberapa subkasus3. Mendesain rangkaian dengan VHDL4. Simulasikan secara fungsional5. Lakukan pin assignment sesuai board

FPGA yang digunakan6. Implementasikan desain kedalam board

FPGA7. Lakukan debugging jika ada kesalahan8. Catat hasil percobaan9. Analisa hasil percobaan

4. Hasil dan Analisis

a. Spesifikasi Desain

Rangkaian LED Ping-Pong yang didesain merupakan simulasi dari permainan bola ping-pong. Dalam rangkaian yang dibuat ini, ditinjau enam keadaan dasar, yaitu reset, serve, hit, lolos, score, win. Adapun spesifikasi input-output dari sistem adalah sebagai berikut.

Input : 3 buah push button yang menunjukkan reset (mengembalikan permainan pada posisi awal) , pemain pertama memukul dan pemain kedua memukul

Page 2: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

2

Output :Tampilan di LCD yang merepresentasikan 10 buah LED, satu buah menunjukkan pemain pertama sedang memukul, delapan buah merepresentasikan posisi bola, dan yang terakhir menunjukkan pemain kedua sedang memukul serta dua buah tampilan 7 segment yang menunjukkan nilai dari kedua pemain.

Batasan-batasan permainan ini secara khusus adalah ketika pemain sedang dalam posisi menerima pukulan, maka pemain tersebut hanya bisa membalas serangan ketika bola telah mencapai posisi terakhir. Apabila sebelum bola tiba di posisi terakhir, pemain tersebut telah menekan membalas pukulan, maka pemain lawan akan mendapatkan score tambahan.

Page 3: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

3

b. Diagram ASM

Page 4: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

4

c. Desain Rangkaian

Pada dasarnya, desain yang dibuat kelompok kami dibagi menjadi beberapa blok tersendiri. Sebelum memasuki permainan,sinyal dari clock masih terlalu cepat frekuensinya sehingga perubahan dari tampilan pada layar LCD tidak bisa diamati dengan mata sehingga digunakan rangkaian CLOCKDIV. Pada rangkaian CLOCKDIV, sinyal dari clock akan diperlambat dengan menggunakan rangkaian clock div supaya perubahan tampilan pada layar LCD dapat diamati oleh mata.

Rangkaian ini diimplementasikan sebagai berikut-- Clock divider-- Digunakan untuk memperlambat frekuensi clock-- agar tampilan dapat diamati

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CLOCKDIV IS PORT ( CLK : IN STD_LOGIC; DIVOUT : BUFFER STD_LOGIC );END CLOCKDIV;

ARCHITECTURE behavioral OF CLOCKDIV ISBEGIN PROCESS (CLK) VARIABLE count : INTEGER := 0; -- Dengan div = 50E6, frekuensi aktual yang digunakan adalah 10 Hz. CONSTANT div : INTEGER := 5000000; 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 behavioral;

Dari kode di atas, dapat kita perhatikan bahwa, kerja dari rangkaian di atas adalah memperlambat clock input sebesar 5000000 kali.

Desain dari permainan ping-pong ini dibagi menjadi enam keadaan dasar, yaitu reset, serve, hit, lolos, score, dan menang.

Adapun penjelasan dari masing-masing kasus sebagai berikut.

ResetPada saat keadaan tombol reset ditekan score untuk pemain pertama akan menjadi

0, score untuk pemain kedua akan menjadi 0, dan state selanjutnya adalah serve untuk pemain pertama. Keadaan serve baru bisa dimasuki apabila tombol reset dilepas. Posisi bola pada saat tombol reset ditekan dapat ditunjukkan sebagai berikut

ServePada saat pemain pertama melakukan serve (push button 1 ditekan), maka akan terjadi perubahan warna dari merah menjadi hijau pada tampilan layar LCD bergantian dari kiri ke kanan yang merepresentasikan pergerakan dari bola pingpong. Pergerakan posisi bola datapa ditunjukkan sebagai berikut

Ketika pemain kedua yang melakukan serve,maka tampilan pada layar LCD akan menyala bergantian dari kanan ke kiri. Pergerakan bola dapat ditunjukkan sebagai berikut

Ketika bola berada pada posisi terakhir, maka akan memasuki keadaan hit.

Hit

Page 5: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

5

Pada saat hit, maka terdapat dua keadaan, yaitu pemain memukul bola (push button ditekan) atau lolos (bola tidak dipukul balik). Apabila pemain berhasil memukul bola (ditandai dengan perubahan warna menjadi warna hijau pada layar LCD untuk pemain tersebut) maka bola akan dibalikkan ke pemain lawan(pergerakan bola sama seperti ketika pemain pertama melakukan serve). Jika bola lolos, maka akan memasuki state score.

ScorePada saat bola lolos dari pemain pertama maka score untuk pemain kedua akan bertambah, sedangkan apabila bola lolos dari pemain kedua maka score untuk pemain pertama akan bertambah. Selain itu, apabila seorang pemain berada pada keadaan diserang terlebih dahulu memukul bola sebelum posisi bola mencapai posisi terakhir bola , maka score dari pemain lawan akan bertambah. Apabila saat memasuki state score, score dari pemain yang akan ditambah telah mencapai nilai 9, maka akan memasuki state win, jika belum mencapai nilai 9, maka akan pindah ke state lolos.

Lolos Pada saat memasuki state lolos maka akan ada penanda berupa perubahan warna yang menandakan bahwa pemain tersebut kebobolan. Pola perubahan warna yang terjadi itu akan terus berulang hingga pemain yang kebobolan melakukan serve (push button ditekan).Apabila pemain pertama mengalami kebobolan, maka perubahan warna digambarkan sebagai berikut

Sebaliknya, apabila pemain kedua yang mengalami kebobolan, maka perubahan warna digambarkan sebagai berikut

WinPada saat memasuki state win maka akan ada penanda berupa pola perubahan warna pada tampilan LCD yang menandakan bahwa pemain tersebut menang. Pola itu akan terus berulang hingga pemain yang kebobolan melakukan reset (push button ditekan).

Apabila pemain pertama menang, maka pola perubahan warna dapat digambarkan sebagai berikut

Sebaliknya, apabila pemain kedua menang, maka pola perubahan warna digambarkan sebagai berikut

Pada rangkaian ini juga digunakan komponen BCD to 7 segment untuk menampilkan skor dari kedua pemain yang dihubungkan dengan tampilan pada layar LCD.

Kode VHDL untuk komponen BCD to 7 segment adalah sebagai berikutENTITY bcd_7seg ISPORT(D0,D1,D2,D3: IN BIT; A,B,C,D,E,F,G: OUT BIT);END bcd_7seg;

ARCHITECTURE behavioral OF bcd_7seg ISBEGIN A <= NOT(D3 OR D1 OR (D2 XNOR D0)); B <= NOT((NOT D2) OR (D1 XNOR D0)); C <= NOT(D2 OR (NOT D1) OR D0); D <= NOT(D3 OR (D1 AND (NOT (D0 AND D2))) OR (NOT (D2 OR D0)) OR (D2 AND (NOT D1) AND D0)); E <= NOT((NOT D0) AND (D1 OR (NOT D2))); F <= NOT(D3 OR (NOT (D1 OR D0)) OR (D2 AND (NOT (D1 AND D0)))); G <= NOT(D3 OR (D2 XNOR (NOT D1)) OR (D1 AND (NOT D0)));

Page 6: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

6

END behavioral;

Komponen di atas merupakan rangkaian yang merupakan kombinasi-kombinasi input untuk mengatur keluaran dari input tersebut pada 7 segment dengan posisi sesuai gambar berikut

Pada saat terjadi perubahan nilai yang tersimpan pada BCD, pada saat yang bersamaan yang bersamaan, nilai tersebut juga akan muncul pada layar LCD sesuai dengan nilai yang muncul pada 7 segment dengan tampilan sebagai berikut

Perbedaan dari percobaan minggu sebelumnya, pada percobaan sebelumnya, tampilan yang dimunculkan pada layar LCD hanyalah skor pemain, sedangkan permainan ping-pong nya sendiri masih diimplementasikan pada lampu LED. Pada percobaan kali ini, tampilan yang sebelumnya diimplementasikan pada lampu LED, diimplementasikan pada layar LCD.

Page 7: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

7

Berdasarkan penjelasan diatas, maka desain VHDL dirancang sebagai berikuta. color_rom_vhdLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY color_rom_vhd IS PORT( i_a1, i_b1 : IN STD_LOGIC; i_c1 : IN STD_LOGIC; i_d1 : IN STD_LOGIC; i_e1 : IN STD_LOGIC; i_f1 : IN STD_LOGIC; i_g1 : IN STD_LOGIC; i_a2 : IN STD_LOGIC; i_b2 : IN STD_LOGIC; i_c2 : IN STD_LOGIC; i_d2 : IN STD_LOGIC; i_e2 : IN STD_LOGIC; i_f2 : IN STD_LOGIC; i_g2 : IN STD_LOGIC; i_bo1 : IN STD_LOGIC; i_bo2 : IN STD_LOGIC; i_bo3 : IN STD_LOGIC; i_bo4 : IN STD_LOGIC; i_bo5 : IN STD_LOGIC; i_bo6 : IN STD_LOGIC; i_bo7 : IN STD_LOGIC; i_bo8 : IN STD_LOGIC; i_p1 : IN STD_LOGIC; i_p2 : IN STD_LOGIC; i_c : IN STD_LOGIC; i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); i_pixel_row : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); o_red : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); o_green : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); o_blue : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ));END color_rom_vhd;

ARCHITECTURE behavioral OF color_rom_vhd IS

-- 7 segment yang merepresentasikan score pemain pertama

CONSTANT a1_kiri : INTEGER := 156;CONSTANT a1_kanan : INTEGER := 228;CONSTANT a1_atas : INTEGER := 120;CONSTANT a1_bawah : INTEGER := 149;

CONSTANT b1_kiri : INTEGER := 229;CONSTANT b1_kanan : INTEGER := 258;CONSTANT b1_atas : INTEGER := 150;CONSTANT b1_bawah : INTEGER := 222;

CONSTANT c1_kiri : INTEGER := 229;CONSTANT c1_kanan : INTEGER := 258;CONSTANT c1_atas : INTEGER := 256;CONSTANT c1_bawah : INTEGER := 328;

CONSTANT d1_kiri : INTEGER := 156;CONSTANT d1_kanan : INTEGER := 228;CONSTANT d1_atas : INTEGER := 329;CONSTANT d1_bawah : INTEGER := 358;

CONSTANT e1_kiri : INTEGER := 126;CONSTANT e1_kanan : INTEGER := 155;CONSTANT e1_atas : INTEGER := 256;CONSTANT e1_bawah : INTEGER := 328;

CONSTANT f1_kiri : INTEGER := 126;CONSTANT f1_kanan : INTEGER := 155;CONSTANT f1_atas : INTEGER := 150;

Page 8: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

8

CONSTANT f1_bawah : INTEGER := 222;

CONSTANT g1_kiri : INTEGER := 156;CONSTANT g1_kanan : INTEGER := 228;CONSTANT g1_atas : INTEGER := 223;CONSTANT g1_bawah : INTEGER := 255;

-- 7 segment yang merepresentasikan score pemain kedua

CONSTANT a2_kiri : INTEGER := 428;CONSTANT a2_kanan : INTEGER := 500;CONSTANT a2_atas : INTEGER := 120;CONSTANT a2_bawah : INTEGER := 149;

CONSTANT b2_kiri : INTEGER := 501;CONSTANT b2_kanan : INTEGER := 530;CONSTANT b2_atas : INTEGER := 150;CONSTANT b2_bawah : INTEGER := 222;

CONSTANT c2_kiri : INTEGER := 501;CONSTANT c2_kanan : INTEGER := 530;CONSTANT c2_atas : INTEGER := 256;CONSTANT c2_bawah : INTEGER := 328;

CONSTANT d2_kiri : INTEGER := 428;CONSTANT d2_kanan : INTEGER := 500;CONSTANT d2_atas : INTEGER := 329;CONSTANT d2_bawah : INTEGER := 358;

CONSTANT e2_kiri : INTEGER := 398;CONSTANT e2_kanan : INTEGER := 427;CONSTANT e2_atas : INTEGER := 256;CONSTANT e2_bawah : INTEGER := 328;

CONSTANT f2_kiri : INTEGER := 398;CONSTANT f2_kanan : INTEGER := 427;CONSTANT f2_atas : INTEGER := 150;CONSTANT f2_bawah : INTEGER := 222;

CONSTANT g2_kiri : INTEGER := 428;CONSTANT g2_kanan : INTEGER := 500;CONSTANT g2_atas : INTEGER := 223;CONSTANT g2_bawah : INTEGER := 255;

-- tanda titik dua di tampilan score

CONSTANT titik1_kiri : INTEGER := 309;CONSTANT titik1_kanan : INTEGER := 348;CONSTANT titik1_atas : INTEGER := 179;CONSTANT titik1_bawah : INTEGER := 218;

CONSTANT titik2_kiri : INTEGER := 309;CONSTANT titik2_kanan : INTEGER := 348;CONSTANT titik2_atas : INTEGER := 259;CONSTANT titik2_bawah : INTEGER := 298;

-- untuk tampilan LED di layar

CONSTANT bo1_kiri : INTEGER := 120;CONSTANT bo1_kanan : INTEGER := 169;CONSTANT bo1_atas : INTEGER := 400;CONSTANT bo1_bawah : INTEGER := 449;

CONSTANT bo2_kiri : INTEGER := 170;CONSTANT bo2_kanan : INTEGER := 219;CONSTANT bo2_atas : INTEGER := 400;CONSTANT bo2_bawah : INTEGER := 449;

CONSTANT bo3_kiri : INTEGER := 220;CONSTANT bo3_kanan : INTEGER := 269;CONSTANT bo3_atas : INTEGER := 400;CONSTANT bo3_bawah : INTEGER := 449;

CONSTANT bo4_kiri : INTEGER := 270;CONSTANT bo4_kanan : INTEGER := 319;CONSTANT bo4_atas : INTEGER := 400;CONSTANT bo4_bawah : INTEGER := 449;

CONSTANT bo5_kiri : INTEGER := 320;CONSTANT bo5_kanan : INTEGER := 369;CONSTANT bo5_atas : INTEGER := 400;

Page 9: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

9

CONSTANT bo5_bawah : INTEGER := 449;

CONSTANT bo6_kiri : INTEGER := 370;CONSTANT bo6_kanan : INTEGER := 419;CONSTANT bo6_atas : INTEGER := 400;CONSTANT bo6_bawah : INTEGER := 449;

CONSTANT bo7_kiri : INTEGER := 420;CONSTANT bo7_kanan : INTEGER := 469;CONSTANT bo7_atas : INTEGER := 400;CONSTANT bo7_bawah : INTEGER := 449;

CONSTANT bo8_kiri : INTEGER := 470;CONSTANT bo8_kanan : INTEGER := 519;CONSTANT bo8_atas : INTEGER := 400;CONSTANT bo8_bawah : INTEGER := 449;

-- penanda player memukul

CONSTANT p1_kiri : INTEGER := 70;CONSTANT p1_kanan : INTEGER := 119;CONSTANT p1_atas : INTEGER := 400;CONSTANT p1_bawah : INTEGER := 449;

CONSTANT p2_kiri : INTEGER := 520;CONSTANT p2_kanan : INTEGER := 569;CONSTANT p2_atas : INTEGER := 400;CONSTANT p2_bawah : INTEGER := 449;

SIGNAL B : INTEGER;

BEGIN

PROCESS(i_pixel_row,i_pixel_column,i_a1,i_b1,i_c1,i_d1,i_e1,i_f1,i_g1,i_a2,i_b2,i_c2,i_d2,i_e2,i_f2,i_g2,i_bo1,i_bo2,i_bo3,i_bo4,i_bo5,i_bo6,i_bo7,i_bo8,i_p1,i_p2)BEGIN-- bagian untuk menandai 7 segment yang menyala IF ((((i_pixel_row >= a1_atas) AND (i_pixel_row < a1_bawah) ) AND ((i_pixel_column >= a1_kiri) AND (i_pixel_column < a1_kanan)) AND (i_a1='0')) OR (((i_pixel_row >= b1_atas) AND (i_pixel_row < b1_bawah) ) AND ((i_pixel_column >= b1_kiri) AND (i_pixel_column < b1_kanan)) AND (i_b1='0')) OR (((i_pixel_row >= c1_atas) AND (i_pixel_row < c1_bawah) ) AND ((i_pixel_column >= c1_kiri) AND (i_pixel_column < c1_kanan)) AND (i_c1='0')) OR (((i_pixel_row >= d1_atas) AND (i_pixel_row < d1_bawah) ) AND ((i_pixel_column >= d1_kiri) AND (i_pixel_column < d1_kanan)) AND (i_d1='0')) OR (((i_pixel_row >= e1_atas) AND (i_pixel_row < e1_bawah) ) AND ((i_pixel_column >= e1_kiri) AND (i_pixel_column < e1_kanan)) AND (i_e1='0')) OR (((i_pixel_row >= f1_atas) AND (i_pixel_row < f1_bawah) ) AND ((i_pixel_column >= f1_kiri) AND (i_pixel_column < f1_kanan)) AND (i_f1='0')) OR (((i_pixel_row >= g1_atas) AND (i_pixel_row < g1_bawah) ) AND ((i_pixel_column >= g1_kiri) AND (i_pixel_column < g1_kanan)) AND (i_g1='0')) OR (((i_pixel_row >= a2_atas) AND (i_pixel_row < a2_bawah) ) AND ((i_pixel_column >= a2_kiri) AND (i_pixel_column < a2_kanan)) AND (i_a2='0')) OR (((i_pixel_row >= b2_atas) AND (i_pixel_row < b2_bawah) ) AND ((i_pixel_column >= b2_kiri) AND (i_pixel_column < b2_kanan)) AND (i_b2='0')) OR (((i_pixel_row >= c2_atas) AND (i_pixel_row < c2_bawah) ) AND ((i_pixel_column >= c2_kiri) AND (i_pixel_column < c2_kanan)) AND (i_c2='0')) OR (((i_pixel_row >= d2_atas) AND (i_pixel_row < d2_bawah) ) AND ((i_pixel_column >= d2_kiri) AND (i_pixel_column < d2_kanan)) AND (i_d2='0')) OR (((i_pixel_row >= e2_atas) AND (i_pixel_row < e2_bawah) ) AND ((i_pixel_column >= e2_kiri) AND (i_pixel_column < e2_kanan)) AND (i_e2='0')) OR (((i_pixel_row >= f2_atas) AND (i_pixel_row < f2_bawah) ) AND ((i_pixel_column >= f2_kiri) AND (i_pixel_column < f2_kanan)) AND (i_f2='0')) OR (((i_pixel_row >= g2_atas) AND (i_pixel_row < g2_bawah) ) AND ((i_pixel_column >= g2_kiri) AND (i_pixel_column < g2_kanan)) AND (i_g2='0')) OR (((i_pixel_row >= titik1_atas) AND (i_pixel_row < titik1_bawah) ) AND ((i_pixel_column >= titik1_kiri) AND (i_pixel_column < titik1_kanan))) OR (((i_pixel_row >= titik2_atas) AND (i_pixel_row < titik2_bawah) ) AND ((i_pixel_column >= titik2_kiri) AND (i_pixel_column < titik2_kanan)))) THEN B <= 1; ELSIF ((((i_pixel_row >= bo1_atas) AND (i_pixel_row < bo1_bawah) ) AND ((i_pixel_column >= bo1_kiri) AND (i_pixel_column < bo1_kanan)) AND (i_bo1='1')) OR (((i_pixel_row >= bo2_atas) AND (i_pixel_row < bo2_bawah) ) AND ((i_pixel_column >= bo2_kiri) AND (i_pixel_column < bo2_kanan)) AND (i_bo2='1')) OR (((i_pixel_row >= bo3_atas) AND (i_pixel_row < bo3_bawah) ) AND ((i_pixel_column >= bo3_kiri) AND (i_pixel_column < bo3_kanan)) AND (i_bo3='1')) OR (((i_pixel_row >= bo4_atas) AND (i_pixel_row < bo4_bawah) ) AND ((i_pixel_column >= bo4_kiri) AND (i_pixel_column < bo4_kanan)) AND (i_bo4='1')) OR

Page 10: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

10

(((i_pixel_row >= bo5_atas) AND (i_pixel_row < bo5_bawah) ) AND ((i_pixel_column >= bo5_kiri) AND (i_pixel_column < bo5_kanan)) AND (i_bo5='1')) OR (((i_pixel_row >= bo6_atas) AND (i_pixel_row < bo6_bawah) ) AND ((i_pixel_column >= bo6_kiri) AND (i_pixel_column < bo6_kanan)) AND (i_bo6='1')) OR (((i_pixel_row >= bo7_atas) AND (i_pixel_row < bo7_bawah) ) AND ((i_pixel_column >= bo7_kiri) AND (i_pixel_column < bo7_kanan)) AND (i_bo7='1')) OR (((i_pixel_row >= bo8_atas) AND (i_pixel_row < bo8_bawah) ) AND ((i_pixel_column >= bo8_kiri) AND (i_pixel_column < bo8_kanan)) AND (i_bo8='1'))) THEN B <= 2; -- menandai bola yang tidak menyala ELSIF ((((i_pixel_row >= bo1_atas) AND (i_pixel_row < bo1_bawah) ) AND ((i_pixel_column >= bo1_kiri) AND (i_pixel_column < bo1_kanan)) AND (i_bo1='0')) OR (((i_pixel_row >= bo2_atas) AND (i_pixel_row < bo2_bawah) ) AND ((i_pixel_column >= bo2_kiri) AND (i_pixel_column < bo2_kanan)) AND (i_bo2='0')) OR (((i_pixel_row >= bo3_atas) AND (i_pixel_row < bo3_bawah) ) AND ((i_pixel_column >= bo3_kiri) AND (i_pixel_column < bo3_kanan)) AND (i_bo3='0')) OR (((i_pixel_row >= bo4_atas) AND (i_pixel_row < bo4_bawah) ) AND ((i_pixel_column >= bo4_kiri) AND (i_pixel_column < bo4_kanan)) AND (i_bo4='0')) OR (((i_pixel_row >= bo5_atas) AND (i_pixel_row < bo5_bawah) ) AND ((i_pixel_column >= bo5_kiri) AND (i_pixel_column < bo5_kanan)) AND (i_bo5='0')) OR (((i_pixel_row >= bo6_atas) AND (i_pixel_row < bo6_bawah) ) AND ((i_pixel_column >= bo6_kiri) AND (i_pixel_column < bo6_kanan)) AND (i_bo6='0')) OR (((i_pixel_row >= bo7_atas) AND (i_pixel_row < bo7_bawah) ) AND ((i_pixel_column >= bo7_kiri) AND (i_pixel_column < bo7_kanan)) AND (i_bo7='0')) OR (((i_pixel_row >= bo8_atas) AND (i_pixel_row < bo8_bawah) ) AND ((i_pixel_column >= bo8_kiri) AND (i_pixel_column < bo8_kanan)) AND (i_bo8='0'))) THEN B<= 3; -- menandai bola yang menyala ELSIF ((((i_pixel_row >= p1_atas) AND (i_pixel_row < p1_bawah) ) AND ((i_pixel_column >= p1_kiri) AND (i_pixel_column < p1_kanan)) AND (i_p1='1')) OR (((i_pixel_row >= p2_atas) AND (i_pixel_row < p2_bawah) ) AND ((i_pixel_column >= p2_kiri) AND (i_pixel_column < p2_kanan)) AND (i_p2='1'))) THEN B<= 4; -- penanda kalau player memukul bola ELSIF ((((i_pixel_row >= p1_atas) AND (i_pixel_row < p1_bawah) ) AND ((i_pixel_column >= p1_kiri) AND (i_pixel_column < p1_kanan)) AND (i_p1='0')) OR (((i_pixel_row >= p2_atas) AND (i_pixel_row < p2_bawah) ) AND ((i_pixel_column >= p2_kiri) AND (i_pixel_column < p2_kanan)) AND (i_p2='0'))) THEN B<= 5; -- penanda kalau player tidak memukul bola ELSE B <= 0; END IF; IF (B = 1) THEN o_red <= "000000"; o_green <= "000000"; o_blue <= "111111"; ELSIF (B = 2) THEN o_red <= "111111"; o_green <= "000000"; o_blue <= "000000"; ELSIF (B = 3) THEN o_red <= "000000"; o_green <= "111111"; o_blue <= "000000"; ELSIF (B = 4) THEN o_red <= "000000"; o_green <= "111111"; o_blue <= "111111"; ELSIF (B = 5) THEN o_red <= "111111"; o_green <= "111111"; o_blue <= "000000"; ELSE o_red <= "000000"; o_green <= "000000"; o_blue <= "000000"; END IF;

END PROCESS;

END behavioral;

b. pingpongLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PINGPONG IS PORT ( reset,clock : IN STD_LOGIC; p1_push,p2_push : IN STD_LOGIC; out1,out2,out3,out4,out5,out6,out7,out8 : OUT STD_LOGIC; hit1,hit2 : OUT STD_LOGIC; a1,b1,c1,d1,e1,f1,g1 : OUT STD_LOGIC; a2,b2,c2,d2,e2,f2,g2 : OUT STD_LOGIC);END PINGPONG;

ARCHITECTURE behavioral OF PINGPONG IS

COMPONENT bcd_7seg IS PORT ( d0, d1, d2, d3 : STD_LOGIC; a, b, c, d, e, f, g : OUT STD_LOGIC); END COMPONENT; COMPONENT CLOCKDIV IS PORT ( CLK : IN STD_LOGIC;

Deklarasi input dan output yang digunakan

Deklarasi komponen bcd_7seg

Deklarasi komponen CLOCKDIV

Pendefinisian warna yang digunakan

Page 11: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

11

DIVOUT : BUFFER STD_LOGIC ); END COMPONENT;

TYPE game_state IS (lr1, lr2, lr3, lr4, lr5, lr6, lr7,lr8, rl1, rl2, rl3, rl4, rl5, rl6, rl7,rl8, p1_hit, p2_hit, p1_serve, p2_serve, p1_score, p2_score, p1_win, p2_win, lolos11,lolos12,lolos13,lolos21,lolos22,lolos23, cele11,cele12,cele21,cele22 );

SIGNAL current_state : game_state; SIGNAL BCD_scorep1 : STD_LOGIC_VECTOR(3 downto 0); SIGNAL BCD_scorep2 : STD_LOGIC_VECTOR(3 downto 0); SIGNAL ballpos : STD_LOGIC_VECTOR(7 downto 0); SIGNAL serve1,serve2 : STD_LOGIC; SIGNAL clkout : STD_LOGIC;

BEGIN serve1 <= NOT(p1_push); serve2 <= NOT(p2_push);

melambat : CLOCKDIV PORT MAP ( CLK => clock, DIVOUT => clkout);

PROCESS (clkout, RESET, BCD_scorep1, BCD_scorep2, serve1, serve2) BEGIN IF RESET = '0' THEN ballpos <= "10000000"; BCD_scorep1 <= "0000"; BCD_scorep2 <= "0000"; current_state <= p1_serve; ELSIF (clkout'EVENT AND clkout = '1') THEN hit1 <= serve1; hit2 <= serve2;

CASE current_state IS WHEN p1_serve => hit1<= '1'; IF serve1 = '1' THEN current_state <= lr1; END IF; WHEN p2_serve => hit2 <= '1'; IF serve2 = '1' THEN current_state <= rl1; END IF;

WHEN p1_hit =>

IF serve1 = '1' THEN IF serve2='1' THEN current_state <= p1_score; ELSE current_state <= lr1; END IF; ELSE current_state <= p2_score; END IF; WHEN p2_hit => IF serve2 = '1' THEN IF serve1='1' THEN current_state <= p2_score; ELSE current_state <= rl1; END IF; ELSE current_state <= p1_score; END IF;

Deklarasi komponen bcd_7seg

Deklarasi komponen CLOCKDIV

Deklarasi komponen bcd_7seg

Deklarasi komponen CLOCKDIV

Deklarasi komponen CLOCKDIV

Deklarasi type game_state (state yang ada di dalam

permainan)

Deklarasi sinyal-sinyal yang akan digunakan

Pemetaan komponen CLOCKDIV

Menunjukkan push button ditekan (ditambah NOT karena active low)

Keadaan saat tombol reset

ditekan

Keadaan saat pemain pertama memukul

Keadaan saat pemain kedua memukul

Keadaan saat

pemain pertama

harus memukul

Jika pemain pertama tidak memukul, skor pemain kedua

bertambah

Keadaan saat

pemain kedua harus

memukul Jika pemain kedua tidak memukul, skor pemain pertama

bertambah

Page 12: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

12

WHEN p1_score => ballpos <= "00000000"; BCD_scorep1 <= BCD_scorep1 + 1; IF BCD_scorep1 = "1001" THEN current_state <= p1_win; ELSE current_state <= lolos11; END IF;

WHEN p2_score => ballpos <= "00000000"; BCD_scorep2 <= BCD_scorep2 + 1; IF BCD_scorep2 = "1001" THEN current_state <= p2_win; ELSE current_state <= lolos21; END IF; WHEN p1_win => BCD_scorep1 <= "0000"; BCD_scorep2 <= "0000"; current_state <= cele11; WHEN p2_win => BCD_scorep1 <= "0000"; BCD_scorep2 <= "0000"; current_state <= cele21;

WHEN cele11 => hit1<= '1'; ballpos <= "11110000"; current_state <= cele12; WHEN cele12 => hit1<= '0'; ballpos <= "00000000"; current_state <= cele11; WHEN cele21 => hit2<= '1'; ballpos <= "00001111"; current_state <= cele22; WHEN cele22 => hit2<= '0'; ballpos <= "00000000"; current_state <= cele21; WHEN lolos21 => ballpos <= "00110000"; IF serve1='1' THEN current_state <= p1_serve; ELSE current_state <= lolos22; END IF; WHEN lolos22 => ballpos <= "01100000"; IF serve1='1' THEN current_state <= p1_serve; ELSE current_state <= lolos23; END IF; WHEN lolos23 => ballpos <= "11000000"; IF serve1='1' THEN current_state <= p1_serve; ELSE current_state <= lolos21; END IF; WHEN lolos11 => ballpos <= "00001100"; IF serve2='1' THEN current_state <= p2_serve; ELSE

Keadaan saat pemain

pertama menambah

skor

Jika skor pemain pertama 9 dan pemain pertama mencetak skor maka pemain pertama menang

Keadaan saat

pemain kedua

menambah skor

Jika skor pemain kedua 9 dan pemain kedua mencetak skor maka pemain kedua menang

Keadaan saat pemain pertama

menang

Keadaan saat pemain kedua

menang

Pola nyala LED ketika pemain pertama menang

Pola nyala LED ketika pemain kedua menang

Pola nyala LED ketika pemain

pertama tidak berhasil memukul bola

Pola nyala LED

Page 13: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

13

current_state <= lolos12; END IF; WHEN lolos12 => ballpos <= "00000110"; IF serve2='1' THEN current_state <= p2_serve; ELSE current_state <= lolos13; END IF; WHEN lolos13 => ballpos <= "00000011"; IF serve2='1' THEN current_state <= p2_serve; ELSE current_state <= lolos11; END IF;

WHEN lr1 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "10000000"; current_state <= lr2; END IF; WHEN lr2 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "01000000"; current_state <= lr3; END IF; WHEN lr3 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00100000"; current_state <= lr4; END IF; WHEN lr4 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00010000"; current_state <= lr5; END IF; WHEN lr5 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00001000"; current_state <= lr6; END IF; WHEN lr6 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00000100"; current_state <= lr7; END IF; WHEN lr7 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00000010"; current_state <= lr8; END IF; WHEN lr8 => IF serve2='1' THEN current_state <= p1_score; ELSE ballpos <= "00000001"; current_state <= p2_hit; END IF; WHEN rl1 => IF serve1='1' THEN current_state <= p2_score; ELSE

Pola nyala LED

Pola nyala LED ketika bola

bergerak dari pemain pertama ke

pemain kedua

Pola nyala LED ketika bola

bergerak dari pemain kedua ke pemain perta,a

Page 14: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

14

ballpos <= "00000001"; current_state <= rl2; END IF;

WHEN rl2 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "00000010"; current_state <= rl3; END IF;

WHEN rl3 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "00000100"; current_state <= rl4; END IF;

WHEN rl4 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "00001000"; current_state <= rl5; END IF; WHEN rl5 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "00010000"; current_state <= rl6; END IF; WHEN rl6 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "00100000"; current_state <= rl7; END IF; WHEN rl7 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "01000000"; current_state <= rl8; END IF; WHEN rl8 => IF serve1='1' THEN current_state <= p2_score; ELSE ballpos <= "10000000"; current_state <= p1_hit; END IF; END CASE; END IF; END PROCESS;

out1 <= ballpos(7); out2 <= ballpos(6); out3 <= ballpos(5); out4 <= ballpos(4); out5 <= ballpos(3); out6 <= ballpos(2); out7 <= ballpos(1); out8 <= ballpos(0);

SCORE1 : bcd_7seg PORT MAP (d0 => BCD_scorep1(0), d1 => BCD_scorep1(1), d2 => BCD_scorep1(2), d3 => BCD_scorep1(3), a => a1, b => b1, c => c1, d => d1, e => e1, f => f1, g => g1);

Pola nyala LED ketika bola

bergerak dari pemain kedua ke pemain perta,a

Pemetaan output ke LED

Pemetaan skor pemain pertama

Page 15: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

15

SCORE2 : bcd_7seg PORT MAP (d0 => BCD_scorep2(0), d1 => BCD_scorep2(1), d2 => BCD_scorep2(2), d3 => BCD_scorep2(3), a => a2, b => b2, c => c2, d => d2, e => e2, f => f2, g => g2);END behavioral;

Pemetaan skor pemain kedua

Page 16: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

16

5. Proses Desain- Membuat spesifikasi desain- Membuat rancangan ASM- Membuat implementasi VHDL- Mencoba pada FPGA dan LCD- Debugging dan menambahkan fitur-fitur

tambahan

6. Hasil PercobaanHasil simulasi fungsional dari proyek di atas adalah

Ketika disimulasikan ke board FPGAn LCD , dapat dilihat bahwa ketika reset bernilai 1, maka rangkaian berada pada keadaan awal. Ketika pemain pertama memukul, maka bola akan bergerak dari pemain pertama ke pemain kedua, terlihat apabila bola belum tiba di ujung dan pemain telah memukul, maka akan menambah skor pemain lawannya. Hal ini terlihat dari terbentuknya pola lolos.Apabila bola telah sampai di ujung dan pemain tersebut tidak memukul bolanya, juga terbentuk pola lolos, dan berlaku sebaliknya. Ketika skor salah satu pemain telah mencapai nilai 9 dan pemain tersebut mencetak skor lagi, maka akan terbentuk pola menang seperti yang terlihat dari hasil simulasi. Dengan begitu hasil yang kita peroleh sesuai dengan yang diharapkan.Hasil implementasi ke board FPGA adalah sebagai berikuta. Hasil ketika rangkaian direset

b. Hasil ketika permainan berlangsung

c. Hasil ketika salah satu pemain gagal

memukul bola

d. Hasil ketika salah satu pemain menang

Berdasarkan percobaan yang telah dilakukan dapat dilihat bahwa hasil yang diperoleh sama dengan hasil yang diharapkan.

Pengeerjaan perancangan dan pembuatan proyek ini dilakukan secara bersama-sama / dilakukan secara bersama walaupun tidak berada di tempat yang sama.7. KesimpulanBerdasarkan percobaan yang telah dilakukan sampai saat ini, dapat diperoleh kesimpulan bahwa kita dapat merancang sebuah sistem sederhana. Sistem tersebut terlebih dahulu dirancang FSM dan atau ASM nya, kemudian sistem itu dapat direalisasikan dengan melakukan simulasi

Page 17: labdasar.ee.itb.ac.idlabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewPada praktikum ini, dilakukan praktikum mandiri untuk mendesain sebuah rangkaian digital

Hal

aman

17

dengan menggunakan pendekatan bahasa VHDL melalui software Altera Quartus di mana rangkaian dapat diimplementasikan dengan menggunakan FPGA. Sistem yang dibangun tersebut kemudian diuji dan dianalisa.Dari hasil pengujian diperoleh hasil sesuai dengan yang diharapkan.

8. Daftar Pustaka

[1] http://labdasar.ee.itb.ac.id/lab/ EL2195/1213/modul6.pdf (diakses 3 Desember 2012)

[2] Mervin T. Hutabarat, dkk, PRAKTIKUM SISTEM DIGITAL, Hal 77-79,Laboratorium Dasar Teknik Elektro ITB,Bandung, 2012