PDSCH Upper Phy Configurations
The PDSCH Upper Phy Configuration class receives any existing parameters for PDSCH upper Phy chain, based on which the rest of the parameters required to invoke PDSCH Upper Phy chain are generated as per 3GPP standards.
The Upper Phy config can be called with no arguments or all the parameters set to none, causing the class to generate all the parameters from scratch as shown below.
pdschParamGen = PDSCHUpperPhyConfiguration(verbose = True)
******** PDSCH Parameters *********
pdschMappingType: PDSCH-mapping-type-B
startSymbol: 9
numSymbols: 4
betaDMRS: 1
rank: 8
configurationType: Configuration-type-2
maxLength: len1
dmrsTypeAPosition: pos2
dmrsAdditionalPosition: pos2
Duration, ld: 4
Start symbol, l0: 9
Start symbol-1, l1: 11
num of Layers: 8
****************************************
****************************************
number of Layer-0: 4
numTargetBits-1: 30672
number of Layer-0: 4
numTargetBits-2: 30672
tbsize-1: 9480
tbsize-2: 9480
numTBs: 2
numCBs: 2
numLayers: 8 | LayerperTB: [4 4]
numRB: 213
coderate: 0.306640625
modOrder: 1
additionalOverhead: 0
numberTargetBits: 61344
****************************************
It can also be called with certain parameters already assigned around which the unassigned parameters are built.
numTBs = 2
numRB = 216
rank = 6
mcsTable = 'pdschTable2'
pdschParamGen = PDSCHUpperPhyConfiguration(numTBs = numTBs, numRB=numRB ,rank = rank, mcsTable = mcsTable, verbose = True )
******** PDSCH Parameters *********
pdschMappingType: PDSCH-mapping-type-B
startSymbol: 0
numSymbols: 4
betaDMRS: 1
rank: 6
configurationType: Configuration-type-1
maxLength: len1
dmrsTypeAPosition: pos3
dmrsAdditionalPosition: pos1
Duration, ld: 4
Start symbol, l0: 0
Start symbol-1, l1: 11
num of Layers: 6
****************************************
****************************************
number of Layer-0: 3
numTargetBits-1: 186624
number of Layer-0: 3
numTargetBits-2: 186624
tbsize-1: 129128
tbsize-2: 129128
numTBs: 2
numCBs: 16
numLayers: 6 | LayerperTB: [3 3]
numRB: 216
coderate: 0.6943359375
modOrder: 8
additionalOverhead: 0
numberTargetBits: 373248
****************************************
Tip
The Upper Phy config class calls Lower phy config within it.
- class toolkit5G.Configurations.PDSCHUpperPhyConfiguration(pdschMappingType=None, configurationType=None, dmrsTypeAPosition=None, maxLength=None, dmrsAdditionalPosition=None, l0=None, ld=None, l1=None, startSymbol=None, numSymbols=None, rank=None, scalingField=None, mcsTable=None, mcsIndex=None, additionalOverhead=None, numTBs=None, numRB=None, verbose=True)[source]
To accept existing Upper Phy parameters and Generate the rest of parameters required to invoke the PDSCH upper Phy Chain
- Parameters:
pdschMappingType (str) – Defines PDSCH mapping type \(\in \{\) ‘PDSCH-mapping-type-A’, ‘PDSCH-mapping-type-B’ \(\}\).
configurationType (str) – Defines configuration type for PDSCH \(\in \{\) ‘Configuration-type-1’, ‘Configuration-type-2’ \(\}\).
dmrsTypeAPosition (str) – Defines dmrsTypeAPosition parameter of PDSCH-DMRS \(\in \{\) ‘pos2’, ‘pos3’ \(\}\).
maxLength (int) – Defines the maxLength parameter of PDSCH-DMRS \(\in \{\) ‘len1’, ‘len2’ \(\}\).
dmrsAdditionalPosition (str) – Defines dmrsTypeAPosition parameter of PDSCH-DMRS \(\in \{\) “pos0”, “pos1”, “pos2”, “pos3” \(\}\).
l0 (int) – Defines \(l_0\) parameter of PDSCH-DMRS \(\in \{1, 2, 3, 4, 5, 6\}\).
ld (int) – Defines \(l_d\) parameter of PDSCH-DMRS. It takes values \(\in \{2,3,4,5,6,7,8,9,10,11,12,13\}\) based on
pdschMappingTypeandmaxLength.l1 (int) – Defines \(l_1\) parameter of PDSCH-DMRS \(\in \{11, 12\}\). Default value is 11.
pdschStartSymbol (int) – Defines the first symbols from where PDSCH is supported to be loaded.
numSymbols (int) – Defines the number of PDSCH symbols that are to be transmitted.
rank (int) – Defines rank/num of layers/streams to be transmitted. It must match number of ports \(\in \{1,2,\dots,8\}`for 'Configuration-type-1' and :math:\)in {1,2,dots,12}` for ‘Configuration-type-2’.
scalingField (int) – Transport Block Scaling Field. It accepts a string. Valid Strings are ‘00’, ‘01’, ‘10’.
mcsTable (str) – The Lookup table to be used for the selection of Modulation Order and code Rate It can take the strings ‘pdschTable1’, ‘pdschTable2’, ‘pdschTable3’, ‘pdschTable4’, ‘puschTable1’, ‘puschTable2’ ,’cqiTable1’, ‘cqiTable2’, ‘cqiTable3’, ‘cqiTable4’
.. Note:: – The chain uses the argument name pdschTable while config returns the argument name mcsTable. Check correctly to maintain consistency
mcsIndex (str) – Refers to the Modulation and Coding Scheme (MCS) Index. It takes Either a Scalar or a numpy array based on the argument passed as
pdschTable-If
pdschTableis passed as none, mcsIndex expects a numpy array of [modulation order, code Rate]-If pdschTable argument is passed , Based on it the following Table lowerbound and upperbound for mcs Index is followed
Table
LowerBound
Upperbound
PDSCH Table 1
0
28
PDSCH Table 2
0
27
PDSCH Table 3
0
28
PDSCH Table 4
0
26
PUSCH Table 1
0
27
PUSCH Table 2
0
27
CQI Table 1
1
15
CQI Table 2
1
15
CQI Table 3
1
15
CQI Table 4
1
15
additionalOverhead (int) – Additional Overheads that results in reduced number of available Resource Elements for data transfer. It takes a scalar or numpy integer.Valid values are 0, 6, 12 or 18.
numTBs (int) – The Physical layer processes either 1 or 2 Transport Blocks for each resource allocation. So it represents number of Transport Blocks to be processed.
numRB (int) – Number of Physical Resource Blocks allocated. It takes a positive scalar or numpy integer.