Saat ini saya sedang "menyelidiki" FPGA, apa yang dapat mereka lakukan, bagaimana mereka melakukannya, dll.
Di lebih dari satu tempat ( misalnya di sini ) saya telah melihat proyek yang mengimplementasikan mikrokontroler sederhana dengan FPGA.
Jadi pertanyaan saya:
Saya ingin tahu, apa tujuan melakukan implementasi seperti itu? Mengapa menggunakan mikrokontroler diimplementasikan dalam FPGA daripada memiliki mikro on board? Apa manfaatnya? Dan mungkin juga apa kerugiannya?
microcontroller
fpga
design
James C
sumber
sumber
Jawaban:
Manfaat:
Kerugian:
sumber
Jika proyek Anda akan menggunakan FPGA untuk pekerjaan kasar, dan memiliki kapasitas cadangan, mengapa akan Anda pergi ke biaya chip tambahan ketika Anda hanya bisa menerapkannya dalam FPGA?
Untuk banyak lingkungan kontrol prosedural, jauh lebih mudah untuk mengimplementasikan pengaturan yang diperlukan dalam bahasa seperti C daripada mencoba melakukannya di VHDL atau Verilog. Dengan menambahkan mikrokontroler ke dalam FPGA Anda mendapatkan yang terbaik dari kedua dunia - kekuatan VHDL / Verilog dll untuk logika dan sistem penghubung, dan kesederhanaan bahasa prosedural untuk kontrol inti dan sistem manajemen.
sumber
Dalam ekstensi untuk jawaban Majenko dan PkP:
Tren ini menanamkan CPU ke dalam desain FPGA telah menyebabkan beberapa sistem heterogen seperti:
Ada juga chip Intel Atom + Altera FPGA di pasaran: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html
Sebagian besar pengontrol mikro gratis untuk FPGA mengalami dukungan rantai alat yang buruk. CPU ARM Tertanam dilengkapi dengan dukungan penelusuran / jejak, kompiler (rantai alat gcc) dan dukungan linux penuh. Berikut ini adalah survei yang dipresentasikan di FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482
Sunting 1:
Ada juga kelas perangkat PSoC (Programmable System on Chip) dari Cypress. Perangkat ini termasuk pengontrol mikro (M8C, 8051, ARM Cortex M0 atau Cortex M3) dan pengontrol atau perangkat I / O terintegrasi SoC klasik (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) dan dapat diprogram bagian. Bagian ini tidak sebagus yang diprogram seperti FPGA klasik, tetapi dapat digunakan untuk mengimplementasikan pengontrol I / O tambahan atau akselerator perangkat keras yang dibangun. PSoC memungkinkan Anda untuk menggunakan komponen analog dalam desain Anda.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
Ikhtisar PSoC:
sumber
Jika Anda hanya membutuhkan mikrokontroler, dan tidak memiliki FPGA, akan tidak biasa menggunakan FPGA dengan firmware mikrokontroler. Namun, tidak semua proyek tumbuh ke arah itu. Banyak tugas memiliki kebutuhan yang jelas untuk FPGA, tetapi akhirnya menemukan tugas yang benar-benar tidak cocok untuk solusi VHDL. Terkadang masalah hanya ditangani oleh CPU tujuan umum. Atau, kadang-kadang sebaliknya: beberapa tugas tidak cocok untuk CPU tujuan umum - mereka membutuhkan paralelisme.
Pada saat itu, Anda punya pilihan. Anda dapat menambahkan chip tambahan ke perangkat Anda, atau Anda dapat menyadari bahwa Anda memiliki banyak gerbang cadangan di FPGA yang tidak Anda manfaatkan. Lisensi IP kecil, dan Anda dapat memiliki CPU tujuan umum dalam waktu singkat!
Detail menarik lainnya adalah Anda dapat menyesuaikan beberapa firmware mikrokontroler. Saya tahu proyek-proyek yang menyematkan Power PC, tetapi menghapus semua gerbang yang diperlukan untuk dukungan floating point, dan sebagian besar prediksi cabang. Ini membuatnya cukup kecil untuk masuk berdampingan dengan firmware berbasis VHDL.
sumber
Ada beberapa alasan yang sah untuk instantiating mikroprosesor atau mikrokontroler dalam FPGA. Inilah tiga:
Anda hanya ingin belajar tentang pengoperasian prosesor. FPGA memberi Anda cara tak terbatas untuk menyelidiki apa yang terjadi di dalam prosesor saat mengeksekusi kode. Ini hanya untuk belajar.
Anda menerapkan sistem besar yang membutuhkan kecepatan tingkat perangkat keras dari FPGA (lebih cepat daripada perangkat lunak yang mengeksekusi pada mikroprosesor) tetapi desain Anda membutuhkan mesin keadaan rumit, yang lebih mudah diimplementasikan menggunakan perangkat lunak yang berjalan pada prosesor sederhana seperti Xilinx PicoBlaze daripada di FSM perangkat keras. Perhatikan bahwa PicoBlaze dapat berjalan secepat 240MHz dalam teknologi proses FPGA terbaru dan bahwa prosesor PicoBlaze menjalankan instruksi setiap dua siklus clock, sehingga Anda mendapatkan mesin negara yang cepat dan konsisten yang mudah diprogram dalam perangkat lunak.
Memperluas pada (2), Anda memerlukan mesin negara yang dapat menangani interupsi. Prosesor sangat baik untuk ini karena mereka sudah tahu bagaimana cara menyimpan dan memulihkan keadaan dengan aman sebelum dan sesudah melayani interupsi.
Berikut adalah satu peringatan: Jika Anda menginginkan prosesor cepat dengan set instruksi standar dan ekosistem pengembangan besar, maka Anda menginginkan prosesor cepat, hard-core seperti dua ARM Cortex-A9s dalam Xilinx Zynq SoC. Kain FPGA di Zynq SoC masih memungkinkan Anda membuat lebih banyak core prosesor dalam logika yang dapat diprogram tetapi ARM Cortex-A9s dapat menjalankan sistem operasi standar seperti Linux dan IDE standar seperti Android.
Di antara ARM Cortex-A9 dan PicoBlaze, ada banyak prosesor lunak yang dapat Anda implementasikan dengan logika yang dapat diprogram yang tersedia dari banyak sumber. Beberapa orang suka memutar prosesor mereka sendiri dan itu adalah kegiatan pendidikan yang hebat. Namun, mikroprosesor membutuhkan alat pengembangan perangkat lunak dan membuat / men-debug alat-alat itu membutuhkan perintah yang lebih besar daripada menciptakan prosesor itu sendiri. Anda harus selalu menukar kemungkinan manfaat mikroprosesor khusus dengan waktu dan upaya yang diperlukan untuk membuat / men-debug inti prosesor dan alat-alatnya.
Pengungkapan penuh: Saya bekerja untuk Xilinx tapi saya cukup yakin saya tidak menyatakan bahwa FPGA selalu merupakan solusi. Jika mikrokontroler 50 sen dapat melakukan pekerjaan itu, Anda lebih baik menggunakannya. FPGA dan Zynq SoCs adalah untuk proyek yang membutuhkan pengangkatan berat di luar kemampuan mikrokontroler.
sumber
Kadang-kadang Anda mungkin menggunakan FPGA karena Anda memiliki perangkat lunak yang berjalan pada prosesor fisik lama dan tidak tersedia yang ingin Anda hidupkan kembali. Meskipun tidak kompatibel dengan pin (meskipun mount bergaya DIP telah terlihat) ini memungkinkan Anda untuk menjadi akurat secara siklus. Emulasi perangkat lunak murni pada mikroprosesor komoditas tidak mungkin demikian. Misalnya apple2fpga
sumber