Main Content

5G NR-TM and FRC Waveform Generation

This example shows how to generate standard-compliant 5G NR test models (NR-TMs) and uplink and downlink fixed reference channels (FRCs) for frequency range 1 (FR1) and frequency range 2 (FR2). For the NR-TM and FRC waveform generation, you can specify the NR-TM or FRC name, the channel bandwidth, the subcarrier spacing, and the duplexing mode.

Introduction

The 3GPP 5G NR standard defines sets of link and waveform configurations for the purposes of conformance testing. Two specific types of downlink conformance waveforms are NR test models (NR-TM), for the purpose of base station (BS) RF testing, and downlink fixed reference channels (FRC), for user equipment (UE) input testing.

The NR-TMs for FR1 are defined in TS 38.141-1 Section 4.9.2, and the NR-TMs for FR2 are defined in TS 38.141-2 Section 4.9.2.

They are used in a range of RF tests, including:

  • BS output power

  • Timing alignment error (TAE)

  • Occupied bandwidth emissions

  • Adjacent channel leakage ratio (ACLR)

  • Operating band unwanted emissions

  • Transmitter spurious emissions

  • Transmitter intermodulation

Specific test models are aimed at specific sets of measurements.

The physical downlink shared channel (PDSCH) FRC for FR1 are defined in TS 38.101-1 Annex A.3, and for FR2 are defined in TS 38.101-2 Annex A.3.

They are used in a number of UE tests, including:

  • UE receiver requirements

  • Maximum UE input level testing

The physical uplink shared channel (PUSCH) FRC for FR1 and FR2 are defined in TS 38.104 Annex A.

They are used in a number of base station reception tests, including:

  • Reference sensitivity

  • Adjacent channel selectivity (ACS)

  • In-band and out-of-band blocking

  • Receiver intermodulation

  • In-channel selectivity

  • Dynamic range

  • Performance requirements

NR-TMs and FRCs are defined across a standardized set of transmission bandwidth configurations for a valid range of channel bandwidth and subcarrier spacing combinations.

This reference application example uses the MATLAB® class hNRReferenceWaveformGenerator. This class provides access to the bandwidth configuration tables, the Release 15, 16, and 17 test model and FRC lists, and provides baseband waveform generation and resource grid visualization.

The hNRReferenceWaveformGenerator class contains two constant MATLAB table properties. The FR1BandwidthTable property contains the FR1 transmission bandwidth configurations defined in TS 38.104 Table 5.3.2-1. See also the FR1 maximum transmission bandwidth configurations defined in TS 38.101-1 Table 5.3.2-1. The FR2BandwidthTable property contains the FR2 transmission bandwidth configurations defined in TS 38.104 Tables 5.3.2-2 and 5.3.2-3. See also the FR2 maximum transmission bandwidth configurations defined in TS 38.101-2 Table 5.3.2-1.

% NR transmission bandwidth configurations
fr1bandwidthtable = hNRReferenceWaveformGenerator.FR1BandwidthTable
fr1bandwidthtable=3×15 table
             5MHz    10MHz    15MHz    20MHz    25MHz    30MHz    35MHz    40MHz    45MHz    50MHz    60MHz    70MHz    80MHz    90MHz    100MHz
             ____    _____    _____    _____    _____    _____    _____    _____    _____    _____    _____    _____    _____    _____    ______

    15kHz     25      52       79       106      133      160      188      216      242      270      NaN      NaN      NaN      NaN      NaN  
    30kHz     11      24       38        51       65       78       92      106      119      133      162      189      217      245      273  
    60kHz    NaN      11       18        24       31       38       44       51       58       65       79       93      107      121      135  

fr2bandwidthtable = hNRReferenceWaveformGenerator.FR2BandwidthTable
fr2bandwidthtable=4×7 table
              50MHz    100MHz    200MHz    400MHz    800MHz    1600MHz    2000MHz
              _____    ______    ______    ______    ______    _______    _______

    60kHz       66      132       264       NaN       NaN        NaN        NaN  
    120kHz      32       66       132       264       NaN        NaN        NaN  
    480kHz     NaN      NaN       NaN        66       124        248        NaN  
    960kHz     NaN      NaN       NaN        33        62        124        148  

The hNRReferenceWaveformGenerator class also contains two constant properties which list the test model names for FR1 (TS 38.141-1 Section 4.9.2) and test model names for FR2 (TS 38.141-2 Section 4.9.2).

% Release 15, 16, and 17 NR-TM test models for FR1 and FR2 
fr1testmodels = hNRReferenceWaveformGenerator.FR1TestModels
fr1testmodels = 10x1 string
    "NR-FR1-TM1.1"
    "NR-FR1-TM1.2"
    "NR-FR1-TM2"
    "NR-FR1-TM2a"
    "NR-FR1-TM2b"
    "NR-FR1-TM3.1"
    "NR-FR1-TM3.1a"
    "NR-FR1-TM3.1b"
    "NR-FR1-TM3.2"
    "NR-FR1-TM3.3"

fr2testmodels = hNRReferenceWaveformGenerator.FR2TestModels
fr2testmodels = 5x1 string
    "NR-FR2-TM1.1"
    "NR-FR2-TM2"
    "NR-FR2-TM2a"
    "NR-FR2-TM3.1"
    "NR-FR2-TM3.1a"

For the downlink FRCs, the class contains additional constant properties which list the downlink FRC names for FR1 (TS 38.101-1 Annex A.3) and for FR2 (TS 38.101-2 Annex A.3).

% Release 15, 16, and 17 downlink fixed reference channels for FR1 and FR2 
fr1downlinkfrc = hNRReferenceWaveformGenerator.FR1DownlinkFRC
fr1downlinkfrc = 4x1 string
    "DL-FRC-FR1-QPSK"
    "DL-FRC-FR1-64QAM"
    "DL-FRC-FR1-256QAM"
    "DL-FRC-FR1-1024QAM"

fr2downlinkfrc = hNRReferenceWaveformGenerator.FR2DownlinkFRC
fr2downlinkfrc = 3x1 string
    "DL-FRC-FR2-QPSK"
    "DL-FRC-FR2-16QAM"
    "DL-FRC-FR2-64QAM"

For the uplink FRCs, the class contains two constant properties which list the uplink FRC names for FR1 and FR2 (TS 38.104 Annex A).

% Release 15 uplink fixed reference channels for FR1 and FR2 
fr1uplinkfrc = hNRReferenceWaveformGenerator.FR1UplinkFRC 
fr1uplinkfrc = 89x1 string
    "G-FR1-A1-1"
    "G-FR1-A1-2"
    "G-FR1-A1-3"
    "G-FR1-A1-4"
    "G-FR1-A1-5"
    "G-FR1-A1-6"
    "G-FR1-A1-7"
    "G-FR1-A1-8"
    "G-FR1-A1-9"
    "G-FR1-A2-1"
    "G-FR1-A2-2"
    "G-FR1-A2-3"
    "G-FR1-A2-4"
    "G-FR1-A2-5"
    "G-FR1-A2-6"
    "G-FR1-A3-1"
    "G-FR1-A3-2"
    "G-FR1-A3-3"
    "G-FR1-A3-4"
    "G-FR1-A3-5"
    "G-FR1-A3-6"
    "G-FR1-A3-7"
    "G-FR1-A3-8"
    "G-FR1-A3-9"
    "G-FR1-A3-10"
    "G-FR1-A3-11"
    "G-FR1-A3-12"
    "G-FR1-A3-13"
    "G-FR1-A3-14"
    "G-FR1-A3-15"
      ⋮

fr2uplinkfrc = hNRReferenceWaveformGenerator.FR2UplinkFRC
fr2uplinkfrc = 37x1 string
    "G-FR2-A1-1"
    "G-FR2-A1-2"
    "G-FR2-A1-3"
    "G-FR2-A1-4"
    "G-FR2-A1-5"
    "G-FR2-A3-1"
    "G-FR2-A3-2"
    "G-FR2-A3-3"
    "G-FR2-A3-4"
    "G-FR2-A3-5"
    "G-FR2-A3-6"
    "G-FR2-A3-7"
    "G-FR2-A3-8"
    "G-FR2-A3-9"
    "G-FR2-A3-10"
    "G-FR2-A3-11"
    "G-FR2-A3-12"
    "G-FR2-A4-1"
    "G-FR2-A4-2"
    "G-FR2-A4-3"
    "G-FR2-A4-4"
    "G-FR2-A4-5"
    "G-FR2-A4-6"
    "G-FR2-A4-7"
    "G-FR2-A4-8"
    "G-FR2-A4-9"
    "G-FR2-A4-10"
    "G-FR2-A5-1"
    "G-FR2-A5-2"
    "G-FR2-A5-3"
      ⋮

For more information, access the help of hNRReferenceWaveformGenerator by typing 'doc hNRReferenceWaveformGenerator'.

NR-TM and PDSCH FRC Waveform Generation

Each PDSCH reference waveform is defined by a combination of:

  • NR-TM or FRC name

  • Channel bandwidth

  • Subcarrier spacing

  • Duplexing mode

Different NR-TMs are defined for FR1 and FR2. Depending on the test model purposes, NR-TMs have varying PDSCH characteristics. For example: full band, single modulation scheme, or full band, multiple modulation schemes with varying power boosting/deboosting or single, varying PRB allocation. Common features to all NR-TMs are: no SS burst, PDSCH mapping type A with one (FR2) or two (FR1) DM-RS positions per slot transmission, and a single PDCCH across two symbols with NCCE = 1. There is no transport or DCI coding used and the input to the PDSCH and PDCCH is all 0's or PN23. FDD NR-TM waveforms are 10 ms in length and TDD cases are 20 ms. PT-RS are specified for FR2 NR-TM.

By comparison, downlink FRC waveforms contain transport coded PDSCH using RV = 0. The reference PDSCH are not defined in slots which overlap the SS burst (slot 0 or slots 0 and 1). They use front loaded PDSCH mapping type A with 2 additional DM-RS positions. There is no FDM between the PDSCH and the DM-RS. The full-band PDSCH start at symbol 2 and the first 2 symbols in a slot contain a full occupied CORESET. The FRC waveforms generated in this example do not contain additional OCNG. Power levels for all resource elements are uniform. The transport block data source is ITU PN9.

The channel bandwidth and subcarrier spacing combination have to be a valid pair from the associated FR bandwidth configuration table. The standard only defines FR2 NR-TM and FRC for TDD but with this example you can also create FDD waveforms.

This MATLAB code creates an hNRReferenceWaveformGenerator object for the selected NR-TM or FRC configuration. You can use this object to generate the associated baseband waveform and to display the underlying PRB and subcarrier-level resource grids.

% Select the NR-TM or PDSCH FRC waveform parameters
dlnrref = "NR-FR1-TM3.2";  % Model name and properties
bw      = "10MHz";  % Channel bandwidth
scs     = "15kHz";  % Subcarrier spacing
dm      = "FDD";  % Duplexing mode
ncellid = 1;  % NCellID

% Run this entire section to generate the required waveform
   

% Create generator object for the above NR-TM/PDSCH FRC reference model
dlrefwavegen = hNRReferenceWaveformGenerator(dlnrref,bw,scs,dm,ncellid)
dlrefwavegen = 
  hNRReferenceWaveformGenerator with properties:

    FR1BandwidthTable: [3x15 table]
    FR2BandwidthTable: [4x7 table]
        FR1TestModels: [10x1 string]
        FR2TestModels: [5x1 string]
       FR1DownlinkFRC: [4x1 string]
       FR2DownlinkFRC: [3x1 string]
         FR1UplinkFRC: [89x1 string]
         FR2UplinkFRC: [37x1 string]
               Config: [1x1 nrDLCarrierConfig]
           IsReadOnly: 1
      ConfiguredModel: {["NR-FR1-TM3.2"]  ["10MHz"]  ["15kHz"]  ["FDD"]  [1]  ["17.8.0"]}
           TargetRNTI: [1]

% Generate waveform
[dlrefwaveform,dlrefwaveinfo,dlresourceinfo] = generateWaveform(dlrefwavegen);

% View transmission information about the set of PDSCH within the waveform
dlresourceinfo.WaveformResources.PDSCH
ans=1×3 struct array with fields:
    Name
    CDMLengths
    Resources

% View detailed information about one of the PDSCH sequences
dlresourceinfo.WaveformResources.PDSCH(1).Resources
ans=1×10 struct array with fields:
    NSlot
    TransportBlockSize
    TransportBlock
    RV
    Codeword
    G
    Gd
    ChannelIndices
    ChannelSymbols
    DMRSIndices
    DMRSSymbols
    DMRSSymbolSet
    PTRSIndices
    PTRSSymbols
    PTRSSymbolSet

% Waveform sample rate (Hz)
samplerate = dlrefwaveinfo.Info.SampleRate  
samplerate = 15360000
plot(abs(dlrefwaveform)); title(sprintf('Magnitude of %s Baseband Waveform',dlnrref)); xlabel('Sample Index'); ylabel('Magnitude');

% Visualize the associated PRB and subcarrier resource grids
displayResourceGrid(dlrefwavegen);

fullparameterset = dlrefwavegen.Config   % Full low-level parameter set
fullparameterset = 
  nrDLCarrierConfig with properties:

               Label: 'NR-FR1-TM3.2'
      FrequencyRange: 'FR1'
    ChannelBandwidth: 10
             NCellID: 1
        NumSubframes: 10
    InitialNSubframe: 0
    WindowingPercent: 0
          SampleRate: []
    CarrierFrequency: 0
         SCSCarriers: {[1x1 nrSCSCarrierConfig]}
      BandwidthParts: {[1x1 nrWavegenBWPConfig]}
             SSBurst: [1x1 nrWavegenSSBurstConfig]
             CORESET: {[1x1 nrCORESETConfig]}
        SearchSpaces: {[1x1 nrSearchSpaceConfig]}
               PDCCH: {[1x1 nrWavegenPDCCHConfig]}
               PDSCH: {[1x1 nrWavegenPDSCHConfig]  [1x1 nrWavegenPDSCHConfig]  [1x1 nrWavegenPDSCHConfig]}
               CSIRS: {[1x1 nrWavegenCSIRSConfig]}

% Make the Config parameters writable and boost the power on all PDSCH DM-RS
dlrefwavegen = makeConfigWritable(dlrefwavegen)
dlrefwavegen = 
  hNRReferenceWaveformGenerator with properties:

    FR1BandwidthTable: [3x15 table]
    FR2BandwidthTable: [4x7 table]
        FR1TestModels: [10x1 string]
        FR2TestModels: [5x1 string]
       FR1DownlinkFRC: [4x1 string]
       FR2DownlinkFRC: [3x1 string]
         FR1UplinkFRC: [89x1 string]
         FR2UplinkFRC: [37x1 string]
               Config: [1x1 nrDLCarrierConfig]
           IsReadOnly: 0
      ConfiguredModel: {["NR-FR1-TM3.2"]  ["10MHz"]  ["15kHz"]  ["FDD"]  [1]  ["17.8.0"]}
           TargetRNTI: [1]

% Set DM-RS power parameter on all the PDSCH
pdscharray = [dlrefwavegen.Config.PDSCH{:}];       % Extract all PDSCH configs into an array
[pdscharray.DMRSPower] = deal(3);                  % Boost the DM-RS power on all the PDSCH
dlrefwavegen.Config.PDSCH = num2cell(pdscharray);  % Reassign the updated PDSCH configs

PUSCH FRC Waveform Generation

Each PUSCH FRC reference channel definition in TS 38.104 Annex A explicitly defines a number of key parameters including:

  • Frequency range

  • Channel bandwidth

  • Subcarrier spacing

  • Code rate

  • Modulation

  • DM-RS configuration

Additionally, the associated receiver tests introduce some additional parameters that are not specified in the TS 38.104 Annex A tables, for example, the general test parameters defined in:

  • Table 8.2.1.1-1 (Conducted performance requirements for PUSCH without transform precoding)

  • Table 8.2.2.1-1 (Conducted performance requirements for PUSCH with transform precoding)

  • Table 11.2.2.1.1-1 (Radiated performance requirements for BS type 2-O for PUSCH without transform precoding)

  • Table 11.2.2.2.1-1 (Radiated performance requirements for BS type 2-O for PUSCH with transform precoding)

The parameter sets that are captured in the MATLAB reference waveform generator use the above specification sources. Since a given FRC can be used in different tests with different parameters requirements, the following general rules apply to the default generator configurations. All parameters can be modified after construction. Transform precoding is enabled for appropriate FRC. FR2 waveforms are TDD and 20ms in length, and FR1 waveforms are FDD and 10ms. The PUSCH FRC are defined with type A mapping, type B mapping, or, in some cases, either mapping type. In the latter case, type A mapping is configured. FR2 waveforms without transform precoding are configured with PT-RS, otherwise PT-RS are off. Scrambling identities are set to 0. Power levels for all resource elements are uniform. The transport block data source is ITU PN9 with RV = 0 i.e. no retransmissions.

This MATLAB code creates an hNRReferenceWaveformGenerator object for the selected PUSCH FRC configuration. Due to the large number of FRC, the live script FRC drop-down lists only those from section TS 38.104 A.1 (reference sensistivity, ACS, in-band blocking etc.) and A.2 (dynamic range). The performance test FRC defined in A.3, A.4, A.5 can be chosen by specifying the FRC name string directly in the code below. After the generator object is created, all configuration parameters can be changed by making them writable using the makeConfigWritable function.

% Select the PUSCH FRC waveform 
ulnrref = "G-FR1-A1-1";  % This live script down-drop list is preconfigured for TS 38.104 Annex A.1 and A.2 subsets

% Possible overrides to Annex A definitions (empty values provide the Annex A defaults)
bw      = [];  % Bandwidth override (5,10,15,20,25,30,40,50,60,70,80,90,100,200,400,800,1600,2000 MHz)
scs     = [];  % Subcarrier spacing override (15,30,60,120,480,960 kHz)
dm      = [];  % Duplexing mode override ("FDD","TDD")
ncellid = [];  % Cell identity override (used to control scrambling identities)

% Run this entire section to generate the required waveform
   

% Create generator object for the above PUSCH FRC reference model
ulrefwavegen = hNRReferenceWaveformGenerator(ulnrref,bw,scs,dm,ncellid)
ulrefwavegen = 
  hNRReferenceWaveformGenerator with properties:

    FR1BandwidthTable: [3x15 table]
    FR2BandwidthTable: [4x7 table]
        FR1TestModels: [10x1 string]
        FR2TestModels: [5x1 string]
       FR1DownlinkFRC: [4x1 string]
       FR2DownlinkFRC: [3x1 string]
         FR1UplinkFRC: [89x1 string]
         FR2UplinkFRC: [37x1 string]
               Config: [1x1 nrULCarrierConfig]
           IsReadOnly: 1
      ConfiguredModel: {["G-FR1-A1-1"]  []  []  ["FDD"]  [0]}
           TargetRNTI: [0]

% Generate waveform
[ulrefwaveform,ulrefwaveinfo,ulresourceinfo] = generateWaveform(ulrefwavegen);

% View transmission information about the set of PUSCH within the waveform
ulresourceinfo.WaveformResources.PUSCH
ans = struct with fields:
          Name: 'PUSCH sequence for G-FR1-A1-1'
    CDMLengths: [1 1]
     Resources: [1x10 struct]

% View detailed information about one of the PUSCH sequences
ulresourceinfo.WaveformResources.PUSCH(1).Resources
ans=1×10 struct array with fields:
    NSlot
    TransportBlockSize
    TransportBlock
    RV
    Codeword
    G
    Gd
    ChannelIndices
    ChannelSymbols
    DMRSIndices
    DMRSSymbols
    DMRSSymbolSet
    PTRSIndices
    PTRSSymbols
    PTRSSymbolSet

% Waveform sample rate (Hz)
samplerate = ulrefwaveinfo.Info.SampleRate  
samplerate = 7680000
plot(abs(ulrefwaveform)); title(sprintf('Magnitude of %s Baseband Waveform',ulnrref)); xlabel('Sample Index'); ylabel('Magnitude');

% Visualize the associated PRB and subcarrier resource grids
displayResourceGrid(ulrefwavegen);

fullparameterset = ulrefwavegen.Config   % Full low-level parameter set
fullparameterset = 
  nrULCarrierConfig with properties:

                  Label: 'G-FR1-A1-1'
         FrequencyRange: 'FR1'
       ChannelBandwidth: 5
                NCellID: 0
           NumSubframes: 10
       InitialNSubframe: 0
       WindowingPercent: 0
             SampleRate: []
       CarrierFrequency: 0
            SCSCarriers: {[1x1 nrSCSCarrierConfig]}
         BandwidthParts: {[1x1 nrWavegenBWPConfig]}
    IntraCellGuardBands: {[1x1 nrIntraCellGuardBandsConfig]}
                  PUSCH: {[1x1 nrWavegenPUSCHConfig]}
                  PUCCH: {[1x1 nrWavegenPUCCH0Config]}
                    SRS: {[1x1 nrWavegenSRSConfig]}

References

[1] 3GPP TS 38.101-1. “NR; User Equipment (UE) radio transmission and reception; Part 1: Range 1 Standalone.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.101-2. “NR; User Equipment (UE) radio transmission and reception; Part 2: Range 2 Standalone.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[3] 3GPP TS 38.104. “NR; Base Station (BS) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[4] 3GPP TS 38.141-1. “NR; Base Station (BS) conformance testing Part 1: Conducted conformance testing.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[5] 3GPP TS 38.141-2. “NR; Base Station (BS) conformance testing Part 2: Radiated conformance testing.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

See Also

Apps

Related Topics