Presentation is loading. Please wait.

Presentation is loading. Please wait.

DDS原理与应用 通信工程2002级 李忠琦.

Similar presentations


Presentation on theme: "DDS原理与应用 通信工程2002级 李忠琦."— Presentation transcript:

1 DDS原理与应用 通信工程2002级 李忠琦

2 自我介绍 通信学院2002级 2005全国大学生电子设计竞赛一等奖 通信楼527

3 电子设计竞赛 本科阶段最艰苦,收获最大的比赛 拿奖=3人能力*努力程度*意志力*团队意 识*运气
拿奖=3人能力*努力程度*意志力*团队意 识*运气 个人收获=求知欲*努力程度*意志力*团队意识

4 DDS简介 全称Direct Digital Synthesizer(直接数字合成),是从相位出发,直接采用数字技术产生波形的一种频率合成技术。 简单的说就是直接查表得到每一点波形所对应的数字值。与MatLAB的stem函数相似

5 MatLAB中 N=[1:0.2:20] stem(N,sin(N))

6 DDS与外围系统 虚线部分是DDS结构内部 D/A:模数转换器 LPF:Low-Pass Filter 低通滤波器

7 DDS总体结构 先分部分介绍其结构,后面会讲到总体原理。

8 相位增量(Phase Increment)
Δθ,也称为频率控制字,单纯的无单位(不代表弧度或者角度)无符号数。

9 相位累加器(Phase Accumulator)
由一个无符号数的加法器和一个寄存器构成,一个时钟周期完成一次加法运算。

10 量化器(Quantizer) 完成很简单的功能。将较高精度,较大位宽的输入,丢弃低比特位,得到较低精度,较小位宽的输出,直接用作后面查找表的地址。

11 正余弦查找表 (Sine/Cosine Lookup Table)
存放正余弦数值。在单片机应用中,可以由MatLAB产生,手动写入。在FPGA中,系统可自动生成,也可手动写入。

12 正余弦查找表 (Sine/Cosine Lookup Table)
0000 5000 0001 6913 0010 8536 0011 9619 0100 10000 1100 1101 381 1110 1464 1111 3087 举例(随地址空间大小的不同,数值发生相应的变化) 计算公式就是 Y=5000*[sin(X/16*2π)+1] 直流偏移 放大倍数

13 正余弦查找表 (Sine/Cosine Lookup Table)
0000 5000 0001 6913 0010 8536 0011 9619 0100 10000 1100 1101 381 1110 1464 1111 3087

14 DDS总体原理 每一周期会累加上固定的相位值,然后从查找表中找到对应的数值。

15 输出频率计算公式

16 输出频率计算举例

17 实际应用中 通常是知道系统工作时钟,和要求生成的输出频率,需要计算相位增量。

18 频率分辨率公式 (Frequency Resolution)

19 频率分辨率计算

20 相位抖动DDS (Phase Dither DDS)

21 相位抖动DDS结构 随机抖动序列发生器 不适合电子设计比赛中使用

22 相位抖动DDS频谱

23 DDS设计扩展 生成正余弦波时,只存放1/4个周期的波形(高2比特不作为数据位,而作为波形的选择使用),优点是大大节约存储空间,但会导致计算的时间延长。 使用DDS生成任意波形(三角波、方波、锯齿波等)

24 D/A的使用简单介绍 D/A是数模转换器。关于它的调用,每一种具体型号有所不同。但是基本原理都是将数字信号传送给D/A,由D/A完成转换,输出模拟信号。

25 定时器的使用简单介绍 定时器中断是单片机中各种中断中的一种。 简单的说,定时器就是自动在每次设置的时间到时之后执行定时器中断函数。
定时器需要启动命令启动,并需要设置每次计时的时间。

26 设计实例-51单片机 通过一个简单的实例来说明设计的原理 使用Atmel公司的89C51系列单片机,MSP430等单片机实现方法类似。
目标:采用深度为256的查找表,在10KHz的数据输出频率下,实现100Hz~1KHz的正弦波输出。

27 步骤1 通过MATLAB建立正余弦查找表 f1 = fopen('d:\aaa.txt','w');
fprintf(f1,'%.0f,',255.5*(sin(N/256*2*pi)+1)); fclose(f1)

28 正余弦查找表 注意最前面的”code”(51用)。MSP430使用”const”。 注意:表有点问题,范围应该是从0~256.

29 步骤2 计算相位增量 通过宏定义的方式给出数据输出时钟和正弦波频率 定义几个变量 计算出相位增量,将相位累加器清零
注意:上式请自己推导,与课件中公式有点区别.

30 步骤3 每一次定时器中断输出一个值

31 设计实例-Xilinx公司FPGA 设计一个使用100MHz时钟产生10MHz正弦波 设计环境使用Xilinx公司的ISE7.1
使用Core Generator生成DDS的IP Core

32 步骤1 选择生成新的IP Core

33 步骤2 在“Communication & Networking”-“Modulation”中选中”Direct Digital Synthesizer 5.0”

34 步骤3 设置必要参数 产生正弦还是余弦 工作时钟频率 频谱纯净度 频率分辨率

35 步骤4 设置输出频率 输出正余弦波频率 查找表是可写入或系统自动生成

36 步骤5 设置可选参数 是否使用抖动技术 流水结构 存储器类型

37 步骤6 给出统计报告

38 课后练习作业 因为是很基本的东西,所以请让一组的所有同学都参与一下,不要一个人做完。 开学后各组带队老师会检查该组的完成情况。

39 题目 使用51单片机(Keil环境)编写DDS产生正弦波的程序(单片机工作频率16MHz)
基本要求:在10KHz的D/A数据输出频率下,产生100Hz~1KHz的正弦波输出。要写出完整的程序,包括定时器的初始化和调用。D/A的输出部分不要求,可以调用函数如 Void Send_to_DA(unsigned char send_value) DA输出函数体内部不要求写。 正弦表深度为512. 输出正弦波频率通过宏定义变量给入即可,不要求输入的函数。

40 题目 发展要求: 1、存储表只存放1/4个周期的正弦函数,完成正弦函数的输出 2、能够同时输出三角波和正弦波(通过一个宏定义变量切换)
3、同时使用两个DA,如何最简便的同时输出正弦和余弦波形?按照你所想出的方法写出程序。

41 有兴趣的同学可以安装Xilinx ISE7.1,自行完成FPGA的程序设计(不要求同组一起完成,看个人兴趣)。
答疑在通信楼527


Download ppt "DDS原理与应用 通信工程2002级 李忠琦."

Similar presentations


Ads by Google