You don't want to put an accumulator after an FFT without taking the magnitude squared.
That creates the effect of a low pass filter in each FFT bin, so there are dropouts between frequency bins. Like a comb filter. It would be very unusual for this effect to be desirable. Ross [email protected] On Mon, Jun 1, 2026, 08:15 Nitin Purohit <[email protected]> wrote: > Dear all, > > I have a question regarding obtaining complex outputs from the wideband > spectrometer. > > While going through the spectrometer design in detail, I noticed that the > power block appears to compute the magnitude-squared of the complex FFT > output by squaring the real and imaginary components and then summing them. > [image: Screenshot from 2026-06-01 18-38-30.png] > > In the complex spectrometer design, the FFT output consists of: > > - First 24 bits: Real component (MSB first) > - Next 24 bits: Imaginary component (LSB side) > > Since each component is multiplied by itself, the resulting products are > 48 bits wide. After the summation, the output becomes approximately 49 bits > (48 + 1 carry bit). > > My difficulty is understanding how this output relates to the subsequent > *simple_bram_vacc* block, which is configured with: > > - BitWidth = 64 > - Binary Point = 34 > > How are these parameters derived from the incoming data stream? > > A similar question arises in the real spectrometer design. There, the real > and imaginary components appear to be 18 bits each, resulting in a power > computation width of approximately 36 + 1 bits. However, the > *simple_bram_vacc* parameters appear to remain unchanged. I am therefore > trying to understand the rationale behind the BitWidth and Binary Point > settings of the accumulator. > [image: Screenshot from 2026-06-01 19-01-33.png] > > From examining the *simple_bram_vacc (figure above the para)* and > *delay_bram* *(figure above the para) *block diagrams, my current > understanding is that: > > - A pulse is generated every *vector_length* samples (512 in this > case). > - During the accumulation period, the delay BRAM stores data at > incrementing addresses. > - The accumulation continues until the count reaches approximately > *(DelayLen > − bram_latency − 1)*. > > However, I am unsure whether this interpretation is correct. > [image: Screenshot from 2026-06-01 19-11-38.png] > > My current goal is to modify the spectrometer to preserve and output the > complex FFT values instead of computing power. If I bypass the power > calculation and directly pass the complex FFT output into the accumulation > stage: > > 1. How would *simple_bram_vacc* store the incoming complex values? > 2. Would separate accumulators be required for the real and imaginary > streams? > 3. Is there an existing CASPER block or example design that > demonstrates accumulation of complex spectra rather than power spectra? > > I would greatly appreciate any explanation or pointers to relevant > documentation regarding this. > Hoping for a response soon, > > Thank you, > Sincerely, > Nitin > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/0b14ee1f-3011-4def-a85d-8565937b855en%40lists.berkeley.edu > <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/0b14ee1f-3011-4def-a85d-8565937b855en%40lists.berkeley.edu?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "[email protected]" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG4nf71rk%3D4je%2BceA8SqWMMLoG0ESiD-q_bJaJ-JyCSpCFd04g%40mail.gmail.com.

