Digital Signal Processing 数字信号处理
作为一个案例研究,我们来考虑数字领域里最通常的功能:滤波。简单地说,滤波就是对信
号进行处理,以改善其特性。例如,滤波可以从信号里清除噪声或静电干扰,从而改善其信
噪比。为什么要用微处理器,而不是模拟器件来对信号做滤波呢?我们来看看其优越性:
模拟滤波器(或者更一般地说,模拟电路)的性能要取决于温度等环境因素。而数字滤波器
则基本上不受环境的影响。
数字滤波易于在非常小的宽容度内进行复制,因为其性能并不取决于性能已偏离正常值的器
件的组合。
一个模拟滤波器一旦制造出来,其特性(例如通带频率范围)是不容易改变的。使用微处理
器来实现数字滤波器,就可以通过对其重新编程来改变滤波的特性。
信号处理方式的比较
比较因素 模拟方式 数字方式
修改设计的灵活性 修改硬件设计,或调整硬件参数 改变软件设置
精度 元器件精度 A/D 的位数和计算机字长,算法
可靠性和可重复性 受环境温度、湿度、噪声、 不受这些因素的影响
电磁场等的干扰和影响大
大规模集成 尽管已有一些模拟集成电路, 但品种较少、集成度不高、价格较高DSP 器件
体积小、功能强、功耗小、一致性好、使用方便、性能/价格比高
实时性 除开电路引入的延时外,处理是实时的 由计算机的处理速度决定
高频信号的处理 可以处理包括微波毫米波乃至光波信号 按照奈准则的要求,受S/H、A/D
和 处理速度的限制
Digital Signal Processor 数字信号处理器
微处理器(Microprocessor)的分类
通用处理器(GPP)
采用冯.诺依曼结构,程序和数据的存储空间合二而一
8-bit Apple(6502),NEC PC-8000(Z80)
8086/286/386/486/Pentium/Pentium II/ Pentium III
PowerPc 64-bit CPU(SUN Sparc,DEC Alpha, HP)
CISC 复杂指令计算机, RISC 精简指令计算机
采取各种方法提高计算速度,提高时钟频率,高速总线,多级Cashe,协处理器等
Single Chip Computer/ Micro Controller Unit(MCU)
除开通用CPU 所具有的ALU 和CU,还有存储器(RAM/ROM)寄存器,时钟,计数器,
定时器,串/并口,有的还有A/D,D/A
INTEL MCS/48/51/96(98)
MOTOROLA HCS05/011
DSP
采用哈佛结构,程序和数据分开存储
采用一系列措施保证数字信号的处理速度,如对FFT 的专门优化
MCU 与DSP 的简单比较
MCU DSP
低档 高档 低档 高档
指令周期(ns) 600 40 50 5
乘加时间(ns) 1900 80 50 5
US$/MIPS 1.5 0.5 0.15 0.1
DSP 处理器与通用处理器的比较
考虑一个数字信号处理的实例,比如有限冲击响应滤波器(FIR)。用数学语言来说,FIR 滤
波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间作
乘法,然后将所有的乘积加起来,形成一个输出样本。
类似的运算在数字信号处理过程中大量地重复发生,使得为此设计的器件必须提供专门的支
持,促成了了DSP 器件与通用处理器(GPP)的分流:
1 对密集的乘法运算的支持
GPP 不是设计来做密集乘法任务的,即使是一些现代的GPP,也要求多个指令周期来做一
次乘法。而DSP 处理器使用专门的硬件来实现单周期乘法。DSP 处理器还增加了累加器寄
存器来处理多个乘积的和。累加器寄存器通常比其他寄存器宽,增加称为结果bits 的额外
bits 来避免溢出。
同时,为了充分体现专门的乘法-累加硬件的好处,几乎所有的DSP 的指令集都包含有显式
的MAC 指令。
2 存储器结构
传统上,GPP 使用冯.诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组总线
(一个地址总线和一个数据总线)连接到处理器核。通常,做一次乘法会发生4 次存储器访
问,用掉至少四个指令周期。
大多数DSP 采用了哈佛结构,将存储器空间划分成两个,分别存储程序和数据。它们有两
组总线连接到处理器核,允许同时对它们进行访问。这种安排将处理器存贮器的带宽加倍,
更重要的是同时为处理器核提供数据与指令。在这种布局下,DSP 得以实现单周期的MAC
指令。
还有一个问题,即现在典型的高性能GPP 实际上已包含两个片内高速缓存,一个是数据,
一个是指令,它们直接连接到处理器核,以加快运行时的访问速度。从物理上说,这种片内
的双存储器和总线的结构几乎与哈佛结构的一样了。然而从逻辑上说,两者还是有重要的区
别。
GPP 使用控制逻辑来决定哪些数据和指令字存储在片内的高速缓存里,其程序员并不加以
指定(也可能根本不知道)。与此相反,DSP 使用多个片内存储器和多组总线来保证每个指
令周期内存储器的多次访问。在使用DSP 时,程序员要明确地控制哪些数据和指令要存储
在片内存储器中。程序员在写程序时,必须保证处理器能够有效地使用其双总线。
此外,DSP 处理器几乎都不具备数据高速缓存。这是因为DSP 的典型数据是数据流。也就
是说,DSP 处理器对每个数据样本做计算后,就丢弃了,几乎不再重复使用。
3 零开销循环
如果了解到DSP 算法的一个共同的特点,即大多数的处理时间是花在执行较小的循环上,
也就容易理解,为什么大多数的DSP 都有专门的硬件,用于零开销循环。所谓零开销循环
是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将
循环计数器减1。
与此相反,GPP 的循环使用软件来实现。某些高性能的GPP 使用转移预报硬件,几乎达到
与硬件支持的零开销循环同样的效果。