Hi all,
I am working on the OFDM in GnuRadio. After reading the code files and
going
through the presentation on the OFDM implementation I did understand
most
part of OFDM. But I still have few questions to ask:
-
how symbols_per_packet is calculated ? I know the following formula
symbols_per_packet = math.ceil(((4+options.size+4) * 8) /
options.occupied_tones)
but why 4+4 ? why these 8 bytes are added to calculate the symbol
per
packet?
If these 8 bytes are for packet header and CRC32 ??
-
Why 2 is added to following formula while calculating
samples_per_packet
?
samples_per_packet = (symbols_per_packet+2) *
(options.fft_length+options. cp_length). If this 2 is for preamble
symbols?
-
How many preamble symbols are inserted for one packet ? I think
there is
one preamble symbol for one packet ? right ?
-
What is the format of OFDM packet transmitted. I got the following
idea
after reading the code
packet Head(4bytes) | payload(option.size bytes) |
CRC32(4bytes) |
something extra(1byte)
my question is what is the purpose of packet head ? And what is
this* last
byte* for ? I know this byte comes from the following code
pkt_dt = ‘’.join((payload_with_crc, ‘\x55’))
what is its purpose ??
-
I know from the source code that whitening is done in order to
ensure
transition in data. am I right? But what is effect of variable
“*whitener_offset”
?*it is set to 0.
-
Which thing really invokes the call to rx_callback() ?
Thank you very much for precious time. waiting for your response
Best Regards
Usman
On Thu, Jun 2, 2011 at 3:10 AM, Usman Haider
[email protected]wrote:
Hi all,
I am working on the OFDM in GnuRadio. After reading the code files and
going through the presentation on the OFDM implementation I did understand
most part of OFDM. But I still have few questions to ask:
It’s been a long time since I’ve looked at these items, so my memory is
a
bit fuzzy on these things. But here goes, anyway.
- how symbols_per_packet is calculated ? I know the following formula
symbols_per_packet = math.ceil(((4+options.size+4) * 8) /
options.occupied_tones)
but why 4+4 ? why these 8 bytes are added to calculate the symbol per
packet?
If these 8 bytes are for packet header and CRC32 ??
Yes, I believe you are correct. The extra 4 and 4 comes form the header
and
CRC.
- Why 2 is added to following formula while calculating
samples_per_packet ?
samples_per_packet = (symbols_per_packet+2) *
(options.fft_length+options. cp_length). If this 2 is for preamble symbols?
I think 1 is for the preamble and 1 is for that last packet.
- How many preamble symbols are inserted for one packet ? I think there
is one preamble symbol for one packet ? right ?
Yes, 1 preamble that is split into 2 internal repetitions used for
correlation.
pkt_dt = ''.join((payload_with_crc, '\x55'))
what is its purpose ??
I can’t remember exactly. I think this had something to do with the USRP
USB
transport issues, and we had to pad it out with this.
- I know from the source code that whitening is done in order to ensure
transition in data. am I right? But what is effect of variable
“*whitener_offset”
?*it is set to 0.
It’s like a seed value so that you aren’t necessarily using the same
whitening coefficients all the time if you don’t want to.
- Which thing really invokes the call to rx_callback() ?
It’s used in gnuradio-core/sry/python/gnuradio/blks2impl/ofdm.py in the
ofdm_demod class. This sets up a “watcher” thread called
_queue_watcher_thread (line 279), which waits for a message to be
appended
to the message queue. The message is appended in gr_ofdm_frame_sink when
a
packet is received. When the watcher thread gets the new message, it
ships
it off to the callback function for processing.
Thank you very much for precious time. waiting for your response
Best Regards
Usman
Hope this helps,
Tom
On Thu, Jun 2, 2011 at 12:00 PM, Usman Haider
[email protected]wrote:
squared of the the input", but I am not getting its purpose at the end of
the chain.
Best Regards
Usman
That was just used as an indicator or the received signal strength but
doesn’t really serve much of a purpose.
Tom
Hi Tom
Thanks a lot. Yes, that did help me :). One more question: what is the
purpose of probe at the end of OFDM chain?
alpha=0.001
thresh=30 #in dB
self.probe = gr.probe_avg_mag_sqrd_c(thresh,alpha)
self.connect(self.ofdm_rx, self.probe)
I do understand that probe computes the " running average of the
magnitude
squared of the the input", but I am not getting its purpose at the end
of
the chain.
Best Regards
Usman
Hi Kunal,
I am planning to spend some more time on OFDM. Then, may be we can put
all
the stuff in a README file, after Tom or somebody checks that for us :).
Usman
I think this email exchange contains good documentation for (part of)
the
OFDM example. Maybe we could put it in a README file, and upload it to
the
OFDM directory? Or insert these as comments at the respective lines of
code?
Kunal