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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示
6 _- Z. A9 u- }  关于学习方法问题,可以看附件章节A。! ?2 C% _2 Z! j$ V' T
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。: ^1 _# ^" W# R
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON# V! t- A+ [/ Q& {  m0 Q
1.2   STM32H7的DSP功能介绍
5 L3 W8 p% R' d  w6 u' bSTM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:( [9 d6 \( X8 x" B! x

3 W1 P. r2 O1 H. i4 t0 x
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
+ ]/ `9 q$ G4 B. o
2 E9 `, y) a! {+ H
重点看如下两个设计单元:( c# Z* x! U- s, P+ c( ^) |
' w- X; Z1 z* Y0 l3 C+ U$ r
  DSP
1 |6 q" ]& A1 l- LDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。2 ~' ^8 m% s& q1 r! s

+ m. i# D0 j' Z6 A" a6 k7 H  FPU
9 B( ^1 H/ b" j) wCortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。5 u' q0 [  H, k. l

6 G' V: r& o1 i' i( u$ N下面是Cortex-M3,M4和M7的指令集爆炸图:2 @( ]# M: W4 f9 U% |
' e3 I3 U6 E7 u, g2 W% Q0 B- k
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

/ w( X  J2 |7 _6 u) D# _7 Z5 f! w& K% C& Z
通过这个图,我们可以了解到以下几点:
0 r& _: L& _1 T% r" c& ]
# Z1 @0 j5 `$ L% U$ ]* [" _( X  M4和M7系列有相同的DSP指令集。
8 a9 m) s5 w/ q6 v! i  M7相比M4系列要多一些浮点指令集。  b  ]1 }0 ^7 |! k
  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
+ y* ~# E9 ~" o$ f7 j5 m. r4 `
+ N1 x! {9 t1 V1 O2 X
1 P/ O2 _( ]$ D9 E0 c不同M内核的DSP性能比较:7 i$ N% W, k# H- }6 ~0 m
( s- V2 \/ I  [: v- {3 S
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

; a5 Y  G& N* l: U- K' b- P# j: [+ l  `) u9 Q$ x8 c
  Cortex-M7内核的DSP性能最强。4 r2 k, W8 n( O+ Q* P8 m' K1 k" U
  Cortex-M3,M4和M33是中等性能,其中M3最弱。  C1 D. C0 Z% O% I8 X3 W# `
  Cortex-M0,M0+和M23性能最弱。3 p7 z" u1 T; d9 V
* C) r# g- j* v
1.3   Cortex-M7内核的DSP和专业DSP的区别
. e6 Z. E) l! l: Q. mM核的DSP处理单元与专业DSP的区别:* u5 E8 U6 A3 l' B, r" E! z

' i, n# @. r. _5 h
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- o2 E. u# Z/ l9 G5 T
: N4 |& @: J3 J- O9 w8 `# q1.4   ARM提供的CMSIS-DSP库& Q7 L" X# x5 o" Z: o: N8 T
为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:& f' m9 X) l, y& ?4 ^+ \0 F& [
' @) n! ]7 f% L+ m' |: Q7 w
  BasicMathFunctions, ~0 w# \, @; H& @; U5 D
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
5 q" u5 Q- w/ T5 \0 M' ^; {
( S2 |$ e- A( Q, c8 {% z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 W% q1 \4 y" Z" M! E$ a) n0 i2 h, c8 e& T
  FastMathFunctions2 T$ g- U! ^4 z
主要提供SIN,COS以及平方根SQRT的运算。$ ?6 R3 S3 d& j' f7 r! H7 Y; x

" R3 Q) p9 p4 _
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
5 }% D3 I' n% [9 Q' Y# ^3 s

) m& l* s1 t7 k/ ]  ComplexMathFunctions! i) A) N% Q8 h4 M: W$ y" f
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
2 p( C, s* z/ l7 N0 w. D% y
- ~' l2 P7 r6 V/ @
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 y, F5 q9 Z) C
. F5 h8 Y- m  t$ M- F; W: T
  FilteringFunctions
8 U5 p( }  v8 {; ~# F; \4 m主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:' c. Q! j3 e5 l( `% o, j
, \9 V: W- R6 M1 D' Z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

  ?0 p, z4 z* f& w
: }- X) d5 d" ^. h+ c; i2 s  MatrixFunctions& z. |' v* b1 T# v& a
主要是矩阵运算。6 l0 n( ]+ k) g# a

0 m: W( q1 |* b
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 O" O% O3 P! \! q7 S
6 M" R5 M. q1 Y1 K1 ?$ l! W  TransformFunctions
7 v" y# V0 u& X* {5 \变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:' x; Z. m" P9 h8 Q! g; k

/ N9 b' z1 o% d- B5 K3 `- }$ n
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

+ O2 X& Y* J, B2 l0 i" n! ^
4 |9 \  J! i8 q8 w% k% A  ControllerFunctions/ V" n, _4 N& X
控制功能,主要是PID控制函数和正余弦函数。/ r" n% D! [" j7 a4 B. d  `/ U
/ h* N6 C, I, }* Z$ A8 L5 Y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

3 p5 Z7 g6 h) J4 g& Y
: z5 K& R' d8 E* D9 h9 C  StatisticsFunctions2 p! m; m7 c' I- @2 k( G
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
% N& @! a5 e! G8 t4 ?" F0 d% w, b) J
3 j) I" B  X9 Z" q, P0 @! U2 t
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
$ ^! h0 p3 z3 s6 Z2 g

* W! S" R" X' R$ W  SupportFunctions) d% F6 w, ^1 r- J% _
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
( R# d* n" H" _; E( y
% y4 N# O$ ?/ F( J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

  F0 I1 d$ n2 K, E! w: O, P( ?) \4 T& C3 O& Y9 I
  CommonTables
$ ~" r3 O0 ]( c7 Yarm_common_tables.c 文件提供位翻转或相关参数表。
2 t# N& \& ^( A2 {6 b. @
6 j1 Z* `. d9 |" l1 y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

+ O( J, u( |7 ?# p, P& c2 H& V. k! U
1.5   TI提供的32位定点DSP库IQmath! h2 g5 O: M3 ^& x2 o# M5 _
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。+ Y8 R( z# r4 u" j4 H0 |
* X% N: \5 i: [! ^+ N
所以本次教程也会对IQmath做个介绍并配套一个例子。
; w6 \- e/ e7 r  U
5 \+ X4 z) S7 g2 v: E* k1.6   ARM DSP软件替代模拟器件的优势2 m' b/ h5 L7 ^$ Z# n* |
我们日常生活中用到DSP的地方很多,以生活中的设备为例:* P, [; Q! v- }* x4 s1 _2 s" }7 X

5 [6 [& i$ K2 x. ]& N
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

! Q; m1 Q* H9 v8 v! B5 a( P: U3 O, V- G: K$ v) X: B
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。# f* l0 k. s3 x$ b

1 e* _1 `% q- |1 k' U  降低BOM成本
- Y, I( j1 O! _: J& e  b  w将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。( d& U' I0 Y( H

" E, c1 Y/ [% W  提高设计灵活性
+ `0 I- J/ N: F! x+ C使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
( a) Q- ^1 {/ s" u; H, M( I
' s- O: O7 D6 ^5 p/ Y  减少产品尺寸
% }% N4 e& |; o降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。: u) T" d; d3 `  ?) F! M1 ~3 W8 x& A
% R$ r$ X$ i% x0 ^
  缩短设计周期时间  b$ D6 Z; n: M2 F4 p
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:$ [; h2 \5 G! D4 e7 b, f
3 g6 U- g( @& _0 ^) F( q3 k  {
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
$ ^8 g4 K2 P* t) I* j" _+ F8 l( }& D4 D* P其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
# k* `4 t1 @: T& x6 A6 I
7 P, i: T' y6 x# v" X6 i- N  现场适应性8 e+ r0 r, a2 f1 ]9 ~
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。6 h: h2 p; _( n) t2 v3 t3 Y

. Q  x7 j' x( A' S( k& m用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
. o9 i7 F* T' [8 h2 A/ U6 I, ~' e+ K9 s
1.7   Matlab安装" H& Z1 x, I4 g$ ]  r" \5 Z
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。  w* e: @; K: }5 R* h6 n6 f0 M5 d; O

: }- S/ `0 l9 E4 ]/ \! o+ W1.8   总结
6 ^0 R* u% U2 \: W0 `, p7 b" A本期教程主要是做一些入门性的介绍,下期教程将开始实战。
5 F) q( h5 j; ^+ f; V3 [: K* p, t0 c" U0 p
3 [8 r" R$ W1 R- M5 ?7 Y- B

# u8 e5 H% m- @+ ^  O
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版