Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Absurdly high frequency resolution of function generators?

Status
Not open for further replies.

thecritic

Member
I checked some common commercial high-quality lab function generators and they seem to provide frequency output upto 50 Mhz (not a big deal), but with resolution of 1 uHz ! That means, they can generate signal with 50000000 Hz and also with 50000000.000001 Hz ?? That would equate to time-period difference of 4.00355*10^-22 seconds between those two signals!!! How can they possibly generate pulses with that high of time-resolution?

If I try to generate a high frequency signal, using lets say Arduino, I can generate, at max 8 Mhz, if I toggle an output pin every cpu cycle. The next frequency below that I can do is 4 Mhz, if I toggle the bit every 2 cycles. That means I have a frequency resolution of 4 Mhz at that range.

But, these Function generator can do like: 8Mhz and then, 7.999 999 999 999 Mhz, with frequency resolution of 1uHz ! what sort of black magic is that?
 
No black magic.
I think you will find that the 1 μHz resolution is not available with a 50MHz output.
You need to look at the display and frequency adjustment resolution versus frequency.
 
No, not black magic.

Not all frequency generation involves using a 555, 741, PIC or Arduino.

The generator in question probably uses a very stable crystal oscillator which controls a DDS (Direct Digital Synthesis) type frequency synthesiser.
Also note that resolution is not the same as accuracy, although they often go together.

JimB
 
1)Your little computer is working at 8mhz. A good function generator using DDS might be working at 400mhz.
You are right that if you can make 8mhz, 4, 5.3333, 4, etc. All come from a common clock.
2)Look at DDS. It can make signals with good resolution with out speed.
To make the math simple lets assume a slow 100mhz clock. Every 10nS the output can be updated.
There is a 10 bit look up table. There is a 1024 location look up table that calls out a sign wave. To keep the math simple say 1000 table!
>To make a 100khz sign wave; every 10nS the next location in the table will be output.
>To make a 200khz sign wave' every 10nS the output will updated but only every other location will be output.
>To make a 1mhz.............................10nS.....................using 1 our of 10 locations.
>But to make a 1khz........................10nS.....but the same location will be output 100 times before moving on to the next loaction.

To get high resolution: Go back to the 100khz example;
We are advancing through the look up table at 10nS clock and making 100khz. Using a 1000 size table.
>To make a slightly faster signal, skip one location every 20uS. So the table is 1000, then 999, 1000, 999, etc. This will make the signal look like it is the tiniest bit faster. Or skiping every 40uS->1000, 1000, 1000, 999.
>To make a slightly slower signal, use one location twice every 20uS, 1000, 1001, 1000, 1001.

Probably did not explain well. DDS makes a signal in time not frequency. So 100khz is 10uS. First you have 10nS resolution so you really have 10,000nS. THEN by by adding one (10nS) every 1000 (complete) cycles you can make 1000x more resolution. 10,000,000pS.
 
Even with a PIC or AVR can a DDS generator be made with a resolution below 1Hz.
**broken link removed**
 
Even with a PIC or AVR can a DDS generator be made with a resolution below 1Hz.

Yes, it is a piece of cake when you are using the PIC/AVR to send the tuning words to an Analog Devices DDS chip.
I have done it myself my times.

But just using the PIC/AVR to generate the pulses out of a digital I/O pin?
No, not with that sort of accuracy/resolution.

JimB
 
Ok, does that mean, the I am getting the 1uHz resolution only on-average, but pulse-to-pulse frequency can vary by several Khz (with the average frequency = desired 1uHz resolution frequency) ?
I am new to this DDS technique; this is the first time I am hearing about it.
 
Yes, it is a piece of cake when you are using the PIC/AVR to send the tuning words to an Analog Devices DDS chip.
I have done it myself my times.

But just using the PIC/AVR to generate the pulses out of a digital I/O pin?
No, not with that sort of accuracy/resolution.

JimB
DDS generator can be made just with software + DAC with a PIC/AVR or any microcontroller.
Look the link I posted above.
AVR DDS generator with a few lines of asm code and a resistor DAC has 0.07Hz resolution.
 
Ok, does that mean, the I am getting the 1uHz resolution only on-average, but pulse-to-pulse frequency can vary by several Khz (with the average frequency = desired 1uHz resolution frequency) ?
I am new to this DDS technique; this is the first time I am hearing about it.
No, it may have some phase jitter, but the frequency is accurate.
Here is an explanation how the DDS is executed in software.
https://www.qsl.net/zs1ayj/page11.htm
 
For about $400 you can buy parts for Stratum 1 clock generally 1e-12 short term stability in an ovenized SC cut crystal called an OCXO.

Vectron still makes these and I used them in the mid-70's as a Doppler tracking system for research rockets so they could locate them after a 2000 km flight up then down for payload recovery. ( above satellites but not enough orbital inertia to stay there ) We provided the payload bays for NASA experiments so they could design a better communication system before the trip to the Moon.

For example the internet uses Stratum 1 clocks cascaded to Stratum 2 and 3 clocks with less stability all synchronized to Cesium based Global Clocks.

Time & Frequency standards are used for equipment calibration.

Now That's accuracy, but the question is about resolution and the phase noise on SC cut Xtals is about a million times better than your average AT cut crystal. The rest is done in digital fractional N Synthesizers.
 
Last edited:
Here is a DDS frequency generator in hardware.
**broken link removed**
$15.00
It needs a little computer to talk to it. (Arduino)
From the data sheet "he AD9850 allows an output frequency resolution of 0.0291 Hz with a 125 MHz reference clock applied."
A DDS is not programmed in "frequency" but in "time or clocks".
This one has a 32 bit number that you program into. So with a 100mhz clock the resolution is 2^32 of 100mhz. Not clear let me try....
There is a 32 bit counter inside. Every clock, 100mhz or 10nS, the number you programmed in is added to the 32 bit number. So if you enter a 1 then it will take 2^32 clocks to step through the waveform. If you program in a 2 it will take half as long to get through the wave form. If you put in a number that makes 1khz then you add one to that number it will make the 1khz slightly shorter by (2^32*10nS).

Here is 1 or 7 training tutorials: hope it works.
http://dkc1.digikey.com/us/en/TOD/A...sis-Intro/Direct-Digital-Synthesis-Intro.html
 
I don't think you can make high resolution high frequency generator based on a fixed clock.

Even if you have 100GHz clock (most likely impossible), you divide it by 2000 to get 50MHz. If you divide by 1999, you'll get 50.025MHz. You cannot generate anything in between 50 and 50.025MHz.
 
I don't think you can make high resolution high frequency generator based on a fixed clock.

Even if you have 100GHz clock (most likely impossible), you divide it by 2000 to get 50MHz. If you divide by 1999, you'll get 50.025MHz. You cannot generate anything in between 50 and 50.025MHz.
1GHz fixed clock and 48 bit phase accumulator is enough to get up to 400MHz output frequency with 4uHz resolution.
The DDS chip:
https://www.analog.com/en/products/...hesis-modulators/ad9912.html#product-overview
 
Last edited:
Northguy... traditional fractional N use counters as memory for frequency division
DDS uses high speed clocked memory reads and phase accumulator registers.

i.e. a big ROM for lookup table to define phase or time of pulse then LPF the output to sine then slice into a digital clock out.

then used traditional fractional N or integer N to scale up DDS to microwave band.
 
I don't think you can make high resolution high frequency generator based on a fixed clock.

Even if you have 100GHz clock (most likely impossible), you divide it by 2000 to get 50MHz. If you divide by 1999, you'll get 50.025MHz. You cannot generate anything in between 50 and 50.025MHz.
DDS can.
 
NorthGuy,

Here is a dirty little secret about DDS.
Using your example of making 50.000mhz and 50.025mhz but wanting some thing in the middle.
Lets say you want 50.0125mhz and the numbers do not turn out well. What the DDS will do is make one cycle at 50.000 and the next at 50.025. The average of these two numbers is right. A frequency counter will count 50.0125. The spectrum will show a little jitter but 50.0125.

You could get 50,50,50,50.025=50.0061
or 50,50,50,50,50,50,50,50,50,50.0125=50.00125 (with a very small amount of jitter)

It is true the DDS has to play some games. The output is crystal accurate. Very tune-able. At some frequencies the output has almost 0 jitter and at some frequencies there is some jitter but it is predictable.

If you want to play with one there are some $15 to $45 boards on ebay.com.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top