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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示' Y) _& A# M7 x8 r+ \7 D( ~. S
  关于学习方法问题,可以看附件章节A。
% r) s4 L: I  F; K1 `  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。" U- E7 a: }0 M2 o
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON4 v- \; u1 B6 N3 v; x
1.2   STM32H7的DSP功能介绍- F+ ]+ z* E: @- ~+ W7 o! K" g
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
  s# l7 b: O3 c! R2 X, C! g5 X, h% [$ {
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

* M1 M; H  k" z7 y0 w3 z/ {
2 ~. ?4 c0 Y" [: F9 ~4 a8 @重点看如下两个设计单元:
  E$ J+ V* @; @/ ?; D  |
: _: S9 p2 F7 T- K! `; [; R, ]  DSP
" q* }  K5 r! |* O  Y, b* E' wDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。- u6 s3 G  `: U! r

. ?- G- w* t# l' V  FPU' N* t0 T( \. j" i
Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。2 }7 g" q/ e' ~6 U$ _4 H1 d

  d# \; R2 J5 r8 i- A- x下面是Cortex-M3,M4和M7的指令集爆炸图:
- L. c; G* `( Y: {2 n& b
" ^% v$ G/ Q- p4 O: u4 K( e
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

7 e, j1 e$ ?* ]+ d
2 x2 K( p* ?' _, c通过这个图,我们可以了解到以下几点:
5 S2 S6 J* h1 A3 B! D
( T- t7 T9 A9 k+ _. S8 H- p& h  M4和M7系列有相同的DSP指令集。
1 u0 G6 z  C' g- Z( w6 p  M7相比M4系列要多一些浮点指令集。- ^! e1 Q, q/ g3 K
  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。6 K' O) V0 f. g- w7 |$ F8 q
3 Z# h7 _+ h* X8 `% Z9 e
2 @; U8 C3 b0 H- i9 Y- z9 @% N4 o5 u! L1 ]
不同M内核的DSP性能比较:$ O( E' H! n: {& a/ z4 q
! ]3 K$ _" b# r( p/ E- F& H
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
5 P  e7 N! b6 S
1 Q& m1 B6 d1 m" h) `
  Cortex-M7内核的DSP性能最强。, a% ~* d& c3 F; V! D
  Cortex-M3,M4和M33是中等性能,其中M3最弱。' s0 l3 D' V5 ^8 Q# M
  Cortex-M0,M0+和M23性能最弱。  ~9 @0 y+ E4 j4 a

/ J8 b0 b" O" D( w7 q8 Y0 s1.3   Cortex-M7内核的DSP和专业DSP的区别
5 T, B9 H9 y! [1 S& jM核的DSP处理单元与专业DSP的区别:& K( o  C, Y- {! U2 h

, g, Y4 z5 ^+ b% r( P0 h
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- e+ h) N+ `  @7 F5 d! V
9 \5 k  }* p* m5 R- ]4 V( U' n+ |1.4   ARM提供的CMSIS-DSP库
+ S# w) m0 f% k为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
# [! E% Y4 X8 K0 c0 z7 g9 P- S& b
+ {+ [! s( |* D! U& S8 t  BasicMathFunctions
+ A  ]& H% n) ~$ Q6 @提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:/ E: V4 X7 P5 s& |3 j7 c$ b
2 t5 `8 N9 m2 o  g$ ?
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

& T2 \! o8 S. h) L0 H2 h9 w# V3 b: r3 N; A
  FastMathFunctions
; o5 B/ z2 G# k$ M4 p主要提供SIN,COS以及平方根SQRT的运算。" O+ N0 o& G$ O6 _
# O- i9 f' i0 P2 |$ O# T
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

  D% S. K3 I  B  N  ~0 A
: }& u# H& p- Q  ComplexMathFunctions& g4 U3 N8 ^% B1 Y* Q4 {
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:0 w7 A+ H' N: k2 P: `
- b$ o, ^* V: P1 c5 O* E
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

; g$ [2 \7 d, e  b! h, L# v  h0 Z$ J* C4 U, k8 M
  FilteringFunctions
4 u; @5 T! A5 P1 d+ B* }主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:
( ]6 n4 X5 ?/ p# {
/ \: ]( o- v8 s6 Y/ e- w
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

  I+ [. s, }. K* @5 B
. t8 g0 P8 t: p7 {6 r0 S% W  MatrixFunctions( s; u& O/ g/ r: B1 ^5 A( s5 [
主要是矩阵运算。$ }1 ~  o! i% `$ ~) X

' `3 j' |4 ^/ I5 Y* u; V" R0 u, A% U
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

$ R9 i) d) Y9 x0 o+ v- n. |! @4 r0 z) `3 J: `' d9 I
  TransformFunctions7 Z9 u+ g+ v& l8 }+ e7 A( [1 t
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
% `( f/ A0 g1 g2 }; a, {3 b8 j. e9 q" ?+ i
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
" g+ ]' H1 ~, ~/ z' `9 o

8 z, N* h& l; N: S6 ]2 Z- F  ControllerFunctions
0 i5 _, H- B% K; [" \0 y. `, E控制功能,主要是PID控制函数和正余弦函数。
) W+ a5 ?: q: z$ c5 W
+ u& p9 [3 X2 j/ V# b" D
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

& O5 ]4 J% Z6 L7 G$ V
- s2 z. y! }2 R: y% q' k4 c  StatisticsFunctions/ `1 U# O% P. \8 |
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
6 v8 ?" r. ]: t* [& O+ P# G2 s# v
, m) A& d/ i% V  V0 r
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# k/ t/ \* V+ D- ]7 I
6 W/ o  u+ }- D  SupportFunctions6 f9 E! }! P8 p4 M* E- W  D
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
% ?9 z3 W; p* `7 \+ E2 V" a' u7 {9 @6 x( B! p
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

4 R' |7 i: O1 B. t* z" G5 L% C2 T' d2 g: P
  CommonTables) ]. z+ v9 i( f( H
arm_common_tables.c 文件提供位翻转或相关参数表。
. d, X: ~& t! s9 Q/ \( B8 v+ o( C% k, ^. G# K8 v; t" V# n
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
- x+ z  m7 B! q- x5 ~
2 \# Q7 |. d# r# e7 p
1.5   TI提供的32位定点DSP库IQmath8 k, _3 R/ j' U" @: a
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。9 c7 `( G3 e  h  z& r" [

% F# `6 s- q; ^( Y8 ?6 H' B6 ?所以本次教程也会对IQmath做个介绍并配套一个例子。8 p' A7 F8 x% h: N3 p1 L4 J
/ I& h/ ^* x+ n3 z! D
1.6   ARM DSP软件替代模拟器件的优势
% h. A/ H& H, N9 N+ M( P3 U& s我们日常生活中用到DSP的地方很多,以生活中的设备为例:9 w) h1 S3 `; w3 w8 `/ H
  J/ z) k! P5 s) R
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

9 C+ @; T# J: E) S& h2 p- _( {- D8 U9 `. v( W. {
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。6 |" A( o+ u8 n+ r$ F* {4 {) X7 w

7 M8 D* s* _& ~, `1 E  降低BOM成本
+ `5 \7 p6 P' g4 a$ o0 E将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。
6 I. \0 W7 M  g# F4 o! q6 d2 P8 U; @4 e5 W8 M: `( D: [6 }/ g7 U! v3 l
  提高设计灵活性
/ `$ \2 u: `* ^: I6 I: L; Y使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
- m( K6 e5 O2 `! {2 F5 u/ g+ w7 j. u, L) N) K
  减少产品尺寸" B1 I# d) j& n: l; B
降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。: B+ |  S4 g* t

/ w' a7 [7 S0 D1 c6 y- V2 u% O4 p  缩短设计周期时间
. S) p+ B1 [* {0 Z+ n将模拟电路转换为软件有助于缩短设计周期。这有几个原因:
/ D- {! G5 G& G4 _, ^+ }2 ]* ]. S8 ]* P, n: d+ |% n
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
1 V9 r( y; j" I  i8 j  j其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。: f1 G2 }2 Z9 ?4 @. U" P) u
% P+ Q' \& _, t6 n! b
  现场适应性' u5 R* ]- Y7 c* l0 P& j9 e8 A5 Q$ O
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。+ H, N9 F1 Y  p4 o' i- X7 ^
- B) c3 j7 z9 F# X7 G; `8 Y
用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。  z  U6 c, q( K
+ \+ e/ ~1 k+ G, m3 o% H" {2 u
1.7   Matlab安装$ R  ?+ k# c5 t
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
( E3 k. @$ B8 \" e, R+ G8 p$ _$ R5 c
1.8   总结
" [" g/ n- e8 W7 ?% `- x" t' l& e本期教程主要是做一些入门性的介绍,下期教程将开始实战。' Z* y  S' i1 f2 v
' D9 L9 P3 j8 ?

9 D7 K6 l" v/ P% v
, Y2 b2 y, s3 P- w% x8 s
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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