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
pdschMappingType
andmaxLength
.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
pdschTable
is 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.