GNU Radio 3.4.0 C++ API
|
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 <gr_ofdm_frame_acquisition.h>
Public Member Functions | |
float | snr () |
Return an estimate of the SNR of the channel. | |
~gr_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 | |
gr_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 | |
gr_ofdm_frame_acquisition_sptr | gr_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. |
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.
gr_ofdm_frame_acquisition::gr_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] |
gr_ofdm_frame_acquisition::~gr_ofdm_frame_acquisition | ( | void | ) |
int gr_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
noutput_items | number of output items to write on each output stream |
ninput_items | number of input items available on each input stream |
input_items | vector of pointers to the input items, one entry per input stream |
output_items | vector of pointers to the output items, one entry per output stream |
general_work must call consume or consume_each to indicate how many items were consumed on each input stream.
Implements gr_block.
float gr_ofdm_frame_acquisition::snr | ( | ) | [inline] |
Return an estimate of the SNR of the channel.
gr_ofdm_frame_acquisition_sptr gr_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.
occupied_carriers | The number of subcarriers with data in the received symbol |
fft_length | The size of the FFT vector (occupied_carriers + unused carriers) |
cplen | The length of the cycle prefix |
known_symbol | A vector of complex numbers representing a known symbol at the start of a frame (usually a BPSK PN sequence) |
max_fft_shift_len | Set's the maximum distance you can look between bins for correlation |