Reply To: Vienna 5G LL Simulator – New Release 1.2

#14381
Roaa Ali
Participant

Dear Bashar,
thank you for your response
%% Topology
% Specifiy all the nodes in ascending order with starting
% index of 1 (BS0 or UE0 is not allowed).
scStr.topology.nodes = [‘BS1,UE1,UE2,UE3,UE4,UE5,UE6,UE7,UE8,UE9,UE10,UE11,UE12,UE13,UE14,UE15,UE16,UE17,UE18,UE19,UE20,UE21,UE22,UE23,UE24,UE25,UE26,UE27,UE28,UE29,UE30,UE31,UE32,UE33,UE34’];

% Primary (desired) links
scStr.topology.primaryLinks = [‘BS1:UE1,’…
‘BS1:UE2,’…
‘BS1:UE3,’…
‘BS1:UE4,’…
‘BS1:UE5,’…
‘BS1:UE6,’…
‘BS1:UE7,’…
‘BS1:UE8,’…
‘BS1:UE9,’…
‘BS1:UE10,’…
‘BS1:UE11,’…
‘BS1:UE12,’…
‘BS1:UE13,’…
‘BS1:UE14,’…
‘BS1:UE15,’…
‘BS1:UE16,’…
‘BS1:UE17,’…
‘BS1:UE18,’…
‘BS1:UE19,’…
‘BS1:UE20,’…
‘BS1:UE21,’…
‘BS1:UE22,’…
‘BS1:UE23,’…
‘BS1:UE24,’…
‘BS1:UE25,’…
‘BS1:UE26,’…
‘BS1:UE27,’…
‘BS1:UE28,’…
‘BS1:UE29,’…
‘BS1:UE30,’…
‘BS1:UE31,’…
‘BS1:UE32,’…
‘BS1:UE33,’…
‘BS1:UE34,’…
];

% Links for Joint Tranmission and Detection (future work)
scStr.topology.jointTxRxLinks = [”];

% Interference Links
scStr.topology.interferenceGeneration = ‘Automatic’;

scStr.topology.attenuation = 300; % in dB, set a very high attenuation level to virtually decouple the two BS
scStr.topology.interferingLinks = [];

%% General Simulation Parameters
% set link types to simulate
scStr.simulation.simulateDownlink = true; % downlink
scStr.simulation.simulateUplink = false; % uplink
scStr.simulation.simulateD2D = false; % device to device links

scStr.simulation.frameStructure = ‘FDD’; % ‘TDD’ or ‘FDD’

% Plot options
scStr.simulation.plotResultsFor = [1];
scStr.simulation.plotOverSNR = false;
scStr.simulation.plotPAPR = false;

scStr.simulation.saveData = false;

% Define a sweep parameter
scStr.simulation.sweepParam = {‘simulation.txPowerBaseStation’}; % Define the parameter to sweep over. This can be almost any simulation parameter.
% Most likely it will be the pathloss to obtain results over SNR.

scStr.simulation.sweepValue = linspace(0, 55, 8); % Define parameter values to sweep over, in dB. A good starting point for the pathloss is 150 to 110
scStr.simulation.applySweepingTo = [1];

% Number of simulation frames
scStr.simulation.nFrames = 20; % Number of frames to simulate per sweep value, adjust to obtain sufficiently small confidence intervals.

%% Physical Transmission Parameters
scStr.simulation.centerFrequency = 2.5e9; % center frequency

scStr.simulation.txPowerBaseStation = [30]; % per BS; base station total transmit power in dBm
scStr.simulation.txPowerUser = [30]; % per UE; user total transmit power in dBm

scStr.simulation.codebook = ‘5G’; % LTE or 5G
scStr.simulation.nAntennasBaseStation = [2]; % per BS; number of antennas at the base station
scStr.simulation.antennaConfiguration = {[1,1],[1,1]}; % per BS: if the 5G codebook is selected, each vector represents the number of horizontal and vertical antennas[N1,N2]
% Supported configurations (N1,N2):
% 4 Ports: (2,1)
% 8 Ports: (2,2), (4,1)
% 12 Ports: (3,2),(6,1)
% 16 Ports: (4,2), (8,1)
% 24 Ports: (4,3), (6,2),(12,1)
% 32 Ports: (4,4), (8,2), (16,1)
scStr.simulation.nAntennasUser = [2]; % per UE; number of antennas at the user
scStr.simulation.userVelocity = [0.83, 0.83, 0.83,0.83,0.83, 0.83, 0.83,0.83,0.83 0.83, 0.83,0.83,0.83, 0.83, 0.83,0.83,0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83, 0.83,0.83,0.83, 0.83,0.83,0.83,0.83,0.83]; % per UE; velocity in m/s

% Links to UE1 and UE3 have pathloss of 80, UE2 and UE4 of 90, and UE5 and UE6 of 110 and 115, respectively (cell edge).
scStr.simulation.pathloss = [-25,-20,-15,-10,-5,0,5,10,20,30,40,50,60,70,80,90,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195]; % per Link, channel pathloss in dB, this is most likely swept over

% Nonlinearity model
scStr.simulation.nonlinearity = false; % Apply Rapp’s PA nonlinear model: Rapp, C. “Effects of HPA-nonlinearity on a 4-DPSK/OFDM-signal for a digital sound broadcasting signal.”
scStr.simulation.amplifierOBO = [1]; % Amplifier output back-off, per Link, in dB
scStr.simulation.smoothnessFactor = [3]; % Smoothness factor for the Rapp model, per Link, >=0

%% Channel Parameters
scStr.channel.spatialChannelModel =false; % for a 3D channel, this parameter has to be set to ture
scStr.channel.dopplerModel = ‘Jakes’;
scStr.channel.timeSubsamplingFactor = 10;
scStr.channel.correlatedFrames = false;
scStr.channel.spatialCorrelation = ‘none’;
scStr.channel.nPaths = 50;
scStr.channel.powerDelayProfile = ‘PedestrianA’;
scStr.channel.K = 0;
scStr.channel.delta = 1;

%% Channel Estimation and Equalization Parameters
scStr.simulation.channelEstimationMethod = ‘Approximate-Perfect’;
scStr.simulation.noisePowerEstimation = false;
scStr.simulation.pilotPatternDownlink = ‘Diamond’; % pilot symbol allocation pattern for Downlink links
scStr.simulation.pilotPatternUplink = ‘LTE Uplink’; % pilot symbol allocation pattern for Uplink links
scStr.simulation.pilotSpacingFrequency = 6; % pilot spacing in frequency domain (may be fractions of subcarriers)
scStr.simulation.pilotSpacingTime = 3.5; % pilot spacing in time domain (may be fraction of symbols)
scStr.simulation.pilotSequenceLength = 12; % length of orthogonal pilot symbol sequence
scStr.simulation.receiverTypeMIMO = ‘MMSE’;

%% MIMO Parameters
% Layer mapping
scStr.layerMapping.mode = ‘5G’;
scStr.layerMapping.table.Uplink = {1;2;[1,2]};
scStr.layerMapping.table.Downlink = {1;2;[1,2]};

% MIMO mode
scStr.modulation.transmissionMode = ‘CLSM’;
scStr.schedule.multiuserMode.Downlink = {‘MUST’}; % per BS. Right now ‘MUST’, ‘ZF-MUMIMO’, ‘BD-MUMIMO’ and ‘MRT-MUMIMO’ are supported
scStr.schedule.multiuserMode.Uplink = {‘none’};
scStr.modulation.delayDiversity = 1;

%% Feedback Parameters
scStr.feedback.delay = 0;
scStr.feedback.averager.Type = ‘miesm’;
scStr.modulation.cqiTable = 0;

% for the custom transmission mode the following parameters are used to configure the feedback
scStr.feedback.enable = true; % this parameter is ignored, the feedback is automatically enabled for the CLSM transmission mode
scStr.feedback.pmi = true;
scStr.feedback.ri = false;
scStr.feedback.cqi = true;

scStr.modulation.nStreams = [2]; % per Link; number of active spatial streams
scStr.modulation.mcs = [15]; % parameter is unused
% Per link, precoder selection (used when feedback is disabled)
scStr.modulation.precodingMatrix{1} = 1/sqrt(2)*eye(2,2); % per Link; employed precoding matrix

% MUST power allocation
scStr.modulation.MUSTIdx = [2]; % per BS; the power allocation index of the 3GPP MUST mode = {0, 1, 2, 3}.

%% Modulation Parameters
% waveform
scStr.modulation.waveform = {‘OFDM’};
scStr.modulation.spreadingTransformDownlink = ‘none’;
scStr.modulation.spreadingTransformUplink = ‘none’;
% parameters for FBMC
scStr.modulation.prototypeFilter = ‘PHYDYAS-OQAM’; % unused for OFDM
% Parameters for UFMC
scStr.modulation.nSubcarriersPerSubband = [12]; % number of subcarriers per subband

% time and bandwidth setup (number of subcarriers, frame duration, CP
% length, sampling rate)
scStr.modulation.numberOfSubcarriers = [72]; % per BS; number of used subcarriers
scStr.modulation.subcarrierSpacing = [15e3]; % per BS; per base station in Hz
scStr.modulation.nSymbolsTotal = [15]; % per BS; total number of time-symbols per frame, the frame duration will be nSymbolsTotal/subcarrierSpacing
scStr.modulation.nGuardSymbols = [1]; % per BS; select how many of the total time-symbols will be used as guard symbols (cyclic prefix in OFDM)
scStr.modulation.samplingRate =’Automatic’ ; % sampling rate has to be the same for all nodes (across all base stations):
% either numeric value for manual setting or ‘Automatic’ obj.PilotMatrix = zeros(nSubcarriers, nMCSymbols, nAntennas);
%% Channel Coding Parameters
% All links are operating with the same coding parameters, enter it only once.
scStr.coding.code = {‘LDPC’};
scStr.coding.decoding = {‘PWL-Min-Sum’};
scStr.coding.decodingIterations = [16];
scStr.coding.LLRsCalculationMethod = ‘Max-Log’;
scStr.coding.softBufferRatio = [1];

%% Schedule
% static schedule per base station

% BS1 does Orthogonal Multiple Access
scStr.schedule.fixedScheduleDL{1} = []; % schedule for BS1 Downlink
scStr.schedule.fixedScheduleUL{1} = []; % No uplink for BS1

% BS2 does MUST operation
scStr.schedule.fixedScheduleDL{1} = [‘UE1:8,UE2:4,UE3:4,UE4:4,UE5:4,UE6:4,UE7:4,UE8:4,UE9:4,UE10:4,UE11:4,UE12:4,UE13:4,UE14:4,UE15:4,UE16:4,UE17:4,UE18:UE16,UE19:UE17,UE20:UE15,UE21:UE14,UE22:UE13,UE23:UE12,UE24:UE11,UE25:UE10,UE26:UE9,UE27:UE9,UE28:UE8,UE29:UE7,UE30:UE6,UE31:UE5,UE32:UE4,UE33:UE2,UE34:UE1’]; % schedule for BS2 Downlink
scStr.schedule.fixedScheduleUL{1} = []; % No uplink for BS2.

ROAA