数位讯号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛套用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数位讯号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数位讯号处理已经在通信等领域得到极为广泛DSP技术图解的套用。数位讯号处理是利用计算机或专用处理设备,以数字形式对信号进行採集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
基本介绍
- 中文名DSP技术
- 外文名Digital Signal Processing
- 含义数位讯号处理
- 套用範围广泛套用于许多领域
基本介绍
数位讯号处理是将信号以数字方式表示并处理的理论和技术。数位讯号处理与模拟信号处理是信号处理的子集。
数位讯号处理的目的是对真实世界的连续模拟信号进行测量或滤波。在进行数位讯号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数位讯号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。
数位讯号处理的算法需要利用计算机或专用处理设备如数位讯号处理器(DSP)和专用积体电路(ASIC)等。数位讯号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。
概况
数位讯号处理是围绕着数位讯号处理的理论、实现和套用等几个方面发展起来的。数位讯号处理在理论上的发展推动了数位讯号处理套用的发展。反过来,数位讯号处理的套用又促进了数位讯号处理理论的提高。而数位讯号处理的实现则是理论和套用之间的桥樑。
数位讯号处理是以众多学科为理论基础的,它所涉及的範围极其广泛。例如,在数学领域,微积分、机率统计、随机过程、数值分析等都是数位讯号处理的基本工具,与网路理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。近来新兴的一些学科,如人工智慧、模式识别、神经网路等,都与数位讯号处理密不可分。可以说,数位讯号处理是把许多经典的理论体系作为自己的理论基础,又使自己成为一系列新兴学科的理论基础。
实现方法
DSP的实现方法一般有以下几种
(1) 在通用的计算机(如PC机)上用软体(如Fortran、C语言)实现;
(2) 在通用计算机系统中加上专用的加速处理机实现;
(3) 用通用的单片机(如MCS-51、96系列等)实现,这种方法可用于一些不太複杂的数位讯号处理,如数字控制等;
(4) 用通用的可程式DSP实现。与单片机相比,DSP晶片具有更加适合于数位讯号处理的软体和硬体资源,可用于 複杂的数位讯号处理算法;
(5) 用专用的DSP晶片实现。在一些特殊的场合,要求的信号处理速度极高,用通用DSP晶片很难实现,例如专用于FFT、数字滤波、卷积、相关等算法的DSP晶片,这种晶片将相应的信号处理算法在晶片内部用硬体实现,无需进行编程。
在上述几种方法中,第1种方法的缺点是速度较慢,一般可用于DSP算法的模拟;第2种和第5种方法专用性强,套用受到很大的限制,第2种方法也不便于系统的独立运行;第3种方法只适用于实现简单的DSP算法;只有第4种方法才使数位讯号处理的套用打开了新的局面。
历史
世界上第一个单片DSP晶片应当是1978年AMI公司发布的S2811,1979年美国Intel公司发布的商用可程式器件2920是DSP晶片的一个主要里程碑。这两种晶片内部都没有现代DSP晶片所必须有的单周期乘法器。1980年,日本NEC公司推出的μPD7720是第一个具有乘法器的商用DSP晶片。
现状
在这之后,最成功的DSP晶片当数美国德州仪器公司(TexasInstruments,简称TI)的一系列产品。TI公司在1982年成功推出其第一代DSP晶片TMS32010及其系列产品TMS32011、TMS320C10/C14/C15/C16/C17等,之后相继推出了第二代DSP晶片TMS32020、TMS320C25/C26/C28,第三代DSP晶片TMS320C30/C31/C32,第四代DSP晶片TMS320C40/C44,第五代DSP晶片TMS320C5X/C54X,第二代DSP晶片的改进型TMS320C2XX,集多片DSP晶片于一体的高性能DSP晶片TMS320C8X以及目前速度最快的第六代DSP晶片TMS320C62X/C67X等。TI将常用的DSP晶片归纳为三大系列,即TMS320C2000系列(包括TMS320C2X/C2XX)、TMS320C5000系列(包括TMS320C5X/C54X/C55X)、TMS320C6000系列(TMS320C62X/C67X)。如今,TI公司的一系列DSP产品已经成为当今世界上最有影响的DSP晶片。TI公司也成为世界上最大的DSP晶片供应商,其DSP市场份额占全世界份额近50%。
特点
考虑一个数位讯号处理的实例,比如有限冲击回响滤波器(FIR)。用数学语言来说,FIR滤波器是做一系列的点积。取一个输入量和一个序数向量,在係数和输入样本的滑动视窗间作乘法,然后将所有的乘积加起来,形成一个输出样本。
类似的运算在数位讯号处理过程中大量地重複发生,使得为此设计的器件必须提供专门的支持,促成了了DSP器件与通用处理器(GPP)的分流
对密集的乘法运算的支持
GPP不是设计来做密集乘法任务的,即使是一些现代的GPP,也要求多个指令周期来做一次乘法。而DSP处理器使用专门的硬体来实现单周期乘法。DSP处理器还增加了累加器暂存器来处理多个乘积的和。累加器暂存器通常比其他暂存器宽,增加称为结果bits的额外bits来避免溢出。
,为了充分体现专门的乘法-累加硬体的好处,几乎所有的DSP的指令集都包含有显式的MAC指令。
存储器结构
传统上,GPP使用冯.诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组汇流排(一个地址汇流排和一个数据汇流排)连线到处理器核。通常,做一次乘法会发生4次存储器访问,用掉至少四个指令周期。
大多数DSP採用了哈佛结构,将存储器空间划分成两个,分别存储程式和数据。它们有两组汇流排连线到处理器核,允许对它们进行访问。这种安排将处理器存贮器的频宽加倍,更重要的是为处理器核提供数据与指令。在这种布局下,DSP得以实现单周期的MAC指令。
还有一个问题,即现在典型的高性能GPP实际上已包含两个片内高速快取,一个是数据,一个是指令,它们直接连线到处理器核,以加快运行时的访问速度。从物理上说,这种片内的双存储器和汇流排的结构几乎与哈佛结构的一样了。从逻辑上说,两者还是有重要的区别。
GPP使用控制逻辑来决定哪些数据和指令字存储在片内的高速快取里,其程式设计师并不加以指定(也可能根本不知道)。与此相反,DSP使用多个片记忆体储器和多组汇流排来保证每个指令周期记忆体储器的多次访问。在使用DSP时,程式设计师要明确地控制哪些数据和指令要存储在片记忆体储器中。程式设计师在写程式时,必须保证处理器能够有效地使用其双汇流排。
,DSP处理器几乎都不具备数据高速快取。这是因为DSP的典型数据是数据流。也就是说,DSP处理器对每个数据样本做计算后,就丢弃了,几乎不再重複使用。
零开销循环
如果了解到DSP算法的一个共同的特点,即大多数的处理时间是花在执行较小的循环上,也就容易理解,为什幺大多数的DSP都有专门的硬体,用于零开销循环。所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。
与此相反,GPP的循环使用软体来实现。某些高性能的GPP使用转移预报硬体,几乎达到与硬体支持的零开销循环同样的效果。
定点计算
大多数DSP使用定点计算,而不是使用浮点。虽然DSP的套用必须十分注意数字的精确,用浮点来做应该容易的多,对DSP来说,廉价也是非常重要的。定点机器比起相应的浮点机器来要便宜(而且更快)。为了不使用浮点机器而又保证数字的準确,DSP处理器在指令集和硬体方面都支持饱和计算、捨入和移位。
专门的定址方式
DSP处理器往往都支持专门的定址模式,它们对通常的信号处理操作和算法是很有用的。例如,模组(循环)定址(对实现数字滤波器延时线很有用)、位倒序定址(对FFT很有用)。这些非常专门的定址模式在GPP中是不常使用的,只有用软体来实现。
执行时间的预测
大多数的DSP套用(如蜂窝电话和数据机)都是严格的实时套用,所有的处理必须在指定的时间内完成。这就要求程式设计师準确地确定每个样本需要多少处理时间,或者,至少要知道,在最坏的情况下,需要多少时间。
如果打算用低成本的GPP去完成实时信号处理的任务,执行时间的预测大概不会成为什幺问题,应为低成本GPP具有相对直接的结构,比较容易预测执行时间。,大多数实时DSP套用所要求的处理能力是低成本GPP所不能提供的。
这时候,DSP对高性能GPP的优势在于,即便是使用了高速快取的DSP,哪些指令会放进去也是由程式设计师(而不是处理器)来决定的,很容易判断指令是从高速快取还是从存储器中读取。DSP一般不使用动态特性,如转移预测和推理执行等。,由一段给定的代码来预测所要求的执行时间是完全直截了当的。从而使程式设计师得以确定晶片的性能限制。
定点DSP指令集
定点DSP指令集是按两个目标来设计的
·使处理器能够在每个指令周期内完成多个操作,从而提高每个指令周期的计算效率。
·将存贮DSP程式的存储器空间减到最小(由于存储器对整个系统的成本影响甚大,该问题在对成本敏感的DSP套用中尤为重要)。
为了实现这些目标,DSP处理器的指令集通常都允许程式设计师在一个指令内说明若干个并行的操作。例如,在一条指令包含了MAC操作,即的一个或两个数据移动。在典型的例子里,一条指令就包含了计算FIR滤波器的一节所需要的所有操作。这种高效率付出的代价是,其指令集既不直观,也不容易使用(与GPP的指令集相比)。
GPP的程式通常并不在意处理器的指令集是否容易使用,因为他们一般使用象C或C++等高级语言。而对于DSP的程式设计师来说,不幸的是主要的DSP应用程式都是用彙编语言写的(至少部分是彙编语言最佳化的)。这里有两个理由,大多数广泛使用的高级语言,例如C,并不适合于描述典型的DSP算法。,DSP结构的複杂性,如多存储器空间、多汇流排、不规则的指令集、高度专门化的硬体等,使得难于为其编写高效率的编译器。
即便用编译器将C原始码编译成为DSP的彙编代码,最佳化的任务仍然很重。典型的DSP套用都具有大量计算的要求,并有严格的开销限制,使得程式的最佳化必不可少(至少是对程式的最关键部分)。,考虑选用DSP的一个关键因素是,是否存在足够的能够较好地适应DSP处理器指令集的程式设计师。
开发工具的要求
因为DSP套用要求高度最佳化的代码,大多数DSP厂商都提供一些开发工具,以帮助程式设计师完成其最佳化工作。例如,大多数厂商都提供处理器的仿真工具,以準确地仿真每个指令周期内处理器的活动。无论对于确保实时操作还是代码的最佳化,这些都是很有用的工具。
GPP厂商通常并不提供这样的工具,主要是因为GPP程式设计师通常并不需要详细到这一层的信息。GPP缺乏精确到指令周期的仿真工具,是DSP套用开发者所面临的的大问题由于几乎不可能预测高性能GPP对于给定任务所需要的周期数,从而无法说明如何去改善代码的性能。
套用
现代社会对数据通信需求正向多样化、个人化方向发展。而无线数据通信作为向社会公众迅速、準确、安全、灵活、高效地提供数据交流的有力手段,其市场需求也日益迫切。正是在这种情况下,3G、4G通信才会不断地被推出,无论是3G还是4G,未来通信都将离不开DSP技术(数位讯号处理器),DSP作为一种功能强大的特种微处理器,主要套用在数据、语音、视像信号的高速数学运算和实时处理方面,可以说DSP将在未来通信领域中起着举足轻重的作用。
为了确保未来的通信能在各种环境下自由高效地工作,这就要求组成未来通信的DSP要具有非常高的处理信号的运算速度,才能实现各种繁杂的计算、解压缩和编解码。而目前DSP按照功能的侧重点不一样,可以分为定点DSP和浮点DSP,定点DSP以成本低见长,浮点DSP以速度快见长。如果单一地使用一种类型的DSP,未来通信的潜能就不能得到最大程度的发挥。为了能将定点与浮点的优势集于一身,突破DSP技术上的瓶颈,人们又推出了一种高级多重处理结构--VLIW结构,该结构可以在不提高时钟速度的情况下,实现很强的数位讯号处理能力,而且它能具备定点DSP和浮点DSP所有的优点。为了能推出一系列更高档的新技术平台,人们又开始注重DSP的核心技术的开发,因为DSP的核心就相当于计算机的CPU一样,被誉为DSP的心脏,大量的算法和操作都得通过它来完成,该核心结构的质量如何,将会直接影响整个DSP晶片的性能、 功耗和成本。
考虑到未来无线访问Internet网际网路和开展多媒体业务的需要,现在美国的Sun公司又开始準备準将该公司的拳头产品--PersonalJava语言嵌入到DSP中,以便能进一步提高DSP在处理信号方面的自动化程度和智慧型化程度。,在以前DSP中也潜入了其他软体语言,例如高级C语言,但这种语言在处理网路资源以及多媒体信息方面无能为力;而PersonalJava是一种适合个人网路连线和套用的Java环境,基于该环境的个人通信系统可以从网路和Internet网上下载数据和图像。,人们还在研究开发符合MPEG-4无线解压缩标準DSP,该压缩标準将为未来通信传输各种多媒体信息提供了依据。
作为一个案例研究,我们来考虑数字领域里最通常的功能滤波。简单地说,滤波就是对信号进行处理,以改善其特性。例如,滤波可以从信号里清除噪声或静电干扰,从而改善其信噪比。为什幺要用微处理器,而不是模拟器件来对信号做滤波呢?我们来看看其优越性
模拟滤波器(或者更一般地说,模拟电路)的性能要取决于温度等环境因素。而数字滤波器则基本上不受环境的影响。
数字滤波易于在非常小的宽容度内进行複製,因为其性能并不取决于性能已偏离正常值的器件的组合。
一个模拟滤波器一旦製造出来,其特性(例如通带频率範围)是不容易改变的。使用微处理器来实现数字滤波器,就可以通过对其重新编程来改变滤波的特性。