Anda di halaman 1dari 8

MODUL 2 Pengenalan Desain Menggunakan FPGA

Tanggal Percobaan: 09/10/2014


EL2102-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
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.
2.1

STUDI 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

ADDER

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

3.1

MENDESAIN FULL ADDER 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.

3.

Menjalankan program Quartus II 9.0 sp2


Web Edition.

5.

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.
berikutnya

6.

Pada
kolom
Tutorial1.

7.

Klik Next, setelah muncul jendela baru


klik Next kembali.

8.

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
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.

Functional

Simulation

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

4.

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

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.2 MENDESAIN FULL ADDER DENGAN


PENDEKATAN BAHASA VHDL

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
a. Memulai Simulasi dengan Menggunakan
Modelsim ALTERA STARTER EDITION 6.4a

a. Membuat Projek Baru Kembali


1.

Klik File -> New Project Wizard

1.

Beri nama project dan top level entity :


modul2vhdl.

Buka program Modelsim ALTERA


STARTER EDITION 6.4a. Pilih Close
pada tampilan jendela awal.

2.

Buka directory dan cari folder Tutorial2.

3.

2.

4.

Klik Next. Setelah muncul jendela baru


klik Next kembali.

Pilih File -> Change Directory -> Tentukan


folder kerja.

3.

5.

Pada bagian Family pilih Cyclone II dan


pada bagian Available Device pilih
EP2C20F484C7.

Pilih File -> New -> Library -> Tentukan


nama library yang diinginkan.

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 RIPPLE CARRY ADDER


DENGAN VHDL
1.

Buat folder baru dengan nama project dan


top-level entity adder4bit.

2.

Tambahkan file vhdl pada project tersebut


dan tuliskan kode sumber vhdl untuk 4bit ripple carry adder.

3.

Lakukan simulasi.

3.4 MENDESAIN 4-BIT ADDER 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.7 MELAKUKAN PROSES TAPPING 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.

HASIL DAN ANALISIS

4.1 MENDESAIN FULL ADDER DENGAN


SKEMATIK
Tabel 4-1 Tabel Kebenaran Full Adder
A

Cin

Cout

Gambar 4-2

Gambar 4-2 menunjukkan keluaran ketika nilai A,


B, dan C bernilai satu.

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:

Gambar 4-1
Gambar 4-1 menunjukkan hubungan
seven-segment dengan input dan output.

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-3
antara

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.2

MENDESAIN FULL ADDER DENGAN


PENDEKATAN BAHASA VHDL

Gambar 4-4

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.

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 ADDER DENGAN


SKEMATIK

MENDESAIN 4-BIT RIPPLE CARRY ADDER


DENGAN VHDL

Tabel 4-3 Tabel input 4-bit Adder


A A A A B
0 1 2 3 0

B
1

B
2

B
3

C
i
n

S
1

S
2

S
3

S
0

C
o
ut
Gambar 4-5
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

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
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.

4.6

MEMBUAT TESTBENCH

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

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 TAPPING


SINYAL DARI SEBUAH DESAIN

Gambar 4-9

KESIMPULAN

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

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.

DAFTAR 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