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


DSP内核
FPGA
微控制器
ARM

应该考虑哪些因素?我在尝试做出此决定时会考虑吗?

评论

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

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

您认为“最佳”是什么?您受到权力的限制吗?成本?易于编程?灵活性吗?

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

@Kellen:目前,这个问题有点像“如何决定哪种汽车最好?”,没有进一步的限制。

#1 楼

如果您要遵循IIR,FIR,radix-2或4 FFT之类的“标准算法”(即在没有太多控制流的情况下非常适合DSP架构的东西),则可以尝试以下方法:

计算您所有算法中每秒需要的许多“乘积”。

<1千万个您可能可以得到一个快速的微控制器来完成这项工作(如果您是<1M,甚至可能是一个慢的微控制器)
<100M是容易的DSP领域
/> <1G可能会成为快速的DSP领域
1G-10G是DSP和FPGA之间交叉的地方
> 10G是多个DSP或FPGA


评论


$ \ begingroup $
这实际上是一个很好的参考清单!
$ \ endgroup $
– Kellenjb
11年8月17日在11:57

$ \ begingroup $
请记住,每两年左右要乘以10倍:)
$ \ endgroup $
–马丁·汤普森(Martin Thompson)
2011年8月17日在20:08

$ \ begingroup $
您能举一个“快速微控制器”的例子吗?
$ \ endgroup $
– Endolith
2014年4月1日在16:12

$ \ begingroup $
@endolith:下次我们看时它不太可能是当前的:)在2014年初,也许像LPC1768之类的东西(时钟频率为100MHz-我猜它会推10MMACS)
$ \ endgroup $
–马丁·汤普森(Martin Thompson)
2014年4月1日在20:27

$ \ begingroup $
@MartinThompson:LPC1700的DSP库表示Cortex-M3会“累加2周期(32x32)+32-> 32个有符号乘法”,那么50个MMAC?
$ \ endgroup $
– Endolith
2014年4月1日21:00

#2 楼

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

您可以先问以下问题,而不必严格按顺序进行:


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

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

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

#3 楼

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

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