MATLAB Examples

UMTS Uplink Waveform Generation

This example shows how to generate an HSUPA FRC using LTE System Toolbox™.



The LTE System Toolbox can be used to generate standard compliant W-CDMA/HSPA/HSPA+ uplink and downlink complex baseband waveforms including pre-defined configurations for standard defined measurement channels. For the uplink this includes the Reference Measurement Channels (RMC) and Fixed Reference Channel (FRC) defined in TS25.141 [ 1 ].

This example demonstrates how the two uplink related functions, umtsUplinkReferenceChannels and umtsUplinkWaveformGenerator, combine to support this feature. We show how they can generate an FRC waveform for HSUPA testing using one of the pre-defined configurations provided. We also present explicit MATLAB® code which lists all uplink generator parameters set up for this particular measurement channel. The FRCs are defined in TS25.141, Annex A.10 [ 1 ]. This code also provides a useful template for full waveform customization.

The umtsUplinkWaveformGenerator function can generate custom W-CDMA/HSPA/HSPA+ waveforms using the physical layer channels listed below. Arbitrary Coded Composite Transport Channels (CCTrCH) can be configured too. The output waveforms are loopable for continuous playback in simulation or via test equipment.

Physical channels supported:

  • Dedicated Physical Data Channel (DPDCH)
  • Dedicated Physical Control Channel (DPCCH)
  • E-DCH Dedicated Physical Data Channel (E-DPDCH)
  • E-DCH Dedicated Physical Control Channel (E-DPCCH)
  • Dedicated Control Channel associated with HS-DSCH transmission (HS-DPCCH)

Transport channels supported:

  • Dedicated Channel (DCH)
  • Enhanced Dedicated Channel (E-DCH)

The physical channel processing is defined in TS25.211 and TS25.213 [ 2 ][ 4 ]. The processing for transport channels is defined in TS25.212 [ 3 ].

The waveforms generated can be used for a number of applications:

  • Golden reference for transmitter implementations
  • Receiver testing and algorithm development
  • Testing RF hardware and software

See Waveform Generation and Transmission using LTE System Toolbox with Test and Measurement Equipment for a more detailed explanation of how to interface the waveforms with external hardware.

W-CDMA/HSPA/HSPA+ Waveform Generation and Parameterization Functions

The waveform generator function umtsUplinkWaveformGenerator requires a single hierarchical MATLAB structure which specifies the set of all parameters for the physical and transport channels present in the output waveform.

The toolbox includes a function umtsUplinkReferenceChannels which can return a fully populated parameter structure for all the pre-configured Reference Measurement Channels (RMC) and Fixed Reference Channels (FRC).

By combining the two functions these standard defined measurement waveforms can be generated easily. The pre-configured parameters returned from umtsUplinkReferenceChannels can also be used as a starting point for parameter customization, for example changing the output filtering, channel power levels or even the reference CCTrCH configuration, prior to calling the generator function. If full waveform parameter control is required then this example includes MATLAB code below which lists all possible uplink parameters. The following diagram shows the steps.

FRC1 Generation Using a Pre-configured Parameter Structure

The umtsUplinkReferenceChannels function requires the FRC number to be specified as shown below. Allowed FRC values are 'FRC1', 'FRC2', 'FRC3', 'FRC4', 'FRC5', 'FRC6', 'FRC7', and 'FRC8'. The output structure preconfigParams is the pre-built configuration for FRC1 and this can then be used to generate the standard defined FRC waveform by calling the umtsUplinkWaveformGenerator function.

frc = 'FRC1';     % FRC number
preconfigParams = umtsUplinkReferenceChannels(frc);        % Get FRC parameters
frcWaveform = umtsUplinkWaveformGenerator(preconfigParams);% Generate FRC waveform

FRC Definition Using Full Parameter List

In this section, we will build the FRC1 configuration structure from scratch and show that this is identical to the structure defined using the umtsUplinkReferenceChannels function as shown above. The uplinkParams structure defined below has the full list of the parameters supported by the umtsUplinkWaveformGenerator function and so can also be used as a template to create custom waveforms when a large set of parameter values need to be changed from the structure output by umtsUplinkReferenceChannels.

% FRC definition from scratch
% General settings
uplinkParams.TotFrames = 1;                     % Number of frames to be generated
uplinkParams.ScramblingCode = 1;                % Scrambling code
uplinkParams.FilterType = 'RRC';                % Enable the RRC filter
uplinkParams.OversamplingRatio = 4;             % Oversampling set to 4
uplinkParams.NormalizedPower = 'Off';           % No power normalization

% Define Uplink Dedicated Physical Data Channel (DPDCH)
uplinkParams.DPDCH.Enable = 'On';               % Enable DPDCH
uplinkParams.DPDCH.SlotFormat = 2;              % DPDCH slot format
uplinkParams.DPDCH.CodeCombination = 64;        % DPDCH spreading factor
uplinkParams.DPDCH.Power = 0;                   % Power in dB
uplinkParams.DPDCH.DataSource = 'CCTrCH';       % DPDCH data source is CCTrCH
% DPDCH carries the Coded Composite Transport Channel (CCTrCH) containing
% one or more transport channels. Since DPDCH source is specified as
% CCTrCH, define the CCTrCH containing DTCH and DCCH transport channels
% Build DTCH definition
TrCH(1).Name = 'DTCH';                          % Name of the transport channel
TrCH(1).CRC = '16';                             % CRC type
TrCH(1).CodingType = 'conv3';                   % The coding type and rate
TrCH(1).RMA = 256;                              % Rate matching attribute
TrCH(1).TTI = 20;                               % TTI in ms
TrCH(1).DataSource = 'PN9-ITU';                 % Tr channel data source
TrCH(1).ActiveDynamicPart = 1;                  % Index to active dynamic part
TrCH(1).DynamicPart(1) = struct('BlockSize',244,'BlockSetSize',244); % 1x244 blocks
% Build DCCH definition
TrCH(2).Name = 'DCCH';                          % Name of the transport channel
TrCH(2).CRC = '12';                             % CRC type
TrCH(2).CodingType = 'conv3';                   % The coding type and rate
TrCH(2).RMA = 256;                              % Rate matching attribute
TrCH(2).TTI = 40;                               % TTI in ms
TrCH(2).DataSource = 'PN9-ITU';                 % Tr channel data source
TrCH(2).ActiveDynamicPart = 1;                  % Index to active dynamic part
TrCH(2).DynamicPart(1) = struct('BlockSize',100,'BlockSetSize',100);   % 1x100 blocks
% Finalize CCTrCH structure array using the TrCH structures defined above
uplinkParams.DPDCH.CCTrCH.Name = 'DCH';         % Name of the CCTrCH
uplinkParams.DPDCH.CCTrCH.TrCH = TrCH;          % Assign DTCH/DCCH to CCTrCH

% Define DPCCH
uplinkParams.DPCCH.Enable = 'On';               % Enable DPCCH
uplinkParams.DPCCH.SlotFormat = 0;              % Slot format number
uplinkParams.DPCCH.Power = -5.46;               % Power in dB
uplinkParams.DPCCH.TPCData = 1;                 % TPC value
uplinkParams.DPCCH.TFCI = 0;                    % TFCI value
uplinkParams.DPCCH.FBIData = 0;                 % FBI value

% Define HSUPA channels
uplinkParams.HSUPA.Enable = 'On';               % Enable HSUPA channels
uplinkParams.HSUPA.CodeCombination = [4 4];     % E-DPDCH spreading factors
uplinkParams.HSUPA.EDPDCHPower = -5.46+12.04;   % Power in dB
uplinkParams.HSUPA.EDPCCHPower = -5.46+6.02;    % Power in dB
uplinkParams.HSUPA.RSNSequence = 0;             % RSN value
uplinkParams.HSUPA.ETFCI = 0;                   % E-TFCI value
uplinkParams.HSUPA.HappyBit = 0;                % Happy Bit value
uplinkParams.HSUPA.DataSource = 'EDCH';         % Data source is E-DCH
uplinkParams.HSUPA.EDCH.BlockSize = 2706;       % E-DCH transport block size
uplinkParams.HSUPA.EDCH.TTI = 2;                % E-DCH TTI in ms
uplinkParams.HSUPA.EDCH.Modulation = 'BPSK';    % Modulation scheme
uplinkParams.HSUPA.EDCH.DataSource = 'PN9-ITU'; % E-DCH Data source

% Define HS-DPCCH, but disable for FRC1 generation
uplinkParams.HSDPCCH.Enable = 'Off';            % Disable HS-DPCCH
uplinkParams.HSDPCCH.Power = 0;                 % Power in dB
uplinkParams.HSDPCCH.CQI = 0;                   % CQI value
uplinkParams.HSDPCCH.HARQACK = 1;               % HARQ ACK bit value
uplinkParams.HSDPCCH.UEMIMO = 0;                % UE not in MIMO mode

% The structure defined above can be used to generate the waveform:
frcWaveform2 = umtsUplinkWaveformGenerator(uplinkParams);

% For completeness we can see that the FRC definition structures obtained
% by the above two parameterization approaches are identical
    disp(['FRC1 definitions generated with and without using ' ...
    'umtsUplinkReferenceChannels function are the same.']);
FRC1 definitions generated with and without using umtsUplinkReferenceChannels function are the same.

Waveform Comparison

Compare the waveforms generated using both approaches described above and see that the generated waveforms are identical

    disp(['FRC1 waveforms generated with and without using' ...
    ' umtsUplinkReferenceChannels function are the same.']);
FRC1 waveforms generated with and without using umtsUplinkReferenceChannels function are the same.

Plot Spectrum

Plot the spectrum of the time domain signal frcWaveform.

chiprate = 3.84e6;   % Chip rate of the baseband waveform
spectrumPlot = dsp.SpectrumAnalyzer('SampleRate', chiprate*uplinkParams.OversamplingRatio);
spectrumPlot.Title = sprintf('Spectrum of Fixed Reference Channel %s waveform', frc);
spectrumPlot.YLimits = [-100,40];

Selected Bibliography

  1. 3GPP TS 25.141 "Base Station (BS) conformance testing (FDD)"
  2. 3GPP TS 25.211 "Physical channels and mapping of transport channels onto physical channels (FDD)"
  3. 3GPP TS 25.212 "Multiplexing and channel coding (FDD)"
  4. 3GPP TS 25.213 "Spreading and modulation (FDD)"