MODUL II PENGENALAN DESAIN MENGGUNAKAN FPGA Rosana Dewi Amelinda (13213060) Asisten: Richard Dharmadi (1321 1073) Tanggal Percobaan: 10/10/2014 EL2102-Praktikum Sistem Digital Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
2.
Abstrak Pada praktikum Modul II Pengenalan Desain menggunakan FPGA ini, dilakukan bebrapa percobaan yaitu mendesain full adder dengan pendekatan skematik dan Bahasa VHDL, mendesain 4-bit Ripple Carry Adder dengan VHDL, mendesain 4-bit adder dengan skematik, melakukan simulasi sederhana denfan menggunakan Modelsim, membuat Testbench dan melakukan proses tapping sinyal dari sebuah desain. Hasil yang didapatkan dari percobaan kemudian dicocokan dengan hasil perhitungan /truth tabel. Kata kunci: FPGA, VHDL, ALTERA, Modelsim. 1.
PENDAHULUAN
FPGA (Field-Programmable Gate Array) merupakan sebuah IC yang sering digunakan untuk mengimplementasikan rangkaian digital. FPGA berbentuk komponen elektronika dan semikonduktor yang terdiri dari komponen gerbang terprogram (programmable logic) dan sambungan terprogram. Komponen gerbang tersebut meliputi jenis gerbang logika biasa (AND, OR, NOT) maupun jenis fungsi matematis dan kombinatorik yang lebih kompleks, seperti decoder, adder, substactor, multiplier, dll [1]. Hardware yang digunakan pada FPGA berupa Bahasa pemrograman VHDL dan Verilog. VHDL (Very High Speed Integrated Hardware Description Language) termasuk Bahasa pemodelan yang digunakan untuk merancang atau memodelkan rangkaian digital. Pemakaian FPGA mempunyai banyak keuntungan dibandingkan pemakaian IC TTL dan CMOS. Selain jumlah gerbangnya yang jauh lebih banyak, kemudahan, kecepatan dan flexibilitas proses rancang bangun merupakan kelebihan FPGA. Selain itu, konsumsi dayanya jauh lebih sedikit. [2] Dari praktikum modul mahasiswa dapat : a.
II
ini,
S TUDI PUSTAKA
FPGA Secara umum alur perancangan rangkaia digital dengan menggunakan FPGA dari ALTERA dapat daigambarkan seperti flowchart pada Gambar 1.
FULL ADDER Keunggulan FULL-ADDER bila dibandingakan dengan HALF-ADDER adalah kemampuan-nya menampung dan menjumlahkan bit CARRY-in (Cin) yang berasal dari CARRY-out (Cout) dari tahapan sebelumnya. Oleh karenanya fungsi FULLADDER itu sendiri adalah menjumlahkan ketiga bit input yaitu bit A, bit B dan Cin untuk manghasilkan dua bit output yaitu S dan Cout. Dengan menginterpresentasikan fungsi dan melihat format operasi rangkaian FULL ADDER, table kebenaran dapat disusun untuk setiap kemungkinan kombinasi ketiga bit input. Diasumsikan input berasal dari sumber logika positif dan output berupa ACTIVE HIGH. Langkah selanjutnya adalah membuat K-Map orde 2 dari table kebenaran tersebut. K-Map ini akan membantu merumuskan fungsi logika dari S dan Cout.
diharapkan
Mempelajari teknik perancangan rangkaian digital dengan target FPGA.
b. Melakukan perancangan rangkaian digital denfan target FPGA baik menggunkan pendekatan skematik maupun bahasa VHDL Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1
Gambar 1 Flowchart umum proses perancangan
Gambar 2 Rangkaian Full Adder
Terdapat bebrapa jenis rangkaian FULL ADDER, yaitu PARALLEL ADDER, LOOL AHEAD CARRY ADDER, dan CARRY SAVE ADDER dimana masing-masing mamiliki kelebihan dan kekurangannya.
2.1
JUDUL SUB-BAB
Judul sub-bab praktikum modul modul II ini yaitu :
Table 1 Tabel kebenaran dan dan K-Map dari Full Adder Adder
3.
1.
Mendesain FULL ADDER dengan skematik
2.
Mendesain FULL ADDER pendekatan bahasa VHDL
3.
Mendesain 4-bit RIPPLE CARRY ADDER dengan VHDL
4.
Mendesain 4-bit ADDER dengan skematik.
5.
Simulasi modelsim
6.
Membuat Testbench
7.
Melakukan proses tapping sinyal dari sebuah desain
sederhana
dengan
menggunakan
METODOLOGI
Peralatan yang digunakan a.
Implementasikan rangkaian FULL-ADDER dibuat berdasarkan persamaan ekspresi logika diatas. Rangkaian ini dapat tersusun dari dua buah HALFADDER (HA1 dan HA2), seperti terlihat pada gambar 2. Untuk penjumlahan dengan jumlah bit yang lebih banyak, dapat dilakukan dengan menambahkan rangkaian HALF-ADDER, sesuai dengan jumlah bit input. Di pasaran, rangkaian FULL ADDER sudah ada yang berbentuk IC, seperti 74xx83 )4 bit FULLADDER).
Computer (PC) yang program Quartus II
telah
terinstal
b. FPGA development board, tipe ALTERA DE1 beserta perlengkapannya yang meliputi : o
Board FPGA tipe DE1
o
Catu daya + kabel dan konektor tambahan
o
Kabel downloader USB-Blaster
Percobaan 1.
Mendesain FULL ADDER dengna skematik
a.
Membuat projek baru menggunakan Quartus II 9.0 sp2 Web Edition
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
Dibuat folder baru di dalam folder PraktikumSisDig (D:\PraktikumSisDig\Kelompok11\Modul2\...)
Klik File -> New, pada jendela yang tampil pilih Block Diagram/Schematic File sebagai pilihan desain dan klik OK. Disimpan file tersebut sebagai tutorial1.bdf.
Kemudian pada folder tersebut dibuat dua folder baru yang bernama Tutorial1 dan Tutorial2 Dipilih File -> Page Setup dan Letter sebagai ukuran kertas, klik OK Dijalankan Quartus II 9.0 sp2 Web Edition
Dibuka jendela Symbol Tools dengan mengklik tombol dengan ikon gerbang AND pada bagian kiri jendela schematic editor.
Klik File -> New Project Wizard. Setelah ini akan tampil jendela Introduction, Klik Next.
Pada kolom paling atas, ditekan tombol ”...” yang ada disebelah kanan kemudian dicari folder Tutorial1 yang sudah dibuat sebelumnya. Diakhiri dengan menekan tombol Open.
Dicari komponen XOR pada folder ...\primitives\logic dan klik dua kali nama komponen tersebut. Diujung panah mouse akan muncul gambar komponen XOR dengan 2 masukan. Dicari posisi yang tepat pada skematik dan di klik 1 kali pada posisi itu untuk menempatkan gerbang XOR. Untuk menyudahi ditekan tombol Esc atau klik kanan dan dipilih cancel.
Kemudian pada kolom berikutnya diketikan ”Tutorial1”. Dipastikan pada kolom ketiga terisi nama yang sama.
Klik Next untuk sampai ke jendela ”Add Files” , lewati jendela ini dengan klik next kembali.
Diulangi langkah diatas untuk menempatkan dua buah gerbang AND dengan 2 masukan dan sebuah gerbang OR dengan 2 masukan serta lima buah gerbang NOT.
Pada daftar ”Family” untuk mendapatkan board DE1 untuk Family pilih Cyclonell, kemudian dalam bagian device pilih EP2C20F484C7. Setelah itu klik Finish karena untuk langkah berikutnya hanya menggunakan setting default.
Dibuka kembali jendela Symbol tools, kali ini dibuka folder ..\primitives\Pin.
Dipilih jenis Input Pin dan ditempatkan 3 buah pada skematik. Siulangi langkah ini untuk menempatkan 5 buah Output pin pada skematik.
b. Memilih dan Menempatkan komponen
c.
Menambahkan hubungan untuk membentuk net
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
3
e.
Menetapkan I/O pin pada kaki FPGA
Dipilih Orthogonal Node Tool pada bagina toolbar bagian kiri, untuk menggambarkan kabel.
Disimpan skematik, kemudian dipilih Processing -> Start -> Start Analysis & Synthesis atau Ctrl+K
Diarahkan ujung pointer mouse ke salah satu sisi yang akan dihubungkan lalu klik kiri dan tahan kemudian ditarik garis hingga ujung lain yang diinginkan.
Dipilih Assignment -> Pin Planner
Akan terbuka sebuah jendela baru dimana sebelah atas akan ada gambar FPGA dengan posisi kaki-kakinya dan dibawa ada daftar yang sudah berisi port inputoutput skematik.
d. Pelabelan Net dan pin I/O Di klik dua kali pada port input/output yang akan diubah namanya kemudian ubah nama dari pin sesuai dengan yang pada gambar 3 ( ”A”, ”B”, ”C” untuk input dan ”SUM”,” CARRY ”, ”A_OUT ”, ” B_OUT ”, ” C_OUT ” untuk output.
Di klik diretion untuk mengurutkan pin Untuk port masukan dibiarkan default value sebagai VCC.
Pada kolom Location double-klik kiri kolom yang sebaris dengan port yang ditinjau. Akan muncul suatu daftar kaki FPGA yang bisa dipakai.
Untuk percoban ini, digunakan switch untuk masukan dan LED pada 7 -segmen untuk keluaran. LED pada DE1 bersifat active low. Ketika terbuka/tidak ditekan switch akan berlogika 1 karena ada rangkaian pull-up dan jika tertutup/ditekan akan berlogika 0, sedangkan LED akan menyala ketika mendapatkan imut LOW VOLTAGE dan matiketika mendapatkan input HIGH VOLTAGE.
Untuk pemasangnan kaki komponen pada Pin Planner merujuk pada tabel 2 Table 2 Referensi kaki komponen komponen
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
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
4
CARRY
PIN_D1
SUM
PIN_E1
f.
g. Membuat waveform masukan
Dibuka kembali file Tutorial1.vwf dengan menggunakan File -> Open ataupun Simulator Tool -> Open
Pembuatan Netlist untuk simulasi Dipilih Processing -> SImulator Tool
Di klik kiri pada port masukan A pada kolom paling kiri file Dipilih Simulation Mode menjadi Functional
Di klik pada tombol tombol Gene Generate rate Functiona Functionall Simulation Simulation Netli (dipastikan tidak ada error
Di klik cek box disebelah disebelah kiri "Overwrite Simulation inpu file with simul simulation ation result" result" agar setiap setiap melakukan melakukan simula simula hasilnya langsung ditampilkan pada file simulasi
Lalu dibuat dibuat file yagn yagn digunakan digunakan sebagai sebagai sumber sumber masuka masuka vektor simulasi dengan cara mengklik tombol open pada bagian bag ian bawah bawah jend jendela ela Simu Simulato latorr Tool. Tool. Lalu akan akan didapatk didapatk jendela baru dengan nama default waveform1.vwf
Di klik klik kanan kanan pada pada bagia bagian n kolom kolom Name Name jendel jendela a terseb tersebut ut d dipilih Insert -> Insert Node or Bus -> Node Finder. Lalu dipilih pada bagian Filter -> Pins : all kemudian di klik kiri pada tombol List untuk mengeluarkan semua port input output yang dipakai. dipakai. klik kiri pada pada tombol tombol dengan dengan tanda > untuk mensimulasikan seluruh port
Dipilih salah satu kotak tombol yang bernama Overwrite Clock (berada di dalam toolbar dari jendela waveform).
Pada jendela Clock, dipilih Time Period -> Period dan isi perioda sebesar 10 ns
Diulangi langkah diatas untuk port masukan B dan C tetapi dengan nilai periode sebesar 20 ns untuk B dan 20 ns untuk C
Semua langkah diatas akan menghasilkan seluruh kombinasi sinyal masukan yang mungkin.
Setelah itu pada jendela Simulator Tool dipilih tombol Start untuk memulai simulasi
Di klik (Detach Windows), lalu disimpan file simulasi ini dengan nama Tutorial1.vwf.
Kemudian pada kolom Simulation Input di Simulator Simulator Tool dipilih file Tutorial1.vwf sebagai input simulasi.
Lalu diamati hasil simulasi pada jendela tutorial.vwf dan dicek apakah hasilnya sesuai dengna yang diharapkan
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
5
h. Mengimplementasikan desain
a.
Dilakukan kompilasi Dilakukan kompilasi terhadap terhadap program program deng denga a mamilih Processing -> Start Compilation
Disiapkan board FPGA, Disiapkan FPGA, dipasang dipasang kabel catu day day dan kabel programmer pada tempatnya masin masing dan dinyalakan board FPGA tersebut.
Membuat Projek Baru Kembali Dibuat projek baru untuk percobaan ini seperti yang telah dilakukan pada percobaan sebelumnya dengan memperhatikan langkahlangkah dibawah ini
Di klik File -> New Project Wizard
Dibuka directory dan dicari folder Tutorial2 untuk menyimpan file-file pada percobaan ini Untuk konfigurasi, di klik Tools -> Programmer. klik pada tombol Hardware setup. Di klik pada Add Hardware, untuk DE1 di klik 1 kali pada US Blaster.
Kemudian pada bagian Mode dipilih JTAG.
Lalu Lal u munc muncul ul file Tut Tutoria orial1. l1.sof sof pad pada a jende jendela la uta programmer.
Diberi nama project dan top level entity : ”modul2vhdl”.
Di klik Next untuk sampai ke jendela yang dapat digunakan untuk menambahkan file pendukung, dilewatkan jendela ini dengan klik Next kembali
Untuk Family dipilih Cyclone II, kemudian dalam bagian device dipilih EP2C20F484C7. Setelah itu di klik Finish.
b. Memasukan desain VHDL
2.
Disorot nama file, Disorot file, dan dilakukan dilakukan checklist checklist pad kolom ”Program/Configure”, kemudian di klik tombol Start untuk program FPGA.
Di klik File -> New, pada jendela yang tampil dipilih VHDL File sebagai pilihan desain dan klik OK. Di klik Detach Windows, lalu disimpan file tersebut sebagai modul2vhdl.vhd
Lalu dimainkan switch 1-3 dengan merepresentasikan masukan A, B, dan C.
Didapatkan jendela kosong tempat untuk menulis kode VHDL.
Mendesain FULL ADDER dengan pendekatan bahasa VHDL
Ditulis kode VHDL untuk desain Full Ader
Selanjutnya dilakukan langkah-langkah percobaan 1, dimulai dari langkah ke E hingga langkah H.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
6
3.
Mendesain 4-bit RIPPLE CARRY ADDER dengan VHDL
Dibuka program Modelsim ALTERA STARTER EDITION 6.4.a
Dibu Di buat at fol folde derr dan dan proj projec ectt baru baru den denga gan n nama nama pro pro dan top-level top-level entity ”adder4bit”.
Ditambahka Ditamb ahkan n file file vhdl vhdl pada pada proje project ct terse tersebut but d dituliskan kode vhdl untuk Ripple Carry Adde
Dipilih folder sebagai direktori kerja dengan cara, pilih File -> Change Directory pada baris menu yang terdapat dibagian atas jendela program, lalu dimasukan path direktori folder kerja.
Dilakukan simulasi secara fungsional seperlunya dilihat apakah apakah adder4bi adder4bitt bekerja bekerja seperti seperti yan diharapkan. Dibuat direktori baru dengan cara memilih File -> New -> Library.
4.
Mendesain 4-Bit Adder dengan skematik Dibuat project baru dengan nama project dan top-level etity adder4bit2
b. Menjalankan simulasi menggunakan Modelsim STARTER EDITION 6.4a
dengan ALTERA
Di copy file pendukung yang bernama FullAdder.bsf dan FullAdder.bdf dari website labdasar ke dalam folder proyek
Ditambahkan file skematik kosong ke dalam project.
Dibuat gambar skematik untuk rangkaian 4-bit adder
Dilakukan simulasi secara fungsional dan dibandingkana hasilnya dengan ketika menggunakan vhdl
5.
Simulasi modelsim
sederhana
menggunakan
a.
Mamulai Simulasi dengan menggunakan Modelsim ALTERA STARTER EDITION 6.4a
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
7
6. Di compile desain yang ingin disimulasikan dengna cara memilih Compile -> Compile pada baris menu. Dipilih file ”modul2vhdl.vhd” lalu di klik Compile. Saat kompilasi telah selesai, pilih Done.
Dipilih menu Simulate -> Start Simulation. Kemudian dipilih modul yang ada dalam library (work) lalu pilih OK.
Membuat Testbench
Dibuat folder baru pada direktori yang telah dibuat sebelumnya. Ditambahkan file testbench dan file DUT (Device Under Test) dengan cara mengetikkan kode vhdl Testbench kemudian menyimpannya pada direktori tersebut untuk file testbench dan meng-copy dari percobaan sebelumnya untuk file DUT. Tb_modul2VHDL adalah entity yang mendeskripsikan testbench. Didalamnya ada dua buah block : instance modul dan stimulus generator. Instance modul adalah bagian yang akan diuji, sedangkan stimulus generator merupakan bagian yang memberikan stimulus/input.
Ditambahkan wave hasil simulasi di window simulator dengan melakukan Right Klik -> Add -> To Wave -> All item in region.
Kemudian dibuat stimulus (sequence signal) pada simulasi dengan cara memilih Right Klik -> Clock. Dimasukan nilai periode clock simulasi sebesar 50 ps untuk sinyal A, lalu di klik OK. Ditambahkan sinyal lain dengan cara yang sama namun dengan periode ya ng berbeda, 100 ps untuk sinyal B dan 200 ps untuk sinyal c.
Dilakukan proses compile file tersebut dengan cara seperti langkah pertama pada percobaan 1 (a) dan 1 (b). Kemudian dilakukan simulasi seperti langkah kedua dan ketiga pada percobaan 1 (b) apabila proses compile telah selesai
Dijalankan simulasi dengan memilih menu Simulate -> Run. Diambil gambar sinyal hasil simulasi tersebut.
Dijalankan simulasi dengan mamilih Simulate -> Run.
Setelah didapatkan hasil simulasi dari langkah sebelumnya, Right Click -> No Force dan dijalankan kembali simulasi dengan memilih menu Simulate -> Run.
Kemudian dilakukan Right Click -> Force dan dijalankankemali simulasi dengna mamilih menu Simulate -> Run.
Kemudian dilakukan modifikasi pada stimulus generator dengan cara mengubah script yang telah disimpan sebelumnya.
Disimpan perubahan yang terjadi pada file tersebut. Dilakukan kembali compile dan simulasi pada file yang telah dimodifikasi seperit pada langkah kedua. Setelah proses simulasi berjalan, dihentikan proses tersebut dengan memilih menu Simulate -> End Simulation. Diambil gambar sinyal hasil simulasi.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
8
7.
Melakukan proses tapping sinyal dari sebuah desain Dilakukan modifikasi script pada file DUT.
Disimpan perubahan yang terjadi pada file tersebut. Dilakukan kembali compile dan simulasi pada file yang telah dimodifikasi seperti pada langkah kedua pada percobaan 3.
Ditambakan wave pada jendela simulasi yang kemudian dimunculkan oleh program setelah langkah sebelumnya selesai dilakukan dengan cara Right Click > Add -> To Wave -> Selected Items
Dijalankan simulasi denga memilih menu Simulate -> RUn. Diambil gamabr sinyal haisl simulasi tersebut.
H ASIL DAN A NALISIS NALISIS
Table 3 Truth table rangkaian full full adder
A
B
C
C-out
Sum
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
Dari percobaan didapatkan bentuk sinyal seperti pada gambar 3. Hasil tersebut sesuai denga truth table untuk rangakian full adder diatas (table 3). Seperti contohnya saat A = 1, B = 1 , dan C = 0. Truth table menghasilkan nilai Carry out = 1, dan nilai Sum = 0. Hasil ini sama dengan sinyal yang ditampilkan pada simulator Quartus. Gambar 4 Contoh 1
Percobaan 1 Gambar 3 Hasil gelombang sinyal full adder dengan pendekatan skematik skematik
Gambar 5 Hasil implementasi di FPGA
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
9
Hasil implementasi pada FPGA yaitu seven segmen yang pertama untuk menampilkan Carry out dan Sum. Sedangkan seven segmen yang kedua untuk menampilkan keluaran A/A out, B/B out, dan C/C out. Karena menggunakan Active Low, maka seven segmen akan menyala saat Logic O dan mati saat Logic 1.
Gambar 7 Contoh 2
Gambar 8 Hasil implementasi FPGA
Berdasarkan posisi kaki-kaki diatas, didapatkan hasil implementasi LED pada altera mengeluarkan hasil yang benar. Hasil tersebut susuai dengan true table full adder pada table 3. Contohnya saja saat A, B, dan C bernilai 1 semua seven segmen digit 2 switch [0], switch [6] dan switch [3] mati semua dan seven segmen digit 1 switch [0] dan switch [6] juga mati . (LED mati menandakan logic 1 dan hasil tersebut sesuai dengan truth table).
Percobaan 2 Gambar 6 Hasil gelombang sinyal desain full adder dengan pendekatan VHDL
Gambar tampilan sinyal rangkaian full adder dengan menggunakan Bahasa VHDL diatas adalah benar. Yaitu sesuai dengan truth table rangkaian full adder. Contohnya saat A = 0, B = 1, dan C = 1 carry-out menunjukan logika 1 dan sum menunjukan logika 0. Hasil tersebut sesuai dengan truth table rangkaian full adder. Hal ini membuktikan kesamaan wave gelombang yang didapatkan untuk rangkaian full adder baik menggunakan pendekatan skematik maupun pendekatan Bahasa VHDL. Sehingga kita dapat menggunakan pendekatan skematik maupun Bahasa VHLD dalam implementasi dengan FPGA
Pada percobaan 2 ini, hanya menggunakan seven segmen digit 2. Sehingga hasil tampilan pada digit 1 seven segmen tidak diperhitungkan. Pada FPGA diamati hasil sebagai berikut : 1.
Saat A,B dan C bernilai logic 0, lampu LED seven seven segmen segmen menyal menyalaa semua semua ( ).
2.
Saat salah satu diantara A,B, atau C bernilai 1, seven seven segmen segmen menyal menyalaa semua semua ( ).
3.
Saat 2 diantara A,B, atau C bernilai 1, seven segm segmen en swi switc tch h 3 mat matii ( ).
4.
Saat A,B, dan C bernilai 1, secen segmen meny menyal alaa sem semua ua ( ).
Dari hasil diatas menjukan hasil yang tidak sesuai dengan yang diharapkan. Hal ini kemungkinan disebabkan kesalahan pemilihan komponen kaki seven segmen atau human error (seperti kesalahan pembacaan keluaran FPGA).
Percobaan 3 4-Bit Ripple Carry adder yaitu menerima masukan A 4 bit dan B 4 bit serta Cin 1 bit lalu mengembalikan hasil berupa Cout 1 bit dan sum 4 bit. Percobaan ini dilakukan dengan pendekatan Bahasa VHDL. Hasil wave gelombang sebagai berikut :
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1 0
Gambar 9 Hasil gelombang sinyal 4-bit Ripple Carry Adder dengan VHDL
Gambar diatas menunjukan hasil 4 bit carry adder. Apabila dihitung secara manual, contoh : Cin : 0 A:
0001
B:
0001
Sum :
0010
Cout :0 Hasil penjumlahan secara manual diatas sesuai dengan keluaran wave gelombang seperti ditunjukan gambar berikut :
Gambar 11 Hasil gelombang sinyal 4-bit Adder dengan skematik
Dapat dilihat bahwa wave gelombang yang dihasilkan dengan pendekatan skematik sama persis (identic) dengan gelombang yang dihasilkan dengan pendekatan Bahasa VHDL. Hal ini menujukan bahwa kita dapat menggunakan pendekatan Bahasa VHDL maupun skematik dalam meranacang rangkaian digital 4 bit Ripple Carry Adder dikarenakan kedua pendekatan tersebut menampilkan hasil yang sama benarnya.
Percobaan 5
Gambar 10 Pembuktian percobaan 3
Percobaan selanjutnya yaitu dilakukan simulasi sederhana dengan menggunakan Modelsim. Berikut hasil wave gelombang yang diperoleh : Gambar 12 Hasil simulasi sederhana meggunakan Modelsim
Percobaan 4 Setelah sebelumnyan dilakukan membuat 4 bit adder menggunakan pendekatan Bahasa VHDL, selanjutnya akan dibuat rangkaian adder 4 bit dengan menggunakan skematik. Berikut tampilan wave sinyal yang dihasilkan :
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
11
Table 4 Truth Tabel percobaan percobaan 5
Gambar 14 Hasil sinyal Testbench
A
B
C-in
S
C-out
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
Hasil wave sinyal menunjukan hasil yang sama dengan percobaan 1 yang menggunakan Quartus. Hasil waveform pada percobaan ini didapatkan dengan mengatur clock A, B, dan C dengan 50ps, 100ps dan 200ps. Saat A : 1, B : 1, dan Cin : 1, hasil Sum nya yaitu berniali 1 dan Carry out bernilai 1. Hasil tersebut sesuai dengan true table. Hal ini menunjukan bahwa untuk merangcang suatu rangkaian digital, kita juga dapat menggunakan software Modelsim dengan hasil yang sama benarnya dengan apabila menggunakan Quartus. Gambar 13 Pembuktian percobaan 5
Perintah pengaturan clock yang sebelumnya dilakukan pada percobaan 5, kali ini digatikan dengan perintah testbench. Perintah testbench dibuat dengan code Bahasa VHDL (terlampir). Perintah tersebut menujukan untuk logika A, nilai A akan di-invert untuk setiap 50 ps. Misalnya awalnya logika A bernilai 0 maka setelah 50 ps, logika A tersebut akan di-invert sehingga menghasilkan logika 1. Hal tersebut juga dilakukan untuk logika B dan C. Sehingga melalui proses tersebut akan didapatkan semua kombinasi logika yang diinginkan. Namun kelemahannya, bentuk testbench ini terbilang sukar dibandingkan dengan bentuk timing diagram. Hal ini disebabkan karena untuk melakukan testbench, diperlukan kemampuan untuk menulis dan mengerti kodekode VHDL maupun Verilog. Sehingga bentuk testbench pada umumnya sering digunakan oleh pengguna FPGA tingkat mahir. [3]
Percobaan 7 Pada percobaan ini dilakukan proses tapping sinyal menggunakan Modelsim. Tapping sinyal adalah proses pengambilan nilai sinyal yang bukan bagian dari keluaran system rangkaian digital yang diuji. Tapping sinyal pada percobaan ini adalah Temp yang bernilai logika A XOR B. Berikut hasilnya :
Percobaan 6 Salah satu keunggulan perancangan rangkaian dengan menggunakan Modelsim adalah kita dapat melalakukan Testbench. Testbench adalah proses pengujuan suatu rancangan rangakain apakah sudah sesuai atau belum. Testbench dilakukan dengan menggunakan file HDL (Bahasa VHDL atau Verilog). Berikut tampilan waveform hasil testbench :
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
12
Gambar 15 Hasil Tapping sinyal
4.
Dalam melakukan perancangan rangkaian digital kita dapat mengunakan pendekatan skematik maupun pendekatan bahasa VHDL, dikarenakan keduanya memberikan hasil yang benar/sesuai.
5.
Rangkaian Adder (Full Adder dan Ripple Carry Adder) dapat diimplementasikan dengan berbagai cara. Fungsi rangkaian ini yaitu untuk menjumlahkan bilangan biner dengan menggunakan fungsi gerbang logika.
D AFTAR PUSTAKA
Mervin T Hutabarat, Arif Sasongko, Praktikum Sistem Digital , Laboratorium Dasar Teknik Elektro ITB, Bandung, 2014.
Table 5 Truth table XOR
A
B
Temp (A XOR B)
[1]. http://id.wikipedia.org/wiki/FPGA, http://id.wikipedia.org/wiki/FPGA, Oktober 2014, 19:40
0
0
0
0
1
1
[2]. http://takesimpleway.wordpress.com/catego ry/uncategorized/,, 13 Oktober 2014, 19:30 ry/uncategorized/
1
0
1
1
1
0
[3]. http://ndoware.com/simulasi-fpga.html, http://ndoware.com/simulasi-fpga.html, Oktober 2014, 7:19
13
14
Gambar sinyal yang dihasilkan pada “Tap” sesuai dengan logika XOR. Contoh saat A : 1 dan B : 0, tapping sinyal yang dihasilkan yaitu 1. Serta saat A : 1 dan B : 1 =, tapping sinyal yang dihasilkan yaitu 0. Kedua contoh tersebut cocok dengan truth table untuk logika XOR. 5.
K ESIMPULAN ESIMPULAN
Kesimpulan yang didapatkan dari percobaan modul II ini, yaitu 1.
Dalam melakukan perancangan rangkaian digital dapat menggunakn ALTERA Quartus II (percobaan 1 – 4) maupun Modelsim (percobaan 5 – 7) dan telah dibuktikan hasil yang diberikan oleh keduanya adalah benar.
2.
Keuntungan menggunakan Modelsim adalah kita dapat melakukan proses testbench dan tapping sinyal. Namun untuk testbench sendiri lebih sering digunakan oleh pengguna FPGA yang sudah mahir.
3.
Sedangkan keuntungan menggunakan ALTERA Quartus adalah cara penggunaannya yang lebih user-friendly apabila dibandingkan dengan menggunakan Modelsim. Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
13
LAMPIRAN 1 Skematik rangkaian Full Adder
Skematik singkat rangkaian Ripple Carry Adder VCC
f ull_adde ull_adder r A B
f ull_adde ull_adder r S Cout
Cin FA0
A
C(0)
B
S Cout
Cin FA1
Skematik Rangkaian 4-Bit Adder
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
14
LAMPIRAN 2 1.
Kode VHDL untuk desain Full Adder
LIBRARY ieee ; USE ieee.std_logic_1164. all; USE ieee.numeric_std. all; ENTITY modul2vhdl IS PORT( A,B,Cin : IN STD_LOGIC ; S,Cout : OUT STD_LOGIC); END modul2vhdl; ARCHITECTURE behavioral OF modul2vhdl IS ARCHITECTURE BEGIN S <= A XOR B B XOR Cin; Cin; Cout <= (Cin AND (A XOR B)) B)) OR (A (A AND B); END behavioral;
2.
Kode VHDL untuk 4-bit Ripple Carry Adder
LIBRARY ieee ; USE ieee.std_logic_1164. all; USE ieee.numeric_std. all; ENTITY fulladder IS PORT( A,B,Cin : IN STD_LOGIC; S,Cout : OUT STD_LOGIC ); END fulladder; ARCHITECTURE behavioral OF fulladder IS ARCHITECTURE BEGIN S <= A XOR B B XOR Cin; Cin; Cout <= (Cin AND (A XOR B)) B)) OR (A (A AND B); END behavioral; LIBRARY ieee ; USE ieee.std_logic_1164. all; USE ieee.numeric_std. all; ENTITY adder4bit IS PORT( A, B : IN STD_LOGIC_VECTOR (3 DOWNTO 0); Cin : IN STD_LOGIC ; S : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); Cout : OUT STD_LOGIC ); END adder4bit; ARCHITECTURE behavioral OF adder4bit IS ARCHITECTURE SIGNAL C : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT fulladder IS PORT ( A,B,Cin : IN STD_LOGIC ; S,Cout : OUT STD_LOGIC ); Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB END COMPONENT;
15
BEGIN FA0: fulladder PORT MAP (A=>A(0), S=>S(0), Cout=>C(0)); FA1: fulladder PORT MAP (A=>A(1), S=>S(1), Cout=>C(1)); FA2: fulladder PORT MAP (A=>A(2), S=>S(2), Cout=>C(2)); FA3: fulladder PORT MAP (A=>A(3), S=>S(3), Cout=>Cout);
B=>B(0), Cin=>Cin , B=>B(1), Cin=>C(0), B=>B(2), Cin=>C(1), B=>B(3), Cin=>C(2),
END behavioral;
3.
Kode VHDL untuk Testbench
LIBRARY ieee; USE ieee.std_logic_1164. all; USE ieee.numeric_std. all; ENTITY tb_modul2vhdl IS END tb_modul2vhdl; tb_modul2vhdl; ARCHITECTURE ARCHITECTUR E behavioral OF tb_modul2vhdl IS COMPONENT modul2vhdl IS PORT( A,B,Cin : IN STD_LOGIC; S,Cout : OUT STD_LOGIC ); END COMPONENT; SIGNAL A SIGNAL B SIGNAL Cin SIGNAL S SIGNAL Cout
: : : : :
STD_LOGIC := '0' '0'; ; STD_LOGIC := '0' '0'; ; STD_LOGIC := '0' '0'; ; STD_LOGIC ; STD_LOGIC ;
BEGIN dut : modul2vhdl PORT MAP ( A => A , B => B , Cin => Cin , S => S , Cout => Cout ); clock_A : PROCESS BEGIN WAIT FOR 50 ps; A end PROCESS clock_A;
<= NOT A;
clock_B : PROCESS BEGIN WAIT FOR 100 ps; B end PROCESS clock_B; clock_Cin : PROCESS BEGIN WAIT FOR 200 ps; Cin end PROCESS clock_Cin;
END behavioral;
<= NOT B;
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB <= NOT Cin;
16
4.
Kode modifikasi yang mendefinisikan clock untuk percobaan 6 (Testbench)
clock_A : PROCESS BEGIN WAIT FOR 50 ps; A end PROCESS clock_A;
<= NOT A;
clock_B : PROCESS BEGIN WAIT FOR 100 ps; B end PROCESS clock_B; clock_Cin : PROCESS BEGIN WAIT FOR 200 ps; Cin Cin; end PROCESS clock_Cin;
5.
stimulus : PROCESS BEGIN WAIT FOR 50 ps; A WAIT FOR 100 ps; B WAIT FOR 200 ps; Cin WAIT; END PROCESS stimulus;
<= NOT B;
<= '1' '1'; ; <= '1' '1'; ; <= '1' '1'; ;
<= NOT
Kode modifikasi file DUT untuk percobaan 7 (Tapping Sinyal)
LIBRARY ieee ; USE ieee.std_logic_1164. all; USE ieee.numeric_std. ieee.numeric_std. all; ENTITY modul2vhdl IS PORT( A,B,Cin : IN STD_LOGIC; S,Cout : OUT STD_LOGIC ); END modul2vhdl; ARCHITECTURE behavioral OF modul2vhdl IS ARCHITECTURE SIGNAL TEMP : STD_LOGIC; BEGIN TEMP <= A XOR B; B; S <= TEMP XOR Cin; Cin; Cout <= (Cin AND TEMP) OR (A (A AND B); END behavioral;
Posisi kaki yang terhubung 7 segment dengan switch untuk DE1 Switch Switch[0] Switch[1] Switch[2] Switch[3] Switch[4] Switch[5] Switch[6] Switch[7] Switch[8] Switch[9]
Cyclone II Pin PIN_L22 PIN_L21 PIN_M22 PIN_V12 PIN_W12 PIN_U12 PIN_U11 PIN_M2 PIN_M1 PIN_L2
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
17
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
18