Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 1
MODUL 2 PENGENALAN DESAIN MENGGUNAKAN FPGA
Andika Fikrisyah Yasin (18213044) Asisten: Muhamad Hudi Dwi. S / 13211602 Tanggal Percobaan: 06/10/2014 EL2142- Sistem Digital dan Mikroprosessor Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak Pada saat ini, pemodelan rangkaian digital tidak hanya bisa dilakukan secara manual, tetapi dapat didesain juga dengan menggunakan IC dengan bantuan komputer. Salah satu teknik perancangan yang sering dipakai adalah FPGA dengan pendekatan skematik ataupun bahasa VHDL. Pada percobaan ini, kita akan mengimplementasikan rangkaian full-adder dengan target FPGA. Kata kunci: FPGA, skematik, bahasa VHDL, dan full-adder. 1. PENDAHULUAN Untuk mengimplikasikan fungsi gerbang logika pada rangkaian dapat dilakukan dengan setidaknya dua cara, yaitu secara manual (dengan menggunakan rangkaian logika sekuensial seperti yang dilakukan pada praktikum sebelumnya) dan digital. Perancangan digital dapat dilakukan di berbagai macam target, salah satunya adalah FPGA. FPGA (field-programmable gate array) merupakan sebuah komponen eletronika semikonduktror yang memiliki komponen gerbang terprogram(programmable logic) dimana FPGA dapat mengimplementasikan fungsi logika berulang kali. Pada praktikum ini, perancangan rangkaian dibantu dengan menggunakan dua piranti lunak tambahan, yaitu ALTERA QUARTUS II dan ModelSim. Ada setidaknya dua cara untuk melakukan perancangan digital, yaitu dengan menggunakan bahasa VHDL ataupun dengan menggunakan pendekatan skematik. 2. STUDI PUSTAKA 2.1 FPGA (FIELD PROGRAMMABLE GATE ARRAY) FPGA adalah sebuah integrated circuit yang dapat dikonfigurasi dan diprogram berulang kali sesuai kebutuhan. FPGA terdiri dari logika yang dapat diprogram, yang disebut dengan blok logika (logic blocks). Setiap pin masukka dari FPGA memiliki fungsionalitas masing-masing, dimana setiap gerbang logika yang dimiliki oleh FPGA dapat menyimpan baik logika HIGH dan logika LOW dalam komponen logika yang disebut dengan Look-UP Table 2.2 ALTERA DE1 DEVELOPMENT KIT Pada praktikum ini, salah satu board yang digunakan adalah ALTERA DE1 Develompent Kit.
Gambar 1. IC ALTERA DE1 Develpment Kit Pin-pin yang akan digunakan pada praktikum kali ini terdapat pada tabel berikut: Tabel 1. Referensi Kaki DE1 Nama PIN I/O Kaki yang digunakan DE1 A PIN_L22 B PIN_L21 C PIN_M22 A_Out PIN_J2 B_Out PIN_E2 C_Out PIN_H1 CARRY PIN_D1 SUM PIN_E1 2.3 FULL ADDER Full adder menerima 3 buah masukkan, biasanya disebut dengan A,B, dan Cin . Dan mengeluarkan 2 buah keluaran, yaitu S dan Cout.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 2
Tabel 2. Kebenaran dari Full Adder Masukkan Keluaran A B C in C out S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Full Adder Memiliki keunggulan bila dibandingkan dengan Half Adder adalah kemampuannya untuk menampung dan menjumlahkan bit CARRY-in (Cin) yang berasal dari CARRY-Out (Cout). Terdapat beberapa jenis rangkaian Full Adder, yaitu Parallel Adder, Look Ahead Adder, dan Carry Adder dimana masing-masing memiliki kelebihan dan kekurangannya. 2.4 BAHASA VHDL VHDL (Very-high-speed integrated circuits Hardware Description Language) merupakan bahasa pemrograman perangkatan keras yang digunakan untuk memodifikasi sistem logika pada FPGA ataupun IC. VHDL adalah pengembangan dari bahasa prosedural. Keuntungan menggunakan bahasa VDHL adalah implementasinya yang sederhana dan lebih compact dibandingkan pendekatan skematik. 3. METODOLOGI Pada praktikum kali ini dibagi menjadi delapan percobaan. Perancangan rangkaian digital menggunakan FPGA dapat digambarkan dengan flowchart berikut:
Gambar 2. Flowchart Proses Perancangan Digital Pada percobaan 2A, kita diminta untuk mendesain rangkaian full adder dengan pendekatan skematik. Pada percobaan ini menggunakan piranti lunak ALTERA QUARTUS II. Berikut ini rancangan desain dari percobaan ini: Gambar 3. Skematik yang digunakan pada Percobaan 2A Rangkaian tersebut akan menerima 3 masukkan (A, B, Cin) dan memberikan 2 keluaran, yaitu SUM dan CARRY. Setelah proses silmulasi berjalan lancar, rangkaian tersebut akan diimplementasikan pada IC board FPGA DE1. Pada percobaan 2B, kita akan mendesain full adder menggunakan bahasa VHDL. File yang akan dibuat pada percobaan ini bernama modul2vhdl.vdh yang berisi sebagai berikut:
Gambar 4. Kode VHDL dengan pendekatan bahasa VHDL Kode tersebut kemudian dikompilasi dan setelah berjalan lancar, percobaan tersebut diimplementasikan pada Board FPGA DE1. Pada percobaan 2C, kita akan membuat 4-bit- ripple carry adder yang akan diimplementasikan pada Board FPGA DE1. Berikut in kode VHDL untuk percobaan ini:
Gambar 5. Kode VHDL untuk percobaan 2C
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 3
Pada percobaan 2D, kita akan menggunakan pendekatan skematik. Langkah langkah untuk mensimulasikan percobaan ini sama seperti pada percobaan 2A. Berikut ini rancangan desain untuk percobaan ini:
Gambar 6. Skematik untuk percobaan 2D. Pada percobaan 2E, kita akan menggunakan piranti lunak ModelSim untuk melakukan silmulasi. Kita akan mensimulasikan rangkaian full adder dengan pendekatan VHDL. Berikut ini kode VDHL untuk percobaan ini:
Gambar 7. Kode VDHL untuk percobaan 2E Stimulus dapat diberikan dengan memilih Right Click Clock dengan nilai untuk sinyal A sebesar 50ps, untuk sinyal B 100ps, dan untuk sinyal C 200ps. Setelah itu, kita lakukan silmulasi dengan memilih menu Tools Run. Pada percobaan 2F, kita akan menggunakan konsep testbench, dengan memberikan stimulan melalui kode VHDL. File VHDL yang kita buat akan berfungsi sebagai DUT (Design Under Test). Berikut ini kode VHDL yang akan digunakan untuk memberikan stimulus pada percobaan ini:
Gambar 8. Stimulus untuk percobaan 2F Setelah menggunakan stimulus diatas, kita akan memodifikasi bagian stimulus generator dengan kode VHDL sebagai berikut:
Gambar 9. Modifikasi stimulus untuk percobaan 2F Pada percobaan 2G, kita akan menggukan ModelSin untuk melakukan proses tapping sinyal dari sebuah desain. Pada percobaan ini kita akan melakukan modifikasi pada file DUT dengan scripts berikut:
Gambar 10. Scripts Tapping percobaan 2G
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 4
Setelah mengetik script diatas dan melakukan silmulasi seperti pada percobaan 2F. Pada percobaan 2H, kita akan membuat file bernama sim.do yang berisi script sebagai berikut:
Gambar 11. Script file sim.do percobaan 2H Selanjutnya kita mensimulasikan nya dengan mengetikkan do sim.do. Lalu kita akan menguji script diatas dengan melakukan modifikasi pada baris paling bawah file sim.do dengan script sebagai berikut:
Gambar 12.Modifikasi script Stimulus percobaan 2H Selanjutnya kita akan mensimulasikannya dengan menggunakan testbench yang telah dibuat dengan menggunakan script file.do yang berisi sebagai berikut:
Gambar 13. Script file file.do percobaan 2H 4. HASIL DAN ANALISIS 4.1 PERCOBAAN 2A Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-1 Hasil Percobaan 2A A B Cin S Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Tabel 4-1. Tabel Kebenaran Full Adder Percobaan 2A Analisis : dari gambar dan tabel kebenaran diatas memiliki kecocokan dengan tabel kebenaran dari full adder yang dilampirkan pada bab Studi Pustaka. 4.2 PERCOBAAN 2B Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-2 Hasil Percobaan 2B
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 5
A B Cin S Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Tabel 4-2 Tabel Kebenaran Full Adder Percobaan 2B 4.3 PERCOBAAN 2C Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-3 Hasil Percobaan 2C Analisis : Dari gambar diatas didapat bahwa penjumlahan 4-bit Ripple Carry Adder dengan VHDL sudah sesuai 4.4 PERCOBAAN 2D Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut: Gambar 4-4 Hasil Percobaan 2D Analisis : Dari gambar ini didapat bahwa penjumlahan dari 4-bit Carry Adder dengan pendekatan skematik sudah sesuai. Hasil dari kedua percobaan di atas adalah sama. 4.5 PERCOBAAN 2E Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-5 Hasil Percobaan 2E Analisis : Hasil waveform diatas didapatkan dengan mengatur clock dari masukkan (A,B,Cin) menjadi masing-masing 50ps, 100ps, dan 200ps. Stimulus yang diberikan memberikan hasil waveform yang berlogika sama dengan menggunakan ALTERA QUARTUS II. Hal selanjutnya yang diuji pada bagian ini adalah menggunakan perintah (command) No Force. Perintah tersebut berfungsi untuk membatalkan (undo) dari perintah force yang diberikan sebelumnya. Pada kondisi default, perintah ini akan memberikan hasil keluaran 0. 4.6 PERCOBAAN 2F Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-6-1 Hasil Percobaan 2F Analisis : Amati potongan kode berikut:
Perintah tersebut menunjukkan bahwa setiap 50ps, nilai logika A akan di-invert. Ketika logika A
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 6
bernilai 0, maka setelah 50ps, logika A akan bernilai 1 dan berlaku sebaliknya. Selain cara tersebut, kita dapat memaksakan suatu value logika tertentu pada masukkan dan hal ini juga berlaku untuk potongan kode lainnya.
Gambar 4-6-2 Hasil Modifikasi Pada Percobaan 2F Analisis : Amati potongan kode berikut:
Potongan kode diatas menunjukkan, setelah 50ps, maka logika A akan selalu bernilai 1. Hal yang sama berlaku untuk logika B yang di inisialisasi 100ps serta logika C yang di inisialisasi 200ps. Dari dua contoh berbeda diatas, maka kita dapat mengkombinasikan kemungkinan-kemungkinan logika yang kita inginkan. 4.7 PERCOBAAN 2G Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-7 Hasil Percobaan 2G 4.8 PERCOBAAN 2H Hasil yang ditunjukan dari percobaan ini adalah sebagai berikut:
Gambar 4-8-1 Hasil Percobaan 2H dengan script file sim.do Analisis : Dengan menggunakan perintah pada sim.do kita dapat mengeksekusi silmulasi tanpa perlu menunggu masukkan manual.
Gambar 4-8-2 Hasil Percobaan 2H dengan script file file.do 5. KESIMPULAN Perancangan rangkaian digital dengan target FPGA dapat dilakukan dengan menggunakan pendekatan skematik maupun bahasa VHDL karena keduanya menghasilkan keluaran yang sama. Pendekatan skematik maupun bahasa VHDL memiliki kelebihan dan kekurangan masing masing. Pendekatan skematik tidak mengutamakan ketelitian tinggi, namun susah digunakan untuk membuat rangkaian kompleks. Bahasa VHDL lebih mudah digunakan untuk membuat rangkaian kompleks namun membutuhkan ketelitian yang tinggi. Rangkaian Full adder dapat diimplementasikan dengan berbagai cara (seperti cara diatas). Fungsi utama dari rangkaian ini adalah untuk menjumlahkan bilangan biner menggunakan fungsi gerbang logika. Ada beberapa jenis rangkaian adder seperti Full adder (Percobaan 2B), maupun Ripple carry adder (Percobaan 2C).
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 7
DAFTAR PUSTAKA [1] Stephen Brown, Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design 3 rd ed., Hal 79-149, McGraw Hill, New York, 2009. [2] Mervin T. Hutabarat et al., Buku Petunjuk Praktikum Sistem Digital. Hal 110. STEI ITB, Bandung, 2011.