Modul Praktikum
FPGA
TEKNIK SISTEM KOMPUTER 2
Modul praktikum ini berisi tentang pengenalan teknologi FPGA (Field
Programmable Gate Array) dan bahasa pemrograman VHDL (Very Hight Speed
Intregrated Circuit hardware Description language). Pada modul ini akan dipelajari
tentang bagaimana cara mengembangkan rangkaian logika dan sistem pada IC
FPGA serta memahami keuntungan penggunaan teknologi FPGA.
Laboratorium Teknik Digital
Teknik Elektro
Universitas Lampung
KATA PENGANTAR
Segala puji bagi Allah SWT atas segala rahmat, karunia, dan petunjuk-Nya, sehingga modul praktikum teknik
Sistem Komputer 2 ini dapat diselesaikan.
Modul praktikum ini berisi tentang pengenalan teknologi FPGA (Field Programmable Gate Array) dan bahasa
pemrograman VHDL (Very Hight Speed Intregrated Circuit hardware Description language). Pada modul ini
akan dipelajari tentang bagaimana cara mengembangkan rangkaian logika dan sistem pada IC FPGA serta
memahami keuntungan penggunaan teknologi FPGA.
Pada modul praktikum ini berbagai atas empat modul, pertama tentang pengenalan teknologi FPGA dan
mendesain rangkaian logika dengan menggunakan rangkaian skematik, kedua tentang mendesain rangkaian
logika dengan menggunakan pemrograman VHDL, yang ketiga tentang membuat program VHDL berdasarkan
FSM (Finite State Machine), keempat tentang menggabungkan beberapa modul rangkaian logika menjadi satu
modul rangkaian logika. Tujuan akhir dari praktikum ini adalah mahasiswa dapat merancang dan
mengimplementasikan rangkaian elektronika terutama system digital ke dalam satu chip.
Penulis menyadari Modul Praktikum Teknik Sistem Komputer 2 ini masih memiliki beberapa kekurangan, untuk
itu kritik dan saran yang bersifat membangun untuk perbaikan Panduan Praktikum ini sangatlah diperlukan.
Tim Asisten FPGA
i
SAMBUTAN
Assalamualaikum warohmatullahi wabarokatuh.
Alhamdulillah, kami ucapkan syukur ke hadirat ALLAH SWT, bahwa berkat rahmat dan karunia-Nya, kami masih
diberikan kesempatan untuk melaksanakan kegiatan Praktikum Teknik Sistem Komputer 2.
Praktikum Teknik Sistem Komputer 2 merupakan pengimplementasian atau kegiatan praktik untuk
menerapkan teori yang sudah dipelajari dalam mata kuliah. Tentunya ilmu yang akan didapatkan dalam
praktikum ini akan lebih bertambah dan lebih berkembang jika praktikum ini dilaksanakan dengan sebaik-
baiknya.
Perkembangan teknologi dewasa ini telah membuat dunia menjadi lebih dinamis dan komunikatif.
Perkembangan ini tidak terlepas dari peran serta insan teknik elektro serta ilmu pengetahuan yang tercakup di
dalamnya. Sehingga kita harus menambah pengetahuan untuk ikut serta dalam mengembangkan teknologi
agar semakin maju dan berdampak positif bagi kehidupan manusia.
Ucapan terima kasih, kami sampaikan kepada Ketua Jurusan Teknik Elektro Unila, segenap dosen, teknisi dan
staf Laboratorium Teknik Digital, karyawan dan mahasiswa Teknik Elektro Universitas Lampung, atas dukungan
dan perhatian yang telah diberikan.
Semoga ilmu yang diperoleh dalam Praktikum ini dapat dimanfaatkan dengan sebaik-baiknya.
Wassalamualaikum warohmatullahi wabarokatuh.
Dosen Penanggung Jawab
Yuliarto Rahardjo, S.T., M.T.
ii
DAFTAR ISI
KATA PENGANTAR.................................................................................................................................................... i
SAMBUTAN ............................................................................................................................................................. ii
Daftar Isi ................................................................................................................................................................. iii
MODUL 1: Pengenalan Teknologi FPGA (Skematik) ................................................................................................ 1
Tujuan ................................................................................................................................................................. 1
Kompetensi ......................................................................................................................................................... 1
Teori Dasar.......................................................................................................................................................... 1
Arsitektur FPGA .............................................................................................................................................. 2
FPGA – Mikrokontroler................................................................................................................................... 2
Programmable Logic - Design Flow Secara Umum ......................................................................................... 2
Aplikasi FPGA .................................................................................................................................................. 3
Pemrograman IC FPGA ............................................................................................................................... 4
Peralatan............................................................................................................................................................. 4
Prosedur Praktikum ............................................................................................................................................ 4
Gambaran Disain ............................................................................................................................................ 4
Rangkaian Counter sinkron ............................................................................................................................ 5
Memanfaatkan rancangan sebelumnya ....................................................................................................... 18
Hasil Pengujian ................................................................................................................................................. 21
Analisa .............................................................................................................................................................. 21
Tugas................................................................................................................................................................. 21
MODUL II: Perancangan FPGA Dengan Beberapa Cara (behavioral, dataflow, structural)................................... 22
Tujuan ............................................................................................................................................................... 22
Kompetensi ....................................................................................................................................................... 22
Dasar Teori........................................................................................................................................................ 22
Arsitektur Standar dalam VHDL.................................................................................................................... 23
Peralatan........................................................................................................................................................... 25
Prosedur Percobaan ......................................................................................................................................... 25
Gambaran Disain .......................................................................................................................................... 25
Hasil Pengujian ................................................................................................................................................. 35
Analisa .............................................................................................................................................................. 35
Tugas................................................................................................................................................................. 35
MODUL III: Perancangan VHDL Berdasarkan FSM (Finite State Machine) ............................................................ 36
Tujuan ............................................................................................................................................................... 36
Kompetensi ....................................................................................................................................................... 36
iii
Dasar Teori........................................................................................................................................................ 36
Peralatan .......................................................................................................................................................... 36
Prosedur Praktikum .......................................................................................................................................... 37
Gambaran Design ......................................................................................................................................... 37
Hasil Pengujian ................................................................................................................................................. 45
Analisa .............................................................................................................................................................. 45
Tugas................................................................................................................................................................. 45
MODUL IV: Penggabungan modul ......................................................................................................................... 46
Tujuan ............................................................................................................................................................... 46
Kompetensi ....................................................................................................................................................... 46
Dasar Teori........................................................................................................................................................ 46
Peralatan........................................................................................................................................................... 47
Prosedur Praktikum .......................................................................................................................................... 47
Gambaran Disain .......................................................................................................................................... 47
Modul Selector ............................................................................................................................................. 48
kaki-kaki pin ............................................................................................................................................. 49
BCD to 7-segment Decoder .......................................................................................................................... 50
Kaki-kaki pin ............................................................................................................................................. 51
Modul 4:8 decoder ....................................................................................................................................... 51
kaki-kaki pin ............................................................................................................................................. 52
Menggabungkan ketiga modul tersebut (vhdl – vhdl) ................................................................................. 53
Kaki-kaki pin ............................................................................................................................................. 54
Menggabungkan ketiga modul tersebut (vhdl – skematik) .......................................................................... 56
Kaki-kaki pin ............................................................................................................................................. 56
Hasil Pengujian ................................................................................................................................................. 57
Analisa .............................................................................................................................................................. 57
Tugas................................................................................................................................................................. 57
iv
MODUL 1: PENGENALAN TEKNOLOGI FPGA (SKEMATIK)
TUJUAN
Pada Percobaan ini praktikan akan dikenalkan dengan salah satu teknologi IC VLSI yaitu Teknologi FPGA
(Field Programmable gate Array) di sini praktikan akan mempelajari tentang bagaimana cara
mengembangkan sistem pada IC FPGA dan memahami keuntungan penggunaan teknologi FPGA. Karena
percobaan kali ini adalah percobaan pertama maka praktikum akan difokuskan pada pengenalan terhadap proses
yang terjadi di dalam internal IC FPGA ketika diprogram serta penggunaan Development Board XC3S500E
sekaligus pemrogramannya menggunakan software ISE Webpack.
KOMPETENSI
Setelah menyelesaikan percobaan ini diharapkan praktikan mempunyai kemampuan untuk :
1. Menjelaskan arsitektur dasar IC FPGA
2. Memahami keuntungan penggunaan teknologi FPGA
3. Mengembangkan sistem sederhana pada FPGA dengan menggunakan software ISE Webpack dengan
pendekatan berbasis schematic
4. Membuat rangkaian sederhana secara schematic, synthesis, simulasi, implementasi dan me-upload file
*.bit pada Development Board XC3S500E.
TEORI DASAR
Gambar I. hierarki FPGA
Field-Programmable Gate Array (FPGA) adalah komponen elektronika dan semikonduktor yang mempunyai
komponen gerbang terprogram (programmable-logic) dan sambungan terprogram. Komponen gerbang
terprogram yang dimiliki meliputi jenis gerbang logika biasa (AND, OR, XOR, NOT) maupun jenis fungsi matematis
dan kombinasional yang lebih kompleks (decoder, adder, subtractor, multiplier, dan lain-lain). Blok-blok komponen
1
di dalam FPGA bisa juga mengandung elemen memori (register) mulai dari flip-flop sampai pada Random Access
Memory (RAM).
ARSITEKTUR FPGA
Masing-masing vendor FPGA mempunyai arsitektur sendiri, tetapi secara umum adalah seperti pada gambar 2.
Arsitekturnya terdiri dari Configurable Logic Block, Configurable I/O Block, dan Programmable Interconnect.
Gambar 2 Arsitektur FPGA
Configurable Logic Blocks (CLB) memuat logika untuk FPGA. Secara lebih detail, CLB memuat logic cell.
Pada dasarnya, sebuah logic cell tersusun atas sebuah Look Up Table (LUT) kecil, sebuah D Flip Flop, dan
sebuah 2 to 1 mux.
Gambar 3. CLB
Configurable I/O Block sebagai interface antara external package pin dari device dan internal user logic
Interconnect adalah jaringan terprogram bagi jalannya sinyal antara input dan output pada elemen-
elemen fungsional di dalam FPGA seperti CLB, IOB, DCM, dan Block RAM.
FPGA – MIKROKONTROLER
FPGA mengimplementasikan elemen-elemen logika terprogram, bekerja secara paralel
Mikrokontroler bekerja berdasarkan arsitektur CPU, mengeksekusi sekumpulan instruksi secara sekuensial
PROGRAMMABLE LOGIC - DESIGN FLOW SECARA UMUM
Design Entry, dapat dibuat dengan cara schematic atau HDL (Hardware Description Language) seperti ABEL,
VHDL, dan/atau Verilog.
2
Implementation, yaitu terdiri dari tahap pemetaan, placement, routing termasuk pula bitstream generation,
timing analyzing dan layout viewing
Download, yaitu meng-upload bitstream ke Hardware (FPGA chip)
Gambar 4. Xilinx SPARTAN-3E STARTER KIT
APLIKASI FPGA
- Prototyping
o Ideal untuk aplikasi pembuatan prototipe
- On-site re-configuration of hardware
o yaitu aplikasi hardware yang bisa dikonfigurasi ulang secara cepat
- FPGA-based computation engines
- FPGA sebagai processor aplikasi komputasi
3
P EMROGRAMAN IC FPGA
Gambar 5. Proses Pemrograman IC FPGA
PERALATAN
1. Satu set PC yang dilengkapi dengan software ISE WebPack versi 10.1 atau lebih serta software ModelSim.
2. 1 development board XC3S500E
3. 1 power-supply +9V
4. 1 kabel data
PROSEDUR PRAKTIKUM
GAMBARAN DISAIN
Pada percobaan ini sebagai contoh akan dibuat dua macam rancangan rangkaian, yang pertama adalah
membuat counter sinkron 3 bit dari beberapa Flip-Flop dengan input clock dari push button serta
menampilkan output counter pada bar LED pada development board XC3S500E. Rangkaian yang kedua
adalah dengan membuat simbol baru dari rangkaian pertama kemudian memanfaatkannya bersama
decoder 3 to 8.
4
RANGKAIAN COUNTER SINKRON
1. Jalankan software ISE WebPACK dengan mengklik ganda icon pada desktop. Maka akan muncul
jendela kosong seperti gambar 4.
Gambar 6. Jendela ISE WebPACK Project Navigator
2. Buat Project baru dengan memilih >> File >> New Project pada menu bar
Gambar 7. Membuat Project baru
3. Klik tombol dengan tiga titik untuk memilih folder tempat untuk menyimpan project yang akan dibuat.
Gambar 8. Mengatur lokasi project
4. Letakkan project pada direktori D:\PRAKTIKUM_TSK2\[NAMA_DAN_NPM]\ kemudian klik tombol OK.
5. Beri nama project dengan nama counter3bit, secara otomatis pada Project Location akan ditambahkan
nama direkori yang sama. Pada list Top-Level Module Type pilih Schematic. Kemudian klik tombol NEXT.
5
Gambar 9. Memberi nama project dan mengatur jenis Top Level Module
6. Masukkan parameter seperti gambar 10. Kemudian klik tombol NEXT sampai tiga kali, konfigurasi yang ada
tidak perlu diubah, kemudian klik tombol FINISH. Maka akan tampak seperti gambar 11. Persiapan project
counter3bit telah selesai.
Device Family: Spartan3E
Device: XC3S500E
Package: FG320
Speed: -4
Top-Level Source Type: Schematic
Gambar 10. Menentukan Jenis Device yang akan diprogram
6
Gambar 11. Hasil pembuatan project baru, masih kosong
7. Sekarang akan dibuat disain rangkaian counter sinkron secara schematic. Dimulai dengan menambahkan
file Schematic ke dalam project counter3bit. Klik kanan obyek xc3s500e-4fg320 sehingga muncul pop-
up window dan pilih New Source.
Gambar 12. Membuat source baru
7
8. Beri nama file dengan nama counter_ku dan pilih Schematic module. Kemudian klik tombol next.
Gambar 13. Menentukan parameter source baru yang akan dibuat
9. Selanjutnya anda akan mendapatkan jendela konfirmasi NEW SOURCE INFORMATION klik FINISH
untuk melanjutkan.
10. Maka anda akan mendapatkan halaman Xilinx ECS kosong untuk membuat rancangan schematic.
Gambar 14. Jendela Xilinx ECS tempat membuat module schematic
8
11. Klik tab Symbol untuk mendapatkan Sources Schematic Library seperti gambar 15 berikut
Gambar 15. Schematic Library
12. Pilih FJKC pada symbol untuk merancang Counter
Gambar 16. Mengambil Symbol FJKC (JK Flip-Flop dengan fasilitas Clear)
9
13. Dengan memanfaatkan symbol-simbol yang tersedia buatlah rangkaian counter sinkron 3-bit dari 3 buah
flip-flop seperti gambar berikut:
Gambar 17. rangkaian counter sinkron 3-bit dari 3 buah flip-flop
14. Lakukan check schematic dengan menekan tombol , apabila anda berhasil mendapatkan pesan seperti
di bawah ini maka schematic anda tidak ada kesalahan. Close pesan dan simpan schematic. Jika ada error
maka perbaiki dahulu dan cek lagi sampai tidak ada kesalahan.
Gambar 18. Konfirmasi hasil check schematic
15. Selanjutnya melakukan synthesis rancangan yang telah dibuat dengan cara melakukan klik ganda pada
synthesize XST
Gambar 19. Melakukan synthesis rancangan yang telah dibuat
Jika proses synthesis berhasil maka anda akan mendapatkan pesan bahwa proses synthesis berhasil.
Gambar 20. Proses synthesis telah berhasil
10
16. Langkah selanjutnya adalah menentukan lokasi pin-pin FPGA yang digunakan dengan cara klik dobel pada
User Constrains >> Floorplan Area / IO / Logic – post synthesis
Gambar 21. Pada tab Processes
Maka software PACE pendukung Xilinx ISE akan terbuka
Gambar 22. Edit Constraint untuk menentukan lokasi pin-pin FPGA
17. Selanjutnya edit/isi file counter_ku.ucf ini sesuai dengan lokasi pin yang kita gunakan yaitu:
NET "CLEAR" LOC = K17";
NET "CLOCK" LOC = C9";
NET "D0" LOC = "F12" ;
NET "D1" LOC = "E12" ;
NET "D2" LOC = "E11" ;
CATATAN: nama NET harus sama persis dengan nama pin pada file schematic
11
Pelokasian net di atas sesuai dengan input/output name pada board Spartan-3E (lihat gambar)
Gambar 23. Input output pada board Spartan-3E yang di gunakan
Gambar 20. Edit Constraint file counter_ku.ucf ini sesuai dengan lokasi pin yang kita gunakan
Kemudian save file
12
18. Langkah selanjutnya adalah melakukan simulasi , sebelumnya harus dibuat terlebih dahulu file Test Bench
Waveform, beri nama file simul_counter selanjutnya pilih NEXT dan pastikan source file-nya counter_ku
dan NEXT sampai FINISH
Gambar 23. Membuat file Test bench untuk melakukan simulasi
Apabila berhasil maka anda mendapatkan gambar berikut, pilih OK
Gambar 24. Mengatur pulsa clock
13
19. Sekarang anda telah mendapatkan source file untuk simulasi, Selanjutnya untuk mengedit file, lakukan
dengan cara mengklik pada gambar sinyal. Kemudian SAVE
Gambar 25. Contoh file Test bench untuk melakukan simulasi
Selanjutnya tentukan batas akhir simulasi dengan klik kanan lalu pilih Set End of Testbench.
(Untuk versi ISE WEBPACK 10.1 cukup isi batas akhir waktu simulasi)
Gambar 26. Mengatur batas akhir simulasi
20. Untuk memulai simulasi pilih source => Behavioral Simulation Process => Simulate Behavioral Model
Gambar 27. Memulai proses simulasi
maka secara otomatis software MODELSIM akan aktif dan menggambarkan hasil simulasi
CATATAN: Simulasi yang dilakukan pada tahap ini adalah simulasi jenis FUNCTIONAL SIMULATION
14
Gambar 28. Contoh hasil simulasi
Untuk melakukan simulasi lagi dengan nilai input yang berbeda maka software MODELSIM
harus ditutup dahulu dan ulangi kembali ke langkah 19.
21. Apabila hasil simulasi telah sesuai dengan yang diharapkan maka langkah selanjutnya adalah
mengimplementasikan rancangan pada IC FPGA dengan cara melakukan double- klik pad Implement
Design. Pada tahap ini software melakukan proses MAP, PLACE dan ROUTE secara otomatis mengatur
penggunaan resource pada FPGA.
Gambar 29. Melakukan Implement Dsign (Implementasi hasil perancangan)
22. Lakukan simulasi sebagaimana langkah 20, kali ini pilih simulate Post-Route Simulation VHDL Module
CATATAN: Simulasi yang dilakukan pada tahap ini adalah simulasi jenis TIMING SIMULATION
15
Gambar 30. Melakukan simulasi TIMING
23. Langkah selanjutnya adalah membuat file *.bit yang nantinya akan di-upload-kan pada FPGA. Dengan
cara melakukan double-Klik pada Generate Programming File.
Gambar 31. Membuat file *.bit
24. Langkah selanjutnya adalah me-upload programming file (counter_ku.bit) ke IC FPGA dengan bantuan
software IMPACT. Dengan cara double klik Configure Target Device. Pilih counter_ku.bit
16
Gambar 32. Proses configure Target Device
Kemudian pilih xc3s500e sebagai target device
Gambar 33. Proses set target device
Selanjutnya klik kanan assign new configuration dan pilih counter_ku.bit lalu klik. Lalu klik kanan pilih
Program.
25. Langkah selanjutnya adalah me-download pada Development Board XC3S500E.
17
MEMANFAATKAN RANCANGAN SEBELUMNYA
Pada percobaan selanjutnya akan dibuat rangkaian yang memanfaatkan rangkaian counter3bit yang telah dibuat
sebelumnya.
26. Langkah pertama adalah dengan mengedit counter_ku.sch dengan menghilangkan semua buffer (IBUF
maupun OBUF).
Gambar 34. Hasil proses edit pada file counter_ku.sch
27. Membuat simbol baru dari rancangan sebelumnya dengan cara melakukan double-klik pada Create
Schematic Symbol. Maka secara otomatis akan dihasilkan simbol baru.
Gambar 35. Membuat symbol baru dari hasil rancangan sebelumnya
28. Langkah selanjutnya adalah membuat file Schematic baru seperti pada langkah 7, 8, 9, dan10. Beri
nama counter_dekoder
29. Pastikan bahwa telah terbuat simbol komponen baru pada XILINX ECS, gunakan simbol komponen ini
untuk dirangkai bersama Dekoder
18
Gambar 36. Symbol baru yang digunakan pada file schematic counter_dekoder
30. Dengan memanfaatkan symbol-symbol yang tersedia buatlah rangkaian yang menghubungkan komponen
counter_ku dengan dekoderD3_8E (3 to 8) dan Rangkaian.
Gambar 37. Hasil perancangan
31. Selanjutnya lakukan langkah 14 s.d. 24 sebagaimana percobaan sebelumnya. Untuk Lokasi pin pada FPGA
gunakan data sebagai berikut:
net CLOCK loc=B8; #pin CLOCK
net CLEAR loc=K17; #pin CLEAR
net D0 loc=F12; #pin D0
net D1 loc=E12; #pin D1
net D2 loc=E11; #pin D2
net D3 loc=F11; #pin D3
net D4 loc=C11; #pin D4
net D5 loc=D11; #pin D5
net D6 loc=E9; #pin D6
net D7 loc=F9; #pin D7
net KOMBI loc=B4; #pin KOMBI
32. setelah itu lihat BARLED
19
33. Langkah berikutnya adalah langkah untuk mengetahui apa yang terjadi di dalam FPGA setelah di program.
Klik Ganda pada Implement Design -> View/Edit Place Design (Floorplanner)
Gambar 38. Hasil perancangan
Gambar 39. Floorplannerini
pada floorplannerini akan tampak lokasi komponen yang terpakai pada FPGA, CATAT DATA YANG
DIDAPAT.
20
HASIL PENGUJIAN
Sebagai laporan sementara dan data pengujian maka lakukan percobaan untuk melengkapi lampiran Hasil
Pengujian pada lembar yang telah tersedia (Lampiran 1. Lembar Hasil Pengujian)
ANALISA
1. Seperti telah diketahui sebelumnya, tahapan utama desain sistem pada FPGA menggunakan Xilinx ISE
Webpack terdiri dari Design Entry, Synthesis, Design Implementation dan Device Programming. Jelaskan
proses-proses yang terjadi pada masing-masing tahap!
2. Jelaskan Tahap-tahap dalam menjalankan simulasi, baik functional maupun timing!
3. Apa perbedaan antara functional simulation dan timing simulation?
4. Analisa informasi yang anda dapat dari file synthesis report.
Gambar 40. Bagaimana cara mendapatkan Synthesis report
TUGAS
1. Apa yang dimaksud dengan proses Synthesis?
2. Jelaskan perbedaan antara Simulasi FUNCTIONAL dan Simulasi TIMING.
3. Kenapa harus dilakukan proses EDIT CONSTRAIN?
4. Lampirkan cetakan synthesis report serta Place&Route report dan berikan penjelasan anda
21
MODUL II: PERANCANGAN FPGA DENGAN BEBERAPA
CARA (BEHAVIORAL, DATAFLOW, STRUCTURAL)
TUJUAN
Pada percobaan ini praktikan akan mempelajari tentang bagaimana cara mengembangkan rangkaian logika dengan
berbagai cara pemrograman pada FPGA. Metode yang digunakan untuk dengan pemrograman VHDL.
KOMPETENSI
Setelah menyelesaikan percobaan ini diharapkan praktikan mempunyai kemampuan untuk:
1. Mengembangkan rangkaian logika sequential dan combinational pada FPGA
2. Menjelaskan struktur pemrograman VHDL
3. Mampu mendeskripsikan sirkuit secara Behavioural, Dataflow atau Structural
DASAR TEORI
Very high speed integrated circuit Hardware Description Language (VHDL) adalah sebuah bahasa program
yang digunakan untuk mendesain dan melakukan modeling dari suatu sistem perangkat keras digital, circuit
board, atau komponen.
Secara umum struktur dari pemrograman VHDL terdiri atas dua bagian yaitu bagian ENTITY dan bagian
ARCHITECTURE.
Bagian ENTITY menjelaskan spesifikasi pin-pin eksternal yang digunakan dari sirkuit atau rancangan yang
akan dibuat.
entity ANDGATE
is port (
IN1 : in std_logic;
IN2 : in std_logic;
OUT1: out std_logic);
end entity ANDGATE;
22
Bagian ARCHITECTURE menjelaskan atau mewakili fungsi sesungguhnya dari sirkuit atau
rangkaian. Contoh:
A[8]
B[8]
8-bit Comparator
ENTITY compare IS
PORT (a, b: IN bit_vector(0 TO 7);
eq: OUT bit);
END compare;
ARCHITECTURE compare1 OF compare
IS BEGIN
ARSITEKTUR STANDAR DALAM VHDL
Ada 3 pendekatan berbeda dalam menuliskan arsitektur VHDL. Ketiga pendekatan tersebut adalah dataflow,
structural dan behavioral.
1. Behavioural
Didesain berdasarkan Algoritma
2. Dataflow (RTL)
Didesain berdasarkan alur register data. Fungsi dari rangkaian dijelaskan dengan mendefinisikan
aliran informasi dari satu register (input) ke register lain (output).
3. Structural
Metode ini sama saja dengan representasi skematik, karena hubungan tiap komponen diperlihatkan
23
Contoh Deskripsi behavioural
Contoh Deskripsi DataFlow
Contoh Deskripsi Structural
Tidak seperti bahasa program pada umumnya, misalnya C atau Pascal, di mana eksekusi untuk setiap statement
dilakukan satu persatu dan dengan suatu aturan tertentu. Di dalam architecture VHDL tidak terdapat aturan
tertentu (kecuali dalam statement process, yang eksekusinya dilakukan secara sekuensial) dalam melakukan
penetapan statement. Perintah eksekusi akan dilakukan jika terjadi perubahan pada sinyal-sinyal dalam suatu
statement
24
PERALATAN
1. Satu set PC yang dilengkapi dengan software ISE WebPack versi 10.1 atau lebih serta software ModelSim.
2. 1 development board XC3S500E
3. 1 power-supply +9V
4. 1 kabel data
PROSEDUR PERCOBAAN
GAMBARAN DISAIN
Pada percobaan ini akan membuat suatu rangkaian dengan beberapa sintaks yang berbeda-beda
dengan menggunakan VHDL editor berdasarkan tabel kebenaran berikut.
1. Jalankan software ISE WebPACK dengan mengklik ganda ikon pada desktop.
25
2. Buat new project dengan nama percobaan2 simpan di folder E:/VLSI
3. Masukkan parameter seperti gambar berikut. Kemudian klik tombol NEXT sampai tiga kali, konfigurasi
yang ada tidak perlu diubah, kemudian klik tombol FINISH.
Device Family: Spartan3E
Device: XC3S500E
Package: FG320
Speed : -4
Top-Level Source Type: Hdl
4. Buat new source jenis VHDL Module dengan nama counters
Selanjutnya klik NEXT sampai FINISH
26
5. Maka anda akan mendapatkan jendela HDL editor
6. Selanjutnya ketikkan program berikut pada jendela HDL editor:
7. Kemudian SAVE file dan periksa penulisan program VHDL dengan cara melakukan klik ganda pada
check syntax
27
Ulangi langkah ini sampai tidak ada kesalahan, apabila sudah tidak ada error maka ikutilah langkah
selanjutnya.
8. Kemudian synthesize modul dengan cara mengklik ganda pada Synthesize-XST serta Implementasi
Design dengan cara mengklik ganda pada Implement Design.
28
9. Buat new source untuk simulasi modul VHDL hasil perancangan, berilah nama file simul_LMN!
29
10. Berikanlah nilai logika pada parameter input (yang berwarna biru) sebelum melakukan simulasi. Setelah
itu lakukan simulasi dan gambarkan hasil simulasi pada lembar laporan sementara, Jangan lupa simpan
file hasil simulasi.
11. Selanjutnya lakukan simulasi FUNCTIONAL (Simulate Behavioral Model) dan simulasi TIMING (Simulate
Post Place&Route VHDL Model).
CATATAN : Perhatikan perbedaan hasilnya
30
12. Setelah itu lanjutkan dengan membuat konfigurasi untuk pin-pin tersebut
NET "F3" LOC = "F12" ;
NET "L" LOC = "L13" ;
NET "M" LOC = "L14" ;
NET "N" LOC = "H18" ;
13. lalu download program tersebut ke FPGA, dan perhatikan hasil keluarannya
14. Setelah itu lanjutkan dengan membuat VHDL modul baru dengan cara membuat new source, beri
nama modul ini LMN2
31
15. Ketikkan listing program berikut pada jendela VHDL editor
16. Dengan cara yang sama dengan langkah 6 s.d 12 sebelumnya, CHECK SYNTAX, SYNTHESIZE,
IMPLEMENT DESIGN dan SIMULASIKAN module decoder ini. Berilah nama file simulasi simul_LMN2.
17. Setelah itu lanjutkan dengan membuat VHDL modul baru dengan cara membuat new source, beri
nama modul ini LMN3
18. Ketikkan listing program berikut pada jendela VHDL editor
19. Dengan cara yang sama dengan langkah 6 s.d 12 sebelumnya, CHECK SYNTAX, SYNTHESIZE,
IMPLEMENT DESIGN dan SIMULASIKAN module dekoder ini. Berilah nama file simulasi simul_LMN3.
20. Setelah itu lanjutkan dengan membuat VHDL modul baru dengan cara membuat new source, beri
nama modul ini ABC1
32
21. Dengan cara yang sama dengan langkah 6 s.d 12 sebelumnya, CHECK SYNTAX, SYNTHESIZE, IMPLEMENT
DESIGN dan SIMULASIKAN module dekoder ini. Berilah nama file simulasi simul_ABC1. dan untuk
kaki pin-pin tersebut dihubungkan pada.
NET "A" LOC = "L13" ;
NET "B" LOC = "L14" ;
NET "C" LOC = "H18" ;
NET "F_OUT" LOC = "F9" ;
22. Setelah itu lanjutkan dengan membuat VHDL modul baru dengan cara membuat new source, beri
nama modul ini ABC2
33
23. Ketikkan listing program berikut pada jendela VHDL editor
24. Dengan cara yang sama dengan langkah 6 s.d 12 sebelumnya, CHECK SYNTAX, SYNTHESIZE, IMPLEMENT
DESIGN dan SIMULASIKAN module dekoder ini. Berilah nama file simulasi simul_ABC2. dan untuk kaki
pin-pin tersebut dihubungkan pada.
NET "A" LOC = "L13" ;
NET "B" LOC = "L14" ;
NET "C" LOC = "H18" ;
NET "F_OUT" LOC = "F9" ;
25. Selanjutnya lakukan SIMULASI FUNCTIONAL (Simulate Behavioral Model) dan simulasi TIMING (Simulate
Post Place&Route VHDL Model).dan ambil data simulasi
34
HASIL PENGUJIAN
Sebagai laporan sementara dan data pengujian maka lakukan percobaan untuk melengkapi lampiran .
ANALISA
1. Jelaskan perbedaan antara metode desain dengan arsitektur struktural, behavioral dan dataflow. Sertakan
juga program-program dalam Modul II (mana yang termasuk arsitektur struktural, behavioral dan
dataflow) sebagai contoh dalam penjelasan anda.
2. Jelaskan efektivitas penggunaan masing-masing arsitektur!
3. Analisa hasil Timing dan behavioural simulation!
4. Analisa informasi yang anda dapat dari file synthesis report.
TUGAS
1. Jelaskan bagian-bagian utama struktur pemrograman VHDL pada program LMN1 dan ABC1!
2. Buatlah program counter up 4 bit dengan menggunakan arsitektur behavioural!
35
MODUL III: PERANCANGAN VHDL BERDASARKAN FSM
(FINITE STATE MACHINE)
TUJUAN
Pada Percobaan ini praktikan akan mempelajari tentang bagaimana cara memprogram VHDL berdasarkan
FSM (Finite State Machine)
KOMPETENSI
Setelah meneyelesaikan percobaan ini diharapkan praktikan mempunyai kemampuan untuk:
1. Mengerti tentang FSM
2. Dapat memprogram VHDL berdasarkan FSM
DASAR TEORI
Finite state machine adalah model komputasi yang terdiri dari serangkaian keadaan (state), sebuah state
awal, sebuah alfabet masukan, dan sebuah fungsi transisi yang memetakan simbol masukan dan state ke
state-state berikutnya. komputasi dimulai pada state awal dengan sebuah string masukan. State selanjutnya
yang dikunjungi
tergantung kepada fungsi transisi. Terdapat beberapa macam finite state machine, seperti mesin yang mempunyai
aksi (keluaran) yang berasosiasi dengan transisi (mesin Mealy) atau state (mesin Moore), mesin dengan state awal
lebih dari satu, mesin yang dengan transisi tanpa simbol input (null) atau mesin dengan lebih dari transisi untuk
setiap simbol dan state (nondeterministic finite state machine), dan lain-lain.
PERALATAN
1. Satu set PC yang dilengkapi dengan software ISE WebPack versi 10.1 atau lebih serta software
ModelSim.
2. Satu development board XC3S500E
3. Satu power-supply +9V
4. Satu kabel data
36
PROSEDUR PRAKTIKUM
GAMBARAN DESIGN
Pada praktikum kali ini akan dibuat program vhdl yang mengimplementasikan FSM, berdasarkan
PS/NS (Present State/Next State).
Secara garis besar, langkah-langkah praktikum sebagai berikut:
1. Buatlah project baru dengan tipe top-level modul hdl, tempatkan project tersebut pada
direktori e:\VLSI\perc3
2. Pilih nilai parameter berikut:
device family: Spartan3E
device: XC3S500E
package: FG320
speed grade: -4
3. Tambahkan (new source) kedalam project tersebut , lakukan check-syntax, bila tidak
ada error, pilih view RTL schematic dan view technology schematic.
4. Tambahkan kedalam project sebuah file ucf untuk mendefinisikan pin-pin yang dipakai,
sesuaikan dengan nama pin pada modul skematik.
5. Highlight modul skematik, klik ganda Generate Programming File untuk melakukan sintesis dan
implementasi. Apabila tidak ada error maka akan dihasilkan file bitstream dengan ekstensi
*.BIT
6. Simulasikan hasil rancangan.
7. Dengan menggunakan Impact, lakukan download kedalam target.
8. Pada board, catat hasilnya.
37
Berikut panduan untuk membuat kode VHDLnya.
FSM_1
MY_FSM1
38
39
FSM_2
.
MY_FSM2
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fsm2 is
port ( X : in std_logic;
CLK : in std_logic;
SET : in std_logic;
Y : out std_logic_vector(1 downto 0);
Z2 : out std_logic);
40
end fsm2;
architecture Behavioral of fsm2
is type state_type is
(ST0,ST1,ST2); signal PS,NS :
state_type;
begin
sync_proc: process(CLK,NS,SET)
begin
if (SET = '1') then PS -- items regarding state ST0
Z2 -- items regarding state ST1
Z2 -- items regarding state ST2
-- Mealy output handled in the if statement
if (X = '0') then NS -- the catch all condition
Z2 -- items regarding state ST0
Z1 -- items regarding state ST1
Z1 -- items regarding state ST2
Z1 -- items regarding state ST3
Z1 -- the catch all condition
Z1 " LOC = "F9" ;
NET "Y" LOC = "E9" ;
NET "Z1" LOC = "D11" ;
NET "Z2" LOC = "C11" ;
43
HASIL PENGUJIAN
Sebagai laporan sementara dan data pengujian maka lakukan percobaan untuk melengkapi lampiran
ANALISA
Pada Laporan Resmi lakukan analisa kinerja dari alat yang dibuat dengan membandingkan antara hasil simulasi
dengan hasil pengujian. Serta analisa perbedaan antara simulasi FUNCTIONAL dengan simulasi TIMING.
Analisa informasi yang anda dapat dari file synthesis report.
TUGAS
Jawablah pertanyaan berikut:
1. Apa yang dimaksud dengan perancangan FSM pada pengembangan FPGA?
2. Gambarkan disain top-level skematik yang dibuat.
3. Jelaskan kembali fungsi dan cara kerja dari masing-masing blok (modul) yang telah dibuat.
44
MODUL IV: PENGGABUNGAN MODUL
TUJUAN
Pada Percobaan ini praktikan akan mempelajari tentang bagaimana cara mengabungkan satu modul
dengan modul yang lain.
KOMPETENSI
Setelah meneyelesaikan percobaan ini diharapkan praktikan mempunyai kemampuan untuk:
1. Mengembangkan perancangan FPGA dengan pendekatan Hierarchical (Berjenjang)
2. Memadukan schematic dan VHDL untuk suatu perancangan
DASAR TEORI
HIERARCHICAL DESIGN yaitu perancangan circuit yang terdiri atas beberapa sub-module, dilakukan dengan
cara membuat module-module terkecil terlebih dahulu kemudian diintegrasikan menjadi module utama
dalam TOP LEVEL.
TOP
LEVEL
SUB-MODULE SUB-MODULE SUB-MODULE
I II ke-N
45
TOP LEVEL dan LEVEL dibawahnya bisa berupa kombinasi VHDL-VHDL atau SCHEMATIC-SCHEMATIC
atau campuran/mix dari SCHEMATIC dan VHDL.
Pada percobaan ini akan dirancang B C H t o 7 - s e g m e n t d e c o d e r , 4 : 8 d e c o d e r , d a n s e l e c t o r terdiri
atas beberapa level module dan akan diselesaikan dengan pendekatan HIERARCHICAL DESIGN serta
perpaduan SCHEMATIC-VHDL. Langkah penyelesaian yang dilakukan adalah dengan cara membuat
semua sub-module yang ada dengan VHDL , setelah dipastikan rancangan sub-module telah benar maka
digenerate schematic simbolnya. Langkah berikutnya dengan cara membuat TOP LEVEL berupa
schematic, pada top level ini semua sub-module yang telah dibuat diintegrasi menjadi satu sistem.
Mode kalkulasi dipilih dengan cara menekan sebuah push-button. Mode yang dipilih akan ditampilkan pada
led. Bilangan A dan B masing-masing selebar 4-bit yang akan dimasukkan menggunakan DIP-switch.
Apabila push- button lainnya ditekan, yang berfungsi sebagai tombol enter, maka hasil kalkulasi akan
ditampilkan pada dua buah seven segmen dalam format heksadesimal.
PERALATAN
1. Satu set PC yang dilengkapi dengan software ISE WebPack versi 10.1 atau lebih serta software
ModelSim
2. 1 development board XC3S500E
3. 1 power-supply +9V
4. 1 kabel data
5. 1 project board
6. kabel penghubung secukupnya
PROSEDUR PRAKTIKUM
GAMBARAN DISAIN
Pada praktikum kali ini akan dibuat sebuah selector sederhana. yang dibuat mempunyai 2 mode pilihan operasi,
output dari s e l e c t o r akan diteruskan ke BCD to 7-segment decoder atau 4:8 decoder atau kedua-duanya..
Untuk merealisasikan rangkaian ini, maka disain besar tersebut dapat dibuat tiga buah modul:
1. Modul selektor
2. Modul BCD to 7-segment decoder
3. Modul 4:8 decoder
tiga blok diatas didisain menggunakan VHDL. Kemudian buat (create) menjadi skematik. Hubungkan k e t i g a
m o d u l secara v h d l d a n skematik (top-level disain project adalah skematik).Kemudian mendefinisikan
koneksi pin-pin IC nya menggunakan file *.ucf. Maka project siap disintesis, implementasi, dan mendownload
bit-stream ke dalam divais.
46
Secara garis besar, langkah-langkah praktikum sebagai berikut:
1. Buatlah project baru dengan tipe top-level modul skematik, tempatkan project tersebut pada
direktori e:\VLSI\perc3
2. Pilih nilai parameter berikut:
device family:
Spartan3E device:
XC3S500E package:
FG320
speed grade: -4
3. Tambahkan (new source) kedalam project tersebut empat disain modul VHDL, lakukan check-syntax,
bila tidak ada error buatlah (create) simbol skematiknya.
4. Tambahkan kedalam project sebuah modul skematik sebagai top-level. Hubungkan ketiga
modul tersebut secara vhdl dan skematik.
5. Tambahkan kedalam project sebuah file ucf untuk mendefinisikan pin-pin yang dipakai, sesuaikan
dengan nama pin pada modul skematik.
6. Highlight modul skematik, klik ganda Generate Programming File untuk melakukan sintesis dan
implementasi. Apabila tidak ada error maka akan dihasilkan file bitstream dengan ekstensi *.BIT
7. Simulasikan hasil rancangan.
8. Dengan menggunakan Impact, lakukan download kedalam target.
Berikut panduan untuk membuat kode VHDLnya.
MODUL SELECTOR
47
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity selector is
port( A : in std_logic;
B : in std_logic;
C_in : in std_logic_vector(3 downto 0);
D_out : out std_logic_vector(3 downto
0); E_out : out std_logic_vector(3
downto 0));
end selector;
architecture Behavioral of selector
is begin
process (A, B, C_in)
begin
if (A = '1') then
D_out " LOC = "L13" ;
NET "C_in" LOC = "L14" ;
NET "C_in" LOC = "H18" ;
NET "C_in" LOC = "N17" ;
NET "D_out" LOC = "F12" ;
NET "D_out" LOC = "E12" ;
NET "D_out" LOC = "E11" ;
NET "D_out" LOC = "F11" ;
NET "E_out" LOC = "C11" ;
48
NET "E_out" LOC = "D11" ;
NET "E_out" LOC = "E9" ;
NET "E_out" LOC = "F9" ;
(setelah di download ke fpga, kosongkan kaki-kaki pin tersebut)
BCD TO 7-SEGMENT DECODER
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity BCH is
port(BCH_IN : in STD_LOGIC_VECTOR(3 downto 0);
SSEG : out STD_LOGIC_VECTOR(6 downto 0));
end BCH;
architecture Behavioral of BCH
is begin
with BCH_IN select
SSEG " LOC = "L13" ;
NET "BCH_IN" LOC = "L14" ;
NET "BCH_IN" LOC = "H18" ;
NET "BCH_IN" LOC = "N17" ;
NET "SSEG" LOC = "B4" ;
NET "SSEG" LOC = "A4" ;
NET "SSEG" LOC = "D5" ;
NET "SSEG" LOC = "C5" ;
NET "SSEG" LOC = "A6" ;
NET "SSEG" LOC = "B6" ;
NET "SSEG" LOC = "E7" ;
(setelah di download ke fpga, kosongkan kaki-kaki pin tersebut)
MODUL 4:8 DECODER
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity decoder is
port(D_IN : in std_logic_vector(3 downto 0);
F_OUT : out std_logic_vector(7 downto 0));
end decoder;
50
architecture Behavioral of decoder is
begin
with D_IN select
F_OUT " LOC = "L13" ;
NET "D_IN" LOC = "L14" ;
NET "D_IN" LOC = "H18" ;
NET "D_IN" LOC = "N17" ;
NET "F_OUT" LOC = "F12" ;
NET "F_OUT" LOC = "E12" ;
NET "F_OUT" LOC = "E11" ;
NET "F_OUT" LOC = "F11" ;
NET "F_OUT" LOC = "C11" ;
NET "F_OUT" LOC = "D11" ;
NET "F_OUT" LOC = "E9" ;
NET "F_OUT" LOC = "F9" ;
(setelah di download ke fpga, kosongkan kaki-kaki pin tersebut)
51
MENGGABUNGKAN KETIGA MODUL TERSEBUT (VHDL – VHDL)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity vhdl_vhdl is
port(sw_in : in std_logic_vector(3 downto 0);
pa_in, pb_in : in std_logic;
ss_out : out std_logic_vector(6 downto 0);
led_out : out std_logic_vector(7 downto 0));
end vhdl_vhdl;
architecture Behavioral of vhdl_vhdl is
52
-- selector
component selector is
port( A : in
std_logic; B : in std_logic;
C_in : in std_logic_vector(3 downto 0);
D_out : out std_logic_vector(3 downto
0);
E_out : out std_logic_vector(3 downto 0));
end component;
--BCD
component BCD is
port(BCD_IN : in STD_LOGIC_VECTOR(3 downto 0);
SSEG : out STD_LOGIC_VECTOR(6 downto 0));
end component;
--decoder
component decoder is
port(D_IN : in std_logic_vector(3 downto 0);
F_OUT : out std_logic_vector(7 downto 0));
end component;
signal s1_out, s2_out : std_logic_vector(3 downto 0);
begin
s1: selector port map (A => pa_in,
B => pb_in,
C_in => sw_in,
D_out => s1_out,
E_out => s2_out);
b1: BCH port map (BCH_IN => s2_out,
SSEG => ss_out);
d1: decoder port map (D_IN => s1_out,
F_OUT => led_out);
end Behavioral;
KAKI- KAKI PIN
NET "led_out" LOC = "F12" ;
NET "led_out" LOC = "E12" ;
NET "led_out" LOC = "E11" ;
NET "led_out" LOC = "F11" ;
NET "led_out" LOC = "C11" ;
NET "led_out" LOC = "D11" ;
NET "led_out" LOC = "E9" ;
53
NET "led_out" LOC = "F9" ;
NET "pa_in" LOC = "D18" ;
NET "pb_in" LOC = "K17" ;
NET "ss_out" LOC = "B4" ;
NET "ss_out" LOC = "A4" ;
NET "ss_out" LOC = "D5" ;
NET "ss_out" LOC = "C5" ;
NET "ss_out" LOC = "A6" ;
NET "ss_out" LOC = "B6" ;
NET "ss_out" LOC = "E7" ;
NET "sw_in" LOC = "L13" ;
NET "sw_in" LOC = "L14" ;
NET "sw_in" LOC = "H18" ;
NET "sw_in" LOC = "N17" ;
(setelah di download ke fpga, kosongkan kaki-kaki pin tersebut)
54
MENGGABUNGKAN KETIGA MODUL TERSEBUT (VHDL – SKEMATIK)
KAKI- KAKI PIN
NET "data" LOC = "L13" ;
NET "data" LOC = "L14" ;
NET "data" LOC = "H18" ;
NET "data" LOC = "N17" ;
NET "led" LOC = "F12" ;
NET "led" LOC = "E12" ;
NET "led" LOC = "E11" ;
NET "led" LOC = "F11" ;
NET "led" LOC = "C11" ;
NET "led" LOC = "D11" ;
NET "led" LOC = "E9" ;
NET "led" LOC = "F9" ;
NET "pilih" LOC = "D18" ;
NET "semua" LOC = "K17" ;
NET "ssegment" LOC = "B4" ;
NET "ssegment" LOC = "A4" ;
NET "ssegment" LOC = "D5" ;
NET "ssegment" LOC = "C5" ;
NET "ssegment" LOC = "A6" ;
NET "ssegment" LOC = "B6" ;
NET "ssegment" LOC = "E7" ;
55
HASIL PENGUJIAN
Sebagai laporan sementara dan data pengujian maka lakukan percobaan untuk melengkapi lampiran
ANALISA
1. Jelaskan kembali fungsi dan cara kerja dari masing-masing blok (modul) dan sistem secara
keseluruhan yang telah dibuat.
2. Arsitektur apa saja yang digunakan dalam desain? Jelaskan dan tunjukan bagian programnya!
3. Jelaskan perbedaan tahap-tahap yang dijalankan pada perancangan vhdl-vhdl dan vhdl-skematik
4. Analisa hasil simulasi timing dan fungsional!
5. Analisa informasi yang anda dapat dari file synthesis report.
TUGAS
Jawablah pertanyaan berikut:
1. Apa yang dimaksud dengan perancangan Hirarki (Hirarchical design) pada Pengembangan FPGA?
2. Apa perbadaan dan persamaan antar vhdl-vhdl dengan vhdl-skematik.
56