5G/NR  Waveform Home : www.sharetechnote.com 
Waveform
A few years ago from now (Jul 2017) when the discussion about 5G was at early phase, the hottest topic was 'what kind of waveform will be used in 5G' and a lot of new idea (new waveform) were proposed (If you want to look into some snapshot on this technical history, take a look at 5G Waveform Candate page). In those discussion, you might have seen many people/many techical documents talking about 'what is the problem of current OFDM based waveform' and 'why we need to redesign the waveform in 5G'. However, in more recent discussion I start sensing that the good old buddy (OFDM) would get more attention and finally as 3GPP specification rolls out, it is decided to go with the old and familiar waveform OFDM. It might be a little bit disappoiting to those who have been expecting a completely new technology (disruptive technology), but those who is working in the area of baseband DSP or FPGA in legacy LTE, this conclusion would sound like a blessing :) If you are already familiar with the OFDM technolgy and LTE waveform, there would be only a small additional portions that you need to study. If you are new to this technolgy, it would be a good timing for you to start studying a new things (I would recommend you to start from this page : OFDM Introduction).
Overall Procedure for Waveform Generation
Following illustration (based on 38.300  5.1) shows overall flow of waveform generation for downlink and uplink. The biggest difference between NR and LTE is that NR can use CPOFDM for Uplink as well as DFTsOFDM depending on use case.
Whether you use CPOFDM or DFTsOFDM can be configurable except msg3 by sepcifying RRC parameters as shown below
38.331 15.3 (201810)
RACHConfigCommon ::= SEQUENCE { rachConfigGeneric RACHConfigGeneric, totalNumberOfRAPreambles INTEGER (1..63) OPTIONAL,  Need S ssbperRACHOccasionAndCBPreamblesPerSSB CHOICE { oneEighth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, oneFourth ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, oneHalf ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, one ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32,n36,n40,n44,n48,n52,n56,n60,n64}, two ENUMERATED {n4,n8,n12,n16,n20,n24,n28,n32}, four INTEGER (1..16), eight INTEGER (1..8), sixteen INTEGER (1..4) } OPTIONAL,  Need M groupBconfigured SEQUENCE { raMsg3SizeGroupA ENUMERATED {b56, b144, b208, b256, b282, b480, b640, b800, b1000, spare7, spare6, spare5, spare4, spare3, spare2, spare1}, messagePowerOffsetGroupB ENUMERATED { minusinfinity, dB0, dB5, dB8, dB10, dB12, dB15, dB18}, numberOfRAPreamblesGroupA INTEGER (1..64) } OPTIONAL,  Need R
raContentionResolutionTimer ENUMERATED { sf8, sf16, sf24, sf32, sf40, sf48, sf56, sf64}, rsrpThresholdSSB RSRPRange OPTIONAL,  Need R rsrpThresholdSSBSUL RSRPRange OPTIONAL,  Need R prachRootSequenceIndex CHOICE { l839 INTEGER (0..837), l139 INTEGER (0..137) }, msg1SubcarrierSpacing SubcarrierSpacing, msg3transformPrecoding ENUMERATED {enabled} OPTIONAL,  Need R ... }
PUSCHConfig ::= SEQUENCE { dataScramblingIdentityPUSCH INTEGER (0..1023) OPTIONAL, txConfig ENUMERATED {codebook, nonCodebook} dmrsUplinkForPUSCHMappingTypeA SetupRelease { DMRSUplinkConfig } dmrsUplinkForPUSCHMappingTypeB SetupRelease { DMRSUplinkConfig } puschPowerControl PUSCHPowerControl frequencyHopping ENUMERATED {intraSlot, interSlot} frequencyHoppingOffsetLists SEQUENCE (SIZE (1..4)) OF INTEGER (1.. maxNrofPhysicalResourceBlocks1) resourceAllocation ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch}, puschTimeDomainAllocationList SetupRelease { PUSCHTimeDomainResourceAllocationList } puschAggregationFactor ENUMERATED { n2, n4, n8 } mcsTable ENUMERATED {qam256, qam64LowSE} mcsTableTransformPrecoder ENUMERATED {qam256, qam64LowSE} transformPrecoder ENUMERATED {enabled, disabled} codebookSubset ENUMERATED {fullyAndPartialAndNonCoherent, partialAndNonCoherent, nonCoherent} maxRank INTEGER (1..4) rbgSize ENUMERATED { config2} uciOnPUSCH SetupRelease { UCIOnPUSCH } tppi2BPSK ENUMERATED {enabled} ... }
ConfiguredGrantConfig ::= SEQUENCE { frequencyHopping ENUMERATED {intraSlot, interSlot} , cgDMRSConfiguration DMRSUplinkConfig, mcsTable ENUMERATED {qam256, qam64LowSE} mcsTableTransformPrecoder ENUMERATED {qam256, qam64LowSE} uciOnPUSCH SetupRelease { CGUCIOnPUSCH } OPTIONAL, resourceAllocation ENUMERATED { resourceAllocationType0, resourceAllocationType1, dynamicSwitch }, rbgSize ENUMERATED {config2}, powerControlLoopToUse ENUMERATED {n0, n1}, p0PUSCHAlpha P0PUSCHAlphaSetId, transformPrecoder ENUMERATED {enabled, disabled}, nrofHARQProcesses INTEGER(1..16), repK ENUMERATED {n1, n2, n4, n8}, repKRV ENUMERATED {s10231, s20303, s30000}, periodicity ENUMERATED { sym2, sym7, sym1x14, sym2x14, sym4x14, sym5x14, sym8x14, sym10x14, sym16x14, sym20x14,sym32x14, sym40x14, sym64x14, sym80x14, sym128x14, sym160x14, sym256x14, sym320x14, sym512x14,sym640x14, sym1024x14, sym1280x14, sym2560x14, sym5120x14,sym6, sym1x12, sym2x12, sym4x12, sym5x12, sym8x12, sym10x12, sym16x12, sym20x12, sym32x12,sym40x12, sym64x12, sym80x12, sym128x12, sym160x12, sym256x12, sym320x12, sym512x12, sym640x12,sym1280x12, sym2560x12 }, configuredGrantTimer INTEGER (1..64) OPTIONAL,  Need R rrcConfiguredUplinkGrant SEQUENCE { timeDomainOffset INTEGER (0..5119), timeDomainAllocation INTEGER (0..15), frequencyDomainAllocation BIT STRING (SIZE(18)), antennaPort INTEGER (0..31), dmrsSeqInitialization INTEGER (0..1), precodingAndNumberOfLayers INTEGER (0..63), srsResourceIndicator INTEGER (0..15), mcsAndTBS INTEGER (0..31), frequencyHoppingOffset INTEGER (1.. maxNrofPhysicalResourceBlocks1) pathlossReferenceIndex INTEGER (0..maxNrofPUSCHPathlossReferenceRSs1) ... } OPTIONAL,  Need R ... }
When 3GPP 38.211 was released, the first thing I checked was waveform equation since I have been waiting so long for the final conclusion to come out. Following is the waveform equation specified in 38.211 and I put the waveform equation of the legacy LTE from 36.211 for comparison.
What is your first impression ? You may think NR(5G) waveform is much simpler than the LTE waveform. Even though these two equation look very differently but if you take a closer look you would notice the difference is very small. In LTE, the waveform generation equation (basically IFFT equation) is split into two parts just to remove the point located at DC location (i.e, at frequency = 0 in baseband). In NR(5G), this DC removal is not required any more and the full IFFT equation is combine into one.
Is that all ? NR waveform generation is simpler than LTE waveform generation (at least mathematically) ? It is not all. As you see in Frame Structure page, in NR(5G) several difference numerology (i.e, different subcarrier spacing and symbol length) are supported whearas in LTE there is only one numerology. Those different numerology are not completely new waveform on its own. All of them can be derived from a common mathematical equation by scaling up and down a couple of paramters as illustrated below.
As mentioned above, unlike LTE NR has two options for UL Waveform. One is CPOFDM (same as DL Waveform) and the other one is DFTsOFDM which is same as LTE UL waveform. Transform Precoding is the first step to create DFTsOFDM waveform as highlighed below. Whether UE need to use CPOFDM or DFTsOFDM is determined by following RRC Parameter.
In term of functionality, Transform Precoding is to spread UL data in a special way to reduce PAPR(PeaktoAverage Power Ratio) of the waveform. In terms of mathematics, Transform Precoding is just a form of DFT(Digital Fourier Transform) as you see in the equation shown below.
If UE is to use multilayer (UL MIMO) the equation is as below (this is the original form described in 38.211  6.3.1.4)
If UE is to use single layer, the equation can be simplified as below. I would look more obvious that Transform Precoding is basically DFT.
Reference
[1] 38.211 NR;Physical channels and modulation(Release 15)
