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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示" H0 i: _5 e3 E$ W
  关于学习方法问题,可以看附件章节A。0 M) _) @. V4 z+ j5 l" l
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。: p9 W- d% O$ r+ l2 j4 C& B' g
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
7 `; ]2 k; B4 W7 K1.2   STM32H7的DSP功能介绍: e4 A9 \* H, q" Q' y
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:) u6 n' \$ Y2 q, C9 r, w
, V! Q6 m0 |2 U, g5 A& _! u5 T, {  H
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
) B7 Q& J0 j, `+ Z
) M8 Z8 d" K) p; v( n
重点看如下两个设计单元:( O4 Z; Q; {+ {, s4 Z

  _" f; ]* B- _9 a/ e( C4 B4 i* E  DSP
$ b: ?' T2 u( t* P7 SDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。" j2 d; [" Y" t

- b& u5 }# x6 R$ L5 D  FPU' x  J$ c2 \5 X0 H% [% F) k
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。
: i8 M% t. o5 C2 ]+ f% h8 a+ k: R, c) e! x# w
下面是Cortex-M3,M4和M7的指令集爆炸图:9 G+ A9 y4 ]) Y# r$ `% v

! V  l% k0 i/ F9 m8 v% S9 A
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- E( U* \$ O* e( w0 X7 G
1 k# `: T. G4 F通过这个图,我们可以了解到以下几点:
" {4 q. i8 K9 r& P4 s: P1 G  K& [# J0 N4 L( y3 u4 ]$ a1 e
  M4和M7系列有相同的DSP指令集。+ h5 [7 V: E3 K" x7 r0 y
  M7相比M4系列要多一些浮点指令集。
# S1 K* v/ Q( W2 D5 s& s- A6 G  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
, M3 P* d: R, y! L: j
! N# @: ~/ ^. L: y; V2 t/ c' A# h) a$ O# D4 ]
不同M内核的DSP性能比较:) n3 C' u0 T3 b) @1 l
; s) {$ B1 \6 k$ E8 O) C- c3 v/ t) @
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 |7 J2 l! `+ Z, Z+ _

  P6 L7 d! V! h) V* f2 n  Cortex-M7内核的DSP性能最强。3 X1 g% \  [4 t) u9 N# ^$ C
  Cortex-M3,M4和M33是中等性能,其中M3最弱。
# q# I0 P0 r& n4 n) H' c% `  Cortex-M0,M0+和M23性能最弱。! a/ e. c) n) ]3 W

6 m  u7 [' I" E1 L! A1.3   Cortex-M7内核的DSP和专业DSP的区别" C9 x2 ?* q$ {" ~
M核的DSP处理单元与专业DSP的区别:
6 e' U' |" [- q* V% b$ U
" V4 v  h# X3 J" f8 u( u
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

' M6 m! Z' _0 J. j
; N& N0 a( m0 d" q1 \8 V1.4   ARM提供的CMSIS-DSP库
% o1 W$ Z4 T9 Y% l  P为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:" k/ x. h4 m! A' ]8 G" C" `4 z9 L4 D
2 R& A- B+ ~; Q& u: G' }
  BasicMathFunctions8 ], g9 r1 h! M7 `: F
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
3 y; ]) v1 r' P+ U9 T, u9 n, ~/ j
  B. ^. n) o' }# j
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

2 ?( d; ^5 U, {$ L# O  [! _# V& s
  FastMathFunctions
/ ~7 d8 x/ x/ Z主要提供SIN,COS以及平方根SQRT的运算。
6 o4 N3 T) g# N% j1 u; w# `6 @& v" J  q0 a' f1 J* v8 T) G% h7 {8 E
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

2 ]. f) W) S; g8 o; c
8 O4 g. {  u% v5 E* h% k* F0 V  ComplexMathFunctions
7 \7 ^. m/ o& u& x) ~: L复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
7 W' Q( X& n$ ^* K
# }# C2 ~' J, W- c  h' Z' H
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

1 j1 P7 G! ~1 X/ P
! B" {( h. ~# Y0 I0 N5 W; p; |  FilteringFunctions
% p7 [, M: f& d+ u. h主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:* g6 G' @0 ?8 c0 Q& o

1 O2 `4 i% k3 A, o% v
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

8 v, G. L: f+ R' f+ q0 ^5 S+ r9 i' k, c0 R
  MatrixFunctions: A9 ^9 l/ G' g9 g# W5 X% P( U
主要是矩阵运算。
3 _* ^1 D( Z9 g; l( @9 L9 S* P+ g2 V$ @% q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
' f- I3 ]& P3 i/ ~+ D
( F- @$ j5 x1 x) \; k3 U
  TransformFunctions
: p. A* G6 ]4 S- A: n0 D/ h+ I变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
) n) Z( [" x* I5 I' C: J" X' P6 q5 g& \& U) T6 c$ @0 G2 Z% {
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
. B1 S  A8 W! y8 ?; P& C
( `) y$ D* }* ^2 g& O! e! c! r
  ControllerFunctions4 P2 }) s3 N4 g3 D/ r1 [
控制功能,主要是PID控制函数和正余弦函数。1 F+ D; l. y/ Q3 s) I

. ~, Y4 l5 ^) i- q$ V' T7 {  S
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
! @& I/ r3 V& K! U+ a* Y
, ~' k9 T  `. j. q% N+ ^
  StatisticsFunctions
+ ?$ D1 P& q+ i$ \  {* Q1 X- [统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
' b. M/ M! Q2 Q7 n
/ p0 e) b/ I/ r8 a- m9 Z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
2 f7 n& s( K1 k
0 |8 ?: e. k% `" f4 A
  SupportFunctions; g8 C6 m1 B- w% \& ?, j- f% Q& [
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。& |+ B* ~/ G5 Q5 g9 @! A
$ J9 m3 |6 \" u- q+ b" v
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

, ~7 h4 u7 A6 N* e( t, l
7 [4 l1 H+ A8 K) r- e% W% `3 L  CommonTables
" H: f: @. p5 t3 U& Farm_common_tables.c 文件提供位翻转或相关参数表。
! Q; r! l) q  G4 ^  P$ W2 O7 f8 b: B6 y8 n: F/ J, u7 b
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 X6 `; p2 v/ Q
% _- D4 m( f9 j- w7 {
1.5   TI提供的32位定点DSP库IQmath5 ~7 Z5 r- e! w$ a7 i# r
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
9 E% E. C; g/ Y( R1 c4 z9 |
( t6 O* h* ~4 F) \& H2 P所以本次教程也会对IQmath做个介绍并配套一个例子。" b# Z+ d* W4 t. F. t1 {4 O( f

! {" D% T7 r8 m4 ^& `1.6   ARM DSP软件替代模拟器件的优势( W% \( {5 ~0 H! R
我们日常生活中用到DSP的地方很多,以生活中的设备为例:6 {* z5 p0 y- }  }

5 W5 t7 l- t5 k
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

1 @6 t8 d. ]. B; S9 d) d* K
, y  L5 g, e! U8 L- i) {' Z通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
9 t, `. o. I  B" {# K3 {
, q, |( H8 Y) ^- }: }  降低BOM成本
' a% @" [4 Z0 Y- H( |将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。4 g6 H% w. u' c
( j9 H& @5 i! g" W
  提高设计灵活性$ _) ^8 J: u: |* P8 x5 A
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。; }& w) V7 q4 ?) v

, L# h1 r: K" @. b1 `8 I4 a7 v0 p  减少产品尺寸
6 y0 u) G5 s- m; Y# L. M, a降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。
' B; T% F8 d2 r0 G* Q  l$ u
9 _$ U2 T( Y+ ~/ x* q$ j  缩短设计周期时间2 i8 l: p+ n4 H  ~* V8 D
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:- P0 h3 y! z2 d7 V4 P$ P
( A9 A# u& y7 B, U/ J9 O
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
7 h  e+ ^* R8 \2 m  t其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
9 z. c( e! k/ k1 Q! i3 R1 G& J% D- y% Y0 u8 g0 p  m
  现场适应性
" X2 R( u, {; R+ Y( q3 l6 c" [1 Q在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
4 v. i; h( J6 s0 F5 _' Z4 Z6 A2 w7 m( u
用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
4 P9 Z8 S* n) y- r# q' G) S( M) T' @3 M6 V& S) E
1.7   Matlab安装; g7 }7 V) o! j+ ]/ j
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。' _, h- _* C) |) ?& |" r0 ^8 {* O

( `! w. g1 \4 e1.8   总结% D* P) W' `4 E
本期教程主要是做一些入门性的介绍,下期教程将开始实战。3 J6 ~7 p$ ^; ?: l2 D) B9 L
: J8 ~. Q7 j# G# ]

. Z! F; M& r, N' \' w7 i1 e6 K: K  L& N: ?
收藏 评论0 发布时间:2021-12-28 21:00

举报

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