本笔记为本人在大三期间学习dsp时的笔记,感谢西北工业大学航海学院刘建国老师在我学习时的指导与帮助。
本章主要是讲述了DSP的基本概述与基本知识。
先说一下一些常见的英文缩写:
CPU :Central Processing Unit
MCU :Micro Control Unit
SCMC :Single Chip Micro Computer,大多数称为Microcontrollers
DSP :Digital Signal Processor 数字信号处理器
Digital Signal Processing 数字信号处理
什么是DSP?
图1-1 典型的dsp
DSP(数字信号处理):做些拍照以及回显(JPEG的编解码)、录像以及回放(Video 的编解码)、H.264的编解码、还有很多其他方面的处理,总之是处理数字信号。
ISP(图像信号处理):一般用来处理Image Sensor(图像传感器)的输出数据,如做AEC(自动曝光控制)、AGC(自动增益控制)、AWB(自动白平衡)、色彩校正、Lens Shading、Gamma 校正、祛除坏点、Auto Black Level、Auto White Level 等等功能的处理。
DSP数字信号处理器,类似于微处理器,一个计算系统的核,且特别适合数字信号处理运算,主要是应用于是实现各种数字信号处理的算法。拥有着额外的用来加速复杂运算的外设,包括硬件乘法器(MPY),算术运算单元(ALU),多总线访问机制,实现多次乘累加运算的硬件移位寄存器。
而带有一个DSP作为运算单元的单芯片微型计算器,叫DSC数字信号控制器,结合DSP优越的运算能力以及独立数据、程序存储结构和外设,得到最高效的海量运算嵌入式实时控制解决方案。
典型的DSP算法:
图2-1 典型的dsp算法
滤波运算
乘累加运算
观察上表知,对DSP要求频繁访问存储器,且有大量乘累加运算。
FFT运算
大量的乘累加运算,样本按码位倒置的顺序排列,DSP处理器应具有对应的寻址方式,否则读取样本将花费大量的时间。
实时性:通常样本等间隔的进入系统(采样周期T),每一个样本到来处理需要时间(处理时间t),若T>t,非实时处理,否则为实时处理。
1 高效内部总线,访问速度够快。冯诺依曼:程序存储与数据存储通过相同的地址与数据总线访问。
哈佛:程序存储与数据存储通过不同地址数据总线访问,吞吐率更高,更复杂。
DSP采用哈佛架构,以及改进的哈佛架构,即可以多套数据总线以及总线宽度可变。
2 灵活的寻址方式
环形缓冲寻址。
图3-1 环形缓冲寻址
环形缓冲寻址使一段线性存储(缓冲)区看起来像是一个连续的环形缓冲区。
在环形缓冲区中,数据并不移动,当有新数据到来时,数据起点指针沿数据起点移动方向移动一个存储单元,新数据覆盖最老的数据。
取数据时,从数据起点指针指向的单元开始,沿取数据移动方向,依次取出数据。
数据指针的维护由硬件自动完成。
位反序寻址
FFT运算要求样本按码位倒置的顺序排列,而通常样本是按顺序排列的。
使用软件实现会花费大量时间,效率较低。
图3-2 未反序寻址
DSP处理器由内部的硬件电路(地址发生器)自动产生各种寻址方式需要的地址。不占用CPU时间。实现信号处理任务要求的高效、灵活的数据存取。3 单周期乘累加运算
Dsp内部都有硬件乘法器与加法器,可以直接计算乘累加,同时还有乘法结果的定标器,乘法加法的状态输出。
4 指令流水线
一条指令要经历取指、译码、执行三个阶段。非流水线会执行完三个操作之后进入下一条,流水线可以将不同阶段时间上重叠。
5 硬件循环
DSP处理器具有实现指令重复循环的硬件,除初始化硬件循环外,循环计数器的维护由硬件自动完成,不占用CPU时间。
6 超标量操作
超标量操作是指处理器能够并行地执行多个操作,如存/取数据、指针更新、乘法运算、加法运算、移位等操作在单个时钟周期内并行执行。
MIPS:每秒钟执行用百万次表示的指令数。
MOPS:每秒钟执行百万次的运算次数。
MFLOPS:每秒钟执行百万次的浮点运算次数。
MMACPS:每秒钟执行百万次的乘累加次数。
基准测试程序:基准测试程序使用了许多典型的DSP运算,且包括寄存器和存储器之间的数据传输等操作。
常用的基准测试程序:
1024点FFT
FIR滤波器
IIR滤波器
除法(x/y)