Main Content

Get Started with 6G Exploration Library

Since R2024a

6G Exploration Library for 5G Toolbox™ enables you to explore, model, and test candidate 6G waveforms and technologies. The library extends the capability of the 5G Toolbox:

  • You can use the pre6GCarrierConfig object to set a subcarrier spacing greater than 960 kHz (the maximum specified in TS 38.211 Table 4.2-1 [1]).

  • You can use the pre6GCarrierConfig and pre6GPDSCHConfig objects to create resource grids and resource allocations with more than 275 resource blocks (the maximum specified in TS 38.331 Section 6.3.2 [2]).

  • You can use the pre6GPDSCHConfig object to specify a modulation scheme of 4096-QAM (beyond the limit of 1024-QAM specified in TS 38.211 Section 5.1 [1]).

This example shows how to use these extended capabilities to explore 6G candidate waveforms, and provides references for further exploration.

Subcarrier Spacings Greater Than 960 kHz

OFDM waveforms with increased subcarrier spacing are a candidate for 6G. Hexa-X Deliverable D2.3 Table 5-2 defines OFDM waveforms with subcarrier spacings of 1920 kHz and 3840 kHz [3]. Section 5.1.1 of the Hexa-X deliverable describes that OFDM symbols with increased subcarrier spacing are shorter in time, which facilitates reduced latency. Section 5.1.2.1.1 describes that wider subcarrier spacing improves the tolerance to phase noise, which is more severe at higher carrier frequencies.

You can use the SubcarrierSpacing property of the pre6GCarrierConfig object to specify a subcarrier spacing greater than 960 kHz.

For example, configure a carrier with a subcarrier spacing of 3840 kHz and 36 resource blocks.

carrier = pre6GCarrierConfig(SubcarrierSpacing=3840,NSizeGrid=36);

Compute the sample rate and transmission bandwidth.

ofdmInfo = hpre6GOFDMInfo(carrier);
sampleRate = ofdmInfo.SampleRate;
disp(['Sample rate = ' num2str(sampleRate/1e9) ' GHz'])
Sample rate = 1.9661 GHz
txBandwidth = carrier.NSizeGrid * 12 * carrier.SubcarrierSpacing * 1e3;
disp(['Transmission bandwidth = ' num2str(txBandwidth/1e9) ' GHz'])
Transmission bandwidth = 1.6589 GHz

Display the number of slots per subframe.

disp(['Slots per subframe = ' num2str(carrier.SlotsPerSubframe)])
Slots per subframe = 256

Display the cyclic prefix lengths of the first slot. Because the 6G Exploration Library for 5G Toolbox uses the numerology rules of 5G NR, the first cyclic prefix length is much larger than the others. As the subcarrier spacing increases, the first cyclic prefix every half subframe increases relative to the other cyclic prefixes.

disp(['Cyclic prefix lengths (in samples) = ' num2str(ofdmInfo.CyclicPrefixLengths(1:carrier.SymbolsPerSlot))])
Cyclic prefix lengths (in samples) = 1060    36    36    36    36    36    36    36    36    36    36    36    36    36

Resource Grids Larger Than 275 Resource Blocks

At World Radiocommunication Conference 2023 (WRC-23), ITU agreed to assign a new band 6.425 - 7.125 GHz for the terrestrial component of the International Mobile Telecommunications (IMT) system [4]. This band contains 700 MHz of spectrum and is a potential operating band for the next generation of IMT, which is IMT-2030 [5], also known as 6G.

To evaluate the performance of a 6G candidate waveform occupying 700 MHz bandwidth and using 120 kHz subcarrier spacing, you need a number of resource blocks greater than 275. You can use the NSizeGrid property of pre6GCarrierConfig to create resource grids with more than 275 resource blocks.

For example, configure a carrier with the largest number of resource blocks that can be allocated in a 700 MHz bandwidth by using 120 kHz subcarrier spacing and without exceeding a bandwidth occupancy of 0.9. The bandwidth occupancy is the ratio of occupied bandwidth to channel bandwidth. A larger bandwidth occupancy results in more capacity but requires better filtering to avoid emissions outside the channel bandwidth.

bandwidthOccupancy = 0.9;
carrier = pre6GCarrierConfig(SubcarrierSpacing=120);
channelBandwidth = 700e6;
carrier.NSizeGrid = floor((channelBandwidth/(carrier.SubcarrierSpacing*1e3)*bandwidthOccupancy)/12)
carrier = 
  pre6GCarrierConfig with properties:

                NCellID: 1
      SubcarrierSpacing: 120
           CyclicPrefix: 'normal'
              NSizeGrid: 437
             NStartGrid: 0
                  NSlot: 0
                 NFrame: 0
    IntraCellGuardBands: [0x2 double]

   Read-only properties:
         SymbolsPerSlot: 14
       SlotsPerSubframe: 8
          SlotsPerFrame: 80

Compute the sample rate and transmission bandwidth.

ofdmInfo = hpre6GOFDMInfo(carrier);
sampleRate = ofdmInfo.SampleRate;
disp(['Sample rate = ' num2str(sampleRate/1e6) ' MHz'])
Sample rate = 983.04 MHz
txBandwidth = carrier.NSizeGrid * 12 * carrier.SubcarrierSpacing * 1e3;
disp(['Transmission bandwidth = ' num2str(txBandwidth/1e6) ' MHz'])
Transmission bandwidth = 629.28 MHz

Create a pre6GPDSCHConfig object and configure it to allocate all carrier resource blocks and use 64-QAM modulation.

pdsch = pre6GPDSCHConfig;
pdsch.PRBSet = 0:(carrier.NSizeGrid-1);
pdsch.Modulation = '64QAM';

Create a carrier resource grid containing PDSCH and PDSCH DM-RS symbols.

nTxAnts = 1;
txGrid = hpre6GResourceGrid(carrier,nTxAnts);

[ind,indinfo] = hpre6GPDSCHIndices(carrier,pdsch);
cw = randi([0 1],indinfo.G,1);
sym = hpre6GPDSCH(carrier,pdsch,cw);
txGrid(ind) = sym;

dmrsind = hpre6GPDSCHDMRSIndices(carrier,pdsch);
dmrssym = hpre6GPDSCHDMRS(carrier,pdsch);
txGrid(dmrsind) = dmrssym;

OFDM-modulate the resource grid.

txWaveform = hpre6GOFDMModulate(carrier,txGrid);

Plot the spectrum of the OFDM waveform.

scope = spectrumAnalyzer(SampleRate=sampleRate);
scope.Title = "Waveform for 700 MHz channel in upper 6 GHz band";
scope.ChannelMeasurements.Enabled = true;
scope.ChannelMeasurements.Span = 700e6;
scope(txWaveform)

Extended Modulation Schemes

Higher-order modulation schemes, beyond 1024-QAM, are another candidate for 6G. You can use the Modulation property of the pre6GPDSCHConfig object to specify a modulation scheme of '4096QAM'.

Update the pre6GPDSCHConfig object to use 4096-QAM modulation.

pdsch.Modulation = '4096QAM';

Update the physical downlink shared channel modulation symbols.

[ind,indinfo] = hpre6GPDSCHIndices(carrier,pdsch);
cw = randi([0 1],indinfo.G,1);
sym = hpre6GPDSCH(carrier,pdsch,cw);

Plot a constellation diagram of the 4096-QAM symbols.

constDiagram = comm.ConstellationDiagram;
constDiagram.ShowReferenceConstellation = false;
constDiagram(sym);

Further Exploration

6G Exploration Library for 5G Toolbox provides examples that you can further customize to explore 6G waveforms and related technologies. For example:

  • To explore the use of DFT-s-OFDM (Discrete Fourier Transform spread Orthogonal Frequency Division Multiplexing) and the impact of hardware impairments on candidate 6G waveforms with increased subcarrier spacing, see the Measure Impact of Sub-THz Hardware Impairments on 6G Waveforms example.

  • To perform link-level simulations using candidate 6G waveforms with increased subcarrier spacing or increased number of resource blocks, see the 6G Link-Level Simulation example.

References

[1] 3GPP TS 38.211 "NR; Physical channels and modulation" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.331 "NR; Radio Resource Control (RRC); Protocol specification" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[3] Hexa-X Deliverable D2.3 - Radio models and enabling techniques towards ultra-high data rate links and capacity in 6G

[4] RESOLUTION COM4/7 (WRC-23), ITU WRC-23 Provisional Final Acts

[5] ITU Recommendation ITU-R M.2160-0 "Framework and overall objectives of the future development of IMT for 2030 and beyond"

See Also

Objects