0
\$\begingroup\$

I am trying to build my own DDS. I want to make a lookup table (eeprom)that controls steps of a counter and then feed it into a DAC to make a wave form ( something like that Direct Digital Synthesizers do).

It seems all parts are straight forward except the counter. Normally, counters start counting from 0-2^n-1. For example a 256 step counter starts from 0 and counts one by one to 255. Now I need a counter that can count with controlled steps (jump). For example 0,10,20,...,250 or 0-4,8,.. And these steps are selected programmatically with count speed around 100MHz.

Anyone knows an IC that does the job? I heard Analog Devices has parts like that but I don't know under which product group should I look for that?

\$\endgroup\$
3
\$\begingroup\$

You could build your own counter with adjustable steps in a CPLD or FPGA.

Better yet, just implement the entire DDS in a small FPGA, memory and all. There's next to no logic design work in it, e.g. Xilinx provide free DDS IP.

\$\endgroup\$
11
  • \$\begingroup\$ Unfortunately I have zero experience on FPGA. I can work with AVRs but their speed does not suffice for this purpose. \$\endgroup\$
    – Aug
    Oct 27 '13 at 3:02
  • \$\begingroup\$ FPGA's are not the scary bogeyman that some people seem to believe. If they're the tool that you need to use to do the task, you should learn to use them. \$\endgroup\$
    – markt
    Oct 27 '13 at 5:01
  • \$\begingroup\$ Since your first answer time I started searching the web about FPGAs. It seems that if someone knows prograramming, they should not be very difficult. I just started reading some Xilinx datasheets and I think they have internal RAM that may eliminate need for EEPROM (is that?). I was thinking about XC2S100-PQ208. Can it provide 100MHz speed for this purpose? \$\endgroup\$
    – Aug
    Oct 27 '13 at 8:26
  • \$\begingroup\$ I wouldn't be using a Spartan2, they're quite old. Look at an XC6SLX4, which are current-generation Xilinx FPGA's, or even an XC6SLX9. They do contain memory; it's not EEPROM, it's actually RAM, but when the FPGA configuration is loaded (from an attached NV memory chip) you can have it initialise the RAM contents automatically. If you google you can find pre-made boards with a small FPGA, config memory, power supplies, etc for not too ridiculous prices. \$\endgroup\$
    – markt
    Oct 27 '13 at 8:30
  • \$\begingroup\$ Unfortunately I have a universal programmer that can not program newer Xilinx GPGAs than Spartan II !!! What should I do? change my programmer or Spartan II may do the job? ( XC2S100 is also a cheaper device ) \$\endgroup\$
    – Aug
    Oct 27 '13 at 8:36
1
\$\begingroup\$

Instead of using a memory to control a counter (that actually is a adder) you can use a counter to control (=address) consecutive data in a memory.

Example devices from Analog Devices are e.g. AD9833, AD9850.

\$\endgroup\$
3
  • \$\begingroup\$ For 32 bits resolution it takes 2^32 memory updates. It takes multiple seconds up to minutes to change the frequency by this method \$\endgroup\$
    – Aug
    Oct 27 '13 at 1:27
  • \$\begingroup\$ That is not true in general. If the output frequency is a rational (i.e. m/n) multiple of the clock frequency (where m and n are small integers) you need much fewer sample values. BTW you didn't tell much about your requirements about changing frequency at all. \$\endgroup\$
    – Curd
    Oct 28 '13 at 7:29
  • \$\begingroup\$ @Aug: for DSS example devices from AD see my edited response. \$\endgroup\$
    – Curd
    Oct 28 '13 at 7:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.