你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】初学数字信号处理准备工作

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示
  关于学习方法问题,可以看附件章节A。
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
1.2   STM32H7的DSP功能介绍
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


重点看如下两个设计单元:

  DSP
DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。

  FPU
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。

下面是Cortex-M3,M4和M7的指令集爆炸图:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


通过这个图,我们可以了解到以下几点:

  M4和M7系列有相同的DSP指令集。
  M7相比M4系列要多一些浮点指令集。
  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。


不同M内核的DSP性能比较:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  Cortex-M7内核的DSP性能最强。
  Cortex-M3,M4和M33是中等性能,其中M3最弱。
  Cortex-M0,M0+和M23性能最弱。

1.3   Cortex-M7内核的DSP和专业DSP的区别
M核的DSP处理单元与专业DSP的区别:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


1.4   ARM提供的CMSIS-DSP库
为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:

  BasicMathFunctions
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  FastMathFunctions
主要提供SIN,COS以及平方根SQRT的运算。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  ComplexMathFunctions
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  FilteringFunctions
主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  MatrixFunctions
主要是矩阵运算。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  TransformFunctions
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  ControllerFunctions
控制功能,主要是PID控制函数和正余弦函数。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  StatisticsFunctions
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  SupportFunctions
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


  CommonTables
arm_common_tables.c 文件提供位翻转或相关参数表。

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


1.5   TI提供的32位定点DSP库IQmath
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。

所以本次教程也会对IQmath做个介绍并配套一个例子。

1.6   ARM DSP软件替代模拟器件的优势
我们日常生活中用到DSP的地方很多,以生活中的设备为例:

aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png


通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。

  降低BOM成本
将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。

  提高设计灵活性
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。

  减少产品尺寸
降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。

  缩短设计周期时间
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:

首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。

  现场适应性
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。

用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。

1.7   Matlab安装
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。

1.8   总结
本期教程主要是做一些入门性的介绍,下期教程将开始实战。



收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版