|
||||||||||||||||||||
PDSCH (Physical Data Shared Channel) in detailThis page is about the process of converting user data into PDSCH data and transmit it through each transmission antenna. This would be one of the most complicated process in NR process and a lot of factors are involved in this process. Followings are those factors getting involved in this process. The critical (core part) is Transport Process and DCI and RRC is to provide (configure) some parameters for the transport process. In LTE, most of the transport parameters are fixed or automatically determined by transport process algorithm and only small numbers of parameters are configured by DCI but RRC message does not influence very much in the process. However, in NR many of the transport process parameters are provided (configure) not only by DCI but also by RRC message, meaning that the process would become more flexible but troubleshoot for the process will become more challenging.
PDSCH Transport ProcessFollowing diagram outlines the PDSCH (Physical Downlink Shared Channel) Transport Process and shows corresponding 3GPP specification for each process. Following is brief summary for each step.
Each step in the process is vital for ensuring efficient and reliable communication over the PDSCH. (1) Transport block CRC attachmentThe transport block CRC attachment in 5G PDSCH channel processing is a step that allows the UE to detect errors in the received transport block, ensuring reliable data transmission over the wireless channel. a CRC is calculated for the transport block to enable error detection at the receiver (UE). The CRC is a fixed-size checksum generated by applying a polynomial function to the transport block data. In 5G NR, a 24-bit or 16 bit CRC is attached to the transport block depending on the size of the transport block. Let's break this down into steps:
This CRC attachment process is essential for ensuring reliable data transmission over the wireless channel by allowing error detection at the UE. (2) LDPC base graph selectionLDPC graph selection is the step that enables efficient channel coding tailored to the transport block size, ensuring reliable data transmission and optimized performance. 5G NR specifies two base graphs for LDPC encoding, known as Base Graph 1 and Base Graph 2. Each base graph has a predefined size, with Base Graph 1 being larger than Base Graph 2. The selection of a base graph depends on the size of the transport block being transmitted over the PDSCH. If the transport block size is larger than a certain threshold, Base Graph 1 is used; otherwise, Base Graph 2 is employed. The smaller Base Graph 2 is more suitable for smaller transport blocks, as it offers a better trade-off between complexity and performance. LDPC BaseGraph type is determined by Transport Size (A) and Code Rate(R) based on following criteria. If I represent this as areas in coordinate, it would become as follows.
(3) Code block segmentation And Code Block CRC AttachmentThis step is to ensure efficient and reliable data transmission by dividing large transport blocks into smaller segments and providing error detection capabilities at the code block level. We can think of this with a few different perspectives/steps summarized below.
The defailed steps for this process is as follows. i) Determine the max size of the code block (Kcb) : The max size of the code block depends on LDPC base graph type as follows.
ii) Determine the number of Codeblocks if B(Transport block size) < Kcb(Max Codeblock size) L = 0 C (number of codeblocks) = 1 B' = B // this mean 'No Segmentation'. else L = 24 C = Ceiling(B/(Kcb - L)) B' = B + C * L iii) Determine the number of bits in each code block K'(the number of bits in each code block) = B'/C iv) Determine Kb For LDPC base graph type 1 Kb = 22 For LDPC base graph type 2 if B (Transport blocksize) > 640 Kb = 10 else if B (Transport blocksize) > 560 Kb = 9 else if B (Transport blocksize) > 192 Kb = 8 else Kb = 6 v) find the minimum value of Z in all sets of lifting sizes in [38.212-Table 5.3.2-1: Sets of LDPC lifting size] vi) denote Zc such that (Kb * Zc) >= K' vii) set K = 22 Zc for LDPC base graph 1 K = 10 Zc for LDPC base graph 2 viii) perform segmentation and add CRC bits s = 0 // s = bit position in B (transport block) for r = 0 to C-1 for k = 0 to K'-L-1 crk = bs s = s + 1 end for if C > 1 // Do this if the number of the code block is more than 1 Calculate pr0,pr1,pr2,...,pr(L-1) using the sequence cr0,cr1,cr2,...,cr(K'-L-1) and g_CRC24B(D) for k = K'-L to K'-1 // Append CRC bit crk = pr(k+L-K') end for end if for k = K' to K-1 // Insertion of filler bis crk = < NULL > end for end for High level summary of the procedure listed above in pseudocode is as follows :
(4) Channel CodingDetailed procedure of LDPC as described in 38.212 - 5.3.2 which is out of scope of this section (Beyond my knowledge as well :). Overall process can be summarized as below.
(5) Rate MatchingThe Purpose of Rate matching is to adapts the output data rate of the channel encoder (LDPC) to match the available resources allocated for transmission in the time-frequency grid of the PDSCH. It can be describe in a few different steps as follows :
(6) Code Block ConcatenationThis is the step that combines the multiple code blocks resulting from the previous processing steps into a single data stream for transmission. After rate matching, the processed code blocks are combined into a single data stream. The concatenation is performed in a specific order to ensure that the receiver (UE) can correctly separate and decode the individual code blocks. Typically, the code blocks are concatenated in the order they were segmented from the original transport block. (7) ScramblingScrambling process is the step that introduces randomness to the transmitted data, ensuring uniform power distribution, interference management, data privacy, and accurate channel estimation. Scrambling and descrambling operations are performed at the transmitter and receiver, respectively, using the same cell-specific scrambling sequence. Scrambling introduces randomness to the transmitted data by applying a pseudo-random binary sequence (PRBS) to the data stream. This operation ensures that the transmitted signal has a uniform power distribution across different frequency and time resources. Scrambling also aids in mitigating inter-cell interference, improving data privacy, and allowing the receiver (UE) to perform accurate channel estimation. Some of highlights of this process are :
The high leve summary of the above illustration is as follows :
(8) ModulationThe modulation step is essential for converting the binary data stream into complex symbols suitable for wireless transmission. The choice of modulation scheme affects the data rate, spectral efficiency, and robustness against noise and interference. In 5G, 4 different modulation schemes are supported as of now.
The choice of modulation scheme depends on factors such as channel conditions, link adaptation, and UE capabilities. (9) Layer MappingLayer mapping is the step that distributes the modulated symbols across one or multiple layers for transmission using multiple antennas. It aims to improve the spectral efficiency, reliability, and capacity of the wireless communication system by utilizing advanced antenna techniques such as MIMO and beamforming. The number of layers depends on the availability of physical antenna, UE capability, and channel conditions. The 5G NR standard supports up to 8 layers per carrier as of now. The number of layers can be dynamically adapted based on the current system requirements and channel conditions.
< 38.211 - Table 7.3.1.3-1: Codeword-to-layer mapping for spatial multiplexing. >
(10) Antenna Port MappingOnce the data path through the layer mapping process, the data from each layer are mapped to each Antenna Port. When CSI is not applied, the data maps to physical antenna port as below. When CSI is applied, the data from layer mapper are first mapped to each of CSI antenna port as shown below. The determination of W(i) from reportQuantity of CSI-ReportConfig can be summarized as shown below.
(11) Mapping to VRBFor each antenna step, a virtual resource grid is created. Within the resource grid, fill out each of the resource elements(RE) with PDSCH data from the RE at the lowest frequency to higher frequency. Once it reaches the RE at the highest frequency of the assigned PDSCH resource block, move to the RE at the lowest frequency of next OFDM symbol. But you should not use the REs that are assigned for following purpose :
(12) Mapping from virtual to physical resource blocksThis step is the process that maps (converts) the virtual resource block(resource grid) into physical resource block(resource grid). Two different types of mappings are supported in 5G as described below.
This is illustration of Non-Interleaved mapping from VRB to PRB This is illustration of Interleaved mapping from VRB to PRB RRC Parameters< PDSCH-Config relase 15 > PDSCH-Config ::= SEQUENCE { dataScramblingIdentityPDSCH INTEGER (0..1007) OPTIONAL, dmrs-DownlinkForPDSCH-MappingTypeA SetupRelease { DMRS-DownlinkConfig } OPTIONAL, dmrs-DownlinkForPDSCH-MappingTypeB SetupRelease { DMRS-DownlinkConfig } OPTIONAL, tci-StatesToAddModList SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-State OPTIONAL, -- Need N tci-StatesToReleaseList SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-StateId OPTIONAL, -- Need N vrb-ToPRB-Interleaver ENUMERATED {n2, n4}, resourceAllocation ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch}, pdsch-AllocationList SEQUENCE (SIZE(1..maxNrofDL-Allocations)) OF PDSCH-TimeDomainResourceAllocation OPTIONAL, pdsch-AggregationFactor ENUMERATED { n2, n4, n8 } OPTIONAL, rateMatchPatternToAddModList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern OPTIONAL, -- Need N rateMatchPatternToReleaseList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId OPTIONAL, -- Need N rateMatchPatternGroup1 SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId OPTIONAL, -- Need R rateMatchPatternGroup2 SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId OPTIONAL, -- Need R rbg-Size ENUMERATED {config1, config2}, mcs-Table ENUMERATED {qam64, qam256}, maxNrofCodeWordsScheduledByDCI ENUMERATED {n1, n2} OPTIONAL, -- Need R prb-BundlingType CHOICE { static SEQUENCE { bundleSize ENUMERATED { n4, wideband } OPTIONAL }, dynamic SEQUENCE { bundleSizeSet1 ENUMERATED { n4, wideband, n2-wideband, n4-wideband } OPTIONAL, -- Need S bundleSizeSet2 ENUMERATED { n4, wideband } OPTIONAL -- Need S } }, zp-CSI-RS-ResourceToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-Resource OPTIONAL, -- Need N zp-CSI-RS-ResourceToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-ResourceId OPTIONAL, -- Need M aperiodic-ZP-CSI-RS-ResourceSetsToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSetId OPTIONAL, -- Need N sp-ZP-CSI-RS-ResourceSetsToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N sp-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Sets)) OF ZP-CSI-RS-ResourceSetId OPTIONAL, -- Need N ... } When the UE is scheduled to receive PDSCH by a DCI, the Time domain resource assignment field of the DCI provides a row index of a higher layer configured table pdsch-symbolAllocation, where the indexed row defines the slot offset K0, the start and length indicator SLIV, and the PDSCH mapping type to be assumed in the PDSCH reception.
< PDSCH-Config relase 17 > PDSCH-Config ::= SEQUENCE { dataScramblingIdentityPDSCH INTEGER (0..1023) OPTIONAL, -- Need S dmrs-DownlinkForPDSCH-MappingTypeA SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M dmrs-DownlinkForPDSCH-MappingTypeB SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M tci-StatesToAddModList SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-State OPTIONAL, -- Need N tci-StatesToReleaseList SEQUENCE (SIZE(1..maxNrofTCI-States)) OF TCI-StateId OPTIONAL, -- Need N vrb-ToPRB-Interleaver ENUMERATED {n2, n4} OPTIONAL, -- Need S resourceAllocation ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch}, pdsch-TimeDomainAllocationList SetupRelease { PDSCH-TimeDomainResourceAllocationList } OPTIONAL, -- Need M pdsch-AggregationFactor ENUMERATED { n2, n4, n8 } OPTIONAL, -- Need S rateMatchPatternToAddModList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPattern OPTIONAL, -- Need N rateMatchPatternToReleaseList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId OPTIONAL, -- Need N rateMatchPatternGroup1 RateMatchPatternGroup OPTIONAL, -- Need R rateMatchPatternGroup2 RateMatchPatternGroup OPTIONAL, -- Need R rbg-Size ENUMERATED {config1, config2}, mcs-Table ENUMERATED {qam256, qam64LowSE} OPTIONAL, -- Need S maxNrofCodeWordsScheduledByDCI ENUMERATED {n1, n2} OPTIONAL, -- Need R prb-BundlingType CHOICE { staticBundling SEQUENCE { bundleSize ENUMERATED { n4, wideband } OPTIONAL -- Need S }, dynamicBundling SEQUENCE { bundleSizeSet1 ENUMERATED { n4, wideband, n2-wideband, n4-wideband } OPTIONAL, -- Need S bundleSizeSet2 ENUMERATED { n4, wideband } OPTIONAL -- Need S } }, zp-CSI-RS-ResourceToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-Resource OPTIONAL, -- Need N zp-CSI-RS-ResourceToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-Resources)) OF ZP-CSI-RS-ResourceId OPTIONAL, -- Need N aperiodic-ZP-CSI-RS-ResourceSetsToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) OF ZP-CSI-RS-ResourceSetId OPTIONAL, -- Need N sp-ZP-CSI-RS-ResourceSetsToAddModList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N sp-ZP-CSI-RS-ResourceSetsToReleaseList SEQUENCE (SIZE (1..maxNrofZP-CSI-RS-ResourceSets)) OF ZP-CSI-RS-ResourceSetId OPTIONAL, -- Need N p-ZP-CSI-RS-ResourceSet SetupRelease { ZP-CSI-RS-ResourceSet } OPTIONAL,--Need M ..., [[ maxMIMO-Layers-r16 SetupRelease { MaxMIMO-LayersDL-r16 } OPTIONAL, -- Need M minimumSchedulingOffsetK0-r16 SetupRelease { MinSchedulingOffsetK0-Values-r16 } OPTIONAL, -- Need M -- Start of the parameters for DCI format 1_2 introduced in V16.1.0 antennaPortsFieldPresenceDCI-1-2-r16 ENUMERATED {enabled} OPTIONAL, -- Need S aperiodicZP-CSI-RS-ResourceSetsToAddModListDCI-1-2-r16 SEQUENCE (SIZE (1..maxNrofZP-CSI-RS- ResourceSets)) OF ZP-CSI-RS-ResourceSet OPTIONAL, -- Need N aperiodicZP-CSI-RS-ResourceSetsToReleaseListDCI-1-2-r16 SEQUENCE (SIZE (1..maxNrofZP-CSI-RS -ResourceSets)) OF ZP-CSI-RS-ResourceSetId dmrs-DownlinkForPDSCH-MappingTypeA-DCI-1-2-r16 SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M dmrs-DownlinkForPDSCH-MappingTypeB-DCI-1-2-r16 SetupRelease { DMRS-DownlinkConfig } OPTIONAL, -- Need M dmrs-SequenceInitializationDCI-1-2-r16 ENUMERATED {enabled} OPTIONAL, -- Need S harq-ProcessNumberSizeDCI-1-2-r16 INTEGER (0..4) OPTIONAL, -- Need R mcs-TableDCI-1-2-r16 ENUMERATED {qam256, qam64LowSE} OPTIONAL, -- Need S numberOfBitsForRV-DCI-1-2-r16 INTEGER (0..2) OPTIONAL, -- Need R pdsch-TimeDomainAllocationListDCI-1-2-r16 SetupRelease { PDSCH-TimeDomainResourceAllocationList-r16 } OPTIONAL, -- Need M prb-BundlingTypeDCI-1-2-r16 CHOICE { staticBundling-r16 SEQUENCE { bundleSize-r16 ENUMERATED { n4, wideband } OPTIONAL -- Need S }, dynamicBundling-r16 SEQUENCE { bundleSizeSet1-r16 ENUMERATED { n4, wideband, n2-wideband, n4-wideband }OPTIONAL,--Need S bundleSizeSet2-r16 ENUMERATED { n4, wideband } OPTIONAL -- Need S } } OPTIONAL, -- Need R priorityIndicatorDCI-1-2-r16 ENUMERATED {enabled} OPTIONAL, -- Need S rateMatchPatternGroup1DCI-1-2-r16 RateMatchPatternGroup OPTIONAL, -- Need R rateMatchPatternGroup2DCI-1-2-r16 RateMatchPatternGroup OPTIONAL, -- Need R resourceAllocationType1GranularityDCI-1-2-r16 ENUMERATED {n2,n4,n8,n16} OPTIONAL, -- Need S vrb-ToPRB-InterleaverDCI-1-2-r16 ENUMERATED {n2, n4} OPTIONAL, -- Need S referenceOfSLIVDCI-1-2-r16 ENUMERATED {enabled} OPTIONAL, -- Need S resourceAllocationDCI-1-2-r16 ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch} OPTIONAL, -- Need M -- End of the parameters for DCI format 1_2 introduced in V16.1.0 priorityIndicatorDCI-1-1-r16 ENUMERATED {enabled} OPTIONAL, -- Need S dataScramblingIdentityPDSCH2-r16 INTEGER (0..1023) OPTIONAL, -- Need R pdsch-TimeDomainAllocationList-r16 SetupRelease { PDSCH-TimeDomainResourceAllocationList-r16} OPTIONAL, -- Need M repetitionSchemeConfig-r16 SetupRelease { RepetitionSchemeConfig-r16} OPTIONAL -- Need M ]], [[ repetitionSchemeConfig-v1630 SetupRelease { RepetitionSchemeConfig-v1630} OPTIONAL -- Need M ]], [[ pdsch-HARQ-ACK-OneShotFeedbackDCI-1-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need R pdsch-HARQ-ACK-EnhType3DCI-1-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need R pdsch-HARQ-ACK-EnhType3DCI-Field-1-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need R pdsch-HARQ-ACK-RetxDCI-1-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need R pucch-sSCellDynDCI-1-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need R dl-OrJoint-TCIStateList-r17 CHOICE { explicitlist SEQUENCE { dl-orJoint-TCI-State-ToAddModList-r17 SEQUENCE (SIZE (1..maxNrofTCI-States)) OF TCI-State OPTIONAL, -- Need N dl-orJoint-TCI-State-ToReleaseList-r17 SEQUENCE (SIZE (1..maxNrofTCI-States)) OF TCI-StateId OPTIONAL -- Need N }, unifiedTCI-StateRef-r17 ServingCellAndBWP-Id-r17 } OPTIONAL, -- Need R beamAppTime-r17 ENUMERATED {n1, n2, n4, n7, n14, n28, n42, n56, n70, n84, n98, n112, n224, n336, spare2, spare1} OPTIONAL, -- Need R pdsch-TimeDomainAllocationListForMultiPDSCH-r17 SetupRelease { MultiPDSCH-TDRA-List-r17 } OPTIONAL, -- Need M dmrs-FD-OCC-DisabledForRank1-PDSCH-r17 ENUMERATED {true} OPTIONAL, -- Need R minimumSchedulingOffsetK0-r17 SetupRelease { MinSchedulingOffsetK0-Values-r17 } OPTIONAL, -- Need M harq-ProcessNumberSizeDCI-1-2-v1700 INTEGER (0..5) OPTIONAL, -- Need R harq-ProcessNumberSizeDCI-1-1-r17 INTEGER (5) OPTIONAL, -- Need R mcs-Table-r17 ENUMERATED {qam1024} OPTIONAL, -- Need R mcs-TableDCI-1-2-r17 ENUMERATED {qam1024} OPTIONAL, -- Need R xOverheadMulticast-r17 ENUMERATED {xOh6, xOh12, xOh18} OPTIONAL,--Need S priorityIndicatorDCI-4-2-r17 ENUMERATED {enabled} OPTIONAL, -- Need S sizeDCI-4-2-r17 INTEGER (20..maxDCI-4-2-Size-r17) OPTIONAL--Need R ]] } PDSCH-TimeDomainResourceAllocation-r16 ::= SEQUENCE { k0-r16 INTEGER(0..32) OPTIONAL, -- Need S mappingType-r16 ENUMERATED {typeA, typeB}, startSymbolAndLength-r16 INTEGER (0..127), repetitionNumber-r16 ENUMERATED {n2, n3, n4, n5, n6, n7, n8, n16} OPTIONAL,--Cond Formats1-0and1-1 ..., [[ k0-v1710 INTEGER(33..128) OPTIONAL -- Need S ]] } RateMatchPatternGroup ::= SEQUENCE (SIZE (1..maxNrofRateMatchPatternsPerGroup)) OF CHOICE { cellLevel RateMatchPatternId, bwpLevel RateMatchPatternId } MinSchedulingOffsetK0-Values-r16 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16)) OF INTEGER (0..maxK0-SchedulingOffset-r16) MinSchedulingOffsetK0-Values-r17 ::= SEQUENCE (SIZE (1..maxNrOfMinSchedulingOffsetValues-r16)) OF INTEGER (0..maxK0-SchedulingOffset-r17) MaxMIMO-LayersDL-r16 ::= INTEGER (1..8) RepetitionSchemeConfig-r16 ::= CHOICE { fdm-TDM-r16 SetupRelease { FDM-TDM-r16 }, slotBased-r16 SetupRelease { SlotBased-r16 } } RepetitionSchemeConfig-v1630 ::= SEQUENCE { slotBased-v1630 SetupRelease { SlotBased-v1630 } } FDM-TDM-r16 ::= SEQUENCE { repetitionScheme-r16 ENUMERATED {fdmSchemeA, fdmSchemeB,tdmSchemeA }, startingSymbolOffsetK-r16 INTEGER (0..7) OPTIONAL -- Need R } SlotBased-r16 ::= SEQUENCE { tciMapping-r16 ENUMERATED {cyclicMapping, sequentialMapping}, sequenceOffsetForRV-r16 INTEGER (1..3) } SlotBased-v1630 ::= SEQUENCE { tciMapping-r16 ENUMERATED {cyclicMapping, sequentialMapping}, sequenceOffsetForRV-r16 INTEGER (0) } PDSCH-ConfigCommon ::= SEQUENCE { pdsch-AllocationList SEQUENCE (SIZE(1..maxNrofDL-Allocations)) OF PDSCH-TimeDomainResourceAllocation OPTIONAL,-- Need R ... }
Reference
|
||||||||||||||||||||