Apa itu FPGA???
Defenisi
Field-Programmable Gate Array (FPGA)
Field-Programmable Gate Array
(FPGA) merupakan sebuah IC digital yang sering digunakan untuk
mengimplementasikan rangkaian digital. FPGA (Field Programable Gate Array) juga merupakan
gerbang gerbang digital dimana interkoneksi antar masing masing gerbang
tersebut dapat dikonfigurasi antara satu sama lainnya, dan dapat dirancang
sesuai dengan keinginan dan kebutuhan user atau pemakai tanpa melalui tahap
burn. FPGA juga bisa dibilang processor atau embedeed controller.
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 algoritma 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 algoritma.
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.
Program
tersebut nantinya akan dibuat oleh user menggunakan software yang ada untuk
kemudian disimulasikan. Setelah simulasi berjalan lancar dan berhasil, program
tersebut siap untuk didownload ke dalam FPGA, begitu mudah, efisien dan
sederhana. Jika program tersebut gagal untuk disimulasikan, maka user/pemakai
hanya perlu menyusun ulang program dalam komputer sesuai yang dibutuhkan dan
ketika siap, download lagi program tersebut ke FPGA, begitu untuk seterusnya.
FPGA ini bersifat volatile, yang artinya ketika sumber daya yang menyuplainya
dicabut maka secara otomatis FPGA akan kehilangan fungsinya. Jadi FPGA ini
tidak mampu menyimpan program ketika supply tenaganya dicabut. User/pemakai
harus mendownload ulang program ke dalam FPGA lagi untuk mengimplementasikan
program tersebut.
Hal-hal
yang bisa digunakan dengan FPGA
- Anda bisa mengisi-ulang (memprogram-ulang) FPGA sebanyak yang Anda inginkan – tidak terbatas – dengan berbagai macam fungsi logik yang Anda inginkan.
- Jika Anda melakukan kesalahan pada rancangan Anda, cukup betulkan kesalahan tersebut, lakukan kompilasi ulang kemudian unduh (download) lagi.
- Rancangan Anda bisa bekerja lebih cepat dibandingkan dengan rancangan yang Anda buat dengan komponen-komponen biasa, karena, dengan FPGA, hampir semua rangkaian terimplementasi di dalam chip.
- FPGA (secara umum, kecuali yang dilengkapi Flash PEROM) akan kosong saat tidak dikenai catu-daya (seperti RAM). Anda harus mengunduh ulang rangkaian Anda agar bisa berfungsi kembali seperti semula.
Rangkaian FPGA / atau isi dari FPGA.
Bila dilihat dari segi bentuknya, FPGA tak berbeda jauh
dengan bentuk IC-IC lainnya. Hanya saja, bila dilihat dari isinya FPGA memiliki
bagian yang berbeda dengan komponen IC pada umumnya. Berikut isi dari FPGA pada
umumnya:
1.
Configure Logic Blocks (CLB). Bisa dikatakan, bagian inilah yang
akan memproses segala bentuk rangkaian logika yang dibuat oleh user/pemakai.
2.
I/O Blocks. Sebagai interface antara external pin dari device dan
internal user logic
3.
Programmable Interconnect. Bagian ini berisi wire segments
dan programmable switches atau biasa disebut saklar , selain itu bagian ini
juga akan menghubungkan antara CLB satu dengan CLB lainnya.
4.
RAM
(Random Access Memory) Merupakan tempat penyimpanan pada FPGA.
Isi dari CLB (Configure Logic
Blocks)
FPGA tersusun dari sebuah bagian yang bernama “logic-cell”
(Logic Blocks), yang kemudian pada perkembangannya saling terhubung satu sama
lain. Kumpulan-kumpulan dari logic cell ini berjumlah ratusan bahkan
ribuan dan membentuk sauatu fungsi yang kompleks. Sebuah logic cell pada
dasarnya terdiri atas sebuah lookup table(LUT), D flip-flop, dan sebuah
multiplekser 2 ke 1.
1.
Look
Up Table (LUT)
merupakan sejenis RAM (Random Acces Memory) yang berkapasitas kecil. Di
dalam FPGA, LUT ini memegang peranan penting dalam proses implementasi
fungsi-fungsi logika. Selain itu, LUT ini berciri khas memiliki input sejumlah
4 slice. Masing-masing slice berisi Shift Register, RAM, dan informasi input.
2. D Flip Flop. Seperti yang diketahui, flip-flop
(Bistable Multivibrator) dalah suatu rangkaian sel biner yang memiliki
dua buah output yang saling berkebalikan keadaannya (0 atau 1). Di dalam FPGA,
terdapat sebuah jenis flip-flop yaitu D flip-flop atau Data flip flop.
Rangkaian D flip-flop ini berfungsi sebagai rangkaian logika sekuensial dimana
di dalamnya terdapat peralatan memori dan pewaktu.
3. Multiplekser 2 ke 1. Sebuah multipleser adalah
piranti digital yang bekerja sebagai switch (saklar) yang menghubungkan data
dari n masukkan ke sebuah keluaran. Multiplekser berfungsi untuk memilih
beberapa input untuk hanya menjadi 1 output saja. Di dalam FPGA, terdapat
rangkaian multiplekser 2 ke 1 yang artinya, multiplekser tersebut memiliki 2
buah input dan 1 buah output.
Setiap logic cell tersebut dapat dihubungkan dengan
logic cell lainnya melalui jalur/koneksi yang ada. Setiap cell hanya mampu
bekerja secara sederhana dan ringkas, Namun bila antara satu cell saling
terhubung satu sama lain sebuah fungsi-fungsi logika yang kompleks pun dapat
terbentuk.
Arsitektur FPGA
1.
Antifuse merupakan lawan
dari fase regular. Antifuse normalnya merupakan sebuah rangkaian terbuka sampai
kita memaksakan suatu programing current melaluinya. Antifuse merupakan
kebalikan dari sekring yaitu akan open circuit bila dilewati arus (saklar 5
mA).
2.
Fine Grained adalah
arsitektur FPGA pada suatu sistem yang memiliki komponen yang kecil.
3.
Medium Grained adalah
arsitektur FPGA pada suatu sistem yang memiliki komponen yang sedang.
4.
Coarse Grained adalah
arsitektur FPGA pada suatu sistem yang memiliki komponen yang besar.
5.
MUX (Multiplexer)
merupakan suatu komponen yang fungsinya sebagai penyeleksi data berdasarkan
perintah untuk menampilkan data yang diinginkan. MUX memiliki benyak input data
tetapi hanya memiliki sebuah output karena memiliki selector yang mengatur
outputnya.
6.
LUT (Look Up
Table) merupakan sejenis RAM yang berkapasitas kecil, yang memegang
peranan penting dalam proses implementasi fungsi-fungsi logika. Dimana LUT ini
memiliki ciri khas yaitu dengan 4 buah inputan.
7.
CLB (Configure Logic
Block), untuk memproses segala bentuk rangkaian logika yang dibuat oleh user/pemakai.
8.
LAB merupakan kumpulan
dari CLB
9.
Slices merupakan
bagian isi dari LUT
10.
Fast Carry Chains adalah
tipe jalur interkoneksi yang berfungsi dalam pembuatan fungsi-fungsi logika
agar dapat berjalan dengan efisien.
11.
General Purpose I/O
adalah pin generik yang dapat dikontrol melalui software.
12.
Prosesor Corses adalah
inti dari sebuah prosesor yang melakukan tugas.
13.
Hard IP merupakan
perwujudan fisik design IP yang terbaik untuk aplikasi plug and play
14.
Soft IP merupakan
implementasi prosesor dalam sebuah bahasa HDL tanpa optimasi yang luas untuk
arsitektur tujuan
15.
Firm IP merupakan
implementasi HDL, tetapi sudah dioptimalkan untuk sebuah arsitektur FPGA tujuan
16.
System Gates adalah
sebuah masukan yang digunakan untuk mepresentasikan antara satu dan lebih 20
gerbang logika sederhana, yang mempunyai 2 masukan.
17.
Clocking adalah sebuah
clock pada FPGA, biasanya dibuat serempak bahwa setiap detak yang dihasilkan
pada sebuah FPGA terjadi serentak akan mempengaruhi kondisi yang ada.
Proses FPGA
Suatu ketika ingin mengimplementasikan rangkaian sederhana,
misalnya rangkaian Full Adder ke dalam FPGA. Seperti yang diketahui, rangkaian
full adder biasanya terdiri atas gerbang logika AND, gerbang logika OR dan
gerbang logika XOR. Lalu bagaimana proses implementasinya ke dalam FPGA? Bahwa
telah disebutkan bahwa setiap FPGA terdiri atas ratusan bahkan ribuan logic
cell. Rangkaian Full Adder tadi akan didownload ke dalam FPGA untuk
menempatkan masing-masing bagian dari Full Adder ke dalam logic cell.
Kemudian antara satu logic cell yang satu dengan yang lain saling terhubung
melalui jalur interkoneksi membentuk fungsi logika layaknya seperti rangkaian
full adder.
Hal yang sama juga terjadi pada rangkaian-rangkaian rumit
lainnya seperti rangkaian jam digital, scan key, dsb. Sebagai tambahan
untuk tujuan jalur interkoneksi antar cell, FPGA memiliki jalur
penghubung singkat diantara cell–cell yang saling berdekatan.
Tipe jalur interkoneksi ini sering disebut “carry chains”. Carry
chains berfungsi dalam pembuatan fungsi-fungsi logika agar dapat berjalan
dengan efisien (minim penggunaan dan tingkat operasi yang tinggi).
Dengan demikian, dalam menggunakan cary chains
apabila rangkaian yang hendak diimplementasikan ke dalam FPGA adalah rangkaian
digital yang sederhana, maka logic cell yang digunakan pun akan minimun dan
memiliki lokasi yang saling berdekatan satu sama lain. Hal yang sebaliknya pun
berlaku. Sehingga penggunaan logic cell di dalam FPGA akan efektif dan efisien.
FPGA ini biasa digunakan pada :
·
ASIC
(Application Specific Integrated Circuit) dan custom silicon, biasa digunakan
di trafo.
·
DSP
(Digital Signal Processing), atau biasa disebut mikroprosessor.
·
Embedded
Microcontroller, untuk melakukan tugas khusus. Contohnya : sebagai saklar atau
sebagai penghitung daya pada
trafo.
·
Physical
Layer Communication, untuk interkoneksi layer fisik denga layer protokol.
·
Reconfigurable
Computing, terdiri atas 2 yaitu : akselerasi hardware dan hardware simulation.
Alur Perancangan FPGA
FPGA diimplementasikan dengan sistem CAD (Computer Added Design). Berikut adalah jalur perancangan FPGA.
· Design Entry Bisa
dalam bentuk text yaitu bahasa pemrograman VHDL (Very High Speed Integrated
Hardware Description Language), maupun dalam bentuk shematic capture berupa
gambar-gambar simbol gerbang logika yang disatukan sehingga menjadi rangkaian
yang utuh.
· Logic Implementation (Gabungan dari Merge & Transalate
dan Optimize Equation) untuk
mengoperasikan bilangan boolean untuk mengoptimalkan penggunaan logic.
· Mapping
Transformasi ekspresi boolean ke dalam bentuk circuit pada FPGA logic block.
· Placement
Setelah mapping, dilakukan penempatan algoritma yang digunakan ke masing-masing
block.
· Routing Software
Mengatur programmable interconnect / wire segment dan menentukan programmable
switch untuk menghubungkan antar block.
· Programming Unit
Mengkonfigurasi setelah placement dan routing tuntas.
Daftar
Pustaka
Comments