资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,DDS原理与应用,通信工程2002级,李忠琦,DDS原理与应用,1,自我介绍,通信学院2002级,2005全国大学生电子设计竞赛一等奖,通信楼527,E-Mail: StanleyLee,自我介绍通信学院2002级,2,电子设计竞赛,本科阶段最艰苦,收获最大的比赛,拿奖=3人能力*努力程度*意志力*团队意 识*运气,个人收获=求知欲*努力程度*意志力*团队意识,电子设计竞赛本科阶段最艰苦,收获最大的比赛,3,DDS简介,全称Direct Digital Synthesizer(直接数字合成),是从相位出发,直接采用数字技术产生波形的一种频率合成技术。,简单的说就是直接查表得到每一点波形所对应的数字值。与MatLAB的stem函数相似,DDS简介全称Direct Digital Synthesi,4,MatLAB中,N=1:0.2:20,stem(N,sin(N),MatLAB中N=1:0.2:20,5,DDS与外围系统,虚线部分是DDS结构内部,D/A:模数转换器,LPF:Low-Pass Filter 低通滤波器,DDS与外围系统虚线部分是DDS结构内部,6,DDS总体结构,先分部分介绍其结构,后面会讲到总体原理。,DDS总体结构先分部分介绍其结构,后面会讲到总体原理。,7,相位增量(Phase Increment),也称为频率控制字,单纯的无单位(不代表弧度或者角度)无符号数。,相位增量(Phase Increment),也称为频率控,8,相位累加器(Phase Accumulator),由一个无符号数的加法器和一个寄存器构成,一个时钟周期完成一次加法运算。,相位累加器(Phase Accumulator)由一个无符号,9,量化器(Quantizer),完成很简单的功能。将较高精度,较大位宽的输入,丢弃低比特位,得到较低精度,较小位宽的输出,直接用作后面查找表的地址。,量化器(Quantizer)完成很简单的功能。将较高精度,较,10,正余弦查找表(Sine/Cosine Lookup Table),存放正余弦数值。在单片机应用中,可以由MatLAB产生,手动写入。在FPGA中,系统可自动生成,也可手动写入。,正余弦查找表(Sine/Cosine Lookup Tab,11,正余弦查找表(Sine/Cosine Lookup Table),举例(随地址空间大小的不同,数值发生相应的变化),计算公式就是,Y=5000*sin(X/16*2)+1,0000,5000,0001,6913,0010,8536,0011,9619,0100,10000,1100,0,1101,381,1110,1464,1111,3087,放大倍数,直流偏移,正余弦查找表(Sine/Cosine Lookup Tab,12,正余弦查找表(Sine/Cosine Lookup Table),0000,5000,0001,6913,0010,8536,0011,9619,0100,10000,1100,0,1101,381,1110,1464,1111,3087,正余弦查找表(Sine/Cosine Lookup Tab,13,DDS总体原理,每一周期会累加上固定的相位值,然后从查找表中找到对应的数值。,DDS总体原理每一周期会累加上固定的相位值,然后从查找表中找,14,输出频率计算公式,输出频率计算公式,15,输出频率计算举例,输出频率计算举例,16,实际应用中,通常是知道系统工作时钟,和要求生成的输出频率,需要计算相位增量。,实际应用中通常是知道系统工作时钟,和要求生成的输出频率,需要,17,频率分辨率公式(,Frequency Resolution),频率分辨率公式(Frequency Resolution),18,频率分辨率计算,频率分辨率计算,19,相位抖动DDS (Phase Dither DDS),相位截断DDS的频谱,相位抖动DDS (Phase Dither DDS)相位截,20,相位抖动DDS结构,随机抖动序列发生器,不适合电子设计比赛中使用,相位抖动DDS结构随机抖动序列发生器不适合电子设计比赛中使用,21,相位抖动DDS频谱,相位抖动DDS频谱,22,DDS设计扩展,生成正余弦波时,只存放1/4个周期的波形(高2比特不作为数据位,而作为波形的选择使用),优点是大大节约存储空间,但会导致计算的时间延长。,使用DDS生成任意波形(三角波、方波、锯齿波等),DDS设计扩展生成正余弦波时,只存放1/4个周期的波形(高2,23,D/A的使用简单介绍,D/A是数模转换器。关于它的调用,每一种具体型号有所不同。但是基本原理都是将数字信号传送给D/A,由D/A完成转换,输出模拟信号。,D/A的使用简单介绍D/A是数模转换器。关于它的调用,每一种,24,定时器的使用简单介绍,定时器中断是单片机中各种中断中的一种。,简单的说,定时器就是自动在每次设置的时间到时之后执行定时器中断函数。,定时器需要启动命令启动,并需要设置每次计时的时间。,定时器的使用简单介绍定时器中断是单片机中各种中断中的一种。,25,设计实例51单片机,通过一个简单的实例来说明设计的原理,使用Atmel公司的89C51系列单片机,MSP430等单片机实现方法类似。,目标:采用深度为256的查找表,在10KHz的数据输出频率下,实现100Hz1KHz的正弦波输出。,设计实例51单片机通过一个简单的实例来说明设计的原理,26,步骤1,通过MATLAB建立正余弦查找表,f1 = fopen(d:aaa.txt,w);,fprintf(f1,%.0f,255.5*(sin(N/256*2*pi)+1);,fclose(f1),步骤1通过MATLAB建立正余弦查找表,27,正余弦查找表,注意最前面的”code”(51用)。MSP430使用”const”。,注意:表有点问题,范围应该是从0256.,正余弦查找表注意最前面的”code”(51用)。MSP430,28,步骤2,计算相位增量,计算出相位增量,将相位累加器清零,定义几个变量,通过宏定义的方式给出数据输出时钟和正弦波频率,注意:上式请自己推导,与课件中公式有点区别,步骤2计算相位增量计算出相位增量,将相位累加器清零定义几个变,29,步骤3,每一次定时器中断输出一个值,步骤3每一次定时器中断输出一个值,30,设计实例Xilinx公司FPGA,设计一个使用100MHz时钟产生10MHz正弦波,设计环境使用Xilinx公司的ISE7.1,使用Core Generator生成DDS的IP Core,设计实例Xilinx公司FPGA设计一个使用100MHz时,31,步骤1,选择生成新的IP Core,步骤1选择生成新的IP Core,32,步骤2,在“Communication & Networking”-“Modulation”中选中”Direct Digital Synthesizer 5.0”,步骤2 在“Communication & Networki,33,步骤3 设置必要参数,产生正弦还是余弦,工作时钟频率,频率分辨率,频谱纯净度,步骤3 设置必要参数产生正弦还是余弦工作时钟频率频率分辨率频,34,步骤4 设置输出频率,输出正余弦波频率,查找表是可写入或系统自动生成,步骤4 设置输出频率输出正余弦波频率查找表是可写入或系统自动,35,步骤5 设置可选参数,是否使用抖动技术,存储器类型,流水结构,步骤5 设置可选参数是否使用抖动技术存储器类型流水结构,36,步骤6 给出统计报告,步骤6 给出统计报告,37,课后练习作业,因为是很基本的东西,所以请让一组的所有同学都参与一下,不要一个人做完。,开学后各组带队老师会检查该组的完成情况。,课后练习作业因为是很基本的东西,所以请让一组的所有同学都参与,38,题目,使用51单片机(Keil环境)编写DDS产生正弦波的程序(单片机工作频率16MHz),基本要求,:在10KHz的D/A数据输出频率下,产生100Hz1KHz的正弦波输出。要写出完整的程序,包括定时器的初始化和调用。D/A的输出部分不要求,可以调用函数如,Void Send_to_DA(unsigned char send_value),DA输出函数体内部不要求写。,正弦表深度为512.,输出正弦波频率通过宏定义变量给入即可,不要求输入的函数。,题目使用51单片机(Keil环境)编写DDS产生正弦波的程序,39,题目,发展要求,:,1、存储表只存放1/4个周期的正弦函数,完成正弦函数的输出,2、能够同时输出三角波和正弦波(通过一个宏定义变量切换),3、同时使用两个DA,如何最简便的同时输出正弦和余弦波形?按照你所想出的方法写出程序。,题目发展要求:,40,有兴趣的同学可以安装Xilinx ISE7.1,自行完成FPGA的程序设计(不要求同组一起完成,看个人兴趣)。,答疑在通信楼527,E-mail: StanleyLee,有兴趣的同学可以安装Xilinx ISE7.1,自行完成FP,41,
展开阅读全文