0% menganggap dokumen ini bermanfaat (0 suara)
107 tayangan

Introduction To Fpga Programming

Dokumen tersebut membahas pengenalan pemrograman FPGA menggunakan bahasa VHDL pada Xilinx Spartan-3E. Secara garis besar meliputi desain sistem logika kombinasional antara input dan output, implementasi desain menggunakan VHDL, serta penghubungan port kode dengan pin fisik di FPGA.

Diunggah oleh

Heri J Situmorang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
107 tayangan

Introduction To Fpga Programming

Dokumen tersebut membahas pengenalan pemrograman FPGA menggunakan bahasa VHDL pada Xilinx Spartan-3E. Secara garis besar meliputi desain sistem logika kombinasional antara input dan output, implementasi desain menggunakan VHDL, serta penghubungan port kode dengan pin fisik di FPGA.

Diunggah oleh

Heri J Situmorang
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 27

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

PENGENALAN
PEMROGRAMAN FPGA:
XILINX SPARTAN-3E
(VHDL)
Oleh: Dahnial Syauqy

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

P a g e | { PAGE \* MERGEFORMAT
}

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)


1. Pendahuluan
Dalam tutorial ini akan diperkenalkan pemrograman FPGA untuk Xilinx Spartan-3E. Secara
garis besar isi tutorial ini meliputi:
- Mendesain sistem digital sederhana dan menuliskan program VHDL
- Mengkonfigurasikan board FPGA dan mengkoneksikan input output yang diperlukan
- Mendownload program ke board FPGA dengan iMPACT
- Melakukan simulasi program melalui simulator Isim

1.1 Perlengkapan Hardware


Spartan-3E Kit yang berisi development board, kabel power dan kabel koneksi USB dengan
PC.
1.2 Perlengkapan Software
Software yang digunakan adalah XILINX ISE project Navigator versi 13.4.

2. Desain sistem
Desain yang digunakan pada tutorial ini adalah berupa logika kombinasional antara beberapa
input dan output. Output berupa 2 buah LED akan menyala tergantung kepada kondisi
beberapa switch dan push button pada board FPGA.
Kondisi 1:
LED 0 ON ketika Switch0 ON DAN Switch1 OFF, yang dapat dituliskan:

0 = 0 1

(1)

Tabel kebenaran LED0:


Switch0
0
0
1
1

Switch1
0
1
0
1

LED0
0
0
1
0

Dan kondisi 2:
LED 1 ON ketika (Switch2 ATAU Switch3 ON) DAN PushButton ON, yang dapat
dituliskan:

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

1 = (2 3) .. (2)
Tabel kebenaran LED1:
Switch2
0
0
0
0
1
1
1
1

Switch3
0
0
1
1
0
0
1
1

Push Button
0
1
0
1
0
1
0
1

LED1
0
0
0
1
0
1
0
1

3. Prosedur
3.1 Implementasi desain
3.1.1 Membuat project baru
1. Buka software ISE project manager

2. Buat project baru melalui File>>New project. Dari sini, akan muncul New project wizard
3. Di kolom Name, isi dengan nama project (bebas). Pada contoh di bawah ini, nama project
adalah tutorial. Pilih Location dan Working Directory untuk menyimpan project. Terakhir,
pastikan top-level source type terpilih HDL, lalu klik next.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

4. Pada evaluation development board, pilih Spartan-3E Starter Board. Pilih preferred
language menjadi VHDL serta pastikan semua opsi seperti dalam Gambar di bawah ini dan
klik next.

5. Berikutnya akan muncul Project Summary dengan tampilan sebagai berikut untuk
melakukan verifikasi konfigurasi yang telah dibuat sebelumnya. Setelah memastikan semua
benar, klik finish dan project akan dibuat.
XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

3.1.2 Menambahkan kode VHDL


1. Setelah project kosong dibuat, selanjutnya perlu ditambahkan Source untuk menuliskan
kode VHDL. Pilih Project>>New source

2. Pilih source type VHDL module, isi file name (bebas, usahakan berbeda dengan nama
project), pilih lokasi penyimpanan, pastikan add to project tercentang, lalu klik next.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

3. Berikutnya, dilakukan pendefinisian port input dan output desain yang akan dibuat.
Pertama beri nama entity pada kolom entity name (bebas). Berikutnya:
- Definisikan empat buah switch dengan nama berbeda (tanpa spasi), dan
mengkonfigurasikannya menjadi input. Masing-masing definisi switch diartikan sebagai port
input 1 bit.
- Definisikan satu buah push button dengan nama tanpa spasi dan konfigurasikan sebagai
input 1 bit.
- Definisikan dua buah LEDs yang dipasang secara bus (identik seperti array) dan bertindak
sebagai output. Centang bus dan isi MSB = 1, LSB = 0. Hal ini berarti sebuah port LEDs
adalah berupa port output 2 bit yang dapat diakses dengan LEDs(0) dan LEDs(1).
NOTE: Jika misalkan MSB (Most Significant Bit) bernilai 7, maka akan ada multiple output
dengan nama LEDs yang dapat diakses mulai LEDs(0) sampai LEDs(7) dengan total 8 bit (1
byte)

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

4. Setelah klik next, akan ditunjukkan Summary page.


Selanjutnya, klik finish dan source akan di-generate.

5. Pada Hierarchy, dobel klik top-behavioral (top.vhd) maka source code akan dibuka di tab
top.vhd. perhatikan bahwa pada entity top telah didefinisikan beberapa port input dan
output. Bagian entity mendefinisikan seluruh input dan output pada blok hardware. Pada

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

tahap selanjutnya perilaku input-output akan didefinisikan di architecture behavioral.


Bagian architecture mendefiniskan kode yang akan diimplementasikan ke dalam hardware.
Pada saat inisialisasi bagian tersebut kosong sehingga kode program perlu ditambahkan di
antara begin dan end di bagian architecture.

3.1.3 Mengedit source code VHDL


1. Masukkan kode VHDL desain yang akan dibuat pada blok architecture di bagian antara
begin dan end. Kode ini merepresentasi fungsi sistem yang didesain pada langkah awal.

2. Save file melalui File>>Save

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

3. Berikutnya adalah melakukan checking sytax VHDL yang telah dibuat. Pertama, pastikan
tab implementation terpilih. Klik tanda + pada Synthesize-XST. Terakhir, lakukan dobel klik
pada Check Syntax dan tunggu proses checking berlangsung.
Jika pada checking tidak ditemukan kesalahan maka akan muncul tanda centang berwarna
hijau di sebelah check syntax. Sebaliknya, jika ada kesalahan akan muncul pesan error di
console window yang akan membantu menemukan letak kesalahan program.

3.1.4 Pin assignment


Pada kode program sebelumnya telah didefinisikan beberapa port input dan output. Namun,
pada tahap tersebut belum didefinisikan alamat port saat nantinya program didownload ke
hardware. Dengan kata lain, untuk mengimplementasikan program pada harware FPGA,
setiap port yang didefinisikan dalam kode harus diberi alamat sesuai alamat sesungguhnya
pada hardware. Jika semua port sudah diberi alamat pada hardware, maka selanjutnya tinggal
menyambungkan hardware FPGA dengan dunia luar seperti saklar, lampu dan lain-lain.
Untuk kali ini, dunia luar yang dimaksudkan diwakili sementara oleh beberapa switch, push
button dan lampu led yang sudah disediakan pada board. Oleh karena itu, perlu diketahui
alamat switch, push button dan led pada board Spartan-3E. Informasi alamat simulator input
dan output tersebut dapat dilihat pada Spartan-3E FPGA Starter Kit Board User Guide. Cara
lainnya adalah dengan mengamati langsung petunjuk tulisan di board. Pada setiap simulator
input dan output di board selalu dituliskan alamat pemanggilan pin yang bersangkutan.
Misalkan pada slider switch dituliskan (L13) yang berarti bahwa alamat pemanggilan slider
switch tersebut pada L13.
Nama port pada kode

Deskripsi

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

Alamat Pin FPGA

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

Switch0
Switch1
Switch2
Switch3
Pushbutton
LEDs(0)
LEDs(1)

Slider switch (input)


Slider switch (input)
Slider switch (input)
Slider switch (input)
Push button (input)
Indikator LED (output)
Indikator LED (output)

L13
L14
H18
N17
V4
F12
E12

Langkah untuk menghubungkan port yang telah didefinisikan dengan switch, push button dan
led pada board adalah sebagai berikut:
1. Klik tanda + pada user constraints. Di dalamnya, lakukan dobel klik pada I/O Pin
Planning (PlanAhead) Pre-Synthesis. Jika muncul tanda peringatan create UCF file, klik
YES

2. Setelah proses selesai, maka akan muncul jendela program lain, yakni PlanAhead.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

3. Pada I/O ports, klik tanda + pada LESs dan Scalar port untuk menjabarkan seluruh input
output

4. Lakukan editing pada Site, drive strength dan pull type untuk seluruh port input dan
output yang terdefinisi dan pastikan hasil akhirnya seperti gambar di bawah.
Note:
site adalah alamat pin pada hardware FPGA
drive strength adalah
pull type adalah

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

5. Klik Save pada PlanAhead untuk menyimpan konfigurasi port

3.1.5 Implement design dan Summary


Terdapat 4 proses utama dalam implement design:

Synthesize
Translate
Map
Place & Route

: men-generate netlist untuk setiap source file


: menggabungkan beberapa netlist menjadi single netlist
: pemetaan desain pada slice dan i/o blocks
: penempatan desain pada chip dan hubungan antar komponennya

1. Kembali pada program ISE project manager, klik tanda + pada implement design. Lakukan
dobel klik pada implement design dan secara otomatis program akan melakukan synthesizeXST, translate, map, serta place and routing. Setelah keempat prosedur selesai, akan muncul
tanda centang hijau untuk setiap proses.

2. Pada jendela processes, dobel klik Design summary/reports

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

3. Pada Design summary dapat dilihat bahwa impelentation state telah placed and routed
dengan no errors. Di bagian bawah, dapat dilihat penggunaan resource device. Seperti yang
tampak, penggunaan desain masih 1% sampai 3% saja.

3.2 Download ke board


Pada prosedur selanjutnya akan dilakukan generate programming file yang kemudian
didownload ke board Spartan-3E melalui Impact.
1. Pada program ISE project manager, lakukan dobel klik pada generate programming file.
Setelah proses selesai akan muncul tanda centang berwarna hijau.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

2. Klik tanda + pada configure target device dan dobel klik pada manage configuration
project (impact)
3. Jendela program impact akan muncul. Pada tahap ini, pastikan board terhubung dengan
power dan kabel USB telah tersambung dengan PC. Setelah semua tersambung, nyalakan
switch board agar ON.
Note: saat pertama kali board terhubung PC, tunggu beberapa saat untuk instalasi driver
kabel USB

4. Setelah memastikan device terhubung, dobel klik boundary scan pada impact flows. Dari
langkah tersebut, akan muncul right click to add device or initialize JTAG chain pada
jendela bagian kanan.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

5. Klik kanan dan pilih initialize chain

6. Setelah proses identifikasi chain selesai, akan muncul notifikasi identify succeded dan
muncul jendela Do you want to continue and assign configuration file(s)? pilih yes.
Perhatikan gambar chain chip yang muncul. Chip yang pertama yakni xc3s500e adalah chip
FPGA yang akan diprogram pada board. Kedua chip lain adalah chip pada board yang akan
di bypass.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

7. Pada assign new configuration file, pilih file *.bit hasil generate programming file yang
telah dibuat pada langkah sebelumnya. File ini akan diasosiasikan dengan chip yang pertama
yakni xc3s500e.
8. Berikutnya akan muncul pesan lain berisi This device supports attached flash PROMs. Do
you want to attach an SPI or BPI PROM to this device? Pilih NO.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

9. Jendela assign new configuration file akan muncul lagi untuk asosiasi dengan xcf04s. Kali
ini pilih bypass.

10. Terakhir, jendela assign new configuration files untuk xc2c64a akan muncul. Sekali lagi
pilih bypass.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

11. Terakhir akan muncul device programming properties. Klik OK.

12. Jendela impact akan tampak seperti gambar berikut. Klik akanan pada chip xc3e500e dan
pilih program.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

13. Program yang telah dibuat akan didownload ke board Spartan-3E dan setelah proses
selesai akan muncul notifikasi Program succeded

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

14. Setelah selesai, lakukan simulasi langsung pada board dengan merubah kondisi switch
dan push button sesuai beberapa kondisi desain dan perhatikan perubahan kondisi LED.
Perhatikan, saat board dimatikan lalu dinyalakan lagi maka program akan hilang karena tidak
tersimpan ke dalam PROM.

3.3 Simulasi
Simulasi perilaku desain program dapat dilakukan melalui program Isim simulator. Disini,
akan dibuat test bench yang berupa pemberian stimulus pada setiap port input sehingga
kondisi output dapat dimonitor dan dibandingkan dengan desain yang diharapkan.
1. Langkah pertama, tambahkan test bench dengan cara klik Project>>New source pada ISE
project manager. Pilih VHDL test bench, beri nama top_test dan klik next

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

2. Test bench yang dibuat akan diasosiasikan dengan source top yang telah dibuat. Klik
next

3. Terakhir, akan ditunjukkan Summary pembuatan new source. Klik finish

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

4. Ganti tampilan implementation menjadi simulation. Perhatikan bahwa di process window


sekarang berisi item Isim simulator. Abaikan error yang muncul di message window untuk
sementara.

5. Lakukan dobel klik pada top_test.vhd jika belum terbuka. Perhatikan struktur konten dari
file tersebut yang terdiri dari entity dan architecture seperti halnya kode source program. Di
bagian architecture seluruh input diinisialisasi dengan nilai awal 0.
Di bagian ini juga terdapat beberapa konstanta <clock> yang berguna untuk desain berbasis
clock. Penamaan <clock> harus diganti dengan input aktual yang bertugas sebagai clock.
Namun untuk desain tutorial ini tidak memerlukan clock sehingga kode yang berisikan
clock akan dihapus.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

6. Cari seluruh konten kode test bench yang berkaitan dengan <clock> dan buang dari kode
dengan cara memberikan comment pada line tersebut. Comment dapat dibuat dengan
menambahkan -- pada awal setiap baris kode. Untuk beberapa baris kode, comment dapat
dibuat dengan melakukan blok seluruh baris kode yang akan di-comment dan kemudian klik
kanan>>comment>>selection. Perhatikan bahwa setelah semua kode <clock> di-comment,
maka pesan error di message window akan hilang setelah program di save. Jika pesan error
belum hilang, cek kembali seluruh kode <clock> dan pastikan semua telah terbuang dengan
cara menjadikannya comment.

7. Masukkan kode test bench setelah -- insert stimulus here dan sebelum wait

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

Kode test bench yang digunakan adalah (merujuk pada timing diagram port input):
-- insert stimulus here
Switch1 <='1';
Pushbutton <='1';
wait for 10 ns;
Switch0 <='1';
Switch1 <='0';
Switch3 <='1';
Pushbutton <='0';
wait for 10 ns;
Switch1 <='1';
Pushbutton <='1';
wait for 10 ns;
Switch2 <='1';
Switch3 <='0';
Pushbutton <='0';
wait for 10 ns;
Pushbutton <='1';
wait for 10 ns;
Switch3 <='1';
Pushbutton <='0';
wait for 10 ns;
Pushbutton <='1';
wait for 10 ns;

8. Setelah kode test bench dimasukkan, klik tanda + pada Isim simulator dan dobel klik pada
Behavioral check syntax sehingga muncul tanda centang hijau. Klik kanan pada simulate
behavioral model dan pilih process properties.

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

9. Pada simulation run time, isi dengan 200 ns. Ini adalah durasi waktu simulasi akan
dijalankan. Klik OK

10. Dobel klik simulate behavioral model, dan jendela program ISim akan terbuka

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

11. Agar tampilan sinyal simulasi mudah dibaca, lakukan pengaturan tampilan dengan
melalui View>>Zoom>>To full view.

12. Klik tanda + disamping LEDs untuk memonitor tampilan output led secara individual.
Cek hasil simulasi secara timing diagram dengan kesesuaian pada desain sistem

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL)

P a g e | { PAGE \* MERGEFORMAT
}

4. Referensi
[1] Spartan-3E FPGA Starter Kit Board User Guide, Online:
{ HYPERLINK "http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf" }

[2] Spartan-3E FPGA Starter Kit Board Design Examples, Online:


{ HYPERLINK "http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm" }

[3] FPGA Prototyping By VHDL Examples. Pong P. Chu. A John Wiley & Sons, Inc.,
Publication: 2008
[4] The Spartan-3E Tutorial 1: Introduction to FPGA Programming. Jasmine Banks.
Queensland University of Technology: 2014

XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4)

FILKOM | UB

Anda mungkin juga menyukai