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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示9 \9 c& S4 P1 f, u
  关于学习方法问题,可以看附件章节A。( z2 E; s/ H! }
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。8 U1 ?4 K5 ~; G6 p) _- E
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON/ l8 h! c$ F3 c4 v) m
1.2   STM32H7的DSP功能介绍0 t* j% ]& ]# y
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
- H, G3 }5 |. Y! L0 c# ]' ]
* K+ O& u. C8 ~9 o0 ^% M" @8 u
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# x; s2 d. A, ]3 e1 z- z4 {# p% a  ]! a' ?7 t% w0 K
重点看如下两个设计单元:
: g4 N" ?2 l) }  }2 F- A5 U( K( f; U+ Z+ h/ y! T" t
  DSP* G, ?/ o/ `5 a6 z
DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。
: `% h9 B( ~$ ?3 [5 \9 ?# X
$ }/ C9 O8 `' o! {6 S( c  FPU
+ z1 r2 i# P6 l8 d. N& [7 ^Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。  e# @7 ]* k) c, H
' M0 K; i; ?" J9 Z" ?6 c
下面是Cortex-M3,M4和M7的指令集爆炸图:
3 T' x6 V& C5 B$ D; r1 p& \9 P4 V/ l/ E9 v3 o" H- }! ?' F7 s1 q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
/ E; w3 m! |2 ^# G1 T3 e

; ?6 o+ v3 I: B9 V2 t  v通过这个图,我们可以了解到以下几点:$ k% s4 K& E  F8 H

* Q8 ^' g" c$ o3 |* v9 q3 o6 F  M4和M7系列有相同的DSP指令集。
. x/ @5 X5 A7 {) T  ]* X  M7相比M4系列要多一些浮点指令集。
5 {7 G& q- G5 u  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
3 M9 ]- l# |- J* w: T7 G& T6 r( a, q. [) r+ c7 I; s& v( X

$ l$ G) e- c- y) r' b  q# S不同M内核的DSP性能比较:
3 T, w  S( Q9 d  f' ]3 B! r5 D2 J. W$ m- i  K
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

! K3 O# {+ r( C- U& Y
+ `' h% \: i* {8 ]! v. v  Cortex-M7内核的DSP性能最强。
+ D2 A! d) Y7 e* ]# a5 [( S  Cortex-M3,M4和M33是中等性能,其中M3最弱。
5 \8 W' D% s3 d1 X; `7 t  Cortex-M0,M0+和M23性能最弱。$ [4 d4 l1 g/ P1 h

, s/ ^% H+ i7 M; A" i+ n1.3   Cortex-M7内核的DSP和专业DSP的区别
+ K) ^7 k: d* g" u2 Z, u! zM核的DSP处理单元与专业DSP的区别:! Q) w, d6 `; C- _0 h
1 ]# Q  |% |6 V0 C* l: P
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: w- m/ R, T' v' Q+ E- B4 q: G9 m  ^3 Z' B* J( b8 d
1.4   ARM提供的CMSIS-DSP库
7 H$ q: l" Y) B. u为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
; h1 p$ t* {: z5 M
0 D: x+ V! a6 b- ?) b3 z: J! W# _  BasicMathFunctions
' x. e% j7 j+ M. y, U3 B! ?提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
% \* ]. A" o2 D2 P0 B# ~+ O  F- I8 m+ s3 I
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 S- j3 m$ D7 L- T" ]3 f0 L% T3 i6 W
  FastMathFunctions5 ~' K5 X9 [3 Y, g- s, E7 a
主要提供SIN,COS以及平方根SQRT的运算。) Y8 ~$ i/ V6 S/ O( _2 B

% C  v5 e* [; ^2 }; e' O
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- e; H# a( b( ]! l9 \
( y7 @& @) \, n  c1 @6 u, d3 K& G: ]  ComplexMathFunctions
6 j  W- V. I4 P6 D( R( ~7 l, p复杂数学运算,主要是向量,求模等运算。下面是部分API截图:& S5 Z2 K& }1 z8 g! P( v- a6 a) b
7 m) w7 ^( B0 D. R2 q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
5 U/ T5 Y* I! P+ t7 T1 i

0 K* W# @* x, h! a1 ?  FilteringFunctions
- v8 g& f8 E5 r3 s. [3 w% s主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:7 J! m$ y) C7 ^" J

* p5 f2 a- q9 |4 v
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

% l; S" r  t0 s$ H) M: ~: o
7 r( {7 r8 o* s+ S# _  MatrixFunctions
5 |2 f, G8 _9 \4 j5 H7 j# _主要是矩阵运算。' }. }8 I: p$ o/ T- _! o$ v  ]
% _/ w. D9 Y2 L0 ?
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
4 U& F! u1 u% x  H; |5 ~+ q) |

2 q5 g" v* i- X8 f8 H1 n5 Z0 }( F  TransformFunctions. L/ ~+ L* N: r- {
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
5 ?0 X4 T4 w6 o  ]3 Y6 \6 H; v+ H* V' f" p: R4 D# W/ r) J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

) @5 e5 t5 C" l# v
0 X% K! x3 G" i( X$ V* u6 C/ }  ControllerFunctions, }# z( M% e. K* \# b) Y5 a
控制功能,主要是PID控制函数和正余弦函数。# ]' W" z! M0 x- [  T  M
8 k9 y- H$ T, J  x
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 J9 |# G5 d" a. p7 v# u. F
! r$ O+ A" \- A7 t' N  StatisticsFunctions
4 e$ u/ p' s2 Q3 ]) P, K统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。7 E- j+ k' ?& E3 m) o* G( u
, J  m$ a9 [$ ^& e  h! J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

" T. N: q( Q) z& |7 j! l1 f  g1 k8 s0 C- h
  SupportFunctions
# z( h5 @' r- |支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。% N! q' }1 `1 ]5 H8 v
: O/ O3 Q* B1 S, f
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
$ v6 K# Z1 X& `. K( b

# Q# l* r2 [* L# u9 J- U1 H  CommonTables
" R# B3 l  n1 n8 harm_common_tables.c 文件提供位翻转或相关参数表。
, b' A3 {' q3 n  \2 f+ {8 r2 d' _. A- e' E: I- R7 ^
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

! A5 F2 ?& X4 t( G1 |, [$ y9 x) E& x
1.5   TI提供的32位定点DSP库IQmath( N" s( P- ]: l0 G9 o1 H
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
* W! v# ^3 H; P- k% M
: l: c+ R2 p! z- W2 U所以本次教程也会对IQmath做个介绍并配套一个例子。" ?9 N2 x1 g7 R# G2 x3 Y

) C) z4 c# Y4 n/ |. Z1.6   ARM DSP软件替代模拟器件的优势
- j8 X( m" r+ r4 |) y+ Z/ l我们日常生活中用到DSP的地方很多,以生活中的设备为例:- g) Q2 y* J# @+ q
/ ]( C0 H3 L2 w  y) r  J( z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

7 `. s6 Z6 s5 U! Z6 I; w% [
; X/ F2 P9 o7 j; l7 P/ F) M9 K通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
( K+ O  u- Y% H4 W9 H
+ w% `# J1 C- ]4 K) i! c  降低BOM成本1 ]& a" L$ c/ f
将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。, Q! w, \; F2 s7 P/ t) a0 X

3 A3 `: t3 a4 B; `  提高设计灵活性
; p& D( a7 u2 J- @$ `7 j使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。! M/ K' M; e+ }6 g# z/ E, d
; }; z* M- T6 ]. K2 e. T# v* \" p
  减少产品尺寸
; q# ?' |( r% Z! n降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。
! R& H& ]0 {4 ^$ {2 }5 R  U3 ^# I/ n5 z2 o( j# [; ^0 P
  缩短设计周期时间. q5 ^$ v( F7 T% [; F
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:  I8 [5 n; r% y- H' y
( A) |6 ^* B  k0 c7 B% w. F
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。! p' W$ m) ~0 m+ t( h
其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
* w% E/ w1 C# M; T! J9 g4 \4 K' l. t+ a/ ~# f( s. Z
  现场适应性
7 k% ^; ?: C6 ~3 Q: O5 ^在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。- b- C3 u/ z, _  R  [/ N8 z

# @0 d; a( c+ Y( C7 o用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。, L* ]$ {9 s) h, \  P+ M1 I
1 T3 V% o# q4 u) B1 L5 y9 \8 c
1.7   Matlab安装0 M) ^1 i) i* s0 I6 c1 P$ l( X# a
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。# k9 ?6 N- ~: G8 i9 V6 G
; L+ @) y$ `& O8 T3 y/ ?
1.8   总结
4 F1 E5 n% S0 f  a本期教程主要是做一些入门性的介绍,下期教程将开始实战。! t/ m$ H: K$ \& y+ y

9 `+ M8 K4 g1 o5 b' m: Y
! l1 l) t" M. v! Z' D: [( ^- M  r2 s& L3 P4 N3 m
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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