Digital Down synthetizer

Discussion in 'VHDL' started by Juan Carlos Allica, Jul 7, 2005.

  1. hello all

    i am tring to create a DDS in fpga but i am wondering if a can because:

    the precision i need is too big so my look up table it is 20 address bits
    and 15 bits wide ?
    And in the case i could, how should be my code to make this huge memory
    synthesizable now iam using files to simulate but that are not synthe .. ?

    thanks in advance
     
    Juan Carlos Allica, Jul 7, 2005
    #1
    1. Advertising

  2. Juan Carlos Allica

    john Guest

    Hello,

    What is DDS?

    Regards
    john
    Juan Carlos Allica wrote:
    > hello all
    >
    > i am tring to create a DDS in fpga but i am wondering if a can because:
    >
    > the precision i need is too big so my look up table it is 20 address bits
    > and 15 bits wide ?
    > And in the case i could, how should be my code to make this huge memory
    > synthesizable now iam using files to simulate but that are not synthe .. ?
    >
    > thanks in advance
     
    john, Jul 7, 2005
    #2
    1. Advertising

  3. Sorry a DDS is a digital down synthesizer by mean this you can create any
    freq sin or cosine wave, it uses the phase in the digital domain and convert
    it to analog domain by mean a look up table which I don't know how to create
    this mem in a fpga .

    Cheers

    "Juan Carlos Allica" <> wrote in message
    news:dajgto$qfc$...
    > hello all
    >
    > i am tring to create a DDS in fpga but i am wondering if a can because:
    >
    > the precision i need is too big so my look up table it is 20 address bits
    > and 15 bits wide ?
    > And in the case i could, how should be my code to make this huge memory
    > synthesizable now iam using files to simulate but that are not synthe .. ?
    >
    > thanks in advance
    >
     
    Juan Carlos Allica, Jul 8, 2005
    #3
  4. On Thu, 7 Jul 2005 17:15:05 +0200, "Juan Carlos Allica"
    <> wrote:


    >i am tring to create a DDS in fpga but i am wondering if a can because:
    >the precision i need is too big so my look up table it is 20 address bits
    >and 15 bits wide ?


    From your later response I see that you're trying to create a
    sinusoid rather than an arbitrary waveform, so you have many
    options.

    First, if the required precision is only 15 bits, you surely don't
    need all 20 bits of address into the table!

    Second, you can reduce the size of the table by a factor of 4
    easily by dividing the 20-bit phase range into four quadrants.
    You need a 2s complement negate operation on both address and
    data, but otherwise it's easy.

    Finally, you can use something a bit more clever than a
    simple lookup table. There are two obvious possibilities:
    CORDIC and interpolation.

    CORDIC is so well covered by material on Ray Andraka's website
    www.andraka.com that I won't even try to describe it here.

    Interpolation is a useful idea. You know, of course, that
    the first derivative of (sin) is (cos), which is simply (sin)
    displaced by a quarter of a cycle. So, given a phase value
    P, rewrite P = P0 + dP by the cunning trick of splitting the
    address binary word into two equal pieces. Now you can make
    the approximation

    sin(P) = sin(P0) + cos(P0).dP

    cos(P0) is only a second lookup in the table. You need a
    multiplier and an adder, of course. And there's some scaling
    to be done.

    Other possibilities include creating a very approximate sine
    wave and then passing it through a digital lowpass filter
    whose sample rate is also controlled by the DDS.
    --
    Jonathan Bromley, Consultant

    DOULOS - Developing Design Know-how
    VHDL, Verilog, SystemC, Perl, Tcl/Tk, Verification, Project Services

    Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, BH24 1AW, UK
    Tel: +44 (0)1425 471223 mail:
    Fax: +44 (0)1425 471573 Web: http://www.doulos.com

    The contents of this message may contain personal views which
    are not the views of Doulos Ltd., unless specifically stated.
     
    Jonathan Bromley, Jul 8, 2005
    #4
  5. Juan Carlos Allica

    james Guest

    On Fri, 8 Jul 2005 09:27:51 +0200, "Juan Carlos Allica"
    <> wrote:

    >+<Sorry a DDS is a digital down synthesizer by mean this you can create any
    >+<freq sin or cosine wave, it uses the phase in the digital domain and convert
    >+<it to analog domain by mean a look up table which I don't know how to create
    >+<this mem in a fpga .
    >+<
    >+<Cheers
    >+<

    *****

    I thought "DDS" stood for Direct Digital Synthesis?

    james


    >+<"Juan Carlos Allica" <> wrote in message
    >+<news:dajgto$qfc$...
    >+<> hello all
    >+<>
    >+<> i am tring to create a DDS in fpga but i am wondering if a can because:
    >+<>
    >+<> the precision i need is too big so my look up table it is 20 address bits
    >+<> and 15 bits wide ?
    >+<> And in the case i could, how should be my code to make this huge memory
    >+<> synthesizable now iam using files to simulate but that are not synthe .. ?
    >+<>
    >+<> thanks in advance
    >+<>
    >+<
     
    james, Jul 9, 2005
    #5
  6. u r right sorry.

    "james" <> wrote in message
    news:...
    > On Fri, 8 Jul 2005 09:27:51 +0200, "Juan Carlos Allica"
    > <> wrote:
    >
    >>+<Sorry a DDS is a digital down synthesizer by mean this you can create
    >>any
    >>+<freq sin or cosine wave, it uses the phase in the digital domain and
    >>convert
    >>+<it to analog domain by mean a look up table which I don't know how to
    >>create
    >>+<this mem in a fpga .
    >>+<
    >>+<Cheers
    >>+<

    > *****
    >
    > I thought "DDS" stood for Direct Digital Synthesis?
    >
    > james
    >
    >
    >>+<"Juan Carlos Allica" <> wrote in message
    >>+<news:dajgto$qfc$...
    >>+<> hello all
    >>+<>
    >>+<> i am tring to create a DDS in fpga but i am wondering if a can
    >>because:
    >>+<>
    >>+<> the precision i need is too big so my look up table it is 20 address
    >>bits
    >>+<> and 15 bits wide ?
    >>+<> And in the case i could, how should be my code to make this huge
    >>memory
    >>+<> synthesizable now iam using files to simulate but that are not synthe
    >>.. ?
    >>+<>
    >>+<> thanks in advance
    >>+<>
    >>+<

    >
     
    Juan Carlos Allica, Jul 11, 2005
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. SirPoonga
    Replies:
    2
    Views:
    824
    Ben Strackany
    Jan 7, 2005
  2. einstein
    Replies:
    1
    Views:
    412
    Christophe Vanfleteren
    Sep 28, 2003
  3. Replies:
    2
    Views:
    654
    Jonathan N. Little
    Feb 16, 2006
  4. weiwei
    Replies:
    0
    Views:
    1,077
    weiwei
    Jan 5, 2007
  5. Jack
    Replies:
    2
    Views:
    1,646
Loading...

Share This Page