DSP通用算法介绍_第1页
DSP通用算法介绍_第2页
DSP通用算法介绍_第3页
DSP通用算法介绍_第4页
DSP通用算法介绍_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DSP通用算法介绍摘要数字信号处理(DSP)自1965年由Cooley和Tukey提出DFT(离散傅里叶变换)的高效快速算法(Fourier Transform,简称FFT)以来,已有近40年的历史。随着计算机和信息技术的发展,数字信号处理技术已形成一门独立的学科系统。数字信号处理作为一门独立学科是围绕着三个方面迅速发展的:理论、现实和应用。作为数字信号理论,一般是指利用经典理论(如数字、信号与系统分析等)作为基础而形成的独特的信号处理理论,以及各种快速算法和各类滤波技术等基础理论。由此在各个应用领域如语音与图象处理、信息的压缩与编码、信号的调制与调解、信道的辨识与均衡、各种智能控制与移动通讯

2、等都延伸出各自的理论与技术,到目前可以说凡是用计算机来处理各类信号的场合都引用了数字信号处理的基本理论、概念和技术。 数字化技术有今天的飞速发展,是依仗于强大的软、硬件环境支撑。作为数字信号处理的一个实际任务就是要求能够快速、高效、实时完成处理任务,这就要通过通用或专用的数字信号处理器来完成。因此,数字信号处理器是用来完成数字信号处理任务的一个软、硬件环境和硬件平台。就如同生活中的许多事情那样,使用DSP往往在一些小问题和具体细节上颇费周折。然而许多DSP书籍往往专注于大的课题,但在设计基于DSP产品的过程中,大部分时间用于罗列出所必须得“小东西”。本文包含了那些在其他DSP书籍中不曾提及的被

3、遗忘的算法,但它们却占有如此首要的位置。本文介绍的DSP通用算法包括逻辑运算,算术运算,系统的基本构件,线形比例缩放,正交信号处理,频率变换,信号平均,自动控制系统。1.逻辑运算所有的DSP器件都有一套命令集,用于实现逻辑操作,包括与,和异或等等。它们采用类似与离散逻辑门的方式进行操作,主要用于屏蔽有用的或没用的数据位,主要在位测试程序中使用。现今的大部分处理器在传统的主要用于寄存器中左移或右移数据的逻辑操作基础上,添加了内置的位测试命令。逻辑运算常常用于定点与浮点的转换,曲线拟合以及一些更高级的算法。2.算术运算 人们都已经习惯于使用计算器来实现加减乘除及平方根之类的基本算术运算,而不愿实现

4、这些基本运算背后所需要的复杂的二进制运算。虽然.一些最新的DSP已经在其内部使用硬件电路和硬件编程实现了部分的运算,但当我们在DSP中要实现同样的这些运算时,通常还必须东拼西凑的来实现这些运算。加减乘除之类的基本运算在各类处理器中以隐含的单周期命令形式提供,故在此不做进一步的讨论。二进制除法或抽象函数f(x)之类的运算包含了一系列的多周期命令,其复杂度和运算时间由所期望获得的计算结果精度决定。2.1乘法DSP器件具有一个专门的硬件乘法器,能在一个时钟周期中完成两个字节数据的二进制乘法。这一“板上”专用乘法器是DSP处理器区别于其他常用微处理器的主要特点,而且是大部分信号处理算法实现的核心。一些

5、专用的乘法,累加和数据移位命令内置于大部分处理器中,用于滤波器和基于FFT的算法。它们充分利用了当代处理器中的并行结构和流水线技术,获得程序的高速执行完成乘法的基本编码具有如下典型的形式:MPY A,B=C, Shift z将存储于寄存器B中的数据相乘,并将结果移位Z比特后,存于寄存器C在对乘法结果保存及移位的过程中,应注意不能使数值位取代最后的符号位2.2 除法二进制除法相对于加减乘运算而言要复杂得多。其算法主要包含了一系列的反复移位和有条件减法运算。更先进的处理器在其命令集中包含一个隐含的除法命令,可以直接执行该算法。实现除法MACRO调用的基本形式如下:DIV A, B=C ,Y将B除以

6、A,结果存入C中,重复执行Y遍。在某些特殊应用中,若采用曲线拟合方法,除法运算的效率会更高。2.3 函数f(x)的运算有一些数学函数不能采用直接的二进制形式计算,而必须使用逼近方法。计算一般的f(x)主要采用三种方法,第一种方法是在数据或程序空间中存储一张转换表。第二种方法是采用曲线拟合和分段逼近的策略,第三种是采用级数展开算法。1) 查表法 最直接的计算一般函数f(x)的方法是在内存中提供一张表,存在与所有可能遇到的x相对应的f(x)的值。表示x值的数据字节用于构造一个指向数据表中地址的指针,从而得到相对应的f(x)的值。如果有充足的数据或程序空间能保证f(x)计算的准确性和精度,该方法在数

7、据存储空间地址分配合理的情况下,就应采用下面两种方法。2) 曲线拟合方法 经A/D采样记录下的曲线仅在采样点上有值,非采样点需要用数值分析的方法进行处理。为了提高曲线分析的精确度,我们先对谱图曲线的一些特性进行研究。由色谱仪测出的谱图曲线可以看出:谱图曲线的形状类似于正态分布的曲线,所不同的是它不一定是对称的,但它一定是平滑的,即没有阶跃点,这意味着谱图曲线的导数应该是连续的;谱图曲线开始段和终止段一般为0值;对于不同的化学吸附谱图曲线出现峰值的时间是不同的,快的几秒钟,慢的需几分钟,更慢的则需几小时。  采用分段低次插值,虽然保证插值曲线在插值点上的连续性,但不能保证整条

8、曲线在插值点上的光滑性,即导数不一定连续,这不能满足实际系统的要求。根据谱图曲线的以上特点和拟合条件的需要,在进行曲线拟合时,为保证曲线在采样点处的一阶导数、二阶导数的连续性,采用了满足第一种边界条件的三次样条插值。从A/D采样的数据中找到A、B、C、D点(见图),把整个区间分成(A,B),(B,C),(C,D)区间,在每个区间内采用三次样条插值,限于篇幅,仅给出(B,C)段内节点为的实验数据,如表所示。        同理可得Zab(t),Zcd (t)。我们在实际拟合过程中发现,当选取的插值节点较少时,逼近误差较大,随着

9、插值节点加密,逼近程度逐步得到改善,如图所示。n=575是经A/D采样得到的基本样点,在575个节点中等距取出n=35,利用三次样条插值进行逼近得到的曲线只有在(A,C)区间内存在一定误差,n=70时误差减小,n=n/4与n=n/2时与实际拟合曲线几乎完全重合。    从谱图拟合曲线中可以看出,采用三次样条函数逼近得到的曲线具有非常好的光滑性。当采样点选取n/15时,有一定的误差,当采样点增加到n/8时误差逐渐缩小,当采样点增加到n/4时,基本逼近真实曲线,误差可以忽略。因此,在保证精度的情况下,我们可以适当降低曲线的采样速率,这样可以大大减少系统占用内存,提高运

10、算速度。    根据三次样条逼近求出的曲线在各采样点之间的表达式,直接积分可得出采样区间的面积,计算出的面积与记录仪测出的面积相比精度很高。总之,当选取插值点为记录点的三分之一时,用三次样条函数逼近得到的曲线几乎完美地拟合了用记录仪记录下的曲线,利用此方法对谱图处理具有很大的实用价值,精度高。3) 级数展开法 复杂算术函数计算的另一个方法就是合理的级数展开,这类级数构成一种仅由简单的加减乘运算构成的表示方法。在使用级数展开法时必须注意展开式能否快速收敛,如果不能,则使用曲线拟合法能较有效的满足给定的数值精度。2.4 浮点计算在大多数的DSP应用中,定点的16位运算

11、可以提供足够的动态范围(约为96db),足以满足大部分信号不损失精度。但是在某些情况下,例如信号平方会将需存储的信号的动态范围增大一倍,这样16位的定点表示就不适用了。当然如果分辨率的位数要求更多的话,那么该问题就显得无关紧要了。但如果大数值采用固定格式(即小数点位置确定)表示,那么对于小数值而言,大部分的高权值位就不得不置零,以表示两个数字在大小的相对差。在小数值的表示中,这种“数值误差“可以采用被称为浮点的表示方法解决。这种方法允许移动小数点的位置,来减少起始零的位数。 一些最新的处理器已经能支持二进制的浮点算法。而包括TMS320 C54xx系列的定点处理器的低功效器件则须用算法将定点数

12、据转换成浮点形式。3系统的的基本构件3.1 AC耦合器不论对于交流耦合还是直流耦合的输入波形,任何实际的AD转换器或采样-保持放大器均会加入少量的直流偏置。在一些信号处理应用中,特别是有关调制的应用中,该偏置是不可忽略的。有两种简明的方法可以消除该直流偏置。第一种方法是在假设直流偏置是固定情况下,从输入的数据中减去一个相同大小的负的二进制数,其效果同外加的直流偏置控制器相同。第二种方法是在处理器中加入一AC耦合滤波器的方式实现。3.2 过载考虑与限制在DSP实现中容易导致错误的一个主要原因就是信号过载问题。在大多数现存的DSP器件中,但累加器出现数值溢出时,可以定义一种操作模式,是累加器饱和,

13、即根据情况,赋为正极值或负极值。除非有特殊要求,大多数情况下,强烈推荐采用上述形式的操作。这个“安全网”能很好保证累加器存储的数据不会再发生左移。如果这一条件不能满足,那么数据在累加器进行左移时,仍会产生过载现象。3.3 时延短波信道模拟器系统中常采用软件无线电思想实现。软件无线电的宗旨就是尽可能地简化射频模拟前端,使AD转换尽可能地靠近天线去完成模拟信号的数字化,而且数字化后的信号要尽可能多地用软件进行处理,实现各种功能和指标。软件部分主要用DSP芯片来进行处理信号。根据软件无线电的知识,可以使用内插来完成精确性时延部分的工作,但为了避免插值后数据量的大增,导致DSP处理的负荷量过重,之后就

14、得考虑数据的抽取操作用以减少处理的数据量。在上部分中,可以得出内插和抽取过程都需要一滤波器进行滤波,避免内插带来的高频镜像和抽取带来的频谱混叠。可以采用内插和抽取组合的办法来解决内插所导致的数据量大增问题,并保证小尺寸时延的精度。但必须内插在前,抽取在后,以确保其中间序列的基带谱宽度不小于原始输入序列谱或输出序列谱的基带频谱宽度,否则将会引起信号失真。这里采取的是D倍内插再D倍抽取以实现级联来满足要求。但是由于他们级联的D倍内插滤波器和D倍抽取滤波器工作在相同的采样率Dfs下,所以他们可以以一个组合滤波器来代替。图3是基于内插和抽取技术的时延器结构。 3.4 抗混叠滤波在进入更为复杂的信号处理

15、任务之前,先讨论一下对外部信号的滤波要求。即使在模拟输入波形这种最简单算法中,在系统行为上,满足信号混叠的要求是至关重要的。3.5 重建滤波一个连续信号可以由其理想采样样本通过低通滤波器进行无失真的重建。理想的重建滤波器在其通带具有平坦的增益响应和线性相位特征,在更高频率的阻带具有无限衰减。同抗混叠滤波器一样,如果采样率概予信号带宽的两倍,就可以使用有限的过渡带,那么合成重建滤波器的工作就会简单一些。4.线性比例缩放运算放大器常用来在电路中增大增益。当然只用两个电阻的简易方案获得增益值的方法是十分简便的。但在DSP中实现信号大小的增益或衰减更加简单准确。4.1 乘法器缩放前面已经对乘法器进行了

16、讨论,这些足以完成对数字化得信号加以增益增益值保存在名为【gain】的变量的内存单元中,再在一个命令周期中乘以信号样值的到输出。该过程可对声音信号进行音量控制。4.2 桶形移位器DSP领域特有的改变信号大小的另一种方案是将数据字节按位左移或右移。左移一位相当于将增益增大一倍,右移一位相当于减小一倍。基于这个原因,许多数字高保真音量控制设备都有6db的增益。4.3 硬限幅和软限幅术语“硬限幅”和“软限幅”对于模拟信号处理而言是同义的,传统上又都用基于二极管的运放电路实现。二极管限定了运算放大器的最大输出电平,从而能将信号削顶。改变削顶的程度可以通过选择合适的齐纳二极管击穿电压或者改变运算放大器的

17、增益实现,从而强制信号接近输出极限。简单的DSP等效方案是利用累加器可被置为百合状态的性质。然后累加器中的信号被强制突破这一限制,如通过增加增益值,或者加上或减去一个以后还要重新减去的预先设定的常数,从而得到将原始波形削波的效果。第二种方法如下图所示:a) 输入波形;b)累加器强制正向饱和;c)累加器强制负向饱和;d)剪切后输出波形4.正交信号处理许多信号处理函数,都采用正交处理技术来提高算法的效率。这些技术特别适用于DSP,因为DSP能精确高效德实现正交波形。使用其他技术是很难实现增益为常数的90度相位变化的。通常境况下,总是折中处理相位精确性和增益精确性,如某些方法能提供出色的相位正交性,

18、但幅度匹配的性能就较差,反之,另一些能提供精确的幅度特征,但在相位特性方面就不尽人意了。由于增益和相位匹配所要达到的令人满意的要求是根据其应用决定的。下面是三种数字生成采样波形的正交模式的基本算法:希尔伯特变换滤波器,单边带正交发生器,时延。5. 频率变换在讨论频率交换的各个算法之前,有必要先说明我们所获得的结果。有各种各样的方法也能进行频率变换,但是它们都会使已调波形含有比原始波形更多的频率分量,所以在大多情况下,不能获得与消息波形相似的频谱。这里要介绍的频率变换方法是对任意消息波形,在不改变频谱分布和不生成寄生分量的条件下,进行直接频率变换的方法。该方法中经常涉及单边带调制或理想线性调制。

19、5.1 滤波器方法前面介绍过了采用滤波器生成正交波形的方法。通过将输入波形与本地振荡器进行.混频,其中本地振荡器的频率由要获得的频移量决定,再根据选择其上边带或下边带,就能实现向上或向下的频移(如图)使用滤波器的单边带频率变换方法如果本地振荡器的频率超过输入信号最高频率的一半,那么就可能完全去除不想要的边带。但是如果本地振荡器的频率低于输入频率的一般,那么边带就会产生部分重叠现象,也就不可能获得理想的频率变换。由于实际滤波器中存在有限的过渡带,所以交换低频分量时,总会发生对有用边带中的低频分量过分抑制或者对无用边带中低频分量滤除效果不佳的问题。由于边带重叠问题限制了低频本地振荡器的使用,也就限

20、制了对低频带进行的频率交换,这就是采用滤波器方法进行频率交换的主要缺点。5.2 正交频率交换如果要交换的信号是以正交形式存在的,那么使用DSP进行频率交换时轻而易举的事情。其中涉及到的简单的正交混频过程如下图所示:希尔伯特交换频率变换器每个乘法器分别输出上边带和下边带。但根据最后一级加法器的符号,会去除一个边带。如果两者是相加的,那么选择下边带,也就获得向下的频率变换。反之,如果两者是相减的,那么获得向上的频率变换。要获得无失真的频率变换,必须实现理想的正交混频和加法过程。输入信号的正交形式可以采取前面所述的任何一种方法生成,其中采用希尔伯特交换FIR滤波器是最常见的方法。事实上,在正交波形生

21、成的过程中,总会产生一些偏差,从而导致不能将混频中产生的不需要的边带完全抑制。由于非理想的增益和相位平衡会产生残余的频率分量,必须注意不能让它们与所需要的频带产生混叠。5.3 频率翻转频率变换的一种特殊情况就是频率翻转,即将整个0Hz至fs/2的频带翻转,使接近0Hz的频率分量出现在fs/2附近,反之亦然。事实上,对一个已采样的波形,该过程是十分简单的,只需要将其同fs/2处的频率分量混频,生成上下边带,其中上边带恰好紧连着下边带,而且是被翻转的形式,这就实现了频率翻转。同fs/2混频可以实现任意波形的翻转。基本的语音加密系统就是一个应用频率翻转的简明示例。6. 信号平均事实上,信号平均是对选

22、定的信号样值进行滤波操作。在大多数信号平均算法中。其中经常使用如下三种:线性平均,峰值平均和指数平均。下面主要介绍峰值平均和指数平均。6.1 指数平均与线形平均的各样值同等权值相加不同,指数平均不采用统一的权值,通常情况下,赋予最新样本值最高权值。所以,输出平均值是偏向最新的波形变化,能缓慢地“跟随”信号形状的变化。平均就其本质而言是滤波操作,所以既能采用递归的算法实现也能采用非递归的算法实现。一种简单的反馈滤波器实际上就是一阶低通滤波器的数字实现。6.2 峰值平均严格地讲,峰值平均并非是一种真正的平均过程,所设计到的是检测和存储特定波形的峰值水平。作为频谱分析仪的一个常见功能,峰值平均用于显

23、示在一段特定的时间上各个波形分量的峰值。达到该目的的一个非常简单的方法就是比较当前存储的和先前存储的采样值,并保存较大者。7. 自动控制系统7.1 自动电平控制增益控制应用十分广泛,出现在从手提式摄像机中的自动麦克风音量控制到移动电话的功率输出变化等各种不同的应用之中。实现增益控制主要可采用两种方法,一种是采用反馈环,另一种是采用前馈环。1) 反馈控制使用主信号支路中的乘法器改变信号电平。用于控制输出电平的增益常数是通过将当前信号电平和所希望的输出电平相比较决定的。如果信号电平大于所希望的参照输出信号电平,那么求和后的输出信号为负的,以致减小累加器的值,从而降低进入乘法器的常数,获得降低增益的

24、结果。在稳定状态,信号电平同参照水平相一致,那么累加器中的值保持不变。这种算法的一个特点是,环路的动态性都能是由输入信号的电平决定的。当信号电平和参照信号电平之间存在较大差别时,就会产生较大的误差信号,使累加器产生较大的变化,从而使环路快速校正。反之,当信号和参照信号之间电平差距较小时,环路的响应比较缓慢。虽然这种现象可能正是某些应用所希望的,但有一部分自动电平控制系统则要求其动态性能与输入信号无关。2) 前向控制反馈控制系统的一个缺点就是控制过程总是试图跟上输入变化的状态,而不可能提供瞬时的信号电平校正。解决该问题的方法就是采用前向控制机制。采用同样的包络检测器得出信号电平,信号包络通过函数f(x)的处理,再进入乘法器改变输出信号的电平。函数f(x)决定了前向自动电平控制电路的性能。因为所有的处理都是在前向支路,所以有可能使上下两支路的延时相同,能在上面的支路中加入一个时延元件。7.2 自动频率控制系统自动频率控制的一个主要用途是用于无线通信系统。无线通信要求将信息信号调制到指定的无线电频带上,通常对频率的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论