Kapan sebaiknya FPGA digunakan dalam Robotika?

12

FPGA memiliki poin bagus seperti banyak poin IO tetapi sekali lagi Anda perlu memikirkan hal-hal pada level yang sangat rendah dengan sandal jepit dan perintis pada area di mana hal-hal belum matang - misalnya lihat pertanyaan ini di sini tentang alat pengembangan di FPGA - ini adalah pemahaman saya saat ini! Sekarang FPGA telah digunakan untuk membuat ketangkasan yang sangat baik di tangan robot seperti di sini . Sekarang beberapa orang memasarkan FPGA untuk prototyping cepat dan desain "berwawasan ke depan" seperti di sini , saya tidak sepenuhnya memahaminya: jika Anda tidak membutuhkan banyak poin IO untuk hal-hal seperti sensor, mengapa memilih FPGA untuk robot? Begitu

Kapan FPGA harus dipilih untuk proyek robotika?

hhh
sumber
Jika Anda membutuhkan paralelisme maka ada akal untuk menggunakan FPGA karena Anda bisa mencapainya. Anda juga dapat menyesuaikan "desain chip" Anda sendiri dan "dengan mudah" meningkatkan beberapa fungsionalitas tanpa chip perangkat keras baru. Saya melihat contoh pada beberapa objek deteksi dari kamera secara realtime. Yang pasti itu overhead untuk proyek yang lebih kecil.
Gossamer

Jawaban:

4

Saya tidak yakin apa dalam pertanyaan terkait tentang alat pengembangan membuat Anda berpikir bahwa mereka tidak matang. Memang benar bahwa kebanyakan dari mereka adalah milik dan bukan open source. Tapi saya pikir alatnya sudah cukup matang bahkan ketika pertanyaan itu diajukan tiga tahun lalu. Saat ini Xilinx , Altera , dan Lattice semuanya memiliki lingkungan pengembangan yang tersedia secara bebas yang berjalan pada Windows dan Linux dengan dukungan 32 dan 64-bit. Jika Anda bersikeras open source Icarus Verilog dapat melakukan sedikit. Tapi saya pribadi akan tetap menggunakan alat khusus vendor.

FPGA lebih dari sekadar sekumpulan sandal jepit yang dapat dikonfigurasi. Pertimbangkan Altera NIOS II . Prosesor soft-core 32-bit yang mampu menjalankan Linux. Padu-padu komunikasi dan periferal lain dari OpenCores atau dari Xilinx , Altera , atau Lattice dan Anda telah membangun mikrokontroler khusus dengan semua yang Anda butuhkan dan tidak ada yang tidak. Anda bahkan dapat menulis kode C untuk prosesor NIOS II dan menjalankan fungsi-fungsi tertentu secara langsung di perangkat keras FPGA jika Anda memerlukan kecepatan. Apakah level tinggi itu cukup untukmu?

FPGA's memiliki biaya investasi awal yang tinggi. Tetapi lebih murah dan lebih mudah untuk menambahkan fungsionalitas nanti dalam proses desain. Itulah yang dimaksud dengan desain "melihat ke depan". Pertimbangkan sebuah proyek di mana Anda ingin menambahkan beberapa motor tambahan ke robot Anda, tetapi Anda kehabisan generator PWM pada mikrokontroler Anda. Apa yang kamu kerjakan? Tambahkan mikrokontroler lain? Beli chip PWM terpisah dan sambungkan ke antarmuka komunikasi? Bagaimana jika semua antarmuka komunikasi Anda digunakan? Dengan FPGA, ini direduksi hampir seluruhnya menjadi operasi salin dan rekat. Jauh lebih mudah, lebih murah, dan lebih cepat untuk skala desain untuk memasukkan fungsionalitas baru tanpa membeli perangkat keras tambahan dengan FPGA.

Tapi mungkin alasan terbesar untuk menggunakan FPGA adalah kecepatan. Saya tidak berbicara tentang kecepatan clock murni. Tetapi ketika Anda membutuhkan banyak hal terjadi secara bersamaan. Seperti yang disebutkan Gossamer, paralelisme adalah keunggulan FPGA. Desain filter terutama mendapat manfaat dari arsitektur paralel semacam ini. Jika Anda perlu memfilter dan merespons sensor yang berubah dengan cepat, maka Anda memerlukan FPGA. Mereka juga cukup bagus dalam pemrosesan video karena ini juga mendapat manfaat dari pemrosesan paralel.

Ambil contoh robot tangan berkecepatan tinggi ini . Perlu memproses video dari kamera visi mesin berkecepatan tinggi (1000 frame per detik) serta sensor sentuhan dan merespons dengan memanipulasi banyak aktuator hanya dalam beberapa milidetik. Jenis proyek ini adalah ketika Anda harus memilih FPGA.

pemrosesan visi paralel yang masif

tertanam.kyle
sumber
Bisakah Anda mengklarifikasi ini "FPGA's memiliki biaya investasi awal yang tinggi." Terkait di sini : harga terlihat sangat rendah. Apakah maksud Anda biaya pelatihan tinggi atau angka lain?
hhh
1
@ hhh saya tidak berbicara tentang biaya chip mentah. Saya berbicara tentang biaya pengembangan. Pertimbangkan kit pengembangan mikrokontroler seperti di PandaBoard . Berisi ARM Cortext A9 seharga $ 181. Papan pengembangan FPGA yang dapat menampung A9 seperti Cyclone V adalah $ 1.099.
embedded.kyle
@ hhh Tentu saja ada kit pengembangan FPGA yang lebih murah. Tetapi saya mencoba menemukan beberapa metrik untuk membandingkan dua hal yang sangat berbeda. Jadi kit pengembangan yang memiliki (sangat) kira-kira kekuatan pemrosesan yang sama sekitar 10x lebih banyak.
embedded.kyle
@ hhh ARM termurah di Mouser adalah $ 0,80 . FPGA termurah adalah $ 2,80 .
embedded.kyle
2
@hhh Tangan itu adalah penelitian terdepan dengan kemungkinan puluhan atau bahkan ratusan ribu dolar peralatan khusus yang menjalankannya. Pemrosesan video secara umum cenderung berada di ujung yang lebih tinggi. Lihat di sini dan di sini . Dan mungkin juga tidak ada yang bisa memproses video 1kfps. Lebih mirip 30-60fps. Papan yang Anda daftarkan tidak memiliki input video apa pun. Meskipun itu pasti bisa mengendalikan aktuator dan memproses sensor sentuhan. Pasti bisa meniru tangan yang Anda tautkan.
embedded.kyle
2

Saya pikir mungkin ada kesalahpahaman seputar apa sebenarnya FPGA itu dan kapan digunakan dalam desain. Jadi izinkan saya mencoba menjelaskan bagian itu terlebih dahulu.

FPGA dan ketika seseorang mungkin ingin memilikinya ...

Dengan risiko penyederhanaan, sebuah FPGA sedikit lebih dari sebuah prosesor yang kebetulan 'dapat dikonfigurasi ulang'.

Mengapa seseorang menginginkan mikroprosesor yang 'dapat dikonfigurasi ulang'? Nah, karena terlalu mahal untuk membuat prosesor silikon sehingga mampu melakukannya untuk satu, dua, atau bahkan dua ratus chip. Anda harus menjalankan ribuan chip untuk membuatnya layak secara ekonomi.

Karena tidak ada desain yang bebas bug pada putaran pertama, rute silikon secara efektif akan mengikat perusahaan ke setidaknya dua jika tidak lebih banyak uji coba, semuanya dengan biaya pembuatan yang besar.

Yang pada dasarnya berarti bahwa sangat sedikit perusahaan komersial yang akan tertarik untuk merancang dan membawa fabrikasi apa pun selain chip dengan daya tarik komersial yang cukup luas.

Jadi, jika Anda datang dengan desain yang brilian yang membenarkan mikroprosesor khusus, maka Anda dapat mencoba menghidupkan ide Anda dengan anggaran yang ketat dengan menerapkannya dalam FPGA, di mana chip sebenarnya hanyalah kumpulan gerbang, dan sebuah 'program' (biasanya VHDL atau Verilog) mengatur gerbang-gerbang itu menjadi mikroprosesor yang sebenarnya.

Tapi itu cukup jauh menyusuri jalan (desain mikroprosesor!) Yang sama sekali berbeda ...

Yang membuat saya menyarankan itu

... FPGA tidak penting untuk robotika - setidaknya sejak awal

Yang Anda butuhkan untuk robotika adalah prosesor . FPGA hanyalah jenis prosesor khusus (dapat dikonfigurasi ulang).

Anda bertanya apakah Anda 'harus'? Nah itu tergantung pada pengetahuan Anda serta di mana minat Anda yang sebenarnya - desain mikroprosesor pertama atau robotika pertama?

Jika mikroprosesor adalah hasrat Anda, maka tentu saja! Dan robotika adalah area aplikasi yang bagus untuk mikroprosesor khusus - mungkin korteks visi dengan banyak jalur keputusan paralel yang ditangani langsung dalam perangkat keras, atau perkalian tensor khusus dalam perangkat keras - pada dasarnya segala sesuatu yang tidak bisa ditangani oleh prosesor generik.

Tetapi jika Anda akan mendesain mikroprosesor dalam FPGA, well, maka tentu saja Anda harus memiliki semua pengetahuan tingkat rendah yang Anda sebutkan, dan banyak lagi - karena pada dasarnya Anda akan merancang prosesor Anda sendiri. Yang tidak ada hubungannya dengan robotika, meskipun aplikasi target Anda mungkin robotika.

Kebanyakan desainer mungkin dapat menemukan prosesor yang ada yang akan melakukan sebagian besar dari apa yang mereka butuhkan.

Jadi saya pikir Anda mungkin tidak perlu FPGA.

Roadmap pemula: dari kemampuan komersial hingga (mungkin) FPGA ...

Tujuan pertama menurut saya adalah mencoba untuk mendapatkan semua konsep kreatif Anda dibangun menjadi robot yang berfungsi (tantangan yang cukup intensif itu sendiri).

Jika Anda menemukan bahwa Anda memiliki hambatan pemrosesan yang spesifik dan signifikan dalam desain Anda, maka tujuan berikutnya adalah mengoptimalkan pemilihan / desain prosesor Anda, chip yang masih tersedia secara komersial. Mungkin lebih besar, lebih cepat (tukar tambah dengan penarikan daya, pembuangan panas). Mungkin lebih kecil, chip khusus menangani tugas-tugas khusus dan berinteraksi dengan otak utama (tukar tambah dengan komplikasi algoritma / logika).

Hanya jika ada kemampuan yang Anda tidak akan bisa mendapatkan chip komersial untuk ditangani, maka Anda mungkin mempertimbangkan untuk menerapkan prosesor khusus di dalam FPGA karena pada saat itu akan ada keuntungan yang sangat jelas yang Anda harapkan untuk diperoleh dengan 'menggulung sendiri ', dan Anda dapat fokus hanya pada mengimplementasikan kemampuan itu, dengan antarmuka yang tepat untuk sisa desain Anda.

Kalau tidak, Anda kemungkinan akan dilacak dari tujuan utama Anda (yang akan saya asumsikan adalah benar-benar membuat robot!)

Intinya: FPGA adalah gangguan dari memulai dalam robotika --- sampai Anda cukup jauh di jalan robotika - dan telah mendapatkan beberapa potongan yang kuat dalam desain elektronik / mikroprosesor digital di suatu tempat di sepanjang jalan.

Assad Ebrahim
sumber
Saya dapat memikirkan banyak contoh di berbagai bidang seperti pemrosesan video di mana pemrosesan paralel dengan FPGA sangat penting untuk kecepatan dan hasil yang lebih akurat. Terlihat kegagalan ketika orang mencoba menerapkan deteksi iris bising secara real-time dengan cpu tunggal. Tidak. FPGA memiliki area spesifiknya sendiri di mana ia bergoyang seperti tangan robot dengan ketangkasan tinggi atau pemrosesan video yang presisi / cepat. Saya tidak bisa melakukan dan menyandingkan FPGA dan mikroprosesor seperti itu. Mereka adalah binatang yang sangat berbeda dengan sisi baik / buruk mereka sendiri. Salah? Adakah yang tahu apakah bidang yang baik untuk FPGA ini terdaftar di suatu tempat?
hhh
Anda tentu benar bahwa ada banyak bidang di mana FPGA merupakan keunggulan - saya belum mengecualikannya dalam jawaban saya. Masalahnya adalah di mana Anda berada pada kurva pengalaman, dan seberapa jelas Anda tentang keuntungan spesifik yang ingin Anda peroleh dengan menggunakan FPGA. Jika Anda tidak tahu jawabannya, maka Anda mungkin tidak membutuhkannya! (Ini menggemakan jawaban Jakob di bawah ini.)
Assad Ebrahim
1

Setelah bekerja dengan FPGA dan Mikrokontroler dalam proyek robotika, saya benar-benar akan mengatakan sekarang: apa pun yang orang yang melaksanakan tugas memiliki pengalaman paling banyak. Jika Anda mengenal keduanya dengan baik, Anda tidak akan bertanya pada diri sendiri. Jika Anda tidak tahu benar, maka ini adalah poin untuk pergi:

  • Apakah diperlukan pengaturan waktu yang rumit pada port I / O? Kontrol motor 3-fase dapat memiliki persyaratan seperti itu. FPGA memiliki sedikit keuntungan di sini.
  • Bisakah Anda memparalelkan algoritma latensi super rendah Anda? Di sini FPGA tidak benar-benar bersaing dengan mikrokontroler, tetapi lebih dengan PC tertanam. Sebagian besar hal yang akan saya lakukan untuk PC tertanam, tetapi Anda mungkin memiliki keuntungan dengan FPGA untuk beberapa aplikasi tertentu. Pemrosesan stereo yang padat misalnya sering dilakukan dalam FPGA. Banyak kamera menggunakan FPGA untuk memproses aliran data.

Apa yang juga sering digunakan adalah solusi hybrid. Baik dengan dua chip, jadi satu mikrokontroler untuk kode program, dan FPGA untuk IO atau tugas lainnya. Ada juga sejumlah FPGA yang sebenarnya memiliki mikrokontroler tertanam.

Saya tidak akan terlalu keras pada FPGA seperti beberapa posting lain, tetapi juga umumnya akan berpendapat, bahwa kecuali Anda tahu VHDL Anda dengan baik, Anda akan lebih baik menggunakan mikrokontroler, atau PC yang masih tertanam dengan lebih baik.

Jakob
sumber
Bisakah Anda menunjukkan beberapa proyek contoh yang akan membantu untuk memahami hal-hal seperti apa yang baik untuk dilakukan dengan FPGA dan yang dengan mikrokontroler? Misalkan misalnya beberapa robot garis-berikut: ia bekerja cukup baik dengan mikrokontroler tunggal pada permukaan bersih rata sampai garis lebih buram yang membutuhkan penajaman gambar / konvolusi / dll. Jika garis di hutan (atau permukaan berisik lainnya), itu akan menjadi tantangan yang jauh lebih sulit (saya ragu apakah mungkin dilakukan dengan FPGA). Sudahkah Anda melakukan proyek robot dunia nyata di mana Anda menggunakan fpga misalnya untuk pemrosesan gambar / video secara realtime? +1 untuk VHDL.
hhh