Prev: Flow Sensors revistied
Next: Just plain fucked...
From: Winston on 13 May 2010 15:51 On 5/13/2010 7:48 AM, John Fields wrote: > On Wed, 12 May 2010 20:51:37 -0700 (PDT), George Herold > <gherold(a)teachspin.com> wrote: > >> PS >> Seems like DDS beats it all. > > --- > What does direct digital synthesis have to do with generating two sine > waves 120 degrees apart over a range of frequencies? Here's a diagram helpfully supplied by a previous poster: "FIN>---[COUNT]-+-[LUT 0�]---[DAC 0�]--->OUT 0� | | +-[LUT n�]---[DAC n�]--->OUT n� How it works is that for any given output from the counter, the LUTs will have outputs which, after being run through the DACs, will differ from each other by the difference in voltage/current caused by the difference in phase between them, that difference being programmed into the LUTs." See, the sine waves are coded in lookup tables and are Directly Digitally Synthesized via the Digital to Analog Converters. John Larkin suggested turning it into a State Machine that would allow it to select portions of the lookup table for coarse frequencies across a wide range with high resolution while using a relatively low clock rate (and commensurately cheaper parts). --Winston
From: John Larkin on 13 May 2010 16:52 On Thu, 13 May 2010 12:26:36 -0700 (PDT), George Herold <gherold(a)teachspin.com> wrote: >On May 13, 10:48�am, John Fields <jfie...(a)austininstruments.com> >wrote: >> On Wed, 12 May 2010 20:51:37 -0700 (PDT), George Herold >> >> <gher...(a)teachspin.com> wrote: >> >PS >> >Seems like DDS beats it all. >> >> --- >> What does direct digital synthesis have to do with generating two sine >> waves 120 degrees apart over a range of frequencies? > >Hmm, Can't you just have a simple offset from two look up tables. Run >them off the same clock and change the clock rate to change >frequency. Some one already posted that I thought? One can stick an N-bit binary adder (N being the same as the counter width) to add a phase shift to one path, and use the same lookup table contents, or share a single table. That way you don't have to reload the table to change the phase shift. If you stuff M into the adder, the phase shift is 360 * M/N degrees. That works for both the binary counter and for the DDS accumulator versions. John
From: John Larkin on 13 May 2010 17:15 On Thu, 13 May 2010 09:48:53 -0500, John Fields <jfields(a)austininstruments.com> wrote: >On Wed, 12 May 2010 20:51:37 -0700 (PDT), George Herold ><gherold(a)teachspin.com> wrote: > >>PS >>Seems like DDS beats it all. > >--- >What does direct digital synthesis have to do with generating two sine >waves 120 degrees apart over a range of frequencies? Once you have the DDS logic set up, it's really easy to stick an adder into one of the address paths and add a 0 to 359.999... degree variable phase shift. A small FPGA and a couple of DACs can make a nice generator with huge frequency range/resolution and pretty impressive amplitude and phase control. John
From: John Fields on 13 May 2010 20:07 On Thu, 13 May 2010 14:15:50 -0700, John Larkin <jjlarkin(a)highNOTlandTHIStechnologyPART.com> wrote: >On Thu, 13 May 2010 09:48:53 -0500, John Fields ><jfields(a)austininstruments.com> wrote: > >>On Wed, 12 May 2010 20:51:37 -0700 (PDT), George Herold >><gherold(a)teachspin.com> wrote: >> >>>PS >>>Seems like DDS beats it all. >> >>--- >>What does direct digital synthesis have to do with generating two sine >>waves 120 degrees apart over a range of frequencies? > >Once you have the DDS logic set up, it's really easy to stick an adder >into one of the address paths and add a 0 to 359.999... degree >variable phase shift. A small FPGA and a couple of DACs can make a >nice generator with huge frequency range/resolution and pretty >impressive amplitude and phase control. --- Indeed. My quarrel was with "DDS" being used as something other than the mechanism used to generate the variable clock from a fixed frequency source.
From: John Larkin on 13 May 2010 21:57
On Thu, 13 May 2010 12:51:29 -0700, Winston <Winston(a)bigbrother.net> wrote: >On 5/13/2010 7:48 AM, John Fields wrote: >> On Wed, 12 May 2010 20:51:37 -0700 (PDT), George Herold >> <gherold(a)teachspin.com> wrote: >> >>> PS >>> Seems like DDS beats it all. >> >> --- >> What does direct digital synthesis have to do with generating two sine >> waves 120 degrees apart over a range of frequencies? > >Here's a diagram helpfully supplied by a previous poster: > >"FIN>---[COUNT]-+-[LUT 0�]---[DAC 0�]--->OUT 0� > | > | > +-[LUT n�]---[DAC n�]--->OUT n� > > >How it works is that for any given output from the counter, the LUTs >will have outputs which, after being run through the DACs, will differ >from each other by the difference in voltage/current caused by the >difference in phase between them, that difference being programmed >into the LUTs." > >See, the sine waves are coded in lookup tables and are Directly >Digitally Synthesized via the Digital to Analog Converters. >John Larkin suggested turning it into a State Machine that >would allow it to select portions of the lookup table for >coarse frequencies across a wide range with high resolution >while using a relatively low clock rate (and commensurately >cheaper parts). Not exactly. If you address the sine lookup table with a fixed-frequency-clocked phase accumulator, instead of a counter, you can tune the sine frequency to as fine a resolution as you want, just by using more bits in the accumulator. If you put a decent anti-aliasing lowpass filter after the DAC, you can make beautiful sine waves at frequencies approaching Fclk/2, namely the Nyquist frequency. As a practical matter, Fclk/3 or Fclk/4 is easy. http://www.highlandtechnology.com/DSS/T346DS.html This uses an FPGA clocked at 128 MHz, a 32-bit phase accumulator, a 4096 point sine lookup table, and a 14 bit DAC per channel. It makes sines from 0 to 32 MHz with 0.015 Hz frequency resolution. It's a textbook DDS design, but with phase-rotation adders in the lookup table address paths and multipliers for amplitude. There are also adders into the accumulator inputs to allow FM and chirps and such. Here's the board: ftp://jjlarkin.lmi.net/DSC01786.JPG What's cool is that you can put negative numbers into a phase accumulator and walk the sine table backwards, generating negative frequencies. That's handy for making, say, quadrature microstepper drives and running the motor clockwise or CCW. John |