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:
[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
|
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 |
|
|
Class constructor.
- Parameters:
-
| deviceID | ID of this device |
| system | Pointer to parent simulation system |
| pl | Property list of this device |
|
Member Function Documentation
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. |
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. |
|
Initalizes the given vector 'vec' with the given scrambling scheme. |
void simthlib::OfdmTransmitter::invariante |
( |
|
) |
const [inline, protected] |
|
|
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] |
|
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] |
|
virtual void simthlib::OfdmTransmitter::updateOutputLengths |
( |
|
) |
[virtual] |
|
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
1.4.1