[Libre-soc-dev] FFT, DCT, REMAP
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Tue Jun 22 14:09:10 BST 2021
On 6/21/21, Jacob Lifshay <programmerjake at gmail.com> wrote:
> we'd need to correctly handle loading from the middle of a bigger array
> using bit-reversed indices,
deep breath, look again at the Cooley butterfly:
https://en.wikipedia.org/wiki/File:DIT-FFT-butterfly.png
so imagine that the initial width is 1024, that is split 512 .... down
to e.g. 8 where we can do the REMAP.
i *think*... that you have to select data at the *low* level to suit
the *high* level.
i.e. rather than the bitreverse being simply based on log2(8) i.e. 3
LSBs you have to select like this:
for batches in range(0, 1024, 1024/8):
idxes = bitreverse(range(8))
idexes <<= log2(1024/8)
indexes += batches
in other words, the bitreversing happens in the *TOP* bits, but the
LSBs are left alone, i.e. are sequential.
eurrgh :)
i am going to have to do a demo on this.
bottom line is, that the bitreversal indices might not need an SPR,
Jacob: a simple shift-amount should be sufficient.
l.
More information about the Libre-soc-dev
mailing list