Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

simthlib::OfdmTransmitter Class Reference

This class represents a special Transmitter that bases on the OFDM technique. More...

#include <transmitter.h>

Inheritance diagram for simthlib::OfdmTransmitter:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 OfdmTransmitter (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl, int oversampling, int carrier, double guardTime, double dist)
 OfdmTransmitter (int deviceID, simth::DeviceSystemIntf *system, const simth::PropertyList &pl)
virtual ~OfdmTransmitter ()
virtual void makeSignal (const simth::ModSeq &modSeq, simth::TimeSignal *outSignal)
virtual void updateInputLengths ()
virtual void updateOutputLengths ()
virtual void print (std::ostream &os) const

Protected Member Functions

virtual double deltaT () const
int numCarrier () const
int symbolsPerOfdm () const
int samplesPerOfdmSymbol () const
int samplesPerSymbol () const
int numGuard () const
double carrierDistance () const
void initScramblingVector (ofdm::FillUpScheme mode, simth::checkedVector< int > *vec) const
void initOfdm2origVector ()
ofdm::FillUpScheme diffDecodingScheme () const
int ofdmIndex2origIndex (int ofdmIndex) const
std::pair< int, int > index2position (int ofdmIndex) const
int position2index (int timePos, int freqPos) const
void addGuard (const simth::Array< Complex > &inArray, simth::Array< Complex > *outArray) const
void IFFT (const simth::Array< Complex > &freqArray, simth::Array< Complex > *timeArray) const
void transmitOfdmSymbol (simth::TimeSignal *timeSig, int currBlockNumber) const
double oneOverTimeDistance () const
int computeNumGuardSamples (double guardTime) const
void invariante () const
int numTimeSamples (int numModSymbols) const

Related Functions

(Note that these are not member functions.)

 propertylist_OfdmTransmitter (not_a_function)

Detailed Description

This class represents a special Transmitter that bases on the OFDM technique.

This class is an abstract base class for a Transmitter using the Orthogonal Frequency Division Multiplexing (OFDM) technology. See more about it in the common literature.

Whoever intends to extend 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 to 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). This 'ofdmIndex' is for internal use only (it results if the modulation symbols are counted columnwise starting from the left bottom corner). The inverse operation is done by the function index2position(int ofdmIndex).

Since different schemes exist to fill the OFDM with received modulation sequences, the ofdmIndex of a data element does not equal (in general) the index of that element in the received input sequences of modulation symbols. (The different 'filling modes' are set with the function fillUpMode(FillUp_Mode).) This index of the modulation symbol within the input (as well as within the output sequence) can be computed by the 'ofdmIndex' using the function ofdmIndex2origIndex(int ofdmIndex).


Constructor & Destructor Documentation

simthlib::OfdmTransmitter::OfdmTransmitter int  deviceID,
simth::DeviceSystemIntf system,
const simth::PropertyList pl,
int  oversampling,
int  carrier,
double  guardTime,
double  dist
 

Class constructor.

Parameters:
deviceID ID of this device
system Pointer to parent simulation system
pl Property list of this device
oversampling oversampling rate by IDFT (IFFT)
carrier number of carrier
guardTime length of guard time in seconds
dist subcarrier spacing in Hz

simthlib::OfdmTransmitter::OfdmTransmitter int  deviceID,
simth::DeviceSystemIntf system,
const simth::PropertyList pl
 

Class constructor.

Parameters:
deviceID ID of this device
system Pointer to parent simulation system
pl Property list of this device

virtual simthlib::OfdmTransmitter::~OfdmTransmitter  )  [inline, virtual]
 


Member Function Documentation

void simthlib::OfdmTransmitter::addGuard const simth::Array< Complex > &  inArray,
simth::Array< Complex > *  outArray
const [protected]
 

double simthlib::OfdmTransmitter::carrierDistance  )  const [inline, protected]
 

int simthlib::OfdmTransmitter::computeNumGuardSamples double  guardTime  )  const [protected]
 

Computes the number of time samples of the guard interval with the given length.

double simthlib::OfdmTransmitter::deltaT  )  const [inline, protected, virtual]
 

Returns the time space between subsequent samples of the time signal created by the element function makeSignal()

ofdm::FillUpScheme simthlib::OfdmTransmitter::diffDecodingScheme  )  const [inline, protected]
 

Returns the used differential decoding scheme.

void simthlib::OfdmTransmitter::IFFT const simth::Array< Complex > &  freqArray,
simth::Array< Complex > *  timeArray
const [inline, protected]
 

std::pair< int, int > simthlib::OfdmTransmitter::index2position int  ofdmIndex  )  const [inline, protected]
 

Converts the 1-dimensional index that describes a position within the OFDM block to the 2-dimensional notation. The first dimension of that notation indexes the time position, i.e. the OFDM symbol while the second dimension indexes the frequency position, i.e. the subcarrier number. The lower left corner is indexed by (0,0), the upper left corner is

void simthlib::OfdmTransmitter::initOfdm2origVector  )  [protected]
 

Initializes the vector used in the function ofdmIndex2OrigIndex(). This function is used to provide different differential decoding schemes, e.g. differential decoding in frequency direction or differential decoding in time direction.

The option which scheme is used is set by the constructor argument diffDecodingScheme. The length of the scrambling vector equals the inputLength() that is set implicit by calling the function setInputLength(iLen) and setOutputLength(oLen), respectivley. Hence, it's pointless to call this function without calling one of these functions before. (In that case the length of the scrambling vector will be zero.) Internally, this function uses the function initScramblingVector(ofdm::FillUpScheme mode, simth::checkedVector<int>* vec) to provide the different scrambling schemes.

void simthlib::OfdmTransmitter::initScramblingVector ofdm::FillUpScheme  mode,
simth::checkedVector< int > *  vec
const [protected]
 

Initalizes the given vector 'vec' with the given scrambling scheme.

void simthlib::OfdmTransmitter::invariante  )  const [inline, protected]
 

virtual void simthlib::OfdmTransmitter::makeSignal const simth::ModSeq modSeq,
simth::TimeSignal outSignal
[virtual]
 

Transform a modulation sequence (a sequence of complex values) to a time signal (which is represented by its samples)

Parameters:
modSeq modulation sequence (sequence of complex values)
outSignal pointer to the time signal to be made.

Implements simthlib::Transmitter.

int simthlib::OfdmTransmitter::numCarrier  )  const [inline, protected]
 

int simthlib::OfdmTransmitter::numGuard  )  const [inline, protected]
 

int simthlib::OfdmTransmitter::numTimeSamples int  numModSymbols  )  const [protected]
 

int simthlib::OfdmTransmitter::ofdmIndex2origIndex int  ofdmIndex  )  const [inline, protected]
 

The input sequence of modulation symbols on the Transmitter side can be scrambled to provide differential decoding in different direction or schemes. This function converts the position inside the OFDM block to the original position inside the modulation sequence. The correct OFDM index is obtained, if the OFDM block is filled up column wise from the left bottom subcarrier.

Parameters:
ofdmIndex (One-dimensional) Position inside the OFDM block.
Returns:
Original position in the modulation sequence.

double simthlib::OfdmTransmitter::oneOverTimeDistance  )  const [protected]
 

Computes the reciprocal value of the space between two time samples by the settings of the OFDM receiver. Note, that it is not checked when receiving a sequence if the time distance of the received sequence equals this 1/oneOverTimeDistance().

int simthlib::OfdmTransmitter::position2index int  timePos,
int  freqPos
const [inline, protected]
 

The inverse operation of the function index2position(int index).

virtual void simthlib::OfdmTransmitter::print std::ostream &  os  )  const [virtual]
 

Reimplemented from simthlib::Transmitter.

int simthlib::OfdmTransmitter::samplesPerOfdmSymbol  )  const [inline, protected]
 

int simthlib::OfdmTransmitter::samplesPerSymbol  )  const [inline, protected]
 

int simthlib::OfdmTransmitter::symbolsPerOfdm  )  const [inline, protected]
 

void simthlib::OfdmTransmitter::transmitOfdmSymbol simth::TimeSignal timeSig,
int  currBlockNumber
const [protected]
 

virtual void simthlib::OfdmTransmitter::updateInputLengths  )  [virtual]
 

Implements simth::Device.

virtual void simthlib::OfdmTransmitter::updateOutputLengths  )  [virtual]
 

Implements simth::Device.


Friends And Related Function Documentation

propertylist_OfdmTransmitter not_a_function   )  [related]
 

These are the properties of class OfdmTransmitter . 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: This class represents a special Transmitter that bases on the OFDM technique. This class is a Transmitter using the Orthogonal Frequency Division Multiplexing (OFDM) technology. See more about it in the common literature.

Note that this class also has the Properties of its base classes. The direct base class is simthlib::Transmitter ; direct link to its propertylist should be propertylist_Transmitter(). 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.

input_length
<sequencelength>, default "" -- The input length.

1 properties in this class. The above properties have been inherited from the base class simthlib::Transmitter .

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.

allow_noninteger_ofdmsymbols
<bool>, default "false" -- If true, then an input length that results in a non-integer number of OFDM symbols will be allowed. The extra part of the OFDM symbols will then be filled randomly. If false (default), an exception will be thrown in case of the non-integer number of OFDM symbols. Usually the non-integer number of OFDM symbols is the result of wrong user settings. Therefore this property has been included to detect such errors.

6 properties in this class.


Generated on Tue Aug 9 14:39:35 2005 for simtheticlib by  doxygen 1.4.1