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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示( @% d! c! O. c0 K" K
  关于学习方法问题,可以看附件章节A。
& ]5 m7 ]7 ^' k8 N4 A- v( X+ @  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。1 u$ n3 y: H5 r  \* H
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON( i7 l% e, s) l+ x* d, i
1.2   STM32H7的DSP功能介绍
6 {+ d4 ^% B2 M; u. @/ E, jSTM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
( l8 b9 W' o% l4 ]
  Q# C; E  p+ W; {4 I9 p
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
  k! p. D7 }( h5 p3 H
1 W  O) X$ x, y. {$ C
重点看如下两个设计单元:
  Q6 w1 y4 T6 P# i: o) L5 o$ T5 `* u' @7 C! Q7 N! E
  DSP
3 X5 {. H0 u" N" PDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。+ x$ W  d3 c2 f. J/ k- Z& j
: d) t# _& G- F! y3 |
  FPU
* |8 q& F6 y6 A/ k: y$ F' v7 qCortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。6 P" S: [. J+ _* U' _
9 h8 b7 P" c% l( R
下面是Cortex-M3,M4和M7的指令集爆炸图:
, K) Y8 M( k- Y* `# w8 e" \" |: r) d+ t
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
7 p( Y" v, r; _! i

! w2 v' c+ \% T! v通过这个图,我们可以了解到以下几点:
& G8 ?7 j; g% p% e9 o. F7 r3 o  p! N$ ]1 }8 w# o7 b4 `
  M4和M7系列有相同的DSP指令集。: H' B: ?3 m! a/ I9 T+ ~
  M7相比M4系列要多一些浮点指令集。; e5 b( W; ?3 F  J9 E( V
  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。: ^8 l+ R% l- ~

0 I3 H% I% c" P" e6 j# e& ^  ?7 r* Y
7 w/ N/ @, ]" s2 z! v  X/ G" n+ \不同M内核的DSP性能比较:
3 h8 f! O. r8 o7 b4 ^
% X, P6 I9 v0 M/ l! |! E
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
9 N* S6 N' ^0 n) V$ r( c6 C/ B

2 d* M8 S6 Y$ {  Cortex-M7内核的DSP性能最强。
; N' E1 `; x  R3 |# O  k  Cortex-M3,M4和M33是中等性能,其中M3最弱。
7 ]: z7 m, G9 a& ?- z7 k0 \  Cortex-M0,M0+和M23性能最弱。! U$ V6 |# r2 s3 f3 `) R3 v
% i+ h* v$ b8 A  K. v$ f* m
1.3   Cortex-M7内核的DSP和专业DSP的区别2 s! w% r: I3 d
M核的DSP处理单元与专业DSP的区别:
1 O2 q1 X0 d" g2 m  Y$ [( y  ~, h
8 v) y" e5 B5 z+ R6 O
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
$ u7 H" L0 Y  @. r+ V& |
; y% K' D- ?4 n' q& G' S, B
1.4   ARM提供的CMSIS-DSP库# v' b/ e" y8 f# f5 d. D2 o
为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:
+ B! ]# J: g8 L/ S+ w1 @* W
" ]% Y& Q  Z! _! b7 j4 H0 b  BasicMathFunctions, p- a4 G9 P# X3 @* V4 L4 x1 L
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:# g' O. U3 a" K, |0 x" L# e
* O0 s1 F  g' j& o9 T8 v5 Q# e
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- A' t( M( p. P% ^# P1 h6 S6 {. G- T0 w0 @
  FastMathFunctions2 n4 _8 u/ B9 s9 H# `: B
主要提供SIN,COS以及平方根SQRT的运算。7 G* v! {  U" Q4 k
- _& k3 D3 V0 _% ~$ v- c$ v) [
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

$ s' q+ |$ p5 M( z9 x5 ]- U# N. J0 \- p" J! u
  ComplexMathFunctions
  ~# R8 i8 ?& V$ ?2 C; n复杂数学运算,主要是向量,求模等运算。下面是部分API截图:7 R' s) ~' w1 p) h# x+ X/ N

) p8 r( t! \* ~
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
" N; l1 Z/ B- Q# T
: J2 V& P2 r. H9 w
  FilteringFunctions
" D5 C% }& I* m- F5 x主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:! |# z6 l& D9 g1 O% s0 B

: L: Y# a' T' w3 ?; _5 p- z, z
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
) r4 y1 R- W7 ]" E* G1 v
! P6 b5 C- b( _, N
  MatrixFunctions9 ^. w0 L7 S* q2 s( F7 R
主要是矩阵运算。
& K( j4 {1 O- u6 @4 S* y: T
. m4 m# @) M  k2 n: \4 o. z) D( |
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
* R$ M, n4 J* ?3 A" T

6 N) u6 Y* p9 m! ~; ^  TransformFunctions3 \: ?$ }) s% O7 }; ^7 |7 b8 e
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:; R1 S9 f. D) w7 O( Q' Y  q- h6 ~! x

7 S; R+ F7 G- g! T$ U1 n
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

2 E! T, V" w) n
! I( ]8 I3 I2 f9 `* _  ControllerFunctions
0 t( N+ [1 m# K& a4 e) [% K2 v* g* a控制功能,主要是PID控制函数和正余弦函数。
6 m# |7 o7 q2 w8 ]) k" D' B2 O3 Z) E9 W0 y% D6 w
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

3 O( d& _* O: {% W0 I* q; B
' |0 {; V4 f2 H, Y% O7 Q1 b  StatisticsFunctions9 I3 P- O" O# ?8 _+ k( R. `
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
* a# s# j6 Y8 k# t  I3 R$ E- N9 ]2 g: c& D& J
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

. M2 o( N0 ~" C$ A+ L! j5 M7 v# j# J* @0 X6 u. [
  SupportFunctions* S: ]+ O% L. Y0 _- F
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
& F  Z6 z; x& N( K; n0 o$ M$ ]
* @* Z8 p& A0 Z  [% N; {  ^
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
7 h# N5 u& t, [3 R2 v2 n

7 q8 B" M6 o7 |( [8 m9 }  CommonTables' \( K0 t! D# q' N, ]
arm_common_tables.c 文件提供位翻转或相关参数表。
% r: A0 d( \/ N# @
6 `/ A. w& h  J& X
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: N& d0 k4 ~; H1 ~9 x$ Z
2 Y0 i, D' W8 [4 ]+ s: Y; z8 y1.5   TI提供的32位定点DSP库IQmath
. `, }$ }# |1 F  n% r初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
! i. W: C; y: K" Z, D- W
2 V. d8 M7 Z" `所以本次教程也会对IQmath做个介绍并配套一个例子。- o( _0 A+ y! ]6 i* J

$ v; x' d+ @+ Z4 b8 w1.6   ARM DSP软件替代模拟器件的优势' [: f) K) U" G8 B! ], H. n
我们日常生活中用到DSP的地方很多,以生活中的设备为例:
) J/ X" B2 S2 V$ s- {1 z  y. p. {/ \& d+ X- H: t6 V- K6 B
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

8 r$ V, U7 G7 `8 a' v/ W6 B8 y+ {2 X" s; x0 c' O1 M( k4 B- e
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
; ~2 S2 i4 e2 _' i7 N5 C* U/ z' z" J3 l) d& _6 ?
  降低BOM成本
3 {* i2 d( [! K, S将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。, Y/ E2 }! ^+ S$ Y3 W; K
5 g5 h+ ~& g: H2 O3 K$ H- x7 [! s
  提高设计灵活性1 @" p0 I  q# N2 G; c
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
$ E! P8 s5 _) R1 C/ Q- G6 R$ B' r( P6 I2 |$ C, Q  b
  减少产品尺寸
# o! W! l7 x0 n4 ?5 e/ N1 d! ^降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。0 i" i; ?1 r! |9 f  {
2 G: p/ g, ~' o& ?
  缩短设计周期时间6 ~# o* o  l! s4 M: s4 }- `
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:$ C! b2 [1 d( }: L) x9 e2 G

$ n7 s& w- O5 Y0 Z5 W首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
6 W* j0 L. _* _! @( M6 x其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。& e* f0 P0 B& H+ `& B  R  N

8 u' d2 ^3 S) u/ R/ k2 r) h5 Z4 V( Q  现场适应性9 _% Z) O  ~% N' T" N1 @; Z! H
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
9 z, n. w% K+ H. h. T+ E
1 t1 q4 j- y# w, e用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
9 h# j; V$ d# T9 M% m3 g$ B3 h# m( c. x. {5 U2 A. K
1.7   Matlab安装' w6 l$ P. t! d  P% t; ~( g/ `
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。6 g1 u( |* q  p. V& [

7 l1 `: h" z; i3 L, [1 v1.8   总结
, _1 Q/ r/ w0 r0 `0 C3 ?本期教程主要是做一些入门性的介绍,下期教程将开始实战。, ]$ v* V1 t* S9 ?" B+ U# E- }! I, a) i
2 T2 n, A% h! f3 H) U. g

% m2 Q; ?4 Z8 A( u0 [! i- s. Z8 T( R' G# F" b
赞 收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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