pengenalan fpga - rndc.or.idrndc.or.id/download/pengenalan_fpga.pdf · lalu pasang ujung kabel...

14
Pengenalan FPGA oleh Iman Taufik Akbar Tutorial singkat ini akan membahas mengenai FPGA (Field Programmable Gate Array). Adapun FPGA yang akan digunakan adalah produk dari Digilent yang menggunakan Xilinx Virtex-5. Berikut adalah penampakan dari development kit tersebut: Anda terlebih dahulu perlu mengunduh perangkat lunak pendukung untuk development board tersebut yaitu digilent adept, dan dapat Anda temukan pada link berikut ini: http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2

Upload: vuthuy

Post on 06-Mar-2019

226 views

Category:

Documents


0 download

TRANSCRIPT

Pengenalan FPGAoleh Iman Taufik Akbar

Tutorial singkat ini akan membahas mengenai FPGA (Field Programmable Gate Array). Adapun FPGA

yang akan digunakan adalah produk dari Digilent yang menggunakan Xilinx Virtex-5. Berikut adalah

penampakan dari development kit tersebut:

Anda terlebih dahulu perlu mengunduh perangkat lunak pendukung untuk development board tersebut

yaitu digilent adept, dan dapat Anda temukan pada link berikut ini:

http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2

Berikut ini adalah tampilan halaman yang akan Anda temukan pada link tersebut:

Unduh sesuai dengan sistem operasi yang Anda gunakan. Pada tutorial ini digunakan v2.13.1 untuk

sistem operasi Microsoft Windows. Setelah itu, lanjutkan dengan proses instalasi yang tampilannya

seperti ini:

Bisa terlihat pada gambar instalasi tersebut, pada sudut kanan atas bagian “Connect” berisi informasi

bahwa development kit yang digunakan belum terkoneksi (“No Device Connected”). Untuk

melakukan koneksi, terlebih dahulu geser saklar pada development kit ke posisi off (lingkaran merah

pada gambar), lalu pasang konektor mikro USB pada development kit yang ditandai dengan tulisan

“DIGILENT USB” (lingkaran hijau pada gambar). Berikut ini adalah gambarnya:

Setelah itu, pilihlah kaki adaptor yang sesuai dengan yang Anda gunakan, lalu pasang dengan cara

menggesernya sesuai dengan arah panah pada gambar berikut ini hingga terdengar suara “klik”.

Lalu pasang ujung kabel adaptor pada development kit seperti pada gambar berikut ini:

Setelah kabel adaptor terpasang, lanjutkan dengan menggeser saklar ke posisi “On”. Dan kembali ke

proses instalasi perangkat lunak. Masih pada jendela instalasi, pada bagian “Connect”, pilih “Genesys”

seperti pada gambar berikut ini:

Setelah proses inisialisasi selesai, lanjutkan dengan fitur pengetesan. Pada window instalasi, pilih tab

“Test” seperti pada gambar berikut:

Pada bagian tersebut, Anda cukup menekan tombol “Start Test”, maka proses instalasi akan

melakukan test pada development board seperti pada gambar berikut ini:

Pada gambar di atas, bisa terlihat bahwa ketika test dimulai, semua led indikator pada development

board menyala (dengan catatan semua saklar berada pada posisi di atas). Selain itu, terlihat juga pada

LCD muncul tulisan “GENESYS User Test Started”. Dari sini, Anda dapat mencoba untuk

menggeser saklar SW0 hingga SW7 untuk melihat apa yang akan terjadi dengan indikator led dan

LCD. Selain itu Anda juga dapat menekan tombol BTN0, BTN1 dan BTN3 untuk melihat apakah

tombol-tombol tersebut berfungsi dengan baik. Perlu dicatat bahwa untuk BTN3, Anda dapat

menggesernya ke arah atas, bawah, kiri dan kanan.

Setelah proses instalasi selesai, Anda dapat melanjutkan dengan memilih bahasa pemrograman yang

akan digunakan. Bahasa yang umum digunakan untuk pemrograman FPGA adalah VHDL dan Verilog.

Jika dilihat secara sepintas, Verilog agak mirip dengan bahasa C, sedangkan VHDL lebih mirip dengan

bahasa pemrograman Ada. Adapun untuk teks editor, Anda dapat menggunakan teks editor yang Anda

sukai, namun untuk memudahkan, Anda dapat menggunakan teks editor bawaan dari IDE Xilinx ISE.

Anda dapat mengunduh aplikasi Xilinx ISE Design Suite (pada saat tutorial ini dibuat v14.7) pada

halaman berikut ini:

http://www.xilinx.com/support/download.html

Perlu diingat bahwa aplikasi tersebut adalah aplikasi berbayar, namun tetap dapat digunakan dengan

batasan waktu eksekusi binary yang dihasilkan dari proses kompilasi. Selain aplikasi tersebut, terdapat

juga aplikasi lain yaitu Xilinx ISE WebPack Design Software yang sifatnya Free dan cukup untuk

development. Aplikasi Xilinx ISE WebPack dapat diunduh pada halaman berikut ini:

http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm

Setelah mengunduh aplikasi Xilinx ISE Design Suite ataupun Xilinx ISE WebPack, Anda perlu untuk

mengunduh reference manual dari development kit yang digunakan. Berikut ini adalah halaman dimana

Anda dapat mengunduh reference manual tersebut:

http://www.digilentinc.com/Data/Products/GENESYS/Genesys_RM_VC.pdf

Setelah mengunduh reference manual tersebut, Anda dapat memulai dengan melihat wiring diagram

untuk input dan output (I/O) development kit yang digunakan. Pada reference manual tersebut, terdapat

pada halaman 18 untuk referensi Switch, Reset, BTN, dan Led seperti pada gambar berikut ini:

Dengan melihat gambar di atas, kita dapat mengetahui wiring diagram antara Switch, BTN, maupun

Led dengan FPGA Xilinx Virtex yang digunakan oleh development kit ini. Selanjutnya adalah memulai

proses pemrograman. Adapun format standar untuk pemrograman menggunakan bahasa VHDL adalah

sebagai berikut:

Bahasa pemrograman VHDL tidak mengenal case sensitive, jadi “A” sama dengan “a” dan lain

sebagainya. Untuk program pertama yang akan kita buat adalah program untuk menyalakan led LD0

yang berada pada alamat AG8 seperti yang dapat dilihat pada gambar wiring diagram di halaman

terdahulu. Pada aplikasi ISE Designer, pilih menu File -> New Project. Lalu masukkan nama dan lokasi

dimana file akan disimpan seperti pada gambar berikut ini:

Setelah itu, tekan tombol Next, dan pada halaman berikutnya akan muncul tampilan seperti ini:

Pada halaman ini, beberapa informasi yang harus diisi dapat dilihat pada informasi yang disertakan

bersama development kit. Informasi tersebut diantaranya, family Virtex5, device XC5VLX50T, package

FF1136, dan preferred language diisi VHDL. Untuk lebih lengkapnya mengenai cara membaca label IC

FPGA Xilinx, dapat dilihat pada ebook Xilinx Virtex-5 FPGA Packaging and Pinout Specification yang

dapat diunduh pada link berikut ini:

http://www.xilinx.com/support/documentation/data_sheets/ds202.pdf

Setelah menekan tombol Next pada halaman tersebut, akan muncul halaman ringkasan mengenai

informasi yang telah dimasukkan, pada halaman ini tekan tombol Finish. Sekarang, kita akan mulai

melakukan pemrograman. Pada bagian toolbar, pilih menu Project -> New Source. Kemudian pilih

VHDL module, dan masukkan nama file, lalu tekan tombol Next, maka akan muncul halaman entity.

Pada halaman entity cukup tekan tombol Next karena untuk program awal ini tidak akan digunakan,

lalu terakhir tekan tombol Finish. Berikut ini adalah listing program yang akan kita gunakan:

Setelah menuliskan program di atas, kita harus menentukan lokasi Led0. Caranya adalah, pilih menu

Project -> New Source -> Implementation Constraints File. Kemudian masukkan nama file pada text

box Filename. Tekan tombol Next lalu tekan tombol Finish. Setelah itu, masukkan pada teks editor

baris berikut ini:

Setelah itu simpan semua file dengan memilih menu Save All. Lalu pada tab Design, pilih Generate

Programming File dan double klik serta tunggu beberapa saat hingga selesai. Jika telah selesai, maka

pada panel Design akan terlihat bahwa Synthesize, Implement Design dan Generate Programming File

akan berubah menjadi hijau semua, berikut ini adalah tampilan panel Design:

Sampai pada langkah ini, terdapat dua jenis file yang telah dibuat, yaitu file berjenis *.vhd yang

digunakan untuk menuliskan program, dan file berjenis *.ucf dimana kita menuliskan alamat I/O yang

akan kita gunakan yaitu pada contoh ini Led0 berada pada pin AG8. Selanjutnya adalah melakukan

upload program yang telah kita buat tersebut ke development kit. Untuk itu, kita akan menggunakan

aplikasi Digilent Adept. Pada tab Config, pilih Browse, lalu arahkan ke lokasi dimana project yang kita

buat tadi berada dan pilih file yang memiliki ekstensi *.bit, lalu tekan tombol Open. Setelah itu,

kembali pada tab Config pada aplikasi Digilent Adept, tekan tombol Program dan tunggu hingga

prosesnya selesai. Secara normal, apabila proses download ke FPGA telah selesai, maka led berwarna

merah yang posisinya dekat tombol reset akan menyala seperti pada gambar berikut:

Sekarang, kita dapat melihat hasil eksekusi program yang telah kita buat tadi, yaitu led pada Led0 akan

menyala seperti ini:

Pada program selanjutnya, kita akan menyalakan led dari Led0 hingga Led7. Berikut ini adalah listing

programnya:

library IEEE;

use IEEE.STD_LOGIC_1644.ALL;

entity Led0_Led7 is port(

LED: out std_logic_vector(7 downto 0));

end Led0_Led7;

architecture Behavioral of Led0_Led7 is

begin

LED <= (others => '1');

end Behavioral;

Dan berikut ini adalah listing untuk implementation constraints:

NET “LED<0>” LOC = “AG8”;

NET “LED<1>” LOC = “AH8”;

NET “LED<2>” LOC = “AH9”;

NET “LED<3>” LOC = “AG10”;

NET “LED<4>” LOC = “AH10”;

NET “LED<5>” LOC = “AG11”;

NET “LED<6>” LOC = “AF11”;

NET “LED<7>” LOC = “AE11”;

Setelah menuliskan ke-dua file tersebut, lanjutkan dengan langkah generate dan download hasilnya ke

development kit, maka lampu LD0 hingga LD7 akan menyala semua seperti pada gambar berikut ini:

Pada gambar di atas, bisa terlihat bahwa led LD0 hingga LD7 semuanya menyala, walaupun switch

SW0 hingga SW7 dalam posisi off. Kembali merujuk pada wiring diagram pada beberapa halaman di

depan, switch tersebut tidak terhubung langsung dengan led, melainkan terhubung dengan IC FPGA.

Selanjutnya kita akan membuat program yang akan menyalakan led berdasarkan posisi switch.

Maksudnya led LD0 akan menyala jika switch SW0 berada pada posisi “on” dan seterusnya hingga

LD7 dan SW7. Listing programnya dapat dilihat pada halaman selanjutnya:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

entity Switch_LED is port(

SW0 : in STD_LOGIC := '1';

SW1 : in STD_LOGIC := '1';

SW2 : in STD_LOGIC := '1';

SW3 : in STD_LOGIC := '1';

SW4 : in STD_LOGIC := '1';

SW5 : in STD_LOGIC := '1';

SW6 : in STD_LOGIC := '1';

SW7 : in STD_LOGIC := '1';

LED0 : out STD_LOGIC := '1';

LED1 : out STD_LOGIC := '1';

LED2 : out STD_LOGIC := '1';

LED3 : out STD_LOGIC := '1';

LED4 : out STD_LOGIC := '1';

LED5 : out STD_LOGIC := '1';

LED6 : out STD_LOGIC := '1';

LED7 : out STD_LOGIC := '1';

end Switch_LED;

architecture Behavioral of Switch_LED is

begin

LED0 <= SW0;

LED1 <= SW1;

LED2 <= SW2;

LED3 <= SW3;

LED4 <= SW4;

LED5 <= SW5;

LED6 <= SW6;

LED7 <= SW7;

end Behavioral;

Dan untuk listing implementation constraints dapat dilihat pada halaman selanjutnya.

NET “LED0” LOC = “AG8”;

NET “LED1” LOC = “AH8”;

NET “LED2” LOC = “AH9”;

NET “LED3” LOC = “AG10”;

NET “LED4” LOC = “AH10”;

NET “LED5” LOC = “AG11”;

NET “LED6” LOC = “AF11”;

NET “LED7” LOC = “AE11”;

NET “SW0” LOC = “J19”;

NET “SW1” LOC = “L18”;

NET “SW2” LOC = “K18”;

NET “SW3” LOC = “H18”;

NET “SW4” LOC = “H17”;

NET “SW5” LOC = “K17”;

NET “SW6” LOC = “G16”;

NET “SW7” LOC = “G15”;

Setelah itu, seperti langkah-langkah sebelumnya, generate lalu upload ke development kit. Hasilnya

adalah sebagai berikut:

Bisa terlihat bahwa led LD0, LD2, LD4, dan LD6 kondisinya menyala, sedangkan LD1, LD3, LD5 dan

LD7 berada dalam kondisi padam sesuai dengan posisi saklar SW0, SW2, SW4 dan SW6 yang berada

pada posisi “on” serta SW1, SW3, SW5 dan SW7 yang berada pada posisi “off”.

Langkah selanjutnya adalah mencoba melakukan sedikit optimisasi program yang telah kita buat

tersebut. Berikut ini adalah listring program dengan sedikit optimisasi:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity switch_led is port(

led : out std_logic_vector (7 downto 0);

sw : in std_logic_vector (7 downto 0) := (others => '1'));

end switch_led;

architecture Behavioral of switch_led is

begin

led(0) <= sw(0);

led(1) <= sw(1);

led(2) <= sw(2);

led(3) <= sw(3);

led(4) <= sw(4);

led(5) <= sw(5);

led(6) <= sw(6);

led(7) <= sw(7);

end Behavioral;

Adapun untuk file implementation constraints, tidak mengalami perubahan. Selanjutnya, untuk

menguji listring di atas, lakukan seperti langkah-langkah sebelumnya yaitu dengan generate lalu upload

ke development kit.

Sekian tutorial singkat kali ini, semoga bermanfaat. Sampai jumpa di tutorial berikutnya.