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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示1 M) A  s/ b  G" r
  关于学习方法问题,可以看附件章节A。
' `3 \9 M% Z" j9 B; p# w- Q  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。
. H# m3 y) W8 _: }" @% l  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
) t$ N/ S  }8 P; c% m. o1.2   STM32H7的DSP功能介绍' q+ I0 _% S" P& ?5 o/ {: M: i* y  p
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
7 Y# b3 x8 A: T* V1 ~" e. y; w  J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
8 D8 _7 s- y6 h) j1 ^" F
: u! N, F2 b4 I- j, ^  |
重点看如下两个设计单元:
* I, o$ f& N/ a& v! P' s0 ~+ c5 P% S* l. n
  DSP
1 V% U2 \0 E, EDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。8 U8 @7 m( C) D8 s. L
- c( b9 g7 s/ m2 t" z; R0 D( |
  FPU. K) ~) a1 u# j9 W/ A4 Q$ Y
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。
6 y3 V" T: k7 O% p3 d8 G  L& z$ N) _8 p. v# Q% B4 E
下面是Cortex-M3,M4和M7的指令集爆炸图:
) O2 `2 t5 d6 R  j5 h
5 e# S; r) i  w
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

3 q1 U$ T3 \+ d+ Q: j$ w3 b! p# ]6 t8 {  {) `# I
通过这个图,我们可以了解到以下几点:4 y9 v5 }7 P; \. k3 g
8 f; H5 R7 m! |/ ^
  M4和M7系列有相同的DSP指令集。( ~/ Z) h6 \+ W5 w% e  x
  M7相比M4系列要多一些浮点指令集。
/ M; R' Y. ~" z# ~  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。1 f+ [3 P# ~3 I- }$ B- u# R! B

' F* |- E& m- I9 f; |' k2 t$ a6 {! i% \4 J; y* p" r* E
不同M内核的DSP性能比较:
7 p) U* h$ e$ q1 F; s' J# O9 |+ d: J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
7 ~1 |2 e: n+ p; z  a

# W/ b7 `0 ?! `6 P9 g" \- I. V  Cortex-M7内核的DSP性能最强。
: M. M1 ]# f) |- s1 o; u' ]* K% p  Cortex-M3,M4和M33是中等性能,其中M3最弱。
0 h5 X7 [6 x7 ^  Cortex-M0,M0+和M23性能最弱。; I+ e2 J* b1 _7 y& x# K
0 G) D; \* L1 z: Q
1.3   Cortex-M7内核的DSP和专业DSP的区别( _; w  N( M8 ~9 t7 |
M核的DSP处理单元与专业DSP的区别:/ N" U0 G7 d( N7 M, F

; C# H  a2 H/ ]' r' k
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

+ C- `# o3 u  f- P4 d* _' m( O
5 R6 q, }& F) }0 p, b; ]: \, @& i1.4   ARM提供的CMSIS-DSP库
, `: }. A* N! h- Q* b3 k2 H为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
* }+ g# u5 E8 ~$ W- i* q# }1 ]! {) y4 W) h0 a
  BasicMathFunctions
5 T# P2 o& }* T  I+ p% b0 H' B提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:6 N# x1 r6 Z' a

( k) E3 k  ?) m, _7 P. a, |
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

1 W1 j& s9 e, b* x0 z
6 _( ?# d5 |; T: e- \  FastMathFunctions
& y% f0 S: X3 y9 q5 G主要提供SIN,COS以及平方根SQRT的运算。$ H* U/ ~7 m( X, G

' }  `  i( {; t' d+ k/ B
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- W. x  Z4 j, C% r8 q/ e' n5 t( t7 M2 H, o: Y$ x' J1 p
  ComplexMathFunctions
  @( L' o/ L' X8 a0 i( N0 }复杂数学运算,主要是向量,求模等运算。下面是部分API截图:( `$ d* o5 [6 f$ m. {( U+ w- I

. N# V0 ^. F( ], B6 {* P
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

1 Y$ s' j% F( t  s5 K; H# d' s0 w7 d7 D) U
  FilteringFunctions) G# L) g3 V9 F# {  v) B& ]
主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:& k8 k/ d) \2 ?$ Z! }
% Z& @6 P2 G4 {$ g
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
% m  {! R" B3 C* t3 Y

1 F+ r6 p# j% T' n  MatrixFunctions% ?+ [' l4 c9 z7 F. T7 X5 X
主要是矩阵运算。+ ~) F% o$ _4 m& B7 n6 T

% F8 t9 Y/ P$ ~" ~6 D: D$ A8 F
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
4 l) X( Z) a) \! o4 `' \# o
' M  m; u; O, _4 p' I1 a% e
  TransformFunctions4 b  Q  O& R& |3 X' X0 j% l+ V
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
/ M- W3 n  n# z1 c' d) K. {( D; T8 J$ E2 A0 o; m7 R* t
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
/ N" X: k1 T6 [& ?, [
/ A' B( @/ _% {. }2 N; c6 C  }4 g' m
  ControllerFunctions) ]( X+ f4 U7 I# g. O! z  D
控制功能,主要是PID控制函数和正余弦函数。/ X/ S; C" s1 r0 ?  ^# m

! D9 I+ M$ \/ a7 b# I
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

9 s  t1 p: ~" G1 [3 j0 ]$ w. t, J+ {: e
  StatisticsFunctions
8 S' M* I* [  a0 ?  h统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。3 J7 E/ J" R+ s3 |
; M8 L$ S: B; C
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

, l7 e# h- A( i+ a# X+ u7 r2 t% p+ z
% Z8 e6 @( I. a) L5 y& `3 Q, C  SupportFunctions
3 }. x0 Q8 d9 H% p& b1 A支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。, i: ?4 b, U, |' Z0 F) |; Y% X
- E7 k+ Q( n( R$ A7 u: K% M/ R
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

/ M0 O$ l( t3 ~( c, B: e( s) R0 O) Q2 t: V7 U. x0 \
  CommonTables3 q1 L& N( r, Y  {% l( R
arm_common_tables.c 文件提供位翻转或相关参数表。2 J1 p) p# B& E& W& x
4 v4 y! Q5 K/ m! B* Q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

+ H- p& ~5 o, l8 m& z# Z. c+ ]  b4 p8 S/ U  B( E" Q0 T5 I/ v0 L! f
1.5   TI提供的32位定点DSP库IQmath
+ U1 m$ j+ ]2 F, q$ y2 h初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
, f. h( G$ I1 E- w% d( H* O. J& C! @
) A$ W8 j3 q( V2 u1 X  j所以本次教程也会对IQmath做个介绍并配套一个例子。; K9 ^0 }: q8 N/ N5 r4 o
% ?3 z9 M  ?) q
1.6   ARM DSP软件替代模拟器件的优势
5 |- H9 V7 W0 u) P- U我们日常生活中用到DSP的地方很多,以生活中的设备为例:
1 l; L7 o6 w9 H. n; q& e/ L2 D8 l: M+ |
+ l3 A7 Y+ x) e' |5 t5 t
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
; Q4 M' I: A0 p  w1 C

) R: i) K# C8 B5 A8 J" M; }* C通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
5 b3 C/ I. A/ J5 m/ m/ f
8 G5 q* V1 ^8 @) S4 ~* t$ \3 Z  降低BOM成本
( P0 g7 \6 y+ z+ Z8 _$ v8 q" o5 u将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。
4 ~% Z' I% N: W, f1 e$ J+ o4 a+ X, w* g4 ~
  提高设计灵活性& K) O, ^1 B- U) s! [- }
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。6 U% n/ ~& F$ y1 J" R  e8 }

' g( p# N+ X$ c2 L$ l) S  减少产品尺寸& Q& Y! w$ t  Z' Y5 r6 O
降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。+ H$ ^1 \) ~6 J7 o3 o

4 A4 ^5 o/ A( ]' g, y5 j  缩短设计周期时间. Y: e1 e8 ]8 ]% n8 W6 F/ L5 S
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:
; }" B# }5 p3 K0 y5 g" t) B' M- ~
9 w' ~9 {7 P' w/ J( O首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
! b4 ?4 u& ]6 z: H2 A其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。4 e7 `) D1 l) Y+ t) e
' O  Z% A2 h; z; Y2 Q
  现场适应性
& G2 Z' k( r3 _8 `5 D  _在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。! F( g- c, V& v& D. s( S

3 }1 H+ d* t7 m: B6 Q用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
$ v6 D# ?: X8 S* {
0 y! C5 G3 w; y1.7   Matlab安装+ W/ g  [: |2 v& |
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。, N3 O; j6 z4 B. _  k" `

- |( q! d0 a% a1.8   总结% q- P: }) ~7 j/ t+ ^
本期教程主要是做一些入门性的介绍,下期教程将开始实战。
! X. M' r4 B( q) C6 ]! J$ M4 k2 ~7 W$ N' @7 [) f# u5 z$ D+ |

$ N8 M. R  d+ d4 o( o. t
# P! f8 j: K4 ~, d
赞 收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版