rf receiver modeling for lte reception -凯发k8网页登录
this example demonstrates how to model and test an lte rf receiver using lte toolbox™ and rf blockset™.
model description
an lte waveform is generated, filtered, transmitted through a propagation channel and fed into an rf blockset receiver model. the rf model can be assembled using commercially available parts. evm measurements are performed on the rf receiver output.
this example is implemented using matlab® and simulink®, which interact at runtime. the functional partition is as follows:
the measurement testbench is implemented with a matlab script using an rf system object as the device under test (dut). lte frames are streamed between testbench and dut.
generate lte waveform
in this section we generate the lte waveform using the lte toolbox. we use the reference measurement channel (rmc) r.6 as defined in ts 36.101 [ 1 ]. this rmc specifies a 25 resource elements (res) bandwidth, equivalent to 5 mhz. a 64 qam modulation is used. all res are allocated. additionally, ocng noise is enabled in unused res.
only one frame is generated. this frame will then be repeated a number of times to perform the evm measurements.
% configuration ts 36.101 25 res (5 mhz), 64-qam, full allocation rmc = ltermcdl('r.6'); rmc.ocngpdschenable = 'on'; % create enodeb transmission with fixed pdsch data rng(2) % fixed random seed (arbitrary) data = randi([0 1],sum(rmc.pdsch.trblksizes),1); % generate 1 frame, to be repeated to simulate a total of n frames [tx,~,info] = ltermcdltool(rmc,data); % 1 frame % calculate the sampling period and the length of the frame sampleperiod = 1/info.samplingrate; framelength = length(tx);
initialize simulation components
this section initializes some of the simulation components:
number of frames: this is the number of times the generated frame is repeated
preallocate result vectors
% number of simulation frames n >= 1 n = 3; % preallocate vectors for results for n-1 frames % note: evm is not measured in the first frame to avoid transient effects evmpeak = zeros(n,1); evmrms = zeros(n,1);
design rf receiver
the initial design of the rf receiver is done using the rf budget analyzer app. the receiver consists of a lna, a direct conversion demodulator, and a final amplifier. all stages include noise and non-linearity.
load rfb.mat
type show(rfb)
to display the initial design of the rf receiver in the rf budget analyzer app.
create rf model for simulation
from the rf budget object you can automatically create a model that can be used for circuit envelope simulation.
rfx = rfsystem(rfb); rfx.sampletime = sampleperiod; open_system(rfx)
extend the model of the rf receiver
you can modify the model created in the previous section to include additional rf impairments and components. you can modify the created rf blocket model as long as you do not change the input / output ports. this section loads a modified simulink model that performs the following functions:
channel model: includes free space path loss
rf receiver: includes direct conversion demodulator
adc and dc offset cancellation
you can open and inspect the modified model.
model = 'simrfv2_lte_receiver';
open_system(model)
simulate frames
this section simulates the specified number of frames. the rf system object simulates the circuit envelope model in accelerator
mode to decrease run time. after processing the first frame with the simulink model, its state is preserved and automatically passed to the successive frame.
the output of the simulink model is stored in the variable rx
, which is available in the workspace. any delays introduced to this signal are removed after performing synchronization. the evm is measured on the resulting waveform.
load rfs.mat evmalg.enableplotting = 'off'; cec.pilotaverage = 'testevm'; for n = 1:n [i,q] = rfs(tx); rx = complex(i,q); % synchronize to received waveform if n == 1 offset = ltedlframeoffset(rmc,squeeze(rx),'testevm'); end % compute and display evm measurements evmmeas = simrfv2_lte_receiver_evm_cal(rmc,cec,squeeze(rx),evmalg); evmpeak(n) = evmmeas.peak; evmrms(n) = evmmeas.rms; end
low edge evm, subframe 0: 2.884% high edge evm, subframe 0: 2.885% low edge evm, subframe 1: 2.845% high edge evm, subframe 1: 2.838% low edge evm, subframe 2: 2.800% high edge evm, subframe 2: 2.804% low edge evm, subframe 3: 2.764% high edge evm, subframe 3: 2.764% low edge evm, subframe 4: 2.773% high edge evm, subframe 4: 2.765% low edge evm, subframe 6: 2.845% high edge evm, subframe 6: 2.838% low edge evm, subframe 7: 2.832% high edge evm, subframe 7: 2.837% low edge evm, subframe 8: 2.778% high edge evm, subframe 8: 2.772% low edge evm, subframe 9: 2.883% high edge evm, subframe 9: 2.868% averaged low edge evm, frame 0: 2.822% averaged high edge evm, frame 0: 2.818% averaged evm frame 0: 2.822% averaged overall evm: 2.822% low edge evm, subframe 0: 3.026% high edge evm, subframe 0: 3.018% low edge evm, subframe 1: 2.944% high edge evm, subframe 1: 2.935% low edge evm, subframe 2: 2.772% high edge evm, subframe 2: 2.760% low edge evm, subframe 3: 2.795% high edge evm, subframe 3: 2.791% low edge evm, subframe 4: 2.907% high edge evm, subframe 4: 2.902% low edge evm, subframe 6: 2.833% high edge evm, subframe 6: 2.815% low edge evm, subframe 7: 2.792% high edge evm, subframe 7: 2.794% low edge evm, subframe 8: 2.786% high edge evm, subframe 8: 2.787% low edge evm, subframe 9: 2.806% high edge evm, subframe 9: 2.807% averaged low edge evm, frame 0: 2.849% averaged high edge evm, frame 0: 2.844% averaged evm frame 0: 2.849% averaged overall evm: 2.849% low edge evm, subframe 0: 2.953% high edge evm, subframe 0: 2.961% low edge evm, subframe 1: 2.899% high edge evm, subframe 1: 2.898% low edge evm, subframe 2: 2.776% high edge evm, subframe 2: 2.780% low edge evm, subframe 3: 2.840% high edge evm, subframe 3: 2.858% low edge evm, subframe 4: 2.853% high edge evm, subframe 4: 2.859% low edge evm, subframe 6: 2.896% high edge evm, subframe 6: 2.878% low edge evm, subframe 7: 2.804% high edge evm, subframe 7: 2.801% low edge evm, subframe 8: 2.777% high edge evm, subframe 8: 2.778% low edge evm, subframe 9: 2.904% high edge evm, subframe 9: 2.896% averaged low edge evm, frame 0: 2.855% averaged high edge evm, frame 0: 2.856% averaged evm frame 0: 2.856% averaged overall evm: 2.856%
visualize measured evm
this section plots the measured peak and rms evm for each simulated frame.
figure plot((1:n),100*evmpeak,'o-') title('evm peak %') xlabel('number of frames') figure plot((1:n),100*evmrms,'o-') title('evm rms %') xlabel('number of frames')
cleaning up
close the simulink model and remove the generated files.
release(rfs) close_system(rfs,0)
appendix
this example uses the following helper function:
selected bibliography
3gpp ts 36.101 "user equipment (ue) radio transmission and reception"
see also
| vga | | |