在本文中,RobertKim从所有关于电路博客讨论了当你需要一个MCU作为系统控制器和数字信号处理器时应该寻找的特性。
数字信号处理可以为各种各样的产品和应用增加有价值的功能。即使是受成本、表单因素或进度限制的设计,也可以很容易地结合dsp的优点,因为现在的工程师可以访问大量的库代码、示例项目和高性能处理器,这些代码既便宜又相对方便用户。
一个真正的数字信号处理器--比如来自德克萨斯仪器公司的C 5000系列或来自模拟设备的SHARC系列--可能是一种令人恐惧的设备。我主要是使用德州仪器公司的DSP,总的来说,这种体验是富有成效和令人满意的。但是,在这种情况下,我不需要设计电路板,我也不喜欢尝试调试奇怪的系统崩溃和理解操作系统的细节的过程。
毫无疑问,某些计算密集型的DSP任务将需要一个真正的数字信号处理器,甚至是一个FPGA。然而,在许多应用程序中,一个适当选择的微控制器也足够了。本文讨论了当您想要确保您的MCU具有足够的DSP功能时,需要关注的特性和功能。
8位,16位,还是32位?
这个问题没有你想象的那么简单。一般来说,16位和32位的设备将更适合于DSP应用.数字信号处理涉及数学过程,这往往会导致大量的数字,你想要一个处理器,可以直接操作这些大的数字。
然而,8位处理本身并不坏,如果您知道您将处理有限的数字值范围,8位微控制器可能是一个不错的选择。
此外,工程师通常没有时间或倾向于研究处理器的低级细节,因此,很难在指定的位宽与实际计算效率之间建立明确的联系。例如,“32位微控制器”有32位寄存器吗?32位ALU?32位地址总线?32位通信接口?“32位”到底是什么意思?这些细节可能会影响您的决定,特别是当您希望主要处理的小数字不需要所有这些额外的比特。
这种现代化的8位架构是由硅实验室开发的(取自本文档的图表)。他们警告人们不要认为16位或32位设备的性能将始终优于8位设备。
时钟速度
作为数字信号处理器,微控制器的最大时钟频率无疑是其优点的一个很好的指标。然而,理解每秒时钟周期和每秒指令之间的区别是非常重要的。处理器通过执行指令来完成DSP任务,因此,其性能受到执行指令所需的时钟频率和时钟周期的影响。
不幸的是,这个问题很快变得相当复杂。指令所需时钟周期的数目随指令的不同而不同,平均使用流水线结构可以减少每条指令的时钟周期数。然后,你必须考虑到“每条指令的功能”的数量--也就是说,也许微控制器A只需要一条指令就可以在微控制器B上做一些需要多条指令的事情。
这个图表传达了流水线处理器的概念。有关更多信息,请参阅本文。作者声明:[by]C.M.L.Burnett[CC-by-SA-3.0]。
以下是我的简短建议:如果您正在比较来自同一家族的设备,请选择更高的时钟频率。如果您正在比较设备与主要架构差异,请尝试找到一个可靠的规范,指示指令执行速率(以MIPS表示,每秒数百万条指令)或每条指令的平均时钟周期数。
固定点与浮点
术语“浮点”指的是一个数字表示,其中基点可以“浮动”,因为这个数字由一个整数部分(尾数)和一个指数组成。另一种方法(“定点”)对应于我们通常在普通微控制器中处理和感知数据的方式。对浮点运算和定点运算进行仔细的比较绝不是一项简单的任务,但似乎有一种共识,即浮点处理在数学密集的应用中可以占优势。
我认为可以肯定地说,所有的微控制器都是定点设备,因为在我看来,如果它真的是一个浮点处理器,它就不再是一个微控制器了。但是,如果您真的决心在保持微控制器域中的同时最大化您的数学性能,那么您应该考虑一个包含浮点的设备。协和处理器。
NXP的LPC 3180FEL320是一种基于16/32位ARM的微控制器,它有一个浮点协处理器,可以达到220 MIPS。STMicroElectronics也有STM 32微控制器,它包含一个浮点单元(FPU).
我在我的循环触摸传感器项目中使用了浮点算法。在大多数情况下,独立的FPU是不必要的-编译器擅长在典型的微控制器中实现浮点变量。
重述
在本文中,我们探讨了CPU特性,使微控制器或多或少适合DSP应用。我认为,在大多数情况下,关注位宽和MIPS是有意义的,除非您计划用您的MCU进行一些严肃的数字处理,否则您不需要太担心浮点和固定点。我们将在下一篇文章中继续讨论这个主题,其中将讨论与DSP相关的外围功能。