《DDS原理与应用课件.ppt》由会员分享,可在线阅读,更多相关《DDS原理与应用课件.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DDSDDS原理与应用原理与应用DDSDDS简介简介全称Direct Digital Synthesizer(直接数字合成),是从相位出发,直接采用数字技术产生波形的一种频率合成技术。简单的说就是直接查表得到每一点波形所对应的数字值。与MatLAB的stem函数相似MatLABMatLAB中中N=1:0.2:20stem(N,sin(N)DDSDDS与外围系统与外围系统虚线部分是DDS结构内部D/A:模数转换器LPF:Low-Pass Filter 低通滤波器DDSDDS总体结构总体结构先分部分介绍其结构,后面会讲到总体原理。相位增量相位增量(Phase Increment)(Phase In
2、crement),也称为频率控制字,单纯的无单位(不代表弧度或者角度)无符号数。相位累加器相位累加器(Phase Accumulator)(Phase Accumulator)由一个无符号数的加法器和一个寄存器构成,一个时钟周期完成一次加法运算。量化器量化器(Quantizer)(Quantizer)完成很简单的功能。将较高精度,较大位宽的输入,丢弃低比特位,得到较低精度,较小位宽的输出,直接用作后面查找表的地址。正余弦查找表正余弦查找表(Sine/Cosine Lookup Table)(Sine/Cosine Lookup Table)存放正余弦数值。在单片机应用中,可以由MatLAB产生
3、,手动写入。在FPGA中,系统可自动生成,也可手动写入。正余弦查找表正余弦查找表(Sine/Cosine Lookup Table)(Sine/Cosine Lookup Table)举例(随地址空间大小的不同,数值发生相应的变化)计算公式就是Y=5000*sin(X/16*2)+1000050000001691300108536001196190100100001100011013811110146411113087放大放大倍数倍数直流直流偏移偏移正余弦查找表正余弦查找表(Sine/Cosine Lookup Table)(Sine/Cosine Lookup Table)000050000
4、001691300108536001196190100100001100011013811110146411113087DDSDDS总体原理总体原理每一周期会累加上固定的相位值,然后从查找表中找到对应的数值。输出频率计算公式输出频率计算公式输出频率计算举例输出频率计算举例实际应用中实际应用中通常是知道系统工作时钟,和要求生成的输出频率,需要计算相位增量。频率分辨率公式频率分辨率公式(Frequency Resolution)(Frequency Resolution)频率分辨率计算频率分辨率计算相位抖动相位抖动DDS DDS(Phase Dither DDS)(Phase Dither DDS
5、)相位截断相位截断DDSDDS的频谱的频谱相位抖动相位抖动DDSDDS结构结构随机抖动随机抖动序列发生序列发生器器不适合电子设计不适合电子设计比赛中使用比赛中使用相位抖动相位抖动DDSDDS频谱频谱DDSDDS设计扩展设计扩展生成正余弦波时,只存放1/4个周期的波形(高2比特不作为数据位,而作为波形的选择使用),优点是大大节约存储空间,但会导致计算的时间延长。使用DDS生成任意波形(三角波、方波、锯齿波等)D/AD/A的使用简单介绍的使用简单介绍D/A是数模转换器。关于它的调用,每一种具体型号有所不同。但是基本原理都是将数字信号传送给D/A,由D/A完成转换,输出模拟信号。定时器的使用简单介绍
6、定时器的使用简单介绍定时器中断是单片机中各种中断中的一种。简单的说,定时器就是自动在每次设置的时间到时之后执行定时器中断函数。定时器需要启动命令启动,并需要设置每次计时的时间。设计实例设计实例5151单片机单片机通过一个简单的实例来说明设计的原理使用Atmel公司的89C51系列单片机,MSP430等单片机实现方法类似。目标:采用深度为256的查找表,在10KHz的数据输出频率下,实现100Hz1KHz的正弦波输出。步骤步骤1 1通过MATLAB建立正余弦查找表f1=fopen(d:aaa.txt,w);fprintf(f1,%.0f,255.5*(sin(N/256*2*pi)+1);fcl
7、ose(f1)正余弦查找表正余弦查找表注意最前面的注意最前面的”codecode”(5151用)。用)。MSP430MSP430使用使用”constconst”。注意:表有点问题,范围应该是从注意:表有点问题,范围应该是从0256.0256.步骤步骤2 2计算相位增量计算出相位增量,将相位累加器清零计算出相位增量,将相位累加器清零定义几个变量定义几个变量通过宏定义的方式给出数据输出时钟和正弦波频率通过宏定义的方式给出数据输出时钟和正弦波频率注意:上式请自己推导,与课件中公式有点区别注意:上式请自己推导,与课件中公式有点区别步骤步骤3 3每一次定时器中断输出一个值设计实例设计实例XilinxXi
8、linx公司公司FPGAFPGA设计一个使用100MHz时钟产生10MHz正弦波设计环境使用Xilinx公司的ISE7.1使用Core Generator生成DDS的IP Core步骤步骤1 1选择生成新的IP Core步骤步骤2 2 在“Communication&Networking”-“Modulation”中选中”Direct Digital Synthesizer 5.0”步骤步骤3 3 设置必要参数设置必要参数产生正弦还是余弦产生正弦还是余弦工作时钟频率工作时钟频率频率分辨率频率分辨率频谱纯净度频谱纯净度步骤步骤4 4 设置输出频率设置输出频率输出正余弦波频率输出正余弦波频率查找表
9、是可写入或查找表是可写入或系统自动生成系统自动生成步骤步骤5 5 设置可选参数设置可选参数是否使用抖动技术是否使用抖动技术存储器类型存储器类型流水结构流水结构步骤步骤6 6 给出统计报告给出统计报告课后练习作业课后练习作业因为是很基本的东西,所以请让一组的所有同学都参与一下,不要一个人做完。开学后各组带队老师会检查该组的完成情况。题目题目使用使用5151单片机(单片机(KeilKeil环境)编写环境)编写DDSDDS产生正弦波的程序产生正弦波的程序(单片机工作频率(单片机工作频率16MHz16MHz)基本要求:在10KHz的D/A数据输出频率下,产生100Hz1KHz的正弦波输出。要写出完整的程序,包括定时器的初始化和调用。D/A的输出部分不要求,可以调用函数如 Void Send_to_DA(unsigned char send_value)DA输出函数体内部不要求写。正弦表深度为512.输出正弦波频率通过宏定义变量给入即可,不要求输入的函数。题目题目发展要求:1、存储表只存放1/4个周期的正弦函数,完成正弦函数的输出2、能够同时输出三角波和正弦波(通过一个宏定义变量切换)3、同时使用两个DA,如何最简便的同时输出正弦和余弦波形?按照你所想出的方法写出程序。39Thank you!Thank you!