Physical Downlink Shared Channel-DMRS
This modules generates a resource grid with demodulation reference signal (DMRS) for physical downlink shared channel (PDSCH) mapped to a resource grid.
Generating PDSCH-DMRS Resource Grid:
betaDMRS = 1
pdschMappingType = "PDSCH-mapping-type-A" # "PDSCH mapping type A" or "PDSCH mapping type B"
configurationType = "Configuration-type-1" # "Configuration-type-1" or "Configuration-type-2"
dmrsTypeAPosition = "pos2" # first DMRS symbol location
dmrsAdditionalPosition = "pos0" # Number of additional DMRS
maxLength = "len2"
## Duration of DMRS
ld = 6 # number of symbols for DMRS transmission.
l0 = 2
l1 = 11
rank = 4
numRBs = 20
scs = 30000
slotNumber = 11
scramblingID = 13544
nSCID = 1
rmDMRSpdsch = ResourceMapperDMRSPDSCH(pdschMappingType, configurationType, dmrsTypeAPosition, maxLength, dmrsAdditionalPosition, l0, ld, l1)
resourceGrid = rmDMRSpdsch(numRBs, rank, slotNumber, scramblingID, nSCID)
Display the DMRS-PDSCH Resource Grid:
fig0, ax0 = rmDMRSpdsch.displayResourceGrid()
Display the DMRS-PDSCH CDM Grid:
fig1, ax1 = rmDMRSpdsch.displayCDMPattern()
Generating DMRS-PDSCH Resource Grid:
pdschMappingType = "PDSCH-mapping-type-B" # PDSCH mapping types indicate whether reference for resource allocation is symbol = 0 or configures symol location
maxLength = "len2" # Indicate whether single symbol DMRS or Double symbol DMRS is used.
betaDMRS = 1
configurationType = "Configuration-type-2" # Control the density and pilot location of DMRS in Resource Grid
dmrsTypeAPosition = "pos3" # first DMRS symbol location
dmrsAdditionalPosition = "pos0" # Number of additional DMRS
l0 = 4 # DMRS symbol-0
l1 = 11 # DMRS symbol-1
ld = 7 # Duration of DMRS
rank = 12 # number of layers to transmit
numRBs = 12
scs = 30000
slotNumber = 11
scramblingID = 13544 # or Cell-ID for Initial Access
nSCID = 1
rmDMRSpdsch = ResourceMapperDMRSPDSCH(pdschMappingType, configurationType, dmrsTypeAPosition, maxLength, dmrsAdditionalPosition, l0, ld, l1)
resourceGrid = rmDMRSpdsch(numRBs, rank, slotNumber, scramblingID, nSCID)
Display the DMRS-PDSCH Resource Grid:
fig0, ax0 = rmDMRSpdsch.displayResourceGrid()
Display the DMRS-PDSCH CDM Grid:
fig1, ax1 = rmDMRSpdsch.displayCDMPattern()
- class toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH(pdschMappingType, configurationType, dmrsTypeAPosition, maxLength, dmrsAdditionalPosition, l0, duration, l1=11)[source]
Generates the resource grid loaded with PDSCH-DMRS as per Section 7.4.1.1.2 [3GPPTS38211_pdschDMRS].
- 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\}\).
duration (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.
Important
The combination of
nrofPorts
,density
andcdmType
shall be selected based on Table 7.4.1.5.3-1 of [3GPPTS38211_csirsRM].Important
For row 5 and 7 of Table 7.4.1.5.3-1 from [3GPPTS38211_pdschDMRS]
cdmType
should be configured as “fd-CDM21”.- Input:
numResourceBlocks (int) – Defines number of physical resource blocks (PRBs) occupied by DMRS-PDSCH.
numPorts (int) – Defines number of ports \(\in \{1,2,\dots,8\}\) for ‘Configuration-type-1’ and \(\in \{1,2,\dots,12\}\) for ‘Configuration-type-2’.
slotNumber (int) – Defines the slot number within a frame where DMRS-PDSCH is loadedS \(n_{s,f}^{\mu} \in \{0,1,2,\) \(\dots,10*2^{\mu}-1\}\) where \({\mu = \frac{\Delta f}{15 kHz}}\).
scramblingID (int) – Defines the scramblingID \(\in \{0,1,\dots,65535\}\).
nSCID (int) – Defines the quantity \(\text{𝑛}_{\text{SCID}} \in \{0,1\}\) is given by the DM-RS sequence initialization field.
betaDMRS (float) – Defines power scaling factor (default value = 1) for DMRS-PDSCH. Default value is 1.
- Output:
[
numPorts
, 14,numResourceBlocks*12
], np.complex64 – Demodulation reference signal (DMRS) for PDSCH (DMRS-PDSCH) Grid.- Raises:
ValueError – [Error-PDSCH DMRS RM]: ‘maxLength’ must be ‘len1’ or ‘len2’!
ValueError – [Error-PDSCH DMRS RM]: maxLength must be an string!
ValueError – [Error-PDSCH DMRS RM]: ‘dmrsTypeAPosition’ must be ‘pos2’ or ‘pos3’!
ValueError – [Error-PDSCH DMRS RM]: dmrsTypeAPosition must be an string!
ValueError – [Error-PDSCH DMRS RM]: ‘configurationType’ must be ‘Configuration-type-1’ or ‘Configuration-type-2’!
ValueError – [Error-PDSCH DMRS RM]: configurationType must be an string!
ValueError – [Error-PDSCH DMRS RM]: ‘pdschMappingType’ must be ‘PDSCH-mapping-type-A’ or ‘PDSCH-mapping-type-B’!
ValueError – [Error-PDSCH DMRS RM]: pdschMappingType must be an string!
ValueError – [Error-PDSCH DMRS RM]: Invalid ‘port-Index’ entered! Number of dmrs-port are ” + str(maxPorts) + “!
ValueError – [Error-PDSCH DMRS RM]: Invalid ‘port-Index’ entered! Number of dmrs-port are ” + str(maxPorts) + “!
ValueError – [Error-PDSCH DMRS]: What this hell!
ValueError – [Error-PDSCH DMRS RM]: betaDMRS must be an number > 0!
ValueError – [Error-PDSCH DMRS RM]: numRBs must be an integer!
ValueError – [Error-PDSCH DMRS RM]: For single symbol DMRS, ‘numPorts’ must be in interval [0 ” + str(maxPorts) + “]!
ValueError – [Error-PDSCH DMRS RM]: numPorts must be an integer!
ValueError – [Error-PDSCH DMRS RM]: For ” + self.__pdschMappingType + ” and ” + self.__maxLength + “, ‘duration’ must satisfy: ” + str(minLD) + “< ‘duration’ < ” + str(maxLD) + “!
ValueError – [Error-PDSCH DMRS RM]: ‘duration’ must be an int!
ValueError – [Error-PDSCH DMRS]: Something went wrong while setting ‘duration’!
ValueError – [Error-PDSCH DMRS RM]: ‘l1’ must be 11 or 12!
ValueError – [Error-PDSCH DMRS]: Something went wrong while setting ‘l0’!
Exception – [Error-PDSCH DMRS]: ‘l0’ must be in interval [1,6] for ‘PDSCH-mapping-type-B’ with double symbols DMRS!
ValueError – [Error-PDSCH DMRS RM]: ‘dmrsTypeAPosition’ must be ‘pos2’ or ‘pos3’!
ValueError – [Error-PDSCH DMRS RM]:
dmrsTypeAPosition
must be an string!
- References: