完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547
本期教程开始带领大家学习DSP教程,学习前首先要搞明白一个概念,DSP有两层含义,一个是DSP芯片也就是Digital Signal Processor,另一个是Digital Signal Processing,也就是我们常说的数字信号处理技术。本教程主要讲的是后者。
1.1 初学者重要提示
1.2 STM32F4的DSP功能介绍
1.3 Cortex-M4内核的DSP和专业DSP的区别
1.4 ARM提供的CMSIS-DSP库
1.5 TI提供的32位定点DSP库IQmath
1.6 ARM DSP软件替代模拟器件的优势
1.7 Matlab的安装
1.8 总结
STM32F4是采用的Cortex-M4内核,而DSP功能是内核自带的,下面我们通过M4内核框图来了解下:
重点看如下两个设计单元:
DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘累加指令),可以加速数字信号处理的执行速度。
Cortex-M4内核支持单精度浮点,可以大大加速浮点运算的处理速度。
下面是Cortex-M3,M4和M7的指令集爆炸图:
通过这个图,我们可以了解到以下几点:
不同M内核的DSP性能比较:
M核的DSP处理单元与专业DSP的区别:
为了方便用户实现DSP功能,ARM专门做一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
主要提供SIN,COS以及平方根SQRT的运算。
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:
主要是矩阵运算。
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
控制功能,主要是PID控制函数和正余弦函数。
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
arm_common_tables.c 文件提供位翻转或相关参数表。
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
所以本次教程也会对IQmath的时候做个介绍并配套一个例子。
我们日常生活中用到DSP的地方很多,以生活中的设备为例:
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要增加调整,且更灵活性。
降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。