Accuracy problem of a DDS at very low frequencies











up vote
8
down vote

favorite












First time in my life I'm using this DDS chip (AD9850) to create sine wave at a desired freq, where I upload the lookup table code and the desired freq. command via a with micro-controller. So my knowledge at the moment very limited.



The thing seems fine so far but the problem is at very low frequencies. At 1Hz and even 0.5Hz seems fine. But I also need down to 0.1Hz.



Here is the output of DDS when I send the number 0.1 to the DDS via the micro controller:



enter image description here



In my code I send the command from PC to micro as string and convert it to double.
But for simplicity and to verify I use this code, and for 0.1Hz I set sendFrequency(0.1) in the loop.



But as you see the period is around 11.5 sec instead of 10 sec for 0.1Hz command.



I hope I could explain the issue well. Is there a way to calibrate or fine-tune this so that I would have more accurate result? Or I should live with the accuracy? Btw where in the data sheet one can refer to such relative uncertainty?










share|improve this question




















  • 1




    so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
    – Marcus Müller
    Nov 21 at 13:26










  • @MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
    – user1234
    Nov 21 at 13:31










  • you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
    – Marcus Müller
    Nov 21 at 13:37










  • Oh I see I thought it is fixed or changed by the code. I will measure and come back.
    – user1234
    Nov 21 at 13:38










  • It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
    – user1234
    Nov 21 at 13:40















up vote
8
down vote

favorite












First time in my life I'm using this DDS chip (AD9850) to create sine wave at a desired freq, where I upload the lookup table code and the desired freq. command via a with micro-controller. So my knowledge at the moment very limited.



The thing seems fine so far but the problem is at very low frequencies. At 1Hz and even 0.5Hz seems fine. But I also need down to 0.1Hz.



Here is the output of DDS when I send the number 0.1 to the DDS via the micro controller:



enter image description here



In my code I send the command from PC to micro as string and convert it to double.
But for simplicity and to verify I use this code, and for 0.1Hz I set sendFrequency(0.1) in the loop.



But as you see the period is around 11.5 sec instead of 10 sec for 0.1Hz command.



I hope I could explain the issue well. Is there a way to calibrate or fine-tune this so that I would have more accurate result? Or I should live with the accuracy? Btw where in the data sheet one can refer to such relative uncertainty?










share|improve this question




















  • 1




    so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
    – Marcus Müller
    Nov 21 at 13:26










  • @MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
    – user1234
    Nov 21 at 13:31










  • you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
    – Marcus Müller
    Nov 21 at 13:37










  • Oh I see I thought it is fixed or changed by the code. I will measure and come back.
    – user1234
    Nov 21 at 13:38










  • It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
    – user1234
    Nov 21 at 13:40













up vote
8
down vote

favorite









up vote
8
down vote

favorite











First time in my life I'm using this DDS chip (AD9850) to create sine wave at a desired freq, where I upload the lookup table code and the desired freq. command via a with micro-controller. So my knowledge at the moment very limited.



The thing seems fine so far but the problem is at very low frequencies. At 1Hz and even 0.5Hz seems fine. But I also need down to 0.1Hz.



Here is the output of DDS when I send the number 0.1 to the DDS via the micro controller:



enter image description here



In my code I send the command from PC to micro as string and convert it to double.
But for simplicity and to verify I use this code, and for 0.1Hz I set sendFrequency(0.1) in the loop.



But as you see the period is around 11.5 sec instead of 10 sec for 0.1Hz command.



I hope I could explain the issue well. Is there a way to calibrate or fine-tune this so that I would have more accurate result? Or I should live with the accuracy? Btw where in the data sheet one can refer to such relative uncertainty?










share|improve this question















First time in my life I'm using this DDS chip (AD9850) to create sine wave at a desired freq, where I upload the lookup table code and the desired freq. command via a with micro-controller. So my knowledge at the moment very limited.



The thing seems fine so far but the problem is at very low frequencies. At 1Hz and even 0.5Hz seems fine. But I also need down to 0.1Hz.



Here is the output of DDS when I send the number 0.1 to the DDS via the micro controller:



enter image description here



In my code I send the command from PC to micro as string and convert it to double.
But for simplicity and to verify I use this code, and for 0.1Hz I set sendFrequency(0.1) in the loop.



But as you see the period is around 11.5 sec instead of 10 sec for 0.1Hz command.



I hope I could explain the issue well. Is there a way to calibrate or fine-tune this so that I would have more accurate result? Or I should live with the accuracy? Btw where in the data sheet one can refer to such relative uncertainty?







dds






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 at 9:23









manassehkatz

22916




22916










asked Nov 21 at 13:16









user1234

3751025




3751025








  • 1




    so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
    – Marcus Müller
    Nov 21 at 13:26










  • @MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
    – user1234
    Nov 21 at 13:31










  • you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
    – Marcus Müller
    Nov 21 at 13:37










  • Oh I see I thought it is fixed or changed by the code. I will measure and come back.
    – user1234
    Nov 21 at 13:38










  • It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
    – user1234
    Nov 21 at 13:40














  • 1




    so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
    – Marcus Müller
    Nov 21 at 13:26










  • @MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
    – user1234
    Nov 21 at 13:31










  • you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
    – Marcus Müller
    Nov 21 at 13:37










  • Oh I see I thought it is fixed or changed by the code. I will measure and come back.
    – user1234
    Nov 21 at 13:38










  • It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
    – user1234
    Nov 21 at 13:40








1




1




so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
– Marcus Müller
Nov 21 at 13:26




so, what's the control word you're sending to the DDS chip, and what's the reference clock you're using for the DDS chip? What did you expect to happen, and how far off are these 11.5 s from that? We'll need a lot more knowledge on your system!
– Marcus Müller
Nov 21 at 13:26












@MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
– user1234
Nov 21 at 13:31




@MarcusMüller I use this code softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html just abit modified but the core is the same. I couldnt infer what is the clock being used from the code. I provided the code and the chip what else you need more let me provide.
– user1234
Nov 21 at 13:31












you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
– Marcus Müller
Nov 21 at 13:37




you wired up the chip to a reference clock. You're literally the only one in this world who can tell us what the reference clock is; the circuit is sitting in front of you, not of us!
– Marcus Müller
Nov 21 at 13:37












Oh I see I thought it is fixed or changed by the code. I will measure and come back.
– user1234
Nov 21 at 13:38




Oh I see I thought it is fixed or changed by the code. I will measure and come back.
– user1234
Nov 21 at 13:38












It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
– user1234
Nov 21 at 13:40




It is this module telecnatron.com/modules/ad9850/index.html so it seems 125MHz
– user1234
Nov 21 at 13:40










2 Answers
2






active

oldest

votes

















up vote
9
down vote













It's not an accuracy thing- it's resolution.



The front of the data sheet specifies tuning resolution of 0.0291Hz with a 125MHz clock.



$0.0291 approx dfrac{125times 10^{6}}{2^{32}}$ Hz (since the phase accumulator is 32 bits)



So that's about 30% of your desired output frequency. That comes from the result of adding the LSB of the tuning word to the phase accumulator at 125MHz- for a given clock frequency, it's inherent to the chip and the number of bits they chose for the phase accumulator and tuning word.



You can try reducing the clock frequency- the minimum is 1MHz so you should be able to improve the resolution by more than two orders of magnitude, to around +/-0.23% at 0.1Hz.



$0.23times 10^{-3} approx dfrac{1times 10^{6}}{2^{32}}$ Hz resolution with a 1MHz clock



Unfortunately, other things are going to have to change for optimal performance (especially the output filter- which is typically a 7th order elliptical LC filter on these modules).



If you never need to go above, say, 1Hz, you can simply add an RC filter with a cutoff of, say, 100Hz to the existing output and it will be acceptable for many purposes.






share|improve this answer



















  • 1




    Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
    – Spehro Pefhany
    Nov 21 at 14:04








  • 1




    It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
    – Spehro Pefhany
    Nov 21 at 14:08






  • 1




    Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
    – Spehro Pefhany
    Nov 21 at 14:12






  • 1




    Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
    – Spehro Pefhany
    Nov 21 at 14:12








  • 1




    @SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
    – ThreePhaseEel
    Nov 22 at 0:29


















up vote
7
down vote













What you're looking for on the datasheet is the frequency tuning resolution. For this chip it is 0.0291 Hz for a 125 MHz reference clock input. Your frequency will be rounded to a multiple of this number. This number is based on the frequency of the clock input of the chip.



For example, 0.1 Hz will be rounded to 0.0873 Hz (0.0291*3). The period for 0.0873 Hz is 11.5 seconds which is what you're seeing.



A lower input clock frequency will give higher accuracy at lower frequencies. So if you wanted better accuracy at lower frequencies then lower the clock frequency.






share|improve this answer























  • How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
    – user1234
    Nov 21 at 13:59










  • It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
    – Pangus
    Nov 21 at 14:09










  • Oh nice I can even plot the error versus freq. now-
    – user1234
    Nov 21 at 14:10












  • @ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
    – Pangus
    Nov 21 at 14:17






  • 1




    You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
    – Pangus
    Nov 21 at 14:45











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
return StackExchange.using("schematics", function () {
StackExchange.schematics.init();
});
}, "cicuitlab");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "135"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f408032%2faccuracy-problem-of-a-dds-at-very-low-frequencies%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
9
down vote













It's not an accuracy thing- it's resolution.



The front of the data sheet specifies tuning resolution of 0.0291Hz with a 125MHz clock.



$0.0291 approx dfrac{125times 10^{6}}{2^{32}}$ Hz (since the phase accumulator is 32 bits)



So that's about 30% of your desired output frequency. That comes from the result of adding the LSB of the tuning word to the phase accumulator at 125MHz- for a given clock frequency, it's inherent to the chip and the number of bits they chose for the phase accumulator and tuning word.



You can try reducing the clock frequency- the minimum is 1MHz so you should be able to improve the resolution by more than two orders of magnitude, to around +/-0.23% at 0.1Hz.



$0.23times 10^{-3} approx dfrac{1times 10^{6}}{2^{32}}$ Hz resolution with a 1MHz clock



Unfortunately, other things are going to have to change for optimal performance (especially the output filter- which is typically a 7th order elliptical LC filter on these modules).



If you never need to go above, say, 1Hz, you can simply add an RC filter with a cutoff of, say, 100Hz to the existing output and it will be acceptable for many purposes.






share|improve this answer



















  • 1




    Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
    – Spehro Pefhany
    Nov 21 at 14:04








  • 1




    It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
    – Spehro Pefhany
    Nov 21 at 14:08






  • 1




    Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
    – Spehro Pefhany
    Nov 21 at 14:12






  • 1




    Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
    – Spehro Pefhany
    Nov 21 at 14:12








  • 1




    @SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
    – ThreePhaseEel
    Nov 22 at 0:29















up vote
9
down vote













It's not an accuracy thing- it's resolution.



The front of the data sheet specifies tuning resolution of 0.0291Hz with a 125MHz clock.



$0.0291 approx dfrac{125times 10^{6}}{2^{32}}$ Hz (since the phase accumulator is 32 bits)



So that's about 30% of your desired output frequency. That comes from the result of adding the LSB of the tuning word to the phase accumulator at 125MHz- for a given clock frequency, it's inherent to the chip and the number of bits they chose for the phase accumulator and tuning word.



You can try reducing the clock frequency- the minimum is 1MHz so you should be able to improve the resolution by more than two orders of magnitude, to around +/-0.23% at 0.1Hz.



$0.23times 10^{-3} approx dfrac{1times 10^{6}}{2^{32}}$ Hz resolution with a 1MHz clock



Unfortunately, other things are going to have to change for optimal performance (especially the output filter- which is typically a 7th order elliptical LC filter on these modules).



If you never need to go above, say, 1Hz, you can simply add an RC filter with a cutoff of, say, 100Hz to the existing output and it will be acceptable for many purposes.






share|improve this answer



















  • 1




    Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
    – Spehro Pefhany
    Nov 21 at 14:04








  • 1




    It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
    – Spehro Pefhany
    Nov 21 at 14:08






  • 1




    Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
    – Spehro Pefhany
    Nov 21 at 14:12






  • 1




    Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
    – Spehro Pefhany
    Nov 21 at 14:12








  • 1




    @SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
    – ThreePhaseEel
    Nov 22 at 0:29













up vote
9
down vote










up vote
9
down vote









It's not an accuracy thing- it's resolution.



The front of the data sheet specifies tuning resolution of 0.0291Hz with a 125MHz clock.



$0.0291 approx dfrac{125times 10^{6}}{2^{32}}$ Hz (since the phase accumulator is 32 bits)



So that's about 30% of your desired output frequency. That comes from the result of adding the LSB of the tuning word to the phase accumulator at 125MHz- for a given clock frequency, it's inherent to the chip and the number of bits they chose for the phase accumulator and tuning word.



You can try reducing the clock frequency- the minimum is 1MHz so you should be able to improve the resolution by more than two orders of magnitude, to around +/-0.23% at 0.1Hz.



$0.23times 10^{-3} approx dfrac{1times 10^{6}}{2^{32}}$ Hz resolution with a 1MHz clock



Unfortunately, other things are going to have to change for optimal performance (especially the output filter- which is typically a 7th order elliptical LC filter on these modules).



If you never need to go above, say, 1Hz, you can simply add an RC filter with a cutoff of, say, 100Hz to the existing output and it will be acceptable for many purposes.






share|improve this answer














It's not an accuracy thing- it's resolution.



The front of the data sheet specifies tuning resolution of 0.0291Hz with a 125MHz clock.



$0.0291 approx dfrac{125times 10^{6}}{2^{32}}$ Hz (since the phase accumulator is 32 bits)



So that's about 30% of your desired output frequency. That comes from the result of adding the LSB of the tuning word to the phase accumulator at 125MHz- for a given clock frequency, it's inherent to the chip and the number of bits they chose for the phase accumulator and tuning word.



You can try reducing the clock frequency- the minimum is 1MHz so you should be able to improve the resolution by more than two orders of magnitude, to around +/-0.23% at 0.1Hz.



$0.23times 10^{-3} approx dfrac{1times 10^{6}}{2^{32}}$ Hz resolution with a 1MHz clock



Unfortunately, other things are going to have to change for optimal performance (especially the output filter- which is typically a 7th order elliptical LC filter on these modules).



If you never need to go above, say, 1Hz, you can simply add an RC filter with a cutoff of, say, 100Hz to the existing output and it will be acceptable for many purposes.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 21 at 21:54

























answered Nov 21 at 14:00









Spehro Pefhany

200k4145397




200k4145397








  • 1




    Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
    – Spehro Pefhany
    Nov 21 at 14:04








  • 1




    It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
    – Spehro Pefhany
    Nov 21 at 14:08






  • 1




    Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
    – Spehro Pefhany
    Nov 21 at 14:12






  • 1




    Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
    – Spehro Pefhany
    Nov 21 at 14:12








  • 1




    @SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
    – ThreePhaseEel
    Nov 22 at 0:29














  • 1




    Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
    – Spehro Pefhany
    Nov 21 at 14:04








  • 1




    It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
    – Spehro Pefhany
    Nov 21 at 14:08






  • 1




    Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
    – Spehro Pefhany
    Nov 21 at 14:12






  • 1




    Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
    – Spehro Pefhany
    Nov 21 at 14:12








  • 1




    @SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
    – ThreePhaseEel
    Nov 22 at 0:29








1




1




Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
– Spehro Pefhany
Nov 21 at 14:04






Nothing divides the 125MHz from what I can see (other than the DDS itself, of course). You would have to unsolder the oscillator and replace it with a different (lower) frequency module. Or disable it and apply an external clock (it may have an enable input..you can look it up). It's a hardware change.
– Spehro Pefhany
Nov 21 at 14:04






1




1




It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
– Spehro Pefhany
Nov 21 at 14:08




It does, of course, but they didn't put enough bits in there for your application. If they had added another 8 bits to the tune word and the phase accumulator you'd be happy (and people who don't need such low frequencies would have to pay slightly more and send more bits to tune the DDS so they wouldn't be as happy).
– Spehro Pefhany
Nov 21 at 14:08




1




1




Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
– Spehro Pefhany
Nov 21 at 14:12




Correct. But it does accommodate as low as a 1MHz clock so all is not lost, even for your application. The module output filter (those inductors and capacitors and resistors) will not be appropriate though so the output will tend to be noisy with a much lower clock frequency.
– Spehro Pefhany
Nov 21 at 14:12




1




1




Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
– Spehro Pefhany
Nov 21 at 14:12






Nothing to do with pins. But the module clock and output filter is designed for 125MHz fixed.
– Spehro Pefhany
Nov 21 at 14:12






1




1




@SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
– ThreePhaseEel
Nov 22 at 0:29




@SpehroPefhany -- lower end bench FGs can and do use premade DDS chips. Furthermore, ICs like the AD9106 can perform A/FG style (fixed-rate) arbitrary waveform generation. (The higher end ones would indeed use a FPGA + RAM and a separate DAC, but they're still the same basic thing at heart, just rolling their own implementation :)
– ThreePhaseEel
Nov 22 at 0:29












up vote
7
down vote













What you're looking for on the datasheet is the frequency tuning resolution. For this chip it is 0.0291 Hz for a 125 MHz reference clock input. Your frequency will be rounded to a multiple of this number. This number is based on the frequency of the clock input of the chip.



For example, 0.1 Hz will be rounded to 0.0873 Hz (0.0291*3). The period for 0.0873 Hz is 11.5 seconds which is what you're seeing.



A lower input clock frequency will give higher accuracy at lower frequencies. So if you wanted better accuracy at lower frequencies then lower the clock frequency.






share|improve this answer























  • How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
    – user1234
    Nov 21 at 13:59










  • It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
    – Pangus
    Nov 21 at 14:09










  • Oh nice I can even plot the error versus freq. now-
    – user1234
    Nov 21 at 14:10












  • @ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
    – Pangus
    Nov 21 at 14:17






  • 1




    You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
    – Pangus
    Nov 21 at 14:45















up vote
7
down vote













What you're looking for on the datasheet is the frequency tuning resolution. For this chip it is 0.0291 Hz for a 125 MHz reference clock input. Your frequency will be rounded to a multiple of this number. This number is based on the frequency of the clock input of the chip.



For example, 0.1 Hz will be rounded to 0.0873 Hz (0.0291*3). The period for 0.0873 Hz is 11.5 seconds which is what you're seeing.



A lower input clock frequency will give higher accuracy at lower frequencies. So if you wanted better accuracy at lower frequencies then lower the clock frequency.






share|improve this answer























  • How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
    – user1234
    Nov 21 at 13:59










  • It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
    – Pangus
    Nov 21 at 14:09










  • Oh nice I can even plot the error versus freq. now-
    – user1234
    Nov 21 at 14:10












  • @ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
    – Pangus
    Nov 21 at 14:17






  • 1




    You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
    – Pangus
    Nov 21 at 14:45













up vote
7
down vote










up vote
7
down vote









What you're looking for on the datasheet is the frequency tuning resolution. For this chip it is 0.0291 Hz for a 125 MHz reference clock input. Your frequency will be rounded to a multiple of this number. This number is based on the frequency of the clock input of the chip.



For example, 0.1 Hz will be rounded to 0.0873 Hz (0.0291*3). The period for 0.0873 Hz is 11.5 seconds which is what you're seeing.



A lower input clock frequency will give higher accuracy at lower frequencies. So if you wanted better accuracy at lower frequencies then lower the clock frequency.






share|improve this answer














What you're looking for on the datasheet is the frequency tuning resolution. For this chip it is 0.0291 Hz for a 125 MHz reference clock input. Your frequency will be rounded to a multiple of this number. This number is based on the frequency of the clock input of the chip.



For example, 0.1 Hz will be rounded to 0.0873 Hz (0.0291*3). The period for 0.0873 Hz is 11.5 seconds which is what you're seeing.



A lower input clock frequency will give higher accuracy at lower frequencies. So if you wanted better accuracy at lower frequencies then lower the clock frequency.







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 21 at 15:58









jdv

280212




280212










answered Nov 21 at 13:57









Pangus

995




995












  • How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
    – user1234
    Nov 21 at 13:59










  • It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
    – Pangus
    Nov 21 at 14:09










  • Oh nice I can even plot the error versus freq. now-
    – user1234
    Nov 21 at 14:10












  • @ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
    – Pangus
    Nov 21 at 14:17






  • 1




    You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
    – Pangus
    Nov 21 at 14:45


















  • How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
    – user1234
    Nov 21 at 13:59










  • It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
    – Pangus
    Nov 21 at 14:09










  • Oh nice I can even plot the error versus freq. now-
    – user1234
    Nov 21 at 14:10












  • @ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
    – Pangus
    Nov 21 at 14:17






  • 1




    You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
    – Pangus
    Nov 21 at 14:45
















How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
– user1234
Nov 21 at 13:59




How do you calculate the output rounded freq.? For example if I send 0.5 to the chip can you show what formula used and what would be the output? So that i can predict for each
– user1234
Nov 21 at 13:59












It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
– Pangus
Nov 21 at 14:09




It rounds down to a multiple of 0.0291. To find closest multiples, divide 0.5 by 0.0291, round down to the nearest whole number and multiply by 0.0291. 0.5/0.0291 = 17.18 which we round to 17. Then 17*0.0291=0.4947. So if you input 0.5Hz you would actually see 0.4947Hz
– Pangus
Nov 21 at 14:09












Oh nice I can even plot the error versus freq. now-
– user1234
Nov 21 at 14:10






Oh nice I can even plot the error versus freq. now-
– user1234
Nov 21 at 14:10














@ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
– Pangus
Nov 21 at 14:17




@ChrisStratton Oops. yeah you are right. I edited my answer. Thanks
– Pangus
Nov 21 at 14:17




1




1




You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
– Pangus
Nov 21 at 14:45




You can do frequency modulation and amplitude modulation but I don't think you can change the lookup table on the chip. If you are interested in making arbitrary waveforms then it might be worth looking into a different chip or getting a DAC and trying to create your own DDS
– Pangus
Nov 21 at 14:45


















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f408032%2faccuracy-problem-of-a-dds-at-very-low-frequencies%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

AnyDesk - Fatal Program Failure

How to calibrate 16:9 built-in touch-screen to a 4:3 resolution?

QoS: MAC-Priority for clients behind a repeater