pengenalan programing menggunakan xilink

28
Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) Page | 1 XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4) FILKOM | UB PENGENALAN PEMROGRAMAN FPGA: XILINX SPARTAN-3E (VHDL) Oleh: Dahnial Syauqy

description

tutor singkat memakai xilink

Transcript of pengenalan programing menggunakan xilink

Page 1: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 1

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

PENGENALAN

PEMROGRAMAN FPGA:

XILINX SPARTAN-3E

(VHDL)

Oleh: Dahnial Syauqy

Page 2: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 2

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

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.

Page 3: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 3

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

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:

……………………………………………… (1)

Tabel kebenaran LED0:

Switch0 Switch1 LED0

0 0 0

0 1 0

1 0 1

1 1 0

Dan kondisi 2:

LED 1 ON ketika (Switch2 ATAU Switch3 ON) DAN PushButton ON, yang dapat

dituliskan:

……………………….. (2)

Tabel kebenaran LED1:

Switch2 Switch3 Push Button LED1

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

3. Prosedur

3.1 Implementasi desain

3.1.1 Membuat project baru

1. Buka software ISE project manager

Page 4: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 4

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

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.

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.

Page 5: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 5

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

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.

Page 6: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 6

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

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.

3. Berikutnya, dilakukan pendefinisian port input dan output desain yang akan dibuat.

Pertama beri nama entity pada kolom entity name (bebas). Selanjutnya:

Page 7: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 7

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

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

4. Setelah klik next, akan ditunjukkan Summary page.

Selanjutnya, klik finish dan source akan di-generate.

Page 8: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 8

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

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

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

Bagian architecture mendefinisikan 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.

Page 9: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 9

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

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

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.

Page 10: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 10

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

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 Alamat Pin FPGA

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

Page 11: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 11

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

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.

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

output

Page 12: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 12

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

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 set minimum arus yang disediakan (mA)

pull type adalah penambahan pull-up atau pull-down pada pin FPGA. Untuk switch,

Pull-up sebenarnya bersifat opsional, namun disarankan agar input tetap terdefinisi

ketika switch berada di tengah transisi antara on dan off. Ketika switch berada di

ON, FPGA pin terkoneksi ke logic high sedangkan ketika posisi OFF, FPGA pin

terkoneksi ke ground. Untuk push button, pull-down resistor diperlukan untuk

memberikan logic low (ground) ketika tombol tidak ditekan [Spartan 3E User Guide]

Secara default, I/O std adalah LVCMOS25 dengan SLOW slewrate dan output drive

12 mA

5. Klik Save pada PlanAhead untuk menyimpan konfigurasi port

Page 13: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 13

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

3.1.5 Implement design dan Summary

Terdapat 4 proses utama dalam implement design:

Synthesize : men-generate netlist untuk setiap source file

Translate : menggabungkan beberapa netlist menjadi single netlist

Map : pemetaan desain pada slice dan i/o blocks

Place & Route : 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 synthesize-

XST, 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

Page 14: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 14

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

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.

2. Klik tanda + pada configure target device dan dobel klik pada manage configuration

project (impact)

Page 15: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 15

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

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.

5. Klik kanan dan pilih initialize chain

Page 16: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 16

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

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.

Page 17: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 17

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

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.

Page 18: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 18

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

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.

Page 19: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 19

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

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.

Page 20: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 20

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

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

selesai akan muncul notifikasi Program succeeded

Page 21: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 21

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

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

Page 22: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 22

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

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

Page 23: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 23

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

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.

Page 24: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 24

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

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”

Page 25: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 25

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

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.

Page 26: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 26

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

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

Page 27: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 27

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

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

Page 28: pengenalan programing menggunakan xilink

Pengenalan Pemrograman FPGA: Spartan 3e (VHDL) P a g e | 28

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

4. Referensi

[1] Spartan-3E FPGA Starter Kit Board User Guide, Online:

http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf

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

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