jump to navigation

Apakah CPLD dan FPGA itu? December 17, 2008

Posted by haryoktav in Interest.
trackback

You can find the English version here http://www.xess.com/appnotes/fpga_tut.php (available, checked on June 21, 2009)

Here is in bahasa Indonesia.

Awalnya, (sekitar tahun 1960-an) terdapat logic-diskrit atau gerbang-gerbang dasar yang kita kenal seperti and, or, xor, dan not (kita mengenal dengan IC TTL seperti 74LS00, 74LS04 dsb). Sebuah sistem dibangun dari banyak IC TTL dengan pengkabelan yang mirip dengan spaghetti atau mie, saking ruwetnya. Dan sangat sulit untuk memodifikasi sistem tersebut bila sudah jadi. Lebih parah lagi, setelah seminggu atau dua minggu akan sangat sulit untuk mengingat kembali apa kegunaan tiap IC yang telah kita pasang!

Membuat sebuah sistem membutuhkan waktu yang lama karena tiap perubahan disain membutuhkan jalur pengkabelan baru, artinya membuat PCB baru. Pembuat IC memecahkan masalah ini dengan menempatkan array yang saling tak-terhubung (unconnected array) yang tersusun atas gate AND-OR dalam sebuah chip yang selanjutnya disebut sebuah programmable logic device (PLD). Sebuah PLD berisi fuse (sekering) berbentuk array yang dapat diputus agar terbuka atau dibiarkan agar tertutup untuk menghubungkan berbagai input ke masing-masing gate AND. Anda dapat memprogram sebuah PLD dengan persamaan boolean SOP (sum-of-product ) jadi PLD tersebut akan melakukan fungsi logika yang anda perlukan dalam sistem anda. Karena pengkabelan terjadi didalam chip PLD, maka akan mengurangi perubahan yang banyak pada PCB yang menggunakan PLD.

Simple PLDs hanya dapat meng-handle sampai 10-20 persamaan logika, jadi anda tidak dapat memasukkan disain logika yang sangat besar kedalam sebuah chip. Anda harus dapat memikirkan bagaimana untuk memecah disain besar anda menjadi bagian-bagian yang dapat dimuat kedalam beberapa PLD. Ini juga butuh waktu dan berarti anda harus menghubungkan beberapa PLD dengan kabel (lagi??). Kabel-kabel tadi jadi membuat pusing karena terkadang anda harus mengubah disain yang tidak hanya diselesaikan dengan memprogram ulang PLDnya dan akhirnya anda harus membuat lagi PCB yang baru. Pembuat IC kembali datang dengan membuat chip yang lebih besar yang dapat diprogram dan selanjutnya disebut complex programmable logic devices (CPLDs) dan field-programmable gate arrays (FPGAs). Dengan chip tersebut, anda pada dasarnya dapat membangun sistem yang lengkap dalam sebuah chip.

Sebuah CPLD terdiri dari sekelompok blok PLD dimana input dan outputnya dihubungkan oleh sebuah matriks interkoneksi global. Sehingga sebuah CPLD mempunyai dua level kemampuan diprogram: tiap blok PLD dapat diprogram, dan kemudian interkoneksi antar PLD dapat diprogram.

Sebuah FPGA menggunakan pendekatan yang berbeda. FPGA mempunyai sekumpulan CLB (configurable logic block) tersusun dalam array dengan diselang-selingi switch yang dapat mengatur-ulang interkoneksi antar logic block. Tiap logic block dapat diprogram untuk melakukan sebuah fungsi logika (seperti AND, OR, XOR, dsb.) dan kemudian switch juga dapat diprogram untuk menghubungkan blok-blok sehingga fungsi logika yang lengkap dapat dilaksanakan.

Pabrik CPLD dan FPGA menggunakan bermacam metode untuk membuat hubungan antar logic block. Ada yang membuat dengan metode fuses atau anti-fuses yaitu diprogram dengan melewatkan arus yang besar. Tipe CPLD dan FPGA seperti ini adalah one-time programmable (OTP) karena anda tidak dapat mengubah hubungan didalamnya setelah fusenya terbakar.

Pabrik lain membuat koneksi antar logic block menggunakan pass-transistors yang akan terbuka atau tertutup dengan menyimpan muatan pada elektroda gate-nya menggunakan sebuah pulsa tegangan-tinggi. Programmable device seperti ini menyerupai EPROM atau EEPROM: anda dapat menghapusnya dan kemudian meletakkan chip tersebut pada soket pemrogram khusus dan memprogramnya kembali (dilepas, diprogram, ditancapkan kembali). Hal tersebut baik-baik saja kecuali bila anda mempunyai chip CPLD atau FPGA yang sudah tersolder rapat pada PCB.

Akhirnya, beberapa pabrik menggunakan static RAM atau Flash bit untuk mengontrol pass-transistors untuk tiap interkoneksi. Dengan mengisi tiap bit dengan logika 1 atau logika 0, anda dapat mengontrol apakah switch tertutup atau terbuka dan, untuk itu, apakah dua elemen logic terhubung atau tidak. CPLD dan FPGA yang dibuat dengan menggunakan metode switch RAM/Flash dapat diprogrma ulang tanpa melepasnya dari PCB. Chip tersebut sering disebut dengan istilah in-circuit reconfigurable atau in-circuit programmable.

Tanpa memperhatikan metode interkoneksi yang digunakan, anda dapat melihat bahwa membayangkan switch mana yang dibuka dan yang ditutup untuk membuat rangkaian logika menjadi pekerjaan yang sangat berat. Karenanya pabrik pembuat chip menyediakan software development yang melakukan deskripsi dari disain logika sebagai inputnya dan kemudian akan menghasilkan file biner yang akan mengkonfigurasi switch-swtich didalam chip CPLD atau FPGA sehingga menjadi seperti disain yang dibuat.

Implementasi sebuah disain logika dengan software development FPGA atau CPLD biasanya terdiri dari beberapa langkah (ditunjukkan pada gambar dibawah):

  1. Anda menuliskan gambaran dari rangkaian logika anda menggunakan hardware description language (HDL) seperti VHDL atau Verilog. Anda juga dapat menggambar disain anda menggunakan schematic editor.
  2. Anda menggunakan program logic synthesizer untuk mengubah HDL atau schematic menjadi sebuah netlist. Netlist ini hanyalah sebuah deskripsi dari bermacam-macam gerbang logika dalam disain anda dan bagaimana mereka dihubungkan.
  3. Anda menggunakan implementation tools untuk memetakan (mapping) gerbang logika dan interkoneksi kedalam FPGA. CLB didalam FPGA selanjutnya disusun kedalam look-up tables yang melakukan operasi logika. CLB dan LUT terjalin dengan berbagai routing resources. Alat pemetaan menggumpulkan netlis gerbang anda kedalam kelompok yang muat dalam LUT dan kemudian place & route tool menentukan kumpulan gate ke CLB tertentu sambil membuka atau menutup switch pada matriks interkoneksi untuk menghubungkan gerbang-gerbang tadi.
  4. Setelah fase implementation selesai, sebuah program memisahkan keadaan dari switch pada matriks interkoneksi dan menghasilkan sebuah bitstream dimana terdapat satu dan nol yang berhubungan dengan terbuka atau tertutupnya swicth. (Ini adalah penjelasan yang disederhanakan).
  5. The bitstream kemudian di-download kedalam IC FPGA (biasanya tergabung dengan sistem yang lebih besar seperti development board). Switch elektronik dalam FPGA terbuka atau tertutup sesuai dengan respon dari bit biner dalam bitstream. Setelah proses download selesai, IC FPGA akan melakukan operasi seperti pada disain HDL atau schematic anda. Anda dapat memasukkan sinyal input kepada pin I/O dari FPGA untuk mengecek operasi disain anda.

Begitulah semuanya terjadi, hanya itu. Software seperti Xilinx Foundation atau WebPACK menyediakan HDL dan schematic editor, logic synthesizer, fitter, dan bitstream generator software. XSTOOLs dari XESS menyediakan provide utiliti untuk mendownload bitstream kedalam IC CPLD atau FPGA pada developmen board.

Advertisements

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: