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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示6 q" h* i; R" b3 B7 I" m0 Z+ Y4 L, ~
  关于学习方法问题,可以看附件章节A。% G  @% X. ~5 d2 S% Q; T
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。
4 N, v) ]! m' c3 e# g  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON; ?( v0 q3 f8 b( l- _
1.2   STM32H7的DSP功能介绍
- h5 w! S2 H2 X, m, d; DSTM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
2 b. t* `% D0 R( H1 C+ V; D; x/ b1 ^) ~$ ]- g' i8 e
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# n$ x) n1 S5 \, q3 L& l. \3 O& X3 `! w: A
重点看如下两个设计单元:
/ G% [/ H# W1 O  N3 ^( E4 y
* J6 n1 M+ q7 G1 U) Q9 X6 ~  DSP: j! y9 n3 ?: Z) `) S3 {
DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。
3 S" Y) Y* r7 ^) R# W% x) i$ Q) ^" P" h. [
  FPU
" G! \2 L0 p1 k+ U8 pCortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。
0 g( ?6 K; \, S" O5 z
8 v& L! g( n6 m1 R' t# v' N下面是Cortex-M3,M4和M7的指令集爆炸图:/ ~! a  Y+ E  Z" Q2 h2 c/ M& ?

" C- n3 m- }, N' D. h' Y* @( K
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
  f8 A" h+ w( ^& _

6 n7 i! ]+ L, D5 _' Z( `: g通过这个图,我们可以了解到以下几点:
* d( k  m8 W1 ~/ P( e/ j! ^  e1 u# k& U. w
  M4和M7系列有相同的DSP指令集。
0 w! H! @6 d: E  M7相比M4系列要多一些浮点指令集。
  u. f# x) Y( o+ k  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
7 t3 w# H# N9 o6 U8 G" e# g1 r5 O/ Z: g; m* v' `# y, c4 n- H- h7 K

3 \$ ?% X0 g4 [) S1 p6 U0 I. s. _0 a不同M内核的DSP性能比较:3 A% z: `: Y$ p$ h* A/ W1 Y0 Z9 _
9 M3 x; ]7 H2 Y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
0 g" g& ^+ v0 D2 h: t( b
& |* z, v& _8 X2 k
  Cortex-M7内核的DSP性能最强。9 G& v( \: ^$ o: K/ ]0 B9 U1 z" a
  Cortex-M3,M4和M33是中等性能,其中M3最弱。9 r' `/ j1 g) Q# u! p* B
  Cortex-M0,M0+和M23性能最弱。+ ^! f/ w5 T+ m8 {1 S' m/ M5 I

/ o. V8 \6 X, t/ O2 W  t4 c1.3   Cortex-M7内核的DSP和专业DSP的区别' F" a6 M9 K, b7 ]3 t! G; e
M核的DSP处理单元与专业DSP的区别:" ]" o- @4 l: w: ^3 |4 c
- f- t6 b: @; `0 U; q6 f( y; t$ P
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
+ S$ L& i7 ], B& f% H* g1 C
; |: y$ J# l. }. X6 b+ {
1.4   ARM提供的CMSIS-DSP库( K. Y9 H8 f6 \- |' F2 L
为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:. }+ z  G, P; E

7 a# Q& s2 L0 W+ C  BasicMathFunctions
: @3 i  j. f" e0 |1 U+ f提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
2 b* D% d' h/ L5 m; @* ~# B! k" Y) \# a) O% K. _
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

2 |: z' ]- m" ?  V6 {- V9 H4 q% m/ D" r5 C* o/ K% M6 I2 l% u
  FastMathFunctions& w/ X% d5 o( K$ x2 X) n
主要提供SIN,COS以及平方根SQRT的运算。2 @3 ]6 }* L; K, V! c% P

/ @9 {' b* N$ t, A
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

& x. j+ Q4 B9 m
" }0 g) C6 L4 R# l. _  ComplexMathFunctions/ s& d) x# h, C5 p  m, H
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
, ~; P3 h$ }& m) [9 v: P
, k+ r1 C; H% V% B8 U
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
& H; U8 r8 b) c) t+ o
& j, ?8 x6 `/ m0 Y
  FilteringFunctions; s5 T) f; ~- ]  T3 |
主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:
; W: c- \$ \; v, y6 Y* Q1 @( E7 z" ]
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
; S( j: d! V+ c# O; x0 S* P
$ G: Z: M* [. v* r
  MatrixFunctions% S- h# M2 m3 G4 U$ ]7 v. u
主要是矩阵运算。1 t/ w0 A+ Z" c1 }7 k
$ {3 z3 P, c- c) I
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 t+ ~) e# i  i+ [
  f0 o# ?. J3 P/ j0 D9 s  TransformFunctions4 l4 Z" z4 e/ r) S- H: R5 j" f
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:' h4 j5 ~4 d% B4 i+ I

- _3 H8 g/ @4 _9 A& `1 y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
5 B4 C+ W8 k' `8 b

+ i8 ?9 \1 s& h/ Y% _+ i4 C# h  ControllerFunctions
+ y& b7 b' X: x/ V- L+ f控制功能,主要是PID控制函数和正余弦函数。2 _) W$ `6 Q9 ?: j6 Z9 {+ I, w6 {" l
$ W* @) K8 S& ]- z, C/ L
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

/ I' Q) S2 p4 W7 x0 J
/ |. J0 H: L" r9 d# n, v& y  StatisticsFunctions
2 o. X6 T5 h  ^' |" d统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。
( J$ Y1 ?+ F+ X0 P" i0 y3 s
& R( j( }! O# J$ [0 ?0 {/ b
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- N! e9 S' A8 ]4 U8 W0 E+ i7 B+ b, t- I8 Q
  SupportFunctions
$ |& z0 z" i: O7 A' [$ \支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
" @8 v  W' v& z4 W$ G
; c, a8 D. @: q/ q- L
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

. h% g$ t; {  i& h
9 B/ A1 y9 I& v& s6 w7 x  CommonTables7 V7 M4 K# D/ I( c+ ^
arm_common_tables.c 文件提供位翻转或相关参数表。
& _5 {* I& D8 R2 l
$ W" Z4 g0 k& W
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 m7 a& [: {/ C0 c* I. k! a

6 O4 h2 z2 E# m3 `1.5   TI提供的32位定点DSP库IQmath9 v/ z1 c8 V0 {4 R, c, L
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。  y! G4 Y2 B: T6 E/ M' i3 \6 {* w
5 _/ C' p* H3 ~! ?6 g. }
所以本次教程也会对IQmath做个介绍并配套一个例子。% F" j2 C% f2 s' L: K
# J, {6 {9 ~0 b
1.6   ARM DSP软件替代模拟器件的优势+ b( d0 H- o! g: p
我们日常生活中用到DSP的地方很多,以生活中的设备为例:/ G' d( o0 L* \3 L7 F1 g

  U9 b+ Q4 T1 g9 f: i4 `* D
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

& z; G1 i( j' P  Y. N# z/ z+ m& ^/ n6 s0 v  s
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。1 z7 y$ E- c+ s/ [2 t: b1 V
+ A* G" {6 Y9 B: B( g
  降低BOM成本
9 \: |/ M  F* J+ I9 ~将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。" C: @6 t% _' ]. W( U4 {
. h% O. i/ B9 o. E$ i& ?$ f) }
  提高设计灵活性5 n5 V- \$ m1 b! d7 O( u# o' v6 d; O" t
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
. ?3 p* J' B' f+ r
  i6 N3 R3 _8 d; g+ n9 f  减少产品尺寸
# r% c) I8 @+ A$ G# x1 F% u1 C) p7 [降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。8 w4 d+ Z$ ?5 A- V: L+ J1 G
8 H4 o# A$ C& Y* E, V) ], h! ]: G* a% g
  缩短设计周期时间) ]0 t, q9 F% V5 [4 ~! I$ o
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:
3 u5 u0 l' _5 V% A" N+ C/ s; Q4 d4 O- S  @
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
# q/ E( p8 B4 ]- `- D* s# m其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。
1 e+ f  r8 k7 v, S' ^% Q1 a6 b2 N& J0 [( W
  现场适应性
: V, m, w- k: d: ^5 C6 k在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
4 O6 |8 \4 f. d- K" c1 p: z9 f) o" l( Y5 ?
用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。; N; R) [2 n) A" E% B# U( ~2 Z  n

3 P. a' Z8 \( b4 t3 @5 Z  i& P- N" ^1.7   Matlab安装* W& T6 }) Q' w5 E
Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
/ Z: a7 A* E: r0 Q: \. N7 J' j6 q# m6 R" I- R# U* H7 T# P  }
1.8   总结
2 R) f  j; |( G1 o9 X: H本期教程主要是做一些入门性的介绍,下期教程将开始实战。
  Z' |! H  ?" z2 B) r, E+ h
& M$ y# {: D2 N; {
5 }+ v/ L. f/ N5 b! k  I9 m0 v' u. W" s5 ]' I* O( X. K
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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