Bagaimana cara memilih FPGA?

17

Saya perlu melakukan pemrosesan sinyal digital pada 8 garis analog pada 10 kHz. Ini adalah tugas yang cukup berat, dan saya berpikir bahwa FPGA mungkin merupakan pendekatan yang tepat. Saat ini saya sedang melihat dev kit dari Xilinx, dan karena saya tidak punya pengalaman dengan FPGA, saya merasa sangat sulit untuk mengetahui bagaimana memilih chip yang tepat. Saya membayangkan menggunakan kit dev dan mengembangkannya menggunakan pin I / O untuk terhubung ke chip A / D 8-channel dan chip D / A 8-channel.

Apa perbedaan antara menggunakan Spartan, Virtex, Altera, dll? Saya bahkan tidak tahu bagaimana memperkirakan berapa banyak gerbang yang akan saya butuhkan. Apakah ada aturan praktis untuk itu? Bagaimana cara memastikan kecepatan jam akan cukup (sebagai fungsi dari jumlah tambah dan gandakan). Apakah sulit untuk melakukan pemrosesan floating-point pada FPGA, haruskah saya tetap berpegang pada matematika titik tetap? Apa cara terbaik untuk memulai?

Saya memerlukan solusi yang dapat diprogram menggunakan Linux. Xilinx menyediakan ini, tapi saya tidak yakin apa batasannya.

fpganewbie
sumber
5
Ini akan banyak membantu untuk mengetahui algoritma seperti apa yang perlu Anda terapkan. Kemungkinannya adalah Anda tidak memerlukan FPGA sama sekali, yang akan menghemat banyak waktu pengembangan ;-)
geschema
Saya setuju dengan geschema; Anda mungkin tidak membutuhkan FPGA. Mungkin DSP adalah solusi yang lebih baik. Bagaimanapun, mereka lebih mudah untuk memulai jika Anda hanya memiliki pengalaman di UC. FPGA sangat berbeda!
stevenvh

Jawaban:

13

Saya tidak akan menggunakan FPGA.

Anda menyebutkan Anda tidak memiliki pengalaman dengan FPGA, namun Anda tertarik untuk melakukan pemrosesan sinyal digital pada FPGA ... manipulasi numerik + pemrosesan sinyal cukup sulit untuk dilakukan dengan benar di komputer / DSP / mikroprosesor, di mana alat pemrogramannya konvensional pemrograman. Tampaknya bagi saya bahwa menggunakan proyek pemrosesan sinyal digital untuk proyek FPGA pertama kemungkinan merupakan resep untuk frustrasi.

Jika Anda ingin mempelajari FPGA, coba lakukan sesuatu yang lebih cocok untuk alat pengembangan, seperti mesin negara atau pemrosesan paket komunikasi.

Untuk proyek DSP seperti yang telah Anda jelaskan, saya akan merekomendasikan DSP atau Cypress PSOC atau Microconverter Perangkat Analog (= mikrokontroler dengan built-in ADC + DAC) sebagai gantinya.

(pengungkapan penuh, yang menyediakan beberapa konteks untuk saran saya: Saya tidak menggunakan FPGA sendiri. Saya telah menggunakan logika yang dapat diprogram = PLD pada kesempatan yang jarang. Perwakilan saya sering menggunakan FPGA, dan saya telah melihat cukup kode VHDL / Verilog melihat-lihat bukunya. Bahu untuk mengetahui bahwa itu sangat cocok untuk manipulasi bit. Dia adalah seorang insinyur berpengalaman dengan banyak pengalaman dengan FPGA; dalam percakapan baru-baru ini dengan dia di mana dia melakukan beberapa matematika sederhana pada bilangan bulat dengan lebar bit yang berbeda, saya mengatakan kepadanya bahwa dia perlu untuk melakukan perpanjangan tanda pada nomor lebar bit yang lebih pendek untuk menguranginya dengan benar, dan ia mendapatkan tampilan ini di wajahnya, seperti "oh man, saya tidak ingin harus melakukan ekstensi tanda ..." Menambah dan mengurangi tidak terlalu sulit dalam FPGA. Selain penambahan dan pengurangan, Anda benar-benar perlu mengetahui alat dan pustaka.Dan pemrosesan floating-point ??!? !! ??!? !!?)

Jason S
sumber
2
MyHDL mencoba memperbaiki beberapa masalah tersebut.
Shawn J. Goff
Saya tidak berpikir FPGA lebih sulit digunakan daripada micros, mereka hanya memiliki serangkaian peringatan yang berbeda.
Connor Wolf
10

Semuanya cukup bagus. Anda tidak perlu terlalu banyak keluar dari FPGA untuk melakukan sesuatu yang sederhana seperti itu, jadi FPGA pemula mana pun (seperti garis Spartan-3) sudah cukup.

Hanya kata peringatan, pemrograman FPGA adalah LOOOOTTTTTT berbeda dari sesuatu seperti C ++, C, perl ... Saya sarankan memulai dengan Verilog karena mungkin lebih mudah untuk transisi ke ... VHDL sangat COBOL seperti tetapi Verilog lebih mirip dengan bahasa pemrograman modern.

Tentang kecepatan jam: jangan khawatir tentang hal itu. Keuntungan menggunakan FPGA adalah paralel secara masif, jadi sementara jam 50MHz mungkin tampak sangat lambat menurut standar saat ini, perlu diingat bahwa mereka dapat melakukan ratusan hal sekaligus, sedangkan CPU "normal" di 3GHz harus mengantri hal-hal satu per satu. Inilah keuntungan menggunakan FPGA: paralelisme. Jadi untuk sesuatu yang khusus, Anda tidak perlu terlalu khawatir tentang kecepatan.

Tetapi seperti komentar lainnya, ini adalah paradigma yang sama sekali berbeda. Kurva belajarnya curam, tetapi begitu Anda memahami bahasa itu, semuanya masuk akal (pastikan Anda memahami unsur-unsur penyusunnya).

Selamat FPGA :)

Vincent P
sumber
2
VHDL sebenarnya berdasarkan pada Ada! Leon
Leon Heller
2
Selain itu, dalam memilih Verilog atau VHDL, pertimbangkan bahasa yang dianggap sebagai investasi dalam pemasaran Anda di masa depan. Di AS, Verilog lebih populer dalam pengembangan IC / chip daripada VHDL sehingga mengetahui Verilog (dan versi yang disempurnakan, System Verilog) kemungkinan akan menjadi investasi jangka panjang yang lebih baik. Tampaknya juga semua perusahaan EDA besar berinvestasi dalam Verilog dan Verilog sistem, sedangkan VHDL tidak mendapatkan banyak perhatian. (saksikan simulasi campuran VCS dengan vhdl vs VCS perbedaan kinerja simulator Verilog). (que the flaming) Ya, Anda dapat mempelajari keduanya, tetapi mengapa tidak memprioritaskan.
Ross Rogers
Anda dapat menulisnya dalam bahasa apa pun. Saya pikir alat Xilinx dapat mengambil Verilog dan VHDL, bahkan di proyek yang sama. FWIW, saya di AS dan saya belum pernah menggunakan Verilog.
ajs410
1
"VHDL sangat COBOL seperti". Bukan sejuta mil!
stevenvh
9

Beberapa waktu yang lalu saya mengumpulkan grafik perbandingan papan entry level FPGA , dari dua vendor FPGA Xilinx dan Altera. Mereka adalah dua pemain utama dalam FPGA, semacam PIC vs AVR atau Sony vs Nintendo. Mereka memberikan yang terbaik. Ada vendor lain yang menyediakan fitur spesifik, tetapi Anda biasanya berakhir membayar lebih banyak, atau kehilangan fitur / kekuatan pemrosesan.

Saya tahu ini tidak secara langsung menjawab pertanyaan spesifik Anda, tetapi harus bermanfaat bagi siapa saja yang ingin memulai dengan papan FPGA.

davr
sumber
7

Begitu banyak pertanyaan; mari kita coba menjawabnya secara berurutan:

  1. Persyaratan sumber daya untuk pemrosesan sinyal: Untuk menentukan perangkat keras apa yang perlu Anda gunakan / bangun, Anda perlu gagasan tentang jumlah pemrosesan yang ingin Anda lakukan pada sinyal yang dimaksud. 8 saluran @ 10 kHz bukan tingkat data yang sangat tinggi, jadi kecuali persyaratan Anda sangat istimewa, sebagian besar FPGA dan DSP harus dapat memproses data.
  2. Bagaimana cara saya memilih perangkat yang tepat? Berdasarkan persyaratan pemrosesan sinyal Anda, Anda harus dapat mengetahui perangkat mana yang diperlukan untuk aplikasi Anda. Poin utama adalah kebutuhan memori, diperlukan pengganda keras, pertimbangan IO khusus, dll. Sebagian besar vendor FPGA memiliki alat (berbasis web) yang memungkinkan Anda mencari portofolio berdasarkan faktor-faktor tersebut.
  3. Bagaimana saya memulai dengan DSP? DSP hanyalah komputer biasa yang biasanya memiliki instruksi SIMD [Instruksi Tunggal, Beberapa Data] yang relevan untuk pemrosesan sinyal. Untuk memulai, Anda hanya perlu memahami keterbatasan perangkat keras "tertanam" dan kompiler C sehingga Anda dapat menguji kode Anda pada PC biasa.
  4. Bagaimana saya memulai dengan FPGA? FPGA diprogram dalam Bahasa Deskripsi Perangkat Keras. Ini sangat berbeda dari bahasa berurutan seperti C atau Java. Untuk mengembangkan untuk FPGA Anda perlu memahami sifat bersamaan dari perangkat keras nyata. Alat yang Anda butuhkan untuk memulai adalah simulator HDL seperti Simili (gratis untuk desain kecil) atau Modelsim. Ini memungkinkan Anda mensimulasikan kode Anda di PC. Setelah itu Anda memerlukan alat sintesis khusus vendor yang mengkompilasi kode HDL Anda menjadi file bit yang digunakan untuk mengkonfigurasi FPGA. Jika Anda mendapatkan starter kit dari Altera, Actel atau Xilinx semua alat yang Anda butuhkan adalah bagian dari kit.
  5. Dukungan Linux: Alat FPGA dari sebagian besar vendor berjalan di Linux, tetapi di bidang DSP Anda biasanya dipaksa untuk menggunakan kompilasi Windows saja kecuali DSP Anda didukung oleh GCC (Blackfin dari Analog dan beberapa model dari Texas Instruments).
trondd
sumber
+1 untuk "8 saluran @ 10 kHz bukan tingkat data yang sangat tinggi" - Saya tidak percaya belum ada yang mengatakan itu.
Kevin Vermeer
Tidak jika dia melakukan 8-channel FFT ...
ajs410
DSP seringkali merupakan unit pemrosesan paralel berulir tunggal yang masing-masing mampu menjalankan instruksi yang berbeda (tidak seperti SIMD di mana semua unit berbagi instruksi yang sama).
Ben Voigt
4

Seorang pria bernama Anthony Burch telah mengumpulkan serangkaian video tentang FPGA . Salah satu yang gratis mencakup informasi tentang cara memilih FPGA.

Shawn J. Goff
sumber
4

Hampir semua vendor FPGA akan melakukannya. Ini seperti Intel vs AMD ... ada perbedaan antara Xilinx dan Altera, tetapi mereka sangat mirip dalam hal fungsionalitas. Beli kit pengembangan apa pun yang ada dalam kisaran harga Anda - Saya pribadi menyukai Spartan 3's dari Xilinx - dan jalankan dengan itu.

Mengenai jumlah gerbang, kit dev biasanya akan sangat besar, semoga jauh lebih besar dari yang Anda butuhkan. Saat Anda bersiap untuk pindah ke PCB Anda sendiri, alat sintesis akan memperkirakan berapa banyak gerbang yang dibutuhkan desain Anda. Anda dapat menggunakan ini untuk memilih FPGA yang lebih kecil, meskipun Anda mungkin menemukan bahwa kendala paket (QFP vs BGA) juga memainkan peran penting.

Dengan teknik desain yang tepat, kecepatan jam tidak akan menjadi masalah. Bahkan, Anda biasanya dapat menggunakan kristal berkecepatan relatif rendah, seperti 12 MHz, dan FPGA dapat mensintesis jam yang jauh lebih cepat (atau banyak jam lebih cepat!) Jika Anda benar-benar khawatir tentang penambahan berlipat ganda, saya tahu seri Virtex4 memiliki irisan DSP khusus yang dapat mempercepat perhitungan tersebut. Tetapi FPGA paralel secara masif, jadi Anda tidak perlu terlalu banyak MHz untuk melakukan banyak pekerjaan.

Saya pasti akan tetap dengan titik tetap jika Anda bisa. Dimungkinkan untuk melakukan floating point, dan Xilinx bahkan memiliki Core Generator yang akan memberi Anda inti floating point, tetapi fixed point akan menjadi jalan, jauh lebih cepat, dan akan membutuhkan gerbang yang jauh lebih sedikit. Keuntungan lain adalah Anda dapat melakukan beberapa titik tetap yang aneh; Anda dapat menggunakan bit sebanyak yang Anda inginkan, itu tidak harus menjadi hitungan bit kekuatan-of-2, dan / atau Anda dapat menggunakan titik tetap yang lebih besar untuk tahap menengah.

Cara terbaik untuk memulai dengan FPGA? Temukan kelas atau seminar atau sesuatu. Jika Anda tidak terbiasa dengan teknologi, alat pengembangan akan sangat membingungkan, karena ada banyak hal yang bisa salah. Alat untuk MCU jauh lebih memaafkan dan membutuhkan keintiman kurang dengan arsitektur yang mendasarinya.

Oh, dan Anda harus membaca lembar data FPGA, dari depan ke belakang.

ajs410
sumber
0

Lihatlah XMOS

Mereka dapat digunakan untuk menggantikan FPGA di banyak aplikasi.

Leon Heller
sumber
0

Jika Anda ingin memperkirakan jumlah gerbang Anda belum perlu membeli perangkat keras - pembuat FPGA utama memiliki perangkat lunak gratis, dan banyak yang akan memiliki catatan tentang melakukan dsp. Anda dapat merancang dan mensimulasikan hal-hal tanpa perangkat keras, dan perangkat lunak akan memberi tahu Anda sumber daya apa yang digunakan. Namun untuk pemrosesan sinyal, dsp biasanya akan menjadi langkah pertama, dan FPGA hanya jika Anda kehabisan daya pemrosesan.

mikeselectricstuff
sumber