GNU Radio 3.6.5 C++ API

digital_ofdm_frame_acquisition Class Reference

take a vector of complex constellation points in from an FFT and performs a correlation and equalization.This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin. More...

#include <digital_ofdm_frame_acquisition.h>

Inheritance diagram for digital_ofdm_frame_acquisition:
gr_block gr_basic_block gr_msg_accepter gruel::msg_accepter

List of all members.

Public Member Functions

float snr ()
 Return an estimate of the SNR of the channel.
 ~digital_ofdm_frame_acquisition (void)
int general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
 compute output items from input items

Protected Member Functions

 digital_ofdm_frame_acquisition (unsigned int occupied_carriers, unsigned int fft_length, unsigned int cplen, const std::vector< gr_complex > &known_symbol, unsigned int max_fft_shift_len)

Friends

DIGITAL_API
digital_ofdm_frame_acquisition_sptr 
digital_make_ofdm_frame_acquisition (unsigned int occupied_carriers, unsigned int fft_length, unsigned int cplen, const std::vector< gr_complex > &known_symbol, unsigned int max_fft_shift_len)
 Build an OFDM correlator and equalizer.

Detailed Description

take a vector of complex constellation points in from an FFT and performs a correlation and equalization.

This block takes the output of an FFT of a received OFDM symbol and finds the start of a frame based on two known symbols. It also looks at the surrounding bins in the FFT output for the correlation in case there is a large frequency shift in the data. This block assumes that the fine frequency shift has already been corrected and that the samples fall in the middle of one FFT bin.

It then uses one of those known symbols to estimate the channel response over all subcarriers and does a simple 1-tap equalization on all subcarriers. This corrects for the phase and amplitude distortion caused by the channel.


Constructor & Destructor Documentation

digital_ofdm_frame_acquisition::digital_ofdm_frame_acquisition ( unsigned int  occupied_carriers,
unsigned int  fft_length,
unsigned int  cplen,
const std::vector< gr_complex > &  known_symbol,
unsigned int  max_fft_shift_len 
) [protected]
digital_ofdm_frame_acquisition::~digital_ofdm_frame_acquisition ( void  )

Member Function Documentation

int digital_ofdm_frame_acquisition::general_work ( int  noutput_items,
gr_vector_int ninput_items,
gr_vector_const_void_star input_items,
gr_vector_void_star output_items 
) [virtual]

compute output items from input items

Parameters:
noutput_itemsnumber of output items to write on each output stream
ninput_itemsnumber of input items available on each input stream
input_itemsvector of pointers to the input items, one entry per input stream
output_itemsvector of pointers to the output items, one entry per output stream
Returns:
number of items actually written to each output stream, or -1 on EOF. It is OK to return a value less than noutput_items. -1 <= return value <= noutput_items

general_work must call consume or consume_each to indicate how many items were consumed on each input stream.

Reimplemented from gr_block.

float digital_ofdm_frame_acquisition::snr ( ) [inline]

Return an estimate of the SNR of the channel.


Friends And Related Function Documentation

DIGITAL_API digital_ofdm_frame_acquisition_sptr digital_make_ofdm_frame_acquisition ( unsigned int  occupied_carriers,
unsigned int  fft_length,
unsigned int  cplen,
const std::vector< gr_complex > &  known_symbol,
unsigned int  max_fft_shift_len 
) [friend]

Build an OFDM correlator and equalizer.

Parameters:
occupied_carriersThe number of subcarriers with data in the received symbol
fft_lengthThe size of the FFT vector (occupied_carriers + unused carriers)
cplenThe length of the cycle prefix
known_symbolA vector of complex numbers representing a known symbol at the start of a frame (usually a BPSK PN sequence)
max_fft_shift_lenSet's the maximum distance you can look between bins for correlation

The documentation for this class was generated from the following file: