Liste des Groupes | Revenir à se design |
john larkin <jl@glen--canyon.com> wrote:On Thu, 8 May 2025 16:24:29 -0400, Phil Hobbs>
<pcdhSpamMeSenseless@electrooptical.net> wrote:
On 2025-05-08 14:58, john larkin wrote:On Thu, 8 May 2025 14:20:21 -0400, Phil HobbsYou still have the giant spike between the actual position of the edge
<pcdhSpamMeSenseless@electrooptical.net> wrote:
On 2025-05-07 22:21, john larkin wrote:On Wed, 7 May 2025 20:27:58 -0400, bitrex <user@example.net> wrote:
On 5/7/2025 4:01 PM, john larkin wrote:On Wed, 7 May 2025 20:32:41 +0100, Martin Brown
<'''newspam'''@nonad.co.uk> wrote:
On 06/05/2025 16:48, john larkin wrote:A DDS clock generator uses an NCO (a phase accumulator) and takes some
number of MSBs, maps through a sine lookup table, drives a DAC and a
lowpass filter and finally a comparator. The DAC output gets pretty
ratty near Nyquist, and the filter smooths out and interpolates the
steps and reduces jitter.
But why do the sine lookup? Why not use the phase accumulator MSBs
directly and get a sawtooth, and filter that?
A saw tooth wave has a huge step like discontinuity in it which looks
very ugly in the frequency domain with strong harmonics. Strong sharp
features in time domain are broad in frequency space and vice versa.
If you wanted something a bit different then detecting the phase
accumulator overflow and reversing the count sense to get a triangle
wave might be an option (at half the frequency). Needs some very careful
maths at the boundary flips to avoid introducing jitter.
From that triangle wave you can use HP's wizard diode shaping network
trick to get a pretty good clean sine wave.
Yes, a triangle would be better than a sawtooth... fewer nasty
subharmonics. But we may as well stick with the classic boring sine
wave. The sine lookup is trivial in an FPGA.
A band-limited square wave is pretty space & computation-efficient, you
just store the Gibbs phenomena portion of the wave to whatever harmonic
level you desire, play it back, and then sit there and wait during the
DC parts of the wave.
If you then integrate a band-limited square wave you get a band-limited
triangle wave directly.
If I could make a square wave from the MSBs of the phase accumulator,
I might not need the DAC and filter and comparator.
Just using the MSB of the phase accumulator is the right frequency,
but it's very jitterey.
So, is there a way to examine some number of MSBs and make an edge
with high time resolution, all digitally, all inside the FPGA? To even
1 clock resolution, preferably better?
There probably is.
Don't think so. Since you have exactly two edges per cycle, it would
have the same problem as the sawtooth, for the same reason. You could
interpolate the same sort of way as in a DDG.
Cheers
Phil Hobbs
If some N bits can be sent to a DAC and a filter, to interpolate to
better time accuracy than just using the MS bit, then the equivalent
interpolation should be possible digitally, inside the FPGA.
We can always spin up a PLL to get as fast a clock as the logic can
stand. And sub-clock tricks have been done.
and where it ought to be for a subharmonic-free signal. That's less
than one clock wide, so there's no way to get rid of it digitally. You
could maybe do some noise shaping thing to put the subharmonics
someplace else, but unless your increment is a factor of 2**(accumulator
width), they'll be there.
A full-width DAC, followed by a brickwall lowpass, followed by a
comparator, will get rid of the subharmonics, as would a ramp/threshold
analog delay calculated on a per-cycle basis.
Cheers
Phil Hobbs
We could take the phase accumulator "dac" MSBs and stuff them into a
brickwall digital lowpass filter, maybe even do the sine mapping
first. The result would be a wide smooth waveform, similar to what the
analog comparator would see, only digital. The zero cross of that
would be our "DDS comparator output" clock, to one system clock
quantization. Going to half clock resolution wouldn't be hard.
If the phase accumulator clock is 160 MHz, half a clock gives us 3 ns
p-p jitter, and the RMS jitter is 900 ps. (Why square root of 12? We
live in a strange universe.)
That filter logic could be clocked faster than the phase accumulator
clock too. Some crazy PLL rate.
I don't want to drive a bunch of 20-bit parallel DACs, or make some
13-pole LC filters, but bits are cheap inside an FPGA.
We know what the output frequency will be, so the digital filter can
be tuned for that. Maybe a narrow bandpass? Kills subharmonics?
Some truly terrible things have been done in FPGAs to get picosecond
resolution delays and time interval measuring.
Sounds like a good senior project.
If the output frequency is known in advance, all ought to be
straightforwardpick a clock frequency thats an integer multiple.
>
One VCXO-based PLL should be able to make that.
>
Cheers
>
Phil Hobbs
Les messages affichés proviennent d'usenet.