'
有问题,我是避开了16分之一的,这里选的10.7 mhz,并非整数,程序也贴出来了。您可以看到,即使是16比特dds,相位增量也是4382,而不是4096。
如果有兴趣您就自己转转看,我觉得挺有收获的。 [表情]
'
这就对了!
对于16bit的累加器,4382对应的输出频率理论上应当是:10.698,242,187,5 mhz。估计你在32bit累加器的仿真过程中用了一个更接近10.7 mhz的近似值。
我猜想,两个不同的累加器输出的信号差异应当主要是由于这点微小的频率差异引起的。如果你在32bit 累加器的方针试验中,采用与16bit同样的频率,那么两者的输出是完全一样的,当然频谱也不会有任何差异。
你不妨尝试一下,稍微修改一下频率,频谱应当会有所变化。
再次申明:我不认为相位累加器的字长会导致相位抖动,只会影响频率分辨率。在你这个例子当中,实际上并没有得到10.7 mhz的精确频率,这正是由于有限的频率分辨率。
在这个例子当中,要输出10.7mhz的频率,相位累加器的步长应当是4382.72。如果我们重新设计累加器,让累加器在工作过程中一部分时间按步长4382工作,另一部分时间按步长4383工作,那么我们也可以得到准确地10.7 mhz的输出,但如果这样做就会出现相位抖动。
最后,对于所有的二进制累加器,除非将采样频率设定成2的n次方乘以10的m次方(m=…,-2,-1,0,1,2…),否则我们总是无法得到准确地频率。
所以,我认为比较理想的dds应当采用十进制累加器。