sequential fpga programming

14
Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) Page | { PAGE \* MERGEFORMAT } XILINX SPARTAN-3E (PROJECT NAVIGATOR VER. 13.4) FILKOM | UB PEMROGRAMAN FPGA SEKUENSIAL: XILINX SPARTAN-3E (VHDL) Oleh: Dahnial Syauqy

Upload: heri-j-situmorang

Post on 05-Nov-2015

101 views

Category:

Documents


7 download

DESCRIPTION

learning about FPGA. Sequential Fpga Programming

TRANSCRIPT

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    PEMROGRAMAN FPGA SEKUENSIAL: XILINX SPARTAN-3E (VHDL)

    Oleh: Dahnial Syauqy

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    1. Pendahuluan

    Dalam tutorial ini akan diperkenalkan pemrograman FPGA sekuensial untuk Xilinx Spartan-3E. Secara garis besar isi tutorial ini meliputi:

    - Mendesain dan menuliskan program VHDL untuk D-flip flop sebagai unit memory untuk rangkaian sekuensial

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

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    2. Desain sistem

    Desain yang akan dibuat dalam tutorial ini adalah berupa D-flip flop yang merupakan salah satu bentuk unit memory pada ragkaian sekuensial. Input yang diberikan pada pin D pada flip flop diwakili oleh switch board FPGA sedangkan Output berupa 1 buah LED mewakili pin Q yang akan menyala tergantung kepada tabel kebenaran D-flip flop. Pada percobaan pertama, sumber clock akan diwakili oleh penekanan push button secara manual agar dapat melihat step penyimpanan dan transfer memory pada D-flip flop. Selanjutnya pada percobaan kedua, sumber clock akan menggunakan internal oscillator (sebesar 50 MHz) pada board Spartan 3-E.

    Kondisi:

    D Flip flop yang digunakan adalah jenis picu tepi naik, tanpa reset dan tanpa synchronous enable.

    Tabel kebenaran D-flip flop:

    D clock Q 0 0 Q (tetap kondisi sebelumnya) 0 1 Q (tetap kondisi sebelumnya) 0 Tepi naik 0 1 Tepi naik 1 1 Tepi turun Q (tetap kondisi sebelumnya)

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

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    5. Berikutnya akan muncul Project Summary untuk melakukan verifikasi konfigurasi yang telah dibuat sebelumnya. Setelah memastikan semua benar, klik finish dan project akan dibuat.

    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:

    - Definisikan dua input masing-masing 1 bit yang nantinya akan bertindak sebagai pin D dan clock. Berikan penamaan masing-masing dengan pin_d dan clock (nanti keduanya dihubungkan dengan switch).

    - Definisikan 1 bit pin output, berikan nama pin_q (nanti dihubungkan dengan LED)

    4. Setelah klik next, akan ditunjukkan Summary page.

    Selanjutnya, klik finish dan source akan di-generate.

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

    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.

    3.1.3 Mengedit source code VHDL

    1. Masukkan kode VHDL untuk D-flip flop pada blok architecture di bagian antara begin dan end. Berikut hasil keseluruhan kode dari bagian entity dan architecture:

    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.

    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.

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    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.

    Berikan alamat pin_d, pin_q dan clock seperti dalam tabel berikut. Untuk percobaan pertama, clock menggunakan penekanan push button secara manual, untuk percobaan kedua gunakan clock dari internal oscillator.

    PERCOBAAN I:

    Nama port pada kode

    Deskripsi Alamat Pin FPGA

    Pin_d Clock Pin_q

    Slider switch Push button (percobaan I) LED

    Gunakan alamat slider switch Gunakan alamat push button Gunakan alamat LED

    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

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    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

    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:

    Pastikan push button yang digunakan untuk clock menggunakan PULLDOWN, dan slider switch yang digunakan pada pin_d menggunakan PULLUP

    5. Klik Save pada PlanAhead untuk menyimpan konfigurasi port

    3.1.5 Implement design dan Summary untuk percobaan I

    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

    3. Pada Design summary dapat dilihat bahwa implementation state telah placed and routed dengan no errors.

    3.2 Download ke board untuk percobaan I

    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)

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

    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.

    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

    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.

    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.

    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.

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

    12. Klik kanan pada chip xc3e500e dan pilih program.

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

    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.

    PERCOBAAN II: sumber clock dari internal oscillator 50 MHz

    Untuk percobaan kedua, kembali ke panAhead dan ganti site clock menjadi alamat internal oscillator (C9)

    Nama Deskripsi Alamat Pin FPGA

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    port pada kode Pin_d Clock Pin_q

    Slider switch Push button (percobaan I) Internal oscillator (perc II) LED

    Gunakan alamat slider switch Gunakan alamat push button C9 Gunakan alamat LED

    Seperti langkah pada percobaan pertama, atur site untuk pin_d, pin_q dan clock. Untuk clock gunakan site C9 karena menggunakan internal oscillator (tidak seperti percobaan pertama yang menggunakan tombol manual sebagai simulasi clock)

    1. Pada ISE project, Klik tanda + pada user constraints. Jalankan PlanAhead dengan melakukan 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

    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:

    Pastikan I/O Std yang digunakan adalah LVCMOS33 agar level tegangan yang digunakan adalah 3.3 V (penting untuk fungsi kerja clock)

    5. Klik Save pada PlanAhead untuk menyimpan konfigurasi port

    Timing Constraint untuk Clock:

    Definisikan timing dan desain frekuensi yang bekerja pada internal board dengan FPGA. Timing tersebut diatur dengan membuat constraint yang menjadi guide saat penempatan dan routing desain pada FPGA. Constraint periode clock mendefinisikan frekuensi clock yang menjadi dasar desain dalam FPGA bekerja. Offset constraint mendefinisikan kapan data valid berada di input FPGA dan kapan data valid tersedia di output FPGA.

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    Langkah-langkah untuk mengatur timing constraint clock adalah sebagai berikut

    1. Pilih Implementation dari drop down list pada sources window

    2. Pilih HDL source file

    3. Klik tanda + di samping grup User contraint processes lalu dobel klik Create Timing Constraint process

    Jika sebelumnya tidak terdapat file UCF yang terkait dengan desain, maka pada tahap ini akan dibuat file UCF secara otomatis oleh ISE melalui proses Synthesis dan translate. Namun karena kita sudah membuat UCF saat kita mendefinisikan site menggunakan PlanAhead, maka secara otomatis file tersebut yag akan digunakan dan akan secara otomatis ditambahkan beberapa baris kode di bawah baris terakhir file UCF. Klik YES untuk membuka constraint editor.

    4. Pada kotak dialog timing costraints, dobel klik pada CLOCK di window unconstrained clocks. Masukkan periode sebesar 20 ns.

    5. Klik create dan ok

    6. Setelah informasi dimasukkan, kotak dialog akan seperti gambar berikut

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    7. Pada Timing constraint tab, Pilih Timing constraint di dalam constraint type. Timing constraint yang baru saja dibuat akan ditampilkan.

    8. Save untuk menyimpan timing constraint, jika diberikan opsi jalankan kembali Translate orXST step, klik OK untuk melanjutkan

    9. Tutup Constraints Editor.

    10. Pada tab processes, lakukan dobel klik pada implement design lagi.

    3.2.2 Download ke board untuk percobaan II

    Pada prosedur selanjutnya akan dilakukan generate programming file yang kemudian didownload ke board Spartan-3E melalui Impact.

    Lakukan proses download percobaan II seperti halnya proses download percobaan I. Setelah selesai, lakukan pengujian terhadap desain.

    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. Clock juga akan disimulasikan di dalam iSIM. Jadi yang akan disimulasikan adalah percobaan II.

    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

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

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

    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 yang berguna untuk desain berbasis clock. Penamaan harus diganti dengan input aktual yang bertugas sebagai clock.

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

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    Kode test bench yang digunakan adalah (merujuk pada timing diagram port input):

    LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --USE ieee.numeric_std.ALL; ENTITY dfftb IS END dfftb; ARCHITECTURE behavior OF dfftb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT dff PORT( masukan : IN std_logic; clock : IN std_logic; keluaran : OUT std_logic ); END COMPONENT; --Inputs signal masukan : std_logic := '0'; signal clock : std_logic := '0'; --Outputs signal keluaran : std_logic; -- Clock period definitions constant clock_period : time := 10 ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: dff PORT MAP ( masukan => masukan, clock => clock, keluaran => keluaran ); -- Clock process definitions clock_process :process

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    begin clock

  • Pemrograman FPGA Sekuensial: Spartan 3e (VHDL) P a g e | { PAGE \* MERGEFORMAT }

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

    [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