Apa kegunaan khas untuk prosesor lunak seperti MicroBlaze?

8

Saya tahu bahwa kombinasi FPGA-DSP biasanya digunakan untuk elektronik / ultrasound / MRI / etc. Apakah mungkin untuk soft-prosesor untuk sepenuhnya menggantikan DSP bahkan pada FPGA kelas bawah seperti Spartan 3/6?

Ditambahkan: Apa yang akan menjadi alasan untuk memiliki beberapa prosesor softcore dalam satu FPGA?

SunnyBoyNY
sumber
Tergantung pada seberapa intensif DSP aplikasi Anda, pada dasarnya.
Fizz
Winmodem yang dibenci muncul dalam pikiran, meskipun di sana Anda memiliki CPU tujuan umum melakukan DSPing.
Fizz
Rupanya Anda dapat melakukan radio yang ditentukan perangkat lunak pada Virtex 5 dan juga pada Altera Stratix .
Fizz
Dan ternyata beberapa telah mencobanya pada Spartan 6 LX45. Aplikasi apa yang Anda pikirkan?
Fizz
Masalah utama yang saya lihat di utas itu adalah perangkat lunak Vivado (berbasis PC) yang berfungsi untuk menghasilkan filter, dll. Untuk Virtex tidak membuat Anda menargetkan Spartan. Saya tidak yakin apakah itu hanya keputusan pemasaran [segmentasi] atau perangkat keras Spartan terlalu rendah.
Fizz

Jawaban:

11

Silakan membaca skim, atau lewati sampai akhir. Saya sadar bahwa saya memang melanjutkan sedikit!


Secara umum Anda tidak akan menggunakan prosesor lunak untuk mengganti barang DSP. Perangkat keras khusus umumnya dapat menangani volume data yang lebih tinggi lebih cepat karena Anda akan mendesainnya untuk melakukan tugas tertentu dengan sangat baik, daripada menjadi CPU tujuan umum.

Di mana prosesor lunak masuk ke elemen mereka adalah kontrol dan koordinasi.

Jika Anda mendesain sistem yang diperlukan untuk memproses data dalam jumlah besar, misalkan akuisisi gambar frame rate tinggi, tidak mungkin menggunakan prosesor inti-lunak untuk menangani semua data, hanya akan ada terlalu banyak overhead di CPU. Apa yang akan Anda lakukan adalah merancang firmware khusus untuk melakukan tugas akuisisi khusus yang diperlukan (misalnya memfilter data, menyimpan ke memori, dll.).

Namun Anda masih memerlukan beberapa cara untuk menginstruksikan kapan melakukan sesuatu - kapan Anda ingin menangkap, memiliki perangkat yang diperintahkan untuk menurunkan data, dll. Hal-hal ini tidak sangat mudah dilakukan dalam perangkat keras khusus, tidak jika ada urutan kejadian dengan input pengguna, pada dasarnya tugas-tugas yang tidak melakukan hal yang sama berulang-ulang. Dalam hal ini Anda akan menggunakan prosesor soft-core karena jauh lebih mudah untuk menulis kode prosedural untuk beberapa tugas.

Contoh (nyata) lain, saya telah bekerja pada sistem akuisisi ultrasound yang mengalirkan data melalui PCIe. Tugas yang dikomunikasikan dari pengguna dan berbagai bagian dari sistem perlu dikonfigurasi. Koordinasi sistem tidak memerlukan volume data yang besar, tetapi sebaliknya membutuhkan fleksibilitas, sehingga sangat cocok untuk CPU soft-core yang diprogram dalam hal ini C. Untuk melakukan hal yang sama dalam perangkat keras fisik akan membutuhkan sumber daya dalam jumlah besar sebagian besar akan jarang digunakan sehingga tidak melihat manfaat dibandingkan dengan CPU.

Perlu dicatat bahwa beberapa tugas dapat bervariasi tergantung pada input pengguna, tetapi masih lebih baik di perangkat keras khusus. Sebenarnya salah satu bagian dari kode (pemrograman pengendali DMA untuk menyimpan data pada pemicu) pada awalnya dilakukan di CPU dalam sekitar 15 baris kode, tetapi karena itu perlu dilakukan saat pemicu terjadi, menggunakan CPU yang mungkin sibuk dengan hal-hal lain tidak ideal. Tugasnya malah diprogram ke dalam modul Verilog, tetapi dalam prosesnya menjadi mesin negara 500 baris besar dengan sekitar 15 negara dan beban tumpukan logika pendukung - tidak benar-benar. Tetapi meskipun ia menggunakan sumber daya yang jauh lebih banyak, ini adalah waktu yang kritis, demikian juga suatu keharusan.

Demikian pula saya perlu generasi yang akurat memicu siklus jam, jadi modul untuk melakukan tugas itu adalah bagian dari sistem daripada melakukannya di CPU. Baik inti ini dan yang di atas adalah contoh bagaimana Anda dapat menggunakan CPU untuk melakukan beberapa tugas, tetapi untuk yang penting Anda dapat mengembangkan perangkat keras untuk melengkapi CPU - dengan cara yang sama seperti Anda memiliki timer, dll dalam mikrokontroler.


Jadi untuk meringkas:

FPGA adalah alat fleksibel yang hebat, tetapi sebagian besar desain memerlukan kombinasi CPU soft-core, modul yang dapat dikonfigurasi (mis. Timer), dan perangkat keras tugas tunggal khusus.

CPU bagus untuk interaksi pengguna, mengendalikan urutan peristiwa, mengkonfigurasi pengontrol. Mereka seperti koordinator, otak.

Beberapa desain mungkin perlu melakukan beberapa tugas yang cukup berulang yang dapat dikonfigurasi agar sesuai dengan input yang berbeda - modul pengatur waktu, tampilan karakter, pelepasan tombol, dll. Ini dapat dengan mudah dilakukan dengan CPU, tetapi jika Anda ingin melakukannya beberapa di antaranya dengan akurat di setelah menjadi lebih rumit - mereka berbagi sumber daya CPU yang sama. Jadi yang dapat Anda lakukan adalah memindahkannya ke perangkat keras khusus yang terhubung erat dengan CPU - beri CPU kesempatan untuk melakukan tugas lain. Ini membantu CPU melakukan tugasnya dan berinteraksi dengan lingkungannya, seperti indra.

Dedicated DSP, transfer data (DMA) - pada dasarnya tugas apapun yang akan melakukan hal yang sama lagi dan lagi pada kecepatan tinggi - benar-benar bisa mendapatkan keuntungan dari logika berdedikasi dalam hal kecepatan, dan juga mungkin kekuasaan. Ini seperti otot-otot perangkat, yang melakukan semua pengangkatan berat.

Anda harus memaafkan ocehan sedikit, tapi saya suka bidang EE ini. Semoga hal di atas dapat dimengerti dan memberi Anda wawasan tambahan tentang dunia FPGA yang indah.

Tom Carpenter
sumber
@ tcrosley, saya mengerti maksud Anda, tetapi jika Anda ingin menambahkan dua angka 128bit pada prosesor 32bit, dibutuhkan beberapa siklus. Penekanannya adalah pada kekuatan . Tetapi pada kenyataannya itu sepenuhnya tergantung pada apa yang Anda lakukan secara keseluruhan. Jika semua yang ingin Anda lakukan adalah penambahan, memiliki seluruh CPU akan sia-sia dalam FPGA - hanya instantiate penambah. Jadi saya pikir saya akan menghapus sedikit itu.
Tom Carpenter
1

Seperti yang disebutkan Tom, MicroBlaze bukan masalah mengganti DSP, tetapi mengganti mikrokontroler tradisional yang mungkin ada di papan tulis.

Ini karena inti prosesor lunak MicroBlaze bukan pengganti yang baik untuk DSP karena tidak memiliki fitur DSP khusus seperti instruksi MAC (multiply dan akumulasi), buffer bundar, pengalamatan bit terbalik dan pengalamatan logika jenuh.

Jadi soft core DSP yang terpisah, seperti yang dijelaskan dalam makalah ini untuk Xilinx Virtex-4, akan menjadi pilihan yang lebih baik.

Banyak desain DSP akan mendapat manfaat dari memiliki kedua soft core, karena banyak jika tidak sebagian besar desain digital yang menyertakan FPGA juga memerlukan mikrokontroler umum. Selama ada cukup sumber daya yang tersedia di FPGA (lihat di bawah), prosesor lunak seperti MicroBlaze tidak hanya menghilangkan bagian dalam BOM (dan tentu saja biaya yang terkait), tetapi juga membebaskan pin pada FPGA karena ada tidak perlu interkoneksi antara FPGA dan mikrokontroler. Ruang yang dibutuhkan untuk jejak antara dua bagian juga dibebaskan.

MicroBlaze dapat berjalan pada 210 MHz pada Virtex-5. Versi dengan MMU dapat menjalankan Linux. MicroBlaze minimum membutuhkan sekitar 600 LUT, dan dapat tumbuh hingga 4000 jika FPU, MMU, cache, dan barang lainnya ditambahkan. Prosesor lunak DSP yang disebutkan di atas menggunakan 1700 LUT.

Karena Virtext-5 FPGA dapat memiliki 30.000 hingga lebih dari 200.000 LUT, bahkan termasuk kedua core lunak ini hanya mewakili sebagian kecil dari chip. Memasukkan keduanya memungkinkan untuk operasi konvensional dan DSP berlangsung secara paralel, jika diinginkan, dengan mengorbankan beberapa kompleksitas tambahan untuk sinkronisasi antara keduanya.

IP untuk MicroBlaze gratis selama Anda menggunakannya pada Xilinx FPGA dan telah melisensikan Edisi Tertanam ISE Design Suite (atau yang setara).

tcrosley
sumber