Matlab Toolbox - 4G/LTE

 

 

 

RMC Dlownlink - Port0, NLayer = 1, NTxAnts = 1

 

A reference measurement channel, or RMC, is a fixed downlink configuration that 36.101 defines for UE conformance tests. Every test lab builds the same signal from it, so results can be compared. This page generates the single-antenna RMCs R.0 to R.8 with lteRMCDL and lteRMCDLTool, and shows which REs each channel takes over one frame.

Followings are the topics to be covered in this page.

Generating RMC Downlink Signal

The code does two jobs. The functions lteRMCDL and lteRMCDLTool build the RMC waveform. The rest of the code marks the REs of each channel with a fixed value, so that each channel appears in its own colour. The loop runs over the ten subframes of one frame.

    rc = 'R.0';

     

    rmc = lteRMCDL(rc)

    pdsch = rmc.PDSCH

     

    txData = [0;0;0;0];

    [txWaveform, txGrid, rmcCfgOut] = lteRMCDLTool(rmc, txData);

    txGridChMap = txGrid(:,:,1);

     

    crs_scale = 0.2;

    pss_scale = 0.3;

    sss_scale = 0.3;

    phich_scale = 0.7;

    pcfich_scale = 0.8;

    pbch_scale = 0.7;

    pdcch_scale = 0.5;

    pdsch_scale = 0.4;

     

    noPdschSubframe = [5];

    for i=0:9

        rmc.NSubframe = i;

        pdsch = rmc.PDSCH;

        indexOffset = (rmc.NDLRB * 12 * 14) * rmc.NSubframe;

        crs_sym_ind = lteCellRSIndices(rmc)+indexOffset;

        

        if (i == 0) || (i == 5)

            pss_sym_ind = ltePSSIndices(rmc)+indexOffset;

            sss_sym_ind = lteSSSIndices(rmc)+indexOffset;

        end

        

        pcfich_sym_ind = ltePCFICHIndices(rmc)+indexOffset;

        phich_sym_ind = ltePHICHIndices(rmc)+indexOffset;

     

        if i == 0

            pbch_sym_ind = ltePBCHIndices(rmc)+indexOffset;

        end

        

        dci.NDLRB = rmc.NDLRB;

        dci.DCIFormat = pdsch.DCIFormat;

        dci.AllocationType = 0;

        dci.Allocation.RIV = 18;

        dci.ModCoding = 10;

        dci.HARQNo = 0;

        dci.NewData = 0;

        dci.TPCPUCCH = 0;

        dci.DuplexMode = 'FDD';

        dci.NTxAnts = 1;

        [dciMessage,dciMessageBits] = lteDCI(rmc,dci);

        

        pdcchConfig.RNTI = pdsch.RNTI;

        pdcchConfig.PDCCHFormat = pdsch.PDCCHFormat;

        

        codedDciBits = lteDCIEncode(pdcchConfig, dciMessageBits);

        pdcchDims = ltePDCCHInfo(rmc);

        pdcchBits = -1*ones(pdcchDims.MTot, 1);

        candidates = ltePDCCHSpace(rmc, pdcchConfig);

        pdcchBits ( candidates(1, 1) : candidates(1, 2) ) = codedDciBits;

        pdcch_sym = ltePDCCH(rmc, pdcchBits);

        

        pdcch_sym_ind = ltePDCCHIndices(rmc)+indexOffset;

            

        if ismember(i,noPdschSubframe) == false

           [pdsch_sym_ind,pdschIndInfo] = ltePDSCHIndices(rmc,pdsch,pdsch.PRBSet);

           pdsch_sym_ind = pdsch_sym_ind + indexOffset;

        end   

        

        txGridChMap(crs_sym_ind) = crs_scale;

        txGridChMap(pss_sym_ind) = pss_scale;

        txGridChMap(sss_sym_ind) = sss_scale;

        txGridChMap(pcfich_sym_ind) = pcfich_scale;

        txGridChMap(phich_sym_ind) = phich_scale;

        txGridChMap(pbch_sym_ind) = pbch_scale;

        

        txGridChMap(pdcch_sym_ind) = pdcch_scale .* pdcch_sym;

        

        if ismember(i,noPdschSubframe) == false

            txGridChMap(pdsch_sym_ind) = pdsch_scale;

        end

    end

     

    ylabelText = {'0','1','2','3','4','5','6','7','8','9', ...

              '10','11','12','13','14','15','16','17','18','19', ...

              '20','21','22','23','24','25','26','27','28','29', ...

              '30','31','32','33','34','35','36','37','38','39', ...

              '40','41','42','43','44','45','46','47','48','49', ...

              '50','51','52','53','54','55','56','57','58','59', ...

              '60','61','62','63','64','65','66','67','68','69', ...

              '70','71','72','73','74','75','76','77','78','79', ...

              '80','81','82','83','84','85','86','87','88','89', ...

              '90','91','92','93','94','95','96','97','98','99'};

    ytick = 7:12:(rmc.NDLRB*12);

     

    subplot(2,2,1);

    imagesc(abs(txGrid));

    axis xy;

    xlabel('Subframe');

    ylabel('RB');

    set(gca,'xtick',8:14:140);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

     

    subplot(2,2,3);

    imagesc(abs(txGridChMap));

    axis xy;

    xlabel('Subframe');

    ylabel('RB');

    set(gca,'xtick',8:14:140);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

    subplot(2,2,[2 4]);

    imagesc(abs(txGridChMap));

    axis xy;

    xlabel('Symbol');

    ylabel('RB');

    xlim([0.5 14.5]);

    ylim([0.5 12*rmc.NDLRB]);

    set(gca,'xtick',1:14);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

    mymap = [0.0 0.0 0.0

             1.0 1.0 0.0

             1.0 0.0 0.0

             0.5 0.0 0.0

             0.0 1.0 0.0

             0.0 0.5 0.0

             0.0 0.0 1.0

             0.0 0.0 0.5

             0.0 1.0 1.0

             1.0 0.0 1.0

             1.0 1.0 1.0];

    colormap(mymap);

     

    set(gcf, 'Position', [200, 200, 800, 700])

     

     

The marking uses the Indices function of each channel, from the CRS to the PDSCH, with an offset of one subframe per loop step. Subframe 5 has no PDSCH, because noPdschSubframe = [5], and PSS, SSS and PBCH are marked only where they exist. Each example below shows three views. The upper left is the magnitude of the generated grid over the frame, the lower left is the channel map over the frame, and the right is subframe 0 enlarged.

  • lteRMCDL gives the configuration : lteRMCDLTool gives the waveform and the grid.
  • Each channel marked with its Indices function : one fixed value per channel.
  • Subframe 5 without PDSCH : as 36.101 defines for these FDD RMCs.

Single PRB RMCs R.0 and R.1

R.0 and R.1 allocate a single PRB at the edge of the channel, RB 0, with 16QAM and a target code rate of 1/2. They come from 36.101 Table A.3.3.1-4 and test the UE at the lowest possible allocation, far from the central RBs.

rc = 'R.0';

36.101 v14.4 - Table A.3.3.1-4: Fixed Reference Channel Single PRB (Channel Edge)

Resource grid of RMC R.0 with 15 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.0'

              NDLRB: 15

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 3

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: 0

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.4921 0.4921 0.4921 0.4921 0.4921 0 0.4921 0.4921 0.4921 0.4921]

         TrBlkSizes: [224 224 224 224 224 0 224 224 224 224]

    CodedTrBlkSizes: [504 504 504 504 504 0 504 504 504 504]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.0, 15 RB. The PDSCH occupies RB 0 in every subframe except 5. The control region is 3 symbols long, so the PDSCH starts at symbol 3.

rc = 'R.1';

36.101 v14.4 - Table A.3.3.1-4: Fixed Reference Channel Single PRB (Channel Edge)

Resource grid of RMC R.1 with 50 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.1'

              NDLRB: 50

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 2

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: 0

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.5072 0.5072 0.5072 0.5072 0.5072 0 0.5072 0.5072 0.5072 0.5072]

         TrBlkSizes: [256 256 256 256 256 0 256 256 256 256]

    CodedTrBlkSizes: [552 552 552 552 552 0 552 552 552 552]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.1, 50 RB. The same single PRB at RB 0, with CFI 2, so the PDSCH starts at symbol 2.

The coded bits can be counted from the grid. In R.0, CFI 3 leaves 11 symbols in the PRB pair, which is 132 REs, and the CRS take 6 of them. 126 REs with 4 bits each give 504 coded bits. In R.1, CFI 2 leaves 12 symbols, 138 REs after the CRS, and 552 coded bits. Subframe 0 has the same numbers, because RB 0 lies far from the PSS, SSS and PBCH in the centre.

ActualCodeRate follows from the same numbers. The transport block gets a 24-bit CRC, so R.0 codes 224 + 24 = 248 bits into 504, which is 0.4921. R.1 codes 256 + 24 = 280 bits into 552, which is 0.5072.

  • One PRB at RB 0 : the channel edge.
  • 504 and 552 coded bits : 11 and 12 PDSCH symbols after CFI 3 and CFI 2.
  • ActualCodeRate = (TBS + 24) / coded bits : 0.4921 for R.0 and 0.5072 for R.1.

QPSK RMCs R.2 and R.4

R.2 and R.4 fill the whole bandwidth with QPSK at a target code rate of 1/3, from 36.101 Table A.3.3.1-1. With every RB allocated, the PDSCH now collides with the PSS, SSS and PBCH in subframe 0, and the numbers show it.

rc = 'R.2';

36.101 v14.4 - Table A.3.3.1-1: Fixed Reference Channel QPSK R=1/3

Resource grid of RMC R.2 with 50 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.2'

              NDLRB: 50

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 2

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'QPSK'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [50×1 double]

     TargetCodeRate: 0.3333

     ActualCodeRate: [0.3407 0.3200 0.3200 0.3200 0.3200 0 0.3200 0.3200 0.3200 0.3200]

         TrBlkSizes: [4392 4392 4392 4392 4392 0 4392 4392 4392 4392]

    CodedTrBlkSizes: [12960 13800 13800 13800 13800 0 13800 13800 13800 13800]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.2, 50 RB. The PDSCH fills the whole band from symbol 2 in every subframe except 5. In subframe 0, it leaves the central 6 RB of symbols 5 to 10 to the PSS, SSS and PBCH.

rc = 'R.4';

36.101 v14.4 - Table A.3.3.1-1: Fixed Reference Channel QPSK R=1/3

Resource grid of RMC R.4 with 6 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.4'

              NDLRB: 6

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 3

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'QPSK'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [6×1 double]

     TargetCodeRate: 0.3333

     ActualCodeRate: [0.3333 0.3158 0.3158 0.3158 0.3158 0 0.3158 0.3158 0.3158 0.3158]

         TrBlkSizes: [152 408 408 408 408 0 408 408 408 408]

    CodedTrBlkSizes: [528 1368 1368 1368 1368 0 1368 1368 1368 1368]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.4, 6 RB. CFI 3 gives 4 control symbols at this bandwidth. In subframe 0, the PSS, SSS and PBCH take symbols 5 to 10 across the whole carrier.

For R.2, CFI 2 leaves 12 symbols per PRB pair, 138 REs after the CRS, and 50 RB give 6900 REs. QPSK gives 13800 coded bits, the value for subframes 1 to 9. In subframe 0, the central 6 RB lose 144 REs to the PSS and SSS and 276 REs to the PBCH, so 6480 REs remain, which is 12960 coded bits.

R.4 shows the same effect much more strongly. At 6 RB, the PSS, SSS and PBCH cover the whole carrier, so subframe 0 keeps only symbols 4, 11, 12 and 13 for the PDSCH. The transport block drops from 408 to 152 bits, and the coded bits drop from 1368 to 528.

  • R.2: 13800 coded bits, 12960 in subframe 0 : the PSS, SSS and PBCH take 420 REs.
  • R.4: 408 bits, 152 in subframe 0 : at 1.4 MHz, subframe 0 keeps only 4 PDSCH symbols.

16QAM RMC R.3

R.3 keeps the full 50 RB allocation of R.2, but uses 16QAM at a target code rate of 1/2, from 36.101 Table A.3.3.1-2. The REs are the same as for R.2, so the only change is the number of bits per RE and the size of the transport block.

rc = 'R.3';

36.101 v14.4 - Table A.3.3.1-2: Fixed Reference Channel 16QAM R=1/2  

Resource grid of RMC R.3 with 50 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.3'

              NDLRB: 50

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 2

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [50×1 double]

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.5037 0.5148 0.5148 0.5148 0.5148 0 0.5148 0.5148 0.5148 0.5148]

         TrBlkSizes: [12960 14112 14112 14112 14112 0 14112 14112 14112 14112]

    CodedTrBlkSizes: [25920 27600 27600 27600 27600 0 27600 27600 27600 27600]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.3, 50 RB. The same PDSCH region as R.2, now carrying 16QAM.

With 4 bits per RE, the 6900 REs of subframes 1 to 9 give 27600 coded bits, and the 6480 REs of subframe 0 give 25920. The transport blocks of 14112 and 12960 bits keep the code rate near 1/2. The 14112 bits are split into 3 code blocks, each with its own 24-bit CRC. So (14112 + 24 + 3 x 24) / 27600 = 0.5148, the ActualCodeRate the toolbox reports.

  • Same REs as R.2 : twice the bits per RE.
  • 27600 coded bits, 25920 in subframe 0 : 16QAM on 6900 and 6480 REs.

64QAM RMCs R.5 to R.8

R.5 to R.8 use 64QAM at a target code rate of 3/4, from 36.101 Table A.3.3.1-3, on 15, 25, 50 and 75 RB. They are the 64QAM single-antenna RMCs up to 75 RB, and they show how the transport block scales with bandwidth.

rc = 'R.5';

36.101 v14.4 - Table A.3.3.1-3: Fixed Reference Channel 64QAM R=3/4    

Resource grid of RMC R.5 with 15 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.5'

              NDLRB: 15

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 3

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'64QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 0 1 2]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [15×1 double]

     TargetCodeRate: 0.7500

     ActualCodeRate: [0.7401 0.7563 0.7563 0.7563 0.7563 0 0.7563 0.7563 0.7563 0.7563]

         TrBlkSizes: [6456 8504 8504 8504 8504 0 8504 8504 8504 8504]

    CodedTrBlkSizes: [8820 11340 11340 11340 11340 0 11340 11340 11340 11340]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.5, 15 RB, 64QAM.

rc = 'R.6';

36.101 v14.4 - Table A.3.3.1-3: Fixed Reference Channel 64QAM R=3/4    

Resource grid of RMC R.6 with 25 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.6'

              NDLRB: 25

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 3

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'64QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 0 1 2]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [25×1 double]

     TargetCodeRate: 0.7500

     ActualCodeRate: [0.7736 0.7517 0.7517 0.7517 0.7517 0 0.7517 0.7517 0.7517 0.7517]

         TrBlkSizes: [12576 14112 14112 14112 14112 0 14112 14112 14112 14112]

    CodedTrBlkSizes: [16380 18900 18900 18900 18900 0 18900 18900 18900 18900]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.6, 25 RB, 64QAM.

rc = 'R.7';

36.101 v14.4 - Table A.3.3.1-3: Fixed Reference Channel 64QAM R=3/4    

Resource grid of RMC R.7 with 50 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.7'

              NDLRB: 50

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 2

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'64QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 0 1 2]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [50×1 double]

     TargetCodeRate: 0.7500

     ActualCodeRate: [0.7325 0.7420 0.7420 0.7420 0.7420 0 0.7420 0.7420 0.7420 0.7420]

         TrBlkSizes: [28336 30576 30576 30576 30576 0 30576 30576 30576 30576]

    CodedTrBlkSizes: [38880 41400 41400 41400 41400 0 41400 41400 41400 41400]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

 

R.7, 50 RB, 64QAM.

rc = 'R.8';

36.101 v14.4 - Table A.3.3.1-3: Fixed Reference Channel 64QAM R=3/4    

Resource grid of RMC R.8 with 75 RB over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                 RC: 'R.8'

              NDLRB: 75

           CellRefP: 1

            NCellID: 0

       CyclicPrefix: 'Normal'

                CFI: 2

        PCFICHPower: 0

                 Ng: 'Sixth'

      PHICHDuration: 'Normal'

              HISet: [112×3 double]

         PHICHPower: 0

             NFrame: 0

          NSubframe: 0

       TotSubframes: 10

          Windowing: 0

         DuplexMode: 'FDD'

              PDSCH: [1×1 struct]

    OCNGPDCCHEnable: 'Off'

     OCNGPDCCHPower: 0

    OCNGPDSCHEnable: 'Off'

     OCNGPDSCHPower: 0

          OCNGPDSCH: [1×1 struct]

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port0'

         Modulation: {'64QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 0 1 2]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [75×1 double]

     TargetCodeRate: 0.7500

     ActualCodeRate: [0.7648 0.7585 0.7585 0.7585 0.7585 0 0.7585 0.7585 0.7585 0.7585]

         TrBlkSizes: [45352 46888 46888 46888 46888 0 46888 46888 46888 46888]

    CodedTrBlkSizes: [59580 62100 62100 62100 62100 0 62100 62100 62100 62100]

          DCIFormat: 'Format1'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

R.8, 75 RB, 64QAM.

The coded bits follow the same count with 6 bits per RE. R.7 has the 6900 and 6480 REs of R.2, which give 41400 and 38880 coded bits. R.5 and R.6 use CFI 3 and so start the PDSCH one symbol later, at symbol 3. The RVSeq of the 64QAM RMCs is [0 0 1 2], while the other RMCs on this page use [0 1 2 3].

  • 64QAM, code rate 3/4 : 15 to 75 RB.
  • R.7: 41400 and 38880 coded bits : the R.2 REs with 6 bits each.
  • CFI 3 for R.5 and R.6 : the PDSCH starts at symbol 3.

Checking the RMCs against 36.101

Are these toolbox values still the ones in the current specification? The page cites 36.101 v14.4, and the table below compares every transport block and coded block size with 36.101 v20.0.0 Annex A.3.3.1.

RMC

RB

Modulation

TBS, subframe 0

TBS, other subframes

Coded bits, subframe 0

Coded bits, other subframes

36.101 v20.0.0

R.0

1

16QAM

224

224

504

504

match

R.1

1

16QAM

256

256

552

552

match

R.2

50

QPSK

4392

4392

12960

13800

match

R.4

6

QPSK

152

408

528

1368

match

R.3

50

16QAM

12960

14112

25920

27600

match

R.5

15

64QAM

6456

8504

8820

11340

match

R.6

25

64QAM

12576

14112

16380

18900

match

R.7

50

64QAM

28336

30576

38880

41400

match

R.8

75

64QAM

45352

46888

59580

62100

match

Every value matches. 36.101 marks subframe 5 as N/A in all these tables, which is the 0 in the toolbox output. These RMCs have not changed between the release the page was written for and Release 20.

  • All nine RMCs match 36.101 v20.0.0 : transport blocks and coded bits.
  • Subframe 5 is N/A : the toolbox reports 0.

Disclaimer !

This page is only to show you the overall logics and visualization for various LTE physical layer channels. I haven't investigated much about verifying about the accuracy.

If you think the code is not so efficient, it is 100% my fault. I haven't made any effort for effiecient code. I just tried to create code as simple as possible for the readers. As you know, easy-to-read code is not always efficient for a specific chipset.

If you find any mistake in terms of accuracy, it is also very highly likely be my fault. Not the problem of Matlab tool box itself.

Any comment and corrections if you find any mistake will be welcome and appreciated.

Reference

[1] 3GPP TS 36.101 v20.0.0 - Annex A.3.3.1, Fixed reference channels for PDSCH

[2] 3GPP TS 36.211 v19.3.0 - clause 6.4, Physical downlink shared channel