Patch to gcell fft

Here is a patch to add windowing to
gcell/src/lib/wrapper/spu/gcs_fft_1d_r2.c , seems quick and snappy:

24a25

#include <spu_intrinsics.h>
50a52

52,53c54,69
< // FIXME pointwise multiply in *= window
< assert(0);

int i;
for (i=0; i<(1 << log2_fft_length)/2; i++) {
   tempwin = spu_shuffle(window[i/2],zeros,pattern[(i & 0x1)]);
   in[i] *= tempwin;
}

Seems to work, take a lot of ‘spikeyness’ out:

http://www.swigerco.com/fft_windowing.html

It will also break gr-gcell/src/qa_fft.py

–Chuck

On Wed, 2008-07-09 at 16:38 -0400, Charles S. wrote:

Here is a patch to add windowing to

It will also break gr-gcell/src/qa_fft.py

Actually it will not, window not used there.

–Chuck

On Wed, Jul 09, 2008 at 04:38:20PM -0400, Charles S. wrote:

< assert(0);

register vector float tempwin;

Effect of windowing on FFT

It will also break gr-gcell/src/qa_fft.py

–Chuck

No need for all this shuffling…

I’ll see if I can’t get something in later on today.

Eric

I am returning to GNU Radio development after a considerable absence. I
would like to start by testing some of the “simple” code I developed for
GNU Radio 2.8 in the latest version of GNU Radio (3.1.2).

The code was developed to utilize the USRP to tune multiple AM and FM
channels.

What are the major difficulties I will face in migrating the code? Do
you have recommendations to make the switch from 2.x to 3.x?

I look forward to the group’s suggestions.

Thanks,

–Alex

On Wed, 2008-07-09 at 14:26 -0700, Eric B. wrote:

On Wed, Jul 09, 2008 at 04:38:20PM -0400, Charles S. wrote:

Here is a patch to add windowing to
gcell/src/lib/wrapper/spu/gcs_fft_1d_r2.c , seems quick and snappy:

No need for all this shuffling…

Well, after running ‘spu_timing’ analysis on my scheme, there must be a
better way because it shows there are lots of operand stalls in my
‘quick and snappy’ loop:

                                                           .L5:

0d 5678 rotmi
$32,$7,-31
1d 01 -6789 lqx
$23,$8,$9
0 78 andi
$33,$7,1
0 89 ai
$6,$6,-1 <- decr loop counter
0 012 9 shli
$30,$33,4
0 01 a
$31,$32,$7
0 12 ai
$7,$7,1
0 2345 rotmai
$28,$31,-1
0d 34 ai
$29,$30,32
1d --567890 lqx
$26,$29,$sp
0d 6789 shli
$27,$28,4
1d ----012345 lqx
$25,$27,$10
1 -----6789 shufb
$24,$25,$11,$26 <- shuffle bytes
0 —012345 fm
$22,$23,$24
0d 1 nop
127
1d -----678901 stqx
$22,$8,$9
0D 78 ai
$8,$8,16
.L13:
1D 7890 brnz
$6,.L5

where ‘-’ are stalls and ‘d’ are where dual-issue is possible, but would
not occur due to operand dependencies.

–Chuck