judul percobaanlabdasar.ee.itb.ac.id/lab/el2102 - sistem digital/2012... · web viewpada percobaan...

6
MODUL 6 Proyek Perancangan Rangkaian Digital Muhammad Surya Nigraha (13211055) Hadi Prastya Utama (13211056) Asisten: Nirmala Twinta V (13209031) Tanggal Percobaan: 5/12/2012 EL2195-Praktikum Sistem Digital Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Di percobaan ini, praktikan berhasil merancang sebuah FSM dengan VHDL pada Quartus 9.0. FSM ini sama dengan FSM pada laporan sebelumnya. Pada VGA akan muncul tampilan sebuah kotak dengan 4 balok warna disisinya. Warna kotak akan berubah ketika bersentuhan dengan kotak warna tersebut. Pergerakan kotak sendiri dikendalikan oleh 4 buah pushbutton yang masing-masing menggerakkan kotak ke masing-masing arah. Kata kunci : FSM, VHDL, proyek. 1. PENDAHULUAN Rangkaian digital telah menjadi bagian dari kehidupan manusia. Di dalam peralatan elektronik manapun tidak dapat terlepas dari rangkaian digital. Salah satu tipe rangkaian digital yang menarik Untuk dibahas adalah rangkaian digital sekuensial. Berbeda dengan rangkaian kombinasional, rangkaian digital memiliki memori yang mengingat statenya, sehingga state setelahnya tidak hanya dipengaruhi oleh input tetapi oleh state saat itu dari rangkaian itu. Yang menarik dari rangkaian sekuensial, kita bias merancang sebuah rangkaian yang interaktif, dimana rangkaian tersebut mempunyai interface dengan pengguna semacam permainan. Pada proyek perancangan rangkaian digital ini, praktikan membuat rangkaian digital yang menampilkan sebuah kotak berukuran 50x50 pixel di layar. Kotak ini bisa digerakkan dengan keempat pushbutton. Ketika kotak menyentuh sisi layar yangberwarna, warna kotak akan berubah sesuai warna sisi layar. Proyek ini menunjukkan ciri dari rangkaian sekuensial dimana terdapat state dan memori pada rangkaian. Selain itu digunakan juga interface-interface pada board FPGA agar lebih interaktif dengan user. Di laporan ini akan dijelaskan laporan akhir dari pengerjaan proyek ini. 2. STUDI PUSTAKA 2.1 Rangkaian Sekuensial Perbedaan mendasar dari rangkaian kombinasional dan rangkaian sekuensial adalah ada tidaknya memori statenya. Keluaran rangkaian sekuensial bergantung pada state dan bergantung pada masukannya (rangkaian mealy) atau hanya bergantung pada stateny (rangkaian Moore). Terdapat beberapa model yang digunakan Untuk membantu merancang rangkaian sekuensial. Salah satunya yang paling banyak digunakan adalah Finite State Machine (FSM). Dinamakan FSM karena jumlah state yang mungkin terbatas dan rangkaian sekuensial bekerja mirip dengan mesin yang beroperasi dengan urutan state. Level abstraksi perancangan FSM pun bertingkat-tingkat. Pada praktikum kali ini disarankan menggunakan level abstraksi behavioral. Pada perancangan level ini, sebelum diimplementasikan menggunakan VHDL, perlu dibuat dahulu state diagram flowchart transisi statenya. Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1

Upload: ledat

Post on 08-Mar-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

MODUL 6 Proyek Perancangan Rangkaian DigitalMuhammad Surya Nigraha (13211055)

Hadi Prastya Utama (13211056)Asisten: Nirmala Twinta V (13209031)

Tanggal Percobaan: 5/12/2012EL2195-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

AbstrakDi percobaan ini, praktikan berhasil merancang sebuah FSM dengan VHDL pada Quartus 9.0. FSM ini sama dengan FSM pada laporan sebelumnya. Pada VGA akan muncul tampilan sebuah kotak dengan 4 balok warna disisinya. Warna kotak akan berubah ketika bersentuhan dengan kotak warna tersebut. Pergerakan kotak sendiri dikendalikan oleh 4 buah pushbutton yang masing-masing menggerakkan kotak ke masing-masing arah.Kata kunci : FSM, VHDL, proyek.1. PENDAHULUAN Rangkaian digital telah menjadi bagian dari kehidupan manusia. Di dalam peralatan elektronik manapun tidak dapat terlepas dari rangkaian digital. Salah satu tipe rangkaian digital yang menarik Untuk dibahas adalah rangkaian digital sekuensial. Berbeda dengan rangkaian kombinasional, rangkaian digital memiliki memori yang mengingat statenya, sehingga state setelahnya tidak hanya dipengaruhi oleh input tetapi oleh state saat itu dari rangkaian itu.Yang menarik dari rangkaian sekuensial, kita bias merancang sebuah rangkaian yang interaktif, dimana rangkaian tersebut mempunyai interface dengan pengguna semacam permainan.Pada proyek perancangan rangkaian digital ini, praktikan membuat rangkaian digital yang menampilkan sebuah kotak berukuran 50x50 pixel di layar. Kotak ini bisa digerakkan dengan keempat pushbutton. Ketika kotak menyentuh sisi layar yangberwarna, warna kotak akan berubah sesuai warna sisi layar. Proyek ini menunjukkan ciri dari rangkaian sekuensial dimana terdapat state dan memori pada rangkaian. Selain itu digunakan juga interface-interface pada board FPGA agar lebih interaktif dengan user.Di laporan ini akan dijelaskan laporan akhir dari pengerjaan proyek ini.

2. STUDI PUSTAKA

2.1 Rangkaian SekuensialPerbedaan mendasar dari rangkaian kombinasional dan rangkaian sekuensial adalah ada tidaknya memori statenya. Keluaran rangkaian sekuensial bergantung pada state dan bergantung pada masukannya (rangkaian mealy) atau hanya bergantung pada stateny (rangkaian Moore).Terdapat beberapa model yang digunakan Untuk membantu merancang rangkaian sekuensial. Salah satunya yang paling banyak digunakan adalah Finite State Machine (FSM). Dinamakan FSM karena jumlah state yang mungkin terbatas dan rangkaian sekuensial bekerja mirip dengan mesin yang beroperasi dengan urutan state.Level abstraksi perancangan FSM pun bertingkat-tingkat. Pada praktikum kali ini disarankan menggunakan level abstraksi behavioral. Pada perancangan level ini, sebelum diimplementasikan menggunakan VHDL, perlu dibuat dahulu state diagram flowchart transisi statenya.2.2 Video Graphic ArrayVideo Graphics Array (VGA) masih menjadi interface yang popular untuk sebuah tampilan. VGA interface ini masih banyak ditemukan di beberapa device sekarang, misalnya layar LCD dan proyektor. VGA interface ini terdapat juga di board altera yang kita gunakan saat ini. Pada percobaan kali ini tampilan VGA digunakan agar tampilan hasil desain yang kita rancang menjadi lebih menarik, tidak terbatas hanya pada LED atau 7-Segment. Tujuan percobaan kali ini juga adalah memberikan ilustrasi penggunaan interface I/O yang ada pada FPGA, misalnya GPIO, komunikasi serial menggunakan RS232, Audio CODEC, LCD karakter 16x2, dll.Interface ke VGA menggunakan 2 jenis sinyal, yaitu : sinyal warna (Merah, Hijau, dan Biru) dan sinyal sinkron (horizontal dan vertical). Berikut adalah penjelasan beberapa sinyal yang digunakan :

a. Horizontal Sync (TTL level)Sinyal ini akan aktif pada range piksel kolom 0 sampai dengan 639. Sehingga

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB1

kalau sinyal ini tidak aktif, yang terjadi adalah pergantian baris.

b. Vertical Sync (TTL level)Sinyal ini akan aktif pada range piksel baris 0 sampai dengan 479. Sehingga kalau sinyal ini tidak aktif, yang terjadi adalah pergantian layar. Atau kembali ke baris pertama.

c. Sinyal RGB (Analog 3 pin: 0,7 —1 V)Sinyal ini merepresentasikan intensitas untuk masing2 komponen warna merah, hijau, dan biru untuk setiap pixel yang saat itu aktif. Sehingga yang terjadi ketiga sinyal ini berubah-ubah sesuai pixel yang sedang aktif dalam proses scanning (dari kiri ke kanan untuk setiap baris, selanjutnya dari baris paling atas sampai baris paling bawah).

Pada percobaan kali ini kita menggunakan resolusi 640x480 pixel dan menggunakan refresh rate lebih dari 60 Hz. Refresh rate ini digunakan karena pada range kurang dari 30-60 Hz manusia dapat melihat adanya flicker. Selain itu refresh rate ini juga umum digunakan pada monitor LCD. LCD modern memiliki fitur multirate, sehingga kita tidak harus tepat membuat refresh ratenya 60 Hz. Proses scanning berawal dari kiri atas ke kanan lalu ke kiri bawah dan kembali ke kiri atas ketika sudah mencapai pixel terakhir.

Gambar 2.1 Razor Scan pada LCDGambar 2 dan Tabel 1 menunjukkan spesifikasi timing dari sinkronisasi VGA. Sebuah sinyal aktif low menunjukkan akhir dari sebuah sinkronisasi. Misalkan sinyal aktif low untuk horiz sync menandakan akhir dari scanning satu baris dan awal untuk baris berikutnya. Data RGB harus didrive 0 untuk beberapa waktu tertentu thfp dan tvfp.

Gambar 2.2 Timing Signal Untuk VGA 64x480 pixel

Gambar 2.3 Nilai-nilai parameter Untuk Gambar 2.1

Gambar 3 menunjukkan blok diagram dari FPGA hingga ke LCD monitor. Chip DAC mengubah sinyal digital ke analog. Dalam kasus ini, data RGB digital diubah ke data RGB analog, begitu juga untuk sinyal sinkronisasinya. Sedangkan gambar 4 menunjukkan skematik dari display VGA yang ada pada board DE2. Untuk board lainnya dapat dibaca di datasheet masing-masing board. Board DE2 menyediakan 16-pin konektor untuk output VGA dan Analog Devices ADV7123 10-bit high speed video DAC. DAC ini mendapatkan sinyal sinkronisasi dari FPGA.

Gambar 2.4 Diagram blok VGA display

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB2

Gambar 2.5 Skematik VGA Display

3. METODOLOGI

3.1 ALAT-ALAT YANG DIGUNAKAN

a. Komputer yang telah terinstall Quartus 9.0

b. Monitor LCDc. FPGA development board beserta

kelengkapannya yang meliputi1. Board FPGA DE12. Catu daya kabel dan konektor

tambahan3. Kabel downloader USB-blaster

3.2 PERANCANGAN SISTEM DIGITAL

4. HASIL DAN ANALISIS

4.1 PERANCANGAN SISTEM DIGITAL

Pada percobaan ini, telah dilakukan perancangan sistem dan pembuatan FSM dari rangkaian digital.

Gambar 4.1 State diagram dari proyek perncangan

Pada diagram terlihat bahwa terdapat 4 state dimana tiap state merupakan kondisi warna dari kotak. Warna kotak akan berubah ketika menyentuh sisi layar yang ditandai dengan variabel A/B/C/D bernilai 1.Pada percobaan terakhir ini, kami telah berhasil merancang VHDL yang mengimplementasikan FSM diatas. Akan tetapi, target-target kami seperti menampilkan 7 segmen yang berubah sesuai nomor sisi yang ditabraknya belum berhasil.Berikut kode VHDL pada color_rom.vhd yang digunakan (dam bertanggung jawab besar) sebagai implementasi FSM tersebut. Praktikan akan mencoba menjelaskan kode VHDL yang ada.CONSTANT bl_atas : INTEGER := 30;CONSTANT bl_bawah : INTEGER := 450;CONSTANT bl_kiri : INTEGER := 30;CONSTANT bl_kanan : INTEGER := 610;Merupakan konstanta untuk batas-batas penggambaran balok warna disisi-sisi layar.signal catas : integer := 33; signal ckiri : integer := 33;signal cbawah : integer := 83; signal ckanan : integer := 83;Variable yang merupakan batas-batas penggambaran kotak kecil yang bergerak. Nilai ini dapat berubah-ubah bila pushbutton ditekan.SIGNAL kk_atas, kk_bawah, kk_kiri, kk_kanan : STD_LOGIC; --penandawarnaVariable yang berfungsi sebagai penanda warna untuk masing-masing sisi.constant batasatas : integer :=31;constant batasbawah : integer :=449;constant bataskiri : integer :=31;constant bataskanan: integer :=609;Konstanta untuk batas-batas pergerakan kotak kecil di layar.Selanjutnya kode-kode dibawah ini akan diproses dalam sebuah proses.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB3

Tentukanlah dahulu proyek yang ingin dibuat.

Buatlah diagram statenya

Implementasikan lah diagram tersebut dengan FPGA

Compile dan download ke dalam FPGA kode VHDL yang telah

dibuat

Sempurnakan proyek anda dengan mencari bug pada

program

IF ((i_pixel_column>=bl_kiri) AND (i_pixel_column<=bl_kanan) AND (i_pixel_row>=0 ) AND (i_pixel_row<=bl_atas )) THEN kk_atas<= '1'; ELSE kk_atas<= '0'; END IF;

IF ((i_pixel_column>=bl_kanan) AND (i_pixel_column<=640) AND (i_pixel_row>=bl_atas ) AND (i_pixel_row<=bl_bawah )) THEN kk_kanan<= '1'; ELSE kk_kanan<= '0'; END IF;

IF ((i_pixel_column>=bl_kiri) AND (i_pixel_column<=bl_kanan) AND (i_pixel_row>=bl_bawah ) AND (i_pixel_row<=480 )) THEN kk_bawah<= '1'; ELSE kk_bawah<= '0'; END IF; IF ((i_pixel_column>=0) AND (i_pixel_column<=bl_kiri) AND (i_pixel_row>=bl_atas ) AND (i_pixel_row<=bl_bawah )) THEN kk_kiri<= '1'; ELSE kk_kiri<= '0'; END IF;Kode diatas berfungsi untuk menggambar kotak-kotak warna pada sisi layar dengan warna merah diatas, putih dikanan, hijau dibawah dan biru dikiri.case posisi is when A => IF ((i_pixel_column>=ckiri) AND (i_pixel_column<=ckanan) AND (i_pixel_row>=catas ) AND (i_pixel_row<=cbawah )) THEN kk_atas <= '1'; if ((catas > 31) and (catas < 40)) THEN if ((ckiri > 31) and (ckiri < 40)) THEN posisi <= E; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; else posisi <= A; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; end if; end if; if ((ckanan > 600) and (ckanan < 609)) THEN if ((catas > 31) and (catas < 40)) THEN posisi <= F; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0';

kuad3 <= '0'; kuad4 <= '0'; else posisi <= B; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; end if; end if; if ((cbawah > 440) and (cbawah < 449)) THEN if ((ckanan > 600) and (ckanan < 609)) THEN posisi <= G; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; else posisi <= C; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; end if; end if; if ((ckiri > 31) and (ckiri < 40)) THEN if ((cbawah > 440) and (cbawah < 449)) THEN posisi <= H; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; else posisi <= D; kk_atas <= '0'; kk_bawah <= '0'; kk_kanan <= '0'; kk_kiri <= '0'; kuad1 <= '0'; kuad2 <= '0'; kuad3 <= '0'; kuad4 <= '0'; end if; end if; end if;

Kode diatas merupakan satu dari sekian banyak state yang ada. Secara garis besar fungsi state yang ada hampis semuanya sama agar trigger warnanya juga sama untuk tiap state. Pertama-tama ada fungsi case yang memilih untuk menjalankan posisi yang mana dulu. Disini posisi menyatakan warna dari kotak. State dari posisi akan berubah tergantung dari posisi pixel kotak itu sendiri

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB4

di LCD. Dari posisi itulah kita dapat menentukan apakah kotak telah menyentuh sisi warna pada layar. Ketika posisi kotak ada pada pixel tertentu, state dari kotak akan berubah dan akan berubah kembali ketika kotak menyentuh sisi warna lain. Keseluruhannya ada 4 state, yaitu atas, bawah, kiri, kanan dan keempat kuadran. Akan tetapi hanya atas, bawah, kiri dan kanan yang berfungsi. IF (kk_atas = '1' ) THEN o_red<= X"11"; o_green<= X"00"; o_blue<= X"00"; ELSIF (kk_bawah= '1' ) THEN o_red<= X"00"; o_green<= X"11"; o_blue<= X"00"; ELSIF (kk_kiri = '1' ) THEN o_red<= X"00"; o_green<= X"00"; o_blue<= X"11"; ELSIF (kk_kanan= '1' ) THEN o_red<= X"11"; o_green<= X"11"; o_blue<= X"11"; ELSE o_red<= X"00"; o_green<= X"00"; o_blue<= X"00"; END IF;Selanjutnya adalah pemilihan penggambaran warna. Masing-masing variable menyatakan warna dan disinilah pendeklarasian dan pewarnaan dilakukan. Misalnya apabila variable kk_atas bernilai 1, maka dilakukan penggambaran warna merah untuk pixel tersebut.if (divclock'EVENT and divclock='1') then if (atas='0' and catas > batasatas) then catas<=catas-2; cbawah<=cbawah-2; elsif (bawah='0' and cbawah < batasbawah) then catas<=catas+2; cbawah<=cbawah+2; elsif (kanan='0' and ckanan < bataskanan) then ckanan<=ckanan+2; ckiri<=ckiri+2; elsif (kiri='0' and ckiri > bataskiri) then ckanan<=ckanan-2; ckiri<=ckiri-2; end if;

end if;Kode terakhir berfungsi untuk mengubah posisi dari kotak. Posisi kotak dapat dibuat dengan merubah batas penggambarannya. Perubahan batas penggambaran ini ditrigger oleh pushbutton yang ada. Karena pushbutton merupakan active low, maka nilai logikanya adalah 0.Pada pembuatan proyek ini, target utama kami tercapai, yakni membuat kotak yang digerakkan oleh keempat pushbutton dan akan berubah warna ketka menyentuh sisi warna. Akan tetapi target lain seperti membuat 7segmen yang berubah ketika kotak menyentuh sisi tertentu dan membuat sisi-sisi lainnya belum berhasil.Sebenarnya ketika praktikum juga ingin dibuat kotak kedua yang mengejar kotak pertama. Akan tetapi gagal juga.

5. KESIMPULAN

Pada percobaan terakhir ini, target utama kami dalam proyek ini telah berhasil akan tetapi beberapa target tambahan lainnya belumlah berhasil. Walaupun ide dari proyek ini terlihat sederhana, akan tetapi cukup sukar dalam mengimplementasikannya ke FPGA. Kedepannya, mungkin proyek ini dapat dikembangkan agar lebih interaktif dan menarik.

DAFTAR PUSTAKA

[1] Lab Dasar Teknik Elektro, Petunjuk Praktikum EL2195 Sistem Digital, Penerbit ITB, Bandung, 2012.

[2] Stephen Brown dan Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design 3rd Edition, McGraw Hill, New York, 2009.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB5