Bagaimana cara memutuskan platform apa yang terbaik untuk mengimplementasikan pemrosesan audio waktu nyata?

15

Ketika mengembangkan produk, saya melakukan semua desain algoritma saya di Matlab. Mereka biasanya cukup mendasar, satu atau dua filter IIR atau FIR, beberapa FFT, dll. Ketika tiba saatnya untuk memindahkannya ke lingkungan yang tertanam, saya selalu kesulitan menentukan platform untuk menjalankannya. Saya biasanya memikirkan platform (luas) ini:

  • Inti DSP
  • FPGA
  • Mikrokontroler
  • LENGAN

Faktor apa yang harus saya pertimbangkan ketika mencoba membuat keputusan ini?

Kellenjb
sumber
2
Mengapa Anda membedakan "ARM" dari "Mikrokontroler"? Mencoba mengategorikan bagian DSP + ARM TI? Apakah Anda mencoba memisahkan barang kecil berdaya rendah dari mikroprosesor yang lebih besar? (Dalam kasus terakhir ini, Anda mungkin harus memasukkan MIPS dan core 32-bit khusus vendor)
Kevin Vermeer
Ketika saya memikirkan Microcontroller saya memikirkan PIC, Atmel, dll tapi saya kira ARM bisa jatuh di bawah itu juga. Saya tidak mencoba mengatakan itu semua opsi, hanya menanyakan faktor apa yang harus dipertimbangkan.
Kellenjb
1
Apa yang Anda tentukan "terbaik"? Apakah Anda dibatasi oleh kekuatan? Biaya? Kemudahan pemrograman? Fleksibilitas?
Oliver Charlesworth
@Oli Itulah keseluruhan pertanyaan, faktor apa yang harus dipertimbangkan ketika mencoba untuk memutuskan.
Kellenjb
3
@Kellen: Saat ini, pertanyaan ini agak seperti "Bagaimana menentukan mobil apa yang terbaik?", Tanpa kendala lebih lanjut.
Oliver Charlesworth

Jawaban:

13

Jika Anda tetap menggunakan "algoritma standar" seperti IIR, FIR, radix-2 atau 4 FFT (yaitu hal-hal yang cocok dengan arsitektur DSP dengan baik tanpa banyak aliran kontrol), Anda dapat mencoba ini:

Hitung berapa banyak "akumulasi berlipat ganda" yang Anda butuhkan per detik di semua algoritme Anda.

  • <10 juta Anda mungkin bisa mendapatkan mikrokontroler cepat untuk melakukan pekerjaan itu (atau bahkan lambat jika Anda <1 juta)
  • <100M adalah wilayah DSP yang mudah
  • <1G kemungkinan merupakan wilayah DSP cepat yang bisa dilakukan
  • 1G-10G adalah tempat persilangan antara DSP dan FPGA
  • > 10G adalah beberapa DSP atau FPGA
Martin Thompson
sumber
2
Ini sebenarnya daftar yang sangat bagus untuk referensi!
Kellenjb
3
Ingatlah untuk mengalikan 10x setiap beberapa tahun atau lebih :)
Martin Thompson
Bisakah Anda memberi contoh "mikrokontroler cepat"?
endolith
1
@endolith: tidak dengan kemungkinan itu menjadi saat berikutnya kita melihat :) Pada awal 2014, mungkin sesuatu seperti LPC1768 (yang jam di 100MHz - mendorong sedikit untuk 10MMACS kurasa)
Martin Thompson
@ MartinThompson: Pustaka DSP untuk LPC1700 mengatakan Cortex-M3 melakukan "2-cycle (32x32) +32 -> 32 multiply yang terakumulasi menumpuk", jadi 50 MMACs?
endolith
11

Sejauh yang saya tahu, ARM harus dianggap sebagai arsitektur daripada platform. Namun, pertanyaannya cukup relevan untuk platform apa yang digunakan untuk pemrosesan sinyal RT (dalam hal ini audio).

Anda bisa mulai dengan mengajukan pertanyaan berikut, bukan dalam urutan yang ketat:

  • Berapa lama waktu yang saya miliki untuk implementasi?
  • Apa kendala kekuatan saya?
  • Operasi matematika apa yang saya butuhkan? Anda mungkin membutuhkan banyak pengali secara paralel dan karenanya membatasi pilihan Anda.
  • Berapa banyak memori yang saya butuhkan? (kebanyakan MCU terbatas)
  • [Penting] Berapa frekuensi operasi saya? Berapa banyak yang dapat saya peras dalam periode pengambilan sampel dengan menjaga frekuensi operasi tetap rendah?
  • Perpustakaan apa yang tersedia untuk implementasi pilihan saya?

Saya akan mulai dengan melihat algoritma pertama dan terutama. Jika, misalnya, Anda memerlukan banyak operasi FFT dan MAC, Anda mungkin dapat mengesampingkan sebagian besar mikrokontroler dan lebih fokus pada inti DSP. Ingatlah bahwa ada MCU dengan core DSP tertanam juga.

Pertimbangan penting lainnya adalah kemampuan dan keahlian Anda dalam bidang implementasi. Kebanyakan orang menghindar dari FPGA karena Anda harus menggunakan HDL untuk implementasi. Alasan lain untuk menghindar dari FPGA adalah persyaratan daya.

anasimtiaz
sumber
2

Hanya dengan informasi yang Anda berikan pilihannya mungkin ARM, (IIR dan FIR sederhana) tetapi ada faktor lain yang perlu dipertimbangkan seperti persyaratan daya, persyaratan IO, fitur tambahan yang Anda harapkan untuk diterapkan: Berapa lama waktu pengembangan yang akan Anda hemat jika perangkat ini punya koneksi jaringan dan API untuk memodifikasi parameter DSP di lapangan?

Sudahkah Anda mempertimbangkan untuk memperluas jangkauan opsi Anda ke telepon pintar atau komputer kecil seperti Beagle Board? Anda mungkin menyadari bahwa pemrosesan sinyal hanya sebagian kecil dari seluruh masalah yang Anda selesaikan.

Aurelio
sumber