Professional Documents
Culture Documents
Disusun oleh :
Nicholas Melky (NIM 13206010)
Rangga Guntur Wibawa (NIM 13206204)
1.1.Pendahuluan
Pada mata kuliah Perancangan Rangkaian Sekuensial mahasiswa telah mempelajari
sejumlah materi mengenai rangkaian sekuensial baik berupa sychronous maupun
asynchronous. Synchronous Sequential Circuit adalah rangkaian yang perubahan statenya
diatur oleh adanya perubahan pada clock yaitu pada raising clock edge atau falling clock
edge. Sedangkan Asynchronous Sequqntial Circuit adalah rangkaian yang perubahan statenya
terjadi pada ketika adanya perubahan input rangkaian itu sendiri. Implementasi penggunaan
rangkaian sekuensial banyak terdapat pada sirkuit elektrik yang sederhana dan tidak
menggunakan prosesor. Implementasi dapat berupa bermacam-macam bentuk. Untuk itu,
project ini akan membahas salah satu bentuk implentasi sirkuit sequential sederhana, yaitu
permainan Ping-pong pada 32 buah LED dengan lebar 8 dan panjang 4 buah LED.
1.2.Deskripsi Masalah
Tugas project ini adalah merancang dan membangun sebuah sirkuit sekuensial
menggunakan state machine, shift register, dan counter. Sirkuit ini akan berfungsi sebagai
permainan ping-pong sederhana. Bentuk permainan, 8 x 4 led akan mewakili bola ping-pong
bergerak dan empat pushbutton pada masing-masing sisi akan digunakan sebagai paddle
(pemukul). Sebuah led menyala atau “bola” akan bergerak dari kiri ke kanan dan "memantul"
kembali dari kanan ke kiri jika pemain kanan menekan tombol pemukul – tidak terlalu cepat
dan tidak terlalu terlambat. Demikian juga, pemain kiri menggunakan tombol pemukul untuk
memukul bola ketika bola berada di paling kiri posisi.
1.3.Requirement perancangan
Score atau hasil pertandingan akan ditampilkan pada sebuah 7-segmen pada masing-
masing pemain. Pada sirkuit ping-pong akan terdapat input dan output pin sebagai berikut :
CLOCK Onboard 25 MHz Oscillator.
RESET Master synchronous reset input.
LPB3 – LPB0 Left paddle push button input
RPB3 – RPB0 Right paddle push button input.
A7-A0, B7-B0, C7-C0, and D7-D0 Keluaran 4 x 8 LED yang merepresentasikan
bola ping-pong. A7,B7,C7, dan D7 adalah
LED bagian paling kiri, dan A0,B0,C0, and
D0 adalah bagian paling kanan.
A_7segment_A - A_7segment_G Keluaran untuk menghasilkan score pemain kiri pada
tampilan 7-segmen.
B_7segment_A - B_7segment_G Keluaran untuk menghasilkan score pemain kanan
pada tampilan 7-segmen.
1.4.Metodologi Perancangan
Perancangan dilakukan pada program Altera Quartus II 6.0sp1 Web Edition Full.
Program ini dapat merancang dan mensimulasikan rangkaian digital dengan berbagai jenis
gate baik primitive gate seperti AND, OR, XOR, NOT, dan sebagainya sampai simbol-simbol
IC seperti seri 74LS. Dengan merancang pada Altera Quartu II 6.0sp1 ini, kita dapat melihat
bagaimana respons dari rangkaian yang dipasang pada program tersebut. Reponse rangkaian
dapat dilihat pada Simulasi Timing dan Fungsional.
Perancangan dimulai dengan mengubah aturan permainan menjadi Finite State
Machine (FSM). Kemudian dari FSM tersebut dilakukan optimasi dengan berbagai metoda
optimasi pada rangkaian sekuensial, diantaranya adalah dengan implication chart, state
assignment, dan sebagainya. Dari hasil optimasi tersebut diimplentasikan menjadi rangkaian
sirkuit dengan cover minimal. Pada akhirnya, dapat dilihat hasil response yang diinginkan.
BAB II
PERANCANGAN RANGKAIAN
2.1.Perancangan Sistem
Permainan ping-pong dirancang dengan mengubah aturan permainan menjadi Finite
State Machine (FSM). FSM hasil rancangan permainan ping-pong adalah sebagai berikut :
Pertama permainan dimulai pada START yang menuju STATE WAIT. STATE
WAIT adalah state dimana permainan menunggu untuk dimulai. Permainan dapat dimulai
dari pemain kiri atau pemain kanan. Ketika salah satu pemain memulai permainan dengan
demikian sebuah tombol (push button) telah ditekan. Apabila LPB (Left Push Button) ditekan
maka permainan dimulai dari pemain kiri dan permainan akan masuk ke state START FROM
LEFT. Di sini LED akan dilihat apabila berada pada paling kiri atau belum berada pada
paling kanan (MAX_A=0) maka nyala LED akan berpindah ke kanan atau di-counting satu
per satu setiap berada pada STATE COUNTING. Setelah nyala LED berpindah ke kanan
oleh STATE COUNTING, maka akan kembali ke STATE START FROM LEFT dan dicek
apakah nyala LED sudah berada pada posisi paling kanan. Hal ini karena pada posisi paling
kanan adalah saat dimana pemain kiri harus memukul bola agar tidak kalah. Oleh sebab itu
pada state HIT? akan dilakukan pengecekan apakah bola terpukul atau tidak dan apabila
berpindah ke state MISS akan pemain kiri akan mendapat penambahan nilai score. Permainan
baru akan dimulai dengan pemukul kanan menekan push button dan permainan akan dimulai
dari kanan. Apabila tidak berpindah ke state MISS atau bola HIT, maka permainan akan
dimulai dari kanan dan dicounting ke kiri kembali.
Setelah diperoleh State Table FSM Ping-pong dapat dilakukan assignment dengan
jumlah Flip-flop terdiri dari 4. Jumlah Flip-flop diperoleh dari 16 kemungkinan state
assignment. 16 kemungkinan ini diperoleh dari jumlah minimum yang dapat di isi dengan 11
state yang ada pada permainan Ping-pong. Kemudian kita akan mencari fungsi dari eksitasi
Y3Y2Y1Y0 yang mengisi keempat flip-flop yang ada. Karena kerumitan akibat banyaknya
state yang ada, seperti jumlah state ada 11 dan input ada 5 maka untuk mempermudah
optimasi dilakukan pengoptimalan dengan menggunakan sebuah program, yaitu Logic
Friday. Logic Friday adalah freeware untuk pelajar, hobbyists, dan engineer yang bekerja
pada sirkuit logika digital yang menggunakan paket IC standard. Dengan Logic Friday dapat
dilakukan pemasukan fungsi logika seperti truth table, persamaan, atau diagram gate.
Pemasukan fungsi dapat sampai 16 input dan 16 output. Juga, dengan Logic Friday dapat
juga dilakukan minimisasi fungsi.
Gambar 2.1-2. Penggunaan Program Logic Friday
Dari program Logic Friday tersebut dapat diperoleh fungsi eksitasi keempat Flip-flop pada
rancangan FSM ping-pong. Keempat fungsi eksitasi tersebut adalah :
Dengan : A = Y3 E = LPB
B = Y2 F = RPB
C = Y1 G = MAX_A
D = Y0 G = MAX_A
I = HIT
Dengan demikian telah diperoleh sebuah FSM Controller untuk menghasilkan permainan
game ping-pong. Tahap selanjutnya adalah merancang bagaimana reset bekerja.
Gambar 2.1-3. FSM yang merepresentasikan guna tombol reset pada permainan
Dari gambar FSM diatas dapat dihasilkan eksitasi sebuah Flip-Flop, dimana hanya terdapat
dua buah state sehingga hanya dibutuhkan 1 flip-flop. Eksitasi flip-flop tombol reset ini
adalah :
Gambar 2.1-4. K-map dari eksitasi Y0 dan output Z pada FSM reset.
Y0 = reset’;
Output Z = y0’;
Hasil eksitasi dari reset nanti akan mempengaruhi perpindahan state pada FSM ping-pong
sebelumnya. Oleh karena itu, pada implementasinya hasil eksitasi reset akan di AND dengan
hasil eksitasi FSM ping-pong agar apabila reset ditekan maka hasil eksitasi FSM ping-pong
akan kembali ke state asal (STATE WAIT) dengan nilai eksitasi Y3Y2Y1Y0 = 0000.
Setelah itu untuk menyederhanakan lagi, pada setiap posisi pada kedua sumbu dilakukan
assignment nilai. Nilai assignment tersebut bernilai minimal agar kita hanya menggunakan
dua buah digit untuk sumbu vertikal dan tiga buah digit untuk sumbu horizontal.
Dari assignment nilai tersebut dapat dimasukkan ke decoder agar menghasilkan output satu
buah nyala saja baik pada sumbu horizontal maupun vertikal.
Dari gambar dapat disimpulkan bahwa rangkaian Hit Checker adalah rangkaian
Kombinasional yang menginput posisi bola dan penekanan Push Button.
Gambar 2.4-1. Push button yang akan menghasilkan arah bola bergerak
Push button juga akan menghasilkan sebuah sinyal ‘1’ diakhir penekanan yang panjangnya
sebuah clock menandakan push button ditekan. Push button tidak bisa ditahan ditekan terus
menerus karena hanya akan menghasilkan output diakhir penekanan.
Dari penjelasan sebelumnya dapat disimpulkan bahwa rangkaian ini akan menggunakan
counter agar penghitungan score dapat dilakukan. Penambahan nilai setiap kali pemain
memenangkan sebuah ronde permainan akan dihitung oleh counter. Dari counter tersebut
akan dioutput sebuah nilai biner ke 7-segment akan tetapi perlu ditambah sebuah decoder ke
7-segment.
BAB III
IMPLENTASI SISTEM
Output rangkaian terdiri dari B0, B1, A0, A1, A2, MAX_A, MIN_A, N_EN_B, N_EN_A,
UP_SCORE_A, UP_SCORE_B, LEFT_ON, RIGHT_ON, dan reset_led. Penjelasan dari
output tersebut adalah :
B0 dan B1 adalah output LED sumbu vertikal yang akan diinput ke dalam decoder
untuk dikeluarkan pada 8 x 4 LED yang merepresentasikan nyala bola.
A0, A1, dan A2 adalah output LED sumbu horizontal yang akan diinput ke dalam
decoder untuk dikeluarkan pada 8 x 4 LED yang merepresentasikan nyala bola.
MAX_A adalah output dimana apabila nilai A0, A1, dan A2 sudah maksimal yaitu
bernilai ‘111’, maka MAX_A bernilai ‘1’. Hal ini menunjukkan juga bahwa bola
berada pada posisi paling kanan dan siap dipukul oleh pemain kanan.
MIN_A adalah output bernilai ‘1’ apabila nilai A0, A1, dan A2 minimal yaitu bernilai
‘000’. Hal ini juga menunjukan bahwa bla berada pada posisi paling kiri dan siap
dipukul oleh pemain kiri.
N_EN_B adalah Enable nyala sumbu vertikal yang bersifat Low-Active. Hal ini
diperlukan karena pada permainan baru dimulai (STATE WAIT), maka lampu LED
tidak ada yang menyala satupun.
N_EN_A adalah Enable nyala sumbu horizontal yang bersifat Low-Active. Hal ini
diperlukan karena pada permainan baru dimulai (STATE WAIT), maka lampu LED
tidak ada yang menyala satupun.
UP_SCORE_A adalah output untuk meningkatkan nilai score pada pemain A.
Dengan memberikan rising edge output pada UP_SCORE_A maka score pemain A
akan bertambah 1 poin secara bit.
UP_SCORE_B adalah output untuk meningkatkan nilai score pada pemain B. Dengan
memberikan rising edge output pada UP_SCORE_B maka score pemain B akan
bertambah 1 poin secara bit.
LEFT_ON adalah menandakan bahwa ketika bola bergerak diagonal dan telah
mencapai posisi paling bawah, maka LEFT_ON akan bernilai ‘1’ yang memandakan
bahwa bola berpindah dari diagonal kanan ke diagonal kiri.
RIGHT_ON adalah menandakan bahwa ketika bola bergerak diagonal dan telah
mencapai posisi paling atas, maka RIGHT_ON akan bernilai ‘1’ yang menandakan
reset_led adalah output yang akan mereset nilai pada score kedua pemain. Reset_led
akan bernilai ‘1’ apabila tombol RESET ditekan atau salah satu pemain telah
mencapai nilai maksimum (nilai maksimum pemain adalah 9 pada 7-segement).
Input rangkaian terdiri dari LPB3, LPB2, LPB1, LPB0, RPB1, RPB2, RPB3, LAST_ON_L,
LAST_ON_R, HIT, score_max_A, score_max_B, RESET, dan CLK. Penjelasan dari input
tersebut adalah :
LPB3, LPB2, LPB1, dan LPB0 adalah input push button dengan posisi LPB3 berada
pada posisi paling atas dan LPB0 berada paling bawah.
RPB3, RPB2, RPB1, dan RPB0 adalah input push button dengan posisi RPB3 berada
pada posisi paling atas dan RPB0 berada paling bawah.
LAST_ON_L adalah input yang menunjukan bahwa bola bergerak diagonal ke kanan.
LAST_ON_R adalah input yang menunjukan bahwa bola bergerak diagonal ke kiri.
HIT adalah input yang menunjukan bahwa bola terpukul.
Score_max_A adalah input yang menunjukan bahwa score pemain A telah mencapai
maksimum (bernilai digit 9).
Score_max_B adalah input yang menunjukan bahwa score pemain B telah mencapai
maksimum (bernilai digit 9).
RESET adalah input yang mereset permainan ping-pong.
CLK adalah input clock dari rangkaian synchronous.
Dengan demikian hasil rangkaian FSM Ping-Pong beserta Outputnya adalah sebagai berikut.
Gambar diatas menunjukkan bahwa terdapat 4 buah Flip-Flop untuk FSM Ping-Pong da
terdapat sebuah Flip-Flop untuk FSM reset. Dari output reset akan di AND dengan eksitasi
FSM Ping-Pong. Output FSM Ping-Pong juga cukup banyak seperti pada gambar diatas.
Setelah rangkaian dibentuk, maka rangkaian FSM Ping-Pong akan disimulasi seperti pada
gambar berikut.
Setelah diperoleh nilai kedua sumbu yaitu sumbu vertikal (B0 dan B1) dan sumbu horizontal
(A2, A1, dan A0), maka akan di output pada led dengan sebuah decoder dan gate AND antara
kedua sumbu. Gambar symbol rangkaiannya adalah sebagai berikut.
Dari gambar dapat disimpulkan bahwa decoder bekerja dengan mengoutput dari 3 digit pada
sumbu horizontal menjadi 7 digit dengan contoh : A2A1A0 = ‘101’ dihasilkan output
76543210 = ‘00000100’, atau A2A1A0 = ‘011’ dihasilkan output 76543210 = ‘00010000’.
Begitu pula pada sumbu vertikal, decoder bekerja mengoutput dari 2 digit menjadi 4 digit,
dengan contoh : B1B0 = ‘10’ dihasilkan output ABCD = ‘0100’. Dan terakhir pada,
N_EN_A=’1’ dapat dilihat bahwa enable bekerja low active dan semua output menghasilkan
‘0’ atau ground.
Isi gate AND yang menghubungkan sumbu horizontal dan vertikal adalah sebagai berikut.
Gambar 3.2-3. Sirkuit gate AND yang menghubungkan sumbu vertikal dan horizontal
Barulah setelah sumbu vertikal dan horizontal di AND akan menghasilkan ke-32 output yang
merepresentasikan bola pada permainan Ping-Pong.
Dari gambar dapat dilihat bahwa output bekerja sesuai dengan Gambar 2.2-2 sebelumnya,
yaitu LED menyala oleh kedua sumbu. Contoh reponse menunjukan bahwa pada saat A=’1’
dan 4=’1’ maka A4 = ‘1’.
Dari gambar dapat dilihat input rangkaian adalah tombol push button dan posisi bola. Dari
input tersebut diinginkan output seperti tabel berikut.
Dapat dilihat bahwa response rangkaian akan mengecek posisi bola dan penekanan tombol,
seperti pada gambar bahwa posisi bola pada B1B0 = ‘01’ dan MIN_A = ‘1’ yaitu bola berada
pada posisi paling kiri dan berada pada kedua dari atas, dan dihasilkan HIT = ‘1’. Begitu pula
pada saat bole berada pada paling kanan yaitu MAX_A = ‘1’ dan posisi bola di ketiga dari
atas, pada saat RPB = ‘1’ ditekan (bernilai ‘1’) dapat dilihat HIT = ‘1’.
Sirkuit terdapat output LAST_ON_L dan LAST_ON_R yang berfungsi menunjukan output
bergerak diagonal ke kiri atau ke kanan. Pada gambar terdapat symbol randomizer yang
isinya adalah sebagai berikut.
Gambar 3.4-3. Sirkuit Rangkaian Randomizer
Pada gambar juga terdapat sequencer. Fungsi sequencer adalah agar tombol tidak dapat
ditekan secara terus menerus. Dan akan menghasilkan output ‘1’ selama ‘1’ clock pada saat
nilai seq = ‘1’. FSM dari rangkaian ini adalah sebagai berikut.
Dapat dilhat bahwa output hanya akan keluar selama 1 clock apabila nilai seq= ‘1’ dengan
panjang berapapun.
Terlihat bahwa counter menghitung nilai score dan bertambah setiap kali nilai COUNT_UP =
‘1’. Output dari response rangkaian diatas dapat dilihat pada gambar berikut.
Dari gambar dapat dilihat bahwa bola dimulai dari pemain kiri dan dipukul oleh LPB1 dan
bola bergerak ke diagonal ke kiri dan memantul-mantul sampai ke posisi paling kanan.
Apabila pemain B tidak memukul maka pemain A mendapatkan nilai seperti pada gambar
tersebut yang menunjukan A_7segment bernilai digit 1 (0110000). Untuk lebih jelas melihat
perpindahan bola, dapat diperhatikan gambar berikut.
4.1.Kesimpulan
Rangkaian Ping-pong dapat didesain pada program Altera Quartus II versi 6.0 dengan
perancangan berbagai komponen. Komponen tersebut adalah FSM controller, Push Button,
Hit Checker, Decoder, dan Count Score. Masing-masing komponen mempunyai response
yang sesuai dengan fungsi komponen. Dengan simulasi yang ada dapat disimpulkan bahwa
Permainan Ping-Pong dapat berjalan sesuai dengan aturan permainan, seperti pemain dapat
memukul bola dan apabila miss memukul maka pemain lawan akan mendapatkan poin.
4.2.Saran
Karena keterbatasan alat, sehingga perancangan rangkaian permainan Ping-pong hanya
sebatas simulasi saja. Program Altera Quartu II versi 6.0 tidak hanya dapat mensimulasikan
sebuah sirkuit namun dapat juga menjalankannya pada FPGA. Apabila terdapat FPGA
dengan output 32 buah, rangkaian permainan Ping-pong ini dapat saja langsung diujicobakan.