|
Public Types |
typedef simth::ModSeq::value_type | mod_value |
typedef simth::PhaseSeq::value_type | phase_value |
Public Member Functions |
| OfdmReceiver (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl, int oversampling, int carr, double guardTime, double dist, ofdm::FillUpScheme diffScheme) |
| OfdmReceiver (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl) |
| ~OfdmReceiver ()=0 |
virtual void | receiveSignal (const simth::TimeSignal &signalSamples, simth::ModSeq *modSeq, double *noise=NULL, simth::ModSeq *trans=NULL) |
virtual void | updateInputLengths () |
virtual void | updateOutputLengths () |
void | setNumPhases (int usedPhases) |
bool | needNumPhases () const |
void | setLinearPhaseCorrection (bool state) |
virtual void | startOfSimulation () |
virtual void | print (std::ostream &os) const |
Protected Member Functions |
int | numCarrier () const |
int | numGuard () const |
int | oversampling () const |
int | symbolsPerOfdm () const |
int | samplesPerOfdmSymbol () const |
int | samplesPerSymbol () const |
double | carrierDistance () const |
double | oneOverTimeDistance () const |
bool | isLinearPhaseCorrection () const |
int | numReceivedOfdmSymbols () const |
void | linearPhaseCorrection (simth::ModSeq *modulationSymbols) const |
void | initScramblingVector (ofdm::FillUpScheme mode, simth::checkedVector< int > *vec) const |
void | initOfdm2origVector () |
ofdm::FillUpScheme | diffDecodingScheme () const |
void | diffDecodingScheme (ofdm::FillUpScheme newDiffMode) |
std::pair< int, int > | getOfdmBlockDimensions (int sequenceLength) const |
int | ofdmIndex2origIndex (int ofdmIndex) const |
int | origIndex2ofdmIndex (int origIndex) const |
std::pair< int, int > | index2position (int ofdmIndex) const |
int | position2index (int timePos, int freqPos) const |
int | getTimePos (int index) const |
int | getCarrierPos (int index) const |
void | subGuard (const simth::Array< mod_value > &inArray, simth::Array< mod_value > *outArray) const |
void | FFT (const simth::Array< mod_value > &inArray, simth::Array< mod_value > *outArray) const |
void | fillOfdmSymbol (const simth::TimeSignal &timeSeq, int currBlockNumber) |
void | flushOfdmSymbol (simth::ModSeq *modSymbols, int currBlock) const |
int | computeNumGuardSamples (double guardTime) const |
virtual void | invariante () const |
virtual int | numTimeSamples (int numModSymbols) const |
virtual int | numModSymbols (int numTimeSamples) const |
virtual void | transformSignal (const simth::TimeSignal &signalSamples_ptr, simth::ModSeq *modSeq) |
virtual void | channelEstimation (const simth::ModSeq &modSymbols, simth::ModSeq *transfer) const |
virtual void | noiseEstimation (const simth::ModSeq &modSymbols, double *noise) const |
int | numPhases () const |
void | needNumPhases (bool state) |
Related Functions |
(Note that these are not member functions.)
|
| propertylist_OfdmReceiver (not_a_function) |
This class is an abstract base class for a receiver using the Orthogonal Frequency Division Multiplexing (OFDM) technology. See more about OFDM in the common literature.
Whoever intends to extent this class or who wants to understand the internal functions should understand the concept used to address the data elements inside a received OFDM block:
An OFDM block consist of one or more received OFDM symbols. Each of the these OFDM symbols itself consist of a certain number of modulation symbols. For example, the third modulation symbol of the first OFDM symbol can be accessed in 2-dimensional notation as '(0,2)' (note that the index starts at zero).
Since the received OFDM symbols arrive at successive time stamps, the first dimension (that indexes a certain OFDM symbol) is called the time index, while the second index (that indexes a certain subcarrier number) is called the frequency index. This 2-dimensional index can be translated into an one dimensional, so-called 'ofdmIndex', using the function position2index(int timePos,int freqPos). (Note, this mapping is fixed!) This 'ofdmIndex' is for internal use only (it results if the modulation symbols are counted columnwise starting from the lower left corner). The inverse operation is done by the function index2position(int ofdmIndex).
Since different schemes exist to fill the OFDM blocks with received modulation sequences, the ofdmIndex of a data element does not equal (in general) the index of that element in the received output sequences of modulation symbols. (The different 'filling modes' are set with the function fillUpMode(FillUp_Mode).) This index of the modulation symbol within the output sequence of the receiver can be computed by the 'ofdmIndex' using the function ofdmIndex2origIndex(int ofdmIndex). The inverse function is origIndex2ofdmIndex(int origIndex).
|
These are the properties of class OfdmReceiver . This list is auto-generated from the XML-Devicelist of this device by means of an XSLT transformation script.
Description of this device in the XML file: Abstract base class of an OFDM receiver. This class is an abstract base class for a receiver using the Orthogonal Frequency Division Multiplexing (OFDM) technology. See more about OFDM in the common literature. Whoever intends to extent this class or who wants to understand the internal functions should understand the concept used to address the data elements inside a received OFDM block, as described in the class definition.
Note that this class also has the Properties of its base classes. The direct base class is simthlib::Receiver ; direct link to its propertylist should be propertylist_Receiver(). The list below usually includes the properties that have been inherited from the base classes; the properties which belong only to this class can be found at the end of this list.
output_length
<sequencelength> , default "" -- The output length.
1 properties in this class. The above properties have been inherited from the base class simthlib::Receiver .
diff_scheme
<enum> , default "frequency" -- This parameter chooses the scheme how to fill the OFDM symbols in frequency and/or time direction. (WATCH OUT: The name is misleading. This property should rather be called 'fill_up_scheme'.) This is commonly used in different differential decoding schemes, e.g. differential decoding in frequency direction or differential decoding in time direction. WATCH OUT: The default here used to be frequency_snake, but since this contradicts common assumptions about the behaviour of OFDM receivers/transmitters, it was changed to the more textbook-like setting 'frequency'. This setting only has effect if the input_length is longer than num_carriers.
oversampling
<unsigned> , default "1" -- The oversampling rate used by the IDFT (IFFT)
num_carrier
<unsigned> , default "" -- The number of carriers
guard_time
<double> , default "0.0" -- The time duration of the guard interval in seconds.
carrier_dist
<double> , default "" -- The subcarrier distance (spacing) in Hertz.
linear_phase_correction
<bool> , default "false" -- Switchs linear phase correction 'off' and 'on', respectively. This could be useful if the received signal was sent over a channel with time delay (e.g. a WssusChannel). The receiver does not consider this time delay, therefore, the symbols sustain a multiplication with a complex factor in the frequency domain. This complex factor depends linearly on the frequency, i.e. the number of the subcarrier. This function computes this factor using the complex symbols filled into ofdmVector.
num_phases
<int> , default "0" -- Only active when linear_phase_correction is switched on: The number of different phases of the constellation diagram used by the modulator and demodulator.
7 properties in this class. |