资源目录
压缩包内文档预览:(预览前20页/共46页)
编号:516472
类型:共享资源
大小:261.01KB
格式:RAR
上传时间:2015-11-12
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
机械毕业设计
- 资源描述:
-
tms320vc5402数字信号处理器设计,机械毕业设计
- 内容简介:
-
第 1 章 绪论 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 来说 ,内部总线是个十分重要的资源,总线越多,可以完成的功能就越复杂。 nts第 1 章 绪论 2 3流水线结构 DSP执行一条指令,需要通过取指、译码、取操作数和执行等几个阶段。在 DSP中,采用流水线结构,在程序中这几个阶段是重叠的,如图 1-1所示。这样,在执行本条指令的同时,还依次完成了后面 3条指令的取操作数、译码和取指,将指令周期降低到最小值。 图 1-1 四级流水线操作 利用这种流水线结构,加上执行重复操作,就能保证数字信号处理中用得最多的乘法累加运算 ni iixay1可以在单指令 周期内完成。 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,采用 4 mNMOS 制造工艺,其运算速度为 5MIPS(每秒执行 5 百万条指令)。随着集成电路工艺的发展, DSP 广泛采用亚微米 CMOS 制造工艺,其运算速度越来越快。以 TMS320C54X 为例,其运行速度可达 100MIPS, TMS320C6203的时钟为 300MHZ,运行速度达到 2400MIPS。 N N+1 N+2 N+3 N-1 N N+1 N+2 N-3 N-2 N-1 N N-2 N-1 N N+1 时钟 取指 译码 取操作 数 执行 nts第 1 章 绪论 3 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),数字声、乐合成器,玩具与游戏机、数字应答 /留言机。 nts第 2 章 TMS320VC5402 数字信号处理器 4 第 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)存储器 数据总线具有数据保持特性 最大可寻址外部程序空间为 1M 16位 的的扩展可寻址模式 4k 16位的片内 ROM 16k 16位双寻址的 片内 RAM 3)指令系统 程序代码的单指令重复和块重复操作指令 用于有效地程序和数据管理的存储器块传递指令 32位长字节操作数指令 读入 2个或 3个操作数的指令 并行存储和装入的算术指令 条件存储指令 快速从中断返回指令 4)在片外围电路 软件可编程等待状态发生器和可编程分区转换控制器 片内锁相环 (PLL)时钟发生器,可采用内部震荡器或外部的时钟源 两个多通道缓冲串口 (McBSPs) 加强的 8位并行主机接口 (HPI8) 两个 16位定时器 6通道直接存储访问 (DMA)控制器 5)电源 采用功耗下 降模式下的 IDLE1, IDLE2和 IDLE3指令控制芯片的功耗 可控制禁止信号 CLKOUT 6)其他 具有符合 IEEE1149.1标准的芯片仿真接口 10ns单周期定点指令运行时间 (100MIPS),电源 3.3v(内核 1.8v) 144管脚 TQFP封装和 BGA封装 nts第 2 章 TMS320VC5402 数字信号处理器 5 2.2 TMS320VC5402硬件结构 TMS320VC5402 DSP 采用先进的修正哈佛结构和 8总线结构,使处理器的性能大大提高。其独立的程序和数据总线,允许同时访问程序存储器和数据存储器,实现高度并行操作。此外,还可以在数据总线和程序 总线之间相互传送数据,从而使处理器具有在单周期内同时执行算术运算、逻辑运算、移位操作、乘法累加运算以及访问程序和数据存储器的功能。 程序地址产生 ( PAGEN) 数据地址产生 ( DAGEN) EXP 编码器 复用 T 触发器 信号 控制 信号 控制 信号 控制 信号 控制 信号 控制 B(40) A(40) 乘法器 (17x17) 复用 移位器 复用 分数处理 复用 加 (40) 复用 COMP MSW /LSW 选择 TRN TC 0 饱和 舍入 系统 控制 接口 外部 存储器接口 外部 存储器接口 图 2-1 TMS320VC5402 内部硬件组成框图 nts第 2 章 TMS320VC5402 数字信号处理器 6 2.3 DSP 系统的设计及开发简介 2.3.1 总体设计方案 一个数字信号处理系统是电子技术、信号处理技术与计算机技术相结合的产物。系统设计通常分为信号处理部分和非信号处理部分。信号处理部分包括系统的输入和输出、数据的编排和处理、各种算法的实现、数据显示和传输等;非信号处理部分则包括电源、结构、成本、体积、可靠性与 可维护性等。一个系统的设计过程大致可分为以下 7 个部分: 1) 系统要求的描述 根据用户对应用系统的要求,提出一组系统级的技术要求和相关说明。这些要求包括人机接口、信号类型与特征、处理的项目和方式、处理系统的所有性能指标要求(含系统非信号处理的性能)以及系统的测试和验证方式等。由此形成相应的文档,作为以后设计的依据。 2) 信号分析 信号分析部分定义输入 /输出信号的类型,例如,分析随机或确定信号,模拟或数字信号是一维信号还是多维信号等,确定描述输入信号的模型。分析信 号的频率范围和系统的带宽,估计系统的最大和最小电平以及信号噪声比( SNR),是否需要进行预处理等。确定输出信号使用的方法、数据的吞吐率和对实时性的要求。信号分析的结果是第 3 部分信号处理算法设计的基础。 系统要求的 描述 信号分析 信号处理算法设计 资源分析 硬件结构分析设计 软件设计与调试 系统集成与测试 可否接受 可否接受 否 否 是 是 第 1 部分 第 2 部分 第 3 部分 第 4 部分 第 7 部分 第 5 部分 第 6 部分 图 2-2 DSP 总体设计框图 nts第 2 章 TMS320VC5402 数字信号处理器 7 3) 信号处理算发与设计 本部分是信号处理系统的核心,其任务是根据第 1 部分提出的要求和第 2 部分对信号分析的结果,对不同类型的信号和所要求的处理方式确定相应的算法。这部分要求设计者对信号处理的各种算法有较好的了解。首先是要保证算法的正确性,必要时,可利用现成的软件包,例如用 MATLAB 等工具进行仿真计算。其次 是算法的有效性,当硬件给定后,算法的有效性决定了系统的处理能力和吞吐能力。算法设计的主要目标是对于一个给定的任务,获得运算量最小和使用资源最少的算法。这二者是矛盾的,这就需要找出最好的折中方案。 4) 资源分析 系统资源分成 3 大类:数据吞吐率、存储器容量和输入 /输出带宽。这 3 大资源主要决定于系统所使用的核心处理器或有关硬件,如 DSP 器件的运算速率、串并口数据传送的能力以及存储器空间的大小。一个存储器系统通常可分为如图 2-3 所示的 4 个大的功能块:系统控制、信号处理、数据存储、数据通信。资源分析的目的就是将前 述的 3 大资源在功能块间进行合理的分配,以取得最佳的性能。 图 2-3 信号处理系统的功能块 5) 硬件结构分析与设计 本部分根据第 3 部分和第 4 部分的结果进行硬件的结构分析与设计。这包括 DSP 芯片的选择、存储器配置和输入 /输出通道的设计、控制和显示电路设计、电源电路以及其他相关硬件电路的设计。 6) 软件设计与调试 基于第 3 部分的算法和第 5 部分的硬件设计,本部分的任务是完成系统的所有软件设计与调试。软件设计包括系统软件和信号处理软件。系统软件包括人机接口界面、系统的控制 软件、输入 /输出管理 、显示以及如何与主机的操作系统(包括嵌入式操作系统)接口等。 信号处理软件主要是用程序语言来实现在第 3 部分确定的信号处理算法,以及完成特定的处理功能。 7) 系统集成与测试 当所有的硬件和软件设计完成后,最后是将系统的各个部分集成为一个整体,进行实际的运行测试。由于信号处理系统是一个相当复杂的系统,牵涉到电子电路、硬件、软件各个系统控制 数据存储 数据通信 信号处理 输入 输出 nts第 2 章 TMS320VC5402 数字信号处理器 8 方面,设计出来的应用系统是否能满足最初提出的要求,必须通过实际的测试;如不能满足要求,必须再对硬件和软件进行响应的修改。 2.3.2 软硬件件设计部分 完成了上述的总体设计之后, 就可以进入软硬件设计阶段 . 这里只给出软硬件设计的框图,分别见图 2-4, 2-5。 图 2-4 软件设计系统框图 图 2-5 硬件设计系统框图 编写 C 程序 优化 ANSIC编译器 生成 320 汇编文件 汇编语言编译器 生成目标文件 宏汇编源文件 文档管理器 宏汇编库 编写320汇编语言程序 链接器 输出 执行文件 调试器 320 目标系统 格式转换 写 EEPROM 软件仿真 软件开发系统 评测模块 EVM 系统仿真 XDS PC 机 确定硬 件方案 器件选择 原理图设计 PCB 图设计 硬件调试 系统分析 系统综合 nts第 3 章 DSP 开发环境 C5000 CCS 9 第 3章 DSP 开发环境 C5000 CCS 3.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系统的示意图,主要由以下的组件构成,即: 图 3-1是 CCS系统的示意图 配置工具 Code Composer 编辑器 源文件 .c;.h;.asm .cdb(配置数据库 ) cfg.cmd cfg.s54 cfg.h54 DSP/BIOS API Code Composer工程 代码产生工具 编译器 汇编器 链接器 OLE 应用 使用 RTDX RTDX 插件 DSP/BIOS 插件 第 3 方插件 可执行代码 Code Composer 调试工具 主机仿真支持 目标系统硬件 nts第 3 章 DSP 开发环境 C5000 CCS 10 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的工程,此文件保存了工程的设置信息及工程中的文件引用情况。 设计 总体思想 代码产生 创建工程、编写源代码、配置文件 调试 语法检查 程序调试 分析 实时调试、统计分析、跟踪分析 nts第 3 章 DSP 开发环境 C5000 CCS 11 2 将文件添加到工程中 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 已定义,程序还将提示输入一个字符串并将其存入文件,然后从文件中读取该字符串并显示在屏幕上。 图 3-3 工程视图 nts第 3 章 DSP 开发环境 C5000 CCS 12 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 在监视窗口显示程序的结果 监视窗口 工程观察窗口 反汇编窗口 nts第 4 章 波形生成算法及其分析 13 第 4章 波形生成算法及其分析 波形生成是通信系统、仪器制造和控制系统等领域的基础。较之传统的模拟实现方案而言,波形生成的数字实现方法具有更严格的规范,系统与电路匹配,能提供更佳的精确性、可靠性和灵活性。 在考虑波形生成的算法时,必须注意以下几点: a波形纯度。波形的纯度需要达到怎样的要求?正弦波的纯度通常采用总谐波失真( THD)表示,其定义如下: 波形的总能量 的能量波形中无用的谐波分量T H D( 4.1) 例如一个 THD 为 0.1%的正弦波形发生器的失真能量级约低于基波分量 30dB。 b频率 /周期控制。波形的频率或周期是否需要变化,例如压控振荡器? c相位控制。波形的相关相位是否需要变化? d内存使用。波形生成的算法需要占用多少内存?(通常情况下,波形纯度即低 THD,和内存要求是一对矛盾关系。) e执行时间。对算法时间有怎样的研制?(通常情况下执行时间和内存要求是一对矛盾关系。) f精确性。对增益和频率设定方面有怎样的要求? 上述各个因素用来衡量下面将涉及的各个波形生成算法。表 4-1 总结了针对给定的应用选择算法的重要方面。 表 4 -1 生成正弦波的算法特性总结 振荡器类型 谐波分量 算法复杂性要求 程序内存控制 相位 /频率 执行时间 查表法 低 /中 低 强 好 短 张弛处理法 高 中 弱 一般 中等 递归法 低 低 弱 差 短 4.1 查找表 /采样波形生成器 这种 波形生成的方法大概是生成任意波形特性的最具灵活性并在理论上最简单的方法。但因为它仅适应于数字信号处理,而且特别需要大量的数据存储空间和检索设施,所以具有模拟设计背景的工程师一般都不采用它。该方法仅需要将代表所要生成的波形的一系列离散采样数据读取出来即可(如图 4-1 所示)。这些数据可以对相应的模拟波形采样获得,更常见的是由计算机得出所需的数据。 在采样点数据足够,能精确表示波形的一个周期的情况下(若波形是对称的,就可减少样值的数量),那么连续的波形就可以通过循环读取内存数据单元来生成。变化频率 /周期可以通过改 变从内存中读取连续样值的速率(如改变执行时间)或者在执行时间固定的情况下nts第 4 章 波形生成算法及其分析 14 从每 N 个样值中选取一个来获得。后一种方法受波形混叠要求限制,要求在所要生成波形的最高频率分量的每个周期中,至少选取两个采样点。在讨论了正弦波发生器这一重要示例后,就能更好地理解该技术在算法中的应用。 图 4-1 查找表法波形生成器 4.1.1 正弦波发生器:查找表法 图 4-2 中的正弦波由其一个周期中等时间间隔的八个采样点表示。样本值由如下的函数计算所得: )/360sin()( NiiX (4.2) 图 4-2 被采样的正弦波形(每周期 8 点) 其中 )(iX 是第 i 个样值, N 是一个周期中样值的个数(本例中为 8)。由这些计算出的样本值生成的波形的精确性由处理器的字长决定。一旦样值驻入内存,正弦波就可由循环遍历内存空间和读取存储的数据生成。循环 的速率和总的程序执行时间决定了振荡的频率。 由上述方法的本质可知,其缺点就是示例的正弦波的频率被固定在程序循环周期的 1/8。要改变振荡的频率,可以改变程序执行速度或者跳过一些存储的样值。例如,使地址计数器每次增加 2 而非增加 1,即从数据表中间隔地读取波形样值,就能使振荡频率翻倍,而且每周期只有 4 个样值。(注:要重建信号,每周期至少选取两个采样点以满足奈奎斯特法则。) 数据表 取样 值 1 2 3 4 5 6 7 8 0.707 1 0.707 0 -0.707 -1 -0.707 0 样值 0.4 0.75 0.33 0.4 -0.26 -0.81 键盘 D/A 1 2 3 4 5 6 7 8 nts第 4 章 波形生成算法及其分析 15 连续变化地址计数器的步长,可以获得采样限制范围内的任何频率。但是波形的精确性会变化很大。例如,在使用 8 个采样点的情况下,如果我们要生成一个频率为 程序执行速率的1/6 的信号,那么地址计数器就必须在 6 个程序周期中遍历整个波形数据表。如图 1-2 所示,在这种情况下, 8 个存储数据中只有 2 个同正确的波形数据完全吻合,而其余 4 个仅仅是接近剩下的 6 个存储数据,正是这种近似造成了波形的精确性。当然在内存中存储越多的数据,选择的范围就越大,那么所需要的数据和存储在波形发生器内已有的样值之间的差距就越小。 图 4-3 由于存储固定数量的样本值造成的波形失真的示例 使用查找表波形发生器生成的波形振荡频率可由下式计算所得: )/( NTST E Pf SOS C (4.3) 其中 STEP 为地址寄存器步长,ST为程序执行时间, N 为每周期存储的样值数量。在大多数情况下,所需要的 STEP 值不会是一个整数(如上例中的 8/6),而且为了获得合适的整数地址指针值,就必须使用结尾和舍入方法。 使用该方法,可获得的振荡频 率的分辨率是由表示 STEP 值的精确性决定的。实际上,最小频率步长的大小由下式给出: HzTf MS )2/(1m i n (4.4) 其中 M 为保存 STEP 的寄存器的字长。 在 DSPS 网站可查阅使用查找表法的正弦曲线波形发生器的 C 和汇编算法程序。 表 4-2 显示了各种整数和非整数步长的波形精确性,其为存储样值数量 N 的函数,根据给定的内存空间大小能快速查找到可获得的最小精确度。 要求的样值 0.86 0.86 0 -0.86 -0.86 0 有效的样值 0.707 1 0.707 0 -0.707 -1 -0.707 0 样值误差 要求的样值 存储的样值 nts第 4 章 波形生成算法及其分析 16 表 4-2 查找表正弦波生成器的总谐波失真 样值 N 数 步长 直接查表总的谐波失真 线形内插(低于基本的 dB 值) 32 2 60 60 2.25 25 28 2.5 26 29 2.75 25 28 3 60 60 8.25 25 28 11.25 25 28 64 2 60 60 2.25 31 37 2.5 32 38 2.75 31 37 3 60 60 8.25 31 37 11.25 31 37 128 2 60 60 2.25 37 60 2.5 38 60 2.75 37 60 3 60 60 8.25 37 60 11.25 37 58 4.1.2 降低存储量的方法 要降低高精确度波形发生器对存储量的要求,就必须利用波形的对称性,由于对称性波形造成了数据的重复存储。就正弦曲线的例子而言,每个周期中,数据(忽略符号变化)均存储了四次,所以,只需要四分之一的存储空间就足以表示波形了。但是其代价就是提高了算法的复杂性,因为必须跟踪要生成的波形是处于四个象限的哪一部分,并应该加上什么符号。对于特定的应用和 DSP 器件而言,应该根据内存的价值和执行时间决定最佳的折中方案。 4.1.3 频率控制 上文已经介绍过,振荡频率和波形重复的周期是受地址计数器的步长变化控制的。所以可以在算 法中加入一个压控振荡器( VCO),使步长的变化和控制电压相一致。一种方法是给 STEP 加上一个控制量 FCONT,从而获得的振荡频率为: HzNTF C O N TS T E Pf SO S C )/()( (4.5) 频率偏移量 f 为: HzNTF C O N TfS )/(4.6) 当控制量为零时,振荡器处于原定的“自由”振荡频率0f, 其中0f为: HzNTS T E PfS )/(0 (4.7) nts第 4 章 波形生成算法及其分析 17 4.1.4 相位控制 振荡器的相位可以采用同上面相似的简单方法,即给查找表地址指针加上一个相位偏移量 PCONT,那么相位偏移量 为 : 度NPC O N T /360 (4.8) 注意,如果要用相位 调制,那么在读取下一张数据表之前,必须从地址指针中减去先前的相位偏移量。这样就能保证相位移动总是以同一固定频率作为参照量。不然的话,就会产生频率调制。 4.1.5 正交振荡器 两个震荡器之间的固定的或者变化的相位差可以容易地通过在主指针上加上一个偏移量构造一个辅指针获得,使获得的数据样值产生适当的延时或相位差。该技术在生成正交正弦波时特别有用。 4.1.6 任意波形生成 查找表法 显然,查找表法可用来生成任意的周期或非周期波形。一种十分有价值的应用就是生成复杂的数据调制格式。预先计算出已调制的输出符号 ,并将其存储在数据表中,可根据输入的数据流进行查找。该方法对于编解码和调制解调器开发中的可再生测试信号的产生也十分有用。 4.2 线性分段逼近波形发生器 直接查找表法的主要缺点就是由于使用非整数的 STEP 而产生较大的波形不精确。虽然样值取得越多,精确性越高,但是存储空间的开销也会增加。解决该问题的一个方法就是采用插补方法对两个已存储的样值之间的波形数据做一个更好的估计。最简单的方法就是直线差补法(曲线拟合),即使用直线公式计算两个样值之间得到中点数据: cmxy (4.9) 图 4-4 说明了该方法对 8 个采样点的正弦曲线的应用。已知要求的波形数据 y 在tTa 时刻落在样本 A 和 B 之间,那么 y 的取值应为: AtTTABy ab )/()( (4.10) 其中时间参量 )/(ab TTt 就是地址计数器值的小数部分 F。使用直接查找表法可获得估计值 A,所以在算法中只需要加入辅助部分,按下式计算改进因子 Y : FABY )( (4.11) 根据对程序执行时间的内存空间的要求,斜率( B A)可以在每次程序循环中计算得出,或者预先计算斜率并存储在另一张数据表中。可在网上查阅后一种方法的实现。 nts第 4 章 波形生成算法及其分析 18 图 4-4 正弦采样波形生成器的分段逼近 在 4.1.1 的表 4-2 中 ,列出了使用该方法所能获得的改进的精确度。显然,采用频率和相位控制对直接查找表法而言也能获得同样的效果。 如果在插补过程中,用泰勒 级数或马克林级数展开代替直线逼近公式,就能获得更好的改进,但是其代价就是增加算法复杂性和执行时间。 4.3 使用边界稳定递归滤波器部件的正弦波生成方法 第三种十分有用的正弦曲线生成方法就是使用二阶边界稳定的滤波器部件。这个通常被称为递归振荡器的部件是精确正弦波形生成的最有效方法,特别是在生成正交信号时。图4-5 给出了递归振荡器的实现框图。其实现要求两个数据存储单元和两个乘法器。 振荡器的频率由乘法器常数 M1 决定, M2 仅是一个增益项,保证余弦波和正弦波有相同电平的输出。显然,如果只要求生成余弦波,就 能简化电路。乘法常数 M1 和所求的振荡器频率0f有如下关系: )/2c o s ()c o s (1 00 SS ffTwM (4.12) 其中Sf为程序的采样频率。 M2 可由下式得出: )/2s in ()s in (2 00 SS ffTwM (4.13) (注:对于特殊情况如 4/0 Sff ,即频率为采样频率的四分之一时, M1=0,且 M2=1,可大大简 化振荡器算法。) 为了模拟振荡器的递归结构,就必须用一个非零值初始化存储寄存器,如将一个寄存器预先设置为 A,而另一寄存器设置为零(如图 4-5 所示)。采用这个方法,可使生成的波形具有一个预先设定的峰值幅度 A。 波形的精确度主要受限于处理器的字长,用不希望的谐波电平和频率分辨来衡量,是最好不过的了。例如采用 16 位的计算,谐波分量远低于 60dB,而且最大的频率误差 f 约为: Hzff S3101 (4.14) (该误差当频率接近 4/Sf时会大大减小) axbxB A xxa xyAxxx AByabx )( nts第 4 章 波形生成算法及其分析 19 网上可以查阅递归正交振荡器的示例算法,这种算法介绍了在存储空间和执行时间方面均有高效率的实现方案。 图 4-5 递归(正交)振荡器 4.3.1 实现误差 系数 M1 的量化会造成输出频率产生较小的误差,同样参数 M2 的量化也会使正交波形的幅度产生细微的变化。更为严重的是,在 M1 乘法器级之类的反馈路径中产生的信号舍入或截尾,会随时间逐渐地输出信号的幅度和相位产生偏离。 在这里,有一个造成误差的特殊 原因是循环中的信号过载问题。虽然输出波形的信号电平被限制在 A 之间,但是在反馈回路中的信号电平可能会更高。例如,信号在增益级 M2之前的信号电平大于 )sin(/10 STw。那么,为了保证在振荡器内部循环时不出现过载现象,初始化数值通常应小于处理器的过载量,如 )sin(/10 STw。对输出的结果波形进行增益补偿就能获得希望的信号水平。 正确的增益缩放能够避免反馈回路中的过载问题,但是不能解决因截尾或舍入误差造成的幅度和相位 随时间偏移的问题。在几乎所有的应用( 16 位或更长的字长)中,这一影响是微不足道的,故能忽略该问题。但如果问题出现了,最佳的解决方案是在寄存器的初始状态(
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。