-1
$\begingroup$

I'm new to signal processing. I'm trying to build a network analyzer. So far I was only considering getting the output signal through a 16-bit ADC and then do its corresponding windowing and DFT to obtain the phase and amplitude of the signal using MATLAB or some python program.

However, I got a little confused when I saw some DSP chips that include a DFT Engine inside the chip. The main advantage I see in doing this is that I don't need the extra step of transferring the data to an external software.

So my question is would I get better results using the external software to calculate the DFT?

Thanks

$\endgroup$
  • $\begingroup$ you'll get the same data. A dedicated DSP engine might be lower in power usage, lower latency, cheaper, … $\endgroup$ – Marcus Müller Jan 16 '18 at 19:20
1
$\begingroup$

When you say "better results", you need to be more specific.

Choosing between dedicated hardware versus software is a trade off analysis that has a lot of factors. You mentioned I/O complexity and that is just one, and an FPGA solution combines both programming and hardware. Matlab is a great prototyping tool but shipping an actual product that depends on a Matlab license is probably, not a competitive product.

The jump between Matlab processing data and a DSP chip is pretty big. The tradeoff between building a board and running Matlab should be (screaming) obvious, so perhaps buying a board, since you need a 16 bit A/D anyway is a better candidate.

You need to establish requirements. Since you say you are "new" and mentioned Matlab or Python, software is going to be easier to develop and debug provided that your PC can support your data rates. You should do some benchmarking and get an idea if a PC solution can support those. Host based FFT processing is going to probably more flexible in picking windows, FFT sizes and overlaps. A hardware DFT is probably going to be faster but Matlab arithmetic is Double (or single) precision floating point. Nvidia CUDA (version specific) supports single and double floating point and some CUDA vendors offer Matlab (Python, C++, Java, ...) support. Some FFT chips are 16 bit(or 24 bit fixed, or 16 bit float) block floating FFT engines which work well but the arithmetic isn't equivalent. These are trade offs better suited to "experienced" developers.

If you do go with a board, a lot of vendors will sell you just a board and the software you need to develop with the board separately. Make sure you get both and sob stories and hints of future sales are bargaining points.

Even if you pick a board solution with something like a USB 3 interface, factors like having a SSD drive verses a platter based drive (or RAID) can complicate I/O speed, which is another reason to benchmark.

$\endgroup$

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.