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.

Reply via email to