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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示
+ ~# j+ c/ _; m/ w# m$ P% @  关于学习方法问题,可以看附件章节A。
8 H% P7 W; q; c  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。& a% ^7 Q5 B  T* `& W- p* z
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON3 O( B% B/ @( G# u0 i
1.2   STM32H7的DSP功能介绍
% r& q8 f# S9 M$ w4 R. L' C9 pSTM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
+ ]8 X; D* @0 I$ F; ?4 s7 {' ^8 L
$ i2 Y$ y; O3 H  A, S4 U' o4 E! T# W
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: z% H4 H  W* H, J) r9 y/ `+ i
) M" t* P: X/ a5 a7 x8 ]重点看如下两个设计单元:) X$ Q" w6 W' C5 b1 A) K
7 x: p" e, U- n' I
  DSP
0 d9 A/ D( `( e/ Z6 m* z! B, |DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。
1 ?$ L+ T& V# L4 X$ z  U; u, a( x/ Q
! O: ]0 D  M. j& A0 S7 m+ A' h  FPU7 a3 `; T! f7 s* O( K
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。
% t$ @7 _7 {& d# R2 w* W/ I( [$ D' ]$ ~& _/ `
下面是Cortex-M3,M4和M7的指令集爆炸图:
$ F8 u' F/ E! F/ K( B9 I; Q5 ?
, F" B2 b% \$ Z7 Y4 T, B% j
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# V# X( u2 _0 \
$ N9 `6 Q4 [9 e$ Q通过这个图,我们可以了解到以下几点:, R( s2 n$ ]7 `

% M" s, ]- }2 a" b' \! o* C' b) J  M4和M7系列有相同的DSP指令集。2 k! e! `+ O' y' F* u% d
  M7相比M4系列要多一些浮点指令集。' T- f; H* k# \
  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。) W; n$ I! H4 o1 b

4 X, W1 ?2 u/ Q2 _0 z6 d8 T6 q7 v) ^6 m
不同M内核的DSP性能比较:
. ?5 {( q! h; L4 `) b1 ]) o( Q% _; }8 k( n7 o  K' u. R% ?
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

6 L8 p% H) u* B5 ]3 l. q4 H9 }( Y! g4 G$ d
  Cortex-M7内核的DSP性能最强。
9 d8 X& j6 X, e8 ^$ e/ |  Cortex-M3,M4和M33是中等性能,其中M3最弱。
* V7 N8 B' k3 T3 j. J) e  ^. j  Cortex-M0,M0+和M23性能最弱。
3 N( w! H2 F0 x
1 H& a7 `7 x  u0 x! a' Q1.3   Cortex-M7内核的DSP和专业DSP的区别0 n5 w9 E0 @; A
M核的DSP处理单元与专业DSP的区别:  c- m* B* H: I. _4 t1 h8 P

( P9 u8 J" C8 Q; g# }
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
# H; B$ {( q7 r  _6 a" M, u% {

, C% ^- o1 l5 ^1.4   ARM提供的CMSIS-DSP库5 r# p; M- T3 L% n
为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
4 I' W% Q5 _+ \5 j
* B+ A7 U% W& A# d% g" M/ u6 o3 m! c  BasicMathFunctions
2 d( v- n: |4 r6 b  r提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:2 B% s( r/ E# _' Z6 N

0 U0 K* ?0 X6 a
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
8 N. A6 I: o: X1 Y$ \4 a3 ]4 H
" x. j; Y4 ?' o5 C* n
  FastMathFunctions4 q0 a% O3 k8 u1 h* [$ ~
主要提供SIN,COS以及平方根SQRT的运算。  O- f2 r8 t! K/ Q
8 g# `6 B4 F7 h4 L9 q) u) j2 J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: t! _' Z8 x9 q; g3 }* Q
6 q3 V' g2 O" Y1 c9 q  ComplexMathFunctions! T8 N0 s8 u" i# [
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:8 O* S% v" A/ e/ U
! S: ~  F; ~0 t9 h2 G7 X) q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# N$ @7 M& }0 R- T; Q, }2 H3 [4 A7 Z! X
  FilteringFunctions; b8 C/ r, V) q( i2 |5 e! |
主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:, F  }' n) k/ _  L( ]8 w- p" d

0 m5 |2 y9 U/ }! V* K6 Q1 d- z5 f
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

* B9 ^% U- j  A' p' Y' t. k/ r3 d4 f
  MatrixFunctions% r6 |& F+ \# m! q
主要是矩阵运算。( a" M4 x6 ^8 V/ Q  V/ e' w- D: R
; I5 T1 I& k% ]
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

, E' e$ V! G  _$ ?+ e& h
; z$ W- c, P% F, \8 f  P  b( u1 _& K  TransformFunctions
) K: l+ _0 p7 Y$ o# h0 K+ y4 Z$ x变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
3 J3 Z/ i/ \9 a' }. Q$ W+ a' c9 K- B: j% a* c2 A" D
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
$ f+ \; _" [, V9 q- p2 `

5 i% k0 G9 l  I  ControllerFunctions
8 X& c- W& \: n: M4 {) D# G2 f控制功能,主要是PID控制函数和正余弦函数。
9 I# w6 q- v8 U1 K4 e+ p, l  }7 `( t: F6 h) o) t+ X- f
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
7 p% Q) V/ H+ |# F1 m
2 ]" I2 y" X8 j+ @3 g3 y
  StatisticsFunctions
1 d6 M+ I, o6 F: Z统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
  V% Y, L/ G; {8 `; F8 s4 W4 X7 A' K$ \8 B- x1 s# Z3 h
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
9 m( J% N: s) t; ^8 B2 `

# b: y" P0 R% y- \8 S  SupportFunctions
% ~$ P, B4 J& F0 e/ m! u$ k. D7 b支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
' k# ^2 z2 Z/ R
3 F& C  E6 X7 }6 Q; N& ^4 ?
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

8 v" H( \: B& \! B
* W3 [: u3 t  f  CommonTables
* {9 f- Q3 C" Warm_common_tables.c 文件提供位翻转或相关参数表。
3 \4 W8 a" }$ ~& I( c2 r" V/ z0 [$ Q) y- @0 ^
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

9 {' ^& n6 Q  |4 p, I" E1 ^7 D3 B6 A0 N& n. A  ?! q+ P, l
1.5   TI提供的32位定点DSP库IQmath, Q9 x, q: o6 d4 [6 A5 w' y
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
2 v2 D5 Q- \& E4 M3 s$ I, S6 s2 Z8 v/ M7 X8 q) j
所以本次教程也会对IQmath做个介绍并配套一个例子。
) K6 X0 ~5 C( H( r0 x, t3 M* _8 R' K" n$ R# q) p- W0 Y9 g5 i, N1 v- k
1.6   ARM DSP软件替代模拟器件的优势3 t3 F: u/ x  k7 v
我们日常生活中用到DSP的地方很多,以生活中的设备为例:
/ x) ?( C9 f4 ?8 p$ ]& X: V
6 H3 J  M3 t" O0 q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

* Z' k. r  r  r; m$ C- h4 Y* q0 }& q+ s$ _5 M# e. ^/ Z
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
9 r- D3 V0 K% g9 Q# M' S+ T& f
% X* F0 r6 G3 @7 \4 P  降低BOM成本: a$ p8 P1 U, T- V, p
将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。6 ~% r+ ^$ l- b, ~' ^) Q& J9 L" x

. _+ G* V* X+ R. t4 W  提高设计灵活性, T6 ]: a/ v+ q) m5 P3 h9 B3 J' P
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。" O# o5 n1 d& L8 N. ]( ^; Q9 [

/ B; E! c1 e0 L5 ^+ k7 n4 o; g- \  减少产品尺寸
% W; B+ @+ Y, `1 Y/ Y- P& G降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。4 [* a3 k0 T  @3 A( _
' b$ c/ j7 f3 R# t, I
  缩短设计周期时间
: E0 V5 q4 [( [( E  ]& P' w将模拟电路转换为软件有助于缩短设计周期。这有几个原因:" h/ a$ c  E3 c( N

) [5 D9 T1 j; q" K9 i0 j首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
5 z# g  M8 m7 O9 P5 A+ N  p% {其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
5 I" {# n3 M) p4 f( T+ B# ?! R# k1 @" N
  现场适应性0 @9 b0 ^' P! A+ [/ _
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。' [5 e7 i4 H, p: @! {6 o; V1 \
# m/ l- N  C* W# a. E
用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。0 O. j+ D" s8 D" V6 L2 I

+ u/ @, `! B0 C0 I% v1.7   Matlab安装2 u# U" e4 h. C9 y* V
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
) t6 G( W6 v: Y: l) U" Q/ N/ u
8 t: x+ a7 G6 p+ T1.8   总结
# M9 R! ?- S5 T5 U8 g* h/ u- A本期教程主要是做一些入门性的介绍,下期教程将开始实战。7 F# j* W& n. u. D# e
5 B. X5 U/ [( t( o( Z$ x5 Q6 I

# i$ B* j% H2 A) ?
& W% P( Y9 K! J! V, g
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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