论坛风格切换切换到宽版
  • 3608阅读
  • 19回复

FTW 32BIT DDS [复制链接]

上一主题 下一主题
离线BG7YDO
 
发帖
3654
只看楼主 倒序阅读 0楼 发表于: 2011-02-28
类似ad9951的32bit频率字的dds有没有必要用429496729.6hz做时钟吗?这样做有什么优缺点呢?如果需要,用什么方法比较容易实现?
离线nbcdmagsm
发帖
650
只看该作者 1楼 发表于: 2011-03-01
好像没必要.这个时钟频率使dds输出频率和频率控制数据相差10倍,如:输出频率1000hz,控制字节数据为10000.如果用400mhz时钟输出频率1000hz,控制字节数为10737.5左右.如果单片机控制程序计算32位控制数能力没有问题,应该没必要用这个时钟.
离线BH7KQK
发帖
3415
只看该作者 2楼 发表于: 2011-03-01
很有必要..啸叫声就是由于交越失真造成的......
离线BG7YDO
发帖
3654
只看该作者 3楼 发表于: 2011-03-01
'
好像没必要.这个时钟频率使dds输出频率和频率控制数据相差10倍,如:输出频率1000hz,控制字节数据为10000.如果用400mhz时钟输出频率1000hz,控制字节数为10737.5左右.如果单片机控制程序计算32位控制数能力没有问题,应该没必要用这个时钟.
'
我在其他地方看到这样的信息:
dds咋三元主要有三种:
1,相位舍位误差,
2,幅度变量误差,
3,adc的非理想特性。
不知道和这个是是否存在关系?
本着先软后硬的原则是没有必要,如果做了也是一种尝试,找乐子 ,400mhz时钟是否可以输出一个10mhz整数频率,有点难,总会有小数部分。
离线nbcdmagsm
发帖
650
只看该作者 4楼 发表于: 2011-03-01
'
很有必要..啸叫声就是由于交越失真造成的......
'
我还是认为没有必要,dds是一个数字信号转变模拟信号输出电路。时钟频率是可以改变的,ad9951稳定时钟频率是400mhz,ad9851为180mhz,ad9850为125mhz,ad9858好像1ghz。这些频率可以略高、略低。ad9951和9851(9850)控制字节数是32位二进制数。
控制字节数=输出频率*4294967296(2的32次方)/时钟频率
我们可以用200mhz时钟,利用谐波通过滤波和放大电路使输出200mhz频率(标准输出最高好像70mhz)
我用bascom-avr的32位计算公式计算ad9851芯片32位控制数最高输出频率好像只能在89mhz,再高就是负数了。(不知道c语言有没有这种现象)用频率计测ad9851芯片输出频率,在65mhz以前跟控制数还是线性关系,65mhz以后输出频率不是线性了。
对于失真只能另当别论了,失真可以通过滤波、调整动静态工作点来改善。
以上只是我个人观点。欢迎大家继续讨论。
离线nbcdmagsm
发帖
650
只看该作者 5楼 发表于: 2011-03-01
'
我在其他地方看到这样的信息:
dds咋三元主要有三种:
1,相位舍位误差,
2,幅度变量误差,
3,adc的非理想特性。
不知道和这个是是否存在关系?
本着先软后硬的原则是没有必要,如果做了也是一种尝试,找乐子 [表情] ,400mhz时钟是否可以输出一个10mhz整数频率,有点难,总会有小数部分。
'
误差元素是很多的。还有时钟温度因素、单片机控制dds控制速度因素等等。。。利用dds输出10.000000mhz是可以的,输出10.00000000000时要考虑很多因素的。
离线BG7YDO
发帖
3654
只看该作者 6楼 发表于: 2011-03-01
'
我还是认为没有必要,dds是一个数字信号转变模拟信号输出电路。时钟频率是可以改变的,ad9951稳定时钟频率是400mhz,ad9851为180mhz,ad9850为125mhz,ad9858好像1ghz。这些频率可以略高、略低。ad9951和9851(9850)控制字节数是32位二进制数。
控制字节数=输出频率*4294967296(2的32次方)/时钟频率
我们可以用200mhz时钟,利用谐波通过滤波和放大电路使输出200mhz频率(标准输出最高好像70mhz)
我用bascom-avr的32位计算公式计算ad9851芯片32位控制数最高输出频率好像只能在89mhz,再高就是负数了。用频率计测ad9851芯片输出频率,在65mhz以前跟控制数还是线性关系,65mhz以后输出频率不是线性了。
对于失真只能另当别论了,失真可以通过滤波、调整动静态工作点来改善。
'
这个负数是怎样来来的,dds对这个数有啥反应,9851我没有写过程序,不知道。还有65mhz以后就不是线性了,可否多讲解一些?我以前写的没有用除法,用的是查表,总是有误差,虽然不大,也去不掉
离线BG7YDO
发帖
3654
只看该作者 7楼 发表于: 2011-03-01
'
误差元素是很多的。还有时钟温度因素、单片机控制dds控制速度因素等等。。。利用dds输出10.000000mhz是可以的,输出10.00000000000时要考虑很多因素的。
'
adi的网页上有个计算的东西,我是看那上面的数字得出的结果。 如果想改善杂散及相噪的话,有哪些方法或是措施,能讲解一下吗?
离线bd1es
发帖
2096
只看该作者 8楼 发表于: 2011-03-01
dds只在一些特殊分布的频点上可以输出无抖动的信号,这些频点的分布规律类似于整数分频器的。无抖动自然好,但可惜在整个dds频点空间内,这些“特殊点”太少了。

如果特别在意dds的抖动,并打算尽量利用这些“无抖动”频点,那么选择特定的时钟频率是必要的。但注意这时候dds基本上蜕变为带波表的分频器,也就算不上是dds了。

另一种做法是计算机仿真在先,事先确定在打算使用的频段内,由抖动带来的附加边带干扰有多大,会不会离载波过近而难以滤除,并据此优化dds字长、波表字长,还有时钟频率啥的。这种仿真可以帮助优化方案,在工作频段内避开那些主要的调制副产物。这时候,就可以尽量选择标准的时钟频率,避免出去定做花大把的银子。

还有一种情况是dds宽带工作,无论如何也会有些频点受到不应有的边带干扰。那就没办法了,除了提高dds字长,购买有特殊技术的dds外,似乎没别的办法了,选择特殊时钟也没用。这是整体提高dds信噪比的问题,所谓和谐稳定大局观。:)

注意dds的噪声不是在模拟化之后才有的。在数字域里,dds就已经有必然存在的噪声了。根据这个原理,我们就可以用计算机仿真的方法事先确定噪声的分布规律,可让实际的制作少走些弯路。当然还有意想不到的其它噪声,仿真无效, :d

如果需要dds尽量输出整一些的频率,那就类似于第一段的意思。我没计算,但相信需要特定的时钟频率,增加整数频率点。
离线nbcdmagsm
发帖
650
只看该作者 9楼 发表于: 2011-03-01
'
这个负数是怎样来来的,dds对这个数有啥反应,9851我没有写过程序,不知道。还有65mhz以后就不是线性了,可否多讲解一些?我以前写的没有用除法,用的是查表,总是有误差,虽然不大,也去不掉
'
因为这个控制数定义为long 4个字节32位 十进制为:-2147483,648 ~ 2,147,483,647 用bascom频率公式180mhz时钟最高控制数2,147,483,647输出频率89999999hz,高于90mhz频率通过运算控制数运算结果会出现负数
线性:单片机发送65mhz前的控制数据输出频率基本正常,70mhz以后控制数和输出频率对不上了.
离线代洪波
发帖
4809
只看该作者 10楼 发表于: 2011-03-01
dds不是给你做宽频使用的。
离线小比尔/5
发帖
2582
只看该作者 11楼 发表于: 2011-03-01
主要是计算方便,别的没啥,可能杂散也有一点点区别

用2的次方就是计算方便,左移右移就行了。其它频率就要从计算上优化,可以考虑先乘后除
记得某人好像用查表法
离线BG7YDO
发帖
3654
只看该作者 12楼 发表于: 2011-03-01
其实也没多想,很多东西貌似知道其实不然,所以发帖求真,还要多谢各位老师的解答。希望还能补充一些,更详细一些。
特别感谢1es详细的解答,谢谢。
离线bd1es
发帖
2096
只看该作者 13楼 发表于: 2011-03-03
老大客气了, :d
离线小比尔/5
发帖
2582
只看该作者 14楼 发表于: 2011-03-03
'
老大客气了, :d
'
你纠结这个问题很久了,很有心得啊,呵呵
1es老师
离线bd1es
发帖
2096
只看该作者 15楼 发表于: 2011-03-03
[quote=小比尔/5]你纠结这个问题很久了,很有心得啊,呵呵
1es老师[/quote]

...

老大,俺一定继续纠结下去,

离线小比尔/5
发帖
2582
只看该作者 16楼 发表于: 2011-03-03
'
[表情] [表情] ...
老大,俺一定继续纠结下去,
[表情] [表情]
'
呵呵
您是做通讯的吧?
离线bd1es
发帖
2096
只看该作者 17楼 发表于: 2011-03-03
唉,我想啊。曾经与通信失之交臂,现在堕落成了银行小职员,
离线nbcdmagsm
发帖
650
只看该作者 18楼 发表于: 2011-03-03
这里我想没多少靠无线电吃饭的.
离线小比尔/5
发帖
2582
只看该作者 19楼 发表于: 2011-03-03
'
唉,我想啊。曾经与通信失之交臂,现在堕落成了银行小职员, [表情]
'
多好啊,收入高