Anda di halaman 1dari 39

KEMENTRIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA


ELECTRONIC ENGINERING POLYTECHNIC INSTITUTE OF SURABAYA
(EEPIS)
JL. RAYA ITS KEPUTIH SUKOLILO SURABAYA 60111 INDONESIA
TELP.(031) 5947280 FAX. (031) 5946114

Praktikum VLSI & Perancangan Logika

LAPORAN

JUDUL : Panduan Pemrograman Device FPGA

PERCOBAAN : 5

NAMA : Made Wira Narendra Wirsuyana

KELAS : D4 LJ Elektronika

NRP : 2122640013

DOSEN : Bapak Arif Irwansyah

TANGGAL : 20 November 2023


Percobaan 5
Pengenalan dan Panduan Pemrograman Divais FPGI
1.1.Tujuan :

• Memberikan pengenalan terhadap perancangan FPGA dengan software ISE Design Suite
• Mengenal software VHDL
• Implementasi rancangan pada FPGA devais
• Mampu mendemonstrasikan penggunaan software untuk merancang rangkaian sederhana
pada FPGA

1.2. Landasan Teori

Field-Programmable Gate Array (FPGA) merupakan sebuah IC digital yang sering


digunakan untuk mengimplementasikan rangkaian digital. FPGA berbentuk komponen
elektronika dan semikonduktor yang terdiri dari komponen gerbang terprogram (programmable
logic) dan sambungan terprogram (interkoneksi). Komponen gerbang terprogram yang dimiliki
meliputi jenis gerbang logika biasa (AND, OR, NOT) maupun jenis fungsi matematis dan
kombinatorik yang lebih kompleks, seperti decoder, adder, subtractor, multiplier, dll. Blok-
blok komponen di dalam FPGA bisa juga mengandung elemen memori (register) mulai dari
flip-flop sampai pada RAM (Random Access Memory). FPGA sangat sesuai untuk pemrosesan
komputasi dari algoritme integrasi numerik. Keuntungan implementasi FPGA digunakan untuk
meningkatkan efisiensi rancangan dengan cara mengurangi pemakaian pemrograman
perangkat lunak (software). FPGA mempunyai koreksi error yang kecil dan merupakan
teknologi yang bebas (technology-independent) untuk diimplementasikan dalam berbagai
algoritme. Kinerja aplikasi FPGA lebih cepat dibandingkan dengan aplikasi mikrokontroler,
karena FPGA hanya mensintesis perangkat keras (hardware) saja, sementara mikrokontroler
mengeksekusi instruksi perangkat lunak (software) yang digunakan untuk mengendalikan
perangkat keras (hardware), sehingga waktu tunda yang diimplementasikan hanya memakan
waktu tunda perambatan (propagation delay) saja. Pemodelan FPGA membutuhkan informasi
terkait dengan tingkat perbedaan abstraksi dan jenis model yang digunakan. Seorang perancang
FPGA harus mampu mengambil beberapa tahapan pemodelan untuk memastikan hasil model
rancangannya melalui model simulasi yang telah disediakan oleh vendor FPGA masing-
masing.
Pengertian terprogram (programmable) dalam FPGA adalah mirip dengan interkoneksi
saklar dalam breadboard yang bisa diubah oleh pembuat desain sesuai kebutuhan pengguna.
Dalam FPGA, interkoneksi ini bisa diprogram kembali oleh pengguna maupun pendesain di
dalam lab atau lapangan (field). Oleh karena itu jajaran gerbang logika (Gate Array) ini
disebut field-programmable. Jenis gerbang logika yang bisa diprogram meliputi semua gerbang
dasar untuk memenuhi kebutuhan yang manapun.
Vendor-vendor FPGA berbasis static random access memory (SRAM) dibuat oleh Xilinx
Inc., Altera Corp., Atmel dan Lattice Semiconductor; sedangkan, vendor-vendor FPGA
berbasis flash dan antifuse dibuat oleh Actel Corp. dan Quick Logic Corp. Pemain lainnya yang
kemudian pupus di tengah jalan diantaranya adalah Intel, Texas Instrument, Motorola, NSC,
AMD, Cypress, Philips. Pendatang dalam dunia FPGA yang telah diserap dan gagal dalam
pemasaran produknya adalah Dynachip, PlusLogic, Triscend, SiliconSpice, Chameleon,
Quicksilver, Morphics, Adaptive Silicon. Kecepatan inovasi dalam dunia FPGA ditentukan
oleh vendor yang memimpin pemasaran produknya. Dua vendor FPGA yang sering dipakai
oleh perancang adalah Xilinx, Inc. dan Altera Corp.
Alasan menggunakan FPGA :

• Memiliki kemampuan untuk menangani beban komputasi yang begitu berat


• Menghilangkan tugas-tugas intensif dari Digital Signal Processing
• Kustomisasi arsitektur agar sesuai dengan algoritme ideal.
• Mengurangi biaya sistem.
• Efisiensi biaya.

FPGA merupakan kepanjangan dari Field Programmable Gate Array yaitu programmable
device besar yang tersusun atas modul-modul logika independen yang dapat di konfigurasi oleh
pemakai yang di hubungkan melalui kanal-kanal routing yang dapat di program.
Field Programmable Gate Array (FPGA) mempunyai kelebihan sebagai berikut :
• Dikonfigurasi oleh End User
• Tidak memerlukan proses Fabrikasi
• Tersedia solusi yang mendukung chip customized VLSI
• Mampu menimplementasikan logic circuit, instant manufacturring, very-low cost
prototype
• Pemrograman yang singkat untuk fungsi dan kemampuan yang setara dengan ASIC

FPGA ini sendiri juga merupakan IC tipe HDL yang mana pemakai dapat mendesain
hardware sesuai yang diinginkan di dalam IC FPGA. Sedangkan perkembangan FPGA pada
saat ini berlangsung dengan cepat dan dewasa ini terdapat bermacam-macam keluarga FPGA
dengan kebutuhan perancangan dan perangkat perancangan ( design tools ) yang berbeda.
Xilinx merupakan salah satu perusahaan yang memproduksi FPGA disamping perusahaan lain
yang juga memproduksi FPGA seperti ACTEL dan PLESSEY Semiconductor. Xilinx sendiri
memproduksi beberapa jenis FPGA yaitu VIRTEX, SPARTAN, XC3000, XC4000 dan
XC5000.
Arsitektur FPGA
Secara umum arsitektur bagian dalam dari IC FPGA terdiri atas tiga elemen utama yaitu
Input/Output Blok ( IOB ), Configurable Logic Block (CLB) dan Interkoneksi. Configurable
Logic Blocks :
• Look up table based complex structure
• Implement the sequential circuit
Programmable Interconnect :
• Berisi wire segments dan programmable switches
• Menghubungkan anata Configurable Logic Blocks yang berbeda
Input/output block :
• Sebagai interface antara external package pin dari device dan internal user logic

Gambar Arsitektur FPGA


Fungsi logika dan interkoneksi FPGA ditentukan oleh data yang tersimpan pada sel
memori statik internal. Ada beberapa cara untuk membuat data konfigurasi ke dalam sel
memori ini, baik yang dilakukan secara otomatis pada waktu catu daya diberikan maupun
dengan membaca konfigurasi data dari eksternal Serial atau byte Paralel PROM (mode master)
atau Data dapat dituliskan pada FPGA dari eksternal device ( mode slave dan peripheral).

Proses Implementasi FPGA


FPGAs diimplementasikan dengan efficient CAD systems
Design Entry dapat dilakukan dengan cara
Schematic capture program,
VHDL / Verilog
Logic Optimization
Memodifikasi Boolean Expression untuk mengooptimalkan penggunaan
Logic berbasis area dan kecepatan atau kombinasi keduanya
Technology Mapping
Transformasi dari Boolean Expression atau VHDL kedalam bentuk circuit pada
FPGA logic blocks
Area optimization – meminimalkan penggunaan block
Delay optimization – meminimalkan jumlag stage pada critical path

Placement

After mapping the circuit into logic blocks placement algorithms are used to place
each block in the FPGA’s array
Typically these minimize the total length of interconnect required for placement
Routing software
Mengatur FPGA’s wire segments dan menentukan programmable switches untuk
menghubungkan antar FPGA blocks
Memastikan 100% connections telah terbentuk
Meminimalkan propagation delay pada time-critical connections
Programming unit
Mengkonfigurasi chip setelah placement & routing step tuntas
Keseluruhan proses memakan waktu antara beberapa menit sampai beberapa jam

Programmable Logic - Design Flow


Design Entry dengan cara schematic, ABEL, VHDL, dan/atau Verilog.
Implementation yaitu Placement & Routing dan bitstream generation. Juga, analyze timing,
view layout,
Download meng-upload bitstream ke Hardware (FPGA chip)
Aplikasi FPGA
Prototyping
• Ideal untuk aplikasi pembuatan prototype
On-site re-configuration of hardware
• Untuk aplikasi hardware yang bisa dikonfigurasi ulang secara cepat

FPGA-based computation engines


FPGA sebagai processor aplikasi computasi
Pemrograman IC FPGA

Gambar Proses Pemrograman IC FPGA


1.3. Peralatan yang dibutuhkan
• Komputer yang sudah terinstall software XILINX ISE Design Suite 14.7 dan Adept
Digilent.
• BASYS 2 FPGA board.

1.4. Langkah Percobaan

1. Buka software ISE Design Suite 14.7

2. Klik pada tombol “New Project” untuk membuat project baru.


3. Beri nama project dan letakkan project pada folder yang ditentukan serta Top-
level source type adalah HDL
4. Setting jenis FPGA dan konfigurasi lainnya sesuai gambar dibawah, dimana

Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL

5. Klik Next dan anda akan mendapat konfirmasi konfigurasi yang telah dilakukan.
Selanjutnya klik Finish
6. Selanjutnya buat file VHDL dengan cara klik kanan pada nama project,
selanjutnya pilih New Source
7. Pilih jenis source VHDL Module dan berilah nama, misalnya Decoder

8. Selanjutnya langsung klik Next kemudian Finish, karena kita akan membuat port
secara manual dengan text.
9. Maka anda akan mendapatkan file baru (*.vhd), tetapi tanpa deskripsi port yang
akan digunakan. Sebagaimana gambar dibawah:
10. Untuk percobaan pertama ini kita akan membuat Decoder 3 to 8. Dimana input
akan didapatkan dari Switch dan output akan ditampilkan pada led. Percobaan
akan dilakukan pada board Basys2 dengan IC FPGA Spartan 3E.
11. Edit VHDL code menjadi seperti berikut:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Decoder is
Port ( Switch : in STD_LOGIC_VECTOR (2 downto 0); -- 3-bit input
Led : out STD_LOGIC_VECTOR (7 downto 0) -- 4-bit output
); -- enable input
end Decoder;

architecture Behavioral of Decoder is


begin

process (Switch) begin case Switch is


when "000" => Led <= "00000001";
when "001" => Led <= "00000010";
when "010" => Led <= "00000100";
when "011" => Led <= "00001000";
when "100" => Led <= "00010000";
when "101" => Led <= "00100000";
when "110" => Led <= "01000000";
when "111" => Led <= "10000000";
when others => Led <=
"11111111"; end case; end process;

end Behavioral;

12. Lakukan pengecekan penulisan,dengan cara RUN Check Syntax sebagaimana


gambar berikut.

Lanjutkan ke langkah 13, jika tidak ada error.


13. Buat file deskripsi untuk penggunaan pin pada FPGA. Pada langkah ini Lokasi
Switch akan disetting untuk tepat terhubung dengan FPGA. Klik kanan pada
nama project, NEW Source okemudian pilih Implementation Constraints File
14. Anda akan mendapatkan file baru yang bernama Switch_Led.ucf. Edit file ini
menjadi seperti berikut kemudian save:

# Pin assignment for LEDs

NET "Led<7>" LOC = "G1" ; # Bank = 3, Signal name = LD7

NET "Led<6>" LOC = "P4" ; # Bank = 2, Signal name = LD6

NET "Led<5>" LOC = "N4" ; # Bank = 2, Signal name = LD5

NET "Led<4>" LOC = "N5" ; # Bank = 2, Signal name = LD4

NET "Led<3>" LOC = "P6" ; # Bank = 2, Signal name = LD3

NET "Led<2>" LOC = "P7" ; # Bank = 3, Signal name = LD2

NET "Led<1>" LOC = "M11" ; # Bank = 2, Signal name = LD1

NET "Led<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0

# Pin assignment for SWs

NET "Switch<7>" LOC = "N3"; # Bank = 2, Signal name = SW7

NET "Switch<6>" LOC = "E2"; # Bank = 3, Signal name = SW6

NET "Switch<5>" LOC = "F3"; # Bank = 3, Signal name = SW5

NET "Switch<4>" LOC = "G3"; # Bank = 3, Signal name = SW4

NET "Switch<3>" LOC = "B4"; # Bank = 3, Signal name = SW3

NET "Switch<2>" LOC = "K3"; # Bank = 3, Signal name = SW2

NET "Switch<1>" LOC = "L3"; # Bank = 3, Signal name = SW1

NET "Switch<0>" LOC = "P11"; # Bank = 2, Signal name = SW0


15. Selanjutnya RUN Synthesize

16. Lakukan Generate Programming File untuk mendapatkan bit file yang akan di
upload ke FPGA. Apabila tidak ada error, maka anda akan mendapatkan bit file.

17. Sampai dengan tahap ini, anda sudah berhasil membuat file bit yang siap untuk
diupload ke FPGA.

18. Persiapkan board BASYS 2 FPGA. Hubungkan kabel USB ke board dan Switch-
On kan. Maka led merah dekat USB dan switch akan menyala.
19. Aktifkan software Adept Digilent, maka board akan otomatis dikenali oleh
software.

20. Klik Browse yang sejajar dengan FPGA XC3S dan upload file decoder.bit yang
sudah dibuat sebelumnya. Lokasi ada di folder project, misal COBA1_FPGA.
Klik Yes untuk memprogram FPGA.

21. Amati pada Board FPGA, rubahlah posisi Switch dan perhatikan apakah output
pada LED sesuai dengan yang dirancang.
➢ Percobaan 2
Buatlah decoder untuk 7-Segment, dengan output 0F. Dimana input didapat
dari Switch.

Informasi, untuk pin output 7 segment berinama seg , untuk mendapatkan


akses ke 7segment, tambahkan code dibawah pada file *.ucf.

# Connected to Basys2 onBoard 7seg display


NET "seg<0>" LOC = "L14"; # Bank = 1, Signal name = CA
NET "seg<1>" LOC = "H12"; # Bank = 1, Signal name = CB
NET "seg<2>" LOC = "N14"; # Bank = 1, Signal name = CC
NET "seg<3>" LOC = "N11"; # Bank = 2, Signal name = CD
NET "seg<4>" LOC = "P12"; # Bank = 2, Signal name = CE
NET "seg<5>" LOC = "L13"; # Bank = 1, Signal name = CF
NET "seg<6>" LOC = "M12"; # Bank = 1, Signal name = CG
NET "dp" LOC = "N13"; # Bank = 1, Signal name = DP

➢ Tugas Praktikum
Merubah output yang awalnya bentuk angka ‘7’ menjadi bentuk huruf ‘h’
1.5. Data Hasil Percobaan
Hasil Percobaan (Pengenalan 1) :

1. Membuka software ISE Design Suite 14.7

2. Meng-klik tombol “New Project” untuk membuat project baru.


3. Memberi nama project dan letakkan project pada folder yang ditentukan serta
Top-level source type adalah HDL

4. Mensetting jenis FPGA dan konfigurasi lainnya sesuai gambar dibawah, dimana
Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL


5. Meng-klik Next dan anda akan mendapat konfirmasi konfigurasi yang telah
dilakukan. Selanjutnya klik Finish

6. Selanjutnya membuat file VHDL dengan cara klik kanan pada nama project,
selanjutnya pilih New Source

7. Memilih jenis source VHDL Module dan berilah nama, misalnya Decoder
8. Selanjutnya langsung meng-klik Next kemudian Finish, karena saya akan
membuat port secara manual dengan text.

9. Maka saya akan mendapatkan file baru (*.vhd), tetapi tanpa deskripsi port yang
akan digunakan. Sebagaimana gambar dibawah:
10. Untuk percobaan pertama ini saya akan membuat Decoder 3 to 8. Dimana input
akan didapatkan dari Switch dan output akan ditampilkan pada led. Percobaan
akan dilakukan pada board Basys2 dengan IC FPGA Spartan 3E (jika ada).

11. Edit VHDL code menjadi seperti berikut:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Decoder is
Port ( Switch : in STD_LOGIC_VECTOR (2 downto 0); -- 3-bit input
Led : out STD_LOGIC_VECTOR (7 downto 0) -- 4-bit output
); -- enable input
end Decoder;

architecture Behavioral of Decoder is


begin

process (Switch) begin


case Switch is
when "000" => Led <= "00000001";
when "001" => Led <= "00000010";
when "010" => Led <= "00000100";
when "011" => Led <= "00001000";
when "100" => Led <= "00010000";
when "101" => Led <= "00100000";
when "110" => Led <= "01000000";
when "111" => Led <= "10000000";
when others => Led <= "11111111";
end case;
end process;

end Behavioral;
12. Melakukan pengecekan penulisan,dengan cara RUN Check Syntax sebagaimana
gambar berikut.

Lanjutkan ke langkah 13, jika tidak ada error.


13. Membuat file deskripsi untuk penggunaan pin pada FPGA. Pada langkah ini
Lokasi Switch akan disetting untuk tepat terhubung dengan FPGA. Meng-klik
kanan pada nama project, NEW Source kemudian memilih Implementation
Constraints File

14. Saya akan mendapatkan file baru yang bernama Switch_Led.ucf. Mengedit file ini
menjadi seperti berikut kemudian save:

# Pin assignment for LEDs

NET "Led<7>" LOC = "G1" ; # Bank = 3, Signal name = LD7

NET "Led<6>" LOC = "P4" ; # Bank = 2, Signal name = LD6

NET "Led<5>" LOC = "N4" ; # Bank = 2, Signal name = LD5

NET "Led<4>" LOC = "N5" ; # Bank = 2, Signal name = LD4

NET "Led<3>" LOC = "P6" ; # Bank = 2, Signal name = LD3

NET "Led<2>" LOC = "P7" ; # Bank = 3, Signal name = LD2

NET "Led<1>" LOC = "M11" ; # Bank = 2, Signal name = LD1

NET "Led<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0


# Pin assignment for SWs

#NET "Switch<7>" LOC = "N3"; # Bank = 2, Signal name = SW7

#NET "Switch<6>" LOC = "E2"; # Bank = 3, Signal name = SW6

#NET "Switch<5>" LOC = "F3"; # Bank = 3, Signal name = SW5

#NET "Switch<4>" LOC = "G3"; # Bank = 3, Signal name = SW4

#NET "Switch<3>" LOC = "B4"; # Bank = 3, Signal name = SW3

NET "Switch<2>" LOC = "K3"; # Bank = 3, Signal name = SW2

NET "Switch<1>" LOC = "L3"; # Bank = 3, Signal name = SW1

NET "Switch<0>" LOC = "P11"; # Bank = 2, Signal name = SW0

15. Selanjutnya RUN Synthesize


16. Lakukan Generate Programming File untuk mendapatkan bit file yang akan di
upload ke FPGA. Apabila tidak ada error, maka anda akan mendapatkan bit file.

17. Sampai dengan tahap ini, anda sudah berhasil membuat file bit yang siap untuk
diupload ke FPGA.

18. Persiapkan board BASYS 2 FPGA. Hubungkan kabel USB ke board dan Switch-
On kan. Maka led merah dekat USB dan switch akan menyala.

19. Aktifkan software Adept Digilent, maka board akan otomatis dikenali oleh
software.
20. Klik Browse yang sejajar dengan FPGA XC3S dan upload file decoder.bit yang
sudah dibuat sebelumnya. Lokasi ada di folder project, misal COBA1_FPGA.
Klik Yes untuk memprogram FPGA.

21. Amati pada Board FPGA, rubahlah posisi Switch dan perhatikan apakah output
pada LED sesuai dengan yang dirancang.

Hasilnya nanti akan muncul pada LED yang sudah dilingkari sesuai dengan bit
input yang dimasukkan pada switch dan program.

Hasil Percobaan 2:

Tugas untuk dikerjakan di LAB, buatlah decoder untuk 7-Segment, dengan output
0F. Dimana input didapat dari Switch.

Informasi, untuk pin output 7 segment berinama seg , untuk mendapatkan akses
ke 7segment, tambahkan code dibawah pada file *.ucf.
# Connected to Basys2 onBoard 7seg display
NET "seg<0>" LOC = "L14"; # Bank = 1, Signal name = CA
NET "seg<1>" LOC = "H12"; # Bank = 1, Signal name = CB
NET "seg<2>" LOC = "N14"; # Bank = 1, Signal name = CC
NET "seg<3>" LOC = "N11"; # Bank = 2, Signal name = CD
NET "seg<4>" LOC = "P12"; # Bank = 2, Signal name = CE
NET "seg<5>" LOC = "L13"; # Bank = 1, Signal name = CF
NET "seg<6>" LOC = "M12"; # Bank = 1, Signal name = CG
NET "dp" LOC = "N13"; # Bank = 1, Signal name = DP
1. Langkah-langkah awal dalam pembuatan file sama dengan langkah-langkah
seperti pada “Percobaan 1” yaitu langkah 1 sampai langkah 10 kemudian
menuliskan syntax seperti pada langkah di bawah.
2. Berikut syntax dari program percobaan 2 dengan output 7 segment :
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity decoder_seg is
Port ( Switch : in STD_LOGIC_VECTOR (3 downto 0); -- 3-bit input
seg : out STD_LOGIC_VECTOR (7 downto 0) -- 4-bit output
); -- enable input
end decoder_seg;

architecture Behavioral of decoder_seg is


begin
process (Switch)
begin
case Switch is
when "0000" => seg <= "11000000";
when "0001" => seg <= "11111001";
when "0010" => seg <= "10100100";
when "0011" => seg <= "10110000";
when "0100" => seg <= "10011001";
when "0101" => seg <= "10010010";
when "0110" => seg <= "10000010";
when "0111" => seg <= "11111000";
when "1000" => seg <= "10000000";
when "1001" => seg <= "10010000";
when "1010" => seg <= "10001000";
when "1011" => seg <= "10000011";
when "1100" => seg <= "11000110";
when "1101" => seg <= "10100001";
when "1110" => seg <= "10000110";
when "1111" => seg <= "10001110";
when others => seg <= "11111111";
end case;
end process;

end Behavioral;

3. Selanjutnya melakukan pengecekan penulisan,dengan cara RUN Check Syntax


sebagaimana gambar berikut.
Jika tidak ada error dapat melanjutkan ke langkah selanjutnya, jika ada error harus
merevisi Kembali syntax yang ditulis.
4. Membuat file deskripsi untuk penggunaan pin pada FPGA. Pada langkah ini
Lokasi Switch akan disetting untuk tepat terhubung dengan FPGA. Meng-klik
kanan pada nama project, NEW Source kemudian memilih Implementation
Constraints File

5. Berikut koding Implementation Constraints File yang diketikan pada TUGAS 1 :


# Connected to Basys2 onBoard 7seg display
NET "seg<0>" LOC = "L14"; # Bank = 1, Signal name = CA
NET "seg<1>" LOC = "H12"; # Bank = 1, Signal name = CB
NET "seg<2>" LOC = "N14"; # Bank = 1, Signal name = CC
NET "seg<3>" LOC = "N11"; # Bank = 2, Signal name = CD
NET "seg<4>" LOC = "P12"; # Bank = 2, Signal name = CE
NET "seg<5>" LOC = "L13"; # Bank = 1, Signal name = CF
NET "seg<6>" LOC = "M12"; # Bank = 1, Signal name = CG
NET "dp" LOC = "N13"; # Bank = 1, Signal name = DP
# Pin assignment for SWs
#NET "Switch<7>" LOC = "N3"; # Bank = 2, Signal name = SW7
#NET "Switch<6>" LOC = "E2"; # Bank = 3, Signal name = SW6
#NET "Switch<5>" LOC = "F3"; # Bank = 3, Signal name = SW5
#NET "Switch<4>" LOC = "G3"; # Bank = 3, Signal name = SW4
NET "Switch<3>" LOC = "B4"; # Bank = 3, Signal name = SW3
NET "Switch<2>" LOC = "K3"; # Bank = 3, Signal name = SW2
NET "Switch<1>" LOC = "L3"; # Bank = 3, Signal name = SW1
NET "Switch<0>" LOC = "P11"; # Bank = 2, Signal name = SW0
6. Selanjutnya Run Synthesize

7. Melakukan Generate Programming File untuk mendapatkan bit file yang akan
di upload ke FPGA. Apabila tidak ada error, maka file bit akan didapatkan.
8. Selanjutnya jika semua proses sukses maka tampilan akan menjadi seperti di
bawah ini :

Selanjutnya hanya tingggal mengupload file bit ke dalam hardware.


Hasilnya terlihat seperti gambar dibawah ini :
Hasil tugas praktium
1. Memodifikasi program agar bentuk output pada 7 segment berbentuk ‘h’ saat
input switch angka ke-7 atau 0111.
2. Program yang diubah :
when "0111" => seg <= "00001011";
3. Hasil percobaan :
1.6. Analisa dan Kesimpulan
ANALISA
Pada praktikum piranti terprogram ini, saya melakukan percobaan “Pengenalan dan
Panduan Pemrograman Divais FPGA”. Dengan melakukan percobaan ini maka saya dapat
mengenal terhadap perancangan FPGA dengan software ISE Design Suite, mengenal software
VHDL, dapat mengimplementasikan rancangan pada divais FPGA, dan mampu
mendemonstrasikan penggunaan software untuk merancang rangkaian sederhana pada FPGA.
Pada landasan teori telah diketahui bahwa Field-Programmable Gate Array (FPGA) merupakan
sebuah IC digital yang sering digunakan untuk mengimplementasikan rangkaian digital. FPGA
berbentuk komponen elektronika dan semikonduktor yang terdiri dari komponen gerbang
terprogram (programmable logic) dan sambungan terprogram (interkoneksi) atau
programmable device besar yang tersusun atas modul-modul logika independen yang dapat di
konfigurasi oleh pemakai yang di hubungkan melalui kanal-kanal routing yang dapat di
program.
Pada praktikum ini terdapat 2 percobaan, hal pertama yang saya kerjakan yaitu membuat
decoder 3 to 8 dengan inputnya yaitu 3 buah switch dan outputnya 8 buah LED. Hal yang saya
lakukan paling awal yaitu membuat “New Project” pada software ISE Design Suite dan
kemudian memberikan nama file dan mensetting Top-level source type-nya HDL, selanjutnya
mengatur format konfigurasi file sebagai berikut:

Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL

Kemudian membuat New Source File untuk deskripsi port hardware yang nantinya akan
ditulis dengan syntax sebagai berikut:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Decoder is
Port ( Switch : in STD_LOGIC_VECTOR (2 downto 0); -- 3-bit input
Led : out STD_LOGIC_VECTOR (7 downto 0) -- 4-bit output
); -- enable input
end Decoder;

architecture Behavioral of Decoder is


begin
process (Switch) begin
case Switch is
when "000" => Led <= "00000001";
when "001" => Led <= "00000010";
when "010" => Led <= "00000100";
when "011" => Led <= "00001000";
when "100" => Led <= "00010000";
when "101" => Led <= "00100000";
when "110" => Led <= "01000000";
when "111" => Led <= "10000000";
when others => Led <= "11111111";
end case;
end process;
end Behavioral;
Setelah itu selesai selanjutnya melakukan pengecekan syntax untuk melihat apakah
syntax telah benar. Selanjutnya membuat file Implementation Constraint File, sebagai file
inisialisasi terhadap 3 buah input dan 8 buah output, kemudia dimasukan program dibawah
ini :

# Pin assignment for LEDs NET "Led<7>" LOC = "G1" ; # Bank = 3, Signal name =
LD7

NET "Led<6>" LOC = "P4" ; # Bank = 2, Signal name = LD6

NET "Led<5>" LOC = "N4" ; # Bank = 2, Signal name = LD5

NET "Led<4>" LOC = "N5" ; # Bank = 2, Signal name = LD4

NET "Led<3>" LOC = "P6" ; # Bank = 2, Signal name = LD3

NET "Led<2>" LOC = "P7" ; # Bank = 3, Signal name = LD2

NET "Led<1>" LOC = "M11" ; # Bank = 2, Signal name = LD1

NET "Led<0>" LOC = "M5" ; # Bank = 2, Signal name = LD0

# Pin assignment for SWs

#NET "Switch<7>" LOC = "N3"; # Bank = 2, Signal name = SW7

#NET "Switch<6>" LOC = "E2"; # Bank = 3, Signal name = SW6

#NET "Switch<5>" LOC = "F3"; # Bank = 3, Signal name = SW5

#NET "Switch<4>" LOC = "G3"; # Bank = 3, Signal name = SW4

#NET "Switch<3>" LOC = "B4"; # Bank = 3, Signal name = SW3

NET "Switch<2>" LOC = "K3"; # Bank = 3, Signal name = SW2


NET "Switch<1>" LOC = "L3"; # Bank = 3, Signal name = SW1

NET "Switch<0>" LOC = "P11"; # Bank = 2, Signal name = SW0

Setelah memasukkan koding inisiasi selanjutnya menjalankan Synthesize dan jika sudah
sukses selanjutnya meng-Generating Programming File agar mendapatkan file bit yang siap
untuk diupload pada hardware FPGA.
Jika dibuat dalam bentuk tabel maka hasil akhir dari percobaan ini yaitu :
INPUT OUTPUT
SW1 SW2 SW3 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

Selanjutnya hal ke-2 yang saya kerjakan yaitu membuat decoder 7 segment, dimana
langkah-langkah awal sama seperti percobaan 1, yang berbeda hanya kodingan deskripsi input
output seperti di bawah ini:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity decoder_seg is
Port ( Switch : in STD_LOGIC_VECTOR (3 downto 0); -- 3-bit input
seg : out STD_LOGIC_VECTOR (7 downto 0) -- 4-bit output
); -- enable input
end Decoder;

architecture Behavioral of Decoder is


begin
process (Switch)
begin
case Switch is
when "0000" => seg <= "11000000";
when "0001" => seg <= "11111001";
when "0010" => seg <= "10100100";
when "0011" => seg <= "10110000";
when "0100" => seg <= "10011001";
when "0101" => seg <= "10010010";
when "0110" => seg <= "10000010";
when "0111" => seg <= "11111000";
when "1000" => seg <= "10000000";
when "1001" => seg <= "10010000";
when "1010" => seg <= "10001000";
when "1011" => seg <= "10000011";
when "1100" => seg <= "11000110";
when "1101" => seg <= "10100001";
when "1110" => seg <= "10000110";
when "1111" => seg <= "10001110";
when others => seg <= "11111111";
end case;
end process;
Selanjutnya membuat file Implementation Constraint File, sebagai file inisialisasi
terhadap 4 buah input dan 8 buah output, kemudian dimasukan program dibawah ini :

# Connected to Basys2 onBoard 7seg display


NET "seg<0>" LOC = "L14"; # Bank = 1, Signal name = CA
NET "seg<1>" LOC = "H12"; # Bank = 1, Signal name = CB
NET "seg<2>" LOC = "N14"; # Bank = 1, Signal name = CC
NET "seg<3>" LOC = "N11"; # Bank = 2, Signal name = CD
NET "seg<4>" LOC = "P12"; # Bank = 2, Signal name = CE
NET "seg<5>" LOC = "L13"; # Bank = 1, Signal name = CF
NET "seg<6>" LOC = "M12"; # Bank = 1, Signal name = CG
NET "dp" LOC = "N13"; # Bank = 1, Signal name = DP
# Pin assignment for SWs
#NET "Switch<7>" LOC = "N3"; # Bank = 2, Signal name = SW7
#NET "Switch<6>" LOC = "E2"; # Bank = 3, Signal name = SW6
#NET "Switch<5>" LOC = "F3"; # Bank = 3, Signal name = SW5
#NET "Switch<4>" LOC = "G3"; # Bank = 3, Signal name = SW4
NET "Switch<3>" LOC = "B4"; # Bank = 3, Signal name = SW3
NET "Switch<2>" LOC = "K3"; # Bank = 3, Signal name = SW2
NET "Switch<1>" LOC = "L3"; # Bank = 3, Signal name = SW1
NET "Switch<0>" LOC = "P11"; # Bank = 2, Signal name = SW0
Setelah memasukkan koding inisiasi selanjutnya menjalankan Synthesize dan jika sudah
sukses selanjutnya meng-Generating Programming File agar mendapatkan file bit yang siap
untuk diupload pada hardware FPGA.

INPUT OUTPUT
SW1 SW2 SW3 SW4 dp G F E D C B A Bentuk
0 0 0 0 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 0 0 1 1
0 0 1 0 1 0 1 0 0 1 0 0 2
0 0 1 1 1 0 1 1 0 0 0 0 3
0 1 0 0 1 0 0 1 1 0 0 1 4
0 1 0 1 1 0 0 1 0 0 1 0 5
0 1 1 0 1 0 0 0 0 0 1 0 6
0 1 1 1 1 0 0 0 0 0 1 0 7
1 0 0 0 1 0 0 0 0 0 0 0 8
1 0 0 1 1 0 0 1 0 0 0 0 9
1 0 1 0 1 0 0 0 1 0 0 0 A
1 0 1 1 1 0 0 0 0 0 1 1 B
1 1 0 0 1 1 0 0 0 1 1 0 C
1 1 0 1 1 0 1 0 0 0 0 1 D
1 1 1 0 1 0 0 0 0 1 1 0 E
1 1 1 1 1 0 0 0 1 1 1 0 F
KESIMPULAN
Setelah melakukan Percobaan 1 dan Tugas 1, didapat sebuah analisa dan dari analisa itu
didapat sebuah kesimpulan yaitu :
a. Field-Programmable Gate Array (FPGA) merupakan sebuah IC digital yang sering
digunakan untuk mengimplementasikan rangkaian digital.
b. Membuat program untuk FPGA menggunakan software Xilinx ISE Design Suite.
c. Sebelum diupload ke dalam FPGA, program harus telah sukses disimulasi didalam
software ISE Design Suite, sehingga tidak perlu memprogram ulang jika terdapat
kesalahan dalam program.
d. Program menggunakan bahasa VHDL.
e. Percobaan 1 membuat decoder 3 to 8 dimana menggunakan 3 input switch dan 8 output
LED yang dapat hidup secara bergantian jika input ditekan sesuai tabel.
f. Percobaan 2 dan tugas tambahan membuat decoder 7 segment dimana menggunakan 4
input switch dan 8 output LED yang membentuk 7 segment, dimana saat input switch
diatur dari 000 sampai 111 maka output akan secara berurutan membentuk angka 0 sampai
dengan huruf A sesuai bilangan heksadesimal. Pada tugas hanya mengubah program
output saat diberi input 0111 sehingga output membenuk huruf ‘h’.
g. Field Programmable Gate Array (FPGA) mempunyai kelebihan sebagai berikut :
• Dikonfigurasi oleh End User.
• Tidak memerlukan proses Fabrikasi.
• Tersedia solusi yang mendukung chip customized VLSI.
• Mampu menimplementasikan logic circuit, instant manufacturring, very-low cost
prototype.
• Pemrograman yang singkat untuk fungsi dan kemampuan yang setara dengan ASIC.
h. FPGA ini merupakan IC tipe HDL yang mana pemakai dapat mendesain hardware sesuai
yang diinginkan di dalam IC FPGA.

Anda mungkin juga menyukai