DDS在非常低的频率下的精度问题


8

我一生中第一次使用这种 DDS芯片(AD9850)以所需的频率创建正弦波,然后在其中上传查找表代码和所需的频率。通过带有微控制器的命令。因此,目前我的知识非常有限。

到目前为止,事情似乎还不错,但问题出在很低的频率上。在1Hz甚至0.5Hz的频率下似乎很好。但是我也需要降低到0.1Hz。

当我通过微控制器将数字0.1发送到DDS时,这是DDS的输出:

在此处输入图片说明

在我的代码中,我以字符串形式将命令从PC发送到micro并将其转换为double。但是为了简单起见和验证,我使用此代码,对于0.1Hz,我在循环中设置sendFrequency(0.1)

但是如您所见,该周期约为11.5秒,而不是0.1Hz命令的10秒。

我希望我能很好地解释这个问题。有没有办法对此进行校准或微调,以便获得更准确的结果?还是我应该准确地生活?顺便说一句,在数据表中,哪里可以提到这种相对不确定性?


1
那么,您要发送到DDS芯片的控制字是什么,以及用于DDS芯片的参考时钟是什么?您预计会发生什么,这11.5 s离那有多远?我们需要您的系统更多的知识!
MarcusMüller18年

@MarcusMüller我使用此代码softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html进行了一些修改,但核心是相同的。我无法从代码中推断出正在使用的时钟。我提供了代码和芯片,您还需要我提供什么。
floppy380 '18

您将芯片连接到参考时钟。从字面上看,您是唯一可以告诉我们参考时钟是什么的人。电路位于您的面前,而不是我们的面前!
马库斯·米勒

哦,我知道我认为代码已修复或更改了它。我会测量然后再回来。
floppy380 '18

就是这个模块telecnatron.com/modules/ad9850/index.html,所以它看起来好像是125MHz
floppy380 '18

Answers:


9

这不是准确性,而是分辨率。

数据手册的前面指定了125MHz时钟的0.0291Hz调谐分辨率。

0.0291125×106232 Hz(由于相位累加器为32位)

因此,这大约是所需输出频率的30%。这是因为在给定的时钟频率下,将调谐字的LSB以125MHz的频率添加到相位累加器的结果,这是芯片固有的特性,也是他们为相位累加器和调谐字选择的位数。

您可以尝试降低时钟频率-最小值为1MHz,因此您应该能够将分辨率提高两个以上的数量级,在0.1Hz时可以达到大约+/- 0.23%。

0.23×10-31个×106232 1 MHz时钟时的Hz分辨率

不幸的是,为了获得最佳性能,其他事情将不得不改变(特别是输出滤波器,通常是这些模块上的7阶椭圆LC滤波器)。

如果您永远不需要高于1Hz,您可以简单地在现有输出上添加一个截止频率为100Hz的RC滤波器,这对于许多用途都是可以接受的。


1
从我所看到的内容来看,没有任何东西可以将125MHz分频(当然,除了DDS本身)。您将不得不拆下振荡器的振荡器,并用另一个(低频)频率模块替换它。或禁用它并应用外部时钟(它可能具有使能输入。您可以查找它)。这是硬件变化。
Spehro Pefhany

1
当然可以,但是他们没有为您的应用程序放置足够的空间。如果他们在调谐字和相位累加器上又增加了8位,那么您会很高兴的(不需要那么低频率的人将不得不支付更高的价格并发送更多的比特来调谐DDS,这样他们就不会一样快乐)。
Spehro Pefhany

1
正确。但是它确实可以容纳低至1MHz的时钟,因此即使对于您的应用程序,也不会丢失所有信号。模块输出滤波器(那些电感,电容和电阻)将不适用,因此在时钟频率低得多的情况下,输出往往会产生噪声。
Spehro Pefhany

1
与别针无关。但是模块时钟和输出滤波器的设计固定频率为125MHz。
Spehro Pefhany

1
@SpehroPefhany-低端台式FG可以并且确实使用预制的DDS芯片。此外,诸如AD9106之类的IC可以执行A / FG风格(固定速率)的任意波形生成。(高端设备确实会使用FPGA + RAM和单独的DAC,但
本质上

7

您在数据表上寻找的是频率调谐分辨率。对于该芯片,125 MHz参考时钟输入为0.0291 Hz。您的频率将四舍五入为该数字的倍数。该数字基于芯片时钟输入的频率。

例如,将0.1 Hz舍入为0.0873 Hz(0.0291 * 3)。0.0873 Hz的周期为11.5秒,这就是您所看到的。

较低的输入时钟频率将在较低的频率下提供较高的精度。因此,如果您想在较低的频率下获得更高的精度,请降低时钟频率。


如何计算输出的四舍五入频率?例如,如果我向芯片发送0.5,可以显示使用的公式是什么,输出是什么?这样我就可以预测每个
floppy380 '18

向下舍入为0.0291的倍数。要查找最接近的倍数,请用0.5除以0.0291,向下舍入为最接近的整数,然后乘以0.0291。0.5 / 0.0291 = 17.18,我们四舍五入为17。然后17 * 0.0291 = 0.4947。因此,如果您输入0.5Hz,则实际上会看到0.4947Hz
Pangus

很好,我什至可以绘制误差与频率的关系图。现在
floppy380 '18

@ChrisStratton糟糕。是的,没错。我编辑了答案。谢谢
Pangus

1
您可以进行频率调制和幅度调制,但我认为您无法更改芯片上的查找表。如果您有兴趣制作任意波形,那么不妨研究其他芯片或获取DAC并尝试创建自己的DDS
Pangus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.