Apa IC logika diprogram dengan kompleksitas yang berbeda digunakan untuk?

10

Logika yang dapat diprogram dapat diimplementasikan dalam widget Anda dalam banyak spektrum yang berbeda, mulai dari membakar beberapa gerbang atau menggunakan MUX hingga FPGA terbaru dengan mikrokontroler bawaan dan perangkat IO, belum lagi ARM's PrimeCell GPIO atau contoh lainnya yang lebih spesifik . Untuk aplikasi apa saja berbagai tingkat kompleksitas perangkat logika yang dapat diprogram digunakan? Meskipun pengelompokan tampaknya menyatu dekat dengan ekstrem definisi mereka , saya pikir ini adalah daftar yang dapat diterima:

  1. PAL / PLA / GAL : Array Logika yang Dapat Diprogram; tampaknya terdaftar sebagai'Embedded - PLD'di Digikey, mencakup asynchronous 10/8 I / O (ATF16V8C) hingga 50MHz, 192 macrocell, (CY7C341B), dan sebagian besar dapat diprogram ulang.
  2. CPLD : Perangkat Logika Kompleks Dapat Diprogram; Digikey mencantumkannya, tersedia dalam 7.5ns 10 I / O (ATF750C) hingga 233 MHz, 428 I / O "CPLDs pada FPGADensities" (CY39100V484B).
  3. FPGA : Field-Programmable Gate Array; tersedia dalam 58 I / O (XC2064) hingga 1023 I / O BGAbeast(EP1S80F1508C7N).
  4. FPGA dengan MCU keras : ini adalah ketika MCU secara fisik diletakkan di FPGA IC, tidak ditiru.

Kutipan Wikipedia:

Perbedaan antara FPGA dan CPLD adalah bahwa FPGA secara internal didasarkan pada Tabel Pencarian (LUT) sedangkan CPLD membentuk fungsi logika dengan laut-of-gerbang (misalnya jumlah produk). CPLD dimaksudkan untuk desain yang lebih sederhana, sedangkan FPGA dimaksudkan untuk desain yang lebih kompleks. Secara umum, CPLD adalah pilihan yang baik untuk aplikasi logika kombinasional yang luas sementara FPGA lebih cocok untuk mesin negara besar (yaitu mikroprosesor).

Ini tidak menjelaskan perbedaan antara menggunakan 233 MHz, 400 I / O CPLD dan FPGA yang sebanding ; atau antara 192 macrocell PLD dan CPLD yang sebanding . Saya tidak bisa memahami pedoman yang dapat diandalkan untuk mempersempit pilihan desain. Perhatikan bahwa saat ini saya tidak memiliki aplikasi spesifik dalam pikiran, tetapi sering bertanya-tanya, "apa yang akan saya gunakan untuk melakukan itu?"

Saya telah menerima saran luar biasa tentang persyaratan khusus, tetapi masih berpikir pertanyaan ini dapat mengambil manfaat dari beberapa contoh yang menunjukkan preferensi lebih dari satu keluarga PLD ketika yang lain tampaknya sama atau lebih cocok.

tyblu
sumber
XC2064 adalah bagian kuno. Saya tidak tahu apakah CY7C341B dan CY39100V484B masih dibuat. Anda harus mempertimbangkan itu saat membuat perbandingan / keputusan.
Brian Carlton
2
FYI, dengan salah satu bagian ini, ada perbedaan besar antara berbagai penawaran yang dimasukkan pabrikan ke dalam literatur mereka, dan bermacam-macam jumlah gerbang / paket / kecepatan dan kombinasi suhu yang jauh lebih kecil yang sebenarnya dapat Anda harapkan untuk Anda dapatkan di jumlah kecil dalam waktu kurang dari setengah tahun leadtime. Jadi ketika merancang dengan mereka, periksa ketersediaan nyata terlebih dahulu. Bahkan jika saya tahu pembelian ingin mendapatkannya dari distribusi, saya lebih memilih untuk memilih perangkat di mana saya tahu pemasok yang lebih berorientasi prototipe sebenarnya memiliki mereka di tangan untuk bermalam kepada saya jika diperlukan.
Chris Stratton
Saran bagus, @ChrisStratton. Ini biasanya adalah hal pertama yang saya periksa pada sebagian besar bagian, tetapi masih bagus untuk mengetahui bahwa ini terutama bermasalah dengan PLD.
tyblu

Jawaban:

7

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:

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

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

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

W5VO
sumber
sedikit memperluas jawaban Anda, saya akan cenderung untuk mengelompokkan PAL / PLA / GAL ke dalam keranjang yang sama dengan PLD / CPLD untuk alasan memulai instan tanpa waktu konfigurasi, dan bahwa vendor mulai mendorong CPLD di depan PAL / PLA / Perangkat GAL. Misalnya saya bekerja dengan beberapa perangkat kisi dan IC keluarga CPLD mereka secara signifikan lebih murah dan menawarkan lebih banyak gerbang daripada sepupu PAL / GAL / PLA. Biaya yang terakhir adalah penghalang untuk apa yang mereka tawarkan jika dibandingkan dengan yang pertama.
smashtastic
Garisnya jelas agak kabur. Saya tidak berpikir PAL / PLA / GAL memiliki elemen penyimpanan, atau CLPD memiliki SRAM sampai saya mencari bagian-bagian yang terdaftar di tyblu. Sepertinya PAL / PLA / GAL lebih seperti pita bebek dalam desain daripada menjadi bagian inti.
W5VO
3

Daftar "rule-of-thumb" yang bagus akan muncul seperti ini:

  • PAL / PLA / GAL: Digunakan sebagai pengganti gerbang logika IC terpisah pada PCB
  • CPLD: Digunakan di mana tugas yang kompleks, nonDSP, dan mungkin penting waktu diperlukan (memuat kode boot ke FPGA dari memori, LUT generator sinewave untuk DAC, dll)
  • FPGA: Digunakan saat kemampuan kritis, multiplikasi, atau DSP diperlukan (Filter FIR, FFT, dll.)
  • FPGA dengan hard MCU: Digunakan ketika fungsionalitas FPGA diperlukan dan periferal pada FPGA harus diakses (sensor temp) atau untuk memungkinkan tugas yang kurang sensitif waktu ditambahkan dalam C daripada VHDL untuk kesederhanaan (fungsionalitas port serial / UART, Rumah tangga PCB, dll)
Joel B
sumber
Dengan CPLD murah di bawah uang dalam jumlah kecil, PAL / PLA / GAL cukup banyak mati kecuali untuk aplikasi warisan.
Chris Stratton
Saya tidak akan membantah itu. Saya hanya bisa membayangkan bahwa mungkin di mana daya (baterai) rendah / ukuran kecil adalah kendala, mereka mungkin masih digunakan karena mereka mungkin lebih menguntungkan daripada CPDL, tapi saya masih akan menggunakan CPLD terkecil / hemat daya jika itu milik saya. rancangan.
Joel B
2

Jawaban sederhana bisa jadi ada dua cara:

1. Anda pertama-tama merancang sistem Anda pada tingkat abstraksi tinggi (katakanlah HDL atau skema). Kemudian Anda mencoba memasukkannya ke PAL / CPLD / FPGA dan memilih yang memenuhi kebutuhan Anda (jumlah gerbang / elemen-logika, kinerja, dll.) Dan kemudian memilih yang termurah tergantung pada apa yang Anda tetapkan termurah (biaya pengembangan vs (biaya produksi, dll).

2. Tetapi biasanya sebelum Anda memulai pengkodean HDL atau pengembangan skematis apa pun, Anda sudah dapat memperkirakan kerumitan sistem (berapa banyak gerbang yang Anda butuhkan, jika sepertinya Anda membutuhkan MCU 8-bit atau MCU 32-bit, atau tidak ada mikrokontroler di semua). Berdasarkan itu Anda dapat memilih perangkat yang dapat diprogram juga. Ini akan menjadi kurang tepat tetapi akan memungkinkan untuk merancang perangkat keras analog dan digital yang tidak dapat diprogram secara paralel dengan perangkat keras dan perangkat lunak yang dapat diprogram (jika ada).

Halst
sumber
2

FPGA dengan hard core digunakan karena kurang luas dari mikrokontroler terpisah dan lebih cepat dari mikroprosesor soft-core. Namun harga biasanya lebih buruk daripada FPGA dan mikrokontroler yang terpisah. Dalam perangkat lunak umum dan oleh karena itu mikrokontroler lebih baik untuk (relatif) kasus yang lambat dan jarang seperti konfigurasi parameter dan penanganan kesalahan; Logika lebih baik untuk proses yang berkelanjutan. Misalnya dalam pemrosesan paket, menulis ke memori harus dalam logika; menangani batas waktu untuk hidup harus tetap dalam perangkat lunak.

Dalam ruang FPGA ada bagian murah / daya rendah dan mahal / bagian cepat. Umumnya mikrokontroler hanya dalam yang mahal; ini membuat biaya perdagangan vs MCU diskrit lebih buruk untuk solusi on-FPGA.

Tidak ada yang menggunakan PAL dalam desain baru, setidaknya selama 10+ tahun. CPLD telah mengambil alih ceruk itu.

Dalam 5 terakhir? tahun CPLD seperti FPGA di dalam, tetapi dengan memori untuk menyimpan konfigurasi on-chip. Karena FPGA sekarang 100-an MHz, kecepatan jauh lebih sedikit alasan untuk menempatkan logika dalam CPLD daripada 10-15 tahun yang lalu. Namun FPGA masih memiliki fitur lain seperti pengganda, serializers dan banyak memori yang dapat memaksa desain menjadi satu bahkan jika tidak memiliki banyak logika.

Brian Carlton
sumber
1
Salah satu alasan untuk mempertahankan CPLD adalah bahwa CPLD berbiaya rendah saat ini masih dibuat dalam teknologi tegangan pasokan tunggal, sementara sebagian besar FPGA saat ini membutuhkan beberapa tegangan pasokan. Jadi jika Anda tidak perlu melakukan banyak hal lebih murah untuk meletakkan cpld di papan - tetapi jika Anda berbicara tentang CPLD besar, FPGA low-end mungkin lebih murah dan memberi Anda lebih banyak ruang untuk peningkatan di masa depan, terutama jika Anda sudah memiliki suplai tegangan inti yang tersedia untuk beberapa alasan lain.
Chris Stratton
Terima kasih telah menjawab, @BrianCarlton, dan komentarnya, @ChrisStratton. Contoh yang diberikan dan pendapat saat ini adalah info hebat.
tyblu