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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示5 ^. _5 S/ o$ x
  关于学习方法问题,可以看附件章节A。' r: X3 d# f# f
  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。
. {7 e- i0 u7 I9 i; J: Z  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
* \+ t! q7 [. L/ ?6 E3 P1.2   STM32H7的DSP功能介绍6 ]6 S3 J9 h0 C# V8 u; k, B4 i5 B+ J
STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
4 N# N% V2 A0 Z! \3 N/ ?& u; Y0 G4 p8 H' n, p
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
: P! J: s# B- K- p5 y, d+ P

% `( M% y1 ]0 r( J) v重点看如下两个设计单元:
4 }- G9 O( N  N) c) d! e# l- i2 C/ l' b
  DSP
! a4 G& b& L& _8 M6 X3 A% Q7 CDSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。/ O+ H2 |) b1 E' ]1 Y
3 }+ @* N& f6 f- o' M+ e/ o
  FPU
# t5 X8 b8 S/ k" T1 @Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。8 C# @2 I6 d( F$ P
+ n* u. R$ C" v1 J5 ?6 \  g' v
下面是Cortex-M3,M4和M7的指令集爆炸图:' h0 \6 [- x& {2 q, `3 ]2 D
) J/ v" f& [4 S1 O) r3 W- ^
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 w* ?& k, H# F- ?
0 h: ?6 c$ r+ {4 t通过这个图,我们可以了解到以下几点:4 J8 c4 W4 Q/ n1 n5 ^

3 ^, b+ V# @' |% u$ w  s9 c8 ^  M4和M7系列有相同的DSP指令集。
9 j# i% L3 y# Q5 |. h1 Z# j  M7相比M4系列要多一些浮点指令集。
" c0 s/ Z3 ]0 o  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
* a4 _2 `( j" ]9 H2 s  _3 U+ I1 \9 ]# S8 W8 v
* }( ~8 H  j+ f+ |
不同M内核的DSP性能比较:
' B) E6 K' V+ }/ f6 e2 t# u+ _- W* X% s) w9 z, Q
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
/ ^, |0 c$ Y# M) e
. h5 r$ f4 Q' K
  Cortex-M7内核的DSP性能最强。; Q: |: f* D" [( d: K
  Cortex-M3,M4和M33是中等性能,其中M3最弱。9 Q$ w4 @4 m# {9 x( v8 D# b5 A
  Cortex-M0,M0+和M23性能最弱。# a* ~* N# m' q/ I5 G7 D% P

; o+ z, ~9 F. ]0 d& q1.3   Cortex-M7内核的DSP和专业DSP的区别
3 X; k* e& v7 t) k2 D( e! ZM核的DSP处理单元与专业DSP的区别:, t9 J0 e' |0 O2 L" n" q
8 Q4 _' u$ Q) G% N. }" \3 y5 y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 k$ i: _% d; O& d  d9 S  J+ }9 \( |. u3 ~
1.4   ARM提供的CMSIS-DSP库
5 d& H" }% ~: G5 D为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:6 _* w1 H, o' v

; K9 B+ b  X+ {4 c5 c  BasicMathFunctions
) d5 T0 g# o* ~7 X提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
% I7 C7 ?+ o6 J. d3 E# B7 k1 [
, L' x# O5 ~$ o  X( ^: h8 b
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

) a7 s2 r0 }9 e' M1 N7 k# p" r
( |3 r- I) A6 k& B+ G0 G  FastMathFunctions7 V" k7 [, e5 ~) u
主要提供SIN,COS以及平方根SQRT的运算。3 u- T8 W9 r. H! l! M( Q: ~

, z# X5 D) ~) A1 M5 M" f* s1 p2 A
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 t3 t9 y  `* w+ \$ C" F/ I4 }5 ^0 m

7 Z3 P1 }; I/ @5 l- v  ComplexMathFunctions
4 G0 f3 c2 N4 i4 i复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
8 {3 _/ ^4 Z1 f; W7 g' n: Y; f" T
8 Y3 Y3 U! S0 C6 B% m
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

: [6 x& v; D3 ~' z( d  L
9 e, \9 a0 D" g& N' z  FilteringFunctions
  g) s0 ~8 s& h" A( b$ z主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:! C) o6 v/ i; G6 b0 @6 \
5 ^+ ~4 B3 j  b! N: ?1 p6 B
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
9 b  F2 A( f* N3 h( G
- f: m4 H& _% m. c1 W5 ~- `
  MatrixFunctions
8 f2 T9 p, _' H6 T$ z3 ^主要是矩阵运算。* E) `1 R( `! I& G9 C/ o) J

& H4 E0 ]! {: c( }' S+ b) R
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
# P% R- O$ K& w8 e0 ~
8 N& I) b: f8 A6 b9 n+ s
  TransformFunctions
& A! l& K+ P! l( v1 {变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
4 B- V$ ]2 T! h+ F' w+ K
# P4 g( C* P3 Y6 a2 H; t
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

# [5 Y( M0 Z$ ^6 V9 w% O
( w3 q( f* R: @* k% q3 R% F/ \  ControllerFunctions2 Y: o. @( \8 z, H3 I- K8 F
控制功能,主要是PID控制函数和正余弦函数。
1 e+ _0 C* ]8 Q' g) `7 e$ v) D, I' r  y$ W% T, k9 [
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

/ H+ s5 i- j1 R; ]# v, K) A% S# U* F/ s9 j8 H) T4 {: _4 s( a3 E7 c' u2 a
  StatisticsFunctions* H2 S2 f0 p7 [
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。8 @0 c" q. \. j$ F8 F# g# V

! P) M, Z% f5 m8 I8 N% A4 A
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

9 O4 p) t- h2 W( Y! v
4 _; T2 Q4 T  f  SupportFunctions, M( a8 M) W* Z# n
支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
& {2 T+ \3 a/ t) n  o( U# Y6 S2 T
* i. ^2 z: @$ W
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
$ i" Y7 k0 f! R) G
( W! ~: l/ q4 c( v5 p: U3 ~( n, d
  CommonTables- s  C+ T# h! V0 S4 i, Z
arm_common_tables.c 文件提供位翻转或相关参数表。
+ ~$ `3 K* b3 m8 T& [7 v- w
! G6 x5 m- A0 m  s1 k' I
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

& ?- H) f: H7 ~  [% N4 l+ \5 [" e) a% T) P' ~2 Q5 m1 e
1.5   TI提供的32位定点DSP库IQmath( t2 g3 P; a4 E( G
初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。0 T1 e6 v6 Y8 G; k. B) F) t7 K

/ E; Q6 N. f& W' a, ~1 N所以本次教程也会对IQmath做个介绍并配套一个例子。% N0 ]+ P( t& V; u1 N7 P+ l
8 i/ N9 U# e0 l1 d
1.6   ARM DSP软件替代模拟器件的优势
) H0 y5 a# j8 i! `6 Z; z6 q我们日常生活中用到DSP的地方很多,以生活中的设备为例:! b- H0 e; y1 H, _; E! }

6 M& F7 M( _% Y( s7 `
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

; O: X2 H8 \) u* r8 f* |/ a$ G" u( [4 M" s8 X) U& `, |
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。
* u1 k/ ~2 V0 M( B+ s- o) _; L& H) p$ B$ a
  降低BOM成本+ A" X, \9 Z: {' X% U) b
将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。
7 L& [2 J% I/ K+ }+ K# v. X# M/ i7 s8 |( b. B$ [- W& h
  提高设计灵活性
2 d, L/ N( P$ e! {! D% I9 h使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。
( J1 ^; f1 y. A
' H% k$ Y$ U' Y! R( k7 c  减少产品尺寸
8 z* E" E8 I! ^3 s降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。
% @6 G  I' b4 j+ H1 c7 S
6 i7 K7 f% t) n, x1 M0 ~4 `5 E+ T  缩短设计周期时间  _) C/ Q7 j% S& t9 X
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:1 z1 _9 M6 I' ?, L5 s3 f1 c  a

8 I  J& R0 _3 x3 X; R首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。
" N" K5 v9 Y% \$ k; X7 Z其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。9 u1 E0 |, F: ?5 J

' c6 M6 E- |7 @9 A0 S, @  现场适应性
/ E& A2 p; P6 z4 c& M  o在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。. d2 p' i1 H; M1 m" B; T

9 o8 A( q5 U; f$ U; ?用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
9 _  k9 Z5 s$ W4 j% _; r" \; \
4 \* v" v6 y& `) v* \1.7   Matlab安装
' Z* F/ ^$ N2 H" {& H# z( i( R( ~$ lMatlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
  n6 w' a6 K: h! d$ d0 Y$ m& d6 f
1.8   总结! _+ b5 l0 u: }. ]2 ^
本期教程主要是做一些入门性的介绍,下期教程将开始实战。3 w8 C: w2 @+ G4 v

( b7 q' }! p( q6 X& M7 q) g; U
" R7 r$ Z  U2 v% f
, x% s% p% {1 B0 U* O; Z
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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