Pengikut

© Abikindo | Design by Kannan | ^TOP^

New post

FPGA dan CPLD

Pengertian FPGA



Field-Programmable Gate Array (FPGA) adalah komponen elektronika dan semikonduktor yang mempunyai komponen gerbang terprogram (programmable logic) dan sambungan terprogram. Komponen gerbang terprogram yang dimiliki meliputi jenis gerbang logika biasa (AND, OR, XOR, NOT) maupun jenis fungsi matematis dan kombinatorik yang lebih kompleks (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).
Field Programmable dapat diartikan bahwa FPGA ini bersifat dapat dirancang sesuai dengan keinginan dan kebutuhan user/pemakai tanpa melalui tahap “burn” di laboratoruim atau di “hardware” oleh pabrik piranti. Sedangkan Gate Array artinya bahwa FPGA ini terdiri atas gerbang-gerbang digital dimana interkoneksi masing-masing gerbang tersebut dapat dikonfigurasikan antara satu sama lainnya.
Secara umum FPGA akan lebih lambat jika dibandingkan dengan jenis chip yang lain seperti pada chip Application-Specific Integrated Circuit (ASIC). Hal ini karena FPGA menggunakan power/daya yang besar bentuk desain yang kompleks.
                                


                                                                    Gambar FPGA

Sejarah FPGA

FPGA ini dikembangkan sejak tahun 1984 oleh perusahaan Xilinc yang berbasis di San Jose, CA. Perkembangan selanjutnya, FPGA ini mulai diproduksi oleh beberapa perusahaan misalnya, Altera, Lattice, dan Quicklogic. Diantara perusahaan-perusahaan tersebut, terdapat 2 perusahaan yang mendominasi produksi FPGA di seluruh dunia yaitu Xilinx dan Altera. Altera merupakan pemain kedua terkenal di dunia FPGA, terkenal dengan namanya. Sementara itu Lattice, Actel, dan Quicklogic merupakan perusahaan-perusahaan yang lebih kecil dan punya “pasar khusus”.
Awal mula dari adanya FPGA ini tidak lepas dari adanya alat elektronik, yaitu transistor. Transistor merupakan alat semikonduktor yang dipakai sebagai penguat, sebagai komponen pemutus dan penyambung(switching), dan stabilisasi tegangan. Pada umumnya, transistor ini berfungsi sebagai saklar arus listrik yang hendak masuk ke suatu rangkaian elektronik.
Perkembangan selanjutnya, adalah munculnya IC (Integrated Circuit) sekitar tahun 1950-an. Komponen elektronik ini lebih dikenal sebagai otak dari sebuah peralatan elektronika seperti televisi, handphone, computer, dsb. Kemudian berturut-turut muncul komponen lain, seperti DRAM, SRAM, microprocessor, ASIC hingga sampai pada FPGA.

Cara kerja 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, selain itu bagian ini juga akan menghubungkan antara CLB satu dengan CLB lainnya.



                                                      Gambar isi FPGA buatan xilinx

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


                                                                  Gambar Isi Logic Cell

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



                                            Gambar Logic Cell yang Terhubung satu sama lain

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.

                                            Gambar Logic Cell yang Terhubung satu sama lain

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


                               Gambar Logic Cell yang Terhubung satu sama lain denga cary chains

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.

Konfigurasi FPGA

Sebuah FPGA (Field Programmable Gate Array) dapat terbagi atas dua kondisi yaitu kondisi awal (configuration mode) dan kondisi pemakai (user mode). Ketika pertama kali FPGA dihidupkan, maka otomatis keadaan FPGA ini berada dalam kondisi awal. Hal ini disebabkan karena FPGA masih dalam keadaan awal, fresh dan belum terdapat suatu program apa pun di dalamnya. Untuk menggunakan FPGA tersebut maka perlu adanya proses download program oleh pemakainya (user). Proses mendownload program ke dalam FPGA bertujuan untuk mengirimkan berkas-berkas bilangan biner (0 dan 1) melalui beberapa pin khusus. Setelah proses download dilakukan dan FPGA kemudian telah siap digunakan, maka inilah yang sering disebut kondisi pemakai. Pada kondisi ini FPGA telah aktif dan program yang didownload ke dalamnya dapat digunakan. Inilah yang dinamakan konfigurasi atau pengaturan pada FPGA.
Bila pada kondisi pemakai, maka otomatis di dalam FPGA telah terdapat program. Program tersebut dibuat, diuji dan disimulasikan dahulu menggunakan PC (komputer). Setelah itu baru proses download program dilakukan. Pada umumnya terdapat 3 cara yang biasa digunakan untuk mendownload program ke dalam FPGA yaitu :
1.    Pemakai dapat mendownload langsung program ke dalam FPGA menggunakan kabel yang disambungkan ke PC. Program tersebut dibuat dan diolah menggunakan PC (komputer) dan ketika siap digunakan, baru didownload ke FPGA melalui kabel.
2.    Pemakai dapat menggunakan microkontroller pada board yang ada, dengan firmware yang cukup guna mengirimkan data ke dalam FPGA.
3.    Pemakai dapat menggunakan “boot-PROM” pada board yang ada, yang dihubungkan ke FPGA, dan mengatur FPGA tersebut supaya secara otomatis bekerja tanpa proses download dulu ke dalamnya (Perusahaan-perusahaan FPGA pada umumnya memiliki spesifikasi khusus untuk tambahan boot-PROMS).

Dari ketiga cara di atas, cara pertama adalah yang paling sering dan banyak digunakan. Selain itu, cara pertama cukup mudah dan efisien untuk dilakukan. Jadi, ketika pemakai telah mendownload program ke dalam FPGA maka tidak lagi diperlukan PC (komputer). FPGA akan bekerja sesua dengan program yang telah didownload ke dalamnya tanpa perlu lagi terhubung dengan PC (komputer).

Pin FPGA

Pada umumnya, bentuk sebuah FPGA tergantung pada vendor pembuatnya. Masing-masing vendor memiliki ciri khas untuk setiap FPGA ciptaannya. Misalkan saja vendor Xilinx dengan produknya yang terkenal yaitu Spartan dan Virtex. Atau vendor Altera dengan FPGA buatannya yakni Cyclone dan Stratix. Masing-masing dari jenis FPGA tersebut memiliki ciri khas dan keistimewaan tersendiri. Hal tersebut juga nampak pada jumlah pin/kaki yang pada masing-masing FPGA tersebut.
Secara umum, pin FPGA terbagi atas 2 jenis yaitu : pin asli (dedicated pins) dan pin untuk pengguna (user pins). Dari kedua jenis pin. Tersebut, hampir sekitar 20% s/d 30% pin pada FPGA termasuk jenis pin asli (dedicated pins). Jenis dedicated pins ini mengandung arti bahwa pin ini memang sengaja diciptakan vendor pembuat FPGA dengan tujuan tertentu. Selain itu, jenis pin ini dapat dikategorikan menjadi beberapa golongan :
•    Power pins, Pin untuk daya atau pin untuk ground
•    Configuration pins, Pin yang digunakan untuk download FPGA
•    Clock pins, Pin ini digunakan untuk menghasilkan sinyal detak (clock) yang nantinya akan mengendalikan keseluruhan proses yang terjadi dalam FPGA.
User Pins
Sebagian besar pin yang ada dalam FPGA adalah jenis user pins. Jenis pin ini diciptakan vendor dengan tujuan menciptakan keleluasaan atau kebebasan bagi para pengguna FPGA untuk menentukan sendiri mana pin yang hendak dipakai. Nama yang lazim atau sering digunakan untuk pin jenis ini adalah pin I/O, yang artinya pin output-input. Jenis pin ini nantinya bisa diatur oleh pengguna sesuai keingginan dan kepentingannya. Selain itu, jenis pin juga bisa dijadikan input dan output untuk rangkaian yang dibuat oleh pengguna FPGA tersebut. Nantinya, jenis pin ini akan terhubung dengan IO cell di dalam FPGA. Perlu diketahui, IO cell ini diberi daya tegangan oleh pin VCCIO (termasuk jenis power pins). Seperti yang telah dijelaskan, isi FPGA terdiri atas 3 bagian yaitu Configure Logic Blocks (CLB), I/O Blocks, dan Programmable Interconnect. Jenis User pins ini akan terhubung pada I/O Blocks.
IO Banks
Salah satu jenis dedicated pins pada FPGA adalah power pins. Pada umumnya, sebuah FPGA memiliki beberapa pin yang sering dinamakan VCCIO (termasuk jenis power pins) yang semuanya tersebut, terhubung ke sebuah sumber teganan yang sama. Namun, hal tersebut tidak berlaku untuk untuk FPGA generasi yang baru. FPGA jenis ini memiliki sebuah konsep yang dinamakan “user IO banks”. Dalam konsep “user IO banks” pengguna FPGA dapat membagi IO menjadi beberapa kelompok yang masing-masing kelompok memiliki tegangan VCCIO tersendiri. Hal ini menjadikan FPGA dapat berperan sebagai pengubah dan penyalur tegangan. Misalkan saja jika sebuah bagian pada FPGA membutuhkan tegangan 3,3V dan bagian yang lain membutuhkan 2,5V maka dengan konsep “user IO bank” ini, FPGA dapat melakukannya.
FPGA Power
Sebuah FPGA pada umumnya membutuhkan 2 tegangan untuk beroperasi yaitu : tegangan inti (core voltage) dan tegangan IO (IO voltage). Tiap tegangan ini masing-masing memiliki pin yang berbeda satu sama lain.
•    Tegangan inti internal (sering disebut internal core voltage atau VCCINT).
Tegangan ini digunakan sebagai sumber daya pada gerbang-gerbang logika dan flip-flop di dalam FPGA. Besarnya tegangan antara 5V (untuk jenis FPGA lama) s/d 3,3V, 2,5V, 1,8V, 1,5V (untuk jenis FPGA baru). Bahkan tegangannya bisa semakin rendah untuk produk FPGA terbaru. Dengan kata lain, tegangan jenis ini berbeda-beda tergantung FPGA yang digunakan.
•    Tegangan IO (sering disebut IO voltage atau VCCIO)
Tegangan ini digunakan sebagai sumber daya untuk blok-blok IO pada FPGA. Tegangan jenis ini haruslah cocok dan tepat dengan peralatan yang nantinya akan dihubungkan dengan FPGA. Misalkan FPGA akan dihubungkan dengan motor stepper. Dalam hal ini tegangan antara FPGA dengan motor stepper haruslah cocok dan tepat. Inilah yang sering disebut tegangan IO.

Sebenarnya, FPGA sendiri memperbolehkan tegangan yang sama untuk VCCINT dan VCCIO (misalkan, pin untuk VCCINT dan VCCIO dapat saling terhubung bersama). Namun, kemudian cenderung dipisahkan yaitu tegangan rendah untuk inti (core voltage) dan tegangan tinggi untuk IO (IO voltage).
Perlu diingat bahwa penamaan jenis tegangan untuk FPGA masing-masing vendor berbeda. Misalkan saja, tegangan internal sering dinamakan VCC untuk Xilinx dan VCCINT untuk Altera. Sedangkan tegangan IO sering dinamakan VCCO untuk Xilinx dan VCCIO untuk Altera.

CPLD

Arsitektur dasar dari pembuatan CPLD dapat dilihat pada gambar CPLD. Seperti yang terlihat, CPLD terdiri atas beberapa PLD(pada umumnya bertipe GAL) yang dibuat sebagai sebuah kesatuan chip. CPLD juga memiliki matriks pengubah yang berifat programmable yang berfungsi untuk menghubungkan PLD satu sama lain dan juga menghubungkannya dengan pin I/O. Selain itu, CPLD juga memiliki beberapa ciri khas tambahan, seperti:dukungan JTAG, antar muka(interface) untuk daya standar logika yang lain (1,8 V, 2,5 V, 5 V, dsb).
 

                  Gambar Arsitektur  CPLD

Salah satu contoh CPLD adalah XC9500 buatan Xilinx. CPLD jenis ini mengandung n PLD di mana n = 2,4,6,8,12,16.Ttiap-tiap PLD tersebut memiliki arsitektur mirip dengan GAL seri 36V18(mirip seperti arsitektur GAL 16V8, gambar tulisan yang lalu) memiliki 36 input dan 18 output, termasuk 16 input dan 8 output sehingga masing-masing terdapat 18 macrocell.
Beberapa perusahaan pembuat CPLD adalah Altera, Xilinx, Lattice, Atmel, Cypress, dsb. Contoh CPLD buatan dua perusahaan besar, Xilinx dan Altera ditunjukkan pada tabel berikut. Seperti yang terlihat, lebih dari 500 macrocell dan 10.000 gerbang dapat ditemukan pada masing-masing CPLD.

                                                      Tabel spesifikasi CPLD buatan Altera

                                                      Tabel spesifikasi CPLD buatan Xilinx

Perbedaan FPGA dengan CPLD

FPGA berbeda dengan CPLD dari segi arsitektur, teknologi penempatan ruang, dan segi biaya. Selain itu, FPGA lebih ditekankan untuk implementasi sirkuit besar yang kompleks serta memiliki tingkat kegunaan dan kerumitan tinggi.
Arsitektur dasar sebuah FPGA ditunjukkan pada gambar 1. Seperti terlihat, gambar 1 terdiri atas susunan CLB (Configure Logic Blocks) yang saling terhubung dengan susunan switch matrix.


                                                            Gambar 1 Arsitektur FPGA

Arsitektur internal dari CLB FPGA berbeda dengan arsitektur yang terdapat pada PLD. Apa bedanya? Pertama, sebagai ganti dari implementasi ekspresi SOP dengan gerbang AND yang diikuti gerbang OR (seperti terdapat pada SPLD), maka digunakanlah sebuah LUT (lookup table). Kedua, jumlah flip-flop di dalam FPGA lebih banyak daripada di dalam CPLD. Selain itu, FPGA memiliki bentuk sirkuit lebih canggih. Akibatnya, FPGA memungkinkan adanya fungsi sekuensial yang lebih baik dibanding CPLD. Tambahan lagi, FPGA memiliki dukungan JTAG dan antarmuka untuk berbagai tingkat logika yang berbeda. Selain itu, di dalam chip FPGA juga terdapat memori berupa SRAM, beberapa detak (PLL atau DLL), serta antarmuka untuk PCI. Beberapa chip FPGA juga menyertakan tambahan blok, seperti multipliers, DSP, dan microprocessors.
Perbedaan penting lain yang membedakan FPGA dengan CPLD adalah pada ruang penyimpanan interkoneksi. Jika CPLD bersifat non-volatile dan menggunkan antifuse, EEPROM, flash, dsb. maka FPGA menggunakan SRAM, dan itu bersifat volatile. Pendekatan ini mampu menyimpan ruang dan biaya yang lebih rendah dari sebuah chip biasa karena FPGA mampu memberikan interkoneksi bersifat programmable tapi masih membutuhkan ROM eksternal. Namun ada FPGA yang non volatile (dengan menggunakan antifuse) dan lebih menguntungkan ketika pemrograman ulang (reprogrammable) tidaklah dibutuhkan.

Comments :

2 komentar to “FPGA dan CPLD”
Shikamaru Nara mengatakan...
on 

makasih udah share
solder uap

Unknown mengatakan...
on 

mantab kali

Posting Komentar