ARM-DSP读书笔记 开坑

ARM-DSP读书笔记 开坑

​ 原书是ARM Education Media的《Digital Signal Processing using Arm Cortex-M based Microcontrollers - Theory and Practice》。由于电赛备赛和个人学习方向需要,决定开个坑细啃这本书,然后再把书中没有详细介绍的地方进行拓展,写笔记主要还是为了给自己梳理一遍思路,也是作为一个笔记的作用。所以如果真的有人刷到了,有错误的地方,非常希望能够指正。

​ 这是arm官方推出的,基于arm的cmsis-dsp库的一个数字信号处理教程,内容是包含了理论和实验两部分,教学资源中甚至还有ppt(但ppt没啥内容),满足10-12周的教学任务,只是他的实验部分是基于配套的stm32f7xx的开发板,我觉得没有太大必要,所以实验部分我计划用stm32f4xx系列的板子来完成。

​ 网站连接:Digital Signal Processing Education Kit – Arm®

​ 相关书本和代码资源等等都可以在这下载

全书目录#

​ 笔记会跟着书本目录的章节来做,顺便作为导航吧,也能督促一下自己

  1. 数字信号处理基础知识
  2. 离散时间信号处理基础
  3. Z变换
  4. 离散时间信号的频响分析
  5. 连续时间信号和离散时间信号的转换
  6. 连续时间信号的数字处理
  7. Structures for Discrete-Time LTI Systems
  8. 数字滤波器设计
  9. 自适应信号处理
  10. 定点的实现
  11. 实时数字信号处理

数字信号处理基础知识#

​ 书中这一块单独开了一章,但是内容并不多,只是简单地介绍了一下这本书和数字信号处理的内容,我也不明白为什么叫做“Digital Signal Processing Basics”。

​ 本章主要阐述了什么是信号,如何通过一个系统处理信号,主要是概念。

信号的类型和定义#

​ 其实信号系统并没有指明信号一定是电信号,奥本海姆的信号系统也是更加注重数学上的推导,但对于电子信息工程相关专业的人来说,信号基本都是电形式。对于一个电子系统来说,传感器就是我们的感知器,通过传感器把物理量转换为电子形式,如果一个信号随时间变化(或随另一个变量变化),我们就称他为一个信号。更一般地说,我们认为信号是与某一独立变量顺从某种关系变化的数据(我理解为函数)。一个信号可以被一些系统处理,以便从中获取信息或修改他

​ 这个更一般的情况,表明了信号不一定是时域的,也可以是频域或是其他域,但最基础的域是时域

连续时间信号#

如果获得的信号是模拟形式的,我们称之为连续时间信号。假设有一个模拟麦克风电路,在示波器上显示音频信号,如果有人对着麦克风说出“Hello”这个词,我们就能够在示波器上看到一个连续时间信号(如下图)。这个信号可以由一些模拟器件组成的连续时间系统进一步处理

离散时间信号#

​ 尽管用连续时间系统处理连续时间信号很合理,但大多数的应用是通过离散系统来处理离散信号。个人理解是模拟系统某些时候成本会高很多,其次抗干扰能力没有数字信号好。(数字信号处理具有高精度、高可靠性、可程序控制、可时分复用、便于集成化等优点。)取一段连续时间信号(如下图),对其进行每秒采44100次点,我们就可以得到一段离散时间信号。

在这个情况下,振幅都还是实数,也就是说,我们只是自变量离散化了,因变量还没有

数字信号#

由于离散时间信号振幅还是实数,在数字系统(如微控制器等)中,我们可以把一段离散时间信号存进一个数组里面,但是无论什么数据类型(int, float)的数组,都只能存储有限范围和精度的值,而无法处理实数。所以,我们应该对其幅值进行量化,即把幅值变为能够用数字系统表达的数值,得到对应的数字信号。

数字信号处理#

DSP的美妙之处在于它的实现,固定的模拟硬件将不是必须的。相反,合适的微控制器就能够实现一个数字系统。DSP系统将只是一个代码片段,这就会存在一些优势:

  • 如果系统不满足设计规范,可以简单地重新设计更改相关代码块,无需更改硬件。
  • 系统参数可以动态更改,这对于自适应和学习系统非常重要
  • 如果微控制器具有通信功能,可以从远程位置修改这些参数。

上述优点使DSP比通过模拟系统进行连续时间信号处理更具优势

实验平台介绍#

​ 书本内的实验是基于stm32f407vgt6的芯片的实验,而arm官方还有一套实验教材是基于stm32f746平台的实验。其实两个都差不多,有些实验没条件的可能会跳过。常用软件为:Keil,Matlab。个人觉得重点在滤波器设计,实时信号处理和自适应滤波,其他地方都是理解为主。官方还提供了一些matlab脚本函数和keil的调试函数。

CMSIS#

Cortex 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器独立于供应商的硬件抽象层。

CMSIS有7个组件:

  • CMSIS-CORE: 与处理器内核和外设的接口
  • CMSIS-Driver: 与通用外设的接口
  • CMSIS-DSP: 具有60多种函数的DSP库
  • CMSIS-RTOS API: 用于实时操作系统的通用API
  • CMSIS-Pack: 基于 XML 的包描述标准
  • CMSIS-SVD: 外设的系统视图说明
  • CMSIS-DAP: 调试单元的接口

本书实验只讨论CMSIS-DSP库的使用

CMSIS-DSP#

​ 整个实验中广泛使用 CMSIS-DSP 库。该库包括用于向量运算、矩阵计算、复数算术、滤波函数、控制函数、PID控制器、傅里叶的函数变换和其他常用的 DSP 算法。这些函数中的大多数都可以用于浮点数和定点数表示形式。此外这些功能针对 Cortex-M 系列微控制器进行了优化。具体来说,CMSIS-DSP 库包含以下适用于 8 位、16 位和 32 位的函数整数和 32 位浮点数。

posted @   骆驼弟弟  阅读(297)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
主题色彩