首页 > 编程知识 正文

dsp接低音炮教程,DSP原理及应用

时间:2023-05-03 14:53:58 阅读:110952 作者:1920

DSP处理器和通用处理器的比较

1密集乘法支持

GPP不是被设计为执行密集乘法任务,并且一些现代GPP需要多个指令循环来执行单次乘法。 DSP处理器使用专用硬件实现单周期乘法。 DSP处理器还添加了累加器寄存器,用于处理多个乘积之和。 累加器寄存器通常比其他寄存器宽,增加额外的bits (称为结果bits )以避免溢出。

此外,为了充分利用专用乘法-累加硬件的优势,大多数DSP指令集都包含显式MAC指令。

2内存配置

以前,GPP使用冯诺伊曼存储器结构。 在这种结构中,只有一个存储器空间通过一组总线(地址总线和数据总线)连接到处理器核。 通常,一次乘法运算会导致4次内存访问,并至少使用4个指令周期。

大多数DSP采用哈佛结构,将存储器空间分成两部分,分别存放程序和数据。 两对总线连接到处理器内核,可以同时访问。 这种安排使处理器内存带宽加倍,更重要的是同时向处理器内核提供数据和指令。 以这种布局,DSP可以实现单周期MAC命令。

另一个问题是,当前典型的高性能GPP实际上包含两个片上高速缓存:直接连接到处理器核心的数据和指令,以加快运行时访问速度。 物理上,片上双存储器和总线的结构与哈佛的结构几乎相同。 但是,在逻辑上,两者有重要的区别。

GPP使用控制逻辑确定哪些数据和指令字存储在片内的高速缓存中。 程序员不指定(可能完全不知道)。 相比之下,DSP使用多个片上存储器和多组总线来确保每个指令周期对存储器的多次访问。 使用DSP时,程序员必须明确控制将哪些数据和指令存储在片上存储器中。 程序员必须确保处理器能有效地使用双总线。

此外,DSP处理器几乎没有数据缓存。 这是因为DSP的典型数据是数据流。 也就是说,DSP处理器在对每个数据样本进行计算后,废弃,几乎不再复用。

3零开销循环

如果知道DSP算法的一个共同特征,即大部分处理时间都要花在执行小循环上,就更容易理解为什么大多数DSP都有专用于无开销循环的硬件。 零开销循环是指处理器在执行循环时,不会花费时间检查循环计数器的值,将条件移动到循环的开头,或将循环计数器减少1。

相比之下,没有实现GPP回收利用软件。 部分高性能GPP使用迁移预报硬件,达到了与硬件支持的零开销循环大致相同的效果。

4定点计算

大多数DSP使用定点计算而不是浮点计算。 DSP的应用必须充分注意数字的正确性,用浮点进行应该很容易,但对DSP来说廉价也非常重要。 与支持的浮点设备相比,定点设备更便宜。 为了在不使用浮点计算机的情况下保证数值的准确性,DSP处理器在指令集和硬件上都支持饱和计算、舍入和移位。

5专用地址方式

在许多情况下,DSP处理器支持专用寻址模式,这对于常规的信号处理操作和算法很有用。 例如,模块(环路)寻址(有助于实现数字滤波器延迟线)、比特反向寻址(比特反向) FFT )。 这些非常专业的寻址模式在GPP中很少使用,只能用软件来实现。

6执行时间预测

大多数DSP APP应用(如手机和调制解调器)都是严格的实时APP应用,所有处理都必须在指定的时间内完成。 这需要程序员准确地确定每个样本的处理时间。 或者至少在最坏的情况下,你需要知道需要多长时间。

要想用低成本的GPP完成实时信号处理的任务,预测执行时间恐怕问题不大,低成本的GPP应该具有比较直接的结构,比较容易预测执行时间。 然而,低成本GPP不能提供许多实时DSP APP应用所需的处理能力。

此时,DSP相对于高性能GPP的优越性在于,即使是使用了高速缓存的DSP,输入哪个命令也不是由处理器而是由程序员决定的,因此可以很容易判断命令是来自高速缓存还是来自存储器。 DSP通常不使用迁移预测和推理执行等动态特性。 因此,根据给定的代码预测要求的执行时间是完全坦率的。 这样,程序员就可以确定芯片的性能限制。

7定点DSP指令集

定点DSP指令集基于两个目标设计。

通过允许处理器在每个指令周期完成多个操作,提高了每个指令周期的计算效率。

最大限度地减少用于存储DSP程序的内存空间(对于成本敏感的DSP APP应用,此问题尤为重要,因为内存严重影响系统的整体成本)。

为了实现这些目标,使用DSP处理器指令集,程序员通常可以在一条指令中描述多个并行的操作。 例如,一条指令包含MAC操作,即一次移动一个或两个数据。 在典型示例中,一个指令包含计算FIR滤波器部分所需的所有操作。 这种效率的代价是其指令集不直观,难以使用。

由于GPP程序通常使用高级语言(如C和C ),因此我不介意处理器指令集是否易于使用。 不幸的是,DSP程序员使用汇编语言编写主要的DSP APP应用程序(至少部分针对汇编语言进行了优化)。 这里有两个理由。 首先,许多广泛使用的高级语言,如C,不适合编写典型的DSP算法。 其次,DSP结构的复杂性,包括多内存空间、多总线、不规则指令集、高度专门化的硬件

等,使得难于为其编写高效率的编译器。

即便用编译器将C源代码编译成为DSP的汇编代码,优化的任务仍然很重。典型的DSP应用都具有大量计算的要求,并有严格的开销限制,使得程序的优化必不可少(至少是对程序的最关键部分)。因此,考虑选用DSP的一个关键因素是,是否存在足够的能够较好地适应DSP处理器指令集的程序员。

8 开发工具的要求

因为DSP应用要求高度优化的代码,大多数DSP厂商都提供一些开发工具,以帮助程序员完成其优化工作。例如,大多数厂商都提供处理器的仿真工具,以准确地仿真每个指令周期内处理器的活动。无论对于确保实时操作还是代码的优化,这些都是很有用的工具。

GPP厂商通常并不提供这样的工具,主要是因为GPP程序员通常并不需要详细到这一层的信息。GPP缺乏精确到指令周期的仿真工具,是DSP应用开发者所面临的的大问题:由于几乎不可能预测高性能GPP对于给定任务所需要的周期数,从而无法说明如何去改善代码的性能。

微处理器(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(Digital Signal Processor)技术也得到了突飞猛进的发展,这种发展趋势在今后十年内仍将保持下去。据世界半导体贸易统计组织发布的统计与预测报告,2001~2006年可编程DSP市场的预期增长率为27.2%。预期2006年DSP市场将达到141.9亿美元,且增长率是逐年递增的,2005年的增长率预期为34%。到2010年,DSP芯片的集成度将会提高11倍,单个芯片上将会集成5亿只晶体管。目前DSP的生产工艺正在由0.35μm转向0.25μm、0.18μm、0.13μm,到2005年可能达到0.075μm。

集成度的提高使得硅片的面积进一步缩小,从而导致DSP芯片成本降低,价格下降。价格下降促使需求的上升和应用领域的扩展。DSP已从军用转向民用,在计算机、通信、消费类电子产品方面即所谓3C领域得到了广泛的应用。DSP在通信领域应用最多,占72%,计算机占3%,消费类、办公自动化各占2%,从趋势上看,工业(特别是变频电机控制)中的应用,以及消费类产品中应用的份额会有所上升。

在通信领域,DSP产品涵盖了从3G无线基站到无线局域网的广泛应用,数字化电视也离不开DSP。DSP在语言处理中的应用也是尽人皆知的,包括语言的压缩与解压,语言的合成,语言的识别等。

计算机的硬盘驱动器在使用DSP技术以后可大大提高存取速度,提高容量和缩小体积,以至于今后有可能用于掌上电脑。在PC机中,DSP可加速图形处理功能。以后的PC机,可能每台PC中含有不只一颗DSP芯片。在计算机外设中,激光打印机、扫描仪、光盘机等需要大量数据传输的设备,都有可能用到DSP技术。

DSP技术发展的另一趋势是速度更快,功耗更低,DSP片外的速度能达到几十兆赫已经近于极限,为了降低系统的噪声,提高系统抗干扰能力,片外时钟有进一步降低的趋势,即外部使用几兆赫的振荡器就够了,而片内则用压控振荡器加锁相环的技术,把片内时钟速度提高到100MHz、200MHz乃至更高,会有更多的DSP片内时钟达到1GHz。预期到2010年,同类水平的DSP的功耗将降到原来的1/3。

DSP与CPU

如果用普通计算机中的CPU来处理算法,做乘法和加法都要调用相应的乘法、加法函数,如果是浮点数运算,通常CPU需要将浮点运算交给协处理处理,虽然协处理器的浮点运算速度可能很快,但加上CPU将输入参数传出,再将运算结果取回的时间,会显得速度很慢;做循环时,要有循环变量,每次循环变量加1后再判断是否已经循环了n次,这一过程是比较慢的。

而DSP则在硬件设计上针对这类计算采取了一些独特的设计,以求最快的运算速度,以至于趋于模拟电路的延迟时间。

DSP能在一个时钟周期内完成乘法和加法运算,并能并行地同时将下面运算要用到的两个参数传入相应的运算用寄存器。在乘法及乘加指令的执行方式上,DSP的小数乘法在算法上分定点算法DSP与浮点算法DSP。在定点类DSP中,小数点的位置是固定的,不论定点的DSP还是浮点的DSP,乘法器都是用硬件逻辑完成的,乘法可以在一个指令周期内完成。

在循环方面,DSP有诸如重复n次(Repeat n),或循环n次(DO Loop n)等指令,使DSP能迅速完成n次循环,而不必每次都检查是不是已经循环n次了。这就是DSP在做数字信号处理方面的优势与独到之处。也是DSP区别于CPU的地方。

DSP与CPU在结构方面的另一区别是,DSP往往采用哈佛结构,而传统的CPU多为隐形的小刺猬结构(Von Neuman)。隐形的小刺猬结构指的是将程序与数据统一编址,不区分存储器的程序空间和数据空间。而哈佛结构指将程序空间与数据空间分开编址,这样在DSP处理数据空间运算与数据传输的同时可以并行地从程序空间读取下一条指令。采用哈佛结构,将程序空间与数据空间分开编址的好处是速度快,读程序和读写数据可以同时进行。

DSP在内核设计方面还有一个特点是采用多重流水线结构,流水线结构的层次深度可以从3级到6级。程序的执行过程大致可分为读指令、指令译码、指令执行等几个阶段。DSP在第一个时钟周期内读第一条指令,在第二个周期译码第一条指令同时在第二个周期内读入第二条指令,在第三个时钟周期内执行第一条指令,译码第二条指令,同时读入第三条指令,这样虽然执行一条指令仍需要三个周期,可是由于并行的流水线处理,看起来好像每条指令都是在一个周期内完成的,这就是流水线结构。

DSP的特点

DSP在体系结构上与通用微处理器有很大的区别。下面是几个关键的不同点:

单周期指令:大多数DSP都拥有流水结构,它可以在一个时钟周期内执行一条语句。

快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用微处理器采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。

多总线:DSP有分开的代码和数据总线(一般用术语“哈佛结构”表示),这样在同一个时钟周期内可以进行多次存储器访问——这是因为数据总线也往往有好几组。有了这种体系结构,DSP就可以在单个时钟周期内取出一条指令和一个或者两个(或者更多)的操作数。

地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。

硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。

数据格式:除了标准的整数型格式外,DSP一般支持定点和(或)浮点数。对数据格式和精度的选择取决于应用程序所需,例如:

16位定点DSP可以满足语音信号处理和控制所需

24位和32位定点DSP可以满足高质量音频信号处理所需

32位浮点DSP可以满足图形和图像处理所需

DSP的特点:

DSP处理器采用哈佛结构和改进的哈佛结构。

哈佛结构就是将程序代码和数据的存储空间分开,各有自己的地址和数据总线。之所以采用哈佛结构,是为了并行进行指令和数据处理,从而可以大大地提高运算的速度。为了进一步提高信号处理的效率,在哈佛结构的基础上,又加以改善。使得程序代码和数据存储空间之间可以进行数据的传输,称为改善的哈佛结构。

采用流水技术。

流水技术是将各指令的各个步骤重叠起来执行。DSP处理器所采用的将程序存储空和数据存储空间的地址与数据总线分开的哈佛结构,为采用流水技术提供了很大的方便。

为了提高DSP处理器的运算速度,它们无例外地设置了硬件乘法器,以及MAC(乘并且累加)一类的指令。

DSP处理器都为DMA单独设置了完全独立的总线和控制器,这是和通用的CPU很不相同,其目的是在进行数据传输是完全不影响CPU及其相关总线的工作。

在DSP处理器中,设置了专门的数据地址发生器来产生所需的数据地址。数据地址的产生与CPU的工作是并行的,从而节省CPU的时间,提高信号的处理速度。

DSP处理器为了自身工作的需要和外部环境的协调工作。往往都设置了丰富的外设。如时钟发生器。定时器等。

定点DSP处理器和浮点DSP处理器。定点DSP中经常要考虑溢出问题,在浮点DSP基本上可以不考虑。与定点DSP处理器相比,浮点DSP处理器的速度更快,尤其是作浮点运算。在实时性要求很到的场合。往往考虑浮点DSP处理器。而浮点DSP处理器的价格比较高,开发难度更大。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。