Mengapa menerapkan mikrokontroler di FPGA?

16

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?

James C
sumber
Banyak dari ini menggunakan inti IP kalengan, namun menggulirnya sendiri bisa menjadi pengalaman belajar yang hebat.
Chris Stratton
1
@ ChrisStratton - Bisakah Anda tahu lebih banyak, atau memposting tautan tentang inti IP kalengan? Ya, saya yakin ini bisa menjadi pengalaman belajar yang luar biasa. Tetapi itulah salah satu alasan saya mengajukan pertanyaan ini. Saya ingin tahu apakah ini lebih dari sekadar pengalaman belajar.
James C
1
Kebanyakan orang melakukannya menggunakan sesuatu seperti Microblaze, Picobloze, Nios II, dll - ini pada dasarnya adalah desain prosesor "dalam kaleng" (perpustakaan) yang dapat Anda lisensikan dan masukkan ke dalam proyek Anda. Kontras akan berkembang sendiri di sumber HDL, mungkin dari diagram blok yang disajikan dalam kuliah CS101 khas Anda. Ada sejumlah kepraktisan yang menarik untuk diubah dalam mengubah gambar ceramah menjadi perangkat keras yang berfungsi.
Chris Stratton
1
Lihat Open Cores untuk banyak contoh core CPU open source.
RBerteig
3
Saya punya contoh. Kami memiliki mikrokontroler yang usang untuk produk lama. Kami tidak dapat menemukan mikrokontroler pengganti yang sesuai dengan campuran periferal yang tepat. Menggunakan FPGA dengan prosesor tertanam memungkinkan kami untuk menerapkan campuran periferal ideal kami pada FPGA.
kkrambo

Jawaban:

24

Manfaat:

  • Antarmuka sangat cepat antara mikrokontroler dan antarmuka kustom atau I / O logika on-chip.
  • antarmuka prosesor dan debug yang dapat disesuaikan
  • juga, seringkali lebih mudah mengontrol logika daripada menulis kode kontrol dengan, katakanlah, VHDL

Kerugian:

  • Mungkin lebih mahal FPGA diperlukan agar sesuai dengan mikrokontroler dan logika kustom, dibandingkan dengan hanya memiliki logika kustom pada FPGA
  • Mungkin lebih sulit untuk diimplementasikan, terutama dengan ingatan dan jika intinya kompleks, daripada mikrokontroler yang sudah jadi pada chip yang terpisah.
PkP
sumber
3
Manfaat tambahan: desain sederhana, satu chip lebih sedikit.
DoxyLover
4
Kelemahan tambahan: lisensi lebih banyak IP
Mikhail
Bagaimana dengan konsumsi daya sebagai kelemahan?
Craig McQueen
@CraigMcQueen Secara teori dimungkinkan untuk menghasilkan mikrokontroler dalam FPGA yang belum diproduksi sebagai perangkat keras yang berdiri sendiri. Dalam hal ini, tidak ada konsumsi daya untuk dibandingkan. Bagaimanapun, itu terlalu spesifik perangkat untuk menjadi sisi atas / bawah umum.
Tiang
Semua komentar yang sangat bagus. Dan well, saya akan mengatakan bahwa umumnya FPGA memiliki konsumsi daya yang besar, karena pemanfaatan logika biasanya sangat jauh dari 100% dalam macrocell. Ini sedikit diimbangi oleh fakta bahwa FPGA dapat menggunakan teknik minimisasi daya yang canggih. Proses pembuatan (teknologi) dapat sangat mirip antara FPGA dan prosesor pada era yang sama. Prosesor memiliki blok memori khusus, serta FPGA. Apakah ini sesuai dengan kebutuhan Anda, yah, tergantung pada seberapa beruntungnya Anda menemukan FPGA yang persis sesuai dengan kebutuhan Anda.
PkP
26

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.

Majenko
sumber
10
Kalimat pertama dari jawaban ini adalah alasan utama. Ini terutama dilakukan ketika Anda sudah memiliki FPGA dengan beberapa kapasitas cadangan di papan. (Setidaknya) satu chip lebih sedikit dan kompleksitas papan lebih sedikit. Anda tidak akan meletakkan FPGA di papan hanya untuk mengimplementasikan mikrokontroler dengannya, tetapi ketika Anda sudah memiliki FPGA, ini adalah cara yang bagus untuk mengurangi biaya suku cadang dan kompleksitas papan. Setidaknya itu sebabnya kami melakukannya.
reirab
13

Dalam ekstensi untuk jawaban Majenko dan PkP:

Tren ini menanamkan CPU ke dalam desain FPGA telah menyebabkan beberapa sistem heterogen seperti:

  • Xilinx 'Zynq-7000 keluarga
  • Altera's Arria / Cyclon / Stratix SoC FPGAs
  • MicroFemi's SmartFusion FPGAs

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: PSoC

Paebbels
sumber
10

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.

Cort Ammon - Pulihkan Monica
sumber
9

Ada beberapa alasan yang sah untuk instantiating mikroprosesor atau mikrokontroler dalam FPGA. Inilah tiga:

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

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

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

Steven Leibson
sumber
Sambutan hangat, Steven!
PkP
1
Jawaban yang bagus, tetapi siapa yang butuh mesin negara yang dapat menangani interupsi? Interupsi adalah kejahatan yang diperlukan untuk prosesor fetch-decode-execute karena menangani stimulus eksternal memerlukan penggunaan prosesor secara eksklusif untuk menjalankan ISR. Dalam FPGA, stimulus eksternal ditangani dalam blok logika terpisah sementara mesin negara juga terus berjalan; tidak perlu menyimpan dan memulihkan keadaan. Pada dasarnya, interupsi adalah solusi yang tidak sempurna untuk masalah yang tidak dimiliki oleh HDL.
Ben Voigt
Anda tentu saja benar untuk mesin negara yang diimplementasikan perangkat keras, Ben. Anda selalu dapat menyambungkan pin "interupsi" sebagai input mesin-negara lainnya. Namun, banyak mesin negara yang kompleks lebih mudah dipahami ketika diimplementasikan dengan prosesor yang menjalankan C, atau setidaknya lebih komprehensif untuk beberapa pengembang. Saat itulah Anda membutuhkan interupsi.
Steven Leibson
2

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

shuckc
sumber