Come decidere su quale piattaforma è meglio implementare l'elaborazione audio in tempo reale?


15

Durante lo sviluppo di prodotti faccio tutto il mio disegno di algoritmo in Matlab. Di solito sono piuttosto semplici, un filtro IIR o FIR o due, un paio di FFT, ecc. Quando arriva il momento di spostarlo in un ambiente incorporato, faccio sempre fatica a decidere su quale piattaforma eseguirlo. Di solito penso a queste (ampie) piattaforme:

  • Core DSP
  • FPGA
  • Microcontroller
  • BRACCIO

Quali fattori devo considerare quando provo a prendere questa decisione?


2
Perché si distingue "ARM" da "Microcontroller"? Cerchi di classificare le parti DSP + ARM di TI? Stai cercando di separare piccoli componenti a bassa potenza da microprocessori più grandi? (In quest'ultimo caso, dovresti probabilmente includere MIPS e core a 32 bit specifici del fornitore)
Kevin Vermeer,

Quando penso al microcontrollore penso a PIC, Atmel, ecc. Ma suppongo che anche ARM possa rientrare in questo. Non stavo cercando di dire che quelle erano tutte le opzioni, solo chiedendo quali fattori dovrebbero essere considerati.
Kellenjb,

1
Cosa definisci "migliore"? Sei limitato dal potere? Costo? Facilità di programmazione? Flessibilità?
Oliver Charlesworth,

@Oli Questa è l'intera domanda, quali fattori dovrebbero essere considerati quando si cerca di decidere.
Kellenjb,

3
@Kellen: Al momento, questa domanda è un po 'come "Come decidere quale auto è la migliore?", Senza ulteriori vincoli.
Oliver Charlesworth,

Risposte:


13

Se stai mantenendo "algoritmi standard" come IIR, FIR, radix-2 o 4 FFT (cioè roba che si adatta bene alle architetture DSP senza molto flusso di controllo), puoi provare questo:

Conta il numero di "moltiplicazioni accumulate" necessarie al secondo in tutti i tuoi algoritmi.

  • <10 milioni probabilmente puoi ottenere un microcontrollore veloce per fare il lavoro (o anche uno lento se sei <1 M)
  • <100 M è un territorio DSP semplice
  • <1G è probabilmente un territorio DSP veloce fattibile
  • 1G-10G è il punto di incontro tra DSP e FPGA
  • > 10G sono più DSP o FPGA

2
Questa è in realtà una bella lista di riferimento!
Kellenjb,

3
Ricorda solo di moltiplicare per 10 volte ogni due anni circa :)
Martin Thompson,

Puoi fare un esempio di "microcontrollore veloce"?
endolith

1
@endolith: non con alcuna probabilità che sia attuale la prossima volta che guardiamo :) All'inizio del 2014, forse qualcosa come l'LPC1768 (che cronometra a 100 MHz - spingendolo un po 'per 10 MMACS immagino)
Martin Thompson

@MartinThompson: la libreria DSP per LPC1700 dice che Cortex-M3 fa "accumulare 2 cicli (32x32) +32 -> 32 si moltiplicano", quindi 50 MMAC?
endolith

11

Per quanto ne so, ARM dovrebbe essere considerato un'architettura piuttosto che una piattaforma. Tuttavia, la domanda è abbastanza rilevante su quale piattaforma utilizzare per l'elaborazione del segnale RT (in questo caso audio).

Puoi iniziare ponendo le seguenti domande, non in ordine rigoroso:

  • Quanto tempo ho a disposizione per l'implementazione?
  • Quali sono i miei limiti di potenza?
  • Di quali operazioni matematiche ho bisogno? Potresti finire per richiedere molti moltiplicatori in parallelo e quindi limitare la tua scelta.
  • Di quanta memoria ho bisogno? (la maggior parte degli MCU sono limitati)
  • [Importante] Qual è la mia frequenza di funzionamento? Quanto posso spremere entro il periodo di campionamento mantenendo bassa la frequenza operativa?
  • Quali librerie sono disponibili per la mia scelta di implementazione?

Vorrei iniziare esaminando innanzitutto l'algoritmo. Se, ad esempio, hai bisogno di molte operazioni FFT e MAC, probabilmente puoi escludere la maggior parte dei microcontrollori e concentrarti maggiormente sui core DSP. Ricorda che esistono anche MCU con core DSP incorporati.

Un'altra considerazione importante sarebbe la tua capacità e competenza nel campo dell'implementazione. Molte persone evitano FPGA perché è necessario utilizzare un HDL per l'implementazione. Un altro motivo per evitare FPGA è il requisito di alimentazione.


2

Con solo le informazioni fornite la scelta è probabilmente ARM, (semplici IIR e FIR) ma ci sono altri fattori da considerare come requisiti di alimentazione, requisiti di I / O, funzionalità aggiuntive che ti aspetti di implementare: Quanto tempo di sviluppo risparmi se questo dispositivo aveva una connessione di rete e un'API per modificare i parametri DSP nel campo?

Hai mai pensato di espandere la tua gamma di opzioni su smartphone o computer compatti come la Beagle Board? Potresti capire che l'elaborazione del segnale è solo una piccola parte dell'intero problema che stai risolvendo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.