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.
sumber
Jawaban:
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 ??!? !! ??!? !!?)
sumber
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 :)
sumber
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.
sumber
Begitu banyak pertanyaan; mari kita coba menjawabnya secara berurutan:
sumber
Seorang pria bernama Anthony Burch telah mengumpulkan serangkaian video tentang FPGA . Salah satu yang gratis mencakup informasi tentang cara memilih FPGA.
sumber
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.
sumber
Lihatlah XMOS
Mereka dapat digunakan untuk menggantikan FPGA di banyak aplikasi.
sumber
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.
sumber