如何确定最好在哪个平台上实现实时音频处理?


15

开发产品时,我会在Matlab中进行所有算法设计。它们通常是非常基本的,一个或两个IIR或FIR滤波器,几个FFT,等等。当需要将其移至嵌入式环境时,我总是很难决定要在哪个平台上运行它。我通常会想到以下这些(广泛的)平台:

  • DSP内核
  • 现场可编程门阵列
  • 微控制器

做出此决定时应考虑哪些因素?


2
为什么将“ ARM”与“微控制器”区分开?尝试对TI的DSP + ARM部件进行分类?您是否正在尝试将低功率的小型设备与较大的微处理器分开?(在后一种情况下,您可能应该包括MIPS和特定于供应商的32位内核)
Kevin Vermeer

当我想到微控制器时,我想到了PIC,Atmel等,但我想ARM也可以落入这个范围。我并不是要说所有这些都是选择,只是在问应该考虑哪些因素。
2011年

1
您认为“最佳”是什么?您受到权力的限制吗?成本?易于编程?灵活性?
奥利弗·查尔斯沃思

@Oli这就是整个问题,在决定时应考虑哪些因素。
2011年

3
@Kellen:目前,这个问题有点像“如何决定哪种汽车最好?”,没有进一步的限制。
奥利弗·查尔斯沃思

Answers:


13

如果您坚持使用“标准算法”,例如IIR,FIR,radix-2或4 FFT(即非常适合DSP架构的东西,而没有太多控制流),则可以尝试以下方法:

计算所有算法中每秒需要多少“乘法累加”。

  • <1000万,您可能会得到一个快速的微控制器来完成这项工作(如果您的计算机<1M,甚至可能是一个慢的微控制器)
  • <100M是简单的DSP领域
  • <1G可能是可行的快速DSP领域
  • 1G-10G是DSP和FPGA之间交叉的地方
  • > 10G是多个DSP或FPGA

2
这实际上是一个很好的参考清单!
2011年

3
只要记住,每两年左右要乘以10倍:)
Martin Thompson

您能举一个“快速微控制器”的例子吗?
endlith 2014年

1
@endolith:下次我们看时不太可能是当前的:)在2014年初,也许是LPC1768之类的东西(时钟频率为100MHz-我猜它有点推高了10MMACS)
Martin Thompson

@MartinThompson:LPC1700的DSP库说Cortex-M3是否“累加了2周期(32x32)+32-> 32个有符号乘法”,所以有50个MMAC?
endlith 2014年

11

据我所知,应该将ARM视为体系结构而不是平台。但是,该问题与用于RT信号(在这种情况下为音频)处理的平台有关。

您可以先提出以下问题,而不是严格按照以下顺序进行:

  • 我需要多少时间来实施?
  • 我的功率限制是什么?
  • 我需要什么数学运算?您可能最终需要大量并行的乘法器,因此限制了您的选择。
  • 我需要多少内存?(大多数MCU受限制)
  • [重要]我的手术频率是多少?在采样周期内可以压缩多少以保持较低的工作频率?
  • 我可以选择哪些库来实现?

首先,我将首先探讨算法。例如,如果您需要大量FFT和MAC操作,则可以排除大多数微控制器,而将更多精力放在DSP内核上。请记住,也有带有嵌入式DSP内核的MCU。

另一个重要的考虑因素是您在实施方面的能力和专业知识。大多数人不愿使用FPGA,因为您必须使用HDL来实现。放弃FPGA的另一个原因是功耗要求。


2

仅凭您提供的信息,选择可能是ARM(简单的IIR和FIR),但是还需要考虑其他因素,例如功耗要求,IO要求,期望实现的其他功能:如果使用此设备,将节省多少开发时间是否具有网络连接和用于在现场修改DSP参数的API?

您是否考虑过将选择范围扩展到智能手机或Beagle Board等紧凑型计算机?您可能会意识到信号处理只是您要解决的整个问题的一小部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.