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

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

[复制链接]
STMCU小助手 发布时间:2021-12-28 21:00
1.1   初学者重要提示. r; p0 v) U# _+ h8 l9 x+ Y" m* q
  关于学习方法问题,可以看附件章节A。
1 M* |7 n- V9 Z9 Y" E$ {0 N+ b# H  这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。9 q8 E5 D9 V- K# y
  当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON
; h( N; C. Q  d3 Q' [% U% J6 S1.2   STM32H7的DSP功能介绍
7 k  |6 W% {6 |+ ~% v. ASTM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
, @. b- t4 u; R: L& Z9 V! ^! g' b! N8 y6 @% {# Y  @" a
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

) l; f  f1 n  H9 t4 t: f7 e/ P( Y2 x% T6 ~) D! E) w
重点看如下两个设计单元:% c  N: M8 N: B
. c3 k4 x0 q4 b. Q. J
  DSP' J4 h0 Z5 \$ |' o9 f
DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。! x7 }, |, @) t& I; S2 m

2 n. R7 U/ ]" S( j! M. A( W& k0 T  FPU
9 L* r4 y$ N4 y9 [( Q$ `Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。
& o' B7 c( b! [* Q/ |
: }: X7 ?- A/ X- W" s2 k下面是Cortex-M3,M4和M7的指令集爆炸图:
1 y- i1 A  k$ ?3 [8 D4 J% |( I
# V, E+ u  {- h: u/ K. y% y
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
8 L, u5 g. }9 I3 R4 a

  X( \2 R, e# D+ b. v" l8 L2 v通过这个图,我们可以了解到以下几点:8 R; g6 Y% }( F* r3 ?/ G2 _3 a

) r9 a- @% R2 t' f  M4和M7系列有相同的DSP指令集。
# u8 R+ G6 i% X& H+ q  M7相比M4系列要多一些浮点指令集。
; O9 u1 o: ?0 x; i' v; i; Y) N  同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。
  h. R8 f7 L0 }( P7 `3 B9 \# @3 t
( X6 X  s" u/ M7 B' V1 U; D% R$ G0 q% D( q
不同M内核的DSP性能比较:: z/ P  C: K; F+ G8 j
# @2 D4 M) _) A0 X$ G3 ?
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

  \# Q5 S5 |; s* L/ v5 p7 w  d4 l8 r0 q2 N+ V
  Cortex-M7内核的DSP性能最强。
/ }5 B! N3 C$ ?7 Z: Q  Cortex-M3,M4和M33是中等性能,其中M3最弱。
) k3 a. S# N" G9 S; C/ k  Cortex-M0,M0+和M23性能最弱。2 E' |8 Q* T' h( ^' T$ n" V( p

; f. L( B5 [: _; P7 j3 S1.3   Cortex-M7内核的DSP和专业DSP的区别
. H) w$ X' M4 y; ^: \M核的DSP处理单元与专业DSP的区别:
/ f+ H2 \6 z; w& `; p( ?6 H, r9 Y( N6 ], f9 R  o0 W
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

- `: S5 d% q% J2 c$ r+ U) O0 m" p
1.4   ARM提供的CMSIS-DSP库
7 I: A) V- @8 K0 H! D, L" \5 j' }为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:5 X( v0 ^$ p, a( [9 E* U2 m

" t$ _  O5 a3 p" ]4 z1 M  BasicMathFunctions; }7 Y' g9 \' a4 @- }5 f
提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:
9 C+ q7 T1 d) ~; l6 K& u* K+ Q2 g! W7 X9 x- T7 Z$ r7 {
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
6 _& i# I( f% i6 t5 ^$ j8 S
; _8 q0 U' G3 h: Q) F2 K, M* h
  FastMathFunctions
3 l! z' C4 K& q) t主要提供SIN,COS以及平方根SQRT的运算。
  K4 z% X' l' a' f2 T- o1 Z. W% P
6 K- P, B* S* L* B
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

* p3 z0 }! g6 J
8 u3 }4 S& i0 U% T* ^' ?7 ]9 y9 k  ComplexMathFunctions: e! C- g. ^6 j3 N0 _
复杂数学运算,主要是向量,求模等运算。下面是部分API截图:
: l* |4 d6 O" M& ^8 r9 e3 C- f/ s7 E" |- U! o8 k: V
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 i8 m5 M& h# V6 m: n: i- o9 e5 Q( x) V) B9 T
  FilteringFunctions
( @; s, I  l2 m; w主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:, i0 s8 r7 X& z

" i" O2 m+ M5 i1 D* O
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

" S  Z& h+ y; ~* m( m5 s; A; R# y5 z/ Z* L
  MatrixFunctions
3 \; @  @. @) M- \6 r  H主要是矩阵运算。
$ Y& E7 F% ]5 N5 t$ h! ?, g9 H, x+ J0 _% W2 t* v% }
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

; z- p7 g) U- Y$ y1 T/ k8 ]: }
8 X2 o; F7 y' W# u* H" Q  TransformFunctions) ~" X+ }" X6 p$ g, c
变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:
) y# v5 V: }! U4 u! U$ Q4 D7 f% U: \' Z  ^7 b8 v
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

0 }5 @7 g9 `& }- |0 X* m5 w
4 D2 O/ d. N0 m  Y1 N% g( H2 S  ControllerFunctions
& I7 _( w6 Z8 }% n' U" }) l, Q# V控制功能,主要是PID控制函数和正余弦函数。
* T( ~  b* u  s+ f: `1 [: d
# }7 z6 L) [3 u* E
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

( k, O/ H4 X* Y6 ?" k  ~5 F, Y7 ]' ]2 x
  StatisticsFunctions! F, M. _7 u: _
统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。/ ]9 d& g) a/ c  ]$ w* J- N- B

, _$ u: J$ |! L) A2 m6 Q1 `
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
" K7 \: Z* ?7 `& i% I) v
- s5 T7 B- k3 i- @) V2 N  k
  SupportFunctions
' h5 ^9 D6 n; l( q支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
: e4 u" o# ]0 L5 l: W7 M5 I1 Z+ ~- p8 `
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png

) h, s  p9 {% ^2 I8 L, q$ h$ j' X/ O" Z( T" [5 c
  CommonTables
% d/ {5 e) I, ^. earm_common_tables.c 文件提供位翻转或相关参数表。9 R( a; `& J9 ]* f( F& l( t" n

) ]" R8 W7 x7 J7 T3 q2 c9 l( G- R
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
9 a1 w$ y1 J8 @; ~6 }) G3 {
8 l9 e* j9 @& ~' W
1.5   TI提供的32位定点DSP库IQmath
4 L3 @$ P' A4 O/ B4 ^初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。
' \" V( ]1 [, c/ X+ l- U- Z
3 [. s; p7 M, v: u6 g& z所以本次教程也会对IQmath做个介绍并配套一个例子。
9 i; b% P1 ~% M- H  H9 @# k0 f, y
( V2 q9 t' ]2 O1.6   ARM DSP软件替代模拟器件的优势6 q) q/ E6 m) k" C# n
我们日常生活中用到DSP的地方很多,以生活中的设备为例:" N1 X7 g% {1 s
3 j% d3 }* y- }8 y# u
aHR0cHM6Ly9pbWcyMDIwLmNuYmxvZ3MuY29tL2Jsb2cvMTM3OTEwNy8yMDIwMDMvMTM3OTEwNy0yMDIw.png
7 @( M6 h% d7 @1 B$ W: R9 O
9 U  V7 D! q; W% Q* q$ z! ?
通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。$ F( {3 f4 S& v: |$ X3 X* G) X% ~
1 E! @' d9 F  p% V9 i
  降低BOM成本
0 E6 z2 d' e1 E! q" Q将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。) z& R- M8 v5 b" j) F
' b2 Z0 e3 _" e; k
  提高设计灵活性% _4 D4 t0 ^( c9 s( {
使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。4 c$ f5 V; A: h/ I

3 {' _% S+ m- s! x4 K  减少产品尺寸+ P* @3 W7 u8 q6 \# s' t. Q
降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。- t  |# |; W4 S3 l

6 c8 I: G6 [- N0 k* e, R' U. a  缩短设计周期时间2 H# e' A- R2 a7 C; X1 e3 {
将模拟电路转换为软件有助于缩短设计周期。这有几个原因:$ B0 u; l; d+ U' V
6 K; x6 {# |( C
首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。* b6 {7 ?5 h0 u
其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。. e7 E0 _1 k& |, |6 X# N1 C
/ G8 W0 O2 D+ A9 G! O7 b
  现场适应性! ?( z# q7 V0 ~$ O- x- B
在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。
) l0 q, q, z' K# B6 y
. q8 V6 Q% ?( u2 p9 c  r用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。
* l1 t5 q1 V. Y; M6 x% Y7 q) M: I9 c& K: ]( R4 v! p
1.7   Matlab安装
# i7 ?% Y2 H& jMatlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。
5 w2 O: G: z1 ^; n* j& h# p: M! W& L$ H, {3 |1 M. ]
1.8   总结
0 ]1 z# _5 V+ u3 Y本期教程主要是做一些入门性的介绍,下期教程将开始实战。
. N3 f5 N( c6 p; G6 b2 p, }; ^0 Y: e+ w: |% }! O( o" Q
: ]0 ?( m" j: u* \" r" h3 c

6 f3 @2 X2 b; d1 j4 K# V/ [
收藏 评论0 发布时间:2021-12-28 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

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