umts uplink waveform generation -凯发k8网页登录
this example shows how to generate an hsupa frc using lte toolbox™.
introduction
the lte 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, and , 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 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 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 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 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 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 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 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 function as shown above. the uplinkparams
structure defined below has the full list of the parameters supported by the 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 .
% 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 if(isequal(uplinkparams,preconfigparams)) disp(['frc1 definitions generated with and without using ' ... 'umtsuplinkreferencechannels function are the same.']); end
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
if(isequal(frcwaveform,frcwaveform2)) disp(['frc1 waveforms generated with and without using' ... ' umtsuplinkreferencechannels function are the same.']); end
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 = spectrumanalyzer(samplerate=chiprate*uplinkparams.oversamplingratio); spectrumplot.title = sprintf('spectrum of fixed reference channel %s waveform', frc); spectrumplot(frcwaveform);
selected bibliography
3gpp ts 25.141 "base station (bs) conformance testing (fdd)"
3gpp ts 25.211 "physical channels and mapping of transport channels onto physical channels (fdd)"
3gpp ts 25.212 "multiplexing and channel coding (fdd)"
3gpp ts 25.213 "spreading and modulation (fdd)"