想像一下您在家中的智能助手:当你说出一条命令,它就能识别您的声音,处理您的发言并做出响应。这就是一个需要信号处理的多传感器设备的案例。信号处理技术在当今我们周围的所有设备中至关重要:可穿戴设备,音频耳机,智能扬声器和摄像头。我们看到这样的自主,智能和连接设备的惊人增长,而挑战在于它们必须在低功耗环境中运行。
为了实现信号处理功能,这些应用程序以前使用了基于Arm Cortex-M0或Cortex-M3处理器的简单微控制器(MCU)以及单独的专有专用数字信号处理器(DSP)。但是现在,我们看到越来越多的产品制造商(或原始设备制造商-OEM)转向具有DSP扩展功能的单个高性能,低功耗MCU,例如Cortex-M4,Cortex-M7,Cortex -M33或Cortex-M35P处理器,以取代MCU+DSP两个处理器的设计。
在一个处理器中结合使用基于Arm的拥有DSP指令扩展功能的MCU对于OEM来说具有一些优势,使他们能够:
通过用一个替换两个处理器(MCU+额外的DSP),可以大大节省其产品的BoM成本。
通过移除MCU和DSP之间通信所需要共享的内存,复杂的多处理器总线架构以及MCU和DSP之间的其他连带的逻辑需求,降低了系统级的复杂性
由于所有过程都集中在一个位置,因此更容易开发和调试应用程序
减少软件开发成本,因为可以使用单个编译器/调试器/ IDE支持整个项目
利用Arm优化的DSP库功能节省开发时间
受益于使用高级编程语言(例如C或C ++)进行编程,而不是通常用于专有DSP的手动汇编程序
该文章将介绍易于使用的Arm Cortex-M处理器上的信号处理功能,以及如何利用Arm生态系统合作伙伴提供的软件支持。我还将介绍处理器的体系结构如何有效实现算法以及Arm 提供的免费DSP库的细节,其中包括一个用于清除心电图信号记录的噪声的示例。
信号处理介绍
信号处理算法应用于来自模数转换器的原始数据,以对数据进行整形,以改善应用软件做出的决策。典型的算法控制信号的幅度,消除噪声或估计振荡频率。
用于信号处理的关键运算基于称为离散卷积的数学运算。卷积是由乘积之和创建的,因此,任何能够在一个周期内有效计算此乘积的处理器将产生可用于信号处理的乘积之和。
30年前,16位的运算数在数据处理的过程中速度被限制在了每秒1000万次乘法,并且地址空间被限制为几十kByte。如今,小型Cortex-M3的合成频率可以超过500MHz。它可以计算32位的乘法,累加64位,并且具有数GB的地址空间。尽管Cortex-M3没有DSP扩展,但仍可以进行信号处理。使用Cortex-M设备进行复杂的信号处理计算并没有实际限制,该博客将分享一些实际示例。
Arm嵌入式处理器产品组合
首先,让我们看看Arm提供的技术,并帮助您了解最适合您的应用程序的技术。您需要适合您应用程序的硬件处理能力和效率。Arm Cortex处理器系列提供了一种标准架构,可满足这些不同产品市场所需的广泛性能范围和成本范围。Arm Cortex系列包括基于三种不同配置类型的处理器:
Arm Cortex-A系列处理器,适用于运行在复杂的操作系统之上的成熟的、高端的应用程序
Arm Cortex-R系列处理器,适用于高性能实时系统
Arm Cortex-M系列处理器,适用于需求低功耗以及成本敏感型的微控制器应用
Cortex-A和Cortex-R处理器包括NEON SIMD (单指令,多数据)扩展,可为信号和数据处理提供高性能的数学指令。
Cortex-A和Cortex-R处理器广泛用于信号处理应用。 该博客重点介绍Cortex-M处理器系列,因此让我们看一下Cortex-M处理器提供的优势和性能点。以下是重点介绍的快速指南:
为了实现最低的功耗和面积:Cortex-M0 +和Cortex-M23处理器
为了提高性能和功效:Cortex-M3,Cortex-M4和Cortex-M33处理器
高性能:Cortex-M7
对于防篡改安全技术:Cortex-M35P
Arm具有MCU和DSP功能的数字信号控制器
Cortex-M4,Cortex-M7,Cortex-M33和Cortex-M35P是数字信号控制器 ,可满足对高性能通用代码处理以及数字信号处理应用程序的需求。这些处理器包括对Thumb指令集的DSP扩展,并包括可选的浮点单元(FPU)。这些指令旨在帮助提高数值算法的性能,并提供直接在CPU上执行信号处理操作的机会。如上所述,很多年前,您可能已使用Cortex-M3进行信号处理。但是,这些结合了DSP扩展的Cortex-M处理器可提供更好的性能。
为什么要使用结合了控制和DSP功能多合的Arm CPU?快速概览:
确保您的信号处理算法可以从一个处理器移植到另一个处理器-可移植性
利用整数或浮点数据格式利用高处理能力-整数和浮点计算
受益于信号处理合作伙伴网络提供的选择和灵活性,这些合作伙伴在语音,音频,电机,机器学习方面具有专业知识-信号处理合作伙伴的灵活性
部署安全功能-安全性
充分利用多源硅供应,同时节省软件投资-节省成本
通过Arm GitHub上的免费信号处理内核软件库加快软件开发速度-Arm免费软件库
要开始基于拥有DSP指令扩展的Arm芯片开发,请查看Arm的芯片合作伙伴。例如去年,恩智浦,意法半导体和北欧半导体宣布推出具有DSP功能的基于Cortex-M33的芯片。
使用免费的Arm信号处理内核软件库加速软件开发
CMSIS-DSP和CMSIS-NN是一套为Cortex-M处理器优化通用信号处理和数学函数计算的软件库。该库作为CMSIS版本的一部分免费提供,并包含所有源代码。库里包含的功能分为以下几类:
向量数学(点积,加,乘)
数学函数(三角函数,平方根)
复数向量数学函数
滤波(卷积,FIR,Biquads)
矩阵函数(加,逆,转置)
变换(FFT,DCT)-电机控制功能
统计函数(RMS,方差)
插值函数(插值)
神经网络卷积池化和激活函数
全连接层函数
这个库有单独的函数,用于操作8位整数、16位整数、32位整数和32位浮点值。您可以使用CMSIS-DSP源代码,修改它,分发它,没有任何约束。
示例:ECG过滤和检测
这是一个信号处理应用于心电图记录上的噪声去除和信号检测的例子。一个Cortex-M微控制器以500Hz的采样率采集心电生理数据。数据流通过噪声去除算法(下图中上层的波)进行处理,然后通过脉冲检测对数据净化(下图中中层的波)。
噪声消除抑制了交流电力线的低频调制和60Hz干扰。检测算法通过一个滑动窗口找到输入流的峰值,并使用统计估计确定心脏周期的起始点。
该滤波器采用以下三个极点(弧度/振幅):(0.05 [rad] / 0.98);(0.25 [rad] / 0.9);(0.45 [rad] / 0.97)。三个零点都以不同角度安置在了Z-circle上,角度分别为:0.02 [rad]、0.65 [rad]和1 [rad]。滤波器增益为0.02。该滤波器去除近直流谱分量,去除50Hz ~ 60Hz范围内频率电力线周围的噪声。
在Cortex-M3处理器上运行时,ECG信号处理消耗的CPU负载少于0.1MHz。更准确地说,通过三个双二阶滤波器的级联来处理1秒钟的信号需要55k个cycle/秒,而能量计算和阈值检测则需要15k个cycle/秒,这为缓冲区复制增加了一些实现余量和时间。
Cortex-M上的DSP入门
希望能够展示使用拥有控制和DSP能力双和一的Arm CPU的好处。随着市场向流媒体、连接和交互用户界面的方向发展,对低功耗嵌入式设备性能的需求将越来越大。使用具有DSP功能的单个微控制器,而不是使用单独DSP的性能较低的微控制器,可以降低BoM成本、系统级复杂性、软件开发成本和时间尺度。
我们预计,越来越多的消费设备将受益于Cortex-M4、Cortex-M7、Cortex-M33和Cortex-M35P等Cortex-M系列处理器的高性能、低功耗和低延迟响应。将这些与Arm免费的软件库结合起来,可以在DSP开发上抢占先机。
原作者:啥都吃的豆芽