Page tree
Skip to end of metadata
Go to start of metadata


User Defined Functions

  • const_evm_oqpsk_ref_v2
  • const_evm_hpsk_ref_v2
  • kmm_evm_qpsk_v2
  • kmm_evm_hpsk_v2
  • const_evm_qpsk_ref_v2
  • kmm_spectrum_shift
  • kmm_dehop
  • kmm_gsm_gmsk_const_evm_v2
  • kmm_gsm_8psk_const_evm_v2
  • kmm_gsm_gmsk_evm
  • kmm_gsm_8psk_symbol_extract
  • kmm_evm_gsm
  • kmm_evm_qpsk
  • const_evm_qpsk

Usage and Operation

const_evm_oqpsk_ref_v2 and const_evm_hpsk_ref_v2 functions

The reference and distorted envelopes are processed by the const_evm_oqpsk_ref_v2 function in the case of RC1 and RC2, and by the const_evm_hpsk_ref_v2 function for RC3 through RC6. The reference and distorted envelopes are processed by the const_evm... functions to extract the trajectory and constellation data of each envelope. In addition, using the constellation data, the EVM (and associated measures) of the distorted constellation relative to the reference constellation is also calculated by the functions. The following parameters are passed to both const_evm... functions (the corresponding Data Display variable is set out in brackets following each parameter description):

  • The reference envelope ( VRef );
  • The distorted envelope ( VDist );
  • The chip rate ( ksymbolrate );
  • A clock offset value to fine tune the chip sampling time for the reference envelope. ( ksampledelay );
  • The start time of the first chip period for which valid envelope data exists (for instance, the transient time associated with a filter) ( ktransientduration ); and,
  • The time delay between the point in the simulation where the reference envelope is extracted to the point where the distorted envelope is extracted, i.e., the path delay ( kpathdelay ).

The const_evm_oqpsk_ref_v2 function is also passed the time delay introduced into the quadrature component in the OQPSK modulator ( koffset ).

The clock offset fine tunes the timing for the extraction of the chip samples from the reference envelope. The timing is intended to be adjusted by the user so that the EVM of the reference constellation relative to an ideal constellation is minimized. The timing is adjusted by moving the ClockOffset marker located within the small plot located immediately below the tables displaying the EVM results. Located within this same plot is the PathOffset marker. The PathOffset should be added to the path delay time ( kpathdelay ) so that the timing for the symbol samples extracted from the reference envelope can be adjusted by the user so that EVM of the distorted constellation relative to the reference constellation is also minimized.

The const_evm... functions return the trajectory, constellation and EVM data in a 10 element list ( klist1 ). The 10 elements of the list are each assigned to a Data Display variable.

The extracted trajectory data of the reference and distorted envelopes is plotted in the two upper most plots on the page. The ktrajectorysymbols variable located above the trajectory plots enables the designer to set the total number of chip periods traversed by the trajectory data that is plotted. Located immediately below the trajectory plots are the extracted constellations from the reference and distorted envelopes. The EVM and associated statistics generated by the const_evm... functions is tabulated in the box entitled "Distorted constellation relative to the Reference constellation".

To generate the results tabulated in the " Reference constellation relative to an Ideal constellation " and " Distorted constellation relative to an Ideal constellation " boxes the reference and distorted envelope constellation data produced by the const_evm... functions is measured against an ideal constellation. The method of deriving the ideal constellation is different for the RC1 and RC2 envelopes versus those of RC3 through 6.


Since the envelopes are an OQPSK signal in the case of RC1 and RC2, the ideal constellations are readily derived by quantizing the in-phase and quadrature components of the chips (points) extracted from the reference and distorted constellations to produce an ideal constellation (that is based upon only 4 points, namely: (1,1), (1,-1), (-1,1) and (-1,-1)). This process of quantizing a constellation is known as "slicing"1. The slicing operation, in effect, divides the I-Q plane into four quadrants and assigns one of the ideal constellation points to all of the points of the reference and distorted constellations falling into the same quadrant. Armed with an ideal constellation, the EVM and associated statistics are readily determined.

In the case of RC3 through RC6, the envelopes are an HPSK signal, thus the shape and size of the constellation that is employed will vary according to the number of active uplink channels and their relative power. As a result of the variety of HPSK constellations that may be encountered, it is impractical to derive the ideal constellation from the reference and distorted constellations through slicing. As an alternative to slicing, during the course of a simulation the ideal constellation points that are generated by the reverse link source are collected and stored in the dataset. Recall that within the Variable Assignment page the complex signal that drives the pulse shaping filters was collected and stored in the dataset, ImpOut, and was assigned to the Data Display variable bb_symbol_impulse_stream.

To perform the desired EVM calculations it is first necessary to extract the ideal constellation from the impulse symbol stream. The extraction of the ideal symbols is performed manually by adjusting the sweep indexing scheme used in the equation that assigns data to the ideal_syms variable. The impulse symbol stream has the following properties:

  • It's collected over the entire duration of the simulation;
  • The symbol impulses (ideal constellation points) are spaced apart from one another by the number of samples per chip used for simulation.

With the aid of the ksamplesperchip variable, set to the number of samples per chip, and the tables located at the bottom of the page listing the data of the bb_symbol_impulse_stream , ideal_syms and RefOut_const (extracted constellation points of the reference envelope) variables, the limits of the indexing scheme can be adjusted to extract the ideal HPSK constellation. The first ideal constellation point extracted should reflect the delay introduced by the ktransientduration variable that is part of the call to the const_evm_hpsk_ref_v2 function .

The slicing method has the benefit of making it unnecessary to store the chips/symbols generated during simulation in the dataset so as to be able to form an ideal constellation during post-processing. This saves simulation time and reduces the size of the dataset. Slicing does have a limitation, however, it will not result in an exact replica of the ideal constellation points when a transmitted symbol is sufficiently corrupted (by noise, interference and/or distortion, for example) such that it falls into the wrong quadrant.

kmm_evm_qpsk_v2 and kmm_evm_hpsk_v2 functions

The EVM and associated statistics of the reference and distorted envelope constellations relative to an ideal constellation are calculated using the kmm_evm_qpsk_v2 and kmm_evm_hpsk_v2 functions. Both functions are part of the AEL user library. One parameter is passed to the kmm_evm_qpsk_v2 function, namely, the reference or distorted constellation, RefOut_const or DistOut_const . The kmm_evm_qpsk_v2 function will slice the passed constellation to derive the ideal constellation. Two parameters are passed to the kmm_evm_hpsk_v2 function - the ideal constellation, ideal_syms , and the reference or distorted constellation, RefOut_const or DistOut_const . Both kmm_evm... functions return a list comprised of 6 elements ( klist2 in the case of the reference constellation and klist3 in the case of the distorted constellation). The 6 elements of each list are each assigned to a Data Display variable. The resulting EVM and associated statistics are tabulated in the leftmost and centre boxes located in the upper part of the page.

const_evm_qpsk_ref_v2 function

The parameters are the same as with the const_evm_oqpsk_ref_v2 function , but for the lack of the koffset parameter in the const_evm_qpsk_ref_v2 function call.

kmm_spectrum_shift function

The multicarrier DS-CDMA signal of RC6 through RC9 is processed by selecting one of the carriers to analyze and isolating that carrier through filtering if necessary. The additional processing that is required is isolated in the lower left-hand portion of the page and is controlled through the kchannel and kfilter variables. The kchannel variable is set by the designer to either "Lower", "Upper", or "Centre" to select which of the three carriers is to be analyzed. The kfilter variable is set by the designer to either "Yes" or "No" to control whether the selected carrier of the reference and distorted envelopes is to be filtered prior to extracting the constellation and trajectory data, and performing the EVM calculations.

The first step is to shift the frequency spectrum of the reference and distorted envelopes to centre the carrier to be analyzed about 0 Hz. The spectrum shift of both envelopes is performed using the kmm_spectrum_shift function from the user defined library. The parameters that are passed to the kmm_spectrum_shift function are:

  • The time signal whose frequency spectrum is to be shifted ( VRef or VDist ),
  • The amount by which the spectrum is to be shifted ( fshift ), and
  • An initial phase for the complex exponential used to perform the shift (0.0).

After shifting the frequency spectrums, if desired, a filter is applied to the resultant envelopes to isolate the selected carrier. The filter is applied using the kmm_filt function, with the filter's coefficients being drawn from the series of filter coefficients that are compiled within the kmm_filtcoef function. The kmm_filt and kmm_filtcoef functions are both in the user defined library. The kmm_filt function performs a convolution of the two swept variables that are passed to it.

Following shifting of the frequency spectrums and filtering, if desired, the reference and distorted envelope of the carrier to be analyzed are assigned to the VRef_s and VDist_s variables, respectively. Post processing to extract the reference and distorted constellations and trajectory data, as well as calculate EVM results, is performed on VRef_s and VDist_s in the same manner as that described in EVM, Constellation & Trajectory. In addition, the estimated power spectral density of VRef_s and VDist_s is calculated using the ADS fs function and displayed in the two additional plots on the far right hand side of the page.

kmm_dehop function

The first post-processing step needed to be carried out to extract the trajectory and constellation data is to `dehop' the reference and distorted envelopes. Dehopping of the envelopes is accomplished by the user defined AEL function kmm_dehop . The kmm_dehop function reverses any frequency hopping impressed upon an envelope by shifting the its spectrum over the course of each TDMA frame so that the spectrum is always centered about 0 Hz. The following parameters must be passed to the kmm_dehop function, respectively (the corresponding Data Display variable is set out in brackets following each parameter description):

  • The envelope to be dehopped ( VRef or VDist );
  • The GMSK/8-PSK symbol rate ( symbolrate );
  • The time corresponding to 4 symbol periods prior to the start of the first (zero'th) frame. If no additional delay is added to the start of an uplink source simulation (i.e. Delay_Time = 0 seconds) the point in time that is 4 symbol periods prior to the start of the first frame is equal to 2 symbol periods. (2.0 / symbolrate );
  • The mobile allocation ( kMobileAllocation );
  • The channel spacing ( kChannelSpacing );
  • The hopping sequence number ( kHoppingSequenceNumber ); and
  • The mobile allocation offset ( kMobileAllocationOffset ).

The kmm_dehop function assumes that the first frame to be processed is frame number zero. The dehopped reference and distorted envelopes are assigned to the VRef_dehop and VDist_dehop variables, respectively.

kmm_gsm_gmsk_const_evm_v2 or kmm_gsm_8psk_const_evm_v2 functions

Following dehopping, the reference and distorted envelopes are further processed by, either, the function kmm_gsm_gmsk_const_evm_v2 , in the case of GMSK modulation, or the function kmm_gsm_8psk_const_evm_v2 , in the case of 8-PSK. These two functions are part of the user defined AEL library and only differ in the type of modulation expected upon the reference and distorted envelopes. The dehopped reference and distorted envelopes are processed by kmm_gsm_gmsk_const_evm_v2 and kmm_gsm_8psk_const_evm_v2 on a slot-by-slot basis in order to extract the trajectory and constellation data of the desired slot(s). Using the constellation data, the EVM (and associated measures) of the distorted constellation relative to the reference constellation is also calculated. The following parameters must be passed to the kmm_dehop function, respectively (the corresponding Data Display variable is set out in brackets following each parameter description):

  • The dehopped reference envelope ( VRef_dehop , or VRef , if no frequency hopping is implemented in the uplink source);
  • The dehopped reference envelope ( VDist_dehop , or VDist , if no frequency hopping is implemented in the uplink source);
  • The desired filter to apply to each dehopped envelope prior to trajectory and constellation extraction and EVM calculation. ( kfilttype );
  • The GMSK/8-PSK symbol rate ( symbolrate );
  • The estimated start time of the first TDMA frame. ( kestframestart );
  • A clock offset value to fine tune the symbol sampling time for the reference envelope. ( ksampledelay );
  • The time delay between the point in the simulation where the reference envelope is extracted to the point where the distorted envelope is extracted, i.e. the path delay. ( kpathdelay );
  • The slots of each frame from which the trajectory and constellation data is to be extracted. ( kslotusage ); and,
  • The training sequence number of the training sequence that is embedded within each burst transmitted ( kTSCnum ).

The filter selection parameter only has an effect when processing 8-PSK modulated data using the kmm_gsm_8psk_const_evm_v2 function. Although the parameter is part of the parameter list for kmm_gsm_gmsk_const_evm_v2 , it is not used when processing GMSK modulated data. Two alternative FIR filters are available, either an ISI suppression filter, or a raised-cosine filter. The filter coefficients are automatically adjusted for 4, 8 or 16 samples per symbol. The ISI suppression or raised-cosine filter is selected by setting the filter selection parameter to a value of 1 or 2, respectively. If the parameter is set to any other value than 1 or 2, no filtering will take place. The ISI suppression filter is based upon the EDGE_RxFilter component and the raised cosine filter on the EDGE_RC_Window_RCFilter component (see section 4.6.2 of [5]), both from of the ADS Ptolemy GSM/EDGE component library.

Only an estimate of the start time of the first TDMA frame is required by the kmm_gsm_gmsk_const_evm_v2 and kmm_gsm_8psk_const_evm_v2 functions because they both seek out the training sequence symbols embedded within the first transmitted data burst to use as a timing reference (granularity of a symbol period) for the TDMA frames (and slots of each frame). The estimated start time of the first TDMA frame need only be specified within half a slot of the actual start time. This parameter is easily set if the start time of the first TDMA frame is known for the kmm_dehop function.

The slots of each frame from which trajectory and constellation data is extracted are specified using an 8 element swept integer variable where each successive element corresponds, in order, to slot 0 through 7. A slot will be processed when its associated element in the swept variable has a non-zero value. Note that the kmm_gsm_gmsk_const_evm_v2 and kmm_gsm_8psk_const_evm_v2 functions do not process half-rate traffic channels, they only process full-rate traffic channels. Typically, the same slots that are selected to carry full-rate traffic within the simulation that generated the current dataset will be selected for post-processing.

kmm_gsm_gmsk_const_evm_v2 and kmm_gsm_8psk_const_evm_v2 functions

These functions return the trajectory, constellation and EVM data in a 10 element list ( klist1 ). The 10 elements of the list are each assigned to a Data Display variable (see the formulas located in the box located below the kmm_gsm_gmsk_const_evm_v2 and kmm_gsm_8psk_const_evm_v2 functions).

The trajectory data for the series of extracted bursts from the (dehopped) reference and distorted envelopes are plotted in the upper two most plots on the page. The kFrameStart and kFrameEnd variables located above the trajectory plots enable the user to set the TDMA frame range that is used to generate the trajectory plots. That is, only the trajectory data from the slots selected by the kslotusage variable that fall within the TDMA frame range is plotted (the first TDMA frame, or portion thereof, is frame 0).

Located immediately below the trajectory plots, are the extracted constellations from the reference and distorted envelopes. These two plots are constructed from the constellations of the slots selected by the kslotusage variable and are over all TDMA frames, or part thereof, generated during the entire simulation period. The constellation plots include transition lines between the successive constellation points of each burst.

kmm_gsm_gmsk_evm function

In the case of GMSK ( Test_Uplink_GMSK.dds), the kmm_gsm_gmsk_evm function, contained in the AEL user library, is used to determine the EVM and associated statistics for both, the reference and distorted constellations, relative to an ideal constellation. The ideal constellations are readily derived by quantizing the in-phase and quadrature components of the symbols (points) of the reference and distorted constellations to produce an ideal constellation that is based upon only 4 points, namely: (1,1), (1,-1), (-1,1) and (-1,-1). This process of quantizing a constellation is known as "slicing"1. The slicing operation, in effect, divides the I-Q plane into four quadrants and assigns one of the ideal constellation points to all of the points of the reference and distorted constellations falling into the same quadrant. Armed with an ideal constellation, the EVM and associated statistics are readily determined. The kmm_gsm_gmsk_evm function is passed only one parameter, the reference or distorted constellation, as the case may be ( RefOut_const or DistOut_const ). Like the kmm_gsm_gmsk_const_evm_v2 function, the kmm_gsm_gmsk_evm function returns a list, in this case, comprised of 7 elements ( klist2 for the case of the reference constellation and klist3 for the case of the distorted constellation). The 7 elements of the list are each assigned to a Data Display variable (see the formulas located in the box located below the kmm_gsm_gmsk_evm functions). The resulting EVM and associated statistics are tabulated in the leftmost and centre boxes located in the upper centre of the page. In addition to the EVM and associated statistics, the list returned by the kmm_gsm_gmsk_evm function also contains a compensated reference or distorted constellation, as the case may be. Constellation compensation for the purposes of EVM results is discussed below.

kmm_gsm_8psk_symbol_extract function

Before the desired EVM calculations can be performed, the desired ideal symbols must be extracted from the impulse symbol stream to construct the ideal constellation. The extraction of the ideal symbols and the construction of the ideal constellation is performed by the kmm_gsm_8psk_symbol_extract function, part of the AEL user library of functions. The kmm_gsm_8psk_symbol_extract function is required to be passed the following parameters, respectively (the corresponding Data Display variable is set out in brackets following each parameter description):

  • The impulse symbol stream that drives the 8-PSK pulse-shaping filters ( bb_symbol_impulse_stream );
  • The 8-PSK symbol rate ( symbolrate );
  • The estimated start time of the first TDMA frame. ( kestframestart );
  • The slots of each frame for which the constellation data is desired. ( kslotusage ); and,
  • The training sequence number of the training sequence that is embedded within each burst transmitted ( kTSCnum ).

The impulse symbol stream has the following properties:

  • It's collected over the entire duration of the simulation;
  • It has no frame or slot delimiters; and,
  • The symbol impulses are spaced 4, 8 or 16 samples apart, depending upon the number of samples per symbol used for simulation.

Due to these characteristics of the impulse symbol stream, frame and symbol synchronization must first be performed before the ideal symbols of the desired slots ( kslotusage ) can be extracted. The symbol synchronization is performed by first determining the average power of a set of equally spaced samples for all possible time-step offsets (4, 8 or 16). The time-step offset of the set that has the highest average power (in fact, the average power of all sets except for the desired set should be zero) provides for symbol synchronization. Frame synchronization is performed by correlation using the training sequence code that is embedded within each normal burst transmitted. Once frame and symbol synchronization is achieved, the ideal symbols of the desired slots are extracted and the ideal constellation is constructed.

The ideal constellation returned by the kmm_gsm_8psk_symbol_extract function is assigned to the ideal_syms Data Display variable. The ideal constellation, along with phase transitions, is shown in a small plot located in the lower centre of the page.

kmm_gsm_evm function

To determine the EVM and associated statistics of the (dehopped) reference and distorted envelope constellations relative to the ideal constellation returned by the kmm_gsm_8psk_symbol_extract function, the kmm_gsm_evm function, from the AEL user library, is invoked twice. The kmm_gsm_evm function is passed two parameters, the ideal constellation, ideal_syms , and the reference or distorted constellation, as the case may be ( RefOut_const or DistOut_const ). Like the kmm_gsm_gmsk_evm function, the kmm_gsm_evm function returns a list comprised of 7 elements ( klist2 for the case of the reference constellation and klist3 for the case of the distorted constellation). The 7 elements of each list are each assigned to a Data Display variable (see the formulas located in the box located below the kmm_gsm_evm functions). The resulting EVM and associated statistics are tabulated in the leftmost and centre boxes located in the upper centre of the page. In addition, the list returned by the kmm_gsm_evm function also contains a compensated reference or distorted constellation, as the case may be.

1 This is minimum distance decoding.

  • No labels