Como decidir em qual plataforma é melhor implementar o processamento de áudio em tempo real?

15

Ao desenvolver produtos, faço todo o meu design de algoritmo no Matlab. Eles geralmente são bem básicos, um filtro IIR ou FIR ou dois, alguns FFTs, etc. Quando chega a hora de movê-lo para um ambiente incorporado, sempre tenho dificuldade em decidir em qual plataforma executá-lo. Eu geralmente penso nessas plataformas (amplas):

  • Núcleo DSP
  • FPGA
  • Microcontrolador
  • BRAÇO

Que fatores devo considerar ao tentar tomar essa decisão?

Kellenjb
fonte
2
Por que você distingue "ARM" de "Microcontrolador"? Tentando categorizar as peças DSP + ARM da TI? Você está tentando separar pequenas coisas de baixa potência de microprocessadores maiores? (Neste último caso, você provavelmente deve incluir MIPS e fornecedor específico núcleos de 32 bits)
Kevin Vermeer
Quando penso em microcontrolador, penso em PIC, Atmel, etc., mas suponho que o ARM também se enquadre nisso. Eu não estava tentando dizer que essas eram todas as opções, apenas perguntando quais fatores deveriam ser considerados.
Kellenjb
11
O que você determina "melhor"? Você está limitado pelo poder? Custo? Facilidade de programação? Flexibilidade?
Oliver Charlesworth
@ Oli Essa é a questão toda, quais fatores devem ser considerados ao tentar decidir.
Kellenjb
3
@Kellen: No momento, essa pergunta é um pouco como "Como decidir qual carro é melhor?", Sem mais restrições.
Oliver Charlesworth

Respostas:

13

Se você está mantendo "algoritmos padrão" como IIR, FIR, radix-2 ou 4 FFT (ou seja, coisas que se encaixam bem nas arquiteturas DSP sem muito fluxo de controle), você pode tentar o seguinte:

Conte quantos "multiplica acumulados" você precisa por segundo em todos os seus algoritmos.

  • <10 milhões, você provavelmente pode obter um microcontrolador rápido para fazer o trabalho (ou até mais lento, se tiver menos de 1 milhão)
  • <100M é fácil território DSP
  • É provável que <1G seja um território DSP rápido e factível
  • 1G-10G é onde o cruzamento entre DSP e FPGA ocorre
  • > 10G são múltiplos DSPs ou FPGA
Martin Thompson
fonte
2
Esta é realmente uma lista muito boa para referência!
Kellenjb
3
Basta lembrar a multiplicar por 10 vezes a cada dois anos ou assim :)
Martin Thompson
Você pode dar um exemplo de um "microcontrolador rápido"?
Endolith
11
@endolith: não com qualquer probabilidade de que seja atual próxima vez que olhar :) No início de 2014, talvez algo como o LPC1768 (o qual a hora a 100MHz - empurrando-o um pouco para 10MMACS eu acho)
Martin Thompson
@MartinThompson: a biblioteca DSP para LPC1700 diz que o Cortex-M3 faz "2 ciclos (32x32) +32 -> 32 assinados se acumulam", então 50 MMACs?
endolith
11

Tanto quanto eu sei, o ARM deve ser considerado uma arquitetura e não uma plataforma. No entanto, a questão é bastante relevante sobre qual plataforma usar para o processamento do sinal RT (neste caso, áudio).

Você pode começar fazendo as seguintes perguntas, não em ordem estrita:

  • Quanto tempo tenho para a implementação?
  • Quais são minhas restrições de poder?
  • Que operações matemáticas eu preciso? Você pode acabar exigindo muitos multiplicadores em paralelo e, portanto, limitar sua escolha.
  • Quanta memória eu preciso? (a maioria dos MCUs é limitada)
  • [Importante] Qual é a minha frequência de operação? Quanto posso espremer dentro do período de amostragem, mantendo a frequência de operação baixa?
  • Quais bibliotecas estão disponíveis para minha escolha de implementação?

Eu começaria examinando o algoritmo em primeiro lugar. Se, por exemplo, você precisar de muitas operações FFTs e MAC, provavelmente poderá descartar a maioria dos microcontroladores e se concentrar mais nos núcleos DSP. Lembre-se de que também existem MCUs com núcleos DSP incorporados.

Outra consideração importante seria sua capacidade e experiência na área de implementação. A maioria das pessoas evita o FPGA porque você deve usar um HDL para a implementação. Outro motivo para fugir dos FPGAs é o requisito de energia.

anasimtiaz
fonte
2

Com apenas as informações fornecidas, a escolha é provavelmente ARM (IIRs e FIRs simples), mas há outros fatores a serem considerados, como requisitos de energia, requisitos de E / S, recursos adicionais que você espera implementar: Quanto tempo de desenvolvimento você economizaria se este dispositivo teve uma conexão de rede e uma API para modificar os parâmetros DSP no campo?

Você já pensou em expandir seu leque de opções para smartphones ou computadores compactos, como o Beagle Board? Você pode perceber que o processamento do sinal é apenas uma pequena parte de todo o problema que você está resolvendo.

Aurelio
fonte