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 8byte 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…

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.

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 halfband filters? I’m not too
familiar
at this level of communications…
I’d greatly appreciate any feedback. I can provide any code, but my
guess
is that I have a more fundamental misunderstanding than a coding error.
Thanks!
George
On 07/22/2010 11:51 PM, George N. wrote:
frequency subcarriers by: (1.472) * complex(1,1), and do the same with
the first 50 negative frequency subcarriers.
I don’t know what you mean by the above. The peaking on either end of
the spectrum might be caused by this.
continuous transmission.
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.
 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 halfband filters? I’m not
too familiar at this level of communications…
Since you are using an interpolation is a multiple of 4, you won’t see
CIC rolloff, you get a nice flat passband.
There are likely a couple of issues causing the spectrum to look bad.
First, successive symbols coming out of the FFT will have amplitude
discontinuities. This causes out of band emissions unless you smoothly
transition between the symbols. This is normally done with windowing.
The 802.11g spec is a good example.
Second, you may be clipping. OFDM has a very high peak to average
ratio, so you need to make sure the peaks are below clipping.
Matt
Thanks a bunch for your response, Matt!
Since you are using an interpolation is a multiple of 4, you won’t see CIC
rolloff, you get a nice flat passband.
Got ya!
There are likely a couple of issues causing the spectrum to look bad.
First, successive symbols coming out of the FFT will have amplitude
discontinuities. This causes out of band emissions unless you smoothly
transition between the symbols. This is normally done with windowing. The
802.11g spec is a good example.
I will check the spec for this, thanks for the pointer there. I will
see
how they do the windowing.
Second, you may be clipping. OFDM has a very high peak to average ratio,
so you need to make sure the peaks are below clipping.
Clipping nailed it. I get a very clean spectrum now Super awesome!
One last question still, do you know where I am missing a factor of two
here:
 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.
On 07/23/2010 09:38 AM, George N. wrote:
One last question still, do you know where I am missing a factor of two
here:
 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.
The math looks right to me. Make sure you’re using complex signals and
a complex FFT. Also, check carefully that you are putting your complex
signals in consecutive bins. If you were to put signals in every 2nd
bin, the spectrum would look twice as wide and you wouldn’t see the
holes.
Matt