Field programmable gate array (FPGA) adalah jenis sirkuit terpadu serba guna, yang, tidak seperti perangkat logika tradisional seperti sirkuit terpadu khusus aplikasi (ASIC), dirancang agar dapat diprogram (dan sering kali dapat diprogram ulang) agar sesuai dengan berbagai tujuan, terutama komputasi kinerja tinggi (HPC) dan pembuatan prototipe.
Frasa “field programmable” atau bidang yang dapat diprogram mengacu pada kemampuan FPGA untuk diprogram "di lapangan" atau setelah chip dirilis dari pabriknya. Xilinx, sebuah produsen teknologi, pertama kali memperkenalkan FPGA pada tahun 1985.
FPGA dapat disesuaikan agar sesuai dengan beberapa contoh penggunaan, termasuk tujuan yang baru muncul atau eksperimental, tanpa perlu memodifikasi atau mengubah perangkat kerasnya secara fisik. Fleksibilitas untuk dapat dikonfigurasi ulang ini dicapai melalui serangkaian blok logika yang dapat diprogram tetap (PLB) dan interkoneksi fleksibel yang dapat dikonfigurasi untuk melakukan operasi yang kompleks atau berfungsi sebagai gerbang logika sederhana. FPGA juga mencakup elemen memori, mulai dari flip-flop bit tunggal hingga rangkaian memori yang sangat padat, untuk penyimpanan data digital di dalam perangkat.
FPGA bernilai tinggi karena kombinasi kinerja tinggi dan keserbagunaannya yang ekstrem. FPGA sangat berguna dalam aplikasi yang membutuhkan kinerja tinggi, latensi rendah, dan fleksibilitas real-time. Untuk alasan ini, FPGA biasanya digunakan dalam industri telekomunikasi, otomotif, dan kedirgantaraan.
FPGA dan ASIC melayani tujuan yang berbeda.
ASIC dikembangkan dan dioptimalkan untuk aplikasi tertentu dan tidak dapat dikonfigurasi ulang. Berbagai elemen sirkuit internalnya (transistor) disusun dalam struktur yang tetap dengan interkoneksi tetap dan tidak dapat diubah (kabel) di antara elemen tersebut.
Karena ASIC hanya memiliki satu tujuan, hanya elemen logika yang dibutuhkan untuk tujuan tersebut yang diintegrasikan; misalnya, jika pengalian titik mengambang tidak dibutuhkan, maka tidak akan disertakan ke dalam desain.
Sebaliknya, FPGA dapat dikonfigurasi dan dikonfigurasi ulang untuk aplikasi potensial apa pun. Seperti ASIC, elemen sirkuit internalnya disusun dalam struktur tetap (blok logika yang dapat diprogram atau PLB) tetapi dengan interkoneksi yang dapat dikonfigurasi ulang di antaranya. Elemen logika dalam FPGA dipilih untuk mendukung berbagai macam aplikasi, tetapi akan mengalami “pakai atau hilang” ketika elemen logika tertentu tidak digunakan. Jika pengali floating-point tidak diperlukan untuk aplikasi tertentu, tetapi FPGA memiliki pengali tersebut, maka sumber daya tersebut tidak terhubung dan merupakan "ruang yang terbuang" dalam FPGA.
Meskipun kedua perangkat dapat memiliki ratusan juta transistor, sebuah ASIC dapat menggunakan transistor tersebut untuk memberikan efisiensi dan kinerja tinggi, namun dengan mengorbankan fleksibilitas. Biaya NRE di muka untuk mengembangkan ASIC bisa selangit, sementara biaya unit bisa relatif rendah.
FPGA menggunakan transistornya untuk memberikan efisiensi tinggi dan kinerja tinggi tetapi dengan fleksibilitas luar biasa. Biaya NRE di muka untuk mengembangkan FPGA bisa sangat rendah, sementara biaya unit umumnya lebih tinggi. Penting untuk dicatat bahwa ini bukan aturan yang kaku dan cepat. Di arena kinerja, misalnya, FPGA terbaru telah berevolusi untuk menghasilkan clock rate lebih dari 500 MHz dan umumnya dibuat pada geometri proses silikon yang canggih. Singkatnya, batas antara FPGA dan ASIC menjadi makin kabur dengan setiap generasi FPGA baru.
FPGA menjadi perangkat keras yang dapat disesuaikan dengan mengonfigurasi PLB dan interkoneksi menggunakan bahasa deskripsi perangkat keras standar (HDL) seperti Verilog atau VHDL.
Fungsi berbasis FPGA spesifik, serta interkoneksi antara fungsi-fungsi tersebut, “dijelaskan” dalam HDL. Deskripsi dikompilasi untuk menghasilkan file konfigurasi FPGA. Dengan menggunakan bahasa deskripsi perangkat keras, dimungkinkan untuk menggunakan sumber daya FPGA bawaan (susunan memori, inti PCI, dan banyak lagi), serta membuat sirkuit logika yang disesuaikan (adder, multiplexer, dan fungsi khusus aplikasi lainnya) dari elemen FPGA yang lebih primitif.
Dalam proses yang dikenal sebagai sintesis, kode HDL diterjemahkan ke dalam netlist, sebuah deskripsi yang efektif tentang gerbang logika dan interkoneksi yang diperlukan untuk mengimplementasikan kode HDL. Netlist kemudian dipetakan ke PLB dan interkoneksi yang secara fisik membentuk sirkuit unik.
FPGA modern yang diproduksi oleh produsen seperti Intel dan Altera menawarkan berbagai fitur digital dan analog, termasuk kepadatan logika yang mengesankan, memori flash, prosesor tertanam, dan blok pemrosesan sinyal digital (DSP). FPGA dapat dikonfigurasi dan dikonfigurasi ulang dengan memodifikasi input dan output listrik, memilih sumber daya internal mana yang digunakan dan menentukan bagaimana sumber daya ini terhubung melalui sumber daya perutean yang dapat dikonfigurasi—hasil akhirnya adalah solusi perangkat keras khusus untuk menyelesaikan masalah tertentu.
Seperti halnya perangkat lunak, pengembangan desain FPGA yang kompleks dapat disederhanakan dengan menggunakan pustaka yang telah dirancang sebelumnya dari berbagai fungsi dan sirkuit digital, yang disebut sebagai inti kekayaan intelektual (IP). Pustaka ini tersedia untuk dibeli atau disewa dari vendor FPGA dan pemasok pihak ketiga yang sering mengkhususkan diri dalam mengembangkan berbagai fungsi.
Selain komponen sirkuit tradisional seperti mikrokontroler dan konverter, untuk mencapai fungsi yang dapat dikonfigurasi ulang, perangkat FPGA modern menggunakan kombinasi berbagai elemen yang dapat diprogram.
Elemen-elemen yang dapat diprogram ini terutama adalah blok logika yang dapat dikonfigurasi (CLB), interkoneksi yang dapat diprogram, perutean yang dapat diprogram, blok input/output yang dapat diprogram (IOB), memori on-chip, dan blok pemrosesan sinyal digital (DSP).
Blok logika yang dapat dikonfigurasi (CLB) adalah komponen utama FPGA. CLB umumnya berisi beberapa elemen logika primitif (gerbang logika, tabel look-up kecil, flip-flop, multiplexer, dan banyak lagi). Di dalam CLB, flip-flop umumnya berfungsi sebagai elemen penyimpanan data utama, meskipun keluarga perangkat yang lebih baru mungkin juga menggabungkan elemen memori dangkal di dalam CLB.
Hubungan yang dibangun dari segmen kawat yang digabungkan dengan sakelar yang dapat diprogram secara elektrik menyediakan jalur perutean antara blok logika FPGA. Kotak sakelar yang berisi beberapa sakelar semikonduktor dasar biasanya digunakan untuk membuat interkoneksi yang dapat diprogram FPGA. Interkoneksi ini memungkinkan output dari unit tertentu atau pad input untuk dihubungkan ke sel atau pad lain di dalam sirkuit.
Segmen kawat prafabrikasi digabungkan bersama (atau dibiarkan tidak terhubung) oleh interkoneksi yang dapat diprogram untuk memberikan infrastruktur perutean yang sepenuhnya dapat diprogram dalam FPGA. Sumber daya routing memiliki hubungan hierarkis, dengan kombinasi kabel panjang, sedang, dan pendek yang menjangkau berbagai “panjang” di dalam FPGA. Infrastruktur perutean yang dapat diprogram ini, diaktifkan oleh interkoneksi yang dapat diprogram, memungkinkan pengguna mengonfigurasi sumber daya FPGA untuk implementasi tugas atau aplikasi tertentu.
Antarmuka antara FPGA dan perangkat eksternal lainnya diaktifkan oleh blok input/output (I/O) (IOB). IOB adalah sumber daya input dan output yang dapat diprogram yang dikonfigurasikan agar sesuai dengan protokol perangkat eksternal apa pun yang terhubung dengan FPGA. Semua sinyal yang masuk atau keluar dari FPGA melakukannya melalui pin perangkat dan IOB terkait.
FPGA paling awal hanya menggunakan flip-flop (FF) untuk mengintegrasikan memori ke dalam blok logika FPGA. Namun, seiring dengan meningkatnya kemampuan FPGA, desain yang makin kompleks membutuhkan memori on-chip khusus untuk buffering dan penggunaan ulang data. FPGA modern menggunakan susunan memori SRAM yang besar, tabel pencarian yang lebih kecil (LUT), dan elemen flip-flop tradisional untuk menyediakan penyimpanan yang diperlukan untuk aplikasi tertentu.
Pada FPGA awal, satu-satunya sumber daya aritmatika yang tersedia adalah penjumlah sederhana; apa pun yang lebih kompleks dibangun dari elemen logika yang lebih primitif. Namun, seiring dengan kemajuan teknologi silikon, sumber daya aritmatika yang lebih kompleks dimasukkan ke dalam FPGA, yang berpuncak pada blok DSP FPGA modern. Blok DSP menyediakan sumber daya yang sangat dioptimalkan (seperti pengali, akumulator, dan lainnya) untuk mengimplementasikan fungsi aritmatika dengan kinerja tinggi.
Penggunaannya menghilangkan kebutuhan untuk mengimplementasikan fungsi-fungsi ini dalam CLB tujuan umum, sehingga membebaskan CLB untuk tujuan lain. Operasi seperti penyaringan digital, konvolusi, transformasi Fourier, operasi trigonometri, dan masih banyak lagi dapat memanfaatkan sumber daya ini untuk mendapatkan kinerja waktu nyata dalam berbagai aplikasi mulai dari pemrosesan radar, beamforming, pengenalan pola, dan masih banyak lagi.
FPGA tersedia dalam beberapa varietas berbeda yang menawarkan berbagai jenis konfigurabilitas, konsumsi daya, elemen yang dapat diprogram, dan memori on-chip.
Memiliki sifat serbaguna secara alami, FPGA sangat cocok untuk berbagai aplikasi.
FPGA disukai untuk pemrosesan sinyal dan akuisisi data karena kemampuan pemrosesan paralel berkecepatan tinggi.
Algoritma pemrosesan sinyal berkecepatan tinggi membuat FPGA sangat cocok untuk melakukan kontrol penerbangan, pemrosesan sensor, dan tugas komunikasi yang digunakan pada pesawat tanpa awak seperti drone.
Sistem kontrol industri yang digunakan untuk memantau infrastruktur seperti jaringan listrik, kilang minyak, dan pabrik pengolahan air menggunakan FPGA yang dapat dengan mudah dioptimalkan untuk memenuhi kebutuhan unik berbagai industri. Dalam industri yang sangat penting ini, FPGA dapat digunakan untuk mengimplementasikan berbagai otomatisasi dan fitur enkripsi berbasis perangkat keras untuk keamanan siber yang efisien.
Meskipun FPGA adalah solusi yang berguna untuk tugas-tugas yang membutuhkan fleksibilitas, ASIC yang dikhususkan untuk tugas tertentu sering kali lebih cocok untuk operasi standar. Saat sistem baru dikembangkan, FPGA sangat berguna untuk mengembangkan dan membuat prototipe ASIC baru untuk teknologi yang sedang berkembang.
FPGA menambah nilai pada pusat data dengan memfasilitasi bandwidth tinggi, server latensi rendah, jaringan, dan infrastruktur penyimpanan.