MODUL 2 Pengenalan Desain Menggunakan FPGA Tanggal Percobaan: 09/10/2014 EL2102-Praktikum Sistem Digital
Laboratorium Dasar Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
2.
Dalam modul kali ini total tujuh percobaan telah dilakukan. Semua percobaan berkaitan dengan perancangan rangkaian logika dengan software beserta implementasinya pada FPGA. Percobaan-percobaan tersebut adalah mendesain full adder dengan skematik, mendesain full adder dengan pendekatan bahasa VHDL, mendesain 4-bit ripple carry adder dengan VHDL, mendesain 4-bit adder dengan skematik, simulasi sederhana menggunakan modelsim, membuat testbench, dan melakukan proses tapping sinyal dari sebuah desain. Dari hasil percobaan ini dapat disimpulkan bahwa gerbang logika memiliki beberapa parameter yang penting yang harus diperhatikan. Selain itu, pada modul kali ini juga ditunjukkan pengaplikasian gerbang logika untuk rangkaian kombinasional sederhana. Dari hasil percobaan ini dapat disimpulkan bahwa cara skematik dan VHDL menghasilkan keluaran yang sama, hanya saja cara VHDL lebih terstruktur sehingga dalam perancangan rangkaian yang kompleks, cara VHDL lebih efisien. Dalam modul ini juga dilakukan proses simulasi yang dapat memverifikasi rangkaian logika yang telah dibuat. Selain itu, dengan testbench, kita dapat melakuka proses verifikasi dengan mengubah nilai input dengan clock. Pada percobaan terakhir, dapat disimpulkan bahwa dengan proses tapping sinyal, kita dapat mengetahui nilai sinyal antara secara detail sehingga dapat memudahkan proses troubleshooting.
2.1
S TUDI PUSTAKA FPGA
FPGA merupakan perangkat logika yang dapat diprogram melalui software dan biasa dimanfaatkan untuk mengimplementasikan rancangan logika baik yang kecil maupun yang cukup besar. Di dalam FPGA terdapat logic blocks untuk mengimplementasikan fungsi logika. FPGA mempunyai tiga komponen utama, yaitu logic blocks, input/output blocks, dan kawat beserta switches penghubung. Logic block yang paling umum digunakan dalam FPGA adalah lookup table (LUT). [2] 2.2
A DDER DDER
Penjumlahan merupakan operasi dasar dalam aritmatika. Dalam rangkaian logika, adder merupakan komponen yang sangat penting yang sering menjadi salah satu bagian dari rangkaian logika yang lebih kompleks. Dalam percobaan ini, jenis adder yang digunakan adalah full adder. Full adder diilustrasikan dalam Gambar 2-1.[1]
Kata kunci: VHDL, ripple carry, skematik, FPGA, full adder. 1.
PENDAHULUAN
Mengenal software dan perangkat yang berhubungan dengan sistem digital merupakan hal penting jika kita ingin merancang rangkaian digital. Dalam modul kali ini, praktikan diperkenalkan dengan software Altera Quartus® dan Modelsim®. Kedua software tersebut sangat berguna bagi insinyur elektro karena dapat membantu dalam merancang rangkaian logika karena memiliki fitur yang lengkap. Pada modul kali ini juga dijelaskan bagaimana cara mengimplementasikan rancangan logika yang telah dibuat dalam software ke FPGA. Pada laporan ini akan dipaparkan teori dan rumus yang mendasari percobaan, metodologi praktkum, hasil percobaan beserta analisisnya, serta kesimpulan berdasarkan analisis yang telah dibuat.
Gambar 4-1 3.
METODOLOGI
Dalam modul ini, alat dan komponen yang digunakan adalah komputer yang telah terinstal software Altera Quartus® dan Modelsim®, FPGA development board tipe ALTERA DE1, dan kabel downloader USB-Blaster. Langkah percobaanpercobaan akan dijelaskan pada subbab di bawah.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1
3.1
MENDESAIN FULL A DDER DENGAN SKEMATIK
Berikut ini adalah percobaan pertama:
langkah-langkah
1.
Membuat folder baru di dalam folder PraktikumSisDig dengan nama sesuai dengan nomor kelompok.
2.
Pada folder tersebut dibuat folder baru yang bernama Tutorial1 dan Tutorial2.
4.
5.
Menjalankan program Quartus II 9.0 sp2 Web Edition. Di dalam program, klik File -> New Project Wizard kemudian klik Next setelah muncul jendela Introduction. Setelah muncul jendela baru, klik tombol “...” pada kolom paling atas kemudian cari folder “Tutorial1” yang telah dibuat sebelumnya. Setelah itu klik Open.
6.
Pada kolom “Tutorial1”.
7.
Klik Next, setelah muncul jendela baru klik Next kembali.
8.
berikutnya
Setelah muncul jendela baru, pilih Cylone II pada daftar “Family” kemudian pilih EP2C20F484C7 pada bagian device. Klik Finish.
Klik File -> New -> Diagram/Schematic File -> OK.
2.
Klik File -> Page Setup -> Letter -> OK.
3.
Rangkai rangkaian Full Adder dengan menempatkan komponen yang dibutuhkan dalam Symbol Tools.
Block
c. Menambahkan Hubungan untuk Membentuk Net Pilih “Orthogonal Node Tool” kemudian hubungkan komponen dengan cara melakukan klik kiri pada salah satu komponen yang ingin dihubungkan kemudian drag hingga komponen yang lain.
d. Pelabelan Net dan Pin I/O Klik dua kali pada port input/output yang akan diubah namanya kemudian ubah nama dari pin sesuai dengan nama yang diinginkan.
e. Menetapkan I/O Pin pada Kaki FPGA
Pilih Assignment -> Pin Planner.
3.
Klik “Direction” untuk mengurutkan pin.
4.
Pada kolom Location klik kiri dua kali kolom yang sebrais dengan port yang ditinjau untuk memilih kaki pada FPGA berhubungan dengan port tersebut.
f. Pembuatan Netlist untuk Simulasi 1.
Pilih Processing -> Simulator Tool -> Simulation Mode -> Functional.
2.
Klik “Generate Functional Simulation Netlist”.
3.
Klik check box “Overwrite Simulation input file with simulation result”.
4.
Klik “Open” pada bagian bawah jendela “Simulator Tool”.
5.
Setelah muncul jendela baru, klik kanan pada bagian kolom “Name” jendela tersebut dan pilih Insert -> Insert Node or Bus -> Node Finder -> Filter -> Pins: all -> List -> klik tombol “>>”.
6.
Klik “Detach Windows” lalu simpan file simulasi dengan nama Tutorial1.vwf.
7.
Pada kolom “Simulation Input” di “Simulator Tool” pilih “Tutorial1.vwf” sebagai input simulasi.
g. Membuat Waveform Masukan
1.
1.
2.
ketikkan
b. Memilih dan Menempatkan Komponen
1.
Simpan skematik yang telah dibuat kemudian pilih Processing -> Start -> Start Analysis & Synthesis.
dalam
a. Membuat Projek Baru Menggunakan Quartus II 9.0 sp2 Web Edition
3.
1.
1.
Buka “Tutorial.vwf” dengan File -> Open atau SimulatorTool -> Open
2.
Klik kiri pada port masukan A pada kolom paling kiri file tersebut.
3.
Pilih “Overwrite Clock” kemudian atur perioda yang sesuai pada bagian “Time period”.
4.
Lakukan juga pada port masukan B dan C.
5.
Setelah itu pada jendela “Simulator Tool” pilih tombol “Start”.
h. Mengimplementasikan Desain 1.
Pilih Processing -> Start Compilation.
2.
Siapkan board FPGA dan pasang kabel FPGA.
3.
Klik Tools -> Programmer -> Hardware Setup -> Add Hardware -> klik 2 kali pada USB-Blaster.
4.
Pada bagian “Mode” pilih “JTAG”.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
5.
Cari file “Tutorial1.sof” kemudian klik “Open”.
6.
Sorot nama file, lakukan checklist pada kolom “Program/Configure”, kemudin klik tombol “Start”. FPGA telah terprogram.
3.
Buat file skematik kosong. Tambah blok FullAdder yang telah dikopi ke file skematik.
4.
Buat rangkaian 4-bit ripple carry adder dengan blok tersebut.
3.5 SIMULASI SEDERHANA MENGGUNAKAN MODELSIM
3.2 MENDESAIN FULL A DDER DENGAN PENDEKATAN B AHASA VHDL
a. Memulai Simulasi dengan Menggunakan Modelsim ALTERA STARTER EDITION 6.4a
a. Membuat Projek Baru Kembali 1.
Klik File -> New Project Wizard
1.
Buka program Modelsim ALTERA STARTER EDITION 6.4a. Pilih “Close” pada tampilan jendela awal.
2.
Buka directory dan cari folder “Tutorial2”.
3.
Beri nama project dan top level entity : “modul2vhdl”.
2.
Pilih File -> Change Directory -> Tentukan folder kerja.
4.
Klik Next. Setelah muncul jendela baru klik Next kembali.
3.
Pilih File -> New -> Library -> Tentukan nama library yang diinginkan.
5.
Pada bagian “Family” pilih Cyclone II dan pada bagian “Available Device” pilih EP2C20F484C7.
6.
Klik finish.
b. Memasukkan Desain VHDL 1.
Klik File -> VHDL File -> OK -> Detach Windows -> simpan dengan nama “modul2vhdl.vhd”.
2.
Ketikkan kode sumber VHDL yang sesuai.
3.
Setelah selesai simpan file.
4.
Ulangi langkah percobaan pertama mulai dari bagian e hingga terakhir.
3.3 MENDESAIN 4-BIT R IPPLE C ARRY A DDER DENGAN VHDL 1. 2.
3.
Buat folder baru dengan nama project dan top-level entity “adder4bit”. Tambahkan file vhdl pada project tersebut dan tuliskan kode sumber vhdl untuk 4bit ripple carry adder. Lakukan simulasi.
3.4 MENDESAIN 4-BIT A DDER DENGAN SKEMATIK 1.
Buat project baru dengan nama project dan top-level entity “adder4bit2”.
2.
Kopi file pendukung yang bernama “FullAdder.bsf” dan “FullAdder.bdf” pada folder project.
b. Menjalankan Simulasi dengan Menggunakan Modelsim ALTERA STARTER EDITION 6.4a 1.
Pilih Compile -> Compile -> Tentukan file -> Compile -> Done.
2.
Pilih Simulate -> Start Simulation -> Tentukan file -> OK.
3.
Buka window simulator -> klik kanan pada file yang ingin disimulasi -> Add -> To Wave -> All item in region.
4.
Pada tiap sinyal, berikan periode clock yang sesuai dengan cara memilih Clock -> Clock -> tentukan nilai periode pada bagian “Period”.
5.
Simulate -> Run -> Ambil data.
6.
Klik kanan pada tiap sinyal -> No Force -> Simulate -> Run -> Ambil data.
7.
Klik kanan pada tiap sinyal -> Force -> Simulate -> Run -> Ambil data.
3.6 MEMBUAT TESTBENCH 1.
Buat folder baru -> Tambahkan file “testbench” dan file “DUT.
2.
Compile file seperti dalam langkah b pada percobaan kelima.
3.
Simulate -> Run -> Ambil data.
4.
Modifikasi stimulus generator sesuai dengan yang diinginkan -> simpan perubahan -> Simulate -> Run -> Ambil data.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
3
3.7 MELAKUKAN PROSES T APPING SINYAL DARI SEBUAH DESAIN
Ketika S bernilai satu LED bagian “SUM” akan mati.
1.
Lakukan modifikasi pada file “DUT” sesuai dengan yang diinginkan.
Ketika Cout bernilai nol LED bagian “Cout” akan menyala.
2.
Simpan perubahan -> Compile file -> Simulasi.
Ketika Cout bernilai satu LED bagian “Cout” akan mati.
3.
Klik kanan pada jendela simulasi -> Add > To Wave -> Selected Items.
4.
Simulate -> Run -> Ambil data.
Ketika input A atau B atau C bernilai satu maka LED yang dinamakan sesuai dengan inputnya pada seven-segment sebelah kanan akan mati, sedangkan LED akan hidup jika nilai input bernilai nol.
[1] 4.
H ASIL DAN A NALISIS
4.1 MENDESAIN FULL A DDER DENGAN SKEMATIK Tabel 4-1 Tabel Kebenaran Full Adder A
B
Cin
S
Cout
0
0
0
0
0
0
0
1
1
0
Gambar 4-2
0
1
0
1
0
Gambar 4-2 menunjukkan keluaran ketika nilai A, B, dan C bernilai satu.
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
Ketika nilai A, B dan C bernilai nol akan menunjukkan keluaran seperti Gambar 4-1. Hasil-hasil lainnya juga menunjukkan hasil sesuai ekspektasi.
Tabel di atas menunjukkan tabel kebenaran dari full adder. Ketika diimplementasikan ke FPGA, berikut ini adalah penjelasan keluaran pada FPGA:
Pada FPGA yang digunakan, LED bersifat active low. Ketika switch tidak ditekan akan berlogika 1 karena ada rangkaian pull up, sedangkan ketika switch ditekan akan berlogika 0. LED akan menyala ketika mendapatkan input low voltage dan mati ketika mendapatkan high voltage. Hasil yang didapat sesuai dengan yang diharapkan. Keluaran pada seven-segment sama persis dengan tabel kebenaran yang ditunjukkan di atas.
Gambar 4-1 Gambar 4-3 Gambar 4-1 menunjukkan hubungan antara seven-segment dengan input dan output. Ketika S bernilai nol LED bagian “SUM” akan menyala.
Dari Gambar 4-3 dapat disimpulkan bahwa rangkaian full adder yang telah dibuat secara skematik berfungsi sesuai dengan yang diharapkan karena hasil sama dengan Tabel 4-1.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
4
4.2
MENDESAIN FULL A DDER DENGAN PENDEKATAN B AHASA VHDL
0
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
0
0
0
1
1
1
0
1
0
0
0
1
0
0
0
0
1
0
1
1
1
0
1
0
1
1
0
0
0
0
1
1
1
0
0
0
0
1
0
0
1
0
0
1
0
0
1
1
1
0
1
0
1
0
1
0
0
1
0
1
1
0
0
0
0
1
Gambar 4-4
0
1
1
0
0
1
1
0
1
0
1
1
1
0
Saat disimulasi dan diimplementasi pada FPGA, hasil keluaran sama persis dengan percobaan pertama pada bagian 4.1 seperti ditunjukkan Gambar 4-4. Hal ini menunjukkan perancangan rangkaian logika baik dengan cara skematik maupun VHDL akan menghasilkan hasil yang sama. Namun, kedua cara tersebut memiliki kelebihan dan kekurangan. Jika rangkaian logika yang dibuat adalah rangkaian yang kecil atau dengan kata lain tidak kompleks, maka cara skematik menjadi efisien karena rangkaian yang tidak kompleks cenderung tidak memerlukan banyak logic gate sehingga proses pembuatan skematik hanya membutuhkan waktu yang singkat. Kalau rangkaian yang tidak kompleks dibuat dengan VHDL cenderung kurang efisien karena dalam pembuatan VHDL memerlukan pembuatan deklarasi yang cenderung memakan waktu. Selain itu cara skematik cenderung lebih manusiawi karena memerlukan intuisi visual manusia. Jika rangkaian yang dirancang tidak kompleks, maka perancangan dengan cara skematik akan lebih baik karena intuisi visual manusia masih dapat bekerja dengan baik pada rangkaian yang tidak kompleks. Namun, ketika rangkaian logika yang akan dirancang merupakan rangkaian yang kompleks, cara VHDL menjadi lebih efisien karena cara VHDL lebih terstruktur dibandingkan skematik. Ketika cara skematik digunakan untuk merancang rangkaian logika yang kompleks intuisi visual manusia tidak akan bekerja dengan baik sehingga dapat menyebabkan terjadinya kesalahan perancangan.
1
1
1
0
0
1
1
1
1
1
1
0
0
1
4.3
Dalam percobaan ini, ada delapan data yang diambil. Berdasarkan hasil tersebut, rangkaian yang telah dibuat sesuai dengan yang diharapkan.
Gambar 4-4 Data hasil simulasi ditunjukkan pada Gambar 4-4 merupakan hasil simulasi dan menunjukkan hasil yang sama dengan Tabel 4-3. Dari hasil ini dapat disimpulkan bahwa rangkaian yang telah dibuat dengan VHDL telah berfungsi dengan baik seperti yang ditunjukkan oleh hasil simulasi. 4.4 MENDESAIN 4-BIT A DDER DENGAN SKEMATIK
MENDESAIN 4-BIT R IPPLE C ARRY A DDER DENGAN VHDL
Tabel 4-3 Tabel input 4-bit Adder A A A A B B B B C 0 1 2 3 0 1 2 3 i n
S 1
S 2
S 3
S 0
C o ut Gambar 4-5 Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
5
Hasil yang ditunjukkan sama persis dengan hasil percobaan sebelumnya seperti yang ditunjukkan pada Gambar 4-5. Ini menunjukkan bahwa cara skematik menghasilkan keluaran yang sama dengan VHDL seperti yang diharapkan. Dari hasil ini, dapat disimpulkan bahwa cara skematik dan VHDL menghasilkan keluaran yang sama seperti yang ditunjukkan oleh hasil simulasi. 4.5
nilai yang sama seperti saat sebelum “No Force” diberikan. Ini menunjukkan bahwa “No Force” menghentikan clock dan hanya meneruskan sinyal terakhir input. Meskipun demikian, hasil keluaran tetap sesuai dengan yang diharapkan.
SIMULASI SEDERHANA MENGGUNAKAN MODELSIM
Gambar 4-7 Gambar 4-7 menunjukkan sinyal input yang diberi “Force” yang bernilai nol. Force berarti memaksakan nilai pada input sehingga nilai sesuai dengan nilai yang kita berikan. Meskipun demikian, hasil keluaran tetap sesuai dengan yang diharapkan yaitu s dan cout bernilai nol karena a, b, dan cin bernilai nol. Gambar 4-5 4.6
MEMBUAT TESTBENCH
Dari hasil Gambar 4-5 semua keluaran sesuai dengan yang diharapkan. Ini menunjukkan simulasi ini telah memverifikasi bahwa rancangan logika yang telah dibuat telah sesuai dengan yang diharapkan.
Gambar 4-8 Gambar 4-6 Gambar 4-6 menunjukkan apa yang terjadi ketika setiap sinyal input diberi “No Force”. Sinyal setelah fitur “No Force” diaktifkan menunjukkan
Hasil yang ditunjukkan Gambar 4-8 sesuai dengan yang diharapkan. Pada percobaan ini sebenarnya sama dengan percobaan sebelumnya, hanya saja kita dapat langsung memulai simulasi tanpa
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
6
memberikan clock karena clock telah diberikan oleh testbench.
Gambar 4-9 menunjukkan hasil dari proses tapping sinyal. Dalam kasus ini, sinyal yang di tap adalah TEMP = A XOR B. Dari hasil tapping sinyal, hasilnya sesuai dengan yang diharapkan artinya sinyal ini tidak menyebabkan error pada output yang sebenarnya. Proses tapping ini sebenarnya berguna untuk mengambil nilai sinyal antara. Dengan cara ini, jika terjadi kesalahan pada keluaran output dapat mengecek setiap sinyal antara dimana terjadi kesalahan. Dengan menggunakan tapping sinyal ini, dapat diketahui lebih detail bagian yang salah sehingga dapat memudahkan user ketika ingin melakukan troubleshooting. 5.
Gambar 4-9 Gambar 4-9 menunjukkan hasil stimulus kedua. Stimulus ini bekerja dengan cara mengganti nilai input pada selang tertentu tanpa mengembalikannya. Nilai a diganti dari nol menjadi satu pada selang 50ps. Nilai b diganti dari nol menjadi satu pada selang 100ps sedangkan nilai cin diganti pada selang 200ps. Stimulus ini kurang baik karena tidak semua kemungkinan input terjadi sehingga stimulus ini tidak dapat membuktikan secara penuh bahwa rangkaian ini bekerja dengan baik. 4.7
MELAKUKAN PROSES T APPING SINYAL DARI SEBUAH DESAIN
Gambar 4-9
K ESIMPULAN
Pemahaman software pendukung perancangan rangkaian logika merupakan hal yang penting karena dapat memudahkan kita dalam merancang rangkaian yang kompleks. Dalam modul kali ini telah dilakukan tujuh percobaan mengenai software yang berkaitan dengan rangkaian logika. Pada percobaan pertama dan kedua dapat disimpulkan bahwa perancangan rangkaian full adder dengan menggunakan cara skematik dan VHDL menghasilkan keluaran yang sesuai dengan harapan. Pada percobaan ketiga dan keempat juga telah dibuktikan bahwa perancangan rangkaian 4-bit ripple carry adder dengan cara skematik dan VHDL juga menghasilkan keluaran yang benar. Dari keempat percobaan tersebut dapat disimpulkan cara apapun yang digunakan jika langkah yang dikerjakan telah sesuai maka hasil keluaran akan menghasilkan hasil yang sama dan sesuai dengan referensi. Namun, cara skematik akan menjadi tidak efisien jika digunakan untuk merancang rangkaian yang kompleks karena cara tersebut sangat bergantung pada intuisi visual manusia. Cara VHDL menjadi sangat efisien ketika merancang rangkaian yang kompleks karena cara tersebut lebih terstruktur dibandingkan dengan cara skematik. Pada percobaan kelima telah dilakukan simulasi rangkaian full adder, yang dibuat dengan VHDL, dengan Modelsim®. Hasil simulasi juga menunjukkan hasil yang sesuai dengan ekspektasi. Namun, ada sedikit fitur yang dicoba dalam Modelsim®, yaitu simulasi dengan “No Force” dan “Force”. Ketika “No Force” diaktifkan, maka sinyal setelah fitur tersebut diaktifkan akan menunjukkan nilai yang sama seperti saat sinyal sebelum fitur tersebut diaktifkan. Ketika “Force” diaktifkan, maka sinyal yang tersebut akan sama dengan nilai force yang user berikan. Kemudian, pada percobaan keenam dilakukan percobaan simulasi dengan testbench. Testbench digunakan untuk menguji rangkaian
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
7
logika dengan cara memberi sinyal stimulus masukan dan menguji kebenaran keluaran desain. Hasil yang diperoleh menunjukkan bahwa desain telah sesuai dengan yang diharapkan. Namun, stimulus pertama dan kedua menghasilkan nilai yang berbeda karena kedua stimulus tersebut berbeda. Pada stimulus pertama, setiap sinyal input full adder diberi clock masing-masing sebesar 50ps untuk sinyal A, 100ps untuk sinyal B, dan 200ps untuk sinyal C. Hasilnya setiap kemungkinan input terjadi dan ouput yang dihasilkan pun sesuai dengan yang diharapkan. Stimulus kedua merupakan stimulus yang hanya mengubah nilai input pada saat tertentu. Stimulus kedua merupakan stimulus yang kurang baik karena semua kemungkinan input tidak terjadi sehingga kebenaran rangkaian tidak sepenuhnya dapat dibuktikan dengan stimulus ini. Pada percobaan terakhir dibuktikan bahwa dengan cara tapping sinyal, kita dapat mengetahui lebih detail nilai sinyal antara sehingga dapat memudahkan user dalam melakukan proses troubleshooting. D AFTAR PUSTAKA [1]
Mervin T. Hutabarat, Praktikum Sistem Digital , Laboratorium Dasar Teknik Elektro, ITB, 2014.
[2]
Stephen Brown dan Zvonko Vranesic, Fundamentals of DIGITAL LOGIC with VHDL Design, McGraw-Hill, New York, 2009.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
8