Thanks for the clarification.

Sorry for the confusion re twiddle factors - I meant the per-bin complex rotations, so I believe we're on the same page.

It's good to know that you found single precision floating pt to be insufficient for long-term stability. The low-resolution fixed point SDFT I built wasn't designed to run for more than a few tens of milliseconds before being reset, but I did see some error build-up over that period so it's not surprising that high resolution is required for long run times. It might be interesting to play with this in an FPGA context, so it's good to set the expectations properly at the outset.

Eric

On 3/19/20 11:11 AM, Richard Dobson wrote:
(caveat - 13 years since I worked on this)

This is a real single-sample update Sliding DFT, not a block-based method. The sample comes in, and used to perform a complex rotation to each bin, followed by the frequency-domain convolution. There are no twiddle factors as such. So the rectangular window is at best implicit - I'm not sure it even has any meaning in this situation. The approach from the outset was for the goal of real-time processing - i.e. potentially for hours non-stop. We found (in the Cleaspeed project) that single-precision floats would not support that; I don't know whether anything less than double precision is required - those were the only choices available.

It's "embarrassingly parallel" as an algorithm, so very suited to dedicated massively parallel hardware. I know FPGAs are pretty powerful these days so might well do the job (but some transformations are pretty cpu-intensive too!). The Bath Uni team said they were using a "mid-range" graphic card (on a Linux workstation).

Richard Dobson

On 19/03/2020 17:45, Eric Brombaugh wrote:
Wow - interesting discussion.

I've implemented a real-time SDFT on an FPGA for use in carrier acquisition of communications signals. It was surprisingly easy to do and didn't require particularly massive resources, although FPGAs naturally facilitate a degree of low-level parallelism that you can't easily achieve in CPU-based systems.

Based on this it might be feasible to build the SPV on a modest FPGA rather than resorting to GPUs or specialized parallel CPU systems. The main stumbling block that I see was your use of double-precision floating point. If that level of accuracy is really necessary then a higher end FPGA would be needed as most mid-range devices are geared more for fixed point or single-precision floating point.

I was a bit confused by the ICMC paper when it came to windowing. The SDFT structure I'm used to seeing (as discussed in the Lyons/Jacobsen article you referenced) involves a rectangular window applied prior to the twiddle calculations using a comb-filter structure. Is this window replaced by your frequency domain convolutions, or are the cosine-based windows applied in addition to the rectangular one?

Eric

_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp


_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp

Reply via email to