design DDS function generator

Discussion in 'The Projects Forum' started by xw0927, Oct 24, 2013.

  1. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
    My project is about to design a 1-8Mhz function generator DDS.The problem I faced is I cant find any AD 9834 DDS components in Pspice/proteus,so I can't simulate ,anyone knows which software have AD 9834 DDS components?
     
  2. #12

    Expert

    Nov 30, 2010
    16,298
    6,809
    Weak title. It's not about a function generator as much as it is about a Pspice/Proteus simulation.
     
  3. crutschow

    Expert

    Mar 14, 2008
    13,014
    3,234
    I found no Spice model on the Analog Devices website so you may be out of luck for that. There is this evaluation tool which may help.
     
  4. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
    Hi crutshow,
    That tool just can get the output waveform for the chip.As my final year project is about designing a function generator DDS for 1 to 8Mhz,thus my plan is I m going to use a microcontroller to control the AD 9834 chip,but as previously,before I need built a circuit,I need to test it by using software tools like pspice,as pspice didnt have such model,so how am I going to test the circuit work or not?isn't I need to test it by construting it into hardware?...kindly need a advice or plan how to implement a portable DDS function generator as my lecture just give me the title,and then she didnt know how to implement it,so I am kind of lost...
     
  5. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
  6. atferrari

    AAC Fanatic!

    Jan 6, 2004
    2,648
    764
    Sorry but I do not understand the need of that "testing" even if it is possible. Is it your own requirement? It does not make sense to me.

    You should be able to implement a real board with the necessary hardware and then start the actual testing by activating functions, one by one.

    Have you a minimum background on micros to attempt this?

    The success in implementing things with chips like that or similar, depends of how thoroughly you read the datasheet to program it. In my view, it is quite simple if you follow what the datasheets requires to have it up and running.

    Additional suggestion: I do not know that particular chip but please resist the tempation to implement all the possibilities it offers. Select the most basic and do not change. You could be designing for ever, or at least not in time for the end of the year. Been there, done that.
     
    xw0927 likes this.
  7. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
    because in simulation ,I can obtain a perfect match of capacitor and resistor value for desired output before constructing it into circuit.

    What kind of requirement of micro background required in order to attempt this?

    Do you have any suggestion plan on how to start the project?
    Thanks in advance!!!
     
  8. THE_RB

    AAC Fanatic!

    Feb 11, 2008
    5,435
    1,305
    xw0927 likes this.
  9. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
    thanks so much for your link.it solve my dds chip problem!!!!between are you recommend using PIC controller or arduino controller?
     
  10. THE_RB

    AAC Fanatic!

    Feb 11, 2008
    5,435
    1,305
    I recommend that you use the one you know the best and can work with faster and easier. :)
     
    xw0927 likes this.
  11. xw0927

    Thread Starter Member

    Dec 19, 2010
    114
    0
    I am having a problem to the calculation of the tuning word,what is the meaning of tuning word >>8,>>16 and >>24.For example,if the output freqeuncy is 20Hz,then tuning word=20*4294.967296f / 125.0f=687.the tuning word is 687,how come it can represent into 32 bits?

    tuningWord = frequency * 4294.967296f / 125.0f;

    shiftOut(PIN_DATA, PIN_CLOCK, LSBFIRST, tuningWord);
    shiftOut(PIN_DATA, PIN_CLOCK, LSBFIRST, tuningWord >> 8);
    shiftOut(PIN_DATA, PIN_CLOCK, LSBFIRST, tuningWord >> 16);
    shiftOut(PIN_DATA, PIN_CLOCK, LSBFIRST, tuningWord >> 24);
    shiftOut(PIN_DATA, PIN_CLOCK, LSBFIRST, 0x0);

    digitalWrite(PIN_FREQ_UPDATE, 1);
    digitalWrite(PIN_FREQ_UPDATE, 0);
    }
     
Loading...