Groups | Search | Server Info | Login | Register


Groups > sci.electronics.design > #733209

Re: DDS question: why sine lookup?

Subject Re: DDS question: why sine lookup?
Newsgroups sci.electronics.design, comp.dsp
References (1 earlier) <ntls1kddgtc3n9ghrjlnqp4q8jsh8f9pmr@4ax.com> <vvo3pg$3l8r7$1@dont-email.me> <ad7v1kttjfhjulnameem9ta8gjst5cpa45@4ax.com> <ba55fl-ru91.ln1@coop.radagast.org> <sfrv1kdak5gii7dtons81977tgf1mmj0u2@4ax.com>
From Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net>
Message-ID <262f00b5-a92b-1e57-16d7-4d4855b0ca0b@electrooptical.net> (permalink)
Date 2025-05-11 16:27 -0400

Cross-posted to 2 groups.

Show all headers | View raw


On 2025-05-10 20:39, john larkin wrote:
> On Sat, 10 May 2025 16:50:03 -0700, dplatt@coop.radagast.org (Dave
> Platt) wrote:
> 
>> In article <ad7v1kttjfhjulnameem9ta8gjst5cpa45@4ax.com>,
>> john larkin  <jl@glen--canyon.com> wrote:
>>
>>> Looks like the best way is logic in the FPGA doing classic sine DDS,
>>> maybe 6 or 8 output pins driving an R-2R network, a 3 or 5-pole
>>> Chebyshev LC filter, and an LVDS receiver as the comparator.
>>
>> Be wary of that approach.
>>
>> I tried something like it (sans comparator), while using a simple FPGA
>> to generate a (modulated) 10.7 MHz IF signal for an FM-stereo test
>> generator.  The results were ungood.
> 
> A good filter and a comparator could help, as in "FM Capture Effect."

The capture effect forces the rate of zero crossings at the output of 
the limiting stage to equal that of the strongest input signal. 
Interfering signals near the same frequency can change their position, 
but not their number, and this is true on a cycle-by-cycle basis. 
Phase modulation is preserved in the process, of course.


>> The output waveform had some pretty horrible glitches, at the times of
>> the transitions between values.  There's enough variation in delay in
>> the signal paths inside the FPGA to create a significant (in
>> picoseconds and nanoseconds) delay between the transition times of the
>> R2R bits.  If you're trying to go from (for example) 0x7F to 0x81,
>> your MSB is going to be transitioning high when most of your LSBs are
>> transitioning low.  There's very likely to be a brief moment of time
>> when the effective value is 0xFF (if the MSB transitions first) or
>> 0x00 (if it transitions last), or some random and unpredictable and
>> ever-changing mix of bits.  The resulting spikes are narrow, but can
>> have a pretty fierce amplitude to them.
>>
>> As a result, unless your LC filter is extremely sharp, your
>> receiver/comparator is likely to generate occasional runt pulses,
>> or skew the zero-crossing time by one or more sample (adding jitter).
>>
>> To make this scheme work, you really need to re-time the values going
>> into the R2R ladder to ensure near-as-gosh identical timing... some
>> form of very predictable latch with guaranteed low skew between the
>> pins.  The normal FPGA data path probably won't do this for you.  I
>> tried using the FPGA's own internal registered-output logic (driving
>> all of the latch clocks from the same internal signal) but even this
>> wasn't good enough... the internal propagation times were not zero,
>> alas :-( due to that cursed light-speed limit.
> 
> We'd at least retime the 8 outputs in output latches, in the same
> region.

That'll help, but even in the ideal case, the DDS spur amplitude will be
20*log(2**6) = 36 dB worse than with a 14-bit DAC output.

>> I switched over to using an Analog Devices DDS, shifting a new value
>> out into it from the FPGA via a serial interface once per sample time.
>> Far, far cleaner RF/IF as a result.
>>
>> You could get a fairly clean 3-bit-equivalent output, using 8 pins and
>> 8 equal-value resistors, and encoding things so that transitions are
>> always "change one or more bits from 0 to 1" or "change 1 or more bits
>>from 1 to 0".

Some years ago, we had a long and informative discussion about that in a 
thread started by the late lamented George Herold.  (I don't mean that 
he's passed on, just that we very rarely see him in these hallowed 
halls.)  A 74HC4017 and 10 resistors made a sine wave approximation that 
nulled out the second through tenth harmonics, iirc. Didn't do anything 
about phase modulation on the clock.

> 
> I could buy an official clocked 8-bit DAC with a data latch. Some have
> great glitch specs (and some are horrible.)
> 
> Parallel-load DDS chips are expensive, and serial interfaces are too
> slow. And I'd like to allow for phase coherence between clocks on the
> multichannel gadget.
> 
> Maybe some not-literally-sine waveform could have less glitches.
> 
> This is all interesting but potentially time consuming. I might add
> some delays, like to the MSB, to my Spice model and see what happens.
> 
> If I have a project with an FPGA and a little spare room, I could try
> the R-2R thing as an experiment.

Cheers

Phil Hobbs


-- 
Dr Philip C D Hobbs
Principal Consultant
ElectroOptical Innovations LLC / Hobbs ElectroOptics
Optics, Electro-optics, Photonics, Analog Electronics
Briarcliff Manor NY 10510

http://electrooptical.net
http://hobbs-eo.com

Back to sci.electronics.design | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-06 08:48 -0700
  Re: DDS question: why sine lookup? Jeroen Belleman <jeroen@nospam.please> - 2025-05-06 21:00 +0200
    Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-06 12:33 -0700
    Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-06 16:46 -0400
      Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-06 15:50 -0700
        Re: DDS question: why sine lookup? Arie de Muijnck <noreply@ademu.nl> - 2025-05-07 11:44 +0200
          Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-07 06:32 -0700
            Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-08 01:58 +1000
      Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-07 06:55 -0700
        Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-07 11:31 -0400
          Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-08 02:11 +1000
  Re: DDS question: why sine lookup? Gerhard Hoffmann <dk4xp@arcor.de> - 2025-05-06 21:27 +0200
    Re: DDS question: why sine lookup? "Don" <g@crcomp.net> - 2025-05-06 20:10 +0000
    Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-06 13:35 -0700
  Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-07 16:27 +1000
  Re: DDS question: why sine lookup? Martin Brown <'''newspam'''@nonad.co.uk> - 2025-05-07 20:32 +0100
    Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-07 13:01 -0700
      Re: DDS question: why sine lookup? bitrex <user@example.net> - 2025-05-07 20:27 -0400
        Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-07 19:21 -0700
          Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-08 22:49 +1000
          Re: DDS question: why sine lookup? Joe Gwinn <joegwinn@comcast.net> - 2025-05-08 11:01 -0400
          Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-08 14:20 -0400
            Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-08 11:58 -0700
              Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-08 16:24 -0400
                Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-08 14:18 -0700
                Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-08 22:28 +0000
                Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-08 16:24 -0700
                Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-08 23:57 +0000
                Re: DDS question: why sine lookup? piglet <erichpwagner@hotmail.com> - 2025-05-09 04:48 +0000
                Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-09 12:53 -0700
                Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-10 18:53 +1000
                Re: DDS question: why sine lookup? Lasse Langwadt <llc@fonz.dk> - 2025-05-10 19:52 +0200
                Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-10 11:53 -0700
                Re: DDS question: why sine lookup? dplatt@coop.radagast.org (Dave Platt) - 2025-05-10 16:50 -0700
                Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-10 17:39 -0700
                Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-11 16:27 -0400
                Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-11 16:55 +1000
                Re: DDS question: why sine lookup? Lasse Langwadt <llc@fonz.dk> - 2025-05-11 22:03 +0200
                Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-09 15:52 +1000
        Re: DDS question: why sine lookup? Lawrence D'Oliveiro <ldo@nz.invalid> - 2025-05-10 00:44 +0000
      Re: DDS question: why sine lookup? Martin Brown <'''newspam'''@nonad.co.uk> - 2025-05-09 09:32 +0100
  Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-10 17:00 -0700
  Re: DDS question: why sine lookup? antispam@fricas.org (Waldek Hebisch) - 2025-05-13 23:25 +0000
    Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-13 20:22 -0400
      Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-13 18:40 -0700
      Re: DDS question: why sine lookup? antispam@fricas.org (Waldek Hebisch) - 2025-05-14 15:35 +0000
        Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-14 15:05 -0400
          Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-14 14:53 -0700
            Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-14 19:16 -0400
              Re: DDS question: why sine lookup? john larkin <jl@glen--canyon.com> - 2025-05-14 17:10 -0700
                Re: DDS question: why sine lookup? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2025-05-15 12:40 -0400
          Re: DDS question: why sine lookup? Bill Sloman <bill.sloman@ieee.org> - 2025-05-15 17:23 +1000

csiph-web