

免费预览已结束,剩余49页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 绪论第1章 绪论1.1 课题来源及意义数字信号处理,就是对信号的处理(包括对信号进行采集、变换、滤波、增强、压缩、识别等),是20实际60年代前后发展起来的并广泛应用于许多领域的新兴学科。进入70年代以来,随着计算机、大规模集成电路(lsi)和超大规模集成电路(vlsi)以及微处理器技术的迅速发展,数字信号处理无论在理论上还是在工程应用中,都是目前发展最快的学科之一,并且日趋完善和发展。数字信号处理中最基本的技术数字信号的产生,没有信号就根本无法谈起信号处理了。正弦交流信号是一种应用极为广泛的信号,它通常作为标准信号,用于电子电路的性能试验或参数测量。另外,在许多测试仪中也需要用标准的正弦信号检测一些物理量。正弦信号用作标准信号时,要求正弦信号必须有较高的精度、稳定度及低的失真率。目前产生正弦信号的方法较多,但各种方法都难以克服的问题是正弦信号出现频率偏差时的自动校正。为此本文采用数字信号处理技术,利用dsp芯片实现的正弦信号发生器,可实现正弦信号的频率偏差的自动调整,可产生高精度、高稳定度的低频正弦信号,能基本满足一些需要高精度正弦信号的场合。用dsp 实现的正弦信号发生器,其调幅、调频功能均由软件实现,而且有较好的可扩展性、稳定性,与计算机接口方便。1.2 dsp芯片特点dsp(digital signal processor)芯片,又称数字信号处理器,是一种特别适用于进行实时信号处理的微处理器,它的主要特点是:1哈佛结构早期的微处理器内部大多采用冯纽曼(von-neumann)结构,其片内程序空间和数据空间是结合在一起的,取指令和取操作数都是通过一条总线分时进行的。当高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。而dsp内部采用的是程序空间和数据空间分开的哈佛(havard)结构,允许同时取指令(来自程序存储器)和取操作数(来自数据存储器)。而且,还允许在程序空间和数据空间之间相互传送数据,即改进的哈佛结构。2多总线结构许多dsp芯片内部都采用多总线结构,这样可以保证在一个周期内可以多次访问程序空间和数据空间。例如tms320c54x内部有p、c、d、e等4条总线(每条总线又包括地址总线和数据总线),可以在一个机器周期内从程序存储器取1条指令、从数据存储器读2个操作数和向数据存储器写入1个操作数,大大提高了dsp的运行速度。因此,对dsp来说,内部总线是个十分重要的资源,总线越多,可以完成的功能就越复杂。3流水线结构dsp执行一条指令,需要通过取指、译码、取操作数和执行等几个阶段。在dsp中,采用流水线结构,在程序中这几个阶段是重叠的,如图1-1所示。这样,在执行本条指令的同时,还依次完成了后面3条指令的取操作数、译码和取指,将指令周期降低到最小值。 n n+1 n+2 n+3n-1 n n+1 n+2n-3 n-2 n-1 nn-2 n-1 n n+1时钟取指译码取操作数执行图1-1四级流水线操作利用这种流水线结构,加上执行重复操作,就能保证数字信号处理中用得最多的乘法累加运算 可以在单指令周期内完成。4多处理单元dsp内部一般都包括有多个处理单元,如算术逻辑单元(alu)、辅助寄存器运算单元(arau)、累加器(acc)以及硬件乘法器(mul)等。他们可以在一个指令周期内同时进行运算。例如,当执行一次乘法和累加器的同时,辅助寄存器单元已经完成了下一个地址的寻址工作,为下一次乘法和累加运算作好了充分的准备。因此,dsp在进行连续的乘加运算时,每一次乘加运算都是单周期的。dsp的这种多处理单元结构,特别适应于fir和iir滤波器。此外,许多dsp的多处理单元结构还可以将一些特殊的算法,例如fft的位码倒置寻址和取模运算等,在芯片内部用硬件实现以提高运行速度。5特殊的dsp指令为了更好的满足数字信号处理的需求,在dsp的指令系统中,设计了一些特殊的dsp指令。例如tms320c25中的macd(乘法、累加和数据移动)指令,具有执行lt、dmov、mpy和apac等4条指令的功能;tms320c54x中的firs和lms指令,则专门用于系数对称的fir滤波器和lms算法。6指令周期短早期的dsp的指令周期约400ns,采用4mnmos制造工艺,其运算速度为5mips(每秒执行5百万条指令)。随着集成电路工艺的发展,dsp广泛采用亚微米cmos制造工艺,其运算速度越来越快。以tms320c54x为例,其运行速度可达100mips,tms320c6203的时钟为300mhz,运行速度达到2400mips。7运算精度高早期的dsp的字长为8位,后来逐步提高到16位、24位、32位。为防止运算过程中溢出,有的累加器达到40位。此外,一批浮点dsp,例如tms320c3x、tms3230c4x,adsp21020等,则是提供了更大的动态范围。8硬件配置强新一代dsp的接口功能愈来愈强,片内具有串行口、主机接口(hpi)、dma控制器、软件控制的等待状态发生器、锁相环时钟发生器以及实现在片仿真符合ieee 1149.1标准的测试访问口,更易于完成系统设计。许多dsp芯片都可以工作在省电状态,使系统功耗降低。1.3 dsp的应用自从德州仪器(t1)1982年推出通用可编程dsp芯片以来,dsp技术带来了决定数字技术未来的突破性应用。最初dsp只是一种专门为实时处理大量数据而设计的微处理器但目前它已经在多种不同的领域取得了许多新的进展。它们应用于网络和互联网、高速调制解调器、无线通信、语音识别、音颁、视频和影像产品、机项盒、汽车、硬盘驱动器、工业控制及制造、雷达、声纳、地震检测、生物医学工程、机械振动b遥感遥团、地质勘铡、航空航天、电力系统故障检测、自动化仪器等,dsp技术的应用已遍布全球。ti公司的users guide概括了数字信号处理器应用的10个大方面,如下:1) 通用数字信号处理:数字滤波,卷积,相关,fft,希尔伯特变换,自适应滤波器,窗函数,波形生成等2) 通信:高速调制解调器,编解码器,自适应均衡器,传真,蜂房网移动电话,数字留言机,语音信箱,回音消除,噪杏对消,电视会议,扩频通信等3) 声音语音信号处理:语音信箱,语音识别,语音鉴别,语音合成,文字变声音,语音矢量编码等4) 图形图象信号处理:三维图形变换处理,机器人视觉,模式识别,图象鉴别,图象增强,动画,电子地图,桌面出版系统等。5) 控制:磁盘光盘伺服控制,激光打印机伺服控制,发动机控制,卡尔曼滤波6) 仪器:谱分析,函数发生,波形发生,数据采集、暂态分析,模态分析,石油地质勘探,飞行器风洞试验等7) 医学电子学:助听器x-射线断层扫描,超声设备,心电图/脑电图,核磁共振,病员监护,胎儿监视等8) 军事:雷达与声纳信号处理,导航,制导,保密通信,全球定位,搜索与跟踪等9) 计算机:阵列处理器,图形加速器、工作站,神经网络,多媒体计算机等10)消费电子:数字电视,高清晰度电视(hdtv),数字声、乐合成器,玩具与游戏机、数字应答/留言机。3第2章 tms320vc5402 数字信号处理器第2章tms320vc5402数字信号处理器2.1 tms320vc5402的主要特性1)cpu 先进的多总线结构,具有1条程序存储器总线,3条分开的16位数据存储器总线 40位算术逻辑单元(alu),包括40位的桶型移位寄存器和两个独立的40位累加器 17位17位的并行乘法器与一个40位的专用加法器结合在一起,用于非流水线的单周期乘/累加(mac)操作 比较,选择和存储单元(cssu),用于viterbi操作中的加/比较选择 指数编码器用于在单周期内计算40位累加器的指数值 2个地址生成器,包括8个辅助寄存器和2个辅助寄存器算术单元(araus) 数据总线具有数据保持特性2)存储器 数据总线具有数据保持特性 最大可寻址外部程序空间为1m16位的的扩展可寻址模式 4k16位的片内rom 16k16位双寻址的片内ram3)指令系统 程序代码的单指令重复和块重复操作指令 用于有效地程序和数据管理的存储器块传递指令 32位长字节操作数指令 读入2个或3个操作数的指令 并行存储和装入的算术指令 条件存储指令 快速从中断返回指令4)在片外围电路软件可编程等待状态发生器和可编程分区转换控制器片内锁相环(pll)时钟发生器,可采用内部震荡器或外部的时钟源两个多通道缓冲串口(mcbsps)加强的8位并行主机接口(hpi8) 两个16位定时器 6通道直接存储访问(dma)控制器5)电源 采用功耗下降模式下的idle1,idle2和idle3指令控制芯片的功耗 可控制禁止信号clkout6)其他 具有符合ieee1149.1标准的芯片仿真接口 10ns单周期定点指令运行时间(100mips),电源3.3v(内核1.8v) 144管脚tqfp封装和bga封装2.2 tms320vc5402硬件结构tms320vc5402 dsp 采用先进的修正哈佛结构和8总线结构,使处理器的性能大大提高。其独立的程序和数据总线,允许同时访问程序存储器和数据存储器,实现高度并行操作。此外,还可以在数据总线和程序总线之间相互传送数据,从而使处理器具有在单周期内同时执行算术运算、逻辑运算、移位操作、乘法累加运算以及访问程序和数据存储器的功能。程序地址产生(pagen)数据地址产生(dagen)exp编码器复用t触发器信号控制信号控制信号控制信号控制信号控制b(40)a(40)乘法器(17x17)复用移位器复用分数处理复用加(40)复用compmsw/lsw选择trntc0 饱和 舍入系统控制接口外部存储器接口外部存储器接口图2-1tms320vc5402 内部硬件组成框图2.3 dsp系统的设计及开发简介2.3.1总体设计方案一个数字信号处理系统是电子技术、信号处理技术与计算机技术相结合的产物。系统设计通常分为信号处理部分和非信号处理部分。信号处理部分包括系统的输入和输出、数据的编排和处理、各种算法的实现、数据显示和传输等;非信号处理部分则包括电源、结构、成本、体积、可靠性与可维护性等。一个系统的设计过程大致可分为以下7个部分:系统要求的描述信号分析信号处理算法设计资源分析硬件结构分析设计软件设计与调试系统集成与测试可否接受可否接受否否是是第1部分第2部分第3部分第4部分第7部分第5部分第6部分图2-2dsp总体设计框图1)系统要求的描述根据用户对应用系统的要求,提出一组系统级的技术要求和相关说明。这些要求包括人机接口、信号类型与特征、处理的项目和方式、处理系统的所有性能指标要求(含系统非信号处理的性能)以及系统的测试和验证方式等。由此形成相应的文档,作为以后设计的依据。2)信号分析信号分析部分定义输入/输出信号的类型,例如,分析随机或确定信号,模拟或数字信号是一维信号还是多维信号等,确定描述输入信号的模型。分析信号的频率范围和系统的带宽,估计系统的最大和最小电平以及信号噪声比(snr),是否需要进行预处理等。确定输出信号使用的方法、数据的吞吐率和对实时性的要求。信号分析的结果是第3部分信号处理算法设计的基础。3)信号处理算发与设计本部分是信号处理系统的核心,其任务是根据第1部分提出的要求和第2部分对信号分析的结果,对不同类型的信号和所要求的处理方式确定相应的算法。这部分要求设计者对信号处理的各种算法有较好的了解。首先是要保证算法的正确性,必要时,可利用现成的软件包,例如用matlab等工具进行仿真计算。其次是算法的有效性,当硬件给定后,算法的有效性决定了系统的处理能力和吞吐能力。算法设计的主要目标是对于一个给定的任务,获得运算量最小和使用资源最少的算法。这二者是矛盾的,这就需要找出最好的折中方案。4)资源分析系统资源分成3大类:数据吞吐率、存储器容量和输入/输出带宽。这3大资源主要决定于系统所使用的核心处理器或有关硬件,如dsp器件的运算速率、串并口数据传送的能力以及存储器空间的大小。一个存储器系统通常可分为如图2-3所示的4个大的功能块:系统控制、信号处理、数据存储、数据通信。资源分析的目的就是将前述的3大资源在功能块间进行合理的分配,以取得最佳的性能。系统控制数据存储数据通信信号处理输入 输出图2-3信号处理系统的功能块5)硬件结构分析与设计本部分根据第3部分和第4部分的结果进行硬件的结构分析与设计。这包括dsp芯片的选择、存储器配置和输入/输出通道的设计、控制和显示电路设计、电源电路以及其他相关硬件电路的设计。6)软件设计与调试基于第3部分的算法和第5部分的硬件设计,本部分的任务是完成系统的所有软件设计与调试。软件设计包括系统软件和信号处理软件。系统软件包括人机接口界面、系统的控制软件、输入/输出管理、显示以及如何与主机的操作系统(包括嵌入式操作系统)接口等。信号处理软件主要是用程序语言来实现在第3部分确定的信号处理算法,以及完成特定的处理功能。7)系统集成与测试当所有的硬件和软件设计完成后,最后是将系统的各个部分集成为一个整体,进行实际的运行测试。由于信号处理系统是一个相当复杂的系统,牵涉到电子电路、硬件、软件各个方面,设计出来的应用系统是否能满足最初提出的要求,必须通过实际的测试;如不能满足要求,必须再对硬件和软件进行响应的修改。2.3.2 软硬件件设计部分完成了上述的总体设计之后,就可以进入软硬件设计阶段.这里只给出软硬件设计的框图,分别见图2-4,2-5。编写c程序优化ansic编译器生成320汇编文件汇编语言编译器生成目标文件宏汇编源文件文档管理器宏汇编库编写320汇编语言程序链接器输出执行文件调试器320目标系统格式转换写eeprom软件仿真软件开发系统评测模块evm系统仿真xdspc机确定硬件方案器件选择原理图设计pcb图设计硬件调试系统分析系统综合 图2-4软件设计系统框图 图2-5 硬件设计系统框图第3章 dsp开发环境c5000 ccs第3章dsp开发环境c5000 ccs3.1 c5000 ccs简介code composer studio简称ccs,是ti公司推出的为开发tms320系列dsp软件的集成环境(ide)。ccs工作在windows操作系统下,类似于vc+的集成开发环境,采用图形接口界面,提供有编辑工具和管理工具。它将多种代码产生工具,诸如汇编器、链接器、c/c+编译器、建库工具等集成在了一个统一的开发平台中。ccs所集成的代码调试工具具有各种调试功能,包括了原ti公司提供的c原代码调试器和模拟器所具有的所有功能。能对tms320系列dsp进行指令级的仿真和进行可视化的实时数据分析。此外还提供了丰富的输入/输出库函数和信号处理的库函数,极大地方便了tms320系列dsp软件的开发过程。c5000 ccs是专为开发c5000系列dsp应用设计的,包括tms320c54x和tms320c55x dsp。本节介绍c5000 ccs的主要功能模块及有关的使用方法,下节将介绍dsp程序开发方法。在第5章还将用其设计信号发生器。3.1.1 ccs的组成图3-1是ccs系统的示意图,主要由以下的组件构成,即:配置工具code composer编辑器源文件.c;.h;.asm.cdb(配置数据库)cfg.cmdcfg.s54cfg.h54dsp/bios apicode composer工程代码产生工具编译器汇编器链接器ole应用使用rtdxrtdx插件dsp/bios插件第3方插件可执行代码code composer 调试工具主机仿真支持目标系统硬件图3-1是ccs系统的示意图1)tms320c54x代码产生工具,包括汇编器、链接器、c/c+编译器、组建工具;2)ccs集成开发环境,包括编辑器、工程管理工具、调试工具等;3)dsp/bios插件及其应用程序接口(api);4)rtdx(实时数据交换)插件以及相应的api;5)由ti公司以外的第3方提供各种应用模块插件。3.1.2 利用ccs的软件开发流程ccs ide支持如图3-2所示的dsp软件开发环境的各个阶段。设计总体思想代码产生创建工程、编写源代码、配置文件调试语法检查程序调试分析实时调试、统计分析、跟踪分析图3-2简化的ccs开发流程图3.1.3 ccs系统配置为了使用ccs,必须首先完成以下的工作:1) 按照具体使用的模拟器或仿真目标板的产品说明,安装目标板和驱动程序。ccs支持纯软件的开发调试工具模拟器(simulator)和各种硬件仿真开发目标板。若采用模拟器时可进行软件的调试工作,但不能进行实时的仿真。2) 按ccs的产品说明安装ccs。3) 创建ccs系统配置,为ccs配置结构文件。3.2 ccs的基本操作使用这里仅举一个简单的例子,实现简单的“hello world”显示。1 创建一个新工程1) 在ccs的安装目录(假设安装目录为 c:ti)的myprojects子目录下创建一个hello目录。2) 将c:ti5400tutorialhello1目录下所有文件复制到新建的hello目录中。3) 从程序组或桌面上运行code composer studio。如果在ccs设置程序中安装并设置了多个驱动程序,则运行ccs将启动parallel debug manager 的运行。此时先启动simulator的运行。如果有硬件仿真器极其驱动程序,也可以直接启动emulator的运行。4) 在project菜单中选择new项,将弹出save new project as窗口。5) 选择新建的目录并打开,将project 存为hello,ccs将创建一个名为hello.mak的工程,此文件保存了工程的设置信息及工程中的文件引用情况。2 将文件添加到工程中图3-3工程视图1) 从project 菜单中选取add files to project命令,选取hello.c 文件,双击将hello.c添加到工程中。2) 将vector.asm 添加到工程中(方法同上)。vector.asm 中包含有将 reset 中断指向c程序入口 c_int00 的汇编指令。3) 将hello.cmd添加到工程中,此文件的作用是将块(sections)映射到存储器中。4) 将c:tic5400cgtoolslib中的rts.lib加到工程中,此文件为采用c开发dsp应用程序的运行支持库文件。5) 在工程视图中双击所有“+”号,即可看到整个工程的结构,如图3-3所示。如果没有看到工程视图,则需在view菜单下选择project,打开工程视图。还应双击工程视图左下角的file 图标以确保能看到观察图3-3所示的工程结构。6) 在以上的操作中,没有将头文件加到工程中,ccs将在biuld时自动查找所需的头文件。当build完成时,可在project视图中观察到生成程序所需的头文件。如需从工程中除去一个文件,可将该文件选中,按 delete 键即可,也可以单击右键,在弹出菜单中选择 remove 将该文件从工程中移走。当 build 一个程序时,ccs 将自动依次从以下路径中查找工程所需的文件。 包括源文件的目录。 project option 下 compoer 和 assembler 选项的 include search path 域中定义的路径。 c54x_c_dir(c编译器)和c54x_a_dir(编译器)环境变量中声明的路径。c54x_c_dir指向的路径中包含有 rts.lib 文件。3 查看代码双击 project 视图中的 hello.c ,将在右边的代码框中看到文件源代码。可以在 option菜单中选择字体大小。从 c 代码可以看出,如果 fileio 未定义,此程序将只能在屏幕上显示“hello world!”信息。如果 fileio 已定义,程序还将提示输入一个字符串并将其存入文件,然后从文件中读取该字符串并显示在屏幕上。4 生成和运行程序1) 执行菜单命令 project rebuild all 或在 project 工具栏上双击 rebuild all 图标,对工程重新编译、汇编和链接,output 窗口将显示进行汇编、编译和链接的相关信息。2) 执行菜单命令 fileload program ,选择 hello.out 并打开,将 build 生成的程序加载到dsp中。ccs将自动打开一个反汇编窗口,显示加载程序的反汇编指令,同时主窗口下方的 output 窗口将显示 stdout 输出,如图3-4所示。3) 在反汇编窗口中单击汇编指令,按 f1 键将切换至在线帮助窗口,显示光标所在行的关键词的帮助信息。例如,将光标放在c_int00 行下的 stm 处,按f1键将显示汇编指令的帮助信息。4) 执行菜单命令 optiondis-assembly style options ,在弹出窗口中选择不同的 stm选项,查看反汇编窗口的变化。例如在 dis-assembly style 下选择 algebraic 并确认,则反汇编窗口将以代数指令显示反汇编代码。监视窗口工程观察窗口反汇编窗口5) 执行菜单命令 debugrun 或在 debug 工具栏上单击 run 按钮。由于运行支持库(ras.lib)中包括有 c的输出 puts()函数,因此可在监视窗口看到“hello world”信息,如图3-4所示。3-4在监视窗口显示程序的结果第4章 波形生成算法及其分析第4章 波形生成算法及其分析波形生成是通信系统、仪器制造和控制系统等领域的基础。较之传统的模拟实现方案而言,波形生成的数字实现方法具有更严格的规范,系统与电路匹配,能提供更佳的精确性、可靠性和灵活性。在考虑波形生成的算法时,必须注意以下几点:a波形纯度。波形的纯度需要达到怎样的要求?正弦波的纯度通常采用总谐波失真(thd)表示,其定义如下: (4.1)例如一个thd为0.1%的正弦波形发生器的失真能量级约低于基波分量30db。b频率/周期控制。波形的频率或周期是否需要变化,例如压控振荡器?c相位控制。波形的相关相位是否需要变化?d内存使用。波形生成的算法需要占用多少内存?(通常情况下,波形纯度即低thd,和内存要求是一对矛盾关系。)e执行时间。对算法时间有怎样的研制?(通常情况下执行时间和内存要求是一对矛盾关系。)f精确性。对增益和频率设定方面有怎样的要求?上述各个因素用来衡量下面将涉及的各个波形生成算法。表4-1总结了针对给定的应用选择算法的重要方面。表4-1生成正弦波的算法特性总结振荡器类型 谐波分量 算法复杂性要求 程序内存控制 相位/频率 执行时间查表法 低/中 低 强 好 短张弛处理法 高 中 弱 一般 中等递归法 低 低 弱 差 短4.1 查找表/采样波形生成器这种波形生成的方法大概是生成任意波形特性的最具灵活性并在理论上最简单的方法。但因为它仅适应于数字信号处理,而且特别需要大量的数据存储空间和检索设施,所以具有模拟设计背景的工程师一般都不采用它。该方法仅需要将代表所要生成的波形的一系列离散采样数据读取出来即可(如图4-1所示)。这些数据可以对相应的模拟波形采样获得,更常见的是由计算机得出所需的数据。在采样点数据足够,能精确表示波形的一个周期的情况下(若波形是对称的,就可减少样值的数量),那么连续的波形就可以通过循环读取内存数据单元来生成。变化频率/周期可以通过改变从内存中读取连续样值的速率(如改变执行时间)或者在执行时间固定的情况下从每n个样值中选取一个来获得。后一种方法受波形混叠要求限制,要求在所要生成波形的最高频率分量的每个周期中,至少选取两个采样点。在讨论了正弦波发生器这一重要示例后,就能更好地理解该技术在算法中的应用。样值0.40.750.330.4-0.26-0.81键盘d/a图4-1查找表法波形生成器4.1.1 正弦波发生器:查找表法图4-2中的正弦波由其一个周期中等时间间隔的八个采样点表示。样本值由如下的函数计算所得:1 2 34 5 6 7 8 (4.2)数据表取样值123456780.70710.7070-0.707-1-0.7070图4-2被采样的正弦波形(每周期8点)其中是第个样值,n是一个周期中样值的个数(本例中为8)。由这些计算出的样本值生成的波形的精确性由处理器的字长决定。一旦样值驻入内存,正弦波就可由循环遍历内存空间和读取存储的数据生成。循环的速率和总的程序执行时间决定了振荡的频率。由上述方法的本质可知,其缺点就是示例的正弦波的频率被固定在程序循环周期的1/8。要改变振荡的频率,可以改变程序执行速度或者跳过一些存储的样值。例如,使地址计数器每次增加2而非增加1,即从数据表中间隔地读取波形样值,就能使振荡频率翻倍,而且每周期只有4个样值。(注:要重建信号,每周期至少选取两个采样点以满足奈奎斯特法则。)连续变化地址计数器的步长,可以获得采样限制范围内的任何频率。但是波形的精确性会变化很大。例如,在使用8个采样点的情况下,如果我们要生成一个频率为程序执行速率的1/6的信号,那么地址计数器就必须在6个程序周期中遍历整个波形数据表。如图1-2所示,在这种情况下,8个存储数据中只有2个同正确的波形数据完全吻合,而其余4个仅仅是接近剩下的6个存储数据,正是这种近似造成了波形的精确性。当然在内存中存储越多的数据,选择的范围就越大,那么所需要的数据和存储在波形发生器内已有的样值之间的差距就越小。样值误差要求的样值存储的样值要求的样值0.860.860-0.86-0.860有效的样值0.70710.7070-0.707-1-0.7070图4-3由于存储固定数量的样本值造成的波形失真的示例使用查找表波形发生器生成的波形振荡频率可由下式计算所得: (4.3)其中step为地址寄存器步长,为程序执行时间,n为每周期存储的样值数量。在大多数情况下,所需要的step值不会是一个整数(如上例中的8/6),而且为了获得合适的整数地址指针值,就必须使用结尾和舍入方法。使用该方法,可获得的振荡频率的分辨率是由表示step值的精确性决定的。实际上,最小频率步长的大小由下式给出: (4.4)其中m为保存step的寄存器的字长。在dsps网站可查阅使用查找表法的正弦曲线波形发生器的c和汇编算法程序。表4-2显示了各种整数和非整数步长的波形精确性,其为存储样值数量n的函数,根据给定的内存空间大小能快速查找到可获得的最小精确度。表4-2查找表正弦波生成器的总谐波失真样值n数 步长 直接查表总的谐波失真 线形内插(低于基本的db值)32 2 60 602.25 25 282.5 26 292.75 25 28 3 60 608.25 25 2811.25 25 2864 2 60 602.25 31 372.5 32 382.75 31 37 3 60 608.25 31 3711.25 31 37128 2 60 602.25 37 602.5 38 602.75 37 60 3 60 608.25 37 6011.25 37 584.1.2 降低存储量的方法要降低高精确度波形发生器对存储量的要求,就必须利用波形的对称性,由于对称性波形造成了数据的重复存储。就正弦曲线的例子而言,每个周期中,数据(忽略符号变化)均存储了四次,所以,只需要四分之一的存储空间就足以表示波形了。但是其代价就是提高了算法的复杂性,因为必须跟踪要生成的波形是处于四个象限的哪一部分,并应该加上什么符号。对于特定的应用和dsp器件而言,应该根据内存的价值和执行时间决定最佳的折中方案。4.1.3 频率控制上文已经介绍过,振荡频率和波形重复的周期是受地址计数器的步长变化控制的。所以可以在算法中加入一个压控振荡器(vco),使步长的变化和控制电压相一致。一种方法是给step加上一个控制量fcont,从而获得的振荡频率为: (4.5) 频率偏移量为: (4.6)当控制量为零时,振荡器处于原定的“自由”振荡频率,其中为: (4.7)4.1.4 相位控制振荡器的相位可以采用同上面相似的简单方法,即给查找表地址指针加上一个相位偏移量pcont,那么相位偏移量为 : (4.8)注意,如果要用相位调制,那么在读取下一张数据表之前,必须从地址指针中减去先前的相位偏移量。这样就能保证相位移动总是以同一固定频率作为参照量。不然的话,就会产生频率调制。4.1.5 正交振荡器两个震荡器之间的固定的或者变化的相位差可以容易地通过在主指针上加上一个偏移量构造一个辅指针获得,使获得的数据样值产生适当的延时或相位差。该技术在生成正交正弦波时特别有用。4.1.6 任意波形生成查找表法显然,查找表法可用来生成任意的周期或非周期波形。一种十分有价值的应用就是生成复杂的数据调制格式。预先计算出已调制的输出符号,并将其存储在数据表中,可根据输入的数据流进行查找。该方法对于编解码和调制解调器开发中的可再生测试信号的产生也十分有用。4.2 线性分段逼近波形发生器直接查找表法的主要缺点就是由于使用非整数的step而产生较大的波形不精确。虽然样值取得越多,精确性越高,但是存储空间的开销也会增加。解决该问题的一个方法就是采用插补方法对两个已存储的样值之间的波形数据做一个更好的估计。最简单的方法就是直线差补法(曲线拟合),即使用直线公式计算两个样值之间得到中点数据: (4.9)图4-4说明了该方法对8个采样点的正弦曲线的应用。已知要求的波形数据y在时刻落在样本a和b之间,那么y的取值应为: (4.10)其中时间参量就是地址计数器值的小数部分f。使用直接查找表法可获得估计值a,所以在算法中只需要加入辅助部分,按下式计算改进因子: (4.11)根据对程序执行时间的内存空间的要求,斜率(ba)可以在每次程序循环中计算得出,或者预先计算斜率并存储在另一张数据表中。可在网上查阅后一种方法的实现。 ba图4-4正弦采样波形生成器的分段逼近在4.1.1的表4-2中,列出了使用该方法所能获得的改进的精确度。显然,采用频率和相位控制对直接查找表法而言也能获得同样的效果。如果在插补过程中,用泰勒级数或马克林级数展开代替直线逼近公式,就能获得更好的改进,但是其代价就是增加算法复杂性和执行时间。4.3 使用边界稳定递归滤波器部件的正弦波生成方法 第三种十分有用的正弦曲线生成方法就是使用二阶边界稳定的滤波器部件。这个通常被称为递归振荡器的部件是精确正弦波形生成的最有效方法,特别是在生成正交信号时。图4-5给出了递归振荡器的实现框图。其实现要求两个数据存储单元和两个乘法器。振荡器的频率由乘法器常数m1决定,m2仅是一个增益项,保证余弦波和正弦波有相同电平的输出。显然,如果只要求生成余弦波,就能简化电路。乘法常数m1和所求的振荡器频率有如下关系: (4.12)其中为程序的采样频率。m2可由下式得出: (4.13)(注:对于特殊情况如,即频率为采样频率的四分之一时,m1=0,且m2=1,可大大简化振荡器算法。)为了模拟振荡器的递归结构,就必须用一个非零值初始化存储寄存器,如将一个寄存器预先设置为a,而另一寄存器设置为零(如图4-5所示)。采用这个方法,可使生成的波形具有一个预先设定的峰值幅度a。波形的精确度主要受限于处理器的字长,用不希望的谐波电平和频率分辨来衡量,是最好不过的了。例如采用16位的计算,谐波分量远低于60db,而且最大的频率误差约为: (4.14)(该误差当频率接近时会大大减小)网上可以查阅递归正交振荡器的示例算法,这种算法介绍了在存储空间和执行时间方面均有高效率的实现方案。+z-1z-1+2m1m2-1-1预置为a预置为图4-5递归(正交)振荡器4.3.1 实现误差系数m1的量化会造成输出频率产生较小的误差,同样参数m2的量化也会使正交波形的幅度产生细微的变化。更为严重的是,在m1乘法器级之类的反馈路径中产生的信号舍入或截尾,会随时间逐渐地输出信号的幅度和相位产生偏离。在这里,有一个造成误差的特殊原因是循环中的信号过载问题。虽然输出波形的信号电平被限制在之间,但是在反馈回路中的信号电平可能会更高。例如,信号在增益级m2之前的信号电平大于。那么,为了保证在振荡器内部循环时不出现过载现象,初始化数值通常应小于处理器的过载量,如。对输出的结果波形进行增益补偿就能获得希望的信号水平。正确的增益缩放能够避免反馈回路中的过载问题,但是不能解决因截尾或舍入误差造成的幅度和相位随时间偏移的问题。在几乎所有的应用(16位或更长的字长)中,这一影响是微不足道的,故能忽略该问题。但如果问题出现了,最佳的解决方案是在寄存器的初始状态(a和)重复时,周期性地初始化振荡器。4.3.2 频率控制和相位控制鉴于递归振荡器工作边界稳定状态,循环中出现任何外部的信号电平或增益常数的变化很可能使系统变得不稳定,所以连续变化的频率控制是不可能的。然而,离散的频率变化可以根据要求通过用新的m1和m2参数重新初始化振荡器获得。此外,递归振荡器的连续相位控制是十分复杂的,通常会增加不稳定性。4.4 随机数/白噪声发生器波形发生器中一个非常重要的类型就是随机数或随机噪声发生器。实现该发生器有两种基本方法,一是使用随机数样值集的查找表法,二是采用带反馈的位移寄存器,来生成伪随机二进制序列。“伪随机”概念是说明序列在一定时间后会重复出现,所以说不是在全部时间上都是完全随机的。显然,使用查找表法,序列的长度是由存储的数据样值的数量决定的,而采用移位寄存器,起决定性作用的就是寄存器的长度。后一种方法在存储空间的利用上的效率比前者高得多,所以常用于模拟“固定宽带”的白噪声(即在需要的频谱范围内具有平坦的或近似于常数的功率谱密度)。4.4.1 伪随机二进制序列发生器就象带反馈的二阶递归滤波器能生成连续的正弦波一样,带反馈的移位寄存器能根据特殊的元素生成连续但会重复的1,0随机序列。系统的框图如图4-6所示。出现重复前,序列的最大长度为: (4.15)1 0 0 0 1 1 0 1msb lsb+输出xor xor图4-6伪随机序列生成器其中m为移位寄存器的阶数。例如移位寄存器的长度m=8,那么序列的长度为255。序列自身是由移位寄存其中反馈抽头的位置决定的。只有特定的反馈抽头才能获得序列的最大长度,表4-3给出了移位寄存器长度m从2至16的抽头组合。实现过程中采用对移位寄存器抽头值进行模2的加法运算(xor),从而保证在移位寄存器最低有效位插入的是0或1。序列可以是根据任意一组移位寄存器抽头的输出,但通常采用模2加法的结果是因为它已经在dsp累加器中实现了。根据要求生成的伪随机序列的长度,有多种算法可供选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论