Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1
MODUL 6 PROYEK PERANCANGAN RANGKAIAN DIGITAL:
STOPWATCH DIGITAL
Muhammad Wildan Gifari (13211061) Ferry Hermawan (13211062)
Asisten: Nirmala Twinta Tanggal Percobaan: 5/12/2012
EL2195-Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
FPGA adalah suatu board versatile yang bisa digunakan
untuk beragam keperluan. Input dan output yang bisa
di-connect dengan berbagai macam device memungkinkan
beragam kegunaan. Pada percobaan kali ini, kami akan
menggunakan board FPGA untuk mengimplementasikan
suatu stopwatch digital menggunakan kode VHDL. Input
yang digunakan adalah toggle switch, dan output
memanfaatkan device layar LCD.
Kata kunci: stopwatch digital
1. P
ENDAHULUANPada percobaan kali ini kami mencoba membuat suatu stopwatch digital untuk diimplementasikan di FPGA. Secar garis besar tujuan percobaan ini yaitu:
1) Dapat menspesifikasikan suatu sistem digital
2) Bisa mendesain suatu rangkaian digital 3) Mampu membuat jalur data dan kendali
untuk suatu sistem digital
4) Mampu membuat hierarki dan integrasi suatu sistem digital
5) Bisa melakukan testing dan debugging pada desain rangkaian digital
6) Mampu mengimplementasikan desain pada beragam devais
7) Menganalisa sistem yang telah dibangun
2. S
TUDIP
USTAKASecara singkat akan dijelaskan tentang stopwatch digital.
2.1
S
TOPWATCHD
IGITALStopwatch adalah suatu alat untuk mengukur elapsed time dari saat tombol start ditekan sampai tombol pause ditekan. Stopwatch biasanya
digunakan pada perlombaan, untuk mengukur waktu, dan berbagai keperluan lainnya.
Suatu stopwatch digital bisa juga dilihat dari sudut pandang suatu rangkaian digital. Apabila dimodelkan dengan Finite State Machine(FSM) tipe Moore, maka stopwatch bisa dianggap terdiri dari tiga state. Yang pertama adalah initial, outputnya berupa angka 00:00. Yang kedua adalah state counting, yaitu ketika tombol start ditekan. Outputnya berupa angka perhitungan yang bertambah setiap detiknya. Yang ketiga adalah state pause, yaitu ketika tombol stop ditekan, outputnya adalah angka terakhir yang terhitung.
3. M
ETODOLOGIKomponen dan alat yang digunakan pada praktikum kali ini adalah:
- Komputer yang telah terinstall program Quartus II dan Modelsim
- Altera development board DE1-70 beserta kelengkapannya termasuk modul VGA - Layar LCD
Sedangkan metodologi untuk percobaan kali ini akan dijelaskan pada bagan berikut:
3.1
M
ERANCANGS
ISTEMT
ERINTEGRASIGambar 3-1 Diagram percobaan 1 Membuat keseluruhan skema rangkaian Membagi modul program Membuat jalur data dan kendali Membagi pekerjaan dalam kelompok
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2
3.2
M
EMBUATB
LOKP
ROGRAMGambar 3-2 Diagram percobaan 2
3.3
M
EMBUATH
IERARKI SISTEMGambar 3-3 Diagram percobaan 3
3.4
I
MPLEMENTASIP
ADAD
EVAISGambar 3-3 Diagram percobaan 3
4. H
ASIL DANA
NALISIS4.1
M
ERANCANGS
ISTEMT
ERINTEGRASI Di awal percobaan, hal yang harus dilakukan adalah melihat gambaran besar (grand design) dari sistem yang akan kita bangun. Kita spesifikasi dulu apa saja yang kita mau dari sistem kita berikut batasan-batasannya. Kemudian kita menstrategikan bagaimana kita akan merealisasikan desain tersebut.Spesifikasi dari stopwatch yang akan kami bangun yaitu memiliki dua tombol yaitu start/reset dan stop. Proses yang dilakukan harus mampu menghitung waktu satu detik. Outputnya berupa seven segment, namun seven segment ini terdapat di layar LCD.
Berarti sistem yang kami bangun harus memiliki blok: 1) stopwatch, 2) clock, 3) decoder integer to seven segment, 4) penampil seven segment di LCD. Jalur datanya yaitu: clock membuat suatu clock senilai satu detik di stopwatch. Stopwatch menerima input dari user berupa toggle switch. Output dari stopwatch berupa integer. Integer masuk ke decoder untuk dihasilkan sinyal segment mana saja yang menyala, penampil mengaktifkan sinyal tersebut di layar LCD.
Kemudian dilakukan pembagian kerja dalam kelompok kami. Modul stopwatch, clock, dan decoder dikerjakan oleh Muhammad Wildan Gifari. Sedangkan modul penampil dikerjakan oleh Ferry Hermawan. Untuk integrasi sistem dikerjakan oleh M Wildan Gifari. Tahap implementasi dilakukan oleh Ferry Hermawan.
4.2
M
EMBUATB
LOKP
ROGRAMBlok program yang akan dibuat ada 4, yaitu: 1) clockdiv ( clock), 2) stopwatch, 3) angka to seven (decoder), dan 4) display(penampil).
4.2.1 C
LOCKDIVClockdiv menerima input dari clock FPGA( frekuensi 50 MHz). Sedangkan outputnya adalah clock pada stopwatch ( periode 1 sekon). Proses di dalam adalah pembagian clocknya. Simulasi sukses hasilnya sesuai dengan yang diharapkan. Kode VHDL dilampirkan pada laporan. Berikut bloknya:
Menspesifikasi blok program Membuat state diagram, I/O, signal Membuat kode VHDL Compile dan SImulasi Testing dan debugging Membuat lapisan-lapisan hierarki Mengassign portmap yang sesuai Compile dan simulasi Testing dan debugging Mengassign pin yang sesuai Download program ke FPGA Amati hasil pada devais Analisis 4 5 C 1 Clockdiv Clock Divout
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3 Gambar 4-1 Blok Clockdiv
4.2.2 S
TOPWATCHStopwatch adalah blok program yang mengandung Finite State Machine. Inputnya adalah dua buah toggle switch. Yang satu berupa start/reset dan yang satunya adalah tombol stop. Stopwatch juga mempunyai input clock. Outputnya berupa suatu integer. Kode VHDL terlampir di attachment.
Berikut FSMnya:
Gambar 4-2 FSM untuk stopwatch Berikut blok diagramnya:
Gambar 4-3 Blok Stopwatch
4.2.3 A
NGKA_
TO_S
EVENSeven segment membutuhkan tujuh buah sinyal untuk memerintah segment mana saja yang menyala. Maka angka berupa integer harus di-decode menjadi sinyal tujuh bit. Dalam kasus stopwatch ini, batasannya yaitu hanya bisa menghitung sampai detik 99. Berarti dibutuhkan dua seven segment. Angka yang berupa integer dipecah dulu secara aritmatik menjadi satuan dan puluhan. Kemudian angka satuan dan puluhan inilah yang di-decode menjadi input tujuh bit. Kode VHDL terlampir di attachment.
Berikut alur pikirnya:
Gambar 4-4 Alur pikir blok angka_to_seven Berikut Blok diagramnya:
Gambar 4-5 Blok Angka_to_seven
4.2.4 S
EVEN_
DISPLAYOutput dari angka_to_seven berupa sinyal 7 bit. Apabila dihubungkan dengan 7 segment maka akan langsung bisa diamati segment mana saja yang menyala. Namun spesifikasi desain membutuhkan tampilan ke layar LCD. Maka kita harus membuat suatu blok program untuk mengolah tampilan tersebut menjadi warna di blok-blok pada layar LCD. Blok seven_display inilah yang mengimplementasikan tampilan layar pada LCD tersebut. Kode VHDL terlampir di attachment.
Berikut blok diagramnya:
Gambar 4-6 Blok Display
4.3
M
EMBUATH
IERARKI SISTEMBlok-blok program tadi harus dibuat suatu hierarki agar dapat berinteraksi satu sama lain. Hierarki dibuat dengan menggabungkan beberapa modul, menghubungkan pin-pinnya, dan bisa juga dengan menggabungkan modul yang sudah digabung dengan modul lain. Pada desain kami , kami memanfaatkan framework yang sudah tersedia di labdas yaitu set display DE1.
0 1 3 8 P 1 Stopwatch Start/Reset
Stop Angka : integer
Clockin 0 Satuan Puluhan D 1 Angka_to_Hex Angka : integer
Hexkiri: sinyal 7 bit
Hexkanan:sinyal 7 bit 0 Satuan Puluhan 7 E 1 Display
Hex kiri di layar
Hexkiri: sinyal 7 bit
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4 Dalam hierarki desain kami, ada 3 lapisan.
Lapisan pertama kami menggabungkan modul clockdiv, stopwatch, dan angka_to_seven menjadi satu modul yang bernama stopwatch_to_hex. Kemudian di sebagai modul seven_display kami memanfaatkan modul color_rom_vhd dengan menambahkan input sinyal segment 7-bit. Di lapisan paling atas yaitu display_vhd barulah digabungkan stopwatch_to_hex, seven_display, dan modul VGA.
Apabila dibuat skemanya:
Gambar 4-7 Blok desain stopwatch_to_hex
Gambar 4-8 Hierarki puncak desain rangkaian stopwatch digital
Pada saat penggabungan, perlu ditambah port yang sesuai pada modul tertentu untuk menyesuaikan port dari modul lain yang berhubungan. Contohnya pada jalur data: modul stopwatch_to_hex mengeluarkan output hex 7 bit, maka modul seven_display harus ditambah port input hex 7 bit untuk “menampung” output tersebut. Pada kasus output berupa buffer, untuk dimasukkan ke input modul lain, harus ada sinyal perantara, karena port input tidak mau menerima harga yang berubah-ubah. Contohnya pada stopwatch_to_hex: output dari clockdiv ditampung dulu di suatu sinyal sebelum dimasukkan ke clockin dari modul stopwatch. Kemudian port-port lain juga dihubungkan
melalui command portmap. Lengkapnya portmap dapat dilihat di lampiran kode VHDL pada attachment.
Compile dan simulasi untuk modul-modul gabungan belum dilakukan pada saat percobaan.
4.4
I
MPLEMENTASIP
ADAD
EVAISModul clockdiv menggunakan modul yang tersedia dari labdasar yang sudah digunakan di percobaan modul sebelumnya. Clockdiv berfungsi dengan baik membagi clock FPGA menjadi satu sekon.
Simulasi modul stopwatch pada Modelsim memberikan hasil sesuai dengan yang diharapkan. Transis state maupun output sesuai dengan spesifikasi desain. Berikut hasil simulasinya:
Gambar 4-9 Hasil simulasi modul stopwatch di Modelsim Hasil simulasi modul decoder angka_to_seven sudah memberikan hasil yang memuaskan. Modul aritmatik untuk men-generate satuan dan puluhan, juga modul decoder dalam angka_to_seven berhasil mengeluarkan output 7-bit yang sesuai. Berikut hasil simulasinya dengan modelsim:
Gambar 4-9 Hasil simulasi modul angka_to_seven Implementasi modul display pada layar sudah memberikan hasil yang diharapkan, berikut adalah contoh hasilnya :
Angka Gambar pada seven segmen
0 0 1 3 8 P1 Stopwatch Start/Reset 4 5 C1 Clockdiv Clock Divout
Stop Angka : integer
Clockin Satuan Puluhan 7 D1 Angka_to_seven
Hexkiri: sinyal 7 bit
Hexkanan:sinyal 7 bit
Angka : integer
Top1
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5 1 2 3 4 5 6 7 8 9 Double digit
Setelah keseluruhan modul digabungkan menjadi satu, dan dicoba untuk decompile, memberikan hasil yang benar (tidak terdapat error). Tetapi, saat didownload ke dalam FPGA dan program dijalankan, terdapat kesalahan yaitu hasil yang keluar tidak sesuai dengan yang diharapkan. Sebenarnya proses counting sudah bisa berjalan di background, tetapi tidak bisa ditampilkan di layar. Saat program dijalankan, tamilan di layar hanya terdapat dua seven segment berwarna abu saja, berarti tidak ada yang aktif dari tiap segment seven segment tersebut. Tetapi saat tombol stop diaktifkan, tampilan layar menunjukan digit sebelah kanan menghasilkan sebuah angka, tetapi digit sebelah kiri tetap berwarna abu. Saat dicoba kembali dengan menghitung waktu dari tombol start dijalankan sampai tombol stop ditekan menunjukkan angka yang ditampilkan di layar adalah waktu antara start dimulai sampai stop ditekan, namun hanya digit kanan saja yang ditampilkan. Ini menunjukkan bahwa proses counter kami sudah berjalan dengan benar, hanya saja ada masalah pada bagian display. Kami sudah mencoba untuk menanyakan hal ini kepada asisten, namun setelah dilakukan berbagai modifikasi tetap saja menunjukkan hasil yang sama. Kami juga mencoba menggunakan clock yang lebih kecil. Hasilnya menunjukkan bahwa tampilan pada digit sebelah kanan ada proses pewarnaan (warnanya tidak abu -abu lagi, tetapi merah muda). Tetapi saat tombol start ditekan,
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6 layar kembali menunjukkan angka 00 (sama
seperti saat tombol start tidak aktif). Saat clock dikembalikan ke nilai semula (50 MHz) tampilan masih saja tetap sama, tetapi untuk proses counting tetap tidak ditampilkan di layar.
5. K
ESIMPULANKelompok kami mencoba mendesain suatu stopwatch digital yang hasil perhitungannya ditampilkan pada seven segment di layar. Cara pembuatannya adalah seperti pada bagian 4 di atas, dimulai dari 1) merancang sistem terintegrasi, 2) membuat blok program yang terdiri dari clockdiv, stopwatch, angka_to_seven, dan seven_display, 3) membuat hierarki system, dan 4) implementasi pada device. Untuk keterangan lebih jelasnya dapat dilihat langsung pada subbab yang terdapat pada bab 4 tersebut..
Berdasarkan percobaan ini, didapatkan hasil yaitu :
-Grand design sistem sudah berhasil dibuat -Dari hasil simulasi, modul stopwatch dan decoder sudah berfungsi dengan baik
-Modul seven_display berhasil diimplementasikan di layar LCD
-Implementasi pada device sudah bisa dilakukan, hanya saja masih terdapat kesalahan pada bagian display
-Fungsi counter sudah berjalan dengan baik
Berdasarkan hasil yang didapat tersebut, program yang kami buat belum memenuhi target yang diinginkan. Sebenarnya fungsi dari program yang kami buat sudah berjalan dengan baik, namun pada bagian display saja yang masih terdapat kesalahan.