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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示
" Q0 [* Q' }% J: \  关于学习方法问题,可以看附件章节A。
) j4 \9 h  ^5 x, a$ v  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。
6 r5 Q) A! D* w$ y5 P/ |1 ^  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
- |# k' B8 b: k3 J% O* d+ D1 J9 E1.2   STM32H7的DSP功能介绍2 ]; k2 ]1 ~/ U2 P) j; B0 C7 F0 s* m" c# p
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
/ Z' ?( S8 N- T8 i
( u* D" J! h3 _4 y- a! g" Q3 i; x3 X
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

7 V1 X# H5 P6 c
! Q( Q1 e) t6 Z) o重点看如下两个设计单元:: e# d# `( y% a" R  c$ [
  U* ?& v/ X# _
  DSP
& @$ G/ k4 M$ T- S3 C% Z; VDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。4 M* u% ^- x2 r
6 N1 l; F! S( G5 q
  FPU' F! j! ]4 |- j6 @  P* {" Y
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。  r/ w: v, G# l# p; t' }2 S

: ?3 s7 l4 g  q下面是Cortex-M3,M4和M7的指令集爆炸图:6 d1 R) {* s& e
, O/ F  R. n: V: ^1 ~! ~
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
: g% ]/ L( H" B5 w4 f+ d

. F7 K$ T3 c5 p9 M' y5 O/ B* b通过这个图,我们可以了解到以下几点:
  v9 @3 T8 v8 P: h4 `" M, `% s; n$ |9 o* G8 S
  M4和M7系列有相同的DSP指令集。
: U3 m8 |" X$ o: z3 l8 G$ s8 u3 v  M7相比M4系列要多一些浮点指令集。
2 S) Y+ }, X/ j/ r! v' x  _  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。0 O2 ~% l$ l+ H4 F; {# f2 X

, b. j: |: n3 n# D2 B& v
1 v9 S0 h( J* y! K. m不同M内核的DSP性能比较:
3 g9 Z: ]3 E& W2 C/ C2 ^" w$ Z+ D
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
% p' u) H1 D" b* K1 ^$ v

$ ]& i8 p, `/ T% M) W3 e  Cortex-M7内核的DSP性能最强。8 Q: a$ E, V. v% b& h0 b/ K
  Cortex-M3,M4和M33是中等性能,其中M3最弱。
) B( @+ j% Z- Q- w6 n  Cortex-M0,M0+和M23性能最弱。4 ^# E& D  p" p2 t/ L, H' r
  n5 m5 }7 K9 |! i9 b& I
1.3   Cortex-M7内核的DSP和专业DSP的区别2 n; }' R2 r7 T% k* l2 f: ]
M核的DSP处理单元与专业DSP的区别:! K- F% ]8 l& r" j# e& W

- B3 g1 d! e$ C
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

. `& Q$ S8 |$ O5 L* A1 H1 I/ `0 ?9 J/ \/ x
1.4   ARM提供的CMSIS-DSP库
+ O) ~' a; m% }$ u3 ?! B4 W; R为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:4 b. y) v, Y2 j
' `# L- h8 \" t7 g7 x2 h3 \
  BasicMathFunctions
8 ^3 j  \' y& V2 |1 C提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
4 A1 T& s& H1 g3 U1 T, e7 Z! x& |0 @: E+ j' }$ _
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
+ ?$ ]/ A8 i; ^7 M( u

. A/ {# K2 Z. e. V( j4 d: ]5 i6 v  FastMathFunctions* N; @/ m/ b. G) I* q( E5 Y1 e
主要提供SIN,COS以及平方根SQRT的运算。
! H! ^1 O1 E; T* D( {2 ?" W  P+ N/ k5 C
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
( \% z0 g- h& a3 ?

5 |$ q8 B& p4 W- ]  ComplexMathFunctions
: }* l3 `+ t# h# x. `, f# ?复杂数学运算,主要是向量,求模等运算。下面是部分API截图:0 [/ V1 q- S2 T: J, ?! I
% d" ?- v% u( j, L" K0 K; O
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

$ W1 y4 }; B. Q2 E8 ^4 z
8 N: a9 [. `% t  FilteringFunctions
& c! n6 F$ N7 H主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:
& E* C& B( y; s* g4 @. |8 l4 g# R  g5 K
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

) r' s( I! [9 E" t
7 M, {+ S6 }1 ~! w; u( I5 P2 k% d  MatrixFunctions
& t, }! D! m$ w$ j* ]5 V! J/ K* h主要是矩阵运算。# L* S# R6 g/ A; T
: E! C; @4 ^1 e
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

, `1 |0 Y+ f# i. o
6 b! t3 f4 k6 ]5 F5 c  TransformFunctions
* T3 l- y, Y. z) j* j, P  t1 y+ I变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
/ C8 j/ T$ D" b) r4 [2 I1 N7 r. ]5 ~" D( F
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

6 K) }4 }  I) T, [2 O# W. Y: E; v
  ControllerFunctions' s# N0 Q- `7 @! u' C3 W4 i
控制功能,主要是PID控制函数和正余弦函数。
( b8 l& E3 {' P1 X6 j
& y# N: S* l6 `/ M
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
4 B  g1 B; W, B3 Q4 G
. y' N  w; ^# o, K
  StatisticsFunctions
* g9 y; e! Q, u4 F8 I统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。; h" E+ C- w3 U$ Z$ i- ]; |
, z! Q- o8 q2 b1 e6 |
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
5 l& `2 c4 T/ M: R, P8 ~! [# X

/ R" f5 B; Q9 s& A& P" t  SupportFunctions
4 e5 m( `# p5 z5 x支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。4 g5 c, Q% h1 B2 _5 L

) I/ \; l3 ~. C- g* Z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: J! [8 O2 r& c$ d2 ?
  _8 z. q- r0 a8 L7 u# l  CommonTables
5 Q4 H. a1 ^8 S9 aarm_common_tables.c 文件提供位翻转或相关参数表。
5 _' E) J  r$ {9 V# L2 Y& h0 z( k
' ?* i' r/ f# u* K) p& E- D9 o$ v
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 ^# h3 I! |0 _+ e
0 n6 N& N% i! ?3 @( L$ Z
1.5   TI提供的32位定点DSP库IQmath! ^% q0 I1 `0 y( t
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。( A1 p6 b" B! [5 W) S

% p) ~+ x+ W% g# t- K所以本次教程也会对IQmath做个介绍并配套一个例子。
5 E1 C. t% ]% d* g+ r/ P4 e3 U* q7 M7 O' D! h2 O
1.6   ARM DSP软件替代模拟器件的优势
) n. J$ S9 C2 B我们日常生活中用到DSP的地方很多,以生活中的设备为例:4 A: U) t( H) R2 k' t1 U

% b7 P5 S- W+ W* ^
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
0 ~' f1 R3 y4 u+ p0 w( @5 [5 V6 o
& a# E9 r; e: T% E
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
$ L4 D; f2 j* T- ?; b
1 i5 U( Y) A  K# c+ {  降低BOM成本
* p+ E: Z! U3 F4 H' D" f将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。
% X% a. @6 p( D- @7 ^, W& `3 A' T1 h- b) P; a. |1 }& H
  提高设计灵活性
3 [2 X9 ]- @) `0 z; ?% i使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
; R+ U: W" k; x# H
* o* x$ i% d! K3 M& b  减少产品尺寸
; }: K; W, N. ?6 v4 P) b. E$ M降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。
+ k7 B4 l0 r( v4 A
7 q6 T+ }2 ?+ S$ e  缩短设计周期时间# L9 Z: r; ~! \1 R3 @' N4 ~' y6 J, _
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:' Z0 S+ R7 N! L' B' }
9 S2 z7 e4 s# V3 |* J$ A% _
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
# K, s# P3 Y, n* [其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
  p# t7 p  z- I9 f; ?" D  ?! _
) Z6 t' g) L4 e% d2 a  现场适应性
0 W2 E' l8 z9 N- B! X+ O: N在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
0 G  v& u- g7 b! a7 P  T, I0 j
: a6 q# k: S( L9 [用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
* K' P5 R+ T) ]( `- w9 r. `: V5 R  Z5 h, p- y  M5 P0 ~
1.7   Matlab安装
$ p! c0 y3 p% B$ O) [Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
3 b" W" `  w8 Y3 Q9 ?* ^: O) D# U9 l5 z) o" m; ~( f
1.8   总结
$ p! F+ M$ V- ^; j本期教程主要是做一些入门性的介绍,下期教程将开始实战。+ z6 G9 m' J: w; |3 r

. u! I" H6 T$ \" a0 R; p# u9 ?4 o* l
' J+ q1 M7 P9 j
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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