Ada dua kriteria yang dapat Anda gunakan untuk mengevaluasi proyek digital yang membantu Anda memutuskan bagian mana yang paling cocok dengan kriteria Anda. Yang pertama adalah ukuran / kompleksitas desain - seberapa banyak logika yang terlibat. Yang kedua adalah persyaratan input dan output dalam hal jumlah pin. Kecepatan dapat diperhitungkan jika Anda dapat memperkirakan apa fungsi paling lambat Anda. Alat-alat vendor (Altera Quartus II, Xilinx ISE, dll.) Akan membantu Anda begitu Anda masuk ke ballpark yang tepat.
PAL / PLA / GAL: Ini dimaksudkan untuk mengganti sirkuit ukuran kecil hingga sedang yang biasanya Anda terapkan sebagai chip logika LSI (7400, 4000 series). Ini dapat menawarkan tata letak papan yang lebih baik karena pemetaan ulang I / O, dan banyak fungsi logika sederhana. Chip ini mengandung memori yang tidak mudah menguap (atau sekering yang dapat diprogram satu kali) dan tidak memerlukan waktu konfigurasi penyalaan. Mereka mungkin tidak mengandung elemen penyimpanan data.
CPLD: Ini adalah sepupu yang lebih besar dari PLA. Desain dapat berupa mesin negara kecil, atau bahkan inti mikroprosesor yang sangat sederhana. Sebagian besar chip CPLD yang saya lihat tidak memiliki SRAM on-chip, meskipun CPLD Cypress besar yang Anda tautkan tidak. CPLD lebih mungkin diprogram ulang dengan memori flash, dan mereka juga tidak memerlukan waktu konfigurasi saat power-up.
FPGA: Tidak seperti CPLD, blok logika didasarkan pada SRAM dan bukan memori flash, menghasilkan operasi logika yang lebih cepat. Kelemahan utama dengan FPGA adalah bahwa karena konfigurasi disimpan dalam SRAM, setiap kali perangkat dinyalakan, FPGA harus memuat pemrogramannya ke dalam SRAM ini. Bergantung pada ukuran desain Anda dan kecepatan penyimpanan Anda yang tidak mudah menguap, ini dapat menyebabkan penundaan nyata dari penyalaan menjadi berfungsi penuh. Beberapa FPGA memiliki flash on-chip untuk menyimpan data mereka, tetapi sebagian besar menggunakan chip memori yang terpisah. FPGA akan sering memiliki pengganda kabel, PLL, dan fungsi logika lainnya untuk meningkatkan kecepatan komputasi. Blok besar RAM on-chip juga tersedia. Anda juga akan dapat menggunakan spesifikasi I / O berkinerja tinggi seperti LVDS, PCI, dan PCI-Express.
FPGA dengan Mikroprosesor Hard Core: Saya tidak terbiasa dengan ini, tapi saya akan membayangkan bahwa desain Anda akan berpusat di sekitar pemrograman mikrokontroler, dan FPGA akan menambah mikrokontroler. Bagian-bagian yang Anda identifikasi membuatnya tampak seperti Anda akan memulai desain Anda dengan mikrokontroler dan FPGA, dan kemudian menggabungkan keduanya menjadi satu chip / paket.
Cara memutuskan mana yang tepat untuk Anda:
Cara terbaik adalah menyelesaikan kode Anda (Verilog / VHDL), dan kemudian menggunakan alat vendor untuk mencoba dan memasukkannya ke dalam bagian sekecil mungkin. Saya tahu alat Altera memungkinkan Anda mengubah target pemrograman dengan cukup mudah, sehingga Anda bisa terus memilih FPGA yang lebih kecil, dan kemudian CPLD yang lebih kecil hingga penggunaan desain Anda mendekati 75%. Jika Anda memerlukan kinerja, maka cobalah untuk memilih perangkat yang memiliki fitur (pengganda cepat) yang mengurangi persyaratan kecepatan logika. Sekali lagi, alat vendor akan membantu Anda mengidentifikasi jika Anda perlu meningkatkan atau jika Anda dapat menurunkan versi.
Faktor lain dari bagian mana yang digunakan adalah kemudahan penggunaan. Menggunakan logika PAL / PLA / GAL mungkin lebih banyak upaya daripada membangun fungsi menggunakan gerbang logika diskrit (74HC *, 4000, dll). CPLD biasanya hanya membutuhkan tegangan suplai tunggal, dan tidak memerlukan sirkuit tambahan. Mereka secara efektif berdiri sendiri. FPGA mulai menggunakan beberapa catu daya untuk I / O dan inti logika, standar I / O kompleks, memori program terpisah, PCB multi-layer (> 2), dan paket BGA.
Langkah-langkah untuk mempersempit persyaratan desain Anda akan mencakup:
Identifikasi semua input dan output untuk FPGA / CPLD Anda. Ini biasanya merupakan bagian yang mudah dari tahap desain. Dengan cara ini Anda tahu paket apa yang Anda lihat, dan seberapa dekat Anda bisa memotongnya ke margin itu.
Gambarlah diagram blok dari logika internal. Jika blok Anda terlihat sederhana (setiap blok akan memiliki gerbang logika dan register), maka Anda mungkin dapat menggunakan CPLD. Namun, jika blok Anda memiliki label seperti "Ethernet transciever", "antarmuka PCI-Express x16", "DDR2 Controller", atau "h264 Encode / Decode", maka Anda hampir pasti melihat FPGA dan menggunakan HDL.
- Lihat dan lihat apakah antarmuka Anda memiliki persyaratan I / O khusus, seperti voltase khusus, LVDS, DDR, atau SERDES kecepatan tinggi. Lebih mudah mendapatkan chip yang mendukungnya daripada mendapatkan chip penerjemah tambahan.
Contoh Aplikasi CPLD:
- PWM multi-saluran dengan antarmuka SPI
- I / O Expander
- Decoding Ruang Alamat CPU
- Jam (Penjagaan waktu)
- Tampilan Multiplexors
- DSP sederhana
- Beberapa program sederhana dapat dikonversi menjadi desain CPLD
Contoh Aplikasi FPGA Hobi:
- Desain System-on-Chip (SoC) kecil
- Video
- Jembatan protokol yang kompleks
- Pemrosesan sinyal
- Enkripsi / Dekripsi
- Emulasi sistem warisan
- Logic Analyzer / Pattern Generator
Untuk sebagian besar pekerjaan penghobi, Anda akan dibatasi untuk FPGA yang relatif kecil kecuali jika Anda ingin menyolder paket BGA. Saya akan memilih antara CPLD besar atau FPGA murah, dan persyaratan ukuran / kecepatan akan menentukan mana yang saya butuhkan.