时间:2023-03-23 15:24:25
引言:寻求写作上的突破?我们特意为您精选了4篇数字信号论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
1.2电源电路其中电源电路主要是给整机电路提供稳定的电压和电流的,能够让电路工作在抗干扰能力强的电源电路环境下;该工作电路的电压通常给单片机能够提供正常工作的+5V电压(TTL电路电平),并且能够提供18V(CMOS电路电平)电压,考虑到整机的用电电压、电流以及单片机的抗干扰要求,采用一般的三端稳压器组成电源电路,再外加滤波措施,这种电路更能保证电路稳定、长时间工作。
1.3输入选择电路输入电路选择和控制信号来自于工作参数设置开关和工作状态控制开关。输入信号为直流电平,幅度为5V。根据所需的选择控制方式和数量,拟采用独立式非编码的键盘电路实现输入信号的选择;具体选择和控制开关设计如下:(1)工作状态控制开关K0;(2)信号序列选择开关K1、K2;其中K1—代表穷举测试序列的选择开关。其中K2—代表走步测试序列的选择开关。(3)输出频率选择开关KF(在主机电路中)分别为100KHZ、10KHZ、1KHZ三个档位。(4)输出信号幅度选择开关Ku(在输出驱动电路中)分别为5V、18V两档。
1.4输出驱动电路输出驱动电路首先要把单片机给出的两个8位的信号组合成16位电路信号输出,再根据输出信号幅度选择开关的设置输出相应的信号电平。其中,根据输出信号的电平变化和驱动能力要求,输出的两个8位信号通过锁存器实现8到16的组合,用高压输出驱动器完成电平变化和驱动要求。
1.5主机部分主机电路根据信号序列和频率变化的要求,拟采用单片机AT89C51实现所需的控制处理功能,通过软件编程的方法实现电路所要达到的功能。
2电路的主要实现原理
多路数字信号发生器是一个能够输出16位的数字信号源,它能够产生满足数字电路检测用的多路数字序列信号。通过AT89C51单片机为核心部分,通过单片机控制电路输出的序列,本电路可以产生两种序列,一种是‘穷举’测试信号序列,这种序列即为216个16路信号;一种是‘走步’测试信号序列,即为每路逐个输出“0”,与每路逐个输出“1”组合。这些序列通过单片机I/O口输出,在经过地址锁存器将所输出的信号进行锁存输出,就得到想要的16位数字信号。如果我们需要模拟信号,可经过将正弦波,三角波波形数据做成波形表,用查表法来输出波形数据。经D/A(DAC0832)转换输出波形。AT89C51有4KB的程序内存可以用来存储运行程序,而128B的RAM则可用来保存波形参数及用户自定的外部波形的数据。由于是数字合成技术,因此该信号源可以产生多种波形。在频率的选择上多路数字信号发生器通过AT89C51单片机和电路,通过软件编程的方法控制频率的输出,输出的频率分别为1KHz、10KHz、100KHz三个档位。
在实际设计时应根据具体的应用选择合适的DSP。不同的DSP有不同的特点,适用于不同的应用,在选择时可以遵循以下要点。
算法格式
DSP的算法有多种。绝大多数的DSP处理器使用定点算法,数字表示为整数或-1.0到+1.0之间的小数形式。有些处理器采用浮点算法,数据表示成尾数加指数的形式:尾数×2指数。
浮点算法是一种较复杂的常规算法,利用浮点数据可以实现大的数据动态范围(这个动态范围可以用最大和最小数的比值来表示)。浮点DSP在应用中,设计工程师不用关心动态范围和精度一类的问题。浮点DSP比定点DSP更容易编程,但是成本和功耗高。
由于成本和功耗的原因,一般批量产品选用定点DSP。编程和算法设计人员通过分析或仿真来确定所需要的动态范围和精度。如果要求易于开发,而且动态范围很宽、精度很高,可以考虑采用浮点DSP。
也可以在采用定点DSP的条件下由软件实现浮点计算,但是这样的软件程序会占用大量处理器时间,因而很少使用。有效的办法是“块浮点”,利用该方法将具有相同指数,而尾数不同的一组数据作为数据块进行处理。“块浮点”处理通常用软件来实现。
数据宽度
所有浮点DSP的字宽为32位,而定点DSP的字宽一般为16位,也有24位和20位的DSP,如摩托罗拉的DSP563XX系列和Zoran公司的ZR3800X系列。由于字宽与DSP的外部尺寸、管脚数量以及需要的存储器的大小等有很大的关系,所以字宽的长短直接影响到器件的成本。字宽越宽则尺寸越大,管脚越多,存储器要求也越大,成本相应地增大。在满足设计要求的条件下,要尽量选用小字宽的DSP以减小成本。
在关于定点和浮点的选择时,可以权衡字宽和开发复杂度之间的关系。例如,通过将指令组合连用,一个16位字宽的DSP器件也可以实现32位字宽双精度算法(当然双精度算法比单精度算法慢得多)。如果单精度能满足绝大多数的计算要求,而仅少量代码需要双精度,这种方法也可行,但如果大多数的计算要求精度很高,则需要选用较大字宽的处理器。
请注意,绝大多数DSP器件的指令字和数据字的宽度一样,也有一些不一样,如ADI(模拟器件公司)的ADSP-21XX系列的数据字为16位而指令字为24位。
DSP的速度
处理器是否符合设计要求,关键在于是否满足速度要求。测试处理器的速度有很多方法,最基本的是测量处理器的指令周期,即处理器执行最快指令所需要的时间。指令周期的倒数除以一百万,再乘以每个周期执行的指令数,结果即为处理器的最高速率,单位为每秒百万条指令MIPS。
但是指令执行时间并不能表明处理器的真正性能,不同的处理器在单个指令完成的任务量不一样,单纯地比较指令执行时间并不能公正地区别性能的差异。现在一些新的DSP采用超长指令字(VLIW)架构,在这种架构中,单个周期时间内可以实现多条指令,而每个指令所实现的任务比传统DSP少,因此相对VLIW和通用DSP器件而言,比较MIPS的大小时会产生误导作用。
即使在传统DSP之间比较MIPS大小也具有一定的片面性。例如,某些处理器允许在单个指令中同时对几位一起进行移位,而有些DSP的一个指令只能对单个数据位移位;有些DSP可以进行与正在执行的ALU指令无关的数据的并行处理(在执行指令的同时加载操作数),而另外有些DSP只能支持与正在执行的ALU指令有关的数据并行处理;有些新的DSP允许在单个指令内定义两个MAC。因此仅仅进行MIPS比较并不能准确得出处理器的性能。
解决上述问题的方法之一是采用一个基本的操作(而不是指令)作为标准来比较处理器的性能。常用到的是MAC操作,但是MAC操作时间不能提供比较DSP性能差异的足够信息,在绝大多数DSP中,MAC操作仅在单个指令周期内实现,其MAC时间等于指令周期时间,如上所述,某些DSP在单个MAC周期内处理的任务比其它DSP多。MAC时间并不能反映诸如循环操作等的性能,而这种操作在所有的应用中都会用到。
最通用的办法是定义一套标准例程,比较在不同DSP上的执行速度。这种例程可能是一个算法的“核心”功能,如FIR或IIR滤波器等,也可以是整个或部分应用程序(如语音编码器)。图1为使用BDTI公司的工具测试的几款DSP器件性能。
在比较DSP处理器的速度时要注意其所标榜的MOPS(百万次操作每秒)和MFLOPS(百万次浮点操作每秒)参数,因为不同的厂商对“操作”的理解不一样,指标的意义也不一样。例如,某些处理器能同时进行浮点乘法操作和浮点加法操作,因而标榜其产品的MFLOPS为MIPS的两倍。
其次,在比较处理器时钟速率时,DSP的输入时钟可能与其指令速率一样,也可能是指令速率的两倍到四倍,不同的处理器可能不一样。另外,许多DSP具有时钟倍频器或锁相环,可以使用外部低频时钟产生片上所需的高频时钟信号。
存储器管理
DSP的性能受其对存储器子系统的管理能力的影响。如前所述,MAC和其它一些信号处理功能是DSP器件信号处理的基本能力,快速MAC执行能力要求在每个指令周期从存储器读取一个指令字和两个数据字。有多种方法实现这种读取,包括多接口存储器(允许在每个指令周期内对存储器多次访问)、分离指令和数据存储器(“哈佛”结构及其派生类)以及指令缓存(允许从缓存读取指令而不是存储器,从而将存储器空闲出来用作数据读取)。图2和图3显示了哈佛存储器结构与很多微控制器采用的“冯·诺曼”结构的差别。
另外要注意所支持的存储器空间的大小。许多定点DSP的主要目标市场是嵌入式应用系统,在这种应用中存储器一般较小,所以这种DSP器件具有小到中等片上存储器(4K到64K字左右),备有窄的外部数据总线。另外,绝大多数定点DSP的地址总线小于或等于16位,因而可外接的存储器空间受到限制。一些浮点DSP的片上存储器很小,甚至没有,但外部数据总线宽。例如TI公司的TMS320C30只有6K片上存储器,外部总线为24位,13位外部地址总线。而ADI的ADSP2-21060具有4Mb的片上存储器,可以多种方式划分为程序存储器和数据存储器。
选择DSP时,需要根据具体应用对存储空间大小以及对外部总线的要求来选择。
开发的简便性
对不同的应用来说,对开发简便性的要求不一样。对于研究和样机的开发,一般要求系统工具能便于开发。而如果公司在开发下一代手机产品,成本是最重要的因素,只要能降低最终产品的成本,一般他们愿意承受很烦琐的开发,采用复杂的开发工具(当然如果大大延迟了产品上市的时间则是另一回事)。
因此选择DSP时需要考虑的因素有软件开发工具(包括汇编、链接、仿真、调试、编译、代码库以及实时操作系统等部分)、硬件工具(开发板和仿真机)和高级工具(例如基于框图的代码生成环境)。利用这些工具的设计过程如图4所示。
选择DSP器件时常有如何实现编程的问题。一般设计工程师选择汇编语言或高级语言(如C或Ada),或两者相结合的办法。现在大部分的DSP程序采用汇编语言,由于编译器产生的汇编代码一般未经最优化,需要手动进行程序优化,降低程序代码大小和使流程更合理,进一步加快程序的执行速度。这样的工作对于消费类电子产品很有意义,因为通过代码的优化能弥补DSP性能的不足。
使用高级语言编译器的设计工程师会发现,浮点DSP编译器的执行效果比定点DSP好,这有几个原因:首先,多数的高级语言本身并不支持小数算法;其次,浮点处理器一般比定点处理器具有更规则的指令,指令限制少,更适合编译器处理;第三,由于浮点处理器支持更大的存储器,能提供足够的空间。编译器产生的代码一般比手动生成的代码更大。
不管是用高级语言还是汇编语言实现编程,都必须注意调试和硬件仿真工具的使用,因为很大一部分的开发时间会花在这里。几乎所有的生产商都提供指令集仿真器,在硬件完成之前,采用指令集仿真器对软件调试很有帮助。如果所用的是高级语言,对高级语言调试器功能进行评估很重要,包括能否与模拟机和/或硬件仿真器一起运行等性能。
大多数DSP销售商提供硬件仿真工具,现在许多处理器具有片上调试/仿真功能,通过采用IEEE1149.1JTAG标准的串行接口访问。该串行接口允许基于扫描的仿真,即程序员通过该接口加载断点,然后通过扫描处理器内部寄存器来查看处理器到达断点后寄存器的内容并进行修改。
很多的生产商都可以提供现成的DSP开发系统板。在硬件没有开发完成之前可用开发板实现软件实时运行调试,这样可以提高最终产品的可制造性。对于一些小批量系统甚至可以用开发板作为最终产品电路板。
支持多处理器
在某些数据计算量很大的应用中,经常要求使用多个DSP处理器。在这种情况下,多处理器互连和互连性能(关于相互间通信流量、开销和时间延迟)成为重要的考虑因素。如ADI的ADSP-2106X系列提供了简化多处理器系统设计的专用硬件。
电源管理和功耗
DSP器件越来越多地应用在便携式产品中,在这些应用中功耗是一个重要的考虑因素,因而DSP生产商尽量在产品内部加入电源管理并降低工作电压以减小系统的功耗。在某些DSP器件中的电源管理功能包括:a.降低工作电压:许多生产商提供低电压DSP版本(3.3V,2.5V,或1.8V),这种处理器在相同的时钟下功耗远远低于5V供电的同类产品。
b.“休眠”或“空闲”模式:绝大多数处理器具有关断处理器部分时钟的功能,降低功耗。在某些情况下,非屏蔽的中断信号可以将处理器从“休眠”模式下恢复,而在另外一些情况下,只有设定的几个外部中断才能唤醒处理器。有些处理器可以提供不同省电功能和时延的多个“休眠”模式。
c.可编程时钟分频器:某些DSP允许在软件控制下改变处理器时钟,以便在某个特定任务时使用最低时钟频率来降低功耗。
d.控制:一些DSP器件允许程序停止系统未用到的电路的工作。
不管电源管理特性怎么样,设计工程师要获得优秀的省电设计很困难,因为DSP的功耗随所执行的指令不同而不同。多数生产商所提供的功耗指标为典型值或最大值,而TI公司给出的指标是一个例外,该公司的应用实例中详细地说明了在执行不同指令和不同配置下的功耗。
成本因素
在满足设计要求条件下要尽量使用低成本DSP,即使这种DSP编程难度很大而且灵活性差。在处理器系列中,越便宜的处理器功能越少,片上存储器也越小,性能也比价格高的处理器差。
封装不同的DSP器件价格也存在差别。例如,PQFP和TQFP封装比PGA封装便宜得多。
(2)网络中传输的虽然都是已调制的高频信号,但数字频道是多电平正交幅度调制(64QAM)的数字调制方式。模拟频道是残留边带幅度调制的模拟调制方式,二者共同点是都有“幅度调制”的特点,对传输网络的幅度线性失真都是非常敏感的。
(3)要全面理解数字频道和模拟频道在传输电平测量上的区别。1)不管是模拟频道还是数字频道,在网络中的传输功率都是相同的,但二者在频道内的能量分布不同,特别是峰值能量的数值差异很大。在测量上,二者的传输电平有不同的表述方式。数字频道是数字信号调制的高频载波,在频道内,能量是相对均匀分布的,各频率处“峰值”相等。测量时用“频道内平均功率”来表示。模拟频道是模拟信号调制的高频载波,频道内功率比较集中分布在“图像载波”和“伴音载波”附近,有明显的峰值,测量时,用峰值处的平均电平表示,所以尽管数字频道与模拟频道传输时功率大致相同,但在测试上数字频道电平要比模拟频道电平低10dB左右。二者差值太小数字频道容易进入非线性状态,除自身信号劣化外,还会干扰网络内模拟频道;二者差值太大,数字频道电平低,载噪比损失大,数字信号也会劣化。或者模拟频道电平的峰值超过网络设备的最大失真范围,信号变劣,还会产生副产物,干扰数字频道。2)每个环节电平控制。网络中传输电平是由光电收发设备、放大器、机顶盒等有源设备,器件的性能,网络拓扑结构、布置,传输节目套数,用户数量等共同决定的,在设计时作了详尽充分的考虑,并在系统图中标定了各关键点的传输电平。所以,按照设计要求,随时控制各关键点的传输电平是网络安全运行的关键,只有如此,才能稳定网络运行。在网络运行维护中,控制各个环节电平,以下几个原则问题应做到:①数字频道与模拟频道的电平是由前端决定的,特别是二者的差值是由前端保证的,所以前端调制器输出电平要严格控制好,随时检测,发现电平差异,立即纠正。②前端输入到光发射机的高频信号电平要认真按设计要求控制,不要因为同轴电缆分配网的某些变化随意提高或降低,同轴电缆分配网的电平调整服从光传输电平。③所有光接收机的输出电平也要按照设计调整,并留有电缆放大器自动控制的余量,用于温度变化补偿,机内各部位的衰减器也要按设计标定的数值安装,因为不同环节的衰减器分别影响非线性失真和载噪比。④原有的模拟同轴电缆分配网不需做大的变动,电平大体可维持正常。偏差太大的,就必须按设计要求重新配置干线放大器,调整电平也要象处理光接收机一样,按要求配置各环节衰减器。光接收机实质上是一台加了光接收模块的干线放大器。用户放大器以下的电缆分配网络调整时以用户获得足够电平、用户之间点评均衡为原则。总之,模拟数字混合传输网各个环节的电平控制至关重要。对于模拟信号,输出信号太高,会造成非线性失真‘出现网纹、交调等;输出信号太低,造成载噪比低,出现雪花、噪点等。而对于数字信号,电平输出过高或过低,都表现为停帧、马赛克或黑屏等。因此,各个环节的电平要控制得当。
2如何检测和处理数字电视故障
(1)初次安装时无法收到数字电视节目,一般由于两个原因:一是有线电视线路故障,维修人员应用数字场强仪测量数字信号电平是否在合理范围内,或者检查连接线接头是否松动,应使各种街头连接牢固。二是因为用户没有将视频线连到机顶盒与电视上,或没有把电视调到AV状态下,这种现象占报修率60%以上。
(2)安装后收台不全,很多频道显示加密状态,多数情况是用户没有弄清数字电视收费政策,只有已付费的频道才能收看,其他需要另外付费的节目虽然可以看到台标但都会是加密状态。
(3)收看时出现马赛克或卡碟的声音,基本是有线电视线路故障,多出在雨雪天或大风天之后,对有线线路进行维修后可以好转。还可能是用户室内有线接头接触不良,现行的方法都是手工完成的,这就要求工作人员在各器件与电缆的连接中不能有丝毫大意,否则将产生电弧及打火现象。当频率较低时阻抗大、信号衰减大,载噪比在25dB以下时,将出现个别频点播出的电视节目出现马赛克或卡碟的声音。
(4)前端机房节目播出频点改变后部分频道无信号,更改播出频点这种问题不会经常发生,但是改动后会给用户收看节目造成不便,如果不重新搜索,部分频道将显示无信号,这时应尽量教会用户如何重新设置新的频点并搜索。也有的机顶盒需要进行软件升级。
(5)如果单个或几个数字频道电平过低,比邻近数字频道低5dB以上,会引起该频道所有节目都无法观看,这时要检查该频道电平比其他频道信号过低的原因。其主要有以下几种故障:同轴电缆屏蔽网接触不良、折断;电缆或插接头的主芯生锈,接触不良;光接点输出故障;致使输出单个或几个数字频道电平过低等。
1.1相关函数的定义互相关是统计学中用来表示两个随机矢量X和Y之间的协方差cov(X,Y),与矢量X的“协方差”概念相区分,矢量X的“协方差”是X的各标量成分之间的协方差矩阵。自相关是对信号相关程度的一种度量,也就是说自相关可以看作是信号与自身的延迟信号相乘后的乘积进行积分运算,随机信号的自相关函数与其功率谱是傅氏变换对(随机信号无法得到具体的函数表达式,只有其统计信息),通过对接受信号的自相关运算可以进行频谱分析。同时,自相关在信号检测中也有很重要的作用,是在误码最小原则下的最佳接收准则[6]。
1.2信号处理中矩阵的相关性分析一个自适应系统输入的有用信号可以是确定信号或随机信号,而输入信号中不可避免的混有噪声或干扰,在频域考虑可能是窄带的也可能是宽带的[7]。一个自适应系统的输入信号和信号特性,通常对该系统的结构和性能起重要作用,输入信号用向量的形式表示,隐去时间函数,则信号向量X可以表示为。矩阵分析作为一种重要的数学工具,在信号与信息处理领域起着不可替代的作用。由于在现代信号处理、图像处理,以及通信相关领域中的操作和运算中,为了满足性能需要,所以对数据的吞吐量有极高的要求,其中很多操作都必须实时完成,所以对相关算法的实现速度就有了很高的要求。在数字信号处理中,大部分处理信号和图像的算法具有局部化、计算数据密集以及海量的矩阵运算等特点,所以为了提高算法的实现速度,寻找一种高速矩阵运算和高速密集型数据运算的方法对很多在数字信号处理中应用的复杂算法是十分有意义的[8]。
2GPU上大型矩阵快速运算的具体实现
在GPU中实现矩阵的快速乘法时,不仅要保证运算的精度问题,同时,也要保证运算的效率,提高运算的速度。所以,根据GPU的硬件结构,应该设计一种矩阵分块和内存分配方法[9],以便减少内存的访问次数。
2.1运算精度目前对于很多GPU来说,其只支持32b浮点数运算,所以在大量数据累加时,后面的数字位数一定被舍去过多,从而导致了运算结果的精度下降。而CUDA的浮点数运算是符合IEEE754运算精度标准的,因此,可以利用Kahan求和公式来提高运算的精度,具体流程伪代码如下。虽然Kahan求和公式在优化运算结果精度的同时增加了每个线程的运算量,但对于GPU来说,并没有内存存取的动作,所以对整体的运算效率影响很小,并且精度问题是整体运算结果的前提保证,所以这一步骤是十分必要的。
2.2矩阵分块由于CUDA平台一个线程块只同时支持512个线程并行工作,所以只有当内存控制器从某个固定倍数地址开始读取时,工作效率最高。解决这个问题最好的办法就是将大矩阵分解为16×16的小矩阵,这样每一个线程块就同时使用256个线程并行计算。所以小矩阵就可以完全加载到高速共享内存中,同时小矩阵自身乘法也不需要再存取外部内存。为了方便进行线程块的计算,对于两个矩阵A和B,可以分别为每个线程块分配16×16个线程,再建立(m/16)×(n/16)个线程块。但是,由于参加运算的矩阵阶不一定是16的倍数,所以对于最后一次分块,程序可以利用判断语句来控制。即:如果本线程的矩阵块没有超出A、B的阶数,就进行分块;如果超出,则只运算原始矩阵剩下的部分。
2.3内存分配为了使GPU高效率工作,在矩阵A和B的分块矩阵初始内存空间时,直接把内存大小配置成16的倍数,并在复制矩阵到显卡内存之前,将其清零。这种处理方法充分利用了GPU的硬件结构特点,满足GPU高效率读取内存的原则[10]。并且,CUDA提供的cudaMallocPitch()函数就可以满足该要求,它是一种节距分配,可以使分配的内存在硬件中的节距对齐,以提高共享内存的访问速度,并返回指向已分配内存的指针。
3实验结果与分析
在进行信号相关性分析的时候,往往计算量比较大,随着信号处理中矩阵的阶数不断增加,如果仅仅基于CPU的传统的串行算法,大大增加了计算所耗费的时间。在进行矩阵的相关性分析计算的过程中,实验环境配置见表1。分别对不同大小的一维矩阵进行相关性分析计算,矩阵的大小见表2。通过对矩阵A的列两两进行交叉相关性计算,产生一个一个大型矩阵输出,然后分别得出计算不同矩阵大小情况下相关性计算CPU和GPU所耗费的时间,分析计算出加速比。对不同大小的二维矩阵进行相关性分析计算,矩阵的大小见表3。对其中一个矩阵固定其大小,另外一个矩阵不断增大,对两个矩阵做二维的相关性计算,分别得出其基于CPU和GPU的相关性计算所耗费的时间,分析计算出加速比。由实验结果图3、图4可以得出,单一矩阵基于CPU和GPU进行相关性计算的的加速比最高达到了14.5倍,二维矩阵基于CPU和GPU进行相关性计算的加速比最高达到了5.3倍,二维矩阵的相关性计算涉及的数据量和计算量较大,通过计算时间可以看出基于GPU的相关性计算所耗费时间明显少于基于CPU下的相关性计算。通过实验对比可以得到随着矩阵的不断增大,进行相关性计算所用的时间不断增加,基于CPU的传统计算方式所耗费的时间增大幅度远远大于基于GPU的并行计算方式。因此基于GPU的并行加速数字信号处理中相关性算法效率明显高于传统的基于CPU的串行算法。