Hi all,
I am generating my own "OFDM" waveform which actually does not modulate
anything. Step by step.
I am simulating 1024 subcarriers but first generating 1024 zeros, and
then I want to only enable the center 100 subcarriers. To do this, I
map the center frequency at the first index in the array, then the
positive frequency subcarriers, then the negative frequency subcarriers.
To enable the center 100 subcarriers, I multiply the first 50 positive
frequency subcarriers by: (1.472) * complex(1,1), and do the same with
the first 50 negative frequency subcarriers.
Finally, I take the IFFT
of the data, with a size of 1024. I multiply this by sqrt(1024).
If I then take the FFT, to double check what I've done, and plot against
the subcarrier index, I get what I expect:
http://www.ece.cmu.edu/~gnychis/subc.png
Now, I want to transmit this out of the USRP2 so I write the typical GNU
Radio python script to read an 8-byte complex file source and pump it to
the USRP2... repeating the complex samples in the file on finish for
continuous transmission.
I start up the spectrum analyzer and get a clean noise floor:
http://www.ece.cmu.edu/~gnychis/noise_floor.jpg
Now, when I transmit from the USRP2 using an interpolation rate of 32:
http://www.ece.cmu.edu/~gnychis/transmit_spectrum.jpg
Well, I can certainly see the waveform. But I have two questions...
1) My calculation of the bandwidth of the 100 active bins, and the
actual bandwidth, is off by a factor of two:
(((100 MHz) / 32) / 1024) * 100 = 305.175781 kilohertz, where 32 is the
interpolation rate, 1024 was the size of the IFFT, and 100 is the number
of active bins. I see 610KHz, however.
2) I'm not seeing a clean power falloff outside of the active bins. I
am seeing a lot of power rolloff. Do I need to be applying a low pass
and/or high pass filter for this? Or is this the result of weirdness
created by the interp CIC filter and the dual half-band filters? I'm not
too familiar at this level of communications..