OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3650|回复: 10

关于DDS原理的疑问,望大神们解答。

[复制链接]

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
发表于 2018-8-27 21:16:50 | 显示全部楼层 |阅读模式
30金钱
最近在用DDS芯片,市面上有很多,虽然用起来没什么问题,但是对DDS的原理很是琢磨不透,纠结好久了,上来问问有没有大神能够解释。
DDS常说的是0-2π的相位区间对应了累加器的总位数,比如2的n次方。
还有一个频率控制字是K,其实就是累加器的加法因子,每来一个参考时钟就加一次这个加法因子,累加器溢出后就是下一个周期。
我们把n和k弄小一点,比如n=4,k=3,参考时钟10Hz。
一个脉冲,3
两个脉冲,6
三个脉冲,9
四个脉冲,12
五个脉冲,15
六个脉冲,18(溢出了)
然后就很奇怪了,实际上如果是上述数据的配置,DDS能够输出1.875Hz的数据。
但是它是怎么做到的呢,按照上面的原理描述,要么少一个脉冲不够溢出,要么溢出了还多。这个如此准确的小数频率是是个什么原理呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-28 01:32:00 | 显示全部楼层
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-8-28 07:04:21 | 显示全部楼层
不懂在此!
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2018-8-28 09:47:20 | 显示全部楼层
使用python3.6软件进行DDS建模。
k为2整数倍时输出的频率是对称的,
不为2的整数倍时,输出周期信号里面是会缺部分时钟,产生信号相位噪音。
DDS是合成频率革命性的东西啊!
DDS.jpg
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
 楼主| 发表于 2018-8-28 19:34:27 | 显示全部楼层
DongInker 发表于 2018-8-28 09:47
使用python3.6软件进行DDS建模。
k为2整数倍时输出的频率是对称的,
不为2的整数倍时,输出周期信号里面 ...

首先感谢您作出如此专业的解答。
对于正弦波和您图片上锯齿波吧,这类波形其实相对好理解,当相位累加器溢出后,下一个周期相位累加器起始不为0,而是存有溢出的量。这造成了信号相位噪声。
其实我真正不能理解的是,比如AD9833这样的DDS芯片,它有一个功能就是输出DAC的MSB,从而实现方波输出。
如果是上述这样的理解的话,输出的方波是如何实现如此高的精度的呢?
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2018-8-28 20:43:36 | 显示全部楼层
地址位越高,剩下地址位越多,对应的k可配置范围就越大,越就只有最高为MSB才能达到fm/2^N分辨率,
MSB前一位的话,频率分辨率就会降一位,也就是fm/(2^N-1);
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
 楼主| 发表于 2018-8-28 20:55:35 | 显示全部楼层
DongInker 发表于 2018-8-28 20:43
地址位越高,剩下地址位越多,对应的k可配置范围就越大,越就只有最高为MSB才能达到fm/2^N分辨率,
MSB前 ...

那实际上输出的方波频率是有抖动的是么?
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2018-8-29 19:45:36 | 显示全部楼层
oyixi001 发表于 2018-8-28 20:55
那实际上输出的方波频率是有抖动的是么?

如果K为2整倍数方波高低电平占空比是50%,否则占空比会不断的微调!
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
 楼主| 发表于 2018-8-30 11:05:38 | 显示全部楼层
DongInker 发表于 2018-8-29 19:45
如果K为2整倍数方波高低电平占空比是50%,否则占空比会不断的微调!

K为2的整倍数这种情况当然是没有问题的。
如果不是2整倍数的时候,在时域上,溢出的那个参考时钟到达的时候,实际上频率已经比设定值低了吖。
就比如我题头里写的这个,理论应该输出1.875Hz,但是实际用了6个脉冲才完成溢出,频率应该是1.666Hz啊。
实际您用phthon做的这个演示,橙色的点,周期也是在变化的啊,有的是5点一个周期,有的是6点一个周期。
我主要是这些想不通。
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2018-8-30 17:53:10 来自手机 | 显示全部楼层
溢出之后,尾数还留在累加器里,所以单个周期内点数是变化的。
回复

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
 楼主| 发表于 2018-8-31 09:34:35 | 显示全部楼层
jinggx 发表于 2018-8-30 17:53
溢出之后,尾数还留在累加器里,所以单个周期内点数是变化的。

嗯是的,所以我就一直很纠结这个事情啊。对于输出波形来说,单个周期内的点数变化,其实就是参考时钟个数变化啊,那这个输出频率不是在抖动么。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 14:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表